RE: [sv-ec] Re: Arguments to "randomize" method calls

From: Ryan, Ray <Ray_Ryan_at_.....>
Date: Wed Mar 08 2006 - 10:01:24 PST
Gord, Arturo,

Here is an additional alternative.

Remove the special scope rule for the arguments to a
class randomize method and remove the restriction that
the arguments (actuals) must be simple names. Then add
the semantic restriction that an actual to a class 
randomize function must refer to member of the class. 
Finally specify the arguments (formals) of randomize 
as 'ref' arguments.

So instead of
	st = x.randomize(a,b);
we would have
	st = x.randomize( x.a, x.b );


- Ray


> -----Original Message-----
> From: owner-sv-ec@eda.org [mailto:owner-sv-ec@eda.org] On 
> Behalf Of Vreugdenhil, Gordon
> Sent: Wednesday, March 08, 2006 8:03 AM
> To: Arturo Salz
> Cc: SV_EC List
> Subject: Re: [sv-ec] Re: Arguments to "randomize" method calls
> 
> 
> 
> Arturo Salz wrote:
> 
> > Gord,
> > I see your point. Yes, this is the same old ambiguity due to 
> > hierarchical references. This type of ambiguity is 
> typically resolved 
> > by deferring the code generation until after elaboration (or by 
> > generating generic code to be interpreted at run time). But in the 
> > case of the randomize method this seems more severe because it 
> > involves different name binding semantics so it's harder to either 
> > defer or interpret at run-time. Do you have any ideas that may 
> > alleviate this problem?
> 
> The code gen issues could be handled (although it would be 
> horrendously ugly) -- the semantic issues involving things 
> like package import can't.  In particular if the name "x" 
> isn't defined but is a potentially visible name, the compiler 
> can't determine whether it actually needs to import "x" into 
> the local scope.  The reverse is also true; if this is a user 
> call and the compiler doesn't import "x", it would be 
> required to figure out all the impact of having done so and 
> retroactively apply that impact at elab time.  That seems a 
> bit over the top.
> 
> I can think of several ways to resolve this:
>    1) disallow hierarchical calls with named members (seems harsh)
>    2) require at least a trivial inline constraint for
>       disambiguation purposes
>    3) make "randomize" a keyword (disallowing a user task 
> with that name)
>    4) make the member name a string rather than an ident
>    5) introduce some other syntactic form -- perhaps a prefix
>       such as "member.x" or similar that is valid in only this
>       context.
> 
> I am predisposed to a syntactic differentiator -- based on 
> the principle of "least surprise", if something is different, 
> we should make it look different.  I'd prefer to have "x"
> look different.  Although I don't usually like highly context 
> sensitive rules, a "member." prefix is somewhat appealing to me.
> 
> If a syntactic change is not acceptable, then either 2 or 3 
> is probably the best.  I know that adding more keywords won't 
> be on anyone's preferred solution so perhaps (2) would be my 
> next suggestion.
> 
> Gord.
> 
> > 
> >             Arturo
> 
> --
> --------------------------------------------------------------------
> Gordon Vreugdenhil                                503-685-0808
> Model Technology (Mentor Graphics)                gordonv@model.com
> 
Received on Wed Mar 8 10:01:31 2006

This archive was generated by hypermail 2.1.8 : Wed Mar 08 2006 - 10:01:52 PST