Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 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/Read_queue/src/Read_queue_allocation.cpp
r88 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 50 51 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 52 { 52 Interface_fifo * interface = _interfaces->set_interface("read_queue_in" 53 #ifdef POSITION 54 ,IN 55 ,EAST 56 ,"Input of read_queue" 57 #endif 58 ); 53 ALLOC0_INTERFACE_BEGIN("read_queue_in",IN,EAST,"Input of read_queue"); 59 54 60 in_READ_QUEUE_IN_VAL = interface->set_signal_valack_in ("val" , VAL); 61 out_READ_QUEUE_IN_ACK = interface->set_signal_valack_out ("ack" , ACK); 62 if(_param->_have_port_context_id ) 63 in_READ_QUEUE_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 64 if(_param->_have_port_front_end_id) 65 in_READ_QUEUE_IN_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 66 if(_param->_have_port_ooo_engine_id) 67 in_READ_QUEUE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 68 if(_param->_have_port_rob_ptr ) 69 in_READ_QUEUE_IN_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 70 in_READ_QUEUE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 71 in_READ_QUEUE_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 72 in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 73 if (_param->_have_port_load_queue_ptr) 74 in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 75 in_READ_QUEUE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat",1 ); 76 in_READ_QUEUE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 77 in_READ_QUEUE_IN_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 78 in_READ_QUEUE_IN_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 79 in_READ_QUEUE_IN_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 80 in_READ_QUEUE_IN_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 81 in_READ_QUEUE_IN_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 82 in_READ_QUEUE_IN_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 83 in_READ_QUEUE_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 84 in_READ_QUEUE_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 85 in_READ_QUEUE_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 86 in_READ_QUEUE_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 87 } 55 ALLOC0_VALACK_IN ( in_READ_QUEUE_IN_VAL ,VAL); 56 ALLOC0_VALACK_OUT(out_READ_QUEUE_IN_ACK ,ACK); 57 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 64 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 65 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 66 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 67 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 69 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 73 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 77 78 ALLOC0_INTERFACE_END(); 79 } 88 80 89 81 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 82 { 91 Interface_fifo * interface = _interfaces->set_interface("read_queue_out" 92 #ifdef POSITION 93 ,OUT 94 ,EAST 95 ,"Input of read_queue" 96 #endif 97 ); 83 ALLOC0_INTERFACE_BEGIN("read_queue_out",OUT,EAST,"Input of read_queue"); 98 84 99 out_READ_QUEUE_OUT_VAL = interface->set_signal_valack_out ("val" , VAL); 100 in_READ_QUEUE_OUT_ACK = interface->set_signal_valack_in ("ack" , ACK); 101 102 if(_param->_have_port_context_id ) 103 out_READ_QUEUE_OUT_CONTEXT_ID = interface->set_signal_out <Tcontext_t > ("context_id" ,_param->_size_context_id ); 104 if(_param->_have_port_front_end_id) 105 out_READ_QUEUE_OUT_FRONT_END_ID = interface->set_signal_out <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 106 if(_param->_have_port_ooo_engine_id) 107 out_READ_QUEUE_OUT_OOO_ENGINE_ID = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 108 if(_param->_have_port_rob_ptr ) 109 out_READ_QUEUE_OUT_ROB_ID = interface->set_signal_out <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 110 out_READ_QUEUE_OUT_OPERATION = interface->set_signal_out <Toperation_t > ("operation" ,_param->_size_operation ); 111 out_READ_QUEUE_OUT_TYPE = interface->set_signal_out <Ttype_t > ("type" ,_param->_size_type ); 112 out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 113 if (_param->_have_port_load_queue_ptr) 114 out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 115 out_READ_QUEUE_OUT_HAS_IMMEDIAT = interface->set_signal_out <Tcontrol_t > ("has_immediat",1 ); 116 out_READ_QUEUE_OUT_IMMEDIAT = interface->set_signal_out <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 117 // out_READ_QUEUE_OUT_READ_RA = interface->set_signal_out <Tcontrol_t > ("read_ra" ,1 ); 118 out_READ_QUEUE_OUT_NUM_REG_RA = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 119 out_READ_QUEUE_OUT_DATA_RA_VAL = interface->set_signal_out <Tcontrol_t > ("data_ra_val" ,1 ); 120 out_READ_QUEUE_OUT_DATA_RA = interface->set_signal_out <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 121 // out_READ_QUEUE_OUT_READ_RB = interface->set_signal_out <Tcontrol_t > ("read_rb" ,1 ); 122 out_READ_QUEUE_OUT_NUM_REG_RB = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 123 out_READ_QUEUE_OUT_DATA_RB_VAL = interface->set_signal_out <Tcontrol_t > ("data_rb_val" ,1 ); 124 out_READ_QUEUE_OUT_DATA_RB = interface->set_signal_out <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 125 // out_READ_QUEUE_OUT_READ_RC = interface->set_signal_out <Tcontrol_t > ("read_rc" ,1 ); 126 out_READ_QUEUE_OUT_NUM_REG_RC = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 127 out_READ_QUEUE_OUT_DATA_RC_VAL = interface->set_signal_out <Tcontrol_t > ("data_rc_val" ,1 ); 128 out_READ_QUEUE_OUT_DATA_RC = interface->set_signal_out <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 129 out_READ_QUEUE_OUT_WRITE_RD = interface->set_signal_out <Tcontrol_t > ("write_rd" ,1 ); 130 out_READ_QUEUE_OUT_NUM_REG_RD = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 131 out_READ_QUEUE_OUT_WRITE_RE = interface->set_signal_out <Tcontrol_t > ("write_re" ,1 ); 132 out_READ_QUEUE_OUT_NUM_REG_RE = interface->set_signal_out <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 133 } 85 ALLOC0_VALACK_OUT(out_READ_QUEUE_OUT_VAL ,VAL); 86 ALLOC0_VALACK_IN ( in_READ_QUEUE_OUT_ACK ,ACK); 87 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 88 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 89 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 90 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 91 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 92 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 93 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t , _param->_size_store_queue_ptr ); 94 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t , _param->_size_load_queue_ptr ); 95 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 96 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 97 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 98 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register ); 99 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 100 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 101 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 102 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register ); 103 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 104 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 105 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 106 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register ); 107 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 108 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 109 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 110 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 111 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 112 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 113 114 ALLOC0_INTERFACE_END(); 115 } 134 116 135 117 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 { 119 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_gpr_read); 120 121 ALLOC1_VALACK_OUT(out_GPR_READ_VAL ,VAL); 122 ALLOC1_VALACK_IN ( in_GPR_READ_ACK ,ACK); 123 ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 124 ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 125 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 126 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 127 128 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 129 } 136 130 137 out_GPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 138 in_GPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 139 if(_param->_have_port_ooo_engine_id) 140 out_GPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_gpr_read]; 141 out_GPR_READ_NUM_REG = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read]; 142 in_GPR_READ_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 143 in_GPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 131 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 132 { 133 ALLOC1_INTERFACE_BEGIN("spr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_spr_read); 144 134 145 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 146 { 147 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 148 #ifdef POSITION 149 , IN 150 ,SOUTH 151 , "Interface with the General RegisterFile." 152 #endif 153 ); 135 ALLOC1_VALACK_OUT(out_SPR_READ_VAL ,VAL); 136 ALLOC1_VALACK_IN ( in_SPR_READ_ACK ,ACK); 137 ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 138 ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 139 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 140 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 154 141 155 out_GPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 156 in_GPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 157 if(_param->_have_port_ooo_engine_id) 158 out_GPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 159 out_GPR_READ_NUM_REG [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 160 in_GPR_READ_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 161 in_GPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 162 } 163 164 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 166 out_SPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 167 in_SPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 168 if(_param->_have_port_ooo_engine_id) 169 out_SPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_spr_read]; 170 out_SPR_READ_NUM_REG = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read]; 171 in_SPR_READ_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 172 in_SPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 173 174 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 175 { 176 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 177 #ifdef POSITION 178 , IN 179 ,SOUTH 180 , "Interface with the Special RegisterFile." 181 #endif 182 ); 183 184 out_SPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 185 in_SPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 186 if(_param->_have_port_ooo_engine_id) 187 out_SPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 188 out_SPR_READ_NUM_REG [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 189 in_SPR_READ_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 190 in_SPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 191 } 142 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 143 } 192 144 193 145 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 195 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 196 if(_param->_have_port_ooo_engine_id) 197 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 198 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 199 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 146 { 147 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_gpr_write); 200 148 201 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 202 { 203 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 204 #ifdef POSITION 205 , IN 206 ,SOUTH 207 , "Interface with write queue to bypass the write in the RegisterFile." 208 #endif 209 ); 210 211 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 212 if(_param->_have_port_ooo_engine_id) 213 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 214 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 215 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 216 } 149 ALLOC1_VALACK_IN (in_GPR_WRITE_VAL ,VAL); 150 ALLOC1_SIGNAL_IN (in_GPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 151 ALLOC1_SIGNAL_IN (in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 152 ALLOC1_SIGNAL_IN (in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 153 154 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 155 } 217 156 218 157 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 220 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 221 if(_param->_have_port_ooo_engine_id) 222 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 223 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 224 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 158 { 159 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_spr_write); 225 160 226 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 227 { 228 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 229 #ifdef POSITION 230 , IN 231 ,SOUTH 232 , "Interface with write queue to bypass the write in the RegisterFile." 233 #endif 234 ); 235 236 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 237 if(_param->_have_port_ooo_engine_id) 238 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 239 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 240 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 241 } 161 ALLOC1_VALACK_IN (in_SPR_WRITE_VAL ,VAL); 162 ALLOC1_SIGNAL_IN (in_SPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 163 ALLOC1_SIGNAL_IN (in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 164 ALLOC1_SIGNAL_IN (in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 165 166 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 167 } 242 168 243 169 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: See TracChangeset
for help on using the changeset viewer.