Arrival time, required time, and slack

Arrival time and required time are very useful concepts you can use to verify timing requirements in the presence of constraints. Below is a simple example applied to verifying the clock requirement for setup between sequential elements in the design.

The arrival time represents the time at which the data arrives at the input of the receiving sequential element. In this example, the arrival time is considered from the setup launch edge at CK, taken as a time reference (instant zero). It follows the clock network along the blue line until the clock pin on FF1 (delay d1). Then it continues along the data path always following the blue line until the data pin D on FF2. Therefore,

Arrival_TimeFF2:D = d1 + d2

The required time represents when the data is required to be present at the same pin FF2:D. Assume in this example that in the presence of an FF with the same polarity, the capturing edge is simply one cycle following the launch edge. Using the period T provided to the tool through the clock constraint, the event gets propagated through the clock network along the red line until the clock pin of FF2 (delay d3). Taking into account FF2 setup (delay d4), this means that the clock constraint requires the data to be present d4 time before the capturing clock edge on FF2. Therefore, the required time is:

Required_TimeFF2:D = T + d3 - d4

The slack is simply the difference between the required time and arrival time:

SlackFF2:D = Required_TimeFF2:D - Arrival_TimeFF2:D

If the slack is negative, the path is violating the setup relationship between the two sequential elements.

Arrival time and required time for setup check