Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/SelfTest/src/test.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/SelfTest/src/test.cpp	(revision 120)
@@ -36,5 +36,5 @@
   cout << "------------------------------------------------------" << endl;
 
-  Instance * instance1 = new Instance ("../../../Files/Instance_min.cfg",
+  Instance * instance1 = new Instance ("../../../Files/Instance_x1_w1_0.cfg",
                                    generator1,
                                    _get_custom_information
@@ -49,5 +49,5 @@
   Configuration * configuration1 = new Configuration("../../../Files/Morpheo.sim",
                                            "../../../Files/Morpheo.gen",
-                                           "../../../Files/Instance_min.cfg",
+                                           "../../../Files/Instance_x1_w1_0.cfg",
                                            _get_custom_information);
 
@@ -59,5 +59,5 @@
     cout << "------------------------------------------------------" << endl;
 
-    Instance * instance = new Instance ("../../../Files/Instance_debug.cfg",
+    Instance * instance = new Instance ("../../../Files/Instance_x2_w1_6.cfg",
                                         generator1,
                                         _get_custom_information
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration.cpp	(revision 120)
@@ -46,5 +46,6 @@
                 fromString<uint32_t>         (_simulator->getParam("debug_idle_time")));
 
-    log_init(fromString<bool>(_simulator->getParam("debug_have_log_file")),
+    log_init(fromString<bool>(_simulator->getParam("debug_log_file_generate")),
+             fromString<bool>(_simulator->getParam("debug_log_file_with_pid")),
              MORPHEO_LOG);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Core_Glue.h	(revision 120)
@@ -209,5 +209,4 @@
 
     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-  private   : uint32_t                        reg_PRIORITY ;
 
     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/include/Parameters.h	(revision 120)
@@ -62,4 +62,5 @@
 
   public : uint32_t             ** _translate_num_execute_loop_to_ooo_engine_execute_loop_id;//[nb_execute_loop][execute_loop_nb_ooo_engine]
+  public : Tcontext_t           ** _translate_num_ooo_engine_to_execute_loop_ooo_engine_id  ;//[nb_ooo_engine][nb_execute_loop]
 
   public : uint32_t             ** _execute_loop_nb_inst_insert                             ;//[nb_execute_loop][execute_loop_nb_ooo_engine]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue.cpp	(revision 120)
@@ -77,6 +77,8 @@
           for (uint32_t i=0; i<_param->_nb_front_end; ++i)
             for (uint32_t j=0; j<_param->_nb_inst_decod [i]; ++j)
-              PORT_WRITE(out_RENAME_FRONT_END_ID [i][j],_param->_translate_num_front_end_to_ooo_engine_front_end_id[i]);
-        
+              {
+                PORT_WRITE(out_RENAME_FRONT_END_ID [i][j],_param->_translate_num_front_end_to_ooo_engine_front_end_id[i]);
+              }
+
 	log_printf(INFO,Core_Glue,FUNCTION,_("<%s> : Method - transition"),_name.c_str());
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp	(revision 120)
@@ -259,23 +259,12 @@
     _priority_ooo_engine = new generic::priority::Priority (_name+"_priority_ooo_engine",
                                                             _param->_dispatch_priority      ,
-                                                            _param->_dispatch_load_balancing,
+//                                                          _param->_dispatch_load_balancing,
                                                             _param->_nb_ooo_engine          ,
-                                                            _param->_nb_inst_issue_slot     ,
+//                                                          _param->_nb_inst_issue_slot     ,
                                                             _param->_nb_ooo_engine          
                                                             );
 
-//  _priority_ooo_engine  = new generic::priority::Priority * [_param->_nb_execute_loop];
     _priority_read_unit   = new generic::priority::Priority * [_param->_nb_execute_loop];
-
     for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
-      {
-//         _priority_ooo_engine [i] = new generic::priority::Priority (_name+"_priority_ooo_engine_"+toString(i),
-//                                                                     _param->_dispatch_priority      ,
-//                                                                     _param->_dispatch_load_balancing,
-//                                                                     _param->_execute_loop_nb_ooo_engine      [i],
-//                                                                     _param->_execute_loop_nb_inst_issue_slot [i],
-//                                                                     _param->_execute_loop_nb_ooo_engine      [i]
-//                                                                     );
-
         _priority_read_unit  [i] = new generic::priority::Priority (_name+"_priority_read_unit_"+toString(i),
                                                                     // PRIORITY_STATIC,
@@ -284,7 +273,4 @@
                                                                     _param->_nb_read_unit [i]
                                                                     );
-      }
-
-
 
 #ifdef POSITION
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_deallocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_deallocation.cpp	(revision 120)
@@ -159,9 +159,5 @@
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
     for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
-      {
-//      delete _priority_ooo_engine [i];
-        delete _priority_read_unit  [i];
-      }
-//  delete [] _priority_ooo_engine;
+    delete    _priority_read_unit  [i];
     delete [] _priority_read_unit ;
     delete    _priority_ooo_engine;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_genMealy_issue.cpp	(revision 120)
@@ -119,105 +119,118 @@
 //       }
 
-    for (uint32_t num_ooo_engine=0; num_ooo_engine<_param->_nb_ooo_engine; ++num_ooo_engine)
-      for (uint32_t num_inst_issue_queue=0; num_inst_issue_queue<_param->_nb_inst_issue_queue[num_ooo_engine]; ++num_inst_issue_queue)
-        {
-          bool find = false;
-
-          Tcontrol_t val  = PORT_READ(in_ISSUE_OOO_ENGINE_VAL  [num_ooo_engine][num_inst_issue_queue]);
-          Ttype_t    type = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]);
-
-          log_printf(TRACE,Core_Glue,FUNCTION,"  * num_ooo_engine                : %d",num_ooo_engine      );
-          log_printf(TRACE,Core_Glue,FUNCTION,"  * num_inst_issue_queue          : %d",num_inst_issue_queue);
-          log_printf(TRACE,Core_Glue,FUNCTION,"    * val                         : %d",val);
-          log_printf(TRACE,Core_Glue,FUNCTION,"    * type                        : %d",type);
-
-          if (val)
-            for (uint32_t num_inst_issue_slot=0; num_inst_issue_slot<_param->_nb_inst_issue_slot[num_ooo_engine]; ++num_inst_issue_slot)
+//     for (uint32_t num_ooo_engine=0; num_ooo_engine<_param->_nb_ooo_engine; ++num_ooo_engine)
+
+    std::list<generic::priority::select_t> * select_ooo_engine = _priority_ooo_engine->select();
+    for (std::list<generic::priority::select_t>::iterator it_ooo_engine=select_ooo_engine->begin();
+         it_ooo_engine!=select_ooo_engine->end();
+         ++it_ooo_engine)
+      {
+        uint32_t num_ooo_engine      = it_ooo_engine->grp;
+
+        for (uint32_t num_inst_issue_queue=0; num_inst_issue_queue<_param->_nb_inst_issue_queue[num_ooo_engine]; ++num_inst_issue_queue)
+          {
+            bool find = false;
+            
+            Tcontrol_t val  = PORT_READ(in_ISSUE_OOO_ENGINE_VAL  [num_ooo_engine][num_inst_issue_queue]);
+            Ttype_t    type = PORT_READ(in_ISSUE_OOO_ENGINE_TYPE [num_ooo_engine][num_inst_issue_queue]);
+            
+            log_printf(TRACE,Core_Glue,FUNCTION,"  * num_ooo_engine                : %d",num_ooo_engine      );
+            log_printf(TRACE,Core_Glue,FUNCTION,"  * num_inst_issue_queue          : %d",num_inst_issue_queue);
+            log_printf(TRACE,Core_Glue,FUNCTION,"    * val                         : %d",val);
+            log_printf(TRACE,Core_Glue,FUNCTION,"    * type                        : %d",type);
+            
+            if (val)
+              for (uint32_t num_inst_issue_slot=0; num_inst_issue_slot<_param->_nb_inst_issue_slot[num_ooo_engine]; ++num_inst_issue_slot)
+                {
+                  log_printf(TRACE,Core_Glue,FUNCTION,"    * num_inst_issue_slot         : %d",num_inst_issue_slot);
+                  
+                  // scan all read_unit
+                  
+                  if (SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot])
+                    for (uint32_t num_execute_loop=0; num_execute_loop<_param->_nb_execute_loop; ++num_execute_loop)
+                      {
+                        std::list<generic::priority::select_t> * select_read_unit = _priority_read_unit[num_execute_loop]->select();
+                        for (std::list<generic::priority::select_t>::iterator it_read_unit=select_read_unit->begin();
+                             it_read_unit!=select_read_unit->end();
+                             ++it_read_unit)
+                          {
+                            // get the most priotary ...
+                            uint32_t num_read_unit = it_read_unit->grp;
+                            Tcontrol_t ack = READ_UNIT_ENABLE [num_execute_loop][num_read_unit];
+                            
+                            log_printf(TRACE,Core_Glue,FUNCTION,"      * num_execute_loop          : %d",num_execute_loop);
+                            log_printf(TRACE,Core_Glue,FUNCTION,"      * num_read_unit             : %d",num_read_unit   );
+                            log_printf(TRACE,Core_Glue,FUNCTION,"        * read_unit_enable        : %d",ack             );
+                            
+                            // test if :
+                            //  * read_unit can accept an instruction (valid and no previous instruction)
+                            //  * slot can issue an instruction at this read_unit
+                            //  * read_unit can accept this type
+                            if (ack and
+                                _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][num_execute_loop][num_read_unit] and
+                                _param->_table_issue_type [num_execute_loop][num_read_unit][type])
+                              {
+                                log_printf(TRACE,Core_Glue,FUNCTION,"  * find !!!");
+                                
+                                // find !
+                                // Transaction
+                                READ_UNIT_ENABLE       [num_execute_loop][num_read_unit] = false; // now, this read_unit is busy
+                                ISSUE_EXECUTE_LOOP_VAL [num_execute_loop][num_read_unit] = 1; // = val
+                                ISSUE_OOO_ENGINE_ACK   [num_ooo_engine][num_inst_issue_queue] = 1; // = ack
+                                SLOT_ENABLE            [num_ooo_engine][num_inst_issue_slot]  = false; // now this slot is used
+                                      
+                                if (_param->_have_port_context_id)
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID            [num_ooo_engine][num_inst_issue_queue]));
+			        if (_param->_have_port_front_end_id)
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID          [num_ooo_engine][num_inst_issue_queue]));
+			        if (_param->_have_port_ooo_engine_id)
+                                  {
+                                Tcontext_t ooo_engine_id = _param->_translate_num_ooo_engine_to_execute_loop_ooo_engine_id [num_ooo_engine][num_execute_loop];
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         [num_execute_loop][num_read_unit],ooo_engine_id);
+                                  }
+			        if (_param->_have_port_rob_ptr)
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID             [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION             [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE                  [num_execute_loop][num_read_unit],type);
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue]));
+			        if (_param->_have_port_load_queue_ptr)
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT              [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA               [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA            [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB               [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB            [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC               [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC            [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD              [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD            [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE              [num_ooo_engine][num_inst_issue_queue]));
+			        PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE            [num_ooo_engine][num_inst_issue_queue]));
+                              
+                                
+                                find = true;
+                                break;
+                              }
+                            //if (find)
+                            //  break;
+                          }
+                        if (find)
+                          break;
+                      }
+                  if (find)
+                    break;
+                }
+            
+            if (_param->_issue_queue_in_order [num_ooo_engine] and
+                not find and 
+                (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine]))
               {
-                log_printf(TRACE,Core_Glue,FUNCTION,"    * num_inst_issue_slot         : %d",num_inst_issue_slot);
+                log_printf(TRACE,Core_Glue,FUNCTION,"  * stop scan !!!");
                 
-                // scan all read_unit
-                
-                if (SLOT_ENABLE [num_ooo_engine][num_inst_issue_slot])
-                  for (uint32_t num_execute_loop=0; num_execute_loop<_param->_nb_execute_loop; ++num_execute_loop)
-                    {
-                      for (uint32_t _num_read_unit=0; _num_read_unit<_param->_nb_read_unit[num_execute_loop]; ++_num_read_unit)
-                        {
-                          uint32_t num_read_unit = (_num_read_unit+reg_PRIORITY)%_param->_nb_read_unit[num_execute_loop];
-                          Tcontrol_t ack = READ_UNIT_ENABLE [num_execute_loop][num_read_unit];
-                          
-                          log_printf(TRACE,Core_Glue,FUNCTION,"      * num_execute_loop          : %d",num_execute_loop);
-                          log_printf(TRACE,Core_Glue,FUNCTION,"      * num_read_unit             : %d",num_read_unit   );
-                          log_printf(TRACE,Core_Glue,FUNCTION,"        * read_unit_enable        : %d",ack             );
-                          
-                          // test if :
-                          //  * read_unit can accept an instruction (valid and no previous instruction)
-                          //  * slot can issue an instruction at this read_unit
-                          //  * read_unit can accept this type
-                          if (ack and
-                              _param->_table_dispatch [num_ooo_engine][num_inst_issue_slot][num_execute_loop][num_read_unit] and
-                              _param->_table_issue_type [num_execute_loop][num_read_unit][type])
-                            {
-                              log_printf(TRACE,Core_Glue,FUNCTION,"  * find !!!");
-
-                              // find !
-                              // Transaction
-                              READ_UNIT_ENABLE       [num_execute_loop][num_read_unit] = false; // now, this read_unit is busy
-                              ISSUE_EXECUTE_LOOP_VAL [num_execute_loop][num_read_unit] = 1; // = val
-                              ISSUE_OOO_ENGINE_ACK   [num_ooo_engine][num_inst_issue_queue] = 1; // = ack
-                              SLOT_ENABLE            [num_ooo_engine][num_inst_issue_slot]  = false; // now this slot is used
-                                      
-			      if (_param->_have_port_context_id)
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_CONTEXT_ID            [num_ooo_engine][num_inst_issue_queue]));
-			      if (_param->_have_port_front_end_id)
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_FRONT_END_ID          [num_ooo_engine][num_inst_issue_queue]));
-			      if (_param->_have_port_ooo_engine_id)
-                                {
-                              Tcontext_t ooo_engine_id = 0;
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID         [num_execute_loop][num_read_unit],ooo_engine_id);
-                                }
-			      if (_param->_have_port_rob_ptr)
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_PACKET_ID             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_PACKET_ID             [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_OPERATION             [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_OPERATION             [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_TYPE                  [num_execute_loop][num_read_unit],type);
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [num_ooo_engine][num_inst_issue_queue]));
-			      if (_param->_have_port_load_queue_ptr)
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE  [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT          [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_IMMEDIAT              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_IMMEDIAT              [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RA               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RA               [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RA            [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RB               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RB               [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RB            [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_READ_RC               [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_READ_RC               [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RC            [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RD              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RD              [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RD            [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_WRITE_RE              [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_WRITE_RE              [num_ooo_engine][num_inst_issue_queue]));
-			      PORT_WRITE(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE            [num_execute_loop][num_read_unit],PORT_READ(in_ISSUE_OOO_ENGINE_NUM_REG_RE            [num_ooo_engine][num_inst_issue_queue]));
-                              
-                              
-                              find = true;
-                              break;
-                            }
-                          //if (find)
-                          //  break;
-                        }
-                      if (find)
-                        break;
-                    }
-                if (find)
-                  break;
+                break; // stop scan
               }
-          
-          if (_param->_issue_queue_in_order [num_ooo_engine] and
-              not find and 
-              (num_inst_issue_queue >= _param->_nb_inst_reexecute [num_ooo_engine]))
-            {
-              log_printf(TRACE,Core_Glue,FUNCTION,"  * stop scan !!!");
-              
-              break; // stop scan
-            }
-        }
+          }
+      }
 
     // Write output
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_transition.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_transition.cpp	(revision 120)
@@ -24,11 +24,6 @@
       {
         for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
-          {
-//          _priority_ooo_engine [i]->reset();
-            _priority_read_unit  [i]->reset();
-          }
+          _priority_read_unit  [i]->reset();
         _priority_ooo_engine->reset();
-
-        reg_PRIORITY = 0;
       }
     else
@@ -36,11 +31,6 @@
 	// next priority
         for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
-          {
-//          _priority_ooo_engine [i]->transition();
-            _priority_read_unit  [i]->transition();
-          }
+          _priority_read_unit  [i]->transition();
         _priority_ooo_engine->transition();
-
-        reg_PRIORITY ++;
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters.cpp	(revision 120)
@@ -95,9 +95,18 @@
         }
 
-    ALLOC2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id, uint32_t, _nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
+    ALLOC2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id,uint32_t  ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
+    ALLOC2(_translate_num_ooo_engine_to_execute_loop_ooo_engine_id  ,Tcontext_t,_nb_ooo_engine,_nb_execute_loop);
+
+    for (uint32_t i=0; i<_nb_ooo_engine; ++i)
+      for (uint32_t j=0; j<_nb_execute_loop; ++j)
+        _translate_num_ooo_engine_to_execute_loop_ooo_engine_id [i][j] = _nb_ooo_engine;
+
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       for (uint32_t j=0; j<_execute_loop_nb_ooo_engine[i]; ++j)
         {
           uint32_t num_ooo_engine  = _translate_execute_loop_num_ooo_engine [i][j];
+
+          _translate_num_ooo_engine_to_execute_loop_ooo_engine_id [num_ooo_engine][i] = j;
+
           uint32_t execute_loop_id;
           for (execute_loop_id = 0; execute_loop_id<_ooo_engine_nb_execute_loop[num_ooo_engine]; ++execute_loop_id)
@@ -179,9 +188,10 @@
     log_begin(Core_Glue,FUNCTION);
 
-    DELETE2(_execute_loop_nb_inst_issue_slot,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
-    DELETE2(_execute_loop_nb_inst_insert,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
-    DELETE2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id, _nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
-    DELETE1(_translate_num_front_end_to_ooo_engine_front_end_id,_nb_front_end);
-    DELETE1(_link_ooo_engine_with_front_end,_nb_front_end);
+    DELETE2(_execute_loop_nb_inst_issue_slot                         ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
+    DELETE2(_execute_loop_nb_inst_insert                             ,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
+    DELETE2(_translate_num_ooo_engine_to_execute_loop_ooo_engine_id  ,_nb_ooo_engine,_nb_execute_loop);
+    DELETE2(_translate_num_execute_loop_to_ooo_engine_execute_loop_id,_nb_execute_loop,_execute_loop_nb_ooo_engine[it1]);
+    DELETE1(_translate_num_front_end_to_ooo_engine_front_end_id      ,_nb_front_end);
+    DELETE1(_link_ooo_engine_with_front_end                          ,_nb_front_end);
 
     log_end(Core_Glue,FUNCTION);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters_msg_error.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Parameters_msg_error.cpp	(revision 120)
@@ -57,4 +57,8 @@
             test.error(toString(_("ooo_engine[%d][%d].nb_inst_execute must be equal at execute_loop[%d].nb_write_unit.\n"),num_ooo_engine,k,i));
         }
+
+    if (_dispatch_load_balancing != LOAD_BALANCING_MAXIMUM_FOR_PRIORITY)
+      test.error(toString(_("distpatch load_balancing scheme \"%s\" is not yet supported.\n"),toString(_dispatch_load_balancing).c_str()));
+
     log_end(Core_Glue,FUNCTION);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h	(revision 120)
@@ -40,4 +40,5 @@
   public : bool    *** _table_routing                ; //[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
   public : bool     ** _table_thread                 ; //[nb_write_unit][nb_thread]
+  public : bool      * _num_thread_valid             ; //[nb_thread]
 
   public : uint32_t    _max_nb_execute_unit_port     ;
@@ -71,4 +72,5 @@
 			bool    *** table_routing                ,
 			bool     ** table_thread                 ,
+                        bool      * num_thread_valid             , //[nb_thread]
                         bool        is_toplevel=false
                         );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp	(revision 120)
@@ -33,4 +33,5 @@
 			  bool    *** table_routing                ,//[nb_execute_unit][nb_execute_unit_port][nb_write_unit]
 			  bool     ** table_thread                 ,//[nb_write_unit][nb_thread]                            
+                          bool      * num_thread_valid             ,//[nb_thread]
                           bool        is_toplevel                  )
   {
@@ -49,4 +50,5 @@
     _table_routing           = table_routing       ;
     _table_thread            = table_thread        ;
+    _num_thread_valid        = num_thread_valid    ;
 
     _max_nb_execute_unit_port= max<uint32_t>(_nb_execute_unit_port, _nb_execute_unit);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h	(revision 120)
@@ -44,4 +44,5 @@
   public : bool     ** _table_execute_type     ; //[nb_execute_unit][nb_type]
   public : bool     ** _table_execute_thread   ; //[nb_execute_unit][nb_thread]
+  public : bool      * _num_thread_valid       ; //[nb_thread]
 
   public : uint32_t    _max_nb_read_unit_port  ;
@@ -83,4 +84,5 @@
 			bool     ** table_execute_type     ,
 			bool     ** table_execute_thread   ,
+                        bool      * num_thread_valid       ,
                         bool        is_toplevel=false      );
 //   public : Parameters  (Parameters & param) ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 120)
@@ -38,4 +38,5 @@
 			  bool     ** table_execute_type     ,
 			  bool     ** table_execute_thread   ,
+                          bool      * num_thread_valid       ,
                           bool        is_toplevel            )
   {
@@ -56,4 +57,5 @@
     _table_execute_type      = table_execute_type  ;
     _table_execute_thread    = table_execute_thread;
+    _num_thread_valid        = num_thread_valid    ;
 
     log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * table_routing [nb_read_unit][nb_execute_unit][nb_execute_unit_port]");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 120)
@@ -41,5 +41,4 @@
     // TYPE_BRANCH  |     X     |            |            |
     // TYPE_MEMORY  |           |            |     X      |
-    
     bool type_present [_nb_thread][_nb_type];
     for (uint32_t i=0; i<_nb_thread; i++)
@@ -49,5 +48,6 @@
     for (uint32_t i=0; i<_nb_execute_unit; i++)
       for (uint32_t j=0; j<_nb_thread; j++)
-	if (_table_execute_thread [i][j] == true)
+	if (_num_thread_valid [j] and
+            (_table_execute_thread [i][j] == true))
 	  // this execute_unit execute this thread !
 	  for (Ttype_t k=0; k<_nb_type; k++)
@@ -66,5 +66,6 @@
       if (not is_type_valid(j))
 	for (uint32_t i=0; i<_nb_thread; i++)
-	  if (type_present [i][j])
+	  if (_num_thread_valid [j] and
+              (type_present [i][j]))
 	    test.error(toString(_("The thread '%d' can execute the type's operation '%s' but this type is invalid.\n"),i,toString(j).c_str()));
 
@@ -72,5 +73,6 @@
       if (is_type_valid(j) and not is_type_optionnal(j))
 	for (uint32_t i=0; i<_nb_thread; i++)
-	  if (not type_present [i][j])
+	  if (_num_thread_valid [i] and
+              (not type_present [i][j]))
 	    test.error(toString(_("The thread '%d' can't access at the execute_unit to execute the type's operation '%s' (and this type is not optional !).\n"),i,toString(j).c_str()));
 	    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/include/Parameters.h	(revision 120)
@@ -103,4 +103,6 @@
   public : uint32_t            * _translate_num_execute_unit                    ; //[nb_execute_unit]
 
+  public : bool                * _num_thread_valid                              ; //[nb_thread]
+
   public : uint32_t              _nb_execute_unit              ;
   public : uint32_t            * _nb_execute_unit_port         ;
@@ -198,4 +200,6 @@
                         uint32_t            * translate_num_execute_unit                    ,//[nb_execute_unit]
 
+                        bool                * num_thread_valid                              ,//[nb_thread]
+
                         bool                  is_toplevel=false
                         );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Parameters.cpp	(revision 120)
@@ -73,4 +73,6 @@
                           bool                * is_load_store_unit                        ,//[nb_execute_unit]
                           uint32_t            * translate_num_execute_unit                ,//[nb_execute_unit]
+
+                          bool                * num_thread_valid                          ,//[nb_thread]
                           
                           bool                  is_toplevel
@@ -133,4 +135,6 @@
     _translate_num_execute_unit                 = translate_num_execute_unit;
 
+    _num_thread_valid                           = num_thread_valid;
+
     _nb_execute_unit                            = _nb_functionnal_unit + _nb_load_store_unit;
 
@@ -481,5 +485,6 @@
        _read_unit_to_execution_unit_table_routing     ,
        _read_unit_to_execution_unit_table_execute_type,
-       _read_unit_to_execution_unit_table_thread      );
+       _read_unit_to_execution_unit_table_thread      ,
+       _num_thread_valid);
     
     log_printf(TRACE,Execute_loop,FUNCTION,"Parameters : execution_unit_to_write_unit");
@@ -499,5 +504,6 @@
        _execution_unit_to_write_unit_priority     ,
        _execution_unit_to_write_unit_table_routing,
-       _execution_unit_to_write_unit_table_thread );
+       _execution_unit_to_write_unit_table_thread ,
+       _num_thread_valid);
       
     log_printf(TRACE,Execute_loop,FUNCTION,"Parameters : register_unit");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h	(revision 120)
