IntermediatePrimeTime guide question 5 of 65Source PDF page 5

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_uncertainty
Original guide diagramUncertainty between two clock domains, not inside one

Keep 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.