typedef struct t_vpi_source_info {
PLI_BYTE*
PLI_BYTE8 *fileName;
PLI_INT32 startLine;
PLI_INT32 startColumn;
PLI_INT32 endLine;
PLI_INT32
endColumn;
} s_vpi_source_info, *p_vpi_source_info;
typedef struct t_vpi_assertion_info {
PLI_BYTE8
*name *assertName; /* name of assertion */
vpiHandle
instance; /* instance
containing assertion */
PLI_BYTE8 *defname; /* name of module/interface
containing assertion */
vpiHandle
clock; /* clocking expression
*/
PLI_INT32 assertionType; /* vpiSequenceType, ... vpiAssertType, vpiCoverType,
vpiPropertyType, vpiImmediateAssertType */
s_vpi_source_info sourceInfo;
} s_vpi_assertion_info, *p_vpi_assertion_info;
int PLI_INT32 vpi_get_assertion_info (assert_handle,
p_vpi_assertion_info);
vpiHandle vpi_register_assertion_cb(
vpiHandle assertion, /* handle to assertion */
PLI_INT32
reason, /* reason for which
callbacks needed */
PLI_INT32
(*cb_rtn)( /* callback function */
PLI_INT32
reason, /* callback reason */
p_vpi_time cb_time, /* callback time */
vpiHandle
assertion,
p_vpi_attempt_info info,
PLI_BYTE8
*userData
),
PLI_BYTE8
*user_data /*
user data to be supplied to cb */
);
typedef struct t_vpi_assertion_step_info
{
PLI_INT32
matched_expression_count;
vpiHandle *matched_exprs; /*
array of expressions */
p_vpi_source_info *exprs_source_info; /* array of source info */
PLI_INT32
stateFrom, stateTo; /* identify transition */
} s_vpi_assertion_step_info, *p_vpi_assertion_step_info;
typedef struct t_vpi_attempt_info {
union {
vpiHandle failExpr;
p_vpi_assertion_step_info step;
}
detail;
s_vpi_time attemptTime, attemptStartTime; /* Time attempt
triggered */
} s_vpi_attempt_info, *p_vpi_attempt_info;
The callback function shall be supplied the following
arguments:
1) the reason for the
callback
2) a pointer to
the time of the callback
2)
3) the handle for the assertion
3)
4) a pointer to an attempt information
structure
4)
5) a reference to the user data supplied when
the callback was placed registered.
The attempt information structure contains details relevant to the specific event that
occurred.
— On disable, enable, reset and kill events callbacks,
the info field is absent (a NULL pointer is given as the value of info) NULL.
— On start and success events
callbacks, only the attemptStartTime time
field is valid.
— On a failure event
callback, the attemptStartTime time
and detail.failExpr are valid.
— On a step callback, the attemptStartTime time
and detail.step elements are valid.
Usage example: vpi_control(vpiAssertionKill, assertionHandle, attemptStartTime)
vpiAssertionKill
discards the given attempts, but leaves the
assertion enabled and does not reset any state used by this assertion (e.g., past() sampling).
Usage example: vpi_control(vpiAssertionDisableStep, assertionHandle, attemptStartTime)
vpiAssertionDisableStep
disables step callbacks for this assertion. This
has no effect if stepping not enabled or it is already disabled.
— For the following operator, the second
argument shall be a valid assertion handle, the third argument shall be an
attempt start-time (as a pointer to a correctly initialized s_vpi_time structure) and the fourth argument shall
be a step control constant.
Usage example: vpi_control(vpiAssertionEnableStep, assertionHandle, attemptStartTime, vpiAssertionClockSteps)