ExpertQuestion 112 of 121Source: Synopsys ICC2 Implementation User Guide: Routing

After routing you have 300 setup violations, 50 DRCs and SI noise failures. What order do you attack them in, and why?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Connectivity first, then DRCs, then timing with signal integrity included, then hold, and re-check DRC and antenna after every round of fixes. Opens and shorts make every other number meaningless. DRC fixes move wires and change parasitics, so timing fixed before DRCs is timing you will fix again.

Technical Reference DiagramAfter routing you have 300 setup violations, 50 DRCs and SI noise failures. What order do you attack them in, and why?
Ordered decision tree: opens and shorts first, then routing DRCs, then SI-aware setup, then hold, with loop-backs to re-check DRC and antenna after each fix wave.

Technical Explanation

  • Start with check_lvs and check_routes for opens and shorts. An open net has no real delay and a short merges two nets, so any timing number on those nets is meaningless.
  • Fix routing DRCs next. Clearing a spacing or short violation reroutes wires, and rerouting changes length, layers, vias and neighbours. Every one of those changes the parasitics timing depends on.
  • Then fix setup with signal integrity turned on. If noise failures and crosstalk delta delay are part of the problem, the timing you optimize against must include them, or route_opt fixes the wrong paths.
  • Treat noise failures as their own category. Glitch violations on quiet nets are fixed by upsizing victim drivers, spacing or shielding, which can also improve the setup picture on nearby paths.
  • Fix hold after setup. Setup fixes, especially upsizing, speed paths up and can create hold violations; hold fixes add delay and can create small setup violations, so hold goes last with a setup re-check.
  • After each wave of timing fixes, route_opt legalizes and ECO routes, which can bring DRCs or antenna violations back. Re-run check_routes each time.
  • The loop ends when a full pass changes nothing: connectivity clean, DRCs at zero, setup, hold and noise passing in every scenario.

What To Check

  • Opens and shorts from check_lvs -max_errors 0 and check_routes.
  • DRC count and types after each step.
  • Setup and hold per scenario with SI enabled, from report_qor.
  • Noise violations from report_noise.
  • Antenna violations after every rerouting step.

Command Checks & Actions

ICC2check_lvs -checks {short open} -max_errors 0

Step 1: connectivity, with no reporting cap.

ICC2check_routes

Step 2 and every loop: DRCs, opens and antenna.

ICC2route_eco -nets [get_nets {n1 n2}] -reroute modified_nets_only

Connects opens and reroutes changed nets with minimal disturbance.

ICC2route_opt

Step 3 and 4: SI-aware setup and hold fixing with legalization and ECO routing.

ICC2report_qor

Tracks setup and hold per scenario after each wave.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Each step leaves the earlier ones clean, and the final pass changes nothing.
  • Suspicious (illustrative): DRCs returning after each route_opt pass, usually in the same congested area.
  • Hard stop: Timing fixed on a database with opens or shorts, or with SI turned off.

Common Mistake

The Trap: Starting with the 300 setup violations because they look biggest. Two days of route_opt bring setup close to clean, then fixing the 50 DRCs reroutes 400 nets and puts 60 setup violations back. The DRCs should have gone first; they were cheaper to fix, and their reroutes undid the timing work anyway.

What The Interviewer Is Testing

  • Whether you order by dependency: what changes the inputs to the next check.
  • Do you keep SI on while fixing timing?
  • A strong answer shows you plan re-checks rather than treating each category as done once.

Follow-up Question & Model Response

"Would you ever fix timing before DRCs?"

Candidate Model Response: Only if the DRCs are confined to an area that no critical path goes through, and fixing them will not reroute nets outside it. For example, a handful of violations inside a macro channel carrying only slow control signals. Even then, you re-check timing after the DRC fix. The rule exists because DRC fixes move wires; where you can show they will not move the wires that matter, the order matters less.

Practical Example

Tapeout Scenario: A block after routing has 2 opens, 1 short, 50 DRCs, 300 setup violations at WNS -28 ps and 14 noise failures (illustrative). Day one: route_eco fixes the 2 opens, the short is rerouted, and an incremental detail routing pass clears 46 DRCs; 4 left in a macro corner go to pin access guides. With SI on, setup is now 270 violations at -26 ps. Two route_opt passes bring setup to 0 violations and hold to 3, which a third pass clears; the 14 noise failures drop to 0 after victim upsizing and one driver swap. check_routes shows 5 new DRCs from ECO routing, cleared incrementally. A final pass changes nothing, and the block exits.

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