diff --git a/hw/ip/flash_ctrl/rtl/flash_ctrl_lcmgr.sv b/hw/ip/flash_ctrl/rtl/flash_ctrl_lcmgr.sv
index 1d6bf2c..437654c 100644
--- a/hw/ip/flash_ctrl/rtl/flash_ctrl_lcmgr.sv
+++ b/hw/ip/flash_ctrl/rtl/flash_ctrl_lcmgr.sv
@@ -76,13 +76,14 @@
 );
 
   // total number of pages to be wiped during RMA entry
-  localparam int WipeIdxWidth = prim_util_pkg::vbits(WipeEntries);
+  localparam int unsigned WipeIdxWidth = prim_util_pkg::vbits(WipeEntries);
+  localparam int unsigned MaxWipeEntry = WipeEntries - 1;
 
   // seed related local params
-  localparam int SeedReads = SeedWidth / BusWidth;
-  localparam int SeedRdsWidth = $clog2(SeedReads);
-  localparam int SeedCntWidth = $clog2(NumSeeds+1);
-  localparam int NumSeedWidth = $clog2(NumSeeds);
+  localparam int unsigned SeedReads = SeedWidth / BusWidth;
+  localparam int unsigned SeedRdsWidth = $clog2(SeedReads);
+  localparam int unsigned SeedCntWidth = $clog2(NumSeeds+1);
+  localparam int unsigned NumSeedWidth = $clog2(NumSeeds);
 
   // the various seed outputs
   logic [NumSeeds-1:0][SeedReads-1:0][BusWidth-1:0] seeds_q;
@@ -284,7 +285,7 @@
     addr = '0;
     part_sel = FlashPartInfo;
     info_sel = 0;
-    num_words = SeedReads - 1'b1;
+    num_words = SeedReads[11:0] - 12'd1;
 
     // seed status
     seed_err_o = 1'b0;
@@ -350,7 +351,7 @@
         info_sel = seed_info_sel;
 
         // we have checked all seeds, proceed
-        if (seed_cnt_q == NumSeeds) begin
+        if (seed_cnt_q == NumSeeds[SeedCntWidth-1:0]) begin
           start = 1'b0;
           state_d = StWait;
 
@@ -399,7 +400,7 @@
         lfsr_en_o = 1'b1;
         rma_wipe_req = 1'b1;
 
-        if (rma_wipe_idx == WipeEntries-1 && rma_wipe_done) begin
+        if (rma_wipe_idx == MaxWipeEntry[WipeIdxWidth-1:0] && rma_wipe_done) begin
           // first check for error status
           // If error status is set, go directly to invalid terminal state
           // If error status is good, go to second check
@@ -438,9 +439,10 @@
   // RMA wiping Mechanism
   ///////////////////////////////
 
-  localparam int PageCntWidth = prim_util_pkg::vbits(PagesPerBank + 1);
-  localparam int WordCntWidth = prim_util_pkg::vbits(BusWordsPerPage + 1);
-  localparam int BeatCntWidth = prim_util_pkg::vbits(WidthMultiple);
+  localparam int unsigned PageCntWidth = prim_util_pkg::vbits(PagesPerBank + 1);
+  localparam int unsigned WordCntWidth = prim_util_pkg::vbits(BusWordsPerPage + 1);
+  localparam int unsigned BeatCntWidth = prim_util_pkg::vbits(WidthMultiple);
+  localparam int unsigned MaxBeatCnt = WidthMultiple - 1;
 
   logic page_cnt_ld;
   logic page_cnt_incr;
@@ -496,7 +498,7 @@
     end else if (word_cnt_clr) begin
       word_cnt <= '0;
     end else if (word_cnt_incr) begin
-      word_cnt <= word_cnt + WidthMultiple;
+      word_cnt <= word_cnt + WidthMultiple[WordCntWidth-1:0];
     end
   end
 
@@ -555,7 +557,7 @@
 
   assign rma_part_sel = RmaWipeEntries[rma_wipe_idx].part;
   assign rma_info_sel = RmaWipeEntries[rma_wipe_idx].info_sel;
-  assign rma_num_words = WidthMultiple - 1;
+  assign rma_num_words = WidthMultiple[11:0] - 1;
 
 
   //fsm for handling the actual wipe
@@ -603,7 +605,7 @@
       end
 
       StRmaWordSel: begin
-        if (word_cnt < BusWordsPerPage) begin
+        if (word_cnt < BusWordsPerPage[WordCntWidth-1:0]) begin
           rma_state_d = StRmaProgram;
         end else begin
           word_cnt_clr = 1'b1;
@@ -617,7 +619,7 @@
         rma_op = FlashOpProgram;
         prog_cnt_en = 1'b1;
 
-        if ((beat_cnt == WidthMultiple-1) && wready_i) begin
+        if ((beat_cnt == MaxBeatCnt[BeatCntWidth-1:0]) && wready_i) begin
           rma_state_d = StRmaProgramWait;
         end
       end
@@ -638,7 +640,7 @@
         rma_op = FlashOpRead;
         rd_cnt_en = 1'b1;
 
-        if ((beat_cnt == WidthMultiple-1) && done_i) begin
+        if ((beat_cnt == MaxBeatCnt[BeatCntWidth-1:0]) && done_i) begin
           beat_cnt_clr = 1'b1;
           word_cnt_incr = 1'b1;
           rma_state_d = StRmaWordSel;
diff --git a/hw/ip/flash_ctrl/rtl/flash_mp.sv b/hw/ip/flash_ctrl/rtl/flash_mp.sv
index 9961af8..3adfcf0 100644
--- a/hw/ip/flash_ctrl/rtl/flash_mp.sv
+++ b/hw/ip/flash_ctrl/rtl/flash_mp.sv
@@ -170,7 +170,7 @@
   // bank erase allowed for only data partition and software interface
   always_comb begin
     for (int unsigned i = 0; i < NumBanks; i++) begin: bank_comps
-      bk_erase_en[i] = (bank_addr == i) & bank_cfgs_i[i].q & ~hw_sel;
+      bk_erase_en[i] = (bank_addr == i[BankW-1:0]) & bank_cfgs_i[i].q & ~hw_sel;
     end
   end
 
