Changes between Version 15 and Version 16 of ToolsTp2
- Timestamp:
- Dec 10, 2009, 12:49:34 PM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsTp2
v15 v16 23 23 Les 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. 24 24 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 addaccua 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) .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), 35 35 * vue comportementale : description VHDL permettant la simulation logique des circuits utilisant cette bibliothèque. 36 36 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'''.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'''. 38 38 La 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. 39 39 … … 41 41 Les cellules que vous utiliserez dans ce TP ont été caractérisées pour un procédé de fabrication CMOS 0.35 micron. 42 42 43 La liste des cellules disponibles dans la bibliothèque SXLIBpeut être obtenue en consultant la page man :43 La liste des cellules disponibles dans la bibliothèque '''sxlib''' peut être obtenue en consultant la page man : 44 44 {{{ 45 45 > man sxlib 46 46 }}} 47 47 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'''.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'''. 50 50 51 51 == 1.3 Schéma des blocs == … … 75 75 Un additionneur 1 bit (encore appelé ''Full Adder'') possède 3 entrées a,b,c, et deux sorties s et r. 76 76 La 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.77 Le bit de "somme" s vaut 1 lorsque le nombre de bits d'entrée égal à 1 est impair. 78 Le bit de "report" est égal à 1 lorsqu'au moins deux bits d'entrée valent 1. 79 79 80 80 ||a||b||c||s||r|| … … 113 113 114 114 * 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 : 116 117 {{{ 117 118 > python gen_mux.py -n 2 118 119 }}} 119 ,soit en modifiant les droits du fichier :120 * soit en modifiant les droits du fichier : 120 121 {{{ 121 122 > chmod u+x gen_mux.py … … 123 124 }}} 124 125 125 Si le script s'effectue sans erreur, un fichier '' '.vst''' est normalement généré.126 Si le script s'effectue sans erreur, un fichier ''.vst'' est normalement généré. 126 127 Vous pouvez vérifier qu'il décrit bien le circuit voulu. 127 128 128 129 == 2.2 Bloc registre == 129 130 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). 131 132 * Ecrire le script python permettant de créer l'instance du registre. 132 133 133 134 == 2.3 Bloc additionneur == 134 135 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_addercréé. 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). 138 139 * Ecrire le script python permettant de créer l'instance de l'additionneur. 139 140 … … 141 142 142 143 * 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'''). 144 145 Le circuit '''addaccu''' prend également comme paramètre le nombre de bits. 145 146 * Ecrire le script python permettant de créer des instances de l'addaccu. … … 164 165 == 2.6 Description de patterns == 165 166 166 La chaîne de CAO '''A LLIANCE''' fourni un outil permettant de décrire des séquences de stimuli : l'outil '''GENPAT'''.167 La chaîne de CAO '''Alliance''' fournit un outil permettant de décrire des séquences de stimuli : l'outil '''genpat'''. 167 168 '''Stratus''' fournit le même service pour la chaîne de CAO '''Coriolis'''. 168 De plus, '''Stratus''' encapsule l'appel au simulateur ''' ASIMUT'''.169 De plus, '''Stratus''' encapsule l'appel au simulateur '''asimut'''. 169 170 170 171 * Récupérer les deux fichiers décrivant le bloc mux avec création du fichier de patterns et simulation, et les étudier : … … 185 186 * Ecrire les patterns du composant '''addsubaccu''' et valider le bloc. 186 187 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 190 Une bibliothèque d'opérateurs existe en '''Stratus''', la bibliothèque '''dpgen'''. 190 191 191 192 Pour connaitre les générateurs dont vous disposez, consultez la documentation fournie : … … 202 203 * Vous présenterez un schéma de la hiérarchie du circuit '''addaccu'''. 203 204 * 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. 205 206 206 207 Vous 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).