How do the congestion-driven and timing-driven placement styles actually trade off against each other?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
Congestion-driven placement relaxes cell density at the cost of slightly higher interconnect length and silicon area -- it prioritizes routability. Timing-driven placement chases the best timing, possibly leaving congestion issues unresolved. Neither is strictly better; the choice depends on which risk (a routing-incomplete design, or a timing-failing design) is the bigger concern for a given block.
Technical Explanation
- Congestion-driven placement style relaxes cell density at the cost of slightly higher interconnect length and silicon area -- it prioritizes making the design routable over squeezing out every bit of timing margin.
- Timing-driven placement chases the best timing, possibly leaving congestion issues unresolved as a consequence.
- Neither style is strictly better -- the choice depends on which risk (an incomplete/DRC-heavy route, versus failing timing) is the bigger concern for a given block's actual characteristics.
- A very-high-density design benefits most from congestion-driven placement specifically, since congestion risk scales with density -- a lower-density design has more slack to prioritize timing without routing risk becoming dominant.
- The two styles map directly to real flags:
create_placement -congestion -congestion_effort highfor congestion-driven, versuscreate_placement -timing_drivenfor timing-driven.
Common Mistake
The Trap: Defaulting to timing-driven placement for every block regardless of density, when a very-high-density block's real risk is congestion/routability, not timing margin -- the wrong style choice for that block's actual risk profile.
Follow-up Question & Model Response
"How would you decide, for a specific block, which style is the right default rather than guessing?"
Candidate Model Response: By looking at the block's actual utilization/density and prior congestion history -- a block with high density or a history of routing DRC issues should default to congestion-driven placement, while a block with comfortable density and known-tight timing paths should default to timing-driven placement.
Practical Example
Debug Scenario: A very-high-density block placed with timing-driven placement completes with excellent timing but fails global routing due to congestion. Re-running with congestion-driven placement instead accepts slightly worse timing margin in exchange for a routable result -- the right tradeoff for that block's actual density profile.
Physical Design & Planning Handbook
Master ASIC Physical Design Planning & Floorplanning
Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.
Continue practising