Changes between Version 7 and Version 8 of ToolsCourseTp5
- Timestamp:
- May 10, 2007, 10:39:55 AM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp5
v7 v8 11 11 Le langage de description procédural STRATUS 12 12 13 L'éditeur de layout GRAAL13 * L'éditeur de layout GRAAL 14 14 15 Le vérificateur de règles de dessin DRUC15 * Le vérificateur de règles de dessin DRUC 16 16 17 L'extracteur de netlist COUGAR17 * L'extracteur de netlist COUGAR 18 18 19 L'abstracteur fonctionnel YAGLE20 19 21 L'outil de preuve formelle PROOF20 * L'outil de placement du flot CORIOLIS MISTRAL 22 21 23 L'outil de placement du flot CORIOLIS MISTRAL 24 25 L'outil de routage de la chaîne ALLIANCE NERO 22 * L'outil de routage de la chaîne ALLIANCE NERO 26 23 27 24 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et 28 d'un buffer instanciant cet inverseur.25 d'un buffer instanciant cet inverseur. 29 26 30 27 Les notions de cellules précaractérisées, de gabarit 31 et de hiérarchie de cellules seront introduites.28 et de hiérarchie de cellules seront introduites. 32 29 33 30 = 1-Dessin d'un inverseur et d'un buffer sous GRAAL = … … 35 32 = Introduction = 36 33 Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth 37 èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL.34 èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL. 38 35 39 36 GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de dessin DRUC. 40 La première partie de cette séance a pour objectif de dessiner une cellule41 inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant42 règles de dessin fournies.37 La première partie de cette séance a pour objectif de dessiner une cellule 38 inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant 39 règles de dessin fournies. 43 40 44 41 Cette cellule sera instanciée pour concevoir un buffer. 45 42 = 1.1 Environnement technologique = 46 Certains outils utilisent un environnement technologique particulier. Il est désigné 47 la variable d'environnement RDS_TECHNO_NAME qui doit être positionnée à 43 Certains outils utilisent un environnement technologique particulier. Il est désigné 44 la variable d'environnement RDS_TECHNO_NAME qui doit être positionnée à 45 48 46 opt/alliance/etc/cmos.rds : 47 49 48 {{{ 50 49 > export RDS_TECHNO_NAME=/opt/alliance/etc/cmos.rds … … 53 52 = 1.2 GRAAL = 54 53 55 L'éditeur de layout GRAAL manipule six types d'objets différents que l'on peut56 créer avec le menu CREATE :57 Les instances (importation de cellules physiques)54 L'éditeur de layout GRAAL manipule six types d'objets différents que l'on peut 55 créer avec le menu CREATE : 56 * Les instances (importation de cellules physiques) 58 57 59 Les boîtes d'aboutement qui définissent les limites de la cellule58 * Les boîtes d'aboutement qui définissent les limites de la cellule 60 59 61 Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ...60 * Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... 62 61 63 Le CAluX est utilisé pour désigner une portion possible pour les connecteurs.62 * Le CAluX est utilisé pour désigner une portion possible pour les connecteurs. 64 63 65 Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.64 * Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2. 66 65 67 Les Big VIAs66 * Les Big VIAs 68 67 69 Les transistors : NMOS ou PMOS68 * Les transistors : NMOS ou PMOS 70 69 71 70 GRAAL utilise la variable d'environnement GRAAL_TECHNO_NAME. Elle doit … … 85 84 }}} 86 85 87 COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO88 suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format89 al à partir d'une description ap il faut écrire :86 COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO 87 suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format 88 al à partir d'une description ap il faut écrire : 90 89 {{{ 91 90 > export MBK_IN_PH=ap … … 96 95 }}} 97 96 98 = 1.4 YAGLE =99 97 100 L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un101 circuit au format .vhd à partir d'une netlist au format .al si celle-ci est au niveau transistor.102 L'outil VASY permet de convertir une description VHDL comportementale du format103 .vhd au format.vbe. La commande à utiliser est :104 {{{105 > export MBK_IN_LO=al106 98 107 > export YAGLE_BEH_FORMAT=vbe 108 109 > yagle -s file1 file2 110 111 > vasy -a -I vhd file1 file2 112 }}} 113 114 Avant tout, vous devez utiliser la commande : 115 {{{ 116 > source avt_env.sh 117 }}} 118 119 L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou 120 .al à partir d'une description au format .ap. Pour extraire au niveau transistor, la commande 121 Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation 122 de YAGLE (le fichier avt_env.sh étant fourni). 123 Les documentations pour cet outil se trouvent en : /users/soft/AvtTools2003/doc. 124 125 = 1.5 PROOF = 126 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de 127 type dataflows d'un même circuit à n entrées, on peut simuler par asimut 2n vecteurs 128 pour les deux descriptions et les comparer. 129 Cette solution devient vite coûteuse en temps CPU et il vaut mieux faire appel à un 130 outil de preuve formelle qui effectue la comparaison "mathématique" des deux réseaux 131 booléens. 132 PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la 133 commande : 134 {{{ 135 > proof file1 file2 136 }}} 137 99 138 100 = 2 Schéma d'un inverseur = 139 101 … … 147 109 148 110 = 4 Le gabarit sxlib = 149 Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda111 * Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda 150 112 151 Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas152 et sont placées horizontalement en haut et en bas de la cellule113 * Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas 114 et sont placées horizontalement en haut et en bas de la cellule 153 115 154 Les transistors P sont placés près du rail Vdd tandis que les transistors N sont155 placés près du rail Vss116 * Les transistors P sont placés près du rail Vdd tandis que les transistors N sont 117 placés près du rail Vss 156 118 157 Le caisson N doit avoir une hauteur de 24 lambdas158 [[Image(gabarit.jpg,nolink)]]119 * Le caisson N doit avoir une hauteur de 24 lambdas 120 [[Image(gabarit.jpg,nolink)]] 159 121 160 Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la161 cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être162 placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de163 la cellule122 * Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la 123 cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être 124 placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de 125 la cellule 164 126 165 Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles166 au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir167 ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés168 sur une grille au pas de 5 lambdas127 * Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles 128 au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir 129 ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés 130 sur une grille au pas de 5 lambdas 169 131 170 La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension171 Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement172 à Vdd et à Vss132 * La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension 133 * Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 134 à Vdd et à Vss 173 135 174 136 175 137 = 5 Travail à effectuer = 176 138 = 5.1 Réalisation d'un inverseur = 177 Décrire le comportement de la cellule inverseuse dans un fichier .vbe139 * Décrire le comportement de la cellule inverseuse dans un fichier .vbe 178 140 179 Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors180 est représenté141 * Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors 142 est représenté 181 143 182 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié144 * Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié 183 145 184 Valider les règles de dessin symbolique en lançant DRUC sous GRAAL146 * Valider les règles de dessin symbolique en lançant DRUC sous GRAAL 185 147 186 Extraire la netlist de l'inverseur au format .al avec COUGAR148 * Extraire la netlist de l'inverseur au format .al avec COUGAR 187 149 188 Extraire le VHDL comportemental avec YAGLE 189 190 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier 191 .vbe de la spécification initiale 192 193 Automatisez la vérification en écrivant un Makefile. 150 194 151 195 152 = 5.2 Réalisation d'un buffer = 196 153 197 154 Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs. 198 La hiérarchie ainsi créée est représentée sur la Le schéma en transistors est155 La hiérarchie ainsi créée est représentée sur la Le schéma en transistors est 199 156 représenté sur la 200 157 Décrire le comportement de la cellule buffer dans un fichier .vbe