Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/Makefile
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/Makefile	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/Makefile	(revision 88)
@@ -24,4 +24,6 @@
 library_clean			: Context_State_library_clean
 
+local_clean			:
+
 include                         $(DIR_COMPONENT)/Makefile.deps
 include                         $(DIR_MORPHEO)/Behavioural/Makefile.flags
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_min.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_min.cfg	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_min.cfg	(revision 88)
@@ -2,10 +2,8 @@
 1	1	+1	# nb_context
 1	1	+1	# nb_decod_unit
-1	1	+1	# nb_ooo_engine
 1	1	+1	# nb_inst_branch_complete
 0	0	+1	# size_depth                    [0] [nb_context]
 30	30	+1	# size_address			
 1	1	+1	# size_inst_decod               [0] [nb_decod_unit]
-1	1	+1	# size_inst_commit              [0] [nb_ooo_engine]
+1	1	+1	# size_inst_commit
 0	0	+1	# link_context_to_decod_unit    [0] [nb_context]
-0	0	+1	# link_decod_unit_to_ooo_engine [0] [nb_decod_unit]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_mono_context.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_mono_context.cfg	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_mono_context.cfg	(revision 88)
@@ -2,10 +2,8 @@
 1	1	+1	# nb_context
 1	1	*4	# nb_decod_unit
-1	1	*4	# nb_ooo_engine
 1	4	*4	# nb_inst_branch_complete
 0	2	+1	# size_depth                    [0] [nb_context]
 30	30	+1	# size_address			
 1	4	*4	# size_inst_decod               [0] [nb_decod_unit]
-1	4	*4	# size_inst_commit              [0] [nb_ooo_engine]
+1	4	*4	# size_inst_commit
 0	0	+1	# link_context_to_decod_unit    [0] [nb_context]
-0	0	+1	# link_decod_unit_to_ooo_engine [0] [nb_decod_unit]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_multi_context.cfg
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_multi_context.cfg	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/config_multi_context.cfg	(revision 88)
@@ -2,5 +2,4 @@
 8	8	+1	# nb_context
 4	4	*4	# nb_decod_unit
-2	2	*4	# nb_ooo_engine
 2	2	*4	# nb_inst_branch_complete
 4	4	+1	# size_depth                    [0] [nb_context]
@@ -17,6 +16,5 @@
 2	2	*4	# size_inst_decod               [2] [nb_decod_unit]
 4	4	*4	# size_inst_decod               [3] [nb_decod_unit]
-8	8	*4	# size_inst_commit              [0] [nb_ooo_engine]
-2	2	*4	# size_inst_commit              [1] [nb_ooo_engine]
+8	8	*4	# size_inst_commit
 0	0	+1	# link_context_to_decod_unit    [0] [nb_context]
 1	1	+1	# link_context_to_decod_unit    [1] [nb_context]
@@ -27,6 +25,2 @@
 2	2	+1	# link_context_to_decod_unit    [6] [nb_context]
 3	3	+1	# link_context_to_decod_unit    [7] [nb_context]
-0	0	+1	# link_decod_unit_to_ooo_engine [0] [nb_decod_unit]
-1	1	+1	# link_decod_unit_to_ooo_engine [1] [nb_decod_unit]
-0	0	+1	# link_decod_unit_to_ooo_engine [2] [nb_decod_unit]
-1	1	+1	# link_decod_unit_to_ooo_engine [3] [nb_decod_unit]
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/main.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/main.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/main.cpp	(revision 88)
@@ -16,12 +16,10 @@
   err (_(" * nb_context                                    (uint32_t)\n"));
   err (_(" * nb_decod_unit                                 (uint32_t)\n"));
-  err (_(" * nb_ooo_engine                                 (uint32_t)\n"));
   err (_(" * nb_inst_branch_complete                       (uint32_t)\n"));
   err (_(" * size_depth                    [nb_context]	   (uint32_t)\n"));
   err (_(" * size_address                                  (uint32_t)\n"));
   err (_(" * size_inst_decod               [nb_decod_unit] (uint32_t)\n"));
-  err (_(" * size_inst_commit              [nb_ooo_engine] (uint32_t)\n"));
+  err (_(" * size_inst_commit                              (uint32_t)\n"));
   err (_(" * link_context_to_decod_unit    [nb_context]	   (uint32_t)\n"));
-  err (_(" * link_decod_unit_to_ooo_engine [nb_decod_unit] (uint32_t)\n"));
 
   exit (1);
@@ -45,8 +43,7 @@
   uint32_t   _nb_context              = fromString<uint32_t>(argv[x++]);
   uint32_t   _nb_decod_unit           = fromString<uint32_t>(argv[x++]);
-  uint32_t   _nb_ooo_engine           = fromString<uint32_t>(argv[x++]);
   uint32_t   _nb_inst_branch_complete = fromString<uint32_t>(argv[x++]);
 
-  if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_context+2*_nb_decod_unit+1*_nb_ooo_engine))
+  if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_context+1*_nb_decod_unit))
     usage (argc, argv);
 
@@ -60,13 +57,8 @@
   for (uint32_t i=0; i<_nb_decod_unit; i++)
     _size_inst_decod [i] = fromString<uint32_t>(argv[x++]);
-  uint32_t * _size_inst_commit              = new uint32_t [_nb_ooo_engine];
-  for (uint32_t i=0; i<_nb_ooo_engine; i++)
-    _size_inst_commit [i] = fromString<uint32_t>(argv[x++]);
+  uint32_t   _size_inst_commit              = fromString<uint32_t>(argv[x++]);
   uint32_t * _link_context_to_decod_unit    = new uint32_t [_nb_context];
   for (uint32_t i=0; i<_nb_context; i++)
     _link_context_to_decod_unit [i] = fromString<uint32_t>(argv[x++]);
-  uint32_t * _link_decod_unit_to_ooo_engine = new uint32_t [_nb_decod_unit];
-  for (uint32_t i=0; i<_nb_decod_unit; i++)
-    _link_decod_unit_to_ooo_engine [i] = fromString<uint32_t>(argv[x++]);
 
   int _return = EXIT_SUCCESS;
@@ -76,5 +68,4 @@
 	(_nb_context                   ,
 	 _nb_decod_unit                ,
-	 _nb_ooo_engine                ,
 	 _nb_inst_branch_complete      ,
 	 _size_depth                   ,
@@ -83,5 +74,5 @@
 	 _size_inst_commit             ,
 	 _link_context_to_decod_unit   ,
-	 _link_decod_unit_to_ooo_engine
+         true
 	 );
       
@@ -98,7 +89,5 @@
   delete [] _size_depth;                   
   delete [] _size_inst_decod;              
-  delete [] _size_inst_commit;             
   delete [] _link_context_to_decod_unit;   
-  delete [] _link_decod_unit_to_ooo_engine;
 
   try 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp	(revision 88)
@@ -48,4 +48,12 @@
   sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
 
+  ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_VAL               ," in_BRANCH_EVENT_VAL               ",Tcontrol_t   ,_param->_nb_context);
+  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ACK               ,"out_BRANCH_EVENT_ACK               ",Tcontrol_t   ,_param->_nb_context);
+//ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID        ," in_BRANCH_EVENT_CONTEXT_ID        ",Tcontext_t   ,_param->_nb_context);
+//ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_DEPTH             ," in_BRANCH_EVENT_DEPTH             ",Tdepth_t     ,_param->_nb_context);
+//ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_MISS_PREDICTION   ," in_BRANCH_EVENT_MISS_PREDICTION   ",Tcontrol_t   ,_param->_nb_context);
+  ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ADDRESS_SRC       ," in_BRANCH_EVENT_ADDRESS_SRC       ",Taddress_t   ,_param->_nb_context);
+  ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ADDRESS_DEST      ," in_BRANCH_EVENT_ADDRESS_DEST      ",Taddress_t   ,_param->_nb_context);
+
   ALLOC1_SC_SIGNAL( in_DECOD_EVENT_VAL                ," in_DECOD_EVENT_VAL                ",Tcontrol_t   ,_param->_nb_decod_unit);
   ALLOC1_SC_SIGNAL(out_DECOD_EVENT_ACK                ,"out_DECOD_EVENT_ACK                ",Tcontrol_t   ,_param->_nb_decod_unit);
@@ -57,14 +65,14 @@
   ALLOC1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR       ," in_DECOD_EVENT_ADDRESS_EPCR       ",Taddress_t   ,_param->_nb_decod_unit);
 						      				           
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_VAL               ," in_COMMIT_EVENT_VAL               ",Tcontrol_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_ACK               ,"out_COMMIT_EVENT_ACK               ",Tcontrol_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID        ," in_COMMIT_EVENT_CONTEXT_ID        ",Tcontext_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_DEPTH             ," in_COMMIT_EVENT_DEPTH             ",Tdepth_t     ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_TYPE              ," in_COMMIT_EVENT_TYPE              ",Tevent_type_t,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT     ," in_COMMIT_EVENT_IS_DELAY_SLOT     ",Tcontrol_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS           ," in_COMMIT_EVENT_ADDRESS           ",Taddress_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Taddress_t   ,_param->_nb_ooo_engine);
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_VAL               ," in_COMMIT_EVENT_VAL               ",Tcontrol_t   );
+  ALLOC_SC_SIGNAL (out_COMMIT_EVENT_ACK               ,"out_COMMIT_EVENT_ACK               ",Tcontrol_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID        ," in_COMMIT_EVENT_CONTEXT_ID        ",Tcontext_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_DEPTH             ," in_COMMIT_EVENT_DEPTH             ",Tdepth_t     );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_TYPE              ," in_COMMIT_EVENT_TYPE              ",Tevent_type_t);
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT     ," in_COMMIT_EVENT_IS_DELAY_SLOT     ",Tcontrol_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS           ," in_COMMIT_EVENT_ADDRESS           ",Taddress_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR      ," in_COMMIT_EVENT_ADDRESS_EPCR      ",Taddress_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ",Tcontrol_t   );
+  ALLOC_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      ," in_COMMIT_EVENT_ADDRESS_EEAR      ",Taddress_t   );
 
   ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL            ," in_BRANCH_COMPLETE_VAL            ",Tcontrol_t   ,_param->_nb_inst_branch_complete);
