| 8 | | = 1. Introduction = |
| 9 | | == 1.1 Synthèse logique == |
| 10 | | |
| 11 | | La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe). |
| 12 | | Plusieurs outils sont disponibles : |
| 13 | | |
| 14 | | * L'outil '''BOOM''' permet l'optimisation de réseau booléen avant synthèse. |
| 15 | | * L'outil '''BOOG''' offre la possibilité de synthétiser une netlist en utilisant une bibliothèque |
| 16 | | de cellules précaractérisées telle que '''SXLIB'''. |
| 17 | | La netlist peut être soit au format '''.vst''' soit au format '''.al'''. Vérifier la variable d'environnement '''MBK_OUT_LO=vst'''. |
| 18 | | Pour plus de renseignements sur ces outils, reportez vous au man. |
| 19 | | |
| 20 | | == 1.2 Résolution des problèmes de fanout (sortance) == |
| 21 | | |
| 22 | | Les netlists générées contiennent parfois des signaux internes attaquant un nombre |
| 23 | | important de portes (grand fanout). Ceci se traduit par une détérioration des fronts |
| 24 | | (rise time et fall time). Il y a alors une perte en performance temporelle. Afin de ré- |
| 25 | | soudre ces problèmes, l'outil '''LOON''' remplace les cellules ayant un fanout (i.e sortance) |
| 26 | | trop grand par des cellules plus puissantes ou bien insère des buffers. |
| 27 | | |
| 28 | | == 1.3 Visualisation de la chaîne longue == |
| 29 | | |
| 30 | | A tout moment, les netlists peuvent être éditées graphiquement. L'outil '''XSCH''' permet |
| 31 | | de visualiser le chemin le plus long grâce aux fichiers '''.xsc''' et '''.vst''' générés à la fois |
| 32 | | par '''BOOG''' et par '''LOON'''. |
| 33 | | |
| 34 | | [[Image(T_RC.jpg,nolink)]] |
| | 8 | A venir ... |
| 37 | | |
| 38 | | La résistance équivalente R de la figure est calculée sur la totalité des transistors |
| 39 | | du AND appartenant au chemin actif. De même, la capacité C est calculée sur les transistors |
| 40 | | passants du NOR correspondant au chemin entre i0 et la sortie de la cellule. |
| 41 | | |
| 42 | | |
| 43 | | == 1.4 Vérification de la netlist == |
| 44 | | |
| 45 | | La netlist doit être certifiée. Pour cela, on dispose du simulateur '''ASIMUT''' |
| 46 | | |
| 47 | | = 2 Travail à effectuer = |
| 48 | | |
| 49 | | |
| 50 | | == 2.1 Optimisation du réseau booléen == |
| 51 | | |
| 52 | | Pour analyser l'effet de l'optimisation booléenne : |
| 53 | | On utilise le travail fait le TP précédent sur les descriptions des automates |
| 54 | | digicode.vbe |
| 55 | | * Lancer l'optimisation booléenne avec l'outil '''BOOM''' en demandant une optimisation |
| 56 | | en surface puis en délai ; |
| 57 | | {{{ |
| 58 | | >boom -V <vbe_source> <vbe_destination> - |
| 59 | | }}} |
| 60 | | |
| 61 | | * Essayer '''BOOM''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... Le mode et le |
| 62 | | niveau d'optimisation sont aussi à changer. |
| 63 | | * Comparer le nombre de littéraux après factorisation. |
| 64 | | |
| 65 | | |
| 66 | | == 2.2 Mapping sur cellules précaractérisées == |
| 67 | | |
| 68 | | Pour chacun des réseaux booléens obtenus précédemment : |
| 69 | | * positionner les variables d'environnement ; |
| 70 | | * synthétiser la vue structurelle : |
| 71 | | |
| 72 | | {{{ |
| 73 | | >boog <vbe_source> - |
| 74 | | }}} |
| 75 | | |
| 76 | | |
| 77 | | * lancer '''BOOG''' sur les différentes netlists pour observer l'influence des options de |
| 78 | | '''SYF''' et de '''BOOM'''. |
| 79 | | * valider le travail de '''BOOG''' en resimulant avec '''ASIMUT''' les netlists obtenues |
| 80 | | avec les vecteurs de test qui ont servi à valider le réseau booléen initial. |
| 81 | | |
| 82 | | |
| 83 | | == 2.3 Visualisation de la netlist == |
| 84 | | |
| 85 | | La chaîne longue est décrite dans le fichier '''.xsc''' produit par '''BOOG'''. L'outil '''XSCH''' |
| 86 | | l'utilisera pour colorer son chemin. Pour lancer l'éditeur graphique : |
| 87 | | |
| 88 | | {{{ |
| 89 | | >xsch -I vst -l <vst_source> - |
| 90 | | }}} |
| 91 | | |
| 92 | | |
| 93 | | La couleur rouge désigne le chemin critique. |
| 94 | | Si vous utilisez l'option '-slide' qui permet d'afficher un ensemble de netlists, |
| 95 | | n'oubliez pas d'appuyer sur les touches '+' ou '-' pour éditer vos fichiers ! |
| 96 | | |
| 97 | | == 2.4 Optimisation de la netlist == |
| 98 | | |
| 99 | | Pour toutes les vues structurelles obtenues précédemment : |
| 100 | | Lancer '''LOON''' avec la commande : |
| 101 | | {{{ |
| 102 | | >loon <vst_source> <vst_destination> <lax_param> - |
| 103 | | }}} |
| 104 | | |
| 105 | | Effectuer une optimisation de fanout en modifiant le facteur de fanout dans le fichier d'option '''.lax'''. |
| 106 | | Imposer des valeurs de capacités sur les sorties. |
| 107 | | |
| 108 | | |
| 109 | | == 2.5 Vérification de la netlist == |
| 110 | | |
| 111 | | |
| 112 | | À effectuer sur la meilleure (justifiez votre choix) de vos netlists : |
| 113 | | Valider le travail de '''LOON''' en resimulant sous '''ASIMUT''' les netlists obtenues |
| 114 | | avec les vecteurs de test qui ont servi à valider la vue comportementale initiale. |
| 115 | | |
| 116 | | Mettre les différents résultats (surface/temps/optimisation) dans votre rapport. |
| 117 | | Quelle est, selon vous, la meilleure des netlists ? Pourquoi ? |
| 118 | | |
| 119 | | |
| 120 | | |