Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Dependency_checking_unit_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/main.cpp	(revision 88)
@@ -48,5 +48,7 @@
 	 _nb_general_register,
 	 _nb_special_register,
-	 _nb_inst_insert     );
+	 _nb_inst_insert     ,
+         true //is_toplevel
+         );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/SelfTest/src/test.cpp	(revision 88)
@@ -24,4 +24,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+//   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Dependency_checking_unit * _Dependency_checking_unit = new Dependency_checking_unit 
     (name.c_str(),
@@ -30,5 +40,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Parameters.h	(revision 88)
@@ -31,11 +31,11 @@
   public : uint32_t   _nb_inst_insert        ;
 
-  public : uint32_t   _size_front_end_id     ;
-  public : uint32_t   _size_context_id       ;
-  public : uint32_t   _size_general_register ;
-  public : uint32_t   _size_special_register ;
-                      
-  public : uint32_t   _have_port_context_id  ;
-  public : uint32_t   _have_port_front_end_id;
+//public : uint32_t   _size_front_end_id     ;
+//public : uint32_t   _size_context_id       ;
+//public : uint32_t   _size_general_register ;
+//public : uint32_t   _size_special_register ;
+
+//public : uint32_t   _have_port_context_id  ;
+//public : uint32_t   _have_port_front_end_id;
 
     //-----[ methods ]-----------------------------------------------------------
@@ -44,9 +44,13 @@
 			uint32_t nb_general_register   ,
 			uint32_t nb_special_register   ,
-			uint32_t nb_inst_insert        );
+			uint32_t nb_inst_insert        ,
+                        bool     is_toplevel=false
+                        );
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
 
   public :        Parameters_test msg_error  (void);
+
+  public :        void            copy       (void);
 
   public :        std::string     print      (uint32_t depth);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit.cpp	(revision 88)
@@ -39,4 +39,10 @@
     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
 
+#if DEBUG_Dependency_checking_unit == true
+    log_printf(INFO,Dependency_checking_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Dependency_checking_unit,FUNCTION,"Allocation");
 
@@ -48,5 +54,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Dependency_checking_unit,FUNCTION,"Allocation of statistics");
@@ -57,5 +63,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -67,5 +73,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 # if defined(STATISTICS) or defined(VHDL_TESTBENCH)
@@ -86,5 +92,5 @@
 	SC_METHOD (genMealy);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+// 	sensitive << (*(in_CLOCK)).neg(); // don't need internal register
 	for (uint32_t i=0;i<_param->_nb_inst_insert; i++)
 	  {
@@ -221,5 +227,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Dependency_checking_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp	(revision 88)
@@ -113,5 +113,6 @@
 
 #ifdef POSITION
-    _component->generate_file();
+     if (usage_is_set(_usage,USE_POSITION))
+       _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp	(revision 88)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete     in_CLOCK ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_genMealy.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Dependency_checking_unit::genMealy (void)
   {
-    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
+    log_begin(Dependency_checking_unit,FUNCTION);
+    log_function(Dependency_checking_unit,FUNCTION,_name.c_str());
 
 //     Tcontrol_t         val                [_param->_nb_inst_insert];
@@ -77,4 +78,26 @@
 	num_reg_re_phy_new [i] = PORT_READ(in_RENAME_IN_NUM_REG_RE_PHY_NEW [i]);
 	
+        log_printf(TRACE,Dependency_checking_unit,FUNCTION,"  * (before) [%d] %.2d %.2d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d -> %.5d, %.1d %.2d %.5d -> %.5d",
+                   i,
+                   front_end_id       [i],
+                   context_id         [i],
+                   read_ra            [i],
+                   num_reg_ra_log     [i],
+                   num_reg_ra_phy     [i],
+                   read_rb            [i],
+                   num_reg_rb_log     [i],
+                   num_reg_rb_phy     [i],
+                   read_rc            [i],
+                   num_reg_rc_log     [i],
+                   num_reg_rc_phy     [i],
+                   write_rd           [i],
+                   num_reg_rd_log     [i],
+                   num_reg_rd_phy_old [i],
+                   num_reg_rd_phy_new [i],
+                   write_re           [i],
+                   num_reg_re_log     [i],
+                   num_reg_re_phy_old [i],
+                   num_reg_re_phy_new [i]);
+
 	// ================================================================
 	// =====[ Write after Write ]======================================
@@ -88,4 +111,5 @@
 		(context_id     [j] == context_id     [i]) )
 	      {
+                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RD :  WAW dependency with inst[%d].RD",j);
 		num_reg_rd_phy_old [i] = num_reg_rd_phy_new [j];
 		break; // find the most recently dependency
@@ -100,4 +124,5 @@
 		(context_id     [j] == context_id     [i]) )
 	      {
+                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RE : WAW dependency with inst[%d].RE",j);
 		num_reg_re_phy_old [i] = num_reg_re_phy_new [j];
 		break; // find the most recently dependency
@@ -114,4 +139,5 @@
 		(context_id     [j] == context_id     [i]) )
 	      {
+                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RA :  RAW dependency with inst[%d].RD",j);
 		num_reg_ra_phy [i] = num_reg_rd_phy_new [j];
 		break; // find the most recently dependency
@@ -126,4 +152,5 @@
 		(context_id     [j] == context_id     [i]) )
 	      {
+                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RB :  RAW dependency with inst[%d].RD",j);
 		num_reg_rb_phy [i] = num_reg_rd_phy_new [j];
 		break; // find the most recently dependency
@@ -138,7 +165,30 @@
 		(context_id     [j] == context_id     [i]) )
 	      {
+                log_printf(TRACE,Dependency_checking_unit,FUNCTION,"    * RC :  RAW dependency with inst[%d].RE",j);
 		num_reg_rc_phy [i] = num_reg_re_phy_new [j];
 		break; // find the most recently dependency
 	      }
+
+        log_printf(TRACE,Dependency_checking_unit,FUNCTION,"  * (after ) [%d] %.2d %.2d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d, %.1d %.2d %.5d -> %.5d, %.1d %.2d %.5d -> %.5d",
+                   i,
+                   front_end_id       [i],
+                   context_id         [i],
+                   read_ra            [i],
+                   num_reg_ra_log     [i],
+                   num_reg_ra_phy     [i],
+                   read_rb            [i],
+                   num_reg_rb_log     [i],
+                   num_reg_rb_phy     [i],
+                   read_rc            [i],
+                   num_reg_rc_log     [i],
+                   num_reg_rc_phy     [i],
+                   write_rd           [i],
+                   num_reg_rd_log     [i],
+                   num_reg_rd_phy_old [i],
+                   num_reg_rd_phy_new [i],
+                   write_re           [i],
+                   num_reg_re_log     [i],
+                   num_reg_re_phy_old [i],
+                   num_reg_re_phy_new [i]);
 
  	// =====[ Output ]=================================================
@@ -168,5 +218,5 @@
       }
 
-    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
+    log_end(Dependency_checking_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Parameters.cpp	(revision 88)
@@ -24,5 +24,6 @@
 			  uint32_t nb_general_register   ,
 			  uint32_t nb_special_register   ,
-			  uint32_t nb_inst_insert        )
+			  uint32_t nb_inst_insert        ,
+                          bool     is_toplevel           )
   {
     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
@@ -34,13 +35,19 @@
     _nb_inst_insert      = nb_inst_insert     ;
 
-    _size_front_end_id      = log2(nb_front_end       );
-    _size_context_id        = log2(max_nb_context     );
-    _size_general_register  = log2(nb_general_register);
-    _size_special_register  = log2(nb_special_register);
-    
-    _have_port_front_end_id = _size_front_end_id>0;
-    _have_port_context_id   = _size_context_id  >0;
+    test();
 
-    test();
+    if (is_toplevel)
+      {
+        _size_front_end_id      = log2(nb_front_end       );
+        _size_context_id        = log2(max_nb_context     );
+        _size_general_register  = log2(nb_general_register);
+        _size_special_register  = log2(nb_special_register);
+        
+        _have_port_front_end_id = _size_front_end_id>0;
+        _have_port_context_id   = _size_context_id  >0;
+
+        copy();
+      }
+
     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
   };
@@ -57,5 +64,13 @@
 #undef  FUNCTION
 #define FUNCTION "Dependency_checking_unit::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void)
+  {
+    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Dependency_checking_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Dependency_checking_unit::copy"
+  void Parameters::copy (void)
   {
     log_printf(FUNC,Dependency_checking_unit,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Free_List_unit_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/main.cpp	(revision 88)
@@ -57,5 +57,7 @@
 	 _nb_pop             ,
 	 _nb_push            ,
-	 _priority           );
+	 _priority           ,
+         true //is_toplevel
+         );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/SelfTest/src/test.cpp	(revision 88)
@@ -23,4 +23,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+//   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Free_List_unit * _Free_List_unit = new Free_List_unit 
     (name.c_str(),
@@ -29,5 +39,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Parameters.h	(revision 88)
@@ -34,6 +34,6 @@
   public : Tpriority_t _priority             ;
 
-  public : uint32_t    _size_general_register;
-  public : uint32_t    _size_special_register;
+//public : uint32_t    _size_general_register;
+//public : uint32_t    _size_special_register;
 
   public : uint32_t    _nb_bank_by_pop       ;
@@ -52,9 +52,12 @@
 			uint32_t    nb_pop             ,
 			uint32_t    nb_push            ,
-			Tpriority_t priority           );
+			Tpriority_t priority           ,
+                        bool        is_toplevel=false);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
 
   public :        Parameters_test msg_error  (void);
+
+  public :        void            copy       (void);
 
   public :        std::string     print      (uint32_t depth);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit.cpp	(revision 88)
@@ -39,4 +39,10 @@
     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
 
+#if DEBUG_Free_List_unit == true
+    log_printf(INFO,Free_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Free_List_unit,FUNCTION,"Allocation");
 
@@ -48,5 +54,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Free_List_unit,FUNCTION,"Allocation of statistics");
@@ -57,5 +63,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -67,5 +73,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	log_printf(INFO,Free_List_unit,FUNCTION,"Method - transition");
@@ -83,5 +89,5 @@
 	SC_METHOD (genMealy_pop);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
 	for (uint32_t i=0; i<_param->_nb_pop; i++)
 	  sensitive << (*(in_POP_GPR_VAL[i]))
@@ -104,5 +110,5 @@
 	SC_METHOD (genMealy_push_gpr);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
 	for (uint32_t i=0; i<_param->_nb_push; i++)
 	  sensitive << (*(in_PUSH_GPR_VAL    [i]))
@@ -123,5 +129,5 @@
 	SC_METHOD (genMealy_push_spr);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
 	for (uint32_t i=0; i<_param->_nb_push; i++)
 	  sensitive << (*(in_PUSH_SPR_VAL    [i]))
@@ -150,5 +156,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Free_List_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp	(revision 88)
@@ -86,5 +86,6 @@
      }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+     if (usage_is_set(_usage,USE_SYSTEMC))
+       {
      _gpr_list = new std::list<uint32_t> [_param->_nb_bank];
      _spr_list = new std::list<uint32_t> [_param->_nb_bank];
@@ -98,7 +99,10 @@
      internal_PUSH_GPR_BANK = new uint32_t   [_param->_nb_push];
      internal_PUSH_SPR_BANK = new uint32_t   [_param->_nb_push];
+       }
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
 #ifdef POSITION
-    _component->generate_file();
+     if (usage_is_set(_usage,USE_POSITION))
+       _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp	(revision 88)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete    in_CLOCK ;
@@ -43,17 +43,19 @@
 	delete [] out_PUSH_SPR_ACK    ;
 	delete []  in_PUSH_SPR_NUM_REG;
+
+        delete [] _gpr_list;
+        delete [] _spr_list;
+        
+        delete [] internal_POP_ACK     ;
+        delete [] internal_POP_GPR_BANK;
+        delete [] internal_POP_SPR_BANK;
+        
+        delete [] internal_PUSH_GPR_ACK ;
+        delete [] internal_PUSH_SPR_ACK ;
+        delete [] internal_PUSH_GPR_BANK;
+        delete [] internal_PUSH_SPR_BANK;
       }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-     delete [] _gpr_list;
