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

Which routing guide do you use for which problem?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Routing guides steer Zroute in an area without forbidding routing outright. Use preferred-direction-only or switch-preferred-direction guides to control direction, max-patterns guides to limit non-preferred-direction edges, track utilization guides to control density, access preference guides to prioritize areas, and river routing guides for tight channels. Zroute honours them, but they are softer tools than blockages.

Technical Reference DiagramWhich routing guide do you use for which problem?
Table matching each routing guide type to the problem it solves, with a small inset showing a track utilization guide spreading routes in one area.

Technical Explanation

  • -preferred_direction_only makes all nets in the boundary route only in each layer's preferred direction, which stops wrong-way jogs in a sensitive area.
  • -switch_preferred_direction swaps the preferred direction inside the boundary. It is useful over macros to reduce detours. Where it overlaps a preferred-direction-only guide, the switch guide wins, and it also overrides the layer's routing_direction attribute there.
  • -max_patterns limits how many times a pattern appears in the boundary. The only supported pattern is non_pref_dir_edge, and the layers you list in -layers must match those in -max_patterns.
  • -horizontal_track_utilization and -vertical_track_utilization cap the percentage of tracks the router may use in the area. The default is 100%.
  • -access_preference sets the strength of preferred areas for wires or vias, from 0 to 1. A strength of 1 is a hard requirement; once one is set, every access preference area with a strength below 1 is ignored.
  • -river_routing encourages routes to follow a contour on a single layer, useful in tight channels where orderly parallel routes use space best.
  • Pin access routing guides are a separate, derived type, created with derive_pin_access_routing_guides for hard macro pins.
  • Guides are honoured by Zroute but not by the Advanced Route tool, and a routing corridor wins over a guide if their settings conflict.

What To Check

  • get_routing_guides * lists every guide in the block, so nothing is left over from an old floorplan.
  • Routing density and DRCs inside and around each guide after detail routing.
  • Wrong-way segments and DRCs inside direction guides after detail routing.
  • Overlaps between guides, and which one takes precedence.

Command Checks & Actions

ICC2create_routing_guide -boundary {{0 0} {100 100}} -layers {M4} -preferred_direction_only

Forces preferred-direction routing on M4 inside the area.

ICC2create_routing_guide -boundary {{0 0} {100 100}} -layers {M1 M2} -switch_preferred_direction

Swaps the preferred direction of M1 and M2 inside the area.

ICC2create_routing_guide -boundary {{0 0} {100 100}} -horizontal_track_utilization 50 -vertical_track_utilization 30

Limits track usage to 50% horizontally and 30% vertically in the area.

ICC2get_routing_guides *

Returns every routing guide in the block so you can review them before routing.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Each guide exists for a named reason, the area it covers is clean after routing, and no DRC cluster moved next to it.
  • Suspicious (illustrative): A utilization guide that pushed crowding and DRCs to the edge of its boundary.
  • Hard stop: Guides left over from an old floorplan that no longer match the macros they were drawn for.

Common Mistake

The Trap: Using a switch-preferred-direction guide over a large area to relieve horizontal congestion. The guide turns vertical layers horizontal inside it, and vertical capacity collapses there. Vertical overflow appears where there was none, and the block ends up worse.

What The Interviewer Is Testing

  • Whether you match each guide type to a concrete problem.
  • Do you know the precedence rules between guides and corridors?
  • A strong answer shows you treat guides as scoped fixes, not global settings.

Follow-up Question & Model Response

"When would you choose a utilization guide over a routing blockage?"

Candidate Model Response: When routing in the area is allowed but you want less of it. A blockage removes the layer completely, which can block pins and push every net around the area. A utilization guide at, say, 50% still lets nets through but spreads them out, which helps crosstalk, local DRC density or a region you want to keep lightly routed. Use a blockage only when nothing may route there.

Practical Example

Tapeout Scenario: Over a 200 um wide SRAM (illustrative), M2 and M3 are blocked by the macro, while M4 and M5 pass overhead. Nets crossing the macro keep making wrong-way jogs on M4 and M5 near its edges and causing DRCs. The engineer adds a preferred-direction-only guide on M4 and M5 over the macro, which removes the wrong-way jogs, and a 60% horizontal utilization guide on the congested strip just below the macro. The utilization guide is a soft constraint for the router and does not change the global routing capacity numbers, but after detail routing the strip is visibly less crowded and DRCs at the macro edge fall from 140 to 9.

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