Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 88)
@@ -30,104 +30,118 @@
 			  uint32_t nb_spr_write       ,
 			  uint32_t size_store_queue   ,
-			  uint32_t size_load_queue    ):
-    _size_queue            (size_queue           ),
-    _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         ),
-    _size_store_queue      (size_store_queue     ),
-    _size_load_queue       (size_load_queue      ),
-
-    _nb_gpr_read           (2                    ),
-    _nb_spr_read           (1                    ),
-    _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),
-
-    _size_internal_queue     (  _size_context_id       //_context_id   
-			      + _size_front_end_id     //_front_end_id 
-			      + _size_ooo_engine_id    //_ooo_engine_id
-			      + _size_rob_id           //_rob_id       
-			      + _size_operation        //_operation    
-			      + _size_type             //_type         
-			      + log2(_size_store_queue)//_store_queue_ptr_write
-			      + log2(_size_load_queue )//_load_queue_ptr_write 
-			      + 1                      //_has_immediat 
-			      + _size_general_data     //_immediat     
-			      + 1                      //_read_ra      
-			      + _size_general_register //_num_reg_ra   
-			      + 1                      //_read_rb      
-			      + _size_general_register //_num_reg_rb   
-			      + 1                      //_read_rc      
-			      + _size_special_register //_num_reg_rc   
-			      + 1                      //_write_rd     
-			      + _size_general_register //_num_reg_rd   
-			      + 1                      //_write_re     
-			      + _size_special_register //_num_reg_re   
-				)
-				
-
+			  uint32_t size_load_queue    ,
+                          bool     is_toplevel)
   {
     log_printf(FUNC,Read_queue,"Parameters","Begin");
+
+    _size_queue              = size_queue           ;
+    _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_gpr_read             = 2                    ;
+    _nb_spr_read             = 1                    ;
+
+    _size_internal_queue     = (  log2(nb_context         ) //_context_id   
+                                + log2(nb_front_end       ) //_front_end_id 
+                                + log2(nb_ooo_engine      ) //_ooo_engine_id
+                                + log2(nb_packet          ) //_rob_id       
+                                + _size_operation           //_operation    
+                                + _size_type                //_type         
+                                + log2(size_store_queue   ) //_store_queue_ptr_write
+                                + log2(size_load_queue    ) //_load_queue_ptr_write 
+                                + 1                         //_has_immediat 
+                                +  size_general_data        //_immediat     
+                                + 1                         //_read_ra      
+                                + log2(nb_general_register) //_num_reg_ra   
+                                + 1                         //_read_rb      
+                                + log2(nb_general_register) //_num_reg_rb   
+                                + 1                         //_read_rc      
+                                + log2(nb_special_register) //_num_reg_rc   
+                                + 1                         //_write_rd     
+                                + log2(nb_general_register) //_num_reg_rd   
+                                + 1                         //_write_re     
+                                + log2(nb_special_register) //_num_reg_re   
+				);
+
     test();
+
+    if (is_toplevel)
+      {
+        _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 );
+        _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);
+        
+        _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,Read_queue,"Parameters","End");
   };
   
-  Parameters::Parameters (Parameters & param):
-    _size_queue            (param._size_queue            ),
-    _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          ),
-    _size_store_queue      (param._size_store_queue      ),
-    _size_load_queue       (param._size_load_queue       ),
+//   Parameters::Parameters (Parameters & param):
+//     _size_queue            (param._size_queue            ),
+//     _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          ),
+//     _size_store_queue      (param._size_store_queue      ),
+//     _size_load_queue       (param._size_load_queue       ),
 
-    _nb_gpr_read           (param._nb_gpr_read           ),
-    _nb_spr_read           (param._nb_spr_read           ),
-    _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 ),
+//     _nb_gpr_read           (param._nb_gpr_read           ),
+//     _nb_spr_read           (param._nb_spr_read           ),
+//     _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),
+//     _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),
 