-     delete [] _spr_list;
-
-     delete [] internal_POP_ACK     ;
-     delete [] internal_POP_GPR_BANK;
-     delete [] internal_POP_SPR_BANK;
-
-     delete [] internal_PUSH_GPR_ACK ;
-     delete [] internal_PUSH_SPR_ACK ;
-     delete [] internal_PUSH_GPR_BANK;
-     delete [] internal_PUSH_SPR_BANK;
 
      delete _component;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_pop.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Free_List_unit::genMealy_pop (void)
   {
-    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+    log_begin(Free_List_unit,FUNCTION);
+    log_function(Free_List_unit,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_pop; i++)
@@ -77,5 +78,5 @@
     
 
-    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+    log_end(Free_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_gpr.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Free_List_unit::genMealy_push_gpr (void)
   {
-    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+    log_begin(Free_List_unit,FUNCTION);
+    log_function(Free_List_unit,FUNCTION,_name.c_str());
 
     bool bank_use [_param->_nb_bank];
@@ -51,5 +52,5 @@
       }
     
-    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+    log_end(Free_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_genMealy_push_spr.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Free_List_unit::genMealy_push_spr (void)
   {
-    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+    log_begin(Free_List_unit,FUNCTION);
+    log_function(Free_List_unit,FUNCTION,_name.c_str());
 
     bool bank_use [_param->_nb_bank];
@@ -51,5 +52,5 @@
       }
     
-    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+    log_end(Free_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Free_List_unit::transition (void)
   {
-    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+    log_begin(Free_List_unit,FUNCTION);
+    log_function(Free_List_unit,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -39,8 +40,9 @@
 	// =====[ POP ]======================================
 	// ==================================================
-// 	log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction POP");
 	for (uint32_t i=0; i<_param->_nb_pop; i++)
 	  if (PORT_READ(in_POP_VAL[i]) and internal_POP_ACK [i])
 	    {
+              log_printf(TRACE,Free_List_unit,FUNCTION,"  * POP [%d]",i);
+
 	      if (PORT_READ(in_POP_GPR_VAL [i]))
 		_gpr_list [internal_POP_GPR_BANK[i]].pop_front();
@@ -53,21 +55,54 @@
 	// =====[ PUSH_GPR ]=================================
 	// ==================================================
-// 	log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_GPR");
 	for (uint32_t i=0; i<_param->_nb_push; i++)
 	  if (PORT_READ(in_PUSH_GPR_VAL[i]) and internal_PUSH_GPR_ACK [i])
-	    _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
-							    PORT_READ(in_PUSH_GPR_NUM_REG [i]));
+            {
+              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_GPR[%d]",i);
 
+              _gpr_list [internal_PUSH_GPR_BANK[i]].push_back(//_param->_mask_gpr &
+                                                              PORT_READ(in_PUSH_GPR_NUM_REG [i]));
+            }
 	// ==================================================
 	// =====[ PUSH_SPR ]=================================
 	// ==================================================
-// 	log_printf(TRACE,Free_List_unit,FUNCTION,"Test transaction PUSH_SPR");
 	for (uint32_t i=0; i<_param->_nb_push; i++)
 	  if (PORT_READ(in_PUSH_SPR_VAL[i]) and internal_PUSH_SPR_ACK [i])
-	    _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
-							    PORT_READ(in_PUSH_SPR_NUM_REG [i]));
+            {
+              log_printf(TRACE,Free_List_unit,FUNCTION,"  * PUSH_SPR[%d]",i);
+
+              _spr_list [internal_PUSH_SPR_BANK[i]].push_back(//_param->_mask_spr &
+                                                              PORT_READ(in_PUSH_SPR_NUM_REG [i]));
+            }
 
 	if (_param->_priority == PRIORITY_ROUND_ROBIN)
 	  internal_BANK_PRIORITY = (internal_BANK_PRIORITY+1)%_param->_nb_bank_by_pop;
+
+#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Free_List_unit == true)
+        log_printf(TRACE,Free_List_unit,FUNCTION,"  * Dump Free List");
+
+        for (uint32_t i=0; i<_param->_nb_bank; ++i)
+          {
+            uint32_t j=0;
+            for (std::list<Tgeneral_address_t>::iterator it=_gpr_list->begin();
+                 it!=_gpr_list->end();
+                 ++it)
+              {
+                log_printf(TRACE,Free_List_unit,FUNCTION,"    * GPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
+                ++j;
+              }
+          }
+        for (uint32_t i=0; i<_param->_nb_bank; ++i)
+          {
+            uint32_t j=0;
+            for (std::list<Tspecial_address_t>::iterator it=_spr_list->begin();
+                 it!=_spr_list->end();
+                 ++it)
+              {
+                log_printf(TRACE,Free_List_unit,FUNCTION,"    * SPR_LIST[%.5d][%.5d] : %.5d",i,j,*it);
+                ++j;
+              }
+          }
+
+#endif
       }
 
@@ -76,5 +111,5 @@
 #endif
 
-    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+    log_end(Free_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters.cpp	(revision 88)
@@ -27,5 +27,6 @@
 			  uint32_t    nb_pop             ,
 			  uint32_t    nb_push            ,
-			  Tpriority_t priority           )
+			  Tpriority_t priority           ,
+                          bool        is_toplevel        )
   {
     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
@@ -41,6 +42,6 @@
     test();
 
-    _size_general_register = log2(nb_general_register);
-    _size_special_register = log2(nb_special_register);
+    uint32_t size_general_register = log2(nb_general_register);
+    uint32_t size_special_register = log2(nb_special_register);
 
     _nb_bank_by_pop        = _nb_bank / _nb_pop;
@@ -49,5 +50,5 @@
 
     _bank_gpr_nb_slot      = gpr_nb_slot/nb_bank;
-    _bank_gpr_size_slot    = _size_general_register-log2(nb_bank);
+    _bank_gpr_size_slot    = size_general_register-log2(nb_bank);
 
     _mask_gpr              = gen_mask<Tgeneral_address_t> (_bank_gpr_size_slot);
@@ -56,7 +57,15 @@
 
     _bank_spr_nb_slot      = spr_nb_slot/nb_bank;
-    _bank_spr_size_slot    = _size_special_register-log2(nb_bank);
+    _bank_spr_size_slot    = size_special_register-log2(nb_bank);
 
     _mask_spr              = gen_mask<Tspecial_address_t> (_bank_spr_size_slot);
+
+    if (is_toplevel)
+      {
+        _size_general_register = size_general_register;
+        _size_special_register = size_special_register;
+
+        copy();
+      }
 
     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
@@ -74,5 +83,13 @@
 #undef  FUNCTION
 #define FUNCTION "Free_List_unit::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void) 
+  {
+    log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Free_List_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Free_List_unit::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Parameters_msg_error.cpp	(revision 88)
@@ -29,11 +29,15 @@
 
     if (_nb_general_register <= _nb_thread*_nb_general_register_logic)
-      test.error(_("The number of physical general register is insufficient.\n"));
+      test.error(toString(_("The number of physical general register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_general_register_logic+1));
     if (_nb_special_register <= _nb_thread*_nb_special_register_logic)
-      test.error(_("The number of physical special register is insufficient.\n"));
+      test.error(toString(_("The number of physical special register is insufficient. (Minimum : %d)\n"),_nb_thread*_nb_special_register_logic+1));
     if (not is_multiple (_nb_bank, _nb_pop))
       test.error(_("Number of pop must be a multiple of number of bank.\n"));
     if (not is_power2 (_nb_bank))
       test.error(_("Number of bank must be a power of 2.\n"));
+    if (_nb_general_register < _nb_bank)
+      test.error(_("The number of physical general register must be >= nb_bank.\n"));
+    if (_nb_special_register < _nb_bank)
+      test.error(_("The number of physical special register must be >= nb_bank.\n"));
 
     if ((_priority != PRIORITY_STATIC) and
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Register_Address_Translation_unit_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/main.cpp	(revision 88)
@@ -60,5 +60,7 @@
 	 _nb_special_register ,
 	 _nb_inst_insert      ,
-	 _nb_inst_retire      );
+	 _nb_inst_retire      ,
+         true //is_toplevel
+         );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp	(revision 88)
@@ -24,4 +24,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+//   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Register_Address_Translation_unit * _Register_Address_Translation_unit = new Register_Address_Translation_unit 
     (name.c_str(),
@@ -30,5 +40,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
@@ -78,4 +88,6 @@
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD," in_RETIRE_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
   
   /********************************************************
@@ -131,4 +143,6 @@
   INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
 
   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
@@ -226,8 +240,14 @@
 	    }
 
+          uint32_t retire_max = _param->_nb_inst_retire;
 	  for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
 	    {
-	      Tcontrol_t val = (rand()%100)<percent_transaction_retire;
+              // in order ...........
+
+	      Tcontrol_t val = (i<retire_max) and ((rand()%100)<percent_transaction_retire);
 	      
+              if (not val)
+                retire_max = i;
+
 	      Tcontext_t front_end_id = rand() % _param->_nb_front_end;
 
@@ -259,4 +279,11 @@
 		}
 	    }
+
+	  for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
+	    {
+              TEST(Tcontrol_t,out_RETIRE_RESTORE_RD_PHY_OLD[i]->read(), 0);
+              TEST(Tcontrol_t,out_RETIRE_RESTORE_RE_PHY_OLD[i]->read(), 0);
+            }
+
 	  for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
 	    {
@@ -320,4 +347,6 @@
       SC_START(1);
 
+      // EVENT !!!!!!!!
+
       nb_request = 32;
       while (nb_request > 1)
@@ -347,7 +376,14 @@
 	    }
 
+          uint32_t retire_max = _param->_nb_inst_retire;
 	  for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
 	    {
-	      Tcontrol_t val = (rand()%100)<percent_transaction_retire;
+              // in order ...........
+
+	      Tcontrol_t val = (i<retire_max) and ((rand()%100)<percent_transaction_retire);
+	      
+              if (not val)
+                retire_max = i;
+
 	      in_RETIRE_VAL                [i]->write(val);
 	      in_RETIRE_FRONT_END_ID       [i]->write(retire_front_end_id [i]);
@@ -362,5 +398,5 @@
 	    }
 
-	  SC_START(1);
+	  SC_START(0);
 	  
 
@@ -380,10 +416,21 @@
 	  for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
 	    {
+              LABEL("RETIRE[%d]",i);
+
 	      Tcontext_t front_end_id = in_RETIRE_FRONT_END_ID [i]->read();
 	      Tcontext_t context_id   = in_RETIRE_CONTEXT_ID   [i]->read();
+
+              LABEL("  * front_end_id : %d",front_end_id);
+              LABEL("  * context_id   : %d",context_id  );
+
 	      if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
 		{
 		  if (in_RETIRE_WRITE_RD [i]->read() == 1)
 		    {
+//                       LABEL("  * transaction and write rd");
+//                       LABEL("    * rd_log       : %d",in_RETIRE_NUM_REG_RD_LOG[i]->read());
+//                       LABEL("    * rat_gpr_updt : %d",rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()]);
+                      TEST(Tcontrol_t,out_RETIRE_RESTORE_RD_PHY_OLD[i]->read(), (rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] == false));
+
 		      if (rat_gpr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] == false)
 			rat_gpr[front_end_id][context_id][in_RETIRE_NUM_REG_RD_LOG[i]->read()] = in_RETIRE_NUM_REG_RD_PHY_OLD[i]->read();
@@ -392,4 +439,6 @@
 		  if (in_RETIRE_WRITE_RE [i]->read() == 1)
 		    {
+                      TEST(Tcontrol_t,out_RETIRE_RESTORE_RE_PHY_OLD[i]->read(), (rat_spr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] == false));
+
 		      if (rat_spr_updt [front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] == false)
 			rat_spr[front_end_id][context_id][in_RETIRE_NUM_REG_RE_LOG[i]->read()] = in_RETIRE_NUM_REG_RE_PHY_OLD[i]->read();
@@ -398,4 +447,7 @@
 		}
 	    }
+
+	  SC_START(1);
+
 	  for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
 	    {
@@ -412,6 +464,6 @@
 		  TEST(Tspecial_address_t,out_RENAME_NUM_REG_RE_PHY_OLD[i]->read(), rat_spr[front_end_id][context_id][in_RENAME_NUM_REG_RE_LOG[i]->read()]);
 		}
-
-	    }
+	    }
+
 	}
     }
@@ -472,4 +524,6 @@
   delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
   delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
+  delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
+  delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
 
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Parameters.h	(revision 88)
@@ -32,11 +32,11 @@
   public : uint32_t   _nb_inst_retire        ;    
 		      
-  public : uint32_t   _size_front_end_id     ;
-  public : uint32_t   _size_context_id       ;
-  public : uint32_t   _size_general_register ;
-  public : uint32_t   _size_special_register ;
-		      
-  public : uint32_t   _have_port_context_id  ;
-  public : uint32_t   _have_port_front_end_id;
+//public : uint32_t   _size_front_end_id     ;
+//public : uint32_t   _size_context_id       ;
+//public : uint32_t   _size_general_register ;
+//public : uint32_t   _size_special_register ;
+//      	      
+//public : uint32_t   _have_port_context_id  ;
+//public : uint32_t   _have_port_front_end_id;
 
     //-----[ methods ]-----------------------------------------------------------
@@ -46,8 +46,11 @@
 			uint32_t   nb_special_register,
 			uint32_t   nb_inst_insert     ,
-			uint32_t   nb_inst_retire     
+			uint32_t   nb_inst_retire     ,
+                        bool       is_toplevel=false
 			);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h	(revision 88)
@@ -103,8 +103,14 @@
   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
+  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
+  public    : SC_OUT(Tcontrol_t        )   ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
 
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+  private   : Tgeneral_address_t          *** rat_gpr;                      //[nb_front_end][nb_context][nb_general_register_logic]
+  private   : bool                        *** rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
+  private   : Tspecial_address_t          *** rat_spr;                      //[nb_front_end][nb_context][nb_special_register_logic]
+  private   : bool                        *** rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
 
     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -113,8 +119,6 @@
   private   : Tcontrol_t                    * internal_RETIRE_ACK;          //[nb_inst_retire]
 
-  private   : Tgeneral_address_t          *** rat_gpr;                      //[nb_front_end][nb_context][nb_general_register_logic]
-  private   : bool                        *** rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
-  private   : Tspecial_address_t          *** rat_spr;                      //[nb_front_end][nb_context][nb_special_register_logic]
-  private   : bool                        *** rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
+  private   : bool                        *** internal_rat_gpr_update_table;         //[nb_front_end][nb_context][nb_general_register_logic]
+  private   : bool                        *** internal_rat_spr_update_table;         //[nb_front_end][nb_context][nb_special_register_logic]
 #endif
 
@@ -150,5 +154,6 @@
 #ifdef SYSTEMC				       
   public  : void        transition                (void);
-  public  : void        genMoore                  (void);
+  public  : void        genMealy_rename           (void);
+  public  : void        genMealy_retire           (void);
 #endif					       
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Parameters.cpp	(revision 88)
@@ -25,5 +25,6 @@
 			  uint32_t   nb_special_register,
 			  uint32_t   nb_inst_insert     ,
-			  uint32_t   nb_inst_retire     )
+			  uint32_t   nb_inst_retire     ,
+                          bool       is_toplevel)
   {
     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
@@ -36,13 +37,18 @@
     _nb_inst_retire         = nb_inst_retire     ;
 
-    _size_front_end_id      = log2(nb_front_end       );
-    _size_context_id        = log2(max<uint32_t>(nb_context, nb_front_end));
-    _size_general_register  = log2(nb_general_register);
-    _size_special_register  = log2(nb_special_register);
+    test();
+
+    if (is_toplevel)
+      {
+        _size_front_end_id      = log2(nb_front_end       );
+        _size_context_id        = log2(max<uint32_t>(nb_context, nb_front_end));
+        _size_general_register  = log2(nb_general_register);
+        _size_special_register  = log2(nb_special_register);
     
-    _have_port_front_end_id = _size_front_end_id>0;
-    _have_port_context_id   = _size_context_id  >0;
-
-    test();
+        _have_port_front_end_id = _size_front_end_id>0;
+        _have_port_context_id   = _size_context_id  >0;
+        
+        copy();
+      }
 
     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
@@ -60,5 +66,13 @@
 #undef  FUNCTION
 #define FUNCTION "Register_Address_Translation_unit::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void) 
+  {
+    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Register_Address_Translation_unit::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit.cpp	(revision 88)
@@ -39,4 +39,10 @@
     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
 
+#if DEBUG_Register_Address_Translation_unit == true
+    log_printf(INFO,Register_Address_Translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Allocation");
 
@@ -48,5 +54,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Allocation of statistics");
@@ -57,5 +63,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -67,5 +73,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	// Constant : accepted already transaction
@@ -95,9 +101,46 @@
 # endif    
 
-	log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMoore");
+	log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_rename");
 
-	SC_METHOD (genMoore);
+	SC_METHOD (genMealy_rename);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
+        for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+          {
+            if (_param->_have_port_front_end_id) 
+            sensitive << (*(in_RENAME_FRONT_END_ID   [i]));
+            if (_param->_have_port_context_id  )
+            sensitive << (*(in_RENAME_CONTEXT_ID     [i]));
+            
+            sensitive << (*(in_RENAME_NUM_REG_RA_LOG [i]))
+                      << (*(in_RENAME_NUM_REG_RB_LOG [i]))
+                      << (*(in_RENAME_NUM_REG_RC_LOG [i]))
+                      << (*(in_RENAME_NUM_REG_RD_LOG [i]))
+                      << (*(in_RENAME_NUM_REG_RE_LOG [i]));
+      }
+
+
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+
+	log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Method - genMealy_retire");
+
+	SC_METHOD (genMealy_retire);
+	dont_initialize ();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
+        for (uint32_t i=0; i<_param->_nb_inst_retire; ++i)
+          {
+            if (param->_have_port_front_end_id)
+            sensitive << (*(in_RETIRE_FRONT_END_ID   [i]));
+            if (param->_have_port_context_id)
+            sensitive << (*(in_RETIRE_CONTEXT_ID     [i]));
+            
+            sensitive << (*(in_RETIRE_EVENT_STATE    [i]))
+                      << (*(in_RETIRE_WRITE_RD       [i]))
+                      << (*(in_RETIRE_WRITE_RE       [i]))
+                      << (*(in_RETIRE_NUM_REG_RD_LOG [i]))
+                      << (*(in_RETIRE_NUM_REG_RE_LOG [i]));
+          }
 	
 # ifdef SYSTEMCASS_SPECIFIC
@@ -117,5 +160,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Register_Address_Translation_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp	(revision 88)
@@ -107,34 +107,47 @@
       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
       ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
+      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1);
     }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
     internal_RENAME_ACK = new Tcontrol_t [_param->_nb_inst_insert];
     internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert];
     internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire];
 
-    rat_gpr              = new Tgeneral_address_t ** [_param->_nb_front_end];
-    rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
-    rat_spr              = new Tspecial_address_t ** [_param->_nb_front_end];
-    rat_spr_update_table = new bool               ** [_param->_nb_front_end];
+    rat_gpr                       = new Tgeneral_address_t ** [_param->_nb_front_end];
+    rat_spr                       = new Tspecial_address_t ** [_param->_nb_front_end];
+    rat_gpr_update_table          = new bool               ** [_param->_nb_front_end];
+    rat_spr_update_table          = new bool               ** [_param->_nb_front_end];
+    internal_rat_gpr_update_table = new bool               ** [_param->_nb_front_end];
+    internal_rat_spr_update_table = new bool               ** [_param->_nb_front_end];
 
     for (uint32_t i=0; i<_param->_nb_front_end; i++)
       {
-	rat_gpr              [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
-	rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
-	rat_spr              [i] = new Tspecial_address_t * [_param->_nb_context[i]];
-	rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
+	rat_gpr                       [i] = new Tgeneral_address_t * [_param->_nb_context[i]];
+	rat_spr                       [i] = new Tspecial_address_t * [_param->_nb_context[i]];
+	rat_gpr_update_table          [i] = new bool               * [_param->_nb_context[i]];
+	rat_spr_update_table          [i] = new bool               * [_param->_nb_context[i]];
+	internal_rat_gpr_update_table [i] = new bool               * [_param->_nb_context[i]];
+	internal_rat_spr_update_table [i] = new bool               * [_param->_nb_context[i]];
 
 	for (uint32_t j=0; j<_param->_nb_context[i]; j++)
 	  {
-	    rat_gpr              [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
-	    rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
-	    rat_spr              [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
-	    rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
+	    rat_gpr                       [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic];
+	    rat_spr                       [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic];
+	    rat_gpr_update_table          [i][j] = new bool               [_param->_nb_general_register_logic];
+	    rat_spr_update_table          [i][j] = new bool               [_param->_nb_special_register_logic];
+	    internal_rat_gpr_update_table [i][j] = new bool               [_param->_nb_general_register_logic];
+	    internal_rat_spr_update_table [i][j] = new bool               [_param->_nb_special_register_logic];
 	  }
       }
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp	(revision 88)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete     in_CLOCK ;
@@ -72,14 +72,20 @@
   	delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
   	delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
+  	delete [] out_RETIRE_RESTORE_RD_PHY_OLD;
+  	delete [] out_RETIRE_RESTORE_RE_PHY_OLD;
+
+        delete [] internal_RENAME_ACK;
+        delete [] internal_INSERT_ACK;
+        delete [] internal_RETIRE_ACK;
+        
+        delete [] rat_gpr             ;
+        delete [] rat_spr             ;
+        delete [] rat_gpr_update_table;
+        delete [] rat_spr_update_table;
+        delete [] internal_rat_gpr_update_table;
+        delete [] internal_rat_spr_update_table;
       }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    delete [] internal_RENAME_ACK;
-    delete [] internal_INSERT_ACK;
-    delete [] internal_RETIRE_ACK;
-
-    delete [] rat_gpr             ;
-    delete [] rat_gpr_update_table;
-    delete [] rat_spr             ;
-    delete [] rat_spr_update_table;
     delete    _component;
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_rename.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_rename.cpp	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_rename.cpp	(revision 88)
@@ -0,0 +1,52 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace register_address_translation_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_Address_Translation_unit::genMealy_rename"
+  void Register_Address_Translation_unit::genMealy_rename (void)
+  {
+    log_begin(Register_Address_Translation_unit,FUNCTION);
+    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
+
+    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+      {
+	Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_FRONT_END_ID [i]):0;
+	Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_CONTEXT_ID   [i]):0;
+
+	PORT_WRITE(out_RENAME_NUM_REG_RA_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RA_LOG [i])]);
+	PORT_WRITE(out_RENAME_NUM_REG_RB_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RB_LOG [i])]);
+	PORT_WRITE(out_RENAME_NUM_REG_RC_PHY     [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RC_LOG [i])]);
+	PORT_WRITE(out_RENAME_NUM_REG_RD_PHY_OLD [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RD_LOG [i])]);
+	PORT_WRITE(out_RENAME_NUM_REG_RE_PHY_OLD [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RE_LOG [i])]);
+      }
+
+    log_end(Register_Address_Translation_unit,FUNCTION);
+  };
+
+}; // end namespace register_address_translation_unit
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp	(revision 88)
@@ -0,0 +1,110 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace register_address_translation_unit {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_Address_Translation_unit::genMealy_retire"
+  void Register_Address_Translation_unit::genMealy_retire (void)
+  {
+    log_begin(Register_Address_Translation_unit,FUNCTION);
+    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
+
+    // Init internal update table
+    for (uint32_t i=0; i<_param->_nb_front_end; i++)
+      for (uint32_t j=0; j<_param->_nb_context[i]; j++)
+        {
+          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
+            internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k];
+          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
+            internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k];
+        }
+
+
+    // RETIRE is in order -> also don't need test if an instruction is valid
+    for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
+      {
+        log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * inst_retire [%d]",i);
+
+        // init -> need't restore old value
+        Tcontrol_t     retire_restore_rd_phy_old = false;
+        Tcontrol_t     retire_restore_re_phy_old = false;
+        Tevent_state_t event_state               = PORT_READ(in_RETIRE_EVENT_STATE [i]);
+
+        // Test if event -> need restore ?
+        if (event_state != EVENT_STATE_NO_EVENT)
+          {
+            Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0;
+            Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RETIRE_CONTEXT_ID   [i]):0;
+
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * Have event");
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id         : %d",front_end_id);
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id           : %d",context_id  );
+                        
+            // Test if event have just occure -> reset update_table
+            if (event_state == EVENT_STATE_EVENT)
+              {
+                // Reset update_table
+                for (uint32_t j=0; j<_param->_nb_general_register_logic; j++)
+                  internal_rat_gpr_update_table[front_end_id][context_id][j] = 0;
+                for (uint32_t j=0; j<_param->_nb_special_register_logic; j++)
+                  internal_rat_spr_update_table[front_end_id][context_id][j] = 0;
+              }
+            
+            // Test and update update table
+            if (PORT_READ(in_RETIRE_WRITE_RD [i]))
+              {
+                Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
+                retire_restore_rd_phy_old = (internal_rat_gpr_update_table[front_end_id][context_id][rd_log] == 0);
+
+//                 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * write_rd");
+//                 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * rd_log             : %d",rd_log);
+//                 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * rat_gpr_update     : %d",internal_rat_gpr_update_table[front_end_id][context_id][rd_log]);
+
+                internal_rat_gpr_update_table[front_end_id][context_id][rd_log] = 1;
+              }
+            if (PORT_READ(in_RETIRE_WRITE_RE [i]))
+              {
+//                 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * write_re");
+
+                Tgeneral_address_t re_log = PORT_READ(in_RETIRE_NUM_REG_RE_LOG [i]);
+                retire_restore_re_phy_old = (internal_rat_spr_update_table[front_end_id][context_id][re_log] == 0);
+                internal_rat_spr_update_table[front_end_id][context_id][re_log] = 1;
+              }
+
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_rd_phy_old   : %d",retire_restore_rd_phy_old);
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * restore_re_phy_old   : %d",retire_restore_re_phy_old);
+          }
+              
+        PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old);
+        PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old);
+      }
+
+    log_end(Register_Address_Translation_unit,FUNCTION);
+  };
+
+}; // end namespace register_address_translation_unit
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMoore.cpp	(revision 82)
+++ 	(revision )
@@ -1,51 +1,0 @@
-#ifdef SYSTEMC
-/*
- * $Id$
- *
- * [ Description ]
- * 
- */
-
-#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h"
-
-namespace morpheo                    {
-namespace behavioural {
-namespace core {
-namespace multi_ooo_engine {
-namespace ooo_engine {
-namespace rename_unit {
-namespace register_translation_unit {
-namespace register_address_translation_unit {
-
-
-#undef  FUNCTION
-#define FUNCTION "Register_Address_Translation_unit::genMoore"
-  void Register_Address_Translation_unit::genMoore (void)
-  {
-    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
-
-    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
-      {
-	Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_FRONT_END_ID [i]):0;
-	Tcontext_t context_id   = (_param->_have_port_context_id  )?PORT_READ(in_RENAME_CONTEXT_ID   [i]):0;
-
-	PORT_WRITE(out_RENAME_NUM_REG_RA_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RA_LOG [i])]);
-	PORT_WRITE(out_RENAME_NUM_REG_RB_PHY     [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RB_LOG [i])]);
-	PORT_WRITE(out_RENAME_NUM_REG_RC_PHY     [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RC_LOG [i])]);
-	PORT_WRITE(out_RENAME_NUM_REG_RD_PHY_OLD [i], rat_gpr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RD_LOG [i])]);
-	PORT_WRITE(out_RENAME_NUM_REG_RE_PHY_OLD [i], rat_spr[front_end_id][context_id][PORT_READ(in_RENAME_NUM_REG_RE_LOG [i])]);
-      }
-
-    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
-  };
-
-}; // end namespace register_address_translation_unit
-}; // end namespace register_translation_unit
-}; // end namespace rename_unit
-}; // end namespace ooo_engine
-}; // end namespace multi_ooo_engine
-}; // end namespace core
-
-}; // end namespace behavioural
-}; // end namespace morpheo              
-#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Register_Address_Translation_unit::transition (void)
   {
-    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"Begin");
+    log_begin(Register_Address_Translation_unit,FUNCTION);
+    log_function(Register_Address_Translation_unit,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -90,15 +91,15 @@
 		    }
 
- 
-		  // Test if write and have not a previous update
+ 		  // Test if write and have not a previous update
 		  if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1)
 		    {
 		      Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]);
 		      
