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

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 36.7 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_OOO_Engine/OOO_Engine/Reexecute_unit/SelfTest/include/test.h"
10#include "Behavioural/include/Allocation.h"
11#include "Common/include/BitManipulation.h"
12
13class request_t
14{
15public : Tcontext_t         context_id   ;
16public : Tcontext_t         front_end_id ;
17public : Tpacket_t          packet_id    ;
18public : Tcontrol_t         commit_wen   ;
19public : Tcontrol_t         spr_access   ;
20public : Tcontrol_t         spr_wen      ;
21public : Tcontrol_t         spr_ren      ;
22public : Tcontrol_t         reexecute    ;
23public : Ttype_t            type         ;
24public : Toperation_t       operation    ;
25public : Tgeneral_data_t    num_group    ;
26public : Tgeneral_data_t    num_reg      ;
27public : Tgeneral_data_t    address      ;
28public : Tgeneral_data_t    data         ;
29public : Tcontrol_t         write_rd     ;
30public : Tgeneral_address_t num_reg_rd   ;
31public : Tspecial_data_t    flags        ;
32public : Texception_t       exception    ;
33public : Tcontrol_t         no_sequence  ;
34 
35public : void init (morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit::Parameters * _param, Tpacket_t _packet_id)
36  {
37    context_id   = range<Tcontext_t        >(rand(),_param->_size_context_id         );
38    front_end_id = range<Tcontext_t        >(rand(),_param->_size_front_end_id       );
39    packet_id    = _packet_id;
40    num_group    = (rand()%2)?GROUP_DCACHE:GROUP_POWER_MANAGEMENT;
41    num_reg      = packet_id;
42    data         = range<Tgeneral_data_t   >(rand(),_param->_size_general_data       );
43    num_reg_rd   = range<Tspecial_address_t>(rand(),_param->_size_special_register   );
44    flags        = range<Tspecial_data_t   >(rand(),_param->_size_special_data       );
45
46    switch (rand()%4)
47      {
48      case 0  : exception = EXCEPTION_ALU_SPR_ACCESS_MUST_WRITE; break;
49      case 1  : exception = EXCEPTION_ALU_SPR_ACCESS_MUST_READ ; break;
50      default : exception = EXCEPTION_NONE;
51      }
52
53    no_sequence  = rand()%2;
54
55    address      = (num_group << 11)+num_reg;
56   
57
58    spr_wen      = (exception ==  EXCEPTION_ALU_SPR_ACCESS_MUST_WRITE);
59    spr_ren      = (exception ==  EXCEPTION_ALU_SPR_ACCESS_MUST_READ );
60    spr_access   = spr_wen or spr_ren;
61
62    reexecute    = spr_ren or (spr_wen and ((num_group == GROUP_DCACHE) and
63                                            ((num_reg == SPR_DCBPR) or
64                                             (num_reg == SPR_DCBFR) or
65                                             (num_reg == SPR_DCBIR) or
66                                             (num_reg == SPR_DCBLR))));
67
68    commit_wen   = not reexecute;
69
70    if (not spr_access)
71      {
72        write_rd  = 0;
73        type      = TYPE_SHIFT;
74        operation = OPERATION_SHIFT_L_SRA;
75      }
76    else
77      if (spr_ren)
78        {
79          write_rd  = 1;
80          type      = TYPE_ALU;
81          operation = OPERATION_ALU_L_OR;
82        }
83      else
84        {
85          write_rd = 0;
86          type     = TYPE_MEMORY;
87          switch (num_reg)
88            {
89            case SPR_DCBPR : {operation = OPERATION_MEMORY_PREFETCH  ; break;}
90            case SPR_DCBFR : {operation = OPERATION_MEMORY_FLUSH     ; break;}
91            case SPR_DCBIR : {operation = OPERATION_MEMORY_INVALIDATE; break;}
92            case SPR_DCBLR : {operation = OPERATION_MEMORY_LOCK      ; break;}
93            default        : break;
94            }
95        }
96
97  }
98};
99
100
101void test (string name,
102           morpheo::behavioural::core::multi_ooo_engine::ooo_engine::reexecute_unit::Parameters * _param)
103{
104  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
105
106#ifdef STATISTICS
107  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
108#endif
109
110  Tusage_t _usage = USE_ALL;
111
112//   _usage = usage_unset(_usage,USE_SYSTEMC              );
113//   _usage = usage_unset(_usage,USE_VHDL                 );
114//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
115//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
116//   _usage = usage_unset(_usage,USE_POSITION             );
117   _usage = usage_unset(_usage,USE_STATISTICS           );
118//   _usage = usage_unset(_usage,USE_INFORMATION          );
119
120  Reexecute_unit * _Reexecute_unit = new Reexecute_unit
121    (name.c_str(),
122#ifdef STATISTICS
123     _parameters_statistics,
124#endif
125     _param,
126     _usage);
127 
128#ifdef SYSTEMC
129  if (usage_is_set(_usage,USE_SYSTEMC))
130    {
131  /*********************************************************************
132   * Déclarations des signaux
133   *********************************************************************/
134  string rename;
135
136  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
137  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
138
139  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_VAL                     ," in_EXECUTE_LOOP_VAL                   ",Tcontrol_t         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
140  ALLOC2_SC_SIGNAL(out_EXECUTE_LOOP_ACK                     ,"out_EXECUTE_LOOP_ACK                   ",Tcontrol_t         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
141  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_CONTEXT_ID              ," in_EXECUTE_LOOP_CONTEXT_ID            ",Tcontext_t         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
142  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_FRONT_END_ID            ," in_EXECUTE_LOOP_FRONT_END_ID          ",Tcontext_t         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
143  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_PACKET_ID               ," in_EXECUTE_LOOP_PACKET_ID             ",Tpacket_t          ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
144//ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_OPERATION               ," in_EXECUTE_LOOP_OPERATION             ",Toperation_t       ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
145//ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_TYPE                    ," in_EXECUTE_LOOP_TYPE                  ",Ttype_t            ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
146  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_FLAGS                   ," in_EXECUTE_LOOP_FLAGS                 ",Tspecial_data_t    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
147  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_EXCEPTION               ," in_EXECUTE_LOOP_EXCEPTION             ",Texception_t       ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
148  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_NO_SEQUENCE             ," in_EXECUTE_LOOP_NO_SEQUENCE           ",Tcontrol_t         ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
149  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_ADDRESS                 ," in_EXECUTE_LOOP_ADDRESS               ",Tgeneral_data_t    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
150  ALLOC2_SC_SIGNAL( in_EXECUTE_LOOP_DATA                    ," in_EXECUTE_LOOP_DATA                  ",Tgeneral_data_t    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
151
152  ALLOC1_SC_SIGNAL(out_COMMIT_VAL                           ,"out_COMMIT_VAL                         ",Tcontrol_t         ,_param->_nb_inst_commit);
153  ALLOC1_SC_SIGNAL( in_COMMIT_ACK                           ," in_COMMIT_ACK                         ",Tcontrol_t         ,_param->_nb_inst_commit);
154  ALLOC1_SC_SIGNAL(out_COMMIT_WEN                           ,"out_COMMIT_WEN                         ",Tcontrol_t         ,_param->_nb_inst_commit);
155  ALLOC1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,"out_COMMIT_CONTEXT_ID                  ",Tcontext_t         ,_param->_nb_inst_commit);
156  ALLOC1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,"out_COMMIT_FRONT_END_ID                ",Tcontext_t         ,_param->_nb_inst_commit);
157  ALLOC1_SC_SIGNAL(out_COMMIT_PACKET_ID                     ,"out_COMMIT_PACKET_ID                   ",Tpacket_t          ,_param->_nb_inst_commit);
158//ALLOC1_SC_SIGNAL(out_COMMIT_OPERATION                     ,"out_COMMIT_OPERATION                   ",Toperation_t       ,_param->_nb_inst_commit);
159//ALLOC1_SC_SIGNAL(out_COMMIT_TYPE                          ,"out_COMMIT_TYPE                        ",Ttype_t            ,_param->_nb_inst_commit);
160  ALLOC1_SC_SIGNAL(out_COMMIT_FLAGS                         ,"out_COMMIT_FLAGS                       ",Tspecial_data_t    ,_param->_nb_inst_commit);
161  ALLOC1_SC_SIGNAL(out_COMMIT_EXCEPTION                     ,"out_COMMIT_EXCEPTION                   ",Texception_t       ,_param->_nb_inst_commit);
162  ALLOC1_SC_SIGNAL(out_COMMIT_NO_SEQUENCE                   ,"out_COMMIT_NO_SEQUENCE                 ",Tcontrol_t         ,_param->_nb_inst_commit);
163  ALLOC1_SC_SIGNAL(out_COMMIT_ADDRESS                       ,"out_COMMIT_ADDRESS                     ",Tgeneral_data_t    ,_param->_nb_inst_commit);
164  ALLOC1_SC_SIGNAL( in_COMMIT_NUM_REG_RD                    ," in_COMMIT_NUM_REG_RD                  ",Tgeneral_address_t ,_param->_nb_inst_commit);
165
166  ALLOC1_SC_SIGNAL(out_SPR_VAL                              ,"out_SPR_VAL                            ",Tcontrol_t         ,_param->_nb_inst_reexecute);
167  ALLOC1_SC_SIGNAL( in_SPR_ACK                              ," in_SPR_ACK                            ",Tcontrol_t         ,_param->_nb_inst_reexecute);
168  ALLOC1_SC_SIGNAL(out_SPR_WEN                              ,"out_SPR_WEN                            ",Tcontrol_t         ,_param->_nb_inst_reexecute);
169  ALLOC1_SC_SIGNAL(out_SPR_CONTEXT_ID                       ,"out_SPR_CONTEXT_ID                     ",Tcontext_t         ,_param->_nb_inst_reexecute);
170  ALLOC1_SC_SIGNAL(out_SPR_FRONT_END_ID                     ,"out_SPR_FRONT_END_ID                   ",Tcontext_t         ,_param->_nb_inst_reexecute);
171  ALLOC1_SC_SIGNAL(out_SPR_NUM_GROUP                        ,"out_SPR_NUM_GROUP                      ",Tspr_address_t     ,_param->_nb_inst_reexecute);
172  ALLOC1_SC_SIGNAL(out_SPR_NUM_REG                          ,"out_SPR_NUM_REG                        ",Tspr_address_t     ,_param->_nb_inst_reexecute);
173  ALLOC1_SC_SIGNAL(out_SPR_WDATA                            ,"out_SPR_WDATA                          ",Tspr_t             ,_param->_nb_inst_reexecute);
174  ALLOC1_SC_SIGNAL( in_SPR_RDATA                            ," in_SPR_RDATA                          ",Tspr_t             ,_param->_nb_inst_reexecute);
175  ALLOC1_SC_SIGNAL( in_SPR_INVALID                          ," in_SPR_INVALID                        ",Tcontrol_t         ,_param->_nb_inst_reexecute);
176
177  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_VAL                    ," in_REEXECUTE_ROB_VAL                  ",Tcontrol_t         ,_param->_nb_inst_reexecute);
178  ALLOC1_SC_SIGNAL(out_REEXECUTE_ROB_ACK                    ,"out_REEXECUTE_ROB_ACK                  ",Tcontrol_t         ,_param->_nb_inst_reexecute);
179  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_CONTEXT_ID             ," in_REEXECUTE_ROB_CONTEXT_ID           ",Tcontext_t         ,_param->_nb_inst_reexecute);
180  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_FRONT_END_ID           ," in_REEXECUTE_ROB_FRONT_END_ID         ",Tcontext_t         ,_param->_nb_inst_reexecute);
181  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_PACKET_ID              ," in_REEXECUTE_ROB_PACKET_ID            ",Tpacket_t          ,_param->_nb_inst_reexecute);
182  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_OPERATION              ," in_REEXECUTE_ROB_OPERATION            ",Toperation_t       ,_param->_nb_inst_reexecute);
183  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_TYPE                   ," in_REEXECUTE_ROB_TYPE                 ",Ttype_t            ,_param->_nb_inst_reexecute);
184  ALLOC1_SC_SIGNAL( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  ," in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t         ,_param->_nb_inst_reexecute);
185
186  ALLOC1_SC_SIGNAL(out_REEXECUTE_VAL                        ,"out_REEXECUTE_VAL                      ",Tcontrol_t         ,_param->_nb_inst_reexecute);
187  ALLOC1_SC_SIGNAL( in_REEXECUTE_ACK                        ," in_REEXECUTE_ACK                      ",Tcontrol_t         ,_param->_nb_inst_reexecute);
188  ALLOC1_SC_SIGNAL(out_REEXECUTE_CONTEXT_ID                 ,"out_REEXECUTE_CONTEXT_ID               ",Tcontext_t         ,_param->_nb_inst_reexecute);
189  ALLOC1_SC_SIGNAL(out_REEXECUTE_FRONT_END_ID               ,"out_REEXECUTE_FRONT_END_ID             ",Tcontext_t         ,_param->_nb_inst_reexecute);
190  ALLOC1_SC_SIGNAL(out_REEXECUTE_PACKET_ID                  ,"out_REEXECUTE_PACKET_ID                ",Tpacket_t          ,_param->_nb_inst_reexecute);
191  ALLOC1_SC_SIGNAL(out_REEXECUTE_OPERATION                  ,"out_REEXECUTE_OPERATION                ",Toperation_t       ,_param->_nb_inst_reexecute);
192  ALLOC1_SC_SIGNAL(out_REEXECUTE_TYPE                       ,"out_REEXECUTE_TYPE                     ",Ttype_t            ,_param->_nb_inst_reexecute);
193  ALLOC1_SC_SIGNAL(out_REEXECUTE_STORE_QUEUE_PTR_WRITE      ,"out_REEXECUTE_STORE_QUEUE_PTR_WRITE    ",Tlsq_ptr_t         ,_param->_nb_inst_reexecute);
194  ALLOC1_SC_SIGNAL(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE       ,"out_REEXECUTE_LOAD_QUEUE_PTR_WRITE     ",Tlsq_ptr_t         ,_param->_nb_inst_reexecute);
195  ALLOC1_SC_SIGNAL(out_REEXECUTE_HAS_IMMEDIAT               ,"out_REEXECUTE_HAS_IMMEDIAT             ",Tcontrol_t         ,_param->_nb_inst_reexecute);
196  ALLOC1_SC_SIGNAL(out_REEXECUTE_IMMEDIAT                   ,"out_REEXECUTE_IMMEDIAT                 ",Tgeneral_data_t    ,_param->_nb_inst_reexecute);
197  ALLOC1_SC_SIGNAL(out_REEXECUTE_READ_RA                    ,"out_REEXECUTE_READ_RA                  ",Tcontrol_t         ,_param->_nb_inst_reexecute);
198  ALLOC1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RA                 ,"out_REEXECUTE_NUM_REG_RA               ",Tgeneral_address_t ,_param->_nb_inst_reexecute);
199  ALLOC1_SC_SIGNAL(out_REEXECUTE_READ_RB                    ,"out_REEXECUTE_READ_RB                  ",Tcontrol_t         ,_param->_nb_inst_reexecute);
200  ALLOC1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RB                 ,"out_REEXECUTE_NUM_REG_RB               ",Tgeneral_address_t ,_param->_nb_inst_reexecute);
201  ALLOC1_SC_SIGNAL(out_REEXECUTE_READ_RC                    ,"out_REEXECUTE_READ_RC                  ",Tcontrol_t         ,_param->_nb_inst_reexecute);
202  ALLOC1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RC                 ,"out_REEXECUTE_NUM_REG_RC               ",Tspecial_address_t ,_param->_nb_inst_reexecute);
203  ALLOC1_SC_SIGNAL(out_REEXECUTE_WRITE_RD                   ,"out_REEXECUTE_WRITE_RD                 ",Tcontrol_t         ,_param->_nb_inst_reexecute);
204  ALLOC1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RD                 ,"out_REEXECUTE_NUM_REG_RD               ",Tgeneral_address_t ,_param->_nb_inst_reexecute);
205  ALLOC1_SC_SIGNAL(out_REEXECUTE_WRITE_RE                   ,"out_REEXECUTE_WRITE_RE                 ",Tcontrol_t         ,_param->_nb_inst_reexecute);
206  ALLOC1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RE                 ,"out_REEXECUTE_NUM_REG_RE               ",Tspecial_address_t ,_param->_nb_inst_reexecute);
207 
208  /********************************************************
209   * Instanciation
210   ********************************************************/
211 
212  msg(_("<%s> : Instanciation of _Reexecute_unit.\n"),name.c_str());
213
214  (*(_Reexecute_unit->in_CLOCK))        (*(in_CLOCK));
215  (*(_Reexecute_unit->in_NRESET))       (*(in_NRESET));
216
217  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_VAL                     ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
218  INSTANCE2_SC_SIGNAL(_Reexecute_unit,out_EXECUTE_LOOP_ACK                     ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
219  if (_param->_have_port_context_id)
220  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_CONTEXT_ID              ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
221  if (_param->_have_port_front_end_id)
222  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_FRONT_END_ID            ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
223  if (_param->_have_port_rob_ptr  )
224  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_PACKET_ID               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
225//INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_OPERATION               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
226//INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_TYPE                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
227  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_FLAGS                   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
228  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_EXCEPTION               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
229  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_NO_SEQUENCE             ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
230  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_ADDRESS                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
231  INSTANCE2_SC_SIGNAL(_Reexecute_unit, in_EXECUTE_LOOP_DATA                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
232
233  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_VAL                           ,_param->_nb_inst_commit);
234  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_COMMIT_ACK                           ,_param->_nb_inst_commit);
235  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_WEN                           ,_param->_nb_inst_commit);
236  if (_param->_have_port_context_id)
237  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
238  if (_param->_have_port_front_end_id)
239  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
240  if (_param->_have_port_rob_ptr  )
241  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_PACKET_ID                     ,_param->_nb_inst_commit);
242//INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_OPERATION                     ,_param->_nb_inst_commit);
243//INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_TYPE                          ,_param->_nb_inst_commit);
244  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_FLAGS                         ,_param->_nb_inst_commit);
245  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_EXCEPTION                     ,_param->_nb_inst_commit);
246  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_NO_SEQUENCE                   ,_param->_nb_inst_commit);
247  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_COMMIT_ADDRESS                       ,_param->_nb_inst_commit);
248  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_COMMIT_NUM_REG_RD                    ,_param->_nb_inst_commit);
249
250  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_VAL                              ,_param->_nb_inst_reexecute);
251  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_SPR_ACK                              ,_param->_nb_inst_reexecute);
252  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_WEN                              ,_param->_nb_inst_reexecute);
253  if (_param->_have_port_context_id)
254  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_CONTEXT_ID                       ,_param->_nb_inst_reexecute);
255  if (_param->_have_port_front_end_id)
256  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_FRONT_END_ID                     ,_param->_nb_inst_reexecute);
257  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_NUM_GROUP                        ,_param->_nb_inst_reexecute);
258  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_NUM_REG                          ,_param->_nb_inst_reexecute);
259  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_SPR_WDATA                            ,_param->_nb_inst_reexecute);
260  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_SPR_RDATA                            ,_param->_nb_inst_reexecute);
261  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_SPR_INVALID                          ,_param->_nb_inst_reexecute);
262
263  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_VAL                    ,_param->_nb_inst_reexecute);
264  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_ROB_ACK                    ,_param->_nb_inst_reexecute);
265  if (_param->_have_port_context_id)
266  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_CONTEXT_ID             ,_param->_nb_inst_reexecute);
267  if (_param->_have_port_front_end_id)
268  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_FRONT_END_ID           ,_param->_nb_inst_reexecute);
269  if (_param->_have_port_rob_ptr  )
270  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_PACKET_ID              ,_param->_nb_inst_reexecute);
271  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_OPERATION              ,_param->_nb_inst_reexecute);
272  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_TYPE                   ,_param->_nb_inst_reexecute);
273  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  ,_param->_nb_inst_reexecute);
274
275  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_VAL                        ,_param->_nb_inst_reexecute);
276  INSTANCE1_SC_SIGNAL(_Reexecute_unit, in_REEXECUTE_ACK                        ,_param->_nb_inst_reexecute);
277  if (_param->_have_port_context_id)
278  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_CONTEXT_ID                 ,_param->_nb_inst_reexecute);
279  if (_param->_have_port_front_end_id)
280  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_FRONT_END_ID               ,_param->_nb_inst_reexecute);
281  if (_param->_have_port_rob_ptr  )
282  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_PACKET_ID                  ,_param->_nb_inst_reexecute);
283  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_OPERATION                  ,_param->_nb_inst_reexecute);
284  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_TYPE                       ,_param->_nb_inst_reexecute);
285  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_STORE_QUEUE_PTR_WRITE      ,_param->_nb_inst_reexecute);
286  if (_param->_have_port_load_queue_ptr)
287  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_LOAD_QUEUE_PTR_WRITE       ,_param->_nb_inst_reexecute);
288  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_HAS_IMMEDIAT               ,_param->_nb_inst_reexecute);
289  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_IMMEDIAT                   ,_param->_nb_inst_reexecute);
290  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_READ_RA                    ,_param->_nb_inst_reexecute);
291  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_NUM_REG_RA                 ,_param->_nb_inst_reexecute);
292  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_READ_RB                    ,_param->_nb_inst_reexecute);
293  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_NUM_REG_RB                 ,_param->_nb_inst_reexecute);
294  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_READ_RC                    ,_param->_nb_inst_reexecute);
295  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_NUM_REG_RC                 ,_param->_nb_inst_reexecute);
296  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_WRITE_RD                   ,_param->_nb_inst_reexecute);
297  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_NUM_REG_RD                 ,_param->_nb_inst_reexecute);
298  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_WRITE_RE                   ,_param->_nb_inst_reexecute);
299  INSTANCE1_SC_SIGNAL(_Reexecute_unit,out_REEXECUTE_NUM_REG_RE                 ,_param->_nb_inst_reexecute);
300
301  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
302   
303  Time * _time = new Time();
304
305  /********************************************************
306   * Simulation - Begin
307   ********************************************************/
308
309  // Initialisation
310
311  const uint32_t seed = 0;
312//const uint32_t seed = static_cast<uint32_t>(time(NULL));
313
314  srand(seed);
315
316  const  int32_t percent_transaction_execute_loop = 75;
317  const  int32_t percent_transaction_commit       = 75;
318  const  int32_t percent_transaction_spr          = 75;
319  const  int32_t percent_transaction_reexecute    = 75;
320
321
322  SC_START(0);
323  LABEL("Initialisation");
324
325  LABEL("Reset");
326  in_NRESET->write(0);
327  SC_START(5);
328  in_NRESET->write(1); 
329
330  LABEL("Loop of Test");
331
332  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
333    {
334      LABEL("Iteration %d",iteration);
335     
336      uint32_t nb_request     = 1<<_param->_size_rob_ptr;
337      uint32_t nb_request_in  = 0;
338      uint32_t nb_request_out = 0;
339
340      request_t request [nb_request];
341
342      uint32_t tab_request_in  [_param->_nb_execute_loop][_param->_max_nb_inst_execute];
343      bool     tab_request_out [nb_request];
344      for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
345        for (uint32_t j=0; j<_param->_nb_inst_execute [i]; ++j)
346          tab_request_in [i][j] = (nb_request_in < nb_request)?(nb_request_in++):nb_request;
347      for (uint32_t i=0; i<nb_request; i++)
348        {
349          tab_request_out [i] = true;
350          request [i].init(_param, i);
351        }
352     
353      while (nb_request_out < nb_request)
354        {
355          for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
356            for (uint32_t j=0; j<_param->_nb_inst_execute [i]; ++j)
357              {
358                uint32_t x=tab_request_in [i][j];
359
360                in_EXECUTE_LOOP_VAL          [i][j]->write(((rand()%100)<percent_transaction_execute_loop) and (x<nb_request));
361                in_EXECUTE_LOOP_CONTEXT_ID   [i][j]->write(request[x].context_id  );
362                in_EXECUTE_LOOP_FRONT_END_ID [i][j]->write(request[x].front_end_id);
363                in_EXECUTE_LOOP_PACKET_ID    [i][j]->write(x);
364              //in_EXECUTE_LOOP_OPERATION    [i][j]->write(0);
365              //in_EXECUTE_LOOP_TYPE         [i][j]->write(0);
366                in_EXECUTE_LOOP_FLAGS        [i][j]->write(request[x].flags       );
367                in_EXECUTE_LOOP_EXCEPTION    [i][j]->write(request[x].exception   );
368                in_EXECUTE_LOOP_NO_SEQUENCE  [i][j]->write(request[x].no_sequence );
369                uint32_t num_group = request[x].num_group;
370                uint32_t num_reg   = request[x].num_reg  ;
371                in_EXECUTE_LOOP_ADDRESS      [i][j]->write((num_group << 11) | num_reg);
372                in_EXECUTE_LOOP_DATA         [i][j]->write(request[x].data        );
373              }
374         
375          SC_START(0);
376          for (uint32_t i=0; i<_param->_nb_inst_commit; ++i)
377            {
378              in_COMMIT_ACK        [i]->write((rand()%100)<percent_transaction_commit);
379
380              Tpacket_t packet = (_param->_have_port_rob_ptr  )?PORT_READ(out_COMMIT_PACKET_ID [i]):0;
381              in_COMMIT_NUM_REG_RD [i]->write(request[packet].num_reg_rd);
382            }
383
384          for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
385            {
386              in_SPR_ACK     [i]->write((rand()%100)<percent_transaction_spr);
387              in_SPR_RDATA   [i]->write(~out_SPR_WDATA [i]->read());
388              in_SPR_INVALID [i]->write(0);
389            }
390
391          for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
392            in_REEXECUTE_ACK   [i]->write((rand()%100)<percent_transaction_reexecute);
393
394          SC_START(0);
395
396          for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
397            for (uint32_t j=0; j<_param->_nb_inst_execute [i]; ++j)
398              if (in_EXECUTE_LOOP_VAL [i][j]->read() and out_EXECUTE_LOOP_ACK [i][j]->read())
399                {
400                  LABEL("EXECUTE_LOOP [%d][%d] : Transaction accepted",i,j);
401                 
402                  tab_request_in [i][j] = (nb_request_in < nb_request)?(nb_request_in++):nb_request;
403                }
404         
405          for (uint32_t i=0; i<_param->_nb_inst_commit; ++i)
406            if (out_COMMIT_VAL [i]->read() and in_COMMIT_ACK [i]->read())
407                {
408                  LABEL("COMMIT       [%d] : Transaction accepted",i);
409                 
410                  Tpacket_t packet = (_param->_have_port_rob_ptr  )?PORT_READ(out_COMMIT_PACKET_ID [i]):0;
411
412                  LABEL(" * packet : %d",packet);
413
414                  TEST(bool, tab_request_out [packet], true);
415
416                  TEST(Tcontrol_t     ,out_COMMIT_WEN          [i]->read(),request[packet].commit_wen  );
417                  if (_param->_have_port_context_id)
418                  TEST(Tcontext_t     ,out_COMMIT_CONTEXT_ID   [i]->read(),request[packet].context_id  );
419                  if (_param->_have_port_front_end_id)
420                  TEST(Tcontext_t     ,out_COMMIT_FRONT_END_ID [i]->read(),request[packet].front_end_id);
421//                TEST(Toperation_t   ,out_COMMIT_OPERATION    [i]->read(),request[packet].operation   );
422//                TEST(Ttype_t        ,out_COMMIT_TYPE         [i]->read(),request[packet].type        );
423                  TEST(Tspecial_data_t,out_COMMIT_FLAGS        [i]->read(),request[packet].flags       );
424                  TEST(Texception_t   ,out_COMMIT_EXCEPTION    [i]->read(),request[packet].exception   );
425                  TEST(Tcontrol_t     ,out_COMMIT_NO_SEQUENCE  [i]->read(),request[packet].no_sequence );
426                  TEST(Tgeneral_data_t,out_COMMIT_ADDRESS      [i]->read(),request[packet].address     );
427
428                  tab_request_out [packet] = false;
429                  if (not request[packet].spr_access)
430                    nb_request_out++;
431                }
432         
433          for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
434            if (out_SPR_VAL[i]->read() and in_SPR_ACK[i]->read())
435              {
436                LABEL("SPR          [%d] : Transaction accepted",i);
437               
438                Tspr_address_t num_reg = out_SPR_NUM_REG [i]->read();
439                TEST(Tcontrol_t    ,out_SPR_WEN          [i]->read(), request[num_reg].spr_wen);
440                if (_param->_have_port_context_id)
441                TEST(Tcontext_t    ,out_SPR_CONTEXT_ID   [i]->read(), request[num_reg].context_id);
442                if (_param->_have_port_front_end_id)
443                TEST(Tcontext_t    ,out_SPR_FRONT_END_ID [i]->read(), request[num_reg].front_end_id);
444                TEST(Tspr_address_t,out_SPR_NUM_GROUP    [i]->read(), request[num_reg].num_group);
445                TEST(Tspr_t        ,out_SPR_WDATA        [i]->read(), request[num_reg].data);
446
447                if (request[num_reg].spr_ren)
448                  request[num_reg].data = ~request[num_reg].data;
449
450                if (not request[num_reg].reexecute)
451                  nb_request_out++;
452              }
453
454          for (uint32_t i=0; i<_param->_nb_inst_reexecute; i++)
455            if (out_REEXECUTE_VAL[i]->read() and in_REEXECUTE_ACK[i]->read())
456              {
457                LABEL("REEXECUTE    [%d] : Transaction accepted",i);
458
459                Tpacket_t packet = (_param->_have_port_rob_ptr  )?PORT_READ(out_REEXECUTE_PACKET_ID [i]):0;
460               
461                LABEL(" * packet : %d",packet);
462                TEST(Tcontrol_t        ,request [packet].reexecute, true);
463               
464                if (_param->_have_port_context_id)
465                TEST(Tcontext_t        ,out_REEXECUTE_CONTEXT_ID            [i]->read(), request[packet].context_id  );
466                if (_param->_have_port_front_end_id)
467                TEST(Tcontext_t        ,out_REEXECUTE_FRONT_END_ID          [i]->read(), request[packet].front_end_id);
468                TEST(Tgeneral_data_t   ,out_REEXECUTE_IMMEDIAT              [i]->read(), request[packet].data        );
469                TEST(Tcontrol_t        ,out_REEXECUTE_WRITE_RD              [i]->read(), request[packet].write_rd    );
470                TEST(Tgeneral_address_t,out_REEXECUTE_NUM_REG_RD            [i]->read(), request[packet].num_reg_rd  );
471
472                TEST(Ttype_t           ,out_REEXECUTE_TYPE                  [i]->read(), request[packet].type        );
473                TEST(Toperation_t      ,out_REEXECUTE_OPERATION             [i]->read(), request[packet].operation   );
474
475                TEST(Tcontrol_t        ,out_REEXECUTE_HAS_IMMEDIAT          [i]->read(), 1);
476                TEST(Tlsq_ptr_t        ,out_REEXECUTE_STORE_QUEUE_PTR_WRITE [i]->read(), 0);
477                TEST(Tlsq_ptr_t        ,out_REEXECUTE_LOAD_QUEUE_PTR_WRITE  [i]->read(), 0);
478                TEST(Tcontrol_t        ,out_REEXECUTE_READ_RA               [i]->read(), 0);
479                TEST(Tgeneral_address_t,out_REEXECUTE_NUM_REG_RA            [i]->read(), 0);
480                TEST(Tcontrol_t        ,out_REEXECUTE_READ_RB               [i]->read(), 0);
481                TEST(Tgeneral_address_t,out_REEXECUTE_NUM_REG_RB            [i]->read(), 0);
482                TEST(Tcontrol_t        ,out_REEXECUTE_READ_RC               [i]->read(), 0);
483                TEST(Tspecial_address_t,out_REEXECUTE_NUM_REG_RC            [i]->read(), 0);
484                TEST(Tcontrol_t        ,out_REEXECUTE_WRITE_RE              [i]->read(), 0);
485                TEST(Tspecial_address_t,out_REEXECUTE_NUM_REG_RE            [i]->read(), 0);
486
487                nb_request_out++;
488              }
489
490          SC_START(1);
491        }
492
493
494      TEST(uint32_t, nb_request_in  ,nb_request);
495      TEST(uint32_t, nb_request_out ,nb_request);
496
497//       for (uint32_t i=0; i<nb_request; i++)
498//      TEST(bool,tab_request_out [i],false);
499
500      SC_START(1);
501    }
502 
503  /********************************************************
504   * Simulation - End
505   ********************************************************/
506
507  TEST_OK ("End of Simulation");
508  delete _time;
509
510  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
511
512  delete in_CLOCK;
513  delete in_NRESET;
514
515  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_VAL                     ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
516  DELETE2_SC_SIGNAL(out_EXECUTE_LOOP_ACK                     ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
517  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_CONTEXT_ID              ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
518  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_FRONT_END_ID            ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
519  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_PACKET_ID               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
520//DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_OPERATION               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
521//DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_TYPE                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
522  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_FLAGS                   ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
523  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_EXCEPTION               ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
524  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_NO_SEQUENCE             ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
525  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_ADDRESS                 ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
526  DELETE2_SC_SIGNAL( in_EXECUTE_LOOP_DATA                    ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);
527
528  DELETE1_SC_SIGNAL(out_COMMIT_VAL                           ,_param->_nb_inst_commit);
529  DELETE1_SC_SIGNAL( in_COMMIT_ACK                           ,_param->_nb_inst_commit);
530  DELETE1_SC_SIGNAL(out_COMMIT_WEN                           ,_param->_nb_inst_commit);
531  DELETE1_SC_SIGNAL(out_COMMIT_CONTEXT_ID                    ,_param->_nb_inst_commit);
532  DELETE1_SC_SIGNAL(out_COMMIT_FRONT_END_ID                  ,_param->_nb_inst_commit);
533  DELETE1_SC_SIGNAL(out_COMMIT_PACKET_ID                     ,_param->_nb_inst_commit);
534//DELETE1_SC_SIGNAL(out_COMMIT_OPERATION                     ,_param->_nb_inst_commit);
535//DELETE1_SC_SIGNAL(out_COMMIT_TYPE                          ,_param->_nb_inst_commit);
536  DELETE1_SC_SIGNAL(out_COMMIT_FLAGS                         ,_param->_nb_inst_commit);
537  DELETE1_SC_SIGNAL(out_COMMIT_EXCEPTION                     ,_param->_nb_inst_commit);
538  DELETE1_SC_SIGNAL(out_COMMIT_NO_SEQUENCE                   ,_param->_nb_inst_commit);
539  DELETE1_SC_SIGNAL(out_COMMIT_ADDRESS                       ,_param->_nb_inst_commit);
540  DELETE1_SC_SIGNAL( in_COMMIT_NUM_REG_RD                    ,_param->_nb_inst_commit);
541
542  DELETE1_SC_SIGNAL(out_SPR_VAL                              ,_param->_nb_inst_reexecute);
543  DELETE1_SC_SIGNAL( in_SPR_ACK                              ,_param->_nb_inst_reexecute);
544  DELETE1_SC_SIGNAL(out_SPR_WEN                              ,_param->_nb_inst_reexecute);
545  DELETE1_SC_SIGNAL(out_SPR_CONTEXT_ID                       ,_param->_nb_inst_reexecute);
546  DELETE1_SC_SIGNAL(out_SPR_FRONT_END_ID                     ,_param->_nb_inst_reexecute);
547  DELETE1_SC_SIGNAL(out_SPR_NUM_GROUP                        ,_param->_nb_inst_reexecute);
548  DELETE1_SC_SIGNAL(out_SPR_NUM_REG                          ,_param->_nb_inst_reexecute);
549  DELETE1_SC_SIGNAL(out_SPR_WDATA                            ,_param->_nb_inst_reexecute);
550  DELETE1_SC_SIGNAL( in_SPR_RDATA                            ,_param->_nb_inst_reexecute);
551  DELETE1_SC_SIGNAL( in_SPR_INVALID                          ,_param->_nb_inst_reexecute);
552
553  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_VAL                    ,_param->_nb_inst_reexecute);
554  DELETE1_SC_SIGNAL(out_REEXECUTE_ROB_ACK                    ,_param->_nb_inst_reexecute);
555  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_CONTEXT_ID             ,_param->_nb_inst_reexecute);
556  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_FRONT_END_ID           ,_param->_nb_inst_reexecute);
557  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_PACKET_ID              ,_param->_nb_inst_reexecute);
558  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_OPERATION              ,_param->_nb_inst_reexecute);
559  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_TYPE                   ,_param->_nb_inst_reexecute);
560  DELETE1_SC_SIGNAL( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE  ,_param->_nb_inst_reexecute);
561
562  DELETE1_SC_SIGNAL(out_REEXECUTE_VAL                        ,_param->_nb_inst_reexecute);
563  DELETE1_SC_SIGNAL( in_REEXECUTE_ACK                        ,_param->_nb_inst_reexecute);
564  DELETE1_SC_SIGNAL(out_REEXECUTE_CONTEXT_ID                 ,_param->_nb_inst_reexecute);
565  DELETE1_SC_SIGNAL(out_REEXECUTE_FRONT_END_ID               ,_param->_nb_inst_reexecute);
566  DELETE1_SC_SIGNAL(out_REEXECUTE_PACKET_ID                  ,_param->_nb_inst_reexecute);
567  DELETE1_SC_SIGNAL(out_REEXECUTE_OPERATION                  ,_param->_nb_inst_reexecute);
568  DELETE1_SC_SIGNAL(out_REEXECUTE_TYPE                       ,_param->_nb_inst_reexecute);
569  DELETE1_SC_SIGNAL(out_REEXECUTE_STORE_QUEUE_PTR_WRITE      ,_param->_nb_inst_reexecute);
570  DELETE1_SC_SIGNAL(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE       ,_param->_nb_inst_reexecute);
571  DELETE1_SC_SIGNAL(out_REEXECUTE_HAS_IMMEDIAT               ,_param->_nb_inst_reexecute);
572  DELETE1_SC_SIGNAL(out_REEXECUTE_IMMEDIAT                   ,_param->_nb_inst_reexecute);
573  DELETE1_SC_SIGNAL(out_REEXECUTE_READ_RA                    ,_param->_nb_inst_reexecute);
574  DELETE1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RA                 ,_param->_nb_inst_reexecute);
575  DELETE1_SC_SIGNAL(out_REEXECUTE_READ_RB                    ,_param->_nb_inst_reexecute);
576  DELETE1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RB                 ,_param->_nb_inst_reexecute);
577  DELETE1_SC_SIGNAL(out_REEXECUTE_READ_RC                    ,_param->_nb_inst_reexecute);
578  DELETE1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RC                 ,_param->_nb_inst_reexecute);
579  DELETE1_SC_SIGNAL(out_REEXECUTE_WRITE_RD                   ,_param->_nb_inst_reexecute);
580  DELETE1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RD                 ,_param->_nb_inst_reexecute);
581  DELETE1_SC_SIGNAL(out_REEXECUTE_WRITE_RE                   ,_param->_nb_inst_reexecute);
582  DELETE1_SC_SIGNAL(out_REEXECUTE_NUM_REG_RE                 ,_param->_nb_inst_reexecute);
583    }
584#endif
585
586  delete _Reexecute_unit;
587#ifdef STATISTICS
588  delete _parameters_statistics;
589#endif
590}
Note: See TracBrowser for help on using the repository browser.