source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/src/main.cpp @ 110

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

1) OOO_egine : add stat to depiste low perf source
2) Commit : add stat
3) LSU_Pointer : retire - always ack (else combinatory loop). insert - max nb_inst_memory
4) TopLevel? : add debug_idle_time to stop combinatory loop.
5) Issue_queue : add reexecute_queue, new implementation (routage after issue_queue)
6) Decod / Predictor : add "can_continue"

  • Property svn:keywords set to Id
File size: 6.8 KB
Line 
1/*
2 * $Id: main.cpp 110 2009-02-19 16:31:47Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/include/test.h"
9#include "Behavioural/include/Allocation.h"
10
11#define NB_PARAMS 16
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_front_end                                       (uint32_t         )\n"));
18  err (_(" * nb_context              [nb_front_end]             (uint32_t         )\n"));
19  err (_(" * nb_rename_unit                                     (uint32_t         )\n"));
20  err (_(" * size_queue                                         (uint32_t         )\n"));
21  err (_(" * nb_bank                                            (uint32_t         )\n"));
22  err (_(" * nb_inst_insert          [nb_rename_unit]           (uint32_t         )\n"));
23  err (_(" * nb_inst_retire          [nb_rename_unit]           (uint32_t         )\n"));
24  err (_(" * nb_inst_commit                                     (uint32_t         )\n"));
25  err (_(" * nb_inst_reexecute                                  (uint32_t         )\n"));
26  err (_(" * nb_inst_branch_complete                            (uint32_t         )\n"));
27  err (_(" * nb_branch_speculated    [nb_front_end][nb_context] (uint32_t         )\n"));
28  err (_(" * size_nb_inst_decod                                 (uint32_t         )\n"));
29  err (_(" * size_general_data                                  (uint32_t         )\n"));
30  err (_(" * size_store_queue_ptr                               (uint32_t         )\n"));
31  err (_(" * size_load_queue_ptr                                (uint32_t         )\n"));
32  err (_(" * size_general_register                              (uint32_t         )\n"));
33  err (_(" * size_special_register                              (uint32_t         )\n"));
34  err (_(" * priority                                           (Tpriority_t      )\n"));
35  err (_(" * load_balancing                                     (Tload_balancing_t)\n"));
36  err (_(" * nb_rename_unit_select                              (uint32_t         )\n"));
37
38  exit (1);
39}
40
41#ifndef SYSTEMC
42int main    (int argc, char * argv[])
43#else
44int sc_main (int argc, char * argv[])
45#endif
46{
47  if (argc <= static_cast<int>(2+NB_PARAMS))
48    usage (argc, argv);
49
50  uint32_t x = 1;
51
52  string name = argv[x++];
53
54  uint32_t     _nb_front_end            = fromString<uint32_t>(argv[x++]);
55
56
57  if (argc <= static_cast<int>(2+NB_PARAMS+_nb_front_end))
58    usage (argc, argv);
59
60  uint32_t     _sum_nb_context = 0;
61  uint32_t   * _nb_context              = new uint32_t [_nb_front_end];
62  for (uint32_t i=0; i<_nb_front_end; i++)
63    {
64      _nb_context [i] = fromString<uint32_t>(argv[x++]);
65      _sum_nb_context += _nb_context [i];
66    }
67  uint32_t     _nb_rename_unit          = fromString<uint32_t>(argv[x++]);
68
69  if (argc != static_cast<int>(2+NB_PARAMS+1*_nb_front_end+_sum_nb_context+2*_nb_rename_unit))
70    usage (argc, argv);
71
72  uint32_t     _size_queue              = fromString<uint32_t>(argv[x++]);
73  uint32_t     _nb_bank                 = fromString<uint32_t>(argv[x++]);
74  uint32_t   * _nb_inst_insert          = new uint32_t [_nb_rename_unit];
75  for (uint32_t i=0; i<_nb_rename_unit; i++)
76    _nb_inst_insert [i] = fromString<uint32_t>(argv[x++]);
77  uint32_t   * _nb_inst_retire          = new uint32_t [_nb_rename_unit];
78  for (uint32_t i=0; i<_nb_rename_unit; i++)
79    _nb_inst_retire [i] = fromString<uint32_t>(argv[x++]);
80  uint32_t     _nb_inst_commit          = fromString<uint32_t>(argv[x++]);
81  uint32_t     _nb_inst_reexecute       = fromString<uint32_t>(argv[x++]);
82  uint32_t     _nb_inst_branch_complete = fromString<uint32_t>(argv[x++]);
83  uint32_t **  _nb_branch_speculated    = new uint32_t * [_nb_front_end];
84
85  for (uint32_t i=0; i<_nb_front_end; i++)
86    {
87      _nb_branch_speculated [i] = new uint32_t [_nb_context [i]];
88      for (uint32_t j=0; j<_nb_context [i]; j++)
89        _nb_branch_speculated [i][j] = fromString<uint32_t>(argv[x++]);
90    }
91
92  uint32_t          _size_nb_inst_decod      = fromString<uint32_t         >(argv[x++]);
93  uint32_t          _size_general_data       = fromString<uint32_t         >(argv[x++]);
94  uint32_t          _size_store_queue_ptr    = fromString<uint32_t         >(argv[x++]);
95  uint32_t          _size_load_queue_ptr     = fromString<uint32_t         >(argv[x++]);
96  uint32_t          _size_general_register   = fromString<uint32_t         >(argv[x++]);
97  uint32_t          _size_special_register   = fromString<uint32_t         >(argv[x++]);
98  Tpriority_t       _priority                = fromString<Tpriority_t      >(argv[x++]);
99  Tload_balancing_t _load_balancing          = fromString<Tload_balancing_t>(argv[x++]);
100  uint32_t          _nb_rename_unit_select   = fromString<uint32_t         >(argv[x++]);
101
102  uint32_t          _nb_thread                          ;
103  uint32_t       ** _translate_num_context_to_num_thread; //[nb_front_end][nb_context]
104
105  ALLOC2(_translate_num_context_to_num_thread,uint32_t,_nb_front_end,_nb_context[it1]);
106
107  _nb_thread = 0;
108  for (uint32_t i=0; i<_nb_front_end; i++)
109    for (uint32_t j=0; j<_nb_context [i]; j++)
110      _translate_num_context_to_num_thread [i][j] = _nb_thread ++;
111
112  int _return = EXIT_SUCCESS;
113  try 
114    {
115      morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::Parameters
116        (_nb_front_end            ,
117         _nb_context              ,
118         _nb_rename_unit          ,
119         _size_queue              ,
120         _nb_bank                 ,
121         _nb_inst_insert          ,
122         _nb_inst_retire          ,
123         _nb_inst_commit          ,
124         _nb_inst_reexecute       ,
125         _nb_inst_branch_complete ,
126         _nb_branch_speculated    ,
127         _size_nb_inst_decod      ,
128         _size_general_data       ,
129         _size_store_queue_ptr    ,
130         _size_load_queue_ptr     ,
131         _size_general_register   ,
132         _size_special_register   ,
133         _priority                ,
134         _load_balancing          ,
135         _nb_rename_unit_select   ,
136         _nb_thread                          ,
137         _translate_num_context_to_num_thread,
138         true // is_toplevel
139         );
140     
141//       msg(_("%s"),param->print(0).c_str());
142     
143      test (name,param);
144    }
145  catch (morpheo::ErrorMorpheo & error)
146    {
147      msg (_("%s"),error.what ());
148      _return = EXIT_FAILURE;
149    }
150 
151  try 
152    {
153      if (_return == EXIT_SUCCESS)
154        TEST_OK("No error");
155      else
156        TEST_KO("A lot of error");
157    }
158  catch (morpheo::ErrorMorpheo & error)
159    {
160//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
161      _return = EXIT_FAILURE;
162    }
163
164  DELETE2(_translate_num_context_to_num_thread,_nb_front_end,_nb_context[it1]);
165
166  delete [] _nb_context    ;
167  delete [] _nb_inst_insert;
168  delete [] _nb_inst_retire;
169  for (uint32_t i=0; i<_nb_front_end; i++)
170    delete [] _nb_branch_speculated [i];
171  delete [] _nb_branch_speculated;
172
173  return (_return);
174}
Note: See TracBrowser for help on using the repository browser.