Changes between Version 1 and Version 2 of ToolsCourseTp7


Ignore:
Timestamp:
May 7, 2007, 4:48:32 PM (18 years ago)
Author:
anne
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp7

    v1 v2  
    44}}}
    55[[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 (à
    1112compléter)
    12 – execute_amd2901_dpt.py, description structurelle en STRATUS d'instanciation
     13 execute_amd2901_dpt.py, description structurelle en STRATUS d'instanciation
    1314du 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.
     17Ainsi 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
     21Il faut maintenant enrichir les fichiers .py avec les étapes de placement-routage.
     22
     23= 4.1 Outils utilisés =
     24Vous allez utiliser les outils de placement flot Coriolis et le routeur d'Alliance, ainsi
     25que tous les outils de vérification vus dans la première partie de ce TP.
    2426Vous utiliserez aussi lvx, le comparateur de netlists. Lorsque le système est trop complexe
    25 il est difcile d'utiliser proof, le comparateur formel (calculs trop long). On utilise
     27il est difficile d'utiliser proof, le comparateur formel (calculs trop long). On utilise
    2628alors une comparaison de netlists. Essayez les deux méthodes (proof et lvx).
    27294.2 Environnement technologique
     
    4143> export CRL_OUT_LO=vst
    4244> export CRL_OUT_PH=ap
    43 Master ACSI 13
    44 TP3 Vue physique : placement et routage
    4545> export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages/stratus
    4646> export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages/isobar :$PYTHONPATH
    4747> export PYTHONPATH=/asim/coriolis/lib/python2.3/site-packages :$PYTHONPATH
    4848NB : 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
     49utile de les vérifier.
     50= 4.3 Précautions quant au nommage des fichiers =
     51D'une manière générale, les fichiers décrivant une netlist logique doivent porter le
     52même nom que le fichier correspondant décrivant la vue physique. C'est à dire que
     53le 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
     58Le TP 3 et 4 vous a permis de décrire la netlist hiérarcique du chemin de donn
    5759ées. Vous allez maintenant placer les colonnes du chemin de données de manière à
    58 proter de la régularité du chemin de données.
     60profiter de la régularité du chemin de données.
    5961Pour réaliser votre placement des opérateurs, vous disposez des fonctions de STRATUS
    6062suivantes :
    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 le chier 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 :
    6769#!/usr/bin/env python
    6870from stratus import *
     
    7476PlaceRight ( self.instance_or2_4bits, NOSYM )
    7577PlaceRight ( self.instance_add2_4bits, NOSYM )
    76 Ensuite pour le chier test_circuit.py, il faut rajouter l'appel à la méthode Layout :
     78Ensuite pour le fichier test_circuit.py, il faut rajouter l'appel à la méthode Layout :
    7779#!/usr/bin/env python
    7880from stratus import *
     
    8688
    8789
    88 Reprenez le chier amd2901_dpt.py. Pour l'instant, ce chier ne comporte qu'une
     90Reprenez le fichier amd2901_dpt.py. Pour l'instant, ce fichier ne comporte qu'une
    8991description 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.
     92sous la forme d'un fichier .vst. Il s'agit maintenant de placer explicitement les colonnes.
    9193Le placement des colonnes du chemin de données ne doit pas être
    9294fait au hasard. La faisabilité et la qualité du routage en dépendent !
    9395Aidez-vous du manuel de STRATUS :
    94 ~le :///asim/coriolis/share/doc/en/html/stratus/index.html
     96file :///opt/coriolis/share/doc/en/html/stratus/index.html
    9597Utilisez STRATUS pour générer le tout :
    9698> ./execute_amd2901_dpt.py
     
    98100
    99101
    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éthode
     102 = 4.5 Travail sur le coeur : Préplacement des structures régulières =
     103Prenez le fichier amd2901_core.py et effectuez les étapes suivantes dans la méthode
    102104Layout :
    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 AlimVerticalRail
     105 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
    106108() et AlimHorizontalRail ()
    107 – Placer les connecteurs du coeur : fonction AlimConnectors ()
     109  Placer les connecteurs du coeur : fonction AlimConnectors ()
    108110ATTENTION : La logique "irrégulière" constituant la partie contrôle n'a pas besoin
    109111d'être placée explicitement. Cela sera fait automatiquement par la suite !
    110 Vériez le résultat :
     112Vérifiez le résultat :
    111113> ./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
     116Prenez le fichier amd2901_chip.py et complétez la méthode Layout.
    1141174.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éthode
     118Dans le fichier amd2901_chip.py fourni, les plots sont instanciés dans la méthode
    116119Netlist :
    117120def Netlist ( self ) :
     
    129132
    130133
    131 – Dénir la taille de la boîte d'aboutement globale du circuit de façon à ce que
     134 Définir la taille de la boîte d'aboutement globale du circuit de façon à ce que
    132135les plots puissent être placés à la périphérie : fonction DefAb () (Commencer par
    133 nir une boite d'aboutement de 4000 par 4000 et vous essaierez ensuite de la
     136finir une boite d'aboutement de 4000 par 4000 et vous essaierez ensuite de la
    134137diminuer)
    135 – Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction
     138Placer le coeur du circuit au centre de la boîte d'aboutement du chip : fonction
    136139PlaceCentric ()
    137 – Dénir sur quelle face et dans quel ordre vous souhaitez placer les plots. Cela se
     140 Définir sur quelle face et dans quel ordre vous souhaitez placer les plots. Cela se
    138141fait à l'aide des 4 fonctions : PadNorth (), PadSouth (), PadEast () et PadWest ().
    139 Vériez le résultat :
     142Vérifiez le résultat :
    140143> ./execute_amd2901_chip.py
    1411444.6.2 Routage des alimentations
    142145Vous devez utiliser la fonction PowerRing () pour créer la grille d'alimentation.
    143 Vériez le résultat :
    144 > ./execute_amd2901_chip.py
     146Vérifiez le résultat :
     147> ./execute_amd2901_chip.py
     148
    145149FIG. 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.
    148153Il détecte quelles sont les cellules qui n'ont pas été placées et complète le placement en
    149154utilisant les zones "vides". Pour appeler le placeur Mistral, vous devez faire appel à la
     
    152157
    153158Attention : 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 cellules
     159que les plots soient placés. L'outil de placement du flot CORIOLIS place les cellules
    155160en se basant sur les attirances de celles-ci vers les plots ainsi que vers les cellules déjà
    156161placées.
    157 Vériez le résultat :
     162Vérifiez le résultat :
    158163> ./execute_amd2901_chip.py
    159164
     
    162167le placement automatique de cellules de bourrage.
    163168
    164 Vériez le résultat :
     169Vérifiez le résultat :
    165170> ./execute_amd2901_chip.py
    166171
     
    1681734.6.4 Routage des signaux d'horloge
    169174Vous devez utiliser la fonction RouteCk () qui route le signal d'horloge.
    170 Vériez le résultat :
    171 > ./execute_amd2901_chip.py
    172 FIG. 20 – Zoom sur le routage d'horloge
     175Vérifiez le résultat :
     176> ./execute_amd2901_chip.py
     177FIG. 20 Zoom sur le routage d'horloge
    173178
    174179
     
    178183> nero -V -p amd2901_chip amd2901_chip amd2901_chip_r
    179184L'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.
     185troisième argument est la netlist du chip, le quatrième est le fichier résultat.
    181186NOTA BENE : La variable MBK_CATA_LIB ne doit contenir qu'une seule fois les
    182187chemins d'accès aux bibliothèques.
     
    190195dans la variable d'entrée MBK_IN_LO avant la simulation.
    191196> export MBK_IN_LO=al
    192 Faites attention au chier CATAL!
     197Faites attention au fichier CATAL!
    193198Pour connaitre le nombre de transistors, on effectue une extraction du circuit au niveau
    194199transistor :
     
    200205Ces mêmes outils seront utilisés pour laréalisation du processeur MIPS R3000.
    201206Le compte-rendu du TP doit comporter :
    202 – Vos logins, vos noms et prénoms, et vos répertoires de travail pour ce TP (laissez
     207 Vos logins, vos noms et prénoms, et vos répertoires de travail pour ce TP (laissez
    203208libre accès à vos répertoires en lecture !).
    204 – Une description exacte de la méthodologie employée, incluant les éventuels probl
     209  Une description exacte de la méthodologie employée, incluant les éventuels probl
    205210èmes rencontrés.
    206 – Pour la conception de cellules sous graal, expliquez vos choix (pourquoi avoir
     211 Pour la conception de cellules sous graal, expliquez vos choix (pourquoi avoir
    207212placé un via ici plutôt que là...), quelle est la taille de vos cellules, quelles sont
    208213les performances probables, quelles améliorations envisagez-vous... Des captures
    209214d'écrans sont les bienvenues (dans la mesure du possible).
    210 – Pour l'amd2901, décrivez le ot de conception. Quels choix avez-vous retenus
     215 Pour l'amd2901, décrivez le flot de conception. Quels choix avez-vous retenus
    211216pour 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”)... Quels
     217par les plots ou par la taille du coeur (pad limited ou core limited)... Quels
    213218sont les résultats donnés par lvx... Les schémas sont appréciés.
    214219– Les Makeles du ot total. ( Les Makeles seront testés à la n de ce TP3)