Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 77)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 78)
@@ -66,5 +66,6 @@
     _have_port_front_end_id   (_size_front_end_id >0),
     _have_port_ooo_engine_id  (_size_ooo_engine_id>0),
-    _have_port_packet_id      (_size_packet_id    >0)
+    _have_port_packet_id      (_size_packet_id    >0),
+    _have_port_load_queue_ptr (_size_load_queue   >1)
   {
     log_printf(FUNC,Read_unit,FUNCTION,"Begin");
@@ -144,5 +145,6 @@
     _have_port_front_end_id   (param._have_port_front_end_id  ),
     _have_port_ooo_engine_id  (param._have_port_ooo_engine_id ),
-    _have_port_packet_id      (param._have_port_packet_id     )
+    _have_port_packet_id      (param._have_port_packet_id     ),
+    _have_port_load_queue_ptr (param._have_port_load_queue_ptr)
   {
     log_printf(FUNC,Read_unit,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp	(revision 77)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_msg_error.cpp	(revision 78)
@@ -21,13 +21,13 @@
 #undef  FUNCTION
 #define FUNCTION "Read_unit::msg_error"
-  std::string Parameters::msg_error(void)
+  Parameters_test Parameters::msg_error(void)
   {
     log_printf(FUNC,Read_unit,FUNCTION,"Begin");
 
-    std::string msg = "";
-
-    return msg;
+    Parameters_test test ("Read_unit");
 
     log_printf(FUNC,Read_unit,FUNCTION,"End");
+
+    return test;
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp	(revision 77)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp	(revision 78)
@@ -59,6 +59,6 @@
        ALLOC_INTERFACE("read_unit_in", IN, WEST, "Enter of new operation");
 
-       ALLOC_VAL_IN    ( in_READ_UNIT_IN_VAL);
-       ALLOC_ACK_OUT   (out_READ_UNIT_IN_ACK);
+       ALLOC_VALACK_IN    ( in_READ_UNIT_IN_VAL,VAL);
+       ALLOC_VALACK_OUT   (out_READ_UNIT_IN_ACK,ACK);
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id   );
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id );
@@ -67,6 +67,6 @@
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation    );
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type         );
-       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue  );
-       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue   );
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,log2(_param->_size_store_queue));
+       ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,log2(_param->_size_load_queue));
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1);
        ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data);
@@ -87,6 +87,6 @@
        ALLOC1_INTERFACE("read_unit_out", OUT, EAST, "Output of operation. All operand is valid.", _param->_nb_inst_retire);
 
-       ALLOC1_VAL_OUT   (out_READ_UNIT_OUT_VAL);
-       ALLOC1_ACK_IN    ( in_READ_UNIT_OUT_ACK);
+       ALLOC1_VALACK_OUT   (out_READ_UNIT_OUT_VAL,VAL);
+       ALLOC1_VALACK_IN    ( in_READ_UNIT_OUT_ACK,ACK);
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_CONTEXT_ID           ,"context_id"           ,Tcontext_t        ,_param->_size_context_id      );
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_FRONT_END_ID         ,"front_end_id"         ,Tcontext_t        ,_param->_size_front_end_id    );
@@ -95,6 +95,6 @@
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_OPERATION            ,"operation"            ,Toperation_t      ,_param->_size_operation       );
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_TYPE                 ,"type"                 ,Ttype_t           ,_param->_size_type            );
-       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,_param->_size_store_queue     );
-       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,_param->_size_load_queue      );
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t        ,log2(_param->_size_store_queue));
+       ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t        ,log2(_param->_size_load_queue ));
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_HAS_IMMEDIAT         ,"has_immediat"         ,Tcontrol_t        ,1                             );
        ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_IMMEDIAT             ,"immediat"             ,Tgeneral_data_t   ,_param->_size_general_data    );
@@ -112,6 +112,6 @@
        ALLOC1_INTERFACE("gpr_read", OUT, SOUTH, "Read port.", _param->_nb_gpr_read);
 
-       ALLOC1_VAL_OUT   (out_GPR_READ_VAL);
-       ALLOC1_ACK_IN    ( in_GPR_READ_ACK);
+       ALLOC1_VALACK_OUT   (out_GPR_READ_VAL,VAL);
+       ALLOC1_VALACK_IN    ( in_GPR_READ_ACK,ACK);
        ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
        ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
@@ -124,6 +124,6 @@
        ALLOC1_INTERFACE("spr_read", OUT, SOUTH, "Read port.", _param->_nb_spr_read);
 
