Réalisé par
KERFAHI Achref (SETP1)
REGAYA Mariem (SETP1)
GHARBI Med Amine (SIC1)
Il s’agit du logiciel ModelSim de Mentor Graphics. On présente les différentes étapes pour aboutir à la
simulation d’un design électronique et par la suite savoir décrire et valider par simulation les
caractéristiques de ce design.
L'intérêt d'une telle description réside dans son caractère exécutable : une spécification décrite en VHDL
peut être vérifiée par simulation, avant que la conception détaillée ne soit terminée. En outre, les outils de
conception assistée par ordinateur permettant de passer directement d'une description fonctionnelle en
VHDL à un schéma en porte logique ont révolutionné les méthodes de conception des circuits numériques,
ASIC ou FPGA.
Le but d'un langage de description matériel tel que le VHDL est de faciliter le développement d'un circuit
numérique en fournissant une méthode rigoureuse de description du fonctionnement et de l'architecture
du circuit désirée. L'idée est de ne pas avoir à réaliser un composant réel, en utilisant à la place des outils
de développement permettant de vérifier le fonctionnement attendu. Ce langage permet en effet d'utiliser
des simulateurs, dont le rôle est de tester le fonctionnement décrit par le concepteur.
L'étape suivante consiste à synthétiser cette description matérielle pour obtenir un composant réalisant les
fonctions désirées, à l'aide d'éléments logiques concrets (portes logiques, bascules ou registres). Ceux-ci
seront implémentés, selon la technologie utilisée, soit directement en transistors (dans le cas d'un ASIC), ou
en se basant sur les éléments programmables des FPGA. Après la synthèse viennent les phases de :
Ces deux opérations doivent prendre en compte les ressources disponibles sur l'ASIC (surface) ou dans le
FPGA (unités programmables).
Le VHDL ayant une double fonction (simulation et synthèse), une partie seulement du VHDL est
synthétisable, l'autre existant uniquement pour faciliter la simulation (écriture de modèles
comportementaux et de test benches). Selon le support matériel et le logiciel de synthèse utilisés, cette
partie pourra être plus ou moins étendue. De manière à obtenir du VHDL synthétisable et portable, il est
donc nécessaire de se limiter à des constructions simples, dont la transcription en portes et bascules est
simple à réaliser. La norme 1076.6 a été initiée pour tenter de définir un sous-ensemble de VHDL « de
synthèse ».
III. Le logiciel ModelSim 6.5 SE
Le Logiciel ModelSim SE est dédié à la conception d'ASIC et de FPGA, permet la simulation temporelle au
niveau RT (transfert de registre) ou au niveau porte, à partir des langages VHDL ou Verilog.
entity testbench_demi_add is
end testbench_demi_add;
signal A: bit;
signal B: bit;
signal Som: bit;
signal Ref: bit;
begin
C1: demi_add port map (A,B,Som,Ref);
A<='0', '1' after 20 ns , '0' after 40 ns ,'1' after 60 ns, '0' after 80 ns;
B<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns, '1' after 80 ns;
end testbench;
entity demi_add is
port (A,B: in bit;
Som, Ref: out bit);
end demi_add;
architecture arch_demi_add of demi_add is
begin
Som<= A xor B;
Ref <= A and B;
end arch_demi_add;
c. Simulation
2. Exemple 1 du TP
A B C F
0 0 0 1
0 0 1 0
0 1 0 1
0 1 1 0
1 0 0 0
1 0 1 1
1 1 0 1
1 1 1 1
entity testbench_exemple1 is
end testbench_exemple1;
signal A: bit;
signal B: bit;
signal C: bit;
signal F: bit;
begin
C1: exemple1 port map (A,B,C,F);
A<='0', '0' after 20 ns , '0' after 40 ns ,'0' after 60 ns, '1' after 80 ns ,'1' after 100 ns , '1' after
120 ns;
B<='0', '0' after 20 ns , '1' after 40 ns ,'1' after 60 ns, '0' after 80 ns ,'1' after 100 ns , '1' after
120 ns;
C<='0', '1' after 20 ns , '0' after 40 ns ,'1' after 60 ns, '0' after 80 ns ,'0' after 100 ns , '1' after
120 ns;
end testbench;
c. Simulation
3. Multiplexeur 8 entrées 1 sortie
a. Code VHDL testbench MUX8_1
library ieee ;
use ieee.std_logic_1164.all;
use work.mux8_1;
entity test_mux8_1 is
end test_mux8_1;
architecture test of test_mux8_1 is component mux8_1
port(x0,x1,x2,x3,x4,x5,x6,x7,a0,a1,a2:in bit ; s:out bit ) ;
end component;
signal x0,x1,x2,x3,x4,x5,x6,x7,s:bit ;
signal a0,a1,a2:bit ;
begin
c1: mux8_1 port map (x0,x1,x2,x3,x4,x5,x6,x7,a0,a1,a2,s);
x0<='1', '0' after 20 ns , '0' after 40 ns ,'0' after 60 ns ,'1' after 80 ns ;
x1<='0', '1' after 20 ns , '0' after 40 ns ,'0' after 60 ns ,'0' after 80 ns ;
x2<='0', '0' after 20 ns , '1' after 40 ns ,'0' after 60 ns ,'0' after 80 ns ;
x3<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ;
x4<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ;
x5<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ;
x6<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ;
x7<='0', '0' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ;
a0<='0', '0' after 20 ns , '0' after 40 ns ,'0' after 60 ns ,'1' after 80 ns ,'1' after 100 ns ,'1'
after 120 ns ,'1' after 140 ns;
a1<='0', '0' after 20 ns , '1' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ,'0' after 100 ns ,'1'
after 120 ns ,'1' after 140 ns;
a2<='0', '1' after 20 ns , '0' after 40 ns ,'1' after 60 ns ,'0' after 80 ns ,'1' after 100 ns ,'0'
after 120 ns ,'1' after 140 ns;
end test ;
c. Simulation
4. Bascule D
c. Simulation