Changes between Version 9 and Version 10 of SoclibCourseTp1
- Timestamp:
- Aug 31, 2009, 10:51:52 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
SoclibCourseTp1
v9 v10 152 152 Editez 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 : 153 153 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. 155 155 156 156 * '''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'' … … 159 159 ainsi que le rapport cyclique. Vous devez ajouter le signal manquant dans cette section. 160 160 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. 163 162 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. 165 164 166 165 * '''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). 167 166 168 * section ''Net-List'' 167 Vous 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 }}} 171 Cette commande doit créer fichier objet ''tp1_top.o'' dans le répertoire TP1. 169 172 173 == 2.3 génération et lancement du simulateur == 170 174 171 == 2.3 Compilation et génération du simulateur == 175 Vous 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 }}} 179 Cette commande doit créer fichier objet ''simulator.x'' dans le répertoire TP1. 172 180 173 == 2.4 Simulation avec le moteur de simulation OSCI == 181 On lance l'exécution du simulateur pour 10000 cycles avec la commande : 182 {{{ 183 $ ./simulator.x 10000 184 }}} 185 Quelle est la duréee moyenne d'une itération? 174 186 175 == 2.5 Simulation avec le moteur de simulation SystemCass == 187 == 2.4 Simulation avec le moteur de simulation SystemCASS == 188 189 Comme cela a été expliqué en cours, le style d'écriture des modèles de simulation CABA utilisé dans SoCLib permet une simulation efficace, 190 puisque 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 192 Le 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: 193 la simulation par 194