Changes between Version 22 and Version 23 of ToolsCourseTp6


Ignore:
Timestamp:
Oct 4, 2007, 5:05:08 PM (17 years ago)
Author:
anne
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp6

    v22 v23  
     1{{{
     2#!html
     3<h1> TP6 : Dessin de cellules précaractérisées</h1>
     4}}}
     5[[PageOutline]]
     6
     7Introduction :
     8
     9Le but de ce TP est le dessin sous '''GRAAL''' d'une cellule inverseuse et
     10d'une porte Nand à 2 entrées.
     11
     12Les notions de cellules précaractérisées, de gabarit
     13et de hiérarchie de cellules seront introduites.
     14
     15= 1-Dessin d'un inverseur et d'une porte Nand2 sous GRAAL =
     16
     17== Introduction ==
     18Dans les TP précédents nous avons utilisé des cellules d'une bibliothèque. Cette biblioth
     19èque peut être enrichie de nouvelles cellules grâce à l'éditeur '''GRAAL'''.
     20
     21'''GRAAL''' est un éditeur de layout symbolique intégrant le vérificateur de règles de dessin '''DRUC'''.
     22
     23La première partie de cette séance a pour objectif de dessiner une cellule en tenant compte des règles de dessin
     24
     25ftp://asim.lip6.fr/pub/amd2901/symb_rules00-1.pdf
     26
     27
     28Il s'agit tout d'abord de la cellule inverseuse '''inv_x1''' sous la forme d'une cellule précaractérisée de la bibliothèque '''sxlib''' en respectant les règles de dessin fournies, puis on dessinera le Nand2 au gabarit '''sxlib'''
     29
     30
     31
     32=== 1.1 Environnement technologique ===
     33Certains outils utilisent un environnement technologique particulier. Il est désigné
     34la variable d'environnement '''RDS_TECHNO_NAME''' qui doit être positionnée à
     35
     36opt/alliance/etc/cmos.rds :
     37
     38{{{
     39> export RDS_TECHNO_NAME=/opt/alliance/etc/cmos.rds
     40}}}
     41
     42=== 1.2 GRAAL ===
     43
     44L'éditeur de layout '''GRAAL''' manipule plusieurs types d'objets différents que l'on peut
     45créer avec le menu '''CREATE''' :
     46  * Les instances (importation de cellules physiques)
     47
     48  * Les boîtes d'aboutement qui définissent les limites de la cellule
     49
     50  * Les segments : DiffN, DiffP, Poly, Alu1, Alu2 ...
     51
     52  * Le CAluX est utilisé pour désigner une portion possible pour les connecteurs.
     53
     54  * Les VIAs ou contacts :ContDiffN, ContDiffP, ContPoly et Via Metal1/Metal2.
     55
     56  * Les Big VIAs
     57
     58  * Les transistors : NMOS ou PMOS
     59
     60'''GRAAL''' utilise la variable d'environnement '''GRAAL_TECHNO_NAME'''. Elle doit
     61être positionnée à
     62/opt/alliance/etc/cmos.graal.
     63
     64{{{
     65> export GRAAL_TECHNO_NAME=/opt/alliance/etc/cmos.graal
     66}}}
     67
     68=== 1.3 COUGAR ===
     69L'outil '''COUGAR''' est capable d'extraire la netlist d'un circuit aux formats .vst ou .al à partir d'une description au format .ap.
     70
     71Pour extraire au niveau transistor, la commande à utiliser est :
     72{{{
     73> cougar -t file1 file2
     74}}}
     75
     76'''COUGAR''' utilise les variables d'environnement '''MBK_IN_PH''' et '''MBK_OUT_LO'''
     77suivant les formats d'entrée et de sortie. Par exemple pour générer une netlist au format
     78al à partir d'une description ap il faut écrire :
     79{{{
     80> export MBK_IN_PH=ap
     81
     82> export MBK_OUT_LO=al
     83
     84> cougar -t file1 file2
     85}}}
     86
     87
     88
     89=== 1.4 YAGLE ===
     90l'outil ''' YAGLE ''' est capable d'extraire la description VHDL comportementale d'uncircuit au format '''.vhd''' à partir d'une ''netlist '' au format '''.al''' ''si celle-ci est au niveau transistor.''
     91L'outil '''VASY''' permet de convertir une description VHDL comportementale du format '''.vhd''' au format '''.vbe'''. La commande à utiliser est :
     92{{{
     93> export MBK_IN_LO=al
     94
     95> export YAGLE_BEH_FORMAT=vbe
     96> yagle -s file1 file2
     97> vasy -a -I vhd file1 file2
     98}}}
     99 Avant tout vous devez utiliser la commande :
     100{{{
     101>source avt_env.sh
     102}}}
     103
     104Cette commande permet de mettre en place l'environnement nécessaire à l'utilisation de '''YAGLE''' ( le fichier avt_env.sh étant fourni )
     105Les documentations pour cet outil se trouvent en :'''/users/soft/AvtTools2003/doc '''.
     106
     107=== 1.5 PROOF ===
     108Lorsqu'on veut prouver l'équivalence de deux descriptions comportementales de type ''dataflow'' d'un même circuit à n entrées, on peut simuler par '''asimut''' 2n vecteurs pour les deux descriptions et les comparer.
     109Cette solution devient vite coûteuse en temps CPU et il vaut mieux faire appel à un outil de preuve formelle qui effectue la comparaison ''mathématique'' des deux réseaux booléens.
     110'''PROOF''' réalise cette opération entre les description file1.vbe et file2.vbe par la commande
     111{{{
     112>proof file1 file2
     113}}}
     114== 2 Schéma d'un inverseur ==
     115Le schéma théorique d'un inverseur est présenté
     116[[Image(inv_x1.jpg,nolink)]]
     117
     118== 3 Schéma d'un Nand2 ==
     119Le schéma théorique d'un buffer et la hiérarchie utilisée sont présentés
     120[[Image(na2.jpg,nolink)]]
     121
     122
     123
     124== 4 Le gabarit sxlib ==
     125  * Les cellules de la bibliothèque '''sxlib''' ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda
     126
     127  * Les alimentations Vdd et Vss sont réalisées en Calu1 ; elles ont une largeur de 6 lambdas
     128    et sont placées horizontalement en haut et en bas de la cellule
     129
     130 * Les transistors P sont placés près du rail Vdd tandis que les transistors N sont
     131   placés près du rail Vss
     132
     133  * Le caisson N doit avoir une hauteur de 24 lambdas
     134    [[Image(gabarit.jpg,nolink)]]
     135
     136  * Les segments spéciaux CAluX (CAlu1, Calu2, CAlu3...) forment l'interface de la
     137    cellule et jouent le rôle de connecteurs "étalés". Ils doivent obligatoirement être
     138    placés sur une grille de 5x5 lambdas et peuvent se trouver n'importe où à l'intérieur de
     139    la cellule
     140
     141  * Les segments spéciaux TAlux (TAlu1, TAlu2, ...) servent à désigner les obstacles
     142    au routeur Lorsque vous voulez protéger des segments AluX, il faut les recouvrir
     143    ou les entourer de TAlux correspondant (même couche). Les TAluX sont placés
     144    sur une grille au pas de 5 lambdas
     145
     146  * La largeur minimale de CAlu1 est de 2 lambdas, plus 1 lambda pour l'extension
     147  * Les caissons N et P doivent être polarisés. Il faut donc les relier respectivement 
     148    à Vdd et à Vss
     149
     150
     151== 5 Travail à effectuer ==
     152=== 5.1 Réalisation d'un inverseur ===
     153   * Décrire le comportement de la cellule inverseuse dans un fichier .vbe
     154
     155   * Dessiner le "stick-diagram" de l'inverseur inv_x1 dont le schéma en transistors
     156  est représenté
     157
     158   * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié
     159
     160   * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL'''
     161
     162  *  Extraire la netlist de l'inverseur au format .al avec '''COUGAR'''
     163
     164 
     165
     166=== 5.2 Réalisation d'un Nand2 ===
     167 * Décrire le comportement de la cellule Nand à 2 entrées dans un fichier .vbe
     168
     169   * Dessiner le "stick-diagram" du Nand2 dont le schéma en transistors
     170  est représenté
     171
     172   * Saisir sous '''GRAAL''' le dessin de la cellule en respectant le gabarit spécifié
     173
     174   * Valider les règles de dessin symbolique en lançant '''DRUC''' sous '''GRAAL'''
     175
     176  *  Extraire la netlist de la porte nand2 au format .al avec '''COUGAR'''
     177
     178
     179
     180 
     181N'oubliez pas que les mans existent
     182