Cadence Innovus (Legacy UI) · stage 15 of 16

ECO and incremental requalification

Sanity checks and commands for baseline checkpoints, ECO mode settings, netlist-driven and interactive edits, ECO place and route, and post-ECO requalification.

7 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

This stage covers ECO and incremental requalification: saving a baseline before the ECO, recording ECO mode settings, applying netlist-driven or interactive edits, placing and routing the ECO cells, and rechecking legality, connectivity, DRC, antenna and timing against the baseline afterward.

Sanity check cheat sheet

One row per command card. Read left to right: the check, the command that answers it, then what a healthy result, a result to review and a hard stop look like.

CardCheck and whenCommandHealthyReviewHard stop
E-01 Baseline checkpoint and snapshots
Before the ECO
saveDesign <baseline>.enc
defOut -routing <before>.def
saveNetlist <before>.v
All four files exist, the summary reads Routed, and the baseline has restored once in a new session. The baseline was saved over an earlier checkpoint, because saveDesign overwrites a save in the same location. No restorable baseline exists before the first ECO command, so a failed ECO cannot be undone.
E-02 ECO settings and interactive commands
Apply the ECO
getEcoMode
setEcoMode -honorDontTouch true -honorDontUse true -honorFixedStatus true -LEQCheck true -refinePlace true -updateTiming true
initECO <eco_log_file>
Settings match the request and are stored with the manifest, ecoAddRepeater returns the expected names, and the log matches the request. A setting differs from the default without a recorded reason, or a warning says that a protected object blocked part of the change. A honour setting is false without written approval, a command errors, or the log holds a change that the request does not list.
E-03 Netlist-driven ECO and netlist comparison
Apply the ECO
loadECO -verbose <eco_file>
ecoDesign -noEcoPlace -noEcoRoute -reportFile <f> <session>.enc.dat <top> <new.v>
ecoCompareNetlist -def <ref.def> -outfile <f>
The summary counts equal the counts in the request, and no net lacks a driver or input pin lacks a net. The counts match, but ports or feedthroughs appear that the request did not mention. The counts differ from the request, or loadECO stops at an error part way through the file.
E-04 Place and route the ECO cells
Apply the ECO
deleteFiller -area {<llx> <lly> <urx> <ury>} -prefix <prefix>
ecoPlace
ecoRoute
No unplaced cell remains, and ecoRoute ends with no open net and no new violation marker. ecoRoute needed a second run to clear violations. An unplaced cell or an open net remains.
E-05 Placement legality and filler
After ECO
checkPlace <report_file>
refinePlace -inst {<inst_list>}
checkFiller -file <f>
Unplaced is zero, checkPlace lists no violation, and checkFiller finds no missing filler site, or only gaps approved in Chapter 13. A pin access violation appears next to a changed cell that the baseline did not have. Any unplaced instance, overlap, off-grid cell or row orientation violation, or a filler gap that the project does not allow.
E-06 Connectivity, DRC and antenna
After the ECO
verifyConnectivity -type regular -report <f>
verify_drc -limit 0 -report <f>
verify_antenna -report <f>
No open, no DRC marker and no antenna violation, in the area run and the full run. A dangling wire is reported near a cut net that the baseline did not have. Any open net, short, DRC violation or antenna violation after the ECO.
E-07 Physical difference against the baseline
After the ECO
defComp <before>.def -defAsGolden -reportFile <f>
summaryReport -noHtml -outfile <f>
Every added, deleted, changed and rerouted item maps to an entry in the manifest. MOVEINST lines for neighbours that legalisation moved, not yet in the manifest. POWERROUTE lines, or DELINST, CHANGECELL or CHANGEROUTE lines for objects the request did not name.
E-08 Timing coverage after the ECO
After the ECO
timeDesign -postRoute -outDir <dir> -prefix <prefix>
report_annotated_parasitics -list_not_annotated
timeDesign -postRoute -hold -outDir <dir> -prefix <prefix>
Setup and hold meet the project budget in every required view, and no ECO net lacks parasitics. Setup improved but hold was not rerun, or the output directory differs so the sets cannot be compared. Any required view misses the project budget, or an ECO net has no annotated parasitics.

Command cheat sheet

Legacy UI commands. Angle brackets are placeholders, and values shown are examples, not project limits.

