Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Parameters.cpp	(revision 88)
@@ -19,51 +19,71 @@
 #undef  FUNCTION
 #define FUNCTION "Register_unit_Glue::Parameters"
-  Parameters::Parameters (const uint32_t   nb_ooo_engine        ,
-			  const uint32_t   size_general_data    ,
-			  const uint32_t   size_special_data    ,
-			  const uint32_t   nb_gpr_read          ,
-			  const uint32_t   nb_spr_read          ,    
-			  const uint32_t   nb_gpr_write         ,
-			  const uint32_t   nb_spr_write         ,
-			  const uint32_t * nb_inst_insert_rob   ,
-			  const uint32_t * nb_inst_retire_rob   ):
-    _nb_ooo_engine        (nb_ooo_engine    ),
-    _size_general_data    (size_general_data),
-    _size_special_data    (size_special_data),
-    _nb_gpr_read          (nb_gpr_read      ),
-    _nb_spr_read          (nb_spr_read      ),    
-    _nb_gpr_write         (nb_gpr_write     ),
-    _nb_spr_write         (nb_spr_write     ),
-    _nb_inst_insert_rob   (nb_inst_insert_rob),
-    _nb_inst_retire_rob   (nb_inst_retire_rob),
-    _have_port_ooo_engine_id (nb_ooo_engine>1)
+  Parameters::Parameters (uint32_t   nb_ooo_engine        ,
+			  uint32_t   size_general_data    ,
+			  uint32_t   size_special_data    ,
+			  uint32_t   nb_gpr_read          ,
+			  uint32_t   nb_spr_read          ,    
+			  uint32_t   nb_gpr_write         ,
+			  uint32_t   nb_spr_write         ,
+			  uint32_t * nb_inst_insert_rob   ,
+			  uint32_t * nb_inst_retire_rob   ,
+                          bool       is_toplevel          )
   {
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    
+    _nb_ooo_engine           = nb_ooo_engine     ;
+    _nb_gpr_read             = nb_gpr_read       ;
+    _nb_spr_read             = nb_spr_read       ;    
+    _nb_gpr_write            = nb_gpr_write      ;
+    _nb_spr_write            = nb_spr_write      ;
+    _nb_inst_insert_rob      = nb_inst_insert_rob;
+    _nb_inst_retire_rob      = nb_inst_retire_rob;
+
     test();
+
+    if (is_toplevel)
+      {
+        _size_ooo_engine_id      = log2(nb_ooo_engine);
+        _size_general_data       = size_general_data ;
+        _size_special_data       = size_special_data ;
+        
+        _have_port_ooo_engine_id = _size_ooo_engine_id > 0;
+
+        copy();
+      }
+
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
   };
   
+// #undef  FUNCTION
+// #define FUNCTION "Register_unit_Glue::Parameters (copy)"
+//   Parameters::Parameters (Parameters & param):
+//     _nb_ooo_engine        (param._nb_ooo_engine    ),
+//     _size_general_data    (param._size_general_data),
+//     _size_special_data    (param._size_special_data),
+//     _nb_gpr_read          (param._nb_gpr_read      ),
+//     _nb_spr_read          (param._nb_spr_read      ),    
+//     _nb_gpr_write         (param._nb_gpr_write     ),
+//     _nb_spr_write         (param._nb_spr_write     ),
+//     _nb_inst_insert_rob   (param._nb_inst_insert_rob),
+//     _nb_inst_retire_rob   (param._nb_inst_retire_rob),
+//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id)
+//   {
+//     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+//     test();
+//     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+//   };
+
 #undef  FUNCTION
-#define FUNCTION "Register_unit_Glue::Parameters (copy)"
-  Parameters::Parameters (Parameters & param):
-    _nb_ooo_engine        (param._nb_ooo_engine    ),
-    _size_general_data    (param._size_general_data),
-    _size_special_data    (param._size_special_data),
-    _nb_gpr_read          (param._nb_gpr_read      ),
-    _nb_spr_read          (param._nb_spr_read      ),    
-    _nb_gpr_write         (param._nb_gpr_write     ),
-    _nb_spr_write         (param._nb_spr_write     ),
-    _nb_inst_insert_rob   (param._nb_inst_insert_rob),
-    _nb_inst_retire_rob   (param._nb_inst_retire_rob),
-    _have_port_ooo_engine_id (param._have_port_ooo_engine_id)
+#define FUNCTION "Register_unit_Glue::~Parameters"
+  Parameters::~Parameters (void) 
   {
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
-    test();
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
   };
 
 #undef  FUNCTION
-#define FUNCTION "Register_unit_Glue::~Parameters"
-  Parameters::~Parameters () 
+#define FUNCTION "Register_unit_Glue::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue.cpp	(revision 88)
@@ -38,22 +38,36 @@
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
 
