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 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 truethe 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 trueor runsave_block(ICC2). In very congested or very sparse blocks some vias may stay unfixed; they land insignoff_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
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).
report_app_options signoff.fix_isolated_via.*Confirms the range, avoided net types and run directory before the run.
signoff_fix_isolated_via -check_only trueChecks only and writes a per-layer summary of isolated vias without editing the layout.
signoff_fix_isolated_via -save_design trueChecks and fixes, then saves the block to disk.
signoff_check_drcReruns 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
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