journal 2026-04-29

P14 official arch-test probe

p14riscvcompliance

Today we tried the official RISC-V architectural tests against P14, mostly to see where the floor actually is.

First result: the local P14 ISA smoke addendum still passes. That is our tiny chip-pin-side suite: boot from SPI flash, run a short program, halt, and check R5[4:0] on uo_out[7:3].

Then we pulled a sparse copy of upstream riscv-arch-test into /tmp/riscv-arch-test and built the official RV32I/I unprivileged integer tests with the local riscv64-elf-* toolchain.

Probe command:

scripts/p14_arch_test_probe.py

Result:

itemresult
upstream revisiona7c9930
official RV32I/I tests built39 / 39 PASS
official tests runnable on P14 unmodified0 / 39 NOT RUN
official tests passed on P140
official tests failed on P140

The important distinction: this is NOT RUN, not FAIL. The official tests build, but none fit the P14 execution model.

The smallest generated ELF was I-nop-00.S: 632 instruction words and 1384 bytes of data/signature sections. P14 has 32 instruction words, 8 zeroed data words, no data preload path, and no signature export. The official framework also initializes and uses full RV32I registers x16..x31; P14 is RV32E and intentionally treats those as absent.

So the gap is now concrete:

Artifact: projects/14_rv32e_flash_boot/compliance_probe/rv32i_I_probe.csv.

Dry conclusion: P14 is good enough to make the failure mode interesting, not big enough to be invited to the official party.