source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/main.cpp @ 111

Last change on this file since 111 was 111, checked in by rosiere, 15 years ago

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

  • Property svn:keywords set to Id
File size: 3.4 KB
Line 
1/*
2 * $Id: main.cpp 111 2009-02-27 18:37:40Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/include/test.h"
9#include "Behavioural/include/Selftest.h"
10
11#define NB_PARAMS 11
12
13void usage (int argc, char * argv[])
14{
15  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
16  err (_("list_params is :\n"));
17  err (_(" * nb_inst_predict        (uint32_t)\n"));
18  err (_(" * nb_inst_update         (uint32_t)\n"));
19  err (_(" * size_address           (uint32_t)\n"));
20  err (_(" * have_bht               (bool    )\n"));
21  err (_(" * bht_size_shifter       (uint32_t)\n"));
22  err (_(" * bht_nb_shifter         (uint32_t)\n"));
23  err (_(" * have_pht               (bool    )\n"));
24  err (_(" * pht_size_counter       (uint32_t)\n"));
25  err (_(" * pht_nb_counter         (uint32_t)\n"));
26  err (_(" * pht_size_address_share (uint32_t)\n"));
27  err (_(" * update_on_prediction   (bool    )\n"));
28
29  exit (1);
30}
31
32#ifndef SYSTEMC
33int main    (int argc, char * argv[])
34#else
35int sc_main (int argc, char * argv[])
36#endif
37{
38  if (argc != static_cast<int>(2+NB_PARAMS))
39    usage (argc, argv);
40
41  uint32_t x = 1;
42
43  string name = argv[x++];
44
45  uint32_t nb_inst_predict       ;
46  uint32_t nb_inst_update        ;
47  uint32_t size_address          ;
48  bool     have_bht              ;
49  uint32_t bht_size_shifter      ;
50  uint32_t bht_nb_shifter        ;
51  bool     have_pht              ;
52  uint32_t pht_size_counter      ;
53  uint32_t pht_nb_counter        ;
54  uint32_t pht_size_address_share;
55  bool     update_on_prediction  ;
56
57  SELFTEST0(nb_inst_predict       ,uint32_t,argv,x);
58  SELFTEST0(nb_inst_update        ,uint32_t,argv,x);
59  SELFTEST0(size_address          ,uint32_t,argv,x);
60  SELFTEST0(have_bht              ,bool    ,argv,x);
61  SELFTEST0(bht_size_shifter      ,uint32_t,argv,x);
62  SELFTEST0(bht_nb_shifter        ,uint32_t,argv,x);
63  SELFTEST0(have_pht              ,bool    ,argv,x);
64  SELFTEST0(pht_size_counter      ,uint32_t,argv,x);
65  SELFTEST0(pht_nb_counter        ,uint32_t,argv,x);
66  SELFTEST0(pht_size_address_share,uint32_t,argv,x);
67  SELFTEST0(update_on_prediction  ,bool    ,argv,x);
68
69  int _return = EXIT_SUCCESS;
70  try 
71    {
72      morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters * param = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters
73        (
74         nb_inst_predict       ,
75         nb_inst_update        ,
76         size_address          ,
77         have_bht              ,
78         bht_size_shifter      ,
79         bht_nb_shifter        ,
80         have_pht              ,
81         pht_size_counter      ,
82         pht_nb_counter        ,
83         pht_size_address_share,
84         update_on_prediction  ,
85         true //is_toplevel
86        );
87     
88      msg(_("%s"),param->print(0).c_str());
89     
90      test (name,param);
91    }
92  catch (morpheo::ErrorMorpheo & error)
93    {
94      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
95      _return = EXIT_FAILURE;
96    }
97 
98  try 
99    {
100      if (_return == EXIT_SUCCESS)
101        TEST_OK("Two_Level_Branch_Predictor : no error");
102      else
103        TEST_KO("Two_Level_Branch_Predictor : a lot of error");
104    }
105  catch (morpheo::ErrorMorpheo & error)
106    {
107//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
108      _return = EXIT_FAILURE;
109    }
110
111  return (_return);
112}
Note: See TracBrowser for help on using the repository browser.