-		      log_printf(NONE,Register_Address_Translation_unit,FUNCTION,"retire[%d]",i);
-		      log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * front_end_id : %d",front_end_id);
-		      log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * context_id   : %d",context_id  );
-		      log_printf(NONE,Register_Address_Translation_unit,FUNCTION," * rd_log       : %d",rd_log      );
+		      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * retire[%d]",i);
+		      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end_id : %d",front_end_id);
+		      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * context_id   : %d",context_id  );
+		      log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * rd_log       : %d",rd_log      );
 		      
+// 		      if (RETIRE_RESTORE_RD_PHY_OLD [i])
 		      if (rat_gpr_update_table[front_end_id][context_id][rd_log] == 0)
 			{
@@ -112,4 +113,5 @@
 		      Tspecial_address_t re_log = PORT_READ(in_RETIRE_NUM_REG_RE_LOG [i]);
 
+// 		      if (RETIRE_RESTORE_RE_PHY_OLD [i])
 		      if (rat_spr_update_table[front_end_id][context_id][re_log] == 0)
 			{
@@ -122,9 +124,24 @@
       }
 
+#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Register_Address_Translation_unit == true)
+    log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"  * Dump RAT (Register_Address_Translation_unit)");
+    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
+      for (uint32_t j=0; j<_param->_nb_context[i]; ++j)
+        {
+          log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"    * front_end[%d].context[%d]",i,j);
+
+          for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k)
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * GPR[%.2d] - %.5d %.1d",k,rat_gpr[i][j][k],rat_gpr_update_table[i][j][k]);
+
+          for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k)
+            log_printf(TRACE,Register_Address_Translation_unit,FUNCTION,"      * SPR[%.2d] - %.5d %.1d",k,rat_spr[i][j][k],rat_spr_update_table[i][j][k]);
+        }
+#endif
+
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
     end_cycle ();
 #endif
 
-    log_printf(FUNC,Register_Address_Translation_unit,FUNCTION,"End");
+    log_end(Register_Address_Translation_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Register_translation_unit_Glue_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/configuration.cfg	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/configuration.cfg	(revision 88)
@@ -2,2 +2,4 @@
 1	4	*2	# nb_inst_insert
 1	4	*2	# nb_inst_retire
+5  	5  	*2	# size_general_register
+2 	2 	*2	# size_special_register
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/main.cpp	(revision 88)
@@ -8,5 +8,5 @@
 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/include/test.h"
 
-#define NB_PARAMS 2
+#define NB_PARAMS 4
 
 void usage (int argc, char * argv[])
@@ -14,6 +14,8 @@
   err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
   err (_("list_params is :\n"));
-  err (_(" * nb_inst_insert (uint32_t)\n"));
-  err (_(" * nb_inst_retire (uint32_t)\n"));
+  err (_(" * nb_inst_insert        (uint32_t)\n"));
+  err (_(" * nb_inst_retire        (uint32_t)\n"));
+  err (_(" * size_general_register (uint32_t)\n"));
+  err (_(" * size_special_register (uint32_t)\n"));
 
   exit (1);
@@ -32,6 +34,9 @@
 
   string name = argv[x++];
-  uint32_t _nb_inst_insert = atoi(argv[x++]);
-  uint32_t _nb_inst_retire = atoi(argv[x++]);
+  uint32_t _nb_inst_insert        = fromString<uint32_t>(argv[x++]);
+  uint32_t _nb_inst_retire        = fromString<uint32_t>(argv[x++]);
+  uint32_t _size_general_register = fromString<uint32_t>(argv[x++]);
+  uint32_t _size_special_register = fromString<uint32_t>(argv[x++]);
+
 
   int _return = EXIT_SUCCESS;
@@ -40,5 +45,9 @@
       morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
 	(_nb_inst_insert,
-	 _nb_inst_retire);
+	 _nb_inst_retire,
+	 _size_general_register,
+	 _size_special_register,
+         true //is_toplevel
+	 );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/SelfTest/src/test.cpp	(revision 88)
@@ -23,4 +23,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+//   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Register_translation_unit_Glue * _Register_translation_unit_Glue = new Register_translation_unit_Glue 
     (name.c_str(),
@@ -29,5 +39,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
@@ -51,4 +61,53 @@
   ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_VAL ,"out_INSERT_STAT_LIST_VAL ",Tcontrol_t,_param->_nb_inst_insert);
   ALLOC1_SC_SIGNAL( in_INSERT_STAT_LIST_ACK ," in_INSERT_STAT_LIST_ACK ",Tcontrol_t,_param->_nb_inst_insert);
+
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ," in_INSERT_DEPENDENCY_CHECKING_READ_RA           ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ," in_INSERT_DEPENDENCY_CHECKING_READ_RB           ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ," in_INSERT_DEPENDENCY_CHECKING_READ_RC           ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ," in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ," in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW," in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_insert);
+
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,"out_INSERT_STAT_LIST_READ_RA                     ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,"out_INSERT_STAT_LIST_READ_RB                     ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,"out_INSERT_STAT_LIST_READ_RC                     ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,"out_INSERT_STAT_LIST_WRITE_RD                    ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,"out_INSERT_STAT_LIST_WRITE_RE                    ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ",Tspecial_address_t,_param->_nb_inst_insert);
+
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,"out_INSERT_RAT_WRITE_RD                          ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,"out_INSERT_RAT_NUM_REG_RD_LOG                    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,"out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,"out_INSERT_RAT_WRITE_RE                          ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,"out_INSERT_RAT_NUM_REG_RE_LOG                    ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,"out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ",Tspecial_address_t,_param->_nb_inst_insert);
+
+  ALLOC1_SC_SIGNAL(out_INSERT_READ_RA                               ,"out_INSERT_READ_RA                               ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,"out_INSERT_NUM_REG_RA_PHY                        ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_READ_RB                               ,"out_INSERT_READ_RB                               ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,"out_INSERT_NUM_REG_RB_PHY                        ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_READ_RC                               ,"out_INSERT_READ_RC                               ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,"out_INSERT_NUM_REG_RC_PHY                        ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_WRITE_RD                              ,"out_INSERT_WRITE_RD                              ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,"out_INSERT_NUM_REG_RD_LOG                        ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,"out_INSERT_NUM_REG_RD_PHY_OLD                    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,"out_INSERT_NUM_REG_RD_PHY_NEW                    ",Tgeneral_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_WRITE_RE                              ,"out_INSERT_WRITE_RE                              ",Tcontrol_t        ,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,"out_INSERT_NUM_REG_RE_LOG                        ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"out_INSERT_NUM_REG_RE_PHY_OLD                    ",Tspecial_address_t,_param->_nb_inst_insert);
+  ALLOC1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"out_INSERT_NUM_REG_RE_PHY_NEW                    ",Tspecial_address_t,_param->_nb_inst_insert);
+
   ALLOC1_SC_SIGNAL( in_RETIRE_VAL           ," in_RETIRE_VAL           ",Tcontrol_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL(out_RETIRE_ACK           ,"out_RETIRE_ACK           ",Tcontrol_t,_param->_nb_inst_retire);
@@ -78,10 +137,59 @@
   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert);
   INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_VAL           ,_param->_nb_inst_retire);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_ACK           ,_param->_nb_inst_retire);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_RAT_VAL       ,_param->_nb_inst_retire);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_RAT_ACK       ,_param->_nb_inst_retire);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_STAT_LIST_VAL ,_param->_nb_inst_retire);
-  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_STAT_LIST_ACK ,_param->_nb_inst_retire);
+  
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
+
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
+
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert);
+
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RA                               ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RB                               ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_READ_RC                               ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert);
+  
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_VAL          ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_ACK          ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue,out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Register_translation_unit_Glue, in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire);
 
   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
@@ -187,21 +295,70 @@
   delete in_NRESET;
 
-  delete []  in_INSERT_RENAME_VAL    ;
-  delete [] out_INSERT_RENAME_ACK    ;
-  delete [] out_INSERT_INSERT_VAL    ;
-  delete []  in_INSERT_INSERT_ACK    ;
-  delete [] out_INSERT_RAT_INSERT_VAL;
-  delete []  in_INSERT_RAT_RENAME_ACK;
-  delete []  in_INSERT_RAT_INSERT_ACK;
-  delete [] out_INSERT_FREE_LIST_VAL ;
-  delete []  in_INSERT_FREE_LIST_ACK ;
-  delete [] out_INSERT_STAT_LIST_VAL ;
-  delete []  in_INSERT_STAT_LIST_ACK ;
-  delete []  in_RETIRE_VAL           ;
-  delete [] out_RETIRE_ACK           ;
-  delete [] out_RETIRE_RAT_VAL       ;
-  delete []  in_RETIRE_RAT_ACK       ;
-  delete [] out_RETIRE_STAT_LIST_VAL ;
-  delete []  in_RETIRE_STAT_LIST_ACK ;
+  DELETE1_SC_SIGNAL( in_INSERT_RENAME_VAL    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RENAME_ACK    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_INSERT_VAL    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_INSERT_ACK    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_INSERT_VAL,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_RAT_RENAME_ACK,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_RAT_INSERT_ACK,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_FREE_LIST_VAL ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_FREE_LIST_ACK ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert);
+  
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert);
+
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert);
+
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert);
+
+  DELETE1_SC_SIGNAL(out_INSERT_READ_RA                               ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_READ_RB                               ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_READ_RC                               ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert);
+  DELETE1_SC_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert);
+  
+  DELETE1_SC_SIGNAL( in_RETIRE_VAL          ,_param->_nb_inst_retire);
+  DELETE1_SC_SIGNAL(out_RETIRE_ACK          ,_param->_nb_inst_retire);
+  DELETE1_SC_SIGNAL(out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire);
+  DELETE1_SC_SIGNAL( in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire);
+  DELETE1_SC_SIGNAL(out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire);
+  DELETE1_SC_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire);
 
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Parameters.h	(revision 88)
@@ -27,11 +27,19 @@
   public : uint32_t _nb_inst_insert;
   public : uint32_t _nb_inst_retire;
