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