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