Changes between Version 2 and Version 3 of ToolsCourseTp5


Ignore:
Timestamp:
May 9, 2007, 2:46:01 PM (18 years ago)
Author:
anne
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp5

    v2 v3  
    55[[PageOutline]]
    66
    7 Introduction
     7Introduction :
     8
    89Le but de ces quatre séances de TP est de présenter quelques outils de la chaîne
    910ALLIANCE ainsi que du flot back-end CORIOLIS, dont :
    1011  Le langage de description procédural STRATUS
     12
    1113  L'éditeur de layout GRAAL
     14
    1215  Le vérificateur de règles de dessin DRUC
     16
    1317  L'extracteur de netlist COUGAR
     18
    1419  L'abstracteur fonctionnel YAGLE
     20
    1521  L'outil de preuve formelle PROOF
     22
    1623  L'outil de placement du flot CORIOLIS MISTRAL
     24
    1725  L'outil de routage de la chaîne ALLIANCE NERO
     26
    1827 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et
    19 d'un buffer instanciant cet inverseur. Les notions de cellules précaractérisées, de gabarit
     28d'un buffer instanciant cet inverseur.
     29
     30 Les notions de cellules précaractérisées, de gabarit
    2031et de hiérarchie de cellules seront introduites.
    21 La deuxième séance portera sur le routage "overcell" d'une cellule compteur de bits.
    22 Les deux dernières séances vous permettront d'obtenir une vue physique de l'amd2901
    23 que vous avez conçu lors du TP numéro 3 et 4. Munissez-vous de tous les documents né-
    24 cessaires et des fichiers déjà créés.
    2532
    26  = 1-Dessin d'un inverseur et d'un buffer sous
    27 GRAAL =
     33 = 1-Dessin d'un inverseur et d'un buffer sous GRAAL =
     34
    2835 = Introduction =
    29 Dans les TP précédents nous avns utilisé des cellules d'une bibliothèque. Cette biblioth
     36      Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth
    3037èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL.
    31 GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de
     38
     39      GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de
    3240dessin DRUC. La première partie de cette séance a pour objectif de dessiner une cellule
    3341inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant
    34 règles de dessin fournies. Cette cellule sera instanciée pour concevoir un buffer.
     42règles de dessin fournies.
     43
     44 Cette cellule sera instanciée pour concevoir un buffer.
    3545= 1.1 Environnement technologique =
    3646Certains outils utilisent un environnement technologique particulier. Il est désigné
     
    4454créer avec le menu CREATE :
    4555 Les instances (importation de cellules physiques)
     56
    4657 Les boîtes d'aboutement qui définissent les limites de la cellule
    47  Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ... Le CAluX est utilisé pour désigner
    48 une portion possible pour les connecteurs.
     58
     59 Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ...
     60
     61 Le CAluX est utilisé pour désigner une portion possible pour les connecteurs.
     62
    4963 Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.
     64
    5065 Les Big VIAs
     66
    5167 Les transistors : NMOS ou PMOS
     68
    5269GRAAL utilise la variable d'environnement GRAAL_TECHNO_NAME. Elle doit
    53 être positionnée à /asim/alliance/etc/cmos.graal.
     70être positionnée à /opt/alliance/etc/cmos.graal.
     71
    5472> export GRAAL_TECHNO_NAME=/opt/alliance/etc/cmos.graal
     73
    5574= 1.3 COUGAR =
    56 à utiliser est :
     75  L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou .al à partir d'une description au format .ap.
     76
     77  Pour extraire au niveau transistor, la commande à utiliser est :
     78
    5779> cougar -t file1 file2
     80
    5881COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO
    5982suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format
    6083al à partir d'une description ap il faut écrire :
     84
    6185> export MBK_IN_PH=ap
     86
    6287> export MBK_OUT_LO=al
     88
    6389> cougar -t file1 file2
    6490
    6591= 1.4 YAGLE =
    66 L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un
     92
     93  L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un
    6794circuit au format .vhd à partir d'une netlist au format .al si celle-ci est au niveau transistor.
    6895L'outil VASY permet de convertir une description VHDL comportementale du format
     
    7299> yagle -s file1 file2
    73100> vasy -a -I vhd file1 file2
    74 Avant tout, vous devez utiliser la commande :
     101
     102  Avant tout, vous devez utiliser la commande :
    75103> source avt_env.sh
    76104
    77 L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou
     105  L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou
    78106.al à partir d'une description au format .ap. Pour extraire au niveau transistor, la commande
    79107Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation
    80108de YAGLE (le fichier avt_env.sh étant fourni).
    81109Les documentations pour cet outil se trouvent en : /users/soft/AvtTools2003/doc.
    82 2.1.5 PROOF
    83 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de
     110= 1.5 PROOF =
     111 Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de
    84112type dataflows d'un même circuit à n entrées, on peut simuler par asimut 2n vecteurs
    85113pour les deux descriptions et les comparer.
     
    87115outil de preuve formelle qui effectue la comparaison "mathématique" des deux réseaux
    88116booléens.
    89 PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la
     117 PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la
    90118commande :
    91119> proof file1 file2
    92 2.2 Schéma d'un inverseur
    93 Le schéma théorique d'un inverseur est présenté à la gure suivante :
    94 Vdd
    95 Vss
    96 In Out
    97 FIG. 1 – Schéma en transistors d'un inverseur C-MOS
    98 2.3 Schéma d'un buffer
    99 Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés sur les -
    100 gures suivantes :
    101 Vdd
    102 Vss
    103 Vdd
    104 Vss
    105 In Out
    106 FIG. 2 – Schéma en transistors d'un
    107 buffer C-MOS
    108 inv_x1 inv_x1
    109 buff_x1
    110 inv_x1 inv_x1
    111 buff_x1
    112 FIG. 3 – Hiérarchie d'un buffer C-MOS
    113 Master ACSI 5
    114120
    115 2.4 Le gabarit sxlib
    116 – Les cellules sxlib ont toutes une hauteur de 50 et une largeur multiple de 5
    117 – Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6
     121= 2 Schéma d'un inverseur =
     122
     123Le schéma théorique d'un inverseur est présenté
     124
     125= 3 Schéma d'un buffer =
     126Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés
     127
     128
     129= 4 Le gabarit sxlib =
     130 Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda
     131
     132 Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas
    118133et sont placées horizontalement en haut et en bas de la cellule
    119 – Les transistors P sont placés près du rail Vdd tandis que les transistors N sont
     134
     135 Les transistors P sont placés près du rail Vdd tandis que les transistors N sont
    120136placés près du rail Vss
    121 – Le caisson N doit avoir une hauteur de 24
    122 – Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la
     137
     138 Le caisson N doit avoir une hauteur de 24 lambdas
     139
     140 Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la
    123141cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être
    124 placés sur une grille de 5x5 et peuvent se trouver n'importe où à l'intérieur de
     142placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de
    125143la cellule
    126 – Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
     144
     145 Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
    127146au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir
    128147ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés
    129 sur une grille au pas de 5 (gure 5)
    130 – La largeur minimale de CAlu1 est de 2, plus 1 pour l'extension (gure 6)
    131 – Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement
     148sur une grille au pas de 5 lambdas
     149
     150 La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension
     151 Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement
    132152à Vdd et à Vss
    133 Le schéma de la gure 4 présente un résumé de ces contraintes
     153
    134154
    135155 = 5 Travail à effectuer =
    136156 = 5.1 Réalisation d'un inverseur =
    137157 Décrire le comportement de la cellule inverseuse dans un fichier .vbe
     158
    138159 Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors
    139 est représenté sur la figure 1
    140  Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécié sur la
    141 figure 4
     160est représenté
     161
     162 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié
     163
    142164  Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
     165
    143166 Extraire la netlist de l'inverseur au format .al avec COUGAR
     167
    144168 Extraire le VHDL comportemental avec YAGLE
     169
    145170 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier
    146171.vbe de la spécification initiale
     172
    147173Automatisez la vérification en écrivant un Makefile.
     174
    148175= 5.2 Réalisation d'un buffer =
    149 Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs.
     176
     177  Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs.
    150178La hiérarchie ainsi créée est représentée sur la  Le schéma en transistors est
    151179représenté sur la
    152  Décrire le comportement de la cellule buffer dans un fichier .vbe
    153  Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifé sur
    154 la gure 4. Vous utiliserez pour cela la fonction d'instanciation de GRAAL. La
     180  Décrire le comportement de la cellule buffer dans un fichier .vbe
     181 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifé.
     182
     183 Vous utiliserez pour cela la fonction d'instanciation de GRAAL. La
    155184cellule à instancier est bien sûr l'inverseur créé précédemment, que vous relierez
    156185(routerez) manuellement
     186
     187
    157188 Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
     189
    158190 Extraire la netlist du buffer au format .al avec COUGAR
     191
    159192 Extraire le VHDL comportemental avec YAGLE
     193
    160194 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier
    161195.vbe de la spécification initiale
     196
    162197Automatisez la vérification en écrivant un Makefile.
     198
    163199N'oubliez pas que les mans existent