Aller au contenu

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éfaut
    • run 100nslance la simulation pour 100ns
    • 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 et step out)