Precedencia

Operadores

Precedencia

La siguiente tabla muestra la precedencia de los operadores de mayor a menor.

Los operadores del mismo nivel evalúan de izquierda a derecha.

Se recomienda utilizar paréntesis para definir el orden de precedencia y mejorar la legibilidad del código.

Operador Descripción
[ ] selección de bits ó parte
( ) paréntesis
!,~ NOT lógico y bit-wise
&,|,~&,~|,^,~^,^~ reducción AND, OR, NAND, NOR, XOR, XNOR
+,- (unario) signo positivo o negativo
{ } concatenación
{{ }} repetición
*,/,% (binario) multiplicación, división y resto (no siempre sintetizable)
+,- (binario) suma y resta
<<,>> desplazamientos a izquierda y derecha
<,>,<=,>= comparaciones
==,!= igualdad y desigualdad
& AND bit-wise
^,^~,~^ XOR bit-wise, XNOR bit-wise
| OR bit-wise
&& AND lógico
|| OR lógico
? : (ternario) condicional

Otras consideraciones importantes:

  • Un registro se considera como número no negativo en las operaciones aritméticas.
  • Si cualquier bit de un operando en una operación aritmética es X o Z, el resultado es X.

Ejemplos

4'hc > 10        (TRUE)
8'd12 && 9'h1    (TRUE)
8'h0 || 0        (FALSE)
!8'h6            (FALSE)
~4'b0111         (4'b1000)
2'b01 & 2'b11    (2'b01)
4'h8 | 4'h1      (4'h9)
&16'h324d        (1'b0)
|16'h1           (1'b1)
8'hfe << 3       (8'hf0)

Lógicos Reductores