Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 66)
@@ -1,5 +1,7 @@
 Read_queue
 2	8	*2	# size_queue    
-4	4	*2	# nb_context         
+1	1	*2	# nb_context         
+1	1	*2	# nb_front_end       
+4	4	*2	# nb_ooo_engine      
 32	32	*2	# nb_packet          
 16	16	+1	# size_general_data  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 66)
@@ -1,5 +1,7 @@
 Read_queue
 4	4	*2	# size_queue    
-4	4	*2	# nb_context         
+1	1	*2	# nb_context         
+1	1	*2	# nb_front_end 
+1	1	*2	# nb_ooo_engine
 32	32	*2	# nb_packet          
 16	16	+1	# size_general_data  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 66)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
 
-#define NB_PARAMS 0
+#define NB_PARAMS 13
 
 void usage (int argc, char * argv[])
@@ -16,4 +16,6 @@
        << " - size_queue          (unsigned int)" << endl
        << " - nb_context          (unsigned int)" << endl
+       << " - nb_front_end        (unsigned int)" << endl
+       << " - nb_ooo_engine       (unsigned int)" << endl
        << " - nb_packet           (unsigned int)" << endl
        << " - size_general_data   (unsigned int)" << endl
@@ -40,19 +42,22 @@
 #endif
 {
-  if (argc < 2+NB_PARAMS)
+  if (argc != 2+NB_PARAMS)
     usage (argc, argv);
 
-  const string   name                = argv[1];
-  const uint32_t size_queue          = atoi(argv[ 2]);
-  const uint32_t nb_context          = atoi(argv[ 3]);
-  const uint32_t nb_packet           = atoi(argv[ 4]);
-  const uint32_t size_general_data   = atoi(argv[ 5]);
-  const uint32_t size_special_data   = atoi(argv[ 6]);
-  const uint32_t nb_general_register = atoi(argv[ 7]);
-  const uint32_t nb_special_register = atoi(argv[ 8]);
-  const uint32_t nb_operation        = atoi(argv[ 9]);
-  const uint32_t nb_type             = atoi(argv[10]);
-  const uint32_t nb_gpr_write        = atoi(argv[11]);
-  const uint32_t nb_spr_write        = atoi(argv[12]);
+  uint32_t x=1;
+  const string   name                =      argv[x++];
+  const uint32_t size_queue          = atoi(argv[x++]);
+  const uint32_t nb_context          = atoi(argv[x++]);
+  const uint32_t nb_front_end        = atoi(argv[x++]);
+  const uint32_t nb_ooo_engine       = atoi(argv[x++]);
+  const uint32_t nb_packet           = atoi(argv[x++]);
+  const uint32_t size_general_data   = atoi(argv[x++]);
+  const uint32_t size_special_data   = atoi(argv[x++]);
+  const uint32_t nb_general_register = atoi(argv[x++]);
+  const uint32_t nb_special_register = atoi(argv[x++]);
+  const uint32_t nb_operation        = atoi(argv[x++]);
+  const uint32_t nb_type             = atoi(argv[x++]);
+  const uint32_t nb_gpr_write        = atoi(argv[x++]);
+  const uint32_t nb_spr_write        = atoi(argv[x++]);
 
   try 
@@ -61,4 +66,6 @@
 	( size_queue    
 	 ,nb_context         
+	 ,nb_front_end       
+	 ,nb_ooo_engine
 	 ,nb_packet          
 	 ,size_general_data  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 66)
@@ -8,8 +8,8 @@
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
-#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
 #include "Common/include/Test.h"
 
-#define NB_ITERATION  64
+#define NB_ITERATION  1
+//64
 #define CYCLE_MAX     (1024*NB_ITERATION)
 
@@ -70,5 +70,7 @@
   sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_ACK          = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_ACK         ");
   sc_signal<Tcontext_t         >         * READ_QUEUE_IN_CONTEXT_ID   = new sc_signal<Tcontext_t         >         ("READ_QUEUE_IN_CONTEXT_ID  ");
-  sc_signal<Tpacket_t          >         * READ_QUEUE_IN_PACKET_ID    = new sc_signal<Tpacket_t          >         ("READ_QUEUE_IN_PACKET_ID   ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_IN_FRONT_END_ID = new sc_signal<Tcontext_t         >         ("READ_QUEUE_IN_FRONT_END_ID ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_IN_OOO_ENGINE_ID= new sc_signal<Tcontext_t         >         ("READ_QUEUE_IN_OOO_ENGINE_ID");
+  sc_signal<Tpacket_t          >         * READ_QUEUE_IN_ROB_ID       = new sc_signal<Tpacket_t          >         ("READ_QUEUE_IN_ROB_ID   ");
   sc_signal<Toperation_t       >         * READ_QUEUE_IN_OPERATION    = new sc_signal<Toperation_t       >         ("READ_QUEUE_IN_OPERATION   ");
   sc_signal<Ttype_t            >         * READ_QUEUE_IN_TYPE         = new sc_signal<Ttype_t            >         ("READ_QUEUE_IN_TYPE        ");
@@ -90,6 +92,8 @@
   sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_VAL         = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_VAL         ");
   sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_ACK         = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_ACK         ");
-  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_CONTEXT_ID  = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_CONTEXT_ID  ");
-  sc_signal<Tpacket_t          >         * READ_QUEUE_OUT_PACKET_ID   = new sc_signal<Tpacket_t          >         ("READ_QUEUE_OUT_PACKET_ID   ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_CONTEXT_ID    = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_CONTEXT_ID   ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_FRONT_END_ID  = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_FRONT_END_ID ");
+  sc_signal<Tcontext_t         >         * READ_QUEUE_OUT_OOO_ENGINE_ID = new sc_signal<Tcontext_t         >         ("READ_QUEUE_OUT_OOO_ENGINE_ID");
+  sc_signal<Tpacket_t          >         * READ_QUEUE_OUT_ROB_ID      = new sc_signal<Tpacket_t          >         ("READ_QUEUE_OUT_ROB_ID   ");
   sc_signal<Toperation_t       >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<Toperation_t       >         ("READ_QUEUE_OUT_OPERATION   ");
   sc_signal<Ttype_t            >         * READ_QUEUE_OUT_TYPE        = new sc_signal<Ttype_t            >         ("READ_QUEUE_OUT_TYPE        ");
@@ -117,5 +121,5 @@
   sc_signal<Tcontrol_t         > ** GPR_READ_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_read];
   sc_signal<Tcontrol_t         > ** GPR_READ_ACK        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_read];
-  sc_signal<Tcontext_t         > ** GPR_READ_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_read];
+  sc_signal<Tcontext_t         > ** GPR_READ_OOO_ENGINE_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_read];
   sc_signal<Tgeneral_address_t > ** GPR_READ_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_read];
   sc_signal<Tgeneral_data_t    > ** GPR_READ_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_read];
@@ -128,6 +132,6 @@
       rename = "GPR_READ_"+toString(i)+"_ACK";     
       GPR_READ_ACK        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "GPR_READ_"+toString(i)+"_CONTEXT_ID";
-      GPR_READ_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "GPR_READ_"+toString(i)+"_OOO_ENGINE_ID";
+      GPR_READ_OOO_ENGINE_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
       rename = "GPR_READ_"+toString(i)+"_NUM_REG"; 
       GPR_READ_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
@@ -142,5 +146,5 @@
   sc_signal<Tcontrol_t         > ** SPR_READ_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_read];
   sc_signal<Tcontrol_t         > ** SPR_READ_ACK        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_read];
-  sc_signal<Tcontext_t         > ** SPR_READ_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_read];
+  sc_signal<Tcontext_t         > ** SPR_READ_OOO_ENGINE_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_read];
   sc_signal<Tspecial_address_t > ** SPR_READ_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_read];
   sc_signal<Tspecial_data_t    > ** SPR_READ_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_read];
@@ -153,6 +157,6 @@
       rename = "SPR_READ_"+toString(i)+"_ACK";     
       SPR_READ_ACK         [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "SPR_READ_"+toString(i)+"_CONTEXT_ID"; 
-      SPR_READ_CONTEXT_ID  [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "SPR_READ_"+toString(i)+"_OOO_ENGINE_ID"; 
+      SPR_READ_OOO_ENGINE_ID  [i] = new sc_signal<Tcontext_t         > (rename.c_str());
       rename = "SPR_READ_"+toString(i)+"_NUM_REG"; 
       SPR_READ_NUM_REG     [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
@@ -166,5 +170,5 @@
 
   sc_signal<Tcontrol_t         > ** GPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_write];
-  sc_signal<Tcontext_t         > ** GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
+  sc_signal<Tcontext_t         > ** GPR_WRITE_OOO_ENGINE_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
   sc_signal<Tgeneral_address_t > ** GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_write];
   sc_signal<Tgeneral_data_t    > ** GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_write];
@@ -174,6 +178,6 @@
       rename = "GPR_WRITE_"+toString(i)+"_VAL"       ;
       GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "GPR_WRITE_"+toString(i)+"_CONTEXT_ID";
-      GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "GPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID";
+      GPR_WRITE_OOO_ENGINE_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
       rename = "GPR_WRITE_"+toString(i)+"_NUM_REG"   ;
       GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
@@ -185,5 +189,5 @@
 
   sc_signal<Tcontrol_t         > ** SPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_write];
