VHDL Issue Number: 1055 Classification: Language Definition Problem Language Version: VHDL-93 Summary: Reading predefined signal attributes of subprogram signal parameters within the subprograms. Related Issues: 0254 Relevant LRM Sections: 7.2, 7.2.1, 7.3.3 Key Words and Phrases: Predefined Signal Attributes, Signal Parameters Current Status: Submitted 1076-1993 Disposition: N/A Disposition Rationale: N/A Superseded By: N/A ----------------------- Date Submitted: 1992/06/25 Author of Submission: Clive R. Charlwood Author's Affiliation: Synopsys, Inc. Author's Post Address: 700 East Middlefield Rd. Mountain View, CA 94043-4033 Author's Phone Number: (415) 694-4307 Author's Fax Number: Author's Net Address: crc@synopsys.com ----------------------- Date Analyzed: TBD Author of Analysis: TBD Revision Number: $Revision: 1.1 $ Date Last Revised: $Date: 1995/07/27 00:34:37 $ Description of Problem ---------------------- The bulleted paragraphs in section 4.3.3 (page 4-10) state: An interface object has one of the following modes: - in. The value of the interface object may only be read. In addition, any attributes of the interface object may be read, except that attributes STABLE, QUIET, DELAYED, and TRANSACTION of a signal parameter may not be read within a subprogram. For a file object, operation ENDFILE is allowed. My understanding behind the intent of the sentence "In addition, any attributes ..." is that it disallow the use of the named attributes on signal class subprogram parameters. The reason for this is that it would force the an implementation to create new signals when the subprogram is called. However, the language is a little loose and could be taken to mean that the restriction applies to ALL interface objects of mode in. The code below is currently rejected by at least one implementation on these grounds. This seems harsh. entity E is port (P: in bit); end E; architecture A of E is begin process procedure PR is begin wait until P'DELAYED = '1'; -- Is this line legal? end PR; begin wait; end process; end A; This is also a problem for out mode interface objects. The bullet on inout parameters does not have any restrictions. This seems to be an oversight. Proposed Resolution ------------------- Rework the language of the three broken paragraphs of Section 4.3.3 to be more explicit about what is and is not allowed: An interface object has one of the following modes: - in. The value of the interface object may only be read. When the interface object is a subprogram parameter then any attribute of the interface object except the predefined attributes STABLE, QUIET, DELAYED, and TRANSACTION may be read. Any attribute of an interface object that is not a subprogram parameter may be read. For all file interface objects the operation ENDFILE is allowed. - out. The value of the interface object may updated. When the interface object is a subprogram parameter then any attribute of the interface object except the predefined attributes STABLE, QUIET, DELAYED, TRANSACTION, EVENT, ACTIVE, LAST_EVENT, LAST_ACTIVE, and LAST_VALUE may be read. Any attribute of an interface object that is not a subprogram parameter may be read. For all file interface objects the operation ENDFILE is allowed. No other reading is allowed. - inout. The value of the interface object may be both read and updated. When the interface object is a subprogram parameter then any attribute of the interface object except the predefined attributes STABLE, QUIET, DELAYED, and TRANSACTION may be read. Any attribute of an interface object that is not a subprogram parameter may be read. For all file interface objects the operation ENDFILE is allowed. VASG-ISAC Analysis & Rationale ------------------------------ TBD VASG-ISAC Recommendation for IEEE Std 1076-1993 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD