Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/configuration.cfg	(revision 77)
@@ -8,4 +8,2 @@
 2 	2 	+1	# size_special_data  
 16	16	+1	# nb_special_register
-10	10	+1	# nb_operation       
-4	4	+1	# nb_type            
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/SelfTest/src/main.cpp	(revision 77)
@@ -9,5 +9,5 @@
 #include "Behavioural/Custom/include/Custom_example.h"
 
-#define NB_PARAMS 10
+#define NB_PARAMS 8
 
 void usage (int argc, char * argv[])
@@ -23,6 +23,4 @@
   err (_("  * size_special_data   (uint32_t)\n"));
   err (_("  * nb_special_register (uint32_t)\n"));
-  err (_("  * nb_operation        (uint32_t)\n"));
-  err (_("  * nb_type             (uint32_t)\n"));
   exit (1);
 }
@@ -48,6 +46,4 @@
   const uint32_t size_special_data   = atoi(argv[x++]);
   const uint32_t nb_special_register = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
 
   execute_timing_t ** timing = new execute_timing_t * [MAX_TYPE];
@@ -72,6 +68,4 @@
 	 size_special_data   ,
 	 nb_special_register ,
-	 nb_operation        ,
-	 nb_type             ,
 	 timing              ,
 	 &(morpheo::behavioural::custom::example_get_custom_information)
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Parameters.h	(revision 77)
@@ -36,6 +36,4 @@
   public : const uint32_t            _size_special_data            ;
   public : const uint32_t            _nb_special_register          ;
-  public : const uint32_t            _nb_operation                 ;
-  public : const uint32_t            _nb_type                      ;
   public :       execute_timing_t ** _timing                       ;
   public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (uint32_t);
@@ -47,6 +45,4 @@
   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                    ;
 
   public : const bool                _have_port_context_id         ;
@@ -66,6 +62,4 @@
 			uint32_t           size_special_data  ,
 			uint32_t           nb_special_register,
-			uint32_t           nb_operation       ,
-			uint32_t           nb_type            ,
 			execute_timing_t** timing             ,
 			morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t));
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp	(revision 77)
@@ -153,12 +153,12 @@
        }
 
-     _function_execute = new function_execute_t ** [MAX_TYPE];
+     _function_execute = new function_execute_t ** [_param->_nb_type];
      
      // Initialisation
-     for (uint32_t i=0; i<MAX_TYPE; i++)
+     for (uint32_t i=0; i<_param->_nb_type; i++)
        {
-	 _function_execute [i] = new function_execute_t * [MAX_OPERATION];
+	 _function_execute [i] = new function_execute_t * [_param->_nb_operation];
 	 
-	 for (uint32_t j=0; j<MAX_OPERATION; j++)
+	 for (uint32_t j=0; j<_param->_nb_operation; j++)
 	   _function_execute [i][j] = &(operation_unimplemented);
        }
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_transition.cpp	(revision 77)
@@ -86,6 +86,8 @@
 
 #ifdef DEBUG_TEST
-	    if (operation >= MAX_OPERATION)
-	      throw ERRORMORPHEO(FUNCTION,"Invalid operation : '"+toString(operation)+"' is higher that MAX_OPERATION");
+	    if (type >= _param->_nb_type)
+	      throw ERRORMORPHEO(FUNCTION,"Invalid type : '"+toString(type)+"' is higher that _nb_type");
+	    if (operation >= _param->_nb_operation)
+	      throw ERRORMORPHEO(FUNCTION,"Invalid operation : '"+toString(operation)+"' is higher that _nb_operation");
 #endif
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters.cpp	(revision 77)
@@ -28,6 +28,4 @@
 			  uint32_t           size_special_data  ,
 			  uint32_t           nb_special_register,
-			  uint32_t           nb_operation       ,
-			  uint32_t           nb_type            ,
 			  execute_timing_t** timing             ,
 			  morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t)) :
@@ -40,6 +38,4 @@
     _size_special_data       (size_special_data     ),
     _nb_special_register     (nb_special_register   ),
-    _nb_operation            (nb_operation          ),
-    _nb_type                 (nb_type               ),
     
     _size_context_id         (log2(nb_context      )),
@@ -49,6 +45,4 @@
     _size_general_register   (log2(_size_general_register)),
     _size_special_register   (log2(_size_special_register)),
-    _size_operation          (log2(_size_operation       )),
-    _size_type               (log2(_size_type            )),
 
     _have_port_context_id    (_size_context_id    > 0),
@@ -82,6 +76,4 @@
     _size_special_data       (param._size_special_data      ),
     _nb_special_register     (param._nb_special_register    ),
-    _nb_operation            (param._nb_operation           ),
-    _nb_type                 (param._nb_type                ),
 
     _size_context_id         (param._size_context_id        ),
@@ -91,6 +83,4 @@
     _size_general_register   (param._size_general_register  ),
     _size_special_register   (param._size_special_register  ),
-    _size_operation          (param._size_operation         ),
-    _size_type               (param._size_type              ),
 
     _have_port_context_id    (param._have_port_context_id   ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_msg_error.cpp	(revision 77)
@@ -28,6 +28,6 @@
     std::string msg = "";
 
-    for (uint32_t i=0; i<MAX_TYPE; i++)
-      for (uint32_t j=0; j<MAX_OPERATION; j++)
+    for (uint32_t i=0; i<_nb_type; i++)
+      for (uint32_t j=0; j<_nb_operation; j++)
 	if (_timing[i][j]._delay != _timing[i][j]._latence)
 	  msg = "  - For the type '"+toString(i)+"', and the operation '"+toString(j)+"', the delay and the latence must be equal.";
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Parameters_print.cpp	(revision 77)
@@ -35,6 +35,4 @@
     xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); 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.balise_close();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/configuration.cfg	(revision 77)
@@ -11,4 +11,2 @@
 32	32	*2	# size_general_data      
 32	32	*2	# nb_general_register    
-4	4	*2	# nb_operation           
-4	4	*2	# nb_type                
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/main.cpp	(revision 77)
@@ -10,5 +10,5 @@
 #define number_of_test 2
 
-#define NB_PARAMS 13
+#define NB_PARAMS 11
 
 void usage (int argc, char * argv[])
@@ -27,6 +27,4 @@
        << " - size_general_data       (uint32_t)" << endl
        << " - nb_general_register     (uint32_t)" << endl
-       << " - nb_operation            (uint32_t)" << endl
-       << " - nb_type                 (uint32_t)" << endl
        << "" << endl;
 
@@ -66,6 +64,4 @@
 	const uint32_t            _size_general_data       = atoi(argv[x++]);
 	const uint32_t            _nb_general_register     = atoi(argv[x++]);
-	const uint32_t            _nb_operation            = atoi(argv[x++]);
-	const uint32_t            _nb_type                 = atoi(argv[x++]);
 	
 	try 
@@ -83,8 +79,5 @@
 	       _nb_packet              ,
 	       _size_general_data      ,
-	       _nb_general_register    ,
-	       _nb_operation           ,
-	       _nb_type                
-	       );
+	       _nb_general_register    );
 	    
 	    cout << param->print(1);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/SelfTest/src/test2.cpp	(revision 77)
@@ -57,7 +57,5 @@
 	 128,//_nb_packet              
 	 32, //_size_general_data      
-	 64, //_nb_general_register    
-	 4,  //_nb_operation           
-	 4   //_nb_type                
+	 64  //_nb_general_register    
         );
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/include/Parameters.h	(revision 77)
@@ -39,6 +39,4 @@
   public : const uint32_t            _size_general_data            ;
   public : const uint32_t            _nb_general_register          ;
-  public : const uint32_t            _nb_operation                 ;
-  public : const uint32_t            _nb_type                      ;
 
   public : const uint32_t            _size_address_store_queue             ;
@@ -50,6 +48,4 @@
   public : const uint32_t            _size_packet_id                       ;
   public : const uint32_t            _size_general_register                ;
-  public : const uint32_t            _size_operation                       ;
-  public : const uint32_t            _size_type                            ;
   public : const uint32_t            _size_dcache_context_id               ;
   public : const uint32_t            _size_dcache_packet_id                ;
@@ -75,8 +71,5 @@
 			uint32_t            nb_packet              ,
 			uint32_t            size_general_data      ,
-			uint32_t            nb_general_register    ,
-			uint32_t            nb_operation           ,
-			uint32_t            nb_type                
-			);
+			uint32_t            nb_general_register    );
 
   public : Parameters  (Parameters & param) ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters.cpp	(revision 77)
@@ -30,8 +30,5 @@
 			  uint32_t            nb_packet              ,
 			  uint32_t            size_general_data      ,
-			  uint32_t            nb_general_register    ,
-			  uint32_t            nb_operation           ,
-			  uint32_t            nb_type                			  
-			  ):
+			  uint32_t            nb_general_register    ):
     _size_store_queue        (size_store_queue       ),
     _size_load_queue         (size_load_queue        ),
@@ -45,6 +42,4 @@
     _size_general_data       (size_general_data      ),
     _nb_general_register     (nb_general_register    ),
-    _nb_operation            (nb_operation           ),
-    _nb_type                 (nb_type                ),
     
     _size_address_store_queue              (log2(size_store_queue             )),
@@ -57,6 +52,4 @@
     _size_packet_id          (log2(nb_packet          )),
     _size_general_register   (log2(nb_general_register)),
-    _size_operation          (log2(nb_operation       )),
-    _size_type               (log2(nb_type            )),
     _size_dcache_context_id  (_size_context_id + _size_front_end_id + _size_ooo_engine_id),
     _size_dcache_packet_id   ((log2((size_store_queue>size_load_queue)?size_store_queue:size_load_queue))+1),
@@ -90,6 +83,4 @@
     _size_general_data       (param._size_general_data      ),
     _nb_general_register     (param._nb_general_register    ),
-    _nb_operation            (param._nb_operation           ),
-    _nb_type                 (param._nb_type                ),
 
     _size_address_store_queue              (param._size_address_store_queue             ),
@@ -102,6 +93,4 @@
     _size_packet_id          (param._size_packet_id         ),
     _size_general_register   (param._size_general_register  ),
-    _size_operation          (param._size_operation         ),
-    _size_type               (param._size_type              ),
     _size_dcache_context_id  (param._size_dcache_context_id ),
     _size_dcache_packet_id   (param._size_dcache_packet_id  ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Parameters_print.cpp	(revision 77)
@@ -39,6 +39,4 @@
     xml.singleton_begin("size_general_data            "); xml.attribut("value",toString(_size_general_data            )); xml.singleton_end();
     xml.singleton_begin("nb_general_register          "); xml.attribut("value",toString(_nb_general_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.balise_close();
 
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config0.cfg	(revision 77)
@@ -9,6 +9,4 @@
 16	16	*2	# nb_general_register
 2 	2 	+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
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config1.cfg	(revision 77)
@@ -9,6 +9,4 @@
 4 	4 	*2	# nb_general_register
 4 	4 	+1	# nb_special_register
-40	40	+1	# nb_operation       
-6	6	+1	# nb_type            
 2	4	*2	# nb_gpr_write
 2	4	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config2.cfg	(revision 77)
@@ -9,6 +9,4 @@
 4 	4 	*2	# nb_general_register
 4 	4 	+1	# nb_special_register
-40	40	+1	# nb_operation       
-6	6	+1	# nb_type            
 1	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/config_min.cfg	(revision 77)
@@ -9,6 +9,4 @@
 32	32	*2	# nb_general_register
 32	32	+1	# nb_special_register
-12	12	+1	# nb_operation       
-5 	5 	+1	# nb_type            
 1 	1 	*2	# nb_gpr_write
 1 	1 	*2	# nb_spr_write
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h"
 
-#define NB_PARAMS 15
+#define NB_PARAMS 13
 
 void usage (int argc, char * argv[])
@@ -23,6 +23,4 @@
        << " - 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
@@ -58,6 +56,4 @@
   const uint32_t nb_general_register = atoi(argv[x++]);
   const uint32_t nb_special_register = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
   const uint32_t nb_gpr_write        = atoi(argv[x++]);
   const uint32_t nb_spr_write        = atoi(argv[x++]);
@@ -77,6 +73,4 @@
 	 ,nb_general_register
 	 ,nb_special_register
-	 ,nb_operation       
-	 ,nb_type            
 	 ,nb_gpr_write
 	 ,nb_spr_write
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h	(revision 77)
@@ -37,6 +37,4 @@
   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         ;
@@ -52,6 +50,4 @@
   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            ;
 
   public : const bool        _have_port_context_id   ;
@@ -72,6 +68,4 @@
 			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       ,
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp	(revision 77)
@@ -27,6 +27,4 @@
 			  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       ,
@@ -42,6 +40,4 @@
     _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         ),
@@ -57,6 +53,4 @@
     _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            ))),
 
     _have_port_context_id    (_size_context_id    > 0),
@@ -104,6 +98,4 @@
     _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          ),
@@ -119,6 +111,4 @@
     _size_general_register (param._size_general_register ),
     _size_special_register (param._size_special_register ),
-    _size_operation        (param._size_operation        ),
-    _size_type             (param._size_type             ),
 
     _have_port_context_id    (param._have_port_context_id   ),
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp	(revision 77)
@@ -35,6 +35,4 @@
     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();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_memory.cfg	(revision 77)
@@ -10,6 +10,4 @@
 16 	16 	*2	# nb_general_register
 8 	8 	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
 1	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_bypass_write.cfg	(revision 77)
@@ -10,6 +10,4 @@
 16 	16     	*2	# nb_general_register
 8 	8 	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
 1	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire2.cfg	(revision 77)
@@ -10,6 +10,4 @@
 18   	16 	*2	# nb_general_register
 8 	8 	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
 1	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_retire4.cfg	(revision 77)
@@ -10,6 +10,4 @@
 16	16	*2	# nb_general_register
 8 	8	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
 1 	1	*2	# nb_gpr_write
 1	1	*2	# nb_spr_write
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/configuration_multi_port_write.cfg	(revision 77)
@@ -10,6 +10,4 @@
 16 	16 	*2	# nb_general_register
 8 	8 	+1	# nb_special_register
-8	8	+1	# nb_operation       
-4	4	+1	# nb_type            
 2	4	*2	# nb_gpr_write
 2	4	*2	# nb_spr_write
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h"
 
-#define NB_PARAMS 18
+#define NB_PARAMS 16
 
 void usage (int argc, char * argv[])
@@ -24,6 +24,4 @@
        << " - 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
@@ -62,6 +60,4 @@
   const uint32_t nb_general_register = atoi(argv[x++]);
   const uint32_t nb_special_register = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
   const uint32_t nb_gpr_write        = atoi(argv[x++]);
   const uint32_t nb_spr_write        = atoi(argv[x++]);
@@ -84,6 +80,4 @@
 	 ,nb_general_register
 	 ,nb_special_register
-	 ,nb_operation       
-	 ,nb_type            
 	 ,nb_gpr_write
 	 ,nb_spr_write
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h	(revision 77)
@@ -36,6 +36,4 @@
   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         ;
@@ -59,6 +57,4 @@
   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            ;
 
   public : const bool        _have_port_context_id   ;
@@ -78,6 +74,4 @@
 			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       ,
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 77)
@@ -30,6 +30,4 @@
 			  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       ,
@@ -48,6 +46,4 @@
     _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         ),
@@ -63,6 +59,4 @@
     _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            ))),
 
     _have_port_context_id    (_size_context_id    > 0),
@@ -89,6 +83,4 @@
     _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          ),
@@ -104,6 +96,4 @@
     _size_general_register (param._size_general_register ),
     _size_special_register (param._size_special_register ),
-    _size_operation        (param._size_operation        ),
-    _size_type             (param._size_type             ),
 
     _have_port_context_id    (param._have_port_context_id   ),
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 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp	(revision 77)
@@ -38,6 +38,4 @@
     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();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg	(revision 77)
@@ -10,6 +10,4 @@
 64	64	*2	# nb_general_register     
 16	16	*2	# nb_special_register     
-10	10	*2	# nb_operation            
-4	4	*2	# nb_type                 
 2	2	*2	# nb_gpr_write            
 2	2	*2	# nb_spr_write            
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h"
 
-#define NB_PARAMS 19
+#define NB_PARAMS 17
 
 void usage (int argc, char * argv[])
@@ -24,6 +24,4 @@
   err (_(" * nb_general_register      (uint32_t)\n"));
   err (_(" * nb_special_register      (uint32_t)\n"));
-  err (_(" * nb_operation             (uint32_t)\n"));
-  err (_(" * nb_type                  (uint32_t)\n"));
   err (_(" * nb_gpr_write             (uint32_t)\n"));
   err (_(" * nb_spr_write             (uint32_t)\n"));
@@ -59,6 +57,4 @@
   const uint32_t    _nb_general_register      = atoi(argv[x++]);
   const uint32_t    _nb_special_register      = atoi(argv[x++]);
-  const uint32_t    _nb_operation             = atoi(argv[x++]);
-  const uint32_t    _nb_type                  = atoi(argv[x++]);
   const uint32_t    _nb_gpr_write             = atoi(argv[x++]);
   const uint32_t    _nb_spr_write             = atoi(argv[x++]);
@@ -83,6 +79,4 @@
 	 _nb_general_register     ,
 	 _nb_special_register     ,
-	 _nb_operation            ,
-	 _nb_type                 ,
 	 _nb_gpr_write            ,
 	 _nb_spr_write            ,
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h	(revision 77)
@@ -36,6 +36,4 @@
   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            ;
@@ -54,6 +52,4 @@
   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               ;
 
   public : const bool        _have_port_context_id    ;
@@ -76,6 +72,4 @@
 			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            ,
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp	(revision 77)
@@ -29,6 +29,4 @@
 			  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            ,
@@ -48,6 +46,4 @@
     _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            ),
@@ -66,6 +62,4 @@
     _size_general_register    (log2(nb_general_register)),
     _size_special_register    (log2(nb_special_register)),
-    _size_operation           (log2(nb_operation       )),
-    _size_type                (log2(nb_type            )),
     
     _have_port_context_id     (_size_context_id   >0),
@@ -86,6 +80,4 @@
 	,_nb_general_register
 	,_nb_special_register
-	,_nb_operation       
-	,_nb_type            
 	,_nb_gpr_write
 	,_nb_spr_write
@@ -105,6 +97,4 @@
 	 ,nb_general_register
 	 ,nb_special_register
-	 ,nb_operation       
-	 ,nb_type            
 	 ,nb_gpr_write
 	 ,nb_spr_write
@@ -134,6 +124,4 @@
     _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            ),
@@ -152,6 +140,4 @@
     _size_general_register    (param._size_general_register   ),
     _size_special_register    (param._size_special_register   ),
-    _size_operation           (param._size_operation          ),
-    _size_type                (param._size_type               ),
 
     _have_port_context_id     (param._have_port_context_id    ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp	(revision 77)
@@ -37,6 +37,4 @@
     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();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/Makefile.deps	(revision 77)
@@ -25,16 +25,13 @@
 					$(Behavioural_DIR_LIBRARY)
 
-Execute_queue_DEPENDENCIES	=	Behavioural_library
+#-----[ Rules ]--------------------------------------------
 
-Execute_queue_CLEAN        	=	Behavioural_library_clean
-
-#-----[ Rules ]--------------------------------------------
-#.NOTPARALLEL			: Execute_queue_library Execute_queue_library_clean
-
-Execute_queue_library		: $(Execute_queue_DEPENDENCIES)
+Execute_queue_library		:
 				@\
+				$(MAKE) Behavioural_library; \
 				$(MAKE) --directory=$(Execute_queue_DIR) --makefile=Makefile;
 
-Execute_queue_library_clean	: $(Execute_queue_CLEAN)
+Execute_queue_library_clean	:
 				@\
+				$(MAKE) Behavioural_library_clean; \
 				$(MAKE) --directory=$(Execute_queue_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/configuration.cfg	(revision 77)
@@ -7,4 +7,2 @@
 32	32	*2 # uint32_t size_general_data  
 2	2	*2 # uint32_t size_special_data  
-10	10	*2 # uint32_t nb_operation       
-4	4	*2 # uint32_t nb_type            
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/include/test.h"
 
-#define NB_PARAMS 9
+#define NB_PARAMS 7
 
 void usage (int argc, char * argv[])
@@ -21,6 +21,4 @@
   err (_(" * size_general_data   (uint32_t)\n"));
   err (_(" * size_special_data   (uint32_t)\n"));
-  err (_(" * nb_operation        (uint32_t)\n"));
-  err (_(" * nb_type             (uint32_t)\n"));
 
   exit (1);
@@ -46,6 +44,4 @@
   const uint32_t size_general_data   = atoi(argv[x++]);
   const uint32_t size_special_data   = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
 
   try 
@@ -58,7 +54,5 @@
 	 nb_packet          ,
 	 size_general_data  ,
-	 size_special_data  ,
-	 nb_operation       ,
-	 nb_type            );
+	 size_special_data  );
       
       msg(_("%s"),param->print(1).c_str());
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Parameters.h	(revision 77)
@@ -33,6 +33,4 @@
   public : const uint32_t            _size_general_data            ;
   public : const uint32_t            _size_special_data            ;
-  public : const uint32_t            _nb_operation                 ;
-  public : const uint32_t            _nb_type                      ;
 
   public : const uint32_t            _size_context_id              ;
@@ -40,6 +38,4 @@
   public : const uint32_t            _size_ooo_engine_id           ;
   public : const uint32_t            _size_packet_id               ;
-  public : const uint32_t            _size_operation               ;
-  public : const uint32_t            _size_type                    ;
 
   public : const bool                _have_port_context_id         ;
@@ -55,7 +51,5 @@
 			uint32_t nb_packet          ,
 			uint32_t size_general_data  ,
-			uint32_t size_special_data  ,
-			uint32_t nb_operation       ,
-			uint32_t nb_type            );
+			uint32_t size_special_data  );
   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters.cpp	(revision 77)
@@ -26,7 +26,5 @@
 			  uint32_t nb_packet          ,
 			  uint32_t size_general_data  ,
-			  uint32_t size_special_data  ,
-			  uint32_t nb_operation       ,
-			  uint32_t nb_type            ):
+			  uint32_t size_special_data  ):
     _size_queue              (size_queue         ),
     _nb_context              (nb_context         ),
@@ -36,6 +34,4 @@
     _size_general_data       (size_general_data  ),
     _size_special_data       (size_special_data  ),
-    _nb_operation            (nb_operation       ),
-    _nb_type                 (nb_type            ),
 
     _size_context_id         (log2(_nb_context         )),
@@ -43,6 +39,4 @@
     _size_ooo_engine_id      (log2(_nb_ooo_engine      )),
     _size_packet_id          (log2(_nb_packet          )),
-    _size_operation          (log2(_nb_operation       )),
-    _size_type               (log2(_nb_type            )),
 
     _have_port_context_id    (_size_context_id    > 0),
@@ -66,6 +60,4 @@
     _size_general_data       (param._size_general_data      ),
     _size_special_data       (param._size_special_data      ),
-    _nb_operation            (param._nb_operation           ),
-    _nb_type                 (param._nb_type                ),
 
     _size_context_id         (param._size_context_id        ),
@@ -73,6 +65,4 @@
     _size_ooo_engine_id      (param._size_ooo_engine_id     ),
     _size_packet_id          (param._size_packet_id         ),
