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