Professional Documents
Culture Documents
RTL To GDS Flow Automation: Step - 1: Initially The Design Environment Needs To Be Setup
RTL To GDS Flow Automation: Step - 1: Initially The Design Environment Needs To Be Setup
This document gives a brief description of how to generate a GDS for your design given a
RTL. The RTL is taken through various steps broadly divided into two :-
1. Logic Synthesis- Conversion of RTL to an equivalent netlist. Here netlist specifies the cells
and the interconnections between them.
2. Physical Design- Conversion of netlist to an equivalent GDS. GDS is a file that contains
geometrical information for designing masks in the foundry.
How to get from RTL to GDS would be explained in the following steps: -
1. Open the terminal from the ‘scripts’ directory. Assume that ‘Scripts’ is a directory where
3. Source the cad files using ‘source /cad/cshrc’. (Note the space after source)
4. Run the setup_script.tcl file by typing ‘tclsh setup_script.tcl’, this runs the tcl file using
the tcl interpreter. The following directories are created when this file is run.
Figure 2: Initial Setup
5. Create a directory with name ‘90’ in the lib folder if you are going to use 90nm library
files. Put the 90 nm library files into this directory. The 90nm library files are available at
6. Put the constraints file into the ‘constraints’ directory and put the RTL files and
Step-2 : Compile, Elaborate, Simulate and generate code coverage data for the design using Incisive
Simulation tool
The compile_elaborate_simulate.tcl file is given in the appendix. The ncsim tool uses
simulation.tcl file as input. A cov_work folder is created which contains the code coverage
data.
1. To invoke the ICCR (Incisive Comprehensive Coverage Tool) type ‘iccr name_of_tcl_file’
in the shell. Here the tcl file is iccr_tcl.tcl. The commands in the file are given in the
appendix. If you want the tool to run in gui mode, type ‘-gui’ along with the tool invocation
command.
Step-4: LOGIC SYNTHESIS AND DESIGN FOR TEST(DFT) - Synthesise netlist and generate timing,
1. For synthesis RTL Compiler is used. To invoke the tool type ‘rc -bg -files name_of_tcl_file’.
Here the tcl file is rc_script.tcl. The dft_script.tcl is used if you want to insert scan chains
in your design for Post-Si testing. The commands in the file are given in the appendix. The
-bg option is to run the tool in background mode without showing the gui. If you want the
1. Make a directory ‘logical_eq_check’ in the scripts directory for storing all the report files
2. For equivalence checking Conformal is used. To invoke the tool type ‘lec -lp -dofile
name_of_dofile’. Here the dofile is logical_eq_check.do. The commands in the file are
given in the appendix. The first command switches Off the gui , if you want the tool to run
a) Using Tempus
and execute the tcl script file. The tcl script file used is sta_cad_after_synthesis.tcl given in
appendix.
b) Using PrimeTime
Type ‘pt_shell’ on the terminal. Source ‘primetime_script.tcl’. The timing reports are
Inputs
1. Input-output assignment file
2. LEF file
3. Netlist from logic synthesis
4. View file which contains the delay corners, constraints etc. to be used. A sample view file is
given in the appendix (n).
Type ‘encounter -file encounter_script.tcl’ file in the shell. The script will do floorplanning,
placement, global routing, detail routing, generate timing reports after CTS and routing.
Finally, it will generate the GDS for the given RTL, final netlist and DEF file which can be used
for power analysis etc.
Step-8 : Power Analysis using Voltus Tool
a) Type ‘/cad/SSV/bin/voltus -no_gui -file voltus_power_analysis_script.tcl’ to run the voltus
tool and execute the tcl script file. The tcl script file used is voltus_power_analysis_script.tcl
a) Using PrimeTime
Type ‘pt_shell’ on the terminal. Source ‘timing_sign_off_script.tcl’. It checks for setup and
hold violations using the netlist and SDF file generated after physical design.
APPENDIX
a) Setup_script.tcl
1. #!/cad/PVS151/tools/bin/tclsh
8. close $channelid
b) Compile_elaborate_Simulate.tcl
+wc -status -coverage block -coverage expr -coverage fsm -coverage toggle
worklib.test_module:module
c) simulation.tcl
3. run
d) iccr_tcl_file.tcl
1. load_test cov_work/scope/test
2. #<summary>
4. #</summary>
5. #<detail>
7. #</detail>
e) rc_script.tcl
4. read_hdl rtl_topmodule.v
5. elaborate
6. read_sdc ../constraints/constraints_top.sdc
syn_report/delays.sdf
16. exit
f) dft_script.tcl
4. read_hdl rtl_topmodule.v
5. elaborate
6. read_sdc ../constraints/constraints_top.sdc
18. #replace_scan
syn_report/delays.sdf
33. exit
34. #gui_show
g) logical_eq_check_script.tcl
6. set_system_mode lec
7. add_compared_points -all
8. compare
11. report_verification
12. write_compared_points -replace logical_eq_check/lec_compared_points
15. write_verification_information
16. exit
h) Sta_after_synthesis.tcl
3. read_lib ../lib/90/slow.lib
4. read_verilog syn_report/synthesised_netlist.v
5. set_top_module rtl_module
6. read_sdc ../constraints/constraints_top.sdc
15. #exit
i) primetime_script.tcl
2. read_verilog syn_report/synthesised_netlist.v
3. link
4. source ../constraints/synopsys_constraints.sdc
5. check_timing
timing_report_max
8. start_gui
j) encounter_script.tcl
8. init_design
9.
10. #/*Floorplanning*/
11. getIoFlowFlag
12. setIoFlowFlag 0
14.
Metal1 -layer {bottom Metal8 top Metal8 right Metal9 left Metal9} -width
18.
21.
22. #/*Placement*/
24. placeDesign
25.
27.
file Clock.ctstch
29. clockDesign -specFile Clock.ctstch -outDir clock_report -fixedInstBeforeCTS
30.
36.
41.
52.
53. #/*RC Extraction*/
54. extractRC
59.
62.
66.
71. set_power_output_dir ./
79.
82.
k) Voltus_power_analysis_script.tcl
8. read_verilog rtl_module_postroute_netlist.v
9. set_top_module rtl_module
$seq_activity
l) Timing_sign_off_script.tcl
2. read_verilog rtl_module_postroute_netlist.v
3. link
4. source ../constraints/synopsys_constraints.sdc
5. read_sdf physical_design_rtl_module.sdf
6. check_timing
timing_sign_off_report_max
timing_sign_off_report_min
9. start_gui
m) I/O Assignment file- An example
The direction of the pin location is specified as North(N), South(S), East(E) ,West(W), North-East(NE),
{../constraints/constraints_top.sdc}
late_library_set {timing_lib1}
{delay1}