Cuando hablamos de bancos de pruebas (en inglés test bench) nos referimos al conjunto elementos utilizados para probar un diseño. El concepto se basa en la analogía con un banco de pruebas físico, utilizado para verificar el funcionamiento de un dispositivo. En particular usamos la analogía con un banco de pruebas electrónico. En la Figura 1-1 podemos observar un ejemplo de banco de pruebas.
En un banco de pruebas físico colocaremos lo que queremos probar, usualmente denominado Dispositivo Bajo Prueba (Device Under Test o simplemente DUT). En dicho banco de pruebas tendremos instrumentos para generar señales de entrada, también llamadas estímulos (stimulus) y por otro lado tendremos equipamiento para verificar las salidas de nuestro dispositivo.
En el caso de un dispositivo descripto en VHDL el banco de pruebas estará compuesto por un código VHDL principal donde se instanciará nuestro DUT. Es decir un top level (el VHDL principal) que contendrá parte de los elementos que encontraríamos en un banco de pruebas físico y nuestro DUT.
Este VHDL es a lo que usualmente denominamos banco de pruebas, pero en la práctica suele ir complementado por otros elementos externos. En la Figura 1-2 podemos observar un diagrama en bloques completo.
Ejemplos de elementos usados para complementar nuestro VHDL son:
Programas que generan estímulos
Archivos que contienen estímulos
Visores de formas de onda
Programas para procesar los resultados obtenidos
A diferencia de una descripción de hardware en VHDL, cuyo objetivo es describir un circuito, nuestro banco de pruebas se usará para realizar una simulación de nuestro sistema. Durante esa simulación le inyectará estímulos a nuestro DUT y verificará si sus salidas coinciden con lo que queríamos realizar. Se trata de simular nuestro sistema, en lugar de traducirlo a un circuito (sintetizándolo) se tratará de simular el comportamiento del circuito.
Esto implica que un banco de pruebas ya no es un circuito, sino que es un programa que se encargará de verificar nuestra descripción del circuito. En la práctica los simuladores no son más que compiladores, capaces de convertir nuestro VHDL en un ejecutable, capaz de simular el comportamiento de nuestro circuito.
Debido a esto es que en un banco de pruebas nos encontraremos con elementos del lenguaje VHDL que son más similares a los que encontraríamos en un lenguaje de programación. Se suele hablar de elementos de VHDL para síntesis, o sintetizables, y elementos para simulación. Algunos ejemplos de elementos del lenguaje que suelen estar más orientados a simulación son:
El manejo de tiempo
El manejo de archivos
Reporte de información y/o errores
Tipos de datos muy elaborados
Otra consecuencia notable es que nuestro banco de pruebas no tendrá puertos de entrada y/o salida. Normalmente tampoco será parametrizable, con lo que nuestra entidad no tendrá ni port ni generic.
En los siguientes capítulos veremos los elementos de VHDL que nos serán útiles para realizar bancos de pruebas, luego veremos algunos ejemplos de como escribirlos.