Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 88)
@@ -35,81 +35,98 @@
 			  uint32_t nb_bypass_memory   ,
 			  uint32_t size_store_queue   ,
-			  uint32_t size_load_queue    ):
-    _size_queue            (size_queue           ),
-    _nb_inst_retire        (nb_inst_retire       ),
-    _nb_context            (nb_context           ),
-    _nb_front_end          (nb_front_end         ),
-    _nb_ooo_engine         (nb_ooo_engine        ),
-    _nb_packet             (nb_packet            ),
-    _size_general_data     (size_general_data    ),
-    _size_special_data     (size_special_data    ),
-    _nb_general_register   (nb_general_register  ),
-    _nb_special_register   (nb_special_register  ),
-    _nb_gpr_write          (nb_gpr_write         ),
-    _nb_spr_write          (nb_spr_write         ),
-    _nb_bypass_write       (nb_bypass_write      ),
-    _nb_bypass_memory      (nb_bypass_memory     ),
-    _size_store_queue      (size_store_queue     ),
-    _size_load_queue       (size_load_queue      ),
-
-    _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
-    _size_front_end_id     (static_cast<uint32_t>(log2(_nb_front_end       ))),
-    _size_ooo_engine_id    (static_cast<uint32_t>(log2(_nb_ooo_engine      ))),
-    _size_rob_id           (static_cast<uint32_t>(log2(_nb_packet          ))),
-    _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
-    _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
-
-    _have_port_context_id    (_size_context_id    > 0),
-    _have_port_front_end_id  (_size_front_end_id  > 0),
-    _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
-    _have_port_rob_id        (_size_rob_id        > 0),
-    _have_port_load_queue_ptr(_size_load_queue    > 1)
+			  uint32_t size_load_queue    ,
+                          bool     is_toplevel)
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    _size_queue              = size_queue           ;
+    _nb_inst_retire          = nb_inst_retire       ;
+    _nb_context              = nb_context           ;
+    _nb_front_end            = nb_front_end         ;
+    _nb_ooo_engine           = nb_ooo_engine        ;
+    _nb_packet               = nb_packet            ;
+    _nb_general_register     = nb_general_register  ;
+    _nb_special_register     = nb_special_register  ;
+    _nb_gpr_write            = nb_gpr_write         ;
+    _nb_spr_write            = nb_spr_write         ;
+    _nb_bypass_write         = nb_bypass_write      ;
+    _nb_bypass_memory        = nb_bypass_memory     ;
+
     test();
+
+    if (is_toplevel)
+      {
+        _size_context_id         = log2(_nb_context         );
+        _size_front_end_id       = log2(_nb_front_end       );
+        _size_ooo_engine_id      = log2(_nb_ooo_engine      );
+        _size_rob_ptr            = log2(_nb_packet          );
+        _size_general_register   = log2(_nb_general_register);
+        _size_special_register   = log2(_nb_special_register);
+        _size_general_data       = size_general_data         ;
+        _size_special_data       = size_special_data         ;
+        _size_store_queue_ptr    = log2(size_store_queue    );
+        _size_load_queue_ptr     = log2(size_load_queue     );
+        
+        _have_port_context_id    = _size_context_id     > 0;
+        _have_port_front_end_id  = _size_front_end_id   > 0;
+        _have_port_ooo_engine_id = _size_ooo_engine_id  > 0;
+        _have_port_rob_ptr       = _size_rob_ptr        > 0;
+        _have_port_load_queue_ptr= _size_load_queue_ptr > 0;
+
+        copy();
+      }
+
     log_printf(FUNC,Reservation_station,FUNCTION,"End");
   };
   
