[spi_device] Upload payload mask fix
Payload arbiter inside `spid_upload` module did not enable `EnMask`
feature. It leads to update payload entries full word. Payload writes a
byte at a time.
Also, the logic calculated the byte lane incorrectly. The for loop index
Should be the number of byte per word (4).
Signed-off-by: Eunchan Kim <eunchan@opentitan.org>
diff --git a/hw/ip/spi_device/rtl/spid_fifo2sram_adapter.sv b/hw/ip/spi_device/rtl/spid_fifo2sram_adapter.sv
index 8054240..b60cb45 100644
--- a/hw/ip/spi_device/rtl/spid_fifo2sram_adapter.sv
+++ b/hw/ip/spi_device/rtl/spid_fifo2sram_adapter.sv
@@ -74,8 +74,8 @@
always_comb begin
sram_wdata_o = '0;
sram_wmask_o = '0;
- for(int unsigned i = 0; i < SubWordW ; i++) begin
- if (fifoptr[0+:$clog2(SubWordW)] == i) begin
+ for(int unsigned i = 0; i < NumEntryPerWord ; i++) begin
+ if (fifoptr[0+:SubWordW] == i) begin
sram_wdata_o[i*FifoWidth+:FifoWidth] = wdata_i;
sram_wmask_o[i*FifoWidth+:FifoWidth] = {FifoWidth{1'b1}};
end
diff --git a/hw/ip/spi_device/rtl/spid_upload.sv b/hw/ip/spi_device/rtl/spid_upload.sv
index 4f27332..05c43f8 100644
--- a/hw/ip/spi_device/rtl/spid_upload.sv
+++ b/hw/ip/spi_device/rtl/spid_upload.sv
@@ -524,7 +524,8 @@
prim_sram_arbiter #(
.N (NumSramIntf),
.SramDw (SramDw),
- .SramAw (SramAw)
+ .SramAw (SramAw),
+ .EnMask (1'b 1)
) u_arbiter (
.clk_i,
.rst_ni,