IntermediateQuestion 233 of 142Source PDF page undefined

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 Reference DiagramWhat does clock_opt actually do, stage by stage, in ICC2?
What does clock_opt actually do, stage by stage, in ICC2?, illustrating the physical design concept.

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_opt alone runs the whole flow, build_clock through final_opto.
  • clock_opt -from build_clock -to route_clock builds and routes but stops before optimization -- useful to inspect the raw tree.
  • clock_opt -from route_clock -to route_clock re-routes an already-built tree without rebuilding structure.
  • clock_opt -from final_opto runs only post-build optimization on an already-built, already-routed tree.
  • synthesize_clock_trees -propagate_only is 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

ICC2clock_opt

Runs the full CTS flow.

ICC2clock_opt -from build_clock -to route_clock

Builds and routes, stops before optimization.

ICC2clock_opt -from final_opto

Post-build optimization only.

ICC2synthesize_clock_trees -propagate_only

Marks 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_opto run 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_clock run 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

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