VHDL Issue Number: 0024 Classification: Language Definition Problem Language Version: VHDL-87 Summary: What is the value of Std.Standard.Time before simulation? Related Issues: 0022, 0059 Relevant LRM Sections: 12.3ff, 12.4ff, 12.6ff Key Words and Phrases: Time, Std.Standard.Now, Elaboration, Initialization Current Status: Submitted 1076-1993 Disposition: Superseded (ISAC Issues Outstanding) Disposition Rationale: Initialization was addressed; elaboration was not. Superseded By: 1008 ----------------------- Date Submitted: 1990/11/08 Author of Submission: Paul Menchini Author's Affiliation: CAD Language Systems, Inc. Author's Post Address: P.O. Box 13036 Research Triangle Park, NC 27709-3036 Author's Phone Number: (919) 361-1913 Author's Fax Number: Author's Net Address: mench@clsi.com ----------------------- Date Analyzed: TBD Author of Analysis: TBD Revision Number: $Revision: 1.10 $ Date Last Revised: $Date: 1995/05/13 19:34:42 $ Description of Problem ---------------------- The LRM discusses the initialization of simulated time in only one place: paragraph 3 of Section 12.6.3 (on page 12-14): At the beginning of simulation, current time is assumed to be 0ns. (I note in passing the lack of the space in the physical literal.) This statement defines the value of time during simulation, but completely fails to address the value of time before the beginning of simulation. This is not an issue during the analysis of design units, since any expression containing a reference to Std.Standard.Now is not locally static. However, it is generally recognized that non-globally static expressions can be evaluated during static elaboration (cf. the note following Section 12.3, the second note following Section 12.3.1.4, and Issue Reports 22 and 59). Therefore, the value returned by a call to Std.Standard.Now during static model elaboration must be defined; alternatively, a call to this function during static model elaboration may be prohibited. One possibility is to specify that a call to Std.Standard.Now returns 0 nS (or some other value of Std.Standard.Time). This would provide all expressions evaluated during static model elaboration and involving a call to Std.Standard. Now with well-defined values. However, these expressions are then unusual in that, if evaluated during simulation, they would in general have different values. This situation results from the different return value from Std. Standard.Now, and may result in difficulties for tools that attempt to optimize the evaluation of models utilizing such expressions. (However, note that all such tools will have to treat Std.Standard.Now specially, since it's an impure function.) The alternative is to disallow the evaluation of Std.Standard.Now during static model elaboration. This is appealing from a Language Definition Problem viewpoint, but may result in modeling difficulties if subprograms that are called both during static model elaboration and simulation are used, if such subprograms themselves call Std.Standard.Now. Proposed Resolution ------------------- Given the above analysis, it seems best to stipulate that a call to Std. Standard.Now during static model elaboration return 0 nS. VASG-ISAC Analysis & Rationale ------------------------------ TBD VASG-ISAC Recommendation for IEEE Std 1076-1987 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD