What does chasing near-100% redundant vias cost, and how do you protect timing?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Near-100% insertion treats redundant vias as hard design rules during routing, which costs runtime, sometimes a lot, and makes DRC convergence harder. It only works during initial routing, not ECO routing, and Zroute relaxes it automatically if DRCs will not converge. Timing is protected with the timing-preserve options on add_redundant_vias, but only at the very end, because using them early crushes the via rate.
Technical Explanation
- Setting
route.common.concurrent_redundant_via_modetoinsert_at_high_costgives redundant vias the same priority as other hard rules during routing. - On congested blocks runtime can rise very sharply, and DRCs can plateau because every connection now needs space for a second cut.
- If DRCs do not converge, Zroute relaxes the redundant via constraints automatically. So a near-100% run on a crowded block may not deliver near-100% anyway, after paying the runtime.
- It is supported only during initial routing. For ECO routing, use the soft-rule ECO mode to preserve the rate, and only when near-100% was used initially.
- Very high rates can also reduce signal integrity margin and may require lower floorplan utilization to leave room everywhere.
- Redundant vias change parasitics. On critical nets, the geometry changes around inserted vias can shift timing slightly.
add_redundant_viashas-timing_preserve_setup_slack_threshold,-timing_preserve_hold_slack_thresholdand-timing_preserve_netsto keep insertion away from critical nets. Use these only at the end, after rate and timing have both converged, or the rate drops severely.
What To Check
- The via rate achieved in each mode, and whether it met the requirement.
- Detail routing runtime and DRC curve with near-100% enabled.
- Whether Zroute relaxed the rule during the run.
- Timing on critical nets before and after the final insertion.
Command Checks & Actions
set_app_options -name route.common.concurrent_redundant_via_mode -value insert_at_high_costEnables near-100% hard-rule insertion for initial routing.
add_redundant_vias -timing_preserve_setup_slack_threshold 0.02 -timing_preserve_hold_slack_threshold 0.01Final insertion that skips nets at or below 20 ps setup or 10 ps hold slack (library time units in ns, illustrative).
report_design -routingReports the final double via conversion rate by layer.
report_qorConfirms timing after the final insertion.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Near-100% reached on a block that needs it, with DRCs converging and timing clean after a final timing-preserving pass.
- Suspicious (illustrative): Runtime doubling and the rule being relaxed, so the gain over soft-rule mode is a few percent.
- Hard stop: Near-100% on a congested block with DRCs stuck, or timing-preserve thresholds used from the first insertion.
Common Mistake
The Trap: Adding timing-preserve thresholds to every add_redundant_vias call from the start. Most nets fall under the threshold early in the flow, when timing is not yet closed, so they are skipped. The final rate lands at 55% instead of 90%, and the thresholds were protecting timing that was going to change anyway.
What The Interviewer Is Testing
- Whether you can list the concrete costs of near-100% mode.
- Do you know it is initial-routing only and what replaces it in ECOs?
- A strong answer shows you use timing-preserve options at the right point.
Follow-up Question & Model Response
"How do you tell a customer their 99% target is too expensive?"
Candidate Model Response: Show the data: the rate from postroute insertion, the rate from soft-rule mode, and what near-100% mode did on this block, including runtime, the DRC curve and whether the tool relaxed the rule. If the block reached 93% with soft-rule mode and near-100% took twice the runtime for 95% with DRCs still open, the cost is clear. Then ask which vias actually matter, for example clocks and high-current nets, where targeted redundant vias in an NDR may meet the real goal.
Practical Example
Tapeout Scenario: A block reaches 91% with soft-rule mode (illustrative). The customer asks for 98%. With insert_at_high_cost, detail routing time goes from 7 to 17 hours, DRCs plateau at 240, and the log shows the rule was relaxed on two layers. Final rate: 95%. The team instead lowers utilization in the two densest areas, reruns soft-rule mode with postroute insertion for 95.5%, and a final timing-preserving add_redundant_vias pass keeps 95.5% while leaving 1,800 near-critical nets untouched. The gain came from the lower utilization, not from the final pass. Timing moves by under 1 ps.
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