Changeset 112 for trunk/IPs/systemC
- Timestamp:
- Mar 18, 2009, 11:36:26 PM (16 years ago)
- Location:
- trunk/IPs/systemC
- Files:
-
- 151 added
- 1 deleted
- 259 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/Environment/src/Environment.cpp
r88 r112 325 325 delete [] DCACHE_RSP_ERROR ; 326 326 327 delete [] context_stop; 327 328 delete [] write_dram; 328 329 delete [] read_dram [0]; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/include/Parameters.h
r111 r112 53 53 public : uint32_t * _nb_reg_free ;//[nb_rename_bloc] 54 54 public : uint32_t * _nb_rename_unit_bank ;//[nb_rename_bloc] 55 public : uint32_t * _size_read_counter ;//[nb_rename_bloc]55 // public : uint32_t * _size_read_counter ;//[nb_rename_bloc] 56 56 57 57 // Read bloc -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Configuration_header.cpp
r98 r112 59 59 str += toString(MSG_INFORMATION)+_(" Kamel Chekkal - VHDL\n" ); 60 60 str += toString(MSG_INFORMATION)+_(" Stéphane Dubuisson - XMLLight\n"); 61 str += toString(MSG_INFORMATION)+_(" Ramsis Farhat - VHDL\n" ); 61 62 str += toString(MSG_INFORMATION)+_(" Vincent Moulu - VHDL\n" ); 62 63 str += toString(MSG_INFORMATION)+"\n"; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance.cpp
r111 r112 150 150 DELETE1(_param->_size_reservation_station ,_param->_nb_read_bloc); 151 151 DELETE1(_param->_size_read_queue ,_param->_nb_read_bloc); 152 DELETE1(_param->_size_read_counter ,_param->_nb_rename_bloc);152 // DELETE1(_param->_size_read_counter ,_param->_nb_rename_bloc); 153 153 DELETE1(_param->_nb_rename_unit_bank ,_param->_nb_rename_bloc); 154 154 DELETE1(_param->_nb_reg_free ,_param->_nb_rename_bloc); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Instance_fromInternalStructure.cpp
r111 r112 113 113 ALLOC1(_param->_nb_reg_free ,uint32_t ,_param->_nb_rename_bloc); 114 114 ALLOC1(_param->_nb_rename_unit_bank ,uint32_t ,_param->_nb_rename_bloc); 115 ALLOC1(_param->_size_read_counter ,uint32_t ,_param->_nb_rename_bloc);115 // ALLOC1(_param->_size_read_counter ,uint32_t ,_param->_nb_rename_bloc); 116 116 117 117 for (uint32_t i=0; i<_param->_nb_rename_bloc; ++i) … … 128 128 _param->_nb_reg_free [i] = fromString<uint32_t > (getParam("nb_reg_free" , "rename_bloc",toString(i).c_str(),"")); 129 129 _param->_nb_rename_unit_bank [i] = fromString<uint32_t > (getParam("nb_rename_unit_bank" , "rename_bloc",toString(i).c_str(),"")); 130 _param->_size_read_counter [i] = fromString<uint32_t > (getParam("size_read_counter" , "rename_bloc",toString(i).c_str(),""));130 // _param->_size_read_counter [i] = fromString<uint32_t > (getParam("size_read_counter" , "rename_bloc",toString(i).c_str(),"")); 131 131 } 132 132 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Configuration/src/Simulator_fromFile.cpp
r110 r112 7 7 8 8 #include "Behavioural/Configuration/include/Simulator.h" 9 #include "Behavioural/include/Simulation.h" 9 10 #include "Common/include/FromString.h" 10 11 #include <fstream> … … 80 81 testNodeName (xml,"component"); 81 82 testSingleton (xml,true); 83 84 attributes_t attributes = xml->getAttributes(); 85 86 std::string value_name = getAttribute(xml,attributes,"name" ); 87 model_type_t value_model = fromString<model_type_t >(getAttribute(xml,attributes,"model")); 88 debug_verbosity_t value_debug = fromString<debug_verbosity_t>(getAttribute(xml,attributes,"debug")); 89 90 testAttributesEmpty(xml,attributes); 91 92 _model.set_model(value_name, value_model, value_debug); 82 93 } 83 94 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Core_Glue/src/Core_Glue_allocation.cpp
r111 r112 56 56 // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 { 58 ALLOC2_INTERFACE ("rename",SOUTH,OUT,_("Request between the decod unit and the rename unit"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);58 ALLOC2_INTERFACE_BEGIN("rename",SOUTH,OUT,_("Request between the decod unit and the rename unit"),_param->_nb_front_end,_param->_nb_inst_decod[it1]); 59 59 60 60 _ALLOC2_SIGNAL_OUT(out_RENAME_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 61 62 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]); 61 63 } 62 64 63 65 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 64 66 { 65 ALLOC2_INTERFACE ("branch_complete_front_end",SOUTH,OUT,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]);67 ALLOC2_INTERFACE_BEGIN("branch_complete_front_end",SOUTH,OUT,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]); 66 68 67 69 _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_FRONT_END_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]); … … 72 74 _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_FRONT_END_NO_SEQUENCE ,"NO_SEQUENCE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]); 73 75 _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_FRONT_END_MISS_PREDICTION ,"MISS_PREDICTION" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]); 74 } 75 { 76 ALLOC2_INTERFACE("branch_complete_ooo_engine",SOUTH,IN ,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); 76 77 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_front_end_nb_inst_branch_complete[it1]); 78 79 } 80 { 81 ALLOC2_INTERFACE_BEGIN("branch_complete_ooo_engine",SOUTH,IN ,_("Branch complete : request between commit unit and prediction unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); 77 82 78 83 _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_OOO_ENGINE_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); … … 84 89 _ALLOC2_SIGNAL_IN ( in_BRANCH_COMPLETE_OOO_ENGINE_NO_SEQUENCE ,"NO_SEQUENCE" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); 85 90 _ALLOC2_SIGNAL_OUT(out_BRANCH_COMPLETE_OOO_ENGINE_MISS_PREDICTION,"MISS_PREDICTION" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); 86 } 91 92 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_ooo_engine_nb_inst_branch_complete[it1]); 93 } 87 94 88 95 // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89 96 { 90 ALLOC1_INTERFACE ("commit_event_front_end",SOUTH,OUT,_("Commit event : request between commit unit and context state"),_param->_nb_front_end);97 ALLOC1_INTERFACE_BEGIN("commit_event_front_end",SOUTH,OUT,_("Commit event : request between commit unit and context state"),_param->_nb_front_end); 91 98 92 99 ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_VAL ,"VAL" ,Tcontrol_t ,1); … … 101 108 ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1); 102 109 ALLOC1_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data); 103 } 104 105 { 106 ALLOC1_INTERFACE("commit_event_ooo_engine",SOUTH,IN ,_("Commit event : request between commit unit and context state"),_param->_nb_ooo_engine); 110 111 ALLOC1_INTERFACE_END(_param->_nb_front_end); 112 } 113 114 { 115 ALLOC1_INTERFACE_BEGIN("commit_event_ooo_engine",SOUTH,IN ,_("Commit event : request between commit unit and context state"),_param->_nb_ooo_engine); 107 116 108 117 ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_VAL ,"VAL" ,Tcontrol_t ,1); … … 118 127 ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1); 119 128 ALLOC1_SIGNAL_IN ( in_COMMIT_EVENT_OOO_ENGINE_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data); 129 130 ALLOC1_INTERFACE_END(_param->_nb_ooo_engine); 120 131 } 121 132 122 133 // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 134 { 124 ALLOC2_INTERFACE ("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]);135 ALLOC2_INTERFACE_BEGIN("issue_ooo_engine",SOUTH,IN ,_("Issue : request between rename unit and execute loop"),_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); 125 136 126 137 _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); … … 145 156 _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); 146 157 _ALLOC2_SIGNAL_IN ( in_ISSUE_OOO_ENGINE_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); 147 } 148 149 { 150 ALLOC2_INTERFACE("issue_execute_loop",SOUTH,OUT,_("Issue : request between rename unit and execute loop"),_param->_nb_execute_loop,_param->_nb_read_unit[it1]); 158 159 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_issue[it1]); 160 } 161 162 { 163 ALLOC2_INTERFACE_BEGIN("issue_execute_loop",SOUTH,OUT,_("Issue : request between rename unit and execute loop"),_param->_nb_execute_loop,_param->_nb_read_unit[it1]); 151 164 152 165 _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]); … … 172 185 _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 ,_param->_nb_execute_loop,_param->_nb_read_unit[it1]); 173 186 _ALLOC2_SIGNAL_OUT(out_ISSUE_EXECUTE_LOOP_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register,_param->_nb_execute_loop,_param->_nb_read_unit[it1]); 187 188 ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_read_unit[it1]); 174 189 } 175 190 176 191 // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 177 192 { 178 ALLOC3_INTERFACE ("execute_ooo_engine",SOUTH,OUT,_("Execute : request between execute loop and commit unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]);193 ALLOC3_INTERFACE_BEGIN("execute_ooo_engine",SOUTH,OUT,_("Execute : request between execute loop and commit unit"),_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]); 179 194 180 195 _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]); … … 190 205 _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]); 191 206 _ALLOC3_SIGNAL_OUT(out_EXECUTE_OOO_ENGINE_DATA ,"DATA" ,Tgeneral_data_t ,_param->_size_general_data,_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]); 192 } 193 194 { 195 ALLOC2_INTERFACE("execute_execute_loop",SOUTH,IN ,_("Execute : request between execute loop and commit unit"),_param->_nb_execute_loop,_param->_nb_write_unit[it1]); 207 208 ALLOC3_INTERFACE_END(_param->_nb_ooo_engine,_param->_ooo_engine_nb_execute_loop[it1],_param->_nb_inst_execute[it1][it2]); 209 } 210 211 { 212 ALLOC2_INTERFACE_BEGIN("execute_execute_loop",SOUTH,IN ,_("Execute : request between execute loop and commit unit"),_param->_nb_execute_loop,_param->_nb_write_unit[it1]); 196 213 197 214 _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]); … … 208 225 _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_write_unit[it1]); 209 226 _ALLOC2_SIGNAL_IN ( in_EXECUTE_EXECUTE_LOOP_DATA ,"DATA" ,Tgeneral_data_t ,_param->_size_general_data ,_param->_nb_execute_loop,_param->_nb_write_unit[it1]); 227 228 ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_write_unit[it1]); 210 229 } 211 230 212 231 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 213 232 { 214 ALLOC2_INTERFACE ("insert_ooo_engine",SOUTH,IN ,_("Insert"),_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]);233 ALLOC2_INTERFACE_BEGIN("insert_ooo_engine",SOUTH,IN ,_("Insert"),_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]); 215 234 216 235 _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]); … … 220 239 _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_RE_USE ,"RE_USE" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]); 221 240 _ALLOC2_SIGNAL_IN ( in_INSERT_OOO_ENGINE_RE_NUM_REG,"RE_NUM_REG",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]); 222 } 223 224 { 225 ALLOC3_INTERFACE("insert_execute_loop",SOUTH,IN ,_("Insert"),_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); 241 242 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert[it1]); 243 } 244 245 { 246 ALLOC3_INTERFACE_BEGIN("insert_execute_loop",SOUTH,IN ,_("Insert"),_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); 226 247 227 248 _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_VAL ,"VAL" ,Tcontrol_t ,1 ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); … … 231 252 _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_RE_USE ,"RE_USE" ,Tcontrol_t ,1 ,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); 232 253 _ALLOC3_SIGNAL_OUT(out_INSERT_EXECUTE_LOOP_RE_NUM_REG,"RE_NUM_REG",Tspecial_address_t,_param->_size_special_register,_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); 254 255 ALLOC3_INTERFACE_END(_param->_nb_execute_loop,_param->_execute_loop_nb_ooo_engine[it1],_param->_execute_loop_nb_inst_insert[it1][it2]); 233 256 } 234 257 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_allocation.cpp
r88 r112 56 56 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 { 58 ALLOC1_INTERFACE ("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);58 ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port); 59 59 60 60 ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL ,VAL); … … 65 65 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_data); 66 66 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type); 67 68 ALLOC1_INTERFACE_END(param->_nb_dcache_port); 67 69 } 68 70 69 71 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 72 { 71 ALLOC1_INTERFACE ("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);73 ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port); 72 74 73 75 ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL ,VAL); … … 77 79 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_data); 78 80 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t ,_param->_size_dcache_error); 81 82 ALLOC1_INTERFACE_END(_param->_nb_dcache_port); 79 83 } 80 84 81 85 // ~~~~~[ Interface "lsq_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 86 { 83 ALLOC3_INTERFACE ("lsq_req", IN, SOUTH, _("Request from load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);87 ALLOC3_INTERFACE_BEGIN("lsq_req", IN, SOUTH, _("Request from load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 84 88 85 89 _ALLOC3_VALACK_IN ( in_LSQ_REQ_VAL ,VAL, _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); … … 90 94 _ALLOC3_SIGNAL_IN ( in_LSQ_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_data , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 91 95 _ALLOC3_SIGNAL_IN ( in_LSQ_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 96 97 ALLOC3_INTERFACE_END(_param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 92 98 } 93 99 94 100 // ~~~~~[ Interface "lsq_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 101 { 96 ALLOC3_INTERFACE ("lsq_rsp",OUT, SOUTH, _("Respons to load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]);102 ALLOC3_INTERFACE_BEGIN("lsq_rsp",OUT, SOUTH, _("Respons to load_store queue"), _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 97 103 98 104 _ALLOC3_VALACK_OUT(out_LSQ_RSP_VAL ,VAL, _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); … … 102 108 _ALLOC3_SIGNAL_OUT(out_LSQ_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_data , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 103 109 _ALLOC3_SIGNAL_OUT(out_LSQ_RSP_ERROR ,"error" ,Tdcache_error_t ,_param->_size_dcache_error , _param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 110 111 ALLOC3_INTERFACE_END(_param->_nb_execute_loop, _param->_nb_load_store_unit[it1], _param->_nb_cache_access[it1][it2]); 104 112 } 105 113 … … 108 116 if (usage_is_set(_usage,USE_SYSTEMC)) 109 117 { 110 _internal_DCACHE_REQ_NB_ACCESS = new uint32_t [_param->_nb_dcache_port];111 _internal_DCACHE_REQ_NB_ACCESS_CONFLIT = new uint32_t [_param->_nb_dcache_port];118 ALLOC1(_internal_DCACHE_REQ_NB_ACCESS ,uint32_t,_param->_nb_dcache_port); 119 ALLOC1(_internal_DCACHE_REQ_NB_ACCESS_CONFLIT,uint32_t,_param->_nb_dcache_port); 112 120 } 113 121 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Dcache_Access/src/Dcache_Access_deallocation.cpp
r88 r112 58 58 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 #ifdef STATISTICS 60 delete [] _internal_DCACHE_REQ_NB_ACCESS;61 delete [] _internal_DCACHE_REQ_NB_ACCESS_CONFLIT;60 DELETE1(_internal_DCACHE_REQ_NB_ACCESS ,_param->_nb_dcache_port); 61 DELETE1(_internal_DCACHE_REQ_NB_ACCESS_CONFLIT,_param->_nb_dcache_port); 62 62 #endif 63 63 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/SelfTest/src/test.cpp
r88 r112 119 119 if (_param->_have_port_packet_id [i][j]) 120 120 { 121 INSTANCE _SC_SIGNAL(_Icache_Access, in_CONTEXT_REQ_PACKET_ID [i][j]);122 INSTANCE _SC_SIGNAL(_Icache_Access,out_CONTEXT_RSP_PACKET_ID [i][j]);121 INSTANCE0_SC_SIGNAL(_Icache_Access, in_CONTEXT_REQ_PACKET_ID [i][j]); 122 INSTANCE0_SC_SIGNAL(_Icache_Access,out_CONTEXT_RSP_PACKET_ID [i][j]); 123 123 } 124 124 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_allocation.cpp
r88 r112 56 56 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 { 58 ALLOC1_INTERFACE ("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);58 ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port); 59 59 60 60 ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL ,VAL); … … 64 64 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_address_t ,_param->_size_address ); 65 65 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type ); 66 67 ALLOC1_INTERFACE_END(_param->_nb_icache_port); 66 68 } 67 69 68 70 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 71 { 70 ALLOC1_INTERFACE ("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);72 ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port); 71 73 72 74 ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); … … 75 77 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_icache_packet_id); 76 78 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error ); 79 80 ALLOC1_INTERFACE_END(_param->_nb_icache_port); 77 81 } 78 82 { 79 // NOTE : max_nb_instruction is too wide ... 80 ALLOC2_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 83 ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 81 84 82 85 _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 86 87 ALLOC2_INTERFACE_END(_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 83 88 } 84 89 85 90 // ~~~~~[ Interface "context_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 91 { 87 ALLOC2_INTERFACE ("context_req",EAST,IN ,_("Request from context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);92 ALLOC2_INTERFACE_BEGIN("context_req",EAST,IN ,_("Request from context_unit."),_param->_nb_front_end, _param->_nb_context[it1]); 88 93 89 94 _ALLOC2_VALACK_IN ( in_CONTEXT_REQ_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); … … 93 98 _ALLOC2_SIGNAL_IN ( in_CONTEXT_REQ_ADDRESS ,"address" ,Ticache_address_t ,_param->_size_address ,_param->_nb_front_end, _param->_nb_context[it1]); 94 99 _ALLOC2_SIGNAL_IN ( in_CONTEXT_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type ,_param->_nb_front_end, _param->_nb_context[it1]); 100 101 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 95 102 } 96 103 97 104 // ~~~~~[ Interface "context_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 105 { 99 ALLOC2_INTERFACE ("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1]);106 ALLOC2_INTERFACE_BEGIN("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1]); 100 107 101 108 _ALLOC2_VALACK_OUT(out_CONTEXT_RSP_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); … … 104 111 _ALLOC2_SIGNAL_OUT(out_CONTEXT_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_packet_id[it1][it2],_param->_nb_front_end, _param->_nb_context[it1]); 105 112 _ALLOC2_SIGNAL_OUT(out_CONTEXT_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error ,_param->_nb_front_end, _param->_nb_context[it1]); 113 114 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 106 115 } 107 116 { 108 ALLOC3_INTERFACE ("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]);117 ALLOC3_INTERFACE_BEGIN("context_rsp",EAST,OUT,_("Respons to context_unit."),_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]); 109 118 110 119 _ALLOC3_SIGNAL_OUT(out_CONTEXT_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]); 120 121 ALLOC3_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1],_param->_nb_instruction[it1][it2]); 111 122 } 112 123 … … 115 126 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 127 #ifdef STATISTICS 117 _internal_ICACHE_REQ_NB_ACCESS = new uint32_t [_param->_nb_icache_port];118 _internal_ICACHE_REQ_NB_ACCESS_CONFLIT = new uint32_t [_param->_nb_icache_port];128 ALLOC1(_internal_ICACHE_REQ_NB_ACCESS ,uint32_t,_param->_nb_icache_port); 129 ALLOC1(_internal_ICACHE_REQ_NB_ACCESS_CONFLIT,uint32_t,_param->_nb_icache_port); 119 130 #endif 120 131 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Icache_Access/src/Icache_Access_deallocation.cpp
r88 r112 56 56 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 #ifdef STATISTICS 58 delete [] _internal_ICACHE_REQ_NB_ACCESS;59 delete [] _internal_ICACHE_REQ_NB_ACCESS_CONFLIT;58 DELETE1(_internal_ICACHE_REQ_NB_ACCESS ,_param->_nb_icache_port); 59 DELETE1(_internal_ICACHE_REQ_NB_ACCESS_CONFLIT,_param->_nb_icache_port); 60 60 #endif 61 61 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Execute_loop_Glue/src/Execute_loop_Glue_allocation.cpp
r88 r112 58 58 // -----[ Interface "gpr_write_write_unit" ]-------------------------- 59 59 { 60 ALLOC1_INTERFACE ("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write);60 ALLOC1_INTERFACE_BEGIN("gpr_write_write_unit", IN, EAST, _("General register write (from write_unit)"), _param->_nb_gpr_write); 61 61 62 62 ALLOC1_VALACK_IN ( in_GPR_WRITE_WRITE_UNIT_VAL ,VAL); … … 65 65 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 66 66 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_WRITE_UNIT_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 67 68 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 67 69 } 68 70 69 71 // -----[ Interface "gpr_write_register_file" ]----------------------- 70 72 { 71 ALLOC1_INTERFACE ("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write);73 ALLOC1_INTERFACE_BEGIN("gpr_write_register_file",OUT,SOUTH, _("General register write (to register file)"), _param->_nb_gpr_write); 72 74 73 75 ALLOC1_VALACK_OUT(out_GPR_WRITE_REGISTER_FILE_VAL ,VAL); … … 76 78 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 77 79 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_REGISTER_FILE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 80 81 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 78 82 } 79 83 80 84 // -----[ Interface "gpr_write_read_unit" ]--------------------------- 81 85 { 82 ALLOC1_INTERFACE ("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write);86 ALLOC1_INTERFACE_BEGIN("gpr_write_read_unit",OUT,SOUTH, _("General register write (to read unit)"), _param->_nb_gpr_write); 83 87 84 88 ALLOC1_VALACK_OUT(out_GPR_WRITE_READ_UNIT_VAL ,VAL); … … 86 90 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 87 91 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_READ_UNIT_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 92 93 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 88 94 } 89 95 90 96 // -----[ Interface "spr_write_write_unit" ]-------------------------- 91 97 { 92 ALLOC1_INTERFACE ("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write);98 ALLOC1_INTERFACE_BEGIN("spr_write_write_unit", IN, EAST, _("Special register write (from write_unit)"), _param->_nb_spr_write); 93 99 94 100 ALLOC1_VALACK_IN ( in_SPR_WRITE_WRITE_UNIT_VAL ,VAL); … … 97 103 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 98 104 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_WRITE_UNIT_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 105 106 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 99 107 } 100 108 101 109 // -----[ Interface "spr_write_register_file" ]----------------------- 102 110 { 103 ALLOC1_INTERFACE ("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write);111 ALLOC1_INTERFACE_BEGIN("spr_write_register_file",OUT,SOUTH, _("Special register write (to register file)"), _param->_nb_spr_write); 104 112 105 113 ALLOC1_VALACK_OUT(out_SPR_WRITE_REGISTER_FILE_VAL ,VAL); … … 108 116 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 109 117 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_REGISTER_FILE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 118 119 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 110 120 } 111 121 112 122 // -----[ Interface "spr_write_read_unit" ]--------------------------- 113 123 { 114 ALLOC1_INTERFACE ("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write);124 ALLOC1_INTERFACE_BEGIN("spr_write_read_unit",OUT,SOUTH, _("Special register write (to read unit)"), _param->_nb_spr_write); 115 125 116 126 ALLOC1_VALACK_OUT(out_SPR_WRITE_READ_UNIT_VAL ,VAL); … … 118 128 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 119 129 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_READ_UNIT_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 130 131 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 120 132 } 121 133 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
r101 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 50 51 // ~~~~~[ Interface : "execute_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 52 52 { 53 Interface_fifo * interface = _interfaces->set_interface("execute_in" 54 #ifdef POSITION 55 ,IN 56 ,WEST, 57 "Input of Functionnal Unit" 58 #endif 59 ); 60 61 in_EXECUTE_IN_VAL = interface->set_signal_valack_in (VAL); 62 out_EXECUTE_IN_ACK = interface->set_signal_valack_out (ACK); 63 if (_param->_have_port_context_id) 64 in_EXECUTE_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" , _param->_size_context_id ); 65 if (_param->_have_port_front_end_id) 66 in_EXECUTE_IN_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" , _param->_size_front_end_id ); 67 if (_param->_have_port_ooo_engine_id) 68 in_EXECUTE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 69 if (_param->_have_port_rob_ptr) 70 in_EXECUTE_IN_PACKET_ID = interface->set_signal_in <Tpacket_t > ("packet_id" , _param->_size_rob_ptr ); 71 in_EXECUTE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" , _param->_size_operation ); 72 in_EXECUTE_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" , _param->_size_type ); 73 in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write",_param->_size_store_queue_ptr); 74 if (_param->_have_port_load_queue_ptr) 75 in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr); 76 in_EXECUTE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" , 1); 77 in_EXECUTE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" , _param->_size_general_data); 78 in_EXECUTE_IN_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" , _param->_size_general_data); 79 in_EXECUTE_IN_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" , _param->_size_general_data); 80 in_EXECUTE_IN_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" , _param->_size_special_data); 81 in_EXECUTE_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" , 1); 82 in_EXECUTE_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" , _param->_size_general_register); 83 in_EXECUTE_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" , 1); 84 in_EXECUTE_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" , _param->_size_special_register); 53 { 54 ALLOC0_INTERFACE_BEGIN("execute_in",IN,WEST,"Input of Functionnal Unit"); 55 56 ALLOC0_VALACK_IN ( in_EXECUTE_IN_VAL ,VAL); 57 ALLOC0_VALACK_OUT(out_EXECUTE_IN_ACK ,ACK); 58 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t , _param->_size_context_id ); 59 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t , _param->_size_front_end_id ); 60 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t , _param->_size_ooo_engine_id); 61 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_PACKET_ID ,"packet_id" ,Tpacket_t , _param->_size_rob_ptr ); 62 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_OPERATION ,"operation" ,Toperation_t , _param->_size_operation ); 63 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_TYPE ,"type" ,Ttype_t , _param->_size_type ); 64 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 65 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t , 1); 67 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t , _param->_size_general_data); 68 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RA ,"data_ra" ,Tgeneral_data_t , _param->_size_general_data); 69 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RB ,"data_rb" ,Tgeneral_data_t , _param->_size_general_data); 70 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_DATA_RC ,"data_rc" ,Tspecial_data_t , _param->_size_special_data); 71 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t , 1); 72 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t, _param->_size_general_register); 73 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_WRITE_RE ,"write_re" ,Tcontrol_t , 1); 74 ALLOC0_SIGNAL_IN ( in_EXECUTE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t, _param->_size_special_register); 75 76 ALLOC0_INTERFACE_END(); 85 77 } 86 78 // ~~~~~[ Interface : "execute_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 79 { 88 Interface_fifo * interface = _interfaces->set_interface("execute_out" 89 #ifdef POSITION 90 ,IN 91 ,EAST, 92 "Output of Functionnal Unit" 93 #endif 94 ); 95 96 out_EXECUTE_OUT_VAL = interface->set_signal_valack_out (VAL); 97 in_EXECUTE_OUT_ACK = interface->set_signal_valack_in (ACK); 98 if (_param->_have_port_context_id) 99 out_EXECUTE_OUT_CONTEXT_ID = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id ); 100 if (_param->_have_port_front_end_id) 101 out_EXECUTE_OUT_FRONT_END_ID = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 102 if (_param->_have_port_ooo_engine_id) 103 out_EXECUTE_OUT_OOO_ENGINE_ID = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 104 if (_param->_have_port_rob_ptr) 105 out_EXECUTE_OUT_PACKET_ID = interface->set_signal_out<Tpacket_t > ("packet_id" ,_param->_size_rob_ptr ); 106 //out_EXECUTE_OUT_OPERATION = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation ); 107 //out_EXECUTE_OUT_TYPE = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type ); 108 out_EXECUTE_OUT_WRITE_RD = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 109 out_EXECUTE_OUT_NUM_REG_RD = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 110 out_EXECUTE_OUT_DATA_RD = interface->set_signal_out<Tgeneral_data_t > ("data_rd" ,_param->_size_general_data); 111 out_EXECUTE_OUT_WRITE_RE = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 112 out_EXECUTE_OUT_NUM_REG_RE = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 113 out_EXECUTE_OUT_DATA_RE = interface->set_signal_out<Tspecial_data_t > ("data_re" ,_param->_size_special_data); 114 out_EXECUTE_OUT_EXCEPTION = interface->set_signal_out<Texception_t > ("exception" ,_param->_size_exception); 115 out_EXECUTE_OUT_NO_SEQUENCE = interface->set_signal_out<Tcontrol_t > ("no_sequence" ,1); 116 out_EXECUTE_OUT_ADDRESS = interface->set_signal_out<Taddress_t > ("address" ,_param->_size_instruction_address); 80 ALLOC0_INTERFACE_BEGIN("execute_out",IN,EAST,"Output of Functionnal Unit"); 81 82 ALLOC0_VALACK_OUT(out_EXECUTE_OUT_VAL ,VAL); 83 ALLOC0_VALACK_IN ( in_EXECUTE_OUT_ACK ,ACK); 84 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 85 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 86 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 87 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 88 //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 89 //ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 90 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 91 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 92 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data); 93 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 94 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 95 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data); 96 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception); 97 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1); 98 ALLOC0_SIGNAL_OUT(out_EXECUTE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 99 100 ALLOC0_INTERFACE_END(); 117 101 } 118 102 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/include/Functionnal_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete in_EXECUTE_IN_VAL ; 32 delete out_EXECUTE_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_EXECUTE_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_EXECUTE_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_EXECUTE_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_rob_ptr) 40 delete in_EXECUTE_IN_PACKET_ID ; 41 delete in_EXECUTE_IN_OPERATION ; 42 delete in_EXECUTE_IN_TYPE ; 43 delete in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ; 46 delete in_EXECUTE_IN_HAS_IMMEDIAT ; 47 delete in_EXECUTE_IN_IMMEDIAT ; 48 delete in_EXECUTE_IN_DATA_RA ; 49 delete in_EXECUTE_IN_DATA_RB ; 50 delete in_EXECUTE_IN_DATA_RC ; 51 delete in_EXECUTE_IN_WRITE_RD ; 52 delete in_EXECUTE_IN_NUM_REG_RD ; 53 delete in_EXECUTE_IN_WRITE_RE ; 54 delete in_EXECUTE_IN_NUM_REG_RE ; 32 DELETE0_SIGNAL( in_EXECUTE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_EXECUTE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_EXECUTE_IN_CONTEXT_ID , _param->_size_context_id ); 35 DELETE0_SIGNAL( in_EXECUTE_IN_FRONT_END_ID , _param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_EXECUTE_IN_OOO_ENGINE_ID , _param->_size_ooo_engine_id); 37 DELETE0_SIGNAL( in_EXECUTE_IN_PACKET_ID , _param->_size_rob_ptr ); 38 DELETE0_SIGNAL( in_EXECUTE_IN_OPERATION , _param->_size_operation ); 39 DELETE0_SIGNAL( in_EXECUTE_IN_TYPE , _param->_size_type ); 40 DELETE0_SIGNAL( in_EXECUTE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr); 41 DELETE0_SIGNAL( in_EXECUTE_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr); 42 DELETE0_SIGNAL( in_EXECUTE_IN_HAS_IMMEDIAT , 1); 43 DELETE0_SIGNAL( in_EXECUTE_IN_IMMEDIAT , _param->_size_general_data); 44 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RA , _param->_size_general_data); 45 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RB , _param->_size_general_data); 46 DELETE0_SIGNAL( in_EXECUTE_IN_DATA_RC , _param->_size_special_data); 47 DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RD , 1); 48 DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RD , _param->_size_general_register); 49 DELETE0_SIGNAL( in_EXECUTE_IN_WRITE_RE , 1); 50 DELETE0_SIGNAL( in_EXECUTE_IN_NUM_REG_RE , _param->_size_special_register); 55 51 56 delete out_EXECUTE_OUT_VAL ; 57 delete in_EXECUTE_OUT_ACK ; 58 if (_param->_have_port_context_id) 59 delete out_EXECUTE_OUT_CONTEXT_ID ; 60 if (_param->_have_port_front_end_id) 61 delete out_EXECUTE_OUT_FRONT_END_ID ; 62 if (_param->_have_port_ooo_engine_id) 63 delete out_EXECUTE_OUT_OOO_ENGINE_ID ; 64 if (_param->_have_port_rob_ptr) 65 delete out_EXECUTE_OUT_PACKET_ID ; 66 // delete out_EXECUTE_OUT_OPERATION ; 67 // delete out_EXECUTE_OUT_TYPE ; 68 delete out_EXECUTE_OUT_WRITE_RD ; 69 delete out_EXECUTE_OUT_NUM_REG_RD ; 70 delete out_EXECUTE_OUT_DATA_RD ; 71 delete out_EXECUTE_OUT_WRITE_RE ; 72 delete out_EXECUTE_OUT_NUM_REG_RE ; 73 delete out_EXECUTE_OUT_DATA_RE ; 74 delete out_EXECUTE_OUT_EXCEPTION ; 75 delete out_EXECUTE_OUT_NO_SEQUENCE ; 76 delete out_EXECUTE_OUT_ADDRESS ; 52 DELETE0_SIGNAL(out_EXECUTE_OUT_VAL ,1); 53 DELETE0_SIGNAL( in_EXECUTE_OUT_ACK ,1); 54 DELETE0_SIGNAL(out_EXECUTE_OUT_CONTEXT_ID ,_param->_size_context_id ); 55 DELETE0_SIGNAL(out_EXECUTE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 56 DELETE0_SIGNAL(out_EXECUTE_OUT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id); 57 DELETE0_SIGNAL(out_EXECUTE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 58 //DELETE0_SIGNAL(out_EXECUTE_OUT_OPERATION ,_param->_size_operation ); 59 //DELETE0_SIGNAL(out_EXECUTE_OUT_TYPE ,_param->_size_type ); 60 DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RD ,1); 61 DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RD ,_param->_size_general_register); 62 DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RD ,_param->_size_general_data); 63 DELETE0_SIGNAL(out_EXECUTE_OUT_WRITE_RE ,1); 64 DELETE0_SIGNAL(out_EXECUTE_OUT_NUM_REG_RE ,_param->_size_special_register); 65 DELETE0_SIGNAL(out_EXECUTE_OUT_DATA_RE ,_param->_size_special_data); 66 DELETE0_SIGNAL(out_EXECUTE_OUT_EXCEPTION ,_param->_size_exception); 67 DELETE0_SIGNAL(out_EXECUTE_OUT_NO_SEQUENCE ,1); 68 DELETE0_SIGNAL(out_EXECUTE_OUT_ADDRESS ,_param->_size_instruction_address); 77 69 78 70 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_allocation.cpp
r97 r112 54 54 // ~~~~~[ Interface "memory_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 55 55 { 56 ALLOC1_INTERFACE ("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory);56 ALLOC1_INTERFACE_BEGIN("memory_in",IN,WEST,_("Instruction from Reservations station"),_param->_nb_inst_memory); 57 57 58 58 ALLOC1_VALACK_IN ( in_MEMORY_IN_VAL ,VAL); … … 75 75 ALLOC1_SIGNAL_IN ( in_MEMORY_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 76 76 ALLOC1_SIGNAL_IN ( in_MEMORY_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 77 78 ALLOC1_INTERFACE_END(_param->_nb_inst_memory); 77 79 } 78 80 79 81 // ~~~~~[ Interface "memory_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 82 { 81 ALLOC1_INTERFACE ("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory);83 ALLOC1_INTERFACE_BEGIN("memory_out",OUT,EAST,_("Instruction to write queue"),_param->_nb_inst_memory); 82 84 83 85 ALLOC1_VALACK_OUT(out_MEMORY_OUT_VAL ,VAL); … … 98 100 ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 99 101 ALLOC1_SIGNAL_OUT(out_MEMORY_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 102 103 ALLOC1_INTERFACE_END(_param->_nb_inst_memory); 100 104 } 101 105 102 106 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 107 { 104 ALLOC1_INTERFACE ("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port);108 ALLOC1_INTERFACE_BEGIN("dcache_req",OUT,NORTH,_("Request port to dcache"),_param->_nb_cache_port); 105 109 106 110 ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL ,VAL); … … 111 115 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type ); 112 116 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_general_data); 117 118 ALLOC1_INTERFACE_END(_param->_nb_cache_port); 113 119 } 114 120 115 121 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 122 { 117 ALLOC1_INTERFACE ("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port);123 ALLOC1_INTERFACE_BEGIN("dcache_rsp",IN,NORTH,_("Respons port from dcache"),_param->_nb_cache_port); 118 124 119 125 ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL ,VAL); … … 123 129 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_general_data); 124 130 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t,_param->_size_dcache_error); 131 132 ALLOC1_INTERFACE_END(_param->_nb_cache_port); 125 133 } 126 134 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 135 128 136 { 129 ALLOC1_INTERFACE ("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory);137 ALLOC1_INTERFACE_BEGIN("bypass_memory",OUT,NORTH,_("Bypass between the load queue and the reservation station"),_param->_nb_bypass_memory); 130 138 131 139 ALLOC1_VALACK_OUT(out_BYPASS_MEMORY_VAL ,VAL); … … 133 141 ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t, _param->_size_general_register); 134 142 ALLOC1_SIGNAL_OUT(out_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t , _param->_size_general_data ); 143 144 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 135 145 } 136 146 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Load_store_unit/src/Load_store_unit_function_speculative_load_commit_transition.cpp
r110 r112 596 596 597 597 // check find a bypass. A speculative load have been committed : report a speculation miss. 598 if ((_load_queue[index_load]._check_hit != 0) //and599 // (_load_queue[index_load]._write_rd == 0) 598 if ((_load_queue[index_load]._check_hit != 0) and 599 (_load_queue[index_load]._write_rd == 0) // is commit 600 600 ) 601 601 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
r88 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 50 51 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 52 { 52 Interface_fifo * interface = _interfaces->set_interface("read_queue_in" 53 #ifdef POSITION 54 ,IN 55 ,EAST 56 ,"Input of read_queue" 57 #endif 58 ); 53 ALLOC0_INTERFACE_BEGIN("read_queue_in",IN,EAST,"Input of read_queue"); 59 54 60 in_READ_QUEUE_IN_VAL = interface->set_signal_valack_in ("val" , VAL); 61 out_READ_QUEUE_IN_ACK = interface->set_signal_valack_out ("ack" , ACK); 62 if(_param->_have_port_context_id ) 63 in_READ_QUEUE_IN_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 64 if(_param->_have_port_front_end_id) 65 in_READ_QUEUE_IN_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 66 if(_param->_have_port_ooo_engine_id) 67 in_READ_QUEUE_IN_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 68 if(_param->_have_port_rob_ptr ) 69 in_READ_QUEUE_IN_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 70 in_READ_QUEUE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 71 in_READ_QUEUE_IN_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 72 in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 73 if (_param->_have_port_load_queue_ptr) 74 in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 75 in_READ_QUEUE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat",1 ); 76 in_READ_QUEUE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 77 in_READ_QUEUE_IN_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 78 in_READ_QUEUE_IN_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 79 in_READ_QUEUE_IN_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 80 in_READ_QUEUE_IN_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 81 in_READ_QUEUE_IN_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 82 in_READ_QUEUE_IN_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 83 in_READ_QUEUE_IN_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 84 in_READ_QUEUE_IN_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 85 in_READ_QUEUE_IN_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 86 in_READ_QUEUE_IN_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 87 } 55 ALLOC0_VALACK_IN ( in_READ_QUEUE_IN_VAL ,VAL); 56 ALLOC0_VALACK_OUT(out_READ_QUEUE_IN_ACK ,ACK); 57 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 64 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 65 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 66 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 67 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 69 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 73 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_READ_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 77 78 ALLOC0_INTERFACE_END(); 79 } 88 80 89 81 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 82 { 91 Interface_fifo * interface = _interfaces->set_interface("read_queue_out" 92 #ifdef POSITION 93 ,OUT 94 ,EAST 95 ,"Input of read_queue" 96 #endif 97 ); 83 ALLOC0_INTERFACE_BEGIN("read_queue_out",OUT,EAST,"Input of read_queue"); 98 84 99 out_READ_QUEUE_OUT_VAL = interface->set_signal_valack_out ("val" , VAL); 100 in_READ_QUEUE_OUT_ACK = interface->set_signal_valack_in ("ack" , ACK); 101 102 if(_param->_have_port_context_id ) 103 out_READ_QUEUE_OUT_CONTEXT_ID = interface->set_signal_out <Tcontext_t > ("context_id" ,_param->_size_context_id ); 104 if(_param->_have_port_front_end_id) 105 out_READ_QUEUE_OUT_FRONT_END_ID = interface->set_signal_out <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 106 if(_param->_have_port_ooo_engine_id) 107 out_READ_QUEUE_OUT_OOO_ENGINE_ID = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id ); 108 if(_param->_have_port_rob_ptr ) 109 out_READ_QUEUE_OUT_ROB_ID = interface->set_signal_out <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 110 out_READ_QUEUE_OUT_OPERATION = interface->set_signal_out <Toperation_t > ("operation" ,_param->_size_operation ); 111 out_READ_QUEUE_OUT_TYPE = interface->set_signal_out <Ttype_t > ("type" ,_param->_size_type ); 112 out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("store_queue_ptr_write", _param->_size_store_queue_ptr); 113 if (_param->_have_port_load_queue_ptr) 114 out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_out <Tlsq_ptr_t> ("load_queue_ptr_write" , _param->_size_load_queue_ptr); 115 out_READ_QUEUE_OUT_HAS_IMMEDIAT = interface->set_signal_out <Tcontrol_t > ("has_immediat",1 ); 116 out_READ_QUEUE_OUT_IMMEDIAT = interface->set_signal_out <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 117 // out_READ_QUEUE_OUT_READ_RA = interface->set_signal_out <Tcontrol_t > ("read_ra" ,1 ); 118 out_READ_QUEUE_OUT_NUM_REG_RA = interface->set_signal_out <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 119 out_READ_QUEUE_OUT_DATA_RA_VAL = interface->set_signal_out <Tcontrol_t > ("data_ra_val" ,1 ); 120 out_READ_QUEUE_OUT_DATA_RA = interface->set_signal_out <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 121 // out_READ_QUEUE_OUT_READ_RB = interface->set_signal_out <Tcontrol_t > ("read_rb" ,1 ); 122 out_READ_QUEUE_OUT_NUM_REG_RB = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 123 out_READ_QUEUE_OUT_DATA_RB_VAL = interface->set_signal_out <Tcontrol_t > ("data_rb_val" ,1 ); 124 out_READ_QUEUE_OUT_DATA_RB = interface->set_signal_out <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 125 // out_READ_QUEUE_OUT_READ_RC = interface->set_signal_out <Tcontrol_t > ("read_rc" ,1 ); 126 out_READ_QUEUE_OUT_NUM_REG_RC = interface->set_signal_out <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 127 out_READ_QUEUE_OUT_DATA_RC_VAL = interface->set_signal_out <Tcontrol_t > ("data_rc_val" ,1 ); 128 out_READ_QUEUE_OUT_DATA_RC = interface->set_signal_out <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 129 out_READ_QUEUE_OUT_WRITE_RD = interface->set_signal_out <Tcontrol_t > ("write_rd" ,1 ); 130 out_READ_QUEUE_OUT_NUM_REG_RD = interface->set_signal_out <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 131 out_READ_QUEUE_OUT_WRITE_RE = interface->set_signal_out <Tcontrol_t > ("write_re" ,1 ); 132 out_READ_QUEUE_OUT_NUM_REG_RE = interface->set_signal_out <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 133 } 85 ALLOC0_VALACK_OUT(out_READ_QUEUE_OUT_VAL ,VAL); 86 ALLOC0_VALACK_IN ( in_READ_QUEUE_OUT_ACK ,ACK); 87 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 88 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 89 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 90 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 91 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 92 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 93 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t , _param->_size_store_queue_ptr ); 94 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t , _param->_size_load_queue_ptr ); 95 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 96 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 97 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 98 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register ); 99 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 100 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 101 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 102 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register ); 103 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 104 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 105 // ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 106 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register ); 107 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 108 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 109 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 110 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 111 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 112 ALLOC0_SIGNAL_OUT(out_READ_QUEUE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 113 114 ALLOC0_INTERFACE_END(); 115 } 134 116 135 117 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 { 119 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_gpr_read); 120 121 ALLOC1_VALACK_OUT(out_GPR_READ_VAL ,VAL); 122 ALLOC1_VALACK_IN ( in_GPR_READ_ACK ,ACK); 123 ALLOC1_SIGNAL_OUT(out_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 124 ALLOC1_SIGNAL_OUT(out_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 125 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 126 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 127 128 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 129 } 136 130 137 out_GPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 138 in_GPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 139 if(_param->_have_port_ooo_engine_id) 140 out_GPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_gpr_read]; 141 out_GPR_READ_NUM_REG = new SC_OUT(Tgeneral_address_t) * [_param->_nb_gpr_read]; 142 in_GPR_READ_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 143 in_GPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 131 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 132 { 133 ALLOC1_INTERFACE_BEGIN("spr_read",IN,SOUTH,_("Interface with the General RegisterFile"),_param->_nb_spr_read); 144 134 145 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 146 { 147 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 148 #ifdef POSITION 149 , IN 150 ,SOUTH 151 , "Interface with the General RegisterFile." 152 #endif 153 ); 135 ALLOC1_VALACK_OUT(out_SPR_READ_VAL ,VAL); 136 ALLOC1_VALACK_IN ( in_SPR_READ_ACK ,ACK); 137 ALLOC1_SIGNAL_OUT(out_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 138 ALLOC1_SIGNAL_OUT(out_SPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 139 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 140 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 154 141 155 out_GPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 156 in_GPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 157 if(_param->_have_port_ooo_engine_id) 158 out_GPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 159 out_GPR_READ_NUM_REG [i] = interface->set_signal_out <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 160 in_GPR_READ_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 161 in_GPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 162 } 163 164 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 166 out_SPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 167 in_SPR_READ_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 168 if(_param->_have_port_ooo_engine_id) 169 out_SPR_READ_OOO_ENGINE_ID= new SC_OUT(Tcontext_t ) * [_param->_nb_spr_read]; 170 out_SPR_READ_NUM_REG = new SC_OUT(Tspecial_address_t) * [_param->_nb_spr_read]; 171 in_SPR_READ_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 172 in_SPR_READ_DATA_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 173 174 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 175 { 176 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 177 #ifdef POSITION 178 , IN 179 ,SOUTH 180 , "Interface with the Special RegisterFile." 181 #endif 182 ); 183 184 out_SPR_READ_VAL [i] = interface->set_signal_valack_out ("val" , VAL); 185 in_SPR_READ_ACK [i] = interface->set_signal_valack_in ("ack" , ACK); 186 if(_param->_have_port_ooo_engine_id) 187 out_SPR_READ_OOO_ENGINE_ID [i] = interface->set_signal_out <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 188 out_SPR_READ_NUM_REG [i] = interface->set_signal_out <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 189 in_SPR_READ_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 190 in_SPR_READ_DATA_VAL [i] = interface->set_signal_in <Tcontrol_t > ("data_val" ,1); 191 } 142 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 143 } 192 144 193 145 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 195 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 196 if(_param->_have_port_ooo_engine_id) 197 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 198 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 199 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 146 { 147 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_gpr_write); 200 148 201 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 202 { 203 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 204 #ifdef POSITION 205 , IN 206 ,SOUTH 207 , "Interface with write queue to bypass the write in the RegisterFile." 208 #endif 209 ); 210 211 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 212 if(_param->_have_port_ooo_engine_id) 213 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 214 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 215 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 216 } 149 ALLOC1_VALACK_IN (in_GPR_WRITE_VAL ,VAL); 150 ALLOC1_SIGNAL_IN (in_GPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 151 ALLOC1_SIGNAL_IN (in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 152 ALLOC1_SIGNAL_IN (in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 153 154 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 155 } 217 156 218 157 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 220 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 221 if(_param->_have_port_ooo_engine_id) 222 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 223 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 224 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 158 { 159 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile"),_param->_nb_spr_write); 225 160 226 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 227 { 228 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 229 #ifdef POSITION 230 , IN 231 ,SOUTH 232 , "Interface with write queue to bypass the write in the RegisterFile." 233 #endif 234 ); 235 236 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 237 if(_param->_have_port_ooo_engine_id) 238 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 239 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 240 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 241 } 161 ALLOC1_VALACK_IN (in_SPR_WRITE_VAL ,VAL); 162 ALLOC1_SIGNAL_IN (in_SPR_WRITE_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 163 ALLOC1_SIGNAL_IN (in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 164 ALLOC1_SIGNAL_IN (in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 165 166 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 167 } 242 168 243 169 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
r88 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 25 26 if (usage_is_set(_usage,USE_SYSTEMC)) 26 27 { 27 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 28 delete in_CLOCK ; 29 delete in_NRESET; 28 delete in_CLOCK ; 29 delete in_NRESET; 30 30 31 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 delete in_READ_QUEUE_IN_VAL ; 33 delete out_READ_QUEUE_IN_ACK ; 31 DELETE0_SIGNAL( in_READ_QUEUE_IN_VAL ,1 ); 32 DELETE0_SIGNAL(out_READ_QUEUE_IN_ACK ,1 ); 33 DELETE0_SIGNAL( in_READ_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 36 DELETE0_SIGNAL( in_READ_QUEUE_IN_ROB_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_QUEUE_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_QUEUE_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE ,_param->_size_store_queue_ptr ); 40 DELETE0_SIGNAL( in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 41 DELETE0_SIGNAL( in_READ_QUEUE_IN_HAS_IMMEDIAT ,1 ); 42 DELETE0_SIGNAL( in_READ_QUEUE_IN_IMMEDIAT ,_param->_size_general_data ); 43 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RA ,1 ); 44 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RB ,1 ); 46 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_QUEUE_IN_READ_RC ,1 ); 48 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RD ,1 ); 50 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_QUEUE_IN_WRITE_RE ,1 ); 52 DELETE0_SIGNAL( in_READ_QUEUE_IN_NUM_REG_RE ,_param->_size_special_register); 53 54 DELETE0_SIGNAL(out_READ_QUEUE_OUT_VAL ,1 ); 55 DELETE0_SIGNAL( in_READ_QUEUE_OUT_ACK ,1 ); 56 DELETE0_SIGNAL(out_READ_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 57 DELETE0_SIGNAL(out_READ_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 58 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 59 DELETE0_SIGNAL(out_READ_QUEUE_OUT_ROB_ID ,_param->_size_rob_ptr ); 60 DELETE0_SIGNAL(out_READ_QUEUE_OUT_OPERATION ,_param->_size_operation ); 61 DELETE0_SIGNAL(out_READ_QUEUE_OUT_TYPE ,_param->_size_type ); 62 DELETE0_SIGNAL(out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE, _param->_size_store_queue_ptr ); 63 DELETE0_SIGNAL(out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE , _param->_size_load_queue_ptr ); 64 DELETE0_SIGNAL(out_READ_QUEUE_OUT_HAS_IMMEDIAT ,1 ); 65 DELETE0_SIGNAL(out_READ_QUEUE_OUT_IMMEDIAT ,_param->_size_general_data ); 66 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RA ,1 ); 67 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RA ,_param->_size_general_register ); 68 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA_VAL ,1 ); 69 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RA ,_param->_size_general_data ); 70 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RB ,1 ); 71 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RB ,_param->_size_general_register ); 72 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB_VAL ,1 ); 73 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RB ,_param->_size_general_data ); 74 // DELETE0_SIGNAL(out_READ_QUEUE_OUT_READ_RC ,1 ); 75 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RC ,_param->_size_special_register ); 76 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC_VAL ,1 ); 77 DELETE0_SIGNAL(out_READ_QUEUE_OUT_DATA_RC ,_param->_size_special_data ); 78 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RD ,1 ); 79 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RD ,_param->_size_general_register ); 80 DELETE0_SIGNAL(out_READ_QUEUE_OUT_WRITE_RE ,1 ); 81 DELETE0_SIGNAL(out_READ_QUEUE_OUT_NUM_REG_RE ,_param->_size_special_register ); 34 82 35 if(_param->_have_port_context_id ) 36 delete in_READ_QUEUE_IN_CONTEXT_ID ; 37 if(_param->_have_port_front_end_id ) 38 delete in_READ_QUEUE_IN_FRONT_END_ID ; 39 if(_param->_have_port_ooo_engine_id) 40 delete in_READ_QUEUE_IN_OOO_ENGINE_ID ; 41 if(_param->_have_port_rob_ptr ) 42 delete in_READ_QUEUE_IN_ROB_ID ; 43 delete in_READ_QUEUE_IN_OPERATION ; 44 delete in_READ_QUEUE_IN_TYPE ; 45 delete in_READ_QUEUE_IN_STORE_QUEUE_PTR_WRITE; 46 if (_param->_have_port_load_queue_ptr) 47 delete in_READ_QUEUE_IN_LOAD_QUEUE_PTR_WRITE ; 48 delete in_READ_QUEUE_IN_HAS_IMMEDIAT ; 49 delete in_READ_QUEUE_IN_IMMEDIAT ; 50 delete in_READ_QUEUE_IN_READ_RA ; 51 delete in_READ_QUEUE_IN_NUM_REG_RA ; 52 delete in_READ_QUEUE_IN_READ_RB ; 53 delete in_READ_QUEUE_IN_NUM_REG_RB ; 54 delete in_READ_QUEUE_IN_READ_RC ; 55 delete in_READ_QUEUE_IN_NUM_REG_RC ; 56 delete in_READ_QUEUE_IN_WRITE_RD ; 57 delete in_READ_QUEUE_IN_NUM_REG_RD ; 58 delete in_READ_QUEUE_IN_WRITE_RE ; 59 delete in_READ_QUEUE_IN_NUM_REG_RE ; 83 DELETE1_SIGNAL(out_GPR_READ_VAL ,_param->_nb_gpr_read,1); 84 DELETE1_SIGNAL( in_GPR_READ_ACK ,_param->_nb_gpr_read,1); 85 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 86 DELETE1_SIGNAL(out_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_general_register); 87 DELETE1_SIGNAL( in_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 88 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 60 89 61 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 delete out_READ_QUEUE_OUT_VAL ; 63 delete in_READ_QUEUE_OUT_ACK ; 90 DELETE1_SIGNAL(out_SPR_READ_VAL ,_param->_nb_spr_read,1); 91 DELETE1_SIGNAL( in_SPR_READ_ACK ,_param->_nb_spr_read,1); 92 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 93 DELETE1_SIGNAL(out_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_general_register); 94 DELETE1_SIGNAL( in_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_general_data); 95 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 96 97 DELETE1_SIGNAL(in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 98 DELETE1_SIGNAL(in_GPR_WRITE_OOO_ENGINE_ID ,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 99 DELETE1_SIGNAL(in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 100 DELETE1_SIGNAL(in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 64 101 65 if(_param->_have_port_context_id ) 66 delete out_READ_QUEUE_OUT_CONTEXT_ID ; 67 if(_param->_have_port_front_end_id ) 68 delete out_READ_QUEUE_OUT_FRONT_END_ID ; 69 if(_param->_have_port_ooo_engine_id) 70 delete out_READ_QUEUE_OUT_OOO_ENGINE_ID ; 71 if(_param->_have_port_rob_ptr ) 72 delete out_READ_QUEUE_OUT_ROB_ID ; 73 delete out_READ_QUEUE_OUT_OPERATION ; 74 delete out_READ_QUEUE_OUT_TYPE ; 75 delete out_READ_QUEUE_OUT_STORE_QUEUE_PTR_WRITE; 76 if (_param->_have_port_load_queue_ptr) 77 delete out_READ_QUEUE_OUT_LOAD_QUEUE_PTR_WRITE ; 78 delete out_READ_QUEUE_OUT_HAS_IMMEDIAT ; 79 delete out_READ_QUEUE_OUT_IMMEDIAT ; 80 // delete out_READ_QUEUE_OUT_READ_RA ; 81 delete out_READ_QUEUE_OUT_NUM_REG_RA ; 82 delete out_READ_QUEUE_OUT_DATA_RA_VAL ; 83 delete out_READ_QUEUE_OUT_DATA_RA ; 84 // delete out_READ_QUEUE_OUT_READ_RB ; 85 delete out_READ_QUEUE_OUT_NUM_REG_RB ; 86 delete out_READ_QUEUE_OUT_DATA_RB_VAL ; 87 delete out_READ_QUEUE_OUT_DATA_RB ; 88 // delete out_READ_QUEUE_OUT_READ_RC ; 89 delete out_READ_QUEUE_OUT_NUM_REG_RC ; 90 delete out_READ_QUEUE_OUT_DATA_RC_VAL ; 91 delete out_READ_QUEUE_OUT_DATA_RC ; 92 delete out_READ_QUEUE_OUT_WRITE_RD ; 93 delete out_READ_QUEUE_OUT_NUM_REG_RD ; 94 delete out_READ_QUEUE_OUT_WRITE_RE ; 95 delete out_READ_QUEUE_OUT_NUM_REG_RE ; 96 97 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 99 delete [] out_GPR_READ_VAL ; 100 delete [] in_GPR_READ_ACK ; 101 if(_param->_have_port_ooo_engine_id) 102 delete [] out_GPR_READ_OOO_ENGINE_ID; 103 delete [] out_GPR_READ_NUM_REG ; 104 delete [] in_GPR_READ_DATA ; 105 delete [] in_GPR_READ_DATA_VAL ; 106 107 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 109 delete [] out_SPR_READ_VAL ; 110 delete [] in_SPR_READ_ACK ; 111 if(_param->_have_port_ooo_engine_id) 112 delete [] out_SPR_READ_OOO_ENGINE_ID; 113 delete [] out_SPR_READ_NUM_REG ; 114 delete [] in_SPR_READ_DATA ; 115 delete [] in_SPR_READ_DATA_VAL ; 116 117 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 119 delete [] in_GPR_WRITE_VAL ; 120 if(_param->_have_port_ooo_engine_id) 121 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 122 delete [] in_GPR_WRITE_NUM_REG ; 123 delete [] in_GPR_WRITE_DATA ; 124 125 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 127 delete [] in_SPR_WRITE_VAL ; 128 if(_param->_have_port_ooo_engine_id) 129 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 130 delete [] in_SPR_WRITE_NUM_REG ; 131 delete [] in_SPR_WRITE_DATA ; 102 DELETE1_SIGNAL(in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 103 DELETE1_SIGNAL(in_SPR_WRITE_OOO_ENGINE_ID ,_param->_nb_spr_write,_param->_size_ooo_engine_id); 104 DELETE1_SIGNAL(in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 105 DELETE1_SIGNAL(in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 132 106 } 133 107 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r111 r112 34 34 // > 2) flush all slot in one cycle 35 35 36 _queue->clear(); 36 while (_queue->empty() == false) 37 { 38 delete _queue->front(); 39 _queue->pop_front(); 40 } 41 // _queue->clear(); 37 42 38 43 // Init, else error in registerfile -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
r97 r112 7 7 */ 8 8 #define NB_ITERATION 1 9 #define CYCLE_MAX ( 2048*NB_ITERATION)9 #define CYCLE_MAX (10000*NB_ITERATION) 10 10 11 11 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h" -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r97 r112 8 8 9 9 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 10 #include "Behavioural/include/Allocation.h" 10 11 11 12 namespace morpheo { … … 43 44 ,IN 44 45 ,SOUTH, 45 "Generalist interface"46 _("Generalist interface") 46 47 #endif 47 48 ); … … 50 51 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 51 52 52 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 { 54 Interface_fifo * interface = _interfaces->set_interface("insert" 55 #ifdef POSITION 56 ,IN 57 ,EAST 58 ,"Input of reservation_station" 59 #endif 60 ); 61 62 in_INSERT_VAL = interface->set_signal_valack_in (VAL); 63 out_INSERT_ACK = interface->set_signal_valack_out (ACK); 64 if (_param->_have_port_context_id) 65 in_INSERT_CONTEXT_ID = interface->set_signal_in <Tcontext_t > ("context_id" ,_param->_size_context_id ); 66 if (_param->_have_port_front_end_id) 67 in_INSERT_FRONT_END_ID = interface->set_signal_in <Tcontext_t > ("front_end_id" ,_param->_size_front_end_id ); 68 if (_param->_have_port_ooo_engine_id) 69 in_INSERT_OOO_ENGINE_ID = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id ); 70 if (_param->_have_port_rob_ptr) 71 in_INSERT_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ptr ); 72 in_INSERT_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 73 in_INSERT_TYPE = interface->set_signal_in <Ttype_t > ("type" ,_param->_size_type ); 74 in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 75 if (_param->_have_port_load_queue_ptr) 76 in_INSERT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 77 in_INSERT_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" ,1 ); 78 in_INSERT_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); 79 // in_INSERT_READ_RA = interface->set_signal_in <Tcontrol_t > ("read_ra" ,1 ); 80 in_INSERT_NUM_REG_RA = interface->set_signal_in <Tgeneral_address_t> ("num_reg_ra" ,_param->_size_general_register ); 81 in_INSERT_DATA_RA_VAL = interface->set_signal_in <Tcontrol_t > ("data_ra_val" ,1 ); 82 in_INSERT_DATA_RA = interface->set_signal_in <Tgeneral_data_t > ("data_ra" ,_param->_size_general_data ); 83 // in_INSERT_READ_RB = interface->set_signal_in <Tcontrol_t > ("read_rb" ,1 ); 84 in_INSERT_NUM_REG_RB = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rb" ,_param->_size_general_register ); 85 in_INSERT_DATA_RB_VAL = interface->set_signal_in <Tcontrol_t > ("data_rb_val" ,1 ); 86 in_INSERT_DATA_RB = interface->set_signal_in <Tgeneral_data_t > ("data_rb" ,_param->_size_general_data ); 87 // in_INSERT_READ_RC = interface->set_signal_in <Tcontrol_t > ("read_rc" ,1 ); 88 in_INSERT_NUM_REG_RC = interface->set_signal_in <Tspecial_address_t> ("num_reg_rc" ,_param->_size_special_register ); 89 in_INSERT_DATA_RC_VAL = interface->set_signal_in <Tcontrol_t > ("data_rc_val" ,1 ); 90 in_INSERT_DATA_RC = interface->set_signal_in <Tspecial_data_t > ("data_rc" ,_param->_size_special_data ); 91 in_INSERT_WRITE_RD = interface->set_signal_in <Tcontrol_t > ("write_rd" ,1 ); 92 in_INSERT_NUM_REG_RD = interface->set_signal_in <Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register ); 93 in_INSERT_WRITE_RE = interface->set_signal_in <Tcontrol_t > ("write_re" ,1 ); 94 in_INSERT_NUM_REG_RE = interface->set_signal_in <Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register ); 53 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC0_INTERFACE_BEGIN("insert",IN,EAST,_("Input of reservation_station")); 56 57 ALLOC0_VALACK_IN ( in_INSERT_VAL ,VAL); 58 ALLOC0_VALACK_OUT(out_INSERT_ACK ,ACK); 59 ALLOC0_SIGNAL_IN ( in_INSERT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 60 ALLOC0_SIGNAL_IN ( in_INSERT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 61 ALLOC0_SIGNAL_IN ( in_INSERT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 62 ALLOC0_SIGNAL_IN ( in_INSERT_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr ); 63 ALLOC0_SIGNAL_IN ( in_INSERT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 64 ALLOC0_SIGNAL_IN ( in_INSERT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 65 ALLOC0_SIGNAL_IN ( in_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 66 ALLOC0_SIGNAL_IN ( in_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 67 ALLOC0_SIGNAL_IN ( in_INSERT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 68 ALLOC0_SIGNAL_IN ( in_INSERT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 69 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 71 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA_VAL ,"data_ra_val" ,Tcontrol_t ,1 ); 72 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data ); 73 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 74 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB_VAL ,"data_rb_val" ,Tcontrol_t ,1 ); 76 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data ); 77 // ALLOC0_SIGNAL_IN ( in_INSERT_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 78 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC_VAL ,"data_rc_val" ,Tcontrol_t ,1 ); 80 ALLOC0_SIGNAL_IN ( in_INSERT_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data ); 81 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 82 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 83 ALLOC0_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 84 ALLOC0_SIGNAL_IN ( in_INSERT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 85 86 ALLOC0_INTERFACE_END(); 87 } 88 89 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 { 91 ALLOC1_INTERFACE_BEGIN("retire",OUT,WEST,_("Output of reservation_station"),_param->_nb_inst_retire); 92 93 ALLOC1_VALACK_OUT(out_RETIRE_VAL ,VAL); 94 ALLOC1_VALACK_IN ( in_RETIRE_ACK ,ACK); 95 ALLOC1_SIGNAL_OUT(out_RETIRE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 96 ALLOC1_SIGNAL_OUT(out_RETIRE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 97 ALLOC1_SIGNAL_OUT(out_RETIRE_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 98 ALLOC1_SIGNAL_OUT(out_RETIRE_ROB_ID ,"rob_id" ,Tpacket_t ,_param->_size_rob_ptr); 99 ALLOC1_SIGNAL_OUT(out_RETIRE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation); 100 ALLOC1_SIGNAL_OUT(out_RETIRE_TYPE ,"type" ,Ttype_t ,_param->_size_type); 101 ALLOC1_SIGNAL_OUT(out_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 102 ALLOC1_SIGNAL_OUT(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 103 ALLOC1_SIGNAL_OUT(out_RETIRE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 104 ALLOC1_SIGNAL_OUT(out_RETIRE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 105 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RA ,"data_ra" ,Tgeneral_data_t ,_param->_size_general_data); 106 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RB ,"data_rb" ,Tgeneral_data_t ,_param->_size_general_data); 107 ALLOC1_SIGNAL_OUT(out_RETIRE_DATA_RC ,"data_rc" ,Tspecial_data_t ,_param->_size_special_data); 108 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 109 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 110 ALLOC1_SIGNAL_OUT(out_RETIRE_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 111 ALLOC1_SIGNAL_OUT(out_RETIRE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 114 } 115 116 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 117 { 118 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_gpr_write); 119 120 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 121 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 122 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 123 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 95 126 } 96 127 97 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 out_RETIRE_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 99 in_RETIRE_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_inst_retire]; 100 if (_param->_have_port_context_id) 101 out_RETIRE_CONTEXT_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 102 if (_param->_have_port_front_end_id) 103 out_RETIRE_FRONT_END_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 104 if (_param->_have_port_ooo_engine_id) 105 out_RETIRE_OOO_ENGINE_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 106 if (_param->_have_port_rob_ptr) 107 out_RETIRE_ROB_ID = new SC_OUT(Tpacket_t ) * [_param->_nb_inst_retire]; 108 out_RETIRE_OPERATION = new SC_OUT(Toperation_t ) * [_param->_nb_inst_retire]; 109 out_RETIRE_TYPE = new SC_OUT(Ttype_t ) * [_param->_nb_inst_retire]; 110 out_RETIRE_STORE_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 111 if (_param->_have_port_load_queue_ptr) 112 out_RETIRE_LOAD_QUEUE_PTR_WRITE = new SC_OUT(Tlsq_ptr_t ) * [_param->_nb_inst_retire]; 113 out_RETIRE_HAS_IMMEDIAT = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 114 out_RETIRE_IMMEDIAT = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 115 out_RETIRE_DATA_RA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 116 out_RETIRE_DATA_RB = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_inst_retire]; 117 out_RETIRE_DATA_RC = new SC_OUT(Tspecial_data_t ) * [_param->_nb_inst_retire]; 118 out_RETIRE_WRITE_RD = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 119 out_RETIRE_NUM_REG_RD = new SC_OUT(Tgeneral_address_t) * [_param->_nb_inst_retire]; 120 out_RETIRE_WRITE_RE = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 121 out_RETIRE_NUM_REG_RE = new SC_OUT(Tspecial_address_t) * [_param->_nb_inst_retire]; 122 123 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 124 { 125 Interface_fifo * interface = _interfaces->set_interface("retire_"+toString(i) 126 #ifdef POSITION 127 ,OUT 128 ,WEST 129 ,"Output of reservation_station" 130 #endif 131 ); 132 out_RETIRE_VAL [i] = interface->set_signal_valack_out(VAL); 133 in_RETIRE_ACK [i] = interface->set_signal_valack_in (ACK); 134 if (_param->_have_port_context_id) 135 out_RETIRE_CONTEXT_ID [i] = interface->set_signal_out<Tcontext_t > ("context_id" ,_param->_size_context_id); 136 if (_param->_have_port_front_end_id) 137 out_RETIRE_FRONT_END_ID [i] = interface->set_signal_out<Tcontext_t > ("front_end_id" ,_param->_size_front_end_id); 138 if (_param->_have_port_ooo_engine_id) 139 out_RETIRE_OOO_ENGINE_ID[i] = interface->set_signal_out<Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 140 if (_param->_have_port_rob_ptr) 141 out_RETIRE_ROB_ID [i] = interface->set_signal_out<Tpacket_t > ("rob_id" ,_param->_size_rob_ptr); 142 out_RETIRE_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 143 out_RETIRE_TYPE [i] = interface->set_signal_out<Ttype_t > ("type" ,_param->_size_type); 144 out_RETIRE_STORE_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 145 if (_param->_have_port_load_queue_ptr) 146 out_RETIRE_LOAD_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 128 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 { 130 ALLOC1_INTERFACE_BEGIN("spr_write",IN,SOUTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_spr_write); 131 132 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 133 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 134 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 135 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 147 136 148 out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat" ,1); 149 out_RETIRE_IMMEDIAT [i] = interface->set_signal_out<Tgeneral_data_t > ("immediat" ,_param->_size_general_data); 150 out_RETIRE_DATA_RA [i] = interface->set_signal_out<Tgeneral_data_t > ("data_ra" ,_param->_size_general_data); 151 out_RETIRE_DATA_RB [i] = interface->set_signal_out<Tgeneral_data_t > ("data_rb" ,_param->_size_general_data); 152 out_RETIRE_DATA_RC [i] = interface->set_signal_out<Tspecial_data_t > ("data_rc" ,_param->_size_special_data); 153 out_RETIRE_WRITE_RD [i] = interface->set_signal_out<Tcontrol_t > ("write_rd" ,1); 154 out_RETIRE_NUM_REG_RD [i] = interface->set_signal_out<Tgeneral_address_t> ("num_reg_rd" ,_param->_size_general_register); 155 out_RETIRE_WRITE_RE [i] = interface->set_signal_out<Tcontrol_t > ("write_re" ,1); 156 out_RETIRE_NUM_REG_RE [i] = interface->set_signal_out<Tspecial_address_t> ("num_reg_re" ,_param->_size_special_register); 157 } 137 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 138 } 158 139 159 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 161 if (_param->_have_port_ooo_engine_id) 162 in_GPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 163 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 164 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 140 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 141 { 142 ALLOC1_INTERFACE_BEGIN("bypass_write",IN,NORTH,_("Interface with write queue to bypass the write in the RegisterFile."),_param->_nb_bypass_write); 165 143 166 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 167 { 168 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 169 #ifdef POSITION 170 , IN 171 ,SOUTH 172 , "Interface with write queue to bypass the write in the RegisterFile." 173 #endif 174 ); 144 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 145 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_VAL ,"gpr_val" ,Tcontrol_t ,1); 146 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_NUM_REG ,"gpr_num_reg" ,Tgeneral_address_t,_param->_size_general_register); 147 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_GPR_DATA ,"gpr_data" ,Tgeneral_data_t ,_param->_size_general_data); 148 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_VAL ,"spr_val" ,Tcontrol_t ,1); 149 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 150 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data); 151 152 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 153 } 154 155 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 156 { 157 ALLOC1_INTERFACE_BEGIN("bypass_memory",IN,NORTH,_("Interface with load/store unit to bypass the write in the RegisterFile."),_param->_nb_bypass_memory); 175 158 176 in_GPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 177 if (_param->_have_port_ooo_engine_id) 178 in_GPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 179 in_GPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 180 in_GPR_WRITE_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 181 } 182 183 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 185 if (_param->_have_port_ooo_engine_id) 186 in_SPR_WRITE_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 187 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 188 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 189 190 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 191 { 192 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 193 #ifdef POSITION 194 , IN 195 ,SOUTH 196 , "Interface with write queue to bypass the write in the RegisterFile." 197 #endif 198 ); 199 200 in_SPR_WRITE_VAL [i] = interface->set_signal_valack_in (VAL); 201 if (_param->_have_port_ooo_engine_id) 202 in_SPR_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 203 in_SPR_WRITE_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("num_reg" ,_param->_size_special_register); 204 in_SPR_WRITE_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("data" ,_param->_size_special_data); 205 } 206 207 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 208 if (_param->_have_port_ooo_engine_id) 209 in_BYPASS_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; 210 in_BYPASS_WRITE_GPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 211 in_BYPASS_WRITE_GPR_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_write]; 212 in_BYPASS_WRITE_GPR_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_write]; 213 in_BYPASS_WRITE_SPR_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_write]; 214 in_BYPASS_WRITE_SPR_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_bypass_write]; 215 in_BYPASS_WRITE_SPR_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_bypass_write]; 216 217 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 218 { 219 Interface_fifo * interface = _interfaces->set_interface("bypass_write_"+toString(i) 220 #ifdef POSITION 221 , IN 222 ,NORTH 223 , "Interface with write queue to bypass the write in the RegisterFile." 224 #endif 225 ); 226 227 if (_param->_have_port_ooo_engine_id) 228 in_BYPASS_WRITE_OOO_ENGINE_ID [i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id" ,_param->_size_ooo_engine_id); 229 in_BYPASS_WRITE_GPR_VAL [i] = interface->set_signal_valack_in ("gpr_val",VAL); 230 in_BYPASS_WRITE_GPR_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("gpr_num_reg" ,_param->_size_general_register); 231 in_BYPASS_WRITE_GPR_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("gpr_data" ,_param->_size_general_data); 232 in_BYPASS_WRITE_SPR_VAL [i] = interface->set_signal_valack_in ("spr_val",VAL); 233 in_BYPASS_WRITE_SPR_NUM_REG [i] = interface->set_signal_in <Tspecial_address_t> ("spr_num_reg" ,_param->_size_special_register); 234 in_BYPASS_WRITE_SPR_DATA [i] = interface->set_signal_in <Tspecial_data_t > ("spr_data" ,_param->_size_special_data); 235 } 236 237 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 238 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 239 if (_param->_have_port_ooo_engine_id) 240 in_BYPASS_MEMORY_OOO_ENGINE_ID= new SC_IN (Tcontext_t ) * [_param->_nb_bypass_memory]; 241 in_BYPASS_MEMORY_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_bypass_memory]; 242 in_BYPASS_MEMORY_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_bypass_memory]; 243 244 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) 245 { 246 Interface_fifo * interface = _interfaces->set_interface("bypass_memory_"+toString(i) 247 #ifdef POSITION 248 , IN 249 , NORTH 250 , "Interface with load/store unit to bypass the write in the RegisterFile." 251 #endif 252 ); 253 254 in_BYPASS_MEMORY_VAL [i] = interface->set_signal_valack_in (VAL); 255 if (_param->_have_port_ooo_engine_id) 256 in_BYPASS_MEMORY_OOO_ENGINE_ID[i] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id",_param->_size_ooo_engine_id); 257 in_BYPASS_MEMORY_NUM_REG [i] = interface->set_signal_in <Tgeneral_address_t> ("num_reg" ,_param->_size_general_register); 258 in_BYPASS_MEMORY_DATA [i] = interface->set_signal_in <Tgeneral_data_t > ("data" ,_param->_size_general_data); 259 } 260 159 ALLOC1_VALACK_IN ( in_BYPASS_MEMORY_VAL ,VAL); 160 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 161 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 162 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 163 164 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 165 } 261 166 262 167 if (usage_is_set(_usage,USE_SYSTEMC)) 263 168 { 264 169 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 265 internal_RETIRE_VAL = new Tcontrol_t [_param->_nb_inst_retire];266 internal_RETIRE_SLOT = new uint32_t [_param->_nb_inst_retire];170 ALLOC1(internal_RETIRE_VAL ,Tcontrol_t,_param->_nb_inst_retire); 171 ALLOC1(internal_RETIRE_SLOT,uint32_t ,_param->_nb_inst_retire); 267 172 } 268 173 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
r88 r112 11 11 12 12 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 13 #include "Behavioural/include/Allocation.h" 13 14 14 15 namespace morpheo { … … 30 31 if (usage_is_set(_usage,USE_SYSTEMC)) 31 32 { 32 delete in_CLOCK ;33 delete in_NRESET;33 delete in_CLOCK ; 34 delete in_NRESET; 34 35 35 delete in_INSERT_VAL ; 36 delete out_INSERT_ACK ; 37 if (_param->_have_port_context_id) 38 delete in_INSERT_CONTEXT_ID ; 39 if (_param->_have_port_front_end_id) 40 delete in_INSERT_FRONT_END_ID ; 41 if (_param->_have_port_ooo_engine_id) 42 delete in_INSERT_OOO_ENGINE_ID ; 43 if (_param->_have_port_rob_ptr) 44 delete in_INSERT_ROB_ID ; 45 delete in_INSERT_OPERATION ; 46 delete in_INSERT_TYPE ; 47 delete in_INSERT_STORE_QUEUE_PTR_WRITE; 48 if (_param->_have_port_load_queue_ptr) 49 delete in_INSERT_LOAD_QUEUE_PTR_WRITE ; 50 delete in_INSERT_HAS_IMMEDIAT ; 51 delete in_INSERT_IMMEDIAT ; 52 // delete in_INSERT_READ_RA ; 53 delete in_INSERT_NUM_REG_RA ; 54 delete in_INSERT_DATA_RA_VAL ; 55 delete in_INSERT_DATA_RA ; 56 // delete in_INSERT_READ_RB ; 57 delete in_INSERT_NUM_REG_RB ; 58 delete in_INSERT_DATA_RB_VAL ; 59 delete in_INSERT_DATA_RB ; 60 // delete in_INSERT_READ_RC ; 61 delete in_INSERT_NUM_REG_RC ; 62 delete in_INSERT_DATA_RC_VAL ; 63 delete in_INSERT_DATA_RC ; 64 delete in_INSERT_WRITE_RD ; 65 delete in_INSERT_NUM_REG_RD ; 66 delete in_INSERT_WRITE_RE ; 67 delete in_INSERT_NUM_REG_RE ; 68 69 delete [] out_RETIRE_VAL ; 70 delete [] in_RETIRE_ACK ; 71 if (_param->_have_port_context_id) 72 delete [] out_RETIRE_CONTEXT_ID ; 73 if (_param->_have_port_front_end_id) 74 delete [] out_RETIRE_FRONT_END_ID ; 75 if (_param->_have_port_ooo_engine_id) 76 delete [] out_RETIRE_OOO_ENGINE_ID ; 77 if (_param->_have_port_rob_ptr) 78 delete [] out_RETIRE_ROB_ID ; 79 delete [] out_RETIRE_OPERATION ; 80 delete [] out_RETIRE_TYPE ; 81 delete [] out_RETIRE_STORE_QUEUE_PTR_WRITE; 82 if (_param->_have_port_load_queue_ptr) 83 delete [] out_RETIRE_LOAD_QUEUE_PTR_WRITE ; 84 delete [] out_RETIRE_HAS_IMMEDIAT ; 85 delete [] out_RETIRE_IMMEDIAT ; 86 delete [] out_RETIRE_DATA_RA ; 87 delete [] out_RETIRE_DATA_RB ; 88 delete [] out_RETIRE_DATA_RC ; 89 delete [] out_RETIRE_WRITE_RD ; 90 delete [] out_RETIRE_NUM_REG_RD ; 91 delete [] out_RETIRE_WRITE_RE ; 92 delete [] out_RETIRE_NUM_REG_RE ; 93 94 delete [] in_GPR_WRITE_VAL ; 95 if (_param->_have_port_ooo_engine_id) 96 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 97 delete [] in_GPR_WRITE_NUM_REG ; 98 delete [] in_GPR_WRITE_DATA ; 99 100 delete [] in_SPR_WRITE_VAL ; 101 if (_param->_have_port_ooo_engine_id) 102 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 103 delete [] in_SPR_WRITE_NUM_REG ; 104 delete [] in_SPR_WRITE_DATA ; 105 106 if (_param->_have_port_ooo_engine_id) 107 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID; 108 delete [] in_BYPASS_WRITE_GPR_VAL ; 109 delete [] in_BYPASS_WRITE_GPR_NUM_REG; 110 delete [] in_BYPASS_WRITE_GPR_DATA ; 111 delete [] in_BYPASS_WRITE_SPR_VAL ; 112 delete [] in_BYPASS_WRITE_SPR_NUM_REG; 113 delete [] in_BYPASS_WRITE_SPR_DATA ; 114 115 delete [] in_BYPASS_MEMORY_VAL ; 116 if (_param->_have_port_ooo_engine_id) 117 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 118 delete [] in_BYPASS_MEMORY_NUM_REG ; 119 delete [] in_BYPASS_MEMORY_DATA ; 120 121 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 delete [] internal_RETIRE_VAL; 123 delete [] internal_RETIRE_SLOT; 36 DELETE0_SIGNAL( in_INSERT_VAL ,1); 37 DELETE0_SIGNAL(out_INSERT_ACK ,1); 38 DELETE0_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_size_context_id ); 39 DELETE0_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_size_front_end_id ); 40 DELETE0_SIGNAL( in_INSERT_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 41 DELETE0_SIGNAL( in_INSERT_ROB_ID ,_param->_size_rob_ptr ); 42 DELETE0_SIGNAL( in_INSERT_OPERATION ,_param->_size_operation ); 43 DELETE0_SIGNAL( in_INSERT_TYPE ,_param->_size_type ); 44 DELETE0_SIGNAL( in_INSERT_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr ); 45 DELETE0_SIGNAL( in_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr ); 46 DELETE0_SIGNAL( in_INSERT_HAS_IMMEDIAT ,1 ); 47 DELETE0_SIGNAL( in_INSERT_IMMEDIAT ,_param->_size_general_data ); 48 // DELETE0_SIGNAL( in_INSERT_READ_RA ,1 ); 49 DELETE0_SIGNAL( in_INSERT_NUM_REG_RA ,_param->_size_general_register); 50 DELETE0_SIGNAL( in_INSERT_DATA_RA_VAL ,1 ); 51 DELETE0_SIGNAL( in_INSERT_DATA_RA ,_param->_size_general_data ); 52 // DELETE0_SIGNAL( in_INSERT_READ_RB ,1 ); 53 DELETE0_SIGNAL( in_INSERT_NUM_REG_RB ,_param->_size_general_register); 54 DELETE0_SIGNAL( in_INSERT_DATA_RB_VAL ,1 ); 55 DELETE0_SIGNAL( in_INSERT_DATA_RB ,_param->_size_general_data ); 56 // DELETE0_SIGNAL( in_INSERT_READ_RC ,1 ); 57 DELETE0_SIGNAL( in_INSERT_NUM_REG_RC ,_param->_size_special_register); 58 DELETE0_SIGNAL( in_INSERT_DATA_RC_VAL ,1 ); 59 DELETE0_SIGNAL( in_INSERT_DATA_RC ,_param->_size_special_data ); 60 DELETE0_SIGNAL( in_INSERT_WRITE_RD ,1 ); 61 DELETE0_SIGNAL( in_INSERT_NUM_REG_RD ,_param->_size_general_register); 62 DELETE0_SIGNAL( in_INSERT_WRITE_RE ,1 ); 63 DELETE0_SIGNAL( in_INSERT_NUM_REG_RE ,_param->_size_special_register); 64 65 DELETE1_SIGNAL(out_RETIRE_VAL ,_param->_nb_inst_retire,1); 66 DELETE1_SIGNAL( in_RETIRE_ACK ,_param->_nb_inst_retire,1); 67 DELETE1_SIGNAL(out_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id); 68 DELETE1_SIGNAL(out_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 69 DELETE1_SIGNAL(out_RETIRE_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id); 70 DELETE1_SIGNAL(out_RETIRE_ROB_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr); 71 DELETE1_SIGNAL(out_RETIRE_OPERATION ,_param->_nb_inst_retire,_param->_size_operation); 72 DELETE1_SIGNAL(out_RETIRE_TYPE ,_param->_nb_inst_retire,_param->_size_type); 73 DELETE1_SIGNAL(out_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 74 DELETE1_SIGNAL(out_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr ); 75 DELETE1_SIGNAL(out_RETIRE_HAS_IMMEDIAT ,_param->_nb_inst_retire,1); 76 DELETE1_SIGNAL(out_RETIRE_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data); 77 DELETE1_SIGNAL(out_RETIRE_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data); 78 DELETE1_SIGNAL(out_RETIRE_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data); 79 DELETE1_SIGNAL(out_RETIRE_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data); 80 DELETE1_SIGNAL(out_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 81 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 82 DELETE1_SIGNAL(out_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 83 DELETE1_SIGNAL(out_RETIRE_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 85 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 86 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 87 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_general_register); 88 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 89 90 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 91 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 92 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_general_register); 93 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_general_data); 94 95 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id); 96 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL ,_param->_nb_bypass_write,1); 97 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_general_register); 98 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA ,_param->_nb_bypass_write,_param->_size_general_data); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL ,_param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_special_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA ,_param->_nb_bypass_write,_param->_size_special_data); 102 103 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL ,_param->_nb_bypass_memory,1); 104 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID,_param->_nb_bypass_memory,_param->_size_ooo_engine_id); 105 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG ,_param->_nb_bypass_memory,_param->_size_general_register); 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA ,_param->_nb_bypass_memory,_param->_size_general_data); 107 108 DELETE1(internal_RETIRE_VAL ,_param->_nb_inst_retire); 109 DELETE1(internal_RETIRE_SLOT,_param->_nb_inst_retire); 124 110 } 111 125 112 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp
r88 r112 64 64 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 65 65 66 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t );67 ALLOC _SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t );68 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t );69 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t );70 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t );71 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t );72 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t );73 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t );74 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t );75 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t );76 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t );77 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t );78 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t );79 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t);80 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t );81 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t);82 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t );83 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t);84 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t );85 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t);86 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t );87 ALLOC _SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t);66 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_VAL ," in_READ_UNIT_IN_VAL ",Tcontrol_t ); 67 ALLOC0_SC_SIGNAL(out_READ_UNIT_IN_ACK ,"out_READ_UNIT_IN_ACK ",Tcontrol_t ); 68 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ," in_READ_UNIT_IN_CONTEXT_ID ",Tcontext_t ); 69 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ," in_READ_UNIT_IN_FRONT_END_ID ",Tcontext_t ); 70 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ," in_READ_UNIT_IN_OOO_ENGINE_ID ",Tcontext_t ); 71 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_PACKET_ID ," in_READ_UNIT_IN_PACKET_ID ",Tpacket_t ); 72 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_OPERATION ," in_READ_UNIT_IN_OPERATION ",Toperation_t ); 73 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_TYPE ," in_READ_UNIT_IN_TYPE ",Ttype_t ); 74 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 75 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ," in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ",Tlsq_ptr_t ); 76 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ," in_READ_UNIT_IN_HAS_IMMEDIAT ",Tcontrol_t ); 77 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ," in_READ_UNIT_IN_IMMEDIAT ",Tgeneral_data_t ); 78 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RA ," in_READ_UNIT_IN_READ_RA ",Tcontrol_t ); 79 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ," in_READ_UNIT_IN_NUM_REG_RA ",Tgeneral_address_t); 80 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RB ," in_READ_UNIT_IN_READ_RB ",Tcontrol_t ); 81 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ," in_READ_UNIT_IN_NUM_REG_RB ",Tgeneral_address_t); 82 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_READ_RC ," in_READ_UNIT_IN_READ_RC ",Tcontrol_t ); 83 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ," in_READ_UNIT_IN_NUM_REG_RC ",Tspecial_address_t); 84 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RD ," in_READ_UNIT_IN_WRITE_RD ",Tcontrol_t ); 85 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ," in_READ_UNIT_IN_NUM_REG_RD ",Tgeneral_address_t); 86 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_WRITE_RE ," in_READ_UNIT_IN_WRITE_RE ",Tcontrol_t ); 87 ALLOC0_SC_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ," in_READ_UNIT_IN_NUM_REG_RE ",Tspecial_address_t); 88 88 ALLOC1_SC_SIGNAL(out_READ_UNIT_OUT_VAL ,"out_READ_UNIT_OUT_VAL ",Tcontrol_t ,_param->_nb_inst_retire); 89 89 ALLOC1_SC_SIGNAL( in_READ_UNIT_OUT_ACK ," in_READ_UNIT_OUT_ACK ",Tcontrol_t ,_param->_nb_inst_retire); … … 146 146 (*(_Read_unit->in_NRESET)) (*(in_NRESET)); 147 147 148 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL );149 INSTANCE _SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK );148 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_VAL ); 149 INSTANCE0_SC_SIGNAL(_Read_unit,out_READ_UNIT_IN_ACK ); 150 150 if (_param->_have_port_context_id) 151 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID );151 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_CONTEXT_ID ); 152 152 if (_param->_have_port_front_end_id) 153 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID );153 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_FRONT_END_ID ); 154 154 if (_param->_have_port_ooo_engine_id) 155 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID );155 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID ); 156 156 if (_param->_have_port_rob_ptr) 157 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID );158 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION );159 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE );160 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE );157 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_PACKET_ID ); 158 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_OPERATION ); 159 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_TYPE ); 160 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE ); 161 161 if (_param->_have_port_load_queue_ptr) 162 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE );163 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT );164 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT );165 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA );166 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA );167 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB );168 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB );169 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC );170 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC );171 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD );172 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD );173 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE );174 INSTANCE _SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE );162 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ); 163 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_HAS_IMMEDIAT ); 164 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_IMMEDIAT ); 165 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RA ); 166 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RA ); 167 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RB ); 168 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RB ); 169 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_READ_RC ); 170 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RC ); 171 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RD ); 172 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RD ); 173 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_WRITE_RE ); 174 INSTANCE0_SC_SIGNAL(_Read_unit, in_READ_UNIT_IN_NUM_REG_RE ); 175 175 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire); 176 176 INSTANCE1_SC_SIGNAL(_Read_unit, in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
r97 r112 57 57 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC_INTERFACE("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 59 ALLOC0_INTERFACE_BEGIN("read_unit_in", IN, WEST, _("Enter of new operation")); 60 61 ALLOC0_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); 62 ALLOC0_VALACK_OUT (out_READ_UNIT_IN_ACK,ACK); 63 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id); 66 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 70 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 71 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); 73 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RA ,"read_ra" ,Tcontrol_t ,1); 74 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 75 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RB ,"read_rb" ,Tcontrol_t ,1); 76 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 77 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_READ_RC ,"read_rc" ,Tcontrol_t ,1); 78 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 79 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1); 80 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 81 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 82 ALLOC0_SIGNAL_IN ( in_READ_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 83 84 ALLOC0_INTERFACE_END(); 83 85 } 84 86 85 87 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 88 { 87 ALLOC1_INTERFACE ("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire);89 ALLOC1_INTERFACE_BEGIN("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire); 88 90 89 91 ALLOC1_VALACK_OUT (out_READ_UNIT_OUT_VAL,VAL); … … 106 108 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 107 109 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 110 111 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 108 112 } 109 113 110 114 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 115 { 112 ALLOC1_INTERFACE ("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read);116 ALLOC1_INTERFACE_BEGIN("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read); 113 117 114 118 ALLOC1_VALACK_OUT (out_GPR_READ_VAL,VAL); … … 118 122 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 119 123 ALLOC1_SIGNAL_IN ( in_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 124 125 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 120 126 } 121 127 122 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 129 { 124 ALLOC1_INTERFACE ("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read);130 ALLOC1_INTERFACE_BEGIN("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read); 125 131 126 132 ALLOC1_VALACK_OUT (out_SPR_READ_VAL,VAL); … … 130 136 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 131 137 ALLOC1_SIGNAL_IN ( in_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 138 139 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 132 140 } 133 141 134 142 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 135 143 { 136 ALLOC1_INTERFACE ("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write);144 ALLOC1_INTERFACE_BEGIN("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write); 137 145 138 146 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL,VAL); … … 140 148 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 141 149 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 150 151 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 142 152 } 143 153 144 154 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 145 155 { 146 ALLOC1_INTERFACE ("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write);156 ALLOC1_INTERFACE_BEGIN("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write); 147 157 148 158 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL,VAL); … … 150 160 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 151 161 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 162 163 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 152 164 } 153 165 154 166 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 167 { 156 ALLOC1_INTERFACE ("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write);168 ALLOC1_INTERFACE_BEGIN("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write); 157 169 158 170 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 163 175 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 164 176 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 177 178 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 165 179 } 166 180 167 181 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 168 182 { 169 ALLOC1_INTERFACE ("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory);183 ALLOC1_INTERFACE_BEGIN("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory); 170 184 171 185 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL ,"val" ,Tcontrol_t ,1); … … 173 187 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 174 188 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 189 190 ALLOC1_INTERFACE_END(_param->_nb_bypass_memory); 175 191 } 176 192 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Read_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 delete in_READ_UNIT_IN_VAL ; 32 delete out_READ_UNIT_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_READ_UNIT_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_READ_UNIT_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_READ_UNIT_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_rob_ptr) 40 delete in_READ_UNIT_IN_PACKET_ID ; 41 delete in_READ_UNIT_IN_OPERATION ; 42 delete in_READ_UNIT_IN_TYPE ; 43 delete in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE; 44 if (_param->_have_port_load_queue_ptr) 45 delete in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ; 46 delete in_READ_UNIT_IN_HAS_IMMEDIAT ; 47 delete in_READ_UNIT_IN_IMMEDIAT ; 48 delete in_READ_UNIT_IN_READ_RA ; 49 delete in_READ_UNIT_IN_NUM_REG_RA ; 50 delete in_READ_UNIT_IN_READ_RB ; 51 delete in_READ_UNIT_IN_NUM_REG_RB ; 52 delete in_READ_UNIT_IN_READ_RC ; 53 delete in_READ_UNIT_IN_NUM_REG_RC ; 54 delete in_READ_UNIT_IN_WRITE_RD ; 55 delete in_READ_UNIT_IN_NUM_REG_RD ; 56 delete in_READ_UNIT_IN_WRITE_RE ; 57 delete in_READ_UNIT_IN_NUM_REG_RE ; 31 DELETE0_SIGNAL( in_READ_UNIT_IN_VAL ,1); 32 DELETE0_SIGNAL(out_READ_UNIT_IN_ACK ,1); 33 DELETE0_SIGNAL( in_READ_UNIT_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_READ_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_READ_UNIT_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id); 36 DELETE0_SIGNAL( in_READ_UNIT_IN_PACKET_ID ,_param->_size_rob_ptr ); 37 DELETE0_SIGNAL( in_READ_UNIT_IN_OPERATION ,_param->_size_operation ); 38 DELETE0_SIGNAL( in_READ_UNIT_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE,_param->_size_store_queue_ptr); 40 DELETE0_SIGNAL( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,_param->_size_load_queue_ptr); 41 DELETE0_SIGNAL( in_READ_UNIT_IN_HAS_IMMEDIAT ,1); 42 DELETE0_SIGNAL( in_READ_UNIT_IN_IMMEDIAT ,_param->_size_general_data); 43 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RA ,1); 44 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RA ,_param->_size_general_register); 45 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RB ,1); 46 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RB ,_param->_size_general_register); 47 DELETE0_SIGNAL( in_READ_UNIT_IN_READ_RC ,1); 48 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RC ,_param->_size_special_register); 49 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RD ,1); 50 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RD ,_param->_size_general_register); 51 DELETE0_SIGNAL( in_READ_UNIT_IN_WRITE_RE ,1); 52 DELETE0_SIGNAL( in_READ_UNIT_IN_NUM_REG_RE ,_param->_size_special_register); 58 53 59 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 delete [] out_READ_UNIT_OUT_VAL ; 61 delete [] in_READ_UNIT_OUT_ACK ; 62 if (_param->_have_port_context_id) 63 delete [] out_READ_UNIT_OUT_CONTEXT_ID ; 64 if (_param->_have_port_front_end_id) 65 delete [] out_READ_UNIT_OUT_FRONT_END_ID ; 66 if (_param->_have_port_ooo_engine_id) 67 delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID ; 68 if (_param->_have_port_rob_ptr) 69 delete [] out_READ_UNIT_OUT_PACKET_ID ; 70 delete [] out_READ_UNIT_OUT_OPERATION ; 71 delete [] out_READ_UNIT_OUT_TYPE ; 72 delete [] out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE; 73 if (_param->_have_port_load_queue_ptr) 74 delete [] out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ; 75 delete [] out_READ_UNIT_OUT_HAS_IMMEDIAT ; 76 delete [] out_READ_UNIT_OUT_IMMEDIAT ; 77 delete [] out_READ_UNIT_OUT_DATA_RA ; 78 delete [] out_READ_UNIT_OUT_DATA_RB ; 79 delete [] out_READ_UNIT_OUT_DATA_RC ; 80 delete [] out_READ_UNIT_OUT_WRITE_RD ; 81 delete [] out_READ_UNIT_OUT_NUM_REG_RD ; 82 delete [] out_READ_UNIT_OUT_WRITE_RE ; 83 delete [] out_READ_UNIT_OUT_NUM_REG_RE ; 54 DELETE1_SIGNAL(out_READ_UNIT_OUT_VAL ,_param->_nb_inst_retire,1); 55 DELETE1_SIGNAL( in_READ_UNIT_OUT_ACK ,_param->_nb_inst_retire,1); 56 DELETE1_SIGNAL(out_READ_UNIT_OUT_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 57 DELETE1_SIGNAL(out_READ_UNIT_OUT_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 58 DELETE1_SIGNAL(out_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_inst_retire,_param->_size_ooo_engine_id ); 59 DELETE1_SIGNAL(out_READ_UNIT_OUT_PACKET_ID ,_param->_nb_inst_retire,_param->_size_rob_ptr ); 60 DELETE1_SIGNAL(out_READ_UNIT_OUT_OPERATION ,_param->_nb_inst_retire,_param->_size_operation ); 61 DELETE1_SIGNAL(out_READ_UNIT_OUT_TYPE ,_param->_nb_inst_retire,_param->_size_type ); 62 DELETE1_SIGNAL(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 63 DELETE1_SIGNAL(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr); 64 DELETE1_SIGNAL(out_READ_UNIT_OUT_HAS_IMMEDIAT ,_param->_nb_inst_retire,1 ); 65 DELETE1_SIGNAL(out_READ_UNIT_OUT_IMMEDIAT ,_param->_nb_inst_retire,_param->_size_general_data ); 66 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RA ,_param->_nb_inst_retire,_param->_size_general_data ); 67 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RB ,_param->_nb_inst_retire,_param->_size_general_data ); 68 DELETE1_SIGNAL(out_READ_UNIT_OUT_DATA_RC ,_param->_nb_inst_retire,_param->_size_special_data ); 69 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RD ,_param->_nb_inst_retire,1 ); 70 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RD ,_param->_nb_inst_retire,_param->_size_general_register); 71 DELETE1_SIGNAL(out_READ_UNIT_OUT_WRITE_RE ,_param->_nb_inst_retire,1 ); 72 DELETE1_SIGNAL(out_READ_UNIT_OUT_NUM_REG_RE ,_param->_nb_inst_retire,_param->_size_special_register); 84 73 85 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 delete [] out_GPR_READ_VAL ; 87 delete [] in_GPR_READ_ACK ; 88 if (_param->_have_port_ooo_engine_id) 89 delete [] out_GPR_READ_OOO_ENGINE_ID; 90 delete [] out_GPR_READ_NUM_REG ; 91 delete [] in_GPR_READ_DATA ; 92 delete [] in_GPR_READ_DATA_VAL ; 74 DELETE1_SIGNAL(out_GPR_READ_VAL , _param->_nb_gpr_read,1); 75 DELETE1_SIGNAL( in_GPR_READ_ACK , _param->_nb_gpr_read,1); 76 DELETE1_SIGNAL(out_GPR_READ_OOO_ENGINE_ID, _param->_nb_gpr_read,_param->_size_ooo_engine_id ); 77 DELETE1_SIGNAL(out_GPR_READ_NUM_REG , _param->_nb_gpr_read,_param->_size_general_register); 78 DELETE1_SIGNAL( in_GPR_READ_DATA , _param->_nb_gpr_read,_param->_size_general_data ); 79 DELETE1_SIGNAL( in_GPR_READ_DATA_VAL , _param->_nb_gpr_read,1); 93 80 94 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 95 delete [] out_SPR_READ_VAL ; 96 delete [] in_SPR_READ_ACK ; 97 if (_param->_have_port_ooo_engine_id) 98 delete [] out_SPR_READ_OOO_ENGINE_ID; 99 delete [] out_SPR_READ_NUM_REG ; 100 delete [] in_SPR_READ_DATA ; 101 delete [] in_SPR_READ_DATA_VAL ; 81 DELETE1_SIGNAL(out_SPR_READ_VAL , _param->_nb_spr_read,1); 82 DELETE1_SIGNAL( in_SPR_READ_ACK , _param->_nb_spr_read,1); 83 DELETE1_SIGNAL(out_SPR_READ_OOO_ENGINE_ID, _param->_nb_spr_read,_param->_size_ooo_engine_id ); 84 DELETE1_SIGNAL(out_SPR_READ_NUM_REG , _param->_nb_spr_read,_param->_size_special_register); 85 DELETE1_SIGNAL( in_SPR_READ_DATA , _param->_nb_spr_read,_param->_size_special_data ); 86 DELETE1_SIGNAL( in_SPR_READ_DATA_VAL , _param->_nb_spr_read,1); 102 87 103 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 delete [] in_GPR_WRITE_VAL ; 105 if (_param->_have_port_ooo_engine_id) 106 delete [] in_GPR_WRITE_OOO_ENGINE_ID; 107 delete [] in_GPR_WRITE_NUM_REG ; 108 delete [] in_GPR_WRITE_DATA ; 88 DELETE1_SIGNAL( in_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 89 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 90 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 91 DELETE1_SIGNAL( in_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data); 109 92 110 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 delete [] in_SPR_WRITE_VAL ; 112 if (_param->_have_port_ooo_engine_id) 113 delete [] in_SPR_WRITE_OOO_ENGINE_ID; 114 delete [] in_SPR_WRITE_NUM_REG ; 115 delete [] in_SPR_WRITE_DATA ; 93 DELETE1_SIGNAL( in_SPR_WRITE_VAL , _param->_nb_spr_write,1); 94 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 95 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 96 DELETE1_SIGNAL( in_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data); 116 97 117 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 if (_param->_have_port_ooo_engine_id) 119 delete [] in_BYPASS_WRITE_OOO_ENGINE_ID ; 120 delete [] in_BYPASS_WRITE_GPR_VAL ; 121 delete [] in_BYPASS_WRITE_GPR_NUM_REG ; 122 delete [] in_BYPASS_WRITE_GPR_DATA ; 123 delete [] in_BYPASS_WRITE_SPR_VAL ; 124 delete [] in_BYPASS_WRITE_SPR_NUM_REG ; 125 delete [] in_BYPASS_WRITE_SPR_DATA ; 98 DELETE1_SIGNAL( in_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id ); 99 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_VAL , _param->_nb_bypass_write,1); 100 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_NUM_REG , _param->_nb_bypass_write,_param->_size_general_register); 101 DELETE1_SIGNAL( in_BYPASS_WRITE_GPR_DATA , _param->_nb_bypass_write,_param->_size_general_data ); 102 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_VAL , _param->_nb_bypass_write,1); 103 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_NUM_REG , _param->_nb_bypass_write,_param->_size_special_register); 104 DELETE1_SIGNAL( in_BYPASS_WRITE_SPR_DATA , _param->_nb_bypass_write,_param->_size_special_data ); 126 105 127 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 delete [] in_BYPASS_MEMORY_VAL ; 129 if (_param->_have_port_ooo_engine_id) 130 delete [] in_BYPASS_MEMORY_OOO_ENGINE_ID; 131 delete [] in_BYPASS_MEMORY_NUM_REG ; 132 delete [] in_BYPASS_MEMORY_DATA ; 106 DELETE1_SIGNAL( in_BYPASS_MEMORY_VAL , _param->_nb_bypass_memory,1); 107 DELETE1_SIGNAL( in_BYPASS_MEMORY_OOO_ENGINE_ID, _param->_nb_bypass_memory,_param->_size_ooo_engine_id ); 108 DELETE1_SIGNAL( in_BYPASS_MEMORY_NUM_REG , _param->_nb_bypass_memory,_param->_size_general_register); 109 DELETE1_SIGNAL( in_BYPASS_MEMORY_DATA , _param->_nb_bypass_memory,_param->_size_general_data ); 133 110 } 134 111 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/SelfTest/src/test.cpp
r98 r112 112 112 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 113 113 114 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ," in_EXECUTE_QUEUE_IN_VAL" , Tcontrol_t );115 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,"out_EXECUTE_QUEUE_IN_ACK" , Tcontrol_t );116 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ," in_EXECUTE_QUEUE_IN_CONTEXT_ID" , Tcontext_t );117 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ," in_EXECUTE_QUEUE_IN_FRONT_END_ID" , Tcontext_t );118 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t );119 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ," in_EXECUTE_QUEUE_IN_PACKET_ID" , Tpacket_t );120 //ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ," in_EXECUTE_QUEUE_IN_OPERATION" , Toperation_t );121 //ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ," in_EXECUTE_QUEUE_IN_TYPE" , Ttype_t );122 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ," in_EXECUTE_QUEUE_IN_FLAGS" , Tspecial_data_t );123 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ," in_EXECUTE_QUEUE_IN_EXCEPTION" , Texception_t );124 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t );125 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ," in_EXECUTE_QUEUE_IN_ADDRESS" , Taddress_t );126 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ," in_EXECUTE_QUEUE_IN_DATA" , Tgeneral_data_t );127 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,"out_EXECUTE_QUEUE_OUT_VAL" , Tcontrol_t );128 ALLOC _SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ," in_EXECUTE_QUEUE_OUT_ACK" , Tcontrol_t );129 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t );130 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t );132 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" , Tpacket_t );133 //ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,"out_EXECUTE_QUEUE_OUT_OPERATION" , Toperation_t );134 //ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,"out_EXECUTE_QUEUE_OUT_TYPE" , Ttype_t );135 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,"out_EXECUTE_QUEUE_OUT_FLAGS" , Tspecial_data_t );136 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" , Texception_t );137 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t );138 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,"out_EXECUTE_QUEUE_OUT_ADDRESS" , Taddress_t );139 ALLOC _SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,"out_EXECUTE_QUEUE_OUT_DATA" , Tgeneral_data_t );114 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ," in_EXECUTE_QUEUE_IN_VAL" , Tcontrol_t ); 115 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,"out_EXECUTE_QUEUE_IN_ACK" , Tcontrol_t ); 116 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ," in_EXECUTE_QUEUE_IN_CONTEXT_ID" , Tcontext_t ); 117 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ," in_EXECUTE_QUEUE_IN_FRONT_END_ID" , Tcontext_t ); 118 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ," in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t ); 119 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ," in_EXECUTE_QUEUE_IN_PACKET_ID" , Tpacket_t ); 120 //ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ," in_EXECUTE_QUEUE_IN_OPERATION" , Toperation_t ); 121 //ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ," in_EXECUTE_QUEUE_IN_TYPE" , Ttype_t ); 122 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ," in_EXECUTE_QUEUE_IN_FLAGS" , Tspecial_data_t ); 123 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ," in_EXECUTE_QUEUE_IN_EXCEPTION" , Texception_t ); 124 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ," in_EXECUTE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t ); 125 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ," in_EXECUTE_QUEUE_IN_ADDRESS" , Taddress_t ); 126 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ," in_EXECUTE_QUEUE_IN_DATA" , Tgeneral_data_t ); 127 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,"out_EXECUTE_QUEUE_OUT_VAL" , Tcontrol_t ); 128 ALLOC0_SC_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ," in_EXECUTE_QUEUE_OUT_ACK" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"out_EXECUTE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t ); 130 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"out_EXECUTE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t ); 132 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"out_EXECUTE_QUEUE_OUT_PACKET_ID" , Tpacket_t ); 133 //ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,"out_EXECUTE_QUEUE_OUT_OPERATION" , Toperation_t ); 134 //ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,"out_EXECUTE_QUEUE_OUT_TYPE" , Ttype_t ); 135 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,"out_EXECUTE_QUEUE_OUT_FLAGS" , Tspecial_data_t ); 136 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"out_EXECUTE_QUEUE_OUT_EXCEPTION" , Texception_t ); 137 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"out_EXECUTE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t ); 138 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,"out_EXECUTE_QUEUE_OUT_ADDRESS" , Taddress_t ); 139 ALLOC0_SC_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,"out_EXECUTE_QUEUE_OUT_DATA" , Tgeneral_data_t ); 140 140 141 141 … … 149 149 (*(_Execute_queue->in_NRESET)) (*(in_NRESET)); 150 150 151 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_VAL );152 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_IN_ACK );151 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_VAL ); 152 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_IN_ACK ); 153 153 if (_param->_have_port_context_id) 154 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_CONTEXT_ID );154 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_CONTEXT_ID ); 155 155 if (_param->_have_port_front_end_id) 156 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FRONT_END_ID );156 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FRONT_END_ID ); 157 157 if (_param->_have_port_ooo_engine_id) 158 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID );158 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ); 159 159 if (_param->_have_port_rob_ptr) 160 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_PACKET_ID );161 //INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OPERATION );162 //INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_TYPE );163 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FLAGS );164 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_EXCEPTION );165 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_NO_SEQUENCE );166 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_ADDRESS );167 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_DATA );168 169 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL );170 INSTANCE _SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_OUT_ACK );160 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_PACKET_ID ); 161 //INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_OPERATION ); 162 //INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_TYPE ); 163 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_FLAGS ); 164 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_EXCEPTION ); 165 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_NO_SEQUENCE ); 166 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_ADDRESS ); 167 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_IN_DATA ); 168 169 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_VAL ); 170 INSTANCE0_SC_SIGNAL(_Execute_queue, in_EXECUTE_QUEUE_OUT_ACK ); 171 171 if (_param->_have_port_context_id) 172 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID );172 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_CONTEXT_ID ); 173 173 if (_param->_have_port_front_end_id) 174 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID );174 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FRONT_END_ID ); 175 175 if (_param->_have_port_ooo_engine_id) 176 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID);176 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID); 177 177 if (_param->_have_port_rob_ptr) 178 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID );179 //INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION );180 //INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE );181 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS );182 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION );183 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE );184 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS );185 INSTANCE _SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA );178 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_PACKET_ID ); 179 //INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_OPERATION ); 180 //INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_TYPE ); 181 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_FLAGS ); 182 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_EXCEPTION ); 183 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ); 184 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_ADDRESS ); 185 INSTANCE0_SC_SIGNAL(_Execute_queue, out_EXECUTE_QUEUE_OUT_DATA ); 186 186 187 187 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_allocation.cpp
r101 r112 50 50 // -----[ Interface "execute_queue_in" ]-------------------------------- 51 51 { 52 ALLOC _INTERFACE("execute_queue_in", IN, WEST, "Input of execute_queue");52 ALLOC0_INTERFACE_BEGIN("execute_queue_in", IN, WEST, "Input of execute_queue"); 53 53 54 ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL); 55 ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK); 56 if(_param->_have_port_context_id) 57 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 if(_param->_have_port_front_end_id) 59 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 60 if(_param->_have_port_ooo_engine_id) 61 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 62 if(_param->_have_port_rob_ptr) 63 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 64 // ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 65 // ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 66 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data ); 67 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 68 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 69 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 70 ALLOC_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 54 ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_IN_VAL,VAL); 55 ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_IN_ACK,ACK); 56 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 57 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 58 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 59 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 60 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 61 // ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 62 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_FLAGS ,"flags" ,Tspecial_data_t ,_param->_size_special_data ); 63 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 64 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 65 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 66 ALLOC0_SIGNAL_IN ( in_EXECUTE_QUEUE_IN_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 67 68 ALLOC0_INTERFACE_END(); 71 69 } 72 70 73 71 // -----[ Interface "execute_queue_out" ]------------------------------- 74 72 { 75 ALLOC _INTERFACE("execute_queue_out", OUT, EAST, "Output of execute_queue");73 ALLOC0_INTERFACE_BEGIN("execute_queue_out", OUT, EAST, "Output of execute_queue"); 76 74 77 ALLOC_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL); 78 ALLOC_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK); 79 if(_param->_have_port_context_id) 80 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 81 if(_param->_have_port_front_end_id) 82 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 83 if(_param->_have_port_ooo_engine_id) 84 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 85 if(_param->_have_port_rob_ptr) 86 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 87 // ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 88 // ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 89 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 90 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 91 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 92 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 93 ALLOC_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 75 ALLOC0_VALACK_OUT(out_EXECUTE_QUEUE_OUT_VAL,VAL); 76 ALLOC0_VALACK_IN ( in_EXECUTE_QUEUE_OUT_ACK,ACK); 77 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 78 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 79 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 80 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 81 // ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 82 // ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 83 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 84 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 85 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 86 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 87 ALLOC0_SIGNAL_OUT(out_EXECUTE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 88 89 ALLOC0_INTERFACE_END(); 94 90 } 95 91 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/src/Execute_queue_deallocation.cpp
r101 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Execute_queue/include/Execute_queue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // -----[ Interface "execute_queue_in" ]-------------------------------- 32 delete in_EXECUTE_QUEUE_IN_VAL ; 33 delete out_EXECUTE_QUEUE_IN_ACK ; 34 if (_param->_have_port_context_id) 35 delete in_EXECUTE_QUEUE_IN_CONTEXT_ID ; 36 if (_param->_have_port_front_end_id) 37 delete in_EXECUTE_QUEUE_IN_FRONT_END_ID ; 38 if (_param->_have_port_ooo_engine_id) 39 delete in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID; 40 if (_param->_have_port_rob_ptr) 41 delete in_EXECUTE_QUEUE_IN_PACKET_ID ; 42 // delete in_EXECUTE_QUEUE_IN_OPERATION ; 43 // delete in_EXECUTE_QUEUE_IN_TYPE ; 44 delete in_EXECUTE_QUEUE_IN_FLAGS ; 45 delete in_EXECUTE_QUEUE_IN_EXCEPTION ; 46 delete in_EXECUTE_QUEUE_IN_NO_SEQUENCE ; 47 delete in_EXECUTE_QUEUE_IN_ADDRESS ; 48 delete in_EXECUTE_QUEUE_IN_DATA ; 49 50 // -----[ Interface "execute_queue_out" ]------------------------------- 51 delete out_EXECUTE_QUEUE_OUT_VAL ; 52 delete in_EXECUTE_QUEUE_OUT_ACK ; 53 if (_param->_have_port_context_id) 54 delete out_EXECUTE_QUEUE_OUT_CONTEXT_ID ; 55 if (_param->_have_port_front_end_id) 56 delete out_EXECUTE_QUEUE_OUT_FRONT_END_ID ; 57 if (_param->_have_port_ooo_engine_id) 58 delete out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID; 59 if (_param->_have_port_rob_ptr) 60 delete out_EXECUTE_QUEUE_OUT_PACKET_ID ; 61 // delete out_EXECUTE_QUEUE_OUT_OPERATION ; 62 // delete out_EXECUTE_QUEUE_OUT_TYPE ; 63 delete out_EXECUTE_QUEUE_OUT_FLAGS ; 64 delete out_EXECUTE_QUEUE_OUT_EXCEPTION ; 65 delete out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ; 66 delete out_EXECUTE_QUEUE_OUT_ADDRESS ; 67 delete out_EXECUTE_QUEUE_OUT_DATA ; 32 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_EXECUTE_QUEUE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 35 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 37 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_PACKET_ID ,_param->_size_rob_ptr ); 38 // DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_OPERATION ,_param->_size_operation ); 39 // DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_TYPE ,_param->_size_type ); 40 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_FLAGS ,_param->_size_special_data ); 41 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_EXCEPTION ,_param->_size_exception ); 42 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_NO_SEQUENCE ,1 ); 43 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_ADDRESS ,_param->_size_instruction_address); 44 DELETE0_SIGNAL( in_EXECUTE_QUEUE_IN_DATA ,_param->_size_general_data ); 45 46 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_VAL ,1); 47 DELETE0_SIGNAL( in_EXECUTE_QUEUE_OUT_ACK ,1); 48 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 49 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 50 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 51 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 52 // DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_OPERATION ,_param->_size_operation ); 53 // DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_TYPE ,_param->_size_type ); 54 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_FLAGS ,_param->_size_special_data ); 55 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_EXCEPTION ,_param->_size_exception ); 56 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_NO_SEQUENCE ,1 ); 57 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_ADDRESS ,_param->_size_instruction_address); 58 DELETE0_SIGNAL(out_EXECUTE_QUEUE_OUT_DATA ,_param->_size_general_data ); 68 59 } 69 60 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/SelfTest/src/test.cpp
r97 r112 126 126 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 127 127 128 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_VAL ," in_WRITE_UNIT_IN_VAL" , Tcontrol_t );129 ALLOC _SC_SIGNAL(out_WRITE_UNIT_IN_ACK ,"out_WRITE_UNIT_IN_ACK" , Tcontrol_t );130 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ," in_WRITE_UNIT_IN_CONTEXT_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ," in_WRITE_UNIT_IN_FRONT_END_ID" , Tcontext_t );132 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t );133 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ," in_WRITE_UNIT_IN_PACKET_ID" , Tpacket_t );134 //ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_OPERATION ," in_WRITE_UNIT_IN_OPERATION" , Toperation_t );135 //ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_TYPE ," in_WRITE_UNIT_IN_TYPE" , Ttype_t );136 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ," in_WRITE_UNIT_IN_WRITE_RD" , Tcontrol_t );137 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ," in_WRITE_UNIT_IN_NUM_REG_RD" , Tgeneral_address_t);138 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ," in_WRITE_UNIT_IN_DATA_RD" , Tgeneral_data_t );139 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ," in_WRITE_UNIT_IN_WRITE_RE" , Tcontrol_t );140 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ," in_WRITE_UNIT_IN_NUM_REG_RE" , Tspecial_address_t);141 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ," in_WRITE_UNIT_IN_DATA_RE" , Tspecial_data_t );142 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ," in_WRITE_UNIT_IN_EXCEPTION" , Texception_t );143 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ," in_WRITE_UNIT_IN_NO_SEQUENCE" , Tcontrol_t );144 ALLOC _SC_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ," in_WRITE_UNIT_IN_ADDRESS" , Taddress_t );145 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_VAL ,"out_WRITE_UNIT_OUT_VAL" , Tcontrol_t );146 ALLOC _SC_SIGNAL( in_WRITE_UNIT_OUT_ACK ," in_WRITE_UNIT_OUT_ACK" , Tcontrol_t );147 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,"out_WRITE_UNIT_OUT_CONTEXT_ID" , Tcontext_t );148 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t );149 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t );150 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,"out_WRITE_UNIT_OUT_PACKET_ID" , Tpacket_t );151 //ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,"out_WRITE_UNIT_OUT_OPERATION" , Toperation_t );152 //ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,"out_WRITE_UNIT_OUT_TYPE" , Ttype_t );153 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,"out_WRITE_UNIT_OUT_FLAGS" , Tspecial_data_t );154 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,"out_WRITE_UNIT_OUT_EXCEPTION" , Texception_t );155 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"out_WRITE_UNIT_OUT_NO_SEQUENCE" , Tcontrol_t );156 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,"out_WRITE_UNIT_OUT_ADDRESS" , Taddress_t );157 ALLOC _SC_SIGNAL(out_WRITE_UNIT_OUT_DATA ,"out_WRITE_UNIT_OUT_DATA" , Tgeneral_data_t );128 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_VAL ," in_WRITE_UNIT_IN_VAL" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_IN_ACK ,"out_WRITE_UNIT_IN_ACK" , Tcontrol_t ); 130 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ," in_WRITE_UNIT_IN_CONTEXT_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ," in_WRITE_UNIT_IN_FRONT_END_ID" , Tcontext_t ); 132 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID ," in_WRITE_UNIT_IN_OOO_ENGINE_ID" , Tcontext_t ); 133 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ," in_WRITE_UNIT_IN_PACKET_ID" , Tpacket_t ); 134 //ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_OPERATION ," in_WRITE_UNIT_IN_OPERATION" , Toperation_t ); 135 //ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_TYPE ," in_WRITE_UNIT_IN_TYPE" , Ttype_t ); 136 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ," in_WRITE_UNIT_IN_WRITE_RD" , Tcontrol_t ); 137 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ," in_WRITE_UNIT_IN_NUM_REG_RD" , Tgeneral_address_t); 138 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ," in_WRITE_UNIT_IN_DATA_RD" , Tgeneral_data_t ); 139 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ," in_WRITE_UNIT_IN_WRITE_RE" , Tcontrol_t ); 140 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ," in_WRITE_UNIT_IN_NUM_REG_RE" , Tspecial_address_t); 141 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ," in_WRITE_UNIT_IN_DATA_RE" , Tspecial_data_t ); 142 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ," in_WRITE_UNIT_IN_EXCEPTION" , Texception_t ); 143 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ," in_WRITE_UNIT_IN_NO_SEQUENCE" , Tcontrol_t ); 144 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ," in_WRITE_UNIT_IN_ADDRESS" , Taddress_t ); 145 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_VAL ,"out_WRITE_UNIT_OUT_VAL" , Tcontrol_t ); 146 ALLOC0_SC_SIGNAL( in_WRITE_UNIT_OUT_ACK ," in_WRITE_UNIT_OUT_ACK" , Tcontrol_t ); 147 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,"out_WRITE_UNIT_OUT_CONTEXT_ID" , Tcontext_t ); 148 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,"out_WRITE_UNIT_OUT_FRONT_END_ID" , Tcontext_t ); 149 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"out_WRITE_UNIT_OUT_OOO_ENGINE_ID", Tcontext_t ); 150 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,"out_WRITE_UNIT_OUT_PACKET_ID" , Tpacket_t ); 151 //ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,"out_WRITE_UNIT_OUT_OPERATION" , Toperation_t ); 152 //ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,"out_WRITE_UNIT_OUT_TYPE" , Ttype_t ); 153 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,"out_WRITE_UNIT_OUT_FLAGS" , Tspecial_data_t ); 154 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,"out_WRITE_UNIT_OUT_EXCEPTION" , Texception_t ); 155 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"out_WRITE_UNIT_OUT_NO_SEQUENCE" , Tcontrol_t ); 156 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,"out_WRITE_UNIT_OUT_ADDRESS" , Taddress_t ); 157 ALLOC0_SC_SIGNAL(out_WRITE_UNIT_OUT_DATA ,"out_WRITE_UNIT_OUT_DATA" , Tgeneral_data_t ); 158 158 ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL ,"out_GPR_WRITE_VAL" , Tcontrol_t , _param->_nb_gpr_write); 159 159 ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK ," in_GPR_WRITE_ACK" , Tcontrol_t , _param->_nb_gpr_write); … … 184 184 (*(_Write_unit->in_NRESET)) (*(in_NRESET)); 185 185 186 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_VAL );187 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_IN_ACK );186 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_VAL ); 187 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_IN_ACK ); 188 188 if (_param->_have_port_context_id) 189 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_CONTEXT_ID );189 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_CONTEXT_ID ); 190 190 if (_param->_have_port_front_end_id) 191 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_FRONT_END_ID );191 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_FRONT_END_ID ); 192 192 if (_param->_have_port_ooo_engine_id) 193 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OOO_ENGINE_ID );193 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OOO_ENGINE_ID ); 194 194 if (_param->_have_port_rob_ptr) 195 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_PACKET_ID );196 //INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OPERATION );197 //INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_TYPE );198 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RD );199 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RD );200 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RD );201 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RE );202 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RE );203 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RE );204 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_EXCEPTION );205 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NO_SEQUENCE );206 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_ADDRESS );207 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_VAL );208 INSTANCE _SC_SIGNAL(_Write_unit, in_WRITE_UNIT_OUT_ACK );195 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_PACKET_ID ); 196 //INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_OPERATION ); 197 //INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_TYPE ); 198 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RD ); 199 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RD ); 200 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RD ); 201 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_WRITE_RE ); 202 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NUM_REG_RE ); 203 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_DATA_RE ); 204 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_EXCEPTION ); 205 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_NO_SEQUENCE ); 206 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_IN_ADDRESS ); 207 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_VAL ); 208 INSTANCE0_SC_SIGNAL(_Write_unit, in_WRITE_UNIT_OUT_ACK ); 209 209 if (_param->_have_port_context_id) 210 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID );210 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_CONTEXT_ID ); 211 211 if (_param->_have_port_front_end_id) 212 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID );212 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FRONT_END_ID ); 213 213 if (_param->_have_port_ooo_engine_id) 214 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID);214 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OOO_ENGINE_ID); 215 215 if (_param->_have_port_rob_ptr) 216 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID );217 //INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OPERATION );218 //INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_TYPE );219 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FLAGS );220 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION );221 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE );222 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_ADDRESS );223 INSTANCE _SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_DATA );216 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_PACKET_ID ); 217 //INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_OPERATION ); 218 //INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_TYPE ); 219 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_FLAGS ); 220 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_EXCEPTION ); 221 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_NO_SEQUENCE ); 222 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_ADDRESS ); 223 INSTANCE0_SC_SIGNAL(_Write_unit, out_WRITE_UNIT_OUT_DATA ); 224 224 INSTANCE1_SC_SIGNAL(_Write_unit, out_GPR_WRITE_VAL , _param->_nb_gpr_write); 225 225 INSTANCE1_SC_SIGNAL(_Write_unit, in_GPR_WRITE_ACK , _param->_nb_gpr_write); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/SelfTest/src/test.cpp
r97 r112 125 125 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 126 126 127 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_VAL ," in_WRITE_QUEUE_IN_VAL" , Tcontrol_t );128 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_IN_ACK ,"out_WRITE_QUEUE_IN_ACK" , Tcontrol_t );129 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ," in_WRITE_QUEUE_IN_CONTEXT_ID" , Tcontext_t );130 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ," in_WRITE_QUEUE_IN_FRONT_END_ID" , Tcontext_t );131 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t );132 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ," in_WRITE_QUEUE_IN_PACKET_ID" , Tpacket_t );133 //ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ," in_WRITE_QUEUE_IN_OPERATION" , Toperation_t );134 //ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_TYPE ," in_WRITE_QUEUE_IN_TYPE" , Ttype_t );135 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ," in_WRITE_QUEUE_IN_WRITE_RD" , Tcontrol_t );136 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ," in_WRITE_QUEUE_IN_NUM_REG_RD" , Tgeneral_address_t);137 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ," in_WRITE_QUEUE_IN_DATA_RD" , Tgeneral_data_t );138 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ," in_WRITE_QUEUE_IN_WRITE_RE" , Tcontrol_t );139 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ," in_WRITE_QUEUE_IN_NUM_REG_RE" , Tspecial_address_t);140 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ," in_WRITE_QUEUE_IN_DATA_RE" , Tspecial_data_t );141 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ," in_WRITE_QUEUE_IN_EXCEPTION" , Texception_t );142 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ," in_WRITE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t );143 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ," in_WRITE_QUEUE_IN_ADDRESS" , Taddress_t );144 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,"out_WRITE_QUEUE_OUT_VAL" , Tcontrol_t );145 ALLOC _SC_SIGNAL( in_WRITE_QUEUE_OUT_ACK ," in_WRITE_QUEUE_OUT_ACK" , Tcontrol_t );146 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"out_WRITE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t );147 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t );148 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t );149 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,"out_WRITE_QUEUE_OUT_PACKET_ID" , Tpacket_t );150 //ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,"out_WRITE_QUEUE_OUT_OPERATION" , Toperation_t );151 //ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,"out_WRITE_QUEUE_OUT_TYPE" , Ttype_t );152 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,"out_WRITE_QUEUE_OUT_FLAGS" , Tspecial_data_t );153 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,"out_WRITE_QUEUE_OUT_EXCEPTION" , Texception_t );154 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t );155 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,"out_WRITE_QUEUE_OUT_ADDRESS" , Tgeneral_data_t );156 ALLOC _SC_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,"out_WRITE_QUEUE_OUT_DATA" , Taddress_t );127 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_VAL ," in_WRITE_QUEUE_IN_VAL" , Tcontrol_t ); 128 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_IN_ACK ,"out_WRITE_QUEUE_IN_ACK" , Tcontrol_t ); 129 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ," in_WRITE_QUEUE_IN_CONTEXT_ID" , Tcontext_t ); 130 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ," in_WRITE_QUEUE_IN_FRONT_END_ID" , Tcontext_t ); 131 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ," in_WRITE_QUEUE_IN_OOO_ENGINE_ID" , Tcontext_t ); 132 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ," in_WRITE_QUEUE_IN_PACKET_ID" , Tpacket_t ); 133 //ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ," in_WRITE_QUEUE_IN_OPERATION" , Toperation_t ); 134 //ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_TYPE ," in_WRITE_QUEUE_IN_TYPE" , Ttype_t ); 135 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ," in_WRITE_QUEUE_IN_WRITE_RD" , Tcontrol_t ); 136 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ," in_WRITE_QUEUE_IN_NUM_REG_RD" , Tgeneral_address_t); 137 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ," in_WRITE_QUEUE_IN_DATA_RD" , Tgeneral_data_t ); 138 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ," in_WRITE_QUEUE_IN_WRITE_RE" , Tcontrol_t ); 139 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ," in_WRITE_QUEUE_IN_NUM_REG_RE" , Tspecial_address_t); 140 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ," in_WRITE_QUEUE_IN_DATA_RE" , Tspecial_data_t ); 141 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ," in_WRITE_QUEUE_IN_EXCEPTION" , Texception_t ); 142 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ," in_WRITE_QUEUE_IN_NO_SEQUENCE" , Tcontrol_t ); 143 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ," in_WRITE_QUEUE_IN_ADDRESS" , Taddress_t ); 144 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,"out_WRITE_QUEUE_OUT_VAL" , Tcontrol_t ); 145 ALLOC0_SC_SIGNAL( in_WRITE_QUEUE_OUT_ACK ," in_WRITE_QUEUE_OUT_ACK" , Tcontrol_t ); 146 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"out_WRITE_QUEUE_OUT_CONTEXT_ID" , Tcontext_t ); 147 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"out_WRITE_QUEUE_OUT_FRONT_END_ID" , Tcontext_t ); 148 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"out_WRITE_QUEUE_OUT_OOO_ENGINE_ID", Tcontext_t ); 149 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,"out_WRITE_QUEUE_OUT_PACKET_ID" , Tpacket_t ); 150 //ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,"out_WRITE_QUEUE_OUT_OPERATION" , Toperation_t ); 151 //ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,"out_WRITE_QUEUE_OUT_TYPE" , Ttype_t ); 152 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,"out_WRITE_QUEUE_OUT_FLAGS" , Tspecial_data_t ); 153 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,"out_WRITE_QUEUE_OUT_EXCEPTION" , Texception_t ); 154 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"out_WRITE_QUEUE_OUT_NO_SEQUENCE" , Tcontrol_t ); 155 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,"out_WRITE_QUEUE_OUT_ADDRESS" , Tgeneral_data_t ); 156 ALLOC0_SC_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,"out_WRITE_QUEUE_OUT_DATA" , Taddress_t ); 157 157 ALLOC1_SC_SIGNAL(out_GPR_WRITE_VAL ,"out_GPR_WRITE_VAL" , Tcontrol_t , _param->_nb_gpr_write); 158 158 ALLOC1_SC_SIGNAL( in_GPR_WRITE_ACK ," in_GPR_WRITE_ACK" , Tcontrol_t , _param->_nb_gpr_write); … … 182 182 (*(_Write_queue->in_NRESET)) (*(in_NRESET)); 183 183 184 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_VAL );185 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_IN_ACK );184 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_VAL ); 185 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_IN_ACK ); 186 186 if (_param->_have_port_context_id) 187 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_CONTEXT_ID );187 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_CONTEXT_ID ); 188 188 if (_param->_have_port_front_end_id) 189 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_FRONT_END_ID );189 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_FRONT_END_ID ); 190 190 if (_param->_have_port_ooo_engine_id) 191 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OOO_ENGINE_ID );191 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OOO_ENGINE_ID ); 192 192 if (_param->_have_port_rob_ptr ) 193 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_PACKET_ID );194 //INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OPERATION );195 //INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_TYPE );196 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RD );197 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RD );198 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RD );199 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RE );200 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RE );201 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RE );202 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_EXCEPTION );203 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NO_SEQUENCE );204 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_ADDRESS );205 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_VAL );206 INSTANCE _SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_OUT_ACK );193 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_PACKET_ID ); 194 //INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_OPERATION ); 195 //INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_TYPE ); 196 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RD ); 197 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RD ); 198 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RD ); 199 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_WRITE_RE ); 200 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NUM_REG_RE ); 201 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_DATA_RE ); 202 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_EXCEPTION ); 203 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_NO_SEQUENCE ); 204 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_IN_ADDRESS ); 205 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_VAL ); 206 INSTANCE0_SC_SIGNAL(_Write_queue, in_WRITE_QUEUE_OUT_ACK ); 207 207 if (_param->_have_port_context_id) 208 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID );208 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_CONTEXT_ID ); 209 209 if (_param->_have_port_front_end_id) 210 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID );210 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FRONT_END_ID ); 211 211 if (_param->_have_port_ooo_engine_id) 212 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID);212 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OOO_ENGINE_ID); 213 213 if (_param->_have_port_rob_ptr ) 214 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID );215 //INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OPERATION );216 //INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_TYPE );217 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FLAGS );218 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION );219 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE );220 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS );221 INSTANCE _SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_DATA );214 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_PACKET_ID ); 215 //INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_OPERATION ); 216 //INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_TYPE ); 217 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_FLAGS ); 218 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_EXCEPTION ); 219 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_NO_SEQUENCE ); 220 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_ADDRESS ); 221 INSTANCE0_SC_SIGNAL(_Write_queue, out_WRITE_QUEUE_OUT_DATA ); 222 222 INSTANCE1_SC_SIGNAL(_Write_queue, out_GPR_WRITE_VAL , _param->_nb_gpr_write); 223 223 INSTANCE1_SC_SIGNAL(_Write_queue, in_GPR_WRITE_ACK , _param->_nb_gpr_write); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_allocation.cpp
r97 r112 51 51 // -----[ Interface "Write_queue_in" ]-------------------------------- 52 52 { 53 ALLOC _INTERFACE("write_queue_in", IN, WEST, "Input of write_queue");53 ALLOC0_INTERFACE_BEGIN ("write_queue_in", IN, WEST, "Input of write_queue"); 54 54 55 ALLOC_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL); 56 ALLOC_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK); 57 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 // ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 // ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 64 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 65 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 66 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 67 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 68 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 69 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 70 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 71 ALLOC_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 55 ALLOC0_VALACK_IN ( in_WRITE_QUEUE_IN_VAL,VAL); 56 ALLOC0_VALACK_OUT(out_WRITE_QUEUE_IN_ACK,ACK); 57 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 58 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 59 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 60 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 61 // ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 62 // ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 63 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 64 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 65 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 66 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 67 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 68 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 69 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 70 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 71 ALLOC0_SIGNAL_IN ( in_WRITE_QUEUE_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 72 73 ALLOC0_INTERFACE_END(); 72 74 } 73 75 74 76 // -----[ Interface "Write_queue_out" ]------------------------------- 75 77 { 76 ALLOC _INTERFACE("write_queue_out", OUT, EAST, "Output of write_queue");78 ALLOC0_INTERFACE_BEGIN("write_queue_out", OUT, EAST, "Output of write_queue"); 77 79 78 ALLOC_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL); 79 ALLOC_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK); 80 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 81 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 82 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 83 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 84 // ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 85 // ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 86 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 87 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 88 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 89 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 90 ALLOC_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 80 ALLOC0_VALACK_OUT(out_WRITE_QUEUE_OUT_VAL,VAL); 81 ALLOC0_VALACK_IN ( in_WRITE_QUEUE_OUT_ACK,ACK); 82 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 83 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 84 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 85 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 86 // ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 87 // ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 88 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 89 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 90 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 91 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 92 ALLOC0_SIGNAL_OUT(out_WRITE_QUEUE_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 93 94 ALLOC0_INTERFACE_END(); 91 95 } 92 96 93 97 // -----[ Interface "gpr_write" ]------------------------------------- 94 98 { 95 ALLOC1_INTERFACE ("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write);99 ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_gpr_write); 96 100 97 101 ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL); … … 100 104 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 101 105 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 106 107 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 102 108 } 103 109 104 110 // -----[ Interface "spr_write" ]------------------------------------- 105 111 { 106 ALLOC1_INTERFACE ("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write);112 ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_queue", _param->_nb_spr_write); 107 113 108 114 ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL); … … 111 117 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 112 118 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 119 120 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 113 121 } 114 122 115 123 // -----[ Interface "bypass_write" ]---------------------------------- 116 124 { 117 ALLOC1_INTERFACE ("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write);125 ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_queue", _param->_nb_bypass_write); 118 126 119 127 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 124 132 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 125 133 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 134 135 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 126 136 } 137 127 138 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 139 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/src/Write_queue_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/Write_queue/include/Write_queue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // -----[ Interface "Write_queue_in" ]-------------------------------- 32 delete in_WRITE_QUEUE_IN_VAL ; 33 delete out_WRITE_QUEUE_IN_ACK ; 34 if (_param->_have_port_context_id) 35 delete in_WRITE_QUEUE_IN_CONTEXT_ID ; 36 if (_param->_have_port_front_end_id) 37 delete in_WRITE_QUEUE_IN_FRONT_END_ID ; 38 if (_param->_have_port_ooo_engine_id) 39 delete in_WRITE_QUEUE_IN_OOO_ENGINE_ID; 40 if (_param->_have_port_rob_ptr ) 41 delete in_WRITE_QUEUE_IN_PACKET_ID ; 42 // delete in_WRITE_QUEUE_IN_OPERATION ; 43 // delete in_WRITE_QUEUE_IN_TYPE ; 44 delete in_WRITE_QUEUE_IN_WRITE_RD ; 45 delete in_WRITE_QUEUE_IN_NUM_REG_RD ; 46 delete in_WRITE_QUEUE_IN_DATA_RD ; 47 delete in_WRITE_QUEUE_IN_WRITE_RE ; 48 delete in_WRITE_QUEUE_IN_NUM_REG_RE ; 49 delete in_WRITE_QUEUE_IN_DATA_RE ; 50 delete in_WRITE_QUEUE_IN_EXCEPTION ; 51 delete in_WRITE_QUEUE_IN_NO_SEQUENCE ; 52 delete in_WRITE_QUEUE_IN_ADDRESS ; 53 54 // -----[ Interface "Write_queue_out" ]------------------------------- 55 delete out_WRITE_QUEUE_OUT_VAL ; 56 delete in_WRITE_QUEUE_OUT_ACK ; 57 if (_param->_have_port_context_id) 58 delete out_WRITE_QUEUE_OUT_CONTEXT_ID ; 59 if (_param->_have_port_front_end_id) 60 delete out_WRITE_QUEUE_OUT_FRONT_END_ID ; 61 if (_param->_have_port_ooo_engine_id) 62 delete out_WRITE_QUEUE_OUT_OOO_ENGINE_ID; 63 if (_param->_have_port_rob_ptr ) 64 delete out_WRITE_QUEUE_OUT_PACKET_ID ; 65 // delete out_WRITE_QUEUE_OUT_OPERATION ; 66 // delete out_WRITE_QUEUE_OUT_TYPE ; 67 delete out_WRITE_QUEUE_OUT_FLAGS ; 68 delete out_WRITE_QUEUE_OUT_EXCEPTION ; 69 delete out_WRITE_QUEUE_OUT_NO_SEQUENCE ; 70 delete out_WRITE_QUEUE_OUT_ADDRESS ; 71 delete out_WRITE_QUEUE_OUT_DATA ; 72 73 // -----[ Interface "gpr_write" ]------------------------------------- 74 delete [] out_GPR_WRITE_VAL ; 75 delete [] in_GPR_WRITE_ACK ; 76 if (_param->_have_port_ooo_engine_id) 77 delete [] out_GPR_WRITE_OOO_ENGINE_ID ; 78 delete [] out_GPR_WRITE_NUM_REG ; 79 delete [] out_GPR_WRITE_DATA ; 80 81 // -----[ Interface "spr_write" ]------------------------------------- 82 delete [] out_SPR_WRITE_VAL ; 83 delete [] in_SPR_WRITE_ACK ; 84 if (_param->_have_port_ooo_engine_id) 85 delete [] out_SPR_WRITE_OOO_ENGINE_ID ; 86 delete [] out_SPR_WRITE_NUM_REG ; 87 delete [] out_SPR_WRITE_DATA ; 88 89 // -----[ Interface "bypass_write" ]---------------------------------- 90 if (_param->_have_port_ooo_engine_id) 91 delete [] out_BYPASS_WRITE_OOO_ENGINE_ID ; 92 delete [] out_BYPASS_WRITE_GPR_VAL ; 93 delete [] out_BYPASS_WRITE_GPR_NUM_REG ; 94 delete [] out_BYPASS_WRITE_GPR_DATA ; 95 delete [] out_BYPASS_WRITE_SPR_VAL ; 96 delete [] out_BYPASS_WRITE_SPR_NUM_REG ; 97 delete [] out_BYPASS_WRITE_SPR_DATA ; 32 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_VAL ,1); 33 DELETE0_SIGNAL(out_WRITE_QUEUE_IN_ACK ,1); 34 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_CONTEXT_ID ,_param->_size_context_id ); 35 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_FRONT_END_ID ,_param->_size_front_end_id ); 36 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OOO_ENGINE_ID ,_param->_size_ooo_engine_id ); 37 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_PACKET_ID ,_param->_size_rob_ptr ); 38 // DELETE0_SIGNAL( in_WRITE_QUEUE_IN_OPERATION ,_param->_size_operation ); 39 // DELETE0_SIGNAL( in_WRITE_QUEUE_IN_TYPE ,_param->_size_type ); 40 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RD ,1 ); 41 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RD ,_param->_size_general_register ); 42 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RD ,_param->_size_general_data ); 43 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_WRITE_RE ,1 ); 44 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NUM_REG_RE ,_param->_size_special_register ); 45 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_DATA_RE ,_param->_size_special_data ); 46 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_EXCEPTION ,_param->_size_exception ); 47 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_NO_SEQUENCE ,1 ); 48 DELETE0_SIGNAL( in_WRITE_QUEUE_IN_ADDRESS ,_param->_size_instruction_address); 49 50 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_VAL ,1); 51 DELETE0_SIGNAL( in_WRITE_QUEUE_OUT_ACK ,1); 52 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_CONTEXT_ID ,_param->_size_context_id ); 53 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 54 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 55 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_PACKET_ID ,_param->_size_rob_ptr ); 56 // DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_OPERATION ,_param->_size_operation ); 57 // DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_TYPE ,_param->_size_type ); 58 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_FLAGS ,_param->_size_special_data ); 59 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_EXCEPTION ,_param->_size_exception ); 60 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_NO_SEQUENCE ,1 ); 61 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_ADDRESS ,_param->_size_instruction_address); 62 DELETE0_SIGNAL(out_WRITE_QUEUE_OUT_DATA ,_param->_size_general_data ); 63 64 DELETE1_SIGNAL(out_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 65 DELETE1_SIGNAL( in_GPR_WRITE_ACK , _param->_nb_gpr_write,1); 66 DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 67 DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 68 DELETE1_SIGNAL(out_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data ); 69 70 DELETE1_SIGNAL(out_SPR_WRITE_VAL , _param->_nb_spr_write,1); 71 DELETE1_SIGNAL( in_SPR_WRITE_ACK , _param->_nb_spr_write,1); 72 DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 73 DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 74 DELETE1_SIGNAL(out_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data ); 75 76 DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID,_param->_nb_bypass_write,_param->_size_ooo_engine_id ); 77 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL ,_param->_nb_bypass_write,1 ); 78 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_general_register); 79 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA ,_param->_nb_bypass_write,_param->_size_general_data ); 80 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL ,_param->_nb_bypass_write,1 ); 81 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG ,_param->_nb_bypass_write,_param->_size_special_register); 82 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA ,_param->_nb_bypass_write,_param->_size_special_data ); 98 83 } 99 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_allocation.cpp
r97 r112 57 57 // -----[ Interface "write_unit_in" ]-------------------------------- 58 58 { 59 ALLOC_INTERFACE ("write_unit_in", IN, WEST, "Input of write_unit"); 60 61 ALLOC_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL); 62 ALLOC_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK); 63 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 66 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 // ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 // ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 70 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 71 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 72 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 74 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 75 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 76 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 77 ALLOC_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 59 ALLOC0_INTERFACE_BEGIN("write_unit_in", IN, WEST, "Input of write_unit"); 60 61 ALLOC0_VALACK_IN ( in_WRITE_UNIT_IN_VAL,VAL); 62 ALLOC0_VALACK_OUT(out_WRITE_UNIT_IN_ACK,ACK); 63 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); 66 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 // ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 // ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 69 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 70 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 71 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RD ,"data_rd" ,Tgeneral_data_t ,_param->_size_general_data ); 72 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 74 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_DATA_RE ,"data_re" ,Tspecial_data_t ,_param->_size_special_data ); 75 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 76 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 77 ALLOC0_SIGNAL_IN ( in_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 78 79 ALLOC0_INTERFACE_END(); 78 80 } 79 81 80 82 // -----[ Interface "write_unit_out" ]------------------------------- 81 83 { 82 ALLOC_INTERFACE ("write_unit_out", OUT, EAST, "Output of write_unit"); 83 84 ALLOC_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL); 85 ALLOC_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK); 86 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 87 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 88 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 89 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 90 // ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 91 // ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 92 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 93 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 94 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 95 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 96 ALLOC_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 84 ALLOC0_INTERFACE_BEGIN("write_unit_out", OUT, EAST, "Output of write_unit"); 85 86 ALLOC0_VALACK_OUT(out_WRITE_UNIT_OUT_VAL,VAL); 87 ALLOC0_VALACK_IN ( in_WRITE_UNIT_OUT_ACK,ACK); 88 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 89 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 90 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 91 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 92 // ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 93 // ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 94 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_FLAGS ,"flags" ,Tspecial_data_t,_param->_size_special_data ); 95 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 96 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 97 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 98 ALLOC0_SIGNAL_OUT(out_WRITE_UNIT_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data ); 99 100 ALLOC0_INTERFACE_END(); 97 101 } 98 102 99 103 // -----[ Interface "gpr_write" ]------------------------------------- 100 104 { 101 ALLOC1_INTERFACE ("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write);105 ALLOC1_INTERFACE_BEGIN("gpr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_gpr_write); 102 106 103 107 ALLOC1_VALACK_OUT(out_GPR_WRITE_VAL,VAL); … … 106 110 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_general_register); 107 111 ALLOC1_SIGNAL_OUT(out_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data ); 112 113 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 108 114 } 109 115 110 116 // -----[ Interface "spr_write" ]------------------------------------- 111 117 { 112 ALLOC1_INTERFACE ("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write);118 ALLOC1_INTERFACE_BEGIN("spr_write", OUT, SOUTH ,"Output of write_unit", _param->_nb_spr_write); 113 119 114 120 ALLOC1_VALACK_OUT(out_SPR_WRITE_VAL,VAL); … … 117 123 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_special_register); 118 124 ALLOC1_SIGNAL_OUT(out_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data ); 125 126 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 119 127 } 120 128 121 129 // -----[ Interface "bypass_write" ]---------------------------------- 122 130 { 123 ALLOC1_INTERFACE ("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write);131 ALLOC1_INTERFACE_BEGIN("bypass_write", OUT, NORTH ,"Output of internal write_unit", _param->_nb_bypass_write); 124 132 125 133 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 130 138 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_NUM_REG ,"spr_num_reg" ,Tspecial_address_t,_param->_size_special_register); 131 139 ALLOC1_SIGNAL_OUT(out_BYPASS_WRITE_SPR_DATA ,"spr_data" ,Tspecial_data_t ,_param->_size_special_data ); 132 } 133 140 141 ALLOC1_INTERFACE_END(_param->_nb_bypass_write); 142 } 134 143 135 144 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/src/Write_unit_deallocation.cpp
r97 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Write_unit/Write_unit/include/Write_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // -----[ Interface "write_unit_in" ]-------------------------------- 31 delete in_WRITE_UNIT_IN_VAL ; 32 delete out_WRITE_UNIT_IN_ACK ; 33 if (_param->_have_port_context_id) 34 delete in_WRITE_UNIT_IN_CONTEXT_ID ; 35 if (_param->_have_port_front_end_id) 36 delete in_WRITE_UNIT_IN_FRONT_END_ID ; 37 if (_param->_have_port_ooo_engine_id) 38 delete in_WRITE_UNIT_IN_OOO_ENGINE_ID; 39 if (_param->_have_port_rob_ptr) 40 delete in_WRITE_UNIT_IN_PACKET_ID ; 41 // delete in_WRITE_UNIT_IN_OPERATION ; 42 // delete in_WRITE_UNIT_IN_TYPE ; 43 delete in_WRITE_UNIT_IN_WRITE_RD ; 44 delete in_WRITE_UNIT_IN_NUM_REG_RD ; 45 delete in_WRITE_UNIT_IN_DATA_RD ; 46 delete in_WRITE_UNIT_IN_WRITE_RE ; 47 delete in_WRITE_UNIT_IN_NUM_REG_RE ; 48 delete in_WRITE_UNIT_IN_DATA_RE ; 49 delete in_WRITE_UNIT_IN_EXCEPTION ; 50 delete in_WRITE_UNIT_IN_NO_SEQUENCE ; 51 delete in_WRITE_UNIT_IN_ADDRESS ; 31 DELETE0_SIGNAL( in_WRITE_UNIT_IN_VAL ,1); 32 DELETE0_SIGNAL(out_WRITE_UNIT_IN_ACK ,1); 33 DELETE0_SIGNAL( in_WRITE_UNIT_IN_CONTEXT_ID ,_param->_size_context_id ); 34 DELETE0_SIGNAL( in_WRITE_UNIT_IN_FRONT_END_ID ,_param->_size_front_end_id ); 35 DELETE0_SIGNAL( in_WRITE_UNIT_IN_OOO_ENGINE_ID,_param->_size_ooo_engine_id ); 36 DELETE0_SIGNAL( in_WRITE_UNIT_IN_PACKET_ID ,_param->_size_rob_ptr ); 37 // DELETE0_SIGNAL( in_WRITE_UNIT_IN_OPERATION ,_param->_size_operation ); 38 // DELETE0_SIGNAL( in_WRITE_UNIT_IN_TYPE ,_param->_size_type ); 39 DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RD ,1 ); 40 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RD ,_param->_size_general_register ); 41 DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RD ,_param->_size_general_data ); 42 DELETE0_SIGNAL( in_WRITE_UNIT_IN_WRITE_RE ,1 ); 43 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NUM_REG_RE ,_param->_size_special_register ); 44 DELETE0_SIGNAL( in_WRITE_UNIT_IN_DATA_RE ,_param->_size_special_data ); 45 DELETE0_SIGNAL( in_WRITE_UNIT_IN_EXCEPTION ,_param->_size_exception ); 46 DELETE0_SIGNAL( in_WRITE_UNIT_IN_NO_SEQUENCE ,1 ); 47 DELETE0_SIGNAL( in_WRITE_UNIT_IN_ADDRESS ,_param->_size_instruction_address); 48 49 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_VAL ,1); 50 DELETE0_SIGNAL( in_WRITE_UNIT_OUT_ACK ,1); 51 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_CONTEXT_ID ,_param->_size_context_id ); 52 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FRONT_END_ID ,_param->_size_front_end_id ); 53 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OOO_ENGINE_ID,_param->_size_ooo_engine_id); 54 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_PACKET_ID ,_param->_size_rob_ptr ); 55 // DELETE0_SIGNAL(out_WRITE_UNIT_OUT_OPERATION ,_param->_size_operation ); 56 // DELETE0_SIGNAL(out_WRITE_UNIT_OUT_TYPE ,_param->_size_type ); 57 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_FLAGS ,_param->_size_special_data ); 58 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_EXCEPTION ,_param->_size_exception ); 59 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_NO_SEQUENCE ,1 ); 60 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_ADDRESS ,_param->_size_instruction_address); 61 DELETE0_SIGNAL(out_WRITE_UNIT_OUT_DATA ,_param->_size_general_data ); 62 63 DELETE1_SIGNAL(out_GPR_WRITE_VAL , _param->_nb_gpr_write,1); 64 DELETE1_SIGNAL( in_GPR_WRITE_ACK , _param->_nb_gpr_write,1); 65 DELETE1_SIGNAL(out_GPR_WRITE_OOO_ENGINE_ID, _param->_nb_gpr_write,_param->_size_ooo_engine_id ); 66 DELETE1_SIGNAL(out_GPR_WRITE_NUM_REG , _param->_nb_gpr_write,_param->_size_general_register); 67 DELETE1_SIGNAL(out_GPR_WRITE_DATA , _param->_nb_gpr_write,_param->_size_general_data ); 68 69 DELETE1_SIGNAL(out_SPR_WRITE_VAL , _param->_nb_spr_write,1); 70 DELETE1_SIGNAL( in_SPR_WRITE_ACK , _param->_nb_spr_write,1); 71 DELETE1_SIGNAL(out_SPR_WRITE_OOO_ENGINE_ID, _param->_nb_spr_write,_param->_size_ooo_engine_id ); 72 DELETE1_SIGNAL(out_SPR_WRITE_NUM_REG , _param->_nb_spr_write,_param->_size_special_register); 73 DELETE1_SIGNAL(out_SPR_WRITE_DATA , _param->_nb_spr_write,_param->_size_special_data ); 74 75 DELETE1_SIGNAL(out_BYPASS_WRITE_OOO_ENGINE_ID, _param->_nb_bypass_write,_param->_size_ooo_engine_id ); 76 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_VAL , _param->_nb_bypass_write,1 ); 77 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_NUM_REG , _param->_nb_bypass_write,_param->_size_general_register); 78 DELETE1_SIGNAL(out_BYPASS_WRITE_GPR_DATA , _param->_nb_bypass_write,_param->_size_general_data ); 79 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_VAL , _param->_nb_bypass_write,1 ); 80 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_NUM_REG , _param->_nb_bypass_write,_param->_size_special_register); 81 DELETE1_SIGNAL(out_BYPASS_WRITE_SPR_DATA , _param->_nb_bypass_write,_param->_size_special_data ); 82 } 52 83 53 // -----[ Interface "write_unit_out" ]-------------------------------54 delete out_WRITE_UNIT_OUT_VAL ;55 delete in_WRITE_UNIT_OUT_ACK ;56 if (_param->_have_port_context_id)57 delete out_WRITE_UNIT_OUT_CONTEXT_ID ;58 if (_param->_have_port_front_end_id)59 delete out_WRITE_UNIT_OUT_FRONT_END_ID ;60 if (_param->_have_port_ooo_engine_id)61 delete out_WRITE_UNIT_OUT_OOO_ENGINE_ID;62 if (_param->_have_port_rob_ptr)63 delete out_WRITE_UNIT_OUT_PACKET_ID ;64 // delete out_WRITE_UNIT_OUT_OPERATION ;65 // delete out_WRITE_UNIT_OUT_TYPE ;66 delete out_WRITE_UNIT_OUT_FLAGS ;67 delete out_WRITE_UNIT_OUT_EXCEPTION ;68 delete out_WRITE_UNIT_OUT_NO_SEQUENCE ;69 delete out_WRITE_UNIT_OUT_ADDRESS ;70 delete out_WRITE_UNIT_OUT_DATA ;71 72 // -----[ Interface "gpr_write" ]-------------------------------------73 delete [] out_GPR_WRITE_VAL ;74 delete [] in_GPR_WRITE_ACK ;75 if (_param->_have_port_ooo_engine_id)76 delete [] out_GPR_WRITE_OOO_ENGINE_ID ;77 delete [] out_GPR_WRITE_NUM_REG ;78 delete [] out_GPR_WRITE_DATA ;79 80 // -----[ Interface "spr_write" ]-------------------------------------81 delete [] out_SPR_WRITE_VAL ;82 delete [] in_SPR_WRITE_ACK ;83 if (_param->_have_port_ooo_engine_id)84 delete [] out_SPR_WRITE_OOO_ENGINE_ID ;85 delete [] out_SPR_WRITE_NUM_REG ;86 delete [] out_SPR_WRITE_DATA ;87 88 // -----[ Interface "bypass_write" ]----------------------------------89 if (_param->_have_port_ooo_engine_id)90 delete [] out_BYPASS_WRITE_OOO_ENGINE_ID ;91 delete [] out_BYPASS_WRITE_GPR_VAL ;92 delete [] out_BYPASS_WRITE_GPR_NUM_REG ;93 delete [] out_BYPASS_WRITE_GPR_DATA ;94 delete [] out_BYPASS_WRITE_SPR_VAL ;95 delete [] out_BYPASS_WRITE_SPR_NUM_REG ;96 delete [] out_BYPASS_WRITE_SPR_DATA ;97 98 }99 84 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 85 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface "execute_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]);60 ALLOC2_INTERFACE_BEGIN("execute_unit_out", IN, EAST, "Output of execution_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_EXECUTE_UNIT_OUT_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); … … 77 77 _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 , _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 78 78 _ALLOC2_SIGNAL_IN ( in_EXECUTE_UNIT_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address, _param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 79 80 ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port[it1]); 79 81 } 80 82 81 83 // ~~~~~[ Interface "write_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 84 { 83 ALLOC1_INTERFACE ("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit);85 ALLOC1_INTERFACE_BEGIN("write_unit_in", OUT, WEST, "Input of write_unit", _param->_nb_write_unit); 84 86 85 87 ALLOC1_VALACK_OUT(out_WRITE_UNIT_IN_VAL,VAL); … … 100 102 ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1 ); 101 103 ALLOC1_SIGNAL_OUT(out_WRITE_UNIT_IN_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 104 105 ALLOC1_INTERFACE_END(_param->_nb_write_unit); 102 106 } 103 107 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 105 109 if (usage_is_set(_usage,USE_SYSTEMC)) 106 110 { 107 _destination = new std::list<uint32_t> ** [_param->_nb_execute_unit]; 108 for (uint32_t i=0; i<_param->_nb_execute_unit; i++) 109 { 110 _destination [i] = new std::list<uint32_t> * [_param->_nb_execute_unit_port[i]]; 111 for (uint32_t j=0; j<_param->_nb_execute_unit_port[i]; j++) 112 { 113 _destination [i][j] = new std::list<uint32_t> [_param->_nb_thread]; 114 } 115 } 111 ALLOC3(_destination,std::list<uint32_t>,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread); 116 112 } 117 113 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Execution_unit_to_Write_unit/src/Execution_unit_to_Write_unit_deallocation.cpp
r97 r112 65 65 DELETE1_SIGNAL(out_WRITE_UNIT_IN_ADDRESS , _param->_nb_write_unit,_param->_size_general_data ); 66 66 67 delete [] _destination;67 DELETE3(_destination,_param->_nb_execute_unit,_param->_nb_execute_unit_port[it1],_param->_nb_thread); 68 68 } 69 69 70 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 71 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_allocation.cpp
r88 r112 57 57 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC2_INTERFACE ("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]);59 ALLOC2_INTERFACE_BEGIN("read_unit_out", IN, EAST, "Output of read_unit",_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 60 60 61 61 _ALLOC2_VALACK_IN ( in_READ_UNIT_OUT_VAL,VAL,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); … … 78 78 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 79 79 _ALLOC2_SIGNAL_IN ( in_READ_UNIT_OUT_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 80 81 ALLOC2_INTERFACE_END(_param->_nb_read_unit,_param->_nb_read_unit_port[it1]); 80 82 } 81 83 // ~~~~~[ Interface "execute_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 84 { 83 ALLOC2_INTERFACE ("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]);85 ALLOC2_INTERFACE_BEGIN("execute_unit_in", OUT, WEST, "Input of execute_unit", _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 84 86 85 87 _ALLOC2_VALACK_OUT(out_EXECUTE_UNIT_IN_VAL,VAL, _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); … … 102 104 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_DATA_RB ,"DATA_RB" ,Tgeneral_data_t ,_param->_size_general_data , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 103 105 _ALLOC2_SIGNAL_OUT(out_EXECUTE_UNIT_IN_NUM_REG_RD ,"NUM_REG_RD" ,Tgeneral_address_t,_param->_size_general_register , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 106 107 ALLOC2_INTERFACE_END(_param->_nb_execute_unit, _param->_nb_execute_unit_port [it1]); 104 108 } 105 109 … … 107 111 if (usage_is_set(_usage,USE_SYSTEMC)) 108 112 { 109 _destination = new std::list<destination_t> ** [_param->_nb_read_unit]; 110 for (uint32_t i=0; i<_param->_nb_read_unit; i++) 111 { 112 _destination [i] = new std::list<destination_t> * [_param->_nb_thread]; 113 for (uint32_t j=0; j<_param->_nb_thread; j++) 114 { 115 _destination [i][j] = new std::list<destination_t> [_param->_nb_type]; 116 } 117 } 113 ALLOC3(_destination,std::list<destination_t>,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);; 118 114 } 119 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Network/Read_unit_to_Execution_unit/src/Read_unit_to_Execution_unit_deallocation.cpp
r88 r112 69 69 DELETE2_SIGNAL(out_EXECUTE_UNIT_IN_NUM_REG_RD , _param->_nb_execute_unit, _param->_nb_execute_unit_port [it1],_param->_size_general_register ); 70 70 71 delete [] _destination;71 DELETE3(_destination,_param->_nb_read_unit,_param->_nb_thread,_param->_nb_type);; 72 72 } 73 73 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 50 51 out_CONST_1 = interface->set_signal_out <Tcontrol_t> ("const_1",1); 51 52 52 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 54 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 55 if (_param->_have_port_ooo_engine_id == true) 56 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 57 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 58 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 59 60 out_GPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 61 in_GPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 62 in_GPR_READ_REGISTERFILE_DATA = new SC_IN (Tgeneral_data_t ) ** [_param->_nb_ooo_engine]; 63 64 out_GPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 65 in_GPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 66 in_GPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 67 68 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 69 { 70 out_GPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 71 in_GPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 72 in_GPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_read]; 73 74 out_GPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 75 in_GPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 76 in_GPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 77 } 78 79 for (uint32_t j=0; j<_param->_nb_gpr_read; j++) 80 { 81 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(j) 82 #ifdef POSITION 83 ,IN 84 ,NORTH, 85 "Interface to read generalist register" 86 #endif 87 ); 88 89 in_GPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 90 out_GPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 91 if (_param->_have_port_ooo_engine_id == true) 92 in_GPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 93 out_GPR_READ_DATA [j] = interface->set_signal_out<Tgeneral_data_t> ("data" , _param->_size_general_data); 94 out_GPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 95 96 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 97 { 98 { 99 Interface_fifo * interface = _interfaces->set_interface("gpr_read_registerfile_"+toString(i)+"_"+toString(j) 100 #ifdef POSITION 101 ,IN 102 ,NORTH, 103 "Interface to read generalist register - from/to register file" 104 #endif 105 ); 106 107 out_GPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 108 in_GPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 109 in_GPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tgeneral_data_t> ("data" , _param->_size_general_data); 110 } 111 { 112 Interface_fifo * interface = _interfaces->set_interface("gpr_read_status_"+toString(i)+"_"+toString(j) 113 #ifdef POSITION 114 ,IN 115 ,NORTH, 116 "Interface to read generalist register - from/to status" 117 #endif 118 ); 119 120 121 out_GPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 122 in_GPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 123 in_GPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 124 } 125 } 126 } 127 128 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 130 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 131 if (_param->_have_port_ooo_engine_id == true) 132 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 133 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 134 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 135 136 out_SPR_READ_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 137 in_SPR_READ_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 138 in_SPR_READ_REGISTERFILE_DATA = new SC_IN (Tspecial_data_t ) ** [_param->_nb_ooo_engine]; 139 140 out_SPR_READ_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 141 in_SPR_READ_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 142 in_SPR_READ_STATUS_DATA_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 143 144 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 145 { 146 out_SPR_READ_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 147 in_SPR_READ_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 148 in_SPR_READ_REGISTERFILE_DATA [i] = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_read]; 149 150 out_SPR_READ_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 151 in_SPR_READ_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 152 in_SPR_READ_STATUS_DATA_VAL [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 153 } 154 155 for (uint32_t j=0; j<_param->_nb_spr_read; j++) 156 { 157 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(j) 158 #ifdef POSITION 159 ,IN 160 ,NORTH, 161 "Interface to read special register" 162 #endif 163 ); 164 165 in_SPR_READ_VAL [j] = interface->set_signal_valack_in (VAL); 166 out_SPR_READ_ACK [j] = interface->set_signal_valack_out (ACK); 167 if (_param->_have_port_ooo_engine_id == true) 168 in_SPR_READ_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 169 out_SPR_READ_DATA [j] = interface->set_signal_out<Tspecial_data_t> ("data" , _param->_size_special_data); 170 out_SPR_READ_DATA_VAL [j] = interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 171 172 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 173 { 174 { 175 Interface_fifo * interface = _interfaces->set_interface("spr_read_registerfile_"+toString(i)+"_"+toString(j) 176 #ifdef POSITION 177 ,IN 178 ,NORTH, 179 "Interface to read special register - from/to register file" 180 #endif 181 ); 182 183 out_SPR_READ_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 184 in_SPR_READ_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 185 in_SPR_READ_REGISTERFILE_DATA [i][j] = interface->set_signal_in <Tspecial_data_t> ("data" , _param->_size_special_data); 186 } 187 { 188 Interface_fifo * interface = _interfaces->set_interface("spr_read_status_"+toString(i)+"_"+toString(j) 189 #ifdef POSITION 190 ,IN 191 ,NORTH, 192 "Interface to read special register - from/to status" 193 #endif 194 ); 195 196 197 out_SPR_READ_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 198 in_SPR_READ_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 199 in_SPR_READ_STATUS_DATA_VAL [i][j] = interface->set_signal_in <Tcontrol_t > ("data_val" , 1); 200 } 201 } 202 } 203 204 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 205 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 206 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 207 if (_param->_have_port_ooo_engine_id == true) 208 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 209 210 out_GPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 211 in_GPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 212 213 out_GPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 214 in_GPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 215 216 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 217 { 218 out_GPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 219 in_GPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 220 221 out_GPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 222 in_GPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 223 } 224 225 for (uint32_t j=0; j<_param->_nb_gpr_write; j++) 226 { 227 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(j) 228 #ifdef POSITION 229 ,IN 230 ,NORTH, 231 "Interface to write generalist register" 232 #endif 233 ); 234 235 in_GPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 236 out_GPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 237 if (_param->_have_port_ooo_engine_id == true) 238 in_GPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 239 240 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 241 { 242 { 243 Interface_fifo * interface = _interfaces->set_interface("gpr_write_registerfile_"+toString(i)+"_"+toString(j) 244 #ifdef POSITION 245 ,IN 246 ,NORTH, 247 "Interface to write generalist register - from/to register file" 248 #endif 249 ); 250 251 out_GPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 252 in_GPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 253 } 254 { 255 Interface_fifo * interface = _interfaces->set_interface("gpr_write_status_"+toString(i)+"_"+toString(j) 256 #ifdef POSITION 257 ,IN 258 ,NORTH, 259 "Interface to write generalist register - from/to status" 260 #endif 261 ); 262 263 264 out_GPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 265 in_GPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 266 } 267 } 268 } 269 270 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 271 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 272 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 273 if (_param->_have_port_ooo_engine_id == true) 274 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 275 276 out_SPR_WRITE_REGISTERFILE_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 277 in_SPR_WRITE_REGISTERFILE_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 278 279 out_SPR_WRITE_STATUS_VAL = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 280 in_SPR_WRITE_STATUS_ACK = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 281 282 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 283 { 284 out_SPR_WRITE_REGISTERFILE_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 285 in_SPR_WRITE_REGISTERFILE_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 286 287 out_SPR_WRITE_STATUS_VAL [i] = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 288 in_SPR_WRITE_STATUS_ACK [i] = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 289 } 290 291 for (uint32_t j=0; j<_param->_nb_spr_write; j++) 292 { 293 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(j) 294 #ifdef POSITION 295 ,IN 296 ,NORTH, 297 "Interface to write special register" 298 #endif 299 ); 300 301 in_SPR_WRITE_VAL [j] = interface->set_signal_valack_in (VAL); 302 out_SPR_WRITE_ACK [j] = interface->set_signal_valack_out (ACK); 303 if (_param->_have_port_ooo_engine_id == true) 304 in_SPR_WRITE_OOO_ENGINE_ID [j] = interface->set_signal_in <Tcontext_t > ("ooo_engine_id", _param->_size_ooo_engine_id); 305 306 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 307 { 308 { 309 Interface_fifo * interface = _interfaces->set_interface("spr_write_registerfile_"+toString(i)+"_"+toString(j) 310 #ifdef POSITION 311 ,IN 312 ,NORTH, 313 "Interface to write special register - from/to register file" 314 #endif 315 ); 316 317 out_SPR_WRITE_REGISTERFILE_VAL [i][j] = interface->set_signal_valack_out (VAL); 318 in_SPR_WRITE_REGISTERFILE_ACK [i][j] = interface->set_signal_valack_in (ACK); 319 } 320 { 321 Interface_fifo * interface = _interfaces->set_interface("spr_write_status_"+toString(i)+"_"+toString(j) 322 #ifdef POSITION 323 ,IN 324 ,NORTH, 325 "Interface to write special register - from/to status" 326 #endif 327 ); 328 329 330 out_SPR_WRITE_STATUS_VAL [i][j] = interface->set_signal_valack_out (VAL); 331 in_SPR_WRITE_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 332 } 333 } 334 } 335 336 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 337 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 338 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 339 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 340 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 341 out_INSERT_ROB_GPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 342 in_INSERT_ROB_GPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 343 out_INSERT_ROB_SPR_STATUS_VAL = new SC_OUT(Tcontrol_t) ** [_param->_nb_ooo_engine]; 344 in_INSERT_ROB_SPR_STATUS_ACK = new SC_IN (Tcontrol_t) ** [_param->_nb_ooo_engine]; 345 346 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 347 { 348 uint32_t x=_param->_nb_inst_insert_rob [i]; 349 350 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t) * [x]; 351 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t) * [x]; 352 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t) * [x]; 353 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t) * [x]; 354 out_INSERT_ROB_GPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 355 in_INSERT_ROB_GPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 356 out_INSERT_ROB_SPR_STATUS_VAL [i] = new SC_OUT(Tcontrol_t) * [x]; 357 in_INSERT_ROB_SPR_STATUS_ACK [i] = new SC_IN (Tcontrol_t) * [x]; 358 359 for (uint32_t j=0; j<x; j++) 360 { 361 { 362 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 363 #ifdef POSITION 364 ,IN 365 ,WEST 366 ,"Interface to update status (insert)" 367 #endif 368 ); 369 370 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 371 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out(ACK); 372 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("rd_use", 1); 373 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t> ("re_use", 1); 374 } 375 { 376 Interface_fifo * interface = _interfaces->set_interface("insert_rob_gpr_status_"+toString(i)+"_"+toString(j) 377 #ifdef POSITION 378 ,IN 379 ,EAST 380 ,"Interface to update status (insert)" 381 #endif 382 ); 383 384 out_INSERT_ROB_GPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 385 in_INSERT_ROB_GPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 386 } 387 { 388 Interface_fifo * interface = _interfaces->set_interface("insert_rob_spr_status_"+toString(i)+"_"+toString(j) 389 #ifdef POSITION 390 ,IN 391 ,EAST 392 ,"Interface to update status (insert)" 393 #endif 394 ); 395 396 out_INSERT_ROB_SPR_STATUS_VAL [i][j] = interface->set_signal_valack_out(VAL); 397 in_INSERT_ROB_SPR_STATUS_ACK [i][j] = interface->set_signal_valack_in (ACK); 398 } 399 } 400 } 53 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 { 55 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_gpr_read); 56 57 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 58 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 59 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 60 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t, _param->_size_general_data); 61 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 62 63 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 64 } 65 66 { 67 ALLOC2_INTERFACE_BEGIN("gpr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 68 69 ALLOC2_VALACK_OUT(out_GPR_READ_REGISTERFILE_VAL ,VAL); 70 ALLOC2_VALACK_IN ( in_GPR_READ_REGISTERFILE_ACK ,ACK); 71 ALLOC2_SIGNAL_IN ( in_GPR_READ_REGISTERFILE_DATA,"data",Tgeneral_data_t,_param->_size_general_data); 72 73 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 74 } 75 76 { 77 ALLOC2_INTERFACE_BEGIN("gpr_read_status",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_gpr_read); 78 79 ALLOC2_VALACK_OUT(out_GPR_READ_STATUS_VAL ,VAL); 80 ALLOC2_VALACK_IN ( in_GPR_READ_STATUS_ACK ,ACK); 81 ALLOC2_SIGNAL_IN ( in_GPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 82 83 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_read); 84 } 85 86 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 { 88 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read generalist register"),_param->_nb_spr_read); 89 90 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 91 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 92 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID ,"ooo_engine_id",Tcontext_t , _param->_size_ooo_engine_id); 93 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t, _param->_size_special_data); 94 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t , 1); 95 96 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 97 } 98 99 { 100 ALLOC2_INTERFACE_BEGIN("spr_read_registerfile",IN,NORTH,_("Interface to read generalist register - from/to register file"),_param->_nb_ooo_engine,_param->_nb_spr_read); 101 102 ALLOC2_VALACK_OUT(out_SPR_READ_REGISTERFILE_VAL ,VAL); 103 ALLOC2_VALACK_IN ( in_SPR_READ_REGISTERFILE_ACK ,ACK); 104 ALLOC2_SIGNAL_IN ( in_SPR_READ_REGISTERFILE_DATA,"data",Tspecial_data_t,_param->_size_special_data); 105 106 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 107 } 108 109 { 110 ALLOC2_INTERFACE_BEGIN("spr_read_status",IN,NORTH,_("Interface to read generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_read); 111 112 ALLOC2_VALACK_OUT(out_SPR_READ_STATUS_VAL ,VAL); 113 ALLOC2_VALACK_IN ( in_SPR_READ_STATUS_ACK ,ACK); 114 ALLOC2_SIGNAL_IN ( in_SPR_READ_STATUS_DATA_VAL,"data_val",Tcontrol_t,1); 115 116 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_read); 117 } 118 119 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 { 121 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_gpr_write); 122 123 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 124 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 125 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 126 127 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 128 } 129 130 { 131 ALLOC2_INTERFACE_BEGIN("gpr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 132 133 ALLOC2_VALACK_OUT(out_GPR_WRITE_REGISTERFILE_VAL,VAL); 134 ALLOC2_VALACK_IN ( in_GPR_WRITE_REGISTERFILE_ACK,ACK); 135 136 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 137 } 138 139 { 140 ALLOC2_INTERFACE_BEGIN("gpr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_gpr_write); 141 142 ALLOC2_VALACK_OUT(out_GPR_WRITE_STATUS_VAL,VAL); 143 ALLOC2_VALACK_IN ( in_GPR_WRITE_STATUS_ACK,ACK); 144 145 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_gpr_write); 146 } 147 148 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 149 { 150 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write generalist register"),_param->_nb_spr_write); 151 152 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 153 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 154 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t, _param->_size_ooo_engine_id); 155 156 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 157 } 158 159 { 160 ALLOC2_INTERFACE_BEGIN("spr_write_registerfile",IN,NORTH,_("Interface to write generalist register - from/to registerfile"),_param->_nb_ooo_engine,_param->_nb_spr_write); 161 162 ALLOC2_VALACK_OUT(out_SPR_WRITE_REGISTERFILE_VAL,VAL); 163 ALLOC2_VALACK_IN ( in_SPR_WRITE_REGISTERFILE_ACK,ACK); 164 165 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 166 } 167 168 { 169 ALLOC2_INTERFACE_BEGIN("spr_write_status",IN,NORTH,_("Interface to write generalist register - from/to status"),_param->_nb_ooo_engine,_param->_nb_spr_write); 170 171 ALLOC2_VALACK_OUT(out_SPR_WRITE_STATUS_VAL,VAL); 172 ALLOC2_VALACK_IN ( in_SPR_WRITE_STATUS_ACK,ACK); 173 174 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_spr_write); 175 } 176 177 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 { 179 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 180 181 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 182 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 183 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE,"rd_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 184 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE,"re_use",Tcontrol_t, 1,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 185 186 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 187 } 188 189 { 190 ALLOC2_INTERFACE_BEGIN("insert_rob_gpr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 191 192 _ALLOC2_VALACK_OUT(out_INSERT_ROB_GPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 193 _ALLOC2_VALACK_IN ( in_INSERT_ROB_GPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 194 195 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 196 } 197 198 { 199 ALLOC2_INTERFACE_BEGIN("insert_rob_spr_status",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 200 201 _ALLOC2_VALACK_OUT(out_INSERT_ROB_SPR_STATUS_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 202 _ALLOC2_VALACK_IN ( in_INSERT_ROB_SPR_STATUS_ACK,ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 203 204 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 205 } 401 206 402 207 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/src/Register_unit_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/Register_unit_Glue/include/Register_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 26 27 { 27 28 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 28 delete 29 delete in_CLOCK ; 29 30 //#endif 30 delete in_NRESET; 31 delete in_NRESET; 32 delete out_CONST_0; 33 delete out_CONST_1; 31 34 32 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 33 delete [] in_GPR_READ_VAL ; 34 delete [] out_GPR_READ_ACK ; 35 if (_param->_have_port_ooo_engine_id == true) 36 delete [] in_GPR_READ_OOO_ENGINE_ID ; 37 delete [] out_GPR_READ_DATA ; 38 delete [] out_GPR_READ_DATA_VAL ; 35 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1 ); 36 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1 ); 37 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 38 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 39 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 40 41 DELETE2_SIGNAL(out_GPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 42 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 43 DELETE2_SIGNAL( in_GPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_gpr_read,_param->_size_general_data); 39 44 40 delete [] out_GPR_READ_REGISTERFILE_VAL;41 delete [] in_GPR_READ_REGISTERFILE_ACK;42 delete [] in_GPR_READ_REGISTERFILE_DATA;45 DELETE2_SIGNAL(out_GPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 46 DELETE2_SIGNAL( in_GPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_gpr_read,1 ); 47 DELETE2_SIGNAL( in_GPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_read,1); 43 48 44 delete [] out_GPR_READ_STATUS_VAL ; 45 delete [] in_GPR_READ_STATUS_ACK ; 46 delete [] in_GPR_READ_STATUS_DATA_VAL ; 49 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1 ); 50 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1 ); 51 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 52 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 53 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 54 55 DELETE2_SIGNAL(out_SPR_READ_REGISTERFILE_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 56 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 57 DELETE2_SIGNAL( in_SPR_READ_REGISTERFILE_DATA,_param->_nb_ooo_engine,_param->_nb_spr_read,_param->_size_special_data); 58 59 DELETE2_SIGNAL(out_SPR_READ_STATUS_VAL ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 60 DELETE2_SIGNAL( in_SPR_READ_STATUS_ACK ,_param->_nb_ooo_engine,_param->_nb_spr_read,1 ); 61 DELETE2_SIGNAL( in_SPR_READ_STATUS_DATA_VAL,_param->_nb_ooo_engine,_param->_nb_spr_read,1); 62 63 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1 ); 64 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1 ); 65 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 47 66 67 68 DELETE2_SIGNAL(out_GPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 69 DELETE2_SIGNAL( in_GPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 48 70 49 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 delete [] in_SPR_READ_VAL ; 51 delete [] out_SPR_READ_ACK ; 52 if (_param->_have_port_ooo_engine_id == true) 53 delete [] in_SPR_READ_OOO_ENGINE_ID ; 54 delete [] out_SPR_READ_DATA ; 55 delete [] out_SPR_READ_DATA_VAL ; 71 DELETE2_SIGNAL(out_GPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 72 DELETE2_SIGNAL( in_GPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_gpr_write,1 ); 56 73 57 delete [] out_SPR_READ_REGISTERFILE_VAL;58 delete [] in_SPR_READ_REGISTERFILE_ACK;59 delete [] in_SPR_READ_REGISTERFILE_DATA;74 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1 ); 75 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1 ); 76 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 60 77 61 delete [] out_SPR_READ_STATUS_VAL ; 62 delete [] in_SPR_READ_STATUS_ACK ; 63 delete [] in_SPR_READ_STATUS_DATA_VAL ; 78 DELETE2_SIGNAL(out_SPR_WRITE_REGISTERFILE_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 79 DELETE2_SIGNAL( in_SPR_WRITE_REGISTERFILE_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 64 80 65 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 delete [] in_GPR_WRITE_VAL ; 67 delete [] out_GPR_WRITE_ACK ; 68 if (_param->_have_port_ooo_engine_id == true) 69 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 81 DELETE2_SIGNAL(out_SPR_WRITE_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 82 DELETE2_SIGNAL( in_SPR_WRITE_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_spr_write,1 ); 70 83 71 delete [] out_GPR_WRITE_REGISTERFILE_VAL ; 72 delete [] in_GPR_WRITE_REGISTERFILE_ACK ; 84 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 85 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 86 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 87 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 73 88 74 delete [] out_GPR_WRITE_STATUS_VAL;75 delete [] in_GPR_WRITE_STATUS_ACK;89 DELETE2_SIGNAL(out_INSERT_ROB_GPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 90 DELETE2_SIGNAL( in_INSERT_ROB_GPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 76 91 77 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78 delete [] in_SPR_WRITE_VAL ; 79 delete [] out_SPR_WRITE_ACK ; 80 if (_param->_have_port_ooo_engine_id == true) 81 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 82 83 delete [] out_SPR_WRITE_REGISTERFILE_VAL ; 84 delete [] in_SPR_WRITE_REGISTERFILE_ACK ; 85 86 delete [] out_SPR_WRITE_STATUS_VAL ; 87 delete [] in_SPR_WRITE_STATUS_ACK ; 88 89 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 delete [] in_INSERT_ROB_VAL ; 91 delete [] out_INSERT_ROB_ACK ; 92 delete [] in_INSERT_ROB_RD_USE ; 93 delete [] in_INSERT_ROB_RE_USE ; 94 delete [] out_INSERT_ROB_GPR_STATUS_VAL ; 95 delete [] in_INSERT_ROB_GPR_STATUS_ACK ; 96 delete [] out_INSERT_ROB_SPR_STATUS_VAL ; 97 delete [] in_INSERT_ROB_SPR_STATUS_ACK ; 98 99 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 // delete [] in_RETIRE_ROB_VAL ; 101 // delete [] out_RETIRE_ROB_ACK ; 102 // delete [] in_RETIRE_ROB_RD_OLD_USE ; 103 // delete [] in_RETIRE_ROB_RD_NEW_USE ; 104 // delete [] in_RETIRE_ROB_RE_OLD_USE ; 105 // delete [] in_RETIRE_ROB_RE_NEW_USE ; 106 // delete [] out_RETIRE_ROB_GPR_STATUS_OLD_VAL ; 107 // delete [] out_RETIRE_ROB_GPR_STATUS_NEW_VAL ; 108 // delete [] in_RETIRE_ROB_GPR_STATUS_OLD_ACK ; 109 // delete [] in_RETIRE_ROB_GPR_STATUS_NEW_ACK ; 110 // delete [] out_RETIRE_ROB_SPR_STATUS_OLD_VAL ; 111 // delete [] out_RETIRE_ROB_SPR_STATUS_NEW_VAL ; 112 // delete [] in_RETIRE_ROB_SPR_STATUS_OLD_ACK ; 113 // delete [] in_RETIRE_ROB_SPR_STATUS_NEW_ACK ; 92 DELETE2_SIGNAL(out_INSERT_ROB_SPR_STATUS_VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 93 DELETE2_SIGNAL( in_INSERT_ROB_SPR_STATUS_ACK,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 114 94 } 115 95 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 52 53 53 54 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 in_GPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_read]; 55 out_GPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 56 if (_param->_have_port_ooo_engine_id == true) 57 in_GPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_read]; 58 in_GPR_READ_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_read]; 59 out_GPR_READ_DATA = new SC_OUT(Tgeneral_data_t ) * [_param->_nb_gpr_read]; 60 out_GPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; 61 62 for (uint32_t i=0; i<_param->_nb_gpr_read; i++) 63 { 64 Interface_fifo * interface = _interfaces->set_interface("gpr_read_"+toString(i) 65 #ifdef POSITION 66 ,IN 67 ,NORTH 68 ,"Interface to read the register file" 69 #endif 70 ); 71 72 in_GPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 73 out_GPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 74 if (_param->_have_port_ooo_engine_id == true) 75 in_GPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 76 in_GPR_READ_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 77 out_GPR_READ_DATA [i]= interface->set_signal_out<Tgeneral_data_t > ("data" , _param->_size_general_data); 78 out_GPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 79 } 55 { 56 ALLOC1_INTERFACE_BEGIN("gpr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_gpr_read); 57 58 ALLOC1_VALACK_IN ( in_GPR_READ_VAL ,VAL); 59 ALLOC1_VALACK_OUT(out_GPR_READ_ACK ,ACK); 60 ALLOC1_SIGNAL_IN ( in_GPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 61 ALLOC1_SIGNAL_IN ( in_GPR_READ_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 62 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 63 ALLOC1_SIGNAL_OUT(out_GPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 64 65 ALLOC1_INTERFACE_END(_param->_nb_gpr_read); 66 } 80 67 81 68 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 83 out_GPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_write]; 84 if (_param->_have_port_ooo_engine_id == true) 85 in_GPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_gpr_write]; 86 in_GPR_WRITE_NUM_REG = new SC_IN (Tgeneral_address_t) * [_param->_nb_gpr_write]; 87 in_GPR_WRITE_DATA = new SC_IN (Tgeneral_data_t ) * [_param->_nb_gpr_write]; 88 89 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 90 { 91 Interface_fifo * interface = _interfaces->set_interface("gpr_write_"+toString(i) 92 #ifdef POSITION 93 ,IN 94 ,NORTH, 95 "Interface to write the register file" 96 #endif 97 ); 98 99 in_GPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 100 out_GPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 101 if (_param->_have_port_ooo_engine_id == true) 102 in_GPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 103 in_GPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tgeneral_address_t> ("num_reg" , _param->_size_gpr_address); 104 in_GPR_WRITE_DATA [i]= interface->set_signal_in <Tgeneral_data_t > ("data" , _param->_size_general_data); 105 } 69 { 70 ALLOC1_INTERFACE_BEGIN("gpr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_gpr_write); 71 72 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL ,VAL); 73 ALLOC1_VALACK_OUT(out_GPR_WRITE_ACK ,ACK); 74 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 75 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_NUM_REG ,"num_reg" ,Tgeneral_address_t,_param->_size_gpr_address); 76 ALLOC1_SIGNAL_IN ( in_GPR_WRITE_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data); 77 78 ALLOC1_INTERFACE_END(_param->_nb_gpr_write); 79 } 106 80 107 81 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 in_SPR_READ_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_read]; 109 out_SPR_READ_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 110 if (_param->_have_port_ooo_engine_id == true) 111 in_SPR_READ_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_read]; 112 in_SPR_READ_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_read]; 113 out_SPR_READ_DATA = new SC_OUT(Tspecial_data_t ) * [_param->_nb_spr_read]; 114 out_SPR_READ_DATA_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; 115 116 for (uint32_t i=0; i<_param->_nb_spr_read; i++) 117 { 118 Interface_fifo * interface = _interfaces->set_interface("spr_read_"+toString(i) 119 #ifdef POSITION 120 ,IN 121 ,NORTH, 122 "Interface to read the register file" 123 #endif 124 ); 125 126 in_SPR_READ_VAL [i]= interface->set_signal_valack_in (VAL); 127 out_SPR_READ_ACK [i]= interface->set_signal_valack_out (ACK); 128 if (_param->_have_port_ooo_engine_id == true) 129 in_SPR_READ_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 130 in_SPR_READ_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 131 out_SPR_READ_DATA [i]= interface->set_signal_out<Tspecial_data_t > ("data" , _param->_size_special_data); 132 out_SPR_READ_DATA_VAL [i]= interface->set_signal_out<Tcontrol_t > ("data_val" , 1); 133 } 82 { 83 ALLOC1_INTERFACE_BEGIN("spr_read",IN,NORTH,_("Interface to read the register file"),_param->_nb_spr_read); 84 85 ALLOC1_VALACK_IN ( in_SPR_READ_VAL ,VAL); 86 ALLOC1_VALACK_OUT(out_SPR_READ_ACK ,ACK); 87 ALLOC1_SIGNAL_IN ( in_SPR_READ_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 88 ALLOC1_SIGNAL_IN ( in_SPR_READ_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 89 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 90 ALLOC1_SIGNAL_OUT(out_SPR_READ_DATA_VAL ,"data_val" ,Tcontrol_t ,1); 91 92 ALLOC1_INTERFACE_END(_param->_nb_spr_read); 93 } 134 94 135 95 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 136 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 137 out_SPR_WRITE_ACK = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_write]; 138 if (_param->_have_port_ooo_engine_id == true) 139 in_SPR_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_spr_write]; 140 in_SPR_WRITE_NUM_REG = new SC_IN (Tspecial_address_t) * [_param->_nb_spr_write]; 141 in_SPR_WRITE_DATA = new SC_IN (Tspecial_data_t ) * [_param->_nb_spr_write]; 142 143 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 144 { 145 Interface_fifo * interface = _interfaces->set_interface("spr_write_"+toString(i) 146 #ifdef POSITION 147 ,IN 148 ,NORTH, 149 "Interface to write the register file" 150 #endif 151 ); 152 153 in_SPR_WRITE_VAL [i]= interface->set_signal_valack_in (VAL); 154 out_SPR_WRITE_ACK [i]= interface->set_signal_valack_out (ACK); 155 if (_param->_have_port_ooo_engine_id == true) 156 in_SPR_WRITE_OOO_ENGINE_ID [i]= interface->set_signal_in <Tcontext_t > ("ooo_engine_id" , _param->_size_ooo_engine_id); 157 in_SPR_WRITE_NUM_REG [i]= interface->set_signal_in <Tspecial_address_t> ("num_reg" , _param->_size_spr_address); 158 in_SPR_WRITE_DATA [i]= interface->set_signal_in <Tspecial_data_t > ("data" , _param->_size_special_data); 159 } 160 161 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 in_INSERT_ROB_VAL = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 163 out_INSERT_ROB_ACK = new SC_OUT(Tcontrol_t ) ** [_param->_nb_ooo_engine]; 164 in_INSERT_ROB_RD_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 165 in_INSERT_ROB_RD_NUM_REG = new SC_IN (Tgeneral_address_t) ** [_param->_nb_ooo_engine]; 166 in_INSERT_ROB_RE_USE = new SC_IN (Tcontrol_t ) ** [_param->_nb_ooo_engine]; 167 in_INSERT_ROB_RE_NUM_REG = new SC_IN (Tspecial_address_t) ** [_param->_nb_ooo_engine]; 168 169 for (uint32_t i=0; i<_param->_nb_ooo_engine; i++) 170 { 171 uint32_t x=_param->_nb_inst_insert_rob [i]; 172 173 in_INSERT_ROB_VAL [i] = new SC_IN (Tcontrol_t ) * [x]; 174 out_INSERT_ROB_ACK [i] = new SC_OUT(Tcontrol_t ) * [x]; 175 in_INSERT_ROB_RD_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 176 in_INSERT_ROB_RD_NUM_REG [i] = new SC_IN (Tgeneral_address_t) * [x]; 177 in_INSERT_ROB_RE_USE [i] = new SC_IN (Tcontrol_t ) * [x]; 178 in_INSERT_ROB_RE_NUM_REG [i] = new SC_IN (Tspecial_address_t) * [x]; 179 180 for (uint32_t j=0; j<x; j++) 181 { 182 Interface_fifo * interface = _interfaces->set_interface("insert_rob_"+toString(i)+"_"+toString(j) 183 #ifdef POSITION 184 ,IN 185 ,WEST 186 ,"Interface to update status (insert)" 187 #endif 188 ); 189 190 191 in_INSERT_ROB_VAL [i][j] = interface->set_signal_valack_in (VAL); 192 out_INSERT_ROB_ACK [i][j] = interface->set_signal_valack_out (ACK); 193 in_INSERT_ROB_RD_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("rd_use" , 1); 194 in_INSERT_ROB_RD_NUM_REG [i][j] = interface->set_signal_in <Tgeneral_address_t> ("rd_num_reg", _param->_size_gpr_address); 195 in_INSERT_ROB_RE_USE [i][j] = interface->set_signal_in <Tcontrol_t > ("re_use" , 1); 196 in_INSERT_ROB_RE_NUM_REG [i][j] = interface->set_signal_in <Tspecial_address_t> ("re_num_reg", _param->_size_spr_address); 197 198 } 199 } 96 { 97 ALLOC1_INTERFACE_BEGIN("spr_write",IN,NORTH,_("Interface to write the register file"),_param->_nb_spr_write); 98 99 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL ,VAL); 100 ALLOC1_VALACK_OUT(out_SPR_WRITE_ACK ,ACK); 101 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id); 102 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_NUM_REG ,"num_reg" ,Tspecial_address_t,_param->_size_spr_address); 103 ALLOC1_SIGNAL_IN ( in_SPR_WRITE_DATA ,"data" ,Tspecial_data_t ,_param->_size_special_data); 104 105 ALLOC1_INTERFACE_END(_param->_nb_spr_write); 106 } 107 108 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 { 110 ALLOC2_INTERFACE_BEGIN("insert_rob",IN,WEST,_("Interface to update status (insert)"),_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 111 112 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL ,VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 113 _ALLOC2_VALACK_OUT(out_INSERT_ROB_ACK ,ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 114 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_USE ,"rd_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 115 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RD_NUM_REG,"rd_num_reg",Tgeneral_address_t,_param->_size_gpr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 116 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 117 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_spr_address,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 118 119 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1]); 120 } 200 121 201 122 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/src/Register_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Register_unit/include/Register_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 24 25 if (usage_is_set(_usage,USE_SYSTEMC)) 25 26 { 26 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 27 delete in_CLOCK ; 28 //#endif 29 delete in_NRESET; 27 delete in_CLOCK ; 28 delete in_NRESET; 30 29 31 delete [] in_GPR_READ_VAL ; 32 delete [] out_GPR_READ_ACK ; 33 if (_param->_have_port_ooo_engine_id == true) 34 delete [] in_GPR_READ_OOO_ENGINE_ID ; 35 delete [] in_GPR_READ_NUM_REG ; 36 delete [] out_GPR_READ_DATA ; 37 delete [] out_GPR_READ_DATA_VAL ; 38 delete [] in_GPR_WRITE_VAL ; 39 delete [] out_GPR_WRITE_ACK ; 40 if (_param->_have_port_ooo_engine_id == true) 41 delete [] in_GPR_WRITE_OOO_ENGINE_ID ; 42 delete [] in_GPR_WRITE_NUM_REG ; 43 delete [] in_GPR_WRITE_DATA ; 44 delete [] in_SPR_READ_VAL ; 45 delete [] out_SPR_READ_ACK ; 46 if (_param->_have_port_ooo_engine_id == true) 47 delete [] in_SPR_READ_OOO_ENGINE_ID ; 48 delete [] in_SPR_READ_NUM_REG ; 49 delete [] out_SPR_READ_DATA ; 50 delete [] out_SPR_READ_DATA_VAL ; 51 delete [] in_SPR_WRITE_VAL ; 52 delete [] out_SPR_WRITE_ACK ; 53 if (_param->_have_port_ooo_engine_id == true) 54 delete [] in_SPR_WRITE_OOO_ENGINE_ID ; 55 delete [] in_SPR_WRITE_NUM_REG ; 56 delete [] in_SPR_WRITE_DATA ; 57 delete [] in_INSERT_ROB_VAL ; 58 delete [] out_INSERT_ROB_ACK ; 59 delete [] in_INSERT_ROB_RD_USE ; 60 delete [] in_INSERT_ROB_RD_NUM_REG ; 61 delete [] in_INSERT_ROB_RE_USE ; 62 delete [] in_INSERT_ROB_RE_NUM_REG ; 30 DELETE1_SIGNAL( in_GPR_READ_VAL ,_param->_nb_gpr_read,1); 31 DELETE1_SIGNAL(out_GPR_READ_ACK ,_param->_nb_gpr_read,1); 32 DELETE1_SIGNAL( in_GPR_READ_OOO_ENGINE_ID ,_param->_nb_gpr_read,_param->_size_ooo_engine_id); 33 DELETE1_SIGNAL( in_GPR_READ_NUM_REG ,_param->_nb_gpr_read,_param->_size_gpr_address); 34 DELETE1_SIGNAL(out_GPR_READ_DATA ,_param->_nb_gpr_read,_param->_size_general_data); 35 DELETE1_SIGNAL(out_GPR_READ_DATA_VAL ,_param->_nb_gpr_read,1); 36 37 DELETE1_SIGNAL( in_GPR_WRITE_VAL ,_param->_nb_gpr_write,1); 38 DELETE1_SIGNAL(out_GPR_WRITE_ACK ,_param->_nb_gpr_write,1); 39 DELETE1_SIGNAL( in_GPR_WRITE_OOO_ENGINE_ID,_param->_nb_gpr_write,_param->_size_ooo_engine_id); 40 DELETE1_SIGNAL( in_GPR_WRITE_NUM_REG ,_param->_nb_gpr_write,_param->_size_gpr_address); 41 DELETE1_SIGNAL( in_GPR_WRITE_DATA ,_param->_nb_gpr_write,_param->_size_general_data); 42 43 DELETE1_SIGNAL( in_SPR_READ_VAL ,_param->_nb_spr_read,1); 44 DELETE1_SIGNAL(out_SPR_READ_ACK ,_param->_nb_spr_read,1); 45 DELETE1_SIGNAL( in_SPR_READ_OOO_ENGINE_ID ,_param->_nb_spr_read,_param->_size_ooo_engine_id); 46 DELETE1_SIGNAL( in_SPR_READ_NUM_REG ,_param->_nb_spr_read,_param->_size_spr_address); 47 DELETE1_SIGNAL(out_SPR_READ_DATA ,_param->_nb_spr_read,_param->_size_special_data); 48 DELETE1_SIGNAL(out_SPR_READ_DATA_VAL ,_param->_nb_spr_read,1); 49 50 DELETE1_SIGNAL( in_SPR_WRITE_VAL ,_param->_nb_spr_write,1); 51 DELETE1_SIGNAL(out_SPR_WRITE_ACK ,_param->_nb_spr_write,1); 52 DELETE1_SIGNAL( in_SPR_WRITE_OOO_ENGINE_ID,_param->_nb_spr_write,_param->_size_ooo_engine_id); 53 DELETE1_SIGNAL( in_SPR_WRITE_NUM_REG ,_param->_nb_spr_write,_param->_size_spr_address); 54 DELETE1_SIGNAL( in_SPR_WRITE_DATA ,_param->_nb_spr_write,_param->_size_special_data); 55 56 DELETE2_SIGNAL( in_INSERT_ROB_VAL ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 57 DELETE2_SIGNAL(out_INSERT_ROB_ACK ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 58 DELETE2_SIGNAL( in_INSERT_ROB_RD_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 59 DELETE2_SIGNAL( in_INSERT_ROB_RD_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_gpr_address); 60 DELETE2_SIGNAL( in_INSERT_ROB_RE_USE ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],1); 61 DELETE2_SIGNAL( in_INSERT_ROB_RE_NUM_REG ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob [it1],_param->_size_spr_address); 62 63 63 // delete [] in_RETIRE_ROB_VAL ; 64 64 // delete [] out_RETIRE_ROB_ACK ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/src/Execute_loop_allocation.cpp
r97 r112 55 55 // ~~~~~[ Interface "execute_loop_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 56 { 57 ALLOC1_INTERFACE ("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit);57 ALLOC1_INTERFACE_BEGIN("execute_loop_in", IN, EAST, "Operation's Input", _param->_nb_read_unit); 58 58 59 59 ALLOC1_VALACK_IN ( in_EXECUTE_LOOP_IN_VAL,VAL); … … 66 66 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_TYPE ,"type" ,Ttype_t ,_param->_size_type); 67 67 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 68 if (_param->_have_port_load_queue_ptr)69 68 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 70 69 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); … … 80 79 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1); 81 80 ALLOC1_SIGNAL_IN ( in_EXECUTE_LOOP_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 81 82 ALLOC1_INTERFACE_END(param->_nb_read_unit); 82 83 } 83 84 // ~~~~~[ Interface "execute_loop_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 84 85 { 85 ALLOC1_INTERFACE ("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit);86 ALLOC1_INTERFACE_BEGIN("execute_loop_out",OUT, EAST, "Operation's Output", _param->_nb_write_unit); 86 87 87 88 ALLOC1_VALACK_OUT(out_EXECUTE_LOOP_OUT_VAL,VAL); … … 98 99 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 99 100 ALLOC1_SIGNAL_OUT(out_EXECUTE_LOOP_OUT_DATA ,"data" ,Tgeneral_data_t,_param->_size_general_data); 101 102 ALLOC1_INTERFACE_END(_param->_nb_write_unit); 100 103 } 101 104 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102 105 { 103 ALLOC2_INTERFACE ("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);106 ALLOC2_INTERFACE_BEGIN("dcache_req",OUT, NORTH, "Data cache port : request", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 104 107 105 108 _ALLOC2_VALACK_OUT(out_DCACHE_REQ_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); … … 110 113 _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 111 114 _ALLOC2_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_general_data , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 115 116 ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 112 117 } 118 113 119 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 120 { 115 ALLOC2_INTERFACE ("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]);121 ALLOC2_INTERFACE_BEGIN("dcache_rsp",IN, NORTH, "Data cache port : respons", _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 116 122 117 123 _ALLOC2_VALACK_IN ( in_DCACHE_RSP_VAL,VAL, _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); … … 121 127 _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_general_data , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 122 128 _ALLOC2_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t,_param->_size_dcache_error , _param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 129 130 ALLOC2_INTERFACE_END(_param->_nb_load_store_unit, _param->_nb_cache_port[it1]); 123 131 } 132 124 133 // ~~~~~[ Interface "insert_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 134 { 126 ALLOC2_INTERFACE ("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]);135 ALLOC2_INTERFACE_BEGIN("insert_rob",IN, EAST, "Rename's stage : insert a new instruction in the Re Order Buffer",_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 127 136 128 137 _ALLOC2_VALACK_IN ( in_INSERT_ROB_VAL,VAL,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); … … 133 142 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_USE ,"re_use" ,Tcontrol_t ,1 ,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 134 143 _ALLOC2_SIGNAL_IN ( in_INSERT_ROB_RE_NUM_REG,"re_num_reg",Tspecial_address_t,_param->_size_special_register,_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 144 145 ALLOC2_INTERFACE_END(_param->_nb_ooo_engine,_param->_nb_inst_insert_rob[it1]); 135 146 } 147 136 148 // // ~~~~~[ Interface "retire_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 137 149 // { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/SelfTest/src/test.cpp
r111 r112 66 66 ALLOC1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR ," in_DECOD_EVENT_ADDRESS_EPCR ",Taddress_t ,_param->_nb_decod_unit); 67 67 68 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_VAL ," in_COMMIT_EVENT_VAL ",Tcontrol_t );69 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ACK ,"out_COMMIT_EVENT_ACK ",Tcontrol_t );70 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ," in_COMMIT_EVENT_CONTEXT_ID ",Tcontext_t );71 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_DEPTH ," in_COMMIT_EVENT_DEPTH ",Tdepth_t );72 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_TYPE ," in_COMMIT_EVENT_TYPE ",Tevent_type_t);73 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ," in_COMMIT_EVENT_IS_DELAY_SLOT ",Tcontrol_t );74 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS ," in_COMMIT_EVENT_ADDRESS ",Taddress_t );75 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ," in_COMMIT_EVENT_ADDRESS_EPCR_VAL ",Tcontrol_t );76 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ," in_COMMIT_EVENT_ADDRESS_EPCR ",Taddress_t );77 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL ",Tcontrol_t );78 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ," in_COMMIT_EVENT_ADDRESS_EEAR ",Tgeneral_data_t);68 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_VAL ," in_COMMIT_EVENT_VAL ",Tcontrol_t ); 69 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ACK ,"out_COMMIT_EVENT_ACK ",Tcontrol_t ); 70 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ," in_COMMIT_EVENT_CONTEXT_ID ",Tcontext_t ); 71 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_DEPTH ," in_COMMIT_EVENT_DEPTH ",Tdepth_t ); 72 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_TYPE ," in_COMMIT_EVENT_TYPE ",Tevent_type_t); 73 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ," in_COMMIT_EVENT_IS_DELAY_SLOT ",Tcontrol_t ); 74 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS ," in_COMMIT_EVENT_ADDRESS ",Taddress_t ); 75 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ," in_COMMIT_EVENT_ADDRESS_EPCR_VAL ",Tcontrol_t ); 76 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ," in_COMMIT_EVENT_ADDRESS_EPCR ",Taddress_t ); 77 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ," in_COMMIT_EVENT_ADDRESS_EEAR_VAL ",Tcontrol_t ); 78 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ," in_COMMIT_EVENT_ADDRESS_EEAR ",Tgeneral_data_t); 79 79 80 80 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL ," in_BRANCH_COMPLETE_VAL ",Tcontrol_t ,_param->_nb_inst_branch_complete); … … 147 147 INSTANCE1_SC_SIGNAL(_Context_State, in_DECOD_EVENT_ADDRESS_EPCR ,_param->_nb_decod_unit); 148 148 149 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_VAL );150 INSTANCE _SC_SIGNAL(_Context_State,out_COMMIT_EVENT_ACK );149 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_VAL ); 150 INSTANCE0_SC_SIGNAL(_Context_State,out_COMMIT_EVENT_ACK ); 151 151 if (_param->_have_port_context_id) 152 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_CONTEXT_ID );152 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_CONTEXT_ID ); 153 153 if (_param->_have_port_depth) 154 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_DEPTH );155 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_TYPE );156 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT );157 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS );158 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR_VAL );159 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR );160 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL );161 INSTANCE _SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR );154 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_DEPTH ); 155 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_TYPE ); 156 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_IS_DELAY_SLOT ); 157 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS ); 158 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR_VAL ); 159 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EPCR ); 160 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR_VAL ); 161 INSTANCE0_SC_SIGNAL(_Context_State, in_COMMIT_EVENT_ADDRESS_EEAR ); 162 162 163 163 INSTANCE1_SC_SIGNAL(_Context_State, in_BRANCH_COMPLETE_VAL ,_param->_nb_inst_branch_complete); … … 196 196 INSTANCE1_SC_SIGNAL(_Context_State,out_CONTEXT_DECOD_ENABLE ,_param->_nb_context ); 197 197 198 for (uint32_t i=0; i<_param->_nb_context; i++) 199 if (_param->_have_port_depth) 200 INSTANCE_SC_SIGNAL(_Context_State, in_DEPTH_MIN [i]); 198 if (_param->_have_port_depth) 199 INSTANCE1_SC_SIGNAL(_Context_State, in_DEPTH_MIN ,_param->_nb_context ); 201 200 202 201 INSTANCE1_SC_SIGNAL(_Context_State, in_SPR_SR_IEE ,_param->_nb_context ); … … 1324 1323 DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS ,_param->_nb_decod_unit); 1325 1324 DELETE1_SC_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR ,_param->_nb_decod_unit); 1326 DELETE _SC_SIGNAL( in_COMMIT_EVENT_VAL );1327 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ACK );1328 DELETE _SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID );1329 DELETE _SC_SIGNAL( in_COMMIT_EVENT_DEPTH );1330 DELETE _SC_SIGNAL( in_COMMIT_EVENT_TYPE );1331 DELETE _SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT );1332 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS );1333 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL );1334 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR );1335 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL );1336 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR );1325 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_VAL ); 1326 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ACK ); 1327 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ); 1328 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_DEPTH ); 1329 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_TYPE ); 1330 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ); 1331 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS ); 1332 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ); 1333 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ); 1334 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ); 1335 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ); 1337 1336 DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL ,_param->_nb_inst_branch_complete); 1338 1337 DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_ACK ,_param->_nb_inst_branch_complete); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_allocation.cpp
r111 r112 58 58 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);60 ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context); 61 61 62 62 ALLOC1_VALACK_IN ( in_BRANCH_EVENT_VAL ,VAL); … … 68 68 ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val" ,Tcontrol_t ,1); 69 69 ALLOC1_SIGNAL_IN ( in_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_instruction_address); 70 71 ALLOC1_INTERFACE_END(_param->_nb_context); 70 72 } 71 73 72 74 // ~~~~~[ Interface : "decod_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 75 { 74 ALLOC1_INTERFACE ("decod_event",IN ,SOUTH, _("Decod Interface"), _param->_nb_decod_unit);76 ALLOC1_INTERFACE_BEGIN("decod_event",IN ,SOUTH, _("Decod Interface"), _param->_nb_decod_unit); 75 77 76 78 ALLOC1_VALACK_IN ( in_DECOD_EVENT_VAL ,VAL); … … 82 84 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 83 85 ALLOC1_SIGNAL_IN ( in_DECOD_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 86 87 ALLOC1_INTERFACE_END(_param->_nb_decod_unit); 84 88 } 85 89 86 90 // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 91 { 88 ALLOC_INTERFACE("commit_event",IN ,EAST, _("Interface with the Re Order Buffer")); 89 90 ALLOC_VALACK_IN ( in_COMMIT_EVENT_VAL ,VAL); 91 ALLOC_VALACK_OUT (out_COMMIT_EVENT_ACK ,ACK); 92 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 93 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 94 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 95 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 96 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 97 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"address_epcr_val",Tcontrol_t ,1); 98 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 99 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1); 100 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"address_eear" ,Tgeneral_data_t ,_param->_size_general_data); 92 ALLOC0_INTERFACE_BEGIN("commit_event",IN ,EAST, _("Interface with the Re Order Buffer")); 93 94 ALLOC0_VALACK_IN ( in_COMMIT_EVENT_VAL ,VAL); 95 ALLOC0_VALACK_OUT(out_COMMIT_EVENT_ACK ,ACK); 96 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 97 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 98 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 99 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 100 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 101 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"address_epcr_val",Tcontrol_t ,1); 102 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 103 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1); 104 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"address_eear" ,Tgeneral_data_t ,_param->_size_general_data); 105 106 ALLOC0_INTERFACE_END(); 101 107 } 102 108 103 109 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 104 110 { 105 ALLOC1_INTERFACE ("branch_complete",IN ,NORTH, _("Interface with the prediction_unit."), _param->_nb_inst_branch_complete);111 ALLOC1_INTERFACE_BEGIN("branch_complete",IN ,NORTH, _("Interface with the prediction_unit."), _param->_nb_inst_branch_complete); 106 112 107 113 ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL ,VAL); … … 113 119 // ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_SRC ,"address_src" ,Taddress_t ,_param->_size_instruction_address); 114 120 // ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_instruction_address); 121 122 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 115 123 } 116 124 117 125 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 118 126 { 119 ALLOC1_INTERFACE ("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context);127 ALLOC1_INTERFACE_BEGIN("nb_inst",IN ,EAST, _("Interface to count in fligt present instruction."),_param->_nb_context); 120 128 121 129 ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"decod_all" ,Tcounter_t ,_param->_size_nb_inst_decod); 122 130 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL ,"commit_all",Tcounter_t ,_param->_size_nb_inst_commit); 123 131 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM ,"commit_mem",Tcounter_t ,_param->_size_nb_inst_commit); 132 133 ALLOC1_INTERFACE_END(_param->_nb_context); 124 134 } 125 135 126 136 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 137 { 128 ALLOC1_INTERFACE ("event",OUT,WEST, _("An event occure : change PC address."), _param->_nb_context);138 ALLOC1_INTERFACE_BEGIN("event",OUT,WEST, _("An event occure : change PC address."), _param->_nb_context); 129 139 130 140 ALLOC1_VALACK_OUT(out_EVENT_VAL ,VAL); … … 137 147 ALLOC1_SIGNAL_OUT(out_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 138 148 149 ALLOC1_INTERFACE_END(_param->_nb_context); 139 150 } 140 151 141 152 // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 142 153 { 143 ALLOC1_INTERFACE ("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context);154 ALLOC1_INTERFACE_BEGIN("spr_event",OUT,WEST, _("An exception occure : write \"exception PC\"."), _param->_nb_context); 144 155 145 156 ALLOC1_VALACK_OUT(out_SPR_EVENT_VAL ,VAL); … … 150 161 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_DSX ,"sr_dsx" ,Tcontrol_t,1); 151 162 ALLOC1_SIGNAL_OUT(out_SPR_EVENT_SR_TO_ESR ,"sr_to_esr",Tcontrol_t,1); 163 164 ALLOC1_INTERFACE_END(_param->_nb_context); 152 165 } 153 166 154 167 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 168 { 156 ALLOC1_INTERFACE ("context",OUT,SOUTH, _("To decod."), _param->_nb_context);169 ALLOC1_INTERFACE_BEGIN("context",OUT,SOUTH, _("To decod."), _param->_nb_context); 157 170 158 171 ALLOC1_SIGNAL_OUT(out_CONTEXT_DECOD_ENABLE ,"decod_enable",Tcontrol_t,1); 172 173 ALLOC1_INTERFACE_END(_param->_nb_context); 159 174 } 160 175 161 176 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 177 { 163 ALLOC1_INTERFACE ("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context);178 ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH, _("From prediction_unit."), _param->_nb_context); 164 179 165 180 ALLOC1_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t,_param->_size_depth); 181 182 ALLOC1_INTERFACE_END(_param->_nb_context); 166 183 } 167 184 … … 169 186 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 170 187 { 171 ALLOC1_INTERFACE ("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);188 ALLOC1_INTERFACE_BEGIN("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context); 172 189 173 190 ALLOC1_SIGNAL_IN ( in_SPR_SR_IEE ,"SR_IEE",Tcontrol_t,1); 174 191 ALLOC1_SIGNAL_IN ( in_SPR_SR_EPH ,"SR_EPH",Tcontrol_t,1); 192 193 ALLOC1_INTERFACE_END(_param->_nb_context); 175 194 } 176 195 177 196 // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 197 { 179 ALLOC1_INTERFACE ("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);198 ALLOC1_INTERFACE_BEGIN("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context); 180 199 181 200 ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE ,"ENABLE",Tcontrol_t,1); 201 202 ALLOC1_INTERFACE_END(_param->_nb_context); 182 203 } 183 204 … … 186 207 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 187 208 188 reg_STATE = new context_state_t [_param->_nb_context];189 reg_EVENT_ADDRESS = new Taddress_t [_param->_nb_context];190 reg_EVENT_ADDRESS_EPCR = new Taddress_t [_param->_nb_context];191 reg_EVENT_ADDRESS_EPCR_VAL = new Tcontrol_t [_param->_nb_context];192 reg_EVENT_ADDRESS_EEAR = new Taddress_t [_param->_nb_context];193 reg_EVENT_ADDRESS_EEAR_VAL = new Tcontrol_t [_param->_nb_context];194 reg_EVENT_IS_DELAY_SLOT = new Tcontrol_t [_param->_nb_context];195 reg_EVENT_IS_DS_TAKE = new Tcontrol_t [_param->_nb_context];196 reg_EVENT_DEPTH = new Tdepth_t [_param->_nb_context];197 reg_INTERRUPT_ENABLE = new Tcontrol_t [_param->_nb_context];209 ALLOC1(reg_STATE ,context_state_t,_param->_nb_context); 210 ALLOC1(reg_EVENT_ADDRESS ,Taddress_t ,_param->_nb_context); 211 ALLOC1(reg_EVENT_ADDRESS_EPCR ,Taddress_t ,_param->_nb_context); 212 ALLOC1(reg_EVENT_ADDRESS_EPCR_VAL,Tcontrol_t ,_param->_nb_context); 213 ALLOC1(reg_EVENT_ADDRESS_EEAR ,Taddress_t ,_param->_nb_context); 214 ALLOC1(reg_EVENT_ADDRESS_EEAR_VAL,Tcontrol_t ,_param->_nb_context); 215 ALLOC1(reg_EVENT_IS_DELAY_SLOT ,Tcontrol_t ,_param->_nb_context); 216 ALLOC1(reg_EVENT_IS_DS_TAKE ,Tcontrol_t ,_param->_nb_context); 217 ALLOC1(reg_EVENT_DEPTH ,Tdepth_t ,_param->_nb_context); 218 ALLOC1(reg_INTERRUPT_ENABLE ,Tcontrol_t ,_param->_nb_context); 198 219 199 220 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 200 internal_BRANCH_EVENT_ACK = new Tcontrol_t [_param->_nb_context]; 201 internal_DECOD_EVENT_ACK = new Tcontrol_t [_param->_nb_decod_unit]; 202 internal_BRANCH_COMPLETE_ACK = new Tcontrol_t [_param->_nb_inst_branch_complete]; 203 internal_EVENT_VAL = new Tcontrol_t [_param->_nb_context]; 204 internal_SPR_EVENT_VAL = new Tcontrol_t [_param->_nb_context]; 221 222 ALLOC1(internal_BRANCH_EVENT_ACK ,Tcontrol_t,_param->_nb_context); 223 ALLOC1(internal_DECOD_EVENT_ACK ,Tcontrol_t,_param->_nb_decod_unit); 224 ALLOC1(internal_BRANCH_COMPLETE_ACK,Tcontrol_t,_param->_nb_inst_branch_complete); 225 ALLOC1(internal_EVENT_VAL ,Tcontrol_t,_param->_nb_context); 226 ALLOC1(internal_SPR_EVENT_VAL ,Tcontrol_t,_param->_nb_context); 205 227 } 206 228 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Context_State/src/Context_State_deallocation.cpp
r111 r112 46 46 DELETE1_SIGNAL( in_DECOD_EVENT_ADDRESS_EPCR ,_param->_nb_decod_unit,_param->_size_instruction_address); 47 47 48 DELETE _SIGNAL( in_COMMIT_EVENT_VAL ,1);49 DELETE _SIGNAL(out_COMMIT_EVENT_ACK ,1);50 DELETE _SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id);51 DELETE _SIGNAL( in_COMMIT_EVENT_DEPTH ,_param->_size_depth);52 DELETE _SIGNAL( in_COMMIT_EVENT_TYPE ,_param->_size_event_type);53 DELETE _SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ,1);54 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS ,_param->_size_instruction_address);55 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,_param->_size_instruction_address);56 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);57 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,_param->_size_instruction_address);58 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ,1);48 DELETE0_SIGNAL( in_COMMIT_EVENT_VAL ,1); 49 DELETE0_SIGNAL(out_COMMIT_EVENT_ACK ,1); 50 DELETE0_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id); 51 DELETE0_SIGNAL( in_COMMIT_EVENT_DEPTH ,_param->_size_depth); 52 DELETE0_SIGNAL( in_COMMIT_EVENT_TYPE ,_param->_size_event_type); 53 DELETE0_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ,1); 54 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS ,_param->_size_instruction_address); 55 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,_param->_size_instruction_address); 56 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address); 57 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,_param->_size_instruction_address); 58 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ,1); 59 59 60 60 DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL ,_param->_nb_inst_branch_complete,1); … … 98 98 99 99 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 delete [] reg_STATE;101 delete [] reg_EVENT_ADDRESS;102 delete [] reg_EVENT_ADDRESS_EPCR;103 delete [] reg_EVENT_ADDRESS_EPCR_VAL;104 delete [] reg_EVENT_ADDRESS_EEAR;105 delete [] reg_EVENT_ADDRESS_EEAR_VAL;106 delete [] reg_EVENT_IS_DELAY_SLOT;107 delete [] reg_EVENT_IS_DS_TAKE;108 delete [] reg_EVENT_DEPTH;109 delete [] reg_INTERRUPT_ENABLE;100 DELETE1(reg_STATE ,_param->_nb_context); 101 DELETE1(reg_EVENT_ADDRESS ,_param->_nb_context); 102 DELETE1(reg_EVENT_ADDRESS_EPCR ,_param->_nb_context); 103 DELETE1(reg_EVENT_ADDRESS_EPCR_VAL,_param->_nb_context); 104 DELETE1(reg_EVENT_ADDRESS_EEAR ,_param->_nb_context); 105 DELETE1(reg_EVENT_ADDRESS_EEAR_VAL,_param->_nb_context); 106 DELETE1(reg_EVENT_IS_DELAY_SLOT ,_param->_nb_context); 107 DELETE1(reg_EVENT_IS_DS_TAKE ,_param->_nb_context); 108 DELETE1(reg_EVENT_DEPTH ,_param->_nb_context); 109 DELETE1(reg_INTERRUPT_ENABLE ,_param->_nb_context); 110 110 111 111 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 delete [] internal_BRANCH_EVENT_ACK ; 113 delete [] internal_DECOD_EVENT_ACK ; 114 delete [] internal_EVENT_VAL ; 115 delete [] internal_SPR_EVENT_VAL ; 112 DELETE1(internal_BRANCH_EVENT_ACK ,_param->_nb_context); 113 DELETE1(internal_DECOD_EVENT_ACK ,_param->_nb_decod_unit); 114 DELETE1(internal_BRANCH_COMPLETE_ACK,_param->_nb_inst_branch_complete); 115 DELETE1(internal_EVENT_VAL ,_param->_nb_context); 116 DELETE1(internal_SPR_EVENT_VAL ,_param->_nb_context); 116 117 } 117 118 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/src/test.cpp
r110 r112 104 104 ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH_VAL ," in_CONTEXT_DEPTH_VAL ",Tcontrol_t ,_param->_nb_context); 105 105 ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH ," in_CONTEXT_DEPTH ",Tdepth_t ,_param->_nb_context); 106 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_VAL ,"out_CONTEXT_EVENT_VAL ",Tcontrol_t );107 ALLOC _SC_SIGNAL( in_CONTEXT_EVENT_ACK ," in_CONTEXT_EVENT_ACK ",Tcontrol_t );108 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,"out_CONTEXT_EVENT_CONTEXT_ID ",Tcontext_t );109 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_DEPTH ,"out_CONTEXT_EVENT_DEPTH ",Tdepth_t );110 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_TYPE ,"out_CONTEXT_EVENT_TYPE ",Tevent_type_t );111 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ,"out_CONTEXT_EVENT_IS_DELAY_SLOT ",Tcontrol_t );112 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS ,"out_CONTEXT_EVENT_ADDRESS ",Tgeneral_data_t );113 ALLOC _SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,"out_CONTEXT_EVENT_ADDRESS_EPCR ",Tgeneral_data_t );106 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_VAL ,"out_CONTEXT_EVENT_VAL ",Tcontrol_t ); 107 ALLOC0_SC_SIGNAL( in_CONTEXT_EVENT_ACK ," in_CONTEXT_EVENT_ACK ",Tcontrol_t ); 108 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,"out_CONTEXT_EVENT_CONTEXT_ID ",Tcontext_t ); 109 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_DEPTH ,"out_CONTEXT_EVENT_DEPTH ",Tdepth_t ); 110 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_TYPE ,"out_CONTEXT_EVENT_TYPE ",Tevent_type_t ); 111 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ,"out_CONTEXT_EVENT_IS_DELAY_SLOT ",Tcontrol_t ); 112 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS ,"out_CONTEXT_EVENT_ADDRESS ",Tgeneral_data_t ); 113 ALLOC0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,"out_CONTEXT_EVENT_ADDRESS_EPCR ",Tgeneral_data_t ); 114 114 115 115 /******************************************************** … … 135 135 { 136 136 if (_param->_have_port_inst_ifetch_ptr) 137 INSTANCE _SC_SIGNAL(_Decod, in_IFETCH_INST_IFETCH_PTR [i]);137 INSTANCE0_SC_SIGNAL(_Decod, in_IFETCH_INST_IFETCH_PTR [i]); 138 138 // if (_param->_have_port_branch_update_prediction_id) 139 139 if (_param->_have_port_depth) 140 INSTANCE _SC_SIGNAL(_Decod, in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);140 INSTANCE0_SC_SIGNAL(_Decod, in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]); 141 141 } 142 142 … … 188 188 for (uint32_t i=0; i<_param->_nb_context; i++) 189 189 if (_param->_have_port_depth) 190 INSTANCE _SC_SIGNAL(_Decod, in_CONTEXT_DEPTH [i]);191 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_VAL );192 INSTANCE _SC_SIGNAL(_Decod, in_CONTEXT_EVENT_ACK );190 INSTANCE0_SC_SIGNAL(_Decod, in_CONTEXT_DEPTH [i]); 191 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_VAL ); 192 INSTANCE0_SC_SIGNAL(_Decod, in_CONTEXT_EVENT_ACK ); 193 193 if (_param->_have_port_context_id) 194 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_CONTEXT_ID );194 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_CONTEXT_ID ); 195 195 if (_param->_have_port_depth) 196 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_DEPTH );197 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_TYPE );198 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_IS_DELAY_SLOT );199 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS );200 INSTANCE _SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS_EPCR );196 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_DEPTH ); 197 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_TYPE ); 198 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_IS_DELAY_SLOT ); 199 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS ); 200 INSTANCE0_SC_SIGNAL(_Decod,out_CONTEXT_EVENT_ADDRESS_EPCR ); 201 201 202 202 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Parameters.h
r88 r112 23 23 namespace decod { 24 24 25 const uint32_t nb_opcod_type = 14; 26 const uint32_t tab_opcod_type [] = {MAX_OPCOD_0, 27 MAX_OPCOD_1 , 28 MAX_OPCOD_2 , 29 MAX_OPCOD_3 , 30 MAX_OPCOD_4 , 31 MAX_OPCOD_5 , 32 MAX_OPCOD_6 , 33 MAX_OPCOD_7 , 34 MAX_OPCOD_8 , 35 MAX_OPCOD_9 , 36 MAX_OPCOD_10, 37 MAX_OPCOD_11, 38 MAX_OPCOD_12, 39 MAX_OPCOD_13}; 40 25 41 class Parameters : public morpheo::behavioural::Parameters 26 42 { … … 37 53 public : bool ** _instruction_implemeted ; //[nb_context][nb_instruction] 38 54 public : morpheo::behavioural::custom::custom_information_t (*_get_custom_information) (void); 39 55 40 56 public : uint32_t _max_nb_inst_fetch; 41 57 //public : uint32_t _size_address_inst; -
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, -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_deallocation.cpp
r110 r112 85 85 DELETE1_SIGNAL(in_CONTEXT_DEPTH , _param->_nb_context,_param->_size_depth); 86 86 87 DELETE _SIGNAL(out_CONTEXT_EVENT_VAL ,1);88 DELETE _SIGNAL( in_CONTEXT_EVENT_ACK ,1);89 DELETE _SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,_param->_size_context_id );90 DELETE _SIGNAL(out_CONTEXT_EVENT_DEPTH ,_param->_size_depth );91 DELETE _SIGNAL(out_CONTEXT_EVENT_TYPE ,_param->_size_event_type );92 DELETE _SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT,1 );93 DELETE _SIGNAL(out_CONTEXT_EVENT_ADDRESS ,_param->_size_instruction_address);94 DELETE _SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);87 DELETE0_SIGNAL(out_CONTEXT_EVENT_VAL ,1); 88 DELETE0_SIGNAL( in_CONTEXT_EVENT_ACK ,1); 89 DELETE0_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,_param->_size_context_id ); 90 DELETE0_SIGNAL(out_CONTEXT_EVENT_DEPTH ,_param->_size_depth ); 91 DELETE0_SIGNAL(out_CONTEXT_EVENT_TYPE ,_param->_size_event_type ); 92 DELETE0_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT,1 ); 93 DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS ,_param->_size_instruction_address); 94 DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address); 95 95 96 96 97 98 delete reg_CONTEXT_ADDRESS_PREVIOUS ; 99 delete [] reg_CONTEXT_IS_DELAY_SLOT ; 100 101 delete [] internal_CONTEXT_HAVE_TRANSACTION ; 102 delete [] internal_CONTEXT_ADDRESS_PREVIOUS ; 103 delete [] internal_CONTEXT_IS_DELAY_SLOT ; 104 97 DELETE1(reg_CONTEXT_ADDRESS_PREVIOUS ,_param->_nb_context); 98 DELETE1(reg_CONTEXT_IS_DELAY_SLOT ,_param->_nb_context); 99 DELETE1(internal_CONTEXT_HAVE_TRANSACTION ,_param->_nb_context); 100 DELETE1(internal_CONTEXT_ADDRESS_PREVIOUS ,_param->_nb_context); 101 DELETE1(internal_CONTEXT_IS_DELAY_SLOT ,_param->_nb_context); 102 105 103 #ifdef STATISTICS 106 delete [] internal_DECOD_VAL;104 DELETE1(internal_DECOD_VAL ,_param->_nb_inst_decod); 107 105 #endif 108 106 } … … 111 109 delete _priority; 112 110 113 114 const uint32_t nb_opcod_type = 14; 111 DELETE3(_function_decod ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]); 112 DELETE3(_function_custom ,_param->_nb_context,nb_opcod_type,tab_opcod_type[it2]); 113 DELETE0(_decod_instruction); 115 114 116 115 for (uint32_t i=0; i<_param->_nb_context; i++) 117 { 118 for (uint32_t j=0; j<nb_opcod_type; j++) 119 { 120 delete [] _function_decod [i][j]; 121 delete [] _function_custom [i][j]; 122 } 123 delete [] _function_decod [i]; 124 delete [] _function_custom [i]; 125 } 126 delete [] _function_decod ; 127 delete [] _function_custom; 128 delete _decod_instruction; 129 delete _decod_param ; 116 delete _decod_param [i]; 117 DELETE1(_decod_param ,_param->_nb_context); 118 130 119 delete _component; 131 120 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/include/Types.h
r111 r112 10 10 11 11 #include "Behavioural/include/Types.h" 12 #include "Behavioural/include/Allocation.h" 12 13 13 14 namespace morpheo { … … 58 59 _nb_inst (nb_inst) 59 60 { 60 _val = new Tcontrol_t [_nb_inst];61 _context_id = new Tcontext_t [_nb_inst];62 _depth = new Tdepth_t [_nb_inst];63 _type = new Ttype_t [_nb_inst];64 _operation = new Toperation_t [_nb_inst];65 _no_execute = new Tcontrol_t [_nb_inst];66 _is_delay_slot = new Tcontrol_t [_nb_inst];61 ALLOC1(_val ,Tcontrol_t ,_nb_inst); 62 ALLOC1(_context_id ,Tcontext_t ,_nb_inst); 63 ALLOC1(_depth ,Tdepth_t ,_nb_inst); 64 ALLOC1(_type ,Ttype_t ,_nb_inst); 65 ALLOC1(_operation ,Toperation_t ,_nb_inst); 66 ALLOC1(_no_execute ,Tcontrol_t ,_nb_inst); 67 ALLOC1(_is_delay_slot ,Tcontrol_t ,_nb_inst); 67 68 #ifdef DEBUG 68 _address = new Tgeneral_data_t [_nb_inst];69 ALLOC1(_address ,Tgeneral_data_t ,_nb_inst); 69 70 #endif 70 _address_next = new Tgeneral_data_t [_nb_inst];71 _has_immediat = new Tcontrol_t [_nb_inst];72 _immediat = new Tgeneral_data_t [_nb_inst];73 _read_ra = new Tcontrol_t [_nb_inst];74 _num_reg_ra = new Tgeneral_address_t [_nb_inst];75 _read_rb = new Tcontrol_t [_nb_inst];76 _num_reg_rb = new Tgeneral_address_t [_nb_inst];77 _read_rc = new Tcontrol_t [_nb_inst];78 _num_reg_rc = new Tspecial_address_t [_nb_inst];79 _write_rd = new Tcontrol_t [_nb_inst];80 _num_reg_rd = new Tgeneral_address_t [_nb_inst];81 _write_re = new Tcontrol_t [_nb_inst];82 _num_reg_re = new Tspecial_address_t [_nb_inst];83 _exception_use = new Texception_t [_nb_inst];84 _exception = new Texception_t [_nb_inst];71 ALLOC1(_address_next ,Tgeneral_data_t ,_nb_inst); 72 ALLOC1(_has_immediat ,Tcontrol_t ,_nb_inst); 73 ALLOC1(_immediat ,Tgeneral_data_t ,_nb_inst); 74 ALLOC1(_read_ra ,Tcontrol_t ,_nb_inst); 75 ALLOC1(_num_reg_ra ,Tgeneral_address_t ,_nb_inst); 76 ALLOC1(_read_rb ,Tcontrol_t ,_nb_inst); 77 ALLOC1(_num_reg_rb ,Tgeneral_address_t ,_nb_inst); 78 ALLOC1(_read_rc ,Tcontrol_t ,_nb_inst); 79 ALLOC1(_num_reg_rc ,Tspecial_address_t ,_nb_inst); 80 ALLOC1(_write_rd ,Tcontrol_t ,_nb_inst); 81 ALLOC1(_num_reg_rd ,Tgeneral_address_t ,_nb_inst); 82 ALLOC1(_write_re ,Tcontrol_t ,_nb_inst); 83 ALLOC1(_num_reg_re ,Tspecial_address_t ,_nb_inst); 84 ALLOC1(_exception_use ,Texception_t ,_nb_inst); 85 ALLOC1(_exception ,Texception_t ,_nb_inst); 85 86 86 87 for (uint32_t i=0; i<_nb_inst; i++) … … 90 91 public : ~decod_queue_entry_t (void) 91 92 { 92 delete [] _val;93 delete [] _context_id;94 delete [] _depth;95 delete [] _type;96 delete [] _operation;97 delete [] _no_execute;98 delete [] _is_delay_slot;93 DELETE1(_val ,_nb_inst); 94 DELETE1(_context_id ,_nb_inst); 95 DELETE1(_depth ,_nb_inst); 96 DELETE1(_type ,_nb_inst); 97 DELETE1(_operation ,_nb_inst); 98 DELETE1(_no_execute ,_nb_inst); 99 DELETE1(_is_delay_slot ,_nb_inst); 99 100 #ifdef DEBUG 100 delete [] _address;101 DELETE1(_address ,_nb_inst); 101 102 #endif 102 delete [] _address_next;103 delete [] _has_immediat;104 delete [] _immediat;105 delete [] _read_ra;106 delete [] _num_reg_ra;107 delete [] _read_rb;108 delete [] _num_reg_rb;109 delete [] _read_rc;110 delete [] _num_reg_rc;111 delete [] _write_rd;112 delete [] _num_reg_rd;113 delete [] _write_re;114 delete [] _num_reg_re;115 delete [] _exception_use;116 delete [] _exception;103 DELETE1(_address_next ,_nb_inst); 104 DELETE1(_has_immediat ,_nb_inst); 105 DELETE1(_immediat ,_nb_inst); 106 DELETE1(_read_ra ,_nb_inst); 107 DELETE1(_num_reg_ra ,_nb_inst); 108 DELETE1(_read_rb ,_nb_inst); 109 DELETE1(_num_reg_rb ,_nb_inst); 110 DELETE1(_read_rc ,_nb_inst); 111 DELETE1(_num_reg_rc ,_nb_inst); 112 DELETE1(_write_rd ,_nb_inst); 113 DELETE1(_num_reg_rd ,_nb_inst); 114 DELETE1(_write_re ,_nb_inst); 115 DELETE1(_num_reg_re ,_nb_inst); 116 DELETE1(_exception_use ,_nb_inst); 117 DELETE1(_exception ,_nb_inst); 117 118 } 118 119 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_allocation.cpp
r111 r112 57 57 // ~~~~~[ Interface : "decod_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC1_INTERFACE ("decod_in",IN ,WEST,"Input of decod_queue", _param->_nb_inst_decod);59 ALLOC1_INTERFACE_BEGIN("decod_in",IN ,WEST,_("Input of decod_queue"), _param->_nb_inst_decod); 60 60 61 61 ALLOC1_VALACK_IN ( in_DECOD_IN_VAL ,VAL); … … 85 85 ALLOC1_SIGNAL_IN ( in_DECOD_IN_EXCEPTION_USE ,"exception_use",Texception_t ,_param->_size_exception_use ); 86 86 ALLOC1_SIGNAL_IN ( in_DECOD_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_decod ); 87 88 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 87 89 } 88 90 89 91 // ~~~~~[ Interface : "decod_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 92 { 91 ALLOC1_INTERFACE ("decod_out",OUT,EAST,"Output of decod_queue", _param->_nb_inst_decod);93 ALLOC1_INTERFACE_BEGIN("decod_out",OUT,EAST,_("Output of decod_queue"), _param->_nb_inst_decod); 92 94 93 95 ALLOC1_VALACK_OUT(out_DECOD_OUT_VAL ,VAL); … … 117 119 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_EXCEPTION_USE ,"exception_use",Texception_t ,_param->_size_exception_use ); 118 120 ALLOC1_SIGNAL_OUT(out_DECOD_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_decod ); 121 122 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 119 123 } 120 124 121 125 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 122 126 { 123 ALLOC1_INTERFACE ("depth",IN ,NORTH,"Depth", _param->_nb_context);127 ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH,_("Depth"), _param->_nb_context); 124 128 125 129 ALLOC1_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t ,_param->_size_depth); 126 130 ALLOC1_SIGNAL_IN ( in_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth); 127 131 ALLOC1_SIGNAL_IN ( in_DEPTH_FULL ,"full" ,Tcontrol_t ,1); 132 133 ALLOC1_INTERFACE_END(_param->_nb_context); 128 134 } 129 135 130 136 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 131 137 { 132 ALLOC1_INTERFACE ("nb_inst",OUT,NORTH,"Instruction's number", _param->_nb_context);138 ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,NORTH,_("Instruction's number"), _param->_nb_context); 133 139 134 140 ALLOC1_SIGNAL_OUT(out_NB_INST_ALL ,"all" ,Tcontext_t ,_param->_size_nb_inst_decod); 141 142 ALLOC1_INTERFACE_END(_param->_nb_context); 135 143 } 136 144 … … 140 148 switch (_param->_queue_scheme) 141 149 { 142 case DECOD_QUEUE_SCHEME_ONE_FIFO : reg_QUEUE = new std::list<decod_queue_entry_t*>; break;150 case DECOD_QUEUE_SCHEME_ONE_FIFO : ALLOC0(reg_QUEUE,std::list<decod_queue_entry_t*>); break; 143 151 case DECOD_QUEUE_SCHEME_MULTI_FIFO : ALLOC1(reg_QUEUE,std::list<decod_queue_entry_t*>,_param->_nb_bank); break; 144 152 } 145 reg_NB_INST = new uint32_t [_param->_nb_context]; 153 154 ALLOC1(reg_NB_INST,uint32_t,_param->_nb_context); 146 155 147 156 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 148 internal_DECOD_IN_ACK = new Tcontrol_t [_param->_nb_inst_decod];149 internal_DECOD_OUT_VAL = new Tcontrol_t [_param->_nb_inst_decod];150 internal_DECOD_OUT_ACK = new Tcontrol_t [_param->_nb_inst_decod];157 ALLOC1(internal_DECOD_IN_ACK ,Tcontrol_t,_param->_nb_inst_decod); 158 ALLOC1(internal_DECOD_OUT_VAL,Tcontrol_t,_param->_nb_inst_decod); 159 ALLOC1(internal_DECOD_OUT_ACK,Tcontrol_t,_param->_nb_inst_decod); 151 160 } 152 161 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_deallocation.cpp
r111 r112 92 92 switch (_param->_queue_scheme) 93 93 { 94 case DECOD_QUEUE_SCHEME_ONE_FIFO : delete reg_QUEUE; break; 95 case DECOD_QUEUE_SCHEME_MULTI_FIFO : DELETE1(reg_QUEUE,_param->_nb_bank); break; 96 } 97 delete [] reg_NB_INST; 94 case DECOD_QUEUE_SCHEME_ONE_FIFO : 95 { 96 while (not reg_QUEUE->empty()) 97 { 98 delete reg_QUEUE->front(); 99 reg_QUEUE->pop_front(); 100 } 101 102 DELETE0(reg_QUEUE); 103 break; 104 } 105 case DECOD_QUEUE_SCHEME_MULTI_FIFO : 106 { 107 for (uint32_t i=0; i<_param->_nb_bank; ++i) 108 while (not reg_QUEUE[i].empty()) 109 { 110 delete reg_QUEUE[i].front(); 111 reg_QUEUE[i].pop_front(); 112 } 113 114 DELETE1(reg_QUEUE,_param->_nb_bank); break; 115 } 116 } 117 118 DELETE1(reg_NB_INST ,_param->_nb_context); 98 119 99 120 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 delete [] internal_DECOD_IN_ACK;101 delete [] internal_DECOD_OUT_VAL;102 delete [] internal_DECOD_OUT_ACK;121 DELETE1(internal_DECOD_IN_ACK ,_param->_nb_inst_decod); 122 DELETE1(internal_DECOD_OUT_VAL,_param->_nb_inst_decod); 123 DELETE1(internal_DECOD_OUT_ACK,_param->_nb_inst_decod); 103 124 } 104 125 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_multi_fifo_transition.cpp
r111 r112 28 28 { 29 29 for (uint32_t i=0; i<_param->_nb_bank; ++i) 30 reg_QUEUE[i].clear(); 30 while (not reg_QUEUE[i].empty()) 31 { 32 delete reg_QUEUE[i].front(); 33 reg_QUEUE[i].pop_front(); 34 } 31 35 32 36 for (uint32_t i=0; i<_param->_nb_context; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod_queue/src/Decod_queue_function_one_fifo_transition.cpp
r111 r112 27 27 if (PORT_READ(in_NRESET) == 0) 28 28 { 29 reg_QUEUE->clear(); 29 while (not reg_QUEUE->empty()) 30 { 31 delete reg_QUEUE->front(); 32 reg_QUEUE->pop_front(); 33 } 30 34 31 35 for (uint32_t i=0; i<_param->_nb_context; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/SelfTest/src/test.cpp
r110 r112 115 115 ALLOC1_SC_SIGNAL( in_CONTEXT_DEPTH ," in_CONTEXT_DEPTH ",Tdepth_t ,_param->_nb_context); 116 116 117 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_VAL ,"out_CONTEXT_EVENT_VAL ",Tcontrol_t );118 ALLOC _SC_SIGNAL( in_CONTEXT_EVENT_ACK ," in_CONTEXT_EVENT_ACK ",Tcontrol_t );119 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_CONTEXT_ID ,"out_CONTEXT_EVENT_CONTEXT_ID ",Tcontext_t );120 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_DEPTH ,"out_CONTEXT_EVENT_DEPTH ",Tdepth_t );121 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_TYPE ,"out_CONTEXT_EVENT_TYPE ",Tevent_type_t );122 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_IS_DELAY_SLOT ,"out_CONTEXT_EVENT_IS_DELAY_SLOT ",Tcontrol_t );123 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS ,"out_CONTEXT_EVENT_ADDRESS ",Tgeneral_data_t );124 ALLOC _SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR ,"out_CONTEXT_EVENT_ADDRESS_EPCR ",Tgeneral_data_t );117 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_VAL ,"out_CONTEXT_EVENT_VAL ",Tcontrol_t ); 118 ALLOC0_SC_SIGNAL( in_CONTEXT_EVENT_ACK ," in_CONTEXT_EVENT_ACK ",Tcontrol_t ); 119 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_CONTEXT_ID ,"out_CONTEXT_EVENT_CONTEXT_ID ",Tcontext_t ); 120 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_DEPTH ,"out_CONTEXT_EVENT_DEPTH ",Tdepth_t ); 121 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_TYPE ,"out_CONTEXT_EVENT_TYPE ",Tevent_type_t ); 122 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_IS_DELAY_SLOT ,"out_CONTEXT_EVENT_IS_DELAY_SLOT ",Tcontrol_t ); 123 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS ,"out_CONTEXT_EVENT_ADDRESS ",Tgeneral_data_t ); 124 ALLOC0_SC_SIGNAL( out_CONTEXT_EVENT_ADDRESS_EPCR ,"out_CONTEXT_EVENT_ADDRESS_EPCR ",Tgeneral_data_t ); 125 125 126 126 /******************************************************** … … 144 144 { 145 145 if (_param->_have_port_inst_ifetch_ptr) 146 INSTANCE _SC_SIGNAL(_Decod_unit,in_IFETCH_INST_IFETCH_PTR[i]);146 INSTANCE0_SC_SIGNAL(_Decod_unit,in_IFETCH_INST_IFETCH_PTR[i]); 147 147 if (_param->_have_port_depth) 148 INSTANCE _SC_SIGNAL(_Decod_unit,in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]);148 INSTANCE0_SC_SIGNAL(_Decod_unit,in_IFETCH_BRANCH_UPDATE_PREDICTION_ID [i]); 149 149 } 150 150 … … 210 210 INSTANCE1_SC_SIGNAL(_Decod_unit, in_CONTEXT_DEPTH ,_param->_nb_context); 211 211 212 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_VAL );213 INSTANCE _SC_SIGNAL( _Decod_unit, in_CONTEXT_EVENT_ACK );212 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_VAL ); 213 INSTANCE0_SC_SIGNAL( _Decod_unit, in_CONTEXT_EVENT_ACK ); 214 214 if (_param->_have_port_context_id) 215 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_CONTEXT_ID );215 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_CONTEXT_ID ); 216 216 if (_param->_have_port_depth) 217 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_DEPTH );218 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_TYPE );219 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_IS_DELAY_SLOT );220 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS );221 INSTANCE _SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS_EPCR );217 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_DEPTH ); 218 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_TYPE ); 219 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_IS_DELAY_SLOT ); 220 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS ); 221 INSTANCE0_SC_SIGNAL( _Decod_unit,out_CONTEXT_EVENT_ADDRESS_EPCR ); 222 222 223 223 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); … … 538 538 DELETE1_SC_SIGNAL( in_CONTEXT_DEPTH ,_param->_nb_context); 539 539 540 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_VAL );541 DELETE _SC_SIGNAL(in_CONTEXT_EVENT_ACK );542 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID );543 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_DEPTH );544 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_TYPE );545 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT );546 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS );547 DELETE _SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR );540 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_VAL ); 541 DELETE0_SC_SIGNAL( in_CONTEXT_EVENT_ACK ); 542 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ); 543 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_DEPTH ); 544 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_TYPE ); 545 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ); 546 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS ); 547 DELETE0_SC_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ); 548 548 } 549 549 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_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]); 61 60 ALLOC2_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context, _param->_nb_inst_fetch[it1]); 62 61 63 62 _ALLOC2_VALACK_IN ( in_IFETCH_VAL ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]); 64 63 _ALLOC2_VALACK_OUT(out_IFETCH_ACK ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]); 65 64 _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); 65 66 ALLOC2_INTERFACE_END(_param->_nb_context, _param->_nb_inst_fetch[it1]); 67 } 68 { 69 ALLOC1_INTERFACE_BEGIN("ifetch", IN, WEST, _("Instruction's bundle"), _param->_nb_context); 69 70 70 71 ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); … … 75 76 ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 76 77 ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 78 79 ALLOC1_INTERFACE_END(_param->_nb_context); 77 80 } 78 81 79 82 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 83 { 81 ALLOC1_INTERFACE ("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);84 ALLOC1_INTERFACE_BEGIN("decod", OUT, EAST, _("Instruction decoded"), _param->_nb_inst_decod); 82 85 83 86 ALLOC1_VALACK_OUT(out_DECOD_VAL ,VAL); … … 107 110 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t ,_param->_size_exception_use ); 108 111 ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_decod ); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 109 114 } 110 115 111 116 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 117 { 113 ALLOC1_INTERFACE ("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);118 ALLOC1_INTERFACE_BEGIN("predict",OUT,NORTH,_("Decod a branch -> inform the branch predictor."),_param->_nb_inst_decod); 114 119 115 120 ALLOC1_VALACK_OUT(out_PREDICT_VAL ,VAL); … … 125 130 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST ,"address_dest" ,Tgeneral_data_t ,_param->_size_instruction_address ); 126 131 ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 ); 127 } 128 132 133 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 134 } 135 129 136 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 137 { 131 ALLOC1_INTERFACE ("depth",IN ,NORTH,"Depth", _param->_nb_context);138 ALLOC1_INTERFACE_BEGIN("depth",IN ,NORTH,_("Depth"), _param->_nb_context); 132 139 133 140 ALLOC1_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t ,_param->_size_depth); 134 141 ALLOC1_SIGNAL_IN ( in_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth); 135 142 ALLOC1_SIGNAL_IN ( in_DEPTH_FULL ,"full" ,Tcontrol_t ,1); 143 144 ALLOC1_INTERFACE_END(_param->_nb_context); 136 145 } 137 146 138 147 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 148 { 140 ALLOC1_INTERFACE ("nb_inst",OUT,NORTH,"Instruction's number", _param->_nb_context);149 ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,NORTH,_("Instruction's number"), _param->_nb_context); 141 150 142 151 ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL ,"decod_all" ,Tcontext_t ,_param->_size_nb_inst_decod); 152 153 ALLOC1_INTERFACE_END(_param->_nb_context); 143 154 } 144 155 145 156 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 146 157 { 147 ALLOC1_INTERFACE ("context", IN, NORTH, "context's information", _param->_nb_context);158 ALLOC1_INTERFACE_BEGIN("context", IN, NORTH, _("context's information"), _param->_nb_context); 148 159 149 160 ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1); 150 161 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL ,"depth_val" ,Tcontrol_t,1); 151 162 ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth); 163 164 ALLOC1_INTERFACE_END(_param->_nb_context); 152 165 } 153 166 154 167 // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 168 { 156 ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement"); 157 158 ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL ,VAL); 159 ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK ,ACK); 160 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 161 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 162 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 163 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 164 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_instruction_address); 165 ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address); 169 ALLOC0_INTERFACE_BEGIN("context_event", OUT, NORTH, _("context's evenement")); 170 171 ALLOC0_VALACK_OUT(out_CONTEXT_EVENT_VAL ,VAL); 172 ALLOC0_VALACK_IN ( in_CONTEXT_EVENT_ACK ,ACK); 173 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 174 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 175 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 176 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t ,1 ); 177 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS ,"address" ,Tgeneral_data_t,_param->_size_instruction_address); 178 ALLOC0_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address); 179 180 ALLOC0_INTERFACE_END(); 166 181 } 167 182 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/src/Decod_unit_deallocation.cpp
r110 r112 89 89 DELETE1_SIGNAL(in_CONTEXT_DEPTH ,_param->_nb_context,_param->_size_depth); 90 90 91 DELETE _SIGNAL(out_CONTEXT_EVENT_VAL ,1);92 DELETE _SIGNAL( in_CONTEXT_EVENT_ACK ,1);93 DELETE _SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,_param->_size_context_id );94 DELETE _SIGNAL(out_CONTEXT_EVENT_DEPTH ,_param->_size_depth );95 DELETE _SIGNAL(out_CONTEXT_EVENT_TYPE ,_param->_size_event_type );96 DELETE _SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ,1 );97 DELETE _SIGNAL(out_CONTEXT_EVENT_ADDRESS ,_param->_size_instruction_address);98 DELETE _SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address);91 DELETE0_SIGNAL(out_CONTEXT_EVENT_VAL ,1); 92 DELETE0_SIGNAL( in_CONTEXT_EVENT_ACK ,1); 93 DELETE0_SIGNAL(out_CONTEXT_EVENT_CONTEXT_ID ,_param->_size_context_id ); 94 DELETE0_SIGNAL(out_CONTEXT_EVENT_DEPTH ,_param->_size_depth ); 95 DELETE0_SIGNAL(out_CONTEXT_EVENT_TYPE ,_param->_size_event_type ); 96 DELETE0_SIGNAL(out_CONTEXT_EVENT_IS_DELAY_SLOT ,1 ); 97 DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS ,_param->_size_instruction_address); 98 DELETE0_SIGNAL(out_CONTEXT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address); 99 99 } 100 100 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/SelfTest/src/test.cpp
r108 r112 182 182 if (_param->_have_port_depth) 183 183 { 184 INSTANCE _SC_SIGNAL(_Front_end_Glue,out_DEPTH_DECOD_UNIT_MIN [i][j]);185 INSTANCE _SC_SIGNAL(_Front_end_Glue,out_CONTEXT_DECOD_UNIT_DEPTH [i][j]);184 INSTANCE0_SC_SIGNAL(_Front_end_Glue,out_DEPTH_DECOD_UNIT_MIN [i][j]); 185 INSTANCE0_SC_SIGNAL(_Front_end_Glue,out_CONTEXT_DECOD_UNIT_DEPTH [i][j]); 186 186 } 187 187 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Front_end_Glue/src/Front_end_Glue_allocation.cpp
r108 r112 58 58 // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("ifetch",OUT,SOUTH,_("ifetch"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);60 ALLOC2_INTERFACE_BEGIN("ifetch",OUT,SOUTH,_("ifetch"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 61 61 62 62 _ALLOC2_SIGNAL_OUT(out_IFETCH_DECOD_UNIT_CONTEXT_ID ,"DECOD_UNIT_CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 63 64 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 63 65 } 64 66 65 67 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 66 68 { 67 ALLOC2_INTERFACE ("decod",OUT,EAST,_("decod"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);69 ALLOC2_INTERFACE_BEGIN("decod",OUT,EAST,_("decod"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 68 70 69 71 _ALLOC2_SIGNAL_OUT(out_DECOD_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 70 72 _ALLOC2_SIGNAL_IN ( in_DECOD_DECOD_UNIT_CONTEXT_ID ,"DECOD_UNIT_CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 73 74 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 71 75 } 72 76 73 77 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 74 78 { 75 ALLOC1_INTERFACE ("branch_complete",IN,EAST,_("branch_complete"),_param->_nb_inst_branch_complete);79 ALLOC1_INTERFACE_BEGIN("branch_complete",IN,EAST,_("branch_complete"),_param->_nb_inst_branch_complete); 76 80 77 81 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_VAL ,"VAL" ,Tcontrol_t ,1); … … 86 90 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_CONTEXT_STATE_ACK ,"CONTEXT_STATE_ACK" ,Tcontrol_t ,1); 87 91 ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_CONTEXT_STATE_MISS_PREDICTION ,"CONTEXT_STATE_MISS_PREDICTION" ,Tcontrol_t ,1); 92 93 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 88 94 } 89 95 90 96 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 91 97 { 92 ALLOC1_INTERFACE ("event",OUT,EAST,_("event"),_param->_nb_context);98 ALLOC1_INTERFACE_BEGIN("event",OUT,EAST,_("event"),_param->_nb_context); 93 99 94 100 ALLOC1_SIGNAL_OUT (out_EVENT_VAL ,"VAL" ,Tcontrol_t ,1); … … 120 126 ALLOC1_SIGNAL_IN ( in_EVENT_CONTEXT_STATE_DEPTH ,"CONTEXT_STATE_DEPTH" ,Tdepth_t ,_param->_size_depth); 121 127 128 129 ALLOC1_INTERFACE_END(_param->_nb_context); 122 130 } 123 131 124 132 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 133 { 126 ALLOC1_INTERFACE ("depth",OUT,EAST,_("depth"),_param->_nb_context);134 ALLOC1_INTERFACE_BEGIN("depth",OUT,EAST,_("depth"),_param->_nb_context); 127 135 128 136 // ALLOC1_SIGNAL_OUT (out_DEPTH_CURRENT ,"CURRENT" ,Tdepth_t ,_param->_size_depth ); … … 138 146 139 147 ALLOC1_SIGNAL_OUT (out_DEPTH_CONTEXT_STATE_MIN ,"CONTEXT_STATE_MIN" ,Tdepth_t ,_param->_size_depth ); 148 149 ALLOC1_INTERFACE_END(_param->_nb_context); 140 150 } 141 151 { 142 ALLOC2_INTERFACE ("depth",OUT,EAST,_("depth"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]);152 ALLOC2_INTERFACE_BEGIN("depth",OUT,EAST,_("depth"),_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 143 153 144 154 // _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_CURRENT ,"DECOD_UNIT_CURRENT" ,Tdepth_t ,_param->_size_depth ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); … … 146 156 _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_MAX ,"DECOD_UNIT_MAX" ,Tdepth_t ,_param->_size_depth ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 147 157 _ALLOC2_SIGNAL_OUT(out_DEPTH_DECOD_UNIT_FULL ,"DECOD_UNIT_FULL" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 158 159 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 148 160 } 149 161 150 162 // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 151 163 { 152 ALLOC2_INTERFACE ("context",OUT,EAST,_("context"),_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size());164 ALLOC2_INTERFACE_BEGIN("context",OUT,EAST,_("context"),_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size()); 153 165 154 166 _ALLOC2_SIGNAL_OUT(out_CONTEXT_DECOD_UNIT_DEPTH_VAL ,"DECOD_UNIT_DEPTH_VAL" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 155 167 _ALLOC2_SIGNAL_OUT(out_CONTEXT_DECOD_UNIT_DEPTH ,"DECOD_UNIT_DEPTH" ,Tdepth_t ,_param->_size_depth ,_param->_nb_decod_unit,_param->_decod_unit_nb_context [it1]); 168 169 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_translate_context_id_from_decod_unit[it1].size()); 156 170 } 157 171 158 172 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 159 173 { 160 ALLOC1_INTERFACE ("nb_inst",OUT,EAST,_("nb inst"),_param->_nb_context);174 ALLOC1_INTERFACE_BEGIN("nb_inst",OUT,EAST,_("nb inst"),_param->_nb_context); 161 175 162 176 ALLOC1_SIGNAL_OUT(out_NB_INST_DECOD_ALL ,"DECOD_ALL" ,Tcounter_t ,_param->_size_nb_inst_decod); 163 177 ALLOC1_SIGNAL_IN ( in_NB_INST_DECOD_UNIT_DECOD_ALL ,"DECOD_UNIT_DECOD_ALL" ,Tcounter_t ,_param->_size_nb_inst_decod); 164 178 ALLOC1_SIGNAL_OUT(out_NB_INST_CONTEXT_STATE_DECOD_ALL ,"CONTEXT_STATE_DECOD_ALL" ,Tcounter_t ,_param->_size_nb_inst_decod); 179 180 ALLOC1_INTERFACE_END(_param->_nb_context); 165 181 } 166 182 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/SelfTest/src/test.cpp
r107 r112 51 51 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 52 52 53 ALLOC _SC_SIGNAL (out_ADDRESS_VAL ,"out_ADDRESS_VAL ",Tcontrol_t );54 ALLOC _SC_SIGNAL ( in_ADDRESS_ACK ," in_ADDRESS_ACK ",Tcontrol_t );55 ALLOC _SC_SIGNAL (out_ADDRESS_INSTRUCTION_ADDRESS ,"out_ADDRESS_INSTRUCTION_ADDRESS ",Tgeneral_address_t);53 ALLOC0_SC_SIGNAL (out_ADDRESS_VAL ,"out_ADDRESS_VAL ",Tcontrol_t ); 54 ALLOC0_SC_SIGNAL ( in_ADDRESS_ACK ," in_ADDRESS_ACK ",Tcontrol_t ); 55 ALLOC0_SC_SIGNAL (out_ADDRESS_INSTRUCTION_ADDRESS ,"out_ADDRESS_INSTRUCTION_ADDRESS ",Tgeneral_address_t); 56 56 ALLOC1_SC_SIGNAL(out_ADDRESS_INSTRUCTION_ENABLE ,"out_ADDRESS_INSTRUCTION_ENABLE ",Tcontrol_t ,_param->_nb_instruction); 57 ALLOC _SC_SIGNAL (out_ADDRESS_INST_IFETCH_PTR ,"out_ADDRESS_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t);58 ALLOC _SC_SIGNAL (out_ADDRESS_BRANCH_STATE ,"out_ADDRESS_BRANCH_STATE ",Tbranch_state_t );59 ALLOC _SC_SIGNAL (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );60 ALLOC _SC_SIGNAL (out_PREDICT_VAL ,"out_PREDICT_VAL ",Tcontrol_t );61 ALLOC _SC_SIGNAL ( in_PREDICT_ACK ," in_PREDICT_ACK ",Tcontrol_t );62 ALLOC _SC_SIGNAL (out_PREDICT_PC_PREVIOUS ,"out_PREDICT_PC_PREVIOUS ",Tgeneral_address_t);63 ALLOC _SC_SIGNAL (out_PREDICT_PC_CURRENT ,"out_PREDICT_PC_CURRENT ",Tgeneral_address_t);64 ALLOC _SC_SIGNAL (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE ",Tcontrol_t );65 ALLOC _SC_SIGNAL ( in_PREDICT_PC_NEXT ," in_PREDICT_PC_NEXT ",Tgeneral_address_t);66 ALLOC _SC_SIGNAL ( in_PREDICT_PC_NEXT_IS_DS_TAKE ," in_PREDICT_PC_NEXT_IS_DS_TAKE ",Tcontrol_t );57 ALLOC0_SC_SIGNAL (out_ADDRESS_INST_IFETCH_PTR ,"out_ADDRESS_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t); 58 ALLOC0_SC_SIGNAL (out_ADDRESS_BRANCH_STATE ,"out_ADDRESS_BRANCH_STATE ",Tbranch_state_t ); 59 ALLOC0_SC_SIGNAL (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t ); 60 ALLOC0_SC_SIGNAL (out_PREDICT_VAL ,"out_PREDICT_VAL ",Tcontrol_t ); 61 ALLOC0_SC_SIGNAL ( in_PREDICT_ACK ," in_PREDICT_ACK ",Tcontrol_t ); 62 ALLOC0_SC_SIGNAL (out_PREDICT_PC_PREVIOUS ,"out_PREDICT_PC_PREVIOUS ",Tgeneral_address_t); 63 ALLOC0_SC_SIGNAL (out_PREDICT_PC_CURRENT ,"out_PREDICT_PC_CURRENT ",Tgeneral_address_t); 64 ALLOC0_SC_SIGNAL (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE ",Tcontrol_t ); 65 ALLOC0_SC_SIGNAL ( in_PREDICT_PC_NEXT ," in_PREDICT_PC_NEXT ",Tgeneral_address_t); 66 ALLOC0_SC_SIGNAL ( in_PREDICT_PC_NEXT_IS_DS_TAKE ," in_PREDICT_PC_NEXT_IS_DS_TAKE ",Tcontrol_t ); 67 67 ALLOC1_SC_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE ," in_PREDICT_INSTRUCTION_ENABLE ",Tcontrol_t ,_param->_nb_instruction); 68 ALLOC _SC_SIGNAL ( in_PREDICT_INST_IFETCH_PTR ," in_PREDICT_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t);69 //ALLOC _SC_SIGNAL ( in_PREDICT_BRANCH_IS_CURRENT ," in_PREDICT_BRANCH_IS_CURRENT ",Tcontrol_t );70 ALLOC _SC_SIGNAL ( in_PREDICT_BRANCH_STATE ," in_PREDICT_BRANCH_STATE ",Tbranch_state_t );71 ALLOC _SC_SIGNAL ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );72 ALLOC _SC_SIGNAL ( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t );73 ALLOC _SC_SIGNAL (out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t );74 ALLOC _SC_SIGNAL ( in_EVENT_ADDRESS ," in_EVENT_ADDRESS ",Tgeneral_address_t);75 ALLOC _SC_SIGNAL ( in_EVENT_ADDRESS_NEXT ," in_EVENT_ADDRESS_NEXT ",Tgeneral_address_t);76 ALLOC _SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL ," in_EVENT_ADDRESS_NEXT_VAL ",Tcontrol_t );77 ALLOC _SC_SIGNAL ( in_EVENT_IS_DS_TAKE ," in_EVENT_IS_DS_TAKE ",Tcontrol_t );68 ALLOC0_SC_SIGNAL ( in_PREDICT_INST_IFETCH_PTR ," in_PREDICT_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t); 69 //ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_IS_CURRENT ," in_PREDICT_BRANCH_IS_CURRENT ",Tcontrol_t ); 70 ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_STATE ," in_PREDICT_BRANCH_STATE ",Tbranch_state_t ); 71 ALLOC0_SC_SIGNAL ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t ); 72 ALLOC0_SC_SIGNAL ( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t ); 73 ALLOC0_SC_SIGNAL (out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t ); 74 ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS ," in_EVENT_ADDRESS ",Tgeneral_address_t); 75 ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT ," in_EVENT_ADDRESS_NEXT ",Tgeneral_address_t); 76 ALLOC0_SC_SIGNAL ( in_EVENT_ADDRESS_NEXT_VAL ," in_EVENT_ADDRESS_NEXT_VAL ",Tcontrol_t ); 77 ALLOC0_SC_SIGNAL ( in_EVENT_IS_DS_TAKE ," in_EVENT_IS_DS_TAKE ",Tcontrol_t ); 78 78 79 79 /******************************************************** … … 86 86 (*(_Address_management->in_NRESET)) (*(in_NRESET)); 87 87 88 INSTANCE _SC_SIGNAL (_Address_management,out_ADDRESS_VAL );89 INSTANCE _SC_SIGNAL (_Address_management, in_ADDRESS_ACK );90 INSTANCE _SC_SIGNAL (_Address_management,out_ADDRESS_INSTRUCTION_ADDRESS );88 INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_VAL ); 89 INSTANCE0_SC_SIGNAL (_Address_management, in_ADDRESS_ACK ); 90 INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_INSTRUCTION_ADDRESS ); 91 91 INSTANCE1_SC_SIGNAL(_Address_management,out_ADDRESS_INSTRUCTION_ENABLE ,_param->_nb_instruction); 92 92 if (_param->_have_port_inst_ifetch_ptr) 93 INSTANCE _SC_SIGNAL (_Address_management,out_ADDRESS_INST_IFETCH_PTR );94 INSTANCE _SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_STATE );93 INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_INST_IFETCH_PTR ); 94 INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_STATE ); 95 95 if (_param->_have_port_depth) 96 INSTANCE _SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);97 INSTANCE _SC_SIGNAL (_Address_management,out_PREDICT_VAL );98 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_ACK );99 INSTANCE _SC_SIGNAL (_Address_management,out_PREDICT_PC_PREVIOUS );100 INSTANCE _SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT );101 INSTANCE _SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT_IS_DS_TAKE );102 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT );103 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT_IS_DS_TAKE );96 INSTANCE0_SC_SIGNAL (_Address_management,out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID); 97 INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_VAL ); 98 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_ACK ); 99 INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_PREVIOUS ); 100 INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT ); 101 INSTANCE0_SC_SIGNAL (_Address_management,out_PREDICT_PC_CURRENT_IS_DS_TAKE ); 102 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT ); 103 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_PC_NEXT_IS_DS_TAKE ); 104 104 INSTANCE1_SC_SIGNAL(_Address_management, in_PREDICT_INSTRUCTION_ENABLE ,_param->_nb_instruction); 105 105 if (_param->_have_port_inst_ifetch_ptr) 106 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_INST_IFETCH_PTR );107 //INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_IS_CURRENT );108 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_STATE );106 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_INST_IFETCH_PTR ); 107 //INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_IS_CURRENT ); 108 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_STATE ); 109 109 if (_param->_have_port_depth) 110 INSTANCE _SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);111 INSTANCE _SC_SIGNAL (_Address_management, in_EVENT_VAL );112 INSTANCE _SC_SIGNAL (_Address_management,out_EVENT_ACK );113 INSTANCE _SC_SIGNAL (_Address_management, in_EVENT_ADDRESS );114 INSTANCE _SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT );115 INSTANCE _SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT_VAL );116 INSTANCE _SC_SIGNAL (_Address_management, in_EVENT_IS_DS_TAKE );110 INSTANCE0_SC_SIGNAL (_Address_management, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID); 111 INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_VAL ); 112 INSTANCE0_SC_SIGNAL (_Address_management,out_EVENT_ACK ); 113 INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS ); 114 INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT ); 115 INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_ADDRESS_NEXT_VAL ); 116 INSTANCE0_SC_SIGNAL (_Address_management, in_EVENT_IS_DS_TAKE ); 117 117 118 118 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_allocation.cpp
r101 r112 16 16 namespace ifetch_unit { 17 17 namespace address_management { 18 19 20 18 21 19 #undef FUNCTION … … 58 56 // ~~~~~[ Interface : "address" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 57 { 60 ALLOC _INTERFACE("address", OUT, SOUTH, "Access at request icache.");58 ALLOC0_INTERFACE_BEGIN("address", OUT, SOUTH, _("Access at request icache.")); 61 59 62 ALLOC_VALACK_OUT (out_ADDRESS_VAL ,VAL); 63 ALLOC_VALACK_IN ( in_ADDRESS_ACK ,ACK); 64 ALLOC_SIGNAL_OUT (out_ADDRESS_INSTRUCTION_ADDRESS ,"instruction_address" ,Tgeneral_address_t,_param->_size_instruction_address ); 65 ALLOC_SIGNAL_OUT (out_ADDRESS_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr ); 66 ALLOC_SIGNAL_OUT (out_ADDRESS_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 67 ALLOC_SIGNAL_OUT (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 60 ALLOC0_VALACK_OUT (out_ADDRESS_VAL ,VAL); 61 ALLOC0_VALACK_IN ( in_ADDRESS_ACK ,ACK); 62 ALLOC0_SIGNAL_OUT (out_ADDRESS_INSTRUCTION_ADDRESS ,"instruction_address" ,Tgeneral_address_t,_param->_size_instruction_address ); 63 ALLOC0_SIGNAL_OUT (out_ADDRESS_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr ); 64 ALLOC0_SIGNAL_OUT (out_ADDRESS_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 65 ALLOC0_SIGNAL_OUT (out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 66 67 ALLOC0_INTERFACE_END(); 68 68 } 69 69 70 70 { 71 ALLOC1_INTERFACE ("address", OUT, SOUTH, "Access at request icache.",_param->_nb_instruction);71 ALLOC1_INTERFACE_BEGIN("address", OUT, SOUTH, _("Access at request icache."),_param->_nb_instruction); 72 72 73 73 ALLOC1_SIGNAL_OUT(out_ADDRESS_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1); 74 75 ALLOC1_INTERFACE_END(_param->_nb_instruction); 74 76 } 75 77 76 78 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC _INTERFACE("predict", IN, NORTH, "Request the prediction unit.");80 ALLOC0_INTERFACE_BEGIN("predict", IN, NORTH, _("Request the prediction unit.")); 79 81 80 ALLOC_VALACK_OUT (out_PREDICT_VAL ,VAL); 81 ALLOC_VALACK_IN ( in_PREDICT_ACK ,ACK); 82 ALLOC_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS ,"pc_previous" ,Tgeneral_address_t,_param->_size_instruction_address); 83 ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT ,"pc_current" ,Tgeneral_address_t,_param->_size_instruction_address); 84 ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"pc_current_is_ds_take" ,Tcontrol_t ,1); 85 ALLOC_SIGNAL_IN ( in_PREDICT_PC_NEXT ,"pc_next" ,Tgeneral_address_t,_param->_size_instruction_address); 86 ALLOC_SIGNAL_IN ( in_PREDICT_PC_NEXT_IS_DS_TAKE ,"pc_next_is_ds_take" ,Tcontrol_t ,1); 87 // ALLOC_SIGNAL_IN ( in_PREDICT_BRANCH_IS_CURRENT ,"branch_is_current" ,Tcontrol_t ,1); 88 ALLOC_SIGNAL_IN ( in_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 89 ALLOC_SIGNAL_IN ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 90 ALLOC_SIGNAL_IN ( in_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 82 ALLOC0_VALACK_OUT (out_PREDICT_VAL ,VAL); 83 ALLOC0_VALACK_IN ( in_PREDICT_ACK ,ACK); 84 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS ,"pc_previous" ,Tgeneral_address_t,_param->_size_instruction_address); 85 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT ,"pc_current" ,Tgeneral_address_t,_param->_size_instruction_address); 86 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"pc_current_is_ds_take" ,Tcontrol_t ,1); 87 ALLOC0_SIGNAL_IN ( in_PREDICT_PC_NEXT ,"pc_next" ,Tgeneral_address_t,_param->_size_instruction_address); 88 ALLOC0_SIGNAL_IN ( in_PREDICT_PC_NEXT_IS_DS_TAKE ,"pc_next_is_ds_take" ,Tcontrol_t ,1); 89 // ALLOC0_SIGNAL_IN ( in_PREDICT_BRANCH_IS_CURRENT ,"branch_is_current" ,Tcontrol_t ,1); 90 ALLOC0_SIGNAL_IN ( in_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 91 ALLOC0_SIGNAL_IN ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 92 ALLOC0_SIGNAL_IN ( in_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 93 94 ALLOC0_INTERFACE_END(); 91 95 } 92 96 { 93 ALLOC1_INTERFACE ("predict", IN, NORTH, "Request the prediction unit.",_param->_nb_instruction);97 ALLOC1_INTERFACE_BEGIN("predict", IN, NORTH, _("Request the prediction unit."),_param->_nb_instruction); 94 98 95 99 ALLOC1_SIGNAL_IN (in_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1); 100 101 ALLOC1_INTERFACE_END(_param->_nb_instruction); 96 102 } 97 103 98 104 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 99 105 { 100 ALLOC _INTERFACE("event", IN, SOUTH, "Event (miss, exception ...)");106 ALLOC0_INTERFACE_BEGIN("event", IN, SOUTH, _("Event (miss, exception ...)")); 101 107 102 ALLOC_VALACK_IN ( in_EVENT_VAL ,VAL); 103 ALLOC_VALACK_OUT(out_EVENT_ACK ,ACK); 104 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 105 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t,_param->_size_instruction_address); 106 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"address_next_val",Tcontrol_t,1); 107 ALLOC_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"is_ds_take" ,Tcontrol_t,1); 108 ALLOC0_VALACK_IN ( in_EVENT_VAL ,VAL); 109 ALLOC0_VALACK_OUT(out_EVENT_ACK ,ACK); 110 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 111 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t,_param->_size_instruction_address); 112 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"address_next_val",Tcontrol_t,1); 113 ALLOC0_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"is_ds_take" ,Tcontrol_t,1); 114 115 ALLOC0_INTERFACE_END(); 108 116 } 109 117 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/src/Address_management_deallocation.cpp
r101 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Address_management/include/Address_management.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 27 28 delete in_CLOCK ; 28 29 delete in_NRESET; 29 30 delete out_ADDRESS_VAL ; 31 delete in_ADDRESS_ACK ; 32 delete out_ADDRESS_INSTRUCTION_ADDRESS ; 33 delete [] out_ADDRESS_INSTRUCTION_ENABLE ; 34 if (_param->_have_port_inst_ifetch_ptr) 35 delete out_ADDRESS_INST_IFETCH_PTR ; 36 delete out_ADDRESS_BRANCH_STATE ; 37 if (_param->_have_port_depth) 38 delete out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID; 39 delete out_PREDICT_VAL ; 40 delete in_PREDICT_ACK ; 41 delete out_PREDICT_PC_PREVIOUS ; 42 delete out_PREDICT_PC_CURRENT ; 43 delete out_PREDICT_PC_CURRENT_IS_DS_TAKE ; 44 delete in_PREDICT_PC_NEXT ; 45 delete in_PREDICT_PC_NEXT_IS_DS_TAKE ; 46 delete [] in_PREDICT_INSTRUCTION_ENABLE ; 47 if (_param->_have_port_inst_ifetch_ptr) 48 delete in_PREDICT_INST_IFETCH_PTR ; 49 // delete in_PREDICT_BRANCH_IS_CURRENT ; 50 delete in_PREDICT_BRANCH_STATE ; 51 if (_param->_have_port_depth) 52 delete in_PREDICT_BRANCH_UPDATE_PREDICTION_ID; 53 delete in_EVENT_VAL ; 54 delete out_EVENT_ACK ; 55 delete in_EVENT_ADDRESS ; 56 delete in_EVENT_ADDRESS_NEXT ; 57 delete in_EVENT_ADDRESS_NEXT_VAL ; 58 delete in_EVENT_IS_DS_TAKE ; 59 60 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61 if (usage_is_set(_usage,USE_SYSTEMC)) 62 { 63 delete reg_PC_ACCESS_INSTRUCTION_ENABLE ; 64 delete reg_PC_CURRENT_INSTRUCTION_ENABLE; 65 delete reg_PC_NEXT_INSTRUCTION_ENABLE ; 66 } 30 31 DELETE0_SIGNAL(out_ADDRESS_VAL ,1); 32 DELETE0_SIGNAL( in_ADDRESS_ACK ,1); 33 DELETE0_SIGNAL(out_ADDRESS_INSTRUCTION_ADDRESS ,_param->_size_instruction_address ); 34 DELETE0_SIGNAL(out_ADDRESS_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr ); 35 DELETE0_SIGNAL(out_ADDRESS_BRANCH_STATE ,_param->_size_branch_state ); 36 DELETE0_SIGNAL(out_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth); 37 DELETE1_SIGNAL(out_ADDRESS_INSTRUCTION_ENABLE ,1,_param->_nb_instruction); 38 39 DELETE0_SIGNAL(out_PREDICT_VAL ,1); 40 DELETE0_SIGNAL( in_PREDICT_ACK ,1); 41 DELETE0_SIGNAL(out_PREDICT_PC_PREVIOUS ,_param->_size_instruction_address); 42 DELETE0_SIGNAL(out_PREDICT_PC_CURRENT ,_param->_size_instruction_address); 43 DELETE0_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE ,1); 44 DELETE0_SIGNAL( in_PREDICT_PC_NEXT ,_param->_size_instruction_address); 45 DELETE0_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE ,1); 46 // DELETE0_SIGNAL( in_PREDICT_BRANCH_IS_CURRENT ,1); 47 DELETE0_SIGNAL( in_PREDICT_BRANCH_STATE ,_param->_size_branch_state); 48 DELETE0_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth); 49 DELETE0_SIGNAL( in_PREDICT_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr); 50 DELETE1_SIGNAL(in_PREDICT_INSTRUCTION_ENABLE ,1,_param->_nb_instruction); 51 52 DELETE0_SIGNAL( in_EVENT_VAL ,1); 53 DELETE0_SIGNAL(out_EVENT_ACK ,1); 54 DELETE0_SIGNAL( in_EVENT_ADDRESS ,_param->_size_instruction_address); 55 DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT ,_param->_size_instruction_address); 56 DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL,1); 57 DELETE0_SIGNAL( in_EVENT_IS_DS_TAKE ,1); 58 59 DELETE1(reg_PC_ACCESS_INSTRUCTION_ENABLE ,_param->_nb_instruction); 60 DELETE1(reg_PC_CURRENT_INSTRUCTION_ENABLE,_param->_nb_instruction); 61 DELETE1(reg_PC_NEXT_INSTRUCTION_ENABLE ,_param->_nb_instruction); 67 62 } 68 69 63 70 64 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/SelfTest/src/test.cpp
r88 r112 68 68 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 69 69 70 ALLOC _SC_SIGNAL( in_ADDRESS_VAL ," in_ADDRESS_VAL ",Tcontrol_t );71 ALLOC _SC_SIGNAL(out_ADDRESS_ACK ,"out_ADDRESS_ACK ",Tcontrol_t );72 ALLOC _SC_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID ,"out_ADDRESS_IFETCH_QUEUE_ID ",Tifetch_queue_ptr_t );70 ALLOC0_SC_SIGNAL( in_ADDRESS_VAL ," in_ADDRESS_VAL ",Tcontrol_t ); 71 ALLOC0_SC_SIGNAL(out_ADDRESS_ACK ,"out_ADDRESS_ACK ",Tcontrol_t ); 72 ALLOC0_SC_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID ,"out_ADDRESS_IFETCH_QUEUE_ID ",Tifetch_queue_ptr_t ); 73 73 ALLOC1_SC_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE ," in_ADDRESS_INSTRUCTION_ENABLE ",Tcontrol_t ,_param->_nb_instruction); 74 ALLOC _SC_SIGNAL( in_ADDRESS_INSTRUCTION_ADDRESS ," in_ADDRESS_INSTRUCTION_ADDRESS ",Tgeneral_address_t );75 ALLOC _SC_SIGNAL( in_ADDRESS_INST_IFETCH_PTR ," in_ADDRESS_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t );76 ALLOC _SC_SIGNAL( in_ADDRESS_BRANCH_STATE ," in_ADDRESS_BRANCH_STATE ",Tbranch_state_t );77 ALLOC _SC_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID," in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );74 ALLOC0_SC_SIGNAL( in_ADDRESS_INSTRUCTION_ADDRESS ," in_ADDRESS_INSTRUCTION_ADDRESS ",Tgeneral_address_t ); 75 ALLOC0_SC_SIGNAL( in_ADDRESS_INST_IFETCH_PTR ," in_ADDRESS_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t ); 76 ALLOC0_SC_SIGNAL( in_ADDRESS_BRANCH_STATE ," in_ADDRESS_BRANCH_STATE ",Tbranch_state_t ); 77 ALLOC0_SC_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID," in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t ); 78 78 ALLOC1_SC_SIGNAL(out_DECOD_VAL ,"out_DECOD_VAL ",Tcontrol_t ,_param->_nb_instruction); 79 79 ALLOC1_SC_SIGNAL( in_DECOD_ACK ," in_DECOD_ACK ",Tcontrol_t ,_param->_nb_instruction); 80 80 ALLOC1_SC_SIGNAL(out_DECOD_INSTRUCTION ,"out_DECOD_INSTRUCTION ",Tinstruction_t ,_param->_nb_instruction); 81 ALLOC _SC_SIGNAL(out_DECOD_ADDRESS ,"out_DECOD_ADDRESS ",Tgeneral_address_t );82 ALLOC _SC_SIGNAL(out_DECOD_INST_IFETCH_PTR ,"out_DECOD_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t );83 ALLOC _SC_SIGNAL(out_DECOD_BRANCH_STATE ,"out_DECOD_BRANCH_STATE ",Tbranch_state_t );84 ALLOC _SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID ",Tprediction_ptr_t );85 ALLOC _SC_SIGNAL(out_DECOD_EXCEPTION ,"out_DECOD_EXCEPTION ",Tprediction_ptr_t );86 ALLOC _SC_SIGNAL( in_ICACHE_RSP_VAL ," in_ICACHE_RSP_VAL ",Tcontrol_t );87 ALLOC _SC_SIGNAL(out_ICACHE_RSP_ACK ,"out_ICACHE_RSP_ACK ",Tcontrol_t );88 ALLOC _SC_SIGNAL( in_ICACHE_RSP_PACKET_ID ," in_ICACHE_RSP_PACKET_ID ",Tpacket_t );81 ALLOC0_SC_SIGNAL(out_DECOD_ADDRESS ,"out_DECOD_ADDRESS ",Tgeneral_address_t ); 82 ALLOC0_SC_SIGNAL(out_DECOD_INST_IFETCH_PTR ,"out_DECOD_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t ); 83 ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_STATE ,"out_DECOD_BRANCH_STATE ",Tbranch_state_t ); 84 ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID ",Tprediction_ptr_t ); 85 ALLOC0_SC_SIGNAL(out_DECOD_EXCEPTION ,"out_DECOD_EXCEPTION ",Tprediction_ptr_t ); 86 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_VAL ," in_ICACHE_RSP_VAL ",Tcontrol_t ); 87 ALLOC0_SC_SIGNAL(out_ICACHE_RSP_ACK ,"out_ICACHE_RSP_ACK ",Tcontrol_t ); 88 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_PACKET_ID ," in_ICACHE_RSP_PACKET_ID ",Tpacket_t ); 89 89 ALLOC1_SC_SIGNAL( in_ICACHE_RSP_INSTRUCTION ," in_ICACHE_RSP_INSTRUCTION ",Ticache_instruction_t,_param->_nb_instruction); 90 ALLOC _SC_SIGNAL( in_ICACHE_RSP_ERROR ," in_ICACHE_RSP_ERROR ",Ticache_error_t );91 ALLOC _SC_SIGNAL( in_EVENT_RESET_VAL ," in_EVENT_RESET_VAL ",Tcontrol_t );92 ALLOC _SC_SIGNAL(out_EVENT_RESET_ACK ,"out_EVENT_RESET_ACK ",Tcontrol_t );90 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_ERROR ," in_ICACHE_RSP_ERROR ",Ticache_error_t ); 91 ALLOC0_SC_SIGNAL( in_EVENT_RESET_VAL ," in_EVENT_RESET_VAL ",Tcontrol_t ); 92 ALLOC0_SC_SIGNAL(out_EVENT_RESET_ACK ,"out_EVENT_RESET_ACK ",Tcontrol_t ); 93 93 94 94 /******************************************************** … … 101 101 (*(_Ifetch_queue->in_NRESET)) (*(in_NRESET)); 102 102 103 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ADDRESS_VAL );104 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_ADDRESS_ACK );103 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_VAL ); 104 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ADDRESS_ACK ); 105 105 if (_param->_have_port_ifetch_queue_ptr) 106 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_ADDRESS_IFETCH_QUEUE_ID );106 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ADDRESS_IFETCH_QUEUE_ID ); 107 107 INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INSTRUCTION_ENABLE ,_param->_nb_instruction); 108 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INSTRUCTION_ADDRESS );108 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INSTRUCTION_ADDRESS ); 109 109 if (_param->_have_port_inst_ifetch_ptr) 110 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INST_IFETCH_PTR );111 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_STATE );110 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_INST_IFETCH_PTR ); 111 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_STATE ); 112 112 if (_param->_have_port_depth) 113 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID);113 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID); 114 114 INSTANCE1_SC_SIGNAL(_Ifetch_queue,out_DECOD_VAL ,_param->_nb_instruction); 115 115 INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_DECOD_ACK ,_param->_nb_instruction); 116 116 INSTANCE1_SC_SIGNAL(_Ifetch_queue,out_DECOD_INSTRUCTION ,_param->_nb_instruction); 117 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_DECOD_ADDRESS );117 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_ADDRESS ); 118 118 if (_param->_have_port_inst_ifetch_ptr) 119 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_DECOD_INST_IFETCH_PTR );120 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_STATE );119 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_INST_IFETCH_PTR ); 120 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_STATE ); 121 121 if (_param->_have_port_depth) 122 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_UPDATE_PREDICTION_ID );123 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_DECOD_EXCEPTION );124 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_VAL );125 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_ICACHE_RSP_ACK );122 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_BRANCH_UPDATE_PREDICTION_ID ); 123 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_DECOD_EXCEPTION ); 124 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_VAL ); 125 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_ICACHE_RSP_ACK ); 126 126 if (_param->_have_port_ifetch_queue_ptr) 127 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_PACKET_ID );127 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_PACKET_ID ); 128 128 INSTANCE1_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_INSTRUCTION ,_param->_nb_instruction); 129 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_ERROR );130 INSTANCE _SC_SIGNAL(_Ifetch_queue, in_EVENT_RESET_VAL );131 INSTANCE _SC_SIGNAL(_Ifetch_queue,out_EVENT_RESET_ACK );129 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_ICACHE_RSP_ERROR ); 130 INSTANCE0_SC_SIGNAL(_Ifetch_queue, in_EVENT_RESET_VAL ); 131 INSTANCE0_SC_SIGNAL(_Ifetch_queue,out_EVENT_RESET_ACK ); 132 132 133 133 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_allocation.cpp
r88 r112 48 48 ,IN 49 49 ,SOUTH, 50 "Generalist interface"50 _("Generalist interface") 51 51 #endif 52 52 ); … … 58 58 // ~~~~~[ Interface : "address" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC _INTERFACE("address", IN, NORTH, "Transaction with PC management.");60 ALLOC0_INTERFACE_BEGIN("address", IN, NORTH, "Transaction with PC management."); 61 61 62 ALLOC _VALACK_IN ( in_ADDRESS_VAL ,VAL);63 ALLOC _VALACK_OUT(out_ADDRESS_ACK ,ACK);64 ALLOC _SIGNAL_IN ( in_ADDRESS_INSTRUCTION_ADDRESS ,"instruction_address" ,Tgeneral_address_t ,_param->_size_instruction_address );65 ALLOC _SIGNAL_IN ( in_ADDRESS_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr);66 ALLOC _SIGNAL_IN ( in_ADDRESS_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state );67 ALLOC _SIGNAL_IN ( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth );68 ALLOC _SIGNAL_OUT(out_ADDRESS_IFETCH_QUEUE_ID ,"ifetch_queue_id" ,Tifetch_queue_ptr_t,_param->_size_ifetch_queue_ptr);62 ALLOC0_VALACK_IN ( in_ADDRESS_VAL ,VAL); 63 ALLOC0_VALACK_OUT(out_ADDRESS_ACK ,ACK); 64 ALLOC0_SIGNAL_IN ( in_ADDRESS_INSTRUCTION_ADDRESS ,"instruction_address" ,Tgeneral_address_t ,_param->_size_instruction_address ); 65 ALLOC0_SIGNAL_IN ( in_ADDRESS_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr); 66 ALLOC0_SIGNAL_IN ( in_ADDRESS_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 67 ALLOC0_SIGNAL_IN ( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 68 ALLOC0_SIGNAL_OUT(out_ADDRESS_IFETCH_QUEUE_ID ,"ifetch_queue_id" ,Tifetch_queue_ptr_t,_param->_size_ifetch_queue_ptr); 69 69 70 ALLOC0_INTERFACE_END(); 70 71 } 71 72 { 72 ALLOC1_INTERFACE ("address", IN, NORTH, "Transaction with PC management.",_param->_nb_instruction);73 ALLOC1_INTERFACE_BEGIN("address", IN, NORTH, _("Transaction with PC management."),_param->_nb_instruction); 73 74 74 75 ALLOC1_SIGNAL_IN( in_ADDRESS_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1); 76 77 ALLOC1_INTERFACE_END(_param->_nb_instruction); 75 78 } 76 79 77 80 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 78 81 { 79 ALLOC1_INTERFACE ("decod",OUT, EAST, "Send instruction bundle to the decod's stage.",_param->_nb_instruction);82 ALLOC1_INTERFACE_BEGIN("decod",OUT, EAST, _("Send instruction bundle to the decod's stage."),_param->_nb_instruction); 80 83 81 84 ALLOC1_VALACK_OUT(out_DECOD_VAL ,VAL); 82 85 ALLOC1_VALACK_IN ( in_DECOD_ACK ,ACK); 83 86 ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION,"instruction",Tinstruction_t,_param->_size_instruction); 87 88 ALLOC1_INTERFACE_END(_param->_nb_instruction); 84 89 } 85 90 { 86 ALLOC _INTERFACE("decod",OUT, EAST, "Send instruction bundle to the decod's stage.");91 ALLOC0_INTERFACE_BEGIN("decod",OUT, EAST, _("Send instruction bundle to the decod's stage.")); 87 92 88 ALLOC_SIGNAL_OUT(out_DECOD_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address ); 89 ALLOC_SIGNAL_OUT(out_DECOD_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr ); 90 ALLOC_SIGNAL_OUT(out_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 91 ALLOC_SIGNAL_OUT(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 92 ALLOC_SIGNAL_OUT(out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 93 ALLOC0_SIGNAL_OUT(out_DECOD_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address ); 94 ALLOC0_SIGNAL_OUT(out_DECOD_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr ); 95 ALLOC0_SIGNAL_OUT(out_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state ); 96 ALLOC0_SIGNAL_OUT(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth ); 97 ALLOC0_SIGNAL_OUT(out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 98 99 ALLOC0_INTERFACE_END(); 93 100 } 94 101 95 102 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 103 { 97 ALLOC _INTERFACE("icache_rsp", IN, WEST, "Respons from Instruction Cache.");104 ALLOC0_INTERFACE_BEGIN("icache_rsp", IN, WEST, _("Respons from Instruction Cache.")); 98 105 99 ALLOC_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); 100 ALLOC_VALACK_OUT(out_ICACHE_RSP_ACK ,ACK); 101 ALLOC_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID,"packet_id",Tpacket_t ,_param->_size_ifetch_queue_ptr); 102 ALLOC_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t,_param->_size_icache_error); 106 ALLOC0_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); 107 ALLOC0_VALACK_OUT(out_ICACHE_RSP_ACK ,ACK); 108 ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID,"packet_id",Tpacket_t ,_param->_size_ifetch_queue_ptr); 109 ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t,_param->_size_icache_error); 110 111 ALLOC0_INTERFACE_END(); 103 112 } 104 113 { 105 ALLOC1_INTERFACE ("icache_rsp", IN, WEST, "Respons from Instruction Cache.",_param->_nb_instruction);114 ALLOC1_INTERFACE_BEGIN("icache_rsp", IN, WEST, _("Respons from Instruction Cache."),_param->_nb_instruction); 106 115 107 116 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction); 117 118 ALLOC1_INTERFACE_END(_param->_nb_instruction); 108 119 } 109 120 110 121 // ~~~~~[ Interface "event_reset" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 122 { 112 ALLOC _INTERFACE("event_reset", IN, NORTH, "An event occure and reset queue.");123 ALLOC0_INTERFACE_BEGIN("event_reset", IN, NORTH, _("An event occure and reset queue.")); 113 124 114 ALLOC_VALACK_IN ( in_EVENT_RESET_VAL,VAL); 115 ALLOC_VALACK_OUT(out_EVENT_RESET_ACK,ACK); 125 ALLOC0_VALACK_IN ( in_EVENT_RESET_VAL,VAL); 126 ALLOC0_VALACK_OUT(out_EVENT_RESET_ACK,ACK); 127 128 ALLOC0_INTERFACE_END(); 116 129 } 117 130 … … 119 132 if (usage_is_set(_usage,USE_SYSTEMC)) 120 133 { 121 internal_DECOD_VAL = new Tcontrol_t [_param->_nb_instruction];134 ALLOC1(internal_DECOD_VAL,Tcontrol_t,_param->_nb_instruction); 122 135 123 136 _queue = new ifetch_queue_entry_t * [_param->_size_queue]; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/src/Ifetch_queue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_queue/include/Ifetch_queue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 delete in_ADDRESS_VAL ; 31 delete out_ADDRESS_ACK ; 32 if (_param->_have_port_ifetch_queue_ptr) 33 delete out_ADDRESS_IFETCH_QUEUE_ID ; 34 delete [] in_ADDRESS_INSTRUCTION_ENABLE ; 35 delete in_ADDRESS_INSTRUCTION_ADDRESS ; 36 if (_param->_have_port_inst_ifetch_ptr) 37 delete in_ADDRESS_INST_IFETCH_PTR ; 38 delete in_ADDRESS_BRANCH_STATE ; 39 if (_param->_have_port_depth) 40 delete in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID; 41 delete [] out_DECOD_VAL ; 42 delete [] in_DECOD_ACK ; 43 delete [] out_DECOD_INSTRUCTION ; 44 delete out_DECOD_ADDRESS ; 45 if (_param->_have_port_inst_ifetch_ptr) 46 delete out_DECOD_INST_IFETCH_PTR ; 47 delete out_DECOD_BRANCH_STATE ; 48 if (_param->_have_port_depth) 49 delete out_DECOD_BRANCH_UPDATE_PREDICTION_ID ; 50 delete out_DECOD_EXCEPTION ; 51 delete in_ICACHE_RSP_VAL ; 52 delete out_ICACHE_RSP_ACK ; 53 if (_param->_have_port_ifetch_queue_ptr) 54 delete in_ICACHE_RSP_PACKET_ID ; 55 delete [] in_ICACHE_RSP_INSTRUCTION ; 56 delete in_ICACHE_RSP_ERROR ; 57 delete in_EVENT_RESET_VAL ; 58 delete out_EVENT_RESET_ACK ; 31 DELETE0_SIGNAL( in_ADDRESS_VAL ,1); 32 DELETE0_SIGNAL(out_ADDRESS_ACK ,1); 33 DELETE0_SIGNAL( in_ADDRESS_INSTRUCTION_ADDRESS ,_param->_size_instruction_address); 34 DELETE0_SIGNAL( in_ADDRESS_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr); 35 DELETE0_SIGNAL( in_ADDRESS_BRANCH_STATE ,_param->_size_branch_state ); 36 DELETE0_SIGNAL( in_ADDRESS_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth ); 37 DELETE0_SIGNAL(out_ADDRESS_IFETCH_QUEUE_ID ,_param->_size_ifetch_queue_ptr); 38 DELETE1_SIGNAL( in_ADDRESS_INSTRUCTION_ENABLE ,1,_param->_nb_instruction); 39 40 DELETE1_SIGNAL(out_DECOD_VAL ,1,_param->_nb_instruction); 41 DELETE1_SIGNAL( in_DECOD_ACK ,1,_param->_nb_instruction); 42 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_size_instruction,_param->_nb_instruction); 43 DELETE0_SIGNAL(out_DECOD_ADDRESS ,_param->_size_instruction_address); 44 DELETE0_SIGNAL(out_DECOD_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr ); 45 DELETE0_SIGNAL(out_DECOD_BRANCH_STATE ,_param->_size_branch_state ); 46 DELETE0_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth ); 47 DELETE0_SIGNAL(out_DECOD_EXCEPTION ,_param->_size_exception_ifetch); 48 49 DELETE0_SIGNAL( in_ICACHE_RSP_VAL ,1); 50 DELETE0_SIGNAL(out_ICACHE_RSP_ACK ,1); 51 DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID ,_param->_size_ifetch_queue_ptr); 52 DELETE0_SIGNAL( in_ICACHE_RSP_ERROR ,_param->_size_icache_error); 53 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_size_instruction,_param->_nb_instruction); 54 55 DELETE0_SIGNAL( in_EVENT_RESET_VAL,1); 56 DELETE0_SIGNAL(out_EVENT_RESET_ACK,1); 59 57 } 60 58 … … 62 60 if (usage_is_set(_usage,USE_SYSTEMC)) 63 61 { 64 delete internal_DECOD_VAL; 62 DELETE1(internal_DECOD_VAL,_param->_nb_instruction); 63 64 for (uint32_t i=0;i<_param->_size_queue; i++) 65 delete _queue[i]; 65 66 delete [] _queue; 66 67 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/SelfTest/src/test.cpp
r88 r112 50 50 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 51 51 52 ALLOC _SC_SIGNAL(out_ICACHE_REQ_VAL ,"out_ICACHE_REQ_VAL ",Tcontrol_t);53 ALLOC _SC_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL," in_ICACHE_REQ_ADDRESS_VAL",Tcontrol_t);54 ALLOC _SC_SIGNAL(out_ICACHE_REQ_QUEUE_VAL ,"out_ICACHE_REQ_QUEUE_VAL ",Tcontrol_t);55 ALLOC _SC_SIGNAL( in_ICACHE_REQ_ACK ," in_ICACHE_REQ_ACK ",Tcontrol_t);56 ALLOC _SC_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK,"out_ICACHE_REQ_ADDRESS_ACK",Tcontrol_t);57 ALLOC _SC_SIGNAL( in_ICACHE_REQ_QUEUE_ACK ," in_ICACHE_REQ_QUEUE_ACK ",Tcontrol_t);58 ALLOC _SC_SIGNAL(out_ICACHE_REQ_TYPE ,"out_ICACHE_REQ_TYPE ",Ticache_type_t);59 ALLOC _SC_SIGNAL(out_ICACHE_REQ_ADDRESS ,"out_ICACHE_REQ_ADDRESS ",Taddress_t);60 ALLOC _SC_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS," in_ICACHE_REQ_ADDRESS_ADDRESS",Taddress_t);61 ALLOC _SC_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS ,"out_ICACHE_REQ_QUEUE_ADDRESS ",Taddress_t);62 ALLOC _SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t);63 ALLOC _SC_SIGNAL(out_EVENT_ADDRESS_VAL ,"out_EVENT_ADDRESS_VAL ",Tcontrol_t);64 ALLOC _SC_SIGNAL(out_EVENT_QUEUE_VAL ,"out_EVENT_QUEUE_VAL ",Tcontrol_t);65 ALLOC _SC_SIGNAL(out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t);66 ALLOC _SC_SIGNAL( in_EVENT_ADDRESS_ACK ," in_EVENT_ADDRESS_ACK ",Tcontrol_t);67 ALLOC _SC_SIGNAL( in_EVENT_QUEUE_ACK ," in_EVENT_QUEUE_ACK ",Tcontrol_t);52 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_VAL ,"out_ICACHE_REQ_VAL ",Tcontrol_t); 53 ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL," in_ICACHE_REQ_ADDRESS_VAL",Tcontrol_t); 54 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_QUEUE_VAL ,"out_ICACHE_REQ_QUEUE_VAL ",Tcontrol_t); 55 ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ACK ," in_ICACHE_REQ_ACK ",Tcontrol_t); 56 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK,"out_ICACHE_REQ_ADDRESS_ACK",Tcontrol_t); 57 ALLOC0_SC_SIGNAL( in_ICACHE_REQ_QUEUE_ACK ," in_ICACHE_REQ_QUEUE_ACK ",Tcontrol_t); 58 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_TYPE ,"out_ICACHE_REQ_TYPE ",Ticache_type_t); 59 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS ,"out_ICACHE_REQ_ADDRESS ",Taddress_t); 60 ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS," in_ICACHE_REQ_ADDRESS_ADDRESS",Taddress_t); 61 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS ,"out_ICACHE_REQ_QUEUE_ADDRESS ",Taddress_t); 62 ALLOC0_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t); 63 ALLOC0_SC_SIGNAL(out_EVENT_ADDRESS_VAL ,"out_EVENT_ADDRESS_VAL ",Tcontrol_t); 64 ALLOC0_SC_SIGNAL(out_EVENT_QUEUE_VAL ,"out_EVENT_QUEUE_VAL ",Tcontrol_t); 65 ALLOC0_SC_SIGNAL(out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t); 66 ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_ACK ," in_EVENT_ADDRESS_ACK ",Tcontrol_t); 67 ALLOC0_SC_SIGNAL( in_EVENT_QUEUE_ACK ," in_EVENT_QUEUE_ACK ",Tcontrol_t); 68 68 69 69 /******************************************************** … … 76 76 (*(_Ifetch_unit_Glue->in_NRESET)) (*(in_NRESET)); 77 77 78 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_VAL );79 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_VAL);80 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_VAL );81 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ACK );82 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS_ACK);83 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_QUEUE_ACK );84 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS );85 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_ADDRESS);86 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_ADDRESS );87 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_TYPE );88 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_VAL );89 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ADDRESS_VAL );90 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_QUEUE_VAL );91 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ACK );92 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_ADDRESS_ACK );93 INSTANCE _SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_QUEUE_ACK );78 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_VAL ); 79 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_VAL); 80 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_VAL ); 81 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ACK ); 82 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS_ACK); 83 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_QUEUE_ACK ); 84 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_ADDRESS ); 85 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_ICACHE_REQ_ADDRESS_ADDRESS); 86 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_QUEUE_ADDRESS ); 87 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_ICACHE_REQ_TYPE ); 88 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_VAL ); 89 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ADDRESS_VAL ); 90 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_QUEUE_VAL ); 91 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue,out_EVENT_ACK ); 92 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_ADDRESS_ACK ); 93 INSTANCE0_SC_SIGNAL(_Ifetch_unit_Glue, in_EVENT_QUEUE_ACK ); 94 94 95 95 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_allocation.cpp
r88 r112 48 48 ,IN 49 49 ,SOUTH, 50 "Generalist interface"50 _("Generalist interface") 51 51 #endif 52 52 ); … … 58 58 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC _INTERFACE("icache_req",OUT, WEST, "Instruction Cache request.");60 ALLOC0_INTERFACE_BEGIN("icache_req",OUT, WEST, "Instruction Cache request."); 61 61 62 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_VAL ,"val" ,Tcontrol_t,1); 63 ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_VAL ,"address_val" ,Tcontrol_t,1); 64 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_VAL ,"queue_val" ,Tcontrol_t,1); 65 ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ACK ,"ack" ,Tcontrol_t,1); 66 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS_ACK ,"address_ack" ,Tcontrol_t,1); 67 ALLOC_SIGNAL_IN ( in_ICACHE_REQ_QUEUE_ACK ,"queue_ack" ,Tcontrol_t,1); 68 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t,_param->_size_icache_type); 69 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 70 ALLOC_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_ADDRESS,"address_address",Taddress_t,_param->_size_instruction_address); 71 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_ADDRESS ,"queue_address" ,Taddress_t,_param->_size_instruction_address); 62 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_VAL ,"val" ,Tcontrol_t,1); 63 ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_VAL ,"address_val" ,Tcontrol_t,1); 64 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_VAL ,"queue_val" ,Tcontrol_t,1); 65 ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ACK ,"ack" ,Tcontrol_t,1); 66 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS_ACK ,"address_ack" ,Tcontrol_t,1); 67 ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_QUEUE_ACK ,"queue_ack" ,Tcontrol_t,1); 68 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t,_param->_size_icache_type); 69 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 70 ALLOC0_SIGNAL_IN ( in_ICACHE_REQ_ADDRESS_ADDRESS,"address_address",Taddress_t,_param->_size_instruction_address); 71 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_QUEUE_ADDRESS ,"queue_address" ,Taddress_t,_param->_size_instruction_address); 72 73 ALLOC0_INTERFACE_END(); 72 74 } 73 75 74 76 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 75 77 { 76 ALLOC _INTERFACE("event",IN, EAST, "Event interface.");78 ALLOC0_INTERFACE_BEGIN("event",IN, EAST, _("Event interface.")); 77 79 78 ALLOC_SIGNAL_IN ( in_EVENT_VAL ,"val" ,Tcontrol_t,1); 79 ALLOC_SIGNAL_OUT(out_EVENT_ADDRESS_VAL,"address_val",Tcontrol_t,1); 80 ALLOC_SIGNAL_OUT(out_EVENT_QUEUE_VAL ,"queue_val" ,Tcontrol_t,1); 81 ALLOC_SIGNAL_OUT(out_EVENT_ACK ,"ack" ,Tcontrol_t,1); 82 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_ACK,"address_ack",Tcontrol_t,1); 83 ALLOC_SIGNAL_IN ( in_EVENT_QUEUE_ACK ,"queue_ack" ,Tcontrol_t,1); 80 ALLOC0_SIGNAL_IN ( in_EVENT_VAL ,"val" ,Tcontrol_t,1); 81 ALLOC0_SIGNAL_OUT(out_EVENT_ADDRESS_VAL,"address_val",Tcontrol_t,1); 82 ALLOC0_SIGNAL_OUT(out_EVENT_QUEUE_VAL ,"queue_val" ,Tcontrol_t,1); 83 ALLOC0_SIGNAL_OUT(out_EVENT_ACK ,"ack" ,Tcontrol_t,1); 84 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_ACK,"address_ack",Tcontrol_t,1); 85 ALLOC0_SIGNAL_IN ( in_EVENT_QUEUE_ACK ,"queue_ack" ,Tcontrol_t,1); 86 87 ALLOC0_INTERFACE_END(); 84 88 } 85 89 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/src/Ifetch_unit_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/Ifetch_unit_Glue/include/Ifetch_unit_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 delete out_ICACHE_REQ_VAL;31 delete in_ICACHE_REQ_ADDRESS_VAL;32 delete out_ICACHE_REQ_QUEUE_VAL;33 delete in_ICACHE_REQ_ACK;34 delete out_ICACHE_REQ_ADDRESS_ACK;35 delete in_ICACHE_REQ_QUEUE_ACK;36 delete out_ICACHE_REQ_TYPE;37 delete out_ICACHE_REQ_ADDRESS;38 delete in_ICACHE_REQ_ADDRESS_ADDRESS;39 delete out_ICACHE_REQ_QUEUE_ADDRESS;40 41 delete in_EVENT_VAL;42 delete out_EVENT_ADDRESS_VAL;43 delete out_EVENT_QUEUE_VAL;44 delete out_EVENT_ACK;45 delete in_EVENT_ADDRESS_ACK;46 delete in_EVENT_QUEUE_ACK;31 DELETE0_SIGNAL(out_ICACHE_REQ_VAL ,1); 32 DELETE0_SIGNAL( in_ICACHE_REQ_ADDRESS_VAL ,1); 33 DELETE0_SIGNAL(out_ICACHE_REQ_QUEUE_VAL ,1); 34 DELETE0_SIGNAL( in_ICACHE_REQ_ACK ,1); 35 DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS_ACK ,1); 36 DELETE0_SIGNAL( in_ICACHE_REQ_QUEUE_ACK ,1); 37 DELETE0_SIGNAL(out_ICACHE_REQ_TYPE ,_param->_size_icache_type); 38 DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS ,_param->_size_instruction_address); 39 DELETE0_SIGNAL( in_ICACHE_REQ_ADDRESS_ADDRESS,_param->_size_instruction_address); 40 DELETE0_SIGNAL(out_ICACHE_REQ_QUEUE_ADDRESS ,_param->_size_instruction_address); 41 42 DELETE0_SIGNAL( in_EVENT_VAL ,1); 43 DELETE0_SIGNAL(out_EVENT_ADDRESS_VAL,1); 44 DELETE0_SIGNAL(out_EVENT_QUEUE_VAL ,1); 45 DELETE0_SIGNAL(out_EVENT_ACK ,1); 46 DELETE0_SIGNAL( in_EVENT_ADDRESS_ACK,1); 47 DELETE0_SIGNAL( in_EVENT_QUEUE_ACK ,1); 47 48 } 48 49 49 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 50 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/SelfTest/config.cfg
r85 r112 1 1 Ifetch_unit 2 1 8*2 # _size_queue2 8 16 *2 # _size_queue 3 3 1 8 *2 # _nb_instruction 4 4 1 1 *2 # _size_branch_update_prediction -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/SelfTest/src/test.cpp
r101 r112 66 66 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 67 67 68 ALLOC _SC_SIGNAL(out_ICACHE_REQ_VAL ,"out_ICACHE_REQ_VAL ",Tcontrol_t );69 ALLOC _SC_SIGNAL( in_ICACHE_REQ_ACK ," in_ICACHE_REQ_ACK ",Tcontrol_t );70 //ALLOC _SC_SIGNAL(out_ICACHE_REQ_THREAD_ID ,"out_ICACHE_REQ_THREAD_ID ",Tcontext_t );71 ALLOC _SC_SIGNAL(out_ICACHE_REQ_PACKET_ID ,"out_ICACHE_REQ_PACKET_ID ",Tpacket_t );72 ALLOC _SC_SIGNAL(out_ICACHE_REQ_ADDRESS ,"out_ICACHE_REQ_ADDRESS ",Ticache_instruction_t);73 ALLOC _SC_SIGNAL(out_ICACHE_REQ_TYPE ,"out_ICACHE_REQ_TYPE ",Ticache_type_t );74 ALLOC _SC_SIGNAL( in_ICACHE_RSP_VAL ," in_ICACHE_RSP_VAL ",Tcontrol_t );75 ALLOC _SC_SIGNAL(out_ICACHE_RSP_ACK ,"out_ICACHE_RSP_ACK ",Tcontrol_t );76 //ALLOC _SC_SIGNAL( in_ICACHE_RSP_THREAD_ID ," in_ICACHE_RSP_THREAD_ID ",Tcontext_t );77 ALLOC _SC_SIGNAL( in_ICACHE_RSP_PACKET_ID ," in_ICACHE_RSP_PACKET_ID ",Tpacket_t );68 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_VAL ,"out_ICACHE_REQ_VAL ",Tcontrol_t ); 69 ALLOC0_SC_SIGNAL( in_ICACHE_REQ_ACK ," in_ICACHE_REQ_ACK ",Tcontrol_t ); 70 //ALLOC0_SC_SIGNAL(out_ICACHE_REQ_THREAD_ID ,"out_ICACHE_REQ_THREAD_ID ",Tcontext_t ); 71 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_PACKET_ID ,"out_ICACHE_REQ_PACKET_ID ",Tpacket_t ); 72 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_ADDRESS ,"out_ICACHE_REQ_ADDRESS ",Ticache_instruction_t); 73 ALLOC0_SC_SIGNAL(out_ICACHE_REQ_TYPE ,"out_ICACHE_REQ_TYPE ",Ticache_type_t ); 74 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_VAL ," in_ICACHE_RSP_VAL ",Tcontrol_t ); 75 ALLOC0_SC_SIGNAL(out_ICACHE_RSP_ACK ,"out_ICACHE_RSP_ACK ",Tcontrol_t ); 76 //ALLOC0_SC_SIGNAL( in_ICACHE_RSP_THREAD_ID ," in_ICACHE_RSP_THREAD_ID ",Tcontext_t ); 77 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_PACKET_ID ," in_ICACHE_RSP_PACKET_ID ",Tpacket_t ); 78 78 ALLOC1_SC_SIGNAL( in_ICACHE_RSP_INSTRUCTION ," in_ICACHE_RSP_INSTRUCTION ",Ticache_instruction_t,_param->_nb_instruction); 79 ALLOC _SC_SIGNAL( in_ICACHE_RSP_ERROR ," in_ICACHE_RSP_ERROR ",Ticache_error_t );80 ALLOC _SC_SIGNAL(out_PREDICT_VAL ,"out_PREDICT_VAL ",Tcontrol_t );81 ALLOC _SC_SIGNAL( in_PREDICT_ACK ," in_PREDICT_ACK ",Tcontrol_t );82 ALLOC _SC_SIGNAL(out_PREDICT_PC_PREVIOUS ,"out_PREDICT_PC_PREVIOUS ",Tgeneral_address_t );83 ALLOC _SC_SIGNAL(out_PREDICT_PC_CURRENT ,"out_PREDICT_PC_CURRENT ",Tgeneral_address_t );84 ALLOC _SC_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE ",Tcontrol_t );85 ALLOC _SC_SIGNAL( in_PREDICT_PC_NEXT ," in_PREDICT_PC_NEXT ",Tgeneral_address_t );86 ALLOC _SC_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE ," in_PREDICT_PC_NEXT_IS_DS_TAKE ",Tcontrol_t );79 ALLOC0_SC_SIGNAL( in_ICACHE_RSP_ERROR ," in_ICACHE_RSP_ERROR ",Ticache_error_t ); 80 ALLOC0_SC_SIGNAL(out_PREDICT_VAL ,"out_PREDICT_VAL ",Tcontrol_t ); 81 ALLOC0_SC_SIGNAL( in_PREDICT_ACK ," in_PREDICT_ACK ",Tcontrol_t ); 82 ALLOC0_SC_SIGNAL(out_PREDICT_PC_PREVIOUS ,"out_PREDICT_PC_PREVIOUS ",Tgeneral_address_t ); 83 ALLOC0_SC_SIGNAL(out_PREDICT_PC_CURRENT ,"out_PREDICT_PC_CURRENT ",Tgeneral_address_t ); 84 ALLOC0_SC_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"out_PREDICT_PC_CURRENT_IS_DS_TAKE ",Tcontrol_t ); 85 ALLOC0_SC_SIGNAL( in_PREDICT_PC_NEXT ," in_PREDICT_PC_NEXT ",Tgeneral_address_t ); 86 ALLOC0_SC_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE ," in_PREDICT_PC_NEXT_IS_DS_TAKE ",Tcontrol_t ); 87 87 ALLOC1_SC_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE ," in_PREDICT_INSTRUCTION_ENABLE ",Tcontrol_t ,_param->_nb_instruction); 88 ALLOC _SC_SIGNAL( in_PREDICT_INST_IFETCH_PTR ," in_PREDICT_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t );89 ALLOC _SC_SIGNAL( in_PREDICT_BRANCH_STATE ," in_PREDICT_BRANCH_STATE ",Tbranch_state_t );90 ALLOC _SC_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t );88 ALLOC0_SC_SIGNAL( in_PREDICT_INST_IFETCH_PTR ," in_PREDICT_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t ); 89 ALLOC0_SC_SIGNAL( in_PREDICT_BRANCH_STATE ," in_PREDICT_BRANCH_STATE ",Tbranch_state_t ); 90 ALLOC0_SC_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID," in_PREDICT_BRANCH_UPDATE_PREDICTION_ID",Tprediction_ptr_t ); 91 91 ALLOC1_SC_SIGNAL(out_DECOD_VAL ,"out_DECOD_VAL ",Tcontrol_t ,_param->_nb_instruction); 92 92 ALLOC1_SC_SIGNAL( in_DECOD_ACK ," in_DECOD_ACK ",Tcontrol_t ,_param->_nb_instruction); 93 93 ALLOC1_SC_SIGNAL(out_DECOD_INSTRUCTION ,"out_DECOD_INSTRUCTION ",Tinstruction_t ,_param->_nb_instruction); 94 //ALLOC _SC_SIGNAL(out_DECOD_CONTEXT_ID ,"out_DECOD_CONTEXT_ID ",Tcontext_t );95 ALLOC _SC_SIGNAL(out_DECOD_ADDRESS ,"out_DECOD_ADDRESS ",Tgeneral_address_t );96 ALLOC _SC_SIGNAL(out_DECOD_INST_IFETCH_PTR ,"out_DECOD_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t );97 ALLOC _SC_SIGNAL(out_DECOD_BRANCH_STATE ,"out_DECOD_BRANCH_STATE ",Tbranch_state_t );98 ALLOC _SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID ",Tprediction_ptr_t );99 ALLOC _SC_SIGNAL(out_DECOD_EXCEPTION ,"out_DECOD_EXCEPTION ",Texception_t );100 ALLOC _SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t );101 ALLOC _SC_SIGNAL(out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t );102 ALLOC _SC_SIGNAL( in_EVENT_ADDRESS ," in_EVENT_ADDRESS ",Tgeneral_address_t );103 ALLOC _SC_SIGNAL( in_EVENT_ADDRESS_NEXT ," in_EVENT_ADDRESS_NEXT ",Tgeneral_address_t );104 ALLOC _SC_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL ," in_EVENT_ADDRESS_NEXT_VAL ",Tcontrol_t );105 ALLOC _SC_SIGNAL( in_EVENT_IS_DS_TAKE ," in_EVENT_IS_DS_TAKE ",Tcontrol_t );94 //ALLOC0_SC_SIGNAL(out_DECOD_CONTEXT_ID ,"out_DECOD_CONTEXT_ID ",Tcontext_t ); 95 ALLOC0_SC_SIGNAL(out_DECOD_ADDRESS ,"out_DECOD_ADDRESS ",Tgeneral_address_t ); 96 ALLOC0_SC_SIGNAL(out_DECOD_INST_IFETCH_PTR ,"out_DECOD_INST_IFETCH_PTR ",Tinst_ifetch_ptr_t ); 97 ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_STATE ,"out_DECOD_BRANCH_STATE ",Tbranch_state_t ); 98 ALLOC0_SC_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID ,"out_DECOD_BRANCH_UPDATE_PREDICTION_ID ",Tprediction_ptr_t ); 99 ALLOC0_SC_SIGNAL(out_DECOD_EXCEPTION ,"out_DECOD_EXCEPTION ",Texception_t ); 100 ALLOC0_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t ); 101 ALLOC0_SC_SIGNAL(out_EVENT_ACK ,"out_EVENT_ACK ",Tcontrol_t ); 102 ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS ," in_EVENT_ADDRESS ",Tgeneral_address_t ); 103 ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_NEXT ," in_EVENT_ADDRESS_NEXT ",Tgeneral_address_t ); 104 ALLOC0_SC_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL ," in_EVENT_ADDRESS_NEXT_VAL ",Tcontrol_t ); 105 ALLOC0_SC_SIGNAL( in_EVENT_IS_DS_TAKE ," in_EVENT_IS_DS_TAKE ",Tcontrol_t ); 106 106 107 107 /******************************************************** … … 114 114 (*(_Ifetch_unit->in_NRESET)) (*(in_NRESET)); 115 115 116 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_VAL );117 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_ICACHE_REQ_ACK );118 //INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_THREAD_ID );116 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_VAL ); 117 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_REQ_ACK ); 118 //INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_THREAD_ID ); 119 119 if (_param->_have_port_ifetch_queue_ptr) 120 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_PACKET_ID );121 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_ADDRESS );122 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_TYPE );123 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_VAL );124 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_ICACHE_RSP_ACK );125 //INSTANCE _SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_THREAD_ID );120 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_PACKET_ID ); 121 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_ADDRESS ); 122 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_REQ_TYPE ); 123 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_VAL ); 124 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_ICACHE_RSP_ACK ); 125 //INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_THREAD_ID ); 126 126 if (_param->_have_port_ifetch_queue_ptr) 127 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_PACKET_ID );127 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_PACKET_ID ); 128 128 INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_INSTRUCTION ,_param->_nb_instruction); 129 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_ERROR );130 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_PREDICT_VAL );131 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_ACK );132 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_PREVIOUS );133 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT );134 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT_IS_DS_TAKE );135 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT );136 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT_IS_DS_TAKE );129 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_ICACHE_RSP_ERROR ); 130 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_VAL ); 131 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_ACK ); 132 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_PREVIOUS ); 133 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT ); 134 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_PREDICT_PC_CURRENT_IS_DS_TAKE ); 135 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT ); 136 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_PC_NEXT_IS_DS_TAKE ); 137 137 INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_PREDICT_INSTRUCTION_ENABLE ,_param->_nb_instruction); 138 138 if (_param->_have_port_inst_ifetch_ptr) 139 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_INST_IFETCH_PTR );140 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_STATE );139 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_INST_IFETCH_PTR ); 140 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_STATE ); 141 141 if (_param->_have_port_depth) 142 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID);142 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_PREDICT_BRANCH_UPDATE_PREDICTION_ID); 143 143 INSTANCE1_SC_SIGNAL(_Ifetch_unit,out_DECOD_VAL ,_param->_nb_instruction); 144 144 INSTANCE1_SC_SIGNAL(_Ifetch_unit, in_DECOD_ACK ,_param->_nb_instruction); 145 145 INSTANCE1_SC_SIGNAL(_Ifetch_unit,out_DECOD_INSTRUCTION ,_param->_nb_instruction); 146 //INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_CONTEXT_ID );147 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_ADDRESS );146 //INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_CONTEXT_ID ); 147 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_ADDRESS ); 148 148 if (_param->_have_port_inst_ifetch_ptr) 149 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_INST_IFETCH_PTR );150 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_STATE );149 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_INST_IFETCH_PTR ); 150 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_STATE ); 151 151 if (_param->_have_port_depth) 152 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_UPDATE_PREDICTION_ID );153 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_DECOD_EXCEPTION );154 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_EVENT_VAL );155 INSTANCE _SC_SIGNAL(_Ifetch_unit,out_EVENT_ACK );156 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS );157 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT );158 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT_VAL );159 INSTANCE _SC_SIGNAL(_Ifetch_unit, in_EVENT_IS_DS_TAKE );152 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_BRANCH_UPDATE_PREDICTION_ID ); 153 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_DECOD_EXCEPTION ); 154 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_VAL ); 155 INSTANCE0_SC_SIGNAL(_Ifetch_unit,out_EVENT_ACK ); 156 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS ); 157 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT ); 158 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_ADDRESS_NEXT_VAL ); 159 INSTANCE0_SC_SIGNAL(_Ifetch_unit, in_EVENT_IS_DS_TAKE ); 160 160 161 161 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit_allocation.cpp
r88 r112 47 47 ,IN 48 48 ,SOUTH, 49 "Generalist interface"49 _("Generalist interface") 50 50 #endif 51 51 ); … … 57 57 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC_INTERFACE("icache_req",OUT, WEST, _("Instruction cache request.")); 60 61 ALLOC_VALACK_OUT(out_ICACHE_REQ_VAL ,VAL); 62 ALLOC_VALACK_IN ( in_ICACHE_REQ_ACK ,ACK); 63 //ALLOC_SIGNAL_OUT(out_ICACHE_REQ_THREAD_ID,"thread_id",Tcontext_t ,_param->_size_context_id ); 64 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_PACKET_ID,"packet_id",Tpacket_t ,_param->_size_ifetch_queue_ptr ); 65 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_instruction_t,_param->_size_instruction_address ); 66 ALLOC_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type); 59 ALLOC0_INTERFACE_BEGIN("icache_req",OUT, WEST, _("Instruction cache request.")); 60 61 ALLOC0_VALACK_OUT(out_ICACHE_REQ_VAL ,VAL); 62 ALLOC0_VALACK_IN ( in_ICACHE_REQ_ACK ,ACK); 63 //ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_THREAD_ID,"thread_id",Tcontext_t ,_param->_size_context_id ); 64 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_PACKET_ID,"packet_id",Tpacket_t ,_param->_size_ifetch_queue_ptr ); 65 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_instruction_t,_param->_size_instruction_address ); 66 ALLOC0_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type); 67 68 ALLOC0_INTERFACE_END(); 67 69 } 68 70 69 71 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 72 { 71 ALLOC_INTERFACE("icache_rsp",IN , WEST, _("Instruction cache respons.")); 72 73 ALLOC_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); 74 ALLOC_VALACK_OUT (out_ICACHE_RSP_ACK ,ACK); 75 //ALLOC_SIGNAL_IN ( in_ICACHE_RSP_THREAD_ID ,"thread_id" ,Tcontext_t ,_param->_size_context_id ); 76 ALLOC_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_ifetch_queue_ptr ); 77 ALLOC_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error); 78 } 79 { 80 ALLOC1_INTERFACE("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_instruction); 73 ALLOC0_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons.")); 74 75 ALLOC0_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); 76 ALLOC0_VALACK_OUT (out_ICACHE_RSP_ACK ,ACK); 77 //ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_THREAD_ID ,"thread_id" ,Tcontext_t ,_param->_size_context_id ); 78 ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_ifetch_queue_ptr ); 79 ALLOC0_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error); 80 81 ALLOC0_INTERFACE_END(); 82 } 83 { 84 ALLOC1_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_instruction); 81 85 82 86 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION,"instruction",Ticache_instruction_t,_param->_size_instruction ); 87 88 ALLOC1_INTERFACE_END(_param->_nb_instruction); 83 89 } 84 90 85 91 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 92 { 87 ALLOC_INTERFACE("predict",OUT, NORTH, _("Predict the next pc.")); 88 89 ALLOC_VALACK_OUT (out_PREDICT_VAL ,VAL); 90 ALLOC_VALACK_IN ( in_PREDICT_ACK ,ACK); 91 ALLOC_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS ,"pc_previous" ,Tgeneral_address_t,_param->_size_instruction_address); 92 ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT ,"pc_current" ,Tgeneral_address_t,_param->_size_instruction_address); 93 ALLOC_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"pc_current_is_ds_take" ,Tcontrol_t ,1); 94 ALLOC_SIGNAL_IN ( in_PREDICT_PC_NEXT ,"pc_next" ,Tgeneral_address_t,_param->_size_instruction_address); 95 ALLOC_SIGNAL_IN ( in_PREDICT_PC_NEXT_IS_DS_TAKE ,"pc_next_is_ds_take" ,Tcontrol_t ,1); 96 ALLOC_SIGNAL_IN ( in_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 97 ALLOC_SIGNAL_IN ( in_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 98 ALLOC_SIGNAL_IN ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 99 } 100 { 101 ALLOC1_INTERFACE("predict",IN , NORTH, _("Predict the next pc."),_param->_nb_instruction); 93 ALLOC0_INTERFACE_BEGIN("predict",OUT, NORTH, _("Predict the next pc.")); 94 95 ALLOC0_VALACK_OUT (out_PREDICT_VAL ,VAL); 96 ALLOC0_VALACK_IN ( in_PREDICT_ACK ,ACK); 97 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_PREVIOUS ,"pc_previous" ,Tgeneral_address_t,_param->_size_instruction_address); 98 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT ,"pc_current" ,Tgeneral_address_t,_param->_size_instruction_address); 99 ALLOC0_SIGNAL_OUT (out_PREDICT_PC_CURRENT_IS_DS_TAKE ,"pc_current_is_ds_take" ,Tcontrol_t ,1); 100 ALLOC0_SIGNAL_IN ( in_PREDICT_PC_NEXT ,"pc_next" ,Tgeneral_address_t,_param->_size_instruction_address); 101 ALLOC0_SIGNAL_IN ( in_PREDICT_PC_NEXT_IS_DS_TAKE ,"pc_next_is_ds_take" ,Tcontrol_t ,1); 102 ALLOC0_SIGNAL_IN ( in_PREDICT_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 103 ALLOC0_SIGNAL_IN ( in_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 104 ALLOC0_SIGNAL_IN ( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 105 106 ALLOC0_INTERFACE_END(); 107 } 108 { 109 ALLOC1_INTERFACE_BEGIN("predict",IN , NORTH, _("Predict the next pc."),_param->_nb_instruction); 102 110 103 111 ALLOC1_SIGNAL_IN ( in_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1); 112 113 ALLOC1_INTERFACE_END(_param->_nb_instruction); 104 114 } 105 115 106 116 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 107 117 { 108 ALLOC_INTERFACE("decod",OUT , EAST, _("Send bundle to the decod unit.")); 109 110 //ALLOC_SIGNAL_OUT (out_DECOD_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 111 ALLOC_SIGNAL_OUT (out_DECOD_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 112 ALLOC_SIGNAL_OUT (out_DECOD_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 113 ALLOC_SIGNAL_OUT (out_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 114 ALLOC_SIGNAL_OUT (out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 115 ALLOC_SIGNAL_OUT (out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 116 } 117 { 118 ALLOC1_INTERFACE("decod",OUT , EAST, _("Send bundle to the decod unit."),_param->_nb_instruction); 118 ALLOC0_INTERFACE_BEGIN("decod",OUT , EAST, _("Send bundle to the decod unit.")); 119 120 //ALLOC0_SIGNAL_OUT (out_DECOD_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 121 ALLOC0_SIGNAL_OUT (out_DECOD_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 122 ALLOC0_SIGNAL_OUT (out_DECOD_INST_IFETCH_PTR ,"inst_ifetch_ptr" ,Tinst_ifetch_ptr_t,_param->_size_inst_ifetch_ptr); 123 ALLOC0_SIGNAL_OUT (out_DECOD_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 124 ALLOC0_SIGNAL_OUT (out_DECOD_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 125 ALLOC0_SIGNAL_OUT (out_DECOD_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception_ifetch); 126 127 ALLOC0_INTERFACE_END(); 128 } 129 { 130 ALLOC1_INTERFACE_BEGIN("decod",OUT , EAST, _("Send bundle to the decod unit."),_param->_nb_instruction); 119 131 120 132 ALLOC1_VALACK_OUT(out_DECOD_VAL ,VAL); 121 133 ALLOC1_VALACK_IN ( in_DECOD_ACK ,ACK); 122 134 ALLOC1_SIGNAL_OUT(out_DECOD_INSTRUCTION ,"instruction" ,Tinstruction_t ,_param->_size_instruction); 135 136 ALLOC1_INTERFACE_END(_param->_nb_instruction); 123 137 } 124 138 125 139 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 140 { 127 ALLOC_INTERFACE("event",IN , NORTH, _("Event interface.")); 128 129 ALLOC_VALACK_IN ( in_EVENT_VAL ,VAL); 130 ALLOC_VALACK_OUT(out_EVENT_ACK ,ACK); 131 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 132 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t,_param->_size_instruction_address); 133 ALLOC_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL ,"address_next_val",Tcontrol_t,1); 134 ALLOC_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"is_ds_take" ,Tcontrol_t,1); 141 ALLOC0_INTERFACE_BEGIN("event",IN , NORTH, _("Event interface.")); 142 143 ALLOC0_VALACK_IN ( in_EVENT_VAL ,VAL); 144 ALLOC0_VALACK_OUT(out_EVENT_ACK ,ACK); 145 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS ,"address" ,Tgeneral_address_t,_param->_size_instruction_address); 146 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT ,"address_next" ,Tgeneral_address_t,_param->_size_instruction_address); 147 ALLOC0_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL ,"address_next_val",Tcontrol_t,1); 148 ALLOC0_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"is_ds_take" ,Tcontrol_t,1); 149 150 ALLOC0_INTERFACE_END(); 135 151 } 136 152 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/src/Ifetch_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Ifetch_unit/include/Ifetch_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 27 28 delete in_NRESET; 28 29 29 delete out_ICACHE_REQ_VAL ; 30 delete in_ICACHE_REQ_ACK ; 31 //delete out_ICACHE_REQ_THREAD_ID ; 32 if (_param->_have_port_ifetch_queue_ptr) 33 delete out_ICACHE_REQ_PACKET_ID ; 34 delete out_ICACHE_REQ_ADDRESS ; 35 delete out_ICACHE_REQ_TYPE ; 30 DELETE0_SIGNAL(out_ICACHE_REQ_VAL ,1); 31 DELETE0_SIGNAL( in_ICACHE_REQ_ACK ,1); 32 // DELETE0_SIGNAL(out_ICACHE_REQ_THREAD_ID,_param->_size_context_id ); 33 DELETE0_SIGNAL(out_ICACHE_REQ_PACKET_ID,_param->_size_ifetch_queue_ptr ); 34 DELETE0_SIGNAL(out_ICACHE_REQ_ADDRESS ,_param->_size_instruction_address ); 35 DELETE0_SIGNAL(out_ICACHE_REQ_TYPE ,_param->_size_icache_type); 36 36 37 delete in_ICACHE_RSP_VAL ; 38 delete out_ICACHE_RSP_ACK ; 39 //delete in_ICACHE_RSP_THREAD_ID ; 40 if (_param->_have_port_ifetch_queue_ptr) 41 delete in_ICACHE_RSP_PACKET_ID ; 42 delete [] in_ICACHE_RSP_INSTRUCTION ; 43 delete in_ICACHE_RSP_ERROR ; 37 DELETE0_SIGNAL( in_ICACHE_RSP_VAL ,1); 38 DELETE0_SIGNAL(out_ICACHE_RSP_ACK ,1); 39 // DELETE0_SIGNAL( in_ICACHE_RSP_THREAD_ID ,_param->_size_context_id ); 40 DELETE0_SIGNAL( in_ICACHE_RSP_PACKET_ID ,_param->_size_ifetch_queue_ptr ); 41 DELETE0_SIGNAL( in_ICACHE_RSP_ERROR ,_param->_size_icache_error); 42 DELETE1_SIGNAL( in_ICACHE_RSP_INSTRUCTION,_param->_size_instruction,_param->_nb_instruction); 44 43 45 delete out_PREDICT_VAL ; 46 delete in_PREDICT_ACK ; 47 delete out_PREDICT_PC_PREVIOUS ; 48 delete out_PREDICT_PC_CURRENT ; 49 delete out_PREDICT_PC_CURRENT_IS_DS_TAKE ; 50 delete in_PREDICT_PC_NEXT ; 51 delete in_PREDICT_PC_NEXT_IS_DS_TAKE ; 52 delete [] in_PREDICT_INSTRUCTION_ENABLE ; 53 if (_param->_have_port_inst_ifetch_ptr) 54 delete in_PREDICT_INST_IFETCH_PTR ; 55 delete in_PREDICT_BRANCH_STATE ; 56 if (_param->_have_port_depth) 57 delete in_PREDICT_BRANCH_UPDATE_PREDICTION_ID ; 44 DELETE0_SIGNAL(out_PREDICT_VAL ,1); 45 DELETE0_SIGNAL( in_PREDICT_ACK ,1); 46 DELETE0_SIGNAL(out_PREDICT_PC_PREVIOUS ,_param->_size_instruction_address); 47 DELETE0_SIGNAL(out_PREDICT_PC_CURRENT ,_param->_size_instruction_address); 48 DELETE0_SIGNAL(out_PREDICT_PC_CURRENT_IS_DS_TAKE ,1); 49 DELETE0_SIGNAL( in_PREDICT_PC_NEXT ,_param->_size_instruction_address); 50 DELETE0_SIGNAL( in_PREDICT_PC_NEXT_IS_DS_TAKE ,1); 51 DELETE0_SIGNAL( in_PREDICT_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr); 52 DELETE0_SIGNAL( in_PREDICT_BRANCH_STATE ,_param->_size_branch_state); 53 DELETE0_SIGNAL( in_PREDICT_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth); 54 DELETE1_SIGNAL( in_PREDICT_INSTRUCTION_ENABLE ,1,_param->_nb_instruction); 58 55 59 delete [] out_DECOD_VAL ; 60 delete [] in_DECOD_ACK ; 61 delete [] out_DECOD_INSTRUCTION ; 62 //delete out_DECOD_CONTEXT_ID ; 63 delete out_DECOD_ADDRESS ; 64 if (_param->_have_port_inst_ifetch_ptr) 65 delete out_DECOD_INST_IFETCH_PTR ; 66 delete out_DECOD_BRANCH_STATE ; 67 if (_param->_have_port_depth) 68 delete out_DECOD_BRANCH_UPDATE_PREDICTION_ID ; 69 delete out_DECOD_EXCEPTION ; 56 // DELETE0_SIGNAL(out_DECOD_CONTEXT_ID ,_param->_size_context_id); 57 DELETE0_SIGNAL(out_DECOD_ADDRESS ,_param->_size_instruction_address); 58 DELETE0_SIGNAL(out_DECOD_INST_IFETCH_PTR ,_param->_size_inst_ifetch_ptr); 59 DELETE0_SIGNAL(out_DECOD_BRANCH_STATE ,_param->_size_branch_state); 60 DELETE0_SIGNAL(out_DECOD_BRANCH_UPDATE_PREDICTION_ID,_param->_size_depth); 61 DELETE0_SIGNAL(out_DECOD_EXCEPTION ,_param->_size_exception_ifetch); 62 DELETE1_SIGNAL(out_DECOD_VAL ,1,_param->_nb_instruction); 63 DELETE1_SIGNAL( in_DECOD_ACK ,1,_param->_nb_instruction); 64 DELETE1_SIGNAL(out_DECOD_INSTRUCTION ,_param->_size_instruction,_param->_nb_instruction); 70 65 71 delete in_EVENT_VAL;72 delete out_EVENT_ACK;73 delete in_EVENT_ADDRESS;74 delete in_EVENT_ADDRESS_NEXT;75 delete in_EVENT_ADDRESS_NEXT_VAL;76 delete in_EVENT_IS_DS_TAKE;66 DELETE0_SIGNAL( in_EVENT_VAL ,1); 67 DELETE0_SIGNAL(out_EVENT_ACK ,1); 68 DELETE0_SIGNAL( in_EVENT_ADDRESS ,_param->_size_instruction_address); 69 DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT ,_param->_size_instruction_address); 70 DELETE0_SIGNAL( in_EVENT_ADDRESS_NEXT_VAL ,1); 71 DELETE0_SIGNAL( in_EVENT_IS_DS_TAKE ,1); 77 72 } 73 78 74 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 75 delete _component_address_management; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 60 60 { 61 61 { 62 ALLOC1_INTERFACE ("predict", IN, WEST, "predict",_param->_nb_inst_predict);62 ALLOC1_INTERFACE_BEGIN("predict", IN, WEST, _("predict"),_param->_nb_inst_predict); 63 63 64 64 ALLOC1_SIGNAL_IN ( in_PREDICT_VAL , "val" ,Tcontrol_t , 1); … … 84 84 ALLOC1_SIGNAL_IN ( in_PREDICT_VICTIM_VICTIM , "victim_victim" ,Tptr_t , _param->_size_victim); 85 85 } 86 87 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 86 88 } 87 89 { 88 ALLOC2_INTERFACE ("predict", IN, WEST, "predict",_param->_nb_inst_predict, _param->_associativity);90 ALLOC2_INTERFACE_BEGIN("predict", IN, WEST, _("predict"),_param->_nb_inst_predict, _param->_associativity); 89 91 90 92 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_HIT ,"register_hit" ,Tcontrol_t ,1); … … 94 96 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_LAST_TAKE ,"register_last_take" ,Tcontrol_t ,1); 95 97 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_IS_ACCURATE ,"register_is_accurate" ,Tcontrol_t ,1); 98 99 ALLOC2_INTERFACE_END(_param->_nb_inst_predict, _param->_associativity); 96 100 } 97 101 } … … 99 103 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 100 104 { 101 ALLOC1_INTERFACE ("decod", IN, WEST, "decod",_param->_nb_inst_decod);105 ALLOC1_INTERFACE_BEGIN("decod", IN, WEST, _("decod"),_param->_nb_inst_decod); 102 106 103 107 ALLOC1_SIGNAL_IN ( in_DECOD_VAL ,"val" ,Tcontrol_t ,1); … … 115 119 ALLOC1_SIGNAL_OUT(out_DECOD_VICTIM_ADDRESS,"victim_address",Tgeneral_data_t,_param->_size_victim_address); 116 120 } 121 122 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 117 123 } 118 124 119 125 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 126 { 121 ALLOC1_INTERFACE ("update", IN, WEST, "update",_param->_nb_inst_update);127 ALLOC1_INTERFACE_BEGIN("update", IN, WEST, _("update"),_param->_nb_inst_update); 122 128 123 129 ALLOC1_SIGNAL_IN ( in_UPDATE_VAL ,"val" ,Tcontrol_t ,1); … … 135 141 ALLOC1_SIGNAL_OUT(out_UPDATE_VICTIM_ADDRESS,"victim_address",Tgeneral_data_t,_param->_size_victim_address); 136 142 } 143 144 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 137 145 } 138 146 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Branch_Target_Buffer_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/include/Branch_Target_Buffer_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_PREDICT_VAL ; 32 delete [] out_PREDICT_ACK ; 33 delete [] out_PREDICT_HIT ; 34 delete [] out_PREDICT_ADDRESS_SRC ; 35 delete [] out_PREDICT_ADDRESS_DEST ; 36 delete [] out_PREDICT_CONDITION ; 37 delete [] out_PREDICT_LAST_TAKE ; 38 delete [] out_PREDICT_IS_ACCURATE ; 39 delete [] out_PREDICT_REGISTER_VAL ; 40 delete [] in_PREDICT_REGISTER_ACK ; 41 delete [] in_PREDICT_REGISTER_HIT ; 42 delete [] in_PREDICT_REGISTER_ADDRESS_SRC ; 43 delete [] in_PREDICT_REGISTER_ADDRESS_DEST ; 44 delete [] in_PREDICT_REGISTER_CONDITION ; 45 delete [] in_PREDICT_REGISTER_LAST_TAKE ; 46 delete [] in_PREDICT_REGISTER_IS_ACCURATE ; 32 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict, 1); 33 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict, 1); 34 DELETE1_SIGNAL(out_PREDICT_HIT ,_param->_nb_inst_predict, 1); 35 DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC ,_param->_nb_inst_predict, _param->_size_instruction_address); 36 DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST ,_param->_nb_inst_predict, _param->_size_instruction_address); 37 DELETE1_SIGNAL(out_PREDICT_CONDITION ,_param->_nb_inst_predict, _param->_size_branch_condition); 38 DELETE1_SIGNAL(out_PREDICT_LAST_TAKE ,_param->_nb_inst_predict, 1); 39 DELETE1_SIGNAL(out_PREDICT_IS_ACCURATE ,_param->_nb_inst_predict, 1); 40 DELETE1_SIGNAL(out_PREDICT_REGISTER_VAL ,_param->_nb_inst_predict, 1); 41 DELETE1_SIGNAL( in_PREDICT_REGISTER_ACK ,_param->_nb_inst_predict, 1); 47 42 if (_param->_have_port_victim) 48 43 { 49 delete [] in_PREDICT_SORT_VAL;50 delete [] in_PREDICT_SORT_INDEX;51 delete [] out_PREDICT_VICTIM_VAL ; 52 delete [] in_PREDICT_VICTIM_ACK;53 delete [] out_PREDICT_VICTIM_HIT;54 if (not _param->_is_full_associative)55 delete [] out_PREDICT_VICTIM_ADDRESS;56 delete [] out_PREDICT_VICTIM_INDEX;57 delete [] in_PREDICT_VICTIM_VICTIM;44 DELETE1_SIGNAL( in_PREDICT_SORT_VAL ,_param->_nb_inst_predict,1); 45 DELETE1_SIGNAL( in_PREDICT_SORT_INDEX ,_param->_nb_inst_predict,_param->_size_victim); 46 47 DELETE1_SIGNAL(out_PREDICT_VICTIM_VAL ,_param->_nb_inst_predict, 1); 48 DELETE1_SIGNAL( in_PREDICT_VICTIM_ACK ,_param->_nb_inst_predict, 1); 49 DELETE1_SIGNAL(out_PREDICT_VICTIM_HIT ,_param->_nb_inst_predict, 1); 50 DELETE1_SIGNAL(out_PREDICT_VICTIM_ADDRESS,_param->_nb_inst_predict, _param->_size_victim_address); 51 DELETE1_SIGNAL(out_PREDICT_VICTIM_INDEX ,_param->_nb_inst_predict, _param->_size_victim); 52 DELETE1_SIGNAL( in_PREDICT_VICTIM_VICTIM ,_param->_nb_inst_predict, _param->_size_victim); 58 53 } 59 delete [] in_DECOD_VAL ; 60 delete [] out_DECOD_ACK ; 61 if (not _param->_is_full_associative) 62 delete [] in_DECOD_ADDRESS_SRC ; 63 delete [] out_DECOD_REGISTER_VAL ; 64 delete [] in_DECOD_REGISTER_ACK ; 65 if (_param->_have_port_victim) 66 { 67 delete [] out_DECOD_VICTIM_VAL ; 68 delete [] in_DECOD_VICTIM_ACK ; 69 if (not _param->_is_full_associative) 70 delete [] out_DECOD_VICTIM_ADDRESS ; 71 } 72 delete [] in_UPDATE_VAL ; 73 delete [] out_UPDATE_ACK ; 74 if (not _param->_is_full_associative) 75 delete [] in_UPDATE_ADDRESS_SRC ; 76 delete [] out_UPDATE_REGISTER_VAL ; 77 delete [] in_UPDATE_REGISTER_ACK ; 78 if (_param->_have_port_victim) 79 { 80 delete [] out_UPDATE_VICTIM_VAL ; 81 delete [] in_UPDATE_VICTIM_ACK ; 82 if (not _param->_is_full_associative) 83 delete [] out_UPDATE_VICTIM_ADDRESS ; 84 } 54 55 DELETE2_SIGNAL( in_PREDICT_REGISTER_HIT ,_param->_nb_inst_predict, _param->_associativity,1); 56 DELETE2_SIGNAL( in_PREDICT_REGISTER_ADDRESS_SRC ,_param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address); 57 DELETE2_SIGNAL( in_PREDICT_REGISTER_ADDRESS_DEST,_param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address); 58 DELETE2_SIGNAL( in_PREDICT_REGISTER_CONDITION ,_param->_nb_inst_predict, _param->_associativity,_param->_size_branch_condition); 59 DELETE2_SIGNAL( in_PREDICT_REGISTER_LAST_TAKE ,_param->_nb_inst_predict, _param->_associativity,1); 60 DELETE2_SIGNAL( in_PREDICT_REGISTER_IS_ACCURATE ,_param->_nb_inst_predict, _param->_associativity,1); 61 62 DELETE1_SIGNAL( in_DECOD_VAL ,_param->_nb_inst_decod,1); 63 DELETE1_SIGNAL(out_DECOD_ACK ,_param->_nb_inst_decod,1); 64 if (not _param->_is_full_associative) 65 DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC ,_param->_nb_inst_decod,_param->_size_instruction_address); 66 67 DELETE1_SIGNAL(out_DECOD_REGISTER_VAL ,_param->_nb_inst_decod,1); 68 DELETE1_SIGNAL( in_DECOD_REGISTER_ACK ,_param->_nb_inst_decod,1); 69 if (_param->_have_port_victim) 70 { 71 DELETE1_SIGNAL(out_DECOD_VICTIM_VAL ,_param->_nb_inst_decod,1); 72 DELETE1_SIGNAL( in_DECOD_VICTIM_ACK ,_param->_nb_inst_decod,1); 73 DELETE1_SIGNAL(out_DECOD_VICTIM_ADDRESS,_param->_nb_inst_decod,_param->_size_victim_address); 74 } 75 76 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 77 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 78 if (not _param->_is_full_associative) 79 DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC ,_param->_nb_inst_update,_param->_size_instruction_address); 80 DELETE1_SIGNAL(out_UPDATE_REGISTER_VAL ,_param->_nb_inst_update,1); 81 DELETE1_SIGNAL( in_UPDATE_REGISTER_ACK ,_param->_nb_inst_update,1); 82 if (_param->_have_port_victim) 83 { 84 DELETE1_SIGNAL(out_UPDATE_VICTIM_VAL ,_param->_nb_inst_update,1); 85 DELETE1_SIGNAL( in_UPDATE_VICTIM_ACK ,_param->_nb_inst_update,1); 86 DELETE1_SIGNAL(out_UPDATE_VICTIM_ADDRESS,_param->_nb_inst_update,_param->_size_victim_address); 87 } 88 85 89 } 86 90 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 59 59 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("predict", IN, SOUTH, "Compute next pc.", _param->_nb_inst_predict);61 ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Compute next pc."), _param->_nb_inst_predict); 62 62 63 63 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 66 66 ALLOC1_SIGNAL_IN ( in_PREDICT_ADDRESS ,"address" ,Tgeneral_data_t ,_param->_size_instruction_address); 67 67 68 { 69 ALLOC2_INTERFACE("predict", OUT, SOUTH, "Compute next pc.", _param->_nb_inst_predict, _param->_associativity); 70 71 ALLOC2_SIGNAL_OUT(out_PREDICT_HIT ,"hit" ,Tcontrol_t ,1); 72 ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t ,_param->_size_instruction_address); 73 ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST,"address_dest",Tgeneral_data_t ,_param->_size_instruction_address); 74 ALLOC2_SIGNAL_OUT(out_PREDICT_CONDITION ,"condition" ,Tbranch_condition_t,_param->_size_branch_state); 75 ALLOC2_SIGNAL_OUT(out_PREDICT_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 76 ALLOC2_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 77 } 68 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 69 } 70 { 71 ALLOC2_INTERFACE_BEGIN("predict", OUT, SOUTH, _("Compute next pc."), _param->_nb_inst_predict, _param->_associativity); 72 73 ALLOC2_SIGNAL_OUT(out_PREDICT_HIT ,"hit" ,Tcontrol_t ,1); 74 ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t ,_param->_size_instruction_address); 75 ALLOC2_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST,"address_dest",Tgeneral_data_t ,_param->_size_instruction_address); 76 ALLOC2_SIGNAL_OUT(out_PREDICT_CONDITION ,"condition" ,Tbranch_condition_t,_param->_size_branch_state); 77 ALLOC2_SIGNAL_OUT(out_PREDICT_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 78 ALLOC2_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 79 80 ALLOC2_INTERFACE_END(_param->_nb_inst_predict, _param->_associativity); 78 81 } 79 82 80 83 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 84 { 82 ALLOC1_INTERFACE ("decod", IN, SOUTH, "decod instruction", _param->_nb_inst_decod);85 ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("decod instruction"), _param->_nb_inst_decod); 83 86 84 87 ALLOC1_VALACK_IN ( in_DECOD_VAL ,VAL); … … 97 100 ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 98 101 ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 102 103 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 99 104 } 100 105 101 106 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 102 107 { 103 ALLOC1_INTERFACE ("update", IN, SOUTH, "update instruction", _param->_nb_inst_update);108 ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update instruction"), _param->_nb_inst_update); 104 109 105 110 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); … … 117 122 ALLOC1_SIGNAL_IN ( in_UPDATE_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 118 123 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 124 125 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 119 126 } 120 127 … … 122 129 { 123 130 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 124 reg_BTB = new btb_entry_t * [_param->_size_bank]; 125 for (uint32_t i=0; i<_param->_size_bank; i++) 126 reg_BTB [i] = new btb_entry_t [_param->_associativity]; 131 ALLOC2(reg_BTB,btb_entry_t,_param->_size_bank,_param->_associativity); 127 132 128 internal_DECOD_ACK = new Tcontrol_t [_param->_nb_inst_decod];129 internal_DECOD_HIT = new Tcontrol_t [_param->_nb_inst_decod];130 internal_DECOD_NUM_BANK = new uint32_t [_param->_nb_inst_decod];131 internal_DECOD_NUM_ENTRY = new uint32_t [_param->_nb_inst_decod];133 ALLOC1(internal_DECOD_ACK ,Tcontrol_t,_param->_nb_inst_decod ); 134 ALLOC1(internal_DECOD_HIT ,Tcontrol_t,_param->_nb_inst_decod ); 135 ALLOC1(internal_DECOD_NUM_BANK ,uint32_t ,_param->_nb_inst_decod ); 136 ALLOC1(internal_DECOD_NUM_ENTRY ,uint32_t ,_param->_nb_inst_decod ); 132 137 133 internal_UPDATE_ACK = new Tcontrol_t [_param->_nb_inst_update];134 internal_UPDATE_HIT = new Tcontrol_t [_param->_nb_inst_update];135 internal_UPDATE_NUM_BANK = new uint32_t [_param->_nb_inst_update];136 internal_UPDATE_NUM_ENTRY = new uint32_t [_param->_nb_inst_update];138 ALLOC1(internal_UPDATE_ACK ,Tcontrol_t,_param->_nb_inst_update); 139 ALLOC1(internal_UPDATE_HIT ,Tcontrol_t,_param->_nb_inst_update); 140 ALLOC1(internal_UPDATE_NUM_BANK ,uint32_t ,_param->_nb_inst_update); 141 ALLOC1(internal_UPDATE_NUM_ENTRY,uint32_t ,_param->_nb_inst_update); 137 142 } 138 143 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/src/Branch_Target_Buffer_Register_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Register/include/Branch_Target_Buffer_Register.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_PREDICT_VAL ; 32 delete [] out_PREDICT_ACK ; 33 if (_param->_have_port_context_id) 34 delete [] in_PREDICT_CONTEXT_ID ; 35 delete [] in_PREDICT_ADDRESS ; 36 delete [] out_PREDICT_HIT ; 37 delete [] out_PREDICT_ADDRESS_SRC ; 38 delete [] out_PREDICT_ADDRESS_DEST ; 39 delete [] out_PREDICT_CONDITION ; 40 delete [] out_PREDICT_LAST_TAKE ; 41 delete [] out_PREDICT_IS_ACCURATE ; 42 delete [] in_DECOD_VAL ; 43 delete [] out_DECOD_ACK ; 44 if (_param->_have_port_victim) 45 { 46 delete [] out_DECOD_HIT ; 47 delete [] out_DECOD_HIT_INDEX ; 48 delete [] in_DECOD_VICTIM ; 49 } 50 if (_param->_have_port_context_id) 51 delete [] in_DECOD_CONTEXT_ID ; 52 delete [] in_DECOD_ADDRESS_SRC ; 53 delete [] in_DECOD_ADDRESS_DEST ; 54 delete [] in_DECOD_CONDITION ; 55 delete [] in_DECOD_LAST_TAKE ; 56 delete [] in_DECOD_MISS_PREDICTION ; 57 delete [] in_DECOD_IS_ACCURATE ; 58 delete [] in_UPDATE_VAL ; 59 delete [] out_UPDATE_ACK ; 60 if (_param->_have_port_victim) 61 { 62 delete [] out_UPDATE_HIT ; 63 delete [] out_UPDATE_HIT_INDEX ; 64 delete [] in_UPDATE_VICTIM ; 65 } 66 if (_param->_have_port_context_id) 67 delete [] in_UPDATE_CONTEXT_ID ; 68 delete [] in_UPDATE_ADDRESS_SRC ; 69 delete [] in_UPDATE_ADDRESS_DEST ; 70 delete [] in_UPDATE_CONDITION ; 71 delete [] in_UPDATE_LAST_TAKE ; 72 delete [] in_UPDATE_MISS_PREDICTION; 32 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 33 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 34 DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID ,_param->_nb_inst_predict,_param->_size_context_id); 35 DELETE1_SIGNAL( in_PREDICT_ADDRESS ,_param->_nb_inst_predict,_param->_size_instruction_address); 36 DELETE2_SIGNAL(out_PREDICT_HIT , _param->_nb_inst_predict, _param->_associativity,1); 37 DELETE2_SIGNAL(out_PREDICT_ADDRESS_SRC , _param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address); 38 DELETE2_SIGNAL(out_PREDICT_ADDRESS_DEST, _param->_nb_inst_predict, _param->_associativity,_param->_size_instruction_address); 39 DELETE2_SIGNAL(out_PREDICT_CONDITION , _param->_nb_inst_predict, _param->_associativity,_param->_size_branch_state); 40 DELETE2_SIGNAL(out_PREDICT_LAST_TAKE , _param->_nb_inst_predict, _param->_associativity,1); 41 DELETE2_SIGNAL(out_PREDICT_IS_ACCURATE , _param->_nb_inst_predict, _param->_associativity,1); 42 43 DELETE1_SIGNAL( in_DECOD_VAL , _param->_nb_inst_decod,1); 44 DELETE1_SIGNAL(out_DECOD_ACK , _param->_nb_inst_decod,1); 45 if (_param->_have_port_victim) 46 { 47 DELETE1_SIGNAL(out_DECOD_HIT , _param->_nb_inst_decod,1); 48 DELETE1_SIGNAL(out_DECOD_HIT_INDEX , _param->_nb_inst_decod,_param->_size_victim); 49 DELETE1_SIGNAL( in_DECOD_VICTIM , _param->_nb_inst_decod,_param->_size_victim); 50 } 51 DELETE1_SIGNAL( in_DECOD_CONTEXT_ID , _param->_nb_inst_decod,_param->_size_context_id); 52 DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC , _param->_nb_inst_decod,_param->_size_instruction_address); 53 DELETE1_SIGNAL( in_DECOD_ADDRESS_DEST , _param->_nb_inst_decod,_param->_size_instruction_address); 54 DELETE1_SIGNAL( in_DECOD_CONDITION , _param->_nb_inst_decod,_param->_size_branch_state); 55 DELETE1_SIGNAL( in_DECOD_LAST_TAKE , _param->_nb_inst_decod,1); 56 DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION, _param->_nb_inst_decod,1); 57 DELETE1_SIGNAL( in_DECOD_IS_ACCURATE , _param->_nb_inst_decod,1); 58 59 DELETE1_SIGNAL( in_UPDATE_VAL , _param->_nb_inst_update,1); 60 DELETE1_SIGNAL(out_UPDATE_ACK , _param->_nb_inst_update,1); 61 if (_param->_have_port_victim) 62 { 63 DELETE1_SIGNAL(out_UPDATE_HIT , _param->_nb_inst_update,1); 64 DELETE1_SIGNAL(out_UPDATE_HIT_INDEX , _param->_nb_inst_update,_param->_size_victim); 65 DELETE1_SIGNAL( in_UPDATE_VICTIM , _param->_nb_inst_update,_param->_size_victim); 66 } 67 DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID , _param->_nb_inst_update,_param->_size_context_id); 68 DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC , _param->_nb_inst_update,_param->_size_instruction_address); 69 DELETE1_SIGNAL( in_UPDATE_ADDRESS_DEST , _param->_nb_inst_update,_param->_size_instruction_address); 70 DELETE1_SIGNAL( in_UPDATE_CONDITION , _param->_nb_inst_update,_param->_size_branch_state); 71 DELETE1_SIGNAL( in_UPDATE_LAST_TAKE , _param->_nb_inst_update,1); 72 DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION, _param->_nb_inst_update,1); 73 74 DELETE2(reg_BTB ,_param->_size_bank,_param->_associativity); 73 75 74 delete [] reg_BTB; 75 76 delete [] internal_DECOD_ACK ; 77 delete [] internal_DECOD_HIT ; 78 delete [] internal_DECOD_NUM_BANK ; 79 delete [] internal_DECOD_NUM_ENTRY ; 80 81 delete [] internal_UPDATE_ACK ; 82 delete [] internal_UPDATE_HIT ; 83 delete [] internal_UPDATE_NUM_BANK ; 84 delete [] internal_UPDATE_NUM_ENTRY; 76 DELETE1(internal_DECOD_ACK ,_param->_nb_inst_decod ); 77 DELETE1(internal_DECOD_HIT ,_param->_nb_inst_decod ); 78 DELETE1(internal_DECOD_NUM_BANK ,_param->_nb_inst_decod ); 79 DELETE1(internal_DECOD_NUM_ENTRY ,_param->_nb_inst_decod ); 80 DELETE1(internal_UPDATE_ACK ,_param->_nb_inst_update); 81 DELETE1(internal_UPDATE_HIT ,_param->_nb_inst_update); 82 DELETE1(internal_UPDATE_NUM_BANK ,_param->_nb_inst_update); 83 DELETE1(internal_UPDATE_NUM_ENTRY,_param->_nb_inst_update); 85 84 } 86 85 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer_allocation.cpp
r108 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 59 59 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("predict", IN, SOUTH, "Predict (next pc) interface", _param->_nb_inst_predict);61 ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Predict (next pc) interface"), _param->_nb_inst_predict); 62 62 63 63 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 71 71 ALLOC1_SIGNAL_OUT(out_PREDICT_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 72 72 ALLOC1_SIGNAL_OUT(out_PREDICT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 73 74 ALLOC1_INTERFACE_END(param->_nb_inst_predict); 73 75 } 74 76 75 77 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76 78 { 77 ALLOC1_INTERFACE ("decod", IN, SOUTH, "Decod Interface", _param->_nb_inst_decod);79 ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("Decod Interface"), _param->_nb_inst_decod); 78 80 79 81 ALLOC1_VALACK_IN ( in_DECOD_VAL ,VAL); … … 86 88 ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 87 89 ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 90 91 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 88 92 } 89 93 90 94 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 91 95 { 92 ALLOC1_INTERFACE ("update", IN, SOUTH, "Update interface", _param->_nb_inst_update);96 ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("Update interface"), _param->_nb_inst_update); 93 97 94 98 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); … … 100 104 ALLOC1_SIGNAL_IN ( in_UPDATE_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 101 105 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 106 107 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 102 108 } 103 109 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/src/Branch_Target_Buffer_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/include/Branch_Target_Buffer.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 delete [] in_PREDICT_VAL ; 31 delete [] out_PREDICT_ACK ; 32 if (_param->_have_port_context_id) 33 delete [] in_PREDICT_CONTEXT_ID ; 34 delete [] in_PREDICT_ADDRESS ; 35 delete [] out_PREDICT_HIT ; 36 delete [] out_PREDICT_ADDRESS_SRC ; 37 delete [] out_PREDICT_ADDRESS_DEST ; 38 delete [] out_PREDICT_CONDITION ; 39 delete [] out_PREDICT_LAST_TAKE ; 40 delete [] out_PREDICT_IS_ACCURATE ; 31 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 32 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 33 DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID ,_param->_nb_inst_predict,_param->_size_context_id); 34 DELETE1_SIGNAL( in_PREDICT_ADDRESS ,_param->_nb_inst_predict,_param->_size_instruction_address); 35 DELETE1_SIGNAL(out_PREDICT_HIT ,_param->_nb_inst_predict,1); 36 DELETE1_SIGNAL(out_PREDICT_ADDRESS_SRC ,_param->_nb_inst_predict,_param->_size_instruction_address); 37 DELETE1_SIGNAL(out_PREDICT_ADDRESS_DEST ,_param->_nb_inst_predict,_param->_size_instruction_address); 38 DELETE1_SIGNAL(out_PREDICT_CONDITION ,_param->_nb_inst_predict,_param->_size_branch_condition); 39 DELETE1_SIGNAL(out_PREDICT_LAST_TAKE ,_param->_nb_inst_predict,1); 40 DELETE1_SIGNAL(out_PREDICT_IS_ACCURATE ,_param->_nb_inst_predict,1); 41 41 42 delete [] in_DECOD_VAL ; 43 delete [] out_DECOD_ACK ; 44 if (_param->_have_port_context_id) 45 delete [] in_DECOD_CONTEXT_ID ; 46 delete [] in_DECOD_ADDRESS_SRC ; 47 delete [] in_DECOD_ADDRESS_DEST ; 48 delete [] in_DECOD_CONDITION ; 49 delete [] in_DECOD_LAST_TAKE ; 50 delete [] in_DECOD_MISS_PREDICTION ; 51 delete [] in_DECOD_IS_ACCURATE ; 42 DELETE1_SIGNAL( in_DECOD_VAL ,_param->_nb_inst_decod,1); 43 DELETE1_SIGNAL(out_DECOD_ACK ,_param->_nb_inst_decod,1); 44 DELETE1_SIGNAL( in_DECOD_CONTEXT_ID ,_param->_nb_inst_decod,_param->_size_context_id); 45 DELETE1_SIGNAL( in_DECOD_ADDRESS_SRC ,_param->_nb_inst_decod,_param->_size_instruction_address); 46 DELETE1_SIGNAL( in_DECOD_ADDRESS_DEST ,_param->_nb_inst_decod,_param->_size_instruction_address); 47 DELETE1_SIGNAL( in_DECOD_CONDITION ,_param->_nb_inst_decod,_param->_size_branch_condition); 48 DELETE1_SIGNAL( in_DECOD_LAST_TAKE ,_param->_nb_inst_decod,1); 49 DELETE1_SIGNAL( in_DECOD_MISS_PREDICTION ,_param->_nb_inst_decod,1); 50 DELETE1_SIGNAL( in_DECOD_IS_ACCURATE ,_param->_nb_inst_decod,1); 52 51 53 delete [] in_UPDATE_VAL ; 54 delete [] out_UPDATE_ACK ; 55 if (_param->_have_port_context_id) 56 delete [] in_UPDATE_CONTEXT_ID ; 57 delete [] in_UPDATE_ADDRESS_SRC ; 58 delete [] in_UPDATE_ADDRESS_DEST ; 59 delete [] in_UPDATE_CONDITION ; 60 delete [] in_UPDATE_LAST_TAKE ; 61 delete [] in_UPDATE_MISS_PREDICTION; 52 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 53 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 54 DELETE1_SIGNAL( in_UPDATE_CONTEXT_ID ,_param->_nb_inst_update,_param->_size_context_id); 55 DELETE1_SIGNAL( in_UPDATE_ADDRESS_SRC ,_param->_nb_inst_update,_param->_size_instruction_address); 56 DELETE1_SIGNAL( in_UPDATE_ADDRESS_DEST ,_param->_nb_inst_update,_param->_size_instruction_address); 57 DELETE1_SIGNAL( in_UPDATE_CONDITION ,_param->_nb_inst_update,_param->_size_branch_condition); 58 DELETE1_SIGNAL( in_UPDATE_LAST_TAKE ,_param->_nb_inst_update,1); 59 DELETE1_SIGNAL( in_UPDATE_MISS_PREDICTION,_param->_nb_inst_update,1); 62 60 } 63 61 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/SelfTest/src/test.cpp
r88 r112 51 51 sc_signal<Tcontrol_t> * in_NRESET = new sc_signal<Tcontrol_t> ("NRESET"); 52 52 53 ALLOC1_SC_SIGNAL( in_PREDICT_VAL ," in_PREDICT_VAL ",Tcontrol_t,_param->_nb_inst_predict); 54 ALLOC1_SC_SIGNAL(out_PREDICT_ACK ,"out_PREDICT_ACK ",Tcontrol_t,_param->_nb_inst_predict); 55 ALLOC1_SC_SIGNAL( in_PREDICT_ADDRESS_SRC ," in_PREDICT_ADDRESS_SRC ",Taddress_t,_param->_nb_inst_predict); 56 ALLOC1_SC_SIGNAL( in_PREDICT_STATIC ," in_PREDICT_STATIC ",Tcontrol_t,_param->_nb_inst_predict); 57 ALLOC1_SC_SIGNAL( in_PREDICT_LAST_TAKE ," in_PREDICT_LAST_TAKE ",Tcontrol_t,_param->_nb_inst_predict); 58 ALLOC1_SC_SIGNAL(out_PREDICT_HISTORY ,"out_PREDICT_HISTORY ",Thistory_t,_param->_nb_inst_predict); 59 ALLOC1_SC_SIGNAL(out_PREDICT_DIRECTION ,"out_PREDICT_DIRECTION ",Tcontrol_t,_param->_nb_inst_predict); 60 ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL ,"out_PREDICT_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_inst_predict); 61 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK ," in_PREDICT_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_inst_predict); 62 ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC,"out_PREDICT_PREDICTOR_ADDRESS_SRC",Taddress_t,_param->_nb_inst_predict); 63 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY ," in_PREDICT_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_inst_predict); 64 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION ," in_PREDICT_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_inst_predict); 65 ALLOC1_SC_SIGNAL( in_UPDATE_VAL ," in_UPDATE_VAL ",Tcontrol_t,_param->_nb_inst_update); 66 ALLOC1_SC_SIGNAL(out_UPDATE_ACK ,"out_UPDATE_ACK ",Tcontrol_t,_param->_nb_inst_update); 67 ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS ," in_UPDATE_ADDRESS ",Taddress_t,_param->_nb_inst_update); 68 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 69 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 70 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL ,"out_UPDATE_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_inst_update); 71 ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK ," in_UPDATE_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_inst_update); 72 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS ,"out_UPDATE_PREDICTOR_ADDRESS ",Taddress_t,_param->_nb_inst_update); 73 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,"out_UPDATE_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_inst_update); 74 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,"out_UPDATE_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 53 ALLOC1_SC_SIGNAL( in_PREDICT_VAL ," in_PREDICT_VAL ",Tcontrol_t,_param->_nb_inst_predict); 54 ALLOC1_SC_SIGNAL(out_PREDICT_ACK ,"out_PREDICT_ACK ",Tcontrol_t,_param->_nb_inst_predict); 55 ALLOC1_SC_SIGNAL( in_PREDICT_ADDRESS_SRC ," in_PREDICT_ADDRESS_SRC ",Taddress_t,_param->_nb_inst_predict); 56 ALLOC1_SC_SIGNAL( in_PREDICT_STATIC ," in_PREDICT_STATIC ",Tcontrol_t,_param->_nb_inst_predict); 57 ALLOC1_SC_SIGNAL( in_PREDICT_LAST_TAKE ," in_PREDICT_LAST_TAKE ",Tcontrol_t,_param->_nb_inst_predict); 58 ALLOC1_SC_SIGNAL(out_PREDICT_HISTORY ,"out_PREDICT_HISTORY ",Thistory_t,_param->_nb_inst_predict); 59 ALLOC1_SC_SIGNAL(out_PREDICT_DIRECTION ,"out_PREDICT_DIRECTION ",Tcontrol_t,_param->_nb_inst_predict); 60 ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_VAL ,"out_PREDICT_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_inst_predict); 61 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_ACK ," in_PREDICT_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_inst_predict); 62 ALLOC1_SC_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC ,"out_PREDICT_PREDICTOR_ADDRESS_SRC ",Taddress_t,_param->_nb_inst_predict); 63 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_HISTORY ," in_PREDICT_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_inst_predict); 64 ALLOC1_SC_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION ," in_PREDICT_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_inst_predict); 65 ALLOC1_SC_SIGNAL( in_UPDATE_VAL ," in_UPDATE_VAL ",Tcontrol_t,_param->_nb_inst_update); 66 ALLOC1_SC_SIGNAL(out_UPDATE_ACK ,"out_UPDATE_ACK ",Tcontrol_t,_param->_nb_inst_update); 67 ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS ," in_UPDATE_ADDRESS ",Taddress_t,_param->_nb_inst_update); 68 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 69 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 70 ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTION_IFETCH ," in_UPDATE_PREDICTION_IFETCH ",Tcontrol_t,_param->_nb_inst_update); 71 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL ,"out_UPDATE_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_inst_update); 72 ALLOC1_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK ," in_UPDATE_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_inst_update); 73 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS ,"out_UPDATE_PREDICTOR_ADDRESS ",Taddress_t,_param->_nb_inst_update); 74 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,"out_UPDATE_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_inst_update); 75 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,"out_UPDATE_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 76 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTOR_PREDICTION_IFETCH ,"out_UPDATE_PREDICTOR_PREDICTION_IFETCH ",Tcontrol_t,_param->_nb_inst_update); 75 77 76 78 /******************************************************** … … 83 85 (*(_Direction_Glue->in_NRESET)) (*(in_NRESET)); 84 86 85 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_VAL ,_param->_nb_inst_predict); 86 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_ACK ,_param->_nb_inst_predict); 87 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_ADDRESS_SRC ,_param->_nb_inst_predict); 88 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_STATIC ,_param->_nb_inst_predict); 89 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_LAST_TAKE ,_param->_nb_inst_predict); 90 if (_param->_have_port_history) 91 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_HISTORY ,_param->_nb_inst_predict); 92 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_DIRECTION ,_param->_nb_inst_predict); 93 if (_param->_have_component_meta_predictor) 94 { 95 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_VAL ,_param->_nb_inst_predict); 96 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_ACK ,_param->_nb_inst_predict); 97 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_ADDRESS_SRC,_param->_nb_inst_predict); 98 if (_param->_have_port_history) 99 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_HISTORY ,_param->_nb_inst_predict); 100 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_inst_predict); 101 } 102 103 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_VAL ,_param->_nb_inst_update ); 104 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_ACK ,_param->_nb_inst_update ); 105 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_ADDRESS ,_param->_nb_inst_update ); 106 if (_param->_have_port_history) 107 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_HISTORY ,_param->_nb_inst_update ); 108 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_DIRECTION ,_param->_nb_inst_update ); 109 if (_param->_have_component_meta_predictor) 110 { 111 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_VAL ,_param->_nb_inst_update ); 112 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTOR_ACK ,_param->_nb_inst_update ); 113 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_ADDRESS ,_param->_nb_inst_update ); 114 if (_param->_have_port_history) 115 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_inst_update ); 116 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_inst_update ); 87 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_VAL ,_param->_nb_inst_predict); 88 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_ACK ,_param->_nb_inst_predict); 89 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_ADDRESS_SRC ,_param->_nb_inst_predict); 90 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_STATIC ,_param->_nb_inst_predict); 91 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_LAST_TAKE ,_param->_nb_inst_predict); 92 if (_param->_have_port_history) 93 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_HISTORY ,_param->_nb_inst_predict); 94 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_DIRECTION ,_param->_nb_inst_predict); 95 if (_param->_have_component_meta_predictor) 96 { 97 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_VAL ,_param->_nb_inst_predict); 98 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_ACK ,_param->_nb_inst_predict); 99 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_PREDICT_PREDICTOR_ADDRESS_SRC ,_param->_nb_inst_predict); 100 if (_param->_have_port_history) 101 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_HISTORY ,_param->_nb_inst_predict); 102 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_PREDICT_PREDICTOR_DIRECTION ,_param->_nb_inst_predict); 103 } 104 105 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_VAL ,_param->_nb_inst_update ); 106 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_ACK ,_param->_nb_inst_update ); 107 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_ADDRESS ,_param->_nb_inst_update ); 108 if (_param->_have_port_history) 109 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_HISTORY ,_param->_nb_inst_update ); 110 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_DIRECTION ,_param->_nb_inst_update ); 111 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTION_IFETCH ,_param->_nb_inst_update ); 112 if (_param->_have_component_meta_predictor) 113 { 114 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_VAL ,_param->_nb_inst_update ); 115 INSTANCE1_SC_SIGNAL(_Direction_Glue, in_UPDATE_PREDICTOR_ACK ,_param->_nb_inst_update ); 116 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_ADDRESS ,_param->_nb_inst_update ); 117 if (_param->_have_port_history) 118 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_inst_update ); 119 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_inst_update ); 120 INSTANCE1_SC_SIGNAL(_Direction_Glue,out_UPDATE_PREDICTOR_PREDICTION_IFETCH ,_param->_nb_inst_update ); 117 121 } 118 122 … … 163 167 in_UPDATE_HISTORY [i]->write(range<Thistory_t>(rand(),_param->_size_history)); 164 168 in_UPDATE_DIRECTION [i]->write(rand()%2); 169 in_UPDATE_PREDICTION_IFETCH [i]->write(rand()%2); 165 170 in_UPDATE_PREDICTOR_ACK [i]->write(rand()%2); 166 171 } … … 228 233 case PREDICTOR_CUSTOM : 229 234 { 230 TEST(Tcontrol_t,out_UPDATE_ACK [i]->read(), in_UPDATE_PREDICTOR_ACK [i]->read()); 231 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_VAL [i]->read(), in_UPDATE_VAL [i]->read()); 232 TEST(Taddress_t,out_UPDATE_PREDICTOR_ADDRESS [i]->read(), in_UPDATE_ADDRESS [i]->read()); 233 TEST(Thistory_t,out_UPDATE_PREDICTOR_HISTORY [i]->read(), in_UPDATE_HISTORY [i]->read()); 234 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_DIRECTION [i]->read(), in_UPDATE_DIRECTION [i]->read()); 235 TEST(Tcontrol_t,out_UPDATE_ACK [i]->read(), in_UPDATE_PREDICTOR_ACK [i]->read()); 236 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_VAL [i]->read(), in_UPDATE_VAL [i]->read()); 237 TEST(Taddress_t,out_UPDATE_PREDICTOR_ADDRESS [i]->read(), in_UPDATE_ADDRESS [i]->read()); 238 TEST(Thistory_t,out_UPDATE_PREDICTOR_HISTORY [i]->read(), in_UPDATE_HISTORY [i]->read()); 239 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_DIRECTION [i]->read(), in_UPDATE_DIRECTION [i]->read()); 240 TEST(Tcontrol_t,out_UPDATE_PREDICTOR_PREDICTION_IFETCH[i]->read(), in_UPDATE_PREDICTION_IFETCH [i]->read()); 235 241 236 242 break; … … 281 287 delete [] in_UPDATE_HISTORY ; 282 288 delete [] in_UPDATE_DIRECTION ; 289 delete [] in_UPDATE_PREDICTION_IFETCH ; 283 290 delete [] out_UPDATE_PREDICTOR_VAL ; 284 291 delete [] in_UPDATE_PREDICTOR_ACK ; … … 286 293 delete [] out_UPDATE_PREDICTOR_HISTORY ; 287 294 delete [] out_UPDATE_PREDICTOR_DIRECTION ; 295 delete [] out_UPDATE_PREDICTOR_PREDICTION_IFETCH; 288 296 #endif 289 297 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/include/Direction_Glue.h
r82 r112 79 79 80 80 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 public : SC_IN (Tcontrol_t) ** in_UPDATE_VAL ; 82 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ; 83 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ; 84 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ; 85 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ; 81 public : SC_IN (Tcontrol_t) ** in_UPDATE_VAL ; 82 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ; 83 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ; 84 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ; 85 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ; 86 public : SC_IN (Tcontrol_t) ** in_UPDATE_PREDICTION_IFETCH ; 86 87 87 public : SC_OUT(Tcontrol_t) ** out_UPDATE_PREDICTOR_VAL ; 88 public : SC_IN (Tcontrol_t) ** in_UPDATE_PREDICTOR_ACK ; 89 public : SC_OUT(Taddress_t) ** out_UPDATE_PREDICTOR_ADDRESS ; 90 public : SC_OUT(Thistory_t) ** out_UPDATE_PREDICTOR_HISTORY ; 91 public : SC_OUT(Tcontrol_t) ** out_UPDATE_PREDICTOR_DIRECTION; 88 public : SC_OUT(Tcontrol_t) ** out_UPDATE_PREDICTOR_VAL ; 89 public : SC_IN (Tcontrol_t) ** in_UPDATE_PREDICTOR_ACK ; 90 public : SC_OUT(Taddress_t) ** out_UPDATE_PREDICTOR_ADDRESS ; 91 public : SC_OUT(Thistory_t) ** out_UPDATE_PREDICTOR_HISTORY ; 92 public : SC_OUT(Tcontrol_t) ** out_UPDATE_PREDICTOR_DIRECTION ; 93 public : SC_OUT(Tcontrol_t) ** out_UPDATE_PREDICTOR_PREDICTION_IFETCH; 92 94 93 95 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue.cpp
r107 r112 215 215 // sensitive << (*(in_CLOCK)).neg(); // don't use internal register 216 216 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 217 sensitive << (*(in_UPDATE_VAL [i])) 218 << (*(in_UPDATE_PREDICTOR_ACK [i])) 219 << (*(in_UPDATE_ADDRESS [i])) 220 << (*(in_UPDATE_HISTORY [i])) 221 << (*(in_UPDATE_DIRECTION [i])); 217 sensitive << (*(in_UPDATE_VAL [i])) 218 << (*(in_UPDATE_PREDICTOR_ACK [i])) 219 << (*(in_UPDATE_ADDRESS [i])) 220 << (*(in_UPDATE_HISTORY [i])) 221 << (*(in_UPDATE_DIRECTION [i])) 222 << (*(in_UPDATE_PREDICTION_IFETCH [i])) 223 ; 222 224 223 225 # ifdef SYSTEMCASS_SPECIFIC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_allocation.cpp
r88 r112 59 59 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("predict", IN, SOUTH, "predict's interface", _param->_nb_inst_predict);61 ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("predict's interface"), _param->_nb_inst_predict); 62 62 63 63 ALLOC1_SIGNAL_IN ( in_PREDICT_VAL ,"val" ,Tcontrol_t,1); … … 68 68 ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY ,"history" ,Thistory_t,_param->_size_history); 69 69 ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION ,"direction" ,Tcontrol_t,1); 70 if (_param->_have_component_meta_predictor) 71 { 70 71 if (_param->_have_component_meta_predictor) 72 { 72 73 ALLOC1_SIGNAL_OUT(out_PREDICT_PREDICTOR_VAL ,"predictor_val" ,Tcontrol_t,1); 73 74 ALLOC1_SIGNAL_IN ( in_PREDICT_PREDICTOR_ACK ,"predictor_ack" ,Tcontrol_t,1); … … 76 77 ALLOC1_SIGNAL_IN ( in_PREDICT_PREDICTOR_DIRECTION ,"predictor_direction" ,Tcontrol_t,1); 77 78 } 79 80 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 78 81 } 79 82 80 83 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 84 { 82 ALLOC1_INTERFACE ("update", IN, SOUTH, "update's interface", _param->_nb_inst_update);85 ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update's interface"), _param->_nb_inst_update); 83 86 84 ALLOC1_SIGNAL_IN ( in_UPDATE_VAL ,"val" ,Tcontrol_t,1); 85 ALLOC1_SIGNAL_OUT(out_UPDATE_ACK ,"ack" ,Tcontrol_t,1); 86 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 87 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"history" ,Thistory_t,_param->_size_history); 88 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"direction" ,Tcontrol_t,1); 87 ALLOC1_SIGNAL_IN ( in_UPDATE_VAL ,"val" ,Tcontrol_t,1); 88 ALLOC1_SIGNAL_OUT(out_UPDATE_ACK ,"ack" ,Tcontrol_t,1); 89 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 90 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"history" ,Thistory_t,_param->_size_history); 91 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"direction" ,Tcontrol_t,1); 92 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH ,"prediction_ifetch" ,Tcontrol_t,1); 93 89 94 if (_param->_have_component_meta_predictor) 90 95 { 91 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL ,"predictor_val" ,Tcontrol_t,1); 92 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK ,"predictor_ack" ,Tcontrol_t,1); 93 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_ADDRESS ,"predictor_address" ,Taddress_t,_param->_size_instruction_address); 94 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY ,"predictor_history" ,Thistory_t,_param->_size_history); 95 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION,"predictor_direction",Tcontrol_t,1); 96 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL ,"predictor_val" ,Tcontrol_t,1); 97 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK ,"predictor_ack" ,Tcontrol_t,1); 98 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_ADDRESS ,"predictor_address" ,Taddress_t,_param->_size_instruction_address); 99 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY ,"predictor_history" ,Thistory_t,_param->_size_history); 100 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION ,"predictor_direction" ,Tcontrol_t,1); 101 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTOR_PREDICTION_IFETCH,"predictor_prediction_ifetch",Tcontrol_t,1); 96 102 } 103 104 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 97 105 } 98 106 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/include/Direction_Glue.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_PREDICT_VAL ; 32 delete [] out_PREDICT_ACK ; 33 delete [] in_PREDICT_ADDRESS_SRC ; 34 delete [] in_PREDICT_STATIC ; 35 delete [] in_PREDICT_LAST_TAKE ; 36 if (_param->_have_port_history) 37 delete [] out_PREDICT_HISTORY ; 38 delete [] out_PREDICT_DIRECTION ; 39 if (_param->_have_component_meta_predictor) 40 { 41 delete [] out_PREDICT_PREDICTOR_VAL ; 42 delete [] in_PREDICT_PREDICTOR_ACK ; 43 delete [] out_PREDICT_PREDICTOR_ADDRESS_SRC; 44 if (_param->_have_port_history) 45 delete [] in_PREDICT_PREDICTOR_HISTORY ; 46 delete [] in_PREDICT_PREDICTOR_DIRECTION ; 47 } 48 delete [] in_UPDATE_VAL ; 49 delete [] out_UPDATE_ACK ; 50 delete [] in_UPDATE_ADDRESS ; 51 if (_param->_have_port_history) 52 delete [] in_UPDATE_HISTORY ; 53 delete [] in_UPDATE_DIRECTION ; 54 if (_param->_have_component_meta_predictor) 55 { 56 delete [] out_UPDATE_PREDICTOR_VAL ; 57 delete [] in_UPDATE_PREDICTOR_ACK ; 58 delete [] out_UPDATE_PREDICTOR_ADDRESS ; 59 if (_param->_have_port_history) 60 delete [] out_UPDATE_PREDICTOR_HISTORY ; 61 delete [] out_UPDATE_PREDICTOR_DIRECTION; 62 } 32 DELETE1_SIGNAL( in_PREDICT_VAL , _param->_nb_inst_predict,1); 33 DELETE1_SIGNAL(out_PREDICT_ACK , _param->_nb_inst_predict,1); 34 DELETE1_SIGNAL( in_PREDICT_ADDRESS_SRC , _param->_nb_inst_predict,_param->_size_instruction_address); 35 DELETE1_SIGNAL( in_PREDICT_STATIC , _param->_nb_inst_predict,1); 36 DELETE1_SIGNAL( in_PREDICT_LAST_TAKE , _param->_nb_inst_predict,1); 37 DELETE1_SIGNAL(out_PREDICT_HISTORY , _param->_nb_inst_predict,_param->_size_history); 38 DELETE1_SIGNAL(out_PREDICT_DIRECTION , _param->_nb_inst_predict,1); 39 if (_param->_have_component_meta_predictor) 40 { 41 DELETE1_SIGNAL(out_PREDICT_PREDICTOR_VAL , _param->_nb_inst_predict,1); 42 DELETE1_SIGNAL( in_PREDICT_PREDICTOR_ACK , _param->_nb_inst_predict,1); 43 DELETE1_SIGNAL(out_PREDICT_PREDICTOR_ADDRESS_SRC, _param->_nb_inst_predict,_param->_size_instruction_address); 44 DELETE1_SIGNAL( in_PREDICT_PREDICTOR_HISTORY , _param->_nb_inst_predict,_param->_size_history); 45 DELETE1_SIGNAL( in_PREDICT_PREDICTOR_DIRECTION , _param->_nb_inst_predict,1); 46 } 47 48 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 49 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 50 DELETE1_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update,_param->_size_instruction_address); 51 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 52 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1); 53 DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH ,_param->_nb_inst_update,1); 54 if (_param->_have_component_meta_predictor) 55 { 56 DELETE1_SIGNAL(out_UPDATE_PREDICTOR_VAL ,_param->_nb_inst_update,1); 57 DELETE1_SIGNAL( in_UPDATE_PREDICTOR_ACK ,_param->_nb_inst_update,1); 58 DELETE1_SIGNAL(out_UPDATE_PREDICTOR_ADDRESS ,_param->_nb_inst_update,_param->_size_instruction_address); 59 DELETE1_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_inst_update,_param->_size_history); 60 DELETE1_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_inst_update,1); 61 DELETE1_SIGNAL(out_UPDATE_PREDICTOR_PREDICTION_IFETCH,_param->_nb_inst_update,1); 62 } 63 63 } 64 64 65 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65 66 66 delete _component; 67 67 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_update.cpp
r107 r112 28 28 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 29 29 { 30 PORT_WRITE(out_UPDATE_PREDICTOR_VAL [i], PORT_READ(in_UPDATE_VAL [i])); 31 PORT_WRITE(out_UPDATE_ACK [i], PORT_READ(in_UPDATE_PREDICTOR_ACK [i])); 32 PORT_WRITE(out_UPDATE_PREDICTOR_ADDRESS [i], PORT_READ(in_UPDATE_ADDRESS [i])); 33 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [i], PORT_READ(in_UPDATE_HISTORY [i])); 34 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [i], PORT_READ(in_UPDATE_DIRECTION [i])); 30 PORT_WRITE(out_UPDATE_PREDICTOR_VAL [i], PORT_READ(in_UPDATE_VAL [i])); 31 PORT_WRITE(out_UPDATE_ACK [i], PORT_READ(in_UPDATE_PREDICTOR_ACK [i])); 32 PORT_WRITE(out_UPDATE_PREDICTOR_ADDRESS [i], PORT_READ(in_UPDATE_ADDRESS [i])); 33 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [i], PORT_READ(in_UPDATE_HISTORY [i])); 34 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [i], PORT_READ(in_UPDATE_DIRECTION [i])); 35 PORT_WRITE(out_UPDATE_PREDICTOR_PREDICTION_IFETCH [i], PORT_READ(in_UPDATE_PREDICTION_IFETCH [i])); 35 36 } 36 37 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/SelfTest/src/test.cpp
r111 r112 64 64 ALLOC1_SC_SIGNAL(out_UPDATE_ACK ,"out_UPDATE_ACK ",Tcontrol_t,_param->_nb_inst_update); 65 65 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 66 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ," in_UPDATE_HISTORY_VAL ",Tcontrol_t,_param->_nb_inst_update); 66 67 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 67 68 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_VAL ,"out_UPDATE_PREDICTOR_VAL ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 68 69 ALLOC2_SC_SIGNAL( in_UPDATE_PREDICTOR_ACK ," in_UPDATE_PREDICTOR_ACK ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 69 70 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,"out_UPDATE_PREDICTOR_HISTORY ",Thistory_t,_param->_nb_predictor,_param->_nb_inst_update); 71 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_HISTORY_VAL ,"out_UPDATE_PREDICTOR_HISTORY_VAL ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 70 72 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,"out_UPDATE_PREDICTOR_DIRECTION ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); 71 73 ALLOC2_SC_SIGNAL(out_UPDATE_PREDICTOR_MISS ,"out_UPDATE_PREDICTOR_MISS ",Tcontrol_t,_param->_nb_predictor,_param->_nb_inst_update); … … 100 102 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_ACK ,_param->_nb_inst_update); 101 103 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_HISTORY ,_param->_nb_inst_update); 104 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 102 105 INSTANCE1_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_DIRECTION ,_param->_nb_inst_update); 103 106 … … 105 108 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue, in_UPDATE_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_update); 106 109 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_update); 110 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_HISTORY_VAL ,_param->_nb_predictor,_param->_nb_inst_update); 107 111 INSTANCE2_SC_SIGNAL(_Meta_Predictor_Glue,out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_update); 108 112 for (uint32_t i=0; i<_param->_nb_predictor; ++i) … … 169 173 DELETE1_SC_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update); 170 174 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update); 175 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 171 176 DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update); 172 177 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/include/Meta_Predictor_Glue.h
r111 r112 83 83 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ;// [nb_inst_update] 84 84 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ;// [nb_inst_update] 85 public : SC_IN (Tcontrol_t) ** in_UPDATE_HISTORY_VAL ;// [nb_inst_update] 85 86 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ;// [nb_inst_update] 86 87 … … 88 89 public : SC_IN (Tcontrol_t) *** in_UPDATE_PREDICTOR_ACK ;//[nb_predictor][nb_inst_update] 89 90 public : SC_OUT(Thistory_t) *** out_UPDATE_PREDICTOR_HISTORY ;//[nb_predictor][nb_inst_update] 91 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_HISTORY_VAL ;//[nb_predictor][nb_inst_update] 90 92 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_DIRECTION ;//[nb_predictor][nb_inst_update] 91 93 public : SC_OUT(Tcontrol_t) *** out_UPDATE_PREDICTOR_MISS ;//[nb_predictor][nb_inst_update] // if update_on_prediction -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue.cpp
r111 r112 101 101 // sensitive << (*(in_CLOCK)).neg(); // don't need internal register 102 102 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 103 sensitive << (*(in_UPDATE_HISTORY [i])) 104 << (*(in_UPDATE_DIRECTION [i])); 103 sensitive << (*(in_UPDATE_HISTORY [i])) 104 << (*(in_UPDATE_HISTORY_VAL [i])) 105 << (*(in_UPDATE_DIRECTION [i])); 105 106 106 107 # ifdef SYSTEMCASS_SPECIFIC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_allocation.cpp
r111 r112 61 61 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 62 { 63 ALLOC1_INTERFACE ("predict",IN,NORTH,_("Predict next address"),_param->_nb_inst_predict);63 ALLOC1_INTERFACE_BEGIN("predict",IN,NORTH,_("Predict next address"),_param->_nb_inst_predict); 64 64 65 65 ALLOC1_SIGNAL_IN ( in_PREDICT_VAL ,"VAL" ,Tcontrol_t,1); … … 67 67 ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 68 68 ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 69 70 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 69 71 } 70 72 71 73 { 72 ALLOC2_INTERFACE ("predict_predictor",IN,NORTH,_("Predict next address"),_param->_nb_predictor,_param->_nb_inst_predict);74 ALLOC2_INTERFACE_BEGIN("predict_predictor",IN,NORTH,_("Predict next address"),_param->_nb_predictor,_param->_nb_inst_predict); 73 75 74 76 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_VAL ,"VAL" ,Tcontrol_t,1); … … 78 80 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION_VAL,"DIRECTION_VAL",Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 79 81 ALLOC2_SIGNAL_OUT(out_PREDICT_PREDICTOR_DIRECTION ,"DIRECTION" ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 82 83 ALLOC2_INTERFACE_END(_param->_nb_predictor,_param->_nb_inst_predict); 80 84 } 81 85 82 86 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 83 87 { 84 ALLOC1_INTERFACE ("update",IN,NORTH,_("Update predictor"),_param->_nb_inst_update);88 ALLOC1_INTERFACE_BEGIN("update",IN,NORTH,_("Update predictor"),_param->_nb_inst_update); 85 89 86 90 ALLOC1_SIGNAL_IN ( in_UPDATE_VAL ,"VAL" ,Tcontrol_t,1); 87 91 ALLOC1_SIGNAL_OUT(out_UPDATE_ACK ,"ACK" ,Tcontrol_t,1); 88 92 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 93 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL ,"HISTORY_VAL" ,Tcontrol_t,1); 89 94 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 95 96 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 90 97 } 91 98 { 92 ALLOC2_INTERFACE ("update_predictor",IN,NORTH,_("Update predictor"),_param->_nb_predictor,_param->_nb_inst_update);99 ALLOC2_INTERFACE_BEGIN("update_predictor",IN,NORTH,_("Update predictor"),_param->_nb_predictor,_param->_nb_inst_update); 93 100 94 101 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_VAL ,"VAL" ,Tcontrol_t,1); 95 102 ALLOC2_SIGNAL_IN ( in_UPDATE_PREDICTOR_ACK ,"ACK" ,Tcontrol_t,1); 96 103 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY ,"HISTORY" ,Thistory_t,_param->_predictor_size_history[it1]); 104 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_HISTORY_VAL ,"HISTORY_VAL" ,Tcontrol_t,1); 97 105 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_DIRECTION ,"DIRECTION" ,Tcontrol_t,1); 98 106 ALLOC2_SIGNAL_OUT(out_UPDATE_PREDICTOR_MISS ,"MISS" ,Tcontrol_t,(_param->_predictor_update_on_prediction [it1])?1:0); 107 108 ALLOC2_INTERFACE_END(_param->_nb_predictor,_param->_nb_inst_update); 99 109 } 100 110 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_deallocation.cpp
r111 r112 46 46 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 47 47 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 48 DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update,1); 48 49 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1); 49 50 … … 51 52 DELETE2_SIGNAL( in_UPDATE_PREDICTOR_ACK ,_param->_nb_predictor,_param->_nb_inst_update,1); 52 53 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_HISTORY ,_param->_nb_predictor,_param->_nb_inst_update,_param->_predictor_size_history[it1]); 54 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_HISTORY_VAL ,_param->_nb_predictor,_param->_nb_inst_update,1); 53 55 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_DIRECTION ,_param->_nb_predictor,_param->_nb_inst_update,1); 54 56 DELETE2_SIGNAL(out_UPDATE_PREDICTOR_MISS ,_param->_nb_predictor,_param->_nb_inst_update,(_param->_predictor_update_on_prediction [it1])?1:0); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Meta_Predictor_Glue/src/Meta_Predictor_Glue_genMealy_update.cpp
r111 r112 29 29 for (uint32_t i=0; i<_param->_nb_inst_update; ++i) 30 30 { 31 Thistory_t history = PORT_READ(in_UPDATE_HISTORY [i]); 32 Tcontrol_t direction = PORT_READ(in_UPDATE_DIRECTION [i]); 31 Thistory_t history = PORT_READ(in_UPDATE_HISTORY [i]); 32 Tcontrol_t history_val = PORT_READ(in_UPDATE_HISTORY_VAL [i]); 33 Tcontrol_t direction = PORT_READ(in_UPDATE_DIRECTION [i]); 33 34 34 35 switch (_param->_nb_predictor) … … 38 39 Thistory_t history_0 = history; 39 40 Tcontrol_t direction_old_0 = (history_0>>_param->_predictor_history_shift_msb[0])&1; 40 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [0][i],history_0); 41 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction); 41 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [0][i],history_0); 42 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [0][i],history_val); 43 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction); 42 44 if (_param->_predictor_update_on_prediction [0]) 43 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [0][i],direction xor direction_old_0);45 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [0][i],direction xor direction_old_0); 44 46 45 47 break; … … 83 85 (not direction and direction_old_0)); 84 86 85 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction);86 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [1][i],direction);87 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [2][i],direction_new_2);87 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [0][i],direction); 88 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [1][i],direction); 89 PORT_WRITE(out_UPDATE_PREDICTOR_DIRECTION [2][i],direction_new_2); 88 90 89 91 if (_param->_predictor_update_on_prediction [0]) 90 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [0][i],direction xor direction_old_0);92 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [0][i],direction xor direction_old_0); 91 93 if (_param->_predictor_update_on_prediction [1]) 92 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [1][i],direction xor direction_old_1);94 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [1][i],direction xor direction_old_1); 93 95 if (_param->_predictor_update_on_prediction [2]) 94 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [2][i],direction_new_2 xor direction_old_2);96 PORT_WRITE(out_UPDATE_PREDICTOR_MISS [2][i],direction_new_2 xor direction_old_2); 95 97 96 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [0][i],history_0); 97 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [1][i],history_1); 98 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [2][i],history_2); 98 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [0][i],history_0); 99 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [1][i],history_1); 100 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY [2][i],history_2); 101 102 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [0][i],history_val); 103 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [1][i],history_val); 104 PORT_WRITE(out_UPDATE_PREDICTOR_HISTORY_VAL [2][i],history_val); 99 105 100 106 break; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/SelfTest/src/test.cpp
r111 r112 60 60 ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS ," in_UPDATE_ADDRESS ",Taddress_t,_param->_nb_inst_update); 61 61 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 62 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ," in_UPDATE_HISTORY_VAL ",Tcontrol_t,_param->_nb_inst_update); 62 63 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 63 64 … … 81 82 INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_ADDRESS ,_param->_nb_inst_update); 82 83 INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_HISTORY ,_param->_nb_inst_update); 84 INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 83 85 INSTANCE1_SC_SIGNAL(_Meta_Predictor, in_UPDATE_DIRECTION ,_param->_nb_inst_update); 84 86 … … 137 139 DELETE1_SC_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update); 138 140 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update); 141 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 139 142 DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update); 140 143 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/SelfTest/src/test.cpp
r111 r112 63 63 ALLOC1_SC_SIGNAL( in_UPDATE_ADDRESS ," in_UPDATE_ADDRESS ",Taddress_t,_param->_nb_inst_update); 64 64 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY ," in_UPDATE_HISTORY ",Thistory_t,_param->_nb_inst_update); 65 ALLOC1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ," in_UPDATE_HISTORY_VAL ",Tcontrol_t,_param->_nb_inst_update); 65 66 ALLOC1_SC_SIGNAL( in_UPDATE_DIRECTION ," in_UPDATE_DIRECTION ",Tcontrol_t,_param->_nb_inst_update); 66 67 ALLOC1_SC_SIGNAL( in_UPDATE_MISS ," in_UPDATE_MISS ",Tcontrol_t,_param->_nb_inst_update); … … 90 91 INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_ADDRESS ,_param->_nb_inst_update); 91 92 INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_HISTORY ,_param->_nb_inst_update); 93 INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 92 94 INSTANCE1_SC_SIGNAL(_Two_Level_Branch_Predictor, in_UPDATE_DIRECTION ,_param->_nb_inst_update); 93 95 if (_param->_update_on_prediction) … … 155 157 { 156 158 bool val = ((rand()%2)<percent_transaction_update); 157 in_UPDATE_VAL [port]->write(val);158 in_UPDATE_DIRECTION [port]->write(0);159 in_UPDATE_VAL [port]->write(val); 160 in_UPDATE_DIRECTION [port]->write(0); 159 161 160 162 if (_param->_update_on_prediction) 161 in_UPDATE_MISS [port]->write(1); // miss 162 in_UPDATE_HISTORY [port]->write(0); 163 in_UPDATE_ADDRESS [port]->write(bht_num_reg); 163 in_UPDATE_MISS [port]->write(1); // miss 164 in_UPDATE_HISTORY [port]->write(0); 165 in_UPDATE_HISTORY_VAL [port]->write(0); 166 in_UPDATE_ADDRESS [port]->write(bht_num_reg); 164 167 165 168 SC_START(0); … … 185 188 { 186 189 bool val = ((rand()%2)<percent_transaction_update); 187 in_UPDATE_VAL [port]->write(val);188 in_UPDATE_DIRECTION [port]->write(0);190 in_UPDATE_VAL [port]->write(val); 191 in_UPDATE_DIRECTION [port]->write(0); 189 192 190 193 if (_param->_update_on_prediction) 191 in_UPDATE_MISS [port]->write(1); // miss 192 in_UPDATE_HISTORY [port]->write(i<<_param->_bht_history_rshift); 193 in_UPDATE_ADDRESS [port]->write(pht_num_bank<<_param->_pht_address_bank_rshift); 194 in_UPDATE_MISS [port]->write(1); // miss 195 in_UPDATE_HISTORY [port]->write(i<<_param->_bht_history_rshift); 196 in_UPDATE_HISTORY_VAL [port]->write(1); 197 in_UPDATE_ADDRESS [port]->write(pht_num_bank<<_param->_pht_address_bank_rshift); 194 198 195 199 SC_START(0); … … 241 245 DELETE1_SC_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update); 242 246 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update); 247 DELETE1_SC_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update); 243 248 DELETE1_SC_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update); 244 249 DELETE1_SC_SIGNAL( in_UPDATE_MISS ,_param->_nb_inst_update); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Parameters.h
r111 r112 59 59 public : Taddress_t _pht_address_bank_rshift ; 60 60 61 public : Thistory_t _bht_init_take ; 62 public : Thistory_t _bht_init_ntake ; 63 64 public : Thistory_t _pht_init_take ; 65 public : Thistory_t _pht_init_ntake ; 66 61 67 //-----[ methods ]----------------------------------------------------------- 62 68 public : Parameters (uint32_t nb_inst_predict , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/include/Two_Level_Branch_Predictor.h
r111 r112 80 80 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ;//[nb_inst_update] 81 81 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ;//[nb_inst_update] 82 public : SC_IN (Tcontrol_t) ** in_UPDATE_HISTORY_VAL ;//[nb_inst_update] 82 83 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ;//[nb_inst_update] 83 84 public : SC_IN (Tcontrol_t) ** in_UPDATE_MISS ;//[nb_inst_update] // if update_on_prediction -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Parameters.cpp
r111 r112 44 44 _bht_nb_shifter = (have_bht)?(bht_nb_shifter ):0; 45 45 _have_pht = have_pht ; 46 _pht_size_counter = (have_pht)?(pht_size_counter 47 _pht_nb_counter = (have_pht)?(pht_nb_counter 46 _pht_size_counter = (have_pht)?(pht_size_counter):0; 47 _pht_nb_counter = (have_pht)?(pht_nb_counter ):0; 48 48 _pht_size_address_share = (have_bht and have_pht)?(pht_size_address_share):0; 49 49 _update_on_prediction = update_on_prediction ; … … 54 54 test(); 55 55 56 // history to update_prediction_table : 57 // MSB : pht_history 58 // LSB : bht_history 59 56 60 _size_history = _bht_size_shifter + _pht_size_counter; 57 58 61 _bht_history_mask = gen_mask<Thistory_t>(_bht_size_shifter); 59 62 _bht_history_rshift = 0; … … 67 70 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_history_rshift : %d",_pht_history_rshift); 68 71 72 _bht_init_take = (Thistory_t)(-1)&_bht_history_mask; 73 _bht_init_ntake = 0; 74 _pht_init_take = (1<<(_pht_size_counter-1)); // size = 4 : 1000/2 75 _pht_init_ntake = _pht_init_take-1; // size = 4 : 0111/2 76 77 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _bht_init_take : 0x%x",_bht_init_take ); 78 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _bht_init_ntake : 0x%x",_bht_init_ntake); 79 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_init_take : 0x%x",_pht_init_take ); 80 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * _pht_init_ntake : 0x%x",_pht_init_ntake); 81 69 82 if (_have_bht) 70 83 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_allocation.cpp
r111 r112 59 59 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);61 ALLOC1_INTERFACE_BEGIN("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict); 62 62 63 63 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 71 71 ALLOC1_SIGNAL_IN ( in_PREDICT_DIRECTION ,"DIRECTION" ,Tcontrol_t,1 ); 72 72 } 73 74 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 73 75 } 74 76 75 77 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76 78 { 77 ALLOC1_INTERFACE ("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);79 ALLOC1_INTERFACE_BEGIN("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update); 78 80 79 81 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); … … 81 83 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"ADDRESS" ,Taddress_t,_param->_size_address); 82 84 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 85 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL ,"HISTORY_VAL" ,Tcontrol_t,1 ); 83 86 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"DIRECTION" ,Tcontrol_t,1 ); 84 87 if (_param->_update_on_prediction) 85 88 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS ,"MISS" ,Tcontrol_t,1 ); 89 90 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 86 91 } 92 93 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 94 88 95 if (usage_is_set(_usage,USE_SYSTEMC)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_deallocation.cpp
r111 r112 46 46 DELETE1_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update,_param->_size_address); 47 47 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 48 DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update,1 ); 48 49 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1 ); 49 50 if (_param->_update_on_prediction) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/Two_Level_Branch_Predictor/src/Two_Level_Branch_Predictor_transition.cpp
r111 r112 90 90 { 91 91 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * UPDATE [%d]",i); 92 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * miss : %d",PORT_READ(in_UPDATE_MISS [i])); 93 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * update_on_predict: %d",_param->_update_on_prediction); 92 94 93 95 // Update if 94 96 // * update_on_prediction and miss 95 97 // * not update_on_prediction 96 if (not _param->_update_on_prediction or (_param->_update_on_prediction and PORT_READ(in_UPDATE_MISS [i]))) 97 { 98 Taddress_t address = PORT_READ(in_UPDATE_ADDRESS [i]); 99 Thistory_t history = PORT_READ(in_UPDATE_HISTORY [i]); 100 Tcontrol_t direction = PORT_READ(in_UPDATE_DIRECTION [i])&1; 98 Tcontrol_t history_val = PORT_READ(in_UPDATE_HISTORY_VAL [i]); 99 100 if (not _param->_update_on_prediction or 101 (_param->_update_on_prediction and PORT_READ(in_UPDATE_MISS [i])) or 102 not history_val // static_prediction 103 ) 104 { 105 Taddress_t address = PORT_READ(in_UPDATE_ADDRESS [i]); 106 Thistory_t history = PORT_READ(in_UPDATE_HISTORY [i]); 107 Tcontrol_t direction = PORT_READ(in_UPDATE_DIRECTION [i])&1; 101 108 102 109 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * address : %.8x",address); 103 110 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * direction : %d",direction); 111 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * history_val : %d",direction); 104 112 105 113 Thistory_t pht_bht_history = 0; … … 107 115 if (_param->_have_bht) 108 116 { 117 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht"); 118 109 119 Thistory_t bht_history = (history>>_param->_bht_history_rshift)&_param->_bht_history_mask; 110 120 Thistory_t bht_num_reg = address & _param->_bht_address_mask; 111 121 122 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (old): %x",bht_history); 123 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_num_reg : %x",bht_num_reg); 124 125 // BHT : shift register 126 if (not history_val) 127 bht_history = (direction)?_param->_bht_init_take:_param->_bht_init_ntake; 128 else 129 bht_history = ((bht_history<<1) | direction)&_param->_bht_history_mask ; 130 112 131 pht_bht_history = bht_history; 113 114 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (old): %x",bht_history); 115 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_num_reg : %x",bht_num_reg); 116 117 // BHT : shift register 118 119 bht_history = ((bht_history<<1) | direction)&_param->_bht_history_mask ; 120 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (new): %x",bht_history); 132 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (new): %x",bht_history); 121 133 reg_BHT [bht_num_reg] = bht_history; 122 134 } … … 124 136 if (_param->_have_pht) 125 137 { 138 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht"); 139 126 140 Thistory_t pht_history = (history>>_param->_pht_history_rshift)&_param->_pht_history_mask; 127 141 Thistory_t pht_num_reg = pht_bht_history xor ((address&_param->_pht_address_share_mask)<<_param->_pht_address_share_lshift); 128 142 Thistory_t pht_num_bank= (address>>_param->_pht_address_bank_rshift)&_param->_pht_address_bank_mask; 129 143 130 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (old): %x",pht_bht_history);131 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_history (old): %x",pht_history);132 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_num_reg : %x",pht_num_reg);133 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_num_bank : %x",pht_num_bank);144 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * bht_history (old): %x",pht_bht_history); 145 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_history (old): %x",pht_history); 146 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_num_reg : %x",pht_num_reg); 147 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_num_bank : %x",pht_num_bank); 134 148 135 149 // PHT : saturation counter 136 pht_history = (direction==1)?((pht_history<_param->_pht_counter_max)?(pht_history+1):(pht_history)):((pht_history>0)?(pht_history-1):(pht_history)); 137 138 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_history (new): %x",pht_history); 150 if (not history_val) 151 pht_history = (direction)?_param->_pht_init_take:_param->_pht_init_ntake; 152 else 153 pht_history = (direction==1)?((pht_history<_param->_pht_counter_max)?(pht_history+1):(pht_history)):((pht_history>0)?(pht_history-1):(pht_history)); 154 155 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * pht_history (new): %x",pht_history); 139 156 140 157 reg_PHT [pht_num_bank][pht_num_reg] = pht_history; … … 145 162 146 163 #if defined(DEBUG) and DEBUG_Two_Level_Branch_Predictor and (DEBUG >= DEBUG_TRACE) 147 if ( 0)164 if (1) 148 165 { 149 166 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," * Dump Two_Level_Branch_Predictor"); … … 180 197 for (uint32_t num_bank=0; num_bank <_param->_pht_nb_bank; ++num_bank) 181 198 { 182 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," [%.4d]",num_bank); 183 184 for (uint32_t i=0; i<_param->_pht_size_bank; i+=limit) 185 { 186 std::string str = ""; 199 if (_param->_pht_size_bank == 1) 200 { 201 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," [%.4d][0000] %4x",num_bank,reg_PHT[num_bank][0]); 202 } 203 else 204 { 205 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," [%.4d]",num_bank); 187 206 188 for (uint32_t j=0; j<limit; j++)207 for (uint32_t i=0; i<_param->_pht_size_bank; i+=limit) 189 208 { 190 uint32_t index = i+j; 191 if (index >= _param->_pht_nb_counter) 192 break; 193 else 194 str+=toString("[%.4d] %.4x ",index,reg_PHT[num_bank][index]); 209 std::string str = ""; 210 211 for (uint32_t j=0; j<limit; j++) 212 { 213 uint32_t index = i+j; 214 if (index >= _param->_pht_size_bank) 215 break; 216 else 217 str+=toString("[%.4d] %.4x ",index,reg_PHT[num_bank][index]); 218 } 219 220 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," %s",str.c_str()); 195 221 } 196 197 log_printf(TRACE,Two_Level_Branch_Predictor,FUNCTION," %s",str.c_str());198 222 } 199 223 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/include/Meta_Predictor.h
r111 r112 80 80 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ;//[nb_inst_update] 81 81 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ;//[nb_inst_update] 82 public : SC_IN (Tcontrol_t) ** in_UPDATE_HISTORY_VAL ;//[nb_inst_update] 82 83 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ;//[nb_inst_update] 83 84 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Meta_Predictor_allocation.cpp
r111 r112 58 58 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict);60 ALLOC1_INTERFACE_BEGIN("predict",IN,WEST,_("Predict direction interface"),_param->_nb_inst_predict); 61 61 62 62 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 65 65 ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION ,"DIRECTION" ,Tcontrol_t,1 ); 66 66 ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 67 68 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 67 69 } 68 70 69 71 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 72 { 71 ALLOC1_INTERFACE ("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update);73 ALLOC1_INTERFACE_BEGIN("update",IN,WEST,_("Update direction interface"),_param->_nb_inst_update); 72 74 73 75 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); … … 75 77 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"ADDRESS" ,Taddress_t,_param->_size_address); 76 78 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"HISTORY" ,Thistory_t,_param->_size_history); 79 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY_VAL ,"HISTORY_VAL" ,Tcontrol_t,1 ); 77 80 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"DIRECTION" ,Tcontrol_t,1 ); 81 82 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 78 83 } 79 84 … … 218 223 COMPONENT_MAP(_component,src , "in_UPDATE_" +toString(j)+"_HISTORY" , 219 224 dest,"out_UPDATE_PREDICTOR_"+toString(i)+"_"+toString(j)+"_HISTORY" ); 225 COMPONENT_MAP(_component,src , "in_UPDATE_" +toString(j)+"_HISTORY_VAL" , 226 dest,"out_UPDATE_PREDICTOR_"+toString(i)+"_"+toString(j)+"_HISTORY_VAL" ); 220 227 if (_param->_predictor_update_on_prediction [i]) 221 228 COMPONENT_MAP(_component,src , "in_UPDATE_" +toString(j)+"_MISS" , … … 286 293 #endif 287 294 288 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL" , 289 dest, "in_UPDATE_"+toString(i)+"_VAL" ); 290 PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK" , 291 dest,"out_UPDATE_"+toString(i)+"_ACK" ); 292 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY" , 293 dest, "in_UPDATE_"+toString(i)+"_HISTORY" ); 294 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION", 295 dest, "in_UPDATE_"+toString(i)+"_DIRECTION"); 296 } 297 298 // out_UPDATE_PREDICTOR_VAL -> two_level_branch_predictor. in_UPDATE_PREDICTOR_VAL 299 // in_UPDATE_PREDICTOR_ACK -> two_level_branch_predictor.out_UPDATE_PREDICTOR_ACK 300 // out_UPDATE_PREDICTOR_HISTORY -> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 301 // out_UPDATE_PREDICTOR_DIRECTION -> two_level_branch_predictor. in_UPDATE_PREDICTOR_DIRECTION 302 // out_UPDATE_PREDICTOR_MISS -> two_level_branch_predictor. in_UPDATE_PREDICTOR_MISS 295 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL" , 296 dest, "in_UPDATE_"+toString(i)+"_VAL" ); 297 PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK" , 298 dest,"out_UPDATE_"+toString(i)+"_ACK" ); 299 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY" , 300 dest, "in_UPDATE_"+toString(i)+"_HISTORY" ); 301 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY_VAL", 302 dest, "in_UPDATE_"+toString(i)+"_HISTORY_VAL"); 303 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION" , 304 dest, "in_UPDATE_"+toString(i)+"_DIRECTION" ); 305 } 306 307 // out_UPDATE_PREDICTOR_VAL -> two_level_branch_predictor. in_UPDATE_PREDICTOR_VAL 308 // in_UPDATE_PREDICTOR_ACK -> two_level_branch_predictor.out_UPDATE_PREDICTOR_ACK 309 // out_UPDATE_PREDICTOR_HISTORY -> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 310 // out_UPDATE_PREDICTOR_HISTORY_VAL-> two_level_branch_predictor. in_UPDATE_PREDICTOR_HISTORY 311 // out_UPDATE_PREDICTOR_DIRECTION -> two_level_branch_predictor. in_UPDATE_PREDICTOR_DIRECTION 312 // out_UPDATE_PREDICTOR_MISS -> two_level_branch_predictor. in_UPDATE_PREDICTOR_MISS 303 313 304 314 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Meta_Predictor_deallocation.cpp
r111 r112 40 40 DELETE1_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update,_param->_size_address); 41 41 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 42 DELETE1_SIGNAL( in_UPDATE_HISTORY_VAL ,_param->_nb_inst_update,1 ); 42 43 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1 ); 43 44 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Meta_Predictor/src/Parameters.cpp
r111 r112 64 64 if (_have_meta_predictor) 65 65 _predictor_update_on_prediction [_nb_predictor-1] = false; 66 67 // // All predictor can't update on prediction .... 68 // for (uint32_t i=0; i<_nb_predictor; ++i) 69 // _predictor_update_on_prediction [i] = false; 66 70 67 71 _param_two_level_branch_predictor = new morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::direction::meta_predictor::two_level_branch_predictor::Parameters * [_nb_predictor]; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/include/Direction.h
r111 r112 63 63 64 64 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65 public : SC_IN (Tcontrol_t) ** in_PREDICT_VAL ;66 public : SC_OUT(Tcontrol_t) ** out_PREDICT_ACK ;67 public : SC_IN (Taddress_t) ** in_PREDICT_ADDRESS_SRC ;68 public : SC_IN (Tcontrol_t) ** in_PREDICT_STATIC ;69 public : SC_IN (Tcontrol_t) ** in_PREDICT_LAST_TAKE ;70 public : SC_OUT(Thistory_t) ** out_PREDICT_HISTORY ;71 public : SC_OUT(Tcontrol_t) ** out_PREDICT_DIRECTION ;65 public : SC_IN (Tcontrol_t) ** in_PREDICT_VAL ; 66 public : SC_OUT(Tcontrol_t) ** out_PREDICT_ACK ; 67 public : SC_IN (Taddress_t) ** in_PREDICT_ADDRESS_SRC ; 68 public : SC_IN (Tcontrol_t) ** in_PREDICT_STATIC ; 69 public : SC_IN (Tcontrol_t) ** in_PREDICT_LAST_TAKE ; 70 public : SC_OUT(Thistory_t) ** out_PREDICT_HISTORY ; 71 public : SC_OUT(Tcontrol_t) ** out_PREDICT_DIRECTION ; 72 72 73 73 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 74 public : SC_IN (Tcontrol_t) ** in_UPDATE_VAL ; 75 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ; 76 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ; 77 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ; 78 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ; 74 public : SC_IN (Tcontrol_t) ** in_UPDATE_VAL ; 75 public : SC_OUT(Tcontrol_t) ** out_UPDATE_ACK ; 76 public : SC_IN (Taddress_t) ** in_UPDATE_ADDRESS ; 77 public : SC_IN (Thistory_t) ** in_UPDATE_HISTORY ; 78 public : SC_IN (Tcontrol_t) ** in_UPDATE_DIRECTION ; 79 public : SC_IN (Tcontrol_t) ** in_UPDATE_PREDICTION_IFETCH; 79 80 80 81 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction_allocation.cpp
r111 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 59 59 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("predict", IN, SOUTH, "Interface predict",_param->_nb_inst_predict);61 ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("Interface predict"),_param->_nb_inst_predict); 62 62 63 63 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 68 68 ALLOC1_SIGNAL_OUT(out_PREDICT_HISTORY ,"history" ,Thistory_t,_param->_size_history); 69 69 ALLOC1_SIGNAL_OUT(out_PREDICT_DIRECTION ,"direction" ,Tcontrol_t,1); 70 71 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 70 72 } 71 73 72 74 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 75 { 74 ALLOC1_INTERFACE("update", IN, SOUTH, "Interface update",_param->_nb_inst_update); 75 76 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); 77 ALLOC1_VALACK_OUT(out_UPDATE_ACK ,ACK); 78 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 79 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"history" ,Thistory_t,_param->_size_history); 80 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION,"direction",Tcontrol_t,1); 76 ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("Interface update"),_param->_nb_inst_update); 77 78 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); 79 ALLOC1_VALACK_OUT(out_UPDATE_ACK ,ACK); 80 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS ,"address" ,Taddress_t,_param->_size_instruction_address); 81 ALLOC1_SIGNAL_IN ( in_UPDATE_HISTORY ,"history" ,Thistory_t,_param->_size_history); 82 ALLOC1_SIGNAL_IN ( in_UPDATE_DIRECTION ,"direction" ,Tcontrol_t,1); 83 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1); 84 85 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 81 86 } 82 87 … … 183 188 COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+ "_HISTORY" , 184 189 dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY" ); 190 COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+ "_HISTORY_VAL" , 191 dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH"); 185 192 } 186 193 } … … 212 219 #endif 213 220 214 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_VAL" ,215 dest, "in_PREDICT_"+toString(i)+"_VAL" );216 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_ACK" ,217 dest,"out_PREDICT_"+toString(i)+"_ACK" );218 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_ADDRESS_SRC" ,219 dest, "in_PREDICT_"+toString(i)+"_ADDRESS_SRC" );220 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_STATIC" ,221 dest, "in_PREDICT_"+toString(i)+"_STATIC" );222 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_LAST_TAKE" ,223 dest, "in_PREDICT_"+toString(i)+"_LAST_TAKE" );224 if (_param->_have_port_history) 225 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_HISTORY" ,226 dest,"out_PREDICT_"+toString(i)+"_HISTORY" );227 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_DIRECTION" ,228 dest,"out_PREDICT_"+toString(i)+"_DIRECTION" );229 230 // PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL" ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL");231 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK");232 // PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC" ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC");233 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY");234 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION");221 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_VAL" , 222 dest, "in_PREDICT_"+toString(i)+"_VAL" ); 223 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_ACK" , 224 dest,"out_PREDICT_"+toString(i)+"_ACK" ); 225 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_ADDRESS_SRC" , 226 dest, "in_PREDICT_"+toString(i)+"_ADDRESS_SRC" ); 227 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_STATIC" , 228 dest, "in_PREDICT_"+toString(i)+"_STATIC" ); 229 PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_LAST_TAKE" , 230 dest, "in_PREDICT_"+toString(i)+"_LAST_TAKE" ); 231 if (_param->_have_port_history) 232 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_HISTORY" , 233 dest,"out_PREDICT_"+toString(i)+"_HISTORY" ); 234 PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_DIRECTION" , 235 dest,"out_PREDICT_"+toString(i)+"_DIRECTION" ); 236 237 // PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL" ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_VAL" ); 238 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_ACK" ); 239 // PORT_MAP(_component,src ,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC" ,dest,"out_PREDICT_"+toString(i)+"_PREDICTOR_ADDRESS_SRC" ); 240 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_HISTORY" ); 241 // PORT_MAP(_component,src , "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION" ,dest, "in_PREDICT_"+toString(i)+"_PREDICTOR_DIRECTION" ); 235 242 } 236 243 … … 243 250 #endif 244 251 245 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL" ,246 dest, "in_UPDATE_"+toString(i)+"_VAL" );247 PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK" ,248 dest,"out_UPDATE_"+toString(i)+"_ACK" );249 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_ADDRESS" ,250 dest, "in_UPDATE_"+toString(i)+"_ADDRESS" );252 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_VAL" , 253 dest, "in_UPDATE_"+toString(i)+"_VAL" ); 254 PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_ACK" , 255 dest,"out_UPDATE_"+toString(i)+"_ACK" ); 256 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_ADDRESS" , 257 dest, "in_UPDATE_"+toString(i)+"_ADDRESS" ); 251 258 if (_param->_have_port_history) 252 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY" , 253 dest, "in_UPDATE_"+toString(i)+"_HISTORY" ); 254 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION", 255 dest, "in_UPDATE_"+toString(i)+"_DIRECTION"); 256 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL" ); 257 // PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK" ,dest, "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK" ); 258 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS" ); 259 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY" ); 260 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION",dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION"); 259 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_HISTORY" , 260 dest, "in_UPDATE_"+toString(i)+"_HISTORY" ); 261 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_DIRECTION" , 262 dest, "in_UPDATE_"+toString(i)+"_DIRECTION" ); 263 PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTION_IFETCH", 264 dest, "in_UPDATE_"+toString(i)+"_PREDICTION_IFETCH"); 265 266 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_VAL" ); 267 // PORT_MAP(_component,src , "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK" ,dest, "in_UPDATE_"+toString(i)+"_PREDICTOR_ACK" ); 268 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_ADDRESS" ); 269 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_HISTORY" ); 270 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION" ,dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_DIRECTION" ); 271 // PORT_MAP(_component,src ,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH",dest,"out_UPDATE_"+toString(i)+"_PREDICTOR_PREDICTION_IFETCH"); 272 261 273 } 262 274 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/src/Direction_deallocation.cpp
r111 r112 7 7 8 8 #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/include/Direction.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 delete [] in_PREDICT_VAL;31 delete [] out_PREDICT_ACK;32 delete [] in_PREDICT_ADDRESS_SRC;33 delete [] in_PREDICT_STATIC;34 delete [] in_PREDICT_LAST_TAKE;35 if (_param->_have_port_history) 36 delete [] out_PREDICT_HISTORY;37 delete [] out_PREDICT_DIRECTION ; 38 delete [] in_UPDATE_VAL;39 delete [] out_UPDATE_ACK;40 delete [] in_UPDATE_ADDRESS;41 if (_param->_have_port_history) 42 delete [] in_UPDATE_HISTORY;43 delete [] in_UPDATE_DIRECTION;31 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 32 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 33 DELETE1_SIGNAL( in_PREDICT_ADDRESS_SRC,_param->_nb_inst_predict,_param->_size_instruction_address); 34 DELETE1_SIGNAL( in_PREDICT_STATIC ,_param->_nb_inst_predict,1); 35 DELETE1_SIGNAL( in_PREDICT_LAST_TAKE ,_param->_nb_inst_predict,1); 36 DELETE1_SIGNAL(out_PREDICT_HISTORY ,_param->_nb_inst_predict,_param->_size_history); 37 DELETE1_SIGNAL(out_PREDICT_DIRECTION ,_param->_nb_inst_predict,1); 38 39 DELETE1_SIGNAL( in_UPDATE_VAL ,_param->_nb_inst_update,1); 40 DELETE1_SIGNAL(out_UPDATE_ACK ,_param->_nb_inst_update,1); 41 DELETE1_SIGNAL( in_UPDATE_ADDRESS ,_param->_nb_inst_update,_param->_size_instruction_address); 42 DELETE1_SIGNAL( in_UPDATE_HISTORY ,_param->_nb_inst_update,_param->_size_history); 43 DELETE1_SIGNAL( in_UPDATE_DIRECTION ,_param->_nb_inst_update,1); 44 DELETE1_SIGNAL( in_UPDATE_PREDICTION_IFETCH,_param->_nb_inst_update,1); 44 45 } 45 46 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/SelfTest/src/test.cpp
r110 r112 208 208 { 209 209 if (_param->_have_port_inst_ifetch_ptr) 210 INSTANCE _SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_INST_IFETCH_PTR [i]);210 INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_INST_IFETCH_PTR [i]); 211 211 if (_param->_have_port_depth) 212 INSTANCE _SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i]);212 INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [i]); 213 213 } 214 214 … … 350 350 // if (_param->_have_port_depth) 351 351 // { 352 // INSTANCE _SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_TAIL [i]);353 // INSTANCE _SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_TAIL [i]);352 // INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_TAIL [i]); 353 // INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_TAIL [i]); 354 354 // } 355 // INSTANCE _SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_NB_BRANCH [i]);356 // INSTANCE _SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_NB_BRANCH [i]);355 // INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue, in_DEPTH_UPT_NB_BRANCH [i]); 356 // INSTANCE0_SC_SIGNAL(_Prediction_unit_Glue,out_DEPTH_NB_BRANCH [i]); 357 357 // } 358 358 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue_allocation.cpp
r110 r112 47 47 ,IN 48 48 ,SOUTH, 49 "Generalist interface"49 _("Generalist interface") 50 50 #endif 51 51 ); … … 58 58 { 59 59 { 60 ALLOC1_INTERFACE ("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context);60 ALLOC1_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context); 61 61 62 62 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 70 70 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 71 71 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 72 } 73 { 74 ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[it1]); 72 73 ALLOC1_INTERFACE_END(_param->_nb_context); 74 } 75 { 76 ALLOC2_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context,_param->_nb_instruction[it1]); 77 75 78 _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1,_param->_nb_context,_param->_nb_instruction[it1]); 76 } 77 78 { 79 ALLOC1_INTERFACE("predict_btb",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict); 79 80 ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_instruction[it1]); 81 } 82 83 { 84 ALLOC1_INTERFACE_BEGIN("predict_btb",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict); 80 85 81 86 ALLOC1_VALACK_OUT(out_PREDICT_BTB_VAL ,VAL); … … 89 94 // ALLOC1_SIGNAL_IN ( in_PREDICT_BTB_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 90 95 ALLOC1_SIGNAL_IN ( in_PREDICT_BTB_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 91 } 92 93 { 94 ALLOC1_INTERFACE("predict_dir",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict); 96 97 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict); 98 } 99 100 { 101 ALLOC1_INTERFACE_BEGIN("predict_dir",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict); 95 102 96 103 ALLOC1_VALACK_OUT(out_PREDICT_DIR_VAL ,VAL); … … 101 108 // ALLOC1_SIGNAL_IN ( in_PREDICT_DIR_HISTORY ,"history" ,Thistory_t ,_param->_size_history); 102 109 ALLOC1_SIGNAL_IN ( in_PREDICT_DIR_DIRECTION ,"direction" ,Tcontrol_t ,1); 103 } 104 105 { 106 ALLOC1_INTERFACE("predict_ras",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict); 110 111 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict); 112 } 113 114 { 115 ALLOC1_INTERFACE_BEGIN("predict_ras",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict); 107 116 108 117 ALLOC1_VALACK_OUT(out_PREDICT_RAS_VAL ,VAL); … … 114 123 ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_ADDRESS_POP ,"address_pop" ,Taddress_t ,_param->_size_instruction_address); 115 124 // ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_INDEX ,"index" ,Tptr_t ,_param->_size_ras_index); 116 } 117 118 { 119 ALLOC1_INTERFACE("predict_upt",OUT,NORTH,"Interface with ifetch unit",_param->_nb_inst_branch_predict); 125 126 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict); 127 } 128 129 { 130 ALLOC1_INTERFACE_BEGIN("predict_upt",OUT,NORTH,_("Interface with ifetch unit"),_param->_nb_inst_branch_predict); 120 131 121 132 ALLOC1_VALACK_OUT(out_PREDICT_UPT_VAL ,VAL); … … 131 142 ALLOC1_SIGNAL_OUT(out_PREDICT_UPT_RAS_ADDRESS ,"ras_address" ,Taddress_t ,_param->_size_instruction_address); 132 143 // ALLOC1_SIGNAL_OUT(out_PREDICT_UPT_RAS_INDEX ,"ras_index" ,Tptr_t ,_param->_size_ras_index); 144 145 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_predict); 133 146 } 134 147 } … … 137 150 { 138 151 { 139 ALLOC2_INTERFACE ("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);152 ALLOC2_INTERFACE_BEGIN("decod",IN,SOUTH,_("Interface with decod unit"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 140 153 141 154 _ALLOC2_VALACK_IN ( in_DECOD_VAL ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); … … 150 163 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 151 164 _ALLOC2_SIGNAL_OUT(out_DECOD_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 152 } 153 154 { 155 ALLOC1_INTERFACE("decod_btb",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod); 165 166 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 167 } 168 169 { 170 ALLOC1_INTERFACE_BEGIN("decod_btb",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod); 156 171 157 172 ALLOC1_VALACK_OUT(out_DECOD_BTB_VAL ,VAL); … … 164 179 ALLOC1_SIGNAL_OUT(out_DECOD_BTB_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 165 180 ALLOC1_SIGNAL_OUT(out_DECOD_BTB_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 166 } 167 168 { 169 ALLOC1_INTERFACE("decod_ras",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod); 181 182 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod); 183 } 184 185 { 186 ALLOC1_INTERFACE_BEGIN("decod_ras",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod); 170 187 171 188 ALLOC1_VALACK_OUT(out_DECOD_RAS_VAL ,VAL); … … 178 195 // ALLOC1_SIGNAL_IN ( in_DECOD_RAS_INDEX ,"index" ,Tptr_t ,_param->_size_ras_index); 179 196 ALLOC1_SIGNAL_OUT(out_DECOD_RAS_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1); 180 } 181 182 { 183 ALLOC1_INTERFACE("decod_upt",OUT,NORTH,"Interface with decod unit",_param->_nb_inst_branch_decod); 197 198 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod); 199 } 200 201 { 202 ALLOC1_INTERFACE_BEGIN("decod_upt",OUT,NORTH,_("Interface with decod unit"),_param->_nb_inst_branch_decod); 184 203 185 204 ALLOC1_VALACK_OUT(out_DECOD_UPT_VAL ,VAL); … … 197 216 ALLOC1_SIGNAL_OUT(out_DECOD_UPT_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 198 217 ALLOC1_SIGNAL_IN ( in_DECOD_UPT_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1); 218 219 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_decod); 199 220 } 200 221 } … … 203 224 { 204 225 { 205 ALLOC1_INTERFACE ("update_btb",OUT,SOUTH,"Interface with update unit",_param->_nb_inst_branch_update);226 ALLOC1_INTERFACE_BEGIN("update_btb",OUT,SOUTH,_("Interface with update unit"),_param->_nb_inst_branch_update); 206 227 207 228 ALLOC1_VALACK_OUT(out_UPDATE_BTB_VAL ,VAL); … … 213 234 // ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_LAST_TAKE ,"last_take" ,Tcontrol_t ,1); 214 235 // ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t ,1); 215 } 216 217 { 218 ALLOC1_INTERFACE("update_dir",OUT,NORTH,"Interface with update unit",_param->_nb_inst_branch_update); 236 237 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update); 238 } 239 240 { 241 ALLOC1_INTERFACE_BEGIN("update_dir",OUT,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update); 219 242 220 243 ALLOC1_VALACK_OUT(out_UPDATE_DIR_VAL ,VAL); … … 223 246 // ALLOC1_SIGNAL_OUT(out_UPDATE_DIR_HISTORY ,"history" ,Thistory_t ,_param->_size_history); 224 247 // ALLOC1_SIGNAL_OUT(out_UPDATE_DIR_DIRECTION ,"direction" ,Tcontrol_t ,1); 225 } 226 227 { 228 ALLOC1_INTERFACE("update_ras",OUT,NORTH,"Interface with update unit",_param->_nb_inst_branch_update); 248 249 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update); 250 } 251 252 { 253 ALLOC1_INTERFACE_BEGIN("update_ras",OUT,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update); 229 254 230 255 ALLOC1_VALACK_OUT(out_UPDATE_RAS_VAL ,VAL); … … 236 261 // ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t ,1); 237 262 // ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_PREDICTION_IFETCH ,"prediction_ifetch" ,Tcontrol_t ,1); 238 } 239 240 { 241 ALLOC1_INTERFACE("update_upt",IN ,NORTH,"Interface with update unit",_param->_nb_inst_branch_update); 263 264 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update); 265 } 266 267 { 268 ALLOC1_INTERFACE_BEGIN("update_upt",IN ,NORTH,_("Interface with update unit"),_param->_nb_inst_branch_update); 242 269 243 270 ALLOC1_VALACK_IN ( in_UPDATE_UPT_VAL ,VAL); … … 257 284 // ALLOC1_SIGNAL_IN ( in_UPDATE_UPT_RAS_INDEX ,"ras_index" ,Tptr_t ,_param->_size_ras_index); 258 285 // ALLOC1_SIGNAL_IN ( in_UPDATE_UPT_RAS_PREDICTION_IFETCH,"ras_prediction_ifetch",Tcontrol_t ,1); 286 287 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_update); 259 288 } 260 289 } … … 262 291 // // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 263 292 // { 264 // ALLOC1_INTERFACE ("depth",IN,NORTH,"Interface with depth",_param->_nb_context);293 // ALLOC1_INTERFACE_BEGIN("depth",IN,NORTH,_("Interface with depth"),_param->_nb_context); 265 294 // 266 295 // ALLOC1_SIGNAL_IN ( in_DEPTH_UPT_NB_BRANCH,"upt_nb_branch",Tdepth_t,_param->_size_depth+1); … … 268 297 // ALLOC1_SIGNAL_OUT(out_DEPTH_NB_BRANCH ,"nb_branch" ,Tdepth_t,_param->_size_depth+1); 269 298 // ALLOC1_SIGNAL_OUT(out_DEPTH_TAIL ,"tail" ,Tdepth_t,_param->_size_depth); 299 // 300 // ALLOC1_INTERFACE_END(_param->_nb_context); 270 301 // } 271 302 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_allocation.cpp
r100 r112 46 46 ,IN 47 47 ,SOUTH, 48 "Generalist interface"48 _("Generalist interface") 49 49 #endif 50 50 ); … … 56 56 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 57 { 58 ALLOC1_INTERFACE ("predict", IN, SOUTH, "predict's interface", _param->_nb_inst_predict);58 ALLOC1_INTERFACE_BEGIN("predict", IN, SOUTH, _("predict's interface"), _param->_nb_inst_predict); 59 59 60 60 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 66 66 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_POP ,"address_pop" ,Taddress_t,_param->_size_instruction_address); 67 67 ALLOC1_SIGNAL_OUT(out_PREDICT_INDEX ,"index" ,Tptr_t ,_param->_size_index); 68 69 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 68 70 } 69 71 70 72 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 73 { 72 ALLOC1_INTERFACE ("decod", IN, SOUTH, "decod's interface", _param->_nb_inst_decod);74 ALLOC1_INTERFACE_BEGIN("decod", IN, SOUTH, _("decod's interface"), _param->_nb_inst_decod); 73 75 74 76 ALLOC1_VALACK_IN ( in_DECOD_VAL ,VAL); … … 81 83 ALLOC1_SIGNAL_OUT(out_DECOD_INDEX ,"index" ,Tptr_t ,_param->_size_index); 82 84 ALLOC1_SIGNAL_IN ( in_DECOD_MISS_PREDICTION,"miss_prediction",Tcontrol_t,1); 85 86 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 83 87 } 84 88 85 89 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 90 { 87 ALLOC1_INTERFACE ("update", IN, SOUTH, "update's interface", _param->_nb_inst_update);91 ALLOC1_INTERFACE_BEGIN("update", IN, SOUTH, _("update's interface"), _param->_nb_inst_update); 88 92 89 93 ALLOC1_VALACK_IN ( in_UPDATE_VAL ,VAL); … … 96 100 ALLOC1_SIGNAL_IN ( in_UPDATE_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t,1); 97 101 ALLOC1_SIGNAL_IN ( in_UPDATE_PREDICTION_IFETCH,"prediction_ifetch",Tcontrol_t,1); 102 103 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 98 104 } 99 105 … … 101 107 { 102 108 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 ALLOC2(reg_stack ,ras_entry_t,_param->_nb_context,_param->_size_queue [it1]); 103 110 104 reg_stack = new ras_entry_t * [_param->_nb_context];105 for (uint32_t i=0; i<_param->_nb_context; i++) 106 reg_stack [i] = new ras_entry_t [_param->_size_queue [i]];111 ALLOC1(reg_TOP ,Tptr_t ,_param->_nb_context); 112 // ALLOC1(reg_BOTTOM ,Tptr_t ,_param->_nb_context); 113 ALLOC1(reg_NB_ELT ,Tptr_t ,_param->_nb_context); 107 114 108 reg_TOP = new Tptr_t [_param->_nb_context];109 // reg_BOTTOM = new Tptr_t [_param->_nb_context];110 reg_NB_ELT = new Tptr_t [_param->_nb_context];115 ALLOC1(reg_PREDICT_TOP ,Tptr_t ,_param->_nb_context); 116 // ALLOC1(reg_PREDICT_BOTTOM ,Tptr_t ,_param->_nb_context); 117 ALLOC1(reg_PREDICT_NB_ELT ,Tptr_t ,_param->_nb_context); 111 118 112 reg_PREDICT_TOP = new Tptr_t [_param->_nb_context]; 113 // reg_PREDICT_BOTTOM = new Tptr_t [_param->_nb_context]; 114 reg_PREDICT_NB_ELT = new Tptr_t [_param->_nb_context]; 115 116 internal_PREDICT_ACK = new Tcontrol_t [_param->_nb_inst_predict]; 117 internal_PREDICT_HIT = new Tcontrol_t [_param->_nb_inst_predict]; 118 internal_DECOD_ACK = new Tcontrol_t [_param->_nb_inst_decod ]; 119 internal_DECOD_HIT = new Tcontrol_t [_param->_nb_inst_decod ]; 120 internal_UPDATE_ACK = new Tcontrol_t [_param->_nb_inst_update ]; 119 ALLOC1(internal_PREDICT_ACK ,Tcontrol_t ,_param->_nb_inst_predict); 120 ALLOC1(internal_PREDICT_HIT ,Tcontrol_t ,_param->_nb_inst_predict); 121 ALLOC1(internal_DECOD_ACK ,Tcontrol_t ,_param->_nb_inst_decod ); 122 ALLOC1(internal_DECOD_HIT ,Tcontrol_t ,_param->_nb_inst_decod ); 123 ALLOC1(internal_UPDATE_ACK ,Tcontrol_t ,_param->_nb_inst_update ); 121 124 } 122 125 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Return_Address_Stack/src/Return_Address_Stack_deallocation.cpp
r100 r112 59 59 60 60 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61 62 for (uint32_t i=0; i<_param->_nb_context; i++) 63 delete [] reg_stack [i]; 64 delete [] reg_stack; 65 delete [] reg_TOP; 66 // delete [] reg_BOTTOM; 67 delete [] reg_NB_ELT; 68 delete [] reg_PREDICT_TOP; 69 // delete [] reg_PREDICT_BOTTOM; 70 delete [] reg_PREDICT_NB_ELT; 71 72 delete [] internal_PREDICT_ACK; 73 delete [] internal_PREDICT_HIT; 74 delete [] internal_DECOD_ACK; 75 delete [] internal_DECOD_HIT; 76 delete [] internal_UPDATE_ACK; 61 DELETE2(reg_stack ,_param->_nb_context,_param->_size_queue [it1]); 62 63 DELETE1(reg_TOP ,_param->_nb_context); 64 // DELETE1(reg_BOTTOM ,_param->_nb_context); 65 DELETE1(reg_NB_ELT ,_param->_nb_context); 66 67 DELETE1(reg_PREDICT_TOP ,_param->_nb_context); 68 // DELETE1(reg_PREDICT_BOTTOM ,_param->_nb_context); 69 DELETE1(reg_PREDICT_NB_ELT ,_param->_nb_context); 70 71 DELETE1(internal_PREDICT_ACK ,_param->_nb_inst_predict); 72 DELETE1(internal_PREDICT_HIT ,_param->_nb_inst_predict); 73 DELETE1(internal_DECOD_ACK ,_param->_nb_inst_decod ); 74 DELETE1(internal_DECOD_HIT ,_param->_nb_inst_decod ); 75 DELETE1(internal_UPDATE_ACK ,_param->_nb_inst_update ); 77 76 } 78 77 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp
r111 r112 126 126 ALLOC1_SC_SIGNAL(out_UPDATE_MISS_PREDICTION ,"out_UPDATE_MISS_PREDICTION ",Tcontrol_t ,_param->_nb_inst_update); 127 127 ALLOC1_SC_SIGNAL(out_UPDATE_DIRECTION_GOOD ,"out_UPDATE_DIRECTION_GOOD ",Tcontrol_t ,_param->_nb_inst_update); 128 ALLOC1_SC_SIGNAL(out_UPDATE_PREDICTION_IFETCH ,"out_UPDATE_PREDICTION_IFETCH ",Tcontrol_t ,_param->_nb_inst_update); 128 129 ALLOC1_SC_SIGNAL(out_UPDATE_BTB_VAL ,"out_UPDATE_BTB_VAL ",Tcontrol_t ,_param->_nb_inst_update); 129 130 ALLOC1_SC_SIGNAL(out_UPDATE_BTB_ADDRESS_SRC ,"out_UPDATE_BTB_ADDRESS_SRC ",Taddress_t ,_param->_nb_inst_update); … … 137 138 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_ADDRESS ,"out_UPDATE_RAS_ADDRESS ",Taddress_t ,_param->_nb_inst_update); 138 139 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_INDEX ,"out_UPDATE_RAS_INDEX ",Tptr_t ,_param->_nb_inst_update); 139 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_PREDICTION_IFETCH ,"out_UPDATE_RAS_PREDICTION_IFETCH ",Tcontrol_t ,_param->_nb_inst_update);140 140 141 141 ALLOC1_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t ,_param->_nb_context); … … 223 223 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_MISS_PREDICTION ,_param->_nb_inst_update); 224 224 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_DIRECTION_GOOD ,_param->_nb_inst_update); 225 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_PREDICTION_IFETCH ,_param->_nb_inst_update); 225 226 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_BTB_VAL ,_param->_nb_inst_update); 226 227 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_BTB_ADDRESS_SRC ,_param->_nb_inst_update); … … 235 236 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_ADDRESS ,_param->_nb_inst_update); 236 237 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_INDEX ,_param->_nb_inst_update); 237 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_PREDICTION_IFETCH ,_param->_nb_inst_update);238 238 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_EVENT_VAL ,_param->_nb_context); 239 239 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_EVENT_ACK ,_param->_nb_context); … … 575 575 TEST(Tcontrol_t ,out_UPDATE_MISS_PREDICTION [port]->read(),it_upt->miss_commit); 576 576 TEST(Tcontrol_t ,out_UPDATE_DIRECTION_GOOD [port]->read(),it_upt->take_good); 577 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 577 578 TEST(Tcontrol_t ,out_UPDATE_BTB_VAL [port]->read(),update_btb(it_upt->condition)); 578 579 if (update_btb(it_upt->condition)) … … 593 594 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 594 595 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 595 TEST(Tcontrol_t ,out_UPDATE_RAS_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch);596 596 } 597 597 ++ it_upt; … … 906 906 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 907 907 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 908 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);908 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 909 909 } 910 910 ++ it_upt; … … 1281 1281 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_ufpt->ras_address); 1282 1282 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_ufpt->ras_index); 1283 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_ufpt->miss_ifetch);1283 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch); 1284 1284 } 1285 1285 } … … 1353 1353 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 1354 1354 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 1355 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);1355 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 1356 1356 } 1357 1357 ++ it_upt; … … 1888 1888 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_ufpt->ras_address); 1889 1889 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_ufpt->ras_index); 1890 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_ufpt->miss_ifetch);1890 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch); 1891 1891 } 1892 1892 } … … 1976 1976 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 1977 1977 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 1978 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);1978 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 1979 1979 } 1980 1980 … … 2103 2103 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 2104 2104 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 2105 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);2105 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 2106 2106 } 2107 2107 … … 2544 2544 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_ufpt->ras_address); 2545 2545 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_ufpt->ras_index); 2546 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_ufpt->miss_ifetch);2546 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_ufpt->miss_ifetch); 2547 2547 } 2548 2548 } … … 2637 2637 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 2638 2638 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 2639 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);2639 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 2640 2640 } 2641 2641 // -- it_upt; … … 2763 2763 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(),it_upt->ras_address); 2764 2764 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(),it_upt->ras_index); 2765 TEST(Tcontrol_t ,out_UPDATE_ RAS_PREDICTION_IFETCH[port]->read(),not it_upt->miss_ifetch);2765 TEST(Tcontrol_t ,out_UPDATE_PREDICTION_IFETCH [port]->read(),not it_upt->miss_ifetch); 2766 2766 } 2767 2767 … … 2870 2870 delete [] out_UPDATE_MISS_PREDICTION ; 2871 2871 delete [] out_UPDATE_DIRECTION_GOOD ; 2872 delete [] out_UPDATE_PREDICTION_IFETCH ; 2872 2873 delete [] out_UPDATE_BTB_VAL ; 2873 2874 delete [] out_UPDATE_BTB_ADDRESS_SRC ; … … 2881 2882 delete [] out_UPDATE_RAS_ADDRESS ; 2882 2883 delete [] out_UPDATE_RAS_INDEX ; 2883 delete [] out_UPDATE_RAS_PREDICTION_IFETCH;2884 2884 2885 2885 DELETE1_SC_SIGNAL( in_EVENT_VAL ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Types.h
r111 r112 88 88 public : Tcontrol_t _ifetch_prediction; // not in ufpt 89 89 90 // to branchement_log_file 90 91 public : bool _retire_ok ; 92 public : bool _miss_prediction ; 91 93 }; 92 94 … … 115 117 #define pop_ras(cond) ((cond == BRANCH_CONDITION_READ_STACK )) 116 118 117 #define need_update(cond) update_ras(cond)119 #define need_update(cond) (update_ras(cond) or update_dir(cond)) 118 120 119 121 }; // end namespace update_prediction_table -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/include/Update_Prediction_Table.h
r111 r112 130 130 public : SC_OUT(Tcontrol_t ) ** out_UPDATE_MISS_PREDICTION ; //[nb_inst_update] 131 131 public : SC_OUT(Tcontrol_t ) ** out_UPDATE_DIRECTION_GOOD ; //[nb_inst_update] 132 public : SC_OUT(Tcontrol_t ) ** out_UPDATE_PREDICTION_IFETCH ; //[nb_inst_update] 132 133 public : SC_OUT(Tcontrol_t ) ** out_UPDATE_BTB_VAL ; //[nb_inst_update] 133 134 public : SC_OUT(Taddress_t ) ** out_UPDATE_BTB_ADDRESS_SRC ; //[nb_inst_update] … … 141 142 public : SC_OUT(Taddress_t ) ** out_UPDATE_RAS_ADDRESS ; //[nb_inst_update] 142 143 public : SC_OUT(Tptr_t ) ** out_UPDATE_RAS_INDEX ; //[nb_inst_update] 143 public : SC_OUT(Tcontrol_t ) ** out_UPDATE_RAS_PREDICTION_IFETCH ; //[nb_inst_update]144 144 145 145 // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 183 183 private : bool * reg_EVENT_VAL ; //[nb_context] 184 184 private : uint32_t * reg_EVENT_UPT_PTR ; //[nb_context] 185 private : bool * reg_EVENT_UPT_FULL ; //[nb_context] 185 186 186 187 private : event_state_t * reg_EVENT_STATE ; //[nb_context] 187 private : event_source_t * reg_EVENT_SOURCE; //[nb_context]188 private : bool * reg_EVENT_IS_BRANCH ; //[nb_context] 188 189 private : Tdepth_t * reg_EVENT_DEPTH ; //[nb_context] 189 190 private : Taddress_t * reg_EVENT_ADDRESS_SRC ; //[nb_context] // Address branch -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_allocation.cpp
r111 r112 48 48 ,IN 49 49 ,SOUTH, 50 "Generalist interface"50 _("Generalist interface") 51 51 #endif 52 52 ); … … 58 58 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("predict", IN,SOUTH, "predict", _param->_nb_inst_predict);60 ALLOC1_INTERFACE_BEGIN("predict", IN,SOUTH, _("predict"), _param->_nb_inst_predict); 61 61 62 62 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 72 72 ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_ADDRESS ,"ras_address" ,Taddress_t ,_param->_size_instruction_address); 73 73 ALLOC1_SIGNAL_IN ( in_PREDICT_RAS_INDEX ,"ras_index" ,Tptr_t ,_param->_max_size_ras_index); 74 75 ALLOC1_INTERFACE_END(_param->_nb_inst_predict); 74 76 } 75 77 76 78 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC1_INTERFACE ("decod", IN,SOUTH, "decod", _param->_nb_inst_decod);80 ALLOC1_INTERFACE_BEGIN("decod", IN,SOUTH, _("decod"), _param->_nb_inst_decod); 79 81 80 82 ALLOC1_VALACK_IN ( in_DECOD_VAL ,VAL); … … 93 95 ALLOC1_SIGNAL_IN ( in_DECOD_IS_ACCURATE ,"is_accurate" ,Tcontrol_t ,1); 94 96 ALLOC1_SIGNAL_OUT(out_DECOD_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1); 97 98 ALLOC1_INTERFACE_END(_param->_nb_inst_decod); 95 99 } 96 100 97 101 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 102 { 99 ALLOC1_INTERFACE ("branch_complete", IN,SOUTH, "branch_complete", _param->_nb_inst_branch_complete);103 ALLOC1_INTERFACE_BEGIN("branch_complete", IN,SOUTH, _("branch_complete"), _param->_nb_inst_branch_complete); 100 104 101 105 ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL ,VAL); … … 109 113 // ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_SRC ,"address_src" ,Taddress_t,_param->_size_instruction_address); 110 114 // ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_instruction_address); 115 116 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 111 117 } 112 118 113 119 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 120 { 115 ALLOC1_INTERFACE ("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);121 ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context); 116 122 117 123 ALLOC1_VALACK_OUT(out_BRANCH_EVENT_VAL ,VAL); … … 123 129 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1); 124 130 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_instruction_address); 131 132 ALLOC1_INTERFACE_END(_param->_nb_context); 125 133 } 126 134 127 135 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 128 136 { 129 ALLOC1_INTERFACE ("update",OUT,SOUTH, "update", _param->_nb_inst_update);137 ALLOC1_INTERFACE_BEGIN("update",OUT,SOUTH, "update", _param->_nb_inst_update); 130 138 131 139 ALLOC1_VALACK_OUT(out_UPDATE_VAL ,VAL); … … 134 142 ALLOC1_SIGNAL_OUT(out_UPDATE_MISS_PREDICTION ,"miss_prediction" ,Tcontrol_t ,1); 135 143 ALLOC1_SIGNAL_OUT(out_UPDATE_DIRECTION_GOOD ,"direction_good" ,Tcontrol_t ,1); 144 ALLOC1_SIGNAL_OUT(out_UPDATE_PREDICTION_IFETCH ,"prediction_ifetch" ,Tcontrol_t ,1); 136 145 ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_VAL ,"btb_val" ,Tcontrol_t ,1); 137 146 ALLOC1_SIGNAL_OUT(out_UPDATE_BTB_ADDRESS_SRC ,"btb_address_src" ,Taddress_t ,_param->_size_instruction_address); … … 145 154 ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_ADDRESS ,"ras_address" ,Taddress_t ,_param->_size_instruction_address); 146 155 ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_INDEX ,"ras_index" ,Tptr_t ,_param->_max_size_ras_index); 147 ALLOC1_SIGNAL_OUT(out_UPDATE_RAS_PREDICTION_IFETCH,"ras_prediction_ifetch",Tcontrol_t ,1); 156 157 ALLOC1_INTERFACE_END(_param->_nb_inst_update); 148 158 } 149 159 150 160 // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 151 161 { 152 ALLOC1_INTERFACE ("event", IN,SOUTH,"event", _param->_nb_context);162 ALLOC1_INTERFACE_BEGIN("event", IN,SOUTH,_("event"), _param->_nb_context); 153 163 154 164 ALLOC1_VALACK_IN ( in_EVENT_VAL ,VAL); … … 156 166 ALLOC1_SIGNAL_IN ( in_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 157 167 ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH ,"depth",Tdepth_t ,_param->_size_depth ); 168 169 ALLOC1_INTERFACE_END(_param->_nb_context); 158 170 } 159 171 160 172 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 161 173 { 162 ALLOC1_INTERFACE("depth",OUT,SOUTH, "depth", _param->_nb_context); 174 ALLOC1_INTERFACE_BEGIN("depth",OUT,SOUTH, _("depth"), _param->_nb_context); 175 163 176 ALLOC1_SIGNAL_OUT(out_DEPTH_VAL ,"VAL" ,Tcontrol_t,1); 164 177 ALLOC1_SIGNAL_OUT(out_DEPTH_CURRENT,"CURRENT",Tdepth_t ,_param->_size_depth); … … 166 179 ALLOC1_SIGNAL_OUT(out_DEPTH_MAX ,"MAX" ,Tdepth_t ,_param->_size_depth); 167 180 ALLOC1_SIGNAL_OUT(out_DEPTH_FULL ,"FULL" ,Tcontrol_t,1); 181 182 ALLOC1_INTERFACE_END(_param->_nb_context); 168 183 } 169 184 … … 209 224 ALLOC1(reg_EVENT_VAL ,bool ,_param->_nb_context); 210 225 ALLOC1(reg_EVENT_UPT_PTR ,uint32_t ,_param->_nb_context); 226 ALLOC1(reg_EVENT_UPT_FULL ,bool ,_param->_nb_context); 211 227 212 228 ALLOC1(reg_EVENT_STATE ,event_state_t ,_param->_nb_context); 213 ALLOC1(reg_EVENT_ SOURCE ,event_source_t,_param->_nb_context);229 ALLOC1(reg_EVENT_IS_BRANCH ,bool ,_param->_nb_context); 214 230 ALLOC1(reg_EVENT_DEPTH ,Tdepth_t ,_param->_nb_context); 215 231 ALLOC1(reg_EVENT_ADDRESS_SRC ,Taddress_t ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_deallocation.cpp
r111 r112 29 29 delete in_NRESET; 30 30 31 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 delete [] in_PREDICT_VAL ; 33 delete [] out_PREDICT_ACK ; 34 if (_param->_have_port_context_id) 35 delete [] in_PREDICT_CONTEXT_ID ; 36 delete [] in_PREDICT_BTB_ADDRESS_SRC ; 37 delete [] in_PREDICT_BTB_ADDRESS_DEST ; 38 delete [] in_PREDICT_BTB_CONDITION ; 39 delete [] in_PREDICT_BTB_LAST_TAKE ; 40 delete [] in_PREDICT_BTB_IS_ACCURATE ; 41 if (_param->_have_port_history) 42 delete [] in_PREDICT_DIR_HISTORY ; 43 delete [] in_PREDICT_RAS_ADDRESS ; 44 delete [] in_PREDICT_RAS_INDEX ; 45 if (_param->_have_port_depth) 46 delete [] out_PREDICT_UPDATE_PREDICTION_ID; 47 48 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 49 delete [] in_DECOD_VAL ; 50 delete [] out_DECOD_ACK ; 51 if (_param->_have_port_context_id) 52 delete [] in_DECOD_CONTEXT_ID ; 53 delete [] in_DECOD_BTB_ADDRESS_SRC ; 54 delete [] in_DECOD_BTB_ADDRESS_DEST ; 55 delete [] in_DECOD_BTB_CONDITION ; 56 delete [] in_DECOD_BTB_LAST_TAKE ; 57 delete [] in_DECOD_RAS_ADDRESS ; 58 delete [] in_DECOD_RAS_INDEX ; 59 delete [] in_DECOD_MISS_IFETCH ; 60 delete [] in_DECOD_MISS_DECOD ; 61 if (_param->_have_port_depth) 62 delete [] in_DECOD_UPDATE_PREDICTION_ID ; 63 // if (_param->_have_port_depth) 64 // delete [] out_DECOD_DEPTH ; 65 delete [] in_DECOD_IS_ACCURATE ; 66 delete [] out_DECOD_CAN_CONTINUE ; 67 68 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 delete [] in_BRANCH_COMPLETE_VAL ; 70 delete [] out_BRANCH_COMPLETE_ACK ; 71 if (_param->_have_port_context_id) 72 delete [] in_BRANCH_COMPLETE_CONTEXT_ID ; 73 if (_param->_have_port_depth) 74 delete [] in_BRANCH_COMPLETE_DEPTH ; 75 delete [] in_BRANCH_COMPLETE_ADDRESS ; 76 delete [] in_BRANCH_COMPLETE_NO_SEQUENCE ; 77 delete [] out_BRANCH_COMPLETE_MISS_PREDICTION; 78 // delete [] out_BRANCH_COMPLETE_TAKE ; 79 // delete [] out_BRANCH_COMPLETE_ADDRESS_SRC ; 80 // delete [] out_BRANCH_COMPLETE_ADDRESS_DEST ; 31 // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 DELETE1_SIGNAL( in_PREDICT_VAL ,_param->_nb_inst_predict,1); 33 DELETE1_SIGNAL(out_PREDICT_ACK ,_param->_nb_inst_predict,1); 34 DELETE1_SIGNAL( in_PREDICT_CONTEXT_ID ,_param->_nb_inst_predict,_param->_size_context_id); 35 DELETE1_SIGNAL(out_PREDICT_UPDATE_PREDICTION_ID,_param->_nb_inst_predict,_param->_size_depth); 36 DELETE1_SIGNAL( in_PREDICT_BTB_ADDRESS_SRC ,_param->_nb_inst_predict,_param->_size_instruction_address); 37 DELETE1_SIGNAL( in_PREDICT_BTB_ADDRESS_DEST ,_param->_nb_inst_predict,_param->_size_instruction_address); 38 DELETE1_SIGNAL( in_PREDICT_BTB_CONDITION ,_param->_nb_inst_predict,_param->_size_branch_condition); 39 DELETE1_SIGNAL( in_PREDICT_BTB_LAST_TAKE ,_param->_nb_inst_predict,1); 40 DELETE1_SIGNAL( in_PREDICT_BTB_IS_ACCURATE ,_param->_nb_inst_predict,1); 41 DELETE1_SIGNAL( in_PREDICT_DIR_HISTORY ,_param->_nb_inst_predict,_param->_size_history); 42 DELETE1_SIGNAL( in_PREDICT_RAS_ADDRESS ,_param->_nb_inst_predict,_param->_size_instruction_address); 43 DELETE1_SIGNAL( in_PREDICT_RAS_INDEX ,_param->_nb_inst_predict,_param->_max_size_ras_index); 44 45 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 DELETE1_SIGNAL( in_DECOD_VAL ,_param->_nb_inst_decod,1); 47 DELETE1_SIGNAL(out_DECOD_ACK ,_param->_nb_inst_decod,1); 48 DELETE1_SIGNAL( in_DECOD_CONTEXT_ID ,_param->_nb_inst_decod,_param->_size_context_id); 49 DELETE1_SIGNAL( in_DECOD_BTB_ADDRESS_SRC ,_param->_nb_inst_decod,_param->_size_instruction_address); 50 DELETE1_SIGNAL( in_DECOD_BTB_ADDRESS_DEST ,_param->_nb_inst_decod,_param->_size_instruction_address); 51 DELETE1_SIGNAL( in_DECOD_BTB_CONDITION ,_param->_nb_inst_decod,_param->_size_branch_condition); 52 DELETE1_SIGNAL( in_DECOD_BTB_LAST_TAKE ,_param->_nb_inst_decod,1); 53 DELETE1_SIGNAL( in_DECOD_RAS_ADDRESS ,_param->_nb_inst_decod,_param->_size_instruction_address); 54 DELETE1_SIGNAL( in_DECOD_RAS_INDEX ,_param->_nb_inst_decod,_param->_max_size_ras_index); 55 DELETE1_SIGNAL( in_DECOD_MISS_IFETCH ,_param->_nb_inst_decod,1); 56 DELETE1_SIGNAL( in_DECOD_MISS_DECOD ,_param->_nb_inst_decod,1); 57 DELETE1_SIGNAL( in_DECOD_UPDATE_PREDICTION_ID,_param->_nb_inst_decod,_param->_size_depth); 58 // DELETE1_SIGNAL(out_DECOD_DEPTH ,_param->_nb_inst_decod,_param->_size_depth); 59 DELETE1_SIGNAL( in_DECOD_IS_ACCURATE ,_param->_nb_inst_decod,1); 60 DELETE1_SIGNAL(out_DECOD_CAN_CONTINUE ,_param->_nb_inst_decod,1); 61 62 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 63 DELETE1_SIGNAL( in_BRANCH_COMPLETE_VAL ,_param->_nb_inst_branch_complete,1); 64 DELETE1_SIGNAL(out_BRANCH_COMPLETE_ACK ,_param->_nb_inst_branch_complete,1); 65 DELETE1_SIGNAL( in_BRANCH_COMPLETE_CONTEXT_ID ,_param->_nb_inst_branch_complete,_param->_size_context_id); 66 DELETE1_SIGNAL( in_BRANCH_COMPLETE_DEPTH ,_param->_nb_inst_branch_complete,_param->_size_depth); 67 DELETE1_SIGNAL( in_BRANCH_COMPLETE_ADDRESS ,_param->_nb_inst_branch_complete,_param->_size_instruction_address); 68 DELETE1_SIGNAL( in_BRANCH_COMPLETE_NO_SEQUENCE ,_param->_nb_inst_branch_complete,1); 69 DELETE1_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete,1); 70 // DELETE1_SIGNAL(out_BRANCH_COMPLETE_TAKE ,_param->_nb_inst_branch_complete,1); 71 // DELETE1_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_SRC ,_param->_nb_inst_branch_complete,_param->_size_instruction_address); 72 // DELETE1_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_DEST ,_param->_nb_inst_branch_complete,_param->_size_instruction_address); 81 73 82 74 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 90 82 DELETE1_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context,_param->_size_instruction_address); 91 83 92 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 93 delete [] out_UPDATE_VAL ; 94 delete [] in_UPDATE_ACK ; 95 if (_param->_have_port_context_id) 96 delete [] out_UPDATE_CONTEXT_ID ; 97 delete [] out_UPDATE_MISS_PREDICTION ; 98 delete [] out_UPDATE_DIRECTION_GOOD ; 99 delete [] out_UPDATE_BTB_VAL ; 100 delete [] out_UPDATE_BTB_ADDRESS_SRC ; 101 delete [] out_UPDATE_BTB_ADDRESS_DEST ; 102 delete [] out_UPDATE_BTB_CONDITION ; 103 delete [] out_UPDATE_DIR_VAL ; 104 if (_param->_have_port_history) 105 delete [] out_UPDATE_DIR_HISTORY ; 106 delete [] out_UPDATE_RAS_VAL ; 107 delete [] out_UPDATE_RAS_FLUSH ; 108 delete [] out_UPDATE_RAS_PUSH ; 109 delete [] out_UPDATE_RAS_ADDRESS ; 110 delete [] out_UPDATE_RAS_INDEX ; 111 delete [] out_UPDATE_RAS_PREDICTION_IFETCH; 84 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 85 DELETE1_SIGNAL(out_UPDATE_VAL ,_param->_nb_inst_update,1); 86 DELETE1_SIGNAL( in_UPDATE_ACK ,_param->_nb_inst_update,1); 87 DELETE1_SIGNAL(out_UPDATE_CONTEXT_ID ,_param->_nb_inst_update,_param->_size_context_id); 88 DELETE1_SIGNAL(out_UPDATE_MISS_PREDICTION ,_param->_nb_inst_update,1); 89 DELETE1_SIGNAL(out_UPDATE_DIRECTION_GOOD ,_param->_nb_inst_update,1); 90 DELETE1_SIGNAL(out_UPDATE_PREDICTION_IFETCH ,_param->_nb_inst_update,1); 91 DELETE1_SIGNAL(out_UPDATE_BTB_VAL ,_param->_nb_inst_update,1); 92 DELETE1_SIGNAL(out_UPDATE_BTB_ADDRESS_SRC ,_param->_nb_inst_update,_param->_size_instruction_address); 93 DELETE1_SIGNAL(out_UPDATE_BTB_ADDRESS_DEST ,_param->_nb_inst_update,_param->_size_instruction_address); 94 DELETE1_SIGNAL(out_UPDATE_BTB_CONDITION ,_param->_nb_inst_update,_param->_size_branch_condition); 95 DELETE1_SIGNAL(out_UPDATE_DIR_VAL ,_param->_nb_inst_update,1); 96 DELETE1_SIGNAL(out_UPDATE_DIR_HISTORY ,_param->_nb_inst_update,_param->_size_history); 97 DELETE1_SIGNAL(out_UPDATE_RAS_VAL ,_param->_nb_inst_update,1); 98 DELETE1_SIGNAL(out_UPDATE_RAS_FLUSH ,_param->_nb_inst_update,1); 99 DELETE1_SIGNAL(out_UPDATE_RAS_PUSH ,_param->_nb_inst_update,1); 100 DELETE1_SIGNAL(out_UPDATE_RAS_ADDRESS ,_param->_nb_inst_update,_param->_size_instruction_address); 101 DELETE1_SIGNAL(out_UPDATE_RAS_INDEX ,_param->_nb_inst_update,_param->_max_size_ras_index); 112 102 113 103 // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 162 152 DELETE1(reg_EVENT_VAL ,_param->_nb_context); 163 153 DELETE1(reg_EVENT_UPT_PTR ,_param->_nb_context); 154 DELETE1(reg_EVENT_UPT_FULL ,_param->_nb_context); 164 155 165 156 DELETE1(reg_EVENT_STATE ,_param->_nb_context); 166 DELETE1(reg_EVENT_ SOURCE,_param->_nb_context);157 DELETE1(reg_EVENT_IS_BRANCH ,_param->_nb_context); 167 158 DELETE1(reg_EVENT_DEPTH ,_param->_nb_context); 168 159 DELETE1(reg_EVENT_ADDRESS_SRC ,_param->_nb_context); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_genMoore.cpp
r111 r112 98 98 Tcontrol_t miss_prediction ; 99 99 Tcontrol_t direction_good ; 100 Tcontrol_t prediction_ifetch ; 100 101 Tcontrol_t btb_val ; 101 102 Taddress_t btb_address_src ; … … 109 110 Taddress_t ras_address ; 110 111 Tptr_t ras_index ; 111 Tcontrol_t ras_prediction_ifetch;112 112 113 113 // Test if update fetch prediction table need update port … … 133 133 miss_prediction = 1; 134 134 // direction_good = ; 135 prediction_ifetch = 1; 135 136 btb_val = 0; // don't update btb (is update by the event branch) 136 // btb_address_src = ;137 // btb_address_dest = ;138 // btb_condition = ;139 dir_val = 0; // don't update btb (is update by the event branch (if conditionnal branch))140 // dir_history =;137 // btb_address_src = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src ; 138 // btb_address_dest = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest; 139 // btb_condition = condition; 140 dir_val = update_ras(condition); 141 dir_history = reg_UPDATE_PREDICTION_TABLE [context][depth]._history; 141 142 // repop/ repush data -> don't corrupt ras 142 143 ras_val = update_ras(condition); … … 145 146 ras_address = reg_UPDATE_FETCH_PREDICTION_TABLE [context][depth]._address_ras; 146 147 ras_index = reg_UPDATE_FETCH_PREDICTION_TABLE [context][depth]._index_ras; 147 ras_prediction_ifetch = 1;148 148 149 149 internal_UPDATE_FROM_UFPT [i] = true; … … 200 200 miss_prediction = (state != UPDATE_PREDICTION_STATE_OK); 201 201 direction_good = reg_UPDATE_PREDICTION_TABLE [context][depth]._good_take ; 202 prediction_ifetch = ifetch; 202 203 btb_val = state_is_ok_ko and update_btb(condition); 203 204 btb_address_src = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src ; 204 205 btb_address_dest = reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest; 205 206 btb_condition = condition; 206 dir_val = state_is_ok_ko and update_dir(condition) and ifetch; // if not ifetch, then static prediction 207 dir_val = // state_is_ok_ko and 208 update_dir(condition); // if not ifetch, then static prediction 207 209 dir_history = reg_UPDATE_PREDICTION_TABLE [context][depth]._history ; 208 210 ras_val = update_ras(condition); // repop/ repush data -> don't corrupt ras … … 213 215 ras_address = (ras_flush)?(reg_UPDATE_PREDICTION_TABLE [context][depth]._address_src+2):reg_UPDATE_PREDICTION_TABLE [context][depth]._address_ras; 214 216 ras_index = reg_UPDATE_PREDICTION_TABLE [context][depth]._index_ras; 215 ras_prediction_ifetch = ifetch;216 217 217 218 internal_UPDATE_FROM_UFPT [i] = false; … … 257 258 PORT_WRITE(out_UPDATE_MISS_PREDICTION [i],miss_prediction ); 258 259 PORT_WRITE(out_UPDATE_DIRECTION_GOOD [i],direction_good ); 260 PORT_WRITE(out_UPDATE_PREDICTION_IFETCH [i],prediction_ifetch ); 259 261 PORT_WRITE(out_UPDATE_BTB_VAL [i],btb_val ); 260 262 PORT_WRITE(out_UPDATE_BTB_ADDRESS_SRC [i],btb_address_src ); … … 269 271 PORT_WRITE(out_UPDATE_RAS_ADDRESS [i],ras_address ); 270 272 PORT_WRITE(out_UPDATE_RAS_INDEX [i],ras_index ); 271 PORT_WRITE(out_UPDATE_RAS_PREDICTION_IFETCH [i],ras_prediction_ifetch);272 273 } 273 274 } … … 290 291 } 291 292 } 293 else 294 { 295 for (uint32_t i=0; i<_param->_nb_inst_update; i++) 296 { 297 internal_UPDATE_VAL [i] = 0; 298 internal_UPDATE_VAL_WITHOUT_ACK [i] = 0; 299 } 300 for (uint32_t i=0; i<_param->_nb_context; i++) 301 { 302 internal_BRANCH_EVENT_VAL [i] = 0; 303 } 304 } 305 292 306 293 307 log_end(Update_Prediction_Table,FUNCTION); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/src/Update_Prediction_Table_transition.cpp
r111 r112 53 53 reg_EVENT_VAL [i] = false; 54 54 reg_EVENT_STATE [i] = EVENT_STATE_OK; 55 reg_EVENT_IS_BRANCH [i] = true; 55 56 } 56 57 } … … 100 101 // Test if state is end 101 102 // if (end_ok or end_ko) 103 104 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * state is STATE_END : %d",end); 105 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_BOTTOM (before) : %d",reg_UPT_BOTTOM [i]); 106 102 107 if (end) 103 108 { … … 108 113 branchement_log_file [num_thread] 109 114 << std::hex 110 << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_src << " "111 << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_dest << " "115 << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_src << " " 116 << "0x" << reg_UPDATE_PREDICTION_TABLE [i][bottom]._address_dest << " " 112 117 << std::dec 113 << reg_UPDATE_PREDICTION_TABLE [i][bottom]._good_take << " " 118 << reg_UPDATE_PREDICTION_TABLE [i][bottom]._good_take << " - " 119 << "[" << sc_simulation_time() << "] " << " " 120 << reg_UPDATE_PREDICTION_TABLE [i][bottom]._miss_prediction << " " 121 << reg_UPDATE_PREDICTION_TABLE [i][bottom]._ifetch_prediction << " " 122 << "(" << (uint32_t)reg_UPDATE_PREDICTION_TABLE [i][bottom]._condition << ")" 114 123 << std::endl; 115 124 } … … 128 137 // if (bottom = reg_UPT_UPDATE [i]) 129 138 // reg_UPT_UPDATE [i] = reg_UPT_BOTTOM [i]; 130 131 if (reg_EVENT_VAL [i] and (reg_EVENT_UPT_PTR [i] == bottom)) 139 }// @@@ 140 141 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_BOTTOM (after ) : %d",reg_UPT_BOTTOM [i]); 142 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_VAL : %d",reg_EVENT_VAL [i]); 143 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_PTR : %d",reg_EVENT_UPT_PTR [i]); 144 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_FULL : %d",reg_EVENT_UPT_FULL[i]); 145 146 if (reg_EVENT_VAL [i] and (reg_EVENT_UPT_PTR [i] == bottom)) 147 { 148 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * END EVENT"); 149 150 if ((reg_EVENT_IS_BRANCH [i] == false) and (reg_EVENT_UPT_FULL [i] == false)) 151 reg_EVENT_STATE[i] = EVENT_STATE_OK; 152 153 if ((reg_EVENT_IS_BRANCH [i] == true) or (reg_EVENT_UPT_FULL [i] == false)) 132 154 { 133 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * END EVENT"); 134 135 reg_EVENT_VAL [i] = false; 136 reg_UPT_TOP [i] = reg_UPT_TOP_EVENT [i]; 137 reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i]; 138 139 if (reg_UPT_BOTTOM [i] != reg_UPT_TOP [i]) 140 reg_UPT_EMPTY [i] = false; 141 142 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_TOP : %d",reg_UPT_TOP [i]); 143 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_TOP_EVENT : %d",reg_UPT_TOP_EVENT [i]); 144 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE : %d",reg_UPT_UPDATE [i]); 145 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_EMPTY : %d",reg_UPT_EMPTY [i]); 155 reg_EVENT_VAL [i] = false; 156 // reg_EVENT_IS_BRANCH [i] = true; 157 reg_UPT_TOP [i] = reg_UPT_TOP_EVENT [i]; 158 reg_UPT_UPDATE [i] = reg_UPT_TOP_EVENT [i]; 159 160 if (reg_UPT_BOTTOM [i] != reg_UPT_TOP [i]) 161 reg_UPT_EMPTY [i] = false; 146 162 } 147 163 164 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_TOP : %d",reg_UPT_TOP [i]); 165 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_TOP_EVENT : %d",reg_UPT_TOP_EVENT [i]); 166 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE : %d",reg_UPT_UPDATE [i]); 167 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_EMPTY : %d",reg_UPT_EMPTY [i]); 168 148 169 } 170 171 if (end) 172 reg_EVENT_UPT_FULL [i] = false; 149 173 } 150 174 } … … 245 269 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_UPDATE_CONTEXT (decod - miss - no flush ufpt)",context); 246 270 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 271 // reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT; 247 272 } 248 273 else … … 251 276 reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UFPT; 252 277 } 253 reg_EVENT_SOURCE [context] = EVENT_SOURCE_UFPT;254 278 255 279 // Flush UPFT 256 280 flush_UFPT [context] = true; 257 281 282 reg_EVENT_IS_BRANCH [context] = true; 258 283 reg_EVENT_DEPTH [context] = upt_ptr_write; 259 284 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State … … 357 382 (internal_UPDATE_VAL_WITHOUT_ACK [i] and can_continue [context])) 358 383 { 359 Tdepth_t depth = internal_UPDATE_DEPTH 384 Tdepth_t depth = internal_UPDATE_DEPTH [i]; 360 385 361 386 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * UPDATE[%d] - Accepted",i); … … 369 394 // if (reg_UFPT_UPDATE [context] == reg_UFPT_BOTTOM [context]) 370 395 if ((--reg_UFPT_NB_UPDATE [context])==0) 371 switch (reg_EVENT_STATE [context]) 372 { 373 case EVENT_STATE_MISS_FLUSH_UFPT : reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; break; 374 // impossible to have an update on ufpt and reg_upt_update>reg_upt_top 375 case EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UPT ; break; 376 case EVENT_STATE_EVENT_FLUSH_UFPT : reg_EVENT_STATE [context] = EVENT_STATE_OK ; break; 377 case EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: reg_EVENT_STATE [context] = EVENT_STATE_EVENT_FLUSH_UPT; break; 378 default : break; 379 } 396 { 397 switch (reg_EVENT_STATE [context]) 398 { 399 case EVENT_STATE_MISS_FLUSH_UFPT : 400 { 401 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 402 // reg_EVENT_SOURCE[context] = EVENT_SOURCE_UFPT; 403 404 break; 405 } 406 // impossible to have an update on ufpt and reg_upt_update>reg_upt_top 407 case EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT : reg_EVENT_STATE [context] = EVENT_STATE_MISS_FLUSH_UPT ; break; 408 case EVENT_STATE_EVENT_FLUSH_UFPT : reg_EVENT_STATE [context] = EVENT_STATE_OK ; break; 409 case EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT: reg_EVENT_STATE [context] = EVENT_STATE_EVENT_FLUSH_UPT; break; 410 default : break; 411 } 412 } 380 413 381 414 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * Update Fetch Prediction Table"); … … 405 438 { 406 439 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * Update Prediction Table"); 407 440 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE (before) : %d",reg_UPT_UPDATE [context]); 441 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s",toString(reg_EVENT_STATE [context]).c_str()); 442 408 443 // Change state 409 444 #ifdef DEBUG_TEST … … 430 465 431 466 if (ok or ko) 432 reg_UPDATE_PREDICTION_TABLE [context][depth]._retire_ok = true; 467 { 468 reg_UPDATE_PREDICTION_TABLE [context][depth]._retire_ok = true; 469 reg_UPDATE_PREDICTION_TABLE [context][depth]._miss_prediction = ko; 470 } 433 471 434 472 // Have an update, test the state to transiste to the good state … … 444 482 reg_UPDATE_PREDICTION_TABLE [context][depth]._state = UPDATE_PREDICTION_STATE_END_KO; 445 483 446 reg_EVENT_VAL [context] = true; 447 reg_EVENT_UPT_PTR [context] = depth; 484 reg_EVENT_VAL [context] = true; 485 reg_EVENT_UPT_PTR [context] = depth; 486 // reg_EVENT_UPT_FULL [context] = 0; 487 // reg_EVENT_UPT_FULL [i] = (not reg_UPT_EMPTY [i] and (bottom == reg_UPT_TOP [i])); 488 448 489 449 490 #ifdef STATISTICS … … 473 514 // Update pointer 474 515 // * if update RAS : update pointer is decreaste until it equal at top pointer 516 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * internal_UPDATE_RAS [%d] : %d",i,internal_UPDATE_RAS [i]); 517 475 518 if (internal_UPDATE_RAS [i]) 476 519 { 477 520 // if end_event, restart too bottom, else decrease pointer 478 521 bool end_event = (reg_UPT_UPDATE [context] == reg_UPT_TOP [context]); 522 523 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * end_event : %d",end_event); 524 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * bottom : %d",reg_UPT_BOTTOM[context]); 479 525 480 reg_UPT_UPDATE [context] = (end_event)?reg_UPT_BOTTOM[context]:(((depth==0)?_param->_size_upt_queue[context]:depth)-1);481 526 if (end_event) 482 527 { 483 // reg_UPT_UPDATE [context] = reg_UPT_BOTTOM[context]; 528 reg_UPT_UPDATE [context] = (end_event)?reg_UPT_BOTTOM[context]:(((depth==0)?_param->_size_upt_queue[context]:depth)-1); 529 // reg_UPT_UPDATE [context] = reg_UPT_BOTTOM[context]; 484 530 485 531 if (reg_EVENT_STATE [context] == EVENT_STATE_EVENT_FLUSH_UPT) … … 488 534 } 489 535 else 490 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 536 { 537 reg_EVENT_STATE [context] = EVENT_STATE_UPDATE_CONTEXT; 538 // reg_EVENT_SOURCE[context] = EVENT_SOURCE_UPT; 539 } 491 540 } 492 541 else … … 497 546 else 498 547 { 548 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * next update"); 549 499 550 // increase pointer 500 551 reg_UPT_UPDATE [context] = (depth+1)%_param->_size_upt_queue[context]; … … 502 553 503 554 // Free the branch with no accurate ? 504 if ( 555 if ((reg_UPDATE_PREDICTION_TABLE [context][depth]._is_accurate == false) and not ko) 505 556 reg_IS_ACCURATE [context] = true; 557 558 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE (after ) : %d",reg_UPT_UPDATE[context]); 559 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s",toString(reg_EVENT_STATE [context]).c_str()); 506 560 } 507 561 } … … 513 567 reg_UPDATE_PRIORITY = (reg_UPDATE_PRIORITY+1)%_param->_nb_context; 514 568 } 515 516 569 517 570 // =================================================================== … … 533 586 534 587 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * BRANCH_COMPLETE[%d] - Accepted",i); 535 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * context : %d",context); 536 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth); 537 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * miss : %d",miss); 588 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * context : %d",context); 589 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth); 590 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * miss : %d",miss); 591 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s",toString(reg_EVENT_STATE [context]).c_str()); 538 592 539 593 if (miss) … … 546 600 event_state_t event_state = reg_EVENT_STATE [context]; 547 601 upt_state_t event_top = reg_UPDATE_PREDICTION_TABLE [context][top]._state; 602 603 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * event_top : %s",toString(event_top).c_str()); 604 548 605 bool previous_ufpt_event = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or 549 606 (event_state == EVENT_STATE_MISS_FLUSH_UFPT ) or … … 551 608 (event_state == EVENT_STATE_EVENT_FLUSH_UFPT )); 552 609 553 bool previous_upt_event = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or 554 (event_state == EVENT_STATE_MISS_FLUSH_UPT ) or 555 (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or 556 (event_state == EVENT_STATE_EVENT_FLUSH_UPT ) or 557 (event_top == UPDATE_PREDICTION_STATE_END_KO ) or 558 (event_top == UPDATE_PREDICTION_STATE_KO ) 559 // (event_state == EVENT_STATE_WAIT_END_EVENT ) or 560 // ((event_state == EVENT_STATE_UPDATE_CONTEXT ) and 561 // (reg_EVENT_SOURCE [context] == EVENT_SOURCE_UPT)) 562 ); 610 bool previous_upt_event = (false 611 or (event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) 612 or (event_state == EVENT_STATE_MISS_FLUSH_UPT ) 613 or (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) 614 or (event_state == EVENT_STATE_EVENT_FLUSH_UPT ) 615 or (event_top == UPDATE_PREDICTION_STATE_END_KO ) 616 or (event_top == UPDATE_PREDICTION_STATE_KO ) 617 // or (event_state == EVENT_STATE_WAIT_END_EVENT ) 618 // or ((event_state == EVENT_STATE_UPDATE_CONTEXT ) 619 // and (reg_EVENT_SOURCE [context] == EVENT_SOURCE_UPT)) 620 ); 563 621 // bool update_ras = (new_update != depth); 564 622 … … 568 626 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * previous_upt_event : %d",previous_upt_event); 569 627 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * previous_ufpt_event : %d",previous_ufpt_event); 570 628 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_UPDATE : %d",reg_UPT_UPDATE [context]); 629 571 630 // Have a miss !!! 572 631 // Flush UPFT 573 flush_UFPT [context] = not previous_ufpt_event;632 flush_UFPT [context] |= not previous_ufpt_event; 574 633 575 634 if (reg_UPDATE_PREDICTION_TABLE [context][depth]._state == UPDATE_PREDICTION_STATE_WAIT_END) … … 587 646 reg_UPT_TOP [context] = depth; 588 647 // reg_UPT_TOP_EVENT [context] = top; 589 648 590 649 if (not previous_upt_event) 591 650 { … … 604 663 // Have already update predictor 605 664 reg_UPDATE_PREDICTION_TABLE [context][top]._state = UPDATE_PREDICTION_STATE_END; 665 reg_UPT_UPDATE [context] = new_update; 606 666 break; 607 667 } … … 649 709 } 650 710 } 651 reg_EVENT_SOURCE [context] = EVENT_SOURCE_UPT;711 // reg_EVENT_SOURCE [context] = EVENT_SOURCE_UPT; 652 712 653 713 // else no update 654 714 715 reg_EVENT_IS_BRANCH [context] = true; 655 716 reg_EVENT_DEPTH [context] = depth; 656 717 reg_EVENT_ADDRESS_SRC [context] = address_src; // delay_slot is compute in Context_State … … 675 736 } 676 737 738 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s",toString(reg_EVENT_STATE [context]).c_str()); 739 677 740 // In all case : update good_take 678 741 reg_UPDATE_PREDICTION_TABLE [context][depth]._good_take = good_take; … … 686 749 reg_UPDATE_PREDICTION_TABLE [context][depth]._address_dest = good_addr; 687 750 } 751 688 752 689 753 // =================================================================== … … 779 843 780 844 // Flush UPT 781 Tdepth_t depth = (_param->_have_port_depth)?PORT_READ(in_EVENT_DEPTH [i]):0; 782 uint32_t top = reg_UPT_TOP [i]; 783 uint32_t bottom = reg_UPT_BOTTOM [i]; 784 uint32_t new_update = ((top==0)?_param->_size_upt_queue[i]:top)-1; 785 // bool empty = reg_UPT_EMPTY [i]; 786 845 uint32_t bottom = reg_UPT_BOTTOM [i]; 846 847 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * bottom : %d",bottom); 848 849 // event_state_t event_state = reg_EVENT_STATE [i]; 850 // bool previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or 851 // (event_state == EVENT_STATE_MISS_FLUSH_UPT ) or 852 // (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or 853 // (event_state == EVENT_STATE_EVENT_FLUSH_UPT)); 854 855 bool find = false; // have slot to update ??? 856 Tdepth_t top = bottom; 857 Tdepth_t update = bottom; 858 bool empty = reg_UPT_EMPTY [i]; 859 860 // flush all slot, because this event is in head of rob 861 for (uint32_t j=0; j<_param->_size_upt_queue[i]; ++j) 862 { 863 Tdepth_t x = (bottom+j)%_param->_size_upt_queue[i]; 864 865 if ((reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_END) and 866 (reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_EMPTY)) 867 { 868 find = true; // find a not empty slot 869 reg_UPDATE_PREDICTION_TABLE [i][x]._state = UPDATE_PREDICTION_STATE_EVENT; 870 reg_UPDATE_PREDICTION_TABLE [i][x]._retire_ok = false; 871 update = x; 872 } 873 874 if (reg_UPDATE_PREDICTION_TABLE [i][x]._state != UPDATE_PREDICTION_STATE_EMPTY) 875 top = x+1; 876 } 877 878 top = top%_param->_size_upt_queue[i]; 879 880 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * find : %d",find); 787 881 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * top : %d",top); 788 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth);789 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * new_update : %d",new_update);790 791 event_state_t event_state = reg_EVENT_STATE [i];792 bool previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or793 (event_state == EVENT_STATE_MISS_FLUSH_UPT ) or794 (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or795 (event_state == EVENT_STATE_EVENT_FLUSH_UPT));796 797 bool find = false; // have slot to update ???798 Tdepth_t depth_new = depth;799 800 // flush all slot after the event801 for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];802 j!=top;803 j=(j+1)%_param->_size_upt_queue[i])804 if ((reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_END) and805 (reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_EMPTY))806 {807 find = true;808 reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;809 reg_UPDATE_PREDICTION_TABLE [i][j]._retire_ok = false;810 }811 else812 if (not find) // while state == end or empty813 depth_new ++;814 815 if ((reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_END) and816 (reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_EMPTY))817 {818 find = true;819 reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;820 reg_UPDATE_PREDICTION_TABLE [i][depth]._retire_ok = false;821 822 }823 else824 // while state == end or empty825 depth = (depth_new+1)%_param->_size_upt_queue[i];826 827 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * find : %d",find);828 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth_new : %d",depth_new);829 882 830 883 // Test if have update slot 831 884 if (find) 832 885 { 833 // // flush all slot after the event834 // for (uint32_t j=(depth+1)%_param->_size_upt_queue[i];835 // j!=top;836 // j=(j+1)%_param->_size_upt_queue[i])837 // reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT;838 839 // reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT;840 841 // reg_UPT_BOTTOM [i];842 886 // TODO : special case : event is an exception on branch, also depth is not valid 843 reg_UPT_TOP [i] = depth; // depth is again valid887 reg_UPT_TOP [i] = top; // depth is again valid 844 888 reg_UPT_TOP_EVENT [i] = top; 845 889 … … 847 891 reg_UPT_EMPTY [i] = true; 848 892 } 849 850 bool full = ((depth == top) and (top == bottom) and not reg_UPT_EMPTY [i]); 851 bool update_ras = find and ((top != depth) or full); 852 853 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * update_ras : %d",update_ras); 854 855 if (not previous_update_ras and update_ras) 856 reg_UPT_UPDATE [i] = new_update; 893 reg_UPT_UPDATE [i] = update; 857 894 858 895 // new state : … … 862 899 // * ok : nothing 863 900 // * ko : flush upt 864 reg_EVENT_VAL [i] = true; 865 reg_EVENT_UPT_PTR [i] = depth; 866 901 reg_EVENT_VAL [i] = find; 902 reg_EVENT_IS_BRANCH [i] = false; 903 reg_EVENT_UPT_PTR [i] = top; 904 reg_EVENT_UPT_FULL [i] = (not empty and (bottom == reg_UPT_TOP [i])); 905 reg_EVENT_DEPTH [i] = top; 906 // reg_EVENT_ADDRESS_SRC [i] = address_src; // delay_slot is compute in I_State 907 // reg_EVENT_ADDRESS_DEST_VAL[i] = good_take; 908 // reg_EVENT_ADDRESS_DEST [i] = good_addr; 909 910 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_BOTTOM : %d",reg_UPT_BOTTOM [i]); 911 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_TOP : %d",reg_UPT_TOP [i]); 912 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UPT_EMPTY : %d",reg_UPT_EMPTY [i]); 913 914 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_VAL : %d",reg_EVENT_VAL [i]); 915 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_PTR : %d",reg_EVENT_UPT_PTR [i]); 916 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_FULL : %d",reg_EVENT_UPT_FULL [i]); 867 917 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UFPT_NB_NEED_UPDATE : %d",reg_UFPT_NB_NEED_UPDATE [i]); 868 // if (reg_UFPT_NB_NEED_UPDATE [i] > 0) 918 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UFPT_NB_UPDATE : %d",reg_UFPT_NB_UPDATE [i]); 919 869 920 if ( (reg_UFPT_NB_NEED_UPDATE [i] > 0) or 870 921 (reg_UFPT_NB_UPDATE [i] > 0)) 871 922 { 872 if ( update_ras)923 if (find) 873 924 { 874 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT ( branch_complete - miss)",i);925 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT (event - find)",i); 875 926 reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT; 876 927 } 877 928 else 878 929 { 879 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (branch_complete - miss)",i); 930 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (event - not find)",i); 931 // reg_EVENT_VAL [i] = false; 932 880 933 reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT; 881 934 } … … 883 936 else 884 937 { 885 // if (not previous_update_ras) 886 if (update_ras) 938 if (find) 887 939 { 888 940 // have ras prediction ? 889 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT ( branch_complete - miss)",i);941 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (event - find)",i); 890 942 891 943 reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UPT; … … 894 946 { 895 947 // special case : nothing 896 reg_EVENT_VAL [i] = false; 948 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (event - not find)",i); 949 950 // reg_EVENT_VAL [i] = false; 897 951 898 952 reg_EVENT_STATE [i] = EVENT_STATE_OK; … … 902 956 // else no update 903 957 904 reg_EVENT_DEPTH [i] = depth; 905 // reg_EVENT_ADDRESS_SRC [i] = address_src; // delay_slot is compute in I_State 906 // reg_EVENT_ADDRESS_DEST_VAL[i] = good_take; 907 // reg_EVENT_ADDRESS_DEST [i] = good_addr; 958 // Tdepth_t depth = (_param->_have_port_depth)?PORT_READ(in_EVENT_DEPTH [i]):0; 959 // uint32_t top = reg_UPT_TOP [i]; 960 // uint32_t bottom = reg_UPT_BOTTOM [i]; 961 // uint32_t new_update = ((top==0)?_param->_size_upt_queue[i]:top)-1; 962 // // bool empty = reg_UPT_EMPTY [i]; 963 964 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * top : %d",top); 965 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth : %d",depth); 966 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * new_update : %d",new_update); 967 968 // event_state_t event_state = reg_EVENT_STATE [i]; 969 // bool previous_update_ras = ((event_state == EVENT_STATE_MISS_FLUSH_UFPT_AND_UPT ) or 970 // (event_state == EVENT_STATE_MISS_FLUSH_UPT ) or 971 // (event_state == EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT) or 972 // (event_state == EVENT_STATE_EVENT_FLUSH_UPT)); 973 974 // bool find = false; // have slot to update ??? 975 // Tdepth_t depth_new = depth; 976 977 // // flush all slot, because this event is in head of rob 978 // for (uint32_t j=(depth+1)%_param->_size_upt_queue[i]; 979 // //uint32_t j=bottom; 980 // j!=top; 981 // j=(j+1)%_param->_size_upt_queue[i]) 982 // if ((reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_END) and 983 // (reg_UPDATE_PREDICTION_TABLE [i][j]._state != UPDATE_PREDICTION_STATE_EMPTY)) 984 // { 985 // find = true; 986 // reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT; 987 // reg_UPDATE_PREDICTION_TABLE [i][j]._retire_ok = false; 988 // } 989 // else 990 // if (not find) // while state == end or empty 991 // depth_new ++; 992 993 // if ((reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_END) and 994 // (reg_UPDATE_PREDICTION_TABLE [i][depth]._state != UPDATE_PREDICTION_STATE_EMPTY)) 995 // { 996 // find = true; 997 // reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT; 998 // reg_UPDATE_PREDICTION_TABLE [i][depth]._retire_ok = false; 999 1000 // } 1001 // else 1002 // // while state == end or empty 1003 // depth = (depth_new+1)%_param->_size_upt_queue[i]; 1004 1005 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * find : %d",find); 1006 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * depth_new : %d",depth_new); 1007 1008 // // Test if have update slot 1009 // if (find) 1010 // { 1011 // // // flush all slot after the event 1012 // // for (uint32_t j=(depth+1)%_param->_size_upt_queue[i]; 1013 // // j!=top; 1014 // // j=(j+1)%_param->_size_upt_queue[i]) 1015 // // reg_UPDATE_PREDICTION_TABLE [i][j]._state = UPDATE_PREDICTION_STATE_EVENT; 1016 1017 // // reg_UPDATE_PREDICTION_TABLE [i][depth]._state = UPDATE_PREDICTION_STATE_EVENT; 1018 1019 // // reg_UPT_BOTTOM [i]; 1020 // // TODO : special case : event is an exception on branch, also depth is not valid 1021 // reg_UPT_TOP [i] = depth; // depth is again valid 1022 // reg_UPT_TOP_EVENT [i] = top; 1023 1024 // if (bottom == reg_UPT_TOP [i]) 1025 // reg_UPT_EMPTY [i] = true; 1026 // } 1027 1028 // bool full = ((depth == top) and (top == bottom) and not reg_UPT_EMPTY [i]); 1029 // bool update_ras = find and ((top != depth) or full); 1030 1031 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * update_ras : %d",update_ras); 1032 1033 // if (not previous_update_ras and update_ras) 1034 // reg_UPT_UPDATE [i] = new_update; 1035 1036 // // new state : 1037 // // * test if ufpt is empty 1038 // // * ok : flush upft and upt 1039 // // * ko : test if have previous flush upt 1040 // // * ok : nothing 1041 // // * ko : flush upt 1042 // reg_EVENT_VAL [i] = update_ras; 1043 // reg_EVENT_UPT_PTR [i] = depth; 1044 1045 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_UFPT_NB_NEED_UPDATE : %d",reg_UFPT_NB_NEED_UPDATE [i]); 1046 // // if (reg_UFPT_NB_NEED_UPDATE [i] > 0) 1047 // if ( (reg_UFPT_NB_NEED_UPDATE [i] > 0) or 1048 // (reg_UFPT_NB_UPDATE [i] > 0)) 1049 // { 1050 // if (update_ras) 1051 // { 1052 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT (branch_complete - miss)",i); 1053 // reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT_AND_UPT; 1054 // } 1055 // else 1056 // { 1057 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UFPT (branch_complete - miss)",i); 1058 // // reg_EVENT_VAL [i] = false; 1059 1060 // reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UFPT; 1061 // } 1062 // } 1063 // else 1064 // { 1065 // // if (not previous_update_ras) 1066 // if (update_ras) 1067 // { 1068 // // have ras prediction ? 1069 // log_printf(TRACE,Update_Prediction_Table,FUNCTION," * EVENT [%d] <- EVENT_STATE_EVENT_FLUSH_UPT (branch_complete - miss)",i); 1070 1071 // reg_EVENT_STATE [i] = EVENT_STATE_EVENT_FLUSH_UPT; 1072 // } 1073 // else 1074 // { 1075 // // special case : nothing 1076 // // reg_EVENT_VAL [i] = false; 1077 1078 // reg_EVENT_STATE [i] = EVENT_STATE_OK; 1079 // } 1080 // } 1081 1082 // // else no update 1083 1084 // reg_EVENT_DEPTH [i] = depth; 1085 // // reg_EVENT_ADDRESS_SRC [i] = address_src; // delay_slot is compute in I_State 1086 // // reg_EVENT_ADDRESS_DEST_VAL[i] = good_take; 1087 // // reg_EVENT_ADDRESS_DEST [i] = good_addr; 908 1088 909 1089 break; … … 994 1174 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_VAL : %d" ,reg_EVENT_VAL [i]); 995 1175 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_PTR : %d" ,reg_EVENT_UPT_PTR [i]); 1176 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_UPT_FULL : %d" ,reg_EVENT_UPT_FULL [i]); 996 1177 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_STATE : %s" ,toString(reg_EVENT_STATE [i]).c_str()); 997 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ SOURCE : %s" ,toString(reg_EVENT_SOURCE[i]).c_str());1178 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_IS_BRANCH : %d" ,reg_EVENT_IS_BRANCH [i]); 998 1179 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_DEPTH : %d" ,reg_EVENT_DEPTH [i]); 999 1180 log_printf(TRACE,Update_Prediction_Table,FUNCTION," * reg_EVENT_ADDRESS_SRC : %.8x (%.8x)",reg_EVENT_ADDRESS_SRC [i],reg_EVENT_ADDRESS_SRC [i]<<2); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/src/Prediction_unit_allocation.cpp
r111 r112 45 45 ,IN 46 46 ,SOUTH, 47 "Generalist interface"47 _("Generalist interface") 48 48 #endif 49 49 ); … … 56 56 { 57 57 { 58 ALLOC1_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context);58 ALLOC1_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context); 59 59 60 60 ALLOC1_VALACK_IN ( in_PREDICT_VAL ,VAL); … … 68 68 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE ,"branch_state" ,Tbranch_state_t ,_param->_size_branch_state); 69 69 ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t ,_param->_size_depth); 70 71 ALLOC1_INTERFACE_END(_param->_nb_context); 70 72 } 71 73 { 72 ALLOC2_INTERFACE("predict",IN,SOUTH,"Interface with ifetch unit",_param->_nb_context,_param->_nb_instruction[it1]); 74 ALLOC2_INTERFACE_BEGIN("predict",IN,SOUTH,_("Interface with ifetch unit"),_param->_nb_context,_param->_nb_instruction[it1]); 75 73 76 _ALLOC2_SIGNAL_OUT(out_PREDICT_INSTRUCTION_ENABLE ,"instruction_enable" ,Tcontrol_t ,1,_param->_nb_context,_param->_nb_instruction[it1]); 77 78 ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_instruction[it1]); 74 79 } 75 80 } … … 78 83 { 79 84 { 80 ALLOC2_INTERFACE ("decod",IN,SOUTH,"Interface with decod unit",_param->_nb_decod_unit,_param->_nb_inst_decod[it1]);85 ALLOC2_INTERFACE_BEGIN("decod",IN,SOUTH,_("Interface with decod unit"),_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 81 86 82 87 _ALLOC2_VALACK_IN ( in_DECOD_VAL ,VAL,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); … … 91 96 _ALLOC2_SIGNAL_IN ( in_DECOD_ADDRESS_DEST ,"address_dest" ,Taddress_t ,_param->_size_address ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 92 97 _ALLOC2_SIGNAL_OUT(out_DECOD_CAN_CONTINUE ,"can_continue" ,Tcontrol_t ,1 ,_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 98 99 100 ALLOC2_INTERFACE_END(_param->_nb_decod_unit,_param->_nb_inst_decod[it1]); 93 101 } 94 102 } … … 96 104 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 105 { 98 ALLOC1_INTERFACE ("branch_complete", IN,SOUTH, "branch_complete", _param->_nb_inst_branch_complete);106 ALLOC1_INTERFACE_BEGIN("branch_complete", IN,SOUTH, _("branch_complete"), _param->_nb_inst_branch_complete); 99 107 100 108 ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL ,VAL); … … 108 116 // ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_SRC ,"address_src" ,Taddress_t,_param->_size_address); 109 117 // ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_address); 118 119 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 110 120 } 111 121 112 122 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 123 { 114 ALLOC1_INTERFACE ("branch_event", IN,SOUTH, "branch_event", _param->_nb_context);124 ALLOC1_INTERFACE_BEGIN("branch_event", IN,SOUTH, _("branch_event"), _param->_nb_context); 115 125 116 126 ALLOC1_VALACK_OUT(out_BRANCH_EVENT_VAL ,VAL); … … 122 132 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST_VAL ,"address_dest_val",Tcontrol_t,1); 123 133 ALLOC1_SIGNAL_OUT(out_BRANCH_EVENT_ADDRESS_DEST ,"address_dest" ,Taddress_t,_param->_size_address); 134 135 ALLOC1_INTERFACE_END(_param->_nb_context); 124 136 } 125 137 126 138 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 139 { 128 ALLOC1_INTERFACE ("depth",OUT,SOUTH,"Interface with depth",_param->_nb_context);140 ALLOC1_INTERFACE_BEGIN("depth",OUT,SOUTH,_("Interface with depth"),_param->_nb_context); 129 141 130 142 ALLOC1_SIGNAL_OUT(out_DEPTH_VAL ,"val" ,Tcontrol_t,1); … … 133 145 ALLOC1_SIGNAL_OUT(out_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth); 134 146 ALLOC1_SIGNAL_OUT(out_DEPTH_FULL ,"full" ,Tcontrol_t,1); 147 148 ALLOC1_INTERFACE_END(_param->_nb_context); 135 149 } 136 150 137 151 // ~~~~~[ Interface : "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 138 152 { 139 ALLOC1_INTERFACE ("event", IN,SOUTH,"event", _param->_nb_context);153 ALLOC1_INTERFACE_BEGIN("event", IN,SOUTH,_("event"), _param->_nb_context); 140 154 141 155 ALLOC1_VALACK_IN ( in_EVENT_VAL ,VAL); … … 143 157 ALLOC1_SIGNAL_IN ( in_EVENT_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type ); 144 158 ALLOC1_SIGNAL_IN ( in_EVENT_DEPTH ,"depth",Tdepth_t ,_param->_size_depth ); 159 160 ALLOC1_INTERFACE_END(_param->_nb_context); 145 161 } 146 162 … … 421 437 COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+ "_DIRECTION", 422 438 dest,"out_UPDATE_"+toString(i)+ "_DIRECTION_GOOD"); 423 439 COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+ "_PREDICTION_IFETCH", 440 dest,"out_UPDATE_"+toString(i)+ "_PREDICTION_IFETCH"); 424 441 } 425 442 } … … 532 549 dest,"out_UPDATE_"+toString(i)+ "_MISS_PREDICTION" ); 533 550 COMPONENT_MAP(_component,src , "in_UPDATE_"+toString(i)+ "_PREDICTION_IFETCH", 534 dest,"out_UPDATE_"+toString(i)+ "_RAS_PREDICTION_IFETCH");551 dest,"out_UPDATE_"+toString(i)+ "_PREDICTION_IFETCH"); 535 552 } 536 553 } … … 656 673 //in_UPDATE_UPT_RAS_FLUSH - component_map return_address_stack 657 674 //in_UPDATE_UPT_RAS_INDEX - component_map return_address_stack 658 //in_UPDATE_UPT_ RAS_PREDICTION_IFETCH - component_map return_address_stack675 //in_UPDATE_UPT_PREDICTION_IFETCH - component_map return_address_stack, direction 659 676 } 660 677 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_allocation.cpp
r111 r112 58 58 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("icache_req",OUT, WEST, _("Instruction cache request."),_param->_nb_context);60 ALLOC1_INTERFACE_BEGIN("icache_req",OUT, WEST, _("Instruction cache request."),_param->_nb_context); 61 61 62 62 ALLOC1_VALACK_OUT (out_ICACHE_REQ_VAL ,VAL); … … 66 66 ALLOC1_SIGNAL_OUT (out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_instruction_t,_param->_size_instruction_address ); 67 67 ALLOC1_SIGNAL_OUT (out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type ); 68 69 ALLOC1_INTERFACE_END(_param->_nb_context); 68 70 } 69 71 70 72 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 73 { 72 ALLOC1_INTERFACE ("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context);74 ALLOC1_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context); 73 75 74 76 ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); … … 77 79 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_ifetch_queue_ptr ); 78 80 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error ); 79 } 80 { 81 ALLOC2_INTERFACE("icache_rsp",IN , WEST, "Instruction cache respons.",_param->_nb_context,_param->_nb_inst_fetch[it1]); 81 82 ALLOC1_INTERFACE_END(_param->_nb_context); 83 } 84 { 85 ALLOC2_INTERFACE_BEGIN("icache_rsp",IN , WEST, _("Instruction cache respons."),_param->_nb_context,_param->_nb_inst_fetch[it1]); 82 86 83 87 _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction" ,Ticache_instruction_t,_param->_size_instruction ,_param->_nb_context,_param->_nb_inst_fetch[it1]); 84 } 85 88 89 ALLOC2_INTERFACE_END(_param->_nb_context,_param->_nb_inst_fetch[it1]); 90 } 86 91 87 92 // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 88 93 { 89 ALLOC1_INTERFACE ("decod",OUT,EAST,_("Decoded instruction, send to ooo_engine"),_param->_sum_inst_decod);94 ALLOC1_INTERFACE_BEGIN("decod",OUT,EAST,_("Decoded instruction, send to ooo_engine"),_param->_sum_inst_decod); 90 95 91 96 ALLOC1_VALACK_OUT (out_DECOD_VAL , VAL); … … 115 120 ALLOC1_SIGNAL_OUT (out_DECOD_EXCEPTION_USE ,"EXCEPTION_USE" ,Texception_t ,_param->_size_exception_use ); 116 121 ALLOC1_SIGNAL_OUT (out_DECOD_EXCEPTION ,"EXCEPTION" ,Texception_t ,_param->_size_exception ); 122 123 ALLOC1_INTERFACE_END(_param->_sum_inst_decod); 117 124 } 118 125 119 126 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 127 { 121 ALLOC1_INTERFACE ("branch_complete",IN,EAST,_("Branch commit"),_param->_nb_inst_branch_complete);128 ALLOC1_INTERFACE_BEGIN("branch_complete",IN,EAST,_("Branch commit"),_param->_nb_inst_branch_complete); 122 129 123 130 ALLOC1_VALACK_IN ( in_BRANCH_COMPLETE_VAL , VAL); … … 128 135 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_NO_SEQUENCE ,"NO_SEQUENCE" ,Tcontrol_t ,1 ); 129 136 ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_MISS_PREDICTION ,"MISS_PREDICTION" ,Tcontrol_t ,1 ); 137 138 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 130 139 } 131 140 132 141 // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 133 142 { 134 ALLOC_INTERFACE("commit_event",IN,EAST,_("Out Of Order engine have an event")); 135 136 ALLOC_VALACK_IN ( in_COMMIT_EVENT_VAL , VAL); 137 ALLOC_VALACK_OUT (out_COMMIT_EVENT_ACK , ACK); 138 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id); 139 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"DEPTH" ,Tdepth_t ,_param->_size_depth ); 140 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_TYPE ,"TYPE" ,Tevent_type_t ,_param->_size_event_type); 141 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ); 142 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address ); 143 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"ADDRESS_EPCR_VAL" ,Tcontrol_t ,1 ); 144 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"ADDRESS_EPCR" ,Taddress_t ,_param->_size_instruction_address ); 145 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1 ); 146 ALLOC_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data ); 143 ALLOC0_INTERFACE_BEGIN("commit_event",IN,EAST,_("Out Of Order engine have an event")); 144 145 ALLOC0_VALACK_IN ( in_COMMIT_EVENT_VAL , VAL); 146 ALLOC0_VALACK_OUT (out_COMMIT_EVENT_ACK , ACK); 147 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id); 148 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_DEPTH ,"DEPTH" ,Tdepth_t ,_param->_size_depth ); 149 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_TYPE ,"TYPE" ,Tevent_type_t ,_param->_size_event_type); 150 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ); 151 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address ); 152 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"ADDRESS_EPCR_VAL" ,Tcontrol_t ,1 ); 153 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EPCR ,"ADDRESS_EPCR" ,Taddress_t ,_param->_size_instruction_address ); 154 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1 ); 155 ALLOC0_SIGNAL_IN ( in_COMMIT_EVENT_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data ); 156 157 ALLOC0_INTERFACE_END(); 147 158 } 148 159 149 160 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 150 161 { 151 ALLOC1_INTERFACE ("event",OUT,EAST,_("Event interface"),_param->_nb_context);162 ALLOC1_INTERFACE_BEGIN("event",OUT,EAST,_("Event interface"),_param->_nb_context); 152 163 153 164 ALLOC1_VALACK_OUT (out_EVENT_VAL , VAL); … … 157 168 ALLOC1_SIGNAL_OUT (out_EVENT_ADDRESS_NEXT_VAL ,"ADDRESS_NEXT_VAL" ,Tcontrol_t ,1 ); 158 169 ALLOC1_SIGNAL_OUT (out_EVENT_IS_DS_TAKE ,"IS_DS_TAKE" ,Tcontrol_t ,1 ); 170 171 ALLOC1_INTERFACE_END(_param->_nb_context); 159 172 } 160 173 161 174 // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 175 { 163 ALLOC1_INTERFACE ("spr_event",OUT,EAST,_("Event interface with the special registerFile"),_param->_nb_context);176 ALLOC1_INTERFACE_BEGIN("spr_event",OUT,EAST,_("Event interface with the special registerFile"),_param->_nb_context); 164 177 165 178 ALLOC1_VALACK_OUT (out_SPR_EVENT_VAL , VAL); … … 170 183 ALLOC1_SIGNAL_OUT (out_SPR_EVENT_SR_DSX ,"SR_DSX" ,Tcontrol_t ,1 ); 171 184 ALLOC1_SIGNAL_OUT (out_SPR_EVENT_SR_TO_ESR ,"SR_TO_ESR" ,Tcontrol_t ,1 ); 185 186 ALLOC1_INTERFACE_END(_param->_nb_context); 172 187 } 173 188 174 189 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 175 190 { 176 ALLOC1_INTERFACE ("nb_inst",IN,EAST,_("Instruction number"),_param->_nb_context);191 ALLOC1_INTERFACE_BEGIN("nb_inst",IN,EAST,_("Instruction number"),_param->_nb_context); 177 192 178 193 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_ALL ,"COMMIT_ALL" ,Tcounter_t ,_param->_size_nb_inst_commit); 179 194 ALLOC1_SIGNAL_IN ( in_NB_INST_COMMIT_MEM ,"COMMIT_MEM" ,Tcounter_t ,_param->_size_nb_inst_commit); 180 195 ALLOC1_SIGNAL_OUT (out_NB_INST_DECOD_ALL ,"DECOD_ALL" ,Tcounter_t ,_param->_size_nb_inst_decod ); 196 197 ALLOC1_INTERFACE_END(_param->_nb_context); 181 198 } 182 199 183 200 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 201 { 185 ALLOC1_INTERFACE ("depth",OUT,EAST,_("Interface depth"),_param->_nb_context);202 ALLOC1_INTERFACE_BEGIN("depth",OUT,EAST,_("Interface depth"),_param->_nb_context); 186 203 187 204 ALLOC1_SIGNAL_OUT (out_DEPTH_MIN ,"MIN" ,Tdepth_t ,_param->_size_depth); 188 205 ALLOC1_SIGNAL_OUT (out_DEPTH_MAX ,"MAX" ,Tdepth_t ,_param->_size_depth); 189 206 ALLOC1_SIGNAL_OUT (out_DEPTH_FULL ,"FULL" ,Tcontrol_t ,1); 207 208 ALLOC1_INTERFACE_END(_param->_nb_context); 190 209 } 191 210 192 211 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193 212 { 194 ALLOC1_INTERFACE ("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context);213 ALLOC1_INTERFACE_BEGIN("spr",IN,EAST,_("Interface with the special registerFile"),_param->_nb_context); 195 214 196 215 ALLOC1_SIGNAL_IN ( in_SPR_SR_IEE ,"SR_IEE" ,Tcontrol_t ,1); 197 216 ALLOC1_SIGNAL_IN ( in_SPR_SR_EPH ,"SR_EPH" ,Tcontrol_t ,1); 217 218 ALLOC1_INTERFACE_END(_param->_nb_context); 198 219 } 199 220 200 221 // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 201 222 { 202 ALLOC1_INTERFACE ("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context);223 ALLOC1_INTERFACE_BEGIN("interrupt",IN,NORTH,_("Interrupt Exception"),_param->_nb_context); 203 224 204 225 ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE ,"ENABLE" ,Tcontrol_t ,1); 226 227 ALLOC1_INTERFACE_END(_param->_nb_context); 205 228 } 206 229 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/src/Front_end_deallocation.cpp
r108 r112 76 76 DELETE1_SIGNAL(out_BRANCH_COMPLETE_MISS_PREDICTION ,_param->_nb_inst_branch_complete,1 ); 77 77 78 DELETE _SIGNAL( in_COMMIT_EVENT_VAL , 1);79 DELETE _SIGNAL(out_COMMIT_EVENT_ACK , 1);80 DELETE _SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id);81 DELETE _SIGNAL( in_COMMIT_EVENT_DEPTH ,_param->_size_depth );82 DELETE _SIGNAL( in_COMMIT_EVENT_TYPE ,_param->_size_event_type);83 DELETE _SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ,1 );84 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS ,_param->_size_instruction_address );85 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,1 );86 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address );87 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,1 );88 DELETE _SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ,_param->_size_instruction_address );78 DELETE0_SIGNAL( in_COMMIT_EVENT_VAL , 1); 79 DELETE0_SIGNAL(out_COMMIT_EVENT_ACK , 1); 80 DELETE0_SIGNAL( in_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id); 81 DELETE0_SIGNAL( in_COMMIT_EVENT_DEPTH ,_param->_size_depth ); 82 DELETE0_SIGNAL( in_COMMIT_EVENT_TYPE ,_param->_size_event_type); 83 DELETE0_SIGNAL( in_COMMIT_EVENT_IS_DELAY_SLOT ,1 ); 84 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS ,_param->_size_instruction_address ); 85 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR_VAL ,1 ); 86 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_instruction_address ); 87 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR_VAL ,1 ); 88 DELETE0_SIGNAL( in_COMMIT_EVENT_ADDRESS_EEAR ,_param->_size_instruction_address ); 89 89 90 90 DELETE1_SIGNAL(out_EVENT_VAL ,_param->_nb_context, 1); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/SelfTest/src/test.cpp
r110 r112 153 153 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE ,"out_BRANCH_COMPLETE_NO_SEQUENCE ",Tcontrol_t ,_param->_nb_inst_branch_complete); 154 154 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION," in_BRANCH_COMPLETE_MISS_PREDICTION",Tcontrol_t ,_param->_nb_inst_branch_complete); 155 ALLOC _SC_SIGNAL(out_UPDATE_VAL ,"out_UPDATE_VAL ",Tcontrol_t );156 ALLOC _SC_SIGNAL( in_UPDATE_ACK ," in_UPDATE_ACK ",Tcontrol_t );157 ALLOC _SC_SIGNAL(out_UPDATE_CONTEXT_ID ,"out_UPDATE_CONTEXT_ID ",Tcontext_t );158 ALLOC _SC_SIGNAL(out_UPDATE_FRONT_END_ID ,"out_UPDATE_FRONT_END_ID ",Tcontext_t );159 ALLOC _SC_SIGNAL(out_UPDATE_DEPTH ,"out_UPDATE_DEPTH ",Tdepth_t );160 ALLOC _SC_SIGNAL(out_UPDATE_TYPE ,"out_UPDATE_TYPE ",Tevent_type_t );161 ALLOC _SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT ,"out_UPDATE_IS_DELAY_SLOT ",Tcontrol_t );162 ALLOC _SC_SIGNAL(out_UPDATE_ADDRESS ,"out_UPDATE_ADDRESS ",Taddress_t );163 ALLOC _SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL ,"out_UPDATE_ADDRESS_EPCR_VAL ",Tcontrol_t );164 ALLOC _SC_SIGNAL(out_UPDATE_ADDRESS_EPCR ,"out_UPDATE_ADDRESS_EPCR ",Taddress_t );165 ALLOC _SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL ,"out_UPDATE_ADDRESS_EEAR_VAL ",Tcontrol_t );166 ALLOC _SC_SIGNAL(out_UPDATE_ADDRESS_EEAR ,"out_UPDATE_ADDRESS_EEAR ",Tgeneral_data_t );155 ALLOC0_SC_SIGNAL(out_UPDATE_VAL ,"out_UPDATE_VAL ",Tcontrol_t ); 156 ALLOC0_SC_SIGNAL( in_UPDATE_ACK ," in_UPDATE_ACK ",Tcontrol_t ); 157 ALLOC0_SC_SIGNAL(out_UPDATE_CONTEXT_ID ,"out_UPDATE_CONTEXT_ID ",Tcontext_t ); 158 ALLOC0_SC_SIGNAL(out_UPDATE_FRONT_END_ID ,"out_UPDATE_FRONT_END_ID ",Tcontext_t ); 159 ALLOC0_SC_SIGNAL(out_UPDATE_DEPTH ,"out_UPDATE_DEPTH ",Tdepth_t ); 160 ALLOC0_SC_SIGNAL(out_UPDATE_TYPE ,"out_UPDATE_TYPE ",Tevent_type_t ); 161 ALLOC0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT ,"out_UPDATE_IS_DELAY_SLOT ",Tcontrol_t ); 162 ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS ,"out_UPDATE_ADDRESS ",Taddress_t ); 163 ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL ,"out_UPDATE_ADDRESS_EPCR_VAL ",Tcontrol_t ); 164 ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR ,"out_UPDATE_ADDRESS_EPCR ",Taddress_t ); 165 ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL ,"out_UPDATE_ADDRESS_EEAR_VAL ",Tcontrol_t ); 166 ALLOC0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR ,"out_UPDATE_ADDRESS_EEAR ",Tgeneral_data_t ); 167 167 168 168 ALLOC2_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]); … … 304 304 INSTANCE1_SC_SIGNAL(_Commit_unit,out_BRANCH_COMPLETE_NO_SEQUENCE ,_param->_nb_inst_branch_complete); 305 305 INSTANCE1_SC_SIGNAL(_Commit_unit, in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete); 306 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_VAL );307 INSTANCE _SC_SIGNAL(_Commit_unit, in_UPDATE_ACK );306 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_VAL ); 307 INSTANCE0_SC_SIGNAL(_Commit_unit, in_UPDATE_ACK ); 308 308 if (_param->_have_port_context_id) 309 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_CONTEXT_ID );309 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_CONTEXT_ID ); 310 310 if (_param->_have_port_front_end_id) 311 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_FRONT_END_ID );311 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_FRONT_END_ID ); 312 312 if (_param->_have_port_depth) 313 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_DEPTH );314 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_TYPE );315 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_IS_DELAY_SLOT );316 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS );317 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL );318 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR );319 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL );320 INSTANCE _SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR );313 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_DEPTH ); 314 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_TYPE ); 315 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_IS_DELAY_SLOT ); 316 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS ); 317 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR_VAL ); 318 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EPCR ); 319 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR_VAL ); 320 INSTANCE0_SC_SIGNAL(_Commit_unit,out_UPDATE_ADDRESS_EEAR ); 321 321 322 322 INSTANCE2_SC_SIGNAL(_Commit_unit, in_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); … … 708 708 DELETE1_SC_SIGNAL(out_BRANCH_COMPLETE_NO_SEQUENCE ,_param->_nb_inst_branch_complete); 709 709 DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete); 710 DELETE _SC_SIGNAL(out_UPDATE_VAL );711 DELETE _SC_SIGNAL( in_UPDATE_ACK );712 DELETE _SC_SIGNAL(out_UPDATE_CONTEXT_ID );713 DELETE _SC_SIGNAL(out_UPDATE_FRONT_END_ID );714 DELETE _SC_SIGNAL(out_UPDATE_DEPTH );715 DELETE _SC_SIGNAL(out_UPDATE_TYPE );716 DELETE _SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT );717 DELETE _SC_SIGNAL(out_UPDATE_ADDRESS );718 DELETE _SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL );719 DELETE _SC_SIGNAL(out_UPDATE_ADDRESS_EPCR );720 DELETE _SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL );721 DELETE _SC_SIGNAL(out_UPDATE_ADDRESS_EEAR );710 DELETE0_SC_SIGNAL(out_UPDATE_VAL ); 711 DELETE0_SC_SIGNAL( in_UPDATE_ACK ); 712 DELETE0_SC_SIGNAL(out_UPDATE_CONTEXT_ID ); 713 DELETE0_SC_SIGNAL(out_UPDATE_FRONT_END_ID ); 714 DELETE0_SC_SIGNAL(out_UPDATE_DEPTH ); 715 DELETE0_SC_SIGNAL(out_UPDATE_TYPE ); 716 DELETE0_SC_SIGNAL(out_UPDATE_IS_DELAY_SLOT ); 717 DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS ); 718 DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL ); 719 DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EPCR ); 720 DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL ); 721 DELETE0_SC_SIGNAL(out_UPDATE_ADDRESS_EEAR ); 722 722 723 723 DELETE2_SC_SIGNAL( in_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Commit_unit.h
r111 r112 238 238 private : Tevent_state_t ** reg_EVENT_STATE ;//[nb_front_end][nb_context] 239 239 private : bool ** reg_EVENT_FLUSH ;//[nb_front_end][nb_context] 240 private : bool ** reg_EVENT_STOP ;//[nb_front_end][nb_context] 240 241 241 242 //private : Taddress_t ** reg_PC_PREVIOUS ;//[nb_front_end][nb_context] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/include/Types.h
r111 r112 35 35 ROB_STORE_HEAD_KO , // 36 36 ROB_OTHER_WAIT_END , // 37 ROB_MISS_WAIT_END , // 37 38 ROB_EVENT_WAIT_END , // 39 38 40 ROB_END_OK_SPECULATIVE , // 39 41 ROB_END_OK , // … … 49 51 ROB_END_EXCEPTION_UPDATE , // 50 52 ROB_END_EXCEPTION // 53 51 54 } rob_state_t; 52 55 … … 121 124 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_STORE_HEAD_KO : return "ROB_STORE_HEAD_KO" ; break; 122 125 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_OTHER_WAIT_END : return "ROB_OTHER_WAIT_END" ; break; 123 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_ MISS_WAIT_END : return "ROB_MISS_WAIT_END"; break;126 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_EVENT_WAIT_END : return "ROB_EVENT_WAIT_END" ; break; 124 127 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK_SPECULATIVE : return "ROB_END_OK_SPECULATIVE" ; break; 125 128 case morpheo::behavioural::core::multi_ooo_engine::ooo_engine::commit_unit::ROB_END_OK : return "ROB_END_OK" ; break; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit.cpp
r110 r112 118 118 # ifdef SYSTEMCASS_SPECIFIC 119 119 // List dependency information 120 for (uint32_t i=0; i<_param->_nb_rename_unit; i++)121 for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++)122 for (uint32_t x=0; x<_param->_nb_rename_unit; x++)123 for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++)124 {125 (*(out_INSERT_ACK [i][j])) (*(in_INSERT_VAL [x][y]));126 if (_param->_have_port_rob_ptr)127 (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y]));128 }120 // for (uint32_t i=0; i<_param->_nb_rename_unit; i++) 121 // for (uint32_t j=0; j<_param->_nb_inst_insert[i]; j++) 122 // for (uint32_t x=0; x<_param->_nb_rename_unit; x++) 123 // for (uint32_t y=0; y<_param->_nb_inst_insert[x]; y++) 124 // { 125 // (*(out_INSERT_ACK [i][j])) (*(in_INSERT_VAL [x][y])); 126 // if (_param->_have_port_rob_ptr) 127 // (*(out_INSERT_PACKET_ID [i][j])) (*(in_INSERT_VAL [x][y])); 128 // } 129 129 # endif 130 130 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_allocation.cpp
r111 r112 58 58 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]);60 ALLOC2_INTERFACE_BEGIN("insert", IN, SOUTH, _("Interface with rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_INSERT_VAL ,VAL,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); … … 96 96 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 97 97 _ALLOC2_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 98 99 ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 98 100 } 99 101 100 102 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 101 103 { 102 ALLOC2_INTERFACE ("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);104 ALLOC2_INTERFACE_BEGIN("retire",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 103 105 104 106 _ALLOC2_VALACK_OUT(out_RETIRE_VAL ,VAL,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); … … 125 127 _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 126 128 _ALLOC2_SIGNAL_OUT(out_RETIRE_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 129 130 ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 127 131 } 128 132 129 133 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 130 134 { 131 ALLOC2_INTERFACE ("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]);135 ALLOC2_INTERFACE_BEGIN("retire_event",OUT,SOUTH, _("Interface to update rename_unit."),_param->_nb_front_end,_param->_nb_context[it1]); 132 136 133 137 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end,_param->_nb_context[it1]); 134 138 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end,_param->_nb_context[it1]); 135 139 _ALLOC2_SIGNAL_OUT(out_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state ,_param->_nb_front_end,_param->_nb_context[it1]); 140 141 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 136 142 } 137 143 138 144 // ~~~~~[ Interface : "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 139 145 { 140 ALLOC1_INTERFACE ("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit);146 ALLOC1_INTERFACE_BEGIN("commit",IN,EAST,_("End of execute."),_param->_nb_inst_commit); 141 147 142 148 ALLOC1_VALACK_IN ( in_COMMIT_VAL ,VAL); … … 152 158 // ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register+_param->_size_rename_unit_id); 153 159 ALLOC1_SIGNAL_OUT(out_COMMIT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 160 161 ALLOC1_INTERFACE_END(_param->_nb_inst_commit); 154 162 } 155 163 156 164 // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 157 165 { 158 ALLOC1_INTERFACE ("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute);166 ALLOC1_INTERFACE_BEGIN("reexecute",OUT,EAST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_reexecute); 159 167 160 168 ALLOC1_VALACK_OUT(out_REEXECUTE_VAL ,VAL); … … 166 174 ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE ,"type" ,Ttype_t ,_param->_size_type); 167 175 ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 176 177 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 168 178 } 169 179 170 180 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 171 181 { 172 ALLOC1_INTERFACE ("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete);182 ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Interface to reexecute an instruction (store)"),_param->_nb_inst_branch_complete); 173 183 174 184 ALLOC1_VALACK_OUT(out_BRANCH_COMPLETE_VAL ,VAL); … … 181 191 ALLOC1_SIGNAL_OUT(out_BRANCH_COMPLETE_NO_SEQUENCE ,"no_sequence" ,Tcontrol_t ,1); 182 192 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION,"miss_prediction",Tcontrol_t ,1); 193 194 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 183 195 } 184 196 185 197 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 186 198 { 187 ALLOC_INTERFACE("update", OUT, WEST,_("Interface with to Context State.")); 188 189 ALLOC_VALACK_OUT(out_UPDATE_VAL ,VAL); 190 ALLOC_VALACK_IN ( in_UPDATE_ACK ,ACK); 191 ALLOC_SIGNAL_OUT(out_UPDATE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 192 ALLOC_SIGNAL_OUT(out_UPDATE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 193 ALLOC_SIGNAL_OUT(out_UPDATE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 194 ALLOC_SIGNAL_OUT(out_UPDATE_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 195 ALLOC_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 196 ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 197 ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL ,"address_epcr_val",Tcontrol_t ,1); 198 ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 199 ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1); 200 ALLOC_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR ,"address_eear" ,Tgeneral_data_t ,_param->_size_general_data); 199 ALLOC0_INTERFACE_BEGIN("update", OUT, WEST,_("Interface with to Context State.")); 200 201 ALLOC0_VALACK_OUT(out_UPDATE_VAL ,VAL); 202 ALLOC0_VALACK_IN ( in_UPDATE_ACK ,ACK); 203 ALLOC0_SIGNAL_OUT(out_UPDATE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id); 204 ALLOC0_SIGNAL_OUT(out_UPDATE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id); 205 ALLOC0_SIGNAL_OUT(out_UPDATE_DEPTH ,"depth" ,Tdepth_t ,_param->_size_depth ); 206 ALLOC0_SIGNAL_OUT(out_UPDATE_TYPE ,"type" ,Tevent_type_t ,_param->_size_event_type); 207 ALLOC0_SIGNAL_OUT(out_UPDATE_IS_DELAY_SLOT ,"is_delay_slot" ,Tcontrol_t ,1); 208 ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 209 ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR_VAL ,"address_epcr_val",Tcontrol_t ,1); 210 ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EPCR ,"address_epcr" ,Taddress_t ,_param->_size_instruction_address); 211 ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR_VAL ,"address_eear_val",Tcontrol_t ,1); 212 ALLOC0_SIGNAL_OUT(out_UPDATE_ADDRESS_EEAR ,"address_eear" ,Tgeneral_data_t ,_param->_size_general_data); 213 214 ALLOC0_INTERFACE_END(); 201 215 } 202 216 203 217 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 204 218 { 205 ALLOC2_INTERFACE ("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]);219 ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Interface with Context State (event)."),_param->_nb_front_end, _param->_nb_context[it1]); 206 220 207 221 _ALLOC2_VALACK_IN ( in_EVENT_VAL , VAL ,_param->_nb_front_end, _param->_nb_context[it1]); … … 211 225 _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL,"ADDRESS_NEXT_VAL",Tcontrol_t,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 212 226 _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"IS_DS_TAKE" ,Tcontrol_t,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 227 228 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 213 229 } 214 230 215 231 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 216 232 { 217 ALLOC2_INTERFACE ("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]);233 ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Interface with Context State (synchronization)."),_param->_nb_front_end, _param->_nb_context[it1]); 218 234 219 235 _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL ,"commit_all",Tcounter_t ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]); 220 236 _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM ,"commit_mem",Tcounter_t ,_param->_size_nb_inst_commit,_param->_nb_front_end, _param->_nb_context[it1]); 221 237 _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"decod_all" ,Tcounter_t ,_param->_size_nb_inst_decod ,_param->_nb_front_end, _param->_nb_context[it1]); 238 239 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 222 240 } 223 241 224 242 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 225 243 { 226 ALLOC2_INTERFACE ("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);244 ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]); 227 245 228 246 _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN ,"min" ,Tdepth_t ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]); 229 247 _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX ,"max" ,Tdepth_t ,_param->_size_depth,_param->_nb_front_end, _param->_nb_context[it1]); 230 248 _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL ,"full" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 249 250 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 231 251 } 232 252 … … 234 254 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 235 255 { 236 ALLOC2_INTERFACE ("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]);256 ALLOC2_INTERFACE_BEGIN("spr_read",IN ,EAST,_("Interface with special register file (read)."),_param->_nb_front_end, _param->_nb_context[it1]); 237 257 238 258 _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR_OVE ,"sr_ove" ,Tcontrol_t ,1,_param->_nb_front_end, _param->_nb_context[it1]); 259 260 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 239 261 } 240 262 241 263 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 242 264 { 243 ALLOC2_INTERFACE ("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]);265 ALLOC2_INTERFACE_BEGIN("spr_write",OUT,EAST,_("Interface with special register file (write)."),_param->_nb_front_end, _param->_nb_context[it1]); 244 266 245 267 _ALLOC2_VALACK_OUT(out_SPR_WRITE_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); … … 251 273 _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV_VAL ,"sr_ov_val" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 252 274 _ALLOC2_SIGNAL_OUT(out_SPR_WRITE_SR_OV ,"sr_ov" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 275 276 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 253 277 } 254 278 … … 289 313 ALLOC2(reg_EVENT_STATE ,Tevent_state_t,_param->_nb_front_end,_param->_nb_context [it1]); 290 314 ALLOC2(reg_EVENT_FLUSH ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 315 ALLOC2(reg_EVENT_STOP ,bool ,_param->_nb_front_end,_param->_nb_context [it1]); 291 316 292 317 // ALLOC2(reg_PC_PREVIOUS ,Taddress_t ,_param->_nb_front_end,_param->_nb_context [it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_deallocation.cpp
r111 r112 124 124 DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION,_param->_nb_inst_branch_complete,1); 125 125 126 DELETE _SIGNAL(out_UPDATE_VAL ,1 );127 DELETE _SIGNAL( in_UPDATE_ACK ,1 );128 DELETE _SIGNAL(out_UPDATE_CONTEXT_ID ,_param->_size_context_id );129 DELETE _SIGNAL(out_UPDATE_FRONT_END_ID ,_param->_size_front_end_id);130 DELETE _SIGNAL(out_UPDATE_DEPTH ,_param->_size_depth );131 DELETE _SIGNAL(out_UPDATE_TYPE ,_param->_size_event_type );132 DELETE _SIGNAL(out_UPDATE_IS_DELAY_SLOT ,1 );133 DELETE _SIGNAL(out_UPDATE_ADDRESS ,_param->_size_instruction_address );134 DELETE _SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL ,1 );135 DELETE _SIGNAL(out_UPDATE_ADDRESS_EPCR ,_param->_size_instruction_address );136 DELETE _SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL ,1 );137 DELETE _SIGNAL(out_UPDATE_ADDRESS_EEAR ,_param->_size_instruction_address );126 DELETE0_SIGNAL(out_UPDATE_VAL ,1 ); 127 DELETE0_SIGNAL( in_UPDATE_ACK ,1 ); 128 DELETE0_SIGNAL(out_UPDATE_CONTEXT_ID ,_param->_size_context_id ); 129 DELETE0_SIGNAL(out_UPDATE_FRONT_END_ID ,_param->_size_front_end_id); 130 DELETE0_SIGNAL(out_UPDATE_DEPTH ,_param->_size_depth ); 131 DELETE0_SIGNAL(out_UPDATE_TYPE ,_param->_size_event_type ); 132 DELETE0_SIGNAL(out_UPDATE_IS_DELAY_SLOT ,1 ); 133 DELETE0_SIGNAL(out_UPDATE_ADDRESS ,_param->_size_instruction_address ); 134 DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR_VAL ,1 ); 135 DELETE0_SIGNAL(out_UPDATE_ADDRESS_EPCR ,_param->_size_instruction_address ); 136 DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR_VAL ,1 ); 137 DELETE0_SIGNAL(out_UPDATE_ADDRESS_EEAR ,_param->_size_instruction_address ); 138 138 139 139 DELETE2_SIGNAL( in_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1 ); … … 194 194 DELETE2(reg_EVENT_STATE ,_param->_nb_front_end,_param->_nb_context [it1]); 195 195 DELETE2(reg_EVENT_FLUSH ,_param->_nb_front_end,_param->_nb_context [it1]); 196 DELETE2(reg_EVENT_STOP ,_param->_nb_front_end,_param->_nb_context [it1]); 196 197 // DELETE2(reg_PC_PREVIOUS ,_param->_nb_front_end,_param->_nb_context [it1]); 197 198 DELETE2(reg_PC_CURRENT ,_param->_nb_front_end,_param->_nb_context [it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_insert.cpp
r100 r112 30 30 #endif 31 31 bool can_rename_select [_param->_nb_rename_unit]; 32 33 // Initialisation 32 bool event_stop; 33 34 // Initialisation 35 event_stop = false; // one signal for all context. 36 for (uint32_t i=0; i<_param->_nb_front_end; ++i) 37 for (uint32_t j=0; j<_param->_nb_context[i]; ++j) 38 event_stop |= reg_EVENT_STOP [i][j]; 34 39 for (uint32_t i=0; i<_param->_nb_bank; i++) 35 40 { … … 52 57 // log_printf(TRACE,Commit_unit,FUNCTION," * reg_NUM_BANK_TAIL : %d",reg_NUM_BANK_TAIL); 53 58 54 std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert 55 std::list<generic::priority::select_t>::iterator it=select_insert ->begin(); 56 57 // Scan all bank ... 58 for (uint32_t i=0; i<_param->_nb_bank; i++) 59 if (not event_stop) 59 60 { 60 // compute the bank number (num_bank_tail is the older write slot) 61 uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank; 62 63 // log_printf(TRACE,Commit_unit,FUNCTION," * BANK : %d", num_bank); 64 // log_printf(TRACE,Commit_unit,FUNCTION," * val : %d", internal_BANK_INSERT_VAL [num_bank]); 65 // log_printf(TRACE,Commit_unit,FUNCTION," * full : %d", bank_full [num_bank]); 66 67 // Scan all insert interface to find a valid transaction 68 while (it!=select_insert ->end()) 69 { 70 uint32_t num_rename_unit = it->grp; 71 uint32_t num_inst_insert = it->elt; 72 73 it++; 74 75 log_printf(TRACE,Commit_unit,FUNCTION," * INSERT [%d][%d]", num_rename_unit,num_inst_insert); 76 // log_printf(TRACE,Commit_unit,FUNCTION," * INSERT_VAL : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])); 77 log_printf(TRACE,Commit_unit,FUNCTION," * can_rename_select : %d", can_rename_select [num_rename_unit]); 78 79 // Test if have instruction 80 // -> rename_unit_glue test the in-order insert !!!!! 81 if (can_rename_select [num_rename_unit] // and 82 // PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]) 83 ) 84 { 85 log_printf(TRACE,Commit_unit,FUNCTION," * have instruction"); 86 log_printf(TRACE,Commit_unit,FUNCTION," * bank_full : %d",bank_full [num_bank]); 87 88 // test if bank is not busy (full or previous access) 89 if (not bank_full [num_bank]) 90 { 91 // find !!! 92 insert_ack [num_rename_unit][num_inst_insert] = true; 93 94 Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]); 95 61 std::list<generic::priority::select_t> * select_insert = _priority_insert ->select(); // same select for all insert 62 std::list<generic::priority::select_t>::iterator it=select_insert ->begin(); 63 64 // Scan all bank ... 65 for (uint32_t i=0; i<_param->_nb_bank; i++) 66 { 67 // compute the bank number (num_bank_tail is the older write slot) 68 uint32_t num_bank = (reg_NUM_BANK_TAIL+i)%_param->_nb_bank; 69 70 // log_printf(TRACE,Commit_unit,FUNCTION," * BANK : %d", num_bank); 71 // log_printf(TRACE,Commit_unit,FUNCTION," * val : %d", internal_BANK_INSERT_VAL [num_bank]); 72 // log_printf(TRACE,Commit_unit,FUNCTION," * full : %d", bank_full [num_bank]); 73 74 // Scan all insert interface to find a valid transaction 75 while (it!=select_insert ->end()) 76 { 77 uint32_t num_rename_unit = it->grp; 78 uint32_t num_inst_insert = it->elt; 79 80 it++; 81 82 log_printf(TRACE,Commit_unit,FUNCTION," * INSERT [%d][%d]", num_rename_unit,num_inst_insert); 83 // log_printf(TRACE,Commit_unit,FUNCTION," * INSERT_VAL : %d", PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert])); 84 log_printf(TRACE,Commit_unit,FUNCTION," * can_rename_select : %d", can_rename_select [num_rename_unit]); 85 86 // Test if have instruction 87 // -> rename_unit_glue test the in-order insert !!!!! 88 if (can_rename_select [num_rename_unit] // and 89 // PORT_READ(in_INSERT_VAL [num_rename_unit][num_inst_insert]) 90 ) 91 { 92 log_printf(TRACE,Commit_unit,FUNCTION," * have instruction"); 93 log_printf(TRACE,Commit_unit,FUNCTION," * bank_full : %d",bank_full [num_bank]); 94 95 // test if bank is not busy (full or previous access) 96 if (not bank_full [num_bank]) 97 { 98 // find !!! 99 insert_ack [num_rename_unit][num_inst_insert] = true; 100 101 Tpacket_t packet_id = ((num_bank << _param->_shift_num_bank) | reg_BANK_PTR [num_bank]); 102 96 103 #ifdef SYSTEMC_VHDL_COMPATIBILITY 97 104 insert_packet_id [num_rename_unit][num_inst_insert] = packet_id; 98 105 #else 99 100 106 if (_param->_have_port_rob_ptr ) 107 PORT_WRITE(out_INSERT_PACKET_ID [num_rename_unit][num_inst_insert],packet_id); 101 108 #endif 102 103 104 105 106 107 108 109 internal_BANK_INSERT_VAL [num_bank] = true; 110 internal_BANK_INSERT_NUM_RENAME_UNIT [num_bank] = num_rename_unit; 111 internal_BANK_INSERT_NUM_INST [num_bank] = num_inst_insert; 112 113 break; 114 } 115 } 109 116 110 // is a valid instruction, but it's not send at a bank 111 // ... invalid this rename_unit (because, insert in_order) 112 can_rename_select [num_rename_unit] = false; 113 } 117 // is a valid instruction, but it's not send at a bank 118 // ... invalid this rename_unit (because, insert in_order) 119 can_rename_select [num_rename_unit] = false; 120 } 121 } 114 122 } 115 123 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_genMealy_retire.cpp
r110 r112 76 76 PORT_READ(in_RETIRE_ACK [x][y])) // not busy 77 77 { 78 rob_state_t state = entry->state; 79 80 if ((state == ROB_END_OK ) or 81 (state == ROB_END_KO ) or 82 (state == ROB_END_BRANCH_MISS) or 83 (state == ROB_END_LOAD_MISS ) or 84 (state == ROB_END_MISS )// or 85 // (state == ROB_END_EXCEPTION) 86 ) 87 { 88 Tcontext_t front_end_id = entry->front_end_id; 89 Tcontext_t context_id = entry->context_id; 90 Tcontrol_t write_re = entry->write_re; 91 Tspecial_address_t num_reg_re_log = entry->num_reg_re_log; 92 93 // if state is ok, when write flags in the SR regsiters 94 bool spr_write_ack = true; 95 96 // Write in SR the good flag 97 if ((state == ROB_END_OK ) and write_re) 98 // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE 99 { 100 spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]); 101 102 // retire_ack is set !!! 103 spr_write_val [front_end_id][context_id] = 1; 104 105 Tspecial_data_t flags = entry->flags; 106 107 switch (num_reg_re_log) 108 { 109 case SPR_LOGIC_SR_F : 110 { 111 spr_write_sr_f_val [front_end_id][context_id] = 1; 112 spr_write_sr_f [front_end_id][context_id] = (flags & FLAG_F )!=0; 113 114 break; 115 } 116 case SPR_LOGIC_SR_CY_OV : 117 { 118 spr_write_sr_cy_val [front_end_id][context_id] = 1; 119 spr_write_sr_ov_val [front_end_id][context_id] = 1; 120 spr_write_sr_cy [front_end_id][context_id] = (flags & FLAG_CY)!=0; 121 spr_write_sr_ov [front_end_id][context_id] = (flags & FLAG_OV)!=0; 122 123 break; 124 } 125 default : 126 { 78 rob_state_t state = entry->state; 79 if ((state == ROB_END_OK ) or 80 (state == ROB_END_KO ) or 81 (state == ROB_END_BRANCH_MISS) or 82 (state == ROB_END_LOAD_MISS ) or 83 (state == ROB_END_MISS )// or 84 // (state == ROB_END_EXCEPTION) 85 ) 86 { 87 Tcontrol_t write_re = entry->write_re; 88 Tspecial_address_t num_reg_re_log = entry->num_reg_re_log; 89 Tcontext_t front_end_id = entry->front_end_id; 90 Tcontext_t context_id = entry->context_id; 91 92 // if state is ok, when write flags in the SR regsiters 93 bool spr_write_ack = true; 94 95 // Write in SR the good flag 96 if ((state == ROB_END_OK ) and write_re) 97 // ROB_END_BRANCH_MISS is a valid branch instruction but don't modify RE 98 { 99 spr_write_ack = PORT_READ(in_SPR_WRITE_ACK [front_end_id][context_id]); 100 101 // retire_ack is set !!! 102 spr_write_val [front_end_id][context_id] = 1; 103 104 Tspecial_data_t flags = entry->flags; 105 106 switch (num_reg_re_log) 107 { 108 case SPR_LOGIC_SR_F : 109 { 110 spr_write_sr_f_val [front_end_id][context_id] = 1; 111 spr_write_sr_f [front_end_id][context_id] = (flags & FLAG_F )!=0; 112 113 break; 114 } 115 case SPR_LOGIC_SR_CY_OV : 116 { 117 spr_write_sr_cy_val [front_end_id][context_id] = 1; 118 spr_write_sr_ov_val [front_end_id][context_id] = 1; 119 spr_write_sr_cy [front_end_id][context_id] = (flags & FLAG_CY)!=0; 120 spr_write_sr_ov [front_end_id][context_id] = (flags & FLAG_OV)!=0; 121 122 break; 123 } 124 default : 125 { 127 126 #ifdef DEBUG_TEST 128 127 throw ERRORMORPHEO(FUNCTION,_("Invalid num_reg_re_log.\n")); 129 128 #endif 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 // PORT_WRITE(out_RETIRE_RENAME_UNIT_ID [x][y], entry->rename_unit_id );151 152 153 154 155 PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE [x][y], entry->load_queue_ptr_write );156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 // Event -> rob must be manage this event172 if ((state == ROB_END_BRANCH_MISS) or173 (state == ROB_END_LOAD_MISS))174 can_retire [x] = false;175 129 } 130 } 131 } 132 133 // find an instruction can be retire, and in order 134 135 if (spr_write_ack) 136 { 137 retire_val [x][y] = 1; 138 num_inst_retire [x] ++; 139 internal_BANK_RETIRE_VAL [num_bank] = true; 140 } 141 142 internal_BANK_RETIRE_NUM_RENAME_UNIT [num_bank] = x; 143 internal_BANK_RETIRE_NUM_INST [num_bank] = y; 144 145 if (_param->_have_port_front_end_id) 146 PORT_WRITE(out_RETIRE_FRONT_END_ID [x][y], front_end_id ); 147 if (_param->_have_port_context_id) 148 PORT_WRITE(out_RETIRE_CONTEXT_ID [x][y], context_id ); 149 // PORT_WRITE(out_RETIRE_RENAME_UNIT_ID [x][y], entry->rename_unit_id ); 150 PORT_WRITE(out_RETIRE_USE_STORE_QUEUE [x][y], entry->use_store_queue ); 151 PORT_WRITE(out_RETIRE_USE_LOAD_QUEUE [x][y], entry->use_load_queue ); 152 PORT_WRITE(out_RETIRE_STORE_QUEUE_PTR_WRITE [x][y], entry->store_queue_ptr_write); 153 if (_param->_have_port_load_queue_ptr) 154 PORT_WRITE(out_RETIRE_LOAD_QUEUE_PTR_WRITE [x][y], entry->load_queue_ptr_write ); 155 PORT_WRITE(out_RETIRE_READ_RA [x][y], entry->read_ra ); 156 PORT_WRITE(out_RETIRE_NUM_REG_RA_PHY [x][y], entry->num_reg_ra_phy ); 157 PORT_WRITE(out_RETIRE_READ_RB [x][y], entry->read_rb ); 158 PORT_WRITE(out_RETIRE_NUM_REG_RB_PHY [x][y], entry->num_reg_rb_phy ); 159 PORT_WRITE(out_RETIRE_READ_RC [x][y], entry->read_rc ); 160 PORT_WRITE(out_RETIRE_NUM_REG_RC_PHY [x][y], entry->num_reg_rc_phy ); 161 PORT_WRITE(out_RETIRE_WRITE_RD [x][y], entry->write_rd ); 162 PORT_WRITE(out_RETIRE_NUM_REG_RD_LOG [x][y], entry->num_reg_rd_log ); 163 PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_OLD [x][y], entry->num_reg_rd_phy_old ); 164 PORT_WRITE(out_RETIRE_NUM_REG_RD_PHY_NEW [x][y], entry->num_reg_rd_phy_new ); 165 PORT_WRITE(out_RETIRE_WRITE_RE [x][y], write_re ); 166 PORT_WRITE(out_RETIRE_NUM_REG_RE_LOG [x][y], num_reg_re_log ); 167 PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_OLD [x][y], entry->num_reg_re_phy_old ); 168 PORT_WRITE(out_RETIRE_NUM_REG_RE_PHY_NEW [x][y], entry->num_reg_re_phy_new ); 169 170 // Event -> rob must be manage this event 171 if ((state == ROB_END_BRANCH_MISS) or 172 (state == ROB_END_LOAD_MISS)) 173 can_retire [x] = false; 174 } 176 175 } 177 176 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Commit_unit/src/Commit_unit_transition.cpp
r111 r112 49 49 reg_EVENT_STATE [i][j] = EVENT_STATE_NO_EVENT; 50 50 reg_EVENT_FLUSH [i][j] = false; 51 reg_EVENT_STOP [i][j] = false; 51 52 52 53 // reg_PC_PREVIOUS [i][j] = (0x100-4)>>2; … … 90 91 reg_EVENT_STATE [i][j] = EVENT_STATE_END; 91 92 reg_EVENT_FLUSH [i][j] = false; 93 //reg_EVENT_STOP [i][j] = false; 92 94 } 93 95 break; … … 324 326 case ROB_BRANCH_WAIT_END : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:ROB_BRANCH_COMPLETE; break;} 325 327 // Store KO 326 case ROB_ MISS_WAIT_END: {state = ROB_END_KO_SPECULATIVE; break;}328 case ROB_EVENT_WAIT_END : {state = ROB_END_KO_SPECULATIVE; break;} 327 329 // Store OK, Load and other instruction 328 330 case ROB_OTHER_WAIT_END : {state = (have_exception)?ROB_END_EXCEPTION_WAIT_HEAD:((have_miss_speculation)?ROB_END_LOAD_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE); break;} … … 333 335 } 334 336 } 337 338 if ((have_exception or have_miss_speculation) and 339 (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0)) 340 reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true; 335 341 336 342 // update Re Order Buffer … … 364 370 365 371 log_printf(TRACE,Commit_unit,FUNCTION," * RETIRE [%d][%d]",x,y); 372 log_printf(TRACE,Commit_unit,FUNCTION," * num_bank : %d",num_bank ); 366 373 367 374 #ifdef DEBUG_TEST … … 381 388 log_printf(TRACE,Commit_unit,FUNCTION," * front_end_id : %d",front_end_id ); 382 389 log_printf(TRACE,Commit_unit,FUNCTION," * context_id : %d",context_id ); 390 log_printf(TRACE,Commit_unit,FUNCTION," * rob_ptr : %d",((num_bank << _param->_shift_num_bank) | entry->ptr)); 383 391 log_printf(TRACE,Commit_unit,FUNCTION," * num_thread : %d",num_thread ); 384 392 log_printf(TRACE,Commit_unit,FUNCTION," * type : %s",toString(type).c_str()); … … 406 414 // throw ERRORMORPHEO(FUNCTION,toString(_("Retire : Instruction's address_next (%.8x) is different of commit_unit's address_next (%.8x)"),entry->address_next,reg_PC_NEXT [front_end_id][context_id])); 407 415 } 408 416 409 417 if ((state == ROB_END_BRANCH_MISS) or 410 418 (state == ROB_END_LOAD_MISS)) 411 { 412 reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT; 413 reg_EVENT_FLUSH [front_end_id][context_id] = true; 414 } 419 { 420 reg_EVENT_STATE [front_end_id][context_id] = EVENT_STATE_EVENT; 421 reg_EVENT_FLUSH [front_end_id][context_id] = true; 422 reg_EVENT_STOP [front_end_id][context_id] = false; 423 } 415 424 416 425 #if defined(DEBUG) and defined(DEBUG_Commit_unit) and (DEBUG_Commit_unit == true) … … 475 484 { 476 485 case ROB_STORE_HEAD_OK : {state = ROB_OTHER_WAIT_END; break; } 477 case ROB_STORE_HEAD_KO : {state = ROB_ MISS_WAIT_END; break; }486 case ROB_STORE_HEAD_KO : {state = ROB_EVENT_WAIT_END; break; } 478 487 default : {throw ERRORMORPHEO(FUNCTION,_("Reexecute : invalid state value.\n"));} 479 488 } … … 500 509 throw ERRORMORPHEO(FUNCTION,_("Branch_complete : Invalid state value.\n")); 501 510 #endif 502 503 entry->state = (PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]))?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE; 511 Tcontrol_t miss = PORT_READ(in_BRANCH_COMPLETE_MISS_PREDICTION [i]); 512 513 entry->state = (miss)?ROB_END_BRANCH_MISS_SPECULATIVE:ROB_END_OK_SPECULATIVE; 514 515 if (miss and (reg_EVENT_FLUSH [entry->front_end_id][entry->context_id] == 0)) 516 reg_EVENT_STOP [entry->front_end_id][entry->context_id] = true; 517 518 504 519 // entry->state = ROB_END_OK_SPECULATIVE; 505 520 } … … 612 627 switch (state) 613 628 { 614 case ROB_BRANCH_WAIT_END : {state = ROB_ MISS_WAIT_END; break;}615 case ROB_BRANCH_COMPLETE : {state = ROB_END_MISS ; break;}629 case ROB_BRANCH_WAIT_END : {state = ROB_EVENT_WAIT_END; break;} 630 case ROB_BRANCH_COMPLETE : {state = ROB_END_MISS ; break;} 616 631 case ROB_END_BRANCH_MISS : 617 case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;}632 case ROB_END_BRANCH_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;} 618 633 case ROB_END_LOAD_MISS_UPDATE : 619 634 case ROB_END_LOAD_MISS : 620 case ROB_END_LOAD_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;}621 case ROB_STORE_WAIT_HEAD_OK : {state = ROB_STORE_HEAD_KO ; break;}635 case ROB_END_LOAD_MISS_SPECULATIVE : {state = ROB_END_MISS ; break;} 636 case ROB_STORE_WAIT_HEAD_OK : {state = ROB_STORE_HEAD_KO ; break;} 622 637 //case ROB_STORE_WAIT_HEAD_KO : {state = ; break;} 623 case ROB_OTHER_WAIT_END : {state = ROB_ MISS_WAIT_END; break;}638 case ROB_OTHER_WAIT_END : {state = ROB_EVENT_WAIT_END; break;} 624 639 case ROB_END_OK : 625 case ROB_END_OK_SPECULATIVE : {state = ROB_END_MISS ; break;}640 case ROB_END_OK_SPECULATIVE : {state = ROB_END_MISS ; break;} 626 641 case ROB_END_KO : 627 case ROB_END_KO_SPECULATIVE : {state = ROB_END_MISS ; break;}642 case ROB_END_KO_SPECULATIVE : {state = ROB_END_MISS ; break;} 628 643 case ROB_END_EXCEPTION_UPDATE : 629 644 case ROB_END_EXCEPTION : 630 case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_MISS ; break;}645 case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_MISS ; break;} 631 646 632 647 // don't change 633 648 case ROB_STORE_HEAD_KO : {break;} 634 case ROB_ MISS_WAIT_END: {break;}649 case ROB_EVENT_WAIT_END : {break;} 635 650 case ROB_END_MISS : {break;} 636 651 … … 671 686 case ROB_STORE_WAIT_HEAD_OK : {state = ROB_STORE_HEAD_OK; break;} 672 687 case ROB_END_EXCEPTION_WAIT_HEAD : {state = ROB_END_EXCEPTION_UPDATE; break;} 673 688 default : {break;} // else, no change 674 689 } 675 690 } … … 701 716 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_STATE : %s",toString(reg_EVENT_STATE [i][j]).c_str()); 702 717 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_FLUSH : %d",reg_EVENT_FLUSH [i][j]); 718 log_printf(TRACE,Commit_unit,FUNCTION," * EVENT_STOP : %d",reg_EVENT_STOP [i][j]); 703 719 log_printf(TRACE,Commit_unit,FUNCTION," * NB_INST_ALL : %d",reg_NB_INST_COMMIT_ALL[i][j]); 704 720 log_printf(TRACE,Commit_unit,FUNCTION," * NB_INST_MEM : %d",reg_NB_INST_COMMIT_MEM[i][j]); … … 784 800 // or (entry->state == ROB_STORE_HEAD_KO ) 785 801 // or (entry->state == ROB_OTHER_WAIT_END ) 786 // or (entry->state == ROB_ MISS_WAIT_END)802 // or (entry->state == ROB_EVENT_WAIT_END ) 787 803 // or (entry->state == ROB_END_OK_SPECULATIVE ) 788 804 or (entry->state == ROB_END_OK ) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_allocation.cpp
r111 r112 59 59 // ~~~~~[ Interface : "issue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC2_INTERFACE ("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]);61 ALLOC2_INTERFACE_BEGIN("issue_in", IN, WEST, _("Rename_out / Insert Rob interface"),_param->_nb_rename_unit, _param->_nb_inst_rename[it1]); 62 62 63 63 _ALLOC2_VALACK_IN ( in_ISSUE_IN_VAL ,VAL,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]); … … 82 82 _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]); 83 83 _ALLOC2_SIGNAL_IN ( in_ISSUE_IN_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register,_param->_nb_rename_unit, _param->_nb_inst_rename[it1]); 84 85 ALLOC2_INTERFACE_END(_param->_nb_rename_unit, _param->_nb_inst_rename[it1]); 84 86 } 85 87 86 88 // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 87 89 { 88 ALLOC1_INTERFACE ("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute);90 ALLOC1_INTERFACE_BEGIN("reexecute", IN, NORTH, _("Instruction reexecute (store head/ spr access)"),_param->_nb_inst_reexecute); 89 91 90 92 ALLOC1_VALACK_IN ( in_REEXECUTE_VAL ,VAL); … … 109 111 ALLOC1_SIGNAL_IN ( in_REEXECUTE_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 110 112 ALLOC1_SIGNAL_IN ( in_REEXECUTE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 113 114 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 111 115 } 112 116 113 117 // ~~~~~[ Interface : "issue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 118 { 115 ALLOC1_INTERFACE ("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue);119 ALLOC1_INTERFACE_BEGIN("issue_out",OUT, EAST, _("Go to issue network"),_param->_nb_inst_issue); 116 120 117 121 ALLOC1_VALACK_OUT(out_ISSUE_OUT_VAL ,VAL); … … 136 140 ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 137 141 ALLOC1_SIGNAL_OUT(out_ISSUE_OUT_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 142 143 ALLOC1_INTERFACE_END(_param->_nb_inst_issue); 138 144 } 139 145 … … 141 147 { 142 148 // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 143 _issue_queue = new std::list<entry_t*> [_param->_nb_bank];149 ALLOC1(_issue_queue ,std::list<entry_t*>,_param->_nb_bank); 144 150 145 151 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Issue_queue/src/Issue_queue_deallocation.cpp
r111 r112 95 95 96 96 // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 delete [] _issue_queue;97 DELETE1(_issue_queue ,_param->_nb_bank); 98 98 99 99 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/OOO_Engine_Glue/src/OOO_Engine_Glue_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]);60 ALLOC2_INTERFACE_BEGIN("rename",IN, SOUTH,_("rename's interface"),_param->_nb_front_end,_param->_nb_inst_decod[it1]); 61 61 62 62 _ALLOC2_SIGNAL_IN ( in_RENAME_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 63 63 _ALLOC2_SIGNAL_OUT(out_RENAME_RENAME_UNIT_FRONT_END_ID ,"RENAME_UNIT_FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 64 65 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]); 64 66 } 65 67 66 68 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 67 69 { 68 ALLOC1_INTERFACE ("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert);70 ALLOC1_INTERFACE_BEGIN("insert",OUT, WEST,_("insert's interface"),_param->_sum_inst_insert); 69 71 70 72 ALLOC1_SIGNAL_OUT (out_INSERT_VAL ,"VAL" ,Tcontrol_t ,1 ); … … 74 76 ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE ,"RE_USE" ,Tcontrol_t ,1 ); 75 77 ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG ,"RE_NUM_REG" ,Tspecial_address_t ,_param->_size_special_register); 76 } 77 78 { 79 ALLOC2_INTERFACE("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 78 79 ALLOC1_INTERFACE_END(_param->_sum_inst_insert); 80 } 81 82 { 83 ALLOC2_INTERFACE_BEGIN("insert",IN, EAST,_("insert's interface"),_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 80 84 81 85 _ALLOC2_SIGNAL_IN ( in_INSERT_RENAME_UNIT_VAL ,"RENAME_UNIT_VAL" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); … … 146 150 _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_WRITE_RE ,"ISSUE_QUEUE_WRITE_RE" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 147 151 _ALLOC2_SIGNAL_OUT(out_INSERT_ISSUE_QUEUE_NUM_REG_RE ,"ISSUE_QUEUE_NUM_REG_RE" ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 152 153 ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_insert[it1]); 148 154 } 149 155 150 156 // // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 151 157 // { 152 // ALLOC1_INTERFACE ("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire);158 // ALLOC1_INTERFACE_BEGIN("retire",OUT, WEST,_("retire's interface"),_param->_sum_inst_retire); 153 159 154 160 // ALLOC1_SIGNAL_OUT (out_RETIRE_VAL ,"VAL" ,Tcontrol_t ,1 ); … … 162 168 // ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE ,"RE_NEW_USE" ,Tcontrol_t ,1 ); 163 169 // ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG ,"RE_NEW_NUM_REG" ,Tspecial_address_t ,_param->_size_special_register); 170 171 // ALLOC1_INTERFACE_END(_param->_sum_inst_retire); 164 172 // } 165 173 166 174 // { 167 // ALLOC2_INTERFACE ("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]);175 // ALLOC2_INTERFACE_BEGIN("retire",IN, EAST,_("retire's interface"),_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 168 176 169 177 // _ALLOC2_SIGNAL_OUT(out_RETIRE_RENAME_UNIT_VAL ,"RENAME_UNIT_VAL" ,Tcontrol_t ,1 ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); … … 188 196 // _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_NUM_REG_RE_PHY_NEW ,"COMMIT_UNIT_NUM_REG_RE_PHY_NEW" ,Tspecial_address_t ,_param->_size_special_register,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 189 197 // _ALLOC2_SIGNAL_IN ( in_RETIRE_COMMIT_UNIT_EVENT_STATE ,"COMMIT_UNIT_EVENT_STATE" ,Tevent_state_t ,_param->_size_event_state ,_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 198 199 // ALLOC2_INTERFACE_END(_param->_nb_rename_unit,_param->_nb_inst_retire[it1]); 190 200 // } 191 201 192 202 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 193 203 { 194 ALLOC2_INTERFACE ("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]);204 ALLOC2_INTERFACE_BEGIN("spr",IN, NORTH,_("spr's interface"),_param->_nb_front_end,_param->_nb_context[it1]); 195 205 196 206 _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE ,"SR_IEE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); … … 199 209 _ALLOC2_SIGNAL_OUT(out_SPR_COMMIT_UNIT_SR_OVE ,"COMMIT_UNIT_SR_OVE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 200 210 _ALLOC2_SIGNAL_IN ( in_SPR_SPECIAL_REGISTER_UNIT_SR ,"SPECIAL_REGISTER_UNIT_SR" ,Tspr_t ,_param->_size_spr ,_param->_nb_front_end,_param->_nb_context[it1]); 211 212 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 201 213 } 202 214 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);60 ALLOC2_INTERFACE_BEGIN("execute_loop", IN, EAST, _("Instruction executed from execute_loop"),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL ,VAL,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); … … 72 72 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 73 73 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA ,"data" ,Tgeneral_data_t ,_param->_size_general_data,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 74 75 ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 74 76 } 75 77 76 78 // ~~~~~[ Interface "commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC1_INTERFACE ("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit);80 ALLOC1_INTERFACE_BEGIN("commit",OUT,WEST, _("Instruction executed to Re Order Buffer"),_param->_nb_inst_commit); 79 81 80 82 ALLOC1_VALACK_OUT(out_COMMIT_VAL ,VAL); … … 91 93 ALLOC1_SIGNAL_OUT(out_COMMIT_ADDRESS ,"address" ,Taddress_t ,_param->_size_instruction_address); 92 94 ALLOC1_SIGNAL_IN ( in_COMMIT_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t ,_param->_size_general_register); 95 96 ALLOC1_INTERFACE_END(_param->_nb_inst_commit); 93 97 } 94 98 95 99 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 100 { 97 ALLOC1_INTERFACE ("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute);101 ALLOC1_INTERFACE_BEGIN("spr",OUT,EAST, _("Access to Special Register"), _param->_nb_inst_reexecute); 98 102 99 103 ALLOC1_VALACK_OUT(out_SPR_VAL ,VAL); … … 107 111 ALLOC1_SIGNAL_IN ( in_SPR_RDATA ,"rdata" ,Tspr_t ,_param->_size_spr); 108 112 ALLOC1_SIGNAL_IN ( in_SPR_INVALID ,"invalid" ,Tcontrol_t ,1); 113 114 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 109 115 } 110 116 111 117 // ~~~~~[ Interface : "reexecute_rob" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 112 118 { 113 ALLOC1_INTERFACE ("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute);119 ALLOC1_INTERFACE_BEGIN("reexecute_rob", IN,EAST, _("Instruction reexecuted by the Re Order Buffer (Store head)"), _param->_nb_inst_reexecute); 114 120 115 121 ALLOC1_VALACK_IN ( in_REEXECUTE_ROB_VAL ,VAL); … … 121 127 ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_TYPE ,"type" ,Ttype_t ,_param->_size_type); 122 128 ALLOC1_SIGNAL_IN ( in_REEXECUTE_ROB_STORE_QUEUE_PTR_WRITE ,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 129 130 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 123 131 } 124 132 125 133 // ~~~~~[ Interface : "reexecute" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 126 134 { 127 ALLOC1_INTERFACE ("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute);135 ALLOC1_INTERFACE_BEGIN("reexecute",OUT,SOUTH, _("Instruction reexecute, send at the issue_queue"), _param->_nb_inst_reexecute); 128 136 129 137 ALLOC1_VALACK_OUT(out_REEXECUTE_VAL ,VAL); 130 138 ALLOC1_VALACK_IN ( in_REEXECUTE_ACK ,ACK); 131 ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 132 ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 133 ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 134 ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 135 ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 136 ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 137 ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 138 ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 139 ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 140 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 141 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register ); 142 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 143 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register ); 144 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 145 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register ); 146 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 147 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register ); 148 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 149 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register ); 139 ALLOC1_SIGNAL_OUT(out_REEXECUTE_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); 140 ALLOC1_SIGNAL_OUT(out_REEXECUTE_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 141 ALLOC1_SIGNAL_OUT(out_REEXECUTE_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 142 ALLOC1_SIGNAL_OUT(out_REEXECUTE_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 143 ALLOC1_SIGNAL_OUT(out_REEXECUTE_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 144 ALLOC1_SIGNAL_OUT(out_REEXECUTE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr ); 145 ALLOC1_SIGNAL_OUT(out_REEXECUTE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 146 ALLOC1_SIGNAL_OUT(out_REEXECUTE_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 147 ALLOC1_SIGNAL_OUT(out_REEXECUTE_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); 148 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 149 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RA ,"num_reg_ra" ,Tgeneral_address_t,_param->_size_general_register); 150 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RB ,"read_rb" ,Tcontrol_t ,1 ); 151 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RB ,"num_reg_rb" ,Tgeneral_address_t,_param->_size_general_register); 152 ALLOC1_SIGNAL_OUT(out_REEXECUTE_READ_RC ,"read_rc" ,Tcontrol_t ,1 ); 153 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RC ,"num_reg_rc" ,Tspecial_address_t,_param->_size_special_register); 154 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RD ,"write_rd" ,Tcontrol_t ,1 ); 155 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RD ,"num_reg_rd" ,Tgeneral_address_t,_param->_size_general_register); 156 ALLOC1_SIGNAL_OUT(out_REEXECUTE_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 157 ALLOC1_SIGNAL_OUT(out_REEXECUTE_NUM_REG_RE ,"num_reg_re" ,Tspecial_address_t,_param->_size_special_register); 158 159 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 150 160 } 151 161 … … 153 163 { 154 164 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 _reexecute_queue = new std::list<entry_t *> [_param->_nb_bank];165 ALLOC1(_reexecute_queue ,std::list<entry_t *>,_param->_nb_bank); 156 166 157 167 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 158 internal_QUEUE_PUSH = new Tcontrol_t [_param->_nb_bank];159 internal_QUEUE_NUM_EXECUTE_LOOP = new uint32_t [_param->_nb_bank];160 internal_QUEUE_NUM_INST_EXECUTE = new uint32_t [_param->_nb_bank];161 internal_QUEUE_NUM_INST_COMMIT = new uint32_t [_param->_nb_bank];162 internal_QUEUE_INFO = new info_t [_param->_nb_bank];163 internal_SPR_VAL = new Tcontrol_t [_param->_nb_inst_reexecute];164 internal_REEXECUTE_ROB_ACK = new Tcontrol_t [_param->_nb_inst_reexecute];165 internal_REEXECUTE_VAL = new Tcontrol_t [_param->_nb_inst_reexecute];168 ALLOC1(internal_QUEUE_PUSH ,Tcontrol_t,_param->_nb_bank); 169 ALLOC1(internal_QUEUE_NUM_EXECUTE_LOOP ,uint32_t ,_param->_nb_bank); 170 ALLOC1(internal_QUEUE_NUM_INST_EXECUTE ,uint32_t ,_param->_nb_bank); 171 ALLOC1(internal_QUEUE_NUM_INST_COMMIT ,uint32_t ,_param->_nb_bank); 172 ALLOC1(internal_QUEUE_INFO ,info_t ,_param->_nb_bank); 173 ALLOC1(internal_SPR_VAL ,Tcontrol_t,_param->_nb_inst_reexecute); 174 ALLOC1(internal_REEXECUTE_ROB_ACK ,Tcontrol_t,_param->_nb_inst_reexecute); 175 ALLOC1(internal_REEXECUTE_VAL ,Tcontrol_t,_param->_nb_inst_reexecute); 166 176 #ifdef STATISTICS 167 internal_COMMIT_VAL = new Tcontrol_t [_param->_nb_inst_commit];177 ALLOC1(internal_COMMIT_VAL ,Tcontrol_t,_param->_nb_inst_commit); 168 178 #endif 169 179 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Reexecute_unit/src/Reexecute_unit_deallocation.cpp
r88 r112 105 105 delete entry; 106 106 } 107 delete [] _reexecute_queue;107 DELETE1(_reexecute_queue ,_param->_nb_bank); 108 108 109 109 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 110 delete [] internal_QUEUE_PUSH;111 delete [] internal_QUEUE_NUM_EXECUTE_LOOP;112 delete [] internal_QUEUE_NUM_INST_EXECUTE;113 delete [] internal_QUEUE_NUM_INST_COMMIT;114 delete [] internal_QUEUE_INFO;115 delete [] internal_SPR_VAL;116 delete [] internal_REEXECUTE_ROB_ACK;117 delete [] internal_REEXECUTE_VAL;110 DELETE1(internal_QUEUE_PUSH ,_param->_nb_bank); 111 DELETE1(internal_QUEUE_NUM_EXECUTE_LOOP ,_param->_nb_bank); 112 DELETE1(internal_QUEUE_NUM_INST_EXECUTE ,_param->_nb_bank); 113 DELETE1(internal_QUEUE_NUM_INST_COMMIT ,_param->_nb_bank); 114 DELETE1(internal_QUEUE_INFO ,_param->_nb_bank); 115 DELETE1(internal_SPR_VAL ,_param->_nb_inst_reexecute); 116 DELETE1(internal_REEXECUTE_ROB_ACK ,_param->_nb_inst_reexecute); 117 DELETE1(internal_REEXECUTE_VAL ,_param->_nb_inst_reexecute); 118 118 #ifdef STATISTICS 119 delete [] internal_COMMIT_VAL;119 DELETE1(internal_COMMIT_VAL ,_param->_nb_inst_commit); 120 120 #endif 121 121 } 122 122 123 123 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 124 124 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_allocation.cpp
r97 r112 58 58 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("insert", IN, EAST, "insert to the re order buffer an instruction", _param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("insert", IN, EAST, _("insert to the re order buffer an instruction"), _param->_nb_inst_insert); 61 61 62 62 ALLOC1_VALACK_IN ( in_INSERT_VAL ,VAL); … … 68 68 ALLOC1_SIGNAL_OUT(out_INSERT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 69 69 ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 70 71 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 70 72 } 71 73 72 74 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 75 { 74 ALLOC1_INTERFACE ("retire", IN, EAST, "retire from the re order buffer an instruction", _param->_nb_inst_retire);76 ALLOC1_INTERFACE_BEGIN("retire", IN, EAST, _("retire from the re order buffer an instruction"), _param->_nb_inst_retire); 75 77 76 78 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); … … 84 86 ALLOC1_SIGNAL_IN ( in_RETIRE_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 85 87 ALLOC1_SIGNAL_IN ( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr ); 88 89 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 86 90 } 87 91 88 92 if (usage_is_set(_usage,USE_SYSTEMC)) 89 93 { 90 reg_STORE_QUEUE_PTR_WRITE = new Tlsq_ptr_t [_param->_nb_load_store_queue]; 91 reg_STORE_QUEUE_USE = new bool * [_param->_nb_load_store_queue]; 92 reg_STORE_QUEUE_NB_USE = new Tlsq_ptr_t [_param->_nb_load_store_queue]; 93 reg_LOAD_QUEUE_PTR_WRITE = new Tlsq_ptr_t [_param->_nb_load_store_queue]; 94 reg_LOAD_QUEUE_USE = new bool * [_param->_nb_load_store_queue]; 95 96 for (uint32_t i=0; i<_param->_nb_load_store_queue; i++) 97 { 98 reg_STORE_QUEUE_USE [i] = new bool [_param->_size_store_queue [i]]; 99 reg_LOAD_QUEUE_USE [i] = new bool [_param->_size_load_queue [i]]; 100 } 94 ALLOC1(reg_STORE_QUEUE_PTR_WRITE ,Tlsq_ptr_t ,_param->_nb_load_store_queue); 95 ALLOC2(reg_STORE_QUEUE_USE ,bool ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]); 96 ALLOC1(reg_STORE_QUEUE_NB_USE ,Tlsq_ptr_t ,_param->_nb_load_store_queue); 97 ALLOC1(reg_LOAD_QUEUE_PTR_WRITE ,Tlsq_ptr_t ,_param->_nb_load_store_queue); 98 ALLOC2(reg_LOAD_QUEUE_USE ,bool ,_param->_nb_load_store_queue,_param->_size_load_queue [it1]); 101 99 102 internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert];103 internal_INSERT_OPERATION_USE = new operation_use_t [_param->_nb_inst_insert];104 internal_INSERT_LSQ = new uint32_t [_param->_nb_inst_insert];105 internal_INSERT_PTR = new Tlsq_ptr_t [_param->_nb_inst_insert];100 ALLOC1(internal_INSERT_ACK ,Tcontrol_t ,_param->_nb_inst_insert); 101 ALLOC1(internal_INSERT_OPERATION_USE ,operation_use_t,_param->_nb_inst_insert); 102 ALLOC1(internal_INSERT_LSQ ,uint32_t ,_param->_nb_inst_insert); 103 ALLOC1(internal_INSERT_PTR ,Tlsq_ptr_t ,_param->_nb_inst_insert); 106 104 107 internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire];108 internal_RETIRE_OPERATION_USE = new operation_use_t [_param->_nb_inst_retire];109 internal_RETIRE_LSQ = new uint32_t [_param->_nb_inst_retire];110 internal_RETIRE_PTR = new Tlsq_ptr_t [_param->_nb_inst_retire];105 ALLOC1(internal_RETIRE_ACK ,Tcontrol_t ,_param->_nb_inst_retire); 106 ALLOC1(internal_RETIRE_OPERATION_USE ,operation_use_t,_param->_nb_inst_retire); 107 ALLOC1(internal_RETIRE_LSQ ,uint32_t ,_param->_nb_inst_retire); 108 ALLOC1(internal_RETIRE_PTR ,Tlsq_ptr_t ,_param->_nb_inst_retire); 111 109 } 112 110 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/src/Load_Store_pointer_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Load_Store_pointer_unit/include/Load_Store_pointer_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 28 29 delete in_NRESET; 29 30 30 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 delete [] in_INSERT_VAL ; 32 delete [] out_INSERT_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_INSERT_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_INSERT_CONTEXT_ID ; 37 delete [] in_INSERT_TYPE ; 38 delete [] in_INSERT_OPERATION ; 39 delete [] out_INSERT_STORE_QUEUE_PTR_WRITE; 40 if (_param->_have_port_load_queue_ptr) 41 delete [] out_INSERT_LOAD_QUEUE_PTR_WRITE ; 42 43 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 44 delete [] in_RETIRE_VAL ; 45 delete [] out_RETIRE_ACK ; 46 if (_param->_have_port_front_end_id) 47 delete [] in_RETIRE_FRONT_END_ID ; 48 if (_param->_have_port_context_id) 49 delete [] in_RETIRE_CONTEXT_ID ; 50 // delete [] in_RETIRE_TYPE ; 51 // delete [] in_RETIRE_OPERATION ; 52 delete [] in_RETIRE_USE_STORE_QUEUE ; 53 delete [] in_RETIRE_USE_LOAD_QUEUE ; 54 delete [] in_RETIRE_STORE_QUEUE_PTR_WRITE; 55 if (_param->_have_port_load_queue_ptr) 56 delete [] in_RETIRE_LOAD_QUEUE_PTR_WRITE ; 31 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 32 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 34 DELETE1_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 35 DELETE1_SIGNAL( in_INSERT_TYPE ,_param->_nb_inst_insert,_param->_size_type ); 36 DELETE1_SIGNAL( in_INSERT_OPERATION ,_param->_nb_inst_insert,_param->_size_operation ); 37 DELETE1_SIGNAL(out_INSERT_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_insert,_param->_size_store_queue_ptr); 38 DELETE1_SIGNAL(out_INSERT_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_insert,_param->_size_load_queue_ptr ); 57 39 58 delete [] reg_STORE_QUEUE_PTR_WRITE ; 59 delete [] reg_STORE_QUEUE_USE ; 60 delete [] reg_STORE_QUEUE_NB_USE ; 61 delete [] reg_LOAD_QUEUE_PTR_WRITE ; 62 delete [] reg_LOAD_QUEUE_USE ; 63 delete [] internal_INSERT_ACK ; 64 delete [] internal_INSERT_OPERATION_USE; 65 delete [] internal_INSERT_LSQ ; 66 delete [] internal_INSERT_PTR ; 67 delete [] internal_RETIRE_ACK ; 68 delete [] internal_RETIRE_OPERATION_USE; 69 delete [] internal_RETIRE_LSQ ; 70 delete [] internal_RETIRE_PTR ; 40 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 41 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 42 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 43 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 44 // DELETE1_SIGNAL( in_RETIRE_TYPE ,_param->_nb_inst_retire,_param->_size_type ); 45 // DELETE1_SIGNAL( in_RETIRE_OPERATION ,_param->_nb_inst_retire,_param->_size_operation ); 46 DELETE1_SIGNAL( in_RETIRE_USE_STORE_QUEUE ,_param->_nb_inst_retire,1); 47 DELETE1_SIGNAL( in_RETIRE_USE_LOAD_QUEUE ,_param->_nb_inst_retire,1); 48 DELETE1_SIGNAL( in_RETIRE_STORE_QUEUE_PTR_WRITE,_param->_nb_inst_retire,_param->_size_store_queue_ptr); 49 DELETE1_SIGNAL( in_RETIRE_LOAD_QUEUE_PTR_WRITE ,_param->_nb_inst_retire,_param->_size_load_queue_ptr ); 50 51 DELETE1(reg_STORE_QUEUE_PTR_WRITE ,_param->_nb_load_store_queue); 52 DELETE2(reg_STORE_QUEUE_USE ,_param->_nb_load_store_queue,_param->_size_store_queue [it1]); 53 DELETE1(reg_STORE_QUEUE_NB_USE ,_param->_nb_load_store_queue); 54 DELETE1(reg_LOAD_QUEUE_PTR_WRITE ,_param->_nb_load_store_queue); 55 DELETE2(reg_LOAD_QUEUE_USE ,_param->_nb_load_store_queue,_param->_size_load_queue [it1]); 56 57 DELETE1(internal_INSERT_ACK ,_param->_nb_inst_insert); 58 DELETE1(internal_INSERT_OPERATION_USE ,_param->_nb_inst_insert); 59 DELETE1(internal_INSERT_LSQ ,_param->_nb_inst_insert); 60 DELETE1(internal_INSERT_PTR ,_param->_nb_inst_insert); 61 62 DELETE1(internal_RETIRE_ACK ,_param->_nb_inst_retire); 63 DELETE1(internal_RETIRE_OPERATION_USE ,_param->_nb_inst_retire); 64 DELETE1(internal_RETIRE_LSQ ,_param->_nb_inst_retire); 65 DELETE1(internal_RETIRE_PTR ,_param->_nb_inst_retire); 71 66 } 72 67 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ Interface "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("rename_in", IN, EAST, "Registers before near dependency checking", _param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("rename_in", IN, EAST, _("Registers before near dependency checking"), _param->_nb_inst_insert); 61 61 62 // 63 // 62 // ALLOC1_VALACK_IN ( in_RENAME_IN_VAL ,VAL); 63 // ALLOC1_VALACK_OUT(out_RENAME_IN_ACK ,ACK); 64 64 ALLOC1_SIGNAL_IN ( in_RENAME_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 65 ALLOC1_SIGNAL_IN ( in_RENAME_IN_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); … … 81 81 ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 82 82 ALLOC1_SIGNAL_IN ( in_RENAME_IN_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 83 84 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 83 85 } 84 86 85 87 // ~~~~~[ Interface "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 88 { 87 ALLOC1_INTERFACE ("rename_out", OUT, WEST, "Registers after near dependency checking", _param->_nb_inst_insert);89 ALLOC1_INTERFACE_BEGIN("rename_out", OUT, WEST, _("Registers after near dependency checking"), _param->_nb_inst_insert); 88 90 89 // 90 // 91 // ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL ,VAL); 92 // ALLOC1_VALACK_IN ( in_RENAME_OUT_ACK ,ACK); 91 93 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 92 94 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_CONTEXT_ID ,"context_id" ,Tcontext_t ,_param->_size_context_id ); … … 108 110 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 109 111 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 112 113 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 110 114 } 111 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/src/Dependency_checking_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Dependency_checking_unit/include/Dependency_checking_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 // delete [] in_RENAME_IN_VAL ; 32 // delete [] out_RENAME_IN_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_RENAME_IN_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_RENAME_IN_CONTEXT_ID ; 37 delete [] in_RENAME_IN_READ_RA ; 38 delete [] in_RENAME_IN_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_IN_NUM_REG_RA_PHY ; 40 delete [] in_RENAME_IN_READ_RB ; 41 delete [] in_RENAME_IN_NUM_REG_RB_LOG ; 42 delete [] in_RENAME_IN_NUM_REG_RB_PHY ; 43 delete [] in_RENAME_IN_READ_RC ; 44 delete [] in_RENAME_IN_NUM_REG_RC_LOG ; 45 delete [] in_RENAME_IN_NUM_REG_RC_PHY ; 46 delete [] in_RENAME_IN_WRITE_RD ; 47 delete [] in_RENAME_IN_NUM_REG_RD_LOG ; 48 delete [] in_RENAME_IN_NUM_REG_RD_PHY_OLD ; 49 delete [] in_RENAME_IN_NUM_REG_RD_PHY_NEW ; 50 delete [] in_RENAME_IN_WRITE_RE ; 51 delete [] in_RENAME_IN_NUM_REG_RE_LOG ; 52 delete [] in_RENAME_IN_NUM_REG_RE_PHY_OLD ; 53 delete [] in_RENAME_IN_NUM_REG_RE_PHY_NEW ; 32 // DELETE1_SIGNAL( in_RENAME_IN_VAL ,_param->_nb_inst_insert,1); 33 // DELETE1_SIGNAL(out_RENAME_IN_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_RENAME_IN_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 35 DELETE1_SIGNAL( in_RENAME_IN_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL( in_RENAME_IN_READ_RA ,_param->_nb_inst_insert,1 ); 37 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 38 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 39 DELETE1_SIGNAL( in_RENAME_IN_READ_RB ,_param->_nb_inst_insert,1 ); 40 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 41 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 42 DELETE1_SIGNAL( in_RENAME_IN_READ_RC ,_param->_nb_inst_insert,1 ); 43 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 44 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 45 DELETE1_SIGNAL( in_RENAME_IN_WRITE_RD ,_param->_nb_inst_insert,1 ); 46 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 47 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_OLD ,_param->_nb_inst_insert,_param->_size_general_register ); 48 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RD_PHY_NEW ,_param->_nb_inst_insert,_param->_size_general_register ); 49 DELETE1_SIGNAL( in_RENAME_IN_WRITE_RE ,_param->_nb_inst_insert,1 ); 50 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 51 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_OLD ,_param->_nb_inst_insert,_param->_size_special_register ); 52 DELETE1_SIGNAL( in_RENAME_IN_NUM_REG_RE_PHY_NEW ,_param->_nb_inst_insert,_param->_size_special_register ); 54 53 55 // delete [] out_RENAME_OUT_VAL ; 56 // delete [] in_RENAME_OUT_ACK ; 57 if (_param->_have_port_front_end_id) 58 delete [] out_RENAME_OUT_FRONT_END_ID ; 59 if (_param->_have_port_context_id) 60 delete [] out_RENAME_OUT_CONTEXT_ID ; 61 delete [] out_RENAME_OUT_READ_RA ; 62 delete [] out_RENAME_OUT_NUM_REG_RA_LOG ; 63 delete [] out_RENAME_OUT_NUM_REG_RA_PHY ; 64 delete [] out_RENAME_OUT_READ_RB ; 65 delete [] out_RENAME_OUT_NUM_REG_RB_LOG ; 66 delete [] out_RENAME_OUT_NUM_REG_RB_PHY ; 67 delete [] out_RENAME_OUT_READ_RC ; 68 delete [] out_RENAME_OUT_NUM_REG_RC_LOG ; 69 delete [] out_RENAME_OUT_NUM_REG_RC_PHY ; 70 delete [] out_RENAME_OUT_WRITE_RD ; 71 delete [] out_RENAME_OUT_NUM_REG_RD_LOG ; 72 delete [] out_RENAME_OUT_NUM_REG_RD_PHY_OLD; 73 delete [] out_RENAME_OUT_NUM_REG_RD_PHY_NEW; 74 delete [] out_RENAME_OUT_WRITE_RE ; 75 delete [] out_RENAME_OUT_NUM_REG_RE_LOG ; 76 delete [] out_RENAME_OUT_NUM_REG_RE_PHY_OLD; 77 delete [] out_RENAME_OUT_NUM_REG_RE_PHY_NEW; 54 // DELETE1_SIGNAL(out_RENAME_OUT_VAL ,_param->_nb_inst_insert,1); 55 // DELETE1_SIGNAL( in_RENAME_OUT_ACK ,_param->_nb_inst_insert,1); 56 DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 57 DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 58 DELETE1_SIGNAL(out_RENAME_OUT_READ_RA ,_param->_nb_inst_insert,1 ); 59 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 60 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 61 DELETE1_SIGNAL(out_RENAME_OUT_READ_RB ,_param->_nb_inst_insert,1 ); 62 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 63 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 64 DELETE1_SIGNAL(out_RENAME_OUT_READ_RC ,_param->_nb_inst_insert,1 ); 65 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 66 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 67 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD ,_param->_nb_inst_insert,1 ); 68 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 69 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register ); 70 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register ); 71 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE ,_param->_nb_inst_insert,1 ); 72 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 73 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register ); 74 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register ); 78 75 } 79 76 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_allocation.cpp
r109 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ interface : "pop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("pop", IN, NORTH, "New destination register", _param->_nb_pop);60 ALLOC1_INTERFACE_BEGIN("pop", IN, NORTH, _("New destination register"), _param->_nb_pop); 61 61 62 62 ALLOC1_VALACK_IN ( in_POP_VAL ,VAL); … … 66 66 ALLOC1_SIGNAL_IN ( in_POP_SPR_VAL ,"spr_val" ,Tcontrol_t ,1 ); 67 67 ALLOC1_SIGNAL_OUT(out_POP_SPR_NUM_REG,"spr_num_reg",Tspecial_address_t,_param->_size_special_register); 68 69 ALLOC1_INTERFACE_END(_param->_nb_pop); 68 70 } 69 71 70 72 // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 73 { 72 ALLOC1_INTERFACE ("push_gpr", IN, NORTH, "General register free", _param->_nb_push);74 ALLOC1_INTERFACE_BEGIN("push_gpr", IN, NORTH, _("General register free"), _param->_nb_push); 73 75 74 76 ALLOC1_VALACK_IN ( in_PUSH_GPR_VAL ,VAL); 75 77 ALLOC1_VALACK_OUT(out_PUSH_GPR_ACK ,ACK); 76 78 ALLOC1_SIGNAL_IN ( in_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register); 79 80 ALLOC1_INTERFACE_END(_param->_nb_push); 77 81 } 78 82 79 83 // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 84 { 81 ALLOC1_INTERFACE ("push_spr", IN, NORTH, "General register free", _param->_nb_push);85 ALLOC1_INTERFACE_BEGIN("push_spr", IN, NORTH, _("General register free"), _param->_nb_push); 82 86 83 87 ALLOC1_VALACK_IN ( in_PUSH_SPR_VAL ,VAL); 84 88 ALLOC1_VALACK_OUT(out_PUSH_SPR_ACK ,ACK); 85 89 ALLOC1_SIGNAL_IN ( in_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register); 90 91 ALLOC1_INTERFACE_END(_param->_nb_push); 86 92 } 87 93 88 94 if (usage_is_set(_usage,USE_SYSTEMC)) 89 95 { 90 _gpr_list = new std::list<uint32_t> [_param->_nb_bank];91 _spr_list = new std::list<uint32_t> [_param->_nb_bank];96 ALLOC1(_gpr_list,std::list<uint32_t>,_param->_nb_bank); 97 ALLOC1(_spr_list,std::list<uint32_t>,_param->_nb_bank); 92 98 93 internal_POP_ACK = new Tcontrol_t [_param->_nb_pop];94 internal_POP_GPR_BANK = new uint32_t [_param->_nb_pop];95 internal_POP_SPR_BANK = new uint32_t [_param->_nb_pop];99 ALLOC1(internal_POP_ACK ,Tcontrol_t,_param->_nb_pop); 100 ALLOC1(internal_POP_GPR_BANK ,uint32_t ,_param->_nb_pop); 101 ALLOC1(internal_POP_SPR_BANK ,uint32_t ,_param->_nb_pop); 96 102 97 internal_PUSH_GPR_ACK = new Tcontrol_t [_param->_nb_push];98 internal_PUSH_SPR_ACK = new Tcontrol_t [_param->_nb_push];99 internal_PUSH_GPR_BANK = new uint32_t [_param->_nb_push];100 internal_PUSH_SPR_BANK = new uint32_t [_param->_nb_push];103 ALLOC1(internal_PUSH_GPR_ACK ,Tcontrol_t,_param->_nb_push); 104 ALLOC1(internal_PUSH_SPR_ACK ,Tcontrol_t,_param->_nb_push); 105 ALLOC1(internal_PUSH_GPR_BANK,uint32_t ,_param->_nb_push); 106 ALLOC1(internal_PUSH_SPR_BANK,uint32_t ,_param->_nb_push); 101 107 } 108 102 109 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 103 110 _priority_gpr = new generic::priority::Priority (_name+"_priority_gpr", -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_deallocation.cpp
r109 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/include/Free_List_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_POP_VAL;32 delete [] out_POP_ACK;33 delete [] in_POP_GPR_VAL;34 delete [] out_POP_GPR_NUM_REG;35 delete [] in_POP_SPR_VAL;36 delete [] out_POP_SPR_NUM_REG;32 DELETE1_SIGNAL( in_POP_VAL ,_param->_nb_pop,1); 33 DELETE1_SIGNAL(out_POP_ACK ,_param->_nb_pop,1); 34 DELETE1_SIGNAL( in_POP_GPR_VAL ,_param->_nb_pop,1 ); 35 DELETE1_SIGNAL(out_POP_GPR_NUM_REG ,_param->_nb_pop,_param->_size_general_register); 36 DELETE1_SIGNAL( in_POP_SPR_VAL ,_param->_nb_pop,1 ); 37 DELETE1_SIGNAL(out_POP_SPR_NUM_REG ,_param->_nb_pop,_param->_size_special_register); 37 38 38 delete [] in_PUSH_GPR_VAL;39 delete [] out_PUSH_GPR_ACK;40 delete [] in_PUSH_GPR_NUM_REG;39 DELETE1_SIGNAL( in_PUSH_GPR_VAL ,_param->_nb_push,1); 40 DELETE1_SIGNAL(out_PUSH_GPR_ACK ,_param->_nb_push,1); 41 DELETE1_SIGNAL( in_PUSH_GPR_NUM_REG,_param->_nb_push,_param->_size_general_register); 41 42 42 delete [] in_PUSH_SPR_VAL;43 delete [] out_PUSH_SPR_ACK;44 delete [] in_PUSH_SPR_NUM_REG;43 DELETE1_SIGNAL( in_PUSH_SPR_VAL ,_param->_nb_push,1); 44 DELETE1_SIGNAL(out_PUSH_SPR_ACK ,_param->_nb_push,1); 45 DELETE1_SIGNAL( in_PUSH_SPR_NUM_REG,_param->_nb_push,_param->_size_special_register); 45 46 46 delete [] _gpr_list;47 delete [] _spr_list;48 49 delete [] internal_POP_ACK;50 delete [] internal_POP_GPR_BANK;51 delete [] internal_POP_SPR_BANK;52 53 delete [] internal_PUSH_GPR_ACK;54 delete [] internal_PUSH_SPR_ACK;55 delete [] internal_PUSH_GPR_BANK;56 delete [] internal_PUSH_SPR_BANK;47 DELETE1(_gpr_list ,_param->_nb_bank); 48 DELETE1(_spr_list ,_param->_nb_bank); 49 50 DELETE1(internal_POP_ACK ,_param->_nb_pop); 51 DELETE1(internal_POP_GPR_BANK ,_param->_nb_pop); 52 DELETE1(internal_POP_SPR_BANK ,_param->_nb_pop); 53 54 DELETE1(internal_PUSH_GPR_ACK ,_param->_nb_push); 55 DELETE1(internal_PUSH_SPR_ACK ,_param->_nb_push); 56 DELETE1(internal_PUSH_GPR_BANK,_param->_nb_push); 57 DELETE1(internal_PUSH_SPR_BANK,_param->_nb_push); 57 58 } 58 59 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Free_List_unit/src/Free_List_unit_transition.cpp
r110 r112 51 51 52 52 #ifdef STATISTICS 53 (*_stat_nb_inst_pop) ++; 53 if (usage_is_set(_usage,USE_STATISTICS)) 54 (*_stat_nb_inst_pop) ++; 54 55 #endif 55 56 … … 57 58 { 58 59 #ifdef STATISTICS 59 (*_stat_nb_inst_pop_gpr) ++; 60 if (usage_is_set(_usage,USE_STATISTICS)) 61 (*_stat_nb_inst_pop_gpr) ++; 60 62 #endif 61 63 _gpr_list [internal_POP_GPR_BANK[i]].pop_front(); … … 65 67 { 66 68 #ifdef STATISTICS 67 (*_stat_nb_inst_pop_spr) ++; 69 if (usage_is_set(_usage,USE_STATISTICS)) 70 (*_stat_nb_inst_pop_spr) ++; 68 71 #endif 69 72 _spr_list [internal_POP_SPR_BANK[i]].pop_front(); … … 82 85 83 86 #ifdef STATISTICS 84 (*_stat_nb_inst_push_gpr) ++; 87 if (usage_is_set(_usage,USE_STATISTICS)) 88 (*_stat_nb_inst_push_gpr) ++; 85 89 #endif 86 90 … … 98 102 99 103 #ifdef STATISTICS 100 (*_stat_nb_inst_push_spr) ++; 104 if (usage_is_set(_usage,USE_STATISTICS)) 105 (*_stat_nb_inst_push_spr) ++; 101 106 #endif 102 107 … … 105 110 106 111 #ifdef STATISTICS 107 for (uint32_t i=0; i<_param->_nb_bank; ++i) 108 { 112 if (usage_is_set(_usage,USE_STATISTICS)) 113 for (uint32_t i=0; i<_param->_nb_bank; ++i) 114 { 115 109 116 (*(_stat_bank_gpr_nb_elt [i])) += _gpr_list[i].size(); 110 117 (*(_stat_bank_spr_nb_elt [i])) += _spr_list[i].size(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/SelfTest/src/test.cpp
r106 r112 89 89 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,"out_RETIRE_RESTORE_RD_PHY_OLD",Tcontrol_t ,_param->_nb_inst_retire); 90 90 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,"out_RETIRE_RESTORE_RE_PHY_OLD",Tcontrol_t ,_param->_nb_inst_retire); 91 ALLOC1_SC_SIGNAL(out_RETIRE_RESTORE ,"out_RETIRE_RESTORE ",Tcontrol_t ,_param->_nb_inst_retire); 91 92 92 93 ALLOC2_SC_SIGNAL( in_RETIRE_EVENT_VAL ," in_RETIRE_EVENT_VAL ",Tcontrol_t ,_param->_nb_front_end,_param->_nb_context[it1]); … … 147 148 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire); 148 149 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire); 150 INSTANCE1_SC_SIGNAL(_Register_Address_Translation_unit,out_RETIRE_RESTORE ,_param->_nb_inst_retire); 149 151 150 152 INSTANCE2_SC_SIGNAL(_Register_Address_Translation_unit, in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); … … 540 542 delete [] out_RETIRE_RESTORE_RD_PHY_OLD; 541 543 delete [] out_RETIRE_RESTORE_RE_PHY_OLD; 544 delete [] out_RETIRE_RESTORE ; 542 545 543 546 DELETE2_SC_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/include/Register_Address_Translation_unit.h
r104 r112 104 104 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire] 105 105 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire] 106 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_RESTORE ;//[nb_inst_retire] 106 107 107 108 // ~~~~~[ Interface "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 126 127 private : bool *** internal_rat_gpr_update_table; //[nb_front_end][nb_context][nb_general_register_logic] 127 128 private : bool *** internal_rat_spr_update_table; //[nb_front_end][nb_context][nb_special_register_logic] 129 public : Tcontrol_t * internal_RETIRE_RESTORE_RD_PHY_OLD;//[nb_inst_retire] 130 public : Tcontrol_t * internal_RETIRE_RESTORE_RE_PHY_OLD;//[nb_inst_retire] 131 128 132 #endif 129 133 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_allocation.cpp
r104 r112 59 59 // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("rename",IN,EAST,"Input to rename source logical register", _param->_nb_inst_insert);61 ALLOC1_INTERFACE_BEGIN("rename",IN,EAST,_("Input to rename source logical register"), _param->_nb_inst_insert); 62 62 63 63 ALLOC1_VALACK_IN ( in_RENAME_VAL , VAL); … … 75 75 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RD_PHY_OLD,"num_reg_rd_phy_old",Tgeneral_address_t,_param->_size_general_register); 76 76 ALLOC1_SIGNAL_OUT(out_RENAME_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 77 78 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 77 79 } 78 80 79 81 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 80 82 { 81 ALLOC1_INTERFACE ("insert",IN,NORTH,"Input to rename destination logical register", _param->_nb_inst_insert);83 ALLOC1_INTERFACE_BEGIN("insert",IN,NORTH,_("Input to rename destination logical register"), _param->_nb_inst_insert); 82 84 83 85 ALLOC1_VALACK_IN ( in_INSERT_VAL ,VAL); … … 91 93 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RD_PHY,"num_reg_rd_phy",Tgeneral_address_t,_param->_size_general_register); 92 94 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY,"num_reg_re_phy",Tspecial_address_t,_param->_size_special_register); 95 96 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 93 97 } 94 98 95 99 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 100 { 97 ALLOC1_INTERFACE ("retire",IN,NORTH,"Input to update on event", _param->_nb_inst_retire);101 ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Input to update on event"), _param->_nb_inst_retire); 98 102 99 103 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); … … 109 113 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RD_PHY_OLD,"restore_rd_phy_old",Tcontrol_t ,1); 110 114 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE_RE_PHY_OLD,"restore_re_phy_old",Tcontrol_t ,1); 115 ALLOC1_SIGNAL_OUT(out_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1); 116 117 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 111 118 } 112 119 113 120 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 114 121 { 115 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);122 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 116 123 117 124 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 118 125 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 119 126 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 127 128 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 120 129 } 121 130 … … 127 136 ALLOC2(internal_RETIRE_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context[it1]); 128 137 129 rat_gpr = new Tgeneral_address_t ** [_param->_nb_front_end];130 rat_spr = new Tspecial_address_t ** [_param->_nb_front_end];131 rat_gpr_update_table = new bool ** [_param->_nb_front_end];132 rat_spr_update_table = new bool ** [_param->_nb_front_end];133 internal_rat_gpr_update_table = new bool ** [_param->_nb_front_end];134 internal_rat_spr_update_table = new bool ** [_param->_nb_front_end];138 ALLOC3(rat_gpr ,Tgeneral_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 139 ALLOC3(rat_spr ,Tspecial_address_t,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 140 ALLOC3(rat_gpr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 141 ALLOC3(rat_spr_update_table ,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 142 ALLOC3(internal_rat_gpr_update_table,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 143 ALLOC3(internal_rat_spr_update_table,bool ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 135 144 136 for (uint32_t i=0; i<_param->_nb_front_end; i++) 137 { 138 rat_gpr [i] = new Tgeneral_address_t * [_param->_nb_context[i]]; 139 rat_spr [i] = new Tspecial_address_t * [_param->_nb_context[i]]; 140 rat_gpr_update_table [i] = new bool * [_param->_nb_context[i]]; 141 rat_spr_update_table [i] = new bool * [_param->_nb_context[i]]; 142 internal_rat_gpr_update_table [i] = new bool * [_param->_nb_context[i]]; 143 internal_rat_spr_update_table [i] = new bool * [_param->_nb_context[i]]; 144 145 for (uint32_t j=0; j<_param->_nb_context[i]; j++) 146 { 147 rat_gpr [i][j] = new Tgeneral_address_t [_param->_nb_general_register_logic]; 148 rat_spr [i][j] = new Tspecial_address_t [_param->_nb_special_register_logic]; 149 rat_gpr_update_table [i][j] = new bool [_param->_nb_general_register_logic]; 150 rat_spr_update_table [i][j] = new bool [_param->_nb_special_register_logic]; 151 internal_rat_gpr_update_table [i][j] = new bool [_param->_nb_general_register_logic]; 152 internal_rat_spr_update_table [i][j] = new bool [_param->_nb_special_register_logic]; 153 } 154 } 145 ALLOC1(internal_RETIRE_RESTORE_RD_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 146 ALLOC1(internal_RETIRE_RESTORE_RE_PHY_OLD,Tcontrol_t,_param->_nb_inst_retire); 155 147 } 156 148 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_deallocation.cpp
r104 r112 30 30 delete in_NRESET; 31 31 32 delete [] in_RENAME_VAL ; 33 delete [] out_RENAME_ACK ; 34 if (_param->_have_port_front_end_id) 35 delete [] in_RENAME_FRONT_END_ID ; 36 if (_param->_have_port_context_id) 37 delete [] in_RENAME_CONTEXT_ID ; 38 delete [] in_RENAME_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_NUM_REG_RB_LOG ; 40 delete [] in_RENAME_NUM_REG_RC_LOG ; 41 delete [] in_RENAME_NUM_REG_RD_LOG ; 42 delete [] in_RENAME_NUM_REG_RE_LOG ; 43 delete [] out_RENAME_NUM_REG_RA_PHY ; 44 delete [] out_RENAME_NUM_REG_RB_PHY ; 45 delete [] out_RENAME_NUM_REG_RC_PHY ; 46 delete [] out_RENAME_NUM_REG_RD_PHY_OLD; 47 delete [] out_RENAME_NUM_REG_RE_PHY_OLD; 32 DELETE1_SIGNAL( in_RENAME_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL(out_RENAME_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 35 DELETE1_SIGNAL( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 36 DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 37 DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 38 DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 39 DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 40 DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL(out_RENAME_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 42 DELETE1_SIGNAL(out_RENAME_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 43 DELETE1_SIGNAL(out_RENAME_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 44 DELETE1_SIGNAL(out_RENAME_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register); 45 DELETE1_SIGNAL(out_RENAME_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register); 48 46 49 delete [] in_INSERT_VAL ; 50 delete [] out_INSERT_ACK ; 51 // if (_param->_have_port_front_end_id) 52 // delete [] in_INSERT_FRONT_END_ID ; 53 // if (_param->_have_port_context_id) 54 // delete [] in_INSERT_CONTEXT_ID ; 55 delete [] in_INSERT_WRITE_RD ; 56 delete [] in_INSERT_WRITE_RE ; 57 delete [] in_INSERT_NUM_REG_RD_LOG ; 58 delete [] in_INSERT_NUM_REG_RE_LOG ; 59 delete [] in_INSERT_NUM_REG_RD_PHY ; 60 delete [] in_INSERT_NUM_REG_RE_PHY ; 47 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 48 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 49 // DELETE1_SIGNAL( in_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id); 50 // DELETE1_SIGNAL( in_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 51 DELETE1_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1); 52 DELETE1_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1); 53 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 54 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 55 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY,_param->_nb_inst_insert,_param->_size_general_register); 56 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY,_param->_nb_inst_insert,_param->_size_special_register); 61 57 62 delete [] in_RETIRE_VAL ; 63 delete [] out_RETIRE_ACK ; 64 if (_param->_have_port_front_end_id) 65 delete [] in_RETIRE_FRONT_END_ID ; 66 if (_param->_have_port_context_id) 67 delete [] in_RETIRE_CONTEXT_ID ; 68 delete [] in_RETIRE_WRITE_RD ; 69 delete [] in_RETIRE_WRITE_RE ; 70 delete [] in_RETIRE_NUM_REG_RD_LOG ; 71 delete [] in_RETIRE_NUM_REG_RE_LOG ; 72 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 73 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 74 delete [] out_RETIRE_RESTORE_RD_PHY_OLD; 75 delete [] out_RETIRE_RESTORE_RE_PHY_OLD; 58 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 59 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 60 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id); 61 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 62 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1); 63 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1); 64 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 65 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 66 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register); 67 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register); 68 DELETE1_SIGNAL(out_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1); 69 DELETE1_SIGNAL(out_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1); 70 DELETE1_SIGNAL(out_RETIRE_RESTORE ,_param->_nb_inst_retire,1); 71 72 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 73 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 74 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 76 75 77 76 DELETE1(internal_RENAME_ACK ,_param->_nb_inst_insert); … … 80 79 DELETE2(internal_RETIRE_EVENT_ACK ,_param->_nb_front_end,_param->_nb_context[it1]); 81 80 82 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); 83 DELETE2_SIGNAL(out_RETIRE_EVENT_ACK ,_param->_nb_front_end, _param->_nb_context[it1],1); 84 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 81 DELETE3(rat_gpr ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 82 DELETE3(rat_spr ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 83 DELETE3(rat_gpr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 84 DELETE3(rat_spr_update_table ,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 85 DELETE3(internal_rat_gpr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_general_register_logic); 86 DELETE3(internal_rat_spr_update_table,_param->_nb_front_end,_param->_nb_context[it1],_param->_nb_special_register_logic); 85 87 86 delete [] rat_gpr ; 87 delete [] rat_spr ; 88 delete [] rat_gpr_update_table; 89 delete [] rat_spr_update_table; 90 delete [] internal_rat_gpr_update_table; 91 delete [] internal_rat_spr_update_table; 88 DELETE1(internal_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire); 89 DELETE1(internal_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire); 92 90 } 93 91 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_genMealy_retire.cpp
r106 r112 31 31 { 32 32 // An event occure 33 bool no_event = not (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) and (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT)); 33 // bool event = (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) != EVENT_STATE_NO_EVENT); 34 bool reset_update_table = (PORT_READ(in_RETIRE_EVENT_VAL [i][j]) and // always ack 35 (PORT_READ(in_RETIRE_EVENT_STATE [i][j]) == EVENT_STATE_EVENT)); 36 37 // not event -> update_table == 1 -> always update 38 // event -> update_table and not reset 34 39 for (uint32_t k=0; k<_param->_nb_general_register_logic; ++k) 35 internal_rat_gpr_update_table [i][j][k] = rat_gpr_update_table [i][j][k] and no_event; 40 internal_rat_gpr_update_table [i][j][k] = // not event or 41 (rat_gpr_update_table [i][j][k] and not reset_update_table); 36 42 for (uint32_t k=0; k<_param->_nb_special_register_logic; ++k) 37 internal_rat_spr_update_table [i][j][k] = rat_spr_update_table [i][j][k] and no_event; 43 internal_rat_spr_update_table [i][j][k] = // not event or 44 (rat_spr_update_table [i][j][k] and not reset_update_table); 38 45 } 39 46 … … 50 57 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RETIRE_FRONT_END_ID [i]):0; 51 58 Tcontext_t context_id = (_param->_have_port_context_id )?PORT_READ(in_RETIRE_CONTEXT_ID [i]):0; 59 Tcontrol_t restore = (PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT); 52 60 53 61 // Test if event -> need restore ? 54 if ( PORT_READ(in_RETIRE_EVENT_STATE [front_end_id][context_id]) != EVENT_STATE_NO_EVENT)62 if (restore) 55 63 { 56 64 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * Have event"); … … 82 90 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * restore_re_phy_old : %d",retire_restore_re_phy_old); 83 91 } 92 93 internal_RETIRE_RESTORE_RD_PHY_OLD[i] = retire_restore_rd_phy_old; 94 internal_RETIRE_RESTORE_RE_PHY_OLD[i] = retire_restore_re_phy_old; 84 95 85 PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], retire_restore_rd_phy_old); 86 PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], retire_restore_re_phy_old); 96 PORT_WRITE(out_RETIRE_RESTORE_RD_PHY_OLD[i], internal_RETIRE_RESTORE_RD_PHY_OLD[i]); 97 PORT_WRITE(out_RETIRE_RESTORE_RE_PHY_OLD[i], internal_RETIRE_RESTORE_RE_PHY_OLD[i]); 98 PORT_WRITE(out_RETIRE_RESTORE [i], restore); 87 99 } 88 100 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_Address_Translation_unit/src/Register_Address_Translation_unit_transition.cpp
r106 r112 125 125 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * event_state : %d",event_state); 126 126 127 if (event_state != EVENT_STATE_NO_EVENT)128 {127 // if (event_state != EVENT_STATE_NO_EVENT) 128 // { 129 129 // Test if write and have not a previous update 130 130 if (PORT_READ(in_RETIRE_WRITE_RD [i]) == 1) 131 131 { 132 132 Tgeneral_address_t rd_log = PORT_READ(in_RETIRE_NUM_REG_RD_LOG [i]); 133 133 134 134 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * retire RD"); 135 135 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * rd_log : %d",rd_log); 136 136 137 // if (RETIRE_RESTORE_RD_PHY_OLD [i]) 138 if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0) 137 // #ifdef DEBUG_TEST 138 // if (not (internal_RETIRE_RESTORE_RD_PHY_OLD [i] and ( (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0)) and (event_state != EVENT_STATE_NO_EVENT))) 139 // throw ERRORMORPHEO(FUNCTION,toString(_("restore_rd_phy_old [%d] = %d, but rat_gpr_update_table[%d][%d][%d] = %d\n"), 140 // i,internal_RETIRE_RESTORE_RD_PHY_OLD [i], 141 // front_end_id,context_id,rd_log,rat_gpr_update_table [front_end_id][context_id][rd_log])); 142 // #endif 143 144 if (internal_RETIRE_RESTORE_RD_PHY_OLD [i]) 145 // if (rat_gpr_update_table [front_end_id][context_id][rd_log] == 0) 139 146 { 140 147 rat_gpr [front_end_id][context_id][rd_log] = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]); … … 150 157 log_printf(TRACE,Register_Address_Translation_unit,FUNCTION," * re_log : %d",re_log); 151 158 152 // if (RETIRE_RESTORE_RE_PHY_OLD [i]) 153 if (rat_spr_update_table [front_end_id][context_id][re_log] == 0) 159 // #ifdef DEBUG_TEST 160 // if (not (internal_RETIRE_RESTORE_RE_PHY_OLD [i] and ((rat_spr_update_table [front_end_id][context_id][re_log] == 0) and (event_state != EVENT_STATE_NO_EVENT)))) 161 // throw ERRORMORPHEO(FUNCTION,toString(_("restore_re_phy_old [%d] = %d, but rat_spr_update_table[%d][%d][%d] = %d\n"), 162 // i,internal_RETIRE_RESTORE_RE_PHY_OLD [i], 163 // front_end_id,context_id,re_log,rat_spr_update_table [front_end_id][context_id][re_log])); 164 // #endif 165 166 if (internal_RETIRE_RESTORE_RE_PHY_OLD [i]) 167 // if (rat_spr_update_table [front_end_id][context_id][re_log] == 0) 154 168 { 155 169 rat_spr [front_end_id][context_id][re_log] = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]); … … 157 171 } 158 172 } 159 }173 // } 160 174 } 161 175 } -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Register_translation_unit_Glue/src/Register_translation_unit_Glue_allocation.cpp
r110 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 59 59 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("insert",OUT, EAST, "insert's interface", _param->_nb_inst_insert);61 ALLOC1_INTERFACE_BEGIN("insert",OUT, EAST, _("insert's interface"), _param->_nb_inst_insert); 62 62 63 63 ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_VAL ,"rename_val" ,Tcontrol_t,1); … … 122 122 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD ,"NUM_REG_RE_PHY_OLD" ,Tspecial_address_t,_param->_size_special_register ); 123 123 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW ,"NUM_REG_RE_PHY_NEW" ,Tspecial_address_t,_param->_size_special_register ); 124 125 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 124 126 } 125 127 126 128 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 127 129 { 128 ALLOC1_INTERFACE ("retire", IN, WEST, "retire's interface", _param->_nb_inst_retire);130 ALLOC1_INTERFACE_BEGIN("retire", IN, WEST, _("retire's interface"), _param->_nb_inst_retire); 129 131 130 132 ALLOC1_SIGNAL_IN ( in_RETIRE_VAL ,"val" ,Tcontrol_t,1); … … 134 136 ALLOC1_SIGNAL_OUT(out_RETIRE_STAT_LIST_VAL,"stat_list_val",Tcontrol_t,1); 135 137 ALLOC1_SIGNAL_IN ( in_RETIRE_STAT_LIST_ACK,"stat_list_ack",Tcontrol_t,1); 138 139 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 136 140 } 137 141 138 142 #ifdef STATISTICS 139 ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert); 143 if (usage_is_set(_usage,USE_SYSTEMC)) 144 ALLOC1(internal_INSERT_RENAME_ACK, Tcontrol_t,_param->_nb_inst_insert); 140 145 #endif 141 146 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-min.cfg
r88 r112 8 8 1 1 *4 #nb_reg_free 9 9 1 1 *2 #nb_bank 10 1 1 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1.cfg
r88 r112 8 8 1 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 1 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_1a.cfg
r88 r112 8 8 1 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 1 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4a.cfg
r88 r112 11 11 4 4 *4 #nb_reg_free 12 12 8 8 *2 #nb_bank 13 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4b.cfg
r88 r112 8 8 4 4 *4 #nb_reg_free 9 9 8 8 *2 #nb_bank 10 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4c.cfg
r88 r112 9 9 4 4 *4 #nb_reg_free 10 10 8 8 *2 #nb_bank 11 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/config-thread_4d.cfg
r88 r112 9 9 4 4 *4 #nb_reg_free 10 10 8 8 *2 #nb_bank 11 2 2 *2 #size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/src/main.cpp
r88 r112 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/SelfTest/include/test.h" 9 9 10 #define NB_PARAMS 810 #define NB_PARAMS 7 11 11 12 12 void usage (int argc, char * argv[]) … … 22 22 err (_(" * nb_reg_free (uint32_t)\n")); 23 23 err (_(" * nb_bank (uint32_t)\n")); 24 err (_(" * size_read_counter (uint32_t)\n"));24 // err (_(" * size_read_counter (uint32_t)\n")); 25 25 26 26 exit (1); … … 51 51 uint32_t _nb_reg_free = atoi(argv[x++]); 52 52 uint32_t _nb_bank = atoi(argv[x++]); 53 uint32_t _size_read_counter = atoi(argv[x++]);53 // uint32_t _size_read_counter = atoi(argv[x++]); 54 54 55 55 int _return = EXIT_SUCCESS; … … 65 65 _nb_reg_free , 66 66 _nb_bank , 67 _size_read_counter ,67 // _size_read_counter , 68 68 true //is_toplevel 69 69 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_mono_thread.cfg
r81 r112 8 8 1 4 *2 #_nb_reg_free 9 9 4 4 *2 #_nb_bank 10 2 2 +1 #_size_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/config_multi_thread.cfg
r81 r112 9 9 4 4 *2 #_nb_reg_free 10 10 4 8 *2 #_nb_bank 11 2 4 *2 #_size_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/main.cpp
r88 r112 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/include/test.h" 9 9 10 #define NB_PARAMS 810 #define NB_PARAMS 7 11 11 12 12 void usage (int argc, char * argv[]) … … 22 22 err (_(" * nb_reg_free (uint32_t)\n")); 23 23 err (_(" * nb_bank (uint32_t)\n")); 24 err (_(" * size_counter (uint32_t)\n"));25 24 26 25 exit (1); … … 55 54 uint32_t _nb_reg_free = atoi(argv[x++]); 56 55 uint32_t _nb_bank = atoi(argv[x++]); 57 uint32_t _size_counter = atoi(argv[x++]);58 56 59 57 try … … 68 66 _nb_reg_free , 69 67 _nb_bank , 70 _size_counter ,71 68 true //is_toplevel 72 69 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/SelfTest/src/test.cpp
r88 r112 75 75 ALLOC1_SC_SIGNAL( in_RETIRE_VAL ," in_RETIRE_VAL ",Tcontrol_t ,_param->_nb_inst_retire); 76 76 ALLOC1_SC_SIGNAL(out_RETIRE_ACK ,"out_RETIRE_ACK ",Tcontrol_t ,_param->_nb_inst_retire); 77 ALLOC1_SC_SIGNAL( in_RETIRE_RESTORE ," in_RETIRE_RESTORE ",Tcontrol_t ,_param->_nb_inst_retire); 77 78 ALLOC1_SC_SIGNAL( in_RETIRE_READ_RA ," in_RETIRE_READ_RA ",Tcontrol_t ,_param->_nb_inst_retire); 78 79 ALLOC1_SC_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ," in_RETIRE_NUM_REG_RA_PHY ",Tgeneral_address_t,_param->_nb_inst_retire); … … 121 122 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_VAL ,_param->_nb_inst_retire); 122 123 INSTANCE1_SC_SIGNAL(_Stat_List_unit,out_RETIRE_ACK ,_param->_nb_inst_retire); 124 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_RESTORE ,_param->_nb_inst_retire); 123 125 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_READ_RA ,_param->_nb_inst_retire); 124 126 INSTANCE1_SC_SIGNAL(_Stat_List_unit, in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire); … … 234 236 TEST(bool, true,((gpr_status[reg]._is_free == 0) and 235 237 (gpr_status[reg]._is_link == 0) and 236 (gpr_status[reg]._is_valid == 1) and 237 (gpr_status[reg]._counter == 0))); 238 (gpr_status[reg]._is_valid == 1)// and 239 // (gpr_status[reg]._counter == 0) 240 )); 238 241 239 242 gpr_status[reg]._is_free = 1; … … 254 257 TEST(bool, true,((spr_status[reg]._is_free == 0) and 255 258 (spr_status[reg]._is_link == 0) and 256 (spr_status[reg]._is_valid == 1) and 257 (spr_status[reg]._counter == 0))); 259 (spr_status[reg]._is_valid == 1)// and 260 // (spr_status[reg]._counter == 0) 261 )); 258 262 259 263 spr_status[reg]._is_free = 1; … … 301 305 Tspecial_address_t re = (it_spr != free_list_spr.end())?*it_spr:0; 302 306 303 Tcontrol_t read_ra = (gpr_status_insert[ra]._is_link) and (gpr_status_insert[ra]._counter < _param->_max_reader);304 Tcontrol_t read_rb = (gpr_status_insert[rb]._is_link) and (gpr_status_insert[rb]._counter < _param->_max_reader);305 Tcontrol_t read_rc = (spr_status_insert[rc]._is_link) and (spr_status_insert[rc]._counter < _param->_max_reader);307 Tcontrol_t read_ra = (gpr_status_insert[ra]._is_link); // and (gpr_status_insert[ra]._counter < _param->_max_reader); 308 Tcontrol_t read_rb = (gpr_status_insert[rb]._is_link); // and (gpr_status_insert[rb]._counter < _param->_max_reader); 309 Tcontrol_t read_rc = (spr_status_insert[rc]._is_link); // and (spr_status_insert[rc]._counter < _param->_max_reader); 306 310 Tcontrol_t write_rd = (it_gpr != free_list_gpr.end()); 307 311 Tcontrol_t write_re = (it_spr != free_list_spr.end()); … … 341 345 Tspecial_address_t re_new = (rand()%(_param->_nb_special_register )) ; 342 346 343 Tcontrol_t read_ra = (gpr_status_retire[ra]._is_link) and (gpr_status_retire[ra]._counter > 0);344 Tcontrol_t read_rb = (gpr_status_retire[rb]._is_link) and (gpr_status_retire[rb]._counter > 0);345 Tcontrol_t read_rc = (spr_status_retire[rc]._is_link) and (spr_status_retire[rc]._counter > 0);347 Tcontrol_t read_ra = (gpr_status_retire[ra]._is_link); // and (gpr_status_retire[ra]._counter > 0); 348 Tcontrol_t read_rb = (gpr_status_retire[rb]._is_link); // and (gpr_status_retire[rb]._counter > 0); 349 Tcontrol_t read_rc = (spr_status_retire[rc]._is_link); // and (spr_status_retire[rc]._counter > 0); 346 350 Tcontrol_t write_rd = ( (gpr_status_retire[rd_old]._is_link ) and 347 351 (gpr_status_retire[rd_old]._is_valid) and … … 355 359 in_RETIRE_VAL [i]->write((rand()%100) < percent_transaction_retire); 356 360 in_RETIRE_READ_RA [i]->write(read_ra ); 357 in_RETIRE_NUM_REG_RA_PHY [i]->write(ra); 361 in_RETIRE_RESTORE [i]->write(0); 362 in_RETIRE_NUM_REG_RA_PHY [i]->write(ra); 358 363 in_RETIRE_READ_RB [i]->write(read_rb ); 359 364 in_RETIRE_NUM_REG_RB_PHY [i]->write(rb); … … 502 507 if (in_RETIRE_VAL [i]->read() and out_RETIRE_ACK [i]->read()) 503 508 { 509 Tcontrol_t restore = in_RETIRE_RESTORE [i]->read(); 504 510 Tcontrol_t read_ra = in_RETIRE_READ_RA [i]->read(); 505 511 Tgeneral_address_t ra = in_RETIRE_NUM_REG_RA_PHY [i]->read(); … … 518 524 519 525 LABEL("RETIRE [%d] - Accepted",i); 526 LABEL(" * restore : %d",restore); 520 527 LABEL(" * read_ra : %d",read_ra ); 521 528 LABEL(" * reg_ra : %d",ra ); … … 575 582 if (write_rd) 576 583 { 577 if (restore _rd_old)584 if (restore) 578 585 { 579 gpr_status[rd_old]._is_link = 1; 580 gpr_status[rd_new]._is_link = 0; 581 gpr_status[rd_new]._is_valid = 1; 586 if (restore_rd_old) 587 { 588 gpr_status[rd_old]._is_link = 1; 589 gpr_status[rd_new]._is_link = 0; 590 gpr_status[rd_new]._is_valid = 1; 591 } 592 else 593 { 594 gpr_status[rd_old]._is_link = 0; 595 gpr_status[rd_new]._is_link = 0; 596 gpr_status[rd_new]._is_valid = 1; 597 } 582 598 } 583 599 else … … 586 602 gpr_status[rd_new]._is_valid = 1; 587 603 } 604 588 605 } 589 606 if (write_re) … … 619 636 TEST(bool, true,((gpr_status[reg]._is_free == 0) and 620 637 (gpr_status[reg]._is_link == 0) and 621 (gpr_status[reg]._is_valid == 1) and 622 (gpr_status[reg]._counter == 0))); 638 (gpr_status[reg]._is_valid == 1)// and 639 // (gpr_status[reg]._counter == 0) 640 )); 623 641 624 642 gpr_status[reg]._is_free = 1; … … 639 657 TEST(bool, true,((spr_status[reg]._is_free == 0) and 640 658 (spr_status[reg]._is_link == 0) and 641 (spr_status[reg]._is_valid == 1) and 642 (spr_status[reg]._counter == 0))); 659 (spr_status[reg]._is_valid == 1)// and 660 // (spr_status[reg]._counter == 0) 661 )); 643 662 644 663 spr_status[reg]._is_free = 1; … … 678 697 delete [] in_RETIRE_VAL ; 679 698 delete [] out_RETIRE_ACK ; 699 delete [] in_RETIRE_RESTORE ; 680 700 delete [] in_RETIRE_READ_RA ; 681 701 delete [] in_RETIRE_NUM_REG_RA_PHY ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Parameters.h
r88 r112 34 34 public : uint32_t _nb_reg_free ; 35 35 public : uint32_t _nb_bank ; 36 36 //public : uint32_t _size_counter ; 37 37 38 38 //public : uint32_t _size_general_register ; 39 39 //public : uint32_t _size_special_register ; 40 40 41 41 //public : uint32_t _max_reader ; 42 42 public : uint32_t _nb_gpr_use_init ; 43 43 public : uint32_t _nb_spr_use_init ; … … 63 63 uint32_t nb_reg_free , 64 64 uint32_t nb_bank , 65 uint32_t size_counter ,65 // uint32_t size_counter , 66 66 bool is_toplevel=false 67 67 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h
r88 r112 79 79 public : SC_IN (Tcontrol_t ) ** in_RETIRE_VAL ;//[nb_inst_retire] 80 80 public : SC_OUT(Tcontrol_t ) ** out_RETIRE_ACK ;//[nb_inst_retire] 81 public : SC_IN (Tcontrol_t ) ** in_RETIRE_RESTORE ;//[nb_inst_retire] 81 82 public : SC_IN (Tcontrol_t ) ** in_RETIRE_READ_RA ;//[nb_inst_retire] 82 83 public : SC_IN (Tgeneral_address_t) ** in_RETIRE_NUM_REG_RA_PHY ;//[nb_inst_retire] … … 110 111 private : stat_list_entry_t ** spr_stat_list; //[nb_bank][nb_general_register_by_bank] 111 112 113 private : uint32_t reg_GPR_PTR_FREE; 114 private : uint32_t reg_SPR_PTR_FREE; 115 112 116 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 private : uint32_t internal_GPR_PTR_FREE;114 private : uint32_t internal_SPR_PTR_FREE;115 116 117 private : Tcontrol_t * internal_INSERT_ACK ;//[nb_inst_insert] 117 118 private : Tcontrol_t * internal_RETIRE_ACK ;//[nb_inst_retire] … … 154 155 public : void transition (void); 155 156 public : void genMoore (void); 156 157 //public : void genMealy (void); 157 158 #endif 158 159 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Types.h
r88 r112 25 25 public : bool _is_free ; // set = is present in free list 26 26 public : bool _is_link ; // set = is present in rat 27 28 27 //public : bool _is_valid; // set = an instruction have write in this register 28 //public : uint32_t _counter ; // number of register that must read this register 29 29 30 30 public : stat_list_entry_t (void) {}; … … 35 35 _is_free = 0; 36 36 _is_link = is_link; 37 38 37 // _is_valid = 1; 38 // _counter = 0; 39 39 } 40 40 41 public : void insert_read (void) 42 { 43 _counter ++; 44 } 41 // public : void insert_read (void) 42 // { 43 // _counter ++; 44 // } 45 45 46 public : void insert_write (void) 46 47 { 47 48 _is_free = 0; 48 49 _is_link = 1; 49 50 // _is_valid = 0; 50 51 } 51 52 52 public : void retire_read (void) 53 // public : void retire_read (void) 54 // { 55 // _counter --; 56 // } 57 58 public : void retire_write_old (bool restore, bool restore_old) 53 59 { 54 _counter --; 60 // restore restore_old is_link 61 // 0 x 0 - normal case : unallocate 62 // 1 0 0 - event and previous update 63 // 1 1 1 - event and first update 64 65 _is_link = restore and restore_old; 55 66 } 56 67 57 public : void retire_write_ old (bool restore_old)68 public : void retire_write_new (bool restore, bool restore_old) 58 69 { 59 if (not restore_old) 60 { 61 _is_link = 0; 62 } 63 // else nothing 64 } 70 // restore restore_old is_link 71 // 0 x 1 - normal case : allocate 72 // 1 x 0 - event, need restore oldest register 65 73 66 public : void retire_write_new (bool restore_old) 67 { 68 if (restore_old) 69 { 70 _is_link = 0; 71 } 74 if (restore) 75 _is_link = 0; 72 76 73 77 // in all case 74 78 // _is_valid = 1; 75 79 } 76 80 … … 80 84 } 81 85 82 public : bool can_insert_read (uint32_t max_reader)83 {84 85 }86 // public : bool can_insert_read (uint32_t max_reader) 87 // { 88 // return ((_counter+1) < max_reader); 89 // } 86 90 87 91 public : bool can_free (void) 88 92 { 89 93 return ((_is_free == 0) and 90 (_is_link == 0) and 91 // (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset 92 (_counter == 0)); 94 (_is_link == 0) // and 95 // (_is_valid == 1) and // if is_link <- 0, then retire_write_old or reset 96 // (_counter == 0) 97 ); 93 98 } 94 99 … … 97 102 { 98 103 output << x._is_free << " " 99 << x._is_link << " " 100 << x._is_valid << " " 101 << x._counter; 104 << x._is_link // << " " 105 // << x._is_valid << " " 106 // << x._counter 107 ; 102 108 103 109 return output; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters.cpp
r88 r112 29 29 uint32_t nb_reg_free , 30 30 uint32_t nb_bank , 31 uint32_t size_counter ,31 // uint32_t size_counter , 32 32 bool is_toplevel) 33 33 { … … 42 42 _nb_reg_free = nb_reg_free ; 43 43 _nb_bank = nb_bank ; 44 44 // _size_counter = size_counter ; 45 45 46 46 // _max_reader = 1<<size_counter; 47 47 48 48 uint32_t nb_thread = 0; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Parameters_print.cpp
r81 r112 35 35 xml.singleton_begin("nb_reg_free "); xml.attribut("value",toString(_nb_reg_free )); xml.singleton_end(); 36 36 xml.singleton_begin("nb_bank "); xml.attribut("value",toString(_nb_bank )); xml.singleton_end(); 37 xml.singleton_begin("size_counter "); xml.attribut("value",toString(_size_counter )); xml.singleton_end();37 // xml.singleton_begin("size_counter "); xml.attribut("value",toString(_size_counter )); xml.singleton_end(); 38 38 39 39 for (uint32_t i=0;i<_nb_front_end; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit.cpp
r88 r112 75 75 { 76 76 // Constant 77 for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 78 { 79 internal_INSERT_ACK[i] = 1; 80 PORT_WRITE(out_INSERT_ACK[i], internal_INSERT_ACK[i]); 81 } 77 82 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 78 83 { … … 101 106 # endif 102 107 103 log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy");108 // log_printf(INFO,Stat_List_unit,FUNCTION,"Method - genMealy"); 104 109 105 SC_METHOD (genMealy);106 dont_initialize ();107 sensitive << (*(in_CLOCK)).neg(); // need internal register108 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)109 sensitive << (*(in_INSERT_READ_RA [i]))110 << (*(in_INSERT_NUM_REG_RA_PHY [i]))111 << (*(in_INSERT_READ_RB [i]))112 << (*(in_INSERT_NUM_REG_RB_PHY [i]))113 << (*(in_INSERT_READ_RC [i]))114 << (*(in_INSERT_NUM_REG_RC_PHY [i]));110 // SC_METHOD (genMealy); 111 // dont_initialize (); 112 // sensitive << (*(in_CLOCK)).neg(); // need internal register 113 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 114 // sensitive << (*(in_INSERT_READ_RA [i])) 115 // << (*(in_INSERT_NUM_REG_RA_PHY [i])) 116 // << (*(in_INSERT_READ_RB [i])) 117 // << (*(in_INSERT_NUM_REG_RB_PHY [i])) 118 // << (*(in_INSERT_READ_RC [i])) 119 // << (*(in_INSERT_NUM_REG_RC_PHY [i])); 115 120 116 # ifdef SYSTEMCASS_SPECIFIC117 // List dependency information121 // # ifdef SYSTEMCASS_SPECIFIC 122 // // List dependency information 118 123 119 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)120 {121 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA [i]));122 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i]));123 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB [i]));124 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i]));125 (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC [i]));126 (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i]));127 }128 # endif124 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 125 // { 126 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RA [i])); 127 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RA_PHY [i])); 128 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RB [i])); 129 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RB_PHY [i])); 130 // (*(out_INSERT_ACK [i])) (*(in_INSERT_READ_RC [i])); 131 // (*(out_INSERT_ACK [i])) (*(in_INSERT_NUM_REG_RC_PHY [i])); 132 // } 133 // # endif 129 134 130 135 #endif -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_allocation.cpp
r88 r112 49 49 ,IN 50 50 ,SOUTH, 51 "Generalist interface"51 _("Generalist interface") 52 52 #endif 53 53 ); … … 58 58 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("insert",IN,SOUTH,"Insert a renaming result",_param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("insert",IN,SOUTH,_("Insert a renaming result"),_param->_nb_inst_insert); 61 61 62 62 ALLOC1_VALACK_IN ( in_INSERT_VAL ,VAL); … … 72 72 ALLOC1_SIGNAL_IN ( in_INSERT_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 73 73 ALLOC1_SIGNAL_IN ( in_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register); 74 75 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 74 76 } 75 77 76 78 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 77 79 { 78 ALLOC1_INTERFACE ("retire",IN,NORTH,"Retire a renaming result",_param->_nb_inst_retire);80 ALLOC1_INTERFACE_BEGIN("retire",IN,NORTH,_("Retire a renaming result"),_param->_nb_inst_retire); 79 81 80 82 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); 81 83 ALLOC1_VALACK_OUT(out_RETIRE_ACK ,ACK); 84 ALLOC1_SIGNAL_IN ( in_RETIRE_RESTORE ,"restore" ,Tcontrol_t ,1 ); 82 85 ALLOC1_SIGNAL_IN ( in_RETIRE_READ_RA ,"read_ra" ,Tcontrol_t ,1 ); 83 86 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RA_PHY ,"num_reg_ra_phy" ,Tgeneral_address_t,_param->_size_general_register); … … 94 97 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register); 95 98 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register); 99 100 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 96 101 } 97 102 98 103 // ~~~~~[ interface : "push_gpr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 99 104 { 100 ALLOC1_INTERFACE ("push_gpr",OUT,SOUTH,"Free a general register",_param->_nb_reg_free);105 ALLOC1_INTERFACE_BEGIN("push_gpr",OUT,SOUTH,_("Free a general register"),_param->_nb_reg_free); 101 106 102 107 ALLOC1_VALACK_OUT(out_PUSH_GPR_VAL ,VAL); 103 108 ALLOC1_VALACK_IN ( in_PUSH_GPR_ACK ,ACK); 104 109 ALLOC1_SIGNAL_OUT(out_PUSH_GPR_NUM_REG,"num_reg",Tgeneral_address_t,_param->_size_general_register); 110 111 ALLOC1_INTERFACE_END(_param->_nb_reg_free); 105 112 } 106 113 107 114 // ~~~~~[ interface : "push_spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 108 115 { 109 ALLOC1_INTERFACE ("push_spr",OUT,SOUTH,"Free a special register",_param->_nb_reg_free);116 ALLOC1_INTERFACE_BEGIN("push_spr",OUT,SOUTH,_("Free a special register"),_param->_nb_reg_free); 110 117 111 118 ALLOC1_VALACK_OUT(out_PUSH_SPR_VAL ,VAL); 112 119 ALLOC1_VALACK_IN ( in_PUSH_SPR_ACK ,ACK); 113 120 ALLOC1_SIGNAL_OUT(out_PUSH_SPR_NUM_REG,"num_reg",Tspecial_address_t,_param->_size_special_register); 121 122 ALLOC1_INTERFACE_END(_param->_nb_reg_free); 114 123 } 115 124 … … 117 126 if (usage_is_set(_usage,USE_SYSTEMC)) 118 127 { 119 gpr_stat_list = new stat_list_entry_t * [_param->_nb_bank]; 120 spr_stat_list = new stat_list_entry_t * [_param->_nb_bank]; 121 122 for (uint32_t i=0; i<_param->_nb_bank; i++) 123 { 124 gpr_stat_list [i] = new stat_list_entry_t [_param->_nb_general_register_by_bank]; 125 spr_stat_list [i] = new stat_list_entry_t [_param->_nb_special_register_by_bank]; 126 } 127 128 internal_INSERT_ACK = new Tcontrol_t [_param->_nb_inst_insert]; 129 internal_RETIRE_ACK = new Tcontrol_t [_param->_nb_inst_retire]; 130 internal_PUSH_GPR_VAL = new Tcontrol_t [_param->_nb_reg_free]; 131 internal_PUSH_GPR_NUM_BANK = new uint32_t [_param->_nb_reg_free]; 132 internal_PUSH_SPR_VAL = new Tcontrol_t [_param->_nb_reg_free]; 133 internal_PUSH_SPR_NUM_BANK = new uint32_t [_param->_nb_reg_free]; 128 ALLOC2(gpr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_general_register_by_bank); 129 ALLOC2(spr_stat_list,stat_list_entry_t,_param->_nb_bank,_param->_nb_special_register_by_bank); 130 ALLOC1(internal_INSERT_ACK ,Tcontrol_t,_param->_nb_inst_insert); 131 ALLOC1(internal_RETIRE_ACK ,Tcontrol_t,_param->_nb_inst_retire); 132 ALLOC1(internal_PUSH_GPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 133 ALLOC1(internal_PUSH_GPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 134 ALLOC1(internal_PUSH_SPR_VAL ,Tcontrol_t,_param->_nb_reg_free); 135 ALLOC1(internal_PUSH_SPR_NUM_BANK,uint32_t ,_param->_nb_reg_free); 134 136 } 135 137 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 29 30 delete in_NRESET; 30 31 31 delete [] in_INSERT_VAL;32 delete [] out_INSERT_ACK;33 delete [] in_INSERT_READ_RA;34 delete [] in_INSERT_NUM_REG_RA_PHY;35 delete [] in_INSERT_READ_RB;36 delete [] in_INSERT_NUM_REG_RB_PHY;37 delete [] in_INSERT_READ_RC;38 delete [] in_INSERT_NUM_REG_RC_PHY;39 delete [] in_INSERT_WRITE_RD;40 delete [] in_INSERT_NUM_REG_RD_PHY_NEW;41 delete [] in_INSERT_WRITE_RE;42 delete [] in_INSERT_NUM_REG_RE_PHY_NEW;32 DELETE1_SIGNAL( in_INSERT_VAL ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL(out_INSERT_ACK ,_param->_nb_inst_insert,1); 34 DELETE1_SIGNAL( in_INSERT_READ_RA ,_param->_nb_inst_insert,1 ); 35 DELETE1_SIGNAL( in_INSERT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 36 DELETE1_SIGNAL( in_INSERT_READ_RB ,_param->_nb_inst_insert,1 ); 37 DELETE1_SIGNAL( in_INSERT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register); 38 DELETE1_SIGNAL( in_INSERT_READ_RC ,_param->_nb_inst_insert,1 ); 39 DELETE1_SIGNAL( in_INSERT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register); 40 DELETE1_SIGNAL( in_INSERT_WRITE_RD ,_param->_nb_inst_insert,1 ); 41 DELETE1_SIGNAL( in_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register); 42 DELETE1_SIGNAL( in_INSERT_WRITE_RE ,_param->_nb_inst_insert,1 ); 43 DELETE1_SIGNAL( in_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register); 43 44 44 delete [] in_RETIRE_VAL ; 45 delete [] out_RETIRE_ACK ; 46 delete [] in_RETIRE_READ_RA ; 47 delete [] in_RETIRE_NUM_REG_RA_PHY ; 48 delete [] in_RETIRE_READ_RB ; 49 delete [] in_RETIRE_NUM_REG_RB_PHY ; 50 delete [] in_RETIRE_READ_RC ; 51 delete [] in_RETIRE_NUM_REG_RC_PHY ; 52 delete [] in_RETIRE_WRITE_RD ; 53 delete [] in_RETIRE_RESTORE_RD_PHY_OLD; 54 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 55 delete [] in_RETIRE_NUM_REG_RD_PHY_NEW; 56 delete [] in_RETIRE_WRITE_RE ; 57 delete [] in_RETIRE_RESTORE_RE_PHY_OLD; 58 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 59 delete [] in_RETIRE_NUM_REG_RE_PHY_NEW; 45 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 46 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 47 DELETE1_SIGNAL( in_RETIRE_RESTORE ,_param->_nb_inst_retire,1 ); 48 DELETE1_SIGNAL( in_RETIRE_READ_RA ,_param->_nb_inst_retire,1 ); 49 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire,_param->_size_general_register); 50 DELETE1_SIGNAL( in_RETIRE_READ_RB ,_param->_nb_inst_retire,1 ); 51 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY ,_param->_nb_inst_retire,_param->_size_general_register); 52 DELETE1_SIGNAL( in_RETIRE_READ_RC ,_param->_nb_inst_retire,1 ); 53 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY ,_param->_nb_inst_retire,_param->_size_special_register); 54 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1 ); 55 DELETE1_SIGNAL( in_RETIRE_RESTORE_RD_PHY_OLD,_param->_nb_inst_retire,1 ); 56 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register); 57 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register); 58 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1 ); 59 DELETE1_SIGNAL( in_RETIRE_RESTORE_RE_PHY_OLD,_param->_nb_inst_retire,1 ); 60 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register); 61 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register); 60 62 61 delete [] out_PUSH_GPR_VAL ; 62 delete [] in_PUSH_GPR_ACK ; 63 DELETE1_SIGNAL(out_PUSH_GPR_VAL ,_param->_nb_reg_free,1); 64 DELETE1_SIGNAL( in_PUSH_GPR_ACK ,_param->_nb_reg_free,1); 65 DELETE1_SIGNAL(out_PUSH_GPR_NUM_REG,_param->_nb_reg_free,_param->_size_general_register); 63 66 64 delete [] out_PUSH_GPR_NUM_REG ; 65 delete [] out_PUSH_SPR_VAL ; 66 delete [] in_PUSH_SPR_ACK ; 67 delete [] out_PUSH_SPR_NUM_REG ; 68 69 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 70 71 delete [] gpr_stat_list; 72 delete [] spr_stat_list; 73 74 delete [] internal_INSERT_ACK ; 75 delete [] internal_RETIRE_ACK ; 76 delete [] internal_PUSH_GPR_VAL ; 77 delete [] internal_PUSH_GPR_NUM_BANK; 78 delete [] internal_PUSH_SPR_VAL ; 79 delete [] internal_PUSH_SPR_NUM_BANK; 67 DELETE1_SIGNAL(out_PUSH_SPR_VAL ,_param->_nb_reg_free,1); 68 DELETE1_SIGNAL( in_PUSH_SPR_ACK ,_param->_nb_reg_free,1); 69 DELETE1_SIGNAL(out_PUSH_SPR_NUM_REG,_param->_nb_reg_free,_param->_size_special_register); 70 71 DELETE2(gpr_stat_list ,_param->_nb_bank,_param->_nb_general_register_by_bank); 72 DELETE2(spr_stat_list ,_param->_nb_bank,_param->_nb_special_register_by_bank); 73 DELETE1(internal_INSERT_ACK ,_param->_nb_inst_insert); 74 DELETE1(internal_RETIRE_ACK ,_param->_nb_inst_retire); 75 DELETE1(internal_PUSH_GPR_VAL ,_param->_nb_reg_free); 76 DELETE1(internal_PUSH_GPR_NUM_BANK,_param->_nb_reg_free); 77 DELETE1(internal_PUSH_SPR_VAL ,_param->_nb_reg_free); 78 DELETE1(internal_PUSH_SPR_NUM_BANK,_param->_nb_reg_free); 80 79 } 81 82 80 83 81 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMealy.cpp
r88 r112 19 19 20 20 21 #undef FUNCTION22 #define FUNCTION "Stat_List_unit::genMealy"23 void Stat_List_unit::genMealy (void)24 {25 log_begin(Stat_List_unit,FUNCTION);26 log_function(Stat_List_unit,FUNCTION,_name.c_str());21 // #undef FUNCTION 22 // #define FUNCTION "Stat_List_unit::genMealy" 23 // void Stat_List_unit::genMealy (void) 24 // { 25 // log_begin(Stat_List_unit,FUNCTION); 26 // log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 27 28 for (uint32_t i=0; i<_param->_nb_inst_insert; i++)29 {30 bool ack = true;28 // for (uint32_t i=0; i<_param->_nb_inst_insert; i++) 29 // { 30 // bool ack = true; 31 31 32 if (PORT_READ(in_INSERT_READ_RA [i]))33 {34 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);35 uint32_t bank = num_reg >> _param->_shift_gpr;36 uint32_t reg = num_reg & _param->_mask_gpr ;37 ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);38 }32 // if (PORT_READ(in_INSERT_READ_RA [i])) 33 // { 34 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]); 35 // uint32_t bank = num_reg >> _param->_shift_gpr; 36 // uint32_t reg = num_reg & _param->_mask_gpr ; 37 // ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 38 // } 39 39 40 if (PORT_READ(in_INSERT_READ_RB [i]))41 {42 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);43 uint32_t bank = num_reg >> _param->_shift_gpr;44 uint32_t reg = num_reg & _param->_mask_gpr ;45 ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader);46 }40 // if (PORT_READ(in_INSERT_READ_RB [i])) 41 // { 42 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]); 43 // uint32_t bank = num_reg >> _param->_shift_gpr; 44 // uint32_t reg = num_reg & _param->_mask_gpr ; 45 // ack &= gpr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 46 // } 47 47 48 if (PORT_READ(in_INSERT_READ_RC [i]))49 {50 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);51 uint32_t bank = num_reg >> _param->_shift_spr;52 uint32_t reg = num_reg & _param->_mask_spr ;53 ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader);54 }48 // if (PORT_READ(in_INSERT_READ_RC [i])) 49 // { 50 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]); 51 // uint32_t bank = num_reg >> _param->_shift_spr; 52 // uint32_t reg = num_reg & _param->_mask_spr ; 53 // ack &= spr_stat_list [bank][reg].can_insert_read(_param->_max_reader); 54 // } 55 55 56 internal_INSERT_ACK [i] = ack;57 PORT_WRITE(out_INSERT_ACK [i], ack);58 }56 // internal_INSERT_ACK [i] = ack; 57 // PORT_WRITE(out_INSERT_ACK [i], ack); 58 // } 59 59 60 log_end(Stat_List_unit,FUNCTION);61 };60 // log_end(Stat_List_unit,FUNCTION); 61 // }; 62 62 63 63 }; // end namespace stat_list_unit -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
r88 r112 26 26 log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 27 28 uint32_t gpr_ptr = internal_GPR_PTR_FREE;29 uint32_t spr_ptr = internal_SPR_PTR_FREE;28 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 29 uint32_t spr_ptr = reg_SPR_PTR_FREE; 30 30 31 31 for (uint32_t i=0; i<_param->_nb_reg_free; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_transition.cpp
r106 r112 38 38 spr_stat_list [i][j].reset((spr++)<_param->_nb_spr_use_init); 39 39 } 40 internal_GPR_PTR_FREE = 0;41 internal_SPR_PTR_FREE = 0;40 reg_GPR_PTR_FREE = 0; 41 reg_SPR_PTR_FREE = 0; 42 42 } 43 43 else … … 51 51 log_printf(TRACE,Stat_List_unit,FUNCTION," * INSERT [%d]",i); 52 52 53 if (PORT_READ(in_INSERT_READ_RA [i]))54 {55 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]);56 57 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg);58 59 uint32_t bank = num_reg >> _param->_shift_gpr;60 uint32_t reg = num_reg & _param->_mask_gpr ;61 gpr_stat_list [bank][reg].insert_read();62 }63 64 if (PORT_READ(in_INSERT_READ_RB [i]))65 {66 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]);67 68 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg);69 70 uint32_t bank = num_reg >> _param->_shift_gpr;71 uint32_t reg = num_reg & _param->_mask_gpr ;72 gpr_stat_list [bank][reg].insert_read();73 }74 75 if (PORT_READ(in_INSERT_READ_RC [i]))76 {77 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]);78 79 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg);80 81 uint32_t bank = num_reg >> _param->_shift_spr;82 uint32_t reg = num_reg & _param->_mask_spr ;83 spr_stat_list [bank][reg].insert_read();84 }53 // if (PORT_READ(in_INSERT_READ_RA [i])) 54 // { 55 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RA_PHY [i]); 56 57 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 58 59 // uint32_t bank = num_reg >> _param->_shift_gpr; 60 // uint32_t reg = num_reg & _param->_mask_gpr ; 61 // gpr_stat_list [bank][reg].insert_read(); 62 // } 63 64 // if (PORT_READ(in_INSERT_READ_RB [i])) 65 // { 66 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RB_PHY [i]); 67 68 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg); 69 70 // uint32_t bank = num_reg >> _param->_shift_gpr; 71 // uint32_t reg = num_reg & _param->_mask_gpr ; 72 // gpr_stat_list [bank][reg].insert_read(); 73 // } 74 75 // if (PORT_READ(in_INSERT_READ_RC [i])) 76 // { 77 // Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RC_PHY [i]); 78 79 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 80 81 // uint32_t bank = num_reg >> _param->_shift_spr; 82 // uint32_t reg = num_reg & _param->_mask_spr ; 83 // spr_stat_list [bank][reg].insert_read(); 84 // } 85 85 86 86 if (PORT_READ(in_INSERT_WRITE_RD [i])) … … 88 88 Tgeneral_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RD_PHY_NEW [i]); 89 89 90 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD - num_reg 90 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD - num_reg new : %d",num_reg); 91 91 92 92 uint32_t bank = num_reg >> _param->_shift_gpr; … … 97 97 if (PORT_READ(in_INSERT_WRITE_RE [i])) 98 98 { 99 T general_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]);100 101 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg 99 Tspecial_address_t num_reg = PORT_READ(in_INSERT_NUM_REG_RE_PHY_NEW [i]); 100 101 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg new : %d",num_reg); 102 102 103 103 uint32_t bank = num_reg >> _param->_shift_spr; … … 115 115 log_printf(TRACE,Stat_List_unit,FUNCTION," * RETIRE [%d]",i); 116 116 117 if (PORT_READ(in_RETIRE_READ_RA [i])) 118 { 119 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]); 120 121 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 122 123 uint32_t bank = num_reg >> _param->_shift_gpr; 124 uint32_t reg = num_reg & _param->_mask_gpr ; 125 gpr_stat_list [bank][reg].retire_read(); 126 } 127 128 if (PORT_READ(in_RETIRE_READ_RB [i])) 129 { 130 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]); 131 132 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RD - num_reg : %d",num_reg); 133 134 uint32_t bank = num_reg >> _param->_shift_gpr; 135 uint32_t reg = num_reg & _param->_mask_gpr ; 136 gpr_stat_list [bank][reg].retire_read(); 137 } 138 139 if (PORT_READ(in_RETIRE_READ_RC [i])) 140 { 141 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]); 142 143 log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 144 145 uint32_t bank = num_reg >> _param->_shift_spr; 146 uint32_t reg = num_reg & _param->_mask_spr ; 147 spr_stat_list [bank][reg].retire_read(); 148 } 117 Tcontrol_t restore = PORT_READ(in_RETIRE_RESTORE [i]); 118 119 log_printf(TRACE,Stat_List_unit,FUNCTION," * restore : %d",restore); 120 121 // if (PORT_READ(in_RETIRE_READ_RA [i])) 122 // { 123 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RA_PHY [i]); 124 125 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RA - num_reg : %d",num_reg); 126 127 // uint32_t bank = num_reg >> _param->_shift_gpr; 128 // uint32_t reg = num_reg & _param->_mask_gpr ; 129 // gpr_stat_list [bank][reg].retire_read(); 130 // } 131 132 // if (PORT_READ(in_RETIRE_READ_RB [i])) 133 // { 134 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RB_PHY [i]); 135 136 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RB - num_reg : %d",num_reg); 137 138 // uint32_t bank = num_reg >> _param->_shift_gpr; 139 // uint32_t reg = num_reg & _param->_mask_gpr ; 140 // gpr_stat_list [bank][reg].retire_read(); 141 // } 142 143 // if (PORT_READ(in_RETIRE_READ_RC [i])) 144 // { 145 // Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RC_PHY [i]); 146 147 // log_printf(TRACE,Stat_List_unit,FUNCTION," * READ_RC - num_reg : %d",num_reg); 148 149 // uint32_t bank = num_reg >> _param->_shift_spr; 150 // uint32_t reg = num_reg & _param->_mask_spr ; 151 // spr_stat_list [bank][reg].retire_read(); 152 // } 149 153 150 154 if (PORT_READ(in_RETIRE_WRITE_RD [i])) … … 157 161 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_OLD [i]); 158 162 159 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD -num_reg_old : %d",num_reg);163 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_old : %d",num_reg); 160 164 161 165 uint32_t bank = num_reg >> _param->_shift_gpr; 162 166 uint32_t reg = num_reg & _param->_mask_gpr ; 163 gpr_stat_list [bank][reg].retire_write_old(restore _old);167 gpr_stat_list [bank][reg].retire_write_old(restore, restore_old); 164 168 } 165 169 { 166 170 Tgeneral_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RD_PHY_NEW [i]); 167 171 168 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RD -num_reg_new : %d",num_reg);172 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_new : %d",num_reg); 169 173 170 174 uint32_t bank = num_reg >> _param->_shift_gpr; 171 175 uint32_t reg = num_reg & _param->_mask_gpr ; 172 gpr_stat_list [bank][reg].retire_write_new(restore _old);176 gpr_stat_list [bank][reg].retire_write_new(restore, restore_old); 173 177 } 174 178 } … … 181 185 182 186 { 183 T general_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]);184 185 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE - num_reg_new: %d",num_reg);187 Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_OLD [i]); 188 189 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_old : %d",num_reg); 186 190 187 191 uint32_t bank = num_reg >> _param->_shift_spr; 188 192 uint32_t reg = num_reg & _param->_mask_spr ; 189 spr_stat_list [bank][reg].retire_write_old(restore _old);193 spr_stat_list [bank][reg].retire_write_old(restore, restore_old); 190 194 } 191 195 { 192 T general_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]);193 194 log_printf(TRACE,Stat_List_unit,FUNCTION," * WRITE_RE -num_reg_new : %d",num_reg);196 Tspecial_address_t num_reg = PORT_READ(in_RETIRE_NUM_REG_RE_PHY_NEW [i]); 197 198 log_printf(TRACE,Stat_List_unit,FUNCTION," num_reg_new : %d",num_reg); 195 199 196 200 uint32_t bank = num_reg >> _param->_shift_spr; 197 201 uint32_t reg = num_reg & _param->_mask_spr ; 198 spr_stat_list [bank][reg].retire_write_new(restore _old);202 spr_stat_list [bank][reg].retire_write_new(restore, restore_old); 199 203 } 200 204 } … … 207 211 // ===================================================== 208 212 if (internal_PUSH_GPR_VAL [i] and PORT_READ(in_PUSH_GPR_ACK [i])) 209 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][ internal_GPR_PTR_FREE].free();213 gpr_stat_list[internal_PUSH_GPR_NUM_BANK [i]][reg_GPR_PTR_FREE].free(); 210 214 211 215 // ===================================================== … … 213 217 // ===================================================== 214 218 if (internal_PUSH_SPR_VAL [i] and PORT_READ(in_PUSH_SPR_ACK [i])) 215 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][ internal_SPR_PTR_FREE].free();219 spr_stat_list[internal_PUSH_SPR_NUM_BANK [i]][reg_SPR_PTR_FREE].free(); 216 220 } 217 221 218 222 // Update pointer 219 internal_GPR_PTR_FREE = ((internal_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:internal_GPR_PTR_FREE)-1;220 internal_SPR_PTR_FREE = ((internal_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:internal_SPR_PTR_FREE)-1;223 reg_GPR_PTR_FREE = ((reg_GPR_PTR_FREE==0)?_param->_nb_general_register_by_bank:reg_GPR_PTR_FREE)-1; 224 reg_SPR_PTR_FREE = ((reg_SPR_PTR_FREE==0)?_param->_nb_special_register_by_bank:reg_SPR_PTR_FREE)-1; 221 225 } 222 226 223 227 224 228 #if (DEBUG >= DEBUG_TRACE) 225 log_printf(TRACE,Stat_List_unit,FUNCTION," * Dump Stat List"); 226 for (uint32_t i=0; i<_param->_nb_bank; i++) 227 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 228 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d", 229 i, 230 j, 231 (i<<_param->_shift_gpr)|j, 232 gpr_stat_list[i][j]._is_free, 233 gpr_stat_list[i][j]._is_link, 234 gpr_stat_list[i][j]._is_valid, 235 gpr_stat_list[i][j]._counter); 236 for (uint32_t i=0; i<_param->_nb_bank; i++) 237 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 238 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d, valid %.1d, counter %.4d", 239 i, 240 j, 241 (i<<_param->_shift_spr)|j, 242 spr_stat_list[i][j]._is_free, 243 spr_stat_list[i][j]._is_link, 244 spr_stat_list[i][j]._is_valid, 245 spr_stat_list[i][j]._counter); 229 { 230 log_printf(TRACE,Stat_List_unit,FUNCTION," * Dump Stat List"); 231 log_printf(TRACE,Stat_List_unit,FUNCTION," * reg_GPR_PTR_FREE : %d",reg_GPR_PTR_FREE); 232 log_printf(TRACE,Stat_List_unit,FUNCTION," * reg_SPR_PTR_FREE : %d",reg_SPR_PTR_FREE); 233 234 for (uint32_t i=0; i<_param->_nb_bank; i++) 235 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 236 log_printf(TRACE,Stat_List_unit,FUNCTION," * GPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d", 237 i, 238 j, 239 (i<<_param->_shift_gpr)|j, 240 gpr_stat_list[i][j]._is_free, 241 gpr_stat_list[i][j]._is_link// , 242 // gpr_stat_list[i][j]._is_valid, 243 // gpr_stat_list[i][j]._counter 244 ); 245 for (uint32_t i=0; i<_param->_nb_bank; i++) 246 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 247 log_printf(TRACE,Stat_List_unit,FUNCTION," * SPR[%.4d][%.5d] (%.5d) - free %.1d, link %.1d", 248 i, 249 j, 250 (i<<_param->_shift_spr)|j, 251 spr_stat_list[i][j]._is_free, 252 spr_stat_list[i][j]._is_link// , 253 // spr_stat_list[i][j]._is_valid, 254 // spr_stat_list[i][j]._counter 255 ); 256 } 246 257 #endif 258 259 #ifdef DEBUG_TEST 260 # if 0 261 { 262 uint32_t size_rob = 64; 263 uint32_t nb_context = 1; 264 265 { 266 uint32_t nb_is_link = 0; 267 uint32_t nb_reg = 32; 268 for (uint32_t i=0; i<_param->_nb_bank; i++) 269 for (uint32_t j=0; j<_param->_nb_general_register_by_bank; j++) 270 if (gpr_stat_list[i][j]._is_link) 271 nb_is_link ++; 272 273 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_GPR_IS_LINK : %d",nb_is_link); 274 275 if (nb_is_link > size_rob+nb_context*nb_reg) 276 throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked gpr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg)); 277 } 278 279 { 280 uint32_t nb_is_link = 0; 281 uint32_t nb_reg = 2; 282 for (uint32_t i=0; i<_param->_nb_bank; i++) 283 for (uint32_t j=0; j<_param->_nb_special_register_by_bank; j++) 284 if (spr_stat_list[i][j]._is_link) 285 nb_is_link ++; 286 287 log_printf(TRACE,Stat_List_unit,FUNCTION," * nb_SPR_IS_LINK : %d",nb_is_link); 288 289 if (nb_is_link > size_rob+nb_context*nb_reg) 290 throw ERRORMORPHEO(FUNCTION,toString(_("They are %d linked spr register, but max is size_rob+nb_context*%d = %d+%d*%d = %d"),nb_is_link,nb_reg,size_rob,nb_context,nb_reg,size_rob+nb_context*nb_reg)); 291 } 292 } 293 # endif 294 #endif 295 247 296 248 297 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/include/Parameters.h
r88 r112 38 38 public : uint32_t _nb_reg_free ; 39 39 public : uint32_t _nb_bank ; 40 40 //public : uint32_t _size_read_counter ; 41 41 42 42 //public : uint32_t _size_front_end_id ; … … 62 62 uint32_t nb_reg_free , 63 63 uint32_t nb_bank , 64 uint32_t size_read_counter ,64 // uint32_t size_read_counter , 65 65 bool is_toplevel=false); 66 66 // public : Parameters (Parameters & param) ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters.cpp
r88 r112 28 28 uint32_t nb_reg_free , 29 29 uint32_t nb_bank , 30 uint32_t size_read_counter ,30 // uint32_t size_read_counter , 31 31 bool is_toplevel) 32 32 { … … 41 41 _nb_reg_free = nb_reg_free ; 42 42 _nb_bank = nb_bank ; 43 _size_read_counter = size_read_counter ;43 // _size_read_counter = size_read_counter ; 44 44 45 45 uint32_t size_general_register = log2(nb_general_register); … … 83 83 _nb_inst_retire , 84 84 _nb_reg_free , 85 _nb_bank , 86 _size_read_counter ); 85 _nb_bank // , 86 // _size_read_counter 87 ); 87 88 88 89 _param_register_translation_unit_glue = new morpheo::behavioural::core::multi_ooo_engine::ooo_engine::rename_unit::register_translation_unit::register_translation_unit_glue::Parameters -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Parameters_print.cpp
r81 r112 34 34 xml.singleton_begin("nb_reg_free "); xml.attribut("value",toString(_nb_reg_free )); xml.singleton_end(); 35 35 xml.singleton_begin("nb_bank "); xml.attribut("value",toString(_nb_bank )); xml.singleton_end(); 36 36 // xml.singleton_begin("size_read_counter "); xml.attribut("value",toString(_size_read_counter )); xml.singleton_end(); 37 37 for (uint32_t i=0;i<_nb_front_end; i++) 38 38 { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_allocation.cpp
r104 r112 58 58 // ~~~~~[ Interface "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("rename", IN, EAST, "Instruction with logical register", _param->_nb_inst_insert);60 ALLOC1_INTERFACE_BEGIN("rename", IN, EAST, _("Instruction with logical register"), _param->_nb_inst_insert); 61 61 62 62 ALLOC1_VALACK_IN ( in_RENAME_VAL ,VAL); … … 74 74 ALLOC1_SIGNAL_IN ( in_RENAME_WRITE_RE ,"write_re" ,Tcontrol_t ,1 ); 75 75 ALLOC1_SIGNAL_IN ( in_RENAME_NUM_REG_RE_LOG,"num_reg_re_log",Tspecial_address_t,_param->_size_special_register_logic); 76 77 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 76 78 } 77 79 78 80 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 79 81 { 80 ALLOC1_INTERFACE ("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);82 ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert); 81 83 82 84 ALLOC1_VALACK_OUT(out_INSERT_VAL ,VAL); … … 101 103 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 102 104 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 105 106 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 103 107 } 104 108 105 109 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 110 { 107 ALLOC1_INTERFACE("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire); 111 ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire); 112 108 113 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); 109 114 ALLOC1_VALACK_OUT(out_RETIRE_ACK ,ACK); … … 124 129 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD,"num_reg_re_phy_old",Tspecial_address_t,_param->_size_special_register ); 125 130 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW,"num_reg_re_phy_new",Tspecial_address_t,_param->_size_special_register ); 131 132 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 126 133 } 127 134 128 135 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 129 136 { 130 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);137 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 131 138 132 139 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 133 140 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 134 141 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 142 143 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 135 144 } 136 145 … … 362 371 COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD", 363 372 dest, "in_RETIRE_"+toString(i)+"_RESTORE_RE_PHY_OLD"); 373 COMPONENT_MAP(_component,src ,"out_RETIRE_"+toString(i)+"_RESTORE" , 374 dest, "in_RETIRE_"+toString(i)+"_RESTORE" ); 364 375 } 365 376 … … 671 682 // in_RETIRE_RESTORE_RD_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RD_PHY_OLD 672 683 // in_RETIRE_RESTORE_RE_PHY_OLD - register_address_translation_unit.out_RETIRE_RESTORE_RE_PHY_OLD 684 // in_RETIRE_RESTORE - register_address_translation_unit.out_RETIRE_RESTORE 673 685 674 686 dest = _name+"_register_translation_unit_glue"; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/src/Register_translation_unit_deallocation.cpp
r104 r112 29 29 delete in_NRESET; 30 30 31 delete [] in_RENAME_VAL ; 32 delete [] out_RENAME_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_RENAME_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_RENAME_CONTEXT_ID ; 37 delete [] in_RENAME_READ_RA ; 38 delete [] in_RENAME_NUM_REG_RA_LOG ; 39 delete [] in_RENAME_READ_RB ; 40 delete [] in_RENAME_NUM_REG_RB_LOG ; 41 delete [] in_RENAME_READ_RC ; 42 delete [] in_RENAME_NUM_REG_RC_LOG ; 43 delete [] in_RENAME_WRITE_RD ; 44 delete [] in_RENAME_NUM_REG_RD_LOG ; 45 delete [] in_RENAME_WRITE_RE ; 46 delete [] in_RENAME_NUM_REG_RE_LOG ; 31 DELETE1_SIGNAL( in_RENAME_VAL ,_param->_nb_inst_insert,1); 32 DELETE1_SIGNAL(out_RENAME_ACK ,_param->_nb_inst_insert,1); 33 DELETE1_SIGNAL( in_RENAME_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 34 DELETE1_SIGNAL( in_RENAME_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 35 DELETE1_SIGNAL( in_RENAME_READ_RA ,_param->_nb_inst_insert,1 ); 36 DELETE1_SIGNAL( in_RENAME_NUM_REG_RA_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 37 DELETE1_SIGNAL( in_RENAME_READ_RB ,_param->_nb_inst_insert,1 ); 38 DELETE1_SIGNAL( in_RENAME_NUM_REG_RB_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 39 DELETE1_SIGNAL( in_RENAME_READ_RC ,_param->_nb_inst_insert,1 ); 40 DELETE1_SIGNAL( in_RENAME_NUM_REG_RC_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 41 DELETE1_SIGNAL( in_RENAME_WRITE_RD ,_param->_nb_inst_insert,1 ); 42 DELETE1_SIGNAL( in_RENAME_NUM_REG_RD_LOG,_param->_nb_inst_insert,_param->_size_general_register_logic); 43 DELETE1_SIGNAL( in_RENAME_WRITE_RE ,_param->_nb_inst_insert,1 ); 44 DELETE1_SIGNAL( in_RENAME_NUM_REG_RE_LOG,_param->_nb_inst_insert,_param->_size_special_register_logic); 47 45 48 delete [] out_INSERT_VAL ; 49 delete [] in_INSERT_ACK ; 50 if (_param->_have_port_front_end_id) 51 delete [] out_INSERT_FRONT_END_ID ; 52 if (_param->_have_port_context_id) 53 delete [] out_INSERT_CONTEXT_ID ; 54 delete [] out_INSERT_READ_RA ; 55 delete [] out_INSERT_NUM_REG_RA_LOG ; 56 delete [] out_INSERT_NUM_REG_RA_PHY ; 57 delete [] out_INSERT_READ_RB ; 58 delete [] out_INSERT_NUM_REG_RB_LOG ; 59 delete [] out_INSERT_NUM_REG_RB_PHY ; 60 delete [] out_INSERT_READ_RC ; 61 delete [] out_INSERT_NUM_REG_RC_LOG ; 62 delete [] out_INSERT_NUM_REG_RC_PHY ; 63 delete [] out_INSERT_WRITE_RD ; 64 delete [] out_INSERT_NUM_REG_RD_LOG ; 65 delete [] out_INSERT_NUM_REG_RD_PHY_OLD; 66 delete [] out_INSERT_NUM_REG_RD_PHY_NEW; 67 delete [] out_INSERT_WRITE_RE ; 68 delete [] out_INSERT_NUM_REG_RE_LOG ; 69 delete [] out_INSERT_NUM_REG_RE_PHY_OLD; 70 delete [] out_INSERT_NUM_REG_RE_PHY_NEW; 46 DELETE1_SIGNAL(out_INSERT_VAL ,_param->_nb_inst_insert,1); 47 DELETE1_SIGNAL( in_INSERT_ACK ,_param->_nb_inst_insert,1); 48 DELETE1_SIGNAL(out_INSERT_FRONT_END_ID ,_param->_nb_inst_insert,_param->_size_front_end_id ); 49 DELETE1_SIGNAL(out_INSERT_CONTEXT_ID ,_param->_nb_inst_insert,_param->_size_context_id ); 50 DELETE1_SIGNAL(out_INSERT_READ_RA ,_param->_nb_inst_insert,1 ); 51 DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 52 DELETE1_SIGNAL(out_INSERT_NUM_REG_RA_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 53 DELETE1_SIGNAL(out_INSERT_READ_RB ,_param->_nb_inst_insert,1 ); 54 DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 55 DELETE1_SIGNAL(out_INSERT_NUM_REG_RB_PHY ,_param->_nb_inst_insert,_param->_size_general_register ); 56 DELETE1_SIGNAL(out_INSERT_READ_RC ,_param->_nb_inst_insert,1 ); 57 DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 58 DELETE1_SIGNAL(out_INSERT_NUM_REG_RC_PHY ,_param->_nb_inst_insert,_param->_size_special_register ); 59 DELETE1_SIGNAL(out_INSERT_WRITE_RD ,_param->_nb_inst_insert,1 ); 60 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_LOG ,_param->_nb_inst_insert,_param->_size_general_register_logic); 61 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_OLD,_param->_nb_inst_insert,_param->_size_general_register ); 62 DELETE1_SIGNAL(out_INSERT_NUM_REG_RD_PHY_NEW,_param->_nb_inst_insert,_param->_size_general_register ); 63 DELETE1_SIGNAL(out_INSERT_WRITE_RE ,_param->_nb_inst_insert,1 ); 64 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_LOG ,_param->_nb_inst_insert,_param->_size_special_register_logic); 65 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_OLD,_param->_nb_inst_insert,_param->_size_special_register ); 66 DELETE1_SIGNAL(out_INSERT_NUM_REG_RE_PHY_NEW,_param->_nb_inst_insert,_param->_size_special_register ); 71 67 72 delete [] in_RETIRE_VAL ; 73 delete [] out_RETIRE_ACK ; 74 if (_param->_have_port_front_end_id) 75 delete [] in_RETIRE_FRONT_END_ID ; 76 if (_param->_have_port_context_id) 77 delete [] in_RETIRE_CONTEXT_ID ; 78 delete [] in_RETIRE_READ_RA ; 79 delete [] in_RETIRE_NUM_REG_RA_PHY ; 80 delete [] in_RETIRE_READ_RB ; 81 delete [] in_RETIRE_NUM_REG_RB_PHY ; 82 delete [] in_RETIRE_READ_RC ; 83 delete [] in_RETIRE_NUM_REG_RC_PHY ; 84 delete [] in_RETIRE_WRITE_RD ; 85 delete [] in_RETIRE_NUM_REG_RD_LOG ; 86 delete [] in_RETIRE_NUM_REG_RD_PHY_OLD; 87 delete [] in_RETIRE_NUM_REG_RD_PHY_NEW; 88 delete [] in_RETIRE_WRITE_RE ; 89 delete [] in_RETIRE_NUM_REG_RE_LOG ; 90 delete [] in_RETIRE_NUM_REG_RE_PHY_OLD; 91 delete [] in_RETIRE_NUM_REG_RE_PHY_NEW; 68 DELETE1_SIGNAL( in_RETIRE_VAL ,_param->_nb_inst_retire,1); 69 DELETE1_SIGNAL(out_RETIRE_ACK ,_param->_nb_inst_retire,1); 70 DELETE1_SIGNAL( in_RETIRE_FRONT_END_ID ,_param->_nb_inst_retire,_param->_size_front_end_id ); 71 DELETE1_SIGNAL( in_RETIRE_CONTEXT_ID ,_param->_nb_inst_retire,_param->_size_context_id ); 72 DELETE1_SIGNAL( in_RETIRE_READ_RA ,_param->_nb_inst_retire,1 ); 73 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RA_PHY ,_param->_nb_inst_retire,_param->_size_general_register ); 74 DELETE1_SIGNAL( in_RETIRE_READ_RB ,_param->_nb_inst_retire,1 ); 75 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RB_PHY ,_param->_nb_inst_retire,_param->_size_general_register ); 76 DELETE1_SIGNAL( in_RETIRE_READ_RC ,_param->_nb_inst_retire,1 ); 77 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RC_PHY ,_param->_nb_inst_retire,_param->_size_special_register ); 78 DELETE1_SIGNAL( in_RETIRE_WRITE_RD ,_param->_nb_inst_retire,1 ); 79 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_LOG ,_param->_nb_inst_retire,_param->_size_general_register_logic); 80 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_OLD,_param->_nb_inst_retire,_param->_size_general_register ); 81 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RD_PHY_NEW,_param->_nb_inst_retire,_param->_size_general_register ); 82 DELETE1_SIGNAL( in_RETIRE_WRITE_RE ,_param->_nb_inst_retire,1 ); 83 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_LOG ,_param->_nb_inst_retire,_param->_size_special_register_logic); 84 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_OLD,_param->_nb_inst_retire,_param->_size_special_register ); 85 DELETE1_SIGNAL( in_RETIRE_NUM_REG_RE_PHY_NEW,_param->_nb_inst_retire,_param->_size_special_register ); 92 86 93 87 DELETE2_SIGNAL( in_RETIRE_EVENT_VAL ,_param->_nb_front_end, _param->_nb_context[it1],1); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_allocation.cpp
r108 r112 58 58 // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);60 ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]); … … 87 87 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t ,_param->_size_exception_use , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 88 88 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 89 90 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]); 89 91 } 90 92 91 93 // ~~~~~[ Interface : "rename_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 92 94 { 93 ALLOC1_INTERFACE ("rename_out", IN, EAST, "output of decod's stage", _param->_nb_inst_rename);95 ALLOC1_INTERFACE_BEGIN("rename_out", IN, EAST, _("output of decod's stage"), _param->_nb_inst_rename); 94 96 95 97 ALLOC1_VALACK_OUT(out_RENAME_OUT_VAL ,VAL); … … 120 122 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION_USE ,"exception_use",Texception_t ,_param->_size_exception_use ); 121 123 ALLOC1_SIGNAL_OUT(out_RENAME_OUT_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception ); 124 125 ALLOC1_INTERFACE_END(_param->_nb_inst_rename); 122 126 } 123 127 124 128 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 125 129 { 126 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);130 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 127 131 128 132 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 133 134 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 129 135 } 130 136 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_deallocation.cpp
r108 r112 29 29 delete in_NRESET; 30 30 31 delete [] in_RENAME_IN_VAL ; 32 delete [] out_RENAME_IN_ACK ; 33 if (_param->_have_port_front_end_id) 34 delete [] in_RENAME_IN_FRONT_END_ID ; 35 if (_param->_have_port_context_id) 36 delete [] in_RENAME_IN_CONTEXT_ID ; 37 if (_param->_have_port_depth) 38 delete [] in_RENAME_IN_DEPTH ; 39 delete [] in_RENAME_IN_TYPE ; 40 delete [] in_RENAME_IN_OPERATION ; 41 delete [] in_RENAME_IN_NO_EXECUTE ; 42 delete [] in_RENAME_IN_IS_DELAY_SLOT ; 31 DELETE2_SIGNAL( in_RENAME_IN_VAL ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1); 32 DELETE2_SIGNAL(out_RENAME_IN_ACK ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1); 33 DELETE2_SIGNAL( in_RENAME_IN_FRONT_END_ID ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_front_end_id ); 34 DELETE2_SIGNAL( in_RENAME_IN_CONTEXT_ID ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_context_id ); 35 DELETE2_SIGNAL( in_RENAME_IN_DEPTH ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_depth ); 36 DELETE2_SIGNAL( in_RENAME_IN_TYPE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_type ); 37 DELETE2_SIGNAL( in_RENAME_IN_OPERATION ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_operation ); 38 DELETE2_SIGNAL( in_RENAME_IN_NO_EXECUTE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 39 DELETE2_SIGNAL( in_RENAME_IN_IS_DELAY_SLOT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 43 40 #ifdef DEBUG 44 delete [] in_RENAME_IN_ADDRESS;41 DELETE2_SIGNAL( in_RENAME_IN_ADDRESS ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address ); 45 42 #endif 46 delete [] in_RENAME_IN_ADDRESS_NEXT ; 47 delete [] in_RENAME_IN_HAS_IMMEDIAT ; 48 delete [] in_RENAME_IN_IMMEDIAT ; 49 delete [] in_RENAME_IN_READ_RA ; 50 delete [] in_RENAME_IN_NUM_REG_RA ; 51 delete [] in_RENAME_IN_READ_RB ; 52 delete [] in_RENAME_IN_NUM_REG_RB ; 53 delete [] in_RENAME_IN_READ_RC ; 54 delete [] in_RENAME_IN_NUM_REG_RC ; 55 delete [] in_RENAME_IN_WRITE_RD ; 56 delete [] in_RENAME_IN_NUM_REG_RD ; 57 delete [] in_RENAME_IN_WRITE_RE ; 58 delete [] in_RENAME_IN_NUM_REG_RE ; 59 delete [] in_RENAME_IN_EXCEPTION_USE ; 60 delete [] in_RENAME_IN_EXCEPTION ; 43 DELETE2_SIGNAL( in_RENAME_IN_ADDRESS_NEXT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_instruction_address ); 44 DELETE2_SIGNAL( in_RENAME_IN_HAS_IMMEDIAT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 45 DELETE2_SIGNAL( in_RENAME_IN_IMMEDIAT ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_data ); 46 DELETE2_SIGNAL( in_RENAME_IN_READ_RA ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 47 DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RA ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic); 48 DELETE2_SIGNAL( in_RENAME_IN_READ_RB ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 49 DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RB ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic); 50 DELETE2_SIGNAL( in_RENAME_IN_READ_RC ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 51 DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RC ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic); 52 DELETE2_SIGNAL( in_RENAME_IN_WRITE_RD ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 53 DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RD ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_general_register_logic); 54 DELETE2_SIGNAL( in_RENAME_IN_WRITE_RE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],1 ); 55 DELETE2_SIGNAL( in_RENAME_IN_NUM_REG_RE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_special_register_logic); 56 DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION_USE ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception_use ); 57 DELETE2_SIGNAL( in_RENAME_IN_EXCEPTION ,_param->_nb_front_end, _param->_nb_inst_decod[it1],_param->_size_exception ); 58 59 DELETE1_SIGNAL(out_RENAME_OUT_VAL ,_param->_nb_inst_rename,1); 60 DELETE1_SIGNAL( in_RENAME_OUT_ACK ,_param->_nb_inst_rename,1); 61 DELETE1_SIGNAL(out_RENAME_OUT_FRONT_END_ID ,_param->_nb_inst_rename,_param->_size_front_end_id ); 62 DELETE1_SIGNAL(out_RENAME_OUT_CONTEXT_ID ,_param->_nb_inst_rename,_param->_size_context_id ); 63 DELETE1_SIGNAL(out_RENAME_OUT_DEPTH ,_param->_nb_inst_rename,_param->_size_depth ); 64 DELETE1_SIGNAL(out_RENAME_OUT_TYPE ,_param->_nb_inst_rename,_param->_size_type ); 65 DELETE1_SIGNAL(out_RENAME_OUT_OPERATION ,_param->_nb_inst_rename,_param->_size_operation ); 66 DELETE1_SIGNAL(out_RENAME_OUT_NO_EXECUTE ,_param->_nb_inst_rename,1 ); 67 DELETE1_SIGNAL(out_RENAME_OUT_IS_DELAY_SLOT ,_param->_nb_inst_rename,1 ); 68 #ifdef DEBUG 69 DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS ,_param->_nb_inst_rename,_param->_size_instruction_address ); 70 #endif 71 DELETE1_SIGNAL(out_RENAME_OUT_ADDRESS_NEXT ,_param->_nb_inst_rename,_param->_size_instruction_address ); 72 DELETE1_SIGNAL(out_RENAME_OUT_HAS_IMMEDIAT ,_param->_nb_inst_rename,1 ); 73 DELETE1_SIGNAL(out_RENAME_OUT_IMMEDIAT ,_param->_nb_inst_rename,_param->_size_general_data ); 74 DELETE1_SIGNAL(out_RENAME_OUT_READ_RA ,_param->_nb_inst_rename,1 ); 75 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RA ,_param->_nb_inst_rename,_param->_size_general_register_logic); 76 DELETE1_SIGNAL(out_RENAME_OUT_READ_RB ,_param->_nb_inst_rename,1 ); 77 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RB ,_param->_nb_inst_rename,_param->_size_general_register_logic); 78 DELETE1_SIGNAL(out_RENAME_OUT_READ_RC ,_param->_nb_inst_rename,1 ); 79 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RC ,_param->_nb_inst_rename,_param->_size_special_register_logic); 80 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RD ,_param->_nb_inst_rename,1 ); 81 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RD ,_param->_nb_inst_rename,_param->_size_general_register_logic); 82 DELETE1_SIGNAL(out_RENAME_OUT_WRITE_RE ,_param->_nb_inst_rename,1 ); 83 DELETE1_SIGNAL(out_RENAME_OUT_NUM_REG_RE ,_param->_nb_inst_rename,_param->_size_special_register_logic); 84 DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION_USE ,_param->_nb_inst_rename,_param->_size_exception_use ); 85 DELETE1_SIGNAL(out_RENAME_OUT_EXCEPTION ,_param->_nb_inst_rename,_param->_size_exception ); 61 86 62 delete [] out_RENAME_OUT_VAL ; 63 delete [] in_RENAME_OUT_ACK ; 64 if (_param->_have_port_front_end_id) 65 delete [] out_RENAME_OUT_FRONT_END_ID ; 66 if (_param->_have_port_context_id) 67 delete [] out_RENAME_OUT_CONTEXT_ID ; 68 if (_param->_have_port_depth) 69 delete [] out_RENAME_OUT_DEPTH ; 70 delete [] out_RENAME_OUT_TYPE ; 71 delete [] out_RENAME_OUT_OPERATION ; 72 #ifdef DEBUG 73 delete [] out_RENAME_OUT_ADDRESS ; 74 #endif 75 delete [] out_RENAME_OUT_ADDRESS_NEXT ; 76 delete [] out_RENAME_OUT_HAS_IMMEDIAT ; 77 delete [] out_RENAME_OUT_IMMEDIAT ; 78 delete [] out_RENAME_OUT_READ_RA ; 79 delete [] out_RENAME_OUT_NUM_REG_RA ; 80 delete [] out_RENAME_OUT_READ_RB ; 81 delete [] out_RENAME_OUT_NUM_REG_RB ; 82 delete [] out_RENAME_OUT_READ_RC ; 83 delete [] out_RENAME_OUT_NUM_REG_RC ; 84 delete [] out_RENAME_OUT_WRITE_RD ; 85 delete [] out_RENAME_OUT_NUM_REG_RD ; 86 delete [] out_RENAME_OUT_WRITE_RE ; 87 delete [] out_RENAME_OUT_NUM_REG_RE ; 88 delete [] out_RENAME_OUT_EXCEPTION_USE; 87 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state); 88 } 89 89 90 DELETE2_SIGNAL( in_RETIRE_EVENT_STATE ,_param->_nb_front_end, _param->_nb_context[it1],_param->_size_event_state);91 }92 90 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 93 91 delete _priority; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/src/Rename_select_genMealy.cpp
r111 r112 52 52 53 53 log_printf(TRACE,Rename_select,FUNCTION," * front_end[%d].inst_decod[%d]",x,y); 54 log_printf(TRACE,Rename_select,FUNCTION," * rename_in_val: %d",PORT_READ(in_RENAME_IN_VAL[x][y]));54 log_printf(TRACE,Rename_select,FUNCTION," * in_RENAME_OUT_VAL : %d",PORT_READ(in_RENAME_IN_VAL[x][y])); 55 55 log_printf(TRACE,Rename_select,FUNCTION," * previous_transaction : %d",previous_transaction[x]); 56 56 … … 63 63 ack [x][y] = PORT_READ(in_RENAME_OUT_ACK [i]); 64 64 65 log_printf(TRACE,Rename_select,FUNCTION," * rename_out_ack: %d",PORT_READ(in_RENAME_OUT_ACK[i]));65 log_printf(TRACE,Rename_select,FUNCTION," * in_RENAME_OUT_ACK : %d",PORT_READ(in_RENAME_OUT_ACK[i])); 66 66 67 67 Tcontext_t front_end_id = (_param->_have_port_front_end_id)?PORT_READ(in_RENAME_IN_FRONT_END_ID [x][y]):0; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_unit_Glue/src/Rename_unit_Glue_allocation.cpp
r88 r112 59 59 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 { 61 ALLOC1_INTERFACE ("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert);61 ALLOC1_INTERFACE_BEGIN("insert",OUT,NORTH,_("Insert interface"),_param->_nb_inst_insert); 62 62 63 63 // ALLOC1_SIGNAL_OUT(out_INSERT_VAL ,"VAL" ,Tcontrol_t ,1); … … 68 68 ALLOC1_SIGNAL_OUT(out_INSERT_OPERATION ,"OPERATION" ,Toperation_t ,_param->_size_operation); 69 69 ALLOC1_SIGNAL_OUT(out_INSERT_IMMEDIAT ,"IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data); 70 // 70 // ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION_USE ,"EXCEPTION_USE" ,Texception_t ,_param->_size_exception_use); 71 71 ALLOC1_SIGNAL_OUT(out_INSERT_EXCEPTION ,"EXCEPTION" ,Texception_t ,_param->_size_exception); 72 72 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW ,"NUM_REG_RE_PHY_NEW" ,Tspecial_address_t,_param->_size_special_register); … … 78 78 ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_OPERATION ,"RENAME_SELECT_OPERATION" ,Toperation_t ,_param->_size_operation); 79 79 ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_IMMEDIAT ,"RENAME_SELECT_IMMEDIAT" ,Tgeneral_data_t ,_param->_size_general_data); 80 // 80 // ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION_USE ,"RENAME_SELECT_EXCEPTION_USE" ,Texception_t ,_param->_size_exception_use); 81 81 ALLOC1_SIGNAL_IN ( in_INSERT_RENAME_SELECT_EXCEPTION ,"RENAME_SELECT_EXCEPTION" ,Texception_t ,_param->_size_exception); 82 82 ALLOC1_SIGNAL_OUT(out_INSERT_REGISTER_TRANSLATION_VAL ,"REGISTER_TRANSLATION_VAL" ,Tcontrol_t ,1); … … 91 91 ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_TYPE ,"LOAD_STORE_QUEUE_POINTER_TYPE" ,Ttype_t ,_param->_size_type); 92 92 ALLOC1_SIGNAL_OUT(out_INSERT_LOAD_STORE_QUEUE_POINTER_OPERATION ,"LOAD_STORE_QUEUE_POINTER_OPERATION" ,Toperation_t ,_param->_size_operation); 93 94 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 93 95 } 94 96 95 97 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 98 { 97 ALLOC1_INTERFACE ("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire);99 ALLOC1_INTERFACE_BEGIN("retire",OUT,NORTH,_("Retire interface"),_param->_nb_inst_retire); 98 100 99 101 ALLOC1_SIGNAL_IN ( in_RETIRE_VAL ,"VAL" ,Tcontrol_t ,1); … … 105 107 ALLOC1_SIGNAL_OUT(out_RETIRE_REGISTER_TRANSLATION_VAL ,"REGISTER_TRANSLATION_VAL" ,Tcontrol_t ,1); 106 108 ALLOC1_SIGNAL_IN ( in_RETIRE_REGISTER_TRANSLATION_ACK ,"REGISTER_TRANSLATION_ACK" ,Tcontrol_t ,1); 109 110 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 107 111 } 112 108 113 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 114 { 110 ALLOC2_INTERFACE ("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]);115 ALLOC2_INTERFACE_BEGIN("spr_read",IN ,NORTH,_("SPR read"),_param->_nb_front_end,_param->_nb_context[it1]); 111 116 112 117 _ALLOC2_SIGNAL_IN ( in_SPR_READ_SR ,"SR" ,Tspr_t ,_param->_size_spr,_param->_nb_front_end,_param->_nb_context[it1]); 118 119 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 113 120 } 114 121 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-min.cfg
r110 r112 19 19 1 1 +1 # nb_reg_free 20 20 1 1 +1 # nb_bank 21 1 1 +1 # size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_1a.cfg
r110 r112 19 19 2 2 +1 # nb_reg_free 20 20 4 8 *2 # nb_bank 21 4 4 +1 # size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4a.cfg
r110 r112 22 22 2 2 +1 # nb_reg_free 23 23 8 8 *2 # nb_bank 24 4 4 +1 # size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/config-thread_4b.cfg
r110 r112 25 25 2 2 +1 # nb_reg_free 26 26 8 8 *2 # nb_bank 27 4 4 +1 # size_read_counter -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/src/main.cpp
r110 r112 8 8 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/SelfTest/include/test.h" 9 9 10 #define NB_PARAMS 1 410 #define NB_PARAMS 13 11 11 12 12 void usage (int argc, char * argv[]) … … 33 33 err (_(" * nb_reg_free (uint32_t )\n")); 34 34 err (_(" * nb_bank (uint32_t )\n")); 35 err (_(" * size_read_counter (uint32_t )\n"));35 // err (_(" * size_read_counter (uint32_t )\n")); 36 36 37 37 exit (1); … … 103 103 uint32_t _nb_reg_free = fromString<uint32_t >(argv[x++]); 104 104 uint32_t _nb_bank = fromString<uint32_t >(argv[x++]); 105 uint32_t _size_read_counter = fromString<uint32_t >(argv[x++]);105 // uint32_t _size_read_counter = fromString<uint32_t >(argv[x++]); 106 106 107 107 int _return = EXIT_SUCCESS; … … 128 128 _nb_reg_free , 129 129 _nb_bank , 130 _size_read_counter ,130 // _size_read_counter , 131 131 true //is_toplevel 132 132 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/include/Parameters.h
r110 r112 47 47 public : uint32_t _nb_reg_free ; 48 48 public : uint32_t _nb_bank ; 49 public : uint32_t _size_read_counter ;49 // public : uint32_t _size_read_counter ; 50 50 51 51 //public : uint32_t _size_front_end_id ; … … 87 87 uint32_t nb_reg_free , 88 88 uint32_t nb_bank , 89 uint32_t size_read_counter ,89 // uint32_t size_read_counter , 90 90 bool is_toplevel=false 91 91 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters.cpp
r110 r112 38 38 uint32_t nb_reg_free , 39 39 uint32_t nb_bank , 40 uint32_t size_read_counter ,40 // uint32_t size_read_counter , 41 41 bool is_toplevel) 42 42 { … … 61 61 _nb_reg_free = nb_reg_free ; 62 62 _nb_bank = nb_bank ; 63 _size_read_counter = size_read_counter ;63 // _size_read_counter = size_read_counter ; 64 64 65 65 uint32_t size_special_register = log2(_nb_special_register); … … 91 91 _nb_inst_retire , 92 92 _nb_reg_free , 93 _nb_bank ,94 _size_read_counter93 _nb_bank // , 94 // _size_read_counter 95 95 ); 96 96 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Parameters_print.cpp
r88 r112 39 39 xml.singleton_begin("nb_reg_free "); xml.attribut("value",toString(_nb_reg_free )); xml.singleton_end(); 40 40 xml.singleton_begin("nb_bank "); xml.attribut("value",toString(_nb_bank )); xml.singleton_end(); 41 xml.singleton_begin("size_read_counter "); xml.attribut("value",toString(_size_read_counter )); xml.singleton_end();41 // xml.singleton_begin("size_read_counter "); xml.attribut("value",toString(_size_read_counter )); xml.singleton_end(); 42 42 43 43 for (uint32_t i=0;i<_nb_front_end; i++) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/src/Rename_unit_allocation.cpp
r108 r112 58 58 // ~~~~~[ Interface : "rename_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC2_INTERFACE ("rename_in", IN, EAST, "output of decod's stage", _param->_nb_front_end, _param->_nb_inst_decod[it1]);60 ALLOC2_INTERFACE_BEGIN("rename_in", IN, EAST, _("output of decod's stage"), _param->_nb_front_end, _param->_nb_inst_decod[it1]); 61 61 62 62 _ALLOC2_VALACK_IN ( in_RENAME_IN_VAL ,VAL, _param->_nb_front_end, _param->_nb_inst_decod[it1]); … … 87 87 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION_USE ,"exception_use",Texception_t ,_param->_size_exception_use , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 88 88 _ALLOC2_SIGNAL_IN ( in_RENAME_IN_EXCEPTION ,"exception" ,Texception_t ,_param->_size_exception , _param->_nb_front_end, _param->_nb_inst_decod[it1]); 89 90 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_inst_decod[it1]); 89 91 } 90 92 91 93 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 92 94 { 93 ALLOC1_INTERFACE ("insert",OUT,WEST , "Instruction with physical register", _param->_nb_inst_insert);95 ALLOC1_INTERFACE_BEGIN("insert",OUT,WEST , _("Instruction with physical register"), _param->_nb_inst_insert); 94 96 95 97 ALLOC1_VALACK_OUT(out_INSERT_VAL ,VAL); … … 129 131 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ); 130 132 ALLOC1_SIGNAL_OUT(out_INSERT_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ); 133 134 ALLOC1_INTERFACE_END(_param->_nb_inst_insert); 131 135 } 132 136 133 137 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 134 138 { 135 ALLOC1_INTERFACE ("retire",IN ,NORTH, "Retire instruction, update renaming structure.", _param->_nb_inst_retire);139 ALLOC1_INTERFACE_BEGIN("retire",IN ,NORTH, _("Retire instruction, update renaming structure."), _param->_nb_inst_retire); 136 140 137 141 ALLOC1_VALACK_IN ( in_RETIRE_VAL ,VAL); … … 159 163 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_OLD ,"num_reg_re_phy_old" ,Tspecial_address_t,_param->_size_special_register ); 160 164 ALLOC1_SIGNAL_IN ( in_RETIRE_NUM_REG_RE_PHY_NEW ,"num_reg_re_phy_new" ,Tspecial_address_t,_param->_size_special_register ); 165 166 ALLOC1_INTERFACE_END(_param->_nb_inst_retire); 161 167 } 162 168 163 169 // ~~~~~[ Interface : "retire_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 164 170 { 165 ALLOC2_INTERFACE ("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]);171 ALLOC2_INTERFACE_BEGIN("retire_event", IN,NORTH, _("Retire event"), _param->_nb_front_end, _param->_nb_context[it1]); 166 172 167 173 _ALLOC2_VALACK_IN ( in_RETIRE_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); 168 174 _ALLOC2_VALACK_OUT(out_RETIRE_EVENT_ACK ,ACK,_param->_nb_front_end, _param->_nb_context[it1]); 169 175 _ALLOC2_SIGNAL_IN ( in_RETIRE_EVENT_STATE ,"state" ,Tevent_state_t ,_param->_size_event_state, _param->_nb_front_end, _param->_nb_context[it1]); 176 177 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 170 178 } 171 179 172 180 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 173 181 { 174 ALLOC2_INTERFACE ("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]);182 ALLOC2_INTERFACE_BEGIN("spr_read", IN,NORTH, _("Special register"), _param->_nb_front_end, _param->_nb_context[it1]); 175 183 176 184 _ALLOC2_SIGNAL_IN (in_SPR_READ_SR ,"sr",Tspr_t ,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]); 185 186 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 177 187 } 178 188 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/configuration.cfg
r111 r112 51 51 1 1 +1 # nb_reg_free [0] [nb_rename_unit] 52 52 1 1 +1 # nb_rename_unit_bank [0] [nb_rename_unit] 53 1 1 +1 # size_read_counter [0] [nb_rename_unit]54 53 1 1 +1 # nb_load_store_queue [0] [nb_rename_unit] 55 54 2 2 +1 # size_store_queue [0][0] [nb_rename_unit][nb_load_store_queue] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/main.cpp
r111 r112 67 67 err (_(" * nb_reg_free [nb_rename_unit] (uint32_t )\n")); 68 68 err (_(" * nb_rename_unit_bank [nb_rename_unit] (uint32_t )\n")); 69 err (_(" * size_read_counter [nb_rename_unit] (uint32_t )\n"));69 // err (_(" * size_read_counter [nb_rename_unit] (uint32_t )\n")); 70 70 err (_(" * nb_load_store_queue [nb_rename_unit] (uint32_t )\n")); 71 71 err (_(" * size_store_queue [nb_rename_unit][nb_load_store_queue] (uint32_t )\n")); … … 110 110 _nb_inst_decod [i] = fromString<uint32_t>(argv[x++]); 111 111 112 if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+1 2*_nb_rename_unit+_nb_execute_loop))112 if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop)) 113 113 usage (argc, argv); 114 114 … … 160 160 } 161 161 162 if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+1 1*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue))162 if (argc <= static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue)) 163 163 usage (argc, argv); 164 164 … … 195 195 uint32_t * _nb_reg_free = new uint32_t [_nb_rename_unit]; 196 196 uint32_t * _nb_rename_unit_bank = new uint32_t [_nb_rename_unit]; 197 uint32_t * _size_read_counter = new uint32_t [_nb_rename_unit];197 // uint32_t * _size_read_counter = new uint32_t [_nb_rename_unit]; 198 198 uint32_t * _nb_load_store_queue = new uint32_t [_nb_rename_unit]; 199 199 … … 212 212 for (uint32_t i=0; i<_nb_rename_unit; i++) 213 213 _nb_rename_unit_bank [i] = fromString<uint32_t >(argv[x++]); 214 for (uint32_t i=0; i<_nb_rename_unit; i++)215 _size_read_counter [i] = fromString<uint32_t >(argv[x++]);214 // for (uint32_t i=0; i<_nb_rename_unit; i++) 215 // _size_read_counter [i] = fromString<uint32_t >(argv[x++]); 216 216 for (uint32_t i=0; i<_nb_rename_unit; i++) 217 217 { … … 220 220 } 221 221 222 if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+1 1*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue))222 if (argc != static_cast<int>(2+NB_PARAMS+3*_nb_front_end+2*_sum_nb_context+10*_nb_rename_unit+_nb_execute_loop+_nb_rename_unit*_nb_inst_issue+12*_nb_inst_issue+3*_sum_nb_load_store_queue)) 223 223 usage (argc, argv); 224 224 … … 327 327 _nb_reg_free , 328 328 _nb_rename_unit_bank , 329 _size_read_counter ,329 // _size_read_counter , 330 330 _nb_load_store_queue , 331 331 _size_store_queue , … … 391 391 392 392 delete [] _nb_load_store_queue ; 393 delete [] _size_read_counter ;393 // delete [] _size_read_counter ; 394 394 delete [] _nb_rename_unit_bank ; 395 395 delete [] _nb_reg_free ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/SelfTest/src/test.cpp
r110 r112 143 143 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION ," in_BRANCH_COMPLETE_MISS_PREDICTION ",Tcontrol_t ,_param->_nb_inst_branch_complete); 144 144 145 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_VAL ,"out_COMMIT_EVENT_VAL ",Tcontrol_t );146 ALLOC _SC_SIGNAL( in_COMMIT_EVENT_ACK ," in_COMMIT_EVENT_ACK ",Tcontrol_t );147 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID ,"out_COMMIT_EVENT_FRONT_END_ID ",Tcontext_t );148 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID ,"out_COMMIT_EVENT_CONTEXT_ID ",Tcontext_t );149 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_DEPTH ,"out_COMMIT_EVENT_DEPTH ",Tdepth_t );150 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_TYPE ,"out_COMMIT_EVENT_TYPE ",Tevent_type_t );151 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT ,"out_COMMIT_EVENT_IS_DELAY_SLOT ",Tcontrol_t );152 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS ,"out_COMMIT_EVENT_ADDRESS ",Taddress_t );153 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL ",Tcontrol_t );154 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR ,"out_COMMIT_EVENT_ADDRESS_EPCR ",Taddress_t );155 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL ",Tcontrol_t );156 ALLOC _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR ,"out_COMMIT_EVENT_ADDRESS_EEAR ",Tgeneral_data_t );145 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_VAL ,"out_COMMIT_EVENT_VAL ",Tcontrol_t ); 146 ALLOC0_SC_SIGNAL( in_COMMIT_EVENT_ACK ," in_COMMIT_EVENT_ACK ",Tcontrol_t ); 147 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID ,"out_COMMIT_EVENT_FRONT_END_ID ",Tcontext_t ); 148 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID ,"out_COMMIT_EVENT_CONTEXT_ID ",Tcontext_t ); 149 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH ,"out_COMMIT_EVENT_DEPTH ",Tdepth_t ); 150 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_TYPE ,"out_COMMIT_EVENT_TYPE ",Tevent_type_t ); 151 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT ,"out_COMMIT_EVENT_IS_DELAY_SLOT ",Tcontrol_t ); 152 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS ,"out_COMMIT_EVENT_ADDRESS ",Taddress_t ); 153 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"out_COMMIT_EVENT_ADDRESS_EPCR_VAL ",Tcontrol_t ); 154 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR ,"out_COMMIT_EVENT_ADDRESS_EPCR ",Taddress_t ); 155 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"out_COMMIT_EVENT_ADDRESS_EEAR_VAL ",Tcontrol_t ); 156 ALLOC0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR ,"out_COMMIT_EVENT_ADDRESS_EEAR ",Tgeneral_data_t ); 157 157 158 158 ALLOC2_SC_SIGNAL( in_EVENT_VAL ," in_EVENT_VAL ",Tcontrol_t ,_param->_nb_front_end,_param->_nb_context[it1]); … … 294 294 INSTANCE1_SC_SIGNAL(_OOO_Engine, in_BRANCH_COMPLETE_MISS_PREDICTION ,_param->_nb_inst_branch_complete); 295 295 296 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_VAL );297 INSTANCE _SC_SIGNAL(_OOO_Engine, in_COMMIT_EVENT_ACK );296 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_VAL ); 297 INSTANCE0_SC_SIGNAL(_OOO_Engine, in_COMMIT_EVENT_ACK ); 298 298 if (_param->_have_port_front_end_id) 299 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID );299 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_FRONT_END_ID ); 300 300 if (_param->_have_port_context_id) 301 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID );301 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_CONTEXT_ID ); 302 302 if (_param->_have_port_depth) 303 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_DEPTH );304 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_TYPE );305 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT );306 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS );307 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL );308 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR );309 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL );310 INSTANCE _SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR );303 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_DEPTH ); 304 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_TYPE ); 305 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_IS_DELAY_SLOT ); 306 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS ); 307 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR_VAL ); 308 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EPCR ); 309 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR_VAL ); 310 INSTANCE0_SC_SIGNAL(_OOO_Engine,out_COMMIT_EVENT_ADDRESS_EEAR ); 311 311 312 312 INSTANCE2_SC_SIGNAL(_OOO_Engine, in_EVENT_VAL ,_param->_nb_front_end,_param->_nb_context[it1]); … … 472 472 DELETE1_SC_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION ,_param->_nb_inst_branch_complete); 473 473 474 DELETE _SC_SIGNAL(out_COMMIT_EVENT_VAL );475 DELETE _SC_SIGNAL( in_COMMIT_EVENT_ACK );476 DELETE _SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID );477 DELETE _SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID );478 DELETE _SC_SIGNAL(out_COMMIT_EVENT_DEPTH );479 DELETE _SC_SIGNAL(out_COMMIT_EVENT_TYPE );480 DELETE _SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT );481 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS );482 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL );483 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR );484 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL );485 DELETE _SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR );474 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_VAL ); 475 DELETE0_SC_SIGNAL( in_COMMIT_EVENT_ACK ); 476 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID ); 477 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID ); 478 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_DEPTH ); 479 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_TYPE ); 480 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT ); 481 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS ); 482 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ); 483 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR ); 484 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ); 485 DELETE0_SC_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR ); 486 486 487 487 DELETE2_SC_SIGNAL( in_EVENT_VAL ,_param->_nb_front_end,_param->_nb_context[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_allocation.cpp
r101 r112 58 58 // ~~~~~[ Interface : "spr_access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 59 { 60 ALLOC1_INTERFACE ("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute);60 ALLOC1_INTERFACE_BEGIN("spr_access",IN,WEST, _("Access from reexecute_unit"), _param->_nb_inst_reexecute); 61 61 62 62 ALLOC1_VALACK_IN ( in_SPR_ACCESS_VAL ,VAL); … … 70 70 ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_RDATA ,"rdata" ,Tspr_t ,_param->_size_spr); 71 71 ALLOC1_SIGNAL_OUT(out_SPR_ACCESS_INVALID ,"invalid" ,Tcontrol_t ,1); 72 73 ALLOC1_INTERFACE_END(_param->_nb_inst_reexecute); 72 74 } 73 75 74 76 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 75 77 { 76 ALLOC2_INTERFACE ("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]);78 ALLOC2_INTERFACE_BEGIN("spr_read",OUT,WEST, _("Output for a spr bit field."), _param->_nb_front_end, _param->_nb_context[it1]); 77 79 78 80 _ALLOC2_SIGNAL_OUT(out_SPR_READ_SR ,"sr",Tspr_t,_param->_size_spr, _param->_nb_front_end, _param->_nb_context[it1]); 81 82 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 79 83 } 80 84 81 85 // ~~~~~[ Interface : "spr_commit" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 82 86 { 83 ALLOC2_INTERFACE ("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]);87 ALLOC2_INTERFACE_BEGIN("spr_commit",IN,WEST, _("Commit instruction to change SR's flags."), _param->_nb_front_end, _param->_nb_context[it1]); 84 88 85 89 _ALLOC2_VALACK_IN ( in_SPR_COMMIT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); … … 91 95 _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV_VAL ,"sr_ov_val" ,Tcontrol_t ,1,_param->_nb_front_end, _param->_nb_context[it1]); 92 96 _ALLOC2_SIGNAL_IN ( in_SPR_COMMIT_SR_OV ,"sr_ov" ,Tcontrol_t ,1,_param->_nb_front_end, _param->_nb_context[it1]); 97 98 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 93 99 } 94 100 95 101 // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 102 { 97 ALLOC2_INTERFACE ("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]);103 ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST, _("Event change a lot of exception."), _param->_nb_front_end, _param->_nb_context[it1]); 98 104 99 105 _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL ,VAL,_param->_nb_front_end, _param->_nb_context[it1]); … … 104 110 _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX ,"SR_DSX" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 105 111 _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR ,"SR_TO_ESR" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 112 113 ALLOC2_INTERFACE_END(_param->_nb_front_end, _param->_nb_context[it1]); 106 114 } 107 115 … … 109 117 { 110 118 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 internal_SPR_ACCESS_ACK = new Tcontrol_t [_param->_nb_inst_reexecute]; 112 internal_SPR_COMMIT_ACK = new Tcontrol_t * [_param->_nb_front_end]; 113 internal_SPR_EVENT_ACK = new Tcontrol_t * [_param->_nb_front_end]; 114 for (uint32_t i=0; i<_param->_nb_front_end; i++) 115 { 116 internal_SPR_COMMIT_ACK [i] = new Tcontrol_t [_param->_nb_context [i]]; 117 internal_SPR_EVENT_ACK [i] = new Tcontrol_t [_param->_nb_context [i]]; 118 } 119 ALLOC1(internal_SPR_ACCESS_ACK ,Tcontrol_t,_param->_nb_inst_reexecute); 120 ALLOC2(internal_SPR_COMMIT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]); 121 ALLOC2(internal_SPR_EVENT_ACK ,Tcontrol_t,_param->_nb_front_end,_param->_nb_context [it1]); 119 122 } 120 123 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Special_Register_unit/src/Special_Register_unit_deallocation.cpp
r98 r112 59 59 60 60 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 61 delete [] internal_SPR_ACCESS_ACK; 62 for (uint32_t i=0; i<_param->_nb_front_end; i++) 63 { 64 delete [] internal_SPR_COMMIT_ACK [i]; 65 delete [] internal_SPR_EVENT_ACK [i]; 66 } 67 delete [] internal_SPR_COMMIT_ACK; 68 delete [] internal_SPR_EVENT_ACK; 61 DELETE1(internal_SPR_ACCESS_ACK ,_param->_nb_inst_reexecute); 62 DELETE2(internal_SPR_COMMIT_ACK ,_param->_nb_front_end,_param->_nb_context [it1]); 63 DELETE2(internal_SPR_EVENT_ACK ,_param->_nb_front_end,_param->_nb_context [it1]); 69 64 } 70 65 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/include/Parameters.h
r111 r112 76 76 public : uint32_t * _nb_reg_free ;//[nb_rename_unit] 77 77 public : uint32_t * _nb_rename_unit_bank ;//[nb_rename_unit] 78 public : uint32_t * _size_read_counter ;//[nb_rename_unit]78 // public : uint32_t * _size_read_counter ;//[nb_rename_unit] 79 79 public : uint32_t * _nb_load_store_queue ;//[nb_rename_unit] 80 80 public : uint32_t ** _size_store_queue ;//[nb_rename_unit][nb_load_store_queue] … … 173 173 uint32_t * nb_reg_free ,//[nb_rename_unit] 174 174 uint32_t * nb_rename_unit_bank ,//[nb_rename_unit] 175 uint32_t * size_read_counter ,//[nb_rename_unit]175 // uint32_t * size_read_counter ,//[nb_rename_unit] 176 176 uint32_t * nb_load_store_queue ,//[nb_rename_unit] 177 177 uint32_t ** size_store_queue ,//[nb_rename_unit][nb_load_store_queue] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_allocation.cpp
r109 r112 55 55 // ~~~~~[ Interface : "rename" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 56 { 57 ALLOC2_INTERFACE ("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]);57 ALLOC2_INTERFACE_BEGIN("rename",IN,WEST,_("Instruction from front_end."),_param->_nb_front_end,_param->_nb_inst_decod[it1]); 58 58 59 59 _ALLOC2_VALACK_IN ( in_RENAME_VAL , VAL ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); … … 84 84 _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION_USE ,"EXCEPTION_USE" ,Texception_t ,_param->_size_exception_use ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 85 85 _ALLOC2_SIGNAL_IN ( in_RENAME_EXCEPTION ,"EXCEPTION" ,Texception_t ,_param->_size_exception ,_param->_nb_front_end,_param->_nb_inst_decod[it1]); 86 87 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_inst_decod[it1]); 86 88 } 87 89 88 90 // ~~~~~[ Interface : "issue" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 89 91 { 90 ALLOC1_INTERFACE ("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue);92 ALLOC1_INTERFACE_BEGIN("issue",OUT,EAST,_("Instruction to execute_loop"),_param->_nb_inst_issue); 91 93 92 94 ALLOC1_VALACK_OUT (out_ISSUE_VAL , VAL ); … … 111 113 ALLOC1_SIGNAL_OUT (out_ISSUE_WRITE_RE ,"WRITE_RE" ,Tcontrol_t ,1 ); 112 114 ALLOC1_SIGNAL_OUT (out_ISSUE_NUM_REG_RE ,"NUM_REG_RE" ,Tspecial_address_t,_param->_size_special_register ); 115 116 ALLOC1_INTERFACE_END(_param->_nb_inst_issue); 113 117 } 114 118 115 119 // ~~~~~[ Interface "execute_loop" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 120 { 117 ALLOC2_INTERFACE ("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]);121 ALLOC2_INTERFACE_BEGIN("execute_loop",IN,EAST,_("Instruction executed, from execute_loop."),_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 118 122 119 123 _ALLOC2_VALACK_IN ( in_EXECUTE_LOOP_VAL , VAL ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); … … 129 133 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 130 134 _ALLOC2_SIGNAL_IN ( in_EXECUTE_LOOP_DATA ,"DATA" ,Tgeneral_data_t ,_param->_size_general_data ,_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 135 136 ALLOC2_INTERFACE_END(_param->_nb_execute_loop,_param->_nb_inst_execute[it1]); 131 137 } 132 138 133 139 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 134 140 { 135 ALLOC1_INTERFACE ("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert);141 ALLOC1_INTERFACE_BEGIN("insert",OUT,EAST,_("Interface with RegisterFile's stat-list (insert Re-Order-Buffer)."),_param->_sum_inst_insert); 136 142 137 143 ALLOC1_VALACK_OUT (out_INSERT_VAL , VAL); … … 141 147 ALLOC1_SIGNAL_OUT (out_INSERT_RE_USE ,"RE_USE" ,Tcontrol_t ,1 ); 142 148 ALLOC1_SIGNAL_OUT (out_INSERT_RE_NUM_REG ,"RE_NUM_REG" ,Tspecial_address_t,_param->_size_special_register ); 149 150 ALLOC1_INTERFACE_END(_param->_sum_inst_insert); 143 151 } 144 152 145 153 // // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 146 154 // { 147 // ALLOC1_INTERFACE ("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire);155 // ALLOC1_INTERFACE_BEGIN("retire",OUT,EAST,_("Interface with RegisterFile's stat-list (retire Re-Order-Buffer)."),_param->_sum_inst_retire); 148 156 149 157 // ALLOC1_VALACK_OUT (out_RETIRE_VAL , VAL); … … 157 165 // ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_USE ,"RE_NEW_USE" ,Tcontrol_t ,1 ); 158 166 // ALLOC1_SIGNAL_OUT (out_RETIRE_RE_NEW_NUM_REG ,"RE_NEW_NUM_REG" ,Tspecial_address_t,_param->_size_special_register ); 167 168 // ALLOC1_INTERFACE_END(_param->_sum_inst_retire); 159 169 // } 160 170 161 171 // ~~~~~[ Interface : "branch_complete" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 162 172 { 163 ALLOC1_INTERFACE ("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete);173 ALLOC1_INTERFACE_BEGIN("branch_complete",OUT,WEST,_("Instruction to execute_loop"),_param->_nb_inst_branch_complete); 164 174 165 175 ALLOC1_VALACK_OUT (out_BRANCH_COMPLETE_VAL , VAL); … … 171 181 ALLOC1_SIGNAL_OUT (out_BRANCH_COMPLETE_NO_SEQUENCE ,"NO_SEQUENCE" ,Tcontrol_t ,1 ); 172 182 ALLOC1_SIGNAL_IN ( in_BRANCH_COMPLETE_MISS_PREDICTION ,"MISS_PREDICTION" ,Tcontrol_t ,1 ); 183 184 ALLOC1_INTERFACE_END(_param->_nb_inst_branch_complete); 173 185 } 174 186 175 187 // ~~~~~[ Interface : "commit_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 176 188 { 177 ALLOC_INTERFACE("commit_event",OUT,WEST,_("Commit an event (exception).")); 178 179 ALLOC_VALACK_OUT (out_COMMIT_EVENT_VAL , VAL); 180 ALLOC_VALACK_IN ( in_COMMIT_EVENT_ACK , ACK); 181 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id ); 182 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id ); 183 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_DEPTH ,"DEPTH" ,Tdepth_t ,_param->_size_depth ); 184 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_TYPE ,"TYPE" ,Tevent_type_t ,_param->_size_event_type ); 185 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ); 186 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address ); 187 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"ADDRESS_EPCR_VAL" ,Tcontrol_t ,1 ); 188 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_ADDRESS_EPCR ,"ADDRESS_EPCR" ,Taddress_t ,_param->_size_instruction_address ); 189 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1 ); 190 ALLOC_SIGNAL_OUT (out_COMMIT_EVENT_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data ); 189 ALLOC0_INTERFACE_BEGIN("commit_event",OUT,WEST,_("Commit an event (exception).")); 190 191 ALLOC0_VALACK_OUT(out_COMMIT_EVENT_VAL , VAL); 192 ALLOC0_VALACK_IN ( in_COMMIT_EVENT_ACK , ACK); 193 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_FRONT_END_ID ,"FRONT_END_ID" ,Tcontext_t ,_param->_size_front_end_id ); 194 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_CONTEXT_ID ,"CONTEXT_ID" ,Tcontext_t ,_param->_size_context_id ); 195 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_DEPTH ,"DEPTH" ,Tdepth_t ,_param->_size_depth ); 196 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_TYPE ,"TYPE" ,Tevent_type_t ,_param->_size_event_type ); 197 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_IS_DELAY_SLOT ,"IS_DELAY_SLOT" ,Tcontrol_t ,1 ); 198 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS ,"ADDRESS" ,Taddress_t ,_param->_size_instruction_address ); 199 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,"ADDRESS_EPCR_VAL" ,Tcontrol_t ,1 ); 200 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EPCR ,"ADDRESS_EPCR" ,Taddress_t ,_param->_size_instruction_address ); 201 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,"ADDRESS_EEAR_VAL" ,Tcontrol_t ,1 ); 202 ALLOC0_SIGNAL_OUT(out_COMMIT_EVENT_ADDRESS_EEAR ,"ADDRESS_EEAR" ,Tgeneral_data_t ,_param->_size_general_data ); 203 204 ALLOC0_INTERFACE_END(); 191 205 } 192 206 193 207 // ~~~~~[ Interface "event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 208 { 195 ALLOC2_INTERFACE ("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]);209 ALLOC2_INTERFACE_BEGIN("event",IN,WEST,_("Event from context_state."),_param->_nb_front_end,_param->_nb_context[it1]); 196 210 197 211 _ALLOC2_VALACK_IN ( in_EVENT_VAL , VAL ,_param->_nb_front_end,_param->_nb_context[it1]); … … 201 215 _ALLOC2_SIGNAL_IN ( in_EVENT_ADDRESS_NEXT_VAL ,"ADDRESS_NEXT_VAL" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 202 216 _ALLOC2_SIGNAL_IN ( in_EVENT_IS_DS_TAKE ,"IS_DS_TAKE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 217 218 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 203 219 } 204 220 205 221 // ~~~~~[ Interface "spr_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 206 222 { 207 ALLOC2_INTERFACE ("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]);223 ALLOC2_INTERFACE_BEGIN("spr_event",IN,WEST,_("Exception : save spr and set a lot of special register."),_param->_nb_front_end,_param->_nb_context[it1]); 208 224 209 225 _ALLOC2_VALACK_IN ( in_SPR_EVENT_VAL , VAL ,_param->_nb_front_end,_param->_nb_context[it1]); … … 214 230 _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_DSX ,"SR_DSX" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 215 231 _ALLOC2_SIGNAL_IN ( in_SPR_EVENT_SR_TO_ESR ,"SR_TO_ESR" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 232 233 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 216 234 } 217 235 218 236 // ~~~~~[ Interface : "nb_inst" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 237 { 220 ALLOC2_INTERFACE ("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]);238 ALLOC2_INTERFACE_BEGIN("nb_inst",OUT,WEST,_("Internal number instruction."),_param->_nb_front_end,_param->_nb_context[it1]); 221 239 222 240 _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_ALL ,"COMMIT_ALL" ,Tcounter_t ,_param->_size_nb_inst_commit ,_param->_nb_front_end,_param->_nb_context[it1]); 223 241 _ALLOC2_SIGNAL_OUT(out_NB_INST_COMMIT_MEM ,"COMMIT_MEM" ,Tcounter_t ,_param->_size_nb_inst_commit ,_param->_nb_front_end,_param->_nb_context[it1]); 224 242 _ALLOC2_SIGNAL_IN ( in_NB_INST_DECOD_ALL ,"DECOD_ALL" ,Tcounter_t ,_param->_size_nb_inst_decod ,_param->_nb_front_end,_param->_nb_context[it1]); 243 244 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 225 245 } 226 246 227 247 // ~~~~~[ Interface : "depth" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 228 248 { 229 ALLOC2_INTERFACE ("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]);249 ALLOC2_INTERFACE_BEGIN("depth",IN,WEST,_("Interface with Prediction unit."),_param->_nb_front_end, _param->_nb_context[it1]); 230 250 231 251 _ALLOC2_SIGNAL_IN ( in_DEPTH_MIN ,"MIN" ,Tdepth_t ,_param->_size_depth ,_param->_nb_front_end, _param->_nb_context[it1]); 232 252 _ALLOC2_SIGNAL_IN ( in_DEPTH_MAX ,"MAX" ,Tdepth_t ,_param->_size_depth ,_param->_nb_front_end, _param->_nb_context[it1]); 233 253 _ALLOC2_SIGNAL_IN ( in_DEPTH_FULL ,"FULL" ,Tcontrol_t ,1 ,_param->_nb_front_end, _param->_nb_context[it1]); 254 255 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 234 256 } 235 257 236 258 // ~~~~~[ Interface : "spr" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 237 259 { 238 ALLOC2_INTERFACE ("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]);260 ALLOC2_INTERFACE_BEGIN("spr",OUT,WEST,_("SPR"),_param->_nb_front_end,_param->_nb_context[it1]); 239 261 240 262 _ALLOC2_SIGNAL_OUT(out_SPR_SR_IEE ,"SR_IEE" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 241 263 _ALLOC2_SIGNAL_OUT(out_SPR_SR_EPH ,"SR_EPH" ,Tcontrol_t ,1 ,_param->_nb_front_end,_param->_nb_context[it1]); 264 265 ALLOC2_INTERFACE_END(_param->_nb_front_end,_param->_nb_context[it1]); 242 266 } 243 267 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/OOO_Engine_deallocation.cpp
r108 r112 117 117 DELETE1_SIGNAL( in_BRANCH_COMPLETE_MISS_PREDICTION ,_param->_nb_inst_branch_complete,1 ); 118 118 119 DELETE _SIGNAL(out_COMMIT_EVENT_VAL , 1);120 DELETE _SIGNAL( in_COMMIT_EVENT_ACK , 1);121 DELETE _SIGNAL(out_COMMIT_EVENT_FRONT_END_ID ,_param->_size_front_end_id );122 DELETE _SIGNAL(out_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id );123 DELETE _SIGNAL(out_COMMIT_EVENT_DEPTH ,_param->_size_depth );124 DELETE _SIGNAL(out_COMMIT_EVENT_TYPE ,_param->_size_event_type );125 DELETE _SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT ,1 );126 DELETE _SIGNAL(out_COMMIT_EVENT_ADDRESS ,_param->_size_general_data );127 DELETE _SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,1 );128 DELETE _SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_general_data );129 DELETE _SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,1 );130 DELETE _SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR ,_param->_size_general_data );119 DELETE0_SIGNAL(out_COMMIT_EVENT_VAL , 1); 120 DELETE0_SIGNAL( in_COMMIT_EVENT_ACK , 1); 121 DELETE0_SIGNAL(out_COMMIT_EVENT_FRONT_END_ID ,_param->_size_front_end_id ); 122 DELETE0_SIGNAL(out_COMMIT_EVENT_CONTEXT_ID ,_param->_size_context_id ); 123 DELETE0_SIGNAL(out_COMMIT_EVENT_DEPTH ,_param->_size_depth ); 124 DELETE0_SIGNAL(out_COMMIT_EVENT_TYPE ,_param->_size_event_type ); 125 DELETE0_SIGNAL(out_COMMIT_EVENT_IS_DELAY_SLOT ,1 ); 126 DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS ,_param->_size_general_data ); 127 DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR_VAL ,1 ); 128 DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EPCR ,_param->_size_general_data ); 129 DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR_VAL ,1 ); 130 DELETE0_SIGNAL(out_COMMIT_EVENT_ADDRESS_EEAR ,_param->_size_general_data ); 131 131 132 132 DELETE2_SIGNAL( in_EVENT_VAL ,_param->_nb_front_end,_param->_nb_context[it1],1 ); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters.cpp
r111 r112 63 63 uint32_t * nb_reg_free ,//[nb_rename_unit] 64 64 uint32_t * nb_rename_unit_bank ,//[nb_rename_unit] 65 uint32_t * size_read_counter ,//[nb_rename_unit]65 // uint32_t * size_read_counter ,//[nb_rename_unit] 66 66 uint32_t * nb_load_store_queue ,//[nb_rename_unit] 67 67 uint32_t ** size_store_queue ,//[nb_rename_unit][nb_load_store_queue] … … 119 119 _nb_reg_free = nb_reg_free ; 120 120 _nb_rename_unit_bank = nb_rename_unit_bank ; 121 _size_read_counter = size_read_counter ;121 // _size_read_counter = size_read_counter ; 122 122 _nb_load_store_queue = nb_load_store_queue ; 123 123 _size_store_queue = size_store_queue ; … … 238 238 _nb_special_register [i], 239 239 _nb_reg_free [i], 240 _nb_rename_unit_bank [i], 241 _size_read_counter [i] 240 _nb_rename_unit_bank [i]// , 241 // _size_read_counter [i] 242 242 243 ); 243 244 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/src/Parameters_print.cpp
r97 r112 81 81 for (uint32_t i=0; i<_nb_rename_unit; ++i) 82 82 str+= toString(MSG_INFORMATION)+" * nb_rename_unit_bank ["+toString(i)+"] : "+toString<uint32_t >(_nb_rename_unit_bank [i])+"\n";//[nb_rename_unit] 83 for (uint32_t i=0; i<_nb_rename_unit; ++i)84 str+= toString(MSG_INFORMATION)+" * size_read_counter ["+toString(i)+"] : "+toString<uint32_t >(_size_read_counter [i])+"\n";//[nb_rename_unit]83 // for (uint32_t i=0; i<_nb_rename_unit; ++i) 84 // str+= toString(MSG_INFORMATION)+" * size_read_counter ["+toString(i)+"] : "+toString<uint32_t >(_size_read_counter [i])+"\n";//[nb_rename_unit] 85 85 for (uint32_t i=0; i<_nb_rename_unit; ++i) 86 86 str+= toString(MSG_INFORMATION)+" * nb_load_store_queue ["+toString(i)+"] : "+toString<uint32_t >(_nb_load_store_queue [i])+"\n";//[nb_rename_unit] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-min.cfg
r111 r112 25 25 1 1 +1 # nb_reg_free [0] [nb_rename_bloc] 26 26 1 1 +1 # nb_rename_unit_bank [0] [nb_rename_bloc] 27 1 1 +1 # size_read_counter [0] [nb_rename_bloc]28 27 1 1 +1 # nb_read_bloc 29 28 1 1 +1 # size_read_queue [0] [nb_read_bloc] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/config-w1a.cfg
r111 r112 25 25 1 1 +1 # nb_reg_free [0] [nb_rename_bloc] 26 26 1 1 +1 # nb_rename_unit_bank [0] [nb_rename_bloc] 27 4 4 +1 # size_read_counter [0] [nb_rename_bloc]28 27 1 1 +1 # nb_read_bloc 29 28 4 4 +1 # size_read_queue [0] [nb_read_bloc] -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/SelfTest/src/main.cpp
r111 r112 45 45 err (_(" * nb_reg_free [nb_rename_bloc] (uint32_t )\n")); 46 46 err (_(" * nb_rename_unit_bank [nb_rename_bloc] (uint32_t )\n")); 47 err (_(" * size_read_counter [nb_rename_bloc] (uint32_t )\n"));47 // err (_(" * size_read_counter [nb_rename_bloc] (uint32_t )\n")); 48 48 49 49 err (_(" * nb_read_bloc (uint32_t )\n")); … … 209 209 uint32_t * _nb_reg_free ;//[nb_rename_bloc] 210 210 uint32_t * _nb_rename_unit_bank ;//[nb_rename_bloc] 211 uint32_t * _size_read_counter ;//[nb_rename_bloc]211 // uint32_t * _size_read_counter ;//[nb_rename_bloc] 212 212 213 213 // Read bloc … … 374 374 SELFTEST0(_nb_rename_bloc ,uint32_t ,argv,x); 375 375 376 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc))376 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc)) 377 377 usage (argc, argv); 378 378 … … 386 386 SELFTEST1(_nb_reg_free ,uint32_t ,argv,x,_nb_rename_bloc); 387 387 SELFTEST1(_nb_rename_unit_bank ,uint32_t ,argv,x,_nb_rename_bloc); 388 SELFTEST1(_size_read_counter ,uint32_t ,argv,x,_nb_rename_bloc);388 // SELFTEST1(_size_read_counter ,uint32_t ,argv,x,_nb_rename_bloc); 389 389 390 390 // Read bloc … … 392 392 SELFTEST0(_nb_read_bloc ,uint32_t ,argv,x); 393 393 394 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc))394 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc)) 395 395 usage (argc, argv); 396 396 … … 403 403 SELFTEST0(_nb_write_bloc ,uint32_t ,argv,x); 404 404 405 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc))405 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc)) 406 406 usage (argc, argv); 407 407 … … 414 414 SELFTEST0(_nb_load_store_unit ,uint32_t ,argv,x); 415 415 416 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit))416 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit)) 417 417 usage (argc, argv); 418 418 … … 431 431 SELFTEST0(_nb_functionnal_unit ,uint32_t ,argv,x); 432 432 433 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit))433 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit)) 434 434 usage (argc, argv); 435 435 … … 474 474 SELFTEST0(_nb_front_end ,uint32_t ,argv,x); 475 475 476 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end))476 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end)) 477 477 usage (argc, argv); 478 478 … … 501 501 SELFTEST0(_nb_ooo_engine ,uint32_t ,argv,x); 502 502 503 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine))503 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine)) 504 504 usage (argc, argv); 505 505 … … 529 529 SELFTEST0(_nb_execute_loop ,uint32_t ,argv,x); 530 530 531 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+ 10*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))531 if (argc < static_cast<int>(2+NB_PARAMS+5*_nb_thread+6*_nb_decod_bloc+9*_nb_rename_bloc+3*_nb_read_bloc+3*_nb_write_bloc+8*_nb_load_store_unit+1*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop)) 532 532 usage (argc, argv); 533 533 … … 547 547 printf(" * Link\n"); 548 548 549 if (argc < static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+1 1*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop))549 if (argc < static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop)) 550 550 usage (argc, argv); 551 551 … … 601 601 _sum_cache_port += _nb_cache_port[i]; 602 602 603 if (argc != static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+1 1*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop+603 if (argc != static_cast<int>(2+NB_PARAMS+6*_nb_thread+6*_nb_decod_bloc+10*_nb_rename_bloc+4*_nb_read_bloc+4*_nb_write_bloc+9*_nb_load_store_unit+2*_nb_functionnal_unit+31*_nb_front_end+19*_nb_ooo_engine+11*_nb_execute_loop+ 604 604 3*_nb_thread+_nb_front_end+_sum_inst_issue*_nb_read_bloc+_nb_load_store_unit*(_nb_read_bloc+_nb_write_bloc+_nb_thread)+_nb_functionnal_unit*(_nb_read_bloc+_nb_write_bloc)+_sum_cache_port)) 605 605 usage (argc, argv); … … 657 657 _nb_reg_free , 658 658 _nb_rename_unit_bank , 659 _size_read_counter ,659 // _size_read_counter , 660 660 661 661 _nb_read_bloc , -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/include/Parameters.h
r111 r112 69 69 public : uint32_t * _nb_reg_free ;//[nb_rename_bloc] 70 70 public : uint32_t * _nb_rename_unit_bank ;//[nb_rename_bloc] 71 71 //public : uint32_t * _size_read_counter ;//[nb_rename_bloc] 72 72 73 73 // Read bloc … … 250 250 public : uint32_t ** _ooo_engine_nb_reg_free ;//[nb_ooo_engine][nb_rename_unit] 251 251 public : uint32_t ** _ooo_engine_nb_rename_unit_bank ;//[nb_ooo_engine][nb_rename_unit] 252 public : uint32_t ** _ooo_engine_size_read_counter ;//[nb_ooo_engine][nb_rename_unit]252 // public : uint32_t ** _ooo_engine_size_read_counter ;//[nb_ooo_engine][nb_rename_unit] 253 253 public : bool *** _ooo_engine_table_routing ;//[nb_ooo_engine][nb_rename_unit][nb_inst_issue] 254 254 public : bool *** _ooo_engine_table_issue_type ;//[nb_ooo_engine][nb_inst_issue][nb_type] … … 381 381 uint32_t * nb_reg_free ,//[nb_rename_bloc] 382 382 uint32_t * nb_rename_unit_bank ,//[nb_rename_bloc] 383 uint32_t * size_read_counter ,//[nb_rename_bloc]383 // uint32_t * size_read_counter ,//[nb_rename_bloc] 384 384 385 385 // Read bloc -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_allocation.cpp
r108 r112 55 55 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 56 56 { 57 ALLOC1_INTERFACE ("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port);57 ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_param->_nb_icache_port); 58 58 59 59 ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL ,VAL); … … 63 63 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_address_t ,_param->_size_icache_address ); 64 64 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_param->_size_icache_type ); 65 66 ALLOC1_INTERFACE_END(_param->_nb_icache_port); 65 67 } 66 68 67 69 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 70 { 69 ALLOC1_INTERFACE ("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port);71 ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port); 70 72 71 73 ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL ,VAL); … … 74 76 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_icache_packet_id); 75 77 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_param->_size_icache_error); 78 79 ALLOC1_INTERFACE_END(_param->_nb_icache_port); 76 80 } 77 81 { 78 ALLOC2_INTERFACE ("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]);82 ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 79 83 80 84 _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_param->_size_instruction,_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 85 86 ALLOC2_INTERFACE_END(_param->_nb_icache_port,_param->_icache_nb_instruction[it1]); 81 87 } 82 88 83 89 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 84 90 { 85 ALLOC1_INTERFACE ("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port);91 ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_param->_nb_dcache_port); 86 92 87 93 ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL ,VAL); … … 92 98 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_param->_size_dcache_data); 93 99 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_param->_size_dcache_type); 100 101 ALLOC1_INTERFACE_END(_param->_nb_dcache_port); 94 102 } 95 103 96 104 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 97 105 { 98 ALLOC1_INTERFACE ("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port);106 ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_param->_nb_dcache_port); 99 107 100 108 ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL ,VAL); … … 104 112 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_param->_size_dcache_data); 105 113 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t ,_param->_size_dcache_error); 114 115 ALLOC1_INTERFACE_END(_param->_nb_dcache_port); 106 116 } 107 117 108 118 // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 109 119 { 110 ALLOC1_INTERFACE ("interrupt", IN , NORTH, _("Interruption line"),_param->_nb_thread);120 ALLOC1_INTERFACE_BEGIN("interrupt", IN , NORTH, _("Interruption line"),_param->_nb_thread); 111 121 112 122 ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE ,"enable",Tcontrol_t ,1); 123 124 ALLOC1_INTERFACE_END(_param->_nb_thread); 113 125 } 114 126 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Core_deallocation.cpp
r88 r112 59 59 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 60 61 DELETE0(_component_glue); 62 DELETE0(_component_dcache_access); 63 DELETE0(_component_icache_access); 64 DELETE1(_component_execute_loop, _param->_nb_execute_loop); 65 DELETE1(_component_ooo_engine , _param->_nb_ooo_engine); 66 DELETE1(_component_front_end , _param->_nb_front_end); 67 61 68 delete _component; 62 69 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters.cpp
r111 r112 107 107 uint32_t * nb_reg_free ,//[nb_rename_bloc] 108 108 uint32_t * nb_rename_unit_bank ,//[nb_rename_bloc] 109 uint32_t * size_read_counter ,//[nb_rename_bloc]109 // uint32_t * size_read_counter ,//[nb_rename_bloc] 110 110 111 111 // Read bloc … … 262 262 _nb_reg_free = nb_reg_free ; 263 263 _nb_rename_unit_bank = nb_rename_unit_bank ; 264 _size_read_counter = size_read_counter ;264 // _size_read_counter = size_read_counter ; 265 265 266 266 _nb_read_bloc = nb_read_bloc ; … … 974 974 ALLOC2(_ooo_engine_nb_reg_free ,uint32_t ,_nb_ooo_engine,_nb_rename_unit[it1]); 975 975 ALLOC2(_ooo_engine_nb_rename_unit_bank ,uint32_t ,_nb_ooo_engine,_nb_rename_unit[it1]); 976 ALLOC2(_ooo_engine_size_read_counter ,uint32_t ,_nb_ooo_engine,_nb_rename_unit[it1]);976 // ALLOC2(_ooo_engine_size_read_counter ,uint32_t ,_nb_ooo_engine,_nb_rename_unit[it1]); 977 977 978 978 for (uint32_t i=0; i<_nb_ooo_engine; ++i) … … 997 997 _ooo_engine_nb_reg_free [i][j] = _nb_reg_free [num_rename_bloc]; 998 998 _ooo_engine_nb_rename_unit_bank [i][j] = _nb_rename_unit_bank [num_rename_bloc]; 999 _ooo_engine_size_read_counter [i][j] = _size_read_counter [num_rename_bloc];999 // _ooo_engine_size_read_counter [i][j] = _size_read_counter [num_rename_bloc]; 1000 1000 } 1001 1001 } … … 1918 1918 _ooo_engine_nb_reg_free [i], 1919 1919 _ooo_engine_nb_rename_unit_bank [i], 1920 _ooo_engine_size_read_counter [i],1920 // _ooo_engine_size_read_counter [i], 1921 1921 _ooo_engine_nb_load_store_unit [i], 1922 1922 _ooo_engine_size_store_queue [i], … … 2134 2134 DELETE4(_ooo_engine_implement_group ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2],NB_GROUP); 2135 2135 DELETE3(_ooo_engine_link_load_store_unit_with_context ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]); 2136 DELETE3(_ooo_engine_nb_inst_memory ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]); 2136 2137 DELETE3(_ooo_engine_size_load_queue ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]); 2137 2138 DELETE3(_ooo_engine_size_store_queue ,_nb_ooo_engine,_nb_rename_unit[it1],_ooo_engine_nb_load_store_unit[it1][it2]); … … 2142 2143 DELETE3(_ooo_engine_table_routing ,_nb_ooo_engine,_nb_rename_unit[it1],_nb_inst_issue[it1]); 2143 2144 DELETE4(_network_table_dispatch ,_nb_ooo_engine,_nb_inst_issue[it1],_nb_execute_loop,_nb_read_unit[it3]); 2144 DELETE2(_ooo_engine_size_read_counter ,_nb_ooo_engine,_nb_rename_unit[it1]);2145 // DELETE2(_ooo_engine_size_read_counter ,_nb_ooo_engine,_nb_rename_unit[it1]); 2145 2146 DELETE2(_ooo_engine_nb_rename_unit_bank ,_nb_ooo_engine,_nb_rename_unit[it1]); 2146 2147 DELETE2(_ooo_engine_nb_reg_free ,_nb_ooo_engine,_nb_rename_unit[it1]); … … 2151 2152 DELETE2(_ooo_engine_rename_select_priority ,_nb_ooo_engine,_nb_rename_unit[it1]); 2152 2153 DELETE2(_ooo_engine_nb_inst_retire ,_nb_ooo_engine,_nb_rename_unit[it1]); 2154 DELETE1(_ooo_engine_nb_inst_insert_rob ,_nb_ooo_engine); 2153 2155 DELETE2(_ooo_engine_nb_inst_insert ,_nb_ooo_engine,_nb_rename_unit[it1]); 2154 2156 DELETE2(_ooo_engine_link_rename_unit_with_front_end ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]); 2155 2157 DELETE3(_ooo_engine_nb_branch_speculated ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]); 2156 2158 DELETE2(_ooo_engine_nb_inst_execute ,_nb_ooo_engine,_ooo_engine_nb_execute_loop[it1]); 2159 DELETE3(_ooo_engine_translate_num_context_to_num_thread ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1],_ooo_engine_nb_context[it1][it2]); 2157 2160 DELETE2(_ooo_engine_nb_inst_decod ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]); 2158 2161 DELETE2(_ooo_engine_nb_context ,_nb_ooo_engine,_ooo_engine_nb_front_end[it1]); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/src/Parameters_print.cpp
r111 r112 81 81 str+= toString(MSG_INFORMATION)+" * nb_reg_free : "+toString<uint32_t >(_nb_reg_free [i])+"\n"; 82 82 str+= toString(MSG_INFORMATION)+" * nb_rename_unit_bank : "+toString<uint32_t >(_nb_rename_unit_bank [i])+"\n"; 83 str+= toString(MSG_INFORMATION)+" * size_read_counter : "+toString<uint32_t >(_size_read_counter [i])+"\n";83 // str+= toString(MSG_INFORMATION)+" * size_read_counter : "+toString<uint32_t >(_size_read_counter [i])+"\n"; 84 84 } 85 85 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/include/test.h
r81 r112 14 14 #include <iostream> 15 15 16 #include "Common/include/Time.h" 16 17 #include "Behavioural/Generic/Counter/include/Counter.h" 17 18 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/SelfTest/src/test.cpp
r88 r112 80 80 } 81 81 82 Time * _time = new Time(); 83 82 84 /******************************************************** 83 85 * Simulation - Begin … … 147 149 ********************************************************/ 148 150 151 delete _time; 152 149 153 cout << "<" << name << "> ............ Stop Simulation" << endl; 150 154 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Counter/include/Counter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 34 35 , IN 35 36 , SOUTH 36 , "Generalist interface"37 , _("Generalist interface") 37 38 #endif 38 39 ); … … 43 44 44 45 // ~~~~~[ Interface : "counter" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 { 46 in_COUNTER_DATA = new SC_IN (Tdata_t) * [_param._nb_port]; 47 in_COUNTER_ADDSUB= new SC_IN (Tcontrol_t) * [_param._nb_port]; 48 out_COUNTER_DATA = new SC_OUT(Tdata_t) * [_param._nb_port]; 49 50 for (uint32_t i=0; i<_param._nb_port; i++) 51 { 52 Interface_fifo * interface = _interfaces->set_interface("counter_"+toString(i) 53 #ifdef POSITION 54 , IN 55 , SOUTH 56 , "Counter interface" 57 #endif 58 ); 46 { 47 ALLOC1_INTERFACE_BEGIN("counter", IN, SOUTH, _("Counter interface"), _param._nb_port); 59 48 60 in_COUNTER_DATA [i] = interface->set_signal_in <Tdata_t > ("data" , _param._size_data); 61 in_COUNTER_ADDSUB [i] = interface->set_signal_in <Tcontrol_t> ("addsub", 1 ); 62 out_COUNTER_DATA [i] = interface->set_signal_out <Tdata_t > ("data" , _param._size_data); 63 } 64 } 49 ALLOC1_SIGNAL_IN ( in_COUNTER_DATA ,"data" ,Tdata_t ,_param._size_data); 50 ALLOC1_SIGNAL_IN ( in_COUNTER_ADDSUB,"addsub",Tcontrol_t,1 ); 51 ALLOC1_SIGNAL_OUT(out_COUNTER_DATA ,"data" ,Tdata_t ,_param._size_data); 65 52 53 ALLOC1_INTERFACE_END(_param._nb_port); 54 } 55 66 56 #ifdef POSITION 67 57 if (usage_is_set(_usage,USE_POSITION)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Counter/src/Counter_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Counter/include/Counter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 23 24 delete in_NRESET; 24 25 25 delete [] in_COUNTER_DATA;26 delete [] in_COUNTER_ADDSUB;27 delete [] out_COUNTER_DATA;26 DELETE1_SIGNAL( in_COUNTER_DATA , _param._nb_port,_param._size_data); 27 DELETE1_SIGNAL( in_COUNTER_ADDSUB, _param._nb_port,1 ); 28 DELETE1_SIGNAL(out_COUNTER_DATA , _param._nb_port,_param._size_data); 28 29 } 29 30 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Queue/src/Queue_allocation.cpp
r109 r112 49 49 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 50 50 { 51 ALLOC0_INTERFACE ("insert", IN, WEST, _("Interface of data write."));51 ALLOC0_INTERFACE_BEGIN("insert", IN, WEST, _("Interface of data write.")); 52 52 53 53 ALLOC0_VALACK_IN ( in_INSERT_VAL ,VAL); 54 54 ALLOC0_VALACK_OUT(out_INSERT_ACK ,ACK); 55 55 ALLOC0_SIGNAL_IN ( in_INSERT_DATA ,"data",Tdata_t,_param->_size_data); 56 57 ALLOC0_INTERFACE_END(); 56 58 } 57 59 58 60 // ~~~~~[ Interface "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 61 { 60 ALLOC0_INTERFACE ("retire", OUT, EAST, _("Interface of data read."));62 ALLOC0_INTERFACE_BEGIN("retire", OUT, EAST, _("Interface of data read.")); 61 63 62 64 ALLOC0_VALACK_OUT(out_RETIRE_VAL ,VAL); 63 65 ALLOC0_VALACK_IN ( in_RETIRE_ACK ,ACK); 64 66 ALLOC0_SIGNAL_OUT(out_RETIRE_DATA ,"data",Tdata_t,_param->_size_data); 67 68 ALLOC0_INTERFACE_END(); 65 69 } 66 70 67 71 // ~~~~~[ Interface "slot" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 68 72 { 69 ALLOC1_INTERFACE ("slot", OUT, NORTH, _("Internal slot."),_param->_nb_port_slot);73 ALLOC1_INTERFACE_BEGIN("slot", OUT, NORTH, _("Internal slot."),_param->_nb_port_slot); 70 74 71 75 ALLOC1_VALACK_OUT(out_SLOT_VAL ,VAL); 72 76 ALLOC1_SIGNAL_OUT(out_SLOT_DATA ,"data",Tdata_t,_param->_size_data); 77 78 ALLOC1_INTERFACE_END(_param->_nb_port_slot); 73 79 } 74 80 … … 76 82 if (_param->_have_port_ptr) 77 83 { 78 ALLOC0_INTERFACE ("ptr", OUT, SOUTH, _("Internal pointer."));84 ALLOC0_INTERFACE_BEGIN("ptr", OUT, SOUTH, _("Internal pointer.")); 79 85 80 86 if (_param->_have_port_ptr_write) … … 82 88 if (_param->_have_port_ptr_read ) 83 89 ALLOC0_SIGNAL_OUT(out_PTR_READ ,"read" ,Tptr_t,_param->_size_ptr); 90 91 ALLOC0_INTERFACE_END(); 84 92 } 85 93 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_allocation.cpp
r109 r112 7 7 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 33 34 , IN 34 35 ,SOUTH 35 , "Generalist interface"36 ,_("Generalist interface") 36 37 #endif 37 38 ); … … 40 41 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 41 42 } 43 42 44 // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 45 { 46 ALLOC1_INTERFACE_BEGIN("read",IN,WEST,_("Interface Read"),_param->_nb_port_read); 43 47 44 in_READ_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_read]; 45 out_READ_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read]; 46 if (_param->_have_port_address) 47 in_READ_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read]; 48 out_READ_DATA = new SC_OUT(Tdata_t ) * [_param->_nb_port_read]; 48 ALLOC1_VALACK_IN ( in_READ_VAL ,VAL); 49 ALLOC1_VALACK_OUT(out_READ_ACK ,ACK); 50 ALLOC1_SIGNAL_IN ( in_READ_ADDRESS,"address",Taddress_t,_param->_size_address); 51 ALLOC1_SIGNAL_OUT(out_READ_DATA ,"data" ,Tdata_t ,_param->_size_word); 49 52 50 for (uint32_t i=0; i<_param->_nb_port_read; i++) 51 { 52 Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i) 53 #ifdef POSITION 54 , IN 55 ,WEST 56 , "Interface Read" 57 #endif 58 ); 59 60 in_READ_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 61 out_READ_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 62 if (_param->_have_port_address) 63 in_READ_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address); 64 out_READ_DATA [i] = interface->set_signal_out <Tdata_t > ("data" , _param->_size_word); 65 } 53 ALLOC1_INTERFACE_END(_param->_nb_port_read); 54 } 66 55 67 56 // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 57 { 58 ALLOC1_INTERFACE_BEGIN("write",IN,EAST,_("Interface Write"),_param->_nb_port_write); 68 59 69 in_WRITE_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_write]; 70 out_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write]; 71 if (_param->_have_port_address) 72 in_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_write]; 73 in_WRITE_DATA = new SC_IN (Tdata_t ) * [_param->_nb_port_write]; 74 75 for (uint32_t i=0; i<_param->_nb_port_write; i++) 76 { 77 Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i) 78 #ifdef POSITION 79 , IN 80 ,EAST 81 , "Interface Write" 82 #endif 83 ); 60 ALLOC1_VALACK_IN ( in_WRITE_VAL ,VAL); 61 ALLOC1_VALACK_OUT(out_WRITE_ACK ,ACK); 62 ALLOC1_SIGNAL_IN ( in_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address); 63 ALLOC1_SIGNAL_IN ( in_WRITE_DATA ,"data" ,Tdata_t ,_param->_size_word); 84 64 85 in_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 86 out_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 87 if (_param->_have_port_address) 88 in_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address); 89 in_WRITE_DATA [i] = interface->set_signal_in <Tdata_t > ("data" , _param->_size_word); 90 } 65 ALLOC1_INTERFACE_END(_param->_nb_port_write); 66 } 91 67 92 68 // ~~~~~[ Interface : "read_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 69 { 70 ALLOC1_INTERFACE_BEGIN("read_write",IN,WEST,_("Interface Read_Write"),_param->_nb_port_read_write); 93 71 94 in_READ_WRITE_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write]; 95 out_READ_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read_write]; 96 in_READ_WRITE_RW = new SC_IN (Tcontrol_t) * [_param->_nb_port_read_write]; 97 if (_param->_have_port_address) 98 in_READ_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read_write]; 99 in_READ_WRITE_WDATA = new SC_IN (Tdata_t ) * [_param->_nb_port_read_write]; 100 out_READ_WRITE_RDATA = new SC_OUT(Tdata_t ) * [_param->_nb_port_read_write]; 72 ALLOC1_VALACK_IN ( in_READ_WRITE_VAL ,VAL); 73 ALLOC1_VALACK_OUT(out_READ_WRITE_ACK ,ACK); 74 ALLOC1_SIGNAL_IN ( in_READ_WRITE_RW ,"rw" ,Tcontrol_t,1); 75 ALLOC1_SIGNAL_IN ( in_READ_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address); 76 ALLOC1_SIGNAL_IN ( in_READ_WRITE_WDATA ,"wdata" ,Tdata_t ,_param->_size_word); 77 ALLOC1_SIGNAL_OUT(out_READ_WRITE_RDATA ,"rdata" ,Tdata_t ,_param->_size_word); 101 78 102 for (uint32_t i=0; i<_param->_nb_port_read_write; i++) 103 { 104 Interface_fifo * interface = _interfaces->set_interface("read_write_"+toString(i) 105 #ifdef POSITION 106 , IN 107 ,WEST 108 , "Interface Read_Write" 109 #endif 110 ); 79 ALLOC1_INTERFACE_END(_param->_nb_port_read_write); 80 } 111 81 112 in_READ_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL);113 out_READ_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK);114 in_READ_WRITE_RW [i] = interface->set_signal_valack_in ("rw" , VAL);115 if (_param->_have_port_address)116 in_READ_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", _param->_size_address);117 in_READ_WRITE_WDATA [i] = interface->set_signal_in <Tdata_t > ("wdata" , _param->_size_word);118 out_READ_WRITE_RDATA [i] = interface->set_signal_out <Tdata_t > ("rdata" , _param->_size_word);119 }120 121 // ----- Register122 82 if (usage_is_set(_usage,USE_SYSTEMC)) 123 reg_DATA = new Tdata_t [_param->_nb_word];83 ALLOC1(reg_DATA,Tdata_t,_param->_nb_word); 124 84 125 85 #ifdef POSITION -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/src/RegisterFile_Monolithic_deallocation.cpp
r88 r112 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ 7 7 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Monolithic/include/RegisterFile_Monolithic.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 22 23 delete in_CLOCK; 23 24 delete in_NRESET; 24 // ----- Interface Read 25 delete [] in_READ_VAL ; 26 delete [] out_READ_ACK ; 27 if (_param->_have_port_address) 28 delete [] in_READ_ADDRESS; 29 delete [] out_READ_DATA ; 30 31 // ----- Interface Write 32 delete [] in_WRITE_VAL ; 33 delete [] out_WRITE_ACK ; 34 if (_param->_have_port_address) 35 delete [] in_WRITE_ADDRESS; 36 delete [] in_WRITE_DATA ; 37 38 // ----- Interface Read_Write 39 delete [] in_READ_WRITE_VAL ; 40 delete [] out_READ_WRITE_ACK ; 41 delete [] in_READ_WRITE_RW ; 42 if (_param->_have_port_address) 43 delete [] in_READ_WRITE_ADDRESS; 44 delete [] in_READ_WRITE_WDATA ; 45 delete [] out_READ_WRITE_RDATA ; 46 47 // ----- Register 48 delete [] reg_DATA; 25 26 DELETE1_SIGNAL( in_READ_VAL ,_param->_nb_port_read,1); 27 DELETE1_SIGNAL(out_READ_ACK ,_param->_nb_port_read,1); 28 DELETE1_SIGNAL( in_READ_ADDRESS ,_param->_nb_port_read,_param->_size_address); 29 DELETE1_SIGNAL(out_READ_DATA ,_param->_nb_port_read,_param->_size_word); 30 31 DELETE1_SIGNAL( in_WRITE_VAL ,_param->_nb_port_write,1); 32 DELETE1_SIGNAL(out_WRITE_ACK ,_param->_nb_port_write,1); 33 DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address); 34 DELETE1_SIGNAL( in_WRITE_DATA ,_param->_nb_port_write,_param->_size_word); 35 36 DELETE1_SIGNAL( in_READ_WRITE_VAL ,_param->_nb_port_read_write,1); 37 DELETE1_SIGNAL(out_READ_WRITE_ACK ,_param->_nb_port_read_write,1); 38 DELETE1_SIGNAL( in_READ_WRITE_RW ,_param->_nb_port_read_write,1); 39 DELETE1_SIGNAL( in_READ_WRITE_ADDRESS,_param->_nb_port_read_write,_param->_size_address); 40 DELETE1_SIGNAL( in_READ_WRITE_WDATA ,_param->_nb_port_read_write,_param->_size_word); 41 DELETE1_SIGNAL(out_READ_WRITE_RDATA ,_param->_nb_port_read_write,_param->_size_word); 42 43 DELETE1(reg_DATA,_param->_nb_word); 49 44 } 50 45 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 36 37 ,IN 37 38 ,SOUTH, 38 "Generalist interface"39 _("Generalist interface") 39 40 #endif 40 41 ); … … 43 44 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 44 45 45 // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 46 // ~~~~~[ Interface : "read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 47 { 48 ALLOC1_INTERFACE_BEGIN("read",IN,WEST,_("Interface Read"),_param->_nb_port_read); 46 49 47 in_READ_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_read]; 48 out_READ_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_read]; 49 if (_param->_have_port_address == true) 50 in_READ_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_read]; 51 out_READ_DATA = new SC_OUT(Tdata_t ) * [_param->_nb_port_read]; 50 ALLOC1_VALACK_IN ( in_READ_VAL ,VAL); 51 ALLOC1_VALACK_OUT(out_READ_ACK ,ACK); 52 ALLOC1_SIGNAL_IN ( in_READ_ADDRESS,"address",Taddress_t, _param->_size_address); 53 ALLOC1_SIGNAL_OUT(out_READ_DATA ,"data" ,Tdata_t , _param->_size_word); 52 54 53 for (uint32_t i=0; i<_param->_nb_port_read; i++) 54 { 55 Interface_fifo * interface = _interfaces->set_interface("read_"+toString(i) 56 #ifdef POSITION 57 , IN 58 ,WEST 59 , "Interface Read" 60 #endif 61 ); 55 ALLOC1_INTERFACE_END(_param->_nb_port_read); 56 } 57 58 // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 { 60 ALLOC1_INTERFACE_BEGIN("write",IN,EAST,_("Interface Write"),_param->_nb_port_write); 62 61 63 in_READ_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 64 out_READ_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 65 if (_param->_have_port_address == true) 66 in_READ_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word))); 67 out_READ_DATA [i] = interface->set_signal_out <Tdata_t > ("data" , _param->_size_word); 68 } 62 ALLOC1_VALACK_IN ( in_WRITE_VAL ,VAL); 63 ALLOC1_VALACK_OUT(out_WRITE_ACK ,ACK); 64 ALLOC1_SIGNAL_IN ( in_WRITE_ADDRESS,"address",Taddress_t,_param->_size_address); 65 ALLOC1_SIGNAL_IN ( in_WRITE_DATA ,"data" ,Tdata_t ,_param->_size_word); 69 66 70 // ~~~~~[ Interface : "write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 71 72 in_WRITE_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_port_write]; 73 out_WRITE_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_port_write]; 74 if (_param->_have_port_address == true) 75 in_WRITE_ADDRESS = new SC_IN (Taddress_t) * [_param->_nb_port_write]; 76 in_WRITE_DATA = new SC_IN (Tdata_t ) * [_param->_nb_port_write]; 77 78 for (uint32_t i=0; i<_param->_nb_port_write; i++) 79 { 80 Interface_fifo * interface = _interfaces->set_interface("write_"+toString(i) 81 #ifdef POSITION 82 , IN 83 ,EAST 84 , "Interface Write" 85 #endif 86 ); 87 88 in_WRITE_VAL [i] = interface->set_signal_valack_in ("val" , VAL); 89 out_WRITE_ACK [i] = interface->set_signal_valack_out ("ack" , ACK); 90 if (_param->_have_port_address == true) 91 in_WRITE_ADDRESS [i] = interface->set_signal_in <Taddress_t> ("address", static_cast<uint32_t>(log2(_param->_nb_word))); 92 in_WRITE_DATA [i] = interface->set_signal_in <Tdata_t > ("data" , _param->_size_word); 67 ALLOC1_INTERFACE_END(_param->_nb_port_write); 93 68 } 94 69 95 70 if (usage_is_set(_usage,USE_SYSTEMC)) 96 71 { 97 // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 72 // ~~~~~[ Registers ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 73 ALLOC2(reg_DATA,Tdata_t,_param->_nb_bank,_param->_nb_word); 98 74 99 reg_DATA = new Tdata_t * [_param->_nb_bank]; 100 101 for (uint32_t i=0; i<_param->_nb_bank; i++) 102 { 103 reg_DATA [i] = new Tdata_t [_param->_nb_word]; 104 } 105 106 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 107 internal_WRITE_VAL = new bool [_param->_nb_port_write]; 108 internal_WRITE_BANK = new Taddress_t [_param->_nb_port_write]; 109 internal_WRITE_NUM_REG = new Taddress_t [_param->_nb_port_write]; 75 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 76 ALLOC1(internal_WRITE_VAL ,bool ,_param->_nb_port_write); 77 ALLOC1(internal_WRITE_BANK ,Taddress_t,_param->_nb_port_write); 78 ALLOC1(internal_WRITE_NUM_REG,Taddress_t,_param->_nb_port_write); 110 79 } 111 80 112 81 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 113 114 82 #ifdef POSITION 115 83 if (usage_is_set(_usage,USE_POSITION)) 116 84 _component->generate_file(); 117 85 #endif 118 86 119 87 log_printf(FUNC,RegisterFile_Multi_Banked,"allocation","End"); 120 88 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/src/RegisterFile_Multi_Banked_deallocation.cpp
r88 r112 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ 7 7 8 8 #include "Behavioural/Generic/RegisterFile/RegisterFile_Multi_Banked/include/RegisterFile_Multi_Banked.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 23 24 delete in_CLOCK; 24 25 delete in_NRESET; 26 27 DELETE1_SIGNAL( in_READ_VAL ,_param->_nb_port_read,1); 28 DELETE1_SIGNAL(out_READ_ACK ,_param->_nb_port_read,1); 29 DELETE1_SIGNAL( in_READ_ADDRESS ,_param->_nb_port_read,_param->_size_address); 30 DELETE1_SIGNAL(out_READ_DATA ,_param->_nb_port_read,_param->_size_word); 25 31 26 // ----- Interface Read 27 delete [] in_READ_VAL ; 28 delete [] out_READ_ACK ; 29 if (_param->_have_port_address == true) 30 delete [] in_READ_ADDRESS; 31 delete [] out_READ_DATA ; 32 DELETE1_SIGNAL( in_WRITE_VAL ,_param->_nb_port_write,1); 33 DELETE1_SIGNAL(out_WRITE_ACK ,_param->_nb_port_write,1); 34 DELETE1_SIGNAL( in_WRITE_ADDRESS,_param->_nb_port_write,_param->_size_address); 35 DELETE1_SIGNAL( in_WRITE_DATA ,_param->_nb_port_write,_param->_size_word); 32 36 33 // ----- Interface Write 34 delete [] in_WRITE_VAL ; 35 delete [] out_WRITE_ACK ; 36 if (_param->_have_port_address == true) 37 delete [] in_WRITE_ADDRESS; 38 delete [] in_WRITE_DATA ; 37 DELETE2(reg_DATA ,_param->_nb_bank,_param->_nb_word); 39 38 40 // ----- Register 41 delete [] reg_DATA; 42 43 // ----- Internal 44 delete [] internal_WRITE_VAL; 45 delete [] internal_WRITE_BANK; 46 delete [] internal_WRITE_NUM_REG; 39 DELETE1(internal_WRITE_VAL ,_param->_nb_port_write); 40 DELETE1(internal_WRITE_BANK ,_param->_nb_port_write); 41 DELETE1(internal_WRITE_NUM_REG ,_param->_nb_port_write); 47 42 } 48 43 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/SelfTest/include/test.h
r81 r112 15 15 #include <sys/time.h> 16 16 17 #include "Common/include/Time.h" 17 18 #include "Behavioural/Generic/RegisterFile/include/RegisterFile.h" 18 19 … … 26 27 morpheo::behavioural::generic::registerfile::Parameters * param); 27 28 28 class Time29 {30 private : timeval time_begin;31 // private : timeval time_end;32 33 public : Time ()34 {35 gettimeofday(&time_begin ,NULL);36 };37 38 public : ~Time ()39 {40 cout << *this;41 };42 43 public : friend ostream& operator<< (ostream& output_stream,44 const Time & x)45 {46 timeval time_end;47 48 gettimeofday(&time_end ,NULL);49 50 uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());51 52 double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);53 54 output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;55 56 return output_stream;57 }58 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/RegisterFile/include/RegisterFile.h
r82 r112 53 53 54 54 public : Component * _component; 55 private : Interfaces * _interfaces; 55 56 56 57 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo{ … … 35 36 ,IN 36 37 ,WEST 37 , "Generalist interface"38 ,_("Generalist interface") 38 39 #endif 39 40 ); … … 41 42 in_CLOCK = interface->set_signal_clk ("clock" ,1, CLOCK_VHDL_NO); 42 43 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_NO); 44 45 { 46 ALLOC1_INTERFACE_BEGIN("",IN,SOUTH,_("select interface"),_param->_nb_entity); 43 47 44 in_VAL = new SC_IN (Tcontrol_t) * [_param->_nb_entity];45 if (_param->_encoding_one_hot)46 out_ACK = new SC_OUT(Tcontrol_t) * [_param->_nb_entity];48 ALLOC1_SIGNAL_IN ( in_VAL ,"val" ,Tcontrol_t,1); 49 if (_param->_encoding_one_hot) 50 ALLOC1_SIGNAL_OUT(out_ACK ,"ack" ,Tcontrol_t,1); 47 51 48 for (uint32_t i=0; i<_param->_nb_entity; i++) 49 { 50 in_VAL [i] = interface->set_signal_in <Tcontrol_t> ("val_"+toString(i),1); 51 if (_param->_encoding_one_hot) 52 out_ACK [i] = interface->set_signal_out <Tcontrol_t> ("ack_"+toString(i),1); 53 } 52 ALLOC1_INTERFACE_END(_param->_nb_entity); 53 } 54 54 55 if (_param->_encoding_compact) 56 { 57 out_ENTITY = interface->set_signal_out <Tentity_t > ("entity" , _param->_size_entity); 58 out_ENTITY_ACK = interface->set_signal_out <Tcontrol_t> ("entity_ack", 1); 59 } 55 if (_param->_encoding_compact) 56 { 57 ALLOC0_INTERFACE_BEGIN("",OUT,SOUTH,_("select interface")); 60 58 61 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 59 ALLOC0_SIGNAL_OUT(out_ENTITY ,"entity" ,Tentity_t ,_param->_size_entity); 60 ALLOC0_SIGNAL_OUT(out_ENTITY_ACK,"entity_ack",Tcontrol_t,1); 61 62 ALLOC0_INTERFACE_END(); 63 } 64 65 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 66 63 67 #ifdef POSITION -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Select/Select_Priority_Fixed/src/Select_Priority_Fixed_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Select/Select_Priority_Fixed/include/Select_Priority_Fixed.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 24 25 delete in_NRESET; 25 26 26 delete [] in_VAL; 27 if (_param->_encoding_one_hot) 28 delete [] out_ACK; 29 30 if (_param->_encoding_compact) 31 { 32 delete out_ENTITY; 33 delete out_ENTITY_ACK; 34 } 27 DELETE1_SIGNAL( in_VAL ,_param->_nb_entity,1); 28 if (_param->_encoding_one_hot) 29 DELETE1_SIGNAL(out_ACK ,_param->_nb_entity,1); 30 if (_param->_encoding_compact) 31 { 32 DELETE0_SIGNAL(out_ENTITY ,_param->_size_entity); 33 DELETE0_SIGNAL(out_ENTITY_ACK,1); 34 } 35 35 } 36 36 37 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37 38 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/include/test.h
r81 r112 14 14 #include <iostream> 15 15 16 #include "Common/include/Time.h" 16 17 #include "Behavioural/Generic/Shifter/include/Shifter.h" 17 18 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/SelfTest/src/test.cpp
r88 r112 99 99 (*(_Shifter->out_SHIFTER_DATA [i])) (SHIFTER_DATA_OUT [i]); 100 100 } 101 102 Time * _time = new Time(); 101 103 102 104 /******************************************************** … … 309 311 * Simulation - End 310 312 ********************************************************/ 313 delete _time; 311 314 312 315 cout << "<" << name << "> ............ Stop Simulation" << endl; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/include/Parameters.h
r88 r112 29 29 public : const uint32_t _size_data_completion; 30 30 public : const bool _type_completion_bool; 31 32 public : const uint32_t _size_shift ; 31 33 32 34 public : const bool _internal_direction; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Parameters.cpp
r88 r112 29 29 _size_data_completion ((carry != external_completion)?0:((_shift_value==0)?size_data:_shift_value)), 30 30 _type_completion_bool (type_completion_bool), 31 32 _size_shift (static_cast<uint32_t>(ceil(log2(_size_data)))), 31 33 32 34 _internal_direction ((direction == internal_right_shift)?_right :_left ), -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_allocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Shifter/include/Shifter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 33 34 , IN 34 35 , SOUTH 35 , "Generalist interface"36 , _("Generalist interface") 36 37 #endif 37 38 ); … … 43 44 44 45 { 45 // Interface "shifter" 46 in_SHIFTER_DATA = new SC_IN (Tdata_t) * [_param->_nb_port]; 46 ALLOC1_INTERFACE_BEGIN("shifter", IN, SOUTH,_("Generalist interface"),_param->_nb_port); 47 48 ALLOC1_SIGNAL_IN ( in_SHIFTER_DATA ,"data" ,Tdata_t ,_param->_size_data); 47 49 if (_param->_shift_value == 0) 48 in_SHIFTER_SHIFT = new SC_IN (Tshift_t) * [_param->_nb_port]; 49 if (_param->_direction == external_direction) 50 in_SHIFTER_DIRECTION = new SC_IN (Tdirection_t) * [_param->_nb_port]; 51 if (_param->_rotate == external_rotate) 52 in_SHIFTER_TYPE = new SC_IN (Ttype_t) * [_param->_nb_port]; 53 if (_param->_carry == external_carry) 54 in_SHIFTER_CARRY = new SC_IN (Tcarry_t) * [_param->_nb_port]; 55 if (_param->_carry == external_completion) 50 ALLOC1_SIGNAL_IN ( in_SHIFTER_SHIFT ,"shift" ,Tshift_t ,_param->_size_shift); 51 if (_param->_direction == external_direction) 52 ALLOC1_SIGNAL_IN ( in_SHIFTER_DIRECTION ,"direction" ,Tdirection_t,1); 53 if (_param->_rotate == external_rotate) 54 ALLOC1_SIGNAL_IN ( in_SHIFTER_TYPE ,"type" ,Ttype_t ,1); 55 if (_param->_carry == external_carry) 56 ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY ,"carry" ,Tcarry_t ,1); 57 if (_param->_carry == external_completion) 58 { 56 59 if (_param->_type_completion_bool == true) 57 in_SHIFTER_CARRY_IN = new SC_IN (Tcontrol_t) * [_param->_nb_port]; 60 { 61 ALLOC1_SIGNAL_IN ( in_SHIFTER_CARRY_IN ,"carry_in" ,Tcontrol_t ,1); 62 } 58 63 else 59 in_SHIFTER_COMPLETION= new SC_IN (Tdata_t) * [_param->_nb_port]; 60 out_SHIFTER_DATA = new SC_OUT(Tdata_t) * [_param->_nb_port]; 64 { 65 ALLOC1_SIGNAL_IN ( in_SHIFTER_COMPLETION ,"completion",Tdata_t ,_param->_size_data_completion); 66 } 67 } 68 ALLOC1_SIGNAL_OUT(out_SHIFTER_DATA ,"data" ,Tdata_t ,_param->_size_data); 61 69 62 for (uint32_t i=0; i<_param->_nb_port; i++) 63 { 64 Interface_fifo * interface = _interfaces->set_interface("shifter_"+toString(i) 65 #ifdef POSITION 66 , IN 67 , SOUTH 68 , "Generalist interface" 69 #endif 70 ); 71 72 in_SHIFTER_DATA [i] = interface->set_signal_in <Tdata_t > ("data" ,_param->_size_data); 73 if (_param->_shift_value == 0) 74 in_SHIFTER_SHIFT [i] = interface->set_signal_in <Tshift_t > ("shift" ,static_cast<uint32_t>(ceil(log2(_param->_size_data)))); 75 if (_param->_direction == external_direction) 76 in_SHIFTER_DIRECTION [i] = interface->set_signal_in <Tdirection_t> ("direction" ,1); 77 if (_param->_rotate == external_rotate) 78 in_SHIFTER_TYPE [i] = interface->set_signal_in <Ttype_t > ("type" ,1); 79 if (_param->_carry == external_carry) 80 in_SHIFTER_CARRY [i] = interface->set_signal_in <Tcarry_t > ("carry" ,1); 81 if (_param->_carry == external_completion) 82 if (_param->_type_completion_bool == true) 83 in_SHIFTER_CARRY_IN [i] = interface->set_signal_in <Tcontrol_t > ("carry_in" ,1); 84 else 85 in_SHIFTER_COMPLETION [i] = interface->set_signal_in <Tdata_t > ("completion",_param->_size_data_completion); 86 out_SHIFTER_DATA [i] = interface->set_signal_out <Tdata_t > ("data" ,_param->_size_data); 87 } 70 ALLOC1_INTERFACE_END(_param->_nb_port); 88 71 } 89 72 90 73 #ifdef POSITION 91 74 if (usage_is_set(_usage,USE_POSITION)) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Shifter/include/Shifter.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 19 20 { 20 21 #if (defined(STATISTICS) || defined (VHDL_TESTBENCH)) 21 delete in_CLOCK;22 delete in_CLOCK; 22 23 #endif 23 24 24 delete [] in_SHIFTER_DATA ; 25 if (_param->_shift_value == 0) 26 delete [] in_SHIFTER_SHIFT ; 27 if (_param->_direction == external_direction ) 28 delete [] in_SHIFTER_DIRECTION ; 29 if (_param->_rotate == external_rotate ) 30 delete [] in_SHIFTER_TYPE ; 31 if (_param->_carry == external_carry ) 32 delete [] in_SHIFTER_CARRY ; 33 if (_param->_carry == external_completion) 34 if (_param->_type_completion_bool == true) 35 delete [] in_SHIFTER_CARRY_IN ; 36 else 37 delete [] in_SHIFTER_COMPLETION; 38 delete [] out_SHIFTER_DATA ; 25 DELETE1_SIGNAL( in_SHIFTER_DATA ,_param->_nb_port,_param->_size_data); 26 if (_param->_shift_value == 0) 27 DELETE1_SIGNAL( in_SHIFTER_SHIFT ,_param->_nb_port,_param->_size_shift); 28 if (_param->_direction == external_direction) 29 DELETE1_SIGNAL( in_SHIFTER_DIRECTION ,_param->_nb_port,1); 30 if (_param->_rotate == external_rotate) 31 DELETE1_SIGNAL( in_SHIFTER_TYPE ,_param->_nb_port,1); 32 if (_param->_carry == external_carry) 33 DELETE1_SIGNAL( in_SHIFTER_CARRY ,_param->_nb_port,1); 34 if (_param->_carry == external_completion) 35 { 36 if (_param->_type_completion_bool == true) 37 { 38 DELETE1_SIGNAL( in_SHIFTER_CARRY_IN ,_param->_nb_port,1); 39 } 40 else 41 { 42 DELETE1_SIGNAL( in_SHIFTER_COMPLETION ,_param->_nb_port,_param->_size_data_completion); 43 } 44 } 45 DELETE1_SIGNAL(out_SHIFTER_DATA ,_param->_nb_port,_param->_size_data); 39 46 } 40 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Shifter/src/Shifter_vhdl_declaration.cpp
r81 r112 17 17 void Shifter::vhdl_declaration (Vhdl * & vhdl) 18 18 { 19 uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param ._size_data)));19 uint32_t log2_size_data = static_cast<uint32_t>(ceil(log2(_param->_size_data))); 20 20 21 21 vhdl->set_constant("cst_is_direction_left ",1,_left ); … … 25 25 vhdl->set_constant("cst_is_carry_arithmetic",1,_arithmetic); 26 26 vhdl->set_constant("cst_is_carry_logic ",1,_logic ); 27 vhdl->set_constant("cst_completion ",_param ._size_data,"(others => '1')");27 vhdl->set_constant("cst_completion ",_param->_size_data,"(others => '1')"); 28 28 29 for (uint32_t i=0; i<_param ._nb_port; i++)29 for (uint32_t i=0; i<_param->_nb_port; i++) 30 30 { 31 if (_param ._shift_value != 0)32 vhdl->set_constant("shift_"+toString(i),log2_size_data, _param ._shift_value);31 if (_param->_shift_value != 0) 32 vhdl->set_constant("shift_"+toString(i),log2_size_data, _param->_shift_value); 33 33 else 34 34 vhdl->set_alias ("shift_"+toString(i),std_logic(log2_size_data), "in_SHIFTER_"+toString(i)+"_SHIFT",std_logic_range(log2_size_data)); 35 35 36 if (_param ._size_data_completion > 0)36 if (_param->_size_data_completion > 0) 37 37 { 38 vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param ._size_data);39 vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param ._size_data);40 vhdl->set_signal ("mask_completion_left_"+toString(i)+" ",_param ._size_data);41 vhdl->set_signal ("mask_completion_right_"+toString(i)+" ",_param ._size_data);38 vhdl->set_signal ("shifter_completion_left_"+toString(i)+" ",_param->_size_data); 39 vhdl->set_signal ("shifter_completion_right_"+toString(i)+"",_param->_size_data); 40 vhdl->set_signal ("mask_completion_left_"+toString(i)+" ",_param->_size_data); 41 vhdl->set_signal ("mask_completion_right_"+toString(i)+" ",_param->_size_data); 42 42 } 43 43 44 44 //-----[ Shift logic Left ]-------------------------------------------- 45 if (_param ._have_shift_logic_left)46 vhdl->set_signal ("shift_logic_left_"+toString(i)+" ",_param ._size_data);45 if (_param->_have_shift_logic_left) 46 vhdl->set_signal ("shift_logic_left_"+toString(i)+" ",_param->_size_data); 47 47 48 48 //-----[ Shift logic Right ]------------------------------------------- 49 if (_param ._have_shift_logic_right)50 vhdl->set_signal ("shift_logic_right_"+toString(i)+" ",_param ._size_data);49 if (_param->_have_shift_logic_right) 50 vhdl->set_signal ("shift_logic_right_"+toString(i)+" ",_param->_size_data); 51 51 52 52 //-----[ Shift arithmetic Left ]--------------------------------------- 53 if (_param ._have_shift_arithmetic_left)54 vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param ._size_data);53 if (_param->_have_shift_arithmetic_left) 54 vhdl->set_signal ("shift_arithmetic_left_"+toString(i)+" ",_param->_size_data); 55 55 56 56 //-----[ Shift arithmetic Right ]-------------------------------------- 57 if (_param ._have_shift_arithmetic_right)58 vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param ._size_data);57 if (_param->_have_shift_arithmetic_right) 58 vhdl->set_signal ("shift_arithmetic_right_"+toString(i)+"",_param->_size_data); 59 59 60 60 //-----[ Rotate Left ]------------------------------------------------- 61 if (_param ._have_rotate_left)62 vhdl->set_signal ("rotate_left_"+toString(i)+" ",_param ._size_data);61 if (_param->_have_rotate_left) 62 vhdl->set_signal ("rotate_left_"+toString(i)+" ",_param->_size_data); 63 63 64 64 //-----[ Rotate Right ]------------------------------------------------ 65 if (_param ._have_rotate_right)66 vhdl->set_signal ("rotate_right_"+toString(i)+" ",_param ._size_data);65 if (_param->_have_rotate_right) 66 vhdl->set_signal ("rotate_right_"+toString(i)+" ",_param->_size_data); 67 67 } 68 68 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort_allocation.cpp
r88 r112 53 53 // ~~~~~[ Interface : "input" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 54 54 { 55 ALLOC1_INTERFACE ("input", IN, WEST, "List of data unsort",_param->_nb_input);55 ALLOC1_INTERFACE_BEGIN("input", IN, WEST, "List of data unsort",_param->_nb_input); 56 56 57 57 ALLOC1_SIGNAL_IN(in_INPUT_VAL ,"val" , Tcontrol_t, 1); 58 58 ALLOC1_SIGNAL_IN(in_INPUT_DATA,"data", Tdata_t , _param->_size_data); 59 60 ALLOC1_INTERFACE_END(_param->_nb_input); 59 61 } 60 62 61 63 // ~~~~~[ Interface : "output" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 62 64 { 63 ALLOC1_INTERFACE ("output",OUT, EAST, "List of data sort",_param->_nb_output);65 ALLOC1_INTERFACE_BEGIN("output",OUT, EAST, "List of data sort",_param->_nb_output); 64 66 65 67 ALLOC1_SIGNAL_OUT(out_OUTPUT_VAL ,"val" ,Tcontrol_t,1); … … 68 70 if (_param->_have_port_data_out) 69 71 ALLOC1_SIGNAL_OUT(out_OUTPUT_DATA ,"data" ,Tdata_t ,_param->_size_data ); 72 73 ALLOC1_INTERFACE_END(_param->_nb_output); 70 74 } 71 75 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Sort/src/Sort_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Sort/include/Sort.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 25 26 delete in_NRESET; 26 27 27 delete [] in_INPUT_VAL ; 28 delete [] in_INPUT_DATA ; 29 delete [] out_OUTPUT_VAL ; 30 if (_param->_have_port_index_out) 31 delete [] out_OUTPUT_INDEX; 32 if (_param->_have_port_data_out) 33 delete [] out_OUTPUT_DATA ; 28 DELETE1_SIGNAL(in_INPUT_VAL ,_param->_nb_input, 1); 29 DELETE1_SIGNAL(in_INPUT_DATA,_param->_nb_input, _param->_size_data); 30 31 DELETE1_SIGNAL(out_OUTPUT_VAL ,_param->_nb_output,1); 32 if (_param->_have_port_index_out) 33 DELETE1_SIGNAL(out_OUTPUT_INDEX,_param->_nb_output,_param->_size_address); 34 if (_param->_have_port_data_out) 35 DELETE1_SIGNAL(out_OUTPUT_DATA ,_param->_nb_output,_param->_size_data ); 34 36 } 37 35 38 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 36 39 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_allocation.cpp
r95 r112 2 2 * $Id$ 3 3 * 4 * [ 4 * [ Description ] 5 5 * 6 6 */ … … 28 28 _interfaces = entity->set_interfaces(); 29 29 30 // ~~~~~[ 30 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 31 31 { 32 32 Interface_fifo * interface = _interfaces->set_interface("" … … 40 40 } 41 41 42 // ~~~~~[ 42 // ~~~~~[ Interface : "access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 43 43 { 44 ALLOC1_INTERFACE ("access",IN,WEST, "Access", _param->_nb_access);44 ALLOC1_INTERFACE_BEGIN("access",IN,WEST, "Access", _param->_nb_access); 45 45 46 46 ALLOC1_VALACK_IN ( in_ACCESS_VAL ,VAL); … … 50 50 ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"entity" ,Tentity_t ,log2(_param->_nb_entity )); 51 51 ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"victim" ,Tentity_t ,log2(_param->_nb_entity )); 52 53 ALLOC1_INTERFACE_END(_param->_nb_access); 52 54 } 53 55 54 56 if (usage_is_set(_usage,USE_SYSTEMC)) 55 57 { 56 // -----[Register ]---------------------------------------------------57 reg_TABLE = new entry_t * [_param->_size_table];58 59 for (uint32_t i=0; i<_param->_size_table; i++)60 reg_TABLE [i] = new entry_t (_param->_nb_entity);61 62 // -----[Internal ]---------------------------------------------------63 internal_ACCESS_ACK = new Tcontrol_t [_param->_nb_access];64 internal_ACCESS_VICTIM = new Tentity_t [_param->_nb_access];58 // -----[ Register ]--------------------------------------------------- 59 reg_TABLE = new entry_t * [_param->_size_table]; 60 61 for (uint32_t i=0; i<_param->_size_table; i++) 62 reg_TABLE [i] = new entry_t (_param->_nb_entity); 63 64 // -----[ Internal ]--------------------------------------------------- 65 ALLOC1(internal_ACCESS_ACK ,Tcontrol_t,_param->_nb_access); 66 ALLOC1(internal_ACCESS_VICTIM,Tentity_t ,_param->_nb_access); 65 67 } 66 68 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/Victim_Pseudo_LRU/src/Victim_Pseudo_LRU_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Victim/Victim_Pseudo_LRU/include/Victim_Pseudo_LRU.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { … … 20 21 delete in_CLOCK; 21 22 delete in_NRESET; 22 // -----[ Interface access ]-------------------------------------------23 delete [] in_ACCESS_VAL ;24 delete [] out_ACCESS_ACK ;25 if (_param->_size_address>1)26 delete [] in_ACCESS_ADDRESS;27 delete [] in_ACCESS_HIT ;28 delete [] in_ACCESS_ENTITY ;29 delete [] out_ACCESS_VICTIM ;30 31 // -----[ Register ]---------------------------------------------------32 delete [] reg_TABLE;33 23 34 // -----[ Internal ]--------------------------------------------------- 35 delete [] internal_ACCESS_ACK ; 36 delete [] internal_ACCESS_VICTIM; 24 DELETE1_SIGNAL( in_ACCESS_VAL ,_param->_nb_access,1); 25 DELETE1_SIGNAL(out_ACCESS_ACK ,_param->_nb_access,1); 26 DELETE1_SIGNAL( in_ACCESS_HIT ,_param->_nb_access,1); 27 DELETE1_SIGNAL( in_ACCESS_ADDRESS,_param->_nb_access,log2(_param->_size_address)); 28 DELETE1_SIGNAL( in_ACCESS_ENTITY ,_param->_nb_access,log2(_param->_nb_entity )); 29 DELETE1_SIGNAL(out_ACCESS_VICTIM ,_param->_nb_access,log2(_param->_nb_entity )); 30 31 DELETE1(reg_TABLE ,_param->_size_table); 32 DELETE1(internal_ACCESS_ACK ,_param->_nb_access); 33 DELETE1(internal_ACCESS_VICTIM,_param->_nb_access); 37 34 } 38 35 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_allocation.cpp
r82 r112 31 31 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 32 32 { 33 __ALLOC _SIGNAL(in_CLOCK ,"in_CLOCK" ,SC_CLOCK );34 __ALLOC _SIGNAL(in_NRESET,"in_NRESET",SC_IN (Tcontrol_t));33 __ALLOC0_SIGNAL(in_CLOCK ,"in_CLOCK" ,SC_CLOCK ); 34 __ALLOC0_SIGNAL(in_NRESET,"in_NRESET",SC_IN (Tcontrol_t)); 35 35 } 36 36 37 37 // ~~~~~[ Interface : "Access" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 38 38 { 39 __ALLOC1_INTERFACE ("ACCESS",_param->_nb_access);39 __ALLOC1_INTERFACE_BEGIN("ACCESS",_param->_nb_access); 40 40 41 41 __ALLOC1_SIGNAL_IN ( in_ACCESS_VAL ,"VAL" ,Tcontrol_t); … … 46 46 __ALLOC1_SIGNAL_IN ( in_ACCESS_ENTITY ,"ENTITY" ,Tentity_t ); 47 47 __ALLOC1_SIGNAL_OUT(out_ACCESS_VICTIM ,"VICTIM" ,Tentity_t ); 48 49 __ALLOC1_INTERFACE_END(_param->_nb_access); 48 50 } 49 51 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Generic/Victim/src/Victim_deallocation.cpp
r88 r112 7 7 8 8 #include "Behavioural/Generic/Victim/include/Victim.h" 9 #include "Behavioural/include/Allocation.h" 9 10 10 11 namespace morpheo { -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Makefile.Synthesis
r103 r112 66 66 @\ 67 67 $(ECHO) "Create work-space : $@"; \ 68 $(MODELTECH_VLIB) $@; 68 $(MODELTECH_VLIB) $@; \ 69 $(MODELTECH_VMAP) $(XILINX_CORELIB); 69 70 70 71 $(DIR_LOG)/%.sim.log : $(DIR_VHDL)/%.vhdl $(DIR_LOG)/%.vhdl.log -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Allocation.h
r111 r112 14 14 // =====[ ALLOCATION / DELETE of ARRAY ]================================= 15 15 // ====================================================================== 16 #define ALLOC0(var,type) \ 17 var = new type 18 16 19 #define ALLOC1(var,type,s1) \ 17 20 var = new type [s1] … … 103 106 // ---------------------------------------------------------------------- 104 107 105 #define __ALLOC_SIGNAL(sig, name, type) \ 108 109 #define __ALLOC0_SIGNAL(sig, name, type) \ 106 110 { \ 107 111 sig = new type (name); \ … … 109 113 110 114 #ifdef POSITION 111 #define ALLOC _INTERFACE( name, direction, localisation, str) \115 #define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str) \ 112 116 INTERFACE_PRINT(name); \ 113 117 morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name, direction, localisation, str); 114 118 #else 115 #define ALLOC _INTERFACE( name, direction, localisation, str) \119 #define ALLOC0_INTERFACE_BEGIN( name, direction, localisation, str) \ 116 120 INTERFACE_PRINT(name); \ 117 121 morpheo::behavioural::Interface_fifo * interface = _interfaces->set_interface( name); 118 122 #endif 119 123 120 #define ALLOC_VAL_ACK_IN( sig, name, type) \ 124 #define ALLOC0_INTERFACE_END() 125 126 #define ALLOC0_VAL_ACK_IN( sig, name, type) \ 121 127 { \ 122 128 sig = interface->set_signal_valack_in (name, type); \ 123 129 } 124 #define ALLOC _VAL_ACK_OUT( sig, name, type) \130 #define ALLOC0_VAL_ACK_OUT( sig, name, type) \ 125 131 { \ 126 132 sig = interface->set_signal_valack_out(name, type); \ 127 133 } 128 #define ALLOC _VALACK_IN( sig, type) \134 #define ALLOC0_VALACK_IN( sig, type) \ 129 135 { \ 130 136 sig = interface->set_signal_valack_in (type); \ 131 137 } 132 #define ALLOC _VALACK_OUT( sig, type) \138 #define ALLOC0_VALACK_OUT( sig, type) \ 133 139 { \ 134 140 sig = interface->set_signal_valack_out(type); \ 135 141 } 136 #define ALLOC _SIGNAL_IN( sig, name, type, size) \142 #define ALLOC0_SIGNAL_IN( sig, name, type, size) \ 137 143 if (size > 0) \ 138 144 { \ … … 144 150 } 145 151 146 #define ALLOC _SIGNAL_OUT( sig, name, type, size) \152 #define ALLOC0_SIGNAL_OUT( sig, name, type, size) \ 147 153 if (size > 0) \ 148 154 { \ … … 154 160 } 155 161 156 #define DELETE _SIGNAL( sig, size) \162 #define DELETE0_SIGNAL( sig, size) \ 157 163 if (size > 0) \ 158 164 { \ … … 160 166 } 161 167 162 #define ALLOC _SC_SIGNAL( sig, name, type) \168 #define ALLOC0_SC_SIGNAL( sig, name, type) \ 163 169 sc_signal<type> * sig = new sc_signal<type> (name); \ 164 170 PRINT_SIGNAL_ADDRESS(name,sig); 165 171 166 #define INSTANCE _SC_SIGNAL(component, sig) \172 #define INSTANCE0_SC_SIGNAL(component, sig) \ 167 173 { \ 168 174 TEST_SIGNAL(component->sig->name(),component->sig); \ … … 171 177 } 172 178 173 #define _INSTANCE _SC_SIGNAL(component, sig1,sig2) \179 #define _INSTANCE0_SC_SIGNAL(component, sig1,sig2) \ 174 180 { \ 175 181 TEST_SIGNAL(component->sig1->name(),component->sig1); \ … … 178 184 } 179 185 180 #define DELETE _SC_SIGNAL( sig) \186 #define DELETE0_SC_SIGNAL( sig) \ 181 187 { \ 182 188 delete sig; \ 183 189 } 184 185 186 #define __ALLOC0_SIGNAL(sig, name, type) __ALLOC_SIGNAL(sig, name, type)187 188 #define ALLOC0_INTERFACE( name, direction, localisation, str) ALLOC_INTERFACE( name, direction, localisation, str)189 190 #define ALLOC0_VAL_ACK_IN( sig, name, type) ALLOC_VAL_ACK_IN( sig, name, type)191 #define ALLOC0_VAL_ACK_OUT( sig, name, type) ALLOC_VAL_ACK_OUT( sig, name, type)192 #define ALLOC0_VALACK_IN( sig, type) ALLOC_VALACK_IN( sig, type)193 #define ALLOC0_VALACK_OUT( sig, type) ALLOC_VALACK_OUT( sig, type)194 #define ALLOC0_SIGNAL_IN( sig, name, type, size) ALLOC_SIGNAL_IN( sig, name, type, size)195 #define ALLOC0_SIGNAL_OUT( sig, name, type, size) ALLOC_SIGNAL_OUT( sig, name, type, size)196 #define DELETE0_SIGNAL( sig, size) DELETE_SIGNAL( sig, size)197 198 #define ALLOC0_SC_SIGNAL( sig, name, type) ALLOC_SC_SIGNAL( sig, name, type)199 #define INSTANCE0_SC_SIGNAL(component, sig) INSTANCE_SC_SIGNAL(component, sig)200 #define _INSTANCE0_SC_SIGNAL(component, sig) _INSTANCE_SC_SIGNAL(component, sig)201 #define DELETE0_SC_SIGNAL( sig) DELETE_SC_SIGNAL( sig)202 190 203 191 // ---------------------------------------------------------------------- … … 205 193 // ---------------------------------------------------------------------- 206 194 207 #define __ALLOC1_INTERFACE (name, x1) \195 #define __ALLOC1_INTERFACE_BEGIN(name, x1) \ 208 196 INTERFACE_PRINT(name); \ 209 197 const std::string interface_name = name; \ 210 198 const uint32_t iterator_1 = x1; 211 199 200 #define __ALLOC1_INTERFACE_END(x1) 201 212 202 #define __ALLOC1_SIGNAL_IN( sig, name, type) \ 213 203 { \ … … 233 223 234 224 #ifdef POSITION 235 #define ALLOC1_INTERFACE ( name, direction, localisation, str, x1) \225 #define ALLOC1_INTERFACE_BEGIN( name, direction, localisation, str, x1) \ 236 226 INTERFACE_PRINT(name); \ 237 227 const uint32_t iterator_1 = x1; \ … … 245 235 } 246 236 #else 247 #define ALLOC1_INTERFACE ( name, direction, localisation, str, x1) \237 #define ALLOC1_INTERFACE_BEGIN( name, direction, localisation, str, x1) \ 248 238 INTERFACE_PRINT(name); \ 249 239 const uint32_t iterator_1 = x1; \ … … 257 247 } 258 248 #endif 249 250 #define ALLOC1_INTERFACE_END(x1) 259 251 260 252 #define ALLOC1_VAL_ACK_IN( sig, name, type) \ … … 377 369 378 370 #ifdef POSITION 379 #define ALLOC2_INTERFACE ( name, direction, localisation, str, x1, x2) \371 #define ALLOC2_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2) \ 380 372 INTERFACE_PRINT(name); \ 381 373 uint32_t iterator_1 = 0; \ … … 397 389 } 398 390 #else 399 #define ALLOC2_INTERFACE ( name, direction, localisation, str, x1, x2) \391 #define ALLOC2_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2) \ 400 392 INTERFACE_PRINT(name); \ 401 393 uint32_t iterator_1 = 0; \ … … 417 409 } 418 410 #endif 411 412 #define ALLOC2_INTERFACE_END(x1, x2) \ 413 for (uint32_t it1=0; it1<x1; it1++) \ 414 delete interface [it1]; \ 415 delete [] interface; 419 416 420 417 #define _ALLOC2_VAL_ACK_IN( sig, name, type, x1, x2) \ … … 586 583 587 584 #ifdef POSITION 588 #define ALLOC3_INTERFACE ( name, direction, localisation, str, x1, x2, x3) \585 #define ALLOC3_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2, x3) \ 589 586 INTERFACE_PRINT(name); \ 590 587 uint32_t iterator_1 = 0; \ … … 612 609 } 613 610 #else 614 #define ALLOC3_INTERFACE ( name, direction, localisation, str, x1, x2, x3) \611 #define ALLOC3_INTERFACE_BEGIN( name, direction, localisation, str, x1, x2, x3) \ 615 612 INTERFACE_PRINT(name); \ 616 613 uint32_t iterator_1 = 0; \ … … 638 635 } 639 636 #endif 637 638 #define ALLOC3_INTERFACE_END(x1, x2, x3) \ 639 for (uint32_t it1=0; it1<x1; it1++) \ 640 { \ 641 for (uint32_t it2=0; it2<x2; it2++) \ 642 delete interface [it1][it2]; \ 643 delete [] interface [it1]; \ 644 } \ 645 delete [] interface; 640 646 641 647 // #define _ALLOC3_VAL_ACK_IN( sig, name, type, x1, x2, x3) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Debug_component.h
r88 r112 11 11 # define DEBUG_Configuration true 12 12 # define DEBUG_Generic true 13 # define DEBUG_Comparator true 13 14 # define DEBUG_Counter true 15 # define DEBUG_Divider true 16 # define DEBUG_Multiplier true 14 17 # define DEBUG_Priority true 15 18 # define DEBUG_Queue true -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/SPR_access_mode.h
r88 r112 32 32 public : ~SPR_access_mode(); 33 33 34 public : spr_address_t translate_address (Tgeneral_data_t address);34 public : spr_address_t translate_address (Tgeneral_data_t address); 35 35 36 public : bool valid (uint32_t num_group, uint32_t num_reg); 37 public : bool valid (spr_address_t address); 38 public : bool exist (uint32_t num_group, uint32_t num_reg); 39 public : bool exist (spr_address_t address); 40 public : bool read (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA); 41 public : bool write (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA); 42 43 public : void implement_group (uint32_t num_group, uint32_t nb_reg); 44 public : uint32_t implement_group (uint32_t num_group); 45 public : void change_mode (uint32_t num_group, uint32_t num_reg, spr_access_mode_t new_mode); 46 public : void invalid_register(uint32_t num_group, uint32_t num_reg); 47 36 public : bool valid (uint32_t num_group, uint32_t num_reg); 37 public : bool valid (spr_address_t address); 38 public : bool exist (uint32_t num_group, uint32_t num_reg); 39 public : bool exist (spr_address_t address); 40 public : bool read (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA); 41 public : bool write (spr_address_t address, Tcontrol_t SM, Tcontrol_t SUMRA); 42 public : spr_access_mode_t get_mode (uint32_t num_group, uint32_t num_reg); 43 public : spr_access_mode_t get_mode (spr_address_t address); 44 45 public : void implement_group (uint32_t num_group, uint32_t nb_reg); 46 public : uint32_t implement_group (uint32_t num_group); 47 public : void change_mode (uint32_t num_group, uint32_t num_reg, spr_access_mode_t new_mode); 48 public : void invalid_register(uint32_t num_group, uint32_t num_reg); 48 49 }; 49 50 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Simulation.h
r110 r112 11 11 12 12 #include "Common/include/Debug.h" 13 13 #include "Behavioural/include/Model.h" 14 14 #include <stdint.h> 15 15 #include <systemc.h> … … 22 22 extern double _simulation_nb_instruction; 23 23 extern std::vector<double> _simulation_nb_instruction_commited; 24 extern Model _model; 24 25 25 26 bool simulation_test_end (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/include/Version.h
r111 r112 10 10 #define MORPHEO_MAJOR_VERSION "0" 11 11 #define MORPHEO_MINOR_VERSION "2" 12 #define MORPHEO_REVISION "11 1"12 #define MORPHEO_REVISION "112" 13 13 #define MORPHEO_CODENAME "Castor" 14 14 15 #define MORPHEO_DATE_DAY " 27"16 #define MORPHEO_DATE_MONTH "0 2"15 #define MORPHEO_DATE_DAY "18" 16 #define MORPHEO_DATE_MONTH "03" 17 17 #define MORPHEO_DATE_YEAR "2009" 18 18 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface.cpp
r81 r112 70 70 log_printf(FUNC,Behavioural,"~Interface","Begin"); 71 71 72 if (_list_signal->empty()== false) 73 { 74 std::list<Signal*>::iterator i = _list_signal->begin(); 75 76 while (i != _list_signal->end()) 77 { 78 delete (*i); 79 ++i; 80 } 81 } 82 72 for (std::list<Signal*>::iterator it = _list_signal->begin(); 73 it != _list_signal->end(); 74 ++it) 75 delete (*it); 76 83 77 delete _list_signal; 84 78 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interface_set_signal.cpp
r88 r112 20 20 std::string signame = signal_name(_name, name, direction); 21 21 22 Signal * sig = new Signal 22 Signal * sig = new Signal (signame, direction, size, presence_port); 23 23 24 24 _list_signal->push_back (sig); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Interfaces.cpp
r81 r112 39 39 #endif 40 40 41 if (_list_interface->empty()== false) 42 { 43 std::list<Interface_fifo*>::iterator i = _list_interface->begin(); 44 45 while (i != _list_interface->end()) 46 { 47 delete (*i); 48 ++i; 49 } 50 } 41 for (std::list<Interface_fifo*>::iterator it = _list_interface->begin(); 42 it!=_list_interface->end(); 43 ++it) 44 delete (*it); 51 45 52 46 delete _list_interface; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Simulation.cpp
r110 r112 17 17 double _simulation_nb_instruction; 18 18 std::vector<double> _simulation_nb_instruction_commited; 19 Model _model; 19 20 20 21 void simulation_init (double nb_cycle, -
trunk/IPs/systemC/processor/Morpheo/Common/include/Debug.h
r110 r112 34 34 #include <sstream> 35 35 #include <string> 36 #include "Common/include/MemCheck.h" 36 37 37 38 namespace morpheo { -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_debug.cfg
r111 r112 17 17 <decod_bloc id="0"> 18 18 <parameter name="size_decod_queue" value="16"/> 19 <parameter name="decod_queue_scheme" value=" 0" />19 <parameter name="decod_queue_scheme" value="1" /> 20 20 <parameter name="nb_inst_decod" value="4" /> 21 21 <parameter name="nb_context_select" value="1" /> … … 34 34 <parameter name="nb_reg_free" value="8" /> 35 35 <parameter name="nb_rename_unit_bank" value="8" /> 36 <parameter name="size_read_counter" value="4" />37 36 </rename_bloc> 38 37 … … 50 49 51 50 <load_store_unit id="0"> 52 <parameter name="size_store_queue" value=" 8" />51 <parameter name="size_store_queue" value="16" /> 53 52 <parameter name="size_load_queue" value="8" /> 54 53 <parameter name="size_speculative_access_queue" value="4" /> … … 91 90 92 91 <predictor id="0"> 93 <parameter name="dir_have_bht" value=" 1"/>94 <parameter name="dir_bht_size_shifter" value=" 4"/>92 <parameter name="dir_have_bht" value="0" /> 93 <parameter name="dir_bht_size_shifter" value="1" /> 95 94 <parameter name="dir_bht_nb_shifter" value="64" /> 96 <parameter name="dir_have_pht" value="1" />97 <parameter name="dir_pht_size_counter" value="2" />98 <parameter name="dir_pht_nb_counter" value=" 64" />99 <parameter name="dir_pht_size_address_share" value="0" />95 <parameter name="dir_have_pht" value="1" /> 96 <parameter name="dir_pht_size_counter" value="2" /> 97 <parameter name="dir_pht_nb_counter" value="16" /> 98 <parameter name="dir_pht_size_address_share" value="0" /> 100 99 </predictor> 101 100 <predictor id="1"> … … 125 124 <parameter name="nb_rename_unit_select" value="1" /> 126 125 <parameter name="nb_execute_loop_select" value="1" /> 127 <parameter name="size_re_order_buffer" value=" 32"/>128 <parameter name="nb_re_order_buffer_bank" value=" 8" />126 <parameter name="size_re_order_buffer" value="64"/> 127 <parameter name="nb_re_order_buffer_bank" value="64" /> 129 128 <parameter name="commit_priority" value="1" /> 130 129 <parameter name="commit_load_balancing" value="1" /> -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_min.cfg
r95 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_1.cfg
r101 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_2.cfg
r101 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_3.cfg
r102 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_w1_4.cfg
r102 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Instance_w2_1.cfg
r102 r112 33 33 <parameter name="nb_reg_free" value="1" /> 34 34 <parameter name="nb_rename_unit_bank" value="1" /> 35 <parameter name="size_read_counter" value="1" />36 35 </rename_bloc> 37 36 -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.gen
r111 r112 40 40 <parameter name="nb_reg_free" min="1" max="8" step="+ 1" default="1" level="..." description="..." /> 41 41 <parameter name="nb_rename_unit_bank" min="1" max="8" step="+ 1" default="1" level="..." description="..." /> 42 <parameter name="size_read_counter" min="1" max="8" step="+ 1" default="1" level="..." description="..." />43 42 44 43 <parameter name="nb_read_bloc" min="1" max="8" step="* 2" default="1" level="..." description="..." /> … … 53 52 54 53 <parameter name="nb_load_store_unit" min="1" max="8" step="* 2" default="1" level="..." description="..." /> 55 <parameter name="size_store_queue" min="2" max=" 8"step="* 2" default="2" level="..." description="..." />56 <parameter name="size_load_queue" min="1" max=" 8"step="* 2" default="2" level="..." description="..." />57 <parameter name="size_speculative_access_queue" min="1" max=" 8"step="* 2" default="2" level="..." description="..." />54 <parameter name="size_store_queue" min="2" max="16" step="* 2" default="2" level="..." description="..." /> 55 <parameter name="size_load_queue" min="1" max="16" step="* 2" default="2" level="..." description="..." /> 56 <parameter name="size_speculative_access_queue" min="1" max="16" step="* 2" default="2" level="..." description="..." /> 58 57 <parameter name="nb_port_check" min="1" max="8" step="* 2" default="1" level="..." description="..." /> 59 58 <parameter name="speculative_load" min="0" max="3" step="+ 1" default="2" level="..." description="..." /> … … 93 92 <parameter name="nb_execute_loop_select" min="1" max="8" step="* 2" default="1" level="..." description="..." /> 94 93 <parameter name="size_re_order_buffer" min="1" max="256" step="* 2" default="1" level="..." description="..." /> 95 <parameter name="nb_re_order_buffer_bank" min="1" max=" 8"step="* 2" default="1" level="..." description="..." />94 <parameter name="nb_re_order_buffer_bank" min="1" max="64" step="* 2" default="1" level="..." description="..." /> 96 95 <parameter name="commit_priority" min="1" max="8" step="+ 1" default="1" level="..." description="..." /> 97 96 <parameter name="commit_load_balancing" min="1" max="8" step="+ 1" default="1" level="..." description="..." /> 98 <parameter name="size_issue_queue" min="1" max=" 8"step="* 2" default="2" level="..." description="..." />97 <parameter name="size_issue_queue" min="1" max="32" step="* 2" default="2" level="..." description="..." /> 99 98 <parameter name="nb_issue_queue_bank" min="1" max="8" step="* 2" default="1" level="..." description="..." /> 100 <parameter name="issue_queue_scheme" min="0" max=" 2" step="+ 1" default="0" level="..." description="0 : in_order, 1 : in_bundle_order, 2 : out_of_order" />99 <parameter name="issue_queue_scheme" min="0" max="1" step="+ 1" default="0" level="..." description="0 : in_order, 1 : in_bundle_order, 2 : out_of_order" /> 101 100 <parameter name="issue_priority" min="1" max="8" step="* 2" default="1" level="..." description="..." /> 102 101 <parameter name="issue_load_balancing" min="1" max="8" step="* 2" default="1" level="..." description="..." /> -
trunk/IPs/systemC/processor/Morpheo/Files/Morpheo.sim
r111 r112 8 8 <parameter name="use_vhdl_testbench_assert" value="0" /> 9 9 <parameter name="use_position" value="0" /> 10 <parameter name="use_statistics" value=" 1" />10 <parameter name="use_statistics" value="0" /> 11 11 <parameter name="use_information" value="0" /> 12 12 <parameter name="use_header" value="0" /> … … 23 23 <parameter name="directory_log" value="." /> 24 24 25 <parameter name="debug_level" value=" 3" />26 <parameter name="debug_cycle_start" value=" 7200"/>27 <parameter name="debug_cycle_stop" value=" 7400"/>25 <parameter name="debug_level" value="0" /> 26 <parameter name="debug_cycle_start" value="300" /> 27 <parameter name="debug_cycle_stop" value="450" /> 28 28 <parameter name="debug_have_log_file" value="0" /> 29 29 <parameter name="debug_idle_cycle" value="100" /> 30 30 <parameter name="debug_idle_time" value="5" /> 31 31 32 <component name="Counter" simulation="systemc" debug="0" />33 <component name="Priority" simulation="systemc" debug="0" />34 <component name="Queue_Control" simulation="systemc" debug="0" />35 <component name="Queue" simulation="systemc" debug="0" />36 <component name="RegisterFile_Monolithic" simulation="systemc" debug="0" />37 <component name="RegisterFile_Multi_Banked" simulation="systemc" debug="0" />38 <component name="RegisterFile" simulation="systemc" debug="0" />39 <component name="Select_Priority_Fixed" simulation="systemc" debug="0" />40 <component name="Select" simulation="systemc" debug="0" />41 <component name="Shifter" simulation="systemc" debug="0" />42 <component name="Sort" simulation="systemc" debug="0" />43 <component name="Victim_Pseudo_LRU" simulation="systemc" debug="0" />44 <component name="Victim" simulation="systemc" debug="0" />45 <component name="Execute_loop_Glue" simulation="systemc" debug="0" />46 <component name="Functionnal_unit" simulation="systemc" debug="0" />47 <component name="Load_store_unit" simulation="systemc" debug="0" />48 <component name="Read_queue" simulation="systemc" debug="0" />49 <component name="Reservation_station" simulation="systemc" debug="0" />50 <component name="Read_unit" simulation="systemc" debug="0" />51 <component name="Execute_queue" simulation="systemc" debug="0" />52 <component name="Write_queue" simulation="systemc" debug="0" />53 <component name="Write_unit" simulation="systemc" debug="0" />54 <component name="Execution_unit_to_Write_unit" simulation="systemc" debug="0" />55 <component name="Read_unit_to_Execution_unit" simulation="systemc" debug="0" />56 <component name="Register_unit_Glue" simulation="systemc" debug="0" />57 <component name="Register_unit" simulation="systemc" debug="0" />58 <component name="Execute_loop" simulation="systemc" debug="0" />59 <component name="Commit_unit" simulation="systemc" debug="0" />60 <component name="Issue_queue" simulation="systemc" debug="0" />61 <component name="OOO_Engine_Glue" simulation="systemc" debug="0" />62 <component name="Reexecute_unit" simulation="systemc" debug="0" />63 <component name="Load_Store_pointer_unit" simulation="systemc" debug="0" />64 <component name="Dependency_checking_unit" simulation="systemc" debug="0" />65 <component name="Free_List_unit" simulation="systemc" debug="0" />66 <component name="Register_Address_Translation_unit" simulation="systemc" debug="0" />67 <component name="Register_translation_unit_Glue" simulation="systemc" debug="0" />68 <component name="Stat_List_unit" simulation="systemc" debug="0" />69 <component name="Register_translation_unit" simulation="systemc" debug="0" />70 <component name="Rename_unit_Glue" simulation="systemc" debug="0" />71 <component name="Rename_select" simulation="systemc" debug="0" />72 <component name="Rename_unit" simulation="systemc" debug="0" />73 <component name="Special_Register_unit" simulation="systemc" debug="0" />74 <component name="OOO_Engine" simulation="systemc" debug="0" />75 <component name="Context_State" simulation="systemc" debug="0" />76 <component name="Decod" simulation="systemc" debug="0" />77 <component name="Decod_queue" simulation="systemc" debug="0" />78 <component name="Decod_unit" simulation="systemc" debug="0" />79 <component name="Front_end_Glue" simulation="systemc" debug="0" />80 <component name="Address_management" simulation="systemc" debug="0" />81 <component name="Ifetch_queue" simulation="systemc" debug="0" />82 <component name="Ifetch_unit_Glue" simulation="systemc" debug="0" />83 <component name="Ifetch_unit" simulation="systemc" debug="0" />84 <component name="Branch_Target_Buffer_Glue" simulation="systemc" debug="0" />85 <component name="Branch_Target_Buffer_Register" simulation="systemc" debug="0" />86 <component name="Branch_Target_Buffer" simulation="systemc" debug="0" />87 <component name="Direction_Glue" simulation="systemc" debug="0" />88 <component name="Direction" simulation="systemc" debug="0" />89 <component name="Prediction_unit_Glue" simulation="systemc" debug="0" />90 <component name="Return_Address_Stack" simulation="systemc" debug="0" />91 <component name="Update_Prediction_Table" simulation="systemc" debug="0" />92 <component name="Prediction_unit" simulation="systemc" debug="0" />93 <component name="Front_end" simulation="systemc" debug="0" />94 <component name="Icache_Access" simulation="systemc" debug="0" />95 <component name="Dcache_Access" simulation="systemc" debug="0" />96 <component name="Core_Glue" simulation="systemc" debug="0" />97 <component name="Core" simulation="systemc" debug="0" />98 <component name="TopLevel" simulation="systemc" debug="0" />32 <component name="Counter" model="systemc" debug="0" /> 33 <component name="Priority" model="systemc" debug="0" /> 34 <component name="Queue_Control" model="systemc" debug="0" /> 35 <component name="Queue" model="systemc" debug="0" /> 36 <component name="RegisterFile_Monolithic" model="systemc" debug="0" /> 37 <component name="RegisterFile_Multi_Banked" model="systemc" debug="0" /> 38 <component name="RegisterFile" model="systemc" debug="0" /> 39 <component name="Select_Priority_Fixed" model="systemc" debug="0" /> 40 <component name="Select" model="systemc" debug="0" /> 41 <component name="Shifter" model="systemc" debug="0" /> 42 <component name="Sort" model="systemc" debug="0" /> 43 <component name="Victim_Pseudo_LRU" model="systemc" debug="0" /> 44 <component name="Victim" model="systemc" debug="0" /> 45 <component name="Execute_loop_Glue" model="systemc" debug="0" /> 46 <component name="Functionnal_unit" model="systemc" debug="0" /> 47 <component name="Load_store_unit" model="systemc" debug="0" /> 48 <component name="Read_queue" model="systemc" debug="0" /> 49 <component name="Reservation_station" model="systemc" debug="0" /> 50 <component name="Read_unit" model="systemc" debug="0" /> 51 <component name="Execute_queue" model="systemc" debug="0" /> 52 <component name="Write_queue" model="systemc" debug="0" /> 53 <component name="Write_unit" model="systemc" debug="0" /> 54 <component name="Execution_unit_to_Write_unit" model="systemc" debug="0" /> 55 <component name="Read_unit_to_Execution_unit" model="systemc" debug="0" /> 56 <component name="Register_unit_Glue" model="systemc" debug="0" /> 57 <component name="Register_unit" model="systemc" debug="0" /> 58 <component name="Execute_loop" model="systemc" debug="0" /> 59 <component name="Commit_unit" model="systemc" debug="0" /> 60 <component name="Issue_queue" model="systemc" debug="0" /> 61 <component name="OOO_Engine_Glue" model="systemc" debug="0" /> 62 <component name="Reexecute_unit" model="systemc" debug="0" /> 63 <component name="Load_Store_pointer_unit" model="systemc" debug="0" /> 64 <component name="Dependency_checking_unit" model="systemc" debug="0" /> 65 <component name="Free_List_unit" model="systemc" debug="0" /> 66 <component name="Register_Address_Translation_unit" model="systemc" debug="0" /> 67 <component name="Register_translation_unit_Glue" model="systemc" debug="0" /> 68 <component name="Stat_List_unit" model="systemc" debug="0" /> 69 <component name="Register_translation_unit" model="systemc" debug="0" /> 70 <component name="Rename_unit_Glue" model="systemc" debug="0" /> 71 <component name="Rename_select" model="systemc" debug="0" /> 72 <component name="Rename_unit" model="systemc" debug="0" /> 73 <component name="Special_Register_unit" model="systemc" debug="0" /> 74 <component name="OOO_Engine" model="systemc" debug="0" /> 75 <component name="Context_State" model="systemc" debug="0" /> 76 <component name="Decod" model="systemc" debug="0" /> 77 <component name="Decod_queue" model="systemc" debug="0" /> 78 <component name="Decod_unit" model="systemc" debug="0" /> 79 <component name="Front_end_Glue" model="systemc" debug="0" /> 80 <component name="Address_management" model="systemc" debug="0" /> 81 <component name="Ifetch_queue" model="systemc" debug="0" /> 82 <component name="Ifetch_unit_Glue" model="systemc" debug="0" /> 83 <component name="Ifetch_unit" model="systemc" debug="0" /> 84 <component name="Branch_Target_Buffer_Glue" model="systemc" debug="0" /> 85 <component name="Branch_Target_Buffer_Register" model="systemc" debug="0" /> 86 <component name="Branch_Target_Buffer" model="systemc" debug="0" /> 87 <component name="Direction_Glue" model="systemc" debug="0" /> 88 <component name="Direction" model="systemc" debug="0" /> 89 <component name="Prediction_unit_Glue" model="systemc" debug="0" /> 90 <component name="Return_Address_Stack" model="systemc" debug="0" /> 91 <component name="Update_Prediction_Table" model="systemc" debug="0" /> 92 <component name="Prediction_unit" model="systemc" debug="0" /> 93 <component name="Front_end" model="systemc" debug="0" /> 94 <component name="Icache_Access" model="systemc" debug="0" /> 95 <component name="Dcache_Access" model="systemc" debug="0" /> 96 <component name="Core_Glue" model="systemc" debug="0" /> 97 <component name="Core" model="systemc" debug="0" /> 98 <component name="TopLevel" model="systemc" debug="0" /> 99 99 100 100 </parameters> -
trunk/IPs/systemC/processor/Morpheo/Script/SelfTest.sh
r110 r112 20 20 "Behavioural/Custom" 21 21 22 "Behavioural/Generic/Comparator" 22 23 "Behavioural/Generic/Counter" 24 "Behavioural/Generic/Divider" 25 "Behavioural/Generic/Multiplier" 23 26 "Behavioural/Generic/Priority" 24 27 "Behavioural/Generic/Queue_Control" -
trunk/IPs/systemC/processor/Morpheo/Script/execute.sh
r85 r112 5 5 #----------------------------------------------------------- 6 6 7 declare -a COMMAND; 8 declare -i CPT_OLD; 9 declare -i CPT; 10 declare FILE_CMD=; 11 declare FILE_CPT=; 12 declare FILE_CPU=; 13 declare LOCK_CPT="${HOME}/.lock-cpt"; 14 declare LOCK_CPU="${HOME}/.lock-cpu"; 7 #-----[ global variable ]----------------------------------- 15 8 16 9 #-----[ lock ]---------------------------------------------- 17 10 function lock () 18 11 { 19 lockfile -1 $ 1;12 lockfile -1 ${1}; 20 13 } 21 14 … … 23 16 function unlock () 24 17 { 25 rm -f $ 1;18 rm -f ${1}; 26 19 } 27 20 28 #-----[ m ain ]----------------------------------------------29 function m ain()21 #-----[ my_date ]------------------------------------------- 22 function my_date () 30 23 { 31 # no test, because the script execute_n have make all test 32 FILE_CMD=$1; 33 FILE_CPT=$2; 34 FILE_CPU=$3; 24 date +"%F %T"; 25 } 35 26 36 lock $LOCK_CPT; 37 if test ! -s $FILE_CPT; then 38 echo "0" > $FILE_CPT; 27 #-----[ execute_usage ]------------------------------------- 28 function execute_usage () 29 { 30 echo "Usage : ${0} work_dir file_cmd file_cpt file_cpu"; 31 echo "Arguments : "; 32 echo " * work_dir : directory to execute command"; 33 echo " * file_cmd : list of command"; 34 echo " * file_cpt : file with the index of next command to execute"; 35 echo " * file_cpu : tmp file to stock the current index"; 36 exit; 37 } 38 39 #-----[ execute_test_usage ]-------------------------------- 40 function execute_test_usage () 41 { 42 if test ${#} -ne 4; then 43 execute_usage; 39 44 fi; 40 unlock $LOCK_CPT;41 45 42 # lit les fichiers ligne par ligne et le place dans un tableau 46 if test ! -d ${1}; then 47 echo "Directory ${1} is invalid"; 48 fi; 49 } 50 51 #-----[ execute ]------------------------------------------- 52 function execute () 53 { 54 # test_usage 55 execute_test_usage ${*}; 56 57 local -a COMMAND; 58 local -i CPT_OLD; 59 local -i CPT; 60 local WORK_DIR=${1}; 61 local FILE_CMD=${2}; 62 local FILE_CPT=${3}; 63 local FILE_CPU=${4}; 64 local LOCK_CPT="${WORK_DIR}/.lock-cpt"; 65 local LOCK_CPU="${WORK_DIR}/.lock-cpu"; 66 local FILE_CMD="distexe.command"; 67 local FILE_OUT="distexe.output"; 68 69 70 # Init CPT if this thread is the first 71 lock ${LOCK_CPT}; 72 if test ! -s ${FILE_CPT}; then 73 echo "0" > ${FILE_CPT}; 74 fi; 75 unlock ${LOCK_CPT}; 76 77 # read, line by line, the command file and write in array 43 78 CPT=0; 44 79 45 80 while read line; do 46 COMMAND[$ CPT]="$line";47 CPT=$(($ CPT+1));48 done < $ 1;81 COMMAND[${CPT}]="${line}"; 82 CPT=$((${CPT}+1)); 83 done < ${FILE_CMD}; 49 84 50 echo " * <$ $> {"`date +"%F %T"`"} is ready";85 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is ready"; 51 86 52 87 # infinite loop … … 56 91 while test 1; do 57 92 # Take a number 58 CPT_OLD=$ CPT;93 CPT_OLD=${CPT}; 59 94 60 lock $LOCK_CPT; 61 CPT=`cat $FILE_CPT`; # read the index 62 echo "$(($CPT+1))" > $FILE_CPT; # write the next index 63 unlock $LOCK_CPT; 95 # Read the index, and increase 96 lock ${LOCK_CPT}; 97 CPT=$(cat ${FILE_CPT}); 98 echo "$((${CPT}+1))" > ${FILE_CPT}; 99 unlock ${LOCK_CPT}; 64 100 65 101 # test if this number is valid 66 if test $ CPT-ge ${#COMMAND[*]}; then102 if test ${CPT} -ge ${#COMMAND[*]}; then 67 103 CPT=${#COMMAND[*]}; 68 104 fi; … … 70 106 # test if between the cpt_old and cpt, there are a synchronisation command 71 107 72 # local -i CPT_SYNC=$ CPT_OLD;108 # local -i CPT_SYNC=${CPT}_OLD; 73 109 # 74 # while test $ CPT_SYNC -lt $CPT; do75 # if test -z "${COMMAND[$ CPT_SYNC]}"; then76 # echo " * <$ $> {"`date +"%F %T"`"} synchronisation [$CPT_SYNC]";110 # while test ${CPT}_SYNC -lt ${CPT}; do 111 # if test -z "${COMMAND[${CPT}_SYNC]}"; then 112 # echo " * <${HOSTNAME}-$$> {"$(my_date)"} synchronisation [${CPT}_SYNC]"; 77 113 # fi; 78 # CPT_SYNC=$(($ CPT_SYNC+1));114 # CPT_SYNC=$((${CPT}_SYNC+1)); 79 115 # done; 80 116 81 117 # test if this number is valid 82 if test $ CPT-eq ${#COMMAND[*]}; then118 if test ${CPT} -eq ${#COMMAND[*]}; then 83 119 break; 84 120 fi; 85 121 86 122 # Test if command is empty ! 87 if test ! -z "${COMMAND[$ CPT]}"; then88 local CUR _DIR=$PWD;89 90 mkdir "Task_$ CPT" &> /dev/null;91 cd "Task_$ CPT" &> /dev/null;92 echo " * <$ $> {"`date +"%F %T"`"} execute command [$CPT] : ${COMMAND[$CPT]}";93 echo "${COMMAND[$ CPT]}" > "command";94 chmod +x "command";95 eval "${COMMAND[$ CPT]}" &> "output";96 cd $ CUR_DIR&> /dev/null;123 if test ! -z "${COMMAND[${CPT}]}"; then 124 local CURREN_DIR=${PWD}; 125 cd ${WORK_DIR} &> /dev/null; 126 mkdir "Task_${CPT}" &> /dev/null; 127 cd "Task_${CPT}" &> /dev/null; 128 echo " * <${HOSTNAME}-$$> {"$(my_date)"} execute command [${CPT}] : ${COMMAND[${CPT}]}"; 129 echo "${COMMAND[${CPT}]}" > ${FILE_CMD}; 130 # chmod +x ${FILE_CMD}; 131 eval "${COMMAND[${CPT}]}" &> ${FILE_OUT}; 132 cd ${CURREN_DIR} &> /dev/null; 97 133 fi; 98 134 done; 99 135 100 echo " * <$ $> {"`date +"%F %T"`"} is done";136 echo " * <${HOSTNAME}-$$> {"$(my_date)"} is done"; 101 137 102 lock $ LOCK_CPU;103 CPT= `cat $FILE_CPU`;# read the index104 CPT=$(($ CPT-1));105 echo "$ CPT" > $FILE_CPU; # write the next index106 unlock $ LOCK_CPU;138 lock ${LOCK_CPU}; 139 CPT=$(cat ${FILE_CPU}); # read the index 140 CPT=$((${CPT}-1)); 141 echo "${CPT}" > ${FILE_CPU}; # write the next index 142 unlock ${LOCK_CPU}; 107 143 108 if test $ CPT-eq 0; then109 echo " * <$ $> {"`date +"%F %T"`"} All task is executed";110 rm $ FILE_CPU;144 if test ${CPT} -eq 0; then 145 echo " * <${HOSTNAME}-$$> {"$(my_date)"} All task is executed"; 146 rm ${FILE_CPU}; 111 147 fi; 112 148 } 113 149 114 150 #-----[ Corps ]--------------------------------------------- 115 main $*;151 execute ${*}; -
trunk/IPs/systemC/processor/Morpheo/Script/execute_n.sh
r85 r112 5 5 #----------------------------------------------------------- 6 6 7 #-----[ variable ]------------------------------------------ 8 declare -a COMMAND; 9 declare -i NB_PROCESS; 10 declare -i CPT; 11 declare FILE_CMD; 12 declare FILE_CPT; 13 declare FILE_CPU; 14 declare ID="cpu-${HOSTNAME}-$$" 7 #-----[ global variable ]----------------------------------- 15 8 16 #-----[ usage ]---------------------------------------------17 function usage()9 #-----[ nb_cpu ]-------------------------------------------- 10 function nb_cpu () 18 11 { 19 echo "Usage : $0 file [ nb_process ]"; 12 local FILE_CPUINFO=/proc/cpuinfo; 13 if test ! -f ${FILE_CPUINFO}; then 14 echo "\"${FILE_CPUINFO}\" don't exist." 15 usage; 16 fi; 17 18 #eval "${1}=`grep -c \"processor\" ${FILE_CPUINFO}`"; 19 grep -c "processor" ${FILE_CPUINFO}; 20 } 21 22 #-----[ execute_n_usage ]----------------------------------- 23 function execute_n_usage () 24 { 25 echo "Usage : ${0} word_dir file [ nb_process ]"; 20 26 echo "Arguments : "; 27 echo " * work_dir : directory to execute command"; 21 28 echo " * file : list of command"; 22 29 echo " * nb_process : number of process (default (and maximum) is the number of processor)"; … … 25 32 echo " * This script, for each command, create a directory : Task_X (X is the number of command), and execute the command in this directory."; 26 33 echo " * Two file is generate : \"output\" is the output of the execution, and \"command\" is the command lunch."; 27 28 echo " * Don't forgot the final end of line (else the last command is not executed ";34 # echo " * A command empty (no command on a line of file) is a synchronisation with all process" 35 echo " * Don't forgot the final end of line (else the last command is not executed)"; 29 36 echo ""; 30 37 exit; 31 38 } 32 39 33 #-----[ nb_cpu ]--------------------------------------------34 function nb_cpu()40 #-----[ execute_n_test_usage ]------------------------------ 41 function execute_n_test_usage () 35 42 { 36 local FILE_CPUINFO=/proc/cpuinfo; 37 if test ! -f $FILE_CPUINFO; then 38 echo "\"${FILE_CPUINFO}\" don't exist." 39 usage; 43 if test ${#} -ne 2 -a ${#} -ne 3; then 44 execute_n_usage; 40 45 fi; 41 46 42 eval "$1=`grep -c \"processor\" ${FILE_CPUINFO}`"; 43 } 44 45 #-----[ test_usage ]---------------------------------------- 46 function test_usage () 47 { 48 if test $# -ne 1 -a $# -ne 2; then 49 usage; 47 if test ! -d ${1}; then 48 echo "Directory ${1} is invalid"; 50 49 fi; 51 50 52 if test ! -f $1; then53 echo "File \"$1\" don't exist";54 51 if test -z "${MORPHEO_SCRIPT}"; then 52 echo "Environment variable MORPHEO_SCRIPT is not set"; 53 distexe_usage; 55 54 fi; 56 55 57 if test ! -s $1; then 58 echo "File \"$1\" is empty"; 59 usage; 56 if test ! -f ${2}; then 57 echo "File \"${2}\" don't exist"; 58 execute_n_usage; 59 fi; 60 61 if test ! -s ${2}; then 62 echo "File \"${2}\" is empty"; 63 execute_n_usage; 60 64 fi; 61 65 } 62 66 63 #-----[ main ]----------------------------------------------64 function main ()67 #-----[ execute_n_main ]------------------------------------ 68 function execute_n () 65 69 { 66 nb_cpu NB_PROCESS; 70 local -i NB_PROCESS=$(nb_cpu); 71 local -i CPT; 72 local WORK_DIR=${1}; 73 local FILE_CMD=${2}; 74 local FILE_CPT; 75 local FILE_CPU; 76 local ID="cpu-${HOSTNAME}-$$" 67 77 68 test_usage $*;78 execute_n_test_usage ${*}; 69 79 70 if test $ #-eq 2; then71 if test $ 2 -lt $NB_PROCESS; then72 NB_PROCESS=$ 2;80 if test ${#} -eq 2; then 81 if test ${3} -lt ${NB_PROCESS}; then 82 NB_PROCESS=${3}; 73 83 fi; 74 84 fi; 75 85 76 FILE_CMD=$1; 77 FILE_CPT="$HOME/control-"`basename $1`; 78 FILE_CPU="$HOME/$ID"; 86 FILE_CPT="${WORK_DIR}/control-"$(basename ${FILE_CMD}); 87 FILE_CPU="${WORK_DIR}/${ID}"; 79 88 80 echo "<$0>" ; 81 echo " * Initialisation ...." ; 82 echo " - host name : $HOSTNAME" ; 83 echo " - number of process : $NB_PROCESS" ; 89 echo " * <${HOSTNAME}> ${NB_PROCESS} process"; 84 90 85 91 local -i IT_NB_PROCESS=1; 86 92 local -i PID=$$; 87 93 88 echo "$ NB_PROCESS" > $FILE_CPU;94 echo "${NB_PROCESS}" > ${FILE_CPU}; 89 95 90 96 # create the same number of thread that processor 91 while test $ IT_NB_PROCESS -le $NB_PROCESS; do92 execute.sh $FILE_CMD $FILE_CPT $FILE_CPU&93 IT_NB_PROCESS=$(($ IT_NB_PROCESS+1));97 while test ${IT_NB_PROCESS} -le ${NB_PROCESS}; do 98 ${MORPHEO_SCRIPT}/execute.sh ${WORK_DIR} ${FILE_CMD} ${FILE_CPT} ${FILE_CPU} & 99 IT_NB_PROCESS=$((${IT_NB_PROCESS}+1)); 94 100 95 if test "$$" -ne $ PID; then101 if test "$$" -ne ${PID}; then 96 102 break; 97 103 fi; … … 100 106 101 107 #-----[ Corps ]--------------------------------------------- 102 main $*;108 execute_n ${*}; -
trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_allocation.cpp
r88 r112 52 52 // ~~~~~[ Interface "icache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 53 { 54 ALLOC1_INTERFACE ("icache_req",WEST,OUT,_("Request to instruction cache"),_nb_icache_port);54 ALLOC1_INTERFACE_BEGIN("icache_req",WEST,OUT,_("Request to instruction cache"),_nb_icache_port); 55 55 56 56 ALLOC1_VALACK_OUT(out_ICACHE_REQ_VAL ,behavioural::VAL); … … 60 60 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_ADDRESS ,"address" ,Ticache_address_t ,_size_icache_address ); 61 61 ALLOC1_SIGNAL_OUT(out_ICACHE_REQ_TYPE ,"type" ,Ticache_type_t ,_size_icache_type ); 62 63 ALLOC1_INTERFACE_END(_nb_icache_port); 62 64 } 63 65 64 66 // ~~~~~[ Interface "icache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 65 67 { 66 ALLOC1_INTERFACE ("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port);68 ALLOC1_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port); 67 69 68 70 ALLOC1_VALACK_IN ( in_ICACHE_RSP_VAL ,behavioural::VAL); … … 71 73 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_PACKET_ID ,"packet_id" ,Ticache_packet_t ,_size_icache_packet_id); 72 74 ALLOC1_SIGNAL_IN ( in_ICACHE_RSP_ERROR ,"error" ,Ticache_error_t ,_size_icache_error); 73 } 74 { 75 ALLOC2_INTERFACE("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port,_icache_nb_instruction[it1]); 75 76 ALLOC1_INTERFACE_END(_nb_icache_port); 77 } 78 { 79 ALLOC2_INTERFACE_BEGIN("icache_rsp",WEST,IN ,_("Respons from instruction cache"),_nb_icache_port,_icache_nb_instruction[it1]); 76 80 77 81 _ALLOC2_SIGNAL_IN ( in_ICACHE_RSP_INSTRUCTION ,"instruction",Ticache_instruction_t,_size_icache_instruction,_nb_icache_port,_icache_nb_instruction[it1]); 82 83 ALLOC2_INTERFACE_END(_nb_icache_port,_icache_nb_instruction[it1]); 78 84 } 79 85 80 86 // ~~~~~[ Interface "dcache_req" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 81 87 { 82 ALLOC1_INTERFACE ("dcache_req", OUT, NORTH, _("Request to data cache"),_nb_dcache_port);88 ALLOC1_INTERFACE_BEGIN("dcache_req", OUT, NORTH, _("Request to data cache"),_nb_dcache_port); 83 89 84 90 ALLOC1_VALACK_OUT(out_DCACHE_REQ_VAL ,behavioural::VAL); … … 89 95 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_WDATA ,"wdata" ,Tdcache_data_t ,_size_dcache_data); 90 96 ALLOC1_SIGNAL_OUT(out_DCACHE_REQ_TYPE ,"type" ,Tdcache_type_t ,_size_dcache_type); 97 98 ALLOC1_INTERFACE_END(_nb_dcache_port); 91 99 } 92 100 93 101 // ~~~~~[ Interface "dcache_rsp" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 94 102 { 95 ALLOC1_INTERFACE ("dcache_rsp", IN , NORTH, _("Respons from data cache"),_nb_dcache_port);103 ALLOC1_INTERFACE_BEGIN("dcache_rsp", IN , NORTH, _("Respons from data cache"),_nb_dcache_port); 96 104 97 105 ALLOC1_VALACK_IN ( in_DCACHE_RSP_VAL ,behavioural::VAL); … … 101 109 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_RDATA ,"rdata" ,Tdcache_data_t ,_size_dcache_data); 102 110 ALLOC1_SIGNAL_IN ( in_DCACHE_RSP_ERROR ,"error" ,Tdcache_error_t ,_size_dcache_error); 111 112 ALLOC1_INTERFACE_END(_nb_dcache_port); 103 113 } 104 114 105 115 // ~~~~~[ Interface : "interrupt" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 116 { 107 ALLOC1_INTERFACE ("interrupt", IN , NORTH, _("Interruption line"),_nb_thread);117 ALLOC1_INTERFACE_BEGIN("interrupt", IN , NORTH, _("Interruption line"),_nb_thread); 108 118 109 119 ALLOC1_SIGNAL_IN ( in_INTERRUPT_ENABLE ,"enable",Tcontrol_t ,1); 120 121 ALLOC1_INTERFACE_END(_nb_thread); 110 122 } 111 123 -
trunk/IPs/systemC/processor/Morpheo/TopLevel/src/Morpheo_configuration.cpp
r111 r112 72 72 param->_nb_reg_free , 73 73 param->_nb_rename_unit_bank , 74 param->_size_read_counter ,74 // param->_size_read_counter , 75 75 76 76 param->_nb_read_bloc ,
Note: See TracChangeset
for help on using the changeset viewer.