-  sc_signal<Tcontext_t         > ** SPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
+  sc_signal<Tcontext_t         > ** SPR_WRITE_OOO_ENGINE_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
   sc_signal<Tspecial_address_t > ** SPR_WRITE_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_write];
   sc_signal<Tspecial_data_t    > ** SPR_WRITE_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_write];
@@ -193,6 +197,6 @@
       rename = "SPR_WRITE_"+toString(i)+"_VAL"       ;
       SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "SPR_WRITE_"+toString(i)+"_CONTEXT_ID";
-      SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
+      rename = "SPR_WRITE_"+toString(i)+"_OOO_ENGINE_ID";
+      SPR_WRITE_OOO_ENGINE_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
       rename = "SPR_WRITE_"+toString(i)+"_NUM_REG"   ;
       SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
@@ -214,5 +218,7 @@
   (*(_Read_queue->out_READ_QUEUE_IN_ACK            )) (*(READ_QUEUE_IN_ACK            ));
   (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID     )) (*(READ_QUEUE_IN_CONTEXT_ID     ));
-  (*(_Read_queue-> in_READ_QUEUE_IN_PACKET_ID      )) (*(READ_QUEUE_IN_PACKET_ID      ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_FRONT_END_ID   )) (*(READ_QUEUE_IN_FRONT_END_ID   ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID  )) (*(READ_QUEUE_IN_OOO_ENGINE_ID  ));
+  (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID         )) (*(READ_QUEUE_IN_ROB_ID         ));
   (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION      )) (*(READ_QUEUE_IN_OPERATION      ));
   (*(_Read_queue-> in_READ_QUEUE_IN_TYPE           )) (*(READ_QUEUE_IN_TYPE           ));
@@ -233,5 +239,7 @@
   (*(_Read_queue-> in_READ_QUEUE_OUT_ACK           )) (*(READ_QUEUE_OUT_ACK           )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID    )) (*(READ_QUEUE_OUT_CONTEXT_ID    )); 
-  (*(_Read_queue->out_READ_QUEUE_OUT_PACKET_ID     )) (*(READ_QUEUE_OUT_PACKET_ID     )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_FRONT_END_ID  )) (*(READ_QUEUE_OUT_FRONT_END_ID  )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 
+  (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID        )) (*(READ_QUEUE_OUT_ROB_ID        )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION     )) (*(READ_QUEUE_OUT_OPERATION     )); 
   (*(_Read_queue->out_READ_QUEUE_OUT_TYPE          )) (*(READ_QUEUE_OUT_TYPE          )); 
@@ -259,5 +267,5 @@
       (*(_Read_queue->out_GPR_READ_VAL         [i])) (*(GPR_READ_VAL         [i]));
       (*(_Read_queue-> in_GPR_READ_ACK         [i])) (*(GPR_READ_ACK         [i]));
-      (*(_Read_queue->out_GPR_READ_CONTEXT_ID  [i])) (*(GPR_READ_CONTEXT_ID  [i]));
+      (*(_Read_queue->out_GPR_READ_OOO_ENGINE_ID  [i])) (*(GPR_READ_OOO_ENGINE_ID  [i]));
       (*(_Read_queue->out_GPR_READ_NUM_REG     [i])) (*(GPR_READ_NUM_REG     [i]));
       (*(_Read_queue-> in_GPR_READ_DATA        [i])) (*(GPR_READ_DATA        [i]));
@@ -269,5 +277,5 @@
       (*(_Read_queue->out_SPR_READ_VAL         [i])) (*(SPR_READ_VAL         [i]));
       (*(_Read_queue-> in_SPR_READ_ACK         [i])) (*(SPR_READ_ACK         [i]));
-      (*(_Read_queue->out_SPR_READ_CONTEXT_ID  [i])) (*(SPR_READ_CONTEXT_ID  [i]));
+      (*(_Read_queue->out_SPR_READ_OOO_ENGINE_ID  [i])) (*(SPR_READ_OOO_ENGINE_ID  [i]));
       (*(_Read_queue->out_SPR_READ_NUM_REG     [i])) (*(SPR_READ_NUM_REG     [i]));
       (*(_Read_queue-> in_SPR_READ_DATA        [i])) (*(SPR_READ_DATA        [i]));
