Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 109)
@@ -734,4 +734,15 @@
       }
 
+//     log_printf(TRACE,Core,FUNCTION,_(" * front_end_instruction_implemeted"));
+//     for (uint32_t i=0; i<_nb_front_end; ++i)
+//       for (uint32_t j=0; j<_nb_context[i]; ++j)
+//         for (uint32_t k=0; k<NB_INSTRUCTION; ++k)
+//           log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d] = %d - type : %d, operation : %d, size_data : %d, latence :  %d")
+//                      ,i,j,k,_front_end_instruction_implemeted[i][j][k]
+//                      ,instruction_information(k)._type
+//                      ,instruction_information(k)._operation
+//                      ,instruction_size_data(k)
+//                      ,_timing[0][instruction_information(k)._type][instruction_information(k)._operation]._latence);
+
     // Reedit timing
     {
@@ -976,4 +987,7 @@
     for (uint32_t i=0; i<_nb_ooo_engine; ++i)
       {
+        log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);
+
+
         // Init
         for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
@@ -996,62 +1010,70 @@
               if (_table_dispatch[i][j][k])
                 {
-                  pair_dual x = _link_read_unit_with_read_bloc[i];
+                  pair_dual x = _link_read_unit_with_read_bloc[k];
                   _network_table_dispatch [i][j][x.first][x.second] = true;
 
                   // Test functional unit connected with this read bloc
                   for (uint32_t l=0; l<_nb_functionnal_unit; ++l)
-                    // the issue slot [j] is connected with the read bloc [k] and it's connected with the functionnal_unit [l]
-                    if (_link_read_bloc_and_functionnal_unit [k][l])
-                      {
-                        // Scan timing table, test if have an instruction
-                        for (uint32_t m=0; m<_nb_type; ++m)
-                          for (uint32_t n=0; n<_nb_operation; ++n)
-                            if (_timing[l][m][n]._latence > 0)
-                              {
-                                _ooo_engine_table_issue_type [i][j][m] = true;
-                                break;
-                              }
-
-                        for (uint32_t m=0; m<_nb_thread; ++m)
-                          {
-                            list_thread_with_inst_issue [j].push_back(m);
-                            
-                            uint32_t num_front_end   = _link_context_with_thread [m].first;
-                            uint32_t num_rename_bloc = _link_rename_bloc_with_front_end[num_front_end];
-                            uint32_t num_rename_unit = _link_rename_unit_with_rename_bloc [num_rename_bloc].second;
-                            
-                            _list_functionnal_unit_with_rename_unit [i][num_rename_unit].push_back(l);
-                          }
-                      }
-                  
+                    {
+                      // the issue slot [j] is connected with the read bloc [k] and it's connected with the functionnal_unit [l]
+                      if (_link_read_bloc_and_functionnal_unit [k][l])
+                        {
+                          // Scan timing table, test if have an instruction
+                          for (uint32_t m=0; m<_nb_type; ++m)
+                            for (uint32_t n=0; n<_nb_operation; ++n)
+                              if (_timing[l][m][n]._latence > 0)
+                                {
+                                  log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> true"),j,m);
+                                  
+                                  _ooo_engine_table_issue_type [i][j][m] = true;
+                                  break;
+                                }
+                          
+                          for (uint32_t m=0; m<_nb_thread; ++m)
+                            {
+                              list_thread_with_inst_issue [j].push_back(m);
+                              
+                              uint32_t num_front_end   = _link_context_with_thread [m].first;
+                              uint32_t num_rename_bloc = _link_rename_bloc_with_front_end[num_front_end];
+                              uint32_t num_rename_unit = _link_rename_unit_with_rename_bloc [num_rename_bloc].second;
+                              
+                              _list_functionnal_unit_with_rename_unit [i][num_rename_unit].push_back(l);
+                            }
+                        }
+                    }
+
                   // Test load store unit connected with this read bloc
                   for (uint32_t l=0; l<_nb_load_store_unit; ++l)
                     {
-                      _ooo_engine_table_issue_type [i][j][TYPE_MEMORY] = true;
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBS)._type][instruction_information(INSTRUCTION_L_LBS)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBZ)._type][instruction_information(INSTRUCTION_L_LBZ)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LD )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LD )._type][instruction_information(INSTRUCTION_L_LD )._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LHS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LHS)._type][instruction_information(INSTRUCTION_L_LHS)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LHZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LHZ)._type][instruction_information(INSTRUCTION_L_LHZ)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LWS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LWS)._type][instruction_information(INSTRUCTION_L_LWS)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LWZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LWZ)._type][instruction_information(INSTRUCTION_L_LWZ)._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SB )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SB )._type][instruction_information(INSTRUCTION_L_SB )._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SD )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SD )._type][instruction_information(INSTRUCTION_L_SD )._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SH )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SH )._type][instruction_information(INSTRUCTION_L_SH )._operation]._latence > 0);
-//                       _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SW )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SW )._type][instruction_information(INSTRUCTION_L_SW )._operation]._latence > 0);
-
+                      // Test load store unit connected with this read bloc
                       if (_link_read_bloc_and_load_store_unit [k][l])
