No. 19 / project of 147 on the ladder

RV32I immediate-ALU official subset

introduces — Twelve official RV32I tests passing through generated signatures

harden statelast run2026-04-30
signoff
  • DRCNOT RUN
  • LVSNOT RUN
  • antennaNOT RUN

P19 keeps the P17 hardened logic shell and P18 signature-debug approach, then widens the strict official-test target to cover the immediate ALU group.

Status: RTL pass for a 12-test official subset. These are upstream riscv-arch-test sources built in RVTEST_SELFCHECK mode, 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/19_rv32i_imm_alu_tests/test
testresult
I-nop-00.SPASS
I-fence-00.SPASS
I-lui-00.SPASS
I-addi-00.SPASS
I-ori-00.SPASS
I-andi-00.SPASS
I-xori-00.SPASS
I-slti-00.SPASS
I-sltiu-00.SPASS
I-slli-00.SPASS
I-srli-00.SPASS
I-srai-00.SPASS

This is not a full RV32I compliance claim. It is a larger, strict, official subset.

Signature Model

The batch runner now recognizes generated immediate-ALU test patterns:

RVTEST_TESTDATA_LOAD_INT(..., xN) # load rs1: xN = 0x...
op xD, xN, IMM # perform operation

and computes expected signature words for ADDI, ORI, ANDI, XORI, SLTI, SLTIU, SLLI, SRLI, and SRAI.

The honesty boundary is still explicit: tests without a generated signature model keep the placeholder signature and are not claimed by P19.

What This Proves

P19 moves the question from setup plumbing to instruction behavior. The UART loader, external memory path, and self-check harness are good enough to run a useful immediate-ALU official subset.

The next natural targets are AUIPC and the R-type ALU tests. Those will either be more signature-model work or the first real core bug.