Changes between Version 35 and Version 36 of ToolsCourseTp1
- Timestamp:
- Sep 25, 2008, 6:44:18 PM (16 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
ToolsCourseTp1
v35 v36 73 73 ) ; 74 74 end circuit ; 75 75 76 architecture MOORE of circuit is 76 77 77 type ETAT_TYPE is (E0, E1, E2, E3) ; 78 signal EF, EP : ETAT_TYPE; 79 -- pragma CURRENT_STATE EP 80 -- pragma NEXT_STATE EF 81 -- pragma CLOCK CK 82 78 type ETAT_TYPE is (E0, E1, E2, E3) ; 79 signal EF, EP : ETAT_TYPE; 80 -- pragma CURRENT_STATE EP 81 -- pragma NEXT_STATE EF 82 -- pragma CLOCK CK 83 83 84 84 begin 85 process (EP, i, reset) 86 begin 87 88 if (reset=’1’) then 89 EF<=E0; 90 else 91 case EP is 92 when E0 => 93 if (i=’1’) then 94 EF <= E1 ; 95 else 96 EF <= E0 ; 97 end if ; 98 when E1 => 99 if (i=’1’) then 100 EF <= E2 ; 101 102 103 104 105 106 else 107 EF <= E0 ; 108 end if ; 109 when E2 => 110 if (i=’1’) then 111 EF <= E3 ; 112 else 113 EF <= E0 ; 114 end if ; 115 when E3 => 116 if (i=’1’) then 117 EF <= E3 ; 118 else 119 EF <= E0 ; 120 end if ; 85 86 process (EP, i, reset) 87 begin 88 89 if (reset=’1’) then 90 EF <= E0; 91 else 92 case EP is 93 when E0 => 94 if (i=’1’) then 95 EF <= E1; 96 else 97 EF <= E0; 98 end if; 99 100 when E1 => 101 if (i=’1’) then 102 EF <= E2; 103 else 104 EF <= E0; 105 end if; 106 when E2 => 107 if (i=’1’) then 108 EF <= E3; 109 else 110 EF <= E0; 111 end if; 112 when E3 => 113 if (i=’1’) then 114 EF <= E3; 115 else 116 EF <= E0; 117 end if; 121 118 when others => assert (’1’) 122 report "etat illegal"; 123 end case ; 124 end if ; 125 case EP is 126 when E0 => 127 o <= ’0’ ; 128 when E1 => 129 o <= ’0’ ; 130 when E2 => 131 o <= ’0’ ; 132 when E3 => 133 o <= ’1’ ; 134 when others => assert (’1’) 135 report "etat illegal" ; 136 end case ; 137 end process ; 138 139 process(ck) 140 begin 119 report "etat illegal"; 120 end case; 121 end if; 122 123 case EP is 124 when E0 => 125 o <= ’0’; 126 when E1 => 127 o <= ’0’; 128 when E2 => 129 o <= ’0’; 130 when E3 => 131 o <= ’1’; 132 when others => assert (’1’) 133 report "etat illegal"; 134 end case; 135 end process; 136 137 process(ck) 138 begin 141 139 if (ck=’1’ and not ck’stable) then 142 EP <= EF ; 143 end if ; 144 end process ; 145 end MOORE ; 140 EP <= EF; 141 end if; 142 end process; 143 144 end MOORE; 146 145 }}} 147 146 … … 150 149 === 1.2.1 Synthèse logique === 151 150 152 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe).151 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format '''.vbe'''). 153 152 Plusieurs outils sont disponibles. 154 153 … … 177 176 178 177 La netlist doit être certifiée. 179 Pour cela, on dispose du simulateur '''ASIMUT''', mais aussi de l’outil '''PROOF''' qui procède à une comparaison formelle de deux descriptions comportementales ( .vbe).178 Pour cela, on dispose du simulateur '''ASIMUT''', mais aussi de l’outil '''PROOF''' qui procède à une comparaison formelle de deux descriptions comportementales ('''.vbe'''). 180 179 L’outil '''FLATBEH''' permet d’obtenir le nouveau fichier comportemental à partir de la netlist. 181 180 … … 186 185 == 2.1 Réalisation d'un compteur == 187 186 188 * 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 187 * 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. 189 188 * Lancer '''SYF''' avec les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''. 190 Penser à bien positionner les variables d'environnement 189 Penser à bien positionner les variables d'environnement. 191 190 {{{ 192 191 > syf -CEV -a <fsm_source> 193 192 }}} 194 * Visualiser les fichiers '''.enc''' 195 * Ecrire le fichier '''.pat''' de vecteurs de test 196 * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues 193 * Visualiser les fichiers '''.enc'''. 194 * Ecrire le fichier '''.pat''' de vecteurs de test. 195 * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues. 197 196 198 197 '''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? ''' … … 235 234 === 2.2.1 Réalisation de l'automate === 236 235 237 * Dessiner le graphe d'états de l'automate. (Les corrections seront distribuées)238 * Le décrire au format '''.fsm''' 239 * Le synthétiser avec '''SYF''' en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV''' 236 * Dessiner le graphe d'états de l'automate. 237 * Le décrire au format '''.fsm'''. 238 * Le synthétiser avec '''SYF''' en utilisant les options de codage '''-a''', '''-j''', '''-m''', '''-o''', '''-r''' et en utilisant les options '''-CEV'''. 240 239 {{{ 241 240 > syf -CEV -a <fsm_source> 242 241 }}} 243 * Ecrire le fichier '''.pat''' de vecteurs de test 244 * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues 242 * Ecrire le fichier '''.pat''' de vecteurs de test. 243 * Simuler avec '''ASIMUT''' toutes les vues comportementales obtenues. 245 244 246 245 '''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 ? … … 251 250 === 2.2.2 Optimisation du réseau booléen === 252 251 253 * Lancer l'optimisation booléenne avec l'outil '''BOOM''' en demandant une optimisation en '''surface''' puis en '''délai''' 252 * Lancer l'optimisation booléenne avec l'outil '''BOOM''' en demandant une optimisation en '''surface''' puis en '''délai'''. 254 253 {{{ 255 254 > boom -V <vbe_source> <vbe_destination> 256 255 }}} 257 * Essayer '''BOOM''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... Le mode et le niveau d'optimisation sont aussi à changer 258 * Comparer le nombre de littéraux après factorisation 256 * Essayer '''BOOM''' avec les différents algorithmes '''-s''', '''-j''', '''-b''', '''-g''', '''-p'''... Le mode et le niveau d'optimisation sont aussi à changer. 257 * Comparer le nombre de littéraux après factorisation. 259 258 260 259 === 2.2.3 Mapping sur cellules précaractérisées === 261 260 262 261 Pour chacun des réseaux booléens obtenus précédemment : 263 * Synthétiser la vue structurelle (en faisant attention à bien positionner les variables d'environnement) :262 * Synthétiser la vue structurelle (en faisant attention à bien positionner les variables d'environnement). 264 263 {{{ 265 264 > boog <vbe_source> 266 265 }}} 267 * Observer l'influence des options de '''SYF''' et de '''BOOM''' avec les différences netlists obtenues 268 * 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 266 * Observer l'influence des options de '''SYF''' et de '''BOOM''' avec les différences netlists obtenues. 267 * 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. 269 268 270 269 === 2.2.4 Visualisation de la netlist === 271 270 272 * Utiliser '''XSCH''' pour colorer visualiser le chemin critique :271 * Utiliser '''XSCH''' pour colorer visualiser le chemin critique. 273 272 {{{ 274 273 >xsch -I vst -l <vst_source> … … 280 279 281 280 Pour toutes les vues structurelles obtenues précédemment : 282 * Lancer '''LOON''' 281 * Lancer '''LOON'''. 283 282 {{{ 284 283 > loon <vst_source> <vst_destination> <lax_param> 285 284 }}} 286 * 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 285 * 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. 287 286 288 287 === 2.2.6 Vérification de la netlist === … … 291 290 292 291 À effectuer sur cette netlist : 293 * 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 294 295 * 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''' : 296 292 * 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. 293 294 * 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'''. 297 295 {{{ 298 296 > flatbeh <vst_source> <vbe_dest> … … 301 299 }}} 302 300 303 * Comparer si les deux fichiers sont bien identiques 301 * Comparer si les deux fichiers sont bien identiques. 304 302 305 303 = 3 Compte rendu =