+ All Categories
Home > Documents > Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL...

Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL...

Date post: 09-Apr-2020
Category:
Upload: others
View: 4 times
Download: 0 times
Share this document with a friend
64
Ing. Andrés Miguel Airabella. Ing. Facundo Aguilera. Simulación Simulación avanzada con avanzada con TestBench en HDL TestBench en HDL
Transcript
Page 1: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

Ing. Andrés Miguel Airabella.Ing. Facundo Aguilera.

Simulación Simulación avanzada con avanzada con

TestBench en HDLTestBench en HDL

Page 2: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 22

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Desc. del Problema

Descripción HDL

Synthesis

Place and Route / Fit

Page 3: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 33

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 4: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 44

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 5: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 55

Every time you Every time you breath, you verify. breath, you verify.

Nizar Abdallah, Actel Corp. Nizar Abdallah, Actel Corp.

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 6: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 66

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Estímulos HDL

Desc. del Problema I/O Esperadas

Simulación

Simulación

Simulación

Descripción HDL

Synthesis

Place and Route / Fit

Page 7: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 77

¿Qué es un ¿Qué es un TestBench?TestBench?

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 8: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 88

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 9: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 99

010010011101 101101100010

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 10: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1010

010010011101 101101100010

HDL

VHDL AMS

HDL

HDL

o

VHDL AMS

VHDL AMS

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 11: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1111

TestBenchTestBench

UUT (o DUT)

Full Adder

00000000 a_i 01101001 s_o

VHDLSecuencia

de 1 y 0

00110011 b_i01010101 c_i

00010111 c_o

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 12: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1212

TestBenchTestBench

UUT

Multiplicador

32 bits x 32 bits

/32

VHDLSecuencia

de 1 y 0

/32

/

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 13: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1313

TestBenchTestBench

UUT

Multiplicador

32 bits x 32 bits

/32

VHDLSecuencia

de 1 y 0

/32

/64

Posibles Combinaciones para las entradasPosibles Combinaciones para las entradas223232 * 2 * 23232 = 18.446.744.073.709.551.616 = 18.446.744.073.709.551.616

221414 * 2 * 21414 = 268.435.456 = 268.435.456

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 14: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1414

TestBenchTestBench

UUT

Multiplicador

32 bits x 32 bits

/32

VHDLSecuencia

de 1 y 0

/32

/64

¿Por qué simular todos los valores?¿Por qué simular todos los valores?Mult <= A * B;Mult <= A * B;Sum <= A + B;Sum <= A + B;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 15: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1515

TestBenchTestBench

UUT

Multiplicador

14 bits x 14 bits

/14

VHDLSecuencia

de 1 y 0

/14

Chequearesultados

/28

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 16: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1616

¿Qué hay dentro de ¿Qué hay dentro de un TestBench?un TestBench?

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 17: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1717

Entidad del TestBenchEntidad del TestBench

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity fa_tb isend entity;

Ejemplo: Ejemplo: FullAdderFullAdder

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 18: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1818

Arquitectura del TestBench (I)Arquitectura del TestBench (I)architecture fa_arch_tb of fa_tb is

­­ Defino el componentecomponent fa is    port (        A_i   : in  std_logic;        B_i   : in  std_logic;        C_i   : in  std_logic;        S_o   : out std_logic;        C_o   : out std_logic          );end component;...

Ejemplo: Ejemplo: FullAdderFullAdder

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 19: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 1919

Arquitectura del TestBench (II)Arquitectura del TestBench (II)...­­ Defino Señales de Interconexion.signal A_i   :  std_logic;signal B_i   :  std_logic;signal C_i   :  std_logic;signal S_o   :  std_logic;signal C_o   :  std_logic;

­­ Otras Declaraciones...

Ejemplo: Ejemplo: FullAdderFullAdder

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 20: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2020

Arquitectura del TestBench (III)Arquitectura del TestBench (III)...begin­­ Instanciar el componente fafa1: fa port map    (    A_i => A_i, B_i => B_i,    C_i => C_i, S_o => S_o,    C_o => C_o);

­­ Aplicamos los vectores de prueba, ­­ asignaciones manuales, ­­ archivo de test...end architecture fa_arch_tb; 

Ejemplo: Ejemplo: FullAdderFullAdder

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 21: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2121

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 22: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2222

Generación de Estímulos - Asignaciones ManualesGeneración de Estímulos - Asignaciones Manuales

- Manualmente escribo los valores (y su duración en el tiempo) de las entradas (opc. de las salidas).

- Ejecuto el TestBench para un tiempo específico.

- Veo los resultados en la forma de onda o por consola.

Andrés Miguel AirabellaFacundo Aguilera

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 23: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2323

Generación de Estímulos - Asignaciones ManualesGeneración de Estímulos - Asignaciones ManualesUncloked: process begin

    D_i <= '0';     RESET_i <= '1';     wait for 230 ns;                 ­­ Reset

    RESET_i <= '0'; wait for 170 ns; ­­ No Reset        D_i <= '1'; wait for 160 ns;    D_i <= '0'; wait for 260 ns; ­­ ...

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 24: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2424

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 25: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2525

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 26: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2626

Page 27: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2727

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 28: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2828

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Loop

UUT

señal1(i)señal2(i)señal3(i)

i++

Page 29: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 2929

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Loop

UUT

ClockRetardo

señal1(i)señal2(i)señal3(i)

i++

<

Page 30: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3030

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

DUT

Loop

a = ib = j

i++j++Sumador

7 bitsba

sum

Esperados

Page 31: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3131

rca

\7 S_o

C_iC_iC_o

\7

A_i

B_i

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 32: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3232

library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.numeric_std.all;use std.textio.all;

entity rca_tb isend entity;

architecture rca_arch_tb of rca_tb is­­ Defino el componentecomponent rca is    generic (size : integer :=2);    port ( A_i   : in  std_logic_vector(size ­ 1 downto 0);           B_i   : in  std_logic_vector(size ­ 1 downto 0);           C_i   : in  std_logic;           S_o   : out std_logic_vector(size ­ 1 downto 0);           C_o   : out std_logic);end component;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

library IEEE;use IEEE.STD_LOGIC_1164.ALL;

entity fa_tb isend entity;

Page 33: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3333

­­ Defino Seniales de Interconexion.signal A_i   :  std_logic_vector(6 downto 0);signal B_i   :  std_logic_vector(6 downto 0);signal C_i   :  std_logic;signal S_o   :  std_logic_vector(6 downto 0);signal C_o   :  std_logic;

begin

­­ Instanciar el componente rcarca1: rca generic map (7)port map(    A_i => A_i,    B_i => B_i,    C_i => C_i,    S_o => S_o,    C_o => C_o);

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 34: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3434

testeo:processvariable suma_integer  : integer := 0;variable suma_unsigned : unsigned (7 downto 0);variable s : line;variable errors : boolean := false;begin    for i in 0 to 2**7 ­1 loop        for j in 0 to 2**7 ­1 loop            for k in 0 to 1 loop                A_i <= std_logic_vector(to_unsigned(i,7));                B_i <= std_logic_vector(to_unsigned(j,7));                if k = 1 then C_i <= '1';                else          C_i <= '0';                end if;

                wait for 50 ns;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 35: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3535

