MatchLib
Classes | Public Types | Public Member Functions | Public Attributes | Static Public Attributes | List of all members
Scratchpad< T, N, CAPACITY_IN_WORDS > Class Template Reference

Parameterized banked scratchpad memory implemented as a SystemC module. More...

#include <Scratchpad.h>

Inheritance diagram for Scratchpad< T, N, CAPACITY_IN_WORDS >:

Classes

struct  bank_req_t
 

Public Types

typedef cli_req_t< T, ADDR_WIDTH, N > req_t
 
typedef cli_rsp_t< T, N > rsp_t
 

Public Member Functions

typedef NVUINTW (NBANKS_LOG2) bank_sel_t
 
typedef NVUINTW (ADDR_WIDTH - NBANKS_LOG2) bank_addr_t
 
 SC_HAS_PROCESS (Scratchpad)
 
 Scratchpad (sc_module_name name_)
 
void run ()
 

Public Attributes

sc_in_clk clk
 
sc_in< bool > rst
 
Connections::In< cli_req_t< T, ADDR_WIDTH, N > > cli_req
 
Connections::Out< cli_rsp_t< T, N > > cli_rsp
 
ScratchpadClass< T, N, CAPACITY_IN_WORDS > scratchpad_class
 

Static Public Attributes

static const int ADDR_WIDTH = nvhls::nbits<CAPACITY_IN_WORDS - 1>::val
 
static const int NBANKS_LOG2 = nvhls::nbits<N - 1>::val
 

Detailed Description

template<typename T, int N, int CAPACITY_IN_WORDS>
class Scratchpad< T, N, CAPACITY_IN_WORDS >

Parameterized banked scratchpad memory implemented as a SystemC module.

Template Parameters
TEntryType
NNumber of requests
CAPACITY_IN_WORDSTotal number of words of type T in memory
Overview
-Assumptions: All N requests are guaranteed conflict-free. An assertion message will be emitted if there are any bank conflicts.

Ports: 1 input port for requests (load OR store) from client 1 output port for responses (load only) back to client

A Simple Example
#include <Scratchpad.h>
...
Connections::In< cli_req_t<data32_t, ADDR_WIDTH,N> > cli_req;
Connections::Out< cli_rsp_t<data32_t, N> > cli_rsp;
...
// Connect the DUT
myscratchpad.clk(clk);
myscratchpad.rst(rst);
myscratchpad.cli_req(cli_req);
myscratchpad.cli_rsp(cli_rsp);
...
Parameterized banked scratchpad memory implemented as a SystemC module.
Definition: Scratchpad.h:259
Usage Guidelines

This module sets the stall mode to flush by default to mitigate possible RTL bugs that can occur in the default stall mode. If you are confident that this class of bugs will not occur in your use case, you can change the stall mode via TCL directive:

directive set /path/to/Scratchpad/run/while -PIPELINE_STALL_MODE stall

This may reduce area/power.

Definition at line 259 of file Scratchpad.h.


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