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

Last change on this file since 88 was 88, checked in by rosiere, 16 years ago

Almost complete design
with Test and test platform

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