Skip to content

中文说明

RISC-V SoC workspace

mpc-soc

A simulatable RISC-V SoC board. Attach a core to an existing slot, run software, and inspect the memory map from one documentation workbench.

Open the user guide
TOPasicTop
CLOCK50 MHz
DATA32 bit
RESET PC0x3000_0000
Verilator 5.050
SOC DATA PATH

一个 AXI master,一组可仿真外设

asicTop / SimTop
RISC-V core slotCORE_SEL 选择待测 CPU
AXI4 XBarAXI4 → APB4 外设互连
Flash / PSRAMXIP + 24 MiB 软件窗口
SimTop board modelsUART · GPIO · SPI · I2C
selected coreclock on · reset off
other CORE_SEL slotsheld in reset
memory interconnect unused slots
mpc-soc
$ make doctor
$ make check
SOC SMOKE CHECK PASS

Users attach a core through CORE_SEL. Full bootrom regression stays on the maintainer Makefile.

IPFunctionAddressStatusTestsGaps
CPU coreRuns RISC-V software, issues AXI traffic, and takes interruptscore slot 0, default CORE_SEL=0smoke-passSoC boot, basic softwareinstruction completeness, exceptions/privilege, performance, long runs
CLINTSoftware interrupt, timer interrupt, mtime/mtimecmp0x0201_0000smoke-passclintmulti-hart semantics, races, timing corners
PLICExternal interrupt aggregation, priority, and delivery0x0c00_0000smoke-passplicconcurrent sources, priority corners, stress
UART0 / UART16550Console UART, 16550 registers and FIFO0x1000_0000smoke-passuart_poll, UART inputbaud corners, overflow, error frames, sustained traffic
SPISPI flash interface and XIPFlash: 0x3000_0000smoke-passflash_xip, boot fetchreal-device timing, erase/program, power-loss, compatibility
RCUClock select, divide, and reset control0x1000_2000smoke-passrcudynamic switching, reset timing, clock gating
RTCReal-time clock count0x1000_4000smoke-passrtccalibration, low power, CDC, long-term drift
WDGWatchdog count, timeout, and reset0x1000_5000smoke-passwdgreset races, clock faults, system recovery
ArchInfoArchitecture and chip information registers0x1000_6000smoke-passarchinfoconfiguration compatibility, full read-only checks
GPIOGPIO input, output, and direction0x1010_0000smoke-passgpio, gpio_toggledirection changes, edges/interrupts, pad electricals
UART1APB4 UART transmit and receive0x1010_3000smoke-passuart1corners, errors, and interrupt cases
I2CI2C host controller and open-drain interface0x1010_4000smoke-passi2cmulti-slave, arbitration, ACK/NACK, bus recovery
PWMFour PWM outputs0x1010_6000smoke-passpwmfrequency/duty corners, live reconfig, jitter
TimerAPB timers, four instances0x1010_8000 - 0x1010_b000smoke-passtimer, timer_multioverflow, restart, concurrency, interrupt corners
QSPIQuad SPI controller0x1020_0000smoke-passqspireal transfers, mode/clock, flash compatibility
RNGPseudo-random generation0x1030_0000smoke-passrngstatistics, seed and period; not a secure RNG
CRCCRC8/CRC16/CRC32 calculation0x1030_1000smoke-passcrcfull parameter combinations, streaming data, edge lengths
PSRAM controllerThree PSRAM chips, 24 MiB total0xc000_0000smoke-passpsram_basicreal timing, bandwidth, refresh, PVT, long stress
20 mapped regions
memoryflash0x3000_0000

External SPI flash XIP window. · 0x0100_0000

memorypsram0xC000_0000

External PSRAM window, three 8MiB chips. · 0x0180_0000

peripheralclint0x0201_0000

Core-local interruptor. · 0x0001_0000

peripheralplic0x0C00_0000

Platform-level interrupt controller. · 0x0040_0000

peripheraluart00x1000_0000

UART16550 console. · 0x0000_1000

peripheralrcu0x1000_2000

Reset and clock control unit. · 0x0000_1000

peripheralrtc0x1000_4000

Real-time clock. · 0x0000_1000

peripheralwdg0x1000_5000

Watchdog timer. · 0x0000_1000

peripheralarchinfo0x1000_6000

Architecture information registers. · 0x0000_1000

peripheralgpio00x1010_0000

GPIO controller. · 0x0000_1000

peripheraluart10x1010_3000

APB4 UART controller. · 0x0000_1000

peripherali2c0x1010_4000

APB4 I2C controller. · 0x0000_1000

peripheralpwm0x1010_6000

PWM controller. · 0x0000_1000

peripheraltimer00x1010_8000

APB timer. · 0x0000_1000

peripheraltimer10x1010_9000

APB timer. · 0x0000_1000

peripheraltimer20x1010_A000

APB timer. · 0x0000_1000

peripheraltimer30x1010_B000

APB timer. · 0x0000_1000

peripheralqspi0x1020_0000

APB4 QSPI controller. · 0x0000_1000

peripheralrng0x1030_0000

Pseudo-random number generator. · 0x0000_1000

peripheralcrc0x1030_1000

CRC calculation engine. · 0x0000_1000

Documentation is maintained from one bilingual source tree.