-                        // the issue slot [j] is connected with the read bloc [k] and it's connected with the load_store_unit [l]
-                        for (uint32_t m=0; m<_nb_thread; ++m)
-                          {
-                            list_thread_with_inst_issue [j].push_back(m);
-
-                            
-                            uint32_t num_front_end   = _link_context_with_thread [m].first;
-                            uint32_t num_rename_bloc = _link_rename_bloc_with_front_end[num_front_end];
-                            uint32_t num_rename_unit = _link_rename_unit_with_rename_bloc [num_rename_bloc].second;
-                            
-                            _list_load_store_unit_with_rename_unit [i][num_rename_unit].push_back(l);
-                          }
+                       {
+                          _ooo_engine_table_issue_type [i][j][TYPE_MEMORY] = true;
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBS)._type][instruction_information(INSTRUCTION_L_LBS)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LBZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LBZ)._type][instruction_information(INSTRUCTION_L_LBZ)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LD )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LD )._type][instruction_information(INSTRUCTION_L_LD )._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LHS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LHS)._type][instruction_information(INSTRUCTION_L_LHS)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LHZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LHZ)._type][instruction_information(INSTRUCTION_L_LHZ)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LWS)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LWS)._type][instruction_information(INSTRUCTION_L_LWS)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_LWZ)._type] |= (_timing[l][instruction_information(INSTRUCTION_L_LWZ)._type][instruction_information(INSTRUCTION_L_LWZ)._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SB )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SB )._type][instruction_information(INSTRUCTION_L_SB )._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SD )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SD )._type][instruction_information(INSTRUCTION_L_SD )._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SH )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SH )._type][instruction_information(INSTRUCTION_L_SH )._operation]._latence > 0);
+//                        _ooo_engine_table_issue_type [i][j][instruction_information(INSTRUCTION_L_SW )._type] |= (_timing[l][instruction_information(INSTRUCTION_L_SW )._type][instruction_information(INSTRUCTION_L_SW )._operation]._latence > 0);
+
+                          // the issue slot [j] is connected with the read bloc [k] and it's connected with the load_store_unit [l]
+                          for (uint32_t m=0; m<_nb_thread; ++m)
+                            {
+                              list_thread_with_inst_issue [j].push_back(m);
+                              
+                              uint32_t num_front_end   = _link_context_with_thread [m].first;
+                              uint32_t num_rename_bloc = _link_rename_bloc_with_front_end[num_front_end];
+                              uint32_t num_rename_unit = _link_rename_unit_with_rename_bloc [num_rename_bloc].second;
+                              
+                              log_printf(TRACE,Core,FUNCTION,_("  * list_load_store_unit_with_rename_unit [%d][%d][%d] = %d"),i,num_rename_unit,_list_load_store_unit_with_rename_unit [i][num_rename_unit].size(),l);
+
+                              _list_load_store_unit_with_rename_unit [i][num_rename_unit].push_back(l);
+                            }
+                        }
                     }
                 }
@@ -1104,9 +1126,21 @@
       }
     
