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