Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_min.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_min.cfg	(revision 87)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_min.cfg	(revision 87)
@@ -0,0 +1,10 @@
+Decod
+1	1	*4	# nb_context           
+1	1	*4	# nb_inst_fetch        [0] [nb_context]
+1	1	*4	# nb_inst_decod        
+1	1	*2	# nb_branch_speculated 
+0	0	+1	# size_branch_update_prediction
+1	1	*2	# nb_context_select    
+32	32	*2	# size_general_data    
+1	1	+1	# priority             
+1	1	+1	# load_balancing       
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_mono_context.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_mono_context.cfg	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_mono_context.cfg	(revision 87)
@@ -1,8 +1,8 @@
 Decod
 1	1	*4	# nb_context           
-1	4	*4	# nb_inst_fetch        [0] [nb_context]
-1	4	*4	# nb_inst_decod        
+4	16	*4	# nb_inst_fetch        [0] [nb_context]
+1	4 	*4	# nb_inst_decod        
 1	1	*2	# nb_branch_speculated 
-1	1	*2	# size_branch_update_prediction
+0	2	+1	# size_branch_update_prediction
 1	1	*2	# nb_context_select    
 32	32	*2	# size_general_data    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_multi_context.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_multi_context.cfg	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/config_multi_context.cfg	(revision 87)
@@ -5,7 +5,7 @@
 4	4	*4	# nb_inst_fetch        [2] [nb_context]
 8	8	*4	# nb_inst_fetch        [3] [nb_context]
-1	16	*4	# nb_inst_decod        
+1	8	*2	# nb_inst_decod        
 1	1	*2	# nb_branch_speculated 