+// #undef  FUNCTION
+// #define FUNCTION "Reservation_station::Parameters (copy)"
+//   Parameters::Parameters (Parameters & param):
+//     _size_queue            (param._size_queue            ),
+//     _nb_inst_retire        (param._nb_inst_retire        ),
+//     _nb_context            (param._nb_context            ),
+//     _nb_front_end          (param._nb_front_end          ),
+//     _nb_ooo_engine         (param._nb_ooo_engine         ),
+//     _nb_packet             (param._nb_packet             ),
+//     _size_general_data     (param._size_general_data     ),
+//     _size_special_data     (param._size_special_data     ),
+//     _nb_general_register   (param._nb_general_register   ),
+//     _nb_special_register   (param._nb_special_register   ),
+//     _nb_gpr_write          (param._nb_gpr_write          ),
+//     _nb_spr_write          (param._nb_spr_write          ),
+//     _nb_bypass_write       (param._nb_bypass_write       ),
+//     _nb_bypass_memory      (param._nb_bypass_memory      ),
+//     _size_store_queue      (param._size_store_queue      ),
+//     _size_load_queue       (param._size_load_queue       ),
+
+//     _size_context_id       (param._size_context_id       ),
+//     _size_front_end_id     (param._size_front_end_id     ),
+//     _size_ooo_engine_id    (param._size_ooo_engine_id    ),
+//     _size_rob_id           (param._size_rob_id           ),
+//     _size_general_register (param._size_general_register ),
+//     _size_special_register (param._size_special_register ),
+
+//     _have_port_context_id    (param._have_port_context_id   ),
+//     _have_port_front_end_id  (param._have_port_front_end_id ),
+//     _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
+//     _have_port_rob_id        (param._have_port_rob_id       ),
+//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
+//   {
+//     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+//     test();
+//     log_printf(FUNC,Reservation_station,FUNCTION,"End");
+//   };
+
 #undef  FUNCTION
-#define FUNCTION "Reservation_station::Parameters (copy)"
-  Parameters::Parameters (Parameters & param):
-    _size_queue            (param._size_queue            ),
-    _nb_inst_retire        (param._nb_inst_retire        ),
-    _nb_context            (param._nb_context            ),
-    _nb_front_end          (param._nb_front_end          ),
-    _nb_ooo_engine         (param._nb_ooo_engine         ),
-    _nb_packet             (param._nb_packet             ),
-    _size_general_data     (param._size_general_data     ),
-    _size_special_data     (param._size_special_data     ),
-    _nb_general_register   (param._nb_general_register   ),
-    _nb_special_register   (param._nb_special_register   ),
-    _nb_gpr_write          (param._nb_gpr_write          ),
-    _nb_spr_write          (param._nb_spr_write          ),
-    _nb_bypass_write       (param._nb_bypass_write       ),
-    _nb_bypass_memory      (param._nb_bypass_memory      ),
-    _size_store_queue      (param._size_store_queue      ),
-    _size_load_queue       (param._size_load_queue       ),
-
-    _size_context_id       (param._size_context_id       ),
-    _size_front_end_id     (param._size_front_end_id     ),
-    _size_ooo_engine_id    (param._size_ooo_engine_id    ),
-    _size_rob_id           (param._size_rob_id           ),
-    _size_general_register (param._size_general_register ),
-    _size_special_register (param._size_special_register ),
-
-    _have_port_context_id    (param._have_port_context_id   ),
-    _have_port_front_end_id  (param._have_port_front_end_id ),
-    _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
-    _have_port_rob_id        (param._have_port_rob_id       ),
-    _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
+#define FUNCTION "Reservation_station::~Parameters"
+  Parameters::~Parameters (void) 
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
-    test();
     log_printf(FUNC,Reservation_station,FUNCTION,"End");
   };
 
 #undef  FUNCTION
-#define FUNCTION "Reservation_station::~Parameters"
-  Parameters::~Parameters () 
+#define FUNCTION "Reservation_station::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 88)
@@ -42,6 +42,6 @@
     xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
     xml.singleton_begin("nb_bypass_memory   "); xml.attribut("value",toString(_nb_bypass_memory   )); xml.singleton_end();
-    xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
-    xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
+//  xml.singleton_begin("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
+//  xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
     xml.balise_close();
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp	(revision 88)
@@ -39,4 +39,10 @@
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
 
+#if DEBUG_Reservation_station == true
+    log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
 #ifdef SYSTEMC
     log_printf(INFO,Reservation_station,FUNCTION,"Allocation");
@@ -46,17 +52,25 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics");
-
-    statistics_declaration(param_statistics);
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics");
+        
+        statistics_declaration(param_statistics);
+      }
 #endif
 
 #ifdef VHDL
-    // generate the vhdl
-    log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl");
-
-    vhdl();
+    if (usage_is_set(_usage,USE_VHDL))
+      {	
+        // generate the vhdl
+        log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl");
+        
+        vhdl();
+      }
 #endif
 
 #ifdef SYSTEMC
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {	
 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     log_printf(INFO,Reservation_station,FUNCTION,"Method - transition");
@@ -80,5 +94,5 @@
     // List dependency information
 #endif    
-
+      }
 #endif
     log_printf(FUNC,Reservation_station,FUNCTION,"End");
