[tlul] enable checking a_data integrity for read
Address #10499
Signed-off-by: Weicai Yang <weicai@google.com>
diff --git a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
index b8fed9c..c6dbd66 100644
--- a/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
+++ b/hw/ip/rv_core_ibex/rtl/rv_core_ibex.sv
@@ -377,6 +377,10 @@
.addr_o(instr_addr_trans)
);
+ logic [6:0] instr_wdata_intg;
+ logic [top_pkg::TL_DW-1:0] unused_data;
+ // tl_adapter_host_i_ibex only reads instruction. a_data is always 0
+ assign {instr_wdata_intg, unused_data} = prim_secded_pkg::prim_secded_inv_39_32_enc('0);
tlul_adapter_host #(
.MAX_REQS(NumOutstandingReqs),
// if secure ibex is not set, data integrity is not generated
@@ -391,7 +395,7 @@
.addr_i (instr_addr_trans),
.we_i (1'b0),
.wdata_i (32'b0),
- .wdata_intg_i ('0),
+ .wdata_intg_i (instr_wdata_intg),
.be_i (4'hF),
.valid_o (instr_rvalid),
.rdata_o (instr_rdata),
diff --git a/hw/ip/tlul/rtl/tlul_cmd_intg_chk.sv b/hw/ip/tlul/rtl/tlul_cmd_intg_chk.sv
index 16c06a5..1a831db 100644
--- a/hw/ip/tlul/rtl/tlul_cmd_intg_chk.sv
+++ b/hw/ip/tlul/rtl/tlul_cmd_intg_chk.sv
@@ -39,8 +39,7 @@
assign wr_txn = tl_i.a_valid &
(tl_i.a_opcode == PutFullData | tl_i.a_opcode == PutPartialData);
- assign err_o = tl_i.a_valid & |err |
- wr_txn & |data_err;
+ assign err_o = tl_i.a_valid & (|err | (|data_err));
logic unused_tl;