VHDL Issue Number: 1116 Classification: Language Definition Problem Language Version: VHDL-93 Summary: implicit signals in guard expression (via port maps) Related Issues: Relevant LRM Sections: 1.1.1.2, 6.1, 12.6.4 Key Words and Phrases: Guard Current Status: Submitted 1076-1993 Disposition: N/A Disposition Rationale: N/A Superseded By: N/A ----------------------- Date Submitted: 1995/06/28 Author of Submission: Larry Soule Author's Affiliation: Synopsys Author's Post Address: 700 E. Middlefield Rd Mnt View, CA 94043 Author's Phone Number: (415) 694-4329 Author's Fax Number: Author's Net Address: lsoule@synopsys.com ----------------------- Date Analyzed: TBD Author of Analysis: TBD Revision Number: $Revision: 1.2 $ Date: $Date: 1995/07/24 19:23:16 $ Description of Problem ---------------------- There is an inconsistency with the 1993 LRM on the issue of not being able to use implicit signals in port associations but begin able to use GUARD signals in port associations. The two sections in question are: Section 1.1.1.2: Ports on page 7 "... The actual, if a port or signal, must be denoted by a static name (see 6.1)" Section 6.1: Names on page 84 A name is said to be a static name if and only if... - A simple name or selected name - An indexed name with a static prefix - A slice with a static prefix These two sections seem to rule out using any implicit signals of the form S'stable, S'quiet, S'transaction, or S'delayed as an actual in a port association. However, if this was the intent, it is easily circumvented by creating a guard signal with the implicit signal as the guard expression (S'stable and S'quiet can be used directly since their type is boolean). It looks like there was some discussion on this matter because footnote 4 on page 169 of Section 12.6.4 (The simulation cycle) says "...moreover, implicit signals may be associated as actuals with explicit signals, making the value of an explicit signal a function of an implicit signal." However this implies to me that ALL implicit signals may be associated as actuals adding to the confusion. Proposed Resolution ------------------- Remove GUARDs from the language. Failing that make the above code illegal. VASG-ISAC Analysis & Rationale ------------------------------ TBD Notes to whoever analyzes this IR, from Daniel Barclay, 95/07/24: - There is no "above code" as alluded to in the proposed resolution. - The problem is not that guard signals are allowed in port associations, the problem is (probably/apparently) that static names are defined wrong, so that other (non-guard) implicit signals cannot be used. (Not that "wait on S'STABLE;" isn't even legal according to the 1993 LRM.) - Beware of erroneous assumptions (about VHDL's intents) in the submission. VASG-ISAC Recommendation for IEEE Std 1076-1993 ----------------------------------------------- TBD VASG-ISAC Recommendation for Future Revisions --------------------------------------------- TBD