-    _size_internal_queue     (param._size_internal_queue    )
-  {
-    log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
-    test();
-    log_printf(FUNC,Read_queue,"Parameters (copy)","End");
-  };
+//     _size_internal_queue     (param._size_internal_queue    )
+//   {
+//     log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");
+//     test();
+//     log_printf(FUNC,Read_queue,"Parameters (copy)","End");
+//   };
 
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void) 
   {
     log_printf(FUNC,Read_queue,"~Parameters","Begin");
     log_printf(FUNC,Read_queue,"~Parameters","End");
+  };
+
+  void Parameters::copy (void) 
+  {
+    log_printf(FUNC,Read_queue,"copy","Begin");
+    log_printf(FUNC,Read_queue,"copy","End");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 88)
@@ -31,12 +31,12 @@
     xml.singleton_begin("nb_ooo_engine      "); xml.attribut("value",toString(_nb_ooo_engine      )); xml.singleton_end();
     xml.singleton_begin("nb_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
-    xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
-    xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
+//  xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
+//  xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
     xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
     xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
     xml.singleton_begin("nb_gpr_write       "); xml.attribut("value",toString(_nb_gpr_write       )); xml.singleton_end();
     xml.singleton_begin("nb_spr_write       "); xml.attribut("value",toString(_nb_spr_write       )); 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/Read_queue/src/Read_queue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 88)
@@ -36,4 +36,10 @@
     log_printf(FUNC,Read_queue,"Read_queue","Begin");
 
+#if DEBUG_Read_queue == true
+    log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
 #ifdef SYSTEMC
     log_printf(INFO,Read_queue,"Read_queue","Allocation");
@@ -43,17 +49,25 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
-    
-    statistics_declaration(param_statistics);
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics");
+        
+        statistics_declaration(param_statistics);
+      }
 #endif
 
 #ifdef VHDL
-    // generate the vhdl
-    log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
-
-    vhdl();
-#endif
-
-#ifdef SYSTEMC
+    if (usage_is_set(_usage,USE_VHDL))
+      {	
+        // generate the vhdl
+        log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl");
+        
+        vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {	
     log_printf(INFO,Read_queue,"Read_queue","Method - transition");
 
@@ -206,5 +220,5 @@
       }
 #endif    
-
+      }
 #endif
     log_printf(FUNC,Read_queue,"Read_queue","End");
@@ -216,7 +230,10 @@
 
 #ifdef STATISTICS
-    log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
-
-    delete _stat;
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file");
+        
+        delete _stat;
+      }
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 88)
@@ -3,5 +3,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -34,5 +34,5 @@
     _interfaces = entity->set_interfaces();
 
-    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     {
@@ -48,5 +48,5 @@
      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
     }
-    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
       Interface_fifo * interface = _interfaces->set_interface("read_queue_in"
@@ -66,11 +66,11 @@
        if(_param->_have_port_ooo_engine_id)
 	 in_READ_QUEUE_IN_OOO_ENGINE_ID  = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
-      if(_param->_have_port_rob_id      )
-       in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
+      if(_param->_have_port_rob_ptr      )
+       in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
        in_READ_QUEUE_IN_OPERATION      = interface->set_signal_in  <Toperation_t      > ("operation"   ,_param->_size_operation        );
        in_READ_QUEUE_IN_TYPE           = interface->set_signal_in  <Ttype_t           > ("type"        ,_param->_size_type             );
-       in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in  <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
+       in_READ_QUEUE_IN_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_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
+       in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_in  <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
        in_READ_QUEUE_IN_HAS_IMMEDIAT   = interface->set_signal_in  <Tcontrol_t        > ("has_immediat",1                             );
        in_READ_QUEUE_IN_IMMEDIAT       = interface->set_signal_in  <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
@@ -87,5 +87,5 @@
      }
 
-    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
       Interface_fifo * interface = _interfaces->set_interface("read_queue_out"
@@ -106,11 +106,11 @@
       if(_param->_have_port_ooo_engine_id)
 	out_READ_QUEUE_OUT_OOO_ENGINE_ID  = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
-      if(_param->_have_port_rob_id      )
-	out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
+      if(_param->_have_port_rob_ptr      )
+	out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_ptr           );
       out_READ_QUEUE_OUT_OPERATION      = interface->set_signal_out <Toperation_t      > ("operation"   ,_param->_size_operation        );
       out_READ_QUEUE_OUT_TYPE           = interface->set_signal_out <Ttype_t           > ("type"        ,_param->_size_type             );
-      out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", log2(_param->_size_store_queue));
+      out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr);
       if (_param->_have_port_load_queue_ptr)
-      out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , log2(_param->_size_load_queue ));
+      out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE  = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr);
       out_READ_QUEUE_OUT_HAS_IMMEDIAT   = interface->set_signal_out <Tcontrol_t        > ("has_immediat",1                             );
       out_READ_QUEUE_OUT_IMMEDIAT       = interface->set_signal_out <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
@@ -133,5 +133,5 @@
      }
 
-    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     out_GPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
@@ -162,5 +162,5 @@
       }
      
-    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     out_SPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
@@ -191,5 +191,5 @@
       }
 
-    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
      in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
@@ -216,5 +216,5 @@
       }
 
-    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
      in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
@@ -241,10 +241,11 @@
       }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    _queue      = new std::queue<Tread_queue_entry_t *>;
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    _queue      = new std::list<Tread_queue_entry_t *>;
     _queue_head = new Tread_queue_head_entry_t;
 
 #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/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp	(revision 88)
@@ -3,5 +3,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -23,9 +23,11 @@
     log_printf(FUNC,Read_queue,"deallocation","Begin");
 
-    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     delete     in_CLOCK ;
     delete     in_NRESET;
 
-    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     delete     in_READ_QUEUE_IN_VAL            ;
     delete    out_READ_QUEUE_IN_ACK            ;
@@ -37,5 +39,5 @@
     if(_param->_have_port_ooo_engine_id)
       delete     in_READ_QUEUE_IN_OOO_ENGINE_ID  ;
-    if(_param->_have_port_rob_id       )
+    if(_param->_have_port_rob_ptr       )
       delete     in_READ_QUEUE_IN_ROB_ID         ;
     delete     in_READ_QUEUE_IN_OPERATION      ;
@@ -57,5 +59,5 @@
     delete     in_READ_QUEUE_IN_NUM_REG_RE     ;
 
-    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     delete    out_READ_QUEUE_OUT_VAL            ;
     delete     in_READ_QUEUE_OUT_ACK            ;
@@ -67,5 +69,5 @@
     if(_param->_have_port_ooo_engine_id)
       delete    out_READ_QUEUE_OUT_OOO_ENGINE_ID  ;
-    if(_param->_have_port_rob_id       )
+    if(_param->_have_port_rob_ptr       )
       delete    out_READ_QUEUE_OUT_ROB_ID         ;
     delete    out_READ_QUEUE_OUT_OPERATION      ;
@@ -93,5 +95,5 @@
     delete    out_READ_QUEUE_OUT_NUM_REG_RE     ;
 
-    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     delete [] out_GPR_READ_VAL       ;
@@ -103,5 +105,5 @@
     delete []  in_GPR_READ_DATA_VAL  ;
 
-    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     delete [] out_SPR_READ_VAL       ;
@@ -113,5 +115,5 @@
     delete []  in_SPR_READ_DATA_VAL  ;
 
-    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     delete []  in_GPR_WRITE_VAL       ;
@@ -121,5 +123,5 @@
     delete []  in_GPR_WRITE_DATA      ;
 
-    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
     delete []  in_SPR_WRITE_VAL       ;
@@ -128,11 +130,12 @@
     delete []  in_SPR_WRITE_NUM_REG   ;
     delete []  in_SPR_WRITE_DATA      ;
+      }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
     while (_queue->empty() == false)
       {
 	delete _queue->front();
-	_queue->pop();
+	_queue->pop_front();
       }
     delete _queue;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_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/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp	(revision 88)
@@ -22,5 +22,6 @@
   void Read_queue::genMealy_read_queue_out_gpr (void)
   {
-    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+    log_begin(Read_queue,FUNCTION);
+    log_function(Read_queue,FUNCTION,_name.c_str());
 
     internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value
@@ -32,9 +33,9 @@
 					   );
 
-    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [0]            : %d",PORT_READ(in_GPR_READ_ACK      [0]));
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RA_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_ra_val           : %d",_queue_head->_data_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_ra_val           : %d",_queue_head->_read_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_ACK      [0]            : %d",PORT_READ(in_GPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));
 
     internal_READ_QUEUE_OUT_DATA_RB_VAL = (_queue_head->_data_rb_val or
@@ -44,9 +45,9 @@
 					   );
 