+#if DEBUG_Register_unit_Glue == true
+    log_printf(INFO,Register_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation");
     allocation ();
 
 #ifdef STATISTICS
-    log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation of statistics");
-
-    // Allocation of statistics
-    statistics_declaration(param_statistics);
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {
+        log_printf(INFO,Register_unit_Glue,FUNCTION,"Allocation of statistics");
+        
+        // Allocation of statistics
+        statistics_declaration(param_statistics);
+      }
 #endif
 
 #ifdef VHDL
-    // generate the vhdl
-    log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate the vhdl");
-
-    vhdl();
+    if (usage_is_set(_usage,USE_VHDL))
+      {
+        // generate the vhdl
+        log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate the vhdl");
+        
+        vhdl();
+      }
 #endif
 
 #ifdef SYSTEMC
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
     // Constant
 
@@ -473,62 +487,62 @@
 #endif    
 
-    log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_retire");
-
-    SC_METHOD (genMealy_retire);
-    dont_initialize ();
-//     sensitive_neg << *(in_CLOCK);
-    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-      {
-	uint32_t x=_param->_nb_inst_retire_rob [i];
-	for (uint32_t j=0; j<x; j++)
-	  sensitive << *( in_RETIRE_ROB_VAL                [i][j])
-		    << *( in_RETIRE_ROB_RD_OLD_USE         [i][j]) 
-		    << *( in_RETIRE_ROB_RD_NEW_USE         [i][j])
-		    << *( in_RETIRE_ROB_RE_OLD_USE         [i][j]) 
-		    << *( in_RETIRE_ROB_RE_NEW_USE         [i][j])
-		    << *( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j])
-		    << *( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j])
-		    << *( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j])
-		    << *( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]);
-      }
-#ifdef SYSTEMCASS_SPECIFIC
-    // List dependency information
-    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-      {
-	uint32_t x=_param->_nb_inst_retire_rob [i];
-	for (uint32_t j=0; j<x; j++)
-	  {
-	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
-	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
-
-	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_RD_OLD_USE         [i][j])); 
-	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
-
-	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
-	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_RD_NEW_USE         [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
-
-	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
-	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_RE_OLD_USE         [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
-
-	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
-	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_RE_NEW_USE         [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
-	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
-	  }
-      }
-#endif    
-
+//     log_printf(INFO,Register_unit_Glue,FUNCTION,"Method - genMealy_retire");
+
+//     SC_METHOD (genMealy_retire);
+//     dont_initialize ();
+// //     sensitive_neg << *(in_CLOCK);
+//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+//       {
+// 	uint32_t x=_param->_nb_inst_retire_rob [i];
+// 	for (uint32_t j=0; j<x; j++)
+// 	  sensitive << *( in_RETIRE_ROB_VAL                [i][j])
+// 		    << *( in_RETIRE_ROB_RD_OLD_USE         [i][j]) 
+// 		    << *( in_RETIRE_ROB_RD_NEW_USE         [i][j])
+// 		    << *( in_RETIRE_ROB_RE_OLD_USE         [i][j]) 
+// 		    << *( in_RETIRE_ROB_RE_NEW_USE         [i][j])
+// 		    << *( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j])
+// 		    << *( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j])
+// 		    << *( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j])
+// 		    << *( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]);
+//       }
+// #ifdef SYSTEMCASS_SPECIFIC
+//     // List dependency information
+//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+//       {
+// 	uint32_t x=_param->_nb_inst_retire_rob [i];
+// 	for (uint32_t j=0; j<x; j++)
+// 	  {
+// 	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_ACK                [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
+
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_RD_OLD_USE         [i][j])); 
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
+
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_RD_NEW_USE         [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
+
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_RE_OLD_USE         [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j]));
+
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_VAL                [i][j])); 
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_RE_NEW_USE         [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j]));
+// 	    (*(out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j]))(*( in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j]));
+// 	  }
+//       }
+// #endif    
+      }
 #endif
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
@@ -542,7 +556,10 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate Statistics file");
-
-    delete _stat;
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {
+        log_printf(INFO,Register_unit_Glue,FUNCTION,"Generate Statistics file");
+        
+        delete _stat;
+      }
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp	(revision 88)
@@ -90,5 +90,5 @@
        out_GPR_READ_ACK           [j] = interface->set_signal_valack_out (ACK);
        if (_param->_have_port_ooo_engine_id == true)
-        in_GPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", log2(_param->_nb_ooo_engine));
+        in_GPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", _param->_size_ooo_engine_id);
        out_GPR_READ_DATA          [j] = interface->set_signal_out<Tgeneral_data_t> ("data"         , _param->_size_general_data);
        out_GPR_READ_DATA_VAL      [j] = interface->set_signal_out<Tcontrol_t     > ("data_val"     , 1);
@@ -166,5 +166,5 @@
        out_SPR_READ_ACK           [j] = interface->set_signal_valack_out (ACK);
        if (_param->_have_port_ooo_engine_id == true)
-        in_SPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", log2(_param->_nb_ooo_engine));
+        in_SPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", _param->_size_ooo_engine_id);
        out_SPR_READ_DATA          [j] = interface->set_signal_out<Tspecial_data_t> ("data"         , _param->_size_special_data);
        out_SPR_READ_DATA_VAL      [j] = interface->set_signal_out<Tcontrol_t     > ("data_val"     , 1);
@@ -236,5 +236,5 @@
        out_GPR_WRITE_ACK           [j] = interface->set_signal_valack_out (ACK);
        if (_param->_have_port_ooo_engine_id == true)
-        in_GPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", log2(_param->_nb_ooo_engine));
+        in_GPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", _param->_size_ooo_engine_id);
 
        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
@@ -302,5 +302,5 @@
        out_SPR_WRITE_ACK           [j] = interface->set_signal_valack_out (ACK);
        if (_param->_have_port_ooo_engine_id == true)
-        in_SPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", log2(_param->_nb_ooo_engine));
+        in_SPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t     > ("ooo_engine_id", _param->_size_ooo_engine_id);
 
        for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
@@ -400,112 +400,113 @@
       }
 
