3.3. Esqueleto básico de un banco de pruebas

En el Ejemplo 3-5 se muestra el esqueleto de un banco de pruebas. En este caso hemos incluido el generador de reloj, el generador de reset, el dispositivo que deseamos verificar y un proceso secuencial en el que realizaremos las pruebas. A diferencia de ejemplos anteriores definimos el período de reloj a partir de la frecuencia de reloj expresada en MHz.

Ejemplo 3-5. Esqueleto de un testbench

library IEEE;
use IEEE.std_logic_1164.all;

entity Esqueleto is
end entity Esqueleto;

architecture Ejemplo of Esqueleto is
   constant FREQ_CLK : integer:=50; -- Frecuencia del reloj en MHz
   constant PERI_CLK : time:=1 us/FREQ_CLK;
   signal clk        : std_logic;
   signal detener    : boolean:=false;
   signal rst        : std_logic;
begin
   gen_reloj:
   process
   begin
      clk <= '1', '0' after PERI_CLK/2;
      wait for PERI_CLK;
      if detener then
         wait;
      end if;
   end process gen_reloj;

   rst <= '1', '0' after PERI_CLK*3/2;

   DUT : ComponenteAProbar
      generic map()
      port map();

   probar:
   process
   begin
      -- Prueba secuencial de nuestro dispositivo
      ...
      -- Fin de las pruebas
      detener <= true;
      wait;
   end process probar;
end architecture Ejemplo; -- Entity: Esqueleto
Copyright © 2011 UTN FRBA - INTI - Ing. Salvador E. Tropea