Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src
- Files:
-
- 3 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 ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.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 { … … 25 26 if (usage_is_set(_usage,USE_SYSTEMC)) 26 27 { 27 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 delete in_CLOCK ; 29 delete in_NRESET; 28 delete in_CLOCK ; 29 delete in_NRESET; 30 30 31 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 delete in_READ_QUEUE_IN_VAL ; 33 delete out_READ_QUEUE_IN_ACK ; 31 DELETE0_SIGNAL( in_READ_QUEUE_IN_VAL ,1 ); 32 DELETE0_SIGNAL(out_READ_QUEUE_IN_ACK ,1 ); 33 DELETE0_SIGNAL( in_READ_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 36 DELETE0_SIGNAL( in_READ_QUEUE_IN_ROB_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_QUEUE_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr ); 40 DELETE0_SIGNAL( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 41 DELETE0_SIGNAL( in_READ_QUEUE_IN_HAS_IMMEDIAT ,1 ); 42 DELETE0_SIGNAL( in_READ_QUEUE_IN_IMMEDIAT ,_param->_size_general_data ); 43 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RA ,1 ); 44 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RB ,1 ); 46 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RC ,1 ); 48 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RD ,1 ); 50 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RE ,1 ); 52 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RE ,_param->_size_special_register); 53 54 DELETE0_SIGNAL(out_READ_QUEUE_OUT_VAL ,1 ); 55 DELETE0_SIGNAL( in_READ_QUEUE_OUT_ACK ,1 ); 56 DELETE0_SIGNAL(out_READ_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 57 DELETE0_SIGNAL(out_READ_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 58 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 59 DELETE0_SIGNAL(out_READ_QUEUE_OUT_ROB_ID ,_param->_size_rob_ptr ); 60 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION ,_param->_size_operation ); 61 DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE ,_param->_size_type ); 62 DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _param->_size_store_queue_ptr ); 63 DELETE0_SIGNAL(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _param->_size_load_queue_ptr ); 64 DELETE0_SIGNAL(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,1 ); 65 DELETE0_SIGNAL(out_READ_QUEUE_OUT_IMMEDIAT ,_param->_size_general_data ); 66 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RA ,1 ); 67 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RA ,_param->_size_general_register ); 68 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA_VAL ,1 ); 69 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA ,_param->_size_general_data ); 70 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RB ,1 ); 71 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RB ,_param->_size_general_register ); 72 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB_VAL ,1 ); 73 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB ,_param->_size_general_data ); 74 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RC ,1 ); 75 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RC ,_param->_size_special_register ); 76 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC_VAL ,1 ); 77 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC ,_param->_size_special_data ); 78 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RD ,1 ); 79 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RD ,_param->_size_general_register ); 80 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RE ,1 ); 81 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RE ,_param->_size_special_register ); 34 82 35 if(_param->_have_port_context_id ) 36 delete in_READ_QUEUE_IN_CONTEXT_ID ; 37 if(_param->_have_port_front_end_id ) 38 delete in_READ_QUEUE_IN_FRONT_END_ID ; 39 if(_param->_have_port_ooo_engine_id) 40 delete in_READ_QUEUE_IN_OOO_ENGINE_ID ; 41 if(_param->_have_port_rob_ptr ) 42 delete in_READ_QUEUE_IN_ROB_ID ; 43 delete in_READ_QUEUE_IN_OPERATION ; 44 delete in_READ_QUEUE_IN_TYPE ; 45 delete in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE; 46 if (_param->_have_port_load_queue_ptr) 47 delete in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ; 48 delete in_READ_QUEUE_IN_HAS_IMMEDIAT ; 49 delete in_READ_QUEUE_IN_IMMEDIAT ; 50 delete in_READ_QUEUE_IN_READ_RA ; 51 delete in_READ_QUEUE_IN_NUM_REG_RA ; 52 delete in_READ_QUEUE_IN_READ_RB ; 53 delete in_READ_QUEUE_IN_NUM_REG_RB ; 54 delete in_READ_QUEUE_IN_READ_RC ; 55 delete in_READ_QUEUE_IN_NUM_REG_RC ; 56 delete in_READ_QUEUE_IN_WRITE_RD ; 57 delete in_READ_QUEUE_IN_NUM_REG_RD ; 58 delete in_READ_QUEUE_IN_WRITE_RE ; 59 delete in_READ_QUEUE_IN_NUM_REG_RE ; 83 DELETE1_SIGNAL(out_GPR_READ_VAL ,_param->_nb_gpr_read,1); 84 DELETE1_SIGNAL( in_GPR_READ_ACK ,_param->_nb_gpr_read,1); 85 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 86 DELETE1_SIGNAL(out_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_general_register); 87 DELETE1_SIGNAL( in_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 88 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 60 89 61 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 delete out_READ_QUEUE_OUT_VAL ; 63 delete in_READ_QUEUE_OUT_ACK ; 90 DELETE1_SIGNAL(out_SPR_READ_VAL ,_param->_nb_spr_read,1); 91 DELETE1_SIGNAL( in_SPR_READ_ACK ,_param->_nb_spr_read,1); 92 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 93 DELETE1_SIGNAL(out_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_general_register); 94 DELETE1_SIGNAL( in_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_general_data); 95 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 96 97 DELETE1_SIGNAL(in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 98 DELETE1_SIGNAL(in_GPR_WRITE_OOO_ENGINE_ID ,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 99 DELETE1_SIGNAL(in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 100 DELETE1_SIGNAL(in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 64 101 65 if(_param->_have_port_context_id ) 66 delete out_READ_QUEUE_OUT_CONTEXT_ID ; 67 if(_param->_have_port_front_end_id ) 68 delete out_READ_QUEUE_OUT_FRONT_END_ID ; 69 if(_param->_have_port_ooo_engine_id) 70 delete out_READ_QUEUE_OUT_OOO_ENGINE_ID ; 71 if(_param->_have_port_rob_ptr ) 72 delete out_READ_QUEUE_OUT_ROB_ID ; 73 delete out_READ_QUEUE_OUT_OPERATION ; 74 delete out_READ_QUEUE_OUT_TYPE ; 75 delete out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE; 76 if (_param->_have_port_load_queue_ptr) 77 delete out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ; 78 delete out_READ_QUEUE_OUT_HAS_IMMEDIAT ; 79 delete out_READ_QUEUE_OUT_IMMEDIAT ; 80 // delete out_READ_QUEUE_OUT_READ_RA ; 81 delete out_READ_QUEUE_OUT_NUM_REG_RA ; 82 delete out_READ_QUEUE_OUT_DATA_RA_VAL ; 83 delete out_READ_QUEUE_OUT_DATA_RA ; 84 // delete out_READ_QUEUE_OUT_READ_RB ; 85 delete out_READ_QUEUE_OUT_NUM_REG_RB ; 86 delete out_READ_QUEUE_OUT_DATA_RB_VAL ; 87 delete out_READ_QUEUE_OUT_DATA_RB ; 88 // delete out_READ_QUEUE_OUT_READ_RC ; 89 delete out_READ_QUEUE_OUT_NUM_REG_RC ; 90 delete out_READ_QUEUE_OUT_DATA_RC_VAL ; 91 delete out_READ_QUEUE_OUT_DATA_RC ; 92 delete out_READ_QUEUE_OUT_WRITE_RD ; 93 delete out_READ_QUEUE_OUT_NUM_REG_RD ; 94 delete out_READ_QUEUE_OUT_WRITE_RE ; 95 delete out_READ_QUEUE_OUT_NUM_REG_RE ; 96 97 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 99 delete [] out_GPR_READ_VAL ; 100 delete [] in_GPR_READ_ACK ; 101 if(_param->_have_port_ooo_engine_id) 102 delete [] out_GPR_READ_OOO_ENGINE_ID; 103 delete [] out_GPR_READ_NUM_REG ; 104 delete [] in_GPR_READ_DATA ; 105 delete [] in_GPR_READ_DATA_VAL ; 106 107 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 109 delete [] out_SPR_READ_VAL ; 110 delete [] in_SPR_READ_ACK ; 111 if(_param->_have_port_ooo_engine_id) 112 delete [] out_SPR_READ_OOO_ENGINE_ID; 113 delete [] out_SPR_READ_NUM_REG ; 114 delete [] in_SPR_READ_DATA ; 115 delete [] in_SPR_READ_DATA_VAL ; 116 117 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 119 delete [] in_GPR_WRITE_VAL ; 120 if(_param->_have_port_ooo_engine_id) 121 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 122 delete [] in_GPR_WRITE_NUM_REG ; 123 delete [] in_GPR_WRITE_DATA ; 124 125 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 127 delete [] in_SPR_WRITE_VAL ; 128 if(_param->_have_port_ooo_engine_id) 129 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 130 delete [] in_SPR_WRITE_NUM_REG ; 131 delete [] in_SPR_WRITE_DATA ; 102 DELETE1_SIGNAL(in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 103 DELETE1_SIGNAL(in_SPR_WRITE_OOO_ENGINE_ID ,_param->_nb_spr_write,_param->_size_ooo_engine_id); 104 DELETE1_SIGNAL(in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 105 DELETE1_SIGNAL(in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 132 106 } 133 107 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r111 r112 34 34 // > 2) flush all slot in one cycle 35 35 36 _queue->clear(); 36 while (_queue->empty() == false) 37 { 38 delete _queue->front(); 39 _queue->pop_front(); 40 } 41 // _queue->clear(); 37 42 38 43 // Init, else error in registerfile
Note: See TracChangeset
for help on using the changeset viewer.