Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- 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
- Files:
-
- 9 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 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
r97 r112 7 7 */ 8 8 #define NB_ITERATION 1 9 #define CYCLE_MAX ( 2048*NB_ITERATION)9 #define CYCLE_MAX (10000*NB_ITERATION) 10 10 11 11 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h" -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r97 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 43 44 ,IN 44 45 ,SOUTH, 45 "Generalist interface"46 _("Generalist interface") 46 47 #endif 47 48 ); … … 50 51 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 51 52 52 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 { 54 Interface_fifo * interface = _interfaces->set_interface("insert" 55 #ifdef POSITION 56 ,IN 57 ,EAST 58 ,"Input of reservation_station" 59 #endif 60 ); 61 62 in_INSERT_VAL = interface->set_signal_valack_in (VAL); 63 out_INSERT_ACK = interface->set_signal_valack_out (ACK); 64 if (_param->_have_port_context_id) 65 in_INSERT_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 66 if (_param->_have_port_front_end_id) 67 in_INSERT_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 68 if (_param->_have_port_ooo_engine_id) 69 in_INSERT_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id ); 70 if (_param->_have_port_rob_ptr) 71 in_INSERT_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 72 in_INSERT_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 73 in_INSERT_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 74 in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 75 if (_param->_have_port_load_queue_ptr) 76 in_INSERT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 77 in_INSERT_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" ,1 ); 78 in_INSERT_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 79 // in_INSERT_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 80 in_INSERT_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 81 in_INSERT_DATA_RA_VAL = interface->set_signal_in <Tcontrol_t > ("data_ra_val" ,1 ); 82 in_INSERT_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 83 // in_INSERT_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 84 in_INSERT_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 85 in_INSERT_DATA_RB_VAL = interface->set_signal_in <Tcontrol_t > ("data_rb_val" ,1 ); 86 in_INSERT_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 87 // in_INSERT_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 88 in_INSERT_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 89 in_INSERT_DATA_RC_VAL = interface->set_signal_in <Tcontrol_t > ("data_rc_val" ,1 ); 90 in_INSERT_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 91 in_INSERT_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 92 in_INSERT_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 93 in_INSERT_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 94 in_INSERT_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 53 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC0_INTERFACE_BEGIN("insert",IN,EAST,_("Input of reservation_station")); 56 57 ALLOC0_VALACK_IN ( in_INSERT_VAL ,VAL); 58 ALLOC0_VALACK_OUT(out_INSERT_ACK ,ACK); 59 ALLOC0_SIGNAL_IN ( in_INSERT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 60 ALLOC0_SIGNAL_IN ( in_INSERT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 61 ALLOC0_SIGNAL_IN ( in_INSERT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 62 ALLOC0_SIGNAL_IN ( in_INSERT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 63 ALLOC0_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 64 ALLOC0_SIGNAL_IN ( in_INSERT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 65 ALLOC0_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 66 ALLOC0_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 67 ALLOC0_SIGNAL_IN ( in_INSERT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_INSERT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 69 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 73 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 77 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 78 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 80 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 81 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 82 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 83 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 84 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 85 86 ALLOC0_INTERFACE_END(); 87 } 88 89 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 { 91 ALLOC1_INTERFACE_BEGIN("retire",OUT,WEST,_("Output of reservation_station"),_param->_nb_inst_retire); 92 93 ALLOC1_VALACK_OUT(out_RETIRE_VAL ,VAL); 94 ALLOC1_VALACK_IN ( in_RETIRE_ACK ,ACK); 95 ALLOC1_SIGNAL_OUT(out_RETIRE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 96 ALLOC1_SIGNAL_OUT(out_RETIRE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 97 ALLOC1_SIGNAL_OUT(out_RETIRE_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 98 ALLOC1_SIGNAL_OUT(out_RETIRE_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr); 99 ALLOC1_SIGNAL_OUT(out_RETIRE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation); 100 ALLOC1_SIGNAL_OUT(out_RETIRE_TYPE ,"type" ,Ttype_t ,_param->_size_type); 101 ALLOC1_SIGNAL_OUT(out_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 102 ALLOC1_SIGNAL_OUT(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 103 ALLOC1_SIGNAL_OUT(out_RETIRE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 104 ALLOC1_SIGNAL_OUT(out_RETIRE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 105 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data); 106 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data); 107 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data); 108 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 109 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 110 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 111 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 114 } 115 116 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117 { 118 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_gpr_write); 119 120 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 121 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 122 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 123 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 95 126 } 96 127 97 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 out_RETIRE_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 99 in_RETIRE_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_inst_retire]; 100 if (_param->_have_port_context_id) 101 out_RETIRE_CONTEXT_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 102 if (_param->_have_port_front_end_id) 103 out_RETIRE_FRONT_END_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 104 if (_param->_have_port_ooo_engine_id) 105 out_RETIRE_OOO_ENGINE_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 106 if (_param->_have_port_rob_ptr) 107 out_RETIRE_ROB_ID = new SC_OUT(Tpacket_t ) * [_param->_nb_inst_retire]; 108 out_RETIRE_OPERATION = new SC_OUT(Toperation_t ) * [_param->_nb_inst_retire]; 109 out_RETIRE_TYPE = new SC_OUT(Ttype_t ) * [_param->_nb_inst_retire]; 110 out_RETIRE_STORE_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 111 if (_param->_have_port_load_queue_ptr) 112 out_RETIRE_LOAD_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 113 out_RETIRE_HAS_IMMEDIAT = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 114 out_RETIRE_IMMEDIAT = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 115 out_RETIRE_DATA_RA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 116 out_RETIRE_DATA_RB = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 117 out_RETIRE_DATA_RC = new SC_OUT(Tspecial_data_t ) * [_param->_nb_inst_retire]; 118 out_RETIRE_WRITE_RD = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 119 out_RETIRE_NUM_REG_RD = new SC_OUT(Tgeneral_address_t) * [_param->_nb_inst_retire]; 120 out_RETIRE_WRITE_RE = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 121 out_RETIRE_NUM_REG_RE = new SC_OUT(Tspecial_address_t) * [_param->_nb_inst_retire]; 122 123 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 124 { 125 Interface_fifo * interface = _interfaces->set_interface("retire_"+toString(i) 126 #ifdef POSITION 127 ,OUT 128 ,WEST 129 ,"Output of reservation_station" 130 #endif 131 ); 132 out_RETIRE_VAL [i] = interface->set_signal_valack_out(VAL); 133 in_RETIRE_ACK [i] = interface->set_signal_valack_in (ACK); 134 if (_param->_have_port_context_id) 135 out_RETIRE_CONTEXT_ID [i] = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id); 136 if (_param->_have_port_front_end_id) 137 out_RETIRE_FRONT_END_ID [i] = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id); 138 if (_param->_have_port_ooo_engine_id) 139 out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 140 if (_param->_have_port_rob_ptr) 141 out_RETIRE_ROB_ID [i] = interface->set_signal_out<Tpacket_t > ("rob_id" ,_param->_size_rob_ptr); 142 out_RETIRE_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 143 out_RETIRE_TYPE [i] = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type); 144 out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 145 if (_param->_have_port_load_queue_ptr) 146 out_RETIRE_LOAD_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 128 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 { 130 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_spr_write); 131 132 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 133 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 134 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 135 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 147 136 148 out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat" ,1); 149 out_RETIRE_IMMEDIAT [i] = interface->set_signal_out<Tgeneral_data_t > ("immediat" ,_param->_size_general_data); 150 out_RETIRE_DATA_RA [i] = interface->set_signal_out<Tgeneral_data_t > ("data_ra" ,_param->_size_general_data); 151 out_RETIRE_DATA_RB [i] = interface->set_signal_out<Tgeneral_data_t > ("data_rb" ,_param->_size_general_data); 152 out_RETIRE_DATA_RC [i] = interface->set_signal_out<Tspecial_data_t > ("data_rc" ,_param->_size_special_data); 153 out_RETIRE_WRITE_RD [i] = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 154 out_RETIRE_NUM_REG_RD [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 155 out_RETIRE_WRITE_RE [i] = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 156 out_RETIRE_NUM_REG_RE [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 157 } 137 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 138 } 158 139 159 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 161 if (_param->_have_port_ooo_engine_id) 162 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 163 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 164 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 140 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 141 { 142 ALLOC1_INTERFACE_BEGIN("bypass_write",IN,NORTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_bypass_write); 165 143 166 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 167 { 168 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 169 #ifdef POSITION 170 , IN 171 ,SOUTH 172 , "Interface with write queue to bypass the write in the RegisterFile." 173 #endif 174 ); 144 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 145 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL ,"gpr_val" ,Tcontrol_t ,1); 146 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG ,"gpr_num_reg" ,Tgeneral_address_t,_param->_size_general_register); 147 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA ,"gpr_data" ,Tgeneral_data_t ,_param->_size_general_data); 148 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL ,"spr_val" ,Tcontrol_t ,1); 149 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 150 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data); 151 152 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 153 } 154 155 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 156 { 157 ALLOC1_INTERFACE_BEGIN("bypass_memory",IN,NORTH,_("Interface with load/store unit to bypass the write in the RegisterFile."),_param->_nb_bypass_memory); 175 158 176 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 177 if (_param->_have_port_ooo_engine_id) 178 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 179 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 180 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 181 } 182 183 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 185 if (_param->_have_port_ooo_engine_id) 186 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 187 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 188 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 189 190 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 191 { 192 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 193 #ifdef POSITION 194 , IN 195 ,SOUTH 196 , "Interface with write queue to bypass the write in the RegisterFile." 197 #endif 198 ); 199 200 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 201 if (_param->_have_port_ooo_engine_id) 202 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 203 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 204 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 205 } 206 207 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 208 if (_param->_have_port_ooo_engine_id) 209 in_BYPASS_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; 210 in_BYPASS_WRITE_GPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 211 in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write]; 212 in_BYPASS_WRITE_GPR_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_write]; 213 in_BYPASS_WRITE_SPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 214 in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write]; 215 in_BYPASS_WRITE_SPR_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_bypass_write]; 216 217 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 218 { 219 Interface_fifo * interface = _interfaces->set_interface("bypass_write_"+toString(i) 220 #ifdef POSITION 221 , IN 222 ,NORTH 223 , "Interface with write queue to bypass the write in the RegisterFile." 224 #endif 225 ); 226 227 if (_param->_have_port_ooo_engine_id) 228 in_BYPASS_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id); 229 in_BYPASS_WRITE_GPR_VAL [i] = interface->set_signal_valack_in ("gpr_val",VAL); 230 in_BYPASS_WRITE_GPR_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("gpr_num_reg" ,_param->_size_general_register); 231 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 232 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 233 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_special_register); 234 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_special_data); 235 } 236 237 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 238 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 239 if (_param->_have_port_ooo_engine_id) 240 in_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_bypass_memory]; 241 in_BYPASS_MEMORY_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory]; 242 in_BYPASS_MEMORY_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_memory]; 243 244 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) 245 { 246 Interface_fifo * interface = _interfaces->set_interface("bypass_memory_"+toString(i) 247 #ifdef POSITION 248 , IN 249 , NORTH 250 , "Interface with load/store unit to bypass the write in the RegisterFile." 251 #endif 252 ); 253 254 in_BYPASS_MEMORY_VAL [i] = interface->set_signal_valack_in (VAL); 255 if (_param->_have_port_ooo_engine_id) 256 in_BYPASS_MEMORY_OOO_ENGINE_ID[i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 257 in_BYPASS_MEMORY_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 258 in_BYPASS_MEMORY_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 259 } 260 159 ALLOC1_VALACK_IN ( in_BYPASS_MEMORY_VAL ,VAL); 160 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 161 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 162 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 163 164 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 165 } 261 166 262 167 if (usage_is_set(_usage,USE_SYSTEMC)) 263 168 { 264 169 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265 internal_RETIRE_VAL = new Tcontrol_t [_param->_nb_inst_retire];266 internal_RETIRE_SLOT = new uint32_t [_param->_nb_inst_retire];170 ALLOC1(internal_RETIRE_VAL ,Tcontrol_t,_param->_nb_inst_retire); 171 ALLOC1(internal_RETIRE_SLOT,uint32_t ,_param->_nb_inst_retire); 267 172 } 268 173 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
r88 r112 11 11 12 12 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 13 #include "Behavioural/include/Allocation.h" 13 14 14 15 namespace morpheo { … … 30 31 if (usage_is_set(_usage,USE_SYSTEMC)) 31 32 { 32 delete in_CLOCK ;33 delete in_NRESET;33 delete in_CLOCK ; 34 delete in_NRESET; 34 35 35 delete in_INSERT_VAL ; 36 delete out_INSERT_ACK ; 37 if (_param->_have_port_context_id) 38 delete in_INSERT_CONTEXT_ID ; 39 if (_param->_have_port_front_end_id) 40 delete in_INSERT_FRONT_END_ID ; 41 if (_param->_have_port_ooo_engine_id) 42 delete in_INSERT_OOO_ENGINE_ID ; 43 if (_param->_have_port_rob_ptr) 44 delete in_INSERT_ROB_ID ; 45 delete in_INSERT_OPERATION ; 46 delete in_INSERT_TYPE ; 47 delete in_INSERT_STORE_QUEUE_PTR_WRITE; 48 if (_param->_have_port_load_queue_ptr) 49 delete in_INSERT_LOAD_QUEUE_PTR_WRITE ; 50 delete in_INSERT_HAS_IMMEDIAT ; 51 delete in_INSERT_IMMEDIAT ; 52 // delete in_INSERT_READ_RA ; 53 delete in_INSERT_NUM_REG_RA ; 54 delete in_INSERT_DATA_RA_VAL ; 55 delete in_INSERT_DATA_RA ; 56 // delete in_INSERT_READ_RB ; 57 delete in_INSERT_NUM_REG_RB ; 58 delete in_INSERT_DATA_RB_VAL ; 59 delete in_INSERT_DATA_RB ; 60 // delete in_INSERT_READ_RC ; 61 delete in_INSERT_NUM_REG_RC ; 62 delete in_INSERT_DATA_RC_VAL ; 63 delete in_INSERT_DATA_RC ; 64 delete in_INSERT_WRITE_RD ; 65 delete in_INSERT_NUM_REG_RD ; 66 delete in_INSERT_WRITE_RE ; 67 delete in_INSERT_NUM_REG_RE ; 68 69 delete [] out_RETIRE_VAL ; 70 delete [] in_RETIRE_ACK ; 71 if (_param->_have_port_context_id) 72 delete [] out_RETIRE_CONTEXT_ID ; 73 if (_param->_have_port_front_end_id) 74 delete [] out_RETIRE_FRONT_END_ID ; 75 if (_param->_have_port_ooo_engine_id) 76 delete [] out_RETIRE_OOO_ENGINE_ID ; 77 if (_param->_have_port_rob_ptr) 78 delete [] out_RETIRE_ROB_ID ; 79 delete [] out_RETIRE_OPERATION ; 80 delete [] out_RETIRE_TYPE ; 81 delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE; 82 if (_param->_have_port_load_queue_ptr) 83 delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ; 84 delete [] out_RETIRE_HAS_IMMEDIAT ; 85 delete [] out_RETIRE_IMMEDIAT ; 86 delete [] out_RETIRE_DATA_RA ; 87 delete [] out_RETIRE_DATA_RB ; 88 delete [] out_RETIRE_DATA_RC ; 89 delete [] out_RETIRE_WRITE_RD ; 90 delete [] out_RETIRE_NUM_REG_RD ; 91 delete [] out_RETIRE_WRITE_RE ; 92 delete [] out_RETIRE_NUM_REG_RE ; 93 94 delete [] in_GPR_WRITE_VAL ; 95 if (_param->_have_port_ooo_engine_id) 96 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 97 delete [] in_GPR_WRITE_NUM_REG ; 98 delete [] in_GPR_WRITE_DATA ; 99 100 delete [] in_SPR_WRITE_VAL ; 101 if (_param->_have_port_ooo_engine_id) 102 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 103 delete [] in_SPR_WRITE_NUM_REG ; 104 delete [] in_SPR_WRITE_DATA ; 105 106 if (_param->_have_port_ooo_engine_id) 107 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID; 108 delete [] in_BYPASS_WRITE_GPR_VAL ; 109 delete [] in_BYPASS_WRITE_GPR_NUM_REG; 110 delete [] in_BYPASS_WRITE_GPR_DATA ; 111 delete [] in_BYPASS_WRITE_SPR_VAL ; 112 delete [] in_BYPASS_WRITE_SPR_NUM_REG; 113 delete [] in_BYPASS_WRITE_SPR_DATA ; 114 115 delete [] in_BYPASS_MEMORY_VAL ; 116 if (_param->_have_port_ooo_engine_id) 117 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 118 delete [] in_BYPASS_MEMORY_NUM_REG ; 119 delete [] in_BYPASS_MEMORY_DATA ; 120 121 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 delete [] internal_RETIRE_VAL; 123 delete [] internal_RETIRE_SLOT; 36 DELETE0_SIGNAL( in_INSERT_VAL ,1); 37 DELETE0_SIGNAL(out_INSERT_ACK ,1); 38 DELETE0_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_size_context_id ); 39 DELETE0_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_size_front_end_id ); 40 DELETE0_SIGNAL( in_INSERT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 41 DELETE0_SIGNAL( in_INSERT_ROB_ID ,_param->_size_rob_ptr ); 42 DELETE0_SIGNAL( in_INSERT_OPERATION ,_param->_size_operation ); 43 DELETE0_SIGNAL( in_INSERT_TYPE ,_param->_size_type ); 44 DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr ); 45 DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 46 DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT ,1 ); 47 DELETE0_SIGNAL( in_INSERT_IMMEDIAT ,_param->_size_general_data ); 48 // DELETE0_SIGNAL( in_INSERT_READ_RA ,1 ); 49 DELETE0_SIGNAL( in_INSERT_NUM_REG_RA ,_param->_size_general_register); 50 DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL ,1 ); 51 DELETE0_SIGNAL( in_INSERT_DATA_RA ,_param->_size_general_data ); 52 // DELETE0_SIGNAL( in_INSERT_READ_RB ,1 ); 53 DELETE0_SIGNAL( in_INSERT_NUM_REG_RB ,_param->_size_general_register); 54 DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL ,1 ); 55 DELETE0_SIGNAL( in_INSERT_DATA_RB ,_param->_size_general_data ); 56 // DELETE0_SIGNAL( in_INSERT_READ_RC ,1 ); 57 DELETE0_SIGNAL( in_INSERT_NUM_REG_RC ,_param->_size_special_register); 58 DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL ,1 ); 59 DELETE0_SIGNAL( in_INSERT_DATA_RC ,_param->_size_special_data ); 60 DELETE0_SIGNAL( in_INSERT_WRITE_RD ,1 ); 61 DELETE0_SIGNAL( in_INSERT_NUM_REG_RD ,_param->_size_general_register); 62 DELETE0_SIGNAL( in_INSERT_WRITE_RE ,1 ); 63 DELETE0_SIGNAL( in_INSERT_NUM_REG_RE ,_param->_size_special_register); 64 65 DELETE1_SIGNAL(out_RETIRE_VAL ,_param->_nb_inst_retire,1); 66 DELETE1_SIGNAL( in_RETIRE_ACK ,_param->_nb_inst_retire,1); 67 DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id); 68 DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 69 DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id); 70 DELETE1_SIGNAL(out_RETIRE_ROB_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr); 71 DELETE1_SIGNAL(out_RETIRE_OPERATION ,_param->_nb_inst_retire,_param->_size_operation); 72 DELETE1_SIGNAL(out_RETIRE_TYPE ,_param->_nb_inst_retire,_param->_size_type); 73 DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 74 DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr ); 75 DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT ,_param->_nb_inst_retire,1); 76 DELETE1_SIGNAL(out_RETIRE_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data); 77 DELETE1_SIGNAL(out_RETIRE_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data); 78 DELETE1_SIGNAL(out_RETIRE_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data); 79 DELETE1_SIGNAL(out_RETIRE_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data); 80 DELETE1_SIGNAL(out_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 81 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 82 DELETE1_SIGNAL(out_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 83 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 85 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 86 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 87 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 88 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 89 90 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 91 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 92 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 93 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 94 95 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id); 96 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL ,_param->_nb_bypass_write,1); 97 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_general_register); 98 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA ,_param->_nb_bypass_write,_param->_size_general_data); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL ,_param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_special_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA ,_param->_nb_bypass_write,_param->_size_special_data); 102 103 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL ,_param->_nb_bypass_memory,1); 104 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id); 105 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG ,_param->_nb_bypass_memory,_param->_size_general_register); 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA ,_param->_nb_bypass_memory,_param->_size_general_data); 107 108 DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire); 109 DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire); 124 110 } 111 125 112 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp
r88 r112 64 64 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 65 65 66 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t );67 ALLOC _SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t );68 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t );69 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t );70 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t );71 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t );72 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t );73 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t );74 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t );75 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t );76 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t );77 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t );78 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t );79 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t);80 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t );81 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t);82 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t );83 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t);84 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t );85 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t);86 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t );87 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t);66 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t ); 67 ALLOC0_SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t ); 68 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t ); 69 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t ); 70 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t ); 71 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t ); 72 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t ); 73 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t ); 74 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 75 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 76 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t ); 77 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t ); 78 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t ); 79 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t); 80 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t ); 81 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t); 82 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t ); 83 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t); 84 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t ); 85 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t); 86 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t ); 87 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t); 88 88 ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_VAL ,"out_READ_UNIT_OUT_VAL ",Tcontrol_t ,_param->_nb_inst_retire); 89 89 ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_ACK ," in_READ_UNIT_OUT_ACK ",Tcontrol_t ,_param->_nb_inst_retire); … … 146 146 (*(_Read_unit->in_NRESET)) (*(in_NRESET)); 147 147 148 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL );149 INSTANCE _SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK );148 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL ); 149 INSTANCE0_SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK ); 150 150 if (_param->_have_port_context_id) 151 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID );151 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID ); 152 152 if (_param->_have_port_front_end_id) 153 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID );153 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID ); 154 154 if (_param->_have_port_ooo_engine_id) 155 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID );155 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID ); 156 156 if (_param->_have_port_rob_ptr) 157 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID );158 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION );159 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE );160 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );157 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID ); 158 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION ); 159 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE ); 160 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ); 161 161 if (_param->_have_port_load_queue_ptr) 162 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE );163 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT );164 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT );165 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA );166 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA );167 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB );168 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB );169 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC );170 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC );171 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD );172 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD );173 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE );174 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE );162 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ); 163 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT ); 164 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT ); 165 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA ); 166 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA ); 167 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB ); 168 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB ); 169 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC ); 170 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC ); 171 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD ); 172 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD ); 173 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE ); 174 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE ); 175 175 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire); 176 176 INSTANCE1_SC_SIGNAL(_Read_unit, in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
r97 r112 57 57 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC_INTERFACE("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 59 ALLOC0_INTERFACE_BEGIN("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC0_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC0_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 83 84 ALLOC0_INTERFACE_END(); 83 85 } 84 86 85 87 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 88 { 87 ALLOC1_INTERFACE ("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire);89 ALLOC1_INTERFACE_BEGIN("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire); 88 90 89 91 ALLOC1_VALACK_OUT (out_READ_UNIT_OUT_VAL,VAL); … … 106 108 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 107 109 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 110 111 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 108 112 } 109 113 110 114 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 115 { 112 ALLOC1_INTERFACE ("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read);116 ALLOC1_INTERFACE_BEGIN("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read); 113 117 114 118 ALLOC1_VALACK_OUT (out_GPR_READ_VAL,VAL); … … 118 122 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 119 123 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 120 126 } 121 127 122 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 129 { 124 ALLOC1_INTERFACE ("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read);130 ALLOC1_INTERFACE_BEGIN("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read); 125 131 126 132 ALLOC1_VALACK_OUT (out_SPR_READ_VAL,VAL); … … 130 136 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 131 137 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 138 139 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 132 140 } 133 141 134 142 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 135 143 { 136 ALLOC1_INTERFACE ("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write);144 ALLOC1_INTERFACE_BEGIN("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write); 137 145 138 146 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL,VAL); … … 140 148 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 141 149 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 150 151 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 142 152 } 143 153 144 154 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 145 155 { 146 ALLOC1_INTERFACE ("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write);156 ALLOC1_INTERFACE_BEGIN("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write); 147 157 148 158 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL,VAL); … … 150 160 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 151 161 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 162 163 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 152 164 } 153 165 154 166 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 167 { 156 ALLOC1_INTERFACE ("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write);168 ALLOC1_INTERFACE_BEGIN("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write); 157 169 158 170 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 163 175 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 164 176 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 177 178 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 165 179 } 166 180 167 181 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 168 182 { 169 ALLOC1_INTERFACE ("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory);183 ALLOC1_INTERFACE_BEGIN("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory); 170 184 171 185 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL ,"val" ,Tcontrol_t ,1); … … 173 187 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 174 188 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 189 190 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 175 191 } 176 192 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 delete in_READ_UNIT_IN_VAL ; 32 delete out_READ_UNIT_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_READ_UNIT_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_READ_UNIT_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_READ_UNIT_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_rob_ptr) 40 delete in_READ_UNIT_IN_PACKET_ID ; 41 delete in_READ_UNIT_IN_OPERATION ; 42 delete in_READ_UNIT_IN_TYPE ; 43 delete in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 46 delete in_READ_UNIT_IN_HAS_IMMEDIAT ; 47 delete in_READ_UNIT_IN_IMMEDIAT ; 48 delete in_READ_UNIT_IN_READ_RA ; 49 delete in_READ_UNIT_IN_NUM_REG_RA ; 50 delete in_READ_UNIT_IN_READ_RB ; 51 delete in_READ_UNIT_IN_NUM_REG_RB ; 52 delete in_READ_UNIT_IN_READ_RC ; 53 delete in_READ_UNIT_IN_NUM_REG_RC ; 54 delete in_READ_UNIT_IN_WRITE_RD ; 55 delete in_READ_UNIT_IN_NUM_REG_RD ; 56 delete in_READ_UNIT_IN_WRITE_RE ; 57 delete in_READ_UNIT_IN_NUM_REG_RE ; 31 DELETE0_SIGNAL( in_READ_UNIT_IN_VAL ,1); 32 DELETE0_SIGNAL(out_READ_UNIT_IN_ACK ,1); 33 DELETE0_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id); 36 DELETE0_SIGNAL( in_READ_UNIT_IN_PACKET_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_UNIT_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_UNIT_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr); 40 DELETE0_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr); 41 DELETE0_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ,1); 42 DELETE0_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ,_param->_size_general_data); 43 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RA ,1); 44 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RB ,1); 46 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RC ,1); 48 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RD ,1); 50 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RE ,1); 52 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ,_param->_size_special_register); 58 53 59 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 delete [] out_READ_UNIT_OUT_VAL ; 61 delete [] in_READ_UNIT_OUT_ACK ; 62 if (_param->_have_port_context_id) 63 delete [] out_READ_UNIT_OUT_CONTEXT_ID ; 64 if (_param->_have_port_front_end_id) 65 delete [] out_READ_UNIT_OUT_FRONT_END_ID ; 66 if (_param->_have_port_ooo_engine_id) 67 delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID ; 68 if (_param->_have_port_rob_ptr) 69 delete [] out_READ_UNIT_OUT_PACKET_ID ; 70 delete [] out_READ_UNIT_OUT_OPERATION ; 71 delete [] out_READ_UNIT_OUT_TYPE ; 72 delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 73 if (_param->_have_port_load_queue_ptr) 74 delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 75 delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT ; 76 delete [] out_READ_UNIT_OUT_IMMEDIAT ; 77 delete [] out_READ_UNIT_OUT_DATA_RA ; 78 delete [] out_READ_UNIT_OUT_DATA_RB ; 79 delete [] out_READ_UNIT_OUT_DATA_RC ; 80 delete [] out_READ_UNIT_OUT_WRITE_RD ; 81 delete [] out_READ_UNIT_OUT_NUM_REG_RD ; 82 delete [] out_READ_UNIT_OUT_WRITE_RE ; 83 delete [] out_READ_UNIT_OUT_NUM_REG_RE ; 54 DELETE1_SIGNAL(out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire,1); 55 DELETE1_SIGNAL( in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire,1); 56 DELETE1_SIGNAL(out_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 57 DELETE1_SIGNAL(out_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 58 DELETE1_SIGNAL(out_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id ); 59 DELETE1_SIGNAL(out_READ_UNIT_OUT_PACKET_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr ); 60 DELETE1_SIGNAL(out_READ_UNIT_OUT_OPERATION ,_param->_nb_inst_retire,_param->_size_operation ); 61 DELETE1_SIGNAL(out_READ_UNIT_OUT_TYPE ,_param->_nb_inst_retire,_param->_size_type ); 62 DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 63 DELETE1_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr); 64 DELETE1_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_inst_retire,1 ); 65 DELETE1_SIGNAL(out_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data ); 66 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data ); 67 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data ); 68 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data ); 69 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RD ,_param->_nb_inst_retire,1 ); 70 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 71 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RE ,_param->_nb_inst_retire,1 ); 72 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 73 85 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 delete [] out_GPR_READ_VAL ; 87 delete [] in_GPR_READ_ACK ; 88 if (_param->_have_port_ooo_engine_id) 89 delete [] out_GPR_READ_OOO_ENGINE_ID; 90 delete [] out_GPR_READ_NUM_REG ; 91 delete [] in_GPR_READ_DATA ; 92 delete [] in_GPR_READ_DATA_VAL ; 74 DELETE1_SIGNAL(out_GPR_READ_VAL , _param->_nb_gpr_read,1); 75 DELETE1_SIGNAL( in_GPR_READ_ACK , _param->_nb_gpr_read,1); 76 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID, _param->_nb_gpr_read,_param->_size_ooo_engine_id ); 77 DELETE1_SIGNAL(out_GPR_READ_NUM_REG , _param->_nb_gpr_read,_param->_size_general_register); 78 DELETE1_SIGNAL( in_GPR_READ_DATA , _param->_nb_gpr_read,_param->_size_general_data ); 79 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL , _param->_nb_gpr_read,1); 93 80 94 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 delete [] out_SPR_READ_VAL ; 96 delete [] in_SPR_READ_ACK ; 97 if (_param->_have_port_ooo_engine_id) 98 delete [] out_SPR_READ_OOO_ENGINE_ID; 99 delete [] out_SPR_READ_NUM_REG ; 100 delete [] in_SPR_READ_DATA ; 101 delete [] in_SPR_READ_DATA_VAL ; 81 DELETE1_SIGNAL(out_SPR_READ_VAL , _param->_nb_spr_read,1); 82 DELETE1_SIGNAL( in_SPR_READ_ACK , _param->_nb_spr_read,1); 83 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID, _param->_nb_spr_read,_param->_size_ooo_engine_id ); 84 DELETE1_SIGNAL(out_SPR_READ_NUM_REG , _param->_nb_spr_read,_param->_size_special_register); 85 DELETE1_SIGNAL( in_SPR_READ_DATA , _param->_nb_spr_read,_param->_size_special_data ); 86 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL , _param->_nb_spr_read,1); 102 87 103 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 delete [] in_GPR_WRITE_VAL ; 105 if (_param->_have_port_ooo_engine_id) 106 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 107 delete [] in_GPR_WRITE_NUM_REG ; 108 delete [] in_GPR_WRITE_DATA ; 88 DELETE1_SIGNAL( in_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 89 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 90 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 91 DELETE1_SIGNAL( in_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data); 109 92 110 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 delete [] in_SPR_WRITE_VAL ; 112 if (_param->_have_port_ooo_engine_id) 113 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 114 delete [] in_SPR_WRITE_NUM_REG ; 115 delete [] in_SPR_WRITE_DATA ; 93 DELETE1_SIGNAL( in_SPR_WRITE_VAL , _param->_nb_spr_write,1); 94 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 95 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 96 DELETE1_SIGNAL( in_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data); 116 97 117 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 if (_param->_have_port_ooo_engine_id) 119 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID ; 120 delete [] in_BYPASS_WRITE_GPR_VAL ; 121 delete [] in_BYPASS_WRITE_GPR_NUM_REG ; 122 delete [] in_BYPASS_WRITE_GPR_DATA ; 123 delete [] in_BYPASS_WRITE_SPR_VAL ; 124 delete [] in_BYPASS_WRITE_SPR_NUM_REG ; 125 delete [] in_BYPASS_WRITE_SPR_DATA ; 98 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id ); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL , _param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG , _param->_nb_bypass_write,_param->_size_general_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA , _param->_nb_bypass_write,_param->_size_general_data ); 102 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL , _param->_nb_bypass_write,1); 103 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG , _param->_nb_bypass_write,_param->_size_special_register); 104 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA , _param->_nb_bypass_write,_param->_size_special_data ); 126 105 127 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 delete [] in_BYPASS_MEMORY_VAL ; 129 if (_param->_have_port_ooo_engine_id) 130 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 131 delete [] in_BYPASS_MEMORY_NUM_REG ; 132 delete [] in_BYPASS_MEMORY_DATA ; 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL , _param->_nb_bypass_memory,1); 107 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID, _param->_nb_bypass_memory,_param->_size_ooo_engine_id ); 108 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG , _param->_nb_bypass_memory,_param->_size_general_register); 109 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA , _param->_nb_bypass_memory,_param->_size_general_data ); 133 110 } 134 111 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Note: See TracChangeset
for help on using the changeset viewer.