ExpertQuestion 344 of 111Source PDF page undefined

Beyond the basic congestion-driven effort setting, what other specific ICC2 app-options target congestion reduction, and what does each one specifically address?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

Several targeted options exist beyond the general effort knob: congestion_layer_aware (per-layer congestion instead of combined layers), increased_cell_expansion (expand virtual cell area per local routing need), congestion_expansion_direction=both (default is horizontal only), ndr_area_aware (accounts for clock NDR area specifically), seq_array_icg_aware (reduces congestion from sequential-array clock nets), spread_repeater_paths (spreads repeaters orthogonally, avoiding clumping at macro/blockage edges), and wide_cell_use_model (wide-cell density modeling for advanced nodes).

Technical Reference DiagramBeyond the basic congestion-driven effort setting, what other specific ICC2 app-options target congestion reduction, and what does each one specifically address?
Beyond the basic congestion-driven effort setting, what other specific ICC2 app-options target congestion reduction, and what does each one specifically address?, illustrating the physical design concept.

Technical Explanation

  • congestion_layer_aware models congestion PER LAYER instead of combining all layers into one congestion estimate -- more precise, since different layers can have genuinely different congestion profiles.
  • increased_cell_expansion expands the virtual cell area used for congestion estimation based on actual local routing need, rather than a fixed expansion.
  • congestion_expansion_direction=both expands congestion consideration in BOTH directions -- the default is horizontal only, so this is a real behavioral change, not a minor tweak.
  • ndr_area_aware specifically accounts for clock NDR (non-default rule) area in congestion estimation -- clock nets with wider NDRs consume more routing resource than a naive estimate would assume.
  • seq_array_icg_aware reduces congestion specifically arising from sequential-array clock nets -- a targeted fix for a specific congestion source pattern.
  • spread_repeater_paths spreads repeaters ORTHOGONALLY, specifically to avoid clumping at macro or blockage edges -- a real, documented failure pattern this option targets.
  • wide_cell_use_model provides wide-cell density modeling specifically for advanced nodes, where a cell too wide to straddle vertical power straps (wider than half the strap pitch) can only have ONE such cell placed between straps -- a real physical constraint this option accounts for.

Formula Or Decision Rule

Wide-cell rationale: if a cell's width exceeds half the vertical power strap pitch and it cannot straddle straps, only ONE such cell fits between adjacent straps -- a hard physical placement constraint at advanced nodes.

What To Check

  • Warning sign: general congestion-effort tuning doesn't resolve a persistent, specific congestion pattern (e.g. concentrated near macro edges, or from sequential-array clock nets).
  • Inspect: identify the specific pattern and check whether a targeted option (spread_repeater_paths for edge clumping, seq_array_icg_aware for sequential-array clocks) matches it.
  • Correct: enable the specific targeted option rather than continuing to raise the general congestion effort, which may not address a pattern-specific root cause.

Command Checks & Actions

ICC2set_app_options -name place.coarse.spread_repeater_paths -value true

Spreads repeaters orthogonally to avoid clumping specifically at macro or blockage edges, a targeted fix for that documented congestion pattern.

ICC2set_app_options -name place.coarse.wide_cell_use_model -value true

Enables wide-cell density modeling accounting for the one-cell-per-strap-interval physical constraint at advanced nodes.

Healthy, Suspicious & Hard-stop Results

  • Expected: a specific, identified congestion pattern is addressed with the correspondingly specific targeted option, not just general effort tuning.
  • Investigate: general congestion effort has been raised repeatedly with limited improvement on a specific, identifiable congestion pattern -- worth checking whether a targeted option matches that pattern instead.
  • Stop: repeated general-effort tuning continues with no diagnosis of the actual congestion pattern's root cause, when several specific, documented options exist for exactly the common patterns (macro-edge clumping, sequential-array clocks, wide-cell strap constraints).

Common Mistake

The Trap: Reaching only for the general congestion-effort knob when a specific, targeted option (e.g. seq_array_icg_aware for sequential-array clock congestion, or wide_cell_use_model for advanced-node strap-pitch constraints) would address the actual root cause more directly.

What The Interviewer Is Testing

Whether you know several of these SPECIFIC, targeted congestion options (not just the general effort knob) and can match a real congestion symptom to the right targeted fix.

Practical Example

Debug Scenario: A design shows persistent congestion clumping specifically near macro edges, unresolved by raising the general congestion effort. Enabling place.coarse.spread_repeater_paths, a targeted option for exactly this documented pattern, resolves the clumping where the general knob alone didn't.

Physical Design & Planning Handbook

Dive into 14 comprehensive chapters covering netlist sanity, FinFET grids, macro placement, power grids, CTS, and timing budgeting.