sc_sensitive.cc revision 13210
14479Sbinkertn@umich.edu/*
24479Sbinkertn@umich.edu * Copyright 2018 Google, Inc.
34479Sbinkertn@umich.edu *
44479Sbinkertn@umich.edu * Redistribution and use in source and binary forms, with or without
54479Sbinkertn@umich.edu * modification, are permitted provided that the following conditions are
64479Sbinkertn@umich.edu * met: redistributions of source code must retain the above copyright
74479Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer;
84479Sbinkertn@umich.edu * redistributions in binary form must reproduce the above copyright
94479Sbinkertn@umich.edu * notice, this list of conditions and the following disclaimer in the
104479Sbinkertn@umich.edu * documentation and/or other materials provided with the distribution;
114479Sbinkertn@umich.edu * neither the name of the copyright holders nor the names of its
124479Sbinkertn@umich.edu * contributors may be used to endorse or promote products derived from
134479Sbinkertn@umich.edu * this software without specific prior written permission.
144479Sbinkertn@umich.edu *
154479Sbinkertn@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
164479Sbinkertn@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
174479Sbinkertn@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
184479Sbinkertn@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
194479Sbinkertn@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
204479Sbinkertn@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
214479Sbinkertn@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
224479Sbinkertn@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
234479Sbinkertn@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
244479Sbinkertn@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
254479Sbinkertn@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
264479Sbinkertn@umich.edu *
274479Sbinkertn@umich.edu * Authors: Gabe Black
284479Sbinkertn@umich.edu */
294479Sbinkertn@umich.edu
304479Sbinkertn@umich.edu#include "base/logging.hh"
314479Sbinkertn@umich.edu#include "systemc/core/process.hh"
324479Sbinkertn@umich.edu#include "systemc/ext/channel/sc_in.hh"
334479Sbinkertn@umich.edu#include "systemc/ext/channel/sc_inout.hh"
344479Sbinkertn@umich.edu#include "systemc/ext/channel/sc_signal_in_if.hh"
354479Sbinkertn@umich.edu#include "systemc/ext/core/sc_interface.hh"
364479Sbinkertn@umich.edu#include "systemc/ext/core/sc_sensitive.hh"
374479Sbinkertn@umich.edu
384479Sbinkertn@umich.edunamespace sc_core
394479Sbinkertn@umich.edu{
404479Sbinkertn@umich.edu
414479Sbinkertn@umich.edusc_sensitive::sc_sensitive() : currentProcess(nullptr) {}
424479Sbinkertn@umich.edu
434479Sbinkertn@umich.edusc_sensitive &
444479Sbinkertn@umich.edusc_sensitive::operator << (const sc_event &e)
454479Sbinkertn@umich.edu{
464479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityEvent(currentProcess, &e);
474479Sbinkertn@umich.edu    return *this;
484479Sbinkertn@umich.edu}
494479Sbinkertn@umich.edu
504479Sbinkertn@umich.edusc_sensitive &
514479Sbinkertn@umich.edusc_sensitive::operator << (const sc_interface &i)
524479Sbinkertn@umich.edu{
534479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityInterface(currentProcess, &i);
544479Sbinkertn@umich.edu    return *this;
554479Sbinkertn@umich.edu}
564479Sbinkertn@umich.edu
574479Sbinkertn@umich.edusc_sensitive &
584479Sbinkertn@umich.edusc_sensitive::operator << (const sc_port_base &b)
594479Sbinkertn@umich.edu{
604479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityPort(currentProcess, &b);
614479Sbinkertn@umich.edu    return *this;
624479Sbinkertn@umich.edu}
634479Sbinkertn@umich.edu
644479Sbinkertn@umich.edusc_sensitive &
654479Sbinkertn@umich.edusc_sensitive::operator << (sc_event_finder &f)
664479Sbinkertn@umich.edu{
674479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(currentProcess, &f);
684479Sbinkertn@umich.edu    return *this;
694479Sbinkertn@umich.edu}
704479Sbinkertn@umich.edu
714479Sbinkertn@umich.edusc_sensitive &
724479Sbinkertn@umich.edusc_sensitive::operator << (::sc_gem5::Process *p)
734479Sbinkertn@umich.edu{
744479Sbinkertn@umich.edu    currentProcess = p;
754479Sbinkertn@umich.edu    return *this;
764479Sbinkertn@umich.edu}
774479Sbinkertn@umich.edu
784479Sbinkertn@umich.edu
794479Sbinkertn@umich.eduvoid
804479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p,
814479Sbinkertn@umich.edu                           const sc_signal_in_if<bool> &i)
824479Sbinkertn@umich.edu{
834479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityEvent(p, &i.posedge_event());
844479Sbinkertn@umich.edu}
854479Sbinkertn@umich.edu
864479Sbinkertn@umich.eduvoid
874479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p,
884479Sbinkertn@umich.edu                           const sc_signal_in_if<sc_dt::sc_logic> &i)
894479Sbinkertn@umich.edu{
904479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityEvent(p, &i.posedge_event());
914479Sbinkertn@umich.edu}
924479Sbinkertn@umich.edu
934479Sbinkertn@umich.eduvoid
944479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p, const sc_in<bool> &port)
954479Sbinkertn@umich.edu{
964479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(p, &port.pos());
974479Sbinkertn@umich.edu}
984479Sbinkertn@umich.edu
994479Sbinkertn@umich.eduvoid
1004479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p,
1014479Sbinkertn@umich.edu                           const sc_in<sc_dt::sc_logic> &port)
1024479Sbinkertn@umich.edu{
1034479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(p, &port.pos());
1044479Sbinkertn@umich.edu}
1054479Sbinkertn@umich.edu
1064479Sbinkertn@umich.eduvoid
1074479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p, const sc_inout<bool> &port)
1084479Sbinkertn@umich.edu{
1094479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(p, &port.pos());
1104479Sbinkertn@umich.edu}
1114479Sbinkertn@umich.edu
1124479Sbinkertn@umich.eduvoid
1134479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p,
1144479Sbinkertn@umich.edu                           const sc_inout<sc_dt::sc_logic> &port)
1154479Sbinkertn@umich.edu{
1164479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(p, &port.pos());
1174479Sbinkertn@umich.edu}
1184479Sbinkertn@umich.edu
1194479Sbinkertn@umich.eduvoid
1204479Sbinkertn@umich.edusc_sensitive::operator () (::sc_gem5::Process *p, sc_event_finder &f)
1214479Sbinkertn@umich.edu{
1224479Sbinkertn@umich.edu    sc_gem5::newStaticSensitivityFinder(p, &f);
1234479Sbinkertn@umich.edu}
1244479Sbinkertn@umich.edu
1254479Sbinkertn@umich.edu} // namespace sc_core
1264479Sbinkertn@umich.edu