-    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rb_val           : %d",_queue_head->_data_rb_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rb_val           : %d",_queue_head->_read_rb_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_ACK      [1]            : %d",PORT_READ(in_GPR_READ_ACK      [1]));
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_GPR_READ_DATA_VAL [1]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));
+    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RB_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_rb_val           : %d",_queue_head->_data_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_rb_val           : %d",_queue_head->_read_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_ACK      [1]            : %d",PORT_READ(in_GPR_READ_ACK      [1]));
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_GPR_READ_DATA_VAL [1]            : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));
 	       
     
@@ -80,5 +81,5 @@
 	    if (_queue_head->_num_reg_ra == gpr_write_num_reg)
 	      {
-		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
+		log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
 
 		internal_READ_QUEUE_OUT_DATA_RA_VAL = 1;
@@ -90,5 +91,5 @@
 	    if (_queue_head->_num_reg_rb == gpr_write_num_reg)
 	      {
-		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
+		log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
 		internal_READ_QUEUE_OUT_DATA_RB_VAL = 1;
 #ifdef SYSTEMC_VHDL_COMPATIBILITY
@@ -106,5 +107,5 @@
     PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB    ,internal_READ_QUEUE_OUT_DATA_RB    );
 
-    log_printf(FUNC,Read_queue,FUNCTION,"End");
+    log_end(Read_queue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp	(revision 88)
@@ -22,5 +22,6 @@
   void Read_queue::genMealy_read_queue_out_spr (void)
   {
-    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+    log_begin(Read_queue,FUNCTION);
+    log_function(Read_queue,FUNCTION,_name.c_str());
 
     internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value
@@ -32,9 +33,9 @@
 					   );
 
-    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_data_rc_val           : %d",_queue_head->_data_rc_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue_head->_read_rc_val           : %d",_queue_head->_read_rc_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_ACK      [0]            : %d",PORT_READ(in_SPR_READ_ACK      [0]));
-    log_printf(TRACE,Read_queue,FUNCTION,"   * in_SPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RC_VAL   : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_data_rc_val           : %d",_queue_head->_data_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue_head->_read_rc_val           : %d",_queue_head->_read_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_SPR_READ_ACK      [0]            : %d",PORT_READ(in_SPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"    * in_SPR_READ_DATA_VAL [0]            : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));
 
     internal_READ_QUEUE_OUT_DATA_RC     = (// Test if have an previous access
@@ -60,5 +61,5 @@
 	    if (_queue_head->_num_reg_rc == PORT_READ(in_SPR_WRITE_NUM_REG [i]))
 	      {
-		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
+		log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
 		internal_READ_QUEUE_OUT_DATA_RC_VAL = 1;
 #ifdef SYSTEMC_VHDL_COMPATIBILITY
@@ -74,5 +75,5 @@
     PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC    ,internal_READ_QUEUE_OUT_DATA_RC    );
 
-    log_printf(FUNC,Read_queue,FUNCTION,"End");
+    log_end(Read_queue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp	(revision 88)
@@ -22,5 +22,6 @@
   void Read_queue::genMealy_read_queue_out_val (void)
   {
-    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+    log_begin(Read_queue,FUNCTION);
+    log_function(Read_queue,FUNCTION,_name.c_str());
 
     internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value
@@ -99,17 +100,17 @@
     PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL);
 
-    log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"   * _queue->empty()                     : %d",_queue->empty());
-    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_ra_val         : %d",_queue_head->_read_ra_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [0]          : %d",PORT_READ(in_GPR_READ_ACK      [0]));
-    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rb_val         : %d",_queue_head->_read_rb_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * in_GPR_READ_ACK      [1]          : %d",PORT_READ(in_GPR_READ_ACK      [1]));
-    log_printf(TRACE,Read_queue,FUNCTION,"   * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
-    log_printf(TRACE,Read_queue,FUNCTION,"     * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"  * internal_READ_QUEUE_OUT_VAL           : %d",internal_READ_QUEUE_OUT_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"    * _queue->empty()                     : %d",_queue->empty());
+    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_ra_val         : %d",_queue_head->_read_ra_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * in_GPR_READ_ACK      [0]          : %d",PORT_READ(in_GPR_READ_ACK      [0]));
+    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_rb_val         : %d",_queue_head->_read_rb_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * in_GPR_READ_ACK      [1]          : %d",PORT_READ(in_GPR_READ_ACK      [1]));
+    log_printf(TRACE,Read_queue,FUNCTION,"    * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * _queue_head->_read_rc_val         : %d",_queue_head->_read_rc_val);
+    log_printf(TRACE,Read_queue,FUNCTION,"      * in_SPR_READ_ACK      [0]          : %d",PORT_READ(in_SPR_READ_ACK      [0]));
 
-    log_printf(FUNC,Read_queue,FUNCTION,"End");
+    log_end(Read_queue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp	(revision 88)
@@ -22,5 +22,6 @@
   void Read_queue::genMoore (void)
   {
-    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+    log_begin(Read_queue,FUNCTION);
+    log_function(Read_queue,FUNCTION,_name.c_str());
 
     bool not_full  = not (_queue->size() == _param->_size_queue);
@@ -39,5 +40,5 @@
     if(_param->_have_port_ooo_engine_id)
       PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id);
-    if(_param->_have_port_rob_id       )
+    if(_param->_have_port_rob_ptr      )
       PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID      , _queue_head->_rob_id      );
     PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
@@ -79,8 +80,8 @@
     PORT_WRITE (out_SPR_READ_VAL           [0], not_empty and _queue_head->_read_rc_val);
     if(_param->_have_port_ooo_engine_id)
-      PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
+    PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
     PORT_WRITE (out_SPR_READ_NUM_REG       [0],               _queue_head->_num_reg_rc);
 		    
-    log_printf(FUNC,Read_queue,FUNCTION,"End");
+    log_end(Read_queue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp	(revision 88)
@@ -24,5 +24,6 @@
   void Read_queue::transition (void)
   {
-    log_printf(FUNC,Read_queue,FUNCTION,"Begin");
+    log_begin(Read_queue,FUNCTION);
+    log_function(Read_queue,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -33,6 +34,8 @@
 	// > 2) flush all slot in one cycle
 
-	while (_queue->empty() == false)
-	  _queue->pop();
+        _queue->clear();
+
+	// Init, else error in registerfile
+	_queue_head->_ooo_engine_id = 0;
       }
     else
@@ -44,5 +47,5 @@
 // 	  cout << (*_queue_head) << endl;
 
-	log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (begin) : %d",_queue->size());
+	log_printf(TRACE,Read_queue,FUNCTION,"  * Read_queue size (begin) : %d",(int)_queue->size());
 	// Write to read_queue
 
@@ -51,5 +54,5 @@
 	bool need_new_head = false;
 	
-	log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_IN  : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);
+	log_printf(TRACE,Read_queue,FUNCTION,"    * test transaction READ_QUEUE_IN  : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);
 	if ((PORT_READ(in_READ_QUEUE_IN_VAL) == 1) and not_full)
 	  {
@@ -62,5 +65,5 @@
 	    if(_param->_have_port_ooo_engine_id)
 	      entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
-	    if(_param->_have_port_rob_id       )
+	    if(_param->_have_port_rob_ptr      )
 	      entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
 	    entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
@@ -82,12 +85,11 @@
 	    entry->_num_reg_re   = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE  );
 
-	    log_printf(TRACE,Read_queue,FUNCTION,"   * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
-	    _queue->push(entry);
-
+	    log_printf(TRACE,Read_queue,FUNCTION,"    * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
+	    _queue->push_back(entry);
 
 	    // read next new head
 	    if (empty)
 	      {
-		log_printf(TRACE,Read_queue,FUNCTION,"     * queue was    empty");
+		log_printf(TRACE,Read_queue,FUNCTION,"    * queue was    empty");
 		need_new_head = true;
 	      }
@@ -95,16 +97,16 @@
 
 	// Read from read_queue
-	log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));
+	log_printf(TRACE,Read_queue,FUNCTION,"  * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));
 	if ((    internal_READ_QUEUE_OUT_VAL  == 1) and 
 	    (PORT_READ(in_READ_QUEUE_OUT_ACK) == 1))
 	  {
 	    // Pop the entry
-	    log_printf(TRACE,Read_queue,FUNCTION,"   * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
-	    _queue->pop();
+	    log_printf(TRACE,Read_queue,FUNCTION,"    * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
+	    _queue->pop_front();
 
 	    // read next new head
 	    if (_queue->empty() == false)
 	      {
-		log_printf(TRACE,Read_queue,FUNCTION,"     * queue was not empty");
+		log_printf(TRACE,Read_queue,FUNCTION,"    * queue was not empty");
 		need_new_head = true;
 	      }
@@ -128,5 +130,5 @@
 	if (need_new_head == true)
 	  {
-	    log_printf(TRACE,Read_queue,FUNCTION," * new head");
+	    log_printf(TRACE,Read_queue,FUNCTION,"  * new head");
 	    (*_queue_head) = (*_queue->front());
 	  }
@@ -138,12 +140,119 @@
 // 	  cout << (*_queue_head) << endl;
 
-	log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (end  ) : %d",_queue->size());
+#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Read_queue == true)
+	log_printf(TRACE,Read_queue,FUNCTION,"  * Dump Read_queue");
+	log_printf(TRACE,Read_queue,FUNCTION,"    * size : %d",(int)_queue->size());
+
+        if (_queue->size()>0)
+          {
+//   protected : Tread_queue_head_entry_t       * _queue_head;
+//   protected : std::queue<Tread_queue_entry_t *>   * _queue;
+            
+            log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)",
+                       0,
+
+                       _queue_head->_context_id           ,
+                       _queue_head->_front_end_id         ,
+                       _queue_head->_ooo_engine_id        ,
+                       _queue_head->_rob_id               ,
+
+                       _queue_head->_type                 ,
+                       _queue_head->_operation            ,
+
+                       _queue_head->_store_queue_ptr_write,
+                       _queue_head->_load_queue_ptr_write ,
+
+                       _queue_head->_has_immediat         ,
+                       _queue_head->_immediat             ,
+
+                       _queue_head->_read_ra              ,
+                       _queue_head->_read_ra_val          ,
+                       _queue_head->_num_reg_ra           ,
+                       _queue_head->_data_ra_val          ,
+                       _queue_head->_data_ra              ,
+
+                       _queue_head->_read_rb              ,
+                       _queue_head->_read_rb_val          ,
+                       _queue_head->_num_reg_rb           ,
+                       _queue_head->_data_rb_val          ,
+                       _queue_head->_data_rb              ,
+
+                       _queue_head->_read_rc              ,
+                       _queue_head->_read_rc_val          ,
+                       _queue_head->_num_reg_rc           ,
+                       _queue_head->_data_rc_val          ,
+                       _queue_head->_data_rc              ,
+
+                       _queue_head->_write_rd             ,
+                       _queue_head->_num_reg_rd           ,
+                       
+                       _queue_head->_write_re             ,
+                       _queue_head->_num_reg_re           ,
+
+                       toString_type(_queue_head->_type).c_str());
+
+
+            std::list<Tread_queue_entry_t *>::iterator it=_queue->begin();
+            ++it; // first is already printed
+            uint32_t i=1;
+
+            for (;it!=_queue->end(); ++it)
+              {
+                log_printf(TRACE,Read_queue,FUNCTION,"    * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d   %.4d           , %.1d   %.4d           , %.1d   %.4d     , %.1d %.4d, %.1d %.4d (%s)",
+                           i,
+                           
+                           (*it)->_context_id           ,
+                           (*it)->_front_end_id         ,
+                           (*it)->_ooo_engine_id        ,
+                           (*it)->_rob_id               ,
+                           
+                           (*it)->_type                 ,
+                           (*it)->_operation            ,
+                           
+                           (*it)->_store_queue_ptr_write,
+                           (*it)->_load_queue_ptr_write ,
+                           
+                           (*it)->_has_immediat         ,
+                           (*it)->_immediat             ,
+                           
+                           (*it)->_read_ra              ,
+//                         (*it)->_read_ra_val          ,
+                           (*it)->_num_reg_ra           ,
+//                         (*it)->_data_ra_val          ,
+//                         (*it)->_data_ra              ,
+                           
+                           (*it)->_read_rb              ,
+//                         (*it)->_read_rb_val          ,
+                           (*it)->_num_reg_rb           ,
+//                         (*it)->_data_rb_val          ,
+//                         (*it)->_data_rb              ,
+                           
+                           (*it)->_read_rc              ,
+//                         (*it)->_read_rc_val          ,
+                           (*it)->_num_reg_rc           ,
+//                         (*it)->_data_rc_val          ,
+//                         (*it)->_data_rc              ,
+                           
+                           (*it)->_write_rd             ,
+                           (*it)->_num_reg_rd           ,
+                           
+                           (*it)->_write_re             ,
+                           (*it)->_num_reg_re           ,
+
+                           toString_type((*it)->_type).c_str());
+
+                ++i;
+              }
+          }
+#endif
+
+
       }
 
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
-    end_cycle ();
+        end_cycle ();
 #endif
 
-    log_printf(FUNC,Read_queue,FUNCTION,"End");
+    log_end(Read_queue,FUNCTION);
   };
 