suma_unsigned  := to_unsigned(i + j + k, 8);suma_integer   := i + j + k;write(s, string'("Sumando ")); write(s, i); write(s, string'(" + ")); write(s, j); write(s, string'(" con Carry ")); write(s, k); writeline(output,s);

­­ Chequeo Carryif C_o = std_logic(suma_unsigned(7)) then    write(s, string'("Carry Ok"));    writeline(output,s);else     write(s, string'("Error de Carry. Se esperaba "));         write(s, k);    writeline(output,s);

 errors := true;end if;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 36: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3636

­­ Chequeo Sumaif std_logic_vector(suma_unsigned(6 downto 0)) = S_o then    write(s, string'("Suma Ok"));    writeline(output,s);else     write(s, string'("Error de Suma. Se esperaba "));     write(s, suma_integer);      writeline(output,s);    errors := true;end if;

if errors then exit; end if;end loop;

if errors then exit; end if;end loop;

if errors then exit; end if;end loop;wait;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Archivos rca*.*

Page 37: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3737

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

a = ib = j

i++j++DUT

Esperados

...

k++

Page 38: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3838

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

a = ib = j

i++j++DUT

Esperados

...

k++

Place and Route / Fit

Place and Route / Fit

SynthesisSynthesis

Descripción HDL

Descripción HDL1

2

3

Page 39: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 3939

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Test 2

Test 1

Multiplicador

n bits

A(i,j) = 10101010<<iB(i,j) = 10101010<<ji++j++

A(i,j)=test2(i,j)i++j++ B(i,j)=test2(i,j)

Page 40: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4040

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 41: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4141

Bucles con vectores de pruebaBucles con vectores de prueba

- Genero un ARREGLO de VECTORES con valores para las entradas (op. para las salidas también).

A_i

­­ Declaro Tipo Vector de Testtype test_vector is record    A_i   :  std_logic;    B_i   :  std_logic;    C_i   :  std_logic;    S_o   :  std_logic;    C_o   :  std_logic;end record; 

B_i C_i S_o C_o

Declaración de Tipotest_vector

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 42: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4242

Bucles con vectores de pruebaBucles con vectores de prueba

- Genero un ARREGLO de VECTORES con valores para las entradas (op. para las salidas también).

0 0 0 0 0

­­ Declaro Tipo Arreglo de Vectores de Testtype test_vector_array is array(natural range<>) of test_vector;

A_i B_i C_i S_o C_o

0 0 1 1 0

Posición n

Posición n + 1

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 43: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4343

Bucles con vectores de pruebaBucles con vectores de prueba

- Genero un ARREGLO de VECTORES con valores para las entradas (op. para las salidas también).

­­ Declaro y lleno un arreglo constante de valores.constant t_v : test_vector_array := (  ­­ Formo todas las combinaciones posibles para las E/S  (A_i => '0', B_i => '0', C_i => '0', S_o => '0', C_O => '0'),  (A_i => '0', B_i => '0', C_i => '1', S_o => '1', C_O => '0'),  .  .  .

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 44: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4444

Bucles con vectores de pruebaBucles con vectores de prueba

- En un for  in  loop recorro todos los valores del ARREGLO y se los voy asignando al UUT (o DUT).

for i in t_v'range loop  ­­ Leer el valor del vector i  vector := t_v(i);

  ­­ Asigno a las seniales correspondientes  A_i <= vector.A_i;  B_i <= vector.B_i;  C_i <= vector.C_i;...

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 45: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4545

Bucles con vectores de pruebaBucles con vectores de prueba

- Veo los resultados en la forma de onda o chequeo directamente en el TestBench.

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 46: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4646

Bucles con vectores de pruebaBucles con vectores de prueba

- Genero un ARREGLO de VECTORES con valores para las entradas (op. para las salidas también).

- En un for  in  loop recorro todos los valores del ARREGLO y se los voy asignando al UUT (o DUT).

- Veo los resultados en la forma de onda o chequeo directamente en el TestBench.

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 47: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4747

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 48: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4848

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Escenario realEscenario real

PLDSeñales

eléctricas Comunicación

Otro

dispositivoPLD

PLD o

Componente

Page 49: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 4949

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Escenario realEscenario real

Señales

eléctricas PLDComunicación

PLDPLD o

Componente

Page 50: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5050

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

TestBenchTestBench

Componente

virtual

(VHDL)

Estímulos DUTComunicación

Page 51: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5151

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

CasoCaso

ADC

Estímulos

DUT

Clock

Procedimientos

Asignaciones

EJEMPLOEJEMPLO

Page 52: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5252

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 53: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5353

TestBenchTestBench

DUTLectura

Archivos

Escritura

Archivos

ReporteReporte

SalidaSalida

.txt, .dat.txt, .dat

......

EstimulosEstimulos

.txt, .dat.txt, .dat

......

Test

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 54: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5454

use std.textio.all;...

file vector_file : text is in "estimulos.txt";...

read(L: line, Valor: character, Valid: boolean);

Lectura

Archivos

EstimulosEstimulos

.txt.txt

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 55: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5555

use std.textio.all;...

file vector_file : text is out "salida.txt";...

Write (L: line, Valor: character, Valid: boolean);

Escritura

Archivos

SalidaSalida

.txt.txt

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 56: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5656

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 57: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5757

RelojesRelojes- Manual- Manual

- Sentencia Concurrente- Sentencia Concurrente

- Módulo de Clock- Módulo de Clock

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 58: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5858

ManualManual    wait for 50 ns; CLK_i    <= '1';

    wait for 25 ns; RESET_i  <= '1';

    wait for 25 ns; CLK_i    <= '0';        wait for 50 ns; CLK_i    <= '1';    wait for 50 ns; CLK_i    <= '0';    wait for 50 ns; CLK_i    <= '1';

    wait for 25 ns; RESET_i  <= '0';

    wait for 25 ns; CLK_i    <= '0';

    wait for 25 ns;

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 59: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 5959

ConcurrenteConcurrente    CLK_i <= not (CLK_i) after 50 ns; 

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 60: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 6060

Módulo de ClockMódulo de Clockentity tb_simple_clock is port ( CLK_PERIOD: in time; -- := 20 ns; CLK_DUTY: in real; -- := 50.0; active: in boolean; clk_o: out std_logic );end entity tb_simple_clock ; architecture beh of tb_simple_clock isbegin P_main: process begin wait until active; while (active = true) loop clk_o <= '0'; wait for CLK_PERIOD * (100.0 - clk_Duty)/100.0; clk_o <= '1'; wait for CLK_PERIOD * clk_Duty/100.0; end loop; clk_o <= '0'; wait; end process;end architecture beh;

Clock

Page 61: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 6161

AgendaAgenda- Generalidades- Generalidades- Generación de Estímulos- Generación de Estímulos - Asignaciones Manuales- Asignaciones Manuales - Bucle- Bucle - Bucle con vectores de prueba- Bucle con vectores de prueba - Módulo de prueba- Módulo de prueba

- Escritura/Lectura de Archivos- Escritura/Lectura de Archivos- Relojes- Relojes- Conclusiones- Conclusiones

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 62: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 6262

cvbcbcvbcb

Esperados

- Cálculo

- Tabla

- Módulo

Estímulos

DUT

Módulo

Vectores,

Loop,

Manual

ClockReporteReporte

OndaOndaComparación

DUT

Simulación avanzada con Simulación avanzada con TestBench en HDL TestBench en HDL

Page 63: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 6363

Archivos Archivos www.andresairabella.com.arwww.andresairabella.com.ar

Page 64: Simulación TestBench en HDL - UNSLamairabe/presentaciones/TestBench.pdf32 bits x 32 bits / 32 VHDL Secuencia de 1 y 0 / 32 / 64 Posibles Combinaciones para las entradas 232 * 232

A. M. Airabella - F. AguileraA. M. Airabella - F. Aguilera 6464

¡Gracias! ¡Gracias!


Recommended