@@ -78,7 +86,7 @@
 
 						      				           
-  ALLOC1_SC_SIGNAL( in_NB_INST_DECOD_ALL              ," in_NB_INST_DECOD_ALL              ",Tcounter_t   ,_param->_nb_decod_unit);
-  ALLOC1_SC_SIGNAL( in_NB_INST_COMMIT_ALL             ," in_NB_INST_COMMIT_ALL             ",Tcounter_t   ,_param->_nb_ooo_engine);
-  ALLOC1_SC_SIGNAL( in_NB_INST_COMMIT_MEM             ," in_NB_INST_COMMIT_MEM             ",Tcounter_t   ,_param->_nb_ooo_engine);
+  ALLOC1_SC_SIGNAL( in_NB_INST_DECOD_ALL              ," in_NB_INST_DECOD_ALL              ",Tcounter_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL( in_NB_INST_COMMIT_ALL             ," in_NB_INST_COMMIT_ALL             ",Tcounter_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL( in_NB_INST_COMMIT_MEM             ," in_NB_INST_COMMIT_MEM             ",Tcounter_t   ,_param->_nb_context   );
 						      				           
   ALLOC1_SC_SIGNAL(out_EVENT_VAL                      ,"out_EVENT_VAL                      ",Tcontrol_t   ,_param->_nb_context   );
@@ -89,16 +97,21 @@
   ALLOC1_SC_SIGNAL(out_EVENT_IS_DS_TAKE               ,"out_EVENT_IS_DS_TAKE               ",Tcontrol_t   ,_param->_nb_context   );
 						      				           
-  ALLOC1_SC_SIGNAL(out_SPR_VAL                        ,"out_SPR_VAL                        ",Tcontrol_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL( in_SPR_ACK                        ," in_SPR_ACK                        ",Tcontrol_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL(out_SPR_EPCR                       ,"out_SPR_EPCR                       ",Taddress_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL(out_SPR_EEAR                       ,"out_SPR_EEAR                       ",Taddress_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL(out_SPR_EEAR_WEN                   ,"out_SPR_EEAR_WEN                   ",Tcontrol_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL(out_SPR_SR_DSX                     ,"out_SPR_SR_DSX                     ",Tcontrol_t   ,_param->_nb_context   );
-  ALLOC1_SC_SIGNAL(out_SPR_SR_TO_ESR                  ,"out_SPR_SR_TO_ESR                  ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_VAL                  ,"out_SPR_EVENT_VAL                  ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL( in_SPR_EVENT_ACK                  ," in_SPR_EVENT_ACK                  ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_EPCR                 ,"out_SPR_EVENT_EPCR                 ",Taddress_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_EEAR                 ,"out_SPR_EVENT_EEAR                 ",Taddress_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_EEAR_WEN             ,"out_SPR_EVENT_EEAR_WEN             ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_SR_DSX               ,"out_SPR_EVENT_SR_DSX               ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL(out_SPR_EVENT_SR_TO_ESR            ,"out_SPR_EVENT_SR_TO_ESR            ",Tcontrol_t   ,_param->_nb_context   );
 						      				           
   ALLOC1_SC_SIGNAL(out_CONTEXT_DECOD_ENABLE           ,"out_CONTEXT_DECOD_ENABLE           ",Tcontrol_t   ,_param->_nb_context   );
 						      				           
-  ALLOC1_SC_SIGNAL( in_DEPTH_TAIL                     ," in_DEPTH_TAIL                     ",Tdepth_t     ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL( in_DEPTH_MIN                      ," in_DEPTH_MIN                      ",Tdepth_t     ,_param->_nb_context   );
   
+  ALLOC1_SC_SIGNAL( in_SPR_SR_IEE                     ," in_SPR_SR_IEE                     ",Tcontrol_t   ,_param->_nb_context   );
+  ALLOC1_SC_SIGNAL( in_SPR_SR_EPH                     ," in_SPR_SR_EPH                     ",Tcontrol_t   ,_param->_nb_context   );
+
+  ALLOC1_SC_SIGNAL( in_INTERRUPT_ENABLE               ," in_INTERRUPT_ENABLE               ",Tcontrol_t   ,_param->_nb_context   );
+
   /********************************************************
    * Instanciation
@@ -110,9 +123,16 @@
   (*(_Context_State->in_NRESET))       (*(in_NRESET));
 
+  INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_VAL               ,_param->_nb_context);
+  INSTANCE1_SC_SIGNAL(_Context_State,out_BRANCH_EVENT_ACK               ,_param->_nb_context);
+//INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_CONTEXT_ID        ,_param->_nb_context);
+//INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_DEPTH             ,_param->_nb_context);
+//INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_MISS_PREDICTION   ,_param->_nb_context);
+  INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_ADDRESS_SRC       ,_param->_nb_context);
+  INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_EVENT_ADDRESS_DEST      ,_param->_nb_context);
   INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_VAL                ,_param->_nb_decod_unit);
   INSTANCE1_SC_SIGNAL(_Context_State,out_DECOD_EVENT_ACK                ,_param->_nb_decod_unit);
   if (_param->_have_port_context_id)				        
   INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_CONTEXT_ID         ,_param->_nb_decod_unit);
-  if (_param->_have_port_max_depth)				        
+  if (_param->_have_port_depth)				        
   INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_DEPTH              ,_param->_nb_decod_unit);
   INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_TYPE               ,_param->_nb_decod_unit);
@@ -121,16 +141,16 @@
   INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_ADDRESS_EPCR       ,_param->_nb_decod_unit);
 								        
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_VAL               ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State,out_COMMIT_EVENT_ACK               ,_param->_nb_ooo_engine);
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_VAL               );
+  INSTANCE_SC_SIGNAL (_Context_State,out_COMMIT_EVENT_ACK               );
   if (_param->_have_port_context_id)				        
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_CONTEXT_ID        ,_param->_nb_ooo_engine);
-  if (_param->_have_port_max_depth)				        
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_DEPTH             ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_TYPE              ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT     ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS           ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR      ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_CONTEXT_ID        );
+  if (_param->_have_port_depth)				        
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_DEPTH             );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_TYPE              );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT     );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS           );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR      );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
+  INSTANCE_SC_SIGNAL (_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR      );
 
   INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_VAL            ,_param->_nb_inst_branch_complete);
@@ -138,5 +158,5 @@
   if (_param->_have_port_context_id)				        
   INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_CONTEXT_ID     ,_param->_nb_inst_branch_complete);
-  if (_param->_have_port_max_depth)				        
+  if (_param->_have_port_depth)				        
   INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_DEPTH          ,_param->_nb_inst_branch_complete);
   INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
@@ -145,7 +165,7 @@
   INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_ADDRESS_DEST   ,_param->_nb_inst_branch_complete);
 
-  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_DECOD_ALL              ,_param->_nb_decod_unit);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_COMMIT_ALL             ,_param->_nb_ooo_engine);
-  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_COMMIT_MEM             ,_param->_nb_ooo_engine);
+  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_DECOD_ALL              ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_COMMIT_ALL             ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State, in_NB_INST_COMMIT_MEM             ,_param->_nb_context   );
 								        
   INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_VAL                      ,_param->_nb_context   );
@@ -156,17 +176,22 @@
   INSTANCE1_SC_SIGNAL(_Context_State,out_EVENT_IS_DS_TAKE               ,_param->_nb_context   );
 								        
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_VAL                        ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_ACK                        ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EPCR                       ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EEAR                       ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EEAR_WEN                   ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_SR_DSX                     ,_param->_nb_context   );
-  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_SR_TO_ESR                  ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_VAL                  ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_EVENT_ACK                  ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_EPCR                 ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_EEAR                 ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_EEAR_WEN             ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_SR_DSX               ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State,out_SPR_EVENT_SR_TO_ESR            ,_param->_nb_context   );
 								        
   INSTANCE1_SC_SIGNAL(_Context_State,out_CONTEXT_DECOD_ENABLE           ,_param->_nb_context   );
 
   for (uint32_t i=0; i<_param->_nb_context; i++)
-    if (_param->_have_port_depth [i])
-      INSTANCE_SC_SIGNAL(_Context_State, in_DEPTH_TAIL [i]);
+    if (_param->_have_port_depth)
+      INSTANCE_SC_SIGNAL(_Context_State, in_DEPTH_MIN [i]);
+
+  INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_SR_IEE                     ,_param->_nb_context   );
+  INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_SR_EPH                     ,_param->_nb_context   );
+
+  INSTANCE1_SC_SIGNAL(_Context_State, in_INTERRUPT_ENABLE               ,_param->_nb_context   );
 
   msg(_("<%s> : Start Simulation ............\n"),name.c_str());
@@ -206,6 +231,5 @@
       for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
 	in_DECOD_EVENT_VAL [i]->write(0);
-      for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	in_COMMIT_EVENT_VAL [i]->write(0);
+      in_COMMIT_EVENT_VAL ->write(0);
       for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
 	in_BRANCH_COMPLETE_VAL [i]->write(0);
@@ -213,6 +237,10 @@
       for (uint32_t i=0; i<_param->_nb_context; i++)
 	{
-	  in_EVENT_ACK [i]->write(0);
-	  in_SPR_ACK   [i]->write(0);
+          in_BRANCH_EVENT_VAL [i]->write(0);
+	  in_EVENT_ACK        [i]->write(0);
+	  in_SPR_EVENT_ACK    [i]->write(0);
+          in_SPR_SR_IEE       [i]->write(0);
+          in_SPR_SR_EPH       [i]->write(0);
+          in_INTERRUPT_ENABLE [i]->write(0);
 
 	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[i]->read(), 1);
@@ -220,10 +248,8 @@
 
       for (uint32_t i=0; i<_param->_nb_context; i++)
-	if (_param->_have_port_depth [i])
-	  in_DEPTH_TAIL [i]->write(i%_param->_size_depth[i]);
+	if (_param->_have_port_depth)
+	  in_DEPTH_MIN  [i]->write((_param->_array_size_depth[i]==0)?0:(i%_param->_array_size_depth[i]));
       
       uint32_t context    = rand()%_param->_nb_context;
-      uint32_t decod_unit = _param->_link_context_to_decod_unit    [context];
-      uint32_t ooo_engine = _param->_link_decod_unit_to_ooo_engine [decod_unit];
 
       if (1)
@@ -232,7 +258,7 @@
 	  
 	  LABEL("msync (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_decod_unit;
@@ -242,6 +268,6 @@
 	  in_DECOD_EVENT_ADDRESS       [port]->write(0x100);
 	  in_DECOD_EVENT_ADDRESS_EPCR  [port]->write(0xdeadbeef);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH         [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_DECOD_EVENT_DEPTH         [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE          [port]->write(EVENT_TYPE_MSYNC);
 	  
@@ -263,7 +289,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -274,15 +300,15 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
 	  SC_START(1);
 	  
 	  LABEL("msync (wait end)");
 	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 0);
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  SC_START(3);
-	  
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  SC_START(3);
+	  
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  SC_START(1);
 	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
@@ -294,7 +320,7 @@
 
 	  LABEL("psync (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_decod_unit;
@@ -304,6 +330,6 @@
 	  in_DECOD_EVENT_ADDRESS       [port]->write(0x200);
 	  in_DECOD_EVENT_ADDRESS_EPCR  [port]->write(0xdeadbebe);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH         [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+          in_DECOD_EVENT_DEPTH         [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE          [port]->write(EVENT_TYPE_PSYNC);
 	  
@@ -325,7 +351,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -361,7 +387,7 @@
 
 	  LABEL("csync (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_decod_unit;
@@ -371,6 +397,6 @@
 	  in_DECOD_EVENT_ADDRESS       [port]->write(0x200);
 	  in_DECOD_EVENT_ADDRESS_EPCR  [port]->write(0xdeadbebe);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH         [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_DECOD_EVENT_DEPTH         [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE          [port]->write(EVENT_TYPE_CSYNC);
 	  
@@ -392,7 +418,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -426,7 +452,7 @@
 	  
 	  LABEL("spr (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_decod_unit;
@@ -436,6 +462,6 @@
 	  in_DECOD_EVENT_ADDRESS       [port]->write(0x100);
 	  in_DECOD_EVENT_ADDRESS_EPCR  [port]->write(0xdeadbeef);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH         [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_DECOD_EVENT_DEPTH         [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE          [port]->write(EVENT_TYPE_SPR_ACCESS);
 	  
@@ -457,7 +483,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -468,15 +494,15 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
 	  SC_START(1);
 	  
 	  LABEL("spr (wait end)");
 	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 0);
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  
-	  SC_START(3);
-	  
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  
+	  SC_START(3);
+	  
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
 	  SC_START(1);
 	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
@@ -488,13 +514,13 @@
 	  
 	  LABEL("miss (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_inst_branch_complete;
 	  
 	  in_BRANCH_COMPLETE_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_BRANCH_COMPLETE_DEPTH            [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_BRANCH_COMPLETE_DEPTH            [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_BRANCH_COMPLETE_ADDRESS_SRC      [port]->write(0x400);
 	  in_BRANCH_COMPLETE_ADDRESS_DEST     [port]->write(0x500);
@@ -519,7 +545,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -558,13 +584,13 @@
 	  
 	  LABEL("miss (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
 	  
 	  uint32_t port = rand()%_param->_nb_inst_branch_complete;
 	  
 	  in_BRANCH_COMPLETE_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_BRANCH_COMPLETE_DEPTH            [port]->write((context+1)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_BRANCH_COMPLETE_DEPTH            [port]->write((_param->_array_size_depth[context]==0)?0:((context+1)%_param->_array_size_depth[context]));
 	  in_BRANCH_COMPLETE_ADDRESS_SRC      [port]->write(0x600);
 	  in_BRANCH_COMPLETE_ADDRESS_DEST     [port]->write(0x700);
@@ -589,7 +615,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -626,13 +652,13 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  uint32_t port = rand()%_param->_nb_decod_unit;
 	  
 	  in_DECOD_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_DECOD_EVENT_DEPTH            [port]->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
 	  in_DECOD_EVENT_IS_DELAY_SLOT    [port]->write(0);
@@ -657,7 +683,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -693,24 +719,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0x900);
-		//TEST(Taddress_t,out_SPR_EEAR      [context]->read(),);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0x900);
+		//TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
 
@@ -720,13 +746,13 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  uint32_t port = rand()%_param->_nb_decod_unit;
 	  
 	  in_DECOD_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_DECOD_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
+	  if (_param->_have_port_depth)
+	  in_DECOD_EVENT_DEPTH            [port]->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
 	  in_DECOD_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
 	  in_DECOD_EVENT_IS_DELAY_SLOT    [port]->write(1);
@@ -751,7 +777,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -787,24 +813,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0x900);
-		//TEST(Taddress_t,out_SPR_EEAR      [context]->read(),);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),1);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0x900);
+		//TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),1);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
 
@@ -814,31 +840,29 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
-	  
-	  in_COMMIT_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_COMMIT_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
-	  in_COMMIT_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
-	  in_COMMIT_EVENT_IS_DELAY_SLOT    [port]->write(0);
-	  in_COMMIT_EVENT_ADDRESS          [port]->write(0xa00);
-	  in_COMMIT_EVENT_ADDRESS_EPCR     [port]->write(0xb00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR     [port]->write(0xc00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL [port]->write(0);
-
-	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
-	  
-	  do
-	    {
-	      in_COMMIT_EVENT_VAL [port]->write(rand()%percent_transaction_commit_event);
-	      
-	      SC_START(1);
-	    }
-	  while (not ( in_COMMIT_EVENT_VAL [port]->read() and
-		       out_COMMIT_EVENT_ACK [port]->read()));
-	  in_COMMIT_EVENT_VAL [port]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  in_COMMIT_EVENT_CONTEXT_ID       ->write(context);
+	  if (_param->_have_port_depth)
+	  in_COMMIT_EVENT_DEPTH            ->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
+	  in_COMMIT_EVENT_TYPE             ->write(EVENT_TYPE_EXCEPTION);
+	  in_COMMIT_EVENT_IS_DELAY_SLOT    ->write(0);
+	  in_COMMIT_EVENT_ADDRESS          ->write(0xa00);
+	  in_COMMIT_EVENT_ADDRESS_EPCR     ->write(0xb00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR     ->write(0xc00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL ->write(0);
+
+	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
+	  
+	  do
+	    {
+	      in_COMMIT_EVENT_VAL ->write(rand()%percent_transaction_commit_event);
+	      
+	      SC_START(1);
+	    }
+	  while (not ( in_COMMIT_EVENT_VAL ->read() and
+		       out_COMMIT_EVENT_ACK ->read()));
+	  in_COMMIT_EVENT_VAL ->write(0);
 	  
 	  LABEL("exception (wait end)");
@@ -847,7 +871,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -883,24 +907,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0xb00);
-		  TEST(Taddress_t,out_SPR_EEAR      [context]->read(),0xc00);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0xb00);
+		  TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),0xc00);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
       
@@ -910,31 +934,29 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
-	  
-	  in_COMMIT_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_COMMIT_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
-	  in_COMMIT_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
-	  in_COMMIT_EVENT_IS_DELAY_SLOT    [port]->write(1);
-	  in_COMMIT_EVENT_ADDRESS          [port]->write(0xd00);
-	  in_COMMIT_EVENT_ADDRESS_EPCR     [port]->write(0xe00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR     [port]->write(0xf00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL [port]->write(0);
-
-	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
-	  
-	  do
-	    {
-	      in_COMMIT_EVENT_VAL [port]->write(rand()%percent_transaction_commit_event);
-	      
-	      SC_START(1);
-	    }
-	  while (not ( in_COMMIT_EVENT_VAL [port]->read() and
-		       out_COMMIT_EVENT_ACK [port]->read()));
-	  in_COMMIT_EVENT_VAL [port]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  in_COMMIT_EVENT_CONTEXT_ID       ->write(context);
+	  if (_param->_have_port_depth)
+	  in_COMMIT_EVENT_DEPTH            ->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
+	  in_COMMIT_EVENT_TYPE             ->write(EVENT_TYPE_EXCEPTION);
+	  in_COMMIT_EVENT_IS_DELAY_SLOT    ->write(1);
+	  in_COMMIT_EVENT_ADDRESS          ->write(0xd00);
+	  in_COMMIT_EVENT_ADDRESS_EPCR     ->write(0xe00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR     ->write(0xf00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL ->write(0);
+
+	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
+	  
+	  do
+	    {
+	      in_COMMIT_EVENT_VAL ->write(rand()%percent_transaction_commit_event);
+	      
+	      SC_START(1);
+	    }
+	  while (not ( in_COMMIT_EVENT_VAL ->read() and
+		       out_COMMIT_EVENT_ACK ->read()));
+	  in_COMMIT_EVENT_VAL ->write(0);
 	  
 	  LABEL("exception (wait end)");
@@ -943,7 +965,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -979,24 +1001,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0xe00);
-		  TEST(Taddress_t,out_SPR_EEAR      [context]->read(),0xf00);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),1);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0xe00);
+		  TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),0xf00);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),1);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
 
@@ -1006,31 +1028,29 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
-	  
-	  in_COMMIT_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_COMMIT_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
-	  in_COMMIT_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
-	  in_COMMIT_EVENT_IS_DELAY_SLOT    [port]->write(0);
-	  in_COMMIT_EVENT_ADDRESS          [port]->write(0xa00);
-	  in_COMMIT_EVENT_ADDRESS_EPCR     [port]->write(0xb00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR     [port]->write(0xc00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL [port]->write(1);
-
-	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
-	  
-	  do
-	    {
-	      in_COMMIT_EVENT_VAL [port]->write(rand()%percent_transaction_commit_event);
-	      
-	      SC_START(1);
-	    }
-	  while (not ( in_COMMIT_EVENT_VAL [port]->read() and
-		       out_COMMIT_EVENT_ACK [port]->read()));
-	  in_COMMIT_EVENT_VAL [port]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  in_COMMIT_EVENT_CONTEXT_ID       ->write(context);
+	  if (_param->_have_port_depth)
+	  in_COMMIT_EVENT_DEPTH            ->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
+	  in_COMMIT_EVENT_TYPE             ->write(EVENT_TYPE_EXCEPTION);
+	  in_COMMIT_EVENT_IS_DELAY_SLOT    ->write(0);
+	  in_COMMIT_EVENT_ADDRESS          ->write(0xa00);
+	  in_COMMIT_EVENT_ADDRESS_EPCR     ->write(0xb00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR     ->write(0xc00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL ->write(1);
+
+	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
+	  
+	  do
+	    {
+	      in_COMMIT_EVENT_VAL ->write(rand()%percent_transaction_commit_event);
+	      
+	      SC_START(1);
+	    }
+	  while (not ( in_COMMIT_EVENT_VAL ->read() and
+		       out_COMMIT_EVENT_ACK ->read()));
+	  in_COMMIT_EVENT_VAL ->write(0);
 	  
 	  LABEL("exception (wait end)");
@@ -1039,7 +1059,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -1075,24 +1095,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0xb00);
-		  TEST(Taddress_t,out_SPR_EEAR      [context]->read(),0xc00);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),1);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),0);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0xb00);
+		  TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),0xc00);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),1);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),0);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
       
@@ -1102,31 +1122,29 @@
 	  
 	  LABEL("exception (begin)");
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(1);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(1);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(1);
-	  
-	  uint32_t port = rand()%_param->_nb_ooo_engine;
-	  
-	  in_COMMIT_EVENT_CONTEXT_ID       [port]->write(context);
-	  if (_param->_have_port_depth [context])
-	  in_COMMIT_EVENT_DEPTH            [port]->write((context)%_param->_size_depth[context]);
-	  in_COMMIT_EVENT_TYPE             [port]->write(EVENT_TYPE_EXCEPTION);
-	  in_COMMIT_EVENT_IS_DELAY_SLOT    [port]->write(1);
-	  in_COMMIT_EVENT_ADDRESS          [port]->write(0xd00);
-	  in_COMMIT_EVENT_ADDRESS_EPCR     [port]->write(0xe00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR     [port]->write(0xf00);
-	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL [port]->write(1);
-
-	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
-	  
-	  do
-	    {
-	      in_COMMIT_EVENT_VAL [port]->write(rand()%percent_transaction_commit_event);
-	      
-	      SC_START(1);
-	    }
-	  while (not ( in_COMMIT_EVENT_VAL [port]->read() and
-		       out_COMMIT_EVENT_ACK [port]->read()));
-	  in_COMMIT_EVENT_VAL [port]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(1);
+	  in_NB_INST_COMMIT_ALL [context]->write(1);
+	  in_NB_INST_COMMIT_MEM [context]->write(1);
+	  
+	  in_COMMIT_EVENT_CONTEXT_ID       ->write(context);
+	  if (_param->_have_port_depth)
+	  in_COMMIT_EVENT_DEPTH            ->write((_param->_array_size_depth[context]==0)?0:((context)%_param->_array_size_depth[context]));
+	  in_COMMIT_EVENT_TYPE             ->write(EVENT_TYPE_EXCEPTION);
+	  in_COMMIT_EVENT_IS_DELAY_SLOT    ->write(1);
+	  in_COMMIT_EVENT_ADDRESS          ->write(0xd00);
+	  in_COMMIT_EVENT_ADDRESS_EPCR     ->write(0xe00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR     ->write(0xf00);
+	  in_COMMIT_EVENT_ADDRESS_EEAR_VAL ->write(1);
+
+	  TEST(Tcontrol_t, out_CONTEXT_DECOD_ENABLE[context]->read(), 1);
+	  
+	  do
+	    {
+	      in_COMMIT_EVENT_VAL ->write(rand()%percent_transaction_commit_event);
+	      
+	      SC_START(1);
+	    }
+	  while (not ( in_COMMIT_EVENT_VAL ->read() and
+		       out_COMMIT_EVENT_ACK ->read()));
+	  in_COMMIT_EVENT_VAL ->write(0);
 	  
 	  LABEL("exception (wait end)");
@@ -1135,7 +1153,7 @@
 	  SC_START(3);
 	  
-	  in_NB_INST_DECOD_ALL  [decod_unit]->write(0);
-	  in_NB_INST_COMMIT_ALL [ooo_engine]->write(0);
-	  in_NB_INST_COMMIT_MEM [ooo_engine]->write(0);
+	  in_NB_INST_DECOD_ALL  [context]->write(0);
+	  in_NB_INST_COMMIT_ALL [context]->write(0);
+	  in_NB_INST_COMMIT_MEM [context]->write(0);
 	  
 	  SC_START(1);
@@ -1171,24 +1189,24 @@
 	  do
 	    {
-	      in_SPR_ACK [context]->write(rand()%percent_transaction_spr);
-	  
-	      SC_START(0);
-	  
-	      if (out_SPR_VAL [context]->read() and in_SPR_ACK [context]->read())
-	        {
-		  TEST(Taddress_t,out_SPR_EPCR      [context]->read(),0xe00);
-		  TEST(Taddress_t,out_SPR_EEAR      [context]->read(),0xf00);
-		  TEST(Tcontrol_t,out_SPR_EEAR_WEN  [context]->read(),1);
-		  TEST(Tcontrol_t,out_SPR_SR_DSX    [context]->read(),1);
-		  TEST(Tcontrol_t,out_SPR_SR_TO_ESR [context]->read(),1);
-		  
-		  find = true;
-	        }
-	      
-	      SC_START(1);
-	    }
-	  while (not find);
-
-	  in_SPR_ACK [context]->write(0);
+	      in_SPR_EVENT_ACK [context]->write(rand()%percent_transaction_spr);
+	  
+	      SC_START(0);
+	  
+	      if (out_SPR_EVENT_VAL [context]->read() and in_SPR_EVENT_ACK [context]->read())
+	        {
+		  TEST(Taddress_t,out_SPR_EVENT_EPCR      [context]->read(),0xe00);
+		  TEST(Taddress_t,out_SPR_EVENT_EEAR      [context]->read(),0xf00);
+		  TEST(Tcontrol_t,out_SPR_EVENT_EEAR_WEN  [context]->read(),1);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_DSX    [context]->read(),1);
+		  TEST(Tcontrol_t,out_SPR_EVENT_SR_TO_ESR [context]->read(),1);
+		  
+		  find = true;
+	        }
+	      
+	      SC_START(1);
+	    }
+	  while (not find);
+
+	  in_SPR_EVENT_ACK [context]->write(0);
 	}
 
@@ -1210,4 +1228,11 @@
   delete in_NRESET;
 
+  DELETE1_SC_SIGNAL( in_BRANCH_EVENT_VAL               ,_param->_nb_context);
+  DELETE1_SC_SIGNAL(out_BRANCH_EVENT_ACK               ,_param->_nb_context);
+//DELETE1_SC_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID        ,_param->_nb_context);
+//DELETE1_SC_SIGNAL( in_BRANCH_EVENT_DEPTH             ,_param->_nb_context);
+//DELETE1_SC_SIGNAL( in_BRANCH_EVENT_MISS_PREDICTION   ,_param->_nb_context);
+  DELETE1_SC_SIGNAL( in_BRANCH_EVENT_ADDRESS_SRC       ,_param->_nb_context);
+  DELETE1_SC_SIGNAL( in_BRANCH_EVENT_ADDRESS_DEST      ,_param->_nb_context);
   DELETE1_SC_SIGNAL( in_DECOD_EVENT_VAL                ,_param->_nb_decod_unit);
   DELETE1_SC_SIGNAL(out_DECOD_EVENT_ACK                ,_param->_nb_decod_unit);
@@ -1218,14 +1243,14 @@
   DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS            ,_param->_nb_decod_unit);
   DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR       ,_param->_nb_decod_unit);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_VAL               ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_ACK               ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID        ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_DEPTH             ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_TYPE              ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT     ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS           ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR      ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_VAL               );
+  DELETE_SC_SIGNAL (out_COMMIT_EVENT_ACK               );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID        );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_DEPTH             );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_TYPE              );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT     );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS           );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR      );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL  );
+  DELETE_SC_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR      );
   DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL            ,_param->_nb_inst_branch_complete);
   DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_ACK            ,_param->_nb_inst_branch_complete);
@@ -1236,7 +1261,7 @@
   DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_SRC    ,_param->_nb_inst_branch_complete);
   DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_DEST   ,_param->_nb_inst_branch_complete);
-  DELETE1_SC_SIGNAL( in_NB_INST_DECOD_ALL              ,_param->_nb_decod_unit);
-  DELETE1_SC_SIGNAL( in_NB_INST_COMMIT_ALL             ,_param->_nb_ooo_engine);
-  DELETE1_SC_SIGNAL( in_NB_INST_COMMIT_MEM             ,_param->_nb_ooo_engine);
+  DELETE1_SC_SIGNAL( in_NB_INST_DECOD_ALL              ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_NB_INST_COMMIT_ALL             ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_NB_INST_COMMIT_MEM             ,_param->_nb_context   );
   DELETE1_SC_SIGNAL(out_EVENT_VAL                      ,_param->_nb_context   );
   DELETE1_SC_SIGNAL( in_EVENT_ACK                      ,_param->_nb_context   );
@@ -1245,13 +1270,17 @@
   DELETE1_SC_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL         ,_param->_nb_context   );
   DELETE1_SC_SIGNAL(out_EVENT_IS_DS_TAKE               ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_VAL                        ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL( in_SPR_ACK                        ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_EPCR                       ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_EEAR                       ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_EEAR_WEN                   ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_SR_DSX                     ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL(out_SPR_SR_TO_ESR                  ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_VAL                  ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_SPR_EVENT_ACK                  ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_EPCR                 ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_EEAR                 ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_EEAR_WEN             ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_SR_DSX               ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL(out_SPR_EVENT_SR_TO_ESR            ,_param->_nb_context   );
   DELETE1_SC_SIGNAL(out_CONTEXT_DECOD_ENABLE           ,_param->_nb_context   );
-  DELETE1_SC_SIGNAL( in_DEPTH_TAIL                     ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_DEPTH_MIN                      ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_SPR_SR_IEE                     ,_param->_nb_context   );
+  DELETE1_SC_SIGNAL( in_SPR_SR_EPH                     ,_param->_nb_context   );
+
+  DELETE1_SC_SIGNAL( in_INTERRUPT_ENABLE               ,_param->_nb_context   );
     }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Context_State.h	(revision 88)
@@ -62,4 +62,13 @@
   public    : SC_CLOCK                      *  in_CLOCK        ;
   public    : SC_IN (Tcontrol_t)            *  in_NRESET       ;
+
+    // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t         )  **  in_BRANCH_EVENT_VAL                   ;//[nb_context]
+  public    : SC_OUT(Tcontrol_t         )  ** out_BRANCH_EVENT_ACK                   ;//[nb_context]
+//public    : SC_IN (Tcontext_t         )  **  in_BRANCH_EVENT_CONTEXT_ID            ;//[nb_context]
+//public    : SC_IN (Tdepth_t           )  **  in_BRANCH_EVENT_DEPTH                 ;//[nb_context]
+//public    : SC_IN (Tcontrol_t         )  **  in_BRANCH_EVENT_MISS_PREDICTION       ;//[nb_context]
+  public    : SC_IN (Taddress_t         )  **  in_BRANCH_EVENT_ADDRESS_SRC           ;//[nb_context]
+  public    : SC_IN (Taddress_t         )  **  in_BRANCH_EVENT_ADDRESS_DEST          ;//[nb_context]
 
     // ~~~~~[ Interface : "decod_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -74,14 +83,14 @@
 
     // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_EVENT_VAL                   ;//[nb_ooo_engine]
-  public    : SC_OUT(Tcontrol_t         )  ** out_COMMIT_EVENT_ACK                   ;//[nb_ooo_engine]
-  public    : SC_IN (Tcontext_t         )  **  in_COMMIT_EVENT_CONTEXT_ID            ;//[nb_ooo_engine]
-  public    : SC_IN (Tdepth_t           )  **  in_COMMIT_EVENT_DEPTH                 ;//[nb_ooo_engine]
-  public    : SC_IN (Tevent_type_t      )  **  in_COMMIT_EVENT_TYPE                  ;//[nb_ooo_engine]
-  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_EVENT_IS_DELAY_SLOT         ;//[nb_ooo_engine]
-  public    : SC_IN (Taddress_t         )  **  in_COMMIT_EVENT_ADDRESS               ;//[nb_ooo_engine]
-  public    : SC_IN (Taddress_t         )  **  in_COMMIT_EVENT_ADDRESS_EPCR          ;//[nb_ooo_engine]
-  public    : SC_IN (Tcontrol_t         )  **  in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ;//[nb_ooo_engine]
-  public    : SC_IN (Taddress_t         )  **  in_COMMIT_EVENT_ADDRESS_EEAR          ;//[nb_ooo_engine]
+  public    : SC_IN (Tcontrol_t         )   *  in_COMMIT_EVENT_VAL                   ;
+  public    : SC_OUT(Tcontrol_t         )   * out_COMMIT_EVENT_ACK                   ;
+  public    : SC_IN (Tcontext_t         )   *  in_COMMIT_EVENT_CONTEXT_ID            ;
+  public    : SC_IN (Tdepth_t           )   *  in_COMMIT_EVENT_DEPTH                 ;
+  public    : SC_IN (Tevent_type_t      )   *  in_COMMIT_EVENT_TYPE                  ;
+  public    : SC_IN (Tcontrol_t         )   *  in_COMMIT_EVENT_IS_DELAY_SLOT         ;
+  public    : SC_IN (Taddress_t         )   *  in_COMMIT_EVENT_ADDRESS               ;
+  public    : SC_IN (Taddress_t         )   *  in_COMMIT_EVENT_ADDRESS_EPCR          ;
+  public    : SC_IN (Tcontrol_t         )   *  in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ;
+  public    : SC_IN (Taddress_t         )   *  in_COMMIT_EVENT_ADDRESS_EEAR          ;
 
     // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -96,7 +105,7 @@
 
     // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_DECOD_ALL                  ;//[nb_decod_unit]
-  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_COMMIT_ALL                 ;//[nb_ooo_engine]
-  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_COMMIT_MEM                 ;//[nb_ooo_engine]
+  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_DECOD_ALL                  ;//[nb_context]
+  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_COMMIT_ALL                 ;//[nb_context]
+  public    : SC_IN (Tcounter_t         )  **  in_NB_INST_COMMIT_MEM                 ;//[nb_context]
 
     // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -108,12 +117,12 @@
   public    : SC_OUT(Tcontrol_t         )  ** out_EVENT_IS_DS_TAKE                   ;//[nb_context]
 
-    // ~~~~~[ Interface "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_VAL                            ;//[nb_context]
-  public    : SC_IN (Tcontrol_t         )  **  in_SPR_ACK                            ;//[nb_context]
-  public    : SC_OUT(Taddress_t         )  ** out_SPR_EPCR                           ;//[nb_context]
-  public    : SC_OUT(Taddress_t         )  ** out_SPR_EEAR                           ;//[nb_context]
-  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_EEAR_WEN                       ;//[nb_context]
-  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_SR_DSX                         ;//[nb_context]
-  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_SR_TO_ESR                      ;//[nb_context]
+    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_EVENT_VAL                      ;//[nb_context]
+  public    : SC_IN (Tcontrol_t         )  **  in_SPR_EVENT_ACK                      ;//[nb_context]
+  public    : SC_OUT(Taddress_t         )  ** out_SPR_EVENT_EPCR                     ;//[nb_context]
+  public    : SC_OUT(Taddress_t         )  ** out_SPR_EVENT_EEAR                     ;//[nb_context]
+  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_EVENT_EEAR_WEN                 ;//[nb_context]
+  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_EVENT_SR_DSX                   ;//[nb_context]
+  public    : SC_OUT(Tcontrol_t         )  ** out_SPR_EVENT_SR_TO_ESR                ;//[nb_context]
 
     // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -121,5 +130,12 @@
 
     // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-  public    : SC_IN (Tdepth_t           )  **  in_DEPTH_TAIL                         ;//[nb_context]
+  public    : SC_IN (Tdepth_t           )  **  in_DEPTH_MIN                          ;//[nb_context]
+
+    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
+  public    : SC_IN (Tcontrol_t         )  **  in_SPR_SR_IEE                         ;//[nb_context] - Interrupt Exception Enabled
+  public    : SC_IN (Tcontrol_t         )  **  in_SPR_SR_EPH                         ;//[nb_context] - Exception Prefix High
+
+    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  public    : SC_IN (Tcontrol_t         )  **  in_INTERRUPT_ENABLE                   ;//[nb_context] - Interrupt Exception
                                                                                      
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
@@ -135,11 +151,13 @@
   private   : Tcontrol_t                    * reg_EVENT_IS_DS_TAKE                   ;//[nb_context]
   private   : Tdepth_t                      * reg_EVENT_DEPTH                        ;//[nb_context]
+  private   : Tcontrol_t                    * reg_INTERRUPT_ENABLE                   ;//[nb_context]
 
     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+  private   : Tcontrol_t                    * internal_BRANCH_EVENT_ACK              ;//[nb_context]
   private   : Tcontrol_t                    * internal_DECOD_EVENT_ACK               ;//[nb_decod_unit]
-  private   : Tcontrol_t                    * internal_COMMIT_EVENT_ACK              ;//[nb_ooo_engine]
+  private   : Tcontrol_t                      internal_COMMIT_EVENT_ACK              ;
   private   : Tcontrol_t                    * internal_BRANCH_COMPLETE_ACK           ;//[nb_inst_branch_complete]
   private   : Tcontrol_t                    * internal_EVENT_VAL                     ;//[nb_context]
-  private   : Tcontrol_t                    * internal_SPR_VAL                       ;//[nb_context]
+  private   : Tcontrol_t                    * internal_SPR_EVENT_VAL                 ;//[nb_context]
 #endif
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Parameters.h
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Parameters.h	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/include/Parameters.h	(revision 88)
@@ -26,33 +26,26 @@
   public : uint32_t   _nb_context                   ;
   public : uint32_t   _nb_decod_unit                ;
-  public : uint32_t   _nb_ooo_engine                ;
   public : uint32_t   _nb_inst_branch_complete      ;
-  public : uint32_t * _size_depth                   ; //[nb_context]
-  public : uint32_t   _size_address                 ;
-  public : uint32_t * _size_inst_decod              ; //[nb_decod_unit]
-  public : uint32_t * _size_inst_commit             ; //[nb_ooo_engine]
+  public : uint32_t * _array_size_depth             ; //[nb_context]
+//public : uint32_t * _size_depth                   ; //[nb_context]
+//public : uint32_t   _size_address                 ;
+//public : uint32_t * _size_nb_inst_decod           ; //[nb_decod_unit]
+//public : uint32_t   _size_nb_inst_commit          ;
   public : uint32_t * _link_context_to_decod_unit   ; //[nb_context]
-  public : uint32_t * _link_decod_unit_to_ooo_engine; //[nb_decod_unit]
-
-  public : uint32_t   _size_context_id;
-  public : uint32_t   _size_max_depth ;
-
-  public : bool       _have_port_context_id;
-  public : bool     * _have_port_depth     ;
-  public : bool       _have_port_max_depth ;
 
     //-----[ methods ]-----------------------------------------------------------
   public : Parameters  (uint32_t   nb_context,
 			uint32_t   nb_decod_unit,
-			uint32_t   nb_ooo_engine,
 			uint32_t   nb_inst_branch_complete,
 			uint32_t * size_depth,                
 			uint32_t   size_address,
-			uint32_t * size_inst_decod,           
-			uint32_t * size_inst_commit,          
+			uint32_t * size_nb_inst_decod,           
+			uint32_t   size_nb_inst_commit,          
 			uint32_t * link_context_to_decod_unit,
-			uint32_t * link_decod_unit_to_ooo_engine);
+                        bool       is_toplevel=false);
 //   public : Parameters  (Parameters & param) ;
   public : ~Parameters () ;
+
+  public :        void            copy       (void);
 
   public :        Parameters_test msg_error  (void);
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State.cpp	(revision 88)
@@ -39,4 +39,10 @@
     usage_environment(_usage);
 
+#if DEBUG_Context_State == true
+    log_printf(INFO,Context_State,FUNCTION,_("<%s> Parameters"),_name.c_str());
+
+    std::cout << *param << std::endl;
+#endif    
+
     log_printf(INFO,Context_State,FUNCTION,_("Allocation"));
 
@@ -69,5 +75,11 @@
     if (usage_is_set(_usage,USE_SYSTEMC))
       {
-	// Constant
+	// Constant 
+	for (uint32_t i=0; i<_param->_nb_context; i++)
+	  {
+	    internal_BRANCH_EVENT_ACK [i] = 1;
+	    PORT_WRITE(out_BRANCH_EVENT_ACK [i], internal_BRANCH_EVENT_ACK [i]);
+	  }
+
 	for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
 	  {
@@ -76,9 +88,6 @@
 	  }
 
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  {
-	    internal_COMMIT_EVENT_ACK [i] = 1;
-	    PORT_WRITE(out_COMMIT_EVENT_ACK [i], internal_COMMIT_EVENT_ACK [i]);
-	  }
+        internal_COMMIT_EVENT_ACK = 1;
+        PORT_WRITE(out_COMMIT_EVENT_ACK, internal_COMMIT_EVENT_ACK);
 
 	for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp	(revision 88)
@@ -56,4 +56,17 @@
     }
 
+    // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      ALLOC1_INTERFACE("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);
+      
+      ALLOC1_VALACK_IN ( in_BRANCH_EVENT_VAL                   ,VAL);
+      ALLOC1_VALACK_OUT(out_BRANCH_EVENT_ACK                   ,ACK);
+//    ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_CONTEXT_ID            ,"context_id"             ,Tcontext_t         ,_param->_size_context_id);
+//    ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_DEPTH                 ,"depth"                  ,Tdepth_t           ,_param->_size_depth);
+//    ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_MISS_PREDICTION       ,"miss_prediction"        ,Tcontrol_t         ,1);
+      ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_SRC           ,"address_src"            ,Taddress_t         ,_param->_size_instruction_address);
+      ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST          ,"address_dest"           ,Taddress_t         ,_param->_size_instruction_address);
+    }
+
     // ~~~~~[ Interface : "decod_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
@@ -63,25 +76,25 @@
       ALLOC1_VALACK_OUT(out_DECOD_EVENT_ACK                    ,ACK);
       ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_CONTEXT_ID             ,"context_id"             ,Tcontext_t         ,_param->_size_context_id);
-      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_DEPTH                  ,"depth"                  ,Tdepth_t           ,_param->_size_max_depth);
+      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_DEPTH                  ,"depth"                  ,Tdepth_t           ,_param->_size_depth);
       ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_TYPE                   ,"type"                   ,Tevent_type_t      ,_param->_size_event_type);
       ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_IS_DELAY_SLOT          ,"is_delay_slot"          ,Tcontrol_t         ,1);
-      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS                ,"address"                ,Taddress_t         ,_param->_size_address);
-      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR           ,"address_epcr"           ,Taddress_t         ,_param->_size_address);
+      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS                ,"address"                ,Taddress_t         ,_param->_size_instruction_address);
+      ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR           ,"address_epcr"           ,Taddress_t         ,_param->_size_instruction_address);
     }
 
     // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
-      ALLOC1_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer"), _param->_nb_ooo_engine);
-
-      ALLOC1_VALACK_IN ( in_COMMIT_EVENT_VAL                   ,VAL);
-      ALLOC1_VALACK_OUT(out_COMMIT_EVENT_ACK                   ,ACK);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID            ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH                 ,"depth"           ,Tdepth_t           ,_param->_size_max_depth);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_TYPE                  ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,"is_delay_slot"   ,Tcontrol_t         ,1);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS               ,"address"         ,Taddress_t         ,_param->_size_address);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR          ,"address_epcr"    ,Taddress_t         ,_param->_size_address);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,"address_eear_val",Tcontrol_t         ,1);
-      ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Taddress_t         ,_param->_size_address);
+      ALLOC_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer"));
+
+      ALLOC_VALACK_IN  ( in_COMMIT_EVENT_VAL                   ,VAL);
+      ALLOC_VALACK_OUT (out_COMMIT_EVENT_ACK                   ,ACK);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_CONTEXT_ID            ,"context_id"      ,Tcontext_t         ,_param->_size_context_id);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_DEPTH                 ,"depth"           ,Tdepth_t           ,_param->_size_depth);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_TYPE                  ,"type"            ,Tevent_type_t      ,_param->_size_event_type);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,"is_delay_slot"   ,Tcontrol_t         ,1);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS               ,"address"         ,Taddress_t         ,_param->_size_instruction_address);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EPCR          ,"address_epcr"    ,Taddress_t         ,_param->_size_instruction_address);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,"address_eear_val",Tcontrol_t         ,1);
+      ALLOC_SIGNAL_IN  ( in_COMMIT_EVENT_ADDRESS_EEAR          ,"address_eear"    ,Taddress_t         ,_param->_size_instruction_address);
     }
 
@@ -93,25 +106,18 @@
       ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_ACK                ,ACK);
       ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_CONTEXT_ID         ,"context_id"     ,Tcontext_t         ,_param->_size_context_id);
-      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH              ,"depth"          ,Tdepth_t           ,_param->_size_max_depth);
+      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH              ,"depth"          ,Tdepth_t           ,_param->_size_depth);
       ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION    ,"miss_prediction",Tcontrol_t         ,1);
       ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_TAKE               ,"take"           ,Tcontrol_t         ,1);
-      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC        ,"address_src"    ,Taddress_t         ,_param->_size_address);
-      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST       ,"address_dest"   ,Taddress_t         ,_param->_size_address);
+      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC        ,"address_src"    ,Taddress_t         ,_param->_size_instruction_address);
+      ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST       ,"address_dest"   ,Taddress_t         ,_param->_size_instruction_address);
     }
 
     // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     {
-      ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."), _param->_nb_decod_unit);
-
-      ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL                  ,"decod_all" ,Tcounter_t         ,_param->_size_inst_decod  [alloc_signal_it1]);
-//    ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL                 ,"commit_all",Tcounter_t         ,_param->_size_inst_commit [alloc_signal_it1]);
-//    ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM                 ,"commit_mem",Tcounter_t         ,_param->_size_inst_commit [alloc_signal_it1]);
-    }
-    {
-      ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."), _param->_nb_ooo_engine);
-
-//    ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL                  ,"decod_all" ,Tcounter_t         ,_param->_size_inst_decod  [alloc_signal_it1]);
-      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL                 ,"commit_all",Tcounter_t         ,_param->_size_inst_commit [alloc_signal_it1]);
-      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM                 ,"commit_mem",Tcounter_t         ,_param->_size_inst_commit [alloc_signal_it1]);
+      ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context);
+
+      ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL                  ,"decod_all" ,Tcounter_t         ,_param->_size_nb_inst_decod);
+      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL                 ,"commit_all",Tcounter_t         ,_param->_size_nb_inst_commit);
+      ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM                 ,"commit_mem",Tcounter_t         ,_param->_size_nb_inst_commit);
     }
 
@@ -122,21 +128,21 @@
       ALLOC1_VALACK_OUT(out_EVENT_VAL                          ,VAL);
       ALLOC1_VALACK_IN ( in_EVENT_ACK                          ,ACK);
-      ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS                      ,"address"         ,Taddress_t        ,_param->_size_address);
-      ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT                 ,"address_next"    ,Taddress_t        ,_param->_size_address); 
+      ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS                      ,"address"         ,Taddress_t        ,_param->_size_instruction_address);
+      ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT                 ,"address_next"    ,Taddress_t        ,_param->_size_instruction_address); 
       ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT_VAL             ,"address_next_val",Tcontrol_t        ,1);
       ALLOC1_SIGNAL_OUT(out_EVENT_IS_DS_TAKE                   ,"is_ds_take"      ,Tcontrol_t        ,1);
     }
 
-    // ~~~~~[ Interface "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    {
-      ALLOC1_INTERFACE("spr",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);
-
-      ALLOC1_VALACK_OUT(out_SPR_VAL                            ,VAL);
-      ALLOC1_VALACK_IN ( in_SPR_ACK                            ,ACK);
-      ALLOC1_SIGNAL_OUT(out_SPR_EPCR                           ,"epcr"     ,Taddress_t, _param->_size_address);
-      ALLOC1_SIGNAL_OUT(out_SPR_EEAR                           ,"eear"     ,Taddress_t, _param->_size_address);
-      ALLOC1_SIGNAL_OUT(out_SPR_EEAR_WEN                       ,"eear_wen" ,Tcontrol_t,1);
-      ALLOC1_SIGNAL_OUT(out_SPR_SR_DSX                         ,"sr_dsx"   ,Tcontrol_t,1);
-      ALLOC1_SIGNAL_OUT(out_SPR_SR_TO_ESR                      ,"sr_to_esr",Tcontrol_t,1);
+    // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      ALLOC1_INTERFACE("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);
+
+      ALLOC1_VALACK_OUT(out_SPR_EVENT_VAL                      ,VAL);
+      ALLOC1_VALACK_IN ( in_SPR_EVENT_ACK                      ,ACK);
+      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EPCR                     ,"epcr"     ,Taddress_t, _param->_size_instruction_address);
+      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EEAR                     ,"eear"     ,Taddress_t, _param->_size_instruction_address);
+      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EEAR_WEN                 ,"eear_wen" ,Tcontrol_t,1);
+      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_DSX                   ,"sr_dsx"   ,Tcontrol_t,1);
+      ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_TO_ESR                ,"sr_to_esr",Tcontrol_t,1);
     }
 
@@ -152,26 +158,46 @@
       ALLOC1_INTERFACE("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context);
       
-      ALLOC1_SIGNAL_IN ( in_DEPTH_TAIL                         ,"tail",Tdepth_t,_param->_size_depth [alloc_signal_it1]);
-    }
-
-    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    
-    reg_STATE                  = new context_state_t [_param->_nb_context];
-    reg_EVENT_ADDRESS          = new Taddress_t      [_param->_nb_context];
-    reg_EVENT_ADDRESS_EPCR     = new Taddress_t      [_param->_nb_context]; 
-    reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t      [_param->_nb_context];
-    reg_EVENT_ADDRESS_EEAR     = new Taddress_t      [_param->_nb_context]; 
-    reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t      [_param->_nb_context];
-    reg_EVENT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
-    reg_EVENT_IS_DS_TAKE       = new Tcontrol_t      [_param->_nb_context];
-    reg_EVENT_DEPTH            = new Tdepth_t        [_param->_nb_context];
-
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    internal_DECOD_EVENT_ACK     = new Tcontrol_t [_param->_nb_decod_unit];
-    internal_COMMIT_EVENT_ACK    = new Tcontrol_t [_param->_nb_ooo_engine];
-    internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete];
-    internal_EVENT_VAL           = new Tcontrol_t [_param->_nb_context];
-    internal_SPR_VAL             = new Tcontrol_t [_param->_nb_context];
-    
+      ALLOC1_SIGNAL_IN ( in_DEPTH_MIN                          ,"min" ,Tdepth_t,_param->_size_depth);
+    }
+
+
+    // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~         
+    {
+      ALLOC1_INTERFACE("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);
+      
+      ALLOC1_SIGNAL_IN ( in_SPR_SR_IEE                         ,"SR_IEE",Tcontrol_t,1);
+      ALLOC1_SIGNAL_IN ( in_SPR_SR_EPH                         ,"SR_EPH",Tcontrol_t,1);
+    }
+
+    // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+    {
+      ALLOC1_INTERFACE("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);
+
+      ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE                   ,"ENABLE",Tcontrol_t,1);
+    }
+
+    if (usage_is_set(_usage,USE_SYSTEMC))
+      {
+     // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+        
+     reg_STATE                  = new context_state_t [_param->_nb_context];
+     reg_EVENT_ADDRESS          = new Taddress_t      [_param->_nb_context];
+     reg_EVENT_ADDRESS_EPCR     = new Taddress_t      [_param->_nb_context]; 
+     reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t      [_param->_nb_context];
+     reg_EVENT_ADDRESS_EEAR     = new Taddress_t      [_param->_nb_context]; 
+     reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t      [_param->_nb_context];
+     reg_EVENT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
+     reg_EVENT_IS_DS_TAKE       = new Tcontrol_t      [_param->_nb_context];
+     reg_EVENT_DEPTH            = new Tdepth_t        [_param->_nb_context];
+     reg_INTERRUPT_ENABLE       = new Tcontrol_t      [_param->_nb_context];
+        
+     // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+     internal_BRANCH_EVENT_ACK    = new Tcontrol_t [_param->_nb_context];
+     internal_DECOD_EVENT_ACK     = new Tcontrol_t [_param->_nb_decod_unit];
+     internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete];
+     internal_EVENT_VAL           = new Tcontrol_t [_param->_nb_context];
+     internal_SPR_EVENT_VAL       = new Tcontrol_t [_param->_nb_context];
+      }
+
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp	(revision 88)
@@ -28,77 +28,88 @@
 	delete    in_NRESET;
 
+        DELETE1_SIGNAL( in_BRANCH_EVENT_VAL                   ,_param->_nb_context,1);
+        DELETE1_SIGNAL(out_BRANCH_EVENT_ACK                   ,_param->_nb_context,1);
+//      DELETE1_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID            ,_param->_nb_context,_param->_size_context_id);
+//      DELETE1_SIGNAL( in_BRANCH_EVENT_DEPTH                 ,_param->_nb_context,_param->_size_depth);
+//      DELETE1_SIGNAL( in_BRANCH_EVENT_MISS_PREDICTION       ,_param->_nb_context,1);
+        DELETE1_SIGNAL( in_BRANCH_EVENT_ADDRESS_SRC           ,_param->_nb_context,_param->_size_instruction_address);
+        DELETE1_SIGNAL( in_BRANCH_EVENT_ADDRESS_DEST          ,_param->_nb_context,_param->_size_instruction_address);
+
         DELETE1_SIGNAL( in_DECOD_EVENT_VAL                    ,_param->_nb_decod_unit,1);
         DELETE1_SIGNAL(out_DECOD_EVENT_ACK                    ,_param->_nb_decod_unit,1);
         DELETE1_SIGNAL( in_DECOD_EVENT_CONTEXT_ID             ,_param->_nb_decod_unit,_param->_size_context_id);
-        DELETE1_SIGNAL( in_DECOD_EVENT_DEPTH                  ,_param->_nb_decod_unit,_param->_size_max_depth);
+        DELETE1_SIGNAL( in_DECOD_EVENT_DEPTH                  ,_param->_nb_decod_unit,_param->_size_depth);
         DELETE1_SIGNAL( in_DECOD_EVENT_TYPE                   ,_param->_nb_decod_unit,_param->_size_event_type);
         DELETE1_SIGNAL( in_DECOD_EVENT_IS_DELAY_SLOT          ,_param->_nb_decod_unit,1);
-        DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS                ,_param->_nb_decod_unit,_param->_size_address);
-        DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR           ,_param->_nb_decod_unit,_param->_size_address);
+        DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS                ,_param->_nb_decod_unit,_param->_size_instruction_address);
+        DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR           ,_param->_nb_decod_unit,_param->_size_instruction_address);
         
-	DELETE1_SIGNAL( in_COMMIT_EVENT_VAL                   ,_param->_nb_ooo_engine,1);
-        DELETE1_SIGNAL(out_COMMIT_EVENT_ACK                   ,_param->_nb_ooo_engine,1);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID            ,_param->_nb_ooo_engine,_param->_size_context_id);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_DEPTH                 ,_param->_nb_ooo_engine,_param->_size_max_depth);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_TYPE                  ,_param->_nb_ooo_engine,_param->_size_event_type);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT         ,_param->_nb_ooo_engine,1);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_ADDRESS               ,_param->_nb_ooo_engine,_param->_size_address);
-        DELETE1_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR          ,_param->_nb_ooo_engine,_param->_size_address);
-	DELETE1_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,_param->_nb_ooo_engine,_param->_size_address);
-	DELETE1_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR          ,_param->_nb_ooo_engine,1);
+	DELETE_SIGNAL ( in_COMMIT_EVENT_VAL                   ,1);
+        DELETE_SIGNAL (out_COMMIT_EVENT_ACK                   ,1);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_CONTEXT_ID            ,_param->_size_context_id);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_DEPTH                 ,_param->_size_depth);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_TYPE                  ,_param->_size_event_type);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_IS_DELAY_SLOT         ,1);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS               ,_param->_size_instruction_address);
+        DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EPCR          ,_param->_size_instruction_address);
+	DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL      ,_param->_size_instruction_address);
+	DELETE_SIGNAL ( in_COMMIT_EVENT_ADDRESS_EEAR          ,1);
 
 	DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL                ,_param->_nb_inst_branch_complete,1);
 	DELETE1_SIGNAL(out_BRANCH_COMPLETE_ACK                ,_param->_nb_inst_branch_complete,1);
 	DELETE1_SIGNAL( in_BRANCH_COMPLETE_CONTEXT_ID         ,_param->_nb_inst_branch_complete,_param->_size_context_id);
-	DELETE1_SIGNAL( in_BRANCH_COMPLETE_DEPTH              ,_param->_nb_inst_branch_complete,_param->_size_max_depth);
+	DELETE1_SIGNAL( in_BRANCH_COMPLETE_DEPTH              ,_param->_nb_inst_branch_complete,_param->_size_depth);
 	DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION    ,_param->_nb_inst_branch_complete,1);
 	DELETE1_SIGNAL( in_BRANCH_COMPLETE_TAKE               ,_param->_nb_inst_branch_complete,1);
-	DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_SRC        ,_param->_nb_inst_branch_complete,_param->_size_address);
-	DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_DEST       ,_param->_nb_inst_branch_complete,_param->_size_address);
+	DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_SRC        ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
+	DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS_DEST       ,_param->_nb_inst_branch_complete,_param->_size_instruction_address);
         
-	DELETE1_SIGNAL( in_NB_INST_DECOD_ALL                  ,_param->_nb_decod_unit,_param->_size_inst_decod  [alloc_signal_it1]);
-//      DELETE1_SIGNAL( in_NB_INST_COMMIT_ALL                 ,_param->_nb_decod_unit,_param->_size_inst_commit [alloc_signal_it1]);
-//      DELETE1_SIGNAL( in_NB_INST_COMMIT_MEM                 ,_param->_nb_decod_unit,_param->_size_inst_commit [alloc_signal_it1]);
-//      DELETE1_SIGNAL( in_NB_INST_DECOD_ALL                  ,_param->_nb_ooo_engine,_param->_size_inst_decod  [alloc_signal_it1]);
-        DELETE1_SIGNAL( in_NB_INST_COMMIT_ALL                 ,_param->_nb_ooo_engine,_param->_size_inst_commit [alloc_signal_it1]);
-        DELETE1_SIGNAL( in_NB_INST_COMMIT_MEM                 ,_param->_nb_ooo_engine,_param->_size_inst_commit [alloc_signal_it1]);
+	DELETE1_SIGNAL( in_NB_INST_DECOD_ALL                  ,_param->_nb_context,_param->_size_nb_inst_decod);
+        DELETE1_SIGNAL( in_NB_INST_COMMIT_ALL                 ,_param->_nb_context,_param->_size_nb_inst_commit);
+        DELETE1_SIGNAL( in_NB_INST_COMMIT_MEM                 ,_param->_nb_context,_param->_size_nb_inst_commit);
         
 	DELETE1_SIGNAL(out_EVENT_VAL                          ,_param->_nb_context,1);
         DELETE1_SIGNAL( in_EVENT_ACK                          ,_param->_nb_context,1);
-        DELETE1_SIGNAL(out_EVENT_ADDRESS                      ,_param->_nb_context,_param->_size_address);
-        DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT                 ,_param->_nb_context,_param->_size_address);
+        DELETE1_SIGNAL(out_EVENT_ADDRESS                      ,_param->_nb_context,_param->_size_instruction_address);
+        DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT                 ,_param->_nb_context,_param->_size_instruction_address);
         DELETE1_SIGNAL(out_EVENT_ADDRESS_NEXT_VAL             ,_param->_nb_context,1);
         DELETE1_SIGNAL(out_EVENT_IS_DS_TAKE                   ,_param->_nb_context,1);
         
-	DELETE1_SIGNAL(out_SPR_VAL                            ,_param->_nb_context,1);
-        DELETE1_SIGNAL( in_SPR_ACK                            ,_param->_nb_context,1);
-        DELETE1_SIGNAL(out_SPR_EPCR                           ,_param->_nb_context,_param->_size_address);
-        DELETE1_SIGNAL(out_SPR_EEAR                           ,_param->_nb_context,_param->_size_address);
-        DELETE1_SIGNAL(out_SPR_EEAR_WEN                       ,_param->_nb_context,1);
-	DELETE1_SIGNAL(out_SPR_SR_DSX                         ,_param->_nb_context,1);
-	DELETE1_SIGNAL(out_SPR_SR_TO_ESR                      ,_param->_nb_context,1);
+	DELETE1_SIGNAL(out_SPR_EVENT_VAL                      ,_param->_nb_context,1);
+        DELETE1_SIGNAL( in_SPR_EVENT_ACK                      ,_param->_nb_context,1);
+        DELETE1_SIGNAL(out_SPR_EVENT_EPCR                     ,_param->_nb_context,_param->_size_instruction_address);
+        DELETE1_SIGNAL(out_SPR_EVENT_EEAR                     ,_param->_nb_context,_param->_size_instruction_address);
+        DELETE1_SIGNAL(out_SPR_EVENT_EEAR_WEN                 ,_param->_nb_context,1);
+	DELETE1_SIGNAL(out_SPR_EVENT_SR_DSX                   ,_param->_nb_context,1);
+	DELETE1_SIGNAL(out_SPR_EVENT_SR_TO_ESR                ,_param->_nb_context,1);
         
 	DELETE1_SIGNAL(out_CONTEXT_DECOD_ENABLE               ,_param->_nb_context,1);
 
-	DELETE1_SIGNAL( in_DEPTH_TAIL                         ,_param->_nb_context,_param->_size_depth [alloc_signal_it1]);
+	DELETE1_SIGNAL( in_DEPTH_MIN                          ,_param->_nb_context,_param->_size_depth);
+
+        DELETE1_SIGNAL( in_SPR_SR_IEE                         ,_param->_nb_context,1);
+        DELETE1_SIGNAL( in_SPR_SR_EPH                         ,_param->_nb_context,1);
+
+        DELETE1_SIGNAL( in_INTERRUPT_ENABLE                   ,_param->_nb_context,1);
+
+        // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
+        delete [] reg_STATE                 ;
+        delete [] reg_EVENT_ADDRESS         ;
+        delete [] reg_EVENT_ADDRESS_EPCR    ; 
+        delete [] reg_EVENT_ADDRESS_EPCR_VAL;
+        delete [] reg_EVENT_ADDRESS_EEAR    ; 
+        delete [] reg_EVENT_ADDRESS_EEAR_VAL;
+        delete [] reg_EVENT_IS_DELAY_SLOT   ;
+        delete [] reg_EVENT_IS_DS_TAKE      ;
+        delete [] reg_EVENT_DEPTH           ;
+        delete [] reg_INTERRUPT_ENABLE      ;
+        
+        // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        delete [] internal_BRANCH_EVENT_ACK ;
+        delete [] internal_DECOD_EVENT_ACK  ;
+        delete [] internal_EVENT_VAL        ;
+        delete [] internal_SPR_EVENT_VAL    ;
       }
-
-    // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
-    delete [] reg_STATE                 ;
-    delete [] reg_EVENT_ADDRESS         ;
-    delete [] reg_EVENT_ADDRESS_EPCR    ; 
-    delete [] reg_EVENT_ADDRESS_EPCR_VAL;
-    delete [] reg_EVENT_ADDRESS_EEAR    ; 
-    delete [] reg_EVENT_ADDRESS_EEAR_VAL;
-    delete [] reg_EVENT_IS_DELAY_SLOT   ;
-    delete [] reg_EVENT_IS_DS_TAKE      ;
-    delete [] reg_EVENT_DEPTH           ;
-
-    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-    delete [] internal_DECOD_EVENT_ACK  ;
-    delete [] internal_COMMIT_EVENT_ACK ;
-    delete [] internal_EVENT_VAL        ;
-    delete [] internal_SPR_VAL          ;
-    
+        
     // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMoore.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMoore.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_genMoore.cpp	(revision 88)
@@ -22,4 +22,5 @@
   {
     log_begin(Context_State,FUNCTION);
+    log_function(Context_State,FUNCTION,_name.c_str());
 
     // -------------------------------------------------------------------
@@ -30,22 +31,36 @@
 	context_state_t state = reg_STATE [i];
 
-	internal_EVENT_VAL [i] = ((state == CONTEXT_STATE_KO_EXCEP_ADDR) or
-				  (state == CONTEXT_STATE_KO_MISS_ADDR ) or
-				  (state == CONTEXT_STATE_KO_PSYNC_ADDR) or 
-				  (state == CONTEXT_STATE_KO_CSYNC_ADDR));
-
+        Tcontrol_t val              = ((state == CONTEXT_STATE_KO_EXCEP_ADDR) or
+                                       (state == CONTEXT_STATE_KO_MISS_ADDR ) or
+                                       (state == CONTEXT_STATE_KO_PSYNC_ADDR) or 
+                                       (state == CONTEXT_STATE_KO_CSYNC_ADDR));
+        
+        // SR can't change in this cycle
+        // Exception Prefix High
+        Taddress_t address          = reg_EVENT_ADDRESS [i] | (((state == CONTEXT_STATE_KO_EXCEP_ADDR) and PORT_READ(in_SPR_SR_EPH [i]))?(0xF000000>>2):0);
+        Taddress_t address_next     = reg_EVENT_ADDRESS_EPCR [i];
+        Tcontrol_t address_next_val = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_ADDRESS_EPCR_VAL [i]);
+        Tcontrol_t is_ds_take       = (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_IS_DS_TAKE       [i]);
 	// excep : address exception
 	// miss  : address delay_slot, and address dest
 	// psync : address next
 	// csync : address next
-	PORT_WRITE(out_EVENT_VAL              [i], internal_EVENT_VAL     [i]);
-	PORT_WRITE(out_EVENT_ADDRESS          [i], reg_EVENT_ADDRESS      [i]);
-	PORT_WRITE(out_EVENT_ADDRESS_NEXT     [i], reg_EVENT_ADDRESS_EPCR [i]); 
-	PORT_WRITE(out_EVENT_ADDRESS_NEXT_VAL [i], (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_ADDRESS_EPCR_VAL [i]));
-	PORT_WRITE(out_EVENT_IS_DS_TAKE       [i], (state == CONTEXT_STATE_KO_MISS_ADDR) and (reg_EVENT_IS_DS_TAKE       [i]));
+        internal_EVENT_VAL [i] = val;
+	PORT_WRITE(out_EVENT_VAL              [i], val);
+	PORT_WRITE(out_EVENT_ADDRESS          [i], address);
+	PORT_WRITE(out_EVENT_ADDRESS_NEXT     [i], address_next); 
+	PORT_WRITE(out_EVENT_ADDRESS_NEXT_VAL [i], address_next_val);
+	PORT_WRITE(out_EVENT_IS_DS_TAKE       [i], is_ds_take);
+
+	log_printf(TRACE,Context_State,FUNCTION,"  * EVENT Context      : %d", i);
+	log_printf(TRACE,Context_State,FUNCTION,"    * VAL              : %d", val);
+	log_printf(TRACE,Context_State,FUNCTION,"    * ADDRESS          : %.8x (%.8x)", address     , address     <<2);
+	log_printf(TRACE,Context_State,FUNCTION,"    * ADDRESS_NEXT     : %.8x (%.8x)", address_next, address_next<<2); 
+	log_printf(TRACE,Context_State,FUNCTION,"    * ADDRESS_NEXT_VAL : %d", address_next_val);
+	log_printf(TRACE,Context_State,FUNCTION,"    * IS_DS_TAKE       : %d", is_ds_take);
       }
 
     // -------------------------------------------------------------------
-    // -----[ SPR ]-------------------------------------------------------
+    // -----[ SPR_EVENT ]-------------------------------------------------
     // -------------------------------------------------------------------
     for (uint32_t i=0; i<_param->_nb_context; i++)
@@ -53,12 +68,12 @@
 	context_state_t state = reg_STATE [i];
 
-	internal_SPR_VAL [i] = (state == CONTEXT_STATE_KO_EXCEP_SPR  );
+	internal_SPR_EVENT_VAL [i] = (state == CONTEXT_STATE_KO_EXCEP_SPR  );
 
-	PORT_WRITE(out_SPR_VAL       [i], internal_SPR_VAL           [i]);
-	PORT_WRITE(out_SPR_EPCR      [i], reg_EVENT_ADDRESS_EPCR     [i]);
-	PORT_WRITE(out_SPR_EEAR      [i], reg_EVENT_ADDRESS_EEAR     [i]);
-	PORT_WRITE(out_SPR_EEAR_WEN  [i], reg_EVENT_ADDRESS_EEAR_VAL [i]);
-	PORT_WRITE(out_SPR_SR_DSX    [i], reg_EVENT_IS_DELAY_SLOT    [i]);
-	PORT_WRITE(out_SPR_SR_TO_ESR [i], 1);
+	PORT_WRITE(out_SPR_EVENT_VAL       [i], internal_SPR_EVENT_VAL     [i]);
+	PORT_WRITE(out_SPR_EVENT_EPCR      [i], reg_EVENT_ADDRESS_EPCR     [i]);
+	PORT_WRITE(out_SPR_EVENT_EEAR      [i], reg_EVENT_ADDRESS_EEAR     [i]);
+	PORT_WRITE(out_SPR_EVENT_EEAR_WEN  [i], reg_EVENT_ADDRESS_EEAR_VAL [i]);
+	PORT_WRITE(out_SPR_EVENT_SR_DSX    [i], reg_EVENT_IS_DELAY_SLOT    [i]);
+	PORT_WRITE(out_SPR_EVENT_SR_TO_ESR [i], 1);
       }
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_transition.cpp	(revision 88)
@@ -22,408 +22,472 @@
   {
     log_begin(Context_State,FUNCTION);
+    log_function(Context_State,FUNCTION,_name.c_str());
 
     if (PORT_READ(in_NRESET) == 0)
       {
-	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  reg_STATE [i] = CONTEXT_STATE_OK;
+        for (uint32_t i=0; i<_param->_nb_context; i++)
+          {
+            reg_STATE            [i] = CONTEXT_STATE_OK;
+            reg_INTERRUPT_ENABLE [i] = 0;
+          }
       }
     else
       {
-	// -------------------------------------------------------------------
-	// -----[ DECOD_EVENT ]-----------------------------------------------
-	// -------------------------------------------------------------------
-
-	for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
-	  if (PORT_READ(in_DECOD_EVENT_VAL [i]) and internal_DECOD_EVENT_ACK [i])
-	    {
-	      Tcontext_t context    = (_param->_have_port_context_id     )?PORT_READ(in_DECOD_EVENT_CONTEXT_ID [i]):0;
-	      Tdepth_t   depth      = (_param->_have_port_max_depth      )?PORT_READ(in_DECOD_EVENT_DEPTH      [i]):0;
-	      Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
-	      Tdepth_t   depth_base = (_param->_have_port_depth [context])?PORT_READ(in_DEPTH_TAIL       [context]):0;
-	      Tdepth_t   depth_max  = _param->_size_depth [context];
-	      
-	      Tdepth_t   depth0     = (depth_cur>=depth_base)?(depth_cur-depth_base):((depth_cur+depth_max-depth_base));
-	      Tdepth_t   depth1     = (depth    >=depth_base)?(depth    -depth_base):((depth    +depth_max-depth_base));
-
-	      context_state_t state = reg_STATE [context];
-	      Tevent_type_t   type  = PORT_READ(in_DECOD_EVENT_TYPE [i]);
-	      
-	      // miss > excep > spr/sync
-	      uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
-	      uint8_t    priority1  = (state == EVENT_TYPE_EXCEPTION)?1:0;
-
-	      // is_valid = can modify local information
-	      //  if context_state_ok : yes
-	      //  if context_state_ko : test the depth, and the priority of envent
-
-	      bool       is_valid   = ((state == CONTEXT_STATE_OK) or
-				       (depth1< depth0) or
-				       ((depth1==depth0) and (priority1>priority0)));
-
-	      if (is_valid)
-		{
-		  // decod : 
-		  // type : csync, psync, msync, spr_access (l.mac, l.maci, l.macrc, l.msb, l.mfspr, l.mtspr), exception (l.sys)
-		  context_state_t state_next    = state;
-		  Taddress_t      address       = PORT_READ(in_DECOD_EVENT_ADDRESS       [i]);
-		  Tcontrol_t      is_delay_slot = PORT_READ(in_DECOD_EVENT_IS_DELAY_SLOT [i]);
-
-		  switch (type)
-		    {
-		    case EVENT_TYPE_EXCEPTION          : 
-		      {
-			state_next = CONTEXT_STATE_KO_EXCEP; 
-			break;
-		      }
-		    case EVENT_TYPE_SPR_ACCESS         : 
-		      {
-			state_next = CONTEXT_STATE_KO_SPR  ; 
-			address++; // take next address
-			if (is_delay_slot)
-			  throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
-			break;
-		      }
-		    case EVENT_TYPE_MSYNC              : 
-		      {
-			state_next = CONTEXT_STATE_KO_MSYNC;
-			address++;  // take next address
-			if (is_delay_slot)
-			  throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
-			break;
-		      }
-		    case EVENT_TYPE_PSYNC              :
-		      {
-			state_next = CONTEXT_STATE_KO_PSYNC;
-			address++;  // take next address
-			if (is_delay_slot)
-			  throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
-			break;
-		      }
-		    case EVENT_TYPE_CSYNC              :
-		      {
-			state_next = CONTEXT_STATE_KO_CSYNC;
-			address++;  // take next address
-			if (is_delay_slot)
-			  throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
-			break;
-		      }		      
-		    case EVENT_TYPE_NONE               :
-		    case EVENT_TYPE_MISS_SPECULATION   :
-		    case EVENT_TYPE_BRANCH_NO_ACCURATE :
-		    default :
-		      {
-			throw ERRORMORPHEO(FUNCTION,toString(_("DECOD_EVENT [%d] : invalid event_type : %s.\n"),i,toString(type).c_str()));
-		      }
-		    }
-
-		  reg_STATE                  [context] = state_next;
-		  reg_EVENT_ADDRESS          [context] = address;
-		  reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_DECOD_EVENT_ADDRESS_EPCR  [i]); 
-		  reg_EVENT_ADDRESS_EPCR_VAL [context] = 1;
-		//reg_EVENT_ADDRESS_EEAR     [context]
-		  reg_EVENT_ADDRESS_EEAR_VAL [context] = 0;
-		  reg_EVENT_IS_DELAY_SLOT    [context] = is_delay_slot;
-		//reg_EVENT_IS_DS_TAKE       [context] = 0;
-		  reg_EVENT_DEPTH            [context] = depth;
-		}
-	    }
-
-	// -------------------------------------------------------------------
-	// -----[ COMMIT_EVENT ]----------------------------------------------
-	// -------------------------------------------------------------------
-
-	for (uint32_t i=0; i<_param->_nb_ooo_engine; i++)
-	  if (PORT_READ(in_COMMIT_EVENT_VAL [i]) and internal_COMMIT_EVENT_ACK [i])
-	    {
-	      Tcontext_t context    = (_param->_have_port_context_id     )?PORT_READ(in_COMMIT_EVENT_CONTEXT_ID [i]):0;
-	      Tdepth_t   depth      = (_param->_have_port_max_depth      )?PORT_READ(in_COMMIT_EVENT_DEPTH      [i]):0;
-	      Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
-	      Tdepth_t   depth_base = (_param->_have_port_depth [context])?PORT_READ(in_DEPTH_TAIL        [context]):0;
-	      Tdepth_t   depth_max  = _param->_size_depth [context];
-	      
-	      Tdepth_t   depth0     = (depth_cur>=depth_base)?(depth_cur-depth_base):((depth_cur+depth_max-depth_base));
-	      Tdepth_t   depth1     = (depth    >=depth_base)?(depth    -depth_base):((depth    +depth_max-depth_base));
-
-	      context_state_t state = reg_STATE [context];
-	      Tevent_type_t   type  = PORT_READ(in_COMMIT_EVENT_TYPE [i]);
-	      
-	      // miss > excep > spr/sync
-	      uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
-	      uint8_t    priority1  = 1;
-
-	      // is_valid = can modify local information
-	      //  if context_state_ok : yes
-	      //  if context_state_ko : test the depth, and the priority of envent
-
-	      bool       is_valid   = ((state == CONTEXT_STATE_OK) or
-				       (depth1< depth0) or
-				       ((depth1==depth0) and (priority1>priority0)));
-
-	      if (is_valid)
-		{
-		  // commit
-		  // type : exception
-		  context_state_t state_next = state;
-		  switch (type)
-		    {
-		    case EVENT_TYPE_EXCEPTION          : {state_next = CONTEXT_STATE_KO_EXCEP; break;}
-		    case EVENT_TYPE_SPR_ACCESS         :
-		    case EVENT_TYPE_MSYNC              :
-		    case EVENT_TYPE_PSYNC              :
-		    case EVENT_TYPE_CSYNC              :
-		    case EVENT_TYPE_NONE               :
-		    case EVENT_TYPE_MISS_SPECULATION   :
-		    case EVENT_TYPE_BRANCH_NO_ACCURATE :
-		    default :
-		      {
-			throw ERRORMORPHEO(FUNCTION,toString(_("COMMIT_EVENT [%d] : invalid event_type : %s.\n"),i,toString(type).c_str()));
-		      }
-		    }
-		  reg_STATE                  [context] = state_next;
-		  reg_EVENT_ADDRESS          [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS          [i]);
-		  reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EPCR     [i]); 
-		  reg_EVENT_ADDRESS_EPCR_VAL [context] = 1;
-		  reg_EVENT_ADDRESS_EEAR     [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EEAR     [i]); 
-		  reg_EVENT_ADDRESS_EEAR_VAL [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EEAR_VAL [i]);
-		  reg_EVENT_IS_DELAY_SLOT    [context] = PORT_READ(in_COMMIT_EVENT_IS_DELAY_SLOT    [i]);
-		//reg_EVENT_IS_DS_TAKE       [context] = 0;
-		  reg_EVENT_DEPTH            [context] = depth;
-		}
-	    }
-
-	// -------------------------------------------------------------------
-	// -----[ BRANCH_COMPLETE ]-------------------------------------------
-	// -------------------------------------------------------------------
-
-	for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
-	  if (PORT_READ(in_BRANCH_COMPLETE_VAL [i]) and internal_BRANCH_COMPLETE_ACK [i])
-	    {
-	      if (PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]))
-		{
-		  Tcontext_t context    = (_param->_have_port_context_id     )?PORT_READ(in_BRANCH_COMPLETE_CONTEXT_ID [i]):0;
-		  Tdepth_t   depth      = (_param->_have_port_max_depth      )?PORT_READ(in_BRANCH_COMPLETE_DEPTH      [i]):0;
-		  Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
-		  Tdepth_t   depth_base = (_param->_have_port_depth [context])?PORT_READ(in_DEPTH_TAIL        [context]):0;
-		  Tdepth_t   depth_max  = _param->_size_depth [context];
-		  
-		  Tdepth_t   depth0     = (depth_cur>=depth_base)?(depth_cur-depth_base):((depth_cur+depth_max-depth_base));
-		  Tdepth_t   depth1     = (depth    >=depth_base)?(depth    -depth_base):((depth    +depth_max-depth_base));
-		  
-		  context_state_t state = reg_STATE [context];
-		  
-		  // miss > excep > spr/sync
-		  uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
-		  uint8_t    priority1  = 2;
-		  
-		  // is_valid = can modify local information
-		  //  if context_state_ok : yes
-		  //  if context_state_ko : test the depth, and the priority of envent
-		  
-		  bool       is_valid   = ((state == CONTEXT_STATE_OK) or
-					   (depth1< depth0) or
-					   ((depth1==depth0) and (priority1>priority0)));
-		  
-		  if (is_valid)
-		    {
-		      // commit
-		      Tcontrol_t take = PORT_READ(in_BRANCH_COMPLETE_TAKE [i]);
-		      reg_STATE                  [context] = CONTEXT_STATE_KO_MISS;
-		      reg_EVENT_ADDRESS          [context] = PORT_READ(in_BRANCH_COMPLETE_ADDRESS_SRC  [i])+1; //DELAY_SLOT
-		      reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_BRANCH_COMPLETE_ADDRESS_DEST [i]); 
-		      reg_EVENT_ADDRESS_EPCR_VAL [context] = take; // if not take : in sequence
-		    //reg_EVENT_ADDRESS_EEAR     [context]; 
-		    //reg_EVENT_ADDRESS_EEAR_VAL [context];
-		      reg_EVENT_IS_DELAY_SLOT    [context] = take;
-		      reg_EVENT_IS_DS_TAKE       [context] = take;
-		      reg_EVENT_DEPTH            [context] = depth;
-		    }
-		}
-	    }
-
-	// -------------------------------------------------------------------
-	// -----[ EVENT ]-----------------------------------------------------
-	// -------------------------------------------------------------------
-	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  if (internal_EVENT_VAL [i] and PORT_READ(in_EVENT_ACK [i]))
-	    {
-	      // Write pc
-	      context_state_t state = reg_STATE [i];
-
-	      switch (state)
-		{
-		case CONTEXT_STATE_KO_EXCEP_ADDR :
-		  {
-		    reg_STATE [i] = CONTEXT_STATE_KO_EXCEP_SPR;
-		    break;
-		  }
-		case CONTEXT_STATE_KO_MISS_ADDR  :
-		case CONTEXT_STATE_KO_PSYNC_ADDR :
-		case CONTEXT_STATE_KO_CSYNC_ADDR :
-		  {
-		    reg_STATE [i] = CONTEXT_STATE_OK;
-		    break;
-		  }
-		default :
-		  {
+        // -------------------------------------------------------------------
+        // -----[ BRANCH_EVENT ]----------------------------------------------
+        // -------------------------------------------------------------------
+        for (uint32_t i=0; i<_param->_nb_context; ++i)
+          if (PORT_READ(in_BRANCH_EVENT_VAL [i]) and internal_BRANCH_EVENT_ACK [i])
+            {
+//               throw ERRORMORPHEO(FUNCTION,_("Not yet implemented (Comming Soon).\n"));
+
+              context_state_t state = reg_STATE [i];
+
+              Tdepth_t   depth      = // (_param->_have_port_depth)?PORT_READ(in_BRANCH_EVENT_DEPTH [i]):
+                0;
+              Tdepth_t   depth_cur  = reg_EVENT_DEPTH [i];
+              Tdepth_t   depth_min  = (_param->_have_port_depth)?PORT_READ(in_DEPTH_MIN [i]):0;
+              Tdepth_t   depth_max  = _param->_array_size_depth [i];
+              
+//               Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min));
+//               Tdepth_t   depth1     = (depth    >=depth_min)?(depth    -depth_min):((depth    +depth_max-depth_min));
+              Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur):((depth_cur+depth_max));
+              Tdepth_t   depth1     = (depth    >=depth_min)?(depth    ):((depth    +depth_max));
+
+              // priority : miss > excep > spr/sync
+              uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == EVENT_TYPE_EXCEPTION)?1:0);
+              uint8_t    priority1  = 2; // miss
+
+              // is_valid = can modify local information
+              //   if context_state_ok : yes
+              //   if context_state_ko : test the depth, and the priority of envent
+
+              bool       is_valid   = ((state == CONTEXT_STATE_OK) or
+                                       (depth1< depth0) or
+                                       ((depth1==depth0) and (priority1>priority0)));
+
+              if (is_valid)
+                {
+                  reg_STATE                  [i] =  CONTEXT_STATE_KO_MISS;
+                  reg_EVENT_ADDRESS          [i] =  PORT_READ(in_BRANCH_EVENT_ADDRESS_SRC [i])+1; // address delay slot
+                  reg_EVENT_ADDRESS_EPCR     [i] =  PORT_READ(in_BRANCH_EVENT_ADDRESS_DEST[i]);   // address_next
+                  reg_EVENT_ADDRESS_EPCR_VAL [i] =  1; // address_dest is valid
+                //reg_EVENT_ADDRESS_EEAR     [i] =  0; 
+                  reg_EVENT_ADDRESS_EEAR_VAL [i] =  0;
+                  reg_EVENT_IS_DELAY_SLOT    [i] =  1;
+                  reg_EVENT_IS_DS_TAKE       [i] =  0;// ??
+                  reg_EVENT_DEPTH            [i] =  depth;
+                }
+            }
+        
+        // -------------------------------------------------------------------
+        // -----[ DECOD_EVENT ]-----------------------------------------------
+        // -------------------------------------------------------------------
+
+        for (uint32_t i=0; i<_param->_nb_decod_unit; i++)
+          if (PORT_READ(in_DECOD_EVENT_VAL [i]) and internal_DECOD_EVENT_ACK [i])
+            {
+              Tcontext_t context    = (_param->_have_port_context_id )?PORT_READ(in_DECOD_EVENT_CONTEXT_ID [i]):0;
+              Tdepth_t   depth      = (_param->_have_port_depth      )?PORT_READ(in_DECOD_EVENT_DEPTH      [i]):0;
+              Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
+              Tdepth_t   depth_min = (_param->_have_port_depth      )?PORT_READ(in_DEPTH_MIN [context]):0;
+              Tdepth_t   depth_max  = _param->_array_size_depth [context];
+              
+//               Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min));
+//               Tdepth_t   depth1     = (depth    >=depth_min)?(depth    -depth_min):((depth    +depth_max-depth_min));
+              Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur):((depth_cur+depth_max));
+              Tdepth_t   depth1     = (depth    >=depth_min)?(depth    ):((depth    +depth_max));
+
+              context_state_t state = reg_STATE [context];
+              Tevent_type_t   type  = PORT_READ(in_DECOD_EVENT_TYPE [i]);
+              
+              // miss > excep > spr/sync
+              uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
+              uint8_t    priority1  = (state == EVENT_TYPE_EXCEPTION)?1:0;
+
+              // is_valid = can modify local information
+              //  if context_state_ok : yes
+              //  if context_state_ko : test the depth, and the priority of envent
+
+              bool       is_valid   = ((state == CONTEXT_STATE_OK) or
+                                       (depth1< depth0) or
+                                       ((depth1==depth0) and (priority1>priority0)));
+
+              if (is_valid)
+                {
+                  // decod : 
+                  // type : csync, psync, msync, spr_access (l.mac, l.maci, l.macrc, l.msb, l.mfspr, l.mtspr), exception (l.sys)
+                  context_state_t state_next    = state;
+                  Taddress_t      address       = PORT_READ(in_DECOD_EVENT_ADDRESS       [i]);
+                  Tcontrol_t      is_delay_slot = PORT_READ(in_DECOD_EVENT_IS_DELAY_SLOT [i]);
+
+                  switch (type)
+                    {
+                    case EVENT_TYPE_EXCEPTION          : 
+                      {
+                        state_next = CONTEXT_STATE_KO_EXCEP; 
+
+                        break;
+                      }
+                    case EVENT_TYPE_SPR_ACCESS         : 
+                      {
+                        state_next = CONTEXT_STATE_KO_SPR  ; 
+                        address++; // take next address
+                        if (is_delay_slot)
+                          throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
+                        break;
+                      }
+                    case EVENT_TYPE_MSYNC              : 
+                      {
+                        state_next = CONTEXT_STATE_KO_MSYNC;
+                        address++;  // take next address
+                        if (is_delay_slot)
+                          throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
+                        break;
+                      }
+                    case EVENT_TYPE_PSYNC              :
+                      {
+                        state_next = CONTEXT_STATE_KO_PSYNC;
+                        address++;  // take next address
+                        if (is_delay_slot)
+                          throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
+                        break;
+                      }
+                    case EVENT_TYPE_CSYNC              :
+                      {
+                        state_next = CONTEXT_STATE_KO_CSYNC;
+                        address++;  // take next address
+                        if (is_delay_slot)
+                          throw ERRORMORPHEO(FUNCTION,"SPR access in delay slot, not supported.\n");
+                        break;
+                      }               
+                    case EVENT_TYPE_NONE               :
+                    case EVENT_TYPE_MISS_SPECULATION   :
+                    case EVENT_TYPE_BRANCH_NO_ACCURATE :
+                    default :
+                      {
+                        throw ERRORMORPHEO(FUNCTION,toString(_("DECOD_EVENT [%d] : invalid event_type : %s.\n"),i,toString(type).c_str()));
+                      }
+                    }
+
+                  reg_STATE                  [context] = state_next;
+                  reg_EVENT_ADDRESS          [context] = address;
+                  reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_DECOD_EVENT_ADDRESS_EPCR  [i]); 
+                  reg_EVENT_ADDRESS_EPCR_VAL [context] = 1;
+                //reg_EVENT_ADDRESS_EEAR     [context]
+                  reg_EVENT_ADDRESS_EEAR_VAL [context] = 0;
+                  reg_EVENT_IS_DELAY_SLOT    [context] = is_delay_slot;
+                //reg_EVENT_IS_DS_TAKE       [context] = 0;
+                  reg_EVENT_DEPTH            [context] = depth;
+                }
+            }
+
+        // -------------------------------------------------------------------
+        // -----[ COMMIT_EVENT ]----------------------------------------------
+        // -------------------------------------------------------------------
+
+        if (PORT_READ(in_COMMIT_EVENT_VAL ) and internal_COMMIT_EVENT_ACK )
+          {
+            Tcontext_t context    = (_param->_have_port_context_id)?PORT_READ(in_COMMIT_EVENT_CONTEXT_ID ):0;
+            Tdepth_t   depth      = (_param->_have_port_depth     )?PORT_READ(in_COMMIT_EVENT_DEPTH      ):0;
+            Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
+            Tdepth_t   depth_min = (_param->_have_port_depth     )?PORT_READ(in_DEPTH_MIN [context]):0;
+            Tdepth_t   depth_max  = _param->_array_size_depth [context];
+            
+//             Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min));
+//             Tdepth_t   depth1     = (depth    >=depth_min)?(depth    -depth_min):((depth    +depth_max-depth_min));
+            Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur):((depth_cur+depth_max));
+            Tdepth_t   depth1     = (depth    >=depth_min)?(depth    ):((depth    +depth_max));
+
+            context_state_t state = reg_STATE [context];
+            Tevent_type_t   type  = PORT_READ(in_COMMIT_EVENT_TYPE );
+            
+            // miss > excep > spr/sync
+            uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
+            uint8_t    priority1  = 1; // exception
+
+            // is_valid = can modify local information
+            //  if context_state_ok : yes
+            //  if context_state_ko : test the depth, and the priority of envent
+
+            bool       is_valid   = ((state == CONTEXT_STATE_OK) or
+                                     (depth1< depth0) or
+                                     ((depth1==depth0) and (priority1>priority0)));
+
+            if (is_valid)
+              {
+                // commit
+                // type : exception
+                context_state_t state_next = state;
+                switch (type)
+                  {
+                  case EVENT_TYPE_EXCEPTION          : {state_next = CONTEXT_STATE_KO_EXCEP; break;}
+                  case EVENT_TYPE_SPR_ACCESS         :
+                  case EVENT_TYPE_MSYNC              :
+                  case EVENT_TYPE_PSYNC              :
+                  case EVENT_TYPE_CSYNC              :
+                  case EVENT_TYPE_NONE               :
+                  case EVENT_TYPE_MISS_SPECULATION   :
+                  case EVENT_TYPE_BRANCH_NO_ACCURATE :
+                  default :
+                    {
+                      throw ERRORMORPHEO(FUNCTION,toString(_("COMMIT_EVENT : invalid event_type : %s.\n"),toString(type).c_str()));
+                    }
+                  }
+                reg_STATE                  [context] = state_next;
+                reg_EVENT_ADDRESS          [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS          );
+                reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EPCR     ); 
+                reg_EVENT_ADDRESS_EPCR_VAL [context] = 1;
+                reg_EVENT_ADDRESS_EEAR     [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EEAR     ); 
+                reg_EVENT_ADDRESS_EEAR_VAL [context] = PORT_READ(in_COMMIT_EVENT_ADDRESS_EEAR_VAL );
+                reg_EVENT_IS_DELAY_SLOT    [context] = PORT_READ(in_COMMIT_EVENT_IS_DELAY_SLOT    );
+              //reg_EVENT_IS_DS_TAKE       [context] = 0;
+                reg_EVENT_DEPTH            [context] = depth;
+              }
+          }
+
+        // -------------------------------------------------------------------
+        // -----[ BRANCH_COMPLETE ]-------------------------------------------
+        // -------------------------------------------------------------------
+
+        for (uint32_t i=0; i<_param->_nb_inst_branch_complete; i++)
+          if (PORT_READ(in_BRANCH_COMPLETE_VAL [i]) and internal_BRANCH_COMPLETE_ACK [i])
+            {
+              if (PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]))
+                {
+                  Tcontext_t context    = (_param->_have_port_context_id)?PORT_READ(in_BRANCH_COMPLETE_CONTEXT_ID [i]):0;
+                  Tdepth_t   depth      = (_param->_have_port_depth     )?PORT_READ(in_BRANCH_COMPLETE_DEPTH      [i]):0;
+                  Tdepth_t   depth_cur  = reg_EVENT_DEPTH [context];
+                  Tdepth_t   depth_min = (_param->_have_port_depth     )?PORT_READ(in_DEPTH_MIN [context]):0;
+                  Tdepth_t   depth_max  = _param->_array_size_depth [context];
+                  
+//                   Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur-depth_min):((depth_cur+depth_max-depth_min));
+//                   Tdepth_t   depth1     = (depth    >=depth_min)?(depth    -depth_min):((depth    +depth_max-depth_min));
+                  Tdepth_t   depth0     = (depth_cur>=depth_min)?(depth_cur):((depth_cur+depth_max));
+                  Tdepth_t   depth1     = (depth    >=depth_min)?(depth    ):((depth    +depth_max));
+                  
+                  context_state_t state = reg_STATE [context];
+                  
+                  // miss > excep > spr/sync
+                  uint8_t    priority0  = (state == CONTEXT_STATE_KO_MISS)?2:((state == CONTEXT_STATE_KO_EXCEP)?1:0);
+                  uint8_t    priority1  = 2; // miss
+                  
+                  // is_valid = can modify local information
+                  //  if context_state_ok : yes
+                  //  if context_state_ko : test the depth, and the priority of envent
+                  
+                  bool       is_valid   = ((state == CONTEXT_STATE_OK) or
+                                           (depth1< depth0) or
+                                           ((depth1==depth0) and (priority1>priority0)));
+                  
+                  if (is_valid)
+                    {
+                      // commit
+                      Tcontrol_t take = PORT_READ(in_BRANCH_COMPLETE_TAKE [i]);
+                      reg_STATE                  [context] = CONTEXT_STATE_KO_MISS;
+                      reg_EVENT_ADDRESS          [context] = PORT_READ(in_BRANCH_COMPLETE_ADDRESS_SRC  [i])+1; //DELAY_SLOT
+                      reg_EVENT_ADDRESS_EPCR     [context] = PORT_READ(in_BRANCH_COMPLETE_ADDRESS_DEST [i]); 
+                      reg_EVENT_ADDRESS_EPCR_VAL [context] = take; // if not take : in sequence
+                    //reg_EVENT_ADDRESS_EEAR     [context]; 
+                      reg_EVENT_ADDRESS_EEAR_VAL [context] = 0;
+                      reg_EVENT_IS_DELAY_SLOT    [context] = take;
+                      reg_EVENT_IS_DS_TAKE       [context] = take;
+                      reg_EVENT_DEPTH            [context] = depth;
+                    }
+                }
+            }
+
+        // -------------------------------------------------------------------
+        // -----[ EVENT ]-----------------------------------------------------
+        // -------------------------------------------------------------------
+        for (uint32_t i=0; i<_param->_nb_context; i++)
+          if (internal_EVENT_VAL [i] and PORT_READ(in_EVENT_ACK [i]))
+            {
+              // Write pc
+              context_state_t state = reg_STATE [i];
+
+              switch (state)
+                {
+                case CONTEXT_STATE_KO_EXCEP_ADDR :
+                  {
+                    reg_STATE [i] = CONTEXT_STATE_KO_EXCEP_SPR;
+                    break;
+                  }
+                case CONTEXT_STATE_KO_MISS_ADDR  :
+                case CONTEXT_STATE_KO_PSYNC_ADDR :
+                case CONTEXT_STATE_KO_CSYNC_ADDR :
+                  {
+                    reg_STATE [i] = CONTEXT_STATE_OK;
+                    break;
+                  }
+                default :
+                  {
 #ifdef DEBUG_TEST
-		    throw ERRORMORPHEO(FUNCTION,toString(_("SPR[%d], Invalid state : %s.\n"),i,toString(state).c_str()));
+                    throw ERRORMORPHEO(FUNCTION,toString(_("SPR[%d], Invalid state : %s.\n"),i,toString(state).c_str()));
 #endif
-		    break;
-		  }
-		}
-	    }
-
-	// -------------------------------------------------------------------
-	// -----[ SPR ]-------------------------------------------------------
-	// -------------------------------------------------------------------
-	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  if (internal_SPR_VAL [i] and PORT_READ(in_SPR_ACK [i]))
-	    {
-	      // Write spr
+                    break;
+                  }
+                }
+            }
+
+        // -------------------------------------------------------------------
+        // -----[ SPR_EVENT ]-------------------------------------------------
+        // -------------------------------------------------------------------
+        for (uint32_t i=0; i<_param->_nb_context; i++)
+          if (internal_SPR_EVENT_VAL [i] and PORT_READ(in_SPR_EVENT_ACK [i]))
+            {
+              // Write spr
 #ifdef DEBUG_TEST
-	      context_state_t state = reg_STATE [i];
-	    
-	      if (state != CONTEXT_STATE_KO_EXCEP_SPR)
-		throw ERRORMORPHEO(FUNCTION,toString(_("SPR[%d], Invalid state : %s.\n"),i,toString(state).c_str()));
+              context_state_t state = reg_STATE [i];
+            
+              if (state != CONTEXT_STATE_KO_EXCEP_SPR)
+                throw ERRORMORPHEO(FUNCTION,toString(_("SPR_EVENT[%d], Invalid state : %s.\n"),i,toString(state).c_str()));
 #endif
-	      
-	      reg_STATE [i] = CONTEXT_STATE_OK;
-	    }
-
-	// -------------------------------------------------------------------
-	// -----[ next state ]------------------------------------------------
-	// -------------------------------------------------------------------
-	for (uint32_t i=0; i<_param->_nb_context; i++)
-	  {
-	    uint32_t x = _param->_link_context_to_decod_unit    [i];
-	    uint32_t y = _param->_link_decod_unit_to_ooo_engine [x];
-
-	    Tcounter_t inst_all = PORT_READ(in_NB_INST_COMMIT_ALL [y]) + PORT_READ(in_NB_INST_DECOD_ALL [x]);
-	    Tcounter_t inst_mem = PORT_READ(in_NB_INST_COMMIT_MEM [y]) + PORT_READ(in_NB_INST_DECOD_ALL [x]);
-
-	    context_state_t state = reg_STATE [i];
-
-	    switch (state)
-	      {
-	      case CONTEXT_STATE_OK              :
-		{
-		  // nothing, wait an event
-		  break;
-		}
-	      case CONTEXT_STATE_KO_EXCEP        :
-		{
-		  // Wait end of all instruction
-		  if (inst_all == 0)
-		    state = CONTEXT_STATE_KO_EXCEP_ADDR;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_MISS         :
-		{
-		  // Wait end of all instruction
-		  if (inst_all == 0)
-		    state = CONTEXT_STATE_KO_MISS_ADDR;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_EXCEP_ADDR   :
-		{
-		  // nothing, wait the update of internal register (pc)
-		  break;
-		}
-	      case CONTEXT_STATE_KO_EXCEP_SPR    :
-		{
-		  // nothing, wait the update of internal register (epcr, eear, sr, esr)
-		  break;
-		}
-	      case CONTEXT_STATE_KO_MISS_ADDR    :
-		{
-		  // nothing, wait the update of internal register (pc)
-		  break;
-		}
-	      case CONTEXT_STATE_KO_PSYNC        :
-		{
-		  // Wait end of all instruction
-		  if (inst_all == 0)
-// 		    state = CONTEXT_STATE_KO_PSYNC_FLUSH;
-		    state = CONTEXT_STATE_KO_PSYNC_ADDR ;
-		  break;
-		}
-// 	      case CONTEXT_STATE_KO_PSYNC_FLUSH  :
-// 		{
-// 		  // nothing, wait end of flush (ifetch)
-// 		  break;
-// 		}
-	      case CONTEXT_STATE_KO_PSYNC_ADDR   :
-		{
-		  // nothing, wait the pc write
-		  break;
-		}
-	      case CONTEXT_STATE_KO_CSYNC        :
-		{
-		  // Wait end of all instruction
-		  if (inst_all == 0)
-		    state = CONTEXT_STATE_KO_CSYNC_ADDR ;
-// 		    state = CONTEXT_STATE_KO_CSYNC_FLUSH;
-		  break;
-		}
-// 	      case CONTEXT_STATE_KO_CSYNC_FLUSH  :
-// 		{
-// 		  // nothing, wait end of flush (all internal structure)
-// 		  break;
-// 		}
-	      case CONTEXT_STATE_KO_CSYNC_ADDR   :
-		{
-		  // nothing, wait the pc write
-		  break;
-		}
-	      case CONTEXT_STATE_KO_MSYNC        :
-		{
-		  // Wait end of memory instruction
-		  if (inst_mem == 0)
-		    state = CONTEXT_STATE_KO_MSYNC_ISSUE;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_MSYNC_ISSUE  :
-		{
-		  // Wait the msync issue
-		  if (inst_mem != 0)
-		    state = CONTEXT_STATE_KO_MSYNC_EXEC;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_MSYNC_EXEC   :
-		{
-		  // Wait the end of msync
-		  if (inst_mem == 0)
-		    state = CONTEXT_STATE_OK;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_SPR          :
-		{
-		  // Wait end of all instruction
-		  if (inst_all == 0)
-		    state = CONTEXT_STATE_KO_SPR_ISSUE;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_SPR_ISSUE    :
-		{
-		  // Wait the spr_access issue
-		  if (inst_all != 0)
-		    state = CONTEXT_STATE_KO_SPR_EXEC;
-		  break;
-		}
-	      case CONTEXT_STATE_KO_SPR_EXEC     :
-		{
-		  // Wait the spr_access execution
-		  if (inst_all == 0)
-		    state = CONTEXT_STATE_OK;
-		  break;
-		}
-
-	      default :
-		{
-		  throw ERRORMORPHEO(FUNCTION,toString(_("Context[%d], Unknow state : %s.\n"),i,toString(state).c_str()));
-		}
-	      }
-	    reg_STATE [i] = state;
-	  }
+              
+              reg_STATE [i] = CONTEXT_STATE_OK;
+            }
+
+        // -------------------------------------------------------------------
+        // -----[ next state ]------------------------------------------------
+        // -------------------------------------------------------------------
+        for (uint32_t i=0; i<_param->_nb_context; i++)
+          {
+//             uint32_t x = _param->_link_context_to_decod_unit    [i];
+
+            Tcounter_t inst_all = PORT_READ(in_NB_INST_COMMIT_ALL[i]) + PORT_READ(in_NB_INST_DECOD_ALL [i]);
+            Tcounter_t inst_mem = PORT_READ(in_NB_INST_COMMIT_MEM[i]) + PORT_READ(in_NB_INST_DECOD_ALL [i]);
+
+            context_state_t state = reg_STATE [i];
+
+            switch (state)
+              {
+              case CONTEXT_STATE_OK              :
+                {
+                  // nothing, wait an event
+                  break;
+                }
+              case CONTEXT_STATE_KO_EXCEP        :
+                {
+                  // Wait end of all instruction
+                  if (inst_all == 0)
+                    state = CONTEXT_STATE_KO_EXCEP_ADDR;
+                  break;
+                }
+              case CONTEXT_STATE_KO_MISS         :
+                {
+                  // Wait end of all instruction
+                  if (inst_all == 0)
+                    state = CONTEXT_STATE_KO_MISS_ADDR;
+                  break;
+                }
+              case CONTEXT_STATE_KO_EXCEP_ADDR   :
+                {
+                  // nothing, wait the update of internal register (pc)
+                  break;
+                }
+              case CONTEXT_STATE_KO_EXCEP_SPR    :
+                {
+                  // nothing, wait the update of internal register (epcr, eear, sr, esr)
+                  break;
+                }
+              case CONTEXT_STATE_KO_MISS_ADDR    :
+                {
+                  // nothing, wait the update of internal register (pc)
+                  break;
+                }
+              case CONTEXT_STATE_KO_PSYNC        :
+                {
+                  // Wait end of all instruction
+                  if (inst_all == 0)
+//                  state = CONTEXT_STATE_KO_PSYNC_FLUSH;
+                    state = CONTEXT_STATE_KO_PSYNC_ADDR ;
+                  break;
+                }
+//            case CONTEXT_STATE_KO_PSYNC_FLUSH  :
+//              {
+//                // nothing, wait end of flush (ifetch)
+//                break;
+//              }
+              case CONTEXT_STATE_KO_PSYNC_ADDR   :
+                {
+                  // nothing, wait the pc write
+                  break;
+                }
+              case CONTEXT_STATE_KO_CSYNC        :
+                {
+                  // Wait end of all instruction
+                  if (inst_all == 0)
+                    state = CONTEXT_STATE_KO_CSYNC_ADDR ;
+//                  state = CONTEXT_STATE_KO_CSYNC_FLUSH;
+                  break;
+                }
+//            case CONTEXT_STATE_KO_CSYNC_FLUSH  :
+//              {
+//                // nothing, wait end of flush (all internal structure)
+//                break;
+//              }
+              case CONTEXT_STATE_KO_CSYNC_ADDR   :
+                {
+                  // nothing, wait the pc write
+                  break;
+                }
+              case CONTEXT_STATE_KO_MSYNC        :
+                {
+                  // Wait end of memory instruction
+                  if (inst_mem == 0)
+                    state = CONTEXT_STATE_KO_MSYNC_ISSUE;
+                  break;
+                }
+              case CONTEXT_STATE_KO_MSYNC_ISSUE  :
+                {
+                  // Wait the msync issue
+                  if (inst_mem != 0)
+                    state = CONTEXT_STATE_KO_MSYNC_EXEC;
+                  break;
+                }
+              case CONTEXT_STATE_KO_MSYNC_EXEC   :
+                {
+                  // Wait the end of msync
+                  if (inst_mem == 0)
+                    state = CONTEXT_STATE_OK;
+                  break;
+                }
+              case CONTEXT_STATE_KO_SPR          :
+                {
+                  // Wait end of all instruction
+                  if (inst_all == 0)
+                    state = CONTEXT_STATE_KO_SPR_ISSUE;
+                  break;
+                }
+              case CONTEXT_STATE_KO_SPR_ISSUE    :
+                {
+                  // Wait the spr_access issue
+                  if (inst_all != 0)
+                    state = CONTEXT_STATE_KO_SPR_EXEC;
+                  break;
+                }
+              case CONTEXT_STATE_KO_SPR_EXEC     :
+                {
+                  // Wait the spr_access execution
+                  if (inst_all == 0)
+                    state = CONTEXT_STATE_OK;
+                  break;
+                }
+
+              default :
+                {
+                  throw ERRORMORPHEO(FUNCTION,toString(_("Context[%d], Unknow state : %s.\n"),i,toString(state).c_str()));
+                }
+              }
+            reg_STATE [i] = state;
+          }
+
+        for (uint32_t i=0; i<_param->_nb_context; ++i)
+          {
+            reg_INTERRUPT_ENABLE [i] = PORT_READ(in_INTERRUPT_ENABLE [i]) and PORT_READ(in_SPR_SR_IEE [i]);
+
+            if (reg_INTERRUPT_ENABLE [i])
+              throw ERRORMORPHEO(FUNCTION,toString(_("Context[%d], Have an interruption, Not yet supported (Comming Soon).\n"),i));
+          }
       }
 
@@ -431,14 +495,14 @@
     for (uint32_t i=0; i<_param->_nb_context; i++)
       {
-	log_printf(TRACE,Context_State,FUNCTION,"Context State [%d]",i);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_STATE                  : %s"  ,toString(reg_STATE [i]).c_str());
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_ADDRESS          : 0x%x",reg_EVENT_ADDRESS          [i]);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_ADDRESS_EPCR     : 0x%x",reg_EVENT_ADDRESS_EPCR     [i]); 
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_ADDRESS_EPCR_VAL : %d"  ,reg_EVENT_ADDRESS_EPCR_VAL [i]);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_ADDRESS_EEAR     : 0x%x",reg_EVENT_ADDRESS_EEAR     [i]); 
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_ADDRESS_EEAR_VAL : %d"  ,reg_EVENT_ADDRESS_EEAR_VAL [i]);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_IS_DELAY_SLOT    : %d"  ,reg_EVENT_IS_DELAY_SLOT    [i]);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_IS_DS_TAKE       : %d"  ,reg_EVENT_IS_DS_TAKE       [i]);
-	log_printf(TRACE,Context_State,FUNCTION," * reg_EVENT_DEPTH            : %d"  ,reg_EVENT_DEPTH            [i]);
+        log_printf(TRACE,Context_State,FUNCTION,"  * Dump Context State [%d]",i);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_STATE                  : %s"         ,toString(reg_STATE [i]).c_str());
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_ADDRESS          : 0x%x (0x%x)",reg_EVENT_ADDRESS          [i],reg_EVENT_ADDRESS      [i]<<2);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_ADDRESS_EPCR     : 0x%x (0x%x)",reg_EVENT_ADDRESS_EPCR     [i],reg_EVENT_ADDRESS_EPCR [i]<<2); 
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_ADDRESS_EPCR_VAL : %d"         ,reg_EVENT_ADDRESS_EPCR_VAL [i]);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_ADDRESS_EEAR     : 0x%x (0x%x)",reg_EVENT_ADDRESS_EEAR     [i],reg_EVENT_ADDRESS_EEAR [i]<<2); 
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_ADDRESS_EEAR_VAL : %d"         ,reg_EVENT_ADDRESS_EEAR_VAL [i]);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_IS_DELAY_SLOT    : %d"         ,reg_EVENT_IS_DELAY_SLOT    [i]);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_IS_DS_TAKE       : %d"         ,reg_EVENT_IS_DS_TAKE       [i]);
+        log_printf(TRACE,Context_State,FUNCTION,"    * reg_EVENT_DEPTH            : %d"         ,reg_EVENT_DEPTH            [i]);
       }
 #endif
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters.cpp	(revision 88)
@@ -21,12 +21,11 @@
   Parameters::Parameters (uint32_t   nb_context,
 			  uint32_t   nb_decod_unit,
-			  uint32_t   nb_ooo_engine,
 			  uint32_t   nb_inst_branch_complete,
 			  uint32_t * size_depth,                
 			  uint32_t   size_address,
-			  uint32_t * size_inst_decod,           
-			  uint32_t * size_inst_commit,          
+			  uint32_t * size_nb_inst_decod,           
+			  uint32_t   size_nb_inst_commit,          
 			  uint32_t * link_context_to_decod_unit,
-			  uint32_t * link_decod_unit_to_ooo_engine)
+                          bool       is_toplevel)
   {
     log_begin(Context_State,FUNCTION);
@@ -34,23 +33,27 @@
     _nb_context                    = nb_context                   ;
     _nb_decod_unit                 = nb_decod_unit                ;
-    _nb_ooo_engine                 = nb_ooo_engine                ;
     _nb_inst_branch_complete       = nb_inst_branch_complete      ;
-    _size_depth                    = size_depth                   ;
-    _size_address                  = size_address                 ;
-    _size_inst_decod               = size_inst_decod              ;
-    _size_inst_commit              = size_inst_commit             ;
+    _array_size_depth              = size_depth                   ;
+//  _size_address                  = size_address                 ;
+//  _size_nb_inst_decod            = size_nb_inst_decod           ;
+//  _size_nb_inst_commit           = size_nb_inst_commit          ;
     _link_context_to_decod_unit    = link_context_to_decod_unit   ;
-    _link_decod_unit_to_ooo_engine = link_decod_unit_to_ooo_engine;
+
+    test();
+
+    if (is_toplevel)
+      {
+        _size_context_id               = log2(_nb_context);
+        _size_depth                    = log2(max<uint32_t>(size_depth,_nb_context));
+        _size_instruction_address      = size_address;
+        _size_nb_inst_decod            = max<uint32_t>(size_nb_inst_decod,_nb_decod_unit);
+        _size_nb_inst_commit           = size_nb_inst_commit;
+
+        _have_port_context_id          = (_size_context_id>0);
+        _have_port_depth               = (_size_depth > 0);
+
+        copy ();
+      }
     
-    _size_context_id               = log2(_nb_context);
-    _size_max_depth                = max<uint32_t>(_size_depth,_nb_context);
-
-    _have_port_context_id          = (_size_context_id>0);
-    _have_port_max_depth           = (_size_max_depth >0);
-    _have_port_depth               = new bool [_nb_context];
-    for (uint32_t i=0; i<_nb_context; i++)
-      _have_port_depth [i] = (_size_depth [i] >0);
-    
-    test();
     log_end(Context_State,FUNCTION);
   };
@@ -70,5 +73,12 @@
   {
     log_begin(Context_State,FUNCTION);
-    delete [] _have_port_depth;
+    log_end(Context_State,FUNCTION);
+  };
+
+#undef  FUNCTION
+#define FUNCTION "Context_State::copy"
+  void Parameters::copy (void) 
+  {
+    log_begin(Context_State,FUNCTION);
     log_end(Context_State,FUNCTION);
   };
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_msg_error.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_msg_error.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_msg_error.cpp	(revision 88)
@@ -41,20 +41,4 @@
 	test.error(toString(_("The decod_unit [%d] have none context as source."),i));
 
-    bool _is_link_ooo_engine_from_decod_unit [_nb_ooo_engine];
-    for (uint32_t i=0; i<_nb_ooo_engine; i++)
-      _is_link_ooo_engine_from_decod_unit [i] = false;
-
-    for (uint32_t i=0; i<_nb_decod_unit; i++)
-      {
-	if (_link_decod_unit_to_ooo_engine [i] < _nb_ooo_engine)
-	  _is_link_ooo_engine_from_decod_unit [_link_decod_unit_to_ooo_engine[i]] = true;
-	else
-	  test.error(toString(_("The decod_unit [%d] is linked with invalid ooo_engine."),i));
-      }
-
-    for (uint32_t i=0; i<_nb_ooo_engine; i++)
-      if (_is_link_ooo_engine_from_decod_unit [i] == false)
-	test.error(toString(_("The ooo_engine [%d] have none decod_unit as source."),i));
-
     log_end(Context_State,FUNCTION);
 
Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_print.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_print.cpp	(revision 83)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Parameters_print.cpp	(revision 88)
@@ -27,8 +27,8 @@
     xml.balise_open("context_state");
     xml.singleton_begin("nb_context                   "); xml.attribut("value",toString(_nb_context                   )); xml.singleton_end();
-    xml.singleton_begin("nb_decod_unit                "); xml.attribut("value",toString(_nb_decod_unit                )); xml.singleton_end();
-    xml.singleton_begin("nb_ooo_engine                "); xml.attribut("value",toString(_nb_ooo_engine                )); xml.singleton_end();
+//  xml.singleton_begin("nb_decod_unit                "); xml.attribut("value",toString(_nb_decod_unit                )); xml.singleton_end();
     xml.singleton_begin("nb_inst_branch_complete      "); xml.attribut("value",toString(_nb_inst_branch_complete      )); xml.singleton_end();
-    xml.singleton_begin("size_address                 "); xml.attribut("value",toString(_size_address                 )); xml.singleton_end();
+//  xml.singleton_begin("size_address                 "); xml.attribut("value",toString(_size_address                 )); xml.singleton_end();
+//  xml.singleton_begin("size_inst_commit             "); xml.attribut("value",toString(_size_inst_commit             )); xml.singleton_end();
 
     for (uint32_t i=0;i<_nb_context; i++)
@@ -38,5 +38,5 @@
         xml.  attribut("id"  ,toString(i));
         xml. balise_open_end();
-        xml.  singleton_begin("size_depth                   "); xml.attribut("value",toString(_size_depth                    [i])); xml.singleton_end();
+//         xml.  singleton_begin("size_depth                   "); xml.attribut("value",toString(_size_depth                    [i])); xml.singleton_end();
         xml.  singleton_begin("link_context_to_decod_unit   "); xml.attribut("value",toString(_link_context_to_decod_unit    [i])); xml.singleton_end();
         xml. balise_close();
@@ -49,16 +49,5 @@
         xml.  attribut("id"  ,toString(i));
         xml. balise_open_end();
-        xml.  singleton_begin("size_inst_decod              "); xml.attribut("value",toString(_size_inst_decod              [i])); xml.singleton_end();
-        xml.  singleton_begin("link_decod_unit_to_ooo_engine"); xml.attribut("value",toString(_link_decod_unit_to_ooo_engine[i])); xml.singleton_end();
-        xml. balise_close();
-      }
-
-    for (uint32_t i=0;i<_nb_ooo_engine; i++)
-      {
-        xml. balise_open_begin("component");
-        xml.  attribut("type","ooo_engine");
-        xml.  attribut("id"  ,toString(i));
-        xml. balise_open_end();
-        xml.  singleton_begin("size_inst_commit             "); xml.attribut("value",toString(_size_inst_commit             [i])); xml.singleton_end();
+//      xml.  singleton_begin("size_inst_decod              "); xml.attribut("value",toString(_size_inst_decod              [i])); xml.singleton_end();
         xml. balise_close();
       }
