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

Late in the flow, how do you stop the router from disturbing already-clean nets?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Late in the flow, you decide which nets the router is allowed to move. In ICC2 the physical_status attribute on a net sets its rerouting mode: locked freezes it, minor_change allows only small changes, and unrestricted is the default. Combine that with ECO routing limited to modified nets, and clean routing stays as it was.

Technical Reference DiagramLate in the flow, how do you stop the router from disturbing already-clean nets?
A hatched frozen region of locked nets with one ECO net routed around it, and a ledger of nets frozen, nets allowed minor changes and nets rerouted.

Technical Explanation

  • By default Zroute can reroute any net it needs to. Late in the flow that is risky, because timing and signal integrity were closed on the existing wires.
  • Setting physical_status to locked freezes a net: routing will not touch it. A frozen net is also skipped by check_routes by default, so check it explicitly.
  • Setting it to minor_change allows only small adjustments, enough to fix a nearby violation while keeping the existing route largely in place. unrestricted restores the default.
  • route_eco -reroute modified_nets_only restricts ECO routing to the nets that actually changed, which is meant for very small ECOs. The alternatives, modified_nets_first_then_others and any_nets, allow progressively more disturbance.
  • In route_opt, size-only modes such as route_opt.flow.size_only_mode set to true_footprint avoid legalization and ECO routing entirely for the final fixes.
  • Freezing has a price. Every locked net is an obstacle the router cannot move, so if too much of an area is frozen, an ECO net may have no legal path and DRCs will not converge.

What To Check

  • How many nets are locked or minor-change, and where.
  • Nets rerouted by the last ECO, compared with the nets you meant to change.
  • DRCs on locked nets, checked explicitly since the default check skips them.
  • Convergence of ECO routing near frozen areas.

Command Checks & Actions

ICC2set_attribute -objects [get_nets crit_*] -name physical_status -value locked

Freezes the critical nets so later routing will not touch them.

ICC2set_attribute -objects [get_nets bus_*] -name physical_status -value minor_change

Allows only small changes on the bus nets.

ICC2route_eco -nets [get_nets eco_*] -reroute modified_nets_only

Routes only the changed nets.

ICC2check_routes

Checks DRCs and opens after the ECO; add frozen shapes explicitly if locked nets must be covered.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): ECO changes confined to the modified nets, frozen nets unchanged and clean, and no new DRCs.
  • Suspicious (illustrative): ECO routing taking many iterations near a frozen area, which means the freeze is too tight.
  • Hard stop: Locked nets carrying DRCs no one sees, or a broad freeze that leaves an ECO net unroutable.

Common Mistake

The Trap: Locking every net in the block before a small ECO "to be safe". The ECO net has no legal path through the frozen routing, so it stays open, and check_routes also skips all the locked nets. The safe version locks only the timing-critical and clock nets and sets the rest to minor change.

What The Interviewer Is Testing

  • Whether you know how rerouting is controlled in ICC2, and at what granularity.
  • Do you understand the trade-off between protection and routability?
  • A strong answer shows you remember that frozen nets drop out of default checks.

Follow-up Question & Model Response

"How would you choose between locking a net and marking it minor change?"

Candidate Model Response: Lock nets whose exact geometry matters, for example clock trunks, matched-length buses or nets closed at the edge of timing, where any movement risks a failure. Use minor change for nets that should keep their path but can tolerate small adjustments, which gives the router room to fix a nearby DRC. Everything else stays unrestricted. The fewer nets you lock, the easier the ECO will converge.

Practical Example

Tapeout Scenario: A late functional ECO changes 8 nets in a block where 2,400 nets were closed with under 5 ps of slack (illustrative). The engineer locks the 160 clock nets and the 240 tightest data nets, sets 2,000 nets near the ECO to minor change, and runs route_eco -reroute modified_nets_only on the 8. ECO routing converges in 6 iterations and 3 minor-change nets get small jogs to clear spacing. A check including frozen shapes shows the locked nets untouched and clean, and timing moves by under 1 ps outside the ECO paths.

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