@@ -52,4 +52,13 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
+  private   : counter_t                     ** _stat_nb_cycle_state_ok                     ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_excep               ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_miss_branch         ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_miss_load           ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_miss_load_and_branch; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_msync               ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_psync               ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_csync               ; //[nb_context]
+  private   : counter_t                     ** _stat_nb_cycle_state_ko_spr                 ; //[nb_context]
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Types.h	(revision 120)
@@ -29,6 +29,4 @@
       CONTEXT_STATE_KO_EXCEP_ADDR                      , // update address manager
       CONTEXT_STATE_KO_EXCEP_SPR                       , // update spr (epc, esr, sr[DSX])
-//       CONTEXT_STATE_KO_MISS_BRANCH_FAST_ADDR           , // update address manager
-//       CONTEXT_STATE_KO_MISS_BRANCH_FAST_WAIT_UPDATE    , // branch is complete, wait update by update_prediction_table
       CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE         , // branch is complete, wait update by update_prediction_table
       CONTEXT_STATE_KO_MISS_BRANCH_ADDR                , // update address manager
@@ -68,6 +66,4 @@
       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_ADDR                       : return "context_state_ko_excep_addr"                      ; break;
       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_EXCEP_SPR                        : return "context_state_ko_excep_spr"                       ; break;
-//       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_FAST_WAIT_UPDATE     : return "context_state_ko_miss_branch_fast_wait_update"    ; break;
-//       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_FAST_ADDR            : return "context_state_ko_miss_branch_fast_addr"           ; break;
       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE          : return "context_state_ko_miss_branch_wait_update"         ; break;
       case morpheo::behavioural::core::multi_front_end::front_end::context_state::CONTEXT_STATE_KO_MISS_BRANCH_ADDR                 : return "context_state_ko_miss_branch_addr"                ; break;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_allocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_allocation.cpp	(revision 120)
