Synopsys IC Compiler II (ICC2) · stage 15 of 16

15. ECO and incremental requalification

Sanity checks and ICC2 commands for ECO baselines, freeze-silicon mode, spare cells, netlist-driven edits, placement, routing and timing impact.

6 min read · Free, no login

Get Innovus + ICC2 Cheat Sheets at ₹199

This stage covers ECO and incremental requalification: saving a baseline, setting ECO mode, spare cell inventory, netlist-driven edits, placing and legalising ECO cells, freeze-silicon mapping, incremental routing, post-ECO DRC and fill, and the timing impact.

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 saved
Before the ECO
save_block
save_lib <lib>
The block and library are saved under a named baseline, and the reports from it are kept. A baseline is saved, but its reports were regenerated later. There is no baseline to compare with or roll back to.
E-02 ECO mode
Before edits
set_app_options -name design.eco_freeze_silicon_mode -value true The mode matches the plan: a metal-only ECO uses freeze mode, and other ECOs leave it off. The mode was changed mid-ECO, with a recorded reason. The plan is metal-only, but the mode is not set.
E-03 Spare cell inventory
Before tape-out
add_spare_cells -cell_name spare -lib_cell {AND2 OR2} -num_instances <n> Spare types and counts are spread across the block as planned. Spares are clustered by cell density only, and the owner has reviewed them. Spare types or counts are missing for the planned ECOs.
E-04 Netlist-driven ECO
After logic change
eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tcl
source eco_changes.tcl
The change script was reviewed and applied once, and physical-only cells were compared where relevant. Timing ECO changes are included deliberately. The script was applied unreviewed, or run twice.
E-05 ECO cell placement
After edits
place_eco_cells -eco_changed_cells
legalize_eco_cells -cells $ecoCells -displacement_tolerance_level low
check_legality
All ECO cells are placed and legal, and displacement is small. Existing cells were moved, and each move is listed. ECO cells are unplaced or illegal.
E-06 Freeze silicon mapping
Metal-only ECO
place_freeze_silicon -cells {ECO1 ECO2}
check_freeze_silicon
Every ECO cell maps to a matching spare cell. A script that replaces cells with logically equivalent ones was used and reviewed. An ECO cell has no matching spare.
E-07 Incremental routing
After placement
route_eco -nets {net1 net2} -reroute modified_nets_only
check_routes
Only the modified nets were rerouted, with zero DRC, opens or shorts. Nets outside the ECO changed, with a recorded reason. Opens, shorts or DRC remain after routing.
E-08 DRC and fill after ECO
After routing
signoff_check_drc -auto_eco true
signoff_create_metal_fill -remove_by_rule drc_auto
Only the changed areas were rechecked, and fill shapes in conflict were removed. The change exceeds the incremental threshold, so a full run is used. Full signoff DRC was never rerun before hand-off.
E-09 Timing and ECO impact
After DRC clean
update_timing †
report_timing
report_eco_physical_changes
Slack is within the project budget, and physical changes are small. A few cells show large displacement, and each is reverted or approved. Timing was not refreshed after the ECO.

Command cheat sheet

ICC2 commands. Angle brackets are placeholders, and values shown are examples, not project limits. A dagger (†) marks a command the notes behind this book do not fully cover; it is shown without options, so confirm it with man or help in your release.

Checkpoints
save_blockSaves the block to disk. Changes the session; record it.
save_lib <lib>Saves the design library, since changes are in memory until saved.
save_block -as <block>/<label>Saves a labelled version to roll back to.
ECO settings and spares
set_app_options -name design.eco_freeze_silicon_mode -value trueEnables freeze silicon ECO mode. Changes the session; record it.
add_spare_cells -cell_name spare -lib_cell {AND2 OR2} -num_instances <n>Spare cells of each type spread over the placement area. Changes the session; record it.
add_spare_cells -cell_name spare -num_cells {NAND2 20 NOR 15}Spare cells with different counts per type. Changes the session; record it.
Netlist-driven ECO
eco_netlist -by_verilog_file eco.v -write_changes eco_changes.tclTcl editing commands from the difference against a golden netlist.
source eco_changes.tclApplies the reviewed edits. Changes the session; record it.
size_cell <cell> -lib_cell <lib_cell>Resizes one cell. Changes the session; record it.
add_buffer -object_list {net1} -lib_cell <buf>Buffers inserted on the listed nets. Changes the session; record it.
Place the ECO
place_eco_cells -eco_changed_cellsPlaces cells changed by ECO operations on free sites near connectivity.
legalize_eco_cells -cells $ecoCells -displacement_tolerance_level lowLegalises ECO cells with little movement.
place_freeze_silicon -cells {ECO1 ECO2}Places ECO cells and maps them to spare cells.
check_freeze_siliconLists ECO cells without a matching spare cell.
Route and check
route_eco -nets {net1 net2} -reroute modified_nets_onlyIncremental routing of modified nets. Changes the session; record it.
check_routesRouting DRC, opens and antenna findings.
check_legalityPlacement legality after the ECO.
signoff_check_drc -auto_eco trueIC Validator DRC on changed areas only.
report_eco_physical_changesShows displacement caused by sizing and buffering ECOs.