Changes between Version 33 and Version 34 of ToolsCourseTp5
- Timestamp:
- Sep 29, 2008, 11:47:05 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp5
v33 v34 1 1 {{{ 2 2 #!html 3 <h1> TP 6: Dessin de cellules précaractérisées</h1>3 <h1> TP5 : Dessin de cellules précaractérisées</h1> 4 4 }}} 5 5 [[PageOutline]] … … 7 7 Introduction : 8 8 9 Le but de ce TP est le dessin sous '''GRAAL''' d'une cellule inverseuse et 10 d'une porte Nand à 2 entrées. 9 Le but de ce TP est le dessin sous '''GRAAL''' d'une cellule inverseuse, d'un buffer et d'une porte Nand à 2 entrées. 11 10 12 Les notions de cellules précaractérisées, de gabarit 13 et de hiérarchie de cellules seront introduites. 11 Les notions de cellules précaractérisées, de gabarit et de hiérarchie de cellules seront introduites. 14 12 15 = 1-Dessin d'un inverseur et d'une porte Nand2 sous GRAAL=13 = Introduction = 16 14 17 == Introduction == 18 Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth 19 èque peut être enrichie de nouvelles cellules grâce à l'éditeur '''GRAAL'''. 15 Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. 16 Cette bibliothèque peut être enrichie de nouvelles cellules grâce à l'éditeur '''GRAAL'''. 20 17 21 18 '''GRAAL''' est un éditeur de layout symbolique intégrant le vérificateur de règles de dessin '''DRUC'''. 22 19 23 La première partie de cette séance a pour objectif de dessiner une cellule en tenant compte des règles de dessin 20 Cette séance a pour objectif de dessiner des cellule en tenant compte des règles de dessin suivantes : 24 21 25 22 ftp://asim.lip6.fr/pub/amd2901/symb_rules00-1.pdf 26 23 24 Il s'agit tout d'abord de la cellule inverseuse '''inv_x1''' sous la forme d'une cellule précaractérisée de la bibliothèque '''sxlib''' en respectant les règles de dessin fournies, puis le Nand2 au gabarit '''sxlib''', et enfin un buffer. 27 25 28 Il s'agit tout d'abord de la cellule inverseuse '''inv_x1''' sous la forme d'une cellule précaractérisée de la bibliothèque '''sxlib''' en respectant les règles de dessin fournies, puis on dessinera le Nand2 au gabarit '''sxlib''' 26 = 2 Environnement technologique = 29 27 30 31 32 === 1.1 Environnement technologique === 33 Certains outils utilisent un environnement technologique particulier. Il est désigné 34 la variable d'environnement '''RDS_TECHNO_NAME''' qui doit être positionnée à 35 36 opt/alliance/etc/cmos.rds : 28 Certains outils utilisent un environnement technologique particulier. 29 Il est désigné la variable d'environnement '''RDS_TECHNO_NAME''' qui doit être positionnée à ''opt/alliance/etc/cmos.rds'' : 37 30 38 31 {{{ … … 40 33 }}} 41 34 42 === 1.2 GRAAL ===35 == 2.1 GRAAL == 43 36 44 L'éditeur de layout '''GRAAL''' manipule plusieurs types d'objets différents que l'on peut 45 créer avec le menu '''CREATE''' : 46 * Les instances (importation de cellules physiques) 37 L'éditeur de layout '''GRAAL''' manipule plusieurs types d'objets différents que l'on peut créer avec le menu '''CREATE''' : 38 * les instances (importation de cellules physiques), 39 * les boîtes d'aboutement qui définissent les limites de la cellule, 40 * les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... 41 * le CAluX est utilisé pour désigner une portion possible pour les connecteurs, 42 * les VIAs ou contacts :ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2, 43 * les Big VIAs, 44 * les transistors : NMOS ou PMOS. 47 45 48 * Les boîtes d'aboutement qui définissent les limites de la cellule 49 50 * Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... 51 52 * Le CAluX est utilisé pour désigner une portion possible pour les connecteurs. 53 54 * Les VIAs ou contacts :ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2. 55 56 * Les Big VIAs 57 58 * Les transistors : NMOS ou PMOS 59 60 '''GRAAL''' utilise la variable d'environnement '''GRAAL_TECHNO_NAME'''. Elle doit 61 être positionnée à 62 /opt/alliance/etc/cmos.graal. 46 '''GRAAL''' utilise la variable d'environnement '''GRAAL_TECHNO_NAME'''. 47 Elle doit être positionnée à ''/opt/alliance/etc/cmos.graal'' : 63 48 64 49 {{{ … … 66 51 }}} 67 52 68 === 1.3 COUGAR === 69 L'outil '''COUGAR''' est capable d'extraire la netlist d'un circuit aux formats .vst ou .al à partir d'une description au format .ap. 53 == 2.2 COUGAR == 54 55 L'outil '''COUGAR''' est capable d'extraire la netlist d'un circuit aux formats '''.vst''' ou '''.al''' à partir d'une description au format '''.ap'''. 70 56 71 57 Pour extraire au niveau transistor, la commande à utiliser est : … … 74 60 }}} 75 61 76 '''COUGAR''' utilise les variables d'environnement '''MBK_IN_PH''' et '''MBK_OUT_LO''' 77 suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format 78 al à partir d'une description ap il faut écrire : 62 '''COUGAR''' utilise les variables d'environnement '''MBK_IN_PH''' et '''MBK_OUT_LO''' suivant les formats d'entrée et de sortie. 63 Par exemple pour générer une netlist au format '''.al''' à partir d'une description '''.ap''' il faut écrire : 79 64 {{{ 80 65 > export MBK_IN_PH=ap 81 82 66 > export MBK_OUT_LO=al 83 84 67 > cougar -t file1 file2 85 68 }}} 86 69 70 == 2.3 YAGLE == 87 71 88 89 === 1.4 YAGLE === 90 l'outil ''' YAGLE ''' est capable d'extraire la description VHDL comportementale d'uncircuit au format '''.vhd''' à partir d'une ''netlist '' au format '''.al''' ''si celle-ci est au niveau transistor.'' 91 L'outil '''VASY''' permet de convertir une description VHDL comportementale du format '''.vhd''' au format '''.vbe'''. La commande à utiliser est : 72 l'outil ''' YAGLE ''' est capable d'extraire la description VHDL comportementale d'uncircuit au format '''.vhd''' à partir d'une ''netlist '' au format '''.al''' ''si celle-ci est au niveau transistor''. 73 L'outil '''VASY''' permet de convertir une description VHDL comportementale du format '''.vhd''' au format '''.vbe'''. 74 La commande à utiliser est : 92 75 {{{ 93 76 > export MBK_IN_LO=al … … 97 80 > vasy -a -I vhd file1 file2 98 81 }}} 82 99 83 Avant tout vous devez utiliser la commande : 100 84 {{{ … … 105 89 Les documentations pour cet outil se trouvent en :'''/users/soft/AvtTools2003/doc '''. 106 90 107 === 1.5 PROOF === 108 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de type ''dataflow'' d'un même circuit à n entrées, on peut simuler par '''asimut''' 2n vecteurs pour les deux descriptions et les comparer. 91 == 2.4 PROOF == 92 93 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de type ''dataflow'' d'un même circuit à n entrées, on peut simuler par '''asimut''' des vecteurs pour les deux descriptions et les comparer. 109 94 Cette solution devient vite coûteuse en temps CPU et il vaut mieux faire appel à un outil de preuve formelle qui effectue la comparaison ''mathématique'' des deux réseaux booléens. 110 '''PROOF''' réalise cette opération entre les description file1.vbe et file2.vbe par la commande 95 '''PROOF''' réalise cette opération entre les description file1.vbe et file2.vbe par la commande : 96 111 97 {{{ 112 98 >proof file1 file2 113 99 }}} 114 == 2 Schéma d'un inverseur == 115 Le schéma théorique d'un inverseur est présenté 100 101 = 3 Schémas = 102 103 == 3.1 Inverseur == 104 105 Le schéma théorique d'un inverseur est présenté dans la figure suivante : 106 116 107 [[Image(inv_x1.jpg,nolink)]] 117 108 118 == 3 Schéma d'un Nand2 == 119 Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés 109 == 3.2 Schéma d'un Nand2 == 110 111 Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés dans la figure suivante : 112 120 113 [[Image(na2.jpg,nolink)]] 121 114 115 == 4 Le gabarit sxlib == 122 116 117 * Les cellules de la bibliothèque '''sxlib''' ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda. 118 * Les alimentations Vdd et Vss sont réalisées en Calu1 ; 119 elles ont une largeur de 6 lambdas et sont placées horizontalement en haut et en bas de la cellule. 120 * Les transistors P sont placés près du rail Vdd tandis que les transistors N sont placés près du rail Vss. 121 * Le caisson N doit avoir une hauteur de 24 lambdas : 122 [[Image(gabarit.jpg,nolink)]] 123 * Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la cellule et jouent le rôle de connecteurs "étalés". 124 Ils doivent obligatoirement être placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de la cellule. 125 * Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles au routeur Lorsque vous voulez protéger des segments AluX, 126 il faut les recouvrir ou les entourer de TAlux correspondant (même couche). 127 Les TAluX sont placés sur une grille au pas de 5 lambdas . 128 * La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension. 129 * Les caissons N et P doivent être polarisés. 130 Il faut donc les relier respectivement à Vdd et à Vss. 123 131 124 == 4 Le gabarit sxlib == 125 * Les cellules de la bibliothèque '''sxlib''' ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda 132 = 5 Travail à effectuer = 126 133 127 * Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas 128 et sont placées horizontalement en haut et en bas de la cellule 134 == 5.1 Réalisation d'un inverseur == 129 135 130 * Les transistors P sont placés près du rail Vdd tandis que les transistors N sont 131 placés près du rail Vss 136 * Décrire le comportement de la cellule inverseuse dans un fichier .vbe. 137 * Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors est représenté. 138 * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié. 139 * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL'''. 140 * Extraire la netlist de l'inverseur au format .al avec '''COUGAR'''. 132 141 133 * Le caisson N doit avoir une hauteur de 24 lambdas 134 [[Image(gabarit.jpg,nolink)]] 142 == 5.2 Réalisation d'un Nand2 == 135 143 136 * Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la 137 cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être 138 placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de 139 la cellule 140 141 * Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles 142 au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir 143 ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés 144 sur une grille au pas de 5 lambdas 145 146 * La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension 147 * Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 148 à Vdd et à Vss 149 150 151 == 5 Travail à effectuer == 152 === 5.1 Réalisation d'un inverseur === 153 * Décrire le comportement de la cellule inverseuse dans un fichier .vbe 154 155 * Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors 156 est représenté 157 158 * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié 159 160 * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL''' 161 162 * Extraire la netlist de l'inverseur au format .al avec '''COUGAR''' 163 164 165 166 === 5.2 Réalisation d'un Nand2 === 167 * Décrire le comportement de la cellule Nand à 2 entrées dans un fichier .vbe 168 169 * Dessiner le "stick-diagram" du Nand2 dont le schéma en transistors 170 est représenté 171 172 * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié 173 174 * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL''' 175 176 * Extraire la netlist de la porte nand2 au format .al avec '''COUGAR''' 177 178 179 180 181 N'oubliez pas que les mans existent 182 144 * Décrire le comportement de la cellule Nand à 2 entrées dans un fichier .vbe. 145 * Dessiner le "stick-diagram" du Nand2 dont le schéma en transistors est représenté. 146 * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié. 147 * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL'''. 148 * Extraire la netlist de la porte nand2 au format .al avec '''COUGAR'''.