Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/main.cpp	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/main.cpp	(revision 117)
@@ -25,5 +25,6 @@
   err (_(" * ooo_engine_nb_inst_branch_complete    [nb_ooo_engine]                                            (uint32_t         )\n"));
   err (_(" * nb_inst_insert                        [nb_ooo_engine]                                            (uint32_t         )\n"));
-  err (_(" * nb_inst_issue                         [nb_ooo_engine]                                            (uint32_t         )\n"));
+//err (_(" * nb_inst_issue_queue                   [nb_ooo_engine]                                            (uint32_t         )\n"));
+  err (_(" * nb_inst_issue_slot                    [nb_ooo_engine]                                            (uint32_t         )\n"));
   err (_(" * nb_inst_execute                       [nb_ooo_engine][ooo_engine_nb_execute_loop]                (uint32_t         )\n"));
   err (_(" * nb_read_unit                          [nb_execute_loop]                                          (uint32_t         )\n"));
@@ -40,4 +41,17 @@
   err (_(" * dispatch_load_balancing                                                                          (Tload_balancing_t)\n"));
   err (_(" * table_dispatch                        [nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit] (bool             )\n"));
+//   err (_(" * table_issue_type                      [execute_loop][nb_read_unit][MAX_TYPE]                      (bool             )\n"));
+//   err (_("   * TYPE_ALU    \n"));
+//   err (_("   * TYPE_SHIFT  \n"));
+//   err (_("   * TYPE_MOVE   \n"));
+//   err (_("   * TYPE_TEST   \n"));
+//   err (_("   * TYPE_MUL    \n"));
+//   err (_("   * TYPE_DIV    \n"));
+//   err (_("   * TYPE_EXTEND \n"));
+//   err (_("   * TYPE_FIND   \n"));
+//   err (_("   * TYPE_SPECIAL\n"));
+//   err (_("   * TYPE_CUSTOM \n"));
+//   err (_("   * TYPE_BRANCH \n"));
+//   err (_("   * TYPE_MEMORY \n"));
   err (_(" * translate_ooo_engine_num_front_end    [nb_ooo_engine][ooo_engine_nb_front_end]                   (uint32_t         )\n"));
   err (_(" * translate_ooo_engine_num_execute_loop [nb_ooo_engine][ooo_engine_nb_execute_loop]                (uint32_t         )\n"));
@@ -72,5 +86,5 @@
   uint32_t              * ooo_engine_nb_inst_branch_complete   ;//[nb_ooo_engine]
   uint32_t              * nb_inst_insert                       ;//[nb_ooo_engine]
-  uint32_t              * nb_inst_issue                        ;//[nb_ooo_engine]
+  uint32_t              * nb_inst_issue_slot                   ;//[nb_ooo_engine]
   uint32_t             ** nb_inst_execute                      ;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
   uint32_t              * nb_read_unit                         ;//[nb_execute_loop]
@@ -86,5 +100,6 @@
   Tpriority_t             dispatch_priority                    ;
   Tload_balancing_t       dispatch_load_balancing              ;
-  bool               **** table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
+  bool               **** table_dispatch                       ;//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
+  bool                *** table_issue_type                     ;//                                   [execute_loop][nb_read_unit][MAX_TYPE]
   uint32_t             ** translate_ooo_engine_num_front_end   ;//[nb_ooo_engine][ooo_engine_nb_front_end]
   uint32_t             ** translate_ooo_engine_num_execute_loop;//[nb_ooo_engine][ooo_engine_nb_execute_loop]
@@ -119,5 +134,5 @@
   SELFTEST1(ooo_engine_nb_inst_branch_complete   ,uint32_t         ,argv,x,nb_ooo_engine);
   SELFTEST1(nb_inst_insert                       ,uint32_t         ,argv,x,nb_ooo_engine);
-  SELFTEST1(nb_inst_issue                        ,uint32_t         ,argv,x,nb_ooo_engine);
+  SELFTEST1(nb_inst_issue_slot                   ,uint32_t         ,argv,x,nb_ooo_engine);
 
   uint32_t sum_ooo_engine_nb_front_end    = 0;
@@ -129,5 +144,5 @@
       sum_ooo_engine_nb_front_end    += ooo_engine_nb_front_end    [i];
       sum_ooo_engine_nb_execute_loop += ooo_engine_nb_execute_loop [i];
