diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env.sv
index 8d74797..b27f843 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env.sv
@@ -12,7 +12,7 @@
 
   push_pull_agent#(.HostDataWidth(OTP_PROG_HDATA_WIDTH), .DeviceDataWidth(OTP_PROG_DDATA_WIDTH))
                    m_otp_prog_pull_agent;
-  push_pull_agent#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) m_otp_token_pull_agent;
+  push_pull_agent#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) m_otp_token_pull_agent;
   alert_esc_agent m_esc_wipe_secrets_agent;
   alert_esc_agent m_esc_scrap_state_agent;
   jtag_agent      m_jtag_agent;
@@ -51,10 +51,10 @@
         cfg.m_otp_prog_pull_agent_cfg);
     cfg.m_otp_prog_pull_agent_cfg.en_cov = cfg.en_cov;
 
-    m_otp_token_pull_agent = push_pull_agent#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth))::type_id::
-        create("m_otp_token_pull_agent", this);
-    uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))::set(this,
-        "m_otp_token_pull_agent", "cfg", cfg.m_otp_token_pull_agent_cfg);
+    m_otp_token_pull_agent = push_pull_agent#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth))::
+        type_id::create("m_otp_token_pull_agent", this);
+    uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))::
+        set(this, "m_otp_token_pull_agent", "cfg", cfg.m_otp_token_pull_agent_cfg);
     cfg.m_otp_token_pull_agent_cfg.en_cov = cfg.en_cov;
   endfunction
 
diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_cfg.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_cfg.sv
index 33c1474..fca7e4b 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_cfg.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_cfg.sv
@@ -7,7 +7,7 @@
   // ext component cfgs
   push_pull_agent_cfg#(.HostDataWidth(OTP_PROG_HDATA_WIDTH),
                        .DeviceDataWidth(OTP_PROG_DDATA_WIDTH)) m_otp_prog_pull_agent_cfg;
-  push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) m_otp_token_pull_agent_cfg;
+  push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) m_otp_token_pull_agent_cfg;
   alert_esc_agent_cfg m_esc_wipe_secrets_agent_cfg;
   alert_esc_agent_cfg m_esc_scrap_state_agent_cfg;
   jtag_agent_cfg      m_jtag_agent_cfg;
@@ -31,7 +31,8 @@
     m_otp_prog_pull_agent_cfg.agent_type = PullAgent;
     m_otp_prog_pull_agent_cfg.if_mode    = Device;
 
