This document summarizes how Akmega RTL is verified today.
make verify runs the C Fibonacci firmware through both models:
- Build
firmware/main.elf+firmware/main.bin. - Run simavr (
verify_simavr) and emittrace_simavr.txt. - Run RTL (cocotb + Icarus) and emit
trace_akmega.txt. - Diff traces for exact equivalence.
This validates architectural behavior for the baseline firmware path.
make verify_isa uses a directed assembly workload (firmware/isa_all.S) that executes every implemented decode class:
- Build ISA coverage firmware (
firmware/isa_all.elf+.bin). - Run simavr and emit
trace_simavr_isa.txt. - Run RTL in ISA mode and emit
trace_akmega_isa.txt. - Diff traces for exact equivalence.
- Run
scripts/check_isa_coverage.pyto ensure all implemented instruction classes were observed.
Current target coverage is 82/82 implemented decode classes.
- The cocotb testbench supports two modes via
AKMEGA_TEST_MODE:fibonacci(default): checks expected Fibonacci PORTB sequence.isa: checks completion marker for the ISA coverage firmware.
- Trace format is instruction-step based and includes
PC,Inst, selected GPRs, andSREG.