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_statistics_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_statistics_declaration.cpp	(revision 81)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_statistics_allocation.cpp	(revision 110)
@@ -20,6 +20,6 @@
 
 #undef  FUNCTION
-#define FUNCTION "Free_List_unit::statistics_declaration"
-  void Free_List_unit::statistics_declaration (morpheo::behavioural::Parameters_Statistics * param_statistics)
+#define FUNCTION "Free_List_unit::statistics_allocation"
+  void Free_List_unit::statistics_allocation (morpheo::behavioural::Parameters_Statistics * param_statistics)
   {
     log_printf(FUNC,Free_List_unit,FUNCTION,"Begin");
@@ -28,5 +28,56 @@
 		      "Free_List_unit",
 		      param_statistics);
+
+    std::string sum_bank_gpr_nb_elt = "0";
+    _stat_bank_gpr_nb_elt = new counter_t * [_param->_nb_bank];
     
+    for (uint32_t i=0; i<_param->_nb_bank; ++i)
+      {
+        std::string str = "bank_gpr_nb_elt_"+toString(i);
+        
+        sum_bank_gpr_nb_elt = "+ "+str+" "+sum_bank_gpr_nb_elt;
+        
+        _stat_bank_gpr_nb_elt [i]  = _stat->create_variable(str);
+        
+        _stat->create_expr_average_by_cycle("average_occupation_bank_gpr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
+        _stat->create_expr_percent         ("percent_occupation_bank_gpr_"+toString(i) , "average_occupation_bank_gpr_"+toString(i), toString(_param->_bank_gpr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
+      }
+
+    _stat->create_expr_average_by_cycle("average_occupation_bank_gpr", sum_bank_gpr_nb_elt, "", _("Average free list occupation (bank all)"));
+    _stat->create_expr_percent         ("percent_occupation_bank_gpr", "average_occupation_bank_gpr", toString(_param->_bank_gpr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
+    
+    std::string sum_bank_spr_nb_elt = "0";
+    _stat_bank_spr_nb_elt = new counter_t * [_param->_nb_bank];
+
+    for (uint32_t i=0; i<_param->_nb_bank; ++i)
+      {
+        std::string str = "bank_spr_nb_elt_"+toString(i);
+        
+        sum_bank_spr_nb_elt = "+ "+str+" "+sum_bank_spr_nb_elt;
+        
+        _stat_bank_spr_nb_elt [i]  = _stat->create_variable(str);
+        
+        _stat->create_expr_average_by_cycle("average_occupation_bank_spr_"+toString(i), str, "", toString(_("Average free list occupation (bank %d)"),i));
+        _stat->create_expr_percent         ("percent_occupation_bank_spr_"+toString(i) , "average_occupation_bank_spr_"+toString(i), toString(_param->_bank_spr_nb_slot), toString(_("Percent free list occupation (bank %d)"),i));
+      }
+
+    _stat->create_expr_average_by_cycle("average_occupation_bank_spr", sum_bank_spr_nb_elt, "", _("Average free list occupation (bank all)"));
+    _stat->create_expr_percent         ("percent_occupation_bank_spr", "average_occupation_bank_spr", toString(_param->_bank_spr_nb_slot*_param->_nb_bank), _("Percent free list occupation (bank all)"));
+
+    _stat_nb_inst_pop      = _stat->create_variable("nb_inst_pop"     );
+    _stat_nb_inst_pop_gpr  = _stat->create_variable("nb_inst_pop_gpr" );
+    _stat_nb_inst_pop_spr  = _stat->create_variable("nb_inst_pop_spr" );
+    _stat_nb_inst_push_gpr = _stat->create_variable("nb_inst_push_gpr");
+    _stat_nb_inst_push_spr = _stat->create_variable("nb_inst_push_spr");
+    
+    _stat->create_expr_average_by_cycle("average_use_interface_pop"     , "nb_inst_pop"     , "", _("Average instruction per cycle on pop interface"));
+    _stat->create_expr_average_by_cycle("average_use_interface_pop_gpr" , "nb_inst_pop_gpr" , "", _("Average instruction per cycle on pop interface for gpr"));
+    _stat->create_expr_average_by_cycle("average_use_interface_pop_spr" , "nb_inst_pop_spr" , "", _("Average instruction per cycle on pop interface for spr"));
+    _stat->create_expr_average_by_cycle("average_use_interface_push_gpr", "nb_inst_push_gpr", "", _("Average instruction per cycle on push_gpr interface"));
+    _stat->create_expr_average_by_cycle("average_use_interface_push_spr", "nb_inst_push_spr", "", _("Average instruction per cycle on push_spr interface"));
+
+    _stat->create_expr_percent         ("percent_inst_pop_need_gpr"     , "nb_inst_pop_gpr" , "nb_inst_pop", _("Percent of pop instruction that need gpr"));
+    _stat->create_expr_percent         ("percent_inst_pop_need_spr"     , "nb_inst_pop_spr" , "nb_inst_pop", _("Percent of pop instruction that need spr"));
+
     log_printf(FUNC,Free_List_unit,FUNCTION,"End");
   };
