MatchLib
All Classes Namespaces Files Functions Modules Pages
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen > Class Template Reference

Scratchpad Memories with arbitration and queuing. More...

#include <ArbitratedScratchpad.h>

Classes

struct  bank_req_t
 
struct  bank_rsp_t
 

Public Types

typedef cli_req_t< DataType, addr_width, NumInputs > req_t
 
typedef cli_rsp_t< DataType, NumInputs > rsp_t
 

Public Member Functions

typedef NVUINTW (log2_nbanks) bank_sel_t
 
typedef NVUINTW (bank_addr_width) bank_addr_t
 
typedef NVUINTW (log2_inputs) input_sel_t
 
void compute_bank_request (req_t &curr_cli_req, bank_req_t bank_req[NumInputs], bank_sel_t bank_sel[NumInputs], bool bank_req_valid[NumInputs])
 
void banks_load_store (bank_req_t bank_req[NumBanks], bool bank_req_valid[NumBanks], bank_rsp_t bank_rsp[NumBanks])
 
void reset ()
 
void load_store (bank_req_t bank_req[NumInputs], bank_sel_t bank_sel[NumInputs], bool bank_req_valid[NumInputs], rsp_t &load_rsp, bool input_ready[NumInputs])
 

Public Attributes

mem_array_sep< DataType, CapacityInBytes, NumBanks > banks
 
bank_req_t bank_reqs [NumInputs]
 
bank_rsp_t bank_rsps [NumInputs]
 
ArbitratedCrossbar< bank_req_t, NumInputs, NumBanks, InputQueueLen, 0 > request_xbar
 

Static Public Attributes

static const int kDebugLevel = 2
 
static const int addr_width = nvhls::nbits<CapacityInBytes - 1>::val
 
static const int log2_nbanks = (NumBanks == 1) ? 1 : nvhls::nbits<NumBanks - 1>::val
 
static const int log2_inputs = (NumInputs == 1) ? 1 : nvhls::nbits<NumInputs - 1>::val
 
static const bool is_nbanks_power_of_2 = (NumBanks & (NumBanks - 1)) == 0
 
static const int bank_addr_width = (is_nbanks_power_of_2 && (NumBanks > 1)) ? (addr_width - log2_nbanks) : (addr_width - log2_nbanks + 1)
 

Detailed Description

template<typename DataType, unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
class ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >

Scratchpad Memories with arbitration and queuing.

Template Parameters
DataTypeDataType if input and output
CapacityInBytesCapacity of scratchpad
NumInputsNumber of Inputs
NumBanksNumber of Banks
LenInputBufferLength of Input Buffer
LenOutputBufferLength of Output Buffer
A Simple Example
#include <ArbitratedScratchpad.h>
...
ArbitratedScratchpad<DataType, ScratchpadCapacity, NumInputs, NumBanks, InputQueueLength> dut;
dut.reset(); // optional in this case, suitable if xbar is a class member rather than local variable
...
dut.load_store(curr_cli_req, curr_cli_rsp, ready);
...

Definition at line 58 of file ArbitratedScratchpad.h.

Member Typedef Documentation

◆ req_t

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
typedef cli_req_t<DataType, addr_width, NumInputs> ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::req_t

Definition at line 103 of file ArbitratedScratchpad.h.

◆ rsp_t

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
typedef cli_rsp_t<DataType, NumInputs> ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::rsp_t

Definition at line 104 of file ArbitratedScratchpad.h.

Constructor & Destructor Documentation

◆ ArbitratedScratchpad()

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::ArbitratedScratchpad ( )
inline

Definition at line 179 of file ArbitratedScratchpad.h.

Member Function Documentation

◆ compute_bank_request()

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
void ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::compute_bank_request ( req_t curr_cli_req,
bank_req_t  bank_req[NumInputs],
bank_sel_t  bank_sel[NumInputs],
bool  bank_req_valid[NumInputs] 
)
inline

Definition at line 114 of file ArbitratedScratchpad.h.

◆ banks_load_store()

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
void ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::banks_load_store ( bank_req_t  bank_req[NumBanks],
bool  bank_req_valid[NumBanks],
bank_rsp_t  bank_rsp[NumBanks] 
)
inline

Definition at line 159 of file ArbitratedScratchpad.h.

◆ reset()

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
void ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::reset ( )
inline

Definition at line 181 of file ArbitratedScratchpad.h.

◆ load_store()

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
void ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::load_store ( bank_req_t  bank_req[NumInputs],
bank_sel_t  bank_sel[NumInputs],
bool  bank_req_valid[NumInputs],
rsp_t load_rsp,
bool  input_ready[NumInputs] 
)
inline

Definition at line 192 of file ArbitratedScratchpad.h.

Member Data Documentation

◆ kDebugLevel

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const int ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::kDebugLevel = 2
static

Definition at line 62 of file ArbitratedScratchpad.h.

◆ addr_width

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const int ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::addr_width = nvhls::nbits<CapacityInBytes - 1>::val
static

Definition at line 64 of file ArbitratedScratchpad.h.

◆ log2_nbanks

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const int ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::log2_nbanks = (NumBanks == 1) ? 1 : nvhls::nbits<NumBanks - 1>::val
static

Definition at line 65 of file ArbitratedScratchpad.h.

◆ log2_inputs

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const int ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::log2_inputs = (NumInputs == 1) ? 1 : nvhls::nbits<NumInputs - 1>::val
static

Definition at line 66 of file ArbitratedScratchpad.h.

◆ is_nbanks_power_of_2

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const bool ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::is_nbanks_power_of_2 = (NumBanks & (NumBanks - 1)) == 0
static

Definition at line 68 of file ArbitratedScratchpad.h.

◆ bank_addr_width

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
const int ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::bank_addr_width = (is_nbanks_power_of_2 && (NumBanks > 1)) ? (addr_width - log2_nbanks) : (addr_width - log2_nbanks + 1)
static

Definition at line 69 of file ArbitratedScratchpad.h.

◆ banks

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
mem_array_sep<DataType, CapacityInBytes, NumBanks> ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::banks

Definition at line 107 of file ArbitratedScratchpad.h.

◆ bank_reqs

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
bank_req_t ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::bank_reqs[NumInputs]

Definition at line 108 of file ArbitratedScratchpad.h.

◆ bank_rsps

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
bank_rsp_t ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::bank_rsps[NumInputs]

Definition at line 109 of file ArbitratedScratchpad.h.

◆ request_xbar

template<typename DataType , unsigned int CapacityInBytes, unsigned int NumInputs, unsigned int NumBanks, unsigned int InputQueueLen>
ArbitratedCrossbar<bank_req_t, NumInputs, NumBanks, InputQueueLen, 0> ArbitratedScratchpad< DataType, CapacityInBytes, NumInputs, NumBanks, InputQueueLen >::request_xbar

Definition at line 112 of file ArbitratedScratchpad.h.


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