Changes between Version 35 and Version 36 of ToolsCourseTp1


Ignore:
Timestamp:
Sep 25, 2008, 6:44:18 PM (16 years ago)
Author:
cobell
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ToolsCourseTp1

    v35 v36  
    7373      ) ;
    7474end circuit ;
     75
    7576architecture MOORE of circuit is
    7677
    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
    8383
    8484begin
    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;
    121118        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
    141139    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
     144end MOORE;
    146145}}}
    147146
     
    150149    === 1.2.1 Synthèse logique ===
    151150
    152 La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format .vbe).
     151La synthèse logique permet d'obtenir une netlist de portes à partir d'un réseau booléen (format '''.vbe''').
    153152Plusieurs outils sont disponibles.
    154153
     
    177176
    178177La 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).
     178Pour cela, on dispose du simulateur '''ASIMUT''', mais aussi de l’outil '''PROOF''' qui procède à une comparaison formelle de deux descriptions comportementales ('''.vbe''').
    180179L’outil '''FLATBEH''' permet d’obtenir le nouveau fichier comportemental à partir de la netlist.
    181180
     
    186185  == 2.1 Réalisation d'un compteur ==
    187186     
    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.
    189188   * 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.
    191190{{{
    192191> syf -CEV -a <fsm_source>
    193192}}}
    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.
    197196
    198197'''Que se passe-t-il si le reset n'est pas positionné en début de pattern ? Pourquoi ? '''
     
    235234    === 2.2.1 Réalisation de l'automate ===
    236235
    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'''.
    240239{{{
    241240> syf -CEV -a <fsm_source>
    242241}}}
    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.
    245244
    246245'''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 ?
     
    251250    === 2.2.2 Optimisation du réseau booléen ===
    252251
    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'''.
    254253{{{
    255254> boom -V <vbe_source> <vbe_destination>
    256255}}}
    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.
    259258
    260259  === 2.2.3 Mapping sur cellules précaractérisées ===
    261260
    262261Pour 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).
    264263{{{
    265264> boog <vbe_source>
    266265}}}
    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.
    269268
    270269  === 2.2.4 Visualisation de la netlist ===
    271270
    272   * Utiliser '''XSCH''' pour colorer visualiser le chemin critique :
     271  * Utiliser '''XSCH''' pour colorer visualiser le chemin critique.
    273272{{{
    274273>xsch -I vst -l <vst_source>
     
    280279
    281280Pour toutes les vues structurelles obtenues précédemment :
    282   * Lancer '''LOON'''
     281  * Lancer '''LOON'''.
    283282{{{
    284283> loon <vst_source> <vst_destination> <lax_param>
    285284}}}
    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.
    287286
    288287  === 2.2.6 Vérification de la netlist ===
     
    291290
    292291À 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'''.
    297295{{{
    298296> flatbeh <vst_source> <vbe_dest>
     
    301299}}}
    302300
    303   * Comparer si les deux fichiers sont bien identiques
     301  * Comparer si les deux fichiers sont bien identiques.
    304302
    305303= 3 Compte rendu =