Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Types.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Types.h	(revision 137)
@@ -36,5 +36,8 @@
 //  Tdepth_t            _depth             ;
 		        		   
-    // set by decod     		   
+    // set by decod     	
+#ifdef STATISTICS
+    uint32_t            _opcod             ;
+#endif
     Ttype_t             _type              ;
     Toperation_t        _operation         ;
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/src/Instruction.cpp	(revision 137)
@@ -215,12 +215,76 @@
     switch (opcod)
       {
-      case OPCOD_L_CUST1 : {inst->_type = instruction_information(INSTRUCTION_L_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST1)._operation; break;}
-      case OPCOD_L_CUST2 : {inst->_type = instruction_information(INSTRUCTION_L_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST2)._operation; break;}
-      case OPCOD_L_CUST3 : {inst->_type = instruction_information(INSTRUCTION_L_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST3)._operation; break;}
-      case OPCOD_L_CUST4 : {inst->_type = instruction_information(INSTRUCTION_L_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST4)._operation; break;}
-      case OPCOD_L_CUST5 : {inst->_type = instruction_information(INSTRUCTION_L_CUST5)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST5)._operation; break;}
-      case OPCOD_L_CUST6 : {inst->_type = instruction_information(INSTRUCTION_L_CUST6)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST6)._operation; break;}
-      case OPCOD_L_CUST7 : {inst->_type = instruction_information(INSTRUCTION_L_CUST7)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST7)._operation; break;}
-      case OPCOD_L_CUST8 : {inst->_type = instruction_information(INSTRUCTION_L_CUST8)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST8)._operation; break;}
+      case OPCOD_L_CUST1 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST1; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST1)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST1)._operation;
+	  break;
+	}
+      case OPCOD_L_CUST2 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST2; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST2)._type;
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST2)._operation;
+	  break;
+	}
+      case OPCOD_L_CUST3 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST3; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST3)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST3)._operation; 
+	  break;
+	}
+      case OPCOD_L_CUST4 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST4; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST4)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST4)._operation; 
+	  break;
+	}
+      case OPCOD_L_CUST5 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST5; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST5)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST5)._operation; 
+	  break;
+	}
+      case OPCOD_L_CUST6 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST6; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST6)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST6)._operation; 
+	  break;
+	}
+      case OPCOD_L_CUST7 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST7; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST7)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST7)._operation; 
+	  break;
+	}
+      case OPCOD_L_CUST8 : 
+	{
+#ifdef STATISTICS
+	  inst->_opcod     =                         INSTRUCTION_L_CUST8; 
+#endif
+	  inst->_type      = instruction_information(INSTRUCTION_L_CUST8)._type; 
+	  inst->_operation = instruction_information(INSTRUCTION_L_CUST8)._operation; 
+	  break;
+	}
 
       default            : {throw ERRORMORPHEO("instruction_l_custom",_("Invalid Custom Opcod."));}
@@ -240,6 +304,22 @@
     switch (opcod)
       {
-//       case OPCOD_LF_CUST1_D : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_D)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_D)._operation; break;}
-//       case OPCOD_LF_CUST1_S : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_S)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_S)._operation; break;}
+//       case OPCOD_LF_CUST1_D : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LF_CUST1_D; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LF_CUST1_D)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_D)._operation;
+// 	  break;
+// 	}
+//       case OPCOD_LF_CUST1_S : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LF_CUST1_S; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LF_CUST1_S)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_S)._operation;
+// 	  break;
+// 	}
       default               : {throw ERRORMORPHEO("instruction_lf_custom",_("Invalid Custom Opcod."));}
       }
@@ -258,8 +338,40 @@
     switch (opcod)
       {
-//       case OPCOD_LV_CUST1 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST1)._operation; break;}
-//       case OPCOD_LV_CUST2 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST2)._operation; break;}
-//       case OPCOD_LV_CUST3 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST3)._operation; break;}
-//       case OPCOD_LV_CUST4 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST4)._operation; break;}
+//       case OPCOD_LV_CUST1 : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LV_CUST1; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LV_CUST1)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LV_CUST1)._operation;
+// 	  break;
+// 	}
+//       case OPCOD_LV_CUST2 : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LV_CUST2; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LV_CUST2)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LV_CUST2)._operation;
+// 	  break;
+// 	}
+//       case OPCOD_LV_CUST3 : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LV_CUST3; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LV_CUST3)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LV_CUST3)._operation;
+// 	  break;
+// 	}
+//       case OPCOD_LV_CUST4 : 
+// 	{
+// #ifdef STATISTICS
+// 	  inst->_opcod     =                         INSTRUCTION_LV_CUST4; 
+// #endif
+// 	  inst->_type      = instruction_information(INSTRUCTION_LV_CUST4)._type; 
+// 	  inst->_operation = instruction_information(INSTRUCTION_LV_CUST4)._operation;
+// 	  break;
+// 	}
       default             : {throw ERRORMORPHEO("instruction_lv_custom",_("Invalid Custom Opcod."));}
       }
@@ -324,4 +436,7 @@
   {
     log_printf(TRACE,Decod,"instruction_l_add","  * instruction   : l.add");
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ADD; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ADD)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ADD)._operation; //OPERATION_ALU_L_ADD;
@@ -352,4 +467,7 @@
     log_printf(TRACE,Decod,"instruction_l_addc","  * instruction   : l.addc");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ADDC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ADDC)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ADDC)._operation; //OPERATION_ALU_L_ADD;
@@ -380,4 +498,7 @@
     log_printf(TRACE,Decod,"instruction_l_addi","  * instruction   : l.addi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ADDI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ADDI)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ADDI)._operation; //OPERATION_ALU_L_ADD;
@@ -408,4 +529,7 @@
     log_printf(TRACE,Decod,"instruction_l_addic","  * instruction   : l.addic");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ADDIC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ADDIC)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ADDIC)._operation; //OPERATION_ALU_L_ADD;
@@ -436,4 +560,7 @@
     log_printf(TRACE,Decod,"instruction_l_and","  * instruction   : l.and");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_AND; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_AND)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_AND)._operation; //OPERATION_ALU_L_AND;
@@ -464,4 +591,7 @@
     log_printf(TRACE,Decod,"instruction_l_andi","  * instruction   : l.andi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ANDI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ANDI)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ANDI)._operation; //OPERATION_ALU_L_AND;
@@ -495,4 +625,7 @@
                                                    );
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_BF; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_BF)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_BF)._operation; //OPERATION_BRANCH_L_TEST_F;
@@ -527,4 +660,7 @@
                                                    );
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_BNF; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_BNF)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_BNF)._operation; //OPERATION_BRANCH_L_TEST_NF;
@@ -555,4 +691,7 @@
     log_printf(TRACE,Decod,"instruction_l_cmov","  * instruction   : l.cmov");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_CMOV; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_CMOV)._type     ; //TYPE_MOVE;
     inst->_operation          = instruction_information(INSTRUCTION_L_CMOV)._operation; //OPERATION_MOVE_L_CMOV;
