source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/src/test.cpp @ 111

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

1) Decod_queue : multi implementation (one_fifo, multi_fifo)
2) Issue_queue : multi implementation (in_order, out_of_order)
3) Direction : Add Meta predictor
4) Context_State : re add Branch_complete, More priority to Load miss (is not speculative)
5) Return_Address_Stack : update reg_PREDICT pointer on decod miss prediction
6) UPT : Fix bug in multi event
7) Prediction_glue : in read_stack case, insert in UPT pc_next
8) Rename select : when rob have an event (need flush), read_r{a,b,c} and write_r{d,e} is set at 0

  • Property svn:keywords set to Id
File size: 20.5 KB
Line 
1/*
2 * $Id: test.cpp 111 2009-02-27 18:37:40Z rosiere $
3 *
4 * [ Description ]
5 *
6 * Test
7 */
8
9#define NB_ITERATION  512
10#define CYCLE_MAX     (128*NB_ITERATION)
11
12#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/SelfTest/include/test.h"
13#include "Common/include/Test.h"
14#include "Behavioural/include/Allocation.h"
15
16void test (string name,
17           morpheo::behavioural::core::multi_front_end::front_end::decod_unit::decod_queue::Parameters * _param)
18{
19  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
20
21#ifdef STATISTICS
22  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
23#endif
24
25  Tusage_t _usage = USE_ALL;
26
27//   _usage = usage_unset(_usage,USE_SYSTEMC              );
28//   _usage = usage_unset(_usage,USE_VHDL                 );
29//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
30//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
31//   _usage = usage_unset(_usage,USE_POSITION             );
32//   _usage = usage_unset(_usage,USE_STATISTICS           );
33//   _usage = usage_unset(_usage,USE_INFORMATION          );
34
35  Decod_queue * _Decod_queue = new Decod_queue
36    (name.c_str(),
37#ifdef STATISTICS
38     _parameters_statistics,
39#endif
40     _param,
41     _usage);
42 
43#ifdef SYSTEMC
44  if (usage_is_set(_usage,USE_SYSTEMC))
45    {
46  /*********************************************************************
47   * Déclarations des signaux
48   *********************************************************************/
49  string rename;
50
51  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
52  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
53
54  ALLOC1_SC_SIGNAL( in_DECOD_IN_VAL            ," in_DECOD_IN_VAL           ",Tcontrol_t         ,_param->_nb_inst_decod);
55  ALLOC1_SC_SIGNAL(out_DECOD_IN_ACK            ,"out_DECOD_IN_ACK           ",Tcontrol_t         ,_param->_nb_inst_decod);
56  ALLOC1_SC_SIGNAL( in_DECOD_IN_CONTEXT_ID     ," in_DECOD_IN_CONTEXT_ID    ",Tcontext_t         ,_param->_nb_inst_decod);
57  ALLOC1_SC_SIGNAL( in_DECOD_IN_DEPTH          ," in_DECOD_IN_DEPTH         ",Tdepth_t           ,_param->_nb_inst_decod);
58  ALLOC1_SC_SIGNAL( in_DECOD_IN_TYPE           ," in_DECOD_IN_TYPE          ",Ttype_t            ,_param->_nb_inst_decod);
59  ALLOC1_SC_SIGNAL( in_DECOD_IN_OPERATION      ," in_DECOD_IN_OPERATION     ",Toperation_t       ,_param->_nb_inst_decod);
60  ALLOC1_SC_SIGNAL( in_DECOD_IN_NO_EXECUTE     ," in_DECOD_IN_NO_EXECUTE    ",Tcontrol_t         ,_param->_nb_inst_decod);
61  ALLOC1_SC_SIGNAL( in_DECOD_IN_IS_DELAY_SLOT  ," in_DECOD_IN_IS_DELAY_SLOT ",Tcontrol_t         ,_param->_nb_inst_decod);
62#ifdef DEBUG
63  ALLOC1_SC_SIGNAL( in_DECOD_IN_ADDRESS        ," in_DECOD_IN_ADDRESS       ",Tgeneral_data_t    ,_param->_nb_inst_decod);
64#endif
65  ALLOC1_SC_SIGNAL( in_DECOD_IN_ADDRESS_NEXT   ," in_DECOD_IN_ADDRESS_NEXT  ",Tgeneral_data_t    ,_param->_nb_inst_decod);
66  ALLOC1_SC_SIGNAL( in_DECOD_IN_HAS_IMMEDIAT   ," in_DECOD_IN_HAS_IMMEDIAT  ",Tcontrol_t         ,_param->_nb_inst_decod);
67  ALLOC1_SC_SIGNAL( in_DECOD_IN_IMMEDIAT       ," in_DECOD_IN_IMMEDIAT      ",Tgeneral_data_t    ,_param->_nb_inst_decod);
68  ALLOC1_SC_SIGNAL( in_DECOD_IN_READ_RA        ," in_DECOD_IN_READ_RA       ",Tcontrol_t         ,_param->_nb_inst_decod);
69  ALLOC1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RA     ," in_DECOD_IN_NUM_REG_RA    ",Tgeneral_address_t ,_param->_nb_inst_decod);
70  ALLOC1_SC_SIGNAL( in_DECOD_IN_READ_RB        ," in_DECOD_IN_READ_RB       ",Tcontrol_t         ,_param->_nb_inst_decod);
71  ALLOC1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RB     ," in_DECOD_IN_NUM_REG_RB    ",Tgeneral_address_t ,_param->_nb_inst_decod);
72  ALLOC1_SC_SIGNAL( in_DECOD_IN_READ_RC        ," in_DECOD_IN_READ_RC       ",Tcontrol_t         ,_param->_nb_inst_decod);
73  ALLOC1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RC     ," in_DECOD_IN_NUM_REG_RC    ",Tspecial_address_t ,_param->_nb_inst_decod);
74  ALLOC1_SC_SIGNAL( in_DECOD_IN_WRITE_RD       ," in_DECOD_IN_WRITE_RD      ",Tcontrol_t         ,_param->_nb_inst_decod);
75  ALLOC1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RD     ," in_DECOD_IN_NUM_REG_RD    ",Tgeneral_address_t ,_param->_nb_inst_decod);
76  ALLOC1_SC_SIGNAL( in_DECOD_IN_WRITE_RE       ," in_DECOD_IN_WRITE_RE      ",Tcontrol_t         ,_param->_nb_inst_decod);
77  ALLOC1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RE     ," in_DECOD_IN_NUM_REG_RE    ",Tspecial_address_t ,_param->_nb_inst_decod);
78  ALLOC1_SC_SIGNAL( in_DECOD_IN_EXCEPTION_USE  ," in_DECOD_IN_EXCEPTION_USE ",Texception_t       ,_param->_nb_inst_decod);
79  ALLOC1_SC_SIGNAL( in_DECOD_IN_EXCEPTION      ," in_DECOD_IN_EXCEPTION     ",Texception_t       ,_param->_nb_inst_decod);
80                                                                                                 
81  ALLOC1_SC_SIGNAL(out_DECOD_OUT_VAL           ,"out_DECOD_OUT_VAL          ",Tcontrol_t         ,_param->_nb_inst_decod);
82  ALLOC1_SC_SIGNAL( in_DECOD_OUT_ACK           ," in_DECOD_OUT_ACK          ",Tcontrol_t         ,_param->_nb_inst_decod);
83  ALLOC1_SC_SIGNAL(out_DECOD_OUT_CONTEXT_ID    ,"out_DECOD_OUT_CONTEXT_ID   ",Tcontext_t         ,_param->_nb_inst_decod);
84  ALLOC1_SC_SIGNAL(out_DECOD_OUT_DEPTH         ,"out_DECOD_OUT_DEPTH        ",Tdepth_t           ,_param->_nb_inst_decod);
85  ALLOC1_SC_SIGNAL(out_DECOD_OUT_TYPE          ,"out_DECOD_OUT_TYPE         ",Ttype_t            ,_param->_nb_inst_decod);
86  ALLOC1_SC_SIGNAL(out_DECOD_OUT_OPERATION     ,"out_DECOD_OUT_OPERATION    ",Toperation_t       ,_param->_nb_inst_decod);
87  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NO_EXECUTE    ,"out_DECOD_OUT_NO_EXECUTE   ",Tcontrol_t         ,_param->_nb_inst_decod);
88  ALLOC1_SC_SIGNAL(out_DECOD_OUT_IS_DELAY_SLOT ,"out_DECOD_OUT_IS_DELAY_SLOT",Tcontrol_t         ,_param->_nb_inst_decod);
89#ifdef DEBUG
90  ALLOC1_SC_SIGNAL(out_DECOD_OUT_ADDRESS       ,"out_DECOD_OUT_ADDRESS      ",Tgeneral_data_t    ,_param->_nb_inst_decod);
91#endif
92  ALLOC1_SC_SIGNAL(out_DECOD_OUT_ADDRESS_NEXT  ,"out_DECOD_OUT_ADDRESS_NEXT ",Tgeneral_data_t    ,_param->_nb_inst_decod);
93  ALLOC1_SC_SIGNAL(out_DECOD_OUT_HAS_IMMEDIAT  ,"out_DECOD_OUT_HAS_IMMEDIAT ",Tcontrol_t         ,_param->_nb_inst_decod);
94  ALLOC1_SC_SIGNAL(out_DECOD_OUT_IMMEDIAT      ,"out_DECOD_OUT_IMMEDIAT     ",Tgeneral_data_t    ,_param->_nb_inst_decod);
95  ALLOC1_SC_SIGNAL(out_DECOD_OUT_READ_RA       ,"out_DECOD_OUT_READ_RA      ",Tcontrol_t         ,_param->_nb_inst_decod);
96  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RA    ,"out_DECOD_OUT_NUM_REG_RA   ",Tgeneral_address_t ,_param->_nb_inst_decod);
97  ALLOC1_SC_SIGNAL(out_DECOD_OUT_READ_RB       ,"out_DECOD_OUT_READ_RB      ",Tcontrol_t         ,_param->_nb_inst_decod);
98  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RB    ,"out_DECOD_OUT_NUM_REG_RB   ",Tgeneral_address_t ,_param->_nb_inst_decod);
99  ALLOC1_SC_SIGNAL(out_DECOD_OUT_READ_RC       ,"out_DECOD_OUT_READ_RC      ",Tcontrol_t         ,_param->_nb_inst_decod);
100  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RC    ,"out_DECOD_OUT_NUM_REG_RC   ",Tspecial_address_t ,_param->_nb_inst_decod);
101  ALLOC1_SC_SIGNAL(out_DECOD_OUT_WRITE_RD      ,"out_DECOD_OUT_WRITE_RD     ",Tcontrol_t         ,_param->_nb_inst_decod);
102  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RD    ,"out_DECOD_OUT_NUM_REG_RD   ",Tgeneral_address_t ,_param->_nb_inst_decod);
103  ALLOC1_SC_SIGNAL(out_DECOD_OUT_WRITE_RE      ,"out_DECOD_OUT_WRITE_RE     ",Tcontrol_t         ,_param->_nb_inst_decod);
104  ALLOC1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RE    ,"out_DECOD_OUT_NUM_REG_RE   ",Tspecial_address_t ,_param->_nb_inst_decod);
105  ALLOC1_SC_SIGNAL(out_DECOD_OUT_EXCEPTION_USE ,"out_DECOD_OUT_EXCEPTION_USE",Texception_t       ,_param->_nb_inst_decod);
106  ALLOC1_SC_SIGNAL(out_DECOD_OUT_EXCEPTION     ,"out_DECOD_OUT_EXCEPTION    ",Texception_t       ,_param->_nb_inst_decod);
107                                                                                                 
108  ALLOC1_SC_SIGNAL( in_DEPTH_MIN               ," in_DEPTH_MIN              ",Tdepth_t           ,_param->_nb_context);
109  ALLOC1_SC_SIGNAL( in_DEPTH_MAX               ," in_DEPTH_MAX              ",Tdepth_t           ,_param->_nb_context);
110  ALLOC1_SC_SIGNAL( in_DEPTH_FULL              ," in_DEPTH_FULL             ",Tcontrol_t         ,_param->_nb_context);
111
112  ALLOC1_SC_SIGNAL(out_NB_INST_ALL             ,"out_NB_INST_ALL            ",Tcounter_t         ,_param->_nb_context);
113 
114  /********************************************************
115   * Instanciation
116   ********************************************************/
117 
118  msg(_("<%s> : Instanciation of _Decod_queue.\n"),name.c_str());
119
120  (*(_Decod_queue->in_CLOCK))        (*(in_CLOCK));
121  (*(_Decod_queue->in_NRESET))       (*(in_NRESET));
122
123  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_VAL            ,_param->_nb_inst_decod);
124  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_IN_ACK            ,_param->_nb_inst_decod);
125  if (_param->_have_port_context_id)
126  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_CONTEXT_ID     ,_param->_nb_inst_decod);
127  if (_param->_have_port_depth)
128  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_DEPTH          ,_param->_nb_inst_decod);
129  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_TYPE           ,_param->_nb_inst_decod);
130  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_OPERATION      ,_param->_nb_inst_decod);
131  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NO_EXECUTE     ,_param->_nb_inst_decod);
132  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_IS_DELAY_SLOT  ,_param->_nb_inst_decod);
133#ifdef DEBUG
134  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_ADDRESS        ,_param->_nb_inst_decod);
135#endif
136  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_ADDRESS_NEXT   ,_param->_nb_inst_decod);
137  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_HAS_IMMEDIAT   ,_param->_nb_inst_decod);
138  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_IMMEDIAT       ,_param->_nb_inst_decod);
139  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_READ_RA        ,_param->_nb_inst_decod);
140  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NUM_REG_RA     ,_param->_nb_inst_decod);
141  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_READ_RB        ,_param->_nb_inst_decod);
142  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NUM_REG_RB     ,_param->_nb_inst_decod);
143  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_READ_RC        ,_param->_nb_inst_decod);
144  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NUM_REG_RC     ,_param->_nb_inst_decod);
145  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_WRITE_RD       ,_param->_nb_inst_decod);
146  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NUM_REG_RD     ,_param->_nb_inst_decod);
147  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_WRITE_RE       ,_param->_nb_inst_decod);
148  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_NUM_REG_RE     ,_param->_nb_inst_decod);
149  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_EXCEPTION_USE  ,_param->_nb_inst_decod);
150  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_IN_EXCEPTION      ,_param->_nb_inst_decod);
151
152  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_VAL           ,_param->_nb_inst_decod);
153  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DECOD_OUT_ACK           ,_param->_nb_inst_decod);
154  if (_param->_have_port_context_id)
155  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_CONTEXT_ID    ,_param->_nb_inst_decod);
156  if (_param->_have_port_depth)
157  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_DEPTH         ,_param->_nb_inst_decod);
158  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_TYPE          ,_param->_nb_inst_decod);
159  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_OPERATION     ,_param->_nb_inst_decod);
160  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NO_EXECUTE    ,_param->_nb_inst_decod);
161  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_IS_DELAY_SLOT ,_param->_nb_inst_decod);
162#ifdef DEBUG
163  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_ADDRESS       ,_param->_nb_inst_decod);
164#endif
165  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_ADDRESS_NEXT  ,_param->_nb_inst_decod);
166  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_HAS_IMMEDIAT  ,_param->_nb_inst_decod);
167  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_IMMEDIAT      ,_param->_nb_inst_decod);
168  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_READ_RA       ,_param->_nb_inst_decod);
169  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NUM_REG_RA    ,_param->_nb_inst_decod);
170  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_READ_RB       ,_param->_nb_inst_decod);
171  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NUM_REG_RB    ,_param->_nb_inst_decod);
172  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_READ_RC       ,_param->_nb_inst_decod);
173  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NUM_REG_RC    ,_param->_nb_inst_decod);
174  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_WRITE_RD      ,_param->_nb_inst_decod);
175  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NUM_REG_RD    ,_param->_nb_inst_decod);
176  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_WRITE_RE      ,_param->_nb_inst_decod);
177  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_NUM_REG_RE    ,_param->_nb_inst_decod);
178  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_EXCEPTION_USE ,_param->_nb_inst_decod);
179  INSTANCE1_SC_SIGNAL(_Decod_queue,out_DECOD_OUT_EXCEPTION     ,_param->_nb_inst_decod);
180
181  if (_param->_have_port_depth)
182    {
183  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DEPTH_MIN               ,_param->_nb_context);
184  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DEPTH_MAX               ,_param->_nb_context);
185    }
186  INSTANCE1_SC_SIGNAL(_Decod_queue, in_DEPTH_FULL              ,_param->_nb_context);
187  INSTANCE1_SC_SIGNAL(_Decod_queue,out_NB_INST_ALL             ,_param->_nb_context);
188  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
189   
190  Time * _time = new Time();
191
192  /********************************************************
193   * Simulation - Begin
194   ********************************************************/
195
196  // Initialisation
197
198  const uint32_t seed = 0;
199//const uint32_t seed = static_cast<uint32_t>(time(NULL));
200
201  srand(seed);
202
203  SC_START(0);
204  LABEL("Initialisation");
205
206  LABEL("Reset");
207  in_NRESET->write(0);
208  SC_START(5);
209  in_NRESET->write(1); 
210
211  LABEL("Loop of Test");
212
213  Tcounter_t nb_inst      [_param->_nb_context];
214  Tdepth_t   depth        [_param->_nb_context];
215  Taddress_t address_src  [_param->_nb_context];
216  Taddress_t address_dest [_param->_nb_context];
217
218  for (uint32_t i=0; i<_param->_nb_context; i++)
219    {
220      nb_inst      [i] = 0;
221      depth        [i] = 0;
222      address_src  [i] = 0;
223      address_dest [i] = 0;
224    }
225
226  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
227    {
228      LABEL("Iteration %d",iteration);
229
230      {
231        Taddress_t address_tmp [_param->_nb_context];
232       
233        for (uint32_t i=0; i<_param->_nb_context; i++)
234          address_tmp [i] = address_src [i];
235
236        uint32_t x = rand()%_param->_nb_inst_decod;
237       
238        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
239          {
240            Tcontext_t context = rand()%_param->_nb_context;
241
242            in_DECOD_IN_VAL          [i]->write(i<=x);
243            in_DECOD_IN_CONTEXT_ID   [i]->write(context);
244            in_DECOD_IN_DEPTH        [i]->write(depth [context]);
245#ifdef DEBUG
246            in_DECOD_IN_ADDRESS      [i]->write(address_tmp [context]);
247#endif
248            in_DECOD_IN_ADDRESS_NEXT [i]->write(address_tmp [context]);
249
250            address_tmp [context] ++;
251          }
252      }
253
254      {
255        uint32_t x = rand()%_param->_nb_inst_decod;
256       
257        for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
258          {
259            in_DECOD_OUT_ACK       [i]->write(i<=x);
260          }
261      }
262     
263      SC_START(0);
264
265      for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
266        {
267          LABEL("DECOD_IN  [%d] - %d %d",i,in_DECOD_IN_VAL [i]->read(),out_DECOD_IN_ACK [i]->read());
268
269          if (in_DECOD_IN_VAL [i]->read() and out_DECOD_IN_ACK [i]->read())
270            {
271              LABEL("DECOD_IN  [%d] - Transaction Accepted",i);
272              Tcontext_t context = in_DECOD_IN_CONTEXT_ID [i]->read();
273              LABEL("  * context  : %d",context);
274             
275              nb_inst      [context] ++;
276              address_src  [context] ++;
277
278              LABEL("  * nb_inst  : %d",nb_inst [context]);
279            }
280        }
281
282      for (uint32_t i=0; i<_param->_nb_inst_decod; i++)
283        {
284          LABEL("DECOD_OUT [%d] - %d %d",i,out_DECOD_OUT_VAL [i]->read(),in_DECOD_OUT_ACK [i]->read());
285          if (out_DECOD_OUT_VAL [i]->read() and in_DECOD_OUT_ACK [i]->read())
286            {
287              LABEL("DECOD_OUT [%d] - Transaction Accepted",i);
288              Tcontext_t context = out_DECOD_OUT_CONTEXT_ID [i]->read();
289              LABEL("  * context  : %d",context);
290             
291              TEST(Tdepth_t  ,out_DECOD_OUT_DEPTH        [i]->read(),depth        [context]);
292              TEST(Taddress_t,out_DECOD_OUT_ADDRESS_NEXT [i]->read(),address_dest [context]);
293#ifdef DEBUG
294              TEST(Taddress_t,out_DECOD_OUT_ADDRESS      [i]->read(),address_dest [context]);
295#endif       
296              nb_inst      [context] --;
297              address_dest [context] ++;
298
299              LABEL("  * nb_inst  : %d",nb_inst [context]);
300            }
301        }
302
303      SC_START(1);
304
305      for (uint32_t i=0; i<_param->_nb_context; i++)
306        TEST(Tcounter_t,out_NB_INST_ALL[i]->read(), nb_inst[i]);
307    }
308
309  /********************************************************
310   * Simulation - End
311   ********************************************************/
312
313  TEST_OK ("End of Simulation");
314  delete _time;
315
316  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
317
318  delete in_CLOCK;
319  delete in_NRESET;
320
321  DELETE1_SC_SIGNAL( in_DECOD_IN_VAL            ,_param->_nb_inst_decod);
322  DELETE1_SC_SIGNAL(out_DECOD_IN_ACK            ,_param->_nb_inst_decod);
323  DELETE1_SC_SIGNAL( in_DECOD_IN_CONTEXT_ID     ,_param->_nb_inst_decod);
324  DELETE1_SC_SIGNAL( in_DECOD_IN_DEPTH          ,_param->_nb_inst_decod);
325  DELETE1_SC_SIGNAL( in_DECOD_IN_TYPE           ,_param->_nb_inst_decod);
326  DELETE1_SC_SIGNAL( in_DECOD_IN_OPERATION      ,_param->_nb_inst_decod);
327  DELETE1_SC_SIGNAL( in_DECOD_IN_NO_EXECUTE     ,_param->_nb_inst_decod);
328  DELETE1_SC_SIGNAL( in_DECOD_IN_IS_DELAY_SLOT  ,_param->_nb_inst_decod);
329#ifdef DEBUG
330  DELETE1_SC_SIGNAL( in_DECOD_IN_ADDRESS        ,_param->_nb_inst_decod);
331#endif
332  DELETE1_SC_SIGNAL( in_DECOD_IN_ADDRESS_NEXT   ,_param->_nb_inst_decod);
333  DELETE1_SC_SIGNAL( in_DECOD_IN_HAS_IMMEDIAT   ,_param->_nb_inst_decod);
334  DELETE1_SC_SIGNAL( in_DECOD_IN_IMMEDIAT       ,_param->_nb_inst_decod);
335  DELETE1_SC_SIGNAL( in_DECOD_IN_READ_RA        ,_param->_nb_inst_decod);
336  DELETE1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RA     ,_param->_nb_inst_decod);
337  DELETE1_SC_SIGNAL( in_DECOD_IN_READ_RB        ,_param->_nb_inst_decod);
338  DELETE1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RB     ,_param->_nb_inst_decod);
339  DELETE1_SC_SIGNAL( in_DECOD_IN_READ_RC        ,_param->_nb_inst_decod);
340  DELETE1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RC     ,_param->_nb_inst_decod);
341  DELETE1_SC_SIGNAL( in_DECOD_IN_WRITE_RD       ,_param->_nb_inst_decod);
342  DELETE1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RD     ,_param->_nb_inst_decod);
343  DELETE1_SC_SIGNAL( in_DECOD_IN_WRITE_RE       ,_param->_nb_inst_decod);
344  DELETE1_SC_SIGNAL( in_DECOD_IN_NUM_REG_RE     ,_param->_nb_inst_decod);
345  DELETE1_SC_SIGNAL( in_DECOD_IN_EXCEPTION_USE  ,_param->_nb_inst_decod);
346  DELETE1_SC_SIGNAL( in_DECOD_IN_EXCEPTION      ,_param->_nb_inst_decod);
347
348  DELETE1_SC_SIGNAL(out_DECOD_OUT_VAL           ,_param->_nb_inst_decod);
349  DELETE1_SC_SIGNAL( in_DECOD_OUT_ACK           ,_param->_nb_inst_decod);
350  DELETE1_SC_SIGNAL(out_DECOD_OUT_CONTEXT_ID    ,_param->_nb_inst_decod);
351  DELETE1_SC_SIGNAL(out_DECOD_OUT_DEPTH         ,_param->_nb_inst_decod);
352  DELETE1_SC_SIGNAL(out_DECOD_OUT_TYPE          ,_param->_nb_inst_decod);
353  DELETE1_SC_SIGNAL(out_DECOD_OUT_OPERATION     ,_param->_nb_inst_decod);
354  DELETE1_SC_SIGNAL(out_DECOD_OUT_NO_EXECUTE    ,_param->_nb_inst_decod);
355  DELETE1_SC_SIGNAL(out_DECOD_OUT_IS_DELAY_SLOT ,_param->_nb_inst_decod);
356#ifdef DEBUG
357  DELETE1_SC_SIGNAL(out_DECOD_OUT_ADDRESS       ,_param->_nb_inst_decod);
358#endif
359  DELETE1_SC_SIGNAL(out_DECOD_OUT_ADDRESS_NEXT  ,_param->_nb_inst_decod);
360  DELETE1_SC_SIGNAL(out_DECOD_OUT_HAS_IMMEDIAT  ,_param->_nb_inst_decod);
361  DELETE1_SC_SIGNAL(out_DECOD_OUT_IMMEDIAT      ,_param->_nb_inst_decod);
362  DELETE1_SC_SIGNAL(out_DECOD_OUT_READ_RA       ,_param->_nb_inst_decod);
363  DELETE1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RA    ,_param->_nb_inst_decod);
364  DELETE1_SC_SIGNAL(out_DECOD_OUT_READ_RB       ,_param->_nb_inst_decod);
365  DELETE1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RB    ,_param->_nb_inst_decod);
366  DELETE1_SC_SIGNAL(out_DECOD_OUT_READ_RC       ,_param->_nb_inst_decod);
367  DELETE1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RC    ,_param->_nb_inst_decod);
368  DELETE1_SC_SIGNAL(out_DECOD_OUT_WRITE_RD      ,_param->_nb_inst_decod);
369  DELETE1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RD    ,_param->_nb_inst_decod);
370  DELETE1_SC_SIGNAL(out_DECOD_OUT_WRITE_RE      ,_param->_nb_inst_decod);
371  DELETE1_SC_SIGNAL(out_DECOD_OUT_NUM_REG_RE    ,_param->_nb_inst_decod);
372  DELETE1_SC_SIGNAL(out_DECOD_OUT_EXCEPTION_USE ,_param->_nb_inst_decod);
373  DELETE1_SC_SIGNAL(out_DECOD_OUT_EXCEPTION     ,_param->_nb_inst_decod);
374
375  DELETE1_SC_SIGNAL( in_DEPTH_MIN               ,_param->_nb_context);
376  DELETE1_SC_SIGNAL( in_DEPTH_MAX               ,_param->_nb_context);
377  DELETE1_SC_SIGNAL( in_DEPTH_FULL              ,_param->_nb_context);
378
379  DELETE1_SC_SIGNAL(out_NB_INST_ALL             ,_param->_nb_context);
380    }
381#endif
382
383  delete _Decod_queue;
384#ifdef STATISTICS
385  delete _parameters_statistics;
386#endif
387}
Note: See TracBrowser for help on using the repository browser.