Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
From 1160319407d0d5bdc490b6c3ecc0973055b488cd Mon Sep 17 00:00:00 2001
From: Adam Taback <ataback@tenstorrent.com>
Date: Wed, 11 Feb 2026 11:25:56 -0500
Subject: [PATCH] Fixed axi_lite_mailbox wstrb axi violation

Backport of pulp-platform/axi@11603194 (pulp-platform/axi#412, in v0.39.10).
---
src/axi_lite_mailbox.sv | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/axi_lite_mailbox.sv b/src/axi_lite_mailbox.sv
index 73adeca..8c410d8 100644
--- a/src/axi_lite_mailbox.sv
+++ b/src/axi_lite_mailbox.sv
@@ -443,7 +443,7 @@ module axi_lite_mailbox_slave #(
// ERROR: read only
WIRQT: begin
for (int unsigned i = 0; i < AxiDataWidth/8; i++) begin
- wirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : 8'b0000_0000;
+ wirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : wirqt_d[i*8+:8];
end
if (wirqt_d >= data_t'(MailboxDepth)) begin
// the `-1` is to have the interrupt fireing when the FIFO is comletely full
@@ -454,7 +454,7 @@ module axi_lite_mailbox_slave #(
end
RIRQT: begin
for (int unsigned i = 0; i < AxiDataWidth/8; i++) begin
- rirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : 8'b0000_0000;
+ rirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : rirqt_d[i*8+:8];
end
if (rirqt_d >= data_t'(MailboxDepth)) begin
// Threshold to maximal value, minus two to prevent overflow in usage
4 changes: 2 additions & 2 deletions hw/vendor/pulp_axi/src/axi_lite_mailbox.sv
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ module axi_lite_mailbox_slave #(
// ERROR: read only
WIRQT: begin
for (int unsigned i = 0; i < AxiDataWidth/8; i++) begin
wirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : 8'b0000_0000;
wirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : wirqt_d[i*8+:8];
end
if (wirqt_d >= data_t'(MailboxDepth)) begin
// the `-1` is to have the interrupt fireing when the FIFO is comletely full
Expand All @@ -454,7 +454,7 @@ module axi_lite_mailbox_slave #(
end
RIRQT: begin
for (int unsigned i = 0; i < AxiDataWidth/8; i++) begin
rirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : 8'b0000_0000;
rirqt_d[i*8+:8] = slv_req_i.w.strb[i] ? slv_req_i.w.data[i*8+:8] : rirqt_d[i*8+:8];
end
if (rirqt_d >= data_t'(MailboxDepth)) begin
// Threshold to maximal value, minus two to prevent overflow in usage
Expand Down