BANCOS DE PRUEBAS CON VHDL (TESTBENCHES). Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT.

1 BANCOS DE PRUEBAS CON VHDL (TESTBENCHES) ...
Author: Nicolás Ponce Farías
0 downloads 0 Views

1 BANCOS DE PRUEBAS CON VHDL (TESTBENCHES)

2 Sistemas Digitales - FIUBA Bancos de prueba ¿Cómo realizar la prueba de un dispositivo descripto en VHDL? DUT MONITOR ESTIMULOS Bancos de prueba con VHDL

3 Sistemas Digitales - FIUBA Bancos de prueba  Lograr un Testbench de calidad es imprescindible para la verificación de los diseños  No están regidos por las normas que se aplican en la síntesis de circuitos  Se utiliza un generador de señales de prueba y se analiza la respuesta del circuito mediante simulación  No eliminan por completo la necesidad de probar el circuito una vez sintetizado Bancos de prueba con VHDL

4 Formas de aplicar un estímulo Sistemas Digitales - FIUBA Bancos de prueba  Aplicación explícita del estímulo utilizando process  Sentencia For-Loop  Array  Utilización de archivos Bancos de prueba con VHDL

5 Aplicación explícita del estímulo utilizando process Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL A B C sel Componente a probar (DUT)

6 Aplicación explícita del estímulo utilizando process Sistemas Digitales - FIUBA Bancos de prueba entity mux_tb is end; architecture beh of mx_tb is -- declaración del componente a probar signal mux_in0, mux_in1, mux_out: std_logic_vector(1 downto 0); signal sel: std_logic; begin pp: mux port map(mux_in0, mux_in1, sel, mux_out); estimulo: process begin sel

7 Aplicación explícita del estímulo utilizando process Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL Selector en ‘0’: se selecciona la entrada mux_in0 Selector en ‘1’: se selecciona la entrada mux_in1

8 Aplicación explícita del estímulo utilizando For-Loop Sistemas Digitales - FIUBA Bancos de prueba entity mux_tb is end; architecture beh of mx_tb is -- declaración del componente a probar constant N_test: natural:= 4; signal mux_in0, mux_in1, mux_out: std_logic_vector(N_test-1 downto 0); signal sel: std_logic; begin pp: mux generic map(N_test) port map(mux_in0, mux_in1, sel, mux_out); estimulo: process begin for i in 0 to 7 loop sel

9 Aplicación explícita del estímulo utilizando For-Loop Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL Selector en ‘0’: se selecciona la entrada mux_in0 Selector en ‘1’: se selecciona la entrada mux_in1

10 Aplicación explícita del estímulo utilizando Arrays Sistemas Digitales - FIUBA Bancos de prueba entity mux_tb is end; architecture beh of mx_tb is -- declaración del componente a probar constant N_test: natural:= 4; signal mux_in0, mux_in1, mux_out: std_logic_vector(N_test-1 downto 0); signal sel: std_logic; begin pp: mux generic map(N_test) port map(mux_in0, mux_in1, sel, mux_out); estimulo: process type vect_sim is array(0 to 7) of std_logic_vector(N_test-1 downto 0); variable vect_sim1: vect_sim:= ("0000", "0001", "0010", "0011", "0100", "0101", "0110", "0111"); variable vect_sim0: vect_sim:= ("1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"); begin for i in 0 to 7 loop sel

11 Aplicación explícita del estímulo utilizando un Archivo Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL  VHDL provee un tipo de datos llamado file que permite el manejo de archivos tanto de entrada como de salida  Los archivos pueden abrirse de tres maneras: read_mode para lectura, write_mode para escritura y append_mode para agregar datos al final de un archivo existente  Pueden declararse en la parte declarativa de una arquitectura, un proceso o un subprograma

12 Aplicación explícita del estímulo utilizando un Archivo Sistemas Digitales - FIUBA Bancos de prueba entity mux_tb is end; architecture beh of mx_tb is -- declaración del componente a probar -- declaración de constantes y señales IDEM ejemplo anterior begin pp: mux generic map(N_test) port map(mux_in0, mux_in1, sel, mux_out); estimulo: process variable sel_aux: std_logic_vector(0 downto 0); file arch_stim: text open READ_MODE is "datos_simulacion.txt"; variable linea: line; variable dato1, dato2, dato3: integer; variable ch: character:= ' '; begin while not (endfile(arch_stim)) loop readline(arch_stim, linea); read(linea, dato1); read(linea, ch); read(linea, dato2); read(linea, ch); read(linea, dato3); sel_aux := std_logic_vector(to_unsigned(dato1, 1)); sel

13 Instrucciones Assert y Report Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL  Instrucciones que se utilizan para verificar una condición y emitir un mensaje durante la simulación  Pueden usarse en cualquier parte de un process assert condition [ report expression ] [ severity expression ]; [ label : ] report expression [ severity expression ] ;

14 Instrucciones Assert y Report: Ejemplos Sistemas Digitales - FIUBA Bancos de prueba Bancos de prueba con VHDL assert MemoriaLibre >= MEM_LIMITE_MINIMO report “Memoria baja, se sobrescribirán primeros valores” severity note; assert NumeroBytes = 0 report “Se recibió paquete sin datos” severity warning; assert AnchoDePulso >= 2 ns report “Pulso demasiado chico. No generará interrupción.” severity error; report “Inicio de simulación.”