{{tag>conception_electronique CAO}}
----
====== Simulation VHDL ======
{{ http://gtkwave.sourceforge.net/splash_512.gif?300|GTKWave}}
VHDL (VHSIC Hardware Description Langage) est un langage de description de matériel, c'est-à-dire un langage utilisé pour décrire un système numérique matériel, comme, par exemple, un flip-flop (bascule D) ou un microprocesseur. Il peut modéliser un système par n'importe quelle vue, structurelle ou comportementale, à tous les niveaux de description.
De plus il peut servir non seulement à simuler un système mais aussi à le synthétiser, c'est-à-dire être transformé par des logiciels adaptés (synthétiseurs) en une série de portes logiques prêtes à être gravées sur du silicium.
VHDL est l'un des trois grands langages de description de matériel utilisés majoritairement dans l'industrie, avec VHDL et SystemC. Chaque langage a ses propres avantages et inconvénients, ainsi que ses spécificités. Pour plus de détails, on pourra se référer à une comparaison objective de VHDL et Verilog.
Le langage standard IEEE VHDL a été développé par le Groupe d’Analyse et de Standardisation VHDL (VASG, pour “VHDL Analysis and Standardization Group”). Larry Saunders est le coordinateur de VASG. La société CLSI (CAD Langage Systems Inc.), représentée par le Docteur Moe Shahdad et M. Erich Marschner a préparé une série d’analyses et de recommandations dont a été tirée en Février 1986 la version 7.2 de VHDL, point de départ du futur standard. La collaboration de CLSI au projet était financée par un contrat passé avec l’Air Force Wright Aeronautical Laboratories, représentée par le Docteur John Hines. Le standard définitif a été adopté vers le milieu de l’année 1987. La dernière version date de 2002 mais ce cours présente le langage dans la version 1993, correspondant au standard IEEE 1076-1993, qui est supporté par de nombreux outils de simulation et synthèse.
Pour en savoir plus : http://vhdl.org .
Source: http://comelec.enst.fr/hdl/vhdl_intro.html#historique
Cette page s'adresse à ceux qui débutent en [[wpfr>VHDL|Vhdl]] ou bien qui recherchent une solution libre de développer leurs projets. Elle s'appuie sur les logiciels libres suivants:
* [[http://ghdl.free.fr|GHDL]] : logiciel de simulation de code VHDL
* [[http://gtkwave.sourceforge.net/|GtkWave]] : logiciel de visualisation de simulation
=====Pré-requis=====
* Disposer des [[:sudo|droits d'administration]],
* Disposer d'une connexion à Internet configurée et activée.
===== Installation =====
[[:tutoriel:comment_installer_un_paquet|Installez les paquets]] **[[apt>ghdl,gtkwave|ghdl gtkwave]]**
===== Utilisation ======
Depuis un [[:terminal]], placez vous dans votre répertoire de travail
cd le/chemin/vers/mon/repertoire/Repertoire_de_Travail
#include
sc-module(and3)
{ sc-inin1;
sc-inin2;
sc-inin3;
sc-outout;
void compute();
sc-CTOR(and3) {
sc-METHOD(compute);
sensitive<ghdl -e monFichier
Attention, il ne faut pas indiquer d'extension à //monFichier//
==== Simulation ===
Un fois l'exécutable créé, on spécifie un temps de simulation pour l'exécuter. //
Remplacez XX par la durée de votre simulation.//
Le fichier vcd créé va nous servir à visualiser nos chronogrammes via GTKWave.
./monFichier --stop-time=XXns --vcd=monFichierSimulation.vcd
==== Visualisation ====
On lance le logiciel gtkwave en lui spécifiant notre fichier de simulation.
gtkwave monFichierSimulation.vcd &
L'ajout des signaux au chronogramme se fait par simple double clic
Pour ceux qui ont l'habitude de travailler directement sur des cibles type FPGA, dans le cas d'une simulation, il vous faudra impérativement simuler vos signaux d'horloge
Exemple de simulation d'une clock :
signal clk_simu : std_logic := '0';
constant demiPeriode : time := 10 ns; -- pour une periode de 20ns -> freq 50MHz
p_clk_simu : process is
begin
clk_simu <= '1' after demiPeriode, '0' after 2*demiPeriode;
wait for 2*demiPeriode;
end process p_clk_simu;
===== Désinstallation =====
Pour désinstaller ces applications, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer les paquets]] **ghdl** et **gtkwave**. Selon la méthode choisie, la configuration globale de l'application est conservée ou supprimée. Les journaux du système, et les fichiers de préférence des utilisateurs dans leurs dossiers personnels sont toujours conservés.
----
//Contributeurs : Jefix, Fabux //