Section 28.3.2

LRM-137

Change (changes in red and blue):

— Assertion clocking domain block/expression

Section 28.3.2.1

LRM-121

Change (changes in red and blue):

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);

Section 28.4.2

LRM-121

Change (changes in red and blue):

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;

LRM-121

Change (changes in red and blue):

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.

Section 28.5.2

LRM-121

Change (changes in red and blue):

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)