@@ -92,7 +106,10 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file");
-
-    delete _stat;
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file");
+        
+        delete _stat;
+      }
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 88)
@@ -3,5 +3,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -37,5 +37,5 @@
     _interfaces = entity->set_interfaces();
 
-    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
       Interface * interface = _interfaces->set_interface(""
@@ -50,5 +50,5 @@
      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
 
-    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
       Interface_fifo * interface = _interfaces->set_interface("insert"
@@ -68,11 +68,11 @@
       if (_param->_have_port_ooo_engine_id)
        in_INSERT_OOO_ENGINE_ID  = interface->set_signal_in <Tcontext_t        > ("ooo_engine_id"  ,_param->_size_ooo_engine_id    );
-      if (_param->_have_port_rob_id)
-       in_INSERT_ROB_ID         = interface->set_signal_in <Tpacket_t         > ("rob_id"         ,_param->_size_rob_id        );
+      if (_param->_have_port_rob_ptr)
+       in_INSERT_ROB_ID         = interface->set_signal_in <Tpacket_t         > ("rob_id"         ,_param->_size_rob_ptr        );
        in_INSERT_OPERATION      = interface->set_signal_in <Toperation_t      > ("operation"      ,_param->_size_operation        );
        in_INSERT_TYPE           = interface->set_signal_in <Ttype_t           > ("type"           ,_param->_size_type             );
-       in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
+       in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
        if (_param->_have_port_load_queue_ptr)
-       in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
+       in_INSERT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
        in_INSERT_HAS_IMMEDIAT   = interface->set_signal_in <Tcontrol_t        > ("has_immediat"   ,1                             );
        in_INSERT_IMMEDIAT       = interface->set_signal_in <Tgeneral_data_t   > ("immediat"       ,_param->_size_general_data     );
@@ -95,5 +95,5 @@
      }
 
-    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
     out_RETIRE_VAL            = new SC_OUT(Tcontrol_t        ) * [_param->_nb_inst_retire];
      in_RETIRE_ACK            = new SC_IN (Tcontrol_t        ) * [_param->_nb_inst_retire];
@@ -104,5 +104,5 @@
     if (_param->_have_port_ooo_engine_id)
     out_RETIRE_OOO_ENGINE_ID  = new SC_OUT(Tcontext_t        ) * [_param->_nb_inst_retire];
-    if (_param->_have_port_rob_id)
+    if (_param->_have_port_rob_ptr)
     out_RETIRE_ROB_ID         = new SC_OUT(Tpacket_t         ) * [_param->_nb_inst_retire];
     out_RETIRE_OPERATION      = new SC_OUT(Toperation_t      ) * [_param->_nb_inst_retire];
@@ -138,11 +138,11 @@
 	if (_param->_have_port_ooo_engine_id)
 	out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
-	if (_param->_have_port_rob_id)
-	out_RETIRE_ROB_ID       [i] = interface->set_signal_out<Tpacket_t         > ("rob_id"       ,_param->_size_rob_id);
+	if (_param->_have_port_rob_ptr)
+	out_RETIRE_ROB_ID       [i] = interface->set_signal_out<Tpacket_t         > ("rob_id"       ,_param->_size_rob_ptr);
 	out_RETIRE_OPERATION    [i] = interface->set_signal_out<Toperation_t      > ("operation"    ,_param->_size_operation);
 	out_RETIRE_TYPE         [i] = interface->set_signal_out<Ttype_t           > ("type"         ,_param->_size_type);
-	out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,log2(_param->_size_store_queue));
+	out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr);
 	if (_param->_have_port_load_queue_ptr)
-	out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,log2(_param->_size_load_queue) );
+	out_RETIRE_LOAD_QUEUE_PTR_WRITE  [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write"  ,_param->_size_load_queue_ptr );
 
 	out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t        > ("has_immediat" ,1);
@@ -157,5 +157,5 @@
       }
 
-    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
      if (_param->_have_port_ooo_engine_id)
@@ -181,5 +181,5 @@
       }
 
-    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
      if (_param->_have_port_ooo_engine_id)
@@ -205,5 +205,5 @@
       }
 
-    // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      if (_param->_have_port_ooo_engine_id)
      in_BYPASS_WRITE_OOO_ENGINE_ID  = new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_write];
@@ -235,5 +235,5 @@
       }
 
-    // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      in_BYPASS_MEMORY_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_memory];
      if (_param->_have_port_ooo_engine_id)