+//public : uint32_t _size_general_register;
+//public : uint32_t _size_special_register;
     
     //-----[ methods ]-----------------------------------------------------------
   public : Parameters  (uint32_t nb_inst_insert,
-			uint32_t nb_inst_retire);
+			uint32_t nb_inst_retire,
+			uint32_t size_general_register,
+			uint32_t size_special_register,
+                        bool     is_toplevel=false
+                        );
 
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h	(revision 88)
@@ -64,15 +64,63 @@
 
     // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RENAME_VAL    ;//[nb_inst_insert]
-  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RENAME_ACK    ;//[nb_inst_insert]
-  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_INSERT_VAL    ;//[nb_inst_insert]
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_INSERT_ACK    ;//[nb_inst_insert]
-  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RAT_INSERT_VAL;//[nb_inst_insert]
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_RENAME_ACK;//[nb_inst_insert]
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_INSERT_ACK;//[nb_inst_insert]
-  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_FREE_LIST_VAL ;//[nb_inst_insert]
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_FREE_LIST_ACK ;//[nb_inst_insert]
-  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_STAT_LIST_VAL ;//[nb_inst_insert]
-  public    : SC_IN (Tcontrol_t)           **  in_INSERT_STAT_LIST_ACK ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RENAME_VAL                            ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RENAME_ACK                            ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_INSERT_VAL                            ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_INSERT_ACK                            ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_RAT_INSERT_VAL                        ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_RENAME_ACK                        ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_RAT_INSERT_ACK                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_FREE_LIST_VAL                         ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_FREE_LIST_ACK                         ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t)           ** out_INSERT_STAT_LIST_VAL                         ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t)           **  in_INSERT_STAT_LIST_ACK                         ;//[nb_inst_insert]
+
+  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RA           ;//[nb_inst_insert]
+  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RB           ;//[nb_inst_insert]
+  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_READ_RC           ;//[nb_inst_insert]
+  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ;//[nb_inst_insert]
+  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ;//[nb_inst_insert]
+  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD;//[nb_inst_insert]
+  public    : SC_IN (Tgeneral_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW;//[nb_inst_insert]
+  public    : SC_IN (Tcontrol_t        )   **  in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ;//[nb_inst_insert]
+  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ;//[nb_inst_insert]
+  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD;//[nb_inst_insert]
+  public    : SC_IN (Tspecial_address_t)   **  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW;//[nb_inst_insert]
+
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RA                     ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RB                     ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_READ_RC                     ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RD                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_STAT_LIST_WRITE_RE                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ;//[nb_inst_insert]
+
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_RAT_WRITE_RD                          ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_RAT_NUM_REG_RD_LOG                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_RAT_WRITE_RE                          ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_RAT_NUM_REG_RE_LOG                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ;//[nb_inst_insert]
+
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RA                               ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RA_PHY                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RB                               ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RB_PHY                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_READ_RC                               ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RC_PHY                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RD                              ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_LOG                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_OLD                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tgeneral_address_t)   ** out_INSERT_NUM_REG_RD_PHY_NEW                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tcontrol_t        )   ** out_INSERT_WRITE_RE                              ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_LOG                        ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_OLD                    ;//[nb_inst_insert]
+  public    : SC_OUT(Tspecial_address_t)   ** out_INSERT_NUM_REG_RE_PHY_NEW                    ;//[nb_inst_insert]
 
     // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -124,4 +172,5 @@
   public  : void        transition                (void);
 # endif
+  public  : void        genMealy_insert_valack    (void);
   public  : void        genMealy_insert           (void);
   public  : void        genMealy_retire           (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters.cpp	(revision 88)
@@ -21,12 +21,24 @@
 #define FUNCTION "Register_translation_unit_Glue::Parameters"
   Parameters::Parameters (uint32_t nb_inst_insert,
-			  uint32_t nb_inst_retire)
+			  uint32_t nb_inst_retire,
+			  uint32_t size_general_register,
+			  uint32_t size_special_register,
+                          bool     is_toplevel)
   {
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
 
-    _nb_inst_insert = nb_inst_insert;
-    _nb_inst_retire = nb_inst_retire;
+    _nb_inst_insert        = nb_inst_insert;
+    _nb_inst_retire        = nb_inst_retire;
 
     test();
+
+    if (is_toplevel)
+      {
+        _size_general_register = size_general_register;
+        _size_special_register = size_special_register;
+
+        copy ();
+      }
+
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
   };
@@ -43,5 +55,13 @@
 #undef  FUNCTION
 #define FUNCTION "Register_translation_unit_Glue::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void) 
+  {
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
+    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Register_translation_unit_Glue::copy"
+  void Parameters::copy (void) 
   {
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters_print.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Parameters_print.cpp	(revision 88)
@@ -28,6 +28,8 @@
 
     xml.balise_open("register_translation_unit_glue");
-    xml.singleton_begin("nb_inst_insert"); xml.attribut("value",toString(_nb_inst_insert)); xml.singleton_end();
-    xml.singleton_begin("nb_inst_retire"); xml.attribut("value",toString(_nb_inst_retire)); xml.singleton_end();
+    xml.singleton_begin("nb_inst_insert       "); xml.attribut("value",toString(_nb_inst_insert       )); xml.singleton_end();
+    xml.singleton_begin("nb_inst_retire       "); xml.attribut("value",toString(_nb_inst_retire       )); xml.singleton_end();
+    xml.singleton_begin("size_general_register"); xml.attribut("value",toString(_size_general_register)); xml.singleton_end();
+    xml.singleton_begin("size_special_register"); xml.attribut("value",toString(_size_special_register)); xml.singleton_end();
     xml.balise_close();
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue.cpp	(revision 88)
@@ -39,4 +39,10 @@
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
 
+#if DEBUG_Register_translation_unit_Glue == true
+    log_printf(INFO,Register_translation_unit_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation");
 
@@ -48,5 +54,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Allocation of statistics");
@@ -57,5 +63,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -67,5 +73,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - transition");
@@ -83,5 +89,5 @@
 	SC_METHOD (genMealy_retire);
 	dont_initialize ();
-// 	sensitive << (*(in_CLOCK)).neg();
+// 	sensitive << (*(in_CLOCK)).neg(); // don't need internal register
 	for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
 	  sensitive << (*(in_RETIRE_VAL           [i]))
@@ -104,9 +110,9 @@
 # endif    
 
-	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert");
-
-	SC_METHOD (genMealy_insert);
-	dont_initialize ();
-// 	sensitive << (*(in_CLOCK)).neg();
+	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert_valack");
+
+	SC_METHOD (genMealy_insert_valack);
+	dont_initialize ();
+// 	sensitive << (*(in_CLOCK)).neg(); // don't need internal register
 	for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
 	  sensitive << (*(in_INSERT_RENAME_VAL     [i]))
@@ -152,4 +158,31 @@
 	  }
 # endif    
+
+	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Method - genMealy_insert");
+
+	SC_METHOD (genMealy_insert);
+	dont_initialize ();
+// 	sensitive << (*(in_CLOCK)).neg(); // don't need internal register
+	for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+	  sensitive << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RA            [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RB            [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_READ_RC            [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD [i]))
+		    << (*(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW [i]));
+	
+# ifdef SYSTEMCASS_SPECIFIC
+	// List dependency information
+# endif    
+
+
 	
 #endif
@@ -165,5 +198,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Register_translation_unit_Glue,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp	(revision 88)
@@ -72,4 +72,52 @@
       ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_VAL ,"stat_list_val" ,Tcontrol_t,1);
       ALLOC1_SIGNAL_IN ( in_INSERT_STAT_LIST_ACK ,"stat_list_ack" ,Tcontrol_t,1);
+
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,"DEPENDENCY_CHECKING_READ_RA"           ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RA_PHY"    ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,"DEPENDENCY_CHECKING_READ_RB"           ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RB_PHY"    ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,"DEPENDENCY_CHECKING_READ_RC"           ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,"DEPENDENCY_CHECKING_NUM_REG_RC_PHY"    ,Tspecial_address_t,_param->_size_special_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,"DEPENDENCY_CHECKING_WRITE_RD"          ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,"DEPENDENCY_CHECKING_NUM_REG_RD_LOG"    ,Tgeneral_address_t,_param->_size_general_register_logic);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,"DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,"DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,"DEPENDENCY_CHECKING_WRITE_RE"          ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,"DEPENDENCY_CHECKING_NUM_REG_RE_LOG"    ,Tspecial_address_t,_param->_size_special_register_logic);
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,"DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_size_special_register      );
+      ALLOC1_SIGNAL_IN ( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,"DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_size_special_register      );
+
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RA                     ,"STAT_LIST_READ_RA"                     ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,"STAT_LIST_NUM_REG_RA_PHY"              ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RB                     ,"STAT_LIST_READ_RB"                     ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,"STAT_LIST_NUM_REG_RB_PHY"              ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_READ_RC                     ,"STAT_LIST_READ_RC"                     ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,"STAT_LIST_NUM_REG_RC_PHY"              ,Tspecial_address_t,_param->_size_special_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RD                    ,"STAT_LIST_WRITE_RD"                    ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,"STAT_LIST_NUM_REG_RD_PHY_NEW"          ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_WRITE_RE                    ,"STAT_LIST_WRITE_RE"                    ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,"STAT_LIST_NUM_REG_RE_PHY_NEW"          ,Tspecial_address_t,_param->_size_special_register      );
+
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_WRITE_RD                          ,"RAT_WRITE_RD"                          ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RD_LOG                    ,"RAT_NUM_REG_RD_LOG"                    ,Tgeneral_address_t,_param->_size_general_register_logic);
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,"RAT_NUM_REG_RD_PHY_NEW"                ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_WRITE_RE                          ,"RAT_WRITE_RE"                          ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RE_LOG                    ,"RAT_NUM_REG_RE_LOG"                    ,Tspecial_address_t,_param->_size_special_register_logic);
+      ALLOC1_SIGNAL_OUT(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,"RAT_NUM_REG_RE_PHY_NEW"                ,Tspecial_address_t,_param->_size_special_register      );
+
+      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RA                               ,"READ_RA"                               ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RA_PHY                        ,"NUM_REG_RA_PHY"                        ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RB                               ,"READ_RB"                               ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RB_PHY                        ,"NUM_REG_RB_PHY"                        ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_READ_RC                               ,"READ_RC"                               ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RC_PHY                        ,"NUM_REG_RC_PHY"                        ,Tspecial_address_t,_param->_size_special_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RD                              ,"WRITE_RD"                              ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_LOG                        ,"NUM_REG_RD_LOG"                        ,Tgeneral_address_t,_param->_size_general_register_logic);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_OLD                    ,"NUM_REG_RD_PHY_OLD"                    ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RD_PHY_NEW                    ,"NUM_REG_RD_PHY_NEW"                    ,Tgeneral_address_t,_param->_size_general_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_WRITE_RE                              ,"WRITE_RE"                              ,Tcontrol_t        ,1);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_LOG                        ,"NUM_REG_RE_LOG"                        ,Tspecial_address_t,_param->_size_special_register_logic);
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD                    ,"NUM_REG_RE_PHY_OLD"                    ,Tspecial_address_t,_param->_size_special_register      );
+      ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW                    ,"NUM_REG_RE_PHY_NEW"                    ,Tspecial_address_t,_param->_size_special_register      );
     }
 
@@ -89,5 +137,6 @@
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_deallocation.cpp	(revision 88)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
+#include "Behavioural/include/Allocation.h"
 
 namespace morpheo                    {
@@ -24,27 +25,76 @@
     log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete     in_CLOCK ;
 	delete     in_NRESET;
 
-	delete []  in_INSERT_RENAME_VAL    ;
-	delete [] out_INSERT_RENAME_ACK    ;
-	delete [] out_INSERT_INSERT_VAL    ;
-	delete []  in_INSERT_INSERT_ACK    ;
-	delete [] out_INSERT_RAT_INSERT_VAL;
-	delete []  in_INSERT_RAT_RENAME_ACK;
-	delete []  in_INSERT_RAT_INSERT_ACK;
-	delete [] out_INSERT_FREE_LIST_VAL ;
-	delete []  in_INSERT_FREE_LIST_ACK ;
-	delete [] out_INSERT_STAT_LIST_VAL ;
-	delete []  in_INSERT_STAT_LIST_ACK ;
+	DELETE1_SIGNAL( in_INSERT_RENAME_VAL    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_RENAME_ACK    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_INSERT_VAL    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_INSERT_ACK    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_RAT_INSERT_VAL,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_RAT_RENAME_ACK,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_RAT_INSERT_ACK,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_FREE_LIST_VAL ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_FREE_LIST_ACK ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_VAL ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_STAT_LIST_ACK ,_param->_nb_inst_insert,1);
+	
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RA           ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RB           ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY    ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_READ_RC           ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY    ,_param->_nb_inst_insert,_param->_size_special_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RD          ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_WRITE_RE          ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register      );
+	DELETE1_SIGNAL( in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register      );
+	
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RA                     ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RA_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RB                     ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RB_PHY              ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_READ_RC                     ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RC_PHY              ,_param->_nb_inst_insert,_param->_size_special_register      );
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RD                    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_WRITE_RE                    ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW          ,_param->_nb_inst_insert,_param->_size_special_register      );
+	
+	DELETE1_SIGNAL(out_INSERT_RAT_WRITE_RD                          ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RD_LOG                    ,_param->_nb_inst_insert,_param->_size_general_register_logic);
+	DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RD_PHY_NEW                ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_RAT_WRITE_RE                          ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RE_LOG                    ,_param->_nb_inst_insert,_param->_size_special_register_logic);
+	DELETE1_SIGNAL(out_INSERT_RAT_NUM_REG_RE_PHY_NEW                ,_param->_nb_inst_insert,_param->_size_special_register      );
+	
+	DELETE1_SIGNAL(out_INSERT_READ_RA                               ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY                        ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_READ_RB                               ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY                        ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_READ_RC                               ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY                        ,_param->_nb_inst_insert,_param->_size_special_register      );
+	DELETE1_SIGNAL(out_INSERT_WRITE_RD                              ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG                        ,_param->_nb_inst_insert,_param->_size_general_register_logic);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD                    ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW                    ,_param->_nb_inst_insert,_param->_size_general_register      );
+	DELETE1_SIGNAL(out_INSERT_WRITE_RE                              ,_param->_nb_inst_insert,1);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG                        ,_param->_nb_inst_insert,_param->_size_special_register_logic);
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD                    ,_param->_nb_inst_insert,_param->_size_special_register      );
+	DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW                    ,_param->_nb_inst_insert,_param->_size_special_register      );
+	
+	DELETE1_SIGNAL( in_RETIRE_VAL          ,_param->_nb_inst_retire,1);
+	DELETE1_SIGNAL(out_RETIRE_ACK          ,_param->_nb_inst_retire,1);
+	DELETE1_SIGNAL(out_RETIRE_RAT_VAL      ,_param->_nb_inst_retire,1);
+	DELETE1_SIGNAL( in_RETIRE_RAT_ACK      ,_param->_nb_inst_retire,1);
+	DELETE1_SIGNAL(out_RETIRE_STAT_LIST_VAL,_param->_nb_inst_retire,1);
+	DELETE1_SIGNAL( in_RETIRE_STAT_LIST_ACK,_param->_nb_inst_retire,1);
 
-	delete []  in_RETIRE_VAL           ;
-	delete [] out_RETIRE_ACK           ;
-	delete [] out_RETIRE_RAT_VAL       ;
-	delete []  in_RETIRE_RAT_ACK       ;
-	delete [] out_RETIRE_STAT_LIST_VAL ;
-	delete []  in_RETIRE_STAT_LIST_ACK ;
       }
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert.cpp	(revision 88)
@@ -23,43 +23,59 @@
   void Register_translation_unit_Glue::genMealy_insert (void)
   {
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_translation_unit_Glue,FUNCTION);
+    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
       {
-	Tcontrol_t rename_val     = PORT_READ(in_INSERT_RENAME_VAL     [i]);
-	Tcontrol_t insert_ack     = PORT_READ(in_INSERT_INSERT_ACK     [i]);
-	Tcontrol_t rat_rename_ack = PORT_READ(in_INSERT_RAT_RENAME_ACK [i]);
-	Tcontrol_t rat_insert_ack = PORT_READ(in_INSERT_RAT_INSERT_ACK [i]);
-	Tcontrol_t free_list_ack  = PORT_READ(in_INSERT_FREE_LIST_ACK  [i]);
-	Tcontrol_t stat_list_ack  = PORT_READ(in_INSERT_STAT_LIST_ACK  [i]);
+	Tcontrol_t         READ_RA            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RA            [i]);
+	Tgeneral_address_t NUM_REG_RA_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     [i]);
+	Tcontrol_t         READ_RB            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RB            [i]);
+	Tgeneral_address_t NUM_REG_RB_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     [i]);
+	Tcontrol_t         READ_RC            = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_READ_RC            [i]);
+	Tspecial_address_t NUM_REG_RC_PHY     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     [i]);
+	Tcontrol_t         WRITE_RD           = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           [i]);
+	Tgeneral_address_t NUM_REG_RD_LOG     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     [i]);
+	Tgeneral_address_t NUM_REG_RD_PHY_OLD = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD [i]);
+	Tgeneral_address_t NUM_REG_RD_PHY_NEW = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW [i]);
+	Tcontrol_t         WRITE_RE           = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           [i]);
+	Tspecial_address_t NUM_REG_RE_LOG     = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     [i]);
+	Tspecial_address_t NUM_REG_RE_PHY_OLD = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD [i]);
+	Tspecial_address_t NUM_REG_RE_PHY_NEW = PORT_READ(in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW [i]);
 
