source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/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: 5.6 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/OOO_Engine_Glue/SelfTest/include/test.h"
9
10#define NB_PARAMS 9
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_rename_unit                                   (uint32_t)\n"));
19  err (_(" * nb_inst_decod                   [nb_front_end]   (uint32_t)\n"));
20  err (_(" * nb_inst_insert                  [nb_rename_unit] (uint32_t)\n"));
21  err (_(" * nb_inst_retire                  [nb_rename_unit] (uint32_t)\n"));
22  err (_(" * size_general_data                                (uint32_t)\n"));
23  err (_(" * size_special_data                                (uint32_t)\n"));
24  err (_(" * link_rename_unit_with_front_end [nb_front_end]   (uint32_t)\n"));
25  err (_(" * size_packet_id                                   (uint32_t)\n"));
26  err (_(" * size_general_register                            (uint32_t)\n"));
27  err (_(" * size_special_register                            (uint32_t)\n"));
28  err (_(" * size_store_queue_ptr                             (uint32_t)\n"));
29  err (_(" * size_load_queue_ptr                              (uint32_t)\n"));
30
31  exit (1);
32}
33
34#ifndef SYSTEMC
35int main    (int argc, char * argv[])
36#else
37int sc_main (int argc, char * argv[])
38#endif
39{
40  if (argc <= static_cast<int>(2+NB_PARAMS))
41    usage (argc, argv);
42
43  uint32_t x = 1;
44
45  string name = argv[x++];
46
47  uint32_t                _nb_front_end                    = fromString<uint32_t>(argv[x++]);
48
49  if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end))
50    usage (argc, argv);
51
52  uint32_t              * _nb_context                      = new uint32_t [_nb_front_end];
53  for (uint32_t i=0; i<_nb_front_end; ++i)
54    _nb_context [i] = fromString<uint32_t>(argv[x++]);
55  uint32_t                _nb_rename_unit                  = fromString<uint32_t>(argv[x++]);
56
57  if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_nb_rename_unit))
58    usage (argc, argv);
59
60  uint32_t              * _nb_inst_decod                   = new uint32_t [_nb_front_end];
61  for (uint32_t i=0; i<_nb_front_end; ++i)
62    _nb_inst_decod [i] = fromString<uint32_t>(argv[x++]);
63  uint32_t              * _nb_inst_insert                  = new uint32_t [_nb_rename_unit];
64  for (uint32_t i=0; i<_nb_rename_unit; ++i)
65    _nb_inst_insert [i] = fromString<uint32_t>(argv[x++]);
66  uint32_t              * _nb_inst_retire                  = new uint32_t [_nb_rename_unit];
67  for (uint32_t i=0; i<_nb_rename_unit; ++i)
68    _nb_inst_retire [i] = fromString<uint32_t>(argv[x++]);
69  uint32_t                _size_general_data               = fromString<uint32_t>(argv[x++]);
70  uint32_t                _size_special_data               = fromString<uint32_t>(argv[x++]);
71  uint32_t              * _link_rename_unit_with_front_end = new uint32_t [_nb_front_end];
72  std::vector<uint32_t> * _translate_front_end_id_from_rename_unit = new std::vector<uint32_t> [_nb_rename_unit];
73  for (uint32_t i=0; i<_nb_front_end; ++i)
74    {
75      _link_rename_unit_with_front_end [i] = fromString<uint32_t>(argv[x++]);
76      _translate_front_end_id_from_rename_unit[_link_rename_unit_with_front_end[i]].push_back(i);
77    }
78
79  uint32_t                _size_packet_id                  = fromString<uint32_t>(argv[x++]);
80  uint32_t                _size_general_register           = fromString<uint32_t>(argv[x++]);
81  uint32_t                _size_special_register           = fromString<uint32_t>(argv[x++]);
82  uint32_t                _size_store_queue_ptr            = fromString<uint32_t>(argv[x++]);
83  uint32_t                _size_load_queue_ptr             = fromString<uint32_t>(argv[x++]);
84
85  int _return = EXIT_SUCCESS;
86  try 
87    {
88      morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue::Parameters * param = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::ooo_engine_glue::Parameters
89        (_nb_front_end                     ,
90         _nb_context                       ,
91         _nb_rename_unit                   ,
92         _nb_inst_decod                    ,
93         _nb_inst_insert                   ,
94         _nb_inst_retire                   ,
95         _size_general_data                ,
96         _size_special_data                ,
97         _link_rename_unit_with_front_end  ,
98         _translate_front_end_id_from_rename_unit  ,
99         _size_packet_id                   ,
100         _size_general_register            ,
101         _size_special_register            ,
102         _size_store_queue_ptr             ,
103         _size_load_queue_ptr              ,
104         true //is_toplevel
105         );
106     
107      msg(_("%s"),param->print(0).c_str());
108     
109      test (name,param);
110
111      delete param;
112    }
113  catch (morpheo::ErrorMorpheo & error)
114    {
115      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
116      _return = EXIT_FAILURE;
117    }
118 
119  try 
120    {
121      if (_return == EXIT_SUCCESS)
122        TEST_OK("OOO_Engine_Glue : no error");
123      else
124        TEST_KO("OOO_Engine_Glue : a lot of error");
125    }
126  catch (morpheo::ErrorMorpheo & error)
127    {
128//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
129      _return = EXIT_FAILURE;
130    }
131
132  delete [] _translate_front_end_id_from_rename_unit;
133  delete [] _link_rename_unit_with_front_end;
134  delete [] _nb_inst_retire                 ;
135  delete [] _nb_inst_insert                 ;
136  delete [] _nb_inst_decod                  ;
137  delete [] _nb_context                     ;
138
139
140  return (_return);
141}
Note: See TracBrowser for help on using the repository browser.