@@ -589,4 +728,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_CSYNC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_CSYNC)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_CSYNC)._operation; //OPERATION_SPECIAL_L_CSYNC;
@@ -627,4 +769,7 @@
     log_printf(TRACE,Decod,"instruction_l_div","  * instruction   : l.div");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_DIV; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_DIV)._type     ; //TYPE_DIV;
     inst->_operation          = instruction_information(INSTRUCTION_L_DIV)._operation; //OPERATION_DIV_L_DIV;
@@ -655,4 +800,7 @@
     log_printf(TRACE,Decod,"instruction_l_divu","  * instruction   : l.divu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_DIVU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_DIVU)._type     ; //TYPE_DIV;
     inst->_operation          = instruction_information(INSTRUCTION_L_DIVU)._operation; //OPERATION_DIV_L_DIVU;
@@ -683,4 +831,7 @@
     log_printf(TRACE,Decod,"instruction_l_extbs","  * instruction   : l.extbs");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTBS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTBS)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTBS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
@@ -711,4 +862,7 @@
     log_printf(TRACE,Decod,"instruction_l_extbz","  * instruction   : l.extbz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTBZ;
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTBZ)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTBZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
@@ -739,4 +893,7 @@
     log_printf(TRACE,Decod,"instruction_l_exths","  * instruction   : l.exths");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTHS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTHS)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTHS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
@@ -767,4 +924,7 @@
     log_printf(TRACE,Decod,"instruction_l_exthz","  * instruction   : l.exthz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTHZ;
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTHZ)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTHZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
@@ -795,4 +955,7 @@
     log_printf(TRACE,Decod,"instruction_l_extws","  * instruction   : l.extws");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTWS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTWS)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTWS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
@@ -823,4 +986,7 @@
     log_printf(TRACE,Decod,"instruction_l_extwz","  * instruction   : l.extwz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_EXTWZ; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_EXTWZ)._type     ; //TYPE_EXTEND;
     inst->_operation          = instruction_information(INSTRUCTION_L_EXTWZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
@@ -851,4 +1017,7 @@
     log_printf(TRACE,Decod,"instruction_l_ff1","  * instruction   : l.ff1");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_FF1; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_FF1)._type     ; //TYPE_FIND;
     inst->_operation          = instruction_information(INSTRUCTION_L_FF1)._operation; //OPERATION_FIND_L_FF1;
@@ -879,4 +1048,7 @@
     log_printf(TRACE,Decod,"instruction_l_fl1","  * instruction   : l.fl1");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_FL1; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_FL1)._type     ; //TYPE_FIND;
     inst->_operation          = instruction_information(INSTRUCTION_L_FL1)._operation; //OPERATION_FIND_L_FL1;
@@ -907,4 +1079,7 @@
     log_printf(TRACE,Decod,"instruction_l_j","  * instruction   : l.j");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_J; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_J)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_J)._operation; //OPERATION_BRANCH_NONE;
@@ -936,4 +1111,7 @@
     log_printf(TRACE,Decod,"instruction_l_jal","  * instruction   : l.jal");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_JAL; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_JAL)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_JAL)._operation; //OPERATION_BRANCH_L_JALR;
@@ -973,4 +1151,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_JALR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_JALR)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_JALR)._operation; //OPERATION_BRANCH_L_JALR;
@@ -1003,4 +1184,7 @@
     log_printf(TRACE,Decod,"instruction_l_jr","  * instruction   : l.jr");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_JR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_JR)._type     ; //TYPE_BRANCH;
     inst->_operation          = instruction_information(INSTRUCTION_L_JR)._operation; //OPERATION_BRANCH_L_JALR;
@@ -1031,4 +1215,7 @@
     log_printf(TRACE,Decod,"instruction_l_lbs","  * instruction   : l.lbs");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LBS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LBS)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LBS)._operation; //OPERATION_MEMORY_LOAD_8_S;
@@ -1059,4 +1246,7 @@
     log_printf(TRACE,Decod,"instruction_l_lbz","  * instruction   : l.lbz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LBZ; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LBZ)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LBZ)._operation; //OPERATION_MEMORY_LOAD_8_Z;
@@ -1087,4 +1277,7 @@
     log_printf(TRACE,Decod,"instruction_l_ld","  * instruction   : l.ld");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LD; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LD)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LD)._operation; //OPERATION_MEMORY_LOAD_64_S;
@@ -1115,4 +1308,7 @@
     log_printf(TRACE,Decod,"instruction_l_lhs","  * instruction   : l.lhs");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LHS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LHS)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LHS)._operation; //OPERATION_MEMORY_LOAD_16_S;
@@ -1143,4 +1339,7 @@
     log_printf(TRACE,Decod,"instruction_l_lhz","  * instruction   : l.lhz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LHZ; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LHZ)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LHZ)._operation; //OPERATION_MEMORY_LOAD_16_Z;
@@ -1171,4 +1370,7 @@
     log_printf(TRACE,Decod,"instruction_l_lws","  * instruction   : l.lws");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LWS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LWS)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LWS)._operation; //OPERATION_MEMORY_LOAD_32_S;
@@ -1199,4 +1401,7 @@
     log_printf(TRACE,Decod,"instruction_l_lwz","  * instruction   : l.lwz");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_LWZ; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_LWZ)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_LWZ)._operation; //OPERATION_MEMORY_LOAD_32_Z;
@@ -1227,4 +1432,7 @@
     log_printf(TRACE,Decod,"instruction_l_mac","  * instruction   : l.mac");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MAC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MAC)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MAC)._operation; //OPERATION_SPECIAL_L_MAC;
@@ -1255,4 +1463,7 @@
     log_printf(TRACE,Decod,"instruction_l_maci","  * instruction   : l.maci");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MACI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MACI)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MACI)._operation; //OPERATION_SPECIAL_L_MAC;
@@ -1290,4 +1501,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MACRC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MACRC)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MACRC)._operation; //OPERATION_SPECIAL_L_MACRC;
@@ -1319,4 +1533,7 @@
     log_printf(TRACE,Decod,"instruction_l_mfspr","  * instruction   : l.mfspr");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MFSPR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MFSPR)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MFSPR)._operation; //OPERATION_SPECIAL_L_MFSPR;
@@ -1347,4 +1564,7 @@
     log_printf(TRACE,Decod,"instruction_l_movhi","  * instruction   : l.movhi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MOVHI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MOVHI)._type     ; //TYPE_MOVE;
     inst->_operation          = instruction_information(INSTRUCTION_L_MOVHI)._operation; //OPERATION_MOVE_L_MOVHI;
@@ -1375,4 +1595,7 @@
     log_printf(TRACE,Decod,"instruction_l_msb","  * instruction   : l.msb");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MSB; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MSB)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MSB)._operation; //OPERATION_SPECIAL_L_MSB;
@@ -1409,4 +1632,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MSYNC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MSYNC)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MSYNC)._operation; //OPERATION_SPECIAL_L_MSYNC;
@@ -1438,4 +1664,7 @@
     log_printf(TRACE,Decod,"instruction_l_mtspr","  * instruction   : l.mtspr");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MTSPR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MTSPR)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MTSPR)._operation; //OPERATION_SPECIAL_L_MTSPR;
