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

How do you debug a congestion hotspot after global routing?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

First find it and measure it: which GCells, which layers, which direction and by how much. Then work out why: too many pins in a small area, a narrow channel between macros, too much wrong-way demand, or tracks lost to blockages or PG. The fix depends on the cause, so the diagnosis is most of the work.

Technical Reference DiagramHow do you debug a congestion hotspot after global routing?
Two GCells between two macros drawn with demand against capacity and overflow in red, beside the relieved version after cell spreading with demand within capacity.

Technical Explanation

  • Start with the congestion map and report_congestion to locate the hot spot and see whether it is horizontal, vertical or both. report_congestion -rerun_global_router refreshes the map with a map-only global route, and -boundary and -layers limit the report to the hot spot.
  • Pin density hot spots sit over clusters of small, pin-heavy cells. Demand is local and high on the lower layers. The fix is spreading cells with padding or lower local density.
  • Macro channel hot spots sit between macros, where many nets must pass through a narrow gap. The fix is widening the channel, reorienting macros so pins face the channel less, or letting routes pass over the macros.
  • Wrong-way demand shows as overflow in one direction on layers that mostly run the other way. Routing guides that limit non-preferred edges, or layer rebalancing, help here.
  • Resource loss shows as low capacity rather than high demand: GCells in the "Blocked" bin, or capacity cut by PG straps and routing blockages. The fix is in the PG plan or blockage definitions.
  • A track utilization routing guide, for example -horizontal_track_utilization 50, limits how much of an area the router fills, which spreads routes around a sensitive region. It is a soft constraint and does not change global routing capacity, so its effect shows up in detail routing, not in the congestion map.
  • After any fix, rebuild the map with route_global -congestion_map_only true and compare. Congestion fixes often move the problem next door, so look at the neighbouring GCells too.

What To Check

  • Location, direction and layers of the overflowing GCells.
  • Demand against capacity on the worst edges, for example "18/9".
  • Cell and pin density under the hot spot.
  • Blockages, PG straps and macro edges nearby that remove capacity.
  • The same area after the fix, plus its neighbours.

Command Checks & Actions

ICC2report_congestion -rerun_global_router -boundary {{300 200} {420 320}} -layers {M3 M4}

Refreshes the congestion map, then reports overflow for just this region and these layers.

ICC2route_global -congestion_map_only true

Rebuilds the full congestion map after a change, without keeping routes.

ICC2create_routing_guide -boundary {{300 200} {420 320}} -horizontal_track_utilization 50

Caps horizontal track usage in the area at 50% so routes spread elsewhere.

ICC2get_routing_guides *

Lists the routing guides in the block so you can confirm the new one exists.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): The hot spot clears to zero overflow and the neighbouring GCells stay below capacity.
  • Suspicious (illustrative): Overflow moves from one channel to the next one over, which means demand was pushed, not reduced.
  • Hard stop: GCells with zero capacity where signal pins sit, or overflow driven by a macro placement that routing guides cannot solve.

Common Mistake

The Trap: Adding a track utilization guide to every hot spot without checking the cause. In a pin density hot spot the guide caps routing but leaves the same number of pins to reach, so detail routing fails at the pins instead. Spreading the cells would have fixed it.

What The Interviewer Is Testing

  • Whether you diagnose the cause before choosing a fix.
  • Can you tell demand problems from capacity problems?
  • A strong answer shows you re-check neighbours after the fix.

Follow-up Question & Model Response

"How can you tell a pin density hot spot from a channel hot spot on the map?"

Candidate Model Response: A pin density hot spot is usually a compact blob over standard cells, strongest on the lower layers, and its overflow drops quickly as you move away. A channel hot spot follows the shape of the gap between macros, often a long thin band, and affects the layers the through-nets use, often middle layers. Overlaying cell density and macro outlines on the congestion map usually makes it obvious in a minute.

Practical Example

Tapeout Scenario: After route_global, a 120 um by 120 um area between two SRAMs shows 2.3% of GCells overflowing on M3 and M4, with the worst edge at "18/11" (illustrative). The channel is only 14 um wide and carries 310 nets crossing between the macros. The team reorients one SRAM so its pins face the core instead of the channel, which removes about 90 crossing nets, and widens the channel to 20 um. route_global -congestion_map_only true then shows the worst edge at "10/11" and no overflow in the neighbouring area.

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