ExpertQuestion 282 of 111Source PDF page undefined

What's the real tradeoff behind htree_explore_all_repeater_solutions, and why would you NOT just always enable it?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

htree_explore_all_repeater_solutions evaluates all repeaters per node for DRC-compliant solutions and selects the least-latency top-level solution -- genuinely better results, but runtime degrades as the library grows, since it's evaluating every candidate repeater at every node rather than a fast heuristic choice. htree_single_repeater_at_node avoids placing two repeaters at the same node (avoiding routing DRC, at the cost of possibly needing more levels) -- a different, narrower tradeoff.

Technical Reference DiagramWhat's the real tradeoff behind htree_explore_all_repeater_solutions, and why would you NOT just always enable it?
What's the real tradeoff behind htree_explore_all_repeater_solutions, and why would you NOT just always enable it?, illustrating the physical design concept.

Technical Explanation

  • htree_explore_all_repeater_solutions evaluates all repeaters per node for DRC-compliant solutions and selects the least-latency top-level solution -- a genuinely more thorough search than a fast heuristic pick.
  • The real cost: runtime degrades as the library grows, because the option is evaluating every candidate repeater at every node rather than making a fast, good-enough choice.
  • htree_single_repeater_at_node avoids placing two H-tree repeaters at the same node, specifically to avoid routing DRC issues -- but this may increase the number of tree levels needed as a consequence.
  • power_aware_flexible_htree_synthesis requires at least one active dynamic-power scenario during H-tree synthesis -- it's not usable as a pure timing/area option without that power context present.

Formula Or Decision Rule

htree_explore_all_repeater_solutions: better quality, runtime grows with library size (evaluates every repeater candidate per node). htree_single_repeater_at_node: avoids routing DRC from double-placement, at the cost of possibly more tree levels.

What To Check

  • Warning sign: H-tree synthesis runtime is much higher than expected for the design size.
  • Inspect: check whether htree_explore_all_repeater_solutions is enabled and cross-reference against library size -- this option's cost scales specifically with library size.
  • Correct: disable it for a large library if runtime is the constraint, accepting a less exhaustively-searched (but still valid) repeater solution.

Command Checks & Actions

ICC2set_app_options -name cts.multisource.htree_explore_all_repeater_solutions -value true

Exhaustive per-node repeater search, runtime scales with library size.

ICC2set_app_options -name cts.multisource.htree_single_repeater_at_node -value true

Avoids double-repeater routing DRC at the cost of possibly more levels.

ICC2set_app_options -name cts.multisource.power_aware_flexible_htree_synthesis -value true

Requires an active dynamic-power scenario to use.

Healthy, Suspicious & Hard-stop Results

  • Expected: H-tree synthesis runtime is proportionate to library size when htree_explore_all_repeater_solutions is enabled, and quality genuinely improves versus the default heuristic.
  • Investigate: H-tree synthesis runtime is unexpectedly long -- check this option's status against the actual library size before assuming something else is wrong.
  • Stop: htree_explore_all_repeater_solutions is enabled on a very large library and synthesis runtime has become a real schedule risk -- disable it and accept the heuristic solution rather than let runtime block progress.

Common Mistake

The Trap: Enabling htree_explore_all_repeater_solutions by default on every design regardless of library size, without considering that runtime cost scales with library size specifically -- fine for a small library, potentially very expensive for a large one.

What The Interviewer Is Testing

Whether you understand the actual runtime-vs-quality tradeoff behind these options, not just that they exist as knobs to turn on.

Practical Example

Debug Scenario: H-tree synthesis on a design with a large cell library takes far longer than a similar design with a smaller library. Checking settings, htree_explore_all_repeater_solutions is enabled in both cases -- but its documented cost scaling with library size explains the disproportionate runtime on the larger-library design specifically.

Physical Design & Planning Handbook

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