-	PORT_WRITE(out_INSERT_RENAME_ACK     [i], (insert_ack     and
-						   rat_rename_ack and
-						   rat_insert_ack and
-						   free_list_ack  and
-						   stat_list_ack  ));
-	PORT_WRITE(out_INSERT_INSERT_VAL     [i], (rename_val     and
-						   rat_rename_ack and
-						   rat_insert_ack and
-						   free_list_ack  and
-						   stat_list_ack  ));
-	PORT_WRITE(out_INSERT_RAT_INSERT_VAL [i], (rename_val     and
-						   insert_ack     and
-						   rat_rename_ack and
-						   free_list_ack  and
-						   stat_list_ack  ));
-	PORT_WRITE(out_INSERT_FREE_LIST_VAL  [i], (rename_val     and
-						   insert_ack     and
-						   rat_rename_ack and
-						   rat_insert_ack and
-						   stat_list_ack  ));
-	PORT_WRITE(out_INSERT_STAT_LIST_VAL  [i], (rename_val     and
-						   insert_ack     and
-						   rat_rename_ack and
-						   rat_insert_ack and
-						   free_list_ack  ));
+	PORT_WRITE(out_INSERT_STAT_LIST_READ_RA            [i], READ_RA           );
+	PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RA_PHY     [i], NUM_REG_RA_PHY    );
+	PORT_WRITE(out_INSERT_STAT_LIST_READ_RB            [i], READ_RB           );
+	PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RB_PHY     [i], NUM_REG_RB_PHY    );
+	PORT_WRITE(out_INSERT_STAT_LIST_READ_RC            [i], READ_RC           );
+	PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RC_PHY     [i], NUM_REG_RC_PHY    );
+	PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RD           [i], WRITE_RD          );
+	PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW [i], NUM_REG_RD_PHY_NEW);
+	PORT_WRITE(out_INSERT_STAT_LIST_WRITE_RE           [i], WRITE_RE          );
+	PORT_WRITE(out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW [i], NUM_REG_RE_PHY_NEW);
+	
+	PORT_WRITE(out_INSERT_RAT_WRITE_RD                 [i], WRITE_RD          );
+	PORT_WRITE(out_INSERT_RAT_NUM_REG_RD_LOG           [i], NUM_REG_RD_LOG    );
+	PORT_WRITE(out_INSERT_RAT_NUM_REG_RD_PHY_NEW       [i], NUM_REG_RD_PHY_NEW);
+	PORT_WRITE(out_INSERT_RAT_WRITE_RE                 [i], WRITE_RE          );
+	PORT_WRITE(out_INSERT_RAT_NUM_REG_RE_LOG           [i], NUM_REG_RE_LOG    );
+	PORT_WRITE(out_INSERT_RAT_NUM_REG_RE_PHY_NEW       [i], NUM_REG_RE_PHY_NEW);
+	
+	PORT_WRITE(out_INSERT_READ_RA                      [i], READ_RA           );
+	PORT_WRITE(out_INSERT_NUM_REG_RA_PHY               [i], NUM_REG_RA_PHY    );
+	PORT_WRITE(out_INSERT_READ_RB                      [i], READ_RB           );
+	PORT_WRITE(out_INSERT_NUM_REG_RB_PHY               [i], NUM_REG_RB_PHY    );
+	PORT_WRITE(out_INSERT_READ_RC                      [i], READ_RC           );
+	PORT_WRITE(out_INSERT_NUM_REG_RC_PHY               [i], NUM_REG_RC_PHY    );
+	PORT_WRITE(out_INSERT_WRITE_RD                     [i], WRITE_RD          );
+	PORT_WRITE(out_INSERT_NUM_REG_RD_LOG               [i], NUM_REG_RD_LOG    );
+	PORT_WRITE(out_INSERT_NUM_REG_RD_PHY_OLD           [i], NUM_REG_RD_PHY_OLD);
+	PORT_WRITE(out_INSERT_NUM_REG_RD_PHY_NEW           [i], NUM_REG_RD_PHY_NEW);
+	PORT_WRITE(out_INSERT_WRITE_RE                     [i], WRITE_RE          );
+	PORT_WRITE(out_INSERT_NUM_REG_RE_LOG               [i], NUM_REG_RE_LOG    );
+	PORT_WRITE(out_INSERT_NUM_REG_RE_PHY_OLD           [i], NUM_REG_RE_PHY_OLD);
+	PORT_WRITE(out_INSERT_NUM_REG_RE_PHY_NEW           [i], NUM_REG_RE_PHY_NEW);
       }
 
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
+    log_end(Register_translation_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_insert_valack.cpp	(revision 88)
@@ -0,0 +1,98 @@
+#ifdef SYSTEMC
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/include/Register_translation_unit_Glue.h"
+
+namespace morpheo                    {
+namespace behavioural {
+namespace core {
+namespace multi_ooo_engine {
+namespace ooo_engine {
+namespace rename_unit {
+namespace register_translation_unit {
+namespace register_translation_unit_glue {
+
+
+#undef  FUNCTION
+#define FUNCTION "Register_translation_unit_Glue::genMealy_insert_valack"
+  void Register_translation_unit_Glue::genMealy_insert_valack (void)
+  {
+    log_begin(Register_translation_unit_Glue,FUNCTION);
+    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());
+    for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+      {
+	Tcontrol_t rename_val     = PORT_READ(in_INSERT_RENAME_VAL     [i]);
+	Tcontrol_t insert_ack     = PORT_READ(in_INSERT_INSERT_ACK     [i]);
+	Tcontrol_t rat_rename_ack = PORT_READ(in_INSERT_RAT_RENAME_ACK [i]);
+	Tcontrol_t rat_insert_ack = PORT_READ(in_INSERT_RAT_INSERT_ACK [i]);
+	Tcontrol_t free_list_ack  = PORT_READ(in_INSERT_FREE_LIST_ACK  [i]);
+	Tcontrol_t stat_list_ack  = PORT_READ(in_INSERT_STAT_LIST_ACK  [i]);
+
+	Tcontrol_t rename_ack     = (insert_ack     and
+                                     rat_rename_ack and
+                                     rat_insert_ack and
+                                     free_list_ack  and
+                                     stat_list_ack  );
+	Tcontrol_t insert_val     = (rename_val     and
+                                     rat_rename_ack and
+                                     rat_insert_ack and
+                                     free_list_ack  and
+                                     stat_list_ack  );
+	Tcontrol_t rat_insert_val = (rename_val     and
+                                     insert_ack     and
+                                     rat_rename_ack and
+                                     free_list_ack  and
+                                     stat_list_ack  );
+	Tcontrol_t free_list_val  = (rename_val     and
+                                     insert_ack     and
+                                     rat_rename_ack and
+                                     rat_insert_ack and
+                                     stat_list_ack  );
+	Tcontrol_t stat_list_val  = (rename_val     and
+                                     insert_ack     and
+                                     rat_rename_ack and
+                                     rat_insert_ack and
+                                     free_list_ack  );
+
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"  * inst_insert [%d]",i);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rename_val     (r): %d",rename_val    );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rename_ack     (w): %d",rename_ack    );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * insert_val     (w): %d",insert_val    );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * insert_ack     (r): %d",insert_ack    );
+//      log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_rename_val (w): %d",rat_rename_val);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_rename_val    -> rename_val");
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_rename_ack (r): %d",rat_rename_ack);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_insert_val (w): %d",rat_insert_val);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * rat_insert_ack (r): %d",rat_insert_ack);
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * free_list_val  (w): %d",free_list_val );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * free_list_ack  (r): %d",free_list_ack );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * stat_list_val  (w): %d",stat_list_val );
+        log_printf(TRACE,Register_translation_unit_Glue,FUNCTION,"    * stat_list_ack  (r): %d",stat_list_ack );
+
+
+	PORT_WRITE(out_INSERT_RENAME_ACK     [i], rename_ack    );
+	PORT_WRITE(out_INSERT_INSERT_VAL     [i], insert_val    );
+	PORT_WRITE(out_INSERT_RAT_INSERT_VAL [i], rat_insert_val);
+	PORT_WRITE(out_INSERT_FREE_LIST_VAL  [i], free_list_val );
+	PORT_WRITE(out_INSERT_STAT_LIST_VAL  [i], stat_list_val );
+
+      }
+
+    log_end(Register_translation_unit_Glue,FUNCTION);
+  };
+
+}; // end namespace register_translation_unit_glue
+}; // end namespace register_translation_unit
+}; // end namespace rename_unit
+}; // end namespace ooo_engine
+}; // end namespace multi_ooo_engine
+}; // end namespace core
+
+}; // end namespace behavioural
+}; // end namespace morpheo              
+#endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_genMealy_retire.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Register_translation_unit_Glue::genMealy_retire (void)
   {
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"Begin");
+    log_begin(Register_translation_unit_Glue,FUNCTION);
+    log_function(Register_translation_unit_Glue,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
@@ -36,5 +37,5 @@
       }
 
-    log_printf(FUNC,Register_translation_unit_Glue,FUNCTION,"End");
+    log_end(Register_translation_unit_Glue,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Register_translation_unit_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg	(revision 88)
@@ -0,0 +1,10 @@
+Register_translation_unit
+1	1	*2	#nb_front_end       
+1	1	*2	#nb_context          [nb_front_end]
+64	64	*2	#nb_general_register
+4	4	*2	#nb_special_register
+1	1	*4	#nb_inst_insert     
+1	1	*4	#nb_inst_retire     
+1	1	*4	#nb_reg_free        
+1	1	*2	#nb_bank            
+1	1	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg	(revision 88)
@@ -0,0 +1,10 @@
+Register_translation_unit
+1	1	*2	#nb_front_end       
+1	1	*2	#nb_context          [nb_front_end]
+64	64	*2	#nb_general_register
+16	16	*2	#nb_special_register
+1	4	*4	#nb_inst_insert     
+1	4	*4	#nb_inst_retire     
+1	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+1	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg	(revision 88)
@@ -0,0 +1,10 @@
+Register_translation_unit
+1	1	*2	#nb_front_end       
+1	1	*2	#nb_context          [nb_front_end]
+64	64	*2	#nb_general_register
+16	16	*2	#nb_special_register
+1	4	*4	#nb_inst_insert     
+1	4	*4	#nb_inst_retire     
+1	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+1	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg	(revision 88)
@@ -0,0 +1,13 @@
+Register_translation_unit
+4	4	*2	#nb_front_end       
+1	1	*2	#nb_context          [0] [nb_front_end]
+1	1	*2	#nb_context          [1] [nb_front_end]
+1	1	*2	#nb_context          [2] [nb_front_end]
+1	1	*2	#nb_context          [3] [nb_front_end]
+256	256	*2	#nb_general_register
+32	32	*2	#nb_special_register
+4	4	*4	#nb_inst_insert     
+4	4	*4	#nb_inst_retire     
+4	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+2	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg	(revision 88)
@@ -0,0 +1,10 @@
+Register_translation_unit
+1	1	*2	#nb_front_end       
+4	4	*2	#nb_context          [0] [nb_front_end]
+256	256	*2	#nb_general_register
+32	32	*2	#nb_special_register
+4	4	*4	#nb_inst_insert     
+4	4	*4	#nb_inst_retire     
+4	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+2	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg	(revision 88)
@@ -0,0 +1,11 @@
+Register_translation_unit
+2	2	*2	#nb_front_end       
+2	2	*2	#nb_context          [0] [nb_front_end]
+2	2	*2	#nb_context          [1] [nb_front_end]
+256	256	*2	#nb_general_register
+32	32	*2	#nb_special_register
+4	4	*4	#nb_inst_insert     
+4	4	*4	#nb_inst_retire     
+4	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+2	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg	(revision 88)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg	(revision 88)
@@ -0,0 +1,11 @@
+Register_translation_unit
+2	2	*2	#nb_front_end       
+1	1	*2	#nb_context          [0] [nb_front_end]
+3	3	*2	#nb_context          [1] [nb_front_end]
+256	256	*2	#nb_general_register
+32	32	*2	#nb_special_register
+4	4	*4	#nb_inst_insert     
+4	4	*4	#nb_inst_retire     
+4	4	*4	#nb_reg_free        
+8	8	*2	#nb_bank            
+2	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/configuration.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/configuration.cfg	(revision 82)
+++ 	(revision )
@@ -1,10 +1,0 @@
-Register_translation_unit
-1	1	*2	#nb_front_end       
-1	1	*2	#nb_context          [nb_front_end]
-64	64	*2	#nb_general_register
-16	16	*2	#nb_special_register
-1	4	*4	#nb_inst_insert     
-1	4	*4	#nb_inst_retire     
-1	4	*4	#nb_reg_free        
-8	8	*2	#nb_bank            
-1	2	*2	#size_read_counter  
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp	(revision 88)
@@ -65,5 +65,7 @@
 	 _nb_reg_free           ,
 	 _nb_bank               ,
-	 _size_read_counter     );
+	 _size_read_counter     ,
+         true //is_toplevel
+         );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/test.cpp	(revision 88)
@@ -23,4 +23,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Register_translation_unit * _Register_translation_unit = new Register_translation_unit 
     (name.c_str(),
@@ -29,5 +39,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/Makefile	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Stat_List_unit_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp	(revision 88)
@@ -68,5 +68,7 @@
 	 _nb_reg_free           ,
 	 _nb_bank               ,
-	 _size_counter          );
+	 _size_counter          ,
+         true //is_toplevel
+         );
       
       msg(_("%s"),param->print(1).c_str());
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp	(revision 88)
@@ -34,4 +34,14 @@
 #endif
 
+  Tusage_t _usage = USE_ALL;
+
+//   _usage = usage_unset(_usage,USE_SYSTEMC              );
+//   _usage = usage_unset(_usage,USE_VHDL                 );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
+//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
+//   _usage = usage_unset(_usage,USE_POSITION             );
+//   _usage = usage_unset(_usage,USE_STATISTICS           );
+//   _usage = usage_unset(_usage,USE_INFORMATION          );
+
   Stat_List_unit * _Stat_List_unit = new Stat_List_unit 
     (name.c_str(),
@@ -40,5 +50,5 @@
 #endif
      _param,
-     USE_ALL);
+     _usage);
   
 #ifdef SYSTEMC
@@ -72,7 +82,9 @@
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RC_PHY    ," in_RETIRE_NUM_REG_RC_PHY    ",Tspecial_address_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RD          ," in_RETIRE_WRITE_RD          ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD," in_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD," in_RETIRE_NUM_REG_RD_PHY_OLD",Tgeneral_address_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW," in_RETIRE_NUM_REG_RD_PHY_NEW",Tgeneral_address_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_WRITE_RE          ," in_RETIRE_WRITE_RE          ",Tcontrol_t        ,_param->_nb_inst_retire);
+  ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD," in_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t        ,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD," in_RETIRE_NUM_REG_RE_PHY_OLD",Tspecial_address_t,_param->_nb_inst_retire);
   ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW," in_RETIRE_NUM_REG_RE_PHY_NEW",Tspecial_address_t,_param->_nb_inst_retire);
@@ -116,7 +128,9 @@
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RC_PHY    ,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RD          ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_WRITE_RE          ,_param->_nb_inst_retire);
+  INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire);
   INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire);
@@ -347,7 +361,9 @@
 	      in_RETIRE_NUM_REG_RC_PHY     [i]->write(rc);
 	      in_RETIRE_WRITE_RD           [i]->write(write_rd);
+	      in_RETIRE_RESTORE_RD_PHY_OLD [i]->write(0);
 	      in_RETIRE_NUM_REG_RD_PHY_OLD [i]->write(rd_old);
 	      in_RETIRE_NUM_REG_RD_PHY_NEW [i]->write(rd_new);
 	      in_RETIRE_WRITE_RE           [i]->write(write_re);
