source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/SelfTest/src/test.cpp @ 113

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

1) Add modelsim simulation systemC
2) Modelsim cosimulation systemC / VHDL is not finish !!!! (cf execute_queue and write_unit)
3) Add multi architecture
5) Add template for comparator, multiplier and divider
6) Change Message
Warning) Various test macro have change, many selftest can't compile

  • Property svn:keywords set to Id
File size: 14.8 KB
Line 
1/*
2 * $Id: test.cpp 113 2009-04-14 18:39:12Z rosiere $
3 *
4 * [ Description ]
5 *
6 * Test
7 */
8
9#include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/SelfTest/include/test.h"
10#include "Behavioural/include/Allocation.h"
11
12void test (string name,
13           morpheo::behavioural::core::multi_execute_loop::execute_loop::execute_loop_glue::Parameters * _param)
14{
15  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
16
17#ifdef STATISTICS
18  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
19#endif
20
21  Tusage_t _usage = USE_ALL;
22
23//   _usage = usage_unset(_usage,USE_SYSTEMC              );
24//   _usage = usage_unset(_usage,USE_VHDL                 );
25//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
26//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
27//   _usage = usage_unset(_usage,USE_POSITION             );
28//   _usage = usage_unset(_usage,USE_STATISTICS           );
29//   _usage = usage_unset(_usage,USE_INFORMATION          );
30
31  Execute_loop_Glue * _Execute_loop_Glue = new Execute_loop_Glue
32    (name.c_str(),
33#ifdef STATISTICS
34     _parameters_statistics,
35#endif
36     _param,
37     _usage);
38 
39#ifdef SYSTEMC
40  if (usage_is_set(_usage,USE_SYSTEMC))
41    {
42  /*********************************************************************
43   * Déclarations des signaux
44   *********************************************************************/
45  string rename;
46
47  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
48  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
49 
50  sc_signal<Tcontrol_t        > **  in_GPR_WRITE_WRITE_UNIT_VAL               ;
51  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_WRITE_UNIT_ACK               ;
52  sc_signal<Tcontext_t        > **  in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ;
53  sc_signal<Tgeneral_address_t> **  in_GPR_WRITE_WRITE_UNIT_NUM_REG           ;
54  sc_signal<Tgeneral_data_t   > **  in_GPR_WRITE_WRITE_UNIT_DATA              ;
55  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_REGISTER_FILE_VAL            ;
56  sc_signal<Tcontrol_t        > **  in_GPR_WRITE_REGISTER_FILE_ACK            ;
57  sc_signal<Tcontext_t        > ** out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ;
58  sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_REGISTER_FILE_NUM_REG        ;
59  sc_signal<Tgeneral_data_t   > ** out_GPR_WRITE_REGISTER_FILE_DATA           ;
60  sc_signal<Tcontrol_t        > ** out_GPR_WRITE_READ_UNIT_VAL                ;
61  sc_signal<Tcontext_t        > ** out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ;
62  sc_signal<Tgeneral_address_t> ** out_GPR_WRITE_READ_UNIT_NUM_REG            ;
63  sc_signal<Tgeneral_data_t   > ** out_GPR_WRITE_READ_UNIT_DATA               ;
64  sc_signal<Tcontrol_t        > **  in_SPR_WRITE_WRITE_UNIT_VAL               ;
65  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_WRITE_UNIT_ACK               ;
66  sc_signal<Tcontext_t        > **  in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ;
67  sc_signal<Tspecial_address_t> **  in_SPR_WRITE_WRITE_UNIT_NUM_REG           ;
68  sc_signal<Tspecial_data_t   > **  in_SPR_WRITE_WRITE_UNIT_DATA              ;
69  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_REGISTER_FILE_VAL            ;
70  sc_signal<Tcontrol_t        > **  in_SPR_WRITE_REGISTER_FILE_ACK            ;
71  sc_signal<Tcontext_t        > ** out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ;
72  sc_signal<Tspecial_address_t> ** out_SPR_WRITE_REGISTER_FILE_NUM_REG        ;
73  sc_signal<Tspecial_data_t   > ** out_SPR_WRITE_REGISTER_FILE_DATA           ;
74  sc_signal<Tcontrol_t        > ** out_SPR_WRITE_READ_UNIT_VAL                ;
75  sc_signal<Tcontext_t        > ** out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ;
76  sc_signal<Tspecial_address_t> ** out_SPR_WRITE_READ_UNIT_NUM_REG            ;
77  sc_signal<Tspecial_data_t   > ** out_SPR_WRITE_READ_UNIT_DATA               ;
78
79  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_VAL               ," in_GPR_WRITE_WRITE_UNIT_VAL             ",Tcontrol_t        ,_param->_nb_gpr_write);
80  ALLOC1_SC_SIGNAL(out_GPR_WRITE_WRITE_UNIT_ACK               ,"out_GPR_WRITE_WRITE_UNIT_ACK             ",Tcontrol_t        ,_param->_nb_gpr_write);
81  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ," in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID   ",Tcontext_t        ,_param->_nb_gpr_write);
82  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_NUM_REG           ," in_GPR_WRITE_WRITE_UNIT_NUM_REG         ",Tgeneral_address_t,_param->_nb_gpr_write);
83  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_DATA              ," in_GPR_WRITE_WRITE_UNIT_DATA            ",Tgeneral_data_t   ,_param->_nb_gpr_write);
84  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_VAL            ,"out_GPR_WRITE_REGISTER_FILE_VAL          ",Tcontrol_t        ,_param->_nb_gpr_write);
85  ALLOC1_SC_SIGNAL( in_GPR_WRITE_REGISTER_FILE_ACK            ," in_GPR_WRITE_REGISTER_FILE_ACK          ",Tcontrol_t        ,_param->_nb_gpr_write);
86  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,"out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID",Tcontext_t        ,_param->_nb_gpr_write);
87  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,"out_GPR_WRITE_REGISTER_FILE_NUM_REG      ",Tgeneral_address_t,_param->_nb_gpr_write);
88  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_DATA           ,"out_GPR_WRITE_REGISTER_FILE_DATA         ",Tgeneral_data_t   ,_param->_nb_gpr_write);
89  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_VAL                ,"out_GPR_WRITE_READ_UNIT_VAL              ",Tcontrol_t        ,_param->_nb_gpr_write);
90  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,"out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID    ",Tcontext_t        ,_param->_nb_gpr_write);
91  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_NUM_REG            ,"out_GPR_WRITE_READ_UNIT_NUM_REG          ",Tgeneral_address_t,_param->_nb_gpr_write);
92  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_DATA               ,"out_GPR_WRITE_READ_UNIT_DATA             ",Tgeneral_data_t   ,_param->_nb_gpr_write);
93  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_VAL               ," in_SPR_WRITE_WRITE_UNIT_VAL             ",Tcontrol_t        ,_param->_nb_spr_write);
94  ALLOC1_SC_SIGNAL(out_SPR_WRITE_WRITE_UNIT_ACK               ,"out_SPR_WRITE_WRITE_UNIT_ACK             ",Tcontrol_t        ,_param->_nb_spr_write);
95  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ," in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID   ",Tcontext_t        ,_param->_nb_spr_write);
96  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_NUM_REG           ," in_SPR_WRITE_WRITE_UNIT_NUM_REG         ",Tspecial_address_t,_param->_nb_spr_write);
97  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_DATA              ," in_SPR_WRITE_WRITE_UNIT_DATA            ",Tspecial_data_t   ,_param->_nb_spr_write);
98  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_VAL            ,"out_SPR_WRITE_REGISTER_FILE_VAL          ",Tcontrol_t        ,_param->_nb_spr_write);
99  ALLOC1_SC_SIGNAL( in_SPR_WRITE_REGISTER_FILE_ACK            ," in_SPR_WRITE_REGISTER_FILE_ACK          ",Tcontrol_t        ,_param->_nb_spr_write);
100  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,"out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID",Tcontext_t        ,_param->_nb_spr_write);
101  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,"out_SPR_WRITE_REGISTER_FILE_NUM_REG      ",Tspecial_address_t,_param->_nb_spr_write);
102  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_DATA           ,"out_SPR_WRITE_REGISTER_FILE_DATA         ",Tspecial_data_t   ,_param->_nb_spr_write);
103  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_VAL                ,"out_SPR_WRITE_READ_UNIT_VAL              ",Tcontrol_t        ,_param->_nb_spr_write);
104  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,"out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID    ",Tcontext_t        ,_param->_nb_spr_write);
105  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_NUM_REG            ,"out_SPR_WRITE_READ_UNIT_NUM_REG          ",Tspecial_address_t,_param->_nb_spr_write);
106  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_DATA               ,"out_SPR_WRITE_READ_UNIT_DATA             ",Tspecial_data_t   ,_param->_nb_spr_write);
107
108  /********************************************************
109   * Instanciation
110   ********************************************************/
111 
112  msg(_("<%s> : Instanciation of _Execute_loop_Glue.\n"),name.c_str());
113
114  (*(_Execute_loop_Glue->in_CLOCK))        (*(in_CLOCK));
115  (*(_Execute_loop_Glue->in_NRESET))       (*(in_NRESET));
116
117  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_gpr_write);
118  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_gpr_write);
119  if (_param->_have_port_ooo_engine_id)
120  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_gpr_write);
121  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_gpr_write);
122  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_gpr_write);
123
124  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_gpr_write);
125  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_gpr_write);
126  if (_param->_have_port_ooo_engine_id)
127  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_gpr_write);
128  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_gpr_write);
129  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_gpr_write);
130
131  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_VAL                ,_param->_nb_gpr_write);
132  if (_param->_have_port_ooo_engine_id)
133  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_gpr_write);
134  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_gpr_write);
135  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_DATA               ,_param->_nb_gpr_write);
136
137  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_spr_write);
138  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_spr_write);
139  if (_param->_have_port_ooo_engine_id)
140  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_spr_write);
141  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_spr_write);
142  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_spr_write);
143
144  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_spr_write);
145  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_spr_write);
146  if (_param->_have_port_ooo_engine_id)
147  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_spr_write);
148  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_spr_write);
149  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_spr_write);
150
151  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_VAL                ,_param->_nb_spr_write);
152  if (_param->_have_port_ooo_engine_id)
153  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_spr_write);
154  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_spr_write);
155  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_DATA               ,_param->_nb_spr_write);
156
157
158  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
159   
160  Time * _time = new Time();
161
162  /********************************************************
163   * Simulation - Begin
164   ********************************************************/
165
166  // Initialisation
167
168  const uint32_t seed = 0;
169//const uint32_t seed = static_cast<uint32_t>(time(NULL));
170
171  srand(seed);
172
173  SC_START(0);
174  LABEL("Initialisation");
175
176  LABEL("Reset");
177  in_NRESET->write(0);
178  SC_START(5);
179  in_NRESET->write(1); 
180
181  LABEL("Loop of Test");
182
183  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
184    {
185      LABEL("Iteration %d",iteration);
186
187      SC_START(1);
188    }
189
190  /********************************************************
191   * Simulation - End
192   ********************************************************/
193
194  TEST_OK ("End of Simulation");
195  delete _time;
196
197  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
198
199  delete in_CLOCK;
200  delete in_NRESET;
201
202  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_gpr_write);
203  DELETE1_SC_SIGNAL(out_GPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_gpr_write);
204  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_gpr_write);
205  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_gpr_write);
206  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_gpr_write);
207
208  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_gpr_write);
209  DELETE1_SC_SIGNAL( in_GPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_gpr_write);
210  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_gpr_write);
211  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_gpr_write);
212  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_gpr_write);
213
214  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_VAL                ,_param->_nb_gpr_write);
215  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_gpr_write);
216  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_gpr_write);
217  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_DATA               ,_param->_nb_gpr_write);
218
219  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_spr_write);
220  DELETE1_SC_SIGNAL(out_SPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_spr_write);
221  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_spr_write);
222  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_spr_write);
223  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_spr_write);
224
225  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_spr_write);
226  DELETE1_SC_SIGNAL( in_SPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_spr_write);
227  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_spr_write);
228  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_spr_write);
229  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_spr_write);
230
231  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_VAL                ,_param->_nb_spr_write);
232  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_spr_write);
233  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_spr_write);
234  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_DATA               ,_param->_nb_spr_write);
235    }
236#endif
237
238  delete _Execute_loop_Glue;
239#ifdef STATISTICS
240  delete _parameters_statistics;
241#endif
242}
Note: See TracBrowser for help on using the repository browser.