Innovus
Path Based Analysis
aocv : Re-timing the timing critical paths using the LOCV deratingfactors
path_slew_propagation : Re-timing the timing critical paths using the actual slews for thepath
aocv_path_slew_propagation : Combination of re-timing with aocv + path_slew_propagation
waveform_propagation : Re-timing with waveform effect taken into consideration during delayCal
Fix DRC Violation
1 | clearDrc |
check mode variants
1 | checkDesign |
Common Commands
Analysis Command
Clock Concurrent Optimization Technology (CCOpt)
Database Navigation
Data Exchange
Global Skew and Local Skew
Technology File
timeDesign vs. report_timing
Parasitic Extraction
Floorplan
/2022/02/07/Innovus/Tempus Nonfunctional ECO
Innovus ECO
block level create Power Ground Pin method
1 | editStretch x ... |
Add endcap and tapcell
First place place hard macro and add placement halo, then execute the following code to add endcap and tapcell.
1 | deleteFill -prefix ENDCAP |
First place place hard macro and add placement halo, then execute the following code to add endcap and tapcell.
1 | deleteFill -prefix ENDCAP |
In-design Sign-off Metal Fill Flow
Before inserting sign-off metal fill, stream out a GDSII stream file
of the current database. Specify the mapping file and units that match
with the rule deck you specify while inserting metal fill. If necessary,
include the detailed-cell (-merge
option) Graphic Database
System (GDS).
PVS:
1 | streamOut -merge $GDSFile -mode ALL -units $GDSUNITS -mapFile $GDSMAP -outputMacros pvs.fill.gds |
Pegasus: 1
2streamOut -merge $GDSFile -mode ALL -units $GDSUNITS -mapFile $GDSMAP -outputMacros pegasus.fill.gds
run_pegasus_metal_fill -ruleFile $DUMMYRULE -defMapFile $DEFMAP -gdsFile pegasus.fill.gds -cell [dbgDesignName]
Just replace
run_pvs_metal_fill
withrun_pegasus_metal_fill
Note: Innovus metal fill (e.g.
addMetalFill
, addViaFill
, etc.) does not
support 20nm and below node design rules. We strongly recommend the
Pegasus/PVS metal fill solution for 20nm and below. If you have sign-off
metal fill rule deck for 28nm and above available, we recommend you to
move to Pegasus/PVS solution too.
trimMetalFillNearNet
does not check DRC rules. It only removes the metal fill with specified spacingDo not perform ECO operations after dump in sign-off metal fill (by
run_pvs_metal_fill
orrun_pegasus_metal_fill
), especially, at 20nm and below nodes.If you perform an ECO action, the tool cannot get DRC clean because
trimMetalFill
does not support 20nm and below node design rules.The sign-off metal fill typically does not cause DRC issues with regular wires.
The run_pvs_metal_fill
command does the following:
- Runs PVS with the fill rules to create a GDSII output file.
- Converts the GDSII to a DEF format file based on the GDSII to DEF layermap provided.
- Loads the resulting DEF file into Innovus.
Pegasus is similar to PVS, shown as below,
The run_pegasus_metal_fill
command does the
following:
- Runs Pegasus with the fill rules to create a GDSII output file.
- Converts the GDSII to a DEF format file based on the GDSII to DEF layermap provided.
- Loads the resulting DEF file into Innovus.
Reference:
Innovus User Guide, Product Version 21.12, Last Updated in November 2021
How does EDI System identify spare cells in a post-mask ECO flow?
How does EDI System identify spare cells in a post-mask ECO flow?
Spare cells should have a unique string in their instance name to
identify them. Then the command specifySpareGate
or
ecoDesign -useSpareCells patternName
is run to identify the
spare instances. For example, if all spare cells have _spare_ in their
name then they are identified using:
1 | specifySpareGate -inst *_spare_* |
OR
1 | ecoDesign -spareCells *_spare_* ... |
Note: if you are making manual ECO changes to a netlist and converting a spare cell to a logical instance, it's important to change the instance name. Otherwise, the instance may be identified as a spare cell if a future ECO is performed because it still has the spare cell instance name.
Example
The cell to be swapped is unplaced
pre_buf: unplaced
spare_buf: placed
innovus 49> dbGet top.insts.name
spare_buf pre_buf UDriver USink
innovus 50> dbGet top.insts.
0x7f7b03ef60e0 0x7f7b03ef6150 0x7f7b03ef6000 0x7f7b03ef6070
1 | specifySpareGate -inst spare_* |
innovus 55> dbGet top.insts.name
pre_buf UDriver USink
innovus 56> dbGet top.insts.
0x7f7b03ef6150 0x7f7b03ef6000 0x7f7b03ef6070
innovus 57> dbGet top.insts.Pstatus
placed fixed fixed
Note: sparecell's pointer and name is swapped with the unplaced cell.
The cell to be swapped is placed
innovus 62> dbGet top.insts.name
spare_buf pre_buf UDriver USink
innovus 63> dbGet top.insts.
0x7f7b03ef60e0 0x7f7b03ef6150 0x7f7b03ef6000 0x7f7b03ef6070
innovus 64> dbGet top.insts.pStatus
placed placed fixed fixed
1 | innovus 66> specifySpareGate -inst spare_* |
innovus 68> dbGet top.insts.name
spare_buf pre_buf UDriver USink
innovus 69> dbGet top.insts.
0x7f7b03ef60e0 0x7f7b03ef6150 0x7f7b03ef6000 0x7f7b03ef6070
innovus 70> dbGet top.insts.pStatus
placed placed fixed fixed
Note: sparecell's pointer and name is swapped with the placed cell.
Error in "Innovus Text Command Reference 21.12"
ecoSwapSpareCell
If the cell to be swapped is unplaced, it is mapped to the spare
cell. *instName*
is deleted, and its connection is
transferred to the spare cell. If the cell to be swapped is placed, it
is swapped with the spare cell and is renamed to
*instNameSuffix*
if the -suffix
option is
used. If a suffix is not specified, the *instName*
cell is
renamed to *spareCellInstName*
. The *instName*
cell's connections are transferred to *spareCellInstName*
.
The input of *instName*
is tielo
, based on the
global connection definition.
reference
Answers to Top 10 Questions on Performing ECOs in EDI System
EE 582: Physical Design Automation of VLSI Circuits and Systems