Section 31.*

LRM-309

—      we need to add 1 extra diagram. This new diagram should come just before the expressions diagram (31.40, page 446)

The new diagram is a copy of simple expression diagram from IEEE-1364 (26.6.25) with one addition: immediately after the variables reference in the simple  expression class, add "ref obj" (inside solid enclosure).

[To editors: This errata is needed to permit the representation of reference objects used in expressions.]

—      in the typedef diagram (31.12, page 419) correct note 1 to read as follows:

1)       if the vpiTypedef is TRUE and the typedef creates an alias of another typedef, then  the vpiTypedefAlias shall return a non null handle which represents the handle to the aliased typedef.

Ex:

typedef enum bit [0:2] {red, yellow, blue} primary_colors;

typdef primary_colors colors;

 

If "h1" is a handle to the typespec colors, its vpiType shall return a vpiEnumTypespec, the vpiTypedef property shall be true, the vpiName property shall return "colors", the vpiTypedefAlias shall return a handle "h2" to the typespec "primary_colors" of vpiType vpiEnumTypespec.

The vpiTypedef property shall be false for h2 and its vpiTypedefAlias shall return null.

 

—      add a new note to the typedef diagram (31.12, on notes page 420) reading:

6)       if a type is defined as an alias of another type, it inherits the vpiType of this other type.

Ex:

typedef time my_time;

my_time t;

 

The vpiTypespec of the variable named "t" shall return a handle h1 to the typespec "my_time" whose vpiType shall be a vpiTimeTypespec. The vpiTypedefAlias applied to handle h1 shall return a typespec handle h2 to the predefined type "time".

 

—      in the typedef diagram (31.12, page 419) correct the iteration to range (at the bottom left of the diagram). Currently this relation is 1 to many from "void typespec".

It should be a 1 to many relation from "array typespec" (basically move the source of the arrow up from void typespec to array typespec)

 

—      in the instance arrays diagram (31.14, page 421) the relation to range (on lhs of the diagram) should be an iterator, rather than a 1-to-1 relation.

 

Correct the notes underneath instance array to read as follows

1-       param assignments can only be obtained from non-primitive instance arrays

2-       to obtain all the dimensions of a multi-dimensional array, you must use the range iterator. Using the vpiLeftRange/vpiRightRange properties will only return the last dimension of a multi-dimensional array