+    log_printf(TRACE,Core,FUNCTION,_("  * network_table_dispatch [nb_ooo_engine][nb_inst_issue][nb_execute_loop][nb_read_unit]"));
+    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
+      for (uint32_t j=0; j<_nb_inst_issue[i]; ++j)
+        for (uint32_t k=0; k<_nb_execute_loop; ++k)
+          for (uint32_t l=0; l<_nb_read_unit[k]; ++l)
+            if (_network_table_dispatch [i][j][k][l] == true)
+              log_printf(TRACE,Core,FUNCTION,_("   Issue Slot [%d][%d] is connected with Read_unit [%d][%d]"),i,j,k,l);
+
     ALLOC2(_ooo_engine_nb_load_store_unit                 ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1]);
 
+    log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_nb_load_store_unit [nb_ooo_engine][nb_rename_unit]"));
     for (uint32_t i=0; i<_nb_ooo_engine; ++i)
       for (uint32_t j=0; j<_nb_rename_unit[i]; ++j)
-        _ooo_engine_nb_load_store_unit [i][j] = _list_load_store_unit_with_rename_unit [i][j].size();
+        {
+          _ooo_engine_nb_load_store_unit [i][j] = _list_load_store_unit_with_rename_unit [i][j].size();
+          log_printf(TRACE,Core,FUNCTION,_("    [%d][%d] = %d"),i,j,_ooo_engine_nb_load_store_unit [i][j]);
+        }
 
     ALLOC3(_ooo_engine_size_store_queue                   ,uint32_t         ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]);
@@ -1390,14 +1424,15 @@
                 // update translation
                 _execute_loop_translate_num_execute_unit [i][j] = num_fu;
-                num_fu ++;
 
                 // timing information
-                _execute_loop_nb_inst_functionnal_unit [i][j] = _nb_inst_functionnal_unit [num_functionnal_unit];
+                _execute_loop_nb_inst_functionnal_unit [i][num_fu] = _nb_inst_functionnal_unit [num_functionnal_unit];
                 
+                log_printf(TRACE,Core,FUNCTION,"  * _execute_loop_nb_inst_functionnal_unit [%d][%d] = _nb_inst_functionnal_unit [%d] = %d",i,num_fu,num_functionnal_unit,_nb_inst_functionnal_unit [num_functionnal_unit]);
+
                 for (uint32_t k=0; k<_nb_type; ++k)
                   for (uint32_t l=0; l<_nb_operation; ++l)
                     {
-                      //log_printf(TRACE,Core,FUNCTION,_("execute_loop_timing [%d][%d][%d][%d] = timing [%d][%d][%d]"),i,j,k,l,num_functionnal_unit,k,l);
-                      _execute_loop_timing [i][j][k][l] = _timing [num_functionnal_unit][k][l];
+//                       log_printf(TRACE,Core,FUNCTION,_("execute_loop_timing [%d][%d][%d][%d] = timing [%d][%d][%d]"),i,num_fu,k,l,num_functionnal_unit,k,l);
+                      _execute_loop_timing [i][num_fu][k][l] = _timing [num_functionnal_unit][k][l];
                     }
                 
@@ -1405,4 +1440,6 @@
 //               for (uint32_t k=0; k<_nb_operation; ++k)
 //                 _execute_loop_timing [i][j][TYPE_MEMORY][k]._delay = _execute_loop_timing [i][j][TYPE_MEMORY][k]._latence = 0;
+
+                num_fu ++;
               }
           }
@@ -1533,5 +1570,5 @@
                 link = _link_read_bloc_and_functionnal_unit [num_read_bloc][num_functionnal_unit];
               
-              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d][all] -> %d"),i,l,j,link);
+              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d][all (%d)] -> %d"),i,l,j,_execute_loop_nb_execute_unit_port [i][j],link);
               
               for (uint32_t k=0; k<_execute_loop_nb_execute_unit_port [i][j]; ++k)
@@ -1562,5 +1599,5 @@
                 link = _link_write_bloc_and_functionnal_unit [num_write_bloc][num_functionnal_unit];
               
