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 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp	(revision 88)
@@ -35,81 +35,98 @@
 			  uint32_t nb_bypass_memory   ,
 			  uint32_t size_store_queue   ,
-			  uint32_t size_load_queue    ):
-    _size_queue            (size_queue           ),
-    _nb_inst_retire        (nb_inst_retire       ),
-    _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  ),
-    _nb_gpr_write          (nb_gpr_write         ),
-    _nb_spr_write          (nb_spr_write         ),
-    _nb_bypass_write       (nb_bypass_write      ),
-    _nb_bypass_memory      (nb_bypass_memory     ),
-    _size_store_queue      (size_store_queue     ),
-    _size_load_queue       (size_load_queue      ),
-
-    _size_context_id       (static_cast<uint32_t>(log2(_nb_context         ))),
-    _size_front_end_id     (static_cast<uint32_t>(log2(_nb_front_end       ))),
-    _size_ooo_engine_id    (static_cast<uint32_t>(log2(_nb_ooo_engine      ))),
-    _size_rob_id           (static_cast<uint32_t>(log2(_nb_packet          ))),
-    _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))),
-    _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))),
-
-    _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_id        (_size_rob_id        > 0),
-    _have_port_load_queue_ptr(_size_load_queue    > 1)
+			  uint32_t size_load_queue    ,
+                          bool     is_toplevel)
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+
+    _size_queue              = size_queue           ;
+    _nb_inst_retire          = nb_inst_retire       ;
+    _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  ;
+    _nb_gpr_write            = nb_gpr_write         ;
+    _nb_spr_write            = nb_spr_write         ;
+    _nb_bypass_write         = nb_bypass_write      ;
+    _nb_bypass_memory        = nb_bypass_memory     ;
+
     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,Reservation_station,FUNCTION,"End");
   };
   
+// #undef  FUNCTION
+// #define FUNCTION "Reservation_station::Parameters (copy)"
+//   Parameters::Parameters (Parameters & param):
+//     _size_queue            (param._size_queue            ),
+//     _nb_inst_retire        (param._nb_inst_retire        ),
+//     _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   ),
+//     _nb_gpr_write          (param._nb_gpr_write          ),
+//     _nb_spr_write          (param._nb_spr_write          ),
+//     _nb_bypass_write       (param._nb_bypass_write       ),
+//     _nb_bypass_memory      (param._nb_bypass_memory      ),
+//     _size_store_queue      (param._size_store_queue      ),
+//     _size_load_queue       (param._size_load_queue       ),
+
+//     _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_rob_id           (param._size_rob_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_rob_id        (param._have_port_rob_id       ),
+//     _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
+//   {
+//     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
+//     test();
+//     log_printf(FUNC,Reservation_station,FUNCTION,"End");
+//   };
+
 #undef  FUNCTION
-#define FUNCTION "Reservation_station::Parameters (copy)"
-  Parameters::Parameters (Parameters & param):
-    _size_queue            (param._size_queue            ),
-    _nb_inst_retire        (param._nb_inst_retire        ),
-    _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   ),
-    _nb_gpr_write          (param._nb_gpr_write          ),
-    _nb_spr_write          (param._nb_spr_write          ),
-    _nb_bypass_write       (param._nb_bypass_write       ),
-    _nb_bypass_memory      (param._nb_bypass_memory      ),
-    _size_store_queue      (param._size_store_queue      ),
-    _size_load_queue       (param._size_load_queue       ),
-
-    _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_rob_id           (param._size_rob_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_rob_id        (param._have_port_rob_id       ),
-    _have_port_load_queue_ptr(param._have_port_load_queue_ptr)
+#define FUNCTION "Reservation_station::~Parameters"
+  Parameters::~Parameters (void) 
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
-    test();
     log_printf(FUNC,Reservation_station,FUNCTION,"End");
   };
 
 #undef  FUNCTION
-#define FUNCTION "Reservation_station::~Parameters"
-  Parameters::~Parameters () 
+#define FUNCTION "Reservation_station::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Reservation_station,FUNCTION,"Begin");
