Skip to content

[BUG] Missing Memory Write Log for AMO Instructions #3130

@canxin121

Description

@canxin121

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

No one assigned

    Labels

    Type:BugFor bugs in the RTL, Documentation, Verification environment or Tool and Build system

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions