Vous êtes sur la page 1sur 4

AKOUE

EXEMPLE DE CREATION D’UN BANC D’ESSAI EN VHDL PAR LA METHODE MANUELLE

La modélisation d’un système à prototyper s’achève en général après validation du


modèle. Par le passé, cette validation se faisait la plupart du temps après réalisation du
prototype du système. De nos jours il existe une panoplie d’outils de simulation suffisament
optimisé pour prédire avec une très bonne précision le comportement réel du système après
réalisation. Dans le cas de la modéliasation des systèmes de microélectronique, les IDE
intègrent pour la plupart des outils de simulation qui font très souvent appel à des bancs
d’essai encore appelés testbenches dont la génération peut se faire automatiquement ou
manuellement. Dans le prémier cas il est en général question de lancer le simulateur en
mode graphique, de forcer les chronogrammes des variables et enfin de lancer la simulation.
Dans le deuxième cas il est question de rédiger un code capable de lire l’état des sorties du
système étudié et d’être même de stimuler ses entrées à l’aide des signaux préalablement
définis par le concepteur. Dans cette partie, nous nous intéressons à la méthode manuelle
qui est en général indépendante des simulateurs (Isim, Modelsim, …), de plus c’est la
méthode qui pose en général des problèmes aux débutants.

Le principe de la simulation par testbenches est illustré ci-dessous :

n m
SYSTÈME ETUDIE
(UUT)

n m
BANC D’ESSAI

n: nombre d’entrées du système sous test (parmi lesquelles l’entrée d’horloge clk).

m : nombre de sorties du système sous test.

ETAPE DE DESCRIPTION D’UN TESTBENCH (BANC D’ESSAI)

1. Déclaration des bibliothèques


2. Déclaration de l’entité du banc d’essai
3. Déclaration de l’architecture du banc d’essai (Spécification du comportement)
3.1. Déclaration du composant pour l’unité sous test (Unit Under Test (UUT))

1
Université de Douala
AKOUE

3.2. Déclaration des signaux d’E/S ou internes à visualiser


3.2.1. Entrées :
Déclarer les signaux en utilisant le mot clé signal; il est vivement conseillé
d’initialiser ces variables.
Exemple :
signal A : std_logic_vector(3 downto 0) := (others => '0');
signal B : std_logic_vector(3 downto 0) := (others => '0');
signal clk: std_logic;--si une horloge est nécessaire, cas des
--systèmes synchrones par exemple

3.2.2. Sorties
signal S: std_logic;
signal I: std_logic;
4. Déclaration et initialisation d’une constante de type time comme référence
temporelle de simulation
Exemple : constant Tp : time := 10 ns ;

5. Description du comportement de l’architecture


5.1. Début de description par le mot clé begin
5.2. Instantiation de l’unité sous test (Associer chaque signal d’E/S au port
correspondant) notamment à travers l’instruction PORT MAP.
Exemple :
uut: comp_bits PORT MAP (
A => A,
B => B,
S => S,
I => I,
);
5.3. Elaboration du chronogramme du signal d’horloge.

L’une des façons les plus intéressantes serait d’utiliser un process.


Exemple :
prc_hrlg : process
begin
clk <= '0';
wait for Tp/2 ; -- le calcul de la constante utilisée pour la
division est -- fonction du rapport cyclique ; dans ce
cas nous avons choisis un rapport cyclique de
0,5(1/2). .

2
Université de Douala
AKOUE

clk <= '1';


wait for Tp/2;
end process hrlg_prc;

5.4. Elaboration des chronogrammes pour les stimuli

Dans cette partie de l’architecture, il est question d’élaborer les


chronogrammes des signaux d’entrée (formes d’ondes) spécifiques que l’on
souhaiterait injecter dans le système étudié afin d’observer le comportement des
sorties. L’analyse de l’ensemble des chronogrammes d’entrée/Sortie devra
conduire à la validation ou non du modèle décrit. Il est fortement conseillé une
fois de plus de faire appel aux process tel que présenté dans l’exemple ci-
dessous.
Exemple :
prc_stimuli :process
begin
wait for 100 ns ; -- temps nécessaire pour l’initialisation du
--circuit
--Scénarii : il faut préciser les valeurs des entrées que l’on souhaite évaluer
--scénario 1

A<="0000";-- valeur du vecteur A pour la première phase


-- d’observation
B<="0001";-- valeur du vecteur B pour la première phase
-- d’observation
wait for Tp*10;-- visualiser pendant 10 fois la base de temps
-- choisie Tp
--scénario 2

A<="0101";
B<="0011";
wait for Tp*5; -- visualiser pendant 5 fois la base de temps
-- choisie Tp



--scénario nk

A<="1101";-- valeur du vecteur A pour la dernière phase


-- d’observation
B<="1011";-- valeur du vecteur B pour la dernière phase

3
Université de Douala
AKOUE

-- d’observation
wait for Tp*10;
wait; -- Attente indéterminé

end process ;

A l’issue de la description du banc d’essai, il ne reste plus qu’à :

 Vérifier la syntaxe du code et apporter éventuelement des corrections ;


 le faire tourner dans un simulateur VHDL afin de pouvoir observer les différentes courbes
(Chronogrammes des entrées et chronogrammes des sorties) ;
 Interpréter les courbes, valider ou non le circuit (UUT) et éventuelement le corriger.

NB : Dans la plupart des IDE il existe des outils d’assistance à la création des bancs d’essai
(testbeches) permettant de générer automatiquement des codes VHDL ou Verilog à compléter
éventuelement.

4
Université de Douala

Vous aimerez peut-être aussi