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