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

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 5.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/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  catch (morpheo::ErrorMorpheo & error)
112    {
113      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
114      _return = EXIT_FAILURE;
115    }
116 
117  try 
118    {
119      if (_return == EXIT_SUCCESS)
120        TEST_OK("OOO_Engine_Glue : no error");
121      else
122        TEST_KO("OOO_Engine_Glue : a lot of error");
123    }
124  catch (morpheo::ErrorMorpheo & error)
125    {
126//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
127      _return = EXIT_FAILURE;
128    }
129
130  delete [] _translate_front_end_id_from_rename_unit;
131  delete [] _link_rename_unit_with_front_end;
132  delete [] _nb_inst_retire                 ;
133  delete [] _nb_inst_insert                 ;
134  delete [] _nb_inst_decod                  ;
135  delete [] _nb_context                     ;
136
137
138  return (_return);
139}
Note: See TracBrowser for help on using the repository browser.