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