— Assertion clocking domain block/expression
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)