-    // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    in_RETIRE_ROB_VAL                      = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-   out_RETIRE_ROB_ACK                      = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_RD_OLD_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_RD_NEW_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_RE_OLD_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_RE_NEW_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-   out_RETIRE_ROB_GPR_STATUS_OLD_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
-   out_RETIRE_ROB_GPR_STATUS_NEW_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_GPR_STATUS_OLD_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_GPR_STATUS_NEW_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-   out_RETIRE_ROB_SPR_STATUS_OLD_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
-   out_RETIRE_ROB_SPR_STATUS_NEW_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_SPR_STATUS_OLD_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-    in_RETIRE_ROB_SPR_STATUS_NEW_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
-
-    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-      {
-	uint32_t x=_param->_nb_inst_retire_rob [i];
-
-	 in_RETIRE_ROB_VAL                      [i] = new SC_IN (Tcontrol_t) * [x];
-	out_RETIRE_ROB_ACK                      [i] = new SC_OUT(Tcontrol_t) * [x];
-	 in_RETIRE_ROB_RD_OLD_USE               [i] = new SC_IN (Tcontrol_t) * [x];
-	 in_RETIRE_ROB_RD_NEW_USE               [i] = new SC_IN (Tcontrol_t) * [x];
-	 in_RETIRE_ROB_RE_OLD_USE               [i] = new SC_IN (Tcontrol_t) * [x];
-	 in_RETIRE_ROB_RE_NEW_USE               [i] = new SC_IN (Tcontrol_t) * [x];
-	out_RETIRE_ROB_GPR_STATUS_OLD_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
-	out_RETIRE_ROB_GPR_STATUS_NEW_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
-	 in_RETIRE_ROB_GPR_STATUS_OLD_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
-	 in_RETIRE_ROB_GPR_STATUS_NEW_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
-	out_RETIRE_ROB_SPR_STATUS_OLD_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
-	out_RETIRE_ROB_SPR_STATUS_NEW_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
-	 in_RETIRE_ROB_SPR_STATUS_OLD_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
-	 in_RETIRE_ROB_SPR_STATUS_NEW_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
+//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//     in_RETIRE_ROB_VAL                      = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//    out_RETIRE_ROB_ACK                      = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_RD_OLD_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_RD_NEW_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_RE_OLD_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_RE_NEW_USE               = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//    out_RETIRE_ROB_GPR_STATUS_OLD_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
+//    out_RETIRE_ROB_GPR_STATUS_NEW_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_GPR_STATUS_OLD_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_GPR_STATUS_NEW_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//    out_RETIRE_ROB_SPR_STATUS_OLD_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
+//    out_RETIRE_ROB_SPR_STATUS_NEW_VAL       = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_SPR_STATUS_OLD_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+//     in_RETIRE_ROB_SPR_STATUS_NEW_ACK       = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine];
+
+//     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+//       {
+// 	uint32_t x=_param->_nb_inst_retire_rob [i];
+
+// 	 in_RETIRE_ROB_VAL                      [i] = new SC_IN (Tcontrol_t) * [x];
+// 	out_RETIRE_ROB_ACK                      [i] = new SC_OUT(Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_RD_OLD_USE               [i] = new SC_IN (Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_RD_NEW_USE               [i] = new SC_IN (Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_RE_OLD_USE               [i] = new SC_IN (Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_RE_NEW_USE               [i] = new SC_IN (Tcontrol_t) * [x];
+// 	out_RETIRE_ROB_GPR_STATUS_OLD_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
+// 	out_RETIRE_ROB_GPR_STATUS_NEW_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_GPR_STATUS_OLD_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_GPR_STATUS_NEW_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
+// 	out_RETIRE_ROB_SPR_STATUS_OLD_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
+// 	out_RETIRE_ROB_SPR_STATUS_NEW_VAL       [i] = new SC_OUT(Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_SPR_STATUS_OLD_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
+// 	 in_RETIRE_ROB_SPR_STATUS_NEW_ACK       [i] = new SC_IN (Tcontrol_t) * [x];
     
-	for (uint32_t j=0; j<x; j++)
-	  {
-	    {
-	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
-#ifdef POSITION
-								      ,IN
-								      ,WEST
-								      ,"Interface to update status (retire)"
-#endif
-								      );
-
-	       in_RETIRE_ROB_VAL                      [i][j] = interface->set_signal_valack_in (VAL);
-	      out_RETIRE_ROB_ACK                      [i][j] = interface->set_signal_valack_out(ACK);
-	       in_RETIRE_ROB_RD_OLD_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_old_use", 1);
-	       in_RETIRE_ROB_RD_NEW_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_new_use", 1);
-	       in_RETIRE_ROB_RE_OLD_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("re_old_use", 1);
-	       in_RETIRE_ROB_RE_NEW_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("re_new_use", 1);
-	    }
-	    {
-	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_gpr_status_old_"+toString(i)+"_"+toString(j)
-#ifdef POSITION
-								      ,IN
-								      ,EAST
-								      ,"Interface to update status (retire)"
-#endif
-								      );
-
-	      out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j] = interface->set_signal_valack_out(VAL);
-	       in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j] = interface->set_signal_valack_in (ACK);
-	    }
-	    {
-	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_gpr_status_new_"+toString(i)+"_"+toString(j)
-#ifdef POSITION
-								      ,IN
-								      ,EAST
-								      ,"Interface to update status (retire)"
-#endif
-								      );
-
-	      out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j] = interface->set_signal_valack_out(VAL);
-	       in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j] = interface->set_signal_valack_in (ACK);
-	    }
-	    {
-	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_spr_status_old_"+toString(i)+"_"+toString(j)
-#ifdef POSITION
-								      ,IN
-								      ,EAST
-								      ,"Interface to update status (retire)"
-#endif
-								      );
-
-	      out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j] = interface->set_signal_valack_out(VAL);
-	       in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j] = interface->set_signal_valack_in (ACK);
-	    }
-	    {
-	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_spr_status_new_"+toString(i)+"_"+toString(j)
-#ifdef POSITION
-								      ,IN
-								      ,EAST
-								      ,"Interface to update status (retire)"
-#endif
-								      );
-
-	      out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j] = interface->set_signal_valack_out(VAL);
-	       in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j] = interface->set_signal_valack_in (ACK);
-	    }
-	  }
-      }
+// 	for (uint32_t j=0; j<x; j++)
+// 	  {
+// 	    {
+// 	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_"+toString(i)+"_"+toString(j)
+// #ifdef POSITION
+// 								      ,IN
+// 								      ,WEST
+// 								      ,"Interface to update status (retire)"
+// #endif
+// 								      );
+
+// 	       in_RETIRE_ROB_VAL                      [i][j] = interface->set_signal_valack_in (VAL);
+// 	      out_RETIRE_ROB_ACK                      [i][j] = interface->set_signal_valack_out(ACK);
+// 	       in_RETIRE_ROB_RD_OLD_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_old_use", 1);
+// 	       in_RETIRE_ROB_RD_NEW_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_new_use", 1);
+// 	       in_RETIRE_ROB_RE_OLD_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("re_old_use", 1);
+// 	       in_RETIRE_ROB_RE_NEW_USE               [i][j] = interface->set_signal_in <Tcontrol_t> ("re_new_use", 1);
+// 	    }
+// 	    {
+// 	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_gpr_status_old_"+toString(i)+"_"+toString(j)
+// #ifdef POSITION
+// 								      ,IN
+// 								      ,EAST
+// 								      ,"Interface to update status (retire)"
+// #endif
+// 								      );
+
+// 	      out_RETIRE_ROB_GPR_STATUS_OLD_VAL [i][j] = interface->set_signal_valack_out(VAL);
+// 	       in_RETIRE_ROB_GPR_STATUS_OLD_ACK [i][j] = interface->set_signal_valack_in (ACK);
+// 	    }
+// 	    {
+// 	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_gpr_status_new_"+toString(i)+"_"+toString(j)
+// #ifdef POSITION
+// 								      ,IN
+// 								      ,EAST
+// 								      ,"Interface to update status (retire)"
+// #endif
+// 								      );
+
+// 	      out_RETIRE_ROB_GPR_STATUS_NEW_VAL [i][j] = interface->set_signal_valack_out(VAL);
+// 	       in_RETIRE_ROB_GPR_STATUS_NEW_ACK [i][j] = interface->set_signal_valack_in (ACK);
+// 	    }
+// 	    {
+// 	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_spr_status_old_"+toString(i)+"_"+toString(j)
+// #ifdef POSITION
+// 								      ,IN
+// 								      ,EAST
+// 								      ,"Interface to update status (retire)"
+// #endif
+// 								      );
+
+// 	      out_RETIRE_ROB_SPR_STATUS_OLD_VAL [i][j] = interface->set_signal_valack_out(VAL);
+// 	       in_RETIRE_ROB_SPR_STATUS_OLD_ACK [i][j] = interface->set_signal_valack_in (ACK);
+// 	    }
+// 	    {
+// 	      Interface_fifo * interface = _interfaces->set_interface("retire_rob_spr_status_new_"+toString(i)+"_"+toString(j)
+// #ifdef POSITION
+// 								      ,IN
+// 								      ,EAST
+// 								      ,"Interface to update status (retire)"
+// #endif
+// 								      );
+
+// 	      out_RETIRE_ROB_SPR_STATUS_NEW_VAL [i][j] = interface->set_signal_valack_out(VAL);
+// 	       in_RETIRE_ROB_SPR_STATUS_NEW_ACK [i][j] = interface->set_signal_valack_in (ACK);
+// 	    }
+// 	  }
+//       }
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp	(revision 88)
@@ -23,4 +23,6 @@
     log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
 
