Module 414 min

Placement

Global, legalization and detailed placement: rows and sites, timing- and congestion-driven placement, density, blockages and place-opt.

Pro Tip

Synthesis handed you a netlist: a bag of standard cells (gates and flip-flops) and the wires between them, with no positions. Floorplanning fixed the die, the pad ring, the power grid and the hard macros. Placement is the step that gives every one of those standard cells a real, legal (x, y) location inside the core rows, chosen so the design will make timing, stay routable, and fit the power and density budget. Get placement wrong and nothing downstream can save it: the clock tree, the routing and timing closure all inherit its decisions.

What placement decides

A good placement balances several goals at once: keep connected cells close so wires are short and fast (wirelength), spread cells out enough that the router has tracks to work with (congestion), respect the power grid and keep density uniform, and leave the timing-critical paths physically short. These goals fight each other, packing cells tight helps wirelength but creates congestion, so placement is really an optimisation, run in three passes: global, legalization, then detailed.

Standard-cell rows and the placement grid

The core is carved into horizontal rows, all the same height (a fixed number of routing tracks). Every standard cell in a library is built to that exact row height, so cells drop into rows like books onto shelves. Horizontally, cells snap to sites, the minimum placement grid unit. Rows abut and alternate their vertical orientation (flip), so neighbouring rows share the same VDD and VSS rails; that abutment is what lets the power rails run unbroken across the whole core.

Cells are equal height and snap to sites in rows; abutting rows share power rails; macros carry a keep-out halo (click to enlarge)

Global placement

Global placement finds rough positions for every cell that minimise total wirelength, usually measured as half-perimeter wirelength (HPWL) summed over all nets. Modern tools do this analytically (quadratic or nonlinear optimisation) or with force-directed spreading: nets pull connected cells together while a density force pushes cells apart so they do not all pile into one spot. At this stage overlaps are allowed and cells are not yet on legal sites, it is a fast, approximate layout that gets the big picture right.

Worked example: half-perimeter wirelength (HPWL)

HPWL is the workhorse wirelength estimate that global placement minimises. For one net, draw the smallest rectangle (the bounding box) that encloses all of its pins, then add the width and the height of that box: HPWL = (x_max - x_min) + (y_max - y_min). It is fast to compute and, for the two and three pin nets that dominate a netlist, very close to the real routed length.

Take a net with four pins at these placed coordinates, in microns:

Pinxy
A23
B57
C84
D39

The x values span 2 to 8 and the y values span 3 to 9, so HPWL = (8 - 2) + (9 - 3) = 6 + 6 = 12 microns. Now suppose the optimiser slides the cell holding pin D from (3, 9) to (3, 6): the y span shrinks to 3 to 7 and HPWL drops to (8 - 2) + (7 - 3) = 6 + 4 = 10 microns. Summed over hundreds of thousands of nets, thousands of small moves like this are exactly what global placement is doing when it drives down total HPWL.

Legalization

Legalization takes the overlapping global result and snaps every cell onto a legal site in a row with no overlaps, while moving each cell as little as possible. Minimal displacement matters: the global solution was near-optimal for wirelength, so large moves during legalization would throw that away. After legalization the placement is physically valid, every cell sits in a real row site.

Global placement allows overlaps to hit minimum wirelength; legalization snaps the cells onto legal row sites (click to enlarge)

Detailed placement

Detailed placement is the local clean-up pass. Working in small windows, it swaps neighbouring cells, shifts them along the row, flips orientation and fills gaps to squeeze out the last of the wirelength and relieve local congestion, all without breaking legality. It is the difference between a placement that is merely legal and one that is genuinely good.

Timing- and congestion-driven placement

Pure wirelength is not enough. Timing-driven placement puts higher weight on nets that sit on critical paths, so the optimiser pulls those cells closer and shortens the paths that actually limit frequency. Congestion-driven placement does the opposite where it must: in regions the global router flags as over capacity, it deliberately spreads cells out, trading a little wirelength for a design that can actually be routed. The two run together, which is why placement is where early timing and routability first become visible.

Density, blockages and cell padding

Uniform density keeps routing and power even and avoids local hotspots. Tools target a utilisation (say 70%) and use several tools to shape where cells may go:

  • Placement blockage (hard): a region where no standard cells may be placed at all, used to reserve channels or protect sensitive areas.
  • Soft / partial blockage: cells are allowed but density is capped (partial), or the region is only kept clear during coarse placement (soft), which is how you pre-empt congestion hotspots.
  • Macro halo (keep-out): a margin around each hard macro where no std cells go, leaving room for pins, power and routing.
  • Cell padding: extra spacing added around specific cells so the router has breathing room near dense pins.

Worked example: placement utilisation

Utilisation is how full the core is: the total area of the standard cells divided by the placeable core area (the core minus any macros and blockages). Say the core is 500 microns by 400 microns, a core area of 200,000 square microns with no macros, and the placed standard cells add up to 130,000 square microns. Utilisation = 130,000 / 200,000 = 0.65, or 65%. That leaves 35% white space for routing tracks, the buffers CTS and optimisation will add later, and legal wiggle room. Add an ECO that grows cell area to 150,000 square microns and utilisation climbs to 150,000 / 200,000 = 75%. Push much past that and the same block often turns congested and hard to route, which is why a common pre-route target is 65 to 75%.

Placement is not only about location. In the same step the tool runs place-opt: it buffers and resizes cells on long or slow nets, does high-fanout net synthesis (HFNS) to build small trees for reset, scan-enable and other big-fanout signals, and swaps pins, all so the numbers it optimises are realistic rather than based on the raw netlist. This is why a good placement already has decent early timing before CTS even starts.

Placement targets and reports

After placement you check the same handful of numbers in any tool. They tell you whether the placement is worth carrying into CTS and routing, or whether it needs another pass.

MetricWhat it tells youHealthy target
Utilisation / densityHow full the core is with cellsUniform; often ~65-75% pre-route
Total wirelength (HPWL)Overall length of all netsAs low as the other goals allow
Congestion (GR overflow)Whether the router will have enough tracksNo or few overflowing gcells
Early WNS / TNSSetup timing on the placed netlistClose to closable; no huge outliers
Pin densityLocal crowding of cell pinsBelow the hotspot threshold
Watch out

A placement can be perfectly legal and still be unroutable. Legality only means no overlaps and cells on sites; routability is about congestion. Always read the congestion map after placement, not just utilisation, a 60% dense block can still have a hotspot the router cannot solve.

Key placement commands

CommandToolPurpose
place_optICC2 / Fusion CompilerGlobal + legalize + detailed placement with optimisation
place_opt_designInnovusRun placement with concurrent timing/power optimisation
create_placement / refine_placementICC2Initial placement and incremental refinement
legalize_placement / check_legalityBothSnap cells to legal sites and verify no overlaps
create_placement_blockage / set_keepout_marginBothAdd blockages and macro halos
report_placement / report_congestionBothDensity, utilisation and congestion after placement
Note

Recap: placement gives every standard cell a legal home in the rows. Global placement minimises wirelength with overlaps allowed, legalization snaps cells to sites, and detailed placement cleans up locally, all steered by timing, congestion and density, with buffering and HFNS folded in so the result is genuinely routable and close to timing before CTS.