BeginnerQuestion 243 of 97Source PDF page undefined

Why does CTS have to wait until after placement instead of running earlier in the flow?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

CTS needs real physical locations for every leaf register to build a tree that actually balances delay to each one -- before placement, those locations don't exist yet. Running CTS on an unplaced or partially-placed design would mean building a tree around positions that are about to change, making the whole tree invalid the moment placement moves anything.

Technical Reference DiagramWhy does CTS have to wait until after placement instead of running earlier in the flow?
Why does CTS have to wait until after placement instead of running earlier in the flow?, illustrating the physical design concept.

Technical Explanation

  • CTS needs real physical locations for every leaf register to build a tree that balances delay to each one -- clustering, buffer placement, and skew minimization are all physical-location-dependent operations.
  • Before placement, those locations simply don't exist yet -- there's nothing for CTS to build a tree around.
  • Running CTS on an unplaced or partially-placed design would mean building a tree around positions that are about to move, invalidating the tree the moment placement changes anything.
  • This is also why clocks stay ideal during placement (zero-delay, zero-skew) by default -- the tool isn't pretending the future tree doesn't matter, it's deferring tree-dependent timing until the tree can actually be built on real geometry.

Common Mistake

The Trap: Thinking of "clocks stay ideal until CTS" as an arbitrary tool limitation rather than a direct consequence of CTS needing real leaf-register locations that don't exist before placement.

Follow-up Question & Model Response

"Given this dependency, what would happen if you tried to run CTS before placement had actually legalized the design?"

Candidate Model Response: The resulting tree would be built around cell positions legalization is about to move, invalidating the tree's skew/latency balancing the moment those positions change -- the entire tree would need to be rebuilt from scratch after legalization completes.

Practical Example

Debug Scenario: A script accidentally calls clock_opt before place_opt has fully legalized the design -- the resulting tree is built around cell positions that legalization then moves, and the whole tree needs to be rebuilt from scratch.

Physical Design & Planning Handbook

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