Changeset 82 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src
- Timestamp:
- May 1, 2008, 6:48:45 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Update_Prediction_Table/SelfTest/src/test.cpp
r81 r82 71 71 ALLOC1_SC_SIGNAL( in_DECOD_RAS_ADDRESS ," in_DECOD_RAS_ADDRESS ",Taddress_t ,_param->_nb_inst_decod); 72 72 ALLOC1_SC_SIGNAL( in_DECOD_RAS_INDEX ," in_DECOD_RAS_INDEX ",Tptr_t ,_param->_nb_inst_decod); 73 ALLOC1_SC_SIGNAL( in_DECOD_MISS_PREDICTION ," in_DECOD_MISS_PREDICTION ",Tcontrol_t ,_param->_nb_inst_decod); 73 ALLOC1_SC_SIGNAL( in_DECOD_MISS_IFETCH ," in_DECOD_MISS_IFETCH ",Tcontrol_t ,_param->_nb_inst_decod); 74 ALLOC1_SC_SIGNAL( in_DECOD_MISS_DECOD ," in_DECOD_MISS_DECOD ",Tcontrol_t ,_param->_nb_inst_decod); 74 75 ALLOC1_SC_SIGNAL( in_DECOD_UPDATE_PREDICTION_ID ," in_DECOD_UPDATE_PREDICTION_ID ",Tprediction_ptr_t ,_param->_nb_inst_decod); 75 76 //ALLOC1_SC_SIGNAL(out_DECOD_DEPTH ,"out_DECOD_DEPTH ",Tdepth_t ,_param->_nb_inst_decod); 77 76 78 ALLOC1_SC_SIGNAL( in_BRANCH_COMPLETE_VAL ," in_BRANCH_COMPLETE_VAL ",Tcontrol_t ,_param->_nb_inst_branch_complete); 77 79 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_ACK ,"out_BRANCH_COMPLETE_ACK ",Tcontrol_t ,_param->_nb_inst_branch_complete); … … 84 86 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_SRC ,"out_BRANCH_COMPLETE_ADDRESS_SRC ",Taddress_t ,_param->_nb_inst_branch_complete); 85 87 ALLOC1_SC_SIGNAL(out_BRANCH_COMPLETE_ADDRESS_DEST ,"out_BRANCH_COMPLETE_ADDRESS_DEST ",Taddress_t ,_param->_nb_inst_branch_complete); 88 89 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_VAL ,"out_BRANCH_EVENT_VAL ",Tcontrol_t ,_param->_nb_context); 90 ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_ACK ," in_BRANCH_EVENT_ACK ",Tcontrol_t ,_param->_nb_context); 91 // ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_CONTEXT_ID ," in_BRANCH_EVENT_CONTEXT_ID ",Tcontext_t ,_param->_nb_context); 92 // ALLOC1_SC_SIGNAL( in_BRANCH_EVENT_DEPTH ," in_BRANCH_EVENT_DEPTH ",Tdepth_t ,_param->_nb_context); 93 // ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_MISS_PREDICTION,"out_BRANCH_EVENT_MISS_PREDICTION",Tcontrol_t ,_param->_nb_context); 94 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_SRC ,"out_BRANCH_EVENT_ADDRESS_SRC ",Taddress_t ,_param->_nb_context); 95 ALLOC1_SC_SIGNAL(out_BRANCH_EVENT_ADDRESS_DEST ,"out_BRANCH_EVENT_ADDRESS_DEST ",Taddress_t ,_param->_nb_context); 96 86 97 ALLOC1_SC_SIGNAL(out_UPDATE_VAL ,"out_UPDATE_VAL ",Tcontrol_t ,_param->_nb_inst_update); 87 98 ALLOC1_SC_SIGNAL( in_UPDATE_ACK ," in_UPDATE_ACK ",Tcontrol_t ,_param->_nb_inst_update); … … 96 107 ALLOC1_SC_SIGNAL(out_UPDATE_DIR_HISTORY ,"out_UPDATE_DIR_HISTORY ",Thistory_t ,_param->_nb_inst_update); 97 108 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_VAL ,"out_UPDATE_RAS_VAL ",Tcontrol_t ,_param->_nb_inst_update); 109 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_PUSH ,"out_UPDATE_RAS_PUSH ",Tcontrol_t ,_param->_nb_inst_update); 98 110 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_ADDRESS ,"out_UPDATE_RAS_ADDRESS ",Taddress_t ,_param->_nb_inst_update); 99 111 ALLOC1_SC_SIGNAL(out_UPDATE_RAS_INDEX ,"out_UPDATE_RAS_INDEX ",Tptr_t ,_param->_nb_inst_update); … … 136 148 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_RAS_ADDRESS ,_param->_nb_inst_decod); 137 149 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_RAS_INDEX ,_param->_nb_inst_decod); 138 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_MISS_PREDICTION ,_param->_nb_inst_decod); 139 if (_param->_have_port_depth) 150 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_MISS_IFETCH ,_param->_nb_inst_decod); 151 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_MISS_DECOD ,_param->_nb_inst_decod); 152 if (_param->_have_port_max_depth) 140 153 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_DECOD_UPDATE_PREDICTION_ID ,_param->_nb_inst_decod); 141 154 //if (_param->_have_port_depth) … … 145 158 if (_param->_have_port_context_id) 146 159 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_CONTEXT_ID ,_param->_nb_inst_branch_complete); 147 if (_param->_have_port_ depth)160 if (_param->_have_port_max_depth) 148 161 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_DEPTH ,_param->_nb_inst_branch_complete); 149 162 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_COMPLETE_ADDRESS ,_param->_nb_inst_branch_complete); … … 153 166 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_ADDRESS_SRC ,_param->_nb_inst_branch_complete); 154 167 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_COMPLETE_ADDRESS_DEST ,_param->_nb_inst_branch_complete); 168 169 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_VAL ,_param->_nb_context); 170 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ACK ,_param->_nb_context); 171 // if (_param->_have_port_context_id) 172 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_CONTEXT_ID ,_param->_nb_context); 173 // if (_param->_have_port_max_depth) 174 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_DEPTH ,_param->_nb_context); 175 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_BRANCH_EVENT_ADDRESS ,_param->_nb_context); 176 // INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_MISS_PREDICTION,_param->_nb_context); 177 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_SRC ,_param->_nb_context); 178 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_BRANCH_EVENT_ADDRESS_DEST ,_param->_nb_context); 179 155 180 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_VAL ,_param->_nb_inst_update); 156 181 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table, in_UPDATE_ACK ,_param->_nb_inst_update); … … 167 192 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_DIR_HISTORY ,_param->_nb_inst_update); 168 193 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_VAL ,_param->_nb_inst_update); 194 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_PUSH ,_param->_nb_inst_update); 169 195 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_ADDRESS ,_param->_nb_inst_update); 170 196 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_INDEX ,_param->_nb_inst_update); 171 197 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_UPDATE_RAS_PREDICTION_IFETCH ,_param->_nb_inst_update); 172 if (_param->_have_port_depth) 173 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_DEPTH_NB_BRANCH ,_param->_nb_context); 174 if (_param->_have_port_depth) 175 INSTANCE1_SC_SIGNAL(_Update_Prediction_Table,out_DEPTH_TAIL ,_param->_nb_context); 198 for (uint32_t i=0; i<_param->_nb_context; i++) 199 { 200 if (_param->_have_port_depth[i]) 201 { 202 INSTANCE_SC_SIGNAL(_Update_Prediction_Table,out_DEPTH_TAIL [i]); 203 } 204 INSTANCE_SC_SIGNAL(_Update_Prediction_Table,out_DEPTH_NB_BRANCH [i]); 205 } 176 206 177 207 msg(_("<%s> : Start Simulation ............\n"),name.c_str()); … … 202 232 SC_START(5); 203 233 in_NRESET->write(1); 234 235 for (uint32_t i=0; i<_param->_nb_context; i++) 236 { 237 PORT_WRITE(in_BRANCH_EVENT_ACK [i],1); 238 } 204 239 205 240 LABEL("Loop of Test"); … … 236 271 in_PREDICT_RAS_INDEX [port]->write((0x12345678+i)%_param->_size_ras_index[context]); 237 272 238 if (_param->_have_port_depth )273 if (_param->_have_port_depth[context]) 239 274 { 240 275 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 276 } 241 277 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), i); 242 }278 243 279 SC_START(0); 244 280 … … 256 292 in_PREDICT_VAL [port]->write(0); 257 293 258 if (_param->_have_port_depth )294 if (_param->_have_port_depth[context]) 259 295 { 260 296 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 297 } 261 298 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), i+1); 262 } 299 263 300 } 264 301 } … … 283 320 in_DECOD_RAS_ADDRESS [port]->write(0xdeaddead+i); 284 321 in_DECOD_RAS_INDEX [port]->write((0x12345678+i)%_param->_size_ras_index[context]); 285 in_DECOD_MISS_PREDICTION [port]->write(false); 322 in_DECOD_MISS_IFETCH [port]->write(false); 323 in_DECOD_MISS_DECOD [port]->write(false); 286 324 in_DECOD_UPDATE_PREDICTION_ID [port]->write(i); 287 325 288 if (_param->_have_port_depth )326 if (_param->_have_port_depth[context]) 289 327 { 290 328 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 329 } 291 330 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 292 }293 331 294 332 SC_START(0); … … 307 345 in_DECOD_VAL [port]->write(0); 308 346 309 if (_param->_have_port_depth )347 if (_param->_have_port_depth[context]) 310 348 { 311 349 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 350 } 312 351 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 313 }314 352 } 315 353 } … … 331 369 in_BRANCH_COMPLETE_FLAG [port]->write(1); 332 370 333 if (_param->_have_port_depth )371 if (_param->_have_port_depth[context]) 334 372 { 335 373 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 374 } 336 375 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 337 }338 376 339 377 SC_START(0); … … 357 395 in_BRANCH_COMPLETE_VAL [port]->write(0); 358 396 359 if (_param->_have_port_depth )397 if (_param->_have_port_depth[context]) 360 398 { 361 399 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 400 } 362 401 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 363 }364 402 } 365 403 } … … 396 434 TEST(Thistory_t ,out_UPDATE_DIR_HISTORY [port]->read(), i); 397 435 TEST(Tcontrol_t ,out_UPDATE_RAS_VAL [port]->read(), 0); 436 TEST(Tcontrol_t ,out_UPDATE_RAS_PUSH [port]->read(), 0); 398 437 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(), 0xdeaddead+i); 399 438 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(), (0x12345678+i)%_param->_size_ras_index[context]); … … 411 450 412 451 // wait the garbage collector 413 if (_param->_have_port_depth) 414 while ((out_DEPTH_TAIL [context]->read() != 0) and 415 (out_DEPTH_NB_BRANCH[context]->read() != 0)) 416 { 417 LABEL("DEPTH [%d] nb_branch : %d - tail : %d",context,out_DEPTH_NB_BRANCH[context]->read(), out_DEPTH_TAIL [context]->read()); 418 SC_START(1); 419 } 452 while ((not (_param->_have_port_depth[context]) or (out_DEPTH_TAIL [context]->read() != 0)) and 453 (out_DEPTH_NB_BRANCH[context]->read() != 0)) 454 { 455 LABEL("DEPTH [%d] nb_branch : %d - tail : %d",context,out_DEPTH_NB_BRANCH[context]->read(), out_DEPTH_TAIL [context]->read()); 456 SC_START(1); 457 } 420 458 } 421 459 } … … 448 486 in_PREDICT_RAS_INDEX [port]->write((0x12345678+i)%_param->_size_ras_index[context]); 449 487 450 if (_param->_have_port_depth )488 if (_param->_have_port_depth[context]) 451 489 { 452 490 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 491 } 453 492 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), i); 454 } 493 455 494 SC_START(0); 456 495 … … 468 507 in_PREDICT_VAL [port]->write(0); 469 508 470 if (_param->_have_port_depth )509 if (_param->_have_port_depth[context]) 471 510 { 472 511 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 512 } 473 513 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), i+1); 474 }475 514 } 476 515 } … … 495 534 in_DECOD_RAS_ADDRESS [port]->write(0xdeaddead+i); 496 535 in_DECOD_RAS_INDEX [port]->write((0x12345678+i)%_param->_size_ras_index[context]); 497 in_DECOD_MISS_PREDICTION [port]->write(false); 536 in_DECOD_MISS_IFETCH [port]->write(false); 537 in_DECOD_MISS_DECOD [port]->write(false); 498 538 in_DECOD_UPDATE_PREDICTION_ID [port]->write(i); 499 539 500 if (_param->_have_port_depth )540 if (_param->_have_port_depth[context]) 501 541 { 502 542 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 543 } 503 544 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 504 }505 545 506 546 SC_START(0); … … 519 559 in_DECOD_VAL [port]->write(0); 520 560 521 if (_param->_have_port_depth )561 if (_param->_have_port_depth[context]) 522 562 { 523 563 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 564 } 524 565 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 525 }526 566 } 527 567 } … … 543 583 in_BRANCH_COMPLETE_FLAG [port]->write(0); 544 584 545 if (_param->_have_port_depth )585 if (_param->_have_port_depth[context]) 546 586 { 547 587 TEST(Tdepth_t,out_DEPTH_TAIL [context]->read(), 0); 588 } 548 589 TEST(Tdepth_t,out_DEPTH_NB_BRANCH[context]->read(), _param->_size_queue[context]); 549 }550 590 551 591 SC_START(0); … … 604 644 TEST(Thistory_t ,out_UPDATE_DIR_HISTORY [port]->read(), i); 605 645 TEST(Tcontrol_t ,out_UPDATE_RAS_VAL [port]->read(), 0); 646 TEST(Tcontrol_t ,out_UPDATE_RAS_PUSH [port]->read(), 0); 606 647 TEST(Taddress_t ,out_UPDATE_RAS_ADDRESS [port]->read(), 0xdeaddead+i); 607 648 TEST(Tptr_t ,out_UPDATE_RAS_INDEX [port]->read(), (0x12345678+i)%_param->_size_ras_index[context]); … … 619 660 620 661 // wait the garbage collector 621 if (_param->_have_port_depth) 622 while ((out_DEPTH_TAIL [context]->read() != 0) and 623 (out_DEPTH_NB_BRANCH[context]->read() != 0)) 662 while (((not (_param->_have_port_depth[context])) or (out_DEPTH_TAIL [context]->read() != 0)) and 663 (out_DEPTH_NB_BRANCH[context]->read() != 0)) 624 664 { 625 665 LABEL("DEPTH [%d] nb_branch : %d - tail : %d",context,out_DEPTH_NB_BRANCH[context]->read(), out_DEPTH_TAIL [context]->read()); … … 671 711 delete [] in_DECOD_RAS_ADDRESS ; 672 712 delete [] in_DECOD_RAS_INDEX ; 673 delete [] in_DECOD_MISS_PREDICTION ; 713 delete [] in_DECOD_MISS_IFETCH ; 714 delete [] in_DECOD_MISS_DECOD ; 674 715 delete [] in_DECOD_UPDATE_PREDICTION_ID ; 675 716 //delete [] out_DECOD_DEPTH ; … … 686 727 delete [] out_BRANCH_COMPLETE_ADDRESS_SRC ; 687 728 delete [] out_BRANCH_COMPLETE_ADDRESS_DEST ; 729 730 // ~~~~~[ Interface : "branch_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 731 delete [] out_BRANCH_EVENT_VAL ; 732 delete [] in_BRANCH_EVENT_ACK ; 733 // delete [] in_BRANCH_EVENT_CONTEXT_ID ; 734 // delete [] in_BRANCH_EVENT_DEPTH ; 735 // delete [] out_BRANCH_EVENT_MISS_PREDICTION; 736 delete [] out_BRANCH_EVENT_ADDRESS_SRC ; 737 delete [] out_BRANCH_EVENT_ADDRESS_DEST ; 688 738 689 739 // ~~~~~[ Interface : "update" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ … … 700 750 delete [] out_UPDATE_DIR_HISTORY ; 701 751 delete [] out_UPDATE_RAS_VAL ; 752 delete [] out_UPDATE_RAS_PUSH ; 702 753 delete [] out_UPDATE_RAS_ADDRESS ; 703 754 delete [] out_UPDATE_RAS_INDEX ;
Note: See TracChangeset
for help on using the changeset viewer.