Changes between Version 9 and Version 10 of SoclibCourseTp1


Ignore:
Timestamp:
Aug 31, 2009, 10:51:52 AM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp1

    v9 v10  
    152152Editez le fichier ''tp1_top.cpp'', qui décrit l'architecture, ainsi que les directives de simulation. Ce fichier est volontairement incomplet pour vous obliger à analyser en détail les différentes sections :
    153153
    154  * '''arguments''' : On définit dans cette section les arguments  qui pourront être passés en lgne de commande lors du lancement de la simulation.  On prévoit ici de passer en premier argument le nombre de cycles à simuler, et comme deuxième argument la valeur d'initialisation du générateur aléatoire utilisé dans le composant master. cette section n'a pas besoin d'ëtre modifiée. 
     154 * '''arguments''' : On définit dans cette section les arguments  qui pourront être passés en lgne de commande lors du lancement de la simulation.  On prévoit ici de passer en premier argument le nombre de cycles à simuler, et comme deuxième argument la valeur d'initialisation du générateur aléatoire utilisé dans le composant master. cette section n'a pas besoin d'être modifiée. 
    155155
    156156 * '''Signals''' : On définit dans cette section les différents signaux qui seront utilisés pour connecter entre eux les ports d'entrée sortie des différents composants. On a besoin de 4 signaux : les deux signaux ''signal_ck'' et ''signal_resetn''
     
    159159ainsi que le rapport cyclique. Vous devez ajouter le signal manquant dans cette section.
    160160
    161  * '''Components''' : Dans cette section on appelle les constructeurs des différents composants instanciés, en définissant
    162 les paramètres. Le nom d'instance est un paramètre obligatoire. Le composant master possède un second paramètre qui est la valeur d'initialisation du générateur aléatoire. Vous devez aouter l'appel au constructeur du composant coprocesseur.
     161 * '''Components''' : Dans cette section on appelle les constructeurs des différents composants instanciés, en définissant les paramètres. Le nom d'instance est un paramètre obligatoire. Le composant master possède un second paramètre qui est la valeur d'initialisation du générateur aléatoire. Vous devez aouter l'appel au constructeur du composant coprocesseur.
    163162
    164  * '''Net-List'' : On décrit dans cette section les connexions entre les composants. La syntaxe utilisée pour connecter un signal s au port p d'un composant c est : ''c.p(s)''. Vous devez ajouter les connexions concernant les ports du coprocesseur.
     163 * '''Net-List''' : On décrit dans cette section les connexions entre les composants. La syntaxe utilisée pour connecter un signal s au port p d'un composant c est : ''c.p(s)''. Vous devez ajouter les connexions concernant les ports du coprocesseur.
    165164
    166165 * '''Simulation''' : Cette section décrit les directives de simulation. Le mécanisme de RESET étant synchrone, On commence par exécuter un cycle en forçant  ''signal_resetn'' à l'état bas (actif), pour initialiser les registres internes de tous les composants, puis on exécute le nombre de cycles spécifié en forçant ''signal_resetn'' à l'état haut (inactif).
    167166
    168  * section ''Net-List''
     167Vous pouvez compiler ce fichier ''tp1_top.cpp'' pour générer le fichier objet correspondant en utilisant la commande:
     168{{{
     169$ g++ -Wno-deprecated -I. -I/.../systemc/systemc-2.2/include -c -o tp1_top.o tp1_top.cpp
     170}}}
     171Cette commande doit créer fichier objet ''tp1_top.o'' dans le répertoire TP1.
    169172
     173== 2.3 génération et lancement du simulateur ==
    170174
    171 == 2.3 Compilation  et génération du simulateur ==
     175Vous pouvez maintenant créer le programme exécutable ''simulator.x'' en effectuant l'édition de liens entre les trois fichiers objet précédemment créés :
     176{{{
     177$ g++ -Wno-deprecated -L. -L/.../systemc/systemc2.2/lib... -o simulator.x fifo_lcd_master.o fifo_lcd_coprocessor.o tp1_top.o -lsystemc 2>&1 | c++filt
     178}}}
     179Cette commande doit créer fichier objet ''simulator.x'' dans le répertoire TP1.
    172180
    173 == 2.4 Simulation avec le moteur de simulation OSCI ==
     181On lance l'exécution du simulateur pour 10000 cycles avec la commande :
     182{{{
     183$ ./simulator.x 10000
     184}}}
     185Quelle est la duréee moyenne d'une itération?
    174186
    175 == 2.5 Simulation avec le moteur de simulation SystemCass ==
     187== 2.4 Simulation avec le moteur de simulation SystemCASS ==
     188
     189Comme cela a été expliqué en cours, le style d'écriture des modèles de simulation CABA utilisé dans SoCLib permet une simulation efficace,
     190puisque dans le cas où tous les composants matériels se comportent comme des automates de Moore, les deux fonctions ''transition'' et ''genMoore'' de chaque composant sont exécutées une seule fois par cycle. Dans ces conditions, il est inutile d'utiliser un mécanisme d'ordonnancement dynamique (avec gestion d'un échéancier) comme cela est fait par le moteur de simulation disponible dans la distribution standard systemc2.2 fournie par le consortium OSCI.
     191
     192Le moteur de simulation SystemCASS, développé par le laboratoire LIP6, utilise une technique d'ordonnancement statique (sans échéancier) qui permet de réduire le temps de simulation d'un ordre de grandeur. Il n'est pas nécessaire de modifier le code SystemC des composants instanciés, ni le code systemC décrivant la top_cell, mais il faut recompiler l'ensemble des fichiers sources:
     193la simulation par
     194