-       ALLOC1_VAL_OUT   (out_SPR_READ_VAL);
-       ALLOC1_ACK_IN    ( in_SPR_READ_ACK);
+       ALLOC1_VALACK_OUT   (out_SPR_READ_VAL,VAL);
+       ALLOC1_VALACK_IN    ( in_SPR_READ_ACK,ACK);
        ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
        ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
@@ -136,5 +136,5 @@
        ALLOC1_INTERFACE("gpr_write", IN , SOUTH, "Write port.", _param->_nb_gpr_write);
 
-       ALLOC1_VAL_IN    ( in_GPR_WRITE_VAL);
+       ALLOC1_VALACK_IN    ( in_GPR_WRITE_VAL,VAL);
        ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
        ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG      ,"num_reg"      ,Tgeneral_address_t,_param->_size_general_data    );
@@ -146,5 +146,5 @@
        ALLOC1_INTERFACE("spr_write", IN , SOUTH, "Write port.", _param->_nb_spr_write);
 
-       ALLOC1_VAL_IN    ( in_SPR_WRITE_VAL);
+       ALLOC1_VALACK_IN    ( in_SPR_WRITE_VAL,VAL);
        ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
        ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG      ,"num_reg"      ,Tspecial_address_t,_param->_size_special_data    );
@@ -216,5 +216,4 @@
        name = _name+"_read_queue";
        std::cout << "Instance : " << name << std::endl;
-	
        {
 #ifdef POSITION
@@ -248,4 +247,5 @@
 	 _component->port_map(name, "in_READ_QUEUE_IN_TYPE"                 ,dest, "in_READ_UNIT_IN_TYPE"                 );
 	 _component->port_map(name, "in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE",dest, "in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE");
+	 if (_param->_have_port_load_queue_ptr)
 	 _component->port_map(name, "in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE" ,dest, "in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE" );
 	 _component->port_map(name, "in_READ_QUEUE_IN_HAS_IMMEDIAT"         ,dest, "in_READ_UNIT_IN_HAS_IMMEDIAT"         );
@@ -284,4 +284,5 @@
 	 _component->port_map(name,"out_READ_QUEUE_OUT_TYPE"                 ,dest, "in_INSERT_TYPE"                 );
 	 _component->port_map(name,"out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE",dest, "in_INSERT_STORE_QUEUE_PTR_WRITE");
+	 if (_param->_have_port_load_queue_ptr)
 	 _component->port_map(name,"out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE" ,dest, "in_INSERT_LOAD_QUEUE_PTR_WRITE" );
 	 _component->port_map(name,"out_READ_QUEUE_OUT_HAS_IMMEDIAT"         ,dest, "in_INSERT_HAS_IMMEDIAT"         );
@@ -375,5 +376,4 @@
        name = _name+"_reservation_station";
        std::cout << "Instance : " << name << std::endl;
-	
        {
 #ifdef POSITION
@@ -408,4 +408,5 @@
 	 _component->port_map(name, "in_INSERT_TYPE"                 ,dest,"out_READ_QUEUE_OUT_TYPE"                 );
 	 _component->port_map(name, "in_INSERT_STORE_QUEUE_PTR_WRITE",dest,"out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE");
+	 if (_param->_have_port_load_queue_ptr)
 	 _component->port_map(name, "in_INSERT_LOAD_QUEUE_PTR_WRITE" ,dest,"out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE" );
 	 _component->port_map(name, "in_INSERT_HAS_IMMEDIAT"         ,dest,"out_READ_QUEUE_OUT_HAS_IMMEDIAT"         );
@@ -452,4 +453,5 @@
 	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_TYPE"                 ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_TYPE"                 );
 	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_STORE_QUEUE_PTR_WRITE",dest,"out_READ_UNIT_OUT_"+toString(i)+"_STORE_QUEUE_PTR_WRITE");
+	   if (_param->_have_port_load_queue_ptr)
 	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_LOAD_QUEUE_PTR_WRITE" );
 	   _component->port_map(name,"out_RETIRE_"+toString(i)+"_HAS_IMMEDIAT"         ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_HAS_IMMEDIAT"         );
@@ -528,4 +530,5 @@
 	 }       
      }
+     
 
 #ifdef POSITION
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 77)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp	(revision 78)
@@ -42,4 +42,5 @@
 	delete     in_READ_UNIT_IN_TYPE                 ;
 	delete     in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+	if (_param->_have_port_load_queue_ptr)
 	delete     in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
 	delete     in_READ_UNIT_IN_HAS_IMMEDIAT         ;
@@ -70,4 +71,5 @@
 	delete [] out_READ_UNIT_OUT_TYPE                 ;
 	delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+	if (_param->_have_port_load_queue_ptr)
 	delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
 	delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT         ;
