VHDL Issue Number: 1004 Classification: Language Definition Problem Language Version: VHDL-93 Summary: Are deferred constants still deferred after their full declaration? Related Issues: 0008, 0020, 0059 Relevant LRM Sections: 2.6, 4.3.1.1 Key Words and Phrases: Deferred constants, full declaration of deferred constants Current Status: Analyzed 1076-1993 Disposition: N/A Disposition Rationale: N/A Superseded By: N/A ----------------------- Date Submitted: 1989/02/23 Author of Submission: Paul Menchini Author's Affiliation: Menchini Consultancy Inc. Author's Post Address: 2 Davis Drive, PO Box 13036 Research Triangle Park, NC 27709-3036 Author's Phone Number: (919) 990-9506 Author's Fax Number: (919) 990-8561 Author's Net Address: mench@mercury.interpath.com ----------------------- Date Analyzed: 1994/07/25 Author of Analysis: John Willis (willis@vhdl.org) Revision Number: $Revision: 1.3 $ Date Last Revised: $Date: 1995/05/15 20:07:17 $ Description of Problem ---------------------- The LRM is unclear on the semantics deferred constants after their full declaration in a package body. To illustrate, consider the following example: package P is constant C: Integer; end P; package body P is constant C: Integer := 0; -- "C" is clearly a globally static primary here, but -- is "C" a locally static primary here? end P; Except for the fact that the declaration of C in the package body is the full declaration of the deferred constant in the package interface, the name "C" in the package body meets all the requirements of a locally static primary. Note that if the deferred constant declaration of C in the package interface was not present, then a reference to C in the package body (after the declaration of C) would clearly be a locally static expression. Proposed Resolution ------------------- Explicitly state in Section 4.3.1.1 that the name of a full declaration of a constant is to be treated no differently that a "normal" constant declaration in the subsequent text of the design unit containing the full declaration. VASG-ISAC Analysis & Rationale ------------------------------ The proposed resolution is a language extension. It seems to be useful, safe, and upward compatible. VASG-ISAC Recommendation for IEEE Std 1076-1993 ----------------------------------------------- No change in language. VASG-ISAC Recommendation for Future Revisions --------------------------------------------- Insert a paragraph or sentence in Section 4.3.1.1 stating "In the text between a full constant declaration and the end of the design unit containing the full constant declaration, the name of the full constant declaration is considered to be an explicitly declared constant, even if the full constant declaration were preceded by a deferred constant declaration."