[Cleanup] Remove lc_tx_e type and replace it with lc_tx_t
Same reason as #9264
Signed-off-by: Weicai Yang <weicai@google.com>
diff --git a/hw/dv/sv/cip_lib/cip_base_pkg.sv b/hw/dv/sv/cip_lib/cip_base_pkg.sv
index a54d803..d628853 100644
--- a/hw/dv/sv/cip_lib/cip_base_pkg.sv
+++ b/hw/dv/sv/cip_lib/cip_base_pkg.sv
@@ -99,12 +99,12 @@
`undef _DV_MUBI_RAND_VAL
- // Currently lc_tx_e is exactly the same as mubi4_t. create a separate function in case these
- // 2 types are changed differently in the future
- function automatic lc_ctrl_pkg::lc_tx_e get_rand_lc_tx_val(int t_weight = 2,
+ // Currently lc_tx_t is exactly the same as mubi4_t. Create a separate function in case these
+ // 2 types are changed differently in the future.
+ function automatic lc_ctrl_pkg::lc_tx_t get_rand_lc_tx_val(int t_weight = 2,
int f_weight = 2,
int other_weight = 1);
- return lc_ctrl_pkg::lc_tx_e'(get_rand_mubi4_val(t_weight, f_weight, other_weight));
+ return lc_ctrl_pkg::lc_tx_t'(get_rand_mubi4_val(t_weight, f_weight, other_weight));
endfunction
// package sources
diff --git a/hw/dv/tools/vcs/cover.cfg b/hw/dv/tools/vcs/cover.cfg
index ddee4d3..a7950ac 100644
--- a/hw/dv/tools/vcs/cover.cfg
+++ b/hw/dv/tools/vcs/cover.cfg
@@ -28,7 +28,7 @@
end
begin assert
- // These three assertions in prim_lc_sync check when `lc_ctrl_pkg::lc_tx_e` input is neither `On`
+ // These three assertions in prim_lc_sync check when `lc_ctrl_pkg::lc_tx_t` input is neither `On`
// or `Off`, it is interrupted to the correct `On` or `Off` after one clock cycle. This behavior
// is implemented outside of IP level design thus these assertions are not covered in IP level
// testbenchs.
diff --git a/hw/ip/aon_timer/dv/tb.sv b/hw/ip/aon_timer/dv/tb.sv
index a22245a..8a9a2bb 100644
--- a/hw/ip/aon_timer/dv/tb.sv
+++ b/hw/ip/aon_timer/dv/tb.sv
@@ -17,7 +17,7 @@
wire [NUM_MAX_INTERRUPTS-1:0] interrupts;
wire clk_aon, rst_aon_n;
wire lc_escalate_en_bit;
- lc_ctrl_pkg::lc_tx_e lc_escalate_en;
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en;
wire wkup_expired, wdog_bark;
wire wkup_req, rst_req;
wire sleep;
@@ -28,7 +28,7 @@
tl_if tl_if(.clk(clk), .rst_n(rst_n));
// An input to the DUT that shows whether the CPU is enabled. Rather than wire up an interface
- // with an lc_tx_e member, we expose lc_escalate_en as a single bit and translate it to the right
+ // with an lc_tx_t member, we expose lc_escalate_en as a single bit and translate it to the right
// type here.
pins_if #(1) lc_escalate_en_if (lc_escalate_en_bit);
assign lc_escalate_en = lc_escalate_en_bit ? lc_ctrl_pkg::On : lc_ctrl_pkg::Off;
diff --git a/hw/ip/clkmgr/dv/env/clkmgr_if.sv b/hw/ip/clkmgr/dv/env/clkmgr_if.sv
index 79e47c0..abc6214 100644
--- a/hw/ip/clkmgr/dv/env/clkmgr_if.sv
+++ b/hw/ip/clkmgr/dv/env/clkmgr_if.sv
@@ -25,8 +25,8 @@
// to 0 when all are disabled.
pwrmgr_pkg::pwr_clk_rsp_t pwr_o;
- // scanmode_i == lc_ctrl_pkg::On defeats all clock gating.
- lc_ctrl_pkg::lc_tx_t scanmode_i;
+ // scanmode_i == MuBi4True defeats all clock gating.
+ prim_mubi_pkg::mubi4_t scanmode_i;
// Life cycle enables clock bypass functionality.
lc_ctrl_pkg::lc_tx_t lc_dft_en_i;
@@ -98,7 +98,7 @@
pwr_i.usb_ip_clk_en = value;
endfunction
- function automatic void update_scanmode(lc_ctrl_pkg::lc_tx_t value);
+ function automatic void update_scanmode(prim_mubi_pkg::mubi4_t value);
scanmode_i = value;
endfunction
@@ -131,7 +131,7 @@
actual_clk_io_div4 = actual_div4_value;
endfunction
- task automatic init(logic [NUM_TRANS-1:0] idle, lc_ctrl_pkg::lc_tx_t scanmode,
+ task automatic init(logic [NUM_TRANS-1:0] idle, prim_mubi_pkg::mubi4_t scanmode,
lc_ctrl_pkg::lc_tx_t lc_dft_en = lc_ctrl_pkg::Off,
lc_ctrl_pkg::lc_tx_t lc_clk_byp_req = lc_ctrl_pkg::Off,
prim_mubi_pkg::mubi4_t io_clk_byp_ack = prim_mubi_pkg::MuBi4False);
diff --git a/hw/ip/clkmgr/dv/env/clkmgr_scoreboard.sv b/hw/ip/clkmgr/dv/env/clkmgr_scoreboard.sv
index 7159bcb..0c9e36b 100644
--- a/hw/ip/clkmgr/dv/env/clkmgr_scoreboard.sv
+++ b/hw/ip/clkmgr/dv/env/clkmgr_scoreboard.sv
@@ -99,7 +99,8 @@
if (cfg.io_clk_rst_vif.rst_n && cfg.en_cov) begin
cov.peri_cg_wrap[PeriIo].sample(cfg.clkmgr_vif.peri_io_cb.clk_enable,
cfg.clkmgr_vif.peri_io_cb.ip_clk_en,
- cfg.clkmgr_vif.scanmode_i == lc_ctrl_pkg::On);
+ cfg.clkmgr_vif.scanmode_i == prim_mubi_pkg::MuBi4True
+ );
end
end
forever
@@ -107,7 +108,8 @@
if (cfg.io_clk_rst_vif.rst_n && cfg.en_cov) begin
cov.peri_cg_wrap[PeriDiv2].sample(cfg.clkmgr_vif.peri_div2_cb.clk_enable,
cfg.clkmgr_vif.peri_div2_cb.ip_clk_en,
- cfg.clkmgr_vif.scanmode_i == lc_ctrl_pkg::On);
+ cfg.clkmgr_vif.scanmode_i == prim_mubi_pkg::MuBi4True
+ );
end
end
forever
@@ -115,7 +117,8 @@
if (cfg.io_clk_rst_vif.rst_n && cfg.en_cov) begin
cov.peri_cg_wrap[PeriDiv4].sample(cfg.clkmgr_vif.peri_div4_cb.clk_enable,
cfg.clkmgr_vif.peri_div4_cb.ip_clk_en,
- cfg.clkmgr_vif.scanmode_i == lc_ctrl_pkg::On);
+ cfg.clkmgr_vif.scanmode_i == prim_mubi_pkg::MuBi4True
+ );
end
end
forever
@@ -123,7 +126,8 @@
if (cfg.io_clk_rst_vif.rst_n && cfg.en_cov) begin
cov.peri_cg_wrap[PeriUsb].sample(cfg.clkmgr_vif.peri_usb_cb.clk_enable,
cfg.clkmgr_vif.peri_usb_cb.ip_clk_en,
- cfg.clkmgr_vif.scanmode_i == lc_ctrl_pkg::On);
+ cfg.clkmgr_vif.scanmode_i == prim_mubi_pkg::MuBi4True
+ );
end
end
join
@@ -147,7 +151,7 @@
src_rst_en = cfg.main_clk_rst_vif.rst_n;
end
if (src_rst_en && cfg.en_cov) begin
- logic scan_en = cfg.clkmgr_vif.scanmode_i == lc_ctrl_pkg::On;
+ logic scan_en = cfg.clkmgr_vif.scanmode_i == prim_mubi_pkg::MuBi4True;
cov.trans_cg_wrap[trans].sample(hint, clk_en, scan_en, idle);
end
end
diff --git a/hw/ip/clkmgr/dv/env/seq_lib/clkmgr_base_vseq.sv b/hw/ip/clkmgr/dv/env/seq_lib/clkmgr_base_vseq.sv
index 376bd31..924bf1b 100644
--- a/hw/ip/clkmgr/dv/env/seq_lib/clkmgr_base_vseq.sv
+++ b/hw/ip/clkmgr/dv/env/seq_lib/clkmgr_base_vseq.sv
@@ -25,7 +25,9 @@
} lc_tx_t_sel_e;
// This simplifies the constraint blocks.
- function lc_tx_t get_lc_tx_t_from_sel(lc_tx_t_sel_e sel, lc_tx_t other);
+ // This function is used for 2 enum mubi4_t and lc_tx_t. Use bit[3:0], so that we can skip type
+ // casting when using this function
+ function bit[3:0] get_lc_tx_t_from_sel(lc_tx_t_sel_e sel, bit[3:0] other);
case (sel)
LcTxTSelOn: return On;
LcTxTSelOff: return Off;
@@ -40,8 +42,8 @@
rand bit [NUM_TRANS-1:0] idle;
// scanmode is set according to sel_scanmode, which is randomized with weights.
- lc_tx_t scanmode;
- rand lc_tx_t scanmode_other;
+ prim_mubi_pkg::mubi4_t scanmode;
+ rand bit [3:0] scanmode_other;
rand lc_tx_t_sel_e sel_scanmode;
int scanmode_on_weight = 8;
@@ -51,14 +53,15 @@
LcTxTSelOff := 4,
LcTxTSelOther := 4
};
- !(scanmode_other inside {On, Off});
+ !(scanmode_other inside {prim_mubi_pkg::MuBi4True, prim_mubi_pkg::MuBi4False});
}
// extclk_ctrl_sel is set according to sel_extclk_ctrl_sel, which is randomized with weights.
lc_tx_t extclk_ctrl_sel;
- rand lc_tx_t extclk_ctrl_sel_other;
+ rand bit [3:0] extclk_ctrl_sel_other;
rand lc_tx_t_sel_e sel_extclk_ctrl_sel;
+ // TODO, consider to use macro DV_MUBI4_DIST
constraint extclk_ctrl_sel_c {
sel_extclk_ctrl_sel dist {
LcTxTSelOn := 4,
@@ -82,7 +85,7 @@
task initialize_on_start();
idle = '1;
- scanmode = Off;
+ scanmode = prim_mubi_pkg::MuBi4False;
cfg.clkmgr_vif.init(.idle(idle), .scanmode(scanmode), .lc_dft_en(Off));
io_ip_clk_en = 1'b1;
main_ip_clk_en = 1'b1;
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 8de3b3a..1ffce65 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
@@ -39,17 +39,17 @@
parameter uint OTP_PROG_DDATA_WIDTH = 1;
typedef struct packed {
- lc_ctrl_pkg::lc_tx_e lc_dft_en_o;
- lc_ctrl_pkg::lc_tx_e lc_nvm_debug_en_o;
- lc_ctrl_pkg::lc_tx_e lc_hw_debug_en_o;
- lc_ctrl_pkg::lc_tx_e lc_cpu_en_o;
- lc_ctrl_pkg::lc_tx_e lc_creator_seed_sw_rw_en_o;
- lc_ctrl_pkg::lc_tx_e lc_owner_seed_sw_rw_en_o;
- lc_ctrl_pkg::lc_tx_e lc_seed_hw_rd_en_o;
- lc_ctrl_pkg::lc_tx_e lc_iso_part_sw_rd_en_o;
- lc_ctrl_pkg::lc_tx_e lc_iso_part_sw_wr_en_o;
- lc_ctrl_pkg::lc_tx_e lc_keymgr_en_o;
- lc_ctrl_pkg::lc_tx_e lc_escalate_en_o;
+ 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_seed_hw_rd_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_keymgr_en_o;
+ lc_ctrl_pkg::lc_tx_t lc_escalate_en_o;
} lc_outputs_t;
const lc_outputs_t EXP_LC_OUTPUTS[NUM_STATES] = {
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
index 35c37cf..a6d4162 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv
@@ -35,7 +35,7 @@
output jtag_pkg::jtag_rsp_t jtag_o,
// This bypasses the clock inverter inside the JTAG TAP for scanmmode.
input scan_rst_ni,
- input lc_tx_t scanmode_i,
+ input prim_mubi_pkg::mubi4_t scanmode_i,
// Alert outputs.
input prim_alert_pkg::alert_rx_t [NumAlerts-1:0] alert_rx_i,
output prim_alert_pkg::alert_tx_t [NumAlerts-1:0] alert_tx_o,
diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
index adb6c90..98cd875 100644
--- a/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
+++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_pkg.sv
@@ -36,8 +36,7 @@
typedef enum logic [TxWidth-1:0] {
On = 4'b1010,
Off = 4'b0101
- } lc_tx_e;
- typedef logic [TxWidth-1:0] lc_tx_t;
+ } lc_tx_t;
parameter lc_tx_t LC_TX_DEFAULT = lc_tx_t'(Off);
parameter int RmaSeedWidth = 32;
diff --git a/hw/ip/otp_ctrl/dv/cov/otp_ctrl_cov_if.sv b/hw/ip/otp_ctrl/dv/cov/otp_ctrl_cov_if.sv
index f3d2bfc..7bc819a 100644
--- a/hw/ip/otp_ctrl/dv/cov/otp_ctrl_cov_if.sv
+++ b/hw/ip/otp_ctrl/dv/cov/otp_ctrl_cov_if.sv
@@ -9,7 +9,7 @@
(
input pwrmgr_pkg::pwr_otp_rsp_t pwr_otp_o,
input otp_ctrl_pkg::lc_otp_program_req_t lc_otp_program_i,
- input lc_ctrl_pkg::lc_tx_t lc_escalate_en_i,
+ input bit [3:0] lc_escalate_en_i,
input otp_ctrl_pkg::flash_otp_key_req_t flash_otp_key_i,
input otp_ctrl_pkg::sram_otp_key_req_t [NumSramKeyReqSlots-1:0] sram_otp_key_i,
input otp_ctrl_pkg::otbn_otp_key_req_t otbn_otp_key_i
diff --git a/hw/ip/otp_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv b/hw/ip/otp_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv
index d908437..7154484 100644
--- a/hw/ip/otp_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv
+++ b/hw/ip/otp_ctrl/dv/env/otp_ctrl_ast_inputs_cfg.sv
@@ -24,7 +24,7 @@
// Group: Variables
rand otp_ast_rsp_t otp_ast_pwr_seq_h;
rand logic [otp_ctrl_pkg::OtpTestCtrlWidth-1:0] otp_vendor_test_ctrl;
- rand lc_ctrl_pkg::lc_tx_t scanmode;
+ rand prim_mubi_pkg::mubi4_t scanmode;
rand logic scan_en, scan_rst_n;
// Group: Constraints
diff --git a/hw/ip/rstmgr/dv/env/rstmgr_if.sv b/hw/ip/rstmgr/dv/env/rstmgr_if.sv
index a929a37..58dfe64 100644
--- a/hw/ip/rstmgr/dv/env/rstmgr_if.sv
+++ b/hw/ip/rstmgr/dv/env/rstmgr_if.sv
@@ -30,7 +30,7 @@
// dft bypass
logic scan_rst_ni;
- lc_ctrl_pkg::lc_tx_t scanmode_i;
+ prim_mubi_pkg::mubi4_t scanmode_i;
// reset outputs
rstmgr_pkg::rstmgr_out_t resets_o;
diff --git a/hw/ip/rstmgr/dv/env/seq_lib/rstmgr_base_vseq.sv b/hw/ip/rstmgr/dv/env/seq_lib/rstmgr_base_vseq.sv
index b1d7dff..aeb6a82 100644
--- a/hw/ip/rstmgr/dv/env/seq_lib/rstmgr_base_vseq.sv
+++ b/hw/ip/rstmgr/dv/env/seq_lib/rstmgr_base_vseq.sv
@@ -44,17 +44,18 @@
endcase
endfunction
- rand lc_ctrl_pkg::lc_tx_t scanmode_other;
+ rand bit [3:0] scanmode_other;
rand lc_tx_t_sel_e sel_scanmode;
int scanmode_on_weight = 8;
+ // TODO, consider to use macro DV_MUBI4_DIST
constraint scanmode_c {
sel_scanmode dist {
LcTxTSelOn := scanmode_on_weight,
LcTxTSelOff := 4,
LcTxTSelOther := 4
};
- !(scanmode_other inside {lc_ctrl_pkg::On, lc_ctrl_pkg::Off});
+ !(scanmode_other inside {prim_mubi_pkg::MuBi4True, prim_mubi_pkg::MuBi4False});
}
rand logic [NumSwResets-1:0] sw_rst_regwen;
@@ -307,7 +308,7 @@
cfg.main_clk_rst_vif.set_freq_mhz(MAIN_FREQ_MHZ);
cfg.usb_clk_rst_vif.set_freq_mhz(USB_FREQ_MHZ);
// Initial values for some input pins.
- cfg.rstmgr_vif.scanmode_i = lc_ctrl_pkg::Off;
+ cfg.rstmgr_vif.scanmode_i = prim_mubi_pkg::MuBi4False;
cfg.rstmgr_vif.scan_rst_ni = scan_rst_ni;
set_pwrmgr_rst_reqs(1'b0, 1'b0);
set_rstreqs('0);
diff --git a/hw/ip/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv b/hw/ip/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv
index 5fe2dc1..8910d0f 100644
--- a/hw/ip/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv
+++ b/hw/ip/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv
@@ -27,7 +27,7 @@
input [rstmgr_pkg::PowerDomains-1:0] rst_lc_src_n,
input [rstmgr_pkg::PowerDomains-1:0] rst_sys_src_n,
input logic scan_rst_ni,
- input lc_ctrl_pkg::lc_tx_t scanmode_i
+ input prim_mubi_pkg::mubi4_t scanmode_i
);
// The min and max bounds on the number of cycles for an edge to occur.
diff --git a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_executable_vseq.sv b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_executable_vseq.sv
index da73db3..e8e49ef 100644
--- a/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_executable_vseq.sv
+++ b/hw/ip/sram_ctrl/dv/env/seq_lib/sram_ctrl_executable_vseq.sv
@@ -26,7 +26,7 @@
task randomize_and_drive_ifetch_en();
mubi8_t en_sram_ifetch = get_rand_mubi8_val();
mubi4_t en_exec_csr = get_rand_mubi4_val();
- lc_ctrl_pkg::lc_tx_e hw_debug_en = get_rand_lc_tx_val();
+ lc_ctrl_pkg::lc_tx_t hw_debug_en = get_rand_lc_tx_val();
`uvm_info(`gfn, $sformatf("en_exec_csr: 0b%0b", en_exec_csr), UVM_HIGH)
`uvm_info(`gfn, $sformatf("en_sram_ifetch: 0b%0b", en_sram_ifetch), UVM_HIGH)
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 6024eb9..b62156a 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -806,8 +806,8 @@
);
// Wire up alert handler LPGs
- lc_ctrl_pkg::lc_tx_t [alert_pkg::NLpg-1:0] lpg_cg_en;
- lc_ctrl_pkg::lc_tx_t [alert_pkg::NLpg-1:0] lpg_rst_en;
+ prim_mubi_pkg::mubi4_t [alert_pkg::NLpg-1:0] lpg_cg_en;
+ prim_mubi_pkg::mubi4_t [alert_pkg::NLpg-1:0] lpg_rst_en;
// peri_sys_io_div4_0
diff --git a/hw/top_earlgrey/rtl/padring.sv b/hw/top_earlgrey/rtl/padring.sv
index 9a32932..07e8c2d 100644
--- a/hw/top_earlgrey/rtl/padring.sv
+++ b/hw/top_earlgrey/rtl/padring.sv
@@ -26,7 +26,7 @@
) (
// This is only used for scan
input clk_scan_i,
- lc_ctrl_pkg::lc_tx_t scanmode_i,
+ prim_mubi_pkg::mubi4_t scanmode_i,
// RAW outputs used for DFT and infrastructure
// purposes (e.g. external muxed clock)
output logic [NDioPads-1:0] dio_in_raw_o,
@@ -50,9 +50,9 @@
pad_pok_t [NIoBanks-1:0] pad_pok;
logic scanmode;
- prim_lc_dec u_prim_lc_dec (
- .lc_en_i ( scanmode_i ),
- .lc_en_dec_o ( scanmode )
+ prim_mubi4_dec u_prim_mubi4_dec (
+ .mubi_i ( scanmode_i ),
+ .mubi_dec_o ( scanmode )
);
for (genvar k = 0; k < NDioPads; k++) begin : gen_dio_pads
diff --git a/util/topgen/templates/toplevel.sv.tpl b/util/topgen/templates/toplevel.sv.tpl
index 220168e..1fadd5c 100644
--- a/util/topgen/templates/toplevel.sv.tpl
+++ b/util/topgen/templates/toplevel.sv.tpl
@@ -299,8 +299,8 @@
);
// Wire up alert handler LPGs
- lc_ctrl_pkg::lc_tx_t [alert_pkg::NLpg-1:0] lpg_cg_en;
- lc_ctrl_pkg::lc_tx_t [alert_pkg::NLpg-1:0] lpg_rst_en;
+ prim_mubi_pkg::mubi4_t [alert_pkg::NLpg-1:0] lpg_cg_en;
+ prim_mubi_pkg::mubi4_t [alert_pkg::NLpg-1:0] lpg_rst_en;
<%
# get all known typed clocks and add them to a dict