¿Diseñando un banco de pruebas para un circuito de varios ciclos?

0

Digamos que tengo un circuito que realiza una función que toma 100 ciclos de reloj para completarse. Mi banco de pruebas alimenta las entradas al circuito y luego verifica si la salida es correcta.

No estoy seguro de cómo poner el retraso de 100 ciclos en el banco de pruebas. ¿Podría canalizarlo o alimentar la entrada, esperar 100 ciclos, verificar la salida, repetir? Pensé en usar declaraciones de "esperar por ns", pero esto detendría toda la actividad, lo que significa que el circuito no se cronometrará las 100 veces que debe ser.

    
pregunta gilianzz

2 respuestas

1

Este es un patrón de banco que hará lo que quieras.

El procedimiento no es necesario, solo hay una ilustración.

Puede completar el cuerpo del procedimiento, el código y la lista de señales según sea necesario.

Tendrá que cambiar do_test1 para que coincida con el borde del reloj que desea examinar.

Si está usando VHDL2008, puede usar la sintaxis de acceso a la señal del submódulo 'Nombres externos' para hacer que la prueba se ejecute en algún reloj oculto, como se muestra en el ejemplo.

library IEEE;
use IEEE.std_logic_1164.all;

package tests is
  procedure other_tests(sigs : types....);
end package;

package body tests is
  procedure other_tests(sigs : types....) is
  begin
  end procedure;      
endd package body;

library IEEE;
use IEEE.std_logic_1164.all;

entity TB is
end entity;

architecture bench of TB is

component some_entity is
  port (
    clk : in std_logic;
    op  : out std_logic
  );
end component;

signal op : std_logic;
alias clk is << signal.tb.uut1.clk : std_logic >>;

begin

  do_test1 : process
    for n in 1 to 100 loop
      wait until rising_edge(clk);
    end loop;

    other_tests();

  end process;  

  UUT1 : some_entity port map (clk => clk, op => op);

end architecture;
    
respondido por el Jason Morgan
0

Esto es lo que yo haría.

Inicialice el contador al mismo tiempo que la función, luego interrumpa cuando termine. Creo en el lenguaje Script, esta es la función UNTIL. (de la experiencia de prueba anterior)

    
respondido por el Tony EE rocketscientist

Lea otras preguntas en las etiquetas