[vhdl-200x-mp] Modeling and Productivity Change Proposal

From: Rick Munden <munden@acuson.com>
Date: Mon Jul 26 2004 - 17:40:31 PDT

Attached is a proposal for enhancing the VHDL language to enable
modeling of bi-directional devices.

regards,
Rick Munden

IEEE 200X Modeling and Productivity Change Proposal

ID: MP-1

Proposer: Richard Munden and Kevin Cameron
email: munden@eda.org

Status: Open
Proposed: 2004 July 26
Analyzed: Date
Resolved: Date

Enhancement Summary:

Enhance VHDL signals to enable modeling bi-directional nets and
devices such as switches, resistors, jumpers, relays, etc. Many digital circuits now
incorporate such devices but it is impossible to model them robustly with VHDL's
present facilities.

Related issues:
Relevant LRM section: Predefined Attributes

Enhancement Detail:

A proposed method to impliment the needed enhancement is through
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.
                        If the 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]
Received on Mon Jul 26 17:40:39 2004

This archive was generated by hypermail 2.1.8 : Mon Jul 26 2004 - 17:40:43 PDT