Microelectrónica ITT-Sistemas Electrónicos EL LENGUAJE VHDL BANCOS DE PRUEBAS • El banco de pruebas (test bench) es una descripción en VHDL que se utiliza para testear el funcionamiento de los circuitos descritos tambien en VHDL. • Esquema de un entorno de test Generador de estímulos (Banco de pruebas) Monitor de resultados (cronogramas o archivo de datos) • Modelo del hardware (Código VHDL) Generación de estímulos: – Código VHDL no sintetizable – Vectores de datos almacenados en vectores o tablas – Vec Vectores o es de datos d os almacenados ce dos en e un u archivo c vo • De momento solo se explicara el código VHDL no sintetizable – La declaración de entidad del banco de pruebas no tiene puertos. – En la arquitectura se declaran como señales los estímulos y respuestas del modelo. – Se instancia el modelo que se desea simular conectando sus entradas a los estímulos y sus salidas a las respuestas. – Por último último, se definen los vectores de simulación simulación, es decir decir, los valores que deben tomar los estímulos durante la simulación. METODOLOGÍAS Y HERRAMIENTAS PARA EL DISEÑO DE SISTEMAS DIGITALES 1 Microelectrónica ITT-Sistemas Electrónicos EL LENGUAJE VHDL BANCOS DE PRUEBAS – Ejemplo de banco de pruebas: entity test_retardo is end test_retardo; architecture para_test_retardo of test_retardo is component comp1 port(a : in bit; b : out bit); end component; f U0:comp1 for U0 1 use entity i work.inversor(rtl); ki ( l) signal t_s1, t_s2:bit; begin U0:comp1 port map (t_s1, t_s2); t_s1<= not t_s1 after 20 ns; end para_test_retardo; begin U0:comp1 port map (t_s1, t_s2); estimulos: process begin t_s1<='0'; wait for 20 ns; t s1<='1'; t_s1<='1'; wait for 20 ns; end process; end para_test_retardo; begin U0:comp1 port map (t_s1, t_s2); process begin t_s1 <=‘0’ , ‘1’ after 20 ns; wait for 40 ns; end process; end para_test_retardo; para test retardo; t_s1 0 20 40 60 80 100 t(ns) METODOLOGÍAS Y HERRAMIENTAS PARA EL DISEÑO DE SISTEMAS DIGITALES 2 Microelectrónica ITT-Sistemas Electrónicos EL LENGUAJE VHDL BANCOS DE PRUEBAS – Ejemplo de banco de pruebas para el circuito secuencial básico entity test_retardo is end test_retardo;; architecture para_test_retardo of test_retardo is component comp1 port(clk, d1 : in bit; q2 : out bit); end component; for U0:comp1 use entity work.ejemplo(rtl); signal a, b, z :bit; begin U0:comp1 port map (a,b,z); est1: process begin a<=‘0’ ; wait for 5 ns; a<=‘1’ ; wait for 5 ns; end process; est2: process begin b<=‘0’ ; wait for 2 ns; b<=‘1’ ; wait for 18 ns; b<=‘0’; wait for 20 ns; end process; end para_test_retardo; begin a<=‘0’ a<= 0 , ’1’ 1 after 5 ns; wait for 10 ns; end process; begin U0:comp1 port map (a,b,z); a<=‘0’ after 0 ns, ‘1’ after 5 ns, ‘0’ after 15 ns, ‘1’ after 20 ns, ‘0’ after 25 ns, ‘1’ 1 after 30 ns ns, ‘0’ after 35 ns; b<=‘0’ after 0 ns, ‘1’ after 2 ns, ‘0’ after 20 ns; eend d pa paraa_test_ test retardo; eta do; clk d1 0 5 10 15 20 25 30 METODOLOGÍAS Y HERRAMIENTAS PARA EL DISEÑO DE SISTEMAS DIGITALES 3
© Copyright 2024