MatchLib
All Classes Namespaces Files Functions Modules Pages
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
FIFO< DataType, FifoLen, NumBanks > Class Template Reference

Configurable FIFO class. More...

#include <fifo.h>

Public Member Functions

typedef NVUINTW (BankSelWidth) BankIdx
 
typedef NVUINTW (AddrWidth) FifoIdx
 
typedef NVUINTW (AddrWidth+1) FifoIdxPlusOne
 
FifoIdx ModIncr (FifoIdx curr_idx)
 
void push (DataType wr_data, BankIdx bidx=0)
 
DataType pop (BankIdx bidx=0)
 
void incrHead (BankIdx bidx=0)
 
DataType peek (BankIdx bidx=0)
 
bool isEmpty (BankIdx bidx=0)
 
bool isFull (BankIdx bidx=0)
 
FifoIdxPlusOne NumFilled (BankIdx bidx=0)
 
FifoIdxPlusOne NumAvailable (BankIdx bidx=0)
 
void reset ()
 
FifoIdx get_head (BankIdx bidx=0)
 
FifoIdx get_tail (BankIdx bidx=0)
 
template<unsigned int Size>
void Marshall (Marshaller< Size > &m)
 

Public Attributes

FifoIdx head [NumBanks]
 
FifoIdx tail [NumBanks]
 
mem_array_sep< DataType, FifoLen *NumBanks, NumBanks > fifo_body
 
bool last_action_was_push [NumBanks]
 

Static Public Attributes

static const int BankSelWidth
 
static const int AddrWidth
 
static const int width = mem_array_sep<DataType, FifoLen * NumBanks, NumBanks>::width + 2 * NumBanks * AddrWidth + NumBanks
 

Detailed Description

template<typename DataType, unsigned int FifoLen, unsigned int NumBanks = 1>
class FIFO< DataType, FifoLen, NumBanks >

Configurable FIFO class.

Template Parameters
DataTypeDataType of entry in FIFO
FifoLenLength of FIFO
NumBanksNumber of FIFO banks
A Simple Example
#include <fifo.h>
...
FIFO<DataType, LenInputBuffer, NumInputs> fifo_inst;
fifo_inst.reset(); // optional in this case, suitable if fifo is a class member rather than local variable
...
// Push to FIFO
if (!fifo_inst.isFull(bank_id)) {
fifo_inst.push(input_data, bank_id);
}
...
// Pop from FIFO
if (!fifo_inst.isEmpty(bank_id)) {
output_data = fifo_inst.pop(bank_id);
}
...
// Peek from FIFO
if (!fifo_inst.isEmpty(bank_id)) {
output_data = fifo_inst.peek(bank_id);
}
...
// IncrHead without reading data from FIFO
fifo_inst.incrHead(bank_id);

Definition at line 65 of file fifo.h.

Constructor & Destructor Documentation

◆ FIFO()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FIFO< DataType, FifoLen, NumBanks >::FIFO ( )
inline

Definition at line 92 of file fifo.h.

Member Function Documentation

◆ ModIncr()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdx FIFO< DataType, FifoLen, NumBanks >::ModIncr ( FifoIdx  curr_idx)
inline

Definition at line 84 of file fifo.h.

◆ push()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
void FIFO< DataType, FifoLen, NumBanks >::push ( DataType  wr_data,
BankIdx  bidx = 0 
)
inline

Definition at line 102 of file fifo.h.

◆ pop()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
DataType FIFO< DataType, FifoLen, NumBanks >::pop ( BankIdx  bidx = 0)
inline

Definition at line 111 of file fifo.h.

◆ incrHead()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
void FIFO< DataType, FifoLen, NumBanks >::incrHead ( BankIdx  bidx = 0)
inline

Definition at line 121 of file fifo.h.

◆ peek()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
DataType FIFO< DataType, FifoLen, NumBanks >::peek ( BankIdx  bidx = 0)
inline

Definition at line 129 of file fifo.h.

◆ isEmpty()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
bool FIFO< DataType, FifoLen, NumBanks >::isEmpty ( BankIdx  bidx = 0)
inline

Definition at line 136 of file fifo.h.

◆ isFull()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
bool FIFO< DataType, FifoLen, NumBanks >::isFull ( BankIdx  bidx = 0)
inline

Definition at line 143 of file fifo.h.

◆ NumFilled()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdxPlusOne FIFO< DataType, FifoLen, NumBanks >::NumFilled ( BankIdx  bidx = 0)
inline

Definition at line 150 of file fifo.h.

◆ NumAvailable()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdxPlusOne FIFO< DataType, FifoLen, NumBanks >::NumAvailable ( BankIdx  bidx = 0)
inline

Definition at line 167 of file fifo.h.

◆ reset()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
void FIFO< DataType, FifoLen, NumBanks >::reset ( )
inline

Definition at line 172 of file fifo.h.

◆ get_head()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdx FIFO< DataType, FifoLen, NumBanks >::get_head ( BankIdx  bidx = 0)
inline

Definition at line 181 of file fifo.h.

◆ get_tail()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdx FIFO< DataType, FifoLen, NumBanks >::get_tail ( BankIdx  bidx = 0)
inline

Definition at line 182 of file fifo.h.

◆ Marshall()

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
template<unsigned int Size>
void FIFO< DataType, FifoLen, NumBanks >::Marshall ( Marshaller< Size > &  m)
inline

Definition at line 185 of file fifo.h.

Member Data Documentation

◆ BankSelWidth

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
const int FIFO< DataType, FifoLen, NumBanks >::BankSelWidth
static
Initial value:
=
(NumBanks == 1) ? 1 : nvhls::nbits<NumBanks - 1>::val

Definition at line 68 of file fifo.h.

◆ AddrWidth

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
const int FIFO< DataType, FifoLen, NumBanks >::AddrWidth
static
Initial value:
=
(FifoLen == 1) ? 1 : nvhls::nbits<FifoLen - 1>::val

Definition at line 70 of file fifo.h.

◆ head

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdx FIFO< DataType, FifoLen, NumBanks >::head[NumBanks]

Definition at line 76 of file fifo.h.

◆ tail

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
FifoIdx FIFO< DataType, FifoLen, NumBanks >::tail[NumBanks]

Definition at line 77 of file fifo.h.

◆ fifo_body

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
mem_array_sep<DataType, FifoLen * NumBanks, NumBanks> FIFO< DataType, FifoLen, NumBanks >::fifo_body

Definition at line 79 of file fifo.h.

◆ last_action_was_push

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
bool FIFO< DataType, FifoLen, NumBanks >::last_action_was_push[NumBanks]

Definition at line 80 of file fifo.h.

◆ width

template<typename DataType , unsigned int FifoLen, unsigned int NumBanks = 1>
const int FIFO< DataType, FifoLen, NumBanks >::width = mem_array_sep<DataType, FifoLen * NumBanks, NumBanks>::width + 2 * NumBanks * AddrWidth + NumBanks
static

Definition at line 81 of file fifo.h.


The documentation for this class was generated from the following file: