Module 99 min

Congestion Analysis and Fixes

Why routing fails, and how to find the cause

Congestion is the single most common reason a design will not route, and chasing it is a core physical-design skill. The key insight: congestion is almost always created upstream, in the floorplan or placement, not in the router.

What congestion actually is

The chip is divided into a grid of small regions (global routing cells). Each region has a limited number of routing tracks on each metal layer (the supply). The nets that need to pass through it are the demand. When demand exceeds supply in a region, the leftover is overflow, and that region is congested. Enough overflow and the router cannot legally connect everything.

Reading a congestion map

Tools draw a congestion map: a heat picture of the chip with hot spots where demand exceeds supply. You read it before committing to detailed routing. A few isolated warm cells are fine; large red regions mean the design will not route cleanly and must be fixed first.

The real causes

CauseWhy it congests
Utilization too highCells packed tight, no room for wires
Poor macro placementMacros force routes into narrow channels
High-fanout or bus-heavy logicMany wires crowd one region
Pin-dense cells clusteredLocal pin access demand spikes

How to fix it

  • Reduce utilization in the hot region (cell padding or a soft blockage) to give the router room.
  • Improve the floorplan and macro placement so routes are not funneled.
  • Spread the clustered cells causing the local spike.
  • Restructure or split very high-fanout nets.
Pro tip

the senior instinct: when routing congests, do not first reach for router options, go back and look at the floorplan and placement. Fixing congestion at its source is faster and cleaner than asking the router to perform a miracle. Say that in an interview and you sound like someone who has actually closed a design.

Watch out

congestion and timing can pull against each other. Spreading cells to relieve congestion lengthens wires and can hurt timing; packing for timing can re-create congestion. Good PD balances the two, iterating rather than over-optimizing one.