Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg	(revision 142)
+++ 	(revision )
@@ -1,9 +1,0 @@
-Stat_List_unit
-1	1	*2	#_nb_front_end          
-1	1	*2	#_nb_context            
-64	64	*2	#_nb_general_register   
-16	16	*2	#_nb_special_register   
-1	4	*2	#_nb_inst_insert        
-1	4	*2	#_nb_inst_retire        
-1	4	*2	#_nb_reg_free           
-4	4	*2	#_nb_bank               
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg	(revision 142)
+++ 	(revision )
@@ -1,10 +1,0 @@
-Stat_List_unit
-2	2	*2	#_nb_front_end          
-1	3	+1	#_nb_context            [0]
-2	2	*2	#_nb_context            [1]
-256	256	*2	#_nb_general_register   
-64	64	*2	#_nb_special_register   
-4	4	*2	#_nb_inst_insert        
-4	4	*2	#_nb_inst_retire        
-4	4	*2	#_nb_reg_free           
-4	8	*2	#_nb_bank               
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_mono_thread.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_mono_thread.gen	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_mono_thread.gen	(revision 145)
@@ -0,0 +1,9 @@
+Stat_List_unit
+1	1	*2	#_nb_front_end          
+1	1	*2	#_nb_context            
+64	64	*2	#_nb_general_register   
+16	16	*2	#_nb_special_register   
+1	4	*2	#_nb_inst_insert        
+1	4	*2	#_nb_inst_retire        
+1	4	*2	#_nb_reg_free           
+4	4	*2	#_nb_bank               
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_multi_thread.gen
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_multi_thread.gen	(revision 145)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/configuration/config_multi_thread.gen	(revision 145)
@@ -0,0 +1,10 @@
+Stat_List_unit
+2	2	*2	#_nb_front_end          
+1	3	+1	#_nb_context            [0]
+2	2	*2	#_nb_context            [1]
+256	256	*2	#_nb_general_register   
+64	64	*2	#_nb_special_register   
+4	4	*2	#_nb_inst_insert        
+4	4	*2	#_nb_inst_retire        
+4	4	*2	#_nb_reg_free           
+4	8	*2	#_nb_bank               
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 142)
+++ 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 145)
@@ -17,4 +17,39 @@
 namespace register_translation_unit {
 namespace stat_list_unit {
+
+  
+#if (DEBUG >= DEBUG_TRACE)
+# define dump_stat_list                                                 \
+  do                                                                    \
+    {                                                                   \
+      log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");   \
+      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE); \
+      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE); \
+                                                                        \
+      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, use %.1d", \
+                     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_use                        \
+                     );                                                 \
+      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, use %.1d", \
+                     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_use                        \
+                     );                                                 \
+    }                                                                   \
+  while (0)
+#else
+# define dump_stat_list
+#endif
 
 
@@ -107,5 +142,5 @@
             for (uint32_t i=0; i<_param->_nb_bank; i++)
               for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++)
-                if (not gpr_stat_list [i][j]._is_free)
+                if (not (gpr_stat_list [i][j]._is_free or gpr_stat_list [i][j].can_free()))
                   list_gpr_not_free+=toString((i<<_param->_shift_gpr)|j)+" ";   
 
@@ -114,6 +149,12 @@
             for (uint32_t i=0; i<_param->_nb_bank; i++)
               for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++)
-                if (not spr_stat_list [i][j]._is_free)
+                if (not (spr_stat_list [i][j]._is_free or spr_stat_list [i][j].can_free()))
                   list_spr_not_free+=toString((i<<_param->_shift_spr)|j)+" ";   
+
+          if (error_nb_gpr_free     or
+              error_nb_spr_free     or
+              error_rob_nb_gpr_free or
+              error_rob_nb_spr_free)
+            dump_stat_list;
 
           if (error_nb_gpr_free)
@@ -334,36 +375,6 @@
 
 
-#if (DEBUG >= DEBUG_TRACE)
-    {
-      log_printf(TRACE,Stat_List_unit,FUNCTION,"  * Dump Stat List");
-      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE);
-      log_printf(TRACE,Stat_List_unit,FUNCTION,"    * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE);
-      
-      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, use %.1d",
-                     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_use// ,
-//                      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, use %.1d",
-                     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_use// ,
-//                      spr_stat_list[i][j]._is_valid,
-//                      spr_stat_list[i][j]._counter
-                     );
-    }
-#endif
+    dump_stat_list;
+
 
 #ifdef DEBUG_TEST
