RE: [sv-cc] assertion erratas: 2 minor issues


Subject: RE: [sv-cc] assertion erratas: 2 minor issues
From: Bassam Tabbara (bassam@novas.com)
Date: Wed Jan 21 2004 - 11:24:36 PST


Francoise, thx a lot for the careful reading, you have found 2 errata:
[Swapnajit please take care of sending to David (and be careful to keep all
the courier fonts), I think this passed already, if anyone objects to the
fixes/changes please voice your concern we can close on this by Friday]
 
- "info" field is correct, this is talking about the returned info
*pointer*, so "info" is correct, just change the word from field to pointer,
and explain that no attempt structure info is available.
 
- yes, apparently that is bug: we can say cb_time is NULL, but now that I
think about it I'd rather we return the time of the disable/..... (makes
sense to mark some sort of "endpoint" to the assertion).
 
- I also added another bug that bugged me :-)! See the first bullet below
(line before the "info" bug)
 
Thanks, ok with you Francoise ? Please give ths a once over ...
-Bassam.
 
%%%%%%%%%%%% Corrected LRM submission as of 1/21/04, this is an LRM errata
going into draft 4%%%%%%%%%%%%%

Section 28.4.2, "Placing assertion callbacks"

update this part of LRM

[prototype for vpi_register_assertion_cb()]

Change (changes in red and blue):

      /* typedef for vpi_register_assertion_cb callback function */
      typedef PLI_INT32 (vpi_assertion_callback_func)(
         PLI_INT32 reason, /* callback reason */
         p_vpi_time cb_time, /* callback time */
         vpiHandle assertion, /* handle to assertion */
         p_vpi_attempt_info info, /* attempt related information */
         PLI_BYTE8 *user_data /* user data entered upon registration */

      );

      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 ),
            vpi_assertion_callback_func *cb_rtn,
            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;
  

[towards the end of the section, make the following change (in Blue), also
add the 3rd and 4th NOTES at the end of this section]

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

- On disable, enable, reset and kill callbacks, the info field is NULL
returned p_vpi_attempt_info info pointer is NULL and no attempt information
is available.

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

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

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

NOTES

3 -- The content of the cb_time field depends on the reason identified by
the reason field, as follows:
       - cbAssertionStart - cb_time is the time when the assertion attempt
has been started.
       - cbAssertionSuccess, cbAssertionFailure - cb_time is the time when
the assertion succeeded/failed.
       - cbAssertionStepSuccess, cbAssertionStepFailure - cb_time is the
time when the assertion attempt step succeeded/failed.
       - cbAssertionDisable, cbAssertionEnable, cbAssertionReset,
cbAssertionKill - cb_time is the time when the assertion
            attempt was disabled/enabled/reset/killed.
4 -- In contrast to cb_time, the content of attemptStartTime is always the
start time of the actual attempt of an assertion. It can be used as an
unique ID that distinguishes the attempts of any given assertion.

-----Original Message-----
From: owner-sv-cc@server.eda.org [mailto:owner-sv-cc@server.eda.org] On
Behalf Of Francoise Martinolle
Sent: Wednesday, January 21, 2004 7:53 AM
To: sv-cc@server.eda.org
Subject: [sv-cc] assertion erratas: 2 minor issues

I noted a problem in the assertion errata which we are supposed to vote on
today.

The description is incorrect, there is no "info" field in the attempt info
structure. It should say that the "step" field is NULL.
Additionally we should replace the sentence: "not possible, data supplied is
NULL." with "the cb_time field shall be NULL"

Text is the following.
The attempt information structure contains details relevant to the specific
event that occurred.
- On disable, enable, reset and kill callbacks, the info field is NULL.

- On start and success callbacks, only the attemptStartTime field is valid.
- On a cbAssertionFailure callback, the attemptStartTime and detail.failExpr
fields are
valid.
- On a step callback, the attemptStartTime and detail.step elements
elementsfields are valid.
NOTES
1) ...
2) ...
3) The content of the cb_time field depends on the reason identified by the
reason field, as follows:
- cbAssertionStart - cb_time is the time when the assertion attempt has been
started.
- cbAssertionSuccess, cbAssertionFailure - cb_time is the time when the
assertion
succeeded/failed.
- cbAssertionStepSuccess, cbAssertionStepFailure - cb_time is the time when
the
assertion attempt step succeeded/failed.
- cbAssertionDisable, cbAssertionEnable, cbAssertionReset, cbAssertionKill -
not possible, data supplied is NULL.
4) In contrast to cb_time, the content of attemptStartTime is always the
start time of the actual attempt of
an assertion. It can be used as an unique ID that distinguishes the attempts
of any given assertion.



This archive was generated by hypermail 2b28 : Wed Jan 21 2004 - 11:29:37 PST