VHDL Issue Number: 0041 Classification: Language Definition Problem Language Version: VHDL-87 Summary: Architecture item visibility in configurations is incorrectly defined. Related Issues: Relevant LRM Sections: 1.3, 10.2, 10.3 Key Words and Phrases: Configuration declaration, visibility Current Status: Analyzed 1076-1993 Disposition: Closed (All Issues Completely Addressed) Disposition Rationale: Section 10.3 was revised. Superseded By: N/A ----------------------- Date Submitted: 1989/02/10 Author of Submission: Doug Dunlop Author's Affiliation: Intermetrics, Inc. Author's Post Address: 4733 Bethesda Ave #415 Bethesda, MD 20814 Author's Phone Number: (301) 657-3775 Author's Fax Number: Author's Net Address: dunlop@inmet.inmet.com ----------------------- Date Analyzed: 1991/03/21 Author of Analysis: Paul Menchini (mench@clsi.com) Revision Number: $Revision: 1.9 $ Date Last Revised: $Date: 1995/08/03 00:18:20 $ Description of Problem ---------------------- The intention is for a configuration to have visibility over certain items declared in architectures. In the LRM however, this is not covered by either direct visibility or select visibility. The LRM extends the "scope" of items declared in architectures, but this does not make them visible. Proposed Resolution ------------------- The intent as implied in the "Note:" in LRM 1.3.1 will be implemented. VASG-ISAC Analysis & Rationale ------------------------------ VHDL's scope and visibility rules were adopted from Ada. Substantive changes were made to the list of declarations with extended scope in paragraph 2 of Section 10.2; paragraphs 4 and 5 of the same section were added to cover configuration declarations; the list of declarations visible by selection in paragraph 4 of Section 10.3 has been modified to account for the differences between VHDL and Ada; (In addition, paragraph 6 of Section 10.3 was deliberately modified from that of Ada (paragraph 14 of Ada Section 8.3). VHDL: A declaration is said to be *directly visible* within a certain part of its immediate scope.... (Ada: Where it is not visible by selection, a visible declaration is said to be *directly visible*. A declaration is directly visible within a certain part of its immediate scope.... (This alteration causes problems noted in other issue reports.) Unfortunately, no additions to Section 10.3 corresponding to paragraphs 4 and 5 of Section 10.2 were made; thus it is unclear whether a declaration whose scope is extended into a configuration declaration is thereby made visible. This defect must be repaired. Moreover, another visibility issue related to configurations must be addressed. Because of the extension of scope (and presumability of visibility) of declarations provided by paragraphs 4 and 5 of Section 10.2, the sources of visibility within configuration declarations are unique. Although no declarations can be introduced in a configuration declarative part or in a subordinate block configuration, use clauses can cause declarations to become directly visible. Thus, the meaning of a name must be addressed in two contexts: 1. Those names made directly visible via a use clause. 2. Those names whose scope (and visibility) extend into the configuration declaration. The LRM does not address the case when there is an interpretation in both contexts. (Note that, as noted by the author, the note at the end of Section 1.3.1 is the only place in the LRM that addresses this issue.) Association lists within configuration declarations are particularly complex. Consider a name of the form "F(S)" appearing as a formal in an association element within a configuration declaration. The following interpretations must be considered: 1. "F" is the name of a one-dimensional array formal and "S" is an expression selecting an element (or perhaps a slice) of the formal. "F" is to be found in the context of the names whose scope extends into the configuration declaration and "S" is found in the same scope. 2. Identical to 1., except that "S" is found in the names made visible by the use clauses. 3. The union of 1., and 2. ("S" is found in both contexts.) 4. "F" is a type conversion function and "S" is a formal. "S" is found in the context of the names whose scope extends into the configuration declaration and "F" is found in the same scope. 5. Identical to 3., except that "F" is found in the names made visible by the use clauses. 6. The union of 4. and 5. The LRM again does not address how to address this issue. VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD