System timing check tasks |
LRM §14.5. |
System timing check tasks are used in specify blocks to perform common timing checks.
$setup(data_event, reference_event, limit [ , notifier ] ); $hold(reference_event, data_event, limit [ , notifier ] ); $setuphold(reference_event, data_event, setup_limit, hold_limit [ , notifier ] [, tstamp_cond ] [ , tcheck_cond ] [ , delayed_ref ] [ , delayed_data ] ); $period(reference_event, limit [ , notifier ] ); $width(reference_event, limit [ , treshold [ , notifier ]] ); $skew(reference_event, data_event, limit [ , notifier ] ); $recovery(reference_event, data_event, limit [ , notifier ] ); $nochange(reference_event, data_event, start_edge_offset, end_edge_offset [ , notifier ] ); $removal(reference_event, data_event, limit [ , notifier ] $recrem(control_event, data_event, recovery_limit, removal_limit [ , notifier ] [ , tstamp_cond ] [ , tcheck_cond ] [ , delayed_clk ] [ , delayed_data ]; $timeskew(reference_event, data_event, limit [ , notifier ] [ , event_based_flag ] [ , remain_active_flag ]; $fullskew(reference_event, data_event, limit [ , notifier ] [ , event_based_flag ] [ , remain_active_flag ];
System timing checks may only be used in specify blocks and perform common timing checks.
A transition on the reference event (input signal) establishes a reference time for changes on the data event. A transition on the data event (input signal) initiates the timing check. The limit and treshold are delay values. The notifier is a reg variable. When a timing violation occurs, the model functionality can use the notifier flag to modify the outputs.
Tstamp_cond places a condition on the stamp event. Tcheck_cond places a condition on the check event. Delayed_ref and delayed_clk are a delayed version of the reference signal. Delayed_data is a delayed version of the data signal. The delays are used for negative timing checks.
specify specparam TSetup = 2.5, THold = 1.3; $setup(Data, posedge Clk, TSetup); $hold(posedge Clk, Data, THold); $width(negedge Clk, 10.5, 0.5); endspecify