RE: [sv-bc] Glitches in unique/priority case/if violations

From: Korchemny, Dmitry <dmitry.korchemny_at_.....>
Date: Mon Sep 03 2007 - 23:35:49 PDT
Hi Matt,

Unfortunately it is not easy to understand what the final value is.
Should it be in the Observed region? But the Observed region may be
visited several times in the simulation step and it is not known whether
the current visit is the last one. To evaluate the assertions in the
Postponed region is not an option, since there is no slot for the
execution of an action block there.

Since checking unique case does not require any action block to execute,
it may be done in the Postponed region, but then you are implicitly
introducing yet another kind of assertions into the language.

Our first attempt was to define "final" assertions to sample their
values in the Observed region, but we could not define it without making
major changes in the SV scheduling process. This is why we are trying to
reuse concurrent assertions for this purpose.

If you want to evaluate a concurrent assertion at each time step (i.e.,
to be clock independent), it is enough to define a system function, say
$simulation_tick, which will return an event at the beginning of each
simulation tick (it can be defined accurately). This function would be
similar to $global_clock which we are trying to introduce now. The main
reason why we did not want to state that the $global_clock is ticking at
each simulation step was the simulation efficiency.

Another point that needs to be taken into account is loops. A
straightforward definition will produce unexpected results. Consider
your example modified:

for (int i = 0; i < 3; i++) begin
	assert unique case (1'b1) inside 
  	[a[i]] out = ina;
  	[b[i]] out = inb;
	endcase
end

When checked in the Observed or in the Postponed region, the check will
be performed for i = 2 only, which apparently is not your intention.

Regards,
Dmitry

-----Original Message-----
From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org] On
Behalf Of Maidment, Matthew R
Sent: Tuesday, September 04, 2007 9:03 AM
To: Warmke, Doug; Brad Pierce; sv-bc@server.eda.org
Subject: RE: [sv-bc] Glitches in unique/priority case/if violations



In my opinion, there should be a class of assertions that are evaluated
at the end of the 
time step in which they are triggered.  The values that are sampled are
the final values for 
that time step-- and no clock should be implicitly or explicitly
associated with the assertion. 	

As awful as this may seem, I would propose an addition modifier to the
case statement to change
the evaluation from immediate to this new mode.  Something like
postponed or observed or reuse some 
keyword like assert or final.

observed unique case (1'b1) inside 
  [a] out = ina;
  [b] out = inb;
endcase

assert unique case (1'b1) inside 
  [a] out = ina;
  [b] out = inb;
endcase

I'm not stuck on the position of a new modifier, I'm just throwing it
out there so I can
see what it might look like.

I advocate leaving immediate assertions as they are and create this new
class to avoid
compatibility issues.

Matt
--
Matt Maidment
mmaidmen@ichips.intel.com
  

>-----Original Message-----
>From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On 
>Behalf Of Warmke, Doug
>Sent: Monday, September 03, 2007 9:40 PM
>To: Brad Pierce; sv-bc@eda.org
>Subject: RE: [sv-bc] Glitches in unique/priority case/if violations
>
>Hi Brad,
>
>I thought of this myself when I first saw Erik's proposal.
>After I read the proposal, I thought the technique he
>is proposing to deglitch those was not appropriate for
>the unique/priority case/if glitch problem.  But, maybe
>there are some things that could be done.
>
>The fundamental issue with unique/priority case/if is the
>lack of a clocking specification that would be used to
>strobe the logic at appropriate times.  
>
>In the immediate assertions situation, Erik is proposing to
>replace the immediate assertions with concurrent assertions.
>There are a few modifications to concurrent assertion semantics
>to make them appropriate for replacing immediate assertions.
>And by nature, concurrent assertions must be associated with
>an implicit or explicit clocking event.
>
>So, if we could oblige users to write their unique/priority
>case/if constructs in code where clocking can be inferred,
>perhaps the technology could work.
>
>But what about cases where no clocking can be inferred?
>Should those cases turn into errors?  Backwards compatibility
>problems would then arise.  Though backwards incompatibility
>with glitchy unique/priority detection could be argued to
>be not such a bad thing... 
>
>For the assertions proposal, I think this clocking situation
>is easier.  In cases where no clocking can be inferred,
>users will continue to use immediate assertions. They
>are susceptible to glitches, but at least there are no
>compatibility issues.
>
>Regards,
>Doug
>
>-----Original Message-----
>From: owner-sv-bc@server.eda.org [mailto:owner-sv-bc@server.eda.org] On
>Behalf Of Brad Pierce
>Sent: Monday, September 03, 2007 9:07 PM
>To: sv-bc
>Subject: [sv-bc] Glitches in unique/priority case/if violations
>
>In http://www.eda-stds.org/sv-ac/hm/4668.html the SV-AC is proposing a
>possible solution for the glitch issue in immediate assertions.
>
>Is there some way that this proposal could be leveraged into a solution
>for the glitch issue in unique/priority case/if violoations?
>
>That is, could the violations of unique/priority be defined in terms of
>implicit immediate assertions?
>
>Erik's SV-AC proposal is at
>
>  http://www.eda-stds.org/sv-ac/hm/att-4668/assertfinal070830es.pdf
>
>-- Brad
>
>
>-- 
>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.
>

-- 
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 Mon Sep 3 23:38:03 2007

This archive was generated by hypermail 2.1.8 : Mon Sep 03 2007 - 23:38:11 PDT