diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv
index a25fe2a..e728315 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv
@@ -25,10 +25,18 @@
   lc_ctrl_pkg::lc_tx_t lc_escalate_en_o;
   lc_ctrl_pkg::lc_tx_t lc_check_byp_en_o;
 
-  lc_ctrl_pkg::lc_keymgr_div_t lc_keymgr_div_o;
+  lc_ctrl_pkg::lc_tx_t clk_byp_req_o;
+  lc_ctrl_pkg::lc_tx_t clk_byp_ack_i;
+  lc_ctrl_pkg::lc_tx_t flash_rma_req_o;
+  lc_ctrl_pkg::lc_tx_t flash_rma_ack_i;
+
+  lc_ctrl_pkg::lc_keymgr_div_t     keymgr_div_o;
+  lc_ctrl_pkg::lc_flash_rma_seed_t flash_rma_seed_o;
 
   task automatic init(lc_ctrl_pkg::lc_state_e lc_state = LcStRaw,
-                      lc_ctrl_pkg::lc_cnt_e   lc_cnt = LcCntRaw);
+                      lc_ctrl_pkg::lc_cnt_e   lc_cnt = LcCntRaw,
+                      lc_ctrl_pkg::lc_tx_t    clk_byp_ack = lc_ctrl_pkg::Off,
+                      lc_ctrl_pkg::lc_tx_t    flash_rma_ack = lc_ctrl_pkg::Off);
     otp_i.valid = 1;
     otp_i.state = lc_state;
     otp_i.count = lc_cnt;
@@ -41,6 +49,17 @@
 
     otp_hw_cfg_i.valid = lc_ctrl_pkg::Off;
     otp_hw_cfg_i.data = 0;
+
+    clk_byp_ack_i = clk_byp_ack;
+    flash_rma_ack_i = flash_rma_ack;
+  endtask
+
+  task automatic set_clk_byp_ack(lc_ctrl_pkg::lc_tx_t val);
+    clk_byp_ack_i = val;
+  endtask
+
+  task automatic set_flash_rma_ack(lc_ctrl_pkg::lc_tx_t val);
+    flash_rma_ack_i = val;
   endtask
 
 endinterface
diff --git a/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_base_vseq.sv b/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_base_vseq.sv
index 9552239..343d48a 100644
--- a/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_base_vseq.sv
+++ b/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_base_vseq.sv
@@ -58,6 +58,44 @@
     super.read_and_check_all_csrs_after_reset();
   endtask
 
+  virtual task run_clk_byp_rsp_nonblocking(bit has_err = 0);
+    fork
+      forever begin
+        lc_ctrl_pkg::lc_tx_t rsp;
+        wait(cfg.lc_ctrl_vif.clk_byp_req_o == lc_ctrl_pkg::On);
+        rsp = (has_err) ? $urandom_range(0, 1) ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off :
+                          lc_ctrl_pkg::On;
+        cfg.clk_rst_vif.wait_clks($urandom_range(0, 20));
+        cfg.lc_ctrl_vif.set_clk_byp_ack(rsp);
+
+        wait (cfg.lc_ctrl_vif.clk_byp_req_o != lc_ctrl_pkg::On);
+        rsp = (has_err) ? $urandom_range(0, 1) ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off :
+                          lc_ctrl_pkg::Off;
+        cfg.clk_rst_vif.wait_clks($urandom_range(0, 20));
+        cfg.lc_ctrl_vif.set_clk_byp_ack(rsp);
+      end
+    join_none
+  endtask
+
+  virtual task run_flash_rma_rsp_nonblocking(bit has_err = 0);
+    fork
+      forever begin
+        lc_ctrl_pkg::lc_tx_t rsp;
+        wait(cfg.lc_ctrl_vif.flash_rma_req_o == lc_ctrl_pkg::On);
+        rsp = (has_err) ? $urandom_range(0, 1) ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off :
+                          lc_ctrl_pkg::On;
+        cfg.clk_rst_vif.wait_clks($urandom_range(0, 20));
+        cfg.lc_ctrl_vif.set_flash_rma_ack(rsp);
+
+        wait (cfg.lc_ctrl_vif.flash_rma_req_o != lc_ctrl_pkg::On);
+        rsp = (has_err) ? $urandom_range(0, 1) ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off :
+                          lc_ctrl_pkg::Off;
+        cfg.clk_rst_vif.wait_clks($urandom_range(0, 20));
+        cfg.lc_ctrl_vif.set_flash_rma_ack(rsp);
+      end
+    join_none
+  endtask
+
   virtual task sw_transition_req(bit [TL_DW-1:0] next_lc_state, bit [TL_DW*3-1:0] token_val);
     csr_wr(ral.claim_transition_if, CLAIM_TRANS_VAL);
     csr_wr(ral.transition_target, next_lc_state);
