2.5. Informar y detener

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:

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.

Sugerencia

Es posible informar detalles al usuario y/o detener el banco de pruebas utilizando la sentencia assert.

Copyright © 2011 UTN FRBA - INTI - Ing. Salvador E. Tropea