Of course, I meant "use sample_expr_k" in place of the original $past. > X-Authentication-Warning: server.eda-stds.org: majordom set sender to owner-sv-ac@eda.org using -f > Date: Tue, 3 Oct 2006 10:57:34 -0500 > Cc: dmitry.korchemny@intel.com, sv-ac@eda.org > From: John Havlicek <john.havlicek@freescale.com> > Reply-To: john.havlicek@freescale.com > X-Virus-Status: Clean > Sender: owner-sv-ac@eda.org > X-OriginalArrivalTime: 03 Oct 2006 15:57:52.0802 (UTC) FILETIME=[AEF82020:01C6E704] > > Hi Ed: > > What about the following: > > $past(expression, k, @(clocking_event)) ::== > var type(expression) sample_expr_0; > var type(expression) sample_expr_1; > var type(expression) sample_expr_2; > ... > var type(expression) sample_expr_k; > always @(clocking_event) > begin > sample_expr_0 = $sample(expression); > sample_expr_1 = $sample(sample_expr_0); > sample_expr_2 = $sample(sample_expr_1); > ... > sample_expr_k = $sample(sample_expr_k-1); > end > > and use sample_expr_k-1 in place of the original $past. > > Do you think that this gives the right meaning? > > J.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.7226.0 > > Content-class: urn:content-classes:message > > Date: Tue, 3 Oct 2006 07:23:26 -0700 > > Thread-Topic: [sv-ac] Issue #1550 > > Thread-Index: Acbm084n1L6de0xGQfW+kzleulorcgAIwpMQ > > From: "Eduard Cerny" <Eduard.Cerny@synopsys.com> > > X-OriginalArrivalTime: 03 Oct 2006 14:23:27.0949 (UTC) FILETIME=[7E7427D0:01C6E6F7] > > X-Virus-Status: Clean > > Sender: owner-sv-ac@eda.org > > > > This is a multi-part message in MIME format. > > > > ------_=_NextPart_001_01C6E6F7.7E696DF3 > > Content-Type: text/plain; > > charset="US-ASCII" > > Content-Transfer-Encoding: quoted-printable > > > > Hello Dmitry, > > =20 > > the definition=20 > > sampled(expression, clocking event) =3D (clocking event) ? expression : > > $past(expression, clocking event). The straightforward synthesis without > > a system clock is not clear in general case. > > =20 > > has a problem because there is no way to detect clocking event in a > > ternary expression. > > =20 > > What about something like this: > > =20 > > $sampled(expression, @(clocking_event)) ::=3D=20 > > var type(expression) sample_expr; > > always @(clocking_event) sample_expr =3D $sample(expression); > > =20 > > and use sample_expr in place of the original $sampled. > > =20 > > Would this work? > > =20 > > ed > > =20 > > > > > > ________________________________ > > > > From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf > > Of Korchemny, Dmitry > > Sent: Tuesday, October 03, 2006 6:08 AM > > To: sv-ac@eda.org > > Subject: [sv-ac] Issue #1550 > > =09 > > =09 > > > > Hi all, > > > > =20 > > > > During the discussion of #1550 a question was raised whether we > > need to keep a second argument of $sampled function. The current > > definition is $sampled(expression [, clocking event]) > > > > =20 > > > > If we want to keep it then its semantics should be: > > > > =20 > > > > $sampled(expression, clocking event) =3D (clocking event) ? > > expression : $past(expression, clocking event). The straightforward > > synthesis without a system clock is not clear in general case. > > > > =20 > > > > E.g., always a =3D $sampled(b, @(posedge clk)) > > > > or > > > > disable iff ($sampled(reset, @(posedge clk)) > > > > =20 > > > > Therefore we have three options: > > > > 1. Allow only one argument form, which is not backward > > compatible=20 > > 2. Allow two argument form in trivial cases only, e.g., > > always @(posedge clk) a =3D $sampled(b, @(posedge clk)), which is > > redundant=20 > > 3. Allow two argument form in trivial cases or when a > > system clock is present (I have a proposal about a system clock in one > > of my presentations)=20 > > > > =20 > > > > What do you think? > > > > =20 > > > > Thanks, > > > > Dmitry > > > > > > ------_=_NextPart_001_01C6E6F7.7E696DF3 > > Content-Type: text/html; > > charset="US-ASCII" > > Content-Transfer-Encoding: quoted-printable > > > > <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> > > <HTML><HEAD> > > <META http-equiv=3DContent-Type content=3D"text/html; = > > charset=3Dus-ascii"> > > <META content=3D"MSHTML 6.00.2900.2963" name=3DGENERATOR> > > <STYLE>@font-face { > > font-family: Courier; > > } > > @font-face { > > font-family: TimesNewRoman; > > } > > @page Section1 {size: 595.3pt 841.9pt; margin: 1.0in 1.25in 1.0in = > > 1.25in; } > > P.MsoNormal { > > FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Courier > > } > > LI.MsoNormal { > > FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Courier > > } > > DIV.MsoNormal { > > FONT-SIZE: 11pt; MARGIN: 0in 0in 0pt; FONT-FAMILY: Courier > > } > > A:link { > > COLOR: blue; TEXT-DECORATION: underline > > } > > SPAN.MsoHyperlink { > > COLOR: blue; TEXT-DECORATION: underline > > } > > A:visited { > > COLOR: purple; TEXT-DECORATION: underline > > } > > SPAN.MsoHyperlinkFollowed { > > COLOR: purple; TEXT-DECORATION: underline > > } > > P.Body { > > FONT-SIZE: 10pt; MARGIN: 10pt 0in 0pt; COLOR: black; FONT-FAMILY: = > > TimesNewRoman; TEXT-ALIGN: justify; punctuation-wrap: simple > > } > > LI.Body { > > FONT-SIZE: 10pt; MARGIN: 10pt 0in 0pt; COLOR: black; FONT-FAMILY: = > > TimesNewRoman; TEXT-ALIGN: justify; punctuation-wrap: simple > > } > > DIV.Body { > > FONT-SIZE: 10pt; MARGIN: 10pt 0in 0pt; COLOR: black; FONT-FAMILY: = > > TimesNewRoman; TEXT-ALIGN: justify; punctuation-wrap: simple > > } > > SPAN.EmailStyle18 { > > FONT-WEIGHT: normal; COLOR: windowtext; FONT-STYLE: normal; = > > FONT-FAMILY: Arial; TEXT-DECORATION: none > > } > > DIV.Section1 { > > page: Section1 > > } > > OL { > > MARGIN-BOTTOM: 0in > > } > > UL { > > MARGIN-BOTTOM: 0in > > } > > </STYLE> > > </HEAD> > > <BODY lang=3DEN-US vLink=3Dpurple link=3Dblue> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>Hello Dmitry,</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>the definition </FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3DArial = > > size=3D2>sampled(expression,=20 > > clocking event) =3D (clocking event) ? expression : $past(expression, = > > clocking=20 > > event). The straightforward synthesis without a system clock is not = > > clear in=20 > > general case.</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>has a problem because there is no way to detect clocking event = > > in a=20 > > ternary expression.</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>What about something like this:</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>$sampled(expression, @(clocking_event)) ::=3D = > > </FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4> var type(expression) = > > sample_expr;</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4> always @(clocking_event) </FONT></SPAN><SPAN=20 > > class=3D461491814-03102006><FONT face=3D"Courier New" color=3D#0000ff=20 > > size=3D4>sample_expr =3D $sample(expression);</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>and use sample_expr in place of the original=20 > > $sampled.</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>Would this work?</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4>ed</FONT></SPAN></DIV> > > <DIV><SPAN class=3D461491814-03102006><FONT face=3D"Courier New" = > > color=3D#0000ff=20 > > size=3D4></FONT></SPAN> </DIV><BR> > > <BLOCKQUOTE dir=3Dltr=20 > > style=3D"PADDING-LEFT: 5px; MARGIN-LEFT: 5px; BORDER-LEFT: #0000ff 2px = > > solid; MARGIN-RIGHT: 0px"> > > <DIV class=3DOutlookMessageHeader lang=3Den-us dir=3Dltr align=3Dleft> > > <HR tabIndex=3D-1> > > <FONT face=3DTahoma size=3D2><B>From:</B> owner-sv-ac@eda.org=20 > > [mailto:owner-sv-ac@eda.org] <B>On Behalf Of </B>Korchemny,=20 > > Dmitry<BR><B>Sent:</B> Tuesday, October 03, 2006 6:08 AM<BR><B>To:</B> = > > > > sv-ac@eda.org<BR><B>Subject:</B> [sv-ac] Issue = > > #1550<BR></FONT><BR></DIV> > > <DIV></DIV> > > <DIV class=3DSection1> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">Hi = > > all,</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">During the discussion of = > > #1550 a=20 > > question was raised whether we need to keep a second argument of = > > $sampled=20 > > function. The current definition is $sampled(expression [, clocking=20 > > event])</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">If we want to keep it = > > then its=20 > > semantics should be:</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">$sampled(expression, = > > clocking=20 > > event) =3D (clocking event) ? expression : $past(expression, clocking = > > event).=20 > > The straightforward synthesis without a system clock is not clear in = > > general=20 > > case.</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">E.g., always a =3D = > > $sampled(b,=20 > > @(posedge clk))</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">or</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">disable iff = > > ($sampled(reset,=20 > > @(posedge clk))</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"> Therefore we have = > > three=20 > > options:</SPAN></FONT></P> > > <OL style=3D"MARGIN-TOP: 0in" type=3D1> > > <LI class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">Allow only one = > > argument form,=20 > > which is not backward compatible</SPAN></FONT>=20 > > <LI class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">Allow two argument = > > form in=20 > > trivial cases only, e.g., always @(posedge clk) a =3D $sampled(b, = > > @(posedge=20 > > clk)), which is redundant</SPAN></FONT>=20 > > <LI class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">Allow two argument = > > form in=20 > > trivial cases or when a system clock is present (I have a proposal = > > about a=20 > > system clock in one of my presentations)</SPAN></FONT> </LI></OL> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial">What do you=20 > > think?</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: Arial"></SPAN></FONT> </P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: = > > Arial">Thanks,</SPAN></FONT></P> > > <P class=3DMsoNormal><FONT face=3DArial size=3D2><SPAN=20 > > style=3D"FONT-SIZE: 10pt; FONT-FAMILY: = > > Arial">Dmitry</SPAN></FONT></P></DIV></BLOCKQUOTE></BODY></HTML> > > > > ------_=_NextPart_001_01C6E6F7.7E696DF3--Received on Tue Oct 3 09:08:32 2006
This archive was generated by hypermail 2.1.8 : Tue Oct 03 2006 - 09:08:43 PDT