The SHA-3 Hardware Evaluation Project by IIS - ETH Zurich

Information about the sources

[SHA3 Home] [Information on Sources]

ETHZ BLAKE - ETHZ Groestl - ETHZ JH - ETHZ Keccak - ETHZ Skein ETHZ SHA-2 GMU BLAKE - GMU Groestl - GMU JH - GMU Keccak - GMU Skein GMU SHA-2


All files (unless specified otherwise) are copyrighted to the ETH Zurich. Sourcecode for the GMU implementations are copyrighted by the George Mason University, Virginia USA (See Files under the ETH copyright can be freely used for research and educational purposes as long as the Integrated Systems Laboratory (IIS) of ETH Zurich is credited as the source.

These files are provided as is, no warranty whatsoever for any of these files is given.

Directory structure

We have a design flow dictated by an inhouse-script called cockpit. For each design a set of subdirectories are created. For each design tool a separate directory will be created. Below is an (abbreviated) list of directories as created by this tool. Our source distribution includes only the sourcecodes and not any technology specific data. Furthermore, we have not included some back-end/test related data.

|-- encounter       : Placement and Routing tool
|   |-- scripts     : TCL scripts for encounter
|   |-- src         : Source files for the encounter flow
|   '-- tech        : Technology libraries (NOT INCLUDED)
|-- modelsim        : Main directory for simulation 
|-- simvectors      : Testbenches expect test vectors in this directory
|-- sourcecode      : COmplete VHDL sourcecode
'-- synopsys        : Synopsys working directory
    `-- scripts     : TCL scripts for synopsys 

Naming Conventions

We try to use a consistent naming scheme throughout our sources. The naming convention is described in detail in the Microelectronics Design Center webpage. All signal names get a suffix starting with an 'x' charater. The following few characters specify whether or not the signal is Data, Clock, Reset, Select signal, or Test signal. Further suffixes are used to differentiate between Inputs and Outputs, Next or Present states of registered values.

Simulation and Testvectors

To generate the test vectors, the NIST KAT API has been used throughout this project. First the reference C implementation provided in the submission package is compiled with the name ETHZ_KAT for each algorithm.

The perl script then generates the input file for the ETHZ_KAT called stimuli.txt. ETHZ_KAT parses this file and generates a text file called expresp.txt with the expected responses.

An algorithm specific perl script called then is able to generate the testvectors.,txt file that will be read with the testbench.

It is possible to tell the how many vectors of what length are required for the test. The script also accepts the "rand" keyword to generate random number of vectors with random length.

Technology Information

All data was compiled using UMCLL65nm technology to which we had access through the Europractice-IC service at IMEC.

Standard Cell libraries were obtained through Europractice-IC service as well.

We have used the following tools in our design flow:

Previous version of this document

The old (round 2) version of the structure.html can be found under this link.
Last updated: Tue Nov 22 14:34:25 CET 2011 by kgf.