Synthesis, Place & Route (SP&R) using Cadence Genus and Innovus:
Here we provide all the required scripts to run logical synthesis, physical synthesis using Genus and Genus-iSpatial, and place and route using Innovus. The run.sh file can be modified to launch the SP&R run using Flow-1 and Flow-2. Use the following steps to
- Launch Flow-1 set the PHY_SYNTH environment variable to 0 in the run.sh file
export PHY_SYNTH=0
- Launch Flow-2 set the PHY_SYNTH environment variable to 1 in the run.sh file
export PHY_SYNTH=1
- Start the SP&R run use the following command
./run.sh
Synthesis: The run_genus_hybrid.tcl is used to run the logical synthesis using Genus and physical synthesis using Genus iSpatial. It utilizes the PHY_SYNTH environment variable to determine the flow. Minor details of each synthesis flow are as follows.
- Logical synthesis using Genus (Flow-1): We use the elaborate, syn_generic, syn_map and syn_opt commands to generate the synthesized netlist. This synthesized netlist is copied into the netlist directory.
- Physical synthesis using Genus iSpatial (Flow-2): We use the elaborate, syn_generic -physical, syn_map -physical and syn_opt -iSpatial commands to generate the synthesized netlist. In this step we provide the floorplan def with placed macros and pins as an additional input compared to Flow-1. This def file is generated in Flow-1.
- Physical synthesis using Genus iSpatial for Circuit Training (Flow-4): This is the same as Flow-2 synthesis flow. The only difference is that the input def file does not include macro placement information.
The command to launch only the synthesis run is as follows.
# export PHY_SYNTH=0 #For Flow-1 uncomment this line
# export PHY_SYNTH=1 #For Flow-2 uncomment this line
genus -overwrite -log log/genus.log -no_gui -files run_genus_hybrid.tcl
P\&R: The run_invs.tcl is used to run the place and route using Cadence Innovus. The netlist and constraint generated during synthesis flow are used in this step. It also utilizes the PHY_SYNTH environment variable to choose which flow to run. Minor details of each P&R flow are as follows.
- Flow-1
- We use aspect ratio 1 and a utilization value in the range of 40% to 60%. All the pins are placed on the left side of the floorplan and the floorplan def file <design>_fp.def is created and copied into the def directory for place and route. The following command is used to place the pins.
### pin_list contains the name of all the top level pins. Here Y1 < Y2. LAYER1 and LAYER2 are two horizontal layer above M1 or metal1 or met1 ###
editPin -pin $pin_list -edge 0 -start {0 Y1} -end {0 Y2} -fixedPin -layer {LAYER1 LAYER2} -spreadDirection clockwise -pattern fill_optimised
- We use default HALO width based on the enablement for all the macros using the following command.
### HALO_WIDTH is 2um for ASAP7 and 5um for NanGate45 and SKY130HD FakeStack enablements ###
addHaloToBlock -allMacro $HALO_WIDTH $HALO_WIDTH $HALO_WIDTH $HALO_WIDTH
- The place_design -concurrent_macros command is used to place the macros and the def file <design>_fp_placed_macros.def is created and copied into the def directory for synthesis using Flow-2.
- It uses place_opt_design, ccopt_design and routeDesign commands for placement, CTS and routing of the design.
- Flow-2
- The run_invs.tcl script utilizes the .def file generated by the Genus iSpatial flow as a starting point.
- Similar to Flow-1 it uses place_opt_design, ccopt_design and routeDesign commands for placement, CTS and routing of the design.
The command to launch the P&R run is as follows.
### Make sure you have run the synthesis step. run_invs.tcl uses the output files generated synthesis ###
# export PHY_SYNTH=0 #For Flow-1 uncomment this line
# export PHY_SYNTH=1 #For Flow-2 uncomment this line
innovus -64 -init run_invs.tcl -log log/run.log