source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/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.2 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/Icache_Access/SelfTest/include/test.h"
9#include "Common/include/Max.h"
10
11#define NB_PARAMS 5
12
13void usage (int argc, char * argv[])
14{
15  err (_("<Usage> %s name_instance list_params.\n"),argv[0]);
16  err (_("list_params is :\n"));
17  err (_(" * nb_front_end                              (uint32_t         )\n"));
18  err (_(" * nb_context     [nb_front_end]             (uint32_t         )\n"));
19  err (_(" * nb_icache_port                            (uint32_t         )\n"));
20  err (_(" * size_address                              (uint32_t         )\n"));
21  err (_(" * nb_instruction [nb_front_end][nb_context] (uint32_t         )\n"));
22  err (_(" * size_packet_id [nb_front_end][nb_context] (uint32_t         )\n"));
23  err (_(" * table_routing  [nb_front_end][nb_context] (uint32_t         )\n"));
24  err (_(" * priority                                  (Tpriority_t      )\n"));
25  err (_(" * load_balancing                            (Tload_balancing_t)\n"));
26
27  exit (1);
28}
29
30#ifndef SYSTEMC
31int main    (int argc, char * argv[])
32#else
33int sc_main (int argc, char * argv[])
34#endif
35{
36  if (argc <= static_cast<int>(2+NB_PARAMS))
37    usage (argc, argv);
38
39  uint32_t x = 1;
40
41  string name = argv[x++];
42
43  uint32_t             _nb_front_end           = fromString<uint32_t         >(argv[x++]);
44
45  if (argc <= static_cast<int>(2+NB_PARAMS+_nb_front_end))
46    usage (argc, argv);
47
48  uint32_t             _sum_nb_context         = 0;
49  uint32_t           * _nb_context             = new uint32_t [_nb_front_end];
50  for (uint32_t i=0; i<_nb_front_end; i++)
51    {
52      _nb_context [i] = fromString<uint32_t>(argv[x++]);
53      _sum_nb_context += _nb_context [i];
54    }
55
56  if (argc != static_cast<int>(2+NB_PARAMS+_nb_front_end+3*_sum_nb_context))
57    usage (argc, argv);
58     
59  uint32_t             _nb_icache_port         = fromString<uint32_t         >(argv[x++]);
60  uint32_t             _size_address           = fromString<uint32_t         >(argv[x++]);
61
62  uint32_t          ** _nb_instruction         = new uint32_t * [_nb_front_end];
63  uint32_t          ** _size_packet_id         = new uint32_t * [_nb_front_end];
64  uint32_t          ** _table_routing          = new uint32_t * [_nb_front_end];
65
66  for (uint32_t i=0; i<_nb_front_end; i++)
67    {
68      _nb_instruction [i] = new uint32_t [_nb_context[i]];
69      _size_packet_id [i] = new uint32_t [_nb_context[i]];
70      _table_routing  [i] = new uint32_t [_nb_context[i]];
71    }
72
73  for (uint32_t i=0; i<_nb_front_end; i++)
74    for (uint32_t j=0; j<_nb_context [i]; j++)
75      _nb_instruction [i][j] = fromString<uint32_t>(argv[x++]);
76
77  for (uint32_t i=0; i<_nb_front_end; i++)
78    for (uint32_t j=0; j<_nb_context [i]; j++)
79      _size_packet_id [i][j] = fromString<uint32_t>(argv[x++]);
80 
81  for (uint32_t i=0; i<_nb_front_end; i++)
82    for (uint32_t j=0; j<_nb_context [i]; j++)
83      _table_routing  [i][j] = fromString<uint32_t>(argv[x++]);
84 
85  Tpriority_t          _priority               = fromString<Tpriority_t      >(argv[x++]);
86  Tload_balancing_t    _load_balancing         = fromString<Tload_balancing_t>(argv[x++]);
87
88  uint32_t             _size_icache_thread_id  = log2(_nb_front_end) + log2(max<uint32_t>(_nb_context,_nb_front_end));;
89  uint32_t             _size_icache_packet_id  = max<uint32_t>(_size_packet_id,_nb_front_end, _nb_context);
90
91  uint32_t             _nb_thread              = 0;
92  uint32_t          ** _translate_context_to_thread = new uint32_t * [_nb_front_end];
93
94  for (uint32_t i=0; i<_nb_front_end; i++)
95    {
96      _translate_context_to_thread [i] = new uint32_t [_nb_context[i]];
97      for (uint32_t j=0; j<_nb_context[i]; ++j)
98        _translate_context_to_thread [i][j] = _nb_thread ++;
99    }
100
101  int _return = EXIT_SUCCESS;
102  try 
103    {
104      morpheo::behavioural::core::icache_access::Parameters * param = new morpheo::behavioural::core::icache_access::Parameters
105        (_nb_thread                  ,
106         _nb_front_end               ,
107         _nb_context                 ,
108         _nb_icache_port             ,
109         _size_address               ,
110         _size_icache_thread_id      ,
111         _size_icache_packet_id      ,
112         _nb_instruction             ,
113         _size_packet_id             ,
114         _table_routing              ,
115         _priority                   ,
116         _load_balancing             ,
117         _translate_context_to_thread
118         );
119     
120      msg(_("%s"),param->print(0).c_str());
121     
122      test (name,param);
123
124      delete param;
125    }
126  catch (morpheo::ErrorMorpheo & error)
127    {
128      msg (_("<%s> :\n%s"),name.c_str(), error.what ());
129      _return = EXIT_FAILURE;
130    }
131 
132  try 
133    {
134      if (_return == EXIT_SUCCESS)
135        TEST_OK("Icache_Access : no error");
136      else
137        TEST_KO("Icache_Access : a lot of error");
138    }
139  catch (morpheo::ErrorMorpheo & error)
140    {
141//       msg (_("<%s> :\n%s"),name.c_str(), error.what ());
142      _return = EXIT_FAILURE;
143    }
144
145  delete [] _nb_context;
146  for (uint32_t i=0; i<_nb_front_end; i++)
147    {
148      delete [] _nb_instruction [i];
149      delete [] _size_packet_id [i];
150      delete [] _table_routing  [i];
151      delete [] _translate_context_to_thread [i];
152    }
153  delete [] _nb_instruction;
154  delete [] _size_packet_id;
155  delete [] _table_routing ;
156  delete [] _translate_context_to_thread;
157
158  return (_return);
159}
Note: See TracBrowser for help on using the repository browser.