Manejo de simulador HDL desde entorno de diseño HDL

El entorno de diseño que vamos a elegir es Quartus II de IntelFPGA.

En primer lugar vamos a ver un vídeo que nos permita conseguir los siguientes objetivos:

  • Configurar Quartus II para que pueda lanzar el simulador (Modelsim, questasim, Modelsim-altera starter edition, etc).
  • Ver como compilar y simular un banco de pruebas previamente escrito. 
  • Entender la estructura de directorios correspondiente al entorno de diseño y el directorio de trabajo del simulador
  • Saber cambiar los formatos de las señales a la hora de utilizar el visualizador de ondas

Evidentemente, la realización del banco de pruebas  mediante el uso de Verilog/systemverilog es una tarea que si no la tienes previamente realizada, puede convertirse en un pequeño incordio. Voy a introducir dos vídeos en los que puede observarse cómo nos ayudamos de un generador de bancos de pruebas del entorno de diseño, o de un generador de bancos de pruebas del propio entorno de simulación.

Tanto en un caso como en otro, la herramienta que genera el banco de pruebas es muy simple, se preocupa solo de instanciar correctamente la unidad objeto de verificaión (DUV) y   generar los estímulos más comunes (típicamente el reloj). No llegarán mucho más lejos ni estarán libres de errores en el propio código generado.

Veamos en primer lugar el generador de testbench de Quartus en el siguiente video en el que realizamos una simulación (en sus primeros pasos) de una máquina de estados.

Y ahora vamos a ver el generador de banco de pruebas de Modelsim en una simulación de un multiplicador SHIFT&ADD. Este vídeo tiene la particularidad de poder observar cómo  nuestros estímulos pueden ser dependientes de lo que la DUV esté generando en cada momento, gracias al manejo adecuado de nuestro Verilog del banco de pruebas.

Y dejo para el final la situación de  que dispongamos de un banco de pruebas complejo (normalmente en systemverilog) que requiera de varios ficheros y que necesitemos unas opciones especiales en los comandos de compilación y simulación. En esos casos puede ser una buena opción el tenerlo todo preparado en un fichero macro y el saber como poder ejecutarlo desde el entorno de diseño. Veámoslo en el siguiente ejemplo en el cual verificamos una FIFO con un banco de pruebas systemverilog medianamente complejo.