@@ -278,5 +286,5 @@
     {
       (*(_Read_queue-> in_GPR_WRITE_VAL        [i])) (*(GPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_GPR_WRITE_CONTEXT_ID [i])) (*(GPR_WRITE_CONTEXT_ID [i]));
+      (*(_Read_queue-> in_GPR_WRITE_OOO_ENGINE_ID [i])) (*(GPR_WRITE_OOO_ENGINE_ID [i]));
       (*(_Read_queue-> in_GPR_WRITE_NUM_REG    [i])) (*(GPR_WRITE_NUM_REG    [i]));
       (*(_Read_queue-> in_GPR_WRITE_DATA       [i])) (*(GPR_WRITE_DATA       [i]));
@@ -286,5 +294,5 @@
     {
       (*(_Read_queue-> in_SPR_WRITE_VAL        [i])) (*(SPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_SPR_WRITE_CONTEXT_ID [i])) (*(SPR_WRITE_CONTEXT_ID [i]));
+      (*(_Read_queue-> in_SPR_WRITE_OOO_ENGINE_ID [i])) (*(SPR_WRITE_OOO_ENGINE_ID [i]));
       (*(_Read_queue-> in_SPR_WRITE_NUM_REG    [i])) (*(SPR_WRITE_NUM_REG    [i]));
       (*(_Read_queue-> in_SPR_WRITE_DATA       [i])) (*(SPR_WRITE_DATA       [i]));
@@ -304,5 +312,5 @@
   srand(seed);
 
-  Tcontext_t         _context_id [nb_request];
+  Tcontext_t         _ooo_engine_id [nb_request];
   Tcontrol_t         _read_ra    [nb_request];
   Tgeneral_address_t _num_reg_ra [nb_request];
@@ -313,8 +321,8 @@
 
   // emulation of registerFile
-  Tcontrol_t         _gpr_val    [_param->_nb_general_register][_param->_nb_context];
-  Tgeneral_data_t    _gpr        [_param->_nb_general_register][_param->_nb_context];
-  Tcontrol_t         _spr_val    [_param->_nb_special_register][_param->_nb_context];
-  Tspecial_data_t    _spr        [_param->_nb_special_register][_param->_nb_context];
+  Tcontrol_t         _gpr_val    [_param->_nb_general_register][_param->_nb_ooo_engine];
+  Tgeneral_data_t    _gpr        [_param->_nb_general_register][_param->_nb_ooo_engine];
+  Tcontrol_t         _spr_val    [_param->_nb_special_register][_param->_nb_ooo_engine];
+  Tspecial_data_t    _spr        [_param->_nb_special_register][_param->_nb_ooo_engine];
 
   SC_START(0);
@@ -344,5 +352,5 @@
       for (uint32_t i=0; i<nb_request; i++)
 	{
-	  _context_id   [i] = rand()% _param->_nb_context            ;
+	  _ooo_engine_id   [i] = rand()% _param->_nb_ooo_engine         ;
 	  _read_ra      [i] = rand()% 2                              ;
 	  _num_reg_ra   [i] = rand()% _param->_nb_general_register   ;
@@ -354,5 +362,5 @@
       
       // emulation of registerFile
-      for (uint32_t j=0; j<_param->_nb_context; j++)
+      for (uint32_t j=0; j<_param->_nb_ooo_engine; j++)
 	{
 	  for (uint32_t i=0; i<_param->_nb_general_register; i++)
@@ -377,7 +385,9 @@
 	      ((rand()%100) < percent_transaction_queue_in))
 	    {
-	      READ_QUEUE_IN_VAL         ->write(1);
-	      READ_QUEUE_IN_CONTEXT_ID  ->write(_context_id [request_in]);
-	      READ_QUEUE_IN_PACKET_ID   ->write(request_in);
+	      READ_QUEUE_IN_VAL            ->write(1);
+	      READ_QUEUE_IN_OOO_ENGINE_ID  ->write(_ooo_engine_id [request_in]);
+	      READ_QUEUE_IN_CONTEXT_ID     ->write((2*_ooo_engine_id [request_in])%_param->_nb_context  );
+	      READ_QUEUE_IN_FRONT_END_ID   ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end);
+	      READ_QUEUE_IN_ROB_ID      ->write(request_in);
 	      READ_QUEUE_IN_OPERATION   ->write(0);
 	      READ_QUEUE_IN_TYPE        ->write(0);
@@ -408,6 +418,6 @@
 	      if (GPR_READ_VAL [i]->read())
 		{
-		  Tgeneral_address_t num_reg = GPR_READ_NUM_REG    [i]->read();
-		  Tcontext_t         context = GPR_READ_CONTEXT_ID [i]->read();
+		  Tgeneral_address_t num_reg = GPR_READ_NUM_REG       [i]->read();
+		  Tcontext_t         context = GPR_READ_OOO_ENGINE_ID [i]->read();
 
 		  GPR_READ_DATA     [i]->write(_gpr    [num_reg][context]);
@@ -421,6 +431,6 @@
 	      if (SPR_READ_VAL [i]->read())
 		{
-		  Tspecial_address_t num_reg = SPR_READ_NUM_REG    [i]->read();
-		  Tcontext_t         context = SPR_READ_CONTEXT_ID [i]->read();
+		  Tspecial_address_t num_reg = SPR_READ_NUM_REG       [i]->read();
+		  Tcontext_t         context = SPR_READ_OOO_ENGINE_ID [i]->read();
 
 		  SPR_READ_DATA     [i]->write(_spr    [num_reg][context]);
@@ -433,17 +443,17 @@
 	    {
 	      Tcontrol_t         val     = (rand()%100) < percent_transaction_bypass;
-	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tcontext_t         ooo_engine = rand()% _param->_nb_ooo_engine;
 	      Tgeneral_address_t num_reg = rand()% _param->_nb_general_register;
 	      Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
 	      
-	      GPR_WRITE_VAL        [i]->write(val);	      
-	      GPR_WRITE_CONTEXT_ID [i]->write(context);
-	      GPR_WRITE_NUM_REG    [i]->write(num_reg);
-	      GPR_WRITE_DATA       [i]->write(data);
+	      GPR_WRITE_VAL           [i]->write(val);	      
+	      GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine);
+	      GPR_WRITE_NUM_REG       [i]->write(num_reg);
+	      GPR_WRITE_DATA          [i]->write(data);
 
 	      if (val)
 		{
-		  _gpr     [num_reg][context] = data;
-		  _gpr_val [num_reg][context] = 1;
+		  _gpr     [num_reg][ooo_engine] = data;
+		  _gpr_val [num_reg][ooo_engine] = 1;
 		}
 	    }
@@ -451,17 +461,17 @@
 	    {
 	      Tcontrol_t         val     = (rand()%100) < percent_transaction_bypass;
-	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tcontext_t         ooo_engine = rand()% _param->_nb_ooo_engine;
 	      Tspecial_address_t num_reg = rand()% _param->_nb_special_register;
 	      Tspecial_data_t    data    = rand()%(1<<_param->_size_special_data);
 	      
-	      SPR_WRITE_VAL        [i]->write(val);	      
-	      SPR_WRITE_CONTEXT_ID [i]->write(context);
-	      SPR_WRITE_NUM_REG    [i]->write(num_reg);
-	      SPR_WRITE_DATA       [i]->write(data);
+	      SPR_WRITE_VAL            [i]->write(val);	      
+	      SPR_WRITE_OOO_ENGINE_ID  [i]->write(ooo_engine);
+	      SPR_WRITE_NUM_REG        [i]->write(num_reg);
+	      SPR_WRITE_DATA           [i]->write(data);
 
 	      if (val)
 		{
-		  _spr     [num_reg][context] = data;
-		  _spr_val [num_reg][context] = 1;
+		  _spr     [num_reg][ooo_engine] = data;
+		  _spr_val [num_reg][ooo_engine] = 1;
 		}
 	    }
@@ -480,31 +490,34 @@
 	      (READ_QUEUE_OUT_ACK->read() == 1))
 	    {
-	      Tpacket_t packet_id = READ_QUEUE_OUT_PACKET_ID->read();
-
-	      LABEL("Accepted READ_QUEUE_OUT ["+toString(packet_id)+"]");
+	      Tpacket_t  rob_id = READ_QUEUE_OUT_ROB_ID->read();
+	      Tcontext_t ctxt   = _ooo_engine_id [rob_id];
+	      LABEL("Accepted READ_QUEUE_OUT ["+toString(rob_id)+"]");
 	      
-	      TEST(uint32_t          , packet_id ,request_out);
+	      TEST(uint32_t          , rob_id ,request_out);
 	      
 	      request_out ++;
 
-	      TEST(Tcontext_t        ,READ_QUEUE_OUT_CONTEXT_ID ->read(),_context_id   [packet_id]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [packet_id]);
-	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra   [packet_id]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not READ_QUEUE_OUT_READ_RA->read() or _gpr_val [_num_reg_ra[packet_id]][_context_id [packet_id]]);
+	      TEST(Tcontext_t        ,READ_QUEUE_OUT_OOO_ENGINE_ID ->read(),ctxt);
+	      TEST(Tcontext_t        ,READ_QUEUE_OUT_CONTEXT_ID    ->read(),(2*ctxt)%_param->_nb_context  );
+	      TEST(Tcontext_t        ,READ_QUEUE_OUT_FRONT_END_ID  ->read(),(3*ctxt)%_param->_nb_front_end);
+
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RA    ->read(),_read_ra      [rob_id]);
+	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra   [rob_id]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not READ_QUEUE_OUT_READ_RA->read() or _gpr_val [_num_reg_ra[rob_id]][ctxt]);
 	      if (READ_QUEUE_OUT_READ_RA    ->read() and
 		  READ_QUEUE_OUT_DATA_RA_VAL->read())
-	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RA    ->read(),_gpr          [_num_reg_ra[packet_id]][_context_id [packet_id]]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [packet_id]);
-	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb   [packet_id]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not READ_QUEUE_OUT_READ_RB->read() or _gpr_val [_num_reg_rb[packet_id]][_context_id [packet_id]]);
+	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RA    ->read(),_gpr          [_num_reg_ra[rob_id]][ctxt]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RB    ->read(),_read_rb      [rob_id]);
+	      TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb   [rob_id]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not READ_QUEUE_OUT_READ_RB->read() or _gpr_val [_num_reg_rb[rob_id]][ctxt]);
 	      if (READ_QUEUE_OUT_READ_RB    ->read() and
 		  READ_QUEUE_OUT_DATA_RB_VAL->read())
-	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RB    ->read(),_gpr          [_num_reg_rb[packet_id]][_context_id [packet_id]]);
-	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RC    ->read(),_read_rc      [packet_id]);
-	      TEST(Tspecial_address_t,READ_QUEUE_OUT_NUM_REG_RC ->read(),_num_reg_rc   [packet_id]);
-      	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RC_VAL->read(),not READ_QUEUE_OUT_READ_RC->read() or _spr_val [_num_reg_rc[packet_id]][_context_id [packet_id]]);
+	      TEST(Tgeneral_data_t   ,READ_QUEUE_OUT_DATA_RB    ->read(),_gpr          [_num_reg_rb[rob_id]][ctxt]);
+	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_READ_RC    ->read(),_read_rc      [rob_id]);
+	      TEST(Tspecial_address_t,READ_QUEUE_OUT_NUM_REG_RC ->read(),_num_reg_rc   [rob_id]);
+      	      TEST(Tcontrol_t        ,READ_QUEUE_OUT_DATA_RC_VAL->read(),not READ_QUEUE_OUT_READ_RC->read() or _spr_val [_num_reg_rc[rob_id]][ctxt]);
 	      if (READ_QUEUE_OUT_READ_RC    ->read() and
 		  READ_QUEUE_OUT_DATA_RC_VAL->read())
-	      TEST(Tspecial_data_t   ,READ_QUEUE_OUT_DATA_RC    ->read(),_spr     [_num_reg_rc[packet_id]][_context_id [packet_id]]);
+	      TEST(Tspecial_data_t   ,READ_QUEUE_OUT_DATA_RC    ->read(),_spr     [_num_reg_rc[rob_id]][ctxt]);
 	    }
 	  SC_START(1);
