Changes between Version 1 and Version 2 of ToolsCourseTp7
- Timestamp:
- May 7, 2007, 4:48:32 PM (18 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp7
v1 v2 4 4 }}} 5 5 [[PageOutline]] 6 Séances 3 et 4 : Placement et Routage du circuit Amd2901 7 Vous aurez besoin de tous les chiers que vous avez générés lors du TP2, à savoir : 8 amd2901_ctl.vbe, description comportementale de la partie contrôle 9 amd2901_dpt.vbe, description comportementale de la partie chemin de données 10 amd2901_dpt.py, chier python en stratus de la partie chemin de données (à 6 7 8 Vous aurez besoin de tous les fichiers que vous avez générés lors des TP3 et 4, à savoir : 9 amd2901_ctl.vbe, description comportementale de la partie contrôle 10 amd2901_dpt.vbe, description comportementale de la partie chemin de données 11 amd2901_dpt.py, fichier python en stratus de la partie chemin de données (à 11 12 compléter) 12 execute_amd2901_dpt.py, description structurelle en STRATUS d'instanciation13 execute_amd2901_dpt.py, description structurelle en STRATUS d'instanciation 13 14 du chemin de données 14 pattern.pat, chier de tests 15 Makele, qui automatise le ot de conception du TP2. 16 Ainsi que des chiers fournis lors du TP 3 que vous devrez compléter : 17 ( répertoire : ~trncomun/TP/2006/TP3/Fichiers/Fournis/amd2901/ ) 18 amd2901_core.py, description structurelle en STRATUS du coeur du circuit 19 amd2901_chip.py, description structurelle en STRATUS du circuit complet 20 Il faut maintenant enrichir les chiers .py avec les étapes de placement-routage. 21 4.1 Outils utilisés 22 Vous allez utiliser les outils de placement ot Coriolis et le routeur d'Alliance, ainsi 23 que tous les outils de vérication vus dans la première partie de ce TP. 15 pattern.pat, fichier de tests 16 Makefile, qui automatise le flot de conception du TP3 et 4. 17 Ainsi que des fichiers fournis lors du TP3 et 4 que vous devrez compléter : 18 19 amd2901_core.py, description structurelle en STRATUS du coeur du circuit 20 amd2901_chip.py, description structurelle en STRATUS du circuit complet 21 Il faut maintenant enrichir les fichiers .py avec les étapes de placement-routage. 22 23 = 4.1 Outils utilisés = 24 Vous allez utiliser les outils de placement flot Coriolis et le routeur d'Alliance, ainsi 25 que tous les outils de vérification vus dans la première partie de ce TP. 24 26 Vous utiliserez aussi lvx, le comparateur de netlists. Lorsque le système est trop complexe 25 il est dif cile d'utiliser proof, le comparateur formel (calculs trop long). On utilise27 il est difficile d'utiliser proof, le comparateur formel (calculs trop long). On utilise 26 28 alors une comparaison de netlists. Essayez les deux méthodes (proof et lvx). 27 29 4.2 Environnement technologique … … 41 43 > export CRL_OUT_LO=vst 42 44 > export CRL_OUT_PH=ap 43 Master ACSI 1344 TP3 Vue physique : placement et routage45 45 > export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages/stratus 46 46 > export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages/isobar :$PYTHONPATH 47 47 > export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages :$PYTHONPATH 48 48 NB : Ces variables d'environnement sont positionnées par défaut, mais il peut être 49 utile de les vérier. 50 4.3 Précautions quant au nommage des chiers 51 D'une manière générale, les chiers décrivant une netlist logique doivent porter le 52 même nom que le chier correspondant décrivant la vue physique. C'est à dire que 53 le chier amd2901_dpt.vst (vue logique) doit correspondre au chier amd2901_dpt.ap 54 (vue physique). Il en va de même pour le chier amd2901_core. 55 4.4 Travail sur le chemin de données : Préplacement des opérateurs 56 Le TP numéro 2 vous a permis de décrire la netlist hiérarcique du chemin de donn 49 utile de les vérifier. 50 = 4.3 Précautions quant au nommage des fichiers = 51 D'une manière générale, les fichiers décrivant une netlist logique doivent porter le 52 même nom que le fichier correspondant décrivant la vue physique. C'est à dire que 53 le fichier amd2901_dpt.vst (vue logique) doit correspondre au fichier amd2901_dpt.ap 54 (vue physique). Il en va de même pour le fichier amd2901_core. 55 56 = 4.4 Travail sur le chemin de données : Préplacement des opérateurs = 57 58 Le TP 3 et 4 vous a permis de décrire la netlist hiérarcique du chemin de donn 57 59 ées. Vous allez maintenant placer les colonnes du chemin de données de manière à 58 pro ter de la régularité du chemin de données.60 profiter de la régularité du chemin de données. 59 61 Pour réaliser votre placement des opérateurs, vous disposez des fonctions de STRATUS 60 62 suivantes : 61 Place()62 PlaceRight(), PlaceTop(), PlaceLeft(), PlaceBottom()63 SetRefIns()64 DefAb(), ResizeAb()65 Toutes ces fonctions doivent être utilisées dans la méthode Layout.66 Reprenons l'exemple du TP 2, on donne le code suivant pour lechier circuit.py :63 Place() 64 PlaceRight(), PlaceTop(), PlaceLeft(), PlaceBottom() 65 SetRefIns() 66 DefAb(), ResizeAb() 67 Toutes ces fonctions doivent être utilisées dans la méthode Layout. 68 Reprenons l'exemple du TP 3, on donne le code suivant pour le fichier circuit.py : 67 69 #!/usr/bin/env python 68 70 from stratus import * … … 74 76 PlaceRight ( self.instance_or2_4bits, NOSYM ) 75 77 PlaceRight ( self.instance_add2_4bits, NOSYM ) 76 Ensuite pour le chier test_circuit.py, il faut rajouter l'appel à la méthode Layout :78 Ensuite pour le fichier test_circuit.py, il faut rajouter l'appel à la méthode Layout : 77 79 #!/usr/bin/env python 78 80 from stratus import * … … 86 88 87 89 88 Reprenez le chier amd2901_dpt.py. Pour l'instant, cechier ne comporte qu'une90 Reprenez le fichier amd2901_dpt.py. Pour l'instant, ce fichier ne comporte qu'une 89 91 description de la netlist. Cela vous a permis de générer une description structurelle 90 sous la forme d'un chier .vst. Il s'agit maintenant de placer explicitement les colonnes.92 sous la forme d'un fichier .vst. Il s'agit maintenant de placer explicitement les colonnes. 91 93 Le placement des colonnes du chemin de données ne doit pas être 92 94 fait au hasard. La faisabilité et la qualité du routage en dépendent ! 93 95 Aidez-vous du manuel de STRATUS : 94 ~le :///asim/coriolis/share/doc/en/html/stratus/index.html96 file :///opt/coriolis/share/doc/en/html/stratus/index.html 95 97 Utilisez STRATUS pour générer le tout : 96 98 > ./execute_amd2901_dpt.py … … 98 100 99 101 100 4.5 Travail sur le coeur : Préplacement des structures régulières 101 Prenez le chier amd2901_core.py et effectuez les étapes suivantes dans la méthode102 = 4.5 Travail sur le coeur : Préplacement des structures régulières = 103 Prenez le fichier amd2901_core.py et effectuez les étapes suivantes dans la méthode 102 104 Layout : 103 Placer le chemin de données : fonction Place ()104 Agrandir la boite d'aboutement du coeur : fonction ResizeAb ()105 Placer les rails de rappels d'alimentation dans le coeur : fonctions AlimVerticalRail105 Placer le chemin de données : fonction Place () 106 Agrandir la boite d'aboutement du coeur : fonction ResizeAb () 107 Placer les rails de rappels d'alimentation dans le coeur : fonctions AlimVerticalRail 106 108 () et AlimHorizontalRail () 107 Placer les connecteurs du coeur : fonction AlimConnectors ()109 Placer les connecteurs du coeur : fonction AlimConnectors () 108 110 ATTENTION : La logique "irrégulière" constituant la partie contrôle n'a pas besoin 109 111 d'être placée explicitement. Cela sera fait automatiquement par la suite ! 110 Véri ez le résultat :112 Vérifiez le résultat : 111 113 > ./execute_amd2901_core.py 112 4.6 Travail sur le cicuit complet 113 Prenez le chier amd2901_chip.py et complétez la méthode Layout. 114 = 4.6 Travail sur le cicuit complet= 115 116 Prenez le fichier amd2901_chip.py et complétez la méthode Layout. 114 117 4.6.1 Placement de la couronne de plots et du coeur 115 Dans le chier amd2901_chip.py fourni, les plots sont instanciés dans la méthode118 Dans le fichier amd2901_chip.py fourni, les plots sont instanciés dans la méthode 116 119 Netlist : 117 120 def Netlist ( self ) : … … 129 132 130 133 131 Dénir la taille de la boîte d'aboutement globale du circuit de façon à ce que134 Définir la taille de la boîte d'aboutement globale du circuit de façon à ce que 132 135 les plots puissent être placés à la périphérie : fonction DefAb () (Commencer par 133 dé nir une boite d'aboutement de 4000 par 4000 et vous essaierez ensuite de la136 définir une boite d'aboutement de 4000 par 4000 et vous essaierez ensuite de la 134 137 diminuer) 135 Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction138 Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction 136 139 PlaceCentric () 137 Dénir sur quelle face et dans quel ordre vous souhaitez placer les plots. Cela se140 Définir sur quelle face et dans quel ordre vous souhaitez placer les plots. Cela se 138 141 fait à l'aide des 4 fonctions : PadNorth (), PadSouth (), PadEast () et PadWest (). 139 Véri ez le résultat :142 Vérifiez le résultat : 140 143 > ./execute_amd2901_chip.py 141 144 4.6.2 Routage des alimentations 142 145 Vous devez utiliser la fonction PowerRing () pour créer la grille d'alimentation. 143 Vériez le résultat : 144 > ./execute_amd2901_chip.py 146 Vérifiez le résultat : 147 > ./execute_amd2901_chip.py 148 145 149 FIG. 16 Zoom sur le placement des plots et les courrones d'alimentations 146 4.6.3 Placement de la logique irrégulière 147 C'est le placeur Mistral qui se charge de placer les cellules de la partie de contrôle. 150 151 = 4.6.3 Placement de la logique irrégulière = 152 C'est le placeur Mistral qui se charge de placer les cellules de la partie de contrôle. 148 153 Il détecte quelles sont les cellules qui n'ont pas été placées et complète le placement en 149 154 utilisant les zones "vides". Pour appeler le placeur Mistral, vous devez faire appel à la … … 152 157 153 158 Attention : Pour pouvoir placer automatiquement la logique "irrégulière", il faut 154 que les plots soient placés. L'outil de placement du ot CORIOLIS place les cellules159 que les plots soient placés. L'outil de placement du flot CORIOLIS place les cellules 155 160 en se basant sur les attirances de celles-ci vers les plots ainsi que vers les cellules déjà 156 161 placées. 157 Véri ez le résultat :162 Vérifiez le résultat : 158 163 > ./execute_amd2901_chip.py 159 164 … … 162 167 le placement automatique de cellules de bourrage. 163 168 164 Véri ez le résultat :169 Vérifiez le résultat : 165 170 > ./execute_amd2901_chip.py 166 171 … … 168 173 4.6.4 Routage des signaux d'horloge 169 174 Vous devez utiliser la fonction RouteCk () qui route le signal d'horloge. 170 Véri ez le résultat :171 > ./execute_amd2901_chip.py 172 FIG. 20 Zoom sur le routage d'horloge175 Vérifiez le résultat : 176 > ./execute_amd2901_chip.py 177 FIG. 20 Zoom sur le routage d'horloge 173 178 174 179 … … 178 183 > nero -V -p amd2901_chip amd2901_chip amd2901_chip_r 179 184 L'option -p indique que vous transmettez un placement, à savoir celui du chip. Le 180 troisième argument est la netlist du chip, le quatrième est le chier résultat.185 troisième argument est la netlist du chip, le quatrième est le fichier résultat. 181 186 NOTA BENE : La variable MBK_CATA_LIB ne doit contenir qu'une seule fois les 182 187 chemins d'accès aux bibliothèques. … … 190 195 dans la variable d'entrée MBK_IN_LO avant la simulation. 191 196 > export MBK_IN_LO=al 192 Faites attention au chier CATAL!197 Faites attention au fichier CATAL! 193 198 Pour connaitre le nombre de transistors, on effectue une extraction du circuit au niveau 194 199 transistor : … … 200 205 Ces mêmes outils seront utilisés pour laréalisation du processeur MIPS R3000. 201 206 Le compte-rendu du TP doit comporter : 202 Vos logins, vos noms et prénoms, et vos répertoires de travail pour ce TP (laissez207 Vos logins, vos noms et prénoms, et vos répertoires de travail pour ce TP (laissez 203 208 libre accès à vos répertoires en lecture !). 204 Une description exacte de la méthodologie employée, incluant les éventuels probl209 Une description exacte de la méthodologie employée, incluant les éventuels probl 205 210 èmes rencontrés. 206 Pour la conception de cellules sous graal, expliquez vos choix (pourquoi avoir211 Pour la conception de cellules sous graal, expliquez vos choix (pourquoi avoir 207 212 placé un via ici plutôt que là...), quelle est la taille de vos cellules, quelles sont 208 213 les performances probables, quelles améliorations envisagez-vous... Des captures 209 214 d'écrans sont les bienvenues (dans la mesure du possible). 210 Pour l'amd2901, décrivez leot de conception. Quels choix avez-vous retenus215 Pour l'amd2901, décrivez le flot de conception. Quels choix avez-vous retenus 211 216 pour le placement des colonnes du chemin de données, votre circuit est-il limité 212 par les plots ou par la taille du c ur (pad limited ou core limited)... Quels217 par les plots ou par la taille du coeur (pad limited ou core limited)... Quels 213 218 sont les résultats donnés par lvx... Les schémas sont appréciés. 214 219 Les Makeles du ot total. ( Les Makeles seront testés à la n de ce TP3)