John, Yes, these examples are fine. It does type and range checking, but the final effect is a substitution. No passing by reference or value is needed. (By ref it would have to be "sequence s1(const ref logic [1:0] v);" ed > -----Original Message----- > From: John Havlicek [mailto:john.havlicek@freescale.com] > Sent: Thursday, June 29, 2006 11:17 AM > To: Eduard.Cerny@synopsys.COM > Cc: john.havlicek@freescale.com; Eduard.Cerny@synopsys.COM; > piper@cadence.com; Bassam.Tabbara@synopsys.COM; > dmitry.korchemny@intel.com; Brad.Pierce@synopsys.COM; > sv-ac@eda-stds.org > Subject: Re: [sv-ac] 928 Proposal Updated > > Hi Ed: > > Here are some examples. > > sequence s1(logic [1:0] v); > v[0] ##1 v[1]; > endsequence > > Suppse that a is of type logic [4:0]. > I expect the following instances to be legal: > > s1(a[4:3]) // a[4] goes to v[1], a[3] goes to v[0] > s1(a[3]) // 1'b0 goes to v[1], a[3] goes to v[0] > s1(a[2:0]) // a[2] is truncated, a[1] goes to v[1], a[0] > goes to v[0] > > I expect > > sequence s2(logic [1:0] v); > v[3] ##1 v[4]; > endsequence > > to yield a compilation error at the sequence declaration, > even though a passing by substitution might make sense for > the instance > > s2(a[4:3]) > > What do you think? > > J.H. > > > X-MimeOLE: Produced By Microsoft Exchange V6.5.7226.0 > > Content-class: urn:content-classes:message > > Date: Thu, 29 Jun 2006 06:02:40 -0700 > > Thread-Topic: [sv-ac] 928 Proposal Updated > > Thread-Index: Acabb6tsSsyoq+H2SSSQnbQz0tXtQwADFlGQ > > From: "Eduard Cerny" <Eduard.Cerny@synopsys.com> > > Cc: <piper@cadence.com>, <Bassam.Tabbara@synopsys.com>, > > <dmitry.korchemny@intel.com>, <Brad.Pierce@synopsys.com>, > > <sv-ac@eda-stds.org> > > X-OriginalArrivalTime: 29 Jun 2006 13:02:42.0070 (UTC) > FILETIME=[4E6DB360:01C69B7C] > > > > Hi John, > > > > no, I was thinking that if we leave the pass-by-value args > out, then all > > is treated as substitution, because even if it is an int or > logic, by > > substituting the epxression in the property you will get as > if passed by > > reference. =20 > > > > ed > > > > > > > -----Original Message----- > > > From: John Havlicek [mailto:john.havlicek@freescale.com]=20 > > > Sent: Thursday, June 29, 2006 7:32 AM > > > To: Eduard.Cerny@synopsys.COM > > > Cc: john.havlicek@freescale.com; piper@cadence.com;=20 > > > Bassam.Tabbara@synopsys.COM; Eduard.Cerny@synopsys.COM;=20 > > > dmitry.korchemny@intel.com; Brad.Pierce@synopsys.COM;=20 > > > sv-ac@eda-stds.org > > > Subject: Re: [sv-ac] 928 Proposal Updated > > >=20 > > > Hi Ed: > > >=20 > > > I think that sequence, property, and void arguments, as well > > > as untyped, are passed by substitution. > > >=20 > > > For other typed arguments, I think that we need to use the=20 > > > current LRM mechanism, which applies the assignement rules. > > > I think of this like having an implicit wire for the formal > > > argument in the declared sequence or property and assigning > > > the actual argument expression to that wire. As a result,=20 > > > the assignment rules for type coercion are used (e.g., truncation, > > > padding). If the type of the actual argument expression cannot=20 > > > be coerced to the type of the formal argument, then the compiler > > > should reject the code. > > >=20 > > > Is this what you have in mind? > > >=20 > > > J.H. >Received on Thu Jun 29 08:28:55 2006
This archive was generated by hypermail 2.1.8 : Thu Jun 29 2006 - 08:28:58 PDT