diff --git a/hw/ip/clkmgr/data/clkmgr.sv.tpl b/hw/ip/clkmgr/data/clkmgr.sv.tpl
index 16b18b6..a1550cd 100644
--- a/hw/ip/clkmgr/data/clkmgr.sv.tpl
+++ b/hw/ip/clkmgr/data/clkmgr.sv.tpl
@@ -198,7 +198,7 @@
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.${k} = lc_ctrl_pkg::Off;
+  assign cg_en_o.${k.split('clk_')[-1]} = lc_ctrl_pkg::Off;
 % endfor
 
   ////////////////////////////////////////////////////
@@ -355,7 +355,7 @@
     .clk_i(clk_${v.src.name}_i),
     .rst_ni(rst_${v.src.name}_ni),
     .lc_en_i(((clk_${v.src.name}_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.${k})
+    .lc_en_o(cg_en_o.${k.split('clk_')[-1]})
   );
 % endfor
 
@@ -406,7 +406,7 @@
     .clk_i(clk_${v.src.name}_i),
     .rst_ni(rst_${v.src.name}_ni),
     .lc_en_i(((${k}_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.${k})
+    .lc_en_o(cg_en_o.${k.split('clk_')[-1]})
   );
 
 % endfor
@@ -469,7 +469,7 @@
     .clk_i(clk_${sig.src.name}_i),
     .rst_ni(rst_${sig.src.name}_ni),
     .lc_en_i(((${clk}_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.${clk})
+    .lc_en_o(cg_en_o.${clk.split('clk_')[-1]})
   );
 
 % endfor
diff --git a/hw/ip/clkmgr/data/clkmgr_pkg.sv.tpl b/hw/ip/clkmgr/data/clkmgr_pkg.sv.tpl
index 21e74e8..57700ed 100644
--- a/hw/ip/clkmgr/data/clkmgr_pkg.sv.tpl
+++ b/hw/ip/clkmgr/data/clkmgr_pkg.sv.tpl
@@ -25,7 +25,7 @@
   typedef struct packed {
 <% n_clk = 0 %>\
 % for clk in typed_clocks.all_clocks():
-    lc_ctrl_pkg::lc_tx_t ${clk};<% n_clk += 1 %>
+    lc_ctrl_pkg::lc_tx_t ${clk.split('clk_')[-1]};<% n_clk += 1 %>
 % endfor
   } clkmgr_cg_en_t;
 
diff --git a/hw/ip/rstmgr/data/rstmgr.sv.tpl b/hw/ip/rstmgr/data/rstmgr.sv.tpl
index 8cc3a1f..31fcf4f 100644
--- a/hw/ip/rstmgr/data/rstmgr.sv.tpl
+++ b/hw/ip/rstmgr/data/rstmgr.sv.tpl
@@ -96,7 +96,7 @@
         .clk_i(clk_aon_i),
         .rst_ni(rst_por_aon_n[i]),
         .lc_en_i(lc_ctrl_pkg::Off),
-        .lc_en_o(rst_en_o.rst_por_aon[i])
+        .lc_en_o(rst_en_o.por_aon[i])
       );
     end else begin : gen_rst_por_domain
       logic rst_por_aon_premux;
@@ -127,7 +127,7 @@
         .clk_i(clk_aon_i),
         .rst_ni(rst_por_aon_n[i]),
         .lc_en_i(lc_ctrl_pkg::Off),
-        .lc_en_o(rst_en_o.rst_por_aon[i])
+        .lc_en_o(rst_en_o.por_aon[i])
       );
     end
   end
@@ -322,7 +322,6 @@
   % for j, name in enumerate(names):
     % for domain in power_domains:
        % if domain in rst.domains:
-
   rstmgr_leaf_rst u_d${domain.lower()}_${name} (
     .clk_i,
     .rst_ni,
@@ -335,14 +334,14 @@
          % endif
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[${i}] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_${name}[Domain${domain}Sel]),
+    .rst_en_o(rst_en_o.${name}[Domain${domain}Sel]),
     .leaf_rst_o(resets_o.rst_${name}_n[Domain${domain}Sel]),
     .err_o(${err_prefix[j]}cnsty_chk_errs[${i}][Domain${domain}Sel])
   );
       % else:
   assign resets_o.rst_${name}_n[Domain${domain}Sel] = '0;
   assign ${err_prefix[j]}cnsty_chk_errs[${i}][Domain${domain}Sel] = '0;
-  assign rst_en_o.rst_${name}[Domain${domain}Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.${name}[Domain${domain}Sel] = lc_ctrl_pkg::On;
       % endif
     % endfor
     % if len(names) == 1:
diff --git a/hw/ip/rstmgr/data/rstmgr_pkg.sv.tpl b/hw/ip/rstmgr/data/rstmgr_pkg.sv.tpl
index fc9df7e..487b0b7 100644
--- a/hw/ip/rstmgr/data/rstmgr_pkg.sv.tpl
+++ b/hw/ip/rstmgr/data/rstmgr_pkg.sv.tpl
@@ -37,9 +37,9 @@
 <% n_rst = 0 %>\
 % for rst in output_rsts:
   % if rst.shadowed:
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_${rst.name}_shadowed;<% n_rst += 1 %>
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] ${rst.name}_shadowed;<% n_rst += 1 %>
   % endif
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_${rst.name};<% n_rst += 1 %>
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] ${rst.name};<% n_rst += 1 %>
 % endfor
   } rstmgr_rst_en_t;
 
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
index f4b6b03..811515b 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
@@ -228,70 +228,70 @@
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_io_div4_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.io_div4_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_aon_powerup_buf (
     .clk_i(clk_aon_i),
     .clk_o(clocks_o.clk_aon_powerup)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_aon_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.aon_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_main_powerup_buf (
     .clk_i(clk_main_i),
     .clk_o(clocks_o.clk_main_powerup)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_main_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.main_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_io_powerup_buf (
     .clk_i(clk_io_i),
     .clk_o(clocks_o.clk_io_powerup)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_io_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.io_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_usb_powerup_buf (
     .clk_i(clk_usb_i),
     .clk_o(clocks_o.clk_usb_powerup)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_usb_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.usb_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_io_div2_powerup_buf (
     .clk_i(clk_io_div2_i),
     .clk_o(clocks_o.clk_io_div2_powerup)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_io_div2_powerup = lc_ctrl_pkg::Off;
+  assign cg_en_o.io_div2_powerup = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_aon_infra_buf (
     .clk_i(clk_aon_i),
     .clk_o(clocks_o.clk_aon_infra)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_aon_infra = lc_ctrl_pkg::Off;
+  assign cg_en_o.aon_infra = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_aon_secure_buf (
     .clk_i(clk_aon_i),
     .clk_o(clocks_o.clk_aon_secure)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_aon_secure = lc_ctrl_pkg::Off;
+  assign cg_en_o.aon_secure = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_aon_peri_buf (
     .clk_i(clk_aon_i),
     .clk_o(clocks_o.clk_aon_peri)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_aon_peri = lc_ctrl_pkg::Off;
+  assign cg_en_o.aon_peri = lc_ctrl_pkg::Off;
   prim_clock_buf u_clk_aon_timers_buf (
     .clk_i(clk_aon_i),
     .clk_o(clocks_o.clk_aon_timers)
   );
 
   // clock gated indication for alert handler: these clocks are never gated.
-  assign cg_en_o.clk_aon_timers = lc_ctrl_pkg::Off;
+  assign cg_en_o.aon_timers = lc_ctrl_pkg::Off;
 
   ////////////////////////////////////////////////////
   // Root gating
@@ -643,7 +643,7 @@
     .clk_i(clk_io_div4_i),
     .rst_ni(rst_io_div4_ni),
     .lc_en_i(((clk_io_div4_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div4_infra)
+    .lc_en_o(cg_en_o.io_div4_infra)
   );
   assign clocks_o.clk_main_infra = clk_main_root;
 
@@ -652,7 +652,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_infra)
+    .lc_en_o(cg_en_o.main_infra)
   );
   assign clocks_o.clk_io_div4_secure = clk_io_div4_root;
 
@@ -661,7 +661,7 @@
     .clk_i(clk_io_div4_i),
     .rst_ni(rst_io_div4_ni),
     .lc_en_i(((clk_io_div4_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div4_secure)
+    .lc_en_o(cg_en_o.io_div4_secure)
   );
   assign clocks_o.clk_main_secure = clk_main_root;
 
@@ -670,7 +670,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_secure)
+    .lc_en_o(cg_en_o.main_secure)
   );
   assign clocks_o.clk_usb_secure = clk_usb_root;
 
@@ -679,7 +679,7 @@
     .clk_i(clk_usb_i),
     .rst_ni(rst_usb_ni),
     .lc_en_i(((clk_usb_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_usb_secure)
+    .lc_en_o(cg_en_o.usb_secure)
   );
   assign clocks_o.clk_io_div4_timers = clk_io_div4_root;
 
@@ -688,7 +688,7 @@
     .clk_i(clk_io_div4_i),
     .rst_ni(rst_io_div4_ni),
     .lc_en_i(((clk_io_div4_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div4_timers)
+    .lc_en_o(cg_en_o.io_div4_timers)
   );
 
   ////////////////////////////////////////////////////
@@ -738,7 +738,7 @@
     .clk_i(clk_io_div4_i),
     .rst_ni(rst_io_div4_ni),
     .lc_en_i(((clk_io_div4_peri_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div4_peri)
+    .lc_en_o(cg_en_o.io_div4_peri)
   );
 
   prim_flop_2sync #(
@@ -779,7 +779,7 @@
     .clk_i(clk_io_div2_i),
     .rst_ni(rst_io_div2_ni),
     .lc_en_i(((clk_io_div2_peri_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div2_peri)
+    .lc_en_o(cg_en_o.io_div2_peri)
   );
 
   prim_flop_2sync #(
@@ -820,7 +820,7 @@
     .clk_i(clk_io_i),
     .rst_ni(rst_io_ni),
     .lc_en_i(((clk_io_peri_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_peri)
+    .lc_en_o(cg_en_o.io_peri)
   );
 
   prim_flop_2sync #(
@@ -861,7 +861,7 @@
     .clk_i(clk_usb_i),
     .rst_ni(rst_usb_ni),
     .lc_en_i(((clk_usb_peri_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_usb_peri)
+    .lc_en_o(cg_en_o.usb_peri)
   );
 
 
@@ -928,7 +928,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_aes_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_aes)
+    .lc_en_o(cg_en_o.main_aes)
   );
 
   assign clk_main_hmac_en = clk_main_hmac_hint | ~idle_i[HintMainHmac];
@@ -977,7 +977,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_hmac_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_hmac)
+    .lc_en_o(cg_en_o.main_hmac)
   );
 
   assign clk_main_kmac_en = clk_main_kmac_hint | ~idle_i[HintMainKmac];
@@ -1026,7 +1026,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_kmac_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_kmac)
+    .lc_en_o(cg_en_o.main_kmac)
   );
 
   assign clk_main_otbn_en = clk_main_otbn_hint | ~idle_i[HintMainOtbn];
@@ -1075,7 +1075,7 @@
     .clk_i(clk_main_i),
     .rst_ni(rst_main_ni),
     .lc_en_i(((clk_main_otbn_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_main_otbn)
+    .lc_en_o(cg_en_o.main_otbn)
   );
 
   assign clk_io_div4_otbn_en = clk_io_div4_otbn_hint | ~idle_i[HintIoDiv4Otbn];
@@ -1124,7 +1124,7 @@
     .clk_i(clk_io_div4_i),
     .rst_ni(rst_io_div4_ni),
     .lc_en_i(((clk_io_div4_otbn_combined_en) ? lc_ctrl_pkg::Off : lc_ctrl_pkg::On)),
-    .lc_en_o(cg_en_o.clk_io_div4_otbn)
+    .lc_en_o(cg_en_o.io_div4_otbn)
   );
 
 
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
index c78c40d..c2bf911 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
@@ -51,31 +51,31 @@
 
   // clock gating indication for alert handler
   typedef struct packed {
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_aon_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_main_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_io_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_usb_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_io_div2_powerup;
-    lc_ctrl_pkg::lc_tx_t clk_aon_infra;
-    lc_ctrl_pkg::lc_tx_t clk_aon_secure;
-    lc_ctrl_pkg::lc_tx_t clk_aon_peri;
-    lc_ctrl_pkg::lc_tx_t clk_aon_timers;
-    lc_ctrl_pkg::lc_tx_t clk_main_aes;
-    lc_ctrl_pkg::lc_tx_t clk_main_hmac;
-    lc_ctrl_pkg::lc_tx_t clk_main_kmac;
-    lc_ctrl_pkg::lc_tx_t clk_main_otbn;
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_otbn;
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_infra;
-    lc_ctrl_pkg::lc_tx_t clk_main_infra;
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_secure;
-    lc_ctrl_pkg::lc_tx_t clk_main_secure;
-    lc_ctrl_pkg::lc_tx_t clk_usb_secure;
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_timers;
-    lc_ctrl_pkg::lc_tx_t clk_io_div4_peri;
-    lc_ctrl_pkg::lc_tx_t clk_io_div2_peri;
-    lc_ctrl_pkg::lc_tx_t clk_io_peri;
-    lc_ctrl_pkg::lc_tx_t clk_usb_peri;
+    lc_ctrl_pkg::lc_tx_t io_div4_powerup;
+    lc_ctrl_pkg::lc_tx_t aon_powerup;
+    lc_ctrl_pkg::lc_tx_t main_powerup;
+    lc_ctrl_pkg::lc_tx_t io_powerup;
+    lc_ctrl_pkg::lc_tx_t usb_powerup;
+    lc_ctrl_pkg::lc_tx_t io_div2_powerup;
+    lc_ctrl_pkg::lc_tx_t aon_infra;
+    lc_ctrl_pkg::lc_tx_t aon_secure;
+    lc_ctrl_pkg::lc_tx_t aon_peri;
+    lc_ctrl_pkg::lc_tx_t aon_timers;
+    lc_ctrl_pkg::lc_tx_t main_aes;
+    lc_ctrl_pkg::lc_tx_t main_hmac;
+    lc_ctrl_pkg::lc_tx_t main_kmac;
+    lc_ctrl_pkg::lc_tx_t main_otbn;
+    lc_ctrl_pkg::lc_tx_t io_div4_otbn;
+    lc_ctrl_pkg::lc_tx_t io_div4_infra;
+    lc_ctrl_pkg::lc_tx_t main_infra;
+    lc_ctrl_pkg::lc_tx_t io_div4_secure;
+    lc_ctrl_pkg::lc_tx_t main_secure;
+    lc_ctrl_pkg::lc_tx_t usb_secure;
+    lc_ctrl_pkg::lc_tx_t io_div4_timers;
+    lc_ctrl_pkg::lc_tx_t io_div4_peri;
+    lc_ctrl_pkg::lc_tx_t io_div2_peri;
+    lc_ctrl_pkg::lc_tx_t io_peri;
+    lc_ctrl_pkg::lc_tx_t usb_peri;
   } clkmgr_cg_en_t;
 
   parameter int NumOutputClk = 25;
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
index 682fc5b..3eabb8a 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
@@ -102,7 +102,7 @@
         .clk_i(clk_aon_i),
         .rst_ni(rst_por_aon_n[i]),
         .lc_en_i(lc_ctrl_pkg::Off),
-        .lc_en_o(rst_en_o.rst_por_aon[i])
+        .lc_en_o(rst_en_o.por_aon[i])
       );
     end else begin : gen_rst_por_domain
       logic rst_por_aon_premux;
@@ -133,7 +133,7 @@
         .clk_i(clk_aon_i),
         .rst_ni(rst_por_aon_n[i]),
         .lc_en_i(lc_ctrl_pkg::Off),
-        .lc_en_o(rst_en_o.rst_por_aon[i])
+        .lc_en_o(rst_en_o.por_aon[i])
       );
     end
   end
@@ -317,7 +317,6 @@
   // Generating resets for por
   // Power Domains: ['Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_por (
     .clk_i,
     .rst_ni,
@@ -326,19 +325,18 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[0] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por[DomainAonSel]),
+    .rst_en_o(rst_en_o.por[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_por_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[0][DomainAonSel])
   );
   assign resets_o.rst_por_n[Domain0Sel] = '0;
   assign cnsty_chk_errs[0][Domain0Sel] = '0;
-  assign rst_en_o.rst_por[Domain0Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.por[Domain0Sel] = lc_ctrl_pkg::On;
   assign shadow_cnsty_chk_errs[0] = '0;
 
   // Generating resets for por_io
   // Power Domains: ['Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_por_io (
     .clk_i,
     .rst_ni,
@@ -347,19 +345,18 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[1] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por_io[DomainAonSel]),
+    .rst_en_o(rst_en_o.por_io[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_por_io_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[1][DomainAonSel])
   );
   assign resets_o.rst_por_io_n[Domain0Sel] = '0;
   assign cnsty_chk_errs[1][Domain0Sel] = '0;
-  assign rst_en_o.rst_por_io[Domain0Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.por_io[Domain0Sel] = lc_ctrl_pkg::On;
   assign shadow_cnsty_chk_errs[1] = '0;
 
   // Generating resets for por_io_div2
   // Power Domains: ['Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_por_io_div2 (
     .clk_i,
     .rst_ni,
@@ -368,19 +365,18 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[2] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por_io_div2[DomainAonSel]),
+    .rst_en_o(rst_en_o.por_io_div2[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_por_io_div2_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[2][DomainAonSel])
   );
   assign resets_o.rst_por_io_div2_n[Domain0Sel] = '0;
   assign cnsty_chk_errs[2][Domain0Sel] = '0;
-  assign rst_en_o.rst_por_io_div2[Domain0Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.por_io_div2[Domain0Sel] = lc_ctrl_pkg::On;
   assign shadow_cnsty_chk_errs[2] = '0;
 
   // Generating resets for por_io_div4
   // Power Domains: ['Aon', '0']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_por_io_div4 (
     .clk_i,
     .rst_ni,
@@ -389,11 +385,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[3] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por_io_div4[DomainAonSel]),
+    .rst_en_o(rst_en_o.por_io_div4[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_por_io_div4_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[3][DomainAonSel])
   );
-
   rstmgr_leaf_rst u_d0_por_io_div4 (
     .clk_i,
     .rst_ni,
@@ -402,7 +397,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[3] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por_io_div4[Domain0Sel]),
+    .rst_en_o(rst_en_o.por_io_div4[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_por_io_div4_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[3][Domain0Sel])
   );
@@ -411,7 +406,6 @@
   // Generating resets for por_usb
   // Power Domains: ['Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_por_usb (
     .clk_i,
     .rst_ni,
@@ -420,13 +414,13 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[4] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_por_usb[DomainAonSel]),
+    .rst_en_o(rst_en_o.por_usb[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_por_usb_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[4][DomainAonSel])
   );
   assign resets_o.rst_por_usb_n[Domain0Sel] = '0;
   assign cnsty_chk_errs[4][Domain0Sel] = '0;
-  assign rst_en_o.rst_por_usb[Domain0Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.por_usb[Domain0Sel] = lc_ctrl_pkg::On;
   assign shadow_cnsty_chk_errs[4] = '0;
 
   // Generating resets for lc
@@ -434,8 +428,7 @@
   // Shadowed: True
   assign resets_o.rst_lc_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[5][DomainAonSel] = '0;
-  assign rst_en_o.rst_lc[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.lc[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_lc (
     .clk_i,
     .rst_ni,
@@ -444,14 +437,13 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[5] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc[Domain0Sel]),
+    .rst_en_o(rst_en_o.lc[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_lc_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[5][Domain0Sel])
   );
   assign resets_o.rst_lc_shadowed_n[DomainAonSel] = '0;
   assign shadow_cnsty_chk_errs[5][DomainAonSel] = '0;
-  assign rst_en_o.rst_lc_shadowed[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.lc_shadowed[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_lc_shadowed (
     .clk_i,
     .rst_ni,
@@ -460,7 +452,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[5] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_shadowed[Domain0Sel]),
+    .rst_en_o(rst_en_o.lc_shadowed[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_lc_shadowed_n[Domain0Sel]),
     .err_o(shadow_cnsty_chk_errs[5][Domain0Sel])
   );
@@ -468,7 +460,6 @@
   // Generating resets for lc_io_div4
   // Power Domains: ['0', 'Aon']
   // Shadowed: True
-
   rstmgr_leaf_rst u_daon_lc_io_div4 (
     .clk_i,
     .rst_ni,
@@ -477,11 +468,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[6] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_io_div4[DomainAonSel]),
+    .rst_en_o(rst_en_o.lc_io_div4[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_lc_io_div4_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[6][DomainAonSel])
   );
-
   rstmgr_leaf_rst u_d0_lc_io_div4 (
     .clk_i,
     .rst_ni,
@@ -490,11 +480,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[6] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_io_div4[Domain0Sel]),
+    .rst_en_o(rst_en_o.lc_io_div4[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_lc_io_div4_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[6][Domain0Sel])
   );
-
   rstmgr_leaf_rst u_daon_lc_io_div4_shadowed (
     .clk_i,
     .rst_ni,
@@ -503,11 +492,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[6] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_io_div4_shadowed[DomainAonSel]),
+    .rst_en_o(rst_en_o.lc_io_div4_shadowed[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_lc_io_div4_shadowed_n[DomainAonSel]),
     .err_o(shadow_cnsty_chk_errs[6][DomainAonSel])
   );
-
   rstmgr_leaf_rst u_d0_lc_io_div4_shadowed (
     .clk_i,
     .rst_ni,
@@ -516,7 +504,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[6] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_io_div4_shadowed[Domain0Sel]),
+    .rst_en_o(rst_en_o.lc_io_div4_shadowed[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_lc_io_div4_shadowed_n[Domain0Sel]),
     .err_o(shadow_cnsty_chk_errs[6][Domain0Sel])
   );
@@ -524,7 +512,6 @@
   // Generating resets for lc_aon
   // Power Domains: ['Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_lc_aon (
     .clk_i,
     .rst_ni,
@@ -533,13 +520,13 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[7] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_lc_aon[DomainAonSel]),
+    .rst_en_o(rst_en_o.lc_aon[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_lc_aon_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[7][DomainAonSel])
   );
   assign resets_o.rst_lc_aon_n[Domain0Sel] = '0;
   assign cnsty_chk_errs[7][Domain0Sel] = '0;
-  assign rst_en_o.rst_lc_aon[Domain0Sel] = lc_ctrl_pkg::On;
+  assign rst_en_o.lc_aon[Domain0Sel] = lc_ctrl_pkg::On;
   assign shadow_cnsty_chk_errs[7] = '0;
 
   // Generating resets for sys
@@ -547,8 +534,7 @@
   // Shadowed: True
   assign resets_o.rst_sys_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[8][DomainAonSel] = '0;
-  assign rst_en_o.rst_sys[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.sys[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_sys (
     .clk_i,
     .rst_ni,
@@ -557,14 +543,13 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[8] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys[Domain0Sel]),
+    .rst_en_o(rst_en_o.sys[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_sys_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[8][Domain0Sel])
   );
   assign resets_o.rst_sys_shadowed_n[DomainAonSel] = '0;
   assign shadow_cnsty_chk_errs[8][DomainAonSel] = '0;
-  assign rst_en_o.rst_sys_shadowed[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.sys_shadowed[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_sys_shadowed (
     .clk_i,
     .rst_ni,
@@ -573,7 +558,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[8] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys_shadowed[Domain0Sel]),
+    .rst_en_o(rst_en_o.sys_shadowed[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_sys_shadowed_n[Domain0Sel]),
     .err_o(shadow_cnsty_chk_errs[8][Domain0Sel])
   );
@@ -581,7 +566,6 @@
   // Generating resets for sys_io_div4
   // Power Domains: ['0', 'Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_sys_io_div4 (
     .clk_i,
     .rst_ni,
@@ -590,11 +574,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[9] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys_io_div4[DomainAonSel]),
+    .rst_en_o(rst_en_o.sys_io_div4[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_sys_io_div4_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[9][DomainAonSel])
   );
-
   rstmgr_leaf_rst u_d0_sys_io_div4 (
     .clk_i,
     .rst_ni,
@@ -603,7 +586,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[9] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys_io_div4[Domain0Sel]),
+    .rst_en_o(rst_en_o.sys_io_div4[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_sys_io_div4_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[9][Domain0Sel])
   );
@@ -612,7 +595,6 @@
   // Generating resets for sys_aon
   // Power Domains: ['0', 'Aon']
   // Shadowed: False
-
   rstmgr_leaf_rst u_daon_sys_aon (
     .clk_i,
     .rst_ni,
@@ -621,11 +603,10 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[10] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys_aon[DomainAonSel]),
+    .rst_en_o(rst_en_o.sys_aon[DomainAonSel]),
     .leaf_rst_o(resets_o.rst_sys_aon_n[DomainAonSel]),
     .err_o(cnsty_chk_errs[10][DomainAonSel])
   );
-
   rstmgr_leaf_rst u_d0_sys_aon (
     .clk_i,
     .rst_ni,
@@ -634,7 +615,7 @@
     .sw_rst_req_ni(1'b1),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[10] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_sys_aon[Domain0Sel]),
+    .rst_en_o(rst_en_o.sys_aon[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_sys_aon_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[10][Domain0Sel])
   );
@@ -645,8 +626,7 @@
   // Shadowed: False
   assign resets_o.rst_spi_device_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[11][DomainAonSel] = '0;
-  assign rst_en_o.rst_spi_device[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.spi_device[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_spi_device (
     .clk_i,
     .rst_ni,
@@ -655,7 +635,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[SPI_DEVICE]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[11] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_spi_device[Domain0Sel]),
+    .rst_en_o(rst_en_o.spi_device[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_spi_device_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[11][Domain0Sel])
   );
@@ -666,8 +646,7 @@
   // Shadowed: False
   assign resets_o.rst_spi_host0_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[12][DomainAonSel] = '0;
-  assign rst_en_o.rst_spi_host0[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.spi_host0[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_spi_host0 (
     .clk_i,
     .rst_ni,
@@ -676,7 +655,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[SPI_HOST0]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[12] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_spi_host0[Domain0Sel]),
+    .rst_en_o(rst_en_o.spi_host0[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_spi_host0_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[12][Domain0Sel])
   );
@@ -687,8 +666,7 @@
   // Shadowed: False
   assign resets_o.rst_spi_host0_core_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[13][DomainAonSel] = '0;
-  assign rst_en_o.rst_spi_host0_core[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.spi_host0_core[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_spi_host0_core (
     .clk_i,
     .rst_ni,
@@ -697,7 +675,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[SPI_HOST0_CORE]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[13] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_spi_host0_core[Domain0Sel]),
+    .rst_en_o(rst_en_o.spi_host0_core[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_spi_host0_core_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[13][Domain0Sel])
   );
@@ -708,8 +686,7 @@
   // Shadowed: False
   assign resets_o.rst_spi_host1_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[14][DomainAonSel] = '0;
-  assign rst_en_o.rst_spi_host1[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.spi_host1[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_spi_host1 (
     .clk_i,
     .rst_ni,
@@ -718,7 +695,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[SPI_HOST1]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[14] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_spi_host1[Domain0Sel]),
+    .rst_en_o(rst_en_o.spi_host1[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_spi_host1_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[14][Domain0Sel])
   );
@@ -729,8 +706,7 @@
   // Shadowed: False
   assign resets_o.rst_spi_host1_core_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[15][DomainAonSel] = '0;
-  assign rst_en_o.rst_spi_host1_core[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.spi_host1_core[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_spi_host1_core (
     .clk_i,
     .rst_ni,
@@ -739,7 +715,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[SPI_HOST1_CORE]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[15] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_spi_host1_core[Domain0Sel]),
+    .rst_en_o(rst_en_o.spi_host1_core[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_spi_host1_core_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[15][Domain0Sel])
   );
@@ -750,8 +726,7 @@
   // Shadowed: False
   assign resets_o.rst_usb_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[16][DomainAonSel] = '0;
-  assign rst_en_o.rst_usb[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.usb[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_usb (
     .clk_i,
     .rst_ni,
@@ -760,7 +735,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[USB]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[16] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_usb[Domain0Sel]),
+    .rst_en_o(rst_en_o.usb[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_usb_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[16][Domain0Sel])
   );
@@ -771,8 +746,7 @@
   // Shadowed: False
   assign resets_o.rst_usbif_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[17][DomainAonSel] = '0;
-  assign rst_en_o.rst_usbif[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.usbif[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_usbif (
     .clk_i,
     .rst_ni,
@@ -781,7 +755,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[USBIF]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[17] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_usbif[Domain0Sel]),
+    .rst_en_o(rst_en_o.usbif[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_usbif_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[17][Domain0Sel])
   );
@@ -792,8 +766,7 @@
   // Shadowed: False
   assign resets_o.rst_i2c0_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[18][DomainAonSel] = '0;
-  assign rst_en_o.rst_i2c0[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.i2c0[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_i2c0 (
     .clk_i,
     .rst_ni,
@@ -802,7 +775,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[I2C0]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[18] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_i2c0[Domain0Sel]),
+    .rst_en_o(rst_en_o.i2c0[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_i2c0_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[18][Domain0Sel])
   );
@@ -813,8 +786,7 @@
   // Shadowed: False
   assign resets_o.rst_i2c1_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[19][DomainAonSel] = '0;
-  assign rst_en_o.rst_i2c1[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.i2c1[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_i2c1 (
     .clk_i,
     .rst_ni,
@@ -823,7 +795,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[I2C1]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[19] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_i2c1[Domain0Sel]),
+    .rst_en_o(rst_en_o.i2c1[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_i2c1_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[19][Domain0Sel])
   );
@@ -834,8 +806,7 @@
   // Shadowed: False
   assign resets_o.rst_i2c2_n[DomainAonSel] = '0;
   assign cnsty_chk_errs[20][DomainAonSel] = '0;
-  assign rst_en_o.rst_i2c2[DomainAonSel] = lc_ctrl_pkg::On;
-
+  assign rst_en_o.i2c2[DomainAonSel] = lc_ctrl_pkg::On;
   rstmgr_leaf_rst u_d0_i2c2 (
     .clk_i,
     .rst_ni,
@@ -844,7 +815,7 @@
     .sw_rst_req_ni(sw_rst_ctrl_n[I2C2]),
     .scan_rst_ni,
     .scan_sel(leaf_rst_scanmode[20] == lc_ctrl_pkg::On),
-    .rst_en_o(rst_en_o.rst_i2c2[Domain0Sel]),
+    .rst_en_o(rst_en_o.i2c2[Domain0Sel]),
     .leaf_rst_o(resets_o.rst_i2c2_n[Domain0Sel]),
     .err_o(cnsty_chk_errs[20][Domain0Sel])
   );
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
index 880d319..fd7d7d1 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
@@ -65,31 +65,31 @@
 
   // reset indication for alert handler
   typedef struct packed {
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por_aon;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por_io;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por_io_div2;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por_io_div4;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_por_usb;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_lc_shadowed;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_lc;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_lc_io_div4_shadowed;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_lc_io_div4;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_lc_aon;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_sys_shadowed;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_sys;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_sys_io_div4;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_sys_aon;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_spi_device;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_spi_host0;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_spi_host0_core;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_spi_host1;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_spi_host1_core;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_usb;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_usbif;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_i2c0;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_i2c1;
-    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] rst_i2c2;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por_aon;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por_io;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por_io_div2;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por_io_div4;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] por_usb;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] lc_shadowed;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] lc;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] lc_io_div4_shadowed;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] lc_io_div4;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] lc_aon;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] sys_shadowed;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] sys;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] sys_io_div4;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] sys_aon;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] spi_device;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] spi_host0;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] spi_host0_core;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] spi_host1;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] spi_host1_core;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] usb;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] usbif;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] i2c0;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] i2c1;
+    lc_ctrl_pkg::lc_tx_t [PowerDomains-1:0] i2c2;
   } rstmgr_rst_en_t;
 
   parameter int NumOutputRst = 25 * PowerDomains;
