Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/SelfTest/src/test.cpp
r82 r88 84 84 #endif 85 85 86 Tusage_t _usage = USE_ALL; 87 88 // _usage = usage_unset(_usage,USE_SYSTEMC ); 89 // _usage = usage_unset(_usage,USE_VHDL ); 90 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); 91 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT); 92 // _usage = usage_unset(_usage,USE_POSITION ); 93 _usage = usage_unset(_usage,USE_STATISTICS ); 94 // _usage = usage_unset(_usage,USE_INFORMATION ); 95 86 96 Read_unit_to_Execution_unit * _Read_unit_to_Execution_unit = new Read_unit_to_Execution_unit 87 97 (name.c_str(), … … 90 100 #endif 91 101 _param, 92 USE_ALL);102 _usage); 93 103 94 104 #ifdef SYSTEMC … … 101 111 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 102 112 103 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_VAL ," in_READ_UNIT_OUT_VAL" ,Tcontrol_t ,_param->_nb_read_unit);104 ALLOC 1_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,"out_READ_UNIT_OUT_ACK" ,Tcontrol_t ,_param->_nb_read_unit);105 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ," in_READ_UNIT_OUT_CONTEXT_ID" ,Tcontext_t ,_param->_nb_read_unit);106 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ," in_READ_UNIT_OUT_FRONT_END_ID" ,Tcontext_t ,_param->_nb_read_unit);107 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ," in_READ_UNIT_OUT_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_read_unit);108 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ," in_READ_UNIT_OUT_PACKET_ID" ,Tpacket_t ,_param->_nb_read_unit);109 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ," in_READ_UNIT_OUT_OPERATION" ,Toperation_t ,_param->_nb_read_unit);110 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ," in_READ_UNIT_OUT_TYPE" ,Ttype_t ,_param->_nb_read_unit);111 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE," in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_read_unit);112 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_read_unit);113 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ," in_READ_UNIT_OUT_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_read_unit);114 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ," in_READ_UNIT_OUT_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_read_unit);115 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ," in_READ_UNIT_OUT_DATA_RA" ,Tgeneral_data_t ,_param->_nb_read_unit);116 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ," in_READ_UNIT_OUT_DATA_RB" ,Tgeneral_data_t ,_param->_nb_read_unit);117 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ," in_READ_UNIT_OUT_DATA_RC" ,Tspecial_data_t ,_param->_nb_read_unit);118 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ," in_READ_UNIT_OUT_WRITE_RD" ,Tcontrol_t ,_param->_nb_read_unit);119 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ," in_READ_UNIT_OUT_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_read_unit);120 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ," in_READ_UNIT_OUT_WRITE_RE" ,Tcontrol_t ,_param->_nb_read_unit);121 ALLOC 1_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ," in_READ_UNIT_OUT_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_read_unit);122 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,"out_EXECUTE_UNIT_IN_VAL" ,Tcontrol_t ,_param->_nb_execute_unit);123 ALLOC 1_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ," in_EXECUTE_UNIT_IN_ACK" ,Tcontrol_t ,_param->_nb_execute_unit);124 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"out_EXECUTE_UNIT_IN_CONTEXT_ID" ,Tcontext_t ,_param->_nb_execute_unit);125 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"out_EXECUTE_UNIT_IN_FRONT_END_ID" ,Tcontext_t ,_param->_nb_execute_unit);126 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"out_EXECUTE_UNIT_IN_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_execute_unit);127 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,"out_EXECUTE_UNIT_IN_PACKET_ID" ,Tpacket_t ,_param->_nb_execute_unit);128 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,"out_EXECUTE_UNIT_IN_OPERATION" ,Toperation_t ,_param->_nb_execute_unit);129 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,"out_EXECUTE_UNIT_IN_TYPE" ,Ttype_t ,_param->_nb_execute_unit);130 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_execute_unit);131 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_execute_unit);132 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"out_EXECUTE_UNIT_IN_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_execute_unit);133 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,"out_EXECUTE_UNIT_IN_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_execute_unit);134 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,"out_EXECUTE_UNIT_IN_DATA_RA" ,Tgeneral_data_t ,_param->_nb_execute_unit);135 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,"out_EXECUTE_UNIT_IN_DATA_RB" ,Tgeneral_data_t ,_param->_nb_execute_unit);136 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,"out_EXECUTE_UNIT_IN_DATA_RC" ,Tspecial_data_t ,_param->_nb_execute_unit);137 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,"out_EXECUTE_UNIT_IN_WRITE_RD" ,Tcontrol_t ,_param->_nb_execute_unit);138 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"out_EXECUTE_UNIT_IN_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_execute_unit);139 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,"out_EXECUTE_UNIT_IN_WRITE_RE" ,Tcontrol_t ,_param->_nb_execute_unit);140 ALLOC 1_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"out_EXECUTE_UNIT_IN_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_execute_unit);113 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_VAL ," in_READ_UNIT_OUT_VAL" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 114 ALLOC2_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,"out_READ_UNIT_OUT_ACK" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 115 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ," in_READ_UNIT_OUT_CONTEXT_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 116 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ," in_READ_UNIT_OUT_FRONT_END_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 117 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ," in_READ_UNIT_OUT_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 118 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ," in_READ_UNIT_OUT_PACKET_ID" ,Tpacket_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 119 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ," in_READ_UNIT_OUT_OPERATION" ,Toperation_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 120 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ," in_READ_UNIT_OUT_TYPE" ,Ttype_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 121 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE," in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 122 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 123 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ," in_READ_UNIT_OUT_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 124 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ," in_READ_UNIT_OUT_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 125 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ," in_READ_UNIT_OUT_DATA_RA" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 126 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ," in_READ_UNIT_OUT_DATA_RB" ,Tgeneral_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 127 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ," in_READ_UNIT_OUT_DATA_RC" ,Tspecial_data_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 128 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ," in_READ_UNIT_OUT_WRITE_RD" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 129 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ," in_READ_UNIT_OUT_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 130 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ," in_READ_UNIT_OUT_WRITE_RE" ,Tcontrol_t ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 131 ALLOC2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ," in_READ_UNIT_OUT_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 132 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,"out_EXECUTE_UNIT_IN_VAL" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 133 ALLOC2_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ," in_EXECUTE_UNIT_IN_ACK" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 134 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,"out_EXECUTE_UNIT_IN_CONTEXT_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 135 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,"out_EXECUTE_UNIT_IN_FRONT_END_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 136 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,"out_EXECUTE_UNIT_IN_OOO_ENGINE_ID" ,Tcontext_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 137 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,"out_EXECUTE_UNIT_IN_PACKET_ID" ,Tpacket_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 138 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,"out_EXECUTE_UNIT_IN_OPERATION" ,Toperation_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 139 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,"out_EXECUTE_UNIT_IN_TYPE" ,Ttype_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 140 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,"out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE",Tlsq_ptr_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 141 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE" ,Tlsq_ptr_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 142 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,"out_EXECUTE_UNIT_IN_HAS_IMMEDIAT" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 143 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,"out_EXECUTE_UNIT_IN_IMMEDIAT" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 144 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,"out_EXECUTE_UNIT_IN_DATA_RA" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 145 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,"out_EXECUTE_UNIT_IN_DATA_RB" ,Tgeneral_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 146 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,"out_EXECUTE_UNIT_IN_DATA_RC" ,Tspecial_data_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 147 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,"out_EXECUTE_UNIT_IN_WRITE_RD" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 148 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"out_EXECUTE_UNIT_IN_NUM_REG_RD" ,Tgeneral_address_t,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 149 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,"out_EXECUTE_UNIT_IN_WRITE_RE" ,Tcontrol_t ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 150 ALLOC2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,"out_EXECUTE_UNIT_IN_NUM_REG_RE" ,Tspecial_address_t,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 141 151 142 152 … … 150 160 (*(_Read_unit_to_Execution_unit->in_NRESET)) (*(in_NRESET)); 151 161 152 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit);153 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit);162 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 163 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 154 164 if (_param->_have_port_context_id) 155 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit);165 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 156 166 if (_param->_have_port_front_end_id) 157 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit);167 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 158 168 if (_param->_have_port_ooo_engine_id) 159 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit);160 if (_param->_have_port_ packet_id)161 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit);162 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit);163 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit);164 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit);169 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 170 if (_param->_have_port_rob_ptr ) 171 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 172 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 173 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 174 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 165 175 if (_param->_have_port_load_queue_ptr) 166 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit);167 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit);168 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit);169 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit);170 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit);171 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit);172 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit);173 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit);174 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit);175 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit);176 177 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit);178 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit, in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit);176 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 177 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 178 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 179 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 180 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 181 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 182 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 183 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 184 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 185 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 186 187 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 188 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit, in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 179 189 if (_param->_have_port_context_id) 180 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit);190 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 181 191 if (_param->_have_port_front_end_id) 182 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit);192 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 183 193 if (_param->_have_port_ooo_engine_id) 184 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit);185 if (_param->_have_port_ packet_id)186 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit);187 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit);188 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit);189 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit);194 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 195 if (_param->_have_port_rob_ptr ) 196 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 197 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 198 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 199 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 190 200 if (_param->_have_port_load_queue_ptr) 191 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit);192 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit);193 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit);194 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit);195 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit);196 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit);197 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit);198 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit);199 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit);200 INSTANCE 1_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit);201 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 202 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 203 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 204 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 205 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 206 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 207 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 208 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 209 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 210 INSTANCE2_SC_SIGNAL(_Read_unit_to_Execution_unit,out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 201 211 202 212 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); … … 222 232 223 233 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 224 for (uint32_t j=0; j<_param->_nb_execute_unit; j++) 225 if (_param->_table_routing[i][j]) 226 for (uint32_t k=0; k<_param->_nb_thread; k++) 227 if (_param->_table_execute_thread[j][k]) 228 { 229 read_unit_thread [i].insert(k); 230 231 for (uint32_t l=0; l<_param->_nb_type; l++) 232 if (_param->_table_execute_type[j][l]) 233 read_unit_type [i][k].insert(l); 234 } 234 for (uint32_t x=0; x<_param->_nb_execute_unit; x++) 235 for (uint32_t y=0; y<_param->_nb_execute_unit_port[x]; y++) 236 if (_param->_table_routing[i][x][y]) 237 for (uint32_t k=0; k<_param->_nb_thread; k++) 238 if (_param->_table_execute_thread[x][k]) 239 { 240 read_unit_thread [i].insert(k); 241 242 for (uint32_t l=0; l<_param->_nb_type; l++) 243 if (_param->_table_execute_type[x][l]) 244 read_unit_type [i][k].insert(l); 245 } 235 246 //bool ** _table_routing ; //array [nb_read_unit][nb_execute_unit] 236 247 //bool ** _table_execute_type ; //array [nb_execute_unit][nb_type] … … 251 262 LABEL("Iteration %d",iteration); 252 263 253 list<entry_t> request [_param->_nb_read_unit] ;264 list<entry_t> request [_param->_nb_read_unit][_param->_max_nb_read_unit_port]; 254 265 255 266 uint32_t nb_request_in; 256 267 for (nb_request_in=0; nb_request_in < _param->_nb_packet; ) 257 268 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 258 { 259 if (nb_request_in >= _param->_nb_packet) 260 break; 261 262 Tcontext_t context_id ; 263 Tcontext_t front_end_id ; 264 Tcontext_t ooo_engine_id; 265 Tcontext_t num_thread ; 266 267 // Find compatible thread 268 do 269 { 270 context_id = range<Tcontext_t> (rand(), _param->_size_context_id ); 271 front_end_id = range<Tcontext_t> (rand(), _param->_size_front_end_id ); 272 ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id); 273 num_thread = get_num_thread (context_id , _param->_size_context_id , 274 front_end_id , _param->_size_front_end_id , 275 ooo_engine_id, _param->_size_ooo_engine_id); 276 } 277 while (read_unit_thread[i].find(num_thread) == read_unit_thread[i].end()); 278 279 Ttype_t type; 280 281 // Find a compatible type 282 do 283 { 284 type = range<Ttype_t> (rand(), _param->_size_type); 285 } 286 while (read_unit_type[i][num_thread].find(type) == read_unit_type[i][num_thread].end()); 287 288 request[i].push_back(entry_t (context_id , 289 front_end_id , 290 ooo_engine_id, 291 nb_request_in, 292 range<Toperation_t > (rand(), _param->_size_operation ), 293 type, 294 range<Tlsq_ptr_t > (rand(), _param->_size_store_queue ), 295 range<Tlsq_ptr_t > (rand(), _param->_size_load_queue ), 296 range<Tcontrol_t > (rand(), 2 ), 297 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 298 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 299 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 300 range<Tspecial_data_t > (rand(), _param->_size_special_data ), 301 range<Tcontrol_t > (rand(), 2 ), 302 range<Tgeneral_address_t> (rand(), _param->_size_general_register), 303 range<Tcontrol_t > (rand(), 2 ), 304 range<Tspecial_address_t> (rand(), _param->_size_special_register) 305 )); 306 307 nb_request_in++; 308 } 269 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 270 { 271 if (nb_request_in >= _param->_nb_packet) 272 break; 273 274 Tcontext_t context_id ; 275 Tcontext_t front_end_id ; 276 Tcontext_t ooo_engine_id; 277 Tcontext_t num_thread ; 278 279 // Find compatible thread 280 do 281 { 282 context_id = range<Tcontext_t> (rand(), _param->_size_context_id ); 283 front_end_id = range<Tcontext_t> (rand(), _param->_size_front_end_id ); 284 ooo_engine_id = range<Tcontext_t> (rand(), _param->_size_ooo_engine_id); 285 num_thread = get_num_thread (context_id , _param->_size_context_id , 286 front_end_id , _param->_size_front_end_id , 287 ooo_engine_id, _param->_size_ooo_engine_id); 288 } 289 while (read_unit_thread[i].find(num_thread) == read_unit_thread[i].end()); 290 291 Ttype_t type; 292 293 // Find a compatible type 294 do 295 { 296 type = range<Ttype_t> (rand(), _param->_size_type); 297 } 298 while (read_unit_type[i][num_thread].find(type) == read_unit_type[i][num_thread].end()); 299 300 request[i][j].push_back(entry_t (context_id , 301 front_end_id , 302 ooo_engine_id, 303 nb_request_in, 304 range<Toperation_t > (rand(), _param->_size_operation ), 305 type, 306 range<Tlsq_ptr_t > (rand(), (1<<_param->_size_store_queue_ptr)), 307 range<Tlsq_ptr_t > (rand(), (1<<_param->_size_load_queue_ptr )), 308 range<Tcontrol_t > (rand(), 2 ), 309 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 310 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 311 range<Tgeneral_data_t > (rand(), _param->_size_general_data ), 312 range<Tspecial_data_t > (rand(), _param->_size_special_data ), 313 range<Tcontrol_t > (rand(), 2 ), 314 range<Tgeneral_address_t> (rand(), _param->_size_general_register), 315 range<Tcontrol_t > (rand(), 2 ), 316 range<Tspecial_address_t> (rand(), _param->_size_special_register) 317 )); 318 319 nb_request_in++; 320 } 309 321 310 322 uint32_t nb_request_out = 0; … … 313 325 { 314 326 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 315 { 316 bool val = not request[i].empty() and ((rand()%100) < percent_transaction_in); 327 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 328 { 329 bool val = not request[i][j].empty() and ((rand()%100) < percent_transaction_in); 317 330 318 in_READ_UNIT_OUT_VAL [i]->write(val);319 320 331 in_READ_UNIT_OUT_VAL [i][j]->write(val); 332 333 if (val) 321 334 { 322 in_READ_UNIT_OUT_CONTEXT_ID [i] ->write(request[i].front()._context_id );323 in_READ_UNIT_OUT_FRONT_END_ID [i] ->write(request[i].front()._front_end_id );324 in_READ_UNIT_OUT_OOO_ENGINE_ID [i] ->write(request[i].front()._ooo_engine_id );325 in_READ_UNIT_OUT_PACKET_ID [i] ->write(request[i].front()._packet_id );326 in_READ_UNIT_OUT_OPERATION [i] ->write(request[i].front()._operation );327 in_READ_UNIT_OUT_TYPE [i] ->write(request[i].front()._type );328 in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE[i] ->write(request[i].front()._store_queue_ptr_write);335 in_READ_UNIT_OUT_CONTEXT_ID [i][j] ->write(request[i][j].front()._context_id ); 336 in_READ_UNIT_OUT_FRONT_END_ID [i][j] ->write(request[i][j].front()._front_end_id ); 337 in_READ_UNIT_OUT_OOO_ENGINE_ID [i][j] ->write(request[i][j].front()._ooo_engine_id ); 338 in_READ_UNIT_OUT_PACKET_ID [i][j] ->write(request[i][j].front()._packet_id ); 339 in_READ_UNIT_OUT_OPERATION [i][j] ->write(request[i][j].front()._operation ); 340 in_READ_UNIT_OUT_TYPE [i][j] ->write(request[i][j].front()._type ); 341 in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE[i][j] ->write(request[i][j].front()._store_queue_ptr_write); 329 342 if (_param->_have_port_load_queue_ptr) 330 in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i] ->write(request[i].front()._load_queue_ptr_write );331 in_READ_UNIT_OUT_HAS_IMMEDIAT [i] ->write(request[i].front()._has_immediat );332 in_READ_UNIT_OUT_IMMEDIAT [i] ->write(request[i].front()._immediat );333 in_READ_UNIT_OUT_DATA_RA [i] ->write(request[i].front()._data_ra );334 in_READ_UNIT_OUT_DATA_RB [i] ->write(request[i].front()._data_rb );335 in_READ_UNIT_OUT_DATA_RC [i] ->write(request[i].front()._data_rc );336 in_READ_UNIT_OUT_WRITE_RD [i] ->write(request[i].front()._write_rd );337 in_READ_UNIT_OUT_NUM_REG_RD [i] ->write(request[i].front()._num_reg_rd );338 in_READ_UNIT_OUT_WRITE_RE [i] ->write(request[i].front()._write_re );339 in_READ_UNIT_OUT_NUM_REG_RE [i] ->write(request[i].front()._num_reg_re );343 in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE [i][j] ->write(request[i][j].front()._load_queue_ptr_write ); 344 in_READ_UNIT_OUT_HAS_IMMEDIAT [i][j] ->write(request[i][j].front()._has_immediat ); 345 in_READ_UNIT_OUT_IMMEDIAT [i][j] ->write(request[i][j].front()._immediat ); 346 in_READ_UNIT_OUT_DATA_RA [i][j] ->write(request[i][j].front()._data_ra ); 347 in_READ_UNIT_OUT_DATA_RB [i][j] ->write(request[i][j].front()._data_rb ); 348 in_READ_UNIT_OUT_DATA_RC [i][j] ->write(request[i][j].front()._data_rc ); 349 in_READ_UNIT_OUT_WRITE_RD [i][j] ->write(request[i][j].front()._write_rd ); 350 in_READ_UNIT_OUT_NUM_REG_RD [i][j] ->write(request[i][j].front()._num_reg_rd ); 351 in_READ_UNIT_OUT_WRITE_RE [i][j] ->write(request[i][j].front()._write_re ); 352 in_READ_UNIT_OUT_NUM_REG_RE [i][j] ->write(request[i][j].front()._num_reg_re ); 340 353 } 341 }354 } 342 355 343 356 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 344 in_EXECUTE_UNIT_IN_ACK [i]->write((rand()%100) < percent_transaction_out); 357 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 358 in_EXECUTE_UNIT_IN_ACK [i][j]->write((rand()%100) < percent_transaction_out); 345 359 346 360 SC_START(0); 347 361 348 362 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 349 if (in_READ_UNIT_OUT_VAL [i]->read() and out_READ_UNIT_OUT_ACK [i]->read()) 350 { 351 LABEL("READ_UNIT_OUT [%d] - Transaction accepted",i); 352 } 363 for (uint32_t j=0; j<_param->_nb_read_unit_port [i]; j++) 364 if (in_READ_UNIT_OUT_VAL [i][j]->read() and out_READ_UNIT_OUT_ACK [i][j]->read()) 365 { 366 LABEL("READ_UNIT_OUT [%d][%d] - Transaction accepted",i,j); 367 } 353 368 354 369 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 355 if (out_EXECUTE_UNIT_IN_VAL [i]->read() and in_EXECUTE_UNIT_IN_ACK [i]->read()) 356 { 357 LABEL("EXECUTE_UNIT_IN [%d] - Transaction accepted (%d)",i,nb_request_out); 358 nb_request_out ++; 359 360 Tpacket_t packet = (_param->_have_port_packet_id)?out_EXECUTE_UNIT_IN_PACKET_ID[i]->read():0; 361 LABEL(" * packet : %d",packet); 362 uint32_t read_unit; 363 364 // find read_unit 365 for (read_unit=0; read_unit<_param->_nb_read_unit; read_unit++) 366 if (packet == ((_param->_have_port_packet_id)?request[read_unit].front()._packet_id:0)) 367 break; 368 369 LABEL(" * read_unit source : %d",read_unit); 370 371 if (_param->_have_port_packet_id) 372 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_PACKET_ID [i]->read(), request[read_unit].front()._packet_id ); 373 374 // Authorised link ? read_unit -> execute_unit 375 TEST(bool, _param->_table_routing[read_unit][i], true); 376 377 if (_param->_have_port_context_id) 378 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_CONTEXT_ID [i]->read(), request[read_unit].front()._context_id ); 379 if (_param->_have_port_front_end_id) 380 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_FRONT_END_ID [i]->read(), request[read_unit].front()._front_end_id ); 381 if (_param->_have_port_ooo_engine_id) 382 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i]->read(), request[read_unit].front()._ooo_engine_id ); 383 TEST(Toperation_t ,out_EXECUTE_UNIT_IN_OPERATION [i]->read(), request[read_unit].front()._operation ); 384 TEST(Ttype_t ,out_EXECUTE_UNIT_IN_TYPE [i]->read(), request[read_unit].front()._type ); 385 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE[i]->read(), request[read_unit].front()._store_queue_ptr_write); 386 if (_param->_have_port_load_queue_ptr) 387 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i]->read(), request[read_unit].front()._load_queue_ptr_write ); 388 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i]->read(), request[read_unit].front()._has_immediat ); 389 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_IMMEDIAT [i]->read(), request[read_unit].front()._immediat ); 390 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RA [i]->read(), request[read_unit].front()._data_ra ); 391 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RB [i]->read(), request[read_unit].front()._data_rb ); 392 TEST(Tspecial_data_t ,out_EXECUTE_UNIT_IN_DATA_RC [i]->read(), request[read_unit].front()._data_rc ); 393 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RD [i]->read(), request[read_unit].front()._write_rd ); 394 TEST(Tgeneral_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RD [i]->read(), request[read_unit].front()._num_reg_rd ); 395 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RE [i]->read(), request[read_unit].front()._write_re ); 396 TEST(Tspecial_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RE [i]->read(), request[read_unit].front()._num_reg_re ); 397 398 request[read_unit].pop_front(); 399 } 370 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 371 if (out_EXECUTE_UNIT_IN_VAL [i][j]->read() and in_EXECUTE_UNIT_IN_ACK [i][j]->read()) 372 { 373 LABEL("EXECUTE_UNIT_IN [%d][%d] - Transaction accepted (%d)",i,j,nb_request_out); 374 nb_request_out ++; 375 376 Tpacket_t packet = (_param->_have_port_rob_ptr )?out_EXECUTE_UNIT_IN_PACKET_ID[i][j]->read():0; 377 LABEL(" * packet : %d",packet); 378 uint32_t x; 379 uint32_t y; 380 381 // find read_unit 382 bool find = false; 383 for (x=0; x<_param->_nb_read_unit; x++) 384 { 385 for (y=0; y<_param->_nb_read_unit_port[x]; y++) 386 if (packet == ((_param->_have_port_rob_ptr )?request[x][y].front()._packet_id:0)) 387 { 388 find = true; 389 break; 390 } 391 if (find) 392 break; 393 } 394 395 LABEL(" * read_unit source : [%d][%d]",x,y); 396 397 if (_param->_have_port_rob_ptr ) 398 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_PACKET_ID [i][j]->read(), request[x][y].front()._packet_id ); 399 400 // Authorised link ? read_unit -> execute_unit 401 TEST(bool, _param->_table_routing[x][i][j], true); 402 403 if (_param->_have_port_context_id) 404 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_CONTEXT_ID [i][j]->read(), request[x][y].front()._context_id ); 405 if (_param->_have_port_front_end_id) 406 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_FRONT_END_ID [i][j]->read(), request[x][y].front()._front_end_id ); 407 if (_param->_have_port_ooo_engine_id) 408 TEST(Tcontext_t ,out_EXECUTE_UNIT_IN_OOO_ENGINE_ID [i][j]->read(), request[x][y].front()._ooo_engine_id ); 409 TEST(Toperation_t ,out_EXECUTE_UNIT_IN_OPERATION [i][j]->read(), request[x][y].front()._operation ); 410 TEST(Ttype_t ,out_EXECUTE_UNIT_IN_TYPE [i][j]->read(), request[x][y].front()._type ); 411 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE[i][j]->read(), request[x][y].front()._store_queue_ptr_write); 412 if (_param->_have_port_load_queue_ptr) 413 TEST(Tlsq_ptr_t ,out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE [i][j]->read(), request[x][y].front()._load_queue_ptr_write ); 414 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_HAS_IMMEDIAT [i][j]->read(), request[x][y].front()._has_immediat ); 415 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_IMMEDIAT [i][j]->read(), request[x][y].front()._immediat ); 416 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RA [i][j]->read(), request[x][y].front()._data_ra ); 417 TEST(Tgeneral_data_t ,out_EXECUTE_UNIT_IN_DATA_RB [i][j]->read(), request[x][y].front()._data_rb ); 418 TEST(Tspecial_data_t ,out_EXECUTE_UNIT_IN_DATA_RC [i][j]->read(), request[x][y].front()._data_rc ); 419 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RD [i][j]->read(), request[x][y].front()._write_rd ); 420 TEST(Tgeneral_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RD [i][j]->read(), request[x][y].front()._num_reg_rd ); 421 TEST(Tcontrol_t ,out_EXECUTE_UNIT_IN_WRITE_RE [i][j]->read(), request[x][y].front()._write_re ); 422 TEST(Tspecial_address_t,out_EXECUTE_UNIT_IN_NUM_REG_RE [i][j]->read(), request[x][y].front()._num_reg_re ); 423 424 request[x][y].pop_front(); 425 } 400 426 SC_START(1); 401 427 } 402 403 428 } 404 429 … … 414 439 delete in_CLOCK; 415 440 delete in_NRESET; 416 417 delete [] in_READ_UNIT_OUT_VAL ; 418 delete [] out_READ_UNIT_OUT_ACK ; 419 delete [] in_READ_UNIT_OUT_CONTEXT_ID ; 420 delete [] in_READ_UNIT_OUT_FRONT_END_ID ; 421 delete [] in_READ_UNIT_OUT_OOO_ENGINE_ID ; 422 delete [] in_READ_UNIT_OUT_PACKET_ID ; 423 delete [] in_READ_UNIT_OUT_OPERATION ; 424 delete [] in_READ_UNIT_OUT_TYPE ; 425 delete [] in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 426 delete [] in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 427 delete [] in_READ_UNIT_OUT_HAS_IMMEDIAT ; 428 delete [] in_READ_UNIT_OUT_IMMEDIAT ; 429 delete [] in_READ_UNIT_OUT_DATA_RA ; 430 delete [] in_READ_UNIT_OUT_DATA_RB ; 431 delete [] in_READ_UNIT_OUT_DATA_RC ; 432 delete [] in_READ_UNIT_OUT_WRITE_RD ; 433 delete [] in_READ_UNIT_OUT_NUM_REG_RD ; 434 delete [] in_READ_UNIT_OUT_WRITE_RE ; 435 delete [] in_READ_UNIT_OUT_NUM_REG_RE ; 436 437 delete [] out_EXECUTE_UNIT_IN_VAL ; 438 delete [] in_EXECUTE_UNIT_IN_ACK ; 439 delete [] out_EXECUTE_UNIT_IN_CONTEXT_ID ; 440 delete [] out_EXECUTE_UNIT_IN_FRONT_END_ID ; 441 delete [] out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ; 442 delete [] out_EXECUTE_UNIT_IN_PACKET_ID ; 443 delete [] out_EXECUTE_UNIT_IN_OPERATION ; 444 delete [] out_EXECUTE_UNIT_IN_TYPE ; 445 delete [] out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE; 446 delete [] out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 447 delete [] out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ; 448 delete [] out_EXECUTE_UNIT_IN_IMMEDIAT ; 449 delete [] out_EXECUTE_UNIT_IN_DATA_RA ; 450 delete [] out_EXECUTE_UNIT_IN_DATA_RB ; 451 delete [] out_EXECUTE_UNIT_IN_DATA_RC ; 452 delete [] out_EXECUTE_UNIT_IN_WRITE_RD ; 453 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RD ; 454 delete [] out_EXECUTE_UNIT_IN_WRITE_RE ; 455 delete [] out_EXECUTE_UNIT_IN_NUM_REG_RE ; 441 442 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_VAL ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 443 DELETE2_SC_SIGNAL(out_READ_UNIT_OUT_ACK ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 444 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 445 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 446 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 447 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_PACKET_ID ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 448 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_OPERATION ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 449 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_TYPE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 450 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 451 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 452 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 453 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 454 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RA ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 455 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RB ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 456 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_DATA_RC ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 457 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 458 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 459 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_WRITE_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 460 DELETE2_SC_SIGNAL( in_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 461 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_VAL ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 462 DELETE2_SC_SIGNAL( in_EXECUTE_UNIT_IN_ACK ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 463 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_CONTEXT_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 464 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_FRONT_END_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 465 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OOO_ENGINE_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 466 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_PACKET_ID ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 467 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_OPERATION ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 468 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_TYPE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 469 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 470 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 471 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_HAS_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 472 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_IMMEDIAT ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 473 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RA ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 474 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RB ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 475 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_DATA_RC ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 476 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 477 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 478 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_WRITE_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 479 DELETE2_SC_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RE ,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1]); 456 480 457 481 #endif
Note: See TracChangeset
for help on using the changeset viewer.