[sv-ac] input, inout, output

From: John Havlicek <john.havlicek_at_.....>
Date: Tue Oct 17 2006 - 08:36:52 PDT
All:

Since the discussion is bringing these in, I think
I had better pop my ideas into the mix.  See the 
sketch copied below.

J.H.

Local Variable Formal Arguments (a.k.a. Pass by Local)
------------------------------------------------------

The keyword "local" followed by a direction "input", "output", or
"inout" is used to define a local variable formal argument for a
sequence or property declaration.  The direction can be omitted, in
which case it is understood to be "input".

The type of the local variable formal argument must also be specified,
either explicitly or inferred from a previous type specification in
the formal argument list.

A local variable formal argument defines a local variable in the
declared sequence or property.  Except as noted below, this local
variable can be manipulated within the declared sequence or property
just as an ordinary local variable.

If a local variable formal argument has direction "input" or "inout",
then the actual argument expression bound to the local variable formal
argument is used to initialize the local variable formal argument at
the beginning of each evalution attempt of the sequence or property
instance.  The actual argument expression must not reference any
unassigned local variable.

For example

    property p(local <type> v, ...)
       ...
    endproperty

    p(e,...)

behaves like

    property p(<type> v1, ...)
       <type> v = v1;  // local variable initializer is another enhancement
       ...
    endproperty

    p(e,...)


The direction "output" or "inout" can be specified only for a local
variable formal argument of a sequence.  The actual argument
expression bound to an "output" or "inout" local variable formal
argument must itself be a local variable of a consistent (how
consistent?) type.  The directions "output" and "inout" specify that
the value of the local variable formal argument flow out of an
instance of the sequence and be assigned to the actual argument local
variable when the sequence instance matches.  The structure of the
sequence must ensure that the local variable formal argument flow out
according to the flow rules.
Received on Tue Oct 17 08:37:03 2006

This archive was generated by hypermail 2.1.8 : Tue Oct 17 2006 - 08:37:17 PDT