VHDL Issue Number: 0030 Classification: Language Definition Problem Language Version: VHDL-87 Summary: Is passing a signal parameter before execution an error? Related Issues: Relevant LRM Sections: 12.3 Key Words and Phrases: Signal parameter, Elaboration of declarative part Current Status: ISAC-Approved 1076-1993 Disposition: Closed (All Issues Completely Addressed) Disposition Rationale: Section 12.3 has been changed Superseded By: N/A ----------------------- Date Submitted: 1989/02/10 Author of Submission: Doug Dunlop Author's Affiliation: Intermetrics, Inc. Author's Post Address: 4733 Bethesda Ave #415 Bethesda, MD 20814 Author's Phone Number: (301) 657-3775 Author's Fax Number: Author's Net Address: dunlop@inmet.inmet.com ----------------------- Date Analyzed: 1990/10/04 Author of Analysis: Oz Levia Revision Number: $Revision: 1.10 $ Date Last Revised: $Date: 1995/05/13 21:53:48 $ Description of Problem ---------------------- Suppose a block begins B:BLOCK SIGNAL S : INTEGER; SUBTYPE X IS NATURAL RANGE 0 TO F(S); where F is a user-written function that has a signal parameter. As the LRM seems to read, this is only an error if F (in the course of its execution) reads the value of S. This is extremely expensive to implement and is likely not what was intended. Proposed Resolution ------------------- The above case should be an error. The Analyzer will detect this as well as all errors of referencing the value of a signal in an entity declarative part, architecture declarative part, block declarative part, and process declarative part. VASG-ISAC Analysis & Rationale ------------------------------ The above proposed resolution looks correct and not over restrictive. VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- The following additions should be assumed to section 12.3 (page 12-3): The second paragraph (before the Note) should read: " ...must be defined at the time the expression is evaluated. In addition, if a primary in such an expression is a function call then the value of any object denoted by an actual designator in the function call must be defined at the time the expression is evaluated." And the Note in 12.3 should read " ...in declarative items within a block or passed as a parameter to a function call which is evaluated during the elaboration of the block, because the ..." VASG-ISAC Recommendation for Future Revisions --------------------------------------------- Change the LRM to reflect the above changes.