Ignore:
Timestamp:
Dec 31, 2008, 11:18:08 AM (15 years ago)
Author:
rosiere
Message:

1) Fix bug (read unit, RAT -> write in R0, SPR desallocation ...)
2) Change VHDL Execute_queue -> use Generic/Queue?
3) Complete document on VHDL generation
4) Add soc test

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp

    r97 r98  
    2727  Tcontrol_t          take_good   ;
    2828  Tcontrol_t          flag        ;
     29  Tcontrol_t          no_sequence ;
    2930  Tcontrol_t          is_accurate ;
    3031  Thistory_t          history     ;
     
    104105  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_DEPTH          ," in_BRANCH_COMPLETE_DEPTH          ",Tdepth_t           ,_param->_nb_inst_branch_complete);
    105106  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_ADDRESS        ," in_BRANCH_COMPLETE_ADDRESS        ",Taddress_t         ,_param->_nb_inst_branch_complete);
    106   ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_FLAG           ," in_BRANCH_COMPLETE_FLAG           ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
     107  ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE    ," in_BRANCH_COMPLETE_NO_SEQUENCE    ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
    107108  ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION,"out_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t         ,_param->_nb_inst_branch_complete);
    108109  ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_TAKE           ,"out_BRANCH_COMPLETE_TAKE           ",Tcontrol_t         ,_param->_nb_inst_branch_complete);
     
    112113  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_VAL            ,"out_BRANCH_EVENT_VAL            ",Tcontrol_t         ,_param->_nb_context);
    113114  ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ACK            ," in_BRANCH_EVENT_ACK            ",Tcontrol_t         ,_param->_nb_context);
    114 //   ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID     ," in_BRANCH_EVENT_CONTEXT_ID     ",Tcontext_t         ,_param->_nb_context);
    115 //   ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_DEPTH          ," in_BRANCH_EVENT_DEPTH          ",Tdepth_t           ,_param->_nb_context);
     115//   ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_CONTEXT_ID     ,"out_BRANCH_EVENT_CONTEXT_ID     ",Tcontext_t         ,_param->_nb_context);
     116  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_DEPTH          ,"out_BRANCH_EVENT_DEPTH          ",Tdepth_t           ,_param->_nb_context);
    116117//   ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION,"out_BRANCH_EVENT_MISS_PREDICTION",Tcontrol_t         ,_param->_nb_context);
    117118  ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC    ,"out_BRANCH_EVENT_ADDRESS_SRC    ",Taddress_t         ,_param->_nb_context);
     
    194195  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_DEPTH          ,_param->_nb_inst_branch_complete);
    195196  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_ADDRESS        ,_param->_nb_inst_branch_complete);
    196   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_FLAG           ,_param->_nb_inst_branch_complete);
     197  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_NO_SEQUENCE    ,_param->_nb_inst_branch_complete);
    197198  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete);
    198199  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_TAKE           ,_param->_nb_inst_branch_complete);
     
    202203  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_VAL            ,_param->_nb_context);
    203204  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ACK            ,_param->_nb_context);
    204 //   if (_param->_have_port_context_id)
    205 //   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_CONTEXT_ID     ,_param->_nb_context);
    206 //   if (_param->_have_port_depth)
    207 //   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_DEPTH          ,_param->_nb_context);
    208 //   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ADDRESS        ,_param->_nb_context);
    209 //   INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context);
     205//if (_param->_have_port_context_id)
     206//INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_CONTEXT_ID     ,_param->_nb_context);
     207  if (_param->_have_port_depth)
     208  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_DEPTH          ,_param->_nb_context);
     209//INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context);
    210210  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_SRC    ,_param->_nb_context);
    211211  INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST_VAL,_param->_nb_context);
     
    347347              request.take_good        = 1;                                             
    348348              request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     349              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    349350              request.is_accurate      = true;
    350351              request.miss_ifetch      = false;
     
    486487                  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
    487488                  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
    488                   in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
     489                  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
    489490
    490491                  if (_param->_have_port_depth)
     
    627628              request.take_good        = 1;                                             
    628629              request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     630              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    629631              request.is_accurate      = true;
    630632              request.miss_ifetch      = false;
     
    704706          request.take_good        = 0;                                             
    705707          request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     708          request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    706709          request.is_accurate      = true;
    707710          request.miss_ifetch      = false;
     
    712715          request.ras_index        = (0x87654321)%_param->_size_ras_index[context];
    713716          request.ufpt_ptr         = ufpt_top [context];
     717          request.upt_ptr          = upt_top  [context];
    714718       
    715719          event = request;
     
    786790                  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
    787791                  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
    788                   in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
     792                  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
    789793
    790794                  if (_param->_have_port_depth)
     
    910914                    LABEL("BRANCH_EVENT [%d] - Transaction accepted",port);
    911915                    have_transaction = true;
    912              
     916
     917                    TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
    913918                    TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
    914919                    TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take);
     
    982987              request.take_good        = 1;                                             
    983988              request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     989              request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    984990              request.is_accurate      = true;
    985991              request.miss_ifetch      = false;
     
    10591065          request.take_good        = 0;                                             
    10601066          request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     1067          request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    10611068          request.is_accurate      = true;
    10621069          request.miss_ifetch      = false;
     
    10671074          request.ras_index        = (0x87654321)%_param->_size_ras_index[context];
    10681075          request.ufpt_ptr         = ufpt_top [context];
     1076          request.upt_ptr          = upt_top  [context];
    10691077
    10701078          event = request;
     
    11411149                  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
    11421150                  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_good);
    1143                   in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
     1151                  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
    11441152
    11451153                  if (_param->_have_port_depth)
     
    13451353                    have_transaction = true;
    13461354             
     1355                    TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
    13471356                    TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
    13481357                    TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take);
     
    14151424                request.take_good        = 1;                                             
    14161425                request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     1426                request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    14171427                request.is_accurate      = true ;
    14181428                request.miss_ifetch      = false;
     
    15571567                request.take_good        = 1;                                             
    15581568                request.flag             = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.take_good:(not request.take_good);
     1569                request.no_sequence      = (request.condition == BRANCH_CONDITION_FLAG_SET)?request.flag:not request.flag;
    15591570                request.is_accurate      = true ;
    15601571                request.miss_ifetch      = false;
     
    16441655                it_event->address_good = it_event->address_dest;
    16451656                it_event->flag         = not it_event->flag;
     1657                it_event->no_sequence  = not it_event->no_sequence;
    16461658                it_event->take_good    = not it_event->take_good;
    16471659              }
     
    16621674                  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_event->upt_ptr     );
    16631675                  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_event->address_good);
    1664                   in_BRANCH_COMPLETE_FLAG       [port]->write(it_event->flag        );
     1676                  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_event->no_sequence );
    16651677
    16661678                  if (_param->_have_port_depth)
     
    16751687                    {
    16761688                      LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port);
    1677                       LABEL("  * CONTEXT_ID %d"  ,it_event->context     );
    1678                       LABEL("  * DEPTH      %d"  ,it_event->upt_ptr     );
    1679                       LABEL("  * CONDITION  %d"  ,it_event->condition   );
    1680                       LABEL("  * ADDRESS    %.8x",it_event->address_good);
    1681                       LABEL("  * FLAG       %d"  ,it_event->flag        );
     1689                      LABEL("  * CONTEXT_ID  : %d"  ,it_event->context     );
     1690                      LABEL("  * DEPTH       : %d"  ,it_event->upt_ptr     );
     1691                      LABEL("  * CONDITION   : %d"  ,it_event->condition   );
     1692                      LABEL("  * ADDRESS     : %.8x",it_event->address_good);
     1693                      LABEL("  * FLAG        : %d"  ,it_event->flag        );
     1694                      LABEL("  * NO_SEQUENCE : %d"  ,it_event->no_sequence );
    16821695
    16831696                      have_transaction = true;
     
    17221735                  in_BRANCH_COMPLETE_DEPTH      [port]->write(it_upt->upt_ptr     );
    17231736                  in_BRANCH_COMPLETE_ADDRESS    [port]->write(it_upt->address_dest);
    1724                   in_BRANCH_COMPLETE_FLAG       [port]->write(it_upt->flag        );
     1737                  in_BRANCH_COMPLETE_NO_SEQUENCE[port]->write(it_upt->no_sequence );
    17251738
    17261739                  if (_param->_have_port_depth)
     
    17351748                    {
    17361749                      LABEL("BRANCH_COMPLETE [%d] - Transaction accepted",port);
    1737                       LABEL("  * CONTEXT_ID %d"  ,it_upt->context     );
    1738                       LABEL("  * DEPTH      %d"  ,it_upt->upt_ptr     );
    1739                       LABEL("  * CONDITION  %d"  ,it_upt->condition   );
    1740                       LABEL("  * ADDRESS    %.8x",it_upt->address_dest);
    1741                       LABEL("  * FLAG       %d"  ,it_upt->flag        );
     1750                      LABEL("  * CONTEXT_ID  : %d"  ,it_upt->context     );
     1751                      LABEL("  * DEPTH       : %d"  ,it_upt->upt_ptr     );
     1752                      LABEL("  * CONDITION   : %d"  ,it_upt->condition   );
     1753                      LABEL("  * ADDRESS     : %.8x",it_upt->address_dest);
     1754                      LABEL("  * FLAG        : %d"  ,it_upt->flag        );
     1755                      LABEL("  * NO_SEQUENCE : %d"  ,it_event->no_sequence );
    17421756
    17431757                      have_transaction = true;
     
    19531967                      LABEL("  * event.take         : %.8x,",event.take        );
    19541968                     
     1969                      TEST(Tdepth_t  ,out_BRANCH_EVENT_DEPTH            [port]->read(),event.upt_ptr);
    19551970                      TEST(Taddress_t,out_BRANCH_EVENT_ADDRESS_SRC      [port]->read(),event.address_src);
    19561971                      TEST(Tcontrol_t,out_BRANCH_EVENT_ADDRESS_DEST_VAL [port]->read(),event.take_good);
     
    21202135  delete []  in_BRANCH_COMPLETE_DEPTH          ;
    21212136  delete []  in_BRANCH_COMPLETE_ADDRESS        ;
    2122   delete []  in_BRANCH_COMPLETE_FLAG           ;
     2137  delete []  in_BRANCH_COMPLETE_NO_SEQUENCE    ;
    21232138  delete [] out_BRANCH_COMPLETE_MISS_PREDICTION;
    21242139  delete [] out_BRANCH_COMPLETE_TAKE           ;
     
    21292144  delete [] out_BRANCH_EVENT_VAL            ;
    21302145  delete []  in_BRANCH_EVENT_ACK            ;
    2131 //delete []  in_BRANCH_EVENT_CONTEXT_ID     ;
    2132 //delete []  in_BRANCH_EVENT_DEPTH          ;
     2146//delete [] out_BRANCH_EVENT_CONTEXT_ID     ;
     2147  delete [] out_BRANCH_EVENT_DEPTH          ;
    21332148//delete [] out_BRANCH_EVENT_MISS_PREDICTION;
    21342149  delete [] out_BRANCH_EVENT_ADDRESS_SRC    ;
Note: See TracChangeset for help on using the changeset viewer.