sc_module.cc revision 13189
113531Sjairo.balart@metempsy.com/*
213531Sjairo.balart@metempsy.com * Copyright 2018 Google, Inc.
313531Sjairo.balart@metempsy.com *
413531Sjairo.balart@metempsy.com * Redistribution and use in source and binary forms, with or without
513531Sjairo.balart@metempsy.com * modification, are permitted provided that the following conditions are
613531Sjairo.balart@metempsy.com * met: redistributions of source code must retain the above copyright
713531Sjairo.balart@metempsy.com * notice, this list of conditions and the following disclaimer;
813531Sjairo.balart@metempsy.com * redistributions in binary form must reproduce the above copyright
913531Sjairo.balart@metempsy.com * notice, this list of conditions and the following disclaimer in the
1013531Sjairo.balart@metempsy.com * documentation and/or other materials provided with the distribution;
1113531Sjairo.balart@metempsy.com * neither the name of the copyright holders nor the names of its
1213531Sjairo.balart@metempsy.com * contributors may be used to endorse or promote products derived from
1313531Sjairo.balart@metempsy.com * this software without specific prior written permission.
1413531Sjairo.balart@metempsy.com *
1513531Sjairo.balart@metempsy.com * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1613531Sjairo.balart@metempsy.com * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1713531Sjairo.balart@metempsy.com * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1813531Sjairo.balart@metempsy.com * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
1913531Sjairo.balart@metempsy.com * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2013531Sjairo.balart@metempsy.com * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2113531Sjairo.balart@metempsy.com * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2213531Sjairo.balart@metempsy.com * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2313531Sjairo.balart@metempsy.com * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2413531Sjairo.balart@metempsy.com * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2513531Sjairo.balart@metempsy.com * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2613531Sjairo.balart@metempsy.com *
2713531Sjairo.balart@metempsy.com * Authors: Gabe Black
2813531Sjairo.balart@metempsy.com */
2913531Sjairo.balart@metempsy.com
3013531Sjairo.balart@metempsy.com#include <memory>
3113531Sjairo.balart@metempsy.com#include <string>
3213531Sjairo.balart@metempsy.com#include <vector>
3313531Sjairo.balart@metempsy.com
3413531Sjairo.balart@metempsy.com#include "base/logging.hh"
3513531Sjairo.balart@metempsy.com#include "systemc/core/kernel.hh"
3613531Sjairo.balart@metempsy.com#include "systemc/core/module.hh"
3713531Sjairo.balart@metempsy.com#include "systemc/core/process_types.hh"
3813531Sjairo.balart@metempsy.com#include "systemc/ext/channel/sc_signal_in_if.hh"
3913531Sjairo.balart@metempsy.com#include "systemc/ext/core/sc_module.hh"
4013531Sjairo.balart@metempsy.com#include "systemc/ext/core/sc_module_name.hh"
4113531Sjairo.balart@metempsy.com#include "systemc/ext/dt/bit/sc_logic.hh"
4213531Sjairo.balart@metempsy.com#include "systemc/ext/utils/sc_report_handler.hh"
4313531Sjairo.balart@metempsy.com
4413531Sjairo.balart@metempsy.comnamespace sc_gem5
4513531Sjairo.balart@metempsy.com{
4613531Sjairo.balart@metempsy.com
4713531Sjairo.balart@metempsy.comProcess *
4813531Sjairo.balart@metempsy.comnewMethodProcess(const char *name, ProcessFuncWrapper *func)
4913531Sjairo.balart@metempsy.com{
5013531Sjairo.balart@metempsy.com    Method *p = new Method(name, func);
5113531Sjairo.balart@metempsy.com    if (::sc_core::sc_is_running()) {
5213531Sjairo.balart@metempsy.com        std::string name = p->name();
5313531Sjairo.balart@metempsy.com        delete p;
5413531Sjairo.balart@metempsy.com        SC_REPORT_ERROR("(E541) call to SC_METHOD in sc_module while "
5513531Sjairo.balart@metempsy.com                "simulation running", name.c_str());
5613531Sjairo.balart@metempsy.com        return nullptr;
5713531Sjairo.balart@metempsy.com    }
5813531Sjairo.balart@metempsy.com    scheduler.reg(p);
5913531Sjairo.balart@metempsy.com    return p;
6013531Sjairo.balart@metempsy.com}
6113531Sjairo.balart@metempsy.com
6213531Sjairo.balart@metempsy.comProcess *
6313531Sjairo.balart@metempsy.comnewThreadProcess(const char *name, ProcessFuncWrapper *func)
6413531Sjairo.balart@metempsy.com{
6513531Sjairo.balart@metempsy.com    Thread *p = new Thread(name, func);
6613531Sjairo.balart@metempsy.com    if (::sc_core::sc_is_running()) {
6713826Sgiacomo.travaglini@arm.com        std::string name = p->name();
6813826Sgiacomo.travaglini@arm.com        delete p;
6913826Sgiacomo.travaglini@arm.com        SC_REPORT_ERROR("(E542) call to SC_THREAD in sc_module while "
7013826Sgiacomo.travaglini@arm.com                "simulation running", name.c_str());
7113826Sgiacomo.travaglini@arm.com        return nullptr;
7213826Sgiacomo.travaglini@arm.com    }
7313531Sjairo.balart@metempsy.com    scheduler.reg(p);
7413760Sjairo.balart@metempsy.com    return p;
7513531Sjairo.balart@metempsy.com}
7613531Sjairo.balart@metempsy.com
7713531Sjairo.balart@metempsy.comProcess *
7813531Sjairo.balart@metempsy.comnewCThreadProcess(const char *name, ProcessFuncWrapper *func)
7913531Sjairo.balart@metempsy.com{
8013531Sjairo.balart@metempsy.com    CThread *p = new CThread(name, func);
8113531Sjairo.balart@metempsy.com    if (::sc_core::sc_is_running()) {
8213531Sjairo.balart@metempsy.com        std::string name = p->name();
8313531Sjairo.balart@metempsy.com        delete p;
8413531Sjairo.balart@metempsy.com        SC_REPORT_ERROR("(E543) call to SC_CTHREAD in sc_module while "
8513531Sjairo.balart@metempsy.com                "simulation running", name.c_str());
8613531Sjairo.balart@metempsy.com        return nullptr;
8713531Sjairo.balart@metempsy.com    }
8813760Sjairo.balart@metempsy.com    scheduler.reg(p);
8913531Sjairo.balart@metempsy.com    p->dontInitialize();
9013531Sjairo.balart@metempsy.com    return p;
9113531Sjairo.balart@metempsy.com}
9213531Sjairo.balart@metempsy.com
9313531Sjairo.balart@metempsy.comUniqueNameGen nameGen;
9413531Sjairo.balart@metempsy.com
9513531Sjairo.balart@metempsy.com} // namespace sc_gem5
9613531Sjairo.balart@metempsy.com
9713531Sjairo.balart@metempsy.comnamespace sc_core
9813531Sjairo.balart@metempsy.com{
9913531Sjairo.balart@metempsy.com
10013531Sjairo.balart@metempsy.comsc_bind_proxy::sc_bind_proxy(sc_interface &_interface) :
10113580Sgabeblack@google.com    _interface(&_interface), _port(nullptr)
10213531Sjairo.balart@metempsy.com{}
10313531Sjairo.balart@metempsy.com
10413580Sgabeblack@google.comsc_bind_proxy::sc_bind_proxy(sc_port_base &_port) :
10513531Sjairo.balart@metempsy.com    _interface(nullptr), _port(&_port)
10613531Sjairo.balart@metempsy.com{}
10713531Sjairo.balart@metempsy.com
10813531Sjairo.balart@metempsy.comconst sc_bind_proxy SC_BIND_PROXY_NUL(*(sc_port_base *)nullptr);
10913760Sjairo.balart@metempsy.com
11013531Sjairo.balart@metempsy.comsc_module::~sc_module() { delete _gem5_module; }
11113531Sjairo.balart@metempsy.com
11213531Sjairo.balart@metempsy.comconst sc_bind_proxy SC_BIND_PROXY_NIL(*(sc_port_base *)nullptr);
11313531Sjairo.balart@metempsy.com
11413531Sjairo.balart@metempsy.comvoid
11513531Sjairo.balart@metempsy.comsc_module::operator () (const sc_bind_proxy &p001,
11613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p002,
11713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p003,
11813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p004,
11913531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p005,
12013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p006,
12113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p007,
12213531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p008,
12313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p009,
12413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p010,
12513531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p011,
12613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p012,
12713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p013,
12813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p014,
12913531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p015,
13013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p016,
13113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p017,
13213760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p018,
13313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p019,
13413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p020,
13513531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p021,
13613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p022,
13713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p023,
13813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p024,
13913531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p025,
14013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p026,
14113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p027,
14213531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p028,
14313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p029,
14413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p030,
14513531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p031,
14613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p032,
14713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p033,
14813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p034,
14913531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p035,
15013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p036,
15113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p037,
15213531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p038,
15313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p039,
15413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p040,
15513760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p041,
15613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p042,
15713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p043,
15813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p044,
15913760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p045,
16013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p046,
16113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p047,
16213531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p048,
16313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p049,
16413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p050,
16513760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p051,
16613531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p052,
16713531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p053,
16813531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p054,
16913760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p055,
17013531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p056,
17113531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p057,
17213531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p058,
17313531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p059,
17413531Sjairo.balart@metempsy.com                        const sc_bind_proxy &p060,
17513760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p061,
17613760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p062,
17713760Sjairo.balart@metempsy.com                        const sc_bind_proxy &p063,
17813739Sgiacomo.travaglini@arm.com                        const sc_bind_proxy &p064)
17913760Sjairo.balart@metempsy.com{
18013760Sjairo.balart@metempsy.com    std::vector<const ::sc_core::sc_bind_proxy *> proxies;
18113531Sjairo.balart@metempsy.com    auto insert = [&proxies](const ::sc_core::sc_bind_proxy &p) -> bool {
18213531Sjairo.balart@metempsy.com        if (!p.port() && !p.interface())
18313531Sjairo.balart@metempsy.com            return false;
18413760Sjairo.balart@metempsy.com        proxies.push_back(&p);
18513531Sjairo.balart@metempsy.com        return true;
18613531Sjairo.balart@metempsy.com    };
18713531Sjairo.balart@metempsy.com    insert(p001) && insert(p002) && insert(p003) && insert(p004) &&
18813531Sjairo.balart@metempsy.com    insert(p005) && insert(p006) && insert(p007) && insert(p008) &&
18913531Sjairo.balart@metempsy.com    insert(p009) && insert(p010) && insert(p011) && insert(p012) &&
19013531Sjairo.balart@metempsy.com    insert(p013) && insert(p014) && insert(p015) && insert(p016) &&
19113760Sjairo.balart@metempsy.com    insert(p017) && insert(p018) && insert(p019) && insert(p020) &&
19213760Sjairo.balart@metempsy.com    insert(p021) && insert(p022) && insert(p023) && insert(p024) &&
19313760Sjairo.balart@metempsy.com    insert(p025) && insert(p026) && insert(p027) && insert(p028) &&
19413531Sjairo.balart@metempsy.com    insert(p029) && insert(p030) && insert(p031) && insert(p032) &&
19513760Sjairo.balart@metempsy.com    insert(p033) && insert(p034) && insert(p035) && insert(p036) &&
19613760Sjairo.balart@metempsy.com    insert(p037) && insert(p038) && insert(p039) && insert(p040) &&
19713531Sjairo.balart@metempsy.com    insert(p041) && insert(p042) && insert(p043) && insert(p044) &&
19813531Sjairo.balart@metempsy.com    insert(p045) && insert(p046) && insert(p047) && insert(p048) &&
19913760Sjairo.balart@metempsy.com    insert(p049) && insert(p050) && insert(p051) && insert(p052) &&
20013760Sjairo.balart@metempsy.com    insert(p053) && insert(p054) && insert(p055) && insert(p056) &&
20113760Sjairo.balart@metempsy.com    insert(p057) && insert(p058) && insert(p059) && insert(p060) &&
20213531Sjairo.balart@metempsy.com    insert(p061) && insert(p062) && insert(p063) && insert(p064);
20313531Sjairo.balart@metempsy.com    _gem5_module->bindPorts(proxies);
20413531Sjairo.balart@metempsy.com}
20513531Sjairo.balart@metempsy.com
20613531Sjairo.balart@metempsy.comconst std::vector<sc_object *> &
20713531Sjairo.balart@metempsy.comsc_module::get_child_objects() const
20813531Sjairo.balart@metempsy.com{
20913531Sjairo.balart@metempsy.com    return _gem5_module->obj()->get_child_objects();
21013760Sjairo.balart@metempsy.com}
21113531Sjairo.balart@metempsy.com
21213531Sjairo.balart@metempsy.comconst std::vector<sc_event *> &
21313531Sjairo.balart@metempsy.comsc_module::get_child_events() const
21413531Sjairo.balart@metempsy.com{
21513531Sjairo.balart@metempsy.com    return _gem5_module->obj()->get_child_events();
21613760Sjairo.balart@metempsy.com}
21713531Sjairo.balart@metempsy.com
21813531Sjairo.balart@metempsy.comsc_module::sc_module() :
21913531Sjairo.balart@metempsy.com    sc_object(sc_gem5::newModuleChecked()->name()),
22013531Sjairo.balart@metempsy.com    _gem5_module(sc_gem5::currentModule())
22113531Sjairo.balart@metempsy.com{}
22213531Sjairo.balart@metempsy.com
22313531Sjairo.balart@metempsy.comsc_module::sc_module(const sc_module_name &) : sc_module() {}
22413531Sjairo.balart@metempsy.comsc_module::sc_module(const char *_name) : sc_module(sc_module_name(_name)) {}
22513531Sjairo.balart@metempsy.comsc_module::sc_module(const std::string &_name) :
22613531Sjairo.balart@metempsy.com    sc_module(sc_module_name(_name.c_str()))
22713760Sjairo.balart@metempsy.com{}
22813531Sjairo.balart@metempsy.com
22913531Sjairo.balart@metempsy.comvoid
23013531Sjairo.balart@metempsy.comsc_module::reset_signal_is(const sc_in<bool> &, bool)
23113531Sjairo.balart@metempsy.com{
23213531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
23313760Sjairo.balart@metempsy.com}
23413531Sjairo.balart@metempsy.com
23513531Sjairo.balart@metempsy.comvoid
23613760Sjairo.balart@metempsy.comsc_module::reset_signal_is(const sc_inout<bool> &, bool)
23713531Sjairo.balart@metempsy.com{
23813531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
23913760Sjairo.balart@metempsy.com}
24013531Sjairo.balart@metempsy.com
24113531Sjairo.balart@metempsy.comvoid
24213531Sjairo.balart@metempsy.comsc_module::reset_signal_is(const sc_out<bool> &, bool)
24313531Sjairo.balart@metempsy.com{
24413531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
24513531Sjairo.balart@metempsy.com}
24613760Sjairo.balart@metempsy.com
24713531Sjairo.balart@metempsy.comvoid
24813531Sjairo.balart@metempsy.comsc_module::reset_signal_is(const sc_signal_in_if<bool> &, bool)
24913531Sjairo.balart@metempsy.com{
25013531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
25113531Sjairo.balart@metempsy.com}
25213531Sjairo.balart@metempsy.com
25313531Sjairo.balart@metempsy.com
25413531Sjairo.balart@metempsy.comvoid
25513531Sjairo.balart@metempsy.comsc_module::async_reset_signal_is(const sc_in<bool> &, bool)
25613531Sjairo.balart@metempsy.com{
25713760Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
25813531Sjairo.balart@metempsy.com}
25913531Sjairo.balart@metempsy.com
26013531Sjairo.balart@metempsy.comvoid
26113531Sjairo.balart@metempsy.comsc_module::async_reset_signal_is(const sc_inout<bool> &, bool)
26213531Sjairo.balart@metempsy.com{
26313760Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
26413531Sjairo.balart@metempsy.com}
26513531Sjairo.balart@metempsy.com
26613760Sjairo.balart@metempsy.comvoid
26713531Sjairo.balart@metempsy.comsc_module::async_reset_signal_is(const sc_out<bool> &, bool)
26813531Sjairo.balart@metempsy.com{
26913760Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
27013531Sjairo.balart@metempsy.com}
27113531Sjairo.balart@metempsy.com
27213531Sjairo.balart@metempsy.comvoid
27313531Sjairo.balart@metempsy.comsc_module::async_reset_signal_is(const sc_signal_in_if<bool> &, bool)
27413531Sjairo.balart@metempsy.com{
27513531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
27613760Sjairo.balart@metempsy.com}
27713531Sjairo.balart@metempsy.com
27813531Sjairo.balart@metempsy.com
27913531Sjairo.balart@metempsy.comvoid
28013531Sjairo.balart@metempsy.comsc_module::dont_initialize()
28113531Sjairo.balart@metempsy.com{
28213531Sjairo.balart@metempsy.com    ::sc_gem5::Process::newest()->dontInitialize();
28313531Sjairo.balart@metempsy.com}
28413531Sjairo.balart@metempsy.com
28513760Sjairo.balart@metempsy.comvoid
28613531Sjairo.balart@metempsy.comsc_module::set_stack_size(size_t size)
28713760Sjairo.balart@metempsy.com{
28813760Sjairo.balart@metempsy.com    ::sc_gem5::Process::newest()->setStackSize(size);
28913760Sjairo.balart@metempsy.com}
29013760Sjairo.balart@metempsy.com
29113760Sjairo.balart@metempsy.com
29213531Sjairo.balart@metempsy.comvoid sc_module::next_trigger() { ::sc_core::next_trigger(); }
29313531Sjairo.balart@metempsy.com
29413531Sjairo.balart@metempsy.comvoid
29513531Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_event &e)
29613531Sjairo.balart@metempsy.com{
29713531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(e);
29813531Sjairo.balart@metempsy.com}
29913760Sjairo.balart@metempsy.com
30013760Sjairo.balart@metempsy.comvoid
30113760Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_event_or_list &eol)
30213760Sjairo.balart@metempsy.com{
30313760Sjairo.balart@metempsy.com    ::sc_core::next_trigger(eol);
30413531Sjairo.balart@metempsy.com}
30513531Sjairo.balart@metempsy.com
30613531Sjairo.balart@metempsy.comvoid
30713531Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_event_and_list &eal)
30813531Sjairo.balart@metempsy.com{
30913760Sjairo.balart@metempsy.com    ::sc_core::next_trigger(eal);
31013760Sjairo.balart@metempsy.com}
31113760Sjairo.balart@metempsy.com
31213760Sjairo.balart@metempsy.comvoid
31313760Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_time &t)
31413531Sjairo.balart@metempsy.com{
31513531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(t);
31613531Sjairo.balart@metempsy.com}
31713531Sjairo.balart@metempsy.com
31813531Sjairo.balart@metempsy.comvoid
31913531Sjairo.balart@metempsy.comsc_module::next_trigger(double d, sc_time_unit u)
32013531Sjairo.balart@metempsy.com{
32113531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(d, u);
32213531Sjairo.balart@metempsy.com}
32313531Sjairo.balart@metempsy.com
32413531Sjairo.balart@metempsy.comvoid
32513531Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_time &t, const sc_event &e)
32613531Sjairo.balart@metempsy.com{
32713531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(t, e);
32813531Sjairo.balart@metempsy.com}
32913531Sjairo.balart@metempsy.com
33013531Sjairo.balart@metempsy.comvoid
33113531Sjairo.balart@metempsy.comsc_module::next_trigger(double d, sc_time_unit u, const sc_event &e)
33213531Sjairo.balart@metempsy.com{
33313531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(d, u, e);
33413531Sjairo.balart@metempsy.com}
33513531Sjairo.balart@metempsy.com
33613531Sjairo.balart@metempsy.comvoid
33713760Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_time &t, const sc_event_or_list &eol)
33813760Sjairo.balart@metempsy.com{
33913760Sjairo.balart@metempsy.com    ::sc_core::next_trigger(t, eol);
34013531Sjairo.balart@metempsy.com}
34113531Sjairo.balart@metempsy.com
34213531Sjairo.balart@metempsy.comvoid
34313531Sjairo.balart@metempsy.comsc_module::next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol)
34413760Sjairo.balart@metempsy.com{
34513531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(d, u, eol);
34613531Sjairo.balart@metempsy.com}
34713531Sjairo.balart@metempsy.com
34813760Sjairo.balart@metempsy.comvoid
34913760Sjairo.balart@metempsy.comsc_module::next_trigger(const sc_time &t, const sc_event_and_list &eal)
35013531Sjairo.balart@metempsy.com{
35113531Sjairo.balart@metempsy.com    ::sc_core::next_trigger(t, eal);
35213531Sjairo.balart@metempsy.com}
35313531Sjairo.balart@metempsy.com
35413531Sjairo.balart@metempsy.comvoid
35513531Sjairo.balart@metempsy.comsc_module::next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal)
35613531Sjairo.balart@metempsy.com{
35713760Sjairo.balart@metempsy.com    ::sc_core::next_trigger(d, u, eal);
35813531Sjairo.balart@metempsy.com}
35913760Sjairo.balart@metempsy.com
36013531Sjairo.balart@metempsy.com
36113531Sjairo.balart@metempsy.combool
36213531Sjairo.balart@metempsy.comsc_module::timed_out()
36313531Sjairo.balart@metempsy.com{
36413531Sjairo.balart@metempsy.com    return ::sc_core::timed_out();
36513531Sjairo.balart@metempsy.com}
36613531Sjairo.balart@metempsy.com
36713531Sjairo.balart@metempsy.com
36813531Sjairo.balart@metempsy.comvoid
36913531Sjairo.balart@metempsy.comsc_module::wait()
37013531Sjairo.balart@metempsy.com{
37113531Sjairo.balart@metempsy.com    ::sc_core::wait();
37213531Sjairo.balart@metempsy.com}
37313531Sjairo.balart@metempsy.com
37413760Sjairo.balart@metempsy.comvoid
37513531Sjairo.balart@metempsy.comsc_module::wait(int i)
37613760Sjairo.balart@metempsy.com{
37713760Sjairo.balart@metempsy.com    ::sc_core::wait(i);
37813760Sjairo.balart@metempsy.com}
37913531Sjairo.balart@metempsy.com
38013531Sjairo.balart@metempsy.comvoid
38113531Sjairo.balart@metempsy.comsc_module::wait(const sc_event &e)
38213760Sjairo.balart@metempsy.com{
38313760Sjairo.balart@metempsy.com    ::sc_core::wait(e);
38413760Sjairo.balart@metempsy.com}
38513531Sjairo.balart@metempsy.com
38613760Sjairo.balart@metempsy.comvoid
38713760Sjairo.balart@metempsy.comsc_module::wait(const sc_event_or_list &eol)
38813531Sjairo.balart@metempsy.com{
38913531Sjairo.balart@metempsy.com    ::sc_core::wait(eol);
39013760Sjairo.balart@metempsy.com}
39113760Sjairo.balart@metempsy.com
39213760Sjairo.balart@metempsy.comvoid
39313531Sjairo.balart@metempsy.comsc_module::wait(const sc_event_and_list &eal)
39413531Sjairo.balart@metempsy.com{
39513531Sjairo.balart@metempsy.com    ::sc_core::wait(eal);
39613531Sjairo.balart@metempsy.com}
39713531Sjairo.balart@metempsy.com
39813531Sjairo.balart@metempsy.comvoid
39913760Sjairo.balart@metempsy.comsc_module::wait(const sc_time &t)
40013531Sjairo.balart@metempsy.com{
40113760Sjairo.balart@metempsy.com    ::sc_core::wait(t);
40213531Sjairo.balart@metempsy.com}
40313531Sjairo.balart@metempsy.com
40413531Sjairo.balart@metempsy.comvoid
40513531Sjairo.balart@metempsy.comsc_module::wait(double d, sc_time_unit u)
40613531Sjairo.balart@metempsy.com{
40713531Sjairo.balart@metempsy.com    ::sc_core::wait(d, u);
40813531Sjairo.balart@metempsy.com}
40913531Sjairo.balart@metempsy.com
41013531Sjairo.balart@metempsy.comvoid
41113531Sjairo.balart@metempsy.comsc_module::wait(const sc_time &t, const sc_event &e)
41213923Sgiacomo.travaglini@arm.com{
41313923Sgiacomo.travaglini@arm.com    ::sc_core::wait(t, e);
41413531Sjairo.balart@metempsy.com}
41513531Sjairo.balart@metempsy.com
41613531Sjairo.balart@metempsy.comvoid
41713531Sjairo.balart@metempsy.comsc_module::wait(double d, sc_time_unit u, const sc_event &e)
41813531Sjairo.balart@metempsy.com{
41913531Sjairo.balart@metempsy.com    ::sc_core::wait(d, u, e);
42013531Sjairo.balart@metempsy.com}
42113531Sjairo.balart@metempsy.com
42213531Sjairo.balart@metempsy.comvoid
42313531Sjairo.balart@metempsy.comsc_module::wait(const sc_time &t, const sc_event_or_list &eol)
42413760Sjairo.balart@metempsy.com{
42513531Sjairo.balart@metempsy.com    ::sc_core::wait(t, eol);
42613531Sjairo.balart@metempsy.com}
42713531Sjairo.balart@metempsy.com
42813531Sjairo.balart@metempsy.comvoid
42913531Sjairo.balart@metempsy.comsc_module::wait(double d, sc_time_unit u, const sc_event_or_list &eol)
43013760Sjairo.balart@metempsy.com{
43113531Sjairo.balart@metempsy.com    ::sc_core::wait(d, u, eol);
43213531Sjairo.balart@metempsy.com}
43313760Sjairo.balart@metempsy.com
43413760Sjairo.balart@metempsy.comvoid
43513531Sjairo.balart@metempsy.comsc_module::wait(const sc_time &t, const sc_event_and_list &eal)
43613531Sjairo.balart@metempsy.com{
43713760Sjairo.balart@metempsy.com    ::sc_core::wait(t, eal);
43813531Sjairo.balart@metempsy.com}
43913531Sjairo.balart@metempsy.com
44013531Sjairo.balart@metempsy.comvoid
44113531Sjairo.balart@metempsy.comsc_module::wait(double d, sc_time_unit u, const sc_event_and_list &eal)
44213531Sjairo.balart@metempsy.com{
44313760Sjairo.balart@metempsy.com    ::sc_core::wait(d, u, eal);
44413531Sjairo.balart@metempsy.com}
44513760Sjairo.balart@metempsy.com
44613531Sjairo.balart@metempsy.com
44713531Sjairo.balart@metempsy.comvoid
44813531Sjairo.balart@metempsy.comsc_module::halt()
44913531Sjairo.balart@metempsy.com{
45013531Sjairo.balart@metempsy.com    ::sc_core::halt();
45113531Sjairo.balart@metempsy.com}
45213531Sjairo.balart@metempsy.com
45313531Sjairo.balart@metempsy.comvoid
45413531Sjairo.balart@metempsy.comsc_module::at_posedge(const sc_signal_in_if<bool> &s)
45513760Sjairo.balart@metempsy.com{
45613531Sjairo.balart@metempsy.com    ::sc_core::at_posedge(s);
45713760Sjairo.balart@metempsy.com}
45813531Sjairo.balart@metempsy.com
45913531Sjairo.balart@metempsy.comvoid
46013531Sjairo.balart@metempsy.comsc_module::at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
46113531Sjairo.balart@metempsy.com{
46213531Sjairo.balart@metempsy.com    ::sc_core::at_posedge(s);
46313531Sjairo.balart@metempsy.com}
46413531Sjairo.balart@metempsy.com
46513531Sjairo.balart@metempsy.comvoid
46613531Sjairo.balart@metempsy.comsc_module::at_negedge(const sc_signal_in_if<bool> &s)
46713531Sjairo.balart@metempsy.com{
46813923Sgiacomo.travaglini@arm.com    ::sc_core::at_negedge(s);
46913923Sgiacomo.travaglini@arm.com}
47013531Sjairo.balart@metempsy.com
47113531Sjairo.balart@metempsy.comvoid
47213531Sjairo.balart@metempsy.comsc_module::at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
47313531Sjairo.balart@metempsy.com{
47413531Sjairo.balart@metempsy.com    ::sc_core::at_negedge(s);
47513531Sjairo.balart@metempsy.com}
47613531Sjairo.balart@metempsy.com
47713531Sjairo.balart@metempsy.com
47813531Sjairo.balart@metempsy.comvoid
47913531Sjairo.balart@metempsy.comnext_trigger()
48013760Sjairo.balart@metempsy.com{
48113531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
48213531Sjairo.balart@metempsy.com    p->setDynamic(nullptr);
48313531Sjairo.balart@metempsy.com}
48413531Sjairo.balart@metempsy.com
48513531Sjairo.balart@metempsy.comvoid
48613760Sjairo.balart@metempsy.comnext_trigger(const sc_event &e)
48713531Sjairo.balart@metempsy.com{
48813531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
48913760Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e));
49013760Sjairo.balart@metempsy.com}
49113531Sjairo.balart@metempsy.com
49213531Sjairo.balart@metempsy.comvoid
49313760Sjairo.balart@metempsy.comnext_trigger(const sc_event_or_list &eol)
49413531Sjairo.balart@metempsy.com{
49513531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
49613531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol));
49713531Sjairo.balart@metempsy.com}
49813531Sjairo.balart@metempsy.com
49913760Sjairo.balart@metempsy.comvoid
50013531Sjairo.balart@metempsy.comnext_trigger(const sc_event_and_list &eal)
50113760Sjairo.balart@metempsy.com{
50213531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
50313531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal));
50413531Sjairo.balart@metempsy.com}
50513531Sjairo.balart@metempsy.com
50613531Sjairo.balart@metempsy.comvoid
50713531Sjairo.balart@metempsy.comnext_trigger(const sc_time &t)
50813531Sjairo.balart@metempsy.com{
50913531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
51013531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t));
51113760Sjairo.balart@metempsy.com}
51213531Sjairo.balart@metempsy.com
51313760Sjairo.balart@metempsy.comvoid
51413531Sjairo.balart@metempsy.comnext_trigger(double d, sc_time_unit u)
51513531Sjairo.balart@metempsy.com{
51613531Sjairo.balart@metempsy.com    next_trigger(sc_time(d, u));
51713531Sjairo.balart@metempsy.com}
51813531Sjairo.balart@metempsy.com
51913760Sjairo.balart@metempsy.comvoid
52013760Sjairo.balart@metempsy.comnext_trigger(const sc_time &t, const sc_event &e)
52113760Sjairo.balart@metempsy.com{
52213760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
52313760Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e));
52413760Sjairo.balart@metempsy.com}
52513760Sjairo.balart@metempsy.com
52613760Sjairo.balart@metempsy.comvoid
52713760Sjairo.balart@metempsy.comnext_trigger(double d, sc_time_unit u, const sc_event &e)
52813760Sjairo.balart@metempsy.com{
52913760Sjairo.balart@metempsy.com    next_trigger(sc_time(d, u), e);
53013531Sjairo.balart@metempsy.com}
53113531Sjairo.balart@metempsy.com
53213760Sjairo.balart@metempsy.comvoid
53313531Sjairo.balart@metempsy.comnext_trigger(const sc_time &t, const sc_event_or_list &eol)
53413531Sjairo.balart@metempsy.com{
53513531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
53613531Sjairo.balart@metempsy.com    p->setDynamic(
53713760Sjairo.balart@metempsy.com            new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol));
53813760Sjairo.balart@metempsy.com}
53913760Sjairo.balart@metempsy.com
54013760Sjairo.balart@metempsy.comvoid
54113760Sjairo.balart@metempsy.comnext_trigger(double d, sc_time_unit u, const sc_event_or_list &eol)
54213760Sjairo.balart@metempsy.com{
54313531Sjairo.balart@metempsy.com    next_trigger(sc_time(d, u), eol);
54413760Sjairo.balart@metempsy.com}
54513760Sjairo.balart@metempsy.com
54613760Sjairo.balart@metempsy.comvoid
54713760Sjairo.balart@metempsy.comnext_trigger(const sc_time &t, const sc_event_and_list &eal)
54813760Sjairo.balart@metempsy.com{
54913760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
55013760Sjairo.balart@metempsy.com    p->setDynamic(
55113760Sjairo.balart@metempsy.com            new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal));
55213760Sjairo.balart@metempsy.com}
55313760Sjairo.balart@metempsy.com
55413760Sjairo.balart@metempsy.comvoid
55513760Sjairo.balart@metempsy.comnext_trigger(double d, sc_time_unit u, const sc_event_and_list &eal)
55613760Sjairo.balart@metempsy.com{
55713760Sjairo.balart@metempsy.com    next_trigger(sc_time(d, u), eal);
55813760Sjairo.balart@metempsy.com}
55913760Sjairo.balart@metempsy.com
56013760Sjairo.balart@metempsy.combool
56113760Sjairo.balart@metempsy.comtimed_out()
56213760Sjairo.balart@metempsy.com{
56313760Sjairo.balart@metempsy.com    ::sc_gem5::Process *p = sc_gem5::scheduler.current();
56413760Sjairo.balart@metempsy.com    if (!p)
56513760Sjairo.balart@metempsy.com        return false;
56613760Sjairo.balart@metempsy.com    else
56713760Sjairo.balart@metempsy.com        return p->timedOut();
56813531Sjairo.balart@metempsy.com}
56913760Sjairo.balart@metempsy.com
57013760Sjairo.balart@metempsy.com
57113531Sjairo.balart@metempsy.comvoid
57213531Sjairo.balart@metempsy.comwait()
57313531Sjairo.balart@metempsy.com{
57413760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
57513760Sjairo.balart@metempsy.com    p->setDynamic(nullptr);
57613760Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
57713760Sjairo.balart@metempsy.com}
57813760Sjairo.balart@metempsy.com
57913760Sjairo.balart@metempsy.comvoid
58013531Sjairo.balart@metempsy.comwait(int n)
58113531Sjairo.balart@metempsy.com{
58213760Sjairo.balart@metempsy.com    if (n <= 0) {
58313760Sjairo.balart@metempsy.com        std::string msg = csprintf("n = %d", n);
58413760Sjairo.balart@metempsy.com        SC_REPORT_ERROR("(E525) wait(n) is only valid for n > 0", msg.c_str());
58513760Sjairo.balart@metempsy.com    }
58613760Sjairo.balart@metempsy.com    for (int i = 0; i < n; i++)
58713760Sjairo.balart@metempsy.com        wait();
58813760Sjairo.balart@metempsy.com}
58913760Sjairo.balart@metempsy.com
59013531Sjairo.balart@metempsy.comvoid
59113531Sjairo.balart@metempsy.comwait(const sc_event &e)
59213531Sjairo.balart@metempsy.com{
59313760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
59413531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e));
59513760Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
59613760Sjairo.balart@metempsy.com}
59713760Sjairo.balart@metempsy.com
59813760Sjairo.balart@metempsy.comvoid
59913760Sjairo.balart@metempsy.comwait(const sc_event_or_list &eol)
60013760Sjairo.balart@metempsy.com{
60113760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
60213531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol));
60313531Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
60413531Sjairo.balart@metempsy.com}
60513760Sjairo.balart@metempsy.com
60613531Sjairo.balart@metempsy.comvoid
60713531Sjairo.balart@metempsy.comwait(const sc_event_and_list &eal)
60813760Sjairo.balart@metempsy.com{
60913760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
61013760Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal));
61113760Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
61213760Sjairo.balart@metempsy.com}
61313760Sjairo.balart@metempsy.com
61413760Sjairo.balart@metempsy.comvoid
61513531Sjairo.balart@metempsy.comwait(const sc_time &t)
61613531Sjairo.balart@metempsy.com{
61713760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
61813760Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t));
61913760Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
62013760Sjairo.balart@metempsy.com}
62113760Sjairo.balart@metempsy.com
62213760Sjairo.balart@metempsy.comvoid
62313760Sjairo.balart@metempsy.comwait(double d, sc_time_unit u)
62413760Sjairo.balart@metempsy.com{
62513760Sjairo.balart@metempsy.com    wait(sc_time(d, u));
62613531Sjairo.balart@metempsy.com}
62713531Sjairo.balart@metempsy.com
62813531Sjairo.balart@metempsy.comvoid
62913760Sjairo.balart@metempsy.comwait(const sc_time &t, const sc_event &e)
63013531Sjairo.balart@metempsy.com{
63113531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
63213531Sjairo.balart@metempsy.com    p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e));
63313531Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
63413760Sjairo.balart@metempsy.com}
63513531Sjairo.balart@metempsy.com
63613531Sjairo.balart@metempsy.comvoid
63713531Sjairo.balart@metempsy.comwait(double d, sc_time_unit u, const sc_event &e)
63813531Sjairo.balart@metempsy.com{
63913760Sjairo.balart@metempsy.com    wait(sc_time(d, u), e);
64013531Sjairo.balart@metempsy.com}
64113531Sjairo.balart@metempsy.com
64213531Sjairo.balart@metempsy.comvoid
64313531Sjairo.balart@metempsy.comwait(const sc_time &t, const sc_event_or_list &eol)
64413760Sjairo.balart@metempsy.com{
64513531Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
64613760Sjairo.balart@metempsy.com    p->setDynamic(
64713760Sjairo.balart@metempsy.com            new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol));
64813760Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
64913760Sjairo.balart@metempsy.com}
65013760Sjairo.balart@metempsy.com
65113760Sjairo.balart@metempsy.comvoid
65213760Sjairo.balart@metempsy.comwait(double d, sc_time_unit u, const sc_event_or_list &eol)
65313760Sjairo.balart@metempsy.com{
65413760Sjairo.balart@metempsy.com    wait(sc_time(d, u), eol);
65513760Sjairo.balart@metempsy.com}
65613760Sjairo.balart@metempsy.com
65713760Sjairo.balart@metempsy.comvoid
65813760Sjairo.balart@metempsy.comwait(const sc_time &t, const sc_event_and_list &eal)
65913760Sjairo.balart@metempsy.com{
66013760Sjairo.balart@metempsy.com    sc_gem5::Process *p = sc_gem5::scheduler.current();
66113760Sjairo.balart@metempsy.com    p->setDynamic(
66213760Sjairo.balart@metempsy.com            new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal));
66313531Sjairo.balart@metempsy.com    sc_gem5::scheduler.yield();
66413531Sjairo.balart@metempsy.com}
66513760Sjairo.balart@metempsy.com
66613531Sjairo.balart@metempsy.comvoid
66713531Sjairo.balart@metempsy.comwait(double d, sc_time_unit u, const sc_event_and_list &eal)
66813760Sjairo.balart@metempsy.com{
66913531Sjairo.balart@metempsy.com    wait(sc_time(d, u), eal);
67013531Sjairo.balart@metempsy.com}
67113760Sjairo.balart@metempsy.com
67213531Sjairo.balart@metempsy.comvoid
67313531Sjairo.balart@metempsy.comhalt()
67413531Sjairo.balart@metempsy.com{
67513531Sjairo.balart@metempsy.com    ::sc_core::wait();
67613531Sjairo.balart@metempsy.com    throw ::sc_gem5::ScHalt();
67713760Sjairo.balart@metempsy.com}
67813531Sjairo.balart@metempsy.com
67913531Sjairo.balart@metempsy.comvoid
68013760Sjairo.balart@metempsy.comat_posedge(const sc_signal_in_if<bool> &s)
68113760Sjairo.balart@metempsy.com{
68213531Sjairo.balart@metempsy.com    while (s.read())
68313531Sjairo.balart@metempsy.com        wait();
68413531Sjairo.balart@metempsy.com    while (!s.read())
68513531Sjairo.balart@metempsy.com        wait();
68613531Sjairo.balart@metempsy.com}
68713531Sjairo.balart@metempsy.com
68813760Sjairo.balart@metempsy.comvoid
68913531Sjairo.balart@metempsy.comat_posedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
69013531Sjairo.balart@metempsy.com{
69113531Sjairo.balart@metempsy.com    while (s.read() == sc_dt::Log_1)
69213531Sjairo.balart@metempsy.com        wait();
69313531Sjairo.balart@metempsy.com    while (s.read() == sc_dt::Log_0)
69413760Sjairo.balart@metempsy.com        wait();
69513531Sjairo.balart@metempsy.com}
69613531Sjairo.balart@metempsy.com
69713531Sjairo.balart@metempsy.comvoid
69813531Sjairo.balart@metempsy.comat_negedge(const sc_signal_in_if<bool> &s)
69913531Sjairo.balart@metempsy.com{
70013760Sjairo.balart@metempsy.com    while (!s.read())
70113531Sjairo.balart@metempsy.com        wait();
70213531Sjairo.balart@metempsy.com    while (s.read())
70313531Sjairo.balart@metempsy.com        wait();
70413760Sjairo.balart@metempsy.com}
70513531Sjairo.balart@metempsy.com
70613531Sjairo.balart@metempsy.comvoid
70713531Sjairo.balart@metempsy.comat_negedge(const sc_signal_in_if<sc_dt::sc_logic> &s)
70813531Sjairo.balart@metempsy.com{
70913531Sjairo.balart@metempsy.com    while (s.read() == sc_dt::Log_0)
71013760Sjairo.balart@metempsy.com        wait();
71113760Sjairo.balart@metempsy.com    while (s.read() == sc_dt::Log_1)
71213531Sjairo.balart@metempsy.com        wait();
71313531Sjairo.balart@metempsy.com}
71413760Sjairo.balart@metempsy.com
71513760Sjairo.balart@metempsy.comconst char *
71613531Sjairo.balart@metempsy.comsc_gen_unique_name(const char *seed)
71713531Sjairo.balart@metempsy.com{
71813531Sjairo.balart@metempsy.com    ::sc_gem5::Module *mod = ::sc_gem5::currentModule();
71913531Sjairo.balart@metempsy.com    return mod ? mod->uniqueName(seed) :
72013580Sgabeblack@google.com        ::sc_gem5::nameGen.gen(seed);
72113531Sjairo.balart@metempsy.com}
72213531Sjairo.balart@metempsy.com
72313760Sjairo.balart@metempsy.combool
72413760Sjairo.balart@metempsy.comsc_hierarchical_name_exists(const char *name)
72513531Sjairo.balart@metempsy.com{
72613531Sjairo.balart@metempsy.com    warn("%s not implemented.\n", __PRETTY_FUNCTION__);
72713531Sjairo.balart@metempsy.com    return false;
72813531Sjairo.balart@metempsy.com}
72913760Sjairo.balart@metempsy.com
73013531Sjairo.balart@metempsy.combool
73113531Sjairo.balart@metempsy.comsc_start_of_simulation_invoked()
73213531Sjairo.balart@metempsy.com{
73313531Sjairo.balart@metempsy.com    return ::sc_gem5::kernel->startOfSimulationComplete();
73413531Sjairo.balart@metempsy.com}
73513531Sjairo.balart@metempsy.com
73613531Sjairo.balart@metempsy.combool
73713531Sjairo.balart@metempsy.comsc_end_of_simulation_invoked()
73813531Sjairo.balart@metempsy.com{
73913531Sjairo.balart@metempsy.com    return ::sc_gem5::kernel->endOfSimulationComplete();
74013531Sjairo.balart@metempsy.com}
74113531Sjairo.balart@metempsy.com
74213531Sjairo.balart@metempsy.comsc_module *
74313531Sjairo.balart@metempsy.comsc_module_sc_new(sc_module *mod)
74413531Sjairo.balart@metempsy.com{
74513531Sjairo.balart@metempsy.com    static std::vector<std::unique_ptr<sc_module> > modules;
74613531Sjairo.balart@metempsy.com    modules.emplace_back(mod);
74713531Sjairo.balart@metempsy.com    return mod;
74813531Sjairo.balart@metempsy.com}
74913531Sjairo.balart@metempsy.com
75013531Sjairo.balart@metempsy.com} // namespace sc_core
75113760Sjairo.balart@metempsy.com