[top] Top level updates

- add extra uarts
- align memory addresses
- update software for uart0

Signed-off-by: Timothy Chen <timothytim@google.com>

[sw] update unittest

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] revert flash size for now

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Fix concat for software consistency

Signed-off-by: Timothy Chen <timothytim@google.com>

[sw] update unittest for plic

Signed-off-by: Timothy Chen <timothytim@google.com>

[sw] update new location

Signed-off-by: Timothy Chen <timothytim@google.com>

[uart] exclude reads to status

- non-dedicated uarts showed failures likely due to 0'd inputs

Signed-off-by: Timothy Chen <timothytim@google.com>

[uart] exclude check on rx_idle only

Signed-off-by: Timothy Chen <timothytim@google.com>

[uart] update tag type

Signed-off-by: Timothy Chen <timothytim@google.com>

[top] Auto generate files

Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index 75180eb..d10af0e 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -400,7 +400,7 @@
   module:
   [
     {
-      name: uart
+      name: uart0
       type: uart
       clock_srcs:
       {
@@ -551,10 +551,490 @@
           type: req_rsp
           act: rsp
           name: tl
-          inst_name: uart
+          inst_name: uart0
           width: 1
           default: ""
-          top_signame: uart_tl
+          top_signame: uart0_tl
+          index: -1
+        }
+      ]
+    }
+    {
+      name: uart1
+      type: uart
+      clock_srcs:
+      {
+        clk_i: io_div4
+      }
+      reset_connections:
+      {
+        rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]
+      }
+      base_addr: 0x40010000
+      clock_reset_export: []
+      clock_group: secure
+      clock_connections:
+      {
+        clk_i: clkmgr_clocks.clk_io_div4_secure
+      }
+      domain: "0"
+      size: 0x1000
+      bus_device: tlul
+      bus_host: none
+      available_input_list:
+      [
+        {
+          name: rx
+          width: 1
+          type: input
+        }
+      ]
+      available_output_list:
+      [
+        {
+          name: tx
+          width: 1
+          type: output
+        }
+      ]
+      available_inout_list: []
+      param_list: []
+      interrupt_list:
+      [
+        {
+          name: tx_watermark
+          width: 1
+          bits: "0"
+          bitinfo:
+          [
+            1
+            1
+            0
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_watermark
+          width: 1
+          bits: "1"
+          bitinfo:
+          [
+            2
+            1
+            1
+          ]
+          type: interrupt
+        }
+        {
+          name: tx_empty
+          width: 1
+          bits: "2"
+          bitinfo:
+          [
+            4
+            1
+            2
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_overflow
+          width: 1
+          bits: "3"
+          bitinfo:
+          [
+            8
+            1
+            3
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_frame_err
+          width: 1
+          bits: "4"
+          bitinfo:
+          [
+            16
+            1
+            4
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_break_err
+          width: 1
+          bits: "5"
+          bitinfo:
+          [
+            32
+            1
+            5
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_timeout
+          width: 1
+          bits: "6"
+          bitinfo:
+          [
+            64
+            1
+            6
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_parity_err
+          width: 1
+          bits: "7"
+          bitinfo:
+          [
+            128
+            1
+            7
+          ]
+          type: interrupt
+        }
+      ]
+      alert_list: []
+      wakeup_list: []
+      reset_request_list: []
+      scan: "false"
+      scan_reset: "false"
+      inter_signal_list:
+      [
+        {
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: rsp
+          name: tl
+          inst_name: uart1
+          width: 1
+          default: ""
+          top_signame: uart1_tl
+          index: -1
+        }
+      ]
+    }
+    {
+      name: uart2
+      type: uart
+      clock_srcs:
+      {
+        clk_i: io_div4
+      }
+      reset_connections:
+      {
+        rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]
+      }
+      base_addr: 0x40020000
+      clock_reset_export: []
+      clock_group: secure
+      clock_connections:
+      {
+        clk_i: clkmgr_clocks.clk_io_div4_secure
+      }
+      domain: "0"
+      size: 0x1000
+      bus_device: tlul
+      bus_host: none
+      available_input_list:
+      [
+        {
+          name: rx
+          width: 1
+          type: input
+        }
+      ]
+      available_output_list:
+      [
+        {
+          name: tx
+          width: 1
+          type: output
+        }
+      ]
+      available_inout_list: []
+      param_list: []
+      interrupt_list:
+      [
+        {
+          name: tx_watermark
+          width: 1
+          bits: "0"
+          bitinfo:
+          [
+            1
+            1
+            0
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_watermark
+          width: 1
+          bits: "1"
+          bitinfo:
+          [
+            2
+            1
+            1
+          ]
+          type: interrupt
+        }
+        {
+          name: tx_empty
+          width: 1
+          bits: "2"
+          bitinfo:
+          [
+            4
+            1
+            2
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_overflow
+          width: 1
+          bits: "3"
+          bitinfo:
+          [
+            8
+            1
+            3
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_frame_err
+          width: 1
+          bits: "4"
+          bitinfo:
+          [
+            16
+            1
+            4
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_break_err
+          width: 1
+          bits: "5"
+          bitinfo:
+          [
+            32
+            1
+            5
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_timeout
+          width: 1
+          bits: "6"
+          bitinfo:
+          [
+            64
+            1
+            6
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_parity_err
+          width: 1
+          bits: "7"
+          bitinfo:
+          [
+            128
+            1
+            7
+          ]
+          type: interrupt
+        }
+      ]
+      alert_list: []
+      wakeup_list: []
+      reset_request_list: []
+      scan: "false"
+      scan_reset: "false"
+      inter_signal_list:
+      [
+        {
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: rsp
+          name: tl
+          inst_name: uart2
+          width: 1
+          default: ""
+          top_signame: uart2_tl
+          index: -1
+        }
+      ]
+    }
+    {
+      name: uart3
+      type: uart
+      clock_srcs:
+      {
+        clk_i: io_div4
+      }
+      reset_connections:
+      {
+        rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]
+      }
+      base_addr: 0x40030000
+      clock_reset_export: []
+      clock_group: secure
+      clock_connections:
+      {
+        clk_i: clkmgr_clocks.clk_io_div4_secure
+      }
+      domain: "0"
+      size: 0x1000
+      bus_device: tlul
+      bus_host: none
+      available_input_list:
+      [
+        {
+          name: rx
+          width: 1
+          type: input
+        }
+      ]
+      available_output_list:
+      [
+        {
+          name: tx
+          width: 1
+          type: output
+        }
+      ]
+      available_inout_list: []
+      param_list: []
+      interrupt_list:
+      [
+        {
+          name: tx_watermark
+          width: 1
+          bits: "0"
+          bitinfo:
+          [
+            1
+            1
+            0
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_watermark
+          width: 1
+          bits: "1"
+          bitinfo:
+          [
+            2
+            1
+            1
+          ]
+          type: interrupt
+        }
+        {
+          name: tx_empty
+          width: 1
+          bits: "2"
+          bitinfo:
+          [
+            4
+            1
+            2
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_overflow
+          width: 1
+          bits: "3"
+          bitinfo:
+          [
+            8
+            1
+            3
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_frame_err
+          width: 1
+          bits: "4"
+          bitinfo:
+          [
+            16
+            1
+            4
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_break_err
+          width: 1
+          bits: "5"
+          bitinfo:
+          [
+            32
+            1
+            5
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_timeout
+          width: 1
+          bits: "6"
+          bitinfo:
+          [
+            64
+            1
+            6
+          ]
+          type: interrupt
+        }
+        {
+          name: rx_parity_err
+          width: 1
+          bits: "7"
+          bitinfo:
+          [
+            128
+            1
+            7
+          ]
+          type: interrupt
+        }
+      ]
+      alert_list: []
+      wakeup_list: []
+      reset_request_list: []
+      scan: "false"
+      scan_reset: "false"
+      inter_signal_list:
+      [
+        {
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: rsp
+          name: tl
+          inst_name: uart3
+          width: 1
+          default: ""
+          top_signame: uart3_tl
           index: -1
         }
       ]
@@ -5314,7 +5794,7 @@
       }
       domain: Aon
       type: ram_1p_scr
-      base_addr: 0x18000000
+      base_addr: 0x40520000
       size: 0x1000
       byte_write: "true"
       inter_signal_list:
@@ -5750,9 +6230,21 @@
       [
         main.tl_sram_ctrl_main
       ]
-      uart.tl:
+      uart0.tl:
       [
-        peri.tl_uart
+        peri.tl_uart0
+      ]
+      uart1.tl:
+      [
+        peri.tl_uart1
+      ]
+      uart2.tl:
+      [
+        peri.tl_uart2
+      ]
+      uart3.tl:
+      [
+        peri.tl_uart3
       ]
       gpio.tl:
       [
@@ -6040,16 +6532,12 @@
           addr_range:
           [
             {
-              base_addr: 0x18000000
-              size_byte: 0x1000
-            }
-            {
               base_addr: 0x40000000
               size_byte: 0x421000
             }
             {
               base_addr: 0x40500000
-              size_byte: 0x20000
+              size_byte: 0x21000
             }
           ]
         }
@@ -6598,7 +7086,10 @@
       {
         main:
         [
-          uart
+          uart0
+          uart1
+          uart2
+          uart3
           gpio
           spi_device
           rv_timer
@@ -6630,7 +7121,7 @@
           pipeline_byp: "true"
         }
         {
-          name: uart
+          name: uart0
           type: device
           clock: clk_peri_i
           reset: rst_peri_ni
@@ -6648,6 +7139,60 @@
           pipeline_byp: "true"
         }
         {
+          name: uart1
+          type: device
+          clock: clk_peri_i
+          reset: rst_peri_ni
+          pipeline: "false"
+          inst_type: uart
+          addr_range:
+          [
+            {
+              base_addr: 0x40010000
+              size_byte: 0x1000
+            }
+          ]
+          xbar: false
+          stub: false
+          pipeline_byp: "true"
+        }
+        {
+          name: uart2
+          type: device
+          clock: clk_peri_i
+          reset: rst_peri_ni
+          pipeline: "false"
+          inst_type: uart
+          addr_range:
+          [
+            {
+              base_addr: 0x40020000
+              size_byte: 0x1000
+            }
+          ]
+          xbar: false
+          stub: false
+          pipeline_byp: "true"
+        }
+        {
+          name: uart3
+          type: device
+          clock: clk_peri_i
+          reset: rst_peri_ni
+          pipeline: "false"
+          inst_type: uart
+          addr_range:
+          [
+            {
+              base_addr: 0x40030000
+              size_byte: 0x1000
+            }
+          ]
+          xbar: false
+          stub: false
+          pipeline_byp: "true"
+        }
+        {
           name: gpio
           type: device
           clock: clk_peri_i
@@ -6783,7 +7328,7 @@
           addr_range:
           [
             {
-              base_addr: 0x18000000
+              base_addr: 0x40520000
               size_byte: 0x1000
             }
           ]
@@ -6936,13 +7481,49 @@
         {
           struct: tl
           type: req_rsp
-          name: tl_uart
+          name: tl_uart0
           act: req
           package: tlul_pkg
           inst_name: peri
           width: 1
           default: ""
-          top_signame: uart_tl
+          top_signame: uart0_tl
+          index: -1
+        }
+        {
+          struct: tl
+          type: req_rsp
+          name: tl_uart1
+          act: req
+          package: tlul_pkg
+          inst_name: peri
+          width: 1
+          default: ""
+          top_signame: uart1_tl
+          index: -1
+        }
+        {
+          struct: tl
+          type: req_rsp
+          name: tl_uart2
+          act: req
+          package: tlul_pkg
+          inst_name: peri
+          width: 1
+          default: ""
+          top_signame: uart2_tl
+          index: -1
+        }
+        {
+          struct: tl
+          type: req_rsp
+          name: tl_uart3
+          act: req
+          package: tlul_pkg
+          inst_name: peri
+          width: 1
+          default: ""
+          top_signame: uart3_tl
           index: -1
         }
         {
@@ -7131,8 +7712,11 @@
   ]
   interrupt_module:
   [
+    uart0
+    uart1
+    uart2
+    uart3
     gpio
-    uart
     spi_device
     flash_ctrl
     hmac
@@ -7152,6 +7736,422 @@
   interrupt:
   [
     {
+      name: uart0_tx_watermark
+      width: 1
+      bits: "0"
+      bitinfo:
+      [
+        1
+        1
+        0
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_watermark
+      width: 1
+      bits: "1"
+      bitinfo:
+      [
+        2
+        1
+        1
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_tx_empty
+      width: 1
+      bits: "2"
+      bitinfo:
+      [
+        4
+        1
+        2
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_overflow
+      width: 1
+      bits: "3"
+      bitinfo:
+      [
+        8
+        1
+        3
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_frame_err
+      width: 1
+      bits: "4"
+      bitinfo:
+      [
+        16
+        1
+        4
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_break_err
+      width: 1
+      bits: "5"
+      bitinfo:
+      [
+        32
+        1
+        5
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_timeout
+      width: 1
+      bits: "6"
+      bitinfo:
+      [
+        64
+        1
+        6
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart0_rx_parity_err
+      width: 1
+      bits: "7"
+      bitinfo:
+      [
+        128
+        1
+        7
+      ]
+      type: interrupt
+      module_name: uart0
+    }
+    {
+      name: uart1_tx_watermark
+      width: 1
+      bits: "0"
+      bitinfo:
+      [
+        1
+        1
+        0
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_watermark
+      width: 1
+      bits: "1"
+      bitinfo:
+      [
+        2
+        1
+        1
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_tx_empty
+      width: 1
+      bits: "2"
+      bitinfo:
+      [
+        4
+        1
+        2
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_overflow
+      width: 1
+      bits: "3"
+      bitinfo:
+      [
+        8
+        1
+        3
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_frame_err
+      width: 1
+      bits: "4"
+      bitinfo:
+      [
+        16
+        1
+        4
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_break_err
+      width: 1
+      bits: "5"
+      bitinfo:
+      [
+        32
+        1
+        5
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_timeout
+      width: 1
+      bits: "6"
+      bitinfo:
+      [
+        64
+        1
+        6
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart1_rx_parity_err
+      width: 1
+      bits: "7"
+      bitinfo:
+      [
+        128
+        1
+        7
+      ]
+      type: interrupt
+      module_name: uart1
+    }
+    {
+      name: uart2_tx_watermark
+      width: 1
+      bits: "0"
+      bitinfo:
+      [
+        1
+        1
+        0
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_watermark
+      width: 1
+      bits: "1"
+      bitinfo:
+      [
+        2
+        1
+        1
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_tx_empty
+      width: 1
+      bits: "2"
+      bitinfo:
+      [
+        4
+        1
+        2
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_overflow
+      width: 1
+      bits: "3"
+      bitinfo:
+      [
+        8
+        1
+        3
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_frame_err
+      width: 1
+      bits: "4"
+      bitinfo:
+      [
+        16
+        1
+        4
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_break_err
+      width: 1
+      bits: "5"
+      bitinfo:
+      [
+        32
+        1
+        5
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_timeout
+      width: 1
+      bits: "6"
+      bitinfo:
+      [
+        64
+        1
+        6
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart2_rx_parity_err
+      width: 1
+      bits: "7"
+      bitinfo:
+      [
+        128
+        1
+        7
+      ]
+      type: interrupt
+      module_name: uart2
+    }
+    {
+      name: uart3_tx_watermark
+      width: 1
+      bits: "0"
+      bitinfo:
+      [
+        1
+        1
+        0
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_watermark
+      width: 1
+      bits: "1"
+      bitinfo:
+      [
+        2
+        1
+        1
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_tx_empty
+      width: 1
+      bits: "2"
+      bitinfo:
+      [
+        4
+        1
+        2
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_overflow
+      width: 1
+      bits: "3"
+      bitinfo:
+      [
+        8
+        1
+        3
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_frame_err
+      width: 1
+      bits: "4"
+      bitinfo:
+      [
+        16
+        1
+        4
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_break_err
+      width: 1
+      bits: "5"
+      bitinfo:
+      [
+        32
+        1
+        5
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_timeout
+      width: 1
+      bits: "6"
+      bitinfo:
+      [
+        64
+        1
+        6
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
+      name: uart3_rx_parity_err
+      width: 1
+      bits: "7"
+      bitinfo:
+      [
+        128
+        1
+        7
+      ]
+      type: interrupt
+      module_name: uart3
+    }
+    {
       name: gpio_gpio
       width: 32
       bits: 31:0
@@ -7165,110 +8165,6 @@
       module_name: gpio
     }
     {
-      name: uart_tx_watermark
-      width: 1
-      bits: "0"
-      bitinfo:
-      [
-        1
-        1
-        0
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_watermark
-      width: 1
-      bits: "1"
-      bitinfo:
-      [
-        2
-        1
-        1
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_tx_empty
-      width: 1
-      bits: "2"
-      bitinfo:
-      [
-        4
-        1
-        2
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_overflow
-      width: 1
-      bits: "3"
-      bitinfo:
-      [
-        8
-        1
-        3
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_frame_err
-      width: 1
-      bits: "4"
-      bitinfo:
-      [
-        16
-        1
-        4
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_break_err
-      width: 1
-      bits: "5"
-      bitinfo:
-      [
-        32
-        1
-        5
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_timeout
-      width: 1
-      bits: "6"
-      bitinfo:
-      [
-        64
-        1
-        6
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
-      name: uart_rx_parity_err
-      width: 1
-      bits: "7"
-      bitinfo:
-      [
-        128
-        1
-        7
-      ]
-      type: interrupt
-      module_name: uart
-    }
-    {
       name: spi_device_rxf
       width: 1
       bits: "0"
@@ -8331,7 +9227,7 @@
         ]
       }
       {
-        name: uart
+        name: uart0
         pad:
         [
           ChA[0..1]
@@ -8347,8 +9243,10 @@
     ]
     mio_modules:
     [
-      uart
       gpio
+      uart1
+      uart2
+      uart3
     ]
     nc_modules:
     [
@@ -8412,10 +9310,10 @@
         ]
       }
       {
-        name: uart_rx
+        name: uart0_rx
         width: 1
         type: input
-        module_name: uart
+        module_name: uart0
         pad:
         [
           {
@@ -8425,10 +9323,10 @@
         ]
       }
       {
-        name: uart_tx
+        name: uart0_tx
         width: 1
         type: output
-        module_name: uart
+        module_name: uart0
         pad:
         [
           {
@@ -8555,8 +9453,48 @@
         ]
       }
     ]
-    inputs: []
-    outputs: []
+    inputs:
+    [
+      {
+        name: uart1_rx
+        width: 1
+        type: input
+        module_name: uart1
+      }
+      {
+        name: uart2_rx
+        width: 1
+        type: input
+        module_name: uart2
+      }
+      {
+        name: uart3_rx
+        width: 1
+        type: input
+        module_name: uart3
+      }
+    ]
+    outputs:
+    [
+      {
+        name: uart1_tx
+        width: 1
+        type: output
+        module_name: uart1
+      }
+      {
+        name: uart2_tx
+        width: 1
+        type: output
+        module_name: uart2
+      }
+      {
+        name: uart3_tx
+        width: 1
+        type: output
+        module_name: uart3
+      }
+    ]
     inouts:
     [
       {
@@ -8674,10 +9612,46 @@
         type: req_rsp
         act: rsp
         name: tl
-        inst_name: uart
+        inst_name: uart0
         width: 1
         default: ""
-        top_signame: uart_tl
+        top_signame: uart0_tl
+        index: -1
+      }
+      {
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: rsp
+        name: tl
+        inst_name: uart1
+        width: 1
+        default: ""
+        top_signame: uart1_tl
+        index: -1
+      }
+      {
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: rsp
+        name: tl
+        inst_name: uart2
+        width: 1
+        default: ""
+        top_signame: uart2_tl
+        index: -1
+      }
+      {
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: rsp
+        name: tl
+        inst_name: uart3
+        width: 1
+        default: ""
+        top_signame: uart3_tl
         index: -1
       }
       {
@@ -11078,13 +12052,49 @@
       {
         struct: tl
         type: req_rsp
-        name: tl_uart
+        name: tl_uart0
         act: req
         package: tlul_pkg
         inst_name: peri
         width: 1
         default: ""
-        top_signame: uart_tl
+        top_signame: uart0_tl
+        index: -1
+      }
+      {
+        struct: tl
+        type: req_rsp
+        name: tl_uart1
+        act: req
+        package: tlul_pkg
+        inst_name: peri
+        width: 1
+        default: ""
+        top_signame: uart1_tl
+        index: -1
+      }
+      {
+        struct: tl
+        type: req_rsp
+        name: tl_uart2
+        act: req
+        package: tlul_pkg
+        inst_name: peri
+        width: 1
+        default: ""
+        top_signame: uart2_tl
+        index: -1
+      }
+      {
+        struct: tl
+        type: req_rsp
+        name: tl_uart3
+        act: req
+        package: tlul_pkg
+        inst_name: peri
+        width: 1
+        default: ""
+        top_signame: uart3_tl
         index: -1
       }
       {
@@ -12281,7 +13291,7 @@
       {
         package: tlul_pkg
         struct: tl_h2d
-        signame: uart_tl_req
+        signame: uart0_tl_req
         width: 1
         type: req_rsp
         default: ""
@@ -12289,7 +13299,55 @@
       {
         package: tlul_pkg
         struct: tl_d2h
-        signame: uart_tl_rsp
+        signame: uart0_tl_rsp
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_h2d
+        signame: uart1_tl_req
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_d2h
+        signame: uart1_tl_rsp
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_h2d
+        signame: uart2_tl_req
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_d2h
+        signame: uart2_tl_rsp
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_h2d
+        signame: uart3_tl_req
+        width: 1
+        type: req_rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_d2h
+        signame: uart3_tl_rsp
         width: 1
         type: req_rsp
         default: ""
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index fd90aff..7fb9c3c 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -201,7 +201,7 @@
   // generated: A module is templated and generated as part of topgen
   // top_only: A module is not templated but is specific to 'top_*' instead of 'ip'
   module: [
-    { name: "uart",     // instance name
+    { name: "uart0",    // instance name
       type: "uart",     // Must be matched to the ip name in `ip.hson` (_reg, _cfg permitted)
                         // and `hw/ip/{type}`
 
@@ -216,6 +216,51 @@
       reset_connections: {rst_ni: "sys_io_div4"},
       base_addr: "0x40000000",
     },
+    { name: "uart1",    // instance name
+      type: "uart",     // Must be matched to the ip name in `ip.hson` (_reg, _cfg permitted)
+                        // and `hw/ip/{type}`
+
+      // clock connections defines the port to top level clock connection
+      // the ip.hjson will declare the clock port names
+      // If none are defined at ip.hjson, clk_i is used by default
+      clock_srcs: {clk_i: "io_div4"},
+
+      // reset connections defines the port to top level reset connection
+      // the ip.hjson will declare the reset port names
+      // If none are defined at ip.hjson, rst_ni is used by default
+      reset_connections: {rst_ni: "sys_io_div4"},
+      base_addr: "0x40010000",
+    },
+    { name: "uart2",    // instance name
+      type: "uart",     // Must be matched to the ip name in `ip.hson` (_reg, _cfg permitted)
+                        // and `hw/ip/{type}`
+
+      // clock connections defines the port to top level clock connection
+      // the ip.hjson will declare the clock port names
+      // If none are defined at ip.hjson, clk_i is used by default
+      clock_srcs: {clk_i: "io_div4"},
+
+      // reset connections defines the port to top level reset connection
+      // the ip.hjson will declare the reset port names
+      // If none are defined at ip.hjson, rst_ni is used by default
+      reset_connections: {rst_ni: "sys_io_div4"},
+      base_addr: "0x40020000",
+    },
+    { name: "uart3",    // instance name
+      type: "uart",     // Must be matched to the ip name in `ip.hson` (_reg, _cfg permitted)
+                        // and `hw/ip/{type}`
+
+      // clock connections defines the port to top level clock connection
+      // the ip.hjson will declare the clock port names
+      // If none are defined at ip.hjson, clk_i is used by default
+      clock_srcs: {clk_i: "io_div4"},
+
+      // reset connections defines the port to top level reset connection
+      // the ip.hjson will declare the reset port names
+      // If none are defined at ip.hjson, rst_ni is used by default
+      reset_connections: {rst_ni: "sys_io_div4"},
+      base_addr: "0x40030000",
+    },
     { name: "gpio",
       type: "gpio",
       clock_srcs: {clk_i: "io_div4"},
@@ -491,7 +536,7 @@
       reset_connections: {rst_ni: "sys_io_div4"},
       domain: "Aon",
       type: "ram_1p_scr",
-      base_addr: "0x18000000",
+      base_addr: "0x40520000",
       size: "0x1000",
       byte_write: "true",
       inter_signal_list: [
@@ -718,7 +763,8 @@
   // If interrupt is not defined, it uses the order from the module list
   // and include every modules.
   // first item goes to LSB of the interrupt source
-  interrupt_module: ["gpio", "uart", "spi_device", "flash_ctrl",
+  interrupt_module: ["uart0", "uart1", "uart2", "uart3",
+                     "gpio", "spi_device", "flash_ctrl",
                      "hmac", "alert_handler", "nmi_gen", "usbdev", "pwrmgr",
                      "otbn", "keymgr", "kmac", "otp_ctrl", "csrng", "edn0", "edn1",
                      "entropy_src"]
@@ -755,7 +801,7 @@
     dio_modules: [
       { name: "spi_device", pad: ["ChB[0..3]"] },
       //{ name: "uart.tx", pad: ["ChA[0]"]},
-      { name: "uart", pad: ["ChA[0..1]"]},
+      { name: "uart0", pad: ["ChA[0..1]"]},
       // { name: "dio_module.signal_input", pad: ["ChA[31]"] }
       { name: "usbdev", pad: ["ChC[0..8]"]},
     ],
@@ -765,7 +811,7 @@
     //  between the modules and the IO PADS.
     //  If `mio_modules` aren't defined, it uses all remaining modules from
     //  module list except defined in `dio_modules`.
-    mio_modules: ["uart", "gpio"]
+    mio_modules: ["gpio", "uart1", "uart2", "uart3", ]
 
     // If any module isn't defined in above two lists, its inputs will be tied
     //  to 0, and the output/OE signals will be floating (or connected to
diff --git a/hw/top_earlgrey/data/top_earlgrey.sv.tpl b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
index 180a808..3383d3a 100644
--- a/hw/top_earlgrey/data/top_earlgrey.sv.tpl
+++ b/hw/top_earlgrey/data/top_earlgrey.sv.tpl
@@ -671,19 +671,19 @@
   // Pinmux connections
   % if num_mio_outputs + num_mio_inouts != 0:
   assign mio_d2p = {
-    % for sig in top["pinmux"]["inouts"] + top["pinmux"]["outputs"]:
+    % for sig in list(reversed(top["pinmux"]["inouts"] + top["pinmux"]["outputs"])):
     cio_${sig["name"]}_d2p${"" if loop.last else ","}
     % endfor
   };
   assign mio_d2p_en = {
-  % for sig in top["pinmux"]["inouts"] + top["pinmux"]["outputs"]:
+  % for sig in list(reversed(top["pinmux"]["inouts"] + top["pinmux"]["outputs"])):
     cio_${sig["name"]}_en_d2p${"" if loop.last else ","}
   % endfor
   };
   % endif
   % if num_mio_inputs + num_mio_inouts != 0:
   assign {
-    % for sig in top["pinmux"]["inouts"] + top["pinmux"]["inputs"]:
+    % for sig in list(reversed(top["pinmux"]["inouts"] + top["pinmux"]["inputs"])):
     cio_${sig["name"]}_p2d${"" if loop.last else ","}
     % endfor
   } = mio_p2d;
diff --git a/hw/top_earlgrey/data/xbar_peri.hjson b/hw/top_earlgrey/data/xbar_peri.hjson
index ca98be4..0cad49e 100644
--- a/hw/top_earlgrey/data/xbar_peri.hjson
+++ b/hw/top_earlgrey/data/xbar_peri.hjson
@@ -15,7 +15,25 @@
       pipeline: "false"
 
     },
-    { name:      "uart",
+    { name:      "uart0",
+      type:      "device",
+      clock:     "clk_peri_i",
+      reset:     "rst_peri_ni",
+      pipeline:  "false"
+    },
+    { name:      "uart1",
+      type:      "device",
+      clock:     "clk_peri_i",
+      reset:     "rst_peri_ni",
+      pipeline:  "false"
+    },
+    { name:      "uart2",
+      type:      "device",
+      clock:     "clk_peri_i",
+      reset:     "rst_peri_ni",
+      pipeline:  "false"
+    },
+    { name:      "uart3",
       type:      "device",
       clock:     "clk_peri_i",
       reset:     "rst_peri_ni",
@@ -123,7 +141,8 @@
     },
   ],
   connections: {
-    main:  ["uart", "gpio", "spi_device", "rv_timer", "usbdev", "pwrmgr", "rstmgr", "clkmgr",
+    main:  ["uart0", "uart1", "uart2", "uart3",
+            "gpio", "spi_device", "rv_timer", "usbdev", "pwrmgr", "rstmgr", "clkmgr",
             "ram_ret", "otp_ctrl", "lc_ctrl", "sensor_ctrl", "alert_handler", "nmi_gen",
             "ast_wrapper", "sram_ctrl_ret"],
   },
diff --git a/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv b/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
index 29ebc19..11fee16 100644
--- a/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
+++ b/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
@@ -51,7 +51,10 @@
 tl_if otbn_tl_if(clk_main, rst_n);
 tl_if keymgr_tl_if(clk_main, rst_n);
 tl_if sram_ctrl_main_tl_if(clk_main, rst_n);
-tl_if uart_tl_if(clk_io_div4, rst_n);
+tl_if uart0_tl_if(clk_io_div4, rst_n);
+tl_if uart1_tl_if(clk_io_div4, rst_n);
+tl_if uart2_tl_if(clk_io_div4, rst_n);
+tl_if uart3_tl_if(clk_io_div4, rst_n);
 tl_if gpio_tl_if(clk_io_div4, rst_n);
 tl_if spi_device_tl_if(clk_io_div4, rst_n);
 tl_if rv_timer_tl_if(clk_io_div4, rst_n);
@@ -113,7 +116,10 @@
     `DRIVE_CHIP_TL_DEVICE_IF(otbn, otbn, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(keymgr, keymgr, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(sram_ctrl_main, sram_ctrl_main, tl)
-    `DRIVE_CHIP_TL_DEVICE_IF(uart, uart, tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(uart0, uart0, tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(uart1, uart1, tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(uart2, uart2, tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(uart3, uart3, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(gpio, gpio, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(spi_device, spi_device, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(rv_timer, rv_timer, tl)
diff --git a/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv b/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
index fdf8181..92716bb 100644
--- a/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
+++ b/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
@@ -61,9 +61,18 @@
     '{"sram_ctrl_main", '{
         '{32'h411c0000, 32'h411c0fff}
     }},
-    '{"uart", '{
+    '{"uart0", '{
         '{32'h40000000, 32'h40000fff}
     }},
+    '{"uart1", '{
+        '{32'h40010000, 32'h40010fff}
+    }},
+    '{"uart2", '{
+        '{32'h40020000, 32'h40020fff}
+    }},
+    '{"uart3", '{
+        '{32'h40030000, 32'h40030fff}
+    }},
     '{"gpio", '{
         '{32'h40040000, 32'h40040fff}
     }},
@@ -86,7 +95,7 @@
         '{32'h40420000, 32'h40420fff}
     }},
     '{"ram_ret", '{
-        '{32'h18000000, 32'h18000fff}
+        '{32'h40520000, 32'h40520fff}
     }},
     '{"otp_ctrl", '{
         '{32'h40130000, 32'h40133fff}
@@ -123,7 +132,10 @@
         "debug_mem",
         "ram_main",
         "eflash",
-        "uart",
+        "uart0",
+        "uart1",
+        "uart2",
+        "uart3",
         "gpio",
         "spi_device",
         "rv_timer",
@@ -158,7 +170,10 @@
         "rom",
         "ram_main",
         "eflash",
-        "uart",
+        "uart0",
+        "uart1",
+        "uart2",
+        "uart3",
         "gpio",
         "spi_device",
         "rv_timer",
diff --git a/hw/top_earlgrey/ip/pinmux/data/autogen/pinmux.hjson b/hw/top_earlgrey/ip/pinmux/data/autogen/pinmux.hjson
index 805451f..0010d16 100644
--- a/hw/top_earlgrey/ip/pinmux/data/autogen/pinmux.hjson
+++ b/hw/top_earlgrey/ip/pinmux/data/autogen/pinmux.hjson
@@ -88,13 +88,13 @@
     { name: "NMioPeriphIn",
       desc: "Number of muxed peripheral inputs",
       type: "int",
-      default: "32",
+      default: "35",
       local: "true"
     },
     { name: "NMioPeriphOut",
       desc: "Number of muxed peripheral outputs",
       type: "int",
-      default: "32",
+      default: "35",
       local: "true"
     },
     { name: "NMioPads",
diff --git a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv
index 6460644..8926840 100644
--- a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv
+++ b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_pkg.sv
@@ -7,8 +7,8 @@
 package pinmux_reg_pkg;
 
   // Param list
-  parameter int NMioPeriphIn = 32;
-  parameter int NMioPeriphOut = 32;
+  parameter int NMioPeriphIn = 35;
+  parameter int NMioPeriphOut = 35;
   parameter int NMioPads = 32;
   parameter int NDioPads = 15;
   parameter int NWkupDetect = 8;
@@ -80,7 +80,7 @@
   // Register to internal design logic //
   ///////////////////////////////////////
   typedef struct packed {
-    pinmux_reg2hw_periph_insel_mreg_t [31:0] periph_insel; // [660:469]
+    pinmux_reg2hw_periph_insel_mreg_t [34:0] periph_insel; // [678:469]
     pinmux_reg2hw_mio_outsel_mreg_t [31:0] mio_outsel; // [468:277]
     pinmux_reg2hw_mio_out_sleep_val_mreg_t [31:0] mio_out_sleep_val; // [276:213]
     pinmux_reg2hw_dio_out_sleep_val_mreg_t [14:0] dio_out_sleep_val; // [212:168]
@@ -179,7 +179,7 @@
     4'b 1111, // index[ 4] PINMUX_PERIPH_INSEL_3
     4'b 1111, // index[ 5] PINMUX_PERIPH_INSEL_4
     4'b 1111, // index[ 6] PINMUX_PERIPH_INSEL_5
-    4'b 0011, // index[ 7] PINMUX_PERIPH_INSEL_6
+    4'b 1111, // index[ 7] PINMUX_PERIPH_INSEL_6
     4'b 1111, // index[ 8] PINMUX_MIO_OUTSEL_0
     4'b 1111, // index[ 9] PINMUX_MIO_OUTSEL_1
     4'b 1111, // index[10] PINMUX_MIO_OUTSEL_2
diff --git a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
index e5a80d6..f959fc5 100644
--- a/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
+++ b/hw/top_earlgrey/ip/pinmux/rtl/autogen/pinmux_reg_top.sv
@@ -170,6 +170,15 @@
   logic [5:0] periph_insel_6_in_31_qs;
   logic [5:0] periph_insel_6_in_31_wd;
   logic periph_insel_6_in_31_we;
+  logic [5:0] periph_insel_6_in_32_qs;
+  logic [5:0] periph_insel_6_in_32_wd;
+  logic periph_insel_6_in_32_we;
+  logic [5:0] periph_insel_6_in_33_qs;
+  logic [5:0] periph_insel_6_in_33_wd;
+  logic periph_insel_6_in_33_we;
+  logic [5:0] periph_insel_6_in_34_qs;
+  logic [5:0] periph_insel_6_in_34_wd;
+  logic periph_insel_6_in_34_we;
   logic [5:0] mio_outsel_0_out_0_qs;
   logic [5:0] mio_outsel_0_out_0_wd;
   logic mio_outsel_0_out_0_we;
@@ -1481,6 +1490,84 @@
   );
 
 
+  // F[in_32]: 17:12
+  prim_subreg #(
+    .DW      (6),
+    .SWACCESS("RW"),
+    .RESVAL  (6'h0)
+  ) u_periph_insel_6_in_32 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (periph_insel_6_in_32_we & regen_qs),
+    .wd     (periph_insel_6_in_32_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.periph_insel[32].q ),
+
+    // to register interface (read)
+    .qs     (periph_insel_6_in_32_qs)
+  );
+
+
+  // F[in_33]: 23:18
+  prim_subreg #(
+    .DW      (6),
+    .SWACCESS("RW"),
+    .RESVAL  (6'h0)
+  ) u_periph_insel_6_in_33 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (periph_insel_6_in_33_we & regen_qs),
+    .wd     (periph_insel_6_in_33_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.periph_insel[33].q ),
+
+    // to register interface (read)
+    .qs     (periph_insel_6_in_33_qs)
+  );
+
+
+  // F[in_34]: 29:24
+  prim_subreg #(
+    .DW      (6),
+    .SWACCESS("RW"),
+    .RESVAL  (6'h0)
+  ) u_periph_insel_6_in_34 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface (qualified with register enable)
+    .we     (periph_insel_6_in_34_we & regen_qs),
+    .wd     (periph_insel_6_in_34_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.periph_insel[34].q ),
+
+    // to register interface (read)
+    .qs     (periph_insel_6_in_34_qs)
+  );
+
+
 
 
   // Subregister 0 of Multireg mio_outsel
@@ -5027,6 +5114,15 @@
   assign periph_insel_6_in_31_we = addr_hit[7] & reg_we & ~wr_err;
   assign periph_insel_6_in_31_wd = reg_wdata[11:6];
 
+  assign periph_insel_6_in_32_we = addr_hit[7] & reg_we & ~wr_err;
+  assign periph_insel_6_in_32_wd = reg_wdata[17:12];
+
+  assign periph_insel_6_in_33_we = addr_hit[7] & reg_we & ~wr_err;
+  assign periph_insel_6_in_33_wd = reg_wdata[23:18];
+
+  assign periph_insel_6_in_34_we = addr_hit[7] & reg_we & ~wr_err;
+  assign periph_insel_6_in_34_wd = reg_wdata[29:24];
+
   assign mio_outsel_0_out_0_we = addr_hit[8] & reg_we & ~wr_err;
   assign mio_outsel_0_out_0_wd = reg_wdata[5:0];
 
@@ -5514,6 +5610,9 @@
       addr_hit[7]: begin
         reg_rdata_next[5:0] = periph_insel_6_in_30_qs;
         reg_rdata_next[11:6] = periph_insel_6_in_31_qs;
+        reg_rdata_next[17:12] = periph_insel_6_in_32_qs;
+        reg_rdata_next[23:18] = periph_insel_6_in_33_qs;
+        reg_rdata_next[29:24] = periph_insel_6_in_34_qs;
       end
 
       addr_hit[8]: begin
diff --git a/hw/top_earlgrey/ip/rv_plic/data/autogen/rv_plic.hjson b/hw/top_earlgrey/ip/rv_plic/data/autogen/rv_plic.hjson
index 7659895..86ab76b 100644
--- a/hw/top_earlgrey/ip/rv_plic/data/autogen/rv_plic.hjson
+++ b/hw/top_earlgrey/ip/rv_plic/data/autogen/rv_plic.hjson
@@ -25,7 +25,7 @@
     { name: "NumSrc",
       desc: "Number of interrupt sources",
       type: "int",
-      default: "99",
+      default: "123",
       local: "true"
     },
     { name: "NumTarget",
@@ -861,7 +861,199 @@
         { bits: "1:0" }
       ],
     }
-    { skipto: "512" }
+    { name: "PRIO99",
+      desc: "Interrupt Source 99 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO100",
+      desc: "Interrupt Source 100 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO101",
+      desc: "Interrupt Source 101 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO102",
+      desc: "Interrupt Source 102 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO103",
+      desc: "Interrupt Source 103 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO104",
+      desc: "Interrupt Source 104 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO105",
+      desc: "Interrupt Source 105 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO106",
+      desc: "Interrupt Source 106 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO107",
+      desc: "Interrupt Source 107 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO108",
+      desc: "Interrupt Source 108 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO109",
+      desc: "Interrupt Source 109 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO110",
+      desc: "Interrupt Source 110 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO111",
+      desc: "Interrupt Source 111 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO112",
+      desc: "Interrupt Source 112 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO113",
+      desc: "Interrupt Source 113 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO114",
+      desc: "Interrupt Source 114 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO115",
+      desc: "Interrupt Source 115 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO116",
+      desc: "Interrupt Source 116 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO117",
+      desc: "Interrupt Source 117 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO118",
+      desc: "Interrupt Source 118 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO119",
+      desc: "Interrupt Source 119 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO120",
+      desc: "Interrupt Source 120 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO121",
+      desc: "Interrupt Source 121 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { name: "PRIO122",
+      desc: "Interrupt Source 122 Priority",
+      swaccess: "rw",
+      hwaccess: "hro",
+      fields: [
+        { bits: "1:0" }
+      ],
+    }
+    { skipto: "768" }
     { multireg: {
         name: "IE0",
         desc: "Interrupt Enable for Target 0",
diff --git a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
index 5e45d1f..f03bf33 100644
--- a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
+++ b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic.sv
@@ -193,11 +193,35 @@
   assign prio[96] = reg2hw.prio96.q;
   assign prio[97] = reg2hw.prio97.q;
   assign prio[98] = reg2hw.prio98.q;
+  assign prio[99] = reg2hw.prio99.q;
+  assign prio[100] = reg2hw.prio100.q;
+  assign prio[101] = reg2hw.prio101.q;
+  assign prio[102] = reg2hw.prio102.q;
+  assign prio[103] = reg2hw.prio103.q;
+  assign prio[104] = reg2hw.prio104.q;
+  assign prio[105] = reg2hw.prio105.q;
+  assign prio[106] = reg2hw.prio106.q;
+  assign prio[107] = reg2hw.prio107.q;
+  assign prio[108] = reg2hw.prio108.q;
+  assign prio[109] = reg2hw.prio109.q;
+  assign prio[110] = reg2hw.prio110.q;
+  assign prio[111] = reg2hw.prio111.q;
+  assign prio[112] = reg2hw.prio112.q;
+  assign prio[113] = reg2hw.prio113.q;
+  assign prio[114] = reg2hw.prio114.q;
+  assign prio[115] = reg2hw.prio115.q;
+  assign prio[116] = reg2hw.prio116.q;
+  assign prio[117] = reg2hw.prio117.q;
+  assign prio[118] = reg2hw.prio118.q;
+  assign prio[119] = reg2hw.prio119.q;
+  assign prio[120] = reg2hw.prio120.q;
+  assign prio[121] = reg2hw.prio121.q;
+  assign prio[122] = reg2hw.prio122.q;
 
   //////////////////////
   // Interrupt Enable //
   //////////////////////
-  for (genvar s = 0; s < 99; s++) begin : gen_ie0
+  for (genvar s = 0; s < 123; s++) begin : gen_ie0
     assign ie[0][s] = reg2hw.ie0[s].q;
   end
 
@@ -223,7 +247,7 @@
   ////////
   // IP //
   ////////
-  for (genvar s = 0; s < 99; s++) begin : gen_ip
+  for (genvar s = 0; s < 123; s++) begin : gen_ip
     assign hw2reg.ip[s].de = 1'b1; // Always write
     assign hw2reg.ip[s].d  = ip[s];
   end
@@ -231,7 +255,7 @@
   ///////////////////////////////////
   // Detection:: 0: Level, 1: Edge //
   ///////////////////////////////////
-  for (genvar s = 0; s < 99; s++) begin : gen_le
+  for (genvar s = 0; s < 123; s++) begin : gen_le
     assign le[s] = reg2hw.le[s].q;
   end
 
diff --git a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv
index bf7827a..3eb1881 100644
--- a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv
+++ b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_pkg.sv
@@ -7,7 +7,7 @@
 package rv_plic_reg_pkg;
 
   // Param list
-  parameter int NumSrc = 99;
+  parameter int NumSrc = 123;
   parameter int NumTarget = 1;
   parameter int PrioWidth = 2;
 
@@ -418,6 +418,102 @@
   } rv_plic_reg2hw_prio98_reg_t;
 
   typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio99_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio100_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio101_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio102_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio103_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio104_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio105_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio106_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio107_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio108_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio109_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio110_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio111_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio112_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio113_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio114_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio115_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio116_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio117_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio118_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio119_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio120_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio121_reg_t;
+
+  typedef struct packed {
+    logic [1:0]  q;
+  } rv_plic_reg2hw_prio122_reg_t;
+
+  typedef struct packed {
     logic        q;
   } rv_plic_reg2hw_ie0_mreg_t;
 
@@ -450,107 +546,131 @@
   // Register to internal design logic //
   ///////////////////////////////////////
   typedef struct packed {
-    rv_plic_reg2hw_le_mreg_t [98:0] le; // [407:309]
-    rv_plic_reg2hw_prio0_reg_t prio0; // [308:307]
-    rv_plic_reg2hw_prio1_reg_t prio1; // [306:305]
-    rv_plic_reg2hw_prio2_reg_t prio2; // [304:303]
-    rv_plic_reg2hw_prio3_reg_t prio3; // [302:301]
-    rv_plic_reg2hw_prio4_reg_t prio4; // [300:299]
-    rv_plic_reg2hw_prio5_reg_t prio5; // [298:297]
-    rv_plic_reg2hw_prio6_reg_t prio6; // [296:295]
-    rv_plic_reg2hw_prio7_reg_t prio7; // [294:293]
-    rv_plic_reg2hw_prio8_reg_t prio8; // [292:291]
-    rv_plic_reg2hw_prio9_reg_t prio9; // [290:289]
-    rv_plic_reg2hw_prio10_reg_t prio10; // [288:287]
-    rv_plic_reg2hw_prio11_reg_t prio11; // [286:285]
-    rv_plic_reg2hw_prio12_reg_t prio12; // [284:283]
-    rv_plic_reg2hw_prio13_reg_t prio13; // [282:281]
-    rv_plic_reg2hw_prio14_reg_t prio14; // [280:279]
-    rv_plic_reg2hw_prio15_reg_t prio15; // [278:277]
-    rv_plic_reg2hw_prio16_reg_t prio16; // [276:275]
-    rv_plic_reg2hw_prio17_reg_t prio17; // [274:273]
-    rv_plic_reg2hw_prio18_reg_t prio18; // [272:271]
-    rv_plic_reg2hw_prio19_reg_t prio19; // [270:269]
-    rv_plic_reg2hw_prio20_reg_t prio20; // [268:267]
-    rv_plic_reg2hw_prio21_reg_t prio21; // [266:265]
-    rv_plic_reg2hw_prio22_reg_t prio22; // [264:263]
-    rv_plic_reg2hw_prio23_reg_t prio23; // [262:261]
-    rv_plic_reg2hw_prio24_reg_t prio24; // [260:259]
-    rv_plic_reg2hw_prio25_reg_t prio25; // [258:257]
-    rv_plic_reg2hw_prio26_reg_t prio26; // [256:255]
-    rv_plic_reg2hw_prio27_reg_t prio27; // [254:253]
-    rv_plic_reg2hw_prio28_reg_t prio28; // [252:251]
-    rv_plic_reg2hw_prio29_reg_t prio29; // [250:249]
-    rv_plic_reg2hw_prio30_reg_t prio30; // [248:247]
-    rv_plic_reg2hw_prio31_reg_t prio31; // [246:245]
-    rv_plic_reg2hw_prio32_reg_t prio32; // [244:243]
-    rv_plic_reg2hw_prio33_reg_t prio33; // [242:241]
-    rv_plic_reg2hw_prio34_reg_t prio34; // [240:239]
-    rv_plic_reg2hw_prio35_reg_t prio35; // [238:237]
-    rv_plic_reg2hw_prio36_reg_t prio36; // [236:235]
-    rv_plic_reg2hw_prio37_reg_t prio37; // [234:233]
-    rv_plic_reg2hw_prio38_reg_t prio38; // [232:231]
-    rv_plic_reg2hw_prio39_reg_t prio39; // [230:229]
-    rv_plic_reg2hw_prio40_reg_t prio40; // [228:227]
-    rv_plic_reg2hw_prio41_reg_t prio41; // [226:225]
-    rv_plic_reg2hw_prio42_reg_t prio42; // [224:223]
-    rv_plic_reg2hw_prio43_reg_t prio43; // [222:221]
-    rv_plic_reg2hw_prio44_reg_t prio44; // [220:219]
-    rv_plic_reg2hw_prio45_reg_t prio45; // [218:217]
-    rv_plic_reg2hw_prio46_reg_t prio46; // [216:215]
-    rv_plic_reg2hw_prio47_reg_t prio47; // [214:213]
-    rv_plic_reg2hw_prio48_reg_t prio48; // [212:211]
-    rv_plic_reg2hw_prio49_reg_t prio49; // [210:209]
-    rv_plic_reg2hw_prio50_reg_t prio50; // [208:207]
-    rv_plic_reg2hw_prio51_reg_t prio51; // [206:205]
-    rv_plic_reg2hw_prio52_reg_t prio52; // [204:203]
-    rv_plic_reg2hw_prio53_reg_t prio53; // [202:201]
-    rv_plic_reg2hw_prio54_reg_t prio54; // [200:199]
-    rv_plic_reg2hw_prio55_reg_t prio55; // [198:197]
-    rv_plic_reg2hw_prio56_reg_t prio56; // [196:195]
-    rv_plic_reg2hw_prio57_reg_t prio57; // [194:193]
-    rv_plic_reg2hw_prio58_reg_t prio58; // [192:191]
-    rv_plic_reg2hw_prio59_reg_t prio59; // [190:189]
-    rv_plic_reg2hw_prio60_reg_t prio60; // [188:187]
-    rv_plic_reg2hw_prio61_reg_t prio61; // [186:185]
-    rv_plic_reg2hw_prio62_reg_t prio62; // [184:183]
-    rv_plic_reg2hw_prio63_reg_t prio63; // [182:181]
-    rv_plic_reg2hw_prio64_reg_t prio64; // [180:179]
-    rv_plic_reg2hw_prio65_reg_t prio65; // [178:177]
-    rv_plic_reg2hw_prio66_reg_t prio66; // [176:175]
-    rv_plic_reg2hw_prio67_reg_t prio67; // [174:173]
-    rv_plic_reg2hw_prio68_reg_t prio68; // [172:171]
-    rv_plic_reg2hw_prio69_reg_t prio69; // [170:169]
-    rv_plic_reg2hw_prio70_reg_t prio70; // [168:167]
-    rv_plic_reg2hw_prio71_reg_t prio71; // [166:165]
-    rv_plic_reg2hw_prio72_reg_t prio72; // [164:163]
-    rv_plic_reg2hw_prio73_reg_t prio73; // [162:161]
-    rv_plic_reg2hw_prio74_reg_t prio74; // [160:159]
-    rv_plic_reg2hw_prio75_reg_t prio75; // [158:157]
-    rv_plic_reg2hw_prio76_reg_t prio76; // [156:155]
-    rv_plic_reg2hw_prio77_reg_t prio77; // [154:153]
-    rv_plic_reg2hw_prio78_reg_t prio78; // [152:151]
-    rv_plic_reg2hw_prio79_reg_t prio79; // [150:149]
-    rv_plic_reg2hw_prio80_reg_t prio80; // [148:147]
-    rv_plic_reg2hw_prio81_reg_t prio81; // [146:145]
-    rv_plic_reg2hw_prio82_reg_t prio82; // [144:143]
-    rv_plic_reg2hw_prio83_reg_t prio83; // [142:141]
-    rv_plic_reg2hw_prio84_reg_t prio84; // [140:139]
-    rv_plic_reg2hw_prio85_reg_t prio85; // [138:137]
-    rv_plic_reg2hw_prio86_reg_t prio86; // [136:135]
-    rv_plic_reg2hw_prio87_reg_t prio87; // [134:133]
-    rv_plic_reg2hw_prio88_reg_t prio88; // [132:131]
-    rv_plic_reg2hw_prio89_reg_t prio89; // [130:129]
-    rv_plic_reg2hw_prio90_reg_t prio90; // [128:127]
-    rv_plic_reg2hw_prio91_reg_t prio91; // [126:125]
-    rv_plic_reg2hw_prio92_reg_t prio92; // [124:123]
-    rv_plic_reg2hw_prio93_reg_t prio93; // [122:121]
-    rv_plic_reg2hw_prio94_reg_t prio94; // [120:119]
-    rv_plic_reg2hw_prio95_reg_t prio95; // [118:117]
-    rv_plic_reg2hw_prio96_reg_t prio96; // [116:115]
-    rv_plic_reg2hw_prio97_reg_t prio97; // [114:113]
-    rv_plic_reg2hw_prio98_reg_t prio98; // [112:111]
-    rv_plic_reg2hw_ie0_mreg_t [98:0] ie0; // [110:12]
+    rv_plic_reg2hw_le_mreg_t [122:0] le; // [503:381]
+    rv_plic_reg2hw_prio0_reg_t prio0; // [380:379]
+    rv_plic_reg2hw_prio1_reg_t prio1; // [378:377]
+    rv_plic_reg2hw_prio2_reg_t prio2; // [376:375]
+    rv_plic_reg2hw_prio3_reg_t prio3; // [374:373]
+    rv_plic_reg2hw_prio4_reg_t prio4; // [372:371]
+    rv_plic_reg2hw_prio5_reg_t prio5; // [370:369]
+    rv_plic_reg2hw_prio6_reg_t prio6; // [368:367]
+    rv_plic_reg2hw_prio7_reg_t prio7; // [366:365]
+    rv_plic_reg2hw_prio8_reg_t prio8; // [364:363]
+    rv_plic_reg2hw_prio9_reg_t prio9; // [362:361]
+    rv_plic_reg2hw_prio10_reg_t prio10; // [360:359]
+    rv_plic_reg2hw_prio11_reg_t prio11; // [358:357]
+    rv_plic_reg2hw_prio12_reg_t prio12; // [356:355]
+    rv_plic_reg2hw_prio13_reg_t prio13; // [354:353]
+    rv_plic_reg2hw_prio14_reg_t prio14; // [352:351]
+    rv_plic_reg2hw_prio15_reg_t prio15; // [350:349]
+    rv_plic_reg2hw_prio16_reg_t prio16; // [348:347]
+    rv_plic_reg2hw_prio17_reg_t prio17; // [346:345]
+    rv_plic_reg2hw_prio18_reg_t prio18; // [344:343]
+    rv_plic_reg2hw_prio19_reg_t prio19; // [342:341]
+    rv_plic_reg2hw_prio20_reg_t prio20; // [340:339]
+    rv_plic_reg2hw_prio21_reg_t prio21; // [338:337]
+    rv_plic_reg2hw_prio22_reg_t prio22; // [336:335]
+    rv_plic_reg2hw_prio23_reg_t prio23; // [334:333]
+    rv_plic_reg2hw_prio24_reg_t prio24; // [332:331]
+    rv_plic_reg2hw_prio25_reg_t prio25; // [330:329]
+    rv_plic_reg2hw_prio26_reg_t prio26; // [328:327]
+    rv_plic_reg2hw_prio27_reg_t prio27; // [326:325]
+    rv_plic_reg2hw_prio28_reg_t prio28; // [324:323]
+    rv_plic_reg2hw_prio29_reg_t prio29; // [322:321]
+    rv_plic_reg2hw_prio30_reg_t prio30; // [320:319]
+    rv_plic_reg2hw_prio31_reg_t prio31; // [318:317]
+    rv_plic_reg2hw_prio32_reg_t prio32; // [316:315]
+    rv_plic_reg2hw_prio33_reg_t prio33; // [314:313]
+    rv_plic_reg2hw_prio34_reg_t prio34; // [312:311]
+    rv_plic_reg2hw_prio35_reg_t prio35; // [310:309]
+    rv_plic_reg2hw_prio36_reg_t prio36; // [308:307]
+    rv_plic_reg2hw_prio37_reg_t prio37; // [306:305]
+    rv_plic_reg2hw_prio38_reg_t prio38; // [304:303]
+    rv_plic_reg2hw_prio39_reg_t prio39; // [302:301]
+    rv_plic_reg2hw_prio40_reg_t prio40; // [300:299]
+    rv_plic_reg2hw_prio41_reg_t prio41; // [298:297]
+    rv_plic_reg2hw_prio42_reg_t prio42; // [296:295]
+    rv_plic_reg2hw_prio43_reg_t prio43; // [294:293]
+    rv_plic_reg2hw_prio44_reg_t prio44; // [292:291]
+    rv_plic_reg2hw_prio45_reg_t prio45; // [290:289]
+    rv_plic_reg2hw_prio46_reg_t prio46; // [288:287]
+    rv_plic_reg2hw_prio47_reg_t prio47; // [286:285]
+    rv_plic_reg2hw_prio48_reg_t prio48; // [284:283]
+    rv_plic_reg2hw_prio49_reg_t prio49; // [282:281]
+    rv_plic_reg2hw_prio50_reg_t prio50; // [280:279]
+    rv_plic_reg2hw_prio51_reg_t prio51; // [278:277]
+    rv_plic_reg2hw_prio52_reg_t prio52; // [276:275]
+    rv_plic_reg2hw_prio53_reg_t prio53; // [274:273]
+    rv_plic_reg2hw_prio54_reg_t prio54; // [272:271]
+    rv_plic_reg2hw_prio55_reg_t prio55; // [270:269]
+    rv_plic_reg2hw_prio56_reg_t prio56; // [268:267]
+    rv_plic_reg2hw_prio57_reg_t prio57; // [266:265]
+    rv_plic_reg2hw_prio58_reg_t prio58; // [264:263]
+    rv_plic_reg2hw_prio59_reg_t prio59; // [262:261]
+    rv_plic_reg2hw_prio60_reg_t prio60; // [260:259]
+    rv_plic_reg2hw_prio61_reg_t prio61; // [258:257]
+    rv_plic_reg2hw_prio62_reg_t prio62; // [256:255]
+    rv_plic_reg2hw_prio63_reg_t prio63; // [254:253]
+    rv_plic_reg2hw_prio64_reg_t prio64; // [252:251]
+    rv_plic_reg2hw_prio65_reg_t prio65; // [250:249]
+    rv_plic_reg2hw_prio66_reg_t prio66; // [248:247]
+    rv_plic_reg2hw_prio67_reg_t prio67; // [246:245]
+    rv_plic_reg2hw_prio68_reg_t prio68; // [244:243]
+    rv_plic_reg2hw_prio69_reg_t prio69; // [242:241]
+    rv_plic_reg2hw_prio70_reg_t prio70; // [240:239]
+    rv_plic_reg2hw_prio71_reg_t prio71; // [238:237]
+    rv_plic_reg2hw_prio72_reg_t prio72; // [236:235]
+    rv_plic_reg2hw_prio73_reg_t prio73; // [234:233]
+    rv_plic_reg2hw_prio74_reg_t prio74; // [232:231]
+    rv_plic_reg2hw_prio75_reg_t prio75; // [230:229]
+    rv_plic_reg2hw_prio76_reg_t prio76; // [228:227]
+    rv_plic_reg2hw_prio77_reg_t prio77; // [226:225]
+    rv_plic_reg2hw_prio78_reg_t prio78; // [224:223]
+    rv_plic_reg2hw_prio79_reg_t prio79; // [222:221]
+    rv_plic_reg2hw_prio80_reg_t prio80; // [220:219]
+    rv_plic_reg2hw_prio81_reg_t prio81; // [218:217]
+    rv_plic_reg2hw_prio82_reg_t prio82; // [216:215]
+    rv_plic_reg2hw_prio83_reg_t prio83; // [214:213]
+    rv_plic_reg2hw_prio84_reg_t prio84; // [212:211]
+    rv_plic_reg2hw_prio85_reg_t prio85; // [210:209]
+    rv_plic_reg2hw_prio86_reg_t prio86; // [208:207]
+    rv_plic_reg2hw_prio87_reg_t prio87; // [206:205]
+    rv_plic_reg2hw_prio88_reg_t prio88; // [204:203]
+    rv_plic_reg2hw_prio89_reg_t prio89; // [202:201]
+    rv_plic_reg2hw_prio90_reg_t prio90; // [200:199]
+    rv_plic_reg2hw_prio91_reg_t prio91; // [198:197]
+    rv_plic_reg2hw_prio92_reg_t prio92; // [196:195]
+    rv_plic_reg2hw_prio93_reg_t prio93; // [194:193]
+    rv_plic_reg2hw_prio94_reg_t prio94; // [192:191]
+    rv_plic_reg2hw_prio95_reg_t prio95; // [190:189]
+    rv_plic_reg2hw_prio96_reg_t prio96; // [188:187]
+    rv_plic_reg2hw_prio97_reg_t prio97; // [186:185]
+    rv_plic_reg2hw_prio98_reg_t prio98; // [184:183]
+    rv_plic_reg2hw_prio99_reg_t prio99; // [182:181]
+    rv_plic_reg2hw_prio100_reg_t prio100; // [180:179]
+    rv_plic_reg2hw_prio101_reg_t prio101; // [178:177]
+    rv_plic_reg2hw_prio102_reg_t prio102; // [176:175]
+    rv_plic_reg2hw_prio103_reg_t prio103; // [174:173]
+    rv_plic_reg2hw_prio104_reg_t prio104; // [172:171]
+    rv_plic_reg2hw_prio105_reg_t prio105; // [170:169]
+    rv_plic_reg2hw_prio106_reg_t prio106; // [168:167]
+    rv_plic_reg2hw_prio107_reg_t prio107; // [166:165]
+    rv_plic_reg2hw_prio108_reg_t prio108; // [164:163]
+    rv_plic_reg2hw_prio109_reg_t prio109; // [162:161]
+    rv_plic_reg2hw_prio110_reg_t prio110; // [160:159]
+    rv_plic_reg2hw_prio111_reg_t prio111; // [158:157]
+    rv_plic_reg2hw_prio112_reg_t prio112; // [156:155]
+    rv_plic_reg2hw_prio113_reg_t prio113; // [154:153]
+    rv_plic_reg2hw_prio114_reg_t prio114; // [152:151]
+    rv_plic_reg2hw_prio115_reg_t prio115; // [150:149]
+    rv_plic_reg2hw_prio116_reg_t prio116; // [148:147]
+    rv_plic_reg2hw_prio117_reg_t prio117; // [146:145]
+    rv_plic_reg2hw_prio118_reg_t prio118; // [144:143]
+    rv_plic_reg2hw_prio119_reg_t prio119; // [142:141]
+    rv_plic_reg2hw_prio120_reg_t prio120; // [140:139]
+    rv_plic_reg2hw_prio121_reg_t prio121; // [138:137]
+    rv_plic_reg2hw_prio122_reg_t prio122; // [136:135]
+    rv_plic_reg2hw_ie0_mreg_t [122:0] ie0; // [134:12]
     rv_plic_reg2hw_threshold0_reg_t threshold0; // [11:10]
     rv_plic_reg2hw_cc0_reg_t cc0; // [9:1]
     rv_plic_reg2hw_msip0_reg_t msip0; // [0:0]
@@ -560,7 +680,7 @@
   // Internal design logic to register //
   ///////////////////////////////////////
   typedef struct packed {
-    rv_plic_hw2reg_ip_mreg_t [98:0] ip; // [204:7]
+    rv_plic_hw2reg_ip_mreg_t [122:0] ip; // [252:7]
     rv_plic_hw2reg_cc0_reg_t cc0; // [6:0]
   } rv_plic_hw2reg_t;
 
@@ -672,13 +792,37 @@
   parameter logic [BlockAw-1:0] RV_PLIC_PRIO96_OFFSET = 10'h 1a0;
   parameter logic [BlockAw-1:0] RV_PLIC_PRIO97_OFFSET = 10'h 1a4;
   parameter logic [BlockAw-1:0] RV_PLIC_PRIO98_OFFSET = 10'h 1a8;
-  parameter logic [BlockAw-1:0] RV_PLIC_IE0_0_OFFSET = 10'h 200;
-  parameter logic [BlockAw-1:0] RV_PLIC_IE0_1_OFFSET = 10'h 204;
-  parameter logic [BlockAw-1:0] RV_PLIC_IE0_2_OFFSET = 10'h 208;
-  parameter logic [BlockAw-1:0] RV_PLIC_IE0_3_OFFSET = 10'h 20c;
-  parameter logic [BlockAw-1:0] RV_PLIC_THRESHOLD0_OFFSET = 10'h 210;
-  parameter logic [BlockAw-1:0] RV_PLIC_CC0_OFFSET = 10'h 214;
-  parameter logic [BlockAw-1:0] RV_PLIC_MSIP0_OFFSET = 10'h 218;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO99_OFFSET = 10'h 1ac;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO100_OFFSET = 10'h 1b0;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO101_OFFSET = 10'h 1b4;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO102_OFFSET = 10'h 1b8;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO103_OFFSET = 10'h 1bc;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO104_OFFSET = 10'h 1c0;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO105_OFFSET = 10'h 1c4;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO106_OFFSET = 10'h 1c8;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO107_OFFSET = 10'h 1cc;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO108_OFFSET = 10'h 1d0;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO109_OFFSET = 10'h 1d4;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO110_OFFSET = 10'h 1d8;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO111_OFFSET = 10'h 1dc;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO112_OFFSET = 10'h 1e0;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO113_OFFSET = 10'h 1e4;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO114_OFFSET = 10'h 1e8;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO115_OFFSET = 10'h 1ec;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO116_OFFSET = 10'h 1f0;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO117_OFFSET = 10'h 1f4;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO118_OFFSET = 10'h 1f8;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO119_OFFSET = 10'h 1fc;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO120_OFFSET = 10'h 200;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO121_OFFSET = 10'h 204;
+  parameter logic [BlockAw-1:0] RV_PLIC_PRIO122_OFFSET = 10'h 208;
+  parameter logic [BlockAw-1:0] RV_PLIC_IE0_0_OFFSET = 10'h 300;
+  parameter logic [BlockAw-1:0] RV_PLIC_IE0_1_OFFSET = 10'h 304;
+  parameter logic [BlockAw-1:0] RV_PLIC_IE0_2_OFFSET = 10'h 308;
+  parameter logic [BlockAw-1:0] RV_PLIC_IE0_3_OFFSET = 10'h 30c;
+  parameter logic [BlockAw-1:0] RV_PLIC_THRESHOLD0_OFFSET = 10'h 310;
+  parameter logic [BlockAw-1:0] RV_PLIC_CC0_OFFSET = 10'h 314;
+  parameter logic [BlockAw-1:0] RV_PLIC_MSIP0_OFFSET = 10'h 318;
 
 
   // Register Index
@@ -790,6 +934,30 @@
     RV_PLIC_PRIO96,
     RV_PLIC_PRIO97,
     RV_PLIC_PRIO98,
+    RV_PLIC_PRIO99,
+    RV_PLIC_PRIO100,
+    RV_PLIC_PRIO101,
+    RV_PLIC_PRIO102,
+    RV_PLIC_PRIO103,
+    RV_PLIC_PRIO104,
+    RV_PLIC_PRIO105,
+    RV_PLIC_PRIO106,
+    RV_PLIC_PRIO107,
+    RV_PLIC_PRIO108,
+    RV_PLIC_PRIO109,
+    RV_PLIC_PRIO110,
+    RV_PLIC_PRIO111,
+    RV_PLIC_PRIO112,
+    RV_PLIC_PRIO113,
+    RV_PLIC_PRIO114,
+    RV_PLIC_PRIO115,
+    RV_PLIC_PRIO116,
+    RV_PLIC_PRIO117,
+    RV_PLIC_PRIO118,
+    RV_PLIC_PRIO119,
+    RV_PLIC_PRIO120,
+    RV_PLIC_PRIO121,
+    RV_PLIC_PRIO122,
     RV_PLIC_IE0_0,
     RV_PLIC_IE0_1,
     RV_PLIC_IE0_2,
@@ -800,15 +968,15 @@
   } rv_plic_id_e;
 
   // Register width information to check illegal writes
-  parameter logic [3:0] RV_PLIC_PERMIT [114] = '{
+  parameter logic [3:0] RV_PLIC_PERMIT [138] = '{
     4'b 1111, // index[  0] RV_PLIC_IP_0
     4'b 1111, // index[  1] RV_PLIC_IP_1
     4'b 1111, // index[  2] RV_PLIC_IP_2
-    4'b 0001, // index[  3] RV_PLIC_IP_3
+    4'b 1111, // index[  3] RV_PLIC_IP_3
     4'b 1111, // index[  4] RV_PLIC_LE_0
     4'b 1111, // index[  5] RV_PLIC_LE_1
     4'b 1111, // index[  6] RV_PLIC_LE_2
-    4'b 0001, // index[  7] RV_PLIC_LE_3
+    4'b 1111, // index[  7] RV_PLIC_LE_3
     4'b 0001, // index[  8] RV_PLIC_PRIO0
     4'b 0001, // index[  9] RV_PLIC_PRIO1
     4'b 0001, // index[ 10] RV_PLIC_PRIO2
@@ -908,13 +1076,37 @@
     4'b 0001, // index[104] RV_PLIC_PRIO96
     4'b 0001, // index[105] RV_PLIC_PRIO97
     4'b 0001, // index[106] RV_PLIC_PRIO98
-    4'b 1111, // index[107] RV_PLIC_IE0_0
-    4'b 1111, // index[108] RV_PLIC_IE0_1
-    4'b 1111, // index[109] RV_PLIC_IE0_2
-    4'b 0001, // index[110] RV_PLIC_IE0_3
-    4'b 0001, // index[111] RV_PLIC_THRESHOLD0
-    4'b 0001, // index[112] RV_PLIC_CC0
-    4'b 0001  // index[113] RV_PLIC_MSIP0
+    4'b 0001, // index[107] RV_PLIC_PRIO99
+    4'b 0001, // index[108] RV_PLIC_PRIO100
+    4'b 0001, // index[109] RV_PLIC_PRIO101
+    4'b 0001, // index[110] RV_PLIC_PRIO102
+    4'b 0001, // index[111] RV_PLIC_PRIO103
+    4'b 0001, // index[112] RV_PLIC_PRIO104
+    4'b 0001, // index[113] RV_PLIC_PRIO105
+    4'b 0001, // index[114] RV_PLIC_PRIO106
+    4'b 0001, // index[115] RV_PLIC_PRIO107
+    4'b 0001, // index[116] RV_PLIC_PRIO108
+    4'b 0001, // index[117] RV_PLIC_PRIO109
+    4'b 0001, // index[118] RV_PLIC_PRIO110
+    4'b 0001, // index[119] RV_PLIC_PRIO111
+    4'b 0001, // index[120] RV_PLIC_PRIO112
+    4'b 0001, // index[121] RV_PLIC_PRIO113
+    4'b 0001, // index[122] RV_PLIC_PRIO114
+    4'b 0001, // index[123] RV_PLIC_PRIO115
+    4'b 0001, // index[124] RV_PLIC_PRIO116
+    4'b 0001, // index[125] RV_PLIC_PRIO117
+    4'b 0001, // index[126] RV_PLIC_PRIO118
+    4'b 0001, // index[127] RV_PLIC_PRIO119
+    4'b 0001, // index[128] RV_PLIC_PRIO120
+    4'b 0001, // index[129] RV_PLIC_PRIO121
+    4'b 0001, // index[130] RV_PLIC_PRIO122
+    4'b 1111, // index[131] RV_PLIC_IE0_0
+    4'b 1111, // index[132] RV_PLIC_IE0_1
+    4'b 1111, // index[133] RV_PLIC_IE0_2
+    4'b 1111, // index[134] RV_PLIC_IE0_3
+    4'b 0001, // index[135] RV_PLIC_THRESHOLD0
+    4'b 0001, // index[136] RV_PLIC_CC0
+    4'b 0001  // index[137] RV_PLIC_MSIP0
   };
 endpackage
 
diff --git a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
index 7779c2a..d085332 100644
--- a/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
+++ b/hw/top_earlgrey/ip/rv_plic/rtl/autogen/rv_plic_reg_top.sv
@@ -170,6 +170,30 @@
   logic ip_3_p_96_qs;
   logic ip_3_p_97_qs;
   logic ip_3_p_98_qs;
+  logic ip_3_p_99_qs;
+  logic ip_3_p_100_qs;
+  logic ip_3_p_101_qs;
+  logic ip_3_p_102_qs;
+  logic ip_3_p_103_qs;
+  logic ip_3_p_104_qs;
+  logic ip_3_p_105_qs;
+  logic ip_3_p_106_qs;
+  logic ip_3_p_107_qs;
+  logic ip_3_p_108_qs;
+  logic ip_3_p_109_qs;
+  logic ip_3_p_110_qs;
+  logic ip_3_p_111_qs;
+  logic ip_3_p_112_qs;
+  logic ip_3_p_113_qs;
+  logic ip_3_p_114_qs;
+  logic ip_3_p_115_qs;
+  logic ip_3_p_116_qs;
+  logic ip_3_p_117_qs;
+  logic ip_3_p_118_qs;
+  logic ip_3_p_119_qs;
+  logic ip_3_p_120_qs;
+  logic ip_3_p_121_qs;
+  logic ip_3_p_122_qs;
   logic le_0_le_0_qs;
   logic le_0_le_0_wd;
   logic le_0_le_0_we;
@@ -467,6 +491,78 @@
   logic le_3_le_98_qs;
   logic le_3_le_98_wd;
   logic le_3_le_98_we;
+  logic le_3_le_99_qs;
+  logic le_3_le_99_wd;
+  logic le_3_le_99_we;
+  logic le_3_le_100_qs;
+  logic le_3_le_100_wd;
+  logic le_3_le_100_we;
+  logic le_3_le_101_qs;
+  logic le_3_le_101_wd;
+  logic le_3_le_101_we;
+  logic le_3_le_102_qs;
+  logic le_3_le_102_wd;
+  logic le_3_le_102_we;
+  logic le_3_le_103_qs;
+  logic le_3_le_103_wd;
+  logic le_3_le_103_we;
+  logic le_3_le_104_qs;
+  logic le_3_le_104_wd;
+  logic le_3_le_104_we;
+  logic le_3_le_105_qs;
+  logic le_3_le_105_wd;
+  logic le_3_le_105_we;
+  logic le_3_le_106_qs;
+  logic le_3_le_106_wd;
+  logic le_3_le_106_we;
+  logic le_3_le_107_qs;
+  logic le_3_le_107_wd;
+  logic le_3_le_107_we;
+  logic le_3_le_108_qs;
+  logic le_3_le_108_wd;
+  logic le_3_le_108_we;
+  logic le_3_le_109_qs;
+  logic le_3_le_109_wd;
+  logic le_3_le_109_we;
+  logic le_3_le_110_qs;
+  logic le_3_le_110_wd;
+  logic le_3_le_110_we;
+  logic le_3_le_111_qs;
+  logic le_3_le_111_wd;
+  logic le_3_le_111_we;
+  logic le_3_le_112_qs;
+  logic le_3_le_112_wd;
+  logic le_3_le_112_we;
+  logic le_3_le_113_qs;
+  logic le_3_le_113_wd;
+  logic le_3_le_113_we;
+  logic le_3_le_114_qs;
+  logic le_3_le_114_wd;
+  logic le_3_le_114_we;
+  logic le_3_le_115_qs;
+  logic le_3_le_115_wd;
+  logic le_3_le_115_we;
+  logic le_3_le_116_qs;
+  logic le_3_le_116_wd;
+  logic le_3_le_116_we;
+  logic le_3_le_117_qs;
+  logic le_3_le_117_wd;
+  logic le_3_le_117_we;
+  logic le_3_le_118_qs;
+  logic le_3_le_118_wd;
+  logic le_3_le_118_we;
+  logic le_3_le_119_qs;
+  logic le_3_le_119_wd;
+  logic le_3_le_119_we;
+  logic le_3_le_120_qs;
+  logic le_3_le_120_wd;
+  logic le_3_le_120_we;
+  logic le_3_le_121_qs;
+  logic le_3_le_121_wd;
+  logic le_3_le_121_we;
+  logic le_3_le_122_qs;
+  logic le_3_le_122_wd;
+  logic le_3_le_122_we;
   logic [1:0] prio0_qs;
   logic [1:0] prio0_wd;
   logic prio0_we;
@@ -764,6 +860,78 @@
   logic [1:0] prio98_qs;
   logic [1:0] prio98_wd;
   logic prio98_we;
+  logic [1:0] prio99_qs;
+  logic [1:0] prio99_wd;
+  logic prio99_we;
+  logic [1:0] prio100_qs;
+  logic [1:0] prio100_wd;
+  logic prio100_we;
+  logic [1:0] prio101_qs;
+  logic [1:0] prio101_wd;
+  logic prio101_we;
+  logic [1:0] prio102_qs;
+  logic [1:0] prio102_wd;
+  logic prio102_we;
+  logic [1:0] prio103_qs;
+  logic [1:0] prio103_wd;
+  logic prio103_we;
+  logic [1:0] prio104_qs;
+  logic [1:0] prio104_wd;
+  logic prio104_we;
+  logic [1:0] prio105_qs;
+  logic [1:0] prio105_wd;
+  logic prio105_we;
+  logic [1:0] prio106_qs;
+  logic [1:0] prio106_wd;
+  logic prio106_we;
+  logic [1:0] prio107_qs;
+  logic [1:0] prio107_wd;
+  logic prio107_we;
+  logic [1:0] prio108_qs;
+  logic [1:0] prio108_wd;
+  logic prio108_we;
+  logic [1:0] prio109_qs;
+  logic [1:0] prio109_wd;
+  logic prio109_we;
+  logic [1:0] prio110_qs;
+  logic [1:0] prio110_wd;
+  logic prio110_we;
+  logic [1:0] prio111_qs;
+  logic [1:0] prio111_wd;
+  logic prio111_we;
+  logic [1:0] prio112_qs;
+  logic [1:0] prio112_wd;
+  logic prio112_we;
+  logic [1:0] prio113_qs;
+  logic [1:0] prio113_wd;
+  logic prio113_we;
+  logic [1:0] prio114_qs;
+  logic [1:0] prio114_wd;
+  logic prio114_we;
+  logic [1:0] prio115_qs;
+  logic [1:0] prio115_wd;
+  logic prio115_we;
+  logic [1:0] prio116_qs;
+  logic [1:0] prio116_wd;
+  logic prio116_we;
+  logic [1:0] prio117_qs;
+  logic [1:0] prio117_wd;
+  logic prio117_we;
+  logic [1:0] prio118_qs;
+  logic [1:0] prio118_wd;
+  logic prio118_we;
+  logic [1:0] prio119_qs;
+  logic [1:0] prio119_wd;
+  logic prio119_we;
+  logic [1:0] prio120_qs;
+  logic [1:0] prio120_wd;
+  logic prio120_we;
+  logic [1:0] prio121_qs;
+  logic [1:0] prio121_wd;
+  logic prio121_we;
+  logic [1:0] prio122_qs;
+  logic [1:0] prio122_wd;
+  logic prio122_we;
   logic ie0_0_e_0_qs;
   logic ie0_0_e_0_wd;
   logic ie0_0_e_0_we;
@@ -1061,6 +1229,78 @@
   logic ie0_3_e_98_qs;
   logic ie0_3_e_98_wd;
   logic ie0_3_e_98_we;
+  logic ie0_3_e_99_qs;
+  logic ie0_3_e_99_wd;
+  logic ie0_3_e_99_we;
+  logic ie0_3_e_100_qs;
+  logic ie0_3_e_100_wd;
+  logic ie0_3_e_100_we;
+  logic ie0_3_e_101_qs;
+  logic ie0_3_e_101_wd;
+  logic ie0_3_e_101_we;
+  logic ie0_3_e_102_qs;
+  logic ie0_3_e_102_wd;
+  logic ie0_3_e_102_we;
+  logic ie0_3_e_103_qs;
+  logic ie0_3_e_103_wd;
+  logic ie0_3_e_103_we;
+  logic ie0_3_e_104_qs;
+  logic ie0_3_e_104_wd;
+  logic ie0_3_e_104_we;
+  logic ie0_3_e_105_qs;
+  logic ie0_3_e_105_wd;
+  logic ie0_3_e_105_we;
+  logic ie0_3_e_106_qs;
+  logic ie0_3_e_106_wd;
+  logic ie0_3_e_106_we;
+  logic ie0_3_e_107_qs;
+  logic ie0_3_e_107_wd;
+  logic ie0_3_e_107_we;
+  logic ie0_3_e_108_qs;
+  logic ie0_3_e_108_wd;
+  logic ie0_3_e_108_we;
+  logic ie0_3_e_109_qs;
+  logic ie0_3_e_109_wd;
+  logic ie0_3_e_109_we;
+  logic ie0_3_e_110_qs;
+  logic ie0_3_e_110_wd;
+  logic ie0_3_e_110_we;
+  logic ie0_3_e_111_qs;
+  logic ie0_3_e_111_wd;
+  logic ie0_3_e_111_we;
+  logic ie0_3_e_112_qs;
+  logic ie0_3_e_112_wd;
+  logic ie0_3_e_112_we;
+  logic ie0_3_e_113_qs;
+  logic ie0_3_e_113_wd;
+  logic ie0_3_e_113_we;
+  logic ie0_3_e_114_qs;
+  logic ie0_3_e_114_wd;
+  logic ie0_3_e_114_we;
+  logic ie0_3_e_115_qs;
+  logic ie0_3_e_115_wd;
+  logic ie0_3_e_115_we;
+  logic ie0_3_e_116_qs;
+  logic ie0_3_e_116_wd;
+  logic ie0_3_e_116_we;
+  logic ie0_3_e_117_qs;
+  logic ie0_3_e_117_wd;
+  logic ie0_3_e_117_we;
+  logic ie0_3_e_118_qs;
+  logic ie0_3_e_118_wd;
+  logic ie0_3_e_118_we;
+  logic ie0_3_e_119_qs;
+  logic ie0_3_e_119_wd;
+  logic ie0_3_e_119_we;
+  logic ie0_3_e_120_qs;
+  logic ie0_3_e_120_wd;
+  logic ie0_3_e_120_we;
+  logic ie0_3_e_121_qs;
+  logic ie0_3_e_121_wd;
+  logic ie0_3_e_121_we;
+  logic ie0_3_e_122_qs;
+  logic ie0_3_e_122_wd;
+  logic ie0_3_e_122_we;
   logic [1:0] threshold0_qs;
   logic [1:0] threshold0_wd;
   logic threshold0_we;
@@ -3561,6 +3801,606 @@
   );
 
 
+  // F[p_99]: 3:3
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_99 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[99].de),
+    .d      (hw2reg.ip[99].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_99_qs)
+  );
+
+
+  // F[p_100]: 4:4
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_100 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[100].de),
+    .d      (hw2reg.ip[100].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_100_qs)
+  );
+
+
+  // F[p_101]: 5:5
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_101 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[101].de),
+    .d      (hw2reg.ip[101].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_101_qs)
+  );
+
+
+  // F[p_102]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_102 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[102].de),
+    .d      (hw2reg.ip[102].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_102_qs)
+  );
+
+
+  // F[p_103]: 7:7
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_103 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[103].de),
+    .d      (hw2reg.ip[103].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_103_qs)
+  );
+
+
+  // F[p_104]: 8:8
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_104 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[104].de),
+    .d      (hw2reg.ip[104].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_104_qs)
+  );
+
+
+  // F[p_105]: 9:9
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_105 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[105].de),
+    .d      (hw2reg.ip[105].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_105_qs)
+  );
+
+
+  // F[p_106]: 10:10
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_106 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[106].de),
+    .d      (hw2reg.ip[106].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_106_qs)
+  );
+
+
+  // F[p_107]: 11:11
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_107 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[107].de),
+    .d      (hw2reg.ip[107].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_107_qs)
+  );
+
+
+  // F[p_108]: 12:12
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_108 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[108].de),
+    .d      (hw2reg.ip[108].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_108_qs)
+  );
+
+
+  // F[p_109]: 13:13
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_109 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[109].de),
+    .d      (hw2reg.ip[109].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_109_qs)
+  );
+
+
+  // F[p_110]: 14:14
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_110 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[110].de),
+    .d      (hw2reg.ip[110].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_110_qs)
+  );
+
+
+  // F[p_111]: 15:15
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_111 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[111].de),
+    .d      (hw2reg.ip[111].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_111_qs)
+  );
+
+
+  // F[p_112]: 16:16
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_112 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[112].de),
+    .d      (hw2reg.ip[112].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_112_qs)
+  );
+
+
+  // F[p_113]: 17:17
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_113 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[113].de),
+    .d      (hw2reg.ip[113].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_113_qs)
+  );
+
+
+  // F[p_114]: 18:18
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_114 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[114].de),
+    .d      (hw2reg.ip[114].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_114_qs)
+  );
+
+
+  // F[p_115]: 19:19
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_115 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[115].de),
+    .d      (hw2reg.ip[115].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_115_qs)
+  );
+
+
+  // F[p_116]: 20:20
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_116 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[116].de),
+    .d      (hw2reg.ip[116].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_116_qs)
+  );
+
+
+  // F[p_117]: 21:21
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_117 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[117].de),
+    .d      (hw2reg.ip[117].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_117_qs)
+  );
+
+
+  // F[p_118]: 22:22
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_118 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[118].de),
+    .d      (hw2reg.ip[118].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_118_qs)
+  );
+
+
+  // F[p_119]: 23:23
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_119 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[119].de),
+    .d      (hw2reg.ip[119].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_119_qs)
+  );
+
+
+  // F[p_120]: 24:24
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_120 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[120].de),
+    .d      (hw2reg.ip[120].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_120_qs)
+  );
+
+
+  // F[p_121]: 25:25
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_121 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[121].de),
+    .d      (hw2reg.ip[121].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_121_qs)
+  );
+
+
+  // F[p_122]: 26:26
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RO"),
+    .RESVAL  (1'h0)
+  ) u_ip_3_p_122 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    .we     (1'b0),
+    .wd     ('0  ),
+
+    // from internal hardware
+    .de     (hw2reg.ip[122].de),
+    .d      (hw2reg.ip[122].d ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (),
+
+    // to register interface (read)
+    .qs     (ip_3_p_122_qs)
+  );
+
+
 
 
   // Subregister 0 of Multireg le
@@ -6149,6 +6989,630 @@
   );
 
 
+  // F[le_99]: 3:3
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_99 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_99_we),
+    .wd     (le_3_le_99_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[99].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_99_qs)
+  );
+
+
+  // F[le_100]: 4:4
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_100 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_100_we),
+    .wd     (le_3_le_100_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[100].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_100_qs)
+  );
+
+
+  // F[le_101]: 5:5
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_101 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_101_we),
+    .wd     (le_3_le_101_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[101].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_101_qs)
+  );
+
+
+  // F[le_102]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_102 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_102_we),
+    .wd     (le_3_le_102_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[102].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_102_qs)
+  );
+
+
+  // F[le_103]: 7:7
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_103 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_103_we),
+    .wd     (le_3_le_103_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[103].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_103_qs)
+  );
+
+
+  // F[le_104]: 8:8
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_104 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_104_we),
+    .wd     (le_3_le_104_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[104].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_104_qs)
+  );
+
+
+  // F[le_105]: 9:9
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_105 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_105_we),
+    .wd     (le_3_le_105_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[105].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_105_qs)
+  );
+
+
+  // F[le_106]: 10:10
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_106 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_106_we),
+    .wd     (le_3_le_106_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[106].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_106_qs)
+  );
+
+
+  // F[le_107]: 11:11
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_107 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_107_we),
+    .wd     (le_3_le_107_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[107].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_107_qs)
+  );
+
+
+  // F[le_108]: 12:12
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_108 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_108_we),
+    .wd     (le_3_le_108_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[108].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_108_qs)
+  );
+
+
+  // F[le_109]: 13:13
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_109 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_109_we),
+    .wd     (le_3_le_109_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[109].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_109_qs)
+  );
+
+
+  // F[le_110]: 14:14
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_110 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_110_we),
+    .wd     (le_3_le_110_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[110].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_110_qs)
+  );
+
+
+  // F[le_111]: 15:15
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_111 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_111_we),
+    .wd     (le_3_le_111_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[111].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_111_qs)
+  );
+
+
+  // F[le_112]: 16:16
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_112 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_112_we),
+    .wd     (le_3_le_112_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[112].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_112_qs)
+  );
+
+
+  // F[le_113]: 17:17
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_113 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_113_we),
+    .wd     (le_3_le_113_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[113].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_113_qs)
+  );
+
+
+  // F[le_114]: 18:18
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_114 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_114_we),
+    .wd     (le_3_le_114_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[114].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_114_qs)
+  );
+
+
+  // F[le_115]: 19:19
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_115 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_115_we),
+    .wd     (le_3_le_115_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[115].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_115_qs)
+  );
+
+
+  // F[le_116]: 20:20
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_116 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_116_we),
+    .wd     (le_3_le_116_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[116].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_116_qs)
+  );
+
+
+  // F[le_117]: 21:21
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_117 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_117_we),
+    .wd     (le_3_le_117_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[117].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_117_qs)
+  );
+
+
+  // F[le_118]: 22:22
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_118 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_118_we),
+    .wd     (le_3_le_118_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[118].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_118_qs)
+  );
+
+
+  // F[le_119]: 23:23
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_119 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_119_we),
+    .wd     (le_3_le_119_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[119].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_119_qs)
+  );
+
+
+  // F[le_120]: 24:24
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_120 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_120_we),
+    .wd     (le_3_le_120_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[120].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_120_qs)
+  );
+
+
+  // F[le_121]: 25:25
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_121 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_121_we),
+    .wd     (le_3_le_121_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[121].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_121_qs)
+  );
+
+
+  // F[le_122]: 26:26
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_le_3_le_122 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (le_3_le_122_we),
+    .wd     (le_3_le_122_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.le[122].q ),
+
+    // to register interface (read)
+    .qs     (le_3_le_122_qs)
+  );
+
+
 
   // R[prio0]: V(False)
 
