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