[lc] Generate integrity for the tap interface
- This seems generally unnecessary, we should consider adding a compile
time option to completely disable the integrity path.
Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
index a78c1f9..bdb0cc3 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
@@ -115,7 +115,7 @@
// Life Cycle TAP //
////////////////////
- tlul_pkg::tl_h2d_t tap_tl_h2d;
+ tlul_pkg::tl_h2d_t tap_tl_h2d_pre, tap_tl_h2d;
tlul_pkg::tl_d2h_t tap_tl_d2h;
lc_ctrl_reg_pkg::lc_ctrl_reg2hw_t tap_reg2hw;
lc_ctrl_reg_pkg::lc_ctrl_hw2reg_t tap_hw2reg;
@@ -179,27 +179,32 @@
);
// DMI to TL-UL transducing
- assign dmi_req_ready = tap_tl_d2h.a_ready;
- assign tap_tl_h2d.a_valid = dmi_req_valid;
- assign tap_tl_h2d.a_opcode = (dmi_req.op == dm::DTM_WRITE) ? tlul_pkg::PutFullData :
+ assign dmi_req_ready = tap_tl_d2h.a_ready;
+ assign tap_tl_h2d_pre.a_valid = dmi_req_valid;
+ assign tap_tl_h2d_pre.a_opcode = (dmi_req.op == dm::DTM_WRITE) ? tlul_pkg::PutFullData :
tlul_pkg::Get;
// Always read/write 32bit
- assign tap_tl_h2d.a_size = top_pkg::TL_SZW'(2'h2);
- assign tap_tl_h2d.a_mask = {top_pkg::TL_DBW{1'b1}};
+ assign tap_tl_h2d_pre.a_size = top_pkg::TL_SZW'(2'h2);
+ assign tap_tl_h2d_pre.a_mask = {top_pkg::TL_DBW{1'b1}};
// Need to transform register address into byte address.
- assign tap_tl_h2d.a_address = top_pkg::TL_AW'({dmi_req.addr, 2'b00});
- assign tap_tl_h2d.a_data = dmi_req.data;
+ assign tap_tl_h2d_pre.a_address = top_pkg::TL_AW'({dmi_req.addr, 2'b00});
+ assign tap_tl_h2d_pre.a_data = dmi_req.data;
// Unused
- assign tap_tl_h2d.a_param = '0;
- assign tap_tl_h2d.a_source = '0;
+ assign tap_tl_h2d_pre.a_param = '0;
+ assign tap_tl_h2d_pre.a_source = '0;
// TODO need to add appropriate handling for integrity
- assign tap_tl_h2d.a_user = '0;
+ assign tap_tl_h2d_pre.a_user = '0;
+
+ tlul_cmd_intg_gen u_tap_intg_gen (
+ .tl_i(tap_tl_h2d_pre),
+ .tl_o(tap_tl_h2d)
+ );
// TL-UL to DMI transducing
- assign tap_tl_h2d.d_ready = dmi_resp_ready;
- assign dmi_resp_valid = tap_tl_d2h.d_valid;
- assign dmi_resp.data = tap_tl_d2h.d_data;
- assign dmi_resp.resp = '0; // unused inside dmi_jtag
+ assign tap_tl_h2d_pre.d_ready = dmi_resp_ready;
+ assign dmi_resp_valid = tap_tl_d2h.d_valid;
+ assign dmi_resp.data = tap_tl_d2h.d_data;
+ assign dmi_resp.resp = '0; // unused inside dmi_jtag
// These signals are unused
logic unused_tap_tl_d2h;