Memory Mapped Region
This section explains the memory map and Memory-Mapped I/O (MMIO) of the RVComp system. RVComp has a 34-bit physical address space, with memory and peripherals mapped to specific address ranges.
Memory Map Overview
RVComp’s physical memory map is configured as follows:
Start |
End |
Device/Region |
|---|---|---|
0x0001_0000 |
0x0001_1FFF |
bootrom |
0x0200_0000 |
0x020B_FFFF |
CLINT |
0x0C00_0000 |
0x0CFF_FFFF |
PLIC |
0x1000_0000 |
0x1000_000F |
UART |
0x1000_0100 |
0x1000_0103 |
Soft reset |
0x1400_0000 |
0x1400_3FFF |
Ethernet MAC CSRs |
0x1800_0000 |
0x18XX_XXXX |
Ethernet RX buffer |
0x1C00_0000 |
0x1CXX_XXXX |
Ethernet TX buffer |
0x8000_0000 |
0x87FF_FFFF |
DRAM (Nexys4DDR) |
0x8000_0000 |
0x8FFF_FFFF |
DRAM (ArtyA7) |
0xA000_0000 |
0xA000_1FFF |
sdcram (CSRs + 4 KiB window) |
Note
The Ethernet RX and TX buffer end addresses (0x18XX_XXXX / 0x1CXX_XXXX) are variable — their sizes are determined at synthesis time by the ETHER_RXBUF_SIZE and ETHER_TXBUF_SIZE parameters in src/config.vh. axi_interconnect.v uses broad address decoding and is not updated every time buffer sizes change, so accesses to addresses beyond the configured buffer size may not raise an exception. To enforce strict address checking, axi_interconnect.v must be edited manually. See Ethernet Architecture for the full CSR map.
For details on each item, please refer to SoC Architecture.
Soft Reset Register
The soft reset register at 0x1000_0100 allows software to perform a system-wide reset without power-cycling the FPGA board. Writing any value to this 32-bit register asserts the reset signal across the entire SoC, including the CPU, caches, and all peripherals. The FPGA bitstream is not reloaded; only the on-chip logic is reset. This is primarily useful during development to re-run the boot sequence quickly.
Note
DRAM itself is not included in the soft reset domain. Routing the reset signal to the DRAM controller raises wiring and stability concerns, so DRAM contents are preserved across a soft reset. Software should not rely on DRAM being in a clean state after reset.