-    m_otp_token_pull_agent_cfg = push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth))
+    m_otp_token_pull_agent_cfg = push_pull_agent_cfg#(
+                                 .HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth))
         ::type_id::create("m_otp_token_pull_agent_cfg");
     `DV_CHECK_RANDOMIZE_FATAL(m_otp_token_pull_agent_cfg)
     m_otp_token_pull_agent_cfg.agent_type = PullAgent;
diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_pkg.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_pkg.sv
index 7cad420..bf3e68a 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_pkg.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_env_pkg.sv
@@ -13,6 +13,7 @@
   import csr_utils_pkg::*;
   import lc_ctrl_ral_pkg::*;
   import lc_ctrl_pkg::*;
+  import lc_ctrl_state_pkg::*;
   import otp_ctrl_pkg::*;
   import push_pull_agent_pkg::*;
   import alert_esc_agent_pkg::*;
@@ -29,7 +30,7 @@
   parameter uint   NUM_STATES = 16;
 
   // lc_otp_program host data width: lc_state_e width + lc_cnt_e width
-  parameter uint OTP_PROG_HDATA_WIDTH = lc_ctrl_pkg::LcStateWidth + lc_ctrl_pkg::LcCountWidth;
+  parameter uint OTP_PROG_HDATA_WIDTH = LcStateWidth + LcCountWidth;
   // TODO: temp set to 0, once push-pull agent can constraint data, it will set to 1 for error bit
   parameter uint OTP_PROG_DDATA_WIDTH = 0;
 
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 6b91916..4b036fc 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_if.sv
@@ -6,40 +6,41 @@
 interface lc_ctrl_if(input clk, input rst_n);
 
   import lc_ctrl_pkg::*;
+  import lc_ctrl_state_pkg::*;
   import otp_ctrl_pkg::*;
   import otp_ctrl_part_pkg::*;
 
   logic tdo_oe; // TODO: add assertions
   logic prog_err; // TODO: remove once push-pull can constrain data
-  otp_ctrl_pkg::otp_lc_data_t     otp_i;
-  otp_ctrl_part_pkg::otp_hw_cfg_t otp_hw_cfg_i;
-  lc_ctrl_pkg::lc_token_t hashed_token;
+  otp_lc_data_t otp_i;
+  otp_hw_cfg_t  otp_hw_cfg_i;
+  lc_token_t    hashed_token;
 
-  lc_ctrl_pkg::lc_tx_t lc_dft_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_nvm_debug_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_hw_debug_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_cpu_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_creator_seed_sw_rw_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_owner_seed_sw_rw_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_iso_part_sw_rd_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_iso_part_sw_wr_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_seed_hw_rd_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_keymgr_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_escalate_en_o;
-  lc_ctrl_pkg::lc_tx_t lc_check_byp_en_o;
+  lc_tx_t lc_dft_en_o;
+  lc_tx_t lc_nvm_debug_en_o;
+  lc_tx_t lc_hw_debug_en_o;
+  lc_tx_t lc_cpu_en_o;
+  lc_tx_t lc_creator_seed_sw_rw_en_o;
+  lc_tx_t lc_owner_seed_sw_rw_en_o;
+  lc_tx_t lc_iso_part_sw_rd_en_o;
+  lc_tx_t lc_iso_part_sw_wr_en_o;
+  lc_tx_t lc_seed_hw_rd_en_o;
+  lc_tx_t lc_keymgr_en_o;
+  lc_tx_t lc_escalate_en_o;
+  lc_tx_t lc_check_byp_en_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_tx_t clk_byp_req_o;
+  lc_tx_t clk_byp_ack_i;
+  lc_tx_t flash_rma_req_o;
+  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;
+  lc_keymgr_div_t     keymgr_div_o;
+  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_tx_t    clk_byp_ack = lc_ctrl_pkg::Off,
-                      lc_ctrl_pkg::lc_tx_t    flash_rma_ack = lc_ctrl_pkg::Off);
+  task automatic init(lc_state_e lc_state = LcStRaw,
+                      lc_cnt_e   lc_cnt = LcCntRaw,
+                      lc_tx_t    clk_byp_ack = Off,
+                      lc_tx_t    flash_rma_ack = Off);
     otp_i.valid = 1;
     otp_i.error = 0;
     otp_i.state = lc_state;
@@ -49,7 +50,7 @@
     otp_i.rma_token = 0;
     otp_i.id_state = LcIdBlank;
 
-    otp_hw_cfg_i.valid = lc_ctrl_pkg::Off;
+    otp_hw_cfg_i.valid = Off;
     otp_hw_cfg_i.data = 0;
 
     clk_byp_ack_i = clk_byp_ack;
@@ -58,15 +59,15 @@
     hashed_token = '0;
   endtask
 
-  task automatic set_clk_byp_ack(lc_ctrl_pkg::lc_tx_t val);
+  task automatic set_clk_byp_ack(lc_tx_t val);
     clk_byp_ack_i = val;
   endtask
 
-  task automatic set_flash_rma_ack(lc_ctrl_pkg::lc_tx_t val);
+  task automatic set_flash_rma_ack(lc_tx_t val);
     flash_rma_ack_i = val;
   endtask
 
-  task automatic set_hashed_token(lc_ctrl_pkg::lc_token_t val);
+  task automatic set_hashed_token(lc_token_t val);
     hashed_token = val;
   endtask
 endinterface
diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv
index d79488e..2bd0536 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv
@@ -15,7 +15,7 @@
   // TLM agent fifos
   uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(OTP_PROG_HDATA_WIDTH),
                         .DeviceDataWidth(OTP_PROG_DDATA_WIDTH))) otp_prog_fifo;
-  uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))
+  uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))
                         otp_token_fifo;
   uvm_tlm_analysis_fifo #(alert_esc_seq_item) esc_wipe_secrets_fifo;
   uvm_tlm_analysis_fifo #(alert_esc_seq_item) esc_scrap_state_fifo;
diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_virtual_sequencer.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_virtual_sequencer.sv
index 9b9a4ff..5505403 100644
--- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_virtual_sequencer.sv
+++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_virtual_sequencer.sv
@@ -10,7 +10,7 @@
 
   push_pull_sequencer#(.HostDataWidth(OTP_PROG_HDATA_WIDTH),
                        .DeviceDataWidth(OTP_PROG_DDATA_WIDTH))    otp_prog_pull_sequencer_h;
-  push_pull_sequencer#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) otp_token_pull_sequencer_h;
+  push_pull_sequencer#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) otp_token_pull_sequencer_h;
 
   alert_esc_sequencer esc_wipe_secrets_sequencer_h;
   alert_esc_sequencer esc_scrap_state_sequencer_h;
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 3d1923a..74c8ddc 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
@@ -13,8 +13,8 @@
   // various knobs to enable certain routines
   bit do_lc_ctrl_init = 1'b1;
 
-  rand lc_ctrl_pkg::lc_state_e lc_state;
-  rand lc_ctrl_pkg::lc_cnt_e   lc_cnt;
+  rand lc_ctrl_state_pkg::lc_state_e lc_state;
+  rand lc_ctrl_state_pkg::lc_cnt_e   lc_cnt;
 
   constraint lc_cnt_c {
     (lc_state != LcStRaw) -> (lc_cnt != LcCntRaw);
diff --git a/hw/ip/lc_ctrl/dv/tb.sv b/hw/ip/lc_ctrl/dv/tb.sv
index f2ef68f..3df7d12 100644
--- a/hw/ip/lc_ctrl/dv/tb.sv
+++ b/hw/ip/lc_ctrl/dv/tb.sv
@@ -8,7 +8,6 @@
   import dv_utils_pkg::*;
   import lc_ctrl_env_pkg::*;
   import lc_ctrl_test_pkg::*;
-  import lc_ctrl_pkg::*;
   import otp_ctrl_pkg::*;
   import jtag_agent_pkg::*;
 
@@ -34,7 +33,7 @@
   jtag_if      jtag_if();
   push_pull_if #(.HostDataWidth(OTP_PROG_HDATA_WIDTH), .DeviceDataWidth(OTP_PROG_DDATA_WIDTH))
                otp_prog_if(.clk(clk), .rst_n(rst_n));
-  push_pull_if #(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) otp_token_if(.clk(clk), .rst_n(rst_n));
+  push_pull_if #(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) otp_token_if(.clk(clk), .rst_n(rst_n));
 
   `DV_ALERT_IF_CONNECT
 
