source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/SelfTest/src/test.cpp @ 105

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

1) Bug fix : Load Miss Speculation (in Commit_unit, Update Prediction Table and Context State)
2) Change address, in rob write address_next.
3) Move Meta_Predictor in save directory

  • Property svn:keywords set to Id
File size: 78.7 KB
Line 
1/*
2 * $Id: test.cpp 105 2009-02-05 11:18:31Z rosiere $
3 *
4 * [ Description ]
5 *
6 * Test
7 */
8
9#include "Behavioural/Core/Core_Glue/SelfTest/include/test.h"
10#include "Behavioural/include/Allocation.h"
11#include "Common/include/BitManipulation.h"
12
13void test (string name,
14           morpheo::behavioural::core::core_glue::Parameters * _param)
15{
16  msg(_("<%s> : Simulation SystemC.\n"),name.c_str());
17
18#ifdef STATISTICS
19  morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,CYCLE_MAX);
20#endif
21
22  Tusage_t _usage = USE_ALL;
23
24//   _usage = usage_unset(_usage,USE_SYSTEMC              );
25//   _usage = usage_unset(_usage,USE_VHDL                 );
26//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH       );
27//   _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT);
28//   _usage = usage_unset(_usage,USE_POSITION             );
29//   _usage = usage_unset(_usage,USE_STATISTICS           );
30//   _usage = usage_unset(_usage,USE_INFORMATION          );
31
32  Core_Glue * _Core_Glue = new Core_Glue
33    (name.c_str(),
34#ifdef STATISTICS
35     _parameters_statistics,
36#endif
37     _param,
38     _usage);
39 
40#ifdef SYSTEMC
41  if (usage_is_set(_usage,USE_SYSTEMC))
42    {
43  /*********************************************************************
44   * Déclarations des signaux
45   *********************************************************************/
46  string rename;
47
48  sc_clock              *  in_CLOCK  = new sc_clock ("clock", 1.0, 0.5);         
49  sc_signal<Tcontrol_t> *  in_NRESET = new sc_signal<Tcontrol_t> ("NRESET");
50
51  ALLOC2_SC_SIGNAL(out_RENAME_FRONT_END_ID                       ,"out_RENAME_FRONT_END_ID                       ",Tcontext_t        ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
52  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_VAL             ,"out_BRANCH_COMPLETE_FRONT_END_VAL             ",Tcontrol_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
53  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_FRONT_END_ACK             ," in_BRANCH_COMPLETE_FRONT_END_ACK             ",Tcontrol_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
54  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ,"out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ",Tcontext_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
55  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_DEPTH           ,"out_BRANCH_COMPLETE_FRONT_END_DEPTH           ",Tdepth_t          ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
56  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ,"out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ",Taddress_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
57  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ,"out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ",Tcontrol_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
58  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ," in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ",Tcontrol_t        ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
59  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ," in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
60  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ,"out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
61  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ," in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
62  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ," in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
63  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ," in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ",Tdepth_t          ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
64  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ," in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ",Taddress_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
65  ALLOC2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ," in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
66  ALLOC2_SC_SIGNAL(out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION,"out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
67  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_VAL                ,"out_COMMIT_EVENT_FRONT_END_VAL                ",Tcontrol_t        ,_param->_nb_front_end);
68  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_FRONT_END_ACK                ," in_COMMIT_EVENT_FRONT_END_ACK                ",Tcontrol_t        ,_param->_nb_front_end);
69  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ,"out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ",Tcontext_t        ,_param->_nb_front_end);
70  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_DEPTH              ,"out_COMMIT_EVENT_FRONT_END_DEPTH              ",Tdepth_t          ,_param->_nb_front_end);
71  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_TYPE               ,"out_COMMIT_EVENT_FRONT_END_TYPE               ",Tevent_type_t     ,_param->_nb_front_end);
72  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ,"out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ",Tcontrol_t        ,_param->_nb_front_end);
73  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS            ,"out_COMMIT_EVENT_FRONT_END_ADDRESS            ",Taddress_t        ,_param->_nb_front_end);
74  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ",Tcontrol_t        ,_param->_nb_front_end);
75  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ",Taddress_t        ,_param->_nb_front_end);
76  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ",Tcontrol_t        ,_param->_nb_front_end);
77  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,"out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ",Tgeneral_data_t   ,_param->_nb_front_end);
78  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_VAL               ," in_COMMIT_EVENT_OOO_ENGINE_VAL               ",Tcontrol_t        ,_param->_nb_ooo_engine);
79  ALLOC1_SC_SIGNAL(out_COMMIT_EVENT_OOO_ENGINE_ACK               ,"out_COMMIT_EVENT_OOO_ENGINE_ACK               ",Tcontrol_t        ,_param->_nb_ooo_engine);
80  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ," in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ",Tcontext_t        ,_param->_nb_ooo_engine);
81  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ," in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ",Tcontext_t        ,_param->_nb_ooo_engine);
82  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ," in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ",Tdepth_t          ,_param->_nb_ooo_engine);
83  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_TYPE              ," in_COMMIT_EVENT_OOO_ENGINE_TYPE              ",Tevent_type_t     ,_param->_nb_ooo_engine);
84  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ," in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ",Tcontrol_t        ,_param->_nb_ooo_engine);
85  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ",Taddress_t        ,_param->_nb_ooo_engine);
86  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ",Tcontrol_t        ,_param->_nb_ooo_engine);
87  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ",Taddress_t        ,_param->_nb_ooo_engine);
88  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ",Tcontrol_t        ,_param->_nb_ooo_engine);
89  ALLOC1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ," in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ",Tgeneral_data_t   ,_param->_nb_ooo_engine);
90  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ," in_ISSUE_OOO_ENGINE_VAL                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
91  ALLOC2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,"out_ISSUE_OOO_ENGINE_ACK                      ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
92  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ," in_ISSUE_OOO_ENGINE_FRONT_END_ID             ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
93  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ," in_ISSUE_OOO_ENGINE_CONTEXT_ID               ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
94  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ," in_ISSUE_OOO_ENGINE_PACKET_ID                ",Tpacket_t         ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
95  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ," in_ISSUE_OOO_ENGINE_TYPE                     ",Ttype_t           ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
96  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ," in_ISSUE_OOO_ENGINE_OPERATION                ",Toperation_t      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
97  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ," in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
98  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ," in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ",Tlsq_ptr_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
99  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ," in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
100  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ," in_ISSUE_OOO_ENGINE_IMMEDIAT                 ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
101  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ," in_ISSUE_OOO_ENGINE_READ_RA                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
102  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ," in_ISSUE_OOO_ENGINE_NUM_REG_RA               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
103  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ," in_ISSUE_OOO_ENGINE_READ_RB                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
104  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ," in_ISSUE_OOO_ENGINE_NUM_REG_RB               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
105  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ," in_ISSUE_OOO_ENGINE_READ_RC                  ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
106  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ," in_ISSUE_OOO_ENGINE_NUM_REG_RC               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
107  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ," in_ISSUE_OOO_ENGINE_WRITE_RD                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
108  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ," in_ISSUE_OOO_ENGINE_NUM_REG_RD               ",Tgeneral_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
109  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ," in_ISSUE_OOO_ENGINE_WRITE_RE                 ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
110  ALLOC2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ," in_ISSUE_OOO_ENGINE_NUM_REG_RE               ",Tspecial_address_t,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
111  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_VAL                    ,"out_ISSUE_EXECUTE_LOOP_VAL                    ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
112  ALLOC2_SC_SIGNAL( in_ISSUE_EXECUTE_LOOP_ACK                    ," in_ISSUE_EXECUTE_LOOP_ACK                    ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
113  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ,"out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
114  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ,"out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
115  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ,"out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
116  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_PACKET_ID              ,"out_ISSUE_EXECUTE_LOOP_PACKET_ID              ",Tpacket_t         ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
117  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_OPERATION              ,"out_ISSUE_EXECUTE_LOOP_OPERATION              ",Toperation_t      ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
118  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_TYPE                   ,"out_ISSUE_EXECUTE_LOOP_TYPE                   ",Ttype_t           ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
119  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ,"out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ",Tlsq_ptr_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
120  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ,"out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ",Tlsq_ptr_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
121  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ,"out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
122  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ,"out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
123  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RA                ,"out_ISSUE_EXECUTE_LOOP_READ_RA                ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
124  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ,"out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ",Tgeneral_address_t,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
125  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RB                ,"out_ISSUE_EXECUTE_LOOP_READ_RB                ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
126  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ,"out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ",Tgeneral_address_t,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
127  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RC                ,"out_ISSUE_EXECUTE_LOOP_READ_RC                ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
128  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ,"out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ",Tspecial_address_t,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
129  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_WRITE_RD               ,"out_ISSUE_EXECUTE_LOOP_WRITE_RD               ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
130  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ,"out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ",Tgeneral_address_t,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
131  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_WRITE_RE               ,"out_ISSUE_EXECUTE_LOOP_WRITE_RE               ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
132  ALLOC2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ,"out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ",Tspecial_address_t,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
133  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_VAL                    ,"out_EXECUTE_OOO_ENGINE_VAL                    ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
134  ALLOC3_SC_SIGNAL( in_EXECUTE_OOO_ENGINE_ACK                    ," in_EXECUTE_OOO_ENGINE_ACK                    ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
135  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ,"out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
136  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ,"out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ",Tcontext_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
137  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_PACKET_ID              ,"out_EXECUTE_OOO_ENGINE_PACKET_ID              ",Tpacket_t         ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
138//ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_TYPE                   ,"out_EXECUTE_OOO_ENGINE_TYPE                   ",Ttype_t           ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
139//ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_OPERATION              ,"out_EXECUTE_OOO_ENGINE_OPERATION              ",Toperation_t      ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
140  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_FLAGS                  ,"out_EXECUTE_OOO_ENGINE_FLAGS                  ",Tspecial_data_t   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
141  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_EXCEPTION              ,"out_EXECUTE_OOO_ENGINE_EXCEPTION              ",Texception_t      ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
142  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ,"out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ",Tcontrol_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
143  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_ADDRESS                ,"out_EXECUTE_OOO_ENGINE_ADDRESS                ",Taddress_t        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
144  ALLOC3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_DATA                   ,"out_EXECUTE_OOO_ENGINE_DATA                   ",Tgeneral_data_t   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
145  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_VAL                  ," in_EXECUTE_EXECUTE_LOOP_VAL                  ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
146  ALLOC2_SC_SIGNAL(out_EXECUTE_EXECUTE_LOOP_ACK                  ,"out_EXECUTE_EXECUTE_LOOP_ACK                  ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
147  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ," in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
148  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ," in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
149  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ," in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ",Tcontext_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
150  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ," in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ",Tpacket_t         ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
151//ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_OPERATION            ," in_EXECUTE_EXECUTE_LOOP_OPERATION            ",Toperation_t      ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
152//ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_TYPE                 ," in_EXECUTE_EXECUTE_LOOP_TYPE                 ",Ttype_t           ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
153  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_FLAGS                ," in_EXECUTE_EXECUTE_LOOP_FLAGS                ",Tspecial_data_t   ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
154  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ," in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ",Texception_t      ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
155  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ," in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ",Tcontrol_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
156  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ," in_EXECUTE_EXECUTE_LOOP_ADDRESS              ",Taddress_t        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
157  ALLOC2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_DATA                 ," in_EXECUTE_EXECUTE_LOOP_DATA                 ",Tgeneral_data_t   ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
158  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_VAL                     ," in_INSERT_OOO_ENGINE_VAL                     ",Tcontrol_t          ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
159  ALLOC2_SC_SIGNAL(out_INSERT_OOO_ENGINE_ACK                     ,"out_INSERT_OOO_ENGINE_ACK                     ",Tcontrol_t          ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
160  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RD_USE                  ," in_INSERT_OOO_ENGINE_RD_USE                  ",Tcontrol_t          ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
161  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RD_NUM_REG              ," in_INSERT_OOO_ENGINE_RD_NUM_REG              ",Tgeneral_address_t  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
162  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RE_USE                  ," in_INSERT_OOO_ENGINE_RE_USE                  ",Tcontrol_t          ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
163  ALLOC2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RE_NUM_REG              ," in_INSERT_OOO_ENGINE_RE_NUM_REG              ",Tspecial_address_t  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
164  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_VAL                   ,"out_INSERT_EXECUTE_LOOP_VAL                   ",Tcontrol_t          ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
165  ALLOC3_SC_SIGNAL( in_INSERT_EXECUTE_LOOP_ACK                   ," in_INSERT_EXECUTE_LOOP_ACK                   ",Tcontrol_t          ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
166  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RD_USE                ,"out_INSERT_EXECUTE_LOOP_RD_USE                ",Tcontrol_t          ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
167  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ,"out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ",Tgeneral_address_t  ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
168  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_USE                ,"out_INSERT_EXECUTE_LOOP_RE_USE                ",Tcontrol_t          ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
169  ALLOC3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ,"out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ",Tspecial_address_t  ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
170
171 
172  /********************************************************
173   * Instanciation
174   ********************************************************/
175 
176  msg(_("<%s> : Instanciation of _Core_Glue.\n"),name.c_str());
177
178  (*(_Core_Glue->in_CLOCK))        (*(in_CLOCK));
179  (*(_Core_Glue->in_NRESET))       (*(in_NRESET));
180
181  if (_param->_have_port_front_end_id)
182  INSTANCE2_SC_SIGNAL(_Core_Glue,out_RENAME_FRONT_END_ID                       ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
183  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_FRONT_END_VAL             ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
184  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_FRONT_END_ACK             ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
185  if (_param->_have_port_context_id)
186  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
187  if (_param->_have_port_depth)
188  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_FRONT_END_DEPTH           ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
189  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
190  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
191  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
192  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
193  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
194  if (_param->_have_port_front_end_id)
195  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
196  if (_param->_have_port_context_id)
197  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
198  if (_param->_have_port_depth)
199  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
200  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
201  INSTANCE2_SC_SIGNAL(_Core_Glue, in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
202  INSTANCE2_SC_SIGNAL(_Core_Glue,out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
203  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_VAL                ,_param->_nb_front_end);
204  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_FRONT_END_ACK                ,_param->_nb_front_end);
205  if (_param->_have_port_context_id)
206  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ,_param->_nb_front_end);
207  if (_param->_have_port_depth)
208  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_DEPTH              ,_param->_nb_front_end);
209  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_TYPE               ,_param->_nb_front_end);
210  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ,_param->_nb_front_end);
211  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_ADDRESS            ,_param->_nb_front_end);
212  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ,_param->_nb_front_end);
213  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,_param->_nb_front_end);
214  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,_param->_nb_front_end);
215  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,_param->_nb_front_end);
216  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_VAL               ,_param->_nb_ooo_engine);
217  INSTANCE1_SC_SIGNAL(_Core_Glue,out_COMMIT_EVENT_OOO_ENGINE_ACK               ,_param->_nb_ooo_engine);
218  if (_param->_have_port_front_end_id)
219  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ,_param->_nb_ooo_engine);
220  if (_param->_have_port_context_id)
221  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ,_param->_nb_ooo_engine);
222  if (_param->_have_port_depth)
223  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ,_param->_nb_ooo_engine);
224  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_TYPE              ,_param->_nb_ooo_engine);
225  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ,_param->_nb_ooo_engine);
226  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ,_param->_nb_ooo_engine);
227  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ,_param->_nb_ooo_engine);
228  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ,_param->_nb_ooo_engine);
229  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
230  INSTANCE1_SC_SIGNAL(_Core_Glue, in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
231  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
232  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
233  if (_param->_have_port_front_end_id)
234  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
235  if (_param->_have_port_context_id)
236  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
237  if (_param->_have_port_rob_ptr)
238  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
239  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
240  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
241  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); 
242  if (_param->_have_port_load_queue_ptr)
243  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
244  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
245  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
246  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
247  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
248  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
249  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
250  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
251  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
252  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
253  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
254  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
255  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
256  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_VAL                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
257  INSTANCE2_SC_SIGNAL(_Core_Glue, in_ISSUE_EXECUTE_LOOP_ACK                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
258  if (_param->_have_port_context_id)
259  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
260  if (_param->_have_port_front_end_id)
261  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
262  if (_param->_have_port_ooo_engine_id)
263  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
264  if (_param->_have_port_rob_ptr)
265  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_PACKET_ID              ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
266  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_OPERATION              ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
267  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_TYPE                   ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
268  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
269  if (_param->_have_port_load_queue_ptr)
270  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
271  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
272  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
273  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_READ_RA                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
274  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
275  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_READ_RB                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
276  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
277  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_READ_RC                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
278  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
279  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_WRITE_RD               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
280  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
281  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_WRITE_RE               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
282  INSTANCE2_SC_SIGNAL(_Core_Glue,out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
283  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_VAL                    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
284  INSTANCE3_SC_SIGNAL(_Core_Glue, in_EXECUTE_OOO_ENGINE_ACK                    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
285  if (_param->_have_port_front_end_id)
286  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
287  if (_param->_have_port_context_id)
288  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
289  if (_param->_have_port_rob_ptr)
290  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_PACKET_ID              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
291//INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_TYPE                   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
292//INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_OPERATION              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
293  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_FLAGS                  ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
294  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_EXCEPTION              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
295  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
296  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_ADDRESS                ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
297  INSTANCE3_SC_SIGNAL(_Core_Glue,out_EXECUTE_OOO_ENGINE_DATA                   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
298  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_VAL                  ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
299  INSTANCE2_SC_SIGNAL(_Core_Glue,out_EXECUTE_EXECUTE_LOOP_ACK                  ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
300  if (_param->_have_port_context_id)
301  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
302  if (_param->_have_port_front_end_id)
303  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
304  if (_param->_have_port_ooo_engine_id)
305  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
306  if (_param->_have_port_rob_ptr)
307  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
308//INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_OPERATION            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
309//INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_TYPE                 ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
310  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_FLAGS                ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
311  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
312  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
313  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_ADDRESS              ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
314  INSTANCE2_SC_SIGNAL(_Core_Glue, in_EXECUTE_EXECUTE_LOOP_DATA                 ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
315  INSTANCE2_SC_SIGNAL(_Core_Glue, in_INSERT_OOO_ENGINE_VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
316  INSTANCE2_SC_SIGNAL(_Core_Glue,out_INSERT_OOO_ENGINE_ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
317  INSTANCE2_SC_SIGNAL(_Core_Glue, in_INSERT_OOO_ENGINE_RD_USE                  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
318  INSTANCE2_SC_SIGNAL(_Core_Glue, in_INSERT_OOO_ENGINE_RD_NUM_REG              ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
319  INSTANCE2_SC_SIGNAL(_Core_Glue, in_INSERT_OOO_ENGINE_RE_USE                  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
320  INSTANCE2_SC_SIGNAL(_Core_Glue, in_INSERT_OOO_ENGINE_RE_NUM_REG              ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
321  INSTANCE3_SC_SIGNAL(_Core_Glue,out_INSERT_EXECUTE_LOOP_VAL                   ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
322  INSTANCE3_SC_SIGNAL(_Core_Glue, in_INSERT_EXECUTE_LOOP_ACK                   ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
323  INSTANCE3_SC_SIGNAL(_Core_Glue,out_INSERT_EXECUTE_LOOP_RD_USE                ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
324  INSTANCE3_SC_SIGNAL(_Core_Glue,out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
325  INSTANCE3_SC_SIGNAL(_Core_Glue,out_INSERT_EXECUTE_LOOP_RE_USE                ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
326  INSTANCE3_SC_SIGNAL(_Core_Glue,out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
327 
328
329  msg(_("<%s> : Start Simulation ............\n"),name.c_str());
330   
331  Time * _time = new Time();
332
333  /********************************************************
334   * Simulation - Begin
335   ********************************************************/
336
337  // Initialisation
338
339  const uint32_t seed = 0;
340//const uint32_t seed = static_cast<uint32_t>(time(NULL));
341
342  srand(seed);
343
344  SC_START(0);
345  LABEL("Initialisation");
346
347  LABEL("Reset");
348  in_NRESET->write(0);
349  SC_START(5);
350  in_NRESET->write(1); 
351
352  LABEL("Test RENAME_FRONT_END_ID");
353  if (_param->_have_port_front_end_id)
354    for (uint32_t i=0; i<_param->_nb_front_end; ++i)
355      for (uint32_t j=0; j<_param->_nb_inst_decod [i]; ++j)
356        {
357          Tcontext_t id = out_RENAME_FRONT_END_ID [i][j]->read();
358          bool       find = false;
359
360          for (uint32_t x=0; x<_param->_nb_ooo_engine; ++x)
361            if ((id < _param->_ooo_engine_nb_front_end [x]) and    // Valid value
362                (_param->_translate_ooo_engine_num_front_end [x][id] == i)) // Correctness of translation
363              find = true;
364          TEST(bool,find,true);
365        }
366
367  LABEL("Loop of Test");
368
369  for (uint32_t iteration=0; iteration<NB_ITERATION; iteration ++)
370    {
371      LABEL("Iteration %d",iteration);
372
373      //---------------------------------------------------------------------------------
374      // BRANCH_COMPLETE : random input
375      //---------------------------------------------------------------------------------
376      for (uint32_t i=0; i<_param->_nb_front_end; ++i)
377        for (uint32_t j=0; j<_param->_front_end_nb_inst_branch_complete[i]; ++j)
378          {
379            in_BRANCH_COMPLETE_FRONT_END_ACK             [i][j]->write(rand()%2);
380            in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION [i][j]->write(rand()%2);
381          }
382
383      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
384        for (uint32_t j=0; j<_param->_ooo_engine_nb_inst_branch_complete[i]; ++j)
385          {
386            Tcontext_t front_end_id   = rand() % _param->_ooo_engine_nb_front_end [i];
387            Tcontext_t num_front_end  = _param->_translate_ooo_engine_num_front_end[i][front_end_id];
388            Tcontext_t context_id     = rand() % _param->_nb_context[num_front_end];
389
390            LABEL("BRANCH_COMPLETE_OOO_ENGINE [%d][%d]",i,j);
391            LABEL("  * front_end    : id %d, num %d",front_end_id,num_front_end);
392            LABEL("  * context      : id %d"        ,context_id);
393
394            in_BRANCH_COMPLETE_OOO_ENGINE_VAL          [i][j]->write(rand()%2);
395            in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID [i][j]->write(range<Tcontext_t>(front_end_id,_param->_size_front_end_id));
396            in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID   [i][j]->write(range<Tcontext_t>(context_id  ,_param->_size_context_id  ));
397            in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH        [i][j]->write(range<Tdepth_t  >(rand(),_param->_size_depth              ));
398            in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS      [i][j]->write(range<Taddress_t>(rand(),_param->_size_instruction_address));
399            in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE  [i][j]->write(rand()%2);
400          }
401
402      //---------------------------------------------------------------------------------
403      // COMMIT_EVENT : random input
404      //---------------------------------------------------------------------------------
405      for (uint32_t i=0; i<_param->_nb_front_end; ++i)
406        {
407          in_COMMIT_EVENT_FRONT_END_ACK             [i]->write(rand()%2);
408        }
409     
410      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
411        {
412          Tcontext_t front_end_id   = rand() % _param->_ooo_engine_nb_front_end [i];
413          Tcontext_t num_front_end  = _param->_translate_ooo_engine_num_front_end[i][front_end_id];
414          Tcontext_t context_id     = rand() % _param->_nb_context[num_front_end];
415
416          LABEL("COMMIT_EVENT_OOO_ENGINE [%d]",i);
417          LABEL("  * front_end    : id %d, num %d",front_end_id,num_front_end);
418          LABEL("  * context      : id %d"        ,context_id);
419
420          in_COMMIT_EVENT_OOO_ENGINE_VAL             [i]->write(rand()%2);
421          in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID    [i]->write(range<Tcontext_t>(front_end_id,_param->_size_front_end_id));
422          in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID      [i]->write(range<Tcontext_t>(context_id  ,_param->_size_context_id  ));
423          in_COMMIT_EVENT_OOO_ENGINE_DEPTH           [i]->write(range<Tdepth_t  >(rand(),_param->_size_depth              ));
424          in_COMMIT_EVENT_OOO_ENGINE_TYPE            [i]->write(range<Tevent_type_t>(rand(),_param->_size_event_type));
425          in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT   [i]->write(rand()%2);
426          in_COMMIT_EVENT_OOO_ENGINE_ADDRESS         [i]->write(range<Taddress_t>(rand(),_param->_size_instruction_address));
427          in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL[i]->write(rand()%2);
428          in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR    [i]->write(range<Taddress_t>(rand(),_param->_size_instruction_address));
429          in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL[i]->write(rand()%2);
430          in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR    [i]->write(range<Taddress_t>(rand(),_param->_size_instruction_address));
431        }
432
433      //---------------------------------------------------------------------------------
434      // EXECUTE : random input
435      //---------------------------------------------------------------------------------
436      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
437        for (uint32_t j=0; j<_param->_ooo_engine_nb_execute_loop[i]; ++j)
438          for (uint32_t k=0; k<_param->_nb_inst_execute [i][j]; ++j)
439            in_EXECUTE_OOO_ENGINE_ACK [i][j][k]->write(rand()%2);
440
441      for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
442        for (uint32_t j=0; j<_param->_nb_write_unit[i]; ++j)
443          {
444            in_EXECUTE_EXECUTE_LOOP_VAL           [i][j]->write(rand()%2);
445
446            Tcontext_t ooo_engine_id  = rand() % _param->_execute_loop_nb_ooo_engine [i];
447            Tcontext_t num_ooo_engine = _param->_translate_execute_loop_num_ooo_engine[i][ooo_engine_id];
448            Tcontext_t front_end_id   = rand() % _param->_ooo_engine_nb_front_end [num_ooo_engine];
449            Tcontext_t num_front_end  = _param->_translate_ooo_engine_num_front_end[num_ooo_engine][front_end_id];
450            Tcontext_t context_id     = rand() % _param->_nb_context[num_front_end];
451           
452            LABEL("EXECUTE_EXECUTE_LOOP [%d][%d]",i,j);
453            LABEL("  * ooo_engine   : id %d, num %d",ooo_engine_id,num_ooo_engine);
454            LABEL("  * front_end    : id %d, num %d",front_end_id,num_front_end);
455            LABEL("  * context      : id %d"        ,context_id);
456
457            in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID  [i][j]->write(range<Tcontext_t     >(front_end_id ,_param->_size_front_end_id       ));
458            in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID    [i][j]->write(range<Tcontext_t     >(context_id   ,_param->_size_context_id         ));
459            in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID [i][j]->write(range<Tcontext_t     >(ooo_engine_id,_param->_size_ooo_engine_id      ));
460            in_EXECUTE_EXECUTE_LOOP_PACKET_ID     [i][j]->write(range<Tpacket_t      >(rand(),_param->_size_rob_ptr            ));
461//          in_EXECUTE_EXECUTE_LOOP_OPERATION     [i][j]->write(range<Toperation_t   >(rand(),_param->_size_operation          ));
462//          in_EXECUTE_EXECUTE_LOOP_TYPE          [i][j]->write(range<Ttype_t        >(rand(),_param->_size_type               ));
463            in_EXECUTE_EXECUTE_LOOP_FLAGS         [i][j]->write(range<Tspecial_data_t>(rand(),_param->_size_special_data       ));
464            in_EXECUTE_EXECUTE_LOOP_EXCEPTION     [i][j]->write(range<Texception_t   >(rand(),_param->_size_exception          ));
465            in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE   [i][j]->write(rand()%2);
466            in_EXECUTE_EXECUTE_LOOP_ADDRESS       [i][j]->write(range<Tgeneral_data_t>(rand(),_param->_size_general_data       ));
467            in_EXECUTE_EXECUTE_LOOP_DATA          [i][j]->write(range<Tgeneral_data_t>(rand(),_param->_size_general_data       ));
468          }
469
470      //---------------------------------------------------------------------------------
471      // ISSUE : random input
472      //---------------------------------------------------------------------------------
473      for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
474        for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
475          in_ISSUE_EXECUTE_LOOP_ACK [i][j]->write(rand()%2);
476
477      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
478        for (uint32_t j=0; j<_param->_nb_inst_issue[i]; ++j)
479          {
480            Tcontext_t front_end_id   = rand() % _param->_ooo_engine_nb_front_end [i];
481            Tcontext_t num_front_end  = _param->_translate_ooo_engine_num_front_end[i][front_end_id];
482            Tcontext_t context_id     = rand() % _param->_nb_context[num_front_end];
483           
484            LABEL("ISSUE_OOO_ENGINE [%d][%d]",i,j);
485            LABEL("  * front_end    : id %d, num %d",front_end_id,num_front_end);
486            LABEL("  * context      : id %d"        ,context_id);
487
488            in_ISSUE_OOO_ENGINE_VAL                   [i][j]->write(rand()%2);
489            in_ISSUE_OOO_ENGINE_FRONT_END_ID          [i][j]->write(range<Tcontext_t     >(front_end_id ,_param->_size_front_end_id       ));
490            in_ISSUE_OOO_ENGINE_CONTEXT_ID            [i][j]->write(range<Tcontext_t     >(context_id   ,_param->_size_context_id         ));
491            in_ISSUE_OOO_ENGINE_PACKET_ID             [i][j]->write(range<Tpacket_t      >(rand(),_param->_size_rob_ptr            ));
492            in_ISSUE_OOO_ENGINE_TYPE                  [i][j]->write(range<Toperation_t   >(rand(),_param->_size_operation          ));
493            in_ISSUE_OOO_ENGINE_OPERATION             [i][j]->write(range<Ttype_t        >(rand(),_param->_size_type               ));
494            in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE [i][j]->write(range<Tlsq_ptr_t     >(rand(),_param->_size_store_queue_ptr    ));
495            in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE  [i][j]->write(range<Tlsq_ptr_t     >(rand(),_param->_size_load_queue_ptr     ));
496            in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT          [i][j]->write(rand()%2);
497            in_ISSUE_OOO_ENGINE_IMMEDIAT              [i][j]->write(i|(j<<_param->_size_ooo_engine_id));
498            in_ISSUE_OOO_ENGINE_READ_RA               [i][j]->write(rand()%2);
499            in_ISSUE_OOO_ENGINE_NUM_REG_RA            [i][j]->write(range<Tgeneral_address_t>(rand(),_param->_size_general_register));
500            in_ISSUE_OOO_ENGINE_READ_RB               [i][j]->write(rand()%2);
501            in_ISSUE_OOO_ENGINE_NUM_REG_RB            [i][j]->write(range<Tgeneral_address_t>(rand(),_param->_size_general_register));
502            in_ISSUE_OOO_ENGINE_READ_RC               [i][j]->write(rand()%2);
503            in_ISSUE_OOO_ENGINE_NUM_REG_RC            [i][j]->write(range<Tspecial_address_t>(rand(),_param->_size_special_register));
504            in_ISSUE_OOO_ENGINE_WRITE_RD              [i][j]->write(rand()%2);
505            in_ISSUE_OOO_ENGINE_NUM_REG_RD            [i][j]->write(range<Tgeneral_address_t>(rand(),_param->_size_general_register));
506            in_ISSUE_OOO_ENGINE_WRITE_RE              [i][j]->write(rand()%2);
507            in_ISSUE_OOO_ENGINE_NUM_REG_RE            [i][j]->write(range<Tspecial_address_t>(rand(),_param->_size_special_register));
508          }
509
510      //=================================================================================
511      // TEST
512      //=================================================================================
513      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
514        for (uint32_t j=0; j<_param->_ooo_engine_nb_inst_branch_complete[i]; ++j)
515          {
516            uint32_t id= in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID [i][j]->read();
517            uint32_t x = _param->_translate_ooo_engine_num_front_end[i][id];
518
519            TEST(Tcontrol_t,out_BRANCH_COMPLETE_FRONT_END_VAL              [x][j]->read(),
520                             in_BRANCH_COMPLETE_OOO_ENGINE_VAL             [i][j]->read());
521            TEST(Tcontext_t,out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID       [x][j]->read(),
522                             in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID      [i][j]->read());
523            TEST(Tdepth_t  ,out_BRANCH_COMPLETE_FRONT_END_DEPTH            [x][j]->read(),
524                             in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH           [i][j]->read());
525            TEST(Taddress_t,out_BRANCH_COMPLETE_FRONT_END_ADDRESS          [x][j]->read(),
526                             in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS         [i][j]->read());
527            TEST(Tcontrol_t,out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE      [x][j]->read(),
528                             in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE     [i][j]->read());
529            TEST(Tcontrol_t,out_BRANCH_COMPLETE_OOO_ENGINE_ACK             [i][j]->read(),
530                             in_BRANCH_COMPLETE_FRONT_END_ACK              [x][j]->read());
531            TEST(Tcontrol_t,out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION [i][j]->read(),
532                             in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION  [x][j]->read());
533          }
534
535      for (uint32_t i=0; i<_param->_nb_ooo_engine; ++i)
536        {
537            uint32_t id= in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID [i]->read();
538            uint32_t x = _param->_translate_ooo_engine_num_front_end[i][id];
539
540
541            TEST(Tcontrol_t,out_COMMIT_EVENT_FRONT_END_VAL                 [x]->read(),
542                             in_COMMIT_EVENT_OOO_ENGINE_VAL                [i]->read());
543            TEST(Tcontext_t,out_COMMIT_EVENT_FRONT_END_CONTEXT_ID          [x]->read(),
544                             in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID         [i]->read());
545            TEST(Tdepth_t  ,out_COMMIT_EVENT_FRONT_END_DEPTH               [x]->read(),
546                             in_COMMIT_EVENT_OOO_ENGINE_DEPTH              [i]->read());
547            TEST(Tcontrol_t,out_COMMIT_EVENT_OOO_ENGINE_ACK                [i]->read(),
548                             in_COMMIT_EVENT_FRONT_END_ACK                 [x]->read());
549
550            TEST(Tevent_type_t,out_COMMIT_EVENT_FRONT_END_TYPE             [x]->read(),
551                                in_COMMIT_EVENT_OOO_ENGINE_TYPE            [i]->read());
552            TEST(Tcontrol_t   ,out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT    [x]->read(),
553                                in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT   [i]->read());
554            TEST(Taddress_t   ,out_COMMIT_EVENT_FRONT_END_ADDRESS          [x]->read(),
555                                in_COMMIT_EVENT_OOO_ENGINE_ADDRESS         [i]->read());
556            TEST(Tcontrol_t   ,out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL [x]->read(),
557                                in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL[i]->read());
558            TEST(Taddress_t   ,out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR     [x]->read(),
559                                in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR    [i]->read());
560            TEST(Tcontrol_t   ,out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL [x]->read(),
561                                in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL[i]->read());
562            TEST(Taddress_t   ,out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR     [x]->read(),
563                                in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR    [i]->read());
564        }
565
566      for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
567        for (uint32_t j=0; j<_param->_nb_write_unit[i]; ++j)
568          {
569            Tcontext_t id = in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID [i][j]->read();
570            Tcontext_t x  = _param->_translate_execute_loop_num_ooo_engine[i][id];
571            Tcontext_t y  = _param->_translate_num_execute_loop_to_ooo_engine_execute_loop_id[i][id];
572
573            TEST(Tcontrol_t     ,out_EXECUTE_OOO_ENGINE_VAL          [x][y][j]->read(),
574                                  in_EXECUTE_EXECUTE_LOOP_VAL           [i][j]->read());
575            TEST(Tcontext_t     ,out_EXECUTE_OOO_ENGINE_FRONT_END_ID [x][y][j]->read(),
576                                  in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID  [i][j]->read());
577            TEST(Tcontext_t     ,out_EXECUTE_OOO_ENGINE_CONTEXT_ID   [x][y][j]->read(),
578                                  in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID    [i][j]->read());
579            TEST(Tpacket_t      ,out_EXECUTE_OOO_ENGINE_PACKET_ID    [x][y][j]->read(),
580                                  in_EXECUTE_EXECUTE_LOOP_PACKET_ID     [i][j]->read());
581//          TEST(Ttype_t        ,out_EXECUTE_OOO_ENGINE_TYPE         [x][y][j]->read(),
582//                                in_EXECUTE_EXECUTE_LOOP_TYPE          [i][j]->read());
583//          TEST(Toperation_t   ,out_EXECUTE_OOO_ENGINE_OPERATION    [x][y][j]->read(),
584//                                in_EXECUTE_EXECUTE_LOOP_OPERATION     [i][j]->read());
585            TEST(Tspecial_data_t,out_EXECUTE_OOO_ENGINE_FLAGS        [x][y][j]->read(),
586                                  in_EXECUTE_EXECUTE_LOOP_FLAGS         [i][j]->read());
587            TEST(Texception_t   ,out_EXECUTE_OOO_ENGINE_EXCEPTION    [x][y][j]->read(),
588                                  in_EXECUTE_EXECUTE_LOOP_EXCEPTION     [i][j]->read());
589            TEST(Tcontrol_t     ,out_EXECUTE_OOO_ENGINE_NO_SEQUENCE  [x][y][j]->read(),
590                                  in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE   [i][j]->read());
591            TEST(Tgeneral_data_t,out_EXECUTE_OOO_ENGINE_ADDRESS      [x][y][j]->read(),
592                                  in_EXECUTE_EXECUTE_LOOP_ADDRESS       [i][j]->read());
593            TEST(Tgeneral_data_t,out_EXECUTE_OOO_ENGINE_DATA         [x][y][j]->read(),
594                                  in_EXECUTE_EXECUTE_LOOP_DATA          [i][j]->read());
595            TEST(Tcontrol_t     ,out_EXECUTE_EXECUTE_LOOP_ACK           [i][j]->read()   ,
596                                  in_EXECUTE_OOO_ENGINE_ACK          [x][y][j]->read());
597          }
598
599      for (uint32_t i=0; i<_param->_nb_execute_loop; ++i)
600        for (uint32_t j=0; j<_param->_nb_read_unit[i]; ++j)
601          // Test transaction
602          if (out_ISSUE_EXECUTE_LOOP_VAL [i][j]->read() and
603               in_ISSUE_EXECUTE_LOOP_ACK [i][j]->read())
604            {
605              Tgeneral_data_t imm = out_ISSUE_EXECUTE_LOOP_IMMEDIAT [i][j]->read();
606              Tcontext_t      x   = range<Tcontext_t>(imm,_param->_size_ooo_engine_id);
607              Tcontext_t      y   = imm>>_param->_size_ooo_engine_id; // port_issue
608
609              LABEL("ISSUE - transaction");
610              LABEL("  * execute_loop : %d",i);
611              LABEL("  * read_unit    : %d",j);
612              LABEL("  * ooo_engine   : %d",x);
613              LABEL("  * port_issue   : %d",y);
614             
615              TEST(Tcontext_t,x,_param->_translate_execute_loop_num_ooo_engine[i][out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID [i][j]->read()]);
616             
617              TEST(bool,_param->_table_dispatch [x][y][i][j],true);
618
619              TEST(Tcontrol_t        , in_ISSUE_OOO_ENGINE_VAL                      [x][y]->read(),1);
620              TEST(Tcontrol_t        ,out_ISSUE_OOO_ENGINE_ACK                      [x][y]->read(),1);
621
622              TEST(Tcontext_t        ,out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           [i][j]->read(), 
623                                       in_ISSUE_OOO_ENGINE_FRONT_END_ID             [x][y]->read());
624              TEST(Tcontext_t        ,out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             [i][j]->read(), 
625                                       in_ISSUE_OOO_ENGINE_CONTEXT_ID               [x][y]->read());
626              TEST(Tpacket_t         ,out_ISSUE_EXECUTE_LOOP_PACKET_ID              [i][j]->read(), 
627                                       in_ISSUE_OOO_ENGINE_PACKET_ID                [x][y]->read());
628              TEST(Ttype_t           ,out_ISSUE_EXECUTE_LOOP_TYPE                   [i][j]->read(), 
629                                       in_ISSUE_OOO_ENGINE_TYPE                     [x][y]->read());
630              TEST(Toperation_t      ,out_ISSUE_EXECUTE_LOOP_OPERATION              [i][j]->read(), 
631                                       in_ISSUE_OOO_ENGINE_OPERATION                [x][y]->read());
632              TEST(Tlsq_ptr_t        ,out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  [i][j]->read(), 
633                                       in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    [x][y]->read());
634              TEST(Tlsq_ptr_t        ,out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   [i][j]->read(), 
635                                       in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     [x][y]->read());
636              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           [i][j]->read(), 
637                                       in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             [x][y]->read());
638              TEST(Tgeneral_data_t   ,out_ISSUE_EXECUTE_LOOP_IMMEDIAT               [i][j]->read(), 
639                                       in_ISSUE_OOO_ENGINE_IMMEDIAT                 [x][y]->read());
640              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_READ_RA                [i][j]->read(), 
641                                       in_ISSUE_OOO_ENGINE_READ_RA                  [x][y]->read());
642              TEST(Tgeneral_address_t,out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             [i][j]->read(), 
643                                       in_ISSUE_OOO_ENGINE_NUM_REG_RA               [x][y]->read());
644              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_READ_RB                [i][j]->read(), 
645                                       in_ISSUE_OOO_ENGINE_READ_RB                  [x][y]->read());
646              TEST(Tgeneral_address_t,out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             [i][j]->read(), 
647                                       in_ISSUE_OOO_ENGINE_NUM_REG_RB               [x][y]->read());
648              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_READ_RC                [i][j]->read(), 
649                                       in_ISSUE_OOO_ENGINE_READ_RC                  [x][y]->read());
650              TEST(Tspecial_address_t,out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             [i][j]->read(), 
651                                       in_ISSUE_OOO_ENGINE_NUM_REG_RC               [x][y]->read());
652              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_WRITE_RD               [i][j]->read(), 
653                                       in_ISSUE_OOO_ENGINE_WRITE_RD                 [x][y]->read());
654              TEST(Tgeneral_address_t,out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             [i][j]->read(), 
655                                       in_ISSUE_OOO_ENGINE_NUM_REG_RD               [x][y]->read());
656              TEST(Tcontrol_t        ,out_ISSUE_EXECUTE_LOOP_WRITE_RE               [i][j]->read(), 
657                                       in_ISSUE_OOO_ENGINE_WRITE_RE                 [x][y]->read());
658              TEST(Tspecial_address_t,out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             [i][j]->read(), 
659                                       in_ISSUE_OOO_ENGINE_NUM_REG_RE               [x][y]->read());
660            }
661
662      SC_START(1);
663    }
664
665  /********************************************************
666   * Simulation - End
667   ********************************************************/
668
669  TEST_OK ("End of Simulation");
670  delete _time;
671
672  msg(_("<%s> : ............ Stop Simulation\n"),name.c_str());
673
674  delete in_CLOCK;
675  delete in_NRESET;
676
677  DELETE2_SC_SIGNAL(out_RENAME_FRONT_END_ID                       ,_param->_nb_front_end,_param->_nb_inst_decod[it1]);
678  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_VAL             ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
679  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_FRONT_END_ACK             ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
680  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_CONTEXT_ID      ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
681  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_DEPTH           ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
682  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_ADDRESS         ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
683  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE     ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
684  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);
685  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_VAL            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
686  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_OOO_ENGINE_ACK            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
687  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_FRONT_END_ID   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
688  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_CONTEXT_ID     ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
689  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_DEPTH          ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
690  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_ADDRESS        ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
691  DELETE2_SC_SIGNAL( in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
692  DELETE2_SC_SIGNAL(out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]);
693  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_VAL                ,_param->_nb_front_end);
694  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_FRONT_END_ACK                ,_param->_nb_front_end);
695  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_CONTEXT_ID         ,_param->_nb_front_end);
696  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_DEPTH              ,_param->_nb_front_end);
697  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_TYPE               ,_param->_nb_front_end);
698  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_IS_DELAY_SLOT      ,_param->_nb_front_end);
699  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS            ,_param->_nb_front_end);
700  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR_VAL   ,_param->_nb_front_end);
701  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EPCR       ,_param->_nb_front_end);
702  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL   ,_param->_nb_front_end);
703  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR       ,_param->_nb_front_end);
704  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_VAL               ,_param->_nb_ooo_engine);
705  DELETE1_SC_SIGNAL(out_COMMIT_EVENT_OOO_ENGINE_ACK               ,_param->_nb_ooo_engine);
706  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_FRONT_END_ID      ,_param->_nb_ooo_engine);
707  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_CONTEXT_ID        ,_param->_nb_ooo_engine);
708  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_DEPTH             ,_param->_nb_ooo_engine);
709  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_TYPE              ,_param->_nb_ooo_engine);
710  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_IS_DELAY_SLOT     ,_param->_nb_ooo_engine);
711  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS           ,_param->_nb_ooo_engine);
712  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR_VAL  ,_param->_nb_ooo_engine);
713  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EPCR      ,_param->_nb_ooo_engine);
714  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL  ,_param->_nb_ooo_engine);
715  DELETE1_SC_SIGNAL( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR      ,_param->_nb_ooo_engine);
716  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_VAL                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
717  DELETE2_SC_SIGNAL(out_ISSUE_OOO_ENGINE_ACK                      ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
718  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_FRONT_END_ID             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
719  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_CONTEXT_ID               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
720  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_PACKET_ID                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
721  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_TYPE                     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
722  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_OPERATION                ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
723  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_STORE_QUEUE_PTR_WRITE    ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
724  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_LOAD_QUEUE_PTR_WRITE     ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
725  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_HAS_IMMEDIAT             ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
726  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_IMMEDIAT                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
727  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RA                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
728  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RA               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
729  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RB                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
730  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RB               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
731  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_READ_RC                  ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
732  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RC               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
733  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RD                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
734  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RD               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
735  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_WRITE_RE                 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
736  DELETE2_SC_SIGNAL( in_ISSUE_OOO_ENGINE_NUM_REG_RE               ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);
737  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_VAL                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
738  DELETE2_SC_SIGNAL( in_ISSUE_EXECUTE_LOOP_ACK                    ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
739  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_CONTEXT_ID             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
740  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_FRONT_END_ID           ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
741  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_OOO_ENGINE_ID          ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
742  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_PACKET_ID              ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
743  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_OPERATION              ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
744  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_TYPE                   ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
745  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_STORE_QUEUE_PTR_WRITE  ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
746  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_LOAD_QUEUE_PTR_WRITE   ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
747  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_HAS_IMMEDIAT           ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
748  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_IMMEDIAT               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
749  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RA                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
750  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RA             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
751  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RB                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
752  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RB             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
753  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_READ_RC                ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
754  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RC             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
755  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_WRITE_RD               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
756  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RD             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
757  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_WRITE_RE               ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
758  DELETE2_SC_SIGNAL(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE             ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]);
759  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_VAL                    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
760  DELETE3_SC_SIGNAL( in_EXECUTE_OOO_ENGINE_ACK                    ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
761  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_FRONT_END_ID           ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
762  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_CONTEXT_ID             ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
763  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_PACKET_ID              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
764//DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_TYPE                   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
765//DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_OPERATION              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
766  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_FLAGS                  ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
767  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_EXCEPTION              ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
768  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_NO_SEQUENCE            ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
769  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_ADDRESS                ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
770  DELETE3_SC_SIGNAL(out_EXECUTE_OOO_ENGINE_DATA                   ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);
771  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_VAL                  ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
772  DELETE2_SC_SIGNAL(out_EXECUTE_EXECUTE_LOOP_ACK                  ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
773  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_CONTEXT_ID           ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
774  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_FRONT_END_ID         ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
775  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_OOO_ENGINE_ID        ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
776  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_PACKET_ID            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
777//DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_OPERATION            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
778//DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_TYPE                 ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
779  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_FLAGS                ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
780  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_EXCEPTION            ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
781  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_NO_SEQUENCE          ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
782  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_ADDRESS              ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
783  DELETE2_SC_SIGNAL( in_EXECUTE_EXECUTE_LOOP_DATA                 ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]);
784  DELETE2_SC_SIGNAL( in_INSERT_OOO_ENGINE_VAL                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
785  DELETE2_SC_SIGNAL(out_INSERT_OOO_ENGINE_ACK                     ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
786  DELETE2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RD_USE                  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
787  DELETE2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RD_NUM_REG              ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
788  DELETE2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RE_USE                  ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
789  DELETE2_SC_SIGNAL( in_INSERT_OOO_ENGINE_RE_NUM_REG              ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);
790  DELETE3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_VAL                   ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
791  DELETE3_SC_SIGNAL( in_INSERT_EXECUTE_LOOP_ACK                   ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
792  DELETE3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RD_USE                ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
793  DELETE3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RD_NUM_REG            ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
794  DELETE3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_USE                ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
795  DELETE3_SC_SIGNAL(out_INSERT_EXECUTE_LOOP_RE_NUM_REG            ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]);
796    }
797#endif
798
799  delete _Core_Glue;
800#ifdef STATISTICS
801  delete _parameters_statistics;
802#endif
803}
Note: See TracBrowser for help on using the repository browser.