[sv-ac] LRM Changes for Chapter 27 of 3.1 "SystemVerilog Assertion API"


Subject: [sv-ac] LRM Changes for Chapter 27 of 3.1 "SystemVerilog Assertion API"
From: Bassam Tabbara (bassam@novas.com)
Date: Fri Nov 14 2003 - 16:59:19 PST


**Please view this in html form so it is very easy to see the change,
otherwise just read the new**

** Please comment if you have any issues with this before we finalize
and vote on it**

LRM Changes for Chapter 27 of 3.1 "SystemVerilog Assertion API":

1) p. 251:

OLD:

vpiHandle vpi_register_assertion_cb(

vpiHandle, /* handle to assertion */

PLI_INT32 reason, /* reason for which callbacks needed */

PLI_INT32 (*cb_rtn)( /* callback function */

PLI_INT32 reason,

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,

} s_vpi_attempt_info, *p_vpi_attempt_info;

 NEW:

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 attemptStartTime; /* Time attempt triggered */

} s_vpi_attempt_info, *p_vpi_attempt_info;

2) p. 252

OLD:

The callback function shall be supplied the following arguments:

1) the reason for the callback

2) the handle for the assertion

3) a pointer to an attempt information structure

4) a reference to the user data supplied when the callback was placed.

The attempt information structure contains details relevant to the
specific event that occurred.

- On disable, enable, reset and kill events, the info field is absent (a
NULL pointer is given as the value

of info).

- On start and success events, only the attempt time field is valid.

- On a failure event, the attempt time and detail.failExpr are valid.

- On a step callback, the attempt time and detail.step elements are
valid.

NEW:

The callback function shall be supplied the following arguments:

1) the reason for the callback
2) a pointer to the time of the callback

3) the handle for the assertion

4) a pointer to an attempt information structure

5) a reference to the user data supplied when the callback was placed.

The attempt information structure contains details relevant to the
specific callback that occurred.

- On disable, enable, reset and kill callbacks, the info field is absent
(a NULL pointer is given as the value

of info).

- On start and success callbacks, only the attemptStartTime field is
valid.

- On a failure callback, the attemptStartTime and detail.failExpr are
valid.

- On a step callback, the attemptStartTime and detail.step elements are
valid.

3) p. 253:

OLD:

Usage example: vpi_control(vpiAssertionKill, assertionHandle, attempt)

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,
attempt)

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,
attempt,

NEW:

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,

---
Thx.
-Bassam.

-- Dr. Bassam Tabbara Technical Manager, R&D Novas Software, Inc.

<http://www.novas.com/> http://www.novas.com (408) 467-7893



This archive was generated by hypermail 2b28 : Fri Nov 14 2003 - 17:01:15 PST