source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/SelfTest/src/test.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: 12.6 KB
Line 
1/*
2 * $Id: test.cpp 88 2008-12-10 18:31:39Z 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  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_VAL               ," in_GPR_WRITE_WRITE_UNIT_VAL             ",Tcontrol_t        ,_param->_nb_gpr_write);
51  ALLOC1_SC_SIGNAL(out_GPR_WRITE_WRITE_UNIT_ACK               ,"out_GPR_WRITE_WRITE_UNIT_ACK             ",Tcontrol_t        ,_param->_nb_gpr_write);
52  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);
53  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_NUM_REG           ," in_GPR_WRITE_WRITE_UNIT_NUM_REG         ",Tgeneral_address_t,_param->_nb_gpr_write);
54  ALLOC1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_DATA              ," in_GPR_WRITE_WRITE_UNIT_DATA            ",Tgeneral_data_t   ,_param->_nb_gpr_write);
55  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_VAL            ,"out_GPR_WRITE_REGISTER_FILE_VAL          ",Tcontrol_t        ,_param->_nb_gpr_write);
56  ALLOC1_SC_SIGNAL( in_GPR_WRITE_REGISTER_FILE_ACK            ," in_GPR_WRITE_REGISTER_FILE_ACK          ",Tcontrol_t        ,_param->_nb_gpr_write);
57  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);
58  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,"out_GPR_WRITE_REGISTER_FILE_NUM_REG      ",Tgeneral_address_t,_param->_nb_gpr_write);
59  ALLOC1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_DATA           ,"out_GPR_WRITE_REGISTER_FILE_DATA         ",Tgeneral_data_t   ,_param->_nb_gpr_write);
60  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_VAL                ,"out_GPR_WRITE_READ_UNIT_VAL              ",Tcontrol_t        ,_param->_nb_gpr_write);
61  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);
62  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_NUM_REG            ,"out_GPR_WRITE_READ_UNIT_NUM_REG          ",Tgeneral_address_t,_param->_nb_gpr_write);
63  ALLOC1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_DATA               ,"out_GPR_WRITE_READ_UNIT_DATA             ",Tgeneral_data_t   ,_param->_nb_gpr_write);
64  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_VAL               ," in_SPR_WRITE_WRITE_UNIT_VAL             ",Tcontrol_t        ,_param->_nb_spr_write);
65  ALLOC1_SC_SIGNAL(out_SPR_WRITE_WRITE_UNIT_ACK               ,"out_SPR_WRITE_WRITE_UNIT_ACK             ",Tcontrol_t        ,_param->_nb_spr_write);
66  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);
67  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_NUM_REG           ," in_SPR_WRITE_WRITE_UNIT_NUM_REG         ",Tspecial_address_t,_param->_nb_spr_write);
68  ALLOC1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_DATA              ," in_SPR_WRITE_WRITE_UNIT_DATA            ",Tspecial_data_t   ,_param->_nb_spr_write);
69  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_VAL            ,"out_SPR_WRITE_REGISTER_FILE_VAL          ",Tcontrol_t        ,_param->_nb_spr_write);
70  ALLOC1_SC_SIGNAL( in_SPR_WRITE_REGISTER_FILE_ACK            ," in_SPR_WRITE_REGISTER_FILE_ACK          ",Tcontrol_t        ,_param->_nb_spr_write);
71  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);
72  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,"out_SPR_WRITE_REGISTER_FILE_NUM_REG      ",Tspecial_address_t,_param->_nb_spr_write);
73  ALLOC1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_DATA           ,"out_SPR_WRITE_REGISTER_FILE_DATA         ",Tspecial_data_t   ,_param->_nb_spr_write);
74  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_VAL                ,"out_SPR_WRITE_READ_UNIT_VAL              ",Tcontrol_t        ,_param->_nb_spr_write);
75  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);
76  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_NUM_REG            ,"out_SPR_WRITE_READ_UNIT_NUM_REG          ",Tspecial_address_t,_param->_nb_spr_write);
77  ALLOC1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_DATA               ,"out_SPR_WRITE_READ_UNIT_DATA             ",Tspecial_data_t   ,_param->_nb_spr_write);
78
79  /********************************************************
80   * Instanciation
81   ********************************************************/
82 
83  msg(_("<%s> : Instanciation of _Execute_loop_Glue.\n"),name.c_str());
84
85  (*(_Execute_loop_Glue->in_CLOCK))        (*(in_CLOCK));
86  (*(_Execute_loop_Glue->in_NRESET))       (*(in_NRESET));
87
88  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_gpr_write);
89  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_gpr_write);
90  if (_param->_have_port_ooo_engine_id)
91  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_gpr_write);
92  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_gpr_write);
93  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_gpr_write);
94
95  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_gpr_write);
96  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_GPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_gpr_write);
97  if (_param->_have_port_ooo_engine_id)
98  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_gpr_write);
99  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_gpr_write);
100  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_gpr_write);
101
102  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_VAL                ,_param->_nb_gpr_write);
103  if (_param->_have_port_ooo_engine_id)
104  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_gpr_write);
105  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_gpr_write);
106  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_GPR_WRITE_READ_UNIT_DATA               ,_param->_nb_gpr_write);
107
108  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_spr_write);
109  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_spr_write);
110  if (_param->_have_port_ooo_engine_id)
111  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_spr_write);
112  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_spr_write);
113  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_spr_write);
114
115  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_spr_write);
116  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue, in_SPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_spr_write);
117  if (_param->_have_port_ooo_engine_id)
118  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_spr_write);
119  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_spr_write);
120  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_spr_write);
121
122  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_VAL                ,_param->_nb_spr_write);
123  if (_param->_have_port_ooo_engine_id)
124  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_spr_write);
125  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_spr_write);
126  INSTANCE1_SC_SIGNAL(_Execute_loop_Glue,out_SPR_WRITE_READ_UNIT_DATA               ,_param->_nb_spr_write);
127
128
129  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
130   
131  Time * _time = new Time();
132
133  /********************************************************
134   * Simulation - Begin
135   ********************************************************/
136
137  // Initialisation
138
139  const uint32_t seed = 0;
140//const uint32_t seed = static_cast<uint32_t>(time(NULL));
141
142  srand(seed);
143
144  SC_START(0);
145  LABEL("Initialisation");
146
147  LABEL("Reset");
148  in_NRESET->write(0);
149  SC_START(5);
150  in_NRESET->write(1); 
151
152  LABEL("Loop of Test");
153
154  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
155    {
156      LABEL("Iteration %d",iteration);
157
158      SC_START(1);
159    }
160
161  /********************************************************
162   * Simulation - End
163   ********************************************************/
164
165  TEST_OK ("End of Simulation");
166  delete _time;
167
168  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
169
170  delete in_CLOCK;
171  delete in_NRESET;
172
173  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_gpr_write);
174  DELETE1_SC_SIGNAL(out_GPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_gpr_write);
175  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_gpr_write);
176  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_gpr_write);
177  DELETE1_SC_SIGNAL( in_GPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_gpr_write);
178
179  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_gpr_write);
180  DELETE1_SC_SIGNAL( in_GPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_gpr_write);
181  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_gpr_write);
182  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_gpr_write);
183  DELETE1_SC_SIGNAL(out_GPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_gpr_write);
184
185  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_VAL                ,_param->_nb_gpr_write);
186  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_gpr_write);
187  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_gpr_write);
188  DELETE1_SC_SIGNAL(out_GPR_WRITE_READ_UNIT_DATA               ,_param->_nb_gpr_write);
189
190  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_VAL               ,_param->_nb_spr_write);
191  DELETE1_SC_SIGNAL(out_SPR_WRITE_WRITE_UNIT_ACK               ,_param->_nb_spr_write);
192  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_OOO_ENGINE_ID     ,_param->_nb_spr_write);
193  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_NUM_REG           ,_param->_nb_spr_write);
194  DELETE1_SC_SIGNAL( in_SPR_WRITE_WRITE_UNIT_DATA              ,_param->_nb_spr_write);
195
196  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_VAL            ,_param->_nb_spr_write);
197  DELETE1_SC_SIGNAL( in_SPR_WRITE_REGISTER_FILE_ACK            ,_param->_nb_spr_write);
198  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_OOO_ENGINE_ID  ,_param->_nb_spr_write);
199  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_NUM_REG        ,_param->_nb_spr_write);
200  DELETE1_SC_SIGNAL(out_SPR_WRITE_REGISTER_FILE_DATA           ,_param->_nb_spr_write);
201
202  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_VAL                ,_param->_nb_spr_write);
203  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_OOO_ENGINE_ID      ,_param->_nb_spr_write);
204  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_NUM_REG            ,_param->_nb_spr_write);
205  DELETE1_SC_SIGNAL(out_SPR_WRITE_READ_UNIT_DATA               ,_param->_nb_spr_write);
206    }
207#endif
208
209  delete _Execute_loop_Glue;
210#ifdef STATISTICS
211  delete _parameters_statistics;
212#endif
213}
Note: See TracBrowser for help on using the repository browser.