-1	1	*2	# size_branch_update_prediction
+2	2	*2	# size_branch_update_prediction
 1	4	*2	# nb_context_select    
 32	32	*2	# size_general_data    
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h	(revision 87)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h	(revision 87)
@@ -0,0 +1,1285 @@
+/*
+ * $Id$
+ *
+ * [ Description ]
+ * 
+ */
+
+#ifdef SYSTEMC
+#include "systemc.h"
+#endif
+
+#include "Common/include/Test.h"
+#include <string>
+#include <iostream>
+#include <list>
+
+  class entry_t
+  {
+//public : Tcontrol_t          _val                        ;
+  public : Tinstruction_t      _instruction                ;
+//public : Tcontext_t          _context_id                 ;
+  public : Tgeneral_address_t  _address_previous           ;
+  public : Tgeneral_address_t  _address                    ;
+  public : Tgeneral_address_t  _address_next               ;
+  public : Tbranch_state_t     _branch_state               ;
+  public : Tprediction_ptr_t   _branch_update_prediction_id;
+  public : Tbranch_condition_t _branch_condition           ;
+//public : Tcontrol_t          _branch_stack_write         ;
+  public : Tcontrol_t          _branch_direction           ;
+  public : Tgeneral_address_t  _branch_address_dest        ;
+  public : Tdepth_t            _depth                      ;
+  public : Ttype_t             _type                       ;
+  public : Toperation_t        _operation                  ;
+  public : Tcontrol_t          _is_delay_slot              ;
+  public : Tcontrol_t          _has_immediat               ;
+  public : Tgeneral_data_t     _immediat                   ;
+  public : Tcontrol_t          _read_ra                    ;
+  public : Tgeneral_address_t  _num_reg_ra                 ;
+  public : Tcontrol_t          _read_rb                    ;
+  public : Tgeneral_address_t  _num_reg_rb                 ;
+  public : Tcontrol_t          _read_rc                    ;
+  public : Tspecial_address_t  _num_reg_rc                 ;
+  public : Tcontrol_t          _write_rd                   ;
+  public : Tgeneral_address_t  _num_reg_rd                 ;
+  public : Tcontrol_t          _write_re                   ;
+  public : Tspecial_address_t  _num_reg_re                 ;
+  public : Texception_t        _exception_use              ;
+  public : Tevent_type_t       _context_event_type         ;
+
+  public : entry_t (
+// 		    Tcontrol_t          val                        ,
+		    Tinstruction_t      instruction                ,
+// 		    Tcontext_t          context_id                 ,
+		    Tgeneral_address_t  address_previous           ,
+		    Tgeneral_address_t  address                    ,
+		    Tgeneral_address_t  address_next               ,
+		    Tbranch_state_t     branch_state               ,
+		    Tprediction_ptr_t   branch_update_prediction_id,
+		    Tbranch_condition_t branch_condition           ,
+// 		    Tcontrol_t          branch_stack_write         ,
+		    Tcontrol_t          branch_direction           ,
+		    Tgeneral_address_t  branch_address_dest        ,
+		    Tdepth_t            depth                      ,
+		    Ttype_t             type                       ,
+		    Toperation_t        operation                  ,
+		    Tcontrol_t          is_delay_slot              ,
+		    Tcontrol_t          has_immediat               ,
+		    Tgeneral_data_t     immediat                   ,
+		    Tcontrol_t          read_ra                    ,
+		    Tgeneral_address_t  num_reg_ra                 ,
+		    Tcontrol_t          read_rb                    ,
+		    Tgeneral_address_t  num_reg_rb                 ,
+		    Tcontrol_t          read_rc                    ,
+		    Tspecial_address_t  num_reg_rc                 ,
+		    Tcontrol_t          write_rd                   ,
+		    Tgeneral_address_t  num_reg_rd                 ,
+		    Tcontrol_t          write_re                   ,
+		    Tspecial_address_t  num_reg_re                 ,
+		    Texception_t        exception_use              ,
+		    Tevent_type_t       context_event_type         )
+    {
+//       _val                         = val                        ;
+      _instruction                 = instruction                ;
+//       _context_id                  = context_id                 ;
+      _address_previous            = address_previous           ;
+      _address                     = address                    ;
+      _address_next                = address_next               ;
+      _branch_state                = branch_state               ;
+      _branch_update_prediction_id = branch_update_prediction_id;
+      _branch_condition            = branch_condition           ;
+//       _branch_stack_write          = branch_stack_write         ;
+      _branch_direction            = branch_direction           ;
+      _branch_address_dest         = branch_address_dest        ;
+      _depth                       = depth                      ;
+      _type                        = type                       ;
+      _operation                   = operation                  ;
+      _is_delay_slot               = is_delay_slot              ;
+      _has_immediat                = has_immediat               ;
+      _immediat                    = immediat                   ;
+      _read_ra                     = read_ra                    ;
+      _num_reg_ra                  = num_reg_ra                 ;
+      _read_rb                     = read_rb                    ;
+      _num_reg_rb                  = num_reg_rb                 ;
+      _read_rc                     = read_rc                    ;
+      _num_reg_rc                  = num_reg_rc                 ;
+      _write_rd                    = write_rd                   ;
+      _num_reg_rd                  = num_reg_rd                 ;
+      _write_re                    = write_re                   ;
+      _num_reg_re                  = num_reg_re                 ;
+      _exception_use               = exception_use              ;
+      _context_event_type          = context_event_type         ;
+    }
+  };
+
+
+class Decod_request
+{
+private : list<entry_t> request;
+
+public  :  Decod_request (void)
+  {
+    uint32_t w;
+    uint32_t x = (0x100>>2)-1;
+    uint32_t y = (0x100>>2);
+    uint32_t z = (0x100>>2)+1;
+
+#define SEQ    do {x=y; y=z; z+=1; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request.back()._instruction, x,x,y,y,z,z);} while(0);
+#define JMP(j) do {x=y; y=z; z =j; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request.back()._instruction, x,x,y,y,z,z);} while(0);
+
+    // ===== l.add	r15, r4 , r8
+    request.push_back (entry_t(
+    //instruction,address_previous,address,address_next
+    0xe1e44000,x,y,z,
+    //branch_state,branch_update_prediction_id,branch_condition,branch_stack_write,branch_direction, branch_address_dest
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0,
+    //depth,type,operation,is_delay_slot
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    //has_immediat,immediat,read_ra,reg_ra,read_rb,reg_rb,read_rc,reg_rc,write_rd,reg_rd,write_re,reg_re
+    0,0x00000000,1, 4,1, 8,0,0                 ,1,15,1,SPR_LOGIC_SR_CY_OV,
+    //exception_use,context_event_type
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addc	r15, r4 , r31
+    request.push_back (entry_t(
+    0xe1e4f801,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0, 
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    0,0x00000000,1, 4,1,31,1,SPR_LOGIC_SR_CY_OV,1,15,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addi	r7 , r12, -1
+    request.push_back (entry_t(
+    0x9cecffff,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0xffffffff,1,12,0, 0,0,0                 ,1,7 ,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addi	r8 , r17, 0
+    request.push_back (entry_t(
+    0x9d110000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0x00000000,1,17,0, 0,0,0                 ,1,8 ,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addi	r21, r7 , 1981
+    request.push_back (entry_t(
+    0x9ea707bd,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0x000007bd,1, 7,0, 0,0,0                 ,1,21,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addic	r7 , r12, -1
+    request.push_back (entry_t(
+    0xa0ecffff,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0xffffffff,1,12,0, 0,1,SPR_LOGIC_SR_CY_OV,1,7 ,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addic	r8 , r17, 0
+    request.push_back (entry_t(
+    0xa1110000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0x00000000,1,17,0, 0,1,SPR_LOGIC_SR_CY_OV,1,8 ,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.addic	r21, r7 , 1981
+    request.push_back (entry_t(
+    0xa2a707bd,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
+    1,0x000007bd,1, 7,0, 0,1,SPR_LOGIC_SR_CY_OV,1,21,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.and	r24, r0 , r14
+    request.push_back (entry_t(
+    0xe3007003,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
+    0,0x0       ,1, 0,1,14,0,0                 ,1,24,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.andi	r24, r4 , 1981
+    request.push_back (entry_t(
+    0xa70407bd,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
+    1,0x000007bd,1, 4,0,0 ,0,0                 ,1,24,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.bf 11
+    w = y+(11<<2);
+    request.push_back (entry_t(
+    0x1000000b,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,0, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
+    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.cmov	r30, r10, r20
+    request.push_back (entry_t(
+    0xe3caa00e,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MOVE,OPERATION_MOVE_L_CMOV,true,
+    0,0x0,1,10,1,20,1,SPR_LOGIC_SR_F    ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.div r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa309,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MUL_DIV,OPERATION_MUL_DIV_L_DIV,false,
+    0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.bf -9
+    w = y+(-9<<2);
+    request.push_back (entry_t(
+    0x13fffff7,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
+    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.divu r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa30a,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MUL_DIV,OPERATION_MUL_DIV_L_DIVU,true,
+    0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.extbs r30,r10
+    request.push_back (entry_t(
+    0xe3ca004c,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
+    1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.bnf 11
+    w = y+(11<<2);
+    request.push_back (entry_t(
+    0x0c00000b,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,0, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
+    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.extbz r30,r10
+    request.push_back (entry_t(
+    0xe3ca00cc,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
+    1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+    
+    // ===== l.exths r30,r10
+    request.push_back (entry_t(
+    0xe3ca000c,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
+    1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.bnf -9
+    w = y+(-9<<2);
+    request.push_back (entry_t(
+    0x0ffffff7,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
+    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.exthz r30,r10
+    request.push_back (entry_t(
+    0xe3ca008c,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
+    1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.extws r30,r10
+    request.push_back (entry_t(
+    0xe3ca000d,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
+    1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.extwz r30,r10
+    request.push_back (entry_t(
+    0xe3ca004d,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,false,
+    1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.csync
+    request.push_back (entry_t(
+    0x23000000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_CSYNC,false,
+    0,0  ,0,0 ,0,0 ,0,0                 ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_CSYNC));
+    SEQ;
+
+    // ===== l.ff1 r30,r10
+    request.push_back (entry_t(
+    0xe3ca000f,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_FIND,OPERATION_FIND_L_FF1,false,
+    0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.fl1 r30,r10
+    request.push_back (entry_t(
+    0xe3ca010f,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_FIND,OPERATION_FIND_L_FL1,false,
+    0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.j 1018
+    w = y+(1018<<2);
+    request.push_back (entry_t(
+    0x000003fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
+    0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.lbs r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x93ca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_S,true,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.lbz r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x8fca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_Z,false,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.j -1018
+    w = y+(-1018<<2);
+    request.push_back (entry_t(
+    0x03fffc06,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
+    0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.lhs r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x9bca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_S,true,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.lhz r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x97ca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_Z,false,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.jal 1018
+    w = y+(1018<<2);
+    request.push_back (entry_t(
+    0x040003fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
+    1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.lws r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x8bca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_S,true,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.lwz r30,0x3fa(r10)
+    request.push_back (entry_t(
+    0x87ca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_Z,false,
+    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.jal -1018
+    w = y+(-1018<<2);
+    request.push_back (entry_t(
+    0x07fffc06,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
+    1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
+    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
+    JMP(w);
+
+    // ===== l.ld r30,1018(r10)
+    request.push_back (entry_t(
+    0x83ca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,true,
+    1,1018,1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.ld r30,-1018(r10)
+    request.push_back (entry_t(
+    0x83cafc06,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,false,
+    1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0 ,0,0,1,30,0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.jalr r20
+    request.push_back (entry_t(
+    0x4800a000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK,1, z, // branch_address_dest can be determined if BRANCH_STATE != NONE (also : previous prediction)
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
+    0,0   ,0,0 ,1,20,0,0,1,9 ,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+    
+    // ===== l.mac r10,r20
+    request.push_back (entry_t(
+    0xc40aa001,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,true,
+    0,0,1,10,1,20,0,0,0,0,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+    
+    // ===== l.maci r10,1018
+    request.push_back (entry_t(
+    0x4c0a03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
+    1,1018,1,10,0,0,0,0,0,0,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.maci r10,-1018
+    request.push_back (entry_t(
+    0x4fea0406,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
+    1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0,0,0,0,0,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+    
+    // ===== l.jr r10
+    request.push_back (entry_t(
+    0x44005000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK,1, z,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
+    0,0   ,0, 0,1,10,0,0,0,0 ,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+    
+    // ===== l.macrc r30
+    request.push_back (entry_t(
+    0x1bc10000,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MACRC,true,
+    0,0,0, 0,0, 0,0,0,1,30,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.mfspr r30,r10,1018
+    request.push_back (entry_t(
+    0xb7ca03fa,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
+    1,1018,1,10,0, 0,0,0,1,30,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.mfspr r30,r10,-1018
+    request.push_back (entry_t(
+    0xb7cafc06,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
+    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
+    1,0xfc06,1,10,0, 0,0,0,1,30,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.jr r9 
+    request.push_back (entry_t(
+    0x44004800,x,y,z,
+    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_STACK,1, z,
+    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
+    0,0   ,0, 0,1,9,0,0,0,0 ,0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+          
+    // ===== l.movhi r30,0x3fa
+    request.push_back (entry_t(
+    0x1bc003fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MOVE,OPERATION_MOVE_L_MOVHI,true,
+    1,0x3fa,0,0, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+    
+    // ===== l.movhi r30,0xfc06
+    request.push_back (entry_t(
+    0x1bc0fc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MOVE,OPERATION_MOVE_L_MOVHI,false,
+    1,0xfc06,0,0, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.msb r10,r20
+    request.push_back (entry_t(
+    0xc40aa002,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_MSB,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.msync
+    request.push_back (entry_t(
+    0x22000000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_MSYNC,false,
+    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_MSYNC));
+    SEQ;
+
+    // ===== l.mtspr r10,r20,0x3fa
+    request.push_back (entry_t(
+    0xc00aa3fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
+    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.mtspr r10,r20,0xfc06
+    request.push_back (entry_t(
+    0xc3eaa406,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
+    1,0xfc06, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
+    SEQ;
+
+    // ===== l.mul r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa306,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.muli r30,r10,0x3fa
+    request.push_back (entry_t(
+    0xb3ca03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.muli r30,r10,0xfffffc06
+    request.push_back (entry_t(
+    0xb3cafc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.mulu r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa30b,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MULU,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.nop 0x3fa
+    request.push_back (entry_t(
+    0x150003fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
+    0,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.nop 0xfc06
+    request.push_back (entry_t(
+    0x1500fc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
+    0,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.or r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa004,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_OR,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.ori r30,r10,0x3fa
+    request.push_back (entry_t(
+    0xabca03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_OR,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.ori r30,r10,0xfc06
+    request.push_back (entry_t(
+    0xabcafc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_OR,false,
+    1,0xfc06, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.psync
+    request.push_back (entry_t(
+    0x22800000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_PSYNC,false,
+    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_PSYNC));
+    SEQ;
+
+    // ===== l.ror r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa0c8,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.rori r30,r10,0x3f
+    request.push_back (entry_t(
+    0xbbca00ff,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
+    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.rori r30,r10,0x1
+    request.push_back (entry_t(
+    0xbbca00c1,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
+    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sb 0x3fa(r10),r20
+    request.push_back (entry_t(
+    0xd80aa3fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
+    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sb 0xfffffc06(r10),r20
+    request.push_back (entry_t(
+    0xdbeaa406,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
+    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sd 0x3fa(r10),r20
+    request.push_back (entry_t(
+    0xd00aa3fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
+    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sd 0xfffffc06(r10),r20
+    request.push_back (entry_t(
+    0xd3eaa406,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
+    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sh 0x3fa(r10),r20
+    request.push_back (entry_t(
+    0xdc0aa3fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
+    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sh 0xfffffc06(r10),r20
+    request.push_back (entry_t(
+    0xdfeaa406,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
+    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sw 0x3fa(r10),r20
+    request.push_back (entry_t(
+    0xd40aa3fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
+    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sw 0xfffffc06(r10),r20
+    request.push_back (entry_t(
+    0xd7eaa406,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
+    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sll r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa008,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.slli r30,r10,0x1
+    request.push_back (entry_t(
+    0xbbca0001,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
+    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.slli r30,r10,0x3f
+    request.push_back (entry_t(
+    0xbbca003f,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
+    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sra r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa088,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.srai r30,r10,0x1
+    request.push_back (entry_t(
+    0xbbca0081,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
+    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.srai r30,r10,0x3f
+    request.push_back (entry_t(
+    0xbbca00bf,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
+    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.srl r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa048,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.srli r30,r10,0x1
+    request.push_back (entry_t(
+    0xbbca0041,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
+    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.srli r30,r10,0x3f
+    request.push_back (entry_t(
+    0xbbca007f,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
+    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.xor r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa005,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_XOR,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.xori r30,r10,0x3fa
+    request.push_back (entry_t(
+    0xafca03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_XOR,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.xori r30,r10,0xfffffc06
+    request.push_back (entry_t(
+    0xafcafc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_XOR,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sub r30,r10,r20
+    request.push_back (entry_t(
+    0xe3caa002,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_ALU,OPERATION_ALU_L_SUB,false,
+    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
+    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sys 0x3fa
+    request.push_back (entry_t(
+    0x200003fa,x,y,z,
+    0,0,0,0,z,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
+    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
+    SEQ;
+
+    // ===== l.sys 0xfc06
+    request.push_back (entry_t(
+    0x2000fc06,x,y,z,
+    0,0,0,0,z,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
+    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
+    SEQ;
+
+    // ===== l.trap 0x3fa
+    request.push_back (entry_t(
+    0x210003fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
+    1,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.trap 0xfc06
+    request.push_back (entry_t(
+    0x2100fc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
+    1,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.rfe
+    request.push_back (entry_t(
+    0x24000000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_SPECIAL,OPERATION_SPECIAL_L_RFE,false,
+    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfeq r10,r20
+    request.push_back (entry_t(
+    0xe40aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfeqi r10,0x3fa
+    request.push_back (entry_t(
+    0xbc0a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfeqi r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbc0afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfne r10,r20
+    request.push_back (entry_t(
+    0xe42aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfnei r10,0x3fa
+    request.push_back (entry_t(
+    0xbc2a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfnei r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbc2afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfges r10,r20
+    request.push_back (entry_t(
+    0xe56aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgesi r10,0x3fa
+    request.push_back (entry_t(
+    0xbd6a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgesi r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbd6afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgeu r10,r20
+    request.push_back (entry_t(
+    0xe46aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgeui r10,0x3fa
+    request.push_back (entry_t(
+    0xbc6a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgeui r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbc6afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgts r10,r20
+    request.push_back (entry_t(
+    0xe54aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgtsi r10,0x3fa
+    request.push_back (entry_t(
+    0xbd4a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgtsi r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbd4afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgtu r10,r20
+    request.push_back (entry_t(
+    0xe44aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgtui r10,0x3fa
+    request.push_back (entry_t(
+    0xbc4a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfgtui r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbc4afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfles r10,r20
+    request.push_back (entry_t(
+    0xe5aaa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sflesi r10,0x3fa
+    request.push_back (entry_t(
+    0xbdaa03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sflesi r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbdaafc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfleu r10,r20
+    request.push_back (entry_t(
+    0xe4aaa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfleui r10,0x3fa
+    request.push_back (entry_t(
+    0xbcaa03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfleui r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbcaafc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sflts r10,r20
+    request.push_back (entry_t(
+    0xe58aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfltsi r10,0x3fa
+    request.push_back (entry_t(
+    0xbd8a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfltsi r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbd8afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfltu r10,r20
+    request.push_back (entry_t(
+    0xe48aa000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
+    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfltui r10,0x3fa
+    request.push_back (entry_t(
+    0xbc8a03fa,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
+    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.sfltui r10,0xfffffc06
+    request.push_back (entry_t(
+    0xbc8afc06,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
+    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.cust4 (encrypt)
+    request.push_back (entry_t(
+    0x7de80000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_CUSTOM,OPERATION_CUSTOM_L_4,false,
+    0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+
+    // ===== l.cust8 (decrypt)
+    request.push_back (entry_t(
+    0xfde80000,x,y,z,
+    0,0,0,0,0,0,
+    TYPE_CUSTOM,OPERATION_CUSTOM_L_8,false,
+    0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
+    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
+    SEQ;
+  }
+
+public : uint32_t size (void)
+  {
+    return request.size();
+  }
+  
+public : list<entry_t>::iterator begin (void)
+  {
+    return request.begin();
+  }
+
+public : list<entry_t>::iterator end (void)
+  {
+    return request.end();
+  }
+
+public : entry_t front (void)
+  {
+    return request.front();
+  }
+
+public : void pop_front (void)
+  {
+    request.pop_front();
+  }
+
+};
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/main.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/main.cpp	(revision 87)
@@ -81,5 +81,5 @@
 	 _instruction_implemeted       ,
 	 &(morpheo::behavioural::custom::example_get_custom_information)
-);
+	 );
       
       msg(_("%s"),param->print(1).c_str());
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp	(revision 87)
@@ -11,106 +11,8 @@
 
 #include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/test.h"
+#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h"
 #include <list>
 #include "Common/include/Test.h"
 #include "Behavioural/include/Allocation.h"
-
-  class entry_t
-  {
-//public : Tcontrol_t          _val                        ;
-  public : Tinstruction_t      _instruction                ;
-//public : Tcontext_t          _context_id                 ;
-  public : Tgeneral_address_t  _address_previous           ;
-  public : Tgeneral_address_t  _address                    ;
-  public : Tgeneral_address_t  _address_next               ;
-  public : Tbranch_state_t     _branch_state               ;
-  public : Tprediction_ptr_t   _branch_update_prediction_id;
-  public : Tbranch_condition_t _branch_condition           ;
-//public : Tcontrol_t          _branch_stack_write         ;
-  public : Tcontrol_t          _branch_direction           ;
-  public : Tgeneral_address_t  _branch_address_dest        ;
-  public : Tdepth_t            _depth                      ;
-  public : Ttype_t             _type                       ;
-  public : Toperation_t        _operation                  ;
-  public : Tcontrol_t          _is_delay_slot              ;
-  public : Tcontrol_t          _has_immediat               ;
-  public : Tgeneral_data_t     _immediat                   ;
-  public : Tcontrol_t          _read_ra                    ;
-  public : Tgeneral_address_t  _num_reg_ra                 ;
-  public : Tcontrol_t          _read_rb                    ;
-  public : Tgeneral_address_t  _num_reg_rb                 ;
-  public : Tcontrol_t          _read_rc                    ;
-  public : Tspecial_address_t  _num_reg_rc                 ;
-  public : Tcontrol_t          _write_rd                   ;
-  public : Tgeneral_address_t  _num_reg_rd                 ;
-  public : Tcontrol_t          _write_re                   ;
-  public : Tspecial_address_t  _num_reg_re                 ;
-  public : Texception_t        _exception_use              ;
-  public : Tevent_type_t       _context_event_type         ;
-
-  public : entry_t (
-// 		    Tcontrol_t          val                        ,
-		    Tinstruction_t      instruction                ,
-// 		    Tcontext_t          context_id                 ,
-		    Tgeneral_address_t  address_previous           ,
-		    Tgeneral_address_t  address                    ,
-		    Tgeneral_address_t  address_next               ,
-		    Tbranch_state_t     branch_state               ,
-		    Tprediction_ptr_t   branch_update_prediction_id,
-		    Tbranch_condition_t branch_condition           ,
-// 		    Tcontrol_t          branch_stack_write         ,
-		    Tcontrol_t          branch_direction           ,
-		    Tgeneral_address_t  branch_address_dest        ,
-		    Tdepth_t            depth                      ,
-		    Ttype_t             type                       ,
-		    Toperation_t        operation                  ,
-		    Tcontrol_t          is_delay_slot              ,
-		    Tcontrol_t          has_immediat               ,
-		    Tgeneral_data_t     immediat                   ,
-		    Tcontrol_t          read_ra                    ,
-		    Tgeneral_address_t  num_reg_ra                 ,
-		    Tcontrol_t          read_rb                    ,
-		    Tgeneral_address_t  num_reg_rb                 ,
-		    Tcontrol_t          read_rc                    ,
-		    Tspecial_address_t  num_reg_rc                 ,
-		    Tcontrol_t          write_rd                   ,
-		    Tgeneral_address_t  num_reg_rd                 ,
-		    Tcontrol_t          write_re                   ,
-		    Tspecial_address_t  num_reg_re                 ,
-		    Texception_t        exception_use              ,
-		    Tevent_type_t       context_event_type         )
-    {
-//       _val                         = val                        ;
-      _instruction                 = instruction                ;
-//       _context_id                  = context_id                 ;
-      _address_previous            = address_previous           ;
-      _address                     = address                    ;
-      _address_next                = address_next               ;
-      _branch_state                = branch_state               ;
-      _branch_update_prediction_id = branch_update_prediction_id;
-      _branch_condition            = branch_condition           ;
-//       _branch_stack_write          = branch_stack_write         ;
-      _branch_direction            = branch_direction           ;
-      _branch_address_dest         = branch_address_dest        ;
-      _depth                       = depth                      ;
-      _type                        = type                       ;
-      _operation                   = operation                  ;
-      _is_delay_slot               = is_delay_slot              ;
-      _has_immediat                = has_immediat               ;
-      _immediat                    = immediat                   ;
-      _read_ra                     = read_ra                    ;
-      _num_reg_ra                  = num_reg_ra                 ;
-      _read_rb                     = read_rb                    ;
-      _num_reg_rb                  = num_reg_rb                 ;
-      _read_rc                     = read_rc                    ;
-      _num_reg_rc                  = num_reg_rc                 ;
-      _write_rd                    = write_rd                   ;
-      _num_reg_rd                  = num_reg_rd                 ;
-      _write_re                    = write_re                   ;
-      _num_reg_re                  = num_reg_re                 ;
-      _exception_use               = exception_use              ;
-      _context_event_type          = context_event_type         ;
-    }
-  };
-
 
 void test (string name,
@@ -296,10 +198,7 @@
       LABEL("Iteration %d",iteration);
 
-      list<entry_t> request [_param->_nb_context];
-
-      uint32_t w;
-      uint32_t x = (0x100>>2)-1;
-      uint32_t y = (0x100>>2);
-      uint32_t z = (0x100>>2)+1;
+      Decod_request request [_param->_nb_context];
+
+      uint32_t nb_request  = 0;
 
       uint32_t delay_slot_previous [_param->_nb_context];
@@ -307,1148 +206,10 @@
       uint32_t delay_slot_next     [_param->_nb_context];
 
-#define SEQ    do {x=y; y=z; z+=1; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request [0].back()._instruction, x,x,y,y,z,z);} while(0);
-#define JMP(j) do {x=y; y=z; z =j; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request [0].back()._instruction, x,x,y,y,z,z);} while(0);
-
-      // ===== l.add	r15, r4 , r8
-      request [0].push_back (entry_t(
-      //instruction,address_previous,address,address_next
-      0xe1e44000,x,y,z,
-      //branch_state,branch_update_prediction_id,branch_condition,branch_stack_write,branch_direction, branch_address_dest
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0,
-      //depth,type,operation,is_delay_slot
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      //has_immediat,immediat,read_ra,reg_ra,read_rb,reg_rb,read_rc,reg_rc,write_rd,reg_rd,write_re,reg_re
-      0,0x00000000,1, 4,1, 8,0,0                 ,1,15,1,SPR_LOGIC_SR_CY_OV,
-      //exception_use,context_event_type
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addc	r15, r4 , r31
-      request [0].push_back (entry_t(
-      0xe1e4f801,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0, 
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      0,0x00000000,1, 4,1,31,1,SPR_LOGIC_SR_CY_OV,1,15,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addi	r7 , r12, -1
-      request [0].push_back (entry_t(
-      0x9cecffff,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0xffffffff,1,12,0, 0,0,0                 ,1,7 ,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addi	r8 , r17, 0
-      request [0].push_back (entry_t(
-      0x9d110000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0x00000000,1,17,0, 0,0,0                 ,1,8 ,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addi	r21, r7 , 1981
-      request [0].push_back (entry_t(
-      0x9ea707bd,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0x000007bd,1, 7,0, 0,0,0                 ,1,21,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addic	r7 , r12, -1
-      request [0].push_back (entry_t(
-      0xa0ecffff,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0xffffffff,1,12,0, 0,1,SPR_LOGIC_SR_CY_OV,1,7 ,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addic	r8 , r17, 0
-      request [0].push_back (entry_t(
-      0xa1110000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0x00000000,1,17,0, 0,1,SPR_LOGIC_SR_CY_OV,1,8 ,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.addic	r21, r7 , 1981
-      request [0].push_back (entry_t(
-      0xa2a707bd,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
-      1,0x000007bd,1, 7,0, 0,1,SPR_LOGIC_SR_CY_OV,1,21,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.and	r24, r0 , r14
-      request [0].push_back (entry_t(
-      0xe3007003,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
-      0,0x0       ,1, 0,1,14,0,0                 ,1,24,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.andi	r24, r4 , 1981
-      request [0].push_back (entry_t(
-      0xa70407bd,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
-      1,0x000007bd,1, 4,0,0 ,0,0                 ,1,24,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.bf 11
-      w = y+(11<<2);
-      request [0].push_back (entry_t(
-      0x1000000b,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,0, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
-      1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.cmov	r30, r10, r20
-      request [0].push_back (entry_t(
-      0xe3caa00e,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MOVE,OPERATION_MOVE_L_CMOV,true,
-      0,0x0,1,10,1,20,1,SPR_LOGIC_SR_F    ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.div r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa309,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MUL_DIV,OPERATION_MUL_DIV_L_DIV,false,
-      0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.bf -9
-      w = y+(-9<<2);
-      request [0].push_back (entry_t(
-      0x13fffff7,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
-      1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.divu r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa30a,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MUL_DIV,OPERATION_MUL_DIV_L_DIVU,true,
-      0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.extbs r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca004c,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
-      1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.bnf 11
-      w = y+(11<<2);
-      request [0].push_back (entry_t(
-      0x0c00000b,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,0, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
-      1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.extbz r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca00cc,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
-      1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-      
-      // ===== l.exths r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca000c,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
-      1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.bnf -9
-      w = y+(-9<<2);
-      request [0].push_back (entry_t(
-      0x0ffffff7,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
-      1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.exthz r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca008c,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
-      1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.extws r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca000d,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
-      1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.extwz r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca004d,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,false,
-      1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.csync
-      request [0].push_back (entry_t(
-      0x23000000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_CSYNC,false,
-      0,0  ,0,0 ,0,0 ,0,0                 ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_CSYNC));
-      SEQ;
-
-      // ===== l.ff1 r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca000f,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_FIND,OPERATION_FIND_L_FF1,false,
-      0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.fl1 r30,r10
-      request [0].push_back (entry_t(
-      0xe3ca010f,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_FIND,OPERATION_FIND_L_FL1,false,
-      0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.j 1018
-      w = y+(1018<<2);
-      request [0].push_back (entry_t(
-      0x000003fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
-      0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.lbs r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x93ca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_S,true,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.lbz r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x8fca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_Z,false,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.j -1018
-      w = y+(-1018<<2);
-      request [0].push_back (entry_t(
-      0x03fffc06,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
-      0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.lhs r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x9bca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_S,true,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.lhz r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x97ca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_Z,false,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.jal 1018
-      w = y+(1018<<2);
-      request [0].push_back (entry_t(
-      0x040003fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
-      1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.lws r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x8bca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_S,true,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.lwz r30,0x3fa(r10)
-      request [0].push_back (entry_t(
-      0x87ca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_Z,false,
-      1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.jal -1018
-      w = y+(-1018<<2);
-      request [0].push_back (entry_t(
-      0x07fffc06,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
-      1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
-      EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
-      JMP(w);
-
-      // ===== l.ld r30,1018(r10)
-      request [0].push_back (entry_t(
-      0x83ca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,true,
-      1,1018,1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.ld r30,-1018(r10)
-      request [0].push_back (entry_t(
-      0x83cafc06,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,false,
-      1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0 ,0,0,1,30,0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.jalr r20
-      request [0].push_back (entry_t(
-      0x4800a000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK,1, z, // branch_address_dest can be determined if BRANCH_STATE != NONE (also : previous prediction)
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
-      0,0   ,0,0 ,1,20,0,0,1,9 ,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-      
-      // ===== l.mac r10,r20
-      request [0].push_back (entry_t(
-      0xc40aa001,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,true,
-      0,0,1,10,1,20,0,0,0,0,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-      
-      // ===== l.maci r10,1018
-      request [0].push_back (entry_t(
-      0x4c0a03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
-      1,1018,1,10,0,0,0,0,0,0,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.maci r10,-1018
-      request [0].push_back (entry_t(
-      0x4fea0406,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
-      1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0,0,0,0,0,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-      
-      // ===== l.jr r10
-      request [0].push_back (entry_t(
-      0x44005000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK,1, z,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
-      0,0   ,0, 0,1,10,0,0,0,0 ,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-      
-      // ===== l.macrc r30
-      request [0].push_back (entry_t(
-      0x1bc10000,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MACRC,true,
-      0,0,0, 0,0, 0,0,0,1,30,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.mfspr r30,r10,1018
-      request [0].push_back (entry_t(
-      0xb7ca03fa,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
-      1,1018,1,10,0, 0,0,0,1,30,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.mfspr r30,r10,-1018
-      request [0].push_back (entry_t(
-      0xb7cafc06,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
-      0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
-      1,0xfc06,1,10,0, 0,0,0,1,30,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.jr r9 
-      request [0].push_back (entry_t(
-      0x44004800,x,y,z,
-      BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_STACK,1, z,
-      0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
-      0,0   ,0, 0,1,9,0,0,0,0 ,0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-            
-      // ===== l.movhi r30,0x3fa
-      request [0].push_back (entry_t(
-      0x1bc003fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MOVE,OPERATION_MOVE_L_MOVHI,true,
-      1,0x3fa,0,0, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-      
-      // ===== l.movhi r30,0xfc06
-      request [0].push_back (entry_t(
-      0x1bc0fc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MOVE,OPERATION_MOVE_L_MOVHI,false,
-      1,0xfc06,0,0, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.msb r10,r20
-      request [0].push_back (entry_t(
-      0xc40aa002,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_MSB,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.msync
-      request [0].push_back (entry_t(
-      0x22000000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_MSYNC,false,
-      0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_MSYNC));
-      SEQ;
-
-      // ===== l.mtspr r10,r20,0x3fa
-      request [0].push_back (entry_t(
-      0xc00aa3fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
-      1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.mtspr r10,r20,0xfc06
-      request [0].push_back (entry_t(
-      0xc3eaa406,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
-      1,0xfc06, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
-      SEQ;
-
-      // ===== l.mul r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa306,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.muli r30,r10,0x3fa
-      request [0].push_back (entry_t(
-      0xb3ca03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.muli r30,r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xb3cafc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MUL,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.mulu r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa30b,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MUL_DIV,OPERATION_MUL_DIV_L_MULU,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.nop 0x3fa
-      request [0].push_back (entry_t(
-      0x150003fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
-      0,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.nop 0xfc06
-      request [0].push_back (entry_t(
-      0x1500fc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
-      0,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.or r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa004,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_OR,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.ori r30,r10,0x3fa
-      request [0].push_back (entry_t(
-      0xabca03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_OR,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.ori r30,r10,0xfc06
-      request [0].push_back (entry_t(
-      0xabcafc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_OR,false,
-      1,0xfc06, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.psync
-      request [0].push_back (entry_t(
-      0x22800000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_PSYNC,false,
-      0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_PSYNC));
-      SEQ;
-
-      // ===== l.ror r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa0c8,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.rori r30,r10,0x3f
-      request [0].push_back (entry_t(
-      0xbbca00ff,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
-      1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.rori r30,r10,0x1
-      request [0].push_back (entry_t(
-      0xbbca00c1,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
-      1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sb 0x3fa(r10),r20
-      request [0].push_back (entry_t(
-      0xd80aa3fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
-      1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sb 0xfffffc06(r10),r20
-      request [0].push_back (entry_t(
-      0xdbeaa406,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
-      1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sd 0x3fa(r10),r20
-      request [0].push_back (entry_t(
-      0xd00aa3fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
-      1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sd 0xfffffc06(r10),r20
-      request [0].push_back (entry_t(
-      0xd3eaa406,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
-      1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sh 0x3fa(r10),r20
-      request [0].push_back (entry_t(
-      0xdc0aa3fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
-      1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sh 0xfffffc06(r10),r20
-      request [0].push_back (entry_t(
-      0xdfeaa406,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
-      1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sw 0x3fa(r10),r20
-      request [0].push_back (entry_t(
-      0xd40aa3fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
-      1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sw 0xfffffc06(r10),r20
-      request [0].push_back (entry_t(
-      0xd7eaa406,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
-      1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sll r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa008,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.slli r30,r10,0x1
-      request [0].push_back (entry_t(
-      0xbbca0001,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
-      1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.slli r30,r10,0x3f
-      request [0].push_back (entry_t(
-      0xbbca003f,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
-      1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sra r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa088,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.srai r30,r10,0x1
-      request [0].push_back (entry_t(
-      0xbbca0081,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
-      1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.srai r30,r10,0x3f
-      request [0].push_back (entry_t(
-      0xbbca00bf,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
-      1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.srl r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa048,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.srli r30,r10,0x1
-      request [0].push_back (entry_t(
-      0xbbca0041,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
-      1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.srli r30,r10,0x3f
-      request [0].push_back (entry_t(
-      0xbbca007f,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
-      1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.xor r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa005,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_XOR,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.xori r30,r10,0x3fa
-      request [0].push_back (entry_t(
-      0xafca03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_XOR,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.xori r30,r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xafcafc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_XOR,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sub r30,r10,r20
-      request [0].push_back (entry_t(
-      0xe3caa002,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_ALU,OPERATION_ALU_L_SUB,false,
-      0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
-      EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sys 0x3fa
-      request [0].push_back (entry_t(
-      0x200003fa,x,y,z,
-      0,0,0,0,0,z,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
-      0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
-      SEQ;
-
-      // ===== l.sys 0xfc06
-      request [0].push_back (entry_t(
-      0x2000fc06,x,y,z,
-      0,0,0,0,0,z,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
-      0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
-      SEQ;
-
-      // ===== l.trap 0x3fa
-      request [0].push_back (entry_t(
-      0x210003fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
-      1,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.trap 0xfc06
-      request [0].push_back (entry_t(
-      0x2100fc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
-      1,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.rfe
-      request [0].push_back (entry_t(
-      0x24000000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_SPECIAL,OPERATION_SPECIAL_L_RFE,false,
-      0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfeq r10,r20
-      request [0].push_back (entry_t(
-      0xe40aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfeqi r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbc0a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfeqi r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbc0afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfne r10,r20
-      request [0].push_back (entry_t(
-      0xe42aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFNE,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfnei r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbc2a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFNE,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfnei r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbc2afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFNE,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfges r10,r20
-      request [0].push_back (entry_t(
-      0xe56aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGES,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgesi r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbd6a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGES,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgesi r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbd6afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGES,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgeu r10,r20
-      request [0].push_back (entry_t(
-      0xe46aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgeui r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbc6a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgeui r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbc6afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgts r10,r20
-      request [0].push_back (entry_t(
-      0xe54aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgtsi r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbd4a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgtsi r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbd4afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgtu r10,r20
-      request [0].push_back (entry_t(
-      0xe44aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgtui r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbc4a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfgtui r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbc4afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfles r10,r20
-      request [0].push_back (entry_t(
-      0xe5aaa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLES,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sflesi r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbdaa03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLES,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sflesi r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbdaafc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLES,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfleu r10,r20
-      request [0].push_back (entry_t(
-      0xe4aaa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfleui r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbcaa03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfleui r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbcaafc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sflts r10,r20
-      request [0].push_back (entry_t(
-      0xe58aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfltsi r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbd8a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfltsi r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbd8afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfltu r10,r20
-      request [0].push_back (entry_t(
-      0xe48aa000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
-      0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfltui r10,0x3fa
-      request [0].push_back (entry_t(
-      0xbc8a03fa,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
-      1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.sfltui r10,0xfffffc06
-      request [0].push_back (entry_t(
-      0xbc8afc06,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
-      1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.cust4 (encrypt)
-      request [0].push_back (entry_t(
-      0x7de80000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_CUSTOM,OPERATION_CUSTOM_L_4,false,
-      0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      // ===== l.cust8 (decrypt)
-      request [0].push_back (entry_t(
-      0xfde80000,x,y,z,
-      0,0,0,0,0,0,
-      TYPE_CUSTOM,OPERATION_CUSTOM_L_8,false,
-      0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
-      EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
-      SEQ;
-
-      for (uint32_t i=1; i<_param->_nb_context; i++)
-	{
-	  request[i] = request [0];
-	}
-
       for (uint32_t i=0; i<_param->_nb_context; i++)
 	{
+	  nb_request += request[i].size();
 	  delay_slot_current  [i] = false;
 	  delay_slot_next     [i] = false;
 	}
-
-      uint32_t nb_request = request[0].size() * _param->_nb_context;
 
       while (nb_request > 0)
@@ -1465,6 +226,6 @@
 	      if ((rand()%100)<percent_transaction_ifetch)
 		{
-		  list<entry_t>::iterator it = request [i].begin();
-
+		  list<entry_t>::iterator it = request[i].begin();
+		  
 		  if (it!=request [i].end())
 		    {
@@ -1672,9 +433,9 @@
   delete [] out_PREDICT_BRANCH_UPDATE_PREDICTION_ID;
   delete [] out_PREDICT_BRANCH_CONDITION           ;
-//   delete [] out_PREDICT_BRANCH_STACK_WRITE         ;
+//delete [] out_PREDICT_BRANCH_STACK_WRITE         ;
   delete [] out_PREDICT_BRANCH_DIRECTION           ;
   delete [] out_PREDICT_ADDRESS_SRC                ;
   delete [] out_PREDICT_ADDRESS_DEST               ;
-//   delete []  in_PREDICT_CAN_CONTINUE               ;
+//delete []  in_PREDICT_CAN_CONTINUE               ;
   
   delete []  in_CONTEXT_DECOD_ENABLE               ;
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 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_genMealy.cpp	(revision 87)
@@ -48,5 +48,5 @@
 	internal_CONTEXT_ADDRESS_PREVIOUS [i] = reg_CONTEXT_ADDRESS_PREVIOUS [i];
 	internal_CONTEXT_IS_DELAY_SLOT    [i] = reg_CONTEXT_IS_DELAY_SLOT    [i];
-
+	
 	can_continue                      [i] = PORT_READ(in_CONTEXT_DECOD_ENABLE [i]);
 	can_continue_next                 [i] = PORT_READ(in_CONTEXT_DECOD_ENABLE [i]);
@@ -57,4 +57,5 @@
     //-----------------------------------
     // scan all decod "slot_out"
+    log_printf(TRACE,Decod,FUNCTION,"KANE LIVE");    
     std::list<select_t>::iterator it=select.begin();
     for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
@@ -64,6 +65,7 @@
 	       (context_event_val == false)) // Have not a context_event (spr_access, exception, ...)
 	  {
+	    log_printf(TRACE,Decod,FUNCTION,"loop");    
+
 	    predict_val [i] = false;
-	    context_event_val = false;
 
 	    Tcontext_t x = it->_context ;
@@ -123,4 +125,6 @@
 		if (type == TYPE_BRANCH)
 		  {
+		    log_printf(TRACE,Decod,FUNCTION,"  * type is branch");
+
 		    predict_val [i]     = ifetch_ack  [x][y] // and decod_val [i]
 		      ;
@@ -173,7 +177,4 @@
 		if (have_transaction)
 		  {
-#ifdef STATISTICS
-		    (*_stat_sum_inst_decod) ++;
-#endif
 		    internal_CONTEXT_ADDRESS_PREVIOUS [x] = addr;
 		    internal_CONTEXT_IS_DELAY_SLOT    [x] = (type == TYPE_BRANCH); // next is a delay slot if current have branch type
@@ -182,9 +183,14 @@
 		can_continue [x] &= have_transaction; // to have a in order decod !!! if a previous instruction can decod, also next instruction can't decod.
 	      }
+
+	    log_printf(TRACE,Decod,FUNCTION,"  - num_(decod, context, fetch) : %d %d %d",i, x, y);
+	    log_printf(TRACE,Decod,FUNCTION,"    - ifetch_ack        : %d",ifetch_ack  [x][y]);
+	    log_printf(TRACE,Decod,FUNCTION,"    - context_event_val : %d",context_event_val );
+	    log_printf(TRACE,Decod,FUNCTION,"    - predict_val       : %d",predict_val [i]   );
+	    log_printf(TRACE,Decod,FUNCTION,"    - decod_val         : %d",decod_val   [i]   );
 	    
 	    it ++;
 	  }
       }
-
     //-----------------------------------
     // Write output
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_transition.cpp	(revision 87)
@@ -29,5 +29,8 @@
 
 	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  reg_CONTEXT_ADDRESS_PREVIOUS [i] = 0xfc; // 0x100-4. (0x100 : reset address)
+	  {
+	    reg_CONTEXT_ADDRESS_PREVIOUS [i] = 0xfc; // 0x100-4. (0x100 : reset address)
+	    reg_CONTEXT_IS_DELAY_SLOT    [i] = 0;
+	  }
       }
     else
@@ -94,4 +97,8 @@
 	  if (internal_CONTEXT_HAVE_TRANSACTION[i])
 	    {
+#ifdef STATISTICS
+	      (*_stat_sum_inst_decod) ++;
+#endif
+
 	      reg_CONTEXT_ADDRESS_PREVIOUS [i] = internal_CONTEXT_ADDRESS_PREVIOUS [i];
 	      reg_CONTEXT_IS_DELAY_SLOT    [i] = internal_CONTEXT_IS_DELAY_SLOT    [i];
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters.cpp	(revision 87)
@@ -1,3 +1,4 @@
 /*
+
  * $Id$
  *
@@ -53,5 +54,5 @@
     _max_nb_inst_fetch                     = max<uint32_t>(nb_inst_fetch,nb_context);
 
-    _size_address_inst                     = size_address-2;
+    _size_address_inst                     = size_general_data-2;
     _size_context_id                       = log2(nb_context          );
     _size_depth                            = log2(nb_branch_speculated);
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters_msg_error.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters_msg_error.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Parameters_msg_error.cpp	(revision 87)
@@ -8,4 +8,5 @@
 #include "Behavioural/include/Types.h"
 #include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Parameters.h"
+#include "Common/include/Max.h"
 #include <sstream>
 
@@ -42,4 +43,11 @@
       test.error(_("nb_context_select must be in [1:nb_context].\n"));
 
+    uint32_t sum_inst_fetch = 0;
+    for (uint32_t i=0; i<_nb_context_select; i++)
+      sum_inst_fetch += max<uint32_t>(_nb_inst_fetch,_nb_context,i+1);
+
+    if (sum_inst_fetch < _nb_inst_decod)
+      test.error(_("The sum of the _nb_context_select most nb_inst_fetch must be greater that _nb_inst_decod"));
+
     if ((_priority != PRIORITY_ROUND_ROBIN))
       test.error(toString(_("Unsupported priority scheme. Supported scheme are : %s.\n"),toString(PRIORITY_ROUND_ROBIN).c_str()));
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/config_mono_context.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/config_mono_context.cfg	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/config_mono_context.cfg	(revision 87)
@@ -1,6 +1,6 @@
 Decod_queue
 1	1	+1	# nb_context       
-1	4	*4	# nb_inst_decod    
-4	16	*4	# size_queue       
+1	8	*2	# nb_inst_decod    
+8	16	*2	# size_queue       
 32	32	+1	# size_general_data
 1	2	+1	# nb_branch_speculated [0] [nb_context]
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue.cpp	(revision 87)
@@ -109,8 +109,8 @@
 	    (*(out_DECOD_OUT_VAL [i])) (*(in_DECOD_OUT_ACK [i]));
 	    if (_param->_have_port_depth)
-	      for (uint32_t i=0; i<_param->_nb_context; i++)
+	      for (uint32_t j=0; j<_param->_nb_context; j++)
 		{
-		  (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_TAIL      [i]));
-		  (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_NB_BRANCH [i]));
+		  (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_TAIL      [j]));
+		  (*(out_DECOD_OUT_VAL [i])) (*(in_DEPTH_NB_BRANCH [j]));
 		}
 	  }
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 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_transition.cpp	(revision 87)
@@ -76,5 +76,4 @@
 		log_printf(TRACE,Decod_queue,FUNCTION,_("  * nb_inst : %d"),reg_NB_INST [context]);
 		log_printf(TRACE,Decod_queue,FUNCTION,_("  * PUSH queue"));
-
 	      }
 	  }
@@ -117,4 +116,49 @@
 	  }
       }
+
+#if (DEBUG >= DEBUG_TRACE) and (DEBUG_Decod_queue)
+    uint32_t x=0;
+    for (std::list<decod_queue_entry_t*>::iterator it=reg_QUEUE->begin();
+	 it!=reg_QUEUE->end();
+	 it++)
+      {
+	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 "
+			 ,i
+			 ,(*it)->_val           [i]
+			 ,(*it)->_context_id    [i]
+			 ,(*it)->_depth         [i]
+			 ,(*it)->_type          [i]
+			 ,(*it)->_operation     [i]
+			 ,(*it)->_is_delay_slot [i]
+			 ,(*it)->_address       [i]
+			 ,(*it)->_has_immediat  [i]
+			 ,(*it)->_immediat      [i]
+			 ,(*it)->_read_ra       [i]
+			 ,(*it)->_num_reg_ra    [i]
+			 ,(*it)->_read_rb       [i]
+			 ,(*it)->_num_reg_rb    [i]
+			 ,(*it)->_read_rc       [i]
+			 ,(*it)->_num_reg_rc    [i]
+			 ,(*it)->_write_rd      [i]
+			 ,(*it)->_num_reg_rd    [i]
+			 ,(*it)->_write_re      [i]
+			 ,(*it)->_num_reg_re    [i]
+			 ,(*it)->_exception_use [i]
+			 );
+	    else
+	      log_printf(TRACE,Decod_queue,FUNCTION," * [%d] %d"
+			 ,i
+			 ,(*it)->_val           [i]
+			 );
+
+	  }
+	x++;
+      }
+#endif
     
 #ifdef STATISTICS
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_mono_context.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_mono_context.cfg	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_mono_context.cfg	(revision 87)
@@ -1,5 +1,5 @@
 Decod_unit
 1	1	+1	# nb_context                   
-1	4	*4	# nb_inst_fetch                [0][nb_context]
+4	8	*2 	# nb_inst_fetch                [0][nb_context]
 1	4	*4	# nb_inst_decod                
 4	16	*4	# size_queue                   
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_multi_context.cfg
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_multi_context.cfg	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/config_multi_context.cfg	(revision 87)
@@ -5,5 +5,5 @@
 1	1	*4	# nb_inst_fetch                [2][nb_context]
 8	8	*4	# nb_inst_fetch                [3][nb_context]
-4	8 	*2	# nb_inst_decod                
+1	8 	*4	# nb_inst_decod                
 16	16	*4	# size_queue                   
 32	32	+1	# size_general_data            
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/main.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/main.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/main.cpp	(revision 87)
@@ -7,4 +7,5 @@
 
 #include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/include/test.h"
+#include "Behavioural/Custom/include/Custom_example.h"
 
 #define NB_PARAMS 8
@@ -85,5 +86,6 @@
 	 _select_load_balancing        ,
 	 _instruction_implemeted       ,
-	 NULL);
+	 &(morpheo::behavioural::custom::example_get_custom_information)
+	 );
       
       msg(_("%s"),param->print(1).c_str());
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp	(revision 87)
@@ -8,7 +8,8 @@
 
 #define NB_ITERATION  1
-#define CYCLE_MAX     (128*NB_ITERATION)
+#define CYCLE_MAX     (10240*NB_ITERATION)
 
 #include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/include/test.h"
+#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h"
 #include "Common/include/Test.h"
 #include "Behavioural/include/Allocation.h"
@@ -20,5 +21,5 @@
 
 #ifdef STATISTICS
-  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
 #endif
 
@@ -210,4 +211,9 @@
 //const uint32_t seed = static_cast<uint32_t>(time(NULL));
 
+  const  int32_t percent_transaction_ifetch  = 100;
+  const  int32_t percent_transaction_decod   = 100;
+  const  int32_t percent_transaction_predict = 100;
+  const  int32_t percent_transaction_event   = 100;
+
   srand(seed);
 
@@ -226,5 +232,204 @@
       LABEL("Iteration %d",iteration);
 
-      SC_START(1);
+      Decod_request request [_param->_nb_context];
+      list<entry_t> respons [_param->_nb_context];
+
+      uint32_t nb_request  = 0;
+
+      uint32_t delay_slot_previous [_param->_nb_context];
+      uint32_t delay_slot_current  [_param->_nb_context];
+      uint32_t delay_slot_next     [_param->_nb_context];
+
+      for (uint32_t i=0; i<_param->_nb_context; i++)
+	{
+	  nb_request += request[i].size();
+	  delay_slot_current  [i] = false;
+	  delay_slot_next     [i] = false;
+
+	  in_DEPTH_TAIL      [i]->write(0);
+	  in_DEPTH_NB_BRANCH [i]->write(0);
+	  in_CONTEXT_DEPTH   [i]->write(0);
+	}
+
+      while (nb_request > 0)
+	{
+	  for (uint32_t i=0; i<_param->_nb_context; i++)
+	    {
+	      delay_slot_previous  [i] = false;
+	      
+	      in_CONTEXT_DECOD_ENABLE [i]->write((rand()%100)<percent_transaction_decod);
+
+	      for (uint32_t j=0; j<_param->_nb_inst_fetch[i]; j++)
+		in_IFETCH_VAL [i][j]->write(0);
+		  
+	      if ((rand()%100)<percent_transaction_ifetch)
+		{
+		  list<entry_t>::iterator it = request[i].begin();
+		  
+		  if (it!=request [i].end())
+		    {
+		      uint32_t lsb = it->_address%_param->_nb_inst_fetch[i];
+		      
+		      in_IFETCH_ADDRESS         [i]->write(it->_address-lsb);
+		      in_IFETCH_BRANCH_STATE    [i]->write(BRANCH_STATE_NONE);
+		      if (_param->_have_port_inst_ifetch_ptr)
+		      in_IFETCH_INST_IFETCH_PTR [i]->write(0);
+
+		      // Alignement
+		      for (uint32_t j=lsb; j<_param->_nb_inst_fetch[i]; j++)
+			{
+			  in_IFETCH_VAL                         [i][j]->write(1);
+			  in_IFETCH_INSTRUCTION                 [i][j]->write(it->_instruction);
+// 			  in_IFETCH_ADDRESS_NEXT                [i]->write(it->_address_next);
+			  if (it->_type == TYPE_BRANCH)
+			  in_IFETCH_BRANCH_STATE                [i]->write(it->_branch_state);
+			  in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]->write(it->_branch_update_prediction_id);
+			  
+			  if ((it->_is_delay_slot) or
+			      ((++it)==request [i].end()))
+			    break;
+			}
+		    }
+		}
+	    }
+	  
+	  {
+	    bool previous_ack = true;
+	      
+	    for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
+	      {
+		bool ack = previous_ack and ((rand()%100)<percent_transaction_decod);
+		in_DECOD_ACK [i]->write(ack);
+		
+		previous_ack = ack;
+
+		in_PREDICT_ACK          [i]->write((rand()%100)<percent_transaction_predict);
+// 		in_PREDICT_CAN_CONTINUE [i]->write(0);
+	      }
+	  }
+
+	  in_CONTEXT_EVENT_ACK->write((rand()%100)<percent_transaction_event);
+
+	  SC_START(0);
+
+	  uint32_t find_event = false;
+	  for (uint32_t i=0; i<_param->_nb_context; i++)
+	    for (uint32_t j=0; j<_param->_nb_inst_fetch[i]; j++)
+	      if (in_IFETCH_VAL[i][j]->read() and out_IFETCH_ACK[i][j]->read())
+		{
+		  LABEL("IFETCH      [%d][%d] : transaction",i,j);
+		 
+		  entry_t entry = request [i].front();
+		  LABEL("  * address 0x%x",entry._address);
+		  
+		  respons [i].push_back(entry);
+		  request [i].pop_front();
+ 
+		  if (entry._type == TYPE_BRANCH)
+		    {
+		      delay_slot_next     [i] = true;
+		      
+		      // find good decod
+		      uint32_t x;
+
+		      for (x=0; x<=_param->_nb_inst_decod; x++)
+			{
+			  if (x==_param->_nb_inst_decod)
+			    TEST_KO("No find predict transaction");
+
+			  Tcontext_t ctxt = (_param->_have_port_context_id)?out_PREDICT_CONTEXT_ID[x]->read():0;
+
+			  if ((ctxt == i) and
+			      (out_PREDICT_VAL [x]->read() and in_PREDICT_ACK [x]->read()))
+			    break;
+			}
+
+		      LABEL("PREDICT     [%d]    : transaction",x  );
+		      
+		      
+		      TEST(Tcontrol_t         , out_PREDICT_MATCH_INST_IFETCH_PTR       [x]->read(),((entry._address)%_param->_nb_inst_fetch[i]) == 0);
+		      TEST(Tbranch_state_t    , out_PREDICT_BRANCH_STATE                [x]->read(), entry._branch_state               );
+		      if (_param->_have_port_branch_update_prediction_id)
+		      TEST(Tprediction_ptr_t  , out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x]->read(), entry._branch_update_prediction_id);
+		      TEST(Tbranch_condition_t, out_PREDICT_BRANCH_CONDITION            [x]->read(), entry._branch_condition           );
+// 		      TEST(Tcontrol_t         , out_PREDICT_BRANCH_STACK_WRITE          [x]->read(), entry._branch_stack_write         );
+		      TEST(Tcontrol_t         , out_PREDICT_BRANCH_DIRECTION            [x]->read(), entry._branch_direction           );
+		      TEST(Tgeneral_data_t    , out_PREDICT_ADDRESS_SRC                 [x]->read(), entry._address                    );
+		      TEST(Tgeneral_data_t    , out_PREDICT_ADDRESS_DEST                [x]->read(), entry._branch_address_dest        );
+		    }
+		  
+// 		  TEST(bool, find_event, false); // can continue decod after event
+		  if (entry._context_event_type != EVENT_TYPE_NONE)
+		    {
+		      find_event = true;
+		      
+		      LABEL("CONTEXT_EVENT      : transaction");
+		      
+		      if (_param->_have_port_context_id)
+			TEST(Tcontext_t     ,out_CONTEXT_EVENT_CONTEXT_ID   ->read(), i);
+		      TEST(Tevent_type_t  ,out_CONTEXT_EVENT_TYPE         ->read(), entry._context_event_type);
+		      TEST(Tcontrol_t     ,out_CONTEXT_EVENT_IS_DELAY_SLOT->read(), entry._is_delay_slot);
+		      TEST(Tgeneral_data_t,out_CONTEXT_EVENT_ADDRESS      ->read(), entry._address      );
+		      TEST(Tgeneral_data_t,out_CONTEXT_EVENT_ADDRESS_EPCR ->read(), entry._address_next );
+		    }
+		  
+		  TEST(bool, delay_slot_previous [i], false); // can't continue
+		  delay_slot_previous [i] = delay_slot_current  [i];
+		  delay_slot_current  [i] = delay_slot_next     [i];
+		  delay_slot_next     [i] = false;
+		}
+
+	  for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
+	    if (out_DECOD_VAL[i]->read() and in_DECOD_ACK[i]->read())
+	      {
+		Tcontext_t context = (_param->_have_port_context_id)?out_DECOD_CONTEXT_ID[i]->read():0;
+
+		LABEL("DECOD       [%d]    : transaction",i  );
+
+		TEST(bool              ,respons [context].empty(), false);
+
+		LABEL(" * context         : %d",context);
+		LABEL(" * instruction     : 0x%x",respons [context].front()._instruction);
+
+		if (_param->_have_port_depth)
+		TEST(Tdepth_t          ,  out_DECOD_DEPTH         [i]->read(), respons [context].front()._depth        );
+		TEST(Ttype_t           ,  out_DECOD_TYPE          [i]->read(), respons [context].front()._type         );
+		TEST(Toperation_t      ,  out_DECOD_OPERATION     [i]->read(), respons [context].front()._operation    );
+		TEST(Tcontrol_t        ,  out_DECOD_IS_DELAY_SLOT [i]->read(), respons [context].front()._is_delay_slot);
+		TEST(Tgeneral_data_t   ,  out_DECOD_ADDRESS       [i]->read(), respons [context].front()._address      );
+		TEST(Tcontrol_t        ,  out_DECOD_HAS_IMMEDIAT  [i]->read(), respons [context].front()._has_immediat );
+		if (respons [context].front()._has_immediat)
+		TEST(Tgeneral_data_t   ,  out_DECOD_IMMEDIAT      [i]->read(), respons [context].front()._immediat     );
+		TEST(Tcontrol_t        ,  out_DECOD_READ_RA       [i]->read(), respons [context].front()._read_ra      );
+		if (respons [context].front()._read_ra)
+		TEST(Tgeneral_address_t,  out_DECOD_NUM_REG_RA    [i]->read(), respons [context].front()._num_reg_ra   );
+		TEST(Tcontrol_t        ,  out_DECOD_READ_RB       [i]->read(), respons [context].front()._read_rb      );
+		if (respons [context].front()._read_rb)
+		TEST(Tgeneral_address_t,  out_DECOD_NUM_REG_RB    [i]->read(), respons [context].front()._num_reg_rb   );
+		TEST(Tcontrol_t        ,  out_DECOD_READ_RC       [i]->read(), respons [context].front()._read_rc      );
+		if (respons [context].front()._read_rc)
+		TEST(Tspecial_address_t,  out_DECOD_NUM_REG_RC    [i]->read(), respons [context].front()._num_reg_rc   );
+		TEST(Tcontrol_t        ,  out_DECOD_WRITE_RD      [i]->read(), respons [context].front()._write_rd     );
+		if (respons [context].front()._write_rd)
+		TEST(Tgeneral_address_t,  out_DECOD_NUM_REG_RD    [i]->read(), respons [context].front()._num_reg_rd   );
+		TEST(Tcontrol_t        ,  out_DECOD_WRITE_RE      [i]->read(), respons [context].front()._write_re     );
+		if (respons [context].front()._write_re)
+		TEST(Tspecial_address_t,  out_DECOD_NUM_REG_RE    [i]->read(), respons [context].front()._num_reg_re   );
+		TEST(Texception_t      ,  out_DECOD_EXCEPTION_USE [i]->read(), respons [context].front()._exception_use);
+
+		respons [context].pop_front();
+		nb_request --;
+	      }
+
+	  TEST(bool, (out_CONTEXT_EVENT_VAL->read() and in_CONTEXT_EVENT_ACK->read()), find_event);
+
+	  SC_START(1);
+	}
+
+      for (uint32_t i=0; i<_param->_nb_context; i++)
+	{
+	  TEST(Tcounter_t,out_NB_INST_DECOD_ALL [i]->read(), respons[i].size());
+	  
+	}
     }
 
@@ -301,5 +506,4 @@
   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS              );
   DELETE_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR         );
-
     }
 #endif
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Parameters.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Parameters.h	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/include/Parameters.h	(revision 87)
@@ -42,4 +42,5 @@
   public : uint32_t            _max_nb_inst_fetch                    ;
 
+  public : uint32_t            _size_address_inst                    ;
   public : uint32_t            _size_context_id                      ;
   public : uint32_t            _size_depth                           ;
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 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp	(revision 87)
@@ -69,6 +69,6 @@
       
       ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id              );
-      ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_general_data            );
-//    ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_general_data            );
+      ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_address_inst            );
+//    ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_address_inst            );
       ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr         );
       ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state            );
@@ -87,5 +87,5 @@
       ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
       ALLOC1_SIGNAL_OUT(out_DECOD_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t        ,1                                   );
-      ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_general_data          );
+      ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_address_inst          );
       ALLOC1_SIGNAL_OUT(out_DECOD_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t        ,1                                   );
       ALLOC1_SIGNAL_OUT(out_DECOD_IMMEDIAT     ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          );
@@ -116,6 +116,6 @@
 //    ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STACK_WRITE         ,"branch_stack_write"         ,Tcontrol_t         ,1                                     );
       ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_DIRECTION           ,"branch_direction"           ,Tcontrol_t         ,1                                     );
-      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC                ,"address_src"                ,Tgeneral_data_t    ,_param->_size_general_data            );
-      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_general_data            );
+      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC                ,"address_src"                ,Tgeneral_data_t    ,_param->_size_address_inst            );
+      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_address_inst            );
 //    ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                                     );
     }
@@ -154,6 +154,6 @@
       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
       ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
-      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_general_data);
-      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_general_data);
+      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_address_inst);
+      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_address_inst);
     }
     
@@ -163,5 +163,5 @@
     {
       src = _name+"_decod";
-      log_printf(INFO,Prediction_unit,FUNCTION,_("Create   : %s"),src.c_str());
+      log_printf(INFO,Decod_unit,FUNCTION,_("Create   : %s"),src.c_str());
       
       _component_decod = new morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod::Decod
@@ -182,5 +182,5 @@
     {
       src = _name+"_decod_queue";
-      log_printf(INFO,Prediction_unit,FUNCTION,_("Create   : %s"),src.c_str());
+      log_printf(INFO,Decod_unit,FUNCTION,_("Create   : %s"),src.c_str());
       
       _component_decod_queue = new morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Decod_queue
@@ -206,5 +206,5 @@
     {
       src = _name+"_decod";
-      log_printf(INFO,Prediction_unit,FUNCTION,_("Instance : %s"),src.c_str());
+      log_printf(INFO,Decod_unit,FUNCTION,_("Instance : %s"),src.c_str());
            
       {
@@ -241,6 +241,5 @@
 				     dest,"ifetch_"+toString(i));
 #endif
-	  
-	      
+
 	  if (_param->_have_port_context_id)
           PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_CONTEXT_ID"                 ,
@@ -400,5 +399,5 @@
     {
       src = _name+"_decod_queue";
-      log_printf(INFO,Prediction_unit,FUNCTION,_("Instance : %s"),src.c_str());
+      log_printf(INFO,Decod_unit,FUNCTION,_("Instance : %s"),src.c_str());
            
       {
@@ -519,13 +518,13 @@
     }
     // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
-     if (DEBUG_Decod_unit == true)
-       _component->test_map();
-
-#ifdef POSITION
-     if (usage_is_set(_usage,USE_POSITION))
-       _component->generate_file();
-#endif
-
-     log_end(Decod_unit,FUNCTION);
+    if (DEBUG_Decod_unit == true)
+      _component->test_map();
+    
+#ifdef POSITION
+    if (usage_is_set(_usage,USE_POSITION))
+      _component->generate_file();
+#endif
+    
+    log_end(Decod_unit,FUNCTION);
   };
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Parameters.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Parameters.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Parameters.cpp	(revision 87)
@@ -49,4 +49,5 @@
     _max_nb_inst_fetch                     = max<uint32_t>(_nb_inst_fetch,_nb_context);
 
+    _size_address_inst                     = size_general_data-2;
     _size_context_id                       = log2(nb_context          );
     _size_depth                            = log2(max<uint32_t>(_nb_branch_speculated,_nb_context));
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vbe/SelfTest/src/test.cpp	(revision 87)
@@ -16,5 +16,5 @@
 
 #ifdef STATISTICS
-  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
 #endif
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/New_Component_vst/SelfTest/src/test.cpp	(revision 87)
@@ -16,5 +16,5 @@
 
 #ifdef STATISTICS
-  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50);
+  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
 #endif
 
Index: /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h	(revision 87)
@@ -10,5 +10,5 @@
 #define MORPHEO_MAJOR_VERSION 0
 #define MORPHEO_MINOR_VERSION 2
-#define MORPHEO_REVISION      86
+#define MORPHEO_REVISION      87
 
 #define MORPHEO_VERSION       morpheo::toString(MORPHEO_MAJOR_VERSION)+"."+morpheo::toString(MORPHEO_MINOR_VERSION)+"."+morpheo::toString(MORPHEO_REVISION)
Index: /trunk/IPs/systemC/processor/Morpheo/Common/include/Max.h
===================================================================
--- /trunk/IPs/systemC/processor/Morpheo/Common/include/Max.h	(revision 86)
+++ /trunk/IPs/systemC/processor/Morpheo/Common/include/Max.h	(revision 87)
@@ -4,6 +4,4 @@
 /*
  * $Id$
- *
- * with a stephane dubuisson initial idea
  *
  * [ Description ]
@@ -14,10 +12,10 @@
 
 namespace morpheo {
-  
-  template<typename T> inline T max (const T * x, uint32_t size1)
+
+  template<typename T> inline T max (const T * x, uint32_t size)
   {
-    T res = 0;
+    T res = x[0];
 
-    for (uint32_t i=0; i<size1; i++)
+    for (uint32_t i=1; i<size; i++)
       if (res<x[i])
 	res = x[i];
@@ -25,4 +23,41 @@
     return res;
   }
+
+  template<typename T> inline T max (const T * x, uint32_t size, uint32_t n)
+  {
+    if ((n==0) or (n>size))
+      return max<T>(x,size);
+
+    // validity array
+    bool val [size];
+    for (uint32_t i=0; i<size; i++)
+      val [i] = true;
+
+    // find min
+    T min = x[0];
+
+    for (uint32_t i=1; i<size; i++)
+      if (min>x[i])
+	min = x[i];
+    
+    // find n max
+    T res = min;
+    for (uint32_t i=0; i<n; i++)
+      {
+
+	uint32_t index = 0;
+	res = min; // always take the minor
+	for (uint32_t j=0; j<size; j++)
+	  if ((res<x[j]) and val[j]) // find greater value, and slot is valid
+	    {
+	      res   = x[j];
+	      index = j;
+	    }
+	val [index] = false; // invalid this value
+      }
+
+    return res;
+  }
+
   
 }; // end namespace morpheo              
