Makefile
Contains all commands needed for simulation and synthesis.
You must enter the top-level design name at the top of the file.
Type "make <return>" to see make targets and instructions.
dc-template.tcl
Template used to generate a customized command file for Design Compiler.
Do not edit this file unless you are told you need to.
.synopsys_dc.setup
Don't miss this one! Make sure the file begins with a period.
Copy it to your home dir (but then you can't customize it for individual
runs, which is probably ok), or your working dir (make sure you copy it
when you start a new dir).
If you have a .synopsys_dc.setup file in your home directory
(from ECE 180B for example), you will likely need to move it or change
its name so that DC won't get confused.
Do not edit this file unless you are told you need to. Remember that
it appears in linux only with "ls -a" and not just "ls".
abc.v
Very simple example design with 2-bit and 32-bit adders, and registers
def.v
Very simple example submodule of abc.v with 2 FFs.
abc.vfv
File that contains all source verilog files for simulation (NCVerilog or
Verilog-XL).
abc.vfs
File that contains all source verilog files for synthesis
(Design Compiler) of abc.v. Note: never include test files.
abc.vt
Very simple test bench file for abc.v and def.v that compiles cleanly.
Finite state machine example from slides.
Super simple OR example from synthesis slides.
Set the clock period to a very short cycle time such as 0.1 ns (10 GHz)
Synthesize the design
Unless the circuit is extremely simple, there will be a negative slack result. Use the equation in the handout to calculate the minimum achievable clock cycle time.
Set the clock period to a very long cycle time such as 1000 ns (1 MHz)
Synthesize the design
Unless the circuit has an extremely long logic depth between pipeline registers, there will be a positive slack result. The area result is the minimum achievable circuit area.
We currently use the 45 nm NanGate FreePDF45 Open Cell Library (http://www.nangate.com/?page_id=2325) which is an open-source library developed by NanGate Inc, http://www.nangate.com
It contains "62 different functions ranging from buffers to scan flip-flops with set and reset, including specialized low power cells with multiple drive strength variants, the library includes over 170 different standard cells."
Timing parameters are in units of nanoseconds.
See the following files for more information on the library's cells. Copies are posted on canvas under "Files"Datasheet.typical.corner.pdf
Details of the standard cells for
Typical speed NMOS,
Typical speed PMOS,
Vdd = 1.1 V,
and
Tj = 25.0°C.
Datasheet.pdf
Details of the standard cells for five corners:
typical,
slow (slow, slow, Vdd = 0.95 V, Tj = –125°C),
fast (fast, fast, Vdd = 1.25 V, Tj = –0°C),
worst_low (worst.low, worst.low, Vdd = 0.95 V, Tj = –40.0°C), and
low_temp (low.temp, low.temp, Vdd = 1.25 V, Tj = –40.0°C).
NangateOpenCellLibrary.v
The file that specifies the logic and the rise and fall times (by the
specify block) of the standard cells.
Previously, we used the 0.25 um vtvt library.
(1) lc_shell (2) read_lib NangateOpenCellLibrary_typical_ccs.lib (3) write_lib NangateOpenCellLibrary -output NangateOpenCellLibrary.db OR: write_lib NangateOpenCellLibrary -format dbOther approaches using "read_lib" and "write_lib" did not work for us.
To simulate with gates, add something similar to the test_prac_gates target to your Makefile shown below. The test_prac target is an example of how the test would normally be run with the source verilog files.
test_prac_gates: ncverilog [flags_normally_used] /net/pizza/tools/classes/281/lib/vtvtlib25.v prac.vg prac.vt test_prac: ncverilog [flags_normally_used] prac.v prac.vtwhere prac.vg is your gate netlist and prac.vt is a testbench file. Note that you will likely not be able to view signals inside the gate netlist file without changing your testbench since the names of internal signals will likely change after synthesis.
sold &and selecting the appropriate product.
Two other tools by Synopsys can be used to graphically interact with DC and view netlists.
design_vision design_analyzer===== 2011/02/14
You can also compile your design within design_vision by loading file using the analyze menu and then using the same dc_compile script. It will complain about the /* */ comments in the script file when run this way. It also complains about a "your_library.db" but both can apparently be ignored.
Design Analyzer seems to be not working correctly.
2025/01/13 Minor edits 2021/02/08 Added or2.v example, updated Makefile and dc-template.tcl 2020/03/03 Added fsm.v and fsm.vfs 2020/02/07 Added sections to find max clock frequency and minimum area 2017/02/04 Major changes for new NanGate 45 nm library 2015/02/03 Added SEQGEN note 2015/01/16 Minor changes 2010/02/17 A few small changes 2010/02/16 Updated path to vtvtlib25.v 2009/02/13 Some updates