[sv-bc] The new implication operator (->) should be short-circuiting, but 11.3.5 says it's not

From: Brad Pierce <Brad.Pierce_at_.....>
Date: Mon Oct 13 2008 - 14:50:48 PDT
When Mantis 1758 added the implication operator "->", I assumed that

       guard -> side_effector 

would be the same as

       guard ? |(side_effector) : 1'b1

According to 11.4.7

  "expression1 -> expression2 is logically equivalent to 

         (!expression1 || expression2)"

and Mantis 997 clarified that || is short-circuiting.

But Mantis 997 also added the following to 11.3.5

  "Some operators (&&, ||, and ?:) shall use short-circuit evaluation
[...] All other operators shall not use short circuit evaluation-all of
their operand expressions are always evaluated."

Shouldn't this be amended as follows?

  "Some operators (&&, ||, ->, and ?:)"


Also, according to 11.4.7, 

  "expression1 <-> expression2 is logically equivalent to
 
     ((expression1 -> expression2) && (expression2 -> expression1))"

So it should be clarified that each of the two operands is evaluated
exactly once, like the operands of the replication operator or the
expression in parentheses after 'case'.

-- Brad



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Oct 14 00:10:34 2008

This archive was generated by hypermail 2.1.8 : Tue Oct 14 2008 - 00:11:50 PDT