Changes between Version 15 and Version 16 of ToolsTp2


Ignore:
Timestamp:
Dec 10, 2009, 12:49:34 PM (15 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsTp2

    v15 v16  
    2323Les deux blocs '''mux''' et '''reg''' sont des générateurs paramétrable décrits dans le langage '''Stratus''', ce sont des interconnexions de portes de bases, fournies par la bibliothèque de cellules pré-caractérisées SXLIB.
    2424
    25 Le bloc '''add''', également décrit dans le langage '''Stratus''', instancie un bloc '''full_adder''', lui même étant une interconnexion de porte SXLIB, décrit en '''Stratus'''.
    26 
    27 Le circuit addaccu a donc trois niveaux de hiérarchie.
    28 
    29   == 1.2 La bibliothèque SXLIB ==
    30 
    31 Une cellule pré-caractérisée (en anglais ''standard cell'') est une fonction élémentaire pour laquelle on dispose des différentes "vues" permettant son utilisation par des outils CAO:
    32 
    33     * vue physique : dessin des masques, permettant d'automatiser le placement et le routage.
    34     * vue logique : schéma en transistors permettant la caractérisation (surface, consommation, temps de propagation).
     25Le bloc '''add''', également décrit dans le langage '''Stratus''', instancie un bloc '''full_adder''', lui même étant une interconnexion de porte '''sxlib''', décrit en '''Stratus'''.
     26
     27Le circuit '''addaccu''' a donc trois niveaux de hiérarchie.
     28
     29  == 1.2 La bibliothèque sxlib ==
     30
     31Une cellule pré-caractérisée (en anglais ''standard cell'') est une fonction élémentaire pour laquelle on dispose des différentes "vues" permettant son utilisation par des outils CAO :
     32
     33    * vue physique : dessin des masques, permettant d'automatiser le placement et le routage,
     34    * vue logique : schéma en transistors permettant la caractérisation (surface, consommation, temps de propagation),
    3535    * vue comportementale : description VHDL permettant la simulation logique des circuits utilisant cette bibliothèque.
    3636
    37 La bibliothèque de cellules utilisée dans ce TP est la bibliothèque SXLIB, développée par le laboratoire LIP6, pour la chaîne de CAO '''ALLIANCE'''.
     37La bibliothèque de cellules utilisée dans ce TP est la bibliothèque '''sxlib''', développée par le laboratoire LIP6, pour la chaîne de CAO '''Alliance'''.
    3838La particularité de cette bibliothèque est d'être "portable" : le dessin des masques de fabrication utilise une technique de dessin symbolique, qui permet d'utiliser cette bibliothèque de cellules pour n'importe quel procédé de fabrication CMOS possédant au moins trois niveaux d'interconnexion.
    3939
     
    4141Les cellules que vous utiliserez dans ce TP ont été caractérisées pour un procédé de fabrication CMOS 0.35 micron.
    4242
    43 La liste des cellules disponibles dans la bibliothèque SXLIB peut être obtenue en consultant la page man :
     43La liste des cellules disponibles dans la bibliothèque '''sxlib''' peut être obtenue en consultant la page man :
    4444{{{
    4545> man sxlib
    4646}}}
    4747
    48 Comme vous pourrez le constater, il existe plusieurs cellules réalisant la même fonction logique. Les deux cellules na2_x1 et na2_x4 réalisent toutes les deux la fonction NAND à 2 entrées, et ne diffèrent entre elles que par leur puissance électrique: La cellule na2_x4 est capable de charger une capacité de charge 4 fois plus grande que la cellule na2_x1. Evidemment, plus la cellule est puissante, plus la surface de silicium occupée est importante.
    49 Vous pouvez visualiser le dessin des masques de ces cellules en utilisant l'éditeur graphique de la chaîne ALLIANCE '''GRAAL'''.
     48Comme vous pourrez le constater, il existe plusieurs cellules réalisant la même fonction logique. Les deux cellules ''na2_x1'' et ''na2_x4'' réalisent toutes les deux la fonction NAND à 2 entrées, et ne diffèrent entre elles que par leur puissance électrique : la cellule ''na2_x4'' est capable de charger une capacité de charge 4 fois plus grande que la cellule ''na2_x1''. Evidemment, plus la cellule est puissante, plus la surface de silicium occupée est importante.
     49Vous pouvez visualiser le dessin des masques de ces cellules en utilisant l'éditeur graphique de la chaîne '''alliance''' '''graal'''.
    5050
    5151  == 1.3 Schéma des blocs ==
     
    7575Un additionneur 1 bit (encore appelé ''Full Adder'') possède 3 entrées a,b,c, et deux sorties s et r.
    7676La table de vérité est définie par le tableau ci-dessous.
    77 
    78 Le bit de "somme" s vaut 1 lorsque le nombre de bits d'entrée égal à 1 est impair. Le bit de "report" est égal à 1 lorsqu'au moins deux bits d'entrée valent 1.
     77Le bit de "somme" s vaut 1 lorsque le nombre de bits d'entrée égal à 1 est impair.
     78Le bit de "report" est égal à 1 lorsqu'au moins deux bits d'entrée valent 1.
    7979
    8080||a||b||c||s||r||
     
    113113
    114114  * Créer une instance de mux sur 4 bits.
    115   Pour ce faire, il faut exécuter le script fourni avec le bon paramètre, soit en exécutant la commande suivante :
     115  Pour ce faire, il faut exécuter le script fourni avec le bon paramètre :
     116    * soit en exécutant la commande suivante :
    116117{{{
    117118> python gen_mux.py -n 2
    118119}}}
    119   , soit en modifiant les droits du fichier :
     120    * soit en modifiant les droits du fichier :
    120121{{{
    121122> chmod u+x gen_mux.py
     
    123124}}}
    124125
    125 Si le script s'effectue sans erreur, un fichier '''.vst''' est normalement généré.
     126Si le script s'effectue sans erreur, un fichier ''.vst'' est normalement généré.
    126127Vous pouvez vérifier qu'il décrit bien le circuit voulu.
    127128
    128129  == 2.2 Bloc registre ==
    129130
    130   * En s'inspirant du multiplexeur, écrire le bloc '''reg''' avec '''Stratus''' en utilisant exclusivement les cellules de la bibliothèque SXLIB. Ce bloc prend lui aussi comme paramètre le nombre de bits. En outre, il vérifie que son paramètre est compris entre 2 et 64 (ce n’est pas fait dans mux).
     131  * En s'inspirant du multiplexeur, écrire le bloc '''reg''' avec '''Stratus''' en utilisant exclusivement les cellules de la bibliothèque '''sxlib'''. Ce bloc prend lui aussi comme paramètre le nombre de bits. En outre, il vérifie que son paramètre est compris entre 2 et 64 (ce n’est pas fait dans mux).
    131132  * Ecrire le script python permettant de créer l'instance du registre.
    132133
    133134  == 2.3 Bloc additionneur ==
    134135
    135   * Ecrire le bloc '''full_adder''' en utilisant exclusivement les cellules de la bibliothèque SXLIB.
    136   * Ecrire le script python permettant de créer l'instance du full_adder.
    137   * Ecrire le bloc '''adder''' instanciant le full_adder créé. Ce bloc prend lui aussi comme paramètre le nombre de bits et vérifie que son paramètre est compris entre 2 et 64 (ce n’est pas fait dans mux).
     136  * Ecrire le bloc '''full_adder''' en utilisant exclusivement les cellules de la bibliothèque '''sxlib'''.
     137  * Ecrire le script python permettant de créer l'instance du '''full_adder'''.
     138  * Ecrire le bloc '''adder''' instanciant le '''full_adder''' créé. Ce bloc prend lui aussi comme paramètre le nombre de bits et vérifie que son paramètre est compris entre 2 et 64 (ce n’est pas fait dans mux).
    138139  * Ecrire le script python permettant de créer l'instance de l'additionneur.
    139140
     
    141142 
    142143  * Ecrire le circuit '''addaccu''' avec '''Stratus'''.
    143     Ce circuit instancie les trois blocs précédents ('''mux''', '''add''' et '''reg''').
     144    Ce circuit instancie les trois blocs précédents ('''mux''', '''reg''' et '''adder''').
    144145    Le circuit '''addaccu''' prend également comme paramètre le nombre de bits.
    145146  * Ecrire le script python permettant de créer des instances de l'addaccu.
     
    164165  == 2.6 Description de patterns ==
    165166
    166 La chaîne de CAO '''ALLIANCE''' fourni un outil permettant de décrire des séquences de stimuli : l'outil '''GENPAT'''.
     167La chaîne de CAO '''Alliance''' fournit un outil permettant de décrire des séquences de stimuli : l'outil '''genpat'''.
    167168'''Stratus''' fournit le même service pour la chaîne de CAO '''Coriolis'''.
    168 De plus, '''Stratus''' encapsule l'appel au simulateur '''ASIMUT'''.
     169De plus, '''Stratus''' encapsule l'appel au simulateur '''asimut'''.
    169170
    170171  * Récupérer les deux fichiers décrivant le bloc mux avec création du fichier de patterns et simulation, et les étudier :
     
    185186  * Ecrire les patterns du composant '''addsubaccu''' et valider le bloc.
    186187
    187   == 2.8 Bibliothèque DPGEN ==
    188 
    189 Une bibliothèque d'opérateurs existe en '''Stratus''', la bibliothèque '''DPGEN'''.
     188  == 2.8 Bibliothèque dpgen ==
     189
     190Une bibliothèque d'opérateurs existe en '''Stratus''', la bibliothèque '''dpgen'''.
    190191
    191192Pour connaitre les générateurs dont vous disposez, consultez la documentation fournie :
     
    202203  * Vous présenterez un schéma de la hiérarchie du circuit '''addaccu'''.
    203204  * Vous expliciterez les choix que vous avez fait pour modifier le circuit '''addaccu''' et/ou ses composants de façon à créer le circuit '''adddsubaccu'''.
    204   * Vous décrirez quels générateurs de la bibliothèque '''DPGEN''' vous avez utilisé et pourquoi.
     205  * Vous décrirez quels générateurs de la bibliothèque '''dpgen''' vous avez utilisé et pourquoi.
    205206
    206207Vous 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).