RE: [sv-ec] A question about mixing rand and non-rand handles to the same object

From: Bresticker, Shalom <shalom.bresticker_at_.....>
Date: Sat Sep 30 2006 - 20:49:05 PDT
Best is both normative test AND examples.

Shalom


> -----Original Message-----
> From: owner-sv-ec@server.eda.org [mailto:owner-sv-ec@server.eda.org]
On
> Behalf Of Rich, Dave
> Sent: Sunday, October 01, 2006 1:10 AM
> To: William Paulsen; Ryan, Ray; sv-ec@server.eda-stds.org
> Subject: RE: [sv-ec] A question about mixing rand and non-rand handles
> to the same object
> 
> Bill,
> 
> And what would that mantis issue be? There's always room for more
> examples, but normative text is best.
> 
> Dave
> 
> 
> > -----Original Message-----
> > From: owner-sv-ec@server.eda.org [mailto:owner-sv-ec@server.eda.org]
> On
> > Behalf Of William Paulsen
> > Sent: Saturday, September 30, 2006 6:00 AM
> > To: Ryan, Ray; sv-ec@server.eda-stds.org
> > Subject: RE: [sv-ec] A question about mixing rand and non-rand
handles
> to
> > the same object
> >
> >
> > OK, Thanks
> > Should there be a new mantis issue for this?
> > Bill
> >
> > -----Original Message-----
> > From: Ryan, Ray [mailto:Ray_Ryan@mentor.com]
> > Sent: Friday, September 29, 2006 6:45 PM
> > To: Ryan, Ray; William Paulsen; sv-ec@eda-stds.org
> > Subject: RE: [sv-ec] A question about mixing rand and non-rand
handles
> > to the same object
> >
> > A had a couple people point out that I missed that
> > ch2.ch1 and ch2.rch1 both refer the same class instance.
> >
> > In this case, since the variable (refered to by either
> "ch2.rch1.rint1"
> > or "ch2.ch1.rint1") is included in the set of active random
variables
> it
> > should be treated as such (and not treated as a reference to a state
> > variable).
> >
> > This is an important part of constraint composition with classes.
> > Possibly we need to add something like:
> >
> > If an object is include in the set of active random variables, then
in
> a
> > constraint any variable reference that resolves to that object
> > constrains the generated random value for the object.
> >
> >
> > That is, the final set of random variables and constraints looks
like:
> >     Random variables:
> >  	<randVar1>   "ch2.rint2"
> >  	<randVar2>   "ch2.rch1.rint1"
> >     Constraints:
> >  	ch2.rch1.con1 { <randVar2> == 10; }
> >  	ch2.con2 {<randVar2> == <randVar1>;}
> >
> > So there is only 1 solution. IE. both random variables must be 10.
> >
> > Ray
> >
> > > -----Original Message-----
> > > From: owner-sv-ec@server.eda.org
> > > [mailto:owner-sv-ec@server.eda.org] On Behalf Of Ryan, Ray
> > > Sent: Friday, September 29, 2006 2:34 PM
> > > To: William Paulsen; sv-ec@server.eda-stds.org
> > > Subject: RE: [sv-ec] A question about mixing rand and non-rand
> handles
> >
> > > to the same object
> > >
> > >  When ch2.randomize() is called, the set of random objects and
> > > constraints initially consists of all the random members and
> > > constraints of ch2. These are:
> > >    Random variables:
> > >   	ch2.rint2
> > > 	ch2.rch1
> > >    Constraints:
> > > 	ch2.con2 {ch2.rint2 == ch2.ch1.rint1;}
> > >
> > > Because ch2.rch1 is random and is a class handle, its random
members
> > > and constraints are added to the randomization.
> > > So the random variable and constraints become:
> > >    Random variables:
> > > 	ch2.rint2
> > > 	ch2.rch1.rint1
> > >    Constraints:
> > > 	ch2.rch1.con1 { ch2.rch1.rint1 == 10; }
> > > 	ch2.con2 {ch2.rint2 == ch2.ch1.rint1;)
> > >
> > > A reference to a variable in a constaint does not make it 'rand'.
So
> > > yes, for this randomization, ch2.ch1.rint1 is a state value.
> > >
> > > Ray
> > >
> > > > -----Original Message-----
> > > > From: owner-sv-ec@server.eda.org
> > > > [mailto:owner-sv-ec@server.eda.org] On Behalf Of William Paulsen
> > > > Sent: Friday, September 29, 2006 1:29 PM
> > > > To: sv-ec@server.eda-stds.org
> > > > Subject: [sv-ec] A question about mixing rand and non-rand
> > > handles to
> > > > the same object
> > > >
> > > >
> > > > Section 13.4.8 of the LRM is not clear (to me) about the
following
> > > > scenario.
> > > > Does there need to be an explanation or clarification added
> > > to the LRM
> > > > for this?
> > > >
> > > > Thanks,
> > > > Bill
> > > >
> > > >
> > > > In the example below, two constraint expressions contain
> > > references to
> > > > the same property (rint1) of the same class
> > > > (class1) object instance.
> > > >
> > > >   In class2, constraint "con2" has the reference "ch1.rint1",
> where
> > > > "ch1"
> > > >   is not a rand handle.
> > > >
> > > >   In class1, constraint "con1" has the reference "rint1", where
> > > > "rint1"
> > > > is rand.
> > > >
> > > > Is "ch1.rint1" in constraint "con2" considered a state
> > > variable, or is
> > > > it one of the "active random objects?"
> > > >
> > > > One possibility is that in constraint "con2", "rint1" is a state
> > > > variable, whose value is not subject to generation, since
> > > "ch1" is not
> > > > rand.
> > > >
> > > > The other possibility is that since "ch2.ch1.rint1" is the same
> > > > property as "ch2.rch1.rint1", then it should be considered
> > > rand even
> > > > in the context of constraint "con2".
> > > >
> > > > module top;
> > > >
> > > > class class1;
> > > >   rand int rint1;
> > > >   constraint con1 { rint1 == 10;}
> > > > endclass
> > > >
> > > > class class2;
> > > >   rand int rint2;
> > > >   class1 ch1;
> > > >   rand class1 rch1;
> > > >   constraint con2 { rint2 == ch1.rint1; } // What value is
> > > > rint2 set to?
> > > > endclass
> > > >
> > > > class2 ch2 = new;
> > > > int res;
> > > >
> > > > initial begin
> > > >   ch2.ch1 = new;
> > > >   ch2.rch1 = ch2.ch1;  // The same object
> > > >
> > > >   ch2.ch1.rint1 = 20;
> > > >
> > > >   res = ch2.randomize();
> > > >
> > > >   if (ch2.rint2 == 20) $display("ch2.ch1 is considered
non-rand");
> > > >   if (ch2.rint2 == 10) $display("ch2.ch1 is considered rand");
end
> > > > endmodule
> > > >
> > > >
> > > >
> > >
> > >
Received on Sat Sep 30 20:49:14 2006

This archive was generated by hypermail 2.1.8 : Sat Sep 30 2006 - 20:49:41 PDT