Setup/Recovery Relationship - 2025.2 English - UG906

Vivado Design Suite User Guide: Design Analysis and Closure Techniques (UG906)

Document ID
UG906
Release Date
2025-12-10
Version
2025.2 English

The setup check uses the most pessimistic setup relationship between two clocks. By default, this is the smallest positive delta between the launch and capture edges.

For example, if two flip-flops are triggered by rising clock edges, both the launch and capture edges are rising.

The clocks are defined as follows:

  • clk0 has a 6 ns period with the first rising at 0 ns and falling edge at 3 ns.
  • clk1 has a 4 ns period with the first rising at 0 ns and falling edge at 2 ns.

As shown in the following figure, two unique setup relationships exist: Setup(1) and Setup(2). The smallest positive delta from clk0 to clk1 is 2 ns, which corresponds to Setup(2). The common period is 12 ns, which is the time between two simultaneous alignments of the two clocks.

Figure 1. Setup Relationships

Tip: These relationships are established when considering the ideal clock waveforms, before applying clock insertion delays from the root to the flip-flop clock pin.
Important: If no common period is found after 1000 cycles of both clocks, the tool uses the worst setup relationship observed over these 1000 cycles. In such scenario, these clocks are considered unexpandable or without a common period. The resulting timing analysis is not always the most pessimistic case. Review the paths between these clocks to confirm if they need to be treated as asynchronous.

After the tool establishes the path requirement, it computes setup slack using path delays, clock uncertainty, and setup time.

Data required time (setup) = capture edge time + destination clock path delay - clock uncertainty - setup time
Data arrival time (setup) = launch edge time + source clock path delay + datapath delay
Slack (setup) = data required time - data arrival time

As the equation shows, a positive slack means data arrives before the required time.

The recovery check works the same way as the setup check but applies to asynchronous control pins, such as preset or clear. It uses the same clock relationships and slack equation, but substitutes recovery time in place of setup time.