V80 SLASH shell silently drops host s_axi_control writes to offsets 0x40–0xBF (i.e. when addr[7]≠addr[6])
1. Environment
- Git dev branch commit 7a52870
- 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).
V80 SLASH shell silently drops host
s_axi_controlwrites to offsets0x40–0xBF(i.e. when addr[7]≠addr[6])1. Environment
2. Bug description
Host control-register accesses (VRT
kernel.read()/write()over QDMA/PCIe) to a kernel'ss_axi_controlinterface are not delivered to the kernel for register offsets in the first 256bytes of the control aperture whose address bit [7] ≠ bit [6] — i.e.
0x40–0x7Fand0x80–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 valuethe 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 errorreported.
Addresses checked (V80 compute shell, 4 KB control aperture at
0x20200000000):A[7:6]0x00–0x3F000x40–0x7F010x80–0xBF100xC0–0xFF110x100–0xFFF3. Temporary Workaround (kernel-side) which works for TAPA design
The failing
0x40–0xBFregisters were re-mapped into0x100–0xFFF(a region that does reach the kernel), andC_S_AXI_ADDR_WIDTHwas widened8 → 12to make those offsets addressable. (As the good0x00–0x3Fand0xC0–0xFFsub-bands were not large enough).