[dv/keymgr_kmac_agent] Add 2 assertions to check last and done

Also fix some typos

Signed-off-by: Weicai Yang <weicai@google.com>
diff --git a/hw/dv/sv/keymgr_kmac_agent/keymgr_kmac_intf.sv b/hw/dv/sv/keymgr_kmac_agent/keymgr_kmac_intf.sv
index e1a3b1e..e7470f5 100644
--- a/hw/dv/sv/keymgr_kmac_agent/keymgr_kmac_intf.sv
+++ b/hw/dv/sv/keymgr_kmac_agent/keymgr_kmac_intf.sv
@@ -55,15 +55,22 @@
          {req_data_if.ready, rsp_done, rsp_digest_share0, rsp_digest_share1, rsp_error} : 'z;
 
   // strb should never be 0
-  `ASSERT(StrbNotZero_A, kmac_data_req.valid -> kmac_data_req.strb > 0, clk, !rst_n)
+  `ASSERT(StrbNotZero_A, kmac_data_req.valid |-> kmac_data_req.strb > 0, clk, !rst_n)
 
   // strb should be all 1s unless it's last cycle
-  `ASSERT(StrbAllSetIfNotLast_A, kmac_data_req.valid && !kmac_data_req.last ->
+  `ASSERT(StrbAllSetIfNotLast_A, kmac_data_req.valid && !kmac_data_req.last |->
                                  kmac_data_req.strb == '1, clk, !rst_n)
 
+  // last can only be asserted along with valid
+  `ASSERT(LastAssertWithValid_A, kmac_data_req.last |-> kmac_data_req.valid, clk, !rst_n)
+
+  // Done should be asserted after last, before we start another request
+  `ASSERT(DoneAssertAfterLast_A, kmac_data_req.last |=>
+                                 !kmac_data_req.valid throughout rsp_done[->1], clk, !rst_n)
+
   // Check strb is aligned to LSB, for example: if strb[1]==0, strb[$:2] should be 0 too
   for (genvar k = 1; k < KmacDataIfWidth / 8 - 1; k++) begin : gen_strb_check
-    `ASSERT(StrbAlignLSB_A, kmac_data_req.valid && kmac_data_req.strb[k] === 0 ->
+    `ASSERT(StrbAlignLSB_A, kmac_data_req.valid && kmac_data_req.strb[k] === 0 |->
                             kmac_data_req.strb[k+1] === 0, clk, !rst_n)
   end
 endinterface