+	      in_RETIRE_RESTORE_RE_PHY_OLD [i]->write(0);
 	      in_RETIRE_NUM_REG_RE_PHY_OLD [i]->write(re_old);
 	      in_RETIRE_NUM_REG_RE_PHY_NEW [i]->write(re_new);
@@ -486,16 +502,18 @@
 	    if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read())
 	      {
-		Tcontrol_t         read_ra  = in_RETIRE_READ_RA            [i]->read();
-		Tgeneral_address_t ra       = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
-		Tcontrol_t         read_rb  = in_RETIRE_READ_RB            [i]->read();
-		Tgeneral_address_t rb       = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
-		Tcontrol_t         read_rc  = in_RETIRE_READ_RC            [i]->read();
-		Tspecial_address_t rc       = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
-		Tcontrol_t         write_rd = in_RETIRE_WRITE_RD           [i]->read();
-		Tgeneral_address_t rd_old   = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
-		Tgeneral_address_t rd_new   = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
-		Tcontrol_t         write_re = in_RETIRE_WRITE_RE           [i]->read();
-		Tgeneral_address_t re_old   = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
-		Tgeneral_address_t re_new   = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();		
+		Tcontrol_t         read_ra        = in_RETIRE_READ_RA            [i]->read();
+		Tgeneral_address_t ra             = in_RETIRE_NUM_REG_RA_PHY     [i]->read();
+		Tcontrol_t         read_rb        = in_RETIRE_READ_RB            [i]->read();
+		Tgeneral_address_t rb             = in_RETIRE_NUM_REG_RB_PHY     [i]->read();
+		Tcontrol_t         read_rc        = in_RETIRE_READ_RC            [i]->read();
+		Tspecial_address_t rc             = in_RETIRE_NUM_REG_RC_PHY     [i]->read();
+		Tcontrol_t         write_rd       = in_RETIRE_WRITE_RD           [i]->read();
+		Tcontrol_t         restore_rd_old = in_RETIRE_RESTORE_RD_PHY_OLD [i]->read();
+		Tgeneral_address_t rd_old         = in_RETIRE_NUM_REG_RD_PHY_OLD [i]->read();
+		Tgeneral_address_t rd_new         = in_RETIRE_NUM_REG_RD_PHY_NEW [i]->read();
+		Tcontrol_t         write_re       = in_RETIRE_WRITE_RE           [i]->read();
+		Tcontrol_t         restore_re_old = in_RETIRE_RESTORE_RE_PHY_OLD [i]->read();
+		Tgeneral_address_t re_old         = in_RETIRE_NUM_REG_RE_PHY_OLD [i]->read();
+		Tgeneral_address_t re_new         = in_RETIRE_NUM_REG_RE_PHY_NEW [i]->read();		
 
 		LABEL("RETIRE [%d] - Accepted",i);
@@ -519,4 +537,5 @@
 		LABEL("   * status[%d]._counter  : %d",rc,spr_status[rc]._counter );
 		LABEL(" * read_rd          : %d",write_rd);
+		LABEL(" * restore_rd_old   : %d",restore_rd_old);
 		LABEL(" * reg_rd_old       : %d",rd_old  );
 		LABEL("   * status[%d]._is_free  : %d",rd_old,spr_status[rd_old]._is_free );
@@ -530,4 +549,5 @@
 		LABEL("   * status[%d]._counter  : %d",rd_new,spr_status[rd_new]._counter );
 		LABEL(" * read_re          : %d",write_re);
+		LABEL(" * restore_re_old   : %d",restore_re_old);
 		LABEL(" * reg_re_old       : %d",re_old  );
 		LABEL("   * status[%d]._is_free  : %d",re_old,spr_status[re_old]._is_free );
@@ -555,12 +575,30 @@
 		if (write_rd)
 		  {
-		    gpr_status[rd_old]._is_link  = 0;
-		    gpr_status[rd_new]._is_valid = 1;
+                    if (restore_rd_old)
+                      {
+                        gpr_status[rd_old]._is_link  = 1;
+                        gpr_status[rd_new]._is_link  = 0;
+                        gpr_status[rd_new]._is_valid = 1;
+                      }
+                    else
+                      {
+                        gpr_status[rd_old]._is_link  = 0;
+                        gpr_status[rd_new]._is_valid = 1;
+                      }
 		  }
 		if (write_re)
 		  {
-		    spr_status[re_old]._is_link  = 0;
-		    spr_status[re_new]._is_valid = 1;
-		  }
+                    if (restore_re_old)
+                      {
+                        spr_status[re_old]._is_link  = 1;
+                        spr_status[re_new]._is_link  = 0;
+                        spr_status[re_new]._is_valid = 1;
+                      }
+                    else
+                      {
+                        spr_status[re_old]._is_link  = 0;
+                        spr_status[re_new]._is_valid = 1;
+                      }
+                  }
 	      }
 
@@ -647,7 +685,9 @@
   delete []  in_RETIRE_NUM_REG_RC_PHY    ;
   delete []  in_RETIRE_WRITE_RD          ;
+  delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
   delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
   delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
   delete []  in_RETIRE_WRITE_RE          ;
+  delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
   delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
   delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h	(revision 88)
@@ -36,6 +36,6 @@
   public : uint32_t   _size_counter          ;
 
-  public : uint32_t   _size_general_register ;
-  public : uint32_t   _size_special_register ;
+//public : uint32_t   _size_general_register ;
+//public : uint32_t   _size_special_register ;
 		      
   public : uint32_t   _max_reader            ;
@@ -63,8 +63,12 @@
 			uint32_t   nb_reg_free           ,
 			uint32_t   nb_bank               ,
-			uint32_t   size_counter          );
+			uint32_t   size_counter          ,
+                        bool       is_toplevel=false
+                        );
 
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h	(revision 88)
@@ -1,3 +1,3 @@
-#ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
+ #ifndef morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
 #define morpheo_behavioural_core_multi_ooo_engine_ooo_engine_rename_unit_register_translation_unit_stat_list_unit_Stat_List_unit_h
 
@@ -86,7 +86,9 @@
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RC_PHY    ;//[nb_inst_retire]
   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RD          ;//[nb_inst_retire]
+  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tgeneral_address_t)   **  in_RETIRE_NUM_REG_RD_PHY_NEW;//[nb_inst_retire]
   public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_WRITE_RE          ;//[nb_inst_retire]
+  public    : SC_IN (Tcontrol_t        )   **  in_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_OLD;//[nb_inst_retire]
   public    : SC_IN (Tspecial_address_t)   **  in_RETIRE_NUM_REG_RE_PHY_NEW;//[nb_inst_retire]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h	(revision 88)
@@ -23,8 +23,8 @@
   class stat_list_entry_t
   {
-  private : bool     _is_free ; // set = is present in free list
-  private : bool     _is_link ; // set = is present in rat
-  private : bool     _is_valid; // set = an instruction have write in this register
-  private : uint32_t _counter ; // number of register that must read this register
+  public : bool     _is_free ; // set = is present in free list
+  public : bool     _is_link ; // set = is present in rat
+  public : bool     _is_valid; // set = an instruction have write in this register
+  public : uint32_t _counter ; // number of register that must read this register
 
   public :  stat_list_entry_t (void) {};
@@ -55,11 +55,21 @@
     }
 
-  public : void retire_write_old (void)
+  public : void retire_write_old (bool restore_old)
     {
-      _is_link  = 0;
+      if (not restore_old)
+        {
+          _is_link  = 0;
+        }
+      // else nothing
     }
 
-  public : void retire_write_new (void)
+  public : void retire_write_new (bool restore_old)
     {
+      if (restore_old)
+        {
+          _is_link  = 0;
+        }
+
+      // in all case
       _is_valid = 1;
     }
@@ -79,17 +89,17 @@
       return ((_is_free  == 0) and
 	      (_is_link  == 0) and
-	      (_is_valid == 1) and
+// 	      (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset
 	      (_counter  == 0));
     }
 
-  public : friend std::ostream& operator<< (std::ostream& output_stream,
+  public : friend std::ostream& operator<< (std::ostream& output,
 					    stat_list_entry_t & x)
     {
-      output_stream << x._is_free  << " "
-		    << x._is_link  << " "
-		    << x._is_valid << " "
-		    << x._counter;
+      output << x._is_free  << " "
+             << x._is_link  << " "
+             << x._is_valid << " "
+             << x._counter;
       
-      return output_stream;
+      return output;
     }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp	(revision 88)
@@ -29,5 +29,6 @@
 			  uint32_t   nb_reg_free           ,
 			  uint32_t   nb_bank               ,
-			  uint32_t   size_counter          )
+			  uint32_t   size_counter          ,
+                          bool       is_toplevel)
   {
     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
@@ -43,7 +44,4 @@
     _size_counter           = size_counter       ;
 
-    _size_general_register  = log2(nb_general_register);
-    _size_special_register  = log2(nb_special_register);
-    
     _max_reader             = 1<<size_counter;
 
@@ -68,4 +66,13 @@
 
     test();
+    
+    if (is_toplevel)
+      {
+        _size_general_register  = log2(nb_general_register);
+        _size_special_register  = log2(nb_special_register);
+        
+        copy ();
+      }
+
     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
   };
@@ -82,9 +89,18 @@
 #undef  FUNCTION
 #define FUNCTION "Stat_List_unit::~Parameters"
-  Parameters::~Parameters () 
+  Parameters::~Parameters (void) 
   {
     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
     log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
   };
+
+#undef  FUNCTION
+#define FUNCTION "Stat_List_unit::copy"
+  void Parameters::copy (void) 
+  {
+    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
+    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
+  };
+
 
 }; // end namespace stat_list_unit
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp	(revision 88)
@@ -16,5 +16,4 @@
 namespace register_translation_unit {
 namespace stat_list_unit {
-
 
 #undef  FUNCTION
@@ -39,4 +38,10 @@
     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
 
+#if DEBUG_Stat_List_unit == true
+    log_printf(INFO,Stat_List_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation");
 
@@ -48,5 +53,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Stat_List_unit,FUNCTION,"Allocation of statistics");
@@ -57,5 +62,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -67,5 +72,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	// Constant
@@ -90,5 +95,5 @@
 	SC_METHOD (genMoore);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
 	
 # ifdef SYSTEMCASS_SPECIFIC
@@ -100,5 +105,5 @@
 	SC_METHOD (genMealy);
 	dont_initialize ();
-	sensitive << (*(in_CLOCK)).neg();
+	sensitive << (*(in_CLOCK)).neg(); // need internal register
 	for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
 	  sensitive << (*(in_INSERT_READ_RA        [i]))
@@ -135,5 +140,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Stat_List_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp	(revision 88)
@@ -87,7 +87,9 @@
        ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RC_PHY    ,"num_reg_rc_phy"    ,Tspecial_address_t,_param->_size_special_register);
        ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RD          ,"write_rd"          ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t        ,1                             );
        ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register);
        ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RD_PHY_NEW,"num_reg_rd_phy_new",Tgeneral_address_t,_param->_size_general_register);
        ALLOC1_SIGNAL_IN ( in_RETIRE_WRITE_RE          ,"write_re"          ,Tcontrol_t        ,1                             );
+       ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t        ,1                             );
        ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register);
        ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register);
@@ -112,5 +114,7 @@
      }
 
-    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
      gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
      spr_stat_list = new stat_list_entry_t * [_param->_nb_bank];
@@ -128,7 +132,11 @@
      internal_PUSH_SPR_VAL      = new Tcontrol_t [_param->_nb_reg_free];
      internal_PUSH_SPR_NUM_BANK = new uint32_t   [_param->_nb_reg_free];
+      }
+
+    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
 #ifdef POSITION
-    _component->generate_file();
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp	(revision 88)
@@ -24,5 +24,5 @@
     log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete     in_CLOCK ;
@@ -51,7 +51,9 @@
 	delete []  in_RETIRE_NUM_REG_RC_PHY    ;
 	delete []  in_RETIRE_WRITE_RD          ;
+	delete []  in_RETIRE_RESTORE_RD_PHY_OLD;
 	delete []  in_RETIRE_NUM_REG_RD_PHY_OLD;
 	delete []  in_RETIRE_NUM_REG_RD_PHY_NEW;
 	delete []  in_RETIRE_WRITE_RE          ;
+	delete []  in_RETIRE_RESTORE_RE_PHY_OLD;
 	delete []  in_RETIRE_NUM_REG_RE_PHY_OLD;
 	delete []  in_RETIRE_NUM_REG_RE_PHY_NEW;
@@ -64,15 +66,20 @@
 	delete []  in_PUSH_SPR_ACK             ;
 	delete [] out_PUSH_SPR_NUM_REG         ;
+    
+        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    
+        delete [] gpr_stat_list;
+        delete [] spr_stat_list;
+        
+        delete [] internal_INSERT_ACK       ;
+        delete [] internal_RETIRE_ACK       ;
+        delete [] internal_PUSH_GPR_VAL     ;
+        delete [] internal_PUSH_GPR_NUM_BANK;
+        delete [] internal_PUSH_SPR_VAL     ;
+        delete [] internal_PUSH_SPR_NUM_BANK;
       }
+
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    delete [] gpr_stat_list;
-    delete [] spr_stat_list;
-
-    delete [] internal_INSERT_ACK       ;
-    delete [] internal_RETIRE_ACK       ;
-    delete [] internal_PUSH_GPR_VAL     ;
-    delete [] internal_PUSH_GPR_NUM_BANK;
-    delete [] internal_PUSH_SPR_VAL     ;
-    delete [] internal_PUSH_SPR_NUM_BANK;
 
     delete _component;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_end_cycle.cpp	(revision 88)
@@ -26,5 +26,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -32,5 +33,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Stat_List_unit::genMealy (void)
   {
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
+    log_begin(Stat_List_unit,FUNCTION);
+    log_function(Stat_List_unit,FUNCTION,_name.c_str());
 
     for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
@@ -57,5 +58,5 @@
       }
     
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
+    log_end(Stat_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Stat_List_unit::genMoore (void)
   {
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
+    log_begin(Stat_List_unit,FUNCTION);
+    log_function(Stat_List_unit,FUNCTION,_name.c_str());
 
     uint32_t gpr_ptr = internal_GPR_PTR_FREE;
@@ -69,5 +70,5 @@
       }
     
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
+    log_end(Stat_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp	(revision 88)
@@ -23,5 +23,6 @@
   void Stat_List_unit::transition (void)
   {
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
+    log_begin(Stat_List_unit,FUNCTION);
+    log_function(Stat_List_unit,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -121,9 +122,10 @@
 	      if (PORT_READ(in_RETIRE_WRITE_RD [i]))
 		{
+                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RD_PHY_OLD [i]);
 		  {
 		    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]);
 		    uint32_t bank = num_reg >> _param->_shift_gpr;
 		    uint32_t reg  = num_reg  & _param->_mask_gpr ;
-		    gpr_stat_list [bank][reg].retire_write_old();
+		    gpr_stat_list [bank][reg].retire_write_old(restore_old);
 		  }
 		  {
@@ -131,5 +133,5 @@
 		    uint32_t bank = num_reg >> _param->_shift_gpr;
 		    uint32_t reg  = num_reg  & _param->_mask_gpr ;
-		    gpr_stat_list [bank][reg].retire_write_new();
+		    gpr_stat_list [bank][reg].retire_write_new(restore_old);
 		  }
 		}
@@ -137,9 +139,10 @@
 	      if (PORT_READ(in_RETIRE_WRITE_RE [i]))
 		{
+                  Tcontrol_t restore_old = PORT_READ(in_RETIRE_RESTORE_RE_PHY_OLD [i]);
 		  {
 		    Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);
 		    uint32_t bank = num_reg >> _param->_shift_spr;
 		    uint32_t reg  = num_reg  & _param->_mask_spr ;
-		    spr_stat_list [bank][reg].retire_write_old();
+		    spr_stat_list [bank][reg].retire_write_old(restore_old);
 		  }
 		  {
@@ -147,5 +150,5 @@
 		    uint32_t bank = num_reg >> _param->_shift_spr;
 		    uint32_t reg  = num_reg  & _param->_mask_spr ;
-		    spr_stat_list [bank][reg].retire_write_new();
+		    spr_stat_list [bank][reg].retire_write_new(restore_old);
 		  }
 		}
@@ -171,28 +174,29 @@
 	internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;
       }
