diff options
Diffstat (limited to 'src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters')
-rw-r--r-- | src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters/tlm_adapters.h | 131 |
1 files changed, 63 insertions, 68 deletions
diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters/tlm_adapters.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters/tlm_adapters.h index 13207187a..c81df4b15 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters/tlm_adapters.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_adapters/tlm_adapters.h @@ -17,89 +17,84 @@ *****************************************************************************/ -#ifndef __TLM_ADAPTERS_H__ -#define __TLM_ADAPTERS_H__ +#ifndef __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_ADAPTERS_H__ +#define __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_ADAPTERS_H__ #include "tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_master_slave_ifs.h" -namespace tlm { - -template< typename REQ , typename RSP > -class tlm_transport_to_master : - public sc_core::sc_module , - public virtual tlm_transport_if< REQ , RSP > +namespace tlm { -public: - sc_core::sc_export< tlm_transport_if< REQ , RSP > > target_export; - sc_core::sc_port< tlm_master_if< REQ , RSP > > master_port; - - tlm_transport_to_master( sc_core::sc_module_name nm ) : - sc_core::sc_module( nm ) { - - target_export( *this ); - - } - - tlm_transport_to_master() : - sc_core::sc_module( sc_core::sc_module_name( sc_core::sc_gen_unique_name( "transport_to_master" ) ) ){ - - target_export( *this ); - - } - RSP transport( const REQ &req ) { - - mutex.lock(); - - master_port->put( req ); - rsp = master_port->get(); +template <typename REQ, typename RSP> +class tlm_transport_to_master : public sc_core::sc_module, + public virtual tlm_transport_if<REQ, RSP> +{ + public: + sc_core::sc_export<tlm_transport_if<REQ, RSP>> target_export; + sc_core::sc_port<tlm_master_if<REQ, RSP>> master_port; + + tlm_transport_to_master(sc_core::sc_module_name nm) : + sc_core::sc_module(nm) + { + target_export( *this ); + } - mutex.unlock(); - return rsp; + tlm_transport_to_master() : + sc_core::sc_module(sc_core::sc_module_name( + sc_core::sc_gen_unique_name("transport_to_master"))) + { + target_export( *this ); + } - } + RSP + transport(const REQ &req) + { + mutex.lock(); + master_port->put(req); + rsp = master_port->get(); -private: - sc_core::sc_mutex mutex; - RSP rsp; + mutex.unlock(); + return rsp; + } + private: + sc_core::sc_mutex mutex; + RSP rsp; }; -template< typename REQ , typename RSP > +template <typename REQ, typename RSP> class tlm_slave_to_transport : public sc_core::sc_module { -public: - - SC_HAS_PROCESS( tlm_slave_to_transport ); - - sc_core::sc_port< tlm_slave_if< REQ , RSP > > slave_port; - sc_core::sc_port< tlm_transport_if< REQ , RSP > > initiator_port; - - tlm_slave_to_transport( sc_core::sc_module_name nm ) : sc_core::sc_module( nm ) - {} - - tlm_slave_to_transport() : - sc_core::sc_module( sc_core::sc_module_name( sc_core::sc_gen_unique_name("slave_to_transport") ) ) - {} - -private: - void run() { - - REQ req; - RSP rsp; - - while( true ) { - - slave_port->get( req ); - rsp = initiator_port->transport( req ); - slave_port->put( rsp ); - + public: + SC_HAS_PROCESS(tlm_slave_to_transport); + + sc_core::sc_port<tlm_slave_if<REQ, RSP>> slave_port; + sc_core::sc_port<tlm_transport_if<REQ, RSP>> initiator_port; + + tlm_slave_to_transport(sc_core::sc_module_name nm) : + sc_core::sc_module(nm) + {} + + tlm_slave_to_transport() : + sc_core::sc_module(sc_core::sc_module_name( + sc_core::sc_gen_unique_name("slave_to_transport"))) + {} + + private: + void + run() + { + REQ req; + RSP rsp; + + while (true) { + slave_port->get(req); + rsp = initiator_port->transport(req); + slave_port->put(rsp); + } } - - } - }; } // namespace tlm -#endif +#endif /* __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_ADAPTERS_H__*/ |