@@ -8823,6 +10287,654 @@
   );
 
 
+  // R[prio99]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio99 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio99_we),
+    .wd     (prio99_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio99.q ),
+
+    // to register interface (read)
+    .qs     (prio99_qs)
+  );
+
+
+  // R[prio100]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio100 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio100_we),
+    .wd     (prio100_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio100.q ),
+
+    // to register interface (read)
+    .qs     (prio100_qs)
+  );
+
+
+  // R[prio101]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio101 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio101_we),
+    .wd     (prio101_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio101.q ),
+
+    // to register interface (read)
+    .qs     (prio101_qs)
+  );
+
+
+  // R[prio102]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio102 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio102_we),
+    .wd     (prio102_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio102.q ),
+
+    // to register interface (read)
+    .qs     (prio102_qs)
+  );
+
+
+  // R[prio103]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio103 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio103_we),
+    .wd     (prio103_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio103.q ),
+
+    // to register interface (read)
+    .qs     (prio103_qs)
+  );
+
+
+  // R[prio104]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio104 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio104_we),
+    .wd     (prio104_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio104.q ),
+
+    // to register interface (read)
+    .qs     (prio104_qs)
+  );
+
+
+  // R[prio105]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio105 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio105_we),
+    .wd     (prio105_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio105.q ),
+
+    // to register interface (read)
+    .qs     (prio105_qs)
+  );
+
+
+  // R[prio106]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio106 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio106_we),
+    .wd     (prio106_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio106.q ),
+
+    // to register interface (read)
+    .qs     (prio106_qs)
+  );
+
+
+  // R[prio107]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio107 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio107_we),
+    .wd     (prio107_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio107.q ),
+
+    // to register interface (read)
+    .qs     (prio107_qs)
+  );
+
+
+  // R[prio108]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio108 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio108_we),
+    .wd     (prio108_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio108.q ),
+
+    // to register interface (read)
+    .qs     (prio108_qs)
+  );
+
+
+  // R[prio109]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio109 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio109_we),
+    .wd     (prio109_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio109.q ),
+
+    // to register interface (read)
+    .qs     (prio109_qs)
+  );
+
+
+  // R[prio110]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio110 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio110_we),
+    .wd     (prio110_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio110.q ),
+
+    // to register interface (read)
+    .qs     (prio110_qs)
+  );
+
+
+  // R[prio111]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio111 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio111_we),
+    .wd     (prio111_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio111.q ),
+
+    // to register interface (read)
+    .qs     (prio111_qs)
+  );
+
+
+  // R[prio112]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio112 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio112_we),
+    .wd     (prio112_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio112.q ),
+
+    // to register interface (read)
+    .qs     (prio112_qs)
+  );
+
+
+  // R[prio113]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio113 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio113_we),
+    .wd     (prio113_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio113.q ),
+
+    // to register interface (read)
+    .qs     (prio113_qs)
+  );
+
+
+  // R[prio114]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio114 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio114_we),
+    .wd     (prio114_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio114.q ),
+
+    // to register interface (read)
+    .qs     (prio114_qs)
+  );
+
+
+  // R[prio115]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio115 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio115_we),
+    .wd     (prio115_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio115.q ),
+
+    // to register interface (read)
+    .qs     (prio115_qs)
+  );
+
+
+  // R[prio116]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio116 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio116_we),
+    .wd     (prio116_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio116.q ),
+
+    // to register interface (read)
+    .qs     (prio116_qs)
+  );
+
+
+  // R[prio117]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio117 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio117_we),
+    .wd     (prio117_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio117.q ),
+
+    // to register interface (read)
+    .qs     (prio117_qs)
+  );
+
+
+  // R[prio118]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio118 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio118_we),
+    .wd     (prio118_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio118.q ),
+
+    // to register interface (read)
+    .qs     (prio118_qs)
+  );
+
+
+  // R[prio119]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio119 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio119_we),
+    .wd     (prio119_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio119.q ),
+
+    // to register interface (read)
+    .qs     (prio119_qs)
+  );
+
+
+  // R[prio120]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio120 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio120_we),
+    .wd     (prio120_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio120.q ),
+
+    // to register interface (read)
+    .qs     (prio120_qs)
+  );
+
+
+  // R[prio121]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio121 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio121_we),
+    .wd     (prio121_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio121.q ),
+
+    // to register interface (read)
+    .qs     (prio121_qs)
+  );
+
+
+  // R[prio122]: V(False)
+
+  prim_subreg #(
+    .DW      (2),
+    .SWACCESS("RW"),
+    .RESVAL  (2'h0)
+  ) u_prio122 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (prio122_we),
+    .wd     (prio122_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.prio122.q ),
+
+    // to register interface (read)
+    .qs     (prio122_qs)
+  );
+
+
 
   // Subregister 0 of Multireg ie0
   // R[ie0_0]: V(False)
