Changes between Version 29 and Version 30 of ToolsCourseTp1


Ignore:
Timestamp:
Sep 18, 2008, 12:08:30 PM (16 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp1

    v29 v30  
    11{{{
    22#!html
    3 <h1> TP1 : Synthèse </h1>
     3<h1> TP1 : Synthèse logique </h1>
    44}}}
    55
     
    1212Chaque outil possède ses propres options donnant des résultats plus ou moins adaptés suivant l'utilisation que l'on veut faire du circuit.
    1313
     14Ce TP portera donc sur les méthodes de génération et de validation d’une netlist de cellules précaractérisées.
     15En effet, même s’il est acquis que les outils de génération d’ALLIANCE fonctionnent correctement, la validation de chaque vue générée est indispensable.
     16Elle permet de limiter le coût et le temps de la conception.
     17
    1418[[Image(synthese.jpg, nolink)]]
    1519
     20Les dépendances de données dans le flux sont matérialisées dans la réalité par une dépendance de fichier.
     21Le fichier '''Makefile''' exécuté à l’aide de la commande '''make''' permet de gérer ces dépendances.
     22Ce TP n’étant pas un cours sur le Makefile, nous nous limiterons à expliquer l’usage qui en est fait dans les exemples fournis. (cf. Annexe)
     23
     24'''L’usage de Makefile est obligatoire pour ce TP !!! '''
    1625
    1726= 1 Introduction =
     
    2130Un circuit combinatoire pur ne dispose pas de registres internes.
    2231De ce fait, ses sorties ne dépendent que de ses entrées primaires.
    23 
    2432A l'inverse, un circuit séquentiel synchrone disposant de registres internes voit ses sorties changer en fonction de ses entrées mais aussi des valeurs mémorisées dans ses registres.
     33En conséquence, l'état du circuit à l'instant t+1 dépend aussi de son état à l'instant t.
     34Ce type de circuit peut être modélisé par un '''automate d'états finis'''.
    2535
    2636[[Image(ex_digicode.jpg,nolink)]]
    27 
    28 En conséquence, l'état du circuit à l'instant t+1 dépend aussi de son état à l'instant t.
    29 Ce type de circuit peut être modélisé par un automate d'états finis.
    30 
    31 [[Image(automate.jpg, nolink)]]
    3237
    3338L'automate de MOORE voit l'état de ses sorties changer uniquement sur front d'horloge.
    3439Les entrées peuvent donc bouger entre deux fronts sans modifier les sorties.
    35 Par contre dans le cas d'un automate de MEALY, la variation des entrées peut modifier à jour
    36 
    37     === a. SYF et VHDL ===
    38 
    39 * Afin de décrire de tels automates, on utilise un style particulier de description VHDL qui définit l'architecture '''"fsm"''' (finite-state machine).
    40 Le fichier correspondant possède également l'extension fsm.
    41 
    42 * A partir de ce fichier, l'outil '''SYF''' effectue la synthèse d'automate et transforme cet automate abstrait en un réseau booléen.
    43 '''SYF ''' génère donc un fichier VHDL au format vbe.
    44 Comme la plupart des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement avant d'utiliser '''SYF'''.
    45 Pour les connaître, reportez-vous au man de '''SYF'''.
    46 
    47     === b. Exemple ===
     40Par contre dans le cas d'un automate de MEALY, la variation des entrées peut modifier à tout moment la valeur des sorties.
     41Dans notre '''fsm''' (''finite-state machine''), on s’imposera de séparer la fonction de génération de la fonction de transition (automate de Moore).
     42Pour cela, deux process distincts matérialiseront le calcul du prochain état et sa mise à jour.
     43
     44[[Image(automate.jpg, nolink)]]
     45
     46    === 1.1.1 SYF et VHDL ===
     47
     48  * Afin de décrire de tels automates, on utilise un style particulier de description VHDL qui définit l'architecture fsm.
     49    Le fichier correspondant possède également l'extension '''.fsm'''.
     50
     51  * A partir de ce fichier, l'outil '''SYF''' effectue la synthèse d'automate et transforme cet automate abstrait en un réseau booléen.
     52    '''SYF ''' génère donc un fichier VHDL au format vbe.
     53    Comme la plupart des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement avant d'utiliser '''SYF'''.
     54    Pour les connaître, reportez-vous au man de '''SYF'''.
     55
     56    === 1.1.2 Exemple ===
    4857
    4958Afin de se familiariser avec la syntaxe de description d'un fichier .fsm, un exemple
     
    128137}}}
    129138
    130   == 1.2 Synthèse logique ==
     139  == 1.2 Synthèse logique et optimisation structurelle ==
     140
     141    === 1.2.1 Synthèse logique ===
    131142
    132143La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe).
    133 
    134     === a. BOOM et BOOG ===
    135 
    136144Plusieurs outils sont disponibles :
    137145
    138      * L'outil '''BOOM''' permet l'optimisation de réseau booléen avant synthèse.
    139      * L'outil '''BOOG''' offre la possibilité de synthétiser une netlist en utilisant une bibliothèque de cellules précaractérisées telle que '''SXLIB'''.
    140 
    141 La netlist peut être soit au format '''.vst''' soit au format '''.al'''.
    142 Vérifier la variable d'environnement '''MBK_OUT_LO=vst'''.
     146    * L'outil '''BOOM''' permet l'optimisation de réseau booléen avant synthèse.
     147    * L'outil '''BOOG''' offre la possibilité de synthétiser une netlist en utilisant une bibliothèque de cellules précaractérisées telle que '''SXLIB'''.
     148    La netlist peut être soit au format '''.vst''' soit au format '''.al'''.
     149    Vérifier la variable d'environnement '''MBK_OUT_LO=vst'''.
     150
    143151Pour plus de renseignements sur ces outils, reportez vous au man.
    144152
    145     === b. Résolution des problèmes de fanout (sortance) ===
     153    === 1.2.2 Résolution des problèmes de fanout (sortance) ===
    146154
    147155Les netlists générées contiennent parfois des signaux internes attaquant un nombre important de portes (grand fanout).
     
    150158Afin de résoudre ces problèmes, l'outil '''LOON''' remplace les cellules ayant un fanout (i.e sortance) trop grand par des cellules plus puissantes ou bien insère des buffers.
    151159
    152     === c. Visualisation de la chaîne longue ===
     160    === 1.2.3 Visualisation de la chaîne longue ===
    153161
    154162A tout moment, les netlists peuvent être éditées graphiquement. L'outil '''XSCH''' permet de visualiser le chemin le plus long grâce aux fichiers '''.xsc''' et '''.vst''' générés à la fois par '''BOOG''' et par '''LOON'''.
     
    159167De même, la capacité C est calculée sur les transistors passants du NOR correspondant au chemin entre i0 et la sortie de la cellule.
    160168
    161     === d. Vérification de la netlist ===
     169    === 1.2.4 Vérification de la netlist ===
    162170
    163171La netlist doit être certifiée.
    164172Pour cela, on dispose du simulateur '''ASIMUT'''.
    165173
    166 = 2. Travail à faire =
     174= 2. Travail à effectuer =
    167175
    168176  == 2.1 Réalisation d'un compteur ==
    169177     
    170   * En s'inspirant du compteur de trois "un" présenté, écrire la description d'un compteur de cinq "un" successifs sous la forme d'un automate de Moore.
    171   * Lancer '''SYF''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''.
    172   Penser à bien positionner les variables d'environnement.
    173 
     178   * En s'inspirant du compteur de trois "un" présenté, écrire la description d'un compteur de cinq "un" successifs sous la forme d'un automate de Moore.
     179   * Lancer '''SYF''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''.
     180     Penser à bien positionner les variables d'environnement.
    174181{{{
    175182>syf -CEV -a <fsm_source> -
    176183}}}
    177 
    178  * Visualiser les fichiers '''.enc'''.
    179  * Ecrire un fichier de vecteurs de test et simuler sous '''ASIMUT'''.
     184  * Visualiser les fichiers '''.enc'''.
     185  * Ecrire un fichier de vecteurs de test et simuler sous '''ASIMUT'''.
     186  * Ecrire un fichier '''Makefile''' pour automatiser les différents appel d'outil avec les différentes options.
    180187
    181188'''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? '''
     
    187194
    188195{{{
    189 Les chiffres de 0 à 9 sont codés en binaire naturel sur la manière suivante :
    190 
    191 A : 1010
    192 B : 1011
     196Les chiffres de 0 à 9 sont codés en binaire naturel sur 4 bits. A et B sont codés comme suit : A = 1010, B = 1011.
    193197
    194198Le digicode fonctionne en deux modes :
     
    200204
    201205 * Le digicode commande une alarme dès qu'un des chiffres entrés n'est pas le bon
    202  * L'automate revient dans son état d'attente si rien n'est entré au clavier au bout de 5 secondes ou si l'alarme a sonné pendant 2mn
    203  - signal '''reset'''-, pour cela il reçoit un signal '''reset''' du timer externe.
     206 * L'automate revient dans son état d'attente si rien n'est entré au clavier au bout de 5 secondes ou si l'alarme a sonné pendant 2mn,
     207   pour cela il reçoit un signal reset du timer externe.
    204208 * La puce fonctionne à une fréquence de 10MHz.
    205  * Toute pression d'une touche du clavier est accompagnée du signal '''press_kbd'''.
     209 * Toute pression d'une touche du clavier est accompagnée du signal press_kbd.
    206210 Celui-ci signale à la puce que les données en sortie signal est à 1 durant un cycle d'horloge.
    207211
    208 Le code est '''53A17'''
     212Le code est 53A17.
    209213
    210214L'interface de l'automate est le suivant :
     
    220224
    221225  * Dessiner le graphe d'états de l'automate. (Les corrections seront distribuées)
    222   * Le décrire au format .fsm .
    223   * Le synthétiser avec SYF en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options -CEV.
     226  * Le décrire au format '''.fsm'''.
     227  * Le synthétiser avec '''SYF''' en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''.
    224228{{{
    225229>syf -CEV -a <fsm_source> -
     
    227231  * Ecrire le fichier .pat de vecteurs de test.
    228232  * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues.
    229   * Adaptez le Makefile pour qu'il couvre tous les encodages possibles.
     233  * Adapter le '''Makefile''' pour qu'il couvre tous les encodages possibles.
    230234
    231235'''Quelles sont vos remarques concernant la complexité des expressions (i.e temps) et le nombre de registres (i.e surface) des descriptions comportementales suivant les encodages ?