No. 24 / project of 147 on the ladder

RV32I branch official tests

introduces — Branch tests added to the official RV32I pass subset

harden statelast run2026-05-01
signoff
  • DRCNOT RUN
  • LVSNOT RUN
  • antennaNOT RUN

P24 adds the six official branch tests to the P23 strict subset.

Status: RTL pass for a 31-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/24_rv32i_branch_tests/test
groupresult
P23 baseline: no-op/fence, LUI, AUIPC, jumps, immediate ALU, R-type ALUPASS
I-beq-00.SPASS
I-bne-00.SPASS
I-blt-00.SPASS
I-bltu-00.SPASS
I-bge-00.SPASS
I-bgeu-00.SPASS

Summary: PASS=31 FAIL=0 NOT RUN=0

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

Signature Model

The branch tests use the reference-emulated signature flow:

  1. Build the official test in normal signature-writing mode.
  2. Run that image through the local RV32I interpreter.
  3. Read the signature words.
  4. Rebuild the test in RVTEST_SELFCHECK mode with those words.

For P24, that path covers JAL, JALR, and the six branch tests.

What This Proves

The official pass set now covers baseline tests, upper-immediate operations, direct and indirect jumps, all branch predicates, and the modeled ALU subset.

The remaining unclaimed RV32I/I tests are loads and stores.