RE: [sv-bc] legal operators for unpacked arrays, structs, unions, classes?

From: Steven Sharp <sharp_at_.....>
Date: Mon Feb 28 2005 - 15:34:14 PST
>I agree, as long as each element of the unpacked operator allows those
>operators.

Technically, case equality is not allowed for reals, and probably for
any other non-vector types.  However, it makes perfect sense to allow it
for them, with the same meaning as logical equality.  In fact, it makes
more sense to allow case equality than logical equality.  A comparison
between two chandles is a comparison for an exact match, with no
possibility of an X result.  That matches the definition of a case
equality better than the definition of logical equality.  I think the
only reason the logical equality operator was used for comparing reals
instead of the case equality operator, is that it is shorter to type.
The more concise operator was used for the most common compare on each
type.

I think it makes much more sense to do case equality on unpacked structs
than logical equality.  There are also issues of efficiency.  For a mixed
2/4-state unpacked struct, case equality is a simple memcmp of the whole
object (assuming all padding bits have a standard value).  On the other
hand, logical equality requires a much more complex operation of decomposing
the object into its components and comparing them independently.  This is
more expensive.  It also isn't consistent with the idea that this is an
operation on a monolithic object, as a whole.

Steven Sharp
sharp@cadence.com
Received on Mon Feb 28 15:34:37 2005

This archive was generated by hypermail 2.1.8 : Mon Feb 28 2005 - 15:34:53 PST