Changeset 88 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- 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
- Files:
-
- 41 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/Makefile
r81 r88 24 24 library_clean : Read_queue_library_clean 25 25 26 local_clean : 27 26 28 include ../Makefile.deps 27 29 include $(DIR_MORPHEO)/Behavioural/Makefile.flags -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/include/test.h
r81 r88 16 16 17 17 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h" 18 #include "Common/include/Time.h" 18 19 19 20 using namespace std; … … 30 31 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters * param); 31 32 32 class Time33 {34 private : timeval time_begin;35 // private : timeval time_end;36 37 public : Time ()38 {39 gettimeofday(&time_begin ,NULL);40 };41 42 public : ~Time ()43 {44 cout << *this;45 };46 47 public : friend ostream& operator<< (ostream& output_stream,48 const Time & x)49 {50 timeval time_end;51 52 gettimeofday(&time_end ,NULL);53 54 uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());55 56 double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);57 58 output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;59 60 return output_stream;61 }62 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/main.cpp
r81 r88 77 77 ,size_store_queue 78 78 ,size_load_queue 79 ,true //is_toplevel 79 80 ); 80 81 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/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 Read_queue * _Read_queue = new Read_queue (name.c_str(), 26 36 #ifdef STATISTICS … … 28 38 #endif 29 39 _param, 30 USE_ALL);40 _usage); 31 41 32 42 #ifdef SYSTEMC … … 200 210 if(_param->_have_port_ooo_engine_id) 201 211 (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID )) (*(READ_QUEUE_IN_OOO_ENGINE_ID )); 202 if(_param->_have_port_rob_ id)212 if(_param->_have_port_rob_ptr ) 203 213 (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID )) (*(READ_QUEUE_IN_ROB_ID )); 204 214 (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION )) (*(READ_QUEUE_IN_OPERATION )); … … 228 238 if(_param->_have_port_ooo_engine_id) 229 239 (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 230 if(_param->_have_port_rob_ id)240 if(_param->_have_port_rob_ptr ) 231 241 (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID )) (*(READ_QUEUE_OUT_ROB_ID )); 232 242 (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION )) (*(READ_QUEUE_OUT_OPERATION )); … … 388 398 if(_param->_have_port_front_end_id ) 389 399 READ_QUEUE_IN_FRONT_END_ID ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end); 390 if(_param->_have_port_rob_ id)400 if(_param->_have_port_rob_ptr ) 391 401 READ_QUEUE_IN_ROB_ID ->write(request_in); 392 402 READ_QUEUE_IN_OPERATION ->write(0); … … 504 514 { 505 515 Tpacket_t rob_id; 506 if(_param->_have_port_rob_ id)516 if(_param->_have_port_rob_ptr ) 507 517 rob_id = READ_QUEUE_OUT_ROB_ID->read(); 508 518 else … … 551 561 TEST_OK ("End of Simulation"); 552 562 delete _time; 563 553 564 cout << "<" << name << "> ............ Stop Simulation" << endl; 554 565 … … 564 575 if(_param->_have_port_ooo_engine_id ) 565 576 delete READ_QUEUE_IN_OOO_ENGINE_ID; 566 if(_param->_have_port_rob_ id)577 if(_param->_have_port_rob_ptr ) 567 578 delete READ_QUEUE_IN_ROB_ID ; 568 579 delete READ_QUEUE_IN_OPERATION ; … … 592 603 if(_param->_have_port_ooo_engine_id ) 593 604 delete READ_QUEUE_OUT_OOO_ENGINE_ID; 594 if(_param->_have_port_rob_ id)605 if(_param->_have_port_rob_ptr ) 595 606 delete READ_QUEUE_OUT_ROB_ID ; 596 607 delete READ_QUEUE_OUT_OPERATION ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Parameters.h
r81 r88 28 28 { 29 29 //-----[ fields ]------------------------------------------------------------ 30 public : constuint32_t _size_queue ;31 public : constuint32_t _nb_context ;32 public : constuint32_t _nb_front_end ;33 public : constuint32_t _nb_ooo_engine ;34 public : constuint32_t _nb_packet ;35 public : constuint32_t _size_general_data ;36 public : constuint32_t _size_special_data ;37 public : constuint32_t _nb_general_register ;38 public : constuint32_t _nb_special_register ;39 public : constuint32_t _nb_gpr_write ;40 public : constuint32_t _nb_spr_write ;41 public : constuint32_t _size_store_queue ;42 public : constuint32_t _size_load_queue ;30 public : uint32_t _size_queue ; 31 public : uint32_t _nb_context ; 32 public : uint32_t _nb_front_end ; 33 public : uint32_t _nb_ooo_engine ; 34 public : uint32_t _nb_packet ; 35 //public : uint32_t _size_general_data ; 36 //public : uint32_t _size_special_data ; 37 public : uint32_t _nb_general_register ; 38 public : uint32_t _nb_special_register ; 39 public : uint32_t _nb_gpr_write ; 40 public : uint32_t _nb_spr_write ; 41 //public : uint32_t _size_store_queue ; 42 //public : uint32_t _size_load_queue ; 43 43 44 public : constuint32_t _nb_gpr_read ;45 public : constuint32_t _nb_spr_read ;46 public : constuint32_t _size_context_id ;47 public : constuint32_t _size_front_end_id ;48 public : constuint32_t _size_ooo_engine_id ;49 public : constuint32_t _size_rob_id ;50 public : constuint32_t _size_general_register;51 public : constuint32_t _size_special_register;44 public : uint32_t _nb_gpr_read ; 45 public : uint32_t _nb_spr_read ; 46 //public : uint32_t _size_context_id ; 47 //public : uint32_t _size_front_end_id ; 48 //public : uint32_t _size_ooo_engine_id ; 49 //public : uint32_t _size_rob_id ; 50 //public : uint32_t _size_general_register; 51 //public : uint32_t _size_special_register; 52 52 53 public : constbool _have_port_context_id ;54 public : constbool _have_port_front_end_id ;55 public : constbool _have_port_ooo_engine_id;56 public : constbool _have_port_rob_id ;57 public : constbool _have_port_load_queue_ptr;53 //public : bool _have_port_context_id ; 54 //public : bool _have_port_front_end_id ; 55 //public : bool _have_port_ooo_engine_id; 56 //public : bool _have_port_rob_id ; 57 //public : bool _have_port_load_queue_ptr; 58 58 59 public : constuint32_t _size_internal_queue;59 public : uint32_t _size_internal_queue; 60 60 61 61 //-----[ methods ]----------------------------------------------------------- … … 72 72 uint32_t nb_spr_write , 73 73 uint32_t size_store_queue , 74 uint32_t size_load_queue ); 74 uint32_t size_load_queue , 75 bool is_toplevel=false ); 75 76 76 public : Parameters (Parameters & param) ; 77 public : ~Parameters () ; 77 //public : Parameters (Parameters & param) ; 78 public : ~Parameters (void) ; 79 80 public : void copy (void); 78 81 79 82 public : Parameters_test msg_error (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Read_queue.h
r82 r88 14 14 15 15 #include <iostream> 16 #include < queue>16 #include <list> 17 17 #include "Common/include/ToString.h" 18 18 #include "Common/include/Debug.h" … … 154 154 // ~~~~~[ Register ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 155 protected : Tread_queue_head_entry_t * _queue_head; 156 protected : std:: queue<Tread_queue_entry_t *> * _queue;156 protected : std::list<Tread_queue_entry_t *> * _queue; 157 157 158 158 // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters.cpp
r81 r88 30 30 uint32_t nb_spr_write , 31 31 uint32_t size_store_queue , 32 uint32_t size_load_queue ): 33 _size_queue (size_queue ), 34 _nb_context (nb_context ), 35 _nb_front_end (nb_front_end ), 36 _nb_ooo_engine (nb_ooo_engine ), 37 _nb_packet (nb_packet ), 38 _size_general_data (size_general_data ), 39 _size_special_data (size_special_data ), 40 _nb_general_register (nb_general_register ), 41 _nb_special_register (nb_special_register ), 42 _nb_gpr_write (nb_gpr_write ), 43 _nb_spr_write (nb_spr_write ), 44 _size_store_queue (size_store_queue ), 45 _size_load_queue (size_load_queue ), 46 47 _nb_gpr_read (2 ), 48 _nb_spr_read (1 ), 49 _size_context_id (static_cast<uint32_t>(log2(_nb_context ))), 50 _size_front_end_id (static_cast<uint32_t>(log2(_nb_front_end ))), 51 _size_ooo_engine_id (static_cast<uint32_t>(log2(_nb_ooo_engine ))), 52 _size_rob_id (static_cast<uint32_t>(log2(_nb_packet ))), 53 _size_general_register (static_cast<uint32_t>(log2(_nb_general_register))), 54 _size_special_register (static_cast<uint32_t>(log2(_nb_special_register))), 55 56 _have_port_context_id (_size_context_id > 0), 57 _have_port_front_end_id (_size_front_end_id > 0), 58 _have_port_ooo_engine_id (_size_ooo_engine_id > 0), 59 _have_port_rob_id (_size_rob_id > 0), 60 _have_port_load_queue_ptr(_size_load_queue > 1), 61 62 _size_internal_queue ( _size_context_id //_context_id 63 + _size_front_end_id //_front_end_id 64 + _size_ooo_engine_id //_ooo_engine_id 65 + _size_rob_id //_rob_id 66 + _size_operation //_operation 67 + _size_type //_type 68 + log2(_size_store_queue)//_store_queue_ptr_write 69 + log2(_size_load_queue )//_load_queue_ptr_write 70 + 1 //_has_immediat 71 + _size_general_data //_immediat 72 + 1 //_read_ra 73 + _size_general_register //_num_reg_ra 74 + 1 //_read_rb 75 + _size_general_register //_num_reg_rb 76 + 1 //_read_rc 77 + _size_special_register //_num_reg_rc 78 + 1 //_write_rd 79 + _size_general_register //_num_reg_rd 80 + 1 //_write_re 81 + _size_special_register //_num_reg_re 82 ) 83 84 32 uint32_t size_load_queue , 33 bool is_toplevel) 85 34 { 86 35 log_printf(FUNC,Read_queue,"Parameters","Begin"); 36 37 _size_queue = size_queue ; 38 _nb_context = nb_context ; 39 _nb_front_end = nb_front_end ; 40 _nb_ooo_engine = nb_ooo_engine ; 41 _nb_packet = nb_packet ; 42 _nb_general_register = nb_general_register ; 43 _nb_special_register = nb_special_register ; 44 _nb_gpr_write = nb_gpr_write ; 45 _nb_spr_write = nb_spr_write ; 46 47 _nb_gpr_read = 2 ; 48 _nb_spr_read = 1 ; 49 50 _size_internal_queue = ( log2(nb_context ) //_context_id 51 + log2(nb_front_end ) //_front_end_id 52 + log2(nb_ooo_engine ) //_ooo_engine_id 53 + log2(nb_packet ) //_rob_id 54 + _size_operation //_operation 55 + _size_type //_type 56 + log2(size_store_queue ) //_store_queue_ptr_write 57 + log2(size_load_queue ) //_load_queue_ptr_write 58 + 1 //_has_immediat 59 + size_general_data //_immediat 60 + 1 //_read_ra 61 + log2(nb_general_register) //_num_reg_ra 62 + 1 //_read_rb 63 + log2(nb_general_register) //_num_reg_rb 64 + 1 //_read_rc 65 + log2(nb_special_register) //_num_reg_rc 66 + 1 //_write_rd 67 + log2(nb_general_register) //_num_reg_rd 68 + 1 //_write_re 69 + log2(nb_special_register) //_num_reg_re 70 ); 71 87 72 test(); 73 74 if (is_toplevel) 75 { 76 _size_general_data = size_general_data ; 77 _size_special_data = size_special_data ; 78 _size_store_queue_ptr = log2(size_store_queue); 79 _size_load_queue_ptr = log2(size_load_queue ); 80 _size_context_id = log2(_nb_context ); 81 _size_front_end_id = log2(_nb_front_end ); 82 _size_ooo_engine_id = log2(_nb_ooo_engine ); 83 _size_rob_ptr = log2(_nb_packet ); 84 _size_general_register = log2(_nb_general_register); 85 _size_special_register = log2(_nb_special_register); 86 87 _have_port_context_id = _size_context_id > 0; 88 _have_port_front_end_id = _size_front_end_id > 0; 89 _have_port_ooo_engine_id = _size_ooo_engine_id > 0; 90 _have_port_rob_ptr = _size_rob_ptr > 0; 91 _have_port_load_queue_ptr= _size_load_queue_ptr> 0; 92 93 copy(); 94 } 95 88 96 log_printf(FUNC,Read_queue,"Parameters","End"); 89 97 }; 90 98 91 Parameters::Parameters (Parameters & param):92 _size_queue (param._size_queue ),93 _nb_context (param._nb_context ),94 _nb_front_end (param._nb_front_end ),95 _nb_ooo_engine (param._nb_ooo_engine ),96 _nb_packet (param._nb_packet ),97 _size_general_data (param._size_general_data ),98 _size_special_data (param._size_special_data ),99 _nb_general_register (param._nb_general_register ),100 _nb_special_register (param._nb_special_register ),101 _nb_gpr_write (param._nb_gpr_write ),102 _nb_spr_write (param._nb_spr_write ),103 _size_store_queue (param._size_store_queue ),104 _size_load_queue (param._size_load_queue ),99 // Parameters::Parameters (Parameters & param): 100 // _size_queue (param._size_queue ), 101 // _nb_context (param._nb_context ), 102 // _nb_front_end (param._nb_front_end ), 103 // _nb_ooo_engine (param._nb_ooo_engine ), 104 // _nb_packet (param._nb_packet ), 105 // _size_general_data (param._size_general_data ), 106 // _size_special_data (param._size_special_data ), 107 // _nb_general_register (param._nb_general_register ), 108 // _nb_special_register (param._nb_special_register ), 109 // _nb_gpr_write (param._nb_gpr_write ), 110 // _nb_spr_write (param._nb_spr_write ), 111 // _size_store_queue (param._size_store_queue ), 112 // _size_load_queue (param._size_load_queue ), 105 113 106 _nb_gpr_read (param._nb_gpr_read ),107 _nb_spr_read (param._nb_spr_read ),108 _size_context_id (param._size_context_id ),109 _size_front_end_id (param._size_front_end_id ),110 _size_ooo_engine_id (param._size_ooo_engine_id ),111 _size_rob_id (param._size_rob_id ),112 _size_general_register (param._size_general_register ),113 _size_special_register (param._size_special_register ),114 // _nb_gpr_read (param._nb_gpr_read ), 115 // _nb_spr_read (param._nb_spr_read ), 116 // _size_context_id (param._size_context_id ), 117 // _size_front_end_id (param._size_front_end_id ), 118 // _size_ooo_engine_id (param._size_ooo_engine_id ), 119 // _size_rob_id (param._size_rob_id ), 120 // _size_general_register (param._size_general_register ), 121 // _size_special_register (param._size_special_register ), 114 122 115 _have_port_context_id (param._have_port_context_id ),116 _have_port_front_end_id (param._have_port_front_end_id ),117 _have_port_ooo_engine_id (param._have_port_ooo_engine_id),118 _have_port_rob_id (param._have_port_rob_id ),119 _have_port_load_queue_ptr(param._have_port_load_queue_ptr),123 // _have_port_context_id (param._have_port_context_id ), 124 // _have_port_front_end_id (param._have_port_front_end_id ), 125 // _have_port_ooo_engine_id (param._have_port_ooo_engine_id), 126 // _have_port_rob_id (param._have_port_rob_id ), 127 // _have_port_load_queue_ptr(param._have_port_load_queue_ptr), 120 128 121 _size_internal_queue (param._size_internal_queue )122 {123 log_printf(FUNC,Read_queue,"Parameters (copy)","Begin");124 test();125 log_printf(FUNC,Read_queue,"Parameters (copy)","End");126 };129 // _size_internal_queue (param._size_internal_queue ) 130 // { 131 // log_printf(FUNC,Read_queue,"Parameters (copy)","Begin"); 132 // test(); 133 // log_printf(FUNC,Read_queue,"Parameters (copy)","End"); 134 // }; 127 135 128 Parameters::~Parameters ( )136 Parameters::~Parameters (void) 129 137 { 130 138 log_printf(FUNC,Read_queue,"~Parameters","Begin"); 131 139 log_printf(FUNC,Read_queue,"~Parameters","End"); 140 }; 141 142 void Parameters::copy (void) 143 { 144 log_printf(FUNC,Read_queue,"copy","Begin"); 145 log_printf(FUNC,Read_queue,"copy","End"); 132 146 }; 133 147 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Parameters_print.cpp
r81 r88 31 31 xml.singleton_begin("nb_ooo_engine "); xml.attribut("value",toString(_nb_ooo_engine )); xml.singleton_end(); 32 32 xml.singleton_begin("nb_packet "); xml.attribut("value",toString(_nb_packet )); xml.singleton_end(); 33 34 33 // xml.singleton_begin("size_general_data "); xml.attribut("value",toString(_size_general_data )); xml.singleton_end(); 34 // xml.singleton_begin("size_special_data "); xml.attribut("value",toString(_size_special_data )); xml.singleton_end(); 35 35 xml.singleton_begin("nb_general_register"); xml.attribut("value",toString(_nb_general_register)); xml.singleton_end(); 36 36 xml.singleton_begin("nb_special_register"); xml.attribut("value",toString(_nb_special_register)); xml.singleton_end(); 37 37 xml.singleton_begin("nb_gpr_write "); xml.attribut("value",toString(_nb_gpr_write )); xml.singleton_end(); 38 38 xml.singleton_begin("nb_spr_write "); xml.attribut("value",toString(_nb_spr_write )); xml.singleton_end(); 39 40 39 // xml.singleton_begin("size_store_queue "); xml.attribut("value",toString(_size_store_queue )); xml.singleton_end(); 40 // xml.singleton_begin("size_load_queue "); xml.attribut("value",toString(_size_load_queue )); xml.singleton_end(); 41 41 42 42 xml.balise_close(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue.cpp
r82 r88 36 36 log_printf(FUNC,Read_queue,"Read_queue","Begin"); 37 37 38 #if DEBUG_Read_queue == true 39 log_printf(INFO,Read_queue,FUNCTION,_("<%s> Parameters"),_name.c_str()); 40 41 std::cout << *param << std::endl; 42 #endif 43 38 44 #ifdef SYSTEMC 39 45 log_printf(INFO,Read_queue,"Read_queue","Allocation"); … … 43 49 44 50 #ifdef STATISTICS 45 log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics"); 46 47 statistics_declaration(param_statistics); 51 if (usage_is_set(_usage,USE_STATISTICS)) 52 { 53 log_printf(INFO,Read_queue,FUNCTION,"Allocation of statistics"); 54 55 statistics_declaration(param_statistics); 56 } 48 57 #endif 49 58 50 59 #ifdef VHDL 51 // generate the vhdl 52 log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl"); 53 54 vhdl(); 55 #endif 56 57 #ifdef SYSTEMC 60 if (usage_is_set(_usage,USE_VHDL)) 61 { 62 // generate the vhdl 63 log_printf(INFO,Read_queue,"Read_queue","Generate the vhdl"); 64 65 vhdl(); 66 } 67 #endif 68 69 #ifdef SYSTEMC 70 if (usage_is_set(_usage,USE_SYSTEMC)) 71 { 58 72 log_printf(INFO,Read_queue,"Read_queue","Method - transition"); 59 73 … … 206 220 } 207 221 #endif 208 222 } 209 223 #endif 210 224 log_printf(FUNC,Read_queue,"Read_queue","End"); … … 216 230 217 231 #ifdef STATISTICS 218 log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file"); 219 220 delete _stat; 232 if (usage_is_set(_usage,USE_STATISTICS)) 233 { 234 log_printf(INFO,Read_queue,"~Read_queue","Generate Statistics file"); 235 236 delete _stat; 237 } 221 238 #endif 222 239 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_allocation.cpp
r82 r88 3 3 * $Id$ 4 4 * 5 * [ 5 * [ Description ] 6 6 * 7 7 */ … … 34 34 _interfaces = entity->set_interfaces(); 35 35 36 // ~~~~~[ 36 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 37 37 38 38 { … … 48 48 in_NRESET = interface->set_signal_in <Tcontrol_t> ("nreset",1, RESET_VHDL_YES); 49 49 } 50 // ~~~~~[ 50 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 51 51 { 52 52 Interface_fifo * interface = _interfaces->set_interface("read_queue_in" … … 66 66 if(_param->_have_port_ooo_engine_id) 67 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_ id)69 in_READ_QUEUE_IN_ROB_ID = interface->set_signal_in <Tpacket_t > ("rob_id" ,_param->_size_rob_ 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 70 in_READ_QUEUE_IN_OPERATION = interface->set_signal_in <Toperation_t > ("operation" ,_param->_size_operation ); 71 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", log2(_param->_size_store_queue));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 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" , log2(_param->_size_load_queue ));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 75 in_READ_QUEUE_IN_HAS_IMMEDIAT = interface->set_signal_in <Tcontrol_t > ("has_immediat",1 ); 76 76 in_READ_QUEUE_IN_IMMEDIAT = interface->set_signal_in <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); … … 87 87 } 88 88 89 // ~~~~~[ 89 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 90 90 { 91 91 Interface_fifo * interface = _interfaces->set_interface("read_queue_out" … … 106 106 if(_param->_have_port_ooo_engine_id) 107 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_ id)109 out_READ_QUEUE_OUT_ROB_ID = interface->set_signal_out <Tpacket_t > ("rob_id" ,_param->_size_rob_ 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 110 out_READ_QUEUE_OUT_OPERATION = interface->set_signal_out <Toperation_t > ("operation" ,_param->_size_operation ); 111 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", log2(_param->_size_store_queue));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 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" , log2(_param->_size_load_queue ));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 115 out_READ_QUEUE_OUT_HAS_IMMEDIAT = interface->set_signal_out <Tcontrol_t > ("has_immediat",1 ); 116 116 out_READ_QUEUE_OUT_IMMEDIAT = interface->set_signal_out <Tgeneral_data_t > ("immediat" ,_param->_size_general_data ); … … 133 133 } 134 134 135 // ~~~~~[ 135 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 136 136 137 137 out_GPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_gpr_read]; … … 162 162 } 163 163 164 // ~~~~~[ 164 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 165 165 166 166 out_SPR_READ_VAL = new SC_OUT(Tcontrol_t ) * [_param->_nb_spr_read]; … … 191 191 } 192 192 193 // ~~~~~[ 193 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 194 194 195 195 in_GPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_gpr_write]; … … 216 216 } 217 217 218 // ~~~~~[ 218 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 219 219 220 220 in_SPR_WRITE_VAL = new SC_IN (Tcontrol_t ) * [_param->_nb_spr_write]; … … 241 241 } 242 242 243 // ~~~~~[ 244 _queue = new std:: queue<Tread_queue_entry_t *>;243 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 244 _queue = new std::list<Tread_queue_entry_t *>; 245 245 _queue_head = new Tread_queue_head_entry_t; 246 246 247 247 #ifdef POSITION 248 _component->generate_file(); 248 if (usage_is_set(_usage,USE_POSITION)) 249 _component->generate_file(); 249 250 #endif 250 251 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_deallocation.cpp
r81 r88 3 3 * $Id$ 4 4 * 5 * [ 5 * [ Description ] 6 6 * 7 7 */ … … 23 23 log_printf(FUNC,Read_queue,"deallocation","Begin"); 24 24 25 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 25 if (usage_is_set(_usage,USE_SYSTEMC)) 26 { 27 // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 26 28 delete in_CLOCK ; 27 29 delete in_NRESET; 28 30 29 // ~~~~~[ 31 // ~~~~~[ Interface : "read_queue_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 30 32 delete in_READ_QUEUE_IN_VAL ; 31 33 delete out_READ_QUEUE_IN_ACK ; … … 37 39 if(_param->_have_port_ooo_engine_id) 38 40 delete in_READ_QUEUE_IN_OOO_ENGINE_ID ; 39 if(_param->_have_port_rob_ id)41 if(_param->_have_port_rob_ptr ) 40 42 delete in_READ_QUEUE_IN_ROB_ID ; 41 43 delete in_READ_QUEUE_IN_OPERATION ; … … 57 59 delete in_READ_QUEUE_IN_NUM_REG_RE ; 58 60 59 // ~~~~~[ 61 // ~~~~~[ Interface : "read_queue_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 60 62 delete out_READ_QUEUE_OUT_VAL ; 61 63 delete in_READ_QUEUE_OUT_ACK ; … … 67 69 if(_param->_have_port_ooo_engine_id) 68 70 delete out_READ_QUEUE_OUT_OOO_ENGINE_ID ; 69 if(_param->_have_port_rob_ id)71 if(_param->_have_port_rob_ptr ) 70 72 delete out_READ_QUEUE_OUT_ROB_ID ; 71 73 delete out_READ_QUEUE_OUT_OPERATION ; … … 93 95 delete out_READ_QUEUE_OUT_NUM_REG_RE ; 94 96 95 // ~~~~~[ 97 // ~~~~~[ Interface : "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 96 98 97 99 delete [] out_GPR_READ_VAL ; … … 103 105 delete [] in_GPR_READ_DATA_VAL ; 104 106 105 // ~~~~~[ 107 // ~~~~~[ Interface : "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 106 108 107 109 delete [] out_SPR_READ_VAL ; … … 113 115 delete [] in_SPR_READ_DATA_VAL ; 114 116 115 // ~~~~~[ 117 // ~~~~~[ Interface : "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 116 118 117 119 delete [] in_GPR_WRITE_VAL ; … … 121 123 delete [] in_GPR_WRITE_DATA ; 122 124 123 // ~~~~~[ 125 // ~~~~~[ Interface : "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 124 126 125 127 delete [] in_SPR_WRITE_VAL ; … … 128 130 delete [] in_SPR_WRITE_NUM_REG ; 129 131 delete [] in_SPR_WRITE_DATA ; 132 } 130 133 131 // ~~~~~[ 134 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 132 135 133 136 while (_queue->empty() == false) 134 137 { 135 138 delete _queue->front(); 136 _queue->pop ();139 _queue->pop_front(); 137 140 } 138 141 delete _queue; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_end_cycle.cpp
r81 r88 24 24 25 25 #ifdef STATISTICS 26 _stat->end_cycle(); 26 if (usage_is_set(_usage,USE_STATISTICS)) 27 _stat->end_cycle(); 27 28 #endif 28 29 … … 30 31 // Evaluation before read the ouput signal 31 32 // sc_start(0); 32 _interfaces->testbench(); 33 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 34 _interfaces->testbench(); 33 35 #endif 34 36 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_gpr.cpp
r81 r88 22 22 void Read_queue::genMealy_read_queue_out_gpr (void) 23 23 { 24 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 24 log_begin(Read_queue,FUNCTION); 25 log_function(Read_queue,FUNCTION,_name.c_str()); 25 26 26 27 internal_READ_QUEUE_OUT_DATA_RA_VAL = (// Previous value … … 32 33 ); 33 34 34 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL);35 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_ra_val : %d",_queue_head->_data_ra_val);36 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_ra_val : %d",_queue_head->_read_ra_val);37 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [0] : %d",PORT_READ(in_GPR_READ_ACK [0]));38 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_DATA_VAL [0] : %d",PORT_READ(in_GPR_READ_DATA_VAL [0]));35 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL : %d",internal_READ_QUEUE_OUT_DATA_RA_VAL); 36 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_ra_val : %d",_queue_head->_data_ra_val); 37 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_ra_val : %d",_queue_head->_read_ra_val); 38 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [0] : %d",PORT_READ(in_GPR_READ_ACK [0])); 39 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_DATA_VAL [0] : %d",PORT_READ(in_GPR_READ_DATA_VAL [0])); 39 40 40 41 internal_READ_QUEUE_OUT_DATA_RB_VAL = (_queue_head->_data_rb_val or … … 44 45 ); 45 46 46 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL);47 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_rb_val : %d",_queue_head->_data_rb_val);48 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rb_val : %d",_queue_head->_read_rb_val);49 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [1] : %d",PORT_READ(in_GPR_READ_ACK [1]));50 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_DATA_VAL [1] : %d",PORT_READ(in_GPR_READ_DATA_VAL [1]));47 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL : %d",internal_READ_QUEUE_OUT_DATA_RB_VAL); 48 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_rb_val : %d",_queue_head->_data_rb_val); 49 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rb_val : %d",_queue_head->_read_rb_val); 50 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [1] : %d",PORT_READ(in_GPR_READ_ACK [1])); 51 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_DATA_VAL [1] : %d",PORT_READ(in_GPR_READ_DATA_VAL [1])); 51 52 52 53 … … 80 81 if (_queue_head->_num_reg_ra == gpr_write_num_reg) 81 82 { 82 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL - bypass hit (%d)",i);83 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RA_VAL - bypass hit (%d)",i); 83 84 84 85 internal_READ_QUEUE_OUT_DATA_RA_VAL = 1; … … 90 91 if (_queue_head->_num_reg_rb == gpr_write_num_reg) 91 92 { 92 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL - bypass hit (%d)",i);93 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RB_VAL - bypass hit (%d)",i); 93 94 internal_READ_QUEUE_OUT_DATA_RB_VAL = 1; 94 95 #ifdef SYSTEMC_VHDL_COMPATIBILITY … … 106 107 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RB ,internal_READ_QUEUE_OUT_DATA_RB ); 107 108 108 log_ printf(FUNC,Read_queue,FUNCTION,"End");109 log_end(Read_queue,FUNCTION); 109 110 }; 110 111 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_spr.cpp
r81 r88 22 22 void Read_queue::genMealy_read_queue_out_spr (void) 23 23 { 24 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 24 log_begin(Read_queue,FUNCTION); 25 log_function(Read_queue,FUNCTION,_name.c_str()); 25 26 26 27 internal_READ_QUEUE_OUT_DATA_RC_VAL = (// Previous value … … 32 33 ); 33 34 34 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL);35 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_rc_val : %d",_queue_head->_data_rc_val);36 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rc_val : %d",_queue_head->_read_rc_val);37 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_ACK [0] : %d",PORT_READ(in_SPR_READ_ACK [0]));38 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_DATA_VAL [0] : %d",PORT_READ(in_SPR_READ_DATA_VAL [0]));35 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL : %d",internal_READ_QUEUE_OUT_DATA_RC_VAL); 36 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_data_rc_val : %d",_queue_head->_data_rc_val); 37 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rc_val : %d",_queue_head->_read_rc_val); 38 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_ACK [0] : %d",PORT_READ(in_SPR_READ_ACK [0])); 39 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_DATA_VAL [0] : %d",PORT_READ(in_SPR_READ_DATA_VAL [0])); 39 40 40 41 internal_READ_QUEUE_OUT_DATA_RC = (// Test if have an previous access … … 60 61 if (_queue_head->_num_reg_rc == PORT_READ(in_SPR_WRITE_NUM_REG [i])) 61 62 { 62 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL - bypass hit (%d)",i);63 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_DATA_RC_VAL - bypass hit (%d)",i); 63 64 internal_READ_QUEUE_OUT_DATA_RC_VAL = 1; 64 65 #ifdef SYSTEMC_VHDL_COMPATIBILITY … … 74 75 PORT_WRITE(out_READ_QUEUE_OUT_DATA_RC ,internal_READ_QUEUE_OUT_DATA_RC ); 75 76 76 log_ printf(FUNC,Read_queue,FUNCTION,"End");77 log_end(Read_queue,FUNCTION); 77 78 }; 78 79 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMealy_read_queue_out_val.cpp
r81 r88 22 22 void Read_queue::genMealy_read_queue_out_val (void) 23 23 { 24 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 24 log_begin(Read_queue,FUNCTION); 25 log_function(Read_queue,FUNCTION,_name.c_str()); 25 26 26 27 internal_READ_QUEUE_OUT_READ_RA_VAL = (// Previous value … … 99 100 PORT_WRITE(out_READ_QUEUE_OUT_VAL, internal_READ_QUEUE_OUT_VAL); 100 101 101 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL : %d",internal_READ_QUEUE_OUT_VAL);102 log_printf(TRACE,Read_queue,FUNCTION," * _queue->empty() : %d",_queue->empty());103 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL);104 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_ra_val : %d",_queue_head->_read_ra_val);105 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [0] : %d",PORT_READ(in_GPR_READ_ACK [0]));106 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL);107 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rb_val : %d",_queue_head->_read_rb_val);108 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [1] : %d",PORT_READ(in_GPR_READ_ACK [1]));109 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL);110 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rc_val : %d",_queue_head->_read_rc_val);111 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_ACK [0] : %d",PORT_READ(in_SPR_READ_ACK [0]));102 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_VAL : %d",internal_READ_QUEUE_OUT_VAL); 103 log_printf(TRACE,Read_queue,FUNCTION," * _queue->empty() : %d",_queue->empty()); 104 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RA_VAL : %d",internal_READ_QUEUE_OUT_READ_RA_VAL); 105 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_ra_val : %d",_queue_head->_read_ra_val); 106 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [0] : %d",PORT_READ(in_GPR_READ_ACK [0])); 107 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RB_VAL : %d",internal_READ_QUEUE_OUT_READ_RB_VAL); 108 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rb_val : %d",_queue_head->_read_rb_val); 109 log_printf(TRACE,Read_queue,FUNCTION," * in_GPR_READ_ACK [1] : %d",PORT_READ(in_GPR_READ_ACK [1])); 110 log_printf(TRACE,Read_queue,FUNCTION," * internal_READ_QUEUE_OUT_READ_RC_VAL : %d",internal_READ_QUEUE_OUT_READ_RC_VAL); 111 log_printf(TRACE,Read_queue,FUNCTION," * _queue_head->_read_rc_val : %d",_queue_head->_read_rc_val); 112 log_printf(TRACE,Read_queue,FUNCTION," * in_SPR_READ_ACK [0] : %d",PORT_READ(in_SPR_READ_ACK [0])); 112 113 113 log_ printf(FUNC,Read_queue,FUNCTION,"End");114 log_end(Read_queue,FUNCTION); 114 115 }; 115 116 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_genMoore.cpp
r81 r88 22 22 void Read_queue::genMoore (void) 23 23 { 24 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 24 log_begin(Read_queue,FUNCTION); 25 log_function(Read_queue,FUNCTION,_name.c_str()); 25 26 26 27 bool not_full = not (_queue->size() == _param->_size_queue); … … 39 40 if(_param->_have_port_ooo_engine_id) 40 41 PORT_WRITE (out_READ_QUEUE_OUT_OOO_ENGINE_ID, _queue_head->_ooo_engine_id); 41 if(_param->_have_port_rob_ id)42 if(_param->_have_port_rob_ptr ) 42 43 PORT_WRITE (out_READ_QUEUE_OUT_ROB_ID , _queue_head->_rob_id ); 43 44 PORT_WRITE (out_READ_QUEUE_OUT_OPERATION , _queue_head->_operation ); … … 79 80 PORT_WRITE (out_SPR_READ_VAL [0], not_empty and _queue_head->_read_rc_val); 80 81 if(_param->_have_port_ooo_engine_id) 81 82 PORT_WRITE (out_SPR_READ_OOO_ENGINE_ID [0], _queue_head->_ooo_engine_id); 82 83 PORT_WRITE (out_SPR_READ_NUM_REG [0], _queue_head->_num_reg_rc); 83 84 84 log_ printf(FUNC,Read_queue,FUNCTION,"End");85 log_end(Read_queue,FUNCTION); 85 86 }; 86 87 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r81 r88 24 24 void Read_queue::transition (void) 25 25 { 26 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 26 log_begin(Read_queue,FUNCTION); 27 log_function(Read_queue,FUNCTION,_name.c_str()); 27 28 28 29 if (PORT_READ(in_NRESET) == 0) … … 33 34 // > 2) flush all slot in one cycle 34 35 35 while (_queue->empty() == false) 36 _queue->pop(); 36 _queue->clear(); 37 38 // Init, else error in registerfile 39 _queue_head->_ooo_engine_id = 0; 37 40 } 38 41 else … … 44 47 // cout << (*_queue_head) << endl; 45 48 46 log_printf(TRACE,Read_queue,FUNCTION," Read_queue size (begin) : %d",_queue->size());49 log_printf(TRACE,Read_queue,FUNCTION," * Read_queue size (begin) : %d",(int)_queue->size()); 47 50 // Write to read_queue 48 51 … … 51 54 bool need_new_head = false; 52 55 53 log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_IN : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full);56 log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_IN : %d,%d",PORT_READ(in_READ_QUEUE_IN_VAL), not_full); 54 57 if ((PORT_READ(in_READ_QUEUE_IN_VAL) == 1) and not_full) 55 58 { … … 62 65 if(_param->_have_port_ooo_engine_id) 63 66 entry->_ooo_engine_id= PORT_READ(in_READ_QUEUE_IN_OOO_ENGINE_ID); 64 if(_param->_have_port_rob_ id)67 if(_param->_have_port_rob_ptr ) 65 68 entry->_rob_id = PORT_READ(in_READ_QUEUE_IN_ROB_ID ); 66 69 entry->_operation = PORT_READ(in_READ_QUEUE_IN_OPERATION ); … … 82 85 entry->_num_reg_re = PORT_READ(in_READ_QUEUE_IN_NUM_REG_RE ); 83 86 84 log_printf(TRACE,Read_queue,FUNCTION," * push (id : %d-%d)",entry->_context_id, entry->_rob_id); 85 _queue->push(entry); 86 87 log_printf(TRACE,Read_queue,FUNCTION," * push (id : %d-%d)",entry->_context_id, entry->_rob_id); 88 _queue->push_back(entry); 87 89 88 90 // read next new head 89 91 if (empty) 90 92 { 91 log_printf(TRACE,Read_queue,FUNCTION," 93 log_printf(TRACE,Read_queue,FUNCTION," * queue was empty"); 92 94 need_new_head = true; 93 95 } … … 95 97 96 98 // Read from read_queue 97 log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK));99 log_printf(TRACE,Read_queue,FUNCTION," * test transaction READ_QUEUE_OUT : %d,%d",internal_READ_QUEUE_OUT_VAL, PORT_READ(in_READ_QUEUE_OUT_ACK)); 98 100 if (( internal_READ_QUEUE_OUT_VAL == 1) and 99 101 (PORT_READ(in_READ_QUEUE_OUT_ACK) == 1)) 100 102 { 101 103 // Pop the entry 102 log_printf(TRACE,Read_queue,FUNCTION," * pop (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id);103 _queue->pop ();104 log_printf(TRACE,Read_queue,FUNCTION," * pop (id : %d-%d)",_queue->front()->_context_id, _queue->front()->_rob_id); 105 _queue->pop_front(); 104 106 105 107 // read next new head 106 108 if (_queue->empty() == false) 107 109 { 108 log_printf(TRACE,Read_queue,FUNCTION," 110 log_printf(TRACE,Read_queue,FUNCTION," * queue was not empty"); 109 111 need_new_head = true; 110 112 } … … 128 130 if (need_new_head == true) 129 131 { 130 log_printf(TRACE,Read_queue,FUNCTION," * new head");132 log_printf(TRACE,Read_queue,FUNCTION," * new head"); 131 133 (*_queue_head) = (*_queue->front()); 132 134 } … … 138 140 // cout << (*_queue_head) << endl; 139 141 140 log_printf(TRACE,Read_queue,FUNCTION,"Read_queue size (end ) : %d",_queue->size()); 142 #if (DEBUG >= DEBUG_TRACE) and (DEBUG_Read_queue == true) 143 log_printf(TRACE,Read_queue,FUNCTION," * Dump Read_queue"); 144 log_printf(TRACE,Read_queue,FUNCTION," * size : %d",(int)_queue->size()); 145 146 if (_queue->size()>0) 147 { 148 // protected : Tread_queue_head_entry_t * _queue_head; 149 // protected : std::queue<Tread_queue_entry_t *> * _queue; 150 151 log_printf(TRACE,Read_queue,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.8x, %.1d %.1d %.4d %.1d %.2x, %.1d %.4d, %.1d %.4d (%s)", 152 0, 153 154 _queue_head->_context_id , 155 _queue_head->_front_end_id , 156 _queue_head->_ooo_engine_id , 157 _queue_head->_rob_id , 158 159 _queue_head->_type , 160 _queue_head->_operation , 161 162 _queue_head->_store_queue_ptr_write, 163 _queue_head->_load_queue_ptr_write , 164 165 _queue_head->_has_immediat , 166 _queue_head->_immediat , 167 168 _queue_head->_read_ra , 169 _queue_head->_read_ra_val , 170 _queue_head->_num_reg_ra , 171 _queue_head->_data_ra_val , 172 _queue_head->_data_ra , 173 174 _queue_head->_read_rb , 175 _queue_head->_read_rb_val , 176 _queue_head->_num_reg_rb , 177 _queue_head->_data_rb_val , 178 _queue_head->_data_rb , 179 180 _queue_head->_read_rc , 181 _queue_head->_read_rc_val , 182 _queue_head->_num_reg_rc , 183 _queue_head->_data_rc_val , 184 _queue_head->_data_rc , 185 186 _queue_head->_write_rd , 187 _queue_head->_num_reg_rd , 188 189 _queue_head->_write_re , 190 _queue_head->_num_reg_re , 191 192 toString_type(_queue_head->_type).c_str()); 193 194 195 std::list<Tread_queue_entry_t *>::iterator it=_queue->begin(); 196 ++it; // first is already printed 197 uint32_t i=1; 198 199 for (;it!=_queue->end(); ++it) 200 { 201 log_printf(TRACE,Read_queue,FUNCTION," * [%.4d] %.2d %.2d %.2d %.4d, %.2d %.3d, %.2d %.2d, %.1d %.8x, %.1d %.4d , %.1d %.4d , %.1d %.4d , %.1d %.4d, %.1d %.4d (%s)", 202 i, 203 204 (*it)->_context_id , 205 (*it)->_front_end_id , 206 (*it)->_ooo_engine_id , 207 (*it)->_rob_id , 208 209 (*it)->_type , 210 (*it)->_operation , 211 212 (*it)->_store_queue_ptr_write, 213 (*it)->_load_queue_ptr_write , 214 215 (*it)->_has_immediat , 216 (*it)->_immediat , 217 218 (*it)->_read_ra , 219 // (*it)->_read_ra_val , 220 (*it)->_num_reg_ra , 221 // (*it)->_data_ra_val , 222 // (*it)->_data_ra , 223 224 (*it)->_read_rb , 225 // (*it)->_read_rb_val , 226 (*it)->_num_reg_rb , 227 // (*it)->_data_rb_val , 228 // (*it)->_data_rb , 229 230 (*it)->_read_rc , 231 // (*it)->_read_rc_val , 232 (*it)->_num_reg_rc , 233 // (*it)->_data_rc_val , 234 // (*it)->_data_rc , 235 236 (*it)->_write_rd , 237 (*it)->_num_reg_rd , 238 239 (*it)->_write_re , 240 (*it)->_num_reg_re , 241 242 toString_type((*it)->_type).c_str()); 243 244 ++i; 245 } 246 } 247 #endif 248 249 141 250 } 142 251 143 252 #if defined(STATISTICS) or defined(VHDL_TESTBENCH) 144 end_cycle ();253 end_cycle (); 145 254 #endif 146 255 147 log_ printf(FUNC,Read_queue,FUNCTION,"End");256 log_end(Read_queue,FUNCTION); 148 257 }; 149 258 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/Makefile
r81 r88 24 24 library_clean : Reservation_station_library_clean 25 25 26 local_clean : 27 26 28 include ../Makefile.deps 27 29 include $(DIR_MORPHEO)/Behavioural/Makefile.flags -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/include/test.h
r81 r88 15 15 #include <sys/time.h> 16 16 17 #include "Common/include/Time.h" 17 18 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Reservation_station.h" 18 19 … … 31 32 morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters * param); 32 33 33 class Time34 {35 private : timeval time_begin;36 // private : timeval time_end;37 38 public : Time ()39 {40 gettimeofday(&time_begin ,NULL);41 };42 43 public : ~Time ()44 {45 cout << *this;46 };47 48 public : friend ostream& operator<< (ostream& output_stream,49 const Time & x)50 {51 timeval time_end;52 53 gettimeofday(&time_end ,NULL);54 55 uint32_t nb_cycles = static_cast<uint32_t>(sc_simulation_time());56 57 double average = static_cast<double>(nb_cycles) / static_cast<double>(time_end.tv_sec-x.time_begin.tv_sec);58 59 output_stream << nb_cycles << "\t(" << average << " cycles / seconds )" << endl;60 61 return output_stream;62 }63 }; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/main.cpp
r81 r88 86 86 ,size_store_queue 87 87 ,size_load_queue 88 ,true //is_toplevel 88 89 ); 89 90 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/SelfTest/src/test.cpp
r82 r88 22 22 #endif 23 23 24 Tusage_t _usage = USE_ALL; 25 26 // _usage = usage_unset(_usage,USE_SYSTEMC ); 27 // _usage = usage_unset(_usage,USE_VHDL ); 28 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); 29 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT); 30 // _usage = usage_unset(_usage,USE_POSITION ); 31 _usage = usage_unset(_usage,USE_STATISTICS ); 32 // _usage = usage_unset(_usage,USE_INFORMATION ); 33 24 34 Reservation_station * _Reservation_station = new Reservation_station 25 35 (name.c_str(), … … 28 38 #endif 29 39 _param, 30 USE_ALL);40 _usage); 31 41 32 42 #ifdef SYSTEMC … … 185 195 if (_param->_have_port_ooo_engine_id) 186 196 (*(_Reservation_station-> in_INSERT_OOO_ENGINE_ID )) (*( in_INSERT_OOO_ENGINE_ID )); 187 if (_param->_have_port_rob_ id)197 if (_param->_have_port_rob_ptr) 188 198 (*(_Reservation_station-> in_INSERT_ROB_ID )) (*( in_INSERT_ROB_ID )); 189 199 (*(_Reservation_station-> in_INSERT_OPERATION )) (*( in_INSERT_OPERATION )); … … 221 231 if (_param->_have_port_ooo_engine_id) 222 232 (*(_Reservation_station->out_RETIRE_OOO_ENGINE_ID [i])) (*(out_RETIRE_OOO_ENGINE_ID [i])); 223 if (_param->_have_port_rob_ id)233 if (_param->_have_port_rob_ptr) 224 234 (*(_Reservation_station->out_RETIRE_ROB_ID [i])) (*(out_RETIRE_ROB_ID [i])); 225 235 (*(_Reservation_station->out_RETIRE_OPERATION [i])) (*(out_RETIRE_OPERATION [i])); … … 417 427 if (_param->_have_port_ooo_engine_id) 418 428 in_INSERT_OOO_ENGINE_ID ->write(insert_ooo_engine_id); 419 if (_param->_have_port_rob_ id)429 if (_param->_have_port_rob_ptr) 420 430 in_INSERT_ROB_ID ->write(request_in); 421 431 in_INSERT_OPERATION ->write(0); … … 610 620 { 611 621 Tpacket_t rob_id; 612 if (_param->_have_port_rob_ id)622 if (_param->_have_port_rob_ptr) 613 623 rob_id = out_RETIRE_ROB_ID [i]->read(); 614 624 else … … 667 677 if (_param->_have_port_ooo_engine_id) 668 678 delete in_INSERT_OOO_ENGINE_ID ; 669 if (_param->_have_port_rob_ id)679 if (_param->_have_port_rob_ptr) 670 680 delete in_INSERT_ROB_ID ; 671 681 delete in_INSERT_OPERATION ; … … 701 711 if (_param->_have_port_ooo_engine_id) 702 712 delete [] out_RETIRE_OOO_ENGINE_ID ; 703 if (_param->_have_port_rob_ id)713 if (_param->_have_port_rob_ptr) 704 714 delete [] out_RETIRE_ROB_ID ; 705 715 delete [] out_RETIRE_OPERATION ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/include/Parameters.h
r81 r88 26 26 { 27 27 //-----[ fields ]------------------------------------------------------------ 28 public : const uint32_t _size_queue ; 29 public : const uint32_t _nb_inst_retire ; 30 public : const uint32_t _nb_context ; 31 public : const uint32_t _nb_front_end ; 32 public : const uint32_t _nb_ooo_engine ; 33 public : const uint32_t _nb_packet ; 34 public : const uint32_t _size_general_data ; 35 public : const uint32_t _size_special_data ; 36 public : const uint32_t _nb_general_register ; 37 public : const uint32_t _nb_special_register ; 38 public : const uint32_t _nb_gpr_write ; 39 public : const uint32_t _nb_spr_write ; 40 public : const uint32_t _nb_bypass_write ;//if nb_bypass=0, then bypass is desactivated 41 public : const uint32_t _nb_bypass_memory ;//if nb_bypass=0, then bypass is desactivated 42 public : const uint32_t _size_store_queue ; 43 public : const uint32_t _size_load_queue ; 28 public : uint32_t _size_queue ; 29 public : uint32_t _nb_inst_retire ; 30 public : uint32_t _nb_context ; 31 public : uint32_t _nb_front_end ; 32 public : uint32_t _nb_ooo_engine ; 33 public : uint32_t _nb_packet ; 34 //public : uint32_t _size_general_data ; 35 //public : uint32_t _size_special_data ; 36 public : uint32_t _nb_general_register ; 37 public : uint32_t _nb_special_register ; 38 public : uint32_t _nb_gpr_write ; 39 public : uint32_t _nb_spr_write ; 40 public : uint32_t _nb_bypass_write ;//if nb_bypass=0, then bypass is desactivated 41 public : uint32_t _nb_bypass_memory ;//if nb_bypass=0, then bypass is desactivated 42 //public : uint32_t _size_store_queue ; 43 //public : uint32_t _size_load_queue ; 44 /* 45 public : bool _have_immediat ; 46 public : bool _have_gpr_ra ; 47 public : bool _have_gpr_rb ; 48 public : bool _have_spr_rc ; 49 public : bool _have_gpr_rd ; 50 public : bool _have_spr_re ; 51 */ 52 //public : uint32_t _size_context_id ; 53 //public : uint32_t _size_front_end_id ; 54 //public : uint32_t _size_ooo_engine_id ; 55 //public : uint32_t _size_rob_ptr ; 56 //public : uint32_t _size_general_register; 57 //public : uint32_t _size_special_register; 44 58 45 /* 46 public : const bool _have_immediat ; 47 public : const bool _have_gpr_ra ; 48 public : const bool _have_gpr_rb ; 49 public : const bool _have_spr_rc ; 50 public : const bool _have_gpr_rd ; 51 public : const bool _have_spr_re ; 52 */ 53 public : const uint32_t _size_context_id ; 54 public : const uint32_t _size_front_end_id ; 55 public : const uint32_t _size_ooo_engine_id ; 56 public : const uint32_t _size_rob_id ; 57 public : const uint32_t _size_general_register; 58 public : const uint32_t _size_special_register; 59 60 public : const bool _have_port_context_id ; 61 public : const bool _have_port_front_end_id ; 62 public : const bool _have_port_ooo_engine_id; 63 public : const bool _have_port_rob_id ; 64 public : const bool _have_port_load_queue_ptr; 59 //public : bool _have_port_context_id ; 60 //public : bool _have_port_front_end_id ; 61 //public : bool _have_port_ooo_engine_id; 62 //public : bool _have_port_rob_ptr ; 63 //public : bool _have_port_load_queue_ptr; 65 64 66 65 //-----[ methods ]----------------------------------------------------------- … … 80 79 uint32_t nb_bypass_memory , 81 80 uint32_t size_store_queue , 82 uint32_t size_load_queue ); 81 uint32_t size_load_queue , 82 bool is_toplevel=false); 83 83 84 public : Parameters (Parameters & param) ;84 // public : Parameters (Parameters & param) ; 85 85 public : ~Parameters () ; 86 87 public : void copy (void); 86 88 87 89 public : Parameters_test msg_error (void); -
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 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/Makefile
r81 r88 24 24 library_clean : Read_unit_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_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/configuration.cfg
r81 r88 1 1 Read_unit 2 4 4*2 # size_read_queue3 4 4*2 # size_reservation_station2 4 8 *2 # size_read_queue 3 4 8 *2 # size_reservation_station 4 4 1 1 *2 # nb_context 5 5 1 1 *2 # nb_front_end 6 1 4 * 2# nb_ooo_engine6 1 4 *4 # nb_ooo_engine 7 7 64 64 *2 # nb_packet 8 8 32 32 *2 # size_general_data … … 10 10 64 64 *2 # nb_general_register 11 11 16 16 *2 # nb_special_register 12 2 2 *2# nb_gpr_write13 2 2 *2# nb_spr_write14 4 4 *2 # size_store_queue 15 14 *4 # size_load_queue16 2 2 *2# nb_inst_retire17 2 2 *2# nb_bypass_write18 2 2 *2# nb_bypass_memory12 4 4 *4 # nb_gpr_write 13 4 4 *4 # nb_spr_write 14 4 4 *2 # size_store_queue 15 4 4 *4 # size_load_queue 16 4 4 *4 # nb_inst_retire 17 4 4 *4 # nb_bypass_write 18 4 4 *4 # nb_bypass_memory -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/main.cpp
r81 r88 85 85 _nb_inst_retire , 86 86 _nb_bypass_write , 87 _nb_bypass_memory ); 87 _nb_bypass_memory , 88 true // is_toplevel 89 ); 88 90 89 91 msg(_("%s"),param->print(1).c_str()); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/src/test.cpp
r82 r88 7 7 */ 8 8 9 #define NB_ITERATION 1 10 #define CYCLE_MAX (1 28*NB_ITERATION)9 #define NB_ITERATION 16 10 #define CYCLE_MAX (1024*NB_ITERATION) 11 11 12 12 #include "Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/SelfTest/include/test.h" 13 13 #include "Common/include/Test.h" 14 #include "Common/include/BitManipulation.h" 14 15 #include "Behavioural/include/Allocation.h" 16 17 class write_req_t 18 { 19 public : uint32_t ooo; 20 public : uint32_t reg; 21 22 write_req_t (uint32_t ooo, 23 uint32_t reg) 24 { 25 this->ooo = ooo; 26 this->reg = reg; 27 } 28 }; 15 29 16 30 void test (string name, … … 22 36 morpheo::behavioural::Parameters_Statistics * _parameters_statistics = new morpheo::behavioural::Parameters_Statistics (5,50); 23 37 #endif 38 39 Tusage_t _usage = USE_ALL; 40 41 // _usage = usage_unset(_usage,USE_SYSTEMC ); 42 // _usage = usage_unset(_usage,USE_VHDL ); 43 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH ); 44 // _usage = usage_unset(_usage,USE_VHDL_TESTBENCH_ASSERT); 45 // _usage = usage_unset(_usage,USE_POSITION ); 46 // _usage = usage_unset(_usage,USE_STATISTICS ); 47 // _usage = usage_unset(_usage,USE_INFORMATION ); 24 48 25 49 Read_unit * _Read_unit = new Read_unit … … 29 53 #endif 30 54 _param, 31 USE_ALL);55 _usage); 32 56 33 57 #ifdef SYSTEMC … … 130 154 if (_param->_have_port_ooo_engine_id) 131 155 INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OOO_ENGINE_ID ); 132 if (_param->_have_port_ packet_id)156 if (_param->_have_port_rob_ptr) 133 157 INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_PACKET_ID ); 134 158 INSTANCE_SC_SIGNAL (_Read_unit, in_READ_UNIT_IN_OPERATION ); … … 157 181 if (_param->_have_port_ooo_engine_id) 158 182 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_OOO_ENGINE_ID ,_param->_nb_inst_retire); 159 if (_param->_have_port_ packet_id)183 if (_param->_have_port_rob_ptr) 160 184 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_PACKET_ID ,_param->_nb_inst_retire); 161 185 INSTANCE1_SC_SIGNAL(_Read_unit,out_READ_UNIT_OUT_OPERATION ,_param->_nb_inst_retire); … … 213 237 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); 214 238 239 // Initialisation 240 const uint32_t seed = 0; 241 //const uint32_t seed = static_cast<uint32_t>(time(NULL)); 242 243 srand(seed); 244 245 SC_START(0); 246 215 247 Time * _time = new Time(); 216 248 … … 218 250 * Simulation - Begin 219 251 ********************************************************/ 220 252 { 221 253 // Initialisation 222 254 223 const uint32_t seed = 0; 224 //const uint32_t seed = static_cast<uint32_t>(time(NULL)); 225 226 srand(seed); 227 228 SC_START(0); 255 const uint32_t nb_request = _param->_nb_packet; 256 257 Tcontext_t _ooo_engine_id [nb_request]; 258 Tcontrol_t _read_ra [nb_request]; 259 Tgeneral_address_t _num_reg_ra [nb_request]; 260 Tcontrol_t _read_rb [nb_request]; 261 Tgeneral_address_t _num_reg_rb [nb_request]; 262 Tcontrol_t _read_rc [nb_request]; 263 Tspecial_address_t _num_reg_rc [nb_request]; 264 265 // emulation of registerFile 266 Tcontrol_t _gpr_val [_param->_nb_general_register][_param->_nb_ooo_engine]; 267 Tgeneral_data_t _gpr [_param->_nb_general_register][_param->_nb_ooo_engine]; 268 Tcontrol_t _spr_val [_param->_nb_special_register][_param->_nb_ooo_engine]; 269 Tspecial_data_t _spr [_param->_nb_special_register][_param->_nb_ooo_engine]; 270 229 271 LABEL("Initialisation"); 230 231 LABEL("Reset"); 272 in_READ_UNIT_IN_VAL ->write(0); 273 for (uint32_t i=0; i<_param->_nb_inst_retire ; i++) 274 in_READ_UNIT_OUT_ACK [i]->write(0); 275 for (uint32_t i=0; i<_param->_nb_gpr_write ; i++) 276 in_GPR_WRITE_VAL [i]->write(0); 277 for (uint32_t i=0; i<_param->_nb_spr_write ; i++) 278 in_SPR_WRITE_VAL [i]->write(0); 279 for (uint32_t i=0; i<_param->_nb_bypass_write ; i++) 280 { 281 in_BYPASS_WRITE_GPR_VAL [i]->write(0); 282 in_BYPASS_WRITE_SPR_VAL [i]->write(0); 283 } 284 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) 285 in_BYPASS_MEMORY_VAL [i]->write(0); 286 232 287 in_NRESET->write(0); 233 288 SC_START(5); 234 in_NRESET->write(1); 289 in_NRESET->write(1); 235 290 236 291 LABEL("Loop of Test"); … … 240 295 LABEL("Iteration %d",iteration); 241 296 242 SC_START(1); 297 int32_t percent_transaction_queue_in = (rand()%50)+25; 298 int32_t percent_transaction_queue_out = (rand()%50)+25; 299 int32_t percent_registerfile_valid = (rand()%50)+25; 300 int32_t percent_transaction_registerfile = (rand()%50)+25; 301 int32_t percent_transaction_bypass = (rand()%50)+25; 302 303 LABEL("Initialisation"); 304 305 for (uint32_t i=0; i<nb_request; i++) 306 { 307 _ooo_engine_id [i] = rand()% _param->_nb_ooo_engine ; 308 _read_ra [i] = rand()% 2 ; 309 _num_reg_ra [i] = rand()% _param->_nb_general_register ; 310 _read_rb [i] = rand()% 2 ; 311 _num_reg_rb [i] = rand()% _param->_nb_general_register ; 312 _read_rc [i] = rand()% 2 ; 313 _num_reg_rc [i] = rand()% _param->_nb_special_register ; 314 } 315 316 // emulation of registerFile 317 for (uint32_t j=0; j<_param->_nb_ooo_engine; j++) 318 { 319 for (uint32_t i=0; i<_param->_nb_general_register; i++) 320 { 321 _gpr_val [i][j] = ((rand()%100) < percent_registerfile_valid); 322 _gpr [i][j] = range<Tgeneral_data_t>(rand(),_param->_size_general_data); 323 } 324 for (uint32_t i=0; i<_param->_nb_special_register; i++) 325 { 326 _spr_val [i][j] = ((rand()%100) < percent_registerfile_valid); 327 _spr [i][j] = range<Tspecial_data_t>(rand(),_param->_size_special_data); 328 } 329 } 330 // End initialisation ....... 331 332 uint32_t request_in = 0; 333 uint32_t request_out = 0; 334 bool request_out_wait [nb_request]; 335 336 for (uint32_t i=0; i<nb_request; i++) 337 request_out_wait [i] = true; 338 339 // bool can_gpr_use [_param->_nb_ooo_engine][_param->_nb_general_register]; 340 // bool can_spr_use [_param->_nb_ooo_engine][_param->_nb_special_register]; 341 342 list<write_req_t> write_req_gpr; 343 list<write_req_t> write_req_spr; 344 345 while (request_out < nb_request) 346 { 347 LABEL("request_in : %d",request_in ); 348 LABEL("request_out : %d",request_out); 349 for (uint32_t i=0; i<nb_request; i++) 350 if (request_out_wait [i]) 351 LABEL("request_out_wait : %d",i); 352 LABEL("write_req_gpr size : %d",write_req_gpr.size()); 353 LABEL("write_req_spr size : %d",write_req_spr.size()); 354 355 // for (uint32_t j=0; j<_param->_nb_ooo_engine; j++) 356 // { 357 // for (uint32_t i=0; i<_param->_nb_general_register; i++) 358 // can_gpr_use [j][i] = true; 359 // for (uint32_t i=0; i<_param->_nb_special_register; i++) 360 // can_spr_use [j][i] = true; 361 // } 362 363 Tcontrol_t read_unit_in_val = (request_in < nb_request) and ((rand()%100) < percent_transaction_queue_in); 364 Tcontext_t read_unit_in_ooo_engine_id; 365 Tgeneral_address_t read_unit_in_num_reg_ra; 366 Tgeneral_address_t read_unit_in_num_reg_rb; 367 Tspecial_address_t read_unit_in_num_reg_rc; 368 369 in_READ_UNIT_IN_VAL ->write(read_unit_in_val); 370 if (read_unit_in_val) 371 { 372 bool data_val; 373 read_unit_in_ooo_engine_id = _ooo_engine_id [request_in]; 374 read_unit_in_num_reg_ra = _num_reg_ra [request_in]; 375 read_unit_in_num_reg_rb = _num_reg_rb [request_in]; 376 read_unit_in_num_reg_rc = _num_reg_rc [request_in]; 377 378 if (_param->_have_port_context_id) 379 in_READ_UNIT_IN_CONTEXT_ID ->write((2*read_unit_in_ooo_engine_id)%_param->_nb_context ); 380 if (_param->_have_port_front_end_id) 381 in_READ_UNIT_IN_FRONT_END_ID ->write((3*read_unit_in_ooo_engine_id)%_param->_nb_front_end); 382 if (_param->_have_port_ooo_engine_id) 383 in_READ_UNIT_IN_OOO_ENGINE_ID ->write(read_unit_in_ooo_engine_id); 384 if (_param->_have_port_rob_ptr) 385 in_READ_UNIT_IN_PACKET_ID ->write(request_in); 386 in_READ_UNIT_IN_OPERATION ->write(0); 387 in_READ_UNIT_IN_TYPE ->write(0); 388 in_READ_UNIT_IN_STORE_QUEUE_PTR_WRITE->write(0); 389 if (_param->_have_port_load_queue_ptr) 390 in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ->write(0); 391 in_READ_UNIT_IN_HAS_IMMEDIAT->write(0); 392 in_READ_UNIT_IN_IMMEDIAT ->write(0); 393 in_READ_UNIT_IN_READ_RA ->write(_read_ra[request_in]); 394 data_val = not(_read_ra[request_in]) or _gpr_val[read_unit_in_num_reg_ra][read_unit_in_ooo_engine_id]; 395 396 if (not data_val) 397 if (rand ()%2) 398 write_req_gpr.push_back (write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_ra)); 399 else 400 write_req_gpr.push_front(write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_ra)); 401 402 403 in_READ_UNIT_IN_NUM_REG_RA ->write(read_unit_in_num_reg_ra); 404 // in_READ_UNIT_IN_DATA_RA_VAL ->write(data_val); 405 // in_READ_UNIT_IN_DATA_RA ->write((data_val)?_gpr[read_unit_in_num_reg_ra][read_unit_in_ooo_engine_id]:0); 406 in_READ_UNIT_IN_READ_RB ->write(_read_rb[request_in]); 407 data_val = not(_read_rb[request_in]) or _gpr_val[read_unit_in_num_reg_rb][read_unit_in_ooo_engine_id]; 408 409 if (not data_val) 410 if (rand ()%2) 411 write_req_gpr.push_back (write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_rb)); 412 else 413 write_req_gpr.push_front(write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_rb)); 414 415 416 in_READ_UNIT_IN_NUM_REG_RB ->write(read_unit_in_num_reg_rb); 417 // in_READ_UNIT_IN_DATA_RB_VAL ->write(data_val); 418 // in_READ_UNIT_IN_DATA_RB ->write((data_val)?_gpr[read_unit_in_num_reg_rb][read_unit_in_ooo_engine_id]:0); 419 in_READ_UNIT_IN_READ_RC ->write(_read_rc[request_in]); 420 data_val = not(_read_rc[request_in]) or _spr_val[read_unit_in_num_reg_rc][read_unit_in_ooo_engine_id]; 421 422 if (not data_val) 423 if (rand ()%2) 424 write_req_spr.push_back (write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_rc)); 425 else 426 write_req_spr.push_front(write_req_t(read_unit_in_ooo_engine_id,read_unit_in_num_reg_rc)); 427 428 in_READ_UNIT_IN_NUM_REG_RC ->write(read_unit_in_num_reg_rc); 429 // in_READ_UNIT_IN_DATA_RC_VAL ->write(data_val); 430 // in_READ_UNIT_IN_DATA_RC ->write((data_val)?_spr[read_unit_in_num_reg_rc][read_unit_in_ooo_engine_id]:0); 431 in_READ_UNIT_IN_WRITE_RD ->write(0); 432 in_READ_UNIT_IN_NUM_REG_RD ->write(0); 433 in_READ_UNIT_IN_WRITE_RE ->write(0); 434 in_READ_UNIT_IN_NUM_REG_RE ->write(0); 435 436 // can_gpr_use [read_unit_in_ooo_engine_id][read_unit_in_num_reg_ra] = false; 437 // can_gpr_use [read_unit_in_ooo_engine_id][read_unit_in_num_reg_rb] = false; 438 // can_spr_use [read_unit_in_ooo_engine_id][read_unit_in_num_reg_rc] = false; 439 } 440 441 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 442 in_READ_UNIT_OUT_ACK[i]->write((rand()%100)<percent_transaction_queue_out); 443 444 // RegisterFile access 445 for (uint32_t i=0; i<_param->_nb_gpr_read ; i++) 446 { 447 Tcontrol_t ack = (rand()%100) < percent_transaction_registerfile; 448 in_GPR_READ_ACK [i]->write(ack); 449 450 SC_START(0); 451 452 if (out_GPR_READ_VAL [i]->read()) 453 { 454 Tgeneral_address_t num_reg = out_GPR_READ_NUM_REG [i]->read(); 455 Tcontext_t ooo_engine = (_param->_have_port_ooo_engine_id)?out_GPR_READ_OOO_ENGINE_ID [i]->read():0; 456 Tgeneral_data_t data = _gpr [num_reg][ooo_engine]; 457 Tcontrol_t data_val = _gpr_val[num_reg][ooo_engine]; 458 459 if (ack) 460 LABEL(" * GPR_READ [%d] - gpr[%d][%d] -> (%d) 0x%x",i,num_reg,ooo_engine,data_val,data); 461 462 in_GPR_READ_DATA [i]->write(data); 463 in_GPR_READ_DATA_VAL [i]->write(data_val); 464 } 465 } 466 467 for (uint32_t i=0; i<_param->_nb_spr_read ; i++) 468 { 469 Tcontrol_t ack = (rand()%100) < percent_transaction_registerfile; 470 in_SPR_READ_ACK [i]->write(ack); 471 472 SC_START(0); 473 474 if (out_SPR_READ_VAL [i]->read()) 475 { 476 Tspecial_address_t num_reg = out_SPR_READ_NUM_REG [i]->read(); 477 Tcontext_t ooo_engine = (_param->_have_port_ooo_engine_id)?out_SPR_READ_OOO_ENGINE_ID [i]->read():0; 478 Tspecial_data_t data = _spr [num_reg][ooo_engine]; 479 Tcontrol_t data_val = _spr_val[num_reg][ooo_engine]; 480 481 if (ack) 482 LABEL(" * SPR_READ [%d] - spr[%d][%d] -> (%d) 0x%x",i,num_reg,ooo_engine,data_val,data); 483 484 in_SPR_READ_DATA [i]->write(data); 485 in_SPR_READ_DATA_VAL [i]->write(data_val); 486 } 487 } 488 489 list<write_req_t>::iterator it_gpr = write_req_gpr.begin(); 490 list<write_req_t>::iterator it_spr = write_req_spr.begin(); 491 492 LABEL("Bypass Network :"); 493 for (uint32_t i=0; i<_param->_nb_gpr_write; i++) 494 { 495 Tcontext_t ooo_engine = (it_gpr != write_req_gpr.end())?(*it_gpr).ooo:0; 496 Tgeneral_address_t num_reg = (it_gpr != write_req_gpr.end())?(*it_gpr).reg:0; 497 Tcontrol_t val = (_gpr_val [num_reg][ooo_engine]== 0)?((rand()%100) < percent_transaction_registerfile):0; 498 Tgeneral_data_t data = range<Tgeneral_data_t>(rand(),_param->_size_general_data); 499 500 val = (val// and can_spr_use [ooo_engine][num_reg] 501 and (it_gpr != write_req_gpr.end())); 502 503 in_GPR_WRITE_VAL [i]->write(val); 504 if (_param->_have_port_ooo_engine_id) 505 in_GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 506 in_GPR_WRITE_NUM_REG [i]->write(num_reg); 507 in_GPR_WRITE_DATA [i]->write(data); 508 509 if (val) 510 { 511 LABEL(" * GPR_WRITE [%d] - gpr[%d][%d] <- 0x%x",i,num_reg,ooo_engine,data); 512 513 // can_gpr_use [ooo_engine][num_reg] = false; 514 515 _gpr [num_reg][ooo_engine] = data; 516 _gpr_val [num_reg][ooo_engine] = 1; 517 } 518 519 if (it_gpr != write_req_gpr.end()) 520 it_gpr ++; 521 } 522 for (uint32_t i=0; i<_param->_nb_spr_write; i++) 523 { 524 Tcontext_t ooo_engine = (it_spr != write_req_spr.end())?(*it_spr).ooo:0; 525 Tgeneral_address_t num_reg = (it_spr != write_req_spr.end())?(*it_spr).reg:0; 526 527 Tcontrol_t val = (_spr_val [num_reg][ooo_engine]== 0)?((rand()%100) < percent_transaction_registerfile):0; 528 Tspecial_data_t data = range<Tspecial_data_t>(rand(),_param->_size_special_data); 529 530 val = (val // and can_spr_use [ooo_engine][num_reg] 531 and (it_spr != write_req_spr.end())); 532 533 in_SPR_WRITE_VAL [i]->write(val); 534 if (_param->_have_port_ooo_engine_id) 535 in_SPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 536 in_SPR_WRITE_NUM_REG [i]->write(num_reg); 537 in_SPR_WRITE_DATA [i]->write(data); 538 539 if (val == 1) 540 { 541 LABEL(" * SPR_WRITE [%d] - spr[%d][%d] <- 0x%x",i,num_reg,ooo_engine,data); 542 543 // can_spr_use [ooo_engine][num_reg] = false; 544 545 _spr [num_reg][ooo_engine] = data; 546 _spr_val [num_reg][ooo_engine] = 1; 547 } 548 549 if (it_spr != write_req_spr.end()) 550 it_spr ++; 551 552 } 553 554 for (uint32_t i=0; i<_param->_nb_bypass_write; i++) 555 { 556 Tcontext_t ooo_engine = (it_gpr != write_req_gpr.end())?(*it_gpr).ooo:0; 557 Tgeneral_address_t gpr_num_reg= (it_gpr != write_req_gpr.end())?(*it_gpr).reg:0; 558 559 if (_param->_have_port_ooo_engine_id) 560 in_BYPASS_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 561 562 Tcontrol_t gpr_val = (_gpr_val [gpr_num_reg][ooo_engine]== 0)?((rand()%100) < percent_transaction_bypass):0; 563 Tgeneral_data_t gpr_data = range<Tgeneral_data_t>(rand(),_param->_size_general_data); 564 565 gpr_val = (gpr_val // and can_gpr_use [ooo_engine][gpr_num_reg] 566 and (it_gpr != write_req_gpr.end())); 567 568 in_BYPASS_WRITE_GPR_VAL [i]->write(gpr_val); 569 in_BYPASS_WRITE_GPR_NUM_REG[i]->write(gpr_num_reg); 570 in_BYPASS_WRITE_GPR_DATA [i]->write(gpr_data); 571 572 if (gpr_val) 573 { 574 LABEL(" * BYPASS_WRITE [%d] - gpr[%d][%d] <- 0x%x",i,gpr_num_reg,ooo_engine,gpr_data); 575 // can_gpr_use [ooo_engine][gpr_num_reg] = false; 576 577 _gpr [gpr_num_reg][ooo_engine] = gpr_data; 578 _gpr_val [gpr_num_reg][ooo_engine] = 1; 579 } 580 581 if (it_gpr != write_req_gpr.end()) 582 it_gpr ++; 583 584 Tspecial_address_t spr_num_reg = (it_spr != write_req_spr.end())?(*it_spr).reg:0; 585 Tcontrol_t spr_val = (_spr_val [spr_num_reg][ooo_engine]== 0)?((rand()%100) < percent_transaction_bypass):0; 586 Tspecial_data_t spr_data = range<Tspecial_data_t>(rand(),_param->_size_special_data); 587 588 spr_val = (spr_val // and can_spr_use [ooo_engine][spr_num_reg] 589 and (it_spr != write_req_spr.end()) and ((*it_spr).ooo == ooo_engine)); 590 591 in_BYPASS_WRITE_SPR_VAL [i]->write(spr_val); 592 in_BYPASS_WRITE_SPR_NUM_REG[i]->write(spr_num_reg); 593 in_BYPASS_WRITE_SPR_DATA [i]->write(spr_data); 594 595 if (spr_val) 596 { 597 LABEL(" * BYPASS_WRITE [%d] - spr[%d][%d] <- 0x%x",i,spr_num_reg,ooo_engine,spr_data); 598 599 // can_spr_use [ooo_engine][spr_num_reg] = false; 600 601 _spr [spr_num_reg][ooo_engine] = spr_data; 602 _spr_val [spr_num_reg][ooo_engine] = 1; 603 } 604 605 if (it_spr != write_req_spr.end()) 606 it_spr ++; 607 } 608 609 for (uint32_t i=0; i<_param->_nb_bypass_memory; i++) 610 { 611 Tcontext_t ooo_engine = (it_gpr != write_req_gpr.end())?(*it_gpr).ooo:0; 612 Tgeneral_address_t num_reg = (it_gpr != write_req_gpr.end())?(*it_gpr).reg:0; 613 614 if (_param->_have_port_ooo_engine_id) 615 in_BYPASS_MEMORY_OOO_ENGINE_ID [i]->write(ooo_engine); 616 617 Tcontrol_t val = (_gpr_val [num_reg][ooo_engine]== 0)?((rand()%100) < percent_transaction_bypass):0; 618 Tgeneral_data_t data = range<Tgeneral_data_t>(rand(),_param->_size_general_data); 619 620 val = (val // and can_gpr_use [ooo_engine][num_reg] 621 and (it_gpr != write_req_gpr.end())); 622 623 in_BYPASS_MEMORY_VAL [i]->write(val); 624 in_BYPASS_MEMORY_NUM_REG[i]->write(num_reg); 625 in_BYPASS_MEMORY_DATA [i]->write(data); 626 627 if (val) 628 { 629 LABEL(" * BYPASS_MEMORY [%d] - gpr[%d][%d] <- 0x%x",i,num_reg,ooo_engine,data); 630 631 // can_gpr_use [ooo_engine][num_reg] = false; 632 633 _gpr [num_reg][ooo_engine] = data; 634 _gpr_val [num_reg][ooo_engine] = 1; 635 } 636 637 if (it_gpr != write_req_gpr.end()) 638 it_gpr ++; 639 } 640 641 SC_START(0); // to mealy function 642 643 // LABEL("Test READ_UNIT_IN : "+toString(in_READ_UNIT_IN_VAL->read())+","+toString(out_READ_UNIT_IN_ACK->read())); 644 if (( in_READ_UNIT_IN_VAL->read() == 1) and 645 (out_READ_UNIT_IN_ACK->read() == 1)) 646 { 647 LABEL("Accepted READ_UNIT_IN number : %d",request_in); 648 request_in ++; 649 } 650 651 for (uint32_t i=0; i<_param->_nb_inst_retire; i++) 652 { 653 LABEL("Test READ_UNIT_OUT %d : %d,%d",i,out_READ_UNIT_OUT_VAL[i]->read(),in_READ_UNIT_OUT_ACK[i]->read()); 654 if ((out_READ_UNIT_OUT_VAL [i]->read() == 1) and 655 ( in_READ_UNIT_OUT_ACK [i]->read() == 1)) 656 { 657 Tpacket_t packet_id; 658 if (_param->_have_port_rob_ptr) 659 packet_id = out_READ_UNIT_OUT_PACKET_ID [i]->read(); 660 else 661 packet_id = 0; 662 LABEL("Accepted READ_UNIT_OUT [%d] number : %d, request number : %d",i,packet_id,request_out); 663 TEST(bool, request_out_wait [packet_id] , true); 664 665 request_out ++; 666 request_out_wait [packet_id] = false; 667 668 Tcontext_t ooo_engine_id = _ooo_engine_id [packet_id]; 669 670 if (_param->_have_port_context_id) 671 TEST(Tcontext_t ,out_READ_UNIT_OUT_CONTEXT_ID [i]->read(),(2*ooo_engine_id)%_param->_nb_context ); 672 if (_param->_have_port_front_end_id) 673 TEST(Tcontext_t ,out_READ_UNIT_OUT_FRONT_END_ID [i]->read(),(3*ooo_engine_id)%_param->_nb_front_end); 674 if (_param->_have_port_ooo_engine_id) 675 TEST(Tcontext_t ,out_READ_UNIT_OUT_OOO_ENGINE_ID[i]->read(),ooo_engine_id); 676 677 if (_read_ra [packet_id]) 678 TEST(Tgeneral_data_t ,out_READ_UNIT_OUT_DATA_RA [i]->read(),_gpr[_num_reg_ra[packet_id]][ooo_engine_id]); 679 680 if (_read_rb [packet_id]) 681 TEST(Tgeneral_data_t ,out_READ_UNIT_OUT_DATA_RB [i]->read(),_gpr[_num_reg_rb[packet_id]][ooo_engine_id]); 682 683 if (_read_rc [packet_id]) 684 TEST(Tspecial_data_t ,out_READ_UNIT_OUT_DATA_RC [i]->read(),_spr[_num_reg_rc[packet_id]][ooo_engine_id]); 685 } 686 } 687 688 SC_START(1); 689 690 for (list<write_req_t>::iterator it = write_req_gpr.begin(); 691 it != write_req_gpr.end(); 692 ) 693 { 694 if (_gpr_val [(*it).reg][(*it).ooo] == 1) 695 it = write_req_gpr.erase(it); 696 else 697 it ++; 698 } 699 700 for (list<write_req_t>::iterator it = write_req_spr.begin(); 701 it != write_req_spr.end(); 702 ) 703 { 704 if (_spr_val [(*it).reg][(*it).ooo] == 1) 705 it = write_req_spr.erase(it); 706 else 707 it ++; 708 } 709 } 710 711 for (uint32_t i=0; i<nb_request; i++) 712 TEST(bool, request_out_wait [i] , false); 243 713 } 714 } 244 715 245 716 /******************************************************** -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/include/Parameters.h
r81 r88 26 26 { 27 27 //-----[ fields ]------------------------------------------------------------ 28 public : constuint32_t _size_read_queue ;29 public : constuint32_t _size_reservation_station;30 public : constuint32_t _nb_context ;31 public : constuint32_t _nb_front_end ;32 public : constuint32_t _nb_ooo_engine ;33 public : constuint32_t _nb_packet ;34 public : constuint32_t _size_general_data ;35 public : constuint32_t _size_special_data ;36 public : constuint32_t _nb_general_register ;37 public : constuint32_t _nb_special_register ;38 public : constuint32_t _nb_gpr_write ;39 public : constuint32_t _nb_spr_write ;40 public : constuint32_t _size_store_queue ;41 public : constuint32_t _size_load_queue ;42 public : constuint32_t _nb_inst_retire ;43 public : constuint32_t _nb_bypass_write ;44 public : constuint32_t _nb_bypass_memory ;45 46 public : constuint32_t _nb_gpr_read ;47 public : constuint32_t _nb_spr_read ;48 public : constuint32_t _size_context_id ;49 public : constuint32_t _size_front_end_id ;50 public : constuint32_t _size_ooo_engine_id ;51 public : constuint32_t _size_packet_id ;52 public : constuint32_t _size_general_register ;53 public : constuint32_t _size_special_register ;28 public : uint32_t _size_read_queue ; 29 public : uint32_t _size_reservation_station; 30 public : uint32_t _nb_context ; 31 public : uint32_t _nb_front_end ; 32 public : uint32_t _nb_ooo_engine ; 33 public : uint32_t _nb_packet ; 34 //public : uint32_t _size_general_data ; 35 //public : uint32_t _size_special_data ; 36 public : uint32_t _nb_general_register ; 37 public : uint32_t _nb_special_register ; 38 public : uint32_t _nb_gpr_write ; 39 public : uint32_t _nb_spr_write ; 40 //public : uint32_t _size_store_queue ; 41 //public : uint32_t _size_load_queue ; 42 public : uint32_t _nb_inst_retire ; 43 public : uint32_t _nb_bypass_write ; 44 public : uint32_t _nb_bypass_memory ; 45 46 public : uint32_t _nb_gpr_read ; 47 public : uint32_t _nb_spr_read ; 48 //public : uint32_t _size_context_id ; 49 //public : uint32_t _size_front_end_id ; 50 //public : uint32_t _size_ooo_engine_id ; 51 //public : uint32_t _size_packet_id ; 52 //public : uint32_t _size_general_register ; 53 //public : uint32_t _size_special_register ; 54 54 55 public : constbool _have_port_context_id ;56 public : constbool _have_port_front_end_id ;57 public : constbool _have_port_ooo_engine_id ;58 public : constbool _have_port_packet_id ;59 public : constbool _have_port_load_queue_ptr;55 //public : bool _have_port_context_id ; 56 //public : bool _have_port_front_end_id ; 57 //public : bool _have_port_ooo_engine_id ; 58 //public : bool _have_port_packet_id ; 59 //public : bool _have_port_load_queue_ptr; 60 60 61 61 public : morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue ::Parameters * _param_read_queue; … … 79 79 uint32_t nb_inst_retire , 80 80 uint32_t nb_bypass_write , 81 uint32_t nb_bypass_memory ); 82 public : Parameters (Parameters & param) ; 81 uint32_t nb_bypass_memory , 82 bool is_toplevel=false); 83 //public : Parameters (Parameters & param) ; 83 84 public : ~Parameters () ; 85 86 public : void copy (void); 84 87 85 88 public : Parameters_test msg_error (void); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters.cpp
r81 r88 20 20 #define FUNCTION "Read_unit::Parameters" 21 21 Parameters::Parameters (uint32_t size_read_queue , 22 uint32_t size_reservation_station, 23 uint32_t nb_context , 24 uint32_t nb_front_end , 25 uint32_t nb_ooo_engine , 26 uint32_t nb_packet , 27 uint32_t size_general_data , 28 uint32_t size_special_data , 29 uint32_t nb_general_register , 30 uint32_t nb_special_register , 31 uint32_t nb_gpr_write , 32 uint32_t nb_spr_write , 33 uint32_t size_store_queue , 34 uint32_t size_load_queue , 35 uint32_t nb_inst_retire , 36 uint32_t nb_bypass_write , 37 uint32_t nb_bypass_memory ): 38 _size_read_queue (size_read_queue ), 39 _size_reservation_station (size_reservation_station), 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 _size_store_queue (size_store_queue ), 51 _size_load_queue (size_load_queue ), 52 _nb_inst_retire (nb_inst_retire ), 53 _nb_bypass_write (nb_bypass_write ), 54 _nb_bypass_memory (nb_bypass_memory ), 55 56 _nb_gpr_read (2), 57 _nb_spr_read (1), 58 _size_context_id (log2(nb_context )), 59 _size_front_end_id (log2(nb_front_end )), 60 _size_ooo_engine_id (log2(nb_ooo_engine )), 61 _size_packet_id (log2(nb_packet )), 62 _size_general_register (log2(nb_general_register)), 63 _size_special_register (log2(nb_special_register)), 64 65 _have_port_context_id (_size_context_id >0), 66 _have_port_front_end_id (_size_front_end_id >0), 67 _have_port_ooo_engine_id (_size_ooo_engine_id>0), 68 _have_port_packet_id (_size_packet_id >0), 69 _have_port_load_queue_ptr (_size_load_queue >1) 22 uint32_t size_reservation_station, 23 uint32_t nb_context , 24 uint32_t nb_front_end , 25 uint32_t nb_ooo_engine , 26 uint32_t nb_packet , 27 uint32_t size_general_data , 28 uint32_t size_special_data , 29 uint32_t nb_general_register , 30 uint32_t nb_special_register , 31 uint32_t nb_gpr_write , 32 uint32_t nb_spr_write , 33 uint32_t size_store_queue , 34 uint32_t size_load_queue , 35 uint32_t nb_inst_retire , 36 uint32_t nb_bypass_write , 37 uint32_t nb_bypass_memory , 38 bool is_toplevel) 70 39 { 71 40 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 72 41 42 _size_read_queue = size_read_queue ; 43 _size_reservation_station = size_reservation_station; 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_inst_retire = nb_inst_retire ; 53 _nb_bypass_write = nb_bypass_write ; 54 _nb_bypass_memory = nb_bypass_memory ; 55 56 _nb_gpr_read = 2; 57 _nb_spr_read = 1; 58 73 59 _param_read_queue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Parameters 74 ( 75 76 77 78 79 ,_size_general_data80 ,_size_special_data81 82 83 84 85 ,_size_store_queue86 ,_size_load_queue87 60 (_size_read_queue 61 ,_nb_context 62 ,_nb_front_end 63 ,_nb_ooo_engine 64 ,_nb_packet 65 , size_general_data 66 , size_special_data 67 ,_nb_general_register 68 ,_nb_special_register 69 ,_nb_gpr_write 70 ,_nb_spr_write 71 , size_store_queue 72 , size_load_queue 73 ); 88 74 89 75 _param_reservation_station = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Parameters 90 (size_reservation_station 91 ,nb_inst_retire 92 ,nb_context 93 ,nb_front_end 94 ,nb_ooo_engine 95 ,nb_packet 96 ,size_general_data 97 ,size_special_data 98 ,nb_general_register 99 ,nb_special_register 100 ,nb_gpr_write 101 ,nb_spr_write 102 ,nb_bypass_write 103 ,nb_bypass_memory 104 ,size_store_queue 105 ,size_load_queue 106 ); 107 76 (_size_reservation_station 77 ,_nb_inst_retire 78 ,_nb_context 79 ,_nb_front_end 80 ,_nb_ooo_engine 81 ,_nb_packet 82 , size_general_data 83 , size_special_data 84 ,_nb_general_register 85 ,_nb_special_register 86 ,_nb_gpr_write 87 ,_nb_spr_write 88 ,_nb_bypass_write 89 ,_nb_bypass_memory 90 , size_store_queue 91 , size_load_queue 92 ); 108 93 109 94 test(); 95 96 if (is_toplevel) 97 { 98 _size_context_id = log2(nb_context ); 99 _size_front_end_id = log2(nb_front_end ); 100 _size_ooo_engine_id = log2(nb_ooo_engine ); 101 _size_rob_ptr = log2(nb_packet ); 102 _size_general_register = log2(nb_general_register); 103 _size_special_register = log2(nb_special_register); 104 _size_general_data = size_general_data ; 105 _size_special_data = size_special_data ; 106 _size_store_queue_ptr = log2(size_store_queue ); 107 _size_load_queue_ptr = log2(size_load_queue ); 108 109 _have_port_context_id = _size_context_id > 0; 110 _have_port_front_end_id = _size_front_end_id > 0; 111 _have_port_ooo_engine_id = _size_ooo_engine_id > 0; 112 _have_port_rob_ptr = _size_rob_ptr > 0; 113 _have_port_load_queue_ptr = _size_load_queue_ptr > 0; 114 115 copy(); 116 } 110 117 111 118 log_printf(FUNC,Read_unit,FUNCTION,"End"); 112 119 }; 113 120 121 // #undef FUNCTION 122 // #define FUNCTION "Read_unit::Parameters (copy)" 123 // Parameters::Parameters (Parameters & param): 124 // _size_read_queue (param._size_read_queue ), 125 // _size_reservation_station (param._size_reservation_station), 126 // _nb_context (param._nb_context ), 127 // _nb_front_end (param._nb_front_end ), 128 // _nb_ooo_engine (param._nb_ooo_engine ), 129 // _nb_packet (param._nb_packet ), 130 // _size_general_data (param._size_general_data ), 131 // _size_special_data (param._size_special_data ), 132 // _nb_general_register (param._nb_general_register ), 133 // _nb_special_register (param._nb_special_register ), 134 // _nb_gpr_write (param._nb_gpr_write ), 135 // _nb_spr_write (param._nb_spr_write ), 136 // _size_store_queue (param._size_store_queue ), 137 // _size_load_queue (param._size_load_queue ), 138 // _nb_inst_retire (param._nb_inst_retire ), 139 // _nb_bypass_write (param._nb_bypass_write ), 140 // _nb_bypass_memory (param._nb_bypass_memory ), 141 142 // _nb_gpr_read (param._nb_gpr_read ), 143 // _nb_spr_read (param._nb_spr_read ), 144 // _size_context_id (param._size_context_id ), 145 // _size_front_end_id (param._size_front_end_id ), 146 // _size_ooo_engine_id (param._size_ooo_engine_id ), 147 // _size_packet_id (param._size_packet_id ), 148 // _size_general_register (param._size_general_register ), 149 // _size_special_register (param._size_special_register ), 150 151 // _have_port_context_id (param._have_port_context_id ), 152 // _have_port_front_end_id (param._have_port_front_end_id ), 153 // _have_port_ooo_engine_id (param._have_port_ooo_engine_id ), 154 // _have_port_packet_id (param._have_port_packet_id ), 155 // _have_port_load_queue_ptr (param._have_port_load_queue_ptr) 156 // { 157 // log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 158 159 // _param_read_queue = param._param_read_queue ; 160 // _param_reservation_station = param._param_reservation_station; 161 162 // test(); 163 164 // log_printf(FUNC,Read_unit,FUNCTION,"End"); 165 // }; 166 114 167 #undef FUNCTION 115 #define FUNCTION "Read_unit::Parameters (copy)" 116 Parameters::Parameters (Parameters & param): 117 _size_read_queue (param._size_read_queue ), 118 _size_reservation_station (param._size_reservation_station), 119 _nb_context (param._nb_context ), 120 _nb_front_end (param._nb_front_end ), 121 _nb_ooo_engine (param._nb_ooo_engine ), 122 _nb_packet (param._nb_packet ), 123 _size_general_data (param._size_general_data ), 124 _size_special_data (param._size_special_data ), 125 _nb_general_register (param._nb_general_register ), 126 _nb_special_register (param._nb_special_register ), 127 _nb_gpr_write (param._nb_gpr_write ), 128 _nb_spr_write (param._nb_spr_write ), 129 _size_store_queue (param._size_store_queue ), 130 _size_load_queue (param._size_load_queue ), 131 _nb_inst_retire (param._nb_inst_retire ), 132 _nb_bypass_write (param._nb_bypass_write ), 133 _nb_bypass_memory (param._nb_bypass_memory ), 134 135 _nb_gpr_read (param._nb_gpr_read ), 136 _nb_spr_read (param._nb_spr_read ), 137 _size_context_id (param._size_context_id ), 138 _size_front_end_id (param._size_front_end_id ), 139 _size_ooo_engine_id (param._size_ooo_engine_id ), 140 _size_packet_id (param._size_packet_id ), 141 _size_general_register (param._size_general_register ), 142 _size_special_register (param._size_special_register ), 143 144 _have_port_context_id (param._have_port_context_id ), 145 _have_port_front_end_id (param._have_port_front_end_id ), 146 _have_port_ooo_engine_id (param._have_port_ooo_engine_id ), 147 _have_port_packet_id (param._have_port_packet_id ), 148 _have_port_load_queue_ptr (param._have_port_load_queue_ptr) 168 #define FUNCTION "Read_unit::~Parameters" 169 Parameters::~Parameters (void) 149 170 { 150 171 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 151 172 152 _param_read_queue = param._param_read_queue ; 153 _param_reservation_station = param._param_reservation_station; 154 155 test(); 173 delete _param_read_queue; 174 delete _param_reservation_station; 156 175 157 176 log_printf(FUNC,Read_unit,FUNCTION,"End"); … … 159 178 160 179 #undef FUNCTION 161 #define FUNCTION "Read_unit:: ~Parameters"162 Parameters::~Parameters ()180 #define FUNCTION "Read_unit::copy" 181 void Parameters::copy (void) 163 182 { 164 183 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 165 184 166 delete _param_read_queue;167 delete _param_reservation_station;185 COPY(_param_read_queue); 186 COPY(_param_reservation_station); 168 187 169 188 log_printf(FUNC,Read_unit,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Parameters_print.cpp
r81 r88 39 39 xml.singleton_begin("nb_gpr_write "); xml.attribut("value",toString(_nb_gpr_write )); xml.singleton_end(); 40 40 xml.singleton_begin("nb_spr_write "); xml.attribut("value",toString(_nb_spr_write )); xml.singleton_end(); 41 42 41 // xml.singleton_begin("size_store_queue "); xml.attribut("value",toString(_size_store_queue )); xml.singleton_end(); 42 // xml.singleton_begin("size_load_queue "); xml.attribut("value",toString(_size_load_queue )); xml.singleton_end(); 43 43 xml.singleton_begin("nb_inst_retire "); xml.attribut("value",toString(_nb_inst_retire )); xml.singleton_end(); 44 44 xml.singleton_begin("nb_bypass_write "); xml.attribut("value",toString(_nb_bypass_write )); xml.singleton_end(); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit.cpp
r81 r88 38 38 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 39 39 40 #if DEBUG_Read_unit == true 41 log_printf(INFO,Read_unit,FUNCTION,_("<%s> Parameters"),_name.c_str()); 42 43 std::cout << *param << std::endl; 44 #endif 45 40 46 log_printf(INFO,Read_unit,FUNCTION,"Allocation"); 41 47 … … 47 53 48 54 #ifdef STATISTICS 49 if ( _usage & USE_STATISTICS)55 if (usage_is_set(_usage,USE_STATISTICS)) 50 56 { 51 57 log_printf(INFO,Read_unit,FUNCTION,"Allocation of statistics"); … … 56 62 57 63 #ifdef VHDL 58 if ( _usage & USE_VHDL)64 if (usage_is_set(_usage,USE_VHDL)) 59 65 { 60 66 // generate the vhdl … … 66 72 67 73 #ifdef SYSTEMC 68 if ( _usage & USE_SYSTEMC)74 if (usage_is_set(_usage,USE_SYSTEMC)) 69 75 { 70 76 log_printf(INFO,Read_unit,FUNCTION,"Method - transition"); … … 90 96 91 97 #ifdef STATISTICS 92 if ( _usage & USE_STATISTICS)98 if (usage_is_set(_usage,USE_STATISTICS)) 93 99 { 94 100 log_printf(INFO,Read_unit,FUNCTION,"Generate Statistics file"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_allocation.cpp
r82 r88 48 48 ,IN 49 49 ,SOUTH, 50 "Generalist interface"50 _("Generalist interface") 51 51 #endif 52 52 ); … … 57 57 // ~~~~~[ Interface "read_unit_in" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 58 58 { 59 ALLOC_INTERFACE("read_unit_in", IN, WEST, "Enter of new operation");59 ALLOC_INTERFACE("read_unit_in", IN, WEST, _("Enter of new operation")); 60 60 61 61 ALLOC_VALACK_IN ( in_READ_UNIT_IN_VAL,VAL); … … 64 64 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 65 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_ packet_id);66 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 67 67 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 68 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 , log2(_param->_size_store_queue));70 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t , log2(_param->_size_load_queue));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 71 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1); 72 72 ALLOC_SIGNAL_IN ( in_READ_UNIT_IN_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data); … … 85 85 // ~~~~~[ Interface "read_unit_out" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 86 86 { 87 ALLOC1_INTERFACE("read_unit_out", OUT, EAST, "Output of operation. All operand is valid.", _param->_nb_inst_retire);87 ALLOC1_INTERFACE("read_unit_out", OUT, EAST, _("Output of operation. All operand is valid."), _param->_nb_inst_retire); 88 88 89 89 ALLOC1_VALACK_OUT (out_READ_UNIT_OUT_VAL,VAL); … … 92 92 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_FRONT_END_ID ,"front_end_id" ,Tcontext_t ,_param->_size_front_end_id ); 93 93 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_OOO_ENGINE_ID ,"ooo_engine_id" ,Tcontext_t ,_param->_size_ooo_engine_id ); 94 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_ packet_id);94 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_PACKET_ID ,"packet_id" ,Tpacket_t ,_param->_size_rob_ptr ); 95 95 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_OPERATION ,"operation" ,Toperation_t ,_param->_size_operation ); 96 96 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_TYPE ,"type" ,Ttype_t ,_param->_size_type ); 97 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t , log2(_param->_size_store_queue));98 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t , log2(_param->_size_load_queue ));97 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_STORE_QUEUE_PTR_WRITE,"store_queue_ptr_write",Tlsq_ptr_t ,_param->_size_store_queue_ptr); 98 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_LOAD_QUEUE_PTR_WRITE ,"load_queue_ptr_write" ,Tlsq_ptr_t ,_param->_size_load_queue_ptr); 99 99 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t ,1 ); 100 100 ALLOC1_SIGNAL_OUT(out_READ_UNIT_OUT_IMMEDIAT ,"immediat" ,Tgeneral_data_t ,_param->_size_general_data ); … … 110 110 // ~~~~~[ Interface "gpr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 111 111 { 112 ALLOC1_INTERFACE("gpr_read", OUT, SOUTH, "Read port.", _param->_nb_gpr_read);112 ALLOC1_INTERFACE("gpr_read", OUT, SOUTH, _("Read port."), _param->_nb_gpr_read); 113 113 114 114 ALLOC1_VALACK_OUT (out_GPR_READ_VAL,VAL); … … 122 122 // ~~~~~[ Interface "spr_read" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 123 123 { 124 ALLOC1_INTERFACE("spr_read", OUT, SOUTH, "Read port.", _param->_nb_spr_read);124 ALLOC1_INTERFACE("spr_read", OUT, SOUTH, _("Read port."), _param->_nb_spr_read); 125 125 126 126 ALLOC1_VALACK_OUT (out_SPR_READ_VAL,VAL); … … 134 134 // ~~~~~[ Interface "gpr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 135 135 { 136 ALLOC1_INTERFACE("gpr_write", IN , SOUTH, "Write port.", _param->_nb_gpr_write);136 ALLOC1_INTERFACE("gpr_write", IN , SOUTH, _("Write port."), _param->_nb_gpr_write); 137 137 138 138 ALLOC1_VALACK_IN ( in_GPR_WRITE_VAL,VAL); … … 144 144 // ~~~~~[ Interface "spr_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 145 145 { 146 ALLOC1_INTERFACE("spr_write", IN , SOUTH, "Write port.", _param->_nb_spr_write);146 ALLOC1_INTERFACE("spr_write", IN , SOUTH, _("Write port."), _param->_nb_spr_write); 147 147 148 148 ALLOC1_VALACK_IN ( in_SPR_WRITE_VAL,VAL); … … 154 154 // ~~~~~[ Interface "bypass_write" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 155 155 { 156 ALLOC1_INTERFACE("bypass_write", IN , NORTH, "Output of write_queue.", _param->_nb_bypass_write);156 ALLOC1_INTERFACE("bypass_write", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_write); 157 157 158 158 ALLOC1_SIGNAL_IN ( in_BYPASS_WRITE_OOO_ENGINE_ID,"ooo_engine_id",Tcontext_t ,_param->_size_ooo_engine_id ); … … 167 167 // ~~~~~[ Interface "bypass_memory" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 168 168 { 169 ALLOC1_INTERFACE("bypass_memory", IN , NORTH, "Output of write_queue.", _param->_nb_bypass_memory);169 ALLOC1_INTERFACE("bypass_memory", IN , NORTH, _("Output of write_queue."), _param->_nb_bypass_memory); 170 170 171 171 ALLOC1_SIGNAL_IN ( in_BYPASS_MEMORY_VAL ,"val" ,Tcontrol_t ,1); … … 177 177 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 178 178 179 // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~180 181 179 std::string name; 182 180 183 181 { 184 182 name = _name+"_read_queue"; 183 log_printf(INFO,Core,FUNCTION,_("Create : %s"),name.c_str()); 185 184 186 185 _component_read_queue = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::read_queue::Read_queue … … 200 199 { 201 200 name = _name+"_reservation_station"; 202 201 log_printf(INFO,Core,FUNCTION,_("Create : %s"),name.c_str()); 202 203 203 _component_reservation_station = new morpheo::behavioural::core::multi_execute_loop::execute_loop::multi_read_unit::read_unit::reservation_station::Reservation_station 204 204 (name.c_str() … … 219 219 { 220 220 name = _name+"_read_queue"; 221 std::cout << "Instance : " << name << std::endl; 221 log_printf(INFO,Core,FUNCTION,_("Instance : %s"),name.c_str()); 222 222 223 { 223 224 #ifdef POSITION … … 246 247 if (_param->_have_port_ooo_engine_id) 247 248 _component->port_map(name, "in_READ_QUEUE_IN_OOO_ENGINE_ID" ,dest, "in_READ_UNIT_IN_OOO_ENGINE_ID" ); 248 if (_param->_have_port_ packet_id)249 if (_param->_have_port_rob_ptr) 249 250 _component->port_map(name, "in_READ_QUEUE_IN_ROB_ID" ,dest, "in_READ_UNIT_IN_PACKET_ID" ); 250 251 _component->port_map(name, "in_READ_QUEUE_IN_OPERATION" ,dest, "in_READ_UNIT_IN_OPERATION" ); … … 283 284 if (_param->_have_port_ooo_engine_id) 284 285 _component->port_map(name,"out_READ_QUEUE_OUT_OOO_ENGINE_ID" ,dest, "in_INSERT_OOO_ENGINE_ID" ); 285 if (_param->_have_port_ packet_id)286 if (_param->_have_port_rob_ptr) 286 287 _component->port_map(name,"out_READ_QUEUE_OUT_ROB_ID" ,dest, "in_INSERT_ROB_ID" ); 287 288 _component->port_map(name,"out_READ_QUEUE_OUT_OPERATION" ,dest, "in_INSERT_OPERATION" ); … … 379 380 { 380 381 name = _name+"_reservation_station"; 381 std::cout << "Instance : " << name << std::endl;382 log_printf(INFO,Core,FUNCTION,_("Instance : %s"),name.c_str()); 382 383 { 383 384 #ifdef POSITION … … 407 408 if (_param->_have_port_ooo_engine_id) 408 409 _component->port_map(name, "in_INSERT_OOO_ENGINE_ID" ,dest,"out_READ_QUEUE_OUT_OOO_ENGINE_ID" ); 409 if (_param->_have_port_ packet_id)410 if (_param->_have_port_rob_ptr) 410 411 _component->port_map(name, "in_INSERT_ROB_ID" ,dest,"out_READ_QUEUE_OUT_ROB_ID" ); 411 412 _component->port_map(name, "in_INSERT_OPERATION" ,dest,"out_READ_QUEUE_OUT_OPERATION" ); … … 452 453 if (_param->_have_port_ooo_engine_id) 453 454 _component->port_map(name,"out_RETIRE_"+toString(i)+"_OOO_ENGINE_ID" ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_OOO_ENGINE_ID" ); 454 if (_param->_have_port_ packet_id)455 if (_param->_have_port_rob_ptr) 455 456 _component->port_map(name,"out_RETIRE_"+toString(i)+"_ROB_ID" ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_PACKET_ID" ); 456 457 _component->port_map(name,"out_RETIRE_"+toString(i)+"_OPERATION" ,dest,"out_READ_UNIT_OUT_"+toString(i)+"_OPERATION" ); … … 535 536 } 536 537 537 538 #ifdef POSITION 539 _component->generate_file(); 538 #if DEBUG_Read_unit == true 539 _component->test_map(); 540 #endif 541 542 #ifdef POSITION 543 if (usage_is_set(_usage,USE_POSITION)) 544 _component->generate_file(); 540 545 #endif 541 546 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_deallocation.cpp
r81 r88 23 23 log_printf(FUNC,Read_unit,FUNCTION,"Begin"); 24 24 25 if ( _usage & USE_SYSTEMC)25 if (usage_is_set(_usage,USE_SYSTEMC)) 26 26 { 27 27 delete in_CLOCK ; … … 37 37 if (_param->_have_port_ooo_engine_id) 38 38 delete in_READ_UNIT_IN_OOO_ENGINE_ID ; 39 if (_param->_have_port_ packet_id)39 if (_param->_have_port_rob_ptr) 40 40 delete in_READ_UNIT_IN_PACKET_ID ; 41 41 delete in_READ_UNIT_IN_OPERATION ; … … 66 66 if (_param->_have_port_ooo_engine_id) 67 67 delete [] out_READ_UNIT_OUT_OOO_ENGINE_ID ; 68 if (_param->_have_port_ packet_id)68 if (_param->_have_port_rob_ptr) 69 69 delete [] out_READ_UNIT_OUT_PACKET_ID ; 70 70 delete [] out_READ_UNIT_OUT_OPERATION ; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/src/Read_unit_end_cycle.cpp
r81 r88 25 25 26 26 #ifdef STATISTICS 27 _stat->end_cycle(); 27 if (usage_is_set(_usage,USE_STATISTICS)) 28 _stat->end_cycle(); 28 29 #endif 29 30 … … 31 32 // Evaluation before read the ouput signal 32 33 // sc_start(0); 33 _interfaces->testbench(); 34 if (usage_is_set(_usage,USE_VHDL_TESTBENCH)) 35 _interfaces->testbench(); 34 36 #endif 35 37
Note: See TracChangeset
for help on using the changeset viewer.