[sv-ac] 2005 review

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Sun Dec 02 2007 - 06:43:43 PST
Hi Erik,

 

I had an action item to review your proposal. Here are my comments:

 

*         Motivation section

 

o        "For example, the following implementation of a MUX gate will
execute the always block twice when a changes."

It should depend on the specific simulation algorithm, there may be no
glitch here. I would use "may" instead of "will"

o        Same sentence

Code should be in courier 9 (this note relates to the rest of the
proposal as well), "a" should not be in bold

o        The item "Immediate assertions can be placed ..." should not be
part of the list of the situations where a concurrent assertion cannot
be used in place of an immediate assertions; it has a different subject.

o        "Deferred assertions can be used in any place an immediate
assertion is permitted." The proposal also allows specifying them in the
structural context.

o        "The Observed region is the point at which the deferred
assertion reports are deemed "mature". Once mature, any associated
action block code shall execute in the following Reactive region." It
seems to be a reasonable definition versus reporting in the Postponed
region, but I am not 100% confident that this definition won't result in
a glitch behavior for well-formed designs.

 

*         16.4 Deferred Assertions

o        Only the first letter should be capital in the heading:
"Deferred assertions". This note relates to all other headings as well.

o        The proposal talks about deferred assertions only. It should
also mention deferred assume and cover statements.

o        Syntax diagram: assert #0 - # should not be in bold. All
terminals, even new should be in red. This note also relates to
subclause A.6.10.

o        I think that the parentheses around the event should not be
part of the syntax: is "assert @clk (expr)" illegal?

o        If the action blocks are evaluated in the Reactive region, why
are there limitations on the action blocks subroutine that it should not
contain output and inout ports?

 

*         16.4.1

o        "If a deferred assertion flush point (see 16.4.1)", should be
16.4.2

o        "the appropriate process's deferred assertion report queue" -->
"the appropriate process' deferred assertion report queue"

o        The code should be rendered in courier 9.

o        "or $error" --> "or $error, if the assertion fails and no
action_block is present". Also assert cover does not have "$error" by
default.

 

*         16.4.2

o        The bullet should be "*", also in 16.4.4.

o        " ... twice -- once...", should be " ... twice - once ..."

o        "A failure will be reported ..." - see the first note to the
"Motivation" section.

o        "always @(a or b)" "@" should not be in bold,  "or" should.

o        The numbering of assertions in their names should be
continuous: there comes a5 after a2. This comment applies to all the
sections, e.g., in the next subclause the assertion name is a99. Also,
the assertion names need not be unique if they belong to different
subclauses or even to different examples.

 

*         16.4.4 Add a reference to 9.6.2

 

*         16.4.5

o        There are redundant spaces, e.g., "delay.  Such". There are
many such cases in this subclause and throughout the proposal.

o        "pre-scheduled" --> "prescheduled"?

o        The scheduling algorithm for deferred assertions with events is
not completely clear to me. As far as I understood it, it is not
race-free. Consider the example from the proposal:

module fsm(...);

function bit foo(...)

                  ...

                  a42: assert @(posedge clk) (a == b);

                  ...

end

...

always_comb begin : b1

                  next_state = foo(x,y) ? ...

                  ...

end

endmodule

 

Assume that at the current simulation tick both a and clk change. If the
assertion a == b is violated at the current tick and its violation is
detected before the clk change then its violation will be reported at
the current simulation tick. If the clk changes before the violation has
been detected at the same simulation tick, the violation will be
reported (if at all) on the next rising clk only.

o        "the following edge-it will not" --> "the following edge - it
will not"

 

*         16.4.6 Code should be in courier 9. Check the fragment
starting from "Suppose simulation executes..." until the end of the
subclause.

 

*         Need to add VPI diagrams.

 

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, and is
believed to be clean.
Received on Sun Dec 2 06:51:11 2007

This archive was generated by hypermail 2.1.8 : Sun Dec 02 2007 - 06:51:40 PST