sc_module.cc (13194:9c6b495e650c) | sc_module.cc (13206:c944ef4abb48) |
---|---|
1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 482 unchanged lines hidden (view full) --- 491 ::sc_core::at_negedge(s); 492} 493 494 495void 496next_trigger() 497{ 498 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 482 unchanged lines hidden (view full) --- 491 ::sc_core::at_negedge(s); 492} 493 494 495void 496next_trigger() 497{ 498 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
499 p->setDynamic(nullptr); | 499 p->cancelTimeout(); 500 p->clearDynamic(); |
500} 501 502void 503next_trigger(const sc_event &e) 504{ 505 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 501} 502 503void 504next_trigger(const sc_event &e) 505{ 506 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
506 p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); | 507 p->cancelTimeout(); 508 p->setDynamic(new ::sc_gem5::DynamicSensitivityEvent(p, &e)); |
507} 508 509void 510next_trigger(const sc_event_or_list &eol) 511{ 512 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 509} 510 511void 512next_trigger(const sc_event_or_list &eol) 513{ 514 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
513 p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); | 515 p->cancelTimeout(); 516 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventOrList(p, &eol)); |
514} 515 516void 517next_trigger(const sc_event_and_list &eal) 518{ 519 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 517} 518 519void 520next_trigger(const sc_event_and_list &eal) 521{ 522 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
520 p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); | 523 p->cancelTimeout(); 524 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventAndList(p, &eal)); |
521} 522 523void 524next_trigger(const sc_time &t) 525{ 526 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 525} 526 527void 528next_trigger(const sc_time &t) 529{ 530 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
527 p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); | 531 p->setTimeout(t); 532 p->clearDynamic(); |
528} 529 530void 531next_trigger(double d, sc_time_unit u) 532{ 533 next_trigger(sc_time(d, u)); 534} 535 536void 537next_trigger(const sc_time &t, const sc_event &e) 538{ 539 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 533} 534 535void 536next_trigger(double d, sc_time_unit u) 537{ 538 next_trigger(sc_time(d, u)); 539} 540 541void 542next_trigger(const sc_time &t, const sc_event &e) 543{ 544 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
540 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); | 545 p->setTimeout(t); 546 p->setDynamic(new ::sc_gem5::DynamicSensitivityEvent(p, &e)); |
541} 542 543void 544next_trigger(double d, sc_time_unit u, const sc_event &e) 545{ 546 next_trigger(sc_time(d, u), e); 547} 548 549void 550next_trigger(const sc_time &t, const sc_event_or_list &eol) 551{ 552 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 547} 548 549void 550next_trigger(double d, sc_time_unit u, const sc_event &e) 551{ 552 next_trigger(sc_time(d, u), e); 553} 554 555void 556next_trigger(const sc_time &t, const sc_event_or_list &eol) 557{ 558 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
553 p->setDynamic( 554 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); | 559 p->setTimeout(t); 560 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventOrList(p, &eol)); |
555} 556 557void 558next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 559{ 560 next_trigger(sc_time(d, u), eol); 561} 562 563void 564next_trigger(const sc_time &t, const sc_event_and_list &eal) 565{ 566 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 561} 562 563void 564next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 565{ 566 next_trigger(sc_time(d, u), eol); 567} 568 569void 570next_trigger(const sc_time &t, const sc_event_and_list &eal) 571{ 572 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
567 p->setDynamic( 568 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); | 573 p->setTimeout(t); 574 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventAndList(p, &eal)); |
569} 570 571void 572next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 573{ 574 next_trigger(sc_time(d, u), eal); 575} 576 --- 7 unchanged lines hidden (view full) --- 584 return p->timedOut(); 585} 586 587 588void 589wait() 590{ 591 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 575} 576 577void 578next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 579{ 580 next_trigger(sc_time(d, u), eal); 581} 582 --- 7 unchanged lines hidden (view full) --- 590 return p->timedOut(); 591} 592 593 594void 595wait() 596{ 597 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
592 p->setDynamic(nullptr); | 598 p->cancelTimeout(); 599 p->clearDynamic(); |
593 sc_gem5::scheduler.yield(); 594} 595 596void 597wait(int n) 598{ 599 if (n <= 0) { 600 std::string msg = csprintf("n = %d", n); 601 SC_REPORT_ERROR("(E525) wait(n) is only valid for n > 0", msg.c_str()); 602 } 603 for (int i = 0; i < n; i++) 604 wait(); 605} 606 607void 608wait(const sc_event &e) 609{ 610 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 600 sc_gem5::scheduler.yield(); 601} 602 603void 604wait(int n) 605{ 606 if (n <= 0) { 607 std::string msg = csprintf("n = %d", n); 608 SC_REPORT_ERROR("(E525) wait(n) is only valid for n > 0", msg.c_str()); 609 } 610 for (int i = 0; i < n; i++) 611 wait(); 612} 613 614void 615wait(const sc_event &e) 616{ 617 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
611 p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); | 618 p->cancelTimeout(); 619 p->setDynamic(new ::sc_gem5::DynamicSensitivityEvent(p, &e)); |
612 sc_gem5::scheduler.yield(); 613} 614 615void 616wait(const sc_event_or_list &eol) 617{ 618 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 620 sc_gem5::scheduler.yield(); 621} 622 623void 624wait(const sc_event_or_list &eol) 625{ 626 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
619 p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); | 627 p->cancelTimeout(); 628 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventOrList(p, &eol)); |
620 sc_gem5::scheduler.yield(); 621} 622 623void 624wait(const sc_event_and_list &eal) 625{ 626 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 629 sc_gem5::scheduler.yield(); 630} 631 632void 633wait(const sc_event_and_list &eal) 634{ 635 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
627 p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); | 636 p->cancelTimeout(); 637 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventAndList(p, &eal)); |
628 sc_gem5::scheduler.yield(); 629} 630 631void 632wait(const sc_time &t) 633{ 634 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 638 sc_gem5::scheduler.yield(); 639} 640 641void 642wait(const sc_time &t) 643{ 644 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
635 p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); | 645 p->setTimeout(t); 646 p->clearDynamic(); |
636 sc_gem5::scheduler.yield(); 637} 638 639void 640wait(double d, sc_time_unit u) 641{ 642 wait(sc_time(d, u)); 643} 644 645void 646wait(const sc_time &t, const sc_event &e) 647{ 648 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 647 sc_gem5::scheduler.yield(); 648} 649 650void 651wait(double d, sc_time_unit u) 652{ 653 wait(sc_time(d, u)); 654} 655 656void 657wait(const sc_time &t, const sc_event &e) 658{ 659 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
649 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); | 660 p->setTimeout(t); 661 p->setDynamic(new ::sc_gem5::DynamicSensitivityEvent(p, &e)); |
650 sc_gem5::scheduler.yield(); 651} 652 653void 654wait(double d, sc_time_unit u, const sc_event &e) 655{ 656 wait(sc_time(d, u), e); 657} 658 659void 660wait(const sc_time &t, const sc_event_or_list &eol) 661{ 662 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 662 sc_gem5::scheduler.yield(); 663} 664 665void 666wait(double d, sc_time_unit u, const sc_event &e) 667{ 668 wait(sc_time(d, u), e); 669} 670 671void 672wait(const sc_time &t, const sc_event_or_list &eol) 673{ 674 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
663 p->setDynamic( 664 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); | 675 p->setTimeout(t); 676 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventOrList(p, &eol)); |
665 sc_gem5::scheduler.yield(); 666} 667 668void 669wait(double d, sc_time_unit u, const sc_event_or_list &eol) 670{ 671 wait(sc_time(d, u), eol); 672} 673 674void 675wait(const sc_time &t, const sc_event_and_list &eal) 676{ 677 sc_gem5::Process *p = sc_gem5::scheduler.current(); | 677 sc_gem5::scheduler.yield(); 678} 679 680void 681wait(double d, sc_time_unit u, const sc_event_or_list &eol) 682{ 683 wait(sc_time(d, u), eol); 684} 685 686void 687wait(const sc_time &t, const sc_event_and_list &eal) 688{ 689 sc_gem5::Process *p = sc_gem5::scheduler.current(); |
678 p->setDynamic( 679 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); | 690 p->setTimeout(t); 691 p->setDynamic(new ::sc_gem5::DynamicSensitivityEventAndList(p, &eal)); |
680 sc_gem5::scheduler.yield(); 681} 682 683void 684wait(double d, sc_time_unit u, const sc_event_and_list &eal) 685{ 686 wait(sc_time(d, u), eal); 687} --- 80 unchanged lines hidden --- | 692 sc_gem5::scheduler.yield(); 693} 694 695void 696wait(double d, sc_time_unit u, const sc_event_and_list &eal) 697{ 698 wait(sc_time(d, u), eal); 699} --- 80 unchanged lines hidden --- |