VHDL Issue Number: 1042 Classification: Language Definition Problem Language Version: VHDL-93 Summary: Missing sentence for variable assignment aggregate target. Related Issues: 0221 Relevant LRM Sections: 8.5, 8.4 Key Words and Phrases: form-of-aggregate target, variable assignments, "others" Current Status: ISAC-Approved 1076-1993 Disposition: N/A Disposition Rationale: N/A Superseded By: N/A ----------------------- Date Submitted: 1991/03/08 Author of Submission: Laurence Groves (edited by Daniel Barclay) Author's Affiliation: Synopsys Inc. Author's Post Address: 1098 Alta Ave. Mountain View, CA 94043 Author's Phone Number: (415) 962-5426 Author's Fax Number: Author's Net Address: larry@Synopsys.COM ----------------------- Date Analyzed: 1994/08/01 Author of Analysis: Daniel S. Barclay Revision Number: $Revision: 1.9 $ Date Last Revised: $Date: 1995/05/15 21:26:37 $ Description of Problem ---------------------- LRM Section 8.4, the fourth text paragraph states: If the target of a signal assignment statement is in the form of an aggregate, and the expression in an element association of that aggregate is a signal name that denotes a given signal, then the given signal and each subelement thereof (if any) are said to be identified by that element association as targets of the assignment statement. It is an error if a given signal or any subelement thereof is identified as a target by more than one element association in such an aggregate. Furthermore, it is an error if an element association in such an aggregate contains an others choice or a choice that is a discrete range. LRM Section 8.5, the fourth text paragraph states: If the target of a variable assignment statement is in the form of an aggregate, and the locally static name in an element association of that aggregate denotes a given variable or denotes another variable of which the given variable is a subelement, then the element association is said to identify the given variable as a target of the assignment statement. It is an error if a given variable is identified as a target by more than one element association in such an aggregate. The rule/sentence (last sentence of LRM 8.4 paragraph 4): Furthermore, it is an error if an element association in such an aggregate contains an others choice or a choice that is a discrete range. is missing from LRM Section 8.5, paragraph 4. Proposed Resolution ------------------- Add the missing sentence. VASG-ISAC Analysis & Rationale ------------------------------ This does appear to be an unintentional omission. VHDL added the feature of form-of-aggregate targets relative to the base lan- guage taken from Ada; this strongly implies that the missing sentence was not deleted intentionally. Additionally, form-of-aggregate targets probably were added for signals first. (Temporary variables can be used in the sequential context to implement the behavior of a variable assignment statement with a form-of-aggregate target, but there is no workaround for a concurrent signal assignment.) Form-of- aggregate targets for variable assignments probably were added later to be consistent with with signal assignments. This is consistent with the sentence being forgotten for variable assignments. There does not appear to be any reason not to add the missing sentence. The statement (1 => v1, 2 => v2, others => v3) := "12345"; doesn't make much sense; would v3 get '3', '4', or '5'? Relatedly, allowing the statement (1 => v1, 2 => v2, others => v3) := "123"; doesn't add any functionality or significant convenience beyond the legal statement (1 => v1, 2 => v2, 3 => v3) := "123"; VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- Add the missing sentence as proposed: Furthermore, it is an error if an element association in such an aggregate contains an others choice or a choice that is a discrete range. VASG-ISAC Recommendation for Future Revisions --------------------------------------------- Add the missing sentence. Additionally, reword the enclosing paragraphs to remove unnecessary differ- ences in wording ("expression in an element association" and "locally static name in an element association" refer to the same thing), and then remove all duplicate wording by having two references to one rule in the text.