@@ -260,12 +260,16 @@
 
 
-    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
+    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     internal_RETIRE_VAL  = new Tcontrol_t [_param->_nb_inst_retire];
     internal_RETIRE_SLOT = new uint32_t   [_param->_nb_inst_retire];
-
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-
-#ifdef POSITION
-    _component->generate_file();
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 #ifdef  SYSTEMC_VHDL_COMPATIBILITY
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 88)
@@ -28,4 +28,6 @@
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
 
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
     delete     in_CLOCK ;
     delete     in_NRESET;
@@ -39,5 +41,5 @@
     if (_param->_have_port_ooo_engine_id)
     delete     in_INSERT_OOO_ENGINE_ID ;
-    if (_param->_have_port_rob_id)
+    if (_param->_have_port_rob_ptr)
     delete     in_INSERT_ROB_ID        ;
     delete     in_INSERT_OPERATION     ;
@@ -73,5 +75,5 @@
     if (_param->_have_port_ooo_engine_id)
     delete [] out_RETIRE_OOO_ENGINE_ID ;
-    if (_param->_have_port_rob_id)
+    if (_param->_have_port_rob_ptr)
     delete [] out_RETIRE_ROB_ID        ;
     delete [] out_RETIRE_OPERATION     ;
@@ -119,5 +121,6 @@
     // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
     delete []  internal_RETIRE_VAL;
-
+    delete []  internal_RETIRE_SLOT;
+      }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
@@ -139,5 +142,4 @@
 }; // end namespace multi_execute_loop
 }; // end namespace core
