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

What does overflow mean in a congestion report?

From PDVerse PnR Interview Handbook ยท pdVerse Mentor Guide

Short Answer

Overflow is how many more nets want to cross a GCell edge than there are tracks to carry them. If 14 nets want to cross and only 11 tracks exist, the overflow is 3. report_congestion adds overflow up across layers, and it ignores underflow, so a spare layer does not hide a crowded one.

Technical Reference DiagramWhat does overflow mean in a congestion report?
A GCell edge with 14 nets drawn against 11 available tracks, the three overflowing nets in red, and a ledger reading demand 14, capacity 11, overflow 3.

Technical Explanation

  • Global routing assigns every net to a chain of GCells. For each GCell edge it counts demand (nets crossing) and compares it to supply (available tracks).
  • Overflow is counted per layer and then summed. Underflow, spare tracks on another layer, counts as zero in the default mode. That is deliberate: detail routing cannot always move a net to another layer without vias and detours.
  • The report splits results by "Both Dirs", "H routing" and "V routing". Columns show total overflow, maximum overflow, and the number and percentage of GCells that overflow.
  • Only hard congestion is saved by default. If you want soft-rule congestion too, set route.global.export_soft_congestion_maps to true before global routing.
  • The GUI congestion map shows the same data. Zooming into an edge displays values such as "18/9", meaning 18 tracks needed and 9 available.
  • A "Blocked" bin in the histogram means some GCells have no routing resources at all, which usually points at PG or blockages rather than too many nets.

Formula Or Decision Rule

  • Per edge: overflow = demand โˆ’ capacity when demand is higher; otherwise 0.
  • Default total: sum of overflow over every layer. Underflow on one layer does not cancel overflow on another.
  • Alternative GUI mode: total demand minus total supply across layers, which does let underflow offset overflow and so reads more optimistic.

What To Check

  • Total overflow and the percentage of overflowing GCells for "Both Dirs".
  • Which direction carries the overflow: horizontal, vertical or both.
  • Maximum overflow on a single edge, since one edge at +8 is worse than eight edges at +1.
  • Whether overflowing GCells cluster near macros, channels or high pin density.

Command Checks & Actions

ICC2report_congestion

Reports overflow totals, maximum overflow and overflowing GCell counts per layer and direction.

ICC2route_global -congestion_map_only true

Rebuilds the congestion map without keeping routes, after a placement or floorplan change.

ICC2report_congestion -rerun_global_router -boundary {{0 0} {200 200}} -layers {M3 M4}

Refreshes the congestion map, then reports overflow for one region and layer set.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Overflow 0 on every layer; the fullest GCells sit near 90% of capacity.
  • Suspicious (illustrative): Fewer than 0.5% of GCells overflowing, each by 1 or 2 tracks, spread across the block.
  • Hard stop: Any GCell in the "Blocked" bin that holds signal pins, or a contiguous cluster overflowing by several tracks.

Common Mistake

The Trap: Switching the GUI to "total demand minus total supply" because it shows smaller numbers, then reporting the block as routable. That mode lets underflow on M6 cancel overflow on M2. The router cannot use M6 for a pin-level M2 connection for free, and detail routing then fails in the places the default mode flagged.

What The Interviewer Is Testing

  • Whether you can read overflow as demand minus capacity, with a real example.
  • Do you know why underflow is ignored by default?
  • A strong answer shows you look at distribution and clustering, not just the total.

Follow-up Question & Model Response

"Can report_congestion show smaller numbers than the global router printed?"

Candidate Model Response: Yes, slightly. The tool rounds congestion down before saving the map, so the report can look a little more optimistic than the live route_global summary. The difference is small and does not change which areas are hot. If the two disagree by a lot, the map is probably stale from an older placement, and you should rebuild it before trusting either.

Practical Example

Tapeout Scenario: Using the example from the ICC2 documentation: M2 has demand 13 against supply 7, an overflow of 6. M4 overflows by 4. M6 has 3 spare tracks. In the default sum-of-overflow mode the GCell shows 6 + 4 = 10. In total-demand-minus-supply mode it shows 6 + 4 โˆ’ 3 = 7. The block owner should plan from the 10, because the 3 spare M6 tracks cannot absorb short M2 pin connections without extra vias and detours.

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. โ†’