On-Chip RAM (OCRAM)¶
The on-chip RAM is a single-port synchronous memory exposed as an ordinary memory-mapped window (load/store). It has no configuration registers - it is a pure memory slave, so there is no IP identification block. A generic behavioural model is used for FPGA and simulation; a technology-specific variant instantiates foundry SRAM hard macros for silicon.
Features¶
Single-port synchronous RAM with a one-cycle read latency
Burst-capable: serves multi-beat cache-line transfers up to the bus
sizeBytes, so it can back a cached (D$) master, not only single-word accessesByte-enable writes via the bus write mask
One outstanding message at a time (back-pressure until the response completes)
Variants¶
Generic¶
TileLinkOnChipRam(p, size) is the portable behavioural RAM (inferred Mem). It is
TileLink-only and serves Get as N AccessAckData beats and Put as N A beats
followed by one AccessAck.
IHP SG13G2¶
The nafarr.memory.ocram.ihp.sg13g2 variant instantiates SG13G2 SRAM hard macros. The
largest 32-bit macro is 2048x32 (8 kB); larger sizes are banked automatically, so size
must be a positive multiple of 8 kB. It is available with a TileLink, AXI4-Shared or BMB
bus.
Configuration¶
Name |
Type |
Description |
Default |
|---|---|---|---|
p |
BusParameter |
Bus parameter ( |
|
size |
BigInt |
RAM size in bytes. Power of two (generic); multiple of 8 kB (IHP SG13G2). |