P25 adds the official load and store tests to the P24 strict subset.
Status: RTL pass for all 39 local official
rv32i/Itests. These are upstreamriscv-arch-testsources built inRVTEST_SELFCHECKmode, UART-loaded into the P17 external-memory model, and accepted only when the core reaches the local pass convention.
The Result
Run it:
make -C projects/25_rv32i_full_i_tests/test
| group | result |
|---|---|
| P24 baseline: ALU, upper immediates, jumps, branches | PASS |
I-lb-00.S | PASS |
I-lbu-00.S | PASS |
I-lh-00.S | PASS |
I-lhu-00.S | PASS |
I-lw-00.S | PASS |
I-sb-00.S | PASS |
I-sh-00.S | PASS |
I-sw-00.S | PASS |
Summary: PASS=39 FAIL=0 NOT RUN=0
This is not a full RISC-V compliance claim. It is a precise claim for the
local official rv32i/I test directory.
ACT4 Probe
We also checked the current upstream ACT4 flow against the same core harness. ACT4 used Sail to generate expected signatures, then produced final self-checking ELFs. Those ELFs were converted to Verilog memory images and UART-loaded into the P17 external-memory simulator.
Result: PASS
Summary: PASS=39 FAIL=0 NOT RUN=0
This is still scoped to rv32i/I. It is not a full compliance claim, but it
does remove the biggest caveat from the first P25 run: the expected signatures
were generated by ACT4 plus Sail rather than by our local Python reference
path.
Signature Model
The load/store tests use the reference-emulated signature flow:
- Build the official test in normal signature-writing mode.
- Run that image through the local RV32I interpreter.
- Read the signature words.
- Rebuild the test in
RVTEST_SELFCHECKmode with those words.
For P25, that path covers jumps, branches, loads, and stores.
What This Proves
The core passes the local official RV32I base-integer instruction tests in the current harness: ALU operations, upper immediates, direct and indirect jumps, branches, loads, and stores.
The next honest step is not to say “done.” It is to harden this exact tested core configuration, then decide whether the next expansion is broader architecture-test coverage, Tiny Tapeout packaging, or extra implementation features such as traps and CSRs.