IntermediateQuestion 149 of 162Source: Synopsys ICC2 Implementation User Guide: Routing

Postroute, concurrent or near-100% redundant vias: how do you escalate?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Start with postroute insertion, which almost every block uses. If that reaches about 80% and you need more, move to concurrent soft-rule insertion, which reserves space for second cuts while routing. Only if you already reach about 90% and still need more should you use near-100% insertion, because higher rates make DRC convergence and runtime worse.

Technical Reference DiagramPostroute, concurrent or near-100% redundant vias: how do you escalate?
Decision ladder: start with postroute insertion, move to concurrent soft-rule insertion only if the rate is at least 80%, and to near-100% insertion only if at least 90%.

Technical Explanation

  • Postroute insertion runs add_redundant_vias after detail routing and converts single vias where space already exists. It is cheap and has little effect on routing.
  • Concurrent soft-rule insertion sets route.common.concurrent_redundant_via_mode to reserve_space. The router reserves space for second cuts during routing, but the actual insertion still needs a postroute add_redundant_vias run.
  • Reserving space makes routing slower. It should be enabled before place_opt, so congestion estimation accounts for it.
  • The concurrent effort level defaults to low. Low and medium affect only global routing and track assignment; high also affects detail routing and can hurt DRC convergence.
  • Near-100% insertion sets the mode to insert_at_high_cost. Redundant vias become as important as hard design rules. If DRCs will not converge, Zroute relaxes the redundant via constraints automatically.
  • Near-100% is only supported during initial routing. During ECO routing, use the soft-rule ECO mode to keep the rate, and only if near-100% was used initially.
  • Very high rates may need lower floorplan utilization, because second cuts need space everywhere.

What To Check

  • The conversion rate after postroute insertion, total and per via layer.
  • DRC count and detail routing runtime after enabling each stronger mode.
  • Whether the block really has a rate requirement above what postroute achieved.
  • That the stronger mode was enabled before place_opt, not just before routing.

Command Checks & Actions

ICC2add_redundant_vias

Postroute insertion and the conversion rate report; the first step for every block.

ICC2set_app_options -name route.common.concurrent_redundant_via_mode -value reserve_space

Concurrent soft-rule mode: reserves space during routing, insertion still done postroute.

ICC2set_app_options -name route.common.concurrent_redundant_via_mode -value insert_at_high_cost

Near-100% mode: treats redundant vias as hard rules during initial routing.

ICC2report_design -routing

Reports the double via conversion rate per layer and for the block after each attempt.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Postroute insertion reaches the target, often 80 to 90%, with no new DRCs; no escalation needed.
  • Suspicious (illustrative): Soft-rule mode adding a few percent at a noticeable runtime cost; worth it only if the target requires it.
  • Hard stop: Near-100% mode on a congested block with DRCs that do not converge, or near-100% used during ECO routing.

Common Mistake

The Trap: Turning on near-100% insertion on a new block because "more vias is always better". Detail routing runtime doubles, DRCs plateau at several hundred, and the tool starts relaxing the rule anyway. Postroute insertion alone would have given 85%, which met the actual requirement.

What The Interviewer Is Testing

  • Whether you know the order and the 80% and 90% thresholds.
  • Do you know what each mode costs?
  • A strong answer shows you know near-100% is not for ECO routing.

Follow-up Question & Model Response

"Why should concurrent mode be enabled before place_opt?"

Candidate Model Response: Reserving space for second cuts reduces the effective routing capacity. If placement and its congestion estimate do not know about that, they optimize against more capacity than routing will have, and the block arrives at routing more congested than expected. Enabling it early lets congestion estimation include the reserved space, so placement spreads cells accordingly.

Practical Example

Tapeout Scenario: A block reaches 82% with postroute insertion (illustrative). Its reliability target is 90%, so the team enables reserve_space before place_opt and reruns. Detail routing takes 15% longer, and postroute insertion now reaches 91% with no new DRCs. A second block already at 93% is asked to reach 98%; the team tries insert_at_high_cost, sees DRCs stall at 600, and pushes back on the target instead of lowering utilization.

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