2 votos

Error con la sentencia Assert en Verilog

Tengo la siguiente sentencia assert en un bucle for, que está dentro de un bloque generate:

34   assert ((a[j] == 1'b1) || (a[j] == 1'b0))
35   else $error("Input 'a[" + j + "]' is not a digital logic value");

Cuando intento compilar, me sale el siguiente error:

Error: archivo (34): cerca de "(": error de sintaxis, inesperado '(', esperando propiedad

Por lo que veo, no me falta ningún paréntesis en el

2voto

GSerg Puntos 33571

No te está diciendo que te faltan paréntesis; te está diciendo que no espera un paréntesis en ese lugar.

No has proporcionado ningún contexto, pero si tu assert está fuera de un bloque de procedimiento ( initial o always ), entonces debe aparecer un nombre de propiedad entre el assert y el ( . Esto se conoce como una "afirmación concurrente".

El otro tipo (la sintaxis que has utilizado) es una "afirmación inmediata", y sólo puede aparecer dentro de un bloque de procedimiento.

Detalles adicionales aquí .

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X