-              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][all][%d] -> %d"),i,j,l,link);
+              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][all (%d)][%d] -> %d"),i,j,_execute_loop_nb_execute_unit_port [i][j],l,link);
               
               for (uint32_t k=0; k<_execute_loop_nb_execute_unit_port [i][j]; ++k)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_msg_error.cpp	(revision 108)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_msg_error.cpp	(revision 109)
@@ -144,15 +144,16 @@
       // initialisation
       uint32_t nb_link_execute_unit [_nb_execute_loop][max<uint32_t>(_nb_execute_unit,_nb_execute_loop)];
-      uint32_t nb_functionnal_unit  [_nb_execute_loop];
-      uint32_t nb_load_store_unit   [_nb_execute_loop];
-
-      for (uint32_t i=0; i<_nb_execute_loop; ++i)
-        {
-          nb_functionnal_unit [i] = 0;
-          nb_load_store_unit  [i] = 0;
-          
-          for (uint32_t j=0; j<_nb_execute_unit[i];++j)
-            nb_link_execute_unit [i][j] = 0;
-        }
+//       uint32_t nb_functionnal_unit  [_nb_functionnal_unit];
+//       uint32_t nb_load_store_unit   [_nb_load_store_unit];
+
+//       for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
+//         nb_functionnal_unit [i] = 0;
+      
+//       for (uint32_t i=0; i<_nb_load_store_unit; ++i)
+//         nb_load_store_unit  [i] = 0;
+      
+      for (uint32_t i=0; i<_nb_execute_loop; ++i)
+        for (uint32_t j=0; j<_nb_execute_unit[i];++j)
+          nb_link_execute_unit [i][j] = 0;
 
       // set link
@@ -162,6 +163,8 @@
           uint32_t num_execute_unit = _link_execute_unit_with_functionnal_unit [i].second;
 
+          log_printf(TRACE,Core,FUNCTION,"  * _link_execute_unit_with_functionnal_unit [%d] = %d.%d",i,num_execute_loop,num_execute_unit);
+
           nb_link_execute_unit [num_execute_loop][num_execute_unit] ++;
-          nb_functionnal_unit  [i] ++;
+//           nb_functionnal_unit  [i] ++;
         }
       for (uint32_t i=0; i<_nb_load_store_unit; ++i)
@@ -171,5 +174,5 @@
 
           nb_link_execute_unit [num_execute_loop][num_execute_unit] ++;
-          nb_load_store_unit   [i] ++;
+//           nb_load_store_unit   [i] ++;
         }
 
@@ -184,19 +187,19 @@
           }
 
-      for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
-        {
-          if (nb_functionnal_unit[i] == 0)
-            test.error(toString(_("Functionnal_Unit [%d] is not instanced.\n"),i));
-          if (nb_functionnal_unit[i]  > 1)
-            test.error(toString(_("Functionnal_Unit [%d] is linked with 2 or more time.\n"),i));
-        }
-
-      for (uint32_t i=0; i<_nb_load_store_unit; ++i)
-        {
-          if (nb_load_store_unit[i] == 0)
-            test.error(toString(_("Load_Store_Unit [%d] is not instanced.\n"),i));
-          if (nb_load_store_unit[i]  > 1)
-            test.error(toString(_("Load_Store_Unit [%d] is linked with 2 or more time.\n"),i));
-        }
+//       for (uint32_t i=0; i<_nb_functionnal_unit; ++i)
+//         {
+//           if (nb_functionnal_unit[i] == 0)
+//             test.error(toString(_("Functionnal_Unit [%d] is not instanced.\n"),i));
+//           if (nb_functionnal_unit[i]  > 1)
+//             test.error(toString(_("Functionnal_Unit [%d] is linked with 2 or more time.\n"),i));
+//         }
+
+//       for (uint32_t i=0; i<_nb_load_store_unit; ++i)
+//         {
+//           if (nb_load_store_unit[i] == 0)
+//             test.error(toString(_("Load_Store_Unit [%d] is not instanced.\n"),i));
+//           if (nb_load_store_unit[i]  > 1)
+//             test.error(toString(_("Load_Store_Unit [%d] is linked with 2 or more time.\n"),i));
+//         }
     }
     
