This is a BRIEF tutorial. For further information on any command, you can
type "help [command]" or "man [command]" in Synopsys. Wildcards are also
allowed so "help get_*" will list all commands that start with "get_",
for example. Then typing "man get_nets" will display the syntax and usage
of a command.
Synopsys has a GUI, but it is rarely used. In fact, I have never used it.
Instead, everyone uses a TCL shell that comes with Synopsys. This is run
by typing "dc_shell-t" at the command prompt. (In prior versions, there
was a different DCSH ("DC shell") version that was used. This can be
invoked with just "dc_shell" but is not covered in this tutorial. If you
find information on-line, it may use DCSH. Your path is automatically set
up in the setup script that I had you source.
Error messages are in the Synopsys On-Line Documentation (SOLD) which is
located in the Synopsys installation directory.
Reading Libraries
I wrote a script to set up the libraries for the Oklahoma State University
TSMC 0.18um cell library. This is a very small library and does not have
I/O pads, but we will use it for at least this tutorial. The script to
set up this library is setup_osu180.tcl. This script sets up a few DC
environment variables including: search_path, target_library, and
link_library. search_path specifies directories to look for verilog files.
All modules must be defined in verilog including the standard cells (as
defined in osu_soc_v2.7/synopsys/lib/tsmc018/lib/osu018_stdcells.v).
You can append your own paths to this if you like.
The script also defines a few variables that are used later in the scripts
by prefixing them with a $. These include:
LIB_NAME The library name. DFF_CELL The typical (minimum size) DFF cell
name. LIB_DFF_D The DFF input pin as library/cell/pin. DFF_CKQ The assumed
value of the Clock-to-Q delay of the DFF in technology units. DFF_SETUP
The setup time of the DFF in technology units.
$LIB_NAME will then return the value of the library name.
You can EXCLUDE certain cells in the library from being used with
"set_dont_use". For example, you will typically not want clock buffers
to be used for anything but clocks, so type: