VHDL Issue Number: IR1.99.09 Classification: Language Definition Problem Language Version: VHDL-1076.1'99 Summary: Various language definition problems Related Issues: IR1.99.08 Relevant LRM Sections: 4.3.2, 7.4, 10, 12.2.4 Key Words and Phrases: Current Status: Analyzed 1076.1-99 Disposition: Unknown Closed (All Issues Completely Addressed) Bugs Fixed, Enhancements Outstanding (No ISAC Issues) Superseded (ISAC Issues Outstanding) Disposition Rationale: Superseded By: N/A ----------------------- Date Submitted: 21 March 2006 Author of Submission: Ernst Christen Author's Affiliation: Synopsys, Inc. Author's Post Address: 2025 NW Cornelius Pass Rd Hillsboro, OR 97124 Author's Phone Number: 503-547-6096 Author's Fax Number: 503-547-6906 Author's Net Address: christen@synopsys.com ----------------------- Date Analyzed: 1 April 2006 Author of Analysis: Ernst Christen Revision Number: 1 Date Last Revised: 1 April 2006 EC: Completed analysis and recommendations Description of Problem ---------------------- A review of the LRM indicated the following language definition problems: 4.3.2 Reading/updating of quantities and the allowable operations for the different modes needs further analysis 4.3.2.2 12th paragraph after productions This paragraph discusses the same topic as the 14th paragraph. The two paragraphs should be combined. 4.3.2.2 13th paragraph after productions This paragraph discusses the same topic as the 2nd to last paragraph of 4.3.2.2. The two paragraphs should be combined. 7.4.1 e), f) Do not include objects of a locally static subnature. The concept of locally static subnatures is not defined 7.4.2 j), k) Do not include objects of a globally static subnature. The concept of globally static subnatures is not defined 10.1, 10.2 Record nature declaration missing from list of declarative regions 12.2.4 5th paragraph last sentence This sentence requires the subnatures of the formal and actual terminal in a scalar port association element to match. This contradicts the rules defined in the 11th paragraph after the productions in 4.3.2.2, which require that the natures of the formal and actual match unless the actual is open. Proposed Resolution ------------------- See problem description 1076.1-ISAC Analysis & Rationale -------------------------------- 4.3.2 Reading/updating of quantities and the allowable operations for the different modes needs further analysis There are inconsistencies in the wordingof the definition for the situations in which attributes of signal parameters can be read. For mode in, there are explicit exclusions for certain attributes of subprogram signal parameters. This is worded as "Reading an attribute of the interface object is allowed, unless the interface object is a subprogram signal parameter and ..." Conversely, for mode inout, the definition lists the exclusions in a different form: "Reading the attributes of the interface object, other than the attributes ... of a signal parameter, is also allowed." It does not state explicitly, as it does for model in, that the signal parameters are those of a subprogram. However, this is implied by the terminology of the LRM, and although the wording may be confusing, there is no error. No action is required. 4.3.2.2 12th paragraph after productions This paragraph discusses the same topic as the 14th paragraph. The two paragraphs should be combined. It seems that when the manual was first written, the text from the white paper was pasted directly into the LRM rather than integrated. Given that quantity associations can also have type conversions and conversion functions, just like signals, the rules should be the same. The paragraph should be integrated with the 14th paragraph. 4.3.2.2 13th paragraph after productions This paragraph discusses the same topic as the 2nd to last paragraph of 4.3.2.2. The two paragraphs should be combined. It seems that when the manual was first written, the text from the white paper was pasted directly into the LRM rather than integrated. The first sentence of the paragraph is equivalent to the first sentence of the 2nd to last paragraph of 4.3.2.2, and the last sentence refers to the last sentence of the 2nd to last paragraph. The paragraph should be integrated with the 2nd to last paragraph. 7.4.1 e), f) Do not include objects of a locally static subnature. The concept of locally static subnatures is not defined This is correct. The omission makes attribute names of the form A'LENGTH and others, where A is a terminal of a constrained array nature with a locally constant index constraint illegal. The error should be corrected, and the definition of a locally static subnature should be added. 7.4.2 j), k) Do not include objects of a globally static subnature. The concept of globally static subnatures is not defined This is correct. The omission makes attribute names of the form A'LENGTH and others, where A is a terminal of a constrained array nature with a globally constant index constraint illegal. The error should be corrected, and the definition of a globally static subnature should be added. 10.1, 10.2 Record nature declaration not listed as declarative region or scope This appears to be an oversight. A record nature declaration should be treated essentially like a record type declaration. The record nature declaration should be added to the list in 10.1, and the nature element declaration should be added to the list in 10.2. 12.2.4 5th paragraph last sentence This sentence requires the subnatures of the formal and actual terminal in a scalar port association element to match. This contradicts the rules defined in the 11th paragraph after the productions in 4.3.2.2, which require that the natures of the formal and actual match unless the actual is open. The sentence in question seems to be an attempt to replicate the first sentence of the paragraph and apply it to terminals and natures. Since subnatures have neither bounds nor a direction, the attempt fails. The sentence does not reflect the intent of the language designers, which is that the rules for associating actual terminals with formal terminals (i.e. objects with natures and subnatures) should be equivalent to the rules for associating actual value bearing objects with formal value bearing objects (i.e. objects with types and subtypes). We conclude that the definition in 4.3.2.2 is correct and the sentence in this paragraph is wrong. Since the sentence in 4.3.2.2 captures the intent completely, the wrong sentence in 12.2.4 should be deleted. 1076.1-ISAC Recommendation for IEEE Std 1076.1-1999 --------------------------------------------------- 1076.1-ISAC Recommendation for Future Revisions ----------------------------------------------- 4.3.2.2 12th paragraph after productions Reword the 14th paragraph to read "For the association of signals or quantities with corresponding formal ports, ..." Delete the 12th paragraph after the productions. 4.3.2.2 13th paragraph after productions Reword the 2nd to last paragraph to read "... for a formal signal port of any mode other than *linkage*, for a formal quantity port of mode *in*, ... for that interface element. For an interface element that is a formal generic, a formal signal port, or a formal variable or parameter, if the association element ... for that interface element. For an interface element that is a formal quantity port, if the association element is not included ..." Delete the 13th paragraph after the productions. 7.4.1 Reword item e) to read "... that is of a locally static subtype or of a locally static subnature" Reword item f) to read "... or is an object that is of a locally static subtype or of a locally static subnature, ..." Add a new paragraph at the end of 7.4.1 "A locally static scalar subnature is a scalar subnature. A locally static array subnature is a constrained array subnature formed by imposing on an unconstrained array nature a locally static index constraint. A locally static record subnature is a record nature whose elements are all of locally static subnatures. A locally static subnature is either a locally static scalar subnatore, a locally static array subnature, or a locally static record subnature." 7.4.2 Reword item j) to read "... and whose prefix is either a globally static subtype, or an object that is of a globally static subtype or subnature, or a function call that is of a globally static subtype" Reword item k) to read "... whose prefix is either a globally static subtype, or an object that is of a globally static subtype or subnature, or a function call that is ..." Add a new paragraph at the end of 7.4.2 "A globally static scalar subnature is a scalar subnature. A globally static array subnature is a constrained array subnature formed by imposing on an unconstrained array nature a globally static index constraint. A globally static record subnature is a record nature whose elements are all of globally static subnatures. A globally static subnature is either a globally static scalar subnatore, a globally static array subnature, or a globally static record subnature." 10.1 Add the following to the lettered list: "A record nature declaration" 10.2 Add the following to the lettered list: "A nature element declaration in a record nature declaration" 12.2.4 5th paragraph last sentence Delete the last sentence in this paragraph reading "If an actual terminal is associated ..."