How would you set interclock uncertainty between two clock domains, and when is it needed?
From PDVerse PrimeTime STA Interview Guide · pdVerse Mentor Guide
Ten-second Interview Answer
Use set_clock_uncertainty with -from and -to, as in set_clock_uncertainty 2 -from [get_clocks CLKB] -to [get_clocks CLKA] . It is needed for clock-domain-crossing paths, where launch and capture registers sit on different clocks.
Complete Technical Explanation
For a path whose launch and capture registers are on different clocks, the relevant skew is the variation between two different clocks, and that is what set_clock_uncertainty -from and -to specifies. For example set_clock_uncertainty 2 -from [get_clocks CLKB] -to [get_clocks CLKA] sets the uncertainty for paths running from CLKB to CLKA. You need it because cross-domain variation can differ from the within-domain skew and is often larger: the two clock trees may share very little common path, and may derive from different sources, so their edges can move further relative to each other than edges within one tree do. Specify it per crossing that matters, one -from / -to pair at a time, since different crossings can carry different relative uncertainty. The relationship is directional - -from is the launch clock and -to is the capture clock - so if paths cross both ways you write both directions. A typical setup pairs a modest within-domain value with a larger interclock one: set_clock_uncertainty 0.3 [get_clocks CLKA] and set_clock_uncertainty 0.3 [get_clocks CLKB] for the simple case, then set_clock_uncertainty 0.6 -from [get_clocks CLKA] -to [get_clocks CLKB] and the reverse. The precedence rule to remember is that when a path has both a simple and an interclock uncertainty, the interclock value takes precedence - so on a CLKA to CLKB path the 0.6 is used, not the 0.3.
In Pd / Signoff
You write these when the clock architecture is settled and the list of timed clock crossings is known. Each synchronous crossing that is actually timed gets its own -from / -to pair, both directions where paths run both ways, and the value comes from how much common clock path the two trees really share. It is the difference between believable and fictional CDC slack.
Common Trap
Leaving cross-domain paths on the smaller within-domain value, which understates the real relative variation between two trees that share little common path and risks missed violations. The other half of the trap is forgetting the direction: a -from A -to B setting does nothing for paths running B to A.
Expect Next
If a path has both a simple and an interclock uncertainty specified, which value does PrimeTime apply?
Topic And Primetime Commands
Clocks / Uncertainty & Jitter. get_clocks, set_clock_uncertaintyKeep building interview depth
Continue practising STA
Continue learning free
Get a practical low-power chapter
Receive the existing “Low Power and Multivoltage Fundamentals” PDF chapter and its download link by email.
Continue practising
