Changes between Initial Version and Version 1 of ToolsTp2


Ignore:
Timestamp:
Dec 3, 2009, 1:06:26 PM (15 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsTp2

    v1 v1  
     1{{{
     2#!html
     3<h1> TP2 : Modélisation structurelle avec Stratus </h1>
     4}}}
     5[[PageOutline]]
     6
     7Dans ce TP, nous souhaitons réaliser un générateur de circuit addaccu amélioré avec comme paramètre, entre autres, le nombre de bits.
     8
     9[[Image(addaccu.jpg, nolink)]]
     10
     11Le circuit addaccu a deux niveaux de hiérarchie : dans '''addaccu''' sont instanciés trois blocs '''mux''', '''reg''' et '''add'''.
     12Ces trois blocs sont des générateurs paramétrable de cellules '''sxlib''', décrits dans le langage '''Stratus'''.
     13
     14Nous verrons dans ce TP que '''Stratus''' comment permet de décrire des netlists paramétrables.
     15
     16= 1 Travail à effectuer =
     17
     18  == 1.1 Familiarisation avec '''Stratus''' ==
     19
     20  * Récupérer les deux fichiers permettant de créer le bloc '''mux''' et les étudier :
     21    * [attachment:mux.py Netlist en '''Stratus''' du bloc '''mux''']
     22    * [attachment:genmux.py Script pour la création de la netlist]
     23
     24  Ce bloc a la fonctionnalité suivante :
     25{{{
     26si (cmd==0) alors s <= i0 sinon s <= i1
     27}}}
     28  i0, i1 et s ayant un nombre de bit paramétrable
     29
     30  * Créer une instance de mux sur 4 bits.
     31  Pour ce faire, il faut exécuter le script fourni avec le bon paramètre, soit en exécutant la commande suivante :
     32{{{
     33> python gen_mux.py -n 2
     34}}}
     35  , soit en modifiant les droits du fichier :
     36{{{
     37> chmod u+x gen_mux.py
     38> ./gen_mux.py -n 2
     39}}}
     40
     41Si le script s'effectue sans erreur, un fichier '''.vst''' est normalement généré.
     42Vous pouvez vérifier qu'il décrit bien le circuit voulu.
     43
     44  == 1.2 Circuit addaccu ==
     45 
     46  * Ecrire les blocs '''add''' et '''reg''' avec '''Stratus''' en utilisant exclusivement les cellules de la bibliothèque '''sxlib'''.
     47    Ces deux blocs prennent comme paramètre le nombre de bits.
     48    En outre, ils vérifient que leur paramètre est compris entre 2 et 64 (ce n’est pas fait dans mux).
     49  * Ecrire les deux scripts python permettant de créer les instances de l'additionneur et du registre.
     50 
     51  * Ecrire le circuit '''addaccu''' avec '''Stratus'''.
     52    Ce circuit instancie les trois blocs précédents ('''mux''', '''add''' et '''reg''').
     53    Le circuit '''addaccu''' prend également comme paramètre le nombre de bits.
     54  * Ecrire le script python permettant de créer des instances de l'addaccu.
     55
     56  * Ecrire un fichier '''Makefile paramétrable''' permettant de produire chaque composant et le circuit addaccu en choisissant le nombre de bits.
     57
     58  * Générer le circuit sur 4 bits.
     59  * Visualiser la netlist obtenue avec '''xsch'''.
     60  * Tester la netlist avec '''asimut''' (utiliser le fichier '''.pat''' de la semaine précédente).
     61
     62  == 1.3 Circuit addsubaccu ==
     63
     64Maintenant, nous souhaitons que l’addaccu puisse effectuer soit des additions, soit des soustractions.
     65Un nouveau paramètre sera donc à apporter pour choisir la fonction à effectuer (Vous avez le choix pour le nom et les valeurs possibles de ce paramètre).
     66Ce nouveau composant sera sur le même schéma que le précédent, avec des modifications à apporter au circuit et/ou ses composants.
     67
     68  * Créer un nouveau composant, appelé '''addsubaccu''' qui prend en compte cette nouvelle contrainte.
     69  * Ecrire le script python permettant de créer des instances de l'addsubaccu.
     70  * Ecrire un fichier '''Makefile''' paramétrable permettant de produire chaque composant et le circuit addsubaccu.
     71
     72  == 1.4 Fonction Generate ==
     73
     74Il n'est pas toujours très pratique d'avoir à générer avec plusieurs scripts les différents blocs d'un circuit.
     75Le langage '''Stratus''' fournit donc une alternative : la fonction '''Generate'''.
     76
     77Par exemple, pour générer une instance du multiplexeur fourni, il suffit d'ajouter la ligne suivante dans le fichier '''Stratus''' décrivant le circuit instanciant le multiplexeur :
     78{{{
     79Generate ( "mux.mux", "mux_%d" % self.n, param = { 'nbit' : self.n } )
     80}}}
     81
     82Dans cette fonction, le premier argument représente la classe '''Stratus''' créée (format : ''nom_de_fichier.nom_de_classe''), le deuxième argument est le nom du modèle généré, le dernier argument est un dictionnaire initialisant les différents paramètres de cette classe.
     83
     84  * Modifier le fichier décrivant l'addsubaccu et le Makefile de façon à pouvoir créer les instances de ce circuit en n'ayant besoin que d'un script.
     85
     86  == 1.5 Description de patterns ==
     87
     88La chaîne de CAO '''ALLIANCE''' fourni un outil permettant de décrire des séquences de stimuli : l''outil '''GENPAT'''.
     89'''Stratus''' fournit le même service pour la chaîne de CAO '''Coriolis'''.
     90De plus, '''Stratus''' encapsule l'appel au simulateur '''ASIMUT'''.
     91
     92  * Récupérer les deux fichiers décrivant le bloc mux avec création du fichier de patterns et simulation, et les étudier :
     93    * [attachment:mux2.py Netlist en '''Stratus''' du bloc '''mux''' avec la description des patterns]
     94    * [attachment:genmux2.py Script pour la création de la netlist, du fichier de patterns et du lancement du simulateur]
     95  * Créer les patterns et effectuer la simulation des deux autres blocs de la même façon.
     96  * Une fois tous les sous blocs validés, créer les patterns et effectuer la simulation du bloc addsubaccu.
     97
     98  == 1.6 Bibliothèque DPGEN ==
     99
     100TODO
     101
     102= 2 Compte rendu =
     103
     104Vous rédigerez un compte-rendu d'une page maximum pour ce TP.
     105Vous expliciterez '''en détail''' les choix que vous avez fait pour modifier le circuit '''addaccu''' et/ou ses composants de façon à créer le circuit '''adddsubaccu'''.
     106
     107Vous fournirez tous les fichiers écrits, avec les '''Makefile''' permettant d'effectuer la génération des deux circuits (et l'effacement des fichiers générés).