Changes between Version 1 and Version 2 of ToolsCourseTp5


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

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp5

    v1 v2  
     1{{{
     2#!html
     3<h1> TP5 : Dessin de cellules précaractérisées</h1>
     4}}}
     5[[PageOutline]]
     6
    17Introduction
    28Le but de ces quatre séances de TP est de présenter quelques outils de la chaîne
    3 ALLIANCE ainsi que du ot back-end CORIOLIS, dont :
    4 – Le langage de description procédural STRATUS
    5 – L'éditeur de layout GRAAL
    6 – Le véricateur de règles de dessin DRUC
    7 – L'extracteur de netlist COUGAR
    8 – L'abstracteur fonctionnel YAGLE
    9 – L'outil de preuve formelle PROOF
    10 – L'outil de placement du ot CORIOLIS MISTRAL
    11 – L'outil de routage de la chaîne ALLIANCE NERO
    12 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et
     9ALLIANCE ainsi que du flot back-end CORIOLIS, dont :
     10  Le langage de description procédural STRATUS
     11  L'éditeur de layout GRAAL
     12  Le vérificateur de règles de dessin DRUC
     13  L'extracteur de netlist COUGAR
     14  L'abstracteur fonctionnel YAGLE
     15  L'outil de preuve formelle PROOF
     16  L'outil de placement du flot CORIOLIS MISTRAL
     17  L'outil de routage de la chaîne ALLIANCE NERO
     18 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et
     19d'un buffer instanciant cet inverseur. Les notions de cellules précaractérisées, de gabarit
     20et de hiérarchie de cellules seront introduites.
     21La deuxième séance portera sur le routage "overcell" d'une cellule compteur de bits.
     22Les deux dernières séances vous permettront d'obtenir une vue physique de l'amd2901
     23que vous avez conçu lors du TP numéro 3 et 4. Munissez-vous de tous les documents né-
     24cessaires et des fichiers déjà créés.
     25
     26 = 1-Dessin d'un inverseur et d'un buffer sous
     27GRAAL =
     28 = Introduction =
     29Dans les TP précédents nous avns utilisé des cellules d'une bibliothèque. Cette biblioth
     30èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL.
     31GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de
     32dessin DRUC. La première partie de cette séance a pour objectif de dessiner une cellule
     33inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant
     34règles de dessin fournies. Cette cellule sera instanciée pour concevoir un buffer.
     35= 1.1 Environnement technologique =
     36Certains outils utilisent un environnement technologique particulier. Il est désigné
     37la variable d'environnement RDS_TECHNO_NAME qui doit être positionnée à
     38opt/alliance/etc/cmos.rds :
     39> export RDS_TECHNO_NAME=/opt/alliance/etc/cmos.rds
     40
     41= 1.2 GRAAL =
     42
     43L'éditeur de layout GRAAL manipule six types d'objets différents que l'on peut
     44créer avec le menu CREATE :
     45 Les instances (importation de cellules physiques)
     46 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
     48une portion possible pour les connecteurs.
     49 Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.
     50 Les Big VIAs
     51 Les transistors : NMOS ou PMOS
     52GRAAL utilise la variable d'environnement GRAAL_TECHNO_NAME. Elle doit
     53être positionnée à /asim/alliance/etc/cmos.graal.
     54> export GRAAL_TECHNO_NAME=/opt/alliance/etc/cmos.graal
     55= 1.3 COUGAR =
     56à utiliser est :
     57> cougar -t file1 file2
     58COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO
     59suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format
     60al à partir d'une description ap il faut écrire :
     61> export MBK_IN_PH=ap
     62> export MBK_OUT_LO=al
     63> cougar -t file1 file2
     64
     65= 1.4 YAGLE =
     66L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un
     67circuit au format .vhd à partir d'une netlist au format .al si celle-ci est au niveau transistor.
     68L'outil VASY permet de convertir une description VHDL comportementale du format
     69.vhd au format.vbe. La commande à utiliser est :
     70> export MBK_IN_LO=al
     71> export YAGLE_BEH_FORMAT=vbe
     72> yagle -s file1 file2
     73> vasy -a -I vhd file1 file2
     74Avant tout, vous devez utiliser la commande :
     75> source avt_env.sh
     76
     77L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou
     78.al à partir d'une description au format .ap. Pour extraire au niveau transistor, la commande
     79Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation
     80de YAGLE (le fichier avt_env.sh étant fourni).
     81Les documentations pour cet outil se trouvent en : /users/soft/AvtTools2003/doc.
     822.1.5 PROOF
     83Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de
     84type dataflows d'un même circuit à n entrées, on peut simuler par asimut 2n vecteurs
     85pour les deux descriptions et les comparer.
     86Cette solution devient vite coûteuse en temps CPU et il vaut mieux faire appel à un
     87outil de preuve formelle qui effectue la comparaison "mathématique" des deux réseaux
     88booléens.
     89PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la
     90commande :
     91> proof file1 file2
     922.2 Schéma d'un inverseur
     93Le schéma théorique d'un inverseur est présenté à la gure suivante :
     94Vdd
     95Vss
     96In Out
     97FIG. 1 – Schéma en transistors d'un inverseur C-MOS
     982.3 Schéma d'un buffer
     99Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés sur les -
     100gures suivantes :
     101Vdd
     102Vss
     103Vdd
     104Vss
     105In Out
     106FIG. 2 – Schéma en transistors d'un
     107buffer C-MOS
     108inv_x1 inv_x1
     109buff_x1
     110inv_x1 inv_x1
     111buff_x1
     112FIG. 3 – Hiérarchie d'un buffer C-MOS
     113Master ACSI 5
     114
     1152.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
     118et 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
     120placé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
     123cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être
     124placés sur une grille de 5x5 et peuvent se trouver n'importe où à l'intérieur de
     125la cellule
     126– Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
     127au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir
     128ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés
     129sur 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
     132à Vdd et à Vss
     133Le schéma de la gure 4 présente un résumé de ces contraintes
     134
     135 = 5 Travail à effectuer =
     136 = 5.1 Réalisation d'un inverseur =
     137 Décrire le comportement de la cellule inverseuse dans un fichier .vbe
     138 Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors
     139est représenté sur la figure 1
     140 Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécié sur la
     141figure 4
     142  Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
     143 Extraire la netlist de l'inverseur au format .al avec COUGAR
     144 Extraire le VHDL comportemental avec YAGLE
     145 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier
     146.vbe de la spécification initiale
     147Automatisez la vérification en écrivant un Makefile.
     148= 5.2 Réalisation d'un buffer =
     149Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs.
     150La hiérarchie ainsi créée est représentée sur la  Le schéma en transistors est
     151repré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
     154la gure 4. Vous utiliserez pour cela la fonction d'instanciation de GRAAL. La
     155cellule à instancier est bien sûr l'inverseur créé précédemment, que vous relierez
     156(routerez) manuellement
     157 Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
     158 Extraire la netlist du buffer au format .al avec COUGAR
     159 Extraire le VHDL comportemental avec YAGLE
     160 Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier
     161.vbe de la spécification initiale
     162Automatisez la vérification en écrivant un Makefile.
     163N'oubliez pas que les mans existent