-      sum_nb_inst_issue              += nb_inst_issue              [i];
+      sum_nb_inst_issue              += nb_inst_issue_slot         [i];
     }
 
@@ -177,5 +192,31 @@
   SELFTEST0(dispatch_load_balancing              ,Tload_balancing_t,argv,x);
 
-  SELFTEST4(table_dispatch                       ,bool             ,argv,x,nb_ooo_engine,nb_inst_issue[it1],nb_execute_loop,nb_read_unit[it3]);
+  SELFTEST4(table_dispatch                       ,bool             ,argv,x,nb_ooo_engine,nb_inst_issue_slot[it1],nb_execute_loop,nb_read_unit[it3]);
+
+  ALLOC3   (table_issue_type                     ,bool                                                     ,nb_execute_loop,nb_read_unit[it1],MAX_TYPE);
+
+  for (uint32_t i=0; i<nb_execute_loop; ++i)
+    for (uint32_t j=0; j<nb_read_unit[i]; ++j)
+      for (uint32_t k=0; k<MAX_TYPE; ++k)
+//         table_issue_type [i][j][k] = false;
+        table_issue_type [i][j][k] = true;
+
+//   for (uint32_t i=0; i<nb_execute_loop; ++i)
+//     for (uint32_t j=0; j<nb_read_unit[i]; ++j)
+//       {
+//         table_issue_type [i][j][TYPE_ALU    ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_TEST   ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_MUL    ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_DIV    ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_FIND   ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
+//         table_issue_type [i][j][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
+//       }
+
   SELFTEST2(translate_ooo_engine_num_front_end   ,uint32_t         ,argv,x,nb_ooo_engine,ooo_engine_nb_front_end[it1]);
   SELFTEST2(translate_ooo_engine_num_execute_loop,uint32_t         ,argv,x,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
@@ -198,5 +239,6 @@
          ooo_engine_nb_inst_branch_complete   ,//[nb_ooo_engine]
          nb_inst_insert                       ,//[nb_ooo_engine]
-         nb_inst_issue                        ,//[nb_ooo_engine]
+         nb_inst_issue_slot                   ,//[nb_ooo_engine]
+         nb_inst_issue_slot                   ,//[nb_ooo_engine]
          nb_inst_execute                      ,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
          nb_read_unit                         ,//[nb_execute_loop]
@@ -212,5 +254,6 @@
          dispatch_priority                    ,
          dispatch_load_balancing              ,
-         table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue][execute_loop][nb_read_unit]
+         table_dispatch                       ,//[nb_ooo_engine][nb_inst_issue_slot][execute_loop][nb_read_unit]
+         table_issue_type                     ,//                                   [execute_loop][nb_read_unit][MAX_TYPE]
          translate_ooo_engine_num_front_end   ,//[nb_ooo_engine][ooo_engine_nb_front_end]
          translate_ooo_engine_num_execute_loop,//[nb_ooo_engine][ooo_engine_nb_execute_loop]
@@ -245,9 +288,10 @@
   DELETE2(translate_ooo_engine_num_execute_loop,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
   DELETE2(translate_ooo_engine_num_front_end   ,nb_ooo_engine,ooo_engine_nb_front_end[it1]);
-  DELETE4(table_dispatch                       ,nb_ooo_engine,nb_inst_issue[it1],nb_execute_loop,nb_read_unit[it2]);
+  DELETE3(table_issue_type                                                           ,nb_execute_loop,nb_read_unit[it1],MAX_TYPE);
+  DELETE4(table_dispatch                       ,nb_ooo_engine,nb_inst_issue_slot[it1],nb_execute_loop,nb_read_unit[it2]);
   DELETE1(nb_write_unit                        ,nb_execute_loop);
   DELETE1(nb_read_unit                         ,nb_execute_loop);
   DELETE2(nb_inst_execute                      ,nb_ooo_engine,ooo_engine_nb_execute_loop[it1]);
-  DELETE1(nb_inst_issue                        ,nb_ooo_engine);
+  DELETE1(nb_inst_issue_slot                   ,nb_ooo_engine);
   DELETE1(ooo_engine_nb_inst_branch_complete   ,nb_ooo_engine);
   DELETE1(front_end_nb_inst_branch_complete    ,nb_front_end);
