Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_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/Prediction_unit/src/Prediction_unit_allocation.cpp
r82 r88 65 65 ALLOC1_SIGNAL_OUT(out_PREDICT_PC_NEXT ,"pc_next" ,Taddress_t ,_param->_size_address); 66 66 ALLOC1_SIGNAL_OUT(out_PREDICT_PC_NEXT_IS_DS_TAKE ,"pc_next_is_ds_take" ,Tcontrol_t ,1); 67 ALLOC1_SIGNAL_OUT(out_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr [alloc_signal_it1]);67 ALLOC1_SIGNAL_OUT(out_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr); 68 68 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 69 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth [alloc_signal_it1]);69 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 70 70 } 71 71 { 72 ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[ alloc_interface_it1]);73 _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1,_param->_nb_context,_param->_nb_instruction[ alloc_signal_it1]);72 ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[it1]); 73 _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1,_param->_nb_context,_param->_nb_instruction[it1]); 74 74 } 75 75 } … … 78 78 { 79 79 { 80 ALLOC2_INTERFACE("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_interface_it1]);80 ALLOC2_INTERFACE("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 81 81 82 _ALLOC2_VALACK_IN ( in_DECOD_VAL ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);83 _ALLOC2_VALACK_OUT(out_DECOD_ACK ,ACK,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);84 _ALLOC2_SIGNAL_IN ( in_DECOD_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);85 _ALLOC2_SIGNAL_IN ( in_DECOD_MATCH_INST_IFETCH_PTR ,"match_inst_ifetch_ptr" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);86 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);87 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_ max_size_depth ,_param->_nb_decod_unit,_param->_nb_inst_decod[alloc_signal_it1]);88 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_CONDITION ,"branch_condition" ,Tbranch_condition_t,_param->_size_branch_condition,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);89 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_DIRECTION ,"branch_direction" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);90 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);91 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[ alloc_signal_it1]);82 _ALLOC2_VALACK_IN ( in_DECOD_VAL ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 83 _ALLOC2_VALACK_OUT(out_DECOD_ACK ,ACK,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 84 _ALLOC2_SIGNAL_IN ( in_DECOD_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 85 _ALLOC2_SIGNAL_IN ( in_DECOD_MATCH_INST_IFETCH_PTR ,"match_inst_ifetch_ptr" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 86 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 87 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 88 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_CONDITION ,"branch_condition" ,Tbranch_condition_t,_param->_size_branch_condition,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 89 _ALLOC2_SIGNAL_IN ( in_DECOD_BRANCH_DIRECTION ,"branch_direction" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 90 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 91 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 92 92 } 93 93 } … … 100 100 ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_ACK ,ACK); 101 101 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_CONTEXT_ID ,"context_id" ,Tcontext_t,_param->_size_context_id); 102 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH ,"depth" ,Tdepth_t ,_param->_ max_size_depth);102 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 103 103 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS ,"address" ,Taddress_t,_param->_size_address); 104 104 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_FLAG ,"flag" ,Tcontrol_t,1); … … 116 116 ALLOC1_VALACK_IN ( in_BRANCH_EVENT_ACK ,ACK); 117 117 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t,_param->_size_context_id); 118 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_ max_size_depth);118 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 119 119 // ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1); 120 120 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_SRC ,"address_src" ,Taddress_t,_param->_size_address); … … 126 126 ALLOC1_INTERFACE("depth",OUT,SOUTH,"Interface with depth",_param->_nb_context); 127 127 128 ALLOC1_SIGNAL_OUT(out_DEPTH_NB_BRANCH ,"nb_branch" ,Tdepth_t,_param->_size_depth[alloc_signal_it1]+1); 129 ALLOC1_SIGNAL_OUT(out_DEPTH_TAIL ,"tail" ,Tdepth_t,_param->_size_depth[alloc_signal_it1]); 128 ALLOC1_SIGNAL_OUT(out_DEPTH_CURRENT ,"current" ,Tdepth_t,_param->_size_depth); 129 ALLOC1_SIGNAL_OUT(out_DEPTH_MIN ,"min" ,Tdepth_t,_param->_size_depth); 130 ALLOC1_SIGNAL_OUT(out_DEPTH_MAX ,"max" ,Tdepth_t,_param->_size_depth+1); 130 131 } 131 132 … … 551 552 COMPONENT_MAP(_component,src , "in_PREDICT_" +toString(i)+"_CONTEXT_ID" , 552 553 dest,"out_PREDICT_UPT_"+toString(i)+"_CONTEXT_ID" ); 554 if (_param->_have_port_depth) 555 COMPONENT_MAP(_component,src ,"out_PREDICT_" +toString(i)+ "_UPDATE_PREDICTION_ID", 556 dest, "in_PREDICT_UPT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID"); 553 557 COMPONENT_MAP(_component,src , "in_PREDICT_" +toString(i)+"_BTB_ADDRESS_SRC" , 554 558 dest,"out_PREDICT_UPT_"+toString(i)+"_BTB_ADDRESS_SRC" ); … … 593 597 COMPONENT_MAP(_component,src , "in_DECOD_" +toString(i)+"_MISS_DECOD" , 594 598 dest,"out_DECOD_UPT_"+toString(i)+"_MISS_DECOD" ); 595 if (_param->_have_port_ max_depth)599 if (_param->_have_port_depth) 596 600 COMPONENT_MAP(_component,src , "in_DECOD_" +toString(i)+"_UPDATE_PREDICTION_ID", 597 601 dest,"out_DECOD_UPT_"+toString(i)+"_UPDATE_PREDICTION_ID"); 602 COMPONENT_MAP(_component,src , "in_DECOD_" +toString(i)+"_IS_ACCURATE" , 603 dest,"out_DECOD_UPT_"+toString(i)+"_IS_ACCURATE" ); 598 604 599 605 //out_DECOD_UPT_RAS_INDEX - component_map return_address_stack … … 650 656 PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID" , 651 657 dest, "in_BRANCH_COMPLETE_"+toString(i)+"_CONTEXT_ID" ); 652 if (_param->_have_port_ max_depth)658 if (_param->_have_port_depth) 653 659 PORT_MAP(_component,src , "in_BRANCH_COMPLETE_"+toString(i)+"_DEPTH" , 654 660 dest, "in_BRANCH_COMPLETE_"+toString(i)+"_DEPTH" ); … … 684 690 for (uint32_t i=0; i<_param->_nb_context; i++) 685 691 { 686 dest = _name+"_prediction_unit_glue"; 687 692 dest = _name; 688 693 #ifdef POSITION 689 694 _component->interface_map (src ,"depth_"+toString(i), … … 691 696 #endif 692 697 693 COMPONENT_MAP(_component,src ,"out_DEPTH_"+toString(i)+ "_NB_BRANCH", 694 dest, "in_DEPTH_"+toString(i)+"_UPT_NB_BRANCH"); 695 696 if (_param->_have_port_depth[i]) 697 COMPONENT_MAP(_component,src ,"out_DEPTH_"+toString(i)+ "_TAIL" , 698 dest, "in_DEPTH_"+toString(i)+"_UPT_TAIL" ); 699 } 700 698 if (_param->_have_port_depth) 699 { 700 PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_CURRENT", 701 dest,"out_DEPTH_"+toString(i)+"_CURRENT"); 702 PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_MIN", 703 dest,"out_DEPTH_"+toString(i)+"_MIN"); 704 } 705 PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_MAX", 706 dest,"out_DEPTH_"+toString(i)+"_MAX"); 707 } 708 709 // for (uint32_t i=0; i<_param->_nb_context; i++) 710 // { 711 // dest = _name+"_prediction_unit_glue"; 712 713 // #ifdef POSITION 714 // _component->interface_map (src ,"depth_"+toString(i), 715 // dest,"depth_"+toString(i)); 716 // #endif 717 718 // COMPONENT_MAP(_component,src ,"out_DEPTH_"+toString(i)+ "_NB_BRANCH", 719 // dest, "in_DEPTH_"+toString(i)+"_UPT_NB_BRANCH"); 720 721 // if (_param->_have_port_depth) 722 // COMPONENT_MAP(_component,src ,"out_DEPTH_"+toString(i)+ "_TAIL" , 723 // dest, "in_DEPTH_"+toString(i)+"_UPT_TAIL" ); 724 // } 701 725 } 702 726 … … 741 765 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PC_NEXT_IS_DS_TAKE" , 742 766 dest,"out_PREDICT_"+toString(i)+"_PC_NEXT_IS_DS_TAKE" ); 743 if (_param->_have_port_inst_ifetch_ptr [i])767 if (_param->_have_port_inst_ifetch_ptr) 744 768 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_INST_IFETCH_PTR" , 745 769 dest,"out_PREDICT_"+toString(i)+"_INST_IFETCH_PTR" ); 746 770 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_BRANCH_STATE" , 747 771 dest,"out_PREDICT_"+toString(i)+"_BRANCH_STATE" ); 748 if (_param->_have_port_depth [i])772 if (_param->_have_port_depth) 749 773 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID", 750 774 dest,"out_PREDICT_"+toString(i)+"_BRANCH_UPDATE_PREDICTION_ID"); … … 783 807 PORT_MAP(_component,src , "in_DECOD_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE" , 784 808 dest, "in_DECOD_"+toString(i)+"_"+toString(j)+"_BRANCH_STATE" ); 785 if (_param->_have_port_ max_depth)809 if (_param->_have_port_depth) 786 810 PORT_MAP(_component,src , "in_DECOD_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID", 787 811 dest, "in_DECOD_"+toString(i)+"_"+toString(j)+"_BRANCH_UPDATE_PREDICTION_ID"); … … 796 820 } 797 821 798 for (uint32_t i=0; i<_param->_nb_context; i++)799 {800 dest = _name;801 #ifdef POSITION802 _component->interface_map (src ,"depth_"+toString(i),803 dest,"depth_"+toString(i));804 #endif805 806 PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_NB_BRANCH",dest,"out_DEPTH_"+toString(i)+"_NB_BRANCH");807 if (_param->_have_port_depth[i])808 PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_TAIL" ,dest,"out_DEPTH_"+toString(i)+"_TAIL" );809 }822 // for (uint32_t i=0; i<_param->_nb_context; i++) 823 // { 824 // dest = _name; 825 // #ifdef POSITION 826 // _component->interface_map (src ,"depth_"+toString(i), 827 // dest,"depth_"+toString(i)); 828 // #endif 829 830 // PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_NB_BRANCH",dest,"out_DEPTH_"+toString(i)+"_NB_BRANCH"); 831 // if (_param->_have_port_depth) 832 // PORT_MAP(_component,src ,"out_DEPTH_"+toString(i)+"_TAIL" ,dest,"out_DEPTH_"+toString(i)+"_TAIL" ); 833 // } 810 834 } 811 835 812 836 // ~~~~~[ Others ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 813 _component->test_map(false); 814 815 #ifdef POSITION 816 _component->generate_file(); 837 #if DEBUG_Prediction_unit == true 838 _component->test_map(); 839 #endif 840 841 #ifdef POSITION 842 if (usage_is_set(_usage,USE_POSITION)) 843 _component->generate_file(); 817 844 #endif 818 845
Note: See TracChangeset
for help on using the changeset viewer.