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

Last change on this file since 128 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: 7.3 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/Rename_unit/SelfTest/include/test.h"
9
10#define NB_PARAMS 13
11
12void usage (int argc, char * argv[])
13{
14  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
15  err (_("list_params is :\n"));
16  err (_(" * nb_front_end                                                 (uint32_t         )\n"));
17  err (_(" * nb_context                        [nb_front_end]             (uint32_t         )\n"));
18  err (_(" * nb_inst_decod                     [nb_front_end]             (uint32_t         )\n"));
19  err (_(" * nb_inst_insert                                               (uint32_t         )\n"));
20  err (_(" * nb_inst_retire                                               (uint32_t         )\n"));
21  err (_(" * nb_load_store_queue                                          (uint32_t         )\n"));
22  err (_(" * size_store_queue                  [nb_load_store_queue]      (uint32_t         )\n"));
23  err (_(" * size_load_queue                   [nb_load_store_queue]      (uint32_t         )\n"));
24  err (_(" * nb_inst_memory                    [nb_load_store_queue]      (uint32_t         )\n"));
25  err (_(" * link_load_store_unit_with_thread  [nb_front_end][nb_context] (uint32_t         )\n"));
26  err (_(" * rename_select_priority                                       (Tpriority_t      )\n"));
27  err (_(" * rename_select_load_balancing                                 (Tload_balancing_t)\n"));
28  err (_(" * rename_select_nb_front_end_select                            (uint32_t         )\n"));
29  err (_(" * max_branch_speculated                                        (uint32_t         )\n"));
30  err (_(" * size_general_data                                            (uint32_t         )\n"));
31  err (_(" * nb_general_register                                          (uint32_t         )\n"));
32  err (_(" * nb_special_register                                          (uint32_t         )\n"));
33  err (_(" * nb_reg_free                                                  (uint32_t         )\n"));
34  err (_(" * nb_bank                                                      (uint32_t         )\n"));
35//   err (_(" * size_read_counter                                            (uint32_t         )\n"));
36
37  exit (1);
38}
39
40#ifndef SYSTEMC
41int main    (int argc, char * argv[])
42#else
43int sc_main (int argc, char * argv[])
44#endif
45{
46  if (argc <= static_cast<int>(2+NB_PARAMS))
47    usage (argc, argv);
48
49  uint32_t x = 1;
50
51  string name = argv[x++];
52
53  uint32_t             _nb_front_end                      = fromString<uint32_t         >(argv[x++]);
54
55  if (argc <= static_cast<int>(2+NB_PARAMS+2*_nb_front_end))
56    usage (argc, argv);
57
58  uint32_t             _sum_nb_context = 0;
59
60  uint32_t           * _nb_context    = new uint32_t [_nb_front_end];
61  uint32_t           * _nb_inst_decod = new uint32_t [_nb_front_end];
62 
63  for (uint32_t i=0; i<_nb_front_end; i++)
64    {
65      _nb_context [i] = fromString<uint32_t>(argv[x++]);
66      _sum_nb_context += _nb_context [i];
67    }
68  for (uint32_t i=0; i<_nb_front_end; i++)
69    _nb_inst_decod [i] = fromString<uint32_t>(argv[x++]);
70  uint32_t             _nb_inst_insert                    = fromString<uint32_t         >(argv[x++]);
71  uint32_t             _nb_inst_retire                    = fromString<uint32_t         >(argv[x++]);
72  uint32_t             _nb_load_store_queue               = fromString<uint32_t         >(argv[x++]);
73
74  if (argc != static_cast<int>(2+NB_PARAMS+2*_nb_front_end+3*_nb_load_store_queue+_sum_nb_context))
75    usage (argc, argv);
76
77  uint32_t           * _size_store_queue                  = new uint32_t [_nb_load_store_queue];
78  uint32_t           * _size_load_queue                   = new uint32_t [_nb_load_store_queue];
79  uint32_t           * _nb_inst_memory                    = new uint32_t [_nb_load_store_queue];
80
81  for (uint32_t i=0; i<_nb_load_store_queue; i++)
82    _size_store_queue [i] = fromString<uint32_t>(argv[x++]);
83  for (uint32_t i=0; i<_nb_load_store_queue; i++)
84    _size_load_queue  [i] = fromString<uint32_t>(argv[x++]);
85  for (uint32_t i=0; i<_nb_load_store_queue; i++)
86    _nb_inst_memory   [i] = fromString<uint32_t>(argv[x++]);
87
88  uint32_t          ** _link_load_store_unit_with_thread  = new uint32_t * [_nb_front_end];
89  for (uint32_t i=0; i<_nb_front_end; i++)
90    {
91      _link_load_store_unit_with_thread [i] = new uint32_t [_nb_context[i]];
92      for (uint32_t j=0; j<_nb_context[i]; j++)
93        _link_load_store_unit_with_thread  [i][j] = fromString<uint32_t>(argv[x++]);
94    }
95
96  Tpriority_t          _rename_select_priority            = fromString<Tpriority_t      >(argv[x++]);
97  Tload_balancing_t    _rename_select_load_balancing      = fromString<Tload_balancing_t>(argv[x++]);
98  uint32_t             _rename_select_nb_front_end_select = fromString<uint32_t         >(argv[x++]);
99  uint32_t             _max_branch_speculated             = fromString<uint32_t         >(argv[x++]);
100  uint32_t             _size_general_data                 = fromString<uint32_t         >(argv[x++]);
101  uint32_t             _nb_general_register               = fromString<uint32_t         >(argv[x++]);
102  uint32_t             _nb_special_register               = fromString<uint32_t         >(argv[x++]);
103  uint32_t             _nb_reg_free                       = fromString<uint32_t         >(argv[x++]);
104  uint32_t             _nb_bank                           = fromString<uint32_t         >(argv[x++]);
105//   uint32_t             _size_read_counter                 = fromString<uint32_t         >(argv[x++]);
106
107  int _return = EXIT_SUCCESS;
108  try 
109    {
110      morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::Parameters
111        (_nb_front_end                     ,
112         _nb_context                       ,
113         _nb_inst_decod                    ,
114         _nb_inst_insert                   ,
115         _nb_inst_retire                   ,
116         _nb_load_store_queue              ,
117         _size_store_queue                 ,
118         _size_load_queue                  ,
119         _nb_inst_memory                   ,
120         _link_load_store_unit_with_thread ,
121         _rename_select_priority           ,
122         _rename_select_load_balancing     ,
123         _rename_select_nb_front_end_select,
124         _max_branch_speculated            ,
125         _size_general_data                ,
126         _nb_general_register              ,
127         _nb_special_register              ,
128         _nb_reg_free                      ,
129         _nb_bank                          ,
130//       _size_read_counter                ,
131         true //is_toplevel
132         );
133     
134      msg(_("%s"),param->print(0).c_str());
135     
136      test (name,param);
137     
138      delete param;
139    }
140  catch (morpheo::ErrorMorpheo & error)
141    {
142      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
143      _return = EXIT_FAILURE;
144    }
145
146  try 
147    {
148      if (_return == EXIT_SUCCESS)
149        TEST_OK("Rename_unit : no error");
150      else
151        TEST_KO("Rename_unit : a lot of error");
152    }
153  catch (morpheo::ErrorMorpheo & error)
154    {
155//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
156      _return = EXIT_FAILURE;
157    }
158
159  for (uint32_t i=0; i<_nb_front_end; i++)
160    delete [] _link_load_store_unit_with_thread [i];
161  delete [] _link_load_store_unit_with_thread;
162
163  delete [] _nb_inst_decod   ;
164  delete [] _size_store_queue;
165  delete [] _size_load_queue ;
166  delete [] _nb_inst_memory  ;
167  delete [] _nb_context      ;
168
169  return (_return);
170}
Note: See TracBrowser for help on using the repository browser.