Index: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp
===================================================================
--- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp	(revision 97)
+++ trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp	(revision 98)
@@ -27,4 +27,5 @@
   Tcontrol_t          take_good   ;
   Tcontrol_t          flag        ;
+  Tcontrol_t          no_sequence ;
   Tcontrol_t          is_accurate ;
   Thistory_t          history     ;
@@ -104,5 +105,5 @@
   ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_DEPTH          ," in_BRANCH_COMPLETE_DEPTH          ",Tdepth_t           ,_param->_nb_inst_branch_complete);
   ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_ADDRESS        ," in_BRANCH_COMPLETE_ADDRESS        ",Taddress_t         ,_param->_nb_inst_branch_complete);
-  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_FLAG           ," in_BRANCH_COMPLETE_FLAG           ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
+  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE    ," in_BRANCH_COMPLETE_NO_SEQUENCE    ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
   ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION,"out_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t         ,_param->_nb_inst_branch_complete);
   ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_TAKE           ,"out_BRANCH_COMPLETE_TAKE           ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
@@ -112,6 +113,6 @@
   ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_VAL            ,"out_BRANCH_EVENT_VAL            ",Tcontrol_t         ,_param->_nb_context);
   ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ACK            ," in_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(out_BRANCH_EVENT_CONTEXT_ID     ,"out_BRANCH_EVENT_CONTEXT_ID     ",Tcontext_t         ,_param->_nb_context);
+  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_DEPTH          ,"out_BRANCH_EVENT_DEPTH          ",Tdepth_t           ,_param->_nb_context);
 //   ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION,"out_BRANCH_EVENT_MISS_PREDICTION",Tcontrol_t         ,_param->_nb_context);
   ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC    ,"out_BRANCH_EVENT_ADDRESS_SRC    ",Taddress_t         ,_param->_nb_context);
@@ -194,5 +195,5 @@
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_DEPTH          ,_param->_nb_inst_branch_complete);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_ADDRESS        ,_param->_nb_inst_branch_complete);
-  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_FLAG           ,_param->_nb_inst_branch_complete);
+  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_TAKE           ,_param->_nb_inst_branch_complete);
@@ -202,10 +203,9 @@
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_VAL            ,_param->_nb_context);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ACK            ,_param->_nb_context);
-//   if (_param->_have_port_context_id)
-//   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_CONTEXT_ID     ,_param->_nb_context);
-//   if (_param->_have_port_depth)
-//   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_DEPTH          ,_param->_nb_context);
-//   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ADDRESS        ,_param->_nb_context);
-//   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context);
+//if (_param->_have_port_context_id)
+//INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_CONTEXT_ID     ,_param->_nb_context);
+  if (_param->_have_port_depth)
+  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_DEPTH          ,_param->_nb_context);
+//INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_SRC    ,_param->_nb_context);
   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST_VAL,_param->_nb_context);
@@ -347,4 +347,5 @@
               request.take_good        = 1;                                              
               request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
               request.is_accurate      = true;
               request.miss_ifetch      = false;
@@ -486,5 +487,5 @@
 		  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
 		  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
-		  in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
+		  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
 
                   if (_param->_have_port_depth)
@@ -627,4 +628,5 @@
               request.take_good        = 1;                                              
               request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
               request.is_accurate      = true;
               request.miss_ifetch      = false;
@@ -704,4 +706,5 @@
           request.take_good        = 0;                                              
           request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+          request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
           request.is_accurate      = true;
           request.miss_ifetch      = false;
@@ -712,4 +715,5 @@
           request.ras_index        = (0x87654321)%_param->_size_ras_index[context];
           request.ufpt_ptr         = ufpt_top [context];
+          request.upt_ptr          = upt_top  [context];
         
           event = request;
@@ -786,5 +790,5 @@
 		  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
 		  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
-		  in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
+		  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
 
                   if (_param->_have_port_depth)
@@ -910,5 +914,6 @@
                     LABEL("BRANCH_EVENT [%d] - Transaction accepted",port);
                     have_transaction = true;
-              
+
+                    TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
                     TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
                     TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take);
@@ -982,4 +987,5 @@
               request.take_good        = 1;                                              
               request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
               request.is_accurate      = true;
               request.miss_ifetch      = false;
@@ -1059,4 +1065,5 @@
           request.take_good        = 0;                                              
           request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+          request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
           request.is_accurate      = true;
           request.miss_ifetch      = false;
@@ -1067,4 +1074,5 @@
           request.ras_index        = (0x87654321)%_param->_size_ras_index[context];
           request.ufpt_ptr         = ufpt_top [context];
+          request.upt_ptr          = upt_top  [context];
 
           event = request;
@@ -1141,5 +1149,5 @@
 		  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
 		  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
