Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h	(revision 141)
@@ -56,5 +56,5 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
-  public    : counter_t                      * _stat_sum_inst_decod;
+  public    : counters_t                     * _stat_nb_inst_decod;
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_statistics_allocation.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_statistics_allocation.cpp	(revision 141)
@@ -28,9 +28,9 @@
 		      param_statistics);
 
-    _stat_sum_inst_decod = _stat->create_variable("sum_inst_decod");
-    
-    
-    _stat->create_expr_average_by_cycle ("average_nb_inst_decod","sum_inst_decod","","Average of decod instruction by cycle");
-    _stat->create_expr_percent          ("percent_nb_inst_decod","average_nb_inst_decod", toString(_param->_nb_inst_decod), "Percent of decod instruction by cycle");
+    _stat_nb_inst_decod = _stat->create_counters("nb_inst_decod",_param->_nb_inst_decod,"",
+                                                 _("Cycle number with %d decoded instruction(s)."),
+                                                 _("Percent of cycle number with %d decoded instruction(s)."),
+                                                 _("Average of decoded instructions.")
+                                                 );
  
     log_printf(FUNC,Decod,FUNCTION,"End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp	(revision 141)
@@ -53,7 +53,11 @@
 #ifdef STATISTICS
         if (usage_is_set(_usage,USE_STATISTICS))
-          for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
-            if (internal_DECOD_VAL [i] and PORT_READ(in_DECOD_ACK[i]))
-              (*_stat_sum_inst_decod) ++;
+          {
+            uint32_t stat_nb_inst_decod = 0;
+            for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
+              if (internal_DECOD_VAL [i] and PORT_READ(in_DECOD_ACK[i]))
+                stat_nb_inst_decod ++;
+            (*_stat_nb_inst_decod) += stat_nb_inst_decod;
+          }
 #endif
       }
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h	(revision 141)
@@ -55,8 +55,8 @@
   private   : counter_t                      * _sum_use_queue_error_wait_rsp;
 
-  private   : counter_t                      * _sum_inst_enable;
   private   : counter_t                      * _sum_transaction_address;
 
-  private   : counter_t                      * _average_occupation_bundle;
+  private   : counters_t                     * _stat_nb_inst_fetch;
+    
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_full_assoc_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_full_assoc_transition.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_full_assoc_transition.cpp	(revision 141)
@@ -51,4 +51,8 @@
 	// =====[ ADDRESS ]==========================================
 	// ==========================================================
+#ifdef STATISTICS
+        uint32_t stat_nb_inst_fetch=0;
+#endif
+
 	if (PORT_READ(in_ADDRESS_VAL) and internal_ADDRESS_ACK)
 	  {
@@ -70,6 +74,5 @@
 		Tcontrol_t enable = PORT_READ(in_ADDRESS_INSTRUCTION_ENABLE [i]);
 #ifdef STATISTICS
-                if (usage_is_set(_usage,USE_STATISTICS))
-                  (*_sum_inst_enable) += enable;
+                stat_nb_inst_fetch+=enable;
 #endif
 		_queue[reg_PTR_WRITE]->_instruction_enable [i]      = enable;
@@ -83,4 +86,10 @@
 	    reg_PTR_WRITE = (reg_PTR_WRITE+1)%_param->_size_queue;
 	  }
+
+#ifdef STATISTICS
+        if (usage_is_set(_usage,USE_STATISTICS))
+          (*_stat_nb_inst_fetch)+=stat_nb_inst_fetch;
+#endif
+
 
 	// ==========================================================
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_no_assoc_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_no_assoc_transition.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_function_no_assoc_transition.cpp	(revision 141)
@@ -51,4 +51,8 @@
 	// =====[ ADDRESS ]==========================================
 	// ==========================================================
+#ifdef STATISTICS
+        uint32_t stat_nb_inst_fetch=0;
+#endif
+
 	if (PORT_READ(in_ADDRESS_VAL) and internal_ADDRESS_ACK)
 	  {
@@ -70,6 +74,5 @@
 		Tcontrol_t enable = PORT_READ(in_ADDRESS_INSTRUCTION_ENABLE [i]);
 #ifdef STATISTICS
-                if (usage_is_set(_usage,USE_STATISTICS))
-                  (*_sum_inst_enable) += enable;
+                 stat_nb_inst_fetch += enable;
 #endif
 		_queue[reg_PTR_WRITE]->_instruction_enable [i]      = enable;
@@ -83,4 +86,8 @@
 	    reg_PTR_WRITE = (reg_PTR_WRITE+1)%_param->_size_queue;
 	  }