@@ -520,72 +533,78 @@
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
-  delete    CLOCK;
-  delete    NRESET;
-
-  delete    READ_QUEUE_IN_VAL          ;
-  delete    READ_QUEUE_IN_ACK          ;
-  delete    READ_QUEUE_IN_CONTEXT_ID   ;
-  delete    READ_QUEUE_IN_PACKET_ID    ;
-  delete    READ_QUEUE_IN_OPERATION    ;
-  delete    READ_QUEUE_IN_TYPE         ;
-  delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
-  delete    READ_QUEUE_IN_IMMEDIAT     ;
-  delete    READ_QUEUE_IN_READ_RA      ;
-  delete    READ_QUEUE_IN_NUM_REG_RA   ;
-  delete    READ_QUEUE_IN_READ_RB      ;
-  delete    READ_QUEUE_IN_NUM_REG_RB   ;
-  delete    READ_QUEUE_IN_READ_RC      ;
-  delete    READ_QUEUE_IN_NUM_REG_RC   ;
-  delete    READ_QUEUE_IN_WRITE_RD     ;
-  delete    READ_QUEUE_IN_NUM_REG_RD   ;
-  delete    READ_QUEUE_IN_WRITE_RE     ;
-  delete    READ_QUEUE_IN_NUM_REG_RE   ;
-
-  delete    READ_QUEUE_OUT_VAL         ;
-  delete    READ_QUEUE_OUT_ACK         ;
-  delete    READ_QUEUE_OUT_CONTEXT_ID  ;
-  delete    READ_QUEUE_OUT_PACKET_ID   ;
-  delete    READ_QUEUE_OUT_OPERATION   ;
-  delete    READ_QUEUE_OUT_TYPE        ;
-  delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
-  delete    READ_QUEUE_OUT_IMMEDIAT    ;
-  delete    READ_QUEUE_OUT_READ_RA     ;
-  delete    READ_QUEUE_OUT_NUM_REG_RA  ;
-  delete    READ_QUEUE_OUT_DATA_RA_VAL ;
-  delete    READ_QUEUE_OUT_DATA_RA     ;
-  delete    READ_QUEUE_OUT_READ_RB     ;
-  delete    READ_QUEUE_OUT_NUM_REG_RB  ;
-  delete    READ_QUEUE_OUT_DATA_RB_VAL ;
-  delete    READ_QUEUE_OUT_DATA_RB     ;
-  delete    READ_QUEUE_OUT_READ_RC     ;
-  delete    READ_QUEUE_OUT_NUM_REG_RC  ;
-  delete    READ_QUEUE_OUT_DATA_RC_VAL ;
-  delete    READ_QUEUE_OUT_DATA_RC     ;
-  delete    READ_QUEUE_OUT_WRITE_RD    ;
-  delete    READ_QUEUE_OUT_NUM_REG_RD  ;
-  delete    READ_QUEUE_OUT_WRITE_RE    ;
-  delete    READ_QUEUE_OUT_NUM_REG_RE  ;
-
-  delete [] GPR_READ_VAL     ;
-  delete [] GPR_READ_ACK     ;
-  delete [] GPR_READ_NUM_REG ;
-  delete [] GPR_READ_DATA    ;
-  delete [] GPR_READ_DATA_VAL;
-
-  delete [] SPR_READ_VAL     ;
-  delete [] SPR_READ_ACK     ;
-  delete [] SPR_READ_NUM_REG ;
-  delete [] SPR_READ_DATA    ;
-  delete [] SPR_READ_DATA_VAL;
-
-  delete [] GPR_WRITE_VAL        ;
-  delete [] GPR_WRITE_CONTEXT_ID ;
-  delete [] GPR_WRITE_NUM_REG    ;
-  delete [] GPR_WRITE_DATA       ;
-
-  delete [] SPR_WRITE_VAL        ;
-  delete [] SPR_WRITE_CONTEXT_ID ;
-  delete [] SPR_WRITE_NUM_REG    ;
-  delete [] SPR_WRITE_DATA       ;
+//   delete    CLOCK;
+//   delete    NRESET;
+
+//   delete    READ_QUEUE_IN_VAL          ;
+//   delete    READ_QUEUE_IN_ACK          ;
+//   delete    READ_QUEUE_IN_CONTEXT_ID   ;
+//   delete    READ_QUEUE_IN_FRONT_END_ID;
+//   delete    READ_QUEUE_IN_OOO_ENGINE_ID;
+//   delete    READ_QUEUE_IN_ROB_ID    ;
+//   delete    READ_QUEUE_IN_OPERATION    ;
+//   delete    READ_QUEUE_IN_TYPE         ;
+//   delete    READ_QUEUE_IN_HAS_IMMEDIAT ;
+//   delete    READ_QUEUE_IN_IMMEDIAT     ;
+//   delete    READ_QUEUE_IN_READ_RA      ;
+//   delete    READ_QUEUE_IN_NUM_REG_RA   ;
+//   delete    READ_QUEUE_IN_READ_RB      ;
+//   delete    READ_QUEUE_IN_NUM_REG_RB   ;
+//   delete    READ_QUEUE_IN_READ_RC      ;
+//   delete    READ_QUEUE_IN_NUM_REG_RC   ;
+//   delete    READ_QUEUE_IN_WRITE_RD     ;
+//   delete    READ_QUEUE_IN_NUM_REG_RD   ;
+//   delete    READ_QUEUE_IN_WRITE_RE     ;
+//   delete    READ_QUEUE_IN_NUM_REG_RE   ;
+
+//   delete    READ_QUEUE_OUT_VAL         ;
+//   delete    READ_QUEUE_OUT_ACK         ;
+//   delete    READ_QUEUE_OUT_CONTEXT_ID  ;
+//   delete    READ_QUEUE_OUT_FRONT_END_ID;
+//   delete    READ_QUEUE_OUT_OOO_ENGINE_ID;
+//   delete    READ_QUEUE_OUT_ROB_ID      ;
+//   delete    READ_QUEUE_OUT_OPERATION   ;
+//   delete    READ_QUEUE_OUT_TYPE        ;
+//   delete    READ_QUEUE_OUT_HAS_IMMEDIAT;
+//   delete    READ_QUEUE_OUT_IMMEDIAT    ;
+//   delete    READ_QUEUE_OUT_READ_RA     ;
+//   delete    READ_QUEUE_OUT_NUM_REG_RA  ;
+//   delete    READ_QUEUE_OUT_DATA_RA_VAL ;
+//   delete    READ_QUEUE_OUT_DATA_RA     ;
+//   delete    READ_QUEUE_OUT_READ_RB     ;
+//   delete    READ_QUEUE_OUT_NUM_REG_RB  ;
+//   delete    READ_QUEUE_OUT_DATA_RB_VAL ;
+//   delete    READ_QUEUE_OUT_DATA_RB     ;
+//   delete    READ_QUEUE_OUT_READ_RC     ;
+//   delete    READ_QUEUE_OUT_NUM_REG_RC  ;
+//   delete    READ_QUEUE_OUT_DATA_RC_VAL ;
+//   delete    READ_QUEUE_OUT_DATA_RC     ;
+//   delete    READ_QUEUE_OUT_WRITE_RD    ;
+//   delete    READ_QUEUE_OUT_NUM_REG_RD  ;
+//   delete    READ_QUEUE_OUT_WRITE_RE    ;
+//   delete    READ_QUEUE_OUT_NUM_REG_RE  ;
+
+//   delete [] GPR_READ_VAL     ;
+//   delete [] GPR_READ_ACK     ;
+//   delete [] GPR_READ_NUM_REG ;
+//   delete [] GPR_READ_DATA    ;
+//   delete [] GPR_READ_DATA_VAL;
+//   delete [] GPR_READ_OOO_ENGINE_ID ;
+
+//   delete [] SPR_READ_VAL     ;
+//   delete [] SPR_READ_ACK     ;
+//   delete [] SPR_READ_NUM_REG ;
+//   delete [] SPR_READ_DATA    ;
+//   delete [] SPR_READ_DATA_VAL;
+//   delete [] SPR_READ_OOO_ENGINE_ID ;
+
+//   delete [] GPR_WRITE_VAL        ;
+//   delete [] GPR_WRITE_OOO_ENGINE_ID ;
+//   delete [] GPR_WRITE_NUM_REG    ;
+//   delete [] GPR_WRITE_DATA       ;
+
+//   delete [] SPR_WRITE_VAL        ;
+//   delete [] SPR_WRITE_OOO_ENGINE_ID ;
+//   delete [] SPR_WRITE_NUM_REG    ;
+//   delete [] SPR_WRITE_DATA       ;
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 66)
@@ -11,4 +11,6 @@
 #include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
+#include "Behavioural/include/Types.h"
+
 #include <math.h>
 
@@ -28,4 +30,6 @@
   public : const uint32_t    _size_queue           ;
   public : const uint32_t    _nb_context           ;
+  public : const uint32_t    _nb_front_end         ;
+  public : const uint32_t    _nb_ooo_engine        ;
   public : const uint32_t    _nb_packet            ;
   public : const uint32_t    _size_general_data    ;
@@ -41,5 +45,7 @@
   public : const uint32_t    _nb_spr_read          ;    
   public : const uint32_t    _size_context_id      ;
-  public : const uint32_t    _size_packet_id       ;
+  public : const uint32_t    _size_front_end_id    ;
+  public : const uint32_t    _size_ooo_engine_id   ;
+  public : const uint32_t    _size_rob_id          ;
   public : const uint32_t    _size_general_register;
   public : const uint32_t    _size_special_register;
@@ -50,4 +56,6 @@
   public : Parameters  (uint32_t size_queue         ,
 			uint32_t nb_context         ,
+			uint32_t nb_front_end       ,
+			uint32_t nb_ooo_engine      ,
 			uint32_t nb_packet          ,
 			uint32_t size_general_data  ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 66)
@@ -17,7 +17,7 @@
 #include "Common/include/ToString.h"
 #include "Common/include/Debug.h"
+#include "Behavioural/include/Types.h"
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
-#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
 #ifdef STATISTICS
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Statistics.h"
@@ -42,5 +42,7 @@
   {
   public    : Tcontext_t         _context_id   ;
-  public    : Tpacket_t          _packet_id    ;
+  public    : Tcontext_t         _front_end_id ;
+  public    : Tcontext_t         _ooo_engine_id;
+  public    : Tpacket_t          _rob_id       ;
   public    : Toperation_t       _operation    ;
   public    : Ttype_t            _type         ;
@@ -61,20 +63,22 @@
 				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_entry_t & x)
     {
-      output_stream << " * _context_id  : " << toString(x._context_id  ) << endl
-		    << " * _packet_id   : " << toString(x._packet_id   ) << endl
-		    << " * _operation   : " << toString(x._operation   ) << endl
-		    << " * _type        : " << toString(x._type        ) << endl
-		    << " * _has_immediat: " << toString(x._has_immediat) << endl
-		    << " * _immediat    : " << toString(x._immediat    ) << endl
-		    << " * _read_ra     : " << toString(x._read_ra     ) << endl
-		    << " * _num_reg_ra  : " << toString(x._num_reg_ra  ) << endl
-		    << " * _read_rb     : " << toString(x._read_rb     ) << endl
-		    << " * _num_reg_rb  : " << toString(x._num_reg_rb  ) << endl
-		    << " * _read_rc     : " << toString(x._read_rc     ) << endl
-		    << " * _num_reg_rc  : " << toString(x._num_reg_rc  ) << endl
-		    << " * _write_rd    : " << toString(x._write_rd    ) << endl
-		    << " * _num_reg_rd  : " << toString(x._num_reg_rd  ) << endl
-		    << " * _write_re    : " << toString(x._write_re    ) << endl
-		    << " * _num_reg_re  : " << toString(x._num_reg_re  ) << endl;
+      output_stream << " * _context_id    : " << toString(x._context_id   ) << endl
+		    << " * _front_end_id  : " << toString(x._front_end_id ) << endl
+		    << " * _ooo_engine_id : " << toString(x._ooo_engine_id) << endl
+		    << " * _rob_id        : " << toString(x._rob_id       ) << endl
+		    << " * _operation     : " << toString(x._operation    ) << endl
+		    << " * _type          : " << toString(x._type         ) << endl
+		    << " * _has_immediat  : " << toString(x._has_immediat ) << endl
+		    << " * _immediat      : " << toString(x._immediat     ) << endl
+		    << " * _read_ra       : " << toString(x._read_ra      ) << endl
+		    << " * _num_reg_ra    : " << toString(x._num_reg_ra   ) << endl
+		    << " * _read_rb       : " << toString(x._read_rb      ) << endl
+		    << " * _num_reg_rb    : " << toString(x._num_reg_rb   ) << endl
+		    << " * _read_rc       : " << toString(x._read_rc      ) << endl
+		    << " * _num_reg_rc    : " << toString(x._num_reg_rc   ) << endl
+		    << " * _write_rd      : " << toString(x._write_rd     ) << endl
+		    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << endl
+		    << " * _write_re      : " << toString(x._write_re     ) << endl
+		    << " * _num_reg_re    : " << toString(x._num_reg_re   ) << endl;
 
       return output_stream;
@@ -86,5 +90,7 @@
   {
   public    : Tcontext_t         _context_id   ;
-  public    : Tpacket_t          _packet_id    ;
+  public    : Tcontext_t         _front_end_id ;
+  public    : Tcontext_t         _ooo_engine_id;
+  public    : Tpacket_t          _rob_id       ;
   public    : Toperation_t       _operation    ;
   public    : Ttype_t            _type         ;
@@ -118,5 +124,7 @@
 	  
       _context_id   = x._context_id   ;
-      _packet_id    = x._packet_id    ;
+      _front_end_id = x._front_end_id ;
+      _ooo_engine_id= x._ooo_engine_id;
+      _rob_id       = x._rob_id       ;
       _operation    = x._operation    ;
       _type         = x._type         ;
@@ -151,29 +159,31 @@
 				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Tread_queue_head_entry_t & x)
     {
-      output_stream << " * _context_id  : " << x._context_id   << endl
-		    << " * _packet_id   : " << x._packet_id    << endl
-		    << " * _operation   : " << x._operation    << endl
-		    << " * _type        : " << x._type         << endl
-		    << " * _has_immediat: " << x._has_immediat << endl
-		    << " * _immediat    : " << x._immediat     << endl
-		    << " * _read_ra     : " << x._read_ra      << endl
-		    << " * _read_ra_val : " << x._read_ra_val  << endl 
-		    << " * _num_reg_ra  : " << x._num_reg_ra   << endl
-		    << " * _data_ra_val : " << x._data_ra_val  << endl
-		    << " * _data_ra     : " << x._data_ra      << endl
-		    << " * _read_rb     : " << x._read_rb      << endl
-		    << " * _read_rb_val : " << x._read_rb_val  << endl
-		    << " * _num_reg_rb  : " << x._num_reg_rb   << endl
-		    << " * _data_rb_val : " << x._data_rb_val  << endl
-		    << " * _data_rb     : " << x._data_rb      << endl
-		    << " * _read_rc     : " << x._read_rc      << endl
-		    << " * _read_rc_val : " << x._read_rc_val  << endl
-		    << " * _num_reg_rc  : " << x._num_reg_rc   << endl
-		    << " * _data_rc_val : " << x._data_rc_val  << endl
-		    << " * _data_rc     : " << x._data_rc      << endl
-		    << " * _write_rd    : " << x._write_rd     << endl
-		    << " * _num_reg_rd  : " << x._num_reg_rd   << endl
-		    << " * _write_re    : " << x._write_re     << endl
-		    << " * _num_reg_re  : " << x._num_reg_re   << endl;
+      output_stream << " * _context_id    : " << x._context_id   << endl
+		    << " * _front_end_id  : " << x._front_end_id << endl
+		    << " * _ooo_engine_id : " << x._ooo_engine_id<< endl
+		    << " * _rob_id        : " << x._rob_id       << endl
+		    << " * _operation     : " << x._operation    << endl
+		    << " * _type          : " << x._type         << endl
+		    << " * _has_immediat  : " << x._has_immediat << endl
+		    << " * _immediat      : " << x._immediat     << endl
+		    << " * _read_ra       : " << x._read_ra      << endl
+		    << " * _read_ra_val   : " << x._read_ra_val  << endl 
+		    << " * _num_reg_ra    : " << x._num_reg_ra   << endl
+		    << " * _data_ra_val   : " << x._data_ra_val  << endl
+		    << " * _data_ra       : " << x._data_ra      << endl
+		    << " * _read_rb       : " << x._read_rb      << endl
+		    << " * _read_rb_val   : " << x._read_rb_val  << endl
+		    << " * _num_reg_rb    : " << x._num_reg_rb   << endl
+		    << " * _data_rb_val   : " << x._data_rb_val  << endl
+		    << " * _data_rb       : " << x._data_rb      << endl
+		    << " * _read_rc       : " << x._read_rc      << endl
+		    << " * _read_rc_val   : " << x._read_rc_val  << endl
+		    << " * _num_reg_rc    : " << x._num_reg_rc   << endl
+		    << " * _data_rc_val   : " << x._data_rc_val  << endl
+		    << " * _data_rc       : " << x._data_rc      << endl
+		    << " * _write_rd      : " << x._write_rd     << endl
+		    << " * _num_reg_rd    : " << x._num_reg_rd   << endl
+		    << " * _write_re      : " << x._write_re     << endl
+		    << " * _num_reg_re    : " << x._num_reg_re   << endl;
 
       return output_stream;
@@ -209,5 +219,7 @@
   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_IN_ACK          ;
   public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_CONTEXT_ID   ;
-  public    : SC_IN (Tpacket_t         )    *  in_READ_QUEUE_IN_PACKET_ID    ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_FRONT_END_ID ;
+  public    : SC_IN (Tcontext_t        )    *  in_READ_QUEUE_IN_OOO_ENGINE_ID;
+  public    : SC_IN (Tpacket_t         )    *  in_READ_QUEUE_IN_ROB_ID       ;
   public    : SC_IN (Toperation_t      )    *  in_READ_QUEUE_IN_OPERATION    ;
   public    : SC_IN (Ttype_t           )    *  in_READ_QUEUE_IN_TYPE         ;
@@ -229,6 +241,8 @@
   public    : SC_OUT(Tcontrol_t        )    * out_READ_QUEUE_OUT_VAL         ;
   public    : SC_IN (Tcontrol_t        )    *  in_READ_QUEUE_OUT_ACK         ;
-  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_CONTEXT_ID  ;
-  public    : SC_OUT(Tpacket_t         )    * out_READ_QUEUE_OUT_PACKET_ID   ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_CONTEXT_ID   ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_FRONT_END_ID ;
+  public    : SC_OUT(Tcontext_t        )    * out_READ_QUEUE_OUT_OOO_ENGINE_ID;
+  public    : SC_OUT(Tpacket_t         )    * out_READ_QUEUE_OUT_ROB_ID       ;
   public    : SC_OUT(Toperation_t      )    * out_READ_QUEUE_OUT_OPERATION   ;
   public    : SC_OUT(Ttype_t           )    * out_READ_QUEUE_OUT_TYPE        ;
@@ -254,33 +268,33 @@
     // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  public    : SC_OUT(Tcontrol_t        )   ** out_GPR_READ_VAL       ;
-  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_ACK       ;
-  public    : SC_OUT(Tcontext_t        )   ** out_GPR_READ_CONTEXT_ID;
-  public    : SC_OUT(Tgeneral_address_t)   ** out_GPR_READ_NUM_REG   ;
-  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_READ_DATA      ;
-  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_DATA_VAL  ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_GPR_READ_VAL          ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_ACK          ;
+  public    : SC_OUT(Tcontext_t        )   ** out_GPR_READ_OOO_ENGINE_ID;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_GPR_READ_NUM_REG      ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_READ_DATA         ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_READ_DATA_VAL     ;
 
     // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  public    : SC_OUT(Tcontrol_t        )   ** out_SPR_READ_VAL       ;
-  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_ACK       ;
-  public    : SC_OUT(Tcontext_t        )   ** out_SPR_READ_CONTEXT_ID;
-  public    : SC_OUT(Tspecial_address_t)   ** out_SPR_READ_NUM_REG   ;
-  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_READ_DATA      ;
-  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL  ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_SPR_READ_VAL          ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_ACK          ;
+  public    : SC_OUT(Tcontext_t        )   ** out_SPR_READ_OOO_ENGINE_ID;
+  public    : SC_OUT(Tspecial_address_t)   ** out_SPR_READ_NUM_REG      ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_READ_DATA         ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL     ;
 
     // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL       ;
-  public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_CONTEXT_ID;
-  public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG   ;
-  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL          ;
+  public    : SC_IN (Tcontext_t        )   **  in_GPR_WRITE_OOO_ENGINE_ID;
+  public    : SC_IN (Tgeneral_address_t)   **  in_GPR_WRITE_NUM_REG      ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_GPR_WRITE_DATA         ;
 
     // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL       ;
-  public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_CONTEXT_ID;
-  public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG   ;
-  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL          ;
+  public    : SC_IN (Tcontext_t        )   **  in_SPR_WRITE_OOO_ENGINE_ID;
+  public    : SC_IN (Tspecial_address_t)   **  in_SPR_WRITE_NUM_REG      ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_SPR_WRITE_DATA         ;
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h	(revision 65)
+++ 	(revision )
@@ -1,41 +1,0 @@
-#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Type_h
-#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_read_queue_Type_h
-
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Common/include/Types.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace core {
-namespace multi_execute_loop {
-namespace execute_loop {
-namespace multi_read_unit {
-namespace read_unit {
-namespace read_queue {
-
-  typedef uint32_t Tgeneral_data_t   ;
-  typedef uint32_t Tspecial_data_t   ;
-  typedef uint32_t Tgeneral_address_t;
-  typedef uint32_t Tspecial_address_t;
-  typedef uint32_t Tcontext_t        ;
-  typedef uint32_t Tpacket_t         ;
-//typedef uint32_t Toperation_t      ; // cf Constant_OpenRISC.h
-  typedef uint32_t Ttype_t           ;
-
-}; // end namespace read_queue
-}; // end namespace read_unit
-}; // end namespace multi_read_unit
-}; // end namespace execute_loop
-}; // end namespace multi_execute_loop
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-
-#endif
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 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 66)
@@ -20,4 +20,6 @@
   Parameters::Parameters (uint32_t size_queue         ,
 			  uint32_t nb_context         ,
+			  uint32_t nb_front_end       ,
+			  uint32_t nb_ooo_engine      ,
 			  uint32_t nb_packet          ,
 			  uint32_t size_general_data  ,
@@ -31,4 +33,6 @@
     _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    ),
@@ -44,5 +48,7 @@
     _nb_spr_read           (1                    ),
     _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
-    _size_packet_id        (static_cast<uint32_t>(log2(_nb_packet          ))),
+    _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))),
@@ -58,4 +64,6 @@
     _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     ),
@@ -71,5 +79,7 @@
     _nb_spr_read           (param._nb_spr_read           ),
     _size_context_id       (param._size_context_id       ),
-    _size_packet_id        (param._size_packet_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 ),
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_msg_error.cpp	(revision 66)
@@ -7,5 +7,4 @@
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h"
-#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h"
 #include <sstream>
 using namespace std;
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 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 66)
@@ -29,4 +29,6 @@
     xml.singleton_begin("size_queue         "); xml.attribut("value",toString(_size_queue         )); xml.singleton_end();
     xml.singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context         )); xml.singleton_end();
+    xml.singleton_begin("nb_front_end       "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
+    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();
@@ -36,5 +38,5 @@
     xml.singleton_begin("nb_operation       "); xml.attribut("value",toString(_nb_operation       )); xml.singleton_end();
     xml.singleton_begin("nb_type            "); xml.attribut("value",toString(_nb_type            )); xml.singleton_end();
-    xml.singleton_begin("nb_gpr_write       "); xml.attribut("value",toString(_nb_gpr_write       )); 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.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 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 66)
@@ -78,9 +78,9 @@
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
       sensitive << *(in_GPR_WRITE_VAL        [i])
-		<< *(in_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_GPR_WRITE_OOO_ENGINE_ID [i])
 		<< *(in_GPR_WRITE_NUM_REG    [i]);
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
       sensitive << *(in_SPR_WRITE_VAL        [i])
-		<< *(in_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_SPR_WRITE_OOO_ENGINE_ID [i])
 		<< *(in_SPR_WRITE_NUM_REG    [i]);
 
@@ -94,5 +94,5 @@
       {
 	(*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
       }
@@ -100,5 +100,5 @@
       {
 	(*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
       }
@@ -116,5 +116,5 @@
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
       sensitive << *(in_GPR_WRITE_VAL        [i])
-		<< *(in_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_GPR_WRITE_OOO_ENGINE_ID [i])
 		<< *(in_GPR_WRITE_NUM_REG    [i])
 		<< *(in_GPR_WRITE_DATA       [i]);
@@ -134,16 +134,16 @@
       {
 	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_GPR_WRITE_NUM_REG    [i]));
 
 	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_NUM_REG    [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_GPR_WRITE_DATA       [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_NUM_REG    [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_DATA       [i]));
@@ -162,5 +162,5 @@
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
       sensitive << *(in_SPR_WRITE_VAL        [i])
-		<< *(in_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_SPR_WRITE_OOO_ENGINE_ID [i])
 		<< *(in_SPR_WRITE_NUM_REG    [i])
 		<< *(in_SPR_WRITE_DATA       [i]);
@@ -177,9 +177,9 @@
       {
 	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_SPR_WRITE_NUM_REG    [i]));
 
 	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_CONTEXT_ID [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_OOO_ENGINE_ID [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_NUM_REG    [i]));
 	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_DATA       [i]));
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 65)
+++ 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 66)
@@ -62,6 +62,8 @@
        in_READ_QUEUE_IN_VAL            = interface->set_signal_valack_in        ("val"    , VAL);
       out_READ_QUEUE_IN_ACK            = interface->set_signal_valack_out       ("ack"    , ACK);
-       in_READ_QUEUE_IN_CONTEXT_ID     = interface->set_signal_in  <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
-       in_READ_QUEUE_IN_PACKET_ID      = interface->set_signal_in  <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+       in_READ_QUEUE_IN_CONTEXT_ID     = interface->set_signal_in  <Tcontext_t        > ("context_id"   ,_param->_size_context_id       );
+       in_READ_QUEUE_IN_FRONT_END_ID   = interface->set_signal_in  <Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id     );
+       in_READ_QUEUE_IN_OOO_ENGINE_ID  = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
+       in_READ_QUEUE_IN_ROB_ID         = interface->set_signal_in  <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
        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             );
@@ -92,6 +94,9 @@
       out_READ_QUEUE_OUT_VAL            = interface->set_signal_valack_out       ("val"    , VAL);
        in_READ_QUEUE_OUT_ACK            = interface->set_signal_valack_in        ("ack"    , ACK);
-      out_READ_QUEUE_OUT_CONTEXT_ID     = interface->set_signal_out <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
-      out_READ_QUEUE_OUT_PACKET_ID      = interface->set_signal_out <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+
+      out_READ_QUEUE_OUT_CONTEXT_ID     = interface->set_signal_out <Tcontext_t        > ("context_id"   ,_param->_size_context_id       );
+      out_READ_QUEUE_OUT_FRONT_END_ID   = interface->set_signal_out <Tcontext_t        > ("front_end_id" ,_param->_size_front_end_id     );
+      out_READ_QUEUE_OUT_OOO_ENGINE_ID  = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id    );
+      out_READ_QUEUE_OUT_ROB_ID         = interface->set_signal_out <Tpacket_t         > ("rob_id"      ,_param->_size_rob_id           );
       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             );
@@ -118,10 +123,10 @@
     // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-    out_GPR_READ_VAL       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
-     in_GPR_READ_ACK       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
-    out_GPR_READ_CONTEXT_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_gpr_read];
-    out_GPR_READ_NUM_REG   = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read];
-     in_GPR_READ_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_read];
-     in_GPR_READ_DATA_VAL  = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
+    out_GPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_gpr_read];
+     in_GPR_READ_ACK          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
+    out_GPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_gpr_read];
+    out_GPR_READ_NUM_REG      = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read];
+     in_GPR_READ_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_read];
+     in_GPR_READ_DATA_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_read];
 
     for (uint32_t i=0; i<_param->_nb_gpr_read; i++)
@@ -135,20 +140,20 @@
                                                                 );
 
-	out_GPR_READ_VAL        [i] = interface->set_signal_valack_out       ("val"    , VAL);
-	 in_GPR_READ_ACK        [i] = interface->set_signal_valack_in        ("ack"    , ACK);
-	out_GPR_READ_CONTEXT_ID [i] = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_context_id);
-	out_GPR_READ_NUM_REG    [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"  ,_param->_size_general_register);
-	 in_GPR_READ_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"     ,_param->_size_general_data);
-	 in_GPR_READ_DATA_VAL   [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val" ,1);
+	out_GPR_READ_VAL           [i] = interface->set_signal_valack_out       ("val"    , VAL);
+	 in_GPR_READ_ACK           [i] = interface->set_signal_valack_in        ("ack"    , ACK);
+	out_GPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
+	out_GPR_READ_NUM_REG       [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg"  ,_param->_size_general_register);
+	 in_GPR_READ_DATA          [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"     ,_param->_size_general_data);
+	 in_GPR_READ_DATA_VAL      [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val" ,1);
       }
      
     // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-    out_SPR_READ_VAL       = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
-     in_SPR_READ_ACK       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
-    out_SPR_READ_CONTEXT_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_spr_read];
-    out_SPR_READ_NUM_REG   = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read];
-     in_SPR_READ_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_read];
-     in_SPR_READ_DATA_VAL  = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
+    out_SPR_READ_VAL          = new SC_OUT(Tcontrol_t        ) * [_param->_nb_spr_read];
+     in_SPR_READ_ACK          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
+    out_SPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t        ) * [_param->_nb_spr_read];
+    out_SPR_READ_NUM_REG      = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read];
+     in_SPR_READ_DATA         = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_read];
+     in_SPR_READ_DATA_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_read];
 
     for (uint32_t i=0; i<_param->_nb_spr_read; i++)
@@ -162,18 +167,18 @@
                                                                 );
 
-	out_SPR_READ_VAL        [i] = interface->set_signal_valack_out       ("val"    , VAL);
-	 in_SPR_READ_ACK        [i] = interface->set_signal_valack_in        ("ack"    , ACK);
-	out_SPR_READ_CONTEXT_ID [i] = interface->set_signal_out <Tcontext_t        > ("context_id",_param->_size_context_id);
-	out_SPR_READ_NUM_REG    [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
-	 in_SPR_READ_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
-	 in_SPR_READ_DATA_VAL   [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val"  ,1);
+	out_SPR_READ_VAL           [i] = interface->set_signal_valack_out       ("val"    , VAL);
+	 in_SPR_READ_ACK           [i] = interface->set_signal_valack_in        ("ack"    , ACK);
+	out_SPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
+	out_SPR_READ_NUM_REG       [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
+	 in_SPR_READ_DATA          [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
+	 in_SPR_READ_DATA_VAL      [i] = interface->set_signal_in  <Tcontrol_t        > ("data_val"  ,1);
       }
 
     // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-     in_GPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
-     in_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
-     in_GPR_WRITE_NUM_REG   = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
-     in_GPR_WRITE_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
+     in_GPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
+     in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
+     in_GPR_WRITE_NUM_REG      = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
+     in_GPR_WRITE_DATA         = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
 
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
@@ -187,16 +192,16 @@
                                                                 );
 
-	 in_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	 in_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
-	 in_GPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
-	 in_GPR_WRITE_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
+	 in_GPR_WRITE_VAL           [i] = interface->set_signal_valack_in        ("val"    , VAL);
+	 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
+	 in_GPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
+	 in_GPR_WRITE_DATA          [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
       }
 
     // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-     in_SPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
-     in_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
-     in_SPR_WRITE_NUM_REG   = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
-     in_SPR_WRITE_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
+     in_SPR_WRITE_VAL          = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
+     in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
+     in_SPR_WRITE_NUM_REG      = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
+     in_SPR_WRITE_DATA         = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
 
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
@@ -210,8 +215,8 @@
                                                                 );
 
-	 in_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	 in_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
-	 in_SPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
-	 in_SPR_WRITE_DATA       [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
+	 in_SPR_WRITE_VAL           [i] = interface->set_signal_valack_in ("val"    , VAL);
+	 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in  <Tcontext_t        > ("ooo_engine_id",_param->_size_ooo_engine_id);
+	 in_SPR_WRITE_NUM_REG       [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
+	 in_SPR_WRITE_DATA          [i] = interface->set_signal_in  <Tspecial_data_t   > ("data"      ,_param->_size_special_data);
       }
 
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 65)
+++ 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 66)
@@ -31,5 +31,7 @@
     delete    out_READ_QUEUE_IN_ACK            ;
     delete     in_READ_QUEUE_IN_CONTEXT_ID     ;
-    delete     in_READ_QUEUE_IN_PACKET_ID      ;
+    delete     in_READ_QUEUE_IN_FRONT_END_ID   ;
+    delete     in_READ_QUEUE_IN_OOO_ENGINE_ID  ;
+    delete     in_READ_QUEUE_IN_ROB_ID         ;
     delete     in_READ_QUEUE_IN_OPERATION      ;
     delete     in_READ_QUEUE_IN_TYPE           ;
@@ -51,5 +53,7 @@
     delete     in_READ_QUEUE_OUT_ACK            ;
     delete    out_READ_QUEUE_OUT_CONTEXT_ID     ;
-    delete    out_READ_QUEUE_OUT_PACKET_ID      ;
+    delete    out_READ_QUEUE_OUT_FRONT_END_ID   ;
+    delete    out_READ_QUEUE_OUT_OOO_ENGINE_ID  ;
+    delete    out_READ_QUEUE_OUT_ROB_ID         ;
     delete    out_READ_QUEUE_OUT_OPERATION      ;
     delete    out_READ_QUEUE_OUT_TYPE           ;
@@ -77,5 +81,5 @@
     delete [] out_GPR_READ_VAL       ;
     delete []  in_GPR_READ_ACK       ;
-    delete [] out_GPR_READ_CONTEXT_ID;
+    delete [] out_GPR_READ_OOO_ENGINE_ID;
     delete [] out_GPR_READ_NUM_REG   ;
     delete []  in_GPR_READ_DATA      ;
@@ -86,5 +90,5 @@
     delete [] out_SPR_READ_VAL       ;
     delete []  in_SPR_READ_ACK       ;
-    delete [] out_SPR_READ_CONTEXT_ID;
+    delete [] out_SPR_READ_OOO_ENGINE_ID;
     delete [] out_SPR_READ_NUM_REG   ;
     delete []  in_SPR_READ_DATA      ;
@@ -94,5 +98,5 @@
     
     delete []  in_GPR_WRITE_VAL       ;
-    delete []  in_GPR_WRITE_CONTEXT_ID;
+    delete []  in_GPR_WRITE_OOO_ENGINE_ID;
     delete []  in_GPR_WRITE_NUM_REG   ;
     delete []  in_GPR_WRITE_DATA      ;
@@ -101,9 +105,10 @@
     
     delete []  in_SPR_WRITE_VAL       ;
-    delete []  in_SPR_WRITE_CONTEXT_ID;
+    delete []  in_SPR_WRITE_OOO_ENGINE_ID;
     delete []  in_SPR_WRITE_NUM_REG   ;
     delete []  in_SPR_WRITE_DATA      ;
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
     while (_queue->empty() == false)
       {
@@ -111,10 +116,7 @@
 	_queue->pop();
       }
-    
     delete _queue;
     delete _queue_head;
-
     delete _component;
-
     log_printf(FUNC,Read_queue,"deallocation","End");
   };
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 65)
+++ 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 66)
@@ -66,6 +66,6 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_GPR_WRITE_VAL           [i]) == 1) and
+	     (PORT_READ (in_GPR_WRITE_OOO_ENGINE_ID [i]) == _queue_head->_ooo_engine_id)
 	     )
 	  {
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 65)
+++ 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 66)
@@ -51,6 +51,6 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_SPR_WRITE_VAL           [i]) == 1) and
+	     (PORT_READ (in_SPR_WRITE_OOO_ENGINE_ID [i]) == _queue_head->_ooo_engine_id)
 	     )
 	  {
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 65)
+++ 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 66)
@@ -42,6 +42,6 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_GPR_WRITE_VAL           [i]) == 1) and
+	     (PORT_READ (in_GPR_WRITE_OOO_ENGINE_ID [i]) == _queue_head->_ooo_engine_id)
 	     )
 	  {
@@ -59,6 +59,6 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_SPR_WRITE_VAL           [i]) == 1) and
+	     (PORT_READ (in_SPR_WRITE_OOO_ENGINE_ID [i]) == _queue_head->_ooo_engine_id)
 	     )
 	  {
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 65)
+++ 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 66)
@@ -33,6 +33,8 @@
 //  PORT_WRITE (out_READ_QUEUE_OUT_VAL         , not_empty    );              // in genMealy_val
 
-    PORT_WRITE (out_READ_QUEUE_OUT_CONTEXT_ID  , _queue_head->_context_id  );
-    PORT_WRITE (out_READ_QUEUE_OUT_PACKET_ID   , _queue_head->_packet_id   );
+    PORT_WRITE (out_READ_QUEUE_OUT_CONTEXT_ID   , _queue_head->_context_id  );
+    PORT_WRITE (out_READ_QUEUE_OUT_FRONT_END_ID , _queue_head->_front_end_id);
+    PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id);
+    PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID      , _queue_head->_rob_id      );
     PORT_WRITE (out_READ_QUEUE_OUT_OPERATION   , _queue_head->_operation   );
     PORT_WRITE (out_READ_QUEUE_OUT_TYPE        , _queue_head->_type        );
@@ -57,15 +59,15 @@
 
     // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    PORT_WRITE (out_GPR_READ_VAL        [0], not_empty and _queue_head->_read_ra_val);
-    PORT_WRITE (out_GPR_READ_VAL        [1], not_empty and _queue_head->_read_rb_val);
-    PORT_WRITE (out_GPR_READ_CONTEXT_ID [0],               _queue_head->_context_id);
-    PORT_WRITE (out_GPR_READ_CONTEXT_ID [1],               _queue_head->_context_id);
-    PORT_WRITE (out_GPR_READ_NUM_REG    [0],               _queue_head->_num_reg_ra);
-    PORT_WRITE (out_GPR_READ_NUM_REG    [1],               _queue_head->_num_reg_rb);
+    PORT_WRITE (out_GPR_READ_VAL           [0], not_empty and _queue_head->_read_ra_val);
+    PORT_WRITE (out_GPR_READ_VAL           [1], not_empty and _queue_head->_read_rb_val);
+    PORT_WRITE (out_GPR_READ_OOO_ENGINE_ID [0],               _queue_head->_ooo_engine_id);
+    PORT_WRITE (out_GPR_READ_OOO_ENGINE_ID [1],               _queue_head->_ooo_engine_id);
+    PORT_WRITE (out_GPR_READ_NUM_REG       [0],               _queue_head->_num_reg_ra);
+    PORT_WRITE (out_GPR_READ_NUM_REG       [1],               _queue_head->_num_reg_rb);
 
     // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    PORT_WRITE (out_SPR_READ_VAL        [0], not_empty and _queue_head->_read_rc_val);
-    PORT_WRITE (out_SPR_READ_CONTEXT_ID [0],               _queue_head->_context_id);
-    PORT_WRITE (out_SPR_READ_NUM_REG    [0],               _queue_head->_num_reg_rc);
+    PORT_WRITE (out_SPR_READ_VAL           [0], not_empty and _queue_head->_read_rc_val);
+    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");
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 65)
+++ 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 66)
@@ -57,5 +57,7 @@
 
 	    entry->_context_id   = PORT_READ(in_READ_QUEUE_IN_CONTEXT_ID  );
-	    entry->_packet_id    = PORT_READ(in_READ_QUEUE_IN_PACKET_ID   );
+	    entry->_front_end_id = PORT_READ(in_READ_QUEUE_IN_FRONT_END_ID);
+	    entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID);
+	    entry->_rob_id       = PORT_READ(in_READ_QUEUE_IN_ROB_ID      );
 	    entry->_operation    = PORT_READ(in_READ_QUEUE_IN_OPERATION   );
 	    entry->_type         = PORT_READ(in_READ_QUEUE_IN_TYPE        );
@@ -73,5 +75,5 @@
 	    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->_packet_id);
+	    log_printf(TRACE,Read_queue,FUNCTION,"   * push (id : %d-%d)",entry->_context_id, entry->_rob_id);
 	    _queue->push(entry);
 
@@ -91,5 +93,5 @@
 	  {
 	    // Pop the entry
-	    log_printf(TRACE,Read_queue,FUNCTION,"   * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_packet_id);
+	    log_printf(TRACE,Read_queue,FUNCTION,"   * pop  (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);
 	    _queue->pop();
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 66)
@@ -52,9 +52,9 @@
 	SC_METHOD (transition);
 	dont_initialize ();
-	sensitive_pos << *(in_CLOCK);
+	sensitive << (*(in_CLOCK)).pos();
 	
 	SC_METHOD (genMealy_read);
 	dont_initialize ();
-	sensitive_neg << *(in_CLOCK);
+	sensitive << (*(in_CLOCK)).neg();
 	for (uint32_t i=0; i<_param->_nb_port_read; i++)
 	  {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter.cpp	(revision 66)
@@ -46,10 +46,10 @@
     SC_METHOD (transition);
     dont_initialize ();
-    sensitive_pos << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).pos();
 #endif
 
     SC_METHOD (genMealy_shift);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).neg();
     for (uint32_t i=0; i<param._nb_port; i++)
       {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU.cpp	(revision 66)
@@ -52,9 +52,9 @@
     SC_METHOD (transition);
     dont_initialize ();
-    sensitive_pos << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).pos();
 
     SC_METHOD (genMealy_access);
     dont_initialize ();
-    sensitive_neg << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).neg();
     for (uint32_t i=0; i<_param._nb_access; i++)
       {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 66)
@@ -6,5 +6,6 @@
 
 #-----[ Simulator ]----------------------------------------
-SIMULATOR			= systemcass_deps
+#SIMULATOR			= systemcass_deps
+SIMULATOR			= systemc
 
 # 3 simulators :
@@ -14,9 +15,11 @@
 
 #-----[ Flags ]--------------------------------------------
-MORPHEO_FLAGS			=	-DSYSTEMC		\
-					-DVHDL			\
-  					-DVHDL_TESTBENCH	\
-					-DVHDL_TESTBENCH_ASSERT	\
-					-DDEBUG=DEBUG_TRACE	
+#MORPHEO_FLAGS			=	-DSYSTEMC		\
+#					-DVHDL			\
+#  					-DVHDL_TESTBENCH	\
+#					-DVHDL_TESTBENCH_ASSERT	\
+#					-DDEBUG=DEBUG_ALL	
+
+MORPHEO_FLAGS			=	-DSYSTEMC		
 
 #
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 66)
@@ -3,5 +3,5 @@
 #
 
-all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest _Generic/Select/Select_Priority_Fixed/SelfTest _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
+all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest _Generic/Select/Select_Priority_Fixed/SelfTest _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest _Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
 
 _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
@@ -14,4 +14,7 @@
 	make all -C Generic/Select/Select_Priority_Fixed/SelfTest
 
+_Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest:
+	make all -C Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
+
 _Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest:
 	make all -C Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
@@ -21,4 +24,5 @@
 	make clean -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
 	make clean -C Generic/Select/Select_Priority_Fixed/SelfTest
+	make clean -C Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
 	make clean -C Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
 
@@ -29,4 +33,5 @@
 	make install -C Generic/RegisterFile/RegisterFile_Multi_Banked/SelfTest
 	make install -C Generic/Select/Select_Priority_Fixed/SelfTest
+	make install -C Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
 	make install -C Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/src/New_Component.cpp	(revision 66)
@@ -61,5 +61,5 @@
     SC_METHOD (transition);
     dont_initialize ();
-    sensitive_pos << *(in_CLOCK);
+    sensitive << (*(in_CLOCK)).pos();
 //#endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 66)
@@ -2,5 +2,5 @@
 #define DEBUG_COMPONENT_H
 
-#define DEBUG_Behavioural                                         false
+#define DEBUG_Behavioural                                         true
 #define   DEBUG_Generic                                           false
 #define     DEBUG_Counter                                         false 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 66)
@@ -14,31 +14,31 @@
   // ***** general
   typedef bool          Tcontrol_t;
-  typedef uint8_t       Toperation_t;
-//typedef uint8_t       Tdestination1_t;
-//typedef uint8_t       Tdestination2_t;
-//typedef uint8_t       Texec_flag_t;
+  typedef uint32_t      Toperation_t;
+//typedef uint32_t      Tdestination1_t;
+//typedef uint32_t      Tdestination2_t;
+//typedef uint32_t      Texec_flag_t;
 //typedef bool          Texec_excep_t;
-//typedef uint8_t       Tcondition_t;
-//typedef uint8_t       Tbranch_state_t;
+//typedef uint32_t      Tcondition_t;
+//typedef uint32_t      Tbranch_state_t;
 
-  typedef uint8_t       Texception_t;
-  typedef uint8_t       Tcontext_t;
-  typedef uint8_t       Tpacket_t;
-  typedef uint8_t       Ttype_t;
+  typedef uint32_t      Texception_t;
+  typedef uint32_t      Tcontext_t;
+  typedef uint32_t      Tpacket_t;
+  typedef uint32_t      Ttype_t;
 
   // ***** Register
-  typedef uint8_t       Tgeneral_address_t;
+  typedef uint32_t      Tgeneral_address_t;
   typedef uint32_t      Tgeneral_data_t;
-  typedef uint8_t       Tspecial_address_t;
+  typedef uint32_t      Tspecial_address_t;
   typedef uint32_t      Tspecial_data_t;
 
   // ***** component dependant
   // ~~~~~ load store queue
-  typedef uint8_t       Taccess_t;
-  typedef uint8_t       Tlsq_ptr_t;
+  typedef uint32_t      Taccess_t;
+  typedef uint32_t      Tlsq_ptr_t;
   typedef uint32_t      Tdcache_address_t;
   typedef uint32_t      Tdcache_data_t;
   typedef bool          Tdcache_error_t;
-  typedef uint8_t       Tdcache_type_t;
+  typedef uint32_t      Tdcache_type_t;
 
 }; // end namespace behavioural
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/mkf.info	(revision 66)
@@ -19,4 +19,5 @@
 target_dep		all		Generic/Select/Select_Priority_Fixed/SelfTest
 target_dep		all		Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
+target_dep		all		Core/Multi_Execute_loop/Execute_loop/Register_unit/SelfTest
 target_dep		all		Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/SelfTest
 # mkf include path
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces_testbench_generate_file.cpp	(revision 66)
@@ -42,5 +42,5 @@
     vhdl->set_body("instance_"+_name+" : "+_name);
     vhdl->set_body("port map (");
-    
+
     list<string>::iterator i   = list_signal->begin();
     if (i != list_signal->end())
@@ -101,5 +101,4 @@
     vhdl->set_body("end process;");
 
-
     vhdl->generate_file(false,true);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_connect.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_connect.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Signal_connect.cpp	(revision 66)
@@ -53,4 +53,5 @@
 	    }
 	else
+#ifdef SYSTEMCASS_SPECIFIC
 	  if ((_direction == OUT) and (signal_dest->_direction == IN ))
 	    switch (_type_info)
@@ -64,4 +65,5 @@
 	      }
 	  else
+#endif
 	    if ((_direction == OUT) and (signal_dest->_direction == OUT))
 	      switch (_type_info)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 65)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Vhdl_std_logic.cpp	(revision 66)
@@ -53,4 +53,5 @@
   {
     log_printf(FUNC,Behavioural,FUNCTION,"Begin");
+    cout << toString(value) << endl;
     string _return = std_logic_conv(size,toString(value));
     log_printf(FUNC,Behavioural,FUNCTION,"End");