+    if (usage_is_set(_usage,USE_VHDL))
+      {
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     delete    in_CLOCK ;
@@ -95,20 +97,20 @@
     delete []  in_INSERT_ROB_SPR_STATUS_ACK       ;
 
-    // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    delete []  in_RETIRE_ROB_VAL                      ;
-    delete [] out_RETIRE_ROB_ACK                      ;
-    delete []  in_RETIRE_ROB_RD_OLD_USE               ;
-    delete []  in_RETIRE_ROB_RD_NEW_USE               ;
-    delete []  in_RETIRE_ROB_RE_OLD_USE               ;
-    delete []  in_RETIRE_ROB_RE_NEW_USE               ;
-    delete [] out_RETIRE_ROB_GPR_STATUS_OLD_VAL       ;
-    delete [] out_RETIRE_ROB_GPR_STATUS_NEW_VAL       ;
-    delete []  in_RETIRE_ROB_GPR_STATUS_OLD_ACK       ;
-    delete []  in_RETIRE_ROB_GPR_STATUS_NEW_ACK       ;
-    delete [] out_RETIRE_ROB_SPR_STATUS_OLD_VAL       ;
-    delete [] out_RETIRE_ROB_SPR_STATUS_NEW_VAL       ;
-    delete []  in_RETIRE_ROB_SPR_STATUS_OLD_ACK       ;
-    delete []  in_RETIRE_ROB_SPR_STATUS_NEW_ACK       ;
-
+//     // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+//     delete []  in_RETIRE_ROB_VAL                      ;
+//     delete [] out_RETIRE_ROB_ACK                      ;
+//     delete []  in_RETIRE_ROB_RD_OLD_USE               ;
+//     delete []  in_RETIRE_ROB_RD_NEW_USE               ;
+//     delete []  in_RETIRE_ROB_RE_OLD_USE               ;
+//     delete []  in_RETIRE_ROB_RE_NEW_USE               ;
+//     delete [] out_RETIRE_ROB_GPR_STATUS_OLD_VAL       ;
+//     delete [] out_RETIRE_ROB_GPR_STATUS_NEW_VAL       ;
+//     delete []  in_RETIRE_ROB_GPR_STATUS_OLD_ACK       ;
+//     delete []  in_RETIRE_ROB_GPR_STATUS_NEW_ACK       ;
+//     delete [] out_RETIRE_ROB_SPR_STATUS_OLD_VAL       ;
+//     delete [] out_RETIRE_ROB_SPR_STATUS_NEW_VAL       ;
+//     delete []  in_RETIRE_ROB_SPR_STATUS_OLD_ACK       ;
+//     delete []  in_RETIRE_ROB_SPR_STATUS_NEW_ACK       ;
+      }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_end_cycle.cpp	(revision 88)
@@ -24,5 +24,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -30,5 +31,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read.cpp	(revision 88)
@@ -23,19 +23,28 @@
   void Register_unit_Glue::genMealy_gpr_read (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+// 	  PORT_WRITE(out_GPR_READ_ACK      [j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
-
-	// multiplexor
-	PORT_WRITE(out_GPR_READ_ACK      [j], registerfile_ack and status_ack);
-	PORT_WRITE(out_GPR_READ_DATA     [j], PORT_READ(in_GPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
-	PORT_WRITE(out_GPR_READ_DATA_VAL [j], PORT_READ(in_GPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
+	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+	  {
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
+	    
+	    // multiplexor
+	    PORT_WRITE(out_GPR_READ_ACK      [j], registerfile_ack and status_ack);
+	    PORT_WRITE(out_GPR_READ_DATA     [j], PORT_READ(in_GPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
+	    PORT_WRITE(out_GPR_READ_DATA_VAL [j], PORT_READ(in_GPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
+	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_registerfile.cpp	(revision 88)
@@ -23,22 +23,32 @@
   void Register_unit_Glue::genMealy_gpr_read_registerfile (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j],0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
-	Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
-    
-	Tcontrol_t registerfile_val = val and status_ack;
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_GPR_READ_STATUS_ACK       [ooo_engine_id][j]);
+	    
+	    Tcontrol_t registerfile_val = val and status_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_GPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_read_status.cpp	(revision 88)
@@ -23,22 +23,32 @@
   void Register_unit_Glue::genMealy_gpr_read_status (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_GPR_READ_STATUS_VAL       [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
-	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
-    
-	Tcontrol_t status_val       = val and registerfile_ack;
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_gpr_read; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_GPR_READ_VAL [j]);
+	    Tcontrol_t registerfile_ack = PORT_READ(in_GPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    
+	    Tcontrol_t status_val       = val and registerfile_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_GPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_registerfile.cpp	(revision 88)
@@ -23,21 +23,31 @@
   void Register_unit_Glue::genMealy_gpr_write_registerfile (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
-	Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
-	Tcontrol_t registerfile_val = val and status_ack;
-	
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	    Tcontrol_t registerfile_val = val and status_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_GPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write.cpp	(revision 88)
@@ -23,17 +23,26 @@
   void Register_unit_Glue::genMealy_gpr_write (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
-
-    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_GPR_WRITE_ACK [j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
-
-	// multiplexor
-	PORT_WRITE(out_GPR_WRITE_ACK [j],registerfile_ack and status_ack);
+	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+	  {
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_GPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	    
+	    // multiplexor
+	    PORT_WRITE(out_GPR_WRITE_ACK [j],registerfile_ack and status_ack);
+	  }
       }
-
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_gpr_write_status.cpp	(revision 88)
@@ -23,21 +23,31 @@
   void Register_unit_Glue::genMealy_gpr_write_status (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
-	Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_val       = val and registerfile_ack;
-	
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_GPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_GPR_WRITE_VAL [j]);
+	    Tcontrol_t registerfile_ack = PORT_READ(in_GPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_val       = val and registerfile_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_GPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_insert.cpp	(revision 88)
@@ -23,25 +23,42 @@
   void Register_unit_Glue::genMealy_insert (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-      {
-	uint32_t x=_param->_nb_inst_insert_rob [i];
+      for (uint32_t j=0; j<_param->_nb_inst_insert_rob [i]; j++)
+        {
+          Tcontrol_t val            = PORT_READ(in_INSERT_ROB_VAL [i][j]);
+          Tcontrol_t gpr_use        = PORT_READ(in_INSERT_ROB_RD_USE [i][j]);
+          Tcontrol_t spr_use        = PORT_READ(in_INSERT_ROB_RE_USE [i][j]);
+          Tcontrol_t gpr_status_ack = PORT_READ(in_INSERT_ROB_GPR_STATUS_ACK [i][j]);
+          Tcontrol_t spr_status_ack = PORT_READ(in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
+	  
+          Tcontrol_t ack            = (gpr_status_ack and 
+                                       spr_status_ack);	    
+          Tcontrol_t gpr_status_val = (val     and 
+                                       gpr_use and 
+                                       spr_status_ack);
+          Tcontrol_t spr_status_val = (val     and 
+                                       spr_use and
+                                       gpr_status_ack);
 
-	for (uint32_t j=0; j<x; j++)
-	  {
-	    Tcontrol_t val = PORT_READ(in_INSERT_ROB_VAL [i][j]);
-	    Tcontrol_t gpr_use = PORT_READ(in_INSERT_ROB_RD_USE [i][j]);
-	    Tcontrol_t spr_use = PORT_READ(in_INSERT_ROB_RE_USE [i][j]);
-	    Tcontrol_t gpr_ack = PORT_READ(in_INSERT_ROB_GPR_STATUS_ACK [i][j]);
-	    Tcontrol_t spr_ack = PORT_READ(in_INSERT_ROB_SPR_STATUS_ACK [i][j]);
-	    
-	    PORT_WRITE(out_INSERT_ROB_ACK [i][j], gpr_ack and spr_ack);	    
-	    PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], val and gpr_use and spr_ack);
-	    PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], val and spr_use and gpr_ack);
-	  }
-      }
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"  * insert_rob [%d][%d]",i,j);
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * val            (r) : %d",val           );
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * ack            (w) : %d",ack           );
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_use (rd)   (r) : %d",gpr_use       );
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_val (w) : %d",gpr_status_val);
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * gpr_status_ack (r) : %d",gpr_status_ack);
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_use (re)   (r) : %d",spr_use       );
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_val (w) : %d",spr_status_val);
+          log_printf(TRACE,OOO_Engine_Glue,FUNCTION,"    * spr_status_ack (r) : %d",spr_status_ack);
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+          PORT_WRITE(out_INSERT_ROB_ACK            [i][j], ack           );
+          PORT_WRITE(out_INSERT_ROB_GPR_STATUS_VAL [i][j], gpr_status_val);
+          PORT_WRITE(out_INSERT_ROB_SPR_STATUS_VAL [i][j], spr_status_val);
+
+        }
+
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_retire.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_retire.cpp	(revision 88)
@@ -8,4 +8,5 @@
  */
 
+/*
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h"
 
@@ -23,5 +24,6 @@
   void Register_unit_Glue::genMealy_retire (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
@@ -57,5 +59,5 @@
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
@@ -68,4 +70,5 @@
 }; // end namespace behavioural
 }; // end namespace morpheo              
+*/
 #endif
 //#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read.cpp	(revision 88)
@@ -23,19 +23,28 @@
   void Register_unit_Glue::genMealy_spr_read (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+// 	  PORT_WRITE(out_SPR_READ_ACK      [j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_ack       = PORT_READ(in_SPR_READ_STATUS_ACK       [ooo_engine_id][j]);
-
-	// multiplexor
-	PORT_WRITE(out_SPR_READ_ACK      [j], registerfile_ack and status_ack);
-	PORT_WRITE(out_SPR_READ_DATA     [j], PORT_READ(in_SPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
-	PORT_WRITE(out_SPR_READ_DATA_VAL [j], PORT_READ(in_SPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
+	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+	  {
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t registerfile_ack = PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_SPR_READ_STATUS_ACK       [ooo_engine_id][j]);
+	    
+	    // multiplexor
+	    PORT_WRITE(out_SPR_READ_ACK      [j], registerfile_ack and status_ack);
+	    PORT_WRITE(out_SPR_READ_DATA     [j], PORT_READ(in_SPR_READ_REGISTERFILE_DATA[ooo_engine_id][j]));
+	    PORT_WRITE(out_SPR_READ_DATA_VAL [j], PORT_READ(in_SPR_READ_STATUS_DATA_VAL  [ooo_engine_id][j]));
+	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_registerfile.cpp	(revision 88)
@@ -23,22 +23,31 @@
   void Register_unit_Glue::genMealy_spr_read_registerfile (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j],0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
-	Tcontrol_t status_ack       = PORT_READ(in_SPR_READ_STATUS_ACK       [ooo_engine_id][j]);
-    
-	Tcontrol_t registerfile_val = val and status_ack;
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
+	    
+	    Tcontrol_t registerfile_val = val and PORT_READ(in_SPR_READ_STATUS_ACK [ooo_engine_id][j]);
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_SPR_READ_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_read_status.cpp	(revision 88)
@@ -23,22 +23,31 @@
   void Register_unit_Glue::genMealy_spr_read_status (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_SPR_READ_STATUS_VAL       [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
-	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
-    
-	Tcontrol_t status_val       = val and registerfile_ack;
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_spr_read; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_SPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_READ_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_SPR_READ_VAL [j]);
+	    
+	    Tcontrol_t status_val       = val and PORT_READ(in_SPR_READ_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_SPR_READ_STATUS_VAL       [i][j], (id and status_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_registerfile.cpp	(revision 88)
@@ -23,21 +23,31 @@
   void Register_unit_Glue::genMealy_spr_write_registerfile (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
-	Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
-	Tcontrol_t registerfile_val = val and status_ack;
-	
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	    Tcontrol_t registerfile_val = val and status_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_SPR_WRITE_REGISTERFILE_VAL [i][j], (id and registerfile_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write.cpp	(revision 88)
@@ -23,17 +23,27 @@
   void Register_unit_Glue::genMealy_spr_write (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_SPR_WRITE_ACK [j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
-
-	// multiplexor
-	PORT_WRITE(out_SPR_WRITE_ACK [j],registerfile_ack and status_ack);
+	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+	  {
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_ack       = PORT_READ(in_SPR_WRITE_STATUS_ACK       [ooo_engine_id][j]);
+	    
+	    // multiplexor
+	    PORT_WRITE(out_SPR_WRITE_ACK [j],registerfile_ack and status_ack);
+	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_genMealy_spr_write_status.cpp	(revision 88)
@@ -23,21 +23,31 @@
   void Register_unit_Glue::genMealy_spr_write_status (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
+    log_function(Register_unit_Glue,FUNCTION,_name.c_str());
 
-    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+//     if (not PORT_READ(in_NRESET))
+//       {
+// 	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+// 	  for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+// 	    PORT_WRITE(out_SPR_WRITE_STATUS_VAL       [i][j], 0);
+//       }
+//     else
       {
-	Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
-	Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
-	Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
-	Tcontrol_t status_val       = val and registerfile_ack;
-	
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	for (uint32_t j=0; j<_param->_nb_spr_write; j++)
 	  {
-	    Tcontrol_t id = (i == ooo_engine_id)?1:0;
-	    PORT_WRITE(out_SPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	    Tcontext_t ooo_engine_id    = (_param->_have_port_ooo_engine_id == true)?PORT_READ(in_SPR_WRITE_OOO_ENGINE_ID[j]):0;
+	    Tcontrol_t val              = PORT_READ(in_SPR_WRITE_VAL [j]);
+	    Tcontrol_t registerfile_ack = PORT_READ(in_SPR_WRITE_REGISTERFILE_ACK [ooo_engine_id][j]);
+	    Tcontrol_t status_val       = val and registerfile_ack;
+	    
+	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
+	      {
+		Tcontrol_t id = (i == ooo_engine_id)?1:0;
+		PORT_WRITE(out_SPR_WRITE_STATUS_VAL       [i][j], (id and status_val));
+	      }
 	  }
       }
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_transition.cpp	(revision 88)
@@ -22,5 +22,5 @@
   void Register_unit_Glue::transition (void)
   {
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_unit_Glue,FUNCTION);
 
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
@@ -28,5 +28,5 @@
 #endif
 
-    log_printf(FUNC,Register_unit_Glue,FUNCTION,"End");
+    log_end(Register_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_vhdl_body.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_vhdl_body.cpp	(revision 88)
@@ -37,5 +37,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_0_"+toString(j)+"_ACK and in_GPR_READ_STATUS_0_"+toString(j)+"_ACK;");
@@ -48,5 +48,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_GPR_READ_REGISTERFILE_0_"+toString(j)+"_DATA;");
@@ -59,5 +59,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_GPR_READ_STATUS_0_"+toString(j)+"_DATA_VAL;");
@@ -71,5 +71,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_READ_"+toString(j)+"_VAL and in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_READ_"+toString(j)+"_VAL and in_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -80,5 +80,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_READ_"+toString(j)+"_VAL and in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_GPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_READ_"+toString(j)+"_VAL and in_GPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -102,5 +102,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_GPR_WRITE_REGISTERFILE_0_"+toString(j)+"_ACK and in_GPR_WRITE_STATUS_0_"+toString(j)+"_ACK;");
@@ -114,5 +114,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_WRITE_"+toString(j)+"_VAL and in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_WRITE_"+toString(j)+"_VAL and in_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -123,5 +123,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_WRITE_"+toString(j)+"_VAL and in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_GPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_GPR_WRITE_"+toString(j)+"_VAL and in_GPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_GPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -145,5 +145,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_0_"+toString(j)+"_ACK and in_SPR_READ_STATUS_0_"+toString(j)+"_ACK;");
@@ -156,5 +156,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_DATA when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_SPR_READ_REGISTERFILE_0_"+toString(j)+"_DATA;");
@@ -167,5 +167,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_DATA_VAL when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_SPR_READ_STATUS_0_"+toString(j)+"_DATA_VAL;");
@@ -179,5 +179,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_READ_"+toString(j)+"_VAL and in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_READ_"+toString(j)+"_VAL and in_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -188,5 +188,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_READ_"+toString(j)+"_VAL and in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_SPR_READ_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_READ_"+toString(j)+"_VAL and in_SPR_READ_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_READ_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -210,5 +210,5 @@
 	for (uint32_t i=_param->_nb_ooo_engine-1; i>=1; i--)
 	  {
-	    vhdl->set_body ("\tin_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else");
+	    vhdl->set_body ("\tin_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK and in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else");
 	  }
 	vhdl->set_body ("\tin_SPR_WRITE_REGISTERFILE_0_"+toString(j)+"_ACK and in_SPR_WRITE_STATUS_0_"+toString(j)+"_ACK;");
@@ -222,5 +222,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_WRITE_"+toString(j)+"_VAL and in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_WRITE_"+toString(j)+"_VAL and in_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
@@ -231,5 +231,5 @@
 	    for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
 	      {
-		vhdl->set_body ("out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_WRITE_"+toString(j)+"_VAL and in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(log2(_param->_nb_ooo_engine),i)+" else '0';");
+		vhdl->set_body ("out_SPR_WRITE_STATUS_"+toString(i)+"_"+toString(j)+"_VAL <= in_SPR_WRITE_"+toString(j)+"_VAL and in_SPR_WRITE_REGISTERFILE_"+toString(i)+"_"+toString(j)+"_ACK when in_SPR_WRITE_"+toString(j)+"_OOO_ENGINE_ID = "+std_logic_conv(_param->_size_ooo_engine_id,i)+" else '0';");
 	      }
 	  }
