Changeset 112 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp
r110 r112 58 58 // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]);60 ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]); 61 61 62 62 … … 64 64 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 65 65 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]); 66 } 67 { 68 ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context); 66 67 ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]); 68 } 69 { 70 ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context); 69 71 72 70 73 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 71 74 ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address ); … … 75 78 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 76 79 ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 80 81 ALLOC1_INTERFACE_END(_param->_nb_context); 77 82 } 78 83 79 84 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 85 { 81 ALLOC1_INTERFACE ("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);86 ALLOC1_INTERFACE_BEGIN("decod", OUT, EAST, _("Instructiont decoded"), _param->_nb_inst_decod); 82 87 83 88 ALLOC1_VALACK_OUT(out_DECOD_VAL ,VAL); … … 107 112 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t ,_param->_size_exception_use ); 108 113 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_decod ); 114 115 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 109 116 } 110 117 111 118 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 119 { 113 ALLOC1_INTERFACE ("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);120 ALLOC1_INTERFACE_BEGIN("predict",OUT,NORTH,_("Decod a branch -> inform the branch predictor."),_param->_nb_inst_decod); 114 121 115 122 ALLOC1_VALACK_OUT(out_PREDICT_VAL ,VAL); … … 125 132 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST ,"address_dest" ,Tgeneral_data_t ,_param->_size_instruction_address ); 126 133 ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 ); 134 135 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 127 136 } 128 137 129 138 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 139 { 131 ALLOC1_INTERFACE ("context", IN, NORTH, "context's information", _param->_nb_context);140 ALLOC1_INTERFACE_BEGIN("context", IN, NORTH, _("context's information"), _param->_nb_context); 132 141 133 142 ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1); 134 143 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL ,"depth_val" ,Tcontrol_t,1); 135 144 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 145 146 ALLOC1_INTERFACE_END(_param->_nb_context); 136 147 } 137 148 138 149 // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 150 { 140 ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement"); 141 142 ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL ,VAL); 143 ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK ,ACK); 144 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 145 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 146 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 147 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 148 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_instruction_address); 149 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address); 151 ALLOC0_INTERFACE_BEGIN("context_event", OUT, NORTH, _("context's evenement")); 152 153 ALLOC0_VALACK_OUT(out_CONTEXT_EVENT_VAL ,VAL); 154 ALLOC0_VALACK_IN ( in_CONTEXT_EVENT_ACK ,ACK); 155 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 156 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 157 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 158 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 159 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_instruction_address); 160 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address); 161 162 ALLOC0_INTERFACE_END(); 150 163 } 151 164 … … 154 167 if (usage_is_set(_usage,USE_SYSTEMC)) 155 168 { 156 reg_CONTEXT_ADDRESS_PREVIOUS = new Tgeneral_data_t [_param->_nb_context];157 reg_CONTEXT_IS_DELAY_SLOT = new Tcontrol_t [_param->_nb_context];158 159 internal_CONTEXT_HAVE_TRANSACTION = new Tcontrol_t [_param->_nb_context];160 internal_CONTEXT_ADDRESS_PREVIOUS = new Tgeneral_data_t [_param->_nb_context];161 internal_CONTEXT_IS_DELAY_SLOT = new Tcontrol_t [_param->_nb_context];169 ALLOC1(reg_CONTEXT_ADDRESS_PREVIOUS ,Tgeneral_data_t,_param->_nb_context); 170 ALLOC1(reg_CONTEXT_IS_DELAY_SLOT ,Tcontrol_t ,_param->_nb_context); 171 172 ALLOC1(internal_CONTEXT_HAVE_TRANSACTION ,Tcontrol_t ,_param->_nb_context); 173 ALLOC1(internal_CONTEXT_ADDRESS_PREVIOUS ,Tgeneral_data_t,_param->_nb_context); 174 ALLOC1(internal_CONTEXT_IS_DELAY_SLOT ,Tcontrol_t ,_param->_nb_context); 162 175 163 176 #ifdef STATISTICS 164 internal_DECOD_VAL = new Tcontrol_t [_param->_nb_inst_decod];177 ALLOC1(internal_DECOD_VAL ,Tcontrol_t ,_param->_nb_inst_decod); 165 178 #endif 166 179 } … … 174 187 _param->_nb_context_select); 175 188 176 const uint32_t nb_opcod_type = 14; 177 const uint32_t tab_opcod_type [] = {MAX_OPCOD_0, 178 MAX_OPCOD_1 , 179 MAX_OPCOD_2 , 180 MAX_OPCOD_3 , 181 MAX_OPCOD_4 , 182 MAX_OPCOD_5 , 183 MAX_OPCOD_6 , 184 MAX_OPCOD_7 , 185 MAX_OPCOD_8 , 186 MAX_OPCOD_9 , 187 MAX_OPCOD_10, 188 MAX_OPCOD_11, 189 MAX_OPCOD_12, 190 MAX_OPCOD_13}; 191 192 _function_decod = new function_decod_t *** [_param->_nb_context]; 193 _function_custom = new function_decod_t *** [_param->_nb_context]; 189 ALLOC3(_function_decod ,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]); 190 ALLOC3(_function_custom,function_decod_t *,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]); 191 194 192 for (uint32_t i=0; i<_param->_nb_context; i++) 195 193 { 196 _function_decod [i] = new function_decod_t ** [nb_opcod_type];197 _function_custom [i] = new function_decod_t ** [nb_opcod_type];198 194 for (uint32_t j=0; j<nb_opcod_type; j++) 199 { 200 _function_decod [i][j] = new function_decod_t * [tab_opcod_type[j]]; 201 _function_custom [i][j] = new function_decod_t * [tab_opcod_type[j]]; 202 for (uint32_t k=0; k<tab_opcod_type[j]; k++) 203 { 204 _function_decod [i][j][k] = &(instruction_illegal); 205 _function_custom [i][j][k] = &(instruction_illegal); 206 } 207 } 195 for (uint32_t k=0; k<tab_opcod_type[j]; k++) 196 { 197 _function_decod [i][j][k] = &(instruction_illegal); 198 _function_custom [i][j][k] = &(instruction_illegal); 199 } 208 200 209 201 // Create indirection … … 454 446 } 455 447 456 _decod_instruction = new decod_instruction_t;457 458 _decod_param = new decod_param_t * [_param->_nb_context]; 448 ALLOC0(_decod_instruction,decod_instruction_t); 449 ALLOC1(_decod_param,decod_param_t *,_param->_nb_context); 450 459 451 for (uint32_t i=0; i<_param->_nb_context; i++) 460 452 _decod_param [i] = new decod_param_t (_param->_size_general_data,
Note: See TracChangeset
for help on using the changeset viewer.