Changeset 69 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
- Timestamp:
- Dec 12, 2007, 5:02:47 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r56 r69 52 52 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 53 53 54 // ~~~~~[ Interface : " reservation_station_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~54 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 55 { 56 Interface_fifo * interface = _interfaces->set_interface(" reservation_station_in"56 Interface_fifo * interface = _interfaces->set_interface("insert" 57 57 #ifdef POSITION 58 58 ,IN … … 62 62 ); 63 63 64 in_RESERVATION_STATION_IN_VAL = interface->set_signal_valack_in (VAL); 65 out_RESERVATION_STATION_IN_ACK = interface->set_signal_valack_out (ACK); 66 in_RESERVATION_STATION_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 67 in_RESERVATION_STATION_IN_PACKET_ID = interface->set_signal_in <Tpacket_t > ("packet_id" ,_param->_size_packet_id ); 68 in_RESERVATION_STATION_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 69 in_RESERVATION_STATION_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 70 in_RESERVATION_STATION_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat",1 ); 71 in_RESERVATION_STATION_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 72 // in_RESERVATION_STATION_IN_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 73 in_RESERVATION_STATION_IN_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 74 in_RESERVATION_STATION_IN_DATA_RA_VAL = interface->set_signal_in <Tcontrol_t > ("data_ra_val" ,1 ); 75 in_RESERVATION_STATION_IN_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 76 // in_RESERVATION_STATION_IN_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 77 in_RESERVATION_STATION_IN_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 78 in_RESERVATION_STATION_IN_DATA_RB_VAL = interface->set_signal_in <Tcontrol_t > ("data_rb_val" ,1 ); 79 in_RESERVATION_STATION_IN_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 80 // in_RESERVATION_STATION_IN_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 81 in_RESERVATION_STATION_IN_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 82 in_RESERVATION_STATION_IN_DATA_RC_VAL = interface->set_signal_in <Tcontrol_t > ("data_rc_val" ,1 ); 83 in_RESERVATION_STATION_IN_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 84 in_RESERVATION_STATION_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 85 in_RESERVATION_STATION_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 86 in_RESERVATION_STATION_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 87 in_RESERVATION_STATION_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 64 in_INSERT_VAL = interface->set_signal_valack_in (VAL); 65 out_INSERT_ACK = interface->set_signal_valack_out (ACK); 66 if (_param->_have_port_context_id) 67 in_INSERT_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 68 if (_param->_have_port_front_end_id) 69 in_INSERT_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 70 if (_param->_have_port_ooo_engine_id) 71 in_INSERT_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id ); 72 if (_param->_have_port_rob_id) 73 in_INSERT_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_id ); 74 in_INSERT_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 75 in_INSERT_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 76 in_INSERT_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" ,1 ); 77 in_INSERT_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 78 // in_INSERT_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 79 in_INSERT_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 80 in_INSERT_DATA_RA_VAL = interface->set_signal_in <Tcontrol_t > ("data_ra_val" ,1 ); 81 in_INSERT_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 82 // in_INSERT_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 83 in_INSERT_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 84 in_INSERT_DATA_RB_VAL = interface->set_signal_in <Tcontrol_t > ("data_rb_val" ,1 ); 85 in_INSERT_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 86 // in_INSERT_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 87 in_INSERT_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 88 in_INSERT_DATA_RC_VAL = interface->set_signal_in <Tcontrol_t > ("data_rc_val" ,1 ); 89 in_INSERT_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 90 in_INSERT_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 91 in_INSERT_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 92 in_INSERT_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 93 in_INSERT_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 88 94 } 89 95 90 // ~~~~~[ Interface : "reservation_station_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 91 out_RESERVATION_STATION_OUT_VAL = new SC_OUT(Tcontrol_t ) * [_param->_size_queue]; 92 in_RESERVATION_STATION_OUT_ACK = new SC_IN (Tcontrol_t ) * [_param->_size_queue]; 93 out_RESERVATION_STATION_OUT_CONTEXT_ID = new SC_OUT(Tcontext_t ) * [_param->_size_queue]; 94 out_RESERVATION_STATION_OUT_PACKET_ID = new SC_OUT(Tpacket_t ) * [_param->_size_queue]; 95 out_RESERVATION_STATION_OUT_OPERATION = new SC_OUT(Toperation_t ) * [_param->_size_queue]; 96 out_RESERVATION_STATION_OUT_TYPE = new SC_OUT(Ttype_t ) * [_param->_size_queue]; 97 out_RESERVATION_STATION_OUT_HAS_IMMEDIAT= new SC_OUT(Tcontrol_t ) * [_param->_size_queue]; 98 out_RESERVATION_STATION_OUT_IMMEDIAT = new SC_OUT(Tgeneral_data_t ) * [_param->_size_queue]; 99 out_RESERVATION_STATION_OUT_DATA_RA = new SC_OUT(Tgeneral_data_t ) * [_param->_size_queue]; 100 out_RESERVATION_STATION_OUT_DATA_RB = new SC_OUT(Tgeneral_data_t ) * [_param->_size_queue]; 101 out_RESERVATION_STATION_OUT_DATA_RC = new SC_OUT(Tspecial_data_t ) * [_param->_size_queue]; 102 out_RESERVATION_STATION_OUT_WRITE_RD = new SC_OUT(Tcontrol_t ) * [_param->_size_queue]; 103 out_RESERVATION_STATION_OUT_NUM_REG_RD = new SC_OUT(Tgeneral_address_t) * [_param->_size_queue]; 104 out_RESERVATION_STATION_OUT_WRITE_RE = new SC_OUT(Tcontrol_t ) * [_param->_size_queue]; 105 out_RESERVATION_STATION_OUT_NUM_REG_RE = new SC_OUT(Tspecial_address_t) * [_param->_size_queue]; 96 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 out_RETIRE_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 98 in_RETIRE_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_inst_retire]; 99 if (_param->_have_port_context_id) 100 out_RETIRE_CONTEXT_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 101 if (_param->_have_port_front_end_id) 102 out_RETIRE_FRONT_END_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 103 if (_param->_have_port_ooo_engine_id) 104 out_RETIRE_OOO_ENGINE_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 105 if (_param->_have_port_rob_id) 106 out_RETIRE_ROB_ID = new SC_OUT(Tpacket_t ) * [_param->_nb_inst_retire]; 107 out_RETIRE_OPERATION = new SC_OUT(Toperation_t ) * [_param->_nb_inst_retire]; 108 out_RETIRE_TYPE = new SC_OUT(Ttype_t ) * [_param->_nb_inst_retire]; 109 out_RETIRE_HAS_IMMEDIAT = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 110 out_RETIRE_IMMEDIAT = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 111 out_RETIRE_DATA_RA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 112 out_RETIRE_DATA_RB = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 113 out_RETIRE_DATA_RC = new SC_OUT(Tspecial_data_t ) * [_param->_nb_inst_retire]; 114 out_RETIRE_WRITE_RD = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 115 out_RETIRE_NUM_REG_RD = new SC_OUT(Tgeneral_address_t) * [_param->_nb_inst_retire]; 116 out_RETIRE_WRITE_RE = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 117 out_RETIRE_NUM_REG_RE = new SC_OUT(Tspecial_address_t) * [_param->_nb_inst_retire]; 106 118 107 for (uint32_t i=0; i<_param->_ size_queue; i++)108 { 109 Interface_fifo * interface = _interfaces->set_interface("re servation_station_out_"+toString(i)119 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 120 { 121 Interface_fifo * interface = _interfaces->set_interface("retire_"+toString(i) 110 122 #ifdef POSITION 111 123 ,OUT … … 114 126 #endif 115 127 ); 116 out_RESERVATION_STATION_OUT_VAL [i] = interface->set_signal_valack_out(VAL); 117 in_RESERVATION_STATION_OUT_ACK [i] = interface->set_signal_valack_in (ACK); 118 out_RESERVATION_STATION_OUT_CONTEXT_ID [i] = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id); 119 out_RESERVATION_STATION_OUT_PACKET_ID [i] = interface->set_signal_out<Tpacket_t > ("packet_id" ,_param->_size_packet_id); 120 out_RESERVATION_STATION_OUT_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 121 out_RESERVATION_STATION_OUT_TYPE [i] = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type); 122 out_RESERVATION_STATION_OUT_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat",1); 123 out_RESERVATION_STATION_OUT_IMMEDIAT [i] = interface->set_signal_out<Tgeneral_data_t > ("immediat" ,_param->_size_general_data); 124 out_RESERVATION_STATION_OUT_DATA_RA [i] = interface->set_signal_out<Tgeneral_data_t > ("data_ra" ,_param->_size_general_data); 125 out_RESERVATION_STATION_OUT_DATA_RB [i] = interface->set_signal_out<Tgeneral_data_t > ("data_rb" ,_param->_size_general_data); 126 out_RESERVATION_STATION_OUT_DATA_RC [i] = interface->set_signal_out<Tspecial_data_t > ("data_rc" ,_param->_size_special_data); 127 out_RESERVATION_STATION_OUT_WRITE_RD [i] = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 128 out_RESERVATION_STATION_OUT_NUM_REG_RD [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 129 out_RESERVATION_STATION_OUT_WRITE_RE [i] = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 130 out_RESERVATION_STATION_OUT_NUM_REG_RE [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 128 out_RETIRE_VAL [i] = interface->set_signal_valack_out(VAL); 129 in_RETIRE_ACK [i] = interface->set_signal_valack_in (ACK); 130 if (_param->_have_port_context_id) 131 out_RETIRE_CONTEXT_ID [i] = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id); 132 if (_param->_have_port_front_end_id) 133 out_RETIRE_FRONT_END_ID [i] = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id); 134 if (_param->_have_port_ooo_engine_id) 135 out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 136 if (_param->_have_port_rob_id) 137 out_RETIRE_ROB_ID [i] = interface->set_signal_out<Tpacket_t > ("rob_id" ,_param->_size_rob_id); 138 out_RETIRE_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 139 out_RETIRE_TYPE [i] = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type); 140 out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat" ,1); 141 out_RETIRE_IMMEDIAT [i] = interface->set_signal_out<Tgeneral_data_t > ("immediat" ,_param->_size_general_data); 142 out_RETIRE_DATA_RA [i] = interface->set_signal_out<Tgeneral_data_t > ("data_ra" ,_param->_size_general_data); 143 out_RETIRE_DATA_RB [i] = interface->set_signal_out<Tgeneral_data_t > ("data_rb" ,_param->_size_general_data); 144 out_RETIRE_DATA_RC [i] = interface->set_signal_out<Tspecial_data_t > ("data_rc" ,_param->_size_special_data); 145 out_RETIRE_WRITE_RD [i] = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 146 out_RETIRE_NUM_REG_RD [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 147 out_RETIRE_WRITE_RE [i] = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 148 out_RETIRE_NUM_REG_RE [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 131 149 } 132 150 133 151 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 134 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 135 in_GPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 136 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 137 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 152 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 153 if (_param->_have_port_ooo_engine_id) 154 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 155 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 156 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 138 157 139 158 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) … … 147 166 ); 148 167 149 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 150 in_GPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in <Tcontext_t > ("context_id",_param->_size_context_id); 151 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 152 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 168 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 169 if (_param->_have_port_ooo_engine_id) 170 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 171 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 172 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 153 173 } 154 174 155 175 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 156 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 157 in_SPR_WRITE_CONTEXT_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 158 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 159 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 176 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 177 if (_param->_have_port_ooo_engine_id) 178 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 179 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 180 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 160 181 161 182 for (uint32_t i=0; i<_param->_nb_spr_write; i++) … … 169 190 ); 170 191 171 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 172 in_SPR_WRITE_CONTEXT_ID [i] = interface->set_signal_in <Tcontext_t > ("context_id",_param->_size_context_id); 173 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 174 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 192 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 193 if (_param->_have_port_ooo_engine_id) 194 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 195 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 196 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 175 197 } 176 198 177 199 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 in_BYPASS_WRITE_CONTEXT_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; 179 in_BYPASS_WRITE_GPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 180 in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write]; 181 in_BYPASS_WRITE_GPR_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_write]; 182 in_BYPASS_WRITE_SPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 183 in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write]; 184 in_BYPASS_WRITE_SPR_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_bypass_write]; 200 if (_param->_have_port_ooo_engine_id) 201 in_BYPASS_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; 202 in_BYPASS_WRITE_GPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 203 in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write]; 204 in_BYPASS_WRITE_GPR_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_write]; 205 in_BYPASS_WRITE_SPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 206 in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write]; 207 in_BYPASS_WRITE_SPR_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_bypass_write]; 185 208 186 209 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) … … 194 217 ); 195 218 196 in_BYPASS_WRITE_CONTEXT_ID [i] = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id); 197 in_BYPASS_WRITE_GPR_VAL [i] = interface->set_signal_valack_in ("gpr_val",VAL); 198 in_BYPASS_WRITE_GPR_NUM_REG[i] = interface->set_signal_in <Tgeneral_address_t> ("gpr_num_reg",_param->_size_general_register); 199 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 200 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 201 in_BYPASS_WRITE_SPR_NUM_REG[i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg",_param->_size_general_register); 202 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_general_data); 219 if (_param->_have_port_ooo_engine_id) 220 in_BYPASS_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id); 221 in_BYPASS_WRITE_GPR_VAL [i] = interface->set_signal_valack_in ("gpr_val",VAL); 222 in_BYPASS_WRITE_GPR_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("gpr_num_reg" ,_param->_size_general_register); 223 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 224 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 225 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_general_register); 226 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_general_data); 203 227 } 204 228 205 229 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 206 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 207 in_BYPASS_MEMORY_CONTEXT_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_memory]; 208 in_BYPASS_MEMORY_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory]; 209 in_BYPASS_MEMORY_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_memory]; 230 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 231 if (_param->_have_port_ooo_engine_id) 232 in_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_bypass_memory]; 233 in_BYPASS_MEMORY_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory]; 234 in_BYPASS_MEMORY_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_memory]; 210 235 211 236 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) … … 219 244 ); 220 245 221 in_BYPASS_MEMORY_VAL [i] = interface->set_signal_valack_in (VAL); 222 in_BYPASS_MEMORY_CONTEXT_ID [i] = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id); 223 in_BYPASS_MEMORY_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 224 in_BYPASS_MEMORY_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 246 in_BYPASS_MEMORY_VAL [i] = interface->set_signal_valack_in (VAL); 247 if (_param->_have_port_ooo_engine_id) 248 in_BYPASS_MEMORY_OOO_ENGINE_ID[i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 249 in_BYPASS_MEMORY_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 250 in_BYPASS_MEMORY_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 225 251 } 226 252 227 253 228 254 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 229 internal_RESERVATION_STATION_OUT_VAL = new Tcontrol_t [_param->_size_queue]; 255 internal_RETIRE_VAL = new Tcontrol_t [_param->_nb_inst_retire]; 256 internal_RETIRE_SLOT = new uint32_t [_param->_nb_inst_retire]; 230 257 231 258 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 234 261 _component->generate_file(); 235 262 #endif 263 #ifdef SYSTEMC_VHDL_COMPATIBILITY 264 _queue_valid = new bool [_param->_size_queue]; 265 #else 236 266 _queue_control = new morpheo::behavioural::generic::queue_control::Queue_Control::Queue_Control(_param->_size_queue); 267 #endif 237 268 _queue = new Treservation_station_entry_t [_param->_size_queue]; 238 269
Note: See TracChangeset
for help on using the changeset viewer.