Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_transition.cpp	(revision 87)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_transition.cpp	(revision 88)
@@ -23,4 +23,5 @@
   {
     log_begin(Decod_queue,FUNCTION);
+    log_function(Decod_queue,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
@@ -35,18 +36,22 @@
 	//--------------------------------------------------------------------
 	//-----[ DECOD_IN ]---------------------------------------------------
-	//--------------------------------------------------------------------
-	for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
+	//--------------------------------------------------------------------	
+        decod_queue_entry_t * entry = NULL;
+        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
 	  {
-	    decod_queue_entry_t * entry = NULL;
 	    if (PORT_READ(in_DECOD_IN_VAL [i]) and internal_DECOD_IN_ACK[i])
 	      {
-		log_printf(TRACE,Decod_queue,FUNCTION,_("DECOD_IN  [%d]"),i);
+		log_printf(TRACE,Decod_queue,FUNCTION,_("  * DECOD_IN  [%d]"),i);
 
 		if (entry == NULL)
-		  entry = new decod_queue_entry_t (_param->_nb_inst_decod);
+                 {
+                   // Once creation and insert in queue
+                   entry = new decod_queue_entry_t (_param->_nb_inst_decod);
+                   reg_QUEUE->push_back(entry);
+                 }
 
 		Tcontext_t context = (_param->_have_port_context_id)?PORT_READ(in_DECOD_IN_CONTEXT_ID [i]):0;
 
-		log_printf(TRACE,Decod_queue,FUNCTION,_("  * context : %d"),context);
+		log_printf(TRACE,Decod_queue,FUNCTION,_("    * context : %d"),context);
 
 		entry->_val           [i] = 1;
@@ -55,4 +60,5 @@
 		entry->_type          [i] = PORT_READ(in_DECOD_IN_TYPE          [i]);
 		entry->_operation     [i] = PORT_READ(in_DECOD_IN_OPERATION     [i]);
+		entry->_no_execute    [i] = PORT_READ(in_DECOD_IN_NO_EXECUTE    [i]);
 		entry->_is_delay_slot [i] = PORT_READ(in_DECOD_IN_IS_DELAY_SLOT [i]);
 		entry->_address       [i] = PORT_READ(in_DECOD_IN_ADDRESS       [i]);
@@ -70,10 +76,10 @@
 		entry->_num_reg_re    [i] = PORT_READ(in_DECOD_IN_NUM_REG_RE    [i]);
 		entry->_exception_use [i] = PORT_READ(in_DECOD_IN_EXCEPTION_USE [i]);
+		entry->_exception     [i] = PORT_READ(in_DECOD_IN_EXCEPTION     [i]);
 
 		reg_NB_INST [context] ++;
-		reg_QUEUE->push_back(entry);
 
-		log_printf(TRACE,Decod_queue,FUNCTION,_("  * nb_inst : %d"),reg_NB_INST [context]);
-		log_printf(TRACE,Decod_queue,FUNCTION,_("  * PUSH queue"));
+		log_printf(TRACE,Decod_queue,FUNCTION,_("    * nb_inst : %d"),reg_NB_INST [context]);
+		log_printf(TRACE,Decod_queue,FUNCTION,_("    * PUSH queue"));
 	      }
 	  }
@@ -91,13 +97,13 @@
 		if (internal_DECOD_OUT_VAL [i] and internal_DECOD_OUT_ACK[i])
 		  {
-		    log_printf(TRACE,Decod_queue,FUNCTION,_("DECOD_OUT [%d]"),i);
+		    log_printf(TRACE,Decod_queue,FUNCTION,_("  * DECOD_OUT [%d]"),i);
 		
 		    reg_QUEUE->front()->_val [i] = 0;
 
 		    Tcontext_t context = reg_QUEUE->front()->_context_id [i];
-		    log_printf(TRACE,Decod_queue,FUNCTION,_("  * context : %d"),context);
+		    log_printf(TRACE,Decod_queue,FUNCTION,_("    * context : %d"),context);
 		    
 		    reg_NB_INST [context] --;
-		    log_printf(TRACE,Decod_queue,FUNCTION,_("  * nb_inst : %d"),reg_NB_INST [context]);
+		    log_printf(TRACE,Decod_queue,FUNCTION,_("    * nb_inst : %d"),reg_NB_INST [context]);
 		  }
 		// Test if slot is (again) valid, if yes, then have less one instruction in the entry
@@ -108,5 +114,5 @@
 	    if (not find) // no valid instruction in current slot
 	      {
-		log_printf(TRACE,Decod_queue,FUNCTION,_("  * POP  queue"));
+		log_printf(TRACE,Decod_queue,FUNCTION,_("    * POP  queue"));
 
 		// can pop the slot
@@ -117,5 +123,6 @@
       }
 
-#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Decod_queue)
+#if defined(DEBUG) and defined(DEBUG_Decod_queue) and (DEBUG >= DEBUG_TRACE)
+    log_printf(TRACE,Decod_queue,FUNCTION,"  * Dump decod_queue");
     uint32_t x=0;
     for (std::list<decod_queue_entry_t*>::iterator it=reg_QUEUE->begin();
@@ -123,10 +130,10 @@
 	 it++)
       {
-	log_printf(TRACE,Decod_queue,FUNCTION,"[%d] ",x);
+	log_printf(TRACE,Decod_queue,FUNCTION,"    * [%d] ",x);
 
 	for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
 	  {
 	    if ((*it)->_val [i])
-	      log_printf(TRACE,Decod_queue,FUNCTION," * [%d] %d, %d %d, %d %d %d, 0x%x, %d 0x%x, %d %d, %d %d, %d %d, %d %d, %d %d, %d "
+	      log_printf(TRACE,Decod_queue,FUNCTION,"      * [%d] %d, %d %d, %d %d %d %d, 0x%x, %d 0x%x, %d %d, %d %d, %d %d, %d %d, %d %d, %d %d"
 			 ,i
 			 ,(*it)->_val           [i]
@@ -135,4 +142,5 @@
 			 ,(*it)->_type          [i]
 			 ,(*it)->_operation     [i]
+			 ,(*it)->_no_execute    [i]
 			 ,(*it)->_is_delay_slot [i]
 			 ,(*it)->_address       [i]
@@ -150,7 +158,8 @@
 			 ,(*it)->_num_reg_re    [i]
 			 ,(*it)->_exception_use [i]
+			 ,(*it)->_exception     [i]
 			 );
 	    else
-	      log_printf(TRACE,Decod_queue,FUNCTION," * [%d] %d"
+	      log_printf(TRACE,Decod_queue,FUNCTION,"      * [%d] %d"
 			 ,i
 			 ,(*it)->_val           [i]
@@ -163,6 +172,10 @@
     
 #ifdef STATISTICS
-    for (uint32_t i=0; i<_param->_nb_context; i++)
-      *(_stat_nb_inst [i]) += reg_NB_INST [i];
+    if (usage_is_set(_usage,USE_STATISTICS))
+      {	
+        *(_stat_use_queue) += reg_QUEUE->size();
+        for (uint32_t i=0; i<_param->_nb_context; i++)
+          *(_stat_nb_inst [i]) += reg_NB_INST [i];
+      }
 #endif
 
