00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __TLM_FIFO_IFS_H__
00024 #define __TLM_FIFO_IFS_H__
00025
00026 #include "tlm_h/tlm_req_rsp/tlm_1_interfaces/tlm_core_ifs.h"
00027
00028 namespace tlm {
00029
00030
00031
00032
00033
00034
00035
00036 template< typename T >
00037 class tlm_fifo_debug_if : public virtual sc_core::sc_interface
00038 {
00039 public:
00040 virtual int used() const = 0;
00041 virtual int size() const = 0;
00042 virtual void debug() const = 0;
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052 virtual bool nb_peek( T & , int n ) const = 0;
00053 virtual bool nb_poke( const T & , int n = 0 ) = 0;
00054
00055 };
00056
00057
00058
00059 template < typename T >
00060 class tlm_fifo_put_if :
00061 public virtual tlm_put_if<T> ,
00062 public virtual tlm_fifo_debug_if<T> {};
00063
00064 template < typename T >
00065 class tlm_fifo_get_if :
00066 public virtual tlm_get_peek_if<T> ,
00067 public virtual tlm_fifo_debug_if<T> {};
00068
00069 class tlm_fifo_config_size_if : public virtual sc_core::sc_interface
00070 {
00071 public:
00072 virtual void nb_expand( unsigned int n = 1 ) = 0;
00073 virtual void nb_unbound( unsigned int n = 16 ) = 0;
00074
00075 virtual bool nb_reduce( unsigned int n = 1 ) = 0;
00076 virtual bool nb_bound( unsigned int n ) = 0;
00077
00078 };
00079
00080 }
00081
00082 #endif
00083