+#ifdef STATISTICS
+        if (usage_is_set(_usage,USE_STATISTICS))
+          (*_stat_nb_inst_fetch) += stat_nb_inst_fetch;
+#endif
 
 	// ==========================================================
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_statistics_allocation.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_statistics_allocation.cpp	(revision 141)
@@ -34,10 +34,5 @@
     _sum_use_queue_have_rsp       = _stat->create_variable("sum_use_queue_have_rsp");
     _sum_use_queue_error_wait_rsp = _stat->create_variable("sum_use_queue_error_wait_rsp");
-    _sum_inst_enable              = _stat->create_variable("sum_inst_enable");
 
-    _average_occupation_bundle    = _stat->create_counter ("average_occupation_bundle", "", "Occupation average of instruction's bundle.");
-
-    _stat->create_expr                 ("average_occupation_bundle" ,"/ sum_inst_enable sum_transaction_address");
-    _stat->create_expr_percent         ("percent_occupation_bundle" ,"average_occupation_bundle", toString(_param->_nb_instruction),"Percent of instruction's bundle occupation.");
     _stat->create_expr                 ("sum_use_queue"             ,"+ + sum_use_queue_wait_rsp sum_use_queue_have_rsp sum_use_queue_error_wait_rsp");
     _stat->create_expr_average_by_cycle("average_use_queue"               ,"sum_use_queue"               ,"","Average occupation of ifetch queue");
@@ -48,4 +43,10 @@
 
     _stat->create_expr_average         ("average_miss_icache"             ,"+ sum_use_queue_wait_rsp sum_use_queue_error_wait_rsp", "sum_transaction_address", "", "Average Miss Instruction Cache");
+
+    _stat_nb_inst_fetch     = _stat->create_counters("nb_inst_fetch",_param->_nb_instruction,"",
+                                                     _("Number bundle with %d instruction(s)."),
+                                                     _("Percent of bundle with %d instruction(s)."),
+                                                     _("Average instruction in a bundle.")
+                                                     );
 
     log_printf(FUNC,Ifetch_queue,FUNCTION,"End");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h	(revision 141)
@@ -55,7 +55,9 @@
 #ifdef STATISTICS
   public    : Stat                           * _stat;
-  public    : counter_t                     ** _stat_nb_inst_insert               ;//[nb_rename_unit]
-  public    : counter_t                     ** _stat_nb_inst_retire               ;//[nb_rename_unit]
-  public    : counter_t                      * _stat_nb_inst_commit               ;
+
+  public    : counters_t                    ** _stat_nb_inst_insert               ;//[nb_rename_unit]
+  public    : counters_t                    ** _stat_nb_inst_retire               ;//[nb_rename_unit]
+  public    : counters_t                    ** _stat_nb_inst_commit               ;//[nb_rename_unit]
+
   public    : counter_t                      * _stat_nb_inst_commit_conflit_access;
   public    : counter_t                     ** _stat_nb_inst_retire_ok            ;//[nb_thread]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_allocation.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_allocation.cpp	(revision 141)
@@ -48,6 +48,4 @@
     }
 
-    _stat_nb_inst_insert         = new counter_t * [_param->_nb_rename_unit];
-    _stat_nb_inst_retire         = new counter_t * [_param->_nb_rename_unit];
     _stat_nb_inst_retire_ok      = new counter_t * [_param->_nb_thread];
     _stat_nb_inst_retire_ko      = new counter_t * [_param->_nb_thread];
@@ -55,26 +53,4 @@
     _stat_nb_inst_type           = new counter_t * [_param->_nb_type];
     _stat_bank_nb_inst           = new counter_t * [_param->_nb_bank];