-
 }; // end namespace behavioural
 }; // end namespace morpheo              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //     sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
     log_printf(FUNC,Reservation_station,FUNCTION,"End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 88)
@@ -24,5 +24,6 @@
   void Reservation_station::genMoore (void)
   {
-    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_begin(Reservation_station,FUNCTION);
+    log_function(Reservation_station,FUNCTION,_name.c_str());
 
     // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~
@@ -97,5 +98,5 @@
 	    if (_param->_have_port_ooo_engine_id)
 	    PORT_WRITE(out_RETIRE_OOO_ENGINE_ID [i],_queue[index_find]._ooo_engine_id);
-	    if (_param->_have_port_rob_id)
+	    if (_param->_have_port_rob_ptr)
 	    PORT_WRITE(out_RETIRE_ROB_ID        [i],_queue[index_find]._rob_id);
 	    PORT_WRITE(out_RETIRE_OPERATION     [i],_queue[index_find]._operation);
@@ -116,5 +117,5 @@
       }
 
-    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+    log_end(Reservation_station,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 88)
@@ -20,43 +20,70 @@
 
 #ifdef  SYSTEMC_VHDL_COMPATIBILITY
-#define dump_queue() \
-  do\
-  {\
-   log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\
-   log_printf(TRACE,Reservation_station,FUNCTION,"   * nb_elt : %d",_queue_nb_elt);\
-   for (uint32_t j=0;j<_param->_size_queue; j++)\
-   {\
-     cout << "\t"\
-          << "[" << j << "] "\
-          << "{" << _queue[j]._rob_id << " - "<< _queue[j]._context_id << "} " << " - "<< _queue[j]._front_end_id << "} " << " - "<< _queue[j]._ooo_engine_id << "} "\
-          << _queue[j]._data_ra_val << ", "\
-          << _queue[j]._num_reg_ra  << " - "\
-          << _queue[j]._data_rb_val << ","\
-          << _queue[j]._num_reg_rb  << " - "\
-          << _queue[j]._data_rc_val << ","\
-          << _queue[j]._num_reg_rc  \
-          << endl;\
-    }\
-  } while (0) 
-#else
-#define dump_queue() \
-  do\
-  {\
-   log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\
-   log_printf(TRACE,Reservation_station,FUNCTION,"   * nb_elt : %d",_queue_nb_elt);\
-   for (uint32_t j=0;j<_param->_size_queue; j++)\
-   {\
-     cout << "\t"\
-          << "[" << (*_queue_control)[j] << "] "\
-          << "{" << _queue[(*_queue_control)[j]]._rob_id << " - "<< _queue[(*_queue_control)[j]]._context_id << "} " << " - "<< _queue[(*_queue_control)[j]]._front_end_id << "} " << " - "<< _queue[(*_queue_control)[j]]._ooo_engine_id << "} "\
-          << _queue[(*_queue_control)[j]]._data_ra_val << ", "\
-          << _queue[(*_queue_control)[j]]._num_reg_ra  << " - "\
-          << _queue[(*_queue_control)[j]]._data_rb_val << ","\
-          << _queue[(*_queue_control)[j]]._num_reg_rb  << " - "\
-          << _queue[(*_queue_control)[j]]._data_rc_val << ","\
-          << _queue[(*_queue_control)[j]]._num_reg_rc  \
-          << endl;\
-    }\
-  } while (0) 
+#define dump_queue()                                                    \
+  do                                                                    \
+    {                                                                   \
+      log_printf(TRACE,Reservation_station,FUNCTION,"  * Dump Reservation Station");  \
+      for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++)   \
+        log_printf(TRACE,Reservation_station,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \
+                   it_dump,                                             \
+                   _queue[it_dump]._context_id           ,              \
+                   _queue[it_dump]._front_end_id         ,              \
+                   _queue[it_dump]._ooo_engine_id        ,              \
+                   _queue[it_dump]._rob_id               ,              \
+                   _queue[it_dump]._type                 ,              \
+                   _queue[it_dump]._operation            ,              \
+                   _queue[it_dump]._store_queue_ptr_write,              \
+                   _queue[it_dump]._load_queue_ptr_write ,              \
+                   _queue[it_dump]._has_immediat         ,              \
+                   _queue[it_dump]._immediat             ,              \
+                   _queue[it_dump]._num_reg_ra           ,              \
+                   _queue[it_dump]._data_ra_val          ,              \
+                   _queue[it_dump]._data_ra              ,              \
+                   _queue[it_dump]._num_reg_rb           ,              \
+                   _queue[it_dump]._data_rb_val          ,              \
+                   _queue[it_dump]._data_rb              ,              \
+                   _queue[it_dump]._num_reg_rc           ,              \
+                   _queue[it_dump]._data_rc_val          ,              \
+                   _queue[it_dump]._data_rc              ,              \
+                   _queue[it_dump]._write_rd             ,              \
+                   _queue[it_dump]._num_reg_rd           ,              \
+                   _queue[it_dump]._write_re             ,              \
+                   _queue[it_dump]._num_reg_re           ,              \
+                   toString_type(_queue[it_dump]._type).c_str());       \
+    } while (0) 
+#else
+#define dump_queue()                                                    \
+  do                                                                    \
+    {                                                                   \
+      log_printf(TRACE,Reservation_station,FUNCTION,"  * Dump Reservation Station"); \
+      log_printf(TRACE,Reservation_station,FUNCTION,"    * nb_elt : %d",_queue_control->nb_elt()); \
+      for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++)   \
+        log_printf(TRACE,Reservation_station,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \
+                   (*_queue_control)[it_dump],                          \
+                   _queue[(*_queue_control)[it_dump]]._context_id           , \
+                   _queue[(*_queue_control)[it_dump]]._front_end_id         , \
+                   _queue[(*_queue_control)[it_dump]]._ooo_engine_id        , \
+                   _queue[(*_queue_control)[it_dump]]._rob_id               , \
+                   _queue[(*_queue_control)[it_dump]]._type                 , \
+                   _queue[(*_queue_control)[it_dump]]._operation            , \
+                   _queue[(*_queue_control)[it_dump]]._store_queue_ptr_write, \
+                   _queue[(*_queue_control)[it_dump]]._load_queue_ptr_write , \
+                   _queue[(*_queue_control)[it_dump]]._has_immediat         , \
+                   _queue[(*_queue_control)[it_dump]]._immediat             , \
+                   _queue[(*_queue_control)[it_dump]]._num_reg_ra           , \
+                   _queue[(*_queue_control)[it_dump]]._data_ra_val          , \
+                   _queue[(*_queue_control)[it_dump]]._data_ra              , \
+                   _queue[(*_queue_control)[it_dump]]._num_reg_rb           , \
+                   _queue[(*_queue_control)[it_dump]]._data_rb_val          , \
+                   _queue[(*_queue_control)[it_dump]]._data_rb              , \
+                   _queue[(*_queue_control)[it_dump]]._num_reg_rc           , \
+                   _queue[(*_queue_control)[it_dump]]._data_rc_val          , \
+                   _queue[(*_queue_control)[it_dump]]._data_rc              , \
+                   _queue[(*_queue_control)[it_dump]]._write_rd             , \
+                   _queue[(*_queue_control)[it_dump]]._num_reg_rd           , \
+                   _queue[(*_queue_control)[it_dump]]._write_re             , \
+                   _queue[(*_queue_control)[it_dump]]._num_reg_re           , \
+                   toString_type(_queue[(*_queue_control)[it_dump]]._type).c_str());       \
+    } while (0) 
 #endif
 
