[pwrmgr] Update example hjson and reg_top/pkg files

Signed-off-by: Michael Schaffner <msf@opentitan.org>
diff --git a/hw/ip/pwrmgr/data/pwrmgr.hjson b/hw/ip/pwrmgr/data/pwrmgr.hjson
index c32ed85..9461524 100644
--- a/hw/ip/pwrmgr/data/pwrmgr.hjson
+++ b/hw/ip/pwrmgr/data/pwrmgr.hjson
@@ -1,6 +1,12 @@
 // Copyright lowRISC contributors.
 // Licensed under the Apache License, Version 2.0, see LICENSE for details.
 // SPDX-License-Identifier: Apache-2.0
+//
+// ------------------- W A R N I N G: A U T O - G E N E R A T E D   C O D E !! -------------------//
+// PLEASE DO NOT HAND-EDIT THIS FILE. IT HAS BEEN AUTO-GENERATED WITH THE FOLLOWING COMMAND:
+// Copyright lowRISC contributors.
+// Licensed under the Apache License, Version 2.0, see LICENSE for details.
+// SPDX-License-Identifier: Apache-2.0
 { name: "PWRMGR",
   clock_primary: "clk_i",
   other_clock_list: [ "clk_slow_i" ]
@@ -49,9 +55,9 @@
     },
 
     { struct:  "pwr_flash",
-      type:    "uni",
+      type:    "req_rsp",
       name:    "pwr_flash",
-      act:     "rcv",
+      act:     "req",
       package: "pwrmgr_pkg",
     },
 
@@ -63,7 +69,7 @@
     },
 
     { struct:  "logic",
-      width:   3,
+      width:   1,
       type:    "uni",
       name:    "wakeups",
       act:     "rcv",
@@ -71,7 +77,7 @@
     },
 
     { struct:  "logic",
-      width:   2,
+      width:   1,
       type:    "uni",
       name:    "rstreqs",
       act:     "rcv",
@@ -84,7 +90,13 @@
     { name: "NumWkups",
       desc: "Number of wakeups",
       type: "int",
-      default: "16",
+      default: "1",
+      local: "true"
+    },
+    { name: "NumRstReqs",
+      desc: "Number of reset requets",
+      type: "int",
+      default: "1",
       local: "true"
     },
   ],
@@ -200,6 +212,46 @@
         },
 
         { bits: "6",
+          name: "USB_CLK_EN_LP",
+          desc: "USB clock enable during low power state",
+          resval: "0",
+          enum: [
+            { value: "0",
+              name: "Disabled",
+              desc: '''
+                USB clock disabled during low power state
+                '''
+            },
+            { value: "1",
+              name: "Enabled",
+              desc: '''
+                USB clock enabled during low power state
+                '''
+            },
+          ]
+        },
+
+        { bits: "7",
+          name: "USB_CLK_EN_ACTIVE",
+          desc: "USB clock enable during active power state",
+          resval: "1"
+          enum: [
+            { value: "0",
+              name: "Disabled",
+              desc: '''
+                USB clock disabled during active power state
+                '''
+            },
+            { value: "1",
+              name: "Enabled",
+              desc: '''
+                USB clock enabled during active power state
+                '''
+            },
+          ]
+        },
+
+        { bits: "8",
           name: "MAIN_PD_N",
           desc: "Active low, main power domain power down",
           resval: "1"
@@ -220,6 +272,8 @@
             },
           ]
         },
+
+
       ],
     },
 
@@ -294,7 +348,7 @@
       { name: "WAKE_STATUS",
         desc: "A read only register of all current wake requests post enable mask",
         swaccess: "ro",
-        hwaccess: "none",
+        hwaccess: "hwo",
         resval: "0"
         cname: "wake_status",
         count: "NumWkups",
@@ -325,36 +379,44 @@
       ]
     },
 
-    { name: "RESET_EN",
-      desc: "Bit mask for enabled resets",
-      swaccess: "rw",
-      hwaccess: "hro",
-      regwen: "RESET_EN_REGWEN",
-      resval: "0"
-      fields: [
-        { bits: "1:0",
-          name: "EN",
-          desc: '''
-            Whenever a particular bit is set to 1, that reset request is enabled.
-            Whenever a particular bit is set to 0, that reset request cannot reset the device.
-          ''',
-        },
-      ]
+    { multireg:
+      { name: "RESET_EN",
+        desc: "Bit mask for enabled reset requests",
+        swaccess: "rw",
+        hwaccess: "hro",
+        regwen: "RESET_EN_REGWEN",
+        resval: "0"
+        cname: "rstreq_en",
+        count: "NumRstReqs"
+        fields: [
+          { bits: "0",
+            name: "EN",
+            desc: '''
+              Whenever a particular bit is set to 1, that reset request is enabled.
+              Whenever a particular bit is set to 0, that reset request cannot reset the device.
+            ''',
+          },
+        ]
+      },
     },
 
-    { name: "RESET_STATUS",
-      desc: "A read only register of all current reset requests post enable mask",
-      swaccess: "ro",
-      hwaccess: "none",
-      resval: "0"
-      fields: [
-        { bits: "1:0",
-          name: "VAL",
-          desc: '''
-            Current value of reset request
-          ''',
-        },
-      ]
+    { multireg:
+      { name: "RESET_STATUS",
+        desc: "A read only register of all current reset requests post enable mask",
+        swaccess: "ro",
+        hwaccess: "hwo",
+        resval: "0"
+        cname: "reset_status",
+        count: "NumRstReqs",
+        fields: [
+          { bits: "0",
+            name: "VAL",
+            desc: '''
+              Current value of reset request
+            ''',
+          },
+        ]
+      },
     },
 
     { name: "WAKE_INFO_CAPTURE_DIS",
@@ -387,11 +449,11 @@
       hwqe: "true",
       resval: "0"
       fields: [
-        { bits: "15:0",
+        { bits: "0:0",
           name: "REASONS",
           desc: "Various peripheral wake reasons"
         },
-        { bits: "16",
+        { bits: "1",
           name: "FALL_THROUGH",
           desc: '''
             The fall through wakeup reason indicates that despite setting a WFI and providing a low power
@@ -400,7 +462,7 @@
             The power manager detects this condition, halts low power entry and reports as a wakeup reason
           ''',
         },
-        { bits: "17",
+        { bits: "2",
           name: "ABORT",
           desc: '''
             The abort wakeup reason indicates that despite setting a WFI and providing a low power
@@ -417,4 +479,3 @@
     },
   ]
 }
-
diff --git a/hw/ip/pwrmgr/rtl/pwrmgr_reg_pkg.sv b/hw/ip/pwrmgr/rtl/pwrmgr_reg_pkg.sv
index 4a6a9d7..18ee109 100644
--- a/hw/ip/pwrmgr/rtl/pwrmgr_reg_pkg.sv
+++ b/hw/ip/pwrmgr/rtl/pwrmgr_reg_pkg.sv
@@ -7,7 +7,8 @@
 package pwrmgr_reg_pkg;
 
   // Param list
-  parameter int NumWkups = 16;
+  parameter int NumWkups = 1;
+  parameter int NumRstReqs = 1;
 
   ////////////////////////////
   // Typedefs for registers //
@@ -37,6 +38,12 @@
     } io_clk_en;
     struct packed {
       logic        q;
+    } usb_clk_en_lp;
+    struct packed {
+      logic        q;
+    } usb_clk_en_active;
+    struct packed {
+      logic        q;
     } main_pd_n;
   } pwrmgr_reg2hw_control_reg_t;
 
@@ -50,8 +57,8 @@
   } pwrmgr_reg2hw_wakeup_en_mreg_t;
 
   typedef struct packed {
-    logic [1:0]  q;
-  } pwrmgr_reg2hw_reset_en_reg_t;
+    logic        q;
+  } pwrmgr_reg2hw_reset_en_mreg_t;
 
   typedef struct packed {
     logic        q;
@@ -59,7 +66,7 @@
 
   typedef struct packed {
     struct packed {
-      logic [15:0] q;
+      logic        q;
       logic        qe;
     } reasons;
     struct packed {
@@ -95,8 +102,18 @@
   } pwrmgr_hw2reg_cfg_cdc_sync_reg_t;
 
   typedef struct packed {
+    logic        d;
+    logic        de;
+  } pwrmgr_hw2reg_wake_status_mreg_t;
+
+  typedef struct packed {
+    logic        d;
+    logic        de;
+  } pwrmgr_hw2reg_reset_status_mreg_t;
+
+  typedef struct packed {
     struct packed {
-      logic [15:0] d;
+      logic        d;
     } reasons;
     struct packed {
       logic        d;
@@ -111,26 +128,28 @@
   // Register to internal design logic //
   ///////////////////////////////////////
   typedef struct packed {
-    pwrmgr_reg2hw_intr_state_reg_t intr_state; // [49:49]
-    pwrmgr_reg2hw_intr_enable_reg_t intr_enable; // [48:48]
-    pwrmgr_reg2hw_intr_test_reg_t intr_test; // [47:46]
-    pwrmgr_reg2hw_control_reg_t control; // [45:42]
-    pwrmgr_reg2hw_cfg_cdc_sync_reg_t cfg_cdc_sync; // [41:40]
-    pwrmgr_reg2hw_wakeup_en_mreg_t [15:0] wakeup_en; // [39:24]
-    pwrmgr_reg2hw_reset_en_reg_t reset_en; // [23:22]
-    pwrmgr_reg2hw_wake_info_capture_dis_reg_t wake_info_capture_dis; // [21:21]
-    pwrmgr_reg2hw_wake_info_reg_t wake_info; // [20:0]
+    pwrmgr_reg2hw_intr_state_reg_t intr_state; // [20:20]
+    pwrmgr_reg2hw_intr_enable_reg_t intr_enable; // [19:19]
+    pwrmgr_reg2hw_intr_test_reg_t intr_test; // [18:17]
+    pwrmgr_reg2hw_control_reg_t control; // [16:11]
+    pwrmgr_reg2hw_cfg_cdc_sync_reg_t cfg_cdc_sync; // [10:9]
+    pwrmgr_reg2hw_wakeup_en_mreg_t [0:0] wakeup_en; // [8:8]
+    pwrmgr_reg2hw_reset_en_mreg_t [0:0] reset_en; // [7:7]
+    pwrmgr_reg2hw_wake_info_capture_dis_reg_t wake_info_capture_dis; // [6:6]
+    pwrmgr_reg2hw_wake_info_reg_t wake_info; // [5:0]
   } pwrmgr_reg2hw_t;
 
   ///////////////////////////////////////
   // Internal design logic to register //
   ///////////////////////////////////////
   typedef struct packed {
-    pwrmgr_hw2reg_intr_state_reg_t intr_state; // [24:24]
-    pwrmgr_hw2reg_ctrl_cfg_regwen_reg_t ctrl_cfg_regwen; // [23:24]
-    pwrmgr_hw2reg_control_reg_t control; // [23:20]
-    pwrmgr_hw2reg_cfg_cdc_sync_reg_t cfg_cdc_sync; // [19:18]
-    pwrmgr_hw2reg_wake_info_reg_t wake_info; // [17:-3]
+    pwrmgr_hw2reg_intr_state_reg_t intr_state; // [13:13]
+    pwrmgr_hw2reg_ctrl_cfg_regwen_reg_t ctrl_cfg_regwen; // [12:13]
+    pwrmgr_hw2reg_control_reg_t control; // [12:7]
+    pwrmgr_hw2reg_cfg_cdc_sync_reg_t cfg_cdc_sync; // [6:5]
+    pwrmgr_hw2reg_wake_status_mreg_t [0:0] wake_status; // [4:3]
+    pwrmgr_hw2reg_reset_status_mreg_t [0:0] reset_status; // [2:1]
+    pwrmgr_hw2reg_wake_info_reg_t wake_info; // [0:-5]
   } pwrmgr_hw2reg_t;
 
   // Register Address
@@ -174,16 +193,16 @@
     4'b 0001, // index[ 1] PWRMGR_INTR_ENABLE
     4'b 0001, // index[ 2] PWRMGR_INTR_TEST
     4'b 0001, // index[ 3] PWRMGR_CTRL_CFG_REGWEN
-    4'b 0001, // index[ 4] PWRMGR_CONTROL
+    4'b 0011, // index[ 4] PWRMGR_CONTROL
     4'b 0001, // index[ 5] PWRMGR_CFG_CDC_SYNC
     4'b 0001, // index[ 6] PWRMGR_WAKEUP_EN_REGWEN
-    4'b 0011, // index[ 7] PWRMGR_WAKEUP_EN
-    4'b 0011, // index[ 8] PWRMGR_WAKE_STATUS
+    4'b 0001, // index[ 7] PWRMGR_WAKEUP_EN
+    4'b 0001, // index[ 8] PWRMGR_WAKE_STATUS
     4'b 0001, // index[ 9] PWRMGR_RESET_EN_REGWEN
     4'b 0001, // index[10] PWRMGR_RESET_EN
     4'b 0001, // index[11] PWRMGR_RESET_STATUS
     4'b 0001, // index[12] PWRMGR_WAKE_INFO_CAPTURE_DIS
-    4'b 0111  // index[13] PWRMGR_WAKE_INFO
+    4'b 0001  // index[13] PWRMGR_WAKE_INFO
   };
 endpackage
 
diff --git a/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv b/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
index 845816e..8d0f8a8 100644
--- a/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
+++ b/hw/ip/pwrmgr/rtl/pwrmgr_reg_top.sv
@@ -90,6 +90,12 @@
   logic control_io_clk_en_qs;
   logic control_io_clk_en_wd;
   logic control_io_clk_en_we;
+  logic control_usb_clk_en_lp_qs;
+  logic control_usb_clk_en_lp_wd;
+  logic control_usb_clk_en_lp_we;
+  logic control_usb_clk_en_active_qs;
+  logic control_usb_clk_en_active_wd;
+  logic control_usb_clk_en_active_we;
   logic control_main_pd_n_qs;
   logic control_main_pd_n_wd;
   logic control_main_pd_n_we;
@@ -99,82 +105,22 @@
   logic wakeup_en_regwen_qs;
   logic wakeup_en_regwen_wd;
   logic wakeup_en_regwen_we;
-  logic wakeup_en_en_0_qs;
-  logic wakeup_en_en_0_wd;
-  logic wakeup_en_en_0_we;
-  logic wakeup_en_en_1_qs;
-  logic wakeup_en_en_1_wd;
-  logic wakeup_en_en_1_we;
-  logic wakeup_en_en_2_qs;
-  logic wakeup_en_en_2_wd;
-  logic wakeup_en_en_2_we;
-  logic wakeup_en_en_3_qs;
-  logic wakeup_en_en_3_wd;
-  logic wakeup_en_en_3_we;
-  logic wakeup_en_en_4_qs;
-  logic wakeup_en_en_4_wd;
-  logic wakeup_en_en_4_we;
-  logic wakeup_en_en_5_qs;
-  logic wakeup_en_en_5_wd;
-  logic wakeup_en_en_5_we;
-  logic wakeup_en_en_6_qs;
-  logic wakeup_en_en_6_wd;
-  logic wakeup_en_en_6_we;
-  logic wakeup_en_en_7_qs;
-  logic wakeup_en_en_7_wd;
-  logic wakeup_en_en_7_we;
-  logic wakeup_en_en_8_qs;
-  logic wakeup_en_en_8_wd;
-  logic wakeup_en_en_8_we;
-  logic wakeup_en_en_9_qs;
-  logic wakeup_en_en_9_wd;
-  logic wakeup_en_en_9_we;
-  logic wakeup_en_en_10_qs;
-  logic wakeup_en_en_10_wd;
-  logic wakeup_en_en_10_we;
-  logic wakeup_en_en_11_qs;
-  logic wakeup_en_en_11_wd;
-  logic wakeup_en_en_11_we;
-  logic wakeup_en_en_12_qs;
-  logic wakeup_en_en_12_wd;
-  logic wakeup_en_en_12_we;
-  logic wakeup_en_en_13_qs;
-  logic wakeup_en_en_13_wd;
-  logic wakeup_en_en_13_we;
-  logic wakeup_en_en_14_qs;
-  logic wakeup_en_en_14_wd;
-  logic wakeup_en_en_14_we;
-  logic wakeup_en_en_15_qs;
-  logic wakeup_en_en_15_wd;
-  logic wakeup_en_en_15_we;
-  logic wake_status_val_0_qs;
-  logic wake_status_val_1_qs;
-  logic wake_status_val_2_qs;
-  logic wake_status_val_3_qs;
-  logic wake_status_val_4_qs;
-  logic wake_status_val_5_qs;
-  logic wake_status_val_6_qs;
-  logic wake_status_val_7_qs;
-  logic wake_status_val_8_qs;
-  logic wake_status_val_9_qs;
-  logic wake_status_val_10_qs;
-  logic wake_status_val_11_qs;
-  logic wake_status_val_12_qs;
-  logic wake_status_val_13_qs;
-  logic wake_status_val_14_qs;
-  logic wake_status_val_15_qs;
+  logic wakeup_en_qs;
+  logic wakeup_en_wd;
+  logic wakeup_en_we;
+  logic wake_status_qs;
   logic reset_en_regwen_qs;
   logic reset_en_regwen_wd;
   logic reset_en_regwen_we;
-  logic [1:0] reset_en_qs;
-  logic [1:0] reset_en_wd;
+  logic reset_en_qs;
+  logic reset_en_wd;
   logic reset_en_we;
-  logic [1:0] reset_status_qs;
+  logic reset_status_qs;
   logic wake_info_capture_dis_qs;
   logic wake_info_capture_dis_wd;
   logic wake_info_capture_dis_we;
-  logic [15:0] wake_info_reasons_qs;
-  logic [15:0] wake_info_reasons_wd;
+  logic wake_info_reasons_qs;
+  logic wake_info_reasons_wd;
   logic wake_info_reasons_we;
   logic wake_info_reasons_re;
   logic wake_info_fall_through_qs;
@@ -353,7 +299,59 @@
   );
 
 
-  //   F[main_pd_n]: 6:6
+  //   F[usb_clk_en_lp]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_control_usb_clk_en_lp (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (control_usb_clk_en_lp_we & ctrl_cfg_regwen_qs),
+    .wd     (control_usb_clk_en_lp_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.control.usb_clk_en_lp.q ),
+
+    // to register interface (read)
+    .qs     (control_usb_clk_en_lp_qs)
+  );
+
+
+  //   F[usb_clk_en_active]: 7:7
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h1)
+  ) u_control_usb_clk_en_active (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (control_usb_clk_en_active_we & ctrl_cfg_regwen_qs),
+    .wd     (control_usb_clk_en_active_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.control.usb_clk_en_active.q ),
+
+    // to register interface (read)
+    .qs     (control_usb_clk_en_active_qs)
+  );
+
+
+  //   F[main_pd_n]: 8:8
   prim_subreg #(
     .DW      (1),
     .SWACCESS("RW"),
@@ -437,18 +435,17 @@
   // Subregister 0 of Multireg wakeup_en
   // R[wakeup_en]: V(False)
 
-  // F[en_0]: 0:0
   prim_subreg #(
     .DW      (1),
     .SWACCESS("RW"),
     .RESVAL  (1'h0)
-  ) u_wakeup_en_en_0 (
+  ) u_wakeup_en (
     .clk_i   (clk_i    ),
     .rst_ni  (rst_ni  ),
 
     // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_0_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_0_wd),
+    .we     (wakeup_en_we & wakeup_en_regwen_qs),
+    .wd     (wakeup_en_wd),
 
     // from internal hardware
     .de     (1'b0),
@@ -459,484 +456,36 @@
     .q      (reg2hw.wakeup_en[0].q ),
 
     // to register interface (read)
-    .qs     (wakeup_en_en_0_qs)
+    .qs     (wakeup_en_qs)
   );
 
 
-  // F[en_1]: 1:1
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_1 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_1_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_1_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[1].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_1_qs)
-  );
-
-
-  // F[en_2]: 2:2
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_2 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_2_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_2_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[2].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_2_qs)
-  );
-
-
-  // F[en_3]: 3:3
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_3 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_3_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_3_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[3].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_3_qs)
-  );
-
-
-  // F[en_4]: 4:4
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_4 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_4_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_4_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[4].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_4_qs)
-  );
-
-
-  // F[en_5]: 5:5
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_5 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_5_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_5_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[5].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_5_qs)
-  );
-
-
-  // F[en_6]: 6:6
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_6 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_6_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_6_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[6].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_6_qs)
-  );
-
-
-  // F[en_7]: 7:7
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_7 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_7_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_7_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[7].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_7_qs)
-  );
-
-
-  // F[en_8]: 8:8
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_8 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_8_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_8_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[8].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_8_qs)
-  );
-
-
-  // F[en_9]: 9:9
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_9 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_9_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_9_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[9].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_9_qs)
-  );
-
-
-  // F[en_10]: 10:10
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_10 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_10_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_10_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[10].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_10_qs)
-  );
-
-
-  // F[en_11]: 11:11
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_11 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_11_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_11_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[11].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_11_qs)
-  );
-
-
-  // F[en_12]: 12:12
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_12 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_12_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_12_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[12].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_12_qs)
-  );
-
-
-  // F[en_13]: 13:13
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_13 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_13_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_13_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[13].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_13_qs)
-  );
-
-
-  // F[en_14]: 14:14
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_14 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_14_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_14_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[14].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_14_qs)
-  );
-
-
-  // F[en_15]: 15:15
-  prim_subreg #(
-    .DW      (1),
-    .SWACCESS("RW"),
-    .RESVAL  (1'h0)
-  ) u_wakeup_en_en_15 (
-    .clk_i   (clk_i    ),
-    .rst_ni  (rst_ni  ),
-
-    // from register interface (qualified with register enable)
-    .we     (wakeup_en_en_15_we & wakeup_en_regwen_qs),
-    .wd     (wakeup_en_en_15_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0  ),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.wakeup_en[15].q ),
-
-    // to register interface (read)
-    .qs     (wakeup_en_en_15_qs)
-  );
-
-
-
 
   // Subregister 0 of Multireg wake_status
   // R[wake_status]: V(False)
 
-  // F[val_0]: 0:0
-  // constant-only read
-  assign wake_status_val_0_qs = 1'h0;
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_wake_status (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
 
+    .we     (1'b0),
+    .wd     ('0  ),
 
-  // F[val_1]: 1:1
-  // constant-only read
-  assign wake_status_val_1_qs = 1'h0;
+    // from internal hardware
+    .de     (hw2reg.wake_status[0].de),
+    .d      (hw2reg.wake_status[0].d ),
 
+    // to internal hardware
+    .qe     (),
+    .q      (),
 
-  // F[val_2]: 2:2
-  // constant-only read
-  assign wake_status_val_2_qs = 1'h0;
-
-
-  // F[val_3]: 3:3
-  // constant-only read
-  assign wake_status_val_3_qs = 1'h0;
-
-
-  // F[val_4]: 4:4
-  // constant-only read
-  assign wake_status_val_4_qs = 1'h0;
-
-
-  // F[val_5]: 5:5
-  // constant-only read
-  assign wake_status_val_5_qs = 1'h0;
-
-
-  // F[val_6]: 6:6
-  // constant-only read
-  assign wake_status_val_6_qs = 1'h0;
-
-
-  // F[val_7]: 7:7
-  // constant-only read
-  assign wake_status_val_7_qs = 1'h0;
-
-
-  // F[val_8]: 8:8
-  // constant-only read
-  assign wake_status_val_8_qs = 1'h0;
-
-
-  // F[val_9]: 9:9
-  // constant-only read
-  assign wake_status_val_9_qs = 1'h0;
-
-
-  // F[val_10]: 10:10
-  // constant-only read
-  assign wake_status_val_10_qs = 1'h0;
-
-
-  // F[val_11]: 11:11
-  // constant-only read
-  assign wake_status_val_11_qs = 1'h0;
-
-
-  // F[val_12]: 12:12
-  // constant-only read
-  assign wake_status_val_12_qs = 1'h0;
-
-
-  // F[val_13]: 13:13
-  // constant-only read
-  assign wake_status_val_13_qs = 1'h0;
-
-
-  // F[val_14]: 14:14
-  // constant-only read
-  assign wake_status_val_14_qs = 1'h0;
-
-
-  // F[val_15]: 15:15
-  // constant-only read
-  assign wake_status_val_15_qs = 1'h0;
-
+    // to register interface (read)
+    .qs     (wake_status_qs)
+  );
 
 
   // R[reset_en_regwen]: V(False)
@@ -966,12 +515,14 @@
   );
 
 
+
+  // Subregister 0 of Multireg reset_en
   // R[reset_en]: V(False)
 
   prim_subreg #(
-    .DW      (2),
+    .DW      (1),
     .SWACCESS("RW"),
-    .RESVAL  (2'h0)
+    .RESVAL  (1'h0)
   ) u_reset_en (
     .clk_i   (clk_i    ),
     .rst_ni  (rst_ni  ),
@@ -986,17 +537,39 @@
 
     // to internal hardware
     .qe     (),
-    .q      (reg2hw.reset_en.q ),
+    .q      (reg2hw.reset_en[0].q ),
 
     // to register interface (read)
     .qs     (reset_en_qs)
   );
 
 
+
+  // Subregister 0 of Multireg reset_status
   // R[reset_status]: V(False)
 
-  // constant-only read
-  assign reset_status_qs = 2'h0;
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_reset_status (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.reset_status[0].de),
+    .d      (hw2reg.reset_status[0].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (reset_status_qs)
+  );
 
 
   // R[wake_info_capture_dis]: V(False)
@@ -1028,9 +601,9 @@
 
   // R[wake_info]: V(True)
 
-  //   F[reasons]: 15:0
+  //   F[reasons]: 0:0
   prim_subreg_ext #(
-    .DW    (16)
+    .DW    (1)
   ) u_wake_info_reasons (
     .re     (wake_info_reasons_re),
     .we     (wake_info_reasons_we),
@@ -1043,7 +616,7 @@
   );
 
 
-  //   F[fall_through]: 16:16
+  //   F[fall_through]: 1:1
   prim_subreg_ext #(
     .DW    (1)
   ) u_wake_info_fall_through (
@@ -1058,7 +631,7 @@
   );
 
 
-  //   F[abort]: 17:17
+  //   F[abort]: 2:2
   prim_subreg_ext #(
     .DW    (1)
   ) u_wake_info_abort (
@@ -1135,8 +708,14 @@
   assign control_io_clk_en_we = addr_hit[4] & reg_we & ~wr_err;
   assign control_io_clk_en_wd = reg_wdata[5];
 
+  assign control_usb_clk_en_lp_we = addr_hit[4] & reg_we & ~wr_err;
+  assign control_usb_clk_en_lp_wd = reg_wdata[6];
+
+  assign control_usb_clk_en_active_we = addr_hit[4] & reg_we & ~wr_err;
+  assign control_usb_clk_en_active_wd = reg_wdata[7];
+
   assign control_main_pd_n_we = addr_hit[4] & reg_we & ~wr_err;
-  assign control_main_pd_n_wd = reg_wdata[6];
+  assign control_main_pd_n_wd = reg_wdata[8];
 
   assign cfg_cdc_sync_we = addr_hit[5] & reg_we & ~wr_err;
   assign cfg_cdc_sync_wd = reg_wdata[0];
@@ -1144,90 +723,30 @@
   assign wakeup_en_regwen_we = addr_hit[6] & reg_we & ~wr_err;
   assign wakeup_en_regwen_wd = reg_wdata[0];
 
-  assign wakeup_en_en_0_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_0_wd = reg_wdata[0];
-
-  assign wakeup_en_en_1_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_1_wd = reg_wdata[1];
-
-  assign wakeup_en_en_2_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_2_wd = reg_wdata[2];
-
-  assign wakeup_en_en_3_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_3_wd = reg_wdata[3];
-
-  assign wakeup_en_en_4_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_4_wd = reg_wdata[4];
-
-  assign wakeup_en_en_5_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_5_wd = reg_wdata[5];
-
-  assign wakeup_en_en_6_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_6_wd = reg_wdata[6];
-
-  assign wakeup_en_en_7_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_7_wd = reg_wdata[7];
-
-  assign wakeup_en_en_8_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_8_wd = reg_wdata[8];
-
-  assign wakeup_en_en_9_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_9_wd = reg_wdata[9];
-
-  assign wakeup_en_en_10_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_10_wd = reg_wdata[10];
-
-  assign wakeup_en_en_11_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_11_wd = reg_wdata[11];
-
-  assign wakeup_en_en_12_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_12_wd = reg_wdata[12];
-
-  assign wakeup_en_en_13_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_13_wd = reg_wdata[13];
-
-  assign wakeup_en_en_14_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_14_wd = reg_wdata[14];
-
-  assign wakeup_en_en_15_we = addr_hit[7] & reg_we & ~wr_err;
-  assign wakeup_en_en_15_wd = reg_wdata[15];
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+  assign wakeup_en_we = addr_hit[7] & reg_we & ~wr_err;
+  assign wakeup_en_wd = reg_wdata[0];
 
 
   assign reset_en_regwen_we = addr_hit[9] & reg_we & ~wr_err;
   assign reset_en_regwen_wd = reg_wdata[0];
 
   assign reset_en_we = addr_hit[10] & reg_we & ~wr_err;
-  assign reset_en_wd = reg_wdata[1:0];
+  assign reset_en_wd = reg_wdata[0];
 
 
   assign wake_info_capture_dis_we = addr_hit[12] & reg_we & ~wr_err;
   assign wake_info_capture_dis_wd = reg_wdata[0];
 
   assign wake_info_reasons_we = addr_hit[13] & reg_we & ~wr_err;
-  assign wake_info_reasons_wd = reg_wdata[15:0];
+  assign wake_info_reasons_wd = reg_wdata[0];
   assign wake_info_reasons_re = addr_hit[13] && reg_re;
 
   assign wake_info_fall_through_we = addr_hit[13] & reg_we & ~wr_err;
-  assign wake_info_fall_through_wd = reg_wdata[16];
+  assign wake_info_fall_through_wd = reg_wdata[1];
   assign wake_info_fall_through_re = addr_hit[13] && reg_re;
 
   assign wake_info_abort_we = addr_hit[13] & reg_we & ~wr_err;
-  assign wake_info_abort_wd = reg_wdata[17];
+  assign wake_info_abort_wd = reg_wdata[2];
   assign wake_info_abort_re = addr_hit[13] && reg_re;
 
   // Read data return
@@ -1254,7 +773,9 @@
         reg_rdata_next[0] = control_low_power_hint_qs;
         reg_rdata_next[4] = control_core_clk_en_qs;
         reg_rdata_next[5] = control_io_clk_en_qs;
-        reg_rdata_next[6] = control_main_pd_n_qs;
+        reg_rdata_next[6] = control_usb_clk_en_lp_qs;
+        reg_rdata_next[7] = control_usb_clk_en_active_qs;
+        reg_rdata_next[8] = control_main_pd_n_qs;
       end
 
       addr_hit[5]: begin
@@ -1266,41 +787,11 @@
       end
 
       addr_hit[7]: begin
-        reg_rdata_next[0] = wakeup_en_en_0_qs;
-        reg_rdata_next[1] = wakeup_en_en_1_qs;
-        reg_rdata_next[2] = wakeup_en_en_2_qs;
-        reg_rdata_next[3] = wakeup_en_en_3_qs;
-        reg_rdata_next[4] = wakeup_en_en_4_qs;
-        reg_rdata_next[5] = wakeup_en_en_5_qs;
-        reg_rdata_next[6] = wakeup_en_en_6_qs;
-        reg_rdata_next[7] = wakeup_en_en_7_qs;
-        reg_rdata_next[8] = wakeup_en_en_8_qs;
-        reg_rdata_next[9] = wakeup_en_en_9_qs;
-        reg_rdata_next[10] = wakeup_en_en_10_qs;
-        reg_rdata_next[11] = wakeup_en_en_11_qs;
-        reg_rdata_next[12] = wakeup_en_en_12_qs;
-        reg_rdata_next[13] = wakeup_en_en_13_qs;
-        reg_rdata_next[14] = wakeup_en_en_14_qs;
-        reg_rdata_next[15] = wakeup_en_en_15_qs;
+        reg_rdata_next[0] = wakeup_en_qs;
       end
 
       addr_hit[8]: begin
-        reg_rdata_next[0] = wake_status_val_0_qs;
-        reg_rdata_next[1] = wake_status_val_1_qs;
-        reg_rdata_next[2] = wake_status_val_2_qs;
-        reg_rdata_next[3] = wake_status_val_3_qs;
-        reg_rdata_next[4] = wake_status_val_4_qs;
-        reg_rdata_next[5] = wake_status_val_5_qs;
-        reg_rdata_next[6] = wake_status_val_6_qs;
-        reg_rdata_next[7] = wake_status_val_7_qs;
-        reg_rdata_next[8] = wake_status_val_8_qs;
-        reg_rdata_next[9] = wake_status_val_9_qs;
-        reg_rdata_next[10] = wake_status_val_10_qs;
-        reg_rdata_next[11] = wake_status_val_11_qs;
-        reg_rdata_next[12] = wake_status_val_12_qs;
-        reg_rdata_next[13] = wake_status_val_13_qs;
-        reg_rdata_next[14] = wake_status_val_14_qs;
-        reg_rdata_next[15] = wake_status_val_15_qs;
+        reg_rdata_next[0] = wake_status_qs;
       end
 
       addr_hit[9]: begin
@@ -1308,11 +799,11 @@
       end
 
       addr_hit[10]: begin
-        reg_rdata_next[1:0] = reset_en_qs;
+        reg_rdata_next[0] = reset_en_qs;
       end
 
       addr_hit[11]: begin
-        reg_rdata_next[1:0] = reset_status_qs;
+        reg_rdata_next[0] = reset_status_qs;
       end
 
       addr_hit[12]: begin
@@ -1320,9 +811,9 @@
       end
 
       addr_hit[13]: begin
-        reg_rdata_next[15:0] = wake_info_reasons_qs;
-        reg_rdata_next[16] = wake_info_fall_through_qs;
-        reg_rdata_next[17] = wake_info_abort_qs;
+        reg_rdata_next[0] = wake_info_reasons_qs;
+        reg_rdata_next[1] = wake_info_fall_through_qs;
+        reg_rdata_next[2] = wake_info_abort_qs;
       end
 
       default: begin