Eda Tools
Eda Tools
APR EDA runs FUSION COMPILER, ICC2, innovus, encounter (its older version of innovus).
Floorplan – innovus (some product-based companies will prefer innovus because if we have 500 -600 macros it
will be easy to place those)
PNR both tools
get_cells/get_net/ get_pins (These commands are same for both the tools)
sdc commands both tool can use.
BUF*X*
dbget head.libcells.name BUF*X -innovus command it will give the list of buffers with different drive strengths
get_obj_cells BUF*X* -synopsys dbget top.inst.name #used to report all the instances name present in the
design.
dbget selected.pStatus #provide status of selcted object, fixed/placed/unplaced.
dbset Command
dbset selected.pStatus fixed #selected object will be fixed.
dbQuery #used to get information about in particular location how many std cells are there
edit commands:
editPowerVia #add via ad particular location
editPin #used to place pin/port
INNOVUS
innovus #command used to invoke innovus shell
win #to get gui window
win off #to close gui window
exit #to exit shell
saveDesign placement.enc #To save the block or design
Eg : saveDesign cts.enc.dat
restoreDesign placement.enc block_name #To restore the block or design
In innovus select one object, press q provides detail of that. name, status, orientation, hieght, width etc..
dbget selected.pgTerms.name
VSS VDD
dbget selected.pgTerms.net.name
VSS VDD
#term means pin/port
dbGet top.terms.name #command used to get port names.
set_visible_nets -all #command makes all nets visible.
PD flow
import design **** sanity checks **** floorplan powerplan **** placement **** cts*** routing.
Import design:
set init_verilog ../../netlist.v
set lef_path../../all_design.lef
set tech_file../../file.tf
init_design ##the cmd used to read design using tcl variable.
sanity check:
checkDesign -netlist
check_library
check_instance_library_in_views
check_timing
Floorplan
* Gui: floorplan > specify floorplan > give height, width, spacing values and click okay.
Command: floorplan -d {w h left bottom right top} #to create floorplan using command
Command changeFloorplan -coreToLeft-coreToRight-coreToBottom-coreToT op # Use to modify I/O spacing.
command: changeFloorplan ###used to modify io spacing.
command: setObjFPlanBox Module block1 1 2 3 4 5 Module complete design ###used to create rectilinear
shape
Module ### if any complex Designs
Group ## if Any Voltage areas or voltage island avialble
command: defIn defin floorplan.def ##command used to read def file.
sdc file: #for both innovus and icc2 sdc commands are same.
create_cnstraint_mode
create_rc_corner
set_operation_condtions
source mmmc.tcl
viewdefinition.tcl
### all the active scenario for both setup n hold.
### vtg information
### how to save, free, restore
innovus> saveDesign import_design_done.enc innovus> exit
innovus> restoreDesign import_design.enc.dat block_name
cd./DB/import_design.enc.dat/ ###.enc.dat ---- every stage lib/lef/sdc/viewdefintiion/upetc...
innovus> restoreDesign import_design.enc.dat block_name -noTiming #restore design without timing mode,
helps to view, analyse deisgn but we cant save it.
innovus> freeDesign ##close current design in shell
Macro Placement
hier1/hie/cell
hier2/hie/cell2
hier3/hie/cell3
selectInst hier1/hie/cell #14 #command used to select macro cells belong to same hier in gui.
hightlight -index 1
#command used to provide color
selectInst hier2/hie/cell #20 #command used to select macro cells belong to same hier in gui.
hightlight -index 2 #command used to provide color
checkFPlan
checkPlace
checkDesign
Bind key
* Shift + R --- move/reshape/resize
* C-copy
* k - Ruler
* Shift + k --- delete ruler
* Shift + Y to create placement blockage
* Shift + B --- create routing blockage
* Shift + A --- edit wire
* Shift + X - cut wire by line
F2 window will come, save design
* Z --- zoom in
Shift + Z- zoom out
* f - fit
g-group #select cell n press g
* Shift + g – ungroup
Edit commands
* editSelect -net VDD
* editChangeNet -net VDD2
* editSelect -net name
* editChangeNet-layer_horizontal metal3 -layer_vertical metal4
* editSelect-layer METAL3
* editChangeStatus -to FIXED/ROUTED etc
Unplace Commands
unplaceAllBlocks
dbset [top.inst.cell.baseclass blocks -p].pstatus unplaced
* unplaceAllGuides #this command deletes all the bounds
* unplaceAllInsts I #unplace all standard cell.
innovus> help *edit*
innovus> help *unplace*
innovus> help *verify*
Placement
region -- hard bound #same hier cell should sit, other cells are allowed.
guide- soft bound #same hier cell can sit, other cells also allowed.
fence exclusive bound #same hier cell should sit, other cells are not allowed.
deleteInstGroup name1_region
createInstGroup name1_region
addInstToInstGroup name1_region hier1/hier2/hier3/*
createRegion name1_region 1000 2000 1000 2000
select region In gui
dbget selected.members.name
dbget selected.density
dbget selected.name
Note: Region we can see only in floorplan view, we can’t see in placement view. Region’s density better to set
between 30 to 50.
Different views are available.
Floorplan view
Placement view
* setPlaceMode or set_place_mode
* Place_opt_design
Place_design [global place]
opt_design [detailed placement with timing optimization]
* reportCongestion
* report_timing-check_type setup
* checkPlace
* refine Place
place_design [places all the cells based on hierrachy, timing, congestion, withour fixing overlaps] optDesign -
preCTS [timing optimization, power optimization, drv optimization, area optimization etc...]
place_opt_design
checks after placements
1. checkPlace
overlaps/unplaced cells/ site is not correct / pin track alignments, base drc etc....
reason: improper netlist, less area, improper optimization
solution:
refinePlace
check with synthesis team density screen [partial blk]
cell padding/inst padding
module splitting [setPlaceMode -place_global_module_padding hire1/hire2/hie3*]
Placement gui
* Place > place standard cell
* Place > place spare cell
* Place > specify > cell padding
* Place > physical cell [end cap, tap, filler]
* Place > refine placement /
* Place > scan chain /
* Place> tie hi tie low /
* Place > ECO placement
Fixes
Gui: in view window - overlay [enable congestion hotspot/density in gui]
Congestion-density screen
Cell padding - specifyCellPad-cell-left 2-right
deleteCellPad *
o Inst padding -specifyInstPad name -left-right-top-bottom
deletelnstPad -all
* refinePlace
Check utilization
Check timing/fanout
Routing
* setNanoRoute Mode #signal routing timing driven , metal layer selection
* routeDesign
* optDesign-postRoute # fix the violation and any optimization issues will be fixed
Gui PV related
Violation browser > select violations one by one, shows marker in guy
Verify > verify drc
Verify > verify connectivity
r-select object press r for move/resize/reshape
Shift + x for chopping
Shift + a - to edit wire, drw metal layer
Move the cell Moye
Auto command > ecoRoute -fix drc
#filler, metal filler run PV in seperate tool calibre /ICV
Pv anaylsis and fix
verify_drc
innovus> loadViolationReport -filename drc.out-type Calibre #tool creates violation markers.
verify_drc-check_short_only