Durante los ultimos meses hemos creado muchos testbenches en VHDL para los ejemplos con los que hemos trabajado. Por ejemplo, hemos creado una ALU en VHDL con su testbench. Además en los tutoriales de VHDL y Verilog hemos hablado sobre los tesbenches.

No obstante, hasta ahora, no teniamos ningún video o articulo dedicado en exclusiva a como crear ficheros de test en VHDL. Por suerte, este artículo, y el video asociado que os dejamos a continuacion cubre este fallo.

Si quereis profundizar sobre el tema de los testbenches os recomiento encarecidamente que echeis un vistazo a nuestro curso de Udemy de VHDL donde se dedica mucho tiempo a hablar de testbenches tanto sencillos como avanzados.

¿Cómo se hace un testbench?

En el video se explica el proceso paso a paso de crear un testbench básico y la idea detras de el.

Una de las grandes ventajas de los lenguajes de descripción de hardware es la posibilidad de simular el circuito aplicándole valores a las entradas y comprobando las salidas para ver si el diseño funciona correctamente.

Para ello debemos crear un módulo vacio donde:

  • Conectaremos la entidad a simular.
  • Crearemos señales y las conectaremos a las entradas y salidas de la entidad.
  • Aplicaremos valores a las entradas.
  • Crearemos un reloj si es sistema lo utiliza.

En el caso del video el testbench es el siguiente:

library IEEE;
use IEEE.std_logic_1164.all;

--Entidad sin puertos donde en su interior conectaremos todo
entity testbench is
end entity;
architecture test of testbench is
  --Declaramos las señales que vamos a conectar al modulo a testear
  signal a,b,c : std_logic;
begin
  --Conectamos el modulo asignando las señales a los puertos
  UUT : entity and2 port map(a,b,c);

  --Damos valores a las entradas
  a <= '0', '1' after 10 ns;
  b <= '0', '1' after 20 ns;
end architecture;

¿Cómo simular un testbench?

Una vez que hemos hecho nuestro testbench podemos llamar al simulador. El simulador tomara la entidad de test que hemos creado y nos mostrará las formas de ondas correspondientes a las salidas.

Simuladores que podeis utilizar hay muchos, para Linux teneis GHDL open source, y comerciales hay una gran cantidad de ellos. Algunos como Modelsim os ofrecen licencias educativas. Hemos hecho videos en el canal sobre todo ello.

Testbenches avanzados en VHDL

Este tipo de test es el más basico posible, en el nosotros tenemos que crear los estimulos en las entradas y comprobar visualmente que las salidas son correctas. Esto es sistemas complejos no es posible.

En simulaciones grandes podemos por ejemplo, tomar las entradas de un fichero, aplicarlas a las entradas y volcar las salidas a otro fichero. Un ejemplo seria, tomar una imagen, procesarla en la simulacion de nuestro hardware y volcarla a otra imagen para poder comprobar el resultado a la salida.

La verificación es una rama de la electrónica en si misma. Para comprobar que un sistema es correcto existen multitud de tecnicas como, verificación funcional, verificación formal, test aleatorios.

Pero eso lo dejamos para otro artículo.