@@ -118,7 +117,7 @@
     uvm_config_db#(virtual push_pull_if#(.HostDataWidth(OTP_PROG_HDATA_WIDTH),
                                          .DeviceDataWidth(OTP_PROG_DDATA_WIDTH)))::
                    set(null, "*env.m_otp_prog_pull_agent*", "vif", otp_prog_if);
-    uvm_config_db#(virtual push_pull_if#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))::
+    uvm_config_db#(virtual push_pull_if#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))::
                    set(null, "*env.m_otp_token_pull_agent*", "vif", otp_token_if);
     $timeformat(-12, 0, " ps", 12);
     run_test();
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env.sv
index 6d7832c..1b808d5 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env.sv
@@ -17,7 +17,7 @@
   push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_addr_pull_agent;
   push_pull_agent#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_data_pull_agent;
   push_pull_agent#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)) m_lc_prog_pull_agent;
-  push_pull_agent#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) m_lc_token_pull_agent;
+  push_pull_agent#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) m_lc_token_pull_agent;
 
   function void build_phase(uvm_phase phase);
     super.build_phase(phase);
@@ -54,9 +54,9 @@
         set(this, "m_lc_prog_pull_agent", "cfg", cfg.m_lc_prog_pull_agent_cfg);
 
     // build lc-otp token pull agent
-    m_lc_token_pull_agent = push_pull_agent#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth))
+    m_lc_token_pull_agent = push_pull_agent#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth))
         ::type_id::create("m_lc_token_pull_agent", this);
-    uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))::
+    uvm_config_db#(push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))::
         set(this, "m_lc_token_pull_agent", "cfg", cfg.m_lc_token_pull_agent_cfg);
 
     // config mem virtual interface
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_cfg.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_cfg.sv
index 6c570b9..ec853fb 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_cfg.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_cfg.sv
@@ -5,12 +5,15 @@
 class otp_ctrl_env_cfg extends cip_base_env_cfg #(.RAL_T(otp_ctrl_reg_block));
 
   // ext component cfgs