@@ -65,5 +92,6 @@
   void Reservation_station::transition (void)
   {
-    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_begin(Reservation_station,FUNCTION);
+    log_function(Reservation_station,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -89,5 +117,5 @@
 		//uint32_t index = (*_queue_control)[i];
 
-		log_printf(NONE,Reservation_station,FUNCTION,"POP  [%d]",i);
+		log_printf(NONE,Reservation_station,FUNCTION,"  * POP  [%d]",i);
 
 		uint32_t index  = internal_RETIRE_SLOT[i];
@@ -102,5 +130,5 @@
 // 		     << " * index       : " << index << endl;
 
-		log_printf(NONE,Reservation_station,FUNCTION," * index         : %d",index);
+		log_printf(NONE,Reservation_station,FUNCTION,"    * index         : %d",index);
 	      }
 	  }
@@ -140,5 +168,5 @@
 		    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_ra)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
 			_queue[index]._data_ra_val = 1;
 			_queue[index]._data_ra     = PORT_READ(in_GPR_WRITE_DATA [j]);
@@ -146,5 +174,5 @@
 		    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rb)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
 			_queue[index]._data_rb_val = 1;
 			_queue[index]._data_rb     = PORT_READ(in_GPR_WRITE_DATA [j]);
@@ -165,5 +193,5 @@
 		    (PORT_READ(in_SPR_WRITE_NUM_REG       [j]) == _queue[index]._num_reg_rc))
 		  {
-		    log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE     [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
+		    log_printf(TRACE,Reservation_station,FUNCTION,"    -> SPR_WRITE     [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
 		    _queue[index]._data_rc_val = 1;
 		    _queue[index]._data_rc     = PORT_READ(in_SPR_WRITE_DATA [j]);
@@ -185,5 +213,5 @@
 		    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG[j]) == _queue[index]._num_reg_ra)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
 			_queue[index]._data_ra_val = 1;
 			_queue[index]._data_ra     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
@@ -191,5 +219,5 @@
 		    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG [j]) == _queue[index]._num_reg_rb)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
 			_queue[index]._data_rb_val = 1;
 			_queue[index]._data_rb     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
@@ -199,5 +227,5 @@
 			(PORT_READ(in_BYPASS_WRITE_SPR_NUM_REG[j]) == _queue[index]._num_reg_rc))
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_WRITE  [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
 			_queue[index]._data_rc_val = 1;
 			_queue[index]._data_rc     = PORT_READ(in_BYPASS_WRITE_SPR_DATA [j]);
@@ -218,5 +246,5 @@
 		    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_ra)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
 			_queue[index]._data_ra_val = 1;
 			_queue[index]._data_ra     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
@@ -224,5 +252,5 @@
 		    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_rb)
 		      {
-			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			log_printf(TRACE,Reservation_station,FUNCTION,"    -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
 			_queue[index]._data_rb_val = 1;
 			_queue[index]._data_rb     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
@@ -235,5 +263,5 @@
 	    (    internal_INSERT_ACK  == 1))
 	  {
-	    log_printf(TRACE,Reservation_station,FUNCTION,"PUSH");
+	    log_printf(TRACE,Reservation_station,FUNCTION,"  * PUSH");
 
 	    // Write in reservation station
@@ -246,5 +274,5 @@
 	    index = _queue_control->push();
 #endif
-	    log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
+	    log_printf(TRACE,Reservation_station,FUNCTION,"    * index         : %d",index);
 
   	    if (_param->_have_port_context_id)
@@ -254,5 +282,5 @@
   	    if (_param->_have_port_ooo_engine_id)
 	    _queue[index]._ooo_engine_id   = PORT_READ(in_INSERT_OOO_ENGINE_ID  );
-  	    if (_param->_have_port_rob_id)
+  	    if (_param->_have_port_rob_ptr)
 	    _queue[index]._rob_id          = PORT_READ(in_INSERT_ROB_ID         );
   	    _queue[index]._operation       = PORT_READ(in_INSERT_OPERATION      );
@@ -283,7 +311,9 @@
       }
 
+    dump_queue();
+
     end_cycle ();
 
-    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+    log_end(Reservation_station,FUNCTION);
   };
 
