Cadence Encounter
Contents
Overview
To use the Cadence tools, you must change this environment variable:
export OSUcells=/mada/software/techfiles/osu_soc_v2.7/cadence
The OSU scripts for Cadence can be copied from here:
cp -rf /mada/software/techfiles/osu_soc_v2.7/cadence/flow/ami035
but they are for an old version of Encounter. Quite a few things have changed, so I am posting a description of the working script I made by modifying the old OSU scripts.
You will need to specify the correct top-level name and gate-level netlist name in encounter.conf. This keeps variables and constants used in the placement and routing scripts.
Running Scripts
To run encounter, you simply can run:
encounter
at the Linux shell prompt.
In this tutorial, I may not explicitly mention the GUI menu commands, because it is more convenient to use the shell interface. However, most of these commands are available (with forms for options) under the appropriate menus (e.g. Timing, Place, Floorplan, etc.). I suggest that you use the GUI for the first time along with the "-cmd foo.log" argument to save your actions/commands to a file called foo.log. You can then create a script from the saved file.
To run a script, type:
encounter -init encounter.tcl
with X11 exported to your local machine. If this completes successfully, you can hit "f" to center the layout.
Typical Design Flow
Floorplanning
Placement
Timing Analysis
Clock Tree Synthesis
Optimization
Routing
Notes on 45nm
If you want to synthesize a design using the Nangate FreePDK45 cell library, you need to make a few changes:
1) You need to compile the Nangate .lib into a .db and use that. To do this, run:
dc_shell-t
Then execute these commands:
read_lib /mada/software/techfiles/NangateOpenCellLibrary_PDKv1_3_v2009_07/liberty/NangateOpenCellLibrary_typical_conditional_ccs.lib write_lib NangateOpenCellLibrary
which will create a file NangateOpenCellLibrary.db. Move that to your project directory.
2) Then, these lines change to the compile_dc.tcl:
set search_path [concat $search_path . ] set link_library [set target_library [concat [list NangateOpenCellLibrary.db ] [list dw_foundation.sldb]]]
3) In the encounter.conf, you need to reference the .lib file instead of the .tlf file. You also need to point to the .lef file. Specifically, these lines change:
set OSUcells /mada/software/techfiles/NangateOpenCellLibrary_PDKv1_3_v2009_07 set rda_Input(ui_timelib) "$OSUcells/liberty/NangateOpenCellLibrary_typical_conditional_ccs.lib" set rda_Input(ui_leffile) "$OSUcells/lef/NangateOpenCellLibrary.lef"