Changes between Version 11 and Version 12 of ToolsCourseTp8
- Timestamp:
- Oct 7, 2007, 11:42:23 PM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp8
v11 v12 28 28 particuliers comme les alimentations VSS et VDD. 29 29 30 Le routage final sera effectué par l'outil ''' NERO'''.30 Le routage final sera effectué par l'outil '''nero'''. 31 31 32 32 Vous utiliserez aussi '''cougar''' pour obtenir une net list extraite, et '''lvx''', pour 33 comparer la net-list extraite à la net-listinitiale.33 comparer la ''net-list'' extraite à la ''net-list'' initiale. 34 34 35 35 Vous utiliserez conjointement les cellules de la bibliothèque '''SXLIB''', … … 119 119 }}} 120 120 121 = 4 Placement explicite des opérateurs du chemin de données du circuit AM2901=121 = 4 Placement explicite des opérateurs du chemin de données = 122 122 123 123 Reprenez le fichier ''am2901_dpt.py'' du TP4. Pour l'instant, ce fichier ne comporte qu'une … … 133 133 }}} 134 134 135 [[Image(preplacement.jpg,nolink)]] 136 137 = 5 Travail sur le coeur : Préplacement des structures régulières = 138 139 à partir du fichier de description structurelle [attachment:amd2901_core.py coeur du circuit] que vous avez enrichi 140 de la description des "netlists" de la partie contrôle et de la partie chemin de données, effectuez les étapes suivantes dans la méthode 141 Layout : 135 = 5 placement des blocs réguliers dans le coeur = 136 137 à partir du fichier de description structurelle ''am2901_core.py'' décrivant le coeur du circuit AM2901, 138 introduisez les étapes suivantes dans la méthode Layout : 142 139 143 140 * Placer le chemin de données : fonction Place () 144 141 145 142 * Agrandir la boite d'aboutement du coeur : fonction !ResizeAb () 146 cette étape est utile pour réserver la place pour la partie contrôle 143 Cette étape est utile pour réserver la place nécessaire au placement des cellules de la partie contrôle. 144 La logique "irrégulière" constituant la partie contrôle n'a pas besoin 145 d'être placée explicitement. Cela sera fait automatiquement par la suite ! 146 147 147 148 148 * Placer les rails de rappels d'alimentation dans le coeur : … … 151 151 * Placer les connecteurs du coeur : fonction !AlimConnectors () 152 152 153 154 '''ATTENTION ''': La logique "irrégulière" constituant la partie contrôle n'a pas besoin 155 d'être placée explicitement. Cela sera fait automatiquement par la suite ! 156 157 '''Vérifiez le résultat''' 158 {{{ 159 > ./execute_amd2901_core.py 160 }}} 161 162 163 = 6 Travail sur le cicuit complet = 164 165 Prenez le fichier [attachment:amd2901_chip.py circuit complet avec les plots] et complétez la méthode Layout 153 * Vérifier le résultat : 154 {{{ 155 > ./execute_am2901_core.py 156 }}} 157 158 = 6 Placement de la couronne de plots autour du coeur = 159 160 Reprenez le fichier ''am2901_chip.py'' (circuit complet avec les plots), et ajoutez une méthode Layout 166 161 comme indiqué ci-dessous. 167 162 168 == 6.1 Placement de la couronne de plots et du coeur == 169 170 Dans le fichier amd2901_chip.py fourni, les plots sont instanciés dans la méthode 171 Netlist : 163 Dans le fichier ''amd2901_chip.py'', les plots sont instanciés dans la méthode Netlist : 172 164 {{{ 173 165 def Netlist ( self ) : … … 184 176 ) 185 177 }}} 186 Il vous faut donc, dans la méthode Layout : 187 178 179 Il faut donc, dans la méthode Layout : 188 180 189 181 * Définir la taille de la boîte d'aboutement globale du circuit de façon à ce que 190 les plots puissent être placés à la périphérie : fonction !DefAb () (Commencer par 191 définir une boite d'aboutement de 4000 par 4000 et vous essaierez ensuite de la 192 diminuer) 182 les plots puissent être placés à la périphérie : fonction !DefAb () (On peut commencer par 183 définir une boite d'aboutement de 4000 par 4000 et essayer ensuite de la réduire) 193 184 194 185 * Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction … … 198 189 fait à l'aide des 4 fonctions : !PadNorth (), !PadSouth (), !PadEast () et !PadWest (). 199 190 200 * Vérifiez le résultat : 201 {{{ 202 > ./execute_amd2901_chip.py 203 }}} 204 205 == 6.2 Routage des alimentations == 206 Vous devez utiliser la fonction !PowerRing () pour créer la grille d'alimentation. 207 Vérifiez le résultat : 208 {{{ 209 > ./execute_amd2901_chip.py 210 }}} 211 212 213 == 6.3 Placement de la logique irrégulière == 214 C'est le placeur '''Mistral''' qui se charge de placer les cellules de la partie de contrôle. 191 * Vérifier le résultat : 192 {{{ 193 > ./execute_amd2901_chip.py 194 }}} 195 196 = 7 Routage des alimentations = 197 198 Vous devez utiliser la fonction !PowerRing () pour créer la grille d'alimentation, et 199 Vérifier le résultat : 200 {{{ 201 > ./execute_amd2901_chip.py 202 }}} 203 204 205 = 8 Placement de la logique irrégulière = 206 207 C'est le placeur '''Mistral''' qui se charge de placer automatiquement les cellules non encore placées. 215 208 Il détecte quelles sont les cellules qui n'ont pas été placées et complète le placement en 216 209 utilisant les zones "vides". Pour appeler le placeur '''Mistral''', vous devez faire appel à la … … 220 213 221 214 Attention : Pour pouvoir placer automatiquement la logique "irrégulière", il faut 222 que les plots soient placés. L'outil de placement du flot CORIOLIS place les cellules 223 en se basant sur les attirances de celles-ci vers les plots ainsi que vers les cellules déjà 224 placées. 215 avoir préalablement défini la position des plots d'entrée/sortie sur les 4 faces du circuit. 216 L'outil de placement automatique place les cellules non placées en se basant sur les attirances 217 vers les plots ainsi que vers les cellules déjà placées. 218 225 219 [[Image(placement.jpg,nolink)]] 220 226 221 Vérifiez le résultat : 227 222 {{{