-		  in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
+		  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
 
                   if (_param->_have_port_depth)
@@ -1345,4 +1353,5 @@
                     have_transaction = true;
               
+                    TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
                     TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
                     TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take);
@@ -1415,4 +1424,5 @@
                 request.take_good        = 1;                                              
                 request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+                request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
                 request.is_accurate      = true ;
                 request.miss_ifetch      = false;
@@ -1557,4 +1567,5 @@
                 request.take_good        = 1;                                              
                 request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
+                request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
                 request.is_accurate      = true ;
                 request.miss_ifetch      = false;
@@ -1644,4 +1655,5 @@
                 it_event->address_good = it_event->address_dest;
                 it_event->flag         = not it_event->flag;
+                it_event->no_sequence  = not it_event->no_sequence;
                 it_event->take_good    = not it_event->take_good;
               }
@@ -1662,5 +1674,5 @@
 		  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_event->upt_ptr     );
 		  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_event->address_good);
-		  in_BRANCH_COMPLETE_FLAG       [port]->write(it_event->flag        );
+		  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_event->no_sequence );
 
                   if (_param->_have_port_depth)
@@ -1675,9 +1687,10 @@
 		    {
 		      LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port);
-                      LABEL("  * CONTEXT_ID %d"  ,it_event->context     );
-                      LABEL("  * DEPTH      %d"  ,it_event->upt_ptr     );
-                      LABEL("  * CONDITION  %d"  ,it_event->condition   );
-                      LABEL("  * ADDRESS    %.8x",it_event->address_good);
-                      LABEL("  * FLAG       %d"  ,it_event->flag        );
+                      LABEL("  * CONTEXT_ID  : %d"  ,it_event->context     );
+                      LABEL("  * DEPTH       : %d"  ,it_event->upt_ptr     );
+                      LABEL("  * CONDITION   : %d"  ,it_event->condition   );
+                      LABEL("  * ADDRESS     : %.8x",it_event->address_good);
+                      LABEL("  * FLAG        : %d"  ,it_event->flag        );
+                      LABEL("  * NO_SEQUENCE : %d"  ,it_event->no_sequence );
 
 		      have_transaction = true;
@@ -1722,5 +1735,5 @@
 		  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
 		  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_dest);
-		  in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
+		  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
 
                   if (_param->_have_port_depth)
@@ -1735,9 +1748,10 @@
 		    {
 		      LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port);
-                      LABEL("  * CONTEXT_ID %d"  ,it_upt->context     );
-                      LABEL("  * DEPTH      %d"  ,it_upt->upt_ptr     );
-                      LABEL("  * CONDITION  %d"  ,it_upt->condition   );
-                      LABEL("  * ADDRESS    %.8x",it_upt->address_dest);
-                      LABEL("  * FLAG       %d"  ,it_upt->flag        );
+                      LABEL("  * CONTEXT_ID  : %d"  ,it_upt->context     );
+                      LABEL("  * DEPTH       : %d"  ,it_upt->upt_ptr     );
+                      LABEL("  * CONDITION   : %d"  ,it_upt->condition   );
+                      LABEL("  * ADDRESS     : %.8x",it_upt->address_dest);
+                      LABEL("  * FLAG        : %d"  ,it_upt->flag        );
+                      LABEL("  * NO_SEQUENCE : %d"  ,it_event->no_sequence );
 
 		      have_transaction = true;
@@ -1953,4 +1967,5 @@
                       LABEL("  * event.take         : %.8x,",event.take        );
                       
+                      TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
                       TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
                       TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take_good);
@@ -2120,5 +2135,5 @@
   delete []  in_BRANCH_COMPLETE_DEPTH          ;
   delete []  in_BRANCH_COMPLETE_ADDRESS        ;
-  delete []  in_BRANCH_COMPLETE_FLAG           ;
+  delete []  in_BRANCH_COMPLETE_NO_SEQUENCE    ;
   delete [] out_BRANCH_COMPLETE_MISS_PREDICTION;
   delete [] out_BRANCH_COMPLETE_TAKE           ;
@@ -2129,6 +2144,6 @@
   delete [] out_BRANCH_EVENT_VAL            ;
   delete []  in_BRANCH_EVENT_ACK            ;
-//delete []  in_BRANCH_EVENT_CONTEXT_ID     ;
-//delete []  in_BRANCH_EVENT_DEPTH          ;
+//delete [] out_BRANCH_EVENT_CONTEXT_ID     ;
+  delete [] out_BRANCH_EVENT_DEPTH          ;
 //delete [] out_BRANCH_EVENT_MISS_PREDICTION;
   delete [] out_BRANCH_EVENT_ADDRESS_SRC    ;
