template<unsigned int kNumBanks, unsigned int kNumReadPorts, unsigned int kNumWritePorts, unsigned int kEntriesPerBank, typename WordType, bool isSF = true, bool IsSPRAM = false>
class ArbitratedScratchpadDP< kNumBanks, kNumReadPorts, kNumWritePorts, kEntriesPerBank, WordType, isSF, IsSPRAM >
ArbitratedScratchpad with dual port support.
- Template Parameters
-
kNumBanks | Number of Banks |
kNumReadPorts | Number of read ports |
kNumWritePorts | Number of write ports |
kEntriesPerBank | Number of entries per bank |
WordType | WordType of entry in memory |
isSF | Is Store-Forward enabled for simultaneous read and write to same address |
IsSPRAM | Is memory mapped to single-port RAM. Either read or write is allowed per cycle |
- A Simple Example
#include <ArbitratedScratchpadDP.h>
...
ArbitratedScratchpadDP<kNumBanks, kNumReadPorts, kNumWritePorts, kEntriesPerBank, WordType, false, false> scratchpad;
scratchpad.run(read_address, read_address_valid,
write_address, write_address_valid,
write_data, read_ack, write_ack, read_ready,
read_data_out, read_data_out_valid);
...
Definition at line 59 of file ArbitratedScratchpadDP.h.
template<unsigned int kNumBanks, unsigned int kNumReadPorts, unsigned int kNumWritePorts, unsigned int kEntriesPerBank, typename WordType , bool isSF = true, bool IsSPRAM = false>
void ArbitratedScratchpadDP< kNumBanks, kNumReadPorts, kNumWritePorts, kEntriesPerBank, WordType, isSF, IsSPRAM >::run |
( |
Address |
read_address[kNumReadPorts], |
|
|
bool |
read_req_valid[kNumReadPorts], |
|
|
Address |
write_address[kNumWritePorts], |
|
|
bool |
write_req_valid[kNumWritePorts], |
|
|
WordType |
write_data[kNumWritePorts], |
|
|
Ack |
read_ack[kNumReadPorts], |
|
|
Ack |
write_ack[kNumWritePorts], |
|
|
bool |
read_ready[kNumReadPorts], |
|
|
WordType |
port_read_out[kNumReadPorts], |
|
|
bool |
port_read_out_valid[kNumReadPorts] |
|
) |
| |
|
inline |
template<unsigned int kNumBanks, unsigned int kNumReadPorts, unsigned int kNumWritePorts, unsigned int kEntriesPerBank, typename WordType , bool isSF = true, bool IsSPRAM = false>
void ArbitratedScratchpadDP< kNumBanks, kNumReadPorts, kNumWritePorts, kEntriesPerBank, WordType, isSF, IsSPRAM >::run |
( |
Address |
read_address[kNumReadPorts], |
|
|
bool |
read_req_valid[kNumReadPorts], |
|
|
Address |
write_address[kNumWritePorts], |
|
|
bool |
write_req_valid[kNumWritePorts], |
|
|
WordType |
write_data[kNumWritePorts], |
|
|
Ack |
read_ack[kNumReadPorts], |
|
|
Ack |
write_ack[kNumWritePorts], |
|
|
bool |
read_ready[kNumReadPorts], |
|
|
WordType |
port_read_out[kNumReadPorts], |
|
|
bool |
port_read_out_valid[kNumReadPorts], |
|
|
NVUINTW(kEntriesPerBank) |
valid_entry[kNumBanks] |
|
) |
| |
|
inline |