-    _size_operation          (param._size_operation         ),
-    _size_type               (param._size_type              ),
 
     _have_port_context_id    (param._have_port_context_id   ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Parameters_print.cpp	(revision 77)
@@ -35,6 +35,4 @@
     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_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.balise_close();
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Makefile.deps	(revision 77)
@@ -35,21 +35,17 @@
 					$(Execute_queue_DIR_LIBRARY)
 
-Write_unit_DEPENDENCIES		=	Behavioural_library		\
-					Write_queue_library		\
-					Execute_queue_library
-
-Write_unit_CLEAN        	=	Behavioural_library_clean	\
-					Write_queue_library_clean	\
-					Execute_queue_library_clean
-
 #-----[ Rules ]--------------------------------------------
 
-#.NOTPARALLEL			: Write_unit_library Write_unit_library_clean
-
-Write_unit_library		: $(Write_unit_DEPENDENCIES)
+Write_unit_library		:
 				@\
+				$(MAKE) Behavioural_library;		\
+				$(MAKE) Write_queue_library;		\
+				$(MAKE) Execute_queue_library;		\
 				$(MAKE) --directory=$(Write_unit_DIR) --makefile=Makefile;
 
-Write_unit_library_clean	: $(Write_unit_CLEAN)
+Write_unit_library_clean	:
 				@\
+				$(MAKE) Behavioural_library_clean;	\
+				$(MAKE) Write_queue_library_clean;	\
+				$(MAKE) Execute_queue_library_clean;	\
 				$(MAKE) --directory=$(Write_unit_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration.cfg	(revision 77)
@@ -10,5 +10,3 @@
 2	2	*2 # uint32_t size_special_data  
 16	16	*2 # uint32_t nb_special_register
-10	10	*2 # uint32_t nb_operation       
-4	4	*2 # uint32_t nb_type            
 1	8	*2 # uint32_t nb_bypass_write  
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration_execute_queue_null.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration_execute_queue_null.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/configuration_execute_queue_null.cfg	(revision 77)
@@ -10,5 +10,3 @@
 2	2	*2 # uint32_t size_special_data  
 16	16	*2 # uint32_t nb_special_register
-10	10	*2 # uint32_t nb_operation       
-4	4	*2 # uint32_t nb_type            
 8	8	*2 # uint32_t nb_bypass_write  
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/include/test.h"
 
-#define NB_PARAMS 13
+#define NB_PARAMS 11
 
 void usage (int argc, char * argv[])
@@ -24,6 +24,4 @@
   err (_(" * size_special_data   (uint32_t)\n"));
   err (_(" * nb_special_register (uint32_t)\n"));
-  err (_(" * nb_operation        (uint32_t)\n"));
-  err (_(" * nb_type             (uint32_t)\n"));
   err (_(" * nb_bypass_write     (uint32_t)\n"));
 
@@ -53,6 +51,4 @@
   const uint32_t size_special_data   = atoi(argv[x++]);
   const uint32_t nb_special_register = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
   const uint32_t nb_bypass_write     = atoi(argv[x++]);
 
@@ -70,6 +66,4 @@
 	 size_special_data  ,
 	 nb_special_register,
-	 nb_operation       ,
-	 nb_type            ,
 	 nb_bypass_write    );
       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp	(revision 77)
@@ -50,5 +50,5 @@
   public  : Tpacket_t          _packet_id    ;
 //public  : Toperation_t       _operation    ;
-//public  : Ttype_t            _type         ;
+  public  : Ttype_t            _type         ;
   public  : Tcontrol_t         _write_rd     ;
   public  : Tgeneral_address_t _num_reg_rd   ;
@@ -66,5 +66,5 @@
 		     Tpacket_t          packet_id    ,
 		     //Toperation_t       operation    ,
-		     //Ttype_t            type         ,
+		     Ttype_t            type         ,
 		     Tcontrol_t         write_rd     ,
 		     Tgeneral_address_t num_reg_rd   ,
@@ -82,5 +82,5 @@
       _packet_id     = packet_id    ;
     //_operation     = operation    ;
-    //_type          = type         ;
+      _type          = type         ;
       _write_rd      = write_rd     ;
       _num_reg_rd    = num_reg_rd   ;
@@ -102,5 +102,5 @@
 		    << " * _packet_id     : " << toString(x._packet_id    ) << std::endl
 		  //<< " * _operation     : " << toString(x._operation    ) << std::endl
-		  //<< " * _type          : " << toString(x._type         ) << std::endl
+		    << " * _type          : " << toString(x._type         ) << std::endl
 		    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
 		    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
@@ -149,5 +149,5 @@
   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_PACKET_ID     ," in_WRITE_UNIT_IN_PACKET_ID"     , Tpacket_t         );
 //ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_OPERATION     ," in_WRITE_UNIT_IN_OPERATION"     , Toperation_t      );
-//ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
+  ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_TYPE          ," in_WRITE_UNIT_IN_TYPE"          , Ttype_t           );
   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_WRITE_RD      ," in_WRITE_UNIT_IN_WRITE_RD"      , Tcontrol_t        );
   ALLOC_SC_SIGNAL ( in_WRITE_UNIT_IN_NUM_REG_RD    ," in_WRITE_UNIT_IN_NUM_REG_RD"    , Tgeneral_address_t);
@@ -210,5 +210,5 @@
   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_PACKET_ID     );
 //INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_OPERATION     );
-//INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
+  INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_TYPE          );
   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_WRITE_RD      );
   INSTANCE_SC_SIGNAL (_Write_unit,  in_WRITE_UNIT_IN_NUM_REG_RD    );
@@ -323,5 +323,5 @@
 				     i,
 				   //range<Toperation_t      >(rand(),_param->_size_operation       ),
-				   //range<Ttype_t           >(rand(),_param->_size_type            ),
+				     range<Ttype_t           >(rand(),_param->_size_type            ),
 				     range<Tcontrol_t        >(rand(),1                             ),
 				     range<Tgeneral_address_t>(rand(),_param->_size_general_register),
@@ -355,5 +355,5 @@
 	    in_WRITE_UNIT_IN_PACKET_ID    ->write(request [nb_request_in]->_packet_id    );
 	  //in_WRITE_UNIT_IN_OPERATION    ->write(request [nb_request_in]->_operation    );
-	  //in_WRITE_UNIT_IN_TYPE         ->write(request [nb_request_in]->_type         );
+	    in_WRITE_UNIT_IN_TYPE         ->write(request [nb_request_in]->_type         );
 	    in_WRITE_UNIT_IN_WRITE_RD     ->write(request [nb_request_in]->_write_rd     );
 	    in_WRITE_UNIT_IN_NUM_REG_RD   ->write(request [nb_request_in]->_num_reg_rd   );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/Makefile.deps	(revision 77)
@@ -19,4 +19,5 @@
 
 #-----[ Library ]------------------------------------------
+
 Write_queue_LIBRARY		= 	-lWrite_queue	\
 					$(Behavioural_LIBRARY)	
@@ -25,16 +26,13 @@
 					$(Behavioural_DIR_LIBRARY)
 
-Write_queue_DEPENDENCIES	=	Behavioural_library
+#-----[ Rules ]--------------------------------------------
 
-Write_queue_CLEAN        	=	Behavioural_library_clean
-
-#-----[ Rules ]--------------------------------------------
-#.NOTPARALLEL			: Write_queue_library Write_queue_library_clean
-
-Write_queue_library		: $(Write_queue_DEPENDENCIES)
+Write_queue_library		:
 				@\
+				$(MAKE) Behavioural_library;	\
 				$(MAKE) --directory=$(Write_queue_DIR) --makefile=Makefile;
 
-Write_queue_library_clean	: $(Write_queue_CLEAN)
+Write_queue_library_clean	:
 				@\
+				$(MAKE) Behavioural_library_clean;	\
 				$(MAKE) --directory=$(Write_queue_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/configuration.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/configuration.cfg	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/configuration.cfg	(revision 77)
@@ -9,5 +9,3 @@
 2	2	*2 # uint32_t size_special_data  
 16	16	*2 # uint32_t nb_special_register
-10	10	*2 # uint32_t nb_operation       
-4	4	*2 # uint32_t nb_type            
 1	8	*2 # uint32_t nb_bypass_write  
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/main.cpp	(revision 77)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/include/test.h"
 
-#define NB_PARAMS 12
+#define NB_PARAMS 10
 
 void usage (int argc, char * argv[])
@@ -23,6 +23,4 @@
   err (_(" * size_special_data   (uint32_t)\n"));
   err (_(" * nb_special_register (uint32_t)\n"));
-  err (_(" * nb_operation        (uint32_t)\n"));
-  err (_(" * nb_type             (uint32_t)\n"));
   err (_(" * nb_bypass_write     (uint32_t)\n"));
 
@@ -51,6 +49,4 @@
   const uint32_t size_special_data   = atoi(argv[x++]);
   const uint32_t nb_special_register = atoi(argv[x++]);
-  const uint32_t nb_operation        = atoi(argv[x++]);
-  const uint32_t nb_type             = atoi(argv[x++]);
   const uint32_t nb_bypass_write     = atoi(argv[x++]);
 
@@ -67,6 +63,4 @@
 	 size_special_data  ,
 	 nb_special_register,
-	 nb_operation       ,
-	 nb_type            ,
 	 nb_bypass_write    );
       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp	(revision 77)
@@ -50,5 +50,5 @@
   public  : Tpacket_t          _packet_id    ;
 //public  : Toperation_t       _operation    ;
-//public  : Ttype_t            _type         ;
+  public  : Ttype_t            _type         ;
   public  : Tcontrol_t         _write_rd     ;
   public  : Tgeneral_address_t _num_reg_rd   ;
@@ -66,5 +66,5 @@
 		     Tpacket_t          packet_id    ,
 		     //Toperation_t       operation    ,
-		     //Ttype_t            type         ,
+		     Ttype_t            type         ,
 		     Tcontrol_t         write_rd     ,
 		     Tgeneral_address_t num_reg_rd   ,
@@ -82,5 +82,5 @@
       _packet_id     = packet_id    ;
     //_operation     = operation    ;
-    //_type          = type         ;
+      _type          = type         ;
       _write_rd      = write_rd     ;
       _num_reg_rd    = num_reg_rd   ;
@@ -102,5 +102,5 @@
 		    << " * _packet_id     : " << toString(x._packet_id    ) << std::endl
 		  //<< " * _operation     : " << toString(x._operation    ) << std::endl
-		  //<< " * _type          : " << toString(x._type         ) << std::endl
+		    << " * _type          : " << toString(x._type         ) << std::endl
 		    << " * _write_rd      : " << toString(x._write_rd     ) << std::endl
 		    << " * _num_reg_rd    : " << toString(x._num_reg_rd   ) << std::endl
@@ -149,5 +149,5 @@
   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_PACKET_ID     ," in_WRITE_QUEUE_IN_PACKET_ID"     , Tpacket_t         );
 //ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_OPERATION     ," in_WRITE_QUEUE_IN_OPERATION"     , Toperation_t      );
-//ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
+  ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_TYPE          ," in_WRITE_QUEUE_IN_TYPE"          , Ttype_t           );
   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_WRITE_RD      ," in_WRITE_QUEUE_IN_WRITE_RD"      , Tcontrol_t        );
   ALLOC_SC_SIGNAL ( in_WRITE_QUEUE_IN_NUM_REG_RD    ," in_WRITE_QUEUE_IN_NUM_REG_RD"    , Tgeneral_address_t);
@@ -209,5 +209,5 @@
   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_PACKET_ID     );
 //INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_OPERATION     );
-//INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
+  INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_TYPE          );
   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_WRITE_RD      );
   INSTANCE_SC_SIGNAL (_Write_queue,  in_WRITE_QUEUE_IN_NUM_REG_RD    );
@@ -322,5 +322,5 @@
 				     i,
 				   //range<Toperation_t      >(rand(),_param->_size_operation       ),
-				   //range<Ttype_t           >(rand(),_param->_size_type            ),
+				     range<Ttype_t           >(rand(),_param->_size_type            ),
 				     range<Tcontrol_t        >(rand(),1                             ),
 				     range<Tgeneral_address_t>(rand(),_param->_size_general_register),
@@ -354,5 +354,5 @@
 	    in_WRITE_QUEUE_IN_PACKET_ID    ->write(request [nb_request_in]->_packet_id    );
 	  //in_WRITE_QUEUE_IN_OPERATION    ->write(request [nb_request_in]->_operation    );
-	  //in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
+	    in_WRITE_QUEUE_IN_TYPE         ->write(request [nb_request_in]->_type         );
 	    in_WRITE_QUEUE_IN_WRITE_RD     ->write(request [nb_request_in]->_write_rd     );
 	    in_WRITE_QUEUE_IN_NUM_REG_RD   ->write(request [nb_request_in]->_num_reg_rd   );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Parameters.h	(revision 77)
@@ -35,6 +35,4 @@
   public : const uint32_t            _size_special_data            ;
   public : const uint32_t            _nb_special_register          ;
-  public : const uint32_t            _nb_operation                 ;
-  public : const uint32_t            _nb_type                      ;
   public : const uint32_t            _nb_bypass_write              ;
 
@@ -48,6 +46,4 @@
   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                    ;
 
   public : const bool                _have_port_context_id         ;
@@ -66,6 +62,4 @@
 			uint32_t size_special_data  ,
 			uint32_t nb_special_register,
-			uint32_t nb_operation       ,
-			uint32_t nb_type            ,
 			uint32_t nb_bypass_write    );
   public : Parameters  (Parameters & param) ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h	(revision 77)
@@ -45,5 +45,5 @@
   public  : Tpacket_t          _packet_id    ;
 //public  : Toperation_t       _operation    ;
-//public  : Ttype_t            _type         ;
+  public  : Ttype_t            _type         ;
   public  : Tcontrol_t         _write_rd     ;
   public  : Tgeneral_address_t _num_reg_rd   ;
@@ -61,5 +61,5 @@
 				 Tpacket_t          packet_id    ,
 			       //Toperation_t       operation    ,
-			       //Ttype_t            type         ,
+				 Ttype_t            type         ,
 				 Tcontrol_t         write_rd     ,
 				 Tgeneral_address_t num_reg_rd   ,
@@ -77,5 +77,5 @@
       _packet_id     = packet_id    ;
     //_operation     = operation    ;
-    //_type          = type         ;
+      _type          = type         ;
       _write_rd      = write_rd     ;
       _num_reg_rd    = num_reg_rd   ;
@@ -128,5 +128,5 @@
   public    : SC_IN (Tpacket_t         )    *  in_WRITE_QUEUE_IN_PACKET_ID    ;
 //public    : SC_IN (Toperation_t      )    *  in_WRITE_QUEUE_IN_OPERATION    ;
-//public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
+  public    : SC_IN (Ttype_t           )    *  in_WRITE_QUEUE_IN_TYPE         ;
   public    : SC_IN (Tcontrol_t        )    *  in_WRITE_QUEUE_IN_WRITE_RD     ;
   public    : SC_IN (Tgeneral_address_t)    *  in_WRITE_QUEUE_IN_NUM_REG_RD   ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters.cpp	(revision 77)
@@ -29,6 +29,4 @@
 			  uint32_t size_special_data  ,
 			  uint32_t nb_special_register,
-			  uint32_t nb_operation       ,
-			  uint32_t nb_type            ,
 			  uint32_t nb_bypass_write    ):
     _size_queue              (size_queue         ),
@@ -41,6 +39,4 @@
     _size_special_data       (size_special_data  ),
     _nb_special_register     (nb_special_register),
-    _nb_operation            (nb_operation       ),
-    _nb_type                 (nb_type            ),
     _nb_bypass_write         (nb_bypass_write    ),
 
@@ -54,6 +50,4 @@
     _size_general_register   (log2(_nb_general_register)),
     _size_special_register   (log2(_nb_special_register)),
-    _size_operation          (log2(_nb_operation       )),
-    _size_type               (log2(_nb_type            )),
 
     _have_port_context_id    (_size_context_id    > 0),
@@ -79,6 +73,4 @@
     _size_special_data       (param._size_special_data      ),
     _nb_special_register     (param._nb_special_register    ),
-    _nb_operation            (param._nb_operation           ),
-    _nb_type                 (param._nb_type                ),
     _nb_bypass_write         (param._nb_bypass_write        ),
 
@@ -92,6 +84,4 @@
     _size_general_register   (param._size_general_register  ),
     _size_special_register   (param._size_special_register  ),
-    _size_operation          (param._size_operation         ),
-    _size_type               (param._size_type              ),
 
     _have_port_context_id    (param._have_port_context_id   ),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Parameters_print.cpp	(revision 77)
@@ -37,6 +37,4 @@
     xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); 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_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
     xml.balise_close();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp	(revision 77)
@@ -60,5 +60,5 @@
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
 //     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
-//     ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
+       ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
        ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp	(revision 77)
@@ -41,5 +41,5 @@
 	delete      in_WRITE_QUEUE_IN_PACKET_ID    ;
 //      delete      in_WRITE_QUEUE_IN_OPERATION    ;
-//      delete      in_WRITE_QUEUE_IN_TYPE         ;
+	delete      in_WRITE_QUEUE_IN_TYPE         ;
         delete      in_WRITE_QUEUE_IN_WRITE_RD     ;
         delete      in_WRITE_QUEUE_IN_NUM_REG_RD   ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_transition.cpp	(revision 77)
@@ -53,5 +53,5 @@
 	       (_param->_have_port_packet_id    )?PORT_READ(in_WRITE_QUEUE_IN_PACKET_ID    ):0,
 	     //PORT_READ(in_WRITE_QUEUE_IN_OPERATION    ),
-	     //PORT_READ(in_WRITE_QUEUE_IN_TYPE         ),
+	       PORT_READ(in_WRITE_QUEUE_IN_TYPE         ),
 	       PORT_READ(in_WRITE_QUEUE_IN_WRITE_RD     ),
 	       PORT_READ(in_WRITE_QUEUE_IN_NUM_REG_RD   ),
@@ -67,6 +67,13 @@
 	  }
 
-	// Test if pop
-	if (internal_WRITE_QUEUE_OUT_VAL and PORT_READ(in_WRITE_QUEUE_OUT_ACK))
+	// Test if pop :
+	//  * transaction on write_queue_out interface
+	//  * have a speculative load and all register is write in registerfile
+	if ( (internal_WRITE_QUEUE_OUT_VAL and PORT_READ(in_WRITE_QUEUE_OUT_ACK)) or
+	     ((_queue->empty() == false)                                         and
+	      (_queue->front()->_type      == TYPE_MEMORY)                       and
+	      (_queue->front()->_exception == EXCEPTION_MEMORY_LOAD_SPECULATIVE) and
+	      (_queue->front()->_write_rd  == 0)                                 and
+	      (_queue->front()->_write_re  == 0)))
 	  {
 	    delete _queue->front();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Parameters.h	(revision 77)
@@ -38,6 +38,4 @@
   public : const uint32_t            _size_special_data            ;
   public : const uint32_t            _nb_special_register          ;
-  public : const uint32_t            _nb_operation                 ;
-  public : const uint32_t            _nb_type                      ;
   public : const uint32_t            _nb_bypass_write              ;
 
@@ -51,6 +49,4 @@
   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                    ;
 
   public : const bool                _have_component_execute_queue ;
@@ -74,6 +70,4 @@
 			uint32_t size_special_data  ,
 			uint32_t nb_special_register,
-			uint32_t nb_operation       ,
-			uint32_t nb_type            ,
 			uint32_t nb_bypass_write    );
   public : Parameters  (Parameters & param) ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h	(revision 77)
@@ -71,5 +71,5 @@
   public    : SC_IN (Tpacket_t         )    *  in_WRITE_UNIT_IN_PACKET_ID    ;
 //public    : SC_IN (Toperation_t      )    *  in_WRITE_UNIT_IN_OPERATION    ;
-//public    : SC_IN (Ttype_t           )    *  in_WRITE_UNIT_IN_TYPE         ;
+  public    : SC_IN (Ttype_t           )    *  in_WRITE_UNIT_IN_TYPE         ;
   public    : SC_IN (Tcontrol_t        )    *  in_WRITE_UNIT_IN_WRITE_RD     ;
   public    : SC_IN (Tgeneral_address_t)    *  in_WRITE_UNIT_IN_NUM_REG_RD   ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters.cpp	(revision 77)
@@ -29,6 +29,4 @@
 			  uint32_t size_special_data  ,
 			  uint32_t nb_special_register,
-			  uint32_t nb_operation       ,
-			  uint32_t nb_type            ,
 			  uint32_t nb_bypass_write    ):
     _size_write_queue        (size_write_queue   ),
@@ -42,6 +40,4 @@
     _size_special_data       (size_special_data  ),
     _nb_special_register     (nb_special_register),
-    _nb_operation            (nb_operation       ),
-    _nb_type                 (nb_type            ),
     _nb_bypass_write         (nb_bypass_write    ),
 
@@ -55,6 +51,4 @@
     _size_general_register   (log2(_nb_general_register)),
     _size_special_register   (log2(_nb_special_register)),
-    _size_operation          (log2(_nb_operation       )),
-    _size_type               (log2(_nb_type            )),
 
     _have_component_execute_queue (_size_execute_queue > 0),
@@ -75,6 +69,4 @@
 																		    size_special_data  ,
 																		    nb_special_register,
-																		    nb_operation       ,
-																		    nb_type            ,
 																		    nb_bypass_write    );
     
@@ -86,7 +78,5 @@
 																			nb_packet          ,
 																			size_general_data  ,
-																			size_special_data  ,
-																			nb_operation       ,
-																			nb_type            );
+																			size_special_data  );
 
     test();
@@ -108,6 +98,4 @@
     _size_special_data       (param._size_special_data      ),
     _nb_special_register     (param._nb_special_register    ),
-    _nb_operation            (param._nb_operation           ),
-    _nb_type                 (param._nb_type                ),
     _nb_bypass_write         (param._nb_bypass_write        ),
 
@@ -121,6 +109,4 @@
     _size_general_register   (param._size_general_register  ),
     _size_special_register   (param._size_special_register  ),
-    _size_operation          (param._size_operation         ),
-    _size_type               (param._size_type              ),
 
     _have_component_execute_queue (param._have_component_execute_queue),
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters_print.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Parameters_print.cpp	(revision 77)
@@ -37,6 +37,4 @@
     xml.singleton_begin("size_special_data  "); xml.attribut("value",toString(_size_special_data  )); 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_bypass_write    "); xml.attribut("value",toString(_nb_bypass_write    )); xml.singleton_end();
     xml.balise_close();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp	(revision 77)
@@ -66,5 +66,5 @@
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id        );
 //     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation        );
-//     ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
+       ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type             );
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                              );
        ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register );
@@ -199,5 +199,5 @@
        _component->port_map(name, "in_WRITE_QUEUE_IN_PACKET_ID"    , _name, "in_WRITE_UNIT_IN_PACKET_ID"    );
      //_component->port_map(name, "in_WRITE_QUEUE_IN_OPERATION"    , _name, "in_WRITE_UNIT_IN_OPERATION"    );
-     //_component->port_map(name, "in_WRITE_QUEUE_IN_TYPE"         , _name, "in_WRITE_UNIT_IN_TYPE"         );
+       _component->port_map(name, "in_WRITE_QUEUE_IN_TYPE"         , _name, "in_WRITE_UNIT_IN_TYPE"         );
        _component->port_map(name, "in_WRITE_QUEUE_IN_WRITE_RD"     , _name, "in_WRITE_UNIT_IN_WRITE_RD"     );
        _component->port_map(name, "in_WRITE_QUEUE_IN_NUM_REG_RD"   , _name, "in_WRITE_UNIT_IN_NUM_REG_RD"   );
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp	(revision 77)
@@ -40,5 +40,5 @@
 	delete      in_WRITE_UNIT_IN_PACKET_ID    ;
 //      delete      in_WRITE_UNIT_IN_OPERATION    ;
