That seems like a safe way forward. However, I believe that $sampled(x, @(posedge clk) ) is equivalent to the corresponding clocking block definition: clocking cb @(posedge clk); input #1step x; // the #1step is optional endclocking And, the above declaration enables the use of: @(cb.x) ... It would seem that we can define the semantics of $sampled in terms of the equivalent clocking block definition. I think that part of the problem is that $sampled uses a function syntax for a built-in construct that may not behave as a function. Arturo -----Original Message----- From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of Rich, Dave Sent: Friday, November 03, 2006 7:54 AM To: john.havlicek@freescale.com; sv-ac@eda-stds.org Subject: RE: [sv-ac] mantis 1550 I agree with your conclusion. > -----Original Message----- > From: owner-sv-ac@server.eda.org [mailto:owner-sv-ac@server.eda.org] On > Behalf Of John Havlicek > Sent: Friday, November 03, 2006 4:53 AM > To: sv-ac@server.eda-stds.org > Subject: Re: [sv-ac] mantis 1550 > > Hi Dave: > > My intuition is that the generation of events from changes in the > return values of sampled value functions will be useful as a more > abstract view of the various changes in their arguments. > > Nevertheless, the reluctance to define such generated events is > understandable in the absence of a clear use model. > > In this case, though, I prefer that we make illegal the usage of > sampled value functions in contexts that require the definition of > events generated from their changes. > > In that way, we can preserve the possibility of defining those events > at a later time. > > Best regards, > > John H. > > > X-Authentication-Warning: server.eda-stds.org: majordom set sender to > owner-sv-ac@eda.org using -f > > X-MimeOLE: Produced By Microsoft Exchange V6.5 > > Content-class: urn:content-classes:message > > Date: Thu, 2 Nov 2006 13:19:19 -0800 > > X-MS-Has-Attach: > > X-MS-TNEF-Correlator: > > Thread-Topic: [sv-ac] mantis 1550 > > Thread-Index: > Acb+pxg/+SSVD5vxR0KCaRZVriKPnwAAE5fgAAJ3xsAAANtMEAABftvQAAIMtPA= > > From: "Rich, Dave" <Dave_Rich@mentor.com> > > X-OriginalArrivalTime: 02 Nov 2006 21:19:27.0754 (UTC) > FILETIME=[940CA6A0:01C6FEC4] > > X-Virus-Status: Clean > > X-MIME-Autoconverted: from quoted-printable to 8bit by server.eda- > stds.org id kA2LJTb2022874 > > Sender: owner-sv-ac@eda.org > > > > Ed, > > Arturo and Stu raise a good point: does it even make sense to allow > > sampled functions to generate an event? $time does not generate event > > when the time changes. The reason for $time's behavior has more to do > > with historical Verilog-XL and the fact that it only created events when > > the inputs to a function changed, not based on when the result of a > > function changed. > > > > Using that definition, $sample(x) would only be evaluated when the raw > > signal 'x' changes, and an update event would only be generated if the > > return value was different from the last evaluation. > > > > > > Dave > > > > > > > -----Original Message----- > > > From: owner-sv-ac@server.eda.org [mailto:owner-sv-ac@server.eda.org] > > On > > > Behalf Of Eduard Cerny > > > Sent: Thursday, November 02, 2006 12:12 PM > > > To: stuart@sutherland-hdl.com; sv-ac@server.eda-stds.org > > > Subject: RE: [sv-ac] mantis 1550 > > > > > > Hi Stu, > > > > > > I guess the question was related to the following: what happens if you > > > write @($smapled(x)) where will it be scheduled. In my view and if I > > > understood what Arturo wrote, if $sampled changed for the current time > > > step and the event control is is in a module, it will unblock in > > active > > > region, if it is in program it will unblock in reactive region. > > > > > > ed > > > > > > > > > > -----Original Message----- > > > > From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On > > > > Behalf Of Stuart Sutherland > > > > Sent: Thursday, November 02, 2006 2:55 PM > > > > To: sv-ac@eda-stds.org > > > > Subject: RE: [sv-ac] mantis 1550 > > > > > > > > > > > > This message thread has me confused. I do not understand how > > > > a "sampled" > > > > value can have an "update" event. From my user point of > > > > view, I expect > > > > $sampled and $past simply return to me the STABLE value of a > > > > signal as it > > > > exists in the Preponed region of the specified time step. It > > > > makes no sense > > > > for a STABLE value to need an update event! > > > > > > > > I use currently use $sampled in pass/fail action blocks as a > > > > way to print > > > > the Preponed sampled values used by an assertion to determine > > > > if a sequence > > > > passed or failed. If you now tell me that the sampled value can be > > a > > > > changing value, then $sampled and $past become completely worthless. > > > > > > > > Furthermore, if I am reading the message thread correctly, > > > > there seems to be > > > > discussion about acting on changes in the Postponed region. > > > > This region is > > > > very clearly defined as the point in a time step where all > > > > activity for that > > > > time step has been processed, and NO MORE EVENT ACTIVITY CAN > > > > OCCUR. Once > > > > simulation reaches the Postponed region, there are no more > > > > iterations within > > > > the time step to process the affects of changes, and changes > > > > are strictly > > > > prohibited. It is a read-only region. > > > > > > > > Can someone please explain to me what the AC committee is trying to > > > > accomplish by looking for changes on a $sampled or $past value? > > > > > > > > Stu > > > > ~~~~~~~~~~~~~~~~~~~~~~~~~ > > > > Stuart Sutherland > > > > stuart@sutherland-hdl.com > > > > +1-503-692-0898 > > > > > > > > > > > > > -----Original Message----- > > > > > From: owner-sv-ac@server.eda.org > > > > > [mailto:owner-sv-ac@server.eda.org] On Behalf Of Arturo Salz > > > > > Sent: Thursday, November 02, 2006 11:18 AM > > > > > To: Eduard Cerny; john.havlicek@freescale.com; > > > > > sv-ac@server.eda-stds.org > > > > > Subject: RE: [sv-ac] mantis 1550 > > > > > > > > > > I believe a more accurate statement would be: > > > > > > > > > > "Sampled values such as those returned by the $sampled and $past > > > > > functions are updated in the Postponed region" > > > > > > > > > > However, currently writing something like > > > > > always @($time) ... > > > > > will not work as expected. If we expect $sampled and $past to > > > > > behave in > > > > > this manner then they must be defined that way explicitly. > > > > > > > > > > Arturo > > > > > > > > > > -----Original Message----- > > > > > From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf > > Of > > > > > Eduard Cerny > > > > > Sent: Thursday, November 02, 2006 9:51 AM > > > > > To: john.havlicek@freescale.com; sv-ac@eda-stds.org > > > > > Subject: RE: [sv-ac] mantis 1550 > > > > > > > > > > Hi John, > > > > > > > > > > I will try to put something like that in the text... > > > > > > > > > > ed > > > > > > > > > > > -----Original Message----- > > > > > > From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On > > > > > > Behalf Of John Havlicek > > > > > > Sent: Thursday, November 02, 2006 12:47 PM > > > > > > To: sv-ac@eda-stds.org > > > > > > Subject: Re: [sv-ac] mantis 1550 > > > > > > > > > > > > Hi Ed: > > > > > > > > > > > > Can we have a clear statement somewhere in 17.7.3 that > > > > says that the > > > > > > return values of all of the sampled value functions change > > > > > only in the > > > > > > postponed region? > > > > > > > > > > > > Also, can we have a statement that update events due to changes > > in > > > > > > sampled value functions are scheduled in the appropriate > > > > > region of the > > > > > > next time slot? [It is still not clear to me that all > > > > these will go > > > > > > to the active region -- maybe some will go, e.g., to the > > reactive > > > > > > region.] > > > > > > > > > > > > If the redundancy is the bottleneck, one could say > > > > > something like, "It > > > > > > follows from the scheduling semantics (Section 9) that <blah > > > > > > blah blah>." > > > > > > > > > > > > Best regards, > > > > > > > > > > > > John H. > > > > > > > > > > > > > X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 > > > > > > > Content-class: urn:content-classes:message > > > > > > > Date: Thu, 2 Nov 2006 07:58:41 -0800 > > > > > > > Thread-Topic: [sv-ac] mantis 1550 > > > > > > > Thread-Index: Acb+j4hFCYP8sfsBR0avmxNqtXjgewABQSDgAADLaVA= > > > > > > > From: "Eduard Cerny" <Eduard.Cerny@synopsys.com> > > > > > > > X-OriginalArrivalTime: 02 Nov 2006 15:58:42.0631 (UTC) > > > > > > FILETIME=[C50FED70:01C6FE97] > > > > > > > > > > > > > > That's what I had in mind and tried to explain. > > > > > > > ed=20 > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On=20 > > > > > > > > Behalf Of Rich, Dave > > > > > > > > Sent: Thursday, November 02, 2006 10:53 AM > > > > > > > > To: john.havlicek@freescale.com; sv-ac@eda-stds.org > > > > > > > > Subject: RE: [sv-ac] mantis 1550 > > > > > > > >=20 > > > > > > > > I think the semantics of the return value of these > > > > > function is no > > > > > > > > different then the simple Verilog system function $time.=20 > > > > > > > >=20 > > > > > > > > You have to distinguish between the values returned by=20 > > > > > > > > references to the > > > > > > > > function versus evaluation events scheduled by a > > > > > > processes waiting on > > > > > > > > the event expression. This is somewhat harder to put into=20 > > > > > > > > words than to > > > > > > > > actually implement it. > > > > > > > >=20 > > > > > > > > I think it is OK to say that the value that will be > > > > > > returned by the > > > > > > > > function is updated in the postponed region because no > > one=20 > > > > > > > > can schedule > > > > > > > > a call in that region. You can also say that an > > > > update event is > > > > > > > > scheduled for the active region of the next time slot. > > > > > > > >=20 > > > > > > > > Dave > > > > > > > >=20 > > > > > > > >=20 > > > > > > > > > -----Original Message----- > > > > > > > > > From: owner-sv-ac@server.eda.org > > > > > > [mailto:owner-sv-ac@server.eda.org] > > > > > > > > On > > > > > > > > > Behalf Of John Havlicek > > > > > > > > > Sent: Thursday, November 02, 2006 6:59 AM > > > > > > > > > To: sv-ac@server.eda-stds.org > > > > > > > > > Subject: [sv-ac] mantis 1550 > > > > > > > > >=20 > > > > > > > > > Hi Ed: > > > > > > > > >=20 > > > > > > > > > In general, I like the semantics for $sampled and $past > > > > > > in your 1550 > > > > > > > > > proposal, but I have some concerns that make me vote > > > > > > "no" at this > > > > > > > > > time. > > > > > > > > >=20 > > > > > > > > > 1. I don't think we have yet clarified when the return=20 > > > > > > > > values of these > > > > > > > > > functions change. You say that $sampled is stable > > > > > > throughout the > > > > > > > > > simulator timestep and that $past changes in the=20 > > > > > > > > postponed region. > > > > > > > > >=20 > > > > > > > > > Can the return value of $past really change in the > > > > > postponed > > > > > > > > region? > > > > > > > > >=20 > > > > > > > > > I think it is bad if there can be calls/references > > > > > > to any of the > > > > > > > > > sampled value functions between the point that the > > > > > > return value > > > > > > > > > of one changes and the point that the return value > > > > > of another > > > > > > > > > changes in the same timestep. > > > > > > > > >=20 > > > > > > > > > 2. A related question is that of the semantics of > > > > > > events that refer > > > > > > > > > to sampled value functions. The intuition seems to > > > > > > be that the > > > > > > > > > return values of sampled value functions change "in > > > > > > between" the > > > > > > > > > simulation timesteps, so when do we schedule > > > > something like > > > > > > > > >=20 > > > > > > > > > @($sampled(p)) S1 > > > > > > > > >=20 > > > > > > > > > when written in various contexts (e.g., in a > > > > module, in=20 > > > > > > > > a program)? > > > > > > > > >=20 > > > > > > > > >=20 > > > > > > > > > 3. I would like to see $rose, $fell, and $stable > > > > > > defined in terms of > > > > > > > > > $sampled and $past. I think this should be easy. > > > > > > > > >=20 > > > > > > > > > We may need to get some SV-BC or other help with > > > > > items 1 and 2. > > > > > > > > >=20 > > > > > > > > > Best regards, > > > > > > > > >=20 > > > > > > > > > John H. > > > > > > > >=20 > > > > > > > >=20 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >Received on Fri Nov 3 15:47:10 2006
This archive was generated by hypermail 2.1.8 : Fri Nov 03 2006 - 15:47:24 PST