-
Notifications
You must be signed in to change notification settings - Fork 853
Open
Labels
Type:BugFor bugs in the RTL, Documentation, Verification environment or Tool and Build systemFor bugs in the RTL, Documentation, Verification environment or Tool and Build system
Description
Is there an existing CVA6 bug for this?
- I have searched the existing bug issues
Bug Description
Bug Description
CVA6 fails to log memory write operations when an atomic memory operation (AMO) instruction writes to both a register and memory simultaneously. The memory write is actually executed correctly, but it's missing from the execution trace log.
Test Case
li x17, 0x0
li x23, 0x1fffffe01
li x3, 0x8fffffc8
li x16, 0xffffff80
sw x17, 0(x3)
amomaxu.w.rl x16, x23, (x3)
lw x17, 0(x3)Expected Behavior (Spike)
For the instruction amomaxu.w.rl x16, x23, (x3), Spike logs:
core 0: 0x0000000080000824 (0xe371a82f) amomaxu.w.rl a6, s7, (gp)
core 0: 3 0x0000000080000824 (0xe371a82f) x16 0x0000000000000000 mem 0x000000008fffffc8 mem 0x000000008fffffc8 0xfffffe01
Both register and memory changes are logged.
Actual Behavior (CVA6)
CVA6 logs:
core 0: 0x0000000080000824 (0xe371a82f) DASM(e371a82f)
3 0x0000000080000824 (0xe371a82f) x16 0x0000000000000000
Only the register change is logged. The memory write is missing from the trace.
The subsequent load instruction confirms the memory was actually written:
core 0: 0x0000000080000828 (0x0001a883) DASM(0001a883)
3 0x0000000080000828 (0x0001a883) x17 0xfffffffffffffe01 mem 0x000000008fffffc8 0x0f
Metadata
Metadata
Assignees
Labels
Type:BugFor bugs in the RTL, Documentation, Verification environment or Tool and Build systemFor bugs in the RTL, Documentation, Verification environment or Tool and Build system