RE: [sv-ac] RE: [sv-bc] Suppression of unique/priority glitches

From: Seligman, Erik <erik.seligman_at_.....>
Date: Tue Oct 16 2007 - 11:51:32 PDT
That's an interesting one!

So here's a question for the gurus:  does reaching the 'end' and going
back to the 'begin' constitute a rescheduling?  In other words, would
the flush-on-rescheduling alg rescue assert2 below?

On the other hand, I think we have a problem here in that with
flush-on-rescheduling, we lose assert1.


-----Original Message-----
From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org] On
Behalf Of Thomas Thatcher
Sent: Tuesday, October 16, 2007 11:02 AM
To: Seligman, Erik
Cc: Brad Pierce; sv-ac@server.eda.org; sv-bc@server.eda-stds.org
Subject: Re: [sv-ac] RE: [sv-bc] Suppression of unique/priority glitches

Hi Erik,

Here is a pathological case for you:  Suppose you have the following:


    always begin
	a = b;
	assert_deferred assert1 (...);
	c = d;
	@(b or d or f);
	e = f;
	assert_deferred assert2 (...);
	g = h;
    end

If we define the assertion cancellation point of the always block as the
top as you propose, then assert2 would never be reported.  The execution
flow will always wrap around to the top of the block, and assert2 will
be cancelled.

You won't see this in synthesizable code, but you might see variations
of this in test bench code.

Tom

Seligman, Erik wrote On 10/16/07 08:04 AM,:
> In this case, since the event control is not immediately after the 
> 'always', I would say the 'if' statement begins the procedural block, 
> fitting the definition of ' first non-event-control statement ' used 
> below.  Thus the flush point for our glitch-free assertions would be 
> right before the 'if'.
> 
> Does this cause a problem?
>   
> 
> -----Original Message-----
> From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org] 
> On Behalf Of Brad Pierce
> Sent: Tuesday, October 16, 2007 7:55 AM
> To: sv-ac@server.eda.org
> Cc: sv-bc@server.eda-stds.org
> Subject: RE: [sv-ac] RE: [sv-bc] Suppression of unique/priority 
> glitches
> 
> Which event control is first in the following always procedure?
> 
>    always if (c) @(posedge clk); else @(negedge clk);
> 
> -- Brad
> 
> -----Original Message-----
> From: Seligman, Erik [mailto:erik.seligman@intel.com]
> Sent: Tuesday, October 16, 2007 7:21 AM
> To: Brad Pierce; sv-ac@eda.org
> Cc: sv-bc@eda-stds.org
> Subject: RE: [sv-ac] RE: [sv-bc] Suppression of unique/priority 
> glitches
> 
> 
> 
>>>I'm not sure I see how this causes a major problem with the "flush 
>>>deferred assertions at the top of the block" model we were discussing

>>>before.  Why can't we define the flushing to occur after the event 
>>>control at the top of each procedural block?
> 
> ...
> 
>>This assumes that there is an event control at the top of each
> 
> procedural block.  The language doesn't require that there be one.
> ...
> 
>>Yes, and there can be multiple event controls scattered throughout the
> 
> procedural block, too.
> 
> I'm not too worried about providing good support from these new 
> glitch-free assertions for blocks with lots of event controls inside, 
> as long as we do something reasonable.
> 
> It seems to me that these are nitpicks with the phrasing, rather than 
> essential problems with the proposal.  Steve's description shows that 
> we have to describe things carefully since a common procedural block 
> suspends its execution at the top event control (if there is one) 
> rather than at the bottom of the block.
> 
> But isn't the first non-event-control statement in a procedural block 
> still something that is well defined?  Is a procedure truly an 
> amorphous loop that can be 'rotated' so randomly by a compiler that we

> have no way to define this first statement?
> 

--
------------------
Thomas J. Thatcher
Sun Microsystems
------------------

--
This message has been scanned for viruses and dangerous content by
MailScanner, and is believed to be clean.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Oct 16 11:53:09 2007

This archive was generated by hypermail 2.1.8 : Tue Oct 16 2007 - 11:53:28 PDT