Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Constant/Constant_OpenRISC.h	(revision 55)
@@ -1,4 +1,3 @@
 #ifndef morpheo_behavioural_constant_Constant_h
-
 /*
  * $Id$
@@ -113,4 +112,3 @@
 }; // end namespace behavioural
 }; // end namespace morpheo              
-
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/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
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/include/Statistics.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/include/Statistics.h	(revision 55)
@@ -24,12 +24,12 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private  : const Parameters            _parameters;
+  private  : const Parameters          * _parameters;
   private  : Counters                 ** _counters;
 
 
     // -----[ methods ]---------------------------------------------------
-  public   : Statistics (string                                      name                       ,
-			 morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			 Parameters                                  parameters
+  public   : Statistics (string                                        name                       ,
+			 morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			 Parameters                                  * parameters
 			 );
 //public   : Statistics (Statistics & stat);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics.cpp	(revision 55)
@@ -14,7 +14,7 @@
 namespace group                      {
 
-  Statistics::Statistics (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
 			  ) :
     morpheo::behavioural::Statistics(name                  ,
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_add.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_add.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_add.cpp	(revision 55)
@@ -32,5 +32,5 @@
   void Statistics::add (uint32_t nb_use)
   {
-    test_if_save<Counters,Parameters>(_counters,_parameters);
+    test_if_save<Counters,Parameters>(_counters,*_parameters);
 
     if (_nb_statistics>0)
@@ -42,5 +42,5 @@
 	  _counters[i]->_nb_cycle_none_use   ++;
 	else 
-	  if (nb_use == _parameters._nb_elt)
+	  if (nb_use == _parameters->_nb_elt)
 	    _counters[i]->_nb_cycle_full_use   ++;
 	  else
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_print_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_print_body.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Group/src/Statistics_print_body.cpp	(revision 55)
@@ -44,5 +44,5 @@
 	                  << _counters[i]->_nb_use                                << "\" /> <!-- average : " 
 	                  << average(_counters[i]->_nb_use,                    nb_cycle)      << " - " 
-	                  << percent(_counters[i]->_nb_use,_parameters._nb_elt*nb_cycle)      << "% -->" << endl
+	                  << percent(_counters[i]->_nb_use,_parameters->_nb_elt*nb_cycle)      << "% -->" << endl
 	    << tab << "\t</cycle>" << endl;
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/configuration.cfg	(revision 55)
@@ -1,5 +1,6 @@
 RegisterFile_Monolithic
-2	8 	*2	# nb_port_read
-1	4	*2	# nb_port_write
-32	256	*2	# nb_word
+0	0 	*2	# nb_port_read
+0	0	*2	# nb_port_write
+1	8	*2	# nb_port_read_write
+32 	32 	*2	# nb_word
 32	32	*2	# size_word
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h	(revision 55)
@@ -24,5 +24,5 @@
 
 void test   (string name,
-	     morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param);
+	     morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param);
 
 class Time 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/mkf.info	(revision 55)
@@ -5,177 +5,17 @@
 target_dep	RegisterFile_Monolithic_0.prj	RegisterFile_Monolithic_0_Pack.vhdl RegisterFile_Monolithic_0.vhdl
 
-# RegisterFile_Monolithic_10
-target_dep	all	RegisterFile_Monolithic_10.ngc
-target_dep	RegisterFile_Monolithic_10.ngc	RegisterFile_Monolithic_10.prj
-target_dep	RegisterFile_Monolithic_10.prj	RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl
-
-# RegisterFile_Monolithic_11
-target_dep	all	RegisterFile_Monolithic_11.ngc
-target_dep	RegisterFile_Monolithic_11.ngc	RegisterFile_Monolithic_11.prj
-target_dep	RegisterFile_Monolithic_11.prj	RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl
-
-# RegisterFile_Monolithic_12
-target_dep	all	RegisterFile_Monolithic_12.ngc
-target_dep	RegisterFile_Monolithic_12.ngc	RegisterFile_Monolithic_12.prj
-target_dep	RegisterFile_Monolithic_12.prj	RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl
-
-# RegisterFile_Monolithic_13
-target_dep	all	RegisterFile_Monolithic_13.ngc
-target_dep	RegisterFile_Monolithic_13.ngc	RegisterFile_Monolithic_13.prj
-target_dep	RegisterFile_Monolithic_13.prj	RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl
-
-# RegisterFile_Monolithic_14
-target_dep	all	RegisterFile_Monolithic_14.ngc
-target_dep	RegisterFile_Monolithic_14.ngc	RegisterFile_Monolithic_14.prj
-target_dep	RegisterFile_Monolithic_14.prj	RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl
-
-# RegisterFile_Monolithic_15
-target_dep	all	RegisterFile_Monolithic_15.ngc
-target_dep	RegisterFile_Monolithic_15.ngc	RegisterFile_Monolithic_15.prj
-target_dep	RegisterFile_Monolithic_15.prj	RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl
-
-# RegisterFile_Monolithic_16
-target_dep	all	RegisterFile_Monolithic_16.ngc
-target_dep	RegisterFile_Monolithic_16.ngc	RegisterFile_Monolithic_16.prj
-target_dep	RegisterFile_Monolithic_16.prj	RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl
-
-# RegisterFile_Monolithic_17
-target_dep	all	RegisterFile_Monolithic_17.ngc
-target_dep	RegisterFile_Monolithic_17.ngc	RegisterFile_Monolithic_17.prj
-target_dep	RegisterFile_Monolithic_17.prj	RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl
-
-# RegisterFile_Monolithic_18
-target_dep	all	RegisterFile_Monolithic_18.ngc
-target_dep	RegisterFile_Monolithic_18.ngc	RegisterFile_Monolithic_18.prj
-target_dep	RegisterFile_Monolithic_18.prj	RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl
-
-# RegisterFile_Monolithic_19
-target_dep	all	RegisterFile_Monolithic_19.ngc
-target_dep	RegisterFile_Monolithic_19.ngc	RegisterFile_Monolithic_19.prj
-target_dep	RegisterFile_Monolithic_19.prj	RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl
-
 # RegisterFile_Monolithic_1
 target_dep	all	RegisterFile_Monolithic_1.ngc
 target_dep	RegisterFile_Monolithic_1.ngc	RegisterFile_Monolithic_1.prj
-target_dep	RegisterFile_Monolithic_1.prj	RegisterFile_Monolithic_10_Pack.vhdl RegisterFile_Monolithic_10.vhdl RegisterFile_Monolithic_11_Pack.vhdl RegisterFile_Monolithic_11.vhdl RegisterFile_Monolithic_12_Pack.vhdl RegisterFile_Monolithic_12.vhdl RegisterFile_Monolithic_13_Pack.vhdl RegisterFile_Monolithic_13.vhdl RegisterFile_Monolithic_14_Pack.vhdl RegisterFile_Monolithic_14.vhdl RegisterFile_Monolithic_15_Pack.vhdl RegisterFile_Monolithic_15.vhdl RegisterFile_Monolithic_16_Pack.vhdl RegisterFile_Monolithic_16.vhdl RegisterFile_Monolithic_17_Pack.vhdl RegisterFile_Monolithic_17.vhdl RegisterFile_Monolithic_18_Pack.vhdl RegisterFile_Monolithic_18.vhdl RegisterFile_Monolithic_19_Pack.vhdl RegisterFile_Monolithic_19.vhdl RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
-
-# RegisterFile_Monolithic_20
-target_dep	all	RegisterFile_Monolithic_20.ngc
-target_dep	RegisterFile_Monolithic_20.ngc	RegisterFile_Monolithic_20.prj
-target_dep	RegisterFile_Monolithic_20.prj	RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl
-
-# RegisterFile_Monolithic_21
-target_dep	all	RegisterFile_Monolithic_21.ngc
-target_dep	RegisterFile_Monolithic_21.ngc	RegisterFile_Monolithic_21.prj
-target_dep	RegisterFile_Monolithic_21.prj	RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl
-
-# RegisterFile_Monolithic_22
-target_dep	all	RegisterFile_Monolithic_22.ngc
-target_dep	RegisterFile_Monolithic_22.ngc	RegisterFile_Monolithic_22.prj
-target_dep	RegisterFile_Monolithic_22.prj	RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl
-
-# RegisterFile_Monolithic_23
-target_dep	all	RegisterFile_Monolithic_23.ngc
-target_dep	RegisterFile_Monolithic_23.ngc	RegisterFile_Monolithic_23.prj
-target_dep	RegisterFile_Monolithic_23.prj	RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl
-
-# RegisterFile_Monolithic_24
-target_dep	all	RegisterFile_Monolithic_24.ngc
-target_dep	RegisterFile_Monolithic_24.ngc	RegisterFile_Monolithic_24.prj
-target_dep	RegisterFile_Monolithic_24.prj	RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl
-
-# RegisterFile_Monolithic_25
-target_dep	all	RegisterFile_Monolithic_25.ngc
-target_dep	RegisterFile_Monolithic_25.ngc	RegisterFile_Monolithic_25.prj
-target_dep	RegisterFile_Monolithic_25.prj	RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl
-
-# RegisterFile_Monolithic_26
-target_dep	all	RegisterFile_Monolithic_26.ngc
-target_dep	RegisterFile_Monolithic_26.ngc	RegisterFile_Monolithic_26.prj
-target_dep	RegisterFile_Monolithic_26.prj	RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl
-
-# RegisterFile_Monolithic_27
-target_dep	all	RegisterFile_Monolithic_27.ngc
-target_dep	RegisterFile_Monolithic_27.ngc	RegisterFile_Monolithic_27.prj
-target_dep	RegisterFile_Monolithic_27.prj	RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl
-
-# RegisterFile_Monolithic_28
-target_dep	all	RegisterFile_Monolithic_28.ngc
-target_dep	RegisterFile_Monolithic_28.ngc	RegisterFile_Monolithic_28.prj
-target_dep	RegisterFile_Monolithic_28.prj	RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl
-
-# RegisterFile_Monolithic_29
-target_dep	all	RegisterFile_Monolithic_29.ngc
-target_dep	RegisterFile_Monolithic_29.ngc	RegisterFile_Monolithic_29.prj
-target_dep	RegisterFile_Monolithic_29.prj	RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl
+target_dep	RegisterFile_Monolithic_1.prj	RegisterFile_Monolithic_1_Pack.vhdl RegisterFile_Monolithic_1.vhdl
 
 # RegisterFile_Monolithic_2
 target_dep	all	RegisterFile_Monolithic_2.ngc
 target_dep	RegisterFile_Monolithic_2.ngc	RegisterFile_Monolithic_2.prj
-target_dep	RegisterFile_Monolithic_2.prj	RegisterFile_Monolithic_20_Pack.vhdl RegisterFile_Monolithic_20.vhdl RegisterFile_Monolithic_21_Pack.vhdl RegisterFile_Monolithic_21.vhdl RegisterFile_Monolithic_22_Pack.vhdl RegisterFile_Monolithic_22.vhdl RegisterFile_Monolithic_23_Pack.vhdl RegisterFile_Monolithic_23.vhdl RegisterFile_Monolithic_24_Pack.vhdl RegisterFile_Monolithic_24.vhdl RegisterFile_Monolithic_25_Pack.vhdl RegisterFile_Monolithic_25.vhdl RegisterFile_Monolithic_26_Pack.vhdl RegisterFile_Monolithic_26.vhdl RegisterFile_Monolithic_27_Pack.vhdl RegisterFile_Monolithic_27.vhdl RegisterFile_Monolithic_28_Pack.vhdl RegisterFile_Monolithic_28.vhdl RegisterFile_Monolithic_29_Pack.vhdl RegisterFile_Monolithic_29.vhdl RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
-
-# RegisterFile_Monolithic_30
-target_dep	all	RegisterFile_Monolithic_30.ngc
-target_dep	RegisterFile_Monolithic_30.ngc	RegisterFile_Monolithic_30.prj
-target_dep	RegisterFile_Monolithic_30.prj	RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl
-
-# RegisterFile_Monolithic_31
-target_dep	all	RegisterFile_Monolithic_31.ngc
-target_dep	RegisterFile_Monolithic_31.ngc	RegisterFile_Monolithic_31.prj
-target_dep	RegisterFile_Monolithic_31.prj	RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl
-
-# RegisterFile_Monolithic_32
-target_dep	all	RegisterFile_Monolithic_32.ngc
-target_dep	RegisterFile_Monolithic_32.ngc	RegisterFile_Monolithic_32.prj
-target_dep	RegisterFile_Monolithic_32.prj	RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl
-
-# RegisterFile_Monolithic_33
-target_dep	all	RegisterFile_Monolithic_33.ngc
-target_dep	RegisterFile_Monolithic_33.ngc	RegisterFile_Monolithic_33.prj
-target_dep	RegisterFile_Monolithic_33.prj	RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl
-
-# RegisterFile_Monolithic_34
-target_dep	all	RegisterFile_Monolithic_34.ngc
-target_dep	RegisterFile_Monolithic_34.ngc	RegisterFile_Monolithic_34.prj
-target_dep	RegisterFile_Monolithic_34.prj	RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl
-
-# RegisterFile_Monolithic_35
-target_dep	all	RegisterFile_Monolithic_35.ngc
-target_dep	RegisterFile_Monolithic_35.ngc	RegisterFile_Monolithic_35.prj
-target_dep	RegisterFile_Monolithic_35.prj	RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl
+target_dep	RegisterFile_Monolithic_2.prj	RegisterFile_Monolithic_2_Pack.vhdl RegisterFile_Monolithic_2.vhdl
 
 # RegisterFile_Monolithic_3
 target_dep	all	RegisterFile_Monolithic_3.ngc
 target_dep	RegisterFile_Monolithic_3.ngc	RegisterFile_Monolithic_3.prj
-target_dep	RegisterFile_Monolithic_3.prj	RegisterFile_Monolithic_30_Pack.vhdl RegisterFile_Monolithic_30.vhdl RegisterFile_Monolithic_31_Pack.vhdl RegisterFile_Monolithic_31.vhdl RegisterFile_Monolithic_32_Pack.vhdl RegisterFile_Monolithic_32.vhdl RegisterFile_Monolithic_33_Pack.vhdl RegisterFile_Monolithic_33.vhdl RegisterFile_Monolithic_34_Pack.vhdl RegisterFile_Monolithic_34.vhdl RegisterFile_Monolithic_35_Pack.vhdl RegisterFile_Monolithic_35.vhdl RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
+target_dep	RegisterFile_Monolithic_3.prj	RegisterFile_Monolithic_3_Pack.vhdl RegisterFile_Monolithic_3.vhdl
 
-# RegisterFile_Monolithic_4
-target_dep	all	RegisterFile_Monolithic_4.ngc
-target_dep	RegisterFile_Monolithic_4.ngc	RegisterFile_Monolithic_4.prj
-target_dep	RegisterFile_Monolithic_4.prj	RegisterFile_Monolithic_4_Pack.vhdl RegisterFile_Monolithic_4.vhdl
-
-# RegisterFile_Monolithic_5
-target_dep	all	RegisterFile_Monolithic_5.ngc
-target_dep	RegisterFile_Monolithic_5.ngc	RegisterFile_Monolithic_5.prj
-target_dep	RegisterFile_Monolithic_5.prj	RegisterFile_Monolithic_5_Pack.vhdl RegisterFile_Monolithic_5.vhdl
-
-# RegisterFile_Monolithic_6
-target_dep	all	RegisterFile_Monolithic_6.ngc
-target_dep	RegisterFile_Monolithic_6.ngc	RegisterFile_Monolithic_6.prj
-target_dep	RegisterFile_Monolithic_6.prj	RegisterFile_Monolithic_6_Pack.vhdl RegisterFile_Monolithic_6.vhdl
-
-# RegisterFile_Monolithic_7
-target_dep	all	RegisterFile_Monolithic_7.ngc
-target_dep	RegisterFile_Monolithic_7.ngc	RegisterFile_Monolithic_7.prj
-target_dep	RegisterFile_Monolithic_7.prj	RegisterFile_Monolithic_7_Pack.vhdl RegisterFile_Monolithic_7.vhdl
-
-# RegisterFile_Monolithic_8
-target_dep	all	RegisterFile_Monolithic_8.ngc
-target_dep	RegisterFile_Monolithic_8.ngc	RegisterFile_Monolithic_8.prj
-target_dep	RegisterFile_Monolithic_8.prj	RegisterFile_Monolithic_8_Pack.vhdl RegisterFile_Monolithic_8.vhdl
-
-# RegisterFile_Monolithic_9
-target_dep	all	RegisterFile_Monolithic_9.ngc
-target_dep	RegisterFile_Monolithic_9.ngc	RegisterFile_Monolithic_9.prj
-target_dep	RegisterFile_Monolithic_9.prj	RegisterFile_Monolithic_9_Pack.vhdl RegisterFile_Monolithic_9.vhdl
-
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/main.cpp	(revision 55)
@@ -8,5 +8,5 @@
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
 
-#define NB_PARAMS 4
+#define NB_PARAMS 5
 
 void usage (string exec)
@@ -14,8 +14,9 @@
   cerr << "<Usage> " << exec << " name_instance list_params" << endl
        << "list_params is :" << endl
-       << " - nb_port_read  (unsigned int)" << endl
-       << " - nb_port_write (unsigned int)" << endl
-       << " - nb_word       (unsigned int)" << endl
-       << " - size_word     (unsigned int)" << endl;
+       << " - nb_port_read       (unsigned int)" << endl
+       << " - nb_port_write      (unsigned int)" << endl
+       << " - nb_port_read_write (unsigned int)" << endl
+       << " - nb_word            (unsigned int)" << endl
+       << " - size_word          (unsigned int)" << endl;
   exit (1);
 }
@@ -30,15 +31,18 @@
     usage (argv[0]);
 
-  const string   name          = argv[1];
-  const uint32_t nb_port_read  = atoi(argv[2]);
-  const uint32_t nb_port_write = atoi(argv[3]);
-  const uint32_t nb_word       = atoi(argv[4]);
-  const uint32_t size_word     = atoi(argv[5]);
+  const string   name               = argv[1];
+  const uint32_t nb_port_read       = atoi(argv[2]);
+  const uint32_t nb_port_write      = atoi(argv[3]);
+  const uint32_t nb_port_read_write = atoi(argv[4]);
+  const uint32_t nb_word            = atoi(argv[5]);
+  const uint32_t size_word          = atoi(argv[6]);
   
-  morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param (nb_port_read ,
-											  nb_port_write,
-								 nb_word      ,
-								 size_word    );
-
+  morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param = new morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters
+    (nb_port_read ,
+     nb_port_write,
+     nb_port_read_write,
+     nb_word      ,
+     size_word    );
+  
   test (name,param);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/src/test.cpp	(revision 55)
@@ -7,5 +7,5 @@
  */
 
-#define NB_ITERATION 32
+#define NB_ITERATION 2
 
 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/SelfTest/include/test.h"
@@ -13,5 +13,5 @@
 
 void test (string name,
-	   morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param)
+	   morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * _param)
 {
   cout << "<" << name << "> : Simulation SystemC" << endl;
@@ -19,6 +19,6 @@
   try 
     {
-      cout << param.print(1);
-      param.test();
+      cout << _param->print(1);
+      _param->test();
     }
   catch (morpheo::ErrorMorpheo & error)
@@ -33,9 +33,12 @@
     }
 
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _param_stat = new morpheo::behavioural::Parameters_Statistics (5,1000);
+#endif
   RegisterFile_Monolithic * registerfile = new RegisterFile_Monolithic (name.c_str()
 #ifdef STATISTICS
-									,morpheo::behavioural::Parameters_Statistics(5,1000)
+									,_param_stat
 #endif
-									,param);
+									,_param);
   
 #ifdef SYSTEMC
@@ -46,13 +49,20 @@
   sc_signal<Tcontrol_t>                    NRESET;
   
-  sc_signal<Tcontrol_t>                    READ_VAL      [param._nb_port_read];
-  sc_signal<Tcontrol_t>                    READ_ACK      [param._nb_port_read];
-  sc_signal<Taddress_t>                    READ_ADDRESS  [param._nb_port_read];
-  sc_signal<Tdata_t>                       READ_DATA     [param._nb_port_read];
-
-  sc_signal<Tcontrol_t>                    WRITE_VAL     [param._nb_port_write];
-  sc_signal<Tcontrol_t>                    WRITE_ACK     [param._nb_port_write];
-  sc_signal<Taddress_t>                    WRITE_ADDRESS [param._nb_port_write];
-  sc_signal<Tdata_t>                       WRITE_DATA    [param._nb_port_write];
+  sc_signal<Tcontrol_t>                    READ_VAL      [_param->_nb_port_read];
+  sc_signal<Tcontrol_t>                    READ_ACK      [_param->_nb_port_read];
+  sc_signal<Taddress_t>                    READ_ADDRESS  [_param->_nb_port_read];
+  sc_signal<Tdata_t>                       READ_DATA     [_param->_nb_port_read];
+
+  sc_signal<Tcontrol_t>                    WRITE_VAL     [_param->_nb_port_write];
+  sc_signal<Tcontrol_t>                    WRITE_ACK     [_param->_nb_port_write];
+  sc_signal<Taddress_t>                    WRITE_ADDRESS [_param->_nb_port_write];
+  sc_signal<Tdata_t>                       WRITE_DATA    [_param->_nb_port_write];
+
+  sc_signal<Tcontrol_t>                    READ_WRITE_VAL     [_param->_nb_port_read_write];
+  sc_signal<Tcontrol_t>                    READ_WRITE_ACK     [_param->_nb_port_read_write];
+  sc_signal<Tcontrol_t>                    READ_WRITE_RW      [_param->_nb_port_read_write];
+  sc_signal<Taddress_t>                    READ_WRITE_ADDRESS [_param->_nb_port_read_write];
+  sc_signal<Tdata_t>                       READ_WRITE_RDATA   [_param->_nb_port_read_write];
+  sc_signal<Tdata_t>                       READ_WRITE_WDATA   [_param->_nb_port_read_write];
 
   /********************************************************
@@ -65,5 +75,5 @@
   (*(registerfile->in_NRESET))       (NRESET);
 
-  for (uint32_t i=0; i<param._nb_port_read; i++)
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
     {
       (*(registerfile-> in_READ_VAL      [i]))        (READ_VAL      [i]);
@@ -72,6 +82,5 @@
       (*(registerfile->out_READ_DATA     [i]))        (READ_DATA     [i]);
     }
-
-  for (uint32_t i=0; i<param._nb_port_write; i++)
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
     {
       (*(registerfile-> in_WRITE_VAL     [i]))        (WRITE_VAL     [i]);
@@ -80,4 +89,13 @@
       (*(registerfile-> in_WRITE_DATA    [i]))        (WRITE_DATA    [i]);
     }
+  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+    {
+      (*(registerfile-> in_READ_WRITE_VAL     [i])) (READ_WRITE_VAL      [i]);
+      (*(registerfile->out_READ_WRITE_ACK     [i])) (READ_WRITE_ACK      [i]);
+      (*(registerfile-> in_READ_WRITE_RW      [i])) (READ_WRITE_RW       [i]);
+      (*(registerfile-> in_READ_WRITE_ADDRESS [i])) (READ_WRITE_ADDRESS  [i]);
+      (*(registerfile-> in_READ_WRITE_WDATA   [i])) (READ_WRITE_WDATA    [i]);
+      (*(registerfile->out_READ_WRITE_RDATA   [i])) (READ_WRITE_RDATA    [i]);
+    }
   
   cout << "<" << name << "> Start Simulation ............" << endl;
@@ -92,9 +110,10 @@
   sc_start(0);
   
-  for (uint32_t i=0; i<param._nb_port_write; i++)
+  for (uint32_t i=0; i<_param->_nb_port_write; i++)
     WRITE_VAL [i] .write (0);
-
-  for (uint32_t i=0; i<param._nb_port_read; i++)
+  for (uint32_t i=0; i<_param->_nb_port_read; i++)
     READ_VAL  [i] .write (0);
+  for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+    READ_WRITE_VAL  [i] .write (0);
 
   NRESET.write(0);
@@ -115,19 +134,19 @@
       srand(grain);
 
-      Tdata_t tab [param._nb_word];
-      
-      for (uint32_t i=0; i<param._nb_word; i++)
-	tab[i]= rand()%(1<<(param._size_word-1));
+      Tdata_t tab [_param->_nb_word];
+      
+      for (uint32_t i=0; i<_param->_nb_word; i++)
+	tab[i]= rand()%(1<<(_param->_size_word-1));
       
       Taddress_t address_next = 0;
       Taddress_t nb_ack = 0;
       
-      while (nb_ack < param._nb_word)
+      while (nb_ack < _param->_nb_word)
 	{
 	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
 
-	  for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
-	    {
-	      if ((address_next < param._nb_word) and
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
+	    {
+	      if ((address_next < _param->_nb_word) and
 		  (WRITE_VAL [num_port].read() == 0))
 		{
@@ -139,5 +158,23 @@
 		  
 		  // Address can be not a multiple of nb_port_write
-		  if (address_next >= param._nb_word)
+		  if (address_next >= _param->_nb_word)
+		    break;
+		}
+	    }
+
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
+	    {
+	      if ((address_next < _param->_nb_word) and
+		  (READ_WRITE_VAL [num_port].read() == 0))
+		{
+		  cout << "(" << num_port << ") [" << address_next << "] <= " << tab[address_next] << endl;
+		  
+		  READ_WRITE_VAL     [num_port] .write(1);
+		  READ_WRITE_RW      [num_port] .write(RW_WRITE);
+		  READ_WRITE_WDATA   [num_port] .write(tab[address_next]);
+		  READ_WRITE_ADDRESS [num_port] .write(address_next++);
+		  
+		  // Address can be not a multiple of nb_port_write
+		  if (address_next >= _param->_nb_word)
 		    break;
 		}
@@ -147,5 +184,5 @@
 
 	  // reset write_val port
-	  for (uint32_t num_port=0; num_port < param._nb_port_write; num_port ++)
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_write; num_port ++)
 	    {
 	      if ((WRITE_ACK [num_port].read() == 1) and
@@ -156,4 +193,14 @@
 		}
 	    }
+	  // reset write_val port
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
+	    {
+	      if ((READ_WRITE_ACK [num_port].read() == 1) and
+		  (READ_WRITE_VAL [num_port].read() == 1))
+		{
+		  READ_WRITE_VAL  [num_port] .write(0);
+		  nb_ack ++;
+		}
+	    }
 
 	  sc_start(0);
@@ -165,13 +212,14 @@
       cout << "<" << name << "> 2) Read the RegisterFile (no write)" << endl;
       
-      Tdata_t read_address [param._nb_port_read];
-
-      while (nb_ack < param._nb_word)
+      Tdata_t read_address       [_param->_nb_port_read];
+      Tdata_t read_write_address [_param->_nb_port_read_write];
+
+      while (nb_ack < _param->_nb_word)
 	{
 	  cout << "cycle : " << static_cast<uint32_t> (sc_simulation_time()) << endl;
 	  
-	  for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
-	    {
-	      if ((address_next < param._nb_word) and
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
+	    {
+	      if ((address_next < _param->_nb_word) and
 		  (READ_VAL [num_port].read() == 0))
 		{
@@ -181,13 +229,30 @@
 		  READ_ADDRESS [num_port].write(read_address [num_port]);
 
-		  if (address_next >= param._nb_word)
-		    break;
-		}
-	    }
+		  if (address_next >= _param->_nb_word)
+		    break;
+		}
+	    }
+
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
+	    {
+	      if ((address_next < _param->_nb_word) and
+		  (READ_WRITE_VAL [num_port].read() == 0))
+		{
+		  read_write_address [num_port] = address_next++;
+
+		  READ_WRITE_VAL     [num_port].write(1);
+		  READ_WRITE_RW      [num_port].write(RW_READ);
+		  READ_WRITE_ADDRESS [num_port].write(read_write_address [num_port]);
+
+		  if (address_next >= _param->_nb_word)
+		    break;
+		}
+	    }
+
 
 	  sc_start(1);
 
 	  // reset write_val port
-	  for (uint32_t num_port=0; num_port < param._nb_port_read; num_port ++)
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read; num_port ++)
 	    {
 	      if ((READ_ACK [num_port].read() == 1) and
@@ -199,4 +264,18 @@
 
 		  TEST(Tdata_t,READ_DATA [num_port].read(), tab[read_address [num_port]]);
+		  nb_ack ++;
+		}
+	    }
+
+	  for (uint32_t num_port=0; num_port < _param->_nb_port_read_write; num_port ++)
+	    {
+	      if ((READ_WRITE_ACK [num_port].read() == 1) and
+		  (READ_WRITE_VAL [num_port].read() == 1))
+		{
+		  READ_WRITE_VAL  [num_port] .write(0);
+
+		  cout << "(" << num_port << ") [" << read_write_address [num_port] << "] => " << READ_WRITE_RDATA [num_port].read() << endl;
+
+		  TEST(Tdata_t,READ_WRITE_RDATA [num_port].read(), tab[read_write_address [num_port]]);
 		  nb_ack ++;
 		}
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Parameters.h	(revision 55)
@@ -23,4 +23,5 @@
   public : const uint32_t _nb_port_read ;
   public : const uint32_t _nb_port_write;
+  public : const uint32_t _nb_port_read_write;
   public : const uint32_t _nb_word      ;
   public : const uint32_t _size_word    ;
@@ -29,4 +30,5 @@
   public : Parameters (uint32_t nb_port_read ,
 		       uint32_t nb_port_write,
+		       uint32_t nb_port_read_write,
 		       uint32_t nb_word      ,
 		       uint32_t size_word    );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h	(revision 55)
@@ -36,4 +36,6 @@
 namespace registerfile_monolithic    {
 
+  typedef enum {RW_READ, RW_WRITE} rw_t;
+
   class RegisterFile_Monolithic 
 #if SYSTEMC
@@ -43,7 +45,7 @@
     // -----[ fields ]----------------------------------------------------
     // Parameters
-  protected : const string     _name;
+  protected : const string       _name;
 
-  protected : const Parameters _param;
+  protected : const Parameters * _param;
 #ifdef STATISTICS
   private   : Statistics                     * _stat;
@@ -74,4 +76,12 @@
   public    : SC_IN       (Tdata_t)        **  in_WRITE_DATA   ;
 
+    // ----- Interface Read_Write
+  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_VAL    ;
+  public    : SC_OUT      (Tcontrol_t)     ** out_READ_WRITE_ACK    ;
+  public    : SC_IN       (Tcontrol_t)     **  in_READ_WRITE_RW     ;
+  public    : SC_IN       (Taddress_t)     **  in_READ_WRITE_ADDRESS;
+  public    : SC_OUT      (Tdata_t)        ** out_READ_WRITE_RDATA  ;
+  public    : SC_IN       (Tdata_t)        **  in_READ_WRITE_WDATA  ;
+
     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
   private   : SC_REGISTER (Tdata_t)        ** reg_DATA         ;
@@ -93,9 +103,7 @@
 #endif					       
 #ifdef STATISTICS
-						morpheo::behavioural::Parameters_Statistics param_statistics,
+						morpheo::behavioural::Parameters_Statistics * param_statistics,
 #endif
-					        Parameters                                  param );
-					       
-  public  :          RegisterFile_Monolithic   (Parameters param );
+					        Parameters                                  * param );
   public  :          ~RegisterFile_Monolithic  (void);
 					       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/Statistics.h	(revision 55)
@@ -27,5 +27,7 @@
   {
     // -----[ fields ]----------------------------------------------------
-  private  : const Parameters                                   _parameters;
+  private  : const Parameters                                 * _parameters;
+  private  : morpheo::behavioural::generic::group::Parameters * _param_port_read;
+  private  : morpheo::behavioural::generic::group::Parameters * _param_port_write;
   private  : morpheo::behavioural::generic::group::Statistics * _stat_port_read;
   private  : morpheo::behavioural::generic::group::Statistics * _stat_port_write;
@@ -33,6 +35,6 @@
     // -----[ methods ]---------------------------------------------------
   public   : Statistics (string                                      name                       ,
-			 morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			 Parameters                                  parameters
+			 morpheo::behavioural::Parameters_Statistics * parameters_statistics    ,
+			 Parameters                                  * parameters
 			 );
 //public   : Statistics (Statistics & stat);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters.cpp	(revision 55)
@@ -16,4 +16,5 @@
   Parameters::Parameters (uint32_t nb_port_read ,
 			  uint32_t nb_port_write,
+			  uint32_t nb_port_read_write ,
 			  uint32_t nb_word      ,
 			  uint32_t size_word     
@@ -21,4 +22,5 @@
     _nb_port_read      (nb_port_read ),
     _nb_port_write     (nb_port_write),
+    _nb_port_read_write(nb_port_read_write),
     _nb_word           (nb_word      ),
     _size_word         (size_word    ),
@@ -31,4 +33,5 @@
     _nb_port_read      (param._nb_port_read ),
     _nb_port_write     (param._nb_port_write),
+    _nb_port_read_write(param._nb_port_read_write),
     _nb_word           (param._nb_word      ),
     _size_word         (param._size_word    ),
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_msg_error.cpp	(revision 55)
@@ -25,6 +25,6 @@
       {
         msg += "  - type \"Tdata_t\" is too little to the size defined by size_word\n";
-        msg +=  "    * size_word                       : " + toString(_size_word) + "\n";
-	msg +=  "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
+        msg += "    * size_word                       : " + toString(_size_word) + "\n";
+	msg += "    * Tdata_t                   (bits): " + toString(8*(sizeof(Tdata_t))) + "\n";
       }
 
@@ -32,9 +32,22 @@
       {
         msg += "  - type \"Taddress_t\" is too little to the size defined by nb_word\n";
-        msg +=  "    * nb_word                         : " + toString(_nb_word)    + "\n";
-	msg +=  "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
-	msg +=  "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
+        msg += "    * nb_word                         : " + toString(_nb_word)    + "\n";
+	msg += "      > size                   (bits) : " + toString(log2(_nb_word)) + "\n";
+	msg += "    * Taddress_t               (bits) : " + toString(8*(sizeof(Taddress_t))) + "\n";
       }
 
+    if ((_nb_port_read + _nb_port_read_write) < 1)
+      {
+        msg += "  - you need a read port\n";
+        msg += "    * nb_port_read                    : " + toString(_nb_port_read)       + "\n";
+        msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
+      }
+
+    if ((_nb_port_write + _nb_port_read_write) < 1)
+      {
+        msg += "  - you need a write port\n";
+        msg += "    * nb_port_write                   : " + toString(_nb_port_write)      + "\n";
+        msg += "    * nb_port_read_write              : " + toString(_nb_port_read_write) + "\n";
+      }
     if (_nb_word < 2)
       {
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Parameters_print.cpp	(revision 55)
@@ -22,8 +22,9 @@
     ostringstream msg;
     msg << tab << "<registerfile_monolithic>" << endl
-	<< tab << "\t<nb_port_read  value=\"" << _nb_port_read  << "\" />" << endl
-	<< tab << "\t<nb_port_write value=\"" << _nb_port_write << "\" />" << endl
-	<< tab << "\t<nb_word       value=\"" << _nb_word       << "\" />" << endl
-	<< tab << "\t<size_word     value=\"" << _size_word     << "\" />" << endl
+	<< tab << "\t<nb_port_read       value=\"" << _nb_port_read       << "\" />" << endl
+	<< tab << "\t<nb_port_write      value=\"" << _nb_port_write      << "\" />" << endl
+	<< tab << "\t<nb_port_read_write value=\"" << _nb_port_read_write << "\" />" << endl
+	<< tab << "\t<nb_word            value=\"" << _nb_word            << "\" />" << endl
+	<< tab << "\t<size_word          value=\"" << _size_word          << "\" />" << endl
 	<< tab << "</registerfile_monolithic>" << endl;
     
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic.cpp	(revision 55)
@@ -21,7 +21,7 @@
 #endif
 #ifdef STATISTICS
-						    morpheo::behavioural::Parameters_Statistics             param_statistics,
+						    morpheo::behavioural::Parameters_Statistics            * param_statistics,
 #endif
-						    morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters param ):
+						    morpheo::behavioural::generic::registerfile::registerfile_monolithic::Parameters * param ):
     _name   (name),
     _param (param)
@@ -54,21 +54,33 @@
     dont_initialize ();
     sensitive_neg << *(in_CLOCK);
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
       sensitive << *(in_READ_VAL     [i])
 		<< *(in_READ_ADDRESS [i]);
+    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+      sensitive << *(in_READ_WRITE_VAL     [i])
+		<< *(in_READ_WRITE_RW      [i])
+		<< *(in_READ_WRITE_ADDRESS [i]);
 
 #ifdef SYSTEMCASS_SPECIFIC
     // List dependency information
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
       {
-	(*(out_READ_DATA [i])) (*( in_READ_VAL     [i]));
-	(*(out_READ_DATA [i])) (*( in_READ_ADDRESS [i]));
+	(*(out_READ_DATA  [i])) (*( in_READ_VAL     [i]));
+	(*(out_READ_DATA  [i])) (*( in_READ_ADDRESS [i]));
+      }
+    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+      {  
+	(*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_VAL     [i]));
+	(*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_RW      [i]));
+	(*(out_READ_WRITE_RDATA [i])) (*( in_READ_WRITE_ADDRESS [i]));
       }
 #endif    
 
-    for (uint32_t i=0; i<_param._nb_port_read ; i++)
-      PORT_WRITE(out_READ_ACK  [i], 1);
-    for (uint32_t i=0; i<_param._nb_port_write; i++)
-      PORT_WRITE(out_WRITE_ACK [i], 1);
+    for (uint32_t i=0; i<_param->_nb_port_read       ; i++)
+      PORT_WRITE(out_READ_ACK        [i], 1);
+    for (uint32_t i=0; i<_param->_nb_port_write      ; i++)
+      PORT_WRITE(out_WRITE_ACK       [i], 1);
+    for (uint32_t i=0; i<_param->_nb_port_read_write ; i++)
+      PORT_WRITE(out_READ_WRITE_ACK  [i], 1);
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp	(revision 55)
@@ -43,10 +43,10 @@
     // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param._nb_port_read];
-    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param._nb_port_read];
-     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param._nb_port_read];
-    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param._nb_port_read];
+     in_READ_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read];
+    out_READ_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read];
+     in_READ_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read];
+    out_READ_DATA        = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read];
 
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
       { 
 	Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i)
@@ -60,16 +60,16 @@
 	 in_READ_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
 	out_READ_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
-	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
-	out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param._size_word);
+	 in_READ_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
+	out_READ_DATA    [i]  = interface->set_signal_out <Tdata_t   > ("data"   , _param->_size_word);
       }
 
     // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
-     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param._nb_port_write];
-    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param._nb_port_write];
-     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param._nb_port_write];
-     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param._nb_port_write];
+     in_WRITE_VAL        = new SC_IN (Tcontrol_t) * [_param->_nb_port_write];
+    out_WRITE_ACK        = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write];
+     in_WRITE_ADDRESS    = new SC_IN (Taddress_t) * [_param->_nb_port_write];
+     in_WRITE_DATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_write];
     
-    for (uint32_t i=0; i<_param._nb_port_write; i++)
+    for (uint32_t i=0; i<_param->_nb_port_write; i++)
       {
 	Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i)
@@ -83,12 +83,39 @@
 	 in_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
 	out_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
-	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param._size_address);
-	 in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param._size_word);
+	 in_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
+	 in_WRITE_DATA    [i]  = interface->set_signal_in  <Tdata_t   > ("data"   , _param->_size_word);
+      }
+
+    // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+     in_READ_WRITE_VAL         = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
+    out_READ_WRITE_ACK         = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write];
+     in_READ_WRITE_RW          = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write];
+     in_READ_WRITE_ADDRESS     = new SC_IN (Taddress_t) * [_param->_nb_port_read_write];
+     in_READ_WRITE_WDATA       = new SC_IN (Tdata_t   ) * [_param->_nb_port_read_write];
+    out_READ_WRITE_RDATA       = new SC_OUT(Tdata_t   ) * [_param->_nb_port_read_write];
+
+    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+      { 
+	Interface_fifo * interface = _interfaces->set_interface("read_write_"+toString(i)
+#ifdef POSITION
+								, IN  
+								,WEST
+								, "Interface Read_Write"
+#endif
+								);
+
+	 in_READ_WRITE_VAL     [i]  = interface->set_signal_valack_in        ("val"    , VAL);
+	out_READ_WRITE_ACK     [i]  = interface->set_signal_valack_out       ("ack"    , ACK);
+	 in_READ_WRITE_RW      [i]  = interface->set_signal_valack_in        ("rw"     , VAL);
+	 in_READ_WRITE_ADDRESS [i]  = interface->set_signal_in  <Taddress_t> ("address", _param->_size_address);
+	 in_READ_WRITE_WDATA   [i]  = interface->set_signal_in  <Tdata_t   > ("wdata"  , _param->_size_word);
+	out_READ_WRITE_RDATA   [i]  = interface->set_signal_out <Tdata_t   > ("rdata"  , _param->_size_word);
       }
 
     // ----- Register
-    reg_DATA = new SC_REGISTER (Tdata_t) * [_param._nb_word];
+    reg_DATA = new SC_REGISTER (Tdata_t) * [_param->_nb_word];
     
-    for (uint32_t i=0; i<_param._nb_word; i++)
+    for (uint32_t i=0; i<_param->_nb_word; i++)
       {
 	string rename = "reg_DATA["  + toString(i) + "]";
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp	(revision 55)
@@ -33,4 +33,12 @@
     delete []  in_WRITE_DATA   ;
 
+    // ----- Interface Read_Write
+    delete []  in_READ_WRITE_VAL    ;
+    delete [] out_READ_WRITE_ACK    ;
+    delete []  in_READ_WRITE_RW     ;
+    delete []  in_READ_WRITE_ADDRESS;
+    delete []  in_READ_WRITE_WDATA  ;
+    delete [] out_READ_WRITE_RDATA  ;
+
     // ----- Register
     delete [] reg_DATA;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_genMealy_read.cpp	(revision 55)
@@ -23,5 +23,5 @@
 #endif    
 
-    for (uint32_t i=0; i<_param._nb_port_read; i++)
+    for (uint32_t i=0; i<_param->_nb_port_read; i++)
       {
 	// Have a write?
@@ -45,4 +45,35 @@
 	  }
       }
+
+    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+      {
+	Tdata_t data;
+
+	// Have a write?
+ 	if ( (PORT_READ(in_READ_WRITE_VAL [i]) == 1) and
+	     (PORT_READ(in_READ_WRITE_RW  [i]) == RW_READ)
+	     )
+ 	  {
+	    Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
+	    
+	    data = REGISTER_READ(reg_DATA[address]);
+
+	    log_printf(TRACE,RegisterFile,"genMealy_read","[%d] -> %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
+
+#ifdef STATISTICS
+	    _stat_nb_read ++;
+#endif    
+	    // Write in registerFile
+	    
+ 	  }
+	else
+	  {
+	    //log_printf(TRACE,RegisterFile,"genMealy_read","Read  [%d] : No   transaction",i);
+	    data = 0;
+	  }
+
+	PORT_WRITE(out_READ_WRITE_RDATA[i],data);
+      }
+
     log_printf(FUNC,RegisterFile,"genMealy_read","End");
 	
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_transition.cpp	(revision 55)
@@ -21,5 +21,5 @@
 #endif    
 
-    for (uint32_t i=0; i<_param._nb_port_write; i++)
+    for (uint32_t i=0; i<_param->_nb_port_write; i++)
       {
 	// Have a write?
@@ -32,4 +32,23 @@
 	    Taddress_t address = PORT_READ(in_WRITE_ADDRESS[i]);
 	    Tdata_t    data    = PORT_READ(in_WRITE_DATA   [i]);
+	    
+	    log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
+
+	    // Write in registerFile
+	    REGISTER_WRITE(reg_DATA[address],data);
+ 	  }
+      }
+    for (uint32_t i=0; i<_param->_nb_port_read_write; i++)
+      {
+	// Have a read_write?
+ 	if ( (PORT_READ(in_READ_WRITE_VAL[i]) == true) and
+	     (PORT_READ(in_READ_WRITE_RW [i]) == RW_WRITE))
+ 	  {
+#ifdef STATISTICS
+	    _stat_nb_write ++;
+#endif    
+
+	    Taddress_t address = PORT_READ(in_READ_WRITE_ADDRESS[i]);
+	    Tdata_t    data    = PORT_READ(in_READ_WRITE_WDATA  [i]);
 	    
 	    log_printf(TRACE,RegisterFile,"transition","[%d] <- %.8x",static_cast<uint32_t>(address),static_cast<uint32_t>(data));
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_body.cpp	(revision 55)
@@ -19,13 +19,26 @@
     vhdl->set_body ("");
     vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("-- Ackitement");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
+    vhdl->set_body ("");
+
+    for (uint32_t i = 0; i < _param->_nb_port_read; i++)
+      vhdl->set_body ("out_READ_"+toString(i)+"_ACK  <= '1';");
+    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
+      vhdl->set_body ("out_WRITE_"+toString(i)+"_ACK <= '1';");
+    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
+      vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_ACK  <= '1';");
+
+    vhdl->set_body ("");
+    vhdl->set_body ("-----------------------------------------------------------------------------");
     vhdl->set_body ("-- Read RegisterFile");
     vhdl->set_body ("-----------------------------------------------------------------------------");
     vhdl->set_body ("");
     
-    for (uint32_t i = 0; i < _param._nb_port_read; i++)
-      {
-	vhdl->set_body ("out_READ_"+toString(i)+"_ACK  <= '1';");
-	vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA (conv_integer(in_READ_"+toString(i)+"_ADDRESS)) when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param._size_word,0)+";");
-      }
+    for (uint32_t i = 0; i < _param->_nb_port_read; i++)
+	vhdl->set_body ("out_READ_"+toString(i)+"_DATA <= reg_DATA (conv_integer(in_READ_"+toString(i)+"_ADDRESS)) when in_READ_"+toString(i)+"_VAL = '1' else "+std_logic_others(_param->_size_word,0)+";");
+
+    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
+      vhdl->set_body ("out_READ_WRITE_"+toString(i)+"_RDATA <= reg_DATA (conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) when in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_READ)+"' else "+std_logic_others(_param->_size_word,0)+";");
 
     vhdl->set_body ("");
@@ -39,5 +52,5 @@
     vhdl->set_body ("\tif in_CLOCK'event and in_CLOCK = '1' then");
     
-    for (uint32_t i = 0; i < _param._nb_port_write; i++)
+    for (uint32_t i = 0; i < _param->_nb_port_write; i++)
       {
       vhdl->set_body ("\t\tif (in_WRITE_"+toString(i)+"_VAL = '1') then");
@@ -45,10 +58,13 @@
       vhdl->set_body ("\t\tend if;");
       }
+    for (uint32_t i = 0; i < _param->_nb_port_read_write; i++)
+      {
+      vhdl->set_body ("\t\tif (in_READ_WRITE_"+toString(i)+"_VAL = '1' and in_READ_WRITE_"+toString(i)+"_RW = '"+toString(RW_WRITE)+"') then");
+      vhdl->set_body ("\t\t\treg_DATA(conv_integer(in_READ_WRITE_"+toString(i)+"_ADDRESS)) <= in_READ_WRITE_"+toString(i)+"_WDATA;");
+      vhdl->set_body ("\t\tend if;");
+      }
 
     vhdl->set_body ("\tend if;");
     vhdl->set_body ("end process RegisterFile_write;");
-
-    for (uint32_t i = 0; i < _param._nb_port_write; i++)
-      vhdl->set_body ("out_WRITE_"+toString(i)+"_ACK <= '1';");
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_vhdl_declaration.cpp	(revision 55)
@@ -18,5 +18,5 @@
   void RegisterFile_Monolithic::vhdl_declaration (Vhdl * & vhdl)
   {
-    vhdl->set_type ("Tregfile", "array (" + toString(_param._nb_word-1) + " downto 0) of " + std_logic(_param._size_word));
+    vhdl->set_type ("Tregfile", "array (" + toString(_param->_nb_word-1) + " downto 0) of " + std_logic(_param->_size_word));
 
     vhdl->set_signal ("reg_DATA", "Tregfile");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/Statistics.cpp	(revision 55)
@@ -15,7 +15,7 @@
 namespace registerfile_monolithic    {
 
-  Statistics::Statistics (string                                      name                       ,
-			  morpheo::behavioural::Parameters_Statistics parameters_statistics      ,
-			  Parameters                                  parameters
+  Statistics::Statistics (string                                        name                       ,
+			  morpheo::behavioural::Parameters_Statistics * parameters_statistics      ,
+			  Parameters                                  * parameters
 			  ) :
     morpheo::behavioural::Statistics(name                  ,
@@ -23,10 +23,13 @@
     _parameters(parameters)
   {
+    _param_port_read = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_read);
     _stat_port_read  = new morpheo::behavioural::generic::group::Statistics (name + "_port_read"   ,
 									     parameters_statistics ,
-									     morpheo::behavioural::generic::group::Parameters(_parameters._nb_port_read));
-    _stat_port_write = new morpheo::behavioural::generic::group::Statistics (name + "_port_write"   ,
+									     _param_port_read);
+
+    _param_port_write = new morpheo::behavioural::generic::group::Parameters(_parameters->_nb_port_write);
+    _stat_port_write  = new morpheo::behavioural::generic::group::Statistics (name + "_port_write"   ,
 									     parameters_statistics ,
-									     morpheo::behavioural::generic::group::Parameters(_parameters._nb_port_write));
+									     _param_port_write);
   };
   
@@ -40,4 +43,6 @@
   Statistics::~Statistics () 
   { 
+    delete _param_port_read;
+    delete _param_port_write;
     delete _stat_port_read ;
     delete _stat_port_write;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Common	(revision 55)
@@ -39,6 +39,6 @@
 # 				  -Werror				\
 
-CFLAGS				= $(FLAGS) $(FLAGS_COMMON) $(INCDIR)
-LFLAGS				= $(FLAGS) $(FLAGS_COMMON) $(LIBDIR)
+CFLAGS				= $(MORPHEO_FLAGS) $(FLAGS_COMMON) $(INCDIR)
+LFLAGS				= $(MORPHEO_FLAGS) $(FLAGS_COMMON) $(LIBDIR)
 
 #-----[ Variable ]-----------------------------------------
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.flags	(revision 55)
@@ -14,10 +14,10 @@
 
 #-----[ Flags ]--------------------------------------------
-FLAGS				=	-DSYSTEMC		\
+MORPHEO_FLAGS			=	-DSYSTEMC		\
+					-DVHDL			\
+  					-DVHDL_TESTBENCH	\
+					-DSTATISTICS 		\
 					-DDEBUG=DEBUG_TRACE
-#					-DVHDL			\
-#  					-DVHDL_TESTBENCH	\
 #					-DVHDL_TESTBENCH_ASSERT	\
-#					-DSTATISTICS 		\
 #					-DCONFIGURATION  	\
 #					-DPOSITION       	\
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.mkf	(revision 55)
@@ -3,5 +3,5 @@
 #
 
-all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest _Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
+all: _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest Generic/Select/Priority_Fixed/SelfTest Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
 
 _Generic/RegisterFile/RegisterFile_Monolithic/SelfTest:
@@ -10,10 +10,8 @@
 Generic/Select/Priority_Fixed/SelfTest:
 
-_Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest:
-	gmake all -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
+Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest:
 
 clean:
 	gmake clean -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
-	gmake clean -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
 
 re: clean all
@@ -21,4 +19,3 @@
 install:
 	gmake install -C Generic/RegisterFile/RegisterFile_Monolithic/SelfTest
-	gmake install -C Stage_1_Ifetch/Predictor/Meta_Predictor/Two_Level_Branch_Predictor/Pattern_History_Table/SelfTest
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/main.cpp	(revision 55)
@@ -31,5 +31,5 @@
 #endif
 {
-  if (argc < 2+NB_PARAMS)
+  if (argc != 2+NB_PARAMS)
     usage (argc, argv);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component/SelfTest/src/test.cpp	(revision 55)
@@ -18,12 +18,24 @@
 } while(0)
 
-#define SC_START(cycle)                                        \
-do                                                             \
-{                                                              \
-  if (static_cast<uint32_t>(sc_simulation_time()) > CYCLE_MAX) \
-    {                                                          \
-      TEST_KO("Maximal cycles Reached");                       \
-    }                                                          \
-  sc_start(cycle);                                             \
+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()); \
+  if (cycle_current != cycle)                                           \
+    {                                                                   \
+      cycle = cycle_current;                                            \
+      cout << "##########[ cycle "<< cycle << " ]" << endl;             \
+    }                                                                   \
+                                                                        \
+  if (cycle_current > CYCLE_MAX)                                        \
+    {                                                                   \
+      TEST_KO("Maximal cycles Reached");                                \
+    }                                                                   \
+  sc_start(cycle_offset);                                               \
+/*cout << "SC_START (end  )" << endl;*/                                 \
 } while(0)
 
@@ -99,10 +111,10 @@
   cout << "<" << name << "> ............ Stop Simulation" << endl;
 
-  delete CLOCK;
-  delete NRESET;
+  delete in_CLOCK;
+  delete in_NRESET;
 #endif
 
   delete _@COMPONENT;
-#ifdef SYSTEMC
+#ifdef STATISTICS
   delete _parameters_statistics;
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 55)
@@ -20,4 +20,5 @@
 #define           DEBUG_Read_unit				  false
 #define             DEBUG_Read_queue                              false
+#define             DEBUG_Reservation_station                     true
 #define     DEBUG_Multi_Front_end                                 false
 #define       DEBUG_Front_end                                     false
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h	(revision 54)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Interface_fifo.h	(revision 55)
@@ -15,4 +15,17 @@
 
   typedef enum {VAL, ACK} val_ack_t;
+}; // end namespace behavioural
+
+  template<> inline std::string toString<morpheo::behavioural::val_ack_t>(const morpheo::behavioural::val_ack_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::VAL : return "val"; break;
+      case morpheo::behavioural::ACK : return "ack"; break;
+      default    : return ""      ; break;
+      }
+  }
+
+namespace behavioural          {
 
   class Interface_fifo : public Interface
@@ -46,4 +59,10 @@
 
 #ifdef SYSTEMC
+  public    : sc_in <bool> *        set_signal_valack_in (val_ack_t       val_ack  ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      return set_signal_valack_in (toString(val_ack) ,val_ack, presence_port);
+    }
+
   public    : sc_in <bool> *        set_signal_valack_in (string          name     ,
 							  val_ack_t       val_ack  ,
@@ -59,4 +78,10 @@
       return port;
     };
+
+  public    : sc_out<bool> *        set_signal_valack_out(val_ack_t       val_ack  ,
+							  presence_port_t presence_port=PORT_VHDL_YES_TESTBENCH_YES)
+    {
+      return set_signal_valack_out(toString(val_ack) ,val_ack, presence_port);
+    }
 
   public    : sc_out<bool> *        set_signal_valack_out(string          name     ,
