[lc] Stop requesting tokens from KMAC after reception

Previously, the REQ signal was kept high after receiving ACK but then
lowered withtout a new handshake. This is problematic for the CDC
crossing.

Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_kmac_if.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_kmac_if.sv
index 6a14ba7..a8f6f33 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl_kmac_if.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_kmac_if.sv
@@ -35,6 +35,7 @@
 
   logic kmac_req, kmac_ack;
   lc_token_t kmac_transition_token;
+  logic token_hash_req;
 
   // The transition_token_i register is guaranteed to remain stable once a life cycle
   // transition has been initiated.
@@ -52,7 +53,7 @@
     .rst_src_ni ( rst_ni                ),
     .clk_dst_i  ( clk_kmac_i            ),
     .rst_dst_ni ( rst_kmac_ni           ),
-    .src_req_i  ( token_hash_req_i      ),
+    .src_req_i  ( token_hash_req        ),
     .src_ack_o  (                       ), // not connected
     .dst_req_o  (                       ), // not connected
     .dst_ack_i  ( kmac_ack              ),
@@ -79,7 +80,7 @@
     .rst_src_ni ( rst_ni           ),
     .clk_dst_i  ( clk_kmac_i       ),
     .rst_dst_ni ( rst_kmac_ni      ),
-    .src_req_i  ( token_hash_req_i ),
+    .src_req_i  ( token_hash_req   ),
     .src_ack_o  ( token_hash_ack_d ),
     .dst_req_o  ( kmac_req         ),
     .dst_ack_i  ( kmac_ack         ),
@@ -117,6 +118,9 @@
   assign token_hash_err_o = token_hash_err_q;
   assign hashed_token_o   = hashed_token_q;
 
+  // Stop requesting tokens upon latching on LC side.
+  assign token_hash_req = token_hash_req_i & ~token_hash_ack_q;
+
   /////////////////////////////////////////////
   // Serialization FSM Running on KMAC Clock //
   /////////////////////////////////////////////