Вы находитесь на странице: 1из 4

Cadence Digital Design Synthesis Flow

Developed by : Zhenyu Qi (jerry@virginia.edu), Adam Cabe (acc9x@virginia.edu)


Mircea Stan (mircea@virginia.edu)
First Edition Date
: 4/3/2008
Latest Revision Date : 4/4/2008

Introductory Comments
This flow was originally designed to work in the .035 m AMI/TSMC technologies, and has
since been ported to work with the 90 nm ST design kit. The final goal of this design flow is to
provide sectioned scripts, where the process dependent parameters can be separated from the
design and flow parameters, making this flow easily portable from one technology to another,
and from one project to another. At the current time there are two separate flows for the two
technologies, however this separation of scripts has not been accomplished yet. This manuscript
details how to run the flows as they stand. Later editions will detail the separation of design,
technology, and flow parameters in different scripts.

Chapter I : Setting up the Environment


This chapter demonstrates how the file structures and hierarchy are setup, and how to
initialize the Cadence environment to run design synthesis.

A. The file hierarchy


To keep version control and records in order, we are using CVS to manage the project files. In
order to checkout the current project into your working directory, follow these steps. Step into
the directory username/cadence and type cvs checkout cordic (without quotes). This will
checkout the current version of the script into the directory username/cadence/cordic.
At present, the root file directory is set to the path user_name/cadence/project_name, where
user_name is your linux user name, and project_name is the name of the current working
project. For example, for user johndoe working on project cordic, the home path should be set to
johndoe/cadence/cordic.

Figure 1: File hierarchy.

The current file directory structure is shown here in Fig. 1. These directories will be discussed in
great detail throughout the document, however the following gives a brief overview of what is
contained in each directory.
rc Contains the required scripts to synthesize the top level HDL code down-to a gate-level
verilog netlist.
dft Contains the scripts to insert scan-chains into the post-RC gate-level netlist.
fe Holds the scripts to perform back-end synthesis, which takes the gate-level netlists, with
scan chain inserted, and transfers them to layout. This step will provide a final gds file which is
used to tape-out the chip.
ic This directory contains scripts used to import the post-encounter netlist into the actual
cadence design environment. In this environment, one can perform schematic and extracted
level simulations on the final design.
ncsim Houses scripts to simulate the behavioral, post-RC and post-encounter netlists.

aux Contains files that provide design constraints (timing, clock-tree specs, etc), and
configuration settings for the current project.
cdn_init Holds the scripts needed to launch the cadence tools, and setup the project
environment.
mmsim This directory contains scripts that perform simulations on the final schematic and
extracted netlists.
hdl Houses the top level HDL code and testbenches.
lib Holds all of the necessary library files (.lib, .lef, technology .v files, etc).

*** From this point forward, when referring to a directory, ./ will imply username/cadence/cordic/, e.g.
./rc implies username/cadence/cordic/rc.

B. Setting up the environment for an existing project


To setup the environment for your current project, cd into ./cdn_init and type the following two
commands :
. project_init
. cadence_cordic
This will setup your environment to run the Cadence toolset, and load the proper environmental
defaults for the design scripts. These commands should be run in the ksh environment.

C. Setting up the environment for a new project


In order to setup your environment for a new project, you will need to modify some of the
parameters given in the files from chapter 1B (project_init, cadence_cordic). You may also want
to change the name cadence_cordic to match your own project name (cadence_projname),
although this isnt necessary. Here are some of the parameters you may need to modify in the
respective files.
./cdn_init/project_init :
LIBFILE list of the .lib files required for synthesis
LEFFILE list of the .lef files required for synthesis
VLOGFILE list of the technology .v files required for simulation
TECHFILE technology file name
GDSMAPOUTFILE layer map file used to stream out a gds from encounter
GDSMAPINFILE layer map file used to stream in a gds to virtuoso
TOPMODULE name of the top module of your design

./cdn_init/cadence_cordic :

The only thing to modify here is the paths to the cadence tools. If you get errors where
the tools cannot be found, you need to change the paths in this file to point to the tool locations
in your unix environment.

Вам также может понравиться