Changeset 98 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- Timestamp:
- Dec 31, 2008, 11:18:08 AM (16 years ago)
- Location:
- trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit
- Files:
-
- 6 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/src/test.cpp
r88 r98 370 370 for (uint32_t j=0; j<_param->_nb_ooo_engine; j++) 371 371 { 372 for (uint32_t i=0; i<_param->_nb_general_register; i++) 372 _gpr_val [0][j] = 0; 373 _gpr [0][j] = 0; 374 _spr_val [0][j] = 0; 375 _spr [0][j] = 0; 376 377 for (uint32_t i=1; i<_param->_nb_general_register; i++) 373 378 { 374 379 _gpr_val [i][j] = ((rand()%100) < percent_registerfile_valid); 375 380 _gpr [i][j] = rand()%(1<<_param->_size_general_data); 376 381 } 377 for (uint32_t i= 0; i<_param->_nb_special_register; i++)382 for (uint32_t i=1; i<_param->_nb_special_register; i++) 378 383 { 379 384 _spr_val [i][j] = ((rand()%100) < percent_registerfile_valid); … … 381 386 } 382 387 } 388 389 383 390 // End initialisation ....... 384 391 … … 466 473 Tcontext_t ooo_engine = rand()% _param->_nb_ooo_engine; 467 474 Tgeneral_address_t num_reg = rand()% _param->_nb_general_register; 468 Tgeneral_data_t data = rand()%(1<<_param->_size_general_data);475 Tgeneral_data_t data = (num_reg!=0)?(rand()%(1<<_param->_size_general_data)):0; 469 476 470 477 GPR_WRITE_VAL [i]->write(val); … … 534 541 // TEST(Tcontrol_t ,READ_QUEUE_OUT_READ_RA ->read(),_read_ra [rob_id]); 535 542 TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RA ->read(),_num_reg_ra [rob_id]); 536 TEST(Tcontrol_t ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not _read_ra [rob_id] or _gpr_val [_num_reg_ra[rob_id]][ctxt] );543 TEST(Tcontrol_t ,READ_QUEUE_OUT_DATA_RA_VAL->read(),not _read_ra [rob_id] or _gpr_val [_num_reg_ra[rob_id]][ctxt] or (_num_reg_ra[rob_id] == 0)); 537 544 if (_read_ra [rob_id] and 538 545 READ_QUEUE_OUT_DATA_RA_VAL->read()) … … 540 547 // TEST(Tcontrol_t ,READ_QUEUE_OUT_READ_RB ->read(),_read_rb [rob_id]); 541 548 TEST(Tgeneral_address_t,READ_QUEUE_OUT_NUM_REG_RB ->read(),_num_reg_rb [rob_id]); 542 TEST(Tcontrol_t ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not _read_rb [rob_id] or _gpr_val [_num_reg_rb[rob_id]][ctxt] );549 TEST(Tcontrol_t ,READ_QUEUE_OUT_DATA_RB_VAL->read(),not _read_rb [rob_id] or _gpr_val [_num_reg_rb[rob_id]][ctxt] or (_num_reg_rb[rob_id] == 0)); 543 550 if (_read_rb [rob_id] and 544 551 READ_QUEUE_OUT_DATA_RB_VAL->read()) -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/include/Types.h
r82 r98 110 110 log_printf(FUNC,Read_queue,FUNCTION,"Begin"); 111 111 112 _context_id = x._context_id ;113 _front_end_id = x._front_end_id ;114 _ooo_engine_id = x._ooo_engine_id;115 _rob_id = x._rob_id ;116 _operation = x._operation ;117 _type = x._type ;112 _context_id = x._context_id ; 113 _front_end_id = x._front_end_id ; 114 _ooo_engine_id = x._ooo_engine_id; 115 _rob_id = x._rob_id ; 116 _operation = x._operation ; 117 _type = x._type ; 118 118 _store_queue_ptr_write = x._store_queue_ptr_write; 119 119 _load_queue_ptr_write = x._load_queue_ptr_write ; 120 _has_immediat = x._has_immediat ;121 _immediat = x._immediat ;122 _read_ra = x._read_ra ;123 _read_ra_val = x._read_ra == 1 ; //if not must read, the registerFile is already access124 _num_reg_ra = x._num_reg_ra ;125 _data_ra_val = x._read_ra == 0; //if not must read, the data is already valid126 _data_ra = 0 ;127 _read_rb = x._read_rb ;128 _read_rb_val = x._read_rb == 1 ;129 _num_reg_rb = x._num_reg_rb ;130 _data_rb_val = x._read_rb == 0;131 _data_rb = 0 ;132 _read_rc = x._read_rc ;133 _read_rc_val = x._read_rc == 1 ;134 _num_reg_rc = x._num_reg_rc ;135 _data_rc_val = x._read_rc == 0 ;136 _data_rc = 0 ;137 _write_rd = x._write_rd ;138 _num_reg_rd = x._num_reg_rd ;139 _write_re = x._write_re ;140 _num_reg_re = x._num_reg_re ;120 _has_immediat = x._has_immediat ; 121 _immediat = x._immediat ; 122 _read_ra = x._read_ra ; 123 _read_ra_val = x._read_ra == 1 ; //if not must read, the registerFile is already access 124 _num_reg_ra = x._num_reg_ra ; 125 _data_ra_val = ((x._read_ra == 0) or (x._num_reg_ra == 0)); //if not must read, the data is already valid 126 _data_ra = 0 ; 127 _read_rb = x._read_rb ; 128 _read_rb_val = x._read_rb == 1 ; 129 _num_reg_rb = x._num_reg_rb ; 130 _data_rb_val = ((x._read_rb == 0) or (x._num_reg_rb == 0)); 131 _data_rb = 0 ; 132 _read_rc = x._read_rc ; 133 _read_rc_val = x._read_rc == 1 ; 134 _num_reg_rc = x._num_reg_rc ; 135 _data_rc_val = x._read_rc == 0 ; 136 _data_rc = 0 ; 137 _write_rd = x._write_rd ; 138 _num_reg_rd = x._num_reg_rd ; 139 _write_re = x._write_re ; 140 _num_reg_re = x._num_reg_re ; 141 141 142 142 log_printf(FUNC,Read_queue,FUNCTION,"End"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_transition.cpp
r97 r98 146 146 if (_queue->size()>0) 147 147 { 148 // protected : Tread_queue_head_entry_t * _queue_head;149 // protected : std::queue<Tread_queue_entry_t *> * _queue;150 151 148 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 149 0, … … 246 243 } 247 244 #endif 248 249 250 245 } 251 246 -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl.cpp
r81 r98 26 26 27 27 //----- Queue ----- 28 28 29 29 morpheo::behavioural::generic::queue::Parameters * param_queue; 30 30 morpheo::behavioural::generic::queue::Queue * queue; -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/src/Read_queue_vhdl_body.cpp
r97 r98 176 176 vhdl->set_body(0,"out_READ_QUEUE_OUT_HAS_IMMEDIAT <= internal_HAS_IMMEDIAT ;"); 177 177 vhdl->set_body(0,"out_READ_QUEUE_OUT_IMMEDIAT <= internal_IMMEDIAT ;"); 178 // 178 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RA <= internal_READ_RA ;"); 179 179 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RA <= internal_NUM_REG_RA ;"); 180 180 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA_VAL <= internal_NEXT_DATA_RA_VAL;"); 181 181 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RA <= internal_NEXT_DATA_RA ;"); 182 // 182 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RB <= internal_READ_RB ;"); 183 183 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RB <= internal_NUM_REG_RB ;"); 184 184 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB_VAL <= internal_NEXT_DATA_RB_VAL;"); 185 185 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RB <= internal_NEXT_DATA_RB ;"); 186 // 186 // vhdl->set_body(0,"out_READ_QUEUE_OUT_READ_RC <= internal_READ_RC ;"); 187 187 vhdl->set_body(0,"out_READ_QUEUE_OUT_NUM_REG_RC <= internal_NUM_REG_RC ;"); 188 188 vhdl->set_body(0,"out_READ_QUEUE_OUT_DATA_RC_VAL <= internal_NEXT_DATA_RC_VAL;"); -
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Reservation_station/src/Reservation_station_transition.cpp
r97 r98 25 25 log_printf(TRACE,Reservation_station,FUNCTION," * Dump Reservation Station"); \ 26 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(_queue[it_dump]._type).c_str()); \ 27 if (_queue_valid [it_dump]) \ 28 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)", \ 29 it_dump, \ 30 _queue[it_dump]._context_id , \ 31 _queue[it_dump]._front_end_id , \ 32 _queue[it_dump]._ooo_engine_id , \ 33 _queue[it_dump]._rob_id , \ 34 _queue[it_dump]._type , \ 35 _queue[it_dump]._operation , \ 36 _queue[it_dump]._store_queue_ptr_write, \ 37 _queue[it_dump]._load_queue_ptr_write , \ 38 _queue[it_dump]._has_immediat , \ 39 _queue[it_dump]._immediat , \ 40 _queue[it_dump]._num_reg_ra , \ 41 _queue[it_dump]._data_ra_val , \ 42 _queue[it_dump]._data_ra , \ 43 _queue[it_dump]._num_reg_rb , \ 44 _queue[it_dump]._data_rb_val , \ 45 _queue[it_dump]._data_rb , \ 46 _queue[it_dump]._num_reg_rc , \ 47 _queue[it_dump]._data_rc_val , \ 48 _queue[it_dump]._data_rc , \ 49 _queue[it_dump]._write_rd , \ 50 _queue[it_dump]._num_reg_rd , \ 51 _queue[it_dump]._write_re , \ 52 _queue[it_dump]._num_reg_re , \ 53 toString(_queue[it_dump]._type).c_str()); \ 53 54 } while (0) 54 55 #else
Note: See TracChangeset
for help on using the changeset viewer.