IntermediateQuestion 102 of 222

What does a "don't-touch subtree" constraint actually protect during CTS, and when would you use it?

From PDVerse PnR Interview Handbook, part of the pdVerse Mentor Guide

Short Answer

The don't-touch subtree constraint selectively preserves a portion of the clock tree at a particular clock pin -- useful, for example, at a mux between two clocks feeding different downstream paths, where you want CTS free to optimize everywhere except that specific already-correct structure. It's a scoped protection, not a whole-tree freeze.

Technical Reference DiagramWhat does a "don't-touch subtree" constraint actually protect during CTS, and when would you use it?

Technical Explanation

  • The don't-touch subtree constraint selectively preserves a portion of the clock tree at a particular clock pin, not the whole tree.
  • A concrete use case: at a mux between two clocks (e.g. CLK1/CLK2) feeding different downstream paths, you may want CTS free to optimize everywhere else while leaving that specific mux structure exactly as-is.
  • This is scoped protection, distinct from a global dont_touch on the whole clock network -- you're protecting one already-correct structure, not opting the entire tree out of optimization.
  • No verified dedicated command syntax was found for a "don't-touch subtree" scoped to one clock pin -- the likely mechanism is a set_dont_touch or mark_clock_trees -dont_touch variant, but the exact flag should be verified against the ICC2 Implementation User Guide rather than assumed.

Common Mistake

The Trap: Reaching for a full dont_touch on the whole clock network when only one specific subtree (e.g. a clock mux structure) actually needs protecting -- that over-constrains CTS everywhere else unnecessarily.

Follow-up Question & Model Response

"Why would a clock mux specifically be a common place to need this kind of scoped protection?"

Candidate Model Response: A clock mux is exactly where two independently-timed clock paths converge into one structure feeding different downstream domains -- getting that convergence point right by hand and then protecting it from CTS's automated optimization is more reliable than trusting the algorithm to preserve a correctness property it doesn't know is special.

Practical Example

Debug Scenario: A design has a manually verified clock-mux structure feeding two downstream domains. A don't-touch subtree constraint at that mux's output pin protects it while CTS still freely optimizes the rest of the tree upstream and downstream.

PnR Flow Mentor Guide

Read the complete 8-chapter PnR Flow Mentor Guide free on the web โ€” library setup through placement, clock tree synthesis, routing, chip finishing, hierarchical implementation, and ECO, all the way to stream-out.

Offline PDF Bundle

Want all 1109 questions offline?

Get the complete 4-book PDF bundle (PnR, STA, MMMC, Low Power) with a clickable table of contents - no ads, no internet needed.

See what's inside the bundle
PnR Flow Physical Design Mentor Guide โ€” eight chaptersPnR Flow Mentor GuideEight chapters, library setup through to stream-out.