-    
-//     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print gpr_stat_list :");
-//     for (uint32_t i=0; i<_param->_nb_bank; i++)
-//       {
-// 	log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
-// 	for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
-// 	  {
-// 	    std::ostringstream str;
-// 	    str << gpr_stat_list [i][j];
-// 	    log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
-
-// 	  }
-//       }
-//     log_printf(TRACE,Stat_List_unit,FUNCTION,"Print spr_stat_list :");
-//     for (uint32_t i=0; i<_param->_nb_bank; i++)
-//       {
-// 	log_printf(TRACE,Stat_List_unit,FUNCTION," * Bank : %d",i);
-// 	for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
-// 	  {
-// 	    std::ostringstream str;
-// 	    str << spr_stat_list [i][j];
-// 	    log_printf(TRACE,Stat_List_unit,FUNCTION,"   [%d] %s",j,str.str().c_str());
-// 	  }
-//       }
+
+
+#if (DEBUG >= DEBUG_TRACE)
+    log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
+    for (uint32_t i=0; i<_param->_nb_bank; i++)
+      for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
+        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
+                   i,
+                   j,
+                   (i<<_param->_shift_gpr)|j,
+                   gpr_stat_list[i][j]._is_free,
+                   gpr_stat_list[i][j]._is_link,
+                   gpr_stat_list[i][j]._is_valid,
+                   gpr_stat_list[i][j]._counter);
+    for (uint32_t i=0; i<_param->_nb_bank; i++)
+      for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
+        log_printf(TRACE,Stat_List_unit,FUNCTION,"    * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d",
+                   i,
+                   j,
+                   (i<<_param->_shift_spr)|j,
+                   spr_stat_list[i][j]._is_free,
+                   spr_stat_list[i][j]._is_link,
+                   spr_stat_list[i][j]._is_valid,
+                   spr_stat_list[i][j]._counter);
+#endif
 
 #if defined(STATISTICS) or defined(VHDL_TESTBENCH)
@@ -200,5 +204,5 @@
 #endif
 
-    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
+    log_end(Stat_List_unit,FUNCTION);
   };
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h	(revision 88)
@@ -40,11 +40,11 @@
   public : uint32_t   _size_read_counter     ;
 
-  public : uint32_t   _size_front_end_id     ;
-  public : uint32_t   _size_context_id       ;
-  public : uint32_t   _size_general_register ;
-  public : uint32_t   _size_special_register ;
+//public : uint32_t   _size_front_end_id     ;
+//public : uint32_t   _size_context_id       ;
+//public : uint32_t   _size_general_register ;
+//public : uint32_t   _size_special_register ;
 		      
-  public : uint32_t   _have_port_context_id  ;
-  public : uint32_t   _have_port_front_end_id;
+//public : uint32_t   _have_port_context_id  ;
+//public : uint32_t   _have_port_front_end_id;
 
   public : morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::         Parameters * _param_dependency_checking_unit;
@@ -62,7 +62,10 @@
 			uint32_t   nb_reg_free           ,
 			uint32_t   nb_bank               ,
-			uint32_t   size_read_counter     );
+			uint32_t   size_read_counter     ,
+                        bool       is_toplevel=false);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp	(revision 88)
@@ -28,5 +28,6 @@
 			  uint32_t   nb_reg_free           ,
 			  uint32_t   nb_bank               ,
-			  uint32_t   size_read_counter     )
+			  uint32_t   size_read_counter     ,
+                          bool       is_toplevel)
   {
     log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
@@ -42,15 +43,8 @@
     _size_read_counter   = size_read_counter  ;
 
-    uint32_t max_nb_context = max<uint32_t>(nb_context, nb_front_end);
+    uint32_t size_general_register = log2(nb_general_register);
+    uint32_t size_special_register = log2(nb_special_register);
+    uint32_t max_nb_context        = max<uint32_t>(nb_context, nb_front_end);
     
-    _size_front_end_id      = log2(nb_front_end       );
-    _size_context_id        = log2(max_nb_context     );
-    _size_general_register  = log2(nb_general_register);
-    _size_special_register  = log2(nb_special_register);
-    
-    _have_port_front_end_id = _size_front_end_id>0;
-    _have_port_context_id   = _size_context_id  >0;
-
-
     uint32_t nb_thread = 0;
     for (uint32_t i=0; i<nb_front_end; i++)
@@ -94,7 +88,24 @@
     _param_register_translation_unit_glue    = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters
       (_nb_inst_insert,
-       _nb_inst_retire);
+       _nb_inst_retire,
+        size_general_register,
+        size_special_register);
       
     test();
+
+    if (is_toplevel)
+      {
+        _size_front_end_id      = log2(nb_front_end       );
+        _size_context_id        = log2(max_nb_context     );
+
+        _size_general_register  = size_general_register;
+        _size_special_register  = size_special_register;
+        
+        _have_port_front_end_id = _size_front_end_id>0;
+        _have_port_context_id   = _size_context_id  >0;
+
+        copy();
+      }
+
     log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
   };
@@ -124,4 +135,19 @@
   };
 
+#undef  FUNCTION
+#define FUNCTION "Register_translation_unit::copy"
+  void Parameters::copy (void) 
+  {
+    log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
+
+    COPY(_param_dependency_checking_unit);
+    COPY(_param_free_list_unit);
+    COPY(_param_register_address_translation_unit);
+    COPY(_param_stat_list_unit);    
+    COPY(_param_register_translation_unit_glue);
+
+    log_printf(FUNC,Register_translation_unit,FUNCTION,"End");
+  };
+
 }; // end namespace register_translation_unit
 }; // end namespace rename_unit
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit.cpp	(revision 88)
@@ -38,4 +38,10 @@
     log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
 
+#if DEBUG_Register_translation_unit == true
+    log_printf(INFO,Register_translation_unit,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Register_translation_unit,FUNCTION,"Allocation");
 
@@ -47,5 +53,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {	
 	log_printf(INFO,Register_translation_unit,FUNCTION,"Allocation of statistics");
@@ -56,5 +62,5 @@
 
 #ifdef VHDL
-    if (_usage & USE_VHDL)
+    if (usage_is_set(_usage,USE_VHDL))
       {
 	// generate the vhdl
@@ -66,5 +72,5 @@
 
 #ifdef SYSTEMC
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	log_printf(INFO,Register_translation_unit,FUNCTION,"Method - transition");
@@ -90,5 +96,5 @@
 
 #ifdef STATISTICS
-    if (_usage & USE_STATISTICS)
+    if (usage_is_set(_usage,USE_STATISTICS))
       {
 	log_printf(INFO,Register_translation_unit,FUNCTION,"Generate Statistics file");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp	(revision 88)
@@ -130,6 +130,6 @@
      {
        name = _name+"_dependency_checking_unit";
-       std::cout << "Create   : " << name << std::endl;
-       
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
+
        _component_dependency_checking_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::dependency_checking_unit::Dependency_checking_unit
 	 (name.c_str()
@@ -149,5 +149,5 @@
      {
        name = _name+"_free_list_unit";
-       std::cout << "Create   : " << name << std::endl;
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
        
        _component_free_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::free_list_unit::Free_List_unit
@@ -168,5 +168,5 @@
      {
        name = _name+"_register_address_translation_unit";
-       std::cout << "Create   : " << name << std::endl;
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
        
        _component_register_address_translation_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_address_translation_unit::Register_Address_Translation_unit
@@ -187,5 +187,5 @@
      {
        name = _name+"_stat_list_unit";
-       std::cout << "Create   : " << name << std::endl;
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
        
        _component_stat_list_unit = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::stat_list_unit::Stat_List_unit
@@ -206,5 +206,5 @@
      {
        name = _name+"_register_translation_unit_glue";
-       std::cout << "Create   : " << name << std::endl;
+       log_printf(INFO,Core,FUNCTION,_("Create   : %s"),name.c_str());
        
        _component_register_translation_unit_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Register_translation_unit_Glue
@@ -225,5 +225,214 @@
     // ~~~~~[ Instanciation ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
     std::string src,dest;
+
+    // ===================================================================
+    // =====[ register_address_translation_unit ]=========================
+    // ===================================================================
+    {
+      src = _name+"_register_address_translation_unit";
+      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
+	   
+      {
+	dest = _name;
+#ifdef POSITION
+	_component->interface_map (src ,"",
+				   dest,"");
+#endif
+	PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+	PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+      }
+
+      // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+	{
+	  dest = _name;
+#ifdef POSITION
+	  _component->interface_map (src ,"rename_"+toString(i)
+				     dest,"rename_"+toString(i));
+#endif
+	  
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
+		              dest, "in_RENAME_"+toString(i)+"_VAL"               );
+	  if (_param->_have_port_front_end_id)
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
+		              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
+	  if (_param->_have_port_context_id)
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
+		              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
+		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    ,
+		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    ,
+		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    ,
+		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
+	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    ,
+		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
+
+	  dest = _name+"_register_translation_unit_glue";
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_ACK",
+		                   dest, "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK");
+	  
+	  dest = _name+"_dependency_checking_unit";
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    ,
+		                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    ,
+		                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    ,
+		                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
+		                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
+	  COMPONENT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
+		                   dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
+	}
+
+      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+	{
+	  dest = _name+"_register_translation_unit_glue";
+#ifdef POSITION
+	  _component->interface_map (src ,"rename_"+toString(i)
+				     dest,"rename_in_"+toString(i));
+#endif
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_VAL",
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL");
+	  COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK",
+		                   dest, "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK");
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"      ,
+			           dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RD"      );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"      ,
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_WRITE_RE"      );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_LOG",
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_LOG");
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_LOG",
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_LOG");
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY",
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RD_PHY_NEW");
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY",
+		                   dest,"out_INSERT_"+toString(i)+"_RAT_NUM_REG_RE_PHY_NEW");
+	}
+
+      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
+	{
+	  dest = _name;
+#ifdef POSITION
+	  _component->interface_map (src ,"retire_"+toString(i)
+				     dest,"retire_"+toString(i));
+#endif
+
+	  if (_param->_have_port_front_end_id)
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
+		              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
+	  if (_param->_have_port_context_id)
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
+		              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
+		              dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
+		              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
+		              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
+		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
+		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
+		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
+	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
+		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
+
+	  dest = _name+"_register_translation_unit_glue";
+	  COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
+			           dest,"out_RETIRE_"+toString(i)+"_RAT_VAL"      );
+	  COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
+		                   dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
+
+	  dest = _name+"_stat_list_unit";
+	  COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD",
+		                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RD_PHY_OLD");
+	  COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD",
+		                   dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD");
+	}
+    }
     
+    // ===================================================================
+    // =====[ free_list_unit ]============================================
+    // ===================================================================
+    {
+      src = _name+"_free_list_unit";
+      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
+	   
+      {
+	dest = _name;
+#ifdef POSITION
+	_component->interface_map (src ,"",
+				   dest,"");
+#endif
+	PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
+	PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
+      }
+
+      // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
+	{
+	  dest = _name;
+#ifdef POSITION
+	  _component->interface_map (src ,"pop_"+toString(i)
+				     dest,"rename_"+toString(i));
+#endif
+	  
+	  PORT_MAP(_component,src , "in_POP_"+toString(i)+"_GPR_VAL"    ,
+		              dest,"in_RENAME_"+toString(i)+"_WRITE_RD");
+	  PORT_MAP(_component,src , "in_POP_"+toString(i)+"_SPR_VAL"    ,
+		              dest,"in_RENAME_"+toString(i)+"_WRITE_RE");
+
+	  dest = _name+"_register_translation_unit_glue";
+	  COMPONENT_MAP(_component,src , "in_POP_"+toString(i)+"_VAL" ,
+			           dest,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" );
+	  COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_ACK" ,
+		                   dest, "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" );
+
+	  dest = _name+"_dependency_checking_unit";
+
+	  COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_GPR_NUM_REG",
+			           dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
+	  COMPONENT_MAP(_component,src ,"out_POP_"+toString(i)+"_SPR_NUM_REG",
+			           dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
+	}
+
+      // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+      for (uint32_t i=0; i<_param->_nb_reg_free; i++)
+	{
+	  dest = _name+"_stat_list_unit";
+#ifdef POSITION
+	  _component->interface_map (src ,"push_gpr_"+toString(i)
+				     dest,"push_gpr_"+toString(i));
+#endif
+
+	  COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_VAL"    ,
+			           dest,"out_PUSH_GPR_"+toString(i)+"_VAL"    );
+	  COMPONENT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_ACK"    ,
+		                   dest, "in_PUSH_GPR_"+toString(i)+"_ACK"    );
+	  COMPONENT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_NUM_REG",
+		                   dest,"out_PUSH_GPR_"+toString(i)+"_NUM_REG");
+
+#ifdef POSITION
+	  _component->interface_map (src ,"push_spr_"+toString(i)
+				     dest,"push_spr_"+toString(i));
+#endif
+
+	  COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_VAL"    ,
+		                   dest,"out_PUSH_SPR_"+toString(i)+"_VAL"    );
+	  COMPONENT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_ACK"    ,
+		                   dest, "in_PUSH_SPR_"+toString(i)+"_ACK"    );
+	  COMPONENT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_NUM_REG",
+		                   dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG");
+	}
+    }
+
+
     // ===================================================================
     // =====[ dependency_checking_unit ]==================================
@@ -231,5 +440,5 @@
     {
       src = _name+"_dependency_checking_unit";
-      std::cout << "Instance : " << src << std::endl;
+      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
 	   
       {
@@ -252,6 +461,6 @@
 #endif
 
-// 	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_VAL"               ,dest,);
-// 	  PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_ACK"               ,dest,);
+// // 	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_VAL"               ,dest,);
+// // 	  PORT_MAP(_component,src ,"out_RENAME_IN_"+toString(i)+"_ACK"               ,dest,);
 	  if (_param->_have_port_front_end_id)
 	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_FRONT_END_ID"      ,
@@ -280,24 +489,13 @@
 	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_LOG"    ,
 	  	              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
-
-	  dest = _name+"_register_address_translation_unit";
 	  
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    ,
-		              dest,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    );
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    ,
-		              dest,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    );
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    ,
-		              dest,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    );
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
-		              dest,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
-		              dest,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
+	  // in_RENAME_IN_NUM_REG_RA_PHY     - register_address_translation_unit
+	  // in_RENAME_IN_NUM_REG_RB_PHY     - register_address_translation_unit
+	  // in_RENAME_IN_NUM_REG_RC_PHY     - register_address_translation_unit
+	  // in_RENAME_IN_NUM_REG_RD_PHY_OLD - register_address_translation_unit
+	  // in_RENAME_IN_NUM_REG_RE_PHY_OLD - register_address_translation_unit
 	  
-	  dest = _name+"_free_list_unit";
-	  
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
-		              dest,"out_POP_"+toString(i)+"_GPR_NUM_REG");
-	  PORT_MAP(_component,src , "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
-		              dest,"out_POP_"+toString(i)+"_SPR_NUM_REG");
+	  // in_RENAME_IN_NUM_REG_RD_PHY_NEW - free_list_unit
+	  // in_RENAME_IN_NUM_REG_RE_PHY_NEW - free_list_unit
 	}
 
@@ -311,8 +509,4 @@
 #endif
 
-// 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_VAL"               ,
-// 		              dest,"out_INSERT_"+toString(i)+"_VAL"               );
-// 	  PORT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+"_ACK"               ,
-// 		              dest, "in_INSERT_"+toString(i)+"_ACK"               );
 	  if (_param->_have_port_front_end_id)
 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_FRONT_END_ID"      ,
@@ -321,47 +515,55 @@
 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_CONTEXT_ID"        ,
 		              dest,"out_INSERT_"+toString(i)+"_CONTEXT_ID"        );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           ,
-		              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_LOG"    ,
 		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_LOG"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           ,
-		              dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_LOG"    ,
 		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_LOG"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           ,
-		              dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_LOG"    ,
 		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_LOG"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          ,
-		              dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          ,
-		              dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
-	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
-		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
-	}
+
+// 	  PORT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_VAL"               ,
+// 		              dest,"out_INSERT_"+toString(i)+"_VAL"               );
+// 	  PORT_MAP(_component,src , "in_RENAME_OUT_"+toString(i)+"_ACK"               ,
+// 		              dest, "in_INSERT_"+toString(i)+"_ACK"               );
+
+	  dest = _name+"_register_translation_unit_glue";
+
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           ,
+			           dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RA"           );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RA_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RB"           );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RB_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_READ_RC"           );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RC_PHY"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RD"          );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_LOG"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD");
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW");
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_WRITE_RE"          );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_LOG"    );
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD");
+	  COMPONENT_MAP(_component,src ,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
+		                   dest, "in_INSERT_"+toString(i)+"_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW");
+ 	}
     }
 
     // ===================================================================
