Changes between Version 29 and Version 30 of ToolsCourseTp1
- Timestamp:
- Sep 18, 2008, 12:08:30 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp1
v29 v30 1 1 {{{ 2 2 #!html 3 <h1> TP1 : Synthèse </h1>3 <h1> TP1 : Synthèse logique </h1> 4 4 }}} 5 5 … … 12 12 Chaque 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. 13 13 14 Ce TP portera donc sur les méthodes de génération et de validation d’une netlist de cellules précaractérisées. 15 En 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. 16 Elle permet de limiter le coût et le temps de la conception. 17 14 18 [[Image(synthese.jpg, nolink)]] 15 19 20 Les dépendances de données dans le flux sont matérialisées dans la réalité par une dépendance de fichier. 21 Le fichier '''Makefile''' exécuté à l’aide de la commande '''make''' permet de gérer ces dépendances. 22 Ce 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 !!! ''' 16 25 17 26 = 1 Introduction = … … 21 30 Un circuit combinatoire pur ne dispose pas de registres internes. 22 31 De ce fait, ses sorties ne dépendent que de ses entrées primaires. 23 24 32 A 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. 33 En conséquence, l'état du circuit à l'instant t+1 dépend aussi de son état à l'instant t. 34 Ce type de circuit peut être modélisé par un '''automate d'états finis'''. 25 35 26 36 [[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)]]32 37 33 38 L'automate de MOORE voit l'état de ses sorties changer uniquement sur front d'horloge. 34 39 Les 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 === 40 Par contre dans le cas d'un automate de MEALY, la variation des entrées peut modifier à tout moment la valeur des sorties. 41 Dans 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). 42 Pour 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 === 48 57 49 58 Afin de se familiariser avec la syntaxe de description d'un fichier .fsm, un exemple … … 128 137 }}} 129 138 130 == 1.2 Synthèse logique == 139 == 1.2 Synthèse logique et optimisation structurelle == 140 141 === 1.2.1 Synthèse logique === 131 142 132 143 La 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 136 144 Plusieurs outils sont disponibles : 137 145 138 139 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 143 151 Pour plus de renseignements sur ces outils, reportez vous au man. 144 152 145 === b.Résolution des problèmes de fanout (sortance) ===153 === 1.2.2 Résolution des problèmes de fanout (sortance) === 146 154 147 155 Les netlists générées contiennent parfois des signaux internes attaquant un nombre important de portes (grand fanout). … … 150 158 Afin 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. 151 159 152 === c.Visualisation de la chaîne longue ===160 === 1.2.3 Visualisation de la chaîne longue === 153 161 154 162 A 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'''. … … 159 167 De 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. 160 168 161 === d.Vérification de la netlist ===169 === 1.2.4 Vérification de la netlist === 162 170 163 171 La netlist doit être certifiée. 164 172 Pour cela, on dispose du simulateur '''ASIMUT'''. 165 173 166 = 2. Travail à faire=174 = 2. Travail à effectuer = 167 175 168 176 == 2.1 Réalisation d'un compteur == 169 177 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. 174 181 {{{ 175 182 >syf -CEV -a <fsm_source> - 176 183 }}} 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. 180 187 181 188 '''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? ''' … … 187 194 188 195 {{{ 189 Les chiffres de 0 à 9 sont codés en binaire naturel sur la manière suivante : 190 191 A : 1010 192 B : 1011 196 Les 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. 193 197 194 198 Le digicode fonctionne en deux modes : … … 200 204 201 205 * 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. 204 208 * 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. 206 210 Celui-ci signale à la puce que les données en sortie signal est à 1 durant un cycle d'horloge. 207 211 208 Le code est '''53A17'''212 Le code est 53A17. 209 213 210 214 L'interface de l'automate est le suivant : … … 220 224 221 225 * 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'''. 224 228 {{{ 225 229 >syf -CEV -a <fsm_source> - … … 227 231 * Ecrire le fichier .pat de vecteurs de test. 228 232 * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues. 229 * Adapte z le Makefilepour qu'il couvre tous les encodages possibles.233 * Adapter le '''Makefile''' pour qu'il couvre tous les encodages possibles. 230 234 231 235 '''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 ?