@@ -1467,4 +1696,7 @@
     log_printf(TRACE,Decod,"instruction_l_mul","  * instruction   : l.mul");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MUL; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MUL)._type     ; //TYPE_MUL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MUL)._operation; //OPERATION_MUL_L_MUL;
@@ -1495,4 +1727,7 @@
     log_printf(TRACE,Decod,"instruction_l_muli","  * instruction   : l.muli");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MULI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MULI)._type     ; //TYPE_MUL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MULI)._operation; //OPERATION_MUL_L_MUL;
@@ -1523,4 +1758,7 @@
     log_printf(TRACE,Decod,"instruction_l_mulu","  * instruction   : l.mulu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_MULU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_MULU)._type     ; //TYPE_MUL;
     inst->_operation          = instruction_information(INSTRUCTION_L_MULU)._operation; //OPERATION_MUL_L_MULU;
@@ -1551,4 +1789,7 @@
     log_printf(TRACE,Decod,"instruction_l_nop","  * instruction   : l.nop");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_NOP; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_NOP)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_NOP)._operation; //OPERATION_SPECIAL_L_NOP;
@@ -1581,4 +1822,7 @@
     log_printf(TRACE,Decod,"instruction_l_or","  * instruction   : l.or");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_OR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_OR)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_OR)._operation; //OPERATION_ALU_L_OR;
@@ -1609,4 +1853,7 @@
     log_printf(TRACE,Decod,"instruction_l_ori","  * instruction   : l.ori");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ORI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ORI)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_ORI)._operation; //OPERATION_ALU_L_OR;
@@ -1643,4 +1890,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_PSYNC; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_PSYNC)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_PSYNC)._operation; //OPERATION_SPECIAL_L_PSYNC;
@@ -1672,4 +1922,7 @@
     log_printf(TRACE,Decod,"instruction_l_rfe","  * instruction   : l.rfe");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_RFE; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_RFE)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_RFE)._operation; //OPERATION_SPECIAL_L_RFE;
@@ -1700,4 +1953,7 @@
     log_printf(TRACE,Decod,"instruction_l_ror","  * instruction   : l.ror");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_ROR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_ROR)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_ROR)._operation; //OPERATION_SHIFT_L_ROR;
@@ -1728,4 +1984,7 @@
     log_printf(TRACE,Decod,"instruction_l_rori","  * instruction   : l.rori");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_RORI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_RORI)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_RORI)._operation; //OPERATION_SHIFT_L_ROR;
@@ -1756,4 +2015,7 @@
     log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SB; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SB)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_SB)._operation; //OPERATION_MEMORY_STORE_8;
@@ -1785,4 +2047,7 @@
     log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SD; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SD)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_SD)._operation; //OPERATION_MEMORY_STORE_64;
@@ -1814,4 +2079,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfeq","  * instruction   : l.sfeq");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFEQ; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFEQ)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFEQ)._operation; //OPERATION_TEST_L_SFEQ;
@@ -1842,4 +2110,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfeqi","  * instruction   : l.sfeqi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFEQI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFEQI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFEQI)._operation; //OPERATION_TEST_L_SFEQ;
@@ -1870,4 +2141,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfges","  * instruction   : l.sfges");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGES; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGES)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGES)._operation; //OPERATION_TEST_L_SFGES;
@@ -1898,4 +2172,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgesi","  * instruction   : l.sfgesi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGESI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGESI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGESI)._operation; //OPERATION_TEST_L_SFGES;
@@ -1926,4 +2203,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgeu","  * instruction   : l.sfgeu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGEU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGEU)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGEU)._operation; //OPERATION_TEST_L_SFGEU;
@@ -1954,4 +2234,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgeui","  * instruction   : l.sfgeui");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGEUI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGEUI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGEUI)._operation; //OPERATION_TEST_L_SFGEU;
@@ -1982,4 +2265,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgts","  * instruction   : l.sfgts");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGTS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGTS)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGTS)._operation; //OPERATION_TEST_L_SFGTS;
@@ -2010,4 +2296,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgtsi","  * instruction   : l.sfgtsi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGTSI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGTSI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGTSI)._operation; //OPERATION_TEST_L_SFGTS;
@@ -2038,4 +2327,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgtu","  * instruction   : l.sfgtu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGTU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGTU)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGTU)._operation; //OPERATION_TEST_L_SFGTU;
@@ -2066,4 +2358,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfgtui","  * instruction   : l.sfgtui");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFGTUI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFGTUI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFGTUI)._operation; //OPERATION_TEST_L_SFGTU;
@@ -2094,4 +2389,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfles","  * instruction   : l.sfles");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLES; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLES)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLES)._operation; //OPERATION_TEST_L_SFLES;
@@ -2122,4 +2420,7 @@
     log_printf(TRACE,Decod,"instruction_l_sflesi","  * instruction   : l.sflesi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLESI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLESI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLESI)._operation; //OPERATION_TEST_L_SFLES;
@@ -2150,4 +2451,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfleu","  * instruction   : l.sfleu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLEU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLEU)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLEU)._operation; //OPERATION_TEST_L_SFLEU;
@@ -2178,4 +2482,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfleui","  * instruction   : l.sfleui");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLEUI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLEUI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLEUI)._operation; //OPERATION_TEST_L_SFLEU;
@@ -2206,4 +2513,7 @@
     log_printf(TRACE,Decod,"instruction_l_sflts","  * instruction   : l.sflts");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLTS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLTS)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLTS)._operation; //OPERATION_TEST_L_SFLTS;
@@ -2234,4 +2544,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfltsi","  * instruction   : l.sfltsi");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLTSI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLTSI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLTSI)._operation; //OPERATION_TEST_L_SFLTS;
@@ -2262,4 +2575,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfltu","  * instruction   : l.sfltu");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLTU; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLTU)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLTU)._operation; //OPERATION_TEST_L_SFLTU;
@@ -2290,4 +2606,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfltui","  * instruction   : l.sfltui");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFLTUI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFLTUI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFLTUI)._operation; //OPERATION_TEST_L_SFLTU;
@@ -2318,4 +2637,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfne","  * instruction   : l.sfne");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFNE; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFNE)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFNE)._operation; //OPERATION_TEST_L_SFNE;
@@ -2346,4 +2668,7 @@
     log_printf(TRACE,Decod,"instruction_l_sfnei","  * instruction   : l.sfnei");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SFNEI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SFNEI)._type     ; //TYPE_TEST;
     inst->_operation          = instruction_information(INSTRUCTION_L_SFNEI)._operation; //OPERATION_TEST_L_SFNE;
@@ -2374,4 +2699,7 @@
     log_printf(TRACE,Decod,"instruction_l_sh","  * instruction   : l.sh");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SH; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SH)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_SH)._operation; //OPERATION_MEMORY_STORE_16;
@@ -2403,4 +2731,7 @@
     log_printf(TRACE,Decod,"instruction_l_sll","  * instruction   : l.sll");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SLL; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SLL)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SLL)._operation; //OPERATION_SHIFT_L_SLL;
