From 1a1c45baeccfc2bb973b9b8171d2c82d9862e98d Mon Sep 17 00:00:00 2001 From: Michael Schaffner Date: Wed, 14 Feb 2024 11:24:28 -0800 Subject: [PATCH] [lc_ctrl] Use unique diversification values This makes the diversification values fed to the keymgr unique for each group of life cycle states. Fixes #14047 Signed-off-by: Michael Schaffner --- hw/ip/lc_ctrl/data/lc_ctrl.hjson | 28 ++- hw/ip/lc_ctrl/doc/interfaces.md | 28 ++- .../lc_ctrl/dv/env/lc_ctrl_parameters_cfg.sv | 35 ++- hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv | 32 ++- hw/ip/lc_ctrl/dv/tb.sv | 16 +- hw/ip/lc_ctrl/rtl/lc_ctrl.sv | 24 +- hw/ip/lc_ctrl/rtl/lc_ctrl_fsm.sv | 20 +- hw/ip/lc_ctrl/rtl/lc_ctrl_signal_decode.sv | 43 +++- .../data/autogen/top_earlgrey.gen.hjson | 142 ++++++----- .../chip_sw_keymgr_key_derivation_vseq.sv | 2 +- hw/top_earlgrey/rtl/autogen/top_earlgrey.sv | 4 +- .../rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv | 228 +++++++++--------- 12 files changed, 357 insertions(+), 245 deletions(-) diff --git a/hw/ip/lc_ctrl/data/lc_ctrl.hjson b/hw/ip/lc_ctrl/data/lc_ctrl.hjson index 316b2d500f0937..cf1889cfdacf72 100644 --- a/hw/ip/lc_ctrl/data/lc_ctrl.hjson +++ b/hw/ip/lc_ctrl/data/lc_ctrl.hjson @@ -72,28 +72,40 @@ }, // Random netlist constants { name: "RndCnstLcKeymgrDivInvalid", - desc: "Compile-time random bits for lc state group diversification value", + desc: "Diversification value used for all invalid life cycle states.", type: "lc_ctrl_pkg::lc_keymgr_div_t", randcount: "128", - randtype: "data", + randtype: "data", // Compile-time random bits } - { name: "RndCnstLcKeymgrDivTestDevRma", - desc: "Compile-time random bits for lc state group diversification value", + { name: "RndCnstLcKeymgrDivTestUnlocked", + desc: "Diversification value used for the TEST_UNLOCKED* life cycle states.", type: "lc_ctrl_pkg::lc_keymgr_div_t", randcount: "128", - randtype: "data", + randtype: "data", // Compile-time random bits + } + { name: "RndCnstLcKeymgrDivDev", + desc: "Diversification value used for the DEV life cycle state.", + type: "lc_ctrl_pkg::lc_keymgr_div_t", + randcount: "128", + randtype: "data", // Compile-time random bits } { name: "RndCnstLcKeymgrDivProduction", - desc: "Compile-time random bits for lc state group diversification value", + desc: "Diversification value used for the PROD/PROD_END life cycle states.", + type: "lc_ctrl_pkg::lc_keymgr_div_t", + randcount: "128", + randtype: "data", // Compile-time random bits + } + { name: "RndCnstLcKeymgrDivRma", + desc: "Diversification value used for the RMA life cycle state.", type: "lc_ctrl_pkg::lc_keymgr_div_t", randcount: "128", - randtype: "data", + randtype: "data", // Compile-time random bits } { name: "RndCnstInvalidTokens", desc: "Compile-time random bits used for invalid tokens in the token mux", type: "lc_ctrl_pkg::lc_token_mux_t", randcount: "1024", - randtype: "data", + randtype: "data", // Compile-time random bits } // Hardware revision, meant to be overridden at the top-level { name: "SiliconCreatorIdWidth", diff --git a/hw/ip/lc_ctrl/doc/interfaces.md b/hw/ip/lc_ctrl/doc/interfaces.md index d3f9b7433a4337..3d194f5e292314 100644 --- a/hw/ip/lc_ctrl/doc/interfaces.md +++ b/hw/ip/lc_ctrl/doc/interfaces.md @@ -4,13 +4,15 @@ Note that parameters prefixed with `RndCnst` are random netlist constants that need to be regenerated via topgen before the tapeout (typically by the silicon creator). -Parameter | Default (Max) | Top Earlgrey | Description --------------------------------|-----------------------|----------------|--------------- -`AlertAsyncOn` | 2'b11 | 2'b11 | -`IdcodeValue` | `32'h00000001` | `32'h00000001` | Idcode for the LC JTAG TAP. -`RndCnstLcKeymgrDivInvalid` | (see RTL) | (see RTL) | Life cycle state group diversification value for keymgr. -`RndCnstLcKeymgrDivTestDevRma` | (see RTL) | (see RTL) | Life cycle state group diversification value for keymgr. -`RndCnstLcKeymgrDivProduction` | (see RTL) | (see RTL) | Life cycle state group diversification value for keymgr. +Parameter | Default (Max) | Top Earlgrey | Description +---------------------------------|----------------|----------------|--------------- +`AlertAsyncOn` | 2'b11 | 2'b11 | +`IdcodeValue` | `32'h00000001` | `32'h00000001` | Idcode for the LC JTAG TAP. +`RndCnstLcKeymgrDivInvalid` | (see RTL) | (see RTL) | Diversification value used for all invalid life cycle states. +`RndCnstLcKeymgrDivTestUnlocked` | (see RTL) | (see RTL) | Diversification value used for the TEST_UNLOCKED* life cycle states. +`RndCnstLcKeymgrDivDev` | (see RTL) | (see RTL) | Diversification value used for the DEV life cycle state. +`RndCnstLcKeymgrDivProduction` | (see RTL) | (see RTL) | Diversification value used for the PROD/PROD_END life cycle states. +`RndCnstLcKeymgrDivRma` | (see RTL) | (see RTL) | Diversification value used for the RMA life cycle state. ### Signals @@ -182,11 +184,13 @@ For all signals except ESCALATE_EN, it is recommended to structure the design su The `lc_keymgr_div_o` signal is a 128bit diversification constant that is output to the key manager once the life cycle controller has initialized, and is asserted at the same time as `lc_keymgr_en_o`. Depending on which group the life cycle state is in, this signal is assigned a different random netlist constant as defined in the table below. -Life Cycle State Group | Assigned Diversification Constant ----------------------------|---------------------------------- -TEST_UNLOCKED\*, DEV, RMA | `LcKeymgrDivTestDevRma` -PROD, PROD_END | `LcKeymgrDivProduction` -All Other States | `LcKeymgrDivInvalid` +Life Cycle State Group | Assigned Diversification Constant +-----------------------|---------------------------------- +TEST_UNLOCKED\* | `RndCnstLcKeymgrDivTestUnlocked` +DEV | `RndCnstLcKeymgrDivDev` +PROD, PROD_END | `RndCnstLcKeymgrDivProduction` +RMA | `RndCnstLcKeymgrDivRma` +All Other States | `RndCnstLcKeymgrDivInvalid` Note that this signal is quasistatic. It is hence recommended to place a max-delay constraint on it and leverage the synchronized version of `lc_keymgr_en_o` to enable any downstream register in different clock domains than the life cycle controller. diff --git a/hw/ip/lc_ctrl/dv/env/lc_ctrl_parameters_cfg.sv b/hw/ip/lc_ctrl/dv/env/lc_ctrl_parameters_cfg.sv index b777b6755c3103..be5daac93f60a5 100644 --- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_parameters_cfg.sv +++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_parameters_cfg.sv @@ -5,20 +5,43 @@ class lc_ctrl_parameters_cfg extends uvm_object; // LC_CTRL parameters // Enable asynchronous transitions on alerts. - logic [NUM_ALERTS-1:0] alert_async_on = {NUM_ALERTS{1'b1}}; + logic [NUM_ALERTS-1:0] alert_async_on = {NUM_ALERTS{1'b1}}; // Idcode value for the JTAG. - logic [ 31:0] id_code_value = 32'h00000001; + logic [ 31:0] id_code_value = 32'h00000001; // Random netlist constants - lc_keymgr_div_t keymgr_div_invalid = LcKeymgrDivWidth'(0); - lc_keymgr_div_t keymgr_div_test_dev_rma = LcKeymgrDivWidth'(1); - lc_keymgr_div_t keymgr_div_production = LcKeymgrDivWidth'(2); + lc_keymgr_div_t keymgr_div_invalid = LcKeymgrDivWidth'(0); + lc_keymgr_div_t keymgr_div_test_unlocked = LcKeymgrDivWidth'(1); + lc_keymgr_div_t keymgr_div_dev = LcKeymgrDivWidth'(2); + lc_keymgr_div_t keymgr_div_production = LcKeymgrDivWidth'(3); + lc_keymgr_div_t keymgr_div_rma = LcKeymgrDivWidth'(4); `uvm_object_utils_begin(lc_ctrl_parameters_cfg) `uvm_field_int(alert_async_on, UVM_DEFAULT) `uvm_field_int(id_code_value, UVM_DEFAULT) `uvm_field_int(keymgr_div_invalid, UVM_DEFAULT) - `uvm_field_int(keymgr_div_test_dev_rma, UVM_DEFAULT) + `uvm_field_int(keymgr_div_test_unlocked, UVM_DEFAULT) + `uvm_field_int(keymgr_div_dev, UVM_DEFAULT) `uvm_field_int(keymgr_div_production, UVM_DEFAULT) + `uvm_field_int(keymgr_div_rma, UVM_DEFAULT) `uvm_object_utils_end `uvm_object_new + + virtual function lc_keymgr_div_t get_exp_div(dec_lc_state_e state); + unique case (state) + DecLcStTestUnlocked0, + DecLcStTestUnlocked1, + DecLcStTestUnlocked2, + DecLcStTestUnlocked3, + DecLcStTestUnlocked4, + DecLcStTestUnlocked5, + DecLcStTestUnlocked6, + DecLcStTestUnlocked7: return this.keymgr_div_test_unlocked; + DecLcStDev: return this.keymgr_div_dev; + DecLcStProd, + DecLcStProdEnd: return this.keymgr_div_production; + DecLcStRma: return this.keymgr_div_rma; + default: return this.keymgr_div_invalid; + endcase + endfunction + endclass : lc_ctrl_parameters_cfg 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 f215b676592eb4..9f8118df553e50 100644 --- a/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv +++ b/hw/ip/lc_ctrl/dv/env/lc_ctrl_scoreboard.sv @@ -65,8 +65,9 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( forever begin @(posedge cfg.pwr_lc_vif.pins[LcPwrDoneRsp] && cfg.en_scb) begin dec_lc_state_e lc_state = dec_lc_state(lc_state_e'(cfg.lc_ctrl_vif.otp_i.state)); - lc_outputs_t exp_lc_o = EXP_LC_OUTPUTS[int'(lc_state)]; - string err_msg = $sformatf("LC_St %0s", lc_state.name); + lc_outputs_t exp_lc_o = EXP_LC_OUTPUTS[int'(lc_state)]; + lc_keymgr_div_t exp_div_o = cfg.parameters_cfg.get_exp_div(lc_state); + string err_msg = $sformatf("LC_St %0s", lc_state.name); cfg.clk_rst_vif.wait_n_clks(1); // lc_creator_seed_sw_rw_en_o is ON only when device has NOT been personalized or RMA state @@ -87,6 +88,7 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( if (cfg.escalate_injected) begin exp_lc_o = EXP_LC_OUTPUTS[int'(DecLcStEscalate)]; + exp_div_o = cfg.parameters_cfg.keymgr_div_invalid; end fork @@ -94,7 +96,8 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( // Delay a some of cycles to allow escalate to be recognised if (cfg.escalate_injected) cfg.clk_rst_vif.wait_clks(5); ->check_lc_output_ev; - check_lc_outputs(exp_lc_o, {$sformatf("Called from line: %0d, ", `__LINE__), err_msg}); + check_lc_outputs(exp_lc_o, exp_div_o, + {$sformatf("Called from line: %0d, ", `__LINE__), err_msg}); end join_none @@ -230,6 +233,7 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( // check lc outputs, default all off virtual function void check_lc_outputs(lc_outputs_t exp_o = '{default: lc_ctrl_pkg::Off}, + lc_keymgr_div_t exp_div_o = '0, string msg = "expect all output OFF"); `DV_CHECK_EQ(cfg.lc_ctrl_vif.lc_dft_en_o, exp_o.lc_dft_en_o, msg) `DV_CHECK_EQ(cfg.lc_ctrl_vif.lc_nvm_debug_en_o, exp_o.lc_nvm_debug_en_o, msg) @@ -243,18 +247,20 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( `DV_CHECK_EQ(cfg.lc_ctrl_vif.lc_seed_hw_rd_en_o, exp_o.lc_seed_hw_rd_en_o, msg) `DV_CHECK_EQ(cfg.lc_ctrl_vif.lc_creator_seed_sw_rw_en_o, exp_o.lc_creator_seed_sw_rw_en_o, msg) `DV_CHECK_EQ(cfg.lc_ctrl_vif.clk_byp_req_o, exp_clk_byp_req, msg) + `DV_CHECK_EQ(cfg.lc_ctrl_vif.keymgr_div_o, exp_div_o, msg) endfunction virtual task process_tl_access(tl_seq_item item, tl_channels_e channel, string ral_name); - uvm_reg csr; - bit do_read_check = 1'b0; - bit write = item.is_write(); - uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr); - lc_outputs_t exp = '{default: lc_ctrl_pkg::Off}; - bit addr_phase_read = (!write && channel == AddrChannel); - bit addr_phase_write = (write && channel == AddrChannel); - bit data_phase_read = (!write && channel == DataChannel); - bit data_phase_write = (write && channel == DataChannel); + uvm_reg csr; + bit do_read_check = 1'b0; + bit write = item.is_write(); + uvm_reg_addr_t csr_addr = cfg.ral_models[ral_name].get_word_aligned_addr(item.a_addr); + lc_outputs_t exp = '{default: lc_ctrl_pkg::Off}; + lc_keymgr_div_t exp_div = cfg.parameters_cfg.keymgr_div_invalid; + bit addr_phase_read = (!write && channel == AddrChannel); + bit addr_phase_write = (write && channel == AddrChannel); + bit data_phase_read = (!write && channel == DataChannel); + bit data_phase_write = (write && channel == DataChannel); // if access was to a valid csr, get the csr handle if (csr_addr inside {cfg.ral_models[ral_name].csr_addrs}) begin @@ -403,7 +409,7 @@ class lc_ctrl_scoreboard extends cip_base_scoreboard #( begin // Wait for escalate to be recognise if (cfg.err_inj.security_escalation_err) cfg.clk_rst_vif.wait_clks(5); - check_lc_outputs(exp, $sformatf("Called from line: %0d", `__LINE__)); + check_lc_outputs(exp, exp_div, $sformatf("Called from line: %0d", `__LINE__)); end join_none end diff --git a/hw/ip/lc_ctrl/dv/tb.sv b/hw/ip/lc_ctrl/dv/tb.sv index 37bb0245cd4485..c03dde75c7573e 100644 --- a/hw/ip/lc_ctrl/dv/tb.sv +++ b/hw/ip/lc_ctrl/dv/tb.sv @@ -22,10 +22,14 @@ module tb; // Random netlist constants parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'({(LcKeymgrDivWidth/8){32'h00000000}}); - parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestDevRma = + parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'({(LcKeymgrDivWidth/8){8'h5a}}); - parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = + parameter lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'({(LcKeymgrDivWidth/8){8'ha5}}); + parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = + LcKeymgrDivWidth'({(LcKeymgrDivWidth/8){8'h69}}); + parameter lc_keymgr_div_t RndCnstLcKeymgrDivRma = + LcKeymgrDivWidth'({(LcKeymgrDivWidth/8){8'h96}}); // macro includes `include "uvm_macros.svh" @@ -95,8 +99,10 @@ module tb; .IdcodeValue(IdcodeValue), // Random netlist constants .RndCnstLcKeymgrDivInvalid(RndCnstLcKeymgrDivInvalid), - .RndCnstLcKeymgrDivTestDevRma(RndCnstLcKeymgrDivTestDevRma), + .RndCnstLcKeymgrDivTestUnlocked(RndCnstLcKeymgrDivTestUnlocked), + .RndCnstLcKeymgrDivDev(RndCnstLcKeymgrDivDev), .RndCnstLcKeymgrDivProduction(RndCnstLcKeymgrDivProduction), + .RndCnstLcKeymgrDivRma(RndCnstLcKeymgrDivRma), .SiliconCreatorId(LcCtrlSiliconCreatorId[lc_ctrl_reg_pkg::SiliconCreatorIdWidth-1:0]), .ProductId(LcCtrlProductId[lc_ctrl_reg_pkg::ProductIdWidth-1:0]), .RevisionId(LcCtrlRevisionId[lc_ctrl_reg_pkg::RevisionIdWidth-1:0]), @@ -226,8 +232,10 @@ module tb; parameters_cfg.alert_async_on = AlertAsyncOn; parameters_cfg.id_code_value = IdcodeValue; parameters_cfg.keymgr_div_invalid = RndCnstLcKeymgrDivInvalid; - parameters_cfg.keymgr_div_test_dev_rma = RndCnstLcKeymgrDivTestDevRma; + parameters_cfg.keymgr_div_test_unlocked = RndCnstLcKeymgrDivTestUnlocked; + parameters_cfg.keymgr_div_dev = RndCnstLcKeymgrDivDev; parameters_cfg.keymgr_div_production = RndCnstLcKeymgrDivProduction; + parameters_cfg.keymgr_div_rma = RndCnstLcKeymgrDivRma; uvm_config_db#(lc_ctrl_parameters_cfg)::set(null, "*", "parameters_cfg", parameters_cfg); // verilog_format: on diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv index 65c78b869b2d6a..d35944fdd4a056 100644 --- a/hw/ip/lc_ctrl/rtl/lc_ctrl.sv +++ b/hw/ip/lc_ctrl/rtl/lc_ctrl.sv @@ -21,11 +21,13 @@ module lc_ctrl // Idcode value for the JTAG. parameter logic [31:0] IdcodeValue = 32'h00000001, // Random netlist constants - parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), - parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestDevRma = LcKeymgrDivWidth'(1), - parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(2), - parameter lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}}, - parameter bit SecVolatileRawUnlockEn = 0 + parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4), + parameter lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}}, + parameter bit SecVolatileRawUnlockEn = 0 ) ( // Life cycle controller clock input clk_i, @@ -700,11 +702,13 @@ module lc_ctrl //////////// lc_ctrl_fsm #( - .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ), - .RndCnstLcKeymgrDivTestDevRma ( RndCnstLcKeymgrDivTestDevRma ), - .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ), - .RndCnstInvalidTokens ( RndCnstInvalidTokens ), - .SecVolatileRawUnlockEn ( SecVolatileRawUnlockEn ) + .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ), + .RndCnstLcKeymgrDivTestUnlocked( RndCnstLcKeymgrDivTestUnlocked ), + .RndCnstLcKeymgrDivDev ( RndCnstLcKeymgrDivDev ), + .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ), + .RndCnstLcKeymgrDivRma ( RndCnstLcKeymgrDivRma ), + .RndCnstInvalidTokens ( RndCnstInvalidTokens ), + .SecVolatileRawUnlockEn ( SecVolatileRawUnlockEn ) ) u_lc_ctrl_fsm ( .clk_i, .rst_ni, diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_fsm.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_fsm.sv index d2643f4d2da7fa..d476f5356354ff 100644 --- a/hw/ip/lc_ctrl/rtl/lc_ctrl_fsm.sv +++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_fsm.sv @@ -11,11 +11,13 @@ module lc_ctrl_fsm import lc_ctrl_reg_pkg::*; import lc_ctrl_state_pkg::*; #(// Random netlist constants - parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), - parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestDevRma = LcKeymgrDivWidth'(1), - parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(2), - parameter lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}}, - parameter bit SecVolatileRawUnlockEn = 0 + parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4), + parameter lc_token_mux_t RndCnstInvalidTokens = {TokenMuxBits{1'b1}}, + parameter bit SecVolatileRawUnlockEn = 0 ) ( // This module is combinational, but we // need the clock and reset for the assertions. @@ -784,9 +786,11 @@ module lc_ctrl_fsm // LC signal decoder and broadcasting logic. lc_ctrl_signal_decode #( - .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ), - .RndCnstLcKeymgrDivTestDevRma ( RndCnstLcKeymgrDivTestDevRma ), - .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ) + .RndCnstLcKeymgrDivInvalid ( RndCnstLcKeymgrDivInvalid ), + .RndCnstLcKeymgrDivTestUnlocked( RndCnstLcKeymgrDivTestUnlocked ), + .RndCnstLcKeymgrDivDev ( RndCnstLcKeymgrDivDev ), + .RndCnstLcKeymgrDivProduction ( RndCnstLcKeymgrDivProduction ), + .RndCnstLcKeymgrDivRma ( RndCnstLcKeymgrDivRma ) ) u_lc_ctrl_signal_decode ( .clk_i, .rst_ni, diff --git a/hw/ip/lc_ctrl/rtl/lc_ctrl_signal_decode.sv b/hw/ip/lc_ctrl/rtl/lc_ctrl_signal_decode.sv index ce6198041fc97e..f52820ad69fcd2 100644 --- a/hw/ip/lc_ctrl/rtl/lc_ctrl_signal_decode.sv +++ b/hw/ip/lc_ctrl/rtl/lc_ctrl_signal_decode.sv @@ -10,11 +10,15 @@ module lc_ctrl_signal_decode #( // Random netlist constants // SCRAP, RAW, TEST_LOCKED*, INVALID - parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), - // TEST_UNLOCKED*, DEV, RMA - parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestDevRma = LcKeymgrDivWidth'(1), + parameter lc_keymgr_div_t RndCnstLcKeymgrDivInvalid = LcKeymgrDivWidth'(0), + // TEST_UNLOCKED* + parameter lc_keymgr_div_t RndCnstLcKeymgrDivTestUnlocked = LcKeymgrDivWidth'(1), + // DEV + parameter lc_keymgr_div_t RndCnstLcKeymgrDivDev = LcKeymgrDivWidth'(2), // PROD, PROD_END - parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(2) + parameter lc_keymgr_div_t RndCnstLcKeymgrDivProduction = LcKeymgrDivWidth'(3), + // RMA + parameter lc_keymgr_div_t RndCnstLcKeymgrDivRma = LcKeymgrDivWidth'(4) ) ( input clk_i, input rst_ni, @@ -115,7 +119,7 @@ module lc_ctrl_signal_decode lc_hw_debug_en = On; lc_cpu_en = On; lc_iso_part_sw_wr_en = On; - lc_keymgr_div_d = RndCnstLcKeymgrDivTestDevRma; + lc_keymgr_div_d = RndCnstLcKeymgrDivTestUnlocked; end /////////////////////////////////////////////////////////////////// // This is the last TEST_UNLOCKED state. The same feature set is enabled @@ -127,7 +131,7 @@ module lc_ctrl_signal_decode lc_hw_debug_en = On; lc_cpu_en = On; lc_iso_part_sw_wr_en = On; - lc_keymgr_div_d = RndCnstLcKeymgrDivTestDevRma; + lc_keymgr_div_d = RndCnstLcKeymgrDivTestUnlocked; end /////////////////////////////////////////////////////////////////// // Enable production functions @@ -157,7 +161,7 @@ module lc_ctrl_signal_decode lc_keymgr_en = On; lc_owner_seed_sw_rw_en = On; lc_iso_part_sw_wr_en = On; - lc_keymgr_div_d = RndCnstLcKeymgrDivTestDevRma; + lc_keymgr_div_d = RndCnstLcKeymgrDivDev; // Only allow provisioning if the device has not yet been personalized. // If secrets_valid_i is set to ON, we output OFF. // Note that we can convert ON to OFF with a bitwise inversion due to the encoding. @@ -180,7 +184,7 @@ module lc_ctrl_signal_decode lc_iso_part_sw_wr_en = On; lc_iso_part_sw_rd_en = On; lc_seed_hw_rd_en = On; - lc_keymgr_div_d = RndCnstLcKeymgrDivTestDevRma; + lc_keymgr_div_d = RndCnstLcKeymgrDivRma; end /////////////////////////////////////////////////////////////////// // Invalid or scrapped life cycle state, make sure the escalation @@ -305,12 +309,27 @@ module lc_ctrl_signal_decode // Assertions // //////////////// - // Need to make sure that the random netlist constants - // are unique. + // Need to make sure that the random netlist constants are all unique. `ASSERT_INIT(LcKeymgrDivUnique0_A, - !(RndCnstLcKeymgrDivInvalid inside {RndCnstLcKeymgrDivTestDevRma, + !(RndCnstLcKeymgrDivInvalid inside {RndCnstLcKeymgrDivTestUnlocked, + RndCnstLcKeymgrDivDev, + RndCnstLcKeymgrDivRma, RndCnstLcKeymgrDivProduction})) - `ASSERT_INIT(LcKeymgrDivUnique1_A, RndCnstLcKeymgrDivProduction != RndCnstLcKeymgrDivTestDevRma) + `ASSERT_INIT(LcKeymgrDivUnique1_A, + !(RndCnstLcKeymgrDivTestUnlocked inside {RndCnstLcKeymgrDivInvalid, + RndCnstLcKeymgrDivDev, + RndCnstLcKeymgrDivRma, + RndCnstLcKeymgrDivProduction})) + `ASSERT_INIT(LcKeymgrDivUnique2_A, + !(RndCnstLcKeymgrDivDev inside {RndCnstLcKeymgrDivInvalid, + RndCnstLcKeymgrDivTestUnlocked, + RndCnstLcKeymgrDivRma, + RndCnstLcKeymgrDivProduction})) + `ASSERT_INIT(LcKeymgrDivUnique3_A, + !(RndCnstLcKeymgrDivRma inside {RndCnstLcKeymgrDivInvalid, + RndCnstLcKeymgrDivTestUnlocked, + RndCnstLcKeymgrDivDev, + RndCnstLcKeymgrDivProduction})) `ASSERT(SignalsAreOffWhenNotEnabled_A, !lc_state_valid_i diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson index 626a060ed1a6bc..f0485241b09d0d 100644 --- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson +++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson @@ -1167,7 +1167,7 @@ randcount: 40 randtype: data name_top: RndCnstOtpCtrlLfsrSeed - default: 0x571eae0fc6 + default: 0xe18549cb1e randwidth: 40 } { @@ -1177,7 +1177,7 @@ randcount: 40 randtype: perm name_top: RndCnstOtpCtrlLfsrPerm - default: 0x46429e4882d35cd9e224c7ce04316384661a9823d66dd8140251c455c419 + default: 0x9d559824550804312249a00d96481f4176ce4531a374c84a7821cb9993dc randwidth: 240 } { @@ -1187,7 +1187,7 @@ randcount: 256 randtype: data name_top: RndCnstOtpCtrlScrmblKeyInit - default: 0x23d532c0ab44e1e92ccfebadad9193a3ee4ecd8c032462b3e18549cb1e70d5a8 + default: 0x44c3bcdf8087b7facd65e9654cd85bc66d10208c4fb51b97bbf4d12c378ccfd6 randwidth: 256 } ] @@ -1597,32 +1597,52 @@ } { name: RndCnstLcKeymgrDivInvalid - desc: Compile-time random bits for lc state group diversification value + desc: Diversification value used for all invalid life cycle states. type: lc_ctrl_pkg::lc_keymgr_div_t randcount: 128 randtype: data name_top: RndCnstLcCtrlLcKeymgrDivInvalid - default: 0x3de6673d2c1c0a7b55176264e55c329c + default: 0xa5a5bf3032db51fa1eb92f6ce10e90f9 randwidth: 128 } { - name: RndCnstLcKeymgrDivTestDevRma - desc: Compile-time random bits for lc state group diversification value + name: RndCnstLcKeymgrDivTestUnlocked + desc: Diversification value used for the TEST_UNLOCKED* life cycle states. type: lc_ctrl_pkg::lc_keymgr_div_t randcount: 128 randtype: data - name_top: RndCnstLcCtrlLcKeymgrDivTestDevRma - default: 0x8ae4725aeaf6728150127ac755d70063 + name_top: RndCnstLcCtrlLcKeymgrDivTestUnlocked + default: 0xc5c06f733dc911a321dd4c0ac2406d46 + randwidth: 128 + } + { + name: RndCnstLcKeymgrDivDev + desc: Diversification value used for the DEV life cycle state. + type: lc_ctrl_pkg::lc_keymgr_div_t + randcount: 128 + randtype: data + name_top: RndCnstLcCtrlLcKeymgrDivDev + default: 0x7215dab3f2b54a52e6728678af071806 randwidth: 128 } { name: RndCnstLcKeymgrDivProduction - desc: Compile-time random bits for lc state group diversification value + desc: Diversification value used for the PROD/PROD_END life cycle states. type: lc_ctrl_pkg::lc_keymgr_div_t randcount: 128 randtype: data name_top: RndCnstLcCtrlLcKeymgrDivProduction - default: 0x277642b5309a163990b966cd494444c3 + default: 0x8e344d2eae4d73c8fa54de8aa4a4f258 + randwidth: 128 + } + { + name: RndCnstLcKeymgrDivRma + desc: Diversification value used for the RMA life cycle state. + type: lc_ctrl_pkg::lc_keymgr_div_t + randcount: 128 + randtype: data + name_top: RndCnstLcCtrlLcKeymgrDivRma + default: 0xf3b2a145fd1950ae55d693e57968117e randwidth: 128 } { @@ -1632,7 +1652,7 @@ randcount: 1024 randtype: data name_top: RndCnstLcCtrlInvalidTokens - default: 0xbcdf8087b7facd65e9654cd85bc66d10208c4fb51b97bbf4d12c378ccfd6a5a5bf3032db51fa1eb92f6ce10e90f9c5c06f733dc911a321dd4c0ac2406d467215dab3f2b54a52e6728678af0718068e344d2eae4d73c8fa54de8aa4a4f258f3b2a145fd1950ae55d693e57968117e66dc634155e0f8150242862eb20eea9a1f75 + default: 0x66dc634155e0f8150242862eb20eea9a1f7544716551512a112ded678ce824a08e29c772795a358ec30f1bedd1af0ec9d9a9cf36a2b130d32afe121af734f628363aaa0e93d45c423690ed05bd1e710f22d1095889fbd8a7b57fb1e11df367c1c1ede3f35cfc8f6e72abdd73a9eefbf8b7081eb9f636e13ca9d21f1edebe60a2 randwidth: 1024 } { @@ -2160,7 +2180,7 @@ randcount: 32 randtype: data name_top: RndCnstAlertHandlerLfsrSeed - default: 0x44716551 + default: 0x2db6d398 randwidth: 32 } { @@ -2170,7 +2190,7 @@ randcount: 32 randtype: perm name_top: RndCnstAlertHandlerLfsrPerm - default: 0xe9f28b4f1248f60fb6b00dccb7bb9aa122cf08aa + default: 0xff4e1aecac5cb0f2239612af14f8c0cc26d70e9a randwidth: 160 } ] @@ -4562,7 +4582,7 @@ randcount: 128 randtype: data name_top: RndCnstSramCtrlRetAonSramKey - default: 0x28363aaa0e93d45c423690ed05bd1e71 + default: 0xe4612980d48e6c6493a50eedbac6a46b randwidth: 128 } { @@ -4572,7 +4592,7 @@ randcount: 128 randtype: data name_top: RndCnstSramCtrlRetAonSramNonce - default: 0xf22d1095889fbd8a7b57fb1e11df367 + default: 0x7a8a9b2c7aec92f39e49478c398c91db randwidth: 128 } { @@ -4582,7 +4602,7 @@ randcount: 32 randtype: data name_top: RndCnstSramCtrlRetAonLfsrSeed - default: 0xc1c1ede3 + default: 0x1841831b randwidth: 32 } { @@ -4592,7 +4612,7 @@ randcount: 32 randtype: perm name_top: RndCnstSramCtrlRetAonLfsrPerm - default: 0xef32502204a4eef4fc4a64b0730c36d6eae6c57e + default: 0xf7e60ae6d8eca26bf09ada50579c4e6342aa4163 randwidth: 160 } { @@ -4772,7 +4792,7 @@ randcount: 128 randtype: data name_top: RndCnstFlashCtrlAddrKey - default: 0xd0488805541166f1ec8ceb42692b089a + default: 0x76a61e112578bf9f469fc482fa14a8f2 randwidth: 128 } { @@ -4782,7 +4802,7 @@ randcount: 128 randtype: data name_top: RndCnstFlashCtrlDataKey - default: 0x6f99b1a7ac084224ade4612980d48e6c + default: 0xb75c265c9cb3b2f1c44a7287ab4c0618 randwidth: 128 } { @@ -4792,7 +4812,7 @@ randcount: 512 randtype: data name_top: RndCnstFlashCtrlAllSeeds - default: 0x6493a50eedbac6a46b7a8a9b2c7aec92f39e49478c398c91db1841831b1f5c82a556096fff6175fc10f939792b444e521d4711e64066908adfd5918f8c563c92 + default: 0x822e92a084a048ffe9fb86140a79d38055b24b5f3b3ea79bd7f203d55eabf9f733d9b0cc2ca2b394f2526e4430c2afb4f5b43b1667039c6305bf983af472a23d randwidth: 512 } { @@ -4802,7 +4822,7 @@ randcount: 32 randtype: data name_top: RndCnstFlashCtrlLfsrSeed - default: 0x184f1c76 + default: 0xb96be84f randwidth: 32 } { @@ -4812,7 +4832,7 @@ randcount: 32 randtype: perm name_top: RndCnstFlashCtrlLfsrPerm - default: 0xf1a4763625b576106958727fc5f61944eef20874 + default: 0x699d74aab26079d11564d8e119f807b23fac51f9 randwidth: 160 } { @@ -5532,7 +5552,7 @@ randcount: 64 randtype: data name_top: RndCnstAesClearingLfsrSeed - default: 0x8055b24b5f3b3ea7 + default: 0x5bb696be7a52b9a randwidth: 64 } { @@ -5542,7 +5562,7 @@ randcount: 64 randtype: perm name_top: RndCnstAesClearingLfsrPerm - default: 0x34693a24a552b718dd0b9d04bc342e81eec75887e1ff08a94da3dcc81627f5914eaf845b525de82f3b3632a5fe03cd66 + default: 0xd3a648f1d3034be54ead70b0cc7be7d46dbf2e5780469b23264358894ded85f4e6105a1aaa0e71b8f581f5b43b732e0a randwidth: 384 } { @@ -5552,7 +5572,7 @@ randcount: 64 randtype: perm name_top: RndCnstAesClearingSharePerm - default: 0x352c351eb2238ac0c93b4942bd9dcb5c07989ed90631d455531ea17d3e04168f2a833f8f5bfd9b41ccbb98aa79f5ab81 + default: 0x33abe47ae86d74341505c68d478f07d5208ac532178d8df302727ea0bca9504d0f16b8b63b09595b981f1a6ffbf6ca9b randwidth: 384 } { @@ -5562,7 +5582,7 @@ randcount: 288 randtype: data name_top: RndCnstAesMaskingLfsrSeed - default: 0xe9f0ec4c712146a4ab60da8b656eabb0b3ef6e9b197ce582fc9b5965d697c23beafe8389 + default: 0xe33fd2c07986c2a511755f072ee7a8e2fc45e111df07fa067f64056d9bf30d48543bec2 randwidth: 288 } { @@ -5572,7 +5592,7 @@ randcount: 160 randtype: perm name_top: RndCnstAesMaskingLfsrPerm - default: 0x1a6953018d0a1f407a46869e434a6366737179769406249b4458057b04650f3041707d0c345e0d6a67573b29276b23932261914b1d78971e873e2c351337959d4f25314d387f108192886e745b4e092d6d485582998f728a856c5c029c1b3a68642142185f8b208950840e082f629f478c392a0b28153683037c1907168e7e754c6f49803f60541c9833322b3d5d14567745009a269059522e961151125a3c17 + default: 0x317227746d588692343a5d20839a9569306e375716411e61447a26422452080e898e637c497f607d2e0a390d2d4f29329e82066a3f4c8a02679f48146c1794094010224a872c33472a0c73967e1c009b8c811b0f3518035b3c151f71563e99667b8028198d786f1a1d777679538b4e6865114623454388503b07973d389c596b4d0b84914b628f702b21015c2f510413125a859098935f5455645e9d05253675 randwidth: 1280 } ] @@ -5798,7 +5818,7 @@ randcount: 800 randtype: data name_top: RndCnstKmacLfsrSeed - default: 0x4645aad1fb21c18124635e3d50a88f6808045627ac18f377d9071beca6f194ef96f3e535b58f2adad82b175fe9ea1c326a6610c1117744de61ccbfabd3e1fda667e04082478c14db070a6129bb2945b88dc6cfcf2ae02f47010cb666a5e22d3320f89caa + default: 0x20f89caa47e5ced5d29cc9cdb468773ebacec14da34c505aedc70ea184c7a34193d59c735b5b4e2cbee5ab93cb024d6f8c0c700110cbf01425daf5141df19a882a71d66b5953dbc603379da9efb2069bd79815b2f8d99a40e7fdc4fb13143d7753ce1cf9 randwidth: 800 } { @@ -5808,7 +5828,7 @@ randcount: 800 randtype: perm name_top: RndCnstKmacLfsrPerm - default: 0x7c29aa2531b1dc68bd06a85cca9414210ee2805f56079c3e3d516461f256b78f752d61c51404697cb8451192da2365d046641c94d92c6790c999b52426dd24249e986ea9c1f69fef11100b2216331a5b28a5c09df9a28bf8225e81d89b19ca72e686c6183fe03a5c7d0350502992340400ca783e5158a22a1a52b6b27cb7c8c8745ebc977c7710906980b5c520c252aa828da53c059a2007fb8cb3558ed30c9185c2a674d76e857048c5735ab49c4b081d1698c22c4682550d125d5961e16589cbea49789d9538dc68c167ac9891c595e155a9a8f6c2b52eaa7c0caba1009be12fa0ce7a5ae9c281e3b20c8098ca40d3ad8bd385c9bb43385168140755c4cb50ea30aef9981ee73c38b3293148155ae261b1002b5e6b5e665d52c465aa5fa659ccd266cae3a56fb4ded061972d97d1395eaed232ee3c622e6305c2a56210ff003c66bc3006c1a373cd90758b9aa48b0f8a1ae1801f8d11982e32609322bd912bec38dd77c813331e6a4be2d5185edbc9006a8c9a08896c5d1e5268da4a1251e9b697dbf3da740d076215871b611b059e762a836d204eaa4c70e44dd33b9cef3cad503801180002bec029e39389020c2004406189e724e5c762e804d281359ec46d81bddbb3017a8b11d01315c5ef37c5934fd64965e0bfd04c451c90a2e0216a074b73a04883a312b0e00bec359c65589950dc6b4d8246a2ef6e4b41c1e79f512298861c4fb6d147a7225944e3b963e6844db90417a19c9fad48412aaca1eb267b2908fabedc13e387f50c355f45a60aa2f022284ac6c28bf8136080f70eca742b1ae55721cc45d9d3b2f1f28dad9e8fe7201c0c5db7f23517704a15a5a1db22495086cca1550e750474894a806d9c6229b8911bf52d8d160b609fab4d86bd5c5c30d69e1c2c0fc4055d8b68c1609488199188f03eaf6b58bc0e58e88c1f7dc297eae8afca5399865e5b39d6ee37a12b21e41ee8eadc901be4c3f71342250bd6ac67f1275e6f08496c26ab9de9e5bb1637dfb7d61a508355223a4a6ceace0b00d3c118c7512056f90a650930650b530d46b93b2ca99008a883f0bc20899e691499662757f3e0536d58d1b8107c83d41ed043ef0a822498ef4569510d8d99505c4f82660e6c7e116c66454799169054bb24e0163f9361fc1e2bb3d49779e94c15f6de677747473a3b7cd1301efc1684533c2256eba0ec1b6e1a2a197395c5b610b8ac29498a9b10a5a0f082616ddb82bc711da92ad24515918def3ae040b216b35eab118f6f4cda766e4b9fe95692485547feb44f5c1948f478c788cc8e866a2b169f62903b095381adb05d3208e88518ce660eaaaa0d855525c917396481cd4f3d44c9a45606a76031652a66a1dc9710dc08c135abafb4e16d9c64fc6a130e941a3705baddcb451f + default: 0xa412388eb94bea6c303f6e98ba947313195941c727aa77ad82bb6a330d7158f0a34905badd82fd2d794a0b20991f57b465f070a7e305873d48c166660c65c1de8e5bc4764ebb179b97441e8dc72a0838538ed55ae6632f4860aeb5cf9acc14a717d0c94d9c4dc3a6134b2dc8f0ab3fd455da290951a235095deec52d2b770fe6a0d3149d32cc3a718a276506a5e1d49f100a2999448832c551259721302c69614008766827a29e81f1d05795556135ad568872ad7267f0adf470df19864383069c731b73dab90a7d9a28da2c4e3180f899db69a838be01896791fd0ea5522996737b41a3df0b845af20064bdac0605d5b1cba801921b2e7102782f40a83b063090d2b705147085acc5246851e4989e9785d02d659b0678e1342c90a97a6b01527cc4b6857048b1bf246990ca0ced2749cc12eb7528204c5e2058956f0097b86897c92272b15d641b87070345f888d7b7c44046a8c00ee0609b89e0319f141588372dcd47f049757c3b1155f8f1c4ef910c06032ff3cd40580a32e6ca9c88b0f8a1b65b41f8d119a09326383219bb8e4f92cdda925e50c81332f2782772f8b5462758ca5b1aaae75a3d675f9ad957268da4a1251e9aa9ee343daa10d076215bb1b6b26d9d457208624db4813ab0d6c6c8e44dd33958ef884f27980e00460000afbeca7b60e29b5020c2ce4406186e8f4e4137f1bfb91a04d20235a3046e89961907d8c06b647474047866a8b715be9c885d649d05d6954f4131d47111924086016a074b73a048c664c2b0e00bee059c65589ca0de104d9a9091dfc46a02d0705429a448a6219a31c4fb7b20a0722ca06de38ec1965a1137031063567240bd62a4aad38e61e79e9829214b42fd716e213e53362e8430d5aad69baac6b3c8a12a44140e7a7a31b46072da916202e51dfd8ba282ee601ad249bcaa23c7502d3f6c5707027c69e362c0fc4055dc7eaf16094bbd99188f03eacb9c0bc0e58e8f81f7dc297eb09b74a5880e6619796cef8c3cde84ae97907bab2842406fae8fd5b5089af17b359f4e1d7a302125a87b32d6af56e9a4df7edf5869420d5488e929b96d482c034f04631d44815be4299424c1942d4c351ae9d93b2cab8008a883c972a489a5ad549a805989d5fcf814db56346e041f20f507bc50fc4abf89263c595a54436366541713e09983a4e6c7e116506454799169054c364e0163f9371887d658aef0525de7a53057db799ddd1d1ce8edf344c07c785aaf845aa4cf0895bc383b06db868a865ce5716d842e2b0a5262a6c429683c20985bfb01af1c476a4abcd14564637bceb8102c85aee7aac463dbd3369d9b92e7fa55a4921551ffad13d706523d1e31e23323a19a8ac5a7d8a40ec254e06b6c17bdd3208e88518ce660eaaaa0d855525c91739648 randwidth: 8000 } { @@ -5818,7 +5838,7 @@ randcount: 32 randtype: perm name_top: RndCnstKmacLfsrFwdPerm - default: 0x721afdfa782f01a3ae1da8659a12df62471ba846 + default: 0xddd8eaffd1cf789808d653c85a60ed5ca7a18028 randwidth: 160 } { @@ -5828,7 +5848,7 @@ randcount: 64 randtype: perm name_top: RndCnstKmacMsgPerm - default: 0xf82671d835948217304a2bfa0239682ce7ed30d6ab769bb9609f734c59c7f322ac991de47b41b83f5408a955c113f6fb + default: 0x73a93266a6b6e1fb1dce0b54c02f3e0063eb8bd5858f5418a040791c3c694cd48c9ca20bde5eef7a6ba157fd0939b457 randwidth: 384 } ] @@ -6006,7 +6026,7 @@ randcount: 256 randtype: data name_top: RndCnstOtbnUrndPrngSeed - default: 0x465efe57aa3b59bd6b0a40216363420f041ed29a965b68faea3e59d4f2e2a0b4 + default: 0xa8f072e77ee4859b243f92ceb098be6e65c359480858c39611e658c97fb8d3e9 randwidth: 256 } { @@ -6042,7 +6062,7 @@ randcount: 128 randtype: data name_top: RndCnstOtbnOtbnKey - default: 0x2eb9a8c3ab227b50766d2eaec89eb13b + default: 0xcc0e7f8fa8725200c726c8f90ef5e2b7 randwidth: 128 } { @@ -6052,7 +6072,7 @@ randcount: 64 randtype: data name_top: RndCnstOtbnOtbnNonce - default: 0x7e9bf4ee4278413 + default: 0x4beee27cfa19ea57 randwidth: 64 } ] @@ -6249,7 +6269,7 @@ randcount: 64 randtype: data name_top: RndCnstKeymgrLfsrSeed - default: 0x6d42c85e456f3b26 + default: 0x6ca8a8225c8e1705 randwidth: 64 } { @@ -6259,7 +6279,7 @@ randcount: 64 randtype: perm name_top: RndCnstKeymgrLfsrPerm - default: 0x67dff5779df3aea61ce14690b285a9171ea43910237cfc1b0a2c8682d101f870f6ed33523272882fc949bde9ae8555f4 + default: 0xb931fb3b12efadcdaa1008bc159489066f5d9c8321e10c03e5e61b0a893e95fd0654ddffcace97a54cd668a8358ed44f randwidth: 384 } { @@ -6269,7 +6289,7 @@ randcount: 32 randtype: perm name_top: RndCnstKeymgrRandPerm - default: 0x341c41f29adf4058a907f3ea297c295e18dbced9 + default: 0xb87fdde58a44756a1c05f72093384394c8d7af15 randwidth: 160 } { @@ -6279,7 +6299,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrRevisionSeed - default: 0x576ca8a8225c8e17053e44b68dd7822a6859f2cf52a55fd181b082d03c583756 + default: 0x20bdaf59fe2ae209b8325d2c8c35fc960679b106a87e59e6aeb1b5302d334010 randwidth: 256 } { @@ -6289,7 +6309,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrCreatorIdentitySeed - default: 0xf11aa5b37f9544c4aa90eb97e1c0f8086f627a281c5681d6566641eecccc8887 + default: 0x70251696fbb4ba169a6cd82fad46a0a5c04009bb934c7ef7b83b6e40610b4309 randwidth: 256 } { @@ -6299,7 +6319,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrOwnerIntIdentitySeed - default: 0x6ad113c50ad1be4d94dce8fca54128a3860ae1d3493fbef6b9ba5dfe4463a461 + default: 0xfcb9dc54d4276137f9901d09a76aeaa19de5c579fd38bdf38f0c21d6a52226b6 randwidth: 256 } { @@ -6309,7 +6329,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrOwnerIdentitySeed - default: 0x5ef46762a794a8c2597e69fb259b961914cd75bbfd36ba48e780d27cd582540c + default: 0xa4a7bdb05fe921615bf2ff984540f7d43ece76b4eb13363774ed2ed45545e927 randwidth: 256 } { @@ -6319,7 +6339,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrSoftOutputSeed - default: 0x7a68ff254edfd852829fecccabd4af9c9032da20bdaf59fe2ae209b8325d2c8c + default: 0xf6d9e4abac398d42c745eef646c1464dca86dafd7c7c71e6058ddfd871c51cac randwidth: 256 } { @@ -6329,7 +6349,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrHardOutputSeed - default: 0x35fc960679b106a87e59e6aeb1b5302d33401070251696fbb4ba169a6cd82fad + default: 0xbaf4410f06dcc036fcd16fcde97d171891105dd895e3a1d0a19a16d6dbd8b20f randwidth: 256 } { @@ -6339,7 +6359,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrAesSeed - default: 0x46a0a5c04009bb934c7ef7b83b6e40610b4309fcb9dc54d4276137f9901d09a7 + default: 0xc9e662e1e1b4982b3e8eff63890dbeae926fd468a77efde3de5b4caf4776a247 randwidth: 256 } { @@ -6349,7 +6369,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrKmacSeed - default: 0x6aeaa19de5c579fd38bdf38f0c21d6a52226b6a4a7bdb05fe921615bf2ff9845 + default: 0xbaba4c9908ed16bc5415ec16d28c53551312fcedcf2832a66ceacf8ed4d5b616 randwidth: 256 } { @@ -6359,7 +6379,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrOtbnSeed - default: 0x40f7d43ece76b4eb13363774ed2ed45545e927f6d9e4abac398d42c745eef646 + default: 0x177dd43b56fa754e1f53ad658193b563d9bdc6d2aee84852f0cc7371ed3a6faa randwidth: 256 } { @@ -6369,7 +6389,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrCdi - default: 0xc1464dca86dafd7c7c71e6058ddfd871c51cacbaf4410f06dcc036fcd16fcde9 + default: 0x516c144b34c96dfabb6f6e79208a74f35c79f397c4e4c7e22b7581848a90a125 randwidth: 256 } { @@ -6379,7 +6399,7 @@ randcount: 256 randtype: data name_top: RndCnstKeymgrNoneSeed - default: 0x7d171891105dd895e3a1d0a19a16d6dbd8b20fc9e662e1e1b4982b3e8eff6389 + default: 0x4b2276bec9fc1a7a5722a9aaca4db84a32e5c6985a1a6435118b5f5f3fd3b931 randwidth: 256 } ] @@ -6589,7 +6609,7 @@ randcount: 384 randtype: data name_top: RndCnstCsrngCsKeymgrDivNonProduction - default: 0xdbeae926fd468a77efde3de5b4caf4776a247baba4c9908ed16bc5415ec16d28c53551312fcedcf2832a66ceacf8ed4 + default: 0x3116b67192d856dd742d40e072e417ad9a5f261204cbcc69a2147819b290a4bb0264347c0f91b0cec93c0129d85b9580 randwidth: 384 } { @@ -6599,7 +6619,7 @@ randcount: 384 randtype: data name_top: RndCnstCsrngCsKeymgrDivProduction - default: 0xd5b616177dd43b56fa754e1f53ad658193b563d9bdc6d2aee84852f0cc7371ed3a6faa516c144b34c96dfabb6f6e7920 + default: 0x1dbe03f17e69dc260a79998eff5c710b67838adfb99a5eca671672cf19bca6adc1ebfab611f19e7262e0a491970e51b2 randwidth: 384 } { @@ -7087,7 +7107,7 @@ randcount: 128 randtype: data name_top: RndCnstSramCtrlMainSramKey - default: 0x8a74f35c79f397c4e4c7e22b7581848a + default: 0x8e7026d0e5dce9e265a416a812231cfa randwidth: 128 } { @@ -7097,7 +7117,7 @@ randcount: 128 randtype: data name_top: RndCnstSramCtrlMainSramNonce - default: 0x90a1254b2276bec9fc1a7a5722a9aaca + default: 0x76e3d982f8fdcec9ae1af0b8cd9e1760 randwidth: 128 } { @@ -7107,7 +7127,7 @@ randcount: 32 randtype: data name_top: RndCnstSramCtrlMainLfsrSeed - default: 0x4db84a32 + default: 0x6ec98106 randwidth: 32 } { @@ -7117,7 +7137,7 @@ randcount: 32 randtype: perm name_top: RndCnstSramCtrlMainLfsrPerm - default: 0x7cb60455500e897a15a977bb93dbf1119835cf1c + default: 0x85097395a09dabee6ddd67d1948b1a899435be41 randwidth: 160 } { @@ -7288,7 +7308,7 @@ randcount: 64 randtype: data name_top: RndCnstRomCtrlScrNonce - default: 0xcc69a2147819b290 + default: 0xfee457dee82b6e06 randwidth: 64 } { @@ -7298,7 +7318,7 @@ randcount: 128 randtype: data name_top: RndCnstRomCtrlScrKey - default: 0xa4bb0264347c0f91b0cec93c0129d85b + default: 0x663c291739ff0e7d644758fee1c58564 randwidth: 128 } { @@ -7485,7 +7505,7 @@ randcount: 32 randtype: data name_top: RndCnstRvCoreIbexLfsrSeed - default: 0x95801dbe + default: 0xcf346d96 randwidth: 32 } { @@ -7495,7 +7515,7 @@ randcount: 32 randtype: perm name_top: RndCnstRvCoreIbexLfsrPerm - default: 0x4093fa68a3c595c3dcd2ac19972e33e849b6bfc0 + default: 0xae357a7a3b2cd2063d7f3ab3043ac11b7b211b84 randwidth: 160 } { @@ -7505,7 +7525,7 @@ randcount: 128 randtype: data name_top: RndCnstRvCoreIbexIbexKeyDefault - default: 0x8e7026d0e5dce9e265a416a812231cfa + default: 0xc652d7372432fcc4d3092bd6383fdba3 randwidth: 128 } { @@ -7515,7 +7535,7 @@ randcount: 64 randtype: data name_top: RndCnstRvCoreIbexIbexNonceDefault - default: 0x76e3d982f8fdcec9 + default: 0x5279fcbcd2bd2c13 randwidth: 64 } { diff --git a/hw/top_earlgrey/dv/env/seq_lib/chip_sw_keymgr_key_derivation_vseq.sv b/hw/top_earlgrey/dv/env/seq_lib/chip_sw_keymgr_key_derivation_vseq.sv index fe46262afaa614..48c435a580bb86 100644 --- a/hw/top_earlgrey/dv/env/seq_lib/chip_sw_keymgr_key_derivation_vseq.sv +++ b/hw/top_earlgrey/dv/env/seq_lib/chip_sw_keymgr_key_derivation_vseq.sv @@ -236,7 +236,7 @@ class chip_sw_keymgr_key_derivation_vseq extends chip_sw_base_vseq; top_earlgrey_rnd_cnst_pkg::RndCnstLcCtrlLcKeymgrDivProduction; end else begin creator_data.HealthMeasurement = - top_earlgrey_rnd_cnst_pkg::RndCnstLcCtrlLcKeymgrDivTestDevRma; + top_earlgrey_rnd_cnst_pkg::RndCnstLcCtrlLcKeymgrDivRma; end for (int i = 0; i < keymgr_pkg::KeyWidth / TL_DW; i++) begin diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv index db6359c0f90cb6..a3766341c8c8c5 100644 --- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv +++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv @@ -1447,8 +1447,10 @@ module top_earlgrey #( .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[18:16]), .SecVolatileRawUnlockEn(SecLcCtrlVolatileRawUnlockEn), .RndCnstLcKeymgrDivInvalid(RndCnstLcCtrlLcKeymgrDivInvalid), - .RndCnstLcKeymgrDivTestDevRma(RndCnstLcCtrlLcKeymgrDivTestDevRma), + .RndCnstLcKeymgrDivTestUnlocked(RndCnstLcCtrlLcKeymgrDivTestUnlocked), + .RndCnstLcKeymgrDivDev(RndCnstLcCtrlLcKeymgrDivDev), .RndCnstLcKeymgrDivProduction(RndCnstLcCtrlLcKeymgrDivProduction), + .RndCnstLcKeymgrDivRma(RndCnstLcCtrlLcKeymgrDivRma), .RndCnstInvalidTokens(RndCnstLcCtrlInvalidTokens), .SiliconCreatorId(LcCtrlSiliconCreatorId), .ProductId(LcCtrlProductId), diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv index 022f98d442b216..cdafa1d3cc5f51 100644 --- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv +++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv @@ -18,43 +18,53 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random bits for initial LFSR seed parameter otp_ctrl_pkg::lfsr_seed_t RndCnstOtpCtrlLfsrSeed = { - 40'h57_1EAE0FC6 + 40'hE1_8549CB1E }; // Compile-time random permutation for LFSR output parameter otp_ctrl_pkg::lfsr_perm_t RndCnstOtpCtrlLfsrPerm = { - 240'h4642_9E4882D3_5CD9E224_C7CE0431_6384661A_9823D66D_D8140251_C455C419 + 240'h9D55_98245508_04312249_A00D9648_1F4176CE_4531A374_C84A7821_CB9993DC }; // Compile-time random permutation for scrambling key/nonce register reset value parameter otp_ctrl_pkg::scrmbl_key_init_t RndCnstOtpCtrlScrmblKeyInit = { - 256'h23D532C0_AB44E1E9_2CCFEBAD_AD9193A3_EE4ECD8C_032462B3_E18549CB_1E70D5A8 + 256'h44C3BCDF_8087B7FA_CD65E965_4CD85BC6_6D10208C_4FB51B97_BBF4D12C_378CCFD6 }; //////////////////////////////////////////// // lc_ctrl //////////////////////////////////////////// - // Compile-time random bits for lc state group diversification value + // Diversification value used for all invalid life cycle states. parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivInvalid = { - 128'h3DE6673D_2C1C0A7B_55176264_E55C329C + 128'hA5A5BF30_32DB51FA_1EB92F6C_E10E90F9 }; - // Compile-time random bits for lc state group diversification value - parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivTestDevRma = { - 128'h8AE4725A_EAF67281_50127AC7_55D70063 + // Diversification value used for the TEST_UNLOCKED* life cycle states. + parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivTestUnlocked = { + 128'hC5C06F73_3DC911A3_21DD4C0A_C2406D46 }; - // Compile-time random bits for lc state group diversification value + // Diversification value used for the DEV life cycle state. + parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivDev = { + 128'h7215DAB3_F2B54A52_E6728678_AF071806 + }; + + // Diversification value used for the PROD/PROD_END life cycle states. parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivProduction = { - 128'h277642B5_309A1639_90B966CD_494444C3 + 128'h8E344D2E_AE4D73C8_FA54DE8A_A4A4F258 + }; + + // Diversification value used for the RMA life cycle state. + parameter lc_ctrl_pkg::lc_keymgr_div_t RndCnstLcCtrlLcKeymgrDivRma = { + 128'hF3B2A145_FD1950AE_55D693E5_7968117E }; // Compile-time random bits used for invalid tokens in the token mux parameter lc_ctrl_pkg::lc_token_mux_t RndCnstLcCtrlInvalidTokens = { - 256'hBCDF8087_B7FACD65_E9654CD8_5BC66D10_208C4FB5_1B97BBF4_D12C378C_CFD6A5A5, - 256'hBF3032DB_51FA1EB9_2F6CE10E_90F9C5C0_6F733DC9_11A321DD_4C0AC240_6D467215, - 256'hDAB3F2B5_4A52E672_8678AF07_18068E34_4D2EAE4D_73C8FA54_DE8AA4A4_F258F3B2, - 256'hA145FD19_50AE55D6_93E57968_117E66DC_634155E0_F8150242_862EB20E_EA9A1F75 + 256'h66DC6341_55E0F815_0242862E_B20EEA9A_1F754471_6551512A_112DED67_8CE824A0, + 256'h8E29C772_795A358E_C30F1BED_D1AF0EC9_D9A9CF36_A2B130D3_2AFE121A_F734F628, + 256'h363AAA0E_93D45C42_3690ED05_BD1E710F_22D10958_89FBD8A7_B57FB1E1_1DF367C1, + 256'hC1EDE3F3_5CFC8F6E_72ABDD73_A9EEFBF8_B7081EB9_F636E13C_A9D21F1E_DEBE60A2 }; //////////////////////////////////////////// @@ -62,12 +72,12 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random bits for initial LFSR seed parameter alert_pkg::lfsr_seed_t RndCnstAlertHandlerLfsrSeed = { - 32'h44716551 + 32'h2DB6D398 }; // Compile-time random permutation for LFSR output parameter alert_pkg::lfsr_perm_t RndCnstAlertHandlerLfsrPerm = { - 160'hE9F28B4F_1248F60F_B6B00DCC_B7BB9AA1_22CF08AA + 160'hFF4E1AEC_AC5CB0F2_239612AF_14F8C0CC_26D70E9A }; //////////////////////////////////////////// @@ -75,22 +85,22 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random reset value for SRAM scrambling key. parameter otp_ctrl_pkg::sram_key_t RndCnstSramCtrlRetAonSramKey = { - 128'h28363AAA_0E93D45C_423690ED_05BD1E71 + 128'hE4612980_D48E6C64_93A50EED_BAC6A46B }; // Compile-time random reset value for SRAM scrambling nonce. parameter otp_ctrl_pkg::sram_nonce_t RndCnstSramCtrlRetAonSramNonce = { - 128'h0F22D109_5889FBD8_A7B57FB1_E11DF367 + 128'h7A8A9B2C_7AEC92F3_9E49478C_398C91DB }; // Compile-time random bits for initial LFSR seed parameter sram_ctrl_pkg::lfsr_seed_t RndCnstSramCtrlRetAonLfsrSeed = { - 32'hC1C1EDE3 + 32'h1841831B }; // Compile-time random permutation for LFSR output parameter sram_ctrl_pkg::lfsr_perm_t RndCnstSramCtrlRetAonLfsrPerm = { - 160'hEF325022_04A4EEF4_FC4A64B0_730C36D6_EAE6C57E + 160'hF7E60AE6_D8ECA26B_F09ADA50_579C4E63_42AA4163 }; //////////////////////////////////////////// @@ -98,28 +108,28 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random bits for default address key parameter flash_ctrl_pkg::flash_key_t RndCnstFlashCtrlAddrKey = { - 128'hD0488805_541166F1_EC8CEB42_692B089A + 128'h76A61E11_2578BF9F_469FC482_FA14A8F2 }; // Compile-time random bits for default data key parameter flash_ctrl_pkg::flash_key_t RndCnstFlashCtrlDataKey = { - 128'h6F99B1A7_AC084224_ADE46129_80D48E6C + 128'hB75C265C_9CB3B2F1_C44A7287_AB4C0618 }; // Compile-time random bits for default seeds parameter flash_ctrl_pkg::all_seeds_t RndCnstFlashCtrlAllSeeds = { - 256'h6493A50E_EDBAC6A4_6B7A8A9B_2C7AEC92_F39E4947_8C398C91_DB184183_1B1F5C82, - 256'hA556096F_FF6175FC_10F93979_2B444E52_1D4711E6_4066908A_DFD5918F_8C563C92 + 256'h822E92A0_84A048FF_E9FB8614_0A79D380_55B24B5F_3B3EA79B_D7F203D5_5EABF9F7, + 256'h33D9B0CC_2CA2B394_F2526E44_30C2AFB4_F5B43B16_67039C63_05BF983A_F472A23D }; // Compile-time random bits for initial LFSR seed parameter flash_ctrl_pkg::lfsr_seed_t RndCnstFlashCtrlLfsrSeed = { - 32'h184F1C76 + 32'hB96BE84F }; // Compile-time random permutation for LFSR output parameter flash_ctrl_pkg::lfsr_perm_t RndCnstFlashCtrlLfsrPerm = { - 160'hF1A47636_25B57610_6958727F_C5F61944_EEF20874 + 160'h699D74AA_B26079D1_1564D8E1_19F807B2_3FAC51F9 }; //////////////////////////////////////////// @@ -127,34 +137,34 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Default seed of the PRNG used for register clearing. parameter aes_pkg::clearing_lfsr_seed_t RndCnstAesClearingLfsrSeed = { - 64'h8055B24B_5F3B3EA7 + 64'h05BB696B_E7A52B9A }; // Permutation applied to the LFSR of the PRNG used for clearing. parameter aes_pkg::clearing_lfsr_perm_t RndCnstAesClearingLfsrPerm = { - 128'h34693A24_A552B718_DD0B9D04_BC342E81, - 256'hEEC75887_E1FF08A9_4DA3DCC8_1627F591_4EAF845B_525DE82F_3B3632A5_FE03CD66 + 128'hD3A648F1_D3034BE5_4EAD70B0_CC7BE7D4, + 256'h6DBF2E57_80469B23_26435889_4DED85F4_E6105A1A_AA0E71B8_F581F5B4_3B732E0A }; // Permutation applied to the clearing PRNG output for clearing the second share of registers. parameter aes_pkg::clearing_lfsr_perm_t RndCnstAesClearingSharePerm = { - 128'h352C351E_B2238AC0_C93B4942_BD9DCB5C, - 256'h07989ED9_0631D455_531EA17D_3E04168F_2A833F8F_5BFD9B41_CCBB98AA_79F5AB81 + 128'h33ABE47A_E86D7434_1505C68D_478F07D5, + 256'h208AC532_178D8DF3_02727EA0_BCA9504D_0F16B8B6_3B09595B_981F1A6F_FBF6CA9B }; // Default seed of the PRNG used for masking. parameter aes_pkg::masking_lfsr_seed_t RndCnstAesMaskingLfsrSeed = { - 32'hE9F0EC4C, - 256'h712146A4_AB60DA8B_656EABB0_B3EF6E9B_197CE582_FC9B5965_D697C23B_EAFE8389 + 32'h0E33FD2C, + 256'h07986C2A_511755F0_72EE7A8E_2FC45E11_1DF07FA0_67F64056_D9BF30D4_8543BEC2 }; // Permutation applied to the concatenated LFSRs of the PRNG used for masking. parameter aes_pkg::masking_lfsr_perm_t RndCnstAesMaskingLfsrPerm = { - 256'h1A695301_8D0A1F40_7A46869E_434A6366_73717976_9406249B_4458057B_04650F30, - 256'h41707D0C_345E0D6A_67573B29_276B2393_2261914B_1D78971E_873E2C35_1337959D, - 256'h4F25314D_387F1081_92886E74_5B4E092D_6D485582_998F728A_856C5C02_9C1B3A68, - 256'h64214218_5F8B2089_50840E08_2F629F47_8C392A0B_28153683_037C1907_168E7E75, - 256'h4C6F4980_3F60541C_9833322B_3D5D1456_7745009A_26905952_2E961151_125A3C17 + 256'h31722774_6D588692_343A5D20_839A9569_306E3757_16411E61_447A2642_2452080E, + 256'h898E637C_497F607D_2E0A390D_2D4F2932_9E82066A_3F4C8A02_679F4814_6C179409, + 256'h4010224A_872C3347_2A0C7396_7E1C009B_8C811B0F_3518035B_3C151F71_563E9966, + 256'h7B802819_8D786F1A_1D777679_538B4E68_65114623_45438850_3B07973D_389C596B, + 256'h4D0B8491_4B628F70_2B21015C_2F510413_125A8590_98935F54_55645E9D_05253675 }; //////////////////////////////////////////// @@ -162,57 +172,57 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random data for LFSR default seed parameter kmac_pkg::lfsr_seed_t RndCnstKmacLfsrSeed = { - 32'h4645AAD1, - 256'hFB21C181_24635E3D_50A88F68_08045627_AC18F377_D9071BEC_A6F194EF_96F3E535, - 256'hB58F2ADA_D82B175F_E9EA1C32_6A6610C1_117744DE_61CCBFAB_D3E1FDA6_67E04082, - 256'h478C14DB_070A6129_BB2945B8_8DC6CFCF_2AE02F47_010CB666_A5E22D33_20F89CAA + 32'h20F89CAA, + 256'h47E5CED5_D29CC9CD_B468773E_BACEC14D_A34C505A_EDC70EA1_84C7A341_93D59C73, + 256'h5B5B4E2C_BEE5AB93_CB024D6F_8C0C7001_10CBF014_25DAF514_1DF19A88_2A71D66B, + 256'h5953DBC6_03379DA9_EFB2069B_D79815B2_F8D99A40_E7FDC4FB_13143D77_53CE1CF9 }; // Compile-time random permutation for LFSR output parameter kmac_pkg::lfsr_perm_t RndCnstKmacLfsrPerm = { - 64'h7C29AA25_31B1DC68, - 256'hBD06A85C_CA941421_0EE2805F_56079C3E_3D516461_F256B78F_752D61C5_1404697C, - 256'hB8451192_DA2365D0_46641C94_D92C6790_C999B524_26DD2424_9E986EA9_C1F69FEF, - 256'h11100B22_16331A5B_28A5C09D_F9A28BF8_225E81D8_9B19CA72_E686C618_3FE03A5C, - 256'h7D035050_29923404_00CA783E_5158A22A_1A52B6B2_7CB7C8C8_745EBC97_7C771090, - 256'h6980B5C5_20C252AA_828DA53C_059A2007_FB8CB355_8ED30C91_85C2A674_D76E8570, - 256'h48C5735A_B49C4B08_1D1698C2_2C468255_0D125D59_61E16589_CBEA4978_9D9538DC, - 256'h68C167AC_9891C595_E155A9A8_F6C2B52E_AA7C0CAB_A1009BE1_2FA0CE7A_5AE9C281, - 256'hE3B20C80_98CA40D3_AD8BD385_C9BB4338_51681407_55C4CB50_EA30AEF9_981EE73C, - 256'h38B32931_48155AE2_61B1002B_5E6B5E66_5D52C465_AA5FA659_CCD266CA_E3A56FB4, - 256'hDED06197_2D97D139_5EAED232_EE3C622E_6305C2A5_6210FF00_3C66BC30_06C1A373, - 256'hCD90758B_9AA48B0F_8A1AE180_1F8D1198_2E326093_22BD912B_EC38DD77_C813331E, - 256'h6A4BE2D5_185EDBC9_006A8C9A_08896C5D_1E5268DA_4A1251E9_B697DBF3_DA740D07, - 256'h6215871B_611B059E_762A836D_204EAA4C_70E44DD3_3B9CEF3C_AD503801_180002BE, - 256'hC029E393_89020C20_04406189_E724E5C7_62E804D2_81359EC4_6D81BDDB_B3017A8B, - 256'h11D01315_C5EF37C5_934FD649_65E0BFD0_4C451C90_A2E0216A_074B73A0_4883A312, - 256'hB0E00BEC_359C6558_9950DC6B_4D8246A2_EF6E4B41_C1E79F51_2298861C_4FB6D147, - 256'hA7225944_E3B963E6_844DB904_17A19C9F_AD48412A_ACA1EB26_7B2908FA_BEDC13E3, - 256'h87F50C35_5F45A60A_A2F02228_4AC6C28B_F8136080_F70ECA74_2B1AE557_21CC45D9, - 256'hD3B2F1F2_8DAD9E8F_E7201C0C_5DB7F235_17704A15_A5A1DB22_495086CC_A1550E75, - 256'h0474894A_806D9C62_29B8911B_F52D8D16_0B609FAB_4D86BD5C_5C30D69E_1C2C0FC4, - 256'h055D8B68_C1609488_199188F0_3EAF6B58_BC0E58E8_8C1F7DC2_97EAE8AF_CA539986, - 256'h5E5B39D6_EE37A12B_21E41EE8_EADC901B_E4C3F713_42250BD6_AC67F127_5E6F0849, - 256'h6C26AB9D_E9E5BB16_37DFB7D6_1A508355_223A4A6C_EACE0B00_D3C118C7_512056F9, - 256'h0A650930_650B530D_46B93B2C_A99008A8_83F0BC20_899E6914_99662757_F3E0536D, - 256'h58D1B810_7C83D41E_D043EF0A_822498EF_4569510D_8D99505C_4F82660E_6C7E116C, - 256'h66454799_169054BB_24E0163F_9361FC1E_2BB3D497_79E94C15_F6DE6777_47473A3B, - 256'h7CD1301E_FC168453_3C2256EB_A0EC1B6E_1A2A1973_95C5B610_B8AC2949_8A9B10A5, - 256'hA0F08261_6DDB82BC_711DA92A_D2451591_8DEF3AE0_40B216B3_5EAB118F_6F4CDA76, - 256'h6E4B9FE9_56924855_47FEB44F_5C1948F4_78C788CC_8E866A2B_169F6290_3B095381, - 256'hADB05D32_08E88518_CE660EAA_AA0D8555_25C91739_6481CD4F_3D44C9A4_5606A760, - 256'h31652A66_A1DC9710_DC08C135_ABAFB4E1_6D9C64FC_6A130E94_1A3705BA_DDCB451F + 64'hA412388E_B94BEA6C, + 256'h303F6E98_BA947313_195941C7_27AA77AD_82BB6A33_0D7158F0_A34905BA_DD82FD2D, + 256'h794A0B20_991F57B4_65F070A7_E305873D_48C16666_0C65C1DE_8E5BC476_4EBB179B, + 256'h97441E8D_C72A0838_538ED55A_E6632F48_60AEB5CF_9ACC14A7_17D0C94D_9C4DC3A6, + 256'h134B2DC8_F0AB3FD4_55DA2909_51A23509_5DEEC52D_2B770FE6_A0D3149D_32CC3A71, + 256'h8A276506_A5E1D49F_100A2999_448832C5_51259721_302C6961_40087668_27A29E81, + 256'hF1D05795_556135AD_568872AD_7267F0AD_F470DF19_86438306_9C731B73_DAB90A7D, + 256'h9A28DA2C_4E3180F8_99DB69A8_38BE0189_6791FD0E_A5522996_737B41A3_DF0B845A, + 256'hF20064BD_AC0605D5_B1CBA801_921B2E71_02782F40_A83B0630_90D2B705_147085AC, + 256'hC5246851_E4989E97_85D02D65_9B0678E1_342C90A9_7A6B0152_7CC4B685_7048B1BF, + 256'h246990CA_0CED2749_CC12EB75_28204C5E_2058956F_0097B868_97C92272_B15D641B, + 256'h87070345_F888D7B7_C44046A8_C00EE060_9B89E031_9F141588_372DCD47_F049757C, + 256'h3B1155F8_F1C4EF91_0C06032F_F3CD4058_0A32E6CA_9C88B0F8_A1B65B41_F8D119A0, + 256'h93263832_19BB8E4F_92CDDA92_5E50C813_32F27827_72F8B546_2758CA5B_1AAAE75A, + 256'h3D675F9A_D957268D_A4A1251E_9AA9EE34_3DAA10D0_76215BB1_B6B26D9D_45720862, + 256'h4DB4813A_B0D6C6C8_E44DD339_58EF884F_27980E00_460000AF_BECA7B60_E29B5020, + 256'hC2CE4406_186E8F4E_4137F1BF_B91A04D2_0235A304_6E899619_07D8C06B_64747404, + 256'h7866A8B7_15BE9C88_5D649D05_D6954F41_31D47111_92408601_6A074B73_A048C664, + 256'hC2B0E00B_EE059C65_589CA0DE_104D9A90_91DFC46A_02D07054_29A448A6_219A31C4, + 256'hFB7B20A0_722CA06D_E38EC196_5A113703_10635672_40BD62A4_AAD38E61_E79E9829, + 256'h214B42FD_716E213E_53362E84_30D5AAD6_9BAAC6B3_C8A12A44_140E7A7A_31B46072, + 256'hDA916202_E51DFD8B_A282EE60_1AD249BC_AA23C750_2D3F6C57_07027C69_E362C0FC, + 256'h4055DC7E_AF16094B_BD99188F_03EACB9C_0BC0E58E_8F81F7DC_297EB09B_74A5880E, + 256'h6619796C_EF8C3CDE_84AE9790_7BAB2842_406FAE8F_D5B5089A_F17B359F_4E1D7A30, + 256'h2125A87B_32D6AF56_E9A4DF7E_DF586942_0D5488E9_29B96D48_2C034F04_631D4481, + 256'h5BE42994_24C1942D_4C351AE9_D93B2CAB_8008A883_C972A489_A5AD549A_805989D5, + 256'hFCF814DB_56346E04_1F20F507_BC50FC4A_BF89263C_595A5443_63665417_13E09983, + 256'hA4E6C7E1_16506454_79916905_4C364E01_63F93718_87D658AE_F0525DE7_A53057DB, + 256'h799DDD1D_1CE8EDF3_44C07C78_5AAF845A_A4CF0895_BC383B06_DB868A86_5CE5716D, + 256'h842E2B0A_5262A6C4_29683C20_985BFB01_AF1C476A_4ABCD145_64637BCE_B8102C85, + 256'hAEE7AAC4_63DBD336_9D9B92E7_FA55A492_1551FFAD_13D70652_3D1E31E2_3323A19A, + 256'h8AC5A7D8_A40EC254_E06B6C17_BDD3208E_88518CE6_60EAAAA0_D855525C_91739648 }; // Compile-time random permutation for forwarding LFSR state parameter kmac_pkg::lfsr_fwd_perm_t RndCnstKmacLfsrFwdPerm = { - 160'h721AFDFA_782F01A3_AE1DA865_9A12DF62_471BA846 + 160'hDDD8EAFF_D1CF7898_08D653C8_5A60ED5C_A7A18028 }; // Compile-time random permutation for LFSR Message output parameter kmac_pkg::msg_perm_t RndCnstKmacMsgPerm = { - 128'hF82671D8_35948217_304A2BFA_0239682C, - 256'hE7ED30D6_AB769BB9_609F734C_59C7F322_AC991DE4_7B41B83F_5408A955_C113F6FB + 128'h73A93266_A6B6E1FB_1DCE0B54_C02F3E00, + 256'h63EB8BD5_858F5418_A040791C_3C694CD4_8C9CA20B_DE5EEF7A_6BA157FD_0939B457 }; //////////////////////////////////////////// @@ -220,17 +230,17 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Default seed of the PRNG used for URND. parameter otbn_pkg::urnd_prng_seed_t RndCnstOtbnUrndPrngSeed = { - 256'h465EFE57_AA3B59BD_6B0A4021_6363420F_041ED29A_965B68FA_EA3E59D4_F2E2A0B4 + 256'hA8F072E7_7EE4859B_243F92CE_B098BE6E_65C35948_0858C396_11E658C9_7FB8D3E9 }; // Compile-time random reset value for IMem/DMem scrambling key. parameter otp_ctrl_pkg::otbn_key_t RndCnstOtbnOtbnKey = { - 128'h2EB9A8C3_AB227B50_766D2EAE_C89EB13B + 128'hCC0E7F8F_A8725200_C726C8F9_0EF5E2B7 }; // Compile-time random reset value for IMem/DMem scrambling nonce. parameter otp_ctrl_pkg::otbn_nonce_t RndCnstOtbnOtbnNonce = { - 64'h07E9BF4E_E4278413 + 64'h4BEEE27C_FA19EA57 }; //////////////////////////////////////////// @@ -238,73 +248,73 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random bits for initial LFSR seed parameter keymgr_pkg::lfsr_seed_t RndCnstKeymgrLfsrSeed = { - 64'h6D42C85E_456F3B26 + 64'h6CA8A822_5C8E1705 }; // Compile-time random permutation for LFSR output parameter keymgr_pkg::lfsr_perm_t RndCnstKeymgrLfsrPerm = { - 128'h67DFF577_9DF3AEA6_1CE14690_B285A917, - 256'h1EA43910_237CFC1B_0A2C8682_D101F870_F6ED3352_3272882F_C949BDE9_AE8555F4 + 128'hB931FB3B_12EFADCD_AA1008BC_15948906, + 256'h6F5D9C83_21E10C03_E5E61B0A_893E95FD_0654DDFF_CACE97A5_4CD668A8_358ED44F }; // Compile-time random permutation for entropy used in share overriding parameter keymgr_pkg::rand_perm_t RndCnstKeymgrRandPerm = { - 160'h341C41F2_9ADF4058_A907F3EA_297C295E_18DBCED9 + 160'hB87FDDE5_8A44756A_1C05F720_93384394_C8D7AF15 }; // Compile-time random bits for revision seed parameter keymgr_pkg::seed_t RndCnstKeymgrRevisionSeed = { - 256'h576CA8A8_225C8E17_053E44B6_8DD7822A_6859F2CF_52A55FD1_81B082D0_3C583756 + 256'h20BDAF59_FE2AE209_B8325D2C_8C35FC96_0679B106_A87E59E6_AEB1B530_2D334010 }; // Compile-time random bits for creator identity seed parameter keymgr_pkg::seed_t RndCnstKeymgrCreatorIdentitySeed = { - 256'hF11AA5B3_7F9544C4_AA90EB97_E1C0F808_6F627A28_1C5681D6_566641EE_CCCC8887 + 256'h70251696_FBB4BA16_9A6CD82F_AD46A0A5_C04009BB_934C7EF7_B83B6E40_610B4309 }; // Compile-time random bits for owner intermediate identity seed parameter keymgr_pkg::seed_t RndCnstKeymgrOwnerIntIdentitySeed = { - 256'h6AD113C5_0AD1BE4D_94DCE8FC_A54128A3_860AE1D3_493FBEF6_B9BA5DFE_4463A461 + 256'hFCB9DC54_D4276137_F9901D09_A76AEAA1_9DE5C579_FD38BDF3_8F0C21D6_A52226B6 }; // Compile-time random bits for owner identity seed parameter keymgr_pkg::seed_t RndCnstKeymgrOwnerIdentitySeed = { - 256'h5EF46762_A794A8C2_597E69FB_259B9619_14CD75BB_FD36BA48_E780D27C_D582540C + 256'hA4A7BDB0_5FE92161_5BF2FF98_4540F7D4_3ECE76B4_EB133637_74ED2ED4_5545E927 }; // Compile-time random bits for software generation seed parameter keymgr_pkg::seed_t RndCnstKeymgrSoftOutputSeed = { - 256'h7A68FF25_4EDFD852_829FECCC_ABD4AF9C_9032DA20_BDAF59FE_2AE209B8_325D2C8C + 256'hF6D9E4AB_AC398D42_C745EEF6_46C1464D_CA86DAFD_7C7C71E6_058DDFD8_71C51CAC }; // Compile-time random bits for hardware generation seed parameter keymgr_pkg::seed_t RndCnstKeymgrHardOutputSeed = { - 256'h35FC9606_79B106A8_7E59E6AE_B1B5302D_33401070_251696FB_B4BA169A_6CD82FAD + 256'hBAF4410F_06DCC036_FCD16FCD_E97D1718_91105DD8_95E3A1D0_A19A16D6_DBD8B20F }; // Compile-time random bits for generation seed when aes destination selected parameter keymgr_pkg::seed_t RndCnstKeymgrAesSeed = { - 256'h46A0A5C0_4009BB93_4C7EF7B8_3B6E4061_0B4309FC_B9DC54D4_276137F9_901D09A7 + 256'hC9E662E1_E1B4982B_3E8EFF63_890DBEAE_926FD468_A77EFDE3_DE5B4CAF_4776A247 }; // Compile-time random bits for generation seed when kmac destination selected parameter keymgr_pkg::seed_t RndCnstKeymgrKmacSeed = { - 256'h6AEAA19D_E5C579FD_38BDF38F_0C21D6A5_2226B6A4_A7BDB05F_E921615B_F2FF9845 + 256'hBABA4C99_08ED16BC_5415EC16_D28C5355_1312FCED_CF2832A6_6CEACF8E_D4D5B616 }; // Compile-time random bits for generation seed when otbn destination selected parameter keymgr_pkg::seed_t RndCnstKeymgrOtbnSeed = { - 256'h40F7D43E_CE76B4EB_13363774_ED2ED455_45E927F6_D9E4ABAC_398D42C7_45EEF646 + 256'h177DD43B_56FA754E_1F53AD65_8193B563_D9BDC6D2_AEE84852_F0CC7371_ED3A6FAA }; // Compile-time random bits for generation seed when no CDI is selected parameter keymgr_pkg::seed_t RndCnstKeymgrCdi = { - 256'hC1464DCA_86DAFD7C_7C71E605_8DDFD871_C51CACBA_F4410F06_DCC036FC_D16FCDE9 + 256'h516C144B_34C96DFA_BB6F6E79_208A74F3_5C79F397_C4E4C7E2_2B758184_8A90A125 }; // Compile-time random bits for generation seed when no destination selected parameter keymgr_pkg::seed_t RndCnstKeymgrNoneSeed = { - 256'h7D171891_105DD895_E3A1D0A1_9A16D6DB_D8B20FC9_E662E1E1_B4982B3E_8EFF6389 + 256'h4B2276BE_C9FC1A7A_5722A9AA_CA4DB84A_32E5C698_5A1A6435_118B5F5F_3FD3B931 }; //////////////////////////////////////////// @@ -312,14 +322,14 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random bits for csrng state group diversification value parameter csrng_pkg::cs_keymgr_div_t RndCnstCsrngCsKeymgrDivNonProduction = { - 128'h0DBEAE92_6FD468A7_7EFDE3DE_5B4CAF47, - 256'h76A247BA_BA4C9908_ED16BC54_15EC16D2_8C535513_12FCEDCF_2832A66C_EACF8ED4 + 128'h3116B671_92D856DD_742D40E0_72E417AD, + 256'h9A5F2612_04CBCC69_A2147819_B290A4BB_0264347C_0F91B0CE_C93C0129_D85B9580 }; // Compile-time random bits for csrng state group diversification value parameter csrng_pkg::cs_keymgr_div_t RndCnstCsrngCsKeymgrDivProduction = { - 128'hD5B61617_7DD43B56_FA754E1F_53AD6581, - 256'h93B563D9_BDC6D2AE_E84852F0_CC7371ED_3A6FAA51_6C144B34_C96DFABB_6F6E7920 + 128'h1DBE03F1_7E69DC26_0A79998E_FF5C710B, + 256'h67838ADF_B99A5ECA_671672CF_19BCA6AD_C1EBFAB6_11F19E72_62E0A491_970E51B2 }; //////////////////////////////////////////// @@ -327,22 +337,22 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Compile-time random reset value for SRAM scrambling key. parameter otp_ctrl_pkg::sram_key_t RndCnstSramCtrlMainSramKey = { - 128'h8A74F35C_79F397C4_E4C7E22B_7581848A + 128'h8E7026D0_E5DCE9E2_65A416A8_12231CFA }; // Compile-time random reset value for SRAM scrambling nonce. parameter otp_ctrl_pkg::sram_nonce_t RndCnstSramCtrlMainSramNonce = { - 128'h90A1254B_2276BEC9_FC1A7A57_22A9AACA + 128'h76E3D982_F8FDCEC9_AE1AF0B8_CD9E1760 }; // Compile-time random bits for initial LFSR seed parameter sram_ctrl_pkg::lfsr_seed_t RndCnstSramCtrlMainLfsrSeed = { - 32'h4DB84A32 + 32'h6EC98106 }; // Compile-time random permutation for LFSR output parameter sram_ctrl_pkg::lfsr_perm_t RndCnstSramCtrlMainLfsrPerm = { - 160'h7CB60455_500E897A_15A977BB_93DBF111_9835CF1C + 160'h85097395_A09DABEE_6DDD67D1_948B1A89_9435BE41 }; //////////////////////////////////////////// @@ -350,12 +360,12 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Fixed nonce used for address / data scrambling parameter bit [63:0] RndCnstRomCtrlScrNonce = { - 64'hCC69A214_7819B290 + 64'hFEE457DE_E82B6E06 }; // Randomised constant used as a scrambling key for ROM data parameter bit [127:0] RndCnstRomCtrlScrKey = { - 128'hA4BB0264_347C0F91_B0CEC93C_0129D85B + 128'h663C2917_39FF0E7D_644758FE_E1C58564 }; //////////////////////////////////////////// @@ -363,22 +373,22 @@ package top_earlgrey_rnd_cnst_pkg; //////////////////////////////////////////// // Default seed of the PRNG used for random instructions. parameter ibex_pkg::lfsr_seed_t RndCnstRvCoreIbexLfsrSeed = { - 32'h95801DBE + 32'hCF346D96 }; // Permutation applied to the LFSR of the PRNG used for random instructions. parameter ibex_pkg::lfsr_perm_t RndCnstRvCoreIbexLfsrPerm = { - 160'h4093FA68_A3C595C3_DCD2AC19_972E33E8_49B6BFC0 + 160'hAE357A7A_3B2CD206_3D7F3AB3_043AC11B_7B211B84 }; // Default icache scrambling key parameter logic [ibex_pkg::SCRAMBLE_KEY_W-1:0] RndCnstRvCoreIbexIbexKeyDefault = { - 128'h8E7026D0_E5DCE9E2_65A416A8_12231CFA + 128'hC652D737_2432FCC4_D3092BD6_383FDBA3 }; // Default icache scrambling nonce parameter logic [ibex_pkg::SCRAMBLE_NONCE_W-1:0] RndCnstRvCoreIbexIbexNonceDefault = { - 64'h76E3D982_F8FDCEC9 + 64'h5279FCBC_D2BD2C13 }; endpackage : top_earlgrey_rnd_cnst_pkg