sc_sensitive.hh revision 13210:8f6d757c46dc
12SN/A/*
29955SGeoffrey.Blake@arm.com * Copyright 2018 Google, Inc.
39955SGeoffrey.Blake@arm.com *
49955SGeoffrey.Blake@arm.com * Redistribution and use in source and binary forms, with or without
59955SGeoffrey.Blake@arm.com * modification, are permitted provided that the following conditions are
69955SGeoffrey.Blake@arm.com * met: redistributions of source code must retain the above copyright
79955SGeoffrey.Blake@arm.com * notice, this list of conditions and the following disclaimer;
89955SGeoffrey.Blake@arm.com * redistributions in binary form must reproduce the above copyright
99955SGeoffrey.Blake@arm.com * notice, this list of conditions and the following disclaimer in the
109955SGeoffrey.Blake@arm.com * documentation and/or other materials provided with the distribution;
119955SGeoffrey.Blake@arm.com * neither the name of the copyright holders nor the names of its
129955SGeoffrey.Blake@arm.com * contributors may be used to endorse or promote products derived from
139955SGeoffrey.Blake@arm.com * this software without specific prior written permission.
141762SN/A *
157778Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
162SN/A * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
172SN/A * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
182SN/A * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
192SN/A * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
202SN/A * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
212SN/A * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
222SN/A * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
232SN/A * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
242SN/A * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
252SN/A * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
262SN/A *
272SN/A * Authors: Gabe Black
282SN/A */
292SN/A
302SN/A#ifndef __SYSTEMC_EXT_CORE_SC_SENSITIVE_HH__
312SN/A#define __SYSTEMC_EXT_CORE_SC_SENSITIVE_HH__
322SN/A
332SN/Anamespace sc_gem5
342SN/A{
352SN/A
362SN/Aclass Process;
372SN/A
382SN/A} // namespace sc_gem5
392SN/A
402665Ssaidi@eecs.umich.edunamespace sc_dt
412665Ssaidi@eecs.umich.edu{
422665Ssaidi@eecs.umich.edu
437778Sgblack@eecs.umich.educlass sc_logic;
449955SGeoffrey.Blake@arm.com
452SN/A} // namespace sc_dt
462SN/A
471078SN/Anamespace sc_core
481078SN/A{
491078SN/A
501114SN/Aclass sc_event;
511078SN/Aclass sc_event_finder;
521114SN/Aclass sc_interface;
531114SN/Aclass sc_module;
541114SN/Aclass sc_port_base;
556216Snate@binkert.org
5611263Sandreas.sandberg@arm.comtemplate <class T>
571078SN/Aclass sc_signal_in_if;
581078SN/A
591078SN/Atemplate <class T>
601078SN/Aclass sc_in;
611078SN/A
621078SN/Atemplate <class T>
631078SN/Aclass sc_inout;
641078SN/A
651078SN/Aclass sc_sensitive
661078SN/A{
671078SN/A  public:
681078SN/A    sc_sensitive &operator << (const sc_event &);
691078SN/A    sc_sensitive &operator << (const sc_interface &);
701078SN/A    sc_sensitive &operator << (const sc_port_base &);
712SN/A    sc_sensitive &operator << (sc_event_finder &);
721114SN/A
732SN/A    sc_sensitive &operator << (::sc_gem5::Process *p);
741114SN/A
751114SN/A    // Nonstandard.
761114SN/A    void operator () (::sc_gem5::Process *p, const sc_signal_in_if<bool> &);
771114SN/A    void operator () (::sc_gem5::Process *p,
781114SN/A                      const sc_signal_in_if<sc_dt::sc_logic> &);
791114SN/A    void operator () (::sc_gem5::Process *p, const sc_in<bool> &);
801114SN/A    void operator () (::sc_gem5::Process *p, const sc_in<sc_dt::sc_logic> &);
811078SN/A    void operator () (::sc_gem5::Process *p, const sc_inout<bool> &);
821114SN/A    void operator () (::sc_gem5::Process *p,
831114SN/A                      const sc_inout<sc_dt::sc_logic> &);
841114SN/A    void operator () (::sc_gem5::Process *p, sc_event_finder &);
851114SN/A
861114SN/A  private:
871114SN/A    friend class sc_module;
881114SN/A
891079SN/A    // Install all the static events which may not have been ready at
901114SN/A    // construction time, like the default_event of the peer of an unbound
911114SN/A    // port.
921114SN/A    void finalize();
931114SN/A
941114SN/A    sc_sensitive();
951114SN/A
9610251Satgutier@umich.edu    ::sc_gem5::Process *currentProcess;
9710251Satgutier@umich.edu};
9810251Satgutier@umich.edu
9910251Satgutier@umich.edu} // namespace sc_core
10010251Satgutier@umich.edu
10110251Satgutier@umich.edu#endif  //__SYSTEMC_EXT_CORE_SC_SENSITIVE_HH__
10210251Satgutier@umich.edu