What does clock_opt actually do, stage by stage, in ICC2?
From PDVerse PnR Interview Handbook · pdVerse Mentor Guide
Short Answer
clock_opt runs CTS end to end through named stages you can target with -from/-to: build_clock builds the tree structure, route_clock routes the built tree, and final_opto is a post-build optimization pass. clock_opt alone runs the full flow; clock_opt -from build_clock -to route_clock builds and routes without the final optimization pass; clock_opt -from route_clock -to route_clock only routes clocks that are already built; clock_opt -from final_opto runs only post-build optimization on an already-built, already-routed tree.
Technical Explanation
- clock_opt has named internal stages, same discipline as place_opt: build_clock (build tree structure), route_clock (route the built tree), final_opto (post-build optimization).
clock_optalone runs the whole flow, build_clock through final_opto.clock_opt -from build_clock -to route_clockbuilds and routes but stops before optimization -- useful to inspect the raw tree.clock_opt -from route_clock -to route_clockre-routes an already-built tree without rebuilding structure.clock_opt -from final_optoruns only post-build optimization on an already-built, already-routed tree.synthesize_clock_trees -propagate_onlyis distinct from clock_opt -- it just marks clocks as propagated for STA purposes without actually running CTS.- Postroute clock optimization under CCD does NOT touch clock latency/skew -- it only fixes logical DRC violations at that point in the flow.
Command Checks & Actions
clock_optRuns the full CTS flow.
clock_opt -from build_clock -to route_clockBuilds and routes, stops before optimization.
clock_opt -from final_optoPost-build optimization only.
synthesize_clock_trees -propagate_onlyMarks clocks propagated without running CTS.
Healthy, Suspicious & Hard-stop Results
- Expected: each stage's log matches its documented job -- build_clock builds structure, route_clock routes, final_opto optimizes without rebuilding.
- Investigate: skew or latency numbers change after a postroute
clock_opt -from final_optorun that you expected to only fix DRC -- confirm whether CCD was active and whether this is actually the DRC-only postroute behavior, not a latency/skew optimization you were expecting. - Stop: a tree structure looks different after a
-from route_clock -to route_clockrun that should only have re-routed, not rebuilt -- that's not what that stage is documented to do.
Common Mistake
The Trap: Running clock_opt -from final_opto after routing and expecting it to fix a skew problem -- postroute clock optimization under CCD only fixes logical DRC violations, it does not touch latency or skew at that stage.
What The Interviewer Is Testing
Whether you know clock_opt has the same kind of internal stage structure as place_opt, and specifically whether you know the postroute final_opto DRC-only limitation, which is a common source of confusion.
Practical Example
Debug Scenario: After routing, a design still shows a small skew violation. Running clock_opt -from final_opto completes cleanly but the skew number doesn't move. That's expected, not a bug -- postroute final_opto under CCD only fixes logical DRC, so a real skew fix at this stage needs a different approach (e.g. targeted CCD at the postroute stage), not just re-running final_opto.
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