ECO settings and logging
getEcoModeEvery setEcoMode parameter with its current value, type, and whether the value is the default or set by the user.
getEcoMode -quietThe current settings of all setEcoMode parameters as a Tcl list only, handy for a script that records them.
setEcoMode -resetResets every setEcoMode parameter to its default. Changes the session.
setEcoMode -batchMode trueStarts batch mode. Timing initialisation runs once at the first ECO command and the timing update runs when batch mode is exited. Changes the session.
setEcoMode -honorDontTouch falseAllows the eco commands to modify dont_touch nets and instances. Use only with a written reason. Changes the session.
initECO <eco_log_file>Starts logging the ECO operations into the named file. Writes a file.
endECOEnds the ECO logging that initECO started.
writeEco -format innovus -output <file>The ECO commands logged in the session, written as an Innovus format file you can source later. Writes a file.
Interactive ECO edits
ecoRemoveTiedInputs -reportA report of the gates that already have inputs tied together, with no fixing. Reads only.
ecoAddRepeater -net <net> -cell <buffer_cell> -loc {<x> <y>}A buffer on the net at the given location. Returns the new instance name and the input and output net names. Changes the database.
ecoAddRepeater -net <net> -cell <buffer_cell> -relativeDistToSink 0.1A buffer near the receiver. Values near 0.9 put it near the driver. Works for a one-sink net or one named term. Changes the database.
ecoChangeCell -inst <inst> -upsizeThe instance replaced by the next stronger cell of the same footprint. Changes the database.
ecoChangeCell -inst <inst> -cell <new_cell>The instance mapped to the named cell. The output functions must match and the pin counts must be equal. Changes the database.
ecoChangeCell -inst <inst> -cell <new_cell> -pinMap {<old_pin> <new_pin>}A cell swap where the new cell uses different pin names, with each old pin connected to its mapped new pin. Changes the database.
ecoDeleteRepeater -inst <inst>The buffer deleted, or the back-to-back inverter pair that contains the named inverter. Wires are merged. Changes the database.
ecoRemoveTiedInputs -insts {<insts>}The listed gates that have inputs tied to one net remapped into equivalent logic without tied inputs. Changes the database.
Interactive netlist edits
deleteInst <inst>The instance removed, logical or physical, with wildcards allowed. Not governed by setEcoMode: -honorDontTouch skips dont_touch instances, and deleting a constrained instance deletes the timing graph. Changes the database.
attachTerm <inst> <term> <net>The terminal moved to the net, detaching it from any other net first. Hierarchical ports are created as needed. Not governed by setEcoMode. Changes the database.
Netlist-driven ECO
ecoCompareNetlist -def <ref.def> -outfile <f>A file of the differences between the reference and the design in the database. Writes a file.
loadECO -verbose <eco_file>The ECO directives applied to the netlist, a Load ECO Summary, and a report of nets without drivers and input pins without nets. Changes the database.
ecoDefIn -reportFile <f> <old.def>Old placement and routing restored onto the new netlist, with a report of added, deleted and modified cells and nets. Changes the database.
ecoDesign -noEcoPlace -noEcoRoute -reportFile <f> <session>.enc.dat <top> <new.v>The saved design restored and the netlist changes applied, stopping before placement and routing so you can run them yourself. Changes the database.
Place and route the ECO
ecoPlaceUnplaced standard cells placed without moving placed cells. Changes the database.
ecoRouteIncremental routing of modified and new nets, with opens and shorts detected. Changes the database and runs long.
ecoRoute -fix_drcRepairs only the DRC violations already marked in the database, and reverts if the count rises. Errors out if open nets exist. Changes the database.
prepareForEcoRouteRouted special nets converted to equivalent regular nets so the router may modify them. Does not work for PG nets. Changes the database.
refinePlace -inst {<inst_list>}Legal locations for the listed instances, with all other instances held fixed. Changes the database.
addFiller -cell {<filler_cells>} -prefix <prefix> -ecoMode trueOverlapping fillers removed and new fillers inserted into the gaps. Changes the database.
Post-mask ECO (only if masks exist and spare cells are used)
specifySpareGate -inst <pattern>The named instances registered as spare gates. Run before placement. Changes the database.
ecoDefIn -postMask -reportFile <f> <old.def>Post-mask restore: deleted cells are kept as spare cells with the suffix, and unplaced cells wait for mapping. Changes the database.
ecoPlace -useSpareCells trueUnplaced cells mapped to spare cells of the same type. Post-mask only. Changes the database.
ecoSwapSpareCell <inst> <spare_inst>The cell swapped with a cell in the spare list, after specifySpareGate. Changes the database.
ecoRoute -modifyOnlyLayers <bottom>:<top>ECO routing limited to the layer range. The range may be too small for the change. Not supported at 10 nm and below. Changes the database.
Checks after an ECO
checkPlace <report_file>Placed, fixed and unplaced counts, density, and placement violations by category. Adds markers and writes a file.
checkFiller -file <f>The number of sites missing filler cells in the core, written to a file.
verifyConnectivity -type regular -report <f>Opens, unconnected wires and pins, loops and unrouted nets on regular nets. Adds markers and writes a file.
verify_drc -limit 0 -report <f>DRC violations on placed instances, with markers. The default cap is 1000 errors, and 0 removes the cap. Adds markers and writes a file.
verify_drc -area {<llx> <lly> <urx> <ury>} -report <f>DRC limited to the given rectangle, for the changed area. Adds markers and writes a file.
verify_antenna -report <f>Process antenna violations on routed nets. The default report name is <design>.antenna.rpt. Writes a file.
defComp <before>.def -defAsGolden -reportFile <f>Added, deleted, changed and moved instances, net and wire changes, and the change area, against the baseline DEF. Writes a file.
timeDesign -postRoute -outDir <dir> -prefix <prefix>Post-route extraction and setup timing reports in the output directory. Changes the analysis mode and the database. Runs long and writes files.
timeDesign -postRoute -hold -outDir <dir> -prefix <prefix>The same for hold. Runs long and writes files.
timeDesign -postRoute -expandedViews -outDir <dir>A separate report directory for every active view in a multi-mode multi-corner session. Runs long and writes files.
check_timing -verboseConstraint consistency and completeness warnings. With -verbose they are listed in detail, grouped by type; without it only a count per type is printed.
report_annotated_parasitics -list_not_annotatedThe annotated parasitics summary by net type, and the nets that have no annotation.
Checkpoints and snapshots
summaryReport -noHtml -outfile <f>A text summary with design status, instance counts, macro and standard cell tables. Writes a file.
saveDesign <name>.encA restore file and the database directory. Saving to the restore location overwrites the earlier data. Writes files.
restoreDesign <name>.enc.dat <top>The saved design in memory. Do not edit the saved directory, because a modified one can corrupt the restore.
defOut -routing <before>.defA DEF file with floorplan, cells and routing, for a later defComp. Writes a file.
saveNetlist <before>.vThe logical Verilog netlist of the design. Writes a file.