Changes between Version 5 and Version 6 of ToolsTp4


Ignore:
Timestamp:
Jan 12, 2010, 4:06:29 PM (15 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsTp4

    v5 v6  
    9494  * Etudiez le placement choisi : vérifiez entre autres que les colonnes ayant un grand nombre d'interconnexions communes sont ''proches''
    9595
    96 = 3 Placement / Routage =
     96= 4 Placement / Routage =
    9797
    98 TODO
     98  == 4.1 Préplacement des structures régulières ===
     99
     100Introduire les étapes suivantes dans la méthode ''Layout'' du fichier ''am2901_core.py'' décrivant le coeur du circuit AM2091 :
     101  * Placer le chemin de données : fonction ''Place()''.
     102  * Agrandir la boite d'aboutement du coeur : fonction ''!ResizeAb()''.
     103  (Cette étape est utile pour réserver la place nécessaire au placement des cellules de la partie contrôle.
     104  La logique "irrégulière" constituant la partie contrôle n'a pas besoin d'être placée explicitement. Cela sera fait automatiquement par la suite !)
     105  * Placer les rails de rappels d'alimentation dans le coeur : fonctions ''!AlimVerticalRail()'' et ''!AlimHorizontalRail()''.
     106  * Placer les connecteurs du coeur : fonction ''!AlimConnectors()''.
     107  * Modifier l'appel à la fonction ''Generate'' dans le chip de façon à générer la vue physique du coeur.
     108  * Faire appel à la méthode ''View'' pour visualiser.
     109
     110  == 4.2 Placement du coeur et de la couronne de plots ==
     111
     112Dans le fichier ''amd2901_chip.py'' fourni, les plots sont instanciés dans la méthode ''Netlist''.
     113Il vous faut donc :
     114
     115  * Définir la taille de la boîte d'aboutement globale du circuit de façon à ce que les plots puissent être placés à la périphérie : fonction ''!DefAb()''.
     116    (On peut commencer par définir une boite d'aboutement de 4000 par 4000 et essayer ensuite de la réduire)
     117  * Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction ''!PlaceCentric()''.
     118  * Définir sur quelle face et dans quel ordre placer les plots, cela se fait à l'aide des 4 fonctions : ''!PadNorth()'', ''!PadSouth()'', ''!PadEast()'' et ''!PadWest()''.
     119  * Visualiser le résultat.
     120
     121  == 4.3 Routage des alimentations ==
     122
     123  * Créez la grille d'alimentation : fonction ''!PowerRing()''.
     124  * Visualisez le résultat.
     125
     126  == 4.4 Placement de la logique irrégulière ==
     127
     128C'est le placeur '''mistral''' qui se charge de placer automatiquement les cellules non encore placées.
     129Il détecte quelles sont les cellules qui n'ont pas été placées et complète le placement en utilisant les zones "vides".
     130
     131[[Image(placement.jpg,nolink)]]
     132
     133  * Appelez le placeur '''mistral''' : fonction ''!PlaceGlue ()''..
     134   (Attention : Pour pouvoir placer automatiquement la logique "irrégulière", il faut avoir préalablement défini la position des plots d'entrée/sortie sur les 4 faces du circuit. L'outil de placement automatique place les cellules non placées en se basant sur les attirances vers les plots ainsi que vers les cellules déjà placées.)
     135  * Visualisez le résultat.
     136  * Effectuez le placement automatique de cellules de bourrage : fonction ''!FillCell()''.
     137  * Visualisez le résultat.
     138
     139  == 4.5 Routage des signaux d'horloge ==
     140
     141  * Construisez le réseau maillé correspondant au signal d'horloge interne : fonction ''!RouteCk()''.
     142  * Visualisez le résultat.
     143
     144  == 4.6 Routage des signaux logiques ==
     145
     146L'appel au routeur automatique '''nero''' n'est pas encore intégré dans le langage '''Stratus'''.
     147Pour effectuer le routage de tous les signaux autres que le signal d'horloge et les signaux d'alimentation, il faut lancer '''nero''' de la manière suivante :
     148{{{
     149> nero -V -p amd2901_chip amd2901_chip amd2901_chip_r
     150}}}
     151
     152L'option -p indique que vous fournissez un fichier de placement en argument. Le deuxième argument est le fichier définissant la ''netlist'', le troisième est le nom du fichier résultat.
     153
     154  == 4.5 Validation ==
     155 
     156 * Validez le routage en utilisant les les outils '''druc''', '''cougar''' et '''lvx'''.
     157{{{
     158> druc amd2901_chip_r
     159> export MBK_OUT_LO=al
     160> cougar -f amd2901_chip_r
     161> lvx vst al amd2901_chip amd2901_chip_r -f
     162}}}
     163
     164  * Resimulez la netlist extraite avec '''asimut'''.
     165    Précisez le format de la netlist dans la variable d'entrée '''MBK_IN_LO''' avant la simulation.
     166{{{
     167> export MBK_IN_LO=al
     168}}}
     169
     170  * Pour connaitre le nombre de transistors, vous pouvez effectuer une extraction au niveau transistors :
     171{{{
     172> cougar -v -t amd2901_chip_r amd2901_chip_r_t
     173}}}
    99174
    100175= 4 Rapport =