Questsim/Modelsim Getting Started¶
Modelsim/Questasim sont des simulateurs HDL développés par Mentor Graphics qui supportent plusieurs langages (VHDL, Verilog/SystemVerilog, SystemC).
Ce tutoriel va présenter de façon succincte les principales commandes pour pouvoir simuler des modules Verilog ainsi que les principales fonctions de l'interface graphique du logiciel.
Simuler un utilisant la ligne de commande:¶
Créer la bibliothèque de travail:¶
Bien que la notion de bibliothèque de travail n'existe pas en Verilog, Modelsim exige la création d'une bibliothèque de travail.
Cette bibliothèque est nommée par défaut « work
».
La commande pour la créer est :
vlib work
Un répertoire work
est alors créé, il contient des fichiers générés par le
compilateur.
Compiler un fichier:¶
Les fichiers compilés peuvent contenir plusieurs modules. Modelsim les
identifiera et les rendra disponibles dans la bibliothèque de travail
work
.
Pour ne pas complexifier la gestion des projets, il est recommandé d'avoir un module unique par fichier et que les noms du fichier et du module soient identiques.
La commande pour compiler un fichier est:
vlog <nom_du_fichier>
Cette commande doit être lancée dans le répertoire où la bibliothèque
work
a été créé.
Des options peuvent être spécifiées, par exemple:
+acc
Assure que tous les signaux et variables du module compilé resteront visibles dans l'interface graphique.
Pour la liste complète des options de compilation:
vlog -h
Utiliser la ligne de commande TCL en mode interactif:¶
Modelsim propose une console TCL en mode interactif et sans interface
graphique, cette console est accessible en utilisant la commande vsim
avec
l'option « -c
».
vsim -c # lance le shell TCL de Modelsim
vsim -c <nom_du_module> # charge le module pour la simulation en mode intercatif
Dans la console TCL la liste des commandes possible peut être obtenue en
utilisant la commande « help commands
»
-
Pour lancer la simulation utiliser la commande
run
.run
lance la simulation pour la durée par défautrun 100ns
lance la simulation pour100ns
run -all
lance la simulation jusqu'au prochain point d'arrêt ou la fin de la simulation
-
Pour redémarrer simulation utiliser la commande
restart
. -
La commande de compilation
vlog
peut aussi être appelée à partir de la console TCL.
Utiliser différentes bibliothèques:¶
Modelsim permet de définir plusieurs bibliothèques (comme en VHDL) pour organiser ses modules. Ceci peut être utile si l'on doit avoir des bibliothèques partagées entre plusieurs projets et pour lesquelles les temps de compilations ont importants.
Pour créer une bibliothèque il suffit d'utiliser la commande vlib
:
vlib <nom_de_la_bibliothèque>
Pour qu'un module compilé appartienne à une bibliothèque spécifique.
vlog <nom_du_fichier.v> -work <nom_de_la_bibliothèque>
Pour simuler un module faisant appelle à des sous-modules se trouvant dans une d'autres bibliothèques.
vsim <nom_du_module> -L <nom_de_la_bibliothèque>
Simuler en utilisant l'interface graphique:¶
Pour utiliser l'interface graphique du simulateur il faut utiliser la
commande « vsim
» sans l'option -c
.
vsim # lance Modelsim en mode graphique
L'image suivante est une capture d'écran de cette interface graphique.
Le bloc Workspace
contient pour l'instant la liste des bibliothèques
chargée par défaut par l'outil.
Le bloc Transcript
est la console TCL interactive. Elle permet
d'afficher les messages durant la compilation et la simulation et de
passer les commandes TCL directement.
La console affiche également les instructions qui correspondent aux actions effectuées en utilisant les outils graphiques.
- Remarques:
- Si on veut directement simuler un module déjà compiler on peut le
préciser comme argument de la commande
vsim
.vsim <nom_du_module> # lance Modelsim en mode graphique en chargeant un module déjà compilé.
- Toutes les commandes présentées dans la section précédente sont utilisables dans la console de l'interface graphique.
Créer la bibliothèque de travail:¶
Pour créer la bibliothèque de travail en utilisant l'interface graphique, il
faut utiliser la commande du sous-menu file/new/library
.
Une boite de dialogue « Create a new library
» permet ensuite de préciser le
nom de la bibliothèque et le chemin vers le répertoire qui la contiendra.
Compiler un fichier:¶
Pour compiler un fichier source il faut utiliser la commande
du sous-menu compile/compile
.
Une boite de dialogue vous permet de préciser la bibliothèque à laquelle
appartiendront les modules compilés et de choisir les fichiers sources.
Charger un module pour la simulation:¶
Pour charger un module et lancer la simulation utiliser la commande du
sous-menu simulate/start
simulation.
Une boite de dialogue apparaît et permet de sélectionner le module dans la
bibliothèque à laquelle il appartient.
Cette boite de dialogue vous permet aussi de préciser des options de simulation comme:
- la résolution temporelle
- autoriser ou non l'optimisation (l'optimisation peut faire disparaître certain objet internes)
- des options spécifiques aux langages
On peut aussi lancer rapidement la simulation en double cliquant sur le
nom du module dans le Workspace
. Dans ce cas, les options par défaut
sont utilisées.
Une fois le module chargé, le bloc Workspace
contient un ongle « sim
»
qui décrit la hiérarchie de module en cours de simulation.
Un bloc Objects
content tous les objets du module sélectionné dans
l'onglet sim
(c.à.d les entrées/sorties et les signaux et variables internes).
- Remarque Si les signaux internes n'apparaissent pas, c'est que vous n'avez
pas utilisé l'option
+acc
à la compilation.
Le bloc Locals
contient lui les variables locales (déclarées à l'intérieur
d'un processus).
Le menu View
permet de choisir les blocs à afficher.
Visualiser des chronogrammes:¶
Pour visualiser des chronogrammes il faut afficher le bloc Wave
à partir du
sous-menu View/wave
.
Pour ajouter des signaux à visualiser il suffit de les sélectionner dans
la fenêtre Objects
(ou Locals
si on veut afficher des variables locales)
puis de les glisser sur le bloc Wave
.
Des outils spécifiques au bloc Wave
apparaissent et permettre entre
autre de zoomer et positionner des curseurs.
Simuler:¶
Pour lancer la simulation il faut utiliser les commandes suivantes:
De gauche à droite on peut:
- redémarrer la simulation à zero (équi. à la commande
restart
) - préciser l'incrément temps de la simulation (ici
100ns
) - simuler pour la durée de temps précisée (équi. à la commande
run 100ns
) - continuer une simulation
- simuler jusqu'au prochain point d'arrêt (équi. à la commande
run -all
) - arrêter la simulation en cours
- faire du pas à pas (
step
,step over
etstep out
)