IntermediateQuestion 338 of 142Source PDF page undefined

What does place.coarse.icg_auto_bound actually automate, and what's the default fanout cap on it?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

place.coarse.icg_auto_bound, when true, auto-generates group bounds for ICGs and the sequential cells they drive -- created at the START of placement and removed at the END, excluding cells already in another group bound. place.coarse.icg_auto_bound_fanout_limit caps the fanout considered for an automatic bound, defaulting to 40 -- an ICG driving more than that many sequential cells doesn't get this automatic grouping treatment.

Technical Reference DiagramWhat does place.coarse.icg_auto_bound actually automate, and what's the default fanout cap on it?
What does place.coarse.icg_auto_bound actually automate, and what's the default fanout cap on it?, illustrating the physical design concept.

Technical Explanation

  • place.coarse.icg_auto_bound, when true, auto-generates group bounds for ICGs and the sequential cells they drive.
  • These automatic bounds are created at the START of placement and removed at the END -- a temporary structural aid during placement, not a permanent constraint left on the final design.
  • Cells already in another group bound are EXCLUDED from this automatic ICG bounding -- it doesn't override an existing, more specific bound.
  • place.coarse.icg_auto_bound_fanout_limit caps the fanout considered for an automatic bound, defaulting to 40 -- an ICG driving more sequential cells than that doesn't get this automatic treatment, presumably because grouping that many cells together would be too restrictive.

What To Check

  • Warning sign: an ICG with a very large fanout doesn't show the expected auto-bound grouping behavior with its driven registers during placement.
  • Inspect: check the ICG's actual fanout against the default 40-cell limit -- exceeding it means auto-bound doesn't apply, by design.
  • Correct: if grouping is still desired for a high-fanout ICG despite exceeding the default limit, raise icg_auto_bound_fanout_limit explicitly rather than assuming something is broken.

Command Checks & Actions

ICC2set_app_options -name place.coarse.icg_auto_bound -value true

Enables automatic group-bound generation for ICGs and the sequential cells they drive during placement.

ICC2set_app_options -name place.coarse.icg_auto_bound_fanout_limit -value 60

Raises the default 40-cell fanout cap if a specific high-fanout ICG still needs automatic bounding.

Healthy, Suspicious & Hard-stop Results

  • Expected: ICGs with fanout under the configured limit show automatic group-bound behavior with their driven sequential cells during placement.
  • Investigate: a high-fanout ICG's driven registers don't show expected clustering during placement -- check its fanout against icg_auto_bound_fanout_limit before assuming a configuration error.
  • Stop: a design's ICG fanouts are being manually re-checked against the auto-bound limit repeatedly without ever adjusting the limit itself when a legitimate high-fanout case needs the grouping.

Common Mistake

The Trap: Assuming icg_auto_bound applies uniformly to every ICG regardless of fanout -- the default 40-cell limit means high-fanout ICGs are silently excluded unless the limit is explicitly raised.

What The Interviewer Is Testing

Whether you know the specific default fanout limit (40) and that it's a real, documented cap, not an unlimited automatic behavior.

Practical Example

Debug Scenario: An ICG driving 65 registers doesn't get the expected automatic group-bound treatment during placement, while a similar ICG driving 30 registers does. Checking place.coarse.icg_auto_bound_fanout_limit confirms the default 40-cell cap is why the higher-fanout ICG was excluded.

Physical Design & Planning Handbook

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