@@ -11410,6 +13522,630 @@
   );
 
 
+  // F[e_99]: 3:3
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_99 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_99_we),
+    .wd     (ie0_3_e_99_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[99].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_99_qs)
+  );
+
+
+  // F[e_100]: 4:4
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_100 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_100_we),
+    .wd     (ie0_3_e_100_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[100].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_100_qs)
+  );
+
+
+  // F[e_101]: 5:5
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_101 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_101_we),
+    .wd     (ie0_3_e_101_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[101].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_101_qs)
+  );
+
+
+  // F[e_102]: 6:6
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_102 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_102_we),
+    .wd     (ie0_3_e_102_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[102].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_102_qs)
+  );
+
+
+  // F[e_103]: 7:7
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_103 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_103_we),
+    .wd     (ie0_3_e_103_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[103].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_103_qs)
+  );
+
+
+  // F[e_104]: 8:8
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_104 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_104_we),
+    .wd     (ie0_3_e_104_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[104].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_104_qs)
+  );
+
+
+  // F[e_105]: 9:9
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_105 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_105_we),
+    .wd     (ie0_3_e_105_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[105].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_105_qs)
+  );
+
+
+  // F[e_106]: 10:10
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_106 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_106_we),
+    .wd     (ie0_3_e_106_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[106].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_106_qs)
+  );
+
+
+  // F[e_107]: 11:11
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_107 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_107_we),
+    .wd     (ie0_3_e_107_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[107].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_107_qs)
+  );
+
+
+  // F[e_108]: 12:12
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_108 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_108_we),
+    .wd     (ie0_3_e_108_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[108].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_108_qs)
+  );
+
+
+  // F[e_109]: 13:13
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_109 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_109_we),
+    .wd     (ie0_3_e_109_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[109].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_109_qs)
+  );
+
+
+  // F[e_110]: 14:14
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_110 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_110_we),
+    .wd     (ie0_3_e_110_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[110].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_110_qs)
+  );
+
+
+  // F[e_111]: 15:15
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_111 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_111_we),
+    .wd     (ie0_3_e_111_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[111].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_111_qs)
+  );
+
+
+  // F[e_112]: 16:16
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_112 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_112_we),
+    .wd     (ie0_3_e_112_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[112].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_112_qs)
+  );
+
+
+  // F[e_113]: 17:17
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_113 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_113_we),
+    .wd     (ie0_3_e_113_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[113].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_113_qs)
+  );
+
+
+  // F[e_114]: 18:18
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_114 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_114_we),
+    .wd     (ie0_3_e_114_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[114].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_114_qs)
+  );
+
+
+  // F[e_115]: 19:19
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_115 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_115_we),
+    .wd     (ie0_3_e_115_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[115].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_115_qs)
+  );
+
+
+  // F[e_116]: 20:20
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_116 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_116_we),
+    .wd     (ie0_3_e_116_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[116].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_116_qs)
+  );
+
+
+  // F[e_117]: 21:21
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_117 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_117_we),
+    .wd     (ie0_3_e_117_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[117].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_117_qs)
+  );
+
+
+  // F[e_118]: 22:22
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_118 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_118_we),
+    .wd     (ie0_3_e_118_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[118].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_118_qs)
+  );
+
+
+  // F[e_119]: 23:23
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_119 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_119_we),
+    .wd     (ie0_3_e_119_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[119].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_119_qs)
+  );
+
+
+  // F[e_120]: 24:24
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_120 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_120_we),
+    .wd     (ie0_3_e_120_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[120].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_120_qs)
+  );
+
+
+  // F[e_121]: 25:25
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_121 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_121_we),
+    .wd     (ie0_3_e_121_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[121].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_121_qs)
+  );
+
+
+  // F[e_122]: 26:26
+  prim_subreg #(
+    .DW      (1),
+    .SWACCESS("RW"),
+    .RESVAL  (1'h0)
+  ) u_ie0_3_e_122 (
+    .clk_i   (clk_i    ),
+    .rst_ni  (rst_ni  ),
+
+    // from register interface
+    .we     (ie0_3_e_122_we),
+    .wd     (ie0_3_e_122_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0  ),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.ie0[122].q ),
+
+    // to register interface (read)
+    .qs     (ie0_3_e_122_qs)
+  );
+
+
 
   // R[threshold0]: V(False)
 
@@ -11483,7 +14219,7 @@
 
 
 
-  logic [113:0] addr_hit;
+  logic [137:0] addr_hit;
   always_comb begin
     addr_hit = '0;
     addr_hit[  0] = (reg_addr == RV_PLIC_IP_0_OFFSET);
@@ -11593,13 +14329,37 @@
     addr_hit[104] = (reg_addr == RV_PLIC_PRIO96_OFFSET);
     addr_hit[105] = (reg_addr == RV_PLIC_PRIO97_OFFSET);
     addr_hit[106] = (reg_addr == RV_PLIC_PRIO98_OFFSET);
-    addr_hit[107] = (reg_addr == RV_PLIC_IE0_0_OFFSET);
-    addr_hit[108] = (reg_addr == RV_PLIC_IE0_1_OFFSET);
-    addr_hit[109] = (reg_addr == RV_PLIC_IE0_2_OFFSET);
-    addr_hit[110] = (reg_addr == RV_PLIC_IE0_3_OFFSET);
-    addr_hit[111] = (reg_addr == RV_PLIC_THRESHOLD0_OFFSET);
-    addr_hit[112] = (reg_addr == RV_PLIC_CC0_OFFSET);
-    addr_hit[113] = (reg_addr == RV_PLIC_MSIP0_OFFSET);
+    addr_hit[107] = (reg_addr == RV_PLIC_PRIO99_OFFSET);
+    addr_hit[108] = (reg_addr == RV_PLIC_PRIO100_OFFSET);
+    addr_hit[109] = (reg_addr == RV_PLIC_PRIO101_OFFSET);
+    addr_hit[110] = (reg_addr == RV_PLIC_PRIO102_OFFSET);
+    addr_hit[111] = (reg_addr == RV_PLIC_PRIO103_OFFSET);
+    addr_hit[112] = (reg_addr == RV_PLIC_PRIO104_OFFSET);
+    addr_hit[113] = (reg_addr == RV_PLIC_PRIO105_OFFSET);
+    addr_hit[114] = (reg_addr == RV_PLIC_PRIO106_OFFSET);
+    addr_hit[115] = (reg_addr == RV_PLIC_PRIO107_OFFSET);
+    addr_hit[116] = (reg_addr == RV_PLIC_PRIO108_OFFSET);
+    addr_hit[117] = (reg_addr == RV_PLIC_PRIO109_OFFSET);
+    addr_hit[118] = (reg_addr == RV_PLIC_PRIO110_OFFSET);
+    addr_hit[119] = (reg_addr == RV_PLIC_PRIO111_OFFSET);
+    addr_hit[120] = (reg_addr == RV_PLIC_PRIO112_OFFSET);
+    addr_hit[121] = (reg_addr == RV_PLIC_PRIO113_OFFSET);
+    addr_hit[122] = (reg_addr == RV_PLIC_PRIO114_OFFSET);
+    addr_hit[123] = (reg_addr == RV_PLIC_PRIO115_OFFSET);
+    addr_hit[124] = (reg_addr == RV_PLIC_PRIO116_OFFSET);
+    addr_hit[125] = (reg_addr == RV_PLIC_PRIO117_OFFSET);
+    addr_hit[126] = (reg_addr == RV_PLIC_PRIO118_OFFSET);
+    addr_hit[127] = (reg_addr == RV_PLIC_PRIO119_OFFSET);
+    addr_hit[128] = (reg_addr == RV_PLIC_PRIO120_OFFSET);
+    addr_hit[129] = (reg_addr == RV_PLIC_PRIO121_OFFSET);
+    addr_hit[130] = (reg_addr == RV_PLIC_PRIO122_OFFSET);
+    addr_hit[131] = (reg_addr == RV_PLIC_IE0_0_OFFSET);
+    addr_hit[132] = (reg_addr == RV_PLIC_IE0_1_OFFSET);
+    addr_hit[133] = (reg_addr == RV_PLIC_IE0_2_OFFSET);
+    addr_hit[134] = (reg_addr == RV_PLIC_IE0_3_OFFSET);
+    addr_hit[135] = (reg_addr == RV_PLIC_THRESHOLD0_OFFSET);
+    addr_hit[136] = (reg_addr == RV_PLIC_CC0_OFFSET);
+    addr_hit[137] = (reg_addr == RV_PLIC_MSIP0_OFFSET);
   end
 
   assign addrmiss = (reg_re || reg_we) ? ~|addr_hit : 1'b0 ;
@@ -11721,6 +14481,30 @@
     if (addr_hit[111] && reg_we && (RV_PLIC_PERMIT[111] != (RV_PLIC_PERMIT[111] & reg_be))) wr_err = 1'b1 ;
     if (addr_hit[112] && reg_we && (RV_PLIC_PERMIT[112] != (RV_PLIC_PERMIT[112] & reg_be))) wr_err = 1'b1 ;
     if (addr_hit[113] && reg_we && (RV_PLIC_PERMIT[113] != (RV_PLIC_PERMIT[113] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[114] && reg_we && (RV_PLIC_PERMIT[114] != (RV_PLIC_PERMIT[114] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[115] && reg_we && (RV_PLIC_PERMIT[115] != (RV_PLIC_PERMIT[115] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[116] && reg_we && (RV_PLIC_PERMIT[116] != (RV_PLIC_PERMIT[116] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[117] && reg_we && (RV_PLIC_PERMIT[117] != (RV_PLIC_PERMIT[117] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[118] && reg_we && (RV_PLIC_PERMIT[118] != (RV_PLIC_PERMIT[118] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[119] && reg_we && (RV_PLIC_PERMIT[119] != (RV_PLIC_PERMIT[119] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[120] && reg_we && (RV_PLIC_PERMIT[120] != (RV_PLIC_PERMIT[120] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[121] && reg_we && (RV_PLIC_PERMIT[121] != (RV_PLIC_PERMIT[121] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[122] && reg_we && (RV_PLIC_PERMIT[122] != (RV_PLIC_PERMIT[122] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[123] && reg_we && (RV_PLIC_PERMIT[123] != (RV_PLIC_PERMIT[123] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[124] && reg_we && (RV_PLIC_PERMIT[124] != (RV_PLIC_PERMIT[124] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[125] && reg_we && (RV_PLIC_PERMIT[125] != (RV_PLIC_PERMIT[125] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[126] && reg_we && (RV_PLIC_PERMIT[126] != (RV_PLIC_PERMIT[126] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[127] && reg_we && (RV_PLIC_PERMIT[127] != (RV_PLIC_PERMIT[127] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[128] && reg_we && (RV_PLIC_PERMIT[128] != (RV_PLIC_PERMIT[128] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[129] && reg_we && (RV_PLIC_PERMIT[129] != (RV_PLIC_PERMIT[129] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[130] && reg_we && (RV_PLIC_PERMIT[130] != (RV_PLIC_PERMIT[130] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[131] && reg_we && (RV_PLIC_PERMIT[131] != (RV_PLIC_PERMIT[131] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[132] && reg_we && (RV_PLIC_PERMIT[132] != (RV_PLIC_PERMIT[132] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[133] && reg_we && (RV_PLIC_PERMIT[133] != (RV_PLIC_PERMIT[133] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[134] && reg_we && (RV_PLIC_PERMIT[134] != (RV_PLIC_PERMIT[134] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[135] && reg_we && (RV_PLIC_PERMIT[135] != (RV_PLIC_PERMIT[135] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[136] && reg_we && (RV_PLIC_PERMIT[136] != (RV_PLIC_PERMIT[136] & reg_be))) wr_err = 1'b1 ;
+    if (addr_hit[137] && reg_we && (RV_PLIC_PERMIT[137] != (RV_PLIC_PERMIT[137] & reg_be))) wr_err = 1'b1 ;
   end
 
 
@@ -11822,6 +14606,30 @@
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
   assign le_0_le_0_we = addr_hit[4] & reg_we & ~wr_err;
   assign le_0_le_0_wd = reg_wdata[0];
 
@@ -12119,6 +14927,78 @@
   assign le_3_le_98_we = addr_hit[7] & reg_we & ~wr_err;
   assign le_3_le_98_wd = reg_wdata[2];
 
+  assign le_3_le_99_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_99_wd = reg_wdata[3];
+
+  assign le_3_le_100_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_100_wd = reg_wdata[4];
+
+  assign le_3_le_101_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_101_wd = reg_wdata[5];
+
+  assign le_3_le_102_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_102_wd = reg_wdata[6];
+
+  assign le_3_le_103_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_103_wd = reg_wdata[7];
+
+  assign le_3_le_104_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_104_wd = reg_wdata[8];
+
+  assign le_3_le_105_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_105_wd = reg_wdata[9];
+
+  assign le_3_le_106_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_106_wd = reg_wdata[10];
+
+  assign le_3_le_107_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_107_wd = reg_wdata[11];
+
+  assign le_3_le_108_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_108_wd = reg_wdata[12];
+
+  assign le_3_le_109_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_109_wd = reg_wdata[13];
+
+  assign le_3_le_110_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_110_wd = reg_wdata[14];
+
+  assign le_3_le_111_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_111_wd = reg_wdata[15];
+
+  assign le_3_le_112_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_112_wd = reg_wdata[16];
+
+  assign le_3_le_113_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_113_wd = reg_wdata[17];
+
+  assign le_3_le_114_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_114_wd = reg_wdata[18];
+
+  assign le_3_le_115_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_115_wd = reg_wdata[19];
+
+  assign le_3_le_116_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_116_wd = reg_wdata[20];
+
+  assign le_3_le_117_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_117_wd = reg_wdata[21];
+
+  assign le_3_le_118_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_118_wd = reg_wdata[22];
+
+  assign le_3_le_119_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_119_wd = reg_wdata[23];
+
+  assign le_3_le_120_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_120_wd = reg_wdata[24];
+
+  assign le_3_le_121_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_121_wd = reg_wdata[25];
+
+  assign le_3_le_122_we = addr_hit[7] & reg_we & ~wr_err;
+  assign le_3_le_122_wd = reg_wdata[26];
+
   assign prio0_we = addr_hit[8] & reg_we & ~wr_err;
   assign prio0_wd = reg_wdata[1:0];
 
@@ -12416,311 +15296,455 @@
   assign prio98_we = addr_hit[106] & reg_we & ~wr_err;
   assign prio98_wd = reg_wdata[1:0];
 
-  assign ie0_0_e_0_we = addr_hit[107] & reg_we & ~wr_err;
+  assign prio99_we = addr_hit[107] & reg_we & ~wr_err;
+  assign prio99_wd = reg_wdata[1:0];
+
+  assign prio100_we = addr_hit[108] & reg_we & ~wr_err;
+  assign prio100_wd = reg_wdata[1:0];
+
+  assign prio101_we = addr_hit[109] & reg_we & ~wr_err;
+  assign prio101_wd = reg_wdata[1:0];
+
+  assign prio102_we = addr_hit[110] & reg_we & ~wr_err;
+  assign prio102_wd = reg_wdata[1:0];
+
+  assign prio103_we = addr_hit[111] & reg_we & ~wr_err;
+  assign prio103_wd = reg_wdata[1:0];
+
+  assign prio104_we = addr_hit[112] & reg_we & ~wr_err;
+  assign prio104_wd = reg_wdata[1:0];
+
+  assign prio105_we = addr_hit[113] & reg_we & ~wr_err;
+  assign prio105_wd = reg_wdata[1:0];
+
+  assign prio106_we = addr_hit[114] & reg_we & ~wr_err;
+  assign prio106_wd = reg_wdata[1:0];
+
+  assign prio107_we = addr_hit[115] & reg_we & ~wr_err;
+  assign prio107_wd = reg_wdata[1:0];
+
+  assign prio108_we = addr_hit[116] & reg_we & ~wr_err;
+  assign prio108_wd = reg_wdata[1:0];
+
+  assign prio109_we = addr_hit[117] & reg_we & ~wr_err;
+  assign prio109_wd = reg_wdata[1:0];
+
+  assign prio110_we = addr_hit[118] & reg_we & ~wr_err;
+  assign prio110_wd = reg_wdata[1:0];
+
+  assign prio111_we = addr_hit[119] & reg_we & ~wr_err;
+  assign prio111_wd = reg_wdata[1:0];
+
+  assign prio112_we = addr_hit[120] & reg_we & ~wr_err;
+  assign prio112_wd = reg_wdata[1:0];
+
+  assign prio113_we = addr_hit[121] & reg_we & ~wr_err;
+  assign prio113_wd = reg_wdata[1:0];
+
+  assign prio114_we = addr_hit[122] & reg_we & ~wr_err;
+  assign prio114_wd = reg_wdata[1:0];
+
+  assign prio115_we = addr_hit[123] & reg_we & ~wr_err;
+  assign prio115_wd = reg_wdata[1:0];
+
+  assign prio116_we = addr_hit[124] & reg_we & ~wr_err;
+  assign prio116_wd = reg_wdata[1:0];
+
+  assign prio117_we = addr_hit[125] & reg_we & ~wr_err;
+  assign prio117_wd = reg_wdata[1:0];
+
+  assign prio118_we = addr_hit[126] & reg_we & ~wr_err;
+  assign prio118_wd = reg_wdata[1:0];
+
+  assign prio119_we = addr_hit[127] & reg_we & ~wr_err;
+  assign prio119_wd = reg_wdata[1:0];
+
+  assign prio120_we = addr_hit[128] & reg_we & ~wr_err;
+  assign prio120_wd = reg_wdata[1:0];
+
+  assign prio121_we = addr_hit[129] & reg_we & ~wr_err;
+  assign prio121_wd = reg_wdata[1:0];
+
+  assign prio122_we = addr_hit[130] & reg_we & ~wr_err;
+  assign prio122_wd = reg_wdata[1:0];
+
+  assign ie0_0_e_0_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_0_wd = reg_wdata[0];
 
-  assign ie0_0_e_1_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_1_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_1_wd = reg_wdata[1];
 
-  assign ie0_0_e_2_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_2_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_2_wd = reg_wdata[2];
 
-  assign ie0_0_e_3_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_3_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_3_wd = reg_wdata[3];
 
-  assign ie0_0_e_4_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_4_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_4_wd = reg_wdata[4];
 
-  assign ie0_0_e_5_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_5_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_5_wd = reg_wdata[5];
 
-  assign ie0_0_e_6_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_6_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_6_wd = reg_wdata[6];
 
-  assign ie0_0_e_7_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_7_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_7_wd = reg_wdata[7];
 
-  assign ie0_0_e_8_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_8_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_8_wd = reg_wdata[8];
 
-  assign ie0_0_e_9_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_9_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_9_wd = reg_wdata[9];
 
-  assign ie0_0_e_10_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_10_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_10_wd = reg_wdata[10];
 
-  assign ie0_0_e_11_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_11_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_11_wd = reg_wdata[11];
 
-  assign ie0_0_e_12_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_12_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_12_wd = reg_wdata[12];
 
-  assign ie0_0_e_13_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_13_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_13_wd = reg_wdata[13];
 
-  assign ie0_0_e_14_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_14_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_14_wd = reg_wdata[14];
 
-  assign ie0_0_e_15_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_15_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_15_wd = reg_wdata[15];
 
-  assign ie0_0_e_16_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_16_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_16_wd = reg_wdata[16];
 
-  assign ie0_0_e_17_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_17_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_17_wd = reg_wdata[17];
 
-  assign ie0_0_e_18_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_18_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_18_wd = reg_wdata[18];
 
-  assign ie0_0_e_19_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_19_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_19_wd = reg_wdata[19];
 
-  assign ie0_0_e_20_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_20_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_20_wd = reg_wdata[20];
 
-  assign ie0_0_e_21_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_21_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_21_wd = reg_wdata[21];
 
-  assign ie0_0_e_22_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_22_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_22_wd = reg_wdata[22];
 
-  assign ie0_0_e_23_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_23_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_23_wd = reg_wdata[23];
 
-  assign ie0_0_e_24_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_24_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_24_wd = reg_wdata[24];
 
-  assign ie0_0_e_25_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_25_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_25_wd = reg_wdata[25];
 
-  assign ie0_0_e_26_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_26_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_26_wd = reg_wdata[26];
 
-  assign ie0_0_e_27_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_27_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_27_wd = reg_wdata[27];
 
-  assign ie0_0_e_28_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_28_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_28_wd = reg_wdata[28];
 
-  assign ie0_0_e_29_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_29_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_29_wd = reg_wdata[29];
 
-  assign ie0_0_e_30_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_30_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_30_wd = reg_wdata[30];
 
-  assign ie0_0_e_31_we = addr_hit[107] & reg_we & ~wr_err;
+  assign ie0_0_e_31_we = addr_hit[131] & reg_we & ~wr_err;
   assign ie0_0_e_31_wd = reg_wdata[31];
 
-  assign ie0_1_e_32_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_32_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_32_wd = reg_wdata[0];
 
-  assign ie0_1_e_33_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_33_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_33_wd = reg_wdata[1];
 
-  assign ie0_1_e_34_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_34_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_34_wd = reg_wdata[2];
 
-  assign ie0_1_e_35_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_35_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_35_wd = reg_wdata[3];
 
-  assign ie0_1_e_36_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_36_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_36_wd = reg_wdata[4];
 
-  assign ie0_1_e_37_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_37_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_37_wd = reg_wdata[5];
 
-  assign ie0_1_e_38_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_38_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_38_wd = reg_wdata[6];
 
-  assign ie0_1_e_39_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_39_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_39_wd = reg_wdata[7];
 
-  assign ie0_1_e_40_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_40_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_40_wd = reg_wdata[8];
 
-  assign ie0_1_e_41_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_41_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_41_wd = reg_wdata[9];
 
-  assign ie0_1_e_42_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_42_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_42_wd = reg_wdata[10];
 
-  assign ie0_1_e_43_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_43_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_43_wd = reg_wdata[11];
 
-  assign ie0_1_e_44_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_44_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_44_wd = reg_wdata[12];
 
-  assign ie0_1_e_45_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_45_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_45_wd = reg_wdata[13];
 
-  assign ie0_1_e_46_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_46_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_46_wd = reg_wdata[14];
 
-  assign ie0_1_e_47_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_47_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_47_wd = reg_wdata[15];
 
-  assign ie0_1_e_48_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_48_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_48_wd = reg_wdata[16];
 
-  assign ie0_1_e_49_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_49_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_49_wd = reg_wdata[17];
 
-  assign ie0_1_e_50_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_50_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_50_wd = reg_wdata[18];
 
-  assign ie0_1_e_51_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_51_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_51_wd = reg_wdata[19];
 
-  assign ie0_1_e_52_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_52_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_52_wd = reg_wdata[20];
 
-  assign ie0_1_e_53_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_53_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_53_wd = reg_wdata[21];
 
-  assign ie0_1_e_54_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_54_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_54_wd = reg_wdata[22];
 
-  assign ie0_1_e_55_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_55_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_55_wd = reg_wdata[23];
 
-  assign ie0_1_e_56_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_56_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_56_wd = reg_wdata[24];
 
-  assign ie0_1_e_57_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_57_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_57_wd = reg_wdata[25];
 
-  assign ie0_1_e_58_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_58_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_58_wd = reg_wdata[26];
 
-  assign ie0_1_e_59_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_59_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_59_wd = reg_wdata[27];
 
-  assign ie0_1_e_60_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_60_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_60_wd = reg_wdata[28];
 
-  assign ie0_1_e_61_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_61_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_61_wd = reg_wdata[29];
 
-  assign ie0_1_e_62_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_62_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_62_wd = reg_wdata[30];
 
-  assign ie0_1_e_63_we = addr_hit[108] & reg_we & ~wr_err;
+  assign ie0_1_e_63_we = addr_hit[132] & reg_we & ~wr_err;
   assign ie0_1_e_63_wd = reg_wdata[31];
 
-  assign ie0_2_e_64_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_64_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_64_wd = reg_wdata[0];
 
-  assign ie0_2_e_65_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_65_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_65_wd = reg_wdata[1];
 
-  assign ie0_2_e_66_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_66_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_66_wd = reg_wdata[2];
 
-  assign ie0_2_e_67_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_67_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_67_wd = reg_wdata[3];
 
-  assign ie0_2_e_68_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_68_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_68_wd = reg_wdata[4];
 
-  assign ie0_2_e_69_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_69_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_69_wd = reg_wdata[5];
 
-  assign ie0_2_e_70_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_70_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_70_wd = reg_wdata[6];
 
-  assign ie0_2_e_71_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_71_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_71_wd = reg_wdata[7];
 
-  assign ie0_2_e_72_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_72_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_72_wd = reg_wdata[8];
 
-  assign ie0_2_e_73_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_73_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_73_wd = reg_wdata[9];
 
-  assign ie0_2_e_74_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_74_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_74_wd = reg_wdata[10];
 
-  assign ie0_2_e_75_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_75_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_75_wd = reg_wdata[11];
 
-  assign ie0_2_e_76_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_76_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_76_wd = reg_wdata[12];
 
-  assign ie0_2_e_77_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_77_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_77_wd = reg_wdata[13];
 
-  assign ie0_2_e_78_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_78_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_78_wd = reg_wdata[14];
 
-  assign ie0_2_e_79_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_79_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_79_wd = reg_wdata[15];
 
-  assign ie0_2_e_80_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_80_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_80_wd = reg_wdata[16];
 
-  assign ie0_2_e_81_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_81_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_81_wd = reg_wdata[17];
 
-  assign ie0_2_e_82_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_82_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_82_wd = reg_wdata[18];
 
-  assign ie0_2_e_83_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_83_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_83_wd = reg_wdata[19];
 
-  assign ie0_2_e_84_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_84_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_84_wd = reg_wdata[20];
 
-  assign ie0_2_e_85_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_85_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_85_wd = reg_wdata[21];
 
-  assign ie0_2_e_86_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_86_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_86_wd = reg_wdata[22];
 
-  assign ie0_2_e_87_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_87_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_87_wd = reg_wdata[23];
 
-  assign ie0_2_e_88_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_88_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_88_wd = reg_wdata[24];
 
-  assign ie0_2_e_89_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_89_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_89_wd = reg_wdata[25];
 
-  assign ie0_2_e_90_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_90_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_90_wd = reg_wdata[26];
 
-  assign ie0_2_e_91_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_91_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_91_wd = reg_wdata[27];
 
-  assign ie0_2_e_92_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_92_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_92_wd = reg_wdata[28];
 
-  assign ie0_2_e_93_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_93_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_93_wd = reg_wdata[29];
 
-  assign ie0_2_e_94_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_94_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_94_wd = reg_wdata[30];
 
-  assign ie0_2_e_95_we = addr_hit[109] & reg_we & ~wr_err;
+  assign ie0_2_e_95_we = addr_hit[133] & reg_we & ~wr_err;
   assign ie0_2_e_95_wd = reg_wdata[31];
 
-  assign ie0_3_e_96_we = addr_hit[110] & reg_we & ~wr_err;
+  assign ie0_3_e_96_we = addr_hit[134] & reg_we & ~wr_err;
   assign ie0_3_e_96_wd = reg_wdata[0];
 
-  assign ie0_3_e_97_we = addr_hit[110] & reg_we & ~wr_err;
+  assign ie0_3_e_97_we = addr_hit[134] & reg_we & ~wr_err;
   assign ie0_3_e_97_wd = reg_wdata[1];
 
-  assign ie0_3_e_98_we = addr_hit[110] & reg_we & ~wr_err;
+  assign ie0_3_e_98_we = addr_hit[134] & reg_we & ~wr_err;
   assign ie0_3_e_98_wd = reg_wdata[2];
 
-  assign threshold0_we = addr_hit[111] & reg_we & ~wr_err;
+  assign ie0_3_e_99_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_99_wd = reg_wdata[3];
+
+  assign ie0_3_e_100_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_100_wd = reg_wdata[4];
+
+  assign ie0_3_e_101_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_101_wd = reg_wdata[5];
+
+  assign ie0_3_e_102_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_102_wd = reg_wdata[6];
+
+  assign ie0_3_e_103_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_103_wd = reg_wdata[7];
+
+  assign ie0_3_e_104_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_104_wd = reg_wdata[8];
+
+  assign ie0_3_e_105_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_105_wd = reg_wdata[9];
+
+  assign ie0_3_e_106_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_106_wd = reg_wdata[10];
+
+  assign ie0_3_e_107_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_107_wd = reg_wdata[11];
+
+  assign ie0_3_e_108_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_108_wd = reg_wdata[12];
+
+  assign ie0_3_e_109_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_109_wd = reg_wdata[13];
+
+  assign ie0_3_e_110_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_110_wd = reg_wdata[14];
+
+  assign ie0_3_e_111_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_111_wd = reg_wdata[15];
+
+  assign ie0_3_e_112_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_112_wd = reg_wdata[16];
+
+  assign ie0_3_e_113_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_113_wd = reg_wdata[17];
+
+  assign ie0_3_e_114_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_114_wd = reg_wdata[18];
+
+  assign ie0_3_e_115_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_115_wd = reg_wdata[19];
+
+  assign ie0_3_e_116_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_116_wd = reg_wdata[20];
+
+  assign ie0_3_e_117_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_117_wd = reg_wdata[21];
+
+  assign ie0_3_e_118_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_118_wd = reg_wdata[22];
+
+  assign ie0_3_e_119_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_119_wd = reg_wdata[23];
+
+  assign ie0_3_e_120_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_120_wd = reg_wdata[24];
+
+  assign ie0_3_e_121_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_121_wd = reg_wdata[25];
+
+  assign ie0_3_e_122_we = addr_hit[134] & reg_we & ~wr_err;
+  assign ie0_3_e_122_wd = reg_wdata[26];
+
+  assign threshold0_we = addr_hit[135] & reg_we & ~wr_err;
   assign threshold0_wd = reg_wdata[1:0];
 
-  assign cc0_we = addr_hit[112] & reg_we & ~wr_err;
+  assign cc0_we = addr_hit[136] & reg_we & ~wr_err;
   assign cc0_wd = reg_wdata[6:0];
-  assign cc0_re = addr_hit[112] && reg_re;
+  assign cc0_re = addr_hit[136] && reg_re;
 
-  assign msip0_we = addr_hit[113] & reg_we & ~wr_err;
+  assign msip0_we = addr_hit[137] & reg_we & ~wr_err;
   assign msip0_wd = reg_wdata[0];
 
   // Read data return
@@ -12836,6 +15860,30 @@
         reg_rdata_next[0] = ip_3_p_96_qs;
         reg_rdata_next[1] = ip_3_p_97_qs;
         reg_rdata_next[2] = ip_3_p_98_qs;
+        reg_rdata_next[3] = ip_3_p_99_qs;
+        reg_rdata_next[4] = ip_3_p_100_qs;
+        reg_rdata_next[5] = ip_3_p_101_qs;
+        reg_rdata_next[6] = ip_3_p_102_qs;
+        reg_rdata_next[7] = ip_3_p_103_qs;
+        reg_rdata_next[8] = ip_3_p_104_qs;
+        reg_rdata_next[9] = ip_3_p_105_qs;
+        reg_rdata_next[10] = ip_3_p_106_qs;
+        reg_rdata_next[11] = ip_3_p_107_qs;
+        reg_rdata_next[12] = ip_3_p_108_qs;
+        reg_rdata_next[13] = ip_3_p_109_qs;
+        reg_rdata_next[14] = ip_3_p_110_qs;
+        reg_rdata_next[15] = ip_3_p_111_qs;
+        reg_rdata_next[16] = ip_3_p_112_qs;
+        reg_rdata_next[17] = ip_3_p_113_qs;
+        reg_rdata_next[18] = ip_3_p_114_qs;
+        reg_rdata_next[19] = ip_3_p_115_qs;
+        reg_rdata_next[20] = ip_3_p_116_qs;
+        reg_rdata_next[21] = ip_3_p_117_qs;
+        reg_rdata_next[22] = ip_3_p_118_qs;
+        reg_rdata_next[23] = ip_3_p_119_qs;
+        reg_rdata_next[24] = ip_3_p_120_qs;
+        reg_rdata_next[25] = ip_3_p_121_qs;
+        reg_rdata_next[26] = ip_3_p_122_qs;
       end
 
       addr_hit[4]: begin
@@ -12947,6 +15995,30 @@
         reg_rdata_next[0] = le_3_le_96_qs;
         reg_rdata_next[1] = le_3_le_97_qs;
         reg_rdata_next[2] = le_3_le_98_qs;
+        reg_rdata_next[3] = le_3_le_99_qs;
+        reg_rdata_next[4] = le_3_le_100_qs;
+        reg_rdata_next[5] = le_3_le_101_qs;
+        reg_rdata_next[6] = le_3_le_102_qs;
+        reg_rdata_next[7] = le_3_le_103_qs;
+        reg_rdata_next[8] = le_3_le_104_qs;
+        reg_rdata_next[9] = le_3_le_105_qs;
+        reg_rdata_next[10] = le_3_le_106_qs;
+        reg_rdata_next[11] = le_3_le_107_qs;
+        reg_rdata_next[12] = le_3_le_108_qs;
+        reg_rdata_next[13] = le_3_le_109_qs;
+        reg_rdata_next[14] = le_3_le_110_qs;
+        reg_rdata_next[15] = le_3_le_111_qs;
+        reg_rdata_next[16] = le_3_le_112_qs;
+        reg_rdata_next[17] = le_3_le_113_qs;
+        reg_rdata_next[18] = le_3_le_114_qs;
+        reg_rdata_next[19] = le_3_le_115_qs;
+        reg_rdata_next[20] = le_3_le_116_qs;
+        reg_rdata_next[21] = le_3_le_117_qs;
+        reg_rdata_next[22] = le_3_le_118_qs;
+        reg_rdata_next[23] = le_3_le_119_qs;
+        reg_rdata_next[24] = le_3_le_120_qs;
+        reg_rdata_next[25] = le_3_le_121_qs;
+        reg_rdata_next[26] = le_3_le_122_qs;
       end
 
       addr_hit[8]: begin
@@ -13346,6 +16418,102 @@
       end
 
       addr_hit[107]: begin
+        reg_rdata_next[1:0] = prio99_qs;
+      end
+
+      addr_hit[108]: begin
+        reg_rdata_next[1:0] = prio100_qs;
+      end
+
+      addr_hit[109]: begin
+        reg_rdata_next[1:0] = prio101_qs;
+      end
+
+      addr_hit[110]: begin
+        reg_rdata_next[1:0] = prio102_qs;
+      end
+
+      addr_hit[111]: begin
+        reg_rdata_next[1:0] = prio103_qs;
+      end
+
+      addr_hit[112]: begin
+        reg_rdata_next[1:0] = prio104_qs;
+      end
+
+      addr_hit[113]: begin
+        reg_rdata_next[1:0] = prio105_qs;
+      end
+
+      addr_hit[114]: begin
+        reg_rdata_next[1:0] = prio106_qs;
+      end
+
+      addr_hit[115]: begin
+        reg_rdata_next[1:0] = prio107_qs;
+      end
+
+      addr_hit[116]: begin
+        reg_rdata_next[1:0] = prio108_qs;
+      end
+
+      addr_hit[117]: begin
+        reg_rdata_next[1:0] = prio109_qs;
+      end
+
+      addr_hit[118]: begin
+        reg_rdata_next[1:0] = prio110_qs;
+      end
+
+      addr_hit[119]: begin
+        reg_rdata_next[1:0] = prio111_qs;
+      end
+
+      addr_hit[120]: begin
+        reg_rdata_next[1:0] = prio112_qs;
+      end
+
+      addr_hit[121]: begin
+        reg_rdata_next[1:0] = prio113_qs;
+      end
+
+      addr_hit[122]: begin
+        reg_rdata_next[1:0] = prio114_qs;
+      end
+
+      addr_hit[123]: begin
+        reg_rdata_next[1:0] = prio115_qs;
+      end
+
+      addr_hit[124]: begin
+        reg_rdata_next[1:0] = prio116_qs;
+      end
+
+      addr_hit[125]: begin
+        reg_rdata_next[1:0] = prio117_qs;
+      end
+
+      addr_hit[126]: begin
+        reg_rdata_next[1:0] = prio118_qs;
+      end
+
+      addr_hit[127]: begin
+        reg_rdata_next[1:0] = prio119_qs;
+      end
+
+      addr_hit[128]: begin
+        reg_rdata_next[1:0] = prio120_qs;
+      end
+
+      addr_hit[129]: begin
+        reg_rdata_next[1:0] = prio121_qs;
+      end
+
+      addr_hit[130]: begin
+        reg_rdata_next[1:0] = prio122_qs;
+      end
+
+      addr_hit[131]: begin
         reg_rdata_next[0] = ie0_0_e_0_qs;
         reg_rdata_next[1] = ie0_0_e_1_qs;
         reg_rdata_next[2] = ie0_0_e_2_qs;
@@ -13380,7 +16548,7 @@
         reg_rdata_next[31] = ie0_0_e_31_qs;
       end
 
-      addr_hit[108]: begin
+      addr_hit[132]: begin
         reg_rdata_next[0] = ie0_1_e_32_qs;
         reg_rdata_next[1] = ie0_1_e_33_qs;
         reg_rdata_next[2] = ie0_1_e_34_qs;
@@ -13415,7 +16583,7 @@
         reg_rdata_next[31] = ie0_1_e_63_qs;
       end
 
-      addr_hit[109]: begin
+      addr_hit[133]: begin
         reg_rdata_next[0] = ie0_2_e_64_qs;
         reg_rdata_next[1] = ie0_2_e_65_qs;
         reg_rdata_next[2] = ie0_2_e_66_qs;
@@ -13450,21 +16618,45 @@
         reg_rdata_next[31] = ie0_2_e_95_qs;
       end
 
-      addr_hit[110]: begin
+      addr_hit[134]: begin
         reg_rdata_next[0] = ie0_3_e_96_qs;
         reg_rdata_next[1] = ie0_3_e_97_qs;
         reg_rdata_next[2] = ie0_3_e_98_qs;
+        reg_rdata_next[3] = ie0_3_e_99_qs;
+        reg_rdata_next[4] = ie0_3_e_100_qs;
+        reg_rdata_next[5] = ie0_3_e_101_qs;
+        reg_rdata_next[6] = ie0_3_e_102_qs;
+        reg_rdata_next[7] = ie0_3_e_103_qs;
+        reg_rdata_next[8] = ie0_3_e_104_qs;
+        reg_rdata_next[9] = ie0_3_e_105_qs;
+        reg_rdata_next[10] = ie0_3_e_106_qs;
+        reg_rdata_next[11] = ie0_3_e_107_qs;
+        reg_rdata_next[12] = ie0_3_e_108_qs;
+        reg_rdata_next[13] = ie0_3_e_109_qs;
+        reg_rdata_next[14] = ie0_3_e_110_qs;
+        reg_rdata_next[15] = ie0_3_e_111_qs;
+        reg_rdata_next[16] = ie0_3_e_112_qs;
+        reg_rdata_next[17] = ie0_3_e_113_qs;
+        reg_rdata_next[18] = ie0_3_e_114_qs;
+        reg_rdata_next[19] = ie0_3_e_115_qs;
+        reg_rdata_next[20] = ie0_3_e_116_qs;
+        reg_rdata_next[21] = ie0_3_e_117_qs;
+        reg_rdata_next[22] = ie0_3_e_118_qs;
+        reg_rdata_next[23] = ie0_3_e_119_qs;
+        reg_rdata_next[24] = ie0_3_e_120_qs;
+        reg_rdata_next[25] = ie0_3_e_121_qs;
+        reg_rdata_next[26] = ie0_3_e_122_qs;
       end
 
-      addr_hit[111]: begin
+      addr_hit[135]: begin
         reg_rdata_next[1:0] = threshold0_qs;
       end
 
-      addr_hit[112]: begin
+      addr_hit[136]: begin
         reg_rdata_next[6:0] = cc0_qs;
       end
 
-      addr_hit[113]: begin
+      addr_hit[137]: begin
         reg_rdata_next[0] = msip0_qs;
       end
 
diff --git a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
index 8084f89..af5679a 100644
--- a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
+++ b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.gen.hjson
@@ -198,16 +198,12 @@
       addr_range:
       [
         {
-          base_addr: 0x18000000
-          size_byte: 0x1000
-        }
-        {
           base_addr: 0x40000000
           size_byte: 0x421000
         }
         {
           base_addr: 0x40500000
-          size_byte: 0x20000
+          size_byte: 0x21000
         }
       ]
     }
diff --git a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_cover.cfg b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_cover.cfg
index 11fe91a..22ed882 100644
--- a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_cover.cfg
+++ b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_cover.cfg
@@ -27,10 +27,10 @@
 -node tb.dut tl_ram_main_o.a_address[31:29]
 -node tb.dut tl_eflash_o.a_address[28:20]
 -node tb.dut tl_eflash_o.a_address[31:30]
+-node tb.dut tl_peri_o.a_address[16:12]
 -node tb.dut tl_peri_o.a_address[19:18]
 -node tb.dut tl_peri_o.a_address[21:21]
--node tb.dut tl_peri_o.a_address[26:23]
--node tb.dut tl_peri_o.a_address[31:29]
+-node tb.dut tl_peri_o.a_address[31:23]
 -node tb.dut tl_flash_ctrl_o.a_address[23:12]
 -node tb.dut tl_flash_ctrl_o.a_address[29:25]
 -node tb.dut tl_flash_ctrl_o.a_address[31:31]
diff --git a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_env_pkg__params.sv b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_env_pkg__params.sv
index 0d9823e..26d043b 100644
--- a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_env_pkg__params.sv
+++ b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_env_pkg__params.sv
@@ -20,9 +20,8 @@
         '{32'h20000000, 32'h200fffff}
     }},
     '{"peri", '{
-        '{32'h18000000, 32'h18000fff},
         '{32'h40000000, 32'h40420fff},
-        '{32'h40500000, 32'h4051ffff}
+        '{32'h40500000, 32'h40520fff}
     }},
     '{"flash_ctrl", '{
         '{32'h41000000, 32'h41000fff}
diff --git a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/tl_main_pkg.sv b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/tl_main_pkg.sv
index 3348ad0..ff61dad 100644
--- a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/tl_main_pkg.sv
+++ b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/tl_main_pkg.sv
@@ -10,10 +10,9 @@
   localparam logic [31:0] ADDR_SPACE_DEBUG_MEM      = 32'h 1a110000;
   localparam logic [31:0] ADDR_SPACE_RAM_MAIN       = 32'h 10000000;
   localparam logic [31:0] ADDR_SPACE_EFLASH         = 32'h 20000000;
-  localparam logic [2:0][31:0] ADDR_SPACE_PERI           = {
+  localparam logic [1:0][31:0] ADDR_SPACE_PERI           = {
     32'h 40500000,
-    32'h 40000000,
-    32'h 18000000
+    32'h 40000000
   };
   localparam logic [31:0] ADDR_SPACE_FLASH_CTRL     = 32'h 41000000;
   localparam logic [31:0] ADDR_SPACE_HMAC           = 32'h 41110000;
@@ -34,10 +33,9 @@
   localparam logic [31:0] ADDR_MASK_DEBUG_MEM      = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_RAM_MAIN       = 32'h 0001ffff;
   localparam logic [31:0] ADDR_MASK_EFLASH         = 32'h 000fffff;
-  localparam logic [2:0][31:0] ADDR_MASK_PERI           = {
-    32'h 0001ffff,
-    32'h 00420fff,
-    32'h 00000fff
+  localparam logic [1:0][31:0] ADDR_MASK_PERI           = {
+    32'h 00020fff,
+    32'h 00420fff
   };
   localparam logic [31:0] ADDR_MASK_FLASH_CTRL     = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_HMAC           = 32'h 00000fff;
diff --git a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv
index 5b5ec0b..d5a027d 100644
--- a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv
+++ b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv
@@ -541,11 +541,10 @@
       dev_sel_s1n_27 = 5'd3;
 
     end else if (
-      ((tl_s1n_27_us_h2d.a_address & ~(ADDR_MASK_PERI[0])) == ADDR_SPACE_PERI[0]) ||
+      ((tl_s1n_27_us_h2d.a_address <= (ADDR_MASK_PERI[0] + ADDR_SPACE_PERI[0])) &&
+       (tl_s1n_27_us_h2d.a_address >= ADDR_SPACE_PERI[0])) ||
       ((tl_s1n_27_us_h2d.a_address <= (ADDR_MASK_PERI[1] + ADDR_SPACE_PERI[1])) &&
-       (tl_s1n_27_us_h2d.a_address >= ADDR_SPACE_PERI[1])) ||
-      ((tl_s1n_27_us_h2d.a_address <= (ADDR_MASK_PERI[2] + ADDR_SPACE_PERI[2])) &&
-       (tl_s1n_27_us_h2d.a_address >= ADDR_SPACE_PERI[2]))
+       (tl_s1n_27_us_h2d.a_address >= ADDR_SPACE_PERI[1]))
     ) begin
       dev_sel_s1n_27 = 5'd4;
 
@@ -606,11 +605,10 @@
       dev_sel_s1n_43 = 5'd2;
 
     end else if (
-      ((tl_s1n_43_us_h2d.a_address & ~(ADDR_MASK_PERI[0])) == ADDR_SPACE_PERI[0]) ||
+      ((tl_s1n_43_us_h2d.a_address <= (ADDR_MASK_PERI[0] + ADDR_SPACE_PERI[0])) &&
+       (tl_s1n_43_us_h2d.a_address >= ADDR_SPACE_PERI[0])) ||
       ((tl_s1n_43_us_h2d.a_address <= (ADDR_MASK_PERI[1] + ADDR_SPACE_PERI[1])) &&
-       (tl_s1n_43_us_h2d.a_address >= ADDR_SPACE_PERI[1])) ||
-      ((tl_s1n_43_us_h2d.a_address <= (ADDR_MASK_PERI[2] + ADDR_SPACE_PERI[2])) &&
-       (tl_s1n_43_us_h2d.a_address >= ADDR_SPACE_PERI[2]))
+       (tl_s1n_43_us_h2d.a_address >= ADDR_SPACE_PERI[1]))
     ) begin
       dev_sel_s1n_43 = 5'd3;
 
diff --git a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
index 185b61a..e8dceae 100644
--- a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
+++ b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
@@ -28,7 +28,10 @@
   {
     main:
     [
-      uart
+      uart0
+      uart1
+      uart2
+      uart3
       gpio
       spi_device
       rv_timer
@@ -60,7 +63,7 @@
       pipeline_byp: "true"
     }
     {
-      name: uart
+      name: uart0
       type: device
       clock: clk_peri_i
       reset: rst_peri_ni
@@ -78,6 +81,60 @@
       pipeline_byp: "true"
     }
     {
+      name: uart1
+      type: device
+      clock: clk_peri_i
+      reset: rst_peri_ni
+      pipeline: "false"
+      inst_type: uart
+      addr_range:
+      [
+        {
+          base_addr: 0x40010000
+          size_byte: 0x1000
+        }
+      ]
+      xbar: false
+      stub: false
+      pipeline_byp: "true"
+    }
+    {
+      name: uart2
+      type: device
+      clock: clk_peri_i
+      reset: rst_peri_ni
+      pipeline: "false"
+      inst_type: uart
+      addr_range:
+      [
+        {
+          base_addr: 0x40020000
+          size_byte: 0x1000
+        }
+      ]
+      xbar: false
+      stub: false
+      pipeline_byp: "true"
+    }
+    {
+      name: uart3
+      type: device
+      clock: clk_peri_i
+      reset: rst_peri_ni
+      pipeline: "false"
+      inst_type: uart
+      addr_range:
+      [
+        {
+          base_addr: 0x40030000
+          size_byte: 0x1000
+        }
+      ]
+      xbar: false
+      stub: false
+      pipeline_byp: "true"
+    }
+    {
       name: gpio
       type: device
       clock: clk_peri_i
@@ -213,7 +270,7 @@
       addr_range:
       [
         {
-          base_addr: 0x18000000
+          base_addr: 0x40520000
           size_byte: 0x1000
         }
       ]
diff --git a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.hjson b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.hjson
index 6277bbb..1ada605 100644
--- a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.hjson
+++ b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.hjson
@@ -21,7 +21,25 @@
     // device
     { struct: "tl"
       type:   "req_rsp"
-      name:   "tl_uart"
+      name:   "tl_uart0"
+      act:    "req"
+      package: "tlul_pkg"
+    }
+    { struct: "tl"
+      type:   "req_rsp"
+      name:   "tl_uart1"
+      act:    "req"
+      package: "tlul_pkg"
+    }
+    { struct: "tl"
+      type:   "req_rsp"
+      name:   "tl_uart2"
+      act:    "req"
+      package: "tlul_pkg"
+    }
+    { struct: "tl"
+      type:   "req_rsp"
+      name:   "tl_uart3"
       act:    "req"
       package: "tlul_pkg"
     }
diff --git a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/tb__xbar_connect.sv b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/tb__xbar_connect.sv
index 674d511..ee1c37b 100644
--- a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/tb__xbar_connect.sv
+++ b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/tb__xbar_connect.sv
@@ -17,7 +17,10 @@
 `CONNECT_TL_HOST_IF(main, dut, clk_peri_i, rst_n)
 
 // Device TileLink interface connections
-`CONNECT_TL_DEVICE_IF(uart, dut, clk_peri_i, rst_n)
+`CONNECT_TL_DEVICE_IF(uart0, dut, clk_peri_i, rst_n)
+`CONNECT_TL_DEVICE_IF(uart1, dut, clk_peri_i, rst_n)
+`CONNECT_TL_DEVICE_IF(uart2, dut, clk_peri_i, rst_n)
+`CONNECT_TL_DEVICE_IF(uart3, dut, clk_peri_i, rst_n)
 `CONNECT_TL_DEVICE_IF(gpio, dut, clk_peri_i, rst_n)
 `CONNECT_TL_DEVICE_IF(spi_device, dut, clk_peri_i, rst_n)
 `CONNECT_TL_DEVICE_IF(rv_timer, dut, clk_peri_i, rst_n)
diff --git a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_cover.cfg b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_cover.cfg
index d026cf5..52057b9 100644
--- a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_cover.cfg
+++ b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_cover.cfg
@@ -16,8 +16,17 @@
 -node tb.dut tl_*.d_opcode[2:1]
 
 // [UNR] these device address bits are always 0
--node tb.dut tl_uart_o.a_address[29:12]
--node tb.dut tl_uart_o.a_address[31:31]
+-node tb.dut tl_uart0_o.a_address[29:12]
+-node tb.dut tl_uart0_o.a_address[31:31]
+-node tb.dut tl_uart1_o.a_address[15:12]
+-node tb.dut tl_uart1_o.a_address[29:17]
+-node tb.dut tl_uart1_o.a_address[31:31]
+-node tb.dut tl_uart2_o.a_address[16:12]
+-node tb.dut tl_uart2_o.a_address[29:18]
+-node tb.dut tl_uart2_o.a_address[31:31]
+-node tb.dut tl_uart3_o.a_address[15:12]
+-node tb.dut tl_uart3_o.a_address[29:18]
+-node tb.dut tl_uart3_o.a_address[31:31]
 -node tb.dut tl_gpio_o.a_address[17:12]
 -node tb.dut tl_gpio_o.a_address[29:19]
 -node tb.dut tl_gpio_o.a_address[31:31]
@@ -43,8 +52,11 @@
 -node tb.dut tl_clkmgr_o.a_address[21:18]
 -node tb.dut tl_clkmgr_o.a_address[29:23]
 -node tb.dut tl_clkmgr_o.a_address[31:31]
--node tb.dut tl_ram_ret_o.a_address[26:12]
--node tb.dut tl_ram_ret_o.a_address[31:29]
+-node tb.dut tl_ram_ret_o.a_address[16:12]
+-node tb.dut tl_ram_ret_o.a_address[19:18]
+-node tb.dut tl_ram_ret_o.a_address[21:21]
+-node tb.dut tl_ram_ret_o.a_address[29:23]
+-node tb.dut tl_ram_ret_o.a_address[31:31]
 -node tb.dut tl_otp_ctrl_o.a_address[15:14]
 -node tb.dut tl_otp_ctrl_o.a_address[19:18]
 -node tb.dut tl_otp_ctrl_o.a_address[29:21]
diff --git a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_env_pkg__params.sv b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_env_pkg__params.sv
index e7d4141..f32a436 100644
--- a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_env_pkg__params.sv
+++ b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_env_pkg__params.sv
@@ -7,9 +7,18 @@
 
 // List of Xbar device memory map
 tl_device_t xbar_devices[$] = '{
-    '{"uart", '{
+    '{"uart0", '{
         '{32'h40000000, 32'h40000fff}
     }},
+    '{"uart1", '{
+        '{32'h40010000, 32'h40010fff}
+    }},
+    '{"uart2", '{
+        '{32'h40020000, 32'h40020fff}
+    }},
+    '{"uart3", '{
+        '{32'h40030000, 32'h40030fff}
+    }},
     '{"gpio", '{
         '{32'h40040000, 32'h40040fff}
     }},
@@ -32,7 +41,7 @@
         '{32'h40420000, 32'h40420fff}
     }},
     '{"ram_ret", '{
-        '{32'h18000000, 32'h18000fff}
+        '{32'h40520000, 32'h40520fff}
     }},
     '{"otp_ctrl", '{
         '{32'h40130000, 32'h40133fff}
@@ -59,7 +68,10 @@
   // List of Xbar hosts
 tl_host_t xbar_hosts[$] = '{
     '{"main", 0, '{
-        "uart",
+        "uart0",
+        "uart1",
+        "uart2",
+        "uart3",
         "gpio",
         "spi_device",
         "rv_timer",
diff --git a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_bind.sv b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_bind.sv
index 64de93d..75fa8d9 100644
--- a/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_bind.sv
+++ b/hw/top_earlgrey/ip/xbar_peri/dv/autogen/xbar_peri_bind.sv
@@ -14,11 +14,29 @@
   );
 
   // Device interfaces
-  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_uart (
+  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_uart0 (
     .clk_i  (clk_peri_i),
     .rst_ni (rst_peri_ni),
-    .h2d    (tl_uart_o),
-    .d2h    (tl_uart_i)
+    .h2d    (tl_uart0_o),
+    .d2h    (tl_uart0_i)
+  );
+  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_uart1 (
+    .clk_i  (clk_peri_i),
+    .rst_ni (rst_peri_ni),
+    .h2d    (tl_uart1_o),
+    .d2h    (tl_uart1_i)
+  );
+  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_uart2 (
+    .clk_i  (clk_peri_i),
+    .rst_ni (rst_peri_ni),
+    .h2d    (tl_uart2_o),
+    .d2h    (tl_uart2_i)
+  );
+  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_uart3 (
+    .clk_i  (clk_peri_i),
+    .rst_ni (rst_peri_ni),
+    .h2d    (tl_uart3_o),
+    .d2h    (tl_uart3_i)
   );
   bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_gpio (
     .clk_i  (clk_peri_i),
diff --git a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/tl_peri_pkg.sv b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/tl_peri_pkg.sv
index 13462ee..c7610f0 100644
--- a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/tl_peri_pkg.sv
+++ b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/tl_peri_pkg.sv
@@ -6,7 +6,10 @@
 
 package tl_peri_pkg;
 
-  localparam logic [31:0] ADDR_SPACE_UART          = 32'h 40000000;
+  localparam logic [31:0] ADDR_SPACE_UART0         = 32'h 40000000;
+  localparam logic [31:0] ADDR_SPACE_UART1         = 32'h 40010000;
+  localparam logic [31:0] ADDR_SPACE_UART2         = 32'h 40020000;
+  localparam logic [31:0] ADDR_SPACE_UART3         = 32'h 40030000;
   localparam logic [31:0] ADDR_SPACE_GPIO          = 32'h 40040000;
   localparam logic [31:0] ADDR_SPACE_SPI_DEVICE    = 32'h 40050000;
   localparam logic [31:0] ADDR_SPACE_RV_TIMER      = 32'h 40100000;
@@ -14,7 +17,7 @@
   localparam logic [31:0] ADDR_SPACE_PWRMGR        = 32'h 40400000;
   localparam logic [31:0] ADDR_SPACE_RSTMGR        = 32'h 40410000;
   localparam logic [31:0] ADDR_SPACE_CLKMGR        = 32'h 40420000;
-  localparam logic [31:0] ADDR_SPACE_RAM_RET       = 32'h 18000000;
+  localparam logic [31:0] ADDR_SPACE_RAM_RET       = 32'h 40520000;
   localparam logic [31:0] ADDR_SPACE_OTP_CTRL      = 32'h 40130000;
   localparam logic [31:0] ADDR_SPACE_LC_CTRL       = 32'h 40140000;
   localparam logic [31:0] ADDR_SPACE_SENSOR_CTRL   = 32'h 40110000;
@@ -23,7 +26,10 @@
   localparam logic [31:0] ADDR_SPACE_NMI_GEN       = 32'h 40160000;
   localparam logic [31:0] ADDR_SPACE_AST_WRAPPER   = 32'h 40180000;
 
-  localparam logic [31:0] ADDR_MASK_UART          = 32'h 00000fff;
+  localparam logic [31:0] ADDR_MASK_UART0         = 32'h 00000fff;
+  localparam logic [31:0] ADDR_MASK_UART1         = 32'h 00000fff;
+  localparam logic [31:0] ADDR_MASK_UART2         = 32'h 00000fff;
+  localparam logic [31:0] ADDR_MASK_UART3         = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_GPIO          = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_SPI_DEVICE    = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_RV_TIMER      = 32'h 00000fff;
@@ -41,25 +47,28 @@
   localparam logic [31:0] ADDR_MASK_AST_WRAPPER   = 32'h 00000fff;
 
   localparam int N_HOST   = 1;
-  localparam int N_DEVICE = 16;
+  localparam int N_DEVICE = 19;
 
   typedef enum int {
-    TlUart = 0,
-    TlGpio = 1,
-    TlSpiDevice = 2,
-    TlRvTimer = 3,
-    TlUsbdev = 4,
-    TlPwrmgr = 5,
-    TlRstmgr = 6,
-    TlClkmgr = 7,
-    TlRamRet = 8,
-    TlOtpCtrl = 9,
-    TlLcCtrl = 10,
-    TlSensorCtrl = 11,
-    TlAlertHandler = 12,
-    TlSramCtrlRet = 13,
-    TlNmiGen = 14,
-    TlAstWrapper = 15
+    TlUart0 = 0,
+    TlUart1 = 1,
+    TlUart2 = 2,
+    TlUart3 = 3,
+    TlGpio = 4,
+    TlSpiDevice = 5,
+    TlRvTimer = 6,
+    TlUsbdev = 7,
+    TlPwrmgr = 8,
+    TlRstmgr = 9,
+    TlClkmgr = 10,
+    TlRamRet = 11,
+    TlOtpCtrl = 12,
+    TlLcCtrl = 13,
+    TlSensorCtrl = 14,
+    TlAlertHandler = 15,
+    TlSramCtrlRet = 16,
+    TlNmiGen = 17,
+    TlAstWrapper = 18
   } tl_device_e;
 
   typedef enum int {
diff --git a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.sv b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.sv
index 64fff82..379fc84 100644
--- a/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.sv
+++ b/hw/top_earlgrey/ip/xbar_peri/rtl/autogen/xbar_peri.sv
@@ -7,8 +7,11 @@
 //
 // Interconnect
 // main
-//   -> s1n_17
-//     -> uart
+//   -> s1n_20
+//     -> uart0
+//     -> uart1
+//     -> uart2
+//     -> uart3
 //     -> gpio
 //     -> spi_device
 //     -> rv_timer
@@ -34,8 +37,14 @@
   output tlul_pkg::tl_d2h_t tl_main_o,
 
   // Device interfaces
-  output tlul_pkg::tl_h2d_t tl_uart_o,
-  input  tlul_pkg::tl_d2h_t tl_uart_i,
+  output tlul_pkg::tl_h2d_t tl_uart0_o,
+  input  tlul_pkg::tl_d2h_t tl_uart0_i,
+  output tlul_pkg::tl_h2d_t tl_uart1_o,
+  input  tlul_pkg::tl_d2h_t tl_uart1_i,
+  output tlul_pkg::tl_h2d_t tl_uart2_o,
+  input  tlul_pkg::tl_d2h_t tl_uart2_i,
+  output tlul_pkg::tl_h2d_t tl_uart3_o,
+  input  tlul_pkg::tl_d2h_t tl_uart3_i,
   output tlul_pkg::tl_h2d_t tl_gpio_o,
   input  tlul_pkg::tl_d2h_t tl_gpio_i,
   output tlul_pkg::tl_h2d_t tl_spi_device_o,
@@ -78,119 +87,137 @@
   logic unused_scanmode;
   assign unused_scanmode = scanmode_i;
 
-  tl_h2d_t tl_s1n_17_us_h2d ;
-  tl_d2h_t tl_s1n_17_us_d2h ;
+  tl_h2d_t tl_s1n_20_us_h2d ;
+  tl_d2h_t tl_s1n_20_us_d2h ;
 
 
-  tl_h2d_t tl_s1n_17_ds_h2d [16];
-  tl_d2h_t tl_s1n_17_ds_d2h [16];
+  tl_h2d_t tl_s1n_20_ds_h2d [19];
+  tl_d2h_t tl_s1n_20_ds_d2h [19];
 
   // Create steering signal
-  logic [4:0] dev_sel_s1n_17;
+  logic [4:0] dev_sel_s1n_20;
 
 
 
-  assign tl_uart_o = tl_s1n_17_ds_h2d[0];
-  assign tl_s1n_17_ds_d2h[0] = tl_uart_i;
+  assign tl_uart0_o = tl_s1n_20_ds_h2d[0];
+  assign tl_s1n_20_ds_d2h[0] = tl_uart0_i;
 
-  assign tl_gpio_o = tl_s1n_17_ds_h2d[1];
-  assign tl_s1n_17_ds_d2h[1] = tl_gpio_i;
+  assign tl_uart1_o = tl_s1n_20_ds_h2d[1];
+  assign tl_s1n_20_ds_d2h[1] = tl_uart1_i;
 
-  assign tl_spi_device_o = tl_s1n_17_ds_h2d[2];
-  assign tl_s1n_17_ds_d2h[2] = tl_spi_device_i;
+  assign tl_uart2_o = tl_s1n_20_ds_h2d[2];
+  assign tl_s1n_20_ds_d2h[2] = tl_uart2_i;
 
-  assign tl_rv_timer_o = tl_s1n_17_ds_h2d[3];
-  assign tl_s1n_17_ds_d2h[3] = tl_rv_timer_i;
+  assign tl_uart3_o = tl_s1n_20_ds_h2d[3];
+  assign tl_s1n_20_ds_d2h[3] = tl_uart3_i;
 
-  assign tl_usbdev_o = tl_s1n_17_ds_h2d[4];
-  assign tl_s1n_17_ds_d2h[4] = tl_usbdev_i;
+  assign tl_gpio_o = tl_s1n_20_ds_h2d[4];
+  assign tl_s1n_20_ds_d2h[4] = tl_gpio_i;
 
-  assign tl_pwrmgr_o = tl_s1n_17_ds_h2d[5];
-  assign tl_s1n_17_ds_d2h[5] = tl_pwrmgr_i;
+  assign tl_spi_device_o = tl_s1n_20_ds_h2d[5];
+  assign tl_s1n_20_ds_d2h[5] = tl_spi_device_i;
 
-  assign tl_rstmgr_o = tl_s1n_17_ds_h2d[6];
-  assign tl_s1n_17_ds_d2h[6] = tl_rstmgr_i;
+  assign tl_rv_timer_o = tl_s1n_20_ds_h2d[6];
+  assign tl_s1n_20_ds_d2h[6] = tl_rv_timer_i;
 
-  assign tl_clkmgr_o = tl_s1n_17_ds_h2d[7];
-  assign tl_s1n_17_ds_d2h[7] = tl_clkmgr_i;
+  assign tl_usbdev_o = tl_s1n_20_ds_h2d[7];
+  assign tl_s1n_20_ds_d2h[7] = tl_usbdev_i;
 
-  assign tl_ram_ret_o = tl_s1n_17_ds_h2d[8];
-  assign tl_s1n_17_ds_d2h[8] = tl_ram_ret_i;
+  assign tl_pwrmgr_o = tl_s1n_20_ds_h2d[8];
+  assign tl_s1n_20_ds_d2h[8] = tl_pwrmgr_i;
 
-  assign tl_otp_ctrl_o = tl_s1n_17_ds_h2d[9];
-  assign tl_s1n_17_ds_d2h[9] = tl_otp_ctrl_i;
+  assign tl_rstmgr_o = tl_s1n_20_ds_h2d[9];
+  assign tl_s1n_20_ds_d2h[9] = tl_rstmgr_i;
 
-  assign tl_lc_ctrl_o = tl_s1n_17_ds_h2d[10];
-  assign tl_s1n_17_ds_d2h[10] = tl_lc_ctrl_i;
+  assign tl_clkmgr_o = tl_s1n_20_ds_h2d[10];
+  assign tl_s1n_20_ds_d2h[10] = tl_clkmgr_i;
 
-  assign tl_sensor_ctrl_o = tl_s1n_17_ds_h2d[11];
-  assign tl_s1n_17_ds_d2h[11] = tl_sensor_ctrl_i;
+  assign tl_ram_ret_o = tl_s1n_20_ds_h2d[11];
+  assign tl_s1n_20_ds_d2h[11] = tl_ram_ret_i;
 
-  assign tl_alert_handler_o = tl_s1n_17_ds_h2d[12];
-  assign tl_s1n_17_ds_d2h[12] = tl_alert_handler_i;
+  assign tl_otp_ctrl_o = tl_s1n_20_ds_h2d[12];
+  assign tl_s1n_20_ds_d2h[12] = tl_otp_ctrl_i;
 
-  assign tl_nmi_gen_o = tl_s1n_17_ds_h2d[13];
-  assign tl_s1n_17_ds_d2h[13] = tl_nmi_gen_i;
+  assign tl_lc_ctrl_o = tl_s1n_20_ds_h2d[13];
+  assign tl_s1n_20_ds_d2h[13] = tl_lc_ctrl_i;
 
-  assign tl_ast_wrapper_o = tl_s1n_17_ds_h2d[14];
-  assign tl_s1n_17_ds_d2h[14] = tl_ast_wrapper_i;
+  assign tl_sensor_ctrl_o = tl_s1n_20_ds_h2d[14];
+  assign tl_s1n_20_ds_d2h[14] = tl_sensor_ctrl_i;
 
-  assign tl_sram_ctrl_ret_o = tl_s1n_17_ds_h2d[15];
-  assign tl_s1n_17_ds_d2h[15] = tl_sram_ctrl_ret_i;
+  assign tl_alert_handler_o = tl_s1n_20_ds_h2d[15];
+  assign tl_s1n_20_ds_d2h[15] = tl_alert_handler_i;
 
-  assign tl_s1n_17_us_h2d = tl_main_i;
-  assign tl_main_o = tl_s1n_17_us_d2h;
+  assign tl_nmi_gen_o = tl_s1n_20_ds_h2d[16];
+  assign tl_s1n_20_ds_d2h[16] = tl_nmi_gen_i;
+
+  assign tl_ast_wrapper_o = tl_s1n_20_ds_h2d[17];
+  assign tl_s1n_20_ds_d2h[17] = tl_ast_wrapper_i;
+
+  assign tl_sram_ctrl_ret_o = tl_s1n_20_ds_h2d[18];
+  assign tl_s1n_20_ds_d2h[18] = tl_sram_ctrl_ret_i;
+
+  assign tl_s1n_20_us_h2d = tl_main_i;
+  assign tl_main_o = tl_s1n_20_us_d2h;
 
   always_comb begin
     // default steering to generate error response if address is not within the range
-    dev_sel_s1n_17 = 5'd16;
-    if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_UART)) == ADDR_SPACE_UART) begin
-      dev_sel_s1n_17 = 5'd0;
+    dev_sel_s1n_20 = 5'd19;
+    if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_UART0)) == ADDR_SPACE_UART0) begin
+      dev_sel_s1n_20 = 5'd0;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_GPIO)) == ADDR_SPACE_GPIO) begin
-      dev_sel_s1n_17 = 5'd1;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_UART1)) == ADDR_SPACE_UART1) begin
+      dev_sel_s1n_20 = 5'd1;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_SPI_DEVICE)) == ADDR_SPACE_SPI_DEVICE) begin
-      dev_sel_s1n_17 = 5'd2;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_UART2)) == ADDR_SPACE_UART2) begin
+      dev_sel_s1n_20 = 5'd2;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_RV_TIMER)) == ADDR_SPACE_RV_TIMER) begin
-      dev_sel_s1n_17 = 5'd3;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_UART3)) == ADDR_SPACE_UART3) begin
+      dev_sel_s1n_20 = 5'd3;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_USBDEV)) == ADDR_SPACE_USBDEV) begin
-      dev_sel_s1n_17 = 5'd4;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_GPIO)) == ADDR_SPACE_GPIO) begin
+      dev_sel_s1n_20 = 5'd4;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_PWRMGR)) == ADDR_SPACE_PWRMGR) begin
-      dev_sel_s1n_17 = 5'd5;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_SPI_DEVICE)) == ADDR_SPACE_SPI_DEVICE) begin
+      dev_sel_s1n_20 = 5'd5;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_RSTMGR)) == ADDR_SPACE_RSTMGR) begin
-      dev_sel_s1n_17 = 5'd6;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_RV_TIMER)) == ADDR_SPACE_RV_TIMER) begin
+      dev_sel_s1n_20 = 5'd6;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_CLKMGR)) == ADDR_SPACE_CLKMGR) begin
-      dev_sel_s1n_17 = 5'd7;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_USBDEV)) == ADDR_SPACE_USBDEV) begin
+      dev_sel_s1n_20 = 5'd7;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_RAM_RET)) == ADDR_SPACE_RAM_RET) begin
-      dev_sel_s1n_17 = 5'd8;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_PWRMGR)) == ADDR_SPACE_PWRMGR) begin
+      dev_sel_s1n_20 = 5'd8;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_OTP_CTRL)) == ADDR_SPACE_OTP_CTRL) begin
-      dev_sel_s1n_17 = 5'd9;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_RSTMGR)) == ADDR_SPACE_RSTMGR) begin
+      dev_sel_s1n_20 = 5'd9;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_LC_CTRL)) == ADDR_SPACE_LC_CTRL) begin
-      dev_sel_s1n_17 = 5'd10;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_CLKMGR)) == ADDR_SPACE_CLKMGR) begin
+      dev_sel_s1n_20 = 5'd10;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_SENSOR_CTRL)) == ADDR_SPACE_SENSOR_CTRL) begin
-      dev_sel_s1n_17 = 5'd11;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_RAM_RET)) == ADDR_SPACE_RAM_RET) begin
+      dev_sel_s1n_20 = 5'd11;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_ALERT_HANDLER)) == ADDR_SPACE_ALERT_HANDLER) begin
-      dev_sel_s1n_17 = 5'd12;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_OTP_CTRL)) == ADDR_SPACE_OTP_CTRL) begin
+      dev_sel_s1n_20 = 5'd12;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_NMI_GEN)) == ADDR_SPACE_NMI_GEN) begin
-      dev_sel_s1n_17 = 5'd13;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_LC_CTRL)) == ADDR_SPACE_LC_CTRL) begin
+      dev_sel_s1n_20 = 5'd13;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_AST_WRAPPER)) == ADDR_SPACE_AST_WRAPPER) begin
-      dev_sel_s1n_17 = 5'd14;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_SENSOR_CTRL)) == ADDR_SPACE_SENSOR_CTRL) begin
+      dev_sel_s1n_20 = 5'd14;
 
-    end else if ((tl_s1n_17_us_h2d.a_address & ~(ADDR_MASK_SRAM_CTRL_RET)) == ADDR_SPACE_SRAM_CTRL_RET) begin
-      dev_sel_s1n_17 = 5'd15;
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_ALERT_HANDLER)) == ADDR_SPACE_ALERT_HANDLER) begin
+      dev_sel_s1n_20 = 5'd15;
+
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_NMI_GEN)) == ADDR_SPACE_NMI_GEN) begin
+      dev_sel_s1n_20 = 5'd16;
+
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_AST_WRAPPER)) == ADDR_SPACE_AST_WRAPPER) begin
+      dev_sel_s1n_20 = 5'd17;
+
+    end else if ((tl_s1n_20_us_h2d.a_address & ~(ADDR_MASK_SRAM_CTRL_RET)) == ADDR_SPACE_SRAM_CTRL_RET) begin
+      dev_sel_s1n_20 = 5'd18;
 end
   end
 
@@ -199,17 +226,17 @@
   tlul_socket_1n #(
     .HReqDepth (4'h0),
     .HRspDepth (4'h0),
-    .DReqDepth (64'h0),
-    .DRspDepth (64'h0),
-    .N         (16)
-  ) u_s1n_17 (
+    .DReqDepth (76'h0),
+    .DRspDepth (76'h0),
+    .N         (19)
+  ) u_s1n_20 (
     .clk_i        (clk_peri_i),
     .rst_ni       (rst_peri_ni),
-    .tl_h_i       (tl_s1n_17_us_h2d),
-    .tl_h_o       (tl_s1n_17_us_d2h),
-    .tl_d_o       (tl_s1n_17_ds_h2d),
-    .tl_d_i       (tl_s1n_17_ds_d2h),
-    .dev_select_i (dev_sel_s1n_17)
+    .tl_h_i       (tl_s1n_20_us_h2d),
+    .tl_h_o       (tl_s1n_20_us_d2h),
+    .tl_d_o       (tl_s1n_20_ds_h2d),
+    .tl_d_i       (tl_s1n_20_ds_d2h),
+    .dev_select_i (dev_sel_s1n_20)
   );
 
 endmodule
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index f16c423..f50f51a 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -100,16 +100,28 @@
   import top_earlgrey_rnd_cnst_pkg::*;
 
   // Signals
-  logic [31:0] mio_p2d;
-  logic [31:0] mio_d2p;
-  logic [31:0] mio_d2p_en;
+  logic [34:0] mio_p2d;
+  logic [34:0] mio_d2p;
+  logic [34:0] mio_d2p_en;
   logic [14:0] dio_p2d;
   logic [14:0] dio_d2p;
   logic [14:0] dio_d2p_en;
-  // uart
-  logic        cio_uart_rx_p2d;
-  logic        cio_uart_tx_d2p;
-  logic        cio_uart_tx_en_d2p;
+  // uart0
+  logic        cio_uart0_rx_p2d;
+  logic        cio_uart0_tx_d2p;
+  logic        cio_uart0_tx_en_d2p;
+  // uart1
+  logic        cio_uart1_rx_p2d;
+  logic        cio_uart1_tx_d2p;
+  logic        cio_uart1_tx_en_d2p;
+  // uart2
+  logic        cio_uart2_rx_p2d;
+  logic        cio_uart2_tx_d2p;
+  logic        cio_uart2_tx_en_d2p;
+  // uart3
+  logic        cio_uart3_rx_p2d;
+  logic        cio_uart3_tx_d2p;
+  logic        cio_uart3_tx_en_d2p;
   // gpio
   logic [31:0] cio_gpio_gpio_p2d;
   logic [31:0] cio_gpio_gpio_d2p;
@@ -167,16 +179,40 @@
   // otbn
 
 
-  logic [98:0]  intr_vector;
+  logic [122:0]  intr_vector;
   // Interrupt source list
-  logic intr_uart_tx_watermark;
-  logic intr_uart_rx_watermark;
-  logic intr_uart_tx_empty;
-  logic intr_uart_rx_overflow;
-  logic intr_uart_rx_frame_err;
-  logic intr_uart_rx_break_err;
-  logic intr_uart_rx_timeout;
-  logic intr_uart_rx_parity_err;
+  logic intr_uart0_tx_watermark;
+  logic intr_uart0_rx_watermark;
+  logic intr_uart0_tx_empty;
+  logic intr_uart0_rx_overflow;
+  logic intr_uart0_rx_frame_err;
+  logic intr_uart0_rx_break_err;
+  logic intr_uart0_rx_timeout;
+  logic intr_uart0_rx_parity_err;
+  logic intr_uart1_tx_watermark;
+  logic intr_uart1_rx_watermark;
+  logic intr_uart1_tx_empty;
+  logic intr_uart1_rx_overflow;
+  logic intr_uart1_rx_frame_err;
+  logic intr_uart1_rx_break_err;
+  logic intr_uart1_rx_timeout;
+  logic intr_uart1_rx_parity_err;
+  logic intr_uart2_tx_watermark;
+  logic intr_uart2_rx_watermark;
+  logic intr_uart2_tx_empty;
+  logic intr_uart2_rx_overflow;
+  logic intr_uart2_rx_frame_err;
+  logic intr_uart2_rx_break_err;
+  logic intr_uart2_rx_timeout;
+  logic intr_uart2_rx_parity_err;
+  logic intr_uart3_tx_watermark;
+  logic intr_uart3_rx_watermark;
+  logic intr_uart3_tx_empty;
+  logic intr_uart3_rx_overflow;
+  logic intr_uart3_rx_frame_err;
+  logic intr_uart3_rx_break_err;
+  logic intr_uart3_rx_timeout;
+  logic intr_uart3_rx_parity_err;
   logic [31:0] intr_gpio_gpio;
   logic intr_spi_device_rxf;
   logic intr_spi_device_rxlvl;
@@ -349,8 +385,14 @@
   tlul_pkg::tl_d2h_t       keymgr_tl_rsp;
   tlul_pkg::tl_h2d_t       sram_ctrl_main_tl_req;
   tlul_pkg::tl_d2h_t       sram_ctrl_main_tl_rsp;
-  tlul_pkg::tl_h2d_t       uart_tl_req;
-  tlul_pkg::tl_d2h_t       uart_tl_rsp;
+  tlul_pkg::tl_h2d_t       uart0_tl_req;
+  tlul_pkg::tl_d2h_t       uart0_tl_rsp;
+  tlul_pkg::tl_h2d_t       uart1_tl_req;
+  tlul_pkg::tl_d2h_t       uart1_tl_rsp;
+  tlul_pkg::tl_h2d_t       uart2_tl_req;
+  tlul_pkg::tl_d2h_t       uart2_tl_rsp;
+  tlul_pkg::tl_h2d_t       uart3_tl_req;
+  tlul_pkg::tl_d2h_t       uart3_tl_rsp;
   tlul_pkg::tl_h2d_t       gpio_tl_req;
   tlul_pkg::tl_d2h_t       gpio_tl_rsp;
   tlul_pkg::tl_h2d_t       spi_device_tl_req;
@@ -738,28 +780,106 @@
 
 
 
-  uart u_uart (
+  uart u_uart0 (
 
       // Input
-      .cio_rx_i    (cio_uart_rx_p2d),
+      .cio_rx_i    (cio_uart0_rx_p2d),
 
       // Output
-      .cio_tx_o    (cio_uart_tx_d2p),
-      .cio_tx_en_o (cio_uart_tx_en_d2p),
+      .cio_tx_o    (cio_uart0_tx_d2p),
+      .cio_tx_en_o (cio_uart0_tx_en_d2p),
 
       // Interrupt
-      .intr_tx_watermark_o  (intr_uart_tx_watermark),
-      .intr_rx_watermark_o  (intr_uart_rx_watermark),
-      .intr_tx_empty_o      (intr_uart_tx_empty),
-      .intr_rx_overflow_o   (intr_uart_rx_overflow),
-      .intr_rx_frame_err_o  (intr_uart_rx_frame_err),
-      .intr_rx_break_err_o  (intr_uart_rx_break_err),
-      .intr_rx_timeout_o    (intr_uart_rx_timeout),
-      .intr_rx_parity_err_o (intr_uart_rx_parity_err),
+      .intr_tx_watermark_o  (intr_uart0_tx_watermark),
+      .intr_rx_watermark_o  (intr_uart0_rx_watermark),
+      .intr_tx_empty_o      (intr_uart0_tx_empty),
+      .intr_rx_overflow_o   (intr_uart0_rx_overflow),
+      .intr_rx_frame_err_o  (intr_uart0_rx_frame_err),
+      .intr_rx_break_err_o  (intr_uart0_rx_break_err),
+      .intr_rx_timeout_o    (intr_uart0_rx_timeout),
+      .intr_rx_parity_err_o (intr_uart0_rx_parity_err),
 
       // Inter-module signals
-      .tl_i(uart_tl_req),
-      .tl_o(uart_tl_rsp),
+      .tl_i(uart0_tl_req),
+      .tl_o(uart0_tl_rsp),
+      .clk_i (clkmgr_clocks.clk_io_div4_secure),
+      .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
+  );
+
+  uart u_uart1 (
+
+      // Input
+      .cio_rx_i    (cio_uart1_rx_p2d),
+
+      // Output
+      .cio_tx_o    (cio_uart1_tx_d2p),
+      .cio_tx_en_o (cio_uart1_tx_en_d2p),
+
+      // Interrupt
+      .intr_tx_watermark_o  (intr_uart1_tx_watermark),
+      .intr_rx_watermark_o  (intr_uart1_rx_watermark),
+      .intr_tx_empty_o      (intr_uart1_tx_empty),
+      .intr_rx_overflow_o   (intr_uart1_rx_overflow),
+      .intr_rx_frame_err_o  (intr_uart1_rx_frame_err),
+      .intr_rx_break_err_o  (intr_uart1_rx_break_err),
+      .intr_rx_timeout_o    (intr_uart1_rx_timeout),
+      .intr_rx_parity_err_o (intr_uart1_rx_parity_err),
+
+      // Inter-module signals
+      .tl_i(uart1_tl_req),
+      .tl_o(uart1_tl_rsp),
+      .clk_i (clkmgr_clocks.clk_io_div4_secure),
+      .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
+  );
+
+  uart u_uart2 (
+
+      // Input
+      .cio_rx_i    (cio_uart2_rx_p2d),
+
+      // Output
+      .cio_tx_o    (cio_uart2_tx_d2p),
+      .cio_tx_en_o (cio_uart2_tx_en_d2p),
+
+      // Interrupt
+      .intr_tx_watermark_o  (intr_uart2_tx_watermark),
+      .intr_rx_watermark_o  (intr_uart2_rx_watermark),
+      .intr_tx_empty_o      (intr_uart2_tx_empty),
+      .intr_rx_overflow_o   (intr_uart2_rx_overflow),
+      .intr_rx_frame_err_o  (intr_uart2_rx_frame_err),
+      .intr_rx_break_err_o  (intr_uart2_rx_break_err),
+      .intr_rx_timeout_o    (intr_uart2_rx_timeout),
+      .intr_rx_parity_err_o (intr_uart2_rx_parity_err),
+
+      // Inter-module signals
+      .tl_i(uart2_tl_req),
+      .tl_o(uart2_tl_rsp),
+      .clk_i (clkmgr_clocks.clk_io_div4_secure),
+      .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
+  );
+
+  uart u_uart3 (
+
+      // Input
+      .cio_rx_i    (cio_uart3_rx_p2d),
+
+      // Output
+      .cio_tx_o    (cio_uart3_tx_d2p),
+      .cio_tx_en_o (cio_uart3_tx_en_d2p),
+
+      // Interrupt
+      .intr_tx_watermark_o  (intr_uart3_tx_watermark),
+      .intr_rx_watermark_o  (intr_uart3_rx_watermark),
+      .intr_tx_empty_o      (intr_uart3_tx_empty),
+      .intr_rx_overflow_o   (intr_uart3_rx_overflow),
+      .intr_rx_frame_err_o  (intr_uart3_rx_frame_err),
+      .intr_rx_break_err_o  (intr_uart3_rx_break_err),
+      .intr_rx_timeout_o    (intr_uart3_rx_timeout),
+      .intr_rx_parity_err_o (intr_uart3_rx_parity_err),
+
+      // Inter-module signals
+      .tl_i(uart3_tl_req),
+      .tl_o(uart3_tl_rsp),
       .clk_i (clkmgr_clocks.clk_io_div4_secure),
       .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
   );
@@ -1539,15 +1659,39 @@
       intr_spi_device_txlvl,
       intr_spi_device_rxlvl,
       intr_spi_device_rxf,
-      intr_uart_rx_parity_err,
-      intr_uart_rx_timeout,
-      intr_uart_rx_break_err,
-      intr_uart_rx_frame_err,
-      intr_uart_rx_overflow,
-      intr_uart_tx_empty,
-      intr_uart_rx_watermark,
-      intr_uart_tx_watermark,
       intr_gpio_gpio,
+      intr_uart3_rx_parity_err,
+      intr_uart3_rx_timeout,
+      intr_uart3_rx_break_err,
+      intr_uart3_rx_frame_err,
+      intr_uart3_rx_overflow,
+      intr_uart3_tx_empty,
+      intr_uart3_rx_watermark,
+      intr_uart3_tx_watermark,
+      intr_uart2_rx_parity_err,
+      intr_uart2_rx_timeout,
+      intr_uart2_rx_break_err,
+      intr_uart2_rx_frame_err,
+      intr_uart2_rx_overflow,
+      intr_uart2_tx_empty,
+      intr_uart2_rx_watermark,
+      intr_uart2_tx_watermark,
+      intr_uart1_rx_parity_err,
+      intr_uart1_rx_timeout,
+      intr_uart1_rx_break_err,
+      intr_uart1_rx_frame_err,
+      intr_uart1_rx_overflow,
+      intr_uart1_tx_empty,
+      intr_uart1_rx_watermark,
+      intr_uart1_tx_watermark,
+      intr_uart0_rx_parity_err,
+      intr_uart0_rx_timeout,
+      intr_uart0_rx_break_err,
+      intr_uart0_rx_frame_err,
+      intr_uart0_rx_overflow,
+      intr_uart0_tx_empty,
+      intr_uart0_rx_watermark,
+      intr_uart0_tx_watermark,
       1'b 0 // For ID 0.
   };
 
@@ -1657,9 +1801,21 @@
     .tl_main_i(main_tl_peri_req),
     .tl_main_o(main_tl_peri_rsp),
 
-    // port: tl_uart
-    .tl_uart_o(uart_tl_req),
-    .tl_uart_i(uart_tl_rsp),
+    // port: tl_uart0
+    .tl_uart0_o(uart0_tl_req),
+    .tl_uart0_i(uart0_tl_rsp),
+
+    // port: tl_uart1
+    .tl_uart1_o(uart1_tl_req),
+    .tl_uart1_i(uart1_tl_rsp),
+
+    // port: tl_uart2
+    .tl_uart2_o(uart2_tl_req),
+    .tl_uart2_i(uart2_tl_rsp),
+
+    // port: tl_uart3
+    .tl_uart3_o(uart3_tl_req),
+    .tl_uart3_i(uart3_tl_rsp),
 
     // port: tl_gpio
     .tl_gpio_o(gpio_tl_req),
@@ -1727,12 +1883,21 @@
 
   // Pinmux connections
   assign mio_d2p = {
+    cio_uart3_tx_d2p,
+    cio_uart2_tx_d2p,
+    cio_uart1_tx_d2p,
     cio_gpio_gpio_d2p
   };
   assign mio_d2p_en = {
+    cio_uart3_tx_en_d2p,
+    cio_uart2_tx_en_d2p,
+    cio_uart1_tx_en_d2p,
     cio_gpio_gpio_en_d2p
   };
   assign {
+    cio_uart3_rx_p2d,
+    cio_uart2_rx_p2d,
+    cio_uart1_rx_p2d,
     cio_gpio_gpio_p2d
   } = mio_p2d;
 
@@ -1743,8 +1908,8 @@
     1'b0, // DIO13: cio_spi_device_csb
     1'b0, // DIO12: cio_spi_device_sdi
     cio_spi_device_sdo_d2p, // DIO11
-    1'b0, // DIO10: cio_uart_rx
-    cio_uart_tx_d2p, // DIO9
+    1'b0, // DIO10: cio_uart0_rx
+    cio_uart0_tx_d2p, // DIO9
     1'b0, // DIO8: cio_usbdev_sense
     cio_usbdev_se0_d2p, // DIO7
     cio_usbdev_dp_pullup_d2p, // DIO6
@@ -1761,8 +1926,8 @@
     1'b0, // DIO13: cio_spi_device_csb
     1'b0, // DIO12: cio_spi_device_sdi
     cio_spi_device_sdo_en_d2p, // DIO11
-    1'b0, // DIO10: cio_uart_rx
-    cio_uart_tx_en_d2p, // DIO9
+    1'b0, // DIO10: cio_uart0_rx
+    cio_uart0_tx_en_d2p, // DIO9
     1'b0, // DIO8: cio_usbdev_sense
     cio_usbdev_se0_en_d2p, // DIO7
     cio_usbdev_dp_pullup_en_d2p, // DIO6
@@ -1779,8 +1944,8 @@
   assign cio_spi_device_csb_p2d    = dio_p2d[13]; // DIO13
   assign cio_spi_device_sdi_p2d    = dio_p2d[12]; // DIO12
   // DIO11: cio_spi_device_sdo
-  assign cio_uart_rx_p2d           = dio_p2d[10]; // DIO10
-  // DIO9: cio_uart_tx
+  assign cio_uart0_rx_p2d          = dio_p2d[10]; // DIO10
+  // DIO9: cio_uart0_tx
   assign cio_usbdev_sense_p2d      = dio_p2d[8]; // DIO8
   // DIO7: cio_usbdev_se0
   // DIO6: cio_usbdev_dp_pullup
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index 020902a..b7e8956 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -12,14 +12,44 @@
 
 package top_earlgrey_pkg;
   /**
-   * Peripheral base address for uart in top earlgrey.
+   * Peripheral base address for uart0 in top earlgrey.
    */
-  parameter int unsigned TOP_EARLGREY_UART_BASE_ADDR = 32'h40000000;
+  parameter int unsigned TOP_EARLGREY_UART0_BASE_ADDR = 32'h40000000;
 
   /**
-   * Peripheral size in bytes for uart in top earlgrey.
+   * Peripheral size in bytes for uart0 in top earlgrey.
    */
-  parameter int unsigned TOP_EARLGREY_UART_SIZE_BYTES = 32'h1000;
+  parameter int unsigned TOP_EARLGREY_UART0_SIZE_BYTES = 32'h1000;
+
+  /**
+   * Peripheral base address for uart1 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART1_BASE_ADDR = 32'h40010000;
+
+  /**
+   * Peripheral size in bytes for uart1 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART1_SIZE_BYTES = 32'h1000;
+
+  /**
+   * Peripheral base address for uart2 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART2_BASE_ADDR = 32'h40020000;
+
+  /**
+   * Peripheral size in bytes for uart2 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART2_SIZE_BYTES = 32'h1000;
+
+  /**
+   * Peripheral base address for uart3 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART3_BASE_ADDR = 32'h40030000;
+
+  /**
+   * Peripheral size in bytes for uart3 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_UART3_SIZE_BYTES = 32'h1000;
 
   /**
    * Peripheral base address for gpio in top earlgrey.
@@ -314,7 +344,7 @@
   /**
    * Memory base address for ram_ret in top earlgrey.
    */
-  parameter int unsigned TOP_EARLGREY_RAM_RET_BASE_ADDR = 32'h18000000;
+  parameter int unsigned TOP_EARLGREY_RAM_RET_BASE_ADDR = 32'h40520000;
 
   /**
    * Memory size for ram_ret in top earlgrey.
@@ -342,8 +372,8 @@
     TopEarlgreyDioPinUsbdevDpPullup = 6,
     TopEarlgreyDioPinUsbdevSe0 = 7,
     TopEarlgreyDioPinUsbdevSense = 8,
-    TopEarlgreyDioPinUartTx = 9,
-    TopEarlgreyDioPinUartRx = 10,
+    TopEarlgreyDioPinUart0Tx = 9,
+    TopEarlgreyDioPinUart0Rx = 10,
     TopEarlgreyDioPinSpiDeviceSdo = 11,
     TopEarlgreyDioPinSpiDeviceSdi = 12,
     TopEarlgreyDioPinSpiDeviceCsb = 13,
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.c b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
index 2434364..6593e50 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.c
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
@@ -11,8 +11,40 @@
  * `top_earlgrey_plic_peripheral_t`.
  */
 const top_earlgrey_plic_peripheral_t
-    top_earlgrey_plic_interrupt_for_peripheral[99] = {
+    top_earlgrey_plic_interrupt_for_peripheral[123] = {
   [kTopEarlgreyPlicIrqIdNone] = kTopEarlgreyPlicPeripheralUnknown,
+  [kTopEarlgreyPlicIrqIdUart0TxWatermark] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxWatermark] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0TxEmpty] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxOverflow] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxFrameErr] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxBreakErr] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxTimeout] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart0RxParityErr] = kTopEarlgreyPlicPeripheralUart0,
+  [kTopEarlgreyPlicIrqIdUart1TxWatermark] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxWatermark] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1TxEmpty] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxOverflow] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxFrameErr] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxBreakErr] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxTimeout] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart1RxParityErr] = kTopEarlgreyPlicPeripheralUart1,
+  [kTopEarlgreyPlicIrqIdUart2TxWatermark] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxWatermark] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2TxEmpty] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxOverflow] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxFrameErr] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxBreakErr] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxTimeout] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart2RxParityErr] = kTopEarlgreyPlicPeripheralUart2,
+  [kTopEarlgreyPlicIrqIdUart3TxWatermark] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxWatermark] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3TxEmpty] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxOverflow] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxFrameErr] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxBreakErr] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxTimeout] = kTopEarlgreyPlicPeripheralUart3,
+  [kTopEarlgreyPlicIrqIdUart3RxParityErr] = kTopEarlgreyPlicPeripheralUart3,
   [kTopEarlgreyPlicIrqIdGpioGpio0] = kTopEarlgreyPlicPeripheralGpio,
   [kTopEarlgreyPlicIrqIdGpioGpio1] = kTopEarlgreyPlicPeripheralGpio,
   [kTopEarlgreyPlicIrqIdGpioGpio2] = kTopEarlgreyPlicPeripheralGpio,
@@ -45,14 +77,6 @@
   [kTopEarlgreyPlicIrqIdGpioGpio29] = kTopEarlgreyPlicPeripheralGpio,
   [kTopEarlgreyPlicIrqIdGpioGpio30] = kTopEarlgreyPlicPeripheralGpio,
   [kTopEarlgreyPlicIrqIdGpioGpio31] = kTopEarlgreyPlicPeripheralGpio,
-  [kTopEarlgreyPlicIrqIdUartTxWatermark] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxWatermark] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartTxEmpty] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxOverflow] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxFrameErr] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxBreakErr] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxTimeout] = kTopEarlgreyPlicPeripheralUart,
-  [kTopEarlgreyPlicIrqIdUartRxParityErr] = kTopEarlgreyPlicPeripheralUart,
   [kTopEarlgreyPlicIrqIdSpiDeviceRxf] = kTopEarlgreyPlicPeripheralSpiDevice,
   [kTopEarlgreyPlicIrqIdSpiDeviceRxlvl] = kTopEarlgreyPlicPeripheralSpiDevice,
   [kTopEarlgreyPlicIrqIdSpiDeviceTxlvl] = kTopEarlgreyPlicPeripheralSpiDevice,
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.h b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
index f2dd406..a8a05b2 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
@@ -26,22 +26,76 @@
 #endif
 
 /**
- * Peripheral base address for uart in top earlgrey.
+ * Peripheral base address for uart0 in top earlgrey.
  *
  * This should be used with #mmio_region_from_addr to access the memory-mapped
  * registers associated with the peripheral (usually via a DIF).
  */
-#define TOP_EARLGREY_UART_BASE_ADDR 0x40000000u
+#define TOP_EARLGREY_UART0_BASE_ADDR 0x40000000u
 
 /**
- * Peripheral size for uart in top earlgrey.
+ * Peripheral size for uart0 in top earlgrey.
  *
  * This is the size (in bytes) of the peripheral's reserved memory area. All
  * memory-mapped registers associated with this peripheral should have an
- * address between #TOP_EARLGREY_UART_BASE_ADDR and
- * `TOP_EARLGREY_UART_BASE_ADDR + TOP_EARLGREY_UART_SIZE_BYTES`.
+ * address between #TOP_EARLGREY_UART0_BASE_ADDR and
+ * `TOP_EARLGREY_UART0_BASE_ADDR + TOP_EARLGREY_UART0_SIZE_BYTES`.
  */
-#define TOP_EARLGREY_UART_SIZE_BYTES 0x1000u
+#define TOP_EARLGREY_UART0_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for uart1 in top earlgrey.
+ *
+ * This should be used with #mmio_region_from_addr to access the memory-mapped
+ * registers associated with the peripheral (usually via a DIF).
+ */
+#define TOP_EARLGREY_UART1_BASE_ADDR 0x40010000u
+
+/**
+ * Peripheral size for uart1 in top earlgrey.
+ *
+ * This is the size (in bytes) of the peripheral's reserved memory area. All
+ * memory-mapped registers associated with this peripheral should have an
+ * address between #TOP_EARLGREY_UART1_BASE_ADDR and
+ * `TOP_EARLGREY_UART1_BASE_ADDR + TOP_EARLGREY_UART1_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_UART1_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for uart2 in top earlgrey.
+ *
+ * This should be used with #mmio_region_from_addr to access the memory-mapped
+ * registers associated with the peripheral (usually via a DIF).
+ */
+#define TOP_EARLGREY_UART2_BASE_ADDR 0x40020000u
+
+/**
+ * Peripheral size for uart2 in top earlgrey.
+ *
+ * This is the size (in bytes) of the peripheral's reserved memory area. All
+ * memory-mapped registers associated with this peripheral should have an
+ * address between #TOP_EARLGREY_UART2_BASE_ADDR and
+ * `TOP_EARLGREY_UART2_BASE_ADDR + TOP_EARLGREY_UART2_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_UART2_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for uart3 in top earlgrey.
+ *
+ * This should be used with #mmio_region_from_addr to access the memory-mapped
+ * registers associated with the peripheral (usually via a DIF).
+ */
+#define TOP_EARLGREY_UART3_BASE_ADDR 0x40030000u
+
+/**
+ * Peripheral size for uart3 in top earlgrey.
+ *
+ * This is the size (in bytes) of the peripheral's reserved memory area. All
+ * memory-mapped registers associated with this peripheral should have an
+ * address between #TOP_EARLGREY_UART3_BASE_ADDR and
+ * `TOP_EARLGREY_UART3_BASE_ADDR + TOP_EARLGREY_UART3_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_UART3_SIZE_BYTES 0x1000u
 
 /**
  * Peripheral base address for gpio in top earlgrey.
@@ -553,7 +607,7 @@
 /**
  * Memory base address for ram_ret in top earlgrey.
  */
-#define TOP_EARLGREY_RAM_RET_BASE_ADDR 0x18000000u
+#define TOP_EARLGREY_RAM_RET_BASE_ADDR 0x40520000u
 
 /**
  * Memory size for ram_ret in top earlgrey.
@@ -579,24 +633,27 @@
  */
 typedef enum top_earlgrey_plic_peripheral {
   kTopEarlgreyPlicPeripheralUnknown = 0, /**< Unknown Peripheral */
-  kTopEarlgreyPlicPeripheralGpio = 1, /**< gpio */
-  kTopEarlgreyPlicPeripheralUart = 2, /**< uart */
-  kTopEarlgreyPlicPeripheralSpiDevice = 3, /**< spi_device */
-  kTopEarlgreyPlicPeripheralFlashCtrl = 4, /**< flash_ctrl */
-  kTopEarlgreyPlicPeripheralHmac = 5, /**< hmac */
-  kTopEarlgreyPlicPeripheralAlertHandler = 6, /**< alert_handler */
-  kTopEarlgreyPlicPeripheralNmiGen = 7, /**< nmi_gen */
-  kTopEarlgreyPlicPeripheralUsbdev = 8, /**< usbdev */
-  kTopEarlgreyPlicPeripheralPwrmgr = 9, /**< pwrmgr */
-  kTopEarlgreyPlicPeripheralOtbn = 10, /**< otbn */
-  kTopEarlgreyPlicPeripheralKeymgr = 11, /**< keymgr */
-  kTopEarlgreyPlicPeripheralKmac = 12, /**< kmac */
-  kTopEarlgreyPlicPeripheralOtpCtrl = 13, /**< otp_ctrl */
-  kTopEarlgreyPlicPeripheralCsrng = 14, /**< csrng */
-  kTopEarlgreyPlicPeripheralEdn0 = 15, /**< edn0 */
-  kTopEarlgreyPlicPeripheralEdn1 = 16, /**< edn1 */
-  kTopEarlgreyPlicPeripheralEntropySrc = 17, /**< entropy_src */
-  kTopEarlgreyPlicPeripheralLast = 17, /**< \internal Final PLIC peripheral */
+  kTopEarlgreyPlicPeripheralUart0 = 1, /**< uart0 */
+  kTopEarlgreyPlicPeripheralUart1 = 2, /**< uart1 */
+  kTopEarlgreyPlicPeripheralUart2 = 3, /**< uart2 */
+  kTopEarlgreyPlicPeripheralUart3 = 4, /**< uart3 */
+  kTopEarlgreyPlicPeripheralGpio = 5, /**< gpio */
+  kTopEarlgreyPlicPeripheralSpiDevice = 6, /**< spi_device */
+  kTopEarlgreyPlicPeripheralFlashCtrl = 7, /**< flash_ctrl */
+  kTopEarlgreyPlicPeripheralHmac = 8, /**< hmac */
+  kTopEarlgreyPlicPeripheralAlertHandler = 9, /**< alert_handler */
+  kTopEarlgreyPlicPeripheralNmiGen = 10, /**< nmi_gen */
+  kTopEarlgreyPlicPeripheralUsbdev = 11, /**< usbdev */
+  kTopEarlgreyPlicPeripheralPwrmgr = 12, /**< pwrmgr */
+  kTopEarlgreyPlicPeripheralOtbn = 13, /**< otbn */
+  kTopEarlgreyPlicPeripheralKeymgr = 14, /**< keymgr */
+  kTopEarlgreyPlicPeripheralKmac = 15, /**< kmac */
+  kTopEarlgreyPlicPeripheralOtpCtrl = 16, /**< otp_ctrl */
+  kTopEarlgreyPlicPeripheralCsrng = 17, /**< csrng */
+  kTopEarlgreyPlicPeripheralEdn0 = 18, /**< edn0 */
+  kTopEarlgreyPlicPeripheralEdn1 = 19, /**< edn1 */
+  kTopEarlgreyPlicPeripheralEntropySrc = 20, /**< entropy_src */
+  kTopEarlgreyPlicPeripheralLast = 20, /**< \internal Final PLIC peripheral */
 } top_earlgrey_plic_peripheral_t;
 
 /**
@@ -607,105 +664,129 @@
  */
 typedef enum top_earlgrey_plic_irq_id {
   kTopEarlgreyPlicIrqIdNone = 0, /**< No Interrupt */
-  kTopEarlgreyPlicIrqIdGpioGpio0 = 1, /**< gpio_gpio 0 */
-  kTopEarlgreyPlicIrqIdGpioGpio1 = 2, /**< gpio_gpio 1 */
-  kTopEarlgreyPlicIrqIdGpioGpio2 = 3, /**< gpio_gpio 2 */
-  kTopEarlgreyPlicIrqIdGpioGpio3 = 4, /**< gpio_gpio 3 */
-  kTopEarlgreyPlicIrqIdGpioGpio4 = 5, /**< gpio_gpio 4 */
-  kTopEarlgreyPlicIrqIdGpioGpio5 = 6, /**< gpio_gpio 5 */
-  kTopEarlgreyPlicIrqIdGpioGpio6 = 7, /**< gpio_gpio 6 */
-  kTopEarlgreyPlicIrqIdGpioGpio7 = 8, /**< gpio_gpio 7 */
-  kTopEarlgreyPlicIrqIdGpioGpio8 = 9, /**< gpio_gpio 8 */
-  kTopEarlgreyPlicIrqIdGpioGpio9 = 10, /**< gpio_gpio 9 */
-  kTopEarlgreyPlicIrqIdGpioGpio10 = 11, /**< gpio_gpio 10 */
-  kTopEarlgreyPlicIrqIdGpioGpio11 = 12, /**< gpio_gpio 11 */
-  kTopEarlgreyPlicIrqIdGpioGpio12 = 13, /**< gpio_gpio 12 */
-  kTopEarlgreyPlicIrqIdGpioGpio13 = 14, /**< gpio_gpio 13 */
-  kTopEarlgreyPlicIrqIdGpioGpio14 = 15, /**< gpio_gpio 14 */
-  kTopEarlgreyPlicIrqIdGpioGpio15 = 16, /**< gpio_gpio 15 */
-  kTopEarlgreyPlicIrqIdGpioGpio16 = 17, /**< gpio_gpio 16 */
-  kTopEarlgreyPlicIrqIdGpioGpio17 = 18, /**< gpio_gpio 17 */
-  kTopEarlgreyPlicIrqIdGpioGpio18 = 19, /**< gpio_gpio 18 */
-  kTopEarlgreyPlicIrqIdGpioGpio19 = 20, /**< gpio_gpio 19 */
-  kTopEarlgreyPlicIrqIdGpioGpio20 = 21, /**< gpio_gpio 20 */
-  kTopEarlgreyPlicIrqIdGpioGpio21 = 22, /**< gpio_gpio 21 */
-  kTopEarlgreyPlicIrqIdGpioGpio22 = 23, /**< gpio_gpio 22 */
-  kTopEarlgreyPlicIrqIdGpioGpio23 = 24, /**< gpio_gpio 23 */
-  kTopEarlgreyPlicIrqIdGpioGpio24 = 25, /**< gpio_gpio 24 */
-  kTopEarlgreyPlicIrqIdGpioGpio25 = 26, /**< gpio_gpio 25 */
-  kTopEarlgreyPlicIrqIdGpioGpio26 = 27, /**< gpio_gpio 26 */
-  kTopEarlgreyPlicIrqIdGpioGpio27 = 28, /**< gpio_gpio 27 */
-  kTopEarlgreyPlicIrqIdGpioGpio28 = 29, /**< gpio_gpio 28 */
-  kTopEarlgreyPlicIrqIdGpioGpio29 = 30, /**< gpio_gpio 29 */
-  kTopEarlgreyPlicIrqIdGpioGpio30 = 31, /**< gpio_gpio 30 */
-  kTopEarlgreyPlicIrqIdGpioGpio31 = 32, /**< gpio_gpio 31 */
-  kTopEarlgreyPlicIrqIdUartTxWatermark = 33, /**< uart_tx_watermark */
-  kTopEarlgreyPlicIrqIdUartRxWatermark = 34, /**< uart_rx_watermark */
-  kTopEarlgreyPlicIrqIdUartTxEmpty = 35, /**< uart_tx_empty */
-  kTopEarlgreyPlicIrqIdUartRxOverflow = 36, /**< uart_rx_overflow */
-  kTopEarlgreyPlicIrqIdUartRxFrameErr = 37, /**< uart_rx_frame_err */
-  kTopEarlgreyPlicIrqIdUartRxBreakErr = 38, /**< uart_rx_break_err */
-  kTopEarlgreyPlicIrqIdUartRxTimeout = 39, /**< uart_rx_timeout */
-  kTopEarlgreyPlicIrqIdUartRxParityErr = 40, /**< uart_rx_parity_err */
-  kTopEarlgreyPlicIrqIdSpiDeviceRxf = 41, /**< spi_device_rxf */
-  kTopEarlgreyPlicIrqIdSpiDeviceRxlvl = 42, /**< spi_device_rxlvl */
-  kTopEarlgreyPlicIrqIdSpiDeviceTxlvl = 43, /**< spi_device_txlvl */
-  kTopEarlgreyPlicIrqIdSpiDeviceRxerr = 44, /**< spi_device_rxerr */
-  kTopEarlgreyPlicIrqIdSpiDeviceRxoverflow = 45, /**< spi_device_rxoverflow */
-  kTopEarlgreyPlicIrqIdSpiDeviceTxunderflow = 46, /**< spi_device_txunderflow */
-  kTopEarlgreyPlicIrqIdFlashCtrlProgEmpty = 47, /**< flash_ctrl_prog_empty */
-  kTopEarlgreyPlicIrqIdFlashCtrlProgLvl = 48, /**< flash_ctrl_prog_lvl */
-  kTopEarlgreyPlicIrqIdFlashCtrlRdFull = 49, /**< flash_ctrl_rd_full */
-  kTopEarlgreyPlicIrqIdFlashCtrlRdLvl = 50, /**< flash_ctrl_rd_lvl */
-  kTopEarlgreyPlicIrqIdFlashCtrlOpDone = 51, /**< flash_ctrl_op_done */
-  kTopEarlgreyPlicIrqIdFlashCtrlOpError = 52, /**< flash_ctrl_op_error */
-  kTopEarlgreyPlicIrqIdHmacHmacDone = 53, /**< hmac_hmac_done */
-  kTopEarlgreyPlicIrqIdHmacFifoEmpty = 54, /**< hmac_fifo_empty */
-  kTopEarlgreyPlicIrqIdHmacHmacErr = 55, /**< hmac_hmac_err */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassa = 56, /**< alert_handler_classa */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassb = 57, /**< alert_handler_classb */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassc = 58, /**< alert_handler_classc */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassd = 59, /**< alert_handler_classd */
-  kTopEarlgreyPlicIrqIdNmiGenEsc0 = 60, /**< nmi_gen_esc0 */
-  kTopEarlgreyPlicIrqIdNmiGenEsc1 = 61, /**< nmi_gen_esc1 */
-  kTopEarlgreyPlicIrqIdNmiGenEsc2 = 62, /**< nmi_gen_esc2 */
-  kTopEarlgreyPlicIrqIdUsbdevPktReceived = 63, /**< usbdev_pkt_received */
-  kTopEarlgreyPlicIrqIdUsbdevPktSent = 64, /**< usbdev_pkt_sent */
-  kTopEarlgreyPlicIrqIdUsbdevDisconnected = 65, /**< usbdev_disconnected */
-  kTopEarlgreyPlicIrqIdUsbdevHostLost = 66, /**< usbdev_host_lost */
-  kTopEarlgreyPlicIrqIdUsbdevLinkReset = 67, /**< usbdev_link_reset */
-  kTopEarlgreyPlicIrqIdUsbdevLinkSuspend = 68, /**< usbdev_link_suspend */
-  kTopEarlgreyPlicIrqIdUsbdevLinkResume = 69, /**< usbdev_link_resume */
-  kTopEarlgreyPlicIrqIdUsbdevAvEmpty = 70, /**< usbdev_av_empty */
-  kTopEarlgreyPlicIrqIdUsbdevRxFull = 71, /**< usbdev_rx_full */
-  kTopEarlgreyPlicIrqIdUsbdevAvOverflow = 72, /**< usbdev_av_overflow */
-  kTopEarlgreyPlicIrqIdUsbdevLinkInErr = 73, /**< usbdev_link_in_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxCrcErr = 74, /**< usbdev_rx_crc_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxPidErr = 75, /**< usbdev_rx_pid_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxBitstuffErr = 76, /**< usbdev_rx_bitstuff_err */
-  kTopEarlgreyPlicIrqIdUsbdevFrame = 77, /**< usbdev_frame */
-  kTopEarlgreyPlicIrqIdUsbdevConnected = 78, /**< usbdev_connected */
-  kTopEarlgreyPlicIrqIdUsbdevLinkOutErr = 79, /**< usbdev_link_out_err */
-  kTopEarlgreyPlicIrqIdPwrmgrWakeup = 80, /**< pwrmgr_wakeup */
-  kTopEarlgreyPlicIrqIdOtbnDone = 81, /**< otbn_done */
-  kTopEarlgreyPlicIrqIdKeymgrOpDone = 82, /**< keymgr_op_done */
-  kTopEarlgreyPlicIrqIdKmacKmacDone = 83, /**< kmac_kmac_done */
-  kTopEarlgreyPlicIrqIdKmacFifoEmpty = 84, /**< kmac_fifo_empty */
-  kTopEarlgreyPlicIrqIdKmacKmacErr = 85, /**< kmac_kmac_err */
-  kTopEarlgreyPlicIrqIdOtpCtrlOtpOperationDone = 86, /**< otp_ctrl_otp_operation_done */
-  kTopEarlgreyPlicIrqIdOtpCtrlOtpError = 87, /**< otp_ctrl_otp_error */
-  kTopEarlgreyPlicIrqIdCsrngCsCmdReqDone = 88, /**< csrng_cs_cmd_req_done */
-  kTopEarlgreyPlicIrqIdCsrngCsEntropyReq = 89, /**< csrng_cs_entropy_req */
-  kTopEarlgreyPlicIrqIdCsrngCsHwInstExc = 90, /**< csrng_cs_hw_inst_exc */
-  kTopEarlgreyPlicIrqIdCsrngCsFifoErr = 91, /**< csrng_cs_fifo_err */
-  kTopEarlgreyPlicIrqIdEdn0EdnCmdReqDone = 92, /**< edn0_edn_cmd_req_done */
-  kTopEarlgreyPlicIrqIdEdn0EdnFifoErr = 93, /**< edn0_edn_fifo_err */
-  kTopEarlgreyPlicIrqIdEdn1EdnCmdReqDone = 94, /**< edn1_edn_cmd_req_done */
-  kTopEarlgreyPlicIrqIdEdn1EdnFifoErr = 95, /**< edn1_edn_fifo_err */
-  kTopEarlgreyPlicIrqIdEntropySrcEsEntropyValid = 96, /**< entropy_src_es_entropy_valid */
-  kTopEarlgreyPlicIrqIdEntropySrcEsHealthTestFailed = 97, /**< entropy_src_es_health_test_failed */
-  kTopEarlgreyPlicIrqIdEntropySrcEsFifoErr = 98, /**< entropy_src_es_fifo_err */
-  kTopEarlgreyPlicIrqIdLast = 98, /**< \internal The Last Valid Interrupt ID. */
+  kTopEarlgreyPlicIrqIdUart0TxWatermark = 1, /**< uart0_tx_watermark */
+  kTopEarlgreyPlicIrqIdUart0RxWatermark = 2, /**< uart0_rx_watermark */
+  kTopEarlgreyPlicIrqIdUart0TxEmpty = 3, /**< uart0_tx_empty */
+  kTopEarlgreyPlicIrqIdUart0RxOverflow = 4, /**< uart0_rx_overflow */
+  kTopEarlgreyPlicIrqIdUart0RxFrameErr = 5, /**< uart0_rx_frame_err */
+  kTopEarlgreyPlicIrqIdUart0RxBreakErr = 6, /**< uart0_rx_break_err */
+  kTopEarlgreyPlicIrqIdUart0RxTimeout = 7, /**< uart0_rx_timeout */
+  kTopEarlgreyPlicIrqIdUart0RxParityErr = 8, /**< uart0_rx_parity_err */
+  kTopEarlgreyPlicIrqIdUart1TxWatermark = 9, /**< uart1_tx_watermark */
+  kTopEarlgreyPlicIrqIdUart1RxWatermark = 10, /**< uart1_rx_watermark */
+  kTopEarlgreyPlicIrqIdUart1TxEmpty = 11, /**< uart1_tx_empty */
+  kTopEarlgreyPlicIrqIdUart1RxOverflow = 12, /**< uart1_rx_overflow */
+  kTopEarlgreyPlicIrqIdUart1RxFrameErr = 13, /**< uart1_rx_frame_err */
+  kTopEarlgreyPlicIrqIdUart1RxBreakErr = 14, /**< uart1_rx_break_err */
+  kTopEarlgreyPlicIrqIdUart1RxTimeout = 15, /**< uart1_rx_timeout */
+  kTopEarlgreyPlicIrqIdUart1RxParityErr = 16, /**< uart1_rx_parity_err */
+  kTopEarlgreyPlicIrqIdUart2TxWatermark = 17, /**< uart2_tx_watermark */
+  kTopEarlgreyPlicIrqIdUart2RxWatermark = 18, /**< uart2_rx_watermark */
+  kTopEarlgreyPlicIrqIdUart2TxEmpty = 19, /**< uart2_tx_empty */
+  kTopEarlgreyPlicIrqIdUart2RxOverflow = 20, /**< uart2_rx_overflow */
+  kTopEarlgreyPlicIrqIdUart2RxFrameErr = 21, /**< uart2_rx_frame_err */
+  kTopEarlgreyPlicIrqIdUart2RxBreakErr = 22, /**< uart2_rx_break_err */
+  kTopEarlgreyPlicIrqIdUart2RxTimeout = 23, /**< uart2_rx_timeout */
+  kTopEarlgreyPlicIrqIdUart2RxParityErr = 24, /**< uart2_rx_parity_err */
+  kTopEarlgreyPlicIrqIdUart3TxWatermark = 25, /**< uart3_tx_watermark */
+  kTopEarlgreyPlicIrqIdUart3RxWatermark = 26, /**< uart3_rx_watermark */
+  kTopEarlgreyPlicIrqIdUart3TxEmpty = 27, /**< uart3_tx_empty */
+  kTopEarlgreyPlicIrqIdUart3RxOverflow = 28, /**< uart3_rx_overflow */
+  kTopEarlgreyPlicIrqIdUart3RxFrameErr = 29, /**< uart3_rx_frame_err */
+  kTopEarlgreyPlicIrqIdUart3RxBreakErr = 30, /**< uart3_rx_break_err */
+  kTopEarlgreyPlicIrqIdUart3RxTimeout = 31, /**< uart3_rx_timeout */
+  kTopEarlgreyPlicIrqIdUart3RxParityErr = 32, /**< uart3_rx_parity_err */
+  kTopEarlgreyPlicIrqIdGpioGpio0 = 33, /**< gpio_gpio 0 */
+  kTopEarlgreyPlicIrqIdGpioGpio1 = 34, /**< gpio_gpio 1 */
+  kTopEarlgreyPlicIrqIdGpioGpio2 = 35, /**< gpio_gpio 2 */
+  kTopEarlgreyPlicIrqIdGpioGpio3 = 36, /**< gpio_gpio 3 */
+  kTopEarlgreyPlicIrqIdGpioGpio4 = 37, /**< gpio_gpio 4 */
+  kTopEarlgreyPlicIrqIdGpioGpio5 = 38, /**< gpio_gpio 5 */
+  kTopEarlgreyPlicIrqIdGpioGpio6 = 39, /**< gpio_gpio 6 */
+  kTopEarlgreyPlicIrqIdGpioGpio7 = 40, /**< gpio_gpio 7 */
+  kTopEarlgreyPlicIrqIdGpioGpio8 = 41, /**< gpio_gpio 8 */
+  kTopEarlgreyPlicIrqIdGpioGpio9 = 42, /**< gpio_gpio 9 */
+  kTopEarlgreyPlicIrqIdGpioGpio10 = 43, /**< gpio_gpio 10 */
+  kTopEarlgreyPlicIrqIdGpioGpio11 = 44, /**< gpio_gpio 11 */
+  kTopEarlgreyPlicIrqIdGpioGpio12 = 45, /**< gpio_gpio 12 */
+  kTopEarlgreyPlicIrqIdGpioGpio13 = 46, /**< gpio_gpio 13 */
+  kTopEarlgreyPlicIrqIdGpioGpio14 = 47, /**< gpio_gpio 14 */
+  kTopEarlgreyPlicIrqIdGpioGpio15 = 48, /**< gpio_gpio 15 */
+  kTopEarlgreyPlicIrqIdGpioGpio16 = 49, /**< gpio_gpio 16 */
+  kTopEarlgreyPlicIrqIdGpioGpio17 = 50, /**< gpio_gpio 17 */
+  kTopEarlgreyPlicIrqIdGpioGpio18 = 51, /**< gpio_gpio 18 */
+  kTopEarlgreyPlicIrqIdGpioGpio19 = 52, /**< gpio_gpio 19 */
+  kTopEarlgreyPlicIrqIdGpioGpio20 = 53, /**< gpio_gpio 20 */
+  kTopEarlgreyPlicIrqIdGpioGpio21 = 54, /**< gpio_gpio 21 */
+  kTopEarlgreyPlicIrqIdGpioGpio22 = 55, /**< gpio_gpio 22 */
+  kTopEarlgreyPlicIrqIdGpioGpio23 = 56, /**< gpio_gpio 23 */
+  kTopEarlgreyPlicIrqIdGpioGpio24 = 57, /**< gpio_gpio 24 */
+  kTopEarlgreyPlicIrqIdGpioGpio25 = 58, /**< gpio_gpio 25 */
+  kTopEarlgreyPlicIrqIdGpioGpio26 = 59, /**< gpio_gpio 26 */
+  kTopEarlgreyPlicIrqIdGpioGpio27 = 60, /**< gpio_gpio 27 */
+  kTopEarlgreyPlicIrqIdGpioGpio28 = 61, /**< gpio_gpio 28 */
+  kTopEarlgreyPlicIrqIdGpioGpio29 = 62, /**< gpio_gpio 29 */
+  kTopEarlgreyPlicIrqIdGpioGpio30 = 63, /**< gpio_gpio 30 */
+  kTopEarlgreyPlicIrqIdGpioGpio31 = 64, /**< gpio_gpio 31 */
+  kTopEarlgreyPlicIrqIdSpiDeviceRxf = 65, /**< spi_device_rxf */
+  kTopEarlgreyPlicIrqIdSpiDeviceRxlvl = 66, /**< spi_device_rxlvl */
+  kTopEarlgreyPlicIrqIdSpiDeviceTxlvl = 67, /**< spi_device_txlvl */
+  kTopEarlgreyPlicIrqIdSpiDeviceRxerr = 68, /**< spi_device_rxerr */
+  kTopEarlgreyPlicIrqIdSpiDeviceRxoverflow = 69, /**< spi_device_rxoverflow */
+  kTopEarlgreyPlicIrqIdSpiDeviceTxunderflow = 70, /**< spi_device_txunderflow */
+  kTopEarlgreyPlicIrqIdFlashCtrlProgEmpty = 71, /**< flash_ctrl_prog_empty */
+  kTopEarlgreyPlicIrqIdFlashCtrlProgLvl = 72, /**< flash_ctrl_prog_lvl */
+  kTopEarlgreyPlicIrqIdFlashCtrlRdFull = 73, /**< flash_ctrl_rd_full */
+  kTopEarlgreyPlicIrqIdFlashCtrlRdLvl = 74, /**< flash_ctrl_rd_lvl */
+  kTopEarlgreyPlicIrqIdFlashCtrlOpDone = 75, /**< flash_ctrl_op_done */
+  kTopEarlgreyPlicIrqIdFlashCtrlOpError = 76, /**< flash_ctrl_op_error */
+  kTopEarlgreyPlicIrqIdHmacHmacDone = 77, /**< hmac_hmac_done */
+  kTopEarlgreyPlicIrqIdHmacFifoEmpty = 78, /**< hmac_fifo_empty */
+  kTopEarlgreyPlicIrqIdHmacHmacErr = 79, /**< hmac_hmac_err */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassa = 80, /**< alert_handler_classa */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassb = 81, /**< alert_handler_classb */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassc = 82, /**< alert_handler_classc */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassd = 83, /**< alert_handler_classd */
+  kTopEarlgreyPlicIrqIdNmiGenEsc0 = 84, /**< nmi_gen_esc0 */
+  kTopEarlgreyPlicIrqIdNmiGenEsc1 = 85, /**< nmi_gen_esc1 */
+  kTopEarlgreyPlicIrqIdNmiGenEsc2 = 86, /**< nmi_gen_esc2 */
+  kTopEarlgreyPlicIrqIdUsbdevPktReceived = 87, /**< usbdev_pkt_received */
+  kTopEarlgreyPlicIrqIdUsbdevPktSent = 88, /**< usbdev_pkt_sent */
+  kTopEarlgreyPlicIrqIdUsbdevDisconnected = 89, /**< usbdev_disconnected */
+  kTopEarlgreyPlicIrqIdUsbdevHostLost = 90, /**< usbdev_host_lost */
+  kTopEarlgreyPlicIrqIdUsbdevLinkReset = 91, /**< usbdev_link_reset */
+  kTopEarlgreyPlicIrqIdUsbdevLinkSuspend = 92, /**< usbdev_link_suspend */
+  kTopEarlgreyPlicIrqIdUsbdevLinkResume = 93, /**< usbdev_link_resume */
+  kTopEarlgreyPlicIrqIdUsbdevAvEmpty = 94, /**< usbdev_av_empty */
+  kTopEarlgreyPlicIrqIdUsbdevRxFull = 95, /**< usbdev_rx_full */
+  kTopEarlgreyPlicIrqIdUsbdevAvOverflow = 96, /**< usbdev_av_overflow */
+  kTopEarlgreyPlicIrqIdUsbdevLinkInErr = 97, /**< usbdev_link_in_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxCrcErr = 98, /**< usbdev_rx_crc_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxPidErr = 99, /**< usbdev_rx_pid_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxBitstuffErr = 100, /**< usbdev_rx_bitstuff_err */
+  kTopEarlgreyPlicIrqIdUsbdevFrame = 101, /**< usbdev_frame */
+  kTopEarlgreyPlicIrqIdUsbdevConnected = 102, /**< usbdev_connected */
+  kTopEarlgreyPlicIrqIdUsbdevLinkOutErr = 103, /**< usbdev_link_out_err */
+  kTopEarlgreyPlicIrqIdPwrmgrWakeup = 104, /**< pwrmgr_wakeup */
+  kTopEarlgreyPlicIrqIdOtbnDone = 105, /**< otbn_done */
+  kTopEarlgreyPlicIrqIdKeymgrOpDone = 106, /**< keymgr_op_done */
+  kTopEarlgreyPlicIrqIdKmacKmacDone = 107, /**< kmac_kmac_done */
+  kTopEarlgreyPlicIrqIdKmacFifoEmpty = 108, /**< kmac_fifo_empty */
+  kTopEarlgreyPlicIrqIdKmacKmacErr = 109, /**< kmac_kmac_err */
+  kTopEarlgreyPlicIrqIdOtpCtrlOtpOperationDone = 110, /**< otp_ctrl_otp_operation_done */
+  kTopEarlgreyPlicIrqIdOtpCtrlOtpError = 111, /**< otp_ctrl_otp_error */
+  kTopEarlgreyPlicIrqIdCsrngCsCmdReqDone = 112, /**< csrng_cs_cmd_req_done */
+  kTopEarlgreyPlicIrqIdCsrngCsEntropyReq = 113, /**< csrng_cs_entropy_req */
+  kTopEarlgreyPlicIrqIdCsrngCsHwInstExc = 114, /**< csrng_cs_hw_inst_exc */
+  kTopEarlgreyPlicIrqIdCsrngCsFifoErr = 115, /**< csrng_cs_fifo_err */
+  kTopEarlgreyPlicIrqIdEdn0EdnCmdReqDone = 116, /**< edn0_edn_cmd_req_done */
+  kTopEarlgreyPlicIrqIdEdn0EdnFifoErr = 117, /**< edn0_edn_fifo_err */
+  kTopEarlgreyPlicIrqIdEdn1EdnCmdReqDone = 118, /**< edn1_edn_cmd_req_done */
+  kTopEarlgreyPlicIrqIdEdn1EdnFifoErr = 119, /**< edn1_edn_fifo_err */
+  kTopEarlgreyPlicIrqIdEntropySrcEsEntropyValid = 120, /**< entropy_src_es_entropy_valid */
+  kTopEarlgreyPlicIrqIdEntropySrcEsHealthTestFailed = 121, /**< entropy_src_es_health_test_failed */
+  kTopEarlgreyPlicIrqIdEntropySrcEsFifoErr = 122, /**< entropy_src_es_fifo_err */
+  kTopEarlgreyPlicIrqIdLast = 122, /**< \internal The Last Valid Interrupt ID. */
 } top_earlgrey_plic_irq_id_t;
 
 /**
@@ -715,7 +796,7 @@
  * `top_earlgrey_plic_peripheral_t`.
  */
 extern const top_earlgrey_plic_peripheral_t
-    top_earlgrey_plic_interrupt_for_peripheral[99];
+    top_earlgrey_plic_interrupt_for_peripheral[123];
 
 /**
  * PLIC Interrupt Target.
@@ -831,7 +912,10 @@
   kTopEarlgreyPinmuxPeripheralInGpioGpio29 = 29, /**< gpio_gpio 29 */
   kTopEarlgreyPinmuxPeripheralInGpioGpio30 = 30, /**< gpio_gpio 30 */
   kTopEarlgreyPinmuxPeripheralInGpioGpio31 = 31, /**< gpio_gpio 31 */
-  kTopEarlgreyPinmuxPeripheralInLast = 31, /**< \internal Last valid peripheral input */
+  kTopEarlgreyPinmuxPeripheralInUart1Rx = 32, /**< uart1_rx */
+  kTopEarlgreyPinmuxPeripheralInUart2Rx = 33, /**< uart2_rx */
+  kTopEarlgreyPinmuxPeripheralInUart3Rx = 34, /**< uart3_rx */
+  kTopEarlgreyPinmuxPeripheralInLast = 34, /**< \internal Last valid peripheral input */
 } top_earlgrey_pinmux_peripheral_in_t;
 
 /**
@@ -953,7 +1037,10 @@
   kTopEarlgreyPinmuxOutselGpioGpio29 = 32, /**< gpio_gpio 29 */
   kTopEarlgreyPinmuxOutselGpioGpio30 = 33, /**< gpio_gpio 30 */
   kTopEarlgreyPinmuxOutselGpioGpio31 = 34, /**< gpio_gpio 31 */
-  kTopEarlgreyPinmuxOutselLast = 34, /**< \internal Last valid outsel value */
+  kTopEarlgreyPinmuxOutselUart1Tx = 35, /**< uart1_tx */
+  kTopEarlgreyPinmuxOutselUart2Tx = 36, /**< uart2_tx */
+  kTopEarlgreyPinmuxOutselUart3Tx = 37, /**< uart3_tx */
+  kTopEarlgreyPinmuxOutselLast = 37, /**< \internal Last valid outsel value */
 } top_earlgrey_pinmux_outsel_t;
 
 /**
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
index 6442f53..cc37e7e 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
@@ -43,7 +43,7 @@
 /**
  * Memory base address for ram_ret in top earlgrey.
  */
-#define TOP_EARLGREY_RAM_RET_BASE_ADDR 0x18000000
+#define TOP_EARLGREY_RAM_RET_BASE_ADDR 0x40520000
 
 /**
  * Memory size for ram_ret in top earlgrey.
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.ld b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.ld
index 96770c7..f19a4ac 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.ld
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.ld
@@ -8,6 +8,6 @@
 MEMORY {
   rom(rx) : ORIGIN = 0x00008000, LENGTH = 0x4000
   ram_main(rw) : ORIGIN = 0x10000000, LENGTH = 0x20000
-  ram_ret(rw) : ORIGIN = 0x18000000, LENGTH = 0x1000
+  ram_ret(rw) : ORIGIN = 0x40520000, LENGTH = 0x1000
   eflash(rx) : ORIGIN = 0x20000000, LENGTH = 0x100000
 }