Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src
- Timestamp:
- Dec 10, 2008, 7:31:39 PM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters.cpp
r81 r88 35 35 uint32_t nb_bypass_memory , 36 36 uint32_t size_store_queue , 37 uint32_t size_load_queue ): 38 _size_queue (size_queue ), 39 _nb_inst_retire (nb_inst_retire ), 40 _nb_context (nb_context ), 41 _nb_front_end (nb_front_end ), 42 _nb_ooo_engine (nb_ooo_engine ), 43 _nb_packet (nb_packet ), 44 _size_general_data (size_general_data ), 45 _size_special_data (size_special_data ), 46 _nb_general_register (nb_general_register ), 47 _nb_special_register (nb_special_register ), 48 _nb_gpr_write (nb_gpr_write ), 49 _nb_spr_write (nb_spr_write ), 50 _nb_bypass_write (nb_bypass_write ), 51 _nb_bypass_memory (nb_bypass_memory ), 52 _size_store_queue (size_store_queue ), 53 _size_load_queue (size_load_queue ), 54 55 _size_context_id (static_cast<uint32_t>(log2(_nb_context ))), 56 _size_front_end_id (static_cast<uint32_t>(log2(_nb_front_end ))), 57 _size_ooo_engine_id (static_cast<uint32_t>(log2(_nb_ooo_engine ))), 58 _size_rob_id (static_cast<uint32_t>(log2(_nb_packet ))), 59 _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))), 60 _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))), 61 62 _have_port_context_id (_size_context_id > 0), 63 _have_port_front_end_id (_size_front_end_id > 0), 64 _have_port_ooo_engine_id (_size_ooo_engine_id > 0), 65 _have_port_rob_id (_size_rob_id > 0), 66 _have_port_load_queue_ptr(_size_load_queue > 1) 37 uint32_t size_load_queue , 38 bool is_toplevel) 67 39 { 68 40 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 41 42 _size_queue = size_queue ; 43 _nb_inst_retire = nb_inst_retire ; 44 _nb_context = nb_context ; 45 _nb_front_end = nb_front_end ; 46 _nb_ooo_engine = nb_ooo_engine ; 47 _nb_packet = nb_packet ; 48 _nb_general_register = nb_general_register ; 49 _nb_special_register = nb_special_register ; 50 _nb_gpr_write = nb_gpr_write ; 51 _nb_spr_write = nb_spr_write ; 52 _nb_bypass_write = nb_bypass_write ; 53 _nb_bypass_memory = nb_bypass_memory ; 54 69 55 test(); 56 57 if (is_toplevel) 58 { 59 _size_context_id = log2(_nb_context ); 60 _size_front_end_id = log2(_nb_front_end ); 61 _size_ooo_engine_id = log2(_nb_ooo_engine ); 62 _size_rob_ptr = log2(_nb_packet ); 63 _size_general_register = log2(_nb_general_register); 64 _size_special_register = log2(_nb_special_register); 65 _size_general_data = size_general_data ; 66 _size_special_data = size_special_data ; 67 _size_store_queue_ptr = log2(size_store_queue ); 68 _size_load_queue_ptr = log2(size_load_queue ); 69 70 _have_port_context_id = _size_context_id > 0; 71 _have_port_front_end_id = _size_front_end_id > 0; 72 _have_port_ooo_engine_id = _size_ooo_engine_id > 0; 73 _have_port_rob_ptr = _size_rob_ptr > 0; 74 _have_port_load_queue_ptr= _size_load_queue_ptr > 0; 75 76 copy(); 77 } 78 70 79 log_printf(FUNC,Reservation_station,FUNCTION,"End"); 71 80 }; 72 81 82 // #undef FUNCTION 83 // #define FUNCTION "Reservation_station::Parameters (copy)" 84 // Parameters::Parameters (Parameters & param): 85 // _size_queue (param._size_queue ), 86 // _nb_inst_retire (param._nb_inst_retire ), 87 // _nb_context (param._nb_context ), 88 // _nb_front_end (param._nb_front_end ), 89 // _nb_ooo_engine (param._nb_ooo_engine ), 90 // _nb_packet (param._nb_packet ), 91 // _size_general_data (param._size_general_data ), 92 // _size_special_data (param._size_special_data ), 93 // _nb_general_register (param._nb_general_register ), 94 // _nb_special_register (param._nb_special_register ), 95 // _nb_gpr_write (param._nb_gpr_write ), 96 // _nb_spr_write (param._nb_spr_write ), 97 // _nb_bypass_write (param._nb_bypass_write ), 98 // _nb_bypass_memory (param._nb_bypass_memory ), 99 // _size_store_queue (param._size_store_queue ), 100 // _size_load_queue (param._size_load_queue ), 101 102 // _size_context_id (param._size_context_id ), 103 // _size_front_end_id (param._size_front_end_id ), 104 // _size_ooo_engine_id (param._size_ooo_engine_id ), 105 // _size_rob_id (param._size_rob_id ), 106 // _size_general_register (param._size_general_register ), 107 // _size_special_register (param._size_special_register ), 108 109 // _have_port_context_id (param._have_port_context_id ), 110 // _have_port_front_end_id (param._have_port_front_end_id ), 111 // _have_port_ooo_engine_id (param._have_port_ooo_engine_id), 112 // _have_port_rob_id (param._have_port_rob_id ), 113 // _have_port_load_queue_ptr(param._have_port_load_queue_ptr) 114 // { 115 // log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 116 // test(); 117 // log_printf(FUNC,Reservation_station,FUNCTION,"End"); 118 // }; 119 73 120 #undef FUNCTION 74 #define FUNCTION "Reservation_station::Parameters (copy)" 75 Parameters::Parameters (Parameters & param): 76 _size_queue (param._size_queue ), 77 _nb_inst_retire (param._nb_inst_retire ), 78 _nb_context (param._nb_context ), 79 _nb_front_end (param._nb_front_end ), 80 _nb_ooo_engine (param._nb_ooo_engine ), 81 _nb_packet (param._nb_packet ), 82 _size_general_data (param._size_general_data ), 83 _size_special_data (param._size_special_data ), 84 _nb_general_register (param._nb_general_register ), 85 _nb_special_register (param._nb_special_register ), 86 _nb_gpr_write (param._nb_gpr_write ), 87 _nb_spr_write (param._nb_spr_write ), 88 _nb_bypass_write (param._nb_bypass_write ), 89 _nb_bypass_memory (param._nb_bypass_memory ), 90 _size_store_queue (param._size_store_queue ), 91 _size_load_queue (param._size_load_queue ), 92 93 _size_context_id (param._size_context_id ), 94 _size_front_end_id (param._size_front_end_id ), 95 _size_ooo_engine_id (param._size_ooo_engine_id ), 96 _size_rob_id (param._size_rob_id ), 97 _size_general_register (param._size_general_register ), 98 _size_special_register (param._size_special_register ), 99 100 _have_port_context_id (param._have_port_context_id ), 101 _have_port_front_end_id (param._have_port_front_end_id ), 102 _have_port_ooo_engine_id (param._have_port_ooo_engine_id), 103 _have_port_rob_id (param._have_port_rob_id ), 104 _have_port_load_queue_ptr(param._have_port_load_queue_ptr) 121 #define FUNCTION "Reservation_station::~Parameters" 122 Parameters::~Parameters (void) 105 123 { 106 124 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 107 test();108 125 log_printf(FUNC,Reservation_station,FUNCTION,"End"); 109 126 }; 110 127 111 128 #undef FUNCTION 112 #define FUNCTION "Reservation_station:: ~Parameters"113 Parameters::~Parameters ()129 #define FUNCTION "Reservation_station::copy" 130 void Parameters::copy (void) 114 131 { 115 132 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Parameters_print.cpp
r81 r88 42 42 xml.singleton_begin("nb_bypass_write "); xml.attribut("value",toString(_nb_bypass_write )); xml.singleton_end(); 43 43 xml.singleton_begin("nb_bypass_memory "); xml.attribut("value",toString(_nb_bypass_memory )); xml.singleton_end(); 44 45 44 // xml.singleton_begin("size_store_queue "); xml.attribut("value",toString(_size_store_queue )); xml.singleton_end(); 45 // xml.singleton_begin("size_load_queue "); xml.attribut("value",toString(_size_load_queue )); xml.singleton_end(); 46 46 xml.balise_close(); 47 47 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station.cpp
r82 r88 39 39 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 40 40 41 #if DEBUG_Reservation_station == true 42 log_printf(INFO,Reservation_station,FUNCTION,_("<%s> Parameters"),_name.c_str()); 43 44 std::cout << *param << std::endl; 45 #endif 46 41 47 #ifdef SYSTEMC 42 48 log_printf(INFO,Reservation_station,FUNCTION,"Allocation"); … … 46 52 47 53 #ifdef STATISTICS 48 log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics"); 49 50 statistics_declaration(param_statistics); 54 if (usage_is_set(_usage,USE_STATISTICS)) 55 { 56 log_printf(INFO,Reservation_station,FUNCTION,"Allocation of statistics"); 57 58 statistics_declaration(param_statistics); 59 } 51 60 #endif 52 61 53 62 #ifdef VHDL 54 // generate the vhdl 55 log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl"); 56 57 vhdl(); 63 if (usage_is_set(_usage,USE_VHDL)) 64 { 65 // generate the vhdl 66 log_printf(INFO,Reservation_station,FUNCTION,"Generate the vhdl"); 67 68 vhdl(); 69 } 58 70 #endif 59 71 60 72 #ifdef SYSTEMC 73 if (usage_is_set(_usage,USE_SYSTEMC)) 74 { 61 75 //#if defined(STATISTICS) or defined(VHDL_TESTBENCH) 62 76 log_printf(INFO,Reservation_station,FUNCTION,"Method - transition"); … … 80 94 // List dependency information 81 95 #endif 82 96 } 83 97 #endif 84 98 log_printf(FUNC,Reservation_station,FUNCTION,"End"); … … 92 106 93 107 #ifdef STATISTICS 94 log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file"); 95 96 delete _stat; 108 if (usage_is_set(_usage,USE_STATISTICS)) 109 { 110 log_printf(INFO,Reservation_station,FUNCTION,"Generate Statistics file"); 111 112 delete _stat; 113 } 97 114 #endif 98 115 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_allocation.cpp
r82 r88 3 3 * $Id$ 4 4 * 5 * [ 5 * [ Description ] 6 6 * 7 7 */ … … 37 37 _interfaces = entity->set_interfaces(); 38 38 39 // ~~~~~[ 39 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 40 40 41 41 Interface * interface = _interfaces->set_interface("" … … 50 50 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 51 51 52 // ~~~~~[ 52 // ~~~~~[ Interface : "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~ 53 53 { 54 54 Interface_fifo * interface = _interfaces->set_interface("insert" … … 68 68 if (_param->_have_port_ooo_engine_id) 69 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_ id)71 in_INSERT_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ 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 72 in_INSERT_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 73 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" , log2(_param->_size_store_queue));74 in_INSERT_STORE_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("store_queue_ptr_write" ,_param->_size_store_queue_ptr); 75 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" , log2(_param->_size_load_queue));76 in_INSERT_LOAD_QUEUE_PTR_WRITE = interface->set_signal_in <Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 77 77 in_INSERT_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat" ,1 ); 78 78 in_INSERT_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); … … 95 95 } 96 96 97 // ~~~~~[ 97 // ~~~~~[ Interface : "retire" ]~~~~~~~~~~~~~~~~~~~~~~~~~~ 98 98 out_RETIRE_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_inst_retire]; 99 99 in_RETIRE_ACK = new SC_IN (Tcontrol_t ) * [_param->_nb_inst_retire]; … … 104 104 if (_param->_have_port_ooo_engine_id) 105 105 out_RETIRE_OOO_ENGINE_ID = new SC_OUT(Tcontext_t ) * [_param->_nb_inst_retire]; 106 if (_param->_have_port_rob_ id)106 if (_param->_have_port_rob_ptr) 107 107 out_RETIRE_ROB_ID = new SC_OUT(Tpacket_t ) * [_param->_nb_inst_retire]; 108 108 out_RETIRE_OPERATION = new SC_OUT(Toperation_t ) * [_param->_nb_inst_retire]; … … 138 138 if (_param->_have_port_ooo_engine_id) 139 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_ id)141 out_RETIRE_ROB_ID [i] = interface->set_signal_out<Tpacket_t > ("rob_id" ,_param->_size_rob_ 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 142 out_RETIRE_OPERATION [i] = interface->set_signal_out<Toperation_t > ("operation" ,_param->_size_operation); 143 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" , log2(_param->_size_store_queue));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 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" , log2(_param->_size_load_queue));146 out_RETIRE_LOAD_QUEUE_PTR_WRITE [i] = interface->set_signal_out<Tlsq_ptr_t> ("load_queue_ptr_write" ,_param->_size_load_queue_ptr ); 147 147 148 148 out_RETIRE_HAS_IMMEDIAT [i] = interface->set_signal_out<Tcontrol_t > ("has_immediat" ,1); … … 157 157 } 158 158 159 // ~~~~~[ 159 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 160 160 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; 161 161 if (_param->_have_port_ooo_engine_id) … … 181 181 } 182 182 183 // ~~~~~[ 183 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 184 184 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; 185 185 if (_param->_have_port_ooo_engine_id) … … 205 205 } 206 206 207 // ~~~~~[ 207 // ~~~~~[ Interface : "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 208 208 if (_param->_have_port_ooo_engine_id) 209 209 in_BYPASS_WRITE_OOO_ENGINE_ID = new SC_IN (Tcontext_t ) * [_param->_nb_bypass_write]; … … 235 235 } 236 236 237 // ~~~~~[ 237 // ~~~~~[ Interface : "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 238 238 in_BYPASS_MEMORY_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_bypass_memory]; 239 239 if (_param->_have_port_ooo_engine_id) … … 260 260 261 261 262 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 262 if (usage_is_set(_usage,USE_SYSTEMC)) 263 { 264 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 263 265 internal_RETIRE_VAL = new Tcontrol_t [_param->_nb_inst_retire]; 264 266 internal_RETIRE_SLOT = new uint32_t [_param->_nb_inst_retire]; 265 266 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 267 268 #ifdef POSITION 269 _component->generate_file(); 267 } 268 269 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 270 271 #ifdef POSITION 272 if (usage_is_set(_usage,USE_POSITION)) 273 _component->generate_file(); 270 274 #endif 271 275 #ifdef SYSTEMC_VHDL_COMPATIBILITY -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_deallocation.cpp
r81 r88 28 28 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 29 29 30 if (usage_is_set(_usage,USE_SYSTEMC)) 31 { 30 32 delete in_CLOCK ; 31 33 delete in_NRESET; … … 39 41 if (_param->_have_port_ooo_engine_id) 40 42 delete in_INSERT_OOO_ENGINE_ID ; 41 if (_param->_have_port_rob_ id)43 if (_param->_have_port_rob_ptr) 42 44 delete in_INSERT_ROB_ID ; 43 45 delete in_INSERT_OPERATION ; … … 73 75 if (_param->_have_port_ooo_engine_id) 74 76 delete [] out_RETIRE_OOO_ENGINE_ID ; 75 if (_param->_have_port_rob_ id)77 if (_param->_have_port_rob_ptr) 76 78 delete [] out_RETIRE_ROB_ID ; 77 79 delete [] out_RETIRE_OPERATION ; … … 119 121 // ~~~~~[ internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 120 122 delete [] internal_RETIRE_VAL; 121 123 delete [] internal_RETIRE_SLOT; 124 } 122 125 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 126 … … 139 142 }; // end namespace multi_execute_loop 140 143 }; // end namespace core 141 142 144 }; // end namespace behavioural 143 145 }; // end namespace morpheo -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_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 log_printf(FUNC,Reservation_station,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_genMoore.cpp
r81 r88 24 24 void Reservation_station::genMoore (void) 25 25 { 26 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 26 log_begin(Reservation_station,FUNCTION); 27 log_function(Reservation_station,FUNCTION,_name.c_str()); 27 28 28 29 // ~~~~~[ Interface "insert" ]~~~~~~~~~~~~~~~~~~~~~~~~ … … 97 98 if (_param->_have_port_ooo_engine_id) 98 99 PORT_WRITE(out_RETIRE_OOO_ENGINE_ID [i],_queue[index_find]._ooo_engine_id); 99 if (_param->_have_port_rob_ id)100 if (_param->_have_port_rob_ptr) 100 101 PORT_WRITE(out_RETIRE_ROB_ID [i],_queue[index_find]._rob_id); 101 102 PORT_WRITE(out_RETIRE_OPERATION [i],_queue[index_find]._operation); … … 116 117 } 117 118 118 log_ printf(FUNC,Reservation_station,FUNCTION,"End");119 log_end(Reservation_station,FUNCTION); 119 120 }; 120 121 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
r81 r88 20 20 21 21 #ifdef SYSTEMC_VHDL_COMPATIBILITY 22 #define dump_queue() \ 23 do\ 24 {\ 25 log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\ 26 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_nb_elt);\ 27 for (uint32_t j=0;j<_param->_size_queue; j++)\ 28 {\ 29 cout << "\t"\ 30 << "[" << j << "] "\ 31 << "{" << _queue[j]._rob_id << " - "<< _queue[j]._context_id << "} " << " - "<< _queue[j]._front_end_id << "} " << " - "<< _queue[j]._ooo_engine_id << "} "\ 32 << _queue[j]._data_ra_val << ", "\ 33 << _queue[j]._num_reg_ra << " - "\ 34 << _queue[j]._data_rb_val << ","\ 35 << _queue[j]._num_reg_rb << " - "\ 36 << _queue[j]._data_rc_val << ","\ 37 << _queue[j]._num_reg_rc \ 38 << endl;\ 39 }\ 40 } while (0) 41 #else 42 #define dump_queue() \ 43 do\ 44 {\ 45 log_printf(TRACE,Reservation_station,FUNCTION," * dump queue");\ 46 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_nb_elt);\ 47 for (uint32_t j=0;j<_param->_size_queue; j++)\ 48 {\ 49 cout << "\t"\ 50 << "[" << (*_queue_control)[j] << "] "\ 51 << "{" << _queue[(*_queue_control)[j]]._rob_id << " - "<< _queue[(*_queue_control)[j]]._context_id << "} " << " - "<< _queue[(*_queue_control)[j]]._front_end_id << "} " << " - "<< _queue[(*_queue_control)[j]]._ooo_engine_id << "} "\ 52 << _queue[(*_queue_control)[j]]._data_ra_val << ", "\ 53 << _queue[(*_queue_control)[j]]._num_reg_ra << " - "\ 54 << _queue[(*_queue_control)[j]]._data_rb_val << ","\ 55 << _queue[(*_queue_control)[j]]._num_reg_rb << " - "\ 56 << _queue[(*_queue_control)[j]]._data_rc_val << ","\ 57 << _queue[(*_queue_control)[j]]._num_reg_rc \ 58 << endl;\ 59 }\ 60 } while (0) 22 #define dump_queue() \ 23 do \ 24 { \ 25 log_printf(TRACE,Reservation_station,FUNCTION," * Dump Reservation Station"); \ 26 for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++) \ 27 log_printf(TRACE,Reservation_station,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \ 28 it_dump, \ 29 _queue[it_dump]._context_id , \ 30 _queue[it_dump]._front_end_id , \ 31 _queue[it_dump]._ooo_engine_id , \ 32 _queue[it_dump]._rob_id , \ 33 _queue[it_dump]._type , \ 34 _queue[it_dump]._operation , \ 35 _queue[it_dump]._store_queue_ptr_write, \ 36 _queue[it_dump]._load_queue_ptr_write , \ 37 _queue[it_dump]._has_immediat , \ 38 _queue[it_dump]._immediat , \ 39 _queue[it_dump]._num_reg_ra , \ 40 _queue[it_dump]._data_ra_val , \ 41 _queue[it_dump]._data_ra , \ 42 _queue[it_dump]._num_reg_rb , \ 43 _queue[it_dump]._data_rb_val , \ 44 _queue[it_dump]._data_rb , \ 45 _queue[it_dump]._num_reg_rc , \ 46 _queue[it_dump]._data_rc_val , \ 47 _queue[it_dump]._data_rc , \ 48 _queue[it_dump]._write_rd , \ 49 _queue[it_dump]._num_reg_rd , \ 50 _queue[it_dump]._write_re , \ 51 _queue[it_dump]._num_reg_re , \ 52 toString_type(_queue[it_dump]._type).c_str()); \ 53 } while (0) 54 #else 55 #define dump_queue() \ 56 do \ 57 { \ 58 log_printf(TRACE,Reservation_station,FUNCTION," * Dump Reservation Station"); \ 59 log_printf(TRACE,Reservation_station,FUNCTION," * nb_elt : %d",_queue_control->nb_elt()); \ 60 for (uint32_t it_dump=0;it_dump<_param->_size_queue; it_dump++) \ 61 log_printf(TRACE,Reservation_station,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.8x, %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", \ 62 (*_queue_control)[it_dump], \ 63 _queue[(*_queue_control)[it_dump]]._context_id , \ 64 _queue[(*_queue_control)[it_dump]]._front_end_id , \ 65 _queue[(*_queue_control)[it_dump]]._ooo_engine_id , \ 66 _queue[(*_queue_control)[it_dump]]._rob_id , \ 67 _queue[(*_queue_control)[it_dump]]._type , \ 68 _queue[(*_queue_control)[it_dump]]._operation , \ 69 _queue[(*_queue_control)[it_dump]]._store_queue_ptr_write, \ 70 _queue[(*_queue_control)[it_dump]]._load_queue_ptr_write , \ 71 _queue[(*_queue_control)[it_dump]]._has_immediat , \ 72 _queue[(*_queue_control)[it_dump]]._immediat , \ 73 _queue[(*_queue_control)[it_dump]]._num_reg_ra , \ 74 _queue[(*_queue_control)[it_dump]]._data_ra_val , \ 75 _queue[(*_queue_control)[it_dump]]._data_ra , \ 76 _queue[(*_queue_control)[it_dump]]._num_reg_rb , \ 77 _queue[(*_queue_control)[it_dump]]._data_rb_val , \ 78 _queue[(*_queue_control)[it_dump]]._data_rb , \ 79 _queue[(*_queue_control)[it_dump]]._num_reg_rc , \ 80 _queue[(*_queue_control)[it_dump]]._data_rc_val , \ 81 _queue[(*_queue_control)[it_dump]]._data_rc , \ 82 _queue[(*_queue_control)[it_dump]]._write_rd , \ 83 _queue[(*_queue_control)[it_dump]]._num_reg_rd , \ 84 _queue[(*_queue_control)[it_dump]]._write_re , \ 85 _queue[(*_queue_control)[it_dump]]._num_reg_re , \ 86 toString_type(_queue[(*_queue_control)[it_dump]]._type).c_str()); \ 87 } while (0) 61 88 #endif 62 89 … … 65 92 void Reservation_station::transition (void) 66 93 { 67 log_printf(FUNC,Reservation_station,FUNCTION,"Begin"); 94 log_begin(Reservation_station,FUNCTION); 95 log_function(Reservation_station,FUNCTION,_name.c_str()); 68 96 69 97 if (PORT_READ(in_NRESET) == 0) … … 89 117 //uint32_t index = (*_queue_control)[i]; 90 118 91 log_printf(NONE,Reservation_station,FUNCTION," POP [%d]",i);119 log_printf(NONE,Reservation_station,FUNCTION," * POP [%d]",i); 92 120 93 121 uint32_t index = internal_RETIRE_SLOT[i]; … … 102 130 // << " * index : " << index << endl; 103 131 104 log_printf(NONE,Reservation_station,FUNCTION," * index : %d",index);132 log_printf(NONE,Reservation_station,FUNCTION," * index : %d",index); 105 133 } 106 134 } … … 140 168 if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_ra) 141 169 { 142 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);170 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 143 171 _queue[index]._data_ra_val = 1; 144 172 _queue[index]._data_ra = PORT_READ(in_GPR_WRITE_DATA [j]); … … 146 174 if (PORT_READ(in_GPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rb) 147 175 { 148 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);176 log_printf(TRACE,Reservation_station,FUNCTION," -> GPR_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 149 177 _queue[index]._data_rb_val = 1; 150 178 _queue[index]._data_rb = PORT_READ(in_GPR_WRITE_DATA [j]); … … 165 193 (PORT_READ(in_SPR_WRITE_NUM_REG [j]) == _queue[index]._num_reg_rc)) 166 194 { 167 log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);195 log_printf(TRACE,Reservation_station,FUNCTION," -> SPR_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc); 168 196 _queue[index]._data_rc_val = 1; 169 197 _queue[index]._data_rc = PORT_READ(in_SPR_WRITE_DATA [j]); … … 185 213 if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG[j]) == _queue[index]._num_reg_ra) 186 214 { 187 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);215 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 188 216 _queue[index]._data_ra_val = 1; 189 217 _queue[index]._data_ra = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]); … … 191 219 if (PORT_READ(in_BYPASS_WRITE_GPR_NUM_REG [j]) == _queue[index]._num_reg_rb) 192 220 { 193 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);221 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 194 222 _queue[index]._data_rb_val = 1; 195 223 _queue[index]._data_rb = PORT_READ(in_BYPASS_WRITE_GPR_DATA [j]); … … 199 227 (PORT_READ(in_BYPASS_WRITE_SPR_NUM_REG[j]) == _queue[index]._num_reg_rc)) 200 228 { 201 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc);229 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_WRITE [%d] - Hit queue[%d]-SPR_RC[%d]",i,index,_queue[index]._num_reg_rc); 202 230 _queue[index]._data_rc_val = 1; 203 231 _queue[index]._data_rc = PORT_READ(in_BYPASS_WRITE_SPR_DATA [j]); … … 218 246 if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_ra) 219 247 { 220 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra);248 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RA[%d]",i,index,_queue[index]._num_reg_ra); 221 249 _queue[index]._data_ra_val = 1; 222 250 _queue[index]._data_ra = PORT_READ(in_BYPASS_MEMORY_DATA [j]); … … 224 252 if (PORT_READ(in_BYPASS_MEMORY_NUM_REG [j]) == _queue[index]._num_reg_rb) 225 253 { 226 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb);254 log_printf(TRACE,Reservation_station,FUNCTION," -> BYPASS_MEMORY [%d] - Hit queue[%d]-GPR_RB[%d]",i,index,_queue[index]._num_reg_rb); 227 255 _queue[index]._data_rb_val = 1; 228 256 _queue[index]._data_rb = PORT_READ(in_BYPASS_MEMORY_DATA [j]); … … 235 263 ( internal_INSERT_ACK == 1)) 236 264 { 237 log_printf(TRACE,Reservation_station,FUNCTION," PUSH");265 log_printf(TRACE,Reservation_station,FUNCTION," * PUSH"); 238 266 239 267 // Write in reservation station … … 246 274 index = _queue_control->push(); 247 275 #endif 248 log_printf(TRACE,Reservation_station,FUNCTION," * index : %d",index);276 log_printf(TRACE,Reservation_station,FUNCTION," * index : %d",index); 249 277 250 278 if (_param->_have_port_context_id) … … 254 282 if (_param->_have_port_ooo_engine_id) 255 283 _queue[index]._ooo_engine_id = PORT_READ(in_INSERT_OOO_ENGINE_ID ); 256 if (_param->_have_port_rob_ id)284 if (_param->_have_port_rob_ptr) 257 285 _queue[index]._rob_id = PORT_READ(in_INSERT_ROB_ID ); 258 286 _queue[index]._operation = PORT_READ(in_INSERT_OPERATION ); … … 283 311 } 284 312 313 dump_queue(); 314 285 315 end_cycle (); 286 316 287 log_ printf(FUNC,Reservation_station,FUNCTION,"End");317 log_end(Reservation_station,FUNCTION); 288 318 }; 289 319
Note: See TracChangeset
for help on using the changeset viewer.