The part of work is related to 128-bit AES encryption algorithm RTL design. There are three parts to the design-
- SISO : Single Input and Single output
- MIMO : Multiple input Multiple output
- N_CHANNEL : N Channel serial input and N channel serial output. Sometimes it is termed as N-Slowing.
RTL is written in verilog, where as the testbench is written in system verilog.
The simulation environment where it is tested is DC compiler. In every part (SISO/MIMO/N-CHANNEL), there is a VCS folder. Type command: 'make all' to run the simulation. The Simulation takes the data from the ref folder. Ref folder keeps the golden data for each round as well.
Few points to be noted. The constraint in the syntheis is in the unit of ns for time and fF for capacitance (as governed by our library). To run synthesis:
- Got to syn folder.
- dc_shell-xg-t -f synthesis.tcl | tee -i syn.log
To View the Design:
- Go to syn folder.
- Invoke Design Design Vision. (Command: design_vision-xg-t)
- Load AES_top.ddc
To View the waveform:
- Go to vcs folder.
- Run Command : dve -full64 -vpd results.vpd &
The test bench aes_sbox.v and matrix_mult.v is written by Saurabh Jain(User: @srbhjn459)
Best way to learn about these concepts is :
- VLSI digital signal processing systems: design and implementation by Keshab K Parhi
- AES Encryption Algorithm