VHDL 5
VHDL 5
6.1 Introducción
6.2 Diseño de un test bench
6.3 Ejemplos
6.4 VHDLSimuli
Tema 5:
Simulación con un banco de pruebas
VHDL - test bench.
6.1 Introducción
6.2 Diseño de un test bench
6.3 Ejemplos
6.4 VHDLSimuli
Introducción
Simulación
Para simular un diseño es necesario generar estímulos
para todas las entradas.
Algunos programas (Foundation) permiten generar las
entradas de forma interactiva.
En la mayoría de los casos es necesario escribir una
descripción del entorno conocido como un test bench.
VHDLsimuli
Disponible en la página de la asignatura.
Licencia limitada gratis.
Tema 5:
Simulación con un banco de pruebas
VHDL - test bench.
6.1 Introducción
6.2 Diseño de un test bench
6.3 Ejemplos
6.4 VHDLSimuli
Diseño de un test bench
6.1 Introducción
6.2 Diseño de un test bench
6.3 Ejemplos
6.4 VHDLSimuli
Ejemplo
Salida
Enable
Clk ENTITY contador IS
PORT (
salida: out std_logic_vector(7 DOWNTO 0);
Reset clk: in std_logic;
reset: in std_logic;
enable: in std_logic
);
END contador;
Ejemplo
Architecture contador_arch of contador is
signal cuenta, p_cuenta: std_logic_vector(7 downto 0);
begin
salida<=cuenta;
comb:process(cuenta, enable)
Begin
if enable=‘1’ then
p_cuenta<=cuenta+1;
Else
p_cuenta<=cuenta;
end if;
end process;
sinc:process(clk, reset)
begin
if reset=‘1’ then
cuenta <= (others => ‘0’);
esif(clk='1' and clk'event) then
cuenta <= p_cuenta;
end if;
end process;
End contador_arch;
Ejemplo
CONTADOR
salida 8 bits
enable
ENTITY TestBench IS
END TestBench;
reset
clk
TestBench
salida 8 bits
PORT (
enable
salida: out std_logic_vector(7 DOWNTO 0);
clk: in std_logic;
reset: in std_logic;
reset enable: in std_logic
clk
);
TestBench
END COMPONENT;
CONTADOR
salida_s
salida 8 bits
SIGNAL salida_s : std_logic_vector (7 downto 0);
enable_s SIGNAL clk_s : std_logic:= '0';
enable
clk
BEGIN - - contenido de la arquitectura
clk_s
TestBench
CONTADOR
salida_s
DUT: contador
salida 8 bits
enable_s
PORT MAP(
enable
CONTADOR
estimulos: PROCESS
salida_s
BEGIN
salida 8 bits
reset_s<='1';
enable_s
enable
enable_s<='1';
WAIT FOR 100 ns;
reset_s<='0';
reset_s
reset
WAIT FOR 1000 ns;
clk
enable_s<='0';
clk_s
TestBench WAIT;
END PROCESS;
END TestBench_arch;
Valor
initial
SIGNAL nombre: TIPO := VALOR_INITIAL;
Asignaciones en tiempo
Senal <= val1, val2 after XX, val3 after YY …;
Asignacionesrecurrentes en tiempo
Senal <= OP senal after XX ;
Estímulos en procesos
LIBRARY STD;
USE STD.TEXTIO.ALL
LIBRARY IEEE;
USE IEEE.STD_LOGIC_TEXTIO.ALL
¡Cambio del sintaxis en 1993!
Acceso a ficheros
Sintaxis original
FILE fin : TEXT IS IN “i.txt”;
FILE fout: TEXT IS OUT “o.txt”;
Sintaxis VHDL’93
FILE fin : TEXT open READ_MODE is “i.txt";
FILE fout : TEXT open WRITE_MODE is “o.txt";
Lectura de ficheros
Solamente se puede leer lineas enteros
Variable linea: LINE;
Readline (fin, linea);
Se puede sacar los campos de la linea uno
por uno:
Read(linea, primer_campo);
Read(linea, segundo_campo);
Campos escritos en decimal o formato
12
34
16#FF# 1
Escritura de ficheros
Solamente se puede escribir líneas enteros
Variable linea: LINE;
writeline (fout, linea);
Se construye la línea campo por campo
write(linea, primer_campo);
write(linea, “ “);
write(linea, segundo_campo);
Campos son escrito en su formato natural
Normalmente existe las funciones HWRITE
para escribir en HEX y BWRITE para escribir
en binario.
Acceso a ficheros -- ejemplo
PROCESS (load)
VARIABLE lineain, lineaout: LINE;
VARIABLE campo1, campo2: integer;
BEGIN
IF (load = ‘1’) THEN
READLINE(fin, lineain);
READ(lineain, campo1);
READ(lineain, campo2);
entrada1 <= campo1;
entrada2 <= campo2;
END IF;
campo1 := conv_integer(senal);
WRITE(lineaout, campo1);
WRITELINE(fout, lineaout);
END PROCESS;
Tema 5:
Simulación con un banco de pruebas
VHDL - test bench.
6.1 Introducción
6.2 Diseño de un test bench
6.3 Ejemplos
6.4 VHDLSimuli
VHDL Simuli
1. Crear un workspace
2. Añadir ficheros
Architecture del testbench
signal t_clk :std_logic := '0';
begin
uut : contador
generic map(ANCHO => 8)
port map (
enable => t_enable,
clk => t_clk,
resetz => t_resetz,
resets => t_resets,
q => t_q);
end tbench_1;
3. “Compilar” los fuentes
4. Seleccionar la entidad
5. Arrancar la simulación
6. Añadir señales para visulizar
7. Simular el paso de tiempo…
EJEMPLO