@@ -2431,4 +2762,7 @@
     log_printf(TRACE,Decod,"instruction_l_slli","  * instruction   : l.slli");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SLLI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SLLI)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SLLI)._operation; //OPERATION_SHIFT_L_SLL;
@@ -2459,4 +2793,7 @@
     log_printf(TRACE,Decod,"instruction_l_sra","  * instruction   : l.sra");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SRA; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SRA)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SRA)._operation; //OPERATION_SHIFT_L_SRA;
@@ -2487,4 +2824,7 @@
     log_printf(TRACE,Decod,"instruction_l_srai","  * instruction   : l.srai");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SRAI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SRAI)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SRAI)._operation; //OPERATION_SHIFT_L_SRA;
@@ -2515,4 +2855,7 @@
     log_printf(TRACE,Decod,"instruction_l_srl","  * instruction   : l.srl");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SRL; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SRL)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SRL)._operation; //OPERATION_SHIFT_L_SRL;
@@ -2543,4 +2886,7 @@
     log_printf(TRACE,Decod,"instruction_l_srli","  * instruction   : l.srli");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SRLI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SRLI)._type     ; //TYPE_SHIFT;
     inst->_operation          = instruction_information(INSTRUCTION_L_SRLI)._operation; //OPERATION_SHIFT_L_SRL;
@@ -2571,4 +2917,7 @@
     log_printf(TRACE,Decod,"instruction_l_sub","  * instruction   : l.sub");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SUB; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SUB)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_SUB)._operation; //OPERATION_ALU_L_SUB;
@@ -2599,4 +2948,7 @@
     log_printf(TRACE,Decod,"instruction_l_sw","  * instruction   : l.sw");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SW; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SW)._type     ; //TYPE_MEMORY;
     inst->_operation          = instruction_information(INSTRUCTION_L_SW)._operation; //OPERATION_MEMORY_STORE_32;
@@ -2634,4 +2986,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_SYS; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_SYS)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_SYS)._operation; //OPERATION_SPECIAL_L_SYS;
@@ -2678,4 +3033,7 @@
     else
       {
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_TRAP; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_TRAP)._type     ; //TYPE_SPECIAL;
     inst->_operation          = instruction_information(INSTRUCTION_L_TRAP)._operation; //OPERATION_SPECIAL_L_TRAP;
@@ -2707,4 +3065,7 @@
     log_printf(TRACE,Decod,"instruction_l_xor","  * instruction   : l.xor");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_XOR; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_XOR)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_XOR)._operation; //OPERATION_ALU_L_XOR;
@@ -2735,4 +3096,7 @@
     log_printf(TRACE,Decod,"instruction_l_xori","  * instruction   : l.xori");
 
+#ifdef STATISTICS
+    inst->_opcod              =                         INSTRUCTION_L_XORI; 
+#endif
     inst->_type               = instruction_information(INSTRUCTION_L_XORI)._type     ; //TYPE_ALU;
     inst->_operation          = instruction_information(INSTRUCTION_L_XORI)._operation; //OPERATION_ALU_L_XOR;
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 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h	(revision 137)
@@ -84,4 +84,7 @@
   public    : SC_OUT(Tcontext_t         )  ** out_DECOD_CONTEXT_ID                   ;//[nb_inst_decod]
   public    : SC_OUT(Tdepth_t           )  ** out_DECOD_DEPTH                        ;//[nb_inst_decod]
+#ifdef STATISTICS
+  public    : SC_OUT(uint32_t           )  ** out_DECOD_INSTRUCTION                  ;//[nb_inst_decod]
+#endif
   public    : SC_OUT(Ttype_t            )  ** out_DECOD_TYPE                         ;//[nb_inst_decod]
   public    : SC_OUT(Toperation_t       )  ** out_DECOD_OPERATION                    ;//[nb_inst_decod]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp	(revision 137)
@@ -83,4 +83,7 @@
       ALLOC1_SIGNAL_OUT(out_DECOD_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
       ALLOC1_SIGNAL_OUT(out_DECOD_DEPTH        ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
+#ifdef STATISTICS
+      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION  ,"instruction"  ,uint32_t          ,32                                  );
+#endif
       ALLOC1_SIGNAL_OUT(out_DECOD_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type                  );
       ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp	(revision 137)
@@ -44,4 +44,7 @@
         DELETE1_SIGNAL(out_DECOD_CONTEXT_ID   ,_param->_nb_inst_decod,_param->_size_context_id            );
         DELETE1_SIGNAL(out_DECOD_DEPTH        ,_param->_nb_inst_decod,_param->_size_depth                 );
+#ifdef STATISTICS
+        DELETE1_SIGNAL(out_DECOD_INSTRUCTION  ,_param->_nb_inst_decod,32                                  );
+#endif
         DELETE1_SIGNAL(out_DECOD_TYPE         ,_param->_nb_inst_decod,_param->_size_type                  );
         DELETE1_SIGNAL(out_DECOD_OPERATION    ,_param->_nb_inst_decod,_param->_size_operation             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp	(revision 137)
@@ -107,4 +107,7 @@
 		_decod_instruction->_address_next       = addr+1;
 		_decod_instruction->_is_delay_slot      = internal_CONTEXT_IS_DELAY_SLOT [x];
+#ifdef STATISTICS
+		_decod_instruction->_opcod              = -1; // not necessary
+#endif
 		_decod_instruction->_type               = 0; // not necessary
 		_decod_instruction->_operation          = 0; // not necessary
@@ -174,4 +177,7 @@
 		if (_param->_have_port_depth)
                 PORT_WRITE(out_DECOD_DEPTH         [i], depth);
+#ifdef STATISTICS
+		PORT_WRITE(out_DECOD_INSTRUCTION   [i], _decod_instruction->_opcod         );
+#endif
 		PORT_WRITE(out_DECOD_TYPE          [i], type);
 		PORT_WRITE(out_DECOD_OPERATION     [i], _decod_instruction->_operation     );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_body.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_body.cpp	(revision 137)
@@ -36,5 +36,5 @@
 
     for(uint32_t i = 0;i < _param->_nb_inst_decod;i++){
-      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+" <= in_IFETCH_0_"+toString(i)+"_INSTRUCTION WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(6,OPCOD_10)+" & "+std_logic_cst(2,OPCOD_L_NOP)+" & X\"000000\" ;");
+      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+" <= in_IFETCH_0_"+toString(i)+"_INSTRUCTION WHEN in_IFETCH_0_"+toString(i)+"_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(6,OPCOD_10)+" & "+std_logic_cst(2,OPCOD_L_NOP)+" & X\"000000\" ;");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_VAL <= internal_DECOD_"+toString(i)+"_VAL; ");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_TYPE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_TYPE; ");
@@ -53,5 +53,5 @@
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_NUM_REG_RE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_NUM_REG_RE; ");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION_USE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION_USE; ");
-      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_exception_decod,EXCEPTION_DECOD_NONE)+"; ");
+      vhdl->set_body(0,"out_DECOD_"+toString(i)+"_EXCEPTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_EXCEPTION WHEN in_IFETCH_0_"+toString(i)+"_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_exception_decod,EXCEPTION_DECOD_NONE)+"; ");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_NO_EXECUTE <= internal_DECOD_INSTRUCTION_"+toString(i)+"_NO_EXECUTE; ");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_IS_DELAY_SLOT <= internal_DECOD_INSTRUCTION_"+toString(i)+"_IS_DELAY_SLOT; ");
@@ -59,16 +59,16 @@
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_ADDRESS <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS; ");
 #endif
