Modelsim est un simulateur HDL développé par Mentor Graphics qui supporte plusieurs langages (VHDL, Verilog, SystemVerilog, SystemC).
Ce tutoriel présente de façon succincte les principales commandes pour pouvoir simuler des modules Verilog que ce soit en mode console ou en mode graphique.
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 « work ».
La commande pour la créer est :
Les fichiers compilés peuvent contenir plusieurs modules. Modelsim les identifiera et les rendra disponibles dans la bibliothèque de travail work.
La commande pour compiler un fichier est:
Cette commande doit être lancée dans le répertoire où la librairie work a été crée.
Des options peuvent être spécifiées, par exemple:
Modelsim propose une console TCL en mode interactif, cette console est accessible en utilisant la commande vsim avec l'option "-c".
Dans la console TCL la liste des commandes possibles peut être obtenue en utilisant la commande « help commands »
Pour lancer la simulation utiliser la commande run.
Modelsim permet de définir plusieurs bibliothèques (comme en VHDL) pour organiser ses modules.
Pour créer une bibliothèque il suffit d'utiliser la commande vlib
Pour qu'un module compilé appartienne à un librairie spécifique.
Pour simuler un module faisant appel à des modules se trouvant dans d'autres bibliothèques.
Pour utiliser l'interface graphique du simulateur il faut utiliser la commande « vsim »
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 des commandes TCL directement.
La console affiche également les instruction qui correspondent aux actions effectuées en utilisant les outils graphiques.
Remarque :
Si on veut directement simuler un module déjà compilé on peut le préciser comme argument de la commande vsim.
lance Modelsim en mode graphique en chargeant un module déjà compilé.
Pour créer la bibliothèque de travail (si elle n'existe pas), il faut utiliser la commande file/new/library. Une boite de dialogue « Create a new library » permet ensuite de preciser le nom de la bibliothèque et le chemin vers le répertoire qui la contiendra.
Pour compiler un fichier source il faut utiliser la commande compile/compile. Une boite de dialogue vous permet de préciser la bibliothèque à laquelle appartiendront les modules compilé et de choisir les fichiers sources.
Pour charger un module et lancer la simulation utiliser la commande simulate/start simulation. Une boite de dialogue apparaît et permet de sélectionner le module dans la librairie à laquelle il appartient.
Cette boite de dialogue vous permet aussi de préciser des option de simulation comme:
la résolution temporelle
autoriser ou non l'optimisation (l'optimisation peut faire disparaître certain objet internes)
des option 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 option 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 modules en cours de simulation.
Un bloc Objects content tous les objet du module sélectionné dans l'onglet sim (càd les entrées/sorties et les signaux internes).
Le bloc Locals contient lui les variables locales.
Le menu View permet de choisir les blocs à afficher.
Pour visualiser des chronogrammes il faut afficher le bloc Wave (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.
Pour lancer la simulation il faut utilser les commandes suivante:
De gauche à droite on peut:
redémarrer la simulation à zero
préciser le temps de la simulation (ici 100ns)
simuler pour la durée de temps précisée (équi. à la commande run 100ns)
continuer un simulation
simuler jusqu'au prochain point d'arrêt (équivalent à la commande run -all)
arrêter la simulation en cours
faire du pas à pas (step, step over et step out)