The hold path offset calculation in the timing report is as followingwhen no valid value is specified in the OFFSETIN constraint:
Offset (hold paths): -1.863ns (data path - clock path + uncertainty)
Source: LVDS_TL_DAT0_P (PAD)
Destination: AD9970_TL/DOUT0_A_IDDR (FF)
Destination Clock: lvds_tl_clk rising at 0.000ns
Data Path Delay: 1.970ns (Levels of Logic = 2)
Clock Path Delay: 3.858ns (Levels of Logic = 2)
Clock Uncertainty: 0.025ns
The OFFSET(hold paths) calculation (data path - clock path + uncertainty) is not a hold time calculation, butrather, it is a setup time calculation.
What is the problem here?
When no valid value is specified in the OFFSET IN constraint, the hold time check is not performed.What is being reported instead is actually the fast path setup calculation (at the slow corner), not a hold calculation. So, here the report header [Offset (hold analysis)] does not match the calculation. The correct report header should be [OFFSET (fast setup paths)].
When a valid value is specified in theOFFSETIN constraint, the hold slack calculation is correct in the timing report.
(requirement - (clock path + clock arrival + uncertainty - data path))
To resolve this problem, specify theVALID value in the OFFSET IN constraint so thata valid hold check can be performed.