Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/Makefile
r81 r88 24 24 library_clean : Branch_Target_Buffer_Glue_library_clean 25 25 26 local_clean : 27 26 28 include $(DIR_COMPONENT)/Makefile.deps 27 29 include $(DIR_MORPHEO)/Behavioural/Makefile.flags -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/src/main.cpp
r81 r88 55 55 _nb_inst_predict , 56 56 _nb_inst_decod , 57 _nb_inst_update ); 57 _nb_inst_update , 58 true // is_toplevel 59 ); 58 60 59 61 msg(_("%s"),param->print(1).c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/SelfTest/src/test.cpp
r82 r88 23 23 #endif 24 24 25 Tusage_t _usage = USE_ALL; 26 27 // _usage = usage_unset(_usage,USE_SYSTEMC ); 28 // _usage = usage_unset(_usage,USE_VHDL ); 29 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); 30 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT); 31 // _usage = usage_unset(_usage,USE_POSITION ); 32 // _usage = usage_unset(_usage,USE_STATISTICS ); 33 // _usage = usage_unset(_usage,USE_INFORMATION ); 34 25 35 Branch_Target_Buffer_Glue * _Branch_Target_Buffer_Glue = new Branch_Target_Buffer_Glue 26 36 (name.c_str(), … … 29 39 #endif 30 40 _param, 31 USE_ALL);41 _usage); 32 42 33 43 #ifdef SYSTEMC -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/include/Parameters.h
r81 r88 29 29 public : uint32_t _size_buffer ; 30 30 public : uint32_t _associativity ; 31 31 //public : uint32_t _size_address ; 32 32 public : uint32_t _nb_inst_predict ; 33 33 public : uint32_t _nb_inst_decod ; … … 51 51 uint32_t nb_inst_predict , 52 52 uint32_t nb_inst_decod , 53 uint32_t nb_inst_update ); 53 uint32_t nb_inst_update , 54 bool is_toplevel=false 55 ); 54 56 // public : Parameters (Parameters & param) ; 55 57 public : ~Parameters () ; 58 59 public : void copy (void); 56 60 57 61 public : Parameters_test msg_error (void); -
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.cpp
r81 r88 39 39 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Branch_Target_Buffer_Glue == true 42 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 std::cout << *param << std::endl; 45 #endif 46 41 47 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Allocation"); 42 48 … … 48 54 49 55 #ifdef STATISTICS 50 if ( _usage & USE_STATISTICS)56 if (usage_is_set(_usage,USE_STATISTICS)) 51 57 { 52 58 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Allocation of statistics"); … … 57 63 58 64 #ifdef VHDL 59 if ( _usage & USE_VHDL)65 if (usage_is_set(_usage,USE_VHDL)) 60 66 { 61 67 // generate the vhdl … … 67 73 68 74 #ifdef SYSTEMC 69 if ( _usage & USE_SYSTEMC)75 if (usage_is_set(_usage,USE_SYSTEMC)) 70 76 { 71 77 # if defined(STATISTICS) or defined(VHDL_TESTBENCH) … … 104 110 } 105 111 106 # ifdef SYSTEMCASS_SPECIFIC107 // List dependency information108 109 for (uint32_t i=0; i<_param->_nb_inst_predict; i++)110 {111 for (uint32_t j=0; j<_param->_associativity; j++)112 (*(out_PREDICT_HIT [i])) (*(in_PREDICT_REGISTER_HIT [i][j]));113 if (_param->_have_port_victim)114 (*(out_PREDICT_HIT [i])) (*(in_PREDICT_SORT_INDEX [i]));115 116 for (uint32_t j=0; j<_param->_associativity; j++)117 (*(out_PREDICT_ADDRESS_SRC [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC [i][j]));118 if (_param->_have_port_victim)119 (*(out_PREDICT_ADDRESS_SRC [i])) (*(in_PREDICT_SORT_INDEX [i]));120 121 for (uint32_t j=0; j<_param->_associativity; j++)122 (*(out_PREDICT_ADDRESS_DEST [i])) (*(in_PREDICT_REGISTER_ADDRESS_DEST [i][j]));123 if (_param->_have_port_victim)124 (*(out_PREDICT_ADDRESS_DEST [i])) (*(in_PREDICT_SORT_INDEX [i]));125 126 for (uint32_t j=0; j<_param->_associativity; j++)127 (*(out_PREDICT_CONDITION [i])) (*(in_PREDICT_REGISTER_CONDITION [i][j]));128 if (_param->_have_port_victim)129 (*(out_PREDICT_CONDITION [i])) (*(in_PREDICT_SORT_INDEX [i]));130 131 for (uint32_t j=0; j<_param->_associativity; j++)132 (*(out_PREDICT_LAST_TAKE [i])) (*(in_PREDICT_REGISTER_LAST_TAKE [i][j]));133 if (_param->_have_port_victim)134 (*(out_PREDICT_LAST_TAKE [i])) (*(in_PREDICT_SORT_INDEX [i]));135 136 for (uint32_t j=0; j<_param->_associativity; j++)137 (*(out_PREDICT_IS_ACCURATE [i])) (*(in_PREDICT_REGISTER_IS_ACCURATE [i][j]));138 if (_param->_have_port_victim)139 (*(out_PREDICT_IS_ACCURATE [i])) (*(in_PREDICT_SORT_INDEX [i]));140 141 142 (*(out_PREDICT_ACK [i])) (*(in_PREDICT_REGISTER_ACK [i]));143 if (_param->_have_port_victim)144 {145 (*(out_PREDICT_ACK [i])) (*(in_PREDICT_SORT_VAL [i]));146 (*(out_PREDICT_ACK [i])) (*(in_PREDICT_VICTIM_ACK [i]));147 }148 149 (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_VAL [i]));150 if (_param->_have_port_victim)151 {152 (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_SORT_VAL [i]));153 (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_VICTIM_ACK [i]));154 }155 156 if (_param->_have_port_victim)157 {158 (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_VAL [i]));159 (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_REGISTER_ACK [i]));160 (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_SORT_VAL [i]));161 162 for (uint32_t j=0; j<_param->_associativity; j++)163 (*(out_PREDICT_VICTIM_HIT [i])) (*(in_PREDICT_REGISTER_HIT [i][j]));164 (*(out_PREDICT_VICTIM_HIT [i])) (*(in_PREDICT_SORT_INDEX [i]));165 166 if (not _param->_is_full_associative)167 {168 for (uint32_t j=0; j<_param->_associativity; j++)169 (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC [i][j]));170 (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_SORT_INDEX [i]));171 }172 (*(out_PREDICT_VICTIM_INDEX [i])) (*(in_PREDICT_SORT_INDEX [i]));173 }174 }175 # endif112 // # ifdef SYSTEMCASS_SPECIFIC 113 // // List dependency information 114 115 // for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 116 // { 117 // for (uint32_t j=0; j<_param->_associativity; j++) 118 // (*(out_PREDICT_HIT [i])) (*(in_PREDICT_REGISTER_HIT [i][j])); 119 // if (_param->_have_port_victim) 120 // (*(out_PREDICT_HIT [i])) (*(in_PREDICT_SORT_INDEX [i])); 121 122 // for (uint32_t j=0; j<_param->_associativity; j++) 123 // (*(out_PREDICT_ADDRESS_SRC [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC [i][j])); 124 // if (_param->_have_port_victim) 125 // (*(out_PREDICT_ADDRESS_SRC [i])) (*(in_PREDICT_SORT_INDEX [i])); 126 127 // for (uint32_t j=0; j<_param->_associativity; j++) 128 // (*(out_PREDICT_ADDRESS_DEST [i])) (*(in_PREDICT_REGISTER_ADDRESS_DEST [i][j])); 129 // if (_param->_have_port_victim) 130 // (*(out_PREDICT_ADDRESS_DEST [i])) (*(in_PREDICT_SORT_INDEX [i])); 131 132 // for (uint32_t j=0; j<_param->_associativity; j++) 133 // (*(out_PREDICT_CONDITION [i])) (*(in_PREDICT_REGISTER_CONDITION [i][j])); 134 // if (_param->_have_port_victim) 135 // (*(out_PREDICT_CONDITION [i])) (*(in_PREDICT_SORT_INDEX [i])); 136 137 // for (uint32_t j=0; j<_param->_associativity; j++) 138 // (*(out_PREDICT_LAST_TAKE [i])) (*(in_PREDICT_REGISTER_LAST_TAKE [i][j])); 139 // if (_param->_have_port_victim) 140 // (*(out_PREDICT_LAST_TAKE [i])) (*(in_PREDICT_SORT_INDEX [i])); 141 142 // for (uint32_t j=0; j<_param->_associativity; j++) 143 // (*(out_PREDICT_IS_ACCURATE [i])) (*(in_PREDICT_REGISTER_IS_ACCURATE [i][j])); 144 // if (_param->_have_port_victim) 145 // (*(out_PREDICT_IS_ACCURATE [i])) (*(in_PREDICT_SORT_INDEX [i])); 146 147 148 // (*(out_PREDICT_ACK [i])) (*(in_PREDICT_REGISTER_ACK [i])); 149 // if (_param->_have_port_victim) 150 // { 151 // (*(out_PREDICT_ACK [i])) (*(in_PREDICT_SORT_VAL [i])); 152 // (*(out_PREDICT_ACK [i])) (*(in_PREDICT_VICTIM_ACK [i])); 153 // } 154 155 // (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_VAL [i])); 156 // if (_param->_have_port_victim) 157 // { 158 // (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_SORT_VAL [i])); 159 // (*(out_PREDICT_REGISTER_VAL [i])) (*(in_PREDICT_VICTIM_ACK [i])); 160 // } 161 162 // if (_param->_have_port_victim) 163 // { 164 // (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_VAL [i])); 165 // (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_REGISTER_ACK [i])); 166 // (*(out_PREDICT_VICTIM_VAL [i])) (*(in_PREDICT_SORT_VAL [i])); 167 168 // for (uint32_t j=0; j<_param->_associativity; j++) 169 // (*(out_PREDICT_VICTIM_HIT [i])) (*(in_PREDICT_REGISTER_HIT [i][j])); 170 // (*(out_PREDICT_VICTIM_HIT [i])) (*(in_PREDICT_SORT_INDEX [i])); 171 172 // if (not _param->_is_full_associative) 173 // { 174 // for (uint32_t j=0; j<_param->_associativity; j++) 175 // (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_REGISTER_ADDRESS_SRC [i][j])); 176 // (*(out_PREDICT_VICTIM_ADDRESS [i])) (*(in_PREDICT_SORT_INDEX [i])); 177 // } 178 // (*(out_PREDICT_VICTIM_INDEX [i])) (*(in_PREDICT_SORT_INDEX [i])); 179 // } 180 // } 181 // # endif 176 182 177 183 log_printf(INFO,Branch_Target_Buffer_Glue,FUNCTION,"Method - genMealy_decod"); … … 271 277 272 278 #ifdef STATISTICS 273 if ( _usage & USE_STATISTICS)279 if (usage_is_set(_usage,USE_STATISTICS)) 274 280 { 275 281 statistics_deallocation(); -
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
r81 r88 65 65 ALLOC1_SIGNAL_OUT(out_PREDICT_ACK , "ack" ,Tcontrol_t , 1); 66 66 ALLOC1_SIGNAL_OUT(out_PREDICT_HIT , "hit" ,Tcontrol_t , 1); 67 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC , "address_src" ,Tgeneral_data_t , _param->_size_ address);68 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST , "address_dest" ,Tgeneral_data_t , _param->_size_ address);67 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC , "address_src" ,Tgeneral_data_t , _param->_size_instruction_address); 68 ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST , "address_dest" ,Tgeneral_data_t , _param->_size_instruction_address); 69 69 ALLOC1_SIGNAL_OUT(out_PREDICT_CONDITION , "condition" ,Tbranch_condition_t, _param->_size_branch_condition); 70 70 ALLOC1_SIGNAL_OUT(out_PREDICT_LAST_TAKE , "last_take" ,Tcontrol_t , 1); … … 89 89 90 90 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_HIT ,"register_hit" ,Tcontrol_t ,1); 91 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_SRC ,"register_address_src" ,Tgeneral_data_t ,_param->_size_ address);92 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_DEST,"register_address_dest",Tgeneral_data_t ,_param->_size_ address);91 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_SRC ,"register_address_src" ,Tgeneral_data_t ,_param->_size_instruction_address); 92 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_ADDRESS_DEST,"register_address_dest",Tgeneral_data_t ,_param->_size_instruction_address); 93 93 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_CONDITION ,"register_condition" ,Tbranch_condition_t,_param->_size_branch_condition); 94 94 ALLOC2_SIGNAL_IN ( in_PREDICT_REGISTER_LAST_TAKE ,"register_last_take" ,Tcontrol_t ,1); … … 104 104 ALLOC1_SIGNAL_OUT(out_DECOD_ACK ,"ack" ,Tcontrol_t ,1); 105 105 if (not _param->_is_full_associative) 106 ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t,_param->_size_ address);106 ALLOC1_SIGNAL_IN ( in_DECOD_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t,_param->_size_instruction_address); 107 107 108 108 ALLOC1_SIGNAL_OUT(out_DECOD_REGISTER_VAL ,"register_val" ,Tcontrol_t ,1); … … 124 124 ALLOC1_SIGNAL_OUT(out_UPDATE_ACK ,"ack" ,Tcontrol_t ,1); 125 125 if (not _param->_is_full_associative) 126 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t,_param->_size_ address);126 ALLOC1_SIGNAL_IN ( in_UPDATE_ADDRESS_SRC ,"address_src" ,Tgeneral_data_t,_param->_size_instruction_address); 127 127 128 128 ALLOC1_SIGNAL_OUT(out_UPDATE_REGISTER_VAL ,"register_val" ,Tcontrol_t ,1); … … 140 140 141 141 #ifdef POSITION 142 _component->generate_file(); 142 if (usage_is_set(_usage,USE_POSITION)) 143 _component->generate_file(); 143 144 #endif 144 145 -
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
r81 r88 24 24 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 25 25 26 if ( _usage & USE_SYSTEMC)26 if (usage_is_set(_usage,USE_SYSTEMC)) 27 27 { 28 28 delete in_CLOCK ; -
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_end_cycle.cpp
r81 r88 26 26 27 27 #ifdef STATISTICS 28 _stat->end_cycle(); 28 if (usage_is_set(_usage,USE_STATISTICS)) 29 _stat->end_cycle(); 29 30 #endif 30 31 … … 32 33 // Evaluation before read the ouput signal 33 34 // sc_start(0); 34 _interfaces->testbench(); 35 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 36 _interfaces->testbench(); 35 37 #endif 36 38 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Parameters.cpp
r81 r88 27 27 uint32_t nb_inst_predict , 28 28 uint32_t nb_inst_decod , 29 uint32_t nb_inst_update ) 29 uint32_t nb_inst_update , 30 bool is_toplevel) 30 31 { 31 32 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); … … 34 35 _size_buffer = size_buffer ; 35 36 _associativity = associativity ; 36 37 // _size_address = size_address ; 37 38 _nb_inst_predict = nb_inst_predict ; 38 39 _nb_inst_decod = nb_inst_decod ; … … 50 51 51 52 test(); 53 54 if (is_toplevel) 55 { 56 _size_instruction_address = size_address; 57 58 copy(); 59 } 60 52 61 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End"); 53 62 }; … … 70 79 }; 71 80 81 #undef FUNCTION 82 #define FUNCTION "Branch_Target_Buffer_Glue::copy" 83 void Parameters::copy (void) 84 { 85 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"Begin"); 86 log_printf(FUNC,Branch_Target_Buffer_Glue,FUNCTION,"End"); 87 }; 88 72 89 }; // end namespace branch_target_buffer_glue 73 90 }; // end namespace branch_target_buffer -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Branch_Target_Buffer/Branch_Target_Buffer_Glue/src/Parameters_print.cpp
r81 r88 31 31 xml.singleton_begin("size_buffer "); xml.attribut("value",toString(_size_buffer )); xml.singleton_end(); 32 32 xml.singleton_begin("associativity "); xml.attribut("value",toString(_associativity )); xml.singleton_end(); 33 33 // xml.singleton_begin("size_address "); xml.attribut("value",toString(_size_address )); xml.singleton_end(); 34 34 xml.singleton_begin("nb_inst_predict "); xml.attribut("value",toString(_nb_inst_predict )); xml.singleton_end(); 35 35 xml.singleton_begin("nb_inst_decod "); xml.attribut("value",toString(_nb_inst_decod )); xml.singleton_end();
Note: See TracChangeset
for help on using the changeset viewer.