sc_module.cc revision 13091
111183Serfan.azarkhish@unibo.it/* 211183Serfan.azarkhish@unibo.it * Copyright 2018 Google, Inc. 311183Serfan.azarkhish@unibo.it * 411183Serfan.azarkhish@unibo.it * Redistribution and use in source and binary forms, with or without 511183Serfan.azarkhish@unibo.it * modification, are permitted provided that the following conditions are 611183Serfan.azarkhish@unibo.it * met: redistributions of source code must retain the above copyright 711183Serfan.azarkhish@unibo.it * notice, this list of conditions and the following disclaimer; 811183Serfan.azarkhish@unibo.it * redistributions in binary form must reproduce the above copyright 911183Serfan.azarkhish@unibo.it * notice, this list of conditions and the following disclaimer in the 1011183Serfan.azarkhish@unibo.it * documentation and/or other materials provided with the distribution; 1111183Serfan.azarkhish@unibo.it * neither the name of the copyright holders nor the names of its 1211183Serfan.azarkhish@unibo.it * contributors may be used to endorse or promote products derived from 1311183Serfan.azarkhish@unibo.it * this software without specific prior written permission. 1411183Serfan.azarkhish@unibo.it * 1511183Serfan.azarkhish@unibo.it * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1611183Serfan.azarkhish@unibo.it * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1711183Serfan.azarkhish@unibo.it * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1811183Serfan.azarkhish@unibo.it * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 1911183Serfan.azarkhish@unibo.it * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2011183Serfan.azarkhish@unibo.it * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2111183Serfan.azarkhish@unibo.it * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2211183Serfan.azarkhish@unibo.it * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2311183Serfan.azarkhish@unibo.it * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2411183Serfan.azarkhish@unibo.it * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2511183Serfan.azarkhish@unibo.it * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2611183Serfan.azarkhish@unibo.it * 2711183Serfan.azarkhish@unibo.it * Authors: Gabe Black 2811183Serfan.azarkhish@unibo.it */ 2911183Serfan.azarkhish@unibo.it 3011183Serfan.azarkhish@unibo.it#include <memory> 3111183Serfan.azarkhish@unibo.it#include <vector> 3211183Serfan.azarkhish@unibo.it 3311183Serfan.azarkhish@unibo.it#include "base/logging.hh" 3411183Serfan.azarkhish@unibo.it#include "systemc/core/kernel.hh" 3511183Serfan.azarkhish@unibo.it#include "systemc/core/module.hh" 3611183Serfan.azarkhish@unibo.it#include "systemc/core/process_types.hh" 3711183Serfan.azarkhish@unibo.it#include "systemc/ext/core/sc_module.hh" 3811183Serfan.azarkhish@unibo.it#include "systemc/ext/core/sc_module_name.hh" 3911183Serfan.azarkhish@unibo.it 4011551Sabdul.mutaal@gmail.comnamespace sc_gem5 4111183Serfan.azarkhish@unibo.it{ 4211183Serfan.azarkhish@unibo.it 4311183Serfan.azarkhish@unibo.itProcess * 4411183Serfan.azarkhish@unibo.itnewMethodProcess(const char *name, ProcessFuncWrapper *func) 4511183Serfan.azarkhish@unibo.it{ 4611183Serfan.azarkhish@unibo.it Process *p = new Method(name, func); 4711183Serfan.azarkhish@unibo.it scheduler.reg(p); 4811183Serfan.azarkhish@unibo.it return p; 4911183Serfan.azarkhish@unibo.it} 5011183Serfan.azarkhish@unibo.it 5111183Serfan.azarkhish@unibo.itProcess * 5211551Sabdul.mutaal@gmail.comnewThreadProcess(const char *name, ProcessFuncWrapper *func) 5311551Sabdul.mutaal@gmail.com{ 5411551Sabdul.mutaal@gmail.com Process *p = new Thread(name, func); 5511551Sabdul.mutaal@gmail.com scheduler.reg(p); 5611183Serfan.azarkhish@unibo.it return p; 5711183Serfan.azarkhish@unibo.it} 5811183Serfan.azarkhish@unibo.it 5911183Serfan.azarkhish@unibo.itProcess * 6011183Serfan.azarkhish@unibo.itnewCThreadProcess(const char *name, ProcessFuncWrapper *func) 6111837Swendy.elsasser@arm.com{ 6211183Serfan.azarkhish@unibo.it Process *p = new CThread(name, func); 6311183Serfan.azarkhish@unibo.it scheduler.reg(p); 6411183Serfan.azarkhish@unibo.it p->dontInitialize(); 6511183Serfan.azarkhish@unibo.it return p; 6611183Serfan.azarkhish@unibo.it} 6711183Serfan.azarkhish@unibo.it 6811551Sabdul.mutaal@gmail.comUniqueNameGen nameGen; 6911183Serfan.azarkhish@unibo.it 7011551Sabdul.mutaal@gmail.com} // namespace sc_gem5 7111551Sabdul.mutaal@gmail.com 7211551Sabdul.mutaal@gmail.comnamespace sc_core 7311551Sabdul.mutaal@gmail.com{ 7411551Sabdul.mutaal@gmail.com 7511183Serfan.azarkhish@unibo.itsc_bind_proxy::sc_bind_proxy(sc_interface &_interface) : 7611551Sabdul.mutaal@gmail.com _interface(&_interface), _port(nullptr) 7711183Serfan.azarkhish@unibo.it{} 7811551Sabdul.mutaal@gmail.com 7911551Sabdul.mutaal@gmail.comsc_bind_proxy::sc_bind_proxy(sc_port_base &_port) : 8011551Sabdul.mutaal@gmail.com _interface(nullptr), _port(&_port) 8111183Serfan.azarkhish@unibo.it{} 8211183Serfan.azarkhish@unibo.it 8311183Serfan.azarkhish@unibo.itconst sc_bind_proxy SC_BIND_PROXY_NUL(*(sc_port_base *)nullptr); 8411551Sabdul.mutaal@gmail.com 8511551Sabdul.mutaal@gmail.comsc_module::~sc_module() { delete _gem5_module; } 8611551Sabdul.mutaal@gmail.com 8711551Sabdul.mutaal@gmail.comconst sc_bind_proxy SC_BIND_PROXY_NIL(*(sc_port_base *)nullptr); 8811551Sabdul.mutaal@gmail.com 8911551Sabdul.mutaal@gmail.comvoid 9011551Sabdul.mutaal@gmail.comsc_module::operator () (const sc_bind_proxy &p001, 9111551Sabdul.mutaal@gmail.com const sc_bind_proxy &p002, 9211551Sabdul.mutaal@gmail.com const sc_bind_proxy &p003, 9311551Sabdul.mutaal@gmail.com const sc_bind_proxy &p004, 9411551Sabdul.mutaal@gmail.com const sc_bind_proxy &p005, 9511551Sabdul.mutaal@gmail.com const sc_bind_proxy &p006, 9611551Sabdul.mutaal@gmail.com const sc_bind_proxy &p007, 9711551Sabdul.mutaal@gmail.com const sc_bind_proxy &p008, 9811551Sabdul.mutaal@gmail.com const sc_bind_proxy &p009, 9911551Sabdul.mutaal@gmail.com const sc_bind_proxy &p010, 10011551Sabdul.mutaal@gmail.com const sc_bind_proxy &p011, 10111551Sabdul.mutaal@gmail.com const sc_bind_proxy &p012, 10211551Sabdul.mutaal@gmail.com const sc_bind_proxy &p013, 10311551Sabdul.mutaal@gmail.com const sc_bind_proxy &p014, 10411551Sabdul.mutaal@gmail.com const sc_bind_proxy &p015, 10511551Sabdul.mutaal@gmail.com const sc_bind_proxy &p016, 10611551Sabdul.mutaal@gmail.com const sc_bind_proxy &p017, 10711551Sabdul.mutaal@gmail.com const sc_bind_proxy &p018, 10811551Sabdul.mutaal@gmail.com const sc_bind_proxy &p019, 10911551Sabdul.mutaal@gmail.com const sc_bind_proxy &p020, 11011551Sabdul.mutaal@gmail.com const sc_bind_proxy &p021, 11111551Sabdul.mutaal@gmail.com const sc_bind_proxy &p022, 11211551Sabdul.mutaal@gmail.com const sc_bind_proxy &p023, 11311551Sabdul.mutaal@gmail.com const sc_bind_proxy &p024, 11411551Sabdul.mutaal@gmail.com const sc_bind_proxy &p025, 11511551Sabdul.mutaal@gmail.com const sc_bind_proxy &p026, 11611551Sabdul.mutaal@gmail.com const sc_bind_proxy &p027, 11711551Sabdul.mutaal@gmail.com const sc_bind_proxy &p028, 11811551Sabdul.mutaal@gmail.com const sc_bind_proxy &p029, 11911551Sabdul.mutaal@gmail.com const sc_bind_proxy &p030, 12011551Sabdul.mutaal@gmail.com const sc_bind_proxy &p031, 12111551Sabdul.mutaal@gmail.com const sc_bind_proxy &p032, 12211551Sabdul.mutaal@gmail.com const sc_bind_proxy &p033, 12311551Sabdul.mutaal@gmail.com const sc_bind_proxy &p034, 12411183Serfan.azarkhish@unibo.it const sc_bind_proxy &p035, 12512340Szulian@eit.uni-kl.de const sc_bind_proxy &p036, 12611183Serfan.azarkhish@unibo.it const sc_bind_proxy &p037, 12711183Serfan.azarkhish@unibo.it const sc_bind_proxy &p038, 12811183Serfan.azarkhish@unibo.it const sc_bind_proxy &p039, 12912340Szulian@eit.uni-kl.de const sc_bind_proxy &p040, 13011183Serfan.azarkhish@unibo.it const sc_bind_proxy &p041, 13112340Szulian@eit.uni-kl.de const sc_bind_proxy &p042, 13212340Szulian@eit.uni-kl.de const sc_bind_proxy &p043, 13312340Szulian@eit.uni-kl.de const sc_bind_proxy &p044, 13411183Serfan.azarkhish@unibo.it const sc_bind_proxy &p045, 13512340Szulian@eit.uni-kl.de const sc_bind_proxy &p046, 13612340Szulian@eit.uni-kl.de const sc_bind_proxy &p047, 13711183Serfan.azarkhish@unibo.it const sc_bind_proxy &p048, 13811183Serfan.azarkhish@unibo.it const sc_bind_proxy &p049, 13911183Serfan.azarkhish@unibo.it const sc_bind_proxy &p050, 14011183Serfan.azarkhish@unibo.it const sc_bind_proxy &p051, 14111183Serfan.azarkhish@unibo.it const sc_bind_proxy &p052, 14212340Szulian@eit.uni-kl.de const sc_bind_proxy &p053, 14312340Szulian@eit.uni-kl.de const sc_bind_proxy &p054, 14411183Serfan.azarkhish@unibo.it const sc_bind_proxy &p055, 14511183Serfan.azarkhish@unibo.it const sc_bind_proxy &p056, 14612340Szulian@eit.uni-kl.de const sc_bind_proxy &p057, 14712340Szulian@eit.uni-kl.de const sc_bind_proxy &p058, 14811183Serfan.azarkhish@unibo.it const sc_bind_proxy &p059, 14911183Serfan.azarkhish@unibo.it const sc_bind_proxy &p060, 15011183Serfan.azarkhish@unibo.it const sc_bind_proxy &p061, 15112340Szulian@eit.uni-kl.de const sc_bind_proxy &p062, 15212340Szulian@eit.uni-kl.de const sc_bind_proxy &p063, 15311183Serfan.azarkhish@unibo.it const sc_bind_proxy &p064) 15411183Serfan.azarkhish@unibo.it{ 15511183Serfan.azarkhish@unibo.it std::vector<const ::sc_core::sc_bind_proxy *> proxies; 15612340Szulian@eit.uni-kl.de auto insert = [&proxies](const ::sc_core::sc_bind_proxy &p) -> bool { 15712340Szulian@eit.uni-kl.de if (!p.port() && !p.interface()) 15811183Serfan.azarkhish@unibo.it return false; 15911551Sabdul.mutaal@gmail.com proxies.push_back(&p); 16012340Szulian@eit.uni-kl.de return true; 16112340Szulian@eit.uni-kl.de }; 16211551Sabdul.mutaal@gmail.com insert(p001) && insert(p002) && insert(p003) && insert(p004) && 16312340Szulian@eit.uni-kl.de insert(p005) && insert(p006) && insert(p007) && insert(p008) && 16411551Sabdul.mutaal@gmail.com insert(p009) && insert(p010) && insert(p011) && insert(p012) && 16512340Szulian@eit.uni-kl.de insert(p013) && insert(p014) && insert(p015) && insert(p016) && 16612340Szulian@eit.uni-kl.de insert(p017) && insert(p018) && insert(p019) && insert(p020) && 16711183Serfan.azarkhish@unibo.it insert(p021) && insert(p022) && insert(p023) && insert(p024) && 16811183Serfan.azarkhish@unibo.it insert(p025) && insert(p026) && insert(p027) && insert(p028) && 16911183Serfan.azarkhish@unibo.it insert(p029) && insert(p030) && insert(p031) && insert(p032) && 17012340Szulian@eit.uni-kl.de insert(p033) && insert(p034) && insert(p035) && insert(p036) && 17112340Szulian@eit.uni-kl.de insert(p037) && insert(p038) && insert(p039) && insert(p040) && 17212340Szulian@eit.uni-kl.de insert(p041) && insert(p042) && insert(p043) && insert(p044) && 17311183Serfan.azarkhish@unibo.it insert(p045) && insert(p046) && insert(p047) && insert(p048) && 17411183Serfan.azarkhish@unibo.it insert(p049) && insert(p050) && insert(p051) && insert(p052) && 17511183Serfan.azarkhish@unibo.it insert(p053) && insert(p054) && insert(p055) && insert(p056) && 17612340Szulian@eit.uni-kl.de insert(p057) && insert(p058) && insert(p059) && insert(p060) && 17712340Szulian@eit.uni-kl.de insert(p061) && insert(p062) && insert(p063) && insert(p064); 17812340Szulian@eit.uni-kl.de _gem5_module->bindPorts(proxies); 17911183Serfan.azarkhish@unibo.it} 18011183Serfan.azarkhish@unibo.it 18111183Serfan.azarkhish@unibo.itconst std::vector<sc_object *> & 18212340Szulian@eit.uni-kl.desc_module::get_child_objects() const 18312340Szulian@eit.uni-kl.de{ 18411183Serfan.azarkhish@unibo.it return _gem5_module->obj()->get_child_objects(); 18511551Sabdul.mutaal@gmail.com} 18612340Szulian@eit.uni-kl.de 18712340Szulian@eit.uni-kl.deconst std::vector<sc_event *> & 18811183Serfan.azarkhish@unibo.itsc_module::get_child_events() const 18911551Sabdul.mutaal@gmail.com{ 19011551Sabdul.mutaal@gmail.com return _gem5_module->obj()->get_child_events(); 19111551Sabdul.mutaal@gmail.com} 19211551Sabdul.mutaal@gmail.com 19312340Szulian@eit.uni-kl.desc_module::sc_module() : 19412340Szulian@eit.uni-kl.de sc_object(sc_gem5::newModuleChecked()->name()), 19512340Szulian@eit.uni-kl.de _gem5_module(sc_gem5::currentModule()) 19611551Sabdul.mutaal@gmail.com{} 19711551Sabdul.mutaal@gmail.com 19811551Sabdul.mutaal@gmail.comsc_module::sc_module(const sc_module_name &) : sc_module() {} 19911551Sabdul.mutaal@gmail.comsc_module::sc_module(const char *_name) : sc_module(sc_module_name(_name)) {} 20012340Szulian@eit.uni-kl.desc_module::sc_module(const std::string &_name) : 20112340Szulian@eit.uni-kl.de sc_module(sc_module_name(_name.c_str())) 20212340Szulian@eit.uni-kl.de{} 20311551Sabdul.mutaal@gmail.com 20411551Sabdul.mutaal@gmail.comvoid 20511551Sabdul.mutaal@gmail.comsc_module::reset_signal_is(const sc_in<bool> &, bool) 20612340Szulian@eit.uni-kl.de{ 20712340Szulian@eit.uni-kl.de warn("%s not implemented.\n", __PRETTY_FUNCTION__); 20812340Szulian@eit.uni-kl.de} 20911551Sabdul.mutaal@gmail.com 21011183Serfan.azarkhish@unibo.itvoid 21112340Szulian@eit.uni-kl.desc_module::reset_signal_is(const sc_inout<bool> &, bool) 21212340Szulian@eit.uni-kl.de{ 21311183Serfan.azarkhish@unibo.it warn("%s not implemented.\n", __PRETTY_FUNCTION__); 21411183Serfan.azarkhish@unibo.it} 21512340Szulian@eit.uni-kl.de 21612340Szulian@eit.uni-kl.devoid 21711183Serfan.azarkhish@unibo.itsc_module::reset_signal_is(const sc_out<bool> &, bool) 21811551Sabdul.mutaal@gmail.com{ 21912340Szulian@eit.uni-kl.de warn("%s not implemented.\n", __PRETTY_FUNCTION__); 22012340Szulian@eit.uni-kl.de} 22112340Szulian@eit.uni-kl.de 22211183Serfan.azarkhish@unibo.itvoid 22312340Szulian@eit.uni-kl.desc_module::reset_signal_is(const sc_signal_in_if<bool> &, bool) 22412340Szulian@eit.uni-kl.de{ 22512340Szulian@eit.uni-kl.de warn("%s not implemented.\n", __PRETTY_FUNCTION__); 22612340Szulian@eit.uni-kl.de} 22712340Szulian@eit.uni-kl.de 22812340Szulian@eit.uni-kl.de 22911183Serfan.azarkhish@unibo.itvoid 23012340Szulian@eit.uni-kl.desc_module::async_reset_signal_is(const sc_in<bool> &, bool) 23112340Szulian@eit.uni-kl.de{ 23211183Serfan.azarkhish@unibo.it warn("%s not implemented.\n", __PRETTY_FUNCTION__); 23311183Serfan.azarkhish@unibo.it} 23412340Szulian@eit.uni-kl.de 23512340Szulian@eit.uni-kl.devoid 23611183Serfan.azarkhish@unibo.itsc_module::async_reset_signal_is(const sc_inout<bool> &, bool) 23711551Sabdul.mutaal@gmail.com{ 23812340Szulian@eit.uni-kl.de warn("%s not implemented.\n", __PRETTY_FUNCTION__); 23912340Szulian@eit.uni-kl.de} 24011183Serfan.azarkhish@unibo.it 24112340Szulian@eit.uni-kl.devoid 24212340Szulian@eit.uni-kl.desc_module::async_reset_signal_is(const sc_out<bool> &, bool) 24312340Szulian@eit.uni-kl.de{ 24411183Serfan.azarkhish@unibo.it warn("%s not implemented.\n", __PRETTY_FUNCTION__); 24512340Szulian@eit.uni-kl.de} 24611551Sabdul.mutaal@gmail.com 24712340Szulian@eit.uni-kl.devoid 24812340Szulian@eit.uni-kl.desc_module::async_reset_signal_is(const sc_signal_in_if<bool> &, bool) 24912340Szulian@eit.uni-kl.de{ 25011551Sabdul.mutaal@gmail.com warn("%s not implemented.\n", __PRETTY_FUNCTION__); 25111551Sabdul.mutaal@gmail.com} 25211551Sabdul.mutaal@gmail.com 25312340Szulian@eit.uni-kl.de 25412340Szulian@eit.uni-kl.devoid 25512340Szulian@eit.uni-kl.desc_module::dont_initialize() 25611551Sabdul.mutaal@gmail.com{ 25711551Sabdul.mutaal@gmail.com ::sc_gem5::Process::newest()->dontInitialize(); 25811551Sabdul.mutaal@gmail.com} 25912340Szulian@eit.uni-kl.de 26012340Szulian@eit.uni-kl.devoid 26112340Szulian@eit.uni-kl.desc_module::set_stack_size(size_t size) 26212340Szulian@eit.uni-kl.de{ 26312340Szulian@eit.uni-kl.de ::sc_gem5::Process::newest()->setStackSize(size); 26412340Szulian@eit.uni-kl.de} 26512340Szulian@eit.uni-kl.de 26612340Szulian@eit.uni-kl.de 26712340Szulian@eit.uni-kl.devoid sc_module::next_trigger() { ::sc_core::next_trigger(); } 26812340Szulian@eit.uni-kl.de 26912340Szulian@eit.uni-kl.devoid 27012340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_event &e) 27112340Szulian@eit.uni-kl.de{ 27212340Szulian@eit.uni-kl.de ::sc_core::next_trigger(e); 27312340Szulian@eit.uni-kl.de} 27412340Szulian@eit.uni-kl.de 27512340Szulian@eit.uni-kl.devoid 27612340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_event_or_list &eol) 27712340Szulian@eit.uni-kl.de{ 27812340Szulian@eit.uni-kl.de ::sc_core::next_trigger(eol); 27912340Szulian@eit.uni-kl.de} 28012340Szulian@eit.uni-kl.de 28112340Szulian@eit.uni-kl.devoid 28212340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_event_and_list &eal) 28312340Szulian@eit.uni-kl.de{ 28412340Szulian@eit.uni-kl.de ::sc_core::next_trigger(eal); 28512340Szulian@eit.uni-kl.de} 28612340Szulian@eit.uni-kl.de 28712340Szulian@eit.uni-kl.devoid 28811551Sabdul.mutaal@gmail.comsc_module::next_trigger(const sc_time &t) 28911551Sabdul.mutaal@gmail.com{ 29012340Szulian@eit.uni-kl.de ::sc_core::next_trigger(t); 29112340Szulian@eit.uni-kl.de} 29211551Sabdul.mutaal@gmail.com 29312340Szulian@eit.uni-kl.devoid 29412340Szulian@eit.uni-kl.desc_module::next_trigger(double d, sc_time_unit u) 29511183Serfan.azarkhish@unibo.it{ 29612340Szulian@eit.uni-kl.de ::sc_core::next_trigger(d, u); 29712340Szulian@eit.uni-kl.de} 29812340Szulian@eit.uni-kl.de 29912340Szulian@eit.uni-kl.devoid 30012340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_time &t, const sc_event &e) 30112340Szulian@eit.uni-kl.de{ 30212340Szulian@eit.uni-kl.de ::sc_core::next_trigger(t, e); 30312340Szulian@eit.uni-kl.de} 30412340Szulian@eit.uni-kl.de 30512340Szulian@eit.uni-kl.devoid 30612340Szulian@eit.uni-kl.desc_module::next_trigger(double d, sc_time_unit u, const sc_event &e) 30712340Szulian@eit.uni-kl.de{ 30812340Szulian@eit.uni-kl.de ::sc_core::next_trigger(d, u, e); 30912340Szulian@eit.uni-kl.de} 31011183Serfan.azarkhish@unibo.it 31112340Szulian@eit.uni-kl.devoid 31212340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_time &t, const sc_event_or_list &eol) 31312340Szulian@eit.uni-kl.de{ 31412340Szulian@eit.uni-kl.de ::sc_core::next_trigger(t, eol); 31512340Szulian@eit.uni-kl.de} 31612340Szulian@eit.uni-kl.de 31712340Szulian@eit.uni-kl.devoid 31812340Szulian@eit.uni-kl.desc_module::next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 31912340Szulian@eit.uni-kl.de{ 32012340Szulian@eit.uni-kl.de ::sc_core::next_trigger(d, u, eol); 32112340Szulian@eit.uni-kl.de} 32212340Szulian@eit.uni-kl.de 32312340Szulian@eit.uni-kl.devoid 32412340Szulian@eit.uni-kl.desc_module::next_trigger(const sc_time &t, const sc_event_and_list &eal) 32512340Szulian@eit.uni-kl.de{ 32612340Szulian@eit.uni-kl.de ::sc_core::next_trigger(t, eal); 32712340Szulian@eit.uni-kl.de} 32812340Szulian@eit.uni-kl.de 32912340Szulian@eit.uni-kl.devoid 33012340Szulian@eit.uni-kl.desc_module::next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 33112340Szulian@eit.uni-kl.de{ 33212340Szulian@eit.uni-kl.de ::sc_core::next_trigger(d, u, eal); 33312340Szulian@eit.uni-kl.de} 33412340Szulian@eit.uni-kl.de 33512340Szulian@eit.uni-kl.de 33612340Szulian@eit.uni-kl.debool 33712340Szulian@eit.uni-kl.desc_module::timed_out() 33812340Szulian@eit.uni-kl.de{ 33912340Szulian@eit.uni-kl.de warn("%s not implemented.\n", __PRETTY_FUNCTION__); 34012340Szulian@eit.uni-kl.de return false; 34112340Szulian@eit.uni-kl.de} 34211183Serfan.azarkhish@unibo.it 34311551Sabdul.mutaal@gmail.com 34412340Szulian@eit.uni-kl.devoid 34512340Szulian@eit.uni-kl.desc_module::wait() 34612340Szulian@eit.uni-kl.de{ 34711183Serfan.azarkhish@unibo.it ::sc_core::wait(); 34811551Sabdul.mutaal@gmail.com} 34912340Szulian@eit.uni-kl.de 35012340Szulian@eit.uni-kl.devoid 35112340Szulian@eit.uni-kl.desc_module::wait(int i) 35212340Szulian@eit.uni-kl.de{ 35312340Szulian@eit.uni-kl.de ::sc_core::wait(i); 35411183Serfan.azarkhish@unibo.it} 35511551Sabdul.mutaal@gmail.com 35611551Sabdul.mutaal@gmail.comvoid 35712340Szulian@eit.uni-kl.desc_module::wait(const sc_event &e) 35812340Szulian@eit.uni-kl.de{ 35912340Szulian@eit.uni-kl.de ::sc_core::wait(e); 36012340Szulian@eit.uni-kl.de} 36112340Szulian@eit.uni-kl.de 36212340Szulian@eit.uni-kl.devoid 36312340Szulian@eit.uni-kl.desc_module::wait(const sc_event_or_list &eol) 36411551Sabdul.mutaal@gmail.com{ 36512340Szulian@eit.uni-kl.de ::sc_core::wait(eol); 36612340Szulian@eit.uni-kl.de} 36712340Szulian@eit.uni-kl.de 36812340Szulian@eit.uni-kl.devoid 36912340Szulian@eit.uni-kl.desc_module::wait(const sc_event_and_list &eal) 37012340Szulian@eit.uni-kl.de{ 37112340Szulian@eit.uni-kl.de ::sc_core::wait(eal); 37212340Szulian@eit.uni-kl.de} 37312340Szulian@eit.uni-kl.de 37412340Szulian@eit.uni-kl.devoid 37512340Szulian@eit.uni-kl.desc_module::wait(const sc_time &t) 37611183Serfan.azarkhish@unibo.it{ 37712340Szulian@eit.uni-kl.de ::sc_core::wait(t); 37812340Szulian@eit.uni-kl.de} 37912340Szulian@eit.uni-kl.de 38012340Szulian@eit.uni-kl.devoid 38111183Serfan.azarkhish@unibo.itsc_module::wait(double d, sc_time_unit u) 38211551Sabdul.mutaal@gmail.com{ 38311551Sabdul.mutaal@gmail.com ::sc_core::wait(d, u); 38411551Sabdul.mutaal@gmail.com} 38512340Szulian@eit.uni-kl.de 38612340Szulian@eit.uni-kl.devoid 38711551Sabdul.mutaal@gmail.comsc_module::wait(const sc_time &t, const sc_event &e) 38812340Szulian@eit.uni-kl.de{ 38912340Szulian@eit.uni-kl.de ::sc_core::wait(t, e); 39011551Sabdul.mutaal@gmail.com} 39112340Szulian@eit.uni-kl.de 39212340Szulian@eit.uni-kl.devoid 39312340Szulian@eit.uni-kl.desc_module::wait(double d, sc_time_unit u, const sc_event &e) 39412340Szulian@eit.uni-kl.de{ 39512340Szulian@eit.uni-kl.de ::sc_core::wait(d, u, e); 39611551Sabdul.mutaal@gmail.com} 39712340Szulian@eit.uni-kl.de 39812340Szulian@eit.uni-kl.devoid 39912340Szulian@eit.uni-kl.desc_module::wait(const sc_time &t, const sc_event_or_list &eol) 40011551Sabdul.mutaal@gmail.com{ 40111551Sabdul.mutaal@gmail.com ::sc_core::wait(t, eol); 40212340Szulian@eit.uni-kl.de} 40312340Szulian@eit.uni-kl.de 40412340Szulian@eit.uni-kl.devoid 40512340Szulian@eit.uni-kl.desc_module::wait(double d, sc_time_unit u, const sc_event_or_list &eol) 40612340Szulian@eit.uni-kl.de{ 40712340Szulian@eit.uni-kl.de ::sc_core::wait(d, u, eol); 40811551Sabdul.mutaal@gmail.com} 40912340Szulian@eit.uni-kl.de 41012340Szulian@eit.uni-kl.devoid 41112340Szulian@eit.uni-kl.desc_module::wait(const sc_time &t, const sc_event_and_list &eal) 41212340Szulian@eit.uni-kl.de{ 41312340Szulian@eit.uni-kl.de ::sc_core::wait(t, eal); 41411551Sabdul.mutaal@gmail.com} 41511551Sabdul.mutaal@gmail.com 41612340Szulian@eit.uni-kl.devoid 41712340Szulian@eit.uni-kl.desc_module::wait(double d, sc_time_unit u, const sc_event_and_list &eal) 41811551Sabdul.mutaal@gmail.com{ 41911551Sabdul.mutaal@gmail.com ::sc_core::wait(d, u, eal); 42011551Sabdul.mutaal@gmail.com} 42111183Serfan.azarkhish@unibo.it 42211551Sabdul.mutaal@gmail.com 42311551Sabdul.mutaal@gmail.comvoid 42411551Sabdul.mutaal@gmail.comsc_module::halt() 42511551Sabdul.mutaal@gmail.com{ 42612340Szulian@eit.uni-kl.de ::sc_core::halt(); 42711551Sabdul.mutaal@gmail.com} 42811551Sabdul.mutaal@gmail.com 42911551Sabdul.mutaal@gmail.comvoid 43012340Szulian@eit.uni-kl.desc_module::at_posedge(const sc_signal_in_if<bool> &s) 43112340Szulian@eit.uni-kl.de{ 43212340Szulian@eit.uni-kl.de ::sc_core::at_posedge(s); 43311551Sabdul.mutaal@gmail.com} 43411551Sabdul.mutaal@gmail.com 43511551Sabdul.mutaal@gmail.comvoid 43611551Sabdul.mutaal@gmail.comsc_module::at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &s) 43711551Sabdul.mutaal@gmail.com{ 43811551Sabdul.mutaal@gmail.com ::sc_core::at_posedge(s); 43911551Sabdul.mutaal@gmail.com} 44011551Sabdul.mutaal@gmail.com 44111551Sabdul.mutaal@gmail.comvoid 44211551Sabdul.mutaal@gmail.comsc_module::at_negedge(const sc_signal_in_if<bool> &s) 44311551Sabdul.mutaal@gmail.com{ 44411551Sabdul.mutaal@gmail.com ::sc_core::at_negedge(s); 44511551Sabdul.mutaal@gmail.com} 44611551Sabdul.mutaal@gmail.com 44711551Sabdul.mutaal@gmail.comvoid 44811551Sabdul.mutaal@gmail.comsc_module::at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &s) 44911551Sabdul.mutaal@gmail.com{ 45012340Szulian@eit.uni-kl.de ::sc_core::at_negedge(s); 45112340Szulian@eit.uni-kl.de} 45211551Sabdul.mutaal@gmail.com 45311551Sabdul.mutaal@gmail.com 45411551Sabdul.mutaal@gmail.comvoid 45511551Sabdul.mutaal@gmail.comnext_trigger() 45611551Sabdul.mutaal@gmail.com{ 45711551Sabdul.mutaal@gmail.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 45811551Sabdul.mutaal@gmail.com p->setDynamic(nullptr); 45911551Sabdul.mutaal@gmail.com} 46011551Sabdul.mutaal@gmail.com 46111551Sabdul.mutaal@gmail.comvoid 46211551Sabdul.mutaal@gmail.comnext_trigger(const sc_event &e) 46311551Sabdul.mutaal@gmail.com{ 46412340Szulian@eit.uni-kl.de sc_gem5::Process *p = sc_gem5::scheduler.current(); 46511551Sabdul.mutaal@gmail.com p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); 46611551Sabdul.mutaal@gmail.com} 46711551Sabdul.mutaal@gmail.com 46811551Sabdul.mutaal@gmail.comvoid 46911551Sabdul.mutaal@gmail.comnext_trigger(const sc_event_or_list &eol) 47011551Sabdul.mutaal@gmail.com{ 47111551Sabdul.mutaal@gmail.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 47211551Sabdul.mutaal@gmail.com p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); 47311551Sabdul.mutaal@gmail.com} 47411551Sabdul.mutaal@gmail.com 47511551Sabdul.mutaal@gmail.comvoid 47611551Sabdul.mutaal@gmail.comnext_trigger(const sc_event_and_list &eal) 47711551Sabdul.mutaal@gmail.com{ 47811551Sabdul.mutaal@gmail.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 47911551Sabdul.mutaal@gmail.com p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); 48011551Sabdul.mutaal@gmail.com} 48111551Sabdul.mutaal@gmail.com 48211551Sabdul.mutaal@gmail.comvoid 48311551Sabdul.mutaal@gmail.comnext_trigger(const sc_time &t) 48411551Sabdul.mutaal@gmail.com{ 48511551Sabdul.mutaal@gmail.com sc_gem5::Process *p = sc_gem5::scheduler.current(); 48611551Sabdul.mutaal@gmail.com p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); 48711551Sabdul.mutaal@gmail.com} 488 489void 490next_trigger(double d, sc_time_unit u) 491{ 492 next_trigger(sc_time(d, u)); 493} 494 495void 496next_trigger(const sc_time &t, const sc_event &e) 497{ 498 sc_gem5::Process *p = sc_gem5::scheduler.current(); 499 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); 500} 501 502void 503next_trigger(double d, sc_time_unit u, const sc_event &e) 504{ 505 next_trigger(sc_time(d, u), e); 506} 507 508void 509next_trigger(const sc_time &t, const sc_event_or_list &eol) 510{ 511 sc_gem5::Process *p = sc_gem5::scheduler.current(); 512 p->setDynamic( 513 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); 514} 515 516void 517next_trigger(double d, sc_time_unit u, const sc_event_or_list &eol) 518{ 519 next_trigger(sc_time(d, u), eol); 520} 521 522void 523next_trigger(const sc_time &t, const sc_event_and_list &eal) 524{ 525 sc_gem5::Process *p = sc_gem5::scheduler.current(); 526 p->setDynamic( 527 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); 528} 529 530void 531next_trigger(double d, sc_time_unit u, const sc_event_and_list &eal) 532{ 533 next_trigger(sc_time(d, u), eal); 534} 535 536bool 537timed_out() 538{ 539 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 540 return false; 541} 542 543 544void 545wait() 546{ 547 sc_gem5::Process *p = sc_gem5::scheduler.current(); 548 p->setDynamic(nullptr); 549 sc_gem5::scheduler.yield(); 550} 551 552void 553wait(int n) 554{ 555 for (int i = 0; i < n; i++) 556 wait(); 557} 558 559void 560wait(const sc_event &e) 561{ 562 sc_gem5::Process *p = sc_gem5::scheduler.current(); 563 p->setDynamic(new ::sc_gem5::SensitivityEvent(p, &e)); 564 sc_gem5::scheduler.yield(); 565} 566 567void 568wait(const sc_event_or_list &eol) 569{ 570 sc_gem5::Process *p = sc_gem5::scheduler.current(); 571 p->setDynamic(new ::sc_gem5::SensitivityEventOrList(p, &eol)); 572 sc_gem5::scheduler.yield(); 573} 574 575void 576wait(const sc_event_and_list &eal) 577{ 578 sc_gem5::Process *p = sc_gem5::scheduler.current(); 579 p->setDynamic(new ::sc_gem5::SensitivityEventAndList(p, &eal)); 580 sc_gem5::scheduler.yield(); 581} 582 583void 584wait(const sc_time &t) 585{ 586 sc_gem5::Process *p = sc_gem5::scheduler.current(); 587 p->setDynamic(new ::sc_gem5::SensitivityTimeout(p, t)); 588 sc_gem5::scheduler.yield(); 589} 590 591void 592wait(double d, sc_time_unit u) 593{ 594 wait(sc_time(d, u)); 595} 596 597void 598wait(const sc_time &t, const sc_event &e) 599{ 600 sc_gem5::Process *p = sc_gem5::scheduler.current(); 601 p->setDynamic(new ::sc_gem5::SensitivityTimeoutAndEvent(p, t, &e)); 602 sc_gem5::scheduler.yield(); 603} 604 605void 606wait(double d, sc_time_unit u, const sc_event &e) 607{ 608 wait(sc_time(d, u), e); 609} 610 611void 612wait(const sc_time &t, const sc_event_or_list &eol) 613{ 614 sc_gem5::Process *p = sc_gem5::scheduler.current(); 615 p->setDynamic( 616 new ::sc_gem5::SensitivityTimeoutAndEventOrList(p, t, &eol)); 617 sc_gem5::scheduler.yield(); 618} 619 620void 621wait(double d, sc_time_unit u, const sc_event_or_list &eol) 622{ 623 wait(sc_time(d, u), eol); 624} 625 626void 627wait(const sc_time &t, const sc_event_and_list &eal) 628{ 629 sc_gem5::Process *p = sc_gem5::scheduler.current(); 630 p->setDynamic( 631 new ::sc_gem5::SensitivityTimeoutAndEventAndList(p, t, &eal)); 632 sc_gem5::scheduler.yield(); 633} 634 635void 636wait(double d, sc_time_unit u, const sc_event_and_list &eal) 637{ 638 wait(sc_time(d, u), eal); 639} 640 641void 642halt() 643{ 644 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 645} 646 647void 648at_posedge(const sc_signal_in_if<bool> &) 649{ 650 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 651} 652 653void 654at_posedge(const sc_signal_in_if<sc_dt::sc_logic> &) 655{ 656 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 657} 658 659void 660at_negedge(const sc_signal_in_if<bool> &) 661{ 662 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 663} 664 665void 666at_negedge(const sc_signal_in_if<sc_dt::sc_logic> &) 667{ 668 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 669} 670 671const char * 672sc_gen_unique_name(const char *seed) 673{ 674 ::sc_gem5::Module *mod = ::sc_gem5::currentModule(); 675 return mod ? mod->uniqueName(seed) : 676 ::sc_gem5::nameGen.gen(seed); 677} 678 679bool 680sc_hierarchical_name_exists(const char *name) 681{ 682 warn("%s not implemented.\n", __PRETTY_FUNCTION__); 683 return false; 684} 685 686bool 687sc_start_of_simulation_invoked() 688{ 689 return ::sc_gem5::kernel->startOfSimulationComplete(); 690} 691 692bool 693sc_end_of_simulation_invoked() 694{ 695 return ::sc_gem5::kernel->endOfSimulationComplete(); 696} 697 698sc_module * 699sc_module_sc_new(sc_module *mod) 700{ 701 static std::vector<std::unique_ptr<sc_module> > modules; 702 modules.emplace_back(mod); 703 return mod; 704} 705 706} // namespace sc_core 707