MatchLib
All Classes Namespaces Files Functions Modules Pages
Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
mem_array_sep< T, NumEntries, NumBanks, NumByteEnables > Class Template Reference

Abstract Memory Class. More...

#include <mem_array.h>

Public Types

typedef Wrapped< T > WData_t
 
typedef sc_lv< WordWidth > Data_t
 
typedef sc_lv< SliceWidth > Slice_t
 
typedef Slice_t BankType[NumEntriesPerBank *NumByteEnables]
 

Public Member Functions

typedef NVUINTW (nvhls::index_width< NumEntriesPerBank >::val) LocalIndex
 
typedef NVUINTW (nvhls::index_width< NumEntriesPerBank *NumByteEnables >::val) LocalSliceIndex
 
typedef NVUINTW (nvhls::index_width< NumBanks >::val) BankIndex
 
typedef NVUINTW (NumByteEnables) WriteMask
 
typedef NVUINTW (nvhls::index_width< NumByteEnables >::val) ByteEnableIndex
 
void clear ()
 
read (LocalIndex idx, BankIndex bank_sel=0, WriteMask read_mask=~static_cast< WriteMask >(0))
 
void write (LocalIndex idx, BankIndex bank_sel, T val, WriteMask write_mask=~static_cast< WriteMask >(0), bool wce=1)
 
template<unsigned int Size>
void Marshall (Marshaller< Size > &m)
 

Public Attributes

nvhls::nv_array< BankType, NumBanks > bank
 

Static Public Attributes

static const unsigned int NumEntriesPerBank = NumEntries/NumBanks
 
static const unsigned int WordWidth = WData_t::width
 
static const unsigned int SliceWidth = WordWidth/NumByteEnables
 
static const int width = NumEntries * WordWidth
 

Detailed Description

template<typename T, int NumEntries, int NumBanks, int NumByteEnables = 1>
class mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >

Abstract Memory Class.

Template Parameters
TDatatype of an entry to be stored in memory
NumEntriesNumber of entries in memory
NumBanksNumber of banks in memory
A Simple Example
#include <mem_array.h>
...
mem_array_sep <MemWord_t, NUM_ENTRIES, NBANKS> banks;
read_data = banks.read(bank_addr, bank_sel);
banks.write(bank_addr, bank_sel, write_data);
...

Definition at line 83 of file mem_array.h.

Member Typedef Documentation

◆ WData_t

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
typedef Wrapped<T> mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::WData_t

Definition at line 85 of file mem_array.h.

◆ Data_t

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
typedef sc_lv<WordWidth> mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::Data_t

Definition at line 92 of file mem_array.h.

◆ Slice_t

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
typedef sc_lv<SliceWidth> mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::Slice_t

Definition at line 93 of file mem_array.h.

◆ BankType

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
typedef Slice_t mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::BankType[NumEntriesPerBank *NumByteEnables]

Definition at line 97 of file mem_array.h.

Constructor & Destructor Documentation

◆ mem_array_sep()

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::mem_array_sep ( )
inline

Definition at line 101 of file mem_array.h.

Member Function Documentation

◆ clear()

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
void mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::clear ( )
inline

Definition at line 112 of file mem_array.h.

◆ read()

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
T mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::read ( LocalIndex  idx,
BankIndex  bank_sel = 0,
WriteMask  read_mask = ~static_cast<WriteMask>(0) 
)
inline

Definition at line 121 of file mem_array.h.

◆ write()

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
void mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::write ( LocalIndex  idx,
BankIndex  bank_sel,
val,
WriteMask  write_mask = ~static_cast<WriteMask>(0),
bool  wce = 1 
)
inline

Definition at line 140 of file mem_array.h.

◆ Marshall()

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
template<unsigned int Size>
void mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::Marshall ( Marshaller< Size > &  m)
inline

Definition at line 162 of file mem_array.h.

Member Data Documentation

◆ NumEntriesPerBank

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
const unsigned int mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::NumEntriesPerBank = NumEntries/NumBanks
static

Definition at line 86 of file mem_array.h.

◆ WordWidth

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
const unsigned int mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::WordWidth = WData_t::width
static

Definition at line 87 of file mem_array.h.

◆ SliceWidth

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
const unsigned int mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::SliceWidth = WordWidth/NumByteEnables
static

Definition at line 88 of file mem_array.h.

◆ bank

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
nvhls::nv_array<BankType, NumBanks> mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::bank

Definition at line 98 of file mem_array.h.

◆ width

template<typename T , int NumEntries, int NumBanks, int NumByteEnables = 1>
const int mem_array_sep< T, NumEntries, NumBanks, NumByteEnables >::width = NumEntries * WordWidth
static

Definition at line 99 of file mem_array.h.


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