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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 55)
@@ -1,4 +1,4 @@
 Read_queue
-2	8	*2	# size_read_queue    
+2	8	*2	# size_queue    
 4	4	*2	# nb_context         
 32	32	*2	# nb_packet          
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 55)
@@ -1,4 +1,4 @@
 Read_queue
-4	4	*2	# size_read_queue    
+4	4	*2	# size_queue    
 4	4	*2	# nb_context         
 32	32	*2	# nb_packet          
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 55)
@@ -14,5 +14,5 @@
   cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
        << "list_params is :" << endl
-       << " - size_read_queue     (unsigned int)" << endl
+       << " - size_queue          (unsigned int)" << endl
        << " - nb_context          (unsigned int)" << endl
        << " - nb_packet           (unsigned int)" << endl
@@ -44,5 +44,5 @@
 
   const string   name                = argv[1];
-  const uint32_t size_read_queue     = atoi(argv[ 2]);
+  const uint32_t size_queue          = atoi(argv[ 2]);
   const uint32_t nb_context          = atoi(argv[ 3]);
   const uint32_t nb_packet           = atoi(argv[ 4]);
@@ -59,5 +59,5 @@
     {
       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters
-	( size_read_queue    
+	( size_queue    
 	 ,nb_context         
 	 ,nb_packet          
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp	(revision 55)
@@ -11,6 +11,6 @@
 #include "Common/include/Test.h"
 
-#define NB_ITERATION  512
-#define CYCLE_MAX     (128*NB_ITERATION)
+#define NB_ITERATION  64
+#define CYCLE_MAX     (1024*NB_ITERATION)
 
 #define LABEL(str)                                                                       \
@@ -71,5 +71,5 @@
   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<uint32_t           >         * READ_QUEUE_IN_OPERATION    = new sc_signal<uint32_t           >         ("READ_QUEUE_IN_OPERATION   ");
+  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        ");
   sc_signal<Tcontrol_t         >         * READ_QUEUE_IN_HAS_IMMEDIAT = new sc_signal<Tcontrol_t         >         ("READ_QUEUE_IN_HAS_IMMEDIAT");
@@ -92,5 +92,5 @@
   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<uint32_t           >         * READ_QUEUE_OUT_OPERATION   = new sc_signal<uint32_t           >         ("READ_QUEUE_OUT_OPERATION   ");
+  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        ");
   sc_signal<Tcontrol_t         >         * READ_QUEUE_OUT_HAS_IMMEDIAT= new sc_signal<Tcontrol_t         >         ("READ_QUEUE_OUT_HAS_IMMEDIAT");
@@ -163,40 +163,40 @@
     }
 
-    // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  sc_signal<Tcontrol_t         > ** BYPASS_GPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_gpr_write];
-  sc_signal<Tcontext_t         > ** BYPASS_GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_gpr_write];
-  sc_signal<Tgeneral_address_t > ** BYPASS_GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t > * [_param->_nb_gpr_write];
-  sc_signal<Tgeneral_data_t    > ** BYPASS_GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t    > * [_param->_nb_gpr_write];
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  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<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];
 
   for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
     {
-      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_VAL"       ;
-      BYPASS_GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_CONTEXT_ID";
-      BYPASS_GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
-      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_NUM_REG"   ;
-      BYPASS_GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
-      rename = "BYPASS_GPR_WRITE_"+toString(i)+"_DATA"      ;
-      BYPASS_GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
-    }
-
-    // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  sc_signal<Tcontrol_t         > ** BYPASS_SPR_WRITE_VAL        = new sc_signal<Tcontrol_t         > * [_param->_nb_spr_write];
-  sc_signal<Tcontext_t         > ** BYPASS_SPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t         > * [_param->_nb_spr_write];
-  sc_signal<Tspecial_address_t > ** BYPASS_SPR_WRITE_NUM_REG    = new sc_signal<Tspecial_address_t > * [_param->_nb_spr_write];
-  sc_signal<Tspecial_data_t    > ** BYPASS_SPR_WRITE_DATA       = new sc_signal<Tspecial_data_t    > * [_param->_nb_spr_write];
+      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)+"_NUM_REG"   ;
+      GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t > (rename.c_str());
+      rename = "GPR_WRITE_"+toString(i)+"_DATA"      ;
+      GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t    > (rename.c_str());
+    }
+
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  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<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];
 
   for (uint32_t i=0; i<_param->_nb_spr_write; i++)
     {
-      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_VAL"       ;
-      BYPASS_SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t         > (rename.c_str());
-      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_CONTEXT_ID";
-      BYPASS_SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t         > (rename.c_str());
-      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_NUM_REG"   ;
-      BYPASS_SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
-      rename = "BYPASS_SPR_WRITE_"+toString(i)+"_DATA"      ;
-      BYPASS_SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
+      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)+"_NUM_REG"   ;
+      SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t > (rename.c_str());
+      rename = "SPR_WRITE_"+toString(i)+"_DATA"      ;
+      SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t    > (rename.c_str());
     }
 
@@ -277,16 +277,16 @@
   for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
     {
-      (*(_Read_queue-> in_BYPASS_GPR_WRITE_VAL        [i])) (*(BYPASS_GPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_BYPASS_GPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-      (*(_Read_queue-> in_BYPASS_GPR_WRITE_NUM_REG    [i])) (*(BYPASS_GPR_WRITE_NUM_REG    [i]));
-      (*(_Read_queue-> in_BYPASS_GPR_WRITE_DATA       [i])) (*(BYPASS_GPR_WRITE_DATA       [i]));
+      (*(_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_NUM_REG    [i])) (*(GPR_WRITE_NUM_REG    [i]));
+      (*(_Read_queue-> in_GPR_WRITE_DATA       [i])) (*(GPR_WRITE_DATA       [i]));
     }
   
   for (uint32_t i=0; i<_param->_nb_spr_write; i++)
     {
-      (*(_Read_queue-> in_BYPASS_SPR_WRITE_VAL        [i])) (*(BYPASS_SPR_WRITE_VAL        [i]));
-      (*(_Read_queue-> in_BYPASS_SPR_WRITE_CONTEXT_ID [i])) (*(BYPASS_SPR_WRITE_CONTEXT_ID [i]));
-      (*(_Read_queue-> in_BYPASS_SPR_WRITE_NUM_REG    [i])) (*(BYPASS_SPR_WRITE_NUM_REG    [i]));
-      (*(_Read_queue-> in_BYPASS_SPR_WRITE_DATA       [i])) (*(BYPASS_SPR_WRITE_DATA       [i]));
+      (*(_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_NUM_REG    [i])) (*(SPR_WRITE_NUM_REG    [i]));
+      (*(_Read_queue-> in_SPR_WRITE_DATA       [i])) (*(SPR_WRITE_DATA       [i]));
     }
 
@@ -321,7 +321,7 @@
 
 //   for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
-//     BYPASS_GPR_WRITE_VAL    [i]->write (0);
+//     GPR_WRITE_VAL    [i]->write (0);
 //   for (uint32_t i=0; i<_param->_nb_spr_write; i++)
-//     BYPASS_SPR_WRITE_VAL    [i]->write (0);
+//     SPR_WRITE_VAL    [i]->write (0);
 
   NRESET->write(0);
@@ -337,5 +337,5 @@
       int32_t percent_transaction_queue_out    = (rand()%50)+25;
       int32_t percent_registerfile_valid       = (rand()%50)+25;
-      int32_t percent_transaction_registerfile = (rand()%50)+25;
+      int32_t percent_transaction_registerfile = (rand()%74)+25;
       int32_t percent_transaction_bypass       = (rand()%50)+25;
       
@@ -368,5 +368,5 @@
 	}
       // End initialisation .......
-
+      
       uint32_t request_in  = 0;
       uint32_t request_out = 0;
@@ -437,8 +437,8 @@
 	      Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
 	      
-	      BYPASS_GPR_WRITE_VAL        [i]->write(val);	      
-	      BYPASS_GPR_WRITE_CONTEXT_ID [i]->write(context);
-	      BYPASS_GPR_WRITE_NUM_REG    [i]->write(num_reg);
-	      BYPASS_GPR_WRITE_DATA       [i]->write(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);
 
 	      if (val)
@@ -455,8 +455,8 @@
 	      Tspecial_data_t    data    = rand()%(1<<_param->_size_special_data);
 	      
-	      BYPASS_SPR_WRITE_VAL        [i]->write(val);	      
-	      BYPASS_SPR_WRITE_CONTEXT_ID [i]->write(context);
-	      BYPASS_SPR_WRITE_NUM_REG    [i]->write(num_reg);
-	      BYPASS_SPR_WRITE_DATA       [i]->write(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);
 
 	      if (val)
@@ -483,5 +483,5 @@
 
 	      LABEL("Accepted READ_QUEUE_OUT ["+toString(packet_id)+"]");
-
+	      
 	      TEST(uint32_t          , packet_id ,request_out);
 	      
@@ -579,13 +579,13 @@
   delete [] SPR_READ_DATA_VAL;
 
-  delete [] BYPASS_GPR_WRITE_VAL        ;
-  delete [] BYPASS_GPR_WRITE_CONTEXT_ID ;
-  delete [] BYPASS_GPR_WRITE_NUM_REG    ;
-  delete [] BYPASS_GPR_WRITE_DATA       ;
-
-  delete [] BYPASS_SPR_WRITE_VAL        ;
-  delete [] BYPASS_SPR_WRITE_CONTEXT_ID ;
-  delete [] BYPASS_SPR_WRITE_NUM_REG    ;
-  delete [] BYPASS_SPR_WRITE_DATA       ;
+  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       ;
 #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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 55)
@@ -26,5 +26,5 @@
   {
     //-----[ fields ]------------------------------------------------------------
-  public : const uint32_t    _size_read_queue      ;
+  public : const uint32_t    _size_queue           ;
   public : const uint32_t    _nb_context           ;
   public : const uint32_t    _nb_packet            ;
@@ -48,15 +48,15 @@
 
     //-----[ methods ]-----------------------------------------------------------
-  public : Parameters  (  uint32_t size_read_queue    ,
-			  uint32_t nb_context         ,
-			  uint32_t nb_packet          ,
-			  uint32_t size_general_data  ,
-			  uint32_t size_special_data  ,
-			  uint32_t nb_general_register,
-			  uint32_t nb_special_register,
-			  uint32_t nb_operation       ,
-			  uint32_t nb_type            ,
-			  uint32_t nb_gpr_write       ,
-			  uint32_t nb_spr_write       );
+  public : Parameters  (uint32_t size_queue         ,
+			uint32_t nb_context         ,
+			uint32_t nb_packet          ,
+			uint32_t size_general_data  ,
+			uint32_t size_special_data  ,
+			uint32_t nb_general_register,
+			uint32_t nb_special_register,
+			uint32_t nb_operation       ,
+			uint32_t nb_type            ,
+			uint32_t nb_gpr_write       ,
+			uint32_t nb_spr_write       );
   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h	(revision 55)
@@ -270,17 +270,17 @@
   public    : SC_IN (Tcontrol_t        )   **  in_SPR_READ_DATA_VAL  ;
 
-    // ~~~~~[ Interface "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_GPR_WRITE_VAL       ;
-  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_GPR_WRITE_CONTEXT_ID;
-  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_GPR_WRITE_NUM_REG   ;
-  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_GPR_WRITE_DATA      ;
-
-    // ~~~~~[ Interface "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_SPR_WRITE_VAL       ;
-  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_SPR_WRITE_CONTEXT_ID;
-  public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_SPR_WRITE_NUM_REG   ;
-  public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_SPR_WRITE_DATA      ;
+    // ~~~~~[ 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      ;
+
+    // ~~~~~[ 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      ;
 
     // ~~~~~[ 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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h	(revision 55)
@@ -26,5 +26,5 @@
   typedef uint32_t Tcontext_t        ;
   typedef uint32_t Tpacket_t         ;
-  typedef uint32_t Toperation_t      ;
+//typedef uint32_t Toperation_t      ; // cf Constant_OpenRISC.h
   typedef uint32_t Ttype_t           ;
 
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 55)
@@ -18,5 +18,5 @@
 
 
-  Parameters::Parameters (uint32_t size_read_queue    ,
+  Parameters::Parameters (uint32_t size_queue         ,
 			  uint32_t nb_context         ,
 			  uint32_t nb_packet          ,
@@ -29,5 +29,5 @@
 			  uint32_t nb_gpr_write       ,
 			  uint32_t nb_spr_write       ):
-    _size_read_queue       (size_read_queue      ),
+    _size_queue            (size_queue           ),
     _nb_context            (nb_context           ),
     _nb_packet             (nb_packet            ),
@@ -56,5 +56,5 @@
   
   Parameters::Parameters (Parameters & param):
-    _size_read_queue       (param._size_read_queue       ),
+    _size_queue            (param._size_queue            ),
     _nb_context            (param._nb_context            ),
     _nb_packet             (param._nb_packet             ),
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 54)
+++ 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 55)
@@ -27,8 +27,8 @@
     string msg = "";
 
-    if (_size_read_queue < 2)
+    if (_size_queue < 2)
       {
         msg += "  - The read_queue must be have less a depth of 2";
-        msg += "    * size_read_queue                 : " + toString(_size_read_queue)    + "\n";
+        msg += "    * size_queue                      : " + toString(_size_queue)    + "\n";
       }
     
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 55)
@@ -27,5 +27,5 @@
 
     xml.balise_open("read_queue");
-    xml.singleton_begin("size_read_queue    "); xml.attribut("value",toString(_size_read_queue    )); xml.singleton_end();
+    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_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
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 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp	(revision 55)
@@ -77,11 +77,11 @@
       sensitive << *(in_SPR_READ_ACK      [i]);
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
-      sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
-		<< *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
-		<< *(in_BYPASS_GPR_WRITE_NUM_REG    [i]);
+      sensitive << *(in_GPR_WRITE_VAL        [i])
+		<< *(in_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_GPR_WRITE_NUM_REG    [i]);
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
-      sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
-		<< *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
-		<< *(in_BYPASS_SPR_WRITE_NUM_REG    [i]);
+      sensitive << *(in_SPR_WRITE_VAL        [i])
+		<< *(in_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_SPR_WRITE_NUM_REG    [i]);
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -93,13 +93,13 @@
     for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
       {
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
+	(*(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_NUM_REG    [i]));
       }
     for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
       {
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
+	(*(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_NUM_REG    [i]));
       }
 #endif    
@@ -115,8 +115,8 @@
 		<< *(in_GPR_READ_DATA_VAL [i]);
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
-      sensitive << *(in_BYPASS_GPR_WRITE_VAL        [i])
-		<< *(in_BYPASS_GPR_WRITE_CONTEXT_ID [i])
-		<< *(in_BYPASS_GPR_WRITE_NUM_REG    [i])
-		<< *(in_BYPASS_GPR_WRITE_DATA       [i]);
+      sensitive << *(in_GPR_WRITE_VAL        [i])
+		<< *(in_GPR_WRITE_CONTEXT_ID [i])
+		<< *(in_GPR_WRITE_NUM_REG    [i])
+		<< *(in_GPR_WRITE_DATA       [i]);
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -133,19 +133,19 @@
     for (uint32_t i=0; i<_param->_nb_gpr_write ; i++)
       {
-	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB_VAL)) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
-
-	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RA    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_NUM_REG    [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_BYPASS_GPR_WRITE_DATA       [i]));
+	(*(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_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_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_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_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RB    )) (*(in_GPR_WRITE_DATA       [i]));
       }
 #endif    
