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 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Parameters.cpp	(revision 88)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/include/Parameters.h"
+#include "Common/include/Max.h"
 
 namespace morpheo {
@@ -20,5 +21,7 @@
 #define FUNCTION "Read_unit_to_Execution_unit::Parameters"
   Parameters::Parameters (uint32_t    nb_read_unit           ,
+			  uint32_t  * nb_read_unit_port      ,
 			  uint32_t    nb_execute_unit        ,
+			  uint32_t  * nb_execute_unit_port   ,
 			  uint32_t    nb_context             ,
 			  uint32_t    nb_front_end           ,
@@ -32,43 +35,31 @@
 			  uint32_t    size_load_queue        ,
 			  Tpriority_t priority               ,
-			  bool     ** table_routing          ,
+			  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),
-    _have_port_load_queue_ptr(_size_load_queue    > 1),
-
-    _nb_thread               (get_nb_thread (nb_context, nb_front_end, nb_ooo_engine))
+			  bool     ** table_execute_thread   ,
+                          bool        is_toplevel            )
   {
     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_read_unit            = nb_read_unit        ;
+    _nb_read_unit_port       = nb_read_unit_port   ;    
+    _nb_execute_unit         = nb_execute_unit     ;
+    _nb_execute_unit_port    = nb_execute_unit_port;
+    _nb_context              = nb_context          ;
+    _nb_front_end            = nb_front_end        ;
+    _nb_ooo_engine           = nb_ooo_engine       ;
+    _nb_packet               = nb_packet           ;
+    _nb_general_register     = nb_general_register ;
+    _nb_special_register     = nb_special_register ;
+    _priority                = priority            ;
+    _table_routing           = table_routing       ;
+    _table_execute_type      = table_execute_type  ;
+    _table_execute_thread    = table_execute_thread;
 
-    _nb_load_store_unit   = 0;
+    _max_nb_read_unit_port   = max<uint32_t>(_nb_read_unit_port, _nb_read_unit);
+    _max_nb_execute_unit_port= max<uint32_t>(_nb_execute_unit_port, _nb_execute_unit);
+
+    _nb_thread               = get_nb_thread (nb_context, nb_front_end, nb_ooo_engine);
+    _nb_load_store_unit      = 0;
 
     for (uint32_t i=0; i<nb_execute_unit; i++)
@@ -82,54 +73,50 @@
     test();
 
+    if (is_toplevel)
+      {
+        _size_context_id         = log2(nb_context         );
+        _size_front_end_id       = log2(nb_front_end       );
+        _size_ooo_engine_id      = log2(nb_ooo_engine      );
+        _size_rob_ptr            = log2(nb_packet          );
+        _size_general_register   = log2(nb_general_register);
+        _size_special_register   = log2(nb_special_register);
+        _size_general_data       = size_general_data   ;
+        _size_special_data       = size_special_data   ;
+        _size_store_queue_ptr    = log2(size_store_queue   );
+        _size_load_queue_ptr     = log2(size_load_queue    );
+        
+        _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_rob_ptr       = _size_rob_ptr       > 0;
+        _have_port_load_queue_ptr= _size_load_queue_ptr> 0;
+        
+        copy();
+      }
+
     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)
+//   {
+//     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
+
+//     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    ),
-    _have_port_load_queue_ptr(param._have_port_load_queue_ptr),
-
-    _nb_thread               (param._nb_thread              )
+#define FUNCTION "Read_unit_to_Execution_unit::~Parameters"
+  Parameters::~Parameters () 
   {
     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 () 
+#define FUNCTION "Read_unit_to_Execution_unit::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Read_unit_to_Execution_unit,FUNCTION,"Begin");
