Changes between Initial Version and Version 1 of MOCCA-TP1-2024


Ignore:
Timestamp:
Oct 6, 2022, 5:44:53 PM (2 years ago)
Author:
franck
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • MOCCA-TP1-2024

    v1 v1  
     1{{{
     2#!html
     3<h1> TP1 : Dessin de cellule </h1>
     4}}}
     5[[PageOutline]]
     6
     7== Introduction ==
     8
     9Vous devez commencer par sourcer le fichier d'environnement :
     10{{{#!bash
     11source /soc/alliance/etc/profile.d/alc_env.sh
     12}}}
     13Le but de cet exercice est le dessin sous '''graal''' d'une Nand à 2 entrées.
     14Les notions de cellules précaractérisées et de de gabarit seront introduites.
     15
     16Dans les TP suivant nous allons utiliser des cellules de la bibliothèque d'Alliance.
     17Cette bibliothèque peut être enrichie de nouvelles cellules grâce à l'éditeur '''graal''' et nous pouvons même recréer une bibliothèque avec un minimum de cellules.
     18
     19'''graal''' est un éditeur de layout symbolique intégrant le vérificateur de règles de dessin '''druc'''.
     20
     21L'objectif du jour est de dessiner une cellule en tenant compte des [attachment:symb_rules00-1.pdf règles de dessin fournies].
     22Vous devez travailler dans l'environnement Alliance. Vérifier que cette variable est bien positionnée :
     23
     24{{{#!bash
     25> echo $RDS_TECHNO_NAME
     26}}}
     27
     28Si ce n'est pas le cas, c'est que vous n'avez pas sourcer le fichier d'environnement.
     29
     30== Outils utilisés
     31
     32=== Graal
     33
     34L'éditeur de layout '''graal''' manipule plusieurs types d'objets différents que l'on peut créer avec le menu '''create''' :
     35  * les instances (importation de cellules physiques),
     36  * les boîtes d'aboutement qui définissent les limites de la cellule,
     37  * les segments : DIFFN, DIFFP, POLY, ALU1, ALU2 ...
     38  * le CALUX est utilisé pour désigner une portion possible pour les connecteurs,
     39  * les VIAs ou contacts :CONTDIFFN, CONTDIFFP, !CONTPOLY et VIA Metal1/Metal2,
     40  * les Big VIAs,
     41  * les transistors : NMOS ou PMOS.
     42
     43'''graal''' utilise la variable d'environnement '''GRAAL_TECHNO_NAME'''.
     44
     45=== Cougar
     46
     47L'outil '''cougar''' est capable d'extraire la netlist d'un circuit aux formats '''.vst''' ou '''.al''' à partir d'une description au format '''.ap'''.
     48
     49Pour extraire au niveau transistor, la commande à utiliser est :
     50{{{#!bash
     51> cougar -t file1 file2
     52}}}
     53
     54'''cougar''' utilise les variables d'environnement '''MBK_IN_PH''' et '''MBK_OUT_LO''' suivant les formats d'entrée et de sortie.
     55Par exemple pour générer une netlist au format '''.al''' à partir d'une description '''.ap''' il faut écrire :
     56{{{#!bash
     57> export MBK_IN_PH=ap
     58> export MBK_OUT_LO=al
     59> cougar -t file1 file2
     60}}}
     61
     62=== Yagle et Proof
     63
     64L'outil '''yagle''' est capable d'extraire la description VHDL comportementale d'un circuit au format '''.vbe''' à partir d'une ''netlist '' au format '''.al''' ''si celle-ci est au niveau transistor''.
     65
     66{{{#!bash
     67> export MBK_IN_LO=al
     68> ~encadr/yagle -s file1 file2
     69}}}
     70
     71=== Proof
     72
     73Lorsqu'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''' des vecteurs pour les deux descriptions et les comparer.
     74Cette 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.
     75'''proof''' réalise cette opération entre les description file1.vbe et file2.vbe par la commande :
     76{{{#!bash
     77> proof file1 file2
     78}}}
     79
     80== Le gabarit sxlib
     81
     82  * Les cellules de la bibliothèque '''sxlib''' ont toutes une hauteur de 50 lambdas et une largeur multiple de 5 lambda.
     83  * Les alimentations VDD et VSS sont réalisées en **CALU1** (centrés à 3 et 47 lambdas en Y); elles ont une largeur de 6 lambdas et sont placées horizontalement en haut et en bas de la cellule.
     84  * Attention à ne pas confondre **CALU1** et **ALU1**. Ils sont de même nature (c'est la première couche de métal) mais le premier à la proprité "connecteur" et il est "visible" du routeur, alors que le second est invisible et sert seulement à la connectique. Les segments spéciaux CALUX (CALU1, CALU2, CALU3...) forment l'interface de la cellule et jouent le rôle de connecteurs "étalés".  Ils doivent obligatoirement être   placés sur une grille de 5x5 lambdas et peuvent se trouver  n'importe où à l'intérieur de la cellule.
     85  * La largeur minimale de CALU1 est de 2 lambdas, plus 1 lambda pour l'extension.
     86  * Les transistors P sont placés près du rail VDD tandis que les transistors N sont placés près du rail VSS.
     87  * Le caisson N doit avoir une hauteur de 24 lambdas (centré à 39 lambdas en Y):
     88 
     89Le schéma de la figure suivante présente un résumé de ces contraintes :
     90
     91[[Image(gabarit_sxlib.jpg,nolink)]]
     92
     93  == 1.4 Travail à effectuer ==
     94
     95Le schéma théorique du NAND2 est présenté dans la figure suivante :
     96
     97[[Image(na2.jpg,nolink)]]
     98
     99Réaliser les étapes suivantes :
     100
     101    * Décrire le comportement de la cellule dans un fichier au format '''.vbe'''.
     102    * Dessiner sur papier un stick-diagram.
     103    * Saisir sous '''graal''' le dessin de la cellule en respectant le gabarit SXLIB.
     104        * On utilisera les largeurs suivantes pour les transistors : WN = WP = 10.
     105    * Valider les règles de dessin symbolique en lançant la commande '''DRUC''' sous graal. N'hésitez pas à lancer '''DRUC''' au fur et à mesure de façon à détecter les erreurs rapidement !!
     106    * Utilisez la commande '''EQUI''' pour vérifier la connectivité des équipotentielles.
     107    * Extraire la netlist de l'inverseur au format '''.al''' avec '''cougar'''.
     108    * Utiliser les outils '''yagle''' et '''proof''' pour vérifier le comportement.
     109    * Créer un '''Makefile''' pour automatiser les différentes étapes.
     110
     111N'oubliez pas que les mans existent ...
     112
     113= Compte rendu
     114
     115* Vous rédigerez un compte-rendu au format markdown pour ce TP dans lequel vous expliquerez :
     116  * les choix effectués pour la création de la cellule Nand ainsi que la démarche de validation,
     117  * Le Makefile de vérification de votre cellule
     118* Vous joindrez vos fichiers source sans oublier les fichiers Makefile.
     119* Le dépot se fera sur [https://moodle-sciences-22.sorbonne-universite.fr/course/view.php?id=2647#section-2 Moodle]