@@ -161,8 +161,8 @@
 		<< *(in_SPR_READ_DATA_VAL [i]);
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
-      sensitive << *(in_BYPASS_SPR_WRITE_VAL        [i])
-		<< *(in_BYPASS_SPR_WRITE_CONTEXT_ID [i])
-		<< *(in_BYPASS_SPR_WRITE_NUM_REG    [i])
-		<< *(in_BYPASS_SPR_WRITE_DATA       [i]);
+      sensitive << *(in_SPR_WRITE_VAL        [i])
+		<< *(in_SPR_WRITE_CONTEXT_ID [i])
+		<< *(in_SPR_WRITE_NUM_REG    [i])
+		<< *(in_SPR_WRITE_DATA       [i]);
 
 #ifdef SYSTEMCASS_SPECIFIC
@@ -176,12 +176,12 @@
     for (uint32_t i=0; i<_param->_nb_spr_write ; i++)
       {
-	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC_VAL)) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
-
-	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_VAL        [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_CONTEXT_ID [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_NUM_REG    [i]));
-	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_BYPASS_SPR_WRITE_DATA       [i]));
+	(*(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_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_NUM_REG    [i]));
+	(*(out_READ_QUEUE_OUT_DATA_RC    )) (*(in_SPR_WRITE_DATA       [i]));
       }
 #endif    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp	(revision 54)
+++ 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 55)
@@ -170,14 +170,14 @@
       }
 
-    // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-     in_BYPASS_GPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_gpr_write];
-     in_BYPASS_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_gpr_write];
-     in_BYPASS_GPR_WRITE_NUM_REG   = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write];
-     in_BYPASS_GPR_WRITE_DATA      = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_gpr_write];
+    // ~~~~~[ 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];
 
     for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
       {
-        Interface_fifo * interface = _interfaces->set_interface("bypass_gpr_write_"+toString(i)
+        Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
 #ifdef POSITION
                                                                 , IN  
@@ -187,20 +187,20 @@
                                                                 );
 
-	 in_BYPASS_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	 in_BYPASS_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
-	 in_BYPASS_GPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"   ,_param->_size_general_register);
-	 in_BYPASS_GPR_WRITE_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"      ,_param->_size_general_data);
-      }
-
-    // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    
-     in_BYPASS_SPR_WRITE_VAL       = new SC_IN (Tcontrol_t        ) * [_param->_nb_spr_write];
-     in_BYPASS_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t        ) * [_param->_nb_spr_write];
-     in_BYPASS_SPR_WRITE_NUM_REG   = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write];
-     in_BYPASS_SPR_WRITE_DATA      = new SC_IN (Tspecial_data_t   ) * [_param->_nb_spr_write];
+	 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);
+      }
+
+    // ~~~~~[ 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];
 
     for (uint32_t i=0; i<_param->_nb_spr_write; i++)
       {
-        Interface_fifo * interface = _interfaces->set_interface("bypass_spr_write_"+toString(i)
+        Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
 #ifdef POSITION
                                                                 , IN  
@@ -210,8 +210,8 @@
                                                                 );
 
-	 in_BYPASS_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in        ("val"    , VAL);
-	 in_BYPASS_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id",_param->_size_context_id);
-	 in_BYPASS_SPR_WRITE_NUM_REG    [i] = interface->set_signal_in  <Tspecial_address_t> ("num_reg"   ,_param->_size_special_register);
-	 in_BYPASS_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_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);
       }
 
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 54)
+++ 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 55)
@@ -91,17 +91,17 @@
     delete []  in_SPR_READ_DATA_VAL  ;
 
-    // ~~~~~[ Interface : "bypass_gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-    delete []  in_BYPASS_GPR_WRITE_VAL       ;
-    delete []  in_BYPASS_GPR_WRITE_CONTEXT_ID;
-    delete []  in_BYPASS_GPR_WRITE_NUM_REG   ;
-    delete []  in_BYPASS_GPR_WRITE_DATA      ;
+    delete []  in_GPR_WRITE_VAL       ;
+    delete []  in_GPR_WRITE_CONTEXT_ID;
+    delete []  in_GPR_WRITE_NUM_REG   ;
+    delete []  in_GPR_WRITE_DATA      ;
 
-    // ~~~~~[ Interface : "bypass_spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     
-    delete []  in_BYPASS_SPR_WRITE_VAL       ;
-    delete []  in_BYPASS_SPR_WRITE_CONTEXT_ID;
-    delete []  in_BYPASS_SPR_WRITE_NUM_REG   ;
-    delete []  in_BYPASS_SPR_WRITE_DATA      ;
+    delete []  in_SPR_WRITE_VAL       ;
+    delete []  in_SPR_WRITE_CONTEXT_ID;
+    delete []  in_SPR_WRITE_NUM_REG   ;
+    delete []  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/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 54)
+++ 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 55)
@@ -66,23 +66,23 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
 	     )
 	  {
-	    Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
-	    Tgeneral_data_t    bypass_gpr_write_data    = PORT_READ(in_BYPASS_GPR_WRITE_DATA    [i]);
+	    Tgeneral_address_t gpr_write_num_reg = PORT_READ(in_GPR_WRITE_NUM_REG [i]);
+	    Tgeneral_data_t    gpr_write_data    = PORT_READ(in_GPR_WRITE_DATA    [i]);
 	    
-	    if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
+	    if (_queue_head->_num_reg_ra == gpr_write_num_reg)
 	      {
 		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL   - bypass hit (%d)",i);
 
 		internal_READ_QUEUE_OUT_DATA_RA_VAL = 1;
-		internal_READ_QUEUE_OUT_DATA_RA     = bypass_gpr_write_data;
+		internal_READ_QUEUE_OUT_DATA_RA     = gpr_write_data;
 	      }
-	    if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
+	    if (_queue_head->_num_reg_rb == gpr_write_num_reg)
 	      {
 		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL   - bypass hit (%d)",i);
 		internal_READ_QUEUE_OUT_DATA_RB_VAL = 1;
-		internal_READ_QUEUE_OUT_DATA_RB     = bypass_gpr_write_data;
+		internal_READ_QUEUE_OUT_DATA_RB     = gpr_write_data;
 	      }
 	  }
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 54)
+++ 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 55)
@@ -51,13 +51,13 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
 	     )
 	  {
-	    if (_queue_head->_num_reg_rc == PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]))
+	    if (_queue_head->_num_reg_rc == PORT_READ(in_SPR_WRITE_NUM_REG [i]))
 	      {
 		log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL   - bypass hit (%d)",i);
 		internal_READ_QUEUE_OUT_DATA_RC_VAL = 1;
-		internal_READ_QUEUE_OUT_DATA_RC     = PORT_READ(in_BYPASS_SPR_WRITE_DATA [i]);
+		internal_READ_QUEUE_OUT_DATA_RC     = PORT_READ(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_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 54)
+++ 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 55)
@@ -42,14 +42,14 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_BYPASS_GPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_BYPASS_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_GPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_GPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
 	     )
 	  {
-	    Tgeneral_address_t bypass_gpr_write_num_reg = PORT_READ(in_BYPASS_GPR_WRITE_NUM_REG [i]);
+	    Tgeneral_address_t gpr_write_num_reg = PORT_READ(in_GPR_WRITE_NUM_REG [i]);
 	    
-	    if (_queue_head->_num_reg_ra == bypass_gpr_write_num_reg)
+	    if (_queue_head->_num_reg_ra == gpr_write_num_reg)
 	      internal_READ_QUEUE_OUT_READ_RA_VAL = 0;
 
-	    if (_queue_head->_num_reg_rb == bypass_gpr_write_num_reg)
+	    if (_queue_head->_num_reg_rb == gpr_write_num_reg)
 	      internal_READ_QUEUE_OUT_READ_RB_VAL = 0;
 	  }
@@ -59,11 +59,11 @@
       {
 	// Test if this bypass is valid
-	if ( (PORT_READ (in_BYPASS_SPR_WRITE_VAL        [i]) == 1) and
-	     (PORT_READ (in_BYPASS_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
+	if ( (PORT_READ (in_SPR_WRITE_VAL        [i]) == 1) and
+	     (PORT_READ (in_SPR_WRITE_CONTEXT_ID [i]) == _queue_head->_context_id)
 	     )
 	  {
-	    Tspecial_address_t bypass_spr_write_num_reg = PORT_READ(in_BYPASS_SPR_WRITE_NUM_REG [i]);
+	    Tspecial_address_t spr_write_num_reg = PORT_READ(in_SPR_WRITE_NUM_REG [i]);
 	    
-	    if (_queue_head->_num_reg_rc == bypass_spr_write_num_reg)
+	    if (_queue_head->_num_reg_rc == spr_write_num_reg)
 	      internal_READ_QUEUE_OUT_READ_RC_VAL = 0;
 	  }
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 54)
+++ 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 55)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Read_queue,FUNCTION,"Begin");
 
-    bool not_full  = not (_queue->size() == _param->_size_read_queue);
+    bool not_full  = not (_queue->size() == _param->_size_queue);
     bool not_empty = not _queue->empty();
 
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 54)
+++ 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 55)
@@ -47,5 +47,5 @@
 	// Write to read_queue
 
-	bool not_full      = not (_queue->size() == _param->_size_read_queue);
+	bool not_full      = not (_queue->size() == _param->_size_queue);
 	bool     empty     =     _queue->empty();
 	bool nead_new_head = false;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile	(revision 55)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libReservation_station.a
