IntermediateQuestion 146 of 162Source: Synopsys ICC2 Implementation User Guide: Routing

What is a routing corridor, and how strictly is it honoured?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

A routing corridor restricts specific nets to a region made of connected rectangles, optionally with a min and max layer per rectangle. Global routing treats it as a hard constraint, but track assignment and detail routing treat it as soft, so they may step slightly outside to fix a DRC. If a routing guide conflicts with a corridor, the corridor wins.

Technical Reference DiagramWhat is a routing corridor, and how strictly is it honoured?
An L-shaped routing corridor made of connected rectangles covering the pins of a net, with the net routed inside it and a small allowed excursion during detail routing.

Technical Explanation

  • You create a corridor with create_routing_corridor, giving a name, a boundary and optionally -min_layer_name and -max_layer_name. More rectangles are added with create_routing_corridor_shape, and nets are assigned with add_to_routing_corridor.
  • Path-based corridors are also possible, with -path and -width, and end cap styles of flush, full width or half width.
  • A net or supernet can belong to only one corridor, and the corridor must cover all pins of the nets assigned to it. Otherwise the net cannot be completed inside it.
  • The corridor must be contiguous. check_routing_corridors verifies that the region is connected and contains the pins of its nets.
  • Global routing keeps the nets strictly inside the corridor. Track assignment and detail routing treat it as soft, so a net may leave it by a small amount to fix a design rule violation.
  • Where a routing guide overlaps a corridor with conflicting settings, the corridor takes precedence.
  • Corridors are for a small number of nets that must follow a planned path, such as a bus between two blocks. Using them widely makes routing much harder.

What To Check

  • check_routing_corridors result for each corridor: contiguous and covering all pins.
  • Which nets are assigned, from report_routing_corridors.
  • After routing, whether any assigned net left the corridor, and by how much.
  • Congestion inside the corridor, since all its nets compete for the same space.

Command Checks & Actions

ICC2create_routing_corridor -name bus_rc -boundary {{10 10} {20 35}} -min_layer_name M2 -max_layer_name M4

Creates the first rectangle of the corridor with a layer range.

ICC2add_to_routing_corridor bus_rc [get_nets {bus[0] bus[1]}]

Assigns the nets to the corridor.

ICC2check_routing_corridors bus_rc

Checks that the corridor is contiguous and covers the pins of its nets.

ICC2route_group -nets [get_nets {bus[0] bus[1]}]

Routes the corridor nets as a group.

ICC2report_routing_corridors

Reports corridors and their nets.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): check_routing_corridors clean, nets routed inside the corridor, with at most small excursions near pins.
  • Suspicious (illustrative): Several nets leaving the corridor during detail routing, which means it is too narrow for them.
  • Hard stop: A corridor that does not cover all pins, or one that is not contiguous. Global routing cannot complete it.

Common Mistake

The Trap: Drawing a corridor that stops a few microns short of one receiver pin. Global routing treats the corridor as hard, so it cannot reach the pin at all, and the net is left open. check_routing_corridors would have reported the missing pin before routing.

What The Interviewer Is Testing

  • Whether you remember the hard and soft behaviour by routing stage.
  • Do you know the one-corridor-per-net and cover-all-pins rules?
  • A strong answer shows you know corridors win over guides.

Follow-up Question & Model Response

"Why is a corridor only soft during detail routing?"

Candidate Model Response: Global routing works on GCells, where keeping a net inside a region is cheap and always possible if the corridor is valid. Detail routing works on exact geometry and has to satisfy spacing and via rules; a hard boundary could leave a DRC with no legal fix. Making it soft lets the router step out by a small amount to resolve a violation, while still keeping the net on its planned path almost everywhere.

Practical Example

Tapeout Scenario: A 16-bit bus must run from an interface block along the left edge and then across to a macro (illustrative). The engineer builds an L-shaped corridor from two rectangles, M4 to M6, assigns the 16 nets, and runs check_routing_corridors, which reports that bit 15's receiver pin sits 2 um outside the second rectangle. After extending it, the check passes and route_group -nets routes all 16 nets inside. Detail routing moves two segments 0.2 um outside the corridor at the macro pins to clear spacing violations, which the soft behaviour allows.

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