diff --git a/hw/ip/keymgr/rtl/keymgr_kmac_if.sv b/hw/ip/keymgr/rtl/keymgr_kmac_if.sv
index 0407cd5..d16f7aa 100644
--- a/hw/ip/keymgr/rtl/keymgr_kmac_if.sv
+++ b/hw/ip/keymgr/rtl/keymgr_kmac_if.sv
@@ -75,6 +75,13 @@
   localparam int DecoyCopies = KmacDataIfWidth / 32;
   localparam int DecoyOutputCopies = (KeyWidth / 32) * Shares;
 
+  localparam int unsigned LastAdvRoundInt = AdvRounds - 1;
+  localparam int unsigned LastIdRoundInt = IdRounds - 1;
+  localparam int unsigned LastGenRoundInt = GenRounds - 1;
+  localparam bit [CntWidth-1:0] LastAdvRound = LastAdvRoundInt[CntWidth-1:0];
+  localparam bit [CntWidth-1:0] LastIdRound = LastIdRoundInt[CntWidth-1:0];
+  localparam bit [CntWidth-1:0] LastGenRound = LastGenRoundInt[CntWidth-1:0];
+
   // byte mask for the last transfer
   localparam logic [IfBytes-1:0] AdvByteMask = (AdvRem > 0) ? (2**(AdvRem/8)-1) : {IfBytes{1'b1}};
   localparam logic [IfBytes-1:0] IdByteMask  = (IdRem > 0)  ? (2**(IdRem/8)-1)  : {IfBytes{1'b1}};
@@ -151,11 +158,11 @@
         if (start) begin
           cnt_set = 1'b1;
           if (adv_en_i) begin
-            rounds = AdvRounds - 1;
+            rounds = LastAdvRound;
           end else if (id_en_i) begin
-            rounds = IdRounds - 1;
+            rounds = LastIdRound;
           end else if (gen_en_i) begin
-            rounds = GenRounds - 1;
+            rounds = LastGenRound;
           end
 
           // we are sending only 1 entry
@@ -262,11 +269,11 @@
     if (|cmd_error_o || inputs_invalid_o || fsm_error_o) begin
       kmac_data_o.data  = decoy_data;
     end else if (valid && adv_en_i) begin
-      kmac_data_o.data  = adv_data[AdvRounds-1-cnt];
+      kmac_data_o.data  = adv_data[LastAdvRound - cnt];
     end else if (valid && id_en_i) begin
-      kmac_data_o.data  = id_data[IdRounds-1-cnt];
+      kmac_data_o.data  = id_data[LastIdRound - cnt];
     end else if (valid && gen_en_i) begin
-      kmac_data_o.data  = gen_data[GenRounds-1-cnt];
+      kmac_data_o.data  = gen_data[LastGenRound - cnt];
     end
   end
 
diff --git a/hw/ip/keymgr/rtl/keymgr_reseed_ctrl.sv b/hw/ip/keymgr/rtl/keymgr_reseed_ctrl.sv
index b224d2b..b715b47 100644
--- a/hw/ip/keymgr/rtl/keymgr_reseed_ctrl.sv
+++ b/hw/ip/keymgr/rtl/keymgr_reseed_ctrl.sv
@@ -29,8 +29,9 @@
   output logic [LfsrWidth-1:0] seed_o
 );
 
-  localparam int EdnRounds = LfsrWidth / EdnWidth;
-  localparam int EdnCntWidth = prim_util_pkg::vbits(EdnRounds);
+  localparam int unsigned EdnRounds = LfsrWidth / EdnWidth;
+  localparam int unsigned EdnCntWidth = prim_util_pkg::vbits(EdnRounds);
+  localparam int unsigned LastEdnRound = EdnRounds - 1;
 
   // counter to track number of edn rounds
   logic [EdnCntWidth-1:0] edn_cnt;
@@ -42,7 +43,7 @@
   // This tracks how many edn rounds are required to fill up
   // one required entry.
   assign edn_txn_done = edn_req & edn_ack;
-  assign edn_done = (edn_cnt == EdnRounds - 1) & edn_txn_done;
+  assign edn_done = (edn_cnt == LastEdnRound[EdnCntWidth-1:0]) & edn_txn_done;
   always_ff @(posedge clk_i or negedge rst_ni) begin
     if (!rst_ni) begin
       edn_cnt <= '0;
