Changeset 68 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Read_unit/Read_unit/Read_queue/SelfTest/src/test.cpp
- Timestamp:
- Dec 8, 2007, 5:12:36 PM (17 years ago)
- File:
-
- 1 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
r66 r68 214 214 (*(_Read_queue->in_NRESET)) (*(NRESET)); 215 215 216 217 216 (*(_Read_queue-> in_READ_QUEUE_IN_VAL )) (*(READ_QUEUE_IN_VAL )); 218 217 (*(_Read_queue->out_READ_QUEUE_IN_ACK )) (*(READ_QUEUE_IN_ACK )); 219 (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID )) (*(READ_QUEUE_IN_CONTEXT_ID )); 220 (*(_Read_queue-> in_READ_QUEUE_IN_FRONT_END_ID )) (*(READ_QUEUE_IN_FRONT_END_ID )); 221 (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID )) (*(READ_QUEUE_IN_OOO_ENGINE_ID )); 222 (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID )) (*(READ_QUEUE_IN_ROB_ID )); 218 if(_param->_have_port_context_id ) 219 (*(_Read_queue-> in_READ_QUEUE_IN_CONTEXT_ID )) (*(READ_QUEUE_IN_CONTEXT_ID )); 220 if(_param->_have_port_front_end_id ) 221 (*(_Read_queue-> in_READ_QUEUE_IN_FRONT_END_ID )) (*(READ_QUEUE_IN_FRONT_END_ID )); 222 if(_param->_have_port_ooo_engine_id) 223 (*(_Read_queue-> in_READ_QUEUE_IN_OOO_ENGINE_ID )) (*(READ_QUEUE_IN_OOO_ENGINE_ID )); 224 if(_param->_have_port_rob_id ) 225 (*(_Read_queue-> in_READ_QUEUE_IN_ROB_ID )) (*(READ_QUEUE_IN_ROB_ID )); 223 226 (*(_Read_queue-> in_READ_QUEUE_IN_OPERATION )) (*(READ_QUEUE_IN_OPERATION )); 224 227 (*(_Read_queue-> in_READ_QUEUE_IN_TYPE )) (*(READ_QUEUE_IN_TYPE )); … … 238 241 (*(_Read_queue->out_READ_QUEUE_OUT_VAL )) (*(READ_QUEUE_OUT_VAL )); 239 242 (*(_Read_queue-> in_READ_QUEUE_OUT_ACK )) (*(READ_QUEUE_OUT_ACK )); 240 (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID )) (*(READ_QUEUE_OUT_CONTEXT_ID )); 241 (*(_Read_queue->out_READ_QUEUE_OUT_FRONT_END_ID )) (*(READ_QUEUE_OUT_FRONT_END_ID )); 242 (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 243 (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID )) (*(READ_QUEUE_OUT_ROB_ID )); 243 if(_param->_have_port_context_id ) 244 (*(_Read_queue->out_READ_QUEUE_OUT_CONTEXT_ID )) (*(READ_QUEUE_OUT_CONTEXT_ID )); 245 if(_param->_have_port_front_end_id ) 246 (*(_Read_queue->out_READ_QUEUE_OUT_FRONT_END_ID )) (*(READ_QUEUE_OUT_FRONT_END_ID )); 247 if(_param->_have_port_ooo_engine_id) 248 (*(_Read_queue->out_READ_QUEUE_OUT_OOO_ENGINE_ID )) (*(READ_QUEUE_OUT_OOO_ENGINE_ID )); 249 if(_param->_have_port_rob_id ) 250 (*(_Read_queue->out_READ_QUEUE_OUT_ROB_ID )) (*(READ_QUEUE_OUT_ROB_ID )); 244 251 (*(_Read_queue->out_READ_QUEUE_OUT_OPERATION )) (*(READ_QUEUE_OUT_OPERATION )); 245 252 (*(_Read_queue->out_READ_QUEUE_OUT_TYPE )) (*(READ_QUEUE_OUT_TYPE )); … … 267 274 (*(_Read_queue->out_GPR_READ_VAL [i])) (*(GPR_READ_VAL [i])); 268 275 (*(_Read_queue-> in_GPR_READ_ACK [i])) (*(GPR_READ_ACK [i])); 269 (*(_Read_queue->out_GPR_READ_OOO_ENGINE_ID [i])) (*(GPR_READ_OOO_ENGINE_ID [i])); 276 if(_param->_have_port_ooo_engine_id) 277 (*(_Read_queue->out_GPR_READ_OOO_ENGINE_ID [i])) (*(GPR_READ_OOO_ENGINE_ID [i])); 270 278 (*(_Read_queue->out_GPR_READ_NUM_REG [i])) (*(GPR_READ_NUM_REG [i])); 271 279 (*(_Read_queue-> in_GPR_READ_DATA [i])) (*(GPR_READ_DATA [i])); … … 277 285 (*(_Read_queue->out_SPR_READ_VAL [i])) (*(SPR_READ_VAL [i])); 278 286 (*(_Read_queue-> in_SPR_READ_ACK [i])) (*(SPR_READ_ACK [i])); 279 (*(_Read_queue->out_SPR_READ_OOO_ENGINE_ID [i])) (*(SPR_READ_OOO_ENGINE_ID [i])); 287 if(_param->_have_port_ooo_engine_id) 288 (*(_Read_queue->out_SPR_READ_OOO_ENGINE_ID [i])) (*(SPR_READ_OOO_ENGINE_ID [i])); 280 289 (*(_Read_queue->out_SPR_READ_NUM_REG [i])) (*(SPR_READ_NUM_REG [i])); 281 290 (*(_Read_queue-> in_SPR_READ_DATA [i])) (*(SPR_READ_DATA [i])); … … 286 295 { 287 296 (*(_Read_queue-> in_GPR_WRITE_VAL [i])) (*(GPR_WRITE_VAL [i])); 288 (*(_Read_queue-> in_GPR_WRITE_OOO_ENGINE_ID [i])) (*(GPR_WRITE_OOO_ENGINE_ID [i])); 297 if(_param->_have_port_ooo_engine_id) 298 (*(_Read_queue-> in_GPR_WRITE_OOO_ENGINE_ID [i])) (*(GPR_WRITE_OOO_ENGINE_ID [i])); 289 299 (*(_Read_queue-> in_GPR_WRITE_NUM_REG [i])) (*(GPR_WRITE_NUM_REG [i])); 290 300 (*(_Read_queue-> in_GPR_WRITE_DATA [i])) (*(GPR_WRITE_DATA [i])); … … 294 304 { 295 305 (*(_Read_queue-> in_SPR_WRITE_VAL [i])) (*(SPR_WRITE_VAL [i])); 296 (*(_Read_queue-> in_SPR_WRITE_OOO_ENGINE_ID [i])) (*(SPR_WRITE_OOO_ENGINE_ID [i])); 306 if(_param->_have_port_ooo_engine_id) 307 (*(_Read_queue-> in_SPR_WRITE_OOO_ENGINE_ID [i])) (*(SPR_WRITE_OOO_ENGINE_ID [i])); 297 308 (*(_Read_queue-> in_SPR_WRITE_NUM_REG [i])) (*(SPR_WRITE_NUM_REG [i])); 298 309 (*(_Read_queue-> in_SPR_WRITE_DATA [i])) (*(SPR_WRITE_DATA [i])); … … 308 319 // Initialisation 309 320 const uint32_t nb_request = _param->_nb_packet; 310 //const uint32_t seed = 0;321 // const uint32_t seed = 0; 311 322 const uint32_t seed = static_cast<uint32_t>(time(NULL)); 312 323 srand(seed); … … 342 353 { 343 354 LABEL("Iteration "+toString(iteration)); 344 int32_t percent_transaction_queue_in = (rand()%50)+25; 345 int32_t percent_transaction_queue_out = (rand()%50)+25; 346 int32_t percent_registerfile_valid = (rand()%50)+25; 347 int32_t percent_transaction_registerfile = (rand()%74)+25; 348 int32_t percent_transaction_bypass = (rand()%50)+25; 349 355 int32_t percent_transaction_queue_in = (rand()%45)+30; 356 int32_t percent_transaction_queue_out = (rand()%45)+30; 357 int32_t percent_registerfile_valid = (rand()%45)+30; 358 int32_t percent_transaction_registerfile = (rand()%45)+30; 359 int32_t percent_transaction_bypass = (rand()%45)+30; 360 int32_t percent_must_read_reg = (rand()%45)+30; 361 350 362 LABEL("Initialisation"); 351 363 … … 353 365 { 354 366 _ooo_engine_id [i] = rand()% _param->_nb_ooo_engine ; 355 _read_ra [i] = rand()% 2;367 _read_ra [i] = (rand()%100)<percent_must_read_reg; 356 368 _num_reg_ra [i] = rand()% _param->_nb_general_register ; 357 _read_rb [i] = rand()% 2;369 _read_rb [i] = (rand()%100)<percent_must_read_reg; 358 370 _num_reg_rb [i] = rand()% _param->_nb_general_register ; 359 _read_rc [i] = rand()% 2;371 _read_rc [i] = (rand()%100)<percent_must_read_reg; 360 372 _num_reg_rc [i] = rand()% _param->_nb_special_register ; 361 373 } … … 386 398 { 387 399 READ_QUEUE_IN_VAL ->write(1); 388 READ_QUEUE_IN_OOO_ENGINE_ID ->write(_ooo_engine_id [request_in]); 389 READ_QUEUE_IN_CONTEXT_ID ->write((2*_ooo_engine_id [request_in])%_param->_nb_context ); 390 READ_QUEUE_IN_FRONT_END_ID ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end); 391 READ_QUEUE_IN_ROB_ID ->write(request_in); 400 if(_param->_have_port_ooo_engine_id) 401 READ_QUEUE_IN_OOO_ENGINE_ID ->write(_ooo_engine_id [request_in]); 402 if(_param->_have_port_context_id ) 403 READ_QUEUE_IN_CONTEXT_ID ->write((2*_ooo_engine_id [request_in])%_param->_nb_context ); 404 if(_param->_have_port_front_end_id ) 405 READ_QUEUE_IN_FRONT_END_ID ->write((3*_ooo_engine_id [request_in])%_param->_nb_front_end); 406 if(_param->_have_port_rob_id ) 407 READ_QUEUE_IN_ROB_ID ->write(request_in); 392 408 READ_QUEUE_IN_OPERATION ->write(0); 393 409 READ_QUEUE_IN_TYPE ->write(0); … … 419 435 { 420 436 Tgeneral_address_t num_reg = GPR_READ_NUM_REG [i]->read(); 421 Tcontext_t context = GPR_READ_OOO_ENGINE_ID [i]->read(); 422 423 GPR_READ_DATA [i]->write(_gpr [num_reg][context]); 424 GPR_READ_DATA_VAL [i]->write(_gpr_val[num_reg][context]); 437 Tcontext_t ooo_engine; 438 if(_param->_have_port_ooo_engine_id) 439 ooo_engine = GPR_READ_OOO_ENGINE_ID [i]->read(); 440 else 441 ooo_engine = 0; 442 443 GPR_READ_DATA [i]->write(_gpr [num_reg][ooo_engine]); 444 GPR_READ_DATA_VAL [i]->write(_gpr_val[num_reg][ooo_engine]); 425 445 } 426 446 } … … 432 452 { 433 453 Tspecial_address_t num_reg = SPR_READ_NUM_REG [i]->read(); 434 Tcontext_t context = SPR_READ_OOO_ENGINE_ID [i]->read(); 435 436 SPR_READ_DATA [i]->write(_spr [num_reg][context]); 437 SPR_READ_DATA_VAL [i]->write(_spr_val[num_reg][context]); 454 Tcontext_t ooo_engine; 455 if(_param->_have_port_ooo_engine_id) 456 ooo_engine = SPR_READ_OOO_ENGINE_ID [i]->read(); 457 else 458 ooo_engine = 0; 459 460 SPR_READ_DATA [i]->write(_spr [num_reg][ooo_engine]); 461 SPR_READ_DATA_VAL [i]->write(_spr_val[num_reg][ooo_engine]); 438 462 } 439 463 } … … 448 472 449 473 GPR_WRITE_VAL [i]->write(val); 450 GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 474 if(_param->_have_port_ooo_engine_id) 475 GPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 451 476 GPR_WRITE_NUM_REG [i]->write(num_reg); 452 477 GPR_WRITE_DATA [i]->write(data); … … 466 491 467 492 SPR_WRITE_VAL [i]->write(val); 468 SPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 493 if(_param->_have_port_ooo_engine_id) 494 SPR_WRITE_OOO_ENGINE_ID [i]->write(ooo_engine); 469 495 SPR_WRITE_NUM_REG [i]->write(num_reg); 470 496 SPR_WRITE_DATA [i]->write(data); … … 490 516 (READ_QUEUE_OUT_ACK->read() == 1)) 491 517 { 492 Tpacket_t rob_id = READ_QUEUE_OUT_ROB_ID->read(); 518 Tpacket_t rob_id; 519 if(_param->_have_port_rob_id ) 520 rob_id = READ_QUEUE_OUT_ROB_ID->read(); 521 else 522 rob_id = 0; 493 523 Tcontext_t ctxt = _ooo_engine_id [rob_id]; 494 524 LABEL("Accepted READ_QUEUE_OUT ["+toString(rob_id)+"]"); … … 498 528 request_out ++; 499 529 500 TEST(Tcontext_t ,READ_QUEUE_OUT_OOO_ENGINE_ID ->read(),ctxt); 501 TEST(Tcontext_t ,READ_QUEUE_OUT_CONTEXT_ID ->read(),(2*ctxt)%_param->_nb_context ); 502 TEST(Tcontext_t ,READ_QUEUE_OUT_FRONT_END_ID ->read(),(3*ctxt)%_param->_nb_front_end); 530 if(_param->_have_port_ooo_engine_id) 531 TEST(Tcontext_t ,READ_QUEUE_OUT_OOO_ENGINE_ID ->read(),ctxt); 532 if(_param->_have_port_context_id ) 533 TEST(Tcontext_t ,READ_QUEUE_OUT_CONTEXT_ID ->read(),(2*ctxt)%_param->_nb_context ); 534 if(_param->_have_port_front_end_id ) 535 TEST(Tcontext_t ,READ_QUEUE_OUT_FRONT_END_ID ->read(),(3*ctxt)%_param->_nb_front_end); 503 536 504 537 TEST(Tcontrol_t ,READ_QUEUE_OUT_READ_RA ->read(),_read_ra [rob_id]); … … 533 566 cout << "<" << name << "> ............ Stop Simulation" << endl; 534 567 535 // delete CLOCK; 536 // delete NRESET; 537 538 // delete READ_QUEUE_IN_VAL ; 539 // delete READ_QUEUE_IN_ACK ; 540 // delete READ_QUEUE_IN_CONTEXT_ID ; 541 // delete READ_QUEUE_IN_FRONT_END_ID; 542 // delete READ_QUEUE_IN_OOO_ENGINE_ID; 543 // delete READ_QUEUE_IN_ROB_ID ; 544 // delete READ_QUEUE_IN_OPERATION ; 545 // delete READ_QUEUE_IN_TYPE ; 546 // delete READ_QUEUE_IN_HAS_IMMEDIAT ; 547 // delete READ_QUEUE_IN_IMMEDIAT ; 548 // delete READ_QUEUE_IN_READ_RA ; 549 // delete READ_QUEUE_IN_NUM_REG_RA ; 550 // delete READ_QUEUE_IN_READ_RB ; 551 // delete READ_QUEUE_IN_NUM_REG_RB ; 552 // delete READ_QUEUE_IN_READ_RC ; 553 // delete READ_QUEUE_IN_NUM_REG_RC ; 554 // delete READ_QUEUE_IN_WRITE_RD ; 555 // delete READ_QUEUE_IN_NUM_REG_RD ; 556 // delete READ_QUEUE_IN_WRITE_RE ; 557 // delete READ_QUEUE_IN_NUM_REG_RE ; 558 559 // delete READ_QUEUE_OUT_VAL ; 560 // delete READ_QUEUE_OUT_ACK ; 561 // delete READ_QUEUE_OUT_CONTEXT_ID ; 562 // delete READ_QUEUE_OUT_FRONT_END_ID; 563 // delete READ_QUEUE_OUT_OOO_ENGINE_ID; 564 // delete READ_QUEUE_OUT_ROB_ID ; 565 // delete READ_QUEUE_OUT_OPERATION ; 566 // delete READ_QUEUE_OUT_TYPE ; 567 // delete READ_QUEUE_OUT_HAS_IMMEDIAT; 568 // delete READ_QUEUE_OUT_IMMEDIAT ; 569 // delete READ_QUEUE_OUT_READ_RA ; 570 // delete READ_QUEUE_OUT_NUM_REG_RA ; 571 // delete READ_QUEUE_OUT_DATA_RA_VAL ; 572 // delete READ_QUEUE_OUT_DATA_RA ; 573 // delete READ_QUEUE_OUT_READ_RB ; 574 // delete READ_QUEUE_OUT_NUM_REG_RB ; 575 // delete READ_QUEUE_OUT_DATA_RB_VAL ; 576 // delete READ_QUEUE_OUT_DATA_RB ; 577 // delete READ_QUEUE_OUT_READ_RC ; 578 // delete READ_QUEUE_OUT_NUM_REG_RC ; 579 // delete READ_QUEUE_OUT_DATA_RC_VAL ; 580 // delete READ_QUEUE_OUT_DATA_RC ; 581 // delete READ_QUEUE_OUT_WRITE_RD ; 582 // delete READ_QUEUE_OUT_NUM_REG_RD ; 583 // delete READ_QUEUE_OUT_WRITE_RE ; 584 // delete READ_QUEUE_OUT_NUM_REG_RE ; 585 586 // delete [] GPR_READ_VAL ; 587 // delete [] GPR_READ_ACK ; 588 // delete [] GPR_READ_NUM_REG ; 589 // delete [] GPR_READ_DATA ; 590 // delete [] GPR_READ_DATA_VAL; 591 // delete [] GPR_READ_OOO_ENGINE_ID ; 592 593 // delete [] SPR_READ_VAL ; 594 // delete [] SPR_READ_ACK ; 595 // delete [] SPR_READ_NUM_REG ; 596 // delete [] SPR_READ_DATA ; 597 // delete [] SPR_READ_DATA_VAL; 598 // delete [] SPR_READ_OOO_ENGINE_ID ; 599 600 // delete [] GPR_WRITE_VAL ; 601 // delete [] GPR_WRITE_OOO_ENGINE_ID ; 602 // delete [] GPR_WRITE_NUM_REG ; 603 // delete [] GPR_WRITE_DATA ; 604 605 // delete [] SPR_WRITE_VAL ; 606 // delete [] SPR_WRITE_OOO_ENGINE_ID ; 607 // delete [] SPR_WRITE_NUM_REG ; 608 // delete [] SPR_WRITE_DATA ; 568 delete CLOCK; 569 delete NRESET; 570 571 delete READ_QUEUE_IN_VAL ; 572 delete READ_QUEUE_IN_ACK ; 573 if(_param->_have_port_context_id ) 574 delete READ_QUEUE_IN_CONTEXT_ID ; 575 if(_param->_have_port_front_end_id ) 576 delete READ_QUEUE_IN_FRONT_END_ID; 577 if(_param->_have_port_ooo_engine_id ) 578 delete READ_QUEUE_IN_OOO_ENGINE_ID; 579 if(_param->_have_port_rob_id ) 580 delete READ_QUEUE_IN_ROB_ID ; 581 delete READ_QUEUE_IN_OPERATION ; 582 delete READ_QUEUE_IN_TYPE ; 583 delete READ_QUEUE_IN_HAS_IMMEDIAT ; 584 delete READ_QUEUE_IN_IMMEDIAT ; 585 delete READ_QUEUE_IN_READ_RA ; 586 delete READ_QUEUE_IN_NUM_REG_RA ; 587 delete READ_QUEUE_IN_READ_RB ; 588 delete READ_QUEUE_IN_NUM_REG_RB ; 589 delete READ_QUEUE_IN_READ_RC ; 590 delete READ_QUEUE_IN_NUM_REG_RC ; 591 delete READ_QUEUE_IN_WRITE_RD ; 592 delete READ_QUEUE_IN_NUM_REG_RD ; 593 delete READ_QUEUE_IN_WRITE_RE ; 594 delete READ_QUEUE_IN_NUM_REG_RE ; 595 596 delete READ_QUEUE_OUT_VAL ; 597 delete READ_QUEUE_OUT_ACK ; 598 if(_param->_have_port_context_id ) 599 delete READ_QUEUE_OUT_CONTEXT_ID ; 600 if(_param->_have_port_front_end_id ) 601 delete READ_QUEUE_OUT_FRONT_END_ID; 602 if(_param->_have_port_ooo_engine_id ) 603 delete READ_QUEUE_OUT_OOO_ENGINE_ID; 604 if(_param->_have_port_rob_id ) 605 delete READ_QUEUE_OUT_ROB_ID ; 606 delete READ_QUEUE_OUT_OPERATION ; 607 delete READ_QUEUE_OUT_TYPE ; 608 delete READ_QUEUE_OUT_HAS_IMMEDIAT; 609 delete READ_QUEUE_OUT_IMMEDIAT ; 610 delete READ_QUEUE_OUT_READ_RA ; 611 delete READ_QUEUE_OUT_NUM_REG_RA ; 612 delete READ_QUEUE_OUT_DATA_RA_VAL ; 613 delete READ_QUEUE_OUT_DATA_RA ; 614 delete READ_QUEUE_OUT_READ_RB ; 615 delete READ_QUEUE_OUT_NUM_REG_RB ; 616 delete READ_QUEUE_OUT_DATA_RB_VAL ; 617 delete READ_QUEUE_OUT_DATA_RB ; 618 delete READ_QUEUE_OUT_READ_RC ; 619 delete READ_QUEUE_OUT_NUM_REG_RC ; 620 delete READ_QUEUE_OUT_DATA_RC_VAL ; 621 delete READ_QUEUE_OUT_DATA_RC ; 622 delete READ_QUEUE_OUT_WRITE_RD ; 623 delete READ_QUEUE_OUT_NUM_REG_RD ; 624 delete READ_QUEUE_OUT_WRITE_RE ; 625 delete READ_QUEUE_OUT_NUM_REG_RE ; 626 627 delete [] GPR_READ_VAL ; 628 delete [] GPR_READ_ACK ; 629 delete [] GPR_READ_NUM_REG ; 630 delete [] GPR_READ_DATA ; 631 delete [] GPR_READ_DATA_VAL; 632 if(_param->_have_port_ooo_engine_id ) 633 delete [] GPR_READ_OOO_ENGINE_ID ; 634 635 delete [] SPR_READ_VAL ; 636 delete [] SPR_READ_ACK ; 637 delete [] SPR_READ_NUM_REG ; 638 delete [] SPR_READ_DATA ; 639 delete [] SPR_READ_DATA_VAL; 640 if(_param->_have_port_ooo_engine_id ) 641 delete [] SPR_READ_OOO_ENGINE_ID ; 642 643 delete [] GPR_WRITE_VAL ; 644 if(_param->_have_port_ooo_engine_id ) 645 delete [] GPR_WRITE_OOO_ENGINE_ID ; 646 delete [] GPR_WRITE_NUM_REG ; 647 delete [] GPR_WRITE_DATA ; 648 649 delete [] SPR_WRITE_VAL ; 650 if(_param->_have_port_ooo_engine_id ) 651 delete [] SPR_WRITE_OOO_ENGINE_ID ; 652 delete [] SPR_WRITE_NUM_REG ; 653 delete [] SPR_WRITE_DATA ; 609 654 #endif 610 655
Note: See TracChangeset
for help on using the changeset viewer.