trig_call :
A trigger generator for called events.
The trig_call
primitive generates an xbit-typed trigger out
when its trigger()
task is called. This primitive is convenient if one wants to trigger events using a procedural statement within an initial
or always
block.
For instance, the following example shows how to trigger trig1
whenever the clk
signal has a positive-edge transition:
xbit trig1; trig_call U1(trig1); always @(posedge clk) begin U1.trigger(); end
The prototype of the trigger()
task is listed below. The trigger()
task can schedule a trigger event at an advanced time by providing the first optional argument delay
, which indicates the absolute time delay measured from the current time. By default, the task assumes a pure transport delay, scheduling a new event while keeping all the pending events. However, with its second optional argument inertial
set to 1, the task assumes an inertial delay, cancelling all the pending events before scheduling a new one.
task trigger(input real delay=0.0, input int inertial=0);
Note that the trig_call
primitive cannot generate more than one trigger events in a given timestep and may suppress the excess events. The parameter max_warn
sets the maximum warning message count for such excess trigger events. Setting it to 0 suppresses all warning messages and setting it to -1 displays them all.
The xbit-typed trigger out
can be used as an input to the measurement primitives to measure the time instants, delays, periods, etc. of the triggering events. The trigger signal is initialized to X and changes to 1 when the first event occurs. The trigger output out
then toggles to a different value (0 or 1) whenever a subsequent event occurs.
Input/Output Terminals
Name | I/O | Type | Description |
out | output | xbit | output trigger |
Parameters
Name | Type | Default | Unit | Description |
max_warn | integer | -1 | None | maximum warning count |