IntermediateQuestion 212 of 222Source: Synopsys ICC2 Implementation User Guide X-2025.06-SP2: IC Validator In-Design (Inserting Metal Fill, Incremental Metal Fill Insertion, Removing Metal Fill)

A late ECO lands after fill. How do you remove and repair fill safely?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Remove and refill fill only where the ECO touched, then re-check DRC, density and timing. signoff_create_metal_fill -auto_eco true (ICC2) does this automatically when less than 20 percent of the block changed since the last fill run, and -remove_by_rule drc_auto (ICC2) removes track-based fill that now causes DRC violations. A plain -mode remove (ICC2) takes out all fill, TCD structures included, unless you restrict it with -select_layers (ICC2).

Technical Reference DiagramA late ECO lands after fill. How do you remove and repair fill safely?
A routed region with metal fill on M2 and M3, an ECO buffer and its new route drawn in, the fill shapes it now overlaps marked red, and the refilled result limited to the ECO window while fill elsewhere stays untouched.

Technical Explanation

  • IC Validator fills from the on-disk block, not the one in memory, so save_block (ICC2) comes first; otherwise ICV fills against the pre-ECO layout. Metal fill commands also need an IC Validator licence.
  • -auto_eco true (ICC2) compares the block with the version used in the previous fill run, or with the block named by -pre_eco_design (ICC2), then removes and refills only the modified regions and layers. It is allowed only when the change is below signoff.create_metal_fill.auto_eco_threshold_value (ICC2), default 20 percent.
  • A metal change also triggers removal and refill on the adjacent via layers, so no floating or hanging vias remain. A changed cell instance is treated conservatively as a change on all layers.
  • -mode replace (ICC2) removes and refills only where you point it and must be given layers, regions, nets or a slack threshold. For example, signoff_create_metal_fill -mode replace -select_layers {M1 M3} (ICC2) refills two layers and leaves the others alone.
  • -mode remove (ICC2) with no restriction removes all metal and via fill, TCD structures included. With -select_layers (ICC2) TCD structures stay unless signoff.create_metal_fill.tcd_fill (ICC2) is true. Removal can also honour NDRs with -remove_by_rule ndr (ICC2), for both fill styles.
  • -remove_by_rule drc_auto (ICC2) removes track-based fill shapes or vias that cause DRC violations after an ECO, plus floating connections left behind by that removal.
  • For one stubborn violation, edit fill by hand: remove_shapes (ICC2) deletes a fill shape and set_attribute (ICC2) on its bbox resizes it. Density can drop in that window, so run signoff_report_metal_density (ICC2) afterwards.
  • Fill adds capacitance to nearby wires, so any refill near critical nets is followed by extraction with real fill and a timing check.

What To Check

  • save_block (ICC2) ran after the ECO and before the fill command.
  • The changed area estimated against the 20 percent auto-ECO threshold.
  • TCD structures intact after a layer-restricted remove, or deliberately restored after a full remove.
  • Density in and around the ECO windows after refill.
  • Signoff DRC and a timing rerun with real metal fill extraction.

Command Checks & Actions

ICC2 (icc2_shell)save_block

Writes the post-ECO block to disk, which is what IC Validator reads.

ICC2 (icc2_shell)signoff_create_metal_fill -auto_eco true

Removes and refills fill only in regions and layers changed since the last fill run.

ICC2 (icc2_shell)signoff_create_metal_fill -mode replace -select_layers {M2 M3 M4}

Explicit alternative: removes and refills fill on the ECO layers.

ICC2 (icc2_shell)signoff_create_metal_fill -remove_by_rule drc_auto

Removes track-based fill shapes and vias that now violate DRC, plus the floating pieces left behind.

ICC2 (icc2_shell)signoff_report_metal_density

Reports metal density so the refilled windows can be checked against the density rules.

ICC2 (icc2_shell)signoff_check_drc

Signoff DRC on the final layout, fill included.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Auto-ECO refills only the changed windows, about 2% of the block, density in them stays within the rule, signoff DRC shows 0 fill errors, and WNS moves by 2 ps or less and stays positive.
  • Suspicious (illustrative): The change estimate sits near 20 percent so auto-ECO is refused, or a refilled window lands just above minimum density.
  • Hard stop: The block was not saved before the fill command: fill follows the pre-ECO layout, and signoff DRC skips that older fill view unless set_app_options -name signoff.check_drc.fill_view_data -value read (ICC2) is set. Or a full -mode remove (ICC2) removed TCD structures that were never restored.

Common Mistake

The Trap: Running signoff_create_metal_fill -mode remove (ICC2) on the whole block to start clean after a two-cell ECO. It removes every fill shape and the TCD structures, the full refill takes hours, and the new fill changes coupling on every critical net, so timing that was signed off must be redone for the whole block instead of one window.

What The Interviewer Is Testing

  • Knowing the incremental options, -auto_eco true (ICC2) and -mode replace (ICC2), and the 20 percent threshold.
  • Awareness that a plain -mode remove (ICC2) also removes TCD structures.
  • Remembering to save the block, because IC Validator reads the on-disk design.

Follow-up Question & Model Response

"Why does auto-ECO refill via layers you did not touch?"

Candidate Model Response: Removing metal fill on one layer in the ECO area would leave via fill above or below it with nothing to land on. The tool therefore removes and refills the adjacent via layers too, so no floating or hanging vias remain. If a cell instance changed, it is conservative and treats all layers as changed.

Practical Example

Tapeout Scenario: A tapeout-week ECO adds 14 buffers and reroutes 22 nets on M2 to M4 inside two windows, about 2% of the block (illustrative). The block uses track-based fill, so after save_block (ICC2), signoff_create_metal_fill -track_fill generic -auto_eco true (ICC2) removes and refills M2 to M4 and the adjacent via layers V1 to V4 in those windows only. Signoff DRC then shows 3 track-fill spacing errors next to the new routes, cleared by -remove_by_rule drc_auto (ICC2). Density in the two windows reads 31% and 34% against a 25% minimum. Real-fill extraction and PrimeTime show WNS moving from +6 ps to +4 ps, still positive.

PnR Flow Mentor Guide

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.

PnR Flow Physical Design Mentor Guide — eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out. →