Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_allocation.cpp
- Timestamp:
- Dec 10, 2008, 7:31:39 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/src/Decod_unit_allocation.cpp
r87 r88 58 58 // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[ alloc_interface_it1]);61 62 63 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1]);64 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1]);65 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1]);60 ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]); 61 62 63 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 64 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 65 _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]); 66 66 } 67 67 { 68 68 ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context); 69 69 70 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 71 ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_address_inst ); 72 // ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_address_inst ); 73 ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr ); 74 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 75 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_branch_update_prediction); 70 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 71 ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS ,"address" ,Tgeneral_address_t ,_param->_size_instruction_address ); 72 // ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t ,_param->_size_instruction_address ); 73 ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr ); 74 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 75 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 76 ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 76 77 } 77 78 … … 86 87 ALLOC1_SIGNAL_OUT(out_DECOD_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 87 88 ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 89 ALLOC1_SIGNAL_OUT(out_DECOD_NO_EXECUTE ,"no_execute" ,Tcontrol_t ,1 ); 88 90 ALLOC1_SIGNAL_OUT(out_DECOD_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 89 ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS ,"address" ,Tgeneral_data_t ,_param->_size_ address_inst);91 ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS ,"address" ,Tgeneral_data_t ,_param->_size_instruction_address ); 90 92 ALLOC1_SIGNAL_OUT(out_DECOD_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 91 93 ALLOC1_SIGNAL_OUT(out_DECOD_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); … … 101 103 ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register_logic); 102 104 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t ,_param->_size_exception_use ); 105 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_decod ); 103 106 } 104 107 … … 109 112 ALLOC1_VALACK_OUT(out_PREDICT_VAL ,VAL); 110 113 ALLOC1_VALACK_IN ( in_PREDICT_ACK ,ACK); 111 ALLOC1_SIGNAL_OUT(out_PREDICT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id 112 ALLOC1_SIGNAL_OUT(out_PREDICT_MATCH_INST_IFETCH_PTR ,"match_inst_ifetch_ptr" ,Tcontrol_t ,1 113 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state 114 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_ branch_update_prediction);115 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_CONDITION ,"branch_condition" ,Tbranch_condition_t,_param->_size_branch_condition 116 // ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STACK_WRITE ,"branch_stack_write" ,Tcontrol_t ,1 117 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_DIRECTION ,"branch_direction" ,Tcontrol_t ,1 118 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t ,_param->_size_ address_inst);119 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST ,"address_dest" ,Tgeneral_data_t ,_param->_size_ address_inst);120 // ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 114 ALLOC1_SIGNAL_OUT(out_PREDICT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 115 ALLOC1_SIGNAL_OUT(out_PREDICT_MATCH_INST_IFETCH_PTR ,"match_inst_ifetch_ptr" ,Tcontrol_t ,1 ); 116 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 117 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 118 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_CONDITION ,"branch_condition" ,Tbranch_condition_t,_param->_size_branch_condition); 119 // ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STACK_WRITE ,"branch_stack_write" ,Tcontrol_t ,1 ); 120 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_DIRECTION ,"branch_direction" ,Tcontrol_t ,1 ); 121 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t ,_param->_size_instruction_address ); 122 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST ,"address_dest" ,Tgeneral_data_t ,_param->_size_instruction_address ); 123 // ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 ); 121 124 } 122 125 … … 125 128 ALLOC1_INTERFACE("depth",IN ,NORTH,"Depth", _param->_nb_context); 126 129 127 ALLOC1_SIGNAL_IN ( in_DEPTH_TAIL ,"tail" ,Tdepth_t ,_param->_size_depth ); 128 if (_param->_have_port_depth) 129 ALLOC1_SIGNAL_IN ( in_DEPTH_NB_BRANCH,"nb_branch",Tdepth_t ,_param->_size_depth+1); 130 } 131 132 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 ALLOC1_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t ,_param->_size_depth ); 131 ALLOC1_SIGNAL_IN ( in_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth+1); 132 } 133 134 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 133 135 { 134 136 ALLOC1_INTERFACE("nb_inst",OUT,NORTH,"Instruction's number", _param->_nb_context); 135 137 136 ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL ,"decod_all" ,Tcontext_t ,_param->_size_nb_inst_decod +1);138 ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL ,"decod_all" ,Tcontext_t ,_param->_size_nb_inst_decod); 137 139 } 138 140 … … 152 154 ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK ,ACK); 153 155 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 156 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 154 157 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 155 158 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 156 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_ address_inst);157 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_ address_inst);159 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_instruction_address); 160 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address); 158 161 } 159 162 … … 254 257 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_STATE" , 255 258 dest, "in_IFETCH_"+toString(i)+"_BRANCH_STATE" ); 256 if (_param->_have_port_ branch_update_prediction_id)259 if (_param->_have_port_depth) 257 260 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID", 258 261 dest, "in_IFETCH_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID"); 262 PORT_MAP(_component,src , "in_IFETCH_"+toString(i)+"_EXCEPTION" , 263 dest, "in_IFETCH_"+toString(i)+"_EXCEPTION" ); 259 264 } 260 265 … … 282 287 COMPONENT_MAP(_component,src ,"out_DECOD_" +toString(i)+"_OPERATION" , 283 288 dest, "in_DECOD_IN_"+toString(i)+"_OPERATION" ); 289 COMPONENT_MAP(_component,src ,"out_DECOD_" +toString(i)+"_NO_EXECUTE" , 290 dest, "in_DECOD_IN_"+toString(i)+"_NO_EXECUTE" ); 284 291 COMPONENT_MAP(_component,src ,"out_DECOD_" +toString(i)+"_IS_DELAY_SLOT", 285 292 dest, "in_DECOD_IN_"+toString(i)+"_IS_DELAY_SLOT"); … … 312 319 COMPONENT_MAP(_component,src ,"out_DECOD_" +toString(i)+"_EXCEPTION_USE", 313 320 dest, "in_DECOD_IN_"+toString(i)+"_EXCEPTION_USE"); 321 COMPONENT_MAP(_component,src ,"out_DECOD_" +toString(i)+"_EXCEPTION" , 322 dest, "in_DECOD_IN_"+toString(i)+"_EXCEPTION" ); 314 323 } 315 324 … … 334 343 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_BRANCH_STATE" , 335 344 dest,"out_PREDICT_"+toString(i)+"_BRANCH_STATE" ); 336 if (_param->_have_port_ branch_update_prediction_id)345 if (_param->_have_port_depth) 337 346 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID", 338 347 dest,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID"); … … 382 391 PORT_MAP(_component,src ,"out_CONTEXT_EVENT_CONTEXT_ID" , 383 392 dest,"out_CONTEXT_EVENT_CONTEXT_ID" ); 393 if (_param->_have_port_depth) 394 PORT_MAP(_component,src ,"out_CONTEXT_EVENT_DEPTH" , 395 dest,"out_CONTEXT_EVENT_DEPTH" ); 384 396 PORT_MAP(_component,src ,"out_CONTEXT_EVENT_TYPE" , 385 397 dest,"out_CONTEXT_EVENT_TYPE" ); … … 417 429 // in_DECOD_IN_TYPE - component decod 418 430 // in_DECOD_IN_OPERATION - component decod 431 // in_DECOD_IN_NO_EXECUTE - component decod 419 432 // in_DECOD_IN_IS_DELAY_SLOT - component decod 420 433 // in_DECOD_IN_ADDRESS - component decod … … 432 445 // in_DECOD_IN_NUM_REG_RE - component decod 433 446 // in_DECOD_IN_EXCEPTION_USE - component decod 447 // in_DECOD_IN_EXCEPTION - component decod 434 448 435 449 for (uint32_t i=0; i<_param->_nb_inst_decod; i++) … … 456 470 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_OPERATION" , 457 471 dest,"out_DECOD_" +toString(i)+"_OPERATION" ); 472 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_NO_EXECUTE" , 473 dest,"out_DECOD_" +toString(i)+"_NO_EXECUTE" ); 458 474 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_IS_DELAY_SLOT", 459 475 dest,"out_DECOD_" +toString(i)+"_IS_DELAY_SLOT"); … … 486 502 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_EXCEPTION_USE", 487 503 dest,"out_DECOD_" +toString(i)+"_EXCEPTION_USE"); 488 } 489 490 if (_param->_have_port_depth) 504 PORT_MAP(_component,src ,"out_DECOD_OUT_"+toString(i)+"_EXCEPTION" , 505 dest,"out_DECOD_" +toString(i)+"_EXCEPTION" ); 506 } 507 491 508 for (uint32_t i=0; i<_param->_nb_context; i++) 492 509 { … … 498 515 #endif 499 516 500 PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_TAIL" , 501 dest, "in_DEPTH_"+toString(i)+"_TAIL" ); 502 PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_NB_BRANCH", 503 dest, "in_DEPTH_"+toString(i)+"_NB_BRANCH"); 517 if (_param->_have_port_depth) 518 PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_MIN", 519 dest, "in_DEPTH_"+toString(i)+"_MIN"); 520 PORT_MAP(_component,src , "in_DEPTH_"+toString(i)+"_MAX", 521 dest, "in_DEPTH_"+toString(i)+"_MAX"); 504 522 } 505 523 … … 518 536 } 519 537 // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 520 if (DEBUG_Decod_unit == true) 538 #if DEBUG_Decod_unit == true 521 539 _component->test_map(); 522 540 #endif 541 523 542 #ifdef POSITION 524 543 if (usage_is_set(_usage,USE_POSITION))
Note: See TracChangeset
for help on using the changeset viewer.