IntermediateQuestion 226 of 142Source PDF page undefined

What are the five stages of place_opt, and what does each one actually do?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

place_opt is not one operation -- it's five named stages run in sequence: initial_place (merge clock-gating logic, coarse-place, scan chain optimization if SCANDEF is present), initial_drc (remove existing buffer trees, high-fanout-net synthesis, electrical DRC fixing), initial_opto (timing/area/congestion/leakage-power optimization), final_place (incremental placement to improve timing/congestion, then legalize), and final_opto (further optimization and legalization). You can run any contiguous slice with -from/-to -- the stage names are the actual debug handles.

Technical Reference DiagramWhat are the five stages of place_opt, and what does each one actually do?
What are the five stages of place_opt, and what does each one actually do?, illustrating the physical design concept.

Technical Explanation

  • place_opt is not one operation -- it's five named stages run in sequence: initial_place, initial_drc, initial_opto, final_place, final_opto.
  • initial_place merges clock-gating logic, performs coarse placement, and (if SCANDEF is present) scan chain optimization.
  • initial_drc removes any existing buffer trees, runs high-fanout-net synthesis, and fixes electrical DRC.
  • initial_opto is where timing, area, congestion, and leakage-power optimization actually happen.
  • final_place is incremental placement to improve timing/congestion, then legalization.
  • final_opto is a second optimization + legalization pass for timing/congestion.
  • If you omit -from it starts at initial_place; if you omit -to it runs through final_opto.
  • Knowing the stage names matters in practice: when a run is slow or a result looks wrong, you re-run just the slice you need instead of the whole flow.

What To Check

  • Warning sign: a design that looked fine after coarse placement shows new DRC or timing problems after the full place_opt run, and you can't tell which stage introduced them.
  • Inspect: re-run with -to at each stage boundary and check DRC/timing after each one, rather than only looking at the final result.
  • Correct: once you've isolated the stage, re-run from just before it with -from and the relevant app-option changed, not the whole flow from scratch.

Command Checks & Actions

ICC2place_opt

Runs the full five-stage flow.

ICC2place_opt -from initial_drc

Re-runs from a specific stage onward.

ICC2place_opt -to final_place

Stops before a specific stage.

Healthy, Suspicious & Hard-stop Results

  • Expected: each stage's log shows the operations it's documented to perform (e.g. initial_drc's log shows high-fanout-net synthesis and electrical DRC fixing, not timing optimization).
  • Investigate: a stage's log shows activity that belongs to a different stage -- usually means an app-option intended for one stage is actually affecting another.
  • Stop: -from/-to produces a design state that doesn't match any documented stage boundary -- re-run the full flow rather than trust a broken partial run.

Common Mistake

The Trap: Treating place_opt as an opaque single command and re-running the entire flow from scratch to fix a problem that only lives in one stage -- wasting runtime and losing legitimate progress from earlier stages.

What The Interviewer Is Testing

Whether you actually know place_opt has internal structure, not just that it "does placement" -- and whether you'd use -from/-to to debug efficiently instead of re-running everything.

Practical Example

Debug Scenario: A block's congestion looks fine after coarse placement but gets much worse after the full place_opt run. Instead of guessing, you run place_opt -to initial_drc, check congestion, then place_opt -from initial_drc -to initial_opto, check again -- and find initial_opto's timing optimization is the stage inserting the extra buffers that caused it.

Physical Design & Planning Handbook

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