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);
   };
 
