Changes between Version 11 and Version 12 of ToolsTp1
- Timestamp:
- Dec 9, 2009, 10:53:48 AM (15 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsTp1
v11 v12 8 8 = 1 Introduction = 9 9 10 Le but de ce TP est de présenter quelques outils de la chaîne '''A LLIANCE''' dont :11 * Les outils de synthèse logique ''' SYF''', '''BOOM''', '''BOOG''', '''LOON''' ;12 * L'éditeur graphique de netlist ''' XSCH''' ;13 * Les outils pour la preuve formelle ''' FLATBEH''', '''PROOF''' ;14 * Le simulateur ''' ASIMUT''' ;10 Le but de ce TP est de présenter quelques outils de la chaîne '''Alliance''' dont : 11 * Les outils de synthèse logique '''syf''', '''boom''', '''boog''', '''loon''' ; 12 * L'éditeur graphique de netlist '''xsch''' ; 13 * Les outils pour la preuve formelle '''flatbeh''', '''proof''' ; 14 * Le simulateur '''asimut''' ; 15 15 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. 16 16 … … 18 18 19 19 Ce TP portera donc sur les méthodes de génération et de validation d’une netlist de cellules précaractérisées. 20 En effet, même s’il est acquis que les outils de génération d’ '''A LLIANCE''' fonctionnent correctement, la validation de chaque vue générée est indispensable.20 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. 21 21 Elle permet de limiter le coût et le temps de la conception. 22 22 … … 49 49 50 50 Afin de décrire de tels automates, on utilise un style particulier de description VHDL qui définit l'architecture fsm. 51 Le fichier correspondant possède également l'extension '' '.fsm'''.52 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.53 ''' SYF ''' génère donc un fichier VHDL au format '''.vbe'''.54 55 Comme la plupart des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement avant d'utiliser ''' SYF'''.56 Pour les connaître, reportez-vous au man de ''' SYF'''.51 Le fichier correspondant possède également l'extension ''.fsm''. 52 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. 53 '''syf ''' génère donc un fichier VHDL au format ''.vbe''. 54 55 Comme la plupart des outils utilisés au laboratoire, il faut positionner certaines variables d'environnement avant d'utiliser '''syf'''. 56 Pour les connaître, reportez-vous au man de '''syf'''. 57 57 58 58 === 1.1.3 Exemple === 59 59 60 Afin de se familiariser avec la syntaxe de description d'un fichier '' '.fsm''', un exemple60 Afin de se familiariser avec la syntaxe de description d'un fichier ''.fsm'', un exemple 61 61 de compteur de trois "1" successifs est présenté. Sa vocation est de détecter par exemple sur une liaison série une séquence de trois "1" successifs. Le graphe d'états que l'on cherche à décrire est représenté sur la figure . 62 62 … … 148 148 === 1.2.1 Synthèse logique === 149 149 150 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format '' '.vbe''').150 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format ''.vbe''). 151 151 Plusieurs outils sont disponibles. 152 152 153 L'outil ''' BOOM''' permet l'optimisation de réseau booléen avant synthèse.154 155 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'''.156 La netlist pouvant être soit au format '' '.vst''' soit au format '''.al''', pensez à vérifier la variable d'environnement '''MBK_OUT_LO'''.153 L'outil '''boom''' permet l'optimisation de réseau booléen avant synthèse. 154 155 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'''. 156 La netlist pouvant être soit au format ''.vst'' soit au format ''.al'', pensez à vérifier la variable d'environnement '''MBK_OUT_LO'''. 157 157 158 158 === 1.2.2 Résolution des problèmes de fanout (sortance) === … … 161 161 Ceci se traduit par une détérioration des fronts (rise time et fall time). 162 162 Il y a alors une perte en performance temporelle. 163 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.163 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. 164 164 165 165 === 1.2.3 Visualisation de la chaîne longue === 166 166 167 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'''.167 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'''. 168 168 169 169 ||[[Image(T_RC.jpg,nolink)]]||La résistance équivalente '''R''' est calculée sur la totalité des transistors du AND appartenant au chemin actif. 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.|| … … 172 172 173 173 La netlist doit être certifiée. 174 Pour cela, on dispose du simulateur ''' ASIMUT''', mais aussi de l’outil '''PROOF''' qui procède à une comparaison formelle de deux descriptions comportementales ('''.vbe''').175 L’outil ''' FLATBEH''' permet d’obtenir le nouveau fichier comportemental à partir de la netlist.174 Pour cela, on dispose du simulateur '''asimut''', mais aussi de l’outil '''proof''' qui procède à une comparaison formelle de deux descriptions comportementales (''.vbe''). 175 L’outil '''flatbeh''' permet d’obtenir le nouveau fichier comportemental à partir de la netlist. 176 176 177 177 = 2. Travail à effectuer = … … 181 181 == 2.1 Réalisation d'un compteur == 182 182 183 * En s'inspirant du compteur de trois "un" présenté, écrire au format '' '.fsm''' la description d'un compteur de cinq "un" successifs sous la forme d'un automate de Moore.184 * Synthétiser l'automate avec ''' SYF''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''.183 * En s'inspirant du compteur de trois "un" présenté, écrire au format ''.fsm'' la description d'un compteur de cinq "un" successifs sous la forme d'un automate de Moore. 184 * Synthétiser l'automate avec '''syf''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''. 185 185 Penser à bien positionner les variables d'environnement. 186 186 {{{ 187 187 > syf -CEV -a <fsm_source> 188 188 }}} 189 * Visualiser les fichiers '' '.enc'''.190 * Ecrire le fichier '' '.pat''' de vecteurs de test.191 * Simuler avec ''' ASIMUT''' toutes les vues comportementales obtenues.189 * Visualiser les fichiers ''.enc''. 190 * Ecrire le fichier ''.pat'' de vecteurs de test. 191 * Simuler avec '''asimut''' toutes les vues comportementales obtenues. 192 192 193 193 '''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? ''' … … 229 229 230 230 * Dessiner le graphe d'états de l'automate. 231 * Ecrire au format '' '.fsm''' l'automate.232 * Synthétiser l'automate avec ''' SYF''' en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''.231 * Ecrire au format ''.fsm'' l'automate. 232 * Synthétiser l'automate avec '''syf''' en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''. 233 233 {{{ 234 234 > syf -CEV -a <fsm_source> 235 235 }}} 236 * Ecrire le fichier '' '.pat''' de vecteurs de test.237 * Simuler avec ''' ASIMUT''' toutes les vues comportementales obtenues.236 * Ecrire le fichier ''.pat'' de vecteurs de test. 237 * Simuler avec '''asimut''' toutes les vues comportementales obtenues. 238 238 239 239 '''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 ? … … 242 242 '''Comparez aussi leurs nombres de littéraux.''' 243 243 244 * Lancer l'optimisation du réseau booléen avec l'outil ''' BOOM''' en demandant une optimisation en '''surface''' puis en '''délai'''.244 * Lancer l'optimisation du réseau booléen avec l'outil '''boom''' en demandant une optimisation en '''surface''' puis en '''délai'''. 245 245 {{{ 246 246 > boom -V <vbe_source> <vbe_destination> 247 247 }}} 248 * Essayer ''' BOOM''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... Le mode et le niveau d'optimisation sont aussi à changer.248 * Essayer '''boom''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... Le mode et le niveau d'optimisation sont aussi à changer. 249 249 * Comparer le nombre de littéraux après factorisation. 250 250 251 251 Pour chacun des réseaux booléens obtenus précédemment, effectuer le mapping sur cellules précaractérisées : 252 * Synthétiser la vue structurelle (en faisant attention à bien positionner les variables d'environnement) en ancant l'outil ''' BOOG'''.252 * Synthétiser la vue structurelle (en faisant attention à bien positionner les variables d'environnement) en ancant l'outil '''boog'''. 253 253 {{{ 254 254 > boog <vbe_source> 255 255 }}} 256 * Observer l'influence des options de ''' SYF''' et de '''BOOM''' avec les différences netlists obtenues.257 * 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 * Utiliser ''' XSCH''' pour visualiser la netlist.256 * Observer l'influence des options de '''syf''' et de '''boom''' avec les différences netlists obtenues. 257 * 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 * Utiliser '''xsch''' pour visualiser la netlist. 259 259 {{{ 260 260 >xsch -I vst -l <vst_source> … … 265 265 266 266 Pour toutes les vues structurelles obtenues précédemment : 267 * Optimiser la netlist en lancant l'outil ''' LOON'''.267 * Optimiser la netlist en lancant l'outil '''loon'''. 268 268 {{{ 269 269 > loon <vst_source> <vst_destination> <lax_param> 270 270 }}} 271 * Effectuer une optimisation de fanout en modifiant le facteur de fanout dans le fichier d'option '' '.lax'''. Imposer des valeurs de capacités sur les sorties.271 * Effectuer une optimisation de fanout en modifiant le facteur de fanout dans le fichier d'option ''.lax''. Imposer des valeurs de capacités sur les sorties. 272 272 273 273 '''Quelle est, selon vous, la meilleure des netlists ? Pourquoi ?''' 274 274 275 275 À effectuer sur cette netlist : 276 * 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.277 278 * Deux précautions valent mieux qu’une ! Faire une vérification formelle de la netlist en la comparant au fichier comportemental d’origine issu de ''' SYF'''.276 * 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. 277 278 * Deux précautions valent mieux qu’une ! Faire une vérification formelle de la netlist en la comparant au fichier comportemental d’origine issu de '''syf'''. 279 279 {{{ 280 280 > flatbeh <vst_source> <vbe_dest>