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

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

1) Platforms : add new organization for test
2) Load_Store_Unit : add array to count nb_check in store_queue
3) Issue_queue and Core_Glue : rewrite the issue network
4) Special_Register_Unit : add reset value to register CID
5) Softwares : add multicontext test
6) Softwares : add SPECINT
7) Softwares : add MiBench?
7) Read_queue : inhib access for r0
8) Change Core_Glue (network) - dont yet support priority and load balancing scheme

  • Property svn:keywords set to Id
File size: 7.8 KB
Line 
1/*
2 * $Id: main.cpp 117 2009-05-16 14:42: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 (_(" * queue_scheme                                          (Tissue_queue_scheme_t)\n"));
21  err (_(" * nb_bank                                               (uint32_t             )\n"));
22  err (_(" * size_packet                                           (uint32_t             )\n"));
23  err (_(" * size_general_data                                     (uint32_t             )\n"));
24  err (_(" * size_special_data                                     (uint32_t             )\n"));
25  err (_(" * size_general_register                                 (uint32_t             )\n"));
26  err (_(" * size_special_register                                 (uint32_t             )\n"));
27  err (_(" * size_store_queue_ptr                                  (uint32_t             )\n"));
28  err (_(" * size_load_queue_ptr                                   (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_issue_type      [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  Tissue_queue_scheme_t _queue_scheme       = fromString<Tissue_queue_scheme_t>(argv[x++]);
74  uint32_t          _nb_bank                = fromString<uint32_t         >(argv[x++]);
75  uint32_t          _size_packet            = fromString<uint32_t         >(argv[x++]);
76  uint32_t          _size_general_data      = fromString<uint32_t         >(argv[x++]);
77  uint32_t          _size_special_data      = fromString<uint32_t         >(argv[x++]);
78  uint32_t          _size_general_register  = fromString<uint32_t         >(argv[x++]);
79  uint32_t          _size_special_register  = fromString<uint32_t         >(argv[x++]);
80  uint32_t          _size_store_queue_ptr   = fromString<uint32_t         >(argv[x++]);
81  uint32_t          _size_load_queue_ptr    = fromString<uint32_t         >(argv[x++]);
82//uint32_t          _nb_inst_issue          = fromString<uint32_t         >(argv[x++]);
83  uint32_t        * _nb_inst_rename         = new uint32_t [_nb_rename_unit];
84  for (uint32_t i=0; i<_nb_rename_unit; i++)
85    _nb_inst_rename [i] = fromString<uint32_t>(argv[x++]);
86  uint32_t          _nb_inst_reexecute      = fromString<uint32_t         >(argv[x++]);
87  uint32_t          _nb_rename_unit_select  = fromString<uint32_t         >(argv[x++]);
88  Tpriority_t       _priority               = fromString<Tpriority_t      >(argv[x++]);
89  Tload_balancing_t _load_balancing         = fromString<Tload_balancing_t>(argv[x++]);
90
91//   if (argc != static_cast<int>(2+NB_PARAMS+_nb_rename_unit+(_nb_rename_unit+12)*_nb_inst_issue))
92//     usage (argc, argv);
93
94//   bool           ** _table_routing          = new bool * [_nb_rename_unit];
95//   for (uint32_t i=0; i<_nb_rename_unit; i++)
96//     {
97//       _table_routing [i] = new bool [_nb_inst_issue];
98//       for (uint32_t j=0; j<_nb_inst_issue; j++)
99//      _table_routing [i][j] = fromString<bool>(argv[x++]);
100//     }
101
102//   bool           ** _table_issue_type          = new bool * [_nb_inst_issue];
103//   for (uint32_t i=0; i<_nb_inst_issue; i++)
104//     {
105//       _table_issue_type [i] = new bool [_nb_inst_issue];
106
107//       _table_issue_type [i][TYPE_ALU    ] = fromString<bool>(argv[x++]);
108//       _table_issue_type [i][TYPE_SHIFT  ] = fromString<bool>(argv[x++]);
109//       _table_issue_type [i][TYPE_MOVE   ] = fromString<bool>(argv[x++]);
110//       _table_issue_type [i][TYPE_TEST   ] = fromString<bool>(argv[x++]);
111//       _table_issue_type [i][TYPE_MUL    ] = fromString<bool>(argv[x++]);
112//       _table_issue_type [i][TYPE_DIV    ] = fromString<bool>(argv[x++]);
113//       _table_issue_type [i][TYPE_EXTEND ] = fromString<bool>(argv[x++]);
114//       _table_issue_type [i][TYPE_FIND   ] = fromString<bool>(argv[x++]);
115//       _table_issue_type [i][TYPE_SPECIAL] = fromString<bool>(argv[x++]);
116//       _table_issue_type [i][TYPE_CUSTOM ] = fromString<bool>(argv[x++]);
117//       _table_issue_type [i][TYPE_BRANCH ] = fromString<bool>(argv[x++]);
118//       _table_issue_type [i][TYPE_MEMORY ] = fromString<bool>(argv[x++]);
119//     }
120
121  int _return = EXIT_SUCCESS;
122  try 
123    {
124      morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::issue_queue::Parameters
125        (_nb_context            ,
126         _nb_front_end          ,
127         _nb_rename_unit        ,
128         _size_queue            ,
129         _queue_scheme          ,
130         _nb_bank               ,
131         _size_packet           ,
132         _size_general_data     ,
133         _size_special_data     ,
134         _size_general_register ,
135         _size_special_register ,
136         _size_store_queue_ptr  ,
137         _size_load_queue_ptr   ,
138//       _nb_inst_issue         ,
139         _nb_inst_rename        ,
140         _nb_inst_reexecute     ,
141         _nb_rename_unit_select ,
142         _priority              ,
143         _load_balancing        ,
144//       _table_routing         ,
145//       _table_issue_type      ,
146         true // is_toplevel
147         );
148     
149      msg(_("%s"),param->print(1).c_str());
150     
151      test (name,param);
152    }
153  catch (morpheo::ErrorMorpheo & error)
154    {
155      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
156      _return = EXIT_FAILURE;
157    }
158 
159  try 
160    {
161      if (_return == EXIT_SUCCESS)
162        TEST_OK("Issue_queue : no error");
163      else
164        TEST_KO("Issue_queue : a lot of error");
165    }
166  catch (morpheo::ErrorMorpheo & error)
167    {
168      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
169      _return = EXIT_FAILURE;
170    }
171
172  delete [] _nb_inst_rename;
173
174//   for (uint32_t i=0; i<_nb_rename_unit; i++)
175//     delete [] _table_routing [i];
176//   delete [] _table_routing   ;
177//   for (uint32_t i=0; i<_nb_inst_issue; i++)
178//     delete [] _table_issue_type [i];
179//   delete [] _table_issue_type;
180
181  return (_return);
182}
Note: See TracBrowser for help on using the repository browser.