1. Synthesis
In the top-level directory, run the following command.
source synopsys.sh
Go to the synthesis directory.
cd 1-syn
In the directory, you will see the following files.
VRCA64.v : Verilog RTL source code for a 64-bit ripple carry adder.
VRCA64.tcl : A TCL script for synthesis.
Open the above files in a text editor and see how they look like.
Run Design Compiler.
design_vision -no_gui
In Design Compiler, source the TCL script to load the library, the design, and the design constraints.
design_vision> source VRCA64.tcl
Check the log messages. Make sure there is no ERROR.
Compile it. Make sure there is no ERROR.
design_vision> compile -exact_map
Ungroup the design.
design_vision> ungroup -all
Save the synthesized netlist. Note that "_m" in the output file name denotes for "mapped".
design_vision> write -format verilog -output VRCA64_m.v
Save the design constraints.
design_vision> write_sdc VRCA64_m.sdc
Close Design Complier.
design_vision> exit
2. Check the output.
Open the mapped verilog netlist (VRCA64_m.v) in a text editor.
Check the followings.
There is only one module named "VRCA64". We ungrouped the netlist, so there is no module hierarchy in the netlist.
There are "wires". Wires are internal nets.
There are a lot of gates such as DFF_X2, AOI22_X1, and so on.
Open the synthesis TCL script (VRCA64.tcl) and the design constraint file (VRCA64_m.sdc) in a text editor.
Check the followings.
"set_max_capacitance" appears in both of them.
"set_max_fanout" appears in both of them.
"set_load" appears in both of them. In the TCL script, we used a wildcard character (*) for simplification. In the sdc file, you will see flattened constraints.
Check other constraints too.
This is all. Now you are done with netlist synthesis.
3. Check the design.
Open Design Compiler again.
Run the following script to load the synthesized netlist. Make sure there is no ERROR.
design_vision> source VRCA64_m_load.tcl
Check area. In my run, I get 195 ports, 451 nets, and 321 cells. The area for logic cells is 323.4um^2, that for F/Fs is 328.0um^2, and the total area is 651.4um^2.
design_vision> report_area
Check timing. In my run, the worst path delay is 0.11ns (110ps).
design_vision> report_timing
Check power. In my run, cell internal power is 97.6uW, net switching power is 16.9uW, and the total dynamic power is 114.5uW. Cell leakage power is 15.1uW.
design_vision> report_power
There are a bunch of report functions. Try some to see the details of the design.
design_vision> report_net
design_vision> report_cell
design_vision> report_clock