Changes between Version 8 and Version 9 of SoclibCourseTp1


Ignore:
Timestamp:
Aug 31, 2009, 9:56:08 AM (16 years ago)
Author:
alain
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SoclibCourseTp1

    v8 v9  
    77= 1. Objectif =
    88
    9 L'objectif de ce premier TP est d'illustrer -sur un exemple très simple ne comportant que deux composants matériels -
     9L'objectif de ce premier TP est d'illustrer - sur un exemple très simple ne comportant que deux composants matériels -
    1010les principes de la modélisation SystemC au niveau d'abstraction CABA
    1111(Cycle Accurate, Bit Accurate).La modélisation CABA est l'un des deux niveaux d'abstraction  utilisés pour modéliser les composants de la bibliothèque SoCLib.
    1212Ce type de modélisation s'appuie sur la théorie des automates d'états synchrones communicants (CFSM),
    13 et permet d'utiliser des technique d'ordonnancement statique permettant d'accélérer la simulation.
     13et permet d'utiliser des technique d'ordonnancement statique pour accélérer la simulation.
    1414
    1515= 2. Architecture matérielle =
    1616
    17 L'architecture matérielle à modéliser réalise Elle ne comporte que deux composants matériels: Le premier
     17L'architecture matérielle instancie deux composants matériels: Le premier
    1818composant est un coprocesseur cablé (c'est à dire non programmable)
    1919qui calcule le PGCD (plus grand commun diviseur) de deux nombres entiers positifs A et B, codés sur 32 bits.
     
    8383[[Image( )]]
    8484
    85 Outre le registre d'état de l'automate ''r_fsm'', cet automate contrôle quatre autres registres : les registres ''r_opa'', ''r_opb'', et ''r_res'' permettent de stocker respectivement  les deux opérandes et le résultat du calcul. Le registre
    86 ''r_cyclecount'' est incrémenté à chaque cycle, e permet de gérer une date (en nombre de cycles) depuis l'initialisation
    87 du système.
     85Outre le registre d'état de l'automate ''r_fsm'', cet automate contrôle 5 autres registres : les registres ''r_opa'', ''r_opb'', et ''r_res'' permettent de stocker respectivement  les deux opérandes et le résultat du calcul. Le registre
     86''r_cyclecount'' est incrémenté à chaque cycle, et contient donc la date (en nombre de cycles) depuis l'initialisation
     87du système. Le registre ''r_iterationcount'' est incrémenté à chaque itération, et contient donc le numéro de l'itération courante.
    8888 * dans l'état '''RANDOM''' on écrit les valeurs pseudo-aléatoires OPA et OPB dans les registres ''r_opa'' et ''r_opb''. On ne reste q'un cycle dans cet état.
    8989 * dans l'état '''WRITE_OPA''' (resp. '''WRITE_OPB''') on écrit le contenu du registre ''r_opa'' (resp ''r_opb'') sur le port FIFO de sortie (champs ''p_out.data''). On ne sort de ces états que si la donnée est acceptée (condition ''p_out.wok'' = true).
     
    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. 
     155
     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''
     157devront être connectés aux ports correspondants des deux composants matériels.  Les deux signaux ''signal_fifo_m2c'' et
     158''signal_fifo_c2m'' sont des signaux composites représentant les deux canaux de communication entre les deux composants. On utilise un type générique, en ce sens que le type de la donnée transférée à chaque cycle doit être défini par un paramètre template : dans le cas présent, on transfère un entier 32 bits ''uint32-t''. Le signal ''signal_clk'' est également un objet complexe de type ''sc_core::sc_clock'', dont on peut définir la période (sc_time(1,SC_NS) signifie 1 ns),
     159ainsi que le rapport cyclique. Vous devez ajouter le signal manquant dans cette section.
     160
     161 * '''Components''' : Dans cette section on appelle les constructeurs des différents composants instanciés, en définissant
     162les 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
     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.
     165
     166 * '''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
     168 * section ''Net-List''
     169
    154170
    155171== 2.3 Compilation  et génération du simulateur ==