-      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS <= in_IFETCH_0_ADDRESS + "+std_logic_cst(_param->_size_instruction_address,i)+" ;");
+      vhdl->set_body(0,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS <= in_IFETCH_0_"+toString(i)+"_ADDRESS + "+std_logic_cst(_param->_size_instruction_address,i)+" ;");
       vhdl->set_body(0,"out_DECOD_"+toString(i)+"_ADDRESS_NEXT <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT; ");
-      vhdl->set_body(0,"internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + '1'; ");
+      vhdl->set_body(0,"internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + '1'; ");
       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_CONDITION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_BRANCH_CONDITION; ");
       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_DIRECTION <= internal_DECOD_INSTRUCTION_"+toString(i)+"_BRANCH_DIRECTION; ");
       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_ADDRESS_SRC <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS; ");
       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_ADDRESS_DEST <= internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT; ");
-      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_STATE <= in_IFETCH_0_BRANCH_STATE; ");
+      vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_STATE <= in_IFETCH_0_"+toString(i)+"_BRANCH_STATE; ");
       vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_VAL <= internal_PREDICT_"+toString(i)+"_VAL; ");
 
-      if(_param->_have_port_depth) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID <= in_IFETCH_0_BRANCH_UPDATE_PREDICTION_ID; ");
-      if(_param->_have_port_inst_ifetch_ptr) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN in_IFETCH_0_INST_IFETCH_PTR = "+std_logic_cst(_param->_size_inst_ifetch_ptr,i)+" ELSE '0'; ");
+      if(_param->_have_port_depth) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID <= in_IFETCH_0_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID; ");
+      if(_param->_have_port_inst_ifetch_ptr) vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN in_IFETCH_0_"+toString(i)+"_INST_IFETCH_PTR = "+std_logic_cst(_param->_size_inst_ifetch_ptr,i)+" ELSE '0'; ");
       else vhdl->set_body(0,"out_PREDICT_"+toString(i)+"_MATCH_INST_IFETCH_PTR <= '1' WHEN internal_DECOD_INSTRUCTION_0_TYPE = "+std_logic_cst(_param->_size_type,TYPE_BRANCH)+" ELSE '0' ; ");
     }
@@ -88,5 +88,5 @@
       
       vhdl->set_body(0,"out_CONTEXT_EVENT_VAL <= internal_CONTEXT_EVENT_VAL; ");
-      vhdl->set_body(0,"out_CONTEXT_EVENT_TYPE <= internal_DECOD_INSTRUCTION_0_EVENT_TYPE WHEN in_IFETCH_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_EXCEPTION)+"; ");
+      vhdl->set_body(0,"out_CONTEXT_EVENT_TYPE <= internal_DECOD_INSTRUCTION_0_EVENT_TYPE WHEN in_IFETCH_0_0_EXCEPTION = "+std_logic_cst(_param->_size_exception_ifetch,EXCEPTION_IFETCH_NONE)+" ELSE "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_EXCEPTION)+"; ");
       vhdl->set_body(0,"out_CONTEXT_EVENT_ADDRESS <= internal_DECOD_INSTRUCTION_0_ADDRESS; ");
       vhdl->set_body(0,"out_CONTEXT_EVENT_ADDRESS_EPCR <= internal_DECOD_INSTRUCTION_0_ADDRESS_NEXT; ");
@@ -226,5 +226,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
       
@@ -252,5 +252,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
       
@@ -266,5 +266,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_general_data - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RA <= '0'; ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RB <= '0'; ");
@@ -280,5 +280,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
       
@@ -294,5 +294,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_general_data - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_IMMEDIAT <= \"00\" & in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RA <= '0'; ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_READ_RB <= '0'; ");
@@ -308,5 +308,5 @@
       extend_signal = "";
       for(uint32_t cp = 0;cp < _param->_size_instruction_address - 26;cp++) extend_signal += "internal_DECOD_INSTRUCTION_"+toString(i)+"(25) & ";
-      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
+      vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT <= in_IFETCH_0_"+toString(i)+"_ADDRESS + ( "+extend_signal+"internal_DECOD_INSTRUCTION_"+toString(i)+" (25 downto 0) ); ");
       vhdl->set_body(3,"internal_DECOD_INSTRUCTION_"+toString(i)+"_EVENT_TYPE <= "+std_logic_cst(_param->_size_event_type,EVENT_TYPE_NONE)+"; ");
       
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_declaration.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_vhdl_declaration.cpp	(revision 137)
@@ -47,7 +47,5 @@
       vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_NO_EXECUTE    ",1);
       vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_IS_DELAY_SLOT    ",1);
-#ifdef DEBUG
       vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS    ",_param->_size_instruction_address);
-#endif
       vhdl->set_signal ("internal_DECOD_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT    ",_param->_size_instruction_address);
       vhdl->set_signal ("internal_DECOD_IN_INSTRUCTION_"+toString(i)+"_ADDRESS_NEXT    ",_param->_size_instruction_address);
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 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Decod_queue.h	(revision 137)
@@ -75,4 +75,7 @@
   public    : SC_IN (Tcontext_t         )  **  in_DECOD_IN_CONTEXT_ID     ;//[nb_inst_decod]
   public    : SC_IN (Tdepth_t           )  **  in_DECOD_IN_DEPTH          ;//[nb_inst_decod]
+#ifdef STATISTICS
+  public    : SC_IN (uint32_t           )  **  in_DECOD_IN_INSTRUCTION    ;//[nb_inst_decod]
+#endif
   public    : SC_IN (Ttype_t            )  **  in_DECOD_IN_TYPE           ;//[nb_inst_decod]
   public    : SC_IN (Toperation_t       )  **  in_DECOD_IN_OPERATION      ;//[nb_inst_decod]
@@ -103,4 +106,7 @@
   public    : SC_OUT(Tcontext_t         )  ** out_DECOD_OUT_CONTEXT_ID    ;//[nb_inst_decod]
   public    : SC_OUT(Tdepth_t           )  ** out_DECOD_OUT_DEPTH         ;//[nb_inst_decod]
+#ifdef STATISTICS
+  public    : SC_OUT(uint32_t           )  ** out_DECOD_OUT_INSTRUCTION   ;//[nb_inst_decod]
+#endif
   public    : SC_OUT(Ttype_t            )  ** out_DECOD_OUT_TYPE          ;//[nb_inst_decod]
   public    : SC_OUT(Toperation_t       )  ** out_DECOD_OUT_OPERATION     ;//[nb_inst_decod]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h	(revision 137)
@@ -33,4 +33,7 @@
   public : Tcontext_t         * _context_id     ;
   public : Tdepth_t           * _depth          ;
