Como ya se mencionó anteriormente, es muy común que un banco de pruebas informe detalles de que es lo que está sucediendo. Por otro lado su objetivo es detectar errores. Para lograr estos objetivos el lenguaje VHDL posee una sentencia assert, la forma genérica de esta sentencia se puede ver en el Ejemplo 2-5.
Ejemplo 2-5. Forma genérica de la sentencia assert
assert CONDICIÓN report MENSAJE severity NIVEL_DE_SEVERIDAD;
Esta sentencia se activará cuando la condición indicada sea falsa, es decir que no se cumpla. En este aspecto es similar a la función de biblioteca homónima del lenguaje C.
En el caso en que la condición falle se informará al usuario el mensaje indicado. El mismo debe ser una cadena de caracteres.
El nivel_de_severidad indica cuan grave es el problema y, por lo tanto, que acción deberá tomar el simulador. Los niveles posibles son:
note se trata de un mensaje informativo. Es el nivel de severidad que se asume cuando no se indica ninguno.
warning se trata de un problema potencial al cual deberíamos prestarle atención.
error se usa para indicar que se ha detectado un error.
failure indica que el banco de pruebas ha fallado y aborta la simulación.
Usualmente un banco de pruebas estimulará nuestro DUT y a continuación verificará que el resultado sea el esperado utilizando una sentencia assert.
El formato del mensaje informado por esta sentencia no se encuentra estandarizado y, por lo tanto, depende de la herramienta. En el Ejemplo 2-6 se muestra el formato utilizado por el simulador ghdl.
Ejemplo 2-6. Ejemplo de mensaje reportado por assert
fuente_vhdl:línea:columna:@tiempo:(report severidad): Mensaje /tmp/pp.vhdl:15:7:@0ms:(report failure): Esto
Cuando se desea evitar la condición, es decir que usaríamos false en lugar de una condición, es posible abreviar la sentencia omitiendo el assert, es decir report MENSAJE severity SEVERIDAD.
Es posible informar detalles al usuario y/o detener el banco de pruebas utilizando la sentencia assert. |