[kmac] Regenerate register RTLs
Signed-off-by: Eunchan Kim <eunchan@opentitan.org>
diff --git a/hw/ip/kmac/rtl/kmac_reg_pkg.sv b/hw/ip/kmac/rtl/kmac_reg_pkg.sv
index 604a583..9ee7bdf 100644
--- a/hw/ip/kmac/rtl/kmac_reg_pkg.sv
+++ b/hw/ip/kmac/rtl/kmac_reg_pkg.sv
@@ -71,6 +71,18 @@
struct packed {
logic q;
} sideload;
+ struct packed {
+ logic [1:0] q;
+ } entropy_mode;
+ struct packed {
+ logic q;
+ } entropy_fast_process;
+ struct packed {
+ logic q;
+ } entropy_ready;
+ struct packed {
+ logic q;
+ } err_processed;
} kmac_reg2hw_cfg_reg_t;
typedef struct packed {
@@ -79,7 +91,12 @@
} kmac_reg2hw_cmd_reg_t;
typedef struct packed {
- logic [31:0] q;
+ struct packed {
+ logic [15:0] q;
+ } entropy_timer;
+ struct packed {
+ logic [15:0] q;
+ } wait_timer;
} kmac_reg2hw_entropy_period_reg_t;
typedef struct packed {
@@ -133,6 +150,17 @@
typedef struct packed {
struct packed {
logic d;
+ logic de;
+ } entropy_ready;
+ struct packed {
+ logic d;
+ logic de;
+ } err_processed;
+ } kmac_hw2reg_cfg_reg_t;
+
+ typedef struct packed {
+ struct packed {
+ logic d;
} sha3_idle;
struct packed {
logic d;
@@ -161,10 +189,10 @@
// Register to internal design logic //
///////////////////////////////////////
typedef struct packed {
- kmac_reg2hw_intr_state_reg_t intr_state; // [1534:1532]
- kmac_reg2hw_intr_enable_reg_t intr_enable; // [1531:1529]
- kmac_reg2hw_intr_test_reg_t intr_test; // [1528:1523]
- kmac_reg2hw_cfg_reg_t cfg; // [1522:1514]
+ kmac_reg2hw_intr_state_reg_t intr_state; // [1539:1537]
+ kmac_reg2hw_intr_enable_reg_t intr_enable; // [1536:1534]
+ kmac_reg2hw_intr_test_reg_t intr_test; // [1533:1528]
+ kmac_reg2hw_cfg_reg_t cfg; // [1527:1514]
kmac_reg2hw_cmd_reg_t cmd; // [1513:1509]
kmac_reg2hw_entropy_period_reg_t entropy_period; // [1508:1477]
kmac_reg2hw_entropy_seed_lower_reg_t entropy_seed_lower; // [1476:1444]
@@ -179,8 +207,9 @@
// Internal design logic to register //
///////////////////////////////////////
typedef struct packed {
- kmac_hw2reg_intr_state_reg_t intr_state; // [49:44]
- kmac_hw2reg_cfg_regwen_reg_t cfg_regwen; // [43:43]
+ kmac_hw2reg_intr_state_reg_t intr_state; // [53:48]
+ kmac_hw2reg_cfg_regwen_reg_t cfg_regwen; // [47:47]
+ kmac_hw2reg_cfg_reg_t cfg; // [46:43]
kmac_hw2reg_status_reg_t status; // [42:33]
kmac_hw2reg_err_code_reg_t err_code; // [32:0]
} kmac_hw2reg_t;
@@ -313,7 +342,7 @@
4'b 0001, // index[ 1] KMAC_INTR_ENABLE
4'b 0001, // index[ 2] KMAC_INTR_TEST
4'b 0001, // index[ 3] KMAC_CFG_REGWEN
- 4'b 0011, // index[ 4] KMAC_CFG
+ 4'b 1111, // index[ 4] KMAC_CFG
4'b 0001, // index[ 5] KMAC_CMD
4'b 0011, // index[ 6] KMAC_STATUS
4'b 1111, // index[ 7] KMAC_ENTROPY_PERIOD
diff --git a/hw/ip/kmac/rtl/kmac_reg_top.sv b/hw/ip/kmac/rtl/kmac_reg_top.sv
index 2d5a99c..180b463 100644
--- a/hw/ip/kmac/rtl/kmac_reg_top.sv
+++ b/hw/ip/kmac/rtl/kmac_reg_top.sv
@@ -166,6 +166,18 @@
logic cfg_sideload_qs;
logic cfg_sideload_wd;
logic cfg_sideload_we;
+ logic [1:0] cfg_entropy_mode_qs;
+ logic [1:0] cfg_entropy_mode_wd;
+ logic cfg_entropy_mode_we;
+ logic cfg_entropy_fast_process_qs;
+ logic cfg_entropy_fast_process_wd;
+ logic cfg_entropy_fast_process_we;
+ logic cfg_entropy_ready_qs;
+ logic cfg_entropy_ready_wd;
+ logic cfg_entropy_ready_we;
+ logic cfg_err_processed_qs;
+ logic cfg_err_processed_wd;
+ logic cfg_err_processed_we;
logic [3:0] cmd_wd;
logic cmd_we;
logic status_sha3_idle_qs;
@@ -180,9 +192,12 @@
logic status_fifo_empty_re;
logic status_fifo_full_qs;
logic status_fifo_full_re;
- logic [31:0] entropy_period_qs;
- logic [31:0] entropy_period_wd;
- logic entropy_period_we;
+ logic [15:0] entropy_period_entropy_timer_qs;
+ logic [15:0] entropy_period_entropy_timer_wd;
+ logic entropy_period_entropy_timer_we;
+ logic [15:0] entropy_period_wait_timer_qs;
+ logic [15:0] entropy_period_wait_timer_wd;
+ logic entropy_period_wait_timer_we;
logic [31:0] entropy_seed_lower_qs;
logic [31:0] entropy_seed_lower_wd;
logic entropy_seed_lower_we;
@@ -672,6 +687,110 @@
);
+ // F[entropy_mode]: 17:16
+ prim_subreg #(
+ .DW (2),
+ .SWACCESS("RW"),
+ .RESVAL (2'h0)
+ ) u_cfg_entropy_mode (
+ .clk_i (clk_i ),
+ .rst_ni (rst_ni ),
+
+ // from register interface (qualified with register enable)
+ .we (cfg_entropy_mode_we & cfg_regwen_qs),
+ .wd (cfg_entropy_mode_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0 ),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.cfg.entropy_mode.q ),
+
+ // to register interface (read)
+ .qs (cfg_entropy_mode_qs)
+ );
+
+
+ // F[entropy_fast_process]: 19:19
+ prim_subreg #(
+ .DW (1),
+ .SWACCESS("RW"),
+ .RESVAL (1'h0)
+ ) u_cfg_entropy_fast_process (
+ .clk_i (clk_i ),
+ .rst_ni (rst_ni ),
+
+ // from register interface (qualified with register enable)
+ .we (cfg_entropy_fast_process_we & cfg_regwen_qs),
+ .wd (cfg_entropy_fast_process_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0 ),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.cfg.entropy_fast_process.q ),
+
+ // to register interface (read)
+ .qs (cfg_entropy_fast_process_qs)
+ );
+
+
+ // F[entropy_ready]: 24:24
+ prim_subreg #(
+ .DW (1),
+ .SWACCESS("RW"),
+ .RESVAL (1'h0)
+ ) u_cfg_entropy_ready (
+ .clk_i (clk_i ),
+ .rst_ni (rst_ni ),
+
+ // from register interface (qualified with register enable)
+ .we (cfg_entropy_ready_we & cfg_regwen_qs),
+ .wd (cfg_entropy_ready_wd),
+
+ // from internal hardware
+ .de (hw2reg.cfg.entropy_ready.de),
+ .d (hw2reg.cfg.entropy_ready.d ),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.cfg.entropy_ready.q ),
+
+ // to register interface (read)
+ .qs (cfg_entropy_ready_qs)
+ );
+
+
+ // F[err_processed]: 25:25
+ prim_subreg #(
+ .DW (1),
+ .SWACCESS("RW"),
+ .RESVAL (1'h0)
+ ) u_cfg_err_processed (
+ .clk_i (clk_i ),
+ .rst_ni (rst_ni ),
+
+ // from register interface (qualified with register enable)
+ .we (cfg_err_processed_we & cfg_regwen_qs),
+ .wd (cfg_err_processed_wd),
+
+ // from internal hardware
+ .de (hw2reg.cfg.err_processed.de),
+ .d (hw2reg.cfg.err_processed.d ),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.cfg.err_processed.q ),
+
+ // to register interface (read)
+ .qs (cfg_err_processed_qs)
+ );
+
+
// R[cmd]: V(True)
prim_subreg_ext #(
@@ -782,17 +901,18 @@
// R[entropy_period]: V(False)
+ // F[entropy_timer]: 15:0
prim_subreg #(
- .DW (32),
+ .DW (16),
.SWACCESS("RW"),
- .RESVAL (32'h0)
- ) u_entropy_period (
+ .RESVAL (16'h0)
+ ) u_entropy_period_entropy_timer (
.clk_i (clk_i ),
.rst_ni (rst_ni ),
// from register interface (qualified with register enable)
- .we (entropy_period_we & cfg_regwen_qs),
- .wd (entropy_period_wd),
+ .we (entropy_period_entropy_timer_we & cfg_regwen_qs),
+ .wd (entropy_period_entropy_timer_wd),
// from internal hardware
.de (1'b0),
@@ -800,10 +920,36 @@
// to internal hardware
.qe (),
- .q (reg2hw.entropy_period.q ),
+ .q (reg2hw.entropy_period.entropy_timer.q ),
// to register interface (read)
- .qs (entropy_period_qs)
+ .qs (entropy_period_entropy_timer_qs)
+ );
+
+
+ // F[wait_timer]: 31:16
+ prim_subreg #(
+ .DW (16),
+ .SWACCESS("RW"),
+ .RESVAL (16'h0)
+ ) u_entropy_period_wait_timer (
+ .clk_i (clk_i ),
+ .rst_ni (rst_ni ),
+
+ // from register interface (qualified with register enable)
+ .we (entropy_period_wait_timer_we & cfg_regwen_qs),
+ .wd (entropy_period_wait_timer_wd),
+
+ // from internal hardware
+ .de (1'b0),
+ .d ('0 ),
+
+ // to internal hardware
+ .qe (),
+ .q (reg2hw.entropy_period.wait_timer.q ),
+
+ // to register interface (read)
+ .qs (entropy_period_wait_timer_qs)
);
@@ -1899,6 +2045,18 @@
assign cfg_sideload_we = addr_hit[4] & reg_we & ~wr_err;
assign cfg_sideload_wd = reg_wdata[12];
+ assign cfg_entropy_mode_we = addr_hit[4] & reg_we & ~wr_err;
+ assign cfg_entropy_mode_wd = reg_wdata[17:16];
+
+ assign cfg_entropy_fast_process_we = addr_hit[4] & reg_we & ~wr_err;
+ assign cfg_entropy_fast_process_wd = reg_wdata[19];
+
+ assign cfg_entropy_ready_we = addr_hit[4] & reg_we & ~wr_err;
+ assign cfg_entropy_ready_wd = reg_wdata[24];
+
+ assign cfg_err_processed_we = addr_hit[4] & reg_we & ~wr_err;
+ assign cfg_err_processed_wd = reg_wdata[25];
+
assign cmd_we = addr_hit[5] & reg_we & ~wr_err;
assign cmd_wd = reg_wdata[3:0];
@@ -1914,8 +2072,11 @@
assign status_fifo_full_re = addr_hit[6] && reg_re;
- assign entropy_period_we = addr_hit[7] & reg_we & ~wr_err;
- assign entropy_period_wd = reg_wdata[31:0];
+ assign entropy_period_entropy_timer_we = addr_hit[7] & reg_we & ~wr_err;
+ assign entropy_period_entropy_timer_wd = reg_wdata[15:0];
+
+ assign entropy_period_wait_timer_we = addr_hit[7] & reg_we & ~wr_err;
+ assign entropy_period_wait_timer_wd = reg_wdata[31:16];
assign entropy_seed_lower_we = addr_hit[8] & reg_we & ~wr_err;
assign entropy_seed_lower_wd = reg_wdata[31:0];
@@ -2089,6 +2250,10 @@
reg_rdata_next[8] = cfg_msg_endianness_qs;
reg_rdata_next[9] = cfg_state_endianness_qs;
reg_rdata_next[12] = cfg_sideload_qs;
+ reg_rdata_next[17:16] = cfg_entropy_mode_qs;
+ reg_rdata_next[19] = cfg_entropy_fast_process_qs;
+ reg_rdata_next[24] = cfg_entropy_ready_qs;
+ reg_rdata_next[25] = cfg_err_processed_qs;
end
addr_hit[5]: begin
@@ -2105,7 +2270,8 @@
end
addr_hit[7]: begin
- reg_rdata_next[31:0] = entropy_period_qs;
+ reg_rdata_next[15:0] = entropy_period_entropy_timer_qs;
+ reg_rdata_next[31:16] = entropy_period_wait_timer_qs;
end
addr_hit[8]: begin