source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/main.cpp @ 77

Last change on this file since 77 was 77, checked in by rosiere, 16 years ago
  • Add two component :
    • network between read unit and execute unit
    • network between execute unit and write unit
  • remove parameters "nb_operation" and "nb_type"
  • in write_queue add the special case : load_speculative
File size: 5.8 KB
Line 
1/*
2 * $Id$
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_execute_unit                                      (uint32_t)\n"));
18  err (_("  * nb_context                                           (uint32_t)\n"));
19  err (_("  * nb_front_end                                         (uint32_t)\n"));
20  err (_("  * nb_ooo_engine                                        (uint32_t)\n"));
21  err (_("  * nb_packet                                            (uint32_t)\n"));
22  err (_("  * size_general_data                                    (uint32_t)\n"));
23  err (_("  * size_special_data                                    (uint32_t)\n"));
24  err (_("  * nb_general_register                                  (uint32_t)\n"));
25  err (_("  * nb_special_register                                  (uint32_t)\n"));
26  err (_("  * size_store_queue                                     (uint32_t)\n"));
27  err (_("  * size_load_queue                                      (uint32_t)\n"));
28  err (_("  * priority                                             (uint32_t)\n"));
29  err (_("  * table_routing        [nb_read_unit][nb_execute_unit] (bool    )\n"));
30  err (_("  * table_execute_type   [nb_execute_unit][nb_type*]     (bool    )\n"));
31  err (_("    * [TYPE_ALU    ]\n"));
32  err (_("    * [TYPE_SHIFT  ]\n"));
33  err (_("    * [TYPE_MOVE   ]\n"));
34  err (_("    * [TYPE_TEST   ]\n"));
35  err (_("    * [TYPE_MUL_DIV]\n"));
36  err (_("    * [TYPE_EXTEND ]\n"));
37  err (_("    * [TYPE_FIND   ]\n"));
38  err (_("    * [TYPE_SPECIAL]\n"));
39  err (_("    * [TYPE_CUSTOM ]\n"));
40  err (_("    * [TYPE_BRANCH ]\n"));
41  err (_("    * [TYPE_MEMORY ]\n"));
42  err (_("  * table_execute_thread [nb_execute_unit][nb_thread]    (bool    )\n"));
43
44  exit (1);
45}
46
47#ifndef SYSTEMC
48int main    (int argc, char * argv[])
49#else
50int sc_main (int argc, char * argv[])
51#endif
52{
53  if (argc < 2+NB_PARAMS)
54    usage (argc, argv);
55
56  uint32_t       x = 1;
57
58  string      name                  =      argv[x++];
59  uint32_t    _nb_read_unit         = atoi(argv[x++]);
60  uint32_t    _nb_execute_unit      = atoi(argv[x++]);
61  uint32_t    _nb_context           = atoi(argv[x++]);
62  uint32_t    _nb_front_end         = atoi(argv[x++]);
63  uint32_t    _nb_ooo_engine        = atoi(argv[x++]);
64  uint32_t    _nb_packet            = atoi(argv[x++]);
65  uint32_t    _size_general_data    = atoi(argv[x++]);
66  uint32_t    _size_special_data    = atoi(argv[x++]);
67  uint32_t    _nb_general_register  = atoi(argv[x++]);
68  uint32_t    _nb_special_register  = atoi(argv[x++]);
69  uint32_t    _size_store_queue     = atoi(argv[x++]);
70  uint32_t    _size_load_queue      = atoi(argv[x++]);
71  Tpriority_t _priority             = fromString<Tpriority_t>(argv[x++]);
72
73  uint32_t    _nb_thread            = get_nb_thread(_nb_context, _nb_front_end, _nb_ooo_engine);
74
75  if (static_cast<uint32_t>(argc) != 2+NB_PARAMS+(_nb_read_unit*_nb_execute_unit)+(_nb_execute_unit*11)+(_nb_execute_unit*_nb_thread))
76    usage (argc, argv);
77 
78  bool ** _table_routing        ;
79  bool ** _table_execute_type   ;
80  bool ** _table_execute_thread ;
81 
82  _table_routing = new bool * [_nb_read_unit];
83  for (uint32_t i=0; i<_nb_read_unit; i++)
84    {
85      _table_routing [i] = new bool [_nb_execute_unit];
86      for (uint32_t j=0; j<_nb_execute_unit; j++)
87        _table_routing [i][j] = atoi(argv[x++]);
88    }
89
90  _table_execute_type = new bool * [_nb_execute_unit];
91  for (uint32_t i=0; i<_nb_execute_unit; i++)
92    {
93      _table_execute_type [i] = new bool [MAX_TYPE];
94
95      _table_execute_type [i][TYPE_ALU    ] = atoi(argv[x++]);
96      _table_execute_type [i][TYPE_SHIFT  ] = atoi(argv[x++]);
97      _table_execute_type [i][TYPE_MOVE   ] = atoi(argv[x++]);
98      _table_execute_type [i][TYPE_TEST   ] = atoi(argv[x++]);
99      _table_execute_type [i][TYPE_MUL_DIV] = atoi(argv[x++]);
100      _table_execute_type [i][TYPE_EXTEND ] = atoi(argv[x++]);
101      _table_execute_type [i][TYPE_FIND   ] = atoi(argv[x++]);
102      _table_execute_type [i][TYPE_SPECIAL] = atoi(argv[x++]);
103      _table_execute_type [i][TYPE_CUSTOM ] = atoi(argv[x++]);
104      _table_execute_type [i][TYPE_BRANCH ] = atoi(argv[x++]);
105      _table_execute_type [i][TYPE_MEMORY ] = atoi(argv[x++]);
106    }
107
108  _table_execute_thread = new bool * [_nb_execute_unit];
109  for (uint32_t i=0; i<_nb_execute_unit; i++)
110    {
111      _table_execute_thread [i] = new bool [_nb_thread];
112
113      for (uint32_t j=0; j<_nb_thread; j++)
114        _table_execute_thread [i][j] = atoi(argv[x++]);
115    }
116
117  try 
118    {
119      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
120        (_nb_read_unit         ,
121         _nb_execute_unit      ,
122         _nb_context           ,
123         _nb_front_end         ,
124         _nb_ooo_engine        ,
125         _nb_packet            ,
126         _size_general_data    ,
127         _size_special_data    ,
128         _nb_general_register  ,
129         _nb_special_register  ,
130         _size_store_queue     ,
131         _size_load_queue      ,
132         _priority             ,
133         _table_routing        ,
134         _table_execute_type   ,
135         _table_execute_thread
136         );
137     
138      msg(_("%s"),param->print(1).c_str());
139     
140      test (name,param);
141    }
142  catch (morpheo::ErrorMorpheo & error)
143    {
144      msg (_("<%s> : %s.\n"),name.c_str(), error.what ());
145      exit (EXIT_FAILURE);
146    }
147  catch (...)
148    {
149      err (_("<%s> : This test must generate a error.\n"),name.c_str());
150      exit (EXIT_FAILURE);
151    }
152
153  delete [] _table_routing        ;
154  delete [] _table_execute_type   ;
155  delete [] _table_execute_thread ;
156
157  return (EXIT_SUCCESS);
158}
159
Note: See TracBrowser for help on using the repository browser.