Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h	(revision 136)
@@ -56,7 +56,7 @@
   private   : counter_t                      * _stat_use_queue;
 
-  private   : counter_t                      * _stat_sum_inst_enable;
-  private   : counter_t                      * _stat_sum_transaction_decod_in;
-  private   : counter_t                      * _stat_average_occupation_bundle;
+  private   : counter_t                      * _stat_decode_in_empty  ;
+  private   : counter_t                      * _stat_decode_in_full   ;
+  private   : counter_t                      * _stat_decode_in_average;
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp	(revision 136)
@@ -51,21 +51,20 @@
         {
 #ifdef STATISTICS
-          bool find = false;
-#endif
+	  uint32_t nb_decod_in = 0;
+#endif
+
           for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
             if (PORT_READ(in_DECOD_IN_VAL [i]) and internal_DECOD_IN_ACK[i])
               {
                 log_printf(TRACE,Decod_queue,FUNCTION,_("  * DECOD_IN  [%d]"),i);
-                
+               
+#ifdef STATISTICS
+		nb_decod_in ++;
+#endif
+ 
                 // Create entry
                 decod_queue_entry_t * entry = new decod_queue_entry_t (1);
                 reg_QUEUE[reg_NUM_BANK_TAIL].push_back(entry);
                 
-#ifdef STATISTICS
-                find = true;
-                if (usage_is_set(_usage,USE_STATISTICS))
-                  (*_stat_sum_inst_enable) ++;
-#endif
-
 		Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_IN_CONTEXT_ID [i]):0;
 
@@ -107,7 +106,18 @@
 
 #ifdef STATISTICS
-          if (usage_is_set(_usage,USE_STATISTICS))
-            if (find)
-              (*_stat_sum_transaction_decod_in) ++;
+	if (usage_is_set(_usage,USE_STATISTICS))
+	  {
+	    if (nb_decod_in > 0)
+	      {
+		if (nb_decod_in == _param->_nb_inst_decod)
+		  (*_stat_decode_in_full) ++;
+		else
+		  (*_stat_decode_in_average) += nb_decod_in;
+	      }
+	    else
+	      {
+		(*_stat_decode_in_empty) ++;
+	      }
+	  }
 #endif
         }
@@ -208,7 +218,7 @@
       {	
         for (uint32_t i=0; i<_param->_nb_bank; ++i)
-          *(_stat_use_queue) += reg_QUEUE[i].size();
+          (*_stat_use_queue) += reg_QUEUE[i].size();
         for (uint32_t i=0; i<_param->_nb_context; i++)
-          *(_stat_nb_inst [i]) += reg_NB_INST [i];
+          (*_stat_nb_inst [i]) += reg_NB_INST [i];
       }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp	(revision 136)
@@ -46,5 +46,11 @@
 	//-----[ DECOD_IN ]---------------------------------------------------
 	//--------------------------------------------------------------------	
+	{
         decod_queue_entry_t * entry = NULL;
+
+#ifdef STATISTICS
+	uint32_t nb_decod_in = 0;
+#endif
+
         for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
 	  {
@@ -58,14 +64,8 @@
                    entry = new decod_queue_entry_t (_param->_nb_inst_decod);
                    reg_QUEUE->push_back(entry);
-
-#ifdef STATISTICS
-                   if (usage_is_set(_usage,USE_STATISTICS))
-                     (*_stat_sum_transaction_decod_in) ++;
-#endif
                  }
 
 #ifdef STATISTICS
-                if (usage_is_set(_usage,USE_STATISTICS))
-                  (*_stat_sum_inst_enable) ++;
+		nb_decod_in ++;
 #endif
 
@@ -106,4 +106,22 @@
 	      }
 	  }
+
+#ifdef STATISTICS
+	if (usage_is_set(_usage,USE_STATISTICS))
+	  {
+	    if (nb_decod_in > 0)
+	      {
+		if (nb_decod_in == _param->_nb_inst_decod)
+		  (*_stat_decode_in_full) ++;
+		else
+		  (*_stat_decode_in_average) += nb_decod_in;
+	      }
+	    else
+	      {
+		(*_stat_decode_in_empty) ++;
+	      }
+	  }
+#endif
+	}
 
 	//--------------------------------------------------------------------
@@ -217,7 +235,7 @@
     if (usage_is_set(_usage,USE_STATISTICS))
       {	
-        *(_stat_use_queue) += reg_QUEUE->size();
+        (*_stat_use_queue) += reg_QUEUE->size();
         for (uint32_t i=0; i<_param->_nb_context; i++)
-          *(_stat_nb_inst [i]) += reg_NB_INST [i];
+          (*_stat_nb_inst [i]) += reg_NB_INST [i];
       }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_statistics_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_statistics_allocation.cpp	(revision 135)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_statistics_allocation.cpp	(revision 136)
@@ -17,5 +17,4 @@
 namespace decod_queue {
 
-
 #undef  FUNCTION
 #define FUNCTION "Decod_queue::statistics_allocation"
@@ -29,10 +28,10 @@
 		      param_statistics);
 
-    _stat_sum_transaction_decod_in = _stat->create_variable("sum_transaction_decod_in");
-    _stat_sum_inst_enable          = _stat->create_variable("sum_inst_enable");
-    _stat_average_occupation_bundle= _stat->create_counter ("average_occupation_bundle", "", "Occupation average of instruction's bundle.");
+    _stat_decode_in_empty          = _stat->create_counter ("decode_in_empty"  , "", "Number cycle with no input instruction.");
+    _stat_decode_in_full           = _stat->create_counter ("decode_in_full"   , "", toString("Number cycle with full input instruction (%d).",_param->_nb_inst_decod));
+    _stat_decode_in_average        = _stat->create_counter ("decode_in_average", "", "Average decod instruction.");
 
-    _stat->create_expr                 ("average_occupation_bundle" ,"/ sum_inst_enable sum_transaction_decod_in");
-    _stat->create_expr_percent         ("percent_occupation_bundle" ,"average_occupation_bundle", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation.");
+    _stat->create_expr_average_by_cycle("average_decod_in", toString("+ * decode_in_full %d decode_in_average",_param->_nb_inst_decod), "", "Average instruction from decode unit");
+    _stat->create_expr_percent         ("percent_decod_in" ,"average_decod_in", toString(_param->_nb_inst_decod),"Percent of instruction's bundle occupation.");
 
     _stat_use_queue = _stat->create_variable ("use_queue");
