System timing check tasks

LRM §14.5.

System timing check tasks are used in specify blocks to perform common timing checks.

Syntax:

$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 ];

Description:

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.

Example:

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 

Notes:

See also:

Specify, Specparam