135 | | * '''ports''' : les variables membres représentant les ports d'entrée sortie sont de type ''sc_core::sc_in'' ou ''sc_core::sc_out'', |
136 | | ou des objets plus complexe (possédant éventuellement un paramètre template) représentant des regroupements de plusieurs ports élémentaires : c'est la cas des types `soclib::caba::FifoOutput<typename>` et `soclib::caba::FifoInput<typename>` utilisés pour accéder à un cana FIFO. Pour des raisons de lisibilité, il est recommandé que les noms de registre soient préfixé par '''p_'''. On définira 2 ports simples (''p_ck'', ''p_resetn''), et deux ports FIFO (''p_in'' et ''p_out''). Ce sont évidemment des variables publiques. |
| 135 | * '''ports''' : les variables membres représentant les ports d'entrée sortie sont de type ''sc_core::sc_in'' ou ''sc_core::sc_out'', ou des objets plus complexe (possédant éventuellement un paramètre template) représentant des regroupements de plusieurs ports élémentaires : c'est la cas des types `soclib::caba::FifoOutput<typename>` et `soclib::caba::FifoInput<typename>` utilisés pour accéder à un cana FIFO. Pour des raisons de lisibilité, il est recommandé que les noms de registre soient préfixé par '''p_'''. On définira 2 ports simples (''p_ck'', ''p_resetn''), et deux ports FIFO (''p_in'' et ''p_out''). Ce sont évidemment des variables publiques. |
204 | | Comme cela a été expliqué en cours, le style d'écriture des modèles de simulation CABA utilisé dans SoCLib permet une simulation efficace, |
205 | | 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. |
206 | | |
207 | | 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: |
208 | | |
209 | | /users/outils/dsx/systemcass/include |
210 | | /users/outils/dsx/systemcass/lib |
211 | | |
| 205 | Comme cela a été expliqué en cours, le style d'écriture des modèles de simulation CABA utilisé dans SoCLib permet une simulation rapide - même en utilisant le moteur de simulation SystemC2.0 fourni par le consortium OSCI - |
| 206 | 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 ne sont exécutées qu'une seule fois par cycle. |
| 207 | |
| 208 | Mais il est possible de gagner un facteur 10 sur la vitesse de simulation en utilisant le moteur de simulation SystemCASS, développé par le laboratoire LIP6, qui utilise une technique d'ordonnancement statique (sans échéancier) pour exploiter |
| 209 | les caractéristiques particulières des modèles SoCLib. |
| 210 | |
| 211 | Pour utiliser SystemCASS, 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, en modifiant les chemins d'accès aux fichiers |
| 212 | d'include et aux bibliothèques de SystemC. |
| 213 | |
| 214 | La génération des fichiers objets utilise la commande suivante : |
| 215 | {{{ |
| 216 | $ g++ -Wno-deprecated -I. -I/users/outils/dsx/systemcass/include -c -o filename.o filename.cpp |
| 217 | }}} |
| 218 | La génération de l'exécutable utilise la commande suivante : |
| 219 | {{{ |
| 220 | $ g++ -Wno-deprecated -L. -L/users/outils/dsx/systemcass/lib -o simulator.x fifo_lcd_master.o fifo_lcd_coprocessor.o tp1_top.o -lsystemc 2>&1 | c++filt |
| 221 | }}} |
| 222 | Modifiez le fichier Makefile de la question précédente pour générer un exécutable fast_simulator.x et comparez les vitesses des deux simulateurs. |
| 223 | |
| 224 | |
| 225 | == 4. Compte-rendu == |
| 226 | |
| 227 | Il ne vous est pas demandé de compte-rendu pour ce TP, mais on vous demandera une démonstration de votre simulateur |
| 228 | au début du TP de la semaine suivante. |
| 229 | suivant |
| 230 | |
| 231 | |