Explorer les Livres électroniques
Catégories
Explorer les Livres audio
Catégories
Explorer les Magazines
Catégories
Explorer les Documents
Catégories
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/14 Partie 8 – Testbenches
1. Préambule
• 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/14 Partie 8 – Testbenches
Banc de test
• Génération de stimuli : création de signaux représentant des transactions correctes ou incorrectes, des délais
minimum et maximum, des conditions d’erreur
• Modèle à tester : description du comportement du système à tester (UUT : Unit Under Test)
• Vérification : comparaison des réponses du modèle avec des résultats attendus ; rapports d’erreurs
© D.Giacona
VHDL – Logique programmable 4/14 Partie 8 – Testbenches
Banc de test
Simulateur
© D.Giacona
VHDL – Logique programmable 5/14 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 6/14 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 7/14 Partie 8 – Testbenches
ENTITY tb_after IS
END tb_after;
© D.Giacona
VHDL – Logique programmable 8/14 Partie 8 – Testbenches
BEGIN
-- 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 9/14 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 10/14 Partie 8 – Testbenches
Remarques préliminaires
© D.Giacona
VHDL – Logique programmable 11/14 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 12/14 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 13/14 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 14/14 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