Contenu | Rechercher | Menus

Simulation VHDL

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 Vhdl ou bien qui recherchent une solution libre de développer leurs projets. Elle s'appuie sur les logiciels libres suivants:

  • GHDL : logiciel de simulation de code VHDL
  • GtkWave : logiciel de visualisation de simulation

Pré-requis

Installation

Utilisation

Depuis un terminal, placez vous dans votre répertoire de travail

cd le/chemin/vers/mon/repertoire/Repertoire_de_Travail

#include<systemC.h> sc-module(and3) { sc-in<bool>in1;

   sc-in<bool>in2;
   sc-in<bool>in3;
   sc-out<bool>out;
   void compute();
   sc-CTOR(and3) {
                                sc-METHOD(compute);
                                sensitive<<in1<<in2<<in3;
                              }
 }

Compilation

Cette étape ne peut se faire qu'une fois le code vérifié et corrigé. Si ce n'est pas le cas, ghdl vous le fait remarquer.
On crée ici un fichier exécutable.

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 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



Le contenu de ce wiki est sous licence : CC BY-SA v3.0