Placement
Global, legalization and detailed placement: rows and sites, timing- and congestion-driven placement, density, blockages and place-opt.
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.
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:
| Pin | x | y |
|---|---|---|
| A | 2 | 3 |
| B | 5 | 7 |
| C | 8 | 4 |
| D | 3 | 9 |
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.
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.
| Metric | What it tells you | Healthy target |
|---|---|---|
| Utilisation / density | How full the core is with cells | Uniform; often ~65-75% pre-route |
| Total wirelength (HPWL) | Overall length of all nets | As low as the other goals allow |
| Congestion (GR overflow) | Whether the router will have enough tracks | No or few overflowing gcells |
| Early WNS / TNS | Setup timing on the placed netlist | Close to closable; no huge outliers |
| Pin density | Local crowding of cell pins | Below the hotspot threshold |
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
| Command | Tool | Purpose |
|---|---|---|
| place_opt | ICC2 / Fusion Compiler | Global + legalize + detailed placement with optimisation |
| place_opt_design | Innovus | Run placement with concurrent timing/power optimisation |
| create_placement / refine_placement | ICC2 | Initial placement and incremental refinement |
| legalize_placement / check_legality | Both | Snap cells to legal sites and verify no overlaps |
| create_placement_blockage / set_keepout_margin | Both | Add blockages and macro halos |
| report_placement / report_congestion | Both | Density, utilisation and congestion after placement |
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.