-    // =====[ free_list_unit ]============================================
+    // =====[ stat_list_unit ]============================================
     // ===================================================================
     {
-      src = _name+"_free_list_unit";
-      std::cout << "Instance : " << src << std::endl;
+      src = _name+"_stat_list_unit";
+      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
 	   
       {
@@ -375,243 +577,37 @@
       }
 
-      // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
-	{
-	  dest = _name;
-#ifdef POSITION
-	  _component->interface_map (src ,"pop_"+toString(i)
-				     dest,"rename_"+toString(i));
-#endif
-	  
-	  PORT_MAP(_component,src , "in_POP_"+toString(i)+"_GPR_VAL"    ,
-		              dest,"in_RENAME_"+toString(i)+"_WRITE_RD");
-	  PORT_MAP(_component,src , "in_POP_"+toString(i)+"_SPR_VAL"    ,
-		              dest,"in_RENAME_"+toString(i)+"_WRITE_RE");
-
-	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src , "in_POP_"+toString(i)+"_VAL" ,
-		              dest,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" );
-	  PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_ACK" ,
-		              dest, "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" );
-
-	  dest = _name+"_dependency_checking_unit";
-
-	  PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_GPR_NUM_REG",
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
-	  PORT_MAP(_component,src ,"out_POP_"+toString(i)+"_SPR_NUM_REG",
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
-	}
-      // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      for (uint32_t i=0; i<_param->_nb_reg_free; i++)
-	{
-	  dest = _name+"_stat_list_unit";
-#ifdef POSITION
-	  _component->interface_map (src ,"push_gpr_"+toString(i)
-				     dest,"push_gpr_"+toString(i));
-#endif
-
-	  PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_VAL"    ,
-		              dest,"out_PUSH_GPR_"+toString(i)+"_VAL"    );
-	  PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_ACK"    ,
-		              dest, "in_PUSH_GPR_"+toString(i)+"_ACK"    );
-	  PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_NUM_REG",
-		              dest,"out_PUSH_GPR_"+toString(i)+"_NUM_REG");
-
-#ifdef POSITION
-	  _component->interface_map (src ,"push_spr_"+toString(i)
-				     dest,"push_spr_"+toString(i));
-#endif
-
-	  PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_VAL"    ,
-		              dest,"out_PUSH_SPR_"+toString(i)+"_VAL"    );
-	  PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_ACK"    ,
-		              dest, "in_PUSH_SPR_"+toString(i)+"_ACK"    );
-	  PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_NUM_REG",
-		              dest,"out_PUSH_SPR_"+toString(i)+"_NUM_REG");
-	}
-    }
-
-    // ===================================================================
-    // =====[ register_address_translation_unit ]=========================
-    // ===================================================================
-    {
-      src = _name+"_register_address_translation_unit";
-      std::cout << "Instance : " << src << std::endl;
-	   
-      {
-	dest = _name;
-#ifdef POSITION
-	_component->interface_map (src ,"",
-				   dest,"");
-#endif
-	PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
-	PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
-      }
-
-      // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
-	{
-	  dest = _name;
-#ifdef POSITION
-	  _component->interface_map (src ,"rename_"+toString(i)
-				     dest,"rename_"+toString(i));
-#endif
-	  
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_VAL"               ,
-		              dest, "in_RENAME_"+toString(i)+"_VAL"               );
-	  if (_param->_have_port_front_end_id)
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_FRONT_END_ID"      ,
-		              dest, "in_RENAME_"+toString(i)+"_FRONT_END_ID"      );
-	  if (_param->_have_port_context_id)
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_CONTEXT_ID"        ,
-		              dest, "in_RENAME_"+toString(i)+"_CONTEXT_ID"        );
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    ,
-		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RA_LOG"    );
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    ,
-		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RB_LOG"    );
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    ,
-		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RC_LOG"    );
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    ,
-		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RD_LOG"    );
-	  PORT_MAP(_component,src , "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    ,
-		              dest, "in_RENAME_"+toString(i)+"_NUM_REG_RE_LOG"    );
-
-	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_ACK",
-		              dest, "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK");
-	  
-	  dest = _name+"_dependency_checking_unit";
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RA_PHY"    ,
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RA_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RB_PHY"    ,
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RB_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RC_PHY"    ,
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RC_PHY"    );
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
-	  PORT_MAP(_component,src ,"out_RENAME_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
-		              dest, "in_RENAME_IN_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
-	}
-
       // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
       for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
 	{
-	  dest = _name+"_dependency_checking_unit";
-#ifdef POSITION
-	  _component->interface_map (src ,"rename_"+toString(i)
-				     dest,"rename_in_"+toString(i));
-#endif
-
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"      ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"      );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"      ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"      );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_LOG",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_LOG");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_LOG",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_LOG");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
-
 	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_VAL",
-		              dest,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL");
-	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK",
-		              dest, "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK");
-	}
-
-      // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      for (uint32_t i=0; i<_param->_nb_inst_retire; i++)
-	{
-	  dest = _name;
-#ifdef POSITION
-	  _component->interface_map (src ,"retire_"+toString(i)
-				     dest,"retire_"+toString(i));
-#endif
-
-	  if (_param->_have_port_front_end_id)
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      ,
-		              dest, "in_RETIRE_"+toString(i)+"_FRONT_END_ID"      );
-	  if (_param->_have_port_context_id)
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        ,
-		              dest, "in_RETIRE_"+toString(i)+"_CONTEXT_ID"        );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_EVENT_STATE"       ,
-		              dest, "in_RETIRE_"+toString(i)+"_EVENT_STATE"       );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RD"          ,
-		              dest, "in_RETIRE_"+toString(i)+"_WRITE_RD"          );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_WRITE_RE"          ,
-		              dest, "in_RETIRE_"+toString(i)+"_WRITE_RE"          );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    ,
-		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_LOG"    );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    ,
-		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_LOG"    );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
-		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
-		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
-
-	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL"          ,
-		              dest,"out_RETIRE_"+toString(i)+"_RAT_VAL"      );
-	  PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK"          ,
-		              dest, "in_RETIRE_"+toString(i)+"_RAT_ACK"      );
-	}
-    }
-    
-    // ===================================================================
-    // =====[ stat_list_unit ]============================================
-    // ===================================================================
-    {
-      src = _name+"_stat_list_unit";
-      std::cout << "Instance : " << src << std::endl;
-	   
-      {
-	dest = _name;
-#ifdef POSITION
-	_component->interface_map (src ,"",
-				   dest,"");
-#endif
-	PORT_MAP(_component,src , "in_CLOCK" ,dest, "in_CLOCK");
-	PORT_MAP(_component,src , "in_NRESET",dest, "in_NRESET");
-      }
-
-      // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-      for (uint32_t i=0; i<_param->_nb_inst_insert; i++)
-	{
-	  dest = _name+"_dependency_checking_unit";
 #ifdef POSITION
 	  _component->interface_map (src ,"insert_"+toString(i)
-				     dest,"rename_out_"+toString(i));
-#endif
-
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RA"           ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_READ_RA"           );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RA_PHY"    );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RB"           ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_READ_RB"           );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RB_PHY"    );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RC"           ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_READ_RC"           );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RC_PHY"    );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RD"          );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
-		              dest,"out_RENAME_OUT_"+toString(i)+"_WRITE_RE"          );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
-		              dest,"out_RENAME_OUT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
-
-	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src ,  "in_INSERT_"+toString(i)+"_VAL" ,
-		              dest,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL");
-	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK" ,
-		              dest, "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" );
+				     dest,"insert_stat_list_"+toString(i));
+#endif
+
+	  COMPONENT_MAP(_component,src ,  "in_INSERT_"+toString(i)+"_VAL" ,
+			           dest,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL");
+	  COMPONENT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_ACK" ,
+		                   dest, "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RA"           ,
+			           dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RA"           );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RA_PHY"    );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RB"           ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RB"           );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RB_PHY"    );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_READ_RC"           ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_READ_RC"           );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RC_PHY"    );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RD"          ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RD"          );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RD_PHY_NEW");
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_WRITE_RE"          ,
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_WRITE_RE"          );
+	  COMPONENT_MAP(_component,src , "in_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
+		                   dest,"out_INSERT_"+toString(i)+"_STAT_LIST_NUM_REG_RE_PHY_NEW");
 	}
 
@@ -650,9 +646,12 @@
 		              dest, "in_RETIRE_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
 
+	  // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD
+	  // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD
+
 	  dest = _name+"_register_translation_unit_glue";
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
-		              dest,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL");
-	  PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
-		              dest, "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK");
+	  COMPONENT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_VAL",
+		                   dest,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL");
+	  COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_ACK",
+			           dest, "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK");
 	}
 
@@ -667,10 +666,7 @@
 #endif
 
-	  PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_VAL"    ,
-		              dest, "in_PUSH_GPR_"+toString(i)+"_VAL"    );
-	  PORT_MAP(_component,src , "in_PUSH_GPR_"+toString(i)+"_ACK"    ,
-		              dest,"out_PUSH_GPR_"+toString(i)+"_ACK"    );
-	  PORT_MAP(_component,src ,"out_PUSH_GPR_"+toString(i)+"_NUM_REG",
-		              dest, "in_PUSH_GPR_"+toString(i)+"_NUM_REG");
+	  //out_PUSH_GPR_VAL     - free_list_unit
+	  // in_PUSH_GPR_ACK     - free_list_unit
+	  //out_PUSH_GPR_NUM_REG - free_list_unit
 
 #ifdef POSITION
@@ -679,10 +675,7 @@
 #endif
 
-	  PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_VAL"    ,
-		              dest, "in_PUSH_SPR_"+toString(i)+"_VAL"    );
-	  PORT_MAP(_component,src , "in_PUSH_SPR_"+toString(i)+"_ACK"    ,
-		              dest,"out_PUSH_SPR_"+toString(i)+"_ACK"    );
-	  PORT_MAP(_component,src ,"out_PUSH_SPR_"+toString(i)+"_NUM_REG",
-		              dest, "in_PUSH_SPR_"+toString(i)+"_NUM_REG");
+	  //out_PUSH_SPR_VAL     - free_list_unit
+	  // in_PUSH_SPR_ACK     - free_list_unit
+	  //out_PUSH_SPR_NUM_REG - free_list_unit
 	}
     }
@@ -693,5 +686,5 @@
     {
       src = _name+"_register_translation_unit_glue";
-      std::cout << "Instance : " << src << std::endl;
+      log_printf(INFO,Core,FUNCTION,_("Instance : %s"),src.c_str());
 	   
       {
@@ -723,23 +716,73 @@
 		              dest, "in_INSERT_"+toString(i)+"_ACK"    );
 
-	  dest = _name+"_register_address_translation_unit";
-	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_RAT_INSERT_VAL",
-		              dest, "in_INSERT_"+toString(i)+"_VAL");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_RAT_RENAME_ACK",
-		              dest,"out_RENAME_"+toString(i)+"_ACK");
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_RAT_INSERT_ACK",
-		              dest,"out_INSERT_"+toString(i)+"_ACK");
-
-	  dest = _name+"_free_list_unit";
-	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_FREE_LIST_VAL" ,
-		              dest, "in_POP_"+toString(i)+"_VAL" );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_FREE_LIST_ACK" ,
-		              dest,"out_POP_"+toString(i)+"_ACK" );
-
-	  dest = _name+"_stat_list_unit";
-	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_STAT_LIST_VAL" ,
-		              dest, "in_INSERT_"+toString(i)+"_VAL" );
-	  PORT_MAP(_component,src , "in_INSERT_"+toString(i)+"_STAT_LIST_ACK" ,
-		              dest,"out_INSERT_"+toString(i)+"_ACK" );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RA"           ,
+		              dest,"out_INSERT_"+toString(i)+"_READ_RA"           );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    ,
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RA_PHY"    );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RB"           ,
+		              dest,"out_INSERT_"+toString(i)+"_READ_RB"           );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    ,
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RB_PHY"    );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_READ_RC"           ,
+		              dest,"out_INSERT_"+toString(i)+"_READ_RC"           );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    ,
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RC_PHY"    );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RD"          ,
+		              dest,"out_INSERT_"+toString(i)+"_WRITE_RD"          );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    ,
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_LOG"    );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD",
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_OLD");
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW",
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RD_PHY_NEW");
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_WRITE_RE"          ,
+		              dest,"out_INSERT_"+toString(i)+"_WRITE_RE"          );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    ,
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_LOG"    );
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD",
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_OLD");
+	  PORT_MAP(_component,src ,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW",
+		              dest,"out_INSERT_"+toString(i)+"_NUM_REG_RE_PHY_NEW");
+
+	  // out_INSERT_RAT_INSERT_VAL - register_address_translation_unit
+	  //  in_INSERT_RAT_RENAME_ACK - register_address_translation_unit
+	  //  in_INSERT_RAT_INSERT_ACK - register_address_translation_unit
+	  // out_INSERT_FREE_LIST_VAL  - free_list_unit
+	  //  in_INSERT_FREE_LIST_ACK  - free_list_unit
+	  // out_INSERT_STAT_LIST_VAL  - stat_list_unit
+	  //  in_INSERT_STAT_LIST_ACK  - stat_list_unit
+
+	  //  in_INSERT_DEPENDENCY_CHECKING_READ_RA            - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RA_PHY     - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_READ_RB            - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RB_PHY     - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_READ_RC            - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RC_PHY     - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RD           - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_LOG     - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_OLD - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RD_PHY_NEW - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_WRITE_RE           - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_LOG     - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_OLD - dependency_checking_unit
+	  //  in_INSERT_DEPENDENCY_CHECKING_NUM_REG_RE_PHY_NEW - dependency_checking_unit
+
+	  // out_INSERT_STAT_LIST_READ_RA                      - stat_list_unit
+	  // out_INSERT_STAT_LIST_NUM_REG_RA_PHY               - stat_list_unit
+	  // out_INSERT_STAT_LIST_READ_RB                      - stat_list_unit
+	  // out_INSERT_STAT_LIST_NUM_REG_RB_PHY               - stat_list_unit
+	  // out_INSERT_STAT_LIST_READ_RC                      - stat_list_unit
+	  // out_INSERT_STAT_LIST_NUM_REG_RC_PHY               - stat_list_unit
+	  // out_INSERT_STAT_LIST_WRITE_RD                     - stat_list_unit
+	  // out_INSERT_STAT_LIST_NUM_REG_RD_PHY_NEW           - stat_list_unit
+	  // out_INSERT_STAT_LIST_WRITE_RE                     - stat_list_unit
+	  // out_INSERT_STAT_LIST_NUM_REG_RE_PHY_NEW           - stat_list_unit
+
+	  // out_INSERT_RAT_WRITE_RD                           - register_address_translation_unit
+	  // out_INSERT_RAT_NUM_REG_RD_LOG                     - register_address_translation_unit
+	  // out_INSERT_RAT_NUM_REG_RD_PHY_NEW                 - register_address_translation_unit
+	  // out_INSERT_RAT_WRITE_RE                           - register_address_translation_unit
+	  // out_INSERT_RAT_NUM_REG_RE_LOG                     - register_address_translation_unit
+	  // out_INSERT_RAT_NUM_REG_RE_PHY_NEW                 - register_address_translation_unit
 	}
 
@@ -758,15 +801,8 @@
 		              dest,"out_RETIRE_"+toString(i)+"_ACK"          );
 
-	  dest = _name+"_register_address_translation_unit";
-	  PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RAT_VAL"      ,
-		              dest, "in_RETIRE_"+toString(i)+"_VAL"          );
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_RAT_ACK"      ,
-		              dest,"out_RETIRE_"+toString(i)+"_ACK"          );
-
-	  dest = _name+"_stat_list_unit";
-	  PORT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_STAT_LIST_VAL",
-		              dest, "in_RETIRE_"+toString(i)+"_VAL");
-	  PORT_MAP(_component,src , "in_RETIRE_"+toString(i)+"_STAT_LIST_ACK",
-		              dest,"out_RETIRE_"+toString(i)+"_ACK");
+	  // out_RETIRE_RAT_VAL       - register_address_translation_unit
+	  //  in_RETIRE_RAT_ACK       - register_address_translation_unit
+	  // out_RETIRE_STAT_LIST_VAL - stat_list_unit
+	  //  in_RETIRE_STAT_LIST_ACK - stat_list_unit
 	}
      }
@@ -774,8 +810,11 @@
 
     // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-     _component->test_map();
-
-#ifdef POSITION
-    _component->generate_file();
+#if (DEBUG_Register_translation_unit == true)
+    _component->test_map();
+#endif
+
+#ifdef POSITION
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp	(revision 88)
@@ -23,5 +23,5 @@
     log_printf(FUNC,Register_translation_unit,FUNCTION,"Begin");
 
-    if (_usage & USE_SYSTEMC)
+    if (usage_is_set(_usage,USE_SYSTEMC))
       {
 	delete    in_CLOCK ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_end_cycle.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_end_cycle.cpp	(revision 82)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_end_cycle.cpp	(revision 88)
@@ -25,5 +25,6 @@
 
 #ifdef STATISTICS
-    _stat->end_cycle();
+    if (usage_is_set(_usage,USE_STATISTICS))
+      _stat->end_cycle();
 #endif    
 
@@ -31,5 +32,6 @@
     // Evaluation before read the ouput signal
 //  sc_start(0);
-    _interfaces->testbench();
+    if (usage_is_set(_usage,USE_VHDL_TESTBENCH))
+      _interfaces->testbench();
 #endif
 
