[vhdl-200x-mp] Bi -directional modeling support


Subject: [vhdl-200x-mp] Bi -directional modeling support
From: Kevin Cameron x3251 (Kevin.Cameron@nsc.com)
Date: Mon May 05 2003 - 09:27:11 PDT


A requirement for bi-directional modeling is that a process should be
able to interogate
all the drivers of a signal so that it can determine what to pass
through. It's similar to driver
resolution, but you want to skip over the driver for the calling
process. E.g. if you want to model
a resistor, the modeling process would look at all the drivers on one
end (excluding its own) and
drive a strengh-reduced value onto the signal at the other end, and the
same in the opposite
direction, the signal on either end is then resolved including the
driver from the resistor model.

The proposal is written assuming that the implementation probably has
the drivers in an
array-like structure already for handling resolution.

Signal resolution really needs to be done "flat" rather than
hierarchically, but I can't find
the specific text in the LRM that says it's done either way.

Regards,
Kev.

------------------------------------------------------------------------

IEEE 200X Modeling and Productivity Change Proposal

ID: MP-

Proposer: Kevin Cameron
email: Kevin.Cameron@nsc.com

Status: Open
Proposed: Date
Analyzed: Date
Resolved: Date

Enhancement Summary: Implicit signals to enable bi-directional modeling
Related issues:
Relevant LRM section: Predefined Attributes

Enhancement Detail:
----------------------------

Additional/modified predefined attributes for signals -

  S'DRIVERS
                Kind: Function
                Prefix: Any signal denoted by the static
signal name S.
                Result Type: universal_integer
                Result: The number of driving processes the
signal S has.

  S'DRIVER_INDEX
                Kind: Function
                Prefix: Any signal denoted by the static
signal name S.
                Result Type: universal_integer
                Result: The process index for the calling
context for use with S'DRIVING_VALUE and
                                           S'DRIVING. S'DRIVING is
equivalent to S'DRIVING(S'DRIVER_INDEX)
                                           and S'DRIVING_VALUE is
equivalent to S'DRIVING_VALUE(S'DRIVER_INDEX).

  S'DRIVING[(N)]
                Kind: Function
                Prefix: Any signal denoted by the static
signal name S.
                Paramater: universal_integer, a value between 1 and
S'DRIVERS.
                                           If omitted it defaults to
S'DRIVER_INDEX.
                Result Type: Boolean
                Result: If the prefix denotes a scalar
signal, the result is False if the current value of the
                                           driver for S in the process
whose index is N is determined by the null transaction;
                                           True otherwise. If the prefix
denotes a composite signal the result is True if and
                                           only if R'DRIVING is True for
every Scalar subelement R of S; False otherwise.
                                           Ith the prefix denotes a null
slice of a signal the result is True.
                Restrictions: ... as is ...

  S'DRIVING_VALUE[(N)]
                Kind: Function
                 Prefix: Any signal denoted by the static
signal name S.
                 Paramater: universal_integer, a value between 1 and
S'DRIVERS.
                                            If omitted it defaults to
S'DRIVER_INDEX.
                 Result Type: The base type of S
                 Result: If S is a scalar signal S, the
result is the current value of the driver for S in the
                                            process whose index is N. If
S is a composite signal, the result is the aggregate of
                                            the values of
R'DRIVING_VALUE for each element R of S for drivers belonging to
                                            the process whose index is
N. If S is a null slice, the result is a null slice.
                 Restrictions: ... as is ...

Analysis:
----------------------------
[To be performed by the 200X Modeling & Productivity Working Group]

Resolution:
----------------------------
[To be performed by the 200X Modeling & Productivity Working Group]



This archive was generated by hypermail 2b28 : Mon May 05 2003 - 09:28:15 PDT