[aes] Add second alert signal

This commit adds a second alert signal to AES in order to distinguish
between
- minor/recoverable update errors, and
- major/fatal storage errors that require the module to be reset.

Signed-off-by: Pirmin Vogel <vogelpi@lowrisc.org>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 0677413..9934dc8 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -798,7 +798,13 @@
       alert_list:
       [
         {
-          name: ctrl_err
+          name: ctrl_err_update
+          width: 1
+          type: alert
+          async: 0
+        }
+        {
+          name: ctrl_err_storage
           width: 1
           type: alert
           async: 0
@@ -4106,7 +4112,14 @@
   alert:
   [
     {
-      name: aes_ctrl_err
+      name: aes_ctrl_err_update
+      width: 1
+      type: alert
+      async: 0
+      module_name: aes
+    }
+    {
+      name: aes_ctrl_err_storage
       width: 1
       type: alert
       async: 0
diff --git a/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson b/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
index 8388f0b..5a1e996 100644
--- a/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
+++ b/hw/top_earlgrey/ip/alert_handler/data/autogen/alert_handler.hjson
@@ -30,7 +30,7 @@
     { name: "NAlerts",
       desc: "Number of peripheral inputs",
       type: "int",
-      default: "12",
+      default: "13",
       local: "true"
     },
     { name: "EscCntDw",
@@ -54,7 +54,7 @@
     { name: "AsyncOn",
       desc: "Number of peripheral outputs",
       type: "logic [NAlerts-1:0]",
-      default: "12'b111111100000",
+      default: "13'b1111111000000",
       local: "true"
     },
     { name: "N_CLASSES",
diff --git a/hw/top_earlgrey/ip/alert_handler/dv/alert_handler_env_pkg__params.sv b/hw/top_earlgrey/ip/alert_handler/dv/alert_handler_env_pkg__params.sv
index 28bc9be..d5abde7 100644
--- a/hw/top_earlgrey/ip/alert_handler/dv/alert_handler_env_pkg__params.sv
+++ b/hw/top_earlgrey/ip/alert_handler/dv/alert_handler_env_pkg__params.sv
@@ -10,5 +10,5 @@
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
 
-parameter uint NUM_ALERTS = 12;
-parameter bit [NUM_ALERTS-1:0] ASYNC_ON = 12'b111111100000;
+parameter uint NUM_ALERTS = 13;
+parameter bit [NUM_ALERTS-1:0] ASYNC_ON = 13'b1111111000000;
diff --git a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv
index 4082f61..2135bc2 100644
--- a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv
+++ b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_pkg.sv
@@ -7,11 +7,11 @@
 package alert_handler_reg_pkg;
 
   // Param list
-  parameter int NAlerts = 12;
+  parameter int NAlerts = 13;
   parameter int EscCntDw = 32;
   parameter int AccuCntDw = 16;
   parameter int LfsrSeed = 2147483647;
-  parameter logic [NAlerts-1:0] AsyncOn = 12'b111111100000;
+  parameter logic [NAlerts-1:0] AsyncOn = 13'b1111111000000;
   parameter int N_CLASSES = 4;
   parameter int N_ESC_SEV = 4;
   parameter int N_PHASES = 4;
@@ -455,14 +455,14 @@
   // Register to internal design logic //
   ///////////////////////////////////////
   typedef struct packed {
-    alert_handler_reg2hw_intr_state_reg_t intr_state; // [872:869]
-    alert_handler_reg2hw_intr_enable_reg_t intr_enable; // [868:865]
-    alert_handler_reg2hw_intr_test_reg_t intr_test; // [864:857]
-    alert_handler_reg2hw_regen_reg_t regen; // [856:856]
-    alert_handler_reg2hw_ping_timeout_cyc_reg_t ping_timeout_cyc; // [855:832]
-    alert_handler_reg2hw_alert_en_mreg_t [11:0] alert_en; // [831:820]
-    alert_handler_reg2hw_alert_class_mreg_t [11:0] alert_class; // [819:796]
-    alert_handler_reg2hw_alert_cause_mreg_t [11:0] alert_cause; // [795:784]
+    alert_handler_reg2hw_intr_state_reg_t intr_state; // [876:873]
+    alert_handler_reg2hw_intr_enable_reg_t intr_enable; // [872:869]
+    alert_handler_reg2hw_intr_test_reg_t intr_test; // [868:861]
+    alert_handler_reg2hw_regen_reg_t regen; // [860:860]
+    alert_handler_reg2hw_ping_timeout_cyc_reg_t ping_timeout_cyc; // [859:836]
+    alert_handler_reg2hw_alert_en_mreg_t [12:0] alert_en; // [835:823]
+    alert_handler_reg2hw_alert_class_mreg_t [12:0] alert_class; // [822:797]
+    alert_handler_reg2hw_alert_cause_mreg_t [12:0] alert_cause; // [796:784]
     alert_handler_reg2hw_loc_alert_en_mreg_t [3:0] loc_alert_en; // [783:780]
     alert_handler_reg2hw_loc_alert_class_mreg_t [3:0] loc_alert_class; // [779:772]
     alert_handler_reg2hw_loc_alert_cause_mreg_t [3:0] loc_alert_cause; // [771:768]
@@ -504,8 +504,8 @@
   // Internal design logic to register //
   ///////////////////////////////////////
   typedef struct packed {
-    alert_handler_hw2reg_intr_state_reg_t intr_state; // [251:248]
-    alert_handler_hw2reg_alert_cause_mreg_t [11:0] alert_cause; // [247:224]
+    alert_handler_hw2reg_intr_state_reg_t intr_state; // [253:250]
+    alert_handler_hw2reg_alert_cause_mreg_t [12:0] alert_cause; // [249:224]
     alert_handler_hw2reg_loc_alert_cause_mreg_t [3:0] loc_alert_cause; // [223:216]
     alert_handler_hw2reg_classa_clren_reg_t classa_clren; // [215:216]
     alert_handler_hw2reg_classa_accum_cnt_reg_t classa_accum_cnt; // [215:216]
@@ -658,7 +658,7 @@
     4'b 0001, // index[ 3] ALERT_HANDLER_REGEN
     4'b 0111, // index[ 4] ALERT_HANDLER_PING_TIMEOUT_CYC
     4'b 0011, // index[ 5] ALERT_HANDLER_ALERT_EN
-    4'b 0111, // index[ 6] ALERT_HANDLER_ALERT_CLASS
+    4'b 1111, // index[ 6] ALERT_HANDLER_ALERT_CLASS
     4'b 0011, // index[ 7] ALERT_HANDLER_ALERT_CAUSE
     4'b 0001, // index[ 8] ALERT_HANDLER_LOC_ALERT_EN
     4'b 0001, // index[ 9] ALERT_HANDLER_LOC_ALERT_CLASS
diff --git a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
index 781f7ca..32496b9 100644
--- a/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
+++ b/hw/top_earlgrey/ip/alert_handler/rtl/autogen/alert_handler_reg_top.sv
@@ -145,6 +145,9 @@
   logic alert_en_en_a_11_qs;
   logic alert_en_en_a_11_wd;
   logic alert_en_en_a_11_we;
+  logic alert_en_en_a_12_qs;
+  logic alert_en_en_a_12_wd;
+  logic alert_en_en_a_12_we;
   logic [1:0] alert_class_class_a_0_qs;
   logic [1:0] alert_class_class_a_0_wd;
   logic alert_class_class_a_0_we;
@@ -181,6 +184,9 @@
   logic [1:0] alert_class_class_a_11_qs;
   logic [1:0] alert_class_class_a_11_wd;
   logic alert_class_class_a_11_we;
+  logic [1:0] alert_class_class_a_12_qs;
+  logic [1:0] alert_class_class_a_12_wd;
+  logic alert_class_class_a_12_we;
   logic alert_cause_a_0_qs;
   logic alert_cause_a_0_wd;
   logic alert_cause_a_0_we;
@@ -217,6 +223,9 @@
   logic alert_cause_a_11_qs;
   logic alert_cause_a_11_wd;
   logic alert_cause_a_11_we;
+  logic alert_cause_a_12_qs;
+  logic alert_cause_a_12_wd;
+  logic alert_cause_a_12_we;
   logic loc_alert_en_en_la_0_qs;
   logic loc_alert_en_en_la_0_wd;
   logic loc_alert_en_en_la_0_we;
@@ -1135,6 +1144,32 @@
   );
 
 
+  // F[en_a_12]: 12:12
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_alert_en_en_a_12 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (alert_en_en_a_12_we & regen_qs),
+    .wd     (alert_en_en_a_12_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.alert_en[12].q ),
+
+    // to register interface (read)
+    .qs     (alert_en_en_a_12_qs)
+  );
+
+
 
 
   // Subregister 0 of Multireg alert_class
@@ -1452,6 +1487,32 @@
   );
 
 
+  // F[class_a_12]: 25:24
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_alert_class_class_a_12 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (alert_class_class_a_12_we & regen_qs),
+    .wd     (alert_class_class_a_12_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.alert_class[12].q ),
+
+    // to register interface (read)
+    .qs     (alert_class_class_a_12_qs)
+  );
+
+
 
 
   // Subregister 0 of Multireg alert_cause
@@ -1769,6 +1830,32 @@
   );
 
 
+  // F[a_12]: 12:12
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("W1C"),
+    .RESVAL  (1'h0)
+  ) u_alert_cause_a_12 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (alert_cause_a_12_we),
+    .wd     (alert_cause_a_12_wd),
+
+    // from internal hardware
+    .de     (hw2reg.alert_cause[12].de),
+    .d      (hw2reg.alert_cause[12].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.alert_cause[12].q ),
+
+    // to register interface (read)
+    .qs     (alert_cause_a_12_qs)
+  );
+
+
 
 
   // Subregister 0 of Multireg loc_alert_en
@@ -4407,6 +4494,9 @@
   assign alert_en_en_a_11_we = addr_hit[5] & reg_we & ~wr_err;
   assign alert_en_en_a_11_wd = reg_wdata[11];
 
+  assign alert_en_en_a_12_we = addr_hit[5] & reg_we & ~wr_err;
+  assign alert_en_en_a_12_wd = reg_wdata[12];
+
   assign alert_class_class_a_0_we = addr_hit[6] & reg_we & ~wr_err;
   assign alert_class_class_a_0_wd = reg_wdata[1:0];
 
@@ -4443,6 +4533,9 @@
   assign alert_class_class_a_11_we = addr_hit[6] & reg_we & ~wr_err;
   assign alert_class_class_a_11_wd = reg_wdata[23:22];
 
+  assign alert_class_class_a_12_we = addr_hit[6] & reg_we & ~wr_err;
+  assign alert_class_class_a_12_wd = reg_wdata[25:24];
+
   assign alert_cause_a_0_we = addr_hit[7] & reg_we & ~wr_err;
   assign alert_cause_a_0_wd = reg_wdata[0];
 
@@ -4479,6 +4572,9 @@
   assign alert_cause_a_11_we = addr_hit[7] & reg_we & ~wr_err;
   assign alert_cause_a_11_wd = reg_wdata[11];
 
+  assign alert_cause_a_12_we = addr_hit[7] & reg_we & ~wr_err;
+  assign alert_cause_a_12_wd = reg_wdata[12];
+
   assign loc_alert_en_en_la_0_we = addr_hit[8] & reg_we & ~wr_err;
   assign loc_alert_en_en_la_0_wd = reg_wdata[0];
 
@@ -4801,6 +4897,7 @@
         reg_rdata_next[9] = alert_en_en_a_9_qs;
         reg_rdata_next[10] = alert_en_en_a_10_qs;
         reg_rdata_next[11] = alert_en_en_a_11_qs;
+        reg_rdata_next[12] = alert_en_en_a_12_qs;
       end
 
       addr_hit[6]: begin
@@ -4816,6 +4913,7 @@
         reg_rdata_next[19:18] = alert_class_class_a_9_qs;
         reg_rdata_next[21:20] = alert_class_class_a_10_qs;
         reg_rdata_next[23:22] = alert_class_class_a_11_qs;
+        reg_rdata_next[25:24] = alert_class_class_a_12_qs;
       end
 
       addr_hit[7]: begin
@@ -4831,6 +4929,7 @@
         reg_rdata_next[9] = alert_cause_a_9_qs;
         reg_rdata_next[10] = alert_cause_a_10_qs;
         reg_rdata_next[11] = alert_cause_a_11_qs;
+        reg_rdata_next[12] = alert_cause_a_12_qs;
       end
 
       addr_hit[8]: begin
diff --git a/hw/top_earlgrey/ip/rv_plic/fpv/autogen/rv_plic_csr_assert_fpv.sv b/hw/top_earlgrey/ip/rv_plic/fpv/autogen/rv_plic_csr_assert_fpv.sv
new file mode 100644
index 0000000..67aa2a3
--- /dev/null
+++ b/hw/top_earlgrey/ip/rv_plic/fpv/autogen/rv_plic_csr_assert_fpv.sv
@@ -0,0 +1,505 @@
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
+
+// FPV CSR read and write assertions auto-generated by `reggen` containing data structure
+// Do Not Edit directly
+// TODO: This automation does not support: shadow reg and regwen reg
+// This automation assumes that W1C and W0C are registers with 1 bit per field
+
+`include "prim_assert.sv"
+
+// Block: rv_plic
+module rv_plic_csr_assert_fpv import tlul_pkg::*; import rv_plic_reg_pkg::*; (
+  input clk_i,
+  input rst_ni,
+
+  // tile link ports
+  input tl_h2d_t h2d,
+  input tl_d2h_t d2h,
+
+  // reg and hw ports
+  input rv_plic_reg2hw_t reg2hw,
+  input rv_plic_hw2reg_t hw2reg
+);
+
+  parameter int DWidth = 32;
+  // mask register to convert byte to bit
+  logic [DWidth-1:0] a_mask_bit;
+
+  assign a_mask_bit[7:0]   = h2d.a_mask[0] ? '1 : '0;
+  assign a_mask_bit[15:8]  = h2d.a_mask[1] ? '1 : '0;
+  assign a_mask_bit[23:16] = h2d.a_mask[2] ? '1 : '0;
+  assign a_mask_bit[31:24] = h2d.a_mask[3] ? '1 : '0;
+
+  // declare common read and write sequences
+  sequence device_wr_S(logic [9:0] addr);
+    h2d.a_address == addr && h2d.a_opcode inside {PutFullData, PutPartialData} &&
+        h2d.a_valid && h2d.d_ready && !d2h.d_valid;
+  endsequence
+
+  sequence device_rd_S(logic [9:0] addr);
+    h2d.a_address == addr && h2d.a_opcode inside {Get} && h2d.a_valid && h2d.d_ready &&
+        !d2h.d_valid;
+  endsequence
+
+  // declare common read and write properties
+  // for homog registers, we check by a reg; for non-homog regs, we check by field.
+  // `mask` is used for checking by field. It masks out any act_data that are not within the field
+  // `lsb` is used to check non-homog multi_reg. Because we are using a local copy `_fpv` variable
+  // to store all the multi-reg within one basefield, we need to shift the `_fpv` value to the
+  // correct bits, then compare with read/write exp_data.
+
+  property wr_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit regen,
+                bit [DWidth-1:0] mask, int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_wr_S(addr), id = h2d.a_source, exp_data = h2d.a_data & a_mask_bit & mask) ##1
+        first_match(##[0:$] d2h.d_valid && d2h.d_source == id) |->
+        (d2h.d_error || (act_data << lsb) == exp_data || !regen);
+  endproperty
+
+  // external reg will use one clk cycle to update act_data from external
+  property wr_ext_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit regen,
+                    bit [DWidth-1:0] mask, int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_wr_S(addr), id = h2d.a_source, exp_data = h2d.a_data & a_mask_bit & mask) ##1
+        first_match(##[0:$] (d2h.d_valid && d2h.d_source == id)) |->
+        (d2h.d_error || ($past(act_data) << lsb) == exp_data || !regen);
+  endproperty
+
+  property w1c_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit regen,
+                bit [DWidth-1:0] mask, int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_wr_S(addr), id = h2d.a_source, exp_data = h2d.a_data & a_mask_bit & mask & '0) ##1
+        first_match(##[0:$] d2h.d_valid && d2h.d_source == id) |->
+        (d2h.d_error || (act_data << lsb) == exp_data || !regen);
+  endproperty
+
+  property w1c_ext_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit regen,
+                    bit [DWidth-1:0] mask, int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_wr_S(addr), id = h2d.a_source, exp_data = h2d.a_data & a_mask_bit & mask & '0) ##1
+        first_match(##[0:$] (d2h.d_valid && d2h.d_source == id)) |->
+        (d2h.d_error || ($past(act_data) << lsb) == exp_data || !regen);
+  endproperty
+
+  property rd_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit [DWidth-1:0] mask, int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_rd_S(addr), id = h2d.a_source, exp_data = $past(act_data)) ##1
+        first_match(##[0:$] (d2h.d_valid && d2h.d_source == id)) |->
+        (d2h.d_error || (d2h.d_data & mask) >> lsb == exp_data);
+  endproperty
+
+  property rd_ext_P(bit [9:0] addr, bit [DWidth-1:0] act_data, bit [DWidth-1:0] mask,
+      int lsb);
+    logic [DWidth-1:0] id, exp_data;
+    (device_rd_S(addr), id = h2d.a_source, exp_data = act_data) ##1
+        first_match(##[0:$] (d2h.d_valid && d2h.d_source == id)) |->
+        (d2h.d_error || (d2h.d_data & mask) >> lsb == exp_data);
+  endproperty
+
+  // read a WO register, always return 0
+  property r_wo_P(bit [9:0] addr);
+    logic [DWidth-1:0] id;
+    (device_rd_S(addr), id = h2d.a_source) ##1
+        first_match(##[0:$] (d2h.d_valid && d2h.d_source == id)) |->
+        (d2h.d_error || d2h.d_data == 0);
+  endproperty
+
+  // TODO: currently not used, will use once support regwen reg
+  property wr_regen_stable_P(bit regen, bit [DWidth-1:0] exp_data);
+    (!regen && $stable(regen)) |-> $stable(exp_data);
+  endproperty
+
+
+  // define local fpv variable for multi-reg
+  logic [82:0] ip_d_fpv;
+  for (genvar s = 0; s < 83; s++) begin : gen_ip_q
+    assign ip_d_fpv[((s+1)*1-1):s*1] = hw2reg.ip[s].d;
+  end
+
+  // assertions for register: ip0
+  `ASSERT(ip0_rd_A, rd_P(10'h0, ip_d_fpv[31:0], 'hffffffff, 0))
+  // assertions for register: ip1
+  `ASSERT(ip1_rd_A, rd_P(10'h4, ip_d_fpv[63:32], 'hffffffff, 0))
+  // assertions for register: ip2
+  `ASSERT(ip2_rd_A, rd_P(10'h8, ip_d_fpv[82:64], 'h7ffff, 0))
+
+  // define local fpv variable for multi-reg
+  logic [82:0] le_q_fpv;
+  for (genvar s = 0; s < 83; s++) begin : gen_le_q
+    assign le_q_fpv[((s+1)*1-1):s*1] = reg2hw.le[s].q;
+  end
+
+  // assertions for register: le0
+  `ASSERT(le0_wr_A, wr_P(10'hc, le_q_fpv[31:0], 1, 'hffffffff, 0))
+  `ASSERT(le0_rd_A, rd_P(10'hc, le_q_fpv[31:0], 'hffffffff, 0))
+  // assertions for register: le1
+  `ASSERT(le1_wr_A, wr_P(10'h10, le_q_fpv[63:32], 1, 'hffffffff, 0))
+  `ASSERT(le1_rd_A, rd_P(10'h10, le_q_fpv[63:32], 'hffffffff, 0))
+  // assertions for register: le2
+  `ASSERT(le2_wr_A, wr_P(10'h14, le_q_fpv[82:64], 1, 'h7ffff, 0))
+  `ASSERT(le2_rd_A, rd_P(10'h14, le_q_fpv[82:64], 'h7ffff, 0))
+
+  // assertions for register: prio0
+  `ASSERT(prio0_wr_A, wr_P(10'h18, reg2hw.prio0.q, 1, 'h3, 0))
+  `ASSERT(prio0_rd_A, rd_P(10'h18, reg2hw.prio0.q, 'hffffffff, 0))
+
+  // assertions for register: prio1
+  `ASSERT(prio1_wr_A, wr_P(10'h1c, reg2hw.prio1.q, 1, 'h3, 0))
+  `ASSERT(prio1_rd_A, rd_P(10'h1c, reg2hw.prio1.q, 'hffffffff, 0))
+
+  // assertions for register: prio2
+  `ASSERT(prio2_wr_A, wr_P(10'h20, reg2hw.prio2.q, 1, 'h3, 0))
+  `ASSERT(prio2_rd_A, rd_P(10'h20, reg2hw.prio2.q, 'hffffffff, 0))
+
+  // assertions for register: prio3
+  `ASSERT(prio3_wr_A, wr_P(10'h24, reg2hw.prio3.q, 1, 'h3, 0))
+  `ASSERT(prio3_rd_A, rd_P(10'h24, reg2hw.prio3.q, 'hffffffff, 0))
+
+  // assertions for register: prio4
+  `ASSERT(prio4_wr_A, wr_P(10'h28, reg2hw.prio4.q, 1, 'h3, 0))
+  `ASSERT(prio4_rd_A, rd_P(10'h28, reg2hw.prio4.q, 'hffffffff, 0))
+
+  // assertions for register: prio5
+  `ASSERT(prio5_wr_A, wr_P(10'h2c, reg2hw.prio5.q, 1, 'h3, 0))
+  `ASSERT(prio5_rd_A, rd_P(10'h2c, reg2hw.prio5.q, 'hffffffff, 0))
+
+  // assertions for register: prio6
+  `ASSERT(prio6_wr_A, wr_P(10'h30, reg2hw.prio6.q, 1, 'h3, 0))
+  `ASSERT(prio6_rd_A, rd_P(10'h30, reg2hw.prio6.q, 'hffffffff, 0))
+
+  // assertions for register: prio7
+  `ASSERT(prio7_wr_A, wr_P(10'h34, reg2hw.prio7.q, 1, 'h3, 0))
+  `ASSERT(prio7_rd_A, rd_P(10'h34, reg2hw.prio7.q, 'hffffffff, 0))
+
+  // assertions for register: prio8
+  `ASSERT(prio8_wr_A, wr_P(10'h38, reg2hw.prio8.q, 1, 'h3, 0))
+  `ASSERT(prio8_rd_A, rd_P(10'h38, reg2hw.prio8.q, 'hffffffff, 0))
+
+  // assertions for register: prio9
+  `ASSERT(prio9_wr_A, wr_P(10'h3c, reg2hw.prio9.q, 1, 'h3, 0))
+  `ASSERT(prio9_rd_A, rd_P(10'h3c, reg2hw.prio9.q, 'hffffffff, 0))
+
+  // assertions for register: prio10
+  `ASSERT(prio10_wr_A, wr_P(10'h40, reg2hw.prio10.q, 1, 'h3, 0))
+  `ASSERT(prio10_rd_A, rd_P(10'h40, reg2hw.prio10.q, 'hffffffff, 0))
+
+  // assertions for register: prio11
+  `ASSERT(prio11_wr_A, wr_P(10'h44, reg2hw.prio11.q, 1, 'h3, 0))
+  `ASSERT(prio11_rd_A, rd_P(10'h44, reg2hw.prio11.q, 'hffffffff, 0))
+
+  // assertions for register: prio12
+  `ASSERT(prio12_wr_A, wr_P(10'h48, reg2hw.prio12.q, 1, 'h3, 0))
+  `ASSERT(prio12_rd_A, rd_P(10'h48, reg2hw.prio12.q, 'hffffffff, 0))
+
+  // assertions for register: prio13
+  `ASSERT(prio13_wr_A, wr_P(10'h4c, reg2hw.prio13.q, 1, 'h3, 0))
+  `ASSERT(prio13_rd_A, rd_P(10'h4c, reg2hw.prio13.q, 'hffffffff, 0))
+
+  // assertions for register: prio14
+  `ASSERT(prio14_wr_A, wr_P(10'h50, reg2hw.prio14.q, 1, 'h3, 0))
+  `ASSERT(prio14_rd_A, rd_P(10'h50, reg2hw.prio14.q, 'hffffffff, 0))
+
+  // assertions for register: prio15
+  `ASSERT(prio15_wr_A, wr_P(10'h54, reg2hw.prio15.q, 1, 'h3, 0))
+  `ASSERT(prio15_rd_A, rd_P(10'h54, reg2hw.prio15.q, 'hffffffff, 0))
+
+  // assertions for register: prio16
+  `ASSERT(prio16_wr_A, wr_P(10'h58, reg2hw.prio16.q, 1, 'h3, 0))
+  `ASSERT(prio16_rd_A, rd_P(10'h58, reg2hw.prio16.q, 'hffffffff, 0))
+
+  // assertions for register: prio17
+  `ASSERT(prio17_wr_A, wr_P(10'h5c, reg2hw.prio17.q, 1, 'h3, 0))
+  `ASSERT(prio17_rd_A, rd_P(10'h5c, reg2hw.prio17.q, 'hffffffff, 0))
+
+  // assertions for register: prio18
+  `ASSERT(prio18_wr_A, wr_P(10'h60, reg2hw.prio18.q, 1, 'h3, 0))
+  `ASSERT(prio18_rd_A, rd_P(10'h60, reg2hw.prio18.q, 'hffffffff, 0))
+
+  // assertions for register: prio19
+  `ASSERT(prio19_wr_A, wr_P(10'h64, reg2hw.prio19.q, 1, 'h3, 0))
+  `ASSERT(prio19_rd_A, rd_P(10'h64, reg2hw.prio19.q, 'hffffffff, 0))
+
+  // assertions for register: prio20
+  `ASSERT(prio20_wr_A, wr_P(10'h68, reg2hw.prio20.q, 1, 'h3, 0))
+  `ASSERT(prio20_rd_A, rd_P(10'h68, reg2hw.prio20.q, 'hffffffff, 0))
+
+  // assertions for register: prio21
+  `ASSERT(prio21_wr_A, wr_P(10'h6c, reg2hw.prio21.q, 1, 'h3, 0))
+  `ASSERT(prio21_rd_A, rd_P(10'h6c, reg2hw.prio21.q, 'hffffffff, 0))
+
+  // assertions for register: prio22
+  `ASSERT(prio22_wr_A, wr_P(10'h70, reg2hw.prio22.q, 1, 'h3, 0))
+  `ASSERT(prio22_rd_A, rd_P(10'h70, reg2hw.prio22.q, 'hffffffff, 0))
+
+  // assertions for register: prio23
+  `ASSERT(prio23_wr_A, wr_P(10'h74, reg2hw.prio23.q, 1, 'h3, 0))
+  `ASSERT(prio23_rd_A, rd_P(10'h74, reg2hw.prio23.q, 'hffffffff, 0))
+
+  // assertions for register: prio24
+  `ASSERT(prio24_wr_A, wr_P(10'h78, reg2hw.prio24.q, 1, 'h3, 0))
+  `ASSERT(prio24_rd_A, rd_P(10'h78, reg2hw.prio24.q, 'hffffffff, 0))
+
+  // assertions for register: prio25
+  `ASSERT(prio25_wr_A, wr_P(10'h7c, reg2hw.prio25.q, 1, 'h3, 0))
+  `ASSERT(prio25_rd_A, rd_P(10'h7c, reg2hw.prio25.q, 'hffffffff, 0))
+
+  // assertions for register: prio26
+  `ASSERT(prio26_wr_A, wr_P(10'h80, reg2hw.prio26.q, 1, 'h3, 0))
+  `ASSERT(prio26_rd_A, rd_P(10'h80, reg2hw.prio26.q, 'hffffffff, 0))
+
+  // assertions for register: prio27
+  `ASSERT(prio27_wr_A, wr_P(10'h84, reg2hw.prio27.q, 1, 'h3, 0))
+  `ASSERT(prio27_rd_A, rd_P(10'h84, reg2hw.prio27.q, 'hffffffff, 0))
+
+  // assertions for register: prio28
+  `ASSERT(prio28_wr_A, wr_P(10'h88, reg2hw.prio28.q, 1, 'h3, 0))
+  `ASSERT(prio28_rd_A, rd_P(10'h88, reg2hw.prio28.q, 'hffffffff, 0))
+
+  // assertions for register: prio29
+  `ASSERT(prio29_wr_A, wr_P(10'h8c, reg2hw.prio29.q, 1, 'h3, 0))
+  `ASSERT(prio29_rd_A, rd_P(10'h8c, reg2hw.prio29.q, 'hffffffff, 0))
+
+  // assertions for register: prio30
+  `ASSERT(prio30_wr_A, wr_P(10'h90, reg2hw.prio30.q, 1, 'h3, 0))
+  `ASSERT(prio30_rd_A, rd_P(10'h90, reg2hw.prio30.q, 'hffffffff, 0))
+
+  // assertions for register: prio31
+  `ASSERT(prio31_wr_A, wr_P(10'h94, reg2hw.prio31.q, 1, 'h3, 0))
+  `ASSERT(prio31_rd_A, rd_P(10'h94, reg2hw.prio31.q, 'hffffffff, 0))
+
+  // assertions for register: prio32
+  `ASSERT(prio32_wr_A, wr_P(10'h98, reg2hw.prio32.q, 1, 'h3, 0))
+  `ASSERT(prio32_rd_A, rd_P(10'h98, reg2hw.prio32.q, 'hffffffff, 0))
+
+  // assertions for register: prio33
+  `ASSERT(prio33_wr_A, wr_P(10'h9c, reg2hw.prio33.q, 1, 'h3, 0))
+  `ASSERT(prio33_rd_A, rd_P(10'h9c, reg2hw.prio33.q, 'hffffffff, 0))
+
+  // assertions for register: prio34
+  `ASSERT(prio34_wr_A, wr_P(10'ha0, reg2hw.prio34.q, 1, 'h3, 0))
+  `ASSERT(prio34_rd_A, rd_P(10'ha0, reg2hw.prio34.q, 'hffffffff, 0))
+
+  // assertions for register: prio35
+  `ASSERT(prio35_wr_A, wr_P(10'ha4, reg2hw.prio35.q, 1, 'h3, 0))
+  `ASSERT(prio35_rd_A, rd_P(10'ha4, reg2hw.prio35.q, 'hffffffff, 0))
+
+  // assertions for register: prio36
+  `ASSERT(prio36_wr_A, wr_P(10'ha8, reg2hw.prio36.q, 1, 'h3, 0))
+  `ASSERT(prio36_rd_A, rd_P(10'ha8, reg2hw.prio36.q, 'hffffffff, 0))
+
+  // assertions for register: prio37
+  `ASSERT(prio37_wr_A, wr_P(10'hac, reg2hw.prio37.q, 1, 'h3, 0))
+  `ASSERT(prio37_rd_A, rd_P(10'hac, reg2hw.prio37.q, 'hffffffff, 0))
+
+  // assertions for register: prio38
+  `ASSERT(prio38_wr_A, wr_P(10'hb0, reg2hw.prio38.q, 1, 'h3, 0))
+  `ASSERT(prio38_rd_A, rd_P(10'hb0, reg2hw.prio38.q, 'hffffffff, 0))
+
+  // assertions for register: prio39
+  `ASSERT(prio39_wr_A, wr_P(10'hb4, reg2hw.prio39.q, 1, 'h3, 0))
+  `ASSERT(prio39_rd_A, rd_P(10'hb4, reg2hw.prio39.q, 'hffffffff, 0))
+
+  // assertions for register: prio40
+  `ASSERT(prio40_wr_A, wr_P(10'hb8, reg2hw.prio40.q, 1, 'h3, 0))
+  `ASSERT(prio40_rd_A, rd_P(10'hb8, reg2hw.prio40.q, 'hffffffff, 0))
+
+  // assertions for register: prio41
+  `ASSERT(prio41_wr_A, wr_P(10'hbc, reg2hw.prio41.q, 1, 'h3, 0))
+  `ASSERT(prio41_rd_A, rd_P(10'hbc, reg2hw.prio41.q, 'hffffffff, 0))
+
+  // assertions for register: prio42
+  `ASSERT(prio42_wr_A, wr_P(10'hc0, reg2hw.prio42.q, 1, 'h3, 0))
+  `ASSERT(prio42_rd_A, rd_P(10'hc0, reg2hw.prio42.q, 'hffffffff, 0))
+
+  // assertions for register: prio43
+  `ASSERT(prio43_wr_A, wr_P(10'hc4, reg2hw.prio43.q, 1, 'h3, 0))
+  `ASSERT(prio43_rd_A, rd_P(10'hc4, reg2hw.prio43.q, 'hffffffff, 0))
+
+  // assertions for register: prio44
+  `ASSERT(prio44_wr_A, wr_P(10'hc8, reg2hw.prio44.q, 1, 'h3, 0))
+  `ASSERT(prio44_rd_A, rd_P(10'hc8, reg2hw.prio44.q, 'hffffffff, 0))
+
+  // assertions for register: prio45
+  `ASSERT(prio45_wr_A, wr_P(10'hcc, reg2hw.prio45.q, 1, 'h3, 0))
+  `ASSERT(prio45_rd_A, rd_P(10'hcc, reg2hw.prio45.q, 'hffffffff, 0))
+
+  // assertions for register: prio46
+  `ASSERT(prio46_wr_A, wr_P(10'hd0, reg2hw.prio46.q, 1, 'h3, 0))
+  `ASSERT(prio46_rd_A, rd_P(10'hd0, reg2hw.prio46.q, 'hffffffff, 0))
+
+  // assertions for register: prio47
+  `ASSERT(prio47_wr_A, wr_P(10'hd4, reg2hw.prio47.q, 1, 'h3, 0))
+  `ASSERT(prio47_rd_A, rd_P(10'hd4, reg2hw.prio47.q, 'hffffffff, 0))
+
+  // assertions for register: prio48
+  `ASSERT(prio48_wr_A, wr_P(10'hd8, reg2hw.prio48.q, 1, 'h3, 0))
+  `ASSERT(prio48_rd_A, rd_P(10'hd8, reg2hw.prio48.q, 'hffffffff, 0))
+
+  // assertions for register: prio49
+  `ASSERT(prio49_wr_A, wr_P(10'hdc, reg2hw.prio49.q, 1, 'h3, 0))
+  `ASSERT(prio49_rd_A, rd_P(10'hdc, reg2hw.prio49.q, 'hffffffff, 0))
+
+  // assertions for register: prio50
+  `ASSERT(prio50_wr_A, wr_P(10'he0, reg2hw.prio50.q, 1, 'h3, 0))
+  `ASSERT(prio50_rd_A, rd_P(10'he0, reg2hw.prio50.q, 'hffffffff, 0))
+
+  // assertions for register: prio51
+  `ASSERT(prio51_wr_A, wr_P(10'he4, reg2hw.prio51.q, 1, 'h3, 0))
+  `ASSERT(prio51_rd_A, rd_P(10'he4, reg2hw.prio51.q, 'hffffffff, 0))
+
+  // assertions for register: prio52
+  `ASSERT(prio52_wr_A, wr_P(10'he8, reg2hw.prio52.q, 1, 'h3, 0))
+  `ASSERT(prio52_rd_A, rd_P(10'he8, reg2hw.prio52.q, 'hffffffff, 0))
+
+  // assertions for register: prio53
+  `ASSERT(prio53_wr_A, wr_P(10'hec, reg2hw.prio53.q, 1, 'h3, 0))
+  `ASSERT(prio53_rd_A, rd_P(10'hec, reg2hw.prio53.q, 'hffffffff, 0))
+
+  // assertions for register: prio54
+  `ASSERT(prio54_wr_A, wr_P(10'hf0, reg2hw.prio54.q, 1, 'h3, 0))
+  `ASSERT(prio54_rd_A, rd_P(10'hf0, reg2hw.prio54.q, 'hffffffff, 0))
+
+  // assertions for register: prio55
+  `ASSERT(prio55_wr_A, wr_P(10'hf4, reg2hw.prio55.q, 1, 'h3, 0))
+  `ASSERT(prio55_rd_A, rd_P(10'hf4, reg2hw.prio55.q, 'hffffffff, 0))
+
+  // assertions for register: prio56
+  `ASSERT(prio56_wr_A, wr_P(10'hf8, reg2hw.prio56.q, 1, 'h3, 0))
+  `ASSERT(prio56_rd_A, rd_P(10'hf8, reg2hw.prio56.q, 'hffffffff, 0))
+
+  // assertions for register: prio57
+  `ASSERT(prio57_wr_A, wr_P(10'hfc, reg2hw.prio57.q, 1, 'h3, 0))
+  `ASSERT(prio57_rd_A, rd_P(10'hfc, reg2hw.prio57.q, 'hffffffff, 0))
+
+  // assertions for register: prio58
+  `ASSERT(prio58_wr_A, wr_P(10'h100, reg2hw.prio58.q, 1, 'h3, 0))
+  `ASSERT(prio58_rd_A, rd_P(10'h100, reg2hw.prio58.q, 'hffffffff, 0))
+
+  // assertions for register: prio59
+  `ASSERT(prio59_wr_A, wr_P(10'h104, reg2hw.prio59.q, 1, 'h3, 0))
+  `ASSERT(prio59_rd_A, rd_P(10'h104, reg2hw.prio59.q, 'hffffffff, 0))
+
+  // assertions for register: prio60
+  `ASSERT(prio60_wr_A, wr_P(10'h108, reg2hw.prio60.q, 1, 'h3, 0))
+  `ASSERT(prio60_rd_A, rd_P(10'h108, reg2hw.prio60.q, 'hffffffff, 0))
+
+  // assertions for register: prio61
+  `ASSERT(prio61_wr_A, wr_P(10'h10c, reg2hw.prio61.q, 1, 'h3, 0))
+  `ASSERT(prio61_rd_A, rd_P(10'h10c, reg2hw.prio61.q, 'hffffffff, 0))
+
+  // assertions for register: prio62
+  `ASSERT(prio62_wr_A, wr_P(10'h110, reg2hw.prio62.q, 1, 'h3, 0))
+  `ASSERT(prio62_rd_A, rd_P(10'h110, reg2hw.prio62.q, 'hffffffff, 0))
+
+  // assertions for register: prio63
+  `ASSERT(prio63_wr_A, wr_P(10'h114, reg2hw.prio63.q, 1, 'h3, 0))
+  `ASSERT(prio63_rd_A, rd_P(10'h114, reg2hw.prio63.q, 'hffffffff, 0))
+
+  // assertions for register: prio64
+  `ASSERT(prio64_wr_A, wr_P(10'h118, reg2hw.prio64.q, 1, 'h3, 0))
+  `ASSERT(prio64_rd_A, rd_P(10'h118, reg2hw.prio64.q, 'hffffffff, 0))
+
+  // assertions for register: prio65
+  `ASSERT(prio65_wr_A, wr_P(10'h11c, reg2hw.prio65.q, 1, 'h3, 0))
+  `ASSERT(prio65_rd_A, rd_P(10'h11c, reg2hw.prio65.q, 'hffffffff, 0))
+
+  // assertions for register: prio66
+  `ASSERT(prio66_wr_A, wr_P(10'h120, reg2hw.prio66.q, 1, 'h3, 0))
+  `ASSERT(prio66_rd_A, rd_P(10'h120, reg2hw.prio66.q, 'hffffffff, 0))
+
+  // assertions for register: prio67
+  `ASSERT(prio67_wr_A, wr_P(10'h124, reg2hw.prio67.q, 1, 'h3, 0))
+  `ASSERT(prio67_rd_A, rd_P(10'h124, reg2hw.prio67.q, 'hffffffff, 0))
+
+  // assertions for register: prio68
+  `ASSERT(prio68_wr_A, wr_P(10'h128, reg2hw.prio68.q, 1, 'h3, 0))
+  `ASSERT(prio68_rd_A, rd_P(10'h128, reg2hw.prio68.q, 'hffffffff, 0))
+
+  // assertions for register: prio69
+  `ASSERT(prio69_wr_A, wr_P(10'h12c, reg2hw.prio69.q, 1, 'h3, 0))
+  `ASSERT(prio69_rd_A, rd_P(10'h12c, reg2hw.prio69.q, 'hffffffff, 0))
+
+  // assertions for register: prio70
+  `ASSERT(prio70_wr_A, wr_P(10'h130, reg2hw.prio70.q, 1, 'h3, 0))
+  `ASSERT(prio70_rd_A, rd_P(10'h130, reg2hw.prio70.q, 'hffffffff, 0))
+
+  // assertions for register: prio71
+  `ASSERT(prio71_wr_A, wr_P(10'h134, reg2hw.prio71.q, 1, 'h3, 0))
+  `ASSERT(prio71_rd_A, rd_P(10'h134, reg2hw.prio71.q, 'hffffffff, 0))
+
+  // assertions for register: prio72
+  `ASSERT(prio72_wr_A, wr_P(10'h138, reg2hw.prio72.q, 1, 'h3, 0))
+  `ASSERT(prio72_rd_A, rd_P(10'h138, reg2hw.prio72.q, 'hffffffff, 0))
+
+  // assertions for register: prio73
+  `ASSERT(prio73_wr_A, wr_P(10'h13c, reg2hw.prio73.q, 1, 'h3, 0))
+  `ASSERT(prio73_rd_A, rd_P(10'h13c, reg2hw.prio73.q, 'hffffffff, 0))
+
+  // assertions for register: prio74
+  `ASSERT(prio74_wr_A, wr_P(10'h140, reg2hw.prio74.q, 1, 'h3, 0))
+  `ASSERT(prio74_rd_A, rd_P(10'h140, reg2hw.prio74.q, 'hffffffff, 0))
+
+  // assertions for register: prio75
+  `ASSERT(prio75_wr_A, wr_P(10'h144, reg2hw.prio75.q, 1, 'h3, 0))
+  `ASSERT(prio75_rd_A, rd_P(10'h144, reg2hw.prio75.q, 'hffffffff, 0))
+
+  // assertions for register: prio76
+  `ASSERT(prio76_wr_A, wr_P(10'h148, reg2hw.prio76.q, 1, 'h3, 0))
+  `ASSERT(prio76_rd_A, rd_P(10'h148, reg2hw.prio76.q, 'hffffffff, 0))
+
+  // assertions for register: prio77
+  `ASSERT(prio77_wr_A, wr_P(10'h14c, reg2hw.prio77.q, 1, 'h3, 0))
+  `ASSERT(prio77_rd_A, rd_P(10'h14c, reg2hw.prio77.q, 'hffffffff, 0))
+
+  // assertions for register: prio78
+  `ASSERT(prio78_wr_A, wr_P(10'h150, reg2hw.prio78.q, 1, 'h3, 0))
+  `ASSERT(prio78_rd_A, rd_P(10'h150, reg2hw.prio78.q, 'hffffffff, 0))
+
+  // assertions for register: prio79
+  `ASSERT(prio79_wr_A, wr_P(10'h154, reg2hw.prio79.q, 1, 'h3, 0))
+  `ASSERT(prio79_rd_A, rd_P(10'h154, reg2hw.prio79.q, 'hffffffff, 0))
+
+  // assertions for register: prio80
+  `ASSERT(prio80_wr_A, wr_P(10'h158, reg2hw.prio80.q, 1, 'h3, 0))
+  `ASSERT(prio80_rd_A, rd_P(10'h158, reg2hw.prio80.q, 'hffffffff, 0))
+
+  // assertions for register: prio81
+  `ASSERT(prio81_wr_A, wr_P(10'h15c, reg2hw.prio81.q, 1, 'h3, 0))
+  `ASSERT(prio81_rd_A, rd_P(10'h15c, reg2hw.prio81.q, 'hffffffff, 0))
+
+  // assertions for register: prio82
+  `ASSERT(prio82_wr_A, wr_P(10'h160, reg2hw.prio82.q, 1, 'h3, 0))
+  `ASSERT(prio82_rd_A, rd_P(10'h160, reg2hw.prio82.q, 'hffffffff, 0))
+
+  // define local fpv variable for multi-reg
+  logic [82:0] ie0_q_fpv;
+  for (genvar s = 0; s < 83; s++) begin : gen_ie0_q
+    assign ie0_q_fpv[((s+1)*1-1):s*1] = reg2hw.ie0[s].q;
+  end
+
+  // assertions for register: ie00
+  `ASSERT(ie00_wr_A, wr_P(10'h200, ie0_q_fpv[31:0], 1, 'hffffffff, 0))
+  `ASSERT(ie00_rd_A, rd_P(10'h200, ie0_q_fpv[31:0], 'hffffffff, 0))
+  // assertions for register: ie01
+  `ASSERT(ie01_wr_A, wr_P(10'h204, ie0_q_fpv[63:32], 1, 'hffffffff, 0))
+  `ASSERT(ie01_rd_A, rd_P(10'h204, ie0_q_fpv[63:32], 'hffffffff, 0))
+  // assertions for register: ie02
+  `ASSERT(ie02_wr_A, wr_P(10'h208, ie0_q_fpv[82:64], 1, 'h7ffff, 0))
+  `ASSERT(ie02_rd_A, rd_P(10'h208, ie0_q_fpv[82:64], 'h7ffff, 0))
+
+  // assertions for register: threshold0
+  `ASSERT(threshold0_wr_A, wr_P(10'h20c, reg2hw.threshold0.q, 1, 'h3, 0))
+  `ASSERT(threshold0_rd_A, rd_P(10'h20c, reg2hw.threshold0.q, 'hffffffff, 0))
+
+  // assertions for register: cc0
+  `ASSERT(cc0_wr_A, wr_ext_P(10'h210, reg2hw.cc0.q, 1, 'h7f, 0))
+  `ASSERT(cc0_rd_A, rd_ext_P(10'h210, hw2reg.cc0.d, 'hffffffff, 0))
+
+  // assertions for register: msip0
+  `ASSERT(msip0_wr_A, wr_P(10'h214, reg2hw.msip0.q, 1, 'h1, 0))
+  `ASSERT(msip0_rd_A, rd_P(10'h214, reg2hw.msip0.q, 'hffffffff, 0))
+
+
+endmodule
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index f5cbc53..08a3383 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -656,9 +656,10 @@
 
   aes u_aes (
 
-      // [0]: ctrl_err
-      .alert_tx_o  ( alert_tx[0:0] ),
-      .alert_rx_i  ( alert_rx[0:0] ),
+      // [0]: ctrl_err_update
+      // [1]: ctrl_err_storage
+      .alert_tx_o  ( alert_tx[1:0] ),
+      .alert_rx_i  ( alert_rx[1:0] ),
 
       // Inter-module signals
       .idle_o(aes_idle),
@@ -675,9 +676,9 @@
       .intr_fifo_empty_o (intr_hmac_fifo_empty),
       .intr_hmac_err_o   (intr_hmac_hmac_err),
 
-      // [1]: msg_push_sha_disabled
-      .alert_tx_o  ( alert_tx[1:1] ),
-      .alert_rx_i  ( alert_rx[1:1] ),
+      // [2]: msg_push_sha_disabled
+      .alert_tx_o  ( alert_tx[2:2] ),
+      .alert_rx_i  ( alert_rx[2:2] ),
 
       // Inter-module signals
       .tl_i(hmac_tl_req),
@@ -916,15 +917,15 @@
 
   sensor_ctrl u_sensor_ctrl (
 
-      // [2]: ast_alerts
       // [3]: ast_alerts
       // [4]: ast_alerts
       // [5]: ast_alerts
       // [6]: ast_alerts
       // [7]: ast_alerts
       // [8]: ast_alerts
-      .alert_tx_o  ( alert_tx[8:2] ),
-      .alert_rx_i  ( alert_rx[8:2] ),
+      // [9]: ast_alerts
+      .alert_tx_o  ( alert_tx[9:3] ),
+      .alert_rx_i  ( alert_rx[9:3] ),
 
       // Inter-module signals
       .ast_alert_i(sensor_ctrl_ast_alert_req_i),
@@ -942,11 +943,11 @@
       .intr_done_o (intr_otbn_done),
       .intr_err_o  (intr_otbn_err),
 
-      // [9]: imem_uncorrectable
-      // [10]: dmem_uncorrectable
-      // [11]: reg_uncorrectable
-      .alert_tx_o  ( alert_tx[11:9] ),
-      .alert_rx_i  ( alert_rx[11:9] ),
+      // [10]: imem_uncorrectable
+      // [11]: dmem_uncorrectable
+      // [12]: reg_uncorrectable
+      .alert_tx_o  ( alert_tx[12:10] ),
+      .alert_rx_i  ( alert_rx[12:10] ),
 
       // Inter-module signals
       .idle_o(),