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

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

1) Correct bug in link two signal
2) Fix error detected with valgrind
3) modif distexe script

  • Property svn:keywords set to Id
File size: 6.8 KB
Line 
1/*
2 * $Id: main.cpp 128 2009-06-26 08:43:23Z 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      delete param;
146    }
147  catch (morpheo::ErrorMorpheo & error)
148    {
149      msg (_("%s"),error.what ());
150      _return = EXIT_FAILURE;
151    }
152 
153  try 
154    {
155      if (_return == EXIT_SUCCESS)
156        TEST_OK("No error");
157      else
158        TEST_KO("A lot of error");
159    }
160  catch (morpheo::ErrorMorpheo & error)
161    {
162//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
163      _return = EXIT_FAILURE;
164    }
165
166  DELETE2(_translate_num_context_to_num_thread,_nb_front_end,_nb_context[it1]);
167
168  delete [] _nb_context    ;
169  delete [] _nb_inst_insert;
170  delete [] _nb_inst_retire;
171  for (uint32_t i=0; i<_nb_front_end; i++)
172    delete [] _nb_branch_speculated [i];
173  delete [] _nb_branch_speculated;
174
175  return (_return);
176}
Note: See TracBrowser for help on using the repository browser.