diff options
Diffstat (limited to 'src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces')
4 files changed, 164 insertions, 171 deletions
diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h index 4c1340338..2cd919bd2 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h @@ -17,133 +17,122 @@ *****************************************************************************/ -// -// Note to the LRM writer : This is the core of the TLM standard -// - - -#ifndef __TLM_CORE_IFS_H__ -#define __TLM_CORE_IFS_H__ - -//#include <systemc> +#ifndef \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ +#define \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ #include "tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h" -namespace tlm { - -// bidirectional blocking interfaces +namespace tlm +{ -template < typename REQ , typename RSP > +// Bidirectional blocking interfaces. +template <typename REQ, typename RSP> class tlm_transport_if : public virtual sc_core::sc_interface { -public: - virtual RSP transport( const REQ & ) = 0; - - virtual void transport( const REQ &req , RSP &rsp ) { - rsp = transport( req ); - } - + public: + virtual RSP transport(const REQ &) = 0; + + virtual void + transport(const REQ &req, RSP &rsp) + { + rsp = transport(req); + } }; - -// uni-directional blocking interfaces - -template < typename T > +// Uni-directional blocking interfaces. +template <typename T> class tlm_blocking_get_if : public virtual sc_core::sc_interface { -public: - virtual T get( tlm_tag<T> *t = 0 ) = 0; - virtual void get( T &t ) { t = get(); } - + public: + virtual T get(tlm_tag<T> *t=nullptr) = 0; + virtual void get(T &t) { t = get(); } }; -template < typename T > +template <typename T> class tlm_blocking_put_if : public virtual sc_core::sc_interface { -public: - virtual void put( const T &t ) = 0; + public: + virtual void put(const T &t) = 0; }; -// uni-directional non blocking interfaces +// Uni-directional non blocking interfaces. -template < typename T > +template <typename T> class tlm_nonblocking_get_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_get( T &t ) = 0; - virtual bool nb_can_get( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_get( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_get(T &t) = 0; + virtual bool nb_can_get(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_get(tlm_tag<T> *t=nullptr) const = 0; }; -template < typename T > +template <typename T> class tlm_nonblocking_put_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_put( const T &t ) = 0; - virtual bool nb_can_put( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_put( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_put(const T &t) = 0; + virtual bool nb_can_put(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_put(tlm_tag<T> *t=nullptr) const = 0; }; +// Combined uni-directional blocking and non blocking. +template <typename T> +class tlm_get_if : public virtual tlm_blocking_get_if<T>, + public virtual tlm_nonblocking_get_if<T> +{}; -// combined uni-directional blocking and non blocking +template <typename T> +class tlm_put_if : public virtual tlm_blocking_put_if<T>, + public virtual tlm_nonblocking_put_if<T> +{}; -template < typename T > -class tlm_get_if : - public virtual tlm_blocking_get_if< T > , - public virtual tlm_nonblocking_get_if< T > {}; - -template < typename T > -class tlm_put_if : - public virtual tlm_blocking_put_if< T > , - public virtual tlm_nonblocking_put_if< T > {}; - - -// peek interfaces - -template < typename T > +// Peek interfaces. +template <typename T> class tlm_blocking_peek_if : public virtual sc_core::sc_interface { -public: - virtual T peek( tlm_tag<T> *t = 0 ) const = 0; - virtual void peek( T &t ) const { t = peek(); } - + public: + virtual T peek(tlm_tag<T> *t=nullptr) const = 0; + virtual void peek(T &t) const { t = peek(); } }; -template < typename T > +template <typename T> class tlm_nonblocking_peek_if : public virtual sc_core::sc_interface { -public: - virtual bool nb_peek( T &t ) const = 0; - virtual bool nb_can_peek( tlm_tag<T> *t = 0 ) const = 0; - virtual const sc_core::sc_event &ok_to_peek( tlm_tag<T> *t = 0 ) const = 0; + public: + virtual bool nb_peek(T &t) const = 0; + virtual bool nb_can_peek(tlm_tag<T> *t=nullptr) const = 0; + virtual const sc_core::sc_event & + ok_to_peek(tlm_tag<T> *t=nullptr) const = 0; }; -template < typename T > +template <typename T> class tlm_peek_if : - public virtual tlm_blocking_peek_if< T > , - public virtual tlm_nonblocking_peek_if< T > {}; - -// get_peek interfaces - -template < typename T > -class tlm_blocking_get_peek_if : - public virtual tlm_blocking_get_if<T> , - public virtual tlm_blocking_peek_if<T> {}; - -template < typename T > -class tlm_nonblocking_get_peek_if : - public virtual tlm_nonblocking_get_if<T> , - public virtual tlm_nonblocking_peek_if<T> {}; - - -template < typename T > -class tlm_get_peek_if : - public virtual tlm_get_if<T> , - public virtual tlm_peek_if<T> , - public virtual tlm_blocking_get_peek_if<T> , - public virtual tlm_nonblocking_get_peek_if<T> - {}; + public virtual tlm_blocking_peek_if<T>, + public virtual tlm_nonblocking_peek_if<T> +{}; + +// Get_peek interfaces. +template <typename T> +class tlm_blocking_get_peek_if : public virtual tlm_blocking_get_if<T>, + public virtual tlm_blocking_peek_if<T> +{}; + +template <typename T> +class tlm_nonblocking_get_peek_if : public virtual tlm_nonblocking_get_if<T>, + public virtual tlm_nonblocking_peek_if<T> +{}; + +template <typename T> +class tlm_get_peek_if : public virtual tlm_get_if<T>, + public virtual tlm_peek_if<T>, public virtual tlm_blocking_get_peek_if<T>, + public virtual tlm_nonblocking_get_peek_if<T> +{}; } // namespace tlm #endif +/* __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM1_INTERFACES_TLM_CORE_IFS_H__ */ diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_fifo_ifs.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_fifo_ifs.h index d9b2b985b..57418ae92 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_fifo_ifs.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_fifo_ifs.h @@ -17,17 +17,15 @@ *****************************************************************************/ -// -// Note to the LRM writer : These interfaces are channel specific interfaces -// useful in the context of tlm_fifo. -// - -#ifndef __TLM_FIFO_IFS_H__ -#define __TLM_FIFO_IFS_H__ +#ifndef \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_FIFO_IFS_H__ +#define \ + __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_FIFO_IFS_H__ #include "tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h" -namespace tlm { +namespace tlm +{ // // Fifo specific interfaces @@ -35,51 +33,50 @@ namespace tlm { // Fifo Debug Interface -template< typename T > +template <typename T> class tlm_fifo_debug_if : public virtual sc_core::sc_interface { -public: - virtual int used() const = 0; - virtual int size() const = 0; - virtual void debug() const = 0; - - // - // non blocking peek and poke - no notification - // - // n is index of data : - // 0 <= n < size(), where 0 is most recently written, and size() - 1 - // is oldest ie the one about to be read. - // - - virtual bool nb_peek( T & , int n ) const = 0; - virtual bool nb_poke( const T & , int n = 0 ) = 0; - + public: + virtual int used() const = 0; + virtual int size() const = 0; + virtual void debug() const = 0; + + // + // non blocking peek and poke - no notification + // + // n is index of data : + // 0 <= n < size(), where 0 is most recently written, and size() - 1 + // is oldest ie the one about to be read. + // + + virtual bool nb_peek(T &, int n) const = 0; + virtual bool nb_poke(const T&, int n=0) = 0; }; // fifo interfaces = extended + debug -template < typename T > -class tlm_fifo_put_if : - public virtual tlm_put_if<T> , - public virtual tlm_fifo_debug_if<T> {}; +template <typename T> +class tlm_fifo_put_if : public virtual tlm_put_if<T>, + public virtual tlm_fifo_debug_if<T> +{}; -template < typename T > +template <typename T> class tlm_fifo_get_if : - public virtual tlm_get_peek_if<T> , - public virtual tlm_fifo_debug_if<T> {}; + public virtual tlm_get_peek_if<T>, + public virtual tlm_fifo_debug_if<T> +{}; class tlm_fifo_config_size_if : public virtual sc_core::sc_interface { -public: - virtual void nb_expand( unsigned int n = 1 ) = 0; - virtual void nb_unbound( unsigned int n = 16 ) = 0; - - virtual bool nb_reduce( unsigned int n = 1 ) = 0; - virtual bool nb_bound( unsigned int n ) = 0; + public: + virtual void nb_expand(unsigned int n=1) = 0; + virtual void nb_unbound(unsigned int n=16) = 0; + virtual bool nb_reduce(unsigned int n=1) = 0; + virtual bool nb_bound(unsigned int n) = 0; }; } // namespace tlm #endif - +/* __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_FIFO_IFS_H__*/ diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_master_slave_ifs.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_master_slave_ifs.h index 5bac3c877..29a89de47 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_master_slave_ifs.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_master_slave_ifs.h @@ -17,57 +17,62 @@ *****************************************************************************/ -#ifndef __TLM_MASTER_SLAVE_IFS_H__ -#define __TLM_MASTER_SLAVE_IFS_H__ +#ifndef \ + __TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_MASTER_SLAVE_IFS_H__ +#define \ + __TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_MASTER_SLAVE_IFS_H__ #include "tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h" -namespace tlm { +namespace tlm +{ // // req/rsp combined interfaces // -// blocking - -template < typename REQ , typename RSP> +// Blocking. +template <typename REQ, typename RSP> class tlm_blocking_master_if : - public virtual tlm_blocking_put_if< REQ > , - public virtual tlm_blocking_get_peek_if< RSP > {}; + public virtual tlm_blocking_put_if<REQ>, + public virtual tlm_blocking_get_peek_if<RSP> +{}; -template < typename REQ , typename RSP> +template <typename REQ, typename RSP> class tlm_blocking_slave_if : - public virtual tlm_blocking_put_if< RSP > , - public virtual tlm_blocking_get_peek_if< REQ > {}; - -// nonblocking + public virtual tlm_blocking_put_if<RSP>, + public virtual tlm_blocking_get_peek_if<REQ> +{}; -template < typename REQ , typename RSP > +// Nonblocking. +template <typename REQ, typename RSP> class tlm_nonblocking_master_if : - public virtual tlm_nonblocking_put_if< REQ > , - public virtual tlm_nonblocking_get_peek_if< RSP > {}; + public virtual tlm_nonblocking_put_if<REQ>, + public virtual tlm_nonblocking_get_peek_if<RSP> +{}; -template < typename REQ , typename RSP > +template <typename REQ, typename RSP> class tlm_nonblocking_slave_if : - public virtual tlm_nonblocking_put_if< RSP > , - public virtual tlm_nonblocking_get_peek_if< REQ > {}; - -// combined - -template < typename REQ , typename RSP > -class tlm_master_if : - public virtual tlm_put_if< REQ > , - public virtual tlm_get_peek_if< RSP > , - public virtual tlm_blocking_master_if< REQ , RSP > , - public virtual tlm_nonblocking_master_if< REQ , RSP > {}; - -template < typename REQ , typename RSP > -class tlm_slave_if : - public virtual tlm_put_if< RSP > , - public virtual tlm_get_peek_if< REQ > , - public virtual tlm_blocking_slave_if< REQ , RSP > , - public virtual tlm_nonblocking_slave_if< REQ , RSP > {}; + public virtual tlm_nonblocking_put_if<RSP>, + public virtual tlm_nonblocking_get_peek_if<REQ> +{}; + +// Combined. +template <typename REQ, typename RSP> +class tlm_master_if : public virtual tlm_put_if<REQ>, + public virtual tlm_get_peek_if<RSP> , + public virtual tlm_blocking_master_if<REQ, RSP>, + public virtual tlm_nonblocking_master_if<REQ, RSP> +{}; + +template <typename REQ, typename RSP> +class tlm_slave_if : public virtual tlm_put_if<RSP>, + public virtual tlm_get_peek_if<REQ>, + public virtual tlm_blocking_slave_if<REQ, RSP>, + public virtual tlm_nonblocking_slave_if<REQ, RSP> +{}; } // namespace tlm #endif +/* __TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_MASTER_SLAVE_IFS_H__ */ diff --git a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h index 230b77d17..b19c904fb 100644 --- a/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h +++ b/src/systemc/ext/tlm_core/tlm_1/tlm_req_rsp/tlm_1_interfaces/tlm_tag.h @@ -17,15 +17,17 @@ *****************************************************************************/ -// -// Note to the LRM writer : This is part of the core TLM standard -// +#ifndef __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_TAG_H__ +#define __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_TAG_H__ -#ifndef __TLM_TAG_H__ -#define __TLM_TAG_H__ +namespace tlm +{ + +template <class T> +class tlm_tag +{}; -namespace tlm { -template<class T> class tlm_tag {}; } #endif +/* __SYSTEMC_EXT_TLM_CORE_TLM_1_TLM_REQ_RSP_TLM_1_INTERFACES_TLM_TAG_H__ */ |