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

What is a GCell, and how is its routing capacity calculated?

From PDVerse PnR Interview Handbook Ā· pdVerse Mentor Guide

Short Answer

A GCell (global routing cell, or GRC) is one tile of the coarse grid the global router works on. Its capacity is how many nets can cross it in one direction, which comes from how many tracks fit: the number of layers running that way times the cell size divided by the track pitch. The router compares demand against that capacity in every GCell to decide where congestion is.

Technical Reference DiagramWhat is a GCell, and how is its routing capacity calculated?
One global routing cell with its horizontal tracks drawn and counted, the pitch dimensioned once, and a ledger showing the capacity calculation giving 11 tracks.

Technical Explanation

  • Global routing divides the block into rectangles with terminals on all sides. Each rectangle is a GCell. Nets are assigned to chains of GCells without any real geometry.
  • Capacity is counted per direction. Horizontal capacity depends on the GCell height and the horizontal layers; vertical capacity depends on the GCell width and the vertical layers.
  • The formula C = nĀ·h/(w+s) is just counting tracks. h/(w+s) is how many tracks fit on one layer, and n multiplies that by the number of layers running in that direction.
  • Real capacity is usually lower than the formula. PG straps, routing blockages, pins and macro obstructions take tracks away, which is why a GCell over a PG strap can show a capacity of zero.
  • Demand is the number of nets that global routing wants to push across a GCell edge. When demand is higher than capacity, the difference is overflow.
  • Layers you exclude with set_ignored_layers add nothing to capacity, which is one reason min and max routing layers must be set before placement, when congestion is first estimated.

Formula Or Decision Rule

  • Capacity per direction: C = n Ā· h / (w + s)
  • n = number of routing layers in that direction, h = GCell height for horizontal tracks (use width for vertical), w = minimum wire width, s = minimum spacing. w + s is the track pitch.
  • Rule: for routing to complete without DRCs, demand must stay at or below capacity in every GCell.

What To Check

  • The layer pitch in the technology file for each routing layer, and its preferred direction.
  • Which layers are excluded by set_ignored_layers.
  • In the congestion map, zoom in on one GCell edge to read demand over supply, for example "18/9".
  • Whether a GCell shows zero capacity because of a PG strap or blockage (the "Blocked" bin in the histogram).

Command Checks & Actions

ICC2report_ignored_layers

Shows the min and max routing layers and any layers ignored for RC and congestion estimation.

ICC2route_global -congestion_map_only true

Builds the congestion map, which holds demand and capacity per GCell edge.

ICC2report_congestion

Reports overflow totals and the number of overflowing GCells per layer.

Healthy, Suspicious & Hard-stop Results

  • Healthy (illustrative): Demand at or below capacity in every GCell; the worst edges sit at 80 to 90% of their tracks.
  • Suspicious (illustrative): A few edges at exactly 100% or 1 to 2 tracks over, spread out rather than clustered.
  • Hard stop: GCells with zero capacity where signal pins sit, or a cluster where demand exceeds capacity by several tracks.

Common Mistake

The Trap: Calculating capacity from the full GCell size and forgetting the PG network. On a block with a dense M4 and M5 strap pattern, a quarter of the vertical tracks may be taken by power. The engineer's hand calculation says the channel is fine, the congestion map says it is overflowing, and the congestion map is right.

What The Interviewer Is Testing

  • Whether you can derive capacity from pitch rather than quoting a number.
  • Do you remember capacity is per direction and per layer set?
  • A strong answer shows you know what reduces real capacity below the formula.

Follow-up Question & Model Response

"What happens to capacity if you change the GCell size?"

Candidate Model Response: Capacity scales with the cell size in that direction, so doubling the height doubles the horizontal track count. Demand also grows, because more nets fall inside a bigger cell. The ratio is what matters. Bigger cells hide local hot spots by averaging them out, and smaller cells show them more clearly but make global routing slower. You read the overflow ratio, not the raw capacity number.

Practical Example

Tapeout Scenario: A GCell is 1.6 um tall (illustrative). Horizontal layers are M3 and M5, each with a 0.08 um minimum width and 0.08 um spacing, so a 0.16 um pitch. One layer fits 1.6 / 0.16 = 10 tracks, and two layers give C = 2 Ɨ 10 = 20. One M5 PG strap covers 9 of those tracks, leaving 11. If global routing wants 14 nets across that edge, demand 14 against capacity 11 gives an overflow of 3, and that is the number the congestion map shows as "14/11".

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