IntermediateQuestion 255 of 142Source PDF page undefined

What does mark_clock_trees actually let you control beyond just "this tree is done"?

From PDVerse PnR Interview Handbook · pdVerse Mentor Guide

Short Answer

mark_clock_trees can scope to specific clocks (-clocks, default is all clocks/modes/active scenarios), mark a tree synthesized (-synthesized, the default) or clear that (-clear), apply or remove dont_touch, propagate non-default clock routing rules or clock cell spacing rules, mark clock sinks fixed, and freeze routing of clock nets. It's a multi-purpose flagging command, not just a single boolean toggle.

Technical Reference DiagramWhat does mark_clock_trees actually let you control beyond just "this tree is done"?
What does mark_clock_trees actually let you control beyond just "this tree is done"?, illustrating the physical design concept.

Technical Explanation

  • -clocks scopes the command to specific clocks; the default is all clocks across all modes and active scenarios.
  • -synthesized marks the tree as synthesized (the default behavior); -clear removes that mark; -dont_touch/-clear -dont_touch apply or remove dont_touch on the tree.
  • -routing_rules and -clock_cell_spacing propagate non-default clock routing rules (set_clock_routing_rules) and clock cell spacing rules (set_clock_cell_spacing) onto the marked tree.
  • -fix_sinks marks clock sinks fixed; -freeze_routing freezes routing of the clock nets -- both protect the tree from further movement/rerouting.

Common Mistake

The Trap: Treating mark_clock_trees as a single synthesized/not-synthesized toggle, when it actually controls several independent protections (dont_touch, fixed sinks, frozen routing, rule propagation) at once.

Follow-up Question & Model Response

"Why would you want to freeze routing on a clock tree separately from marking it dont_touch?"

Candidate Model Response: Because dont_touch protects the cells and structure from optimization changes, but a design could still get physically rerouted (e.g. by a later routing pass) without route freezing specifically preventing that -- the two protections cover different failure modes.

Practical Example

Debug Scenario: A clock tree is finalized and needs protection from a later ECO accidentally disturbing it. mark_clock_trees -clocks [get_clocks clkA] -dont_touch -fix_sinks -freeze_routing locks down placement, sink locations, and routing all at once, not just the synthesized flag.

Physical Design & Planning Handbook

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