Mantis
2106 AMENDMENTS
Modify
the text in 6.18 User Defined Types
REPLACE
The
actual data
type
definition of a forward typedef declaration shall be resolved within the same local scope or generate block. Importing a typedef from a package into
a local scope can also resolve a type definition.It shall be an error
if the type_identifier does not resolve
to data type, or basic data type if specified
WITH
The
actual data
type
definition of a forward typedef declaration shall be resolved within the same local scope or generate block. Importing a typedef from a package into
a local scope can also resolve a type definition.It shall be an error
if the type_identifier does not resolve
to a data type. It shall be an error if a basic data type was specified by the
forward type declaration and the actual type definition does not conform to the
specified basic data type.
Modify
the text in 6.21 Scope and Lifetime
REPLACE
Any
data declared outside a module, interface, task, or function are global in
scope (can be used anywhere after its declaration) and have a static lifetime
(exist for the whole elaboration and simulation time).
Data
declared inside a module, interface or program, but outside a task, process, or
function, are local in scope and static in lifetime (exist for the lifetime of
the module, interface or program). This is roughly equivalent to C static data
declared outside a function, which is local to a file.
Data
declared in an automatic task, function, or block have
the lifetime of the call or activation and a local scope. This is roughly
equivalent to a C automatic variable.
Data
declared in a static task, function, or block default to a static lifetime and
a local scope.
Data
can be declared in unnamed blocks as well as in named blocks. These data are
visible to the unnamed block and any nested blocks below it. Hierarchical
references cannot be used to access these data by name.
Tasks
and functions can be declared as automatic, making all
storage within the task or function automatic.
Specific
data within a static task or function can be explicitly declared as automatic. Data declared as automatic have the lifetime of the
call or block and are initialized on each entry to the call or block (also see
6.7 on variable initialization). The lifetime of a fork…join, fork…join_any, or fork…join_none block shall encompass the execution of all processes spawned by the
block. The lifetime of a scope enclosing any fork block includes the lifetime
of the fork block.
Data
can be explicitly declared as static. Data declared to
be static in an automatic task, function, or block
have a static lifetime and a scope local to the block. This is like C static
data declared within a function.
WITH
Variables
declared outside a module, program, interface, task, or function are local to
the compilation unit and have a static lifetime (exist for the whole
simulation). This is roughly equivalent to C static variables declared outside
a function, which are local to a file. Variables declared inside a module,
interface or program, but outside a task, process, or function, are local in
scope and have a static lifetime.
Variables
declared inside a static task, function, or block are
local in scope and default to a static lifetime. Specific variables within a
static task, function, or block can be explicitly declared as automatic. Such variables have the lifetime of the call or block and are
initialized on each entry to the call or block (also see 6.7 on variable
initialization). This is roughly equivalent to a C automatic variable.
Tasks
and functions may be declared as automatic. Variables
declared in an automatic task, function, or block are local in scope, default
to the lifetime of the call or block and are initialized on each entry to the
call or block (also see 6.7 on variable initialization). An automatic block is
one in which declarations are automatic by default. Specific variables within
an automatic task, function, or block can be explicitly declared as static. Such variables have a static lifetime. This is roughly equivalent to C
static variables declared within a function.
The
lifetime of a fork…join, fork…join_any, or fork…join_none block shall encompass the execution of all processes spawned by the
block. The lifetime of a scope enclosing any fork block includes the lifetime
of the fork block.
A
variable declaration shall precede any statements within a procedural block and
shall precede any simple reference (non-hierarchical) to that variable.
Variables may be declared in unnamed blocks as well as in named blocks. These
variables are visible to the unnamed block and any nested blocks below it.
Hierarchical references shall not be used to access these variables by name.
Any
data declared outside a module, interface, task, or function are global in
scope (can be used anywhere after its declaration) and have a static lifetime
(exist for the whole elaboration and simulation time).
Data
declared inside a module, interface or program, but outside a task, process, or
function, are local in scope and static in lifetime (exist for the lifetime of
the module, interface or program). This is roughly equivalent to C static data
declared outside a function, which is local to a file.
Data
declared in an automatic task, function, or block have
the lifetime of the call or activation and a local scope. This is roughly
equivalent to a C automatic variable.
Data
declared in a static task, function, or block default to a static lifetime and
a local scope.
Data
can be declared in unnamed blocks as well as in named blocks. These data are
visible to the unnamed block and any nested blocks below it. Hierarchical
references cannot be used to access these data by name.
Tasks
and functions can be declared as automatic, making all storage
within the task or function automatic.
Specific
data within a static task or function can be explicitly declared as automatic. Data declared as automatic have the lifetime of the
call or block and are initialized on each entry to the call or block (also see
6.7 on variable initialization). The lifetime of a fork…join, fork…join_any, or fork…join_none block shall
encompass the execution of all processes spawned by the block. The lifetime of
a scope enclosing any fork block includes the lifetime of the fork block.
Data
can be explicitly declared as static. Data declared to
be static in an automatic
task, function, or block have a static lifetime and a scope local to the block.
This is like C static data declared within a function.