Additional Uncertainty - Additional Uncertainty - 2026.1 English - UG1387

Versal Adaptive SoC Hardware, IP, and Platform Development Methodology Guide (UG1387)

Document ID
UG1387
Release Date
2026-07-22
Version
2026.1 English

When you need to add extra margin on the timing paths of a clock or between two clocks, you must use the set_clock_uncertainty command. This is also the best and safest way to over-constrain a portion of a design. It does not modify the actual clock edges or the overall clocks relationships. The clock uncertainty defined by you is additive to the jitter computed by the Vivado tools. You can specify it separately for setup and hold analysis.

The margin on all intra-clock paths of the design clock clk0 needs to be tightened by 500 ps. This adjustment makes the design more robust to noise for both setup and hold:

set_clock_uncertainty -from clk0 -to clk0 0.500
Note: Tightening the hold margin on a design can lead to hold violations. These violations occur on dedicated intra-site and cascade paths. The router cannot fix these violations by detouring the intra-site net.

If you specify additional uncertainty between two clocks, apply the constraint in both directions (assuming data flows in both directions). The example below shows how to increase the uncertainty by 250 ps between clk0 and clk1 for setup only:

set_clock_uncertainty -from clk0 -to clk1 0.250 -setup
set_clock_uncertainty -from clk1 -to clk0 0.250 -setup