+#ifdef STATISTICS
+  public : uint32_t           * _instruction    ;
+#endif
   public : Ttype_t            * _type           ;
   public : Toperation_t       * _operation      ;
@@ -62,4 +65,7 @@
       ALLOC1(_context_id     ,Tcontext_t         ,_nb_inst);
       ALLOC1(_depth          ,Tdepth_t           ,_nb_inst);
+#ifdef STATISTICS
+      ALLOC1(_instruction    ,uint32_t           ,_nb_inst);
+#endif
       ALLOC1(_type           ,Ttype_t            ,_nb_inst);
       ALLOC1(_operation      ,Toperation_t       ,_nb_inst);
@@ -94,4 +100,7 @@
       DELETE1(_context_id     ,_nb_inst);
       DELETE1(_depth          ,_nb_inst);
+#ifdef STATISTICS
+      DELETE1(_instruction    ,_nb_inst);
+#endif
       DELETE1(_type           ,_nb_inst);
       DELETE1(_operation      ,_nb_inst);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp	(revision 137)
@@ -63,4 +63,7 @@
       ALLOC1_SIGNAL_IN ( in_DECOD_IN_CONTEXT_ID     ,"context_id"   ,Tcontext_t         ,_param->_size_context_id            );
       ALLOC1_SIGNAL_IN ( in_DECOD_IN_DEPTH          ,"depth"        ,Tdepth_t           ,_param->_size_depth                 );
+#ifdef STATISTICS
+      ALLOC1_SIGNAL_IN ( in_DECOD_IN_INSTRUCTION    ,"instruction"  ,uint32_t           ,32                                  );
+#endif
       ALLOC1_SIGNAL_IN ( in_DECOD_IN_TYPE           ,"type"         ,Ttype_t            ,_param->_size_type                  );
       ALLOC1_SIGNAL_IN ( in_DECOD_IN_OPERATION      ,"operation"    ,Toperation_t       ,_param->_size_operation             );
@@ -97,4 +100,7 @@
       ALLOC1_SIGNAL_OUT(out_DECOD_OUT_CONTEXT_ID     ,"context_id"   ,Tcontext_t         ,_param->_size_context_id            );
       ALLOC1_SIGNAL_OUT(out_DECOD_OUT_DEPTH          ,"depth"        ,Tdepth_t           ,_param->_size_depth                 );
+#ifdef STATISTICS
+      ALLOC1_SIGNAL_OUT(out_DECOD_OUT_INSTRUCTION    ,"instruction"  ,uint32_t           ,32                                  );
+#endif
       ALLOC1_SIGNAL_OUT(out_DECOD_OUT_TYPE           ,"type"         ,Ttype_t            ,_param->_size_type                  );
       ALLOC1_SIGNAL_OUT(out_DECOD_OUT_OPERATION      ,"operation"    ,Toperation_t       ,_param->_size_operation             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp	(revision 137)
@@ -33,4 +33,7 @@
 	DELETE1_SIGNAL( in_DECOD_IN_CONTEXT_ID     ,_param->_nb_inst_decod,_param->_size_context_id            );
 	DELETE1_SIGNAL( in_DECOD_IN_DEPTH          ,_param->_nb_inst_decod,_param->_size_depth                 );
+#ifdef STATISTICS
+	DELETE1_SIGNAL( in_DECOD_IN_INSTRUCTION    ,_param->_nb_inst_decod,32);
+#endif
 	DELETE1_SIGNAL( in_DECOD_IN_TYPE           ,_param->_nb_inst_decod,_param->_size_type                  );
 	DELETE1_SIGNAL( in_DECOD_IN_OPERATION      ,_param->_nb_inst_decod,_param->_size_operation             );
@@ -60,4 +63,7 @@
 	DELETE1_SIGNAL(out_DECOD_OUT_CONTEXT_ID    ,_param->_nb_inst_decod,_param->_size_context_id            );
 	DELETE1_SIGNAL(out_DECOD_OUT_DEPTH         ,_param->_nb_inst_decod,_param->_size_depth                 );
+#ifdef STATISTICS
+	DELETE1_SIGNAL(out_DECOD_OUT_INSTRUCTION   ,_param->_nb_inst_decod,32);
+#endif
 	DELETE1_SIGNAL(out_DECOD_OUT_TYPE          ,_param->_nb_inst_decod,_param->_size_type                  );
 	DELETE1_SIGNAL(out_DECOD_OUT_OPERATION     ,_param->_nb_inst_decod,_param->_size_operation             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMoore.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_genMoore.cpp	(revision 137)
@@ -55,4 +55,7 @@
 	        if (_param->_have_port_depth)
 	        PORT_WRITE(out_DECOD_OUT_DEPTH         [i],reg_QUEUE[num_bank].front()->_depth         [0]);
+#ifdef STATISTICS
+	        PORT_WRITE(out_DECOD_OUT_INSTRUCTION   [i],reg_QUEUE[num_bank].front()->_instruction   [0]);
+#endif
 	        PORT_WRITE(out_DECOD_OUT_TYPE          [i],reg_QUEUE[num_bank].front()->_type          [0]);
 	        PORT_WRITE(out_DECOD_OUT_OPERATION     [i],reg_QUEUE[num_bank].front()->_operation     [0]);
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 136)
+++ 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 137)
@@ -74,4 +74,7 @@
 		entry->_context_id    [0] = context;
 		entry->_depth         [0] = (_param->_have_port_depth)?PORT_READ(in_DECOD_IN_DEPTH [i]):0;
+#ifdef STATISTICS
+		entry->_instruction   [0] = PORT_READ(in_DECOD_IN_INSTRUCTION   [i]);
+#endif
 		entry->_type          [0] = PORT_READ(in_DECOD_IN_TYPE          [i]);
 		entry->_operation     [0] = PORT_READ(in_DECOD_IN_OPERATION     [i]);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMoore.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_genMoore.cpp	(revision 137)
@@ -55,4 +55,7 @@
 	  if (_param->_have_port_depth)
 	  PORT_WRITE(out_DECOD_OUT_DEPTH         [i],reg_QUEUE->front()->_depth         [index]);
+#ifdef STATISTICS
+	  PORT_WRITE(out_DECOD_OUT_INSTRUCTION   [i],reg_QUEUE->front()->_instruction   [index]);
+#endif
 	  PORT_WRITE(out_DECOD_OUT_TYPE          [i],reg_QUEUE->front()->_type          [index]);
 	  PORT_WRITE(out_DECOD_OUT_OPERATION     [i],reg_QUEUE->front()->_operation     [index]);
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 136)
+++ 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 137)
@@ -77,4 +77,7 @@
 		entry->_context_id    [i] = context;
 		entry->_depth         [i] = (_param->_have_port_depth)?PORT_READ(in_DECOD_IN_DEPTH [i]):0;
+#ifdef STATISTICS
+		entry->_instruction   [i] = PORT_READ(in_DECOD_IN_INSTRUCTION   [i]);
+#endif
 		entry->_type          [i] = PORT_READ(in_DECOD_IN_TYPE          [i]);
 		entry->_operation     [i] = PORT_READ(in_DECOD_IN_OPERATION     [i]);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Parameters.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Parameters.cpp	(revision 137)
