Skip to content

V80 SLASH shell silently drops host s_axi_control writes to offsets 0x40–0xBF #226

Description

@dkumaramd

V80 SLASH shell silently drops host s_axi_control writes to offsets 0x40–0xBF (i.e. when addr[7]≠addr[6])

1. Environment

  1. Git dev branch commit 7a52870
  2. Tools: Vivado/Vitis 2025.1 · SLASH VRT

2. Bug description

Host control-register accesses (VRT kernel.read()/write() over QDMA/PCIe) to a kernel's
s_axi_control interface are not delivered to the kernel for register offsets in the first 256
bytes
of the control aperture whose address bit [7] ≠ bit [6] — i.e. 0x40–0x7F and 0x80–0xBF.
Observed behavior on these offsets: a host write does not update the kernel register (confirmed by
JTAG accesses and ILA probes on s_axi_control), yet a host read of the same offset returns the value
the host last wrote there — so the write-then-readback self-validates and the failure is invisible/masked.
Kernel argument pointers written to affected offsets stay 0, producing wrong results with no error
reported.

Addresses checked (V80 compute shell, 4 KB control aperture at 0x20200000000):

aperture offset A[7:6] result
0x00–0x3F 00 reaches kernel ✅
0x40–0x7F 01 does not reach kernel ❌
0x80–0xBF 10 does not reach kernel ❌
0xC0–0xFF 11 reaches kernel ✅
0x100–0xFFF any reaches kernel ✅

3. Temporary Workaround (kernel-side) which works for TAPA design

The failing 0x40–0xBF registers were re-mapped into 0x100–0xFFF (a region that does reach the kernel), and C_S_AXI_ADDR_WIDTH was widened 8 → 12 to make those offsets addressable. (As the good 0x00–0x3F and 0xC0–0xFF sub-bands were not large enough).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions