BeginnerQuestion 99 of 127Source: Synopsys ICC2 Implementation User Guide: Routing

What must be true before you start routing?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

The block has to be routable and roughly timing-clean before the router touches it. That means power and ground already routed, clocks built and propagated, estimated congestion acceptable, estimated timing close to zero slack, no max capacitance or transition violations, and a clean check_routability. Zroute also needs every design rule defined in the technology file, because that is the only place it reads rules from.

Technical Reference DiagramWhat must be true before you start routing?
Gate checklist of routing prerequisites with each item marked passed or blocked, one blocking item highlighted in red.

Technical Explanation

  • Zroute takes all of its design rule information from the technology file. If a spacing or via rule is missing there, the router will not honour it, and the error only appears later in signoff DRC.
  • Power and ground should already be routed, normally during design planning, before placement. Signal routing has to work around the PG straps and rails, so routing signals first and adding PG afterwards does not work.
  • CTS and its optimization should be complete, with clocks propagated. If the clock tree changes after signal routing, the router has to rip up and redo wires around it.
  • Estimated congestion must be acceptable. Global routing overflow is the router telling you there are not enough tracks. A hot spot at this stage will turn into a cluster of detail routing DRCs that refuse to converge.
  • Estimated timing should sit near 0 ns slack, and there should be no max capacitance or max transition violations. Routing adds delay; it does not remove it. A path that is already -50 ps before routing will be worse after.
  • check_routability should come back clean. It finds blocked standard cell and macro pins, pins outside the block boundary, off-grid pins and bad via definitions, all of which the router cannot fix.

What To Check

  • check_routability output: zero blocked ports, zero out-of-boundary pins, zero min-grid violations.
  • report_congestion: overflow total and the number of overflowing global routing cells per layer.
  • report_timing worst setup path on estimated parasitics, and its slack.
  • report_constraints -all_violators: any max transition or max capacitance violations.
  • check_legality: every cell on a legal site with no overlaps.

Command Checks & Actions

ICC2check_routability

Checks pin access, out-of-boundary pins, min-grid alignment and via definitions before routing starts.

ICC2report_congestion

Reports global route overflow per layer from the stored congestion map, or runs a congestion-map-only global route if none exists.

ICC2report_timing -delay_type max

Shows the worst setup path on estimated parasitics, so you know how much margin routing can eat.

ICC2report_constraints -all_violators

Lists max transition and max capacitance violations that must be fixed before routing.

ICC2check_legality

Confirms placement is legal; the router assumes cells sit on legal sites.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): check_routability clean, overflow 0 on every layer, worst setup slack at or above -5 ps, zero transition and capacitance violations.
  • Suspicious (illustrative): Fewer than 0.5% of global routing cells overflowing, or a few tens of picoseconds of negative slack that you can explain.
  • Hard stop: Any blocked pin reported by check_routability, PG not yet routed, or clocks still ideal. Stop and fix these before routing.

Common Mistake

The Trap: Starting routing on ideal clocks because "CTS is nearly done". Once the clock tree is inserted, the router has to reroute around new buffers and clock wires, and every timing number from the first routing run is thrown away. It costs a full routing run, often most of a day on a large block.

What The Interviewer Is Testing

  • Whether you know that the tech file is the router's only rule source.
  • Do you treat congestion and pin access as entry gates rather than routing problems?
  • A strong answer shows you can name the checking command for each prerequisite instead of listing the prerequisites from memory.

Follow-up Question & Model Response

"What does check_routability catch that report_congestion cannot?"

Candidate Model Response: report_congestion measures demand against supply in each global routing cell, so it tells you about crowding. check_routability looks at individual pins and definitions. It finds a pin that has no legal way out because a blockage or PG shape covers it, a pin outside the block boundary, and pins off the minimum grid. A block can have zero overflow and still have one blocked macro pin that will become an open net. You need both checks.

Practical Example

Tapeout Scenario: A block passes placement with overflow of 0.2% (illustrative). check_routability reports 14 blocked standard cell ports, all under one PG strap that was widened late. The team moves that strap by one track, reruns check_routability to zero, and only then launches routing. If they had skipped the check, those 14 pins would have shown up as open nets after an eight-hour route_auto, and incremental detail routing would not have fixed them.

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