[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;