Hold/Removal 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 hold check (also called the hold relationship) is directly tied to the setup relationship. While setup analysis ensures that data is safely captured under the most pessimistic scenario, the hold relationship ensures the following:

  • Data from the setup launch edge is not captured by any active edge before the setup capture edge.
    • H1a and H2a edges match setup edges S1 and S2 in the following figure.
  • Data from the next active source clock edge after the setup launch edge is not captured by the setup capture edge.
    • H2a and H2b edges match setup edges S1 and S2 in the following figure.

During hold analysis, the timing engine reports only the most pessimistic hold relationship between any two clocks. This is not always the same as the worst setup relationship. The timing engine evaluates all possible setup relationships and their corresponding hold relationships to find the most pessimistic hold case.

For example, consider the same path used in the setup relationship example. Two unique setup relationships exist. The figure shows two hold relationships for each setup case. The greatest hold requirement is 0 ns, which occurs at the first rising edge of both source and destination clocks.

The following figure illustrates the two hold relationships per setup relationship.

Figure 1. Hold Relationships per Setup Relationship

After the path requirement is known, the tool uses the path delays, clock uncertainty, and hold time to calculate slack. The typical slack equation is:

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

As the equation shows, the hold slack is positive when the new data arrives after the required time.

The removal check works like the hold check but applies to asynchronous control pins, such as preset or clear. It uses the same clock relationship rules and slack equation, replacing hold time with removal time.