VHDL Issue Number: 0218 Classification: Language Definition Problem Language Version: VHDL-87 Summary: Implicit signals are not objects. Moreover, they may not be signals. Related Issues: None. Relevant LRM Sections: 2.2, 3.2, 3.2.1.1, 4.3, 4.3.1.2, 4.3.4, 6.3, 9.1, 14.1 Key Words and Phrases: Guard, 'Delayed, 'Stable, 'Quiet, 'Transaction, implicit signals, signal attributes, predefined attributes Current Status: Submitted 1076-1993 Disposition: Superseded (ISAC Issues Outstanding) Disposition Rationale: N/A Superseded By: 1041 ----------------------- Date Submitted: 1991/03/20 Author of Submission: Paul Menchini Author's Affiliation: CAD Language Systems, Inc. Author's Post Address: P.O. Box 13036 Research Triangle Park, NC 27709-3036 Author's Phone Number: (919) 361-1913 Author's Fax Number: Author's Net Address: mench@clsi.com ----------------------- Date Analyzed: TBD Author of Analysis: TBD Revision Number: $Revision: 1.10 $ Date Last Revised: $Date: 1995/05/13 21:53:48 $ Description of Problem ---------------------- In LRM Section 4.3, the list of objects in paragraph 1 (beginning on page 4-3) leaves out implicit signals. It covers declared signals with "an object declared by an object declaration" (as item 1). It also covers subelements of declared signals with "an element or slice of another object" (as item 9). However, it does not cover the implicit signals Guard, 'Delayed, 'Stable, 'Quiet, and 'Transaction. The first note of Section 4.3.1.2 (on page 4-6) apparently leaves out implicit signals as signals: Ports of any mode are also signals. The term signal is used in this manual to refer to objects declared either by signal declarations or by port declarations; the term port is used to refer to objects declared by port declarations only. These ommissions are problematic, as certain other LRM passages require objects to include the implicit signals: 1. Paragraph 3 of Section 6.3 (on page 6-3) states: For a selected name that is used to denote a record element, the suffix must be a simple name denoting an element of a record object or value. If implicit signals are not objects, the name 'DELAYED. is illegal. 2. The final sentence of paragraph 2 (on page 4-13) states (in part): "An alias of a signal denotes a signal...." If implicit signals are not signals, then the alias declaration alias S2 : Boolean is S1'STABLE(10 ns); is illegal. 3. The first sentence of paragraph 2 of Section 3.2 (on page 3-8) states: An object of a composite type represents a collection of objects, one for each element of the composite object. Does this statement apply to implicit signals? For example, given the declaration: signal S: Bit_Vector (1 to 10); is the name "S'Delayed(1 nS)(2 to 9)" legal? (Note that the name "S'Delayed(2 to 9)" is probably in any case; it seems reasonable to require that it be written as "S'Delayed(0 nS)(2 to 9)". 4. If implicit signals are not objects, then the item 1 of paragraph 6 of Section 3.2.1.1 (on page 3-12) doesn't cover the use of an implicit signal as an actual designator: For an interface object of mode IN, INOUT, or LINKAGE, if the actual part includes a type conversion function, then the result type of that function must; be a constrained array subtype, and the index ranges are obtained from this constrained subtype; otherwise, the index ranges are obtained from the object or value denoted by the actual designator. 5. Note, however, how Section 2.2 uses "object" in paragraph 7 (on page 2-5): If a function subprogram is a parent of a given procedure, and that procedure contains a reference to a signal or variable object, then that object must be declared within the declarative region associated with the function or within the declarative region associated with the procedure. This wording must be revised if implicit signals are defined to be objects (unless an existing restriction eliminates the case of a reference implying a declaration). Proposed Resolution ------------------- Define the implicit signals Guard, 'Delayed, 'Stable, 'Quiet, and 'Transaction as both objects and signals. Specifically: 1. Add items covering Guard, 'Delayed, 'Stable, 'Quiet, and 'Transaction to the list of objects in paragraph 1 of Section 4.3. 2. Correct the first note of Section 4.3.1.2. 3. Modify paragraph 7 of Section 2.2 to either refer to "an explicit signal or variable object" or to supply a case analysis covering both explicit signals and variables (on the one hand) as well as implicit signals (on the other). VASG-ISAC Analysis & Rationale ------------------------------ TBD VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD