Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_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/Context_State/src/Context_State_allocation.cpp
r83 r88 56 56 } 57 57 58 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 { 60 ALLOC1_INTERFACE("branch_event", IN,SOUTH, "branch_event", _param->_nb_context); 61 62 ALLOC1_VALACK_IN ( in_BRANCH_EVENT_VAL ,VAL); 63 ALLOC1_VALACK_OUT(out_BRANCH_EVENT_ACK ,ACK); 64 // ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 65 // ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 66 // ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t ,1); 67 ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_instruction_address); 68 ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_instruction_address); 69 } 70 58 71 // ~~~~~[ Interface : "decod_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 72 { … … 63 76 ALLOC1_VALACK_OUT(out_DECOD_EVENT_ACK ,ACK); 64 77 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 65 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_ max_depth);78 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 66 79 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 67 80 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 68 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_ address);69 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_ address);81 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 82 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 70 83 } 71 84 72 85 // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 86 { 74 ALLOC 1_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer"), _param->_nb_ooo_engine);75 76 ALLOC 1_VALACK_IN( in_COMMIT_EVENT_VAL ,VAL);77 ALLOC 1_VALACK_OUT(out_COMMIT_EVENT_ACK ,ACK);78 ALLOC 1_SIGNAL_IN( in_COMMIT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id);79 ALLOC 1_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_max_depth);80 ALLOC 1_SIGNAL_IN( in_COMMIT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type);81 ALLOC 1_SIGNAL_IN( in_COMMIT_EVENT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1);82 ALLOC 1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_address);83 ALLOC 1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_address);84 ALLOC 1_SIGNAL_IN( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1);85 ALLOC 1_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"address_eear" ,Taddress_t ,_param->_size_address);87 ALLOC_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer")); 88 89 ALLOC_VALACK_IN ( in_COMMIT_EVENT_VAL ,VAL); 90 ALLOC_VALACK_OUT (out_COMMIT_EVENT_ACK ,ACK); 91 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 92 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 93 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 94 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 95 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 96 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 97 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1); 98 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"address_eear" ,Taddress_t ,_param->_size_instruction_address); 86 99 } 87 100 … … 93 106 ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_ACK ,ACK); 94 107 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 95 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_ max_depth);108 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 96 109 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION ,"miss_prediction",Tcontrol_t ,1); 97 110 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_TAKE ,"take" ,Tcontrol_t ,1); 98 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_ address);99 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_ address);111 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_instruction_address); 112 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_instruction_address); 100 113 } 101 114 102 115 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 116 { 104 ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."), _param->_nb_decod_unit); 105 106 ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"decod_all" ,Tcounter_t ,_param->_size_inst_decod [alloc_signal_it1]); 107 // ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL ,"commit_all",Tcounter_t ,_param->_size_inst_commit [alloc_signal_it1]); 108 // ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM ,"commit_mem",Tcounter_t ,_param->_size_inst_commit [alloc_signal_it1]); 109 } 110 { 111 ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."), _param->_nb_ooo_engine); 112 113 // ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"decod_all" ,Tcounter_t ,_param->_size_inst_decod [alloc_signal_it1]); 114 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL ,"commit_all",Tcounter_t ,_param->_size_inst_commit [alloc_signal_it1]); 115 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM ,"commit_mem",Tcounter_t ,_param->_size_inst_commit [alloc_signal_it1]); 117 ALLOC1_INTERFACE("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context); 118 119 ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"decod_all" ,Tcounter_t ,_param->_size_nb_inst_decod); 120 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL ,"commit_all",Tcounter_t ,_param->_size_nb_inst_commit); 121 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM ,"commit_mem",Tcounter_t ,_param->_size_nb_inst_commit); 116 122 } 117 123 … … 122 128 ALLOC1_VALACK_OUT(out_EVENT_VAL ,VAL); 123 129 ALLOC1_VALACK_IN ( in_EVENT_ACK ,ACK); 124 ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_ address);125 ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT ,"address_next" ,Taddress_t ,_param->_size_ address);130 ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 131 ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT ,"address_next" ,Taddress_t ,_param->_size_instruction_address); 126 132 ALLOC1_SIGNAL_OUT(out_EVENT_ADDRESS_NEXT_VAL ,"address_next_val",Tcontrol_t ,1); 127 133 ALLOC1_SIGNAL_OUT(out_EVENT_IS_DS_TAKE ,"is_ds_take" ,Tcontrol_t ,1); 128 134 } 129 135 130 // ~~~~~[ Interface "spr " ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~131 { 132 ALLOC1_INTERFACE("spr ",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);133 134 ALLOC1_VALACK_OUT(out_SPR_ VAL,VAL);135 ALLOC1_VALACK_IN ( in_SPR_ ACK,ACK);136 ALLOC1_SIGNAL_OUT(out_SPR_E PCR ,"epcr" ,Taddress_t, _param->_size_address);137 ALLOC1_SIGNAL_OUT(out_SPR_E EAR ,"eear" ,Taddress_t, _param->_size_address);138 ALLOC1_SIGNAL_OUT(out_SPR_E EAR_WEN,"eear_wen" ,Tcontrol_t,1);139 ALLOC1_SIGNAL_OUT(out_SPR_ SR_DSX,"sr_dsx" ,Tcontrol_t,1);140 ALLOC1_SIGNAL_OUT(out_SPR_ SR_TO_ESR,"sr_to_esr",Tcontrol_t,1);136 // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137 { 138 ALLOC1_INTERFACE("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context); 139 140 ALLOC1_VALACK_OUT(out_SPR_EVENT_VAL ,VAL); 141 ALLOC1_VALACK_IN ( in_SPR_EVENT_ACK ,ACK); 142 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EPCR ,"epcr" ,Taddress_t, _param->_size_instruction_address); 143 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EEAR ,"eear" ,Taddress_t, _param->_size_instruction_address); 144 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_EEAR_WEN ,"eear_wen" ,Tcontrol_t,1); 145 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_DSX ,"sr_dsx" ,Tcontrol_t,1); 146 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_TO_ESR ,"sr_to_esr",Tcontrol_t,1); 141 147 } 142 148 … … 152 158 ALLOC1_INTERFACE("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context); 153 159 154 ALLOC1_SIGNAL_IN ( in_DEPTH_TAIL ,"tail",Tdepth_t,_param->_size_depth [alloc_signal_it1]); 155 } 156 157 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 158 159 reg_STATE = new context_state_t [_param->_nb_context]; 160 reg_EVENT_ADDRESS = new Taddress_t [_param->_nb_context]; 161 reg_EVENT_ADDRESS_EPCR = new Taddress_t [_param->_nb_context]; 162 reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t [_param->_nb_context]; 163 reg_EVENT_ADDRESS_EEAR = new Taddress_t [_param->_nb_context]; 164 reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t [_param->_nb_context]; 165 reg_EVENT_IS_DELAY_SLOT = new Tcontrol_t [_param->_nb_context]; 166 reg_EVENT_IS_DS_TAKE = new Tcontrol_t [_param->_nb_context]; 167 reg_EVENT_DEPTH = new Tdepth_t [_param->_nb_context]; 168 169 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 170 internal_DECOD_EVENT_ACK = new Tcontrol_t [_param->_nb_decod_unit]; 171 internal_COMMIT_EVENT_ACK = new Tcontrol_t [_param->_nb_ooo_engine]; 172 internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete]; 173 internal_EVENT_VAL = new Tcontrol_t [_param->_nb_context]; 174 internal_SPR_VAL = new Tcontrol_t [_param->_nb_context]; 175 160 ALLOC1_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t,_param->_size_depth); 161 } 162 163 164 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 { 166 ALLOC1_INTERFACE("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context); 167 168 ALLOC1_SIGNAL_IN ( in_SPR_SR_IEE ,"SR_IEE",Tcontrol_t,1); 169 ALLOC1_SIGNAL_IN ( in_SPR_SR_EPH ,"SR_EPH",Tcontrol_t,1); 170 } 171 172 // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 173 { 174 ALLOC1_INTERFACE("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context); 175 176 ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE ,"ENABLE",Tcontrol_t,1); 177 } 178 179 if (usage_is_set(_usage,USE_SYSTEMC)) 180 { 181 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 182 183 reg_STATE = new context_state_t [_param->_nb_context]; 184 reg_EVENT_ADDRESS = new Taddress_t [_param->_nb_context]; 185 reg_EVENT_ADDRESS_EPCR = new Taddress_t [_param->_nb_context]; 186 reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t [_param->_nb_context]; 187 reg_EVENT_ADDRESS_EEAR = new Taddress_t [_param->_nb_context]; 188 reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t [_param->_nb_context]; 189 reg_EVENT_IS_DELAY_SLOT = new Tcontrol_t [_param->_nb_context]; 190 reg_EVENT_IS_DS_TAKE = new Tcontrol_t [_param->_nb_context]; 191 reg_EVENT_DEPTH = new Tdepth_t [_param->_nb_context]; 192 reg_INTERRUPT_ENABLE = new Tcontrol_t [_param->_nb_context]; 193 194 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 195 internal_BRANCH_EVENT_ACK = new Tcontrol_t [_param->_nb_context]; 196 internal_DECOD_EVENT_ACK = new Tcontrol_t [_param->_nb_decod_unit]; 197 internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete]; 198 internal_EVENT_VAL = new Tcontrol_t [_param->_nb_context]; 199 internal_SPR_EVENT_VAL = new Tcontrol_t [_param->_nb_context]; 200 } 201 176 202 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 177 203
Note: See TracChangeset
for help on using the changeset viewer.