diff --git a/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_smoke_vseq.sv b/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_smoke_vseq.sv
index efb92db..1a1f56e 100644
--- a/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_smoke_vseq.sv
+++ b/hw/ip/lc_ctrl/dv/env/seq_lib/lc_ctrl_smoke_vseq.sv
@@ -8,13 +8,23 @@
 
   `uvm_object_new
 
+  rand bit clk_byp_error_rsp;
+  rand bit flash_rma_error_rsp;
   dec_lc_state_e next_lc_state;
 
   constraint lc_cnt_c {
     lc_state != LcStRaw -> lc_cnt != LcCntRaw;
   }
 
+  constraint no_err_rsps_c {
+    clk_byp_error_rsp   == 0;
+    flash_rma_error_rsp == 0;
+  }
+
   task body();
+    run_clk_byp_rsp_nonblocking(clk_byp_error_rsp);
+    run_flash_rma_rsp_nonblocking(flash_rma_error_rsp);
+
     for (int i = 1; i <= num_trans; i++) begin
       if (i != 1) dut_init();
       `uvm_info(`gfn, $sformatf("starting seq %0d/%0d, init LC_state is %0s, LC_cnt is %0s",
@@ -43,8 +53,7 @@
   // need to randomize here because associative array's index cannot be a rand input in constraint
   virtual function void randomize_next_lc_state(dec_lc_state_e curr_lc_state);
     `DV_CHECK_STD_RANDOMIZE_WITH_FATAL(next_lc_state,
-        // TODO: temp constraint for no DecLcStRma
-        next_lc_state inside {VALID_NEXT_STATES[curr_lc_state]}; next_lc_state != DecLcStRma;)
+        next_lc_state inside {VALID_NEXT_STATES[curr_lc_state]};)
   endfunction
 
 endclass : lc_ctrl_smoke_vseq
diff --git a/hw/ip/lc_ctrl/dv/tb.sv b/hw/ip/lc_ctrl/dv/tb.sv
index 351cfed..818aeaa 100644
--- a/hw/ip/lc_ctrl/dv/tb.sv
+++ b/hw/ip/lc_ctrl/dv/tb.sv
@@ -84,14 +84,14 @@
     .lc_escalate_en_o           (lc_ctrl_if.lc_escalate_en_o),
     .lc_check_byp_en_o          (lc_ctrl_if.lc_check_byp_en_o),
 
-    .lc_clk_byp_req_o           (),
-    .lc_clk_byp_ack_i           (lc_ctrl_pkg::On),
+    .lc_clk_byp_req_o           (lc_ctrl_if.clk_byp_req_o),
+    .lc_clk_byp_ack_i           (lc_ctrl_if.clk_byp_ack_i),
 
-    .lc_flash_rma_seed_o        (),
-    .lc_flash_rma_req_o         (),
-    .lc_flash_rma_ack_i         (lc_ctrl_pkg::Off),
+    .lc_flash_rma_seed_o        (lc_ctrl_if.flash_rma_seed_o),
+    .lc_flash_rma_req_o         (lc_ctrl_if.flash_rma_req_o),
+    .lc_flash_rma_ack_i         (lc_ctrl_if.flash_rma_ack_i),
 
-    .lc_keymgr_div_o            (lc_ctrl_if.lc_keymgr_div_o),
+    .lc_keymgr_div_o            (lc_ctrl_if.keymgr_div_o),
 
     .otp_hw_cfg_i               (lc_ctrl_if.otp_hw_cfg_i)
   );
