Beruflich Dokumente
Kultur Dokumente
Denis Giacona
ENSISA
École Nationale Supérieure d'Ingénieurs Sud Alsace
12, rue des frères Lumière
68 093 MULHOUSE CEDEX
FRANCE
Tél. 33 (0)3 89 33 69 00
© D.Giacona
VHDL – Logique programmable 2/12 Partie 8 – Testbenches
1. Préambule
Un testbench VHDL est un code VHDL destiné à la vérification, par simulation, du bon fonctionnement
d’un système, lui-même décrit en VHDL
Dans l’industrie, les testbenches jouent un rôle très important ; ils sont intégrés dans les spécifications
d’un système
© D.Giacona
VHDL – Logique programmable 3/12 Partie 8 – Testbenches
2. Procédure de test
Banc de test
Simulateur
© D.Giacona
VHDL – Logique programmable 4/12 Partie 8 – Testbenches
Entité
Entrés,sorties
Architecture
Déclarations
Instructions
Architecture
Déclaration de composant du système à tester (UUT: Unit Under Test)
Déclaration des signaux de test (entrées et sorties de l'UUT)
© D.Giacona
VHDL – Logique programmable 5/12 Partie 8 – Testbenches
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity porte_xor is
Port ( a : in STD_LOGIC;
b : in STD_LOGIC;
x : out STD_LOGIC);
end porte_xor;
begin
x <= a xor b;
end Behavioral;
© D.Giacona
VHDL – Logique programmable 6/12 Partie 8 – Testbenches
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.std_logic_unsigned.all;
USE ieee.numeric_std.ALL;
ENTITY tb_after IS
END tb_after;
BEGIN
-- Instantiate the Unit Under Test (UUT)
uut: porte_xor PORT MAP (
a => a,
b => b,
x => x
);
-- Generate stimuli
a <= '1' after 100 ns, '0' after 300 ns;
b <= '1' after 150 ns, '0' after 350 ns;
END;
© D.Giacona
VHDL – Logique programmable 7/12 Partie 8 – Testbenches
a <= '1' after 100 ns, '0' after 300 ns; -- à placer
b <= '1' after 150 ns, '0' after 350 ns; -- dans le corps d’architecture
stim_proc: process
begin
-- insérer des instructions séquentielles ici
end process;
© D.Giacona
VHDL – Logique programmable 8/12 Partie 8 – Testbenches
Remarques préliminaires
© D.Giacona
VHDL – Logique programmable 9/12 Partie 8 – Testbenches
L’instruction wait for est utilisée pour contrôler le processus. Elle permet de placer des points d’arrêt
momentanés.
© D.Giacona
VHDL – Logique programmable 10/12 Partie 8 – Testbenches
clk_process :process
begin
clk <= '0';
wait for clk_period/2;
clk <= '1';
wait for clk_period/2;
end process;
© D.Giacona
VHDL – Logique programmable 11/12 Partie 8 – Testbenches
stim_proc: process
begin
wait for 100 ns;
a <= '1';
wait for 50 ns;
b <= '1';
wait for 100 ns;
a <= '0';
wait for 50 ns;
b <= '0';
wait; -- suspension du processus
end process;
© D.Giacona
VHDL – Logique programmable 12/12 Partie 8 – Testbenches
boucle: process
begin
loop1: for i in 1 to n-1 loop
a <= '1';
wait for i*100 ns;
a <= '0';
wait for (n-i)*100 ns;
end loop;
end process;
© D.Giacona