@@ -42,32 +42,4 @@
     test();
 
-    _size_internal_queue = 
-      (1                            + // _val
-       _size_context_id             + // _context_id
-       _size_depth                  + // _depth
-       _size_type                   + // _type    
-       _size_operation              + // _operation
-       1                            + // _no_execute
-       1                            + // _is_delay_slot
-#ifdef DEBUG
-       _size_instruction_address    + // _address
-#endif
-       _size_instruction_address    + // _address_next
-       1                            + // _has_immediat
-       _size_general_data           + // _immediat
-       1                            + // _read_ra
-       _size_general_register_logic + // _num_reg_ra
-       1                            + // _read_rb
-       _size_general_register_logic + // _num_reg_rb
-       1                            + // _read_rc
-       _size_special_register_logic + // _num_reg_rc
-       1                            + // _write_rd
-       _size_general_register_logic + // _num_reg_rd
-       1                            + // _write_re
-       _size_special_register_logic + // _num_reg_re
-       _size_exception_use          + // _exception_use
-       _size_exception_decod          // _exception
-       ) * _nb_inst_decod;
-
     if (is_toplevel)
       {
@@ -111,4 +83,32 @@
     log_begin(Decod_queue,FUNCTION);
 
+    _size_internal_queue = 
+      (1                            + // _val
+       _size_context_id             + // _context_id
+       _size_depth                  + // _depth
+       _size_type                   + // _type    
+       _size_operation              + // _operation
+       1                            + // _no_execute
+       1                            + // _is_delay_slot
+#ifdef DEBUG
+       _size_instruction_address    + // _address
+#endif
+       _size_instruction_address    + // _address_next
+       1                            + // _has_immediat
+       _size_general_data           + // _immediat
+       1                            + // _read_ra
+       _size_general_register_logic + // _num_reg_ra
+       1                            + // _read_rb
+       _size_general_register_logic + // _num_reg_rb
+       1                            + // _read_rc
+       _size_special_register_logic + // _num_reg_rc
+       1                            + // _write_rd
+       _size_general_register_logic + // _num_reg_rd
+       1                            + // _write_re
+       _size_special_register_logic + // _num_reg_re
+       _size_exception_use          + // _exception_use
+       _size_exception_decod          // _exception
+       ) * _nb_inst_decod;
+
     log_end(Decod_queue,FUNCTION);
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Decod_unit.h	(revision 137)
@@ -83,4 +83,7 @@
   public    : SC_OUT(Tcontext_t         )  ** out_DECOD_CONTEXT_ID                   ;//[nb_inst_decod]
   public    : SC_OUT(Tdepth_t           )  ** out_DECOD_DEPTH                        ;//[nb_inst_decod]
+#ifdef STATISTICS
+  public    : SC_OUT(uint32_t           )  ** out_DECOD_INSTRUCTION                  ;//[nb_inst_decod]
+#endif
   public    : SC_OUT(Ttype_t            )  ** out_DECOD_TYPE                         ;//[nb_inst_decod]
   public    : SC_OUT(Toperation_t       )  ** out_DECOD_OPERATION                    ;//[nb_inst_decod]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp	(revision 137)
@@ -80,4 +80,7 @@
       ALLOC1_SIGNAL_OUT(out_DECOD_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
       ALLOC1_SIGNAL_OUT(out_DECOD_DEPTH        ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
+#ifdef STATISTICS
+      ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION  ,"instruction"  ,uint32_t          ,32);
+#endif
       ALLOC1_SIGNAL_OUT(out_DECOD_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type                  );
       ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
@@ -293,4 +296,8 @@
 	  COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_DEPTH"        ,
 			           dest, "in_DECOD_IN_"+toString(i)+"_DEPTH"        );
+#ifdef STATISTICS
+          COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_INSTRUCTION"  ,
+			           dest, "in_DECOD_IN_"+toString(i)+"_INSTRUCTION"  );
+#endif
 	  COMPONENT_MAP(_component,src ,"out_DECOD_"   +toString(i)+"_TYPE"         ,
 			           dest, "in_DECOD_IN_"+toString(i)+"_TYPE"         );
@@ -483,4 +490,8 @@
 	  PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_DEPTH"        ,
 		              dest,"out_DECOD_"    +toString(i)+"_DEPTH"        );
+#ifdef STATISTICS
+	  PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_INSTRUCTION"  ,
+		              dest,"out_DECOD_"    +toString(i)+"_INSTRUCTION"  );
+#endif
 	  PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_TYPE"         ,
 		              dest,"out_DECOD_"    +toString(i)+"_TYPE"         );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp	(revision 137)
@@ -43,4 +43,7 @@
         DELETE1_SIGNAL(out_DECOD_CONTEXT_ID                   ,_param->_nb_inst_decod,_param->_size_context_id            );
         DELETE1_SIGNAL(out_DECOD_DEPTH                        ,_param->_nb_inst_decod,_param->_size_depth                 );
+#ifdef STATISTICS
+        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                  ,_param->_nb_inst_decod,32);
+#endif
         DELETE1_SIGNAL(out_DECOD_TYPE                         ,_param->_nb_inst_decod,_param->_size_type                  );
         DELETE1_SIGNAL(out_DECOD_OPERATION                    ,_param->_nb_inst_decod,_param->_size_operation             );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_body.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_body.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_body.cpp	(revision 137)
@@ -243,5 +243,5 @@
     vhdl->set_body (3,"reg_ADDRESS                                                 <= var_ADDRESS;");
     if(_param->_have_port_inst_ifetch_ptr)
-      //    vhdl->set_body (3,"reg_INST_IFETCH_PTR   ("+reg_ptr_write+")                   <= var_INST_IFETCH_PTR;");
+  //vhdl->set_body (3,"reg_INST_IFETCH_PTR   ("+reg_ptr_write+")                   <= var_INST_IFETCH_PTR;");
     vhdl->set_body (3,"reg_INST_IFETCH_PTR                                         <= var_INST_IFETCH_PTR;");
     //    vhdl->set_body (3,"reg_BRANCH_STATE      ("+reg_ptr_write+")                   <= var_BRANCH_STATE;");
@@ -288,5 +288,11 @@
        vhdl->set_body (1,"out_ADDRESS_ACK               <= internal_ADDRESS_ACK;");
        if (_param->_have_port_ifetch_queue_ptr) {
-	 vhdl->set_body (1,"out_ADDRESS_IFETCH_QUEUE_ID <= reg_PTR_WRITE;");
+	 uint32_t    diff_size = _param->_size_ifetch_queue_ptr - log2(_param->_size_queue);
+	 std::string complete_size = "";
+
+	 if (diff_size > 0)
+	   complete_size = std_logic_cst(diff_size,0)+" &";
+
+	 vhdl->set_body (1,"out_ADDRESS_IFETCH_QUEUE_ID <= "+complete_size+" reg_PTR_WRITE;");
        }
      }
