VHDL Issue Number: 0003 Classification: Examples, Notes, and Appendices Language Version: VHDL-87 Summary: Examples in the LRM do not have a space between the abstract literal and the unit name of physical literals Related Issues: None Relevant LRM Sections: 3.1.3, 13.2 Key Words and Phrases: Lexical Element, Physical Literal Current Status: VASG-Approved 1076-1993 Disposition: Closed (All Issues Completely Addressed) Disposition Rationale: All examples have been corrected. Superseded By: N/A ------------------------ Date Submitted: 1988/10/31 Author of Submission: Alec Stanculescu Author's Affiliation: Vantage Analysis Systems, Inc. Author's Post Address: 42340 Christy Street, Suite 201 Fremont, CA 94538 Author's Phone Number: (415) 659-0901 Author's Fax Number: Author's Net Address: ------------------------ Date Analyzed: 1988/11/07 Author of Analysis: Ray Hookway Revision Number: $Revision: 1.10 $ Date Last Revised: $Date: 1995/05/13 19:34:42 $ Description of Problem ---------------------- The fourth paragraph of section 13.2 of the LRM states that: "... At least one separator is required between an identifier or an abstract literal and an adjacent identifier or abstract literal." Thus a space is always required between the abstract literal and the unit name in a physical literal. Nevertheless, many of the examples in the LRM incorrectly include physical literals which contain no space between the abstract literal and the unit name. Example -- LRM Section 10.3 -- Comments have been deleted L1: block signal A,B: Bit; begin L2: block signal B: Bit; begin A<=B after 5ns; B<=L1.B after 10ns; end block; B<=A after 15ns; end block; Proposed Resolution ------------------- Yes indeed, spaces are required between the abstract literal and the unit name. The examples are in error and should be changed. VASG-ISAC Analysis & Rationale ------------------------------ In this case the LRM is very clear that a space is required. Unfor- tunately, the examples in the LRM and examples in several other documents, such as the VHDL tutorial, do not contain spaces. This has caused many users (and some implementors) to not use (require) spaces. The LRM could be changed to allow this by relaxing the res- triction that a separator is required between an abstract literal and an adjacent identifier. However, this causes problems when scanning a decimal literal such as 10E2. Is this the decimal literal whose value is 1000 or a physical literal whose value is 10 E2's. Current implementations resolve this problem by always decid- ing in favor of the decimal literal when this situation occurs. These implementations only require a separator when the unit name of the physical literal starts with an 'E'. Although this works, in the sense that it will parse the incorrect examples, it is certainly not as clean as always requiring a separator. Since 10 ns seems as readable as 10ns, there is no good reason to change the standard. VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- Clean up the examples to always have a space between the abstract literal and the unit name in physical literals.