Re: [sv-ac] 1420

From: John Havlicek <john.havlicek_at_.....>
Date: Wed Aug 30 2006 - 04:34:46 PDT
Hi Manisha:

"Exporting" of local variables is supposed to refer to the mechanism
by which the local variables flow out of an instance of a declared 
sequence.  For example

  sequence foo(v);
     (a, v = e) ##1 b;
  endsequence

  property boo;
     logic lvar;
     en |=> foo(lvar) ##1 lvar == out;
  endproperty

  assert property (@(posedge clk) boo);

In this case, lvar is passed into the instance foo(lvar)
and is bound to v; v is then assigned within foo and flows out,
and the value assigned to v is held in lvar after the end
of the instance foo(lvar).  This is the export mechanism 
that is being referred to in 17.6.1.

When we discussed adding types, we talked about using 
some input/output qualification on the formal arguments to 
help clarify this mechanism.  I think it was decided not 
to complicate matters at that time and therefore to leave 
the exporting of local variables through typed arguments illegal.

My vision is that we be able to write sequence foo
more clearly as something like

  sequence foo1(output logic v);
     (a, v = e) ##1 b;
  endsequence

In this way the argument list of contains the declaration
of the local variable v and also indicates that the value 
assigned to v is intended to flow out (i.e., be exported) 
to the instantiating context.  I imagine one might
also use "inout" if a local variable argument is supposed 
to get an incoming value, possibly update the value, and 
export a value.  The fact that an argument is an "output"
or "inout" tells the instantiator that a local variable 
actual argument must be passed to this formal argument.

The specific syntax of "input", "output", "inout" is nice 
because it follows other portlists, but it could be changed 
if there is some technical objection.

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: Tue, 29 Aug 2006 15:21:59 -0700
> X-MS-Has-Attach: 
> X-MS-TNEF-Correlator: 
> Thread-Topic: [sv-ac] 1420
> Thread-Index: AcbHvunEk1D4ajHcTFCJGg7xJZFtQgD+Pxow
> From: "Kulshrestha, Manisha" <Manisha_Kulshrestha@mentor.com>
> X-OriginalArrivalTime: 29 Aug 2006 22:22:01.0374 (UTC) FILETIME=[8C87DBE0:01C6CBB9]
> X-Virus-Status: Clean
> X-MIME-Autoconverted: from quoted-printable to 8bit by server.eda-stds.org id k7TMM2Du002545
> Sender: owner-sv-ac@eda.org
> 
> Hi Doron,
> 
> I think there is a minor correction needed in the first example
> (finonacci1). The arguments are typed for the property but in the
> recursion part you are using local variables to pass to fibonacci1 (l_b,
> l_a etc). This is not legal as per typed argument passing rules defined
> in 17.6.1 as it says "Exporting values of local variables through typed
> formal arguments is not supported". Although in the properties section I
> do not see this restriction, I assume it is same for properties also.
> 
> Thanks.
> Manisha
> 
> -----Original Message-----
> From: owner-sv-ac@server.eda.org [mailto:owner-sv-ac@server.eda.org] On
> Behalf Of Doron Bustan
> Sent: Thursday, August 24, 2006 1:49 PM
> To: Lisa Piper; sv-ac@server.eda-stds.org
> Subject: Re: [sv-ac] 1420
> 
> The pdf is attached
> 
> Doron
> 
Received on Wed Aug 30 04:34:54 2006

This archive was generated by hypermail 2.1.8 : Wed Aug 30 2006 - 04:35:20 PDT