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

Preview:

Citation preview

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

Simulación Simulación avanzada con avanzada con

TestBench en HDLTestBench en HDL

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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++

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++

<

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

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

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;

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

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

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

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*.*

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++

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

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)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

¡Gracias! ¡Gracias!

Recommended