After a metal-only ECO, what must be re-verified?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Incremental checks are fine for DRC and fill while you iterate, but connectivity is global, so LVS always runs in full. After the ECO, run incremental signoff DRC on the changed areas, remove and repair fill that now conflicts, rerun full LVS, and rerun IR and EM where current or metal changed. Before tapeout, run full-chip DRC on the final GDS, since incremental runs only look where things changed.
Technical Explanation
signoff_check_drc -auto_eco true(ICC2) checks only the areas changed since the last run. It needs a previoussignoff_check_drc(ICC2) run and a change belowsignoff.check_drc.auto_eco_threshold_value(ICC2), 20% by default.- By default only violations in the changed areas are reported. Set
signoff.check_drc.merge_incremental_error_data(ICC2) to true to merge them with the earlier results, so the report shows the whole block. - ECO routes land on existing fill.
signoff_create_metal_fill -remove_by_rule drc_auto(ICC2) removes track-based fill shapes that now cause DRC violations, including floating connections left behind. signoff_create_metal_fill -auto_eco true(ICC2) removes and redoes fill only in changed regions, with the same 20% threshold. A metal change also triggers the adjacent via layers so no floating vias remain.- LVS runs in full. A single wrong via can merge or split nets far from the ECO area, and the extracted netlist has to match the final netlist from the ECO flow, including spare cells that were connected.
- IR and EM rerun where the ECO changed current or metal: connected spare cells draw current where there was none, and new routes may cut through or near PG straps. A local static and EM run on the region is the minimum; if a PG strap was touched, run the block.
- Isolated vias, antenna and density are part of the DRC deck, but check them explicitly if the ECO added vias or long routes. Timing and LEC are covered by the timing gate.
What To Check
- Incremental DRC merged with the baseline, not changed areas alone.
- Fill DRC and density in the ECO region after repair.
- Full LVS against the post-ECO netlist.
- IR and EM in the changed region, and whether any strap was touched.
Command Checks & Actions
set_app_options -name signoff.check_drc.merge_incremental_error_data -value trueMerges incremental results with the earlier baseline.
signoff_check_drc -auto_eco trueChecks only areas changed since the last run; change must be below 20% by default.
signoff_create_metal_fill -remove_by_rule drc_autoRemoves track-based fill that now violates, including floating connections.
signoff_create_metal_fill -auto_eco trueRefills only the modified regions.
analyze_rail -voltage_drop static -nets {VDD VSS}Rechecks IR where the ECO changed current or metal.
icv -i final.gds -c top -s top.sp -sf SPICE lvs.rsFull LVS against the post-ECO netlist.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Incremental DRC clean on 0.8% changed area, fill repaired, full LVS PASS, IR in the region unchanged within 2 mV.
- Suspicious (illustrative): Incremental DRC clean but merge not enabled, so older violations elsewhere are not visible.
- Hard stop: LVS skipped because the ECO was small, or change above 20% forcing a full run that nobody scheduled.
Common Mistake
The Trap: Skipping LVS after a twelve-net metal ECO because DRC was clean and the change was small. One via placed on the wrong strap shorts a spare-cell input to VDD, and only full LVS would have caught it.
What The Interviewer Is Testing
- Knowing which checks may be incremental and which may not.
- Knowledge of the 20% auto-ECO threshold and the merge option.
- Linking ECO changes to fill repair and IR.
Follow-up Question & Model Response
"Why is LVS never run incrementally in this flow?"
Candidate Model Response: LVS compares connectivity of the whole design. A short or open in the ECO area can change net identity anywhere those nets reach, and extraction has to rebuild connectivity from the full layout to see it. There is no safe changed-area boundary for a connectivity check the way there is for geometry. A full LVS run is also cheap compared with a respin, so there is no reason to cut it.
Practical Example
Tapeout Scenario: A metal-only ECO rewires 23 nets and connects 9 spare cells, changing 0.8% of the block (illustrative). signoff_check_drc -auto_eco true (ICC2) finds 3 violations, all against fill; -remove_by_rule drc_auto (ICC2) clears them and -auto_eco true (ICC2) refills. Full LVS passes. Static IR in the region moves from 31 to 33 mV against 45 mV. A final full-chip DRC on the tapeout GDS is clean.
PnR Flow Mentor Guide
Master the Physical Design Implementation Flow
Read the complete 8-chapter PnR Flow Mentor Guide free on the web — library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Continue practising