[csrng/rtl] switch to lc_hw_debug_en for lifecycle input
Converted to the prim_lc_sync module version of this function.
Removed all lint complaints.
Regenerated top earlgrey sv.
Folded in review comments.
Signed-off-by: Mark Branstad <mark.branstad@wdc.com>
diff --git a/hw/ip/csrng/csrng.core b/hw/ip/csrng/csrng.core
index be7d72a..3dd1cd3 100644
--- a/hw/ip/csrng/csrng.core
+++ b/hw/ip/csrng/csrng.core
@@ -10,7 +10,7 @@
- lowrisc:constants:top_pkg
- lowrisc:prim:all
- lowrisc:prim:assert
- - lowrisc:prim:multibit_sync
+ - lowrisc:prim:lc_sync
- lowrisc:ip:tlul
- lowrisc:ip:aes
- lowrisc:ip:csrng_pkg
diff --git a/hw/ip/csrng/data/csrng.hjson b/hw/ip/csrng/data/csrng.hjson
index dcd3b9e..7c95cc9 100755
--- a/hw/ip/csrng/data/csrng.hjson
+++ b/hw/ip/csrng/data/csrng.hjson
@@ -53,7 +53,7 @@
}
{ struct: "lc_tx"
type: "uni"
- name: "lc_dft_en"
+ name: "lc_hw_debug_en"
act: "rcv"
default: "lc_ctrl_pkg::Off"
package: "lc_ctrl_pkg"
diff --git a/hw/ip/csrng/rtl/csrng.sv b/hw/ip/csrng/rtl/csrng.sv
index b19472a..92498c6 100755
--- a/hw/ip/csrng/rtl/csrng.sv
+++ b/hw/ip/csrng/rtl/csrng.sv
@@ -21,7 +21,7 @@
input logic efuse_sw_app_enable_i,
// Lifecycle broadcast inputs
- input lc_ctrl_pkg::lc_tx_t lc_dft_en_i,
+ input lc_ctrl_pkg::lc_tx_t lc_hw_debug_en_i,
// Entropy Interface
output entropy_src_pkg::entropy_src_hw_if_req_t entropy_src_hw_if_o,
@@ -66,7 +66,7 @@
// misc inputs
.efuse_sw_app_enable_i,
- .lc_dft_en_i,
+ .lc_hw_debug_en_i,
// Entropy Interface
.entropy_src_hw_if_o,
diff --git a/hw/ip/csrng/rtl/csrng_block_encrypt.sv b/hw/ip/csrng/rtl/csrng_block_encrypt.sv
index cae2033..54e6185 100755
--- a/hw/ip/csrng/rtl/csrng_block_encrypt.sv
+++ b/hw/ip/csrng/rtl/csrng_block_encrypt.sv
@@ -18,7 +18,7 @@
// update interface
input logic block_encrypt_bypass_i,
input logic block_encrypt_enable_i,
- input lc_ctrl_pkg::lc_tx_t block_encrypt_lc_dft_en_i,
+ input logic block_encrypt_lc_hw_debug_not_on_i,
input logic block_encrypt_req_i,
output logic block_encrypt_rdy_o,
input logic [KeyLen-1:0] block_encrypt_key_i,
@@ -74,20 +74,7 @@
// aes cipher core lifecycle enable
//--------------------------------------------
- lc_ctrl_pkg::lc_tx_t lc_dft_en;
-
- prim_multibit_sync #(
- .Width(lc_ctrl_pkg::TxWidth),
- .NumChecks (2),
- .ResetValue(lc_ctrl_pkg::TxWidth'(lc_ctrl_pkg::Off))
- ) u_prim_multibit_sync (
- .clk_i,
- .rst_ni,
- .data_i (block_encrypt_lc_dft_en_i),
- .data_o (lc_dft_en)
- );
-
- assign aes_cipher_core_enable = (!block_encrypt_bypass_i) || (lc_dft_en != lc_ctrl_pkg::On);
+ assign aes_cipher_core_enable = (!block_encrypt_bypass_i) || block_encrypt_lc_hw_debug_not_on_i;
//--------------------------------------------
// aes cipher core
diff --git a/hw/ip/csrng/rtl/csrng_core.sv b/hw/ip/csrng/rtl/csrng_core.sv
index d97e840..8873aea 100644
--- a/hw/ip/csrng/rtl/csrng_core.sv
+++ b/hw/ip/csrng/rtl/csrng_core.sv
@@ -20,7 +20,7 @@
input efuse_sw_app_enable_i,
// Lifecycle broadcast inputs
- input lc_ctrl_pkg::lc_tx_t lc_dft_en_i,
+ input lc_ctrl_pkg::lc_tx_t lc_hw_debug_en_i,
// Entropy Interface
output entropy_src_pkg::entropy_src_hw_if_req_t entropy_src_hw_if_o,
@@ -257,6 +257,7 @@
logic genbits_stage_fips_sw;
logic [14:0] hw_exception_sts;
+ logic lc_hw_debug_not_on;
// flops
logic [2:0] acmd_q, acmd_d;
@@ -965,6 +966,27 @@
//-------------------------------------
+ // life cycle logic
+ //-------------------------------------
+ // The chip level life cycle control
+ // provide control logic to determine
+ // how certain debug features are controlled.
+
+ lc_ctrl_pkg::lc_tx_t lc_hw_debug_en_out;
+
+ prim_lc_sync #(
+ .NumCopies(1)
+ ) u_prim_lc_sync (
+ .clk_i,
+ .rst_ni,
+ .lc_en_i(lc_hw_debug_en_i),
+ .lc_en_o(lc_hw_debug_en_out)
+ );
+
+ assign lc_hw_debug_not_on = (lc_hw_debug_en_out != lc_ctrl_pkg::On);
+
+
+ //-------------------------------------
// csrng_block_encrypt instantiation
//-------------------------------------
// The csrng_block_encrypt is shared
@@ -985,7 +1007,7 @@
.rst_ni(rst_ni),
.block_encrypt_bypass_i(!aes_cipher_enable),
.block_encrypt_enable_i(cs_enable),
- .block_encrypt_lc_dft_en_i(lc_dft_en_i),
+ .block_encrypt_lc_hw_debug_not_on_i(lc_hw_debug_not_on),
.block_encrypt_req_i(benblk_arb_vld),
.block_encrypt_rdy_o(benblk_arb_rdy),
.block_encrypt_key_i(benblk_arb_key),
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index ed7e87f..5d52357 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -3995,7 +3995,7 @@
{
struct: lc_tx
type: uni
- name: lc_dft_en
+ name: lc_hw_debug_en
act: rcv
default: lc_ctrl_pkg::Off
package: lc_ctrl_pkg
@@ -9310,7 +9310,7 @@
{
struct: lc_tx
type: uni
- name: lc_dft_en
+ name: lc_hw_debug_en
act: rcv
default: lc_ctrl_pkg::Off
package: lc_ctrl_pkg
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 0e33083..2e53eaf 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -1262,7 +1262,7 @@
.entropy_src_hw_if_o(csrng_entropy_src_hw_if_req),
.entropy_src_hw_if_i(csrng_entropy_src_hw_if_rsp),
.efuse_sw_app_enable_i('0),
- .lc_dft_en_i(lc_ctrl_pkg::Off),
+ .lc_hw_debug_en_i(lc_ctrl_pkg::Off),
.tl_i(csrng_tl_req),
.tl_o(csrng_tl_rsp),
.clk_i (clkmgr_clocks.clk_main_secure),