Changes between Version 27 and Version 28 of ToolsCourseTp1
- Timestamp:
- Sep 18, 2008, 10:57:50 AM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp1
v27 v28 35 35 Par contre dans le cas d'un automate de MEALY, la variation des entrées peut modifier à jour 36 36 37 == 1.2 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. 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. 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. 41 43 '''SYF ''' génère donc un fichier VHDL au format vbe. 42 44 Comme la plupart des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement avant d'utiliser '''SYF'''. 43 Pour les connaître, reportez-vous au man de syf.44 45 == 1.3 Exemple==45 Pour les connaître, reportez-vous au man de '''SYF'''. 46 47 === b. Exemple === 46 48 47 49 Afin de se familiariser avec la syntaxe de description d'un fichier .fsm, un exemple … … 127 129 }}} 128 130 129 == 1.4 Synthèse logique == 130 131 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe). 131 == 1.2 Synthèse logique == 132 133 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe). 134 135 === a. BOOM et BOOG === 136 132 137 Plusieurs outils sont disponibles : 133 138 134 139 * L'outil '''BOOM''' permet l'optimisation de réseau booléen avant synthèse. 135 140 * 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'''. 141 136 142 La netlist peut être soit au format '''.vst''' soit au format '''.al'''. 137 143 Vérifier la variable d'environnement '''MBK_OUT_LO=vst'''. 138 144 Pour plus de renseignements sur ces outils, reportez vous au man. 139 145 140 == 1.5 Résolution des problèmes de fanout (sortance)==146 === b. Résolution des problèmes de fanout (sortance) === 141 147 142 148 Les netlists générées contiennent parfois des signaux internes attaquant un nombre important de portes (grand fanout). … … 145 151 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. 146 152 147 == 1.6 Visualisation de la chaîne longue==153 === c. Visualisation de la chaîne longue === 148 154 149 155 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'''. … … 154 160 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. 155 161 156 == 1.7 Vérification de la netlist==162 === d. Vérification de la netlist === 157 163 158 164 La netlist doit être certifiée. … … 164 170 165 171 * Ecrire la description d'un compteur de cinq "un" successifs sous la forme d'un automate de Moore. 166 * Positionner les variables d'environnement.167 172 * Lancer '''SYF''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''. 173 Pensez à bien positionner vos variables d'environnement. 168 174 169 175 {{{ … … 174 180 * Ecrire un fichier de vecteurs de test et simuler sous '''ASIMUT'''. 175 181 176 Que se passe-t-il si le '''reset''' n'est pas positionné en début de pattern ? Pourquoi ? 182 '''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? ''' 177 183 178 184 == 2.2 Réalisation d'un automate pour digicode == 179 185 180 === a. Spécification de l'automate ===181 182 L'exemple qui suit servira dans toute la suite du TP.183 186 On veut réaliser une puce pour digicode. 184 187 Les spécifications sont les suivantes : … … 212 215 * out alarm 213 216 214 === b. Travail à faire ===215 216 217 * Dessiner le graphe d'états de l'automate. (Les corrections seront distribuées) 217 218 * Le décrire au format .fsm . … … 233 234 234 235 * Lancer l'optimisation booléenne avec l'outil '''BOOM''' en demandant une optimisation en surface puis en délai. 235 236 236 {{{ 237 237 >boom -V <vbe_source> <vbe_destination> - 238 238 }}} 239 240 239 * Essayer '''BOOM''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... 241 240 Le mode et le niveau d'optimisation sont aussi à changer. 242 243 241 * Comparer le nombre de littéraux après factorisation. 244 242 … … 248 246 * Positionner les variables d'environnement ; 249 247 * Synthétiser la vue structurelle : 250 251 248 {{{ 252 249 >boog <vbe_source> - 253 250 }}} 254 255 251 * Lancer '''BOOG''' sur les différentes netlists pour observer l'influence des options de '''SYF''' et de '''BOOM''' ; 256 252 * Valider le travail de '''BOOG''' en resimulant avec '''ASIMUT''' les netlists obtenues avec les vecteurs de test qui ont servi à valider le réseau booléen initial. … … 258 254 == 2.5 Visualisation de la netlist == 259 255 260 La chaîne longue est décrite dans le fichier '''.xsc''' produit par '''BOOG'''. L'outil '''XSCH''' l'utilisera pour colorer son chemin.256 * Utiliser l'outil '''XSCH''' pour colorer visualiser le chemin critique. 261 257 Pour lancer l'éditeur graphique : 262 263 258 {{{ 264 259 >xsch -I vst -l <vst_source> - 265 260 }}} 266 267 261 La couleur rouge désigne le chemin critique. 268 262 Si vous utilisez l'option '-slide' qui permet d'afficher un ensemble de netlists, n'oubliez pas d'appuyer sur les touches '+' ou '-' pour éditer vos fichiers ! … … 271 265 272 266 Pour toutes les vues structurelles obtenues précédemment : 273 * Lancer '''LOON''' avec la commande : 274 267 * Lancer '''LOON'''. 275 268 {{{ 276 269 >loon <vst_source> <vst_destination> <lax_param> - 277 270 }}} 278 279 271 * Effectuer une optimisation de fanout en modifiant le facteur de fanout dans le fichier d'option '''.lax'''. 280 272 Imposer des valeurs de capacités sur les sorties. … … 282 274 == 2.7 Vérification de la netlist == 283 275 284 À effectuer sur la meilleure de vos netlists (justifiez votre choix !) : 276 '''Quelle est, selon vous, la meilleure des netlists ? Pourquoi ?''' 277 278 À effectuer sur cette netlist : 285 279 * Valider le travail de '''LOON''' en resimulant sous '''ASIMUT''' les netlists obtenues avec les vecteurs de test qui ont servi à valider la vue comportementale initiale. 286 280 * Mettre les différents résultats (surface/temps/optimisation) dans votre rapport. 287 * Quelle est, selon vous, la meilleure des netlists ? Pourquoi ? 281 282 = 3. Compte rendu = 283 284 Vous rédigerez un compte-rendu d'une page maximum pour ce TP, et vous joindrez les fichiers écrits (et uniquement les fichiers écrits, pas ceux générés par les différents outils). 285 Vous ferez attention à bien répondre au question posées ici dans le compte rendu. 286 Vous ferez également attention à joindre votre Makefile de façon à ce que la commande '''make''' effectue les différentes étapes de ce TP de A à Z.