-  rand push_pull_agent_cfg#(.DeviceDataWidth(SRAM_DATA_SIZE))  m_sram_pull_agent_cfg[NumSramKeyReqSlots];
+  rand push_pull_agent_cfg#(.DeviceDataWidth(SRAM_DATA_SIZE))
+      m_sram_pull_agent_cfg[NumSramKeyReqSlots];
   rand push_pull_agent_cfg#(.DeviceDataWidth(OTBN_DATA_SIZE))  m_otbn_pull_agent_cfg;
   rand push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_data_pull_agent_cfg;
   rand push_pull_agent_cfg#(.DeviceDataWidth(FLASH_DATA_SIZE)) m_flash_addr_pull_agent_cfg;
-  rand push_pull_agent_cfg#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)) m_lc_prog_pull_agent_cfg;
-  rand push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) m_lc_token_pull_agent_cfg;
+  rand push_pull_agent_cfg#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE))
+      m_lc_prog_pull_agent_cfg;
+  rand push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth))
+      m_lc_token_pull_agent_cfg;
 
   // ext interfaces
   mem_bkdr_vif mem_bkdr_vif;
@@ -51,8 +54,9 @@
                                .DeviceDataWidth(1))::type_id::create("m_lc_prog_pull_agent_cfg");
     m_lc_prog_pull_agent_cfg.agent_type = PullAgent;
 
-    m_lc_token_pull_agent_cfg = push_pull_agent_cfg#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth))::
-                                type_id::create("m_lc_token_pull_agent_cfg");
+    m_lc_token_pull_agent_cfg = push_pull_agent_cfg#(
+                                .HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth))::type_id
+                                ::create("m_lc_token_pull_agent_cfg");
     m_lc_token_pull_agent_cfg.agent_type = PullAgent;
     m_lc_token_pull_agent_cfg.in_bidirectional_mode = 1;
 
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_pkg.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_pkg.sv
index 02f1d5e..54068dd 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_pkg.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_env_pkg.sv
@@ -18,6 +18,7 @@
   import otp_ctrl_pkg::*;
   import otp_ctrl_part_pkg::*;
   import lc_ctrl_pkg::*;
+  import lc_ctrl_state_pkg::*;
 
   // macro includes
   `include "uvm_macros.svh"
@@ -62,12 +63,11 @@
   parameter uint OTP_ARRAY_SIZE = (CreatorSwCfgSize + OwnerSwCfgSize + HwCfgSize + Secret0Size +
                                    Secret1Size + Secret2Size) / (TL_DW / 8);
 
-  // Total num of valid dai address, secret partitions have a granulity of 8, the rest have
-  // a granulity of 4.
+  // Total num of valid dai address, secret partitions have a granularity of 8, the rest have
+  // a granularity of 4. Subtract 8 for each digest.
   parameter uint DAI_ADDR_SIZE =
-      (CreatorSwCfgContentSize + OwnerSwCfgContentSize + HwCfgContentSize) / 4 +
-      // secret partitions does not have content size, so use total size
-      (Secret0Size + Secret1Size + Secret2Size) / 8 - 3;
+      (CreatorSwCfgSize + OwnerSwCfgSize + HwCfgSize - 3 * 8) / 4 +
+      (Secret0Size + Secret1Size + Secret2Size - 3 * 8) / 8 ;
 
   // sram rsp data has 1 bit for seed_valid, the rest are for key and nonce
   parameter uint SRAM_DATA_SIZE = 1 + SramKeyWidth + SramNonceWidth;
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_scoreboard.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_scoreboard.sv
index 50d3971..be8a73d 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_scoreboard.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_scoreboard.sv
@@ -30,7 +30,7 @@
   uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(FLASH_DATA_SIZE))) flash_data_fifo;
   uvm_tlm_analysis_fifo #(push_pull_item#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE)))
                         lc_prog_fifo;
-  uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))
+  uvm_tlm_analysis_fifo #(push_pull_item#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))
                         lc_token_fifo;
 
   // local queues to hold incoming packets pending comparison
@@ -109,7 +109,7 @@
 
   virtual task process_lc_token_req();
     forever begin
-      push_pull_item#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) rcv_item;
+      push_pull_item#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) rcv_item;
       bit [SCRAMBLE_DATA_SIZE-1:0] exp_data_0, exp_data_1;
       lc_token_fifo.get(rcv_item);
       exp_data_0 = present_encode_with_final_const(
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv
index 006af34..8b7f99e 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_virtual_sequencer.sv
@@ -14,7 +14,7 @@
   push_pull_sequencer#(.DeviceDataWidth(OTBN_DATA_SIZE)) otbn_pull_sequencer_h;
   push_pull_sequencer#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_data_pull_sequencer_h;
   push_pull_sequencer#(.DeviceDataWidth(FLASH_DATA_SIZE)) flash_addr_pull_sequencer_h;
-  push_pull_sequencer#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) lc_token_pull_sequencer_h;
+  push_pull_sequencer#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) lc_token_pull_sequencer_h;
   push_pull_sequencer#(.DeviceDataWidth(1), .HostDataWidth(LC_PROG_DATA_SIZE))
                        lc_prog_pull_sequencer_h;
 endclass
diff --git a/hw/ip/otp_ctrl/dv/env/seq_lib/otp_ctrl_base_vseq.sv b/hw/ip/otp_ctrl/dv/env/seq_lib/otp_ctrl_base_vseq.sv
index 2c327aa..3f99aba 100644
--- a/hw/ip/otp_ctrl/dv/env/seq_lib/otp_ctrl_base_vseq.sv
+++ b/hw/ip/otp_ctrl/dv/env/seq_lib/otp_ctrl_base_vseq.sv
@@ -187,8 +187,8 @@
   virtual task req_lc_transition();
     // TODO: this two variables are constraints to lc_prog_pull_seq once it supports data
     // constraint
-    lc_ctrl_pkg::lc_state_e lc_state;
-    lc_ctrl_pkg::lc_cnt_e lc_cnt;
+    lc_ctrl_state_pkg::lc_state_e lc_state;
+    lc_ctrl_state_pkg::lc_cnt_e lc_cnt;
     push_pull_host_seq#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1))
                         lc_prog_pull_seq;
     `uvm_create_on(lc_prog_pull_seq, p_sequencer.lc_prog_pull_sequencer_h);
