30 #ifndef __SYSTEMC_EXT_CHANNEL_SC_INOUT_HH__ 31 #define __SYSTEMC_EXT_CHANNEL_SC_INOUT_HH__ 35 #include "../core/sc_event.hh" 36 #include "../core/sc_main.hh" 37 #include "../core/sc_port.hh" 38 #include "../dt/bit/sc_logic.hh" 39 #include "../utils/sc_trace_file.hh" 116 for (
auto params: traceParamsVec)
117 sc_trace(params->tf, (*this)->read(), params->name);
119 traceParamsVec.clear();
122 const T &
read()
const {
return (*this)->read(); }
123 operator const T& ()
const {
return (*this)->read(); }
125 void write(
const T &
t) { (*this)->write(t); }
127 operator = (
const T &
t)
141 (*this)->
write(
p->read());
147 (*this)->
write(
p->read());
161 return (*this)->value_changed_event();
163 bool event()
const {
return (*this)->event(); }
166 virtual const char *
kind()
const {
return "sc_inout"; }
199 _valueChangedFinder(*this,
206 _valueChangedFinder(*this,
216 _valueChangedFinder(*this,
224 _valueChangedFinder(*this,
231 _valueChangedFinder(*this,
238 _valueChangedFinder(*this,
245 _valueChangedFinder(*this,
252 _valueChangedFinder(*this,
265 initValue =
new bool;
280 for (
auto params: traceParamsVec)
281 sc_trace(params->tf, (*this)->read(), params->name);
283 traceParamsVec.clear();
286 const bool &
read()
const {
return (*this)->read(); }
287 operator const bool& ()
const {
return (*this)->read(); }
289 void write(
const bool &
b) { (*this)->write(b); }
291 operator = (
const bool &
b)
305 (*this)->
write(
p->read());
311 (*this)->
write(
p->read());
325 return (*this)->value_changed_event();
329 bool event()
const {
return (*this)->event(); }
330 bool posedge()
const {
return (*this)->posedge(); }
331 bool negedge()
const {
return (*this)->negedge(); }
337 virtual const char *
kind()
const {
return "sc_inout"; }
362 i.add_trace(tf,
name);
369 public sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1>
374 _valueChangedFinder(*this,
382 _valueChangedFinder(*this,
393 _valueChangedFinder(*this,
402 _valueChangedFinder(*this,
411 _valueChangedFinder(*this,
420 _valueChangedFinder(*this,
429 _valueChangedFinder(*this,
438 _valueChangedFinder(*this,
458 initialize(i.
read());
470 for (
auto params: traceParamsVec)
471 sc_trace(params->tf, (*this)->read(), params->name);
473 traceParamsVec.clear();
495 (*this)->
write(
p->read());
501 (*this)->
write(
p->read());
515 return (*this)->value_changed_event();
519 bool event()
const {
return (*this)->event(); }
520 bool posedge()
const {
return (*this)->posedge(); }
521 bool negedge()
const {
return (*this)->negedge(); }
527 virtual const char *
kind()
const {
return "sc_inout"; }
554 i.add_trace(tf,
name);
561 #endif //__SYSTEMC_EXT_CHANNEL_SC_INOUT_HH__ sc_inout(const char *name, sc_port_b< sc_signal_inout_if< T > > &parent)
sc_event_finder_t< sc_signal_inout_if< T > > _valueChangedFinder
const std::string & name()
sc_inout(const char *name, const sc_signal_inout_if< T > &interface)
const sc_event & value_changed_event() const
sc_inout(const sc_signal_inout_if< sc_dt::sc_logic > &interface)
void sc_trace(sc_trace_file *tf, const sc_inout< T > &i, const std::string &name)
const sc_event & value_changed_event() const
virtual const char * kind() const
sc_event_finder & pos() const
sc_trace_params_vec traceParamsVec
virtual const T & read() const =0
const sc_event & value_changed_event() const
sc_inout(const char *name, const sc_signal_inout_if< sc_dt::sc_logic > &interface)
const bool & read() const
virtual void end_of_elaboration()
virtual const char * kind() const
virtual void end_of_elaboration()
sc_inout(const char *name)
virtual void end_of_elaboration()
void initialize(const sc_signal_in_if< T > &i)
sc_event_finder & value_changed() const
sc_event_finder & neg() const
sc_event_finder & neg() const
sc_inout(sc_port_b< sc_signal_inout_if< T > > &parent)
sc_event_finder & pos() const
const sc_event & posedge_event() const
sc_event_finder & value_changed() const
const sc_dt::sc_logic & read() const
virtual const sc_dt::sc_logic & read() const =0
void write(const bool &b)
virtual const char * kind() const
sc_inout(const char *name)
const sc_event & negedge_event() const
void sc_trace< bool >(sc_trace_file *tf, const sc_inout< bool > &i, const std::string &name)
sc_inout(sc_port< sc_signal_inout_if< T >, 1 > &parent)
sc_inout(const char *name, sc_port< sc_signal_inout_if< T >, 1 > &parent)
const sc_event & posedge_event() const
void initialize(const sc_signal_in_if< bool > &i)
void add_trace(sc_trace_file *tf, const std::string &name) const
virtual const bool & read() const =0
const sc_event & default_event() const
sc_inout(const sc_signal_inout_if< T > &interface)
void add_trace(sc_trace_file *tf, const std::string &name) const
const sc_event & default_event() const
sc_inout(const char *name, sc_port_b< sc_signal_inout_if< sc_dt::sc_logic > > &parent)
void add_trace(sc_trace_file *tf, const std::string &name) const
void write(const sc_dt::sc_logic &l)
sc_event_finder_t< sc_signal_inout_if< bool > > _posFinder
sc_event_finder_t< sc_signal_inout_if< sc_dt::sc_logic > > _valueChangedFinder
void initialize(const sc_dt::sc_logic &l)
sc_status sc_get_status()
void initialize(const bool &b)
sc_inout(const char *name, sc_port< sc_signal_inout_if< sc_dt::sc_logic >, 1 > &parent)
const sc_event & negedge_event() const
sc_event_finder & value_changed() const
sc_trace_params_vec traceParamsVec
sc_inout(sc_port< sc_signal_inout_if< sc_dt::sc_logic >, 1 > &parent)
sc_inout(sc_port_b< sc_signal_inout_if< bool > > &parent)
sc_inout(const char *name, sc_port_b< sc_signal_inout_if< bool > > &parent)
const sc_event & default_event() const
sc_event_finder_t< sc_signal_inout_if< sc_dt::sc_logic > > _negFinder
sc_inout(const char *name, sc_port< sc_signal_inout_if< bool >, 1 > &parent)
void initialize(const T &t)
sc_inout(sc_port_b< sc_signal_inout_if< sc_dt::sc_logic > > &parent)
sc_event_finder_t< sc_signal_inout_if< bool > > _valueChangedFinder
sc_event_finder_t< sc_signal_inout_if< sc_dt::sc_logic > > _posFinder
sc_inout(const char *name)
sc_inout(const sc_signal_inout_if< bool > &interface)
void initialize(const sc_signal_in_if< sc_dt::sc_logic > &i)
sc_trace_params_vec traceParamsVec
sc_dt::sc_logic * initValue
sc_event_finder_t< sc_signal_inout_if< bool > > _negFinder
sc_inout(const char *name, const sc_signal_inout_if< bool > &interface)
sc_inout(sc_port< sc_signal_inout_if< bool >, 1 > &parent)