RE: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 2006

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Tue Oct 17 2006 - 10:07:19 PDT
Hi Hillel,

I think John's proposal addresses your issue.

Thanks,
Dmitry

-----Original Message-----
From: Miller Hillel-R53776 [mailto:r53776@freescale.com] 
Sent: Friday, October 13, 2006 11:06 AM
To: Eduard Cerny; Korchemny, Dmitry; sv-ac@eda.org
Cc: Miller Hillel-R53776
Subject: RE: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 2006

Ed, Dmitry

The user will still need to guess that 'lv' is a local variable given
the sequences s2 and s1. For example he would need to pass a variable
and not an expression. We do not have an explicit way of specifying that
a formal parameter needs to be local.

Thanks
Hillel


-----Original Message-----
From: Eduard Cerny [mailto:Eduard.Cerny@synopsys.com] 
Sent: Thursday, October 12, 2006 5:03 PM
To: Korchemny, Dmitry; Miller Hillel-R53776; Eduard Cerny; sv-ac@eda.org
Subject: RE: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 2006

Hi Dmitry,

the form using existing rules that you have at the end would be OK, it
seems to me 

ed 

> -----Original Message-----
> From: Korchemny, Dmitry [mailto:dmitry.korchemny@intel.com]
> Sent: Thursday, October 12, 2006 3:56 AM
> To: Miller Hillel-R53776; Eduard Cerny; sv-ac@eda.org
> Subject: RE: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 
> 2006
> 
> Hi Hillel, Ed,
> 
> I think everything used in a sequence/property should be (implicitly) 
> defined before its usage. I.e., it should be:
> * a sequence/property argument
> * a sequence local variable
> * objects visible in sequence/property from outside (as stated in the
> LRM: Variables used in a sequence that are not formal arguments to the

> sequence are resolved according to the scoping rules from the scope in

> which the sequence is declared.)
> 
> In the below example lv is not visible in p, and therefore should be 
> forbidden.
> 
> I would like to understand where this example comes from.
> 
> If it is pure theoretic, we can just forbid such cases (the easiest 
> solution).
> 
> If the goal is to divide a big sequence into parts for better 
> modularity, the natural solution would be to allow nested sequences. 
> In this case your example will look like:
> 
> property p;
> 	int lv;
> 
> 	sequence s1;
>   		(exp1, lv = exp2);
> 	endsequence
> 
> 	sequence s2;
> 		s ##1 (lv == exp3);
> 	endsequence
> 
> 	s2;
> endproperty
> 
> If the goal is to provide a generic solution, we need a mean to 
> specify a type of the name of a sequence as an argument. If we assume 
> a functional notation (I am not suggesting it as an actual sequence, 
> just want to be precise): int -> sequence, then you example will look 
> like:
> 
> sequence s1(int flv);
>   (exp1, flv = exp2);
> endsequence
> 
> sequence s2(int->sequence s);
>   int lv;
>   s(lv) ##1 (lv == exp3);
> endsequence
> 
> property p;
>   s2(s1);
> endproperty
> 
> Explanation: sequence s2 has an argument which is a NAME of sequence 
> having one integer argument. In property p we pass to s2 a NAME of s1,

> and not the SEQUENCE s1.
> 
> We should consider a type sequence proposed by Lisa not as a template 
> of a sequence, but as a result of a sequence. We have a similar 
> situation with functions: f(g(x)) - f takes a result of the 
> application of a function g to its argument x, and not the function 
> itself. If we want to APPLY a function g inside f, we should pass the 
> NAME of the function (in C it will be a pointer to the function).
> 
> But again, as a user I would just rewrite your example as:
> 
> sequence s1(int flv);
>   (exp1, flv = exp2);
> endsequence
> 
> sequence s2(sequence s, int lv);
>   s(lv) ##1 (lv == exp3);
> endsequence
> 
> property p;
>   int lv;
>   s2(s1(lv));
> endproperty
> 
> using existing SVA rules.
> 
> Thanks,
> Dmitry
> 
> -----Original Message-----
> From: owner-sv-ac@server.eda.org
> [mailto:owner-sv-ac@server.eda.org] On Behalf Of Miller Hillel-R53776
> Sent: Wednesday, October 11, 2006 9:31 AM
> To: Eduard Cerny; sv-ac@server.eda.org
> Subject: RE: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 
> 2006
> 
> Ed,
> 
> I think the intention is not to provide formal/actual arguments of a 
> sequence when specifying a sequence as formal type. As doron an dmitry

> said the formal argument should not include the signiture.
> The sequence
> type can be assigned with any legal sequence instance. So the example 
> should reduce down to this.
> 
> sequence s1(int flv);
>   (exp1, flv = exp2);
> endsequence
> 
> sequence s2(sequence s); // formal arg on a formal arg?
>   int lv;
>   s ##1 (lv == exp3); // lv as arg??
> endsequence
> property p;
>   s2(s1(lv));
> endproperty
> 
> My concern in this example is that the user whom is using the sequence
> s2 needs to be aware of s2's local variables .  If we do:
> 
> property p;
>   s2(s1(lv_arg));
> endproperty
> 
> Will this result in a undeclared variable error?
> 
> If this is the case then this use model is problematic from a language

> perspective.
> I think it is generally expected in a modular programming framework to

> have a well defined interface as part of the code, that is, in this 
> example one would need to specify how to use sequence s2. Not having 
> the name of the local variable specified in the header of the sequence

> does not pack the sequence s2 well for external usage.
> 
> Thanks
> Hillel
> 
> -----Original Message-----
> From: owner-sv-ac@eda.org [mailto:owner-sv-ac@eda.org] On Behalf Of 
> Eduard Cerny
> Sent: Tuesday, October 10, 2006 7:44 PM
> To: sv-ac@eda.org
> Subject: [sv-ac] IEEE 1800 SV-AC : minutes of meeting on 10/10 2006
> 
> Please find attached the minutes of the SV-AC meeting earlier today. 
> Let me know if you see any discrepancies.
> 
> Best regards,
> ed
> 
Received on Tue Oct 17 10:13:21 2006

This archive was generated by hypermail 2.1.8 : Tue Oct 17 2006 - 10:14:22 PDT