Changes between Version 2 and Version 3 of ToolsCourseTp5
- Timestamp:
- May 9, 2007, 2:46:01 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp5
v2 v3 5 5 [[PageOutline]] 6 6 7 Introduction 7 Introduction : 8 8 9 Le but de ces quatre séances de TP est de présenter quelques outils de la chaîne 9 10 ALLIANCE ainsi que du flot back-end CORIOLIS, dont : 10 11 Le langage de description procédural STRATUS 12 11 13 L'éditeur de layout GRAAL 14 12 15 Le vérificateur de règles de dessin DRUC 16 13 17 L'extracteur de netlist COUGAR 18 14 19 L'abstracteur fonctionnel YAGLE 20 15 21 L'outil de preuve formelle PROOF 22 16 23 L'outil de placement du flot CORIOLIS MISTRAL 24 17 25 L'outil de routage de la chaîne ALLIANCE NERO 26 18 27 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et 19 d'un buffer instanciant cet inverseur. Les notions de cellules précaractérisées, de gabarit 28 d'un buffer instanciant cet inverseur. 29 30 Les notions de cellules précaractérisées, de gabarit 20 31 et de hiérarchie de cellules seront introduites. 21 La deuxième séance portera sur le routage "overcell" d'une cellule compteur de bits.22 Les deux dernières séances vous permettront d'obtenir une vue physique de l'amd290123 que vous avez conçu lors du TP numéro 3 et 4. Munissez-vous de tous les documents né-24 cessaires et des fichiers déjà créés.25 32 26 = 1-Dessin d'un inverseur et d'un buffer sous 27 GRAAL = 33 = 1-Dessin d'un inverseur et d'un buffer sous GRAAL = 34 28 35 = Introduction = 29 Dans les TP précédents nous avns utilisé des cellules d'une bibliothèque. Cette biblioth36 Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth 30 37 èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL. 31 GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de 38 39 GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de 32 40 dessin DRUC. La première partie de cette séance a pour objectif de dessiner une cellule 33 41 inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant 34 règles de dessin fournies. Cette cellule sera instanciée pour concevoir un buffer. 42 règles de dessin fournies. 43 44 Cette cellule sera instanciée pour concevoir un buffer. 35 45 = 1.1 Environnement technologique = 36 46 Certains outils utilisent un environnement technologique particulier. Il est désigné … … 44 54 créer avec le menu CREATE : 45 55 Les instances (importation de cellules physiques) 56 46 57 Les boîtes d'aboutement qui définissent les limites de la cellule 47 Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... Le CAluX est utilisé pour désigner 48 une portion possible pour les connecteurs. 58 59 Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... 60 61 Le CAluX est utilisé pour désigner une portion possible pour les connecteurs. 62 49 63 Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2. 64 50 65 Les Big VIAs 66 51 67 Les transistors : NMOS ou PMOS 68 52 69 GRAAL utilise la variable d'environnement GRAAL_TECHNO_NAME. Elle doit 53 être positionnée à /asim/alliance/etc/cmos.graal. 70 être positionnée à /opt/alliance/etc/cmos.graal. 71 54 72 > export GRAAL_TECHNO_NAME=/opt/alliance/etc/cmos.graal 73 55 74 = 1.3 COUGAR = 56 à utiliser est : 75 L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou .al à partir d'une description au format .ap. 76 77 Pour extraire au niveau transistor, la commande à utiliser est : 78 57 79 > cougar -t file1 file2 80 58 81 COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO 59 82 suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format 60 83 al à partir d'une description ap il faut écrire : 84 61 85 > export MBK_IN_PH=ap 86 62 87 > export MBK_OUT_LO=al 88 63 89 > cougar -t file1 file2 64 90 65 91 = 1.4 YAGLE = 66 L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un 92 93 L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un 67 94 circuit au format .vhd à partir d'une netlist au format .al si celle-ci est au niveau transistor. 68 95 L'outil VASY permet de convertir une description VHDL comportementale du format … … 72 99 > yagle -s file1 file2 73 100 > vasy -a -I vhd file1 file2 74 Avant tout, vous devez utiliser la commande : 101 102 Avant tout, vous devez utiliser la commande : 75 103 > source avt_env.sh 76 104 77 L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou105 L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou 78 106 .al à partir d'une description au format .ap. Pour extraire au niveau transistor, la commande 79 107 Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation 80 108 de YAGLE (le fichier avt_env.sh étant fourni). 81 109 Les documentations pour cet outil se trouvent en : /users/soft/AvtTools2003/doc. 82 2.1.5 PROOF 83 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de110 = 1.5 PROOF = 111 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de 84 112 type dataflows d'un même circuit à n entrées, on peut simuler par asimut 2n vecteurs 85 113 pour les deux descriptions et les comparer. … … 87 115 outil de preuve formelle qui effectue la comparaison "mathématique" des deux réseaux 88 116 booléens. 89 PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la117 PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la 90 118 commande : 91 119 > proof file1 file2 92 2.2 Schéma d'un inverseur93 Le schéma théorique d'un inverseur est présenté à la gure suivante :94 Vdd95 Vss96 In Out97 FIG. 1 Schéma en transistors d'un inverseur C-MOS98 2.3 Schéma d'un buffer99 Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés sur les -100 gures suivantes :101 Vdd102 Vss103 Vdd104 Vss105 In Out106 FIG. 2 Schéma en transistors d'un107 buffer C-MOS108 inv_x1 inv_x1109 buff_x1110 inv_x1 inv_x1111 buff_x1112 FIG. 3 Hiérarchie d'un buffer C-MOS113 Master ACSI 5114 120 115 2.4 Le gabarit sxlib 116 Les cellules sxlib ont toutes une hauteur de 50 et une largeur multiple de 5 117 Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 121 = 2 Schéma d'un inverseur = 122 123 Le schéma théorique d'un inverseur est présenté 124 125 = 3 Schéma d'un buffer = 126 Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés 127 128 129 = 4 Le gabarit sxlib = 130 Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda 131 132 Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas 118 133 et sont placées horizontalement en haut et en bas de la cellule 119 Les transistors P sont placés près du rail Vdd tandis que les transistors N sont 134 135 Les transistors P sont placés près du rail Vdd tandis que les transistors N sont 120 136 placés près du rail Vss 121 Le caisson N doit avoir une hauteur de 24 122 Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la 137 138 Le caisson N doit avoir une hauteur de 24 lambdas 139 140 Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la 123 141 cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être 124 placés sur une grille de 5x5 et peuvent se trouver n'importe où à l'intérieur de142 placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de 125 143 la cellule 126 Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles 144 145 Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles 127 146 au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir 128 147 ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés 129 sur une grille au pas de 5 (gure 5) 130 La largeur minimale de CAlu1 est de 2, plus 1 pour l'extension (gure 6) 131 Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 148 sur une grille au pas de 5 lambdas 149 150 La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension 151 Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 132 152 à Vdd et à Vss 133 Le schéma de la gure 4 présente un résumé de ces contraintes 153 134 154 135 155 = 5 Travail à effectuer = 136 156 = 5.1 Réalisation d'un inverseur = 137 157 Décrire le comportement de la cellule inverseuse dans un fichier .vbe 158 138 159 Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors 139 est représenté sur la figure 1 140 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécié sur la 141 figure 4 160 est représenté 161 162 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié 163 142 164 Valider les règles de dessin symbolique en lançant DRUC sous GRAAL 165 143 166 Extraire la netlist de l'inverseur au format .al avec COUGAR 167 144 168 Extraire le VHDL comportemental avec YAGLE 169 145 170 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier 146 171 .vbe de la spécification initiale 172 147 173 Automatisez la vérification en écrivant un Makefile. 174 148 175 = 5.2 Réalisation d'un buffer = 149 Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs. 176 177 Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs. 150 178 La hiérarchie ainsi créée est représentée sur la Le schéma en transistors est 151 179 représenté sur la 152 Décrire le comportement de la cellule buffer dans un fichier .vbe 153 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifé sur 154 la gure 4. Vous utiliserez pour cela la fonction d'instanciation de GRAAL. La 180 Décrire le comportement de la cellule buffer dans un fichier .vbe 181 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifé. 182 183 Vous utiliserez pour cela la fonction d'instanciation de GRAAL. La 155 184 cellule à instancier est bien sûr l'inverseur créé précédemment, que vous relierez 156 185 (routerez) manuellement 186 187 157 188 Valider les règles de dessin symbolique en lançant DRUC sous GRAAL 189 158 190 Extraire la netlist du buffer au format .al avec COUGAR 191 159 192 Extraire le VHDL comportemental avec YAGLE 193 160 194 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier 161 195 .vbe de la spécification initiale 196 162 197 Automatisez la vérification en écrivant un Makefile. 198 163 199 N'oubliez pas que les mans existent