-
-    {
-      std::string sum_nb_inst_insert    = "0";
-      std::string sum_nb_inst_retire    = "0";
-
-      for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
-	{
-	  _stat_nb_inst_insert    [i] = _stat->create_variable("nb_inst_insert_"   +toString(i));
-	  _stat_nb_inst_retire    [i] = _stat->create_variable("nb_inst_retire_"   +toString(i));
-	  
-	  _stat->create_expr_average_by_cycle("average_use_interface_insert_"+toString(i), "nb_inst_insert_"+toString(i), "", toString(_("Average instruction by cycle on insert interface (rename_unit %d)"),i));
-	  _stat->create_expr_average_by_cycle("average_use_interface_retire_"+toString(i), "nb_inst_retire_"+toString(i), "", toString(_("Average instruction by cycle on retire interface (rename_unit %d)"),i));
-	  _stat->create_expr_percent         ("percent_use_interface_insert_"+toString(i) , "average_use_interface_insert_"+toString(i), toString(_param->_nb_inst_insert [i]), toString(_("Percent usage of insert interface (rename_unit %d)"),i));
-	  _stat->create_expr_percent         ("percent_use_interface_retire_"+toString(i) , "average_use_interface_retire_"+toString(i), toString(_param->_nb_inst_retire [i]), toString(_("Percent usage of retire interface (rename_unit %d)"),i));
-
-          sum_nb_inst_insert    = "+ nb_inst_insert_"+   toString(i) + " " +sum_nb_inst_insert;
-          sum_nb_inst_retire    = "+ nb_inst_retire_"+   toString(i) + " " +sum_nb_inst_retire;
-        }
-
-      _stat->create_expr_average_by_cycle("average_inst_insert"   , sum_nb_inst_insert   , "", _("Average instruction insert by cycle"));
-      _stat->create_expr_average_by_cycle("average_inst_retire"   , sum_nb_inst_retire   , "", _("Average instruction retire by cycle"));
-    }
 
     {
@@ -163,12 +139,4 @@
 	}
     }
-
-    _stat_nb_inst_commit = _stat->create_variable("nb_inst_commit");
-    _stat->create_expr_average_by_cycle("average_use_interface_commit","nb_inst_commit", "", _("Average instruction by cycle on commit interface"));
-    _stat->create_expr_percent         ("percent_use_interface_commit", "average_use_interface_commit", toString(_param->_nb_inst_commit), _("Percent usage of commit interface"));
-
-    _stat_nb_inst_commit_conflit_access = _stat->create_variable("nb_inst_commit_conflit_access");
-    _stat->create_expr_average_by_cycle("average_use_interface_commit_conflit_access","nb_inst_commit_conflit_access", "", _("Average access conflit by cycle on commit interface"));
-    _stat->create_expr_percent         ("percent_use_interface_commit_conflit_access","average_use_interface_commit_conflit_access", "average_use_interface_commit", _("Percent access conflit on commit interface"));
 
     // bank/queue occupation
@@ -192,4 +160,36 @@
     }
 
+    _stat_nb_inst_insert         = new counters_t * [_param->_nb_rename_unit];
+    _stat_nb_inst_retire         = new counters_t * [_param->_nb_rename_unit];
+    _stat_nb_inst_commit         = new counters_t * [_param->_nb_rename_unit];
+
+    std::string average_nb_inst_commit = "0";
+    
+    for (uint32_t i=0; i<_param->_nb_rename_unit; i++)
+      {
+        _stat_nb_inst_insert [i] = _stat->create_counters("nb_inst_insert_"+toString(i),_param->_nb_inst_insert[i],"",
+                                                             _("Cycle number with %d instruction(s) included ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Percent of cycle number with %d instruction(s) included ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Average of instruction(s) included ")+toString(_("(rename_unit %d)."),i)
+                                                             );
+        
+        _stat_nb_inst_retire [i] = _stat->create_counters("nb_inst_retire_"+toString(i),_param->_nb_inst_retire[i],"",
+                                                             _("Cycle number with %d instruction(s) removed ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Percent of cycle number with %d instruction(s) removed ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Average of instruction(s) removed ")+toString(_("(rename_unit %d)."),i)
+                                                             );
+        
+        _stat_nb_inst_commit [i] = _stat->create_counters("nb_inst_commit_"+toString(i),_param->_nb_inst_commit,"",
+                                                             _("Cycle number with %d instruction(s) commited ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Percent of cycle number with %d instruction(s) commited ")+toString(_("(rename_unit %d)."),i),
+                                                             _("Average of instruction(s) commited "+toString(_("(rename_unit %d)."),i))
+                                                             );
+
+        average_nb_inst_commit = "+ average_nb_inst_commit_"+toString(i) + " " + average_nb_inst_commit;
+      }
+
+    _stat_nb_inst_commit_conflit_access = _stat->create_variable("nb_inst_commit_conflit_access");
+    _stat->create_expr_average_by_cycle("average_use_interface_commit_conflit_access","nb_inst_commit_conflit_access", "", _("Average access conflit by cycle on commit interface"));
+    _stat->create_expr_percent         ("percent_use_interface_commit_conflit_access","average_use_interface_commit_conflit_access", average_nb_inst_commit, _("Percent access conflit on commit interface"));
 
     log_end(Commit_unit,FUNCTION);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_deallocation.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_statistics_deallocation.cpp	(revision 141)
