User guide
14-21
Negative Timing Checks
VCS uses the limits you specify in the $setuphold or $recrem
timing check to calculate the delays on the delayed versions of the
reference and data signals. For example:
$setuphold(posedge clock,data,-10,20, , , , del_clock,
del_data);
This specifies that the propagation delays on the reference event (a
rising edge on signal clock), are more than 10 but less than 20 time
units more than the propagation delays on the data event (any
transition on signal data).
So when VCS creates the delayed signals, del_clock and
del_data, and the alternative violation window that straddles a rising
edge on del_clock, VCS uses the following relationship:
20 > (delay on del_clock - delay on del_data) > 10
There is no reason to make the delays on either of these delayed
signals any longer than they have to be so the delay on del_data
is 0 and the delay on del_clock is 11. Any delay on del_clock
between 11 and 19 time units would report a timing violation for the
$setuphold timing check.
Multiple timing checks, that share reference or data events, and
specified delayed signal names, can define a set of delay
relationships. For example:
$setuphold(posedge CP,D,-10,20, notifier, , ,
del_CP, del_D);
$setuphold(posedge CP,TI,20,-10, notifier, , ,
del_CP, del_TI);
$setuphold(posedge CP,TE,-4,8, notifier, , ,
del_CP, del_TE);