@@ -199,7 +199,7 @@
   endtask
 
   virtual task req_lc_token();
-    push_pull_host_seq#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) lc_token_pull_seq;
+    push_pull_host_seq#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) lc_token_pull_seq;
     `uvm_create_on(lc_token_pull_seq, p_sequencer.lc_token_pull_sequencer_h);
     `DV_CHECK_RANDOMIZE_FATAL(lc_token_pull_seq)
     `uvm_send(lc_token_pull_seq)
diff --git a/hw/ip/otp_ctrl/dv/tb.sv b/hw/ip/otp_ctrl/dv/tb.sv
index 6815cb0..f391852c 100644
--- a/hw/ip/otp_ctrl/dv/tb.sv
+++ b/hw/ip/otp_ctrl/dv/tb.sv
@@ -9,7 +9,6 @@
   import otp_ctrl_env_pkg::*;
   import otp_ctrl_test_pkg::*;
   import otp_ctrl_reg_pkg::*;
-  import lc_ctrl_pkg::*;
 
   // macro includes
   `include "uvm_macros.svh"
@@ -38,7 +37,7 @@
   // lc_otp interfaces
   push_pull_if #(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1))
                  lc_prog_if(.clk(clk), .rst_n(rst_n));
-  push_pull_if #(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)) lc_token_if(.clk(clk), .rst_n(rst_n));
+  push_pull_if #(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)) lc_token_if(.clk(clk), .rst_n(rst_n));
 
   push_pull_if #(.DeviceDataWidth(SRAM_DATA_SIZE))
                  sram_if[NumSramKeyReqSlots](.clk(clk), .rst_n(rst_n));
@@ -146,7 +145,7 @@
                    "*env.m_flash_addr_pull_agent*", "vif", flash_addr_if);
     uvm_config_db#(virtual push_pull_if#(.HostDataWidth(LC_PROG_DATA_SIZE), .DeviceDataWidth(1)))::
                    set(null, "*env.m_lc_prog_pull_agent*", "vif", lc_prog_if);
-    uvm_config_db#(virtual push_pull_if#(.HostDataWidth(lc_ctrl_pkg::LcTokenWidth)))::
+    uvm_config_db#(virtual push_pull_if#(.HostDataWidth(lc_ctrl_state_pkg::LcTokenWidth)))::
                    set(null, "*env.m_lc_token_pull_agent*", "vif", lc_token_if);
 
     uvm_config_db#(intr_vif)::set(null, "*.env", "intr_vif", intr_if);
