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

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Thu Oct 12 2006 - 00:55:59 PDT
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 Thu Oct 12 00:56:08 2006

This archive was generated by hypermail 2.1.8 : Thu Oct 12 2006 - 00:56:30 PDT