Changeset 82 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Prediction_unit_Glue/src/Prediction_unit_Glue.cpp
- 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/Prediction_unit_Glue/src/Prediction_unit_Glue.cpp
r81 r82 92 92 << (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 93 93 } 94 for (uint32_t i=0; i<_param->_nb_inst_ predict; i++)94 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 95 95 { 96 96 sensitive << (*( in_PREDICT_BTB_ACK [i])) … … 110 110 << (*( in_PREDICT_UPT_ACK [i])); 111 111 } 112 for (uint32_t i=0; i<_param->_nb_context; i++) 113 { 114 sensitive << (*(in_DEPTH_UPT_NB_BRANCH [i])); 115 if (_param->_have_port_depth[i]) 116 sensitive << (*(in_DEPTH_UPT_TAIL [i])); 117 } 112 118 113 119 # ifdef SYSTEMCASS_SPECIFIC … … 115 121 for (uint32_t x=0; x<_param->_nb_context; x++) 116 122 { 123 if (_param->_have_port_depth[x]) 124 { 125 (*(out_DEPTH_TAIL [x])) (*( in_DEPTH_UPT_TAIL [x])); 126 } 127 (*(out_DEPTH_NB_BRANCH [x])) (*( in_DEPTH_UPT_NB_BRANCH [x])); 128 117 129 for (uint32_t i=0; i<_param->_nb_context; i++) 118 130 { … … 121 133 (*(out_PREDICT_ACK [x])) (*( in_PREDICT_PC_CURRENT [i])); 122 134 (*(out_PREDICT_ACK [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 123 } 124 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 135 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 136 { 137 (*(out_PREDICT_ACK [x])) (*( in_DEPTH_UPT_TAIL [i])); 138 } 139 (*(out_PREDICT_ACK [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 140 } 141 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 125 142 { 126 143 (*(out_PREDICT_ACK [x])) (*( in_PREDICT_BTB_ACK [i])); … … 147 164 (*(out_PREDICT_PC_NEXT [x])) (*( in_PREDICT_PC_CURRENT [i])); 148 165 (*(out_PREDICT_PC_NEXT [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 149 } 150 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 166 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 167 { 168 (*(out_PREDICT_PC_NEXT [x])) (*( in_DEPTH_UPT_TAIL [i])); 169 } 170 (*(out_PREDICT_PC_NEXT [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 171 } 172 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 151 173 { 152 174 (*(out_PREDICT_PC_NEXT [x])) (*( in_PREDICT_BTB_ACK [i])); … … 173 195 (*(out_PREDICT_PC_NEXT_IS_DS_TAKE [x])) (*( in_PREDICT_PC_CURRENT [i])); 174 196 (*(out_PREDICT_PC_NEXT_IS_DS_TAKE [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 175 } 176 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 197 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 198 { 199 (*(out_PREDICT_PC_NEXT_IS_DS_TAKE [x])) (*( in_DEPTH_UPT_TAIL [i])); 200 } 201 (*(out_PREDICT_PC_NEXT_IS_DS_TAKE [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 202 } 203 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 177 204 { 178 205 (*(out_PREDICT_PC_NEXT_IS_DS_TAKE [x])) (*( in_PREDICT_BTB_ACK [i])); … … 201 228 (*(out_PREDICT_INST_IFETCH_PTR [x])) (*( in_PREDICT_PC_CURRENT [i])); 202 229 (*(out_PREDICT_INST_IFETCH_PTR [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 203 } 204 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 230 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 231 { 232 (*(out_PREDICT_INST_IFETCH_PTR [x])) (*( in_DEPTH_UPT_TAIL [i])); 233 } 234 (*(out_PREDICT_INST_IFETCH_PTR [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 235 } 236 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 205 237 { 206 238 (*(out_PREDICT_INST_IFETCH_PTR [x])) (*( in_PREDICT_BTB_ACK [i])); … … 228 260 (*(out_PREDICT_BRANCH_STATE [x]))(*( in_PREDICT_PC_CURRENT [i])); 229 261 (*(out_PREDICT_BRANCH_STATE [x]))(*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 230 } 231 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 262 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 263 { 264 (*(out_PREDICT_BRANCH_STATE [x]))(*( in_DEPTH_UPT_TAIL [i])); 265 } 266 (*(out_PREDICT_BRANCH_STATE [x]))(*( in_DEPTH_UPT_NB_BRANCH [i])); 267 } 268 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 232 269 { 233 270 (*(out_PREDICT_BRANCH_STATE [x])) (*( in_PREDICT_BTB_ACK [i])); … … 256 293 (*(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x])) (*( in_PREDICT_PC_CURRENT [i])); 257 294 (*(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 258 } 259 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 295 if (_param->_have_port_depth [i]) 296 { 297 (*(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x])) (*( in_DEPTH_UPT_TAIL [i])); 298 } 299 (*(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 300 } 301 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 260 302 { 261 303 (*(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID [x])) (*( in_PREDICT_BTB_ACK [i])); … … 285 327 (*(out_PREDICT_INSTRUCTION_ENABLE [x][y])) (*( in_PREDICT_PC_CURRENT [i])); 286 328 (*(out_PREDICT_INSTRUCTION_ENABLE [x][y])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 287 } 288 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 329 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 330 { 331 (*(out_PREDICT_INSTRUCTION_ENABLE [x][y])) (*( in_DEPTH_UPT_TAIL [i])); 332 } 333 (*(out_PREDICT_INSTRUCTION_ENABLE [x][y])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 334 } 335 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 289 336 { 290 337 (*(out_PREDICT_INSTRUCTION_ENABLE [x][y])) (*( in_PREDICT_BTB_ACK [i])); … … 307 354 } 308 355 309 for (uint32_t x=0; x<_param->_nb_inst_ predict; x++)356 for (uint32_t x=0; x<_param->_nb_inst_branch_predict; x++) 310 357 { 311 358 for (uint32_t i=0; i<_param->_nb_context; i++) … … 315 362 (*(out_PREDICT_BTB_VAL [x])) (*( in_PREDICT_PC_CURRENT [i])); 316 363 (*(out_PREDICT_BTB_VAL [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 317 } 318 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 364 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 365 { 366 (*(out_PREDICT_BTB_VAL [x])) (*( in_DEPTH_UPT_TAIL [i])); 367 } 368 (*(out_PREDICT_BTB_VAL [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 369 } 370 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 319 371 { 320 372 (*(out_PREDICT_BTB_VAL [x])) (*( in_PREDICT_BTB_ACK [i])); … … 343 395 (*(out_PREDICT_BTB_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT [i])); 344 396 (*(out_PREDICT_BTB_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 345 } 346 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 397 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 398 { 399 (*(out_PREDICT_BTB_CONTEXT_ID [x])) (*( in_DEPTH_UPT_TAIL [i])); 400 } 401 (*(out_PREDICT_BTB_CONTEXT_ID [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 402 } 403 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 347 404 { 348 405 (*(out_PREDICT_BTB_CONTEXT_ID [x])) (*( in_PREDICT_BTB_ACK [i])); … … 370 427 (*(out_PREDICT_BTB_ADDRESS [x])) (*( in_PREDICT_PC_CURRENT [i])); 371 428 (*(out_PREDICT_BTB_ADDRESS [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 372 } 373 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 429 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 430 { 431 (*(out_PREDICT_BTB_ADDRESS [x])) (*( in_DEPTH_UPT_TAIL [i])); 432 } 433 (*(out_PREDICT_BTB_ADDRESS [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 434 } 435 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 374 436 { 375 437 (*(out_PREDICT_BTB_ADDRESS [x])) (*( in_PREDICT_BTB_ACK [i])); … … 396 458 (*(out_PREDICT_DIR_VAL [x])) (*( in_PREDICT_PC_CURRENT [i])); 397 459 (*(out_PREDICT_DIR_VAL [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 398 } 399 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 460 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 461 { 462 (*(out_PREDICT_DIR_VAL [x])) (*( in_DEPTH_UPT_TAIL [i])); 463 } 464 (*(out_PREDICT_DIR_VAL [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 465 } 466 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 400 467 { 401 468 (*(out_PREDICT_DIR_VAL [x])) (*( in_PREDICT_BTB_ACK [i])); … … 422 489 (*(out_PREDICT_DIR_ADDRESS_SRC [x])) (*( in_PREDICT_PC_CURRENT [i])); 423 490 (*(out_PREDICT_DIR_ADDRESS_SRC [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 424 } 425 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 491 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 492 { 493 (*(out_PREDICT_DIR_ADDRESS_SRC [x])) (*( in_DEPTH_UPT_TAIL [i])); 494 } 495 (*(out_PREDICT_DIR_ADDRESS_SRC [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 496 } 497 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 426 498 { 427 499 (*(out_PREDICT_DIR_ADDRESS_SRC [x])) (*( in_PREDICT_BTB_ACK [i])); … … 448 520 (*(out_PREDICT_DIR_STATIC [x])) (*( in_PREDICT_PC_CURRENT [i])); 449 521 (*(out_PREDICT_DIR_STATIC [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 450 } 451 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 522 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 523 { 524 (*(out_PREDICT_DIR_STATIC [x])) (*( in_DEPTH_UPT_TAIL [i])); 525 } 526 (*(out_PREDICT_DIR_STATIC [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 527 } 528 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 452 529 { 453 530 (*(out_PREDICT_DIR_STATIC [x])) (*( in_PREDICT_BTB_ACK [i])); … … 474 551 // (*(out_PREDICT_DIR_LAST_TAKE [x])) (*( in_PREDICT_PC_CURRENT [i])); 475 552 // (*(out_PREDICT_DIR_LAST_TAKE [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 553 // if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 554 // { 555 // (*(out_PREDICT_DIR_LAST_TAKE [x])) (*( in_DEPTH_UPT_TAIL [i])); 556 // } 557 // (*(out_PREDICT_DIR_LAST_TAKE [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 476 558 // } 477 // for (uint32_t i=0; i<_param->_nb_inst_ predict; i++)559 // for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 478 560 // { 479 561 // (*(out_PREDICT_DIR_LAST_TAKE [x])) (*( in_PREDICT_BTB_ACK [i])); … … 500 582 (*(out_PREDICT_RAS_VAL [x])) (*( in_PREDICT_PC_CURRENT [i])); 501 583 (*(out_PREDICT_RAS_VAL [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 502 } 503 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 584 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 585 { 586 (*(out_PREDICT_RAS_VAL [x])) (*( in_DEPTH_UPT_TAIL [i])); 587 } 588 (*(out_PREDICT_RAS_VAL [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 589 } 590 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 504 591 { 505 592 (*(out_PREDICT_RAS_VAL [x])) (*( in_PREDICT_BTB_ACK [i])); … … 528 615 (*(out_PREDICT_RAS_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT [i])); 529 616 (*(out_PREDICT_RAS_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 530 } 531 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 617 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 618 { 619 (*(out_PREDICT_RAS_CONTEXT_ID [x])) (*( in_DEPTH_UPT_TAIL [i])); 620 } 621 (*(out_PREDICT_RAS_CONTEXT_ID [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 622 } 623 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 532 624 { 533 625 (*(out_PREDICT_RAS_CONTEXT_ID [x])) (*( in_PREDICT_BTB_ACK [i])); … … 555 647 (*(out_PREDICT_RAS_PUSH [x])) (*( in_PREDICT_PC_CURRENT [i])); 556 648 (*(out_PREDICT_RAS_PUSH [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 557 } 558 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 649 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 650 { 651 (*(out_PREDICT_RAS_PUSH [x])) (*( in_DEPTH_UPT_TAIL [i])); 652 } 653 (*(out_PREDICT_RAS_PUSH [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 654 } 655 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 559 656 { 560 657 (*(out_PREDICT_RAS_PUSH [x])) (*( in_PREDICT_BTB_ACK [i])); … … 581 678 (*(out_PREDICT_RAS_ADDRESS_PUSH [x])) (*( in_PREDICT_PC_CURRENT [i])); 582 679 (*(out_PREDICT_RAS_ADDRESS_PUSH [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 583 } 584 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 680 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 681 { 682 (*(out_PREDICT_RAS_ADDRESS_PUSH [x])) (*( in_DEPTH_UPT_TAIL [i])); 683 } 684 (*(out_PREDICT_RAS_ADDRESS_PUSH [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 685 } 686 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 585 687 { 586 688 (*(out_PREDICT_RAS_ADDRESS_PUSH [x])) (*( in_PREDICT_BTB_ACK [i])); … … 607 709 (*(out_PREDICT_UPT_VAL [x])) (*( in_PREDICT_PC_CURRENT [i])); 608 710 (*(out_PREDICT_UPT_VAL [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 609 } 610 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 711 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 712 { 713 (*(out_PREDICT_UPT_VAL [x])) (*( in_DEPTH_UPT_TAIL [i])); 714 } 715 (*(out_PREDICT_UPT_VAL [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 716 } 717 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 611 718 { 612 719 (*(out_PREDICT_UPT_VAL [x])) (*( in_PREDICT_BTB_ACK [i])); … … 635 742 (*(out_PREDICT_UPT_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT [i])); 636 743 (*(out_PREDICT_UPT_CONTEXT_ID [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 637 } 638 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 744 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 745 { 746 (*(out_PREDICT_UPT_CONTEXT_ID [x])) (*( in_DEPTH_UPT_TAIL [i])); 747 } 748 (*(out_PREDICT_UPT_CONTEXT_ID [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 749 } 750 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 639 751 { 640 752 (*(out_PREDICT_UPT_CONTEXT_ID [x])) (*( in_PREDICT_BTB_ACK [i])); … … 662 774 (*(out_PREDICT_UPT_BTB_ADDRESS_SRC [x])) (*( in_PREDICT_PC_CURRENT [i])); 663 775 (*(out_PREDICT_UPT_BTB_ADDRESS_SRC [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 664 } 665 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 776 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 777 { 778 (*(out_PREDICT_UPT_BTB_ADDRESS_SRC [x])) (*( in_DEPTH_UPT_TAIL [i])); 779 } 780 (*(out_PREDICT_UPT_BTB_ADDRESS_SRC [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 781 } 782 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 666 783 { 667 784 (*(out_PREDICT_UPT_BTB_ADDRESS_SRC [x])) (*( in_PREDICT_BTB_ACK [i])); … … 688 805 (*(out_PREDICT_UPT_BTB_ADDRESS_DEST [x])) (*( in_PREDICT_PC_CURRENT [i])); 689 806 (*(out_PREDICT_UPT_BTB_ADDRESS_DEST [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 690 } 691 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 807 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 808 { 809 (*(out_PREDICT_UPT_BTB_ADDRESS_DEST [x])) (*( in_DEPTH_UPT_TAIL [i])); 810 } 811 (*(out_PREDICT_UPT_BTB_ADDRESS_DEST [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 812 } 813 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 692 814 { 693 815 (*(out_PREDICT_UPT_BTB_ADDRESS_DEST [x])) (*( in_PREDICT_BTB_ACK [i])); … … 714 836 (*(out_PREDICT_UPT_BTB_CONDITION [x])) (*( in_PREDICT_PC_CURRENT [i])); 715 837 (*(out_PREDICT_UPT_BTB_CONDITION [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 716 } 717 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 838 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 839 { 840 (*(out_PREDICT_UPT_BTB_CONDITION [x])) (*( in_DEPTH_UPT_TAIL [i])); 841 } 842 (*(out_PREDICT_UPT_BTB_CONDITION [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 843 } 844 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 718 845 { 719 846 (*(out_PREDICT_UPT_BTB_CONDITION [x])) (*( in_PREDICT_BTB_ACK [i])); … … 740 867 (*(out_PREDICT_UPT_BTB_LAST_TAKE [x])) (*( in_PREDICT_PC_CURRENT [i])); 741 868 (*(out_PREDICT_UPT_BTB_LAST_TAKE [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 742 } 743 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 869 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 870 { 871 (*(out_PREDICT_UPT_BTB_LAST_TAKE [x])) (*( in_DEPTH_UPT_TAIL [i])); 872 } 873 (*(out_PREDICT_UPT_BTB_LAST_TAKE [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 874 } 875 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 744 876 { 745 877 (*(out_PREDICT_UPT_BTB_LAST_TAKE [x])) (*( in_PREDICT_BTB_ACK [i])); … … 766 898 (*(out_PREDICT_UPT_BTB_IS_ACCURATE [x])) (*( in_PREDICT_PC_CURRENT [i])); 767 899 (*(out_PREDICT_UPT_BTB_IS_ACCURATE [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 768 } 769 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 900 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 901 { 902 (*(out_PREDICT_UPT_BTB_IS_ACCURATE [x])) (*( in_DEPTH_UPT_TAIL [i])); 903 } 904 (*(out_PREDICT_UPT_BTB_IS_ACCURATE [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 905 } 906 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 770 907 { 771 908 (*(out_PREDICT_UPT_BTB_IS_ACCURATE [x])) (*( in_PREDICT_BTB_ACK [i])); … … 792 929 // (*(out_PREDICT_UPT_DIR_HISTORY [x])) (*( in_PREDICT_PC_CURRENT [i])); 793 930 // (*(out_PREDICT_UPT_DIR_HISTORY [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 931 // if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 932 // { 933 // (*(out_PREDICT_UPT_DIR_HISTORY [x])) (*( in_DEPTH_UPT_TAIL [i])); 934 // } 935 // (*(out_PREDICT_UPT_DIR_HISTORY [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 794 936 // } 795 // for (uint32_t i=0; i<_param->_nb_inst_ predict; i++)937 // for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 796 938 // { 797 939 // (*(out_PREDICT_UPT_DIR_HISTORY [x])) (*( in_PREDICT_BTB_ACK [i])); … … 818 960 (*(out_PREDICT_UPT_RAS_ADDRESS [x])) (*( in_PREDICT_PC_CURRENT [i])); 819 961 (*(out_PREDICT_UPT_RAS_ADDRESS [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 820 } 821 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 962 if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 963 { 964 (*(out_PREDICT_UPT_RAS_ADDRESS [x])) (*( in_DEPTH_UPT_TAIL [i])); 965 } 966 (*(out_PREDICT_UPT_RAS_ADDRESS [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 967 } 968 for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 822 969 { 823 970 (*(out_PREDICT_UPT_RAS_ADDRESS [x])) (*( in_PREDICT_BTB_ACK [i])); … … 844 991 // (*(out_PREDICT_UPT_RAS_INDEX [x])) (*( in_PREDICT_PC_CURRENT [i])); 845 992 // (*(out_PREDICT_UPT_RAS_INDEX [x])) (*( in_PREDICT_PC_CURRENT_IS_DS_TAKE [i])); 993 // if (_param->_have_port_depth[x] and _param->_have_port_depth[i]) 994 // { 995 // (*(out_PREDICT_UPT_RAS_INDEX [x])) (*( in_DEPTH_UPT_TAIL [i])); 996 // } 997 // (*(out_PREDICT_UPT_RAS_INDEX [x])) (*( in_DEPTH_UPT_NB_BRANCH [i])); 846 998 // } 847 // for (uint32_t i=0; i<_param->_nb_inst_ predict; i++)999 // for (uint32_t i=0; i<_param->_nb_inst_branch_predict; i++) 848 1000 // { 849 1001 // (*(out_PREDICT_UPT_RAS_INDEX [x])) (*( in_PREDICT_BTB_ACK [i])); … … 865 1017 } 866 1018 # endif 1019 1020 log_printf(INFO,Prediction_unit_Glue,FUNCTION,"Method - genMealy_decod"); 1021 1022 SC_METHOD (genMealy_decod); 1023 dont_initialize (); 1024 sensitive << (*(in_CLOCK)).neg(); // use internal register 1025 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1026 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1027 { 1028 sensitive << (*(in_DECOD_VAL [i][j])) 1029 << (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])) 1030 << (*(in_DECOD_BRANCH_STATE [i][j])) 1031 << (*(in_DECOD_BRANCH_CONDITION [i][j])) 1032 << (*(in_DECOD_BRANCH_DIRECTION [i][j])) 1033 << (*(in_DECOD_ADDRESS_SRC [i][j])) 1034 << (*(in_DECOD_ADDRESS_DEST [i][j])); 1035 1036 if (_param->_have_port_context_id) 1037 sensitive << (*(in_DECOD_CONTEXT_ID [i][j])); 1038 if (_param->_have_port_max_depth) 1039 sensitive << (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1040 } 1041 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1042 { 1043 sensitive << (*(in_DECOD_BTB_ACK [i] )) 1044 << (*(in_DECOD_RAS_ACK [i] )) 1045 << (*(in_DECOD_RAS_HIT [i] )) 1046 << (*(in_DECOD_RAS_ADDRESS_POP [i] )) 1047 // << (*(in_DECOD_RAS_INDEX [i] )) 1048 << (*(in_DECOD_UPT_ACK [i] )) ; 1049 } 1050 1051 # ifdef SYSTEMCASS_SPECIFIC 1052 // List dependency information 867 1053 1054 for (uint32_t x=0; x<_param->_nb_decod_unit; x++) 1055 for (uint32_t y=0; y<_param->_nb_inst_decod[x]; y++) 1056 { 1057 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1058 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1059 { 1060 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_VAL [i][j])); 1061 if (_param->_have_port_context_id) 1062 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_CONTEXT_ID [i][j])); 1063 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1064 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_BRANCH_STATE [i][j])); 1065 if (_param->_have_port_max_depth) 1066 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1067 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1068 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1069 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1070 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1071 } 1072 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1073 { 1074 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_BTB_ACK [i] )); 1075 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_RAS_ACK [i] )); 1076 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_RAS_HIT [i] )); 1077 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1078 // (*(out_DECOD_ACK [x][y])) (*(in_DECOD_RAS_INDEX [i] )); 1079 (*(out_DECOD_ACK [x][y])) (*(in_DECOD_UPT_ACK [i] )); 1080 } 1081 } 1082 1083 for (uint32_t x=0; x<_param->_nb_inst_branch_decod; x++) 1084 { 1085 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1086 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1087 { 1088 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_VAL [i][j])); 1089 if (_param->_have_port_context_id) 1090 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1091 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1092 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1093 if (_param->_have_port_max_depth) 1094 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1095 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1096 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1097 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1098 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1099 } 1100 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1101 { 1102 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_BTB_ACK [i] )); 1103 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_RAS_ACK [i] )); 1104 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_RAS_HIT [i] )); 1105 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1106 // (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_RAS_INDEX [i] )); 1107 (*(out_DECOD_BTB_VAL [x])) (*(in_DECOD_UPT_ACK [i] )); 1108 } 1109 1110 if (_param->_have_port_context_id) 1111 { 1112 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1113 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1114 { 1115 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_VAL [i][j])); 1116 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1117 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1118 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1119 if (_param->_have_port_max_depth) 1120 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1121 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1122 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1123 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1124 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1125 } 1126 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1127 { 1128 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_BTB_ACK [i] )); 1129 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_RAS_ACK [i] )); 1130 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_RAS_HIT [i] )); 1131 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1132 // (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_RAS_INDEX [i] )); 1133 (*(out_DECOD_BTB_CONTEXT_ID [x])) (*(in_DECOD_UPT_ACK [i] )); 1134 } 1135 } 1136 1137 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1138 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1139 { 1140 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_VAL [i][j])); 1141 if (_param->_have_port_context_id) 1142 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1143 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1144 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1145 if (_param->_have_port_max_depth) 1146 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1147 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1148 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1149 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1150 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1151 } 1152 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1153 { 1154 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BTB_ACK [i] )); 1155 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_ACK [i] )); 1156 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_HIT [i] )); 1157 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1158 // (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_INDEX [i] )); 1159 (*(out_DECOD_BTB_ADDRESS_SRC [x])) (*(in_DECOD_UPT_ACK [i] )); 1160 } 1161 1162 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1163 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1164 { 1165 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_VAL [i][j])); 1166 if (_param->_have_port_context_id) 1167 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1168 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1169 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1170 if (_param->_have_port_max_depth) 1171 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1172 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1173 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1174 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1175 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1176 } 1177 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1178 { 1179 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BTB_ACK [i] )); 1180 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_ACK [i] )); 1181 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_HIT [i] )); 1182 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1183 // (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_INDEX [i] )); 1184 (*(out_DECOD_BTB_ADDRESS_DEST [x])) (*(in_DECOD_UPT_ACK [i] )); 1185 } 1186 1187 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1188 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1189 { 1190 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_VAL [i][j])); 1191 if (_param->_have_port_context_id) 1192 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1193 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1194 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1195 if (_param->_have_port_max_depth) 1196 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1197 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1198 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1199 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1200 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1201 } 1202 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1203 { 1204 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_BTB_ACK [i] )); 1205 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_RAS_ACK [i] )); 1206 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_RAS_HIT [i] )); 1207 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1208 // (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_RAS_INDEX [i] )); 1209 (*(out_DECOD_BTB_CONDITION [x])) (*(in_DECOD_UPT_ACK [i] )); 1210 } 1211 1212 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1213 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1214 { 1215 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_VAL [i][j])); 1216 if (_param->_have_port_context_id) 1217 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1218 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1219 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1220 if (_param->_have_port_max_depth) 1221 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1222 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1223 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1224 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1225 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1226 } 1227 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1228 { 1229 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_BTB_ACK [i] )); 1230 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_ACK [i] )); 1231 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_HIT [i] )); 1232 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1233 // (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_INDEX [i] )); 1234 (*(out_DECOD_BTB_LAST_TAKE [x])) (*(in_DECOD_UPT_ACK [i] )); 1235 } 1236 1237 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1238 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1239 { 1240 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_VAL [i][j])); 1241 if (_param->_have_port_context_id) 1242 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1243 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1244 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1245 if (_param->_have_port_max_depth) 1246 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1247 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1248 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1249 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1250 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1251 } 1252 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1253 { 1254 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_BTB_ACK [i] )); 1255 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_RAS_ACK [i] )); 1256 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_RAS_HIT [i] )); 1257 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1258 // (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_RAS_INDEX [i] )); 1259 (*(out_DECOD_BTB_MISS_PREDICTION [x])) (*(in_DECOD_UPT_ACK [i] )); 1260 } 1261 1262 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1263 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1264 { 1265 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_VAL [i][j])); 1266 if (_param->_have_port_context_id) 1267 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1268 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1269 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1270 if (_param->_have_port_max_depth) 1271 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1272 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1273 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1274 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1275 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1276 } 1277 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1278 { 1279 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_BTB_ACK [i] )); 1280 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_RAS_ACK [i] )); 1281 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_RAS_HIT [i] )); 1282 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1283 // (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_RAS_INDEX [i] )); 1284 (*(out_DECOD_BTB_IS_ACCURATE [x])) (*(in_DECOD_UPT_ACK [i] )); 1285 } 1286 1287 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1288 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1289 { 1290 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_VAL [i][j])); 1291 if (_param->_have_port_context_id) 1292 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1293 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1294 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1295 if (_param->_have_port_max_depth) 1296 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1297 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1298 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1299 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1300 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1301 } 1302 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1303 { 1304 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_BTB_ACK [i] )); 1305 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_RAS_ACK [i] )); 1306 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_RAS_HIT [i] )); 1307 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1308 // (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_RAS_INDEX [i] )); 1309 (*(out_DECOD_RAS_VAL [x])) (*(in_DECOD_UPT_ACK [i] )); 1310 } 1311 1312 if (_param->_have_port_context_id) 1313 { 1314 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1315 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1316 { 1317 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_VAL [i][j])); 1318 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1319 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1320 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1321 if (_param->_have_port_max_depth) 1322 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1323 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1324 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1325 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1326 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1327 } 1328 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1329 { 1330 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_BTB_ACK [i] )); 1331 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_RAS_ACK [i] )); 1332 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_RAS_HIT [i] )); 1333 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1334 // (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_RAS_INDEX [i] )); 1335 (*(out_DECOD_RAS_CONTEXT_ID [x])) (*(in_DECOD_UPT_ACK [i] )); 1336 } 1337 } 1338 1339 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1340 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1341 { 1342 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_VAL [i][j])); 1343 if (_param->_have_port_context_id) 1344 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1345 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1346 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1347 if (_param->_have_port_max_depth) 1348 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1349 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1350 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1351 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1352 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1353 } 1354 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1355 { 1356 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_BTB_ACK [i] )); 1357 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_RAS_ACK [i] )); 1358 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_RAS_HIT [i] )); 1359 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1360 // (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_RAS_INDEX [i] )); 1361 (*(out_DECOD_RAS_PUSH [x])) (*(in_DECOD_UPT_ACK [i] )); 1362 } 1363 1364 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1365 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1366 { 1367 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_VAL [i][j])); 1368 if (_param->_have_port_context_id) 1369 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1370 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1371 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1372 if (_param->_have_port_max_depth) 1373 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1374 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1375 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1376 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1377 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1378 } 1379 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1380 { 1381 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_BTB_ACK [i] )); 1382 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_RAS_ACK [i] )); 1383 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_RAS_HIT [i] )); 1384 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1385 // (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_RAS_INDEX [i] )); 1386 (*(out_DECOD_RAS_ADDRESS_PUSH [x])) (*(in_DECOD_UPT_ACK [i] )); 1387 } 1388 1389 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1390 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1391 { 1392 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_VAL [i][j])); 1393 if (_param->_have_port_context_id) 1394 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1395 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1396 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1397 if (_param->_have_port_max_depth) 1398 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1399 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1400 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1401 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1402 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1403 } 1404 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1405 { 1406 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_BTB_ACK [i] )); 1407 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_RAS_ACK [i] )); 1408 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_RAS_HIT [i] )); 1409 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1410 // (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_RAS_INDEX [i] )); 1411 (*(out_DECOD_RAS_MISS_PREDICTION [x])) (*(in_DECOD_UPT_ACK [i] )); 1412 } 1413 1414 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1415 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1416 { 1417 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_VAL [i][j])); 1418 if (_param->_have_port_context_id) 1419 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1420 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1421 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1422 if (_param->_have_port_max_depth) 1423 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1424 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1425 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1426 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1427 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1428 } 1429 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1430 { 1431 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_BTB_ACK [i] )); 1432 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_RAS_ACK [i] )); 1433 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_RAS_HIT [i] )); 1434 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1435 // (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_RAS_INDEX [i] )); 1436 (*(out_DECOD_UPT_VAL [x])) (*(in_DECOD_UPT_ACK [i] )); 1437 } 1438 1439 if (_param->_have_port_context_id) 1440 { 1441 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1442 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1443 { 1444 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_VAL [i][j])); 1445 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1446 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1447 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1448 if (_param->_have_port_max_depth) 1449 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1450 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1451 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1452 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1453 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1454 } 1455 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1456 { 1457 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_BTB_ACK [i] )); 1458 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_RAS_ACK [i] )); 1459 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_RAS_HIT [i] )); 1460 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1461 // (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_RAS_INDEX [i] )); 1462 (*(out_DECOD_UPT_CONTEXT_ID [x])) (*(in_DECOD_UPT_ACK [i] )); 1463 } 1464 } 1465 1466 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1467 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1468 { 1469 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_VAL [i][j])); 1470 if (_param->_have_port_context_id) 1471 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1472 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1473 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1474 if (_param->_have_port_max_depth) 1475 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1476 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1477 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1478 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1479 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1480 } 1481 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1482 { 1483 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_BTB_ACK [i] )); 1484 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_ACK [i] )); 1485 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_HIT [i] )); 1486 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1487 // (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_RAS_INDEX [i] )); 1488 (*(out_DECOD_UPT_BTB_ADDRESS_SRC [x])) (*(in_DECOD_UPT_ACK [i] )); 1489 } 1490 1491 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1492 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1493 { 1494 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_VAL [i][j])); 1495 if (_param->_have_port_context_id) 1496 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1497 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1498 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1499 if (_param->_have_port_max_depth) 1500 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1501 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1502 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1503 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1504 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1505 } 1506 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1507 { 1508 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_BTB_ACK [i] )); 1509 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_ACK [i] )); 1510 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_HIT [i] )); 1511 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1512 // (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_RAS_INDEX [i] )); 1513 (*(out_DECOD_UPT_BTB_ADDRESS_DEST [x])) (*(in_DECOD_UPT_ACK [i] )); 1514 } 1515 1516 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1517 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1518 { 1519 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_VAL [i][j])); 1520 if (_param->_have_port_context_id) 1521 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1522 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1523 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1524 if (_param->_have_port_max_depth) 1525 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1526 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1527 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1528 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1529 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1530 } 1531 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1532 { 1533 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_BTB_ACK [i] )); 1534 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_RAS_ACK [i] )); 1535 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_RAS_HIT [i] )); 1536 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1537 // (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_RAS_INDEX [i] )); 1538 (*(out_DECOD_UPT_BTB_CONDITION [x])) (*(in_DECOD_UPT_ACK [i] )); 1539 } 1540 1541 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1542 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1543 { 1544 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_VAL [i][j])); 1545 if (_param->_have_port_context_id) 1546 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1547 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1548 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1549 if (_param->_have_port_max_depth) 1550 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1551 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1552 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1553 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1554 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1555 } 1556 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1557 { 1558 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_BTB_ACK [i] )); 1559 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_ACK [i] )); 1560 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_HIT [i] )); 1561 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1562 // (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_RAS_INDEX [i] )); 1563 (*(out_DECOD_UPT_BTB_LAST_TAKE [x])) (*(in_DECOD_UPT_ACK [i] )); 1564 } 1565 1566 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1567 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1568 { 1569 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_VAL [i][j])); 1570 if (_param->_have_port_context_id) 1571 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1572 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1573 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1574 if (_param->_have_port_max_depth) 1575 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1576 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1577 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1578 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1579 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1580 } 1581 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1582 { 1583 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_BTB_ACK [i] )); 1584 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_RAS_ACK [i] )); 1585 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_RAS_HIT [i] )); 1586 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1587 // (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_RAS_INDEX [i] )); 1588 (*(out_DECOD_UPT_RAS_ADDRESS [x])) (*(in_DECOD_UPT_ACK [i] )); 1589 } 1590 1591 // for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1592 // for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1593 // { 1594 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_VAL [i][j])); 1595 // if (_param->_have_port_context_id) 1596 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1597 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1598 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1599 // if (_param->_have_port_max_depth) 1600 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1601 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1602 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1603 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1604 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1605 // } 1606 // for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1607 // { 1608 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_BTB_ACK [i] )); 1609 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_RAS_ACK [i] )); 1610 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_RAS_HIT [i] )); 1611 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1612 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_RAS_INDEX [i] )); 1613 // (*(out_DECOD_UPT_RAS_INDEX [x])) (*(in_DECOD_UPT_ACK [i] )); 1614 // } 1615 1616 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1617 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1618 { 1619 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_VAL [i][j])); 1620 if (_param->_have_port_context_id) 1621 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1622 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1623 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1624 if (_param->_have_port_max_depth) 1625 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1626 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1627 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1628 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1629 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1630 } 1631 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1632 { 1633 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_BTB_ACK [i] )); 1634 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_RAS_ACK [i] )); 1635 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_RAS_HIT [i] )); 1636 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1637 // (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_RAS_INDEX [i] )); 1638 (*(out_DECOD_UPT_MISS_IFETCH [x])) (*(in_DECOD_UPT_ACK [i] )); 1639 } 1640 1641 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1642 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1643 { 1644 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_VAL [i][j])); 1645 if (_param->_have_port_context_id) 1646 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1647 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1648 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1649 if (_param->_have_port_max_depth) 1650 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1651 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1652 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1653 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1654 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1655 } 1656 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1657 { 1658 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_BTB_ACK [i] )); 1659 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_RAS_ACK [i] )); 1660 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_RAS_HIT [i] )); 1661 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1662 // (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_RAS_INDEX [i] )); 1663 (*(out_DECOD_UPT_MISS_DECOD [x])) (*(in_DECOD_UPT_ACK [i] )); 1664 } 1665 1666 if (_param->_have_port_max_depth) 1667 { 1668 for (uint32_t i=0; i<_param->_nb_decod_unit; i++) 1669 for (uint32_t j=0; j<_param->_nb_inst_decod[i]; j++) 1670 { 1671 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_VAL [i][j])); 1672 if (_param->_have_port_context_id) 1673 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_CONTEXT_ID [i][j])); 1674 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_MATCH_INST_IFETCH_PTR [i][j])); 1675 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_BRANCH_STATE [i][j])); 1676 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_BRANCH_UPDATE_PREDICTION_ID [i][j])); 1677 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_BRANCH_CONDITION [i][j])); 1678 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_BRANCH_DIRECTION [i][j])); 1679 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_ADDRESS_SRC [i][j])); 1680 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_ADDRESS_DEST [i][j])); 1681 } 1682 for (uint32_t i=0; i<_param->_nb_inst_branch_decod; i++) 1683 { 1684 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_BTB_ACK [i] )); 1685 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_RAS_ACK [i] )); 1686 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_RAS_HIT [i] )); 1687 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_RAS_ADDRESS_POP [i] )); 1688 // (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_RAS_INDEX [i] )); 1689 (*(out_DECOD_UPT_UPDATE_PREDICTION_ID [x])) (*(in_DECOD_UPT_ACK [i] )); 1690 } 1691 } 1692 } 1693 # endif 1694 1695 log_printf(INFO,Prediction_unit_Glue,FUNCTION,"Method - genMealy_update"); 1696 1697 SC_METHOD (genMealy_update); 1698 dont_initialize (); 1699 // sensitive << (*(in_CLOCK)).neg(); // don't use internal register 1700 for (uint32_t i=0; i<_param->_nb_inst_branch_update; i++) 1701 sensitive << (*(in_UPDATE_BTB_ACK [i])) 1702 << (*(in_UPDATE_DIR_ACK [i])) 1703 << (*(in_UPDATE_RAS_ACK [i])) 1704 << (*(in_UPDATE_UPT_VAL [i])) 1705 << (*(in_UPDATE_UPT_BTB_VAL [i])) 1706 << (*(in_UPDATE_UPT_DIR_VAL [i])) 1707 << (*(in_UPDATE_UPT_RAS_VAL [i])); 1708 1709 # ifdef SYSTEMCASS_SPECIFIC 1710 // List dependency information 1711 for (uint32_t x=0; x<_param->_nb_inst_branch_update; x++) 1712 // for (uint32_t i=0; i<_param->_nb_inst_branch_update; i++) 1713 { 1714 uint32_t i=x; 1715 1716 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_BTB_ACK [i])); 1717 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_DIR_ACK [i])); 1718 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_RAS_ACK [i])); 1719 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_UPT_VAL [i])); 1720 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_UPT_BTB_VAL [i])); 1721 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_UPT_DIR_VAL [i])); 1722 (*(out_UPDATE_BTB_VAL [x])) (*(in_UPDATE_UPT_RAS_VAL [i])); 1723 1724 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_BTB_ACK [i])); 1725 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_DIR_ACK [i])); 1726 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_RAS_ACK [i])); 1727 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_UPT_VAL [i])); 1728 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_UPT_BTB_VAL [i])); 1729 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_UPT_DIR_VAL [i])); 1730 (*(out_UPDATE_DIR_VAL [x])) (*(in_UPDATE_UPT_RAS_VAL [i])); 1731 1732 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_BTB_ACK [i])); 1733 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_DIR_ACK [i])); 1734 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_RAS_ACK [i])); 1735 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_UPT_VAL [i])); 1736 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_UPT_BTB_VAL [i])); 1737 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_UPT_DIR_VAL [i])); 1738 (*(out_UPDATE_RAS_VAL [x])) (*(in_UPDATE_UPT_RAS_VAL [i])); 1739 1740 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_BTB_ACK [i])); 1741 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_DIR_ACK [i])); 1742 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_RAS_ACK [i])); 1743 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_UPT_VAL [i])); 1744 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_UPT_BTB_VAL [i])); 1745 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_UPT_DIR_VAL [i])); 1746 (*(out_UPDATE_UPT_ACK [x])) (*(in_UPDATE_UPT_RAS_VAL [i])); 1747 } 1748 # endif 868 1749 #endif 869 1750 }
Note: See TracChangeset
for help on using the changeset viewer.