@@ -27,6 +27,4 @@
     delete _stat;
 
-    delete [] _stat_nb_inst_insert;
-    delete [] _stat_nb_inst_retire;
     delete [] _stat_nb_inst_retire_ok;
     delete [] _stat_nb_inst_retire_ko;
@@ -40,5 +38,8 @@
     delete [] _stat_nb_cycle_state_wait_end      ;
 
-    
+    delete [] _stat_nb_inst_insert;
+    delete [] _stat_nb_inst_retire;
+    delete [] _stat_nb_inst_commit;
+        
     log_end(Commit_unit,FUNCTION);
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp	(revision 140)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp	(revision 141)
@@ -89,4 +89,18 @@
     else
       {
+#ifdef STATISTICS
+        uint32_t stat_nb_inst_insert [_param->_nb_rename_unit];
+        uint32_t stat_nb_inst_retire [_param->_nb_rename_unit];
+        uint32_t stat_nb_inst_commit [_param->_nb_rename_unit];
+        
+        if (usage_is_set(_usage,USE_STATISTICS))
+          for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
+            {
+              stat_nb_inst_insert [i] = 0;
+              stat_nb_inst_retire [i] = 0;
+              stat_nb_inst_commit [i] = 0;
+            }
+#endif
+
         // Increase number idle cycle
 	for (uint32_t i=0; i<_param->_nb_front_end; i++)
@@ -354,5 +368,5 @@
 #ifdef STATISTICS
                       if (usage_is_set(_usage,USE_STATISTICS))
-                        (*_stat_nb_inst_insert [x]) ++;
+                        stat_nb_inst_insert [x] ++;
 #endif
                     
@@ -433,14 +447,13 @@
 		  {
 		    log_printf(TRACE,Commit_unit,FUNCTION,"  * COMMIT            [%d]",x);
+		    log_printf(TRACE,Commit_unit,FUNCTION,"    * num_bank              : %d",i);
+
+		    // find the good entry !!!
+		    entry_t *       entry        = internal_BANK_COMMIT_ENTRY [i][j];
 
 #ifdef STATISTICS
                     if (usage_is_set(_usage,USE_STATISTICS))
-                      (*_stat_nb_inst_commit) ++;
+                      stat_nb_inst_commit [entry->rename_unit_id] ++;
 #endif
-
-		    log_printf(TRACE,Commit_unit,FUNCTION,"    * num_bank              : %d",i);
-
-		    // find the good entry !!!
-		    entry_t *       entry        = internal_BANK_COMMIT_ENTRY [i][j];
 
 		    log_printf(TRACE,Commit_unit,FUNCTION,"    * ptr                   : %d",entry->ptr);
@@ -720,5 +733,5 @@
 #ifdef STATISTICS
                 if (usage_is_set(_usage,USE_STATISTICS))
-                  (*_stat_nb_inst_retire [x]) ++;
+                  stat_nb_inst_retire [x] ++;
 #endif
                 
@@ -1290,4 +1303,11 @@
                 }
             }
+
+        for (uint32_t i=0; i<_param->_nb_rename_unit; ++i)
+          {
+            (*_stat_nb_inst_insert [i]) += stat_nb_inst_insert [i];
+            (*_stat_nb_inst_retire [i]) += stat_nb_inst_retire [i];
+            (*_stat_nb_inst_commit [i]) += stat_nb_inst_commit [i];
+          }
       }
 #endif
