RE: [sv-ac] 1900 Checkers

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Tue Oct 09 2007 - 05:21:44 PDT
Hi Tom,

Please, see my comments below. I am not attaching a new version since I
am still working on it to incorporate other comments from F2F.

Thanks,
Dmitry

-----Original Message-----
From: Thomas.Thatcher@Sun.COM [mailto:Thomas.Thatcher@Sun.COM] 
Sent: Thursday, September 27, 2007 1:44 AM
To: Korchemny, Dmitry
Cc: piper@cadence.com; sv-ac@eda-stds.org
Subject: Re: [sv-ac] 1900 Checkers

Hello Everyone,

Here are my comments so fare on the Mantis 1900 proposal "Checkers"
I'm still not done.  I still have to get through the section on free
variables.

Tom


1.  Right before Syntax 9-1:  "four statements"  should be "five",
because the
final block was added.

[Korchemny, Dmitry] I don't think it matters, since "four" is written in
the Draft3a. The new version does not number the statements.

2.  Free Variables:  How are they randomized, How are they repeatable?

[Korchemny, Dmitry] They can be randomized as any random variables. The
proposal does not define how they are repeatable. i.e., there is no
notion of seed. The reason is that non-deterministic free variables are
not intended for simulation, but for debugging FV checkers only. E.g.,
to give one possible trace of a non-deterministic model behavior. I
think that the seeding problem requires more elaboration, and it may be
solved in a backward compatible manner (one can say that the future
versions of LRM may impose repeatability restrictions on the free
variables). As far as I remember it was decided in the F2F not to
require supporting non-deterministic free variables in simulation.

3.  A previous version of the proposal included covergroups as a
possible
checker item. Now they seem to have been taken out. I'd like to see them
in.

[Korchemny, Dmitry] The reason why they have been taken out is the
various problems introduced by supporting RTL in checkers. Some more
work is needed to define their semantics in checkers, and this should be
done in cooperation with SV-EC. I saw that you opened a new Mantis item
for this issue, and I think this is a right way to proceed with it.

4.  p. 6.  "Checker action blocks shall not write into free variables,
and
they may contain any code . . ."
	Re-write as "Action blocks within a checker shall not write into
free
variables, but they may contain any other code . . ."

[Korchemny, Dmitry] "Checker action block" is a term introduced earlier
on this page. I rewrote this statement as: "Checker action blocks shall
not write into free variables, but they may contain any other code which
is normally allowed in action blocks in modules."

5.  p. 8.  "Since my_check1 instantiation is not in a scope of any
conditional
statement, its inferred enable condition is 1'b1."

Re-write as:  "If the enable pin connection had not been specified, the
inferred enable for the assertions in the my_check1 instantiation of the
checker would be 1'b1, since it is not in the scope of any conditional
statement"

As is, the statement almost implied that the inferred enable would
override
the value passed to the checker.

[Korchemny, Dmitry] This comment is not clear to me. We have here a
specific example, therefore the explanation should be specific and not
begin with "if". Also, all inferred enable conditions in the assertions
in any checker are 1'b1 regardless of the checker instantiation context,
since conditional statements inside a checker are not allowed and the
context is not inherited from the checker instantiation point. Therefore
we can speak only about the inferred enable condition for the entire
checker instantiation, and this is the intended meaning of the original
statement.

6.  Default clocking:  Are rules consistent?  For example, does default
clocking apply in module where it appears, any nested checker
definitions, etc.

[Korchemny, Dmitry] I think they are. Subclause 14.12 states: "A default
clocking is valid only within the scope containing the default clocking
specification. This scope includes the module, interface, or program
that contains the declaration as well as any nested modules or
interfaces. It does not include instantiated modules or interfaces." The
same rule was extrapolated to checkers: "Clock and disable context are
inherited from the scope of the checker declaration"
 
7.  What is the purpose for initial_check?  It's only to limit what may
appear in an initial block? What kind of event controls are allowed.

[Korchemny, Dmitry] In initial blocks the same event controls are
allowed as in always blocks. And clock events are likely to be used in
initial blocks containing concurrent assertions.

Right off the bat, it doesn't seem like a very useful construct, since
you
can't initialize anything in it.

[Korchemny, Dmitry] If you want an assertion to be monitored only once
you have to put it into an initial block, e.g. (in a module),

initial @(posedge clk) a1: assert property (a);
always @(posedge clk) a2: assert property (a);

a1 checks the value of a only at the first rising clock edge, while a2
checks the value of a at each rising clock edge.

Therefore there are no alternatives to initial blocks in checkers. The
reason of introducing a new construct initial_check is the same as for
always_check:

initial @clk a1: assert property (a);

will not infer the clocking event for a1, while initial_check will.



8.  p. 12, example a:  Shouldn't the variable idx be 6 bits, not 64
bits?
	const freevar bit [5:0] idx;

That is enough bits to index a 64-bit variable.

[Korchemny, Dmitry] Fixed.

9.  Note that example a would not work in simulation.  In simulation,
idx
would be initialized to one value, which it would keep throughout the
simulation.  The corresponding bit of data1 and data2 would match, but
the
other bits would not.

[Korchemny, Dmitry] It depends how we define the simulation of
non-deterministic free variables. The final decision was not to require
from simulators to support non-deterministic free variables. 

10.  Free variables can change at every time step?

[Korchemny, Dmitry] Continuous free variables are assigned when their
RHS changes (the proposal states that they are assigned every step to
avoid the definition of what changing of sampled value means and when it
happens), therefore this actually does not mean that their value does
change at each time step. Sequential free variables are synchronized by
a clock in case they are assigned. The non-deterministic free variables
are not required to be supported in simulation, therefore the issue is
not relevant for them.

11. Page 14:  Fragment sentence "This assignment shall at every time
step."

[Korchemny, Dmitry] Rewrote it as "This assignment shall execute at
every tine step."

Korchemny, Dmitry wrote On 09/19/07 02:27 AM,:
> Hi Lisa, Tom,
> 
>  
> 
> I uploaded the updated version of the proposal ready for review. This
> proposal does not contain a description of formal semantics yet.
> 
>  
> 
> Thanks,
> 
> Dmitry
> 
> ---------------------------------------------------------------------
> Intel Israel (74) Limited
> 
> This e-mail and any attachments may contain confidential material for
> the sole use of the intended recipient(s). Any review or distribution
> by others is strictly prohibited. If you are not the intended
> recipient, please contact the sender and delete all copies.
> 
> 
> -- 
> This message has been scanned for viruses and
> dangerous content by *MailScanner* <http://www.mailscanner.info/>, and
is
> believed to be clean.

-- 
------------------
Thomas J. Thatcher
Sun Microsystems
408-616-5589
------------------
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Oct 9 13:14:14 2007

This archive was generated by hypermail 2.1.8 : Tue Oct 09 2007 - 13:14:28 PDT