User guide

14-7
Negative Timing Checks
Here the $setuphold timing check is in the specify block of the top-
level module of the cell. It specifies that there is a timing violation if
there is a data event between 31 and 10 time units before the
reference event on the cell boundary.
This is giving the data events a “head start” at the cell boundary,
anticipating that the delays on the data events will allow the reference
event to “catch up” at the sequential device inside the cell.
Note:
When you specify a negative hold limit, its value must be less than
the setup limit.
To implement negative timing checks, VCS creates delayed versions
of the signals that carry the reference and data events and an
alternative violation window where the window straddles the delayed
reference event.
You can specify the names of the delayed versions using the
extended syntax of the $setuphold system task or let VCS name
them internally.
The extended syntax also allows you to specify expressions for
additional conditions that must be true for a timing violation to occur.
The $setuphold Timing Check Extended Syntax
The $setuphold timing check has the following extended syntax:
$setuphold(reference_event, data_event, setup_limit,
hold_limit, notifier, [timestamp_cond, timecheck_cond,
delayed_reference_signal, delayed_data_signal]);