@@ -8,4 +8,5 @@
 
 #include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h"
+#include "Behavioural/include/Allocation.h"
 
 namespace morpheo {
@@ -26,5 +27,39 @@
 		      "Context_State",
 		      param_statistics);
-    
+
+    ALLOC1(_stat_nb_cycle_state_ok                     ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_excep               ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_miss_branch         ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_miss_load           ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_miss_load_and_branch,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_msync               ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_psync               ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_csync               ,counter_t *,_param->_nb_context);
+    ALLOC1(_stat_nb_cycle_state_ko_spr                 ,counter_t *,_param->_nb_context);
+
+    for (uint32_t i=0; i<_param->_nb_context; ++i)
+      {
+        _stat_nb_cycle_state_ok                      [i] = _stat->create_counter("nb_cycle_state_ok_"                     +toString(i),"",toString(_("Number of cycle in state ok                      (context %d)"),i));
+        _stat_nb_cycle_state_ko_excep                [i] = _stat->create_counter("nb_cycle_state_ko_excep_"               +toString(i),"",toString(_("Number of cycle in state ko_excep                (context %d)"),i));
+        _stat_nb_cycle_state_ko_miss_branch          [i] = _stat->create_counter("nb_cycle_state_ko_miss_branch_"         +toString(i),"",toString(_("Number of cycle in state ko_miss_branch          (context %d)"),i));
+        _stat_nb_cycle_state_ko_miss_load            [i] = _stat->create_counter("nb_cycle_state_ko_miss_load_"           +toString(i),"",toString(_("Number of cycle in state ko_miss_load            (context %d)"),i));
+        _stat_nb_cycle_state_ko_miss_load_and_branch [i] = _stat->create_counter("nb_cycle_state_ko_miss_load_and_branch_"+toString(i),"",toString(_("Number of cycle in state ko_miss_load_and_branch (context %d)"),i));
+        _stat_nb_cycle_state_ko_msync                [i] = _stat->create_counter("nb_cycle_state_ko_msync_"               +toString(i),"",toString(_("Number of cycle in state ko_msync                (context %d)"),i));
+        _stat_nb_cycle_state_ko_psync                [i] = _stat->create_counter("nb_cycle_state_ko_psync_"               +toString(i),"",toString(_("Number of cycle in state ko_psync                (context %d)"),i));
+        _stat_nb_cycle_state_ko_csync                [i] = _stat->create_counter("nb_cycle_state_ko_csync_"               +toString(i),"",toString(_("Number of cycle in state ko_csync                (context %d)"),i));
+        _stat_nb_cycle_state_ko_spr                  [i] = _stat->create_counter("nb_cycle_state_ko_spr_"                 +toString(i),"",toString(_("Number of cycle in state ko_spr                  (context %d)"),i));
+
+
+        _stat->create_expr_percent("percent_state_ok_"                     +toString(i),"nb_cycle_state_ok_"                     +toString(i),"cycle",toString(_("Percent of cycle in state ok                      (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_excep_"               +toString(i),"nb_cycle_state_ko_excep_"               +toString(i),"cycle",toString(_("Percent of cycle in state ko_excep                (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_miss_branch_"         +toString(i),"nb_cycle_state_ko_miss_branch_"         +toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_branch          (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_miss_load_"           +toString(i),"nb_cycle_state_ko_miss_load_"           +toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_load            (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_miss_load_and_branch_"+toString(i),"nb_cycle_state_ko_miss_load_and_branch_"+toString(i),"cycle",toString(_("Percent of cycle in state ko_miss_load_and_branch (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_msync_"               +toString(i),"nb_cycle_state_ko_msync_"               +toString(i),"cycle",toString(_("Percent of cycle in state ko_msync                (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_psync_"               +toString(i),"nb_cycle_state_ko_psync_"               +toString(i),"cycle",toString(_("Percent of cycle in state ko_psync                (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_csync_"               +toString(i),"nb_cycle_state_ko_csync_"               +toString(i),"cycle",toString(_("Percent of cycle in state ko_csync                (context %d)"),i));
+        _stat->create_expr_percent("percent_state_ko_spr_"                 +toString(i),"nb_cycle_state_ko_spr_"                 +toString(i),"cycle",toString(_("Percent of cycle in state ko_spr                  (context %d)"),i));
+      }
+
     log_end(Context_State,FUNCTION);
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_deallocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_statistics_deallocation.cpp	(revision 120)
@@ -8,4 +8,5 @@
 
 #include "Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h"
+#include "Behavioural/include/Allocation.h"
 
 namespace morpheo {
@@ -24,6 +25,16 @@
 
     log_printf(INFO,Context_State,FUNCTION,_("Generate Statistics file"));
-    
+
     delete _stat;
+
+    DELETE1(_stat_nb_cycle_state_ok                     ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_excep               ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_miss_branch         ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_miss_load           ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_miss_load_and_branch,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_msync               ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_psync               ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_csync               ,_param->_nb_context);
+    DELETE1(_stat_nb_cycle_state_ko_spr                 ,_param->_nb_context);
     
     log_end(Context_State,FUNCTION);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp	(revision 120)
@@ -678,4 +678,47 @@
       }
 
+
+#ifdef STATISTICS
+    if (usage_is_set(_usage,USE_STATISTICS))
+      for (uint32_t i=0; i<_param->_nb_context; ++i)
+        switch(reg_STATE[i])
+          {
+          case CONTEXT_STATE_OK                                 : (*_stat_nb_cycle_state_ok                      [i])++; break;
+
+          case CONTEXT_STATE_KO_EXCEP                           : 
+          case CONTEXT_STATE_KO_EXCEP_ADDR                      : 
+          case CONTEXT_STATE_KO_EXCEP_SPR                       : (*_stat_nb_cycle_state_ko_excep                [i])++; break;
+
+          case CONTEXT_STATE_KO_MISS_BRANCH_WAIT_UPDATE         : 
+          case CONTEXT_STATE_KO_MISS_BRANCH_ADDR                : 
+          case CONTEXT_STATE_KO_MISS_BRANCH_WAITEND             : (*_stat_nb_cycle_state_ko_miss_branch          [i])++; break;
+
+          case CONTEXT_STATE_KO_MISS_LOAD_ADDR                  : 
+          case CONTEXT_STATE_KO_MISS_LOAD_WAITEND               : (*_stat_nb_cycle_state_ko_miss_load            [i])++; break;
+
+          case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAIT_UPDATE: 
+          case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_ADDR       : 
+          case CONTEXT_STATE_KO_MISS_LOAD_AND_BRANCH_WAITEND    : (*_stat_nb_cycle_state_ko_miss_load_and_branch [i])++; break;
+
+//        case CONTEXT_STATE_KO_MSYNC                           : 
+//        case CONTEXT_STATE_KO_MSYNC_ISSUE                     : 
+          case CONTEXT_STATE_KO_MSYNC_EXEC                      : (*_stat_nb_cycle_state_ko_msync                [i])++; break;
+
+//        case CONTEXT_STATE_KO_PSYNC                           : 
+          case CONTEXT_STATE_KO_PSYNC_FLUSH                     : 
+          case CONTEXT_STATE_KO_PSYNC_ADDR                      : (*_stat_nb_cycle_state_ko_psync                [i])++; break;
+
+//        case CONTEXT_STATE_KO_CSYNC                           : 
+          case CONTEXT_STATE_KO_CSYNC_FLUSH                     : 
+          case CONTEXT_STATE_KO_CSYNC_ADDR                      : (*_stat_nb_cycle_state_ko_csync                [i])++; break;
+
+//        case CONTEXT_STATE_KO_SPR                             : 
+//        case CONTEXT_STATE_KO_SPR_ISSUE                       : 
+          case CONTEXT_STATE_KO_SPR_EXEC                        : (*_stat_nb_cycle_state_ko_spr                  [i])++; break;
+          }
+#endif
+
+
+
 #if DEBUG >= DEBUG_TRACE
     for (uint32_t i=0; i<_param->_nb_context; i++)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp	(revision 120)
@@ -202,7 +202,9 @@
 
 //   		    can_continue [x] = false; // one branch per context, the DS don't execute
-  		    can_continue [x]&= PORT_READ(in_PREDICT_CAN_CONTINUE [i]); // one branch per context, the DS don't execute
+		    can_continue [x]&= PORT_READ(in_PREDICT_CAN_CONTINUE [i]); // one branch per context, the DS don't execute
                     have_decod_branch [x] = true;
-		  }
+                    
+                    log_printf(TRACE,Decod,FUNCTION,"      * predict_can_continue   : %d",PORT_READ(in_PREDICT_CAN_CONTINUE [i]));
+                  }
 
 		Tevent_type_t event_type = _decod_instruction->_event_type;
@@ -245,4 +247,7 @@
 
 		can_continue [x] &= have_transaction; // to have a in order decod !!! if a previous instruction can decod, also next instruction can't decod.
+
+                log_printf(TRACE,Decod,FUNCTION,"      * have_transaction       : %d",have_transaction);
+
 	      }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Parameters.h	(revision 120)
@@ -34,7 +34,8 @@
   public : uint32_t   _size_history              ;
   public : uint32_t * _size_ras_index            ; // [nb_context]
-  public : const bool _not_accurate_block_predict;
   public : uint32_t   _nb_thread                          ;
   public : uint32_t * _translate_num_context_to_num_thread;//[nb_context]                    
+  public : const bool _accurate_block_predict    ;
+  public : const bool _accurate_block_decod      ;
 
 //public : uint32_t   _size_context_id           ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Parameters.cpp	(revision 120)
@@ -34,5 +34,6 @@
                           uint32_t * translate_num_context_to_num_thread ,//[nb_context]
                           bool       is_toplevel):
-    _not_accurate_block_predict (false)
+    _accurate_block_predict (false),
+    _accurate_block_decod   (false)
   {
     log_printf(FUNC,Update_Prediction_Table,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp	(revision 120)
@@ -8,4 +8,5 @@
 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h"
 #include "Behavioural/include/Allocation.h"
+#include "Common/include/Filename.h"
 
 namespace morpheo                    {
@@ -250,5 +251,11 @@
       if (_param->_have_thread [i])
         {
-          std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Branchement_prediction-thread_"+toString(i)+".log";
+          std::string filename = morpheo::filename(MORPHEO_LOG,
+                                                   "Branchement_prediction-thread_"+toString(i),
+                                                   "",
+                                                   "log",
+                                                   false,
+                                                   log_with_pid,
+                                                   false);
           
           branchement_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_decod.cpp	(revision 120)
@@ -33,5 +33,5 @@
 
         Tcontext_t    context     = (_param->_have_port_context_id)?PORT_READ(in_DECOD_CONTEXT_ID [i]):0;
-        bool          is_accurate = reg_IS_ACCURATE [context];
+        bool          is_accurate = _param->_accurate_block_decod or reg_IS_ACCURATE [context];
         event_state_t event_state = reg_EVENT_STATE [context];
         uint32_t      ptr_write   = reg_UPT_TOP     [context];
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMealy_predict.cpp	(revision 120)
@@ -45,5 +45,5 @@
         PORT_WRITE(out_PREDICT_UPDATE_PREDICTION_ID [i], internal_PREDICT_UPDATE_PREDICTION_ID [i]);
 
-        bool is_accurate = not _param->_not_accurate_block_predict or reg_IS_ACCURATE[context];
+        bool is_accurate = _param->_accurate_block_predict or reg_IS_ACCURATE[context];
 
         // Ack if :
@@ -52,6 +52,6 @@
         //  * is_accurate
 	internal_PREDICT_ACK [i] = ((reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state == UPDATE_FETCH_PREDICTION_STATE_EMPTY) and
-// 				    PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]) and
- 				    (reg_EVENT_STATE [context] == EVENT_STATE_OK) and
+   				    (reg_EVENT_STATE [context] == EVENT_STATE_OK) and
+//                                  (reg_UFPT_NB_UPDATE [context] == 0) and
                                     is_accurate);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp	(revision 120)
@@ -203,11 +203,11 @@
  	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._state        = UPDATE_FETCH_PREDICTION_STATE_WAIT_DECOD;
 
-              Tbranch_condition_t condition = PORT_READ(in_PREDICT_BTB_CONDITION [i]);
-
+              Tbranch_condition_t condition   = PORT_READ(in_PREDICT_BTB_CONDITION [i]);
+              bool                is_accurate = _param->_accurate_block_predict or PORT_READ(in_PREDICT_BTB_IS_ACCURATE [i]);
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._condition    = condition;
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_src  = PORT_READ(in_PREDICT_BTB_ADDRESS_SRC  [i]);
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_dest = PORT_READ(in_PREDICT_BTB_ADDRESS_DEST [i]);
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._last_take    = PORT_READ(in_PREDICT_BTB_LAST_TAKE    [i]);
-	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate  = PORT_READ(in_PREDICT_BTB_IS_ACCURATE  [i]);
+	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._is_accurate  = is_accurate;
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._history      = (_param->_have_port_history)?PORT_READ(in_PREDICT_DIR_HISTORY [i]):0;
 	      reg_UPDATE_FETCH_PREDICTION_TABLE [context][top]._address_ras  = PORT_READ(in_PREDICT_RAS_ADDRESS      [i]);
@@ -263,5 +263,5 @@
                   // Have a miss !!!
                   condition   = PORT_READ(in_DECOD_BTB_CONDITION [i]);
-                  is_accurate = PORT_READ(in_DECOD_IS_ACCURATE   [i]);
+                  is_accurate = _param->_accurate_block_decod or PORT_READ(in_DECOD_IS_ACCURATE   [i]);
 
                   // if can_continue else don't wait the end of all instruction
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp	(revision 120)
@@ -9,4 +9,5 @@
 #include "Behavioural/include/Allocation.h"
 #include "Common/include/Max.h"
+#include "Common/include/Filename.h"
 
 namespace morpheo                    {
@@ -342,5 +343,11 @@
       if (_param->_have_thread [i])
         {
-          std::string filename = MORPHEO_LOG+"/"+toString(getpid())+"-Instruction_flow-thread_"+toString(i)+".log";
+          std::string filename = morpheo::filename(MORPHEO_LOG,
+                                                   "Instruction_flow-thread_"+toString(i),
+                                                   "",
+                                                   "log",
+                                                   false,
+                                                   log_with_pid,
+                                                   false);
           
           instruction_log_file [i] .open(filename.c_str() ,std::ios::out | std::ios::trunc);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_rename.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_rename.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_genMealy_rename.cpp	(revision 120)
@@ -24,9 +24,11 @@
     log_function(OOO_Engine_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
+    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
       for (uint32_t j=0; j<_param->_nb_inst_decod[i]; ++j)
-        // if have not front_end_id port, this function is not use
-        PORT_WRITE(out_RENAME_RENAME_UNIT_FRONT_END_ID [i][j],_param->_translate_front_end_id_to_rename_unit [PORT_READ(in_RENAME_FRONT_END_ID [i][j])]);
-    
+        {
+          // if have not front_end_id port, this function is not use
+          PORT_WRITE(out_RENAME_RENAME_UNIT_FRONT_END_ID [i][j],_param->_translate_front_end_id_to_rename_unit [PORT_READ(in_RENAME_FRONT_END_ID [i][j])]);
+        }
+
     log_end(OOO_Engine_Glue,FUNCTION);
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp	(revision 120)
@@ -411,5 +411,5 @@
           uint32_t x = 0;
           for (uint32_t j=0; j<_param->_nb_front_end; j++)
-            if (i == *it)
+            if (j == *it)
               {
                 // this front end is link with this rename_unit
@@ -486,5 +486,5 @@
                     if (_param->_have_port_front_end_id)
                     COMPONENT_MAP(_component,src , "in_RENAME_IN_"+toString(x)+"_"+toString(k)+            "_FRONT_END_ID" ,
-                                             dest, "in_RENAME_"   +toString(j)+"_"+toString(k)+"_RENAME_UNIT_FRONT_END_ID" );
+                                             dest,"out_RENAME_"   +toString(j)+"_"+toString(k)+"_RENAME_UNIT_FRONT_END_ID" );
                   }
 
@@ -658,5 +658,5 @@
           uint32_t x = 0;
           for (uint32_t j=0; j<_param->_nb_front_end; j++)
-            if (i == (*it))
+            if (j == (*it))
               {
                 for (uint32_t k=0; k<_param->_nb_context[i]; k++)
@@ -685,5 +685,5 @@
           uint32_t x = 0;
           for (uint32_t j=0; j<_param->_nb_front_end; j++)
-            if (i == *it)
+            if (j == *it)
               {
                 for (uint32_t k=0; k<_param->_nb_context[j]; k++)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp	(revision 120)
@@ -132,8 +132,14 @@
     test();
 
+    log_printf(TRACE,OOO_Engine,FUNCTION,"  * link_front_end_with_rename_unit");
     _link_front_end_with_rename_unit = new std::vector<uint32_t> [_nb_rename_unit];
     for (uint32_t i=0; i<_nb_front_end; i++)
-      _link_front_end_with_rename_unit[_link_rename_unit_with_front_end[i]].push_back(i);
-
+      {
+        uint32_t num_rename_unit = _link_rename_unit_with_front_end[i];
+
+        log_printf(TRACE,OOO_Engine,FUNCTION,"    front_end %d is link with rename_unit %d with id %d",i,num_rename_unit,_link_front_end_with_rename_unit[num_rename_unit].size());
+
+        _link_front_end_with_rename_unit[num_rename_unit].push_back(i);
+      }
     _rename_unit_size_front_end_id                = new uint32_t    [_nb_rename_unit];
     _rename_unit_size_context_id                  = new uint32_t    [_nb_rename_unit];
@@ -172,13 +178,13 @@
     for (uint32_t i=0; i<_nb_rename_unit; i++)
       {
-        log_printf(TRACE,OOO_Engine,FUNCTION,"Rename_unit [%d]",i);
-        log_printf(TRACE,OOO_Engine,FUNCTION," * front_end : %d",_rename_unit_nb_front_end[i]);
+        log_printf(TRACE,OOO_Engine,FUNCTION,"  * Rename_unit [%d]",i);
+        log_printf(TRACE,OOO_Engine,FUNCTION,"    * front_end : %d",_rename_unit_nb_front_end[i]);
         
         for (uint32_t j=0; j<_rename_unit_nb_front_end[i]; j++)
           {
-            log_printf(TRACE,OOO_Engine,FUNCTION,"   * [%d] nb_context : %d, nb_inst_decod : %d",j,_rename_unit_nb_context[i][j],_rename_unit_nb_inst_decod[i][j]);
+            log_printf(TRACE,OOO_Engine,FUNCTION,"      * [%d] nb_context : %d, nb_inst_decod : %d",j,_rename_unit_nb_context[i][j],_rename_unit_nb_inst_decod[i][j]);
 
             for (uint32_t k=0; k<_rename_unit_nb_context[i][j]; ++k)
-              log_printf(TRACE,OOO_Engine,FUNCTION,"     * [%d][%d] link_lsq : %d",j,k,_rename_unit_link_load_store_unit_with_thread[i][j][k]);
+              log_printf(TRACE,OOO_Engine,FUNCTION,"        * [%d][%d] link_lsq : %d",j,k,_rename_unit_link_load_store_unit_with_thread[i][j][k]);
           }
       }
@@ -203,8 +209,8 @@
         _sum_inst_retire += _nb_inst_retire [i];
 
-        log_printf(TRACE,OOO_Engine,FUNCTION,"rename_unit [%d] - nb_inst_insert %d, nb_inst_retire %d", i,_nb_inst_insert [i],_nb_inst_retire [i]);
+        log_printf(TRACE,OOO_Engine,FUNCTION,"  * rename_unit [%d] - nb_inst_insert %d, nb_inst_retire %d", i,_nb_inst_insert [i],_nb_inst_retire [i]);
       }
     
-    log_printf(TRACE,OOO_Engine,FUNCTION,"sum_inst_insert %d, sum_inst_retire %d",_sum_inst_insert,_sum_inst_retire);
+    log_printf(TRACE,OOO_Engine,FUNCTION,"  * sum_inst_insert %d, sum_inst_retire %d",_sum_inst_insert,_sum_inst_retire);
 
 //  _have_port_front_end_id            = _size_front_end_id   > 0;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h	(revision 120)
@@ -303,4 +303,5 @@
   public : bool                 ** _execute_loop_is_load_store_unit                        ;//[nb_execute_loop][nb_execute_unit]
   public : uint32_t             ** _execute_loop_translate_num_execute_unit                ;//[nb_execute_loop][nb_execute_unit]
+  public : bool                 ** _execute_loop_num_thread_valid                          ;//[nb_execute_loop][execute_loop_nb_thread]
 
   // translate for icache_access
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp	(revision 120)
@@ -20,6 +20,5 @@
                                                       uint32_t num_thread)
   {
-    log_printf(TRACE,Core,FUNCTION,_("execute_loop_get_num_thread"));
-    log_printf(TRACE,Core,FUNCTION,_("  * Parameters :"));
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_get_num_thread"));
     log_printf(TRACE,Core,FUNCTION,_("    * num_execute_loop : %d"),num_execute_loop);
     log_printf(TRACE,Core,FUNCTION,_("    * num_thread       : %d"),num_thread);
@@ -38,5 +37,5 @@
     uint32_t front_end_id ;
     uint32_t ooo_engine_id;
-    
+
     //  * compute
     for (ooo_engine_id=0; ooo_engine_id<_execute_loop_nb_ooo_engine [num_execute_loop]; ++ooo_engine_id)
@@ -44,8 +43,6 @@
         break;
     
-#ifdef DEBUG_TEST
     if (ooo_engine_id == _execute_loop_nb_ooo_engine [num_execute_loop])
-      throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : ooo_engine [%d] is not find."),num_execute_loop,num_ooo_engine));
-#endif
+      return static_cast<Tcontext_t>(-1);
 
     log_printf(TRACE,Core,FUNCTION,_("    * ooo_engine_id    : %d"),ooo_engine_id);
@@ -55,15 +52,17 @@
         break;
     
-#ifdef DEBUG_TEST
     if (front_end_id == _execute_loop_nb_front_end [num_execute_loop])
-      throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : front_end [%d] is not find."),num_execute_loop,num_front_end));
-#endif
+      return static_cast<Tcontext_t>(-1);
 
     log_printf(TRACE,Core,FUNCTION,_("    * front_end_id     : %d"),front_end_id );
-    
+
+    Tcontext_t _return = get_num_thread(context_id   , log2(_execute_loop_nb_context    [num_execute_loop]),
+                                        front_end_id , log2(_execute_loop_nb_front_end  [num_execute_loop]),
+                                        ooo_engine_id, log2(_execute_loop_nb_ooo_engine [num_execute_loop]));
+
+    log_printf(TRACE,Core,FUNCTION,_("    * return           : %d"),_return);
+
     // compute the thread number
-    return get_num_thread(context_id   , (1<<_execute_loop_nb_context    [num_execute_loop]),
-                          front_end_id , (1<<_execute_loop_nb_front_end  [num_execute_loop]),
-                          ooo_engine_id, (1<<_execute_loop_nb_ooo_engine [num_execute_loop]));
+    return _return;
   }
 
@@ -376,4 +375,6 @@
 
     log_printf(TRACE,Core,FUNCTION,_("Core parameters :"));
+
+    log_printf(TRACE,Core,FUNCTION,_("  * nb_thread : %d"),_nb_thread);
 
     // inverse link
@@ -436,5 +437,5 @@
       for (uint32_t j=0; j<_nb_execute_unit[i]; ++j)
         {
-          log_printf(TRACE,Core,FUNCTION,_(" * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]);
+          log_printf(TRACE,Core,FUNCTION,_("  * execute_unit [%d][%d] : functionnal_unit [%d] - load_store_unit [%d]"),i,j,_link_functionnal_unit_with_execute_unit [i][j],_link_load_store_unit_with_execute_unit [i][j]);
           
 
@@ -742,5 +743,5 @@
       }
 
-//     log_printf(TRACE,Core,FUNCTION,_(" * front_end_instruction_implemeted"));
+//     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)
@@ -824,4 +825,6 @@
 
     ALLOC1(_ooo_engine_nb_front_end                       ,uint32_t         ,_nb_ooo_engine);
+
+    log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_nb_front_end"));
     
     {
@@ -837,5 +840,9 @@
           uint32_t num_rename_bloc = _link_rename_bloc_with_front_end [i];
           uint32_t num_ooo_engine  = _link_rename_unit_with_rename_bloc [num_rename_bloc].first;
-
+        
+          log_printf(TRACE,Core,FUNCTION,_("    * num_front_end             : %d"),i);
+          log_printf(TRACE,Core,FUNCTION,_("      * num_rename_bloc         : %d"),num_rename_bloc);
+          log_printf(TRACE,Core,FUNCTION,_("      * num_ooo_engine          : %d"),num_ooo_engine );
+          log_printf(TRACE,Core,FUNCTION,_("      * ooo_engine_nb_front_end : %d"),_ooo_engine_nb_front_end [num_ooo_engine]);
            // insert a new front_end
           _ooo_engine_nb_front_end [num_ooo_engine] ++; // === list_front_end.size()
@@ -843,15 +850,20 @@
         }
 
-      log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_front_end"));
+      log_printf(TRACE,Core,FUNCTION,_("  * translate_ooo_engine_num_front_end"));
       
       ALLOC2(_translate_ooo_engine_num_front_end            ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]);
       for (uint32_t i=0; i<_nb_ooo_engine; ++i)
-        for (uint32_t j=0; j<_ooo_engine_nb_front_end[i];++j)
-          {
-            uint32_t num_front_end = list_front_end[i][j];
+        {
+//           log_printf(TRACE,Core,FUNCTION,_("   %d -> %d"),i,_ooo_engine_nb_front_end[i]);
+              
+          for (uint32_t j=0; j<_ooo_engine_nb_front_end[i] ;++j)
+            {
+              uint32_t num_front_end = list_front_end[i][j];
             
-            log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> %d"),i,j,num_front_end);
-            _translate_ooo_engine_num_front_end [i][j++] = num_front_end;
-          }
+              log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> %d"),i,j,num_front_end);
+              
+              _translate_ooo_engine_num_front_end [i][j] = num_front_end;
+            }
+        }
     }
 
@@ -891,5 +903,5 @@
         }
 
-      log_printf(TRACE,Core,FUNCTION,_(" * translate_ooo_engine_num_execute_loop"));
+      log_printf(TRACE,Core,FUNCTION,_("  * translate_ooo_engine_num_execute_loop"));
       
       ALLOC2(_translate_ooo_engine_num_execute_loop         ,uint32_t         ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]);
@@ -1011,5 +1023,5 @@
     for (uint32_t i=0; i<_nb_ooo_engine; ++i)
       {
-//         log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_issue_type [%d]"),i);
+//         log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_table_issue_type [%d]"),i);
 
         // Init
@@ -1111,5 +1123,5 @@
           }
 
-        log_printf(TRACE,Core,FUNCTION,_(" * ooo_engine_table_routing [%d]"),i);
+        log_printf(TRACE,Core,FUNCTION,_("  * ooo_engine_table_routing [%d]"),i);
         for (uint32_t j=0; j<_nb_rename_unit[i]; ++j)
           {
@@ -1149,5 +1161,5 @@
       }
     
-    log_printf(TRACE,Core,FUNCTION,_(" * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][nb_execute_loop][nb_read_unit]"));
+    log_printf(TRACE,Core,FUNCTION,_("  * network_table_dispatch [nb_ooo_engine][nb_inst_issue_slot][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_slot[i]; ++j)
@@ -1159,5 +1171,5 @@
     ALLOC3(_network_table_issue_type,bool,_nb_execute_loop,_nb_read_unit[it1],_nb_type);
 
-    log_printf(TRACE,Core,FUNCTION,_(" * network_table_issue_type"));
+    log_printf(TRACE,Core,FUNCTION,_("  * network_table_issue_type"));
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
@@ -1383,5 +1395,5 @@
         _execute_loop_nb_ooo_engine [i] = _list_ooo_engine_with_execute_loop[i].size();
     
-        log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]);
+        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_ooo_engine : %d"),_execute_loop_nb_ooo_engine [i]);
     
         uint32_t max_nb_front_end = 0;
@@ -1409,7 +1421,7 @@
         _execute_loop_nb_packet     [i] = max_size_rob    ;
     
-        log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_front_end  : %d"),_execute_loop_nb_front_end  [i]);
-        log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_context    : %d"),_execute_loop_nb_context    [i]);
-        log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_packet     : %d"),_execute_loop_nb_packet     [i]);
+        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_front_end  : %d"),_execute_loop_nb_front_end  [i]);
+        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_context    : %d"),_execute_loop_nb_context    [i]);
+        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_packet     : %d"),_execute_loop_nb_packet     [i]);
     
         _execute_loop_nb_thread     [i] = get_nb_thread(_execute_loop_nb_context    [i],
@@ -1417,5 +1429,5 @@
                                                         _execute_loop_nb_ooo_engine [i]);
     
-        log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_thread     : %d"),_execute_loop_nb_thread     [i]);
+        log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_thread     : %d"),_execute_loop_nb_thread     [i]);
       }
     
@@ -1431,8 +1443,8 @@
     ALLOC2(_execute_loop_nb_inst_retire                            ,uint32_t,_nb_execute_loop,_nb_read_unit[it1]);
     
-    log_printf(TRACE,Core,FUNCTION,_(" * execute_loop - Read_unit"));
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop - Read_unit"));
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       {
-        log_printf(TRACE,Core,FUNCTION,_("   * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
+        log_printf(TRACE,Core,FUNCTION,_("    * [%d] nb_read_unit : %d"),i,_nb_read_unit[i]);
         
         for (uint32_t j=0; j<_nb_read_unit[i]; ++j)
@@ -1440,5 +1452,5 @@
             uint32_t num_read_bloc = _link_read_bloc_with_read_unit [i][j];
 
-            log_printf(TRACE,Core,FUNCTION,_("     * num_read_bloc : %d"),num_read_bloc);
+            log_printf(TRACE,Core,FUNCTION,_("      * num_read_bloc : %d"),num_read_bloc);
             
             _execute_loop_size_read_queue          [i][j] = _size_read_queue          [num_read_bloc];
@@ -1494,5 +1506,5 @@
                 _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]);
+                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)
@@ -1527,6 +1539,6 @@
           uint32_t num_load_store_unit = _list_load_store_unit_with_execute_unit [i][j];
     
-          log_printf(TRACE,Core,FUNCTION,_(" * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit);
-          log_printf(TRACE,Core,FUNCTION,_("   * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]);
+          log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_nb_load_store_unit [%d][%d] : %d"),i,j,num_load_store_unit);
+          log_printf(TRACE,Core,FUNCTION,_("    * nb_bypass_memory : %d"),_nb_bypass_memory[num_load_store_unit]);
 
           _execute_loop_size_store_queue              [i][j] = _size_store_queue              [num_load_store_unit];
@@ -1619,5 +1631,5 @@
     ALLOC4(_execute_loop_read_unit_to_execution_unit_table_routing ,bool    ,_nb_execute_loop,_nb_read_unit[it1],_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2]);
     
-    log_printf(TRACE,Core,FUNCTION,_("execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]"));
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_read_unit_to_execution_unit_table_routing [execute_loop][read_unit][execute_unit][execute_unit_port]"));
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       for (uint32_t j=0; j<_nb_execute_unit[i]; ++j)
@@ -1647,5 +1659,5 @@
     ALLOC4(_execute_loop_execution_unit_to_write_unit_table_routing,bool    ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_execute_unit_port[it1][it2],_nb_write_unit[it1]);
     
-    log_printf(TRACE,Core,FUNCTION,_("execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]"));
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_execution_unit_to_write_unit_table_routing [execute_loop][execute_unit][execute_unit_port][write_unit]"));
 
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
@@ -1677,5 +1689,5 @@
     ALLOC3(_execute_loop_execution_unit_to_write_unit_table_thread ,bool    ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]);
     
-    log_printf(TRACE,Core,FUNCTION,_("execute_loop_read_unit_to_execution_unit_table_thread"));
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_read_unit_to_execution_unit_table_thread"));
     for (uint32_t i=0; i<_nb_execute_loop; ++i)
       {
@@ -1704,4 +1716,10 @@
                     {
                       uint32_t num_thread = execute_loop_get_num_thread (i,k);
+
+#ifdef DEBUG_TEST
+                      if (num_thread == static_cast<Tcontext_t>(-1))
+                        throw ERRORMORPHEO(FUNCTION,toString(_("execute_loop [%d] : thread %d is invalid."),i,k));
+#endif
+
                       _execute_loop_read_unit_to_execution_unit_table_thread [i][j][num_thread] = true;
                       log_printf(TRACE,Core,FUNCTION,_("   [%d][%d][%d] -> Ok"),i,j,num_thread);
@@ -1722,4 +1740,27 @@
       }
     
+    ALLOC2(_execute_loop_num_thread_valid                          ,bool    ,_nb_execute_loop,_execute_loop_nb_thread[it1]);
+
+    log_printf(TRACE,Core,FUNCTION,_("  * execute_loop_num_thread_valid"));
+
+    for (uint32_t i=0; i<_nb_execute_loop; ++i)
+      {
+        for (uint32_t j=0; j<_execute_loop_nb_thread[i]; ++j)
+          _execute_loop_num_thread_valid [i][j] = false;
+
+        for (uint32_t j=0; j<_nb_thread; ++j)
+          {
+            uint32_t num_thread = execute_loop_get_num_thread (i,j);
+          
+            if (num_thread != static_cast<Tcontext_t>(-1))
+              {
+                log_printf(TRACE,Core,FUNCTION,_("   [%d][%d] -> valid"),i,num_thread);
+
+                _execute_loop_num_thread_valid [i][num_thread] = true;
+              }
+          }
+      }
+
+
     ALLOC2(_icache_access_size_packet_id,uint32_t,_nb_front_end,_nb_context[it1]);
     ALLOC2(_icache_access_table_routing ,uint32_t,_nb_front_end,_nb_context[it1]);
@@ -2041,5 +2082,7 @@
 
          _execute_loop_is_load_store_unit                         [i],
-         _execute_loop_translate_num_execute_unit                 [i]
+         _execute_loop_translate_num_execute_unit                 [i],
+
+         _execute_loop_num_thread_valid                           [i]
          );
 
@@ -2153,4 +2196,5 @@
     DELETE2(_icache_access_table_routing                            ,_nb_front_end,_nb_context[it1]);
     DELETE2(_icache_access_size_packet_id                           ,_nb_front_end,_nb_context[it1]);
+    DELETE2(_execute_loop_num_thread_valid                          ,_nb_execute_loop,_execute_loop_nb_thread[it1]);
     DELETE3(_execute_loop_execution_unit_to_write_unit_table_thread ,_nb_execute_loop,_nb_write_unit[it1],_execute_loop_nb_thread [it1]);
     DELETE3(_execute_loop_read_unit_to_execution_unit_table_thread  ,_nb_execute_loop,_nb_execute_unit[it1],_execute_loop_nb_thread[it1]);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 120)
@@ -10,8 +10,8 @@
 #define MORPHEO_MAJOR_VERSION "0"
 #define MORPHEO_MINOR_VERSION "2"
-#define MORPHEO_REVISION      "119"
+#define MORPHEO_REVISION      "120"
 #define MORPHEO_CODENAME      "Castor"
 
-#define MORPHEO_DATE_DAY      "25"  
+#define MORPHEO_DATE_DAY      "26"  
 #define MORPHEO_DATE_MONTH    "05"
 #define MORPHEO_DATE_YEAR     "2009" 
Index: trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Common/include/Message.h	(revision 120)
@@ -43,7 +43,10 @@
 #endif
 
+extern bool   log_with_pid;
 extern FILE * log_stream;
+
 FILE * log      (FILE * stream);
 void   log_init (bool        have_file,
+                 bool        with_pid ,
                  std::string directory,
                  std::string file="");
Index: trunk/IPs/systemC/processor/Morpheo/Common/src/Message.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Common/src/Message.cpp	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Common/src/Message.cpp	(revision 120)
@@ -15,4 +15,5 @@
 
   static bool log_initialized;
+  bool   log_with_pid;
   FILE * log_stream;
   
@@ -28,4 +29,5 @@
 #define FUNCTION "log_init"
   void log_init (bool        have_file,
+                 bool        with_pid ,
                  std::string directory,
                  std::string file)
@@ -34,5 +36,6 @@
       {
         log_initialized = true;
-        
+        log_with_pid    = with_pid;
+
         if (have_file)
           {
@@ -43,5 +46,5 @@
                                                      "log",
                                                      (file==""),
-                                                     (file==""),
+                                                     with_pid,
                                                      true);
             
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_2.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="1" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="2" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_3.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="1" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="2" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w1_4.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="1" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="2" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_1.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="2" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="2" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_2.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_2.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_2.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="2" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_3.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_3.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_3.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="2" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_4.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_4.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w2_4.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="2" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="8" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_1.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="16" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_2.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_2.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_2.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="16" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_3.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_3.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w4_3.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="16" />
-    <parameter name="upt_size_queue"                        value="8" />
+    <parameter name="upt_size_queue"                        value="16" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_1.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_1.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="16" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_2.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_2.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x1_w8_2.cfg	(revision 120)
@@ -7,5 +7,5 @@
     <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="16" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_5.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_5.cfg	(revision 120)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_5.cfg	(revision 120)
@@ -0,0 +1,221 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<core name="Instance_x2_w1_4">
+
+  <thread id="0,1">             
+    <parameter name="size_ifetch_queue"                     value="8" />
+    <parameter name="nb_inst_fetch"                         value="1" />
+    <parameter name="ras_size_queue"                        value="8" />
+    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="ufpt_size_queue"                       value="2" />
+
+    <group id="0">
+      <parameter name="implement_group"                     value="1" />
+    </group>
+  </thread>                                                 
+                                                            
+  <decod_bloc id="0,1">                                       
+    <parameter name="size_decod_queue"                      value="4" />
+    <parameter name="decod_queue_scheme"                    value="0" />
+    <parameter name="nb_inst_decod"                         value="1" />
+    <parameter name="nb_context_select"                     value="1" />
+    <parameter name="context_select_priority"               value="1" />
+    <parameter name="context_select_load_balancing"         value="1" />
+  </decod_bloc>                                             
+                                                            
+  <rename_bloc id="0">                                      
+    <parameter name="nb_inst_insert"                        value="1" />
+    <parameter name="nb_inst_retire"                        value="1" />
+    <parameter name="rename_select_priority"                value="1" />
+    <parameter name="rename_select_load_balancing"          value="1" />
+    <parameter name="rename_select_nb_front_end_select"     value="1" />
+    <parameter name="nb_general_register"                   value="128"/>
+    <parameter name="nb_special_register"                   value="32" />
+    <parameter name="nb_reg_free"                           value="1" />
+    <parameter name="nb_rename_unit_bank"                   value="1" />
+  </rename_bloc>                                            
+                                                            
+  <read_bloc id="0,1,2">                                        
+    <parameter name="size_read_queue"                       value="4" />
+    <parameter name="size_reservation_station"              value="4" />
+    <parameter name="nb_inst_retire_reservation_station"    value="1" />
+  </read_bloc>                                              
+                                                            
+  <write_bloc id="0,1,2">                                       
+    <parameter name="size_write_queue"                      value="4" />
+    <parameter name="size_execute_queue"                    value="4" />
+    <parameter name="nb_bypass_write"                       value="0" />
+    <parameter name="write_queue_scheme"                    value="0" />
+  </write_bloc>                                             
+                                                            
+  <load_store_unit id="0">                                  
+    <parameter name="size_store_queue"                      value="4" />
+    <parameter name="size_load_queue"                       value="4" />
+    <parameter name="size_speculative_access_queue"         value="4" />
+    <parameter name="nb_port_check"                         value="1" />
+    <parameter name="speculative_load"                      value="2" />
+    <parameter name="nb_bypass_memory"                      value="0" />
+    <parameter name="nb_cache_port"                         value="1" />
+    <parameter name="nb_inst_memory"                        value="1" />
+  </load_store_unit>
+
+  <functionnal_unit id="0">
+    <parameter name="nb_inst_functionnal_unit" value="1" />
+
+    <timing type="0"  latence="1" delay="1" />
+    <timing type="1"  latence="1" delay="1" />
+    <timing type="2"  latence="1" delay="1" />
+    <timing type="3"  latence="1" delay="1" />
+    <timing type="4"  latence="1" delay="1" />
+    <timing type="6"  latence="1" delay="1" />
+    <timing type="7"  latence="1" delay="1" />
+
+    <timing type="10" latence="1" delay="1" />
+  </functionnal_unit>
+
+  <functionnal_unit id="1">
+    <parameter name="nb_inst_functionnal_unit" value="1" />
+
+    <timing type="0"  latence="1" delay="1" />
+    <timing type="1"  latence="1" delay="1" />
+    <timing type="2"  latence="1" delay="1" />
+    <timing type="3"  latence="1" delay="1" />
+    <timing type="4"  latence="1" delay="1" />
+    <timing type="6"  latence="1" delay="1" />
+    <timing type="7"  latence="1" delay="1" />
+    <timing type="8"  latence="1" delay="1" />
+    <timing type="10" latence="1" delay="1" />
+  </functionnal_unit>
+
+  <front_end id="0,1">        
+    <parameter name="nb_context"                            value="1" />
+    <parameter name="nb_decod_unit"                         value="1" />
+    <parameter name="nb_inst_branch_predict"                value="1" />
+    <parameter name="nb_inst_branch_decod"                  value="1" />
+    <parameter name="nb_inst_branch_update"                 value="1" />
+    <parameter name="btb_size_queue"                        value="32"/>
+    <parameter name="btb_associativity"                     value="1" />
+    <parameter name="btb_size_counter"                      value="2" />
+    <parameter name="btb_victim_scheme"                     value="3" />
+    <parameter name="dir_predictor_scheme"                  value="1" />
+  </front_end>
+
+  <ooo_engine id="0">
+    <parameter name="nb_rename_unit"                        value="1" />
+    <parameter name="nb_inst_issue"                         value="1" />
+    <parameter name="nb_inst_reexecute"                     value="1" />
+    <parameter name="nb_inst_commit"                        value="1" />
+    <parameter name="nb_inst_branch_complete"               value="1" />
+    <parameter name="nb_rename_unit_select"                 value="1" />
+    <parameter name="nb_execute_loop_select"                value="1" />
+    <parameter name="size_re_order_buffer"                  value="32"/>
+    <parameter name="nb_re_order_buffer_bank"               value="2" />
+    <parameter name="commit_priority"                       value="1" />
+    <parameter name="commit_load_balancing"                 value="1" />
+    <parameter name="size_issue_queue"                      value="8" />
+    <parameter name="nb_issue_queue_bank"                   value="2" />
+    <parameter name="issue_queue_scheme"                    value="0" />
+    <parameter name="issue_priority"                        value="1" />
+    <parameter name="issue_load_balancing"                  value="1" />
+    <parameter name="size_reexecute_queue"                  value="4" />
+    <parameter name="reexecute_priority"                    value="1" />
+    <parameter name="reexecute_load_balancing"              value="1" />
+  </ooo_engine>
+
+  <execute_loop id="0">
+    <parameter name="nb_read_unit"                          value="3" />
+    <parameter name="nb_write_unit"                         value="3" />
+    <parameter name="nb_gpr_bank"                           value="2" />
+    <parameter name="nb_gpr_port_read_by_bank"              value="1" />
+    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
+    <parameter name="nb_spr_bank"                           value="2" />
+    <parameter name="nb_spr_port_read_by_bank"              value="1" />
+    <parameter name="nb_spr_port_write_by_bank"             value="1" />
+    <parameter name="execution_unit_to_write_unit_priority" value="1" />
+    <parameter name="read_unit_to_execution_unit_priority"  value="1" />
+
+    <execute_unit id="0">
+      <link name="link_execute_unit_with_functionnal_unit"  src="0"/>
+    </execute_unit>
+    <execute_unit id="1">
+      <link name="link_execute_unit_with_functionnal_unit"  src="1"/>
+    </execute_unit>
+    <execute_unit id="2">
+      <link name="link_execute_unit_with_load_store_unit"   src="0"/>
+    </execute_unit>
+
+  </execute_loop>
+
+  <parameter name="size_data"                               value="32" />
+                                                            
+  <parameter name="dispatch_priority"                       value="1" />
+  <parameter name="dispatch_load_balancing"                 value="1" />
+                                                            
+  <parameter name="nb_icache_port"                          value="1" />
+  <parameter name="icache_port_priority"                    value="1" />
+  <parameter name="icache_port_load_balancing"              value="1" />
+                                                            
+  <parameter name="nb_dcache_port"                          value="1" />
+  <parameter name="dcache_port_priority"                    value="1" />
+  <parameter name="dcache_port_load_balancing"              value="1" />
+
+  <link name="link_context_with_thread"                src="0"     dest="0.0" />
+  <link name="link_context_with_thread"                src="1"     dest="1.0" />
+
+  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
+  <link name="link_decod_unit_with_decod_bloc"         src="1"     dest="1.0" />
+
+  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
+
+  <link name="link_read_unit_with_read_bloc"           src="0"     dest="0.0" />
+  <link name="link_read_unit_with_read_bloc"           src="1"     dest="0.1" />
+  <link name="link_read_unit_with_read_bloc"           src="2"     dest="0.2" />
+
+  <link name="link_write_unit_with_write_bloc"         src="0"     dest="0.0" />
+  <link name="link_write_unit_with_write_bloc"         src="1"     dest="0.1" />
+  <link name="link_write_unit_with_write_bloc"         src="2"     dest="0.2" />
+
+  <link name="link_decod_bloc_with_thread"             src="0"     dest="0"   />
+  <link name="link_decod_bloc_with_thread"             src="1"     dest="1"   />
+
+  <link name="link_rename_bloc_with_front_end"         src="0"     dest="0"   />
+  <link name="link_rename_bloc_with_front_end"         src="1"     dest="0"   />
+
+  <link name="link_load_store_unit_with_thread"        src="0"     dest="0"   />
+  <link name="link_load_store_unit_with_thread"        src="1"     dest="0"   />
+
+  <link name="link_icache_port_with_thread"            src="0"     dest="0"   />
+  <link name="link_icache_port_with_thread"            src="1"     dest="0"   />
+  <link name="link_dcache_port_with_load_store_unit"   src="0.0"   dest="0"   />
+
+  <link name="table_dispatch"                          src="0.0.0" dest="1"   />
+  <link name="table_dispatch"                          src="0.0.1" dest="1"   />
+  <link name="table_dispatch"                          src="0.0.2" dest="1"   />
+
+  <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="0"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="2.0"   dest="0"   />
+
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
+
+  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="2.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
+
+  <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="0.1"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="1.0"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="1.1"   dest="1"   />
+
+</core>
Index: trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_6.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_6.cfg	(revision 120)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Instance_x2_w1_6.cfg	(revision 120)
@@ -0,0 +1,236 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+
+<core name="Instance_x2_w1_4">
+
+  <thread id="0,1">             
+    <parameter name="size_ifetch_queue"                     value="8" />
+    <parameter name="nb_inst_fetch"                         value="1" />
+    <parameter name="ras_size_queue"                        value="8" />
+    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="ufpt_size_queue"                       value="2" />
+
+    <group id="0">
+      <parameter name="implement_group"                     value="1" />
+    </group>
+  </thread>                                                 
+                                                            
+  <decod_bloc id="0,1">                                       
+    <parameter name="size_decod_queue"                      value="4" />
+    <parameter name="decod_queue_scheme"                    value="0" />
+    <parameter name="nb_inst_decod"                         value="1" />
+    <parameter name="nb_context_select"                     value="1" />
+    <parameter name="context_select_priority"               value="1" />
+    <parameter name="context_select_load_balancing"         value="1" />
+  </decod_bloc>                                             
+                                                            
+  <rename_bloc id="0">                                      
+    <parameter name="nb_inst_insert"                        value="1" />
+    <parameter name="nb_inst_retire"                        value="1" />
+    <parameter name="rename_select_priority"                value="1" />
+    <parameter name="rename_select_load_balancing"          value="1" />
+    <parameter name="rename_select_nb_front_end_select"     value="1" />
+    <parameter name="nb_general_register"                   value="128"/>
+    <parameter name="nb_special_register"                   value="32" />
+    <parameter name="nb_reg_free"                           value="1" />
+    <parameter name="nb_rename_unit_bank"                   value="1" />
+  </rename_bloc>                                            
+                                                            
+  <read_bloc id="0,1,2">                                        
+    <parameter name="size_read_queue"                       value="4" />
+    <parameter name="size_reservation_station"              value="4" />
+    <parameter name="nb_inst_retire_reservation_station"    value="1" />
+  </read_bloc>                                              
+                                                            
+  <write_bloc id="0,1,2">                                       
+    <parameter name="size_write_queue"                      value="4" />
+    <parameter name="size_execute_queue"                    value="4" />
+    <parameter name="nb_bypass_write"                       value="0" />
+    <parameter name="write_queue_scheme"                    value="0" />
+  </write_bloc>                                             
+                                                            
+  <load_store_unit id="0,1">                                  
+    <parameter name="size_store_queue"                      value="4" />
+    <parameter name="size_load_queue"                       value="4" />
+    <parameter name="size_speculative_access_queue"         value="4" />
+    <parameter name="nb_port_check"                         value="1" />
+    <parameter name="speculative_load"                      value="2" />
+    <parameter name="nb_bypass_memory"                      value="0" />
+    <parameter name="nb_cache_port"                         value="1" />
+    <parameter name="nb_inst_memory"                        value="1" />
+  </load_store_unit>
+
+  <functionnal_unit id="0">
+    <parameter name="nb_inst_functionnal_unit" value="1" />
+
+    <timing type="0"  latence="1" delay="1" />
+    <timing type="1"  latence="1" delay="1" />
+    <timing type="2"  latence="1" delay="1" />
+    <timing type="3"  latence="1" delay="1" />
+    <timing type="4"  latence="1" delay="1" />
+    <timing type="6"  latence="1" delay="1" />
+    <timing type="7"  latence="1" delay="1" />
+
+    <timing type="10" latence="1" delay="1" />
+  </functionnal_unit>
+
+  <functionnal_unit id="1">
+    <parameter name="nb_inst_functionnal_unit" value="1" />
+
+    <timing type="0"  latence="1" delay="1" />
+    <timing type="1"  latence="1" delay="1" />
+    <timing type="2"  latence="1" delay="1" />
+    <timing type="3"  latence="1" delay="1" />
+    <timing type="4"  latence="1" delay="1" />
+    <timing type="6"  latence="1" delay="1" />
+    <timing type="7"  latence="1" delay="1" />
+    <timing type="8"  latence="1" delay="1" />
+    <timing type="10" latence="1" delay="1" />
+  </functionnal_unit>
+
+  <front_end id="0,1">        
+    <parameter name="nb_context"                            value="1" />
+    <parameter name="nb_decod_unit"                         value="1" />
+    <parameter name="nb_inst_branch_predict"                value="1" />
+    <parameter name="nb_inst_branch_decod"                  value="1" />
+    <parameter name="nb_inst_branch_update"                 value="1" />
+    <parameter name="btb_size_queue"                        value="32"/>
+    <parameter name="btb_associativity"                     value="1" />
+    <parameter name="btb_size_counter"                      value="2" />
+    <parameter name="btb_victim_scheme"                     value="3" />
+    <parameter name="dir_predictor_scheme"                  value="1" />
+  </front_end>
+
+  <ooo_engine id="0">
+    <parameter name="nb_rename_unit"                        value="1" />
+    <parameter name="nb_inst_issue"                         value="1" />
+    <parameter name="nb_inst_reexecute"                     value="1" />
+    <parameter name="nb_inst_commit"                        value="1" />
+    <parameter name="nb_inst_branch_complete"               value="1" />
+    <parameter name="nb_rename_unit_select"                 value="1" />
+    <parameter name="nb_execute_loop_select"                value="1" />
+    <parameter name="size_re_order_buffer"                  value="32"/>
+    <parameter name="nb_re_order_buffer_bank"               value="2" />
+    <parameter name="commit_priority"                       value="1" />
+    <parameter name="commit_load_balancing"                 value="1" />
+    <parameter name="size_issue_queue"                      value="8" />
+    <parameter name="nb_issue_queue_bank"                   value="2" />
+    <parameter name="issue_queue_scheme"                    value="0" />
+    <parameter name="issue_priority"                        value="1" />
+    <parameter name="issue_load_balancing"                  value="1" />
+    <parameter name="size_reexecute_queue"                  value="4" />
+    <parameter name="reexecute_priority"                    value="1" />
+    <parameter name="reexecute_load_balancing"              value="1" />
+  </ooo_engine>
+
+  <execute_loop id="0">
+    <parameter name="nb_read_unit"                          value="3" />
+    <parameter name="nb_write_unit"                         value="3" />
+    <parameter name="nb_gpr_bank"                           value="2" />
+    <parameter name="nb_gpr_port_read_by_bank"              value="1" />
+    <parameter name="nb_gpr_port_write_by_bank"             value="1" />
+    <parameter name="nb_spr_bank"                           value="2" />
+    <parameter name="nb_spr_port_read_by_bank"              value="1" />
+    <parameter name="nb_spr_port_write_by_bank"             value="1" />
+    <parameter name="execution_unit_to_write_unit_priority" value="1" />
+    <parameter name="read_unit_to_execution_unit_priority"  value="1" />
+
+    <execute_unit id="0">
+      <link name="link_execute_unit_with_functionnal_unit"  src="0"/>
+    </execute_unit>
+    <execute_unit id="1">
+      <link name="link_execute_unit_with_functionnal_unit"  src="1"/>
+    </execute_unit>
+    <execute_unit id="2">
+      <link name="link_execute_unit_with_load_store_unit"   src="0"/>
+    </execute_unit>
+    <execute_unit id="3">
+      <link name="link_execute_unit_with_load_store_unit"   src="1"/>
+    </execute_unit>
+
+  </execute_loop>
+
+  <parameter name="size_data"                               value="32" />
+                                                            
+  <parameter name="dispatch_priority"                       value="1" />
+  <parameter name="dispatch_load_balancing"                 value="1" />
+                                                            
+  <parameter name="nb_icache_port"                          value="1" />
+  <parameter name="icache_port_priority"                    value="1" />
+  <parameter name="icache_port_load_balancing"              value="1" />
+                                                            
+  <parameter name="nb_dcache_port"                          value="1" />
+  <parameter name="dcache_port_priority"                    value="1" />
+  <parameter name="dcache_port_load_balancing"              value="1" />
+
+  <link name="link_context_with_thread"                src="0"     dest="0.0" />
+  <link name="link_context_with_thread"                src="1"     dest="1.0" />
+
+  <link name="link_decod_unit_with_decod_bloc"         src="0"     dest="0.0" />
+  <link name="link_decod_unit_with_decod_bloc"         src="1"     dest="1.0" />
+
+  <link name="link_rename_unit_with_rename_bloc"       src="0"     dest="0.0" />
+
+  <link name="link_read_unit_with_read_bloc"           src="0"     dest="0.0" />
+  <link name="link_read_unit_with_read_bloc"           src="1"     dest="0.1" />
+  <link name="link_read_unit_with_read_bloc"           src="2"     dest="0.2" />
+
+  <link name="link_write_unit_with_write_bloc"         src="0"     dest="0.0" />
+  <link name="link_write_unit_with_write_bloc"         src="1"     dest="0.1" />
+  <link name="link_write_unit_with_write_bloc"         src="2"     dest="0.2" />
+
+  <link name="link_decod_bloc_with_thread"             src="0"     dest="0"   />
+  <link name="link_decod_bloc_with_thread"             src="1"     dest="1"   />
+
+  <link name="link_rename_bloc_with_front_end"         src="0"     dest="0"   />
+  <link name="link_rename_bloc_with_front_end"         src="1"     dest="0"   />
+
+  <link name="link_load_store_unit_with_thread"        src="0"     dest="0"   />
+  <link name="link_load_store_unit_with_thread"        src="1"     dest="1"   />
+
+  <link name="link_icache_port_with_thread"            src="0"     dest="0"   />
+  <link name="link_icache_port_with_thread"            src="1"     dest="0"   />
+  <link name="link_dcache_port_with_load_store_unit"   src="0.0"   dest="0"   />
+  <link name="link_dcache_port_with_load_store_unit"   src="0.1"   dest="0"   />
+
+  <link name="table_dispatch"                          src="0.0.0" dest="1"   />
+  <link name="table_dispatch"                          src="0.0.1" dest="1"   />
+  <link name="table_dispatch"                          src="0.0.2" dest="1"   />
+
+  <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="1.0"   dest="0"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="2.0"   dest="0"   />
+
+  <link name="link_read_bloc_and_load_store_unit"      src="0.1"   dest="1"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="1.1"   dest="0"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="2.1"   dest="0"   />
+
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
+
+  <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="1.0"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="2.0"   dest="1"   />
+
+  <link name="link_write_bloc_and_load_store_unit"     src="0.1"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="1.1"   dest="1"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="2.1"   dest="1"   />
+
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="1"   />
+
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
+
+  <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="1.0"   dest="1"   />
+
+  <link name="link_thread_and_functionnal_unit"        src="0.1"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="1.1"   dest="1"   />
+
+</core>
Index: trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen	(revision 120)
@@ -19,5 +19,5 @@
   <parameter name="implement_group"                                                       default="0"   level="..." description="..." />
   <parameter name="ras_size_queue"                        min="2"   max="16"   step="* 2" default="2"   level="..." description="..." />
-  <parameter name="upt_size_queue"                        min="1"   max="16"   step="* 2" default="2"   level="..." description="..." />
+  <parameter name="upt_size_queue"                        min="1"   max="32"   step="* 2" default="2"   level="..." description="..." />
   <parameter name="ufpt_size_queue"                       min="1"   max="16"   step="* 2" default="2"   level="..." description="..." />
                                                                                
Index: trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim	(revision 120)
@@ -10,5 +10,5 @@
   <parameter  name="use_statistics"                         value="1"       />
   <parameter  name="use_information"                        value="0"       />
-  <parameter  name="use_header"                             value="0"       />
+  <parameter  name="use_header"                             value="1"       />
                                                             
   <parameter  name="directory_statistics"                   value="."       />
@@ -26,5 +26,7 @@
   <parameter  name="debug_cycle_start"                      value="4250"    />
   <parameter  name="debug_cycle_stop"                       value="4400"    />
-  <parameter  name="debug_have_log_file"                    value="0"       />
+
+  <parameter  name="debug_log_file_generate"                value="0"       />
+  <parameter  name="debug_log_file_with_pid"                value="0"       />
   <parameter  name="debug_idle_cycle"                       value="1000"    />
   <parameter  name="debug_idle_time"                        value="10"      />
@@ -104,3 +106,6 @@
   <component  name="TopLevel"                               model="systemc" debug="0" />
 
+  <component  name="Behavioural"                            model="systemc" debug="0" />
+  <component  name="Interface"                              model="systemc" debug="0" />
+  <component  name="Allocation"                             model="systemc" debug="0" />
 </parameters>
Index: trunk/IPs/systemC/processor/Morpheo/Files/debug.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/debug.cfg	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/debug.cfg	(revision 120)
@@ -1,11 +1,11 @@
 <?xml version="1.0" encoding="ISO-8859-1" ?>
 
-<core name="Instance_x1_w2_4">
+<core name="debug">
 
   <thread id="0">             
-    <parameter name="size_ifetch_queue"                     value="8" />
-    <parameter name="nb_inst_fetch"                         value="2" />
+    <parameter name="size_ifetch_queue"                     value="32" />
+    <parameter name="nb_inst_fetch"                         value="8" />
     <parameter name="ras_size_queue"                        value="8" />
-    <parameter name="upt_size_queue"                        value="4" />
+    <parameter name="upt_size_queue"                        value="32" />
     <parameter name="ufpt_size_queue"                       value="4" />
 
@@ -16,7 +16,7 @@
                                                             
   <decod_bloc id="0">                                       
-    <parameter name="size_decod_queue"                      value="8" />
+    <parameter name="size_decod_queue"                      value="16"/>
     <parameter name="decod_queue_scheme"                    value="1" />
-    <parameter name="nb_inst_decod"                         value="2" />
+    <parameter name="nb_inst_decod"                         value="4" />
     <parameter name="nb_context_select"                     value="1" />
     <parameter name="context_select_priority"               value="1" />
@@ -25,22 +25,22 @@
                                                             
   <rename_bloc id="0">                                      
-    <parameter name="nb_inst_insert"                        value="2" />
-    <parameter name="nb_inst_retire"                        value="2" />
+    <parameter name="nb_inst_insert"                        value="4" />
+    <parameter name="nb_inst_retire"                        value="4" />
     <parameter name="rename_select_priority"                value="1" />
     <parameter name="rename_select_load_balancing"          value="1" />
     <parameter name="rename_select_nb_front_end_select"     value="1" />
-    <parameter name="nb_general_register"                   value="128"/>
-    <parameter name="nb_special_register"                   value="64" />
-    <parameter name="nb_reg_free"                           value="2" />
-    <parameter name="nb_rename_unit_bank"                   value="2" />
+    <parameter name="nb_general_register"                   value="256"/>
+    <parameter name="nb_special_register"                   value="128"/>
+    <parameter name="nb_reg_free"                           value="8" />
+    <parameter name="nb_rename_unit_bank"                   value="8" />
   </rename_bloc>                                            
                                                             
-  <read_bloc id="0,1,2,3">                                        
+  <read_bloc id="0,1,2,3,4,5">
     <parameter name="size_read_queue"                       value="4" />
     <parameter name="size_reservation_station"              value="4" />
     <parameter name="nb_inst_retire_reservation_station"    value="4" />
   </read_bloc>                                              
-                                                            
-  <write_bloc id="0,1,2,3">
+
+  <write_bloc id="0,1,2,3,4,5">
     <parameter name="size_write_queue"                      value="4" />
     <parameter name="size_execute_queue"                    value="4" />
@@ -48,10 +48,10 @@
     <parameter name="write_queue_scheme"                    value="1" />
   </write_bloc>                                             
-                                                            
+
   <load_store_unit id="0">                                  
-    <parameter name="size_store_queue"                      value="32" />
-    <parameter name="size_load_queue"                       value="8" />
+    <parameter name="size_store_queue"                      value="16" />
+    <parameter name="size_load_queue"                       value="32" />
     <parameter name="size_speculative_access_queue"         value="4" />
-    <parameter name="nb_port_check"                         value="1" />
+    <parameter name="nb_port_check"                         value="4" />
     <parameter name="speculative_load"                      value="2" />
     <parameter name="nb_bypass_memory"                      value="0" />
@@ -61,4 +61,11 @@
 
   <functionnal_unit id="0">
+    <parameter name="nb_inst_functionnal_unit" value="1" />
+
+    <timing type="8"  latence="1" delay="1" />
+    <timing type="10" latence="1" delay="1" />
+  </functionnal_unit>
+
+  <functionnal_unit id="1,2,3,4" >
     <parameter name="nb_inst_functionnal_unit" value="1" />
 
@@ -70,20 +77,4 @@
     <timing type="6"  latence="1" delay="1" />
     <timing type="7"  latence="1" delay="1" />
-    <timing type="8"  latence="1" delay="1" />
-    <timing type="10" latence="1" delay="1" />
-  </functionnal_unit>
-
-  <functionnal_unit id="1,2">
-    <parameter name="nb_inst_functionnal_unit" value="1" />
-
-    <timing type="0"  latence="1" delay="1" />
-    <timing type="1"  latence="1" delay="1" />
-    <timing type="2"  latence="1" delay="1" />
-    <timing type="3"  latence="1" delay="1" />
-    <timing type="4"  latence="1" delay="1" />
-    <timing type="6"  latence="1" delay="1" />
-    <timing type="7"  latence="1" delay="1" />
-
-    <timing type="10" latence="1" delay="1" />
   </functionnal_unit>
 
@@ -94,25 +85,51 @@
     <parameter name="nb_inst_branch_decod"                  value="1" />
     <parameter name="nb_inst_branch_update"                 value="1" />
-    <parameter name="btb_size_queue"                        value="64"/>
-    <parameter name="btb_associativity"                     value="2" />
+    <parameter name="btb_size_queue"                        value="256" />
+    <parameter name="btb_associativity"                     value="8" />
     <parameter name="btb_size_counter"                      value="2" />
     <parameter name="btb_victim_scheme"                     value="3" />
-    <parameter name="dir_predictor_scheme"                  value="2" />
+    <parameter name="dir_predictor_scheme"                  value="4" />
+                                                            
+    <predictor id="0">                                      
+      <parameter name="dir_have_bht"                        value="1"  />
+      <parameter name="dir_bht_size_shifter"                value="4"  />
+      <parameter name="dir_bht_nb_shifter"                  value="64" />
+      <parameter name="dir_have_pht"                        value="1"  />
+      <parameter name="dir_pht_size_counter"                value="2"  />
+      <parameter name="dir_pht_nb_counter"                  value="64" />
+      <parameter name="dir_pht_size_address_share"          value="0"  />
+    </predictor>                                            
+    <predictor id="1">                                      
+      <parameter name="dir_have_bht"                        value="1" />
+      <parameter name="dir_bht_size_shifter"                value="4" />
+      <parameter name="dir_bht_nb_shifter"                  value="1" />
+      <parameter name="dir_have_pht"                        value="1" />
+      <parameter name="dir_pht_size_counter"                value="2" />
+      <parameter name="dir_pht_nb_counter"                  value="128" />
+      <parameter name="dir_pht_size_address_share"          value="0" />
+    </predictor>                                            
+    <predictor id="2">                                      
+      <parameter name="dir_have_bht"                        value="0" />
+      <parameter name="dir_have_pht"                        value="1" />
+      <parameter name="dir_pht_size_counter"                value="2" />
+      <parameter name="dir_pht_nb_counter"                  value="128" />
+      <parameter name="dir_pht_size_address_share"          value="0" />
+    </predictor>                                            
   </front_end>
 
   <ooo_engine id="0">
     <parameter name="nb_rename_unit"                        value="1" />
-    <parameter name="nb_inst_issue"                         value="2" />
+    <parameter name="nb_inst_issue"                         value="4" />
     <parameter name="nb_inst_reexecute"                     value="1" />
-    <parameter name="nb_inst_commit"                        value="2" />
-    <parameter name="nb_inst_branch_complete"               value="1" />
+    <parameter name="nb_inst_commit"                        value="4" />
+    <parameter name="nb_inst_branch_complete"               value="2" />
     <parameter name="nb_rename_unit_select"                 value="1" />
     <parameter name="nb_execute_loop_select"                value="1" />
-    <parameter name="size_re_order_buffer"                  value="64"/>
-    <parameter name="nb_re_order_buffer_bank"               value="32"/>
+    <parameter name="size_re_order_buffer"                  value="128"/>
+    <parameter name="nb_re_order_buffer_bank"               value="64" />
     <parameter name="commit_priority"                       value="1" />
     <parameter name="commit_load_balancing"                 value="1" />
-    <parameter name="size_issue_queue"                      value="8" />
-    <parameter name="nb_issue_queue_bank"                   value="2" />
+    <parameter name="size_issue_queue"                      value="16" />
+    <parameter name="nb_issue_queue_bank"                   value="4" />
     <parameter name="issue_queue_scheme"                    value="0" />
     <parameter name="issue_priority"                        value="1" />
@@ -124,28 +141,15 @@
 
   <execute_loop id="0">
-    <parameter name="nb_read_unit"                          value="4" />
-    <parameter name="nb_write_unit"                         value="4" />
-    <parameter name="nb_gpr_bank"                           value="2" />
-    <parameter name="nb_gpr_port_read_by_bank"              value="2" />
-    <parameter name="nb_gpr_port_write_by_bank"             value="2" />
-    <parameter name="nb_spr_bank"                           value="2" />
-    <parameter name="nb_spr_port_read_by_bank"              value="2" />
-    <parameter name="nb_spr_port_write_by_bank"             value="2" />
+    <parameter name="nb_read_unit"                          value="6" />
+    <parameter name="nb_write_unit"                         value="6" />
+    <parameter name="nb_execute_unit"                       value="6" />
+    <parameter name="nb_gpr_bank"                           value="1" />
+    <parameter name="nb_gpr_port_read_by_bank"              value="12" />
+    <parameter name="nb_gpr_port_write_by_bank"             value="6" />
+    <parameter name="nb_spr_bank"                           value="1" />
+    <parameter name="nb_spr_port_read_by_bank"              value="5" />
+    <parameter name="nb_spr_port_write_by_bank"             value="5" />
     <parameter name="execution_unit_to_write_unit_priority" value="1" />
     <parameter name="read_unit_to_execution_unit_priority"  value="1" />
-
-    <execute_unit id="0">
-      <link name="link_execute_unit_with_load_store_unit"   src="0"/>
-    </execute_unit>
-    <execute_unit id="1">
-      <link name="link_execute_unit_with_functionnal_unit"  src="0"/>
-    </execute_unit>
-    <execute_unit id="2">
-      <link name="link_execute_unit_with_functionnal_unit"  src="1"/>
-    </execute_unit>
-    <execute_unit id="3">
-      <link name="link_execute_unit_with_functionnal_unit"  src="2"/>
-    </execute_unit>
-
   </execute_loop>
 
@@ -171,4 +175,6 @@
   <link name="link_read_unit_with_read_bloc"           src="2"     dest="0.2" />
   <link name="link_read_unit_with_read_bloc"           src="3"     dest="0.3" />
+  <link name="link_read_unit_with_read_bloc"           src="4"     dest="0.4" />
+  <link name="link_read_unit_with_read_bloc"           src="5"     dest="0.5" />
 
   <link name="link_write_unit_with_write_bloc"         src="0"     dest="0.0" />
@@ -176,4 +182,6 @@
   <link name="link_write_unit_with_write_bloc"         src="2"     dest="0.2" />
   <link name="link_write_unit_with_write_bloc"         src="3"     dest="0.3" />
+  <link name="link_write_unit_with_write_bloc"         src="4"     dest="0.4" />
+  <link name="link_write_unit_with_write_bloc"         src="5"     dest="0.5" />
 
   <link name="link_decod_bloc_with_thread"             src="0"     dest="0"   />
@@ -181,15 +189,43 @@
   <link name="link_load_store_unit_with_thread"        src="0"     dest="0"   />
 
+  <link name="link_execute_unit_with_load_store_unit"  src="0"     dest="0.0"/>
+  <link name="link_execute_unit_with_functionnal_unit" src="0"     dest="0.1"/>
+  <link name="link_execute_unit_with_functionnal_unit" src="1"     dest="0.2"/>
+  <link name="link_execute_unit_with_functionnal_unit" src="2"     dest="0.3"/>
+  <link name="link_execute_unit_with_functionnal_unit" src="3"     dest="0.4"/>
+  <link name="link_execute_unit_with_functionnal_unit" src="4"     dest="0.5"/>
+
   <link name="link_icache_port_with_thread"            src="0"     dest="0"   />
   <link name="link_dcache_port_with_load_store_unit"   src="0.0"   dest="0"   />
 
   <link name="table_dispatch"                          src="0.0.0" dest="1"   />
+  <link name="table_dispatch"                          src="0.1.0" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.0" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.0" dest="1"   />
+
   <link name="table_dispatch"                          src="0.0.1" dest="1"   />
+  <link name="table_dispatch"                          src="0.1.1" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.1" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.1" dest="1"   />
+
   <link name="table_dispatch"                          src="0.0.2" dest="1"   />
+  <link name="table_dispatch"                          src="0.1.2" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.2" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.2" dest="1"   />
+
   <link name="table_dispatch"                          src="0.0.3" dest="1"   />
-  <link name="table_dispatch"                          src="0.1.0" dest="1"   />
-  <link name="table_dispatch"                          src="0.1.1" dest="1"   />
-  <link name="table_dispatch"                          src="0.1.2" dest="1"   />
   <link name="table_dispatch"                          src="0.1.3" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.3" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.3" dest="1"   />
+
+  <link name="table_dispatch"                          src="0.0.4" dest="1"   />
+  <link name="table_dispatch"                          src="0.1.4" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.4" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.4" dest="1"   />
+
+  <link name="table_dispatch"                          src="0.0.5" dest="1"   />
+  <link name="table_dispatch"                          src="0.1.5" dest="1"   />
+  <link name="table_dispatch"                          src="0.2.5" dest="1"   />
+  <link name="table_dispatch"                          src="0.3.5" dest="1"   />
 
   <link name="link_read_bloc_and_load_store_unit"      src="0.0"   dest="1"   />
@@ -197,17 +233,37 @@
   <link name="link_read_bloc_and_load_store_unit"      src="2.0"   dest="0"   />
   <link name="link_read_bloc_and_load_store_unit"      src="3.0"   dest="0"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="4.0"   dest="0"   />
+  <link name="link_read_bloc_and_load_store_unit"      src="5.0"   dest="0"   />
 
   <link name="link_read_bloc_and_functionnal_unit"     src="0.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="3.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="4.0"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="5.0"   dest="0"   />
   <link name="link_read_bloc_and_functionnal_unit"     src="0.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="3.1"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="4.1"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="5.1"   dest="1"   />
   <link name="link_read_bloc_and_functionnal_unit"     src="0.2"   dest="0"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="1.0"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="1.1"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="1.2"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="2.0"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="2.1"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.2"   dest="0"   />
   <link name="link_read_bloc_and_functionnal_unit"     src="2.2"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="3.0"   dest="1"   />
-  <link name="link_read_bloc_and_functionnal_unit"     src="3.1"   dest="1"   />
   <link name="link_read_bloc_and_functionnal_unit"     src="3.2"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="4.2"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="5.2"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.3"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.3"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.3"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="3.3"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="4.3"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="5.3"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="0.4"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="1.4"   dest="0"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="2.4"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="3.4"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="4.4"   dest="1"   />
+  <link name="link_read_bloc_and_functionnal_unit"     src="5.4"   dest="1"   />
 
   <link name="link_write_bloc_and_load_store_unit"     src="0.0"   dest="1"   />
@@ -215,21 +271,47 @@
   <link name="link_write_bloc_and_load_store_unit"     src="2.0"   dest="0"   />
   <link name="link_write_bloc_and_load_store_unit"     src="3.0"   dest="0"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="4.0"   dest="0"   />
+  <link name="link_write_bloc_and_load_store_unit"     src="5.0"   dest="0"   />
 
   <link name="link_write_bloc_and_functionnal_unit"    src="0.0"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="3.0"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="4.0"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="5.0"   dest="0"   />
+
   <link name="link_write_bloc_and_functionnal_unit"    src="0.1"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="3.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="4.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="5.1"   dest="1"   />
+
   <link name="link_write_bloc_and_functionnal_unit"    src="0.2"   dest="0"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="1.0"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="1.1"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="1.2"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="2.0"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="2.1"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.2"   dest="0"   />
   <link name="link_write_bloc_and_functionnal_unit"    src="2.2"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="3.0"   dest="1"   />
-  <link name="link_write_bloc_and_functionnal_unit"    src="3.1"   dest="1"   />
   <link name="link_write_bloc_and_functionnal_unit"    src="3.2"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="4.2"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="5.2"   dest="1"   />
+
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.3"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.3"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.3"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="3.3"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="4.3"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="5.3"   dest="1"   />
+
+  <link name="link_write_bloc_and_functionnal_unit"    src="0.4"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="1.4"   dest="0"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="2.4"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="3.4"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="4.4"   dest="1"   />
+  <link name="link_write_bloc_and_functionnal_unit"    src="5.4"   dest="1"   />
 
   <link name="link_thread_and_functionnal_unit"        src="0.0"   dest="1"   />
   <link name="link_thread_and_functionnal_unit"        src="0.1"   dest="1"   />
   <link name="link_thread_and_functionnal_unit"        src="0.2"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="0.3"   dest="1"   />
+  <link name="link_thread_and_functionnal_unit"        src="0.4"   dest="1"   />
 
 </core>
Index: trunk/IPs/systemC/processor/Morpheo/Files/debug.sim
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Files/debug.sim	(revision 119)
+++ trunk/IPs/systemC/processor/Morpheo/Files/debug.sim	(revision 120)
@@ -24,7 +24,9 @@
                                                             
   <parameter  name="debug_level"                            value="3"       />
-  <parameter  name="debug_cycle_start"                      value="18000"   />
-  <parameter  name="debug_cycle_stop"                       value="18100"   />
-  <parameter  name="debug_have_log_file"                    value="0"       />
+  <parameter  name="debug_cycle_start"                      value="30"      />
+  <parameter  name="debug_cycle_stop"                       value="50"      />
+
+  <parameter  name="debug_log_file_generate"                value="0"       />
+  <parameter  name="debug_log_file_with_pid"                value="0"       />
   <parameter  name="debug_idle_cycle"                       value="200"     />
   <parameter  name="debug_idle_time"                        value="10"      />
@@ -104,3 +106,7 @@
   <component  name="TopLevel"                               model="systemc" debug="1" />
 
+  <component  name="Behavioural"                            model="systemc" debug="1" />
+  <component  name="Interface"                              model="systemc" debug="1" />
+  <component  name="Allocation"                             model="systemc" debug="1" />
+
 </parameters>
