source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/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.6 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_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_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_read_unit                                         (uint32_t)\n"));
17  err (_("  * nb_read_unit_port    [nb_read_unit]                  (uint32_t)\n"));
18  err (_("  * nb_execute_unit                                      (uint32_t)\n"));
19  err (_("  * nb_execute_unit_port [nb_execute_unit]               (uint32_t)\n"));
20  err (_("  * nb_context                                           (uint32_t)\n"));
21  err (_("  * nb_front_end                                         (uint32_t)\n"));
22  err (_("  * nb_ooo_engine                                        (uint32_t)\n"));
23  err (_("  * nb_packet                                            (uint32_t)\n"));
24  err (_("  * size_general_data                                    (uint32_t)\n"));
25  err (_("  * size_special_data                                    (uint32_t)\n"));
26  err (_("  * nb_general_register                                  (uint32_t)\n"));
27  err (_("  * nb_special_register                                  (uint32_t)\n"));
28  err (_("  * size_store_queue                                     (uint32_t)\n"));
29  err (_("  * size_load_queue                                      (uint32_t)\n"));
30  err (_("  * priority                                             (uint32_t)\n"));
31  err (_("  * table_routing        [nb_read_unit][nb_execute_unit] (bool    )\n"));
32  err (_("  * table_execute_type   [nb_execute_unit][nb_type*]     (bool    )\n"));
33  err (_("    * [TYPE_ALU    ]\n"));
34  err (_("    * [TYPE_SHIFT  ]\n"));
35  err (_("    * [TYPE_MOVE   ]\n"));
36  err (_("    * [TYPE_TEST   ]\n"));
37  err (_("    * [TYPE_MUL    ]\n"));
38  err (_("    * [TYPE_DIV    ]\n"));
39  err (_("    * [TYPE_EXTEND ]\n"));
40  err (_("    * [TYPE_FIND   ]\n"));
41  err (_("    * [TYPE_SPECIAL]\n"));
42  err (_("    * [TYPE_CUSTOM ]\n"));
43  err (_("    * [TYPE_BRANCH ]\n"));
44  err (_("    * [TYPE_MEMORY ]\n"));
45  err (_("  * table_execute_thread [nb_execute_unit][nb_thread]    (bool    )\n"));
46
47  exit (1);
48}
49
50#ifndef SYSTEMC
51int main    (int argc, char * argv[])
52#else
53int sc_main (int argc, char * argv[])
54#endif
55{
56  if (argc < 2+NB_PARAMS)
57    usage (argc, argv);
58
59  uint32_t       x = 1;
60
61  string      name                  =      argv[x++];
62  uint32_t    _nb_read_unit         = atoi(argv[x++]);
63
64  if (static_cast<uint32_t>(argc) < 2+NB_PARAMS+_nb_read_unit)
65    usage (argc, argv);
66
67  uint32_t *  _nb_read_unit_port = new uint32_t [_nb_read_unit];
68  for (uint32_t i=0; i<_nb_read_unit; i++)
69    _nb_read_unit_port [i] = atoi(argv[x++]);
70 
71  uint32_t    _nb_execute_unit      = atoi(argv[x++]);
72
73  if (static_cast<uint32_t>(argc) < 2+NB_PARAMS+_nb_read_unit+_nb_execute_unit)
74    usage (argc, argv);
75
76  uint32_t    _sum_execute_unit_port = 0;
77  uint32_t *  _nb_execute_unit_port = new uint32_t [_nb_execute_unit];
78  for (uint32_t i=0; i<_nb_execute_unit; i++)
79    {
80      _nb_execute_unit_port [i] = atoi(argv[x++]);
81      _sum_execute_unit_port += _nb_execute_unit_port [i];
82    }
83
84  uint32_t    _nb_context           = atoi(argv[x++]);
85  uint32_t    _nb_front_end         = atoi(argv[x++]);
86  uint32_t    _nb_ooo_engine        = atoi(argv[x++]);
87  uint32_t    _nb_packet            = atoi(argv[x++]);
88  uint32_t    _size_general_data    = atoi(argv[x++]);
89  uint32_t    _size_special_data    = atoi(argv[x++]);
90  uint32_t    _nb_general_register  = atoi(argv[x++]);
91  uint32_t    _nb_special_register  = atoi(argv[x++]);
92  uint32_t    _size_store_queue     = atoi(argv[x++]);
93  uint32_t    _size_load_queue      = atoi(argv[x++]);
94  Tpriority_t _priority             = fromString<Tpriority_t>(argv[x++]);
95 
96  uint32_t    _nb_thread            = get_nb_thread(_nb_context, _nb_front_end, _nb_ooo_engine);
97
98  msg("%d\n",argc);
99  msg("%d\n",2+NB_PARAMS+(_nb_read_unit+_nb_execute_unit+(_nb_read_unit*_sum_execute_unit_port)+(_nb_execute_unit*12)+(_nb_execute_unit*_nb_thread)));
100 
101  if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_read_unit+_nb_execute_unit+(_nb_read_unit*_sum_execute_unit_port)+(_nb_execute_unit*12)+(_nb_execute_unit*_nb_thread)))
102      usage (argc, argv);
103 
104  bool *** _table_routing        ;
105  bool  ** _table_execute_type   ;
106  bool  ** _table_execute_thread ;
107 
108  _table_routing = new bool ** [_nb_read_unit];
109  for (uint32_t i=0; i<_nb_read_unit; i++)
110    {
111      _table_routing [i] = new bool * [_nb_execute_unit];
112      for (uint32_t j=0; j<_nb_execute_unit; j++)
113        {
114          _table_routing [i][j] = new bool [_nb_execute_unit_port [j]];
115     
116          for (uint32_t k=0; k<_nb_execute_unit_port [j]; k++)
117            _table_routing [i][j][k] = atoi(argv[x++]);
118        }
119    }
120     
121  _table_execute_type = new bool * [_nb_execute_unit];
122  for (uint32_t i=0; i<_nb_execute_unit; i++)
123    {
124      _table_execute_type [i] = new bool [MAX_TYPE];
125
126      _table_execute_type [i][TYPE_ALU    ] = atoi(argv[x++]);
127      _table_execute_type [i][TYPE_SHIFT  ] = atoi(argv[x++]);
128      _table_execute_type [i][TYPE_MOVE   ] = atoi(argv[x++]);
129      _table_execute_type [i][TYPE_TEST   ] = atoi(argv[x++]);
130      _table_execute_type [i][TYPE_MUL    ] = atoi(argv[x++]);
131      _table_execute_type [i][TYPE_DIV    ] = atoi(argv[x++]);
132      _table_execute_type [i][TYPE_EXTEND ] = atoi(argv[x++]);
133      _table_execute_type [i][TYPE_FIND   ] = atoi(argv[x++]);
134      _table_execute_type [i][TYPE_SPECIAL] = atoi(argv[x++]);
135      _table_execute_type [i][TYPE_CUSTOM ] = atoi(argv[x++]);
136      _table_execute_type [i][TYPE_BRANCH ] = atoi(argv[x++]);
137      _table_execute_type [i][TYPE_MEMORY ] = atoi(argv[x++]);
138    }
139
140  _table_execute_thread = new bool * [_nb_execute_unit];
141  for (uint32_t i=0; i<_nb_execute_unit; i++)
142    {
143      _table_execute_thread [i] = new bool [_nb_thread];
144
145      for (uint32_t j=0; j<_nb_thread; j++)
146        _table_execute_thread [i][j] = atoi(argv[x++]);
147    }
148
149  try 
150    {
151      morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters * param = new morpheo::behavioural::core::multi_execute_loop::execute_loop::network::read_unit_to_execution_unit::Parameters
152        (_nb_read_unit         ,
153         _nb_read_unit_port    ,
154         _nb_execute_unit      ,
155         _nb_execute_unit_port ,
156         _nb_context           ,
157         _nb_front_end         ,
158         _nb_ooo_engine        ,
159         _nb_packet            ,
160         _size_general_data    ,
161         _size_special_data    ,
162         _nb_general_register  ,
163         _nb_special_register  ,
164         _size_store_queue     ,
165         _size_load_queue      ,
166         _priority             ,
167         _table_routing        ,
168         _table_execute_type   ,
169         _table_execute_thread ,
170         true // is_toplevel
171         );
172     
173      msg(_("%s"),param->print(1).c_str());
174     
175      test (name,param);
176    }
177  catch (morpheo::ErrorMorpheo & error)
178    {
179      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
180      exit (EXIT_FAILURE);
181    }
182  catch (...)
183    {
184      err (_("<%s> : This test must generate a error.\n"),name.c_str());
185      exit (EXIT_FAILURE);
186    }
187
188  delete [] _nb_read_unit_port;
189  delete [] _nb_execute_unit_port ;
190
191  for (uint32_t i=0; i<_nb_read_unit; i++)
192    {
193      for (uint32_t j=0; j<_nb_execute_unit; j++)
194        delete [] _table_routing [i][j];
195      delete [] _table_routing [i];
196    }
197  delete [] _table_routing;
198
199
200  for (uint32_t i=0; i<_nb_execute_unit; i++)
201    delete [] _table_execute_type [i];
202  delete [] _table_execute_type   ;
203
204  for (uint32_t i=0; i<_nb_execute_unit; i++)
205    delete [] _table_execute_thread [i];
206  delete [] _table_execute_thread ;
207
208
209  return (EXIT_SUCCESS);
210}
211
Note: See TracBrowser for help on using the repository browser.