Watch it find a bug.
We planted a bug in an open-source AXI4-Lite RAM as a normal-looking commit. Akrida got only the spec. It wrote the test plan and the testbench, caught the bug, traced it to the commit that caused it, and confirmed the fix.
Caught, traced, fixed, re-checked. 1 design bug, from a 31-minute run that cost $4.39 in model calls.
The bug was planted for this demo. Each step is something Akrida really did.
-
Wrote the test plan
Turned the spec into 19 requirements and 54 scenarios to test.
-
Wrote the testbench
A complete UVM testbench, written from the spec and the plan. The model never saw the design’s RTL, only its port list.
-
Ran it and caught a design bug
Reads return the wrong word: a read of word N returns word N+1
Expected, from the spec
A read returns the value last written to that address. Write 0x0badf00d to address 0x0000, and reading 0x0000 gives back 0x0badf00d.
Observed in simulation
Every read returned the value stored one word higher. Reading 0x0000 gave back 0x00000000, the still-empty word at 0x0004.
Evidence from the log
UVM_ERROR @ 9815000 [REQ-RD-2] read araddr=0x0000 (word 0): expected RDATA = 0x0badf00d, observed 0x00000000
16,961 checks failed, all from this one cause. Akrida blamed the design, not its own tests.
-
Tested what it hadn’t reached yet
2 more rounds added tests for scenarios the first round missed. Every new failure had the same cause, so it is still 1 bug.
-
Filed the bug
Opened issue #1 in the design’s GitHub repo: what should happen, what happened, the log line, and the failing test to reproduce it.
-
Traced it to commit 9bd17b9
Tested 4 commits in 4 min. The test passes on 8a2d758 and fails on 9bd17b9, “Simplify read address decode”, which added a + 1 to the read address:
- s_axil_araddr_valid = s_axil_araddr >> (ADDR_WIDTH - VALID_ADDR_WIDTH);+ s_axil_araddr_valid = (s_axil_araddr >> (ADDR_WIDTH - VALID_ADDR_WIDTH)) + 1'b1;
-
A fix was pushed
Commit 97d593e removes the extra + 1 from the read address.
-
Re-checked the fix and closed the bug
The same failing test now passes on 97d593e with 0 errors. Akrida closed issue #1 on its own, and reopens it if the bug ever comes back.