BeginnerQuestion 173 of 187Source: Synopsys ICC2 Implementation User Guide X-2025.06-SP2: IC Validator In-Design (Automatically Fixing Isolated Vias)

What is an isolated via, and why is it a yield risk?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

An isolated via is a via with no neighbouring via close enough to meet the technology's requirement. Lithography and etch are tuned for vias that sit in a pattern, so a lone cut prints with more size variation and is more likely to come out resistive or open, and one open via on a signal net is a dead net. In ICC2 you set the search range per via layer and run signoff_fix_isolated_via -check_only true (ICC2) before you let the tool change anything.

Technical Reference DiagramWhat is an isolated via, and why is it a yield risk?
Top view of a via layer showing a cluster of vias that each have a neighbour inside the search radius and one lone via whose dashed search circle is empty, marked red, with a small ledger giving the per-layer range and the before and after isolated-via counts.

Technical Explanation

  • The check is about neighbours, not connectivity. A via can pass LVS and still be flagged, because the rule only asks whether another via exists within a distance on the same via layer.
  • The foundry sets that distance per via layer and the value is node-specific and confidential. You give it to ICC2 through signoff.fix_isolated_via.isolated_via_max_range (ICC2), which is required and has no default. The syntax is { {via_layer1 distance1} ... } with mask names such as via1 and distances in microns.
  • The command runs IC Validator through ICC2, so the IC Validator environment must be set up first and an IC Validator licence is needed.
  • With -check_only true the command writes a summary report of isolated vias on each via layer and changes nothing. Without it, the default is to check and fix.
  • Fixing works in steps: insert track-based dummy fill around each isolated via (existing fill is ignored unless you use signoff_fix_isolated_via -update_track_fill true (ICC2) with the earlier run's parameter file in -track_fill_runset_include_file (ICC2)), add fixing vias, then remove the fill shapes it did not use.
  • Fixing vias are tried in a fixed priority order: first a via between an existing non-wide net shape and a fill shape, then extending the line end of a non-wide net shape and placing a via between the extension and a fill shape, and last a via between a wide metal shape and a fill shape. Routing rules, including double patterning, are honoured.
  • The avoid_net_types option of signoff isolated-via fixing defaults to {clock pg}, so clock and PG nets are left alone. The block is not saved unless you add -save_design true or run save_block (ICC2). In very congested or very sparse blocks some vias may stay unfixed; they land in signoff_fix_isolated_via.err (ICC2).

What To Check

  • Per-layer counts in the check-only summary report, before and after the fix run.
  • That the range values match the current foundry deck revision for every via layer in the stack.
  • Where the leftover vias in signoff_fix_isolated_via.err (ICC2) sit: congested channels, sparse areas, or clock and PG nets.
  • A clean signoff_check_drc (ICC2) rerun over the fixed regions.

Command Checks & Actions

ICC2 (icc2_shell)set_app_options -name signoff.fix_isolated_via.isolated_via_max_range -value {{via1 0.6} {via2 0.6}}

Required: sets the neighbour search distance in microns for each via layer (illustrative values; use the foundry's).

ICC2 (icc2_shell)report_app_options signoff.fix_isolated_via.*

Confirms the range, avoided net types and run directory before the run.

ICC2 (icc2_shell)signoff_fix_isolated_via -check_only true

Checks only and writes a per-layer summary of isolated vias without editing the layout.

ICC2 (icc2_shell)signoff_fix_isolated_via -save_design true

Checks and fixes, then saves the block to disk.

ICC2 (icc2_shell)signoff_check_drc

Reruns signoff DRC so the new vias and fill are proven not to add violations.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Check-only after fixing reports 0 on every via layer, for example via1 180 to 0 and via2 95 to 0, and the DRC rerun is clean.
  • Suspicious (illustrative): A small residue clustered in one place, such as 11 vias on via3 in a macro channel, or a layer showing zero because its range was never set.
  • Hard stop: New DRC violations created by fixing vias, or a run made with ranges from an older deck revision that the foundry's check then contradicts.

Common Mistake

The Trap: Copying the isolated-via ranges from the previous project's setup. The new deck tightened via2 and via3, the check reports zero against the old distance, and the foundry's run on the submitted database flags several hundred lone vias. The block goes back through fill, fixing, DRC and extraction, costing a week at the end of the schedule.

What The Interviewer Is Testing

  • Whether you know isolation is a density rule on via neighbours, independent of connectivity.
  • Knowing the range option is required, per via layer, and that a check-only mode exists.
  • Awareness of the fixing priority and that clock and PG nets are avoided by default.

Follow-up Question & Model Response

"Why does the tool avoid clock and PG nets by default when it fixes isolated vias?"

Candidate Model Response: The avoid_net_types option of isolated-via fixing defaults to {clock pg}. Clock nets are balanced for skew, and a line-end extension or extra via changes their RC after the tree has been signed off. PG nets are built by grid rules and feed IR and EM analysis, so editing them quietly would change results you already reviewed. For an isolated via on a clock net, change the list on purpose and recheck clock timing, or fix it by hand.

Practical Example

Tapeout Scenario: (illustrative) Ranges are set to 0.6 um on via1 to via4. Check-only reports via1 180, via2 95, via3 40 and via4 5, so 320 in total. The fix run clears 309 and leaves 11 on via3 in a congested channel between two macros. Those 11 are fixed by hand with short jogs, check-only then reports 0 on every layer, and signoff_check_drc (ICC2) is clean.

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. →