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 | | |