@@ -303,12 +309,15 @@
 	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_VAL                   <= internal_DECOD_"+toString(j)+"_VAL;");
 	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_INSTRUCTION           <= reg_DATA("+reg_ptr_read+")("+toString(j)+") ;");
+	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_ADDRESS               <= reg_ADDRESS("+reg_ptr_read+")+"+std_logic_cst(_param->_size_instruction,j)+";");
+	   if (_param->_have_port_inst_ifetch_ptr) 
+	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_STATE          <= reg_BRANCH_STATE("+reg_ptr_read+") when reg_INST_IFETCH_PTR("+reg_ptr_read+") = "+std_logic_cst(_param->_size_inst_ifetch_ptr,j)+" else "+std_logic_cst(_param->_size_branch_state,BRANCH_STATE_NONE)+";");
+	   else
+	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_STATE          <= reg_BRANCH_STATE("+reg_ptr_read+");");
+
+	   if (_param->_have_port_depth)
+	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID <= reg_BRANCH_UPDATE_PREDICTION_ID("+reg_ptr_read+");");
+	   vhdl->set_body(0,"out_DECOD_"+toString(j)+"_EXCEPTION                   <= reg_EXCEPTION("+reg_ptr_read+");");
+
 	 }
-       vhdl->set_body(0,"out_DECOD_ADDRESS                                   <= reg_ADDRESS("+reg_ptr_read+");");
-       if (_param->_have_port_inst_ifetch_ptr) 
-	 vhdl->set_body(0,"out_DECOD_INST_IFETCH_PTR                         <= reg_INST_IFETCH_PTR("+reg_ptr_read+");");
-       vhdl->set_body(0,"out_DECOD_BRANCH_STATE                              <= reg_BRANCH_STATE("+reg_ptr_read+");");
-       if (_param->_have_port_depth)
-	 vhdl->set_body(0,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID             <= reg_BRANCH_UPDATE_PREDICTION_ID("+reg_ptr_read+");");
-       vhdl->set_body(0,"out_DECOD_EXCEPTION                                 <= reg_EXCEPTION("+reg_ptr_read+");");
      }
      vhdl->set_body(0,"");
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_declaration.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_declaration.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_vhdl_declaration.cpp	(revision 137)
@@ -62,5 +62,5 @@
     vhdl->set_type    ("Tenable                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of Tcase_enable");
     vhdl->set_signal  ("reg_INSTRUCTION_ENABLE               ", "Tenable");
-    vhdl->set_type    ("Tadress                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_instruction));
+    vhdl->set_type    ("Tadress                              ","array ("+toString(_param->_size_queue-1)+" downto 0) of "+std_logic(_param->_size_instruction_address));
     vhdl->set_signal  ("reg_ADDRESS                          ", "Tadress");
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/include/Front_end.h	(revision 137)
@@ -90,4 +90,7 @@
   public    : SC_OUT(Tcontext_t           ) ** out_DECOD_CONTEXT_ID                ;//[sum_inst_decod]
   public    : SC_OUT(Tdepth_t             ) ** out_DECOD_DEPTH                     ;//[sum_inst_decod]
+#ifdef STATISTICS
+  public    : SC_OUT(uint32_t             ) ** out_DECOD_INSTRUCTION               ;//[sum_inst_decod]
+#endif
   public    : SC_OUT(Ttype_t              ) ** out_DECOD_TYPE                      ;//[sum_inst_decod]
   public    : SC_OUT(Toperation_t         ) ** out_DECOD_OPERATION                 ;//[sum_inst_decod]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp	(revision 137)
@@ -98,4 +98,7 @@
       ALLOC1_SIGNAL_OUT (out_DECOD_CONTEXT_ID                 ,"CONTEXT_ID"       ,Tcontext_t           ,_param->_size_context_id            );
       ALLOC1_SIGNAL_OUT (out_DECOD_DEPTH                      ,"DEPTH"            ,Tdepth_t             ,_param->_size_depth                 );
+#ifdef STATISTICS
+      ALLOC1_SIGNAL_OUT (out_DECOD_INSTRUCTION                ,"INSTRUCTION"      ,uint32_t             ,32);
+#endif
       ALLOC1_SIGNAL_OUT (out_DECOD_TYPE                       ,"TYPE"             ,Ttype_t              ,_param->_size_type                  );
       ALLOC1_SIGNAL_OUT (out_DECOD_OPERATION                  ,"OPERATION"        ,Toperation_t         ,_param->_size_operation             );
@@ -700,15 +703,16 @@
 
       for (uint32_t j=0; j<_param->_decod_unit_nb_context[i]; ++j)
-        {
-          dest = _name+"_glue";
-#ifdef POSITION
-          _component->interface_map (src ,"ifetch_"+toString(j),
-                                     dest,"ifetch_"+toString(i)+"_"+toString(j));
-#endif
-      
-          if (_param->_have_port_context_id)
-          COMPONENT_MAP(_component,src , "in_IFETCH_"+toString(j)                           +"_CONTEXT_ID",
-                                   dest,"out_IFETCH_"+toString(i)+"_"+toString(j)+"_DECOD_UNIT_CONTEXT_ID");
-        }
+        for (uint32_t k=0; k<_param->_nb_inst_fetch [j];++k)
+          {
+            dest = _name+"_glue";
+#ifdef POSITION
+            _component->interface_map (src ,"ifetch_"+toString(j)+"_"+toString(k),
+                                       dest,"ifetch_"+toString(i)+"_"+toString(j));
+#endif
+            
+            if (_param->_have_port_context_id)
+            COMPONENT_MAP(_component,src , "in_IFETCH_"+toString(j)+"_"+toString(k)+"_CONTEXT_ID",
+                                     dest,"out_IFETCH_"+toString(i)+"_"+toString(j)+"_DECOD_UNIT_CONTEXT_ID");
+          }
 
       // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -729,4 +733,8 @@
           PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_DEPTH"        ,
                               dest,"out_DECOD_"+toString(x)+"_DEPTH"        );
+#ifdef STATISTICS
+          PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_INSTRUCTION"  ,
+                              dest,"out_DECOD_"+toString(x)+"_INSTRUCTION"  );
+#endif
           PORT_MAP(_component,src ,"out_DECOD_"+toString(j)+"_TYPE"         ,
                               dest,"out_DECOD_"+toString(x)+"_TYPE"         );
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp	(revision 136)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp	(revision 137)
@@ -45,4 +45,7 @@
         DELETE1_SIGNAL(out_DECOD_CONTEXT_ID                 ,_param->_sum_inst_decod,_param->_size_context_id            );
         DELETE1_SIGNAL(out_DECOD_DEPTH                      ,_param->_sum_inst_decod,_param->_size_depth                 );
+#ifdef STATISTICS
+        DELETE1_SIGNAL(out_DECOD_INSTRUCTION                ,_param->_sum_inst_decod,32);
+#endif
         DELETE1_SIGNAL(out_DECOD_TYPE                       ,_param->_sum_inst_decod,_param->_size_type                  );
         DELETE1_SIGNAL(out_DECOD_OPERATION                  ,_param->_sum_inst_decod,_param->_size_operation             );