-//      delete      in_WRITE_UNIT_IN_TYPE         ;
+	delete      in_WRITE_UNIT_IN_TYPE         ;
         delete      in_WRITE_UNIT_IN_WRITE_RD     ;
         delete      in_WRITE_UNIT_IN_NUM_REG_RD   ;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile	(revision 77)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ./
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libExecution_unit_to_Write_unit.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/Network/Execution_unit_to_Write_unit/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile.defs	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile.defs	(revision 77)
@@ -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/Network/Execution_unit_to_Write_unit/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile.deps	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/Makefile.deps	(revision 77)
@@ -0,0 +1,37 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Execution_unit_to_Write_unit			= yes
+
+ifndef Behavioural
+include 			$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Directory ]----------------------------------------
+
+Execution_unit_to_Write_unit_DIR			=	$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit
+
+#-----[ Library ]------------------------------------------
+Execution_unit_to_Write_unit_LIBRARY		= 	-lExecution_unit_to_Write_unit	\
+					$(Behavioural_LIBRARY)	
+
+Execution_unit_to_Write_unit_DIR_LIBRARY		=	-L$(Execution_unit_to_Write_unit_DIR)/lib	\
+					$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Execution_unit_to_Write_unit_library		:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile;
+				$(MAKE) --directory=$(Execution_unit_to_Write_unit_DIR) --makefile=Makefile;
+
+Execution_unit_to_Write_unit_library_clean	:
+				@\
+				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile clean;
+				$(MAKE) --directory=$(Execution_unit_to_Write_unit_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/Makefile	(revision 77)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Execution_unit_to_Write_unit_LIBRARY)
+
+DIR_LIBRARY			= $(Execution_unit_to_Write_unit_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Execution_unit_to_Write_unit_library
+
+library_clean			: Execution_unit_to_Write_unit_library_clean
+
+include                         $(DIR_COMPONENT)/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/Network/Execution_unit_to_Write_unit/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_min.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_min.cfg	(revision 77)
@@ -0,0 +1,15 @@
+Execution_unit_to_Write_unit
+2	2 	*2	# nb_execute_unit        
+1	1 	*2	# nb_write_unit           
+1	1	*2	# nb_context             
+1	1	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+0	1	+1	# priority
+1	1	+1	# table_routing        [0][0]
+1	1	+1	# table_routing        [1][0]
+1	1	+1	# table_execute_thread [0][0]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-mono_thread.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-mono_thread.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-mono_thread.cfg	(revision 77)
@@ -0,0 +1,27 @@
+Execution_unit_to_Write_unit
+4	4 	*2	# nb_execute_unit        
+3	3 	*2	# nb_write_unit           
+1	1	*2	# nb_context             
+1	1	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+0	1	+1	# priority
+1	1	+1	# table_routing [0][0]
+0 	0	+1	# table_routing [0][1]
+0	0	+1	# table_routing [0][2]
+0	0	+1	# table_routing [1][0]
+1	1	+1	# table_routing [1][1]
+1	1	+1	# table_routing [1][2]
+0	0	+1	# table_routing [2][0]
+0	0	+1	# table_routing [2][1]
+1	1	+1	# table_routing [2][2]
+1	1	+1	# table_routing [3][0]
+1	1	+1	# table_routing [3][1]
+1	1	+1	# table_routing [3][2]
+1	1	+1	# table_thread  [0][0]
+1	1	+1	# table_thread  [1][0]
+1	1	+1	# table_thread  [2][0]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-multi_thread.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-multi_thread.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/config_multi_execute-multi_thread.cfg	(revision 77)
@@ -0,0 +1,36 @@
+Execution_unit_to_Write_unit
+4	4 	*2	# nb_execute_unit        
+3	3 	*2	# nb_write_unit           
+2	2	*2	# nb_context             
+2	2	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+0	1	+1	# priority
+1	1	+1	# table_routing [0][0]
+0 	0	+1	# table_routing [0][1]
+0	0	+1	# table_routing [0][2]
+0	0	+1	# table_routing [1][0]
+1	1	+1	# table_routing [1][1]
+1	1	+1	# table_routing [1][2]
+0	0	+1	# table_routing [2][0]
+0	0	+1	# table_routing [2][1]
+1	1	+1	# table_routing [2][2]
+1	1	+1	# table_routing [3][0]
+1	1	+1	# table_routing [3][1]
+1	1	+1	# table_routing [3][2]
+1	1	+1	# table_thread  [0][0]
+0	0	+1	# table_thread  [0][1]
+0	0	+1	# table_thread  [0][2]
+0	0	+1	# table_thread  [0][3]
+0	0	+1	# table_thread  [1][0]
+1	1	+1	# table_thread  [1][1]
+1	1	+1	# table_thread  [1][2]
+0	0	+1	# table_thread  [1][3]
+0	0	+1	# table_thread  [2][0]
+0	0	+1	# table_thread  [2][1]
+0	0	+1	# table_thread  [2][2]
+1	1	+1	# table_thread  [2][3]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/include/test.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/include/test.h	(revision 77)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.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::network;
+
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters * param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/main.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/main.cpp	(revision 77)
@@ -0,0 +1,117 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/include/test.h"
+
+#define NB_PARAMS 11
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+  err (_("  * nb_execute_unit                                (uint32_t)\n"));
+  err (_("  * nb_write_unit                                  (uint32_t)\n"));
+  err (_("  * nb_context                                     (uint32_t)\n"));
+  err (_("  * nb_front_end                                   (uint32_t)\n"));
+  err (_("  * nb_ooo_engine                                  (uint32_t)\n"));
+  err (_("  * nb_packet                                      (uint32_t)\n"));
+  err (_("  * size_general_data                              (uint32_t)\n"));
+  err (_("  * size_special_data                              (uint32_t)\n"));
+  err (_("  * nb_general_register                            (uint32_t)\n"));
+  err (_("  * nb_special_register                            (uint32_t)\n"));
+  err (_("  * priority                                       (uint32_t)\n"));
+  err (_("  * table_routing [nb_execute_unit][nb_write_unit] (bool    )\n"));
+  err (_("  * table_thread  [nb_write_unit][nb_thread]       (bool    )\n"));
+
+  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);
+
+  uint32_t       x = 1;
+
+  const string   name      =      argv[x++];
+  uint32_t    _nb_execute_unit      = atoi(argv[x++]);
+  uint32_t    _nb_write_unit        = atoi(argv[x++]);
+  uint32_t    _nb_context           = atoi(argv[x++]);
+  uint32_t    _nb_front_end         = atoi(argv[x++]);
+  uint32_t    _nb_ooo_engine        = atoi(argv[x++]);
+  uint32_t    _nb_packet            = atoi(argv[x++]);
+  uint32_t    _size_general_data    = atoi(argv[x++]);
+  uint32_t    _size_special_data    = atoi(argv[x++]);
+  uint32_t    _nb_general_register  = atoi(argv[x++]);
+  uint32_t    _nb_special_register  = atoi(argv[x++]);
+  Tpriority_t _priority             = fromString<Tpriority_t>(argv[x++]);
+
+  uint32_t    _nb_thread            = get_nb_thread(_nb_context, _nb_front_end, _nb_ooo_engine);
+
+  if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_write_unit*_nb_execute_unit)+(_nb_write_unit*_nb_thread))
+    usage (argc, argv);
+  
+  bool ** _table_routing;
+  bool ** _table_thread ;
+  
+  _table_routing = new bool * [_nb_execute_unit];
+  for (uint32_t i=0; i<_nb_execute_unit; i++)
+    {
+      _table_routing [i] = new bool [_nb_write_unit];
+      for (uint32_t j=0; j<_nb_write_unit; j++)
+	_table_routing [i][j] = atoi(argv[x++]);
+    }
+
+  _table_thread = new bool * [_nb_write_unit];
+  for (uint32_t i=0; i<_nb_write_unit; i++)
+    {
+      _table_thread [i] = new bool [_nb_thread];
+
+      for (uint32_t j=0; j<_nb_thread; j++)
+	_table_thread [i][j] = atoi(argv[x++]);
+    }
+
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters
+	(_nb_execute_unit      ,
+	 _nb_write_unit        ,
+	 _nb_context           ,
+	 _nb_front_end         ,
+	 _nb_ooo_engine        ,
+	 _nb_packet            ,
+	 _size_general_data    ,
+	 _size_special_data    ,
+	 _nb_general_register  ,
+	 _nb_special_register  ,
+	 _priority             ,
+	 _table_routing        ,
+	 _table_thread 
+	 );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      exit (EXIT_FAILURE);
+    }
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/test.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/src/test.cpp	(revision 77)
@@ -0,0 +1,441 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Common/include/BitManipulation.h"
+#include "Behavioural/include/Allocation.h"
+#include <set>
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(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_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+
+class entry_t
+{
+  public : Tcontext_t         _context_id     ;
+  public : Tcontext_t         _front_end_id   ;
+  public : Tcontext_t         _ooo_engine_id  ;
+  public : Tpacket_t          _packet_id      ;
+//public : Toperation_t       _operation      ;
+//public : Ttype_t            _type           ;
+  public : Tcontrol_t         _write_rd       ;
+  public : Tgeneral_address_t _num_reg_rd     ;
+  public : Tgeneral_data_t    _data_rd        ;
+  public : Tcontrol_t         _write_re       ;
+  public : Tspecial_address_t _num_reg_re     ;
+  public : Tspecial_data_t    _data_re        ;
+  public : Texception_t       _exception      ;
+  public : Tcontrol_t         _no_sequence    ;
+  public : Tgeneral_data_t    _address        ;
+  
+public : entry_t (Tcontext_t         context_id     ,
+  		  Tcontext_t         front_end_id   ,
+  		  Tcontext_t         ooo_engine_id  ,
+  		  Tpacket_t          packet_id      ,
+//		  Toperation_t       operation      ,
+//		  Ttype_t            type           ,
+  		  Tcontrol_t         write_rd       ,
+  		  Tgeneral_address_t num_reg_rd     ,
+  		  Tgeneral_data_t    data_rd        ,
+  		  Tcontrol_t         write_re       ,
+  		  Tspecial_address_t num_reg_re     ,
+  		  Tspecial_data_t    data_re        ,
+  		  Texception_t       exception      ,
+  		  Tcontrol_t         no_sequence    ,
+  		  Tgeneral_data_t    address        )
+  {
+    _context_id     = context_id   ;
+    _front_end_id   = front_end_id ;
+    _ooo_engine_id  = ooo_engine_id;
+    _packet_id      = packet_id    ;
+//  _operation      = operation    ;
+//  _type           = type         ;
+    _write_rd       = write_rd     ;
+    _num_reg_rd     = num_reg_rd   ;
+    _data_rd        = data_rd      ;
+    _write_re       = write_re     ;
+    _num_reg_re     = num_reg_re   ;
+    _data_re        = data_re      ;
+    _exception      = exception    ;
+    _no_sequence    = no_sequence  ;
+    _address        = address      ;
+  }
+};
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Execution_unit_to_Write_unit * _Execution_unit_to_Write_unit = new Execution_unit_to_Write_unit (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");
+
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_VAL          ," in_EXECUTE_UNIT_OUT_VAL          ",Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_OUT_ACK          ,"out_EXECUTE_UNIT_OUT_ACK          ",Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_CONTEXT_ID   ," in_EXECUTE_UNIT_OUT_CONTEXT_ID   ",Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_FRONT_END_ID ," in_EXECUTE_UNIT_OUT_FRONT_END_ID ",Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID," in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID",Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_PACKET_ID    ," in_EXECUTE_UNIT_OUT_PACKET_ID    ",Tpacket_t         ,_param->_nb_execute_unit);
+//ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_OPERATION    ," in_EXECUTE_UNIT_OUT_OPERATION    ",Toperation_t      ,_param->_nb_execute_unit);
+//ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_TYPE         ," in_EXECUTE_UNIT_OUT_TYPE         ",Ttype_t           ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RD     ," in_EXECUTE_UNIT_OUT_WRITE_RD     ",Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ," in_EXECUTE_UNIT_OUT_NUM_REG_RD   ",Tgeneral_address_t,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_DATA_RD      ," in_EXECUTE_UNIT_OUT_DATA_RD      ",Tgeneral_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_WRITE_RE     ," in_EXECUTE_UNIT_OUT_WRITE_RE     ",Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NUM_REG_RE   ," in_EXECUTE_UNIT_OUT_NUM_REG_RE   ",Tspecial_address_t,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_DATA_RE      ," in_EXECUTE_UNIT_OUT_DATA_RE      ",Tspecial_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_EXCEPTION    ," in_EXECUTE_UNIT_OUT_EXCEPTION    ",Texception_t      ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ," in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ",Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_OUT_ADDRESS      ," in_EXECUTE_UNIT_OUT_ADDRESS      ",Tgeneral_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_VAL             ,"out_WRITE_UNIT_IN_VAL             ",Tcontrol_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL( in_WRITE_UNIT_IN_ACK             ," in_WRITE_UNIT_IN_ACK             ",Tcontrol_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_CONTEXT_ID      ,"out_WRITE_UNIT_IN_CONTEXT_ID      ",Tcontext_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_FRONT_END_ID    ,"out_WRITE_UNIT_IN_FRONT_END_ID    ",Tcontext_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_OOO_ENGINE_ID   ,"out_WRITE_UNIT_IN_OOO_ENGINE_ID   ",Tcontext_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_PACKET_ID       ,"out_WRITE_UNIT_IN_PACKET_ID       ",Tpacket_t         ,_param->_nb_write_unit  );
+//ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_OPERATION       ,"out_WRITE_UNIT_IN_OPERATION       ",Toperation_t      ,_param->_nb_write_unit  );
+//ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_TYPE            ,"out_WRITE_UNIT_IN_TYPE            ",Ttype_t           ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_WRITE_RD        ,"out_WRITE_UNIT_IN_WRITE_RD        ",Tcontrol_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RD      ,"out_WRITE_UNIT_IN_NUM_REG_RD      ",Tgeneral_address_t,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_DATA_RD         ,"out_WRITE_UNIT_IN_DATA_RD         ",Tgeneral_data_t   ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_WRITE_RE        ,"out_WRITE_UNIT_IN_WRITE_RE        ",Tcontrol_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NUM_REG_RE      ,"out_WRITE_UNIT_IN_NUM_REG_RE      ",Tspecial_address_t,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_DATA_RE         ,"out_WRITE_UNIT_IN_DATA_RE         ",Tspecial_data_t   ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_EXCEPTION       ,"out_WRITE_UNIT_IN_EXCEPTION       ",Texception_t      ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_NO_SEQUENCE     ,"out_WRITE_UNIT_IN_NO_SEQUENCE     ",Tcontrol_t        ,_param->_nb_write_unit  );
+  ALLOC1_SC_SIGNAL(out_WRITE_UNIT_IN_ADDRESS         ,"out_WRITE_UNIT_IN_ADDRESS         ",Tgeneral_data_t   ,_param->_nb_write_unit  );
+    
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _Execution_unit_to_Write_unit.\n"),name.c_str());
+
+  (*(_Execution_unit_to_Write_unit->in_CLOCK))        (*(in_CLOCK));
+  (*(_Execution_unit_to_Write_unit->in_NRESET))       (*(in_NRESET));
+
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_VAL          ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_EXECUTE_UNIT_OUT_ACK          ,_param->_nb_execute_unit);
+  if (_param->_have_port_context_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_CONTEXT_ID   ,_param->_nb_execute_unit);
+  if (_param->_have_port_front_end_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_FRONT_END_ID ,_param->_nb_execute_unit);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID,_param->_nb_execute_unit);
+  if (_param->_have_port_packet_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_PACKET_ID    ,_param->_nb_execute_unit);
+//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_OPERATION    ,_param->_nb_execute_unit);
+//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_TYPE         ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_WRITE_RD     ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_DATA_RD      ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_WRITE_RE     ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_NUM_REG_RE   ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_DATA_RE      ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_EXCEPTION    ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_EXECUTE_UNIT_OUT_ADDRESS      ,_param->_nb_execute_unit);
+
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_VAL             ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit, in_WRITE_UNIT_IN_ACK             ,_param->_nb_write_unit  );
+  if (_param->_have_port_context_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_CONTEXT_ID      ,_param->_nb_write_unit  );
+  if (_param->_have_port_front_end_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_FRONT_END_ID    ,_param->_nb_write_unit  );
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_OOO_ENGINE_ID   ,_param->_nb_write_unit  );
+  if (_param->_have_port_packet_id)
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_PACKET_ID       ,_param->_nb_write_unit  );
+//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_OPERATION       ,_param->_nb_write_unit  );
+//INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_TYPE            ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_WRITE_RD        ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_NUM_REG_RD      ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_DATA_RD         ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_WRITE_RE        ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_NUM_REG_RE      ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_DATA_RE         ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_EXCEPTION       ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_NO_SEQUENCE     ,_param->_nb_write_unit  );
+  INSTANCE1_SC_SIGNAL(_Execution_unit_to_Write_unit,out_WRITE_UNIT_IN_ADDRESS         ,_param->_nb_write_unit  );
+
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+// const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  const  int32_t percent_transaction_in  = 75;
+  const  int32_t percent_transaction_out = 75;
+
+  set<Tcontext_t> execute_unit_thread [_param->_nb_execute_unit];
+ 
+  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+    for (uint32_t j=0; j<_param->_nb_write_unit; j++)
+      if (_param->_table_routing[i][j])
+	for (uint32_t k=0; k<_param->_nb_thread; k++)
+	  if (_param->_table_thread[j][k])
+	    {
+	      execute_unit_thread [i].insert(k);
+	    }
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  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 %d",iteration);
+
+      list<entry_t> request [_param->_nb_execute_unit];
+
+      uint32_t nb_request_in;
+      for (nb_request_in=0; nb_request_in < _param->_nb_packet; )
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  {
+	    if (nb_request_in >= _param->_nb_packet)
+	      break;
+
+	    Tcontext_t context_id   ;
+	    Tcontext_t front_end_id ;
+	    Tcontext_t ooo_engine_id;
+	    Tcontext_t num_thread   ;
+
+	    // Find compatible thread
+	    do
+	      {
+		context_id    = range<Tcontext_t> (rand(), _param->_size_context_id   );
+		front_end_id  = range<Tcontext_t> (rand(), _param->_size_front_end_id );
+		ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id);
+		num_thread    = get_num_thread (context_id   , _param->_size_context_id   ,
+						front_end_id , _param->_size_front_end_id ,
+						ooo_engine_id, _param->_size_ooo_engine_id);
+	      }
+	    while (execute_unit_thread[i].find(num_thread) == execute_unit_thread[i].end());
+
+	    request[i].push_back(entry_t (context_id   ,
+					  front_end_id ,
+					  ooo_engine_id,
+					  nb_request_in,
+					  //range<Toperation_t      > (rand(), _param->_size_operation       ),
+					  //range<Ttype_t           > (rand(), _param->_size_type            ),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tgeneral_address_t> (rand(), _param->_size_general_register),
+					  range<Tgeneral_data_t   > (rand(), _param->_size_general_data    ),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tspecial_address_t> (rand(), _param->_size_special_register),
+					  range<Tspecial_data_t   > (rand(), _param->_size_special_data    ),
+					  range<Texception_t      > (rand(), _param->_size_exception       ),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tgeneral_data_t   > (rand(), _param->_size_general_data    )
+					  ));
+
+	    nb_request_in++;
+	  }
+
+      uint32_t   nb_request_out = 0;
+
+      while (nb_request_out < nb_request_in)
+	{
+	  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	    {
+	      bool val = not request[i].empty() and ((rand()%100) < percent_transaction_in);
+		
+	      in_EXECUTE_UNIT_OUT_VAL [i]->write(val);
+
+	      if (val)
+		{
+		  in_EXECUTE_UNIT_OUT_CONTEXT_ID           [i] ->write(request[i].front()._context_id           );
+		  in_EXECUTE_UNIT_OUT_FRONT_END_ID         [i] ->write(request[i].front()._front_end_id         );
+		  in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID        [i] ->write(request[i].front()._ooo_engine_id        );
+		  in_EXECUTE_UNIT_OUT_PACKET_ID            [i] ->write(request[i].front()._packet_id            );
+// 		  in_EXECUTE_UNIT_OUT_OPERATION            [i] ->write(request[i].front()._operation            );
+// 		  in_EXECUTE_UNIT_OUT_TYPE                 [i] ->write(request[i].front()._type                 );
+		  in_EXECUTE_UNIT_OUT_WRITE_RD             [i] ->write(request[i].front()._write_rd             );
+		  in_EXECUTE_UNIT_OUT_NUM_REG_RD           [i] ->write(request[i].front()._num_reg_rd           );
+		  in_EXECUTE_UNIT_OUT_DATA_RD              [i] ->write(request[i].front()._data_rd              );
+		  in_EXECUTE_UNIT_OUT_WRITE_RE             [i] ->write(request[i].front()._write_re             );
+		  in_EXECUTE_UNIT_OUT_NUM_REG_RE           [i] ->write(request[i].front()._num_reg_re           );
+		  in_EXECUTE_UNIT_OUT_DATA_RE              [i] ->write(request[i].front()._data_re              );
+		  in_EXECUTE_UNIT_OUT_EXCEPTION            [i] ->write(request[i].front()._exception            );
+		  in_EXECUTE_UNIT_OUT_NO_SEQUENCE          [i] ->write(request[i].front()._no_sequence          );
+		  in_EXECUTE_UNIT_OUT_ADDRESS              [i] ->write(request[i].front()._address              );
+		}
+	    }
+
+	  for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+	    in_WRITE_UNIT_IN_ACK [i]->write((rand()%100) < percent_transaction_out);
+
+	  SC_START(0);
+
+	  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	    if (in_EXECUTE_UNIT_OUT_VAL [i]->read() and out_EXECUTE_UNIT_OUT_ACK [i]->read())
+	      {
+		LABEL("EXECUTE_UNIT_OUT   [%d] - Transaction accepted",i);
+	      }
+
+	  for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+	    if (out_WRITE_UNIT_IN_VAL [i]->read() and in_WRITE_UNIT_IN_ACK [i]->read())
+	      {
+		LABEL("WRITE_UNIT_IN [%d] - Transaction accepted (%d)",i,nb_request_out);
+		nb_request_out ++;
+		
+		Tpacket_t packet = (_param->_have_port_packet_id)?out_WRITE_UNIT_IN_PACKET_ID[i]->read():0;
+		LABEL("  * packet           : %d",packet);		
+		uint32_t execute_unit;
+
+		// find execute_unit
+		for (execute_unit=0; execute_unit<_param->_nb_execute_unit; execute_unit++)
+		  if (packet == ((_param->_have_port_packet_id)?request[execute_unit].front()._packet_id:0))
+		    break;
+
+		LABEL("  * execute_unit source : %d",execute_unit);
+
+		if (_param->_have_port_packet_id)
+		TEST(Tcontext_t        ,out_WRITE_UNIT_IN_PACKET_ID            [i]->read(), request[execute_unit].front()._packet_id            );
+
+		// Authorised link ? execute_unit -> write_unit
+		TEST(bool, _param->_table_routing[execute_unit][i], true);
+
+		if (_param->_have_port_context_id)
+		TEST(Tcontext_t        ,out_WRITE_UNIT_IN_CONTEXT_ID           [i]->read(), request[execute_unit].front()._context_id           );
+		if (_param->_have_port_front_end_id)
+		TEST(Tcontext_t        ,out_WRITE_UNIT_IN_FRONT_END_ID         [i]->read(), request[execute_unit].front()._front_end_id         );
+		if (_param->_have_port_ooo_engine_id)
+		TEST(Tcontext_t        ,out_WRITE_UNIT_IN_OOO_ENGINE_ID        [i]->read(), request[execute_unit].front()._ooo_engine_id        );
+// 		TEST(Toperation_t      ,out_WRITE_UNIT_IN_OPERATION            [i]->read(), request[execute_unit].front()._operation            );
+// 		TEST(Ttype_t           ,out_WRITE_UNIT_IN_TYPE                 [i]->read(), request[execute_unit].front()._type                 );
+		TEST(Tcontrol_t        ,out_WRITE_UNIT_IN_WRITE_RD             [i]->read(), request[execute_unit].front()._write_rd             );
+		TEST(Tgeneral_address_t,out_WRITE_UNIT_IN_NUM_REG_RD           [i]->read(), request[execute_unit].front()._num_reg_rd           );
+		TEST(Tgeneral_data_t   ,out_WRITE_UNIT_IN_DATA_RD              [i]->read(), request[execute_unit].front()._data_rd              );
+		TEST(Tcontrol_t        ,out_WRITE_UNIT_IN_WRITE_RE             [i]->read(), request[execute_unit].front()._write_re             );
+		TEST(Tspecial_address_t,out_WRITE_UNIT_IN_NUM_REG_RE           [i]->read(), request[execute_unit].front()._num_reg_re           );
+		TEST(Tspecial_data_t   ,out_WRITE_UNIT_IN_DATA_RE              [i]->read(), request[execute_unit].front()._data_re              );
+		TEST(Texception_t      ,out_WRITE_UNIT_IN_EXCEPTION            [i]->read(), request[execute_unit].front()._exception            );
+		TEST(Tcontrol_t        ,out_WRITE_UNIT_IN_NO_SEQUENCE          [i]->read(), request[execute_unit].front()._no_sequence          );
+		TEST(Tgeneral_data_t   ,out_WRITE_UNIT_IN_ADDRESS              [i]->read(), request[execute_unit].front()._address              );
+		
+		request[execute_unit].pop_front();
+	      }
+	  SC_START(1);
+	}
+
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete in_CLOCK;
+  delete in_NRESET;
+
+  delete []  in_EXECUTE_UNIT_OUT_VAL          ;
+  delete [] out_EXECUTE_UNIT_OUT_ACK          ;
+  delete []  in_EXECUTE_UNIT_OUT_CONTEXT_ID   ;
+  delete []  in_EXECUTE_UNIT_OUT_FRONT_END_ID ;
+  delete []  in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID;
+  delete []  in_EXECUTE_UNIT_OUT_PACKET_ID    ;
+//delete []  in_EXECUTE_UNIT_OUT_OPERATION    ;
+//delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
+  delete []  in_EXECUTE_UNIT_OUT_WRITE_RD     ;
+  delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RD   ;
+  delete []  in_EXECUTE_UNIT_OUT_DATA_RD      ;
+  delete []  in_EXECUTE_UNIT_OUT_WRITE_RE     ;
+  delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RE   ;
+  delete []  in_EXECUTE_UNIT_OUT_DATA_RE      ;
+  delete []  in_EXECUTE_UNIT_OUT_EXCEPTION    ;
+  delete []  in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ;
+  delete []  in_EXECUTE_UNIT_OUT_ADDRESS      ;
+
+  delete [] out_WRITE_UNIT_IN_VAL             ;
+  delete []  in_WRITE_UNIT_IN_ACK             ;
+  delete [] out_WRITE_UNIT_IN_CONTEXT_ID      ;
+  delete [] out_WRITE_UNIT_IN_FRONT_END_ID    ;
+  delete [] out_WRITE_UNIT_IN_OOO_ENGINE_ID   ;
+  delete [] out_WRITE_UNIT_IN_PACKET_ID       ;
+//delete [] out_WRITE_UNIT_IN_OPERATION       ;
+//delete [] out_WRITE_UNIT_IN_TYPE            ;
+  delete [] out_WRITE_UNIT_IN_WRITE_RD        ;
+  delete [] out_WRITE_UNIT_IN_NUM_REG_RD      ;
+  delete [] out_WRITE_UNIT_IN_DATA_RD         ;
+  delete [] out_WRITE_UNIT_IN_WRITE_RE        ;
+  delete [] out_WRITE_UNIT_IN_NUM_REG_RE      ;
+  delete [] out_WRITE_UNIT_IN_DATA_RE         ;
+  delete [] out_WRITE_UNIT_IN_EXCEPTION       ;
+  delete [] out_WRITE_UNIT_IN_NO_SEQUENCE     ;
+  delete [] out_WRITE_UNIT_IN_ADDRESS         ;
+#endif
+
+  delete _Execution_unit_to_Write_unit;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/Execution_unit_to_Write_unit.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/Execution_unit_to_Write_unit.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/Execution_unit_to_Write_unit.tex	(revision 77)
@@ -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/Network/Execution_unit_to_Write_unit/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/Makefile	(revision 77)
@@ -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/Network/Execution_unit_to_Write_unit/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/sty/header.sty	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/sty/header.sty	(revision 77)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Execution_unit_to_Write_unit}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/01_introduction.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/01_introduction.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/02_features.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/02_features.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/03_description.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/03_description.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/04_pinout.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/04_pinout.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/05_parameters.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/05_parameters.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/06_performance.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/06_performance.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/07_details.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/07_details.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/08_history.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/08_history.tex	(revision 77)
@@ -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/Network/Execution_unit_to_Write_unit/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/root.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/doc/tex/root.tex	(revision 77)
@@ -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/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h	(revision 77)
@@ -0,0 +1,168 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Execution_unit_to_Write_unit_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Execution_unit_to_Write_unit_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include <list>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+namespace morpheo {
+namespace behavioural {
+
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+  class Execution_unit_to_Write_unit 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _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 "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_OUT_VAL            ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_UNIT_OUT_ACK            ;
+  public    : SC_IN (Tcontext_t        )   **  in_EXECUTE_UNIT_OUT_CONTEXT_ID     ;
+  public    : SC_IN (Tcontext_t        )   **  in_EXECUTE_UNIT_OUT_FRONT_END_ID   ;
+  public    : SC_IN (Tcontext_t        )   **  in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID  ;
+  public    : SC_IN (Tpacket_t         )   **  in_EXECUTE_UNIT_OUT_PACKET_ID      ;
+//public    : SC_IN (Toperation_t      )   **  in_EXECUTE_UNIT_OUT_OPERATION      ;
+//public    : SC_IN (Ttype_t           )   **  in_EXECUTE_UNIT_OUT_TYPE           ;
+  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_OUT_WRITE_RD       ;
+  public    : SC_IN (Tgeneral_address_t)   **  in_EXECUTE_UNIT_OUT_NUM_REG_RD     ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_EXECUTE_UNIT_OUT_DATA_RD        ;
+  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_OUT_WRITE_RE       ;
+  public    : SC_IN (Tspecial_address_t)   **  in_EXECUTE_UNIT_OUT_NUM_REG_RE     ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_EXECUTE_UNIT_OUT_DATA_RE        ;
+  public    : SC_IN (Texception_t      )   **  in_EXECUTE_UNIT_OUT_EXCEPTION      ;
+  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_OUT_NO_SEQUENCE    ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_EXECUTE_UNIT_OUT_ADDRESS        ;
+
+    // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_VAL            ;
+  public    : SC_IN (Tcontrol_t        )   **  in_WRITE_UNIT_IN_ACK            ;
+  public    : SC_OUT(Tcontext_t        )   ** out_WRITE_UNIT_IN_CONTEXT_ID     ;
+  public    : SC_OUT(Tcontext_t        )   ** out_WRITE_UNIT_IN_FRONT_END_ID   ;
+  public    : SC_OUT(Tcontext_t        )   ** out_WRITE_UNIT_IN_OOO_ENGINE_ID  ;
+  public    : SC_OUT(Tpacket_t         )   ** out_WRITE_UNIT_IN_PACKET_ID      ;
+//public    : SC_OUT(Toperation_t      )   ** out_WRITE_UNIT_IN_OPERATION      ;
+//public    : SC_OUT(Ttype_t           )   ** out_WRITE_UNIT_IN_TYPE           ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_WRITE_RD       ;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_WRITE_UNIT_IN_NUM_REG_RD     ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_WRITE_UNIT_IN_DATA_RD        ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_WRITE_RE       ;
+  public    : SC_OUT(Tspecial_address_t)   ** out_WRITE_UNIT_IN_NUM_REG_RE     ;
+  public    : SC_OUT(Tspecial_data_t   )   ** out_WRITE_UNIT_IN_DATA_RE        ;
+  public    : SC_OUT(Texception_t      )   ** out_WRITE_UNIT_IN_EXCEPTION      ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_WRITE_UNIT_IN_NO_SEQUENCE    ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_WRITE_UNIT_IN_ADDRESS        ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : std::list<uint32_t> ** _destination; // [nb_execute_unit][nb_thread];
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Execution_unit_to_Write_unit);
+#endif
+  public  :          Execution_unit_to_Write_unit              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~Execution_unit_to_Write_unit             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+  public  : void        transition                (void);
+  public  : void        genMealy                  (void);
+#endif					       
+
+#if VHDL				       
+  public  : void        vhdl                      (void);
+  private : void        vhdl_declaration          (Vhdl * & vhdl);
+  private : void        vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+
+#ifdef STATISTICS
+  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+#endif
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void        end_cycle                 (void);
+#endif
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h	(revision 77)
@@ -0,0 +1,88 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Parameters.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t    _nb_execute_unit              ;
+  public : const uint32_t    _nb_write_unit                ;
+  public : const uint32_t    _nb_context                   ;
+  public : const uint32_t    _nb_front_end                 ;
+  public : const uint32_t    _nb_ooo_engine                ;
+  public : const uint32_t    _nb_packet                    ;
+  public : const uint32_t    _size_general_data            ;
+  public : const uint32_t    _size_special_data            ;
+  public : const uint32_t    _nb_general_register          ;
+  public : const uint32_t    _nb_special_register          ;
+  public : const Tpriority_t _priority                     ;
+  public :       bool     ** _table_routing                ; //array [nb_execute_unit][nb_write_unit]
+  public :       bool     ** _table_thread                 ; //array [nb_write_unit][nb_thread]
+
+  public : const uint32_t    _size_context_id              ;
+  public : const uint32_t    _size_front_end_id            ;
+  public : const uint32_t    _size_ooo_engine_id           ;
+  public : const uint32_t    _size_packet_id               ;
+  public : const uint32_t    _size_general_register        ;
+  public : const uint32_t    _size_special_register        ;
+
+  public : const bool        _have_port_context_id         ;
+  public : const bool        _have_port_front_end_id       ;
+  public : const bool        _have_port_ooo_engine_id      ;
+  public : const bool        _have_port_packet_id          ;
+
+  public : const uint32_t    _nb_thread                    ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t    nb_execute_unit              ,
+			uint32_t    nb_write_unit                ,
+			uint32_t    nb_context                   ,
+			uint32_t    nb_front_end                 ,
+			uint32_t    nb_ooo_engine                ,
+			uint32_t    nb_packet                    ,
+			uint32_t    size_general_data            ,
+			uint32_t    size_special_data            ,
+			uint32_t    nb_general_register          ,
+			uint32_t    nb_special_register          ,
+			Tpriority_t priority                     ,
+			bool     ** table_routing                ,
+			bool     ** table_thread                 );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters ();
+
+  public :        std::string   msg_error  (void);
+
+  public :        std::string   print      (uint32_t depth);
+  public : friend std::ostream& operator<< (std::ostream& output_stream,
+					    morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters & x);
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Types.h	(revision 77)
@@ -0,0 +1,60 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Types_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_execution_unit_to_write_unit_Types_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Common/include/ToString.h"
+#include "Common/include/FromString.h"
+#include "Common/include/ErrorMorpheo.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+  typedef enum
+    {
+      PRIORITY_STATIC,
+      PRIORITY_ROUND_ROBIN
+    } Tpriority_t;
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+}; // end namespace behavioural
+
+  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Tpriority_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Tpriority_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::PRIORITY_STATIC      : return "priority_static"; break;
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::PRIORITY_ROUND_ROBIN : return "priority_round_robin"; break;
+      default    : return ""      ; break;
+      }
+  };
+
+  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Tpriority_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Tpriority_t>(const std::string& x)
+  {
+    if ( (x.compare("0")                    == 0) or
+         (x.compare("priority_static")      == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::PRIORITY_STATIC;
+    if ( (x.compare("1")                    == 0) or
+         (x.compare("priority_round_robin") == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::PRIORITY_ROUND_ROBIN;
+    throw (ERRORMORPHEO ("fromString","Unknow string : \""+x+"\""));
+  };
+
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit.cpp	(revision 77)
@@ -0,0 +1,380 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::Execution_unit_to_Write_unit"
+  Execution_unit_to_Write_unit::Execution_unit_to_Write_unit 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Allocation of statistics");
+
+	statistics_declaration(param_statistics);
+      }
+#endif
+
+#ifdef VHDL
+    if (_usage & USE_VHDL)
+      {
+	// generate the vhdl
+	log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Generate the vhdl");
+	
+	vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (_usage & USE_SYSTEMC)
+      {
+	log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Method - transition");
+
+	SC_METHOD (transition);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+
+	log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Method - genMealy");
+
+	SC_METHOD (genMealy);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  {
+	    if (_param->_have_port_context_id)
+            sensitive << (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i]));
+            if (_param->_have_port_front_end_id)
+	    sensitive << (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i]));
+            if (_param->_have_port_ooo_engine_id)
+	    sensitive << (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i]));
+            if (_param->_have_port_packet_id)
+	    sensitive << (*(in_EXECUTE_UNIT_OUT_PACKET_ID     [i]));
+
+ 	    sensitive << (*(in_EXECUTE_UNIT_OUT_VAL           [i]))
+	            //<< (*(in_EXECUTE_UNIT_OUT_OPERATION     [i]))
+	            //<< (*(in_EXECUTE_UNIT_OUT_TYPE          [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_WRITE_RD      [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD    [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_DATA_RD       [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_WRITE_RE      [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE    [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_DATA_RE       [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_EXCEPTION     [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE   [i]))
+		      << (*(in_EXECUTE_UNIT_OUT_ADDRESS       [i]));
+	  }
+	for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+	  sensitive << (*(in_WRITE_UNIT_IN_ACK [i]));
+
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  {
+	    (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [i]));
+	    if (_param->_have_port_context_id)
+	    (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i]));
+	    if (_param->_have_port_front_end_id)
+	    (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i]));
+	    if (_param->_have_port_ooo_engine_id)
+	    (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_write_unit; j++)
+	      (*(out_EXECUTE_UNIT_OUT_ACK [i])) (*(in_WRITE_UNIT_IN_ACK [j])); 
+	  }
+
+	for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+	  {
+	    (*(out_WRITE_UNIT_IN_VAL [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    if (_param->_have_port_context_id)
+	      {
+	    (*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+	    if (_param->_have_port_front_end_id)
+	      {
+	    (*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+	    if (_param->_have_port_ooo_engine_id)
+	      {
+	    (*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+	    if (_param->_have_port_packet_id)
+	      {
+	    (*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_PACKET_ID [j]));
+		(*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+// 	    (*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+// 	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+// 	      {
+// 		(*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OPERATION [j]));
+// 		(*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+// 		if (_param->_have_port_context_id)
+// 		(*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+// 		if (_param->_have_port_front_end_id)
+// 		(*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+// 		if (_param->_have_port_ooo_engine_id)
+// 		(*(out_WRITE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+// 	      }
+
+// 	    (*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+// 	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+// 	      {
+// 		(*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_TYPE [j]));
+// 		(*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+// 		if (_param->_have_port_context_id)
+// 		(*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+// 		if (_param->_have_port_front_end_id)
+// 		(*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+// 		if (_param->_have_port_ooo_engine_id)
+// 		(*(out_WRITE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+// 	      }
+
+	    (*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RD [j]));
+		(*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RD [j]));
+		(*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RD [j]));
+		(*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_DATA_RD [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_WRITE_RE [j]));
+		(*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_NUM_REG_RE [j]));
+		(*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_DATA_RE [j]));
+		(*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_DATA_RE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_EXCEPTION [j]));
+		(*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_EXCEPTION [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_NO_SEQUENCE [j]));
+		(*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_NO_SEQUENCE [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_WRITE_UNIT_IN_ACK [i])); 
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      {
+		(*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_ADDRESS [j]));
+		(*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_VAL           [j]));
+		if (_param->_have_port_context_id)
+		(*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_WRITE_UNIT_IN_ADDRESS [i])) (*(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	  }
+# endif    
+	
+#endif
+      }
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::~Execution_unit_to_Write_unit"
+  Execution_unit_to_Write_unit::~Execution_unit_to_Write_unit (void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {
+	log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Generate Statistics file");
+	
+	delete _stat;
+      }
+#endif
+
+    log_printf(INFO,Execution_unit_to_Write_unit,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp	(revision 77)
@@ -0,0 +1,124 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::allocation"
+  void Execution_unit_to_Write_unit::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    _component   = new Component (_usage);
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Execution_unit_to_Write_unit"
+#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 "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit);
+
+       ALLOC1_VAL_IN    ( in_EXECUTE_UNIT_OUT_VAL);
+       ALLOC1_ACK_OUT   (out_EXECUTE_UNIT_OUT_ACK);
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id      );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id    );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id       );
+     //ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       );
+     //ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data    );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception       );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data    );
+     }
+    // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);
+
+       ALLOC1_VAL_OUT(out_WRITE_UNIT_IN_VAL);
+       ALLOC1_ACK_IN ( in_WRITE_UNIT_IN_ACK);
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id      );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t        ,_param->_size_front_end_id    );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t        ,_param->_size_ooo_engine_id   );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_PACKET_ID    ,"packet_id"    ,Tpacket_t         ,_param->_size_packet_id       );
+     //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation       );
+     //ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type            );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_DATA_RD      ,"data_rd"      ,Tgeneral_data_t   ,_param->_size_general_data    );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register);
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_DATA_RE      ,"data_re"      ,Tspecial_data_t   ,_param->_size_special_data    );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception       );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NO_SEQUENCE  ,"no_sequence"  ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data    );
+     }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+     _destination = new std::list<uint32_t> * [_param->_nb_execute_unit];
+     for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+       {
+	 _destination [i] = new std::list<uint32_t> [_param->_nb_thread];
+       }
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp	(revision 77)
@@ -0,0 +1,88 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::deallocation"
+  void Execution_unit_to_Write_unit::deallocation (void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    if (_usage & USE_SYSTEMC)
+      {
+	delete     in_CLOCK ;
+	delete     in_NRESET;
+
+ 	delete []  in_EXECUTE_UNIT_OUT_VAL;
+        delete [] out_EXECUTE_UNIT_OUT_ACK;
+	if (_param->_have_port_context_id)
+        delete []  in_EXECUTE_UNIT_OUT_CONTEXT_ID   ;
+        if (_param->_have_port_front_end_id)
+	delete []  in_EXECUTE_UNIT_OUT_FRONT_END_ID ;
+        if (_param->_have_port_ooo_engine_id)
+	delete []  in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID;
+        if (_param->_have_port_packet_id)
+	delete []  in_EXECUTE_UNIT_OUT_PACKET_ID    ;
+      //delete []  in_EXECUTE_UNIT_OUT_OPERATION    ;
+      //delete []  in_EXECUTE_UNIT_OUT_TYPE         ;
+        delete []  in_EXECUTE_UNIT_OUT_WRITE_RD     ;
+        delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RD   ;
+        delete []  in_EXECUTE_UNIT_OUT_DATA_RD      ;
+        delete []  in_EXECUTE_UNIT_OUT_WRITE_RE     ;
+        delete []  in_EXECUTE_UNIT_OUT_NUM_REG_RE   ;
+        delete []  in_EXECUTE_UNIT_OUT_DATA_RE      ;
+        delete []  in_EXECUTE_UNIT_OUT_EXCEPTION    ;
+        delete []  in_EXECUTE_UNIT_OUT_NO_SEQUENCE  ;
+        delete []  in_EXECUTE_UNIT_OUT_ADDRESS      ;
+
+        delete [] out_WRITE_UNIT_IN_VAL;
+        delete []  in_WRITE_UNIT_IN_ACK;
+        if (_param->_have_port_context_id)
+	delete [] out_WRITE_UNIT_IN_CONTEXT_ID   ;
+        if (_param->_have_port_front_end_id)
+	delete [] out_WRITE_UNIT_IN_FRONT_END_ID ;
+        if (_param->_have_port_ooo_engine_id)
+	delete [] out_WRITE_UNIT_IN_OOO_ENGINE_ID;
+        if (_param->_have_port_packet_id)
+	delete [] out_WRITE_UNIT_IN_PACKET_ID    ;
+      //delete [] out_WRITE_UNIT_IN_OPERATION    ;
+      //delete [] out_WRITE_UNIT_IN_TYPE         ;
+        delete [] out_WRITE_UNIT_IN_WRITE_RD     ;
+        delete [] out_WRITE_UNIT_IN_NUM_REG_RD   ;
+        delete [] out_WRITE_UNIT_IN_DATA_RD      ;
+        delete [] out_WRITE_UNIT_IN_WRITE_RE     ;
+        delete [] out_WRITE_UNIT_IN_NUM_REG_RE   ;
+        delete [] out_WRITE_UNIT_IN_DATA_RE      ;
+        delete [] out_WRITE_UNIT_IN_EXCEPTION    ;
+        delete [] out_WRITE_UNIT_IN_NO_SEQUENCE  ;
+        delete [] out_WRITE_UNIT_IN_ADDRESS      ;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete [] _destination;
+    delete    _component;
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_end_cycle.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_end_cycle.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_end_cycle.cpp	(revision 77)
@@ -0,0 +1,47 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::end_cycle"
+void Execution_unit_to_Write_unit::end_cycle ()
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_genMealy.cpp	(revision 77)
@@ -0,0 +1,109 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::genMealy"
+  void Execution_unit_to_Write_unit::genMealy (void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    bool write_unit_use [_param->_nb_write_unit];
+
+    for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+      write_unit_use[i] = (PORT_READ(in_WRITE_UNIT_IN_ACK [i]) == 0);
+
+    for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+      {
+	bool       ack = false;
+
+	log_printf(TRACE,Execution_unit_to_Write_unit,FUNCTION,"Test execute_unit[%d]",i);
+
+	if (PORT_READ(in_EXECUTE_UNIT_OUT_VAL [i]) == true)
+	  {
+	    log_printf(TRACE,Execution_unit_to_Write_unit,FUNCTION," * have a valid entry.");
+	    
+	    Tcontext_t context_id    = (_param->_have_port_context_id   )?PORT_READ(in_EXECUTE_UNIT_OUT_CONTEXT_ID    [i]):0;
+	    Tcontext_t front_end_id  = (_param->_have_port_front_end_id )?PORT_READ(in_EXECUTE_UNIT_OUT_FRONT_END_ID  [i]):0;
+	    Tcontext_t ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID [i]):0;
+	    Tcontext_t num_thread    = get_num_thread(context_id   , _param->_size_context_id   ,
+						      front_end_id , _param->_size_front_end_id ,
+						      ooo_engine_id, _param->_size_ooo_engine_id);
+#ifdef DEBUG_TEST
+	    if (_destination[i][num_thread].empty())
+	      throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no write_unit to receive a operation from the execute_unit ["+toString(i)+"], thread ["+toString(num_thread)+"].");
+#endif
+
+	    // find a free write_unit
+	    for (std::list<uint32_t>::iterator it=_destination[i][num_thread].begin();
+		 (it != _destination[i][num_thread].end()) and (ack == false);
+		 it++)
+	      {
+		uint32_t dest = *it;
+
+		log_printf(TRACE,Execution_unit_to_Write_unit,FUNCTION,"   * Test destination [%d].",dest);
+			    
+		if (write_unit_use [dest] == false)
+		  {
+		    log_printf(TRACE,Execution_unit_to_Write_unit,FUNCTION,"     * Is ok! Link.");
+		    // have find !!!
+		    ack                   = true;
+		    write_unit_use [dest] = true;
+
+		    if (_param->_have_port_context_id)
+		    PORT_WRITE(out_WRITE_UNIT_IN_CONTEXT_ID            [dest], PORT_READ(in_EXECUTE_UNIT_OUT_CONTEXT_ID            [i]));
+		    if (_param->_have_port_front_end_id)
+		    PORT_WRITE(out_WRITE_UNIT_IN_FRONT_END_ID          [dest], PORT_READ(in_EXECUTE_UNIT_OUT_FRONT_END_ID          [i]));
+		    if (_param->_have_port_ooo_engine_id)
+		    PORT_WRITE(out_WRITE_UNIT_IN_OOO_ENGINE_ID         [dest], PORT_READ(in_EXECUTE_UNIT_OUT_OOO_ENGINE_ID         [i]));
+		    if (_param->_have_port_packet_id)
+		    PORT_WRITE(out_WRITE_UNIT_IN_PACKET_ID             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_PACKET_ID             [i]));
+		  //PORT_WRITE(out_WRITE_UNIT_IN_OPERATION             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_OPERATION             [i]));
+		  //PORT_WRITE(out_WRITE_UNIT_IN_TYPE                  [dest], PORT_READ(in_EXECUTE_UNIT_OUT_TYPE                  [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_WRITE_RD              [dest], PORT_READ(in_EXECUTE_UNIT_OUT_WRITE_RD              [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_NUM_REG_RD            [dest], PORT_READ(in_EXECUTE_UNIT_OUT_NUM_REG_RD            [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_DATA_RD               [dest], PORT_READ(in_EXECUTE_UNIT_OUT_DATA_RD               [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_WRITE_RE              [dest], PORT_READ(in_EXECUTE_UNIT_OUT_WRITE_RE              [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_NUM_REG_RE            [dest], PORT_READ(in_EXECUTE_UNIT_OUT_NUM_REG_RE            [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_DATA_RE               [dest], PORT_READ(in_EXECUTE_UNIT_OUT_DATA_RE               [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_EXCEPTION             [dest], PORT_READ(in_EXECUTE_UNIT_OUT_EXCEPTION             [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_NO_SEQUENCE           [dest], PORT_READ(in_EXECUTE_UNIT_OUT_NO_SEQUENCE           [i]));
+		    PORT_WRITE(out_WRITE_UNIT_IN_ADDRESS               [dest], PORT_READ(in_EXECUTE_UNIT_OUT_ADDRESS               [i]));
+		  }
+	      }
+	  }
+	PORT_WRITE(out_EXECUTE_UNIT_OUT_ACK [i], ack);
+      }
+
+    for (uint32_t i=0; i<_param->_nb_write_unit; i++)
+      {
+	PORT_WRITE(out_WRITE_UNIT_IN_VAL[i], write_unit_use[i]);  
+      }
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_statistics_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_statistics_declaration.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_statistics_declaration.cpp	(revision 77)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::statistics_declaration"
+  void Execution_unit_to_Write_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "Execution_unit_to_Write_unit",
+		      param_statistics);
+    
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_transition.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_transition.cpp	(revision 77)
@@ -0,0 +1,84 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::transition"
+  void Execution_unit_to_Write_unit::transition (void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	// Flush routing_table
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_thread; j++)
+	      _destination [i][j].clear();
+	
+	// Fill routing table
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	    // Test if link between src and dest
+	    if (_param->_table_routing [i][j])
+	      // Test the thread accepted by the execute_unit
+	      for (uint32_t k=0; k<_param->_nb_thread; k++)
+		if (_param->_table_thread[j][k])
+		  // push_back == minor have a better priority
+		  _destination [i][k].push_back(j);
+      }
+    else
+      {
+	if (_param->_priority == PRIORITY_ROUND_ROBIN)
+	  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	    for (uint32_t j=0; j<_param->_nb_thread; j++)
+	      if (_destination [i][j].size() > 1)
+		{
+		  // Head queue became the Tail queue
+		  _destination [i][j].push_back(_destination [i][j].front());
+		  _destination [i][j].pop_front();
+		}
+      }
+
+
+#if (DEBUG >= DEBUG_TRACE)
+    // Print
+    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Routing Table");
+    for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+      for (uint32_t j=0; j<_param->_nb_thread; j++)
+	for (std::list<uint32_t>::iterator k=_destination[i][j].begin();
+	     k != _destination[i][j].end();
+	     k++)
+	  log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * Execute_unit [%d], send at the write_unit [%d], the operation of thread [%d].",i,*k,j);
+#endif
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    end_cycle ();
+#endif
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl.cpp	(revision 77)
@@ -0,0 +1,50 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::vhdl"
+  void Execution_unit_to_Write_unit::vhdl (void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,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,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_body.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_body.cpp	(revision 77)
@@ -0,0 +1,37 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::vhdl_body"
+  void Execution_unit_to_Write_unit::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_declaration.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_vhdl_declaration.cpp	(revision 77)
@@ -0,0 +1,36 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Execution_unit_to_Write_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::vhdl_declaration"
+  void Execution_unit_to_Write_unit::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters.cpp	(revision 77)
@@ -0,0 +1,122 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::Parameters"
+  Parameters::Parameters (uint32_t    nb_execute_unit              ,
+			  uint32_t    nb_write_unit                ,
+			  uint32_t    nb_context                   ,
+			  uint32_t    nb_front_end                 ,
+			  uint32_t    nb_ooo_engine                ,
+			  uint32_t    nb_packet                    ,
+			  uint32_t    size_general_data            ,
+			  uint32_t    size_special_data            ,
+			  uint32_t    nb_general_register          ,
+			  uint32_t    nb_special_register          ,
+			  Tpriority_t priority                     ,
+			  bool     ** table_routing                ,
+			  bool     ** table_thread                 ):
+    _nb_execute_unit         (nb_execute_unit    ),
+    _nb_write_unit           (nb_write_unit      ),
+    _nb_context              (nb_context         ),
+    _nb_front_end            (nb_front_end       ),
+    _nb_ooo_engine           (nb_ooo_engine      ),
+    _nb_packet               (nb_packet          ),
+    _size_general_data       (size_general_data  ),
+    _size_special_data       (size_special_data  ),
+    _nb_general_register     (nb_general_register),
+    _nb_special_register     (nb_special_register),
+    _priority                (priority           ),
+    
+    _size_context_id         (log2(nb_context         )),
+    _size_front_end_id       (log2(nb_front_end       )),
+    _size_ooo_engine_id      (log2(nb_ooo_engine      )),
+    _size_packet_id          (log2(nb_packet          )),
+    _size_general_register   (log2(nb_general_register)),
+    _size_special_register   (log2(nb_special_register)),
+    
+    _have_port_context_id    (_size_context_id    > 0),
+    _have_port_front_end_id  (_size_front_end_id  > 0),
+    _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
+    _have_port_packet_id     (_size_packet_id     > 0),
+
+    _nb_thread               (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine))
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    _table_routing = table_routing ;
+    _table_thread  = table_thread  ;
+
+    test();
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _nb_execute_unit         (param._nb_execute_unit        ),
+    _nb_write_unit           (param._nb_write_unit          ),
+    _nb_context              (param._nb_context             ),
+    _nb_front_end            (param._nb_front_end           ),
+    _nb_ooo_engine           (param._nb_ooo_engine          ),
+    _nb_packet               (param._nb_packet              ),
+    _size_general_data       (param._size_general_data      ),
+    _size_special_data       (param._size_special_data      ),
+    _nb_general_register     (param._nb_general_register    ),
+    _nb_special_register     (param._nb_special_register    ),
+    _priority                (param._priority               ),
+
+    _size_context_id         (param._size_context_id        ),
+    _size_front_end_id       (param._size_front_end_id      ),
+    _size_ooo_engine_id      (param._size_ooo_engine_id     ),
+    _size_packet_id          (param._size_packet_id         ),
+    _size_general_register   (param._size_general_register  ),
+    _size_special_register   (param._size_special_register  ),
+
+    _have_port_context_id    (param._have_port_context_id   ),
+    _have_port_front_end_id  (param._have_port_front_end_id ),
+    _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
+    _have_port_packet_id     (param._have_port_packet_id    ),
+
+    _nb_thread               (param._nb_thread              )
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    _table_routing = param._table_routing ;
+    _table_thread  = param._table_thread  ;
+
+    test();
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters_msg_error.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters_msg_error.cpp	(revision 77)
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::msg_error"
+  std::string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    std::string msg = "";
+
+    for (uint32_t i=0; i<_nb_execute_unit; i++)
+      {
+	uint32_t j;
+	for (j=0; j<_nb_write_unit; j++)
+	  if (_table_routing [i][j] == true)
+	    break;
+
+	if (j == _nb_write_unit)
+	  msg += "  - The execute_unit ["+toString(i)+"] is link with none write_unit.\n";
+      }	  
+
+    for (uint32_t i=0; i<_nb_write_unit; i++)
+      {
+	uint32_t j;
+	for (j=0; j<_nb_thread; j++)
+	  if (_table_thread [i][j] == true)
+	    break;
+
+	if (j == _nb_thread)
+	  msg += "  - The write_unit ["+toString(i)+"] have none source's thread.\n";
+      }	  
+
+    return msg;
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Execution_unit_to_Write_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters_print.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Parameters_print.cpp	(revision 77)
@@ -0,0 +1,68 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace execution_unit_to_write_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    XML xml ("execution_unit_to_write_unit");
+
+    xml.balise_open("execution_unit_to_write_unit");
+    xml.singleton_begin("nb_execute_unit    "); xml.attribut("value",toString(_nb_execute_unit    )); xml.singleton_end();
+    xml.singleton_begin("nb_write_unit      "); xml.attribut("value",toString(_nb_write_unit      )); xml.singleton_end();
+    xml.singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context         )); xml.singleton_end();
+    xml.singleton_begin("nb_front_end       "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
+    xml.singleton_begin("nb_ooo_engine      "); xml.attribut("value",toString(_nb_ooo_engine      )); xml.singleton_end();
+    xml.singleton_begin("nb_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
+    xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
+    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("priority           "); xml.attribut("value",toString(_priority           )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Execution_unit_to_Write_unit::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::core::multi_execute_loop::execute_loop::network::execution_unit_to_write_unit::Parameters & x)
+  {
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Execution_unit_to_Write_unit,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace execution_unit_to_write_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile	(revision 77)
@@ -0,0 +1,24 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= .
+include				$(DIR_COMPONENT)/Makefile.defs
+
+#-----[ Library ]------------------------------------------
+LIBRARY				= $(DIR_LIB)/libRead_unit_to_Execution_unit.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/Network/Read_unit_to_Execution_unit/Makefile.defs
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile.defs	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile.defs	(revision 77)
@@ -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/Network/Read_unit_to_Execution_unit/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile.deps	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/Makefile.deps	(revision 77)
@@ -0,0 +1,37 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+# DIR_MORPHEO must be defined
+
+Read_unit_to_Execution_unit			= yes
+
+ifndef Behavioural
+include 					$(DIR_MORPHEO)/Behavioural/Makefile.deps
+endif
+
+#-----[ Directory ]----------------------------------------
+
+Read_unit_to_Execution_unit_DIR			=	$(DIR_MORPHEO)/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit
+
+#-----[ Library ]------------------------------------------
+Read_unit_to_Execution_unit_LIBRARY		= 	-lRead_unit_to_Execution_unit	\
+							$(Behavioural_LIBRARY)	
+
+Read_unit_to_Execution_unit_DIR_LIBRARY		=	-L$(Read_unit_to_Execution_unit_DIR)/lib	\
+							$(Behavioural_DIR_LIBRARY)
+
+#-----[ Rules ]--------------------------------------------
+
+Read_unit_to_Execution_unit_library		:
+						@\
+						$(MAKE) Behavioural_library;
+						$(MAKE) --directory=$(Read_unit_to_Execution_unit_DIR) 	--makefile=Makefile;
+
+Read_unit_to_Execution_unit_library_clean	:
+						@\
+						$(MAKE) Behavioural_library_clean;
+						$(MAKE) --directory=$(Read_unit_to_Execution_unit_DIR) 	--makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/Makefile	(revision 77)
@@ -0,0 +1,30 @@
+# 
+# $Id$
+# 
+# [ Description ]
+# 
+# Makefile
+# 
+
+#-----[ Directory ]----------------------------------------
+DIR_COMPONENT			= ../
+include				$(DIR_COMPONENT)/Makefile.defs
+
+LIBRARY				= $(Read_unit_to_Execution_unit_LIBRARY)
+
+DIR_LIBRARY			= $(Read_unit_to_Execution_unit_DIR_LIBRARY)
+
+#-----[ include ]------------------------------------------
+
+all				:
+				@$(MAKE) all_selftest
+
+library				: Read_unit_to_Execution_unit_library
+
+library_clean			: Read_unit_to_Execution_unit_library_clean
+
+include                         $(DIR_COMPONENT)/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/Network/Read_unit_to_Execution_unit/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_min.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_min.cfg	(revision 77)
@@ -0,0 +1,40 @@
+Read_unit_to_Execution_unit
+1	1 	*2	# nb_read_unit           
+2	2 	*2	# nb_execute_unit        
+1	1	*2	# nb_context             
+1	1	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+4	4	*2	# size_store_queue       
+4	4	*2	# size_load_queue        
+0	1	+1	# priority
+1	1	+1	# table_routing        [0][0]
+1	1	+1	# table_routing        [0][1]
+0	0	+1	# table_execute_type   [0][TYPE_ALU    ]
+0	0	+1	# table_execute_type   [0][TYPE_SHIFT  ]
+0	0	+1	# table_execute_type   [0][TYPE_MOVE   ]
+0	0	+1	# table_execute_type   [0][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [0][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [0][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [0][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [0][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [0][TYPE_CUSTOM ]
+0	0	+1	# table_execute_type   [0][TYPE_BRANCH ]
+1	1	+1	# table_execute_type   [0][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [1][TYPE_ALU    ]
+1	1	+1	# table_execute_type   [1][TYPE_SHIFT  ]
+1	1	+1	# table_execute_type   [1][TYPE_MOVE   ]
+1	1	+1	# table_execute_type   [1][TYPE_TEST   ]
+1	1	+1	# table_execute_type   [1][TYPE_MUL_DIV]
+1	1	+1	# table_execute_type   [1][TYPE_EXTEND ]
+1	1	+1	# table_execute_type   [1][TYPE_FIND   ]
+1	1	+1	# table_execute_type   [1][TYPE_SPECIAL]
+1	1	+1	# table_execute_type   [1][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [1][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [1][TYPE_MEMORY ]
+1	1	+1	# table_execute_thread [0][0]
+1	1	+1	# table_execute_thread [1][0]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-mono_thread.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-mono_thread.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-mono_thread.cfg	(revision 77)
@@ -0,0 +1,74 @@
+Read_unit_to_Execution_unit
+3	3 	*2	# nb_read_unit           
+4	4 	*2	# nb_execute_unit        
+1	1	*2	# nb_context             
+1	1	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+4	4	*2	# size_store_queue       
+4	4	*2	# size_load_queue        
+0	1	+1	# priority
+1	1	+1	# table_routing        [0][0]
+0	0	+1	# table_routing        [0][1]
+0	0	+1	# table_routing        [0][2]
+0	0	+1	# table_routing        [0][3]
+0 	0	+1	# table_routing        [1][0]
+1	1	+1	# table_routing        [1][1]
+1	1	+1	# table_routing        [1][2]
+0	0	+1	# table_routing        [1][3]
+0	0	+1	# table_routing        [2][0]
+0	0	+1	# table_routing        [2][1]
+1	1	+1	# table_routing        [2][2]
+1	1	+1	# table_routing        [2][3]
+0	0	+1	# table_execute_type   [0][TYPE_ALU    ]
+0	0	+1	# table_execute_type   [0][TYPE_SHIFT  ]
+0	0	+1	# table_execute_type   [0][TYPE_MOVE   ]
+0	0	+1	# table_execute_type   [0][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [0][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [0][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [0][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [0][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [0][TYPE_CUSTOM ]
+0	0	+1	# table_execute_type   [0][TYPE_BRANCH ]
+1	1	+1	# table_execute_type   [0][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [1][TYPE_ALU    ]
+1	1	+1	# table_execute_type   [1][TYPE_SHIFT  ]
+1	1	+1	# table_execute_type   [1][TYPE_MOVE   ]
+1	1	+1	# table_execute_type   [1][TYPE_TEST   ]
+1	1	+1	# table_execute_type   [1][TYPE_MUL_DIV]
+1	1	+1	# table_execute_type   [1][TYPE_EXTEND ]
+1	1	+1	# table_execute_type   [1][TYPE_FIND   ]
+1	1	+1	# table_execute_type   [1][TYPE_SPECIAL]
+1	1	+1	# table_execute_type   [1][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [1][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [1][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [2][TYPE_ALU    ]
+0	0	+1	# table_execute_type   [2][TYPE_SHIFT  ]
+0	0	+1	# table_execute_type   [2][TYPE_MOVE   ]
+0	0	+1	# table_execute_type   [2][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [2][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [2][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [2][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [2][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [2][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [2][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [2][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [3][TYPE_ALU    ]
+1	1	+1	# table_execute_type   [3][TYPE_SHIFT  ]
+1	1	+1	# table_execute_type   [3][TYPE_MOVE   ]
+1	1	+1	# table_execute_type   [3][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [3][TYPE_MUL_DIV]
+1	1	+1	# table_execute_type   [3][TYPE_EXTEND ]
+1	1	+1	# table_execute_type   [3][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [3][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [3][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [3][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [3][TYPE_MEMORY ]
+1	1	+1	# table_execute_thread [0][0]
+1	1	+1	# table_execute_thread [1][0]
+1	1	+1	# table_execute_thread [2][0]
+1	1	+1	# table_execute_thread [3][0]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-multi_thread.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-multi_thread.cfg	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/config_multi_execute-multi_thread.cfg	(revision 77)
@@ -0,0 +1,86 @@
+Read_unit_to_Execution_unit
+3	3 	*2	# nb_read_unit           
+4	4 	*2	# nb_execute_unit        
+4	4	*2	# nb_context             
+1	1	*2	# nb_front_end           
+1	1	*2	# nb_ooo_engine          
+64	64	*2	# nb_packet              
+32	32	*2	# size_general_data      
+2	2	*2	# size_special_data      
+64	64	*2	# nb_general_register    
+16	16	*2	# nb_special_register    
+4	4	*2	# size_store_queue       
+4	4	*2	# size_load_queue        
+0	1	+1	# priority
+1	1	+1	# table_routing        [0][0]
+0	0	+1	# table_routing        [0][1]
+0	0	+1	# table_routing        [0][2]
+0	0	+1	# table_routing        [0][3]
+0 	0	+1	# table_routing        [1][0]
+1	1	+1	# table_routing        [1][1]
+1	1	+1	# table_routing        [1][2]
+0	0	+1	# table_routing        [1][3]
+0	0	+1	# table_routing        [2][0]
+0	0	+1	# table_routing        [2][1]
+1	1	+1	# table_routing        [2][2]
+1	1	+1	# table_routing        [2][3]
+0	0	+1	# table_execute_type   [0][TYPE_ALU    ]
+0	0	+1	# table_execute_type   [0][TYPE_SHIFT  ]
+0	0	+1	# table_execute_type   [0][TYPE_MOVE   ]
+0	0	+1	# table_execute_type   [0][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [0][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [0][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [0][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [0][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [0][TYPE_CUSTOM ]
+0	0	+1	# table_execute_type   [0][TYPE_BRANCH ]
+1	1	+1	# table_execute_type   [0][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [1][TYPE_ALU    ]
+1	1	+1	# table_execute_type   [1][TYPE_SHIFT  ]
+1	1	+1	# table_execute_type   [1][TYPE_MOVE   ]
+1	1	+1	# table_execute_type   [1][TYPE_TEST   ]
+1	1	+1	# table_execute_type   [1][TYPE_MUL_DIV]
+1	1	+1	# table_execute_type   [1][TYPE_EXTEND ]
+1	1	+1	# table_execute_type   [1][TYPE_FIND   ]
+1	1	+1	# table_execute_type   [1][TYPE_SPECIAL]
+1	1	+1	# table_execute_type   [1][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [1][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [1][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [2][TYPE_ALU    ]
+0	0	+1	# table_execute_type   [2][TYPE_SHIFT  ]
+0	0	+1	# table_execute_type   [2][TYPE_MOVE   ]
+0	0	+1	# table_execute_type   [2][TYPE_TEST   ]
+0	0	+1	# table_execute_type   [2][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [2][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [2][TYPE_FIND   ]
+0	0	+1	# table_execute_type   [2][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [2][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [2][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [2][TYPE_MEMORY ]
+1	1	+1	# table_execute_type   [3][TYPE_ALU    ]
+1	1	+1	# table_execute_type   [3][TYPE_SHIFT  ]
+1	1	+1	# table_execute_type   [3][TYPE_MOVE   ]
+1	1	+1	# table_execute_type   [3][TYPE_TEST   ]
+1	1	+1	# table_execute_type   [3][TYPE_MUL_DIV]
+0	0	+1	# table_execute_type   [3][TYPE_EXTEND ]
+0	0	+1	# table_execute_type   [3][TYPE_FIND   ]
+1	1	+1	# table_execute_type   [3][TYPE_SPECIAL]
+0	0	+1	# table_execute_type   [3][TYPE_CUSTOM ]
+1	1	+1	# table_execute_type   [3][TYPE_BRANCH ]
+0	0	+1	# table_execute_type   [3][TYPE_MEMORY ]
+1	1	+1	# table_execute_thread [0][0]
+1	1	+1	# table_execute_thread [0][1]
+1	1	+1	# table_execute_thread [0][2]
+1	1	+1	# table_execute_thread [0][3]
+1	1	+1	# table_execute_thread [1][0]
+1	1	+1	# table_execute_thread [1][1]
+1	1	+1	# table_execute_thread [1][2]
+0	0	+1	# table_execute_thread [1][3]
+0	0	+1	# table_execute_thread [2][0]
+1	1	+1	# table_execute_thread [2][1]
+1	1	+1	# table_execute_thread [2][2]
+0	0	+1	# table_execute_thread [2][3]
+0	0	+1	# table_execute_thread [3][0]
+0	0	+1	# table_execute_thread [3][1]
+0	0	+1	# table_execute_thread [3][2]
+1	1	+1	# table_execute_thread [3][3]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/include/test.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/include/test.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/include/test.h	(revision 77)
@@ -0,0 +1,31 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test "RegisterFile"
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <string>
+#include <iostream>
+#include <sys/time.h>
+
+#include "Common/include/Time.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.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::network;
+
+using namespace morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit;
+
+void test    (string name,
+	      morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/main.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/main.cpp	(revision 77)
@@ -0,0 +1,159 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/include/test.h"
+
+#define NB_PARAMS 13
+
+void usage (int argc, char * argv[])
+{
+  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
+  err (_("list_params is :\n"));
+  err (_("  * nb_read_unit                                         (uint32_t)\n"));
+  err (_("  * nb_execute_unit                                      (uint32_t)\n"));
+  err (_("  * nb_context                                           (uint32_t)\n"));
+  err (_("  * nb_front_end                                         (uint32_t)\n"));
+  err (_("  * nb_ooo_engine                                        (uint32_t)\n"));
+  err (_("  * nb_packet                                            (uint32_t)\n"));
+  err (_("  * size_general_data                                    (uint32_t)\n"));
+  err (_("  * size_special_data                                    (uint32_t)\n"));
+  err (_("  * nb_general_register                                  (uint32_t)\n"));
+  err (_("  * nb_special_register                                  (uint32_t)\n"));
+  err (_("  * size_store_queue                                     (uint32_t)\n"));
+  err (_("  * size_load_queue                                      (uint32_t)\n"));
+  err (_("  * priority                                             (uint32_t)\n"));
+  err (_("  * table_routing        [nb_read_unit][nb_execute_unit] (bool    )\n"));
+  err (_("  * table_execute_type   [nb_execute_unit][nb_type*]     (bool    )\n"));
+  err (_("    * [TYPE_ALU    ]\n"));
+  err (_("    * [TYPE_SHIFT  ]\n"));
+  err (_("    * [TYPE_MOVE   ]\n"));
+  err (_("    * [TYPE_TEST   ]\n"));
+  err (_("    * [TYPE_MUL_DIV]\n"));
+  err (_("    * [TYPE_EXTEND ]\n"));
+  err (_("    * [TYPE_FIND   ]\n"));
+  err (_("    * [TYPE_SPECIAL]\n"));
+  err (_("    * [TYPE_CUSTOM ]\n"));
+  err (_("    * [TYPE_BRANCH ]\n"));
+  err (_("    * [TYPE_MEMORY ]\n"));
+  err (_("  * table_execute_thread [nb_execute_unit][nb_thread]    (bool    )\n"));
+
+  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);
+
+  uint32_t       x = 1;
+
+  string      name                  =      argv[x++];
+  uint32_t    _nb_read_unit         = atoi(argv[x++]);
+  uint32_t    _nb_execute_unit      = atoi(argv[x++]);
+  uint32_t    _nb_context           = atoi(argv[x++]);
+  uint32_t    _nb_front_end         = atoi(argv[x++]);
+  uint32_t    _nb_ooo_engine        = atoi(argv[x++]);
+  uint32_t    _nb_packet            = atoi(argv[x++]);
+  uint32_t    _size_general_data    = atoi(argv[x++]);
+  uint32_t    _size_special_data    = atoi(argv[x++]);
+  uint32_t    _nb_general_register  = atoi(argv[x++]);
+  uint32_t    _nb_special_register  = atoi(argv[x++]);
+  uint32_t    _size_store_queue     = atoi(argv[x++]);
+  uint32_t    _size_load_queue      = atoi(argv[x++]);
+  Tpriority_t _priority             = fromString<Tpriority_t>(argv[x++]);
+
+  uint32_t    _nb_thread            = get_nb_thread(_nb_context, _nb_front_end, _nb_ooo_engine);
+
+  if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_read_unit*_nb_execute_unit)+(_nb_execute_unit*11)+(_nb_execute_unit*_nb_thread))
+    usage (argc, argv);
+  
+  bool ** _table_routing        ;
+  bool ** _table_execute_type   ;
+  bool ** _table_execute_thread ;
+  
+  _table_routing = new bool * [_nb_read_unit];
+  for (uint32_t i=0; i<_nb_read_unit; i++)
+    {
+      _table_routing [i] = new bool [_nb_execute_unit];
+      for (uint32_t j=0; j<_nb_execute_unit; j++)
+	_table_routing [i][j] = atoi(argv[x++]);
+    }
+
+  _table_execute_type = new bool * [_nb_execute_unit];
+  for (uint32_t i=0; i<_nb_execute_unit; i++)
+    {
+      _table_execute_type [i] = new bool [MAX_TYPE];
+
+      _table_execute_type [i][TYPE_ALU    ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_SHIFT  ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_MOVE   ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_TEST   ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_MUL_DIV] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_EXTEND ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_FIND   ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_SPECIAL] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_CUSTOM ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_BRANCH ] = atoi(argv[x++]);
+      _table_execute_type [i][TYPE_MEMORY ] = atoi(argv[x++]);
+    }
+
+  _table_execute_thread = new bool * [_nb_execute_unit];
+  for (uint32_t i=0; i<_nb_execute_unit; i++)
+    {
+      _table_execute_thread [i] = new bool [_nb_thread];
+
+      for (uint32_t j=0; j<_nb_thread; j++)
+	_table_execute_thread [i][j] = atoi(argv[x++]);
+    }
+
+  try 
+    {
+      morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters
+	(_nb_read_unit         ,
+	 _nb_execute_unit      ,
+	 _nb_context           ,
+	 _nb_front_end         ,
+	 _nb_ooo_engine        ,
+	 _nb_packet            ,
+	 _size_general_data    ,
+	 _size_special_data    ,
+	 _nb_general_register  ,
+	 _nb_special_register  ,
+	 _size_store_queue     ,
+	 _size_load_queue      ,
+	 _priority             ,
+	 _table_routing        ,
+	 _table_execute_type   ,
+	 _table_execute_thread 
+	 );
+      
+      msg(_("%s"),param->print(1).c_str());
+      
+      test (name,param);
+    }
+  catch (morpheo::ErrorMorpheo & error)
+    {
+      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
+      exit (EXIT_FAILURE);
+    }
+  catch (...)
+    {
+      err (_("<%s> : This test must generate a error.\n"),name.c_str());
+      exit (EXIT_FAILURE);
+    }
+
+  delete [] _table_routing        ;
+  delete [] _table_execute_type   ;
+  delete [] _table_execute_thread ;
+
+  return (EXIT_SUCCESS);
+}
+
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp	(revision 77)
@@ -0,0 +1,486 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ * Test
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/include/test.h"
+#include "Common/include/Test.h"
+#include "Common/include/BitManipulation.h"
+#include "Behavioural/include/Allocation.h"
+#include <list>
+#include <set>
+
+#define NB_ITERATION  1
+#define CYCLE_MAX     (128*NB_ITERATION)
+
+#define LABEL(str...)							\
+  {									\
+    msg (_("{%d} "),static_cast<uint32_t>(sc_simulation_time()));	\
+    msg (str);								\
+    msg (_("\n"));							\
+  } while(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_offset != 0)						             \
+	{								             \
+	  cout << "##########[ cycle "<< cycle_current+cycle_offset << " ]" << endl; \
+	}								             \
+									             \
+      if (cycle_current > CYCLE_MAX)					             \
+	{								             \
+	  TEST_KO("Maximal cycles Reached");				             \
+	}								             \
+									             \
+      sc_start(cycle_offset);						             \
+									             \
+      /*cout << "SC_START (end  )" << endl;*/				             \
+    } while(0)
+
+
+class entry_t 
+{
+public : Tcontext_t         _context_id           ;
+public : Tcontext_t         _front_end_id         ;
+public : Tcontext_t         _ooo_engine_id        ;
+public : Tpacket_t          _packet_id            ;
+public : Toperation_t       _operation            ;
+public : Ttype_t            _type                 ;
+public : Tlsq_ptr_t         _store_queue_ptr_write;
+public : Tlsq_ptr_t         _load_queue_ptr_write ;
+public : Tcontrol_t         _has_immediat         ;
+public : Tgeneral_data_t    _immediat             ;
+public : Tgeneral_data_t    _data_ra              ;
+public : Tgeneral_data_t    _data_rb              ;
+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           ;
+
+public : entry_t (Tcontext_t         context_id           ,
+		  Tcontext_t         front_end_id         ,
+		  Tcontext_t         ooo_engine_id        ,
+		  Tpacket_t          packet_id            ,
+		  Toperation_t       operation            ,
+		  Ttype_t            type                 ,
+		  Tlsq_ptr_t         store_queue_ptr_write,
+		  Tlsq_ptr_t         load_queue_ptr_write ,
+		  Tcontrol_t         has_immediat         ,
+		  Tgeneral_data_t    immediat             ,
+		  Tgeneral_data_t    data_ra              ,
+		  Tgeneral_data_t    data_rb              ,
+		  Tspecial_data_t    data_rc              ,
+		  Tcontrol_t         write_rd             ,
+		  Tgeneral_address_t num_reg_rd           ,
+		  Tcontrol_t         write_re             ,
+		  Tspecial_address_t num_reg_re           )
+  {
+    _context_id            = context_id           ;
+    _front_end_id          = front_end_id         ;
+    _ooo_engine_id         = ooo_engine_id        ;
+    _packet_id             = packet_id            ;
+    _operation             = operation            ;
+    _type                  = type                 ;
+    _store_queue_ptr_write = store_queue_ptr_write;
+    _load_queue_ptr_write  = load_queue_ptr_write ;
+    _has_immediat          = has_immediat         ;
+    _immediat              = immediat             ;
+    _data_ra               = data_ra              ;
+    _data_rb               = data_rb              ;
+    _data_rc               = data_rc              ;
+    _write_rd              = write_rd             ;
+    _num_reg_rd            = num_reg_rd           ;
+    _write_re              = write_re             ;
+    _num_reg_re            = num_reg_re           ;
+  }
+};
+
+void test (string name,
+	   morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * _param)
+{
+  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
+
+#ifdef STATISTICS
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+#endif
+
+  Read_unit_to_Execution_unit * _Read_unit_to_Execution_unit = new Read_unit_to_Execution_unit (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");
+
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_VAL                  ," in_READ_UNIT_OUT_VAL"                  ,Tcontrol_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_ACK                  ,"out_READ_UNIT_OUT_ACK"                  ,Tcontrol_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID           ," in_READ_UNIT_OUT_CONTEXT_ID"           ,Tcontext_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID         ," in_READ_UNIT_OUT_FRONT_END_ID"         ,Tcontext_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID        ," in_READ_UNIT_OUT_OOO_ENGINE_ID"        ,Tcontext_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID            ," in_READ_UNIT_OUT_PACKET_ID"            ,Tpacket_t         ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION            ," in_READ_UNIT_OUT_OPERATION"            ,Toperation_t      ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_TYPE                 ," in_READ_UNIT_OUT_TYPE"                 ,Ttype_t           ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE," in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT         ," in_READ_UNIT_OUT_HAS_IMMEDIAT"         ,Tcontrol_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT             ," in_READ_UNIT_OUT_IMMEDIAT"             ,Tgeneral_data_t   ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA              ," in_READ_UNIT_OUT_DATA_RA"              ,Tgeneral_data_t   ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB              ," in_READ_UNIT_OUT_DATA_RB"              ,Tgeneral_data_t   ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC              ," in_READ_UNIT_OUT_DATA_RC"              ,Tspecial_data_t   ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD             ," in_READ_UNIT_OUT_WRITE_RD"             ,Tcontrol_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD           ," in_READ_UNIT_OUT_NUM_REG_RD"           ,Tgeneral_address_t,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE             ," in_READ_UNIT_OUT_WRITE_RE"             ,Tcontrol_t        ,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE           ," in_READ_UNIT_OUT_NUM_REG_RE"           ,Tspecial_address_t,_param->_nb_read_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL                  ,"out_EXECUTE_UNIT_IN_VAL"                  ,Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK                  ," in_EXECUTE_UNIT_IN_ACK"                  ,Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID           ,"out_EXECUTE_UNIT_IN_CONTEXT_ID"           ,Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID         ,"out_EXECUTE_UNIT_IN_FRONT_END_ID"         ,Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ,"out_EXECUTE_UNIT_IN_OOO_ENGINE_ID"        ,Tcontext_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID            ,"out_EXECUTE_UNIT_IN_PACKET_ID"            ,Tpacket_t         ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION            ,"out_EXECUTE_UNIT_IN_OPERATION"            ,Toperation_t      ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE                 ,"out_EXECUTE_UNIT_IN_TYPE"                 ,Ttype_t           ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ,"out_EXECUTE_UNIT_IN_HAS_IMMEDIAT"         ,Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT             ,"out_EXECUTE_UNIT_IN_IMMEDIAT"             ,Tgeneral_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA              ,"out_EXECUTE_UNIT_IN_DATA_RA"              ,Tgeneral_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB              ,"out_EXECUTE_UNIT_IN_DATA_RB"              ,Tgeneral_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC              ,"out_EXECUTE_UNIT_IN_DATA_RC"              ,Tspecial_data_t   ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD             ,"out_EXECUTE_UNIT_IN_WRITE_RD"             ,Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD           ,"out_EXECUTE_UNIT_IN_NUM_REG_RD"           ,Tgeneral_address_t,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE             ,"out_EXECUTE_UNIT_IN_WRITE_RE"             ,Tcontrol_t        ,_param->_nb_execute_unit);
+  ALLOC1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE           ,"out_EXECUTE_UNIT_IN_NUM_REG_RE"           ,Tspecial_address_t,_param->_nb_execute_unit);
+  
+  
+  /********************************************************
+   * Instanciation
+   ********************************************************/
+  
+  msg(_("<%s> : Instanciation of _Read_unit_to_Execution_unit.\n"),name.c_str());
+
+  (*(_Read_unit_to_Execution_unit->in_CLOCK))        (*(in_CLOCK));
+  (*(_Read_unit_to_Execution_unit->in_NRESET))       (*(in_NRESET));
+
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_VAL                  ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_READ_UNIT_OUT_ACK                  ,_param->_nb_read_unit);
+  if (_param->_have_port_context_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_CONTEXT_ID           ,_param->_nb_read_unit);
+  if (_param->_have_port_front_end_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_FRONT_END_ID         ,_param->_nb_read_unit);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OOO_ENGINE_ID        ,_param->_nb_read_unit);
+  if (_param->_have_port_packet_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_PACKET_ID            ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OPERATION            ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_TYPE                 ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_HAS_IMMEDIAT         ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_IMMEDIAT             ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RA              ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RB              ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RC              ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RD             ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RD           ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RE             ,_param->_nb_read_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RE           ,_param->_nb_read_unit);
+
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_VAL                  ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_EXECUTE_UNIT_IN_ACK                  ,_param->_nb_execute_unit);
+  if (_param->_have_port_context_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_CONTEXT_ID           ,_param->_nb_execute_unit);
+  if (_param->_have_port_front_end_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_FRONT_END_ID         ,_param->_nb_execute_unit);
+  if (_param->_have_port_ooo_engine_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ,_param->_nb_execute_unit);
+  if (_param->_have_port_packet_id)
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_PACKET_ID            ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OPERATION            ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_TYPE                 ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_IMMEDIAT             ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RA              ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RB              ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RC              ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RD             ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RD           ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RE             ,_param->_nb_execute_unit);
+  INSTANCE1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RE           ,_param->_nb_execute_unit);
+
+  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
+    
+  Time * _time = new Time();
+
+  /********************************************************
+   * Simulation - Begin
+   ********************************************************/
+
+  // Initialisation
+
+  const uint32_t seed = 0;
+// const uint32_t seed = static_cast<uint32_t>(time(NULL));
+
+  srand(seed);
+
+  const  int32_t percent_transaction_in  = 75;
+  const  int32_t percent_transaction_out = 75;
+
+  set<Tcontext_t> read_unit_thread [_param->_nb_read_unit];
+  set<Ttype_t   > read_unit_type   [_param->_nb_read_unit][_param->_nb_thread];
+ 
+  for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+      if (_param->_table_routing[i][j])
+	for (uint32_t k=0; k<_param->_nb_thread; k++)
+	  if (_param->_table_execute_thread[j][k])
+	    {
+	      read_unit_thread [i].insert(k);
+	      
+	      for (uint32_t l=0; l<_param->_nb_type; l++)
+		if (_param->_table_execute_type[j][l])
+		  read_unit_type [i][k].insert(l);
+	    }
+  //bool ** _table_routing       ; //array [nb_read_unit][nb_execute_unit]
+  //bool ** _table_execute_type  ; //array [nb_execute_unit][nb_type]
+  //bool ** _table_execute_thread; //array [nb_execute_unit][nb_thread]
+  
+  SC_START(0);
+  LABEL("Initialisation");
+
+  LABEL("Reset");
+  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 %d",iteration);
+
+      list<entry_t> request [_param->_nb_read_unit];
+
+      uint32_t nb_request_in;
+      for (nb_request_in=0; nb_request_in < _param->_nb_packet; )
+	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  {
+	    if (nb_request_in >= _param->_nb_packet)
+	      break;
+
+	    Tcontext_t context_id   ;
+	    Tcontext_t front_end_id ;
+	    Tcontext_t ooo_engine_id;
+	    Tcontext_t num_thread   ;
+
+	    // Find compatible thread
+	    do
+	      {
+		context_id    = range<Tcontext_t> (rand(), _param->_size_context_id   );
+		front_end_id  = range<Tcontext_t> (rand(), _param->_size_front_end_id );
+		ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id);
+		num_thread    = get_num_thread (context_id   , _param->_size_context_id   ,
+						front_end_id , _param->_size_front_end_id ,
+						ooo_engine_id, _param->_size_ooo_engine_id);
+	      }
+	    while (read_unit_thread[i].find(num_thread) == read_unit_thread[i].end());
+
+	    Ttype_t    type;
+	    
+	    // Find a compatible type
+	    do
+	      {
+		type = range<Ttype_t> (rand(), _param->_size_type);
+	      }
+	    while (read_unit_type[i][num_thread].find(type) == read_unit_type[i][num_thread].end());
+
+	    request[i].push_back(entry_t (context_id   ,
+					  front_end_id ,
+					  ooo_engine_id,
+					  nb_request_in,
+					  range<Toperation_t      > (rand(), _param->_size_operation       ),
+					  type,
+					  range<Tlsq_ptr_t        > (rand(), _param->_size_store_queue     ),
+					  range<Tlsq_ptr_t        > (rand(), _param->_size_load_queue      ),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tgeneral_data_t   > (rand(), _param->_size_general_data    ),
+					  range<Tgeneral_data_t   > (rand(), _param->_size_general_data    ),
+					  range<Tgeneral_data_t   > (rand(), _param->_size_general_data    ),
+					  range<Tspecial_data_t   > (rand(), _param->_size_special_data    ),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tgeneral_address_t> (rand(), _param->_size_general_register),
+					  range<Tcontrol_t        > (rand(), 2                             ),
+					  range<Tspecial_address_t> (rand(), _param->_size_special_register)
+					  ));
+
+	    nb_request_in++;
+	  }
+
+      uint32_t   nb_request_out = 0;
+
+      while (nb_request_out < nb_request_in)
+	{
+	  for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	    {
+	      bool val = not request[i].empty() and ((rand()%100) < percent_transaction_in);
+		
+	      in_READ_UNIT_OUT_VAL [i]->write(val);
+
+	      if (val)
+		{
+		  in_READ_UNIT_OUT_CONTEXT_ID           [i] ->write(request[i].front()._context_id           );
+		  in_READ_UNIT_OUT_FRONT_END_ID         [i] ->write(request[i].front()._front_end_id         );
+		  in_READ_UNIT_OUT_OOO_ENGINE_ID        [i] ->write(request[i].front()._ooo_engine_id        );
+		  in_READ_UNIT_OUT_PACKET_ID            [i] ->write(request[i].front()._packet_id            );
+		  in_READ_UNIT_OUT_OPERATION            [i] ->write(request[i].front()._operation            );
+		  in_READ_UNIT_OUT_TYPE                 [i] ->write(request[i].front()._type                 );
+		  in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE[i] ->write(request[i].front()._store_queue_ptr_write);
+		  in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i] ->write(request[i].front()._load_queue_ptr_write );
+		  in_READ_UNIT_OUT_HAS_IMMEDIAT         [i] ->write(request[i].front()._has_immediat         );
+		  in_READ_UNIT_OUT_IMMEDIAT             [i] ->write(request[i].front()._immediat             );
+		  in_READ_UNIT_OUT_DATA_RA              [i] ->write(request[i].front()._data_ra              );
+		  in_READ_UNIT_OUT_DATA_RB              [i] ->write(request[i].front()._data_rb              );
+		  in_READ_UNIT_OUT_DATA_RC              [i] ->write(request[i].front()._data_rc              );
+		  in_READ_UNIT_OUT_WRITE_RD             [i] ->write(request[i].front()._write_rd             );
+		  in_READ_UNIT_OUT_NUM_REG_RD           [i] ->write(request[i].front()._num_reg_rd           );
+		  in_READ_UNIT_OUT_WRITE_RE             [i] ->write(request[i].front()._write_re             );
+		  in_READ_UNIT_OUT_NUM_REG_RE           [i] ->write(request[i].front()._num_reg_re           );
+		}
+	    }
+
+	  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	    in_EXECUTE_UNIT_IN_ACK [i]->write((rand()%100) < percent_transaction_out);
+
+	  SC_START(0);
+
+	  for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	    if (in_READ_UNIT_OUT_VAL [i]->read() and out_READ_UNIT_OUT_ACK [i]->read())
+	      {
+		LABEL("READ_UNIT_OUT   [%d] - Transaction accepted",i);
+	      }
+
+	  for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	    if (out_EXECUTE_UNIT_IN_VAL [i]->read() and in_EXECUTE_UNIT_IN_ACK [i]->read())
+	      {
+		LABEL("EXECUTE_UNIT_IN [%d] - Transaction accepted (%d)",i,nb_request_out);
+		nb_request_out ++;
+		
+		Tpacket_t packet = (_param->_have_port_packet_id)?out_EXECUTE_UNIT_IN_PACKET_ID[i]->read():0;
+		LABEL("  * packet           : %d",packet);		
+		uint32_t read_unit;
+
+		// find read_unit
+		for (read_unit=0; read_unit<_param->_nb_read_unit; read_unit++)
+		  if (packet == ((_param->_have_port_packet_id)?request[read_unit].front()._packet_id:0))
+		    break;
+
+		LABEL("  * read_unit source : %d",read_unit);
+
+		if (_param->_have_port_packet_id)
+		TEST(Tcontext_t        ,out_EXECUTE_UNIT_IN_PACKET_ID            [i]->read(), request[read_unit].front()._packet_id            );
+
+		// Authorised link ? read_unit -> execute_unit
+		TEST(bool, _param->_table_routing[read_unit][i], true);
+
+		if (_param->_have_port_context_id)
+		TEST(Tcontext_t        ,out_EXECUTE_UNIT_IN_CONTEXT_ID           [i]->read(), request[read_unit].front()._context_id           );
+		if (_param->_have_port_front_end_id)
+		TEST(Tcontext_t        ,out_EXECUTE_UNIT_IN_FRONT_END_ID         [i]->read(), request[read_unit].front()._front_end_id         );
+		if (_param->_have_port_ooo_engine_id)
+		TEST(Tcontext_t        ,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        [i]->read(), request[read_unit].front()._ooo_engine_id        );
+		TEST(Toperation_t      ,out_EXECUTE_UNIT_IN_OPERATION            [i]->read(), request[read_unit].front()._operation            );
+		TEST(Ttype_t           ,out_EXECUTE_UNIT_IN_TYPE                 [i]->read(), request[read_unit].front()._type                 );
+		TEST(Tlsq_ptr_t        ,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE[i]->read(), request[read_unit].front()._store_queue_ptr_write);
+		TEST(Tlsq_ptr_t        ,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i]->read(), request[read_unit].front()._load_queue_ptr_write );
+		TEST(Tcontrol_t        ,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         [i]->read(), request[read_unit].front()._has_immediat         );
+		TEST(Tgeneral_data_t   ,out_EXECUTE_UNIT_IN_IMMEDIAT             [i]->read(), request[read_unit].front()._immediat             );
+		TEST(Tgeneral_data_t   ,out_EXECUTE_UNIT_IN_DATA_RA              [i]->read(), request[read_unit].front()._data_ra              );
+		TEST(Tgeneral_data_t   ,out_EXECUTE_UNIT_IN_DATA_RB              [i]->read(), request[read_unit].front()._data_rb              );
+		TEST(Tspecial_data_t   ,out_EXECUTE_UNIT_IN_DATA_RC              [i]->read(), request[read_unit].front()._data_rc              );
+		TEST(Tcontrol_t        ,out_EXECUTE_UNIT_IN_WRITE_RD             [i]->read(), request[read_unit].front()._write_rd             );
+		TEST(Tgeneral_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RD           [i]->read(), request[read_unit].front()._num_reg_rd           );
+		TEST(Tcontrol_t        ,out_EXECUTE_UNIT_IN_WRITE_RE             [i]->read(), request[read_unit].front()._write_re             );
+		TEST(Tspecial_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RE           [i]->read(), request[read_unit].front()._num_reg_re           );
+		
+		request[read_unit].pop_front();
+	      }
+	  SC_START(1);
+	}
+
+    }
+
+  /********************************************************
+   * Simulation - End
+   ********************************************************/
+
+  TEST_OK ("End of Simulation");
+  delete _time;
+
+  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
+
+  delete in_CLOCK;
+  delete in_NRESET;
+  
+  delete []  in_READ_UNIT_OUT_VAL                  ;
+  delete [] out_READ_UNIT_OUT_ACK                  ;
+  delete []  in_READ_UNIT_OUT_CONTEXT_ID           ;
+  delete []  in_READ_UNIT_OUT_FRONT_END_ID         ;
+  delete []  in_READ_UNIT_OUT_OOO_ENGINE_ID        ;
+  delete []  in_READ_UNIT_OUT_PACKET_ID            ;
+  delete []  in_READ_UNIT_OUT_OPERATION            ;
+  delete []  in_READ_UNIT_OUT_TYPE                 ;
+  delete []  in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+  delete []  in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
+  delete []  in_READ_UNIT_OUT_HAS_IMMEDIAT         ;
+  delete []  in_READ_UNIT_OUT_IMMEDIAT             ;
+  delete []  in_READ_UNIT_OUT_DATA_RA              ;
+  delete []  in_READ_UNIT_OUT_DATA_RB              ;
+  delete []  in_READ_UNIT_OUT_DATA_RC              ;
+  delete []  in_READ_UNIT_OUT_WRITE_RD             ;
+  delete []  in_READ_UNIT_OUT_NUM_REG_RD           ;
+  delete []  in_READ_UNIT_OUT_WRITE_RE             ;
+  delete []  in_READ_UNIT_OUT_NUM_REG_RE           ;
+
+  delete [] out_EXECUTE_UNIT_IN_VAL                  ;
+  delete []  in_EXECUTE_UNIT_IN_ACK                  ;
+  delete [] out_EXECUTE_UNIT_IN_CONTEXT_ID           ;
+  delete [] out_EXECUTE_UNIT_IN_FRONT_END_ID         ;
+  delete [] out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ;
+  delete [] out_EXECUTE_UNIT_IN_PACKET_ID            ;
+  delete [] out_EXECUTE_UNIT_IN_OPERATION            ;
+  delete [] out_EXECUTE_UNIT_IN_TYPE                 ;
+  delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+  delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
+  delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ;
+  delete [] out_EXECUTE_UNIT_IN_IMMEDIAT             ;
+  delete [] out_EXECUTE_UNIT_IN_DATA_RA              ;
+  delete [] out_EXECUTE_UNIT_IN_DATA_RB              ;
+  delete [] out_EXECUTE_UNIT_IN_DATA_RC              ;
+  delete [] out_EXECUTE_UNIT_IN_WRITE_RD             ;
+  delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD           ;
+  delete [] out_EXECUTE_UNIT_IN_WRITE_RE             ;
+  delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE           ;
+
+#endif
+
+  delete _Read_unit_to_Execution_unit;
+#ifdef STATISTICS
+  delete _parameters_statistics;
+#endif
+}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/Makefile	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/Makefile	(revision 77)
@@ -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/Network/Read_unit_to_Execution_unit/doc/Read_unit_to_Execution_unit.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/Read_unit_to_Execution_unit.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/Read_unit_to_Execution_unit.tex	(revision 77)
@@ -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/Network/Read_unit_to_Execution_unit/doc/sty/header.sty
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/sty/header.sty	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/sty/header.sty	(revision 77)
@@ -0,0 +1,12 @@
+\def\review{YYYY/MM/DD}
+%\def\review{\number\day/\number\month/\number\year\xspace}
+
+\title{Read_unit_to_Execution_unit}
+ 
+\author{}
+
+\affiliation{}
+
+\email{}
+
+\date{\review}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/01_introduction.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/01_introduction.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/01_introduction.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Introduction}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/02_features.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/02_features.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/02_features.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Features}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/03_description.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/03_description.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/03_description.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Functional Description}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/04_pinout.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/04_pinout.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/04_pinout.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Pin out}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/05_parameters.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/05_parameters.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/05_parameters.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Parameters}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/06_performance.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/06_performance.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/06_performance.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Performance}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/07_details.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/07_details.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/07_details.tex	(revision 77)
@@ -0,0 +1,1 @@
+\Section{Details}
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/08_history.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/08_history.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/08_history.tex	(revision 77)
@@ -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/Network/Read_unit_to_Execution_unit/doc/tex/root.tex
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/root.tex	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/doc/tex/root.tex	(revision 77)
@@ -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/Network/Read_unit_to_Execution_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h	(revision 77)
@@ -0,0 +1,96 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Parameters_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Parameters_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Common/include/Debug.h"
+#include "Behavioural/include/Parameters.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Types.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+  class Parameters : public morpheo::behavioural::Parameters
+  {
+    //-----[ fields ]------------------------------------------------------------
+  public : const uint32_t    _nb_read_unit           ;
+  public : const uint32_t    _nb_execute_unit        ;
+  public : const uint32_t    _nb_context             ;
+  public : const uint32_t    _nb_front_end           ;
+  public : const uint32_t    _nb_ooo_engine          ;
+  public : const uint32_t    _nb_packet              ;
+  public : const uint32_t    _size_general_data      ;
+  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    _size_store_queue       ;
+  public : const uint32_t    _size_load_queue        ;
+  public : const Tpriority_t _priority               ;
+  public :       bool     ** _table_routing          ; //array [nb_read_unit][nb_execute_unit]
+  public :       bool     ** _table_execute_type     ; //array [nb_execute_unit][nb_type]
+  public :       bool     ** _table_execute_thread   ; //array [nb_execute_unit][nb_thread]
+
+  public : const uint32_t    _size_context_id        ;
+  public : const uint32_t    _size_front_end_id      ;
+  public : const uint32_t    _size_ooo_engine_id     ;
+  public : const uint32_t    _size_packet_id         ;
+  public : const uint32_t    _size_general_register  ;
+  public : const uint32_t    _size_special_register  ;
+
+  public : const bool        _have_port_context_id   ;
+  public : const bool        _have_port_front_end_id ;
+  public : const bool        _have_port_ooo_engine_id;
+  public : const bool        _have_port_packet_id    ;
+
+  public : const uint32_t    _nb_thread              ;
+  public :       uint32_t    _nb_load_store_unit     ;
+  public :       uint32_t    _nb_functionnal_unit    ;
+
+    //-----[ methods ]-----------------------------------------------------------
+  public : Parameters  (uint32_t    nb_read_unit           ,
+			uint32_t    nb_execute_unit        ,
+			uint32_t    nb_context             ,
+			uint32_t    nb_front_end           ,
+			uint32_t    nb_ooo_engine          ,
+			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    size_store_queue       ,
+			uint32_t    size_load_queue        ,
+			Tpriority_t priority               ,
+			bool     ** table_routing          ,
+			bool     ** table_execute_type     ,
+			bool     ** table_execute_thread   );
+  public : Parameters  (Parameters & param) ;
+  public : ~Parameters () ;
+
+  public :        std::string   msg_error  (void);
+
+  public :        std::string   print      (uint32_t depth);
+  public : friend std::ostream& operator<< (std::ostream& output_stream,
+					    morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters & x);
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h	(revision 77)
@@ -0,0 +1,172 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Read_unit_to_Execution_unit_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Read_unit_to_Execution_unit_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include <iostream>
+#include <list>
+#include "Common/include/ToString.h"
+#include "Common/include/Debug.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Types.h"
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
+#ifdef STATISTICS
+#include "Behavioural/include/Stat.h"
+#endif
+#include "Behavioural/include/Component.h"
+#ifdef VHDL
+#include "Behavioural/include/Vhdl.h"
+#endif
+#include "Behavioural/include/Usage.h"
+
+namespace morpheo {
+namespace behavioural {
+
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+  class Read_unit_to_Execution_unit 
+#if SYSTEMC
+    : public sc_module
+#endif
+  {
+    // -----[ fields ]----------------------------------------------------
+    // Parameters
+  protected : const std::string  _name;
+  protected : const Parameters * _param;
+  private   : const Tusage_t     _usage;
+
+#ifdef STATISTICS
+  public    : Stat                           * _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 "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t        )   **  in_READ_UNIT_OUT_VAL                  ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_READ_UNIT_OUT_ACK                  ;
+  public    : SC_IN (Tcontext_t        )   **  in_READ_UNIT_OUT_CONTEXT_ID           ;
+  public    : SC_IN (Tcontext_t        )   **  in_READ_UNIT_OUT_FRONT_END_ID         ;
+  public    : SC_IN (Tcontext_t        )   **  in_READ_UNIT_OUT_OOO_ENGINE_ID        ;
+  public    : SC_IN (Tpacket_t         )   **  in_READ_UNIT_OUT_PACKET_ID            ;
+  public    : SC_IN (Toperation_t      )   **  in_READ_UNIT_OUT_OPERATION            ;
+  public    : SC_IN (Ttype_t           )   **  in_READ_UNIT_OUT_TYPE                 ;
+  public    : SC_IN (Tlsq_ptr_t        )   **  in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+  public    : SC_IN (Tlsq_ptr_t        )   **  in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_IN (Tcontrol_t        )   **  in_READ_UNIT_OUT_HAS_IMMEDIAT         ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_READ_UNIT_OUT_IMMEDIAT             ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_READ_UNIT_OUT_DATA_RA              ;
+  public    : SC_IN (Tgeneral_data_t   )   **  in_READ_UNIT_OUT_DATA_RB              ;
+  public    : SC_IN (Tspecial_data_t   )   **  in_READ_UNIT_OUT_DATA_RC              ;
+  public    : SC_IN (Tcontrol_t        )   **  in_READ_UNIT_OUT_WRITE_RD             ;
+  public    : SC_IN (Tgeneral_address_t)   **  in_READ_UNIT_OUT_NUM_REG_RD           ;
+  public    : SC_IN (Tcontrol_t        )   **  in_READ_UNIT_OUT_WRITE_RE             ;
+  public    : SC_IN (Tspecial_address_t)   **  in_READ_UNIT_OUT_NUM_REG_RE           ;
+
+    // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_UNIT_IN_VAL                  ;
+  public    : SC_IN (Tcontrol_t        )   **  in_EXECUTE_UNIT_IN_ACK                  ;
+  public    : SC_OUT(Tcontext_t        )   ** out_EXECUTE_UNIT_IN_CONTEXT_ID           ;
+  public    : SC_OUT(Tcontext_t        )   ** out_EXECUTE_UNIT_IN_FRONT_END_ID         ;
+  public    : SC_OUT(Tcontext_t        )   ** out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ;
+  public    : SC_OUT(Tpacket_t         )   ** out_EXECUTE_UNIT_IN_PACKET_ID            ;
+  public    : SC_OUT(Toperation_t      )   ** out_EXECUTE_UNIT_IN_OPERATION            ;
+  public    : SC_OUT(Ttype_t           )   ** out_EXECUTE_UNIT_IN_TYPE                 ;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+  public    : SC_OUT(Tlsq_ptr_t        )   ** out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_EXECUTE_UNIT_IN_IMMEDIAT             ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_EXECUTE_UNIT_IN_DATA_RA              ;
+  public    : SC_OUT(Tgeneral_data_t   )   ** out_EXECUTE_UNIT_IN_DATA_RB              ;
+  public    : SC_OUT(Tspecial_data_t   )   ** out_EXECUTE_UNIT_IN_DATA_RC              ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_UNIT_IN_WRITE_RD             ;
+  public    : SC_OUT(Tgeneral_address_t)   ** out_EXECUTE_UNIT_IN_NUM_REG_RD           ;
+  public    : SC_OUT(Tcontrol_t        )   ** out_EXECUTE_UNIT_IN_WRITE_RE             ;
+  public    : SC_OUT(Tspecial_address_t)   ** out_EXECUTE_UNIT_IN_NUM_REG_RE           ;
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : std::list<uint32_t> *** _destination; // [nb_read_unit][nb_thread][nb_type];
+#endif
+
+    // -----[ Methods ]---------------------------------------------------
+
+#ifdef SYSTEMC
+    SC_HAS_PROCESS (Read_unit_to_Execution_unit);
+#endif
+  public  :          Read_unit_to_Execution_unit              
+  (
+#ifdef SYSTEMC
+   sc_module_name                                name,
+#else					       
+   std::string                                   name,
+#endif					       
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   Parameters                                  * param,
+   morpheo::behavioural::Tusage_t                usage=USE_ALL
+   );
+  public  :          ~Read_unit_to_Execution_unit             (void);
+					       
+  private : void        allocation                (
+#ifdef STATISTICS
+						   morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+						   void
+#endif
+						   );
+  private : void        deallocation              (void);
+					       
+#ifdef SYSTEMC				       
+  public  : void        transition                (void);
+  public  : void        genMealy                  (void);
+#endif					       
+
+#if VHDL				       
+  public  : void        vhdl                      (void);
+  private : void        vhdl_declaration          (Vhdl * & vhdl);
+  private : void        vhdl_body                 (Vhdl * & vhdl);
+#endif					       
+
+#ifdef STATISTICS
+  public  : void        statistics_declaration    (morpheo::behavioural::Parameters_Statistics * param_statistics);
+#endif
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+  private : void        end_cycle                 (void);
+#endif
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Types.h	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Types.h	(revision 77)
@@ -0,0 +1,61 @@
+#ifndef morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Types_h
+#define morpheo_behavioural_core_multi_execute_loop_execute_loop_network_read_unit_to_execution_unit_Types_h
+
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Common/include/ToString.h"
+#include "Common/include/FromString.h"
+#include "Common/include/ErrorMorpheo.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+  typedef enum
+    {
+      PRIORITY_STATIC,
+      PRIORITY_ROUND_ROBIN
+    } Tpriority_t;
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // end namespace execute_loop
+}; // end namespace multi_execute_loop
+}; // end namespace core
+}; // end namespace behavioural
+
+  template<> inline std::string toString<morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Tpriority_t>(const morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Tpriority_t& x)
+  {
+    switch (x)
+      {
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::PRIORITY_STATIC      : return "priority_static"; break;
+      case morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::PRIORITY_ROUND_ROBIN : return "priority_round_robin"; break;
+      default    : return ""      ; break;
+      }
+  };
+
+  template<> inline morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Tpriority_t fromString<morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Tpriority_t>(const std::string& x)
+  {
+    if ( (x.compare("0")                    == 0) or
+         (x.compare("priority_static")      == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::PRIORITY_STATIC;
+    if ( (x.compare("1")                    == 0) or
+         (x.compare("priority_round_robin") == 0))
+      return morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::PRIORITY_ROUND_ROBIN;
+    throw (ERRORMORPHEO ("fromString","Unknow string : \""+x+"\""));
+  };
+
+
+}; // end namespace morpheo              
+
+#endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 77)
@@ -0,0 +1,143 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::Parameters"
+  Parameters::Parameters (uint32_t    nb_read_unit           ,
+			  uint32_t    nb_execute_unit        ,
+			  uint32_t    nb_context             ,
+			  uint32_t    nb_front_end           ,
+			  uint32_t    nb_ooo_engine          ,
+			  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    size_store_queue       ,
+			  uint32_t    size_load_queue        ,
+			  Tpriority_t priority               ,
+			  bool     ** table_routing          ,
+			  bool     ** table_execute_type     ,
+			  bool     ** table_execute_thread   ):
+    _nb_read_unit            (nb_read_unit       ),
+    _nb_execute_unit         (nb_execute_unit    ),
+    _nb_context              (nb_context         ),
+    _nb_front_end            (nb_front_end       ),
+    _nb_ooo_engine           (nb_ooo_engine      ),
+    _nb_packet               (nb_packet          ),
+    _size_general_data       (size_general_data  ),
+    _size_special_data       (size_special_data  ),
+    _nb_general_register     (nb_general_register),
+    _nb_special_register     (nb_special_register),
+    _size_store_queue        (size_store_queue   ),
+    _size_load_queue         (size_load_queue    ),
+    _priority                (priority           ),
+
+    _size_context_id         (log2(nb_context         )),
+    _size_front_end_id       (log2(nb_front_end       )),
+    _size_ooo_engine_id      (log2(nb_ooo_engine      )),
+    _size_packet_id          (log2(nb_packet          )),
+    _size_general_register   (log2(nb_general_register)),
+    _size_special_register   (log2(nb_special_register)),
+    
+    _have_port_context_id    (_size_context_id    > 0),
+    _have_port_front_end_id  (_size_front_end_id  > 0),
+    _have_port_ooo_engine_id (_size_ooo_engine_id > 0),
+    _have_port_packet_id     (_size_packet_id     > 0),
+
+    _nb_thread               (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine))
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    _table_routing        = table_routing       ;
+    _table_execute_type   = table_execute_type  ;
+    _table_execute_thread = table_execute_thread;
+    
+    _nb_load_store_unit = 0;
+
+    for (uint32_t i=0; i<nb_execute_unit; i++)
+      if (table_execute_type[i][TYPE_MEMORY] == true)
+	_nb_load_store_unit ++;
+
+    // a execution_unit can't be a load_store unit and a functionnal unit
+    _nb_functionnal_unit = nb_execute_unit-_nb_load_store_unit;
+
+    test();
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+  
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::Parameters (copy)"
+  Parameters::Parameters (Parameters & param):
+    _nb_read_unit            (param._nb_read_unit           ),
+    _nb_execute_unit         (param._nb_execute_unit        ),
+    _nb_context              (param._nb_context             ),
+    _nb_front_end            (param._nb_front_end           ),
+    _nb_ooo_engine           (param._nb_ooo_engine          ),
+    _nb_packet               (param._nb_packet              ),
+    _size_general_data       (param._size_general_data      ),
+    _size_special_data       (param._size_special_data      ),
+    _nb_general_register     (param._nb_general_register    ),
+    _nb_special_register     (param._nb_special_register    ),
+    _size_store_queue        (param._size_store_queue       ),
+    _size_load_queue         (param._size_load_queue        ),
+    _priority                (param._priority               ),
+
+    _size_context_id         (param._size_context_id        ),
+    _size_front_end_id       (param._size_front_end_id      ),
+    _size_ooo_engine_id      (param._size_ooo_engine_id     ),
+    _size_packet_id          (param._size_packet_id         ),
+    _size_general_register   (param._size_general_register  ),
+    _size_special_register   (param._size_special_register  ),
+
+    _have_port_context_id    (param._have_port_context_id   ),
+    _have_port_front_end_id  (param._have_port_front_end_id ),
+    _have_port_ooo_engine_id (param._have_port_ooo_engine_id),
+    _have_port_packet_id     (param._have_port_packet_id    ),
+
+    _nb_thread               (param._nb_thread              )
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    _table_routing        = param._table_routing       ;
+    _table_execute_type   = param._table_execute_type  ;
+    _table_execute_thread = param._table_execute_thread;
+    _nb_load_store_unit   = param._nb_load_store_unit  ;
+    _nb_functionnal_unit  = param._nb_functionnal_unit ;
+
+    test();
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::~Parameters"
+  Parameters::~Parameters () 
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_msg_error.cpp	(revision 77)
@@ -0,0 +1,137 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/include/Types.h"
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
+#include <sstream>
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::msg_error"
+  std::string Parameters::msg_error(void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    std::string msg = "";
+
+    // TYPE         | multiple? | Optionnal? | Exclusive? | Comment
+    //--------------+-----------+------------+------------+---------
+    // TYPE_ALU     |     X     |            |            |
+    // TYPE_SHIFT   |     X     |            |            | ror is optionnal
+    // TYPE_MOVE    |     X     |            |            | cmov is optionnal
+    // TYPE_TEST    |     X     |            |            |
+    // TYPE_MUL_DIV |     X     |            |            | div is optionnal
+    // TYPE_EXTEND  |     X     |     X      |            |
+    // TYPE_FIND    |     X     |     X      |            |
+    // TYPE_SPECIAL |           |            |            | mac unit is optionnal
+    // TYPE_CUSTOM  |           |     X      |            |
+    // TYPE_BRANCH  |     X     |            |            |
+    // TYPE_MEMORY  |           |            |     X      |
+    
+    bool type_valid     [_nb_type];
+    bool type_uniq      [_nb_type]; // one thread can have multiple destination for this type ?
+    bool type_optionnal [_nb_type]; // this type is optionnal ?
+    bool type_exclusive [_nb_type]; // a unit that implement this type must be implement an another type ?
+
+    for (Ttype_t i=0; i<_nb_type; i++)
+      {
+	type_valid     [i] = false;
+	type_uniq      [i] = false;
+	type_optionnal [i] = false;
+	type_exclusive [i] = false;
+      }
+
+    type_valid     [TYPE_ALU    ] = true;
+    type_valid     [TYPE_SHIFT  ] = true;
+    type_valid     [TYPE_MOVE   ] = true;
+    type_valid     [TYPE_TEST   ] = true;
+    type_valid     [TYPE_MUL_DIV] = true;
+    type_valid     [TYPE_EXTEND ] = true;
+    type_valid     [TYPE_FIND   ] = true;
+    type_valid     [TYPE_SPECIAL] = true;
+    type_valid     [TYPE_CUSTOM ] = true;
+    type_valid     [TYPE_BRANCH ] = true;
+    type_valid     [TYPE_MEMORY ] = true;
+
+    type_uniq      [TYPE_SPECIAL] = true;
+    type_uniq      [TYPE_CUSTOM ] = true;
+    type_uniq      [TYPE_MEMORY ] = true;
+
+    type_optionnal [TYPE_EXTEND ] = true;
+    type_optionnal [TYPE_FIND   ] = true;
+    type_optionnal [TYPE_CUSTOM ] = true;
+
+    type_exclusive [TYPE_MEMORY ] = true;
+
+    bool type_present [_nb_thread][_nb_type];
+    for (uint32_t i=0; i<_nb_thread; i++)
+      for (Ttype_t j=0; j<_nb_type; j++)
+	type_present [i][j] = false;
+    
+    for (uint32_t i=0; i<_nb_execute_unit; i++)
+      for (uint32_t j=0; j<_nb_thread; j++)
+	if (_table_execute_thread [i][j] == true)
+	  // this execute_unit execute this thread !
+	  for (Ttype_t k=0; k<=_nb_type; k++)
+	    if (_table_execute_type[i][k] == true)
+	      {
+		// Test uniq type
+		if (type_present [j][k] and type_uniq[k])
+		  msg += "  - The execute_unit '"+toString(i)+"' can execute operation of type '"+toString_type(k)+"' at the thread '"+toString(j)+"'. But an another execute_unit can be execute the same type for the same thread. And the type must be uniq !.\n";
+		
+		type_present [j][k] = true;
+	      }
+
+    for (Ttype_t j=0; j<_nb_type; j++)
+      if (type_valid [j] and not type_optionnal[j])
+	for (uint32_t i=0; i<_nb_thread; i++)
+	  if (not type_present [i][j])
+	    msg += "  - The thread '"+toString(i)+"' can't access at the execute_unit to execute the type's operation '"+toString_type(j)+"' (and this type is not optionnal !).\n";
+	    
+    // Test all excluve type
+    for (uint32_t i=0; i<_nb_execute_unit; i++)
+      for (Ttype_t j=0; j<=_nb_type; j++)
+	if (type_exclusive [j] and _table_execute_type[i][j])
+	  for (Ttype_t k=0; k<=_nb_type; k++)
+	    if ((j != k) and (_table_execute_type[i][k] == true))
+	      {
+		msg += "  - The execute_unit ["+toString(i)+"] implement the type '"+toString_type(j)+"', and this type is exclusive with all others type.\n";
+		break;
+	      }
+
+    for (uint32_t i=0; i<_nb_execute_unit; i++)
+      {
+	uint32_t j;
+	for (j=0; j<_nb_thread; j++)
+	  if (_table_execute_thread [i][j] == true)
+	    break;
+
+	if (j == _nb_thread)
+	  msg += "  - The execute_unit ["+toString(i)+"] have none source's thread.\n";
+      }	  
+    
+    return msg;
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Parameters_print.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_print.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters_print.cpp	(revision 77)
@@ -0,0 +1,70 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
+#include "Behavioural/include/XML.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::print"
+  std::string Parameters::print (uint32_t depth)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    XML xml ("read_unit_to_execution_unit");
+
+    xml.balise_open("read_unit_to_execution_unit");
+    xml.singleton_begin("nb_read_unit       "); xml.attribut("value",toString(_nb_read_unit       )); xml.singleton_end();
+    xml.singleton_begin("nb_execute_unit    "); xml.attribut("value",toString(_nb_execute_unit    )); xml.singleton_end();
+    xml.singleton_begin("nb_context         "); xml.attribut("value",toString(_nb_context         )); xml.singleton_end();
+    xml.singleton_begin("nb_front_end       "); xml.attribut("value",toString(_nb_front_end       )); xml.singleton_end();
+    xml.singleton_begin("nb_ooo_engine      "); xml.attribut("value",toString(_nb_ooo_engine      )); xml.singleton_end();
+    xml.singleton_begin("nb_packet          "); xml.attribut("value",toString(_nb_packet          )); xml.singleton_end();
+    xml.singleton_begin("size_general_data  "); xml.attribut("value",toString(_size_general_data  )); xml.singleton_end();
+    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("size_store_queue   "); xml.attribut("value",toString(_size_store_queue   )); xml.singleton_end();
+    xml.singleton_begin("size_load_queue    "); xml.attribut("value",toString(_size_load_queue    )); xml.singleton_end();
+    xml.singleton_begin("priority           "); xml.attribut("value",toString(_priority           )); xml.singleton_end();
+    xml.balise_close();
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+    
+    return xml.get_body(depth);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::operator<<"
+  std::ostream& operator<< (std::ostream& output_stream ,
+			    morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters & x)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    output_stream << x.print(0);
+    
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+
+    return output_stream;
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit.cpp	(revision 77)
@@ -0,0 +1,447 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::Read_unit_to_Execution_unit"
+  Read_unit_to_Execution_unit::Read_unit_to_Execution_unit 
+  (
+#ifdef SYSTEMC
+   sc_module_name name,
+#else
+   string name,
+#endif
+#ifdef STATISTICS
+   morpheo::behavioural::Parameters_Statistics * param_statistics,
+#endif
+   morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param,
+   morpheo::behavioural::Tusage_t usage
+   ):
+    _name              (name)
+    ,_param            (param)
+    ,_usage            (usage)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation");
+
+    allocation (
+#ifdef STATISTICS
+		param_statistics
+#endif
+		);
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {	
+	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Allocation of statistics");
+
+	statistics_declaration(param_statistics);
+      }
+#endif
+
+#ifdef VHDL
+    if (_usage & USE_VHDL)
+      {
+	// generate the vhdl
+	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate the vhdl");
+	
+	vhdl();
+      }
+#endif
+
+#ifdef SYSTEMC
+    if (_usage & USE_SYSTEMC)
+      {
+	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - transition");
+
+	SC_METHOD (transition);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).pos();
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+
+	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Method - genMealy");
+
+	SC_METHOD (genMealy);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).neg();
+
+	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  {
+	    sensitive << (*(in_READ_UNIT_OUT_VAL                   [i]))
+		      << (*(in_READ_UNIT_OUT_OPERATION             [i]))
+		      << (*(in_READ_UNIT_OUT_TYPE                  [i]))
+		      << (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]))
+		      << (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i]))
+		      << (*(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i]))
+		      << (*(in_READ_UNIT_OUT_IMMEDIAT              [i]))
+		      << (*(in_READ_UNIT_OUT_DATA_RA               [i]))
+		      << (*(in_READ_UNIT_OUT_DATA_RB               [i]))
+		      << (*(in_READ_UNIT_OUT_DATA_RC               [i]))
+		      << (*(in_READ_UNIT_OUT_WRITE_RD              [i]))
+		      << (*(in_READ_UNIT_OUT_NUM_REG_RD            [i]))
+		      << (*(in_READ_UNIT_OUT_WRITE_RE              [i]))
+		      << (*(in_READ_UNIT_OUT_NUM_REG_RE            [i]));
+
+	    if (_param->_have_port_context_id)
+	    sensitive  << (*(in_READ_UNIT_OUT_CONTEXT_ID            [i]));
+	    if (_param->_have_port_front_end_id)
+	    sensitive  << (*(in_READ_UNIT_OUT_FRONT_END_ID          [i]));
+	    if (_param->_have_port_ooo_engine_id)
+	    sensitive  << (*(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i]));
+	    if (_param->_have_port_packet_id)
+	    sensitive  << (*(in_READ_UNIT_OUT_PACKET_ID             [i]));
+	  }
+	
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  sensitive << (*(in_EXECUTE_UNIT_IN_ACK                 [i]));
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  {
+	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_VAL           [i]));
+	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_TYPE          [i]));
+	    if (_param->_have_port_context_id)
+	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [i]));
+	    if (_param->_have_port_front_end_id)
+	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [i]));
+	    if (_param->_have_port_ooo_engine_id)
+	    (*(out_READ_UNIT_OUT_ACK [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	      (*(out_READ_UNIT_OUT_ACK [i])) (*(in_EXECUTE_UNIT_IN_ACK [j]));
+	  }
+
+	for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+	  {
+	    (*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_VAL [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    if (_param->_have_port_context_id)
+	      {
+	    (*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_CONTEXT_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+	    if (_param->_have_port_front_end_id)
+	      {
+	    (*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_FRONT_END_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+	    if (_param->_have_port_ooo_engine_id)
+	      {
+	    (*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+	    if (_param->_have_port_packet_id)
+	      {
+	    (*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_PACKET_ID     [j]));
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_PACKET_ID [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OPERATION     [j]));
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_OPERATION [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_TYPE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [j]));
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                   [j]));
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                  [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID            [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID          [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [j]));
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_VAL                  [j]));
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_TYPE                 [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID           [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID         [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID        [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_HAS_IMMEDIAT  [j]));
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_IMMEDIAT      [j]));
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_IMMEDIAT [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_DATA_RA       [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RA [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_DATA_RB       [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RB [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_DATA_RC       [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_DATA_RC [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_WRITE_RD      [j]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_NUM_REG_RD    [j]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RD [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_WRITE_RE      [j]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_WRITE_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+
+	    (*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_EXECUTE_UNIT_IN_ACK [i]));
+
+	    for (uint32_t j=0; j<_param->_nb_read_unit; j++)
+	      {
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_NUM_REG_RE    [j]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_VAL           [j]));
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_TYPE          [j]));
+		if (_param->_have_port_context_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_CONTEXT_ID    [j]));
+		if (_param->_have_port_front_end_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_FRONT_END_ID  [j]));
+		if (_param->_have_port_ooo_engine_id)
+		(*(out_EXECUTE_UNIT_IN_NUM_REG_RE [i])) (*(in_READ_UNIT_OUT_OOO_ENGINE_ID [j]));
+	      }
+	  }
+# endif    
+	
+#endif
+      }
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+    
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit"
+  Read_unit_to_Execution_unit::~Read_unit_to_Execution_unit (void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    if (_usage & USE_STATISTICS)
+      {
+	log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Generate Statistics file");
+	
+	delete _stat;
+      }
+#endif
+
+    log_printf(INFO,Read_unit_to_Execution_unit,FUNCTION,"Deallocation");
+    deallocation ();
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp	(revision 77)
@@ -0,0 +1,132 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+#include "Behavioural/include/Allocation.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::allocation"
+  void Read_unit_to_Execution_unit::allocation (
+#ifdef STATISTICS
+			       morpheo::behavioural::Parameters_Statistics * param_statistics
+#else
+			       void
+#endif
+			       )
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    _component   = new Component (_usage);
+
+    Entity * entity = _component->set_entity (_name       
+					      ,"Read_unit_to_Execution_unit"
+#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 "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("read_unit_out", IN, EAST, "Output of read_unit", _param->_nb_read_unit);
+
+       ALLOC1_VAL_IN ( in_READ_UNIT_OUT_VAL);
+       ALLOC1_ACK_OUT(out_READ_UNIT_OUT_ACK);
+
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_CONTEXT_ID           ,"CONTEXT_ID"           ,Tcontext_t        ,_param->_size_context_id);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_FRONT_END_ID         ,"FRONT_END_ID"         ,Tcontext_t        ,_param->_size_front_end_id);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_OOO_ENGINE_ID        ,"OOO_ENGINE_ID"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_PACKET_ID            ,"PACKET_ID"            ,Tpacket_t         ,_param->_size_packet_id);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_OPERATION            ,"OPERATION"            ,Toperation_t      ,_param->_size_operation);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_TYPE                 ,"TYPE"                 ,Ttype_t           ,_param->_size_type);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_size_store_queue);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_size_load_queue);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_HAS_IMMEDIAT         ,"HAS_IMMEDIAT"         ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_IMMEDIAT             ,"IMMEDIAT"             ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RA              ,"DATA_RA"              ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RB              ,"DATA_RB"              ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_DATA_RC              ,"DATA_RC"              ,Tspecial_data_t   ,_param->_size_special_data);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RD             ,"WRITE_RD"             ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RD           ,"NUM_REG_RD"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RE             ,"WRITE_RE"             ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RE           ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register);
+     }
+    // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     {
+       ALLOC1_INTERFACE("execute_unit_out", IN, EAST, "Output of execute_unit", _param->_nb_execute_unit);
+
+       ALLOC1_VAL_OUT(out_EXECUTE_UNIT_IN_VAL);
+       ALLOC1_ACK_IN ( in_EXECUTE_UNIT_IN_ACK);
+
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_CONTEXT_ID           ,"CONTEXT_ID"           ,Tcontext_t        ,_param->_size_context_id);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_FRONT_END_ID         ,"FRONT_END_ID"         ,Tcontext_t        ,_param->_size_front_end_id);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ,"OOO_ENGINE_ID"        ,Tcontext_t        ,_param->_size_ooo_engine_id);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_PACKET_ID            ,"PACKET_ID"            ,Tpacket_t         ,_param->_size_packet_id);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_OPERATION            ,"OPERATION"            ,Toperation_t      ,_param->_size_operation);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_TYPE                 ,"TYPE"                 ,Ttype_t           ,_param->_size_type);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t        ,_param->_size_store_queue);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t        ,_param->_size_load_queue);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ,"HAS_IMMEDIAT"         ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_IMMEDIAT             ,"IMMEDIAT"             ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RA              ,"DATA_RA"              ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB              ,"DATA_RB"              ,Tgeneral_data_t   ,_param->_size_general_data);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RC              ,"DATA_RC"              ,Tspecial_data_t   ,_param->_size_special_data);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RD             ,"WRITE_RD"             ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD           ,"NUM_REG_RD"           ,Tgeneral_address_t,_param->_size_general_register);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_WRITE_RE             ,"WRITE_RE"             ,Tcontrol_t        ,1);
+       ALLOC1_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RE           ,"NUM_REG_RE"           ,Tspecial_address_t,_param->_size_special_register);
+     }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+     _destination = new std::list<uint32_t> ** [_param->_nb_read_unit];
+     for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+       {
+	 _destination [i] = new std::list<uint32_t> * [_param->_nb_thread];
+	 for (uint32_t j=0; j<_param->_nb_thread; j++)
+	   {
+	     _destination [i][j] = new std::list<uint32_t> [_param->_nb_type];
+	   }
+       }
+
+#ifdef POSITION
+    _component->generate_file();
+#endif
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp	(revision 77)
@@ -0,0 +1,95 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::deallocation"
+  void Read_unit_to_Execution_unit::deallocation (void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    if (_usage & USE_SYSTEMC)
+      {
+	delete    in_CLOCK ;
+	delete    in_NRESET;
+
+	// ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete [] in_READ_UNIT_OUT_VAL                  ;
+	delete []out_READ_UNIT_OUT_ACK                  ;
+	if (_param->_have_port_context_id)
+	delete [] in_READ_UNIT_OUT_CONTEXT_ID           ;
+	if (_param->_have_port_front_end_id)
+	delete [] in_READ_UNIT_OUT_FRONT_END_ID         ;
+	if (_param->_have_port_ooo_engine_id)
+	delete [] in_READ_UNIT_OUT_OOO_ENGINE_ID        ;
+	if (_param->_have_port_packet_id)
+	delete [] in_READ_UNIT_OUT_PACKET_ID            ;
+	delete [] in_READ_UNIT_OUT_OPERATION            ;
+	delete [] in_READ_UNIT_OUT_TYPE                 ;
+	delete [] in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE;
+	delete [] in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ;
+	delete [] in_READ_UNIT_OUT_HAS_IMMEDIAT         ;
+	delete [] in_READ_UNIT_OUT_IMMEDIAT             ;
+	delete [] in_READ_UNIT_OUT_DATA_RA              ;
+	delete [] in_READ_UNIT_OUT_DATA_RB              ;
+	delete [] in_READ_UNIT_OUT_DATA_RC              ;
+	delete [] in_READ_UNIT_OUT_WRITE_RD             ;
+	delete [] in_READ_UNIT_OUT_NUM_REG_RD           ;
+	delete [] in_READ_UNIT_OUT_WRITE_RE             ;
+	delete [] in_READ_UNIT_OUT_NUM_REG_RE           ;
+
+	// ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+	delete [] out_EXECUTE_UNIT_IN_VAL                  ;
+	delete []  in_EXECUTE_UNIT_IN_ACK                  ;
+	if (_param->_have_port_context_id)
+	delete [] out_EXECUTE_UNIT_IN_CONTEXT_ID           ;
+	if (_param->_have_port_front_end_id)
+	delete [] out_EXECUTE_UNIT_IN_FRONT_END_ID         ;
+	if (_param->_have_port_ooo_engine_id)
+	delete [] out_EXECUTE_UNIT_IN_OOO_ENGINE_ID        ;
+	if (_param->_have_port_packet_id)
+	delete [] out_EXECUTE_UNIT_IN_PACKET_ID            ;
+	delete [] out_EXECUTE_UNIT_IN_OPERATION            ;
+	delete [] out_EXECUTE_UNIT_IN_TYPE                 ;
+	delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE;
+	delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ;
+	delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT         ;
+	delete [] out_EXECUTE_UNIT_IN_IMMEDIAT             ;
+	delete [] out_EXECUTE_UNIT_IN_DATA_RA              ;
+	delete [] out_EXECUTE_UNIT_IN_DATA_RB              ;
+	delete [] out_EXECUTE_UNIT_IN_DATA_RC              ;
+	delete [] out_EXECUTE_UNIT_IN_WRITE_RD             ;
+	delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD           ;
+	delete [] out_EXECUTE_UNIT_IN_WRITE_RE             ;
+	delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE           ;
+      }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+
+    delete [] _destination;
+    delete    _component;
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_end_cycle.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_end_cycle.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_end_cycle.cpp	(revision 77)
@@ -0,0 +1,47 @@
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::end_cycle"
+void Read_unit_to_Execution_unit::end_cycle ()
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+#ifdef STATISTICS
+    _stat->end_cycle();
+#endif    
+
+#ifdef VHDL_TESTBENCH
+    // Evaluation before read the ouput signal
+//  sc_start(0);
+    _interfaces->testbench();
+#endif
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_genMealy.cpp	(revision 77)
@@ -0,0 +1,113 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::genMealy"
+  void Read_unit_to_Execution_unit::genMealy (void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    bool execute_unit_use [_param->_nb_execute_unit];
+
+    for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+      execute_unit_use[i] = (PORT_READ(in_EXECUTE_UNIT_IN_ACK [i]) == 0);
+
+    for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+      {
+	bool       ack = false;
+
+	log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Test Read_unit[%d]",i);
+
+	if (PORT_READ(in_READ_UNIT_OUT_VAL [i]) == true)
+	  {
+	    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION," * have a valid entry.");
+	    
+	    Tcontext_t context_id    = (_param->_have_port_context_id   )?PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID    [i]):0;
+	    Tcontext_t front_end_id  = (_param->_have_port_front_end_id )?PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID  [i]):0;
+	    Tcontext_t ooo_engine_id = (_param->_have_port_ooo_engine_id)?PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID [i]):0;
+	    Tcontext_t num_thread    = get_num_thread(context_id   , _param->_size_context_id   ,
+						      front_end_id , _param->_size_front_end_id ,
+						      ooo_engine_id, _param->_size_ooo_engine_id);
+	    Ttype_t    type          = PORT_READ(in_READ_UNIT_OUT_TYPE [i]);
+	    
+#ifdef DEBUG_TEST
+	    if (_destination[i][num_thread][type].empty())
+	      throw ERRORMORPHEO(FUNCTION,"Invalid Operation : They have no execute_unit to receive a operation from the read_unit ["+toString(i)+"], thread ["+toString(num_thread)+"] and a operation's type ["+toString_type(type)+"].");
+#endif
+
+	    // find a free execute_unit
+	    for (std::list<uint32_t>::iterator it=_destination[i][num_thread][type].begin();
+		 (it != _destination[i][num_thread][type].end()) and (ack == false);
+		 it++)
+	      {
+		uint32_t dest = *it;
+
+		log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"   * Test destination [%d].",dest);
+			    
+		if (execute_unit_use [dest] == false)
+		  {
+		    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"     * Is ok! Link.");
+		    // have find !!!
+		    ack                     = true;
+		    execute_unit_use [dest] = true;
+
+		    if (_param->_have_port_context_id)
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_CONTEXT_ID            [dest], PORT_READ(in_READ_UNIT_OUT_CONTEXT_ID            [i]));
+		    if (_param->_have_port_front_end_id)
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_FRONT_END_ID          [dest], PORT_READ(in_READ_UNIT_OUT_FRONT_END_ID          [i]));
+		    if (_param->_have_port_ooo_engine_id)
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID         [dest], PORT_READ(in_READ_UNIT_OUT_OOO_ENGINE_ID         [i]));
+		    if (_param->_have_port_packet_id)
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_PACKET_ID             [dest], PORT_READ(in_READ_UNIT_OUT_PACKET_ID             [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_OPERATION             [dest], PORT_READ(in_READ_UNIT_OUT_OPERATION             [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_TYPE                  [dest], PORT_READ(in_READ_UNIT_OUT_TYPE                  [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE [dest], PORT_READ(in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE  [dest], PORT_READ(in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE  [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT          [dest], PORT_READ(in_READ_UNIT_OUT_HAS_IMMEDIAT          [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_IMMEDIAT              [dest], PORT_READ(in_READ_UNIT_OUT_IMMEDIAT              [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RA               [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RA               [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RB               [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RB               [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_DATA_RC               [dest], PORT_READ(in_READ_UNIT_OUT_DATA_RC               [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RD              [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RD              [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RD            [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RD            [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_WRITE_RE              [dest], PORT_READ(in_READ_UNIT_OUT_WRITE_RE              [i]));
+		    PORT_WRITE(out_EXECUTE_UNIT_IN_NUM_REG_RE            [dest], PORT_READ(in_READ_UNIT_OUT_NUM_REG_RE            [i]));
+		  }
+	      }
+	  }
+	PORT_WRITE(out_READ_UNIT_OUT_ACK [i], ack);
+      }
+
+    for (uint32_t i=0; i<_param->_nb_execute_unit; i++)
+      {
+	PORT_WRITE(out_EXECUTE_UNIT_IN_VAL[i], execute_unit_use[i]);  
+      }
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_statistics_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_statistics_declaration.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_statistics_declaration.cpp	(revision 77)
@@ -0,0 +1,41 @@
+#ifdef STATISTICS
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::statistics_declaration"
+  void Read_unit_to_Execution_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    _stat = new Stat (static_cast<std::string>(_name),
+		      "Read_unit_to_Execution_unit",
+		      param_statistics);
+    
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_transition.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_transition.cpp	(revision 77)
@@ -0,0 +1,90 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::transition"
+  void Read_unit_to_Execution_unit::transition (void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+    if (PORT_READ(in_NRESET) == 0)
+      {
+	// Flush routing_table
+	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_thread; j++)
+	    for (uint32_t k=0; k<_param->_nb_type; k++)
+	      _destination [i][j][k].clear();
+	
+	// Fill routing table
+	for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	  for (uint32_t j=0; j<_param->_nb_execute_unit; j++)
+	    // Test if link between src and dest
+	    if (_param->_table_routing [i][j])
+	      // Test the thread accepted by the execute_unit
+	      for (uint32_t k=0; k<_param->_nb_thread; k++)
+		if (_param->_table_execute_thread[j][k])
+		  // Test the type accepted by the execute_unit
+		  for (uint32_t l=0; l<_param->_nb_type; l++)
+		    if (_param->_table_execute_type [j][l])
+		      // push_back == minor have a better priority
+		      _destination [i][k][l].push_back(j);
+      }
+    else
+      {
+	if (_param->_priority == PRIORITY_ROUND_ROBIN)
+	  for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+	    for (uint32_t j=0; j<_param->_nb_thread; j++)
+	      for (uint32_t k=0; k<_param->_nb_type; k++)
+		if (_destination [i][j][k].size() > 1)
+		  {
+		    // Head queue became the Tail queue
+		    _destination [i][j][k].push_back(_destination [i][j][k].front());
+		    _destination [i][j][k].pop_front();
+		  }
+      }
+
+
+#if (DEBUG >= DEBUG_TRACE)
+//     // Print
+//     log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"Routing Table");
+//     for (uint32_t i=0; i<_param->_nb_read_unit; i++)
+//       for (uint32_t j=0; j<_param->_nb_thread; j++)
+// 	for (uint32_t k=0; k<_param->_nb_type; k++)
+// 	  for (std::list<uint32_t>::iterator l=_destination[i][j][k].begin();
+// 	       l != _destination[i][j][k].end();
+// 	       l++)
+// 	    log_printf(TRACE,Read_unit_to_Execution_unit,FUNCTION,"  * Read_unit [%d], send at the execution_unit [%d], the operation of thread [%d] with the type [%s].",i,*l,j,toString_type(k).c_str());
+#endif
+
+#if defined(STATISTICS) or defined(VHDL_TESTBENCH)
+    end_cycle ();
+#endif
+
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl.cpp	(revision 77)
@@ -0,0 +1,50 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+#include "Behavioural/include/Vhdl.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::vhdl"
+  void Read_unit_to_Execution_unit::vhdl (void)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,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,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_body.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_body.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_body.cpp	(revision 77)
@@ -0,0 +1,37 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::vhdl_body"
+  void Read_unit_to_Execution_unit::vhdl_body (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+    vhdl->set_body ("");
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_declaration.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_declaration.cpp	(revision 77)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_vhdl_declaration.cpp	(revision 77)
@@ -0,0 +1,36 @@
+#ifdef VHDL
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Read_unit_to_Execution_unit.h"
+
+namespace morpheo {
+namespace behavioural {
+namespace core {
+namespace multi_execute_loop {
+namespace execute_loop {
+namespace network {
+namespace read_unit_to_execution_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Read_unit_to_Execution_unit::vhdl_declaration"
+  void Read_unit_to_Execution_unit::vhdl_declaration (Vhdl * & vhdl)
+  {
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"End");
+  };
+
+}; // end namespace read_unit_to_execution_unit
+}; // end namespace network
+}; // 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/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile	(revision 77)
@@ -8,5 +8,5 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_COMPONENT                   = ./
+DIR_COMPONENT                   = .
 include                         $(DIR_COMPONENT)/Makefile.defs
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Component	(revision 77)
@@ -1,11 +1,11 @@
-#-----[ Directory ]----------------------------------------
+#-----[ Directory ]----------------------------------------
 DIR_DOC				= doc
 DIR_LIB				= lib
 DIR_TEST			= SelfTest
 
-#-----[ Variable ]-----------------------------------------
+#-----[ Variable ]-----------------------------------------
 OBJECTS				= $(OBJECTS_COMMON)
 
-#-----[ Rules ]--------------------------------------------
+#-----[ Rules ]--------------------------------------------
 .PRECIOUS			: $(DIR_LIB)/%.a
 #.NOTPARALLEL			: clean help
@@ -33,5 +33,5 @@
 component_help			:
 				@\
-				$(ECHO) " -----[ Component ]----------------------------------";\
+				$(ECHO) " -----[ Component ]----------------------------------";\
 				$(ECHO) "";\
 				$(ECHO) " * all_component        : compile all c++ file and generate library";\
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.deps	(revision 77)
@@ -2,5 +2,5 @@
 # $Id$
 # 
-# [ Description ]
+# [ Description ]
 # 
 # Makefile
@@ -14,24 +14,25 @@
 endif
 
-#-----[ Library ]------------------------------------------
-Behavioural_LIBRARY		= 	-lBehavioural				
+#-----[ Directory ]----------------------------------------
 
-Behavioural_DIR_LIBRARY		=	-L$(DIR_MORPHEO)/Behavioural/lib
+Behavioural_DIR                 =       $(DIR_MORPHEO)/Behavioural
 
-Behavioural_DEPENDENCIES	=	Common_library
+#-----[ Library ]------------------------------------------
 
-Behavioural_CLEAN        	=	Common_library_clean
+Behavioural_LIBRARY		= 	-lCommon		\
+					-lBehavioural	
 
+Behavioural_DIR_LIBRARY		=	-L$(Common_DIR)/lib	\
+					-L$(Behavioural_DIR)/lib
 
-#-----[ Rules ]--------------------------------------------
+#-----[ Rules ]--------------------------------------------
 
-#.NOTPARALLEL			: Behavioural_library
-#.NOTPARALLEL			: Behavioural_library_clean
+Behavioural_library		:
+				@\
+				$(MAKE) Common_library;
+				$(MAKE) --directory=$(Behavioural_DIR) 	--makefile=Makefile;
 
-Behavioural_library		: $(Behavioural_DEPENDENCIES)
+Behavioural_library_clean	:
 				@\
-				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural --makefile=Makefile ;
-
-Behavioural_library_clean	: $(Behavioural_CLEAN)
-				@\
-				$(MAKE) --directory=$(DIR_MORPHEO)/Behavioural --makefile=Makefile clean;
+				$(MAKE) Common_library_clean;
+				$(MAKE) --directory=$(Behavioural_DIR) 	--makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component.sh	(revision 77)
@@ -33,9 +33,4 @@
 function test_usage ()
 {
-    if test ! -d $SOURCE_DIR; then
-	echo "Source directory \"$SOURCE_DIR\" invalid";
-	usage;
-    fi;
-
     if test   -d $TMP_DIR; then
 	echo "Temporary directory \"$TMP_DIR\" exist already";
@@ -68,4 +63,9 @@
     fi;
 
+    if test ! -d $SOURCE_DIR; then
+	echo "Source directory \"$SOURCE_DIR\" invalid";
+	usage;
+    fi;
+
 #    if test -d $1/$2; then
 #	echo "Component in Directory \"$1/$2\" already exist";
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/Makefile.deps	(revision 77)
@@ -19,4 +19,5 @@
 
 #-----[ Library ]------------------------------------------
+
 @COMPONENT_LIBRARY		= 	-l@COMPONENT	\
 					$(Behavioural_LIBRARY)	
@@ -29,9 +30,9 @@
 @COMPONENT_library		:
 				@\
-				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile;
+				$(MAKE) Behavioural_library;
 				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile;
 
 @COMPONENT_library_clean	:
 				@\
-				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile clean;
+				$(MAKE) Behavioural_library_clean;
 				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/include/Parameters.h	(revision 77)
@@ -11,5 +11,4 @@
 #include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
-#include <math.h>
 
 namespace morpheo {
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/Makefile.deps	(revision 77)
@@ -19,4 +19,5 @@
 
 #-----[ Library ]------------------------------------------
+
 @COMPONENT_LIBRARY		= 	-l@COMPONENT	\
 					$(Behavioural_LIBRARY)	
@@ -29,9 +30,9 @@
 @COMPONENT_library		:
 				@\
-				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile;
+				$(MAKE) Behavioural_library;
 				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile;
 
 @COMPONENT_library_clean	:
 				@\
-				$(MAKE) --directory=$(Behavioural_DIR) --makefile=Makefile clean;
+				$(MAKE) Behavioural_library_clean;
 				$(MAKE) --directory=$(@COMPONENT_DIR) --makefile=Makefile clean;
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/include/Parameters.h	(revision 77)
@@ -11,5 +11,4 @@
 #include "Common/include/Debug.h"
 #include "Behavioural/include/Parameters.h"
-#include <math.h>
 
 namespace morpheo {
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Constants.h	(revision 77)
@@ -10,12 +10,14 @@
 #  define TYPE_MOVE                                0x2        // 00000 - unit multiple
 #  define TYPE_TEST                                0x3        // 00000 - unit multiple
-#  define TYPE_MUL_DIV                             0x4        // 00000 - unit multiple, type optionnal
+#  define TYPE_MUL_DIV                             0x4        // 00000 - unit multiple
 #  define TYPE_EXTEND                              0x5        // 00000 - unit multiple, type optionnal
 #  define TYPE_FIND                                0x6        // 00000 - unit multiple, type optionnal
 #  define TYPE_SPECIAL                             0x7        // 00000 - unit uniq
-#  define TYPE_CUSTOM                              0x8        // 00000 - unit uniq
-#  define TYPE_BRANCH                              0x9        // 00000 - unit multiple, to a special routing
+#  define TYPE_CUSTOM                              0x8        // 00000 - unit uniq    , type optionnal
+#  define TYPE_BRANCH                              0x9        // 00000 - unit multiple
 #  define TYPE_MEMORY                              0xa        // 00000 - unit uniq
-#  define MAX_TYPE                                 0x10       // 00000 - unit uniq
+
+#  define SIZE_TYPE                                5
+#  define MAX_TYPE                                 (1<<SIZE_TYPE)
 
   //====================================================[ Operation ]=====
@@ -186,5 +188,6 @@
 #  define OPERATION_CUSTOM_LV_4                    0x4f       // 100_1111
 
-#  define MAX_OPERATION                            0x80
+#  define SIZE_OPERATION                           7
+#  define MAX_OPERATION                            (1<<SIZE_OPERATION)
 
   //====================================================[ Exception ]=====
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h	(revision 77)
@@ -29,6 +29,9 @@
 #define         DEBUG_Multi_Write_unit				  false
 #define           DEBUG_Write_unit				  false
-#define             DEBUG_Execute_queue                           true
-#define             DEBUG_Write_queue                             true
+#define             DEBUG_Execute_queue                           false
+#define             DEBUG_Write_queue                             false
+#define         DEBUG_Network                                     true
+#define           DEBUG_Execution_unit_to_Write_unit              true
+#define           DEBUG_Read_unit_to_Execution_unit               true
 #define         DEBUG_Register_unit				  false
 #define           DEBUG_Register_unit_Glue			  false
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Parameters.h	(revision 77)
@@ -5,5 +5,5 @@
  * $Id$
  *
- * [ Description ]
+ * [ Description ]
  * 
  */
@@ -25,10 +25,14 @@
   class Parameters
   {
-    // -----[ fields ]----------------------------------------------------
+    // -----[ fields ]----------------------------------------------------
+  public   : static const uint32_t   _nb_operation        = MAX_OPERATION;
+  public   : static const uint32_t   _nb_type             = MAX_TYPE;
+  public   : static const uint32_t   _size_operation      = SIZE_OPERATION;
+  public   : static const uint32_t   _size_type           = SIZE_TYPE;     
   public   : static const uint32_t   _size_exception      = SIZE_EXCEPTION;
   public   : static const uint32_t   _size_dcache_type    = SIZE_DCACHE_TYPE;
   public   : static const uint32_t   _size_dcache_error   = SIZE_DCACHE_ERROR;
 
-    // -----[ methods ]---------------------------------------------------
+    // -----[ methods ]---------------------------------------------------
   public   :                  Parameters            (void);
   public   : virtual          ~Parameters           ();
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Types.h	(revision 77)
@@ -3,4 +3,5 @@
 
 #include "Common/include/Types.h"
+#include "Common/include/ToString.h"
 #include "Behavioural/include/Constants.h"
 
@@ -56,10 +57,7 @@
   };
 
-  inline Tcontext_t get_num_thread (Tcontext_t num_context_id ,
-				    uint32_t   size_context_id,
-				    Tcontext_t num_front_end_id ,
-				    uint32_t   size_front_end_id,
-				    Tcontext_t num_ooo_engine_id ,
-				    uint32_t   size_ooo_engine_id)
+  inline Tcontext_t get_num_thread (Tcontext_t num_context_id   , uint32_t size_context_id   ,
+				    Tcontext_t num_front_end_id , uint32_t size_front_end_id ,
+				    Tcontext_t num_ooo_engine_id, uint32_t size_ooo_engine_id)
   {
     return ((num_ooo_engine_id << (size_context_id + size_front_end_id)) |
@@ -67,8 +65,35 @@
 	    (num_context_id));
   }
-				    
 
+  inline uint32_t get_nb_thread (uint32_t nb_context ,
+				 uint32_t nb_front_end ,
+				 uint32_t nb_ooo_engine )
+  {
+    return (nb_ooo_engine *
+	    nb_front_end  *
+	    nb_context) ;
+  }
 
 }; // end namespace behavioural
+
+  inline std::string toString_type(const morpheo::behavioural::Ttype_t& x)
+  {
+    switch (x)
+      {
+      case TYPE_ALU     : return "ALU"    ; break;
+      case TYPE_SHIFT   : return "SHIFT"  ; break;
+      case TYPE_MOVE    : return "MOVE"   ; break;
+      case TYPE_TEST    : return "TEST"   ; break;
+      case TYPE_MUL_DIV : return "MUL_DIV"; break;
+      case TYPE_EXTEND  : return "EXTEND" ; break;
+      case TYPE_FIND    : return "FIND"   ; break;
+      case TYPE_SPECIAL : return "SPECIAL"; break;
+      case TYPE_CUSTOM  : return "CUSTOM" ; break;
+      case TYPE_BRANCH  : return "BRANCH" ; break;
+      case TYPE_MEMORY  : return "MEMORY" ; break;
+      default           : return ""       ; break;
+      }
+  };
+
 }; // end namespace morpheo              
 
Index: /trunk/IPs/systemC/processor/Morpheo/Common/Makefile
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Common/Makefile	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Common/Makefile	(revision 77)
@@ -8,5 +8,5 @@
 
 #-----[ Directory ]----------------------------------------
-DIR_COMPONENT                   = ./
+DIR_COMPONENT                   = .
 include                         $(DIR_COMPONENT)/Makefile.defs
 
Index: /trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps	(revision 76)
+++ /trunk/IPs/systemC/processor/Morpheo/Common/Makefile.deps	(revision 77)
@@ -10,23 +10,21 @@
 Common			= 	yes
 
+#-----[ Directory ]----------------------------------------
+
+Common_DIR              =       $(DIR_MORPHEO)/Common
+
 #-----[ Library ]------------------------------------------
+
 Common_LIBRARY		= 	-lCommon
 
-Common_DIR_LIBRARY	=	-L$(DIR_MORPHEO)/Common/lib
-
-Common_DEPENDENCIES	=
-
-Common_CLEAN        	=
-
+Common_DIR_LIBRARY	=	-L$(Common_DIR)/lib
 
 #-----[ Rules ]--------------------------------------------
 
-#.NOTPARALLEL		: Common_library Common_library_clean
+Common_library		:
+			@\
+			$(MAKE) --directory=$(Common_DIR) --makefile=Makefile 
 
-Common_library		: $(Common_DEPENDENCIES)
+Common_library_clean	:
 			@\
-			$(MAKE) --directory=$(DIR_MORPHEO)/Common --makefile=Makefile 
-	
-Common_library_clean	: $(Common_CLEAN)
-			@\
-			$(MAKE) --directory=$(DIR_MORPHEO)/Common --makefile=Makefile clean
+			$(MAKE) --directory=$(Common_DIR) --makefile=Makefile clean
