RE: [sv-bc] Re: issue 324 for asymmetric casex

From: Rich, Dave <Dave_Rich_at_.....>
Date: Sat Apr 23 2005 - 00:46:35 PDT
New proposal uploaded to address these comments.

http://www.eda.org/svdb/bug_view_page.php?bug_id=0000324

> -----Original Message-----
> From: owner-sv-bc@eda.org [mailto:owner-sv-bc@eda.org] On Behalf Of
Steven
> Sharp
> Sent: Tuesday, April 05, 2005 6:40 PM
> To: sv-bc@eda.org; Brad.Pierce@synopsys.com
> Subject: Re: [sv-bc] Re: issue 324 for asymmetric casex
> 
> 
> >I would like to withdraw this proposal entirely, and see if we can't
> >put together something that would do a better job of avoiding
mismatches.
> 
> I hope I didn't discourage you with my comments.  This is just a
bigger
> thing to specify than it might appear at first glance.  However, it
> sounds like you are concerned that it may not do the job it is
intended
> to do.
> 
> >The inside operator doesn't seem to be the right one for the job.
> 
> There is an elegance to using something based on inside, since it
> implies both the asymmetric compare and the ranges.  On the other
> hand, we may want to extend the other kinds of cases to allow ranges
> too.  At that point, this won't seem as elegant.  The thing that
> will distinguish this kind of case will just be the asymmetric
> wildcarding.
> 
> >I need to think it through more, but perhaps an asymetric
case-wildcard
> >as proposed earlier (with no ranges) except that
> >
> >    1) The case items must be literals
> 
> This might be overly restrictive.  Admittedly, non-constant case
> items are less important once you have made the case asymmetric.
> For synthesis you would presumably require the case item expressions
> to be constants (not literals), but simulation doesn't require it.
> We can optimize a lot better with constants, but already have to
> handle non-constants for case, casex and casez, so this isn't any
> worse.
> 
> >    2) An x or z in a case item would match only a 0 or 1 in the
> >       case expression.
> >
> >That is, a don't-care in the case item would mean I don't care if the
> >case expression has a 0 or 1 in that bit, but it must be an actual
bit,
> >not an x or z.
> 
> I remember seeing a request for this kind of overly pessimistic
> wild-card treatment in an enhancement request.  It doesn't make sense
> to me.  It is not consistent with the meaning of 4-state logic.  The
> intent does not seem to be matching the actual behavior of logic.  It
> seems to be "I don't want X's, or don't understand them, so make
> sure my simulation doesn't work even if the real logic would."
> 
> This does not match the usual design philosophy for 4-state logic in
> Verilog.  An X means a value is either 0 or 1, but we cannot deduce
> which one it is under these circumstances.  If a case item has a
don't-
> care for a bit where the case expression has an X, it should match.
If
> the X were 0 it would match, and if the X were 1 it would match.
Since
> it will match regardless of whether the X is 0 or 1, we should treat
it
> as matching.  Verilog generally tries to model this accurately, unless
> it is too expensive to do so (as with arithmetic operations).  In this
> case, it is the same cost to do it accurately as to do it
pessimistically.
> 
> To put it another way, if there is a don't-care on a bit in a case
> item expression, it means that the bit is not an input to the decode
> logic that selects that case item.  Its value has no effect on the
> result of that decode.  Why would it matter if the bit is X or Z?
> 
> Not letting a don't-care match an X will *cause* mismatches between
> pre/post-synthesis simulation, not avoid them.
> 
> [Somebody might suggest unusual situations where an X or Z would not
> be treated consistently as a 0 or 1 by the logic, but if that were a
> concern we need to redesign the rest of the Verilog 4-state logic
> operations too.]
> 
> Steven Sharp
> sharp@cadence.com
Received on Sat Apr 23 00:46:46 2005

This archive was generated by hypermail 2.1.8 : Sat Apr 23 2005 - 00:48:44 PDT