How do you read routing statistics after detail routing?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Look at three things: wire length per layer, the split between horizontal and vertical wiring, and via statistics including the double via rate. report_design -routing gives shape counts, wire length and via statistics, and report_wirelength gives length per layer and direction. Together they tell you whether the router used layers sensibly and how much yield protection the vias have.
Technical Explanation
report_design -routingreports final wiring statistics for signal and PG nets: shape counts and wire length per layer, the horizontal and vertical split, and totals.- The same report gives via statistics: how many of each simple via were used, the double via conversion rate per layer and for the block, and any custom vias.
report_wirelengthcovers signal and clock nets by default, not PG, and has two tables: wire length per layer, split by global and detailed routing, and wire length by direction.- In
report_wirelength, "Virtual" is the estimated length before real routing, and it stays in the report even afterroute_auto. "BestAvailable" is the sum of all nets' lengths at whatever stage each net is in. - A healthy layer profile uses lower layers mostly for short local connections and upper layers for long nets. A lot of long wire on M2 usually means upper layers were blocked or congested.
- The double via rate in
report_designincludes PG vias, so it will differ from the signal-only rate printed during redundant via insertion.
What To Check
- Wire length per layer, compared with the same block's previous run.
- Horizontal and vertical totals against the layer direction plan.
- Via count per layer and the double via conversion rate.
- Whether "Virtual" and "BestAvailable" are close or far apart.
Command Checks & Actions
report_design -routingReports wire length, shape counts and via statistics, including the double via conversion rate.
report_wirelengthReports wire length per layer and per direction for signal and clock nets.
report_design -routing -hierarchicalReports routing statistics across the whole physical hierarchy instead of only the top block.
Healthy, Suspicious & Hard-stop Results
- Healthy (illustrative): Wire length rising gradually toward upper layers for long nets, no single layer far above its neighbours, and double via rate in line with the previous run.
- Suspicious (illustrative): A sudden jump in M2 or M3 wire length compared with the last run, or one via layer converting far worse than the rest.
- Hard stop: Total wire length far above the virtual estimate across the block, which means heavy detours and a routability problem.
Common Mistake
The Trap: Comparing the double via rate from report_design -routing with the rate from the redundant via insertion log. One includes PG vias and the other does not. The numbers disagree by several percent and the engineer thinks insertion regressed, when the two numbers simply count different vias.
What The Interviewer Is Testing
- Whether you can read a routing report for signs of trouble, not just totals.
- Do you know what "Virtual" and "BestAvailable" mean?
- A strong answer shows you know which via rate you are quoting.
Follow-up Question & Model Response
"What would it tell you if detailed wire length came out much higher than the virtual estimate?"
Candidate Model Response: It means real routes are much longer than the estimates used during placement and early optimization, usually because of detours around congestion, blockages or macros. Timing done on the estimates was optimistic. Look at where the extra length is, by layer and by area. If it is concentrated in one channel, that area is congested. If it is spread everywhere, the estimate itself may be poorly calibrated for this design.
Practical Example
Tapeout Scenario: A routed block's report shows (illustrative) M2 1.9 m, M3 3.1 m, M4 3.4 m, M5 2.2 m, M6 1.6 m of signal wire, 5.3 m horizontal and 6.9 m vertical, and a block double via rate of 71%. The previous run had M2 at 1.2 m. The extra 0.7 m on M2 traces to a new routing blockage on M4 to M6 over a macro that forced long nets down. Removing M4 from that blockage brings M2 back to 1.3 m.
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