Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit.cpp
r83 r88 38 38 39 39 usage_environment(_usage); 40 41 #if DEBUG_Decod_unit == true 42 log_printf(INFO,Decod_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 std::cout << *param << std::endl; 45 #endif 40 46 41 47 log_printf(INFO,Decod_unit,FUNCTION,_("Allocation")); -
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)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp
r83 r88 28 28 delete in_NRESET; 29 29 30 DELETE2_SIGNAL( in_IFETCH_VAL ,_param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1],1);31 DELETE2_SIGNAL(out_IFETCH_ACK ,_param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1],1);32 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION ,_param->_nb_context, _param->_nb_inst_fetch[ alloc_signal_it1],_param->_size_instruction);30 DELETE2_SIGNAL( in_IFETCH_VAL ,_param->_nb_context, _param->_nb_inst_fetch[it1],1); 31 DELETE2_SIGNAL(out_IFETCH_ACK ,_param->_nb_context, _param->_nb_inst_fetch[it1],1); 32 DELETE2_SIGNAL( in_IFETCH_INSTRUCTION ,_param->_nb_context, _param->_nb_inst_fetch[it1],_param->_size_instruction); 33 33 34 DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID ,_param->_nb_context,_param->_size_context_id ); 35 DELETE1_SIGNAL(in_IFETCH_ADDRESS ,_param->_nb_context,_param->_size_general_data ); 36 // DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT ,_param->_nb_context,_param->_size_general_data ); 37 DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR ,_param->_nb_context,_param->_size_inst_ifetch_ptr ); 38 DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE ,_param->_nb_context,_param->_size_branch_state ); 39 DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ,_param->_nb_context,_param->_size_branch_update_prediction); 34 DELETE1_SIGNAL(in_IFETCH_CONTEXT_ID ,_param->_nb_context,_param->_size_context_id ); 35 DELETE1_SIGNAL(in_IFETCH_ADDRESS ,_param->_nb_context,_param->_size_general_data ); 36 // DELETE1_SIGNAL(in_IFETCH_ADDRESS_NEXT ,_param->_nb_context,_param->_size_general_data ); 37 DELETE1_SIGNAL(in_IFETCH_INST_IFETCH_PTR ,_param->_nb_context,_param->_size_inst_ifetch_ptr ); 38 DELETE1_SIGNAL(in_IFETCH_BRANCH_STATE ,_param->_nb_context,_param->_size_branch_state ); 39 DELETE1_SIGNAL(in_IFETCH_BRANCH_UPDATE_PREDICTION_ID ,_param->_nb_context,_param->_size_depth ); 40 DELETE1_SIGNAL(in_IFETCH_EXCEPTION ,_param->_nb_context,_param->_size_exception_ifetch); 40 41 41 42 DELETE1_SIGNAL(out_DECOD_VAL ,_param->_nb_inst_decod,1); … … 45 46 DELETE1_SIGNAL(out_DECOD_TYPE ,_param->_nb_inst_decod,_param->_size_type ); 46 47 DELETE1_SIGNAL(out_DECOD_OPERATION ,_param->_nb_inst_decod,_param->_size_operation ); 48 DELETE1_SIGNAL(out_DECOD_NO_EXECUTE ,_param->_nb_inst_decod,1 ); 47 49 DELETE1_SIGNAL(out_DECOD_IS_DELAY_SLOT ,_param->_nb_inst_decod,1 ); 48 50 DELETE1_SIGNAL(out_DECOD_ADDRESS ,_param->_nb_inst_decod,_param->_size_general_data ); … … 60 62 DELETE1_SIGNAL(out_DECOD_NUM_REG_RE ,_param->_nb_inst_decod,_param->_size_special_register_logic); 61 63 DELETE1_SIGNAL(out_DECOD_EXCEPTION_USE ,_param->_nb_inst_decod,_param->_size_exception_use ); 64 DELETE1_SIGNAL(out_DECOD_EXCEPTION ,_param->_nb_inst_decod,_param->_size_exception_decod ); 62 65 63 66 DELETE1_SIGNAL(out_PREDICT_VAL ,_param->_nb_inst_decod,1); 64 67 DELETE1_SIGNAL( in_PREDICT_ACK ,_param->_nb_inst_decod,1); 65 DELETE1_SIGNAL(out_PREDICT_CONTEXT_ID ,_param->_nb_inst_decod,_param->_size_context_id 66 DELETE1_SIGNAL(out_PREDICT_MATCH_INST_IFETCH_PTR ,_param->_nb_inst_decod,1 67 DELETE1_SIGNAL(out_PREDICT_BRANCH_STATE ,_param->_nb_inst_decod,_param->_size_branch_state 68 DELETE1_SIGNAL(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_inst_decod,_param->_size_ branch_update_prediction);69 DELETE1_SIGNAL(out_PREDICT_BRANCH_CONDITION ,_param->_nb_inst_decod,_param->_size_branch_condition 70 // DELETE1_SIGNAL(out_PREDICT_BRANCH_STACK_WRITE ,_param->_nb_inst_decod,1 71 DELETE1_SIGNAL(out_PREDICT_BRANCH_DIRECTION ,_param->_nb_inst_decod,1 72 DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC ,_param->_nb_inst_decod,_param->_size_general_data 73 DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST ,_param->_nb_inst_decod,_param->_size_general_data 74 // DELETE1_SIGNAL( in_PREDICT_CAN_CONTINUE ,_param->_nb_inst_decod,1 68 DELETE1_SIGNAL(out_PREDICT_CONTEXT_ID ,_param->_nb_inst_decod,_param->_size_context_id ); 69 DELETE1_SIGNAL(out_PREDICT_MATCH_INST_IFETCH_PTR ,_param->_nb_inst_decod,1 ); 70 DELETE1_SIGNAL(out_PREDICT_BRANCH_STATE ,_param->_nb_inst_decod,_param->_size_branch_state ); 71 DELETE1_SIGNAL(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_nb_inst_decod,_param->_size_depth ); 72 DELETE1_SIGNAL(out_PREDICT_BRANCH_CONDITION ,_param->_nb_inst_decod,_param->_size_branch_condition); 73 // DELETE1_SIGNAL(out_PREDICT_BRANCH_STACK_WRITE ,_param->_nb_inst_decod,1 ); 74 DELETE1_SIGNAL(out_PREDICT_BRANCH_DIRECTION ,_param->_nb_inst_decod,1 ); 75 DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC ,_param->_nb_inst_decod,_param->_size_general_data ); 76 DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST ,_param->_nb_inst_decod,_param->_size_general_data ); 77 // DELETE1_SIGNAL( in_PREDICT_CAN_CONTINUE ,_param->_nb_inst_decod,1 ); 75 78 76 DELETE1_SIGNAL( in_DEPTH_TAIL ,_param->_nb_context,_param->_size_depth ); 77 if (_param->_have_port_depth) 78 DELETE1_SIGNAL( in_DEPTH_NB_BRANCH ,_param->_nb_context,_param->_size_depth+1); 79 DELETE1_SIGNAL( in_DEPTH_MIN ,_param->_nb_context,_param->_size_depth ); 80 DELETE1_SIGNAL( in_DEPTH_MAX ,_param->_nb_context,_param->_size_depth+1); 79 81 80 DELETE1_SIGNAL(out_NB_INST_DECOD_ALL ,_param->_nb_context,_param->_size_nb_inst_decod +1);82 DELETE1_SIGNAL(out_NB_INST_DECOD_ALL ,_param->_nb_context,_param->_size_nb_inst_decod); 81 83 82 84 DELETE1_SIGNAL(in_CONTEXT_DECOD_ENABLE ,_param->_nb_context,1); … … 86 88 DELETE_SIGNAL( in_CONTEXT_EVENT_ACK ,1); 87 89 DELETE_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,_param->_size_context_id ); 90 DELETE_SIGNAL(out_CONTEXT_EVENT_DEPTH ,_param->_size_depth ); 88 91 DELETE_SIGNAL(out_CONTEXT_EVENT_TYPE ,_param->_size_event_type ); 89 92 DELETE_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ,1 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Parameters.cpp
r87 r88 25 25 uint32_t size_general_data , 26 26 uint32_t * nb_branch_speculated , 27 uint32_tsize_branch_update_prediction,27 // uint32_t * size_branch_update_prediction, 28 28 uint32_t nb_context_select , 29 29 Tpriority_t select_priority , 30 30 Tload_balancing_t select_load_balancing , 31 31 bool ** instruction_implemeted , 32 morpheo::behavioural::custom::custom_information_t (*get_custom_information) (uint32_t)) 32 morpheo::behavioural::custom::custom_information_t (*get_custom_information) (void), 33 bool is_toplevel 34 ) 33 35 { 34 36 log_begin(Decod_unit,FUNCTION); … … 38 40 _nb_inst_decod = nb_inst_decod ; 39 41 _size_queue = size_queue ; 40 42 // _size_general_data = size_general_data ; 41 43 _nb_branch_speculated = nb_branch_speculated ; 42 44 // _size_branch_update_prediction = size_branch_update_prediction; 43 45 _nb_context_select = nb_context_select ; 44 46 _select_priority = select_priority ; … … 48 50 49 51 _max_nb_inst_fetch = max<uint32_t>(_nb_inst_fetch,_nb_context); 52 // _size_address_inst = size_general_data-2; 50 53 51 _size_address_inst = size_general_data-2;52 _size_context_id = log2(nb_context );53 _size_depth = log2(max<uint32_t>(_nb_branch_speculated,_nb_context));54 _size_inst_ifetch_ptr = log2(_max_nb_inst_fetch );55 56 _have_port_context_id = (_size_context_id > 0);57 _have_port_depth = (_size_depth > 0);58 _have_port_branch_update_prediction_id = (_size_branch_update_prediction > 0);59 _have_port_inst_ifetch_ptr = (_size_inst_ifetch_ptr > 0);60 61 54 test(); 62 55 … … 65 58 _nb_inst_fetch , 66 59 _nb_inst_decod , 67 max<uint32_t>(_nb_branch_speculated,_nb_context),68 60 _nb_branch_speculated, 61 // _size_branch_update_prediction, 69 62 _nb_context_select , 70 _size_general_data ,63 size_general_data , 71 64 _select_priority , 72 65 _select_load_balancing , … … 78 71 _nb_inst_decod , 79 72 _size_queue , 80 _size_general_data ,73 size_general_data , 81 74 _nb_branch_speculated); 82 75 83 _size_nb_inst_decod = _param_decod_queue->_size_nb_inst; 84 76 if (is_toplevel) 77 { 78 _size_context_id = log2(_nb_context); 79 _size_depth = max<uint32_t>(_nb_branch_speculated,_nb_context); 80 // _size_branch_update_prediction_id = max<uint32_t>(_size_branch_update_prediction,_nb_context); 81 _size_inst_ifetch_ptr = log2(max<uint32_t>(_nb_inst_fetch,_nb_context)); 82 _size_nb_inst_decod = log2(_size_queue)+1; 83 84 _size_instruction_address = size_general_data-2; 85 _size_general_data = size_general_data; 86 87 _have_port_context_id = _size_context_id > 0; 88 _have_port_depth = (_size_depth > 0); 89 // _have_port_branch_update_prediction_id = (_size_branch_update_prediction_id > 0); 90 _have_port_inst_ifetch_ptr = (_size_inst_ifetch_ptr > 0); 91 92 copy (); 93 } 94 85 95 log_end(Decod_unit,FUNCTION); 86 96 }; … … 101 111 log_begin(Decod_unit,FUNCTION); 102 112 103 delete _param_decod; 104 delete _param_decod_queue; 113 delete _param_decod; 114 delete _param_decod_queue; 115 116 log_end(Decod_unit,FUNCTION); 117 }; 118 119 120 #undef FUNCTION 121 #define FUNCTION "Decod_unit::copy" 122 void Parameters::copy (void) 123 { 124 log_begin(Decod_unit,FUNCTION); 125 126 COPY(_param_decod ); 127 COPY(_param_decod_queue); 105 128 106 129 log_end(Decod_unit,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Parameters_print.cpp
r83 r88 30 30 xml.singleton_begin("size_queue "); xml.attribut("value",toString(_size_queue )); xml.singleton_end(); 31 31 xml.singleton_begin("size_general_data "); xml.attribut("value",toString(_size_general_data )); xml.singleton_end(); 32 xml.singleton_begin("size_branch_update_prediction"); xml.attribut("value",toString(_size_branch_update_prediction)); xml.singleton_end();33 32 xml.singleton_begin("nb_context_select "); xml.attribut("value",toString(_nb_context_select )); xml.singleton_end(); 34 33 xml.singleton_begin("select_priority "); xml.attribut("value",toString(_select_priority )); xml.singleton_end(); … … 43 42 xml. singleton_begin("nb_inst_fetch "); xml.attribut("value",toString(_nb_inst_fetch [i])); xml.singleton_end(); 44 43 xml. singleton_begin("nb_branch_speculated "); xml.attribut("value",toString(_nb_branch_speculated [i])); xml.singleton_end(); 45 44 // xml. singleton_begin("size_branch_update_prediction"); xml.attribut("value",toString(_size_branch_update_prediction[i])); xml.singleton_end(); 46 45 xml. balise_close(); 47 46 }
Note: See TracChangeset
for help on using the changeset viewer.