Changes between Version 7 and Version 8 of ToolsCourseTp5


Ignore:
Timestamp:
May 10, 2007, 10:39:55 AM (18 years ago)
Author:
anonymous
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp5

    v7 v8  
    1111  Le langage de description procédural STRATUS
    1212
    13   L'éditeur de layout GRAAL
     13  L'éditeur de layout GRAAL
    1414
    15   Le vérificateur de règles de dessin DRUC
     15  Le vérificateur de règles de dessin DRUC
    1616
    17   L'extracteur de netlist COUGAR
     17   * L'extracteur de netlist COUGAR
    1818
    19   L'abstracteur fonctionnel YAGLE
    2019
    21   L'outil de preuve formelle PROOF
     20  *  L'outil de placement du flot CORIOLIS MISTRAL
    2221
    23   L'outil de placement du flot CORIOLIS MISTRAL
    24 
    25   L'outil de routage de la chaîne ALLIANCE NERO
     22  *  L'outil de routage de la chaîne ALLIANCE NERO
    2623
    2724 La première séance portera sur le dessin sous GRAAL d'une cellule inverseuse et
    28 d'un buffer instanciant cet inverseur.
     25 d'un buffer instanciant cet inverseur.
    2926
    3027 Les notions de cellules précaractérisées, de gabarit
    31 et de hiérarchie de cellules seront introduites.
     28 et de hiérarchie de cellules seront introduites.
    3229
    3330 = 1-Dessin d'un inverseur et d'un buffer sous GRAAL =
     
    3532 = Introduction =
    3633      Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth
    37 èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL.
     34   èque peut être enrichie de nouvelles cellules grâce à l'éditeur GRAAL.
    3835
    3936      GRAAL est un éditeur de layout symbolique intégrant le vérificateur de règles de dessin DRUC.
    40  La première partie de cette séance a pour objectif de dessiner une cellule
    41 inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant
    42 règles de dessin fournies.
     37  La première partie de cette séance a pour objectif de dessiner une cellule
     38  inverseuse inv_x1 sous la forme d'une cellule précaractérisée sxlib en respectant
     39  règles de dessin fournies.
    4340
    4441 Cette cellule sera instanciée pour concevoir un buffer.
    4542= 1.1 Environnement technologique =
    46 Certains outils utilisent un environnement technologique particulier. Il est désigné
    47 la variable d'environnement RDS_TECHNO_NAME qui doit être positionnée à
     43 Certains outils utilisent un environnement technologique particulier. Il est désigné
     44 la variable d'environnement RDS_TECHNO_NAME qui doit être positionnée à
     45
    4846opt/alliance/etc/cmos.rds :
     47
    4948{{{
    5049> export RDS_TECHNO_NAME=/opt/alliance/etc/cmos.rds
     
    5352= 1.2 GRAAL =
    5453
    55 L'éditeur de layout GRAAL manipule six types d'objets différents que l'on peut
    56 créer avec le menu CREATE :
    57  Les instances (importation de cellules physiques)
     54   L'éditeur de layout GRAAL manipule six types d'objets différents que l'on peut
     55   créer avec le menu CREATE :
     56  * Les instances (importation de cellules physiques)
    5857
    59  Les boîtes d'aboutement qui définissent les limites de la cellule
     58  * Les boîtes d'aboutement qui définissent les limites de la cellule
    6059
    61  Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ...
     60  * Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ...
    6261
    63  Le CAluX est utilisé pour désigner une portion possible pour les connecteurs.
     62  * Le CAluX est utilisé pour désigner une portion possible pour les connecteurs.
    6463
    65  Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.
     64  * Les VIAs ou contacts : ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.
    6665
    67  Les Big VIAs
     66  * Les Big VIAs
    6867
    69  Les transistors : NMOS ou PMOS
     68  * Les transistors : NMOS ou PMOS
    7069
    7170 GRAAL utilise la variable d'environnement GRAAL_TECHNO_NAME. Elle doit
     
    8584}}}
    8685
    87 COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO
    88 suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format
    89 al à partir d'une description ap il faut écrire :
     86  COUGAR utilise les variables d'environnement MBK_IN_PH et MBK_OUT_LO
     87  suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format
     88  al à partir d'une description ap il faut écrire :
    9089{{{
    9190> export MBK_IN_PH=ap
     
    9695}}}
    9796
    98 = 1.4 YAGLE =
    9997
    100   L'outil YAGLE est capable d'extraire la description VHDL comportementale d'un
    101 circuit au format .vhd à partir d'une netlist au format .al si celle-ci est au niveau transistor.
    102 L'outil VASY permet de convertir une description VHDL comportementale du format
    103 .vhd au format.vbe. La commande à utiliser est :
    104 {{{
    105 > export MBK_IN_LO=al
    10698
    107 > export YAGLE_BEH_FORMAT=vbe
    108 
    109 > yagle -s file1 file2
    110 
    111 > vasy -a -I vhd file1 file2
    112 }}}
    113 
    114   Avant tout, vous devez utiliser la commande :
    115 {{{
    116 > source avt_env.sh
    117 }}}
    118 
    119   L'outil COUGAR est capable d'extraire la netlist d'un circuit aux formats .vst ou
    120 .al à partir d'une description au format .ap. Pour extraire au niveau transistor, la commande
    121 Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation
    122 de YAGLE (le fichier avt_env.sh étant fourni).
    123 Les documentations pour cet outil se trouvent en : /users/soft/AvtTools2003/doc.
    124 
    125 = 1.5 PROOF =
    126  Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de
    127 type dataflows d'un même circuit à n entrées, on peut simuler par asimut 2n vecteurs
    128 pour les deux descriptions et les comparer.
    129 Cette solution devient vite coûteuse en temps CPU et il vaut mieux faire appel à un
    130 outil de preuve formelle qui effectue la comparaison "mathématique" des deux réseaux
    131 booléens.
    132  PROOF réalise cette opération entre les descriptions file1.vbe et file2.vbe par la
    133 commande :
    134 {{{
    135 > proof file1 file2
    136 }}}
    137 
     99 
    138100= 2 Schéma d'un inverseur =
    139101
     
    147109
    148110= 4 Le gabarit sxlib =
    149  Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda
     111  * Les cellules sxlib ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda
    150112
    151  Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas
    152 et sont placées horizontalement en haut et en bas de la cellule
     113  * Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas
     114    et sont placées horizontalement en haut et en bas de la cellule
    153115
    154  Les transistors P sont placés près du rail Vdd tandis que les transistors N sont
    155 placés près du rail Vss
     116 * Les transistors P sont placés près du rail Vdd tandis que les transistors N sont
     117   placés près du rail Vss
    156118
    157  Le caisson N doit avoir une hauteur de 24 lambdas
    158 [[Image(gabarit.jpg,nolink)]]
     119  * Le caisson N doit avoir une hauteur de 24 lambdas
     120    [[Image(gabarit.jpg,nolink)]]
    159121
    160  Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la
    161 cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être
    162 placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de
    163 la cellule
     122  * Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la
     123    cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être
     124    placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de
     125    la cellule
    164126
    165  Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
    166 au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir
    167 ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés
    168 sur une grille au pas de 5 lambdas
     127  * Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
     128    au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir
     129    ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés
     130    sur une grille au pas de 5 lambdas
    169131
    170  La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension
    171  Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement
    172 à Vdd et à Vss
     132  * La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension
     133  * Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 
     134    à Vdd et à Vss
    173135
    174136
    175137 = 5 Travail à effectuer =
    176138 = 5.1 Réalisation d'un inverseur =
    177  Décrire le comportement de la cellule inverseuse dans un fichier .vbe
     139   * Décrire le comportement de la cellule inverseuse dans un fichier .vbe
    178140
    179  Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors
    180 est représenté
     141   * Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors
     142  est représenté
    181143
    182  Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié
     144   * Saisir sous GRAAL le dessin de la cellule en respectant le gabarit spécifié
    183145
    184   Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
     146   * Valider les règles de dessin symbolique en lançant DRUC sous GRAAL
    185147
    186  Extraire la netlist de l'inverseur au format .al avec COUGAR
     148  *  Extraire la netlist de l'inverseur au format .al avec COUGAR
    187149
    188  Extraire le VHDL comportemental avec YAGLE
    189 
    190  Effectuer la preuve formelle entre le fichier .vbe extrait par YAGLE et le fichier
    191 .vbe de la spécification initiale
    192 
    193 Automatisez la vérification en écrivant un Makefile.
     150 
    194151
    195152= 5.2 Réalisation d'un buffer =
    196153
    197154  Le buffer est réalisé sous GRAAL à partir de l'instanciation de deux inverseurs.
    198 La hiérarchie ainsi créée est représentée sur la  Le schéma en transistors est
     155  La hiérarchie ainsi créée est représentée sur la  Le schéma en transistors est
    199156représenté sur la
    200157  Décrire le comportement de la cellule buffer dans un fichier .vbe