Guide débutant : Utiliser ModelSim pour la simulation FPGA et ASIC
Tutoriel – Utiliser ModelSim pour la simulation, pour débutants
ModelSim, programme de Mentor Graphics, simule vos conceptions VHDL et Verilog. C'est le simulateur le plus utilisé dans l'industrie et l'éducation. Ce tutoriel explique pourquoi la simulation est cruciale, puis comment obtenir ModelSim Student Edition gratuitement.
La simulation est une étape critique de la conception FPGA/ASIC. Elle permet au concepteur de stimuler son design et d'observer la réaction du code. Une simulation exhaustive teste tous les états possibles pour garantir la gestion de tous les scénarios d'entrée. Avez-vous oublié une instruction if ? Tous les cas du case sont-ils couverts ? Ces erreurs sont fréquentes sans simulation. Commençons.
Avez-vous téléchargé et installé ModelSim ? Téléchargez-le ici. Installez avec les paramètres par défaut. Note : vous devrez demander une licence à Mentor Graphics. À la fin de l'installation, sélectionnez « Finish », une fenêtre de navigateur s'ouvrira sur le formulaire de demande de licence. Cliquer sur un lien de demande existant (signet ou lien web) ne fonctionnera pas.
Le code à simuler est le design VHDL ci-dessous. Le code lui-même n'est pas important ; si vous apprenez le Verilog, c'est OK, vous n'avez pas besoin de connaître VHDL. Le code crée une porte ET simple avec des entrées via un banc de test. Copiez le code dans and_gate.vhd et le testbench dans and_gate_tb.vhd.
and_gate.vhd :
library ieee; use ieee.std_logic_1164.all; entity and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic ); end and_gate; architecture rtl of and_gate is signal and_gate : std_logic; begin and_gate <= input_1 and input_2; and_result <= and_gate; end rtl;
and_gate_tb.vhd :
library ieee; use ieee.std_logic_1164.all; entity and_gate_tb is end and_gate_tb; architecture behave of and_gate_tb is signal r_SIG1 : std_logic := '0'; signal r_SIG2 : std_logic := '0'; signal w_RESULT : std_logic; component and_gate is port ( input_1 : in std_logic; input_2 : in std_logic; and_result : out std_logic); end component and_gate; begin and_gate_INST : and_gate port map ( input_1 => r_SIG1, input_2 => r_SIG2, and_result => w_RESULT ); process is begin r_SIG1 <= '0'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '0'; r_SIG2 <= '1'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '0'; wait for 10 ns; r_SIG1 <= '1'; r_SIG2 <= '1'; wait for 10 ns; end process; end behave;
Ouvrez ModelSim. La fenêtre principale apparaît.
Fenêtre principale ModelSim
Pour lancer la simulation, créez un projet : Fichier → Nouveau → Projet. Choisissez un emplacement, nommez-le « and_gate ». Les projets ModelSim ont l'extension .prj. Laissez les autres réglages par défaut (compilation dans la bibliothèque « work »).
Cliquez sur « Add Existing File » pour ajouter and_gate.vhd et and_gate_tb.vhd. Gardez les réglages par défaut, cliquez OK.
Fenêtre Projet ModelSim – Fichiers ajoutés
Les deux points d'interrogation bleus indiquent que les fichiers ne sont pas encore compilés. Compilez : clic droit sur and_gate.vhd → Compile → Compile All. Des messages verts dans la console confirment la compilation réussie.
Résultats d'une compilation réussie
Pour démarrer la simulation : Simulate → Start Simulation. Dans la fenêtre, développez « work » puis « and_gate_tb ». Sélectionnez and_gate_tb (pas and_gate) pour simuler au niveau du banc de test. Cliquez OK.
Fenêtre de simulation ModelSim – Prêt
La simulation est prête. La plupart du temps, vous regarderez la vue d'onde (waveform). Elle affiche les signaux (binaire, hexadécimal, types énumérés) et montre la réaction du module aux stimuli. Ajoutez des signaux à surveiller : clic droit sur and_gate_tb dans la fenêtre sim → Add Wave. Vous pouvez aussi glisser-déposer des signaux depuis d'autres fenêtres.
Voici votre fenêtre d'onde avec tous les signaux du banc de test. Pour lancer : cliquez l'icône avec une feuille et une flèche vers le bas à côté de « 100 ns ». Cela exécute 100 nanosecondes. Observez les signaux changer ! Félicitations, vous avez créé votre première simulation ModelSim !
Ce tutoriel a couvert : création de projet, ajout de fichiers, compilation, lancement de simulation, visualisation des ondes. Vous pouvez maintenant explorer tous les exemples du site et lancer leurs simulations. Utilisez la barre latérale pour naviguer.
VHDL
- Exploiter les procédures in-process pour un design FSM VHDL plus propre
- Maîtriser les boucles For en VHDL : guide pratique
- Améliorer la vérification matérielle avec un testbench interactif basé sur Tcl
- Maîtriser la vérification formelle de modules VHDL avec PSL
- VUnit 101 : Guide pratique pour la vérification VHDL automatisée
- Maîtriser les types Signé vs Non-signé en VHDL : insights pratiques
- Variables VHDL expliquées : exemples pratiques et règles pour un design fiable
- Guide débutant : Utiliser ModelSim pour la simulation FPGA et ASIC
- Votre premier programme VHDL : tutoriel Hello World pas à pas