What's the actual mechanism behind place.coarse.auto_density_control's 'enhanced' default, and when would you override it manually?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
place.coarse.max_density controls max density during non-congestion-driven placement; place.coarse.congestion_driven_max_util (default 0.93) controls max utilization in less-congested areas surrounding highly congested ones. place.coarse.auto_density_control defaults to -enhanced, following a preset schedule unless disabled -- and the enhanced default improves total power and wire length. Critically, you NEVER need to disable auto_density_control to override it -- explicit user settings for max_density/congestion_driven_max_util always take precedence, and settings apply INDEPENDENTLY to each placeable area (voltage area, exclusive move bound), not averaged over the whole block.
Technical Explanation
- place.coarse.max_density directly sets max density controlling how densely cells are placed during NON-congestion-driven placement.
- place.coarse.congestion_driven_max_util (default 0.93) sets max utilization specifically in less-congested areas surrounding highly congested ones -- a targeted, not global, density cap.
- place.coarse.auto_density_control defaults to -enhanced, following a preset internal schedule unless explicitly disabled -- and this enhanced default is documented to improve total power and wire length versus a naive uniform density.
- Critically: you NEVER need to disable auto_density_control to override it -- an explicit user setting for max_density or congestion_driven_max_util always takes precedence over the automatic schedule, so there's no need to turn off the automation just to set your own value.
- Density settings apply INDEPENDENTLY to each placeable area (each voltage area, each exclusive move bound) -- not averaged across the whole block, meaning one dense region and one sparse region are each governed by their own applicable setting, not a single blended number.
What To Check
- Warning sign: a design with auto_density_control disabled shows worse total power or wire length than a similar design using the enhanced default.
- Inspect: check whether disabling auto_density_control was actually necessary, or whether an explicit max_density override alone (without disabling) would have achieved the same specific goal while keeping the enhanced default's benefit elsewhere.
- Correct: prefer an explicit override to a specific value over disabling the automation entirely, unless there's a specific reason the enhanced schedule itself is undesirable everywhere.
Command Checks & Actions
set_app_options -name place.coarse.max_density -value 0.6Sets an explicit density value that automatically takes precedence over the auto_density_control schedule, no need to disable that schedule first.
set_app_options -name place.coarse.congestion_driven_max_util -value 0.8Sets max utilization for areas surrounding highly congested regions specifically, overriding the default 0.93.
Healthy, Suspicious & Hard-stop Results
- Expected: density settings are applied via explicit overrides where needed, with auto_density_control's enhanced default left active everywhere else for its documented power/wire-length benefit.
- Investigate: auto_density_control was disabled design-wide to achieve one specific density override -- check whether a targeted explicit setting could have achieved the same goal without forfeiting the enhanced default elsewhere.
- Stop: density behavior across multiple distinct placeable areas (voltage areas, exclusive move bounds) is being reasoned about as one single blended density, when the tool actually applies settings independently per area.
Common Mistake
The Trap: Disabling auto_density_control just to set a custom max_density value -- an explicit user setting already overrides the automatic schedule without needing to disable it, so disabling it unnecessarily forfeits the enhanced default's power/wire-length benefit everywhere the custom setting doesn't apply.
What The Interviewer Is Testing
Whether you know explicit settings always override the automatic schedule WITHOUT needing to disable it, and that density control is applied per placeable area, not blended across the whole design.
Practical Example
Practical Example: set_app_options -name place.coarse.max_density -value 0.6 on one voltage area sets that area's density explicitly, while a different voltage area in the same design continues using the enhanced auto_density_control default -- the two areas' density behavior is governed completely independently.
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