+
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_component
+
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Component
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.defs
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.defs	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.defs	(revision 55)
@@ -0,0 +1,11 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT_MORPHEO		= ../../../../../../..
+DIR_MORPHEO			= $(DIR_COMPONENT)/$(DIR_COMPONENT_MORPHEO)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.deps
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.deps	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/Makefile.deps	(revision 55)
@@ -0,0 +1,33 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Reservation_station			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Library ]------------------------------------------
+Reservation_station_LIBRARY		= 	-lReservation_station	\
+					$(Behavioural_LIBRARY)	
+
+Reservation_station_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Reservation_station_library		: 
+				@\
+				$(MAKE) Behavioural_library; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station --makefile=Makefile;
+	
+Reservation_station_library_clean	: 
+				@\
+				$(MAKE) Behavioural_library_clean; \
+				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station --makefile=Makefile clean;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/Makefile	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/Makefile	(revision 55)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Reservation_station_LIBRARY)
+
+DIR_LIBRARY			= $(Reservation_station_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Reservation_station_library
+
+library_clean			: Reservation_station_library_clean
+
+include                         ../Makefile.deps
+include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Selftest
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.Synthesis
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration.cfg	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration.cfg	(revision 55)
@@ -0,0 +1,14 @@
+Reservation_station
+8	8	*2	# size_queue    
+4	4	*2	# nb_context         
+32	32	*2	# nb_packet          
+16	16	+1	# size_general_data  
+8	8	+1	# size_special_data  
+16	16	*2	# nb_general_register
+16	16	+1	# nb_special_register
+40	40	+1	# nb_operation       
+6	6	+1	# nb_type            
+4	4	*2	# nb_gpr_write
+2	2	*2	# nb_spr_write
+4	4	*2	# nb_bypass_write 
+2	2	*2	# nb_bypass_memory
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h	(revision 55)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+using namespace std;
+using namespace morpheo;
+using namespace morpheo::behavioural;
+using namespace morpheo::behavioural::core;
+using namespace morpheo::behavioural::core::multi_execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit;
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit;
+
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * param);
+
+class Time 
+{
+private : timeval time_begin;
+// private : timeval time_end;
+  
+public  : Time ()
+  {
+    gettimeofday(&time_begin     ,NULL);
+  };
+
+public  : ~Time ()
+  {
+    cout << *this;
+  };
+
+public  : friend ostream& operator<< (ostream& output_stream,
+				      const Time & x)
+  {
+    timeval time_end;
+    
+    gettimeofday(&time_end       ,NULL);
+    
+    uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());
+
+    double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);
+    
+    output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;
+
+    return output_stream;
+  }
+};
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp	(revision 55)
@@ -0,0 +1,97 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h"
+
+#define NB_PARAMS 0
+
+void usage (int argc, char * argv[])
+{
+  cerr << "<Usage> " << argv[0] << " name_instance list_params" << endl
+       << "list_params is :" << endl
+       << " - size_queue          (unsigned int)" << endl
+       << " - nb_context          (unsigned int)" << endl
+       << " - nb_packet           (unsigned int)" << endl
+       << " - size_general_data   (unsigned int)" << endl
+       << " - size_special_data   (unsigned int)" << endl
+       << " - nb_general_register (unsigned int)" << endl
+       << " - nb_special_register (unsigned int)" << endl
+       << " - nb_operation        (unsigned int)" << endl
+       << " - nb_type             (unsigned int)" << endl
+       << " - nb_gpr_write        (unsigned int)" << endl
+       << " - nb_spr_write        (unsigned int)" << endl
+       << " - nb_bypass_write     (unsigned int)" << endl
+       << " - nb_bypass_memory    (unsigned int)" << endl
+       << "" << endl;
+
+  for (int i=0; i<argc; i++)
+    cerr << argv[i] << " ";
+  cerr << endl;
+
+  exit (1);
+}
+
+#ifndef SYSTEMC
+int main    (int argc, char * argv[])
+#else
+int sc_main (int argc, char * argv[])
+#endif
+{
+  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]);
+  const uint32_t nb_bypass_write     = atoi(argv[13]);
+  const uint32_t nb_bypass_memory    = atoi(argv[14]);
+  
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters
+	(size_queue    
+	 ,nb_context         
+	 ,nb_packet          
+	 ,size_general_data  
+	 ,size_special_data  
+	 ,nb_general_register
+	 ,nb_special_register
+	 ,nb_operation       
+	 ,nb_type            
+	 ,nb_gpr_write
+	 ,nb_spr_write
+	 ,nb_bypass_write 
+	 ,nb_bypass_memory
+	 );
+      
+      cout << param->print(1);
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      cout << "<" << name << "> : " <<  error.what ();
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      cerr << "<" << name << "> : This test must generate a error" << endl;
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp	(revision 55)
@@ -0,0 +1,632 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+
+#define NB_ITERATION  16
+#define CYCLE_MAX     (512*NB_ITERATION)
+
+#define LABEL(str)                                                                       \
+{                                                                                        \
+  cout << "{"+toString(static_cast<uint32_t>(sc_simulation_time()))+"} " << str << endl; \
+} while(0)
+
+static uint32_t cycle = 0;
+
+#define SC_START(cycle_offset)                                          \
+do                                                                      \
+{                                                                       \
+/*cout << "SC_START (begin)" << endl;*/                                 \
+                                                                        \
+  uint32_t cycle_current = static_cast<uint32_t>(sc_simulation_time()); \
+  sc_start(cycle_offset);                                               \
+  if (cycle_current != cycle)                                           \
+    {                                                                   \
+      cycle = cycle_current;                                            \
+      cout << "##########[ cycle "<< cycle << " ]" << endl;             \
+    }                                                                   \
+                                                                        \
+  if (cycle_current > CYCLE_MAX)                                        \
+    {                                                                   \
+      TEST_KO("Maximal cycles Reached");                                \
+    }                                                                   \
+/*cout << "SC_START (end  )" << endl;*/                                 \
+} while(0)
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * _param)
+{
+  cout << "<" << name << "> : Simulation SystemC" << endl;
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Reservation_station * _Reservation_station = new Reservation_station (name.c_str(),
+#ifdef STATISTICS
+					     _parameters_statistics,
+#endif
+					     _param);
+  
+#ifdef SYSTEMC
+  /*********************************************************************
+   * Déclarations des signaux
+   *********************************************************************/
+  string rename = "";
+
+  sc_clock              * in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);
+  sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
+
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_VAL            = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tcontrol_t        > * out_RESERVATION_STATION_IN_ACK            = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tcontext_t        > *  in_RESERVATION_STATION_IN_CONTEXT_ID     = new sc_signal<Tcontext_t        >;
+  sc_signal<Tpacket_t         > *  in_RESERVATION_STATION_IN_PACKET_ID      = new sc_signal<Tpacket_t         >;
+  sc_signal<Toperation_t      > *  in_RESERVATION_STATION_IN_OPERATION      = new sc_signal<Toperation_t      >;
+  sc_signal<Ttype_t           > *  in_RESERVATION_STATION_IN_TYPE           = new sc_signal<Ttype_t           >;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_HAS_IMMEDIAT   = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_data_t   > *  in_RESERVATION_STATION_IN_IMMEDIAT       = new sc_signal<Tgeneral_data_t   >;
+//sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_READ_RA        = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_address_t> *  in_RESERVATION_STATION_IN_NUM_REG_RA     = new sc_signal<Tgeneral_address_t>;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_DATA_RA_VAL    = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_data_t   > *  in_RESERVATION_STATION_IN_DATA_RA        = new sc_signal<Tgeneral_data_t   >;
+//sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_READ_RB        = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_address_t> *  in_RESERVATION_STATION_IN_NUM_REG_RB     = new sc_signal<Tgeneral_address_t>;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_DATA_RB_VAL    = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_data_t   > *  in_RESERVATION_STATION_IN_DATA_RB        = new sc_signal<Tgeneral_data_t   >;
+//sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_READ_RC        = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tspecial_address_t> *  in_RESERVATION_STATION_IN_NUM_REG_RC     = new sc_signal<Tspecial_address_t>;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_DATA_RC_VAL    = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tspecial_data_t   > *  in_RESERVATION_STATION_IN_DATA_RC        = new sc_signal<Tspecial_data_t   >;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_WRITE_RD       = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tgeneral_address_t> *  in_RESERVATION_STATION_IN_NUM_REG_RD     = new sc_signal<Tgeneral_address_t>;
+  sc_signal<Tcontrol_t        > *  in_RESERVATION_STATION_IN_WRITE_RE       = new sc_signal<Tcontrol_t        >;
+  sc_signal<Tspecial_address_t> *  in_RESERVATION_STATION_IN_NUM_REG_RE     = new sc_signal<Tspecial_address_t>;
+
+  sc_signal<Tcontrol_t        > ** out_RESERVATION_STATION_OUT_VAL         = new sc_signal<Tcontrol_t        > * [_param->_size_queue];
+  sc_signal<Tcontrol_t        > **  in_RESERVATION_STATION_OUT_ACK         = new sc_signal<Tcontrol_t        > * [_param->_size_queue];
+  sc_signal<Tcontext_t        > ** out_RESERVATION_STATION_OUT_CONTEXT_ID  = new sc_signal<Tcontext_t        > * [_param->_size_queue];
+  sc_signal<Tpacket_t         > ** out_RESERVATION_STATION_OUT_PACKET_ID   = new sc_signal<Tpacket_t         > * [_param->_size_queue];
+  sc_signal<Toperation_t      > ** out_RESERVATION_STATION_OUT_OPERATION   = new sc_signal<Toperation_t      > * [_param->_size_queue];
+  sc_signal<Ttype_t           > ** out_RESERVATION_STATION_OUT_TYPE        = new sc_signal<Ttype_t           > * [_param->_size_queue];
+  sc_signal<Tcontrol_t        > ** out_RESERVATION_STATION_OUT_HAS_IMMEDIAT= new sc_signal<Tcontrol_t        > * [_param->_size_queue];
+  sc_signal<Tgeneral_data_t   > ** out_RESERVATION_STATION_OUT_IMMEDIAT    = new sc_signal<Tgeneral_data_t   > * [_param->_size_queue];
+  sc_signal<Tgeneral_data_t   > ** out_RESERVATION_STATION_OUT_DATA_RA     = new sc_signal<Tgeneral_data_t   > * [_param->_size_queue];
+  sc_signal<Tgeneral_data_t   > ** out_RESERVATION_STATION_OUT_DATA_RB     = new sc_signal<Tgeneral_data_t   > * [_param->_size_queue];
+  sc_signal<Tspecial_data_t   > ** out_RESERVATION_STATION_OUT_DATA_RC     = new sc_signal<Tspecial_data_t   > * [_param->_size_queue];
+  sc_signal<Tcontrol_t        > ** out_RESERVATION_STATION_OUT_WRITE_RD    = new sc_signal<Tcontrol_t        > * [_param->_size_queue];
+  sc_signal<Tgeneral_address_t> ** out_RESERVATION_STATION_OUT_NUM_REG_RD  = new sc_signal<Tgeneral_address_t> * [_param->_size_queue];
+  sc_signal<Tcontrol_t        > ** out_RESERVATION_STATION_OUT_WRITE_RE    = new sc_signal<Tcontrol_t        > * [_param->_size_queue];
+  sc_signal<Tspecial_address_t> ** out_RESERVATION_STATION_OUT_NUM_REG_RE  = new sc_signal<Tspecial_address_t> * [_param->_size_queue];
+    
+  for (uint32_t i=0; i<_param->_size_queue; i++)
+    {
+      out_RESERVATION_STATION_OUT_VAL          [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+       in_RESERVATION_STATION_OUT_ACK          [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      out_RESERVATION_STATION_OUT_CONTEXT_ID   [i] = new sc_signal<Tcontext_t        > (rename.c_str());
+      out_RESERVATION_STATION_OUT_PACKET_ID    [i] = new sc_signal<Tpacket_t         > (rename.c_str());
+      out_RESERVATION_STATION_OUT_OPERATION    [i] = new sc_signal<Toperation_t      > (rename.c_str());
+      out_RESERVATION_STATION_OUT_TYPE         [i] = new sc_signal<Ttype_t           > (rename.c_str());
+      out_RESERVATION_STATION_OUT_HAS_IMMEDIAT [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      out_RESERVATION_STATION_OUT_IMMEDIAT     [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+      out_RESERVATION_STATION_OUT_DATA_RA      [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+      out_RESERVATION_STATION_OUT_DATA_RB      [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+      out_RESERVATION_STATION_OUT_DATA_RC      [i] = new sc_signal<Tspecial_data_t   > (rename.c_str());
+      out_RESERVATION_STATION_OUT_WRITE_RD     [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      out_RESERVATION_STATION_OUT_NUM_REG_RD   [i] = new sc_signal<Tgeneral_address_t> (rename.c_str());
+      out_RESERVATION_STATION_OUT_WRITE_RE     [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      out_RESERVATION_STATION_OUT_NUM_REG_RE   [i] = new sc_signal<Tspecial_address_t> (rename.c_str());
+    }
+
+  sc_signal<Tcontrol_t        > ** in_GPR_WRITE_VAL        = new sc_signal<Tcontrol_t        > * [_param->_nb_gpr_write];
+  sc_signal<Tcontext_t        > ** in_GPR_WRITE_CONTEXT_ID = new sc_signal<Tcontext_t        > * [_param->_nb_gpr_write];
+  sc_signal<Tgeneral_address_t> ** in_GPR_WRITE_NUM_REG    = new sc_signal<Tgeneral_address_t> * [_param->_nb_gpr_write];
+  sc_signal<Tgeneral_data_t   > ** in_GPR_WRITE_DATA       = new sc_signal<Tgeneral_data_t   > * [_param->_nb_gpr_write];
+   
+  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+    {
+      in_GPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      in_GPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t        > (rename.c_str());
+      in_GPR_WRITE_NUM_REG    [i] = new sc_signal<Tgeneral_address_t> (rename.c_str());
+      in_GPR_WRITE_DATA       [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+    }
+  
+  sc_signal<Tcontrol_t        > ** in_SPR_WRITE_VAL       = new sc_signal<Tcontrol_t        > * [_param->_nb_spr_write];
+  sc_signal<Tcontext_t        > ** in_SPR_WRITE_CONTEXT_ID= new sc_signal<Tcontext_t        > * [_param->_nb_spr_write];
+  sc_signal<Tspecial_address_t> ** in_SPR_WRITE_NUM_REG   = new sc_signal<Tspecial_address_t> * [_param->_nb_spr_write];
+  sc_signal<Tspecial_data_t   > ** in_SPR_WRITE_DATA      = new sc_signal<Tspecial_data_t   > * [_param->_nb_spr_write];
+   
+  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+    {
+      in_SPR_WRITE_VAL        [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      in_SPR_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t        > (rename.c_str());
+      in_SPR_WRITE_NUM_REG    [i] = new sc_signal<Tspecial_address_t> (rename.c_str());
+      in_SPR_WRITE_DATA       [i] = new sc_signal<Tspecial_data_t   > (rename.c_str());
+    }
+
+  sc_signal<Tcontext_t        > ** in_BYPASS_WRITE_CONTEXT_ID  = new sc_signal<Tcontext_t        > * [_param->_nb_bypass_write];
+  sc_signal<Tcontrol_t        > ** in_BYPASS_WRITE_GPR_VAL     = new sc_signal<Tcontrol_t        > * [_param->_nb_bypass_write];
+  sc_signal<Tgeneral_address_t> ** in_BYPASS_WRITE_GPR_NUM_REG = new sc_signal<Tgeneral_address_t> * [_param->_nb_bypass_write];
+  sc_signal<Tgeneral_data_t   > ** in_BYPASS_WRITE_GPR_DATA    = new sc_signal<Tgeneral_data_t   > * [_param->_nb_bypass_write];
+  sc_signal<Tcontrol_t        > ** in_BYPASS_WRITE_SPR_VAL     = new sc_signal<Tcontrol_t        > * [_param->_nb_bypass_write];
+  sc_signal<Tspecial_address_t> ** in_BYPASS_WRITE_SPR_NUM_REG = new sc_signal<Tspecial_address_t> * [_param->_nb_bypass_write];
+  sc_signal<Tspecial_data_t   > ** in_BYPASS_WRITE_SPR_DATA    = new sc_signal<Tspecial_data_t   > * [_param->_nb_bypass_write];
+
+  for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
+    {
+      in_BYPASS_WRITE_CONTEXT_ID [i] = new sc_signal<Tcontext_t        > (rename.c_str());
+      in_BYPASS_WRITE_GPR_VAL    [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      in_BYPASS_WRITE_GPR_NUM_REG[i] = new sc_signal<Tgeneral_address_t> (rename.c_str());
+      in_BYPASS_WRITE_GPR_DATA   [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+      in_BYPASS_WRITE_SPR_VAL    [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      in_BYPASS_WRITE_SPR_NUM_REG[i] = new sc_signal<Tspecial_address_t> (rename.c_str());
+      in_BYPASS_WRITE_SPR_DATA   [i] = new sc_signal<Tspecial_data_t   > (rename.c_str());
+    }
+  sc_signal<Tcontrol_t        > ** in_BYPASS_MEMORY_VAL         = new sc_signal<Tcontrol_t        > * [_param->_nb_bypass_memory];
+  sc_signal<Tcontext_t        > ** in_BYPASS_MEMORY_CONTEXT_ID  = new sc_signal<Tcontext_t        > * [_param->_nb_bypass_memory];
+  sc_signal<Tgeneral_address_t> ** in_BYPASS_MEMORY_NUM_REG     = new sc_signal<Tgeneral_address_t> * [_param->_nb_bypass_memory];
+  sc_signal<Tgeneral_data_t   > ** in_BYPASS_MEMORY_DATA        = new sc_signal<Tgeneral_data_t   > * [_param->_nb_bypass_memory];
+
+  for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+    {
+      in_BYPASS_MEMORY_VAL        [i] = new sc_signal<Tcontrol_t        > (rename.c_str());
+      in_BYPASS_MEMORY_CONTEXT_ID [i] = new sc_signal<Tcontext_t        > (rename.c_str());
+      in_BYPASS_MEMORY_NUM_REG    [i] = new sc_signal<Tgeneral_address_t> (rename.c_str());
+      in_BYPASS_MEMORY_DATA       [i] = new sc_signal<Tgeneral_data_t   > (rename.c_str());
+    }
+    
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  cout << "<" << name << "> Instanciation of _Reservation_station" << endl;
+  
+  (*(_Reservation_station->in_CLOCK))        (*(in_CLOCK));
+  (*(_Reservation_station->in_NRESET))       (*(in_NRESET));
+
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_VAL              )) (*( in_RESERVATION_STATION_IN_VAL              ));
+  (*(_Reservation_station->out_RESERVATION_STATION_IN_ACK              )) (*(out_RESERVATION_STATION_IN_ACK              ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_CONTEXT_ID       )) (*( in_RESERVATION_STATION_IN_CONTEXT_ID       ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_PACKET_ID        )) (*( in_RESERVATION_STATION_IN_PACKET_ID        ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_OPERATION        )) (*( in_RESERVATION_STATION_IN_OPERATION        ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_TYPE             )) (*( in_RESERVATION_STATION_IN_TYPE             ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_HAS_IMMEDIAT     )) (*( in_RESERVATION_STATION_IN_HAS_IMMEDIAT     ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_IMMEDIAT         )) (*( in_RESERVATION_STATION_IN_IMMEDIAT         ));
+//   (*(_Reservation_station-> in_RESERVATION_STATION_IN_READ_RA          )) (*( in_RESERVATION_STATION_IN_READ_RA          ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_NUM_REG_RA       )) (*( in_RESERVATION_STATION_IN_NUM_REG_RA       ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RA_VAL      )) (*( in_RESERVATION_STATION_IN_DATA_RA_VAL      ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RA          )) (*( in_RESERVATION_STATION_IN_DATA_RA          ));
+//   (*(_Reservation_station-> in_RESERVATION_STATION_IN_READ_RB          )) (*( in_RESERVATION_STATION_IN_READ_RB          ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_NUM_REG_RB       )) (*( in_RESERVATION_STATION_IN_NUM_REG_RB       ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RB_VAL      )) (*( in_RESERVATION_STATION_IN_DATA_RB_VAL      ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RB          )) (*( in_RESERVATION_STATION_IN_DATA_RB          ));
+//   (*(_Reservation_station-> in_RESERVATION_STATION_IN_READ_RC          )) (*( in_RESERVATION_STATION_IN_READ_RC          ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_NUM_REG_RC       )) (*( in_RESERVATION_STATION_IN_NUM_REG_RC       ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RC_VAL      )) (*( in_RESERVATION_STATION_IN_DATA_RC_VAL      ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_DATA_RC          )) (*( in_RESERVATION_STATION_IN_DATA_RC          ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_WRITE_RD         )) (*( in_RESERVATION_STATION_IN_WRITE_RD         ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_NUM_REG_RD       )) (*( in_RESERVATION_STATION_IN_NUM_REG_RD       ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_WRITE_RE         )) (*( in_RESERVATION_STATION_IN_WRITE_RE         ));
+  (*(_Reservation_station-> in_RESERVATION_STATION_IN_NUM_REG_RE       )) (*( in_RESERVATION_STATION_IN_NUM_REG_RE       ));
+
+    for (uint32_t i=0; i<_param->_size_queue; i++)
+      {
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_VAL          [i])) (*(out_RESERVATION_STATION_OUT_VAL          [i]));
+  (*(_Reservation_station-> in_RESERVATION_STATION_OUT_ACK          [i])) (*( in_RESERVATION_STATION_OUT_ACK          [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_CONTEXT_ID   [i])) (*(out_RESERVATION_STATION_OUT_CONTEXT_ID   [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_PACKET_ID    [i])) (*(out_RESERVATION_STATION_OUT_PACKET_ID    [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_OPERATION    [i])) (*(out_RESERVATION_STATION_OUT_OPERATION    [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_TYPE         [i])) (*(out_RESERVATION_STATION_OUT_TYPE         [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_HAS_IMMEDIAT [i])) (*(out_RESERVATION_STATION_OUT_HAS_IMMEDIAT [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_IMMEDIAT     [i])) (*(out_RESERVATION_STATION_OUT_IMMEDIAT     [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_DATA_RA      [i])) (*(out_RESERVATION_STATION_OUT_DATA_RA      [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_DATA_RB      [i])) (*(out_RESERVATION_STATION_OUT_DATA_RB      [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_DATA_RC      [i])) (*(out_RESERVATION_STATION_OUT_DATA_RC      [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_WRITE_RD     [i])) (*(out_RESERVATION_STATION_OUT_WRITE_RD     [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_NUM_REG_RD   [i])) (*(out_RESERVATION_STATION_OUT_NUM_REG_RD   [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_WRITE_RE     [i])) (*(out_RESERVATION_STATION_OUT_WRITE_RE     [i]));
+  (*(_Reservation_station->out_RESERVATION_STATION_OUT_NUM_REG_RE   [i])) (*(out_RESERVATION_STATION_OUT_NUM_REG_RE   [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+      {
+  (*(_Reservation_station-> in_GPR_WRITE_VAL                        [i])) (*( in_GPR_WRITE_VAL                        [i]));
+  (*(_Reservation_station-> in_GPR_WRITE_CONTEXT_ID                 [i])) (*( in_GPR_WRITE_CONTEXT_ID                 [i]));
+  (*(_Reservation_station-> in_GPR_WRITE_NUM_REG                    [i])) (*( in_GPR_WRITE_NUM_REG                    [i]));
+  (*(_Reservation_station-> in_GPR_WRITE_DATA                       [i])) (*( in_GPR_WRITE_DATA                       [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+      {
+  (*(_Reservation_station-> in_SPR_WRITE_VAL                        [i])) (*( in_SPR_WRITE_VAL                        [i]));
+  (*(_Reservation_station-> in_SPR_WRITE_CONTEXT_ID                 [i])) (*( in_SPR_WRITE_CONTEXT_ID                 [i]));
+  (*(_Reservation_station-> in_SPR_WRITE_NUM_REG                    [i])) (*( in_SPR_WRITE_NUM_REG                    [i]));
+  (*(_Reservation_station-> in_SPR_WRITE_DATA                       [i])) (*( in_SPR_WRITE_DATA                       [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
+      {
+  (*(_Reservation_station-> in_BYPASS_WRITE_CONTEXT_ID              [i])) (*( in_BYPASS_WRITE_CONTEXT_ID              [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_GPR_VAL                 [i])) (*( in_BYPASS_WRITE_GPR_VAL                 [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_GPR_NUM_REG             [i])) (*( in_BYPASS_WRITE_GPR_NUM_REG             [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_GPR_DATA                [i])) (*( in_BYPASS_WRITE_GPR_DATA                [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_SPR_VAL                 [i])) (*( in_BYPASS_WRITE_SPR_VAL                 [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_SPR_NUM_REG             [i])) (*( in_BYPASS_WRITE_SPR_NUM_REG             [i]));
+  (*(_Reservation_station-> in_BYPASS_WRITE_SPR_DATA                [i])) (*( in_BYPASS_WRITE_SPR_DATA                [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+      {
+  (*(_Reservation_station-> in_BYPASS_MEMORY_VAL                    [i])) (*( in_BYPASS_MEMORY_VAL                    [i]));
+  (*(_Reservation_station-> in_BYPASS_MEMORY_CONTEXT_ID             [i])) (*( in_BYPASS_MEMORY_CONTEXT_ID             [i]));
+  (*(_Reservation_station-> in_BYPASS_MEMORY_NUM_REG                [i])) (*( in_BYPASS_MEMORY_NUM_REG                [i]));
+  (*(_Reservation_station-> in_BYPASS_MEMORY_DATA                   [i])) (*( in_BYPASS_MEMORY_DATA                   [i]));
+      }
+
+  cout << "<" << name << "> Start Simulation ............" << endl;
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t nb_request = _param->_nb_packet;
+//const uint32_t seed = 0;
+  const uint32_t seed = static_cast<uint32_t>(time(NULL));
+  srand(seed);
+
+  Tcontext_t         _context_id [nb_request];
+  Tcontrol_t         _read_ra    [nb_request];
+  Tgeneral_address_t _num_reg_ra [nb_request];
+  Tcontrol_t         _read_rb    [nb_request];
+  Tgeneral_address_t _num_reg_rb [nb_request];
+  Tcontrol_t         _read_rc    [nb_request];
+  Tspecial_address_t _num_reg_rc [nb_request];
+
+  // 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];
+
+  SC_START(0);
+
+  LABEL("Initialisation");
+  in_RESERVATION_STATION_IN_VAL ->write(0);
+  for (uint32_t i=0; i<_param->_size_queue      ; i++)
+    in_RESERVATION_STATION_OUT_ACK [i]->write(0);
+  for (uint32_t i=0; i<_param->_nb_gpr_write    ; i++)
+    in_GPR_WRITE_VAL               [i]->write(0);
+  for (uint32_t i=0; i<_param->_nb_spr_write    ; i++)
+    in_SPR_WRITE_VAL               [i]->write(0);
+  for (uint32_t i=0; i<_param->_nb_bypass_write ; i++)
+    {
+      in_BYPASS_WRITE_GPR_VAL      [i]->write(0);
+      in_BYPASS_WRITE_SPR_VAL      [i]->write(0);
+    }
+  for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+    in_BYPASS_MEMORY_VAL           [i]->write(0);
+
+  in_NRESET->write(0);
+  SC_START(5);
+  in_NRESET->write(1);
+
+  LABEL("Loop of Test");
+
+  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
+    {
+      LABEL("Iteration "+toString(iteration));
+
+      int32_t percent_transaction_queue_in     = (rand()%50)+25;
+      int32_t percent_transaction_queue_out    = (rand()%50)+25;
+      int32_t percent_registerfile_valid       = (rand()%50)+25;
+      int32_t percent_transaction_registerfile = (rand()%50)+25;
+      int32_t percent_transaction_bypass       = (rand()%50)+25;
+      
+      LABEL("Initialisation");
+
+      for (uint32_t i=0; i<nb_request; i++)
+	{
+	  _context_id   [i] = rand()% _param->_nb_context            ;
+	  _read_ra      [i] = rand()% 2                              ;
+	  _num_reg_ra   [i] = rand()% _param->_nb_general_register   ;
+	  _read_rb      [i] = rand()% 2                              ;
+	  _num_reg_rb   [i] = rand()% _param->_nb_general_register   ;
+	  _read_rc      [i] = rand()% 2                              ;
+	  _num_reg_rc   [i] = rand()% _param->_nb_special_register   ;
+	}
+      
+      // emulation of registerFile
+      for (uint32_t j=0; j<_param->_nb_context; j++)
+	{
+	  for (uint32_t i=0; i<_param->_nb_general_register; i++)
+	    {
+	      _gpr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
+	      _gpr          [i][j] = rand()%(1<<_param->_size_general_data);
+	    }
+	  for (uint32_t i=0; i<_param->_nb_special_register; i++)
+	    {
+	      _spr_val      [i][j] = ((rand()%100) < percent_registerfile_valid);
+	      _spr          [i][j] = rand()%(1<<_param->_size_special_data);
+	    }
+	}
+      // End initialisation .......
+
+      uint32_t request_in  = 0;
+      uint32_t request_out = 0;
+      bool     request_out_wait [nb_request];
+
+      for (uint32_t i=0; i<nb_request; i++)
+	request_out_wait [i] = true;
+
+      while (request_out < nb_request)
+	{
+	  if ((request_in < nb_request) and
+	      ((rand()%100) < percent_transaction_queue_in))
+	    {
+	      bool               data_val;
+	      Tgeneral_address_t gpr_addr;
+	      Tspecial_address_t spr_addr;
+	      Tcontext_t         ctxt    = _context_id [request_in];
+   	      in_RESERVATION_STATION_IN_VAL         ->write(1);
+   	      in_RESERVATION_STATION_IN_CONTEXT_ID  ->write(ctxt);
+   	      in_RESERVATION_STATION_IN_PACKET_ID   ->write(request_in);
+   	      in_RESERVATION_STATION_IN_OPERATION   ->write(0);
+   	      in_RESERVATION_STATION_IN_TYPE        ->write(0);
+   	      in_RESERVATION_STATION_IN_HAS_IMMEDIAT->write(0);
+   	      in_RESERVATION_STATION_IN_IMMEDIAT    ->write(0);
+// 	      in_RESERVATION_STATION_IN_READ_RA     ->write(_read_ra[request_in]);
+	      gpr_addr = _num_reg_ra [request_in];
+	      data_val = not(_read_ra[request_in]) or _gpr_val[gpr_addr][ctxt];
+	      in_RESERVATION_STATION_IN_NUM_REG_RA  ->write(gpr_addr);
+   	      in_RESERVATION_STATION_IN_DATA_RA_VAL ->write(data_val);
+   	      in_RESERVATION_STATION_IN_DATA_RA     ->write((data_val)?_gpr[gpr_addr][ctxt]:0);
+// 	      in_RESERVATION_STATION_IN_READ_RB     ->write(_read_rb[request_in]);
+	      gpr_addr = _num_reg_rb [request_in];
+	      data_val = not(_read_rb[request_in]) or _gpr_val[gpr_addr][ctxt];
+   	      in_RESERVATION_STATION_IN_NUM_REG_RB  ->write(gpr_addr);			       
+   	      in_RESERVATION_STATION_IN_DATA_RB_VAL ->write(data_val);			       
+   	      in_RESERVATION_STATION_IN_DATA_RB     ->write((data_val)?_gpr[gpr_addr][ctxt]:0);
+// 	      in_RESERVATION_STATION_IN_READ_RC     ->write(_read_rc[request_in]);
+	      spr_addr = _num_reg_rc [request_in];
+	      data_val = not(_read_rc[request_in]) or _spr_val[spr_addr][ctxt];
+   	      in_RESERVATION_STATION_IN_NUM_REG_RC  ->write(spr_addr);			       
+   	      in_RESERVATION_STATION_IN_DATA_RC_VAL ->write(data_val);			       
+   	      in_RESERVATION_STATION_IN_DATA_RC     ->write((data_val)?_spr[spr_addr][ctxt]:0);
+   	      in_RESERVATION_STATION_IN_WRITE_RD    ->write(0);
+   	      in_RESERVATION_STATION_IN_NUM_REG_RD  ->write(0);
+   	      in_RESERVATION_STATION_IN_WRITE_RE    ->write(0);
+   	      in_RESERVATION_STATION_IN_NUM_REG_RE  ->write(0);
+	    }
+	  else
+	    {
+	      in_RESERVATION_STATION_IN_VAL         ->write(0);
+	    }
+
+	  for (uint32_t i=0; i<_param->_size_queue      ; i++)
+	    in_RESERVATION_STATION_OUT_ACK[i]->write((rand()%100)<percent_transaction_queue_out);
+
+
+	  LABEL("Bypass Network :");
+	  for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+	    {
+	      Tgeneral_address_t num_reg = rand()% _param->_nb_general_register;
+	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tcontrol_t         val     = (_gpr_val [num_reg][context]== 0)?((rand()%100) < percent_transaction_registerfile):0;
+	      Tgeneral_data_t    data    = rand()%(1<<_param->_size_general_data);
+	      
+	      in_GPR_WRITE_VAL        [i]->write(val);	      
+	      in_GPR_WRITE_CONTEXT_ID [i]->write(context);
+	      in_GPR_WRITE_NUM_REG    [i]->write(num_reg);
+	      in_GPR_WRITE_DATA       [i]->write(data);
+
+	      if (val)
+		{
+		  LABEL(" * GPR_WRITE     ["+toString(i)+"] - gpr["+toString(num_reg)+"]["+toString(context)+"] <- "+toString(data));
+		  _gpr     [num_reg][context] = data;
+		  _gpr_val [num_reg][context] = 1;
+		}
+	    }
+	  for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+	    {
+	      Tspecial_address_t num_reg = rand()% _param->_nb_special_register;
+	      Tcontext_t         context = rand()% _param->_nb_context;
+	      Tcontrol_t         val     = (_spr_val [num_reg][context]== 0)?((rand()%100) < percent_transaction_registerfile):0;
+	      Tspecial_data_t    data    = rand()%(1<<_param->_size_special_data);
+	      
+	      in_SPR_WRITE_VAL        [i]->write(val);	      
+	      in_SPR_WRITE_CONTEXT_ID [i]->write(context);
+	      in_SPR_WRITE_NUM_REG    [i]->write(num_reg);
+	      in_SPR_WRITE_DATA       [i]->write(data);
+
+	      if (val == 1)
+		{
+		  LABEL(" * SPR_WRITE     ["+toString(i)+"] - spr["+toString(num_reg)+"]["+toString(context)+"] <- "+toString(data));
+		  _spr     [num_reg][context] = data;
+		  _spr_val [num_reg][context] = 1;
+		}
+	    }
+
+	  for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
+	    {
+	      Tcontext_t         context     = rand()% _param->_nb_context;
+	      in_BYPASS_WRITE_CONTEXT_ID [i]->write(context);
+
+	      Tgeneral_address_t gpr_num_reg = rand()% _param->_nb_general_register;
+	      Tcontrol_t         gpr_val     = (_gpr_val [gpr_num_reg][context]== 0)?((rand()%100) < percent_transaction_bypass):0;
+	      Tgeneral_data_t    gpr_data    = rand()%(1<<_param->_size_general_data);
+	      
+	      in_BYPASS_WRITE_GPR_VAL    [i]->write(gpr_val);	      
+	      in_BYPASS_WRITE_GPR_NUM_REG[i]->write(gpr_num_reg);
+	      in_BYPASS_WRITE_GPR_DATA   [i]->write(gpr_data);
+
+	      if (gpr_val)
+		{
+		  LABEL(" * BYPASS_WRITE  ["+toString(i)+"] - gpr["+toString(gpr_num_reg)+"]["+toString(context)+"] <- "+toString(gpr_data));
+		  _gpr     [gpr_num_reg][context] = gpr_data;
+		  _gpr_val [gpr_num_reg][context] = 1;
+		}
+
+	      Tspecial_address_t spr_num_reg = rand()% _param->_nb_special_register;
+	      Tcontrol_t         spr_val     = (_spr_val [spr_num_reg][context]== 0)?((rand()%100) < percent_transaction_bypass):0;
+	      Tspecial_data_t    spr_data    = rand()%(1<<_param->_size_special_data);
+	      
+	      in_BYPASS_WRITE_SPR_VAL    [i]->write(spr_val);	      
+	      in_BYPASS_WRITE_SPR_NUM_REG[i]->write(spr_num_reg);
+	      in_BYPASS_WRITE_SPR_DATA   [i]->write(spr_data);
+
+	      if (spr_val)
+		{
+		  LABEL(" * BYPASS_WRITE  ["+toString(i)+"] - spr["+toString(spr_num_reg)+"]["+toString(context)+"] <- "+toString(spr_data));
+		  _spr     [spr_num_reg][context] = spr_data;
+		  _spr_val [spr_num_reg][context] = 1;
+		}
+
+	    }
+
+	  for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+	    {
+	      Tcontext_t         context     = rand()% _param->_nb_context;
+	      in_BYPASS_MEMORY_CONTEXT_ID [i]->write(context);
+
+	      Tgeneral_address_t gpr_num_reg = rand()% _param->_nb_general_register;
+	      Tcontrol_t         gpr_val     = (_gpr_val [gpr_num_reg][context]== 0)?((rand()%100) < percent_transaction_bypass):0;
+	      Tgeneral_data_t    gpr_data    = rand()%(1<<_param->_size_general_data);
+	      
+	      in_BYPASS_MEMORY_VAL    [i]->write(gpr_val);	      
+	      in_BYPASS_MEMORY_NUM_REG[i]->write(gpr_num_reg);
+	      in_BYPASS_MEMORY_DATA   [i]->write(gpr_data);
+
+	      if (gpr_val)
+		{
+		  LABEL(" * BYPASS_MEMORY ["+toString(i)+"] - gpr["+toString(gpr_num_reg)+"]["+toString(context)+"] <- "+toString(gpr_data));
+		  _gpr     [gpr_num_reg][context] = gpr_data;
+		  _gpr_val [gpr_num_reg][context] = 1;
+		}
+	    }
+	  SC_START(0); // to mealy function
+	  
+// 	  LABEL("Test     RESERVATION_STATION_IN  : "+toString(in_RESERVATION_STATION_IN_VAL->read())+","+toString(out_RESERVATION_STATION_IN_ACK->read()));
+	  if (( in_RESERVATION_STATION_IN_VAL->read() == 1) and
+	      (out_RESERVATION_STATION_IN_ACK->read() == 1))
+	    {
+	      LABEL("Accepted RESERVATION_STATION_IN  n°"+toString(request_in));
+	      request_in  ++;
+	    }
+
+	  for (uint32_t i=0; i<_param->_size_queue      ; i++)
+	    {
+ 	      LABEL("Test     RESERVATION_STATION_OUT "+toString(i)+" : "+toString(out_RESERVATION_STATION_OUT_VAL[i]->read())+","+toString(in_RESERVATION_STATION_OUT_ACK[i]->read()));
+	      if ((out_RESERVATION_STATION_OUT_VAL [i]->read() == 1) and
+		  ( in_RESERVATION_STATION_OUT_ACK [i]->read() == 1))
+		{
+		  Tpacket_t  packet_id  = out_RESERVATION_STATION_OUT_PACKET_ID [i]->read();
+
+		  LABEL("Accepted RESERVATION_STATION_OUT ["+toString(i)+"] n°"+toString(packet_id)+", request n°"+toString(request_out));
+		  TEST(bool, request_out_wait [packet_id] , true);
+
+		  request_out ++;
+		  request_out_wait [packet_id] = false;
+
+		  Tcontext_t context_id = _context_id [packet_id];
+		  
+		  TEST(Tcontext_t        ,out_RESERVATION_STATION_OUT_CONTEXT_ID[i]->read(),context_id);
+		  if (_read_ra [packet_id])
+		  TEST(Tgeneral_data_t   ,out_RESERVATION_STATION_OUT_DATA_RA   [i]->read(),_gpr[_num_reg_ra[packet_id]][context_id]);
+		  
+		  if (_read_rb [packet_id])
+		  TEST(Tgeneral_data_t   ,out_RESERVATION_STATION_OUT_DATA_RB   [i]->read(),_gpr[_num_reg_rb[packet_id]][context_id]);
+		  
+		  if (_read_rc [packet_id])
+		  TEST(Tspecial_data_t   ,out_RESERVATION_STATION_OUT_DATA_RC   [i]->read(),_spr[_num_reg_rc[packet_id]][context_id]);
+		}
+	    }
+	  
+	  SC_START(1);	  
+	}
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+  cout << "<" << name << "> ............ Stop Simulation" << endl;
+
+  delete     in_CLOCK ;
+  delete     in_NRESET;
+
+  delete     in_RESERVATION_STATION_IN_VAL         ;
+  delete    out_RESERVATION_STATION_IN_ACK         ;
+  delete     in_RESERVATION_STATION_IN_CONTEXT_ID  ;
+  delete     in_RESERVATION_STATION_IN_PACKET_ID   ;
+  delete     in_RESERVATION_STATION_IN_OPERATION   ;
+  delete     in_RESERVATION_STATION_IN_TYPE        ;
+  delete     in_RESERVATION_STATION_IN_HAS_IMMEDIAT;
+  delete     in_RESERVATION_STATION_IN_IMMEDIAT    ;
+//delete     in_RESERVATION_STATION_IN_READ_RA     ;
+  delete     in_RESERVATION_STATION_IN_NUM_REG_RA  ;
+  delete     in_RESERVATION_STATION_IN_DATA_RA_VAL ;
+  delete     in_RESERVATION_STATION_IN_DATA_RA     ;
+//delete     in_RESERVATION_STATION_IN_READ_RB     ;
+  delete     in_RESERVATION_STATION_IN_NUM_REG_RB  ;
+  delete     in_RESERVATION_STATION_IN_DATA_RB_VAL ;
+  delete     in_RESERVATION_STATION_IN_DATA_RB     ;
+//delete     in_RESERVATION_STATION_IN_READ_RC     ;
+  delete     in_RESERVATION_STATION_IN_NUM_REG_RC  ;
+  delete     in_RESERVATION_STATION_IN_DATA_RC_VAL ;
+  delete     in_RESERVATION_STATION_IN_DATA_RC     ;
+  delete     in_RESERVATION_STATION_IN_WRITE_RD    ;
+  delete     in_RESERVATION_STATION_IN_NUM_REG_RD  ;
+  delete     in_RESERVATION_STATION_IN_WRITE_RE    ;
+  delete     in_RESERVATION_STATION_IN_NUM_REG_RE  ;
+  
+  delete [] out_RESERVATION_STATION_OUT_VAL         ;
+  delete []  in_RESERVATION_STATION_OUT_ACK         ;
+  delete [] out_RESERVATION_STATION_OUT_CONTEXT_ID  ;
+  delete [] out_RESERVATION_STATION_OUT_PACKET_ID   ;
+  delete [] out_RESERVATION_STATION_OUT_OPERATION   ;
+  delete [] out_RESERVATION_STATION_OUT_TYPE        ;
+  delete [] out_RESERVATION_STATION_OUT_HAS_IMMEDIAT;
+  delete [] out_RESERVATION_STATION_OUT_IMMEDIAT    ;
+  delete [] out_RESERVATION_STATION_OUT_DATA_RA     ;
+  delete [] out_RESERVATION_STATION_OUT_DATA_RB     ;
+  delete [] out_RESERVATION_STATION_OUT_DATA_RC     ;
+  delete [] out_RESERVATION_STATION_OUT_WRITE_RD    ;
+  delete [] out_RESERVATION_STATION_OUT_NUM_REG_RD  ;
+  delete [] out_RESERVATION_STATION_OUT_WRITE_RE    ;
+  delete [] out_RESERVATION_STATION_OUT_NUM_REG_RE  ;
+  
+  delete []  in_GPR_WRITE_VAL       ;
+  delete []  in_GPR_WRITE_CONTEXT_ID;
+  delete []  in_GPR_WRITE_NUM_REG   ;
+  delete []  in_GPR_WRITE_DATA      ;
+  
+  delete []  in_SPR_WRITE_VAL       ;
+  delete []  in_SPR_WRITE_CONTEXT_ID;
+  delete []  in_SPR_WRITE_NUM_REG   ;
+  delete []  in_SPR_WRITE_DATA      ;
+  
+  delete []  in_BYPASS_WRITE_CONTEXT_ID ;
+  delete []  in_BYPASS_WRITE_GPR_VAL    ;
+  delete []  in_BYPASS_WRITE_GPR_NUM_REG;
+  delete []  in_BYPASS_WRITE_GPR_DATA   ;
+  delete []  in_BYPASS_WRITE_SPR_VAL    ;
+  delete []  in_BYPASS_WRITE_SPR_NUM_REG;
+  delete []  in_BYPASS_WRITE_SPR_DATA   ;
+  
+  delete []  in_BYPASS_MEMORY_VAL       ;
+  delete []  in_BYPASS_MEMORY_CONTEXT_ID;
+  delete []  in_BYPASS_MEMORY_NUM_REG   ;
+  delete []  in_BYPASS_MEMORY_DATA      ;
+#endif
+
+  delete _Reservation_station;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/VERSION
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/VERSION	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/VERSION	(revision 55)
@@ -0,0 +1,4 @@
+v0.6
+
+0.5 modif vhdl_port et vhdl_testbench_port -> ajout d'une macro
+0.6 ajout de la documentation
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Makefile	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Makefile	(revision 55)
@@ -0,0 +1,19 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ include ]------------------------------------------
+
+all				:
+				$(MAKE) all_documentation
+
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Common
+include				$(DIR_MORPHEO)/Behavioural/Makefile.Documentation
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Reservation_station.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Reservation_station.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/Reservation_station.tex	(revision 55)
@@ -0,0 +1,38 @@
+\documentclass[10pt,a4paper,twocolumn]{article}
+
+\def\dirdoc{tex}
+\def\dirschema{eps}
+
+% Package de variables d'environnement : Titre, command etc ...
+\usepackage{../../../../../../../../Behavioural/doc/sty/doc-style}
+\usepackage{sty/header}
+
+
+%------------------------------------------------------------------------------
+% Début document
+%------------------------------------------------------------------------------
+
+\pagestyle{empty}
+
+\begin{document}
+
+% Créez une page de titre
+\maketitle
+\thispagestyle{empty}
+
+%Table des matières et des figures
+%\tableofcontents
+%\newpage
+%\listoffigures
+
+%------------------------------------------------------------------------------
+% Ajout du corps du documents
+%------------------------------------------------------------------------------
+
+\input{tex/root}
+
+%------------------------------------------------------------------------------
+% Fin d'ajout du corps du document
+%------------------------------------------------------------------------------
+
+\end{document}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/sty/header.sty
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/sty/header.sty	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/sty/header.sty	(revision 55)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Reservation_station}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/01_introduction.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/01_introduction.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/01_introduction.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/02_features.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/02_features.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/02_features.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/03_description.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/03_description.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/03_description.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/04_pinout.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/04_pinout.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/04_pinout.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/05_parameters.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/05_parameters.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/05_parameters.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/06_performance.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/06_performance.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/06_performance.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/07_details.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/07_details.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/07_details.tex	(revision 55)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/08_history.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/08_history.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/08_history.tex	(revision 55)
@@ -0,0 +1,10 @@
+\Section{Revision History}
+
+\begin{tabular}{|c|c|c|}
+\hline
+Revision Date & By  & Modifications\\
+\hline
+\hline
+yyyy/mm/dd    & xxx & Initial document \\
+\hline
+\end{tabular}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/root.tex
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/root.tex	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/doc/tex/root.tex	(revision 55)
@@ -0,0 +1,8 @@
+\input{\dirdoc/01_introduction}
+\input{\dirdoc/02_features}
+\input{\dirdoc/03_description}
+\input{\dirdoc/04_pinout}
+\input{\dirdoc/05_parameters}
+\input{\dirdoc/06_performance}
+\input{\dirdoc/07_details}
+\input{\dirdoc/08_history}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h	(revision 55)
@@ -0,0 +1,91 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include <math.h>
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t    _size_queue           ;
+  public : const uint32_t    _nb_context           ;
+  public : const uint32_t    _nb_packet            ;
+  public : const uint32_t    _size_general_data    ;
+  public : const uint32_t    _size_special_data    ;
+  public : const uint32_t    _nb_general_register  ;
+  public : const uint32_t    _nb_special_register  ;
+  public : const uint32_t    _nb_operation         ;
+  public : const uint32_t    _nb_type              ;
+  public : const uint32_t    _nb_gpr_write         ;
+  public : const uint32_t    _nb_spr_write         ;
+  public : const uint32_t    _nb_bypass_write      ;//if nb_bypass=0, then bypass is desactivated
+  public : const uint32_t    _nb_bypass_memory     ;//if nb_bypass=0, then bypass is desactivated
+    /*
+  public : const bool        _have_immediat        ;
+  public : const bool        _have_gpr_ra          ;
+  public : const bool        _have_gpr_rb          ;
+  public : const bool        _have_spr_rc          ;
+  public : const bool        _have_gpr_rd          ;
+  public : const bool        _have_spr_re          ;
+    */
+  public : const uint32_t    _size_context_id      ;
+  public : const uint32_t    _size_packet_id       ;
+  public : const uint32_t    _size_general_register;
+  public : const uint32_t    _size_special_register;
+  public : const uint32_t    _size_operation       ;
+  public : const uint32_t    _size_type            ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t size_queue         ,
+			uint32_t nb_context         ,
+			uint32_t nb_packet          ,
+			uint32_t size_general_data  ,
+			uint32_t size_special_data  ,
+			uint32_t nb_general_register,
+			uint32_t nb_special_register,
+			uint32_t nb_operation       ,
+			uint32_t nb_type            ,
+			uint32_t nb_gpr_write       ,
+			uint32_t nb_spr_write       ,
+			uint32_t nb_bypass_write    ,
+			uint32_t nb_bypass_memory   );
+
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public : string msg_error (void);
+
+  public :        string   print      (uint32_t depth);
+  public : friend ostream& operator<< (ostream& output_stream,
+				       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters & x);
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/include/Reservation_station.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h	(revision 55)
@@ -0,0 +1,261 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Reservation_station_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Reservation_station_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include <vector>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h"
+#ifdef STATISTICS
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+  class Treservation_station_entry_t
+  {
+  public    : Tcontext_t         _context_id  ;
+  public    : Tpacket_t          _packet_id   ;
+  public    : Toperation_t       _operation   ;
+  public    : Ttype_t            _type        ;
+  public    : Tcontrol_t         _has_immediat;
+  public    : Tgeneral_data_t    _immediat    ;
+//public    : Tcontrol_t         _read_ra     ;
+  public    : Tgeneral_address_t _num_reg_ra  ;
+  public    : Tcontrol_t         _data_ra_val ;
+  public    : Tgeneral_data_t    _data_ra     ;
+//public    : Tcontrol_t         _read_rb     ;
+  public    : Tgeneral_address_t _num_reg_rb  ;
+  public    : Tcontrol_t         _data_rb_val ;
+  public    : Tgeneral_data_t    _data_rb     ;
+//public    : Tcontrol_t         _read_rc     ;
+  public    : Tspecial_address_t _num_reg_rc  ;
+  public    : Tcontrol_t         _data_rc_val ;
+  public    : Tspecial_data_t    _data_rc     ;
+  public    : Tcontrol_t         _write_rd    ;
+  public    : Tgeneral_address_t _num_reg_rd  ;
+  public    : Tcontrol_t         _write_re    ;
+  public    : Tspecial_address_t _num_reg_re  ;
+
+    friend ostream& operator<< (ostream& output_stream,
+				morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Treservation_station_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
+		    << " * _data_ra_val : " << toString(x._data_ra_val ) << endl
+		    << " * _data_ra     : " << toString(x._data_ra     ) << endl
+// 		    << " * _read_rb     : " << toString(x._read_rb     ) << endl
+		    << " * _num_reg_rb  : " << toString(x._num_reg_rb  ) << endl
+		    << " * _data_rb_val : " << toString(x._data_rb_val ) << endl
+		    << " * _data_rb     : " << toString(x._data_rb     ) << endl
+// 		    << " * _read_rc     : " << toString(x._read_rc     ) << endl
+		    << " * _num_reg_rc  : " << toString(x._num_reg_rc  ) << endl
+		    << " * _data_rc_val : " << toString(x._data_rc_val ) << endl
+		    << " * _data_rc     : " << toString(x._data_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;
+    }
+
+  };
+
+  class Reservation_station 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const string       _name;
+
+  protected : const Parameters * _param;
+//#ifdef STATISTICS
+//  protected : const morpheo::behavioural::Parameters_Statistics * _param_statistics;
+//#endif
+
+#ifdef STATISTICS
+  private   : Statistics                     * _stat;
+#endif
+
+  public    : Component                      * _component;
+  private   : Interfaces                     * _interfaces;
+
+#ifdef SYSTEMC
+    // ~~~~~[ Interface ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    // Interface
+  public    : SC_CLOCK                      *  in_CLOCK        ;
+  public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Interface "reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_VAL         ;
+  public    : SC_OUT(Tcontrol_t        )    * out_RESERVATION_STATION_IN_ACK         ;
+  public    : SC_IN (Tcontext_t        )    *  in_RESERVATION_STATION_IN_CONTEXT_ID  ;
+  public    : SC_IN (Tpacket_t         )    *  in_RESERVATION_STATION_IN_PACKET_ID   ;
+  public    : SC_IN (Toperation_t      )    *  in_RESERVATION_STATION_IN_OPERATION   ;
+  public    : SC_IN (Ttype_t           )    *  in_RESERVATION_STATION_IN_TYPE        ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_HAS_IMMEDIAT;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_IMMEDIAT    ;
+//public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RA     ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RA  ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RA_VAL ;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RA     ;
+//public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RB     ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RB  ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RB_VAL ;
+  public    : SC_IN (Tgeneral_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RB     ;
+//public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_READ_RC     ;
+  public    : SC_IN (Tspecial_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RC  ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_DATA_RC_VAL ;
+  public    : SC_IN (Tspecial_data_t   )    *  in_RESERVATION_STATION_IN_DATA_RC     ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_WRITE_RD    ;
+  public    : SC_IN (Tgeneral_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RD  ;
+  public    : SC_IN (Tcontrol_t        )    *  in_RESERVATION_STATION_IN_WRITE_RE    ;
+  public    : SC_IN (Tspecial_address_t)    *  in_RESERVATION_STATION_IN_NUM_REG_RE  ;
+
+    // ~~~~~[ Interface "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_VAL         ;
+  public    : SC_IN (Tcontrol_t        )   **  in_RESERVATION_STATION_OUT_ACK         ;
+  public    : SC_OUT(Tcontext_t        )   ** out_RESERVATION_STATION_OUT_CONTEXT_ID  ;
+  public    : SC_OUT(Tpacket_t         )   ** out_RESERVATION_STATION_OUT_PACKET_ID   ;
+  public    : SC_OUT(Toperation_t      )   ** out_RESERVATION_STATION_OUT_OPERATION   ;
+  public    : SC_OUT(Ttype_t           )   ** out_RESERVATION_STATION_OUT_TYPE        ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_HAS_IMMEDIAT;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_IMMEDIAT    ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RA     ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RB     ;
+  public    : SC_OUT(Tspecial_data_t   )   ** out_RESERVATION_STATION_OUT_DATA_RC     ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_WRITE_RD    ;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_RESERVATION_STATION_OUT_NUM_REG_RD  ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_RESERVATION_STATION_OUT_WRITE_RE    ;
+  public    : SC_OUT(Tspecial_address_t)   ** out_RESERVATION_STATION_OUT_NUM_REG_RE  ;
+
+    // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )   **  in_GPR_WRITE_VAL       ; // val and ack
+  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      ;
+
+    // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )   **  in_SPR_WRITE_VAL       ; // val and ack
+  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      ;
+
+    // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_WRITE_CONTEXT_ID ;
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_GPR_VAL    ;
+  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_WRITE_GPR_NUM_REG; // RD
+  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_WRITE_GPR_DATA   ;
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_WRITE_SPR_VAL    ;
+  public    : SC_IN (Tspecial_address_t)   **  in_BYPASS_WRITE_SPR_NUM_REG; // RE
+  public    : SC_IN (Tspecial_data_t   )   **  in_BYPASS_WRITE_SPR_DATA   ;
+
+    // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+  public    : SC_IN (Tcontrol_t        )   **  in_BYPASS_MEMORY_VAL       ;
+  public    : SC_IN (Tcontext_t        )   **  in_BYPASS_MEMORY_CONTEXT_ID;
+  public    : SC_IN (Tgeneral_address_t)   **  in_BYPASS_MEMORY_NUM_REG   ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_BYPASS_MEMORY_DATA      ;
+
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  protected : vector<uint32_t>              *  _queue_control;
+  protected : uint32_t                         _queue_nb_elt;
+  protected : Treservation_station_entry_t  *  _queue;
+
+  protected : Tcontrol_t                       internal_RESERVATION_STATION_IN_ACK;
+  protected : Tcontrol_t                    *  internal_RESERVATION_STATION_OUT_VAL;
+#endif
+
+    // -----[ methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Reservation_station);
+#endif
+  public  :          Reservation_station              (
+#ifdef SYSTEMC
+					      sc_module_name                                name,
+#else					       
+					      string                                        name,
+#endif					       
+#ifdef STATISTICS
+					      morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+					      Parameters                                  * param );
+  public  :          ~Reservation_station             (void);
+					       
+#ifdef SYSTEMC				       
+  private : void     allocation                (void);
+  private : void     deallocation              (void);
+					       
+  public  : void     transition                (void);
+  public  : void     genMoore                  (void);
+#endif					       
+#ifdef STATISTICS
+  public  : string   statistics                (uint32_t depth);
+#endif
+					       
+#if VHDL				       
+  public  : void     vhdl                      (void);
+  private : void     vhdl_declaration          (Vhdl * & vhdl);
+  private : void     vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+					       
+#ifdef VHDL_TESTBENCH			       
+  private : void     vhdl_testbench_transition (void);
+#endif
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h	(revision 55)
@@ -0,0 +1,63 @@
+#ifdef STATISTICS
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Statistics_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Statistics_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Statistics.h"
+#include "Behavioural/include/Parameters_Statistics.h"
+//#include "Behavioural/Generic/Group/include/Statistics.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+
+//using namespace morpheo::behavioural::generic::group;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+  class Statistics : public morpheo::behavioural::Statistics
+  {
+    // -----[ fields ]----------------------------------------------------
+  private  : const Parameters                                 * _parameters;
+
+    // -----[ methods ]---------------------------------------------------
+  public   : Statistics  (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  );
+//public   : Statistics  (Statistics & stat);
+  public   : ~Statistics () ;
+    
+  public   : string   print_body (uint32_t depth);
+  public   : string   print      (uint32_t depth);
+  public   : void     add        ();
+
+  public   : friend ostream& operator<< (ostream& output_stream,
+					 const Statistics & x);
+
+  };
+
+}; // end namespace reservation_station
+}; // 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
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h	(revision 55)
@@ -0,0 +1,41 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_Type_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_multi_read_unit_read_unit_reservation_station_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 reservation_station {
+
+  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      ; // Constant_OpenRISC.h
+  typedef uint32_t Ttype_t           ;
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 55)
@@ -0,0 +1,106 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::Parameters"
+  Parameters::Parameters (uint32_t size_queue         ,
+			  uint32_t nb_context         ,
+			  uint32_t nb_packet          ,
+			  uint32_t size_general_data  ,
+			  uint32_t size_special_data  ,
+			  uint32_t nb_general_register,
+			  uint32_t nb_special_register,
+			  uint32_t nb_operation       ,
+			  uint32_t nb_type            ,
+			  uint32_t nb_gpr_write       ,
+			  uint32_t nb_spr_write       ,
+			  uint32_t nb_bypass_write    ,
+			  uint32_t nb_bypass_memory   ):
+    _size_queue            (size_queue           ),
+    _nb_context            (nb_context           ),
+    _nb_packet             (nb_packet            ),
+    _size_general_data     (size_general_data    ),
+    _size_special_data     (size_special_data    ),
+    _nb_general_register   (nb_general_register  ),
+    _nb_special_register   (nb_special_register  ),
+    _nb_operation          (nb_operation         ),
+    _nb_type               (nb_type              ),
+    _nb_gpr_write          (nb_gpr_write         ),
+    _nb_spr_write          (nb_spr_write         ),
+    _nb_bypass_write       (nb_bypass_write      ),
+    _nb_bypass_memory      (nb_bypass_memory     ),
+
+    _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
+    _size_packet_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))),
+    _size_operation        (static_cast<uint32_t>(log2(_nb_operation       ))),
+    _size_type             (static_cast<uint32_t>(log2(_nb_type            )))
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _size_queue            (param._size_queue            ),
+    _nb_context            (param._nb_context            ),
+    _nb_packet             (param._nb_packet             ),
+    _size_general_data     (param._size_general_data     ),
+    _size_special_data     (param._size_special_data     ),
+    _nb_general_register   (param._nb_general_register   ),
+    _nb_special_register   (param._nb_special_register   ),
+    _nb_operation          (param._nb_operation          ),
+    _nb_type               (param._nb_type               ),
+    _nb_gpr_write          (param._nb_gpr_write          ),
+    _nb_spr_write          (param._nb_spr_write          ),
+    _nb_bypass_write       (param._nb_bypass_write       ),
+    _nb_bypass_memory      (param._nb_bypass_memory      ),
+
+    _size_context_id       (param._size_context_id       ),
+    _size_packet_id        (param._size_packet_id        ),
+    _size_general_register (param._size_general_register ),
+    _size_special_register (param._size_special_register ),
+    _size_operation        (param._size_operation        ),
+    _size_type             (param._size_type             )
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    test();
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_msg_error.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_msg_error.cpp	(revision 55)
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Types.h"
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::msg_error"
+  string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    string msg = "";
+
+    if (_size_queue < 2)
+      {
+        msg += "  - The reservation_station must be have less a depth of 2";
+        msg += "    * size_queue                      : " + toString(_size_queue)    + "\n";
+      }
+
+    return msg;
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 55)
@@ -0,0 +1,73 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::print"
+  string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    XML xml ("reservation_station");
+
+    xml.balise_open("reservation_station");
+    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_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
+    xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
+    xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); xml.singleton_end();
+    xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end();
+    xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end();
+    xml.singleton_begin("nb_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_spr_write       "); xml.attribut("value",toString(_nb_spr_write       )); xml.singleton_end();
+    xml.singleton_begin("nb_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
+    xml.singleton_begin("nb_bypass_memory   "); xml.attribut("value",toString(_nb_bypass_memory   )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters & x)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace reservation_station
+}; // 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              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp	(revision 55)
@@ -0,0 +1,119 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::Reservation_station"
+#ifdef SYSTEMC
+  Reservation_station::Reservation_station (sc_module_name name,
+#else
+  Reservation_station::Reservation_station (string name,
+#endif
+#ifdef STATISTICS
+			  morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+			  morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * param ):
+			      _name              (name)
+			      ,_param            (param)
+// #ifdef STATISTICS
+// 			      ,_param_statistics (param_statistics)
+// #endif
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+#ifdef SYSTEMC
+    log_printf(INFO,Reservation_station,FUNCTION,"Allocation");
+
+    allocation ();
+#endif
+
+#ifdef STATISTICS
+    log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics");
+
+    // Allocation of statistics
+    _stat = new Statistics (static_cast<string>(_name),
+			    param_statistics          ,
+			    param);
+#endif
+
+#ifdef VHDL
+    // generate the vhdl
+    log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl");
+
+    vhdl();
+#endif
+
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    log_printf(INFO,Reservation_station,FUNCTION,"Method - transition");
+
+    SC_METHOD (transition);
+    dont_initialize ();
+    sensitive_pos << *(in_CLOCK);
+//#endif
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+    log_printf(INFO,Reservation_station,FUNCTION,"Method - genMoore");
+
+    SC_METHOD (genMoore);
+    dont_initialize ();
+    sensitive_neg << *(in_CLOCK);
+
+#ifdef SYSTEMCASS_SPECIFIC
+    // List dependency information
+#endif    
+
+#endif
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::~Reservation_station"
+  Reservation_station::~Reservation_station (void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file");
+
+    _stat->generate_file(statistics(0));
+    
+    delete _stat;
+#endif
+
+#ifdef SYSTEMC
+    log_printf(INFO,Reservation_station,FUNCTION,"Deallocation");
+
+    deallocation ();
+#endif
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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              
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp	(revision 55)
@@ -0,0 +1,251 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::allocation"
+  void Reservation_station::allocation (void)
+  {
+    string rename;
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    _component   = new Component ();
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Reservation_station"
+#ifdef POSITION
+					      ,COMBINATORY 
+#endif
+					      );
+
+    _interfaces = entity->set_interfaces();
+
+    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+      Interface * interface = _interfaces->set_interface(""
+#ifdef POSITION
+							 ,IN
+							 ,SOUTH,
+							 "Generalist interface"
+#endif
+							 );
+
+     in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
+     in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
+
+    // ~~~~~[ Interface : "reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      Interface_fifo * interface = _interfaces->set_interface("reservation_station_in"
+#ifdef POSITION
+							       ,IN
+							       ,EAST
+							       ,"Input of reservation_station"
+#endif
+							       );
+      
+       in_RESERVATION_STATION_IN_VAL            = interface->set_signal_valack_in  (VAL);
+      out_RESERVATION_STATION_IN_ACK            = interface->set_signal_valack_out (ACK);
+       in_RESERVATION_STATION_IN_CONTEXT_ID     = interface->set_signal_in <Tcontext_t        > ("context_id"  ,_param->_size_context_id       );
+       in_RESERVATION_STATION_IN_PACKET_ID      = interface->set_signal_in <Tpacket_t         > ("packet_id"   ,_param->_size_packet_id        );
+       in_RESERVATION_STATION_IN_OPERATION      = interface->set_signal_in <Toperation_t      > ("operation"   ,_param->_size_operation        );
+       in_RESERVATION_STATION_IN_TYPE           = interface->set_signal_in <Ttype_t           > ("type"        ,_param->_size_type             );
+       in_RESERVATION_STATION_IN_HAS_IMMEDIAT   = interface->set_signal_in <Tcontrol_t        > ("has_immediat",1                             );
+       in_RESERVATION_STATION_IN_IMMEDIAT       = interface->set_signal_in <Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data     );
+//     in_RESERVATION_STATION_IN_READ_RA        = interface->set_signal_in <Tcontrol_t        > ("read_ra"     ,1                             );
+       in_RESERVATION_STATION_IN_NUM_REG_RA     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra"  ,_param->_size_general_register );
+       in_RESERVATION_STATION_IN_DATA_RA_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_ra_val" ,1                             );
+       in_RESERVATION_STATION_IN_DATA_RA        = interface->set_signal_in <Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data     );
+//     in_RESERVATION_STATION_IN_READ_RB        = interface->set_signal_in <Tcontrol_t        > ("read_rb"     ,1                             );
+       in_RESERVATION_STATION_IN_NUM_REG_RB     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb"  ,_param->_size_general_register );
+       in_RESERVATION_STATION_IN_DATA_RB_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_rb_val" ,1                             );
+       in_RESERVATION_STATION_IN_DATA_RB        = interface->set_signal_in <Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data     );
+//     in_RESERVATION_STATION_IN_READ_RC        = interface->set_signal_in <Tcontrol_t        > ("read_rc"     ,1                             );
+       in_RESERVATION_STATION_IN_NUM_REG_RC     = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc"  ,_param->_size_special_register );
+       in_RESERVATION_STATION_IN_DATA_RC_VAL    = interface->set_signal_in <Tcontrol_t        > ("data_rc_val" ,1                             );
+       in_RESERVATION_STATION_IN_DATA_RC        = interface->set_signal_in <Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data     );
+       in_RESERVATION_STATION_IN_WRITE_RD       = interface->set_signal_in <Tcontrol_t        > ("write_rd"    ,1                             );
+       in_RESERVATION_STATION_IN_NUM_REG_RD     = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register );
+       in_RESERVATION_STATION_IN_WRITE_RE       = interface->set_signal_in <Tcontrol_t        > ("write_re"    ,1                             );
+       in_RESERVATION_STATION_IN_NUM_REG_RE     = interface->set_signal_in <Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register );      
+     }
+
+    // ~~~~~[ Interface : "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~
+    out_RESERVATION_STATION_OUT_VAL         = new SC_OUT(Tcontrol_t        ) * [_param->_size_queue];
+     in_RESERVATION_STATION_OUT_ACK         = new SC_IN (Tcontrol_t        ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_CONTEXT_ID  = new SC_OUT(Tcontext_t        ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_PACKET_ID   = new SC_OUT(Tpacket_t         ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_OPERATION   = new SC_OUT(Toperation_t      ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_TYPE        = new SC_OUT(Ttype_t           ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_HAS_IMMEDIAT= new SC_OUT(Tcontrol_t        ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_IMMEDIAT    = new SC_OUT(Tgeneral_data_t   ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_DATA_RA     = new SC_OUT(Tgeneral_data_t   ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_DATA_RB     = new SC_OUT(Tgeneral_data_t   ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_DATA_RC     = new SC_OUT(Tspecial_data_t   ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_WRITE_RD    = new SC_OUT(Tcontrol_t        ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_NUM_REG_RD  = new SC_OUT(Tgeneral_address_t) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_WRITE_RE    = new SC_OUT(Tcontrol_t        ) * [_param->_size_queue];
+    out_RESERVATION_STATION_OUT_NUM_REG_RE  = new SC_OUT(Tspecial_address_t) * [_param->_size_queue];
+    
+    for (uint32_t i=0; i<_param->_size_queue; i++)
+      {
+	Interface_fifo * interface = _interfaces->set_interface("reservation_station_out_"+toString(i)
+#ifdef POSITION
+								,OUT
+								,WEST
+								,"Output of reservation_station"
+#endif
+								);
+	out_RESERVATION_STATION_OUT_VAL          [i] = interface->set_signal_valack_out(VAL);
+	 in_RESERVATION_STATION_OUT_ACK          [i] = interface->set_signal_valack_in (ACK);
+	out_RESERVATION_STATION_OUT_CONTEXT_ID   [i] = interface->set_signal_out<Tcontext_t        > ("context_id"  ,_param->_size_context_id);
+	out_RESERVATION_STATION_OUT_PACKET_ID    [i] = interface->set_signal_out<Tpacket_t         > ("packet_id"   ,_param->_size_packet_id);
+	out_RESERVATION_STATION_OUT_OPERATION    [i] = interface->set_signal_out<Toperation_t      > ("operation"   ,_param->_size_operation);
+	out_RESERVATION_STATION_OUT_TYPE         [i] = interface->set_signal_out<Ttype_t           > ("type"        ,_param->_size_type);
+	out_RESERVATION_STATION_OUT_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t        > ("has_immediat",1);
+	out_RESERVATION_STATION_OUT_IMMEDIAT     [i] = interface->set_signal_out<Tgeneral_data_t   > ("immediat"    ,_param->_size_general_data);
+	out_RESERVATION_STATION_OUT_DATA_RA      [i] = interface->set_signal_out<Tgeneral_data_t   > ("data_ra"     ,_param->_size_general_data);
+	out_RESERVATION_STATION_OUT_DATA_RB      [i] = interface->set_signal_out<Tgeneral_data_t   > ("data_rb"     ,_param->_size_general_data);
+	out_RESERVATION_STATION_OUT_DATA_RC      [i] = interface->set_signal_out<Tspecial_data_t   > ("data_rc"     ,_param->_size_special_data);
+	out_RESERVATION_STATION_OUT_WRITE_RD     [i] = interface->set_signal_out<Tcontrol_t        > ("write_rd"    ,1);
+	out_RESERVATION_STATION_OUT_NUM_REG_RD   [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd"  ,_param->_size_general_register);
+	out_RESERVATION_STATION_OUT_WRITE_RE     [i] = interface->set_signal_out<Tcontrol_t        > ("write_re"    ,1);
+	out_RESERVATION_STATION_OUT_NUM_REG_RE   [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re"  ,_param->_size_special_register);
+      }
+
+    // ~~~~~[ 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];
+
+    for (uint32_t i=0; i<_param->_nb_gpr_write; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with write queue to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_GPR_WRITE_VAL        [i] = interface->set_signal_valack_in (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);
+      }
+
+    // ~~~~~[ 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];
+
+    for (uint32_t i=0; i<_param->_nb_spr_write; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,SOUTH
+                                                                , "Interface with write queue to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_SPR_WRITE_VAL        [i] = interface->set_signal_valack_in (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);
+      }
+
+    // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     in_BYPASS_WRITE_CONTEXT_ID  = new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_GPR_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_GPR_DATA    = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_SPR_VAL     = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write];
+     in_BYPASS_WRITE_SPR_DATA    = new SC_IN (Tspecial_data_t   ) * [_param->_nb_bypass_write];
+
+    for (uint32_t i=0; i<_param->_nb_bypass_write; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("bypass_write_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                ,NORTH
+                                                                , "Interface with write queue to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_BYPASS_WRITE_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id" ,_param->_size_context_id);
+	 in_BYPASS_WRITE_GPR_VAL    [i] = interface->set_signal_valack_in ("gpr_val",VAL);
+	 in_BYPASS_WRITE_GPR_NUM_REG[i] = interface->set_signal_in  <Tgeneral_address_t> ("gpr_num_reg",_param->_size_general_register);
+	 in_BYPASS_WRITE_GPR_DATA   [i] = interface->set_signal_in  <Tgeneral_data_t   > ("gpr_data"   ,_param->_size_general_data);
+	 in_BYPASS_WRITE_SPR_VAL    [i] = interface->set_signal_valack_in ("spr_val",VAL);
+	 in_BYPASS_WRITE_SPR_NUM_REG[i] = interface->set_signal_in  <Tspecial_address_t> ("spr_num_reg",_param->_size_general_register);
+	 in_BYPASS_WRITE_SPR_DATA   [i] = interface->set_signal_in  <Tspecial_data_t   > ("spr_data"   ,_param->_size_general_data);
+      }
+
+    // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     in_BYPASS_MEMORY_VAL         = new SC_IN (Tcontrol_t        ) * [_param->_nb_bypass_memory];
+     in_BYPASS_MEMORY_CONTEXT_ID  = new SC_IN (Tcontext_t        ) * [_param->_nb_bypass_memory];
+     in_BYPASS_MEMORY_NUM_REG     = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory];
+     in_BYPASS_MEMORY_DATA        = new SC_IN (Tgeneral_data_t   ) * [_param->_nb_bypass_memory];
+
+    for (uint32_t i=0; i<_param->_nb_bypass_memory; i++)
+      {
+        Interface_fifo * interface = _interfaces->set_interface("bypass_memory_"+toString(i)
+#ifdef POSITION
+                                                                , IN  
+                                                                , NORTH
+                                                                , "Interface with load/store unit to bypass the write in the RegisterFile."
+#endif
+                                                                );
+
+	 in_BYPASS_MEMORY_VAL        [i] = interface->set_signal_valack_in (VAL);
+	 in_BYPASS_MEMORY_CONTEXT_ID [i] = interface->set_signal_in  <Tcontext_t        > ("context_id" ,_param->_size_context_id);
+	 in_BYPASS_MEMORY_NUM_REG    [i] = interface->set_signal_in  <Tgeneral_address_t> ("num_reg"    ,_param->_size_general_register);
+	 in_BYPASS_MEMORY_DATA       [i] = interface->set_signal_in  <Tgeneral_data_t   > ("data"       ,_param->_size_general_data);
+      }
+
+
+    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
+    internal_RESERVATION_STATION_OUT_VAL = new Tcontrol_t [_param->_size_queue];
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+    _queue_control = new vector<uint32_t>;
+    _queue         = new Treservation_station_entry_t [_param->_size_queue];
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp	(revision 55)
@@ -0,0 +1,118 @@
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::"
+
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::deallocation"
+  void Reservation_station::deallocation (void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    delete     in_CLOCK ;
+    delete     in_NRESET;
+
+    delete     in_RESERVATION_STATION_IN_VAL         ;
+    delete    out_RESERVATION_STATION_IN_ACK         ;
+    delete     in_RESERVATION_STATION_IN_CONTEXT_ID  ;
+    delete     in_RESERVATION_STATION_IN_PACKET_ID   ;
+    delete     in_RESERVATION_STATION_IN_OPERATION   ;
+    delete     in_RESERVATION_STATION_IN_TYPE        ;
+    delete     in_RESERVATION_STATION_IN_HAS_IMMEDIAT;
+    delete     in_RESERVATION_STATION_IN_IMMEDIAT    ;
+//     delete     in_RESERVATION_STATION_IN_READ_RA     ;
+    delete     in_RESERVATION_STATION_IN_NUM_REG_RA  ;
+    delete     in_RESERVATION_STATION_IN_DATA_RA_VAL ;
+    delete     in_RESERVATION_STATION_IN_DATA_RA     ;
+//     delete     in_RESERVATION_STATION_IN_READ_RB     ;
+    delete     in_RESERVATION_STATION_IN_NUM_REG_RB  ;
+    delete     in_RESERVATION_STATION_IN_DATA_RB_VAL ;
+    delete     in_RESERVATION_STATION_IN_DATA_RB     ;
+//     delete     in_RESERVATION_STATION_IN_READ_RC     ;
+    delete     in_RESERVATION_STATION_IN_NUM_REG_RC  ;
+    delete     in_RESERVATION_STATION_IN_DATA_RC_VAL ;
+    delete     in_RESERVATION_STATION_IN_DATA_RC     ;
+    delete     in_RESERVATION_STATION_IN_WRITE_RD    ;
+    delete     in_RESERVATION_STATION_IN_NUM_REG_RD  ;
+    delete     in_RESERVATION_STATION_IN_WRITE_RE    ;
+    delete     in_RESERVATION_STATION_IN_NUM_REG_RE  ;
+    
+    delete [] out_RESERVATION_STATION_OUT_VAL         ;
+    delete []  in_RESERVATION_STATION_OUT_ACK         ;
+    delete [] out_RESERVATION_STATION_OUT_CONTEXT_ID  ;
+    delete [] out_RESERVATION_STATION_OUT_PACKET_ID   ;
+    delete [] out_RESERVATION_STATION_OUT_OPERATION   ;
+    delete [] out_RESERVATION_STATION_OUT_TYPE        ;
+    delete [] out_RESERVATION_STATION_OUT_HAS_IMMEDIAT;
+    delete [] out_RESERVATION_STATION_OUT_IMMEDIAT    ;
+    delete [] out_RESERVATION_STATION_OUT_DATA_RA     ;
+    delete [] out_RESERVATION_STATION_OUT_DATA_RB     ;
+    delete [] out_RESERVATION_STATION_OUT_DATA_RC     ;
+    delete [] out_RESERVATION_STATION_OUT_WRITE_RD    ;
+    delete [] out_RESERVATION_STATION_OUT_NUM_REG_RD  ;
+    delete [] out_RESERVATION_STATION_OUT_WRITE_RE    ;
+    delete [] out_RESERVATION_STATION_OUT_NUM_REG_RE  ;
+    
+    delete []  in_GPR_WRITE_VAL       ;
+    delete []  in_GPR_WRITE_CONTEXT_ID;
+    delete []  in_GPR_WRITE_NUM_REG   ;
+    delete []  in_GPR_WRITE_DATA      ;
+    
+    delete []  in_SPR_WRITE_VAL       ;
+    delete []  in_SPR_WRITE_CONTEXT_ID;
+    delete []  in_SPR_WRITE_NUM_REG   ;
+    delete []  in_SPR_WRITE_DATA      ;
+    
+    delete []  in_BYPASS_WRITE_CONTEXT_ID ;
+    delete []  in_BYPASS_WRITE_GPR_VAL    ;
+    delete []  in_BYPASS_WRITE_GPR_NUM_REG;
+    delete []  in_BYPASS_WRITE_GPR_DATA   ;
+    delete []  in_BYPASS_WRITE_SPR_VAL    ;
+    delete []  in_BYPASS_WRITE_SPR_NUM_REG;
+    delete []  in_BYPASS_WRITE_SPR_DATA   ;
+    
+    delete []  in_BYPASS_MEMORY_VAL       ;
+    delete []  in_BYPASS_MEMORY_CONTEXT_ID;
+    delete []  in_BYPASS_MEMORY_NUM_REG   ;
+    delete []  in_BYPASS_MEMORY_DATA      ;
+    
+    // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
+    delete []  internal_RESERVATION_STATION_OUT_VAL;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete    _component;
+    delete    _queue_control;
+    delete [] _queue        ;
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp	(revision 55)
@@ -0,0 +1,81 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::genMoore"
+  void Reservation_station::genMoore (void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    // ~~~~~[ Interface "reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~
+    
+    // accept a new instructions when reservation_station is not full
+    internal_RESERVATION_STATION_IN_ACK = _queue_nb_elt < _param->_size_queue;
+    
+    PORT_WRITE(out_RESERVATION_STATION_IN_ACK, internal_RESERVATION_STATION_IN_ACK);
+
+    // ~~~~~[ Interface "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~
+
+    for (uint32_t i=0; i<_param->_size_queue; i++)
+      {
+	bool     val   = i <_queue_nb_elt;
+	uint32_t index = (*_queue_control)[i];
+	
+	if (val == true)
+	  {
+	    // valid if all data is present
+ 	    val = (_queue[index]._data_ra_val and 
+		   _queue[index]._data_rb_val and 
+		   _queue[index]._data_rc_val);
+
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_CONTEXT_ID  [index],_queue[index]._context_id);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_PACKET_ID   [index],_queue[index]._packet_id);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_OPERATION   [index],_queue[index]._operation);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_TYPE        [index],_queue[index]._type);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_HAS_IMMEDIAT[index],_queue[index]._has_immediat);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_IMMEDIAT    [index],_queue[index]._immediat);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_DATA_RA     [index],_queue[index]._data_ra);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_DATA_RB     [index],_queue[index]._data_rb);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_DATA_RC     [index],_queue[index]._data_rc);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_WRITE_RD    [index],_queue[index]._write_rd);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_NUM_REG_RD  [index],_queue[index]._num_reg_rd);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_WRITE_RE    [index],_queue[index]._write_re);
+	    PORT_WRITE(out_RESERVATION_STATION_OUT_NUM_REG_RE  [index],_queue[index]._num_reg_re);
+	  }
+	
+	internal_RESERVATION_STATION_OUT_VAL [index] = val;
+	PORT_WRITE(out_RESERVATION_STATION_OUT_VAL [index], internal_RESERVATION_STATION_OUT_VAL [index]);
+      }
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_statistics.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_statistics.cpp	(revision 55)
@@ -0,0 +1,43 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::statistics"
+  string Reservation_station::statistics (uint32_t depth)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    string txt = _stat->print(depth);
+    
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+
+    return txt;
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp	(revision 55)
@@ -0,0 +1,229 @@
+#ifdef SYSTEMC
+//#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+#define dump_queue() \
+  do\
+  {\
+   log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\
+   log_printf(TRACE,Reservation_station,FUNCTION,"   * nb_elt : %d",_queue_nb_elt);\
+   for (uint32_t j=0;j<_param->_size_queue; j++)\
+   {\
+     cout << "\t"\
+          << "[" << (*_queue_control)[j] << "] "\
+          << "{" << _queue[(*_queue_control)[j]]._packet_id << " - "<< _queue[(*_queue_control)[j]]._context_id << "} "\
+          << _queue[(*_queue_control)[j]]._data_ra_val << ", "\
+          << _queue[(*_queue_control)[j]]._num_reg_ra  << " - "\
+          << _queue[(*_queue_control)[j]]._data_rb_val << ","\
+          << _queue[(*_queue_control)[j]]._num_reg_rb  << " - "\
+          << _queue[(*_queue_control)[j]]._data_rc_val << ","\
+          << _queue[(*_queue_control)[j]]._num_reg_rc  \
+          << endl;\
+    }\
+  } while (0) 
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::transition"
+  void Reservation_station::transition (void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	// clear all element in control.
+	_queue_nb_elt = 0;
+
+	_queue_control->clear();
+	for (uint32_t i=0; i<_param->_size_queue; i++)
+	  _queue_control->push_back(i);
+      }
+    else
+      {
+	// ***** PUSH to reservation station
+	if ((PORT_READ(in_RESERVATION_STATION_IN_VAL) == 1) and
+	    (    internal_RESERVATION_STATION_IN_ACK  == 1))
+	  {
+	    log_printf(TRACE,Reservation_station,FUNCTION,"PUSH");
+
+	    // Write in reservation station
+	    uint32_t index = (*_queue_control)[_queue_nb_elt];
+	    _queue_nb_elt ++;
+
+	    log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
+
+  	    _queue[index]._context_id   = PORT_READ(in_RESERVATION_STATION_IN_CONTEXT_ID  );
+  	    _queue[index]._packet_id    = PORT_READ(in_RESERVATION_STATION_IN_PACKET_ID   );
+  	    _queue[index]._operation    = PORT_READ(in_RESERVATION_STATION_IN_OPERATION   );
+  	    _queue[index]._type         = PORT_READ(in_RESERVATION_STATION_IN_TYPE        );
+  	    _queue[index]._has_immediat = PORT_READ(in_RESERVATION_STATION_IN_HAS_IMMEDIAT);
+  	    _queue[index]._immediat     = PORT_READ(in_RESERVATION_STATION_IN_IMMEDIAT    );
+//	    _queue[index]._read_ra      = PORT_READ(in_RESERVATION_STATION_IN_READ_RA     );
+  	    _queue[index]._num_reg_ra   = PORT_READ(in_RESERVATION_STATION_IN_NUM_REG_RA  );
+  	    _queue[index]._data_ra_val  = PORT_READ(in_RESERVATION_STATION_IN_DATA_RA_VAL );
+  	    _queue[index]._data_ra      = PORT_READ(in_RESERVATION_STATION_IN_DATA_RA     );
+//	    _queue[index]._read_rb      = PORT_READ(in_RESERVATION_STATION_IN_READ_RB     );
+  	    _queue[index]._num_reg_rb   = PORT_READ(in_RESERVATION_STATION_IN_NUM_REG_RB  );
+  	    _queue[index]._data_rb_val  = PORT_READ(in_RESERVATION_STATION_IN_DATA_RB_VAL );
+  	    _queue[index]._data_rb      = PORT_READ(in_RESERVATION_STATION_IN_DATA_RB     );
+//	    _queue[index]._read_rc      = PORT_READ(in_RESERVATION_STATION_IN_READ_RC     );
+  	    _queue[index]._num_reg_rc   = PORT_READ(in_RESERVATION_STATION_IN_NUM_REG_RC  );
+  	    _queue[index]._data_rc_val  = PORT_READ(in_RESERVATION_STATION_IN_DATA_RC_VAL );
+  	    _queue[index]._data_rc      = PORT_READ(in_RESERVATION_STATION_IN_DATA_RC     );
+  	    _queue[index]._write_rd     = PORT_READ(in_RESERVATION_STATION_IN_WRITE_RD    );
+  	    _queue[index]._num_reg_rd   = PORT_READ(in_RESERVATION_STATION_IN_NUM_REG_RD  );
+  	    _queue[index]._write_re     = PORT_READ(in_RESERVATION_STATION_IN_WRITE_RE    );
+  	    _queue[index]._num_reg_re   = PORT_READ(in_RESERVATION_STATION_IN_NUM_REG_RE  );
+// 	    dump_queue();
+	  }
+
+	// ***** POP from reservation station
+
+	// scan in reverse order, because when we pop the queue there are an auto reorder
+	for (int32_t i=(static_cast<int32_t>(_queue_nb_elt))-1;i>=0; i--)
+	  {
+	    uint32_t index = (*_queue_control)[i];
+	    
+	    if ((    internal_RESERVATION_STATION_OUT_VAL [index]  == 1) and
+		(PORT_READ(in_RESERVATION_STATION_OUT_ACK [index]) == 1))
+	      {
+		log_printf(TRACE,Reservation_station,FUNCTION,"POP  [%d]",i);
+
+		_queue_control->erase (_queue_control->begin()+i);
+		_queue_control->push_back(index);
+		_queue_nb_elt --;
+
+		log_printf(TRACE,Reservation_station,FUNCTION," * index         : %d",index);
+// 		dump_queue();
+	      }
+	  }
+
+	// ***** Bypass
+	// Note : we can take this sequence code before the PUSH in the queue, because read_queue make the bypass !!!
+	
+	// scan all entry
+	for (uint32_t i=0; i<_queue_nb_elt; i++)
+	  {
+	    uint32_t index = (*_queue_control)[i];
+
+	    // ***** bypass - gpr_write
+	    for (uint32_t j=0; j<_param->_nb_gpr_write; j++)
+	      {
+		if ((PORT_READ(in_GPR_WRITE_VAL        [j]) == 1) and
+		    (PORT_READ(in_GPR_WRITE_CONTEXT_ID [j]) == _queue[index]._context_id))
+		  {
+		    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_ra)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			_queue[index]._data_ra_val = 1;
+			_queue[index]._data_ra     = PORT_READ(in_GPR_WRITE_DATA [j]);
+		      }
+		    if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rb)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE     [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			_queue[index]._data_rb_val = 1;
+			_queue[index]._data_rb     = PORT_READ(in_GPR_WRITE_DATA [j]);
+		      }
+		  }
+	      }
+	    // ***** bypass - spr_write
+	    for (uint32_t j=0; j<_param->_nb_spr_write; j++)
+	      {
+		if ((PORT_READ(in_SPR_WRITE_VAL        [j]) == 1)                         and
+		    (PORT_READ(in_SPR_WRITE_CONTEXT_ID [j]) == _queue[index]._context_id) and
+		    (PORT_READ(in_SPR_WRITE_NUM_REG    [j]) == _queue[index]._num_reg_rc))
+		  {
+		    log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE     [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
+		    _queue[index]._data_rc_val = 1;
+		    _queue[index]._data_rc     = PORT_READ(in_SPR_WRITE_DATA [j]);
+		  }
+	      }
+	    // ***** bypass - bypass_write
+	    for (uint32_t j=0; j<_param->_nb_bypass_write; j++)
+	      {
+		if (PORT_READ(in_BYPASS_WRITE_CONTEXT_ID [j]) == _queue[index]._context_id)
+		  {
+		    if (PORT_READ(in_BYPASS_WRITE_GPR_VAL    [j]) == 1)
+		      {
+		    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG[j]) == _queue[index]._num_reg_ra)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			_queue[index]._data_ra_val = 1;
+			_queue[index]._data_ra     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
+		      }
+		    if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG [j]) == _queue[index]._num_reg_rb)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			_queue[index]._data_rb_val = 1;
+			_queue[index]._data_rb     = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]);
+		      }
+		      }
+		    if ((PORT_READ(in_BYPASS_WRITE_SPR_VAL    [j]) == 1) and
+			(PORT_READ(in_BYPASS_WRITE_SPR_NUM_REG[j]) == _queue[index]._num_reg_rc))
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE  [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);
+			_queue[index]._data_rc_val = 1;
+			_queue[index]._data_rc     = PORT_READ(in_BYPASS_WRITE_SPR_DATA [j]);
+		      }
+		  }
+	      }
+	    // ***** bypass - bypass_memory
+	    for (uint32_t j=0; j<_param->_nb_bypass_memory; j++)
+	      {
+		if ((PORT_READ(in_BYPASS_MEMORY_VAL        [j]) == 1) and
+		    (PORT_READ(in_BYPASS_MEMORY_CONTEXT_ID [j]) == _queue[index]._context_id))
+		  {
+		    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_ra)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);
+			_queue[index]._data_ra_val = 1;
+			_queue[index]._data_ra     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
+		      }
+		    if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_rb)
+		      {
+			log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);
+			_queue[index]._data_rb_val = 1;
+			_queue[index]._data_rb     = PORT_READ(in_BYPASS_MEMORY_DATA [j]);
+		      }
+		  }
+	      }
+	  }
+      }
+
+#ifdef STATISTICS
+    _stat->add();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    vhdl_testbench_transition ();
+#endif
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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
+//#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl.cpp	(revision 55)
@@ -0,0 +1,52 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::vhdl"
+  void Reservation_station::vhdl (void)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    Vhdl * vhdl = new Vhdl (_name);
+
+    _interfaces->set_port(vhdl);
+    _component->vhdl_instance(vhdl);
+
+    vhdl_declaration (vhdl);
+    vhdl_body        (vhdl);
+
+    vhdl->generate_file();
+
+    delete vhdl;
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_body.cpp	(revision 55)
@@ -0,0 +1,39 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::vhdl_body"
+  void Reservation_station::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_declaration.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_declaration.cpp	(revision 55)
@@ -0,0 +1,38 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::vhdl_declaration"
+  void Reservation_station::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Reservation_station_vhdl_testbench_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_testbench_transition.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_vhdl_testbench_transition.cpp	(revision 55)
@@ -0,0 +1,44 @@
+#ifdef VHDL_TESTBENCH
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::vhdl_testbench_transition"
+  void Reservation_station::vhdl_testbench_transition ()
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    // Evaluation before read the ouput signal
+//     sc_start(0);
+
+    _interfaces->testbench();
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics.cpp	(revision 55)
@@ -0,0 +1,52 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::Statistics"
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
+			  ) :
+    morpheo::behavioural::Statistics(name                  ,
+				     parameters_statistics ),
+    _parameters(parameters)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::~Statistics"
+  Statistics::~Statistics () 
+  { 
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_add.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_add.cpp	(revision 55)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::add"
+  void Statistics::add ()
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Statistics_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_print.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_print.cpp	(revision 55)
@@ -0,0 +1,65 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::print"
+  string Statistics::print (uint32_t depth)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "<reservation_station name=\"" << _name << "\" >" << endl
+        << print_body(depth+1) << endl
+	<< tab << "</reservation_station>" << endl;
+    
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::operator<<"
+  ostream& operator<< (ostream& output_stream ,
+		       morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Statistics & x)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace reservation_station
+}; // 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/Reservation_station/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_print_body.cpp	(revision 55)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Statistics_print_body.cpp	(revision 55)
@@ -0,0 +1,49 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Statistics.h"
+
+#include <sstream>
+using namespace std;
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace multi_read_unit {
+namespace read_unit {
+namespace reservation_station {
+
+
+#undef  FUNCTION
+#define FUNCTION "Reservation_station::print_body"
+  string Statistics::print_body (uint32_t depth)
+  {
+    log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    string        tab = string(depth,'\t');
+    ostringstream msg;
+
+    msg << tab << "";
+    
+    log_printf(FUNC,Reservation_station,FUNCTION,"End");
+
+    return msg.str();
+  };
+
+}; // end namespace reservation_station
+}; // 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
