TP de SSAM

Transcription

TP de SSAM
TP2 de SSAM
Simulation de l’application Pipe à trois étages
Objectifs :
Ce TP a pour objectifs :
- De vous familiariser avec les mécanismes de lancement et contrôle de la simulation en
SystemC.
- D’introduire la génération de traces de simulation et leur visualisation en utilisant
gtkwave.
Compilation
- Editer et lire le fichier Makefile.linux
- Compiler l’exemple avec la commande make –f Makefile.linux
Vous remarquerez un certain nombre de warnings dues à l’utilisation de sc_initialize et
sc_cycle.
Sc_start
En systemc on peut lancer une simulation sans avoir à utiliser ces deux routines. On utilisera
pour ceci sc_start(double).
- Dans le fichier main.cpp, remplacer l’instanciation de l’horloge par la ligne suivant :
sc_clock clk(“my clock”, 20, 0.5);
- Dans la dernière partie du même fichier, supprimer la boucle for ainsi que l’appel à
sc_initialize et les remplacer simplement par sc_start(200).
- Recompiler et exécuter à nouveau l’exemple.
Ordre d’exécution
Insérer dans chaque processus du système une ligne permettant d’afficher le nom du
processus, puis recompiler et réexécuter.
- Dans quel ordre systemc exécute les processus ?
- Changer les noms des processus de telle sorte à modifier leur ordre alphabétique, puis
exécuter à nouveau. L’ordre d’exécution a-t-il changé ?
Contrôle de la simulation : Sc_simulation_time() et sc_stop()
Sc_simulation_time() renvoie une résultat de type double.
- Appeler cette routine de chacun des processus du système et afficher son résultat.
- A quoi correspond exactement le résultat ?
- Insérer sc_stop() à la fin du processus generate. Qu’est ce que cela provoque à
l’exécution ?
- Mixer sc_simulation_time() et sc_stop() pour arrêter la simulation après une certaine
valeur du temps.
- Comment peut-on utiliser sc_stop() dans le processus de stage 2 pour arrêter la
simulation en cas de division par zéro ?
Fichier de trace (format VCD)
SystemC permet de générer 3 formats différents de traces : VCD, ISDB et WIF.
On va générer ces 3 fichiers de traces en même temps pour l’exemple du pipe.
Pour générer un fichier de traces on doit :
- créer le fichier
- insérer les signaux que l’on veut tracer
- fermer le fichier.
Créer le fichier de traces






sc_trace_file * my_trace_file;
my_trace_file = sc_create_vcd_trace_file(“my_trace”);
sc_trace_file *trace_file;
my_trace_file = sc_create_wif_file(“my_trace”);
sc_trace_file * my_other_trace_file;
my_trace_file = sc_create_isdb_trace_file(“my_trace”);
Tracer un signal
Pour tracer le signal A (déclaré comme ceci dans le main : sc_signal<int> A ;) dans le
fichier trace_file, on insère dans le main sc_trace(trace_file, A, “Mon_A”);
Fermer le fichier
A la fin du main, ne pas oublier de fermer le fichier de traces avec la routine :
sc_close_vcd_trace_file(my_trace_file);
Questions:
- Ouvrir les fichiers de traces avec un éditeur de texte. Que remarquez-vous ?
- Utiliser gtkwave pour ouvrir le fichier VCD.
- Afficher les signaux in1 et in2 en hexadécimal