sc_module.cc revision 12958
12689Sktlim@umich.edu/* 28703Sandreas.hansson@arm.com * Copyright 2018 Google, Inc. 38666SPrakash.Ramrakhyani@arm.com * 48666SPrakash.Ramrakhyani@arm.com * Redistribution and use in source and binary forms, with or without 58666SPrakash.Ramrakhyani@arm.com * modification, are permitted provided that the following conditions are 68666SPrakash.Ramrakhyani@arm.com * met: redistributions of source code must retain the above copyright 78666SPrakash.Ramrakhyani@arm.com * notice, this list of conditions and the following disclaimer; 88666SPrakash.Ramrakhyani@arm.com * redistributions in binary form must reproduce the above copyright 98666SPrakash.Ramrakhyani@arm.com * notice, this list of conditions and the following disclaimer in the 108666SPrakash.Ramrakhyani@arm.com * documentation and/or other materials provided with the distribution; 118666SPrakash.Ramrakhyani@arm.com * neither the name of the copyright holders nor the names of its 128666SPrakash.Ramrakhyani@arm.com * contributors may be used to endorse or promote products derived from 138666SPrakash.Ramrakhyani@arm.com * this software without specific prior written permission. 142689Sktlim@umich.edu * 157897Shestness@cs.utexas.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 162689Sktlim@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 172689Sktlim@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 182689Sktlim@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 192689Sktlim@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 202689Sktlim@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 212689Sktlim@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 222689Sktlim@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 232689Sktlim@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 242689Sktlim@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 252689Sktlim@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 262689Sktlim@umich.edu * 272689Sktlim@umich.edu * Authors: Gabe Black 282689Sktlim@umich.edu */ 292689Sktlim@umich.edu 302689Sktlim@umich.edu#include <memory> 312689Sktlim@umich.edu#include <vector> 322689Sktlim@umich.edu 332689Sktlim@umich.edu#include "base/logging.hh" 342689Sktlim@umich.edu#include "systemc/core/module.hh" 352689Sktlim@umich.edu#include "systemc/core/process_types.hh" 362689Sktlim@umich.edu#include "systemc/ext/core/sc_module.hh" 372689Sktlim@umich.edu#include "systemc/ext/core/sc_module_name.hh" 382689Sktlim@umich.edu 392689Sktlim@umich.edunamespace sc_gem5 402689Sktlim@umich.edu{ 412689Sktlim@umich.edu 422689Sktlim@umich.eduProcess * 432689Sktlim@umich.edunewMethodProcess(const char *name, ProcessFuncWrapper *func) 442689Sktlim@umich.edu{ 457897Shestness@cs.utexas.edu return new Method(name, func); 462689Sktlim@umich.edu} 472689Sktlim@umich.edu 482521SN/AProcess * 493960Sgblack@eecs.umich.edunewThreadProcess(const char *name, ProcessFuncWrapper *func) 504194Ssaidi@eecs.umich.edu{ 518769Sgblack@eecs.umich.edu return new Thread(name, func); 521070SN/A} 531070SN/A 542521SN/AProcess * 556658Snate@binkert.orgnewCThreadProcess(const char *name, ProcessFuncWrapper *func) 568229Snate@binkert.org{ 578232Snate@binkert.org return new CThread(name, func); 588666SPrakash.Ramrakhyani@arm.com} 598769Sgblack@eecs.umich.edu 602522SN/A} // namespace sc_gem5 618769Sgblack@eecs.umich.edu 622037SN/Anamespace sc_core 638229Snate@binkert.org{ 648769Sgblack@eecs.umich.edu 6556SN/Asc_bind_proxy::sc_bind_proxy(const sc_interface &_interface) : 666658Snate@binkert.org _interface(&_interface), _port(nullptr) 672SN/A{} 682107SN/A 692SN/Asc_bind_proxy::sc_bind_proxy(const sc_port_base &_port) : 702SN/A _interface(nullptr), _port(&_port) 712SN/A{} 722SN/A 732SN/Aconst sc_bind_proxy SC_BIND_PROXY_NUL(*(const sc_port_base *)nullptr); 741070SN/A 758703Sandreas.hansson@arm.comsc_module::~sc_module() {} 768703Sandreas.hansson@arm.com 778826Snilay@cs.wisc.educonst sc_bind_proxy SC_BIND_PROXY_NIL(*(const sc_port_base *)nullptr); 782521SN/A 798852Sandreas.hansson@arm.comvoid 808852Sandreas.hansson@arm.comsc_module::operator () (const sc_bind_proxy &p001, 817580SAli.Saidi@arm.com const sc_bind_proxy &p002, 827770SAli.Saidi@ARM.com const sc_bind_proxy &p003, 838931Sandreas.hansson@arm.com const sc_bind_proxy &p004, 847914SBrad.Beckmann@amd.com const sc_bind_proxy &p005, 857914SBrad.Beckmann@amd.com const sc_bind_proxy &p006, 867914SBrad.Beckmann@amd.com const sc_bind_proxy &p007, 878666SPrakash.Ramrakhyani@arm.com const sc_bind_proxy &p008, 887914SBrad.Beckmann@amd.com const sc_bind_proxy &p009, 898666SPrakash.Ramrakhyani@arm.com const sc_bind_proxy &p010, 907897Shestness@cs.utexas.edu const sc_bind_proxy &p011, 912SN/A const sc_bind_proxy &p012, 921070SN/A const sc_bind_proxy &p013, 931070SN/A const sc_bind_proxy &p014, 941070SN/A const sc_bind_proxy &p015, 958769Sgblack@eecs.umich.edu const sc_bind_proxy &p016, 968769Sgblack@eecs.umich.edu const sc_bind_proxy &p017, 978769Sgblack@eecs.umich.edu const sc_bind_proxy &p018, 988769Sgblack@eecs.umich.edu const sc_bind_proxy &p019, 998666SPrakash.Ramrakhyani@arm.com const sc_bind_proxy &p020, 1008832SAli.Saidi@ARM.com const sc_bind_proxy &p021, 1018832SAli.Saidi@ARM.com const sc_bind_proxy &p022, 1028832SAli.Saidi@ARM.com const sc_bind_proxy &p023, 1038832SAli.Saidi@ARM.com const sc_bind_proxy &p024, 1048832SAli.Saidi@ARM.com const sc_bind_proxy &p025, 1058832SAli.Saidi@ARM.com const sc_bind_proxy &p026, 1068832SAli.Saidi@ARM.com const sc_bind_proxy &p027, 1078832SAli.Saidi@ARM.com const sc_bind_proxy &p028, 1088832SAli.Saidi@ARM.com const sc_bind_proxy &p029, 1098832SAli.Saidi@ARM.com const sc_bind_proxy &p030, 1108885SAli.Saidi@ARM.com const sc_bind_proxy &p031, 1118885SAli.Saidi@ARM.com const sc_bind_proxy &p032, 1128885SAli.Saidi@ARM.com const sc_bind_proxy &p033, 1138885SAli.Saidi@ARM.com const sc_bind_proxy &p034, 1148885SAli.Saidi@ARM.com const sc_bind_proxy &p035, 1158885SAli.Saidi@ARM.com const sc_bind_proxy &p036, 1168885SAli.Saidi@ARM.com const sc_bind_proxy &p037, 1178885SAli.Saidi@ARM.com const sc_bind_proxy &p038, 1188885SAli.Saidi@ARM.com const sc_bind_proxy &p039, 1198885SAli.Saidi@ARM.com const sc_bind_proxy &p040, 1208885SAli.Saidi@ARM.com const sc_bind_proxy &p041, 1218885SAli.Saidi@ARM.com const sc_bind_proxy &p042, 1228885SAli.Saidi@ARM.com const sc_bind_proxy &p043, 1238885SAli.Saidi@ARM.com const sc_bind_proxy &p044, 1248885SAli.Saidi@ARM.com const sc_bind_proxy &p045, 1258885SAli.Saidi@ARM.com const sc_bind_proxy &p046, 1268885SAli.Saidi@ARM.com const sc_bind_proxy &p047, 1278885SAli.Saidi@ARM.com const sc_bind_proxy &p048, 1288885SAli.Saidi@ARM.com const sc_bind_proxy &p049, 1298885SAli.Saidi@ARM.com const sc_bind_proxy &p050, 1308885SAli.Saidi@ARM.com const sc_bind_proxy &p051, 1318885SAli.Saidi@ARM.com const sc_bind_proxy &p052, 1328885SAli.Saidi@ARM.com const sc_bind_proxy &p053, 1338885SAli.Saidi@ARM.com const sc_bind_proxy &p054, 1348885SAli.Saidi@ARM.com const sc_bind_proxy &p055, 1358885SAli.Saidi@ARM.com const sc_bind_proxy &p056, 1368885SAli.Saidi@ARM.com const sc_bind_proxy &p057, 1378885SAli.Saidi@ARM.com const sc_bind_proxy &p058, 1388885SAli.Saidi@ARM.com const sc_bind_proxy &p059, 1398885SAli.Saidi@ARM.com const sc_bind_proxy &p060, 1408885SAli.Saidi@ARM.com const sc_bind_proxy &p061, 1418885SAli.Saidi@ARM.com const sc_bind_proxy &p062, 1428885SAli.Saidi@ARM.com const sc_bind_proxy &p063, 1438885SAli.Saidi@ARM.com const sc_bind_proxy &p064) 1448885SAli.Saidi@ARM.com{ 1458885SAli.Saidi@ARM.com warn("%s not implemented.\n", __PRETTY_FUNCTION__); 1468885SAli.Saidi@ARM.com} 1478885SAli.Saidi@ARM.com 1482SN/Aconst std::vector<sc_object *> & 1492SN/Asc_module::get_child_objects() const 1502SN/A{ 1512SN/A return _gem5_module->obj()->get_child_objects(); 1521070SN/A} 1531070SN/A 1548666SPrakash.Ramrakhyani@arm.comconst std::vector<sc_event *> & 1558666SPrakash.Ramrakhyani@arm.comsc_module::get_child_events() const 1568666SPrakash.Ramrakhyani@arm.com{ 1572SN/A return _gem5_module->obj()->get_child_events(); 1582SN/A} 1598706Sandreas.hansson@arm.com 1608706Sandreas.hansson@arm.comsc_module::sc_module() : 1618706Sandreas.hansson@arm.com sc_object(sc_gem5::newModule()->name()), 1628706Sandreas.hansson@arm.com _gem5_module(sc_gem5::currentModule()) 1638706Sandreas.hansson@arm.com{} 1648706Sandreas.hansson@arm.com 1658706Sandreas.hansson@arm.comsc_module::sc_module(const sc_module_name &) : sc_module() {} 1668706Sandreas.hansson@arm.comsc_module::sc_module(const char *_name) : sc_module(sc_module_name(_name)) {} 1678922Swilliam.wang@arm.comsc_module::sc_module(const std::string &_name) : 1688922Swilliam.wang@arm.com sc_module(sc_module_name(_name.c_str())) 1698703Sandreas.hansson@arm.com{} 1708703Sandreas.hansson@arm.com 1718922Swilliam.wang@arm.comvoid 1728703Sandreas.hansson@arm.comsc_module::reset_signal_is(const sc_in<bool> &, bool) 1738703Sandreas.hansson@arm.com{ 1742901Ssaidi@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 1754762Snate@binkert.org} 1762901Ssaidi@eecs.umich.edu 1772901Ssaidi@eecs.umich.eduvoid 1782901Ssaidi@eecs.umich.edusc_module::reset_signal_is(const sc_inout<bool> &, bool) 1792901Ssaidi@eecs.umich.edu{ 1802901Ssaidi@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 1813960Sgblack@eecs.umich.edu} 1823960Sgblack@eecs.umich.edu 1834095Sbinkertn@umich.eduvoid 1844095Sbinkertn@umich.edusc_module::reset_signal_is(const sc_out<bool> &, bool) 1854095Sbinkertn@umich.edu{ 1863960Sgblack@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 1873960Sgblack@eecs.umich.edu} 1887445Ssteve.reinhardt@amd.com 1897445Ssteve.reinhardt@amd.comvoid 1907445Ssteve.reinhardt@amd.comsc_module::reset_signal_is(const sc_signal_in_if<bool> &, bool) 1917445Ssteve.reinhardt@amd.com{ 1927445Ssteve.reinhardt@amd.com warn("%s not implemented.\n", __PRETTY_FUNCTION__); 1937445Ssteve.reinhardt@amd.com} 1947445Ssteve.reinhardt@amd.com 195180SN/A 1965718Shsul@eecs.umich.eduvoid 1972SN/Asc_module::async_reset_signal_is(const sc_in<bool> &, bool) 1985712Shsul@eecs.umich.edu{ 1995718Shsul@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 2005718Shsul@eecs.umich.edu} 2015718Shsul@eecs.umich.edu 2025718Shsul@eecs.umich.eduvoid 2035718Shsul@eecs.umich.edusc_module::async_reset_signal_is(const sc_inout<bool> &, bool) 2045718Shsul@eecs.umich.edu{ 2055718Shsul@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 2065718Shsul@eecs.umich.edu} 2075718Shsul@eecs.umich.edu 2085718Shsul@eecs.umich.eduvoid 2095718Shsul@eecs.umich.edusc_module::async_reset_signal_is(const sc_out<bool> &, bool) 2105718Shsul@eecs.umich.edu{ 2111806SN/A warn("%s not implemented.\n", __PRETTY_FUNCTION__); 2121806SN/A} 2132680Sktlim@umich.edu 2145823Ssaidi@eecs.umich.eduvoid 2151806SN/Asc_module::async_reset_signal_is(const sc_signal_in_if<bool> &, bool) 2162680Sktlim@umich.edu{ 2175714Shsul@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 2181070SN/A} 2195512SMichael.Adler@intel.com 2207445Ssteve.reinhardt@amd.com 2214095Sbinkertn@umich.eduvoid 2225512SMichael.Adler@intel.comsc_module::dont_initialize() 2234095Sbinkertn@umich.edu{ 2247445Ssteve.reinhardt@amd.com ::sc_gem5::Process::newest()->dontInitialize(); 2254095Sbinkertn@umich.edu} 2264095Sbinkertn@umich.edu 2271070SN/Avoid 2284095Sbinkertn@umich.edusc_module::set_stack_size(size_t size) 2294095Sbinkertn@umich.edu{ 2304095Sbinkertn@umich.edu ::sc_gem5::Process::newest()->setStackSize(size); 2314095Sbinkertn@umich.edu} 2324095Sbinkertn@umich.edu 2331070SN/A 2341070SN/Avoid sc_module::next_trigger() { ::sc_core::next_trigger(); } 2357914SBrad.Beckmann@amd.com 2367914SBrad.Beckmann@amd.comvoid 2371806SN/Asc_module::next_trigger(const sc_event &e) 238180SN/A{ 23975SN/A ::sc_core::next_trigger(e); 2406029Ssteve.reinhardt@amd.com} 2416029Ssteve.reinhardt@amd.com 2426029Ssteve.reinhardt@amd.comvoid 2436029Ssteve.reinhardt@amd.comsc_module::next_trigger(const sc_event_or_list &eol) 2446029Ssteve.reinhardt@amd.com{ 2456029Ssteve.reinhardt@amd.com ::sc_core::next_trigger(eol); 2466029Ssteve.reinhardt@amd.com} 2476029Ssteve.reinhardt@amd.com 2486029Ssteve.reinhardt@amd.comvoid 2496029Ssteve.reinhardt@amd.comsc_module::next_trigger(const sc_event_and_list &eal) 2506029Ssteve.reinhardt@amd.com{ 251180SN/A ::sc_core::next_trigger(eal); 2527733SAli.Saidi@ARM.com} 2531129SN/A 2548806Sgblack@eecs.umich.eduvoid 2558769Sgblack@eecs.umich.edusc_module::next_trigger(const sc_time &t) 2568769Sgblack@eecs.umich.edu{ 2578769Sgblack@eecs.umich.edu ::sc_core::next_trigger(t); 2588799Sgblack@eecs.umich.edu} 2598799Sgblack@eecs.umich.edu 2608799Sgblack@eecs.umich.eduvoid 2618799Sgblack@eecs.umich.edusc_module::next_trigger(double d, sc_time_unit u) 2628799Sgblack@eecs.umich.edu{ 2638885SAli.Saidi@ARM.com ::sc_core::next_trigger(d, u); 2648799Sgblack@eecs.umich.edu} 2658799Sgblack@eecs.umich.edu 2668706Sandreas.hansson@arm.comvoid 2678799Sgblack@eecs.umich.edusc_module::next_trigger(const sc_time &t, const sc_event &e) 2688799Sgblack@eecs.umich.edu{ 2698799Sgblack@eecs.umich.edu ::sc_core::next_trigger(t, e); 2708799Sgblack@eecs.umich.edu} 2718799Sgblack@eecs.umich.edu 2728706Sandreas.hansson@arm.comvoid 2738706Sandreas.hansson@arm.comsc_module::next_trigger(double d, sc_time_unit u, const sc_event &e) 2748706Sandreas.hansson@arm.com{ 2758706Sandreas.hansson@arm.com ::sc_core::next_trigger(d, u, e); 2768806Sgblack@eecs.umich.edu} 2778806Sgblack@eecs.umich.edu 2788806Sgblack@eecs.umich.eduvoid 2798806Sgblack@eecs.umich.edusc_module::next_trigger(const sc_time &t, const sc_event_or_list &eol) 2808806Sgblack@eecs.umich.edu{ 2811129SN/A ::sc_core::next_trigger(t, eol); 2821129SN/A} 2831129SN/A 2845713Shsul@eecs.umich.eduvoid 285180SN/Asc_module::next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 2865713Shsul@eecs.umich.edu{ 2872680Sktlim@umich.edu ::sc_core::next_trigger(d, u, eol); 2885713Shsul@eecs.umich.edu} 289180SN/A 290180SN/Avoid 2915713Shsul@eecs.umich.edusc_module::next_trigger(const sc_time &t, const sc_event_and_list &eal) 2925713Shsul@eecs.umich.edu{ 2935713Shsul@eecs.umich.edu ::sc_core::next_trigger(t, eal); 2942SN/A} 2952SN/A 2962378SN/Avoid 2978601Ssteve.reinhardt@amd.comsc_module::next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 2982378SN/A{ 2997770SAli.Saidi@ARM.com ::sc_core::next_trigger(d, u, eal); 3008601Ssteve.reinhardt@amd.com} 3019007Slena@cs.wisc.edu 3023162Ssaidi@eecs.umich.edu 3032378SN/Abool 3042378SN/Asc_module::timed_out() 3055795Ssaidi@eecs.umich.edu{ 3065795Ssaidi@eecs.umich.edu warn("%s not implemented.\n", __PRETTY_FUNCTION__); 3078931Sandreas.hansson@arm.com return false; 3085795Ssaidi@eecs.umich.edu} 3098931Sandreas.hansson@arm.com 3105795Ssaidi@eecs.umich.edu 3115795Ssaidi@eecs.umich.eduvoid 3125795Ssaidi@eecs.umich.edusc_module::wait() 3138931Sandreas.hansson@arm.com{ 3145795Ssaidi@eecs.umich.edu ::sc_core::wait(); 3158931Sandreas.hansson@arm.com} 3165795Ssaidi@eecs.umich.edu 3175795Ssaidi@eecs.umich.eduvoid 3188460SAli.Saidi@ARM.comsc_module::wait(int i) 3198931Sandreas.hansson@arm.com{ 3208460SAli.Saidi@ARM.com ::sc_core::wait(i); 3218931Sandreas.hansson@arm.com} 3228460SAli.Saidi@ARM.com 3238460SAli.Saidi@ARM.comvoid 3241070SN/Asc_module::wait(const sc_event &e) 3257897Shestness@cs.utexas.edu{ 3267897Shestness@cs.utexas.edu ::sc_core::wait(e); 3277897Shestness@cs.utexas.edu} 3287897Shestness@cs.utexas.edu 3297897Shestness@cs.utexas.eduvoid 3307897Shestness@cs.utexas.edusc_module::wait(const sc_event_or_list &eol) 3317897Shestness@cs.utexas.edu{ 3321070SN/A ::sc_core::wait(eol); 3331070SN/A} 3348769Sgblack@eecs.umich.edu 3358769Sgblack@eecs.umich.eduvoid 3367770SAli.Saidi@ARM.comsc_module::wait(const sc_event_and_list &eal) 3377770SAli.Saidi@ARM.com{ 3381070SN/A ::sc_core::wait(eal); 3391070SN/A} 3401070SN/A 3411070SN/Avoid 3421070SN/Asc_module::wait(const sc_time &t) 3431070SN/A{ 3448769Sgblack@eecs.umich.edu ::sc_core::wait(t); 3458769Sgblack@eecs.umich.edu} 3467770SAli.Saidi@ARM.com 3477770SAli.Saidi@ARM.comvoid 3481070SN/Asc_module::wait(double d, sc_time_unit u) 3492SN/A{ 3502SN/A ::sc_core::wait(d, u); 3518666SPrakash.Ramrakhyani@arm.com} 3528666SPrakash.Ramrakhyani@arm.com 3538666SPrakash.Ramrakhyani@arm.comvoid 3548666SPrakash.Ramrakhyani@arm.comsc_module::wait(const sc_time &t, const sc_event &e) 3558666SPrakash.Ramrakhyani@arm.com{ 3568666SPrakash.Ramrakhyani@arm.com ::sc_core::wait(t, e); 3578666SPrakash.Ramrakhyani@arm.com} 3588666SPrakash.Ramrakhyani@arm.com 3598666SPrakash.Ramrakhyani@arm.comvoid 3608666SPrakash.Ramrakhyani@arm.comsc_module::wait(double d, sc_time_unit u, const sc_event &e) 3618666SPrakash.Ramrakhyani@arm.com{ 3628666SPrakash.Ramrakhyani@arm.com ::sc_core::wait(d, u, e); 3638666SPrakash.Ramrakhyani@arm.com} 3648666SPrakash.Ramrakhyani@arm.com 3658666SPrakash.Ramrakhyani@arm.comvoid 3668666SPrakash.Ramrakhyani@arm.comsc_module::wait(const sc_time &t, const sc_event_or_list &eol) 3678666SPrakash.Ramrakhyani@arm.com{ 3688666SPrakash.Ramrakhyani@arm.com ::sc_core::wait(t, eol); 3698666SPrakash.Ramrakhyani@arm.com} 3708666SPrakash.Ramrakhyani@arm.com 3718666SPrakash.Ramrakhyani@arm.comvoid 3728666SPrakash.Ramrakhyani@arm.comsc_module::wait(double d, sc_time_unit u, const sc_event_or_list &eol) 3738666SPrakash.Ramrakhyani@arm.com{ 3748666SPrakash.Ramrakhyani@arm.com ::sc_core::wait(d, u, eol); 3758666SPrakash.Ramrakhyani@arm.com} 3768666SPrakash.Ramrakhyani@arm.com 3778666SPrakash.Ramrakhyani@arm.comvoid 3788666SPrakash.Ramrakhyani@arm.comsc_module::wait(const sc_time &t, const sc_event_and_list &eal) 3798666SPrakash.Ramrakhyani@arm.com{ 3808666SPrakash.Ramrakhyani@arm.com ::sc_core::wait(t, eal); 3818666SPrakash.Ramrakhyani@arm.com} 3822SN/A 3832SN/Avoid 3842SN/Asc_module::wait(double d, sc_time_unit u, const sc_event_and_list &eal) 3852SN/A{ 3862SN/A ::sc_core::wait(d, u, eal); 3872SN/A} 3882SN/A 3892SN/A 3902SN/Avoid 3912SN/Asc_module::halt() 3922SN/A{ 3932SN/A ::sc_core::halt(); 3942SN/A} 3952SN/A 3962SN/Avoid 3972SN/Asc_module::at_posedge(const sc_signal_in_if<bool> &s) 3988832SAli.Saidi@ARM.com{ 3998832SAli.Saidi@ARM.com ::sc_core::at_posedge(s); 4008832SAli.Saidi@ARM.com} 4018832SAli.Saidi@ARM.com 4028832SAli.Saidi@ARM.comvoid 4038832SAli.Saidi@ARM.comsc_module::at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &s) 4048832SAli.Saidi@ARM.com{ 4058832SAli.Saidi@ARM.com ::sc_core::at_posedge(s); 4068832SAli.Saidi@ARM.com} 4078832SAli.Saidi@ARM.com 4088832SAli.Saidi@ARM.comvoid 4098832SAli.Saidi@ARM.comsc_module::at_negedge(const sc_signal_in_if<bool> &s) 4108832SAli.Saidi@ARM.com{ 4118832SAli.Saidi@ARM.com ::sc_core::at_negedge(s); 4128832SAli.Saidi@ARM.com} 4138986SAli.Saidi@ARM.com 4148986SAli.Saidi@ARM.comvoid 4158986SAli.Saidi@ARM.comsc_module::at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &s) 4168832SAli.Saidi@ARM.com{ 4178986SAli.Saidi@ARM.com ::sc_core::at_negedge(s); 4188832SAli.Saidi@ARM.com} 4198832SAli.Saidi@ARM.com 4208832SAli.Saidi@ARM.com 4218832SAli.Saidi@ARM.comvoid 4228832SAli.Saidi@ARM.comnext_trigger() 4238832SAli.Saidi@ARM.com{ 4248832SAli.Saidi@ARM.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 4258832SAli.Saidi@ARM.com p->setDynamic(nullptr); 4268832SAli.Saidi@ARM.com} 4278832SAli.Saidi@ARM.com 4288832SAli.Saidi@ARM.comvoid 4298832SAli.Saidi@ARM.comnext_trigger(const sc_event &e) 4308832SAli.Saidi@ARM.com{ 4318832SAli.Saidi@ARM.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 4328832SAli.Saidi@ARM.com p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); 4338832SAli.Saidi@ARM.com} 4348832SAli.Saidi@ARM.com 4352902Ssaidi@eecs.umich.eduvoid 4362902Ssaidi@eecs.umich.edunext_trigger(const sc_event_or_list &eol) 4372902Ssaidi@eecs.umich.edu{ 4384762Snate@binkert.org sc_gem5::Process *p = sc_gem5::scheduler.current(); 4394762Snate@binkert.org p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); 4402424SN/A} 4415530Snate@binkert.org 4422424SN/Avoid 443next_trigger(const sc_event_and_list &eal) 444{ 445 sc_gem5::Process *p = sc_gem5::scheduler.current(); 446 p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); 447} 448 449void 450next_trigger(const sc_time &t) 451{ 452 sc_gem5::Process *p = sc_gem5::scheduler.current(); 453 p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); 454} 455 456void 457next_trigger(double d, sc_time_unit u) 458{ 459 next_trigger(sc_time(d, u)); 460} 461 462void 463next_trigger(const sc_time &t, const sc_event &e) 464{ 465 sc_gem5::Process *p = sc_gem5::scheduler.current(); 466 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); 467} 468 469void 470next_trigger(double d, sc_time_unit u, const sc_event &e) 471{ 472 next_trigger(sc_time(d, u), e); 473} 474 475void 476next_trigger(const sc_time &t, const sc_event_or_list &eol) 477{ 478 sc_gem5::Process *p = sc_gem5::scheduler.current(); 479 p->setDynamic( 480 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); 481} 482 483void 484next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 485{ 486 next_trigger(sc_time(d, u), eol); 487} 488 489void 490next_trigger(const sc_time &t, const sc_event_and_list &eal) 491{ 492 sc_gem5::Process *p = sc_gem5::scheduler.current(); 493 p->setDynamic( 494 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); 495} 496 497void 498next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 499{ 500 next_trigger(sc_time(d, u), eal); 501} 502 503bool 504timed_out() 505{ 506 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 507 return false; 508} 509 510 511void 512wait() 513{ 514 sc_gem5::Process *p = sc_gem5::scheduler.current(); 515 p->setDynamic(nullptr); 516 sc_gem5::scheduler.yield(); 517} 518 519void 520wait(int n) 521{ 522 for (int i = 0; i < n; i++) 523 wait(); 524} 525 526void 527wait(const sc_event &e) 528{ 529 sc_gem5::Process *p = sc_gem5::scheduler.current(); 530 p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); 531 sc_gem5::scheduler.yield(); 532} 533 534void 535wait(const sc_event_or_list &eol) 536{ 537 sc_gem5::Process *p = sc_gem5::scheduler.current(); 538 p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); 539 sc_gem5::scheduler.yield(); 540} 541 542void 543wait(const sc_event_and_list &eal) 544{ 545 sc_gem5::Process *p = sc_gem5::scheduler.current(); 546 p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); 547 sc_gem5::scheduler.yield(); 548} 549 550void 551wait(const sc_time &t) 552{ 553 sc_gem5::Process *p = sc_gem5::scheduler.current(); 554 p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); 555 sc_gem5::scheduler.yield(); 556} 557 558void 559wait(double d, sc_time_unit u) 560{ 561 wait(sc_time(d, u)); 562} 563 564void 565wait(const sc_time &t, const sc_event &e) 566{ 567 sc_gem5::Process *p = sc_gem5::scheduler.current(); 568 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); 569 sc_gem5::scheduler.yield(); 570} 571 572void 573wait(double d, sc_time_unit u, const sc_event &e) 574{ 575 wait(sc_time(d, u), e); 576} 577 578void 579wait(const sc_time &t, const sc_event_or_list &eol) 580{ 581 sc_gem5::Process *p = sc_gem5::scheduler.current(); 582 p->setDynamic( 583 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); 584 sc_gem5::scheduler.yield(); 585} 586 587void 588wait(double d, sc_time_unit u, const sc_event_or_list &eol) 589{ 590 wait(sc_time(d, u), eol); 591} 592 593void 594wait(const sc_time &t, const sc_event_and_list &eal) 595{ 596 sc_gem5::Process *p = sc_gem5::scheduler.current(); 597 p->setDynamic( 598 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); 599 sc_gem5::scheduler.yield(); 600} 601 602void 603wait(double d, sc_time_unit u, const sc_event_and_list &eal) 604{ 605 wait(sc_time(d, u), eal); 606} 607 608void 609halt() 610{ 611 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 612} 613 614void 615at_posedge(const sc_signal_in_if<bool> &) 616{ 617 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 618} 619 620void 621at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &) 622{ 623 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 624} 625 626void 627at_negedge(const sc_signal_in_if<bool> &) 628{ 629 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 630} 631 632void 633at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &) 634{ 635 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 636} 637 638const char * 639sc_gen_unique_name(const char *) 640{ 641 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 642 return ""; 643} 644 645bool 646sc_hierarchical_name_exists(const char *name) 647{ 648 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 649 return false; 650} 651 652bool 653sc_start_of_simulation_invoked() 654{ 655 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 656 return false; 657} 658 659bool 660sc_end_of_simulation_invoked() 661{ 662 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 663 return false; 664} 665 666sc_module * 667sc_module_sc_new(sc_module *mod) 668{ 669 static std::vector<std::unique_ptr<sc_module> > modules; 670 modules.emplace_back(mod); 671 return mod; 672} 673 674} // namespace sc_core 675