VHDL Issue Number: 0171 Classification: Language Definition Problem Language Version: VHDL-87 Summary: Recap static names and their interaction with aliases. Related Issues: 0044, 0067, 0071 Relevant LRM Sections: 6.1, 7.4, 4.3.4 Key Words and Phrases: static names, locally static names, aliases, globally static names, locally static expressions, globally static expressions Current Status: Submitted 1076-1993 Disposition: Closed (All Issues Completely Addressed) Disposition Rationale: Sections 7.4.1 and (possibly) 7.2 address the issue. Superseded By: N/A ----------------------- Date Submitted: 1991/03/15 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.9 $ Date Last Revised: $Date: 1995/08/04 01:45:13 $ Description of Problem ---------------------- Issue Reports 0044, 0067, and 0071 all cover some aspect of the interaction between static names and aliases. However, their coverage is fragmentary, and there are still some issues which are not covered, hence this issue report. The definition of static name and locally static name from Section 6.1, paragraph 6 (page 6-2) does not consider the effect of aliases. The existing definition is accurate only for objects that are not access variables, and not for access variables and aliases. Access variables are covered in Issue Report 0044. A name that involves an alias may, using the current definition, be considered a globally or locally static name even though the substitution of the aliased name for the alias would result in a name which does not meet the criteria for global or local staticness. This situation is problematic. Moreover, aliases suffer this same problem when used as primaries in locally or globally static expressions. Proposed Resolution ------------------- Split the definition of static name and locally static name into rules for objects that are not access variables, access variables, and aliases. A recursive definition is probably appropriate. The rules for non-access- variable objects can stand as is; the rules for access variables can be taken from Issue Report 0044. The suggested rules for aliases are as follows: 1. A name that denotes an alias is a (globally) static name if and only if the name aliased by the alias is itself a (globally) static name and if the subtype indication on the alias' declaration is a (globally) static subtype. 2. A name that denotes an alias is a locally static name if and only if the name aliased by the alias is itself a locally static name and if the subtype indication on the alias' declaration is a locally static subtype. Finally, language needs to be added to Section 7.4 so that aliases used as primaries in locally and globally static expressions undergo the same screening. Specifically, 1. A name that denotes an alias is a locally static primary if and only if the name aliased by the alias is itself a locally static primary and if the subtype indication on the alias's declaration is a locally static subtype. 2. A name that denotes an alias is a globally static primary if and only if the name aliased by the alias is itself a globally static primary and if the subtype indication on the alias's declaration is a globally static subtype. VASG-ISAC Analysis & Rationale ------------------------------ TBD VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD