ICC2 Floorplanning: Where Most Engineers Go Wrong
A surprising number of backend problems are floorplan problems wearing a disguise. Congestion, timing that will not close, IR drop that appears late, all of these often trace back to decisions made in the first hour of the floorplan. Here are the mistakes that show up most often, and how to avoid them.
Mistake 1: placing macros without thinking about dataflow
Macros dropped into the floorplan by habit, rather than by how data moves between them and the logic, force long routes and create congestion. Place macros so that the blocks talking to each other are near each other, and so macros sit at the edges where they do not block routing across the core.
Mistake 2: no routing channels between macros
Macros packed tightly together leave no room for signal and power routing between them. Always leave channels wide enough for the routing and the power straps that have to cross. A floorplan that looks efficient because it is dense often routes terribly.
Mistake 3: ignoring macro halos and keep-outs
Standard cells placed right up against a macro edge create pin access and congestion hotspots. A halo (keep-out) around each macro reserves space so the router and placer have room to work near the macro pins.
Mistake 4: wrong utilization or aspect ratio
Push utilization too high and the placer has nowhere to spread cells, so congestion explodes. A bad aspect ratio creates long thin regions that hurt timing. Start with a comfortable utilization and a near-square core, then tighten once the flow is clean.
| Mistake | Symptom later in the flow | Fix |
|---|---|---|
| Macros placed by habit | Long routes, central congestion | Place by dataflow, push macros to edges |
| No channels between macros | Routing and PDN cannot get through | Reserve channels for routing and straps |
| No halos around macros | Pin access and DRC hotspots | Add keep-out halos at macro edges |
| Utilization too high | Placement congestion, timing fails | Lower utilization, iterate up |
Spend time on power planning while you floorplan, not after. The power grid has to coexist with your macros and channels. Adding it later, after placement, is how late IR-drop surprises happen.
A floorplan that passes a quick visual check can still be broken. Always run an early global route or a trial placement to see congestion before you commit. Fixing a floorplan after placement and CTS is far more expensive than fixing it on day one.
Key takeaways
- Most backend pain starts as a floorplan decision
- Place macros by dataflow and keep them out of the routing path
- Leave channels and halos so the router and PDN have room
- Validate with early congestion analysis before moving on