Games / Read the die / Congestion

Congestion

Read the map, then answer. Some questions give you four readings to choose between, some show two maps and ask which is healthy, and some ask you to click the region itself. Keys 1 to 4 choose an option, a and b choose a map, and Enter moves on. Every answer is followed by a description of what the map shows and the numbers behind it. Progress is stored in this browser.

SourceEach image is a map the flow drew at the end of a real run. Some runs were broken on purpose and some were not, and the question is always what the picture says rather than whether something must be wrong with it.
All 11 maps in this family, described
  • What was done to this run?
    gcd on Nangate45, routing congestion after global routing

    Almost the whole core is orange, the level just below the top of the scale, with a green margin around the edge and a handful of isolated green tiles inside.

    Uniform heat across an entire core, rather than a hotspot, points at capacity rather than at any one part of the design: every tile lost the same fraction of its tracks. This run was held to metal1 through metal3 out of ten. A placement problem shows as a hot region, not a hot core.

  • Click a tile where the routing demand has reached the capacity.
    gcd on Nangate45, a healthy run with all ten layers

    Mostly green and olive, with four small deep-red tiles: one left of centre, one right of centre, one near the top, and one below the middle.

    A handful of tiles at capacity in an otherwise green map is the normal state of a routed design, not a problem. They are where several nets had to cross the same boundary, and the detailed router resolves them by detouring. What matters is whether they cluster: four scattered tiles route, a solid red region does not.

  • What is the repeating pattern?
    aes on Nangate45, routing congestion after global routing

    A regular grid of dark red blobs, roughly sixteen of them in rows and columns, separated by green channels, over an orange background.

    This cipher is built from identical parallel units, and the placer kept each one together because their internal connectivity is dense. The green channels between them are where almost nothing crosses. Structure in a congestion map is usually the architecture, and it is a sign the placer understood the design rather than a fault to fix.

  • Which of these is the harder block to route?
    the same design on two platforms, congestion after global routing

    On the left, mostly green and olive with four small deep-red tiles. On the right, deep-red tiles everywhere, joined into ribbons across the middle of the block, with green only at the edges.

    The right-hand one is the same design on sky130 at 92 percent utilization, against 62 on the left. Packing a block leaves the router fewer tracks between the cells, and the map fills with tiles at capacity. Two things differ here, the process and the density, and the density is what dominates: a design packed this hard is hard to route on any process.

  • Click a tile where the routing demand has reached the capacity.
    gcd on sky130 high density, packed to 92 percent utilization

    Deep-red tiles spread across the whole core, joined into ribbons through the middle, with a green margin at the edges.

    There are dozens to choose from here, against four on the same design at a sensible density, and they run together rather than sitting apart. A handful of scattered tiles is a detour; a connected region is a block the router may not finish. The shape of the red matters as much as how much of it there is.

  • Why is the congestion only in the middle?
    gcd on Nangate45 at an 8 percent utilization target, congestion after global routing

    A green field with a cluster of red and orange tiles in the middle where the cells are, and a faint regular scatter of orange across the empty area around it.

    Spreading a design over a larger die does not spread its connections. The cells stayed in a cloud and the traffic stayed with them, so a bigger die is not a fix for a congested block: it moves the same problem into a smaller fraction of a larger picture. Congestion follows cells, not area.

  • Global routing reported zero overflow and detailed routing finished with zero violations. So what are the warm tiles?
    gcd on ASAP7 (Arizona State University 7 nanometre predictive process design kit), routing congestion

    A coarse grid of tiles over the core, green and olive through the middle with a dozen orange and dark red tiles scattered through it, and a cool teal band around the outside.

    The colour in each tile is how much of that tile's wiring capacity the router asked for, and the scale stretches over whatever range the map happens to contain, so a block with nothing wrong still fills out the palette. The log settles it: the busiest layer, M2, is at 28.37 percent, the whole block uses 12.73 percent of its routing resource, and the maximum horizontal and vertical congestion is zero on every layer. Warm colours on a small block mean the scale is doing its job, not that the block is in trouble.

  • The macros hold no standard cells. Why do they read red?
    tinyRocket on Nangate45, routing congestion over a floorplan with two macros

    Deep red over most of the cell area. The two macros at the bottom read red as well, and a cool green channel runs around each of them, separating them from the red field above.

    A macro is an obstruction, not empty ground. Its own metal fills the lower layers across the whole footprint, the router's grid marks those tracks unusable, and a tile with nothing left to give sits at the top of the scale whether or not a single signal ever goes there. The routing view of this same run settles that last part: almost nothing crosses these two macros. One wire clips a corner and the rest of the traffic goes around. The cool channel beside each macro is the other half of the story. That is the halo, with no cells to wire and every track free, so it reads as cool as anything inside the core. Neither colour is a fault. Global routing finished with zero overflow on all ten layers, at 62.40 percent on metal2 and 35.51 percent overall.

  • The green wedge has capacity to spare. Why does the router not use it?
    ibex on Nangate45, routing congestion after global routing

    A warm orange and red field over most of the core, with an even green wedge along the bottom right and a green band round the outside. The warm area has a ragged edge.

    Congestion follows demand and demand follows cells. Put the placement view of this run beside this one and the ragged warm edge traces the ragged edge of the cell blob exactly, which is worth knowing on its own: a congestion map hands you the floorplan for free. Spare capacity over bare silicon cannot be lent to the crowded middle. The only way to use it is to move cells into it, and that trades congestion for wire length on every net you stretch. Whether the trade is worth making is what the two maps together are for.

  • Click a band of green that a macro keep-out cleared.
    tinyRocket on Nangate45, routing congestion over a floorplan with two macros

    A hot orange and red field over the cells. Both macros read red, and beside each one, on its outer side, a band of green tiles separates it from everything else.

    The halo is the quietest routing on the block for the simple reason that there are no cells in it to wire. Two things are worth taking from that. Capacity in the halo is not free capacity, because nets only go where their cells are, and a cool band beside a hot block is not relief. And the width of that band is a number you chose. Shrink the halo and the green shrinks with it, the cells move closer to the macro, and the crowding at the macro edge is yours to deal with.

  • One of these runs was starved of routing layers. Which?
    the same design on two processes, routing congestion after global routing

    The left one is one warm colour almost everywhere, near the top of its scale, with a cool margin. The right one is green and olive with a dozen hot tiles scattered through it.

    The shape of the heat tells you which kind of problem you have. A shortage that applies to the whole block, such as taking its upper layers away, raises every tile at once and paints one flat colour. Local crowding leaves the background cool and puts peaks on top of it. So before reading any single tile, ask whether the map is flat or spiky. Flat sends you to the resources, the layer count, the track pitch, the die size. Spiky sends you to the placement. The left run was held to the lowest three layers and routed anyway, because the design is small. The right one had seven and used 12.73 percent of them.