A recovery timing check ensures that there is a minimum amount of time between the asynchronous signal becoming inactive and the next active clock edge. In other words, this check ensures that after the asynchronous signal becomes inactive, there is adequate time to recover so that the next active clock edge can be effective. For example, consider the time between an asynchronous reset becoming inactive and the clock active edge of a flip-flop. If the active clock edge occurs too soon after the release of reset, the state of the flip-flop may be unknown. The recovery check is illustrated in Figure 8-21. This check is based upon the recovery time specified for the asynchronous pin of the flip-flop in its cell library file, an excerpt of which is shown below.
pin(RSN) {
. . .
timing() {
related_pin : "CK";
timing_type : recovery_rising;
. . .
}
}
Like a setup check, this is a max path check except that it is on an asynchronous signal.
The Endpoint shows that it is recovery check. The recovery time for the UFF6 flip-flop is listed as the library recovery time with a value of 0.09ns. Recovery checks also belong to the async default path group.