[top] Move spi_host* in memory map

- Fixes #8748
- This reduces the amount of asynchronous latency when accessing
  the spi_host modules.
- Note, ideally there should be another xbar that is "hi_speed" xbar,
  but that is overkill for only 2 peripherals.  Just tack it onto the
  main xbar.

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 20c075f..7618c45 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -157,9 +157,9 @@
         {
           clk_io_div4_peri: io_div4
           clk_io_div2_peri: io_div2
-          clk_io_peri: io
           clk_aon_peri: aon
           clk_usb_peri: usb
+          clk_io_peri: io
         }
       }
       {
@@ -825,122 +825,6 @@
       }
     }
     {
-      name: spi_host0
-      type: spi_host
-      clock_srcs:
-      {
-        clk_i: io
-      }
-      clock_group: peri
-      reset_connections:
-      {
-        rst_ni:
-        {
-          name: spi_host0
-          domain: "0"
-        }
-      }
-      clock_connections:
-      {
-        clk_i: clkmgr_aon_clocks.clk_io_peri
-      }
-      domain:
-      [
-        "0"
-      ]
-      param_decl: {}
-      param_list: []
-      inter_signal_list:
-      [
-        {
-          name: passthrough
-          struct: passthrough
-          package: spi_device_pkg
-          type: req_rsp
-          act: rsp
-          width: 1
-          inst_name: spi_host0
-          default: ""
-          top_signame: spi_device_passthrough
-          index: -1
-        }
-        {
-          name: tl
-          struct: tl
-          package: tlul_pkg
-          type: req_rsp
-          act: rsp
-          width: 1
-          inst_name: spi_host0
-          default: ""
-          end_idx: -1
-          top_signame: spi_host0_tl
-          index: -1
-        }
-      ]
-      base_addrs:
-      {
-        null: 0x40060000
-      }
-    }
-    {
-      name: spi_host1
-      type: spi_host
-      clock_srcs:
-      {
-        clk_i: io_div2
-      }
-      clock_group: peri
-      reset_connections:
-      {
-        rst_ni:
-        {
-          name: spi_host1
-          domain: "0"
-        }
-      }
-      clock_connections:
-      {
-        clk_i: clkmgr_aon_clocks.clk_io_div2_peri
-      }
-      domain:
-      [
-        "0"
-      ]
-      param_decl: {}
-      param_list: []
-      inter_signal_list:
-      [
-        {
-          name: passthrough
-          struct: passthrough
-          package: spi_device_pkg
-          type: req_rsp
-          act: rsp
-          width: 1
-          inst_name: spi_host1
-          index: -1
-        }
-        {
-          name: tl
-          struct: tl
-          package: tlul_pkg
-          type: req_rsp
-          act: rsp
-          width: 1
-          inst_name: spi_host1
-          default: ""
-          end_idx: -1
-          top_signame: spi_host1_tl
-          index: -1
-        }
-      ]
-      base_addrs:
-      {
-        null: 0x40070000
-      }
-    }
-    {
       name: i2c0
       type: i2c
       clock_srcs:
@@ -2292,6 +2176,122 @@
       }
     }
     {
+      name: spi_host0
+      type: spi_host
+      clock_srcs:
+      {
+        clk_i: io
+      }
+      clock_group: peri
+      reset_connections:
+      {
+        rst_ni:
+        {
+          name: spi_host0
+          domain: "0"
+        }
+      }
+      clock_connections:
+      {
+        clk_i: clkmgr_aon_clocks.clk_io_peri
+      }
+      domain:
+      [
+        "0"
+      ]
+      param_decl: {}
+      param_list: []
+      inter_signal_list:
+      [
+        {
+          name: passthrough
+          struct: passthrough
+          package: spi_device_pkg
+          type: req_rsp
+          act: rsp
+          width: 1
+          inst_name: spi_host0
+          default: ""
+          top_signame: spi_device_passthrough
+          index: -1
+        }
+        {
+          name: tl
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: rsp
+          width: 1
+          inst_name: spi_host0
+          default: ""
+          end_idx: -1
+          top_signame: spi_host0_tl
+          index: -1
+        }
+      ]
+      base_addrs:
+      {
+        null: 0x40300000
+      }
+    }
+    {
+      name: spi_host1
+      type: spi_host
+      clock_srcs:
+      {
+        clk_i: io_div2
+      }
+      clock_group: peri
+      reset_connections:
+      {
+        rst_ni:
+        {
+          name: spi_host1
+          domain: "0"
+        }
+      }
+      clock_connections:
+      {
+        clk_i: clkmgr_aon_clocks.clk_io_div2_peri
+      }
+      domain:
+      [
+        "0"
+      ]
+      param_decl: {}
+      param_list: []
+      inter_signal_list:
+      [
+        {
+          name: passthrough
+          struct: passthrough
+          package: spi_device_pkg
+          type: req_rsp
+          act: rsp
+          width: 1
+          inst_name: spi_host1
+          index: -1
+        }
+        {
+          name: tl
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: rsp
+          width: 1
+          inst_name: spi_host1
+          default: ""
+          end_idx: -1
+          top_signame: spi_host1_tl
+          index: -1
+        }
+      ]
+      base_addrs:
+      {
+        null: 0x40310000
+      }
+    }
+    {
       name: pwrmgr_aon
       type: pwrmgr
       clock_group: powerup
@@ -7359,6 +7359,14 @@
       [
         peri.tl_main
       ]
+      spi_host0.tl:
+      [
+        main.tl_spi_host0
+      ]
+      spi_host1.tl:
+      [
+        main.tl_spi_host1
+      ]
       flash_ctrl.core_tl:
       [
         main.tl_flash_ctrl__core
@@ -7467,14 +7475,6 @@
       [
         peri.tl_spi_device
       ]
-      spi_host0.tl:
-      [
-        peri.tl_spi_host0
-      ]
-      spi_host1.tl:
-      [
-        peri.tl_spi_host1
-      ]
       rv_timer.tl:
       [
         peri.tl_rv_timer
@@ -7607,6 +7607,8 @@
       {
         clk_main_i: main
         clk_fixed_i: io_div4
+        clk_spi_host0_i: io
+        clk_spi_host1_i: io_div2
       }
       clock_group: infra
       reset: rst_main_ni
@@ -7622,11 +7624,23 @@
           name: sys_io_div4
           domain: "0"
         }
+        rst_spi_host0_ni:
+        {
+          name: spi_host0
+          domain: "0"
+        }
+        rst_spi_host1_ni:
+        {
+          name: spi_host1
+          domain: "0"
+        }
       }
       clock_connections:
       {
         clk_main_i: clkmgr_aon_clocks.clk_main_infra
         clk_fixed_i: clkmgr_aon_clocks.clk_io_div4_infra
+        clk_spi_host0_i: clkmgr_aon_clocks.clk_io_infra
+        clk_spi_host1_i: clkmgr_aon_clocks.clk_io_div2_infra
       }
       domain:
       [
@@ -7649,6 +7663,8 @@
           rv_dm.regs
           sram_ctrl_main.ram
           peri
+          spi_host0
+          spi_host1
           flash_ctrl.core
           flash_ctrl.prim
           flash_ctrl.mem
@@ -7809,11 +7825,51 @@
           [
             {
               base_addr: 0x40000000
-              size_byte: 0x800000
+              size_byte: 0x200000
+            }
+            {
+              base_addr: 0x40400000
+              size_byte: 0x400000
             }
           ]
         }
         {
+          name: spi_host0
+          type: device
+          clock: clk_spi_host0_i
+          reset: rst_spi_host0_ni
+          pipeline: "false"
+          inst_type: spi_host
+          addr_range:
+          [
+            {
+              base_addr: 0x40300000
+              size_byte: 0x1000
+            }
+          ]
+          xbar: false
+          stub: false
+          pipeline_byp: "true"
+        }
+        {
+          name: spi_host1
+          type: device
+          clock: clk_spi_host1_i
+          reset: rst_spi_host1_ni
+          pipeline: "false"
+          inst_type: spi_host
+          addr_range:
+          [
+            {
+              base_addr: 0x40310000
+              size_byte: 0x1000
+            }
+          ]
+          xbar: false
+          stub: false
+          pipeline_byp: "true"
+        }
+        {
           name: flash_ctrl.core
           type: device
           clock: clk_main_i
@@ -8207,6 +8263,30 @@
           index: -1
         }
         {
+          name: tl_spi_host0
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: req
+          width: 1
+          inst_name: main
+          default: ""
+          top_signame: spi_host0_tl
+          index: -1
+        }
+        {
+          name: tl_spi_host1
+          struct: tl
+          package: tlul_pkg
+          type: req_rsp
+          act: req
+          width: 1
+          inst_name: main
+          default: ""
+          top_signame: spi_host1_tl
+          index: -1
+        }
+        {
           name: tl_flash_ctrl__core
           struct: tl
           package: tlul_pkg
@@ -8405,8 +8485,6 @@
       clock_srcs:
       {
         clk_peri_i: io_div4
-        clk_spi_host0_i: io
-        clk_spi_host1_i: io_div2
       }
       clock_group: infra
       reset: rst_peri_ni
@@ -8417,22 +8495,10 @@
           name: sys_io_div4
           domain: "0"
         }
-        rst_spi_host0_ni:
-        {
-          name: spi_host0
-          domain: "0"
-        }
-        rst_spi_host1_ni:
-        {
-          name: spi_host1
-          domain: "0"
-        }
       }
       clock_connections:
       {
         clk_peri_i: clkmgr_aon_clocks.clk_io_div4_infra
-        clk_spi_host0_i: clkmgr_aon_clocks.clk_io_infra
-        clk_spi_host1_i: clkmgr_aon_clocks.clk_io_div2_infra
       }
       domain:
       [
@@ -8452,8 +8518,6 @@
           pattgen
           gpio
           spi_device
-          spi_host0
-          spi_host1
           rv_timer
           usbdev
           pwrmgr_aon
@@ -8686,42 +8750,6 @@
           pipeline_byp: "true"
         }
         {
-          name: spi_host0
-          type: device
-          clock: clk_spi_host0_i
-          reset: rst_spi_host0_ni
-          pipeline: "false"
-          inst_type: spi_host
-          addr_range:
-          [
-            {
-              base_addr: 0x40060000
-              size_byte: 0x1000
-            }
-          ]
-          xbar: false
-          stub: false
-          pipeline_byp: "true"
-        }
-        {
-          name: spi_host1
-          type: device
-          clock: clk_spi_host1_i
-          reset: rst_spi_host1_ni
-          pipeline: "false"
-          inst_type: spi_host
-          addr_range:
-          [
-            {
-              base_addr: 0x40070000
-              size_byte: 0x1000
-            }
-          ]
-          xbar: false
-          stub: false
-          pipeline_byp: "true"
-        }
-        {
           name: rv_timer
           type: device
           clock: clk_peri_i
@@ -9177,30 +9205,6 @@
           index: -1
         }
         {
-          name: tl_spi_host0
-          struct: tl
-          package: tlul_pkg
-          type: req_rsp
-          act: req
-          width: 1
-          inst_name: peri
-          default: ""
-          top_signame: spi_host0_tl
-          index: -1
-        }
-        {
-          name: tl_spi_host1
-          struct: tl
-          package: tlul_pkg
-          type: req_rsp
-          act: req
-          width: 1
-          inst_name: peri
-          default: ""
-          top_signame: spi_host1_tl
-          index: -1
-        }
-        {
           name: tl_rv_timer
           struct: tl
           package: tlul_pkg
@@ -12218,8 +12222,6 @@
     uart3
     gpio
     spi_device
-    spi_host0
-    spi_host1
     i2c0
     i2c1
     i2c2
@@ -12228,6 +12230,8 @@
     usbdev
     otp_ctrl
     alert_handler
+    spi_host0
+    spi_host1
     pwrmgr_aon
     sysrst_ctrl_aon
     adc_ctrl_aon
@@ -12485,30 +12489,6 @@
       module_name: spi_device
     }
     {
-      name: spi_host0_error
-      width: 1
-      type: interrupt
-      module_name: spi_host0
-    }
-    {
-      name: spi_host0_spi_event
-      width: 1
-      type: interrupt
-      module_name: spi_host0
-    }
-    {
-      name: spi_host1_error
-      width: 1
-      type: interrupt
-      module_name: spi_host1
-    }
-    {
-      name: spi_host1_spi_event
-      width: 1
-      type: interrupt
-      module_name: spi_host1
-    }
-    {
       name: i2c0_fmt_watermark
       width: 1
       type: interrupt
@@ -12953,6 +12933,30 @@
       module_name: alert_handler
     }
     {
+      name: spi_host0_error
+      width: 1
+      type: interrupt
+      module_name: spi_host0
+    }
+    {
+      name: spi_host0_spi_event
+      width: 1
+      type: interrupt
+      module_name: spi_host0
+    }
+    {
+      name: spi_host1_error
+      width: 1
+      type: interrupt
+      module_name: spi_host1
+    }
+    {
+      name: spi_host1_spi_event
+      width: 1
+      type: interrupt
+      module_name: spi_host1
+    }
+    {
       name: pwrmgr_aon_wakeup
       width: 1
       type: interrupt
@@ -13147,8 +13151,6 @@
     uart3
     gpio
     spi_device
-    spi_host0
-    spi_host1
     i2c0
     i2c1
     i2c2
@@ -13157,6 +13159,8 @@
     usbdev
     otp_ctrl
     lc_ctrl
+    spi_host0
+    spi_host1
     pwrmgr_aon
     rstmgr_aon
     clkmgr_aon
@@ -13240,31 +13244,13 @@
       lpg_idx: 1
     }
     {
-      name: spi_host0_fatal_fault
-      width: 1
-      type: alert
-      async: "1"
-      module_name: spi_host0
-      lpg_name: peri_spi_host0_0
-      lpg_idx: 2
-    }
-    {
-      name: spi_host1_fatal_fault
-      width: 1
-      type: alert
-      async: "1"
-      module_name: spi_host1
-      lpg_name: peri_spi_host1_0
-      lpg_idx: 3
-    }
-    {
       name: i2c0_fatal_fault
       width: 1
       type: alert
       async: "1"
       module_name: i2c0
       lpg_name: peri_i2c0_0
-      lpg_idx: 4
+      lpg_idx: 2
     }
     {
       name: i2c1_fatal_fault
@@ -13273,7 +13259,7 @@
       async: "1"
       module_name: i2c1
       lpg_name: peri_i2c1_0
-      lpg_idx: 5
+      lpg_idx: 3
     }
     {
       name: i2c2_fatal_fault
@@ -13282,7 +13268,7 @@
       async: "1"
       module_name: i2c2
       lpg_name: peri_i2c2_0
-      lpg_idx: 6
+      lpg_idx: 4
     }
     {
       name: pattgen_fatal_fault
@@ -13300,7 +13286,7 @@
       async: "1"
       module_name: rv_timer
       lpg_name: timers_sys_io_div4_0
-      lpg_idx: 7
+      lpg_idx: 5
     }
     {
       name: usbdev_fatal_fault
@@ -13309,7 +13295,7 @@
       async: "1"
       module_name: usbdev
       lpg_name: peri_usb_0
-      lpg_idx: 8
+      lpg_idx: 6
     }
     {
       name: otp_ctrl_fatal_macro_error
@@ -13318,7 +13304,7 @@
       async: "1"
       module_name: otp_ctrl
       lpg_name: secure_lc_io_div4_0
-      lpg_idx: 9
+      lpg_idx: 7
     }
     {
       name: otp_ctrl_fatal_check_error
@@ -13327,7 +13313,7 @@
       async: "1"
       module_name: otp_ctrl
       lpg_name: secure_lc_io_div4_0
-      lpg_idx: 9
+      lpg_idx: 7
     }
     {
       name: otp_ctrl_fatal_bus_integ_error
@@ -13336,7 +13322,7 @@
       async: "1"
       module_name: otp_ctrl
       lpg_name: secure_lc_io_div4_0
-      lpg_idx: 9
+      lpg_idx: 7
     }
     {
       name: lc_ctrl_fatal_prog_error
@@ -13345,7 +13331,7 @@
       async: "1"
       module_name: lc_ctrl
       lpg_name: secure_lc_io_div4_0
-      lpg_idx: 9
+      lpg_idx: 7
     }
     {
       name: lc_ctrl_fatal_state_error
@@ -13354,7 +13340,7 @@
       async: "1"
       module_name: lc_ctrl
       lpg_name: secure_lc_io_div4_0
-      lpg_idx: 9
+      lpg_idx: 7
     }
     {
       name: lc_ctrl_fatal_bus_integ_error
@@ -13363,6 +13349,24 @@
       async: "1"
       module_name: lc_ctrl
       lpg_name: secure_lc_io_div4_0
+      lpg_idx: 7
+    }
+    {
+      name: spi_host0_fatal_fault
+      width: 1
+      type: alert
+      async: "1"
+      module_name: spi_host0
+      lpg_name: peri_spi_host0_0
+      lpg_idx: 8
+    }
+    {
+      name: spi_host1_fatal_fault
+      width: 1
+      type: alert
+      async: "1"
+      module_name: spi_host1
+      lpg_name: peri_spi_host1_0
       lpg_idx: 9
     }
     {
@@ -13732,26 +13736,6 @@
       }
     }
     {
-      name: peri_spi_host0_0
-      clock_group: peri
-      clock_connection: clkmgr_aon_clocks.clk_io_peri
-      reset_connection:
-      {
-        name: spi_host0
-        domain: "0"
-      }
-    }
-    {
-      name: peri_spi_host1_0
-      clock_group: peri
-      clock_connection: clkmgr_aon_clocks.clk_io_div2_peri
-      reset_connection:
-      {
-        name: spi_host1
-        domain: "0"
-      }
-    }
-    {
       name: peri_i2c0_0
       clock_group: peri
       clock_connection: clkmgr_aon_clocks.clk_io_div4_peri
@@ -13812,6 +13796,26 @@
       }
     }
     {
+      name: peri_spi_host0_0
+      clock_group: peri
+      clock_connection: clkmgr_aon_clocks.clk_io_peri
+      reset_connection:
+      {
+        name: spi_host0
+        domain: "0"
+      }
+    }
+    {
+      name: peri_spi_host1_0
+      clock_group: peri
+      clock_connection: clkmgr_aon_clocks.clk_io_div2_peri
+      reset_connection:
+      {
+        name: spi_host1
+        domain: "0"
+      }
+    }
+    {
       name: powerup_por_io_div4_Aon
       clock_group: powerup
       clock_connection: clkmgr_aon_clocks.clk_io_div4_powerup
@@ -14042,54 +14046,6 @@
         index: -1
       }
       {
-        name: passthrough
-        struct: passthrough
-        package: spi_device_pkg
-        type: req_rsp
-        act: rsp
-        width: 1
-        inst_name: spi_host0
-        default: ""
-        top_signame: spi_device_passthrough
-        index: -1
-      }
-      {
-        name: tl
-        struct: tl
-        package: tlul_pkg
-        type: req_rsp
-        act: rsp
-        width: 1
-        inst_name: spi_host0
-        default: ""
-        end_idx: -1
-        top_signame: spi_host0_tl
-        index: -1
-      }
-      {
-        name: passthrough
-        struct: passthrough
-        package: spi_device_pkg
-        type: req_rsp
-        act: rsp
-        width: 1
-        inst_name: spi_host1
-        index: -1
-      }
-      {
-        name: tl
-        struct: tl
-        package: tlul_pkg
-        type: req_rsp
-        act: rsp
-        width: 1
-        inst_name: spi_host1
-        default: ""
-        end_idx: -1
-        top_signame: spi_host1_tl
-        index: -1
-      }
-      {
         name: tl
         struct: tl
         package: tlul_pkg
@@ -15011,6 +14967,54 @@
         index: -1
       }
       {
+        name: passthrough
+        struct: passthrough
+        package: spi_device_pkg
+        type: req_rsp
+        act: rsp
+        width: 1
+        inst_name: spi_host0
+        default: ""
+        top_signame: spi_device_passthrough
+        index: -1
+      }
+      {
+        name: tl
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: rsp
+        width: 1
+        inst_name: spi_host0
+        default: ""
+        end_idx: -1
+        top_signame: spi_host0_tl
+        index: -1
+      }
+      {
+        name: passthrough
+        struct: passthrough
+        package: spi_device_pkg
+        type: req_rsp
+        act: rsp
+        width: 1
+        inst_name: spi_host1
+        index: -1
+      }
+      {
+        name: tl
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: rsp
+        width: 1
+        inst_name: spi_host1
+        default: ""
+        end_idx: -1
+        top_signame: spi_host1_tl
+        index: -1
+      }
+      {
         name: pwr_ast
         struct: pwr_ast
         package: pwrmgr_pkg
@@ -17697,6 +17701,30 @@
         index: -1
       }
       {
+        name: tl_spi_host0
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: req
+        width: 1
+        inst_name: main
+        default: ""
+        top_signame: spi_host0_tl
+        index: -1
+      }
+      {
+        name: tl_spi_host1
+        struct: tl
+        package: tlul_pkg
+        type: req_rsp
+        act: req
+        width: 1
+        inst_name: main
+        default: ""
+        top_signame: spi_host1_tl
+        index: -1
+      }
+      {
         name: tl_flash_ctrl__core
         struct: tl
         package: tlul_pkg
@@ -18033,30 +18061,6 @@
         index: -1
       }
       {
-        name: tl_spi_host0
-        struct: tl
-        package: tlul_pkg
-        type: req_rsp
-        act: req
-        width: 1
-        inst_name: peri
-        default: ""
-        top_signame: spi_host0_tl
-        index: -1
-      }
-      {
-        name: tl_spi_host1
-        struct: tl
-        package: tlul_pkg
-        type: req_rsp
-        act: req
-        width: 1
-        inst_name: peri
-        default: ""
-        top_signame: spi_host1_tl
-        index: -1
-      }
-      {
         name: tl_rv_timer
         struct: tl
         package: tlul_pkg
@@ -20000,6 +20004,50 @@
       {
         package: tlul_pkg
         struct: tl_h2d
+        signame: spi_host0_tl_req
+        width: 1
+        type: req_rsp
+        end_idx: -1
+        act: rsp
+        suffix: req
+        default: tlul_pkg::TL_H2D_DEFAULT
+      }
+      {
+        package: tlul_pkg
+        struct: tl_d2h
+        signame: spi_host0_tl_rsp
+        width: 1
+        type: req_rsp
+        end_idx: -1
+        act: rsp
+        suffix: rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_h2d
+        signame: spi_host1_tl_req
+        width: 1
+        type: req_rsp
+        end_idx: -1
+        act: rsp
+        suffix: req
+        default: tlul_pkg::TL_H2D_DEFAULT
+      }
+      {
+        package: tlul_pkg
+        struct: tl_d2h
+        signame: spi_host1_tl_rsp
+        width: 1
+        type: req_rsp
+        end_idx: -1
+        act: rsp
+        suffix: rsp
+        default: ""
+      }
+      {
+        package: tlul_pkg
+        struct: tl_h2d
         signame: flash_ctrl_core_tl_req
         width: 1
         type: req_rsp
@@ -20594,50 +20642,6 @@
       {
         package: tlul_pkg
         struct: tl_h2d
-        signame: spi_host0_tl_req
-        width: 1
-        type: req_rsp
-        end_idx: -1
-        act: rsp
-        suffix: req
-        default: tlul_pkg::TL_H2D_DEFAULT
-      }
-      {
-        package: tlul_pkg
-        struct: tl_d2h
-        signame: spi_host0_tl_rsp
-        width: 1
-        type: req_rsp
-        end_idx: -1
-        act: rsp
-        suffix: rsp
-        default: ""
-      }
-      {
-        package: tlul_pkg
-        struct: tl_h2d
-        signame: spi_host1_tl_req
-        width: 1
-        type: req_rsp
-        end_idx: -1
-        act: rsp
-        suffix: req
-        default: tlul_pkg::TL_H2D_DEFAULT
-      }
-      {
-        package: tlul_pkg
-        struct: tl_d2h
-        signame: spi_host1_tl_rsp
-        width: 1
-        type: req_rsp
-        end_idx: -1
-        act: rsp
-        suffix: rsp
-        default: ""
-      }
-      {
-        package: tlul_pkg
-        struct: tl_h2d
         signame: rv_timer_tl_req
         width: 1
         type: req_rsp
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index b903b45..b10e836 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -249,20 +249,6 @@
       reset_connections: {rst_ni: "spi_device"},
       base_addr: "0x40050000",
     },
-    { name: "spi_host0",
-      type: "spi_host",
-      clock_srcs: {clk_i: "io"},
-      clock_group: "peri",
-      reset_connections: {rst_ni: "spi_host0"},
-      base_addr: "0x40060000",
-    },
-    { name: "spi_host1",
-      type: "spi_host",
-      clock_srcs: {clk_i: "io_div2"},
-      clock_group: "peri",
-      reset_connections: {rst_ni: "spi_host1"},
-      base_addr: "0x40070000",
-    },
     { name: "i2c0",
       type: "i2c",
       clock_srcs: {clk_i: "io_div4"},
@@ -327,6 +313,20 @@
       base_addr: "0x40150000",
       attr: "templated",
     },
+    { name: "spi_host0",
+      type: "spi_host",
+      clock_srcs: {clk_i: "io"},
+      clock_group: "peri",
+      reset_connections: {rst_ni: "spi_host0"},
+      base_addr: "0x40300000",
+    },
+    { name: "spi_host1",
+      type: "spi_host",
+      clock_srcs: {clk_i: "io_div2"},
+      clock_group: "peri",
+      reset_connections: {rst_ni: "spi_host1"},
+      base_addr: "0x40310000",
+    },
     { name: "pwrmgr_aon",
       type: "pwrmgr",
       clock_group: "powerup",
@@ -999,18 +999,22 @@
   // Assume xbar.hjson is located in the same directory of top.hjson
   xbar: [
     { name: "main",
-      clock_srcs: {clk_main_i: "main", clk_fixed_i: "io_div4"},
+      clock_srcs: {clk_main_i: "main",
+                   clk_fixed_i: "io_div4",
+                   clk_spi_host0_i: "io",
+                   clk_spi_host1_i: "io_div2"},
       clock_group: "infra",
       reset: "sys",
-      reset_connections: {rst_main_ni: "sys", rst_fixed_ni: "sys_io_div4"}
+      reset_connections: {rst_main_ni: "sys",
+                          rst_fixed_ni: "sys_io_div4",
+                          rst_spi_host0_ni: "spi_host0",
+                          rst_spi_host1_ni: "spi_host1"}
     },
     { name: "peri",
-      clock_srcs: {clk_peri_i: "io_div4", clk_spi_host0_i: "io", clk_spi_host1_i: "io_div2"},
+      clock_srcs: {clk_peri_i: "io_div4", },
       clock_group: "infra",
       reset: "sys_io_div4",
-      reset_connections: {rst_peri_ni:      "sys_io_div4",
-                          rst_spi_host0_ni: "spi_host0",
-                          rst_spi_host1_ni: "spi_host1"},
+      reset_connections: {rst_peri_ni: "sys_io_div4"},
     }
   ],
 
diff --git a/hw/top_earlgrey/data/xbar_main.hjson b/hw/top_earlgrey/data/xbar_main.hjson
index 9822089..4dc6a21 100644
--- a/hw/top_earlgrey/data/xbar_main.hjson
+++ b/hw/top_earlgrey/data/xbar_main.hjson
@@ -4,9 +4,9 @@
 { name: "main",
   type: "xbar",
   clock_primary: "clk_main_i", // Main clock, used in sockets
-  other_clock_list: [ "clk_fixed_i" ] // Secondary clocks used by specific nodes
+  other_clock_list: [ "clk_fixed_i", "clk_spi_host0_i", "clk_spi_host1_i" ] // Secondary clocks used by specific nodes
   reset_primary: "rst_main_ni", // Main reset, used in sockets
-  other_reset_list: [ "rst_fixed_ni" ] // Secondary clocks used by specific nodes
+  other_reset_list: [ "rst_fixed_ni", "rst_spi_host0_ni", "rst_spi_host1_ni"] // Secondary clocks used by specific nodes
 
   nodes: [
     { name:  "rv_core_ibex.corei",
@@ -58,6 +58,18 @@
       reset:     "rst_fixed_ni",
       pipeline_byp: "false"
     },
+    { name:      "spi_host0",
+      type:      "device",
+      clock:     "clk_spi_host0_i",
+      reset:     "rst_spi_host0_ni",
+      pipeline:  "false"
+    },
+    { name:      "spi_host1",
+      type:      "device",
+      clock:     "clk_spi_host1_i",
+      reset:     "rst_spi_host1_ni",
+      pipeline:  "false"
+    },
     { name:      "flash_ctrl.core",
       type:      "device",
       clock:     "clk_main_i",
@@ -160,7 +172,8 @@
     rv_core_ibex.corei:  ["rom_ctrl.rom", "rv_dm.rom", "sram_ctrl_main.ram", "flash_ctrl.mem"],
     rv_core_ibex.cored:  [
       "rom_ctrl.rom", "rom_ctrl.regs", "rv_dm.rom", "rv_dm.regs",
-      "sram_ctrl_main.ram", "peri", "flash_ctrl.core", "flash_ctrl.prim", "flash_ctrl.mem",
+      "sram_ctrl_main.ram", "peri", "spi_host0", "spi_host1",
+      "flash_ctrl.core", "flash_ctrl.prim", "flash_ctrl.mem",
       "aes", "entropy_src", "csrng", "edn0", "edn1", "hmac",
       "rv_plic", "otbn", "keymgr", "kmac", "sram_ctrl_main.regs",
       "rv_core_ibex.cfg"
diff --git a/hw/top_earlgrey/data/xbar_peri.hjson b/hw/top_earlgrey/data/xbar_peri.hjson
index a8e3d25..2f6b473 100644
--- a/hw/top_earlgrey/data/xbar_peri.hjson
+++ b/hw/top_earlgrey/data/xbar_peri.hjson
@@ -4,9 +4,9 @@
 { name: "peri",
   type: "xbar",
   clock_primary: "clk_peri_i", // Main clock, used in sockets
-  other_clock_list: [ "clk_spi_host0_i", "clk_spi_host1_i" ] // Secondary clocks used by specific nodes
+  other_clock_list: [] // Secondary clocks used by specific nodes
   reset_primary: "rst_peri_ni", // Main reset, used in sockets
-  other_reset_list: [ "rst_spi_host0_ni", "rst_spi_host1_ni" ] // Secondary resets used by specific nodes
+  other_reset_list: [] // Secondary resets used by specific nodes
 
   nodes: [
     { name:  "main",
@@ -83,18 +83,6 @@
       reset:     "rst_peri_ni",
       pipeline:  "false"
     },
-    { name:      "spi_host0",
-      type:      "device",
-      clock:     "clk_spi_host0_i",
-      reset:     "rst_spi_host0_ni",
-      pipeline:  "false"
-    },
-    { name:      "spi_host1",
-      type:      "device",
-      clock:     "clk_spi_host1_i",
-      reset:     "rst_spi_host1_ni",
-      pipeline:  "false"
-    },
     { name:      "rv_timer",
       type:      "device",
       clock:     "clk_peri_i",
@@ -201,7 +189,7 @@
   connections: {
     main:  [
       "uart0", "uart1", "uart2", "uart3", "i2c0", "i2c1", "i2c2", "pattgen",
-      "gpio", "spi_device", "spi_host0", "spi_host1", "rv_timer", "usbdev",
+      "gpio", "spi_device", "rv_timer", "usbdev",
       "pwrmgr_aon", "rstmgr_aon", "clkmgr_aon", "pinmux_aon",
       "otp_ctrl.core", "otp_ctrl.prim", "lc_ctrl", "sensor_ctrl",
       "alert_handler", "ast", "sram_ctrl_ret_aon.ram", "sram_ctrl_ret_aon.regs",
diff --git a/hw/top_earlgrey/dv/autogen/tb__alert_handler_connect.sv b/hw/top_earlgrey/dv/autogen/tb__alert_handler_connect.sv
index d3a4326..fe4f224 100644
--- a/hw/top_earlgrey/dv/autogen/tb__alert_handler_connect.sv
+++ b/hw/top_earlgrey/dv/autogen/tb__alert_handler_connect.sv
@@ -10,20 +10,20 @@
 assign alert_if[3].alert_tx = `CHIP_HIER.u_uart3.alert_tx_o[0];
 assign alert_if[4].alert_tx = `CHIP_HIER.u_gpio.alert_tx_o[0];
 assign alert_if[5].alert_tx = `CHIP_HIER.u_spi_device.alert_tx_o[0];
-assign alert_if[6].alert_tx = `CHIP_HIER.u_spi_host0.alert_tx_o[0];
-assign alert_if[7].alert_tx = `CHIP_HIER.u_spi_host1.alert_tx_o[0];
-assign alert_if[8].alert_tx = `CHIP_HIER.u_i2c0.alert_tx_o[0];
-assign alert_if[9].alert_tx = `CHIP_HIER.u_i2c1.alert_tx_o[0];
-assign alert_if[10].alert_tx = `CHIP_HIER.u_i2c2.alert_tx_o[0];
-assign alert_if[11].alert_tx = `CHIP_HIER.u_pattgen.alert_tx_o[0];
-assign alert_if[12].alert_tx = `CHIP_HIER.u_rv_timer.alert_tx_o[0];
-assign alert_if[13].alert_tx = `CHIP_HIER.u_usbdev.alert_tx_o[0];
-assign alert_if[14].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[0];
-assign alert_if[15].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[1];
-assign alert_if[16].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[2];
-assign alert_if[17].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[0];
-assign alert_if[18].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[1];
-assign alert_if[19].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[2];
+assign alert_if[6].alert_tx = `CHIP_HIER.u_i2c0.alert_tx_o[0];
+assign alert_if[7].alert_tx = `CHIP_HIER.u_i2c1.alert_tx_o[0];
+assign alert_if[8].alert_tx = `CHIP_HIER.u_i2c2.alert_tx_o[0];
+assign alert_if[9].alert_tx = `CHIP_HIER.u_pattgen.alert_tx_o[0];
+assign alert_if[10].alert_tx = `CHIP_HIER.u_rv_timer.alert_tx_o[0];
+assign alert_if[11].alert_tx = `CHIP_HIER.u_usbdev.alert_tx_o[0];
+assign alert_if[12].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[0];
+assign alert_if[13].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[1];
+assign alert_if[14].alert_tx = `CHIP_HIER.u_otp_ctrl.alert_tx_o[2];
+assign alert_if[15].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[0];
+assign alert_if[16].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[1];
+assign alert_if[17].alert_tx = `CHIP_HIER.u_lc_ctrl.alert_tx_o[2];
+assign alert_if[18].alert_tx = `CHIP_HIER.u_spi_host0.alert_tx_o[0];
+assign alert_if[19].alert_tx = `CHIP_HIER.u_spi_host1.alert_tx_o[0];
 assign alert_if[20].alert_tx = `CHIP_HIER.u_pwrmgr_aon.alert_tx_o[0];
 assign alert_if[21].alert_tx = `CHIP_HIER.u_rstmgr_aon.alert_tx_o[0];
 assign alert_if[22].alert_tx = `CHIP_HIER.u_clkmgr_aon.alert_tx_o[0];
diff --git a/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv b/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
index 4a6e834..84758a9 100644
--- a/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
+++ b/hw/top_earlgrey/dv/autogen/tb__xbar_connect.sv
@@ -41,6 +41,8 @@
 tl_if rv_dm__rom_tl_if(clk_main, rst_n);
 tl_if rom_ctrl__rom_tl_if(clk_main, rst_n);
 tl_if rom_ctrl__regs_tl_if(clk_main, rst_n);
+tl_if spi_host0_tl_if(clk_io, rst_n);
+tl_if spi_host1_tl_if(clk_io_div2, rst_n);
 tl_if flash_ctrl__core_tl_if(clk_main, rst_n);
 tl_if flash_ctrl__prim_tl_if(clk_main, rst_n);
 tl_if flash_ctrl__mem_tl_if(clk_main, rst_n);
@@ -68,8 +70,6 @@
 tl_if pwm_aon_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 spi_host0_tl_if(clk_io, rst_n);
-tl_if spi_host1_tl_if(clk_io_div2, rst_n);
 tl_if rv_timer_tl_if(clk_io_div4, rst_n);
 tl_if usbdev_tl_if(clk_io_div4, rst_n);
 tl_if pwrmgr_aon_tl_if(clk_io_div4, rst_n);
@@ -109,16 +109,16 @@
     // bypass clkmgr, force clocks directly
     force tb.dut.top_earlgrey.u_xbar_main.clk_main_i = clk_main;
     force tb.dut.top_earlgrey.u_xbar_main.clk_fixed_i = clk_io_div4;
+    force tb.dut.top_earlgrey.u_xbar_main.clk_spi_host0_i = clk_io;
+    force tb.dut.top_earlgrey.u_xbar_main.clk_spi_host1_i = clk_io_div2;
     force tb.dut.top_earlgrey.u_xbar_peri.clk_peri_i = clk_io_div4;
-    force tb.dut.top_earlgrey.u_xbar_peri.clk_spi_host0_i = clk_io;
-    force tb.dut.top_earlgrey.u_xbar_peri.clk_spi_host1_i = clk_io_div2;
 
     // bypass rstmgr, force resets directly
     force tb.dut.top_earlgrey.u_xbar_main.rst_main_ni = rst_n;
     force tb.dut.top_earlgrey.u_xbar_main.rst_fixed_ni = rst_n;
+    force tb.dut.top_earlgrey.u_xbar_main.rst_spi_host0_ni = rst_n;
+    force tb.dut.top_earlgrey.u_xbar_main.rst_spi_host1_ni = rst_n;
     force tb.dut.top_earlgrey.u_xbar_peri.rst_peri_ni = rst_n;
-    force tb.dut.top_earlgrey.u_xbar_peri.rst_spi_host0_ni = rst_n;
-    force tb.dut.top_earlgrey.u_xbar_peri.rst_spi_host1_ni = rst_n;
 
     `DRIVE_CHIP_TL_HOST_IF(rv_core_ibex__corei, rv_core_ibex, corei_tl_h)
     `DRIVE_CHIP_TL_HOST_IF(rv_core_ibex__cored, rv_core_ibex, cored_tl_h)
@@ -127,6 +127,8 @@
     `DRIVE_CHIP_TL_DEVICE_IF(rv_dm__rom, rv_dm, rom_tl_d)
     `DRIVE_CHIP_TL_DEVICE_IF(rom_ctrl__rom, rom_ctrl, rom_tl)
     `DRIVE_CHIP_TL_DEVICE_IF(rom_ctrl__regs, rom_ctrl, regs_tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(spi_host0, spi_host0, tl)
+    `DRIVE_CHIP_TL_DEVICE_IF(spi_host1, spi_host1, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(flash_ctrl__core, flash_ctrl, core_tl)
     `DRIVE_CHIP_TL_DEVICE_IF(flash_ctrl__prim, flash_ctrl, prim_tl)
     `DRIVE_CHIP_TL_DEVICE_IF(flash_ctrl__mem, flash_ctrl, mem_tl)
@@ -154,8 +156,6 @@
     `DRIVE_CHIP_TL_DEVICE_IF(pwm_aon, pwm_aon, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(gpio, gpio, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(spi_device, spi_device, tl)
-    `DRIVE_CHIP_TL_DEVICE_IF(spi_host0, spi_host0, tl)
-    `DRIVE_CHIP_TL_DEVICE_IF(spi_host1, spi_host1, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(rv_timer, rv_timer, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(usbdev, usbdev, tl)
     `DRIVE_CHIP_TL_DEVICE_IF(pwrmgr_aon, pwrmgr_aon, 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 0b6ee6c..dddc6c3 100644
--- a/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
+++ b/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
@@ -19,6 +19,12 @@
     '{"rom_ctrl__regs", '{
         '{32'h411e0000, 32'h411e0fff}
     }},
+    '{"spi_host0", '{
+        '{32'h40300000, 32'h40300fff}
+    }},
+    '{"spi_host1", '{
+        '{32'h40310000, 32'h40310fff}
+    }},
     '{"flash_ctrl__core", '{
         '{32'h41000000, 32'h41000fff}
     }},
@@ -100,12 +106,6 @@
     '{"spi_device", '{
         '{32'h40050000, 32'h40051fff}
     }},
-    '{"spi_host0", '{
-        '{32'h40060000, 32'h40060fff}
-    }},
-    '{"spi_host1", '{
-        '{32'h40070000, 32'h40070fff}
-    }},
     '{"rv_timer", '{
         '{32'h40100000, 32'h40100fff}
     }},
@@ -182,8 +182,6 @@
         "pattgen",
         "gpio",
         "spi_device",
-        "spi_host0",
-        "spi_host1",
         "rv_timer",
         "usbdev",
         "pwrmgr_aon",
@@ -202,6 +200,8 @@
         "adc_ctrl_aon",
         "sysrst_ctrl_aon",
         "pwm_aon",
+        "spi_host0",
+        "spi_host1",
         "flash_ctrl__core",
         "flash_ctrl__prim",
         "flash_ctrl__mem",
@@ -233,8 +233,6 @@
         "pattgen",
         "gpio",
         "spi_device",
-        "spi_host0",
-        "spi_host1",
         "rv_timer",
         "usbdev",
         "pwrmgr_aon",
diff --git a/hw/top_earlgrey/dv/autogen/xbar_tgl_excl.cfg b/hw/top_earlgrey/dv/autogen/xbar_tgl_excl.cfg
index 3b9a3c0..d1f8103 100644
--- a/hw/top_earlgrey/dv/autogen/xbar_tgl_excl.cfg
+++ b/hw/top_earlgrey/dv/autogen/xbar_tgl_excl.cfg
@@ -34,6 +34,13 @@
 -node tb.dut*.u_rom_ctrl__regs *tl_i.a_address[23:21]
 -node tb.dut*.u_rom_ctrl__regs *tl_i.a_address[29:25]
 -node tb.dut*.u_rom_ctrl__regs *tl_i.a_address[31:31]
+-node tb.dut*.u_spi_host0 *tl_i.a_address[19:12]
+-node tb.dut*.u_spi_host0 *tl_i.a_address[29:22]
+-node tb.dut*.u_spi_host0 *tl_i.a_address[31:31]
+-node tb.dut*.u_spi_host1 *tl_i.a_address[15:12]
+-node tb.dut*.u_spi_host1 *tl_i.a_address[19:17]
+-node tb.dut*.u_spi_host1 *tl_i.a_address[29:22]
+-node tb.dut*.u_spi_host1 *tl_i.a_address[31:31]
 -node tb.dut*.u_flash_ctrl__core *tl_i.a_address[23:12]
 -node tb.dut*.u_flash_ctrl__core *tl_i.a_address[29:25]
 -node tb.dut*.u_flash_ctrl__core *tl_i.a_address[31:31]
@@ -135,12 +142,6 @@
 -node tb.dut*.u_spi_device *tl_i.a_address[17:17]
 -node tb.dut*.u_spi_device *tl_i.a_address[29:19]
 -node tb.dut*.u_spi_device *tl_i.a_address[31:31]
--node tb.dut*.u_spi_host0 *tl_i.a_address[16:12]
--node tb.dut*.u_spi_host0 *tl_i.a_address[29:19]
--node tb.dut*.u_spi_host0 *tl_i.a_address[31:31]
--node tb.dut*.u_spi_host1 *tl_i.a_address[15:12]
--node tb.dut*.u_spi_host1 *tl_i.a_address[29:19]
--node tb.dut*.u_spi_host1 *tl_i.a_address[31:31]
 -node tb.dut*.u_rv_timer *tl_i.a_address[19:12]
 -node tb.dut*.u_rv_timer *tl_i.a_address[29:21]
 -node tb.dut*.u_rv_timer *tl_i.a_address[31:31]
diff --git a/hw/top_earlgrey/dv/env/autogen/chip_env_pkg__params.sv b/hw/top_earlgrey/dv/env/autogen/chip_env_pkg__params.sv
index e198abd..61e8034 100644
--- a/hw/top_earlgrey/dv/env/autogen/chip_env_pkg__params.sv
+++ b/hw/top_earlgrey/dv/env/autogen/chip_env_pkg__params.sv
@@ -11,8 +11,6 @@
   "uart3_fatal_fault",
   "gpio_fatal_fault",
   "spi_device_fatal_fault",
-  "spi_host0_fatal_fault",
-  "spi_host1_fatal_fault",
   "i2c0_fatal_fault",
   "i2c1_fatal_fault",
   "i2c2_fatal_fault",
@@ -25,6 +23,8 @@
   "lc_ctrl_fatal_prog_error",
   "lc_ctrl_fatal_state_error",
   "lc_ctrl_fatal_bus_integ_error",
+  "spi_host0_fatal_fault",
+  "spi_host1_fatal_fault",
   "pwrmgr_aon_fatal_fault",
   "rstmgr_aon_fatal_fault",
   "clkmgr_aon_recov_fault",
diff --git a/hw/top_earlgrey/ip/clkmgr/data/autogen/clkmgr.hjson b/hw/top_earlgrey/ip/clkmgr/data/autogen/clkmgr.hjson
index 1ec7278..32b29fa 100644
--- a/hw/top_earlgrey/ip/clkmgr/data/autogen/clkmgr.hjson
+++ b/hw/top_earlgrey/ip/clkmgr/data/autogen/clkmgr.hjson
@@ -258,15 +258,6 @@
         }
         {
           bits: "2",
-          name: "CLK_IO_PERI_EN",
-          resval: 1,
-          desc: '''
-            0 CLK_IO_PERI is disabled.
-            1 CLK_IO_PERI is enabled.
-          '''
-        }
-        {
-          bits: "3",
           name: "CLK_USB_PERI_EN",
           resval: 1,
           desc: '''
@@ -274,6 +265,15 @@
             1 CLK_USB_PERI is enabled.
           '''
         }
+        {
+          bits: "3",
+          name: "CLK_IO_PERI_EN",
+          resval: 1,
+          desc: '''
+            0 CLK_IO_PERI is disabled.
+            1 CLK_IO_PERI is enabled.
+          '''
+        }
       ]
       // the CLK_ENABLE register cannot be written, otherwise there is the potential clocks could be
       // disabled and the system will hang
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
index 067aa27..ccf750f 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
@@ -824,8 +824,8 @@
 
   logic clk_io_div4_peri_sw_en;
   logic clk_io_div2_peri_sw_en;
-  logic clk_io_peri_sw_en;
   logic clk_usb_peri_sw_en;
+  logic clk_io_peri_sw_en;
 
   prim_flop_2sync #(
     .Width(1)
@@ -911,47 +911,6 @@
 
   prim_flop_2sync #(
     .Width(1)
-  ) u_clk_io_peri_sw_en_sync (
-    .clk_i(clk_io_i),
-    .rst_ni(rst_io_ni),
-    .d_i(reg2hw.clk_enables.clk_io_peri_en.q),
-    .q_o(clk_io_peri_sw_en)
-  );
-
-  prim_mubi_pkg::mubi4_t clk_io_peri_scanmode;
-  prim_mubi4_sync #(
-    .NumCopies(1),
-    .AsyncOn(0)
-  ) u_clk_io_peri_scanmode_sync  (
-    .clk_i(1'b0),  //unused
-    .rst_ni(1'b1), //unused
-    .mubi_i(scanmode_i),
-    .mubi_o(clk_io_peri_scanmode)
-  );
-
-  logic clk_io_peri_combined_en;
-  assign clk_io_peri_combined_en = clk_io_peri_sw_en & clk_io_en;
-  prim_clock_gating #(
-    .FpgaBufGlobal(1'b1) // This clock spans across multiple clock regions.
-  ) u_clk_io_peri_cg (
-    .clk_i(clk_io_root),
-    .en_i(clk_io_peri_combined_en),
-    .test_en_i(prim_mubi_pkg::mubi4_test_true_strict(clk_io_peri_scanmode)),
-    .clk_o(clocks_o.clk_io_peri)
-  );
-
-  // clock gated indication for alert handler
-  prim_mubi4_sender #(
-    .ResetValue(MuBi4True)
-  ) u_prim_mubi4_sender_clk_io_peri (
-    .clk_i(clk_io_i),
-    .rst_ni(rst_io_ni),
-    .mubi_i(((clk_io_peri_combined_en) ? MuBi4False : MuBi4True)),
-    .mubi_o(cg_en_o.io_peri)
-  );
-
-  prim_flop_2sync #(
-    .Width(1)
   ) u_clk_usb_peri_sw_en_sync (
     .clk_i(clk_usb_i),
     .rst_ni(rst_usb_ni),
@@ -991,6 +950,47 @@
     .mubi_o(cg_en_o.usb_peri)
   );
 
+  prim_flop_2sync #(
+    .Width(1)
+  ) u_clk_io_peri_sw_en_sync (
+    .clk_i(clk_io_i),
+    .rst_ni(rst_io_ni),
+    .d_i(reg2hw.clk_enables.clk_io_peri_en.q),
+    .q_o(clk_io_peri_sw_en)
+  );
+
+  prim_mubi_pkg::mubi4_t clk_io_peri_scanmode;
+  prim_mubi4_sync #(
+    .NumCopies(1),
+    .AsyncOn(0)
+  ) u_clk_io_peri_scanmode_sync  (
+    .clk_i(1'b0),  //unused
+    .rst_ni(1'b1), //unused
+    .mubi_i(scanmode_i),
+    .mubi_o(clk_io_peri_scanmode)
+  );
+
+  logic clk_io_peri_combined_en;
+  assign clk_io_peri_combined_en = clk_io_peri_sw_en & clk_io_en;
+  prim_clock_gating #(
+    .FpgaBufGlobal(1'b1) // This clock spans across multiple clock regions.
+  ) u_clk_io_peri_cg (
+    .clk_i(clk_io_root),
+    .en_i(clk_io_peri_combined_en),
+    .test_en_i(prim_mubi_pkg::mubi4_test_true_strict(clk_io_peri_scanmode)),
+    .clk_o(clocks_o.clk_io_peri)
+  );
+
+  // clock gated indication for alert handler
+  prim_mubi4_sender #(
+    .ResetValue(MuBi4True)
+  ) u_prim_mubi4_sender_clk_io_peri (
+    .clk_i(clk_io_i),
+    .rst_ni(rst_io_ni),
+    .mubi_i(((clk_io_peri_combined_en) ? MuBi4False : MuBi4True)),
+    .mubi_o(cg_en_o.io_peri)
+  );
+
 
   ////////////////////////////////////////////////////
   // Software hint group
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
index 08b8f39..6fe992f 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
@@ -47,8 +47,8 @@
     logic clk_io_div4_timers;
     logic clk_io_div4_peri;
     logic clk_io_div2_peri;
-    logic clk_io_peri;
     logic clk_usb_peri;
+    logic clk_io_peri;
   } clkmgr_out_t;
 
   // clock gating indication for alert handler
@@ -78,8 +78,8 @@
     prim_mubi_pkg::mubi4_t io_div4_timers;
     prim_mubi_pkg::mubi4_t io_div4_peri;
     prim_mubi_pkg::mubi4_t io_div2_peri;
-    prim_mubi_pkg::mubi4_t io_peri;
     prim_mubi_pkg::mubi4_t usb_peri;
+    prim_mubi_pkg::mubi4_t io_peri;
   } clkmgr_cg_en_t;
 
   parameter int NumOutputClk = 27;
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv
index 0ccf42e..328e60e 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_pkg.sv
@@ -52,10 +52,10 @@
     } clk_io_div2_peri_en;
     struct packed {
       logic        q;
-    } clk_io_peri_en;
+    } clk_usb_peri_en;
     struct packed {
       logic        q;
-    } clk_usb_peri_en;
+    } clk_io_peri_en;
   } clkmgr_reg2hw_clk_enables_reg_t;
 
   typedef struct packed {
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
index 7a7a2b3..57cb224 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_reg_top.sv
@@ -197,10 +197,10 @@
   logic clk_enables_clk_io_div4_peri_en_wd;
   logic clk_enables_clk_io_div2_peri_en_qs;
   logic clk_enables_clk_io_div2_peri_en_wd;
-  logic clk_enables_clk_io_peri_en_qs;
-  logic clk_enables_clk_io_peri_en_wd;
   logic clk_enables_clk_usb_peri_en_qs;
   logic clk_enables_clk_usb_peri_en_wd;
+  logic clk_enables_clk_io_peri_en_qs;
+  logic clk_enables_clk_io_peri_en_wd;
   logic clk_hints_we;
   logic clk_hints_clk_main_aes_hint_qs;
   logic clk_hints_clk_main_aes_hint_wd;
@@ -646,32 +646,7 @@
     .qs     (clk_enables_clk_io_div2_peri_en_qs)
   );
 
-  //   F[clk_io_peri_en]: 2:2
-  prim_subreg #(
-    .DW      (1),
-    .SwAccess(prim_subreg_pkg::SwAccessRW),
-    .RESVAL  (1'h1)
-  ) u_clk_enables_clk_io_peri_en (
-    .clk_i   (clk_i),
-    .rst_ni  (rst_ni),
-
-    // from register interface
-    .we     (clk_enables_we),
-    .wd     (clk_enables_clk_io_peri_en_wd),
-
-    // from internal hardware
-    .de     (1'b0),
-    .d      ('0),
-
-    // to internal hardware
-    .qe     (),
-    .q      (reg2hw.clk_enables.clk_io_peri_en.q),
-
-    // to register interface (read)
-    .qs     (clk_enables_clk_io_peri_en_qs)
-  );
-
-  //   F[clk_usb_peri_en]: 3:3
+  //   F[clk_usb_peri_en]: 2:2
   prim_subreg #(
     .DW      (1),
     .SwAccess(prim_subreg_pkg::SwAccessRW),
@@ -696,6 +671,31 @@
     .qs     (clk_enables_clk_usb_peri_en_qs)
   );
 
+  //   F[clk_io_peri_en]: 3:3
+  prim_subreg #(
+    .DW      (1),
+    .SwAccess(prim_subreg_pkg::SwAccessRW),
+    .RESVAL  (1'h1)
+  ) u_clk_enables_clk_io_peri_en (
+    .clk_i   (clk_i),
+    .rst_ni  (rst_ni),
+
+    // from register interface
+    .we     (clk_enables_we),
+    .wd     (clk_enables_clk_io_peri_en_wd),
+
+    // from internal hardware
+    .de     (1'b0),
+    .d      ('0),
+
+    // to internal hardware
+    .qe     (),
+    .q      (reg2hw.clk_enables.clk_io_peri_en.q),
+
+    // to register interface (read)
+    .qs     (clk_enables_clk_io_peri_en_qs)
+  );
+
 
   // R[clk_hints]: V(False)
   //   F[clk_main_aes_hint]: 0:0
@@ -1704,9 +1704,9 @@
 
   assign clk_enables_clk_io_div2_peri_en_wd = reg_wdata[1];
 
-  assign clk_enables_clk_io_peri_en_wd = reg_wdata[2];
+  assign clk_enables_clk_usb_peri_en_wd = reg_wdata[2];
 
-  assign clk_enables_clk_usb_peri_en_wd = reg_wdata[3];
+  assign clk_enables_clk_io_peri_en_wd = reg_wdata[3];
   assign clk_hints_we = addr_hit[5] & reg_we & !reg_error;
 
   assign clk_hints_clk_main_aes_hint_wd = reg_wdata[0];
@@ -1788,8 +1788,8 @@
       addr_hit[4]: begin
         reg_rdata_next[0] = clk_enables_clk_io_div4_peri_en_qs;
         reg_rdata_next[1] = clk_enables_clk_io_div2_peri_en_qs;
-        reg_rdata_next[2] = clk_enables_clk_io_peri_en_qs;
-        reg_rdata_next[3] = clk_enables_clk_usb_peri_en_qs;
+        reg_rdata_next[2] = clk_enables_clk_usb_peri_en_qs;
+        reg_rdata_next[3] = clk_enables_clk_io_peri_en_qs;
       end
 
       addr_hit[5]: begin
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 87dd48e..bac9093 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
@@ -12,6 +12,8 @@
   {
     clk_main_i: main
     clk_fixed_i: io_div4
+    clk_spi_host0_i: io
+    clk_spi_host1_i: io_div2
   }
   clock_group: infra
   reset: rst_main_ni
@@ -27,11 +29,23 @@
       name: sys_io_div4
       domain: "0"
     }
+    rst_spi_host0_ni:
+    {
+      name: spi_host0
+      domain: "0"
+    }
+    rst_spi_host1_ni:
+    {
+      name: spi_host1
+      domain: "0"
+    }
   }
   clock_connections:
   {
     clk_main_i: clkmgr_aon_clocks.clk_main_infra
     clk_fixed_i: clkmgr_aon_clocks.clk_io_div4_infra
+    clk_spi_host0_i: clkmgr_aon_clocks.clk_io_infra
+    clk_spi_host1_i: clkmgr_aon_clocks.clk_io_div2_infra
   }
   domain:
   [
@@ -54,6 +68,8 @@
       rv_dm.regs
       sram_ctrl_main.ram
       peri
+      spi_host0
+      spi_host1
       flash_ctrl.core
       flash_ctrl.prim
       flash_ctrl.mem
@@ -214,11 +230,51 @@
       [
         {
           base_addr: 0x40000000
-          size_byte: 0x800000
+          size_byte: 0x200000
+        }
+        {
+          base_addr: 0x40400000
+          size_byte: 0x400000
         }
       ]
     }
     {
+      name: spi_host0
+      type: device
+      clock: clk_spi_host0_i
+      reset: rst_spi_host0_ni
+      pipeline: "false"
+      inst_type: spi_host
+      addr_range:
+      [
+        {
+          base_addr: 0x40300000
+          size_byte: 0x1000
+        }
+      ]
+      xbar: false
+      stub: false
+      pipeline_byp: "true"
+    }
+    {
+      name: spi_host1
+      type: device
+      clock: clk_spi_host1_i
+      reset: rst_spi_host1_ni
+      pipeline: "false"
+      inst_type: spi_host
+      addr_range:
+      [
+        {
+          base_addr: 0x40310000
+          size_byte: 0x1000
+        }
+      ]
+      xbar: false
+      stub: false
+      pipeline_byp: "true"
+    }
+    {
       name: flash_ctrl.core
       type: device
       clock: clk_main_i
diff --git a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.hjson b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.hjson
index 29c7565..c89a951 100644
--- a/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.hjson
+++ b/hw/top_earlgrey/ip/xbar_main/data/autogen/xbar_main.hjson
@@ -63,6 +63,18 @@
     }
     { struct: "tl"
       type:   "req_rsp"
+      name:   "tl_spi_host0"
+      act:    "req"
+      package: "tlul_pkg"
+    }
+    { struct: "tl"
+      type:   "req_rsp"
+      name:   "tl_spi_host1"
+      act:    "req"
+      package: "tlul_pkg"
+    }
+    { struct: "tl"
+      type:   "req_rsp"
       name:   "tl_flash_ctrl__core"
       act:    "req"
       package: "tlul_pkg"
diff --git a/hw/top_earlgrey/ip/xbar_main/dv/autogen/tb__xbar_connect.sv b/hw/top_earlgrey/ip/xbar_main/dv/autogen/tb__xbar_connect.sv
index 8d3c162..4db923a 100644
--- a/hw/top_earlgrey/ip/xbar_main/dv/autogen/tb__xbar_connect.sv
+++ b/hw/top_earlgrey/ip/xbar_main/dv/autogen/tb__xbar_connect.sv
@@ -8,13 +8,19 @@
 
 `DRIVE_CLK(clk_main_i)
 `DRIVE_CLK(clk_fixed_i)
+`DRIVE_CLK(clk_spi_host0_i)
+`DRIVE_CLK(clk_spi_host1_i)
 
 initial force dut.clk_main_i = clk_main_i;
 initial force dut.clk_fixed_i = clk_fixed_i;
+initial force dut.clk_spi_host0_i = clk_spi_host0_i;
+initial force dut.clk_spi_host1_i = clk_spi_host1_i;
 
 // TODO, all resets tie together
 initial force dut.rst_main_ni = rst_n;
 initial force dut.rst_fixed_ni = rst_n;
+initial force dut.rst_spi_host0_ni = rst_n;
+initial force dut.rst_spi_host1_ni = rst_n;
 
 // Host TileLink interface connections
 `CONNECT_TL_HOST_IF(rv_core_ibex__corei, dut, clk_main_i, rst_n)
@@ -27,6 +33,8 @@
 `CONNECT_TL_DEVICE_IF(rom_ctrl__rom, dut, clk_main_i, rst_n)
 `CONNECT_TL_DEVICE_IF(rom_ctrl__regs, dut, clk_main_i, rst_n)
 `CONNECT_TL_DEVICE_IF(peri, dut, clk_fixed_i, rst_n)
+`CONNECT_TL_DEVICE_IF(spi_host0, dut, clk_spi_host0_i, rst_n)
+`CONNECT_TL_DEVICE_IF(spi_host1, dut, clk_spi_host1_i, rst_n)
 `CONNECT_TL_DEVICE_IF(flash_ctrl__core, dut, clk_main_i, rst_n)
 `CONNECT_TL_DEVICE_IF(flash_ctrl__prim, dut, clk_main_i, rst_n)
 `CONNECT_TL_DEVICE_IF(flash_ctrl__mem, dut, clk_main_i, rst_n)
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 7865fa3..2f68335 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,6 +27,13 @@
 -node tb.dut tl_rom_ctrl__regs_o.a_address[31:31]
 -node tb.dut tl_peri_o.a_address[29:23]
 -node tb.dut tl_peri_o.a_address[31:31]
+-node tb.dut tl_spi_host0_o.a_address[19:12]
+-node tb.dut tl_spi_host0_o.a_address[29:22]
+-node tb.dut tl_spi_host0_o.a_address[31:31]
+-node tb.dut tl_spi_host1_o.a_address[15:12]
+-node tb.dut tl_spi_host1_o.a_address[19:17]
+-node tb.dut tl_spi_host1_o.a_address[29:22]
+-node tb.dut tl_spi_host1_o.a_address[31:31]
 -node tb.dut tl_flash_ctrl__core_o.a_address[23:12]
 -node tb.dut tl_flash_ctrl__core_o.a_address[29:25]
 -node tb.dut tl_flash_ctrl__core_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 91d8311..1fccc45 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,7 +20,14 @@
         '{32'h411e0000, 32'h411e0fff}
     }},
     '{"peri", '{
-        '{32'h40000000, 32'h407fffff}
+        '{32'h40000000, 32'h401fffff},
+        '{32'h40400000, 32'h407fffff}
+    }},
+    '{"spi_host0", '{
+        '{32'h40300000, 32'h40300fff}
+    }},
+    '{"spi_host1", '{
+        '{32'h40310000, 32'h40310fff}
     }},
     '{"flash_ctrl__core", '{
         '{32'h41000000, 32'h41000fff}
@@ -86,6 +93,8 @@
         "rv_dm__regs",
         "sram_ctrl_main__ram",
         "peri",
+        "spi_host0",
+        "spi_host1",
         "flash_ctrl__core",
         "flash_ctrl__prim",
         "flash_ctrl__mem",
diff --git a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_bind.sv b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_bind.sv
index d1d814e..fa5f6e8 100644
--- a/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_bind.sv
+++ b/hw/top_earlgrey/ip/xbar_main/dv/autogen/xbar_main_bind.sv
@@ -56,6 +56,18 @@
     .h2d    (tl_peri_o),
     .d2h    (tl_peri_i)
   );
+  bind xbar_main tlul_assert #(.EndpointType("Host")) tlul_assert_device_spi_host0 (
+    .clk_i  (clk_spi_host0_i),
+    .rst_ni (rst_spi_host0_ni),
+    .h2d    (tl_spi_host0_o),
+    .d2h    (tl_spi_host0_i)
+  );
+  bind xbar_main tlul_assert #(.EndpointType("Host")) tlul_assert_device_spi_host1 (
+    .clk_i  (clk_spi_host1_i),
+    .rst_ni (rst_spi_host1_ni),
+    .h2d    (tl_spi_host1_o),
+    .d2h    (tl_spi_host1_i)
+  );
   bind xbar_main tlul_assert #(.EndpointType("Host")) tlul_assert_device_flash_ctrl__core (
     .clk_i  (clk_main_i),
     .rst_ni (rst_main_ni),
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 fd69797..396b902 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,9 +10,12 @@
   localparam logic [31:0] ADDR_SPACE_RV_DM__ROM           = 32'h 00010000;
   localparam logic [31:0] ADDR_SPACE_ROM_CTRL__ROM        = 32'h 00008000;
   localparam logic [31:0] ADDR_SPACE_ROM_CTRL__REGS       = 32'h 411e0000;
-  localparam logic [0:0][31:0] ADDR_SPACE_PERI                 = {
+  localparam logic [1:0][31:0] ADDR_SPACE_PERI                 = {
+    32'h 40400000,
     32'h 40000000
   };
+  localparam logic [31:0] ADDR_SPACE_SPI_HOST0            = 32'h 40300000;
+  localparam logic [31:0] ADDR_SPACE_SPI_HOST1            = 32'h 40310000;
   localparam logic [31:0] ADDR_SPACE_FLASH_CTRL__CORE     = 32'h 41000000;
   localparam logic [31:0] ADDR_SPACE_FLASH_CTRL__PRIM     = 32'h 41008000;
   localparam logic [31:0] ADDR_SPACE_FLASH_CTRL__MEM      = 32'h 20000000;
@@ -34,9 +37,12 @@
   localparam logic [31:0] ADDR_MASK_RV_DM__ROM           = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_ROM_CTRL__ROM        = 32'h 00007fff;
   localparam logic [31:0] ADDR_MASK_ROM_CTRL__REGS       = 32'h 00000fff;
-  localparam logic [0:0][31:0] ADDR_MASK_PERI                 = {
-    32'h 007fffff
+  localparam logic [1:0][31:0] ADDR_MASK_PERI                 = {
+    32'h 003fffff,
+    32'h 001fffff
   };
+  localparam logic [31:0] ADDR_MASK_SPI_HOST0            = 32'h 00000fff;
+  localparam logic [31:0] ADDR_MASK_SPI_HOST1            = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_FLASH_CTRL__CORE     = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_FLASH_CTRL__PRIM     = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_FLASH_CTRL__MEM      = 32'h 000fffff;
@@ -55,7 +61,7 @@
   localparam logic [31:0] ADDR_MASK_SRAM_CTRL_MAIN__RAM  = 32'h 0001ffff;
 
   localparam int N_HOST   = 3;
-  localparam int N_DEVICE = 21;
+  localparam int N_DEVICE = 23;
 
   typedef enum int {
     TlRvDmRegs = 0,
@@ -63,22 +69,24 @@
     TlRomCtrlRom = 2,
     TlRomCtrlRegs = 3,
     TlPeri = 4,
-    TlFlashCtrlCore = 5,
-    TlFlashCtrlPrim = 6,
-    TlFlashCtrlMem = 7,
-    TlHmac = 8,
-    TlKmac = 9,
-    TlAes = 10,
-    TlEntropySrc = 11,
-    TlCsrng = 12,
-    TlEdn0 = 13,
-    TlEdn1 = 14,
-    TlRvPlic = 15,
-    TlOtbn = 16,
-    TlKeymgr = 17,
-    TlRvCoreIbexCfg = 18,
-    TlSramCtrlMainRegs = 19,
-    TlSramCtrlMainRam = 20
+    TlSpiHost0 = 5,
+    TlSpiHost1 = 6,
+    TlFlashCtrlCore = 7,
+    TlFlashCtrlPrim = 8,
+    TlFlashCtrlMem = 9,
+    TlHmac = 10,
+    TlKmac = 11,
+    TlAes = 12,
+    TlEntropySrc = 13,
+    TlCsrng = 14,
+    TlEdn0 = 15,
+    TlEdn1 = 16,
+    TlRvPlic = 17,
+    TlOtbn = 18,
+    TlKeymgr = 19,
+    TlRvCoreIbexCfg = 20,
+    TlSramCtrlMainRegs = 21,
+    TlSramCtrlMainRam = 22
   } tl_device_e;
 
   typedef enum int {
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 52e37e4..98e590d 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
@@ -7,109 +7,117 @@
 //
 // Interconnect
 // rv_core_ibex.corei
-//   -> s1n_24
-//     -> sm1_25
-//       -> rom_ctrl.rom
-//     -> sm1_26
-//       -> rv_dm.rom
+//   -> s1n_26
 //     -> sm1_27
-//       -> sram_ctrl_main.ram
+//       -> rom_ctrl.rom
 //     -> sm1_28
+//       -> rv_dm.rom
+//     -> sm1_29
+//       -> sram_ctrl_main.ram
+//     -> sm1_30
 //       -> flash_ctrl.mem
 // rv_core_ibex.cored
-//   -> s1n_29
-//     -> sm1_25
-//       -> rom_ctrl.rom
-//     -> sm1_30
-//       -> rom_ctrl.regs
-//     -> sm1_26
-//       -> rv_dm.rom
-//     -> sm1_31
-//       -> rv_dm.regs
+//   -> s1n_31
 //     -> sm1_27
-//       -> sram_ctrl_main.ram
-//     -> sm1_33
-//       -> asf_32
-//         -> peri
-//     -> sm1_34
-//       -> flash_ctrl.core
-//     -> sm1_35
-//       -> flash_ctrl.prim
+//       -> rom_ctrl.rom
+//     -> sm1_32
+//       -> rom_ctrl.regs
 //     -> sm1_28
-//       -> flash_ctrl.mem
-//     -> sm1_36
-//       -> aes
-//     -> sm1_37
-//       -> entropy_src
+//       -> rv_dm.rom
+//     -> sm1_33
+//       -> rv_dm.regs
+//     -> sm1_29
+//       -> sram_ctrl_main.ram
+//     -> sm1_35
+//       -> asf_34
+//         -> peri
+//     -> asf_36
+//       -> spi_host0
+//     -> asf_37
+//       -> spi_host1
 //     -> sm1_38
-//       -> csrng
+//       -> flash_ctrl.core
 //     -> sm1_39
-//       -> edn0
+//       -> flash_ctrl.prim
+//     -> sm1_30
+//       -> flash_ctrl.mem
 //     -> sm1_40
-//       -> edn1
+//       -> aes
 //     -> sm1_41
-//       -> hmac
+//       -> entropy_src
 //     -> sm1_42
-//       -> rv_plic
+//       -> csrng
 //     -> sm1_43
-//       -> otbn
+//       -> edn0
 //     -> sm1_44
-//       -> keymgr
+//       -> edn1
 //     -> sm1_45
-//       -> kmac
+//       -> hmac
 //     -> sm1_46
-//       -> sram_ctrl_main.regs
+//       -> rv_plic
 //     -> sm1_47
+//       -> otbn
+//     -> sm1_48
+//       -> keymgr
+//     -> sm1_49
+//       -> kmac
+//     -> sm1_50
+//       -> sram_ctrl_main.regs
+//     -> sm1_51
 //       -> rv_core_ibex.cfg
 // rv_dm.sba
-//   -> s1n_48
-//     -> sm1_25
-//       -> rom_ctrl.rom
-//     -> sm1_30
-//       -> rom_ctrl.regs
-//     -> sm1_31
-//       -> rv_dm.regs
+//   -> s1n_52
 //     -> sm1_27
-//       -> sram_ctrl_main.ram
+//       -> rom_ctrl.rom
+//     -> sm1_32
+//       -> rom_ctrl.regs
 //     -> sm1_33
-//       -> asf_32
-//         -> peri
-//     -> sm1_34
-//       -> flash_ctrl.core
+//       -> rv_dm.regs
+//     -> sm1_29
+//       -> sram_ctrl_main.ram
 //     -> sm1_35
-//       -> flash_ctrl.prim
-//     -> sm1_28
-//       -> flash_ctrl.mem
-//     -> sm1_36
-//       -> aes
-//     -> sm1_37
-//       -> entropy_src
+//       -> asf_34
+//         -> peri
 //     -> sm1_38
-//       -> csrng
+//       -> flash_ctrl.core
 //     -> sm1_39
-//       -> edn0
+//       -> flash_ctrl.prim
+//     -> sm1_30
+//       -> flash_ctrl.mem
 //     -> sm1_40
-//       -> edn1
+//       -> aes
 //     -> sm1_41
-//       -> hmac
+//       -> entropy_src
 //     -> sm1_42
-//       -> rv_plic
+//       -> csrng
 //     -> sm1_43
-//       -> otbn
+//       -> edn0
 //     -> sm1_44
-//       -> keymgr
+//       -> edn1
 //     -> sm1_45
-//       -> kmac
+//       -> hmac
 //     -> sm1_46
-//       -> sram_ctrl_main.regs
+//       -> rv_plic
 //     -> sm1_47
+//       -> otbn
+//     -> sm1_48
+//       -> keymgr
+//     -> sm1_49
+//       -> kmac
+//     -> sm1_50
+//       -> sram_ctrl_main.regs
+//     -> sm1_51
 //       -> rv_core_ibex.cfg
 
 module xbar_main (
   input clk_main_i,
   input clk_fixed_i,
+  input clk_spi_host0_i,
+  input clk_spi_host1_i,
   input rst_main_ni,
   input rst_fixed_ni,
+  input rst_spi_host0_ni,
+  input rst_spi_host1_ni,
 
   // Host interfaces
   input  tlul_pkg::tl_h2d_t tl_rv_core_ibex__corei_i,
@@ -130,6 +138,10 @@
   input  tlul_pkg::tl_d2h_t tl_rom_ctrl__regs_i,
   output tlul_pkg::tl_h2d_t tl_peri_o,
   input  tlul_pkg::tl_d2h_t tl_peri_i,
+  output tlul_pkg::tl_h2d_t tl_spi_host0_o,
+  input  tlul_pkg::tl_d2h_t tl_spi_host0_i,
+  output tlul_pkg::tl_h2d_t tl_spi_host1_o,
+  input  tlul_pkg::tl_d2h_t tl_spi_host1_i,
   output tlul_pkg::tl_h2d_t tl_flash_ctrl__core_o,
   input  tlul_pkg::tl_d2h_t tl_flash_ctrl__core_i,
   output tlul_pkg::tl_h2d_t tl_flash_ctrl__prim_o,
@@ -174,29 +186,15 @@
   logic unused_scanmode;
   assign unused_scanmode = ^scanmode_i;
 
-  tl_h2d_t tl_s1n_24_us_h2d ;
-  tl_d2h_t tl_s1n_24_us_d2h ;
+  tl_h2d_t tl_s1n_26_us_h2d ;
+  tl_d2h_t tl_s1n_26_us_d2h ;
 
 
-  tl_h2d_t tl_s1n_24_ds_h2d [4];
-  tl_d2h_t tl_s1n_24_ds_d2h [4];
+  tl_h2d_t tl_s1n_26_ds_h2d [4];
+  tl_d2h_t tl_s1n_26_ds_d2h [4];
 
   // Create steering signal
-  logic [2:0] dev_sel_s1n_24;
-
-
-  tl_h2d_t tl_sm1_25_us_h2d [3];
-  tl_d2h_t tl_sm1_25_us_d2h [3];
-
-  tl_h2d_t tl_sm1_25_ds_h2d ;
-  tl_d2h_t tl_sm1_25_ds_d2h ;
-
-
-  tl_h2d_t tl_sm1_26_us_h2d [2];
-  tl_d2h_t tl_sm1_26_us_d2h [2];
-
-  tl_h2d_t tl_sm1_26_ds_h2d ;
-  tl_d2h_t tl_sm1_26_ds_d2h ;
+  logic [2:0] dev_sel_s1n_26;
 
 
   tl_h2d_t tl_sm1_27_us_h2d [3];
@@ -206,40 +204,42 @@
   tl_d2h_t tl_sm1_27_ds_d2h ;
 
 
-  tl_h2d_t tl_sm1_28_us_h2d [3];
-  tl_d2h_t tl_sm1_28_us_d2h [3];
+  tl_h2d_t tl_sm1_28_us_h2d [2];
+  tl_d2h_t tl_sm1_28_us_d2h [2];
 
   tl_h2d_t tl_sm1_28_ds_h2d ;
   tl_d2h_t tl_sm1_28_ds_d2h ;
 
-  tl_h2d_t tl_s1n_29_us_h2d ;
-  tl_d2h_t tl_s1n_29_us_d2h ;
+
+  tl_h2d_t tl_sm1_29_us_h2d [3];
+  tl_d2h_t tl_sm1_29_us_d2h [3];
+
+  tl_h2d_t tl_sm1_29_ds_h2d ;
+  tl_d2h_t tl_sm1_29_ds_d2h ;
 
 
-  tl_h2d_t tl_s1n_29_ds_h2d [21];
-  tl_d2h_t tl_s1n_29_ds_d2h [21];
-
-  // Create steering signal
-  logic [4:0] dev_sel_s1n_29;
-
-
-  tl_h2d_t tl_sm1_30_us_h2d [2];
-  tl_d2h_t tl_sm1_30_us_d2h [2];
+  tl_h2d_t tl_sm1_30_us_h2d [3];
+  tl_d2h_t tl_sm1_30_us_d2h [3];
 
   tl_h2d_t tl_sm1_30_ds_h2d ;
   tl_d2h_t tl_sm1_30_ds_d2h ;
 
+  tl_h2d_t tl_s1n_31_us_h2d ;
+  tl_d2h_t tl_s1n_31_us_d2h ;
 
-  tl_h2d_t tl_sm1_31_us_h2d [2];
-  tl_d2h_t tl_sm1_31_us_d2h [2];
 
-  tl_h2d_t tl_sm1_31_ds_h2d ;
-  tl_d2h_t tl_sm1_31_ds_d2h ;
+  tl_h2d_t tl_s1n_31_ds_h2d [23];
+  tl_d2h_t tl_s1n_31_ds_d2h [23];
 
-  tl_h2d_t tl_asf_32_us_h2d ;
-  tl_d2h_t tl_asf_32_us_d2h ;
-  tl_h2d_t tl_asf_32_ds_h2d ;
-  tl_d2h_t tl_asf_32_ds_d2h ;
+  // Create steering signal
+  logic [4:0] dev_sel_s1n_31;
+
+
+  tl_h2d_t tl_sm1_32_us_h2d [2];
+  tl_d2h_t tl_sm1_32_us_d2h [2];
+
+  tl_h2d_t tl_sm1_32_ds_h2d ;
+  tl_d2h_t tl_sm1_32_ds_d2h ;
 
 
   tl_h2d_t tl_sm1_33_us_h2d [2];
@@ -248,12 +248,10 @@
   tl_h2d_t tl_sm1_33_ds_h2d ;
   tl_d2h_t tl_sm1_33_ds_d2h ;
 
-
-  tl_h2d_t tl_sm1_34_us_h2d [2];
-  tl_d2h_t tl_sm1_34_us_d2h [2];
-
-  tl_h2d_t tl_sm1_34_ds_h2d ;
-  tl_d2h_t tl_sm1_34_ds_d2h ;
+  tl_h2d_t tl_asf_34_us_h2d ;
+  tl_d2h_t tl_asf_34_us_d2h ;
+  tl_h2d_t tl_asf_34_ds_h2d ;
+  tl_d2h_t tl_asf_34_ds_d2h ;
 
 
   tl_h2d_t tl_sm1_35_us_h2d [2];
@@ -262,19 +260,15 @@
   tl_h2d_t tl_sm1_35_ds_h2d ;
   tl_d2h_t tl_sm1_35_ds_d2h ;
 
+  tl_h2d_t tl_asf_36_us_h2d ;
+  tl_d2h_t tl_asf_36_us_d2h ;
+  tl_h2d_t tl_asf_36_ds_h2d ;
+  tl_d2h_t tl_asf_36_ds_d2h ;
 
-  tl_h2d_t tl_sm1_36_us_h2d [2];
-  tl_d2h_t tl_sm1_36_us_d2h [2];
-
-  tl_h2d_t tl_sm1_36_ds_h2d ;
-  tl_d2h_t tl_sm1_36_ds_d2h ;
-
-
-  tl_h2d_t tl_sm1_37_us_h2d [2];
-  tl_d2h_t tl_sm1_37_us_d2h [2];
-
-  tl_h2d_t tl_sm1_37_ds_h2d ;
-  tl_d2h_t tl_sm1_37_ds_d2h ;
+  tl_h2d_t tl_asf_37_us_h2d ;
+  tl_d2h_t tl_asf_37_us_d2h ;
+  tl_h2d_t tl_asf_37_ds_h2d ;
+  tl_d2h_t tl_asf_37_ds_d2h ;
 
 
   tl_h2d_t tl_sm1_38_us_h2d [2];
@@ -346,420 +340,472 @@
   tl_h2d_t tl_sm1_47_ds_h2d ;
   tl_d2h_t tl_sm1_47_ds_d2h ;
 
-  tl_h2d_t tl_s1n_48_us_h2d ;
-  tl_d2h_t tl_s1n_48_us_d2h ;
+
+  tl_h2d_t tl_sm1_48_us_h2d [2];
+  tl_d2h_t tl_sm1_48_us_d2h [2];
+
+  tl_h2d_t tl_sm1_48_ds_h2d ;
+  tl_d2h_t tl_sm1_48_ds_d2h ;
 
 
-  tl_h2d_t tl_s1n_48_ds_h2d [20];
-  tl_d2h_t tl_s1n_48_ds_d2h [20];
+  tl_h2d_t tl_sm1_49_us_h2d [2];
+  tl_d2h_t tl_sm1_49_us_d2h [2];
+
+  tl_h2d_t tl_sm1_49_ds_h2d ;
+  tl_d2h_t tl_sm1_49_ds_d2h ;
+
+
+  tl_h2d_t tl_sm1_50_us_h2d [2];
+  tl_d2h_t tl_sm1_50_us_d2h [2];
+
+  tl_h2d_t tl_sm1_50_ds_h2d ;
+  tl_d2h_t tl_sm1_50_ds_d2h ;
+
+
+  tl_h2d_t tl_sm1_51_us_h2d [2];
+  tl_d2h_t tl_sm1_51_us_d2h [2];
+
+  tl_h2d_t tl_sm1_51_ds_h2d ;
+  tl_d2h_t tl_sm1_51_ds_d2h ;
+
+  tl_h2d_t tl_s1n_52_us_h2d ;
+  tl_d2h_t tl_s1n_52_us_d2h ;
+
+
+  tl_h2d_t tl_s1n_52_ds_h2d [20];
+  tl_d2h_t tl_s1n_52_ds_d2h [20];
 
   // Create steering signal
-  logic [4:0] dev_sel_s1n_48;
+  logic [4:0] dev_sel_s1n_52;
 
 
 
-  assign tl_sm1_25_us_h2d[0] = tl_s1n_24_ds_h2d[0];
-  assign tl_s1n_24_ds_d2h[0] = tl_sm1_25_us_d2h[0];
+  assign tl_sm1_27_us_h2d[0] = tl_s1n_26_ds_h2d[0];
+  assign tl_s1n_26_ds_d2h[0] = tl_sm1_27_us_d2h[0];
 
-  assign tl_sm1_26_us_h2d[0] = tl_s1n_24_ds_h2d[1];
-  assign tl_s1n_24_ds_d2h[1] = tl_sm1_26_us_d2h[0];
+  assign tl_sm1_28_us_h2d[0] = tl_s1n_26_ds_h2d[1];
+  assign tl_s1n_26_ds_d2h[1] = tl_sm1_28_us_d2h[0];
 
-  assign tl_sm1_27_us_h2d[0] = tl_s1n_24_ds_h2d[2];
-  assign tl_s1n_24_ds_d2h[2] = tl_sm1_27_us_d2h[0];
+  assign tl_sm1_29_us_h2d[0] = tl_s1n_26_ds_h2d[2];
+  assign tl_s1n_26_ds_d2h[2] = tl_sm1_29_us_d2h[0];
 
-  assign tl_sm1_28_us_h2d[0] = tl_s1n_24_ds_h2d[3];
-  assign tl_s1n_24_ds_d2h[3] = tl_sm1_28_us_d2h[0];
+  assign tl_sm1_30_us_h2d[0] = tl_s1n_26_ds_h2d[3];
+  assign tl_s1n_26_ds_d2h[3] = tl_sm1_30_us_d2h[0];
 
-  assign tl_sm1_25_us_h2d[1] = tl_s1n_29_ds_h2d[0];
-  assign tl_s1n_29_ds_d2h[0] = tl_sm1_25_us_d2h[1];
+  assign tl_sm1_27_us_h2d[1] = tl_s1n_31_ds_h2d[0];
+  assign tl_s1n_31_ds_d2h[0] = tl_sm1_27_us_d2h[1];
 
-  assign tl_sm1_30_us_h2d[0] = tl_s1n_29_ds_h2d[1];
-  assign tl_s1n_29_ds_d2h[1] = tl_sm1_30_us_d2h[0];
+  assign tl_sm1_32_us_h2d[0] = tl_s1n_31_ds_h2d[1];
+  assign tl_s1n_31_ds_d2h[1] = tl_sm1_32_us_d2h[0];
 
-  assign tl_sm1_26_us_h2d[1] = tl_s1n_29_ds_h2d[2];
-  assign tl_s1n_29_ds_d2h[2] = tl_sm1_26_us_d2h[1];
+  assign tl_sm1_28_us_h2d[1] = tl_s1n_31_ds_h2d[2];
+  assign tl_s1n_31_ds_d2h[2] = tl_sm1_28_us_d2h[1];
 
-  assign tl_sm1_31_us_h2d[0] = tl_s1n_29_ds_h2d[3];
-  assign tl_s1n_29_ds_d2h[3] = tl_sm1_31_us_d2h[0];
+  assign tl_sm1_33_us_h2d[0] = tl_s1n_31_ds_h2d[3];
+  assign tl_s1n_31_ds_d2h[3] = tl_sm1_33_us_d2h[0];
 
-  assign tl_sm1_27_us_h2d[1] = tl_s1n_29_ds_h2d[4];
-  assign tl_s1n_29_ds_d2h[4] = tl_sm1_27_us_d2h[1];
+  assign tl_sm1_29_us_h2d[1] = tl_s1n_31_ds_h2d[4];
+  assign tl_s1n_31_ds_d2h[4] = tl_sm1_29_us_d2h[1];
 
-  assign tl_sm1_33_us_h2d[0] = tl_s1n_29_ds_h2d[5];
-  assign tl_s1n_29_ds_d2h[5] = tl_sm1_33_us_d2h[0];
+  assign tl_sm1_35_us_h2d[0] = tl_s1n_31_ds_h2d[5];
+  assign tl_s1n_31_ds_d2h[5] = tl_sm1_35_us_d2h[0];
 
-  assign tl_sm1_34_us_h2d[0] = tl_s1n_29_ds_h2d[6];
-  assign tl_s1n_29_ds_d2h[6] = tl_sm1_34_us_d2h[0];
+  assign tl_asf_36_us_h2d = tl_s1n_31_ds_h2d[6];
+  assign tl_s1n_31_ds_d2h[6] = tl_asf_36_us_d2h;
 
-  assign tl_sm1_35_us_h2d[0] = tl_s1n_29_ds_h2d[7];
-  assign tl_s1n_29_ds_d2h[7] = tl_sm1_35_us_d2h[0];
+  assign tl_asf_37_us_h2d = tl_s1n_31_ds_h2d[7];
+  assign tl_s1n_31_ds_d2h[7] = tl_asf_37_us_d2h;
 
-  assign tl_sm1_28_us_h2d[1] = tl_s1n_29_ds_h2d[8];
-  assign tl_s1n_29_ds_d2h[8] = tl_sm1_28_us_d2h[1];
+  assign tl_sm1_38_us_h2d[0] = tl_s1n_31_ds_h2d[8];
+  assign tl_s1n_31_ds_d2h[8] = tl_sm1_38_us_d2h[0];
 
-  assign tl_sm1_36_us_h2d[0] = tl_s1n_29_ds_h2d[9];
-  assign tl_s1n_29_ds_d2h[9] = tl_sm1_36_us_d2h[0];
+  assign tl_sm1_39_us_h2d[0] = tl_s1n_31_ds_h2d[9];
+  assign tl_s1n_31_ds_d2h[9] = tl_sm1_39_us_d2h[0];
 
-  assign tl_sm1_37_us_h2d[0] = tl_s1n_29_ds_h2d[10];
-  assign tl_s1n_29_ds_d2h[10] = tl_sm1_37_us_d2h[0];
+  assign tl_sm1_30_us_h2d[1] = tl_s1n_31_ds_h2d[10];
+  assign tl_s1n_31_ds_d2h[10] = tl_sm1_30_us_d2h[1];
 
-  assign tl_sm1_38_us_h2d[0] = tl_s1n_29_ds_h2d[11];
-  assign tl_s1n_29_ds_d2h[11] = tl_sm1_38_us_d2h[0];
+  assign tl_sm1_40_us_h2d[0] = tl_s1n_31_ds_h2d[11];
+  assign tl_s1n_31_ds_d2h[11] = tl_sm1_40_us_d2h[0];
 
-  assign tl_sm1_39_us_h2d[0] = tl_s1n_29_ds_h2d[12];
-  assign tl_s1n_29_ds_d2h[12] = tl_sm1_39_us_d2h[0];
+  assign tl_sm1_41_us_h2d[0] = tl_s1n_31_ds_h2d[12];
+  assign tl_s1n_31_ds_d2h[12] = tl_sm1_41_us_d2h[0];
 
-  assign tl_sm1_40_us_h2d[0] = tl_s1n_29_ds_h2d[13];
-  assign tl_s1n_29_ds_d2h[13] = tl_sm1_40_us_d2h[0];
+  assign tl_sm1_42_us_h2d[0] = tl_s1n_31_ds_h2d[13];
+  assign tl_s1n_31_ds_d2h[13] = tl_sm1_42_us_d2h[0];
 
-  assign tl_sm1_41_us_h2d[0] = tl_s1n_29_ds_h2d[14];
-  assign tl_s1n_29_ds_d2h[14] = tl_sm1_41_us_d2h[0];
+  assign tl_sm1_43_us_h2d[0] = tl_s1n_31_ds_h2d[14];
+  assign tl_s1n_31_ds_d2h[14] = tl_sm1_43_us_d2h[0];
 
-  assign tl_sm1_42_us_h2d[0] = tl_s1n_29_ds_h2d[15];
-  assign tl_s1n_29_ds_d2h[15] = tl_sm1_42_us_d2h[0];
+  assign tl_sm1_44_us_h2d[0] = tl_s1n_31_ds_h2d[15];
+  assign tl_s1n_31_ds_d2h[15] = tl_sm1_44_us_d2h[0];
 
-  assign tl_sm1_43_us_h2d[0] = tl_s1n_29_ds_h2d[16];
-  assign tl_s1n_29_ds_d2h[16] = tl_sm1_43_us_d2h[0];
+  assign tl_sm1_45_us_h2d[0] = tl_s1n_31_ds_h2d[16];
+  assign tl_s1n_31_ds_d2h[16] = tl_sm1_45_us_d2h[0];
 
-  assign tl_sm1_44_us_h2d[0] = tl_s1n_29_ds_h2d[17];
-  assign tl_s1n_29_ds_d2h[17] = tl_sm1_44_us_d2h[0];
+  assign tl_sm1_46_us_h2d[0] = tl_s1n_31_ds_h2d[17];
+  assign tl_s1n_31_ds_d2h[17] = tl_sm1_46_us_d2h[0];
 
-  assign tl_sm1_45_us_h2d[0] = tl_s1n_29_ds_h2d[18];
-  assign tl_s1n_29_ds_d2h[18] = tl_sm1_45_us_d2h[0];
+  assign tl_sm1_47_us_h2d[0] = tl_s1n_31_ds_h2d[18];
+  assign tl_s1n_31_ds_d2h[18] = tl_sm1_47_us_d2h[0];
 
-  assign tl_sm1_46_us_h2d[0] = tl_s1n_29_ds_h2d[19];
-  assign tl_s1n_29_ds_d2h[19] = tl_sm1_46_us_d2h[0];
+  assign tl_sm1_48_us_h2d[0] = tl_s1n_31_ds_h2d[19];
+  assign tl_s1n_31_ds_d2h[19] = tl_sm1_48_us_d2h[0];
 
-  assign tl_sm1_47_us_h2d[0] = tl_s1n_29_ds_h2d[20];
-  assign tl_s1n_29_ds_d2h[20] = tl_sm1_47_us_d2h[0];
+  assign tl_sm1_49_us_h2d[0] = tl_s1n_31_ds_h2d[20];
+  assign tl_s1n_31_ds_d2h[20] = tl_sm1_49_us_d2h[0];
 
-  assign tl_sm1_25_us_h2d[2] = tl_s1n_48_ds_h2d[0];
-  assign tl_s1n_48_ds_d2h[0] = tl_sm1_25_us_d2h[2];
+  assign tl_sm1_50_us_h2d[0] = tl_s1n_31_ds_h2d[21];
+  assign tl_s1n_31_ds_d2h[21] = tl_sm1_50_us_d2h[0];
 
-  assign tl_sm1_30_us_h2d[1] = tl_s1n_48_ds_h2d[1];
-  assign tl_s1n_48_ds_d2h[1] = tl_sm1_30_us_d2h[1];
+  assign tl_sm1_51_us_h2d[0] = tl_s1n_31_ds_h2d[22];
+  assign tl_s1n_31_ds_d2h[22] = tl_sm1_51_us_d2h[0];
 
-  assign tl_sm1_31_us_h2d[1] = tl_s1n_48_ds_h2d[2];
-  assign tl_s1n_48_ds_d2h[2] = tl_sm1_31_us_d2h[1];
+  assign tl_sm1_27_us_h2d[2] = tl_s1n_52_ds_h2d[0];
+  assign tl_s1n_52_ds_d2h[0] = tl_sm1_27_us_d2h[2];
 
-  assign tl_sm1_27_us_h2d[2] = tl_s1n_48_ds_h2d[3];
-  assign tl_s1n_48_ds_d2h[3] = tl_sm1_27_us_d2h[2];
+  assign tl_sm1_32_us_h2d[1] = tl_s1n_52_ds_h2d[1];
+  assign tl_s1n_52_ds_d2h[1] = tl_sm1_32_us_d2h[1];
 
-  assign tl_sm1_33_us_h2d[1] = tl_s1n_48_ds_h2d[4];
-  assign tl_s1n_48_ds_d2h[4] = tl_sm1_33_us_d2h[1];
+  assign tl_sm1_33_us_h2d[1] = tl_s1n_52_ds_h2d[2];
+  assign tl_s1n_52_ds_d2h[2] = tl_sm1_33_us_d2h[1];
 
-  assign tl_sm1_34_us_h2d[1] = tl_s1n_48_ds_h2d[5];
-  assign tl_s1n_48_ds_d2h[5] = tl_sm1_34_us_d2h[1];
+  assign tl_sm1_29_us_h2d[2] = tl_s1n_52_ds_h2d[3];
+  assign tl_s1n_52_ds_d2h[3] = tl_sm1_29_us_d2h[2];
 
-  assign tl_sm1_35_us_h2d[1] = tl_s1n_48_ds_h2d[6];
-  assign tl_s1n_48_ds_d2h[6] = tl_sm1_35_us_d2h[1];
+  assign tl_sm1_35_us_h2d[1] = tl_s1n_52_ds_h2d[4];
+  assign tl_s1n_52_ds_d2h[4] = tl_sm1_35_us_d2h[1];
 
-  assign tl_sm1_28_us_h2d[2] = tl_s1n_48_ds_h2d[7];
-  assign tl_s1n_48_ds_d2h[7] = tl_sm1_28_us_d2h[2];
+  assign tl_sm1_38_us_h2d[1] = tl_s1n_52_ds_h2d[5];
+  assign tl_s1n_52_ds_d2h[5] = tl_sm1_38_us_d2h[1];
 
-  assign tl_sm1_36_us_h2d[1] = tl_s1n_48_ds_h2d[8];
-  assign tl_s1n_48_ds_d2h[8] = tl_sm1_36_us_d2h[1];
+  assign tl_sm1_39_us_h2d[1] = tl_s1n_52_ds_h2d[6];
+  assign tl_s1n_52_ds_d2h[6] = tl_sm1_39_us_d2h[1];
+
+  assign tl_sm1_30_us_h2d[2] = tl_s1n_52_ds_h2d[7];
+  assign tl_s1n_52_ds_d2h[7] = tl_sm1_30_us_d2h[2];
+
+  assign tl_sm1_40_us_h2d[1] = tl_s1n_52_ds_h2d[8];
+  assign tl_s1n_52_ds_d2h[8] = tl_sm1_40_us_d2h[1];
+
+  assign tl_sm1_41_us_h2d[1] = tl_s1n_52_ds_h2d[9];
+  assign tl_s1n_52_ds_d2h[9] = tl_sm1_41_us_d2h[1];
+
+  assign tl_sm1_42_us_h2d[1] = tl_s1n_52_ds_h2d[10];
+  assign tl_s1n_52_ds_d2h[10] = tl_sm1_42_us_d2h[1];
 
-  assign tl_sm1_37_us_h2d[1] = tl_s1n_48_ds_h2d[9];
-  assign tl_s1n_48_ds_d2h[9] = tl_sm1_37_us_d2h[1];
+  assign tl_sm1_43_us_h2d[1] = tl_s1n_52_ds_h2d[11];
+  assign tl_s1n_52_ds_d2h[11] = tl_sm1_43_us_d2h[1];
 
-  assign tl_sm1_38_us_h2d[1] = tl_s1n_48_ds_h2d[10];
-  assign tl_s1n_48_ds_d2h[10] = tl_sm1_38_us_d2h[1];
+  assign tl_sm1_44_us_h2d[1] = tl_s1n_52_ds_h2d[12];
+  assign tl_s1n_52_ds_d2h[12] = tl_sm1_44_us_d2h[1];
 
-  assign tl_sm1_39_us_h2d[1] = tl_s1n_48_ds_h2d[11];
-  assign tl_s1n_48_ds_d2h[11] = tl_sm1_39_us_d2h[1];
+  assign tl_sm1_45_us_h2d[1] = tl_s1n_52_ds_h2d[13];
+  assign tl_s1n_52_ds_d2h[13] = tl_sm1_45_us_d2h[1];
 
-  assign tl_sm1_40_us_h2d[1] = tl_s1n_48_ds_h2d[12];
-  assign tl_s1n_48_ds_d2h[12] = tl_sm1_40_us_d2h[1];
+  assign tl_sm1_46_us_h2d[1] = tl_s1n_52_ds_h2d[14];
+  assign tl_s1n_52_ds_d2h[14] = tl_sm1_46_us_d2h[1];
 
-  assign tl_sm1_41_us_h2d[1] = tl_s1n_48_ds_h2d[13];
-  assign tl_s1n_48_ds_d2h[13] = tl_sm1_41_us_d2h[1];
+  assign tl_sm1_47_us_h2d[1] = tl_s1n_52_ds_h2d[15];
+  assign tl_s1n_52_ds_d2h[15] = tl_sm1_47_us_d2h[1];
 
-  assign tl_sm1_42_us_h2d[1] = tl_s1n_48_ds_h2d[14];
-  assign tl_s1n_48_ds_d2h[14] = tl_sm1_42_us_d2h[1];
+  assign tl_sm1_48_us_h2d[1] = tl_s1n_52_ds_h2d[16];
+  assign tl_s1n_52_ds_d2h[16] = tl_sm1_48_us_d2h[1];
 
-  assign tl_sm1_43_us_h2d[1] = tl_s1n_48_ds_h2d[15];
-  assign tl_s1n_48_ds_d2h[15] = tl_sm1_43_us_d2h[1];
+  assign tl_sm1_49_us_h2d[1] = tl_s1n_52_ds_h2d[17];
+  assign tl_s1n_52_ds_d2h[17] = tl_sm1_49_us_d2h[1];
 
-  assign tl_sm1_44_us_h2d[1] = tl_s1n_48_ds_h2d[16];
-  assign tl_s1n_48_ds_d2h[16] = tl_sm1_44_us_d2h[1];
+  assign tl_sm1_50_us_h2d[1] = tl_s1n_52_ds_h2d[18];
+  assign tl_s1n_52_ds_d2h[18] = tl_sm1_50_us_d2h[1];
 
-  assign tl_sm1_45_us_h2d[1] = tl_s1n_48_ds_h2d[17];
-  assign tl_s1n_48_ds_d2h[17] = tl_sm1_45_us_d2h[1];
+  assign tl_sm1_51_us_h2d[1] = tl_s1n_52_ds_h2d[19];
+  assign tl_s1n_52_ds_d2h[19] = tl_sm1_51_us_d2h[1];
 
-  assign tl_sm1_46_us_h2d[1] = tl_s1n_48_ds_h2d[18];
-  assign tl_s1n_48_ds_d2h[18] = tl_sm1_46_us_d2h[1];
+  assign tl_s1n_26_us_h2d = tl_rv_core_ibex__corei_i;
+  assign tl_rv_core_ibex__corei_o = tl_s1n_26_us_d2h;
 
-  assign tl_sm1_47_us_h2d[1] = tl_s1n_48_ds_h2d[19];
-  assign tl_s1n_48_ds_d2h[19] = tl_sm1_47_us_d2h[1];
+  assign tl_rom_ctrl__rom_o = tl_sm1_27_ds_h2d;
+  assign tl_sm1_27_ds_d2h = tl_rom_ctrl__rom_i;
 
-  assign tl_s1n_24_us_h2d = tl_rv_core_ibex__corei_i;
-  assign tl_rv_core_ibex__corei_o = tl_s1n_24_us_d2h;
+  assign tl_rv_dm__rom_o = tl_sm1_28_ds_h2d;
+  assign tl_sm1_28_ds_d2h = tl_rv_dm__rom_i;
 
-  assign tl_rom_ctrl__rom_o = tl_sm1_25_ds_h2d;
-  assign tl_sm1_25_ds_d2h = tl_rom_ctrl__rom_i;
+  assign tl_sram_ctrl_main__ram_o = tl_sm1_29_ds_h2d;
+  assign tl_sm1_29_ds_d2h = tl_sram_ctrl_main__ram_i;
 
-  assign tl_rv_dm__rom_o = tl_sm1_26_ds_h2d;
-  assign tl_sm1_26_ds_d2h = tl_rv_dm__rom_i;
+  assign tl_flash_ctrl__mem_o = tl_sm1_30_ds_h2d;
+  assign tl_sm1_30_ds_d2h = tl_flash_ctrl__mem_i;
 
-  assign tl_sram_ctrl_main__ram_o = tl_sm1_27_ds_h2d;
-  assign tl_sm1_27_ds_d2h = tl_sram_ctrl_main__ram_i;
+  assign tl_s1n_31_us_h2d = tl_rv_core_ibex__cored_i;
+  assign tl_rv_core_ibex__cored_o = tl_s1n_31_us_d2h;
 
-  assign tl_flash_ctrl__mem_o = tl_sm1_28_ds_h2d;
-  assign tl_sm1_28_ds_d2h = tl_flash_ctrl__mem_i;
+  assign tl_rom_ctrl__regs_o = tl_sm1_32_ds_h2d;
+  assign tl_sm1_32_ds_d2h = tl_rom_ctrl__regs_i;
 
-  assign tl_s1n_29_us_h2d = tl_rv_core_ibex__cored_i;
-  assign tl_rv_core_ibex__cored_o = tl_s1n_29_us_d2h;
+  assign tl_rv_dm__regs_o = tl_sm1_33_ds_h2d;
+  assign tl_sm1_33_ds_d2h = tl_rv_dm__regs_i;
 
-  assign tl_rom_ctrl__regs_o = tl_sm1_30_ds_h2d;
-  assign tl_sm1_30_ds_d2h = tl_rom_ctrl__regs_i;
+  assign tl_peri_o = tl_asf_34_ds_h2d;
+  assign tl_asf_34_ds_d2h = tl_peri_i;
 
-  assign tl_rv_dm__regs_o = tl_sm1_31_ds_h2d;
-  assign tl_sm1_31_ds_d2h = tl_rv_dm__regs_i;
+  assign tl_asf_34_us_h2d = tl_sm1_35_ds_h2d;
+  assign tl_sm1_35_ds_d2h = tl_asf_34_us_d2h;
 
-  assign tl_peri_o = tl_asf_32_ds_h2d;
-  assign tl_asf_32_ds_d2h = tl_peri_i;
+  assign tl_spi_host0_o = tl_asf_36_ds_h2d;
+  assign tl_asf_36_ds_d2h = tl_spi_host0_i;
 
-  assign tl_asf_32_us_h2d = tl_sm1_33_ds_h2d;
-  assign tl_sm1_33_ds_d2h = tl_asf_32_us_d2h;
+  assign tl_spi_host1_o = tl_asf_37_ds_h2d;
+  assign tl_asf_37_ds_d2h = tl_spi_host1_i;
 
-  assign tl_flash_ctrl__core_o = tl_sm1_34_ds_h2d;
-  assign tl_sm1_34_ds_d2h = tl_flash_ctrl__core_i;
+  assign tl_flash_ctrl__core_o = tl_sm1_38_ds_h2d;
+  assign tl_sm1_38_ds_d2h = tl_flash_ctrl__core_i;
 
-  assign tl_flash_ctrl__prim_o = tl_sm1_35_ds_h2d;
-  assign tl_sm1_35_ds_d2h = tl_flash_ctrl__prim_i;
+  assign tl_flash_ctrl__prim_o = tl_sm1_39_ds_h2d;
+  assign tl_sm1_39_ds_d2h = tl_flash_ctrl__prim_i;
 
-  assign tl_aes_o = tl_sm1_36_ds_h2d;
-  assign tl_sm1_36_ds_d2h = tl_aes_i;
+  assign tl_aes_o = tl_sm1_40_ds_h2d;
+  assign tl_sm1_40_ds_d2h = tl_aes_i;
 
-  assign tl_entropy_src_o = tl_sm1_37_ds_h2d;
-  assign tl_sm1_37_ds_d2h = tl_entropy_src_i;
+  assign tl_entropy_src_o = tl_sm1_41_ds_h2d;
+  assign tl_sm1_41_ds_d2h = tl_entropy_src_i;
 
-  assign tl_csrng_o = tl_sm1_38_ds_h2d;
-  assign tl_sm1_38_ds_d2h = tl_csrng_i;
+  assign tl_csrng_o = tl_sm1_42_ds_h2d;
+  assign tl_sm1_42_ds_d2h = tl_csrng_i;
 
-  assign tl_edn0_o = tl_sm1_39_ds_h2d;
-  assign tl_sm1_39_ds_d2h = tl_edn0_i;
+  assign tl_edn0_o = tl_sm1_43_ds_h2d;
+  assign tl_sm1_43_ds_d2h = tl_edn0_i;
 
-  assign tl_edn1_o = tl_sm1_40_ds_h2d;
-  assign tl_sm1_40_ds_d2h = tl_edn1_i;
+  assign tl_edn1_o = tl_sm1_44_ds_h2d;
+  assign tl_sm1_44_ds_d2h = tl_edn1_i;
 
-  assign tl_hmac_o = tl_sm1_41_ds_h2d;
-  assign tl_sm1_41_ds_d2h = tl_hmac_i;
+  assign tl_hmac_o = tl_sm1_45_ds_h2d;
+  assign tl_sm1_45_ds_d2h = tl_hmac_i;
 
-  assign tl_rv_plic_o = tl_sm1_42_ds_h2d;
-  assign tl_sm1_42_ds_d2h = tl_rv_plic_i;
+  assign tl_rv_plic_o = tl_sm1_46_ds_h2d;
+  assign tl_sm1_46_ds_d2h = tl_rv_plic_i;
 
-  assign tl_otbn_o = tl_sm1_43_ds_h2d;
-  assign tl_sm1_43_ds_d2h = tl_otbn_i;
+  assign tl_otbn_o = tl_sm1_47_ds_h2d;
+  assign tl_sm1_47_ds_d2h = tl_otbn_i;
 
-  assign tl_keymgr_o = tl_sm1_44_ds_h2d;
-  assign tl_sm1_44_ds_d2h = tl_keymgr_i;
+  assign tl_keymgr_o = tl_sm1_48_ds_h2d;
+  assign tl_sm1_48_ds_d2h = tl_keymgr_i;
 
-  assign tl_kmac_o = tl_sm1_45_ds_h2d;
-  assign tl_sm1_45_ds_d2h = tl_kmac_i;
+  assign tl_kmac_o = tl_sm1_49_ds_h2d;
+  assign tl_sm1_49_ds_d2h = tl_kmac_i;
 
-  assign tl_sram_ctrl_main__regs_o = tl_sm1_46_ds_h2d;
-  assign tl_sm1_46_ds_d2h = tl_sram_ctrl_main__regs_i;
+  assign tl_sram_ctrl_main__regs_o = tl_sm1_50_ds_h2d;
+  assign tl_sm1_50_ds_d2h = tl_sram_ctrl_main__regs_i;
 
-  assign tl_rv_core_ibex__cfg_o = tl_sm1_47_ds_h2d;
-  assign tl_sm1_47_ds_d2h = tl_rv_core_ibex__cfg_i;
+  assign tl_rv_core_ibex__cfg_o = tl_sm1_51_ds_h2d;
+  assign tl_sm1_51_ds_d2h = tl_rv_core_ibex__cfg_i;
 
-  assign tl_s1n_48_us_h2d = tl_rv_dm__sba_i;
-  assign tl_rv_dm__sba_o = tl_s1n_48_us_d2h;
+  assign tl_s1n_52_us_h2d = tl_rv_dm__sba_i;
+  assign tl_rv_dm__sba_o = tl_s1n_52_us_d2h;
 
   always_comb begin
     // default steering to generate error response if address is not within the range
-    dev_sel_s1n_24 = 3'd4;
-    if ((tl_s1n_24_us_h2d.a_address &
+    dev_sel_s1n_26 = 3'd4;
+    if ((tl_s1n_26_us_h2d.a_address &
          ~(ADDR_MASK_ROM_CTRL__ROM)) == ADDR_SPACE_ROM_CTRL__ROM) begin
-      dev_sel_s1n_24 = 3'd0;
+      dev_sel_s1n_26 = 3'd0;
 
-    end else if ((tl_s1n_24_us_h2d.a_address &
+    end else if ((tl_s1n_26_us_h2d.a_address &
                   ~(ADDR_MASK_RV_DM__ROM)) == ADDR_SPACE_RV_DM__ROM) begin
-      dev_sel_s1n_24 = 3'd1;
+      dev_sel_s1n_26 = 3'd1;
 
-    end else if ((tl_s1n_24_us_h2d.a_address &
+    end else if ((tl_s1n_26_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_MAIN__RAM)) == ADDR_SPACE_SRAM_CTRL_MAIN__RAM) begin
-      dev_sel_s1n_24 = 3'd2;
+      dev_sel_s1n_26 = 3'd2;
 
-    end else if ((tl_s1n_24_us_h2d.a_address &
+    end else if ((tl_s1n_26_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__MEM)) == ADDR_SPACE_FLASH_CTRL__MEM) begin
-      dev_sel_s1n_24 = 3'd3;
+      dev_sel_s1n_26 = 3'd3;
 end
   end
 
   always_comb begin
     // default steering to generate error response if address is not within the range
-    dev_sel_s1n_29 = 5'd21;
-    if ((tl_s1n_29_us_h2d.a_address &
+    dev_sel_s1n_31 = 5'd23;
+    if ((tl_s1n_31_us_h2d.a_address &
          ~(ADDR_MASK_ROM_CTRL__ROM)) == ADDR_SPACE_ROM_CTRL__ROM) begin
-      dev_sel_s1n_29 = 5'd0;
+      dev_sel_s1n_31 = 5'd0;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_ROM_CTRL__REGS)) == ADDR_SPACE_ROM_CTRL__REGS) begin
-      dev_sel_s1n_29 = 5'd1;
+      dev_sel_s1n_31 = 5'd1;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_RV_DM__ROM)) == ADDR_SPACE_RV_DM__ROM) begin
-      dev_sel_s1n_29 = 5'd2;
+      dev_sel_s1n_31 = 5'd2;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_RV_DM__REGS)) == ADDR_SPACE_RV_DM__REGS) begin
-      dev_sel_s1n_29 = 5'd3;
+      dev_sel_s1n_31 = 5'd3;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_MAIN__RAM)) == ADDR_SPACE_SRAM_CTRL_MAIN__RAM) begin
-      dev_sel_s1n_29 = 5'd4;
+      dev_sel_s1n_31 = 5'd4;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
-                  ~(ADDR_MASK_PERI)) == ADDR_SPACE_PERI) begin
-      dev_sel_s1n_29 = 5'd5;
+    end else if (
+      ((tl_s1n_31_us_h2d.a_address & ~(ADDR_MASK_PERI[0])) == ADDR_SPACE_PERI[0]) ||
+      ((tl_s1n_31_us_h2d.a_address & ~(ADDR_MASK_PERI[1])) == ADDR_SPACE_PERI[1])
+    ) begin
+      dev_sel_s1n_31 = 5'd5;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
+                  ~(ADDR_MASK_SPI_HOST0)) == ADDR_SPACE_SPI_HOST0) begin
+      dev_sel_s1n_31 = 5'd6;
+
+    end else if ((tl_s1n_31_us_h2d.a_address &
+                  ~(ADDR_MASK_SPI_HOST1)) == ADDR_SPACE_SPI_HOST1) begin
+      dev_sel_s1n_31 = 5'd7;
+
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__CORE)) == ADDR_SPACE_FLASH_CTRL__CORE) begin
-      dev_sel_s1n_29 = 5'd6;
+      dev_sel_s1n_31 = 5'd8;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__PRIM)) == ADDR_SPACE_FLASH_CTRL__PRIM) begin
-      dev_sel_s1n_29 = 5'd7;
+      dev_sel_s1n_31 = 5'd9;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__MEM)) == ADDR_SPACE_FLASH_CTRL__MEM) begin
-      dev_sel_s1n_29 = 5'd8;
+      dev_sel_s1n_31 = 5'd10;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_AES)) == ADDR_SPACE_AES) begin
-      dev_sel_s1n_29 = 5'd9;
+      dev_sel_s1n_31 = 5'd11;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_ENTROPY_SRC)) == ADDR_SPACE_ENTROPY_SRC) begin
-      dev_sel_s1n_29 = 5'd10;
+      dev_sel_s1n_31 = 5'd12;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_CSRNG)) == ADDR_SPACE_CSRNG) begin
-      dev_sel_s1n_29 = 5'd11;
+      dev_sel_s1n_31 = 5'd13;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_EDN0)) == ADDR_SPACE_EDN0) begin
-      dev_sel_s1n_29 = 5'd12;
+      dev_sel_s1n_31 = 5'd14;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_EDN1)) == ADDR_SPACE_EDN1) begin
-      dev_sel_s1n_29 = 5'd13;
+      dev_sel_s1n_31 = 5'd15;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_HMAC)) == ADDR_SPACE_HMAC) begin
-      dev_sel_s1n_29 = 5'd14;
+      dev_sel_s1n_31 = 5'd16;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_RV_PLIC)) == ADDR_SPACE_RV_PLIC) begin
-      dev_sel_s1n_29 = 5'd15;
+      dev_sel_s1n_31 = 5'd17;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_OTBN)) == ADDR_SPACE_OTBN) begin
-      dev_sel_s1n_29 = 5'd16;
+      dev_sel_s1n_31 = 5'd18;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_KEYMGR)) == ADDR_SPACE_KEYMGR) begin
-      dev_sel_s1n_29 = 5'd17;
+      dev_sel_s1n_31 = 5'd19;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_KMAC)) == ADDR_SPACE_KMAC) begin
-      dev_sel_s1n_29 = 5'd18;
+      dev_sel_s1n_31 = 5'd20;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_MAIN__REGS)) == ADDR_SPACE_SRAM_CTRL_MAIN__REGS) begin
-      dev_sel_s1n_29 = 5'd19;
+      dev_sel_s1n_31 = 5'd21;
 
-    end else if ((tl_s1n_29_us_h2d.a_address &
+    end else if ((tl_s1n_31_us_h2d.a_address &
                   ~(ADDR_MASK_RV_CORE_IBEX__CFG)) == ADDR_SPACE_RV_CORE_IBEX__CFG) begin
-      dev_sel_s1n_29 = 5'd20;
+      dev_sel_s1n_31 = 5'd22;
 end
   end
 
   always_comb begin
     // default steering to generate error response if address is not within the range
-    dev_sel_s1n_48 = 5'd20;
-    if ((tl_s1n_48_us_h2d.a_address &
+    dev_sel_s1n_52 = 5'd20;
+    if ((tl_s1n_52_us_h2d.a_address &
          ~(ADDR_MASK_ROM_CTRL__ROM)) == ADDR_SPACE_ROM_CTRL__ROM) begin
-      dev_sel_s1n_48 = 5'd0;
+      dev_sel_s1n_52 = 5'd0;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_ROM_CTRL__REGS)) == ADDR_SPACE_ROM_CTRL__REGS) begin
-      dev_sel_s1n_48 = 5'd1;
+      dev_sel_s1n_52 = 5'd1;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_RV_DM__REGS)) == ADDR_SPACE_RV_DM__REGS) begin
-      dev_sel_s1n_48 = 5'd2;
+      dev_sel_s1n_52 = 5'd2;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_MAIN__RAM)) == ADDR_SPACE_SRAM_CTRL_MAIN__RAM) begin
-      dev_sel_s1n_48 = 5'd3;
+      dev_sel_s1n_52 = 5'd3;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
-                  ~(ADDR_MASK_PERI)) == ADDR_SPACE_PERI) begin
-      dev_sel_s1n_48 = 5'd4;
+    end else if (
+      ((tl_s1n_52_us_h2d.a_address & ~(ADDR_MASK_PERI[0])) == ADDR_SPACE_PERI[0]) ||
+      ((tl_s1n_52_us_h2d.a_address & ~(ADDR_MASK_PERI[1])) == ADDR_SPACE_PERI[1])
+    ) begin
+      dev_sel_s1n_52 = 5'd4;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__CORE)) == ADDR_SPACE_FLASH_CTRL__CORE) begin
-      dev_sel_s1n_48 = 5'd5;
+      dev_sel_s1n_52 = 5'd5;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__PRIM)) == ADDR_SPACE_FLASH_CTRL__PRIM) begin
-      dev_sel_s1n_48 = 5'd6;
+      dev_sel_s1n_52 = 5'd6;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_FLASH_CTRL__MEM)) == ADDR_SPACE_FLASH_CTRL__MEM) begin
-      dev_sel_s1n_48 = 5'd7;
+      dev_sel_s1n_52 = 5'd7;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_AES)) == ADDR_SPACE_AES) begin
-      dev_sel_s1n_48 = 5'd8;
+      dev_sel_s1n_52 = 5'd8;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_ENTROPY_SRC)) == ADDR_SPACE_ENTROPY_SRC) begin
-      dev_sel_s1n_48 = 5'd9;
+      dev_sel_s1n_52 = 5'd9;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_CSRNG)) == ADDR_SPACE_CSRNG) begin
-      dev_sel_s1n_48 = 5'd10;
+      dev_sel_s1n_52 = 5'd10;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_EDN0)) == ADDR_SPACE_EDN0) begin
-      dev_sel_s1n_48 = 5'd11;
+      dev_sel_s1n_52 = 5'd11;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_EDN1)) == ADDR_SPACE_EDN1) begin
-      dev_sel_s1n_48 = 5'd12;
+      dev_sel_s1n_52 = 5'd12;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_HMAC)) == ADDR_SPACE_HMAC) begin
-      dev_sel_s1n_48 = 5'd13;
+      dev_sel_s1n_52 = 5'd13;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_RV_PLIC)) == ADDR_SPACE_RV_PLIC) begin
-      dev_sel_s1n_48 = 5'd14;
+      dev_sel_s1n_52 = 5'd14;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_OTBN)) == ADDR_SPACE_OTBN) begin
-      dev_sel_s1n_48 = 5'd15;
+      dev_sel_s1n_52 = 5'd15;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_KEYMGR)) == ADDR_SPACE_KEYMGR) begin
-      dev_sel_s1n_48 = 5'd16;
+      dev_sel_s1n_52 = 5'd16;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_KMAC)) == ADDR_SPACE_KMAC) begin
-      dev_sel_s1n_48 = 5'd17;
+      dev_sel_s1n_52 = 5'd17;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_MAIN__REGS)) == ADDR_SPACE_SRAM_CTRL_MAIN__REGS) begin
-      dev_sel_s1n_48 = 5'd18;
+      dev_sel_s1n_52 = 5'd18;
 
-    end else if ((tl_s1n_48_us_h2d.a_address &
+    end else if ((tl_s1n_52_us_h2d.a_address &
                   ~(ADDR_MASK_RV_CORE_IBEX__CFG)) == ADDR_SPACE_RV_CORE_IBEX__CFG) begin
-      dev_sel_s1n_48 = 5'd19;
+      dev_sel_s1n_52 = 5'd19;
 end
   end
 
@@ -771,42 +817,14 @@
     .DReqDepth (16'h0),
     .DRspDepth (16'h0),
     .N         (4)
-  ) u_s1n_24 (
+  ) u_s1n_26 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_s1n_24_us_h2d),
-    .tl_h_o       (tl_s1n_24_us_d2h),
-    .tl_d_o       (tl_s1n_24_ds_h2d),
-    .tl_d_i       (tl_s1n_24_ds_d2h),
-    .dev_select_i (dev_sel_s1n_24)
-  );
-  tlul_socket_m1 #(
-    .HReqDepth (12'h0),
-    .HRspDepth (12'h0),
-    .DReqDepth (4'h0),
-    .DRspDepth (4'h0),
-    .M         (3)
-  ) u_sm1_25 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_25_us_h2d),
-    .tl_h_o       (tl_sm1_25_us_d2h),
-    .tl_d_o       (tl_sm1_25_ds_h2d),
-    .tl_d_i       (tl_sm1_25_ds_d2h)
-  );
-  tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
-    .M         (2)
-  ) u_sm1_26 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_26_us_h2d),
-    .tl_h_o       (tl_sm1_26_us_d2h),
-    .tl_d_o       (tl_sm1_26_ds_h2d),
-    .tl_d_i       (tl_sm1_26_ds_d2h)
+    .tl_h_i       (tl_s1n_26_us_h2d),
+    .tl_h_o       (tl_s1n_26_us_d2h),
+    .tl_d_o       (tl_s1n_26_ds_h2d),
+    .tl_d_i       (tl_s1n_26_ds_d2h),
+    .dev_select_i (dev_sel_s1n_26)
   );
   tlul_socket_m1 #(
     .HReqDepth (12'h0),
@@ -823,11 +841,11 @@
     .tl_d_i       (tl_sm1_27_ds_d2h)
   );
   tlul_socket_m1 #(
-    .HReqDepth (12'h0),
-    .HRspDepth (12'h0),
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
     .DReqPass  (1'b0),
     .DRspPass  (1'b0),
-    .M         (3)
+    .M         (2)
   ) u_sm1_28 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
@@ -836,27 +854,26 @@
     .tl_d_o       (tl_sm1_28_ds_h2d),
     .tl_d_i       (tl_sm1_28_ds_d2h)
   );
-  tlul_socket_1n #(
-    .HReqDepth (4'h0),
-    .HRspDepth (4'h0),
-    .DReqDepth (84'h0),
-    .DRspDepth (84'h0),
-    .N         (21)
-  ) u_s1n_29 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_s1n_29_us_h2d),
-    .tl_h_o       (tl_s1n_29_us_d2h),
-    .tl_d_o       (tl_s1n_29_ds_h2d),
-    .tl_d_i       (tl_s1n_29_ds_d2h),
-    .dev_select_i (dev_sel_s1n_29)
-  );
   tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
+    .HReqDepth (12'h0),
+    .HRspDepth (12'h0),
     .DReqDepth (4'h0),
     .DRspDepth (4'h0),
-    .M         (2)
+    .M         (3)
+  ) u_sm1_29 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_29_us_h2d),
+    .tl_h_o       (tl_sm1_29_us_d2h),
+    .tl_d_o       (tl_sm1_29_ds_h2d),
+    .tl_d_i       (tl_sm1_29_ds_d2h)
+  );
+  tlul_socket_m1 #(
+    .HReqDepth (12'h0),
+    .HRspDepth (12'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
+    .M         (3)
   ) u_sm1_30 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
@@ -865,32 +882,20 @@
     .tl_d_o       (tl_sm1_30_ds_h2d),
     .tl_d_i       (tl_sm1_30_ds_d2h)
   );
-  tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
-    .M         (2)
-  ) u_sm1_31 (
+  tlul_socket_1n #(
+    .HReqDepth (4'h0),
+    .HRspDepth (4'h0),
+    .DReqDepth (92'h0),
+    .DRspDepth (92'h0),
+    .N         (23)
+  ) u_s1n_31 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_31_us_h2d),
-    .tl_h_o       (tl_sm1_31_us_d2h),
-    .tl_d_o       (tl_sm1_31_ds_h2d),
-    .tl_d_i       (tl_sm1_31_ds_d2h)
-  );
-  tlul_fifo_async #(
-    .ReqDepth        (4),// At least 4 to make async work
-    .RspDepth        (4) // At least 4 to make async work
-  ) u_asf_32 (
-    .clk_h_i      (clk_main_i),
-    .rst_h_ni     (rst_main_ni),
-    .clk_d_i      (clk_fixed_i),
-    .rst_d_ni     (rst_fixed_ni),
-    .tl_h_i       (tl_asf_32_us_h2d),
-    .tl_h_o       (tl_asf_32_us_d2h),
-    .tl_d_o       (tl_asf_32_ds_h2d),
-    .tl_d_i       (tl_asf_32_ds_d2h)
+    .tl_h_i       (tl_s1n_31_us_h2d),
+    .tl_h_o       (tl_s1n_31_us_d2h),
+    .tl_d_o       (tl_s1n_31_ds_h2d),
+    .tl_d_i       (tl_s1n_31_ds_d2h),
+    .dev_select_i (dev_sel_s1n_31)
   );
   tlul_socket_m1 #(
     .HReqDepth (8'h0),
@@ -898,6 +903,20 @@
     .DReqDepth (4'h0),
     .DRspDepth (4'h0),
     .M         (2)
+  ) u_sm1_32 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_32_us_h2d),
+    .tl_h_o       (tl_sm1_32_us_d2h),
+    .tl_d_o       (tl_sm1_32_ds_h2d),
+    .tl_d_i       (tl_sm1_32_ds_d2h)
+  );
+  tlul_socket_m1 #(
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
+    .M         (2)
   ) u_sm1_33 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
@@ -906,25 +925,24 @@
     .tl_d_o       (tl_sm1_33_ds_h2d),
     .tl_d_i       (tl_sm1_33_ds_d2h)
   );
-  tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
-    .M         (2)
-  ) u_sm1_34 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_34_us_h2d),
-    .tl_h_o       (tl_sm1_34_us_d2h),
-    .tl_d_o       (tl_sm1_34_ds_h2d),
-    .tl_d_i       (tl_sm1_34_ds_d2h)
+  tlul_fifo_async #(
+    .ReqDepth        (4),// At least 4 to make async work
+    .RspDepth        (4) // At least 4 to make async work
+  ) u_asf_34 (
+    .clk_h_i      (clk_main_i),
+    .rst_h_ni     (rst_main_ni),
+    .clk_d_i      (clk_fixed_i),
+    .rst_d_ni     (rst_fixed_ni),
+    .tl_h_i       (tl_asf_34_us_h2d),
+    .tl_h_o       (tl_asf_34_us_d2h),
+    .tl_d_o       (tl_asf_34_ds_h2d),
+    .tl_d_i       (tl_asf_34_ds_d2h)
   );
   tlul_socket_m1 #(
     .HReqDepth (8'h0),
     .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
+    .DReqDepth (4'h0),
+    .DRspDepth (4'h0),
     .M         (2)
   ) u_sm1_35 (
     .clk_i        (clk_main_i),
@@ -934,33 +952,31 @@
     .tl_d_o       (tl_sm1_35_ds_h2d),
     .tl_d_i       (tl_sm1_35_ds_d2h)
   );
-  tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
-    .M         (2)
-  ) u_sm1_36 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_36_us_h2d),
-    .tl_h_o       (tl_sm1_36_us_d2h),
-    .tl_d_o       (tl_sm1_36_ds_h2d),
-    .tl_d_i       (tl_sm1_36_ds_d2h)
+  tlul_fifo_async #(
+    .ReqDepth        (4),// At least 4 to make async work
+    .RspDepth        (4) // At least 4 to make async work
+  ) u_asf_36 (
+    .clk_h_i      (clk_main_i),
+    .rst_h_ni     (rst_main_ni),
+    .clk_d_i      (clk_spi_host0_i),
+    .rst_d_ni     (rst_spi_host0_ni),
+    .tl_h_i       (tl_asf_36_us_h2d),
+    .tl_h_o       (tl_asf_36_us_d2h),
+    .tl_d_o       (tl_asf_36_ds_h2d),
+    .tl_d_i       (tl_asf_36_ds_d2h)
   );
-  tlul_socket_m1 #(
-    .HReqDepth (8'h0),
-    .HRspDepth (8'h0),
-    .DReqPass  (1'b0),
-    .DRspPass  (1'b0),
-    .M         (2)
-  ) u_sm1_37 (
-    .clk_i        (clk_main_i),
-    .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_sm1_37_us_h2d),
-    .tl_h_o       (tl_sm1_37_us_d2h),
-    .tl_d_o       (tl_sm1_37_ds_h2d),
-    .tl_d_i       (tl_sm1_37_ds_d2h)
+  tlul_fifo_async #(
+    .ReqDepth        (4),// At least 4 to make async work
+    .RspDepth        (4) // At least 4 to make async work
+  ) u_asf_37 (
+    .clk_h_i      (clk_main_i),
+    .rst_h_ni     (rst_main_ni),
+    .clk_d_i      (clk_spi_host1_i),
+    .rst_d_ni     (rst_spi_host1_ni),
+    .tl_h_i       (tl_asf_37_us_h2d),
+    .tl_h_o       (tl_asf_37_us_d2h),
+    .tl_d_o       (tl_asf_37_ds_h2d),
+    .tl_d_i       (tl_asf_37_ds_d2h)
   );
   tlul_socket_m1 #(
     .HReqDepth (8'h0),
@@ -1077,8 +1093,8 @@
   tlul_socket_m1 #(
     .HReqDepth (8'h0),
     .HRspDepth (8'h0),
-    .DReqDepth (4'h0),
-    .DRspDepth (4'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
     .M         (2)
   ) u_sm1_46 (
     .clk_i        (clk_main_i),
@@ -1102,20 +1118,76 @@
     .tl_d_o       (tl_sm1_47_ds_h2d),
     .tl_d_i       (tl_sm1_47_ds_d2h)
   );
+  tlul_socket_m1 #(
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
+    .M         (2)
+  ) u_sm1_48 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_48_us_h2d),
+    .tl_h_o       (tl_sm1_48_us_d2h),
+    .tl_d_o       (tl_sm1_48_ds_h2d),
+    .tl_d_i       (tl_sm1_48_ds_d2h)
+  );
+  tlul_socket_m1 #(
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
+    .M         (2)
+  ) u_sm1_49 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_49_us_h2d),
+    .tl_h_o       (tl_sm1_49_us_d2h),
+    .tl_d_o       (tl_sm1_49_ds_h2d),
+    .tl_d_i       (tl_sm1_49_ds_d2h)
+  );
+  tlul_socket_m1 #(
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
+    .DReqDepth (4'h0),
+    .DRspDepth (4'h0),
+    .M         (2)
+  ) u_sm1_50 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_50_us_h2d),
+    .tl_h_o       (tl_sm1_50_us_d2h),
+    .tl_d_o       (tl_sm1_50_ds_h2d),
+    .tl_d_i       (tl_sm1_50_ds_d2h)
+  );
+  tlul_socket_m1 #(
+    .HReqDepth (8'h0),
+    .HRspDepth (8'h0),
+    .DReqPass  (1'b0),
+    .DRspPass  (1'b0),
+    .M         (2)
+  ) u_sm1_51 (
+    .clk_i        (clk_main_i),
+    .rst_ni       (rst_main_ni),
+    .tl_h_i       (tl_sm1_51_us_h2d),
+    .tl_h_o       (tl_sm1_51_us_d2h),
+    .tl_d_o       (tl_sm1_51_ds_h2d),
+    .tl_d_i       (tl_sm1_51_ds_d2h)
+  );
   tlul_socket_1n #(
     .HReqPass  (1'b0),
     .HRspPass  (1'b0),
     .DReqDepth (80'h0),
     .DRspDepth (80'h0),
     .N         (20)
-  ) u_s1n_48 (
+  ) u_s1n_52 (
     .clk_i        (clk_main_i),
     .rst_ni       (rst_main_ni),
-    .tl_h_i       (tl_s1n_48_us_h2d),
-    .tl_h_o       (tl_s1n_48_us_d2h),
-    .tl_d_o       (tl_s1n_48_ds_h2d),
-    .tl_d_i       (tl_s1n_48_ds_d2h),
-    .dev_select_i (dev_sel_s1n_48)
+    .tl_h_i       (tl_s1n_52_us_h2d),
+    .tl_h_o       (tl_s1n_52_us_d2h),
+    .tl_d_o       (tl_s1n_52_ds_h2d),
+    .tl_d_i       (tl_s1n_52_ds_d2h),
+    .dev_select_i (dev_sel_s1n_52)
   );
 
 endmodule
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 a773ca7..3523875 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
@@ -11,8 +11,6 @@
   clock_srcs:
   {
     clk_peri_i: io_div4
-    clk_spi_host0_i: io
-    clk_spi_host1_i: io_div2
   }
   clock_group: infra
   reset: rst_peri_ni
@@ -23,22 +21,10 @@
       name: sys_io_div4
       domain: "0"
     }
-    rst_spi_host0_ni:
-    {
-      name: spi_host0
-      domain: "0"
-    }
-    rst_spi_host1_ni:
-    {
-      name: spi_host1
-      domain: "0"
-    }
   }
   clock_connections:
   {
     clk_peri_i: clkmgr_aon_clocks.clk_io_div4_infra
-    clk_spi_host0_i: clkmgr_aon_clocks.clk_io_infra
-    clk_spi_host1_i: clkmgr_aon_clocks.clk_io_div2_infra
   }
   domain:
   [
@@ -58,8 +44,6 @@
       pattgen
       gpio
       spi_device
-      spi_host0
-      spi_host1
       rv_timer
       usbdev
       pwrmgr_aon
@@ -292,42 +276,6 @@
       pipeline_byp: "true"
     }
     {
-      name: spi_host0
-      type: device
-      clock: clk_spi_host0_i
-      reset: rst_spi_host0_ni
-      pipeline: "false"
-      inst_type: spi_host
-      addr_range:
-      [
-        {
-          base_addr: 0x40060000
-          size_byte: 0x1000
-        }
-      ]
-      xbar: false
-      stub: false
-      pipeline_byp: "true"
-    }
-    {
-      name: spi_host1
-      type: device
-      clock: clk_spi_host1_i
-      reset: rst_spi_host1_ni
-      pipeline: "false"
-      inst_type: spi_host
-      addr_range:
-      [
-        {
-          base_addr: 0x40070000
-          size_byte: 0x1000
-        }
-      ]
-      xbar: false
-      stub: false
-      pipeline_byp: "true"
-    }
-    {
       name: rv_timer
       type: device
       clock: clk_peri_i
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 70e7409..30fafd0 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
@@ -87,18 +87,6 @@
     }
     { struct: "tl"
       type:   "req_rsp"
-      name:   "tl_spi_host0"
-      act:    "req"
-      package: "tlul_pkg"
-    }
-    { struct: "tl"
-      type:   "req_rsp"
-      name:   "tl_spi_host1"
-      act:    "req"
-      package: "tlul_pkg"
-    }
-    { struct: "tl"
-      type:   "req_rsp"
       name:   "tl_rv_timer"
       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 9e57327..f07b28c 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
@@ -7,17 +7,11 @@
 xbar_peri dut();
 
 `DRIVE_CLK(clk_peri_i)
-`DRIVE_CLK(clk_spi_host0_i)
-`DRIVE_CLK(clk_spi_host1_i)
 
 initial force dut.clk_peri_i = clk_peri_i;
-initial force dut.clk_spi_host0_i = clk_spi_host0_i;
-initial force dut.clk_spi_host1_i = clk_spi_host1_i;
 
 // TODO, all resets tie together
 initial force dut.rst_peri_ni = rst_n;
-initial force dut.rst_spi_host0_ni = rst_n;
-initial force dut.rst_spi_host1_ni = rst_n;
 
 // Host TileLink interface connections
 `CONNECT_TL_HOST_IF(main, dut, clk_peri_i, rst_n)
@@ -34,8 +28,6 @@
 `CONNECT_TL_DEVICE_IF(pwm_aon, 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(spi_host0, dut, clk_spi_host0_i, rst_n)
-`CONNECT_TL_DEVICE_IF(spi_host1, dut, clk_spi_host1_i, rst_n)
 `CONNECT_TL_DEVICE_IF(rv_timer, dut, clk_peri_i, rst_n)
 `CONNECT_TL_DEVICE_IF(usbdev, dut, clk_peri_i, rst_n)
 `CONNECT_TL_DEVICE_IF(pwrmgr_aon, 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 40cb8f2..b43fb45 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
@@ -51,12 +51,6 @@
 -node tb.dut tl_spi_device_o.a_address[17:17]
 -node tb.dut tl_spi_device_o.a_address[29:19]
 -node tb.dut tl_spi_device_o.a_address[31:31]
--node tb.dut tl_spi_host0_o.a_address[16:12]
--node tb.dut tl_spi_host0_o.a_address[29:19]
--node tb.dut tl_spi_host0_o.a_address[31:31]
--node tb.dut tl_spi_host1_o.a_address[15:12]
--node tb.dut tl_spi_host1_o.a_address[29:19]
--node tb.dut tl_spi_host1_o.a_address[31:31]
 -node tb.dut tl_rv_timer_o.a_address[19:12]
 -node tb.dut tl_rv_timer_o.a_address[29:21]
 -node tb.dut tl_rv_timer_o.a_address[31:31]
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 9a0440f..179ab01 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
@@ -40,12 +40,6 @@
     '{"spi_device", '{
         '{32'h40050000, 32'h40051fff}
     }},
-    '{"spi_host0", '{
-        '{32'h40060000, 32'h40060fff}
-    }},
-    '{"spi_host1", '{
-        '{32'h40070000, 32'h40070fff}
-    }},
     '{"rv_timer", '{
         '{32'h40100000, 32'h40100fff}
     }},
@@ -111,8 +105,6 @@
         "pattgen",
         "gpio",
         "spi_device",
-        "spi_host0",
-        "spi_host1",
         "rv_timer",
         "usbdev",
         "pwrmgr_aon",
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 9c78a74..2709911 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
@@ -80,18 +80,6 @@
     .h2d    (tl_spi_device_o),
     .d2h    (tl_spi_device_i)
   );
-  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_spi_host0 (
-    .clk_i  (clk_spi_host0_i),
-    .rst_ni (rst_spi_host0_ni),
-    .h2d    (tl_spi_host0_o),
-    .d2h    (tl_spi_host0_i)
-  );
-  bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_spi_host1 (
-    .clk_i  (clk_spi_host1_i),
-    .rst_ni (rst_spi_host1_ni),
-    .h2d    (tl_spi_host1_o),
-    .d2h    (tl_spi_host1_i)
-  );
   bind xbar_peri tlul_assert #(.EndpointType("Host")) tlul_assert_device_rv_timer (
     .clk_i  (clk_peri_i),
     .rst_ni (rst_peri_ni),
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 c98f96f..0823e18 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
@@ -17,8 +17,6 @@
   localparam logic [31:0] ADDR_SPACE_PWM_AON                 = 32'h 40450000;
   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_SPI_HOST0               = 32'h 40060000;
-  localparam logic [31:0] ADDR_SPACE_SPI_HOST1               = 32'h 40070000;
   localparam logic [31:0] ADDR_SPACE_RV_TIMER                = 32'h 40100000;
   localparam logic [31:0] ADDR_SPACE_USBDEV                  = 32'h 40110000;
   localparam logic [31:0] ADDR_SPACE_PWRMGR_AON              = 32'h 40400000;
@@ -48,8 +46,6 @@
   localparam logic [31:0] ADDR_MASK_PWM_AON                 = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_GPIO                    = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_SPI_DEVICE              = 32'h 00001fff;
-  localparam logic [31:0] ADDR_MASK_SPI_HOST0               = 32'h 00000fff;
-  localparam logic [31:0] ADDR_MASK_SPI_HOST1               = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_RV_TIMER                = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_USBDEV                  = 32'h 00000fff;
   localparam logic [31:0] ADDR_MASK_PWRMGR_AON              = 32'h 00000fff;
@@ -69,7 +65,7 @@
   localparam logic [31:0] ADDR_MASK_AST                     = 32'h 00000fff;
 
   localparam int N_HOST   = 1;
-  localparam int N_DEVICE = 30;
+  localparam int N_DEVICE = 28;
 
   typedef enum int {
     TlUart0 = 0,
@@ -83,25 +79,23 @@
     TlPwmAon = 8,
     TlGpio = 9,
     TlSpiDevice = 10,
-    TlSpiHost0 = 11,
-    TlSpiHost1 = 12,
-    TlRvTimer = 13,
-    TlUsbdev = 14,
-    TlPwrmgrAon = 15,
-    TlRstmgrAon = 16,
-    TlClkmgrAon = 17,
-    TlPinmuxAon = 18,
-    TlOtpCtrlCore = 19,
-    TlOtpCtrlPrim = 20,
-    TlLcCtrl = 21,
-    TlSensorCtrl = 22,
-    TlAlertHandler = 23,
-    TlSramCtrlRetAonRegs = 24,
-    TlSramCtrlRetAonRam = 25,
-    TlAonTimerAon = 26,
-    TlSysrstCtrlAon = 27,
-    TlAdcCtrlAon = 28,
-    TlAst = 29
+    TlRvTimer = 11,
+    TlUsbdev = 12,
+    TlPwrmgrAon = 13,
+    TlRstmgrAon = 14,
+    TlClkmgrAon = 15,
+    TlPinmuxAon = 16,
+    TlOtpCtrlCore = 17,
+    TlOtpCtrlPrim = 18,
+    TlLcCtrl = 19,
+    TlSensorCtrl = 20,
+    TlAlertHandler = 21,
+    TlSramCtrlRetAonRegs = 22,
+    TlSramCtrlRetAonRam = 23,
+    TlAonTimerAon = 24,
+    TlSysrstCtrlAon = 25,
+    TlAdcCtrlAon = 26,
+    TlAst = 27
   } 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 fa0a8a3..e4e28f2 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,7 +7,7 @@
 //
 // Interconnect
 // main
-//   -> s1n_31
+//   -> s1n_29
 //     -> uart0
 //     -> uart1
 //     -> uart2
@@ -18,10 +18,6 @@
 //     -> pattgen
 //     -> gpio
 //     -> spi_device
-//     -> asf_32
-//       -> spi_host0
-//     -> asf_33
-//       -> spi_host1
 //     -> rv_timer
 //     -> usbdev
 //     -> pwrmgr_aon
@@ -43,11 +39,7 @@
 
 module xbar_peri (
   input clk_peri_i,
-  input clk_spi_host0_i,
-  input clk_spi_host1_i,
   input rst_peri_ni,
-  input rst_spi_host0_ni,
-  input rst_spi_host1_ni,
 
   // Host interfaces
   input  tlul_pkg::tl_h2d_t tl_main_i,
@@ -76,10 +68,6 @@
   input  tlul_pkg::tl_d2h_t tl_gpio_i,
   output tlul_pkg::tl_h2d_t tl_spi_device_o,
   input  tlul_pkg::tl_d2h_t tl_spi_device_i,
-  output tlul_pkg::tl_h2d_t tl_spi_host0_o,
-  input  tlul_pkg::tl_d2h_t tl_spi_host0_i,
-  output tlul_pkg::tl_h2d_t tl_spi_host1_o,
-  input  tlul_pkg::tl_d2h_t tl_spi_host1_i,
   output tlul_pkg::tl_h2d_t tl_rv_timer_o,
   input  tlul_pkg::tl_d2h_t tl_rv_timer_i,
   output tlul_pkg::tl_h2d_t tl_usbdev_o,
@@ -126,249 +114,219 @@
   logic unused_scanmode;
   assign unused_scanmode = ^scanmode_i;
 
-  tl_h2d_t tl_s1n_31_us_h2d ;
-  tl_d2h_t tl_s1n_31_us_d2h ;
+  tl_h2d_t tl_s1n_29_us_h2d ;
+  tl_d2h_t tl_s1n_29_us_d2h ;
 
 
-  tl_h2d_t tl_s1n_31_ds_h2d [30];
-  tl_d2h_t tl_s1n_31_ds_d2h [30];
+  tl_h2d_t tl_s1n_29_ds_h2d [28];
+  tl_d2h_t tl_s1n_29_ds_d2h [28];
 
   // Create steering signal
-  logic [4:0] dev_sel_s1n_31;
-
-  tl_h2d_t tl_asf_32_us_h2d ;
-  tl_d2h_t tl_asf_32_us_d2h ;
-  tl_h2d_t tl_asf_32_ds_h2d ;
-  tl_d2h_t tl_asf_32_ds_d2h ;
-
-  tl_h2d_t tl_asf_33_us_h2d ;
-  tl_d2h_t tl_asf_33_us_d2h ;
-  tl_h2d_t tl_asf_33_ds_h2d ;
-  tl_d2h_t tl_asf_33_ds_d2h ;
+  logic [4:0] dev_sel_s1n_29;
 
 
 
-  assign tl_uart0_o = tl_s1n_31_ds_h2d[0];
-  assign tl_s1n_31_ds_d2h[0] = tl_uart0_i;
+  assign tl_uart0_o = tl_s1n_29_ds_h2d[0];
+  assign tl_s1n_29_ds_d2h[0] = tl_uart0_i;
 
-  assign tl_uart1_o = tl_s1n_31_ds_h2d[1];
-  assign tl_s1n_31_ds_d2h[1] = tl_uart1_i;
+  assign tl_uart1_o = tl_s1n_29_ds_h2d[1];
+  assign tl_s1n_29_ds_d2h[1] = tl_uart1_i;
 
-  assign tl_uart2_o = tl_s1n_31_ds_h2d[2];
-  assign tl_s1n_31_ds_d2h[2] = tl_uart2_i;
+  assign tl_uart2_o = tl_s1n_29_ds_h2d[2];
+  assign tl_s1n_29_ds_d2h[2] = tl_uart2_i;
 
-  assign tl_uart3_o = tl_s1n_31_ds_h2d[3];
-  assign tl_s1n_31_ds_d2h[3] = tl_uart3_i;
+  assign tl_uart3_o = tl_s1n_29_ds_h2d[3];
+  assign tl_s1n_29_ds_d2h[3] = tl_uart3_i;
 
-  assign tl_i2c0_o = tl_s1n_31_ds_h2d[4];
-  assign tl_s1n_31_ds_d2h[4] = tl_i2c0_i;
+  assign tl_i2c0_o = tl_s1n_29_ds_h2d[4];
+  assign tl_s1n_29_ds_d2h[4] = tl_i2c0_i;
 
-  assign tl_i2c1_o = tl_s1n_31_ds_h2d[5];
-  assign tl_s1n_31_ds_d2h[5] = tl_i2c1_i;
+  assign tl_i2c1_o = tl_s1n_29_ds_h2d[5];
+  assign tl_s1n_29_ds_d2h[5] = tl_i2c1_i;
 
-  assign tl_i2c2_o = tl_s1n_31_ds_h2d[6];
-  assign tl_s1n_31_ds_d2h[6] = tl_i2c2_i;
+  assign tl_i2c2_o = tl_s1n_29_ds_h2d[6];
+  assign tl_s1n_29_ds_d2h[6] = tl_i2c2_i;
 
-  assign tl_pattgen_o = tl_s1n_31_ds_h2d[7];
-  assign tl_s1n_31_ds_d2h[7] = tl_pattgen_i;
+  assign tl_pattgen_o = tl_s1n_29_ds_h2d[7];
+  assign tl_s1n_29_ds_d2h[7] = tl_pattgen_i;
 
-  assign tl_gpio_o = tl_s1n_31_ds_h2d[8];
-  assign tl_s1n_31_ds_d2h[8] = tl_gpio_i;
+  assign tl_gpio_o = tl_s1n_29_ds_h2d[8];
+  assign tl_s1n_29_ds_d2h[8] = tl_gpio_i;
 
-  assign tl_spi_device_o = tl_s1n_31_ds_h2d[9];
-  assign tl_s1n_31_ds_d2h[9] = tl_spi_device_i;
+  assign tl_spi_device_o = tl_s1n_29_ds_h2d[9];
+  assign tl_s1n_29_ds_d2h[9] = tl_spi_device_i;
 
-  assign tl_asf_32_us_h2d = tl_s1n_31_ds_h2d[10];
-  assign tl_s1n_31_ds_d2h[10] = tl_asf_32_us_d2h;
+  assign tl_rv_timer_o = tl_s1n_29_ds_h2d[10];
+  assign tl_s1n_29_ds_d2h[10] = tl_rv_timer_i;
 
-  assign tl_asf_33_us_h2d = tl_s1n_31_ds_h2d[11];
-  assign tl_s1n_31_ds_d2h[11] = tl_asf_33_us_d2h;
+  assign tl_usbdev_o = tl_s1n_29_ds_h2d[11];
+  assign tl_s1n_29_ds_d2h[11] = tl_usbdev_i;
 
-  assign tl_rv_timer_o = tl_s1n_31_ds_h2d[12];
-  assign tl_s1n_31_ds_d2h[12] = tl_rv_timer_i;
+  assign tl_pwrmgr_aon_o = tl_s1n_29_ds_h2d[12];
+  assign tl_s1n_29_ds_d2h[12] = tl_pwrmgr_aon_i;
 
-  assign tl_usbdev_o = tl_s1n_31_ds_h2d[13];
-  assign tl_s1n_31_ds_d2h[13] = tl_usbdev_i;
+  assign tl_rstmgr_aon_o = tl_s1n_29_ds_h2d[13];
+  assign tl_s1n_29_ds_d2h[13] = tl_rstmgr_aon_i;
 
-  assign tl_pwrmgr_aon_o = tl_s1n_31_ds_h2d[14];
-  assign tl_s1n_31_ds_d2h[14] = tl_pwrmgr_aon_i;
+  assign tl_clkmgr_aon_o = tl_s1n_29_ds_h2d[14];
+  assign tl_s1n_29_ds_d2h[14] = tl_clkmgr_aon_i;
 
-  assign tl_rstmgr_aon_o = tl_s1n_31_ds_h2d[15];
-  assign tl_s1n_31_ds_d2h[15] = tl_rstmgr_aon_i;
+  assign tl_pinmux_aon_o = tl_s1n_29_ds_h2d[15];
+  assign tl_s1n_29_ds_d2h[15] = tl_pinmux_aon_i;
 
-  assign tl_clkmgr_aon_o = tl_s1n_31_ds_h2d[16];
-  assign tl_s1n_31_ds_d2h[16] = tl_clkmgr_aon_i;
+  assign tl_otp_ctrl__core_o = tl_s1n_29_ds_h2d[16];
+  assign tl_s1n_29_ds_d2h[16] = tl_otp_ctrl__core_i;
 
-  assign tl_pinmux_aon_o = tl_s1n_31_ds_h2d[17];
-  assign tl_s1n_31_ds_d2h[17] = tl_pinmux_aon_i;
+  assign tl_otp_ctrl__prim_o = tl_s1n_29_ds_h2d[17];
+  assign tl_s1n_29_ds_d2h[17] = tl_otp_ctrl__prim_i;
 
-  assign tl_otp_ctrl__core_o = tl_s1n_31_ds_h2d[18];
-  assign tl_s1n_31_ds_d2h[18] = tl_otp_ctrl__core_i;
+  assign tl_lc_ctrl_o = tl_s1n_29_ds_h2d[18];
+  assign tl_s1n_29_ds_d2h[18] = tl_lc_ctrl_i;
 
-  assign tl_otp_ctrl__prim_o = tl_s1n_31_ds_h2d[19];
-  assign tl_s1n_31_ds_d2h[19] = tl_otp_ctrl__prim_i;
+  assign tl_sensor_ctrl_o = tl_s1n_29_ds_h2d[19];
+  assign tl_s1n_29_ds_d2h[19] = tl_sensor_ctrl_i;
 
-  assign tl_lc_ctrl_o = tl_s1n_31_ds_h2d[20];
-  assign tl_s1n_31_ds_d2h[20] = tl_lc_ctrl_i;
+  assign tl_alert_handler_o = tl_s1n_29_ds_h2d[20];
+  assign tl_s1n_29_ds_d2h[20] = tl_alert_handler_i;
 
-  assign tl_sensor_ctrl_o = tl_s1n_31_ds_h2d[21];
-  assign tl_s1n_31_ds_d2h[21] = tl_sensor_ctrl_i;
+  assign tl_ast_o = tl_s1n_29_ds_h2d[21];
+  assign tl_s1n_29_ds_d2h[21] = tl_ast_i;
 
-  assign tl_alert_handler_o = tl_s1n_31_ds_h2d[22];
-  assign tl_s1n_31_ds_d2h[22] = tl_alert_handler_i;
+  assign tl_sram_ctrl_ret_aon__ram_o = tl_s1n_29_ds_h2d[22];
+  assign tl_s1n_29_ds_d2h[22] = tl_sram_ctrl_ret_aon__ram_i;
 
-  assign tl_ast_o = tl_s1n_31_ds_h2d[23];
-  assign tl_s1n_31_ds_d2h[23] = tl_ast_i;
+  assign tl_sram_ctrl_ret_aon__regs_o = tl_s1n_29_ds_h2d[23];
+  assign tl_s1n_29_ds_d2h[23] = tl_sram_ctrl_ret_aon__regs_i;
 
-  assign tl_sram_ctrl_ret_aon__ram_o = tl_s1n_31_ds_h2d[24];
-  assign tl_s1n_31_ds_d2h[24] = tl_sram_ctrl_ret_aon__ram_i;
+  assign tl_aon_timer_aon_o = tl_s1n_29_ds_h2d[24];
+  assign tl_s1n_29_ds_d2h[24] = tl_aon_timer_aon_i;
 
-  assign tl_sram_ctrl_ret_aon__regs_o = tl_s1n_31_ds_h2d[25];
-  assign tl_s1n_31_ds_d2h[25] = tl_sram_ctrl_ret_aon__regs_i;
+  assign tl_adc_ctrl_aon_o = tl_s1n_29_ds_h2d[25];
+  assign tl_s1n_29_ds_d2h[25] = tl_adc_ctrl_aon_i;
 
-  assign tl_aon_timer_aon_o = tl_s1n_31_ds_h2d[26];
-  assign tl_s1n_31_ds_d2h[26] = tl_aon_timer_aon_i;
+  assign tl_sysrst_ctrl_aon_o = tl_s1n_29_ds_h2d[26];
+  assign tl_s1n_29_ds_d2h[26] = tl_sysrst_ctrl_aon_i;
 
-  assign tl_adc_ctrl_aon_o = tl_s1n_31_ds_h2d[27];
-  assign tl_s1n_31_ds_d2h[27] = tl_adc_ctrl_aon_i;
+  assign tl_pwm_aon_o = tl_s1n_29_ds_h2d[27];
+  assign tl_s1n_29_ds_d2h[27] = tl_pwm_aon_i;
 
-  assign tl_sysrst_ctrl_aon_o = tl_s1n_31_ds_h2d[28];
-  assign tl_s1n_31_ds_d2h[28] = tl_sysrst_ctrl_aon_i;
-
-  assign tl_pwm_aon_o = tl_s1n_31_ds_h2d[29];
-  assign tl_s1n_31_ds_d2h[29] = tl_pwm_aon_i;
-
-  assign tl_s1n_31_us_h2d = tl_main_i;
-  assign tl_main_o = tl_s1n_31_us_d2h;
-
-  assign tl_spi_host0_o = tl_asf_32_ds_h2d;
-  assign tl_asf_32_ds_d2h = tl_spi_host0_i;
-
-  assign tl_spi_host1_o = tl_asf_33_ds_h2d;
-  assign tl_asf_33_ds_d2h = tl_spi_host1_i;
+  assign tl_s1n_29_us_h2d = tl_main_i;
+  assign tl_main_o = tl_s1n_29_us_d2h;
 
   always_comb begin
     // default steering to generate error response if address is not within the range
-    dev_sel_s1n_31 = 5'd30;
-    if ((tl_s1n_31_us_h2d.a_address &
+    dev_sel_s1n_29 = 5'd28;
+    if ((tl_s1n_29_us_h2d.a_address &
          ~(ADDR_MASK_UART0)) == ADDR_SPACE_UART0) begin
-      dev_sel_s1n_31 = 5'd0;
+      dev_sel_s1n_29 = 5'd0;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_UART1)) == ADDR_SPACE_UART1) begin
-      dev_sel_s1n_31 = 5'd1;
+      dev_sel_s1n_29 = 5'd1;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_UART2)) == ADDR_SPACE_UART2) begin
-      dev_sel_s1n_31 = 5'd2;
+      dev_sel_s1n_29 = 5'd2;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_UART3)) == ADDR_SPACE_UART3) begin
-      dev_sel_s1n_31 = 5'd3;
+      dev_sel_s1n_29 = 5'd3;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_I2C0)) == ADDR_SPACE_I2C0) begin
-      dev_sel_s1n_31 = 5'd4;
+      dev_sel_s1n_29 = 5'd4;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_I2C1)) == ADDR_SPACE_I2C1) begin
-      dev_sel_s1n_31 = 5'd5;
+      dev_sel_s1n_29 = 5'd5;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_I2C2)) == ADDR_SPACE_I2C2) begin
-      dev_sel_s1n_31 = 5'd6;
+      dev_sel_s1n_29 = 5'd6;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_PATTGEN)) == ADDR_SPACE_PATTGEN) begin
-      dev_sel_s1n_31 = 5'd7;
+      dev_sel_s1n_29 = 5'd7;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_GPIO)) == ADDR_SPACE_GPIO) begin
-      dev_sel_s1n_31 = 5'd8;
+      dev_sel_s1n_29 = 5'd8;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_SPI_DEVICE)) == ADDR_SPACE_SPI_DEVICE) begin
-      dev_sel_s1n_31 = 5'd9;
+      dev_sel_s1n_29 = 5'd9;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
-                  ~(ADDR_MASK_SPI_HOST0)) == ADDR_SPACE_SPI_HOST0) begin
-      dev_sel_s1n_31 = 5'd10;
-
-    end else if ((tl_s1n_31_us_h2d.a_address &
-                  ~(ADDR_MASK_SPI_HOST1)) == ADDR_SPACE_SPI_HOST1) begin
-      dev_sel_s1n_31 = 5'd11;
-
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_RV_TIMER)) == ADDR_SPACE_RV_TIMER) begin
-      dev_sel_s1n_31 = 5'd12;
+      dev_sel_s1n_29 = 5'd10;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_USBDEV)) == ADDR_SPACE_USBDEV) begin
-      dev_sel_s1n_31 = 5'd13;
+      dev_sel_s1n_29 = 5'd11;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_PWRMGR_AON)) == ADDR_SPACE_PWRMGR_AON) begin
-      dev_sel_s1n_31 = 5'd14;
+      dev_sel_s1n_29 = 5'd12;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_RSTMGR_AON)) == ADDR_SPACE_RSTMGR_AON) begin
-      dev_sel_s1n_31 = 5'd15;
+      dev_sel_s1n_29 = 5'd13;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_CLKMGR_AON)) == ADDR_SPACE_CLKMGR_AON) begin
-      dev_sel_s1n_31 = 5'd16;
+      dev_sel_s1n_29 = 5'd14;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_PINMUX_AON)) == ADDR_SPACE_PINMUX_AON) begin
-      dev_sel_s1n_31 = 5'd17;
+      dev_sel_s1n_29 = 5'd15;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_OTP_CTRL__CORE)) == ADDR_SPACE_OTP_CTRL__CORE) begin
-      dev_sel_s1n_31 = 5'd18;
+      dev_sel_s1n_29 = 5'd16;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_OTP_CTRL__PRIM)) == ADDR_SPACE_OTP_CTRL__PRIM) begin
-      dev_sel_s1n_31 = 5'd19;
+      dev_sel_s1n_29 = 5'd17;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_LC_CTRL)) == ADDR_SPACE_LC_CTRL) begin
-      dev_sel_s1n_31 = 5'd20;
+      dev_sel_s1n_29 = 5'd18;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_SENSOR_CTRL)) == ADDR_SPACE_SENSOR_CTRL) begin
-      dev_sel_s1n_31 = 5'd21;
+      dev_sel_s1n_29 = 5'd19;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_ALERT_HANDLER)) == ADDR_SPACE_ALERT_HANDLER) begin
-      dev_sel_s1n_31 = 5'd22;
+      dev_sel_s1n_29 = 5'd20;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_AST)) == ADDR_SPACE_AST) begin
-      dev_sel_s1n_31 = 5'd23;
+      dev_sel_s1n_29 = 5'd21;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_RET_AON__RAM)) == ADDR_SPACE_SRAM_CTRL_RET_AON__RAM) begin
-      dev_sel_s1n_31 = 5'd24;
+      dev_sel_s1n_29 = 5'd22;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_SRAM_CTRL_RET_AON__REGS)) == ADDR_SPACE_SRAM_CTRL_RET_AON__REGS) begin
-      dev_sel_s1n_31 = 5'd25;
+      dev_sel_s1n_29 = 5'd23;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_AON_TIMER_AON)) == ADDR_SPACE_AON_TIMER_AON) begin
-      dev_sel_s1n_31 = 5'd26;
+      dev_sel_s1n_29 = 5'd24;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_ADC_CTRL_AON)) == ADDR_SPACE_ADC_CTRL_AON) begin
-      dev_sel_s1n_31 = 5'd27;
+      dev_sel_s1n_29 = 5'd25;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_SYSRST_CTRL_AON)) == ADDR_SPACE_SYSRST_CTRL_AON) begin
-      dev_sel_s1n_31 = 5'd28;
+      dev_sel_s1n_29 = 5'd26;
 
-    end else if ((tl_s1n_31_us_h2d.a_address &
+    end else if ((tl_s1n_29_us_h2d.a_address &
                   ~(ADDR_MASK_PWM_AON)) == ADDR_SPACE_PWM_AON) begin
-      dev_sel_s1n_31 = 5'd29;
+      dev_sel_s1n_29 = 5'd27;
 end
   end
 
@@ -377,43 +335,17 @@
   tlul_socket_1n #(
     .HReqDepth (4'h0),
     .HRspDepth (4'h0),
-    .DReqDepth (120'h0),
-    .DRspDepth (120'h0),
-    .N         (30)
-  ) u_s1n_31 (
+    .DReqDepth (112'h0),
+    .DRspDepth (112'h0),
+    .N         (28)
+  ) u_s1n_29 (
     .clk_i        (clk_peri_i),
     .rst_ni       (rst_peri_ni),
-    .tl_h_i       (tl_s1n_31_us_h2d),
-    .tl_h_o       (tl_s1n_31_us_d2h),
-    .tl_d_o       (tl_s1n_31_ds_h2d),
-    .tl_d_i       (tl_s1n_31_ds_d2h),
-    .dev_select_i (dev_sel_s1n_31)
-  );
-  tlul_fifo_async #(
-    .ReqDepth        (4),// At least 4 to make async work
-    .RspDepth        (4) // At least 4 to make async work
-  ) u_asf_32 (
-    .clk_h_i      (clk_peri_i),
-    .rst_h_ni     (rst_peri_ni),
-    .clk_d_i      (clk_spi_host0_i),
-    .rst_d_ni     (rst_spi_host0_ni),
-    .tl_h_i       (tl_asf_32_us_h2d),
-    .tl_h_o       (tl_asf_32_us_d2h),
-    .tl_d_o       (tl_asf_32_ds_h2d),
-    .tl_d_i       (tl_asf_32_ds_d2h)
-  );
-  tlul_fifo_async #(
-    .ReqDepth        (4),// At least 4 to make async work
-    .RspDepth        (4) // At least 4 to make async work
-  ) u_asf_33 (
-    .clk_h_i      (clk_peri_i),
-    .rst_h_ni     (rst_peri_ni),
-    .clk_d_i      (clk_spi_host1_i),
-    .rst_d_ni     (rst_spi_host1_ni),
-    .tl_h_i       (tl_asf_33_us_h2d),
-    .tl_h_o       (tl_asf_33_us_d2h),
-    .tl_d_o       (tl_asf_33_ds_h2d),
-    .tl_d_i       (tl_asf_33_ds_d2h)
+    .tl_h_i       (tl_s1n_29_us_h2d),
+    .tl_h_o       (tl_s1n_29_us_d2h),
+    .tl_d_o       (tl_s1n_29_ds_h2d),
+    .tl_d_i       (tl_s1n_29_ds_d2h),
+    .dev_select_i (dev_sel_s1n_29)
   );
 
 endmodule
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler.hjson b/hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler.hjson
index 0f1800e..25c8773 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler.hjson
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/data/alert_handler.hjson
@@ -94,16 +94,16 @@
                  5'd10,
                  5'd10,
                  5'd9,
-                 5'd9,
-                 5'd9,
-                 5'd9,
-                 5'd9,
-                 5'd9,
                  5'd8,
                  5'd7,
-                 5'd0,
+                 5'd7,
+                 5'd7,
+                 5'd7,
+                 5'd7,
+                 5'd7,
                  5'd6,
                  5'd5,
+                 5'd0,
                  5'd4,
                  5'd3,
                  5'd2,
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/data/top_earlgrey_alert_handler.ipconfig.hjson b/hw/top_earlgrey/ip_autogen/alert_handler/data/top_earlgrey_alert_handler.ipconfig.hjson
index 8810bf1..ecbb162 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/data/top_earlgrey_alert_handler.ipconfig.hjson
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/data/top_earlgrey_alert_handler.ipconfig.hjson
@@ -82,17 +82,17 @@
       5'd2
       5'd3
       5'd4
+      5'd0
       5'd5
       5'd6
-      5'd0
+      5'd7
+      5'd7
+      5'd7
+      5'd7
+      5'd7
       5'd7
       5'd8
       5'd9
-      5'd9
-      5'd9
-      5'd9
-      5'd9
-      5'd9
       5'd10
       5'd10
       5'd10
diff --git a/hw/top_earlgrey/ip_autogen/alert_handler/rtl/alert_handler_reg_pkg.sv b/hw/top_earlgrey/ip_autogen/alert_handler/rtl/alert_handler_reg_pkg.sv
index cd83f75..8f8fedc 100644
--- a/hw/top_earlgrey/ip_autogen/alert_handler/rtl/alert_handler_reg_pkg.sv
+++ b/hw/top_earlgrey/ip_autogen/alert_handler/rtl/alert_handler_reg_pkg.sv
@@ -50,16 +50,16 @@
   5'd10,
   5'd10,
   5'd9,
-  5'd9,
-  5'd9,
-  5'd9,
-  5'd9,
-  5'd9,
   5'd8,
   5'd7,
-  5'd0,
+  5'd7,
+  5'd7,
+  5'd7,
+  5'd7,
+  5'd7,
   5'd6,
   5'd5,
+  5'd0,
   5'd4,
   5'd3,
   5'd2,
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 7497f95..1ce79bd 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -19,8 +19,6 @@
   // parameters for uart3
   // parameters for gpio
   // parameters for spi_device
-  // parameters for spi_host0
-  // parameters for spi_host1
   // parameters for i2c0
   // parameters for i2c1
   // parameters for i2c2
@@ -31,6 +29,8 @@
   parameter OtpCtrlMemInitFile = "",
   // parameters for lc_ctrl
   // parameters for alert_handler
+  // parameters for spi_host0
+  // parameters for spi_host1
   // parameters for pwrmgr_aon
   // parameters for rstmgr_aon
   // parameters for clkmgr_aon
@@ -225,22 +225,6 @@
   logic [3:0]  cio_spi_device_sd_p2d;
   logic [3:0]  cio_spi_device_sd_d2p;
   logic [3:0]  cio_spi_device_sd_en_d2p;
-  // spi_host0
-  logic [3:0]  cio_spi_host0_sd_p2d;
-  logic        cio_spi_host0_sck_d2p;
-  logic        cio_spi_host0_sck_en_d2p;
-  logic        cio_spi_host0_csb_d2p;
-  logic        cio_spi_host0_csb_en_d2p;
-  logic [3:0]  cio_spi_host0_sd_d2p;
-  logic [3:0]  cio_spi_host0_sd_en_d2p;
-  // spi_host1
-  logic [3:0]  cio_spi_host1_sd_p2d;
-  logic        cio_spi_host1_sck_d2p;
-  logic        cio_spi_host1_sck_en_d2p;
-  logic        cio_spi_host1_csb_d2p;
-  logic        cio_spi_host1_csb_en_d2p;
-  logic [3:0]  cio_spi_host1_sd_d2p;
-  logic [3:0]  cio_spi_host1_sd_en_d2p;
   // i2c0
   logic        cio_i2c0_sda_p2d;
   logic        cio_i2c0_scl_p2d;
@@ -300,6 +284,22 @@
   logic [7:0]  cio_otp_ctrl_test_en_d2p;
   // lc_ctrl
   // alert_handler
+  // spi_host0
+  logic [3:0]  cio_spi_host0_sd_p2d;
+  logic        cio_spi_host0_sck_d2p;
+  logic        cio_spi_host0_sck_en_d2p;
+  logic        cio_spi_host0_csb_d2p;
+  logic        cio_spi_host0_csb_en_d2p;
+  logic [3:0]  cio_spi_host0_sd_d2p;
+  logic [3:0]  cio_spi_host0_sd_en_d2p;
+  // spi_host1
+  logic [3:0]  cio_spi_host1_sd_p2d;
+  logic        cio_spi_host1_sck_d2p;
+  logic        cio_spi_host1_sck_en_d2p;
+  logic        cio_spi_host1_csb_d2p;
+  logic        cio_spi_host1_csb_en_d2p;
+  logic [3:0]  cio_spi_host1_sd_d2p;
+  logic [3:0]  cio_spi_host1_sd_en_d2p;
   // pwrmgr_aon
   // rstmgr_aon
   // clkmgr_aon
@@ -401,10 +401,6 @@
   logic intr_spi_device_rx_overflow;
   logic intr_spi_device_tx_underflow;
   logic intr_spi_device_tpm_header_not_empty;
-  logic intr_spi_host0_error;
-  logic intr_spi_host0_spi_event;
-  logic intr_spi_host1_error;
-  logic intr_spi_host1_spi_event;
   logic intr_i2c0_fmt_watermark;
   logic intr_i2c0_rx_watermark;
   logic intr_i2c0_fmt_overflow;
@@ -479,6 +475,10 @@
   logic intr_alert_handler_classb;
   logic intr_alert_handler_classc;
   logic intr_alert_handler_classd;
+  logic intr_spi_host0_error;
+  logic intr_spi_host0_spi_event;
+  logic intr_spi_host1_error;
+  logic intr_spi_host1_spi_event;
   logic intr_pwrmgr_aon_wakeup;
   logic intr_sysrst_ctrl_aon_sysrst_ctrl;
   logic intr_adc_ctrl_aon_debug_cable;
@@ -622,6 +622,10 @@
   tlul_pkg::tl_d2h_t       rom_ctrl_regs_tl_rsp;
   tlul_pkg::tl_h2d_t       main_tl_peri_req;
   tlul_pkg::tl_d2h_t       main_tl_peri_rsp;
+  tlul_pkg::tl_h2d_t       spi_host0_tl_req;
+  tlul_pkg::tl_d2h_t       spi_host0_tl_rsp;
+  tlul_pkg::tl_h2d_t       spi_host1_tl_req;
+  tlul_pkg::tl_d2h_t       spi_host1_tl_rsp;
   tlul_pkg::tl_h2d_t       flash_ctrl_core_tl_req;
   tlul_pkg::tl_d2h_t       flash_ctrl_core_tl_rsp;
   tlul_pkg::tl_h2d_t       flash_ctrl_prim_tl_req;
@@ -676,10 +680,6 @@
   tlul_pkg::tl_d2h_t       gpio_tl_rsp;
   tlul_pkg::tl_h2d_t       spi_device_tl_req;
   tlul_pkg::tl_d2h_t       spi_device_tl_rsp;
-  tlul_pkg::tl_h2d_t       spi_host0_tl_req;
-  tlul_pkg::tl_d2h_t       spi_host0_tl_rsp;
-  tlul_pkg::tl_h2d_t       spi_host1_tl_req;
-  tlul_pkg::tl_d2h_t       spi_host1_tl_rsp;
   tlul_pkg::tl_h2d_t       rv_timer_tl_req;
   tlul_pkg::tl_d2h_t       rv_timer_tl_rsp;
   tlul_pkg::tl_h2d_t       usbdev_tl_req;
@@ -816,30 +816,30 @@
   // peri_spi_device_0
   assign lpg_cg_en[1] = clkmgr_aon_cg_en.io_div4_peri;
   assign lpg_rst_en[1] = rstmgr_aon_rst_en.spi_device[rstmgr_pkg::Domain0Sel];
-  // peri_spi_host0_0
-  assign lpg_cg_en[2] = clkmgr_aon_cg_en.io_peri;
-  assign lpg_rst_en[2] = rstmgr_aon_rst_en.spi_host0[rstmgr_pkg::Domain0Sel];
-  // peri_spi_host1_0
-  assign lpg_cg_en[3] = clkmgr_aon_cg_en.io_div2_peri;
-  assign lpg_rst_en[3] = rstmgr_aon_rst_en.spi_host1[rstmgr_pkg::Domain0Sel];
   // peri_i2c0_0
-  assign lpg_cg_en[4] = clkmgr_aon_cg_en.io_div4_peri;
-  assign lpg_rst_en[4] = rstmgr_aon_rst_en.i2c0[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[2] = clkmgr_aon_cg_en.io_div4_peri;
+  assign lpg_rst_en[2] = rstmgr_aon_rst_en.i2c0[rstmgr_pkg::Domain0Sel];
   // peri_i2c1_0
-  assign lpg_cg_en[5] = clkmgr_aon_cg_en.io_div4_peri;
-  assign lpg_rst_en[5] = rstmgr_aon_rst_en.i2c1[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[3] = clkmgr_aon_cg_en.io_div4_peri;
+  assign lpg_rst_en[3] = rstmgr_aon_rst_en.i2c1[rstmgr_pkg::Domain0Sel];
   // peri_i2c2_0
-  assign lpg_cg_en[6] = clkmgr_aon_cg_en.io_div4_peri;
-  assign lpg_rst_en[6] = rstmgr_aon_rst_en.i2c2[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[4] = clkmgr_aon_cg_en.io_div4_peri;
+  assign lpg_rst_en[4] = rstmgr_aon_rst_en.i2c2[rstmgr_pkg::Domain0Sel];
   // timers_sys_io_div4_0
-  assign lpg_cg_en[7] = clkmgr_aon_cg_en.io_div4_timers;
-  assign lpg_rst_en[7] = rstmgr_aon_rst_en.sys_io_div4[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[5] = clkmgr_aon_cg_en.io_div4_timers;
+  assign lpg_rst_en[5] = rstmgr_aon_rst_en.sys_io_div4[rstmgr_pkg::Domain0Sel];
   // peri_usb_0
-  assign lpg_cg_en[8] = clkmgr_aon_cg_en.io_div4_peri;
-  assign lpg_rst_en[8] = rstmgr_aon_rst_en.usb[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[6] = clkmgr_aon_cg_en.io_div4_peri;
+  assign lpg_rst_en[6] = rstmgr_aon_rst_en.usb[rstmgr_pkg::Domain0Sel];
   // secure_lc_io_div4_0
-  assign lpg_cg_en[9] = clkmgr_aon_cg_en.io_div4_secure;
-  assign lpg_rst_en[9] = rstmgr_aon_rst_en.lc_io_div4[rstmgr_pkg::Domain0Sel];
+  assign lpg_cg_en[7] = clkmgr_aon_cg_en.io_div4_secure;
+  assign lpg_rst_en[7] = rstmgr_aon_rst_en.lc_io_div4[rstmgr_pkg::Domain0Sel];
+  // peri_spi_host0_0
+  assign lpg_cg_en[8] = clkmgr_aon_cg_en.io_peri;
+  assign lpg_rst_en[8] = rstmgr_aon_rst_en.spi_host0[rstmgr_pkg::Domain0Sel];
+  // peri_spi_host1_0
+  assign lpg_cg_en[9] = clkmgr_aon_cg_en.io_div2_peri;
+  assign lpg_rst_en[9] = rstmgr_aon_rst_en.spi_host1[rstmgr_pkg::Domain0Sel];
   // powerup_por_io_div4_Aon
   assign lpg_cg_en[10] = clkmgr_aon_cg_en.io_div4_powerup;
   assign lpg_rst_en[10] = rstmgr_aon_rst_en.por_io_div4[rstmgr_pkg::DomainAonSel];
@@ -1169,72 +1169,8 @@
       .scan_clk_i (clkmgr_aon_clocks.clk_io_div2_peri),
       .rst_ni (rstmgr_aon_resets.rst_spi_device_n[rstmgr_pkg::Domain0Sel])
   );
-  spi_host #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[6:6])
-  ) u_spi_host0 (
-
-      // Input
-      .cio_sd_i     (cio_spi_host0_sd_p2d),
-
-      // Output
-      .cio_sck_o    (cio_spi_host0_sck_d2p),
-      .cio_sck_en_o (cio_spi_host0_sck_en_d2p),
-      .cio_csb_o    (cio_spi_host0_csb_d2p),
-      .cio_csb_en_o (cio_spi_host0_csb_en_d2p),
-      .cio_sd_o     (cio_spi_host0_sd_d2p),
-      .cio_sd_en_o  (cio_spi_host0_sd_en_d2p),
-
-      // Interrupt
-      .intr_error_o     (intr_spi_host0_error),
-      .intr_spi_event_o (intr_spi_host0_spi_event),
-      // [6]: fatal_fault
-      .alert_tx_o  ( alert_tx[6:6] ),
-      .alert_rx_i  ( alert_rx[6:6] ),
-
-      // Inter-module signals
-      .passthrough_i(spi_device_passthrough_req),
-      .passthrough_o(spi_device_passthrough_rsp),
-      .tl_i(spi_host0_tl_req),
-      .tl_o(spi_host0_tl_rsp),
-
-      // Clock and reset connections
-      .clk_i (clkmgr_aon_clocks.clk_io_peri),
-      .rst_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel])
-  );
-  spi_host #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[7:7])
-  ) u_spi_host1 (
-
-      // Input
-      .cio_sd_i     (cio_spi_host1_sd_p2d),
-
-      // Output
-      .cio_sck_o    (cio_spi_host1_sck_d2p),
-      .cio_sck_en_o (cio_spi_host1_sck_en_d2p),
-      .cio_csb_o    (cio_spi_host1_csb_d2p),
-      .cio_csb_en_o (cio_spi_host1_csb_en_d2p),
-      .cio_sd_o     (cio_spi_host1_sd_d2p),
-      .cio_sd_en_o  (cio_spi_host1_sd_en_d2p),
-
-      // Interrupt
-      .intr_error_o     (intr_spi_host1_error),
-      .intr_spi_event_o (intr_spi_host1_spi_event),
-      // [7]: fatal_fault
-      .alert_tx_o  ( alert_tx[7:7] ),
-      .alert_rx_i  ( alert_rx[7:7] ),
-
-      // Inter-module signals
-      .passthrough_i(spi_device_pkg::PASSTHROUGH_REQ_DEFAULT),
-      .passthrough_o(),
-      .tl_i(spi_host1_tl_req),
-      .tl_o(spi_host1_tl_rsp),
-
-      // Clock and reset connections
-      .clk_i (clkmgr_aon_clocks.clk_io_div2_peri),
-      .rst_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel])
-  );
   i2c #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[8:8])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[6:6])
   ) u_i2c0 (
 
       // Input
@@ -1264,9 +1200,9 @@
       .intr_acq_overflow_o     (intr_i2c0_acq_overflow),
       .intr_ack_stop_o         (intr_i2c0_ack_stop),
       .intr_host_timeout_o     (intr_i2c0_host_timeout),
-      // [8]: fatal_fault
-      .alert_tx_o  ( alert_tx[8:8] ),
-      .alert_rx_i  ( alert_rx[8:8] ),
+      // [6]: fatal_fault
+      .alert_tx_o  ( alert_tx[6:6] ),
+      .alert_rx_i  ( alert_rx[6:6] ),
 
       // Inter-module signals
       .tl_i(i2c0_tl_req),
@@ -1277,7 +1213,7 @@
       .rst_ni (rstmgr_aon_resets.rst_i2c0_n[rstmgr_pkg::Domain0Sel])
   );
   i2c #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[9:9])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[7:7])
   ) u_i2c1 (
 
       // Input
@@ -1307,9 +1243,9 @@
       .intr_acq_overflow_o     (intr_i2c1_acq_overflow),
       .intr_ack_stop_o         (intr_i2c1_ack_stop),
       .intr_host_timeout_o     (intr_i2c1_host_timeout),
-      // [9]: fatal_fault
-      .alert_tx_o  ( alert_tx[9:9] ),
-      .alert_rx_i  ( alert_rx[9:9] ),
+      // [7]: fatal_fault
+      .alert_tx_o  ( alert_tx[7:7] ),
+      .alert_rx_i  ( alert_rx[7:7] ),
 
       // Inter-module signals
       .tl_i(i2c1_tl_req),
@@ -1320,7 +1256,7 @@
       .rst_ni (rstmgr_aon_resets.rst_i2c1_n[rstmgr_pkg::Domain0Sel])
   );
   i2c #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[10:10])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[8:8])
   ) u_i2c2 (
 
       // Input
@@ -1350,9 +1286,9 @@
       .intr_acq_overflow_o     (intr_i2c2_acq_overflow),
       .intr_ack_stop_o         (intr_i2c2_ack_stop),
       .intr_host_timeout_o     (intr_i2c2_host_timeout),
-      // [10]: fatal_fault
-      .alert_tx_o  ( alert_tx[10:10] ),
-      .alert_rx_i  ( alert_rx[10:10] ),
+      // [8]: fatal_fault
+      .alert_tx_o  ( alert_tx[8:8] ),
+      .alert_rx_i  ( alert_rx[8:8] ),
 
       // Inter-module signals
       .tl_i(i2c2_tl_req),
@@ -1363,7 +1299,7 @@
       .rst_ni (rstmgr_aon_resets.rst_i2c2_n[rstmgr_pkg::Domain0Sel])
   );
   pattgen #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[11:11])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[9:9])
   ) u_pattgen (
 
       // Output
@@ -1379,9 +1315,9 @@
       // Interrupt
       .intr_done_ch0_o (intr_pattgen_done_ch0),
       .intr_done_ch1_o (intr_pattgen_done_ch1),
-      // [11]: fatal_fault
-      .alert_tx_o  ( alert_tx[11:11] ),
-      .alert_rx_i  ( alert_rx[11:11] ),
+      // [9]: fatal_fault
+      .alert_tx_o  ( alert_tx[9:9] ),
+      .alert_rx_i  ( alert_rx[9:9] ),
 
       // Inter-module signals
       .tl_i(pattgen_tl_req),
@@ -1392,14 +1328,14 @@
       .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
   );
   rv_timer #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[12:12])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[10:10])
   ) u_rv_timer (
 
       // Interrupt
       .intr_timer_expired_hart0_timer0_o (intr_rv_timer_timer_expired_hart0_timer0),
-      // [12]: fatal_fault
-      .alert_tx_o  ( alert_tx[12:12] ),
-      .alert_rx_i  ( alert_rx[12:12] ),
+      // [10]: fatal_fault
+      .alert_tx_o  ( alert_tx[10:10] ),
+      .alert_rx_i  ( alert_rx[10:10] ),
 
       // Inter-module signals
       .tl_i(rv_timer_tl_req),
@@ -1410,7 +1346,7 @@
       .rst_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
   );
   usbdev #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[13:13])
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[11:11])
   ) u_usbdev (
 
       // Input
@@ -1457,9 +1393,9 @@
       .intr_frame_o           (intr_usbdev_frame),
       .intr_connected_o       (intr_usbdev_connected),
       .intr_link_out_err_o    (intr_usbdev_link_out_err),
-      // [13]: fatal_fault
-      .alert_tx_o  ( alert_tx[13:13] ),
-      .alert_rx_i  ( alert_rx[13:13] ),
+      // [11]: fatal_fault
+      .alert_tx_o  ( alert_tx[11:11] ),
+      .alert_rx_i  ( alert_rx[11:11] ),
 
       // Inter-module signals
       .usb_ref_val_o(usbdev_usb_ref_val_o),
@@ -1482,7 +1418,7 @@
       .rst_usb_48mhz_ni (rstmgr_aon_resets.rst_usbif_n[rstmgr_pkg::Domain0Sel])
   );
   otp_ctrl #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[16:14]),
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[14:12]),
     .MemInitFile(OtpCtrlMemInitFile),
     .RndCnstLfsrSeed(RndCnstOtpCtrlLfsrSeed),
     .RndCnstLfsrPerm(RndCnstOtpCtrlLfsrPerm)
@@ -1495,11 +1431,11 @@
       // Interrupt
       .intr_otp_operation_done_o (intr_otp_ctrl_otp_operation_done),
       .intr_otp_error_o          (intr_otp_ctrl_otp_error),
-      // [14]: fatal_macro_error
-      // [15]: fatal_check_error
-      // [16]: fatal_bus_integ_error
-      .alert_tx_o  ( alert_tx[16:14] ),
-      .alert_rx_i  ( alert_rx[16:14] ),
+      // [12]: fatal_macro_error
+      // [13]: fatal_check_error
+      // [14]: fatal_bus_integ_error
+      .alert_tx_o  ( alert_tx[14:12] ),
+      .alert_rx_i  ( alert_rx[14:12] ),
 
       // Inter-module signals
       .otp_ext_voltage_h_io(otp_ext_voltage_h_io),
@@ -1543,16 +1479,16 @@
       .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
   );
   lc_ctrl #(
-    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[19:17]),
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[17:15]),
     .RndCnstLcKeymgrDivInvalid(RndCnstLcCtrlLcKeymgrDivInvalid),
     .RndCnstLcKeymgrDivTestDevRma(RndCnstLcCtrlLcKeymgrDivTestDevRma),
     .RndCnstLcKeymgrDivProduction(RndCnstLcCtrlLcKeymgrDivProduction)
   ) u_lc_ctrl (
-      // [17]: fatal_prog_error
-      // [18]: fatal_state_error
-      // [19]: fatal_bus_integ_error
-      .alert_tx_o  ( alert_tx[19:17] ),
-      .alert_rx_i  ( alert_rx[19:17] ),
+      // [15]: fatal_prog_error
+      // [16]: fatal_state_error
+      // [17]: fatal_bus_integ_error
+      .alert_tx_o  ( alert_tx[17:15] ),
+      .alert_rx_i  ( alert_rx[17:15] ),
 
       // Inter-module signals
       .jtag_i(pinmux_aon_lc_jtag_req),
@@ -1635,6 +1571,70 @@
       .rst_ni (rstmgr_aon_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]),
       .rst_edn_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
   );
+  spi_host #(
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[18:18])
+  ) u_spi_host0 (
+
+      // Input
+      .cio_sd_i     (cio_spi_host0_sd_p2d),
+
+      // Output
+      .cio_sck_o    (cio_spi_host0_sck_d2p),
+      .cio_sck_en_o (cio_spi_host0_sck_en_d2p),
+      .cio_csb_o    (cio_spi_host0_csb_d2p),
+      .cio_csb_en_o (cio_spi_host0_csb_en_d2p),
+      .cio_sd_o     (cio_spi_host0_sd_d2p),
+      .cio_sd_en_o  (cio_spi_host0_sd_en_d2p),
+
+      // Interrupt
+      .intr_error_o     (intr_spi_host0_error),
+      .intr_spi_event_o (intr_spi_host0_spi_event),
+      // [18]: fatal_fault
+      .alert_tx_o  ( alert_tx[18:18] ),
+      .alert_rx_i  ( alert_rx[18:18] ),
+
+      // Inter-module signals
+      .passthrough_i(spi_device_passthrough_req),
+      .passthrough_o(spi_device_passthrough_rsp),
+      .tl_i(spi_host0_tl_req),
+      .tl_o(spi_host0_tl_rsp),
+
+      // Clock and reset connections
+      .clk_i (clkmgr_aon_clocks.clk_io_peri),
+      .rst_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel])
+  );
+  spi_host #(
+    .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[19:19])
+  ) u_spi_host1 (
+
+      // Input
+      .cio_sd_i     (cio_spi_host1_sd_p2d),
+
+      // Output
+      .cio_sck_o    (cio_spi_host1_sck_d2p),
+      .cio_sck_en_o (cio_spi_host1_sck_en_d2p),
+      .cio_csb_o    (cio_spi_host1_csb_d2p),
+      .cio_csb_en_o (cio_spi_host1_csb_en_d2p),
+      .cio_sd_o     (cio_spi_host1_sd_d2p),
+      .cio_sd_en_o  (cio_spi_host1_sd_en_d2p),
+
+      // Interrupt
+      .intr_error_o     (intr_spi_host1_error),
+      .intr_spi_event_o (intr_spi_host1_spi_event),
+      // [19]: fatal_fault
+      .alert_tx_o  ( alert_tx[19:19] ),
+      .alert_rx_i  ( alert_rx[19:19] ),
+
+      // Inter-module signals
+      .passthrough_i(spi_device_pkg::PASSTHROUGH_REQ_DEFAULT),
+      .passthrough_o(),
+      .tl_i(spi_host1_tl_req),
+      .tl_o(spi_host1_tl_rsp),
+
+      // Clock and reset connections
+      .clk_i (clkmgr_aon_clocks.clk_io_div2_peri),
+      .rst_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel])
+  );
   pwrmgr #(
     .AlertAsyncOn(alert_handler_reg_pkg::AsyncOn[20:20])
   ) u_pwrmgr_aon (
@@ -2549,84 +2549,84 @@
       intr_adc_ctrl_aon_debug_cable, // IDs [152 +: 1]
       intr_sysrst_ctrl_aon_sysrst_ctrl, // IDs [151 +: 1]
       intr_pwrmgr_aon_wakeup, // IDs [150 +: 1]
-      intr_alert_handler_classd, // IDs [149 +: 1]
-      intr_alert_handler_classc, // IDs [148 +: 1]
-      intr_alert_handler_classb, // IDs [147 +: 1]
-      intr_alert_handler_classa, // IDs [146 +: 1]
-      intr_otp_ctrl_otp_error, // IDs [145 +: 1]
-      intr_otp_ctrl_otp_operation_done, // IDs [144 +: 1]
-      intr_usbdev_link_out_err, // IDs [143 +: 1]
-      intr_usbdev_connected, // IDs [142 +: 1]
-      intr_usbdev_frame, // IDs [141 +: 1]
-      intr_usbdev_rx_bitstuff_err, // IDs [140 +: 1]
-      intr_usbdev_rx_pid_err, // IDs [139 +: 1]
-      intr_usbdev_rx_crc_err, // IDs [138 +: 1]
-      intr_usbdev_link_in_err, // IDs [137 +: 1]
-      intr_usbdev_av_overflow, // IDs [136 +: 1]
-      intr_usbdev_rx_full, // IDs [135 +: 1]
-      intr_usbdev_av_empty, // IDs [134 +: 1]
-      intr_usbdev_link_resume, // IDs [133 +: 1]
-      intr_usbdev_link_suspend, // IDs [132 +: 1]
-      intr_usbdev_link_reset, // IDs [131 +: 1]
-      intr_usbdev_host_lost, // IDs [130 +: 1]
-      intr_usbdev_disconnected, // IDs [129 +: 1]
-      intr_usbdev_pkt_sent, // IDs [128 +: 1]
-      intr_usbdev_pkt_received, // IDs [127 +: 1]
-      intr_rv_timer_timer_expired_hart0_timer0, // IDs [126 +: 1]
-      intr_pattgen_done_ch1, // IDs [125 +: 1]
-      intr_pattgen_done_ch0, // IDs [124 +: 1]
-      intr_i2c2_host_timeout, // IDs [123 +: 1]
-      intr_i2c2_ack_stop, // IDs [122 +: 1]
-      intr_i2c2_acq_overflow, // IDs [121 +: 1]
-      intr_i2c2_tx_overflow, // IDs [120 +: 1]
-      intr_i2c2_tx_nonempty, // IDs [119 +: 1]
-      intr_i2c2_tx_empty, // IDs [118 +: 1]
-      intr_i2c2_trans_complete, // IDs [117 +: 1]
-      intr_i2c2_sda_unstable, // IDs [116 +: 1]
-      intr_i2c2_stretch_timeout, // IDs [115 +: 1]
-      intr_i2c2_sda_interference, // IDs [114 +: 1]
-      intr_i2c2_scl_interference, // IDs [113 +: 1]
-      intr_i2c2_nak, // IDs [112 +: 1]
-      intr_i2c2_rx_overflow, // IDs [111 +: 1]
-      intr_i2c2_fmt_overflow, // IDs [110 +: 1]
-      intr_i2c2_rx_watermark, // IDs [109 +: 1]
-      intr_i2c2_fmt_watermark, // IDs [108 +: 1]
-      intr_i2c1_host_timeout, // IDs [107 +: 1]
-      intr_i2c1_ack_stop, // IDs [106 +: 1]
-      intr_i2c1_acq_overflow, // IDs [105 +: 1]
-      intr_i2c1_tx_overflow, // IDs [104 +: 1]
-      intr_i2c1_tx_nonempty, // IDs [103 +: 1]
-      intr_i2c1_tx_empty, // IDs [102 +: 1]
-      intr_i2c1_trans_complete, // IDs [101 +: 1]
-      intr_i2c1_sda_unstable, // IDs [100 +: 1]
-      intr_i2c1_stretch_timeout, // IDs [99 +: 1]
-      intr_i2c1_sda_interference, // IDs [98 +: 1]
-      intr_i2c1_scl_interference, // IDs [97 +: 1]
-      intr_i2c1_nak, // IDs [96 +: 1]
-      intr_i2c1_rx_overflow, // IDs [95 +: 1]
-      intr_i2c1_fmt_overflow, // IDs [94 +: 1]
-      intr_i2c1_rx_watermark, // IDs [93 +: 1]
-      intr_i2c1_fmt_watermark, // IDs [92 +: 1]
-      intr_i2c0_host_timeout, // IDs [91 +: 1]
-      intr_i2c0_ack_stop, // IDs [90 +: 1]
-      intr_i2c0_acq_overflow, // IDs [89 +: 1]
-      intr_i2c0_tx_overflow, // IDs [88 +: 1]
-      intr_i2c0_tx_nonempty, // IDs [87 +: 1]
-      intr_i2c0_tx_empty, // IDs [86 +: 1]
-      intr_i2c0_trans_complete, // IDs [85 +: 1]
-      intr_i2c0_sda_unstable, // IDs [84 +: 1]
-      intr_i2c0_stretch_timeout, // IDs [83 +: 1]
-      intr_i2c0_sda_interference, // IDs [82 +: 1]
-      intr_i2c0_scl_interference, // IDs [81 +: 1]
-      intr_i2c0_nak, // IDs [80 +: 1]
-      intr_i2c0_rx_overflow, // IDs [79 +: 1]
-      intr_i2c0_fmt_overflow, // IDs [78 +: 1]
-      intr_i2c0_rx_watermark, // IDs [77 +: 1]
-      intr_i2c0_fmt_watermark, // IDs [76 +: 1]
-      intr_spi_host1_spi_event, // IDs [75 +: 1]
-      intr_spi_host1_error, // IDs [74 +: 1]
-      intr_spi_host0_spi_event, // IDs [73 +: 1]
-      intr_spi_host0_error, // IDs [72 +: 1]
+      intr_spi_host1_spi_event, // IDs [149 +: 1]
+      intr_spi_host1_error, // IDs [148 +: 1]
+      intr_spi_host0_spi_event, // IDs [147 +: 1]
+      intr_spi_host0_error, // IDs [146 +: 1]
+      intr_alert_handler_classd, // IDs [145 +: 1]
+      intr_alert_handler_classc, // IDs [144 +: 1]
+      intr_alert_handler_classb, // IDs [143 +: 1]
+      intr_alert_handler_classa, // IDs [142 +: 1]
+      intr_otp_ctrl_otp_error, // IDs [141 +: 1]
+      intr_otp_ctrl_otp_operation_done, // IDs [140 +: 1]
+      intr_usbdev_link_out_err, // IDs [139 +: 1]
+      intr_usbdev_connected, // IDs [138 +: 1]
+      intr_usbdev_frame, // IDs [137 +: 1]
+      intr_usbdev_rx_bitstuff_err, // IDs [136 +: 1]
+      intr_usbdev_rx_pid_err, // IDs [135 +: 1]
+      intr_usbdev_rx_crc_err, // IDs [134 +: 1]
+      intr_usbdev_link_in_err, // IDs [133 +: 1]
+      intr_usbdev_av_overflow, // IDs [132 +: 1]
+      intr_usbdev_rx_full, // IDs [131 +: 1]
+      intr_usbdev_av_empty, // IDs [130 +: 1]
+      intr_usbdev_link_resume, // IDs [129 +: 1]
+      intr_usbdev_link_suspend, // IDs [128 +: 1]
+      intr_usbdev_link_reset, // IDs [127 +: 1]
+      intr_usbdev_host_lost, // IDs [126 +: 1]
+      intr_usbdev_disconnected, // IDs [125 +: 1]
+      intr_usbdev_pkt_sent, // IDs [124 +: 1]
+      intr_usbdev_pkt_received, // IDs [123 +: 1]
+      intr_rv_timer_timer_expired_hart0_timer0, // IDs [122 +: 1]
+      intr_pattgen_done_ch1, // IDs [121 +: 1]
+      intr_pattgen_done_ch0, // IDs [120 +: 1]
+      intr_i2c2_host_timeout, // IDs [119 +: 1]
+      intr_i2c2_ack_stop, // IDs [118 +: 1]
+      intr_i2c2_acq_overflow, // IDs [117 +: 1]
+      intr_i2c2_tx_overflow, // IDs [116 +: 1]
+      intr_i2c2_tx_nonempty, // IDs [115 +: 1]
+      intr_i2c2_tx_empty, // IDs [114 +: 1]
+      intr_i2c2_trans_complete, // IDs [113 +: 1]
+      intr_i2c2_sda_unstable, // IDs [112 +: 1]
+      intr_i2c2_stretch_timeout, // IDs [111 +: 1]
+      intr_i2c2_sda_interference, // IDs [110 +: 1]
+      intr_i2c2_scl_interference, // IDs [109 +: 1]
+      intr_i2c2_nak, // IDs [108 +: 1]
+      intr_i2c2_rx_overflow, // IDs [107 +: 1]
+      intr_i2c2_fmt_overflow, // IDs [106 +: 1]
+      intr_i2c2_rx_watermark, // IDs [105 +: 1]
+      intr_i2c2_fmt_watermark, // IDs [104 +: 1]
+      intr_i2c1_host_timeout, // IDs [103 +: 1]
+      intr_i2c1_ack_stop, // IDs [102 +: 1]
+      intr_i2c1_acq_overflow, // IDs [101 +: 1]
+      intr_i2c1_tx_overflow, // IDs [100 +: 1]
+      intr_i2c1_tx_nonempty, // IDs [99 +: 1]
+      intr_i2c1_tx_empty, // IDs [98 +: 1]
+      intr_i2c1_trans_complete, // IDs [97 +: 1]
+      intr_i2c1_sda_unstable, // IDs [96 +: 1]
+      intr_i2c1_stretch_timeout, // IDs [95 +: 1]
+      intr_i2c1_sda_interference, // IDs [94 +: 1]
+      intr_i2c1_scl_interference, // IDs [93 +: 1]
+      intr_i2c1_nak, // IDs [92 +: 1]
+      intr_i2c1_rx_overflow, // IDs [91 +: 1]
+      intr_i2c1_fmt_overflow, // IDs [90 +: 1]
+      intr_i2c1_rx_watermark, // IDs [89 +: 1]
+      intr_i2c1_fmt_watermark, // IDs [88 +: 1]
+      intr_i2c0_host_timeout, // IDs [87 +: 1]
+      intr_i2c0_ack_stop, // IDs [86 +: 1]
+      intr_i2c0_acq_overflow, // IDs [85 +: 1]
+      intr_i2c0_tx_overflow, // IDs [84 +: 1]
+      intr_i2c0_tx_nonempty, // IDs [83 +: 1]
+      intr_i2c0_tx_empty, // IDs [82 +: 1]
+      intr_i2c0_trans_complete, // IDs [81 +: 1]
+      intr_i2c0_sda_unstable, // IDs [80 +: 1]
+      intr_i2c0_stretch_timeout, // IDs [79 +: 1]
+      intr_i2c0_sda_interference, // IDs [78 +: 1]
+      intr_i2c0_scl_interference, // IDs [77 +: 1]
+      intr_i2c0_nak, // IDs [76 +: 1]
+      intr_i2c0_rx_overflow, // IDs [75 +: 1]
+      intr_i2c0_fmt_overflow, // IDs [74 +: 1]
+      intr_i2c0_rx_watermark, // IDs [73 +: 1]
+      intr_i2c0_fmt_watermark, // IDs [72 +: 1]
       intr_spi_device_tpm_header_not_empty, // IDs [71 +: 1]
       intr_spi_device_tx_underflow, // IDs [70 +: 1]
       intr_spi_device_rx_overflow, // IDs [69 +: 1]
@@ -2674,8 +2674,12 @@
   xbar_main u_xbar_main (
     .clk_main_i (clkmgr_aon_clocks.clk_main_infra),
     .clk_fixed_i (clkmgr_aon_clocks.clk_io_div4_infra),
+    .clk_spi_host0_i (clkmgr_aon_clocks.clk_io_infra),
+    .clk_spi_host1_i (clkmgr_aon_clocks.clk_io_div2_infra),
     .rst_main_ni (rstmgr_aon_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]),
     .rst_fixed_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
+    .rst_spi_host0_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel]),
+    .rst_spi_host1_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel]),
 
     // port: tl_rv_core_ibex__corei
     .tl_rv_core_ibex__corei_i(main_tl_rv_core_ibex__corei_req),
@@ -2709,6 +2713,14 @@
     .tl_peri_o(main_tl_peri_req),
     .tl_peri_i(main_tl_peri_rsp),
 
+    // port: tl_spi_host0
+    .tl_spi_host0_o(spi_host0_tl_req),
+    .tl_spi_host0_i(spi_host0_tl_rsp),
+
+    // port: tl_spi_host1
+    .tl_spi_host1_o(spi_host1_tl_req),
+    .tl_spi_host1_i(spi_host1_tl_rsp),
+
     // port: tl_flash_ctrl__core
     .tl_flash_ctrl__core_o(flash_ctrl_core_tl_req),
     .tl_flash_ctrl__core_i(flash_ctrl_core_tl_rsp),
@@ -2778,11 +2790,7 @@
   );
   xbar_peri u_xbar_peri (
     .clk_peri_i (clkmgr_aon_clocks.clk_io_div4_infra),
-    .clk_spi_host0_i (clkmgr_aon_clocks.clk_io_infra),
-    .clk_spi_host1_i (clkmgr_aon_clocks.clk_io_div2_infra),
     .rst_peri_ni (rstmgr_aon_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]),
-    .rst_spi_host0_ni (rstmgr_aon_resets.rst_spi_host0_n[rstmgr_pkg::Domain0Sel]),
-    .rst_spi_host1_ni (rstmgr_aon_resets.rst_spi_host1_n[rstmgr_pkg::Domain0Sel]),
 
     // port: tl_main
     .tl_main_i(main_tl_peri_req),
@@ -2832,14 +2840,6 @@
     .tl_spi_device_o(spi_device_tl_req),
     .tl_spi_device_i(spi_device_tl_rsp),
 
-    // port: tl_spi_host0
-    .tl_spi_host0_o(spi_host0_tl_req),
-    .tl_spi_host0_i(spi_host0_tl_rsp),
-
-    // port: tl_spi_host1
-    .tl_spi_host1_o(spi_host1_tl_req),
-    .tl_spi_host1_i(spi_host1_tl_rsp),
-
     // port: tl_rv_timer
     .tl_rv_timer_o(rv_timer_tl_req),
     .tl_rv_timer_i(rv_timer_tl_rsp),
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index d6297c7..2385491 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -71,26 +71,6 @@
   parameter int unsigned TOP_EARLGREY_SPI_DEVICE_SIZE_BYTES = 32'h2000;
 
   /**
-   * Peripheral base address for spi_host0 in top earlgrey.
-   */
-  parameter int unsigned TOP_EARLGREY_SPI_HOST0_BASE_ADDR = 32'h40060000;
-
-  /**
-   * Peripheral size in bytes for spi_host0 in top earlgrey.
-   */
-  parameter int unsigned TOP_EARLGREY_SPI_HOST0_SIZE_BYTES = 32'h1000;
-
-  /**
-   * Peripheral base address for spi_host1 in top earlgrey.
-   */
-  parameter int unsigned TOP_EARLGREY_SPI_HOST1_BASE_ADDR = 32'h40070000;
-
-  /**
-   * Peripheral size in bytes for spi_host1 in top earlgrey.
-   */
-  parameter int unsigned TOP_EARLGREY_SPI_HOST1_SIZE_BYTES = 32'h1000;
-
-  /**
    * Peripheral base address for i2c0 in top earlgrey.
    */
   parameter int unsigned TOP_EARLGREY_I2C0_BASE_ADDR = 32'h40080000;
@@ -191,6 +171,26 @@
   parameter int unsigned TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES = 32'h1000;
 
   /**
+   * Peripheral base address for spi_host0 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_SPI_HOST0_BASE_ADDR = 32'h40300000;
+
+  /**
+   * Peripheral size in bytes for spi_host0 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_SPI_HOST0_SIZE_BYTES = 32'h1000;
+
+  /**
+   * Peripheral base address for spi_host1 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_SPI_HOST1_BASE_ADDR = 32'h40310000;
+
+  /**
+   * Peripheral size in bytes for spi_host1 in top earlgrey.
+   */
+  parameter int unsigned TOP_EARLGREY_SPI_HOST1_SIZE_BYTES = 32'h1000;
+
+  /**
    * Peripheral base address for pwrmgr_aon in top earlgrey.
    */
   parameter int unsigned TOP_EARLGREY_PWRMGR_AON_BASE_ADDR = 32'h40400000;
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.c b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
index dfc013f..41a4e06 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.c
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.c
@@ -84,10 +84,6 @@
   [kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow] = kTopEarlgreyPlicPeripheralSpiDevice,
   [kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow] = kTopEarlgreyPlicPeripheralSpiDevice,
   [kTopEarlgreyPlicIrqIdSpiDeviceTpmHeaderNotEmpty] = kTopEarlgreyPlicPeripheralSpiDevice,
-  [kTopEarlgreyPlicIrqIdSpiHost0Error] = kTopEarlgreyPlicPeripheralSpiHost0,
-  [kTopEarlgreyPlicIrqIdSpiHost0SpiEvent] = kTopEarlgreyPlicPeripheralSpiHost0,
-  [kTopEarlgreyPlicIrqIdSpiHost1Error] = kTopEarlgreyPlicPeripheralSpiHost1,
-  [kTopEarlgreyPlicIrqIdSpiHost1SpiEvent] = kTopEarlgreyPlicPeripheralSpiHost1,
   [kTopEarlgreyPlicIrqIdI2c0FmtWatermark] = kTopEarlgreyPlicPeripheralI2c0,
   [kTopEarlgreyPlicIrqIdI2c0RxWatermark] = kTopEarlgreyPlicPeripheralI2c0,
   [kTopEarlgreyPlicIrqIdI2c0FmtOverflow] = kTopEarlgreyPlicPeripheralI2c0,
@@ -162,6 +158,10 @@
   [kTopEarlgreyPlicIrqIdAlertHandlerClassb] = kTopEarlgreyPlicPeripheralAlertHandler,
   [kTopEarlgreyPlicIrqIdAlertHandlerClassc] = kTopEarlgreyPlicPeripheralAlertHandler,
   [kTopEarlgreyPlicIrqIdAlertHandlerClassd] = kTopEarlgreyPlicPeripheralAlertHandler,
+  [kTopEarlgreyPlicIrqIdSpiHost0Error] = kTopEarlgreyPlicPeripheralSpiHost0,
+  [kTopEarlgreyPlicIrqIdSpiHost0SpiEvent] = kTopEarlgreyPlicPeripheralSpiHost0,
+  [kTopEarlgreyPlicIrqIdSpiHost1Error] = kTopEarlgreyPlicPeripheralSpiHost1,
+  [kTopEarlgreyPlicIrqIdSpiHost1SpiEvent] = kTopEarlgreyPlicPeripheralSpiHost1,
   [kTopEarlgreyPlicIrqIdPwrmgrAonWakeup] = kTopEarlgreyPlicPeripheralPwrmgrAon,
   [kTopEarlgreyPlicIrqIdSysrstCtrlAonSysrstCtrl] = kTopEarlgreyPlicPeripheralSysrstCtrlAon,
   [kTopEarlgreyPlicIrqIdAdcCtrlAonDebugCable] = kTopEarlgreyPlicPeripheralAdcCtrlAon,
@@ -210,8 +210,6 @@
   [kTopEarlgreyAlertIdUart3FatalFault] = kTopEarlgreyAlertPeripheralUart3,
   [kTopEarlgreyAlertIdGpioFatalFault] = kTopEarlgreyAlertPeripheralGpio,
   [kTopEarlgreyAlertIdSpiDeviceFatalFault] = kTopEarlgreyAlertPeripheralSpiDevice,
-  [kTopEarlgreyAlertIdSpiHost0FatalFault] = kTopEarlgreyAlertPeripheralSpiHost0,
-  [kTopEarlgreyAlertIdSpiHost1FatalFault] = kTopEarlgreyAlertPeripheralSpiHost1,
   [kTopEarlgreyAlertIdI2c0FatalFault] = kTopEarlgreyAlertPeripheralI2c0,
   [kTopEarlgreyAlertIdI2c1FatalFault] = kTopEarlgreyAlertPeripheralI2c1,
   [kTopEarlgreyAlertIdI2c2FatalFault] = kTopEarlgreyAlertPeripheralI2c2,
@@ -224,6 +222,8 @@
   [kTopEarlgreyAlertIdLcCtrlFatalProgError] = kTopEarlgreyAlertPeripheralLcCtrl,
   [kTopEarlgreyAlertIdLcCtrlFatalStateError] = kTopEarlgreyAlertPeripheralLcCtrl,
   [kTopEarlgreyAlertIdLcCtrlFatalBusIntegError] = kTopEarlgreyAlertPeripheralLcCtrl,
+  [kTopEarlgreyAlertIdSpiHost0FatalFault] = kTopEarlgreyAlertPeripheralSpiHost0,
+  [kTopEarlgreyAlertIdSpiHost1FatalFault] = kTopEarlgreyAlertPeripheralSpiHost1,
   [kTopEarlgreyAlertIdPwrmgrAonFatalFault] = kTopEarlgreyAlertPeripheralPwrmgrAon,
   [kTopEarlgreyAlertIdRstmgrAonFatalFault] = kTopEarlgreyAlertPeripheralRstmgrAon,
   [kTopEarlgreyAlertIdClkmgrAonRecovFault] = kTopEarlgreyAlertPeripheralClkmgrAon,
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.h b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
index 9f1f71b..ff5cd44 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
@@ -134,42 +134,6 @@
 #define TOP_EARLGREY_SPI_DEVICE_SIZE_BYTES 0x2000u
 
 /**
- * Peripheral base address for spi_host0 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_SPI_HOST0_BASE_ADDR 0x40060000u
-
-/**
- * Peripheral size for spi_host0 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_SPI_HOST0_BASE_ADDR and
- * `TOP_EARLGREY_SPI_HOST0_BASE_ADDR + TOP_EARLGREY_SPI_HOST0_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_SPI_HOST0_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for spi_host1 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_SPI_HOST1_BASE_ADDR 0x40070000u
-
-/**
- * Peripheral size for spi_host1 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_SPI_HOST1_BASE_ADDR and
- * `TOP_EARLGREY_SPI_HOST1_BASE_ADDR + TOP_EARLGREY_SPI_HOST1_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_SPI_HOST1_SIZE_BYTES 0x1000u
-
-/**
  * Peripheral base address for i2c0 in top earlgrey.
  *
  * This should be used with #mmio_region_from_addr to access the memory-mapped
@@ -350,6 +314,42 @@
 #define TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES 0x1000u
 
 /**
+ * Peripheral base address for spi_host0 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_SPI_HOST0_BASE_ADDR 0x40300000u
+
+/**
+ * Peripheral size for spi_host0 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_SPI_HOST0_BASE_ADDR and
+ * `TOP_EARLGREY_SPI_HOST0_BASE_ADDR + TOP_EARLGREY_SPI_HOST0_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_SPI_HOST0_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for spi_host1 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_SPI_HOST1_BASE_ADDR 0x40310000u
+
+/**
+ * Peripheral size for spi_host1 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_SPI_HOST1_BASE_ADDR and
+ * `TOP_EARLGREY_SPI_HOST1_BASE_ADDR + TOP_EARLGREY_SPI_HOST1_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_SPI_HOST1_SIZE_BYTES 0x1000u
+
+/**
  * Peripheral base address for pwrmgr_aon in top earlgrey.
  *
  * This should be used with #mmio_region_from_addr to access the memory-mapped
@@ -981,16 +981,16 @@
   kTopEarlgreyPlicPeripheralUart3 = 4, /**< uart3 */
   kTopEarlgreyPlicPeripheralGpio = 5, /**< gpio */
   kTopEarlgreyPlicPeripheralSpiDevice = 6, /**< spi_device */
-  kTopEarlgreyPlicPeripheralSpiHost0 = 7, /**< spi_host0 */
-  kTopEarlgreyPlicPeripheralSpiHost1 = 8, /**< spi_host1 */
-  kTopEarlgreyPlicPeripheralI2c0 = 9, /**< i2c0 */
-  kTopEarlgreyPlicPeripheralI2c1 = 10, /**< i2c1 */
-  kTopEarlgreyPlicPeripheralI2c2 = 11, /**< i2c2 */
-  kTopEarlgreyPlicPeripheralPattgen = 12, /**< pattgen */
-  kTopEarlgreyPlicPeripheralRvTimer = 13, /**< rv_timer */
-  kTopEarlgreyPlicPeripheralUsbdev = 14, /**< usbdev */
-  kTopEarlgreyPlicPeripheralOtpCtrl = 15, /**< otp_ctrl */
-  kTopEarlgreyPlicPeripheralAlertHandler = 16, /**< alert_handler */
+  kTopEarlgreyPlicPeripheralI2c0 = 7, /**< i2c0 */
+  kTopEarlgreyPlicPeripheralI2c1 = 8, /**< i2c1 */
+  kTopEarlgreyPlicPeripheralI2c2 = 9, /**< i2c2 */
+  kTopEarlgreyPlicPeripheralPattgen = 10, /**< pattgen */
+  kTopEarlgreyPlicPeripheralRvTimer = 11, /**< rv_timer */
+  kTopEarlgreyPlicPeripheralUsbdev = 12, /**< usbdev */
+  kTopEarlgreyPlicPeripheralOtpCtrl = 13, /**< otp_ctrl */
+  kTopEarlgreyPlicPeripheralAlertHandler = 14, /**< alert_handler */
+  kTopEarlgreyPlicPeripheralSpiHost0 = 15, /**< spi_host0 */
+  kTopEarlgreyPlicPeripheralSpiHost1 = 16, /**< spi_host1 */
   kTopEarlgreyPlicPeripheralPwrmgrAon = 17, /**< pwrmgr_aon */
   kTopEarlgreyPlicPeripheralSysrstCtrlAon = 18, /**< sysrst_ctrl_aon */
   kTopEarlgreyPlicPeripheralAdcCtrlAon = 19, /**< adc_ctrl_aon */
@@ -1086,84 +1086,84 @@
   kTopEarlgreyPlicIrqIdSpiDeviceRxOverflow = 69, /**< spi_device_rx_overflow */
   kTopEarlgreyPlicIrqIdSpiDeviceTxUnderflow = 70, /**< spi_device_tx_underflow */
   kTopEarlgreyPlicIrqIdSpiDeviceTpmHeaderNotEmpty = 71, /**< spi_device_tpm_header_not_empty */
-  kTopEarlgreyPlicIrqIdSpiHost0Error = 72, /**< spi_host0_error */
-  kTopEarlgreyPlicIrqIdSpiHost0SpiEvent = 73, /**< spi_host0_spi_event */
-  kTopEarlgreyPlicIrqIdSpiHost1Error = 74, /**< spi_host1_error */
-  kTopEarlgreyPlicIrqIdSpiHost1SpiEvent = 75, /**< spi_host1_spi_event */
-  kTopEarlgreyPlicIrqIdI2c0FmtWatermark = 76, /**< i2c0_fmt_watermark */
-  kTopEarlgreyPlicIrqIdI2c0RxWatermark = 77, /**< i2c0_rx_watermark */
-  kTopEarlgreyPlicIrqIdI2c0FmtOverflow = 78, /**< i2c0_fmt_overflow */
-  kTopEarlgreyPlicIrqIdI2c0RxOverflow = 79, /**< i2c0_rx_overflow */
-  kTopEarlgreyPlicIrqIdI2c0Nak = 80, /**< i2c0_nak */
-  kTopEarlgreyPlicIrqIdI2c0SclInterference = 81, /**< i2c0_scl_interference */
-  kTopEarlgreyPlicIrqIdI2c0SdaInterference = 82, /**< i2c0_sda_interference */
-  kTopEarlgreyPlicIrqIdI2c0StretchTimeout = 83, /**< i2c0_stretch_timeout */
-  kTopEarlgreyPlicIrqIdI2c0SdaUnstable = 84, /**< i2c0_sda_unstable */
-  kTopEarlgreyPlicIrqIdI2c0TransComplete = 85, /**< i2c0_trans_complete */
-  kTopEarlgreyPlicIrqIdI2c0TxEmpty = 86, /**< i2c0_tx_empty */
-  kTopEarlgreyPlicIrqIdI2c0TxNonempty = 87, /**< i2c0_tx_nonempty */
-  kTopEarlgreyPlicIrqIdI2c0TxOverflow = 88, /**< i2c0_tx_overflow */
-  kTopEarlgreyPlicIrqIdI2c0AcqOverflow = 89, /**< i2c0_acq_overflow */
-  kTopEarlgreyPlicIrqIdI2c0AckStop = 90, /**< i2c0_ack_stop */
-  kTopEarlgreyPlicIrqIdI2c0HostTimeout = 91, /**< i2c0_host_timeout */
-  kTopEarlgreyPlicIrqIdI2c1FmtWatermark = 92, /**< i2c1_fmt_watermark */
-  kTopEarlgreyPlicIrqIdI2c1RxWatermark = 93, /**< i2c1_rx_watermark */
-  kTopEarlgreyPlicIrqIdI2c1FmtOverflow = 94, /**< i2c1_fmt_overflow */
-  kTopEarlgreyPlicIrqIdI2c1RxOverflow = 95, /**< i2c1_rx_overflow */
-  kTopEarlgreyPlicIrqIdI2c1Nak = 96, /**< i2c1_nak */
-  kTopEarlgreyPlicIrqIdI2c1SclInterference = 97, /**< i2c1_scl_interference */
-  kTopEarlgreyPlicIrqIdI2c1SdaInterference = 98, /**< i2c1_sda_interference */
-  kTopEarlgreyPlicIrqIdI2c1StretchTimeout = 99, /**< i2c1_stretch_timeout */
-  kTopEarlgreyPlicIrqIdI2c1SdaUnstable = 100, /**< i2c1_sda_unstable */
-  kTopEarlgreyPlicIrqIdI2c1TransComplete = 101, /**< i2c1_trans_complete */
-  kTopEarlgreyPlicIrqIdI2c1TxEmpty = 102, /**< i2c1_tx_empty */
-  kTopEarlgreyPlicIrqIdI2c1TxNonempty = 103, /**< i2c1_tx_nonempty */
-  kTopEarlgreyPlicIrqIdI2c1TxOverflow = 104, /**< i2c1_tx_overflow */
-  kTopEarlgreyPlicIrqIdI2c1AcqOverflow = 105, /**< i2c1_acq_overflow */
-  kTopEarlgreyPlicIrqIdI2c1AckStop = 106, /**< i2c1_ack_stop */
-  kTopEarlgreyPlicIrqIdI2c1HostTimeout = 107, /**< i2c1_host_timeout */
-  kTopEarlgreyPlicIrqIdI2c2FmtWatermark = 108, /**< i2c2_fmt_watermark */
-  kTopEarlgreyPlicIrqIdI2c2RxWatermark = 109, /**< i2c2_rx_watermark */
-  kTopEarlgreyPlicIrqIdI2c2FmtOverflow = 110, /**< i2c2_fmt_overflow */
-  kTopEarlgreyPlicIrqIdI2c2RxOverflow = 111, /**< i2c2_rx_overflow */
-  kTopEarlgreyPlicIrqIdI2c2Nak = 112, /**< i2c2_nak */
-  kTopEarlgreyPlicIrqIdI2c2SclInterference = 113, /**< i2c2_scl_interference */
-  kTopEarlgreyPlicIrqIdI2c2SdaInterference = 114, /**< i2c2_sda_interference */
-  kTopEarlgreyPlicIrqIdI2c2StretchTimeout = 115, /**< i2c2_stretch_timeout */
-  kTopEarlgreyPlicIrqIdI2c2SdaUnstable = 116, /**< i2c2_sda_unstable */
-  kTopEarlgreyPlicIrqIdI2c2TransComplete = 117, /**< i2c2_trans_complete */
-  kTopEarlgreyPlicIrqIdI2c2TxEmpty = 118, /**< i2c2_tx_empty */
-  kTopEarlgreyPlicIrqIdI2c2TxNonempty = 119, /**< i2c2_tx_nonempty */
-  kTopEarlgreyPlicIrqIdI2c2TxOverflow = 120, /**< i2c2_tx_overflow */
-  kTopEarlgreyPlicIrqIdI2c2AcqOverflow = 121, /**< i2c2_acq_overflow */
-  kTopEarlgreyPlicIrqIdI2c2AckStop = 122, /**< i2c2_ack_stop */
-  kTopEarlgreyPlicIrqIdI2c2HostTimeout = 123, /**< i2c2_host_timeout */
-  kTopEarlgreyPlicIrqIdPattgenDoneCh0 = 124, /**< pattgen_done_ch0 */
-  kTopEarlgreyPlicIrqIdPattgenDoneCh1 = 125, /**< pattgen_done_ch1 */
-  kTopEarlgreyPlicIrqIdRvTimerTimerExpiredHart0Timer0 = 126, /**< rv_timer_timer_expired_hart0_timer0 */
-  kTopEarlgreyPlicIrqIdUsbdevPktReceived = 127, /**< usbdev_pkt_received */
-  kTopEarlgreyPlicIrqIdUsbdevPktSent = 128, /**< usbdev_pkt_sent */
-  kTopEarlgreyPlicIrqIdUsbdevDisconnected = 129, /**< usbdev_disconnected */
-  kTopEarlgreyPlicIrqIdUsbdevHostLost = 130, /**< usbdev_host_lost */
-  kTopEarlgreyPlicIrqIdUsbdevLinkReset = 131, /**< usbdev_link_reset */
-  kTopEarlgreyPlicIrqIdUsbdevLinkSuspend = 132, /**< usbdev_link_suspend */
-  kTopEarlgreyPlicIrqIdUsbdevLinkResume = 133, /**< usbdev_link_resume */
-  kTopEarlgreyPlicIrqIdUsbdevAvEmpty = 134, /**< usbdev_av_empty */
-  kTopEarlgreyPlicIrqIdUsbdevRxFull = 135, /**< usbdev_rx_full */
-  kTopEarlgreyPlicIrqIdUsbdevAvOverflow = 136, /**< usbdev_av_overflow */
-  kTopEarlgreyPlicIrqIdUsbdevLinkInErr = 137, /**< usbdev_link_in_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxCrcErr = 138, /**< usbdev_rx_crc_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxPidErr = 139, /**< usbdev_rx_pid_err */
-  kTopEarlgreyPlicIrqIdUsbdevRxBitstuffErr = 140, /**< usbdev_rx_bitstuff_err */
-  kTopEarlgreyPlicIrqIdUsbdevFrame = 141, /**< usbdev_frame */
-  kTopEarlgreyPlicIrqIdUsbdevConnected = 142, /**< usbdev_connected */
-  kTopEarlgreyPlicIrqIdUsbdevLinkOutErr = 143, /**< usbdev_link_out_err */
-  kTopEarlgreyPlicIrqIdOtpCtrlOtpOperationDone = 144, /**< otp_ctrl_otp_operation_done */
-  kTopEarlgreyPlicIrqIdOtpCtrlOtpError = 145, /**< otp_ctrl_otp_error */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassa = 146, /**< alert_handler_classa */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassb = 147, /**< alert_handler_classb */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassc = 148, /**< alert_handler_classc */
-  kTopEarlgreyPlicIrqIdAlertHandlerClassd = 149, /**< alert_handler_classd */
+  kTopEarlgreyPlicIrqIdI2c0FmtWatermark = 72, /**< i2c0_fmt_watermark */
+  kTopEarlgreyPlicIrqIdI2c0RxWatermark = 73, /**< i2c0_rx_watermark */
+  kTopEarlgreyPlicIrqIdI2c0FmtOverflow = 74, /**< i2c0_fmt_overflow */
+  kTopEarlgreyPlicIrqIdI2c0RxOverflow = 75, /**< i2c0_rx_overflow */
+  kTopEarlgreyPlicIrqIdI2c0Nak = 76, /**< i2c0_nak */
+  kTopEarlgreyPlicIrqIdI2c0SclInterference = 77, /**< i2c0_scl_interference */
+  kTopEarlgreyPlicIrqIdI2c0SdaInterference = 78, /**< i2c0_sda_interference */
+  kTopEarlgreyPlicIrqIdI2c0StretchTimeout = 79, /**< i2c0_stretch_timeout */
+  kTopEarlgreyPlicIrqIdI2c0SdaUnstable = 80, /**< i2c0_sda_unstable */
+  kTopEarlgreyPlicIrqIdI2c0TransComplete = 81, /**< i2c0_trans_complete */
+  kTopEarlgreyPlicIrqIdI2c0TxEmpty = 82, /**< i2c0_tx_empty */
+  kTopEarlgreyPlicIrqIdI2c0TxNonempty = 83, /**< i2c0_tx_nonempty */
+  kTopEarlgreyPlicIrqIdI2c0TxOverflow = 84, /**< i2c0_tx_overflow */
+  kTopEarlgreyPlicIrqIdI2c0AcqOverflow = 85, /**< i2c0_acq_overflow */
+  kTopEarlgreyPlicIrqIdI2c0AckStop = 86, /**< i2c0_ack_stop */
+  kTopEarlgreyPlicIrqIdI2c0HostTimeout = 87, /**< i2c0_host_timeout */
+  kTopEarlgreyPlicIrqIdI2c1FmtWatermark = 88, /**< i2c1_fmt_watermark */
+  kTopEarlgreyPlicIrqIdI2c1RxWatermark = 89, /**< i2c1_rx_watermark */
+  kTopEarlgreyPlicIrqIdI2c1FmtOverflow = 90, /**< i2c1_fmt_overflow */
+  kTopEarlgreyPlicIrqIdI2c1RxOverflow = 91, /**< i2c1_rx_overflow */
+  kTopEarlgreyPlicIrqIdI2c1Nak = 92, /**< i2c1_nak */
+  kTopEarlgreyPlicIrqIdI2c1SclInterference = 93, /**< i2c1_scl_interference */
+  kTopEarlgreyPlicIrqIdI2c1SdaInterference = 94, /**< i2c1_sda_interference */
+  kTopEarlgreyPlicIrqIdI2c1StretchTimeout = 95, /**< i2c1_stretch_timeout */
+  kTopEarlgreyPlicIrqIdI2c1SdaUnstable = 96, /**< i2c1_sda_unstable */
+  kTopEarlgreyPlicIrqIdI2c1TransComplete = 97, /**< i2c1_trans_complete */
+  kTopEarlgreyPlicIrqIdI2c1TxEmpty = 98, /**< i2c1_tx_empty */
+  kTopEarlgreyPlicIrqIdI2c1TxNonempty = 99, /**< i2c1_tx_nonempty */
+  kTopEarlgreyPlicIrqIdI2c1TxOverflow = 100, /**< i2c1_tx_overflow */
+  kTopEarlgreyPlicIrqIdI2c1AcqOverflow = 101, /**< i2c1_acq_overflow */
+  kTopEarlgreyPlicIrqIdI2c1AckStop = 102, /**< i2c1_ack_stop */
+  kTopEarlgreyPlicIrqIdI2c1HostTimeout = 103, /**< i2c1_host_timeout */
+  kTopEarlgreyPlicIrqIdI2c2FmtWatermark = 104, /**< i2c2_fmt_watermark */
+  kTopEarlgreyPlicIrqIdI2c2RxWatermark = 105, /**< i2c2_rx_watermark */
+  kTopEarlgreyPlicIrqIdI2c2FmtOverflow = 106, /**< i2c2_fmt_overflow */
+  kTopEarlgreyPlicIrqIdI2c2RxOverflow = 107, /**< i2c2_rx_overflow */
+  kTopEarlgreyPlicIrqIdI2c2Nak = 108, /**< i2c2_nak */
+  kTopEarlgreyPlicIrqIdI2c2SclInterference = 109, /**< i2c2_scl_interference */
+  kTopEarlgreyPlicIrqIdI2c2SdaInterference = 110, /**< i2c2_sda_interference */
+  kTopEarlgreyPlicIrqIdI2c2StretchTimeout = 111, /**< i2c2_stretch_timeout */
+  kTopEarlgreyPlicIrqIdI2c2SdaUnstable = 112, /**< i2c2_sda_unstable */
+  kTopEarlgreyPlicIrqIdI2c2TransComplete = 113, /**< i2c2_trans_complete */
+  kTopEarlgreyPlicIrqIdI2c2TxEmpty = 114, /**< i2c2_tx_empty */
+  kTopEarlgreyPlicIrqIdI2c2TxNonempty = 115, /**< i2c2_tx_nonempty */
+  kTopEarlgreyPlicIrqIdI2c2TxOverflow = 116, /**< i2c2_tx_overflow */
+  kTopEarlgreyPlicIrqIdI2c2AcqOverflow = 117, /**< i2c2_acq_overflow */
+  kTopEarlgreyPlicIrqIdI2c2AckStop = 118, /**< i2c2_ack_stop */
+  kTopEarlgreyPlicIrqIdI2c2HostTimeout = 119, /**< i2c2_host_timeout */
+  kTopEarlgreyPlicIrqIdPattgenDoneCh0 = 120, /**< pattgen_done_ch0 */
+  kTopEarlgreyPlicIrqIdPattgenDoneCh1 = 121, /**< pattgen_done_ch1 */
+  kTopEarlgreyPlicIrqIdRvTimerTimerExpiredHart0Timer0 = 122, /**< rv_timer_timer_expired_hart0_timer0 */
+  kTopEarlgreyPlicIrqIdUsbdevPktReceived = 123, /**< usbdev_pkt_received */
+  kTopEarlgreyPlicIrqIdUsbdevPktSent = 124, /**< usbdev_pkt_sent */
+  kTopEarlgreyPlicIrqIdUsbdevDisconnected = 125, /**< usbdev_disconnected */
+  kTopEarlgreyPlicIrqIdUsbdevHostLost = 126, /**< usbdev_host_lost */
+  kTopEarlgreyPlicIrqIdUsbdevLinkReset = 127, /**< usbdev_link_reset */
+  kTopEarlgreyPlicIrqIdUsbdevLinkSuspend = 128, /**< usbdev_link_suspend */
+  kTopEarlgreyPlicIrqIdUsbdevLinkResume = 129, /**< usbdev_link_resume */
+  kTopEarlgreyPlicIrqIdUsbdevAvEmpty = 130, /**< usbdev_av_empty */
+  kTopEarlgreyPlicIrqIdUsbdevRxFull = 131, /**< usbdev_rx_full */
+  kTopEarlgreyPlicIrqIdUsbdevAvOverflow = 132, /**< usbdev_av_overflow */
+  kTopEarlgreyPlicIrqIdUsbdevLinkInErr = 133, /**< usbdev_link_in_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxCrcErr = 134, /**< usbdev_rx_crc_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxPidErr = 135, /**< usbdev_rx_pid_err */
+  kTopEarlgreyPlicIrqIdUsbdevRxBitstuffErr = 136, /**< usbdev_rx_bitstuff_err */
+  kTopEarlgreyPlicIrqIdUsbdevFrame = 137, /**< usbdev_frame */
+  kTopEarlgreyPlicIrqIdUsbdevConnected = 138, /**< usbdev_connected */
+  kTopEarlgreyPlicIrqIdUsbdevLinkOutErr = 139, /**< usbdev_link_out_err */
+  kTopEarlgreyPlicIrqIdOtpCtrlOtpOperationDone = 140, /**< otp_ctrl_otp_operation_done */
+  kTopEarlgreyPlicIrqIdOtpCtrlOtpError = 141, /**< otp_ctrl_otp_error */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassa = 142, /**< alert_handler_classa */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassb = 143, /**< alert_handler_classb */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassc = 144, /**< alert_handler_classc */
+  kTopEarlgreyPlicIrqIdAlertHandlerClassd = 145, /**< alert_handler_classd */
+  kTopEarlgreyPlicIrqIdSpiHost0Error = 146, /**< spi_host0_error */
+  kTopEarlgreyPlicIrqIdSpiHost0SpiEvent = 147, /**< spi_host0_spi_event */
+  kTopEarlgreyPlicIrqIdSpiHost1Error = 148, /**< spi_host1_error */
+  kTopEarlgreyPlicIrqIdSpiHost1SpiEvent = 149, /**< spi_host1_spi_event */
   kTopEarlgreyPlicIrqIdPwrmgrAonWakeup = 150, /**< pwrmgr_aon_wakeup */
   kTopEarlgreyPlicIrqIdSysrstCtrlAonSysrstCtrl = 151, /**< sysrst_ctrl_aon_sysrst_ctrl */
   kTopEarlgreyPlicIrqIdAdcCtrlAonDebugCable = 152, /**< adc_ctrl_aon_debug_cable */
@@ -1231,16 +1231,16 @@
   kTopEarlgreyAlertPeripheralUart3 = 3, /**< uart3 */
   kTopEarlgreyAlertPeripheralGpio = 4, /**< gpio */
   kTopEarlgreyAlertPeripheralSpiDevice = 5, /**< spi_device */
-  kTopEarlgreyAlertPeripheralSpiHost0 = 6, /**< spi_host0 */
-  kTopEarlgreyAlertPeripheralSpiHost1 = 7, /**< spi_host1 */
-  kTopEarlgreyAlertPeripheralI2c0 = 8, /**< i2c0 */
-  kTopEarlgreyAlertPeripheralI2c1 = 9, /**< i2c1 */
-  kTopEarlgreyAlertPeripheralI2c2 = 10, /**< i2c2 */
-  kTopEarlgreyAlertPeripheralPattgen = 11, /**< pattgen */
-  kTopEarlgreyAlertPeripheralRvTimer = 12, /**< rv_timer */
-  kTopEarlgreyAlertPeripheralUsbdev = 13, /**< usbdev */
-  kTopEarlgreyAlertPeripheralOtpCtrl = 14, /**< otp_ctrl */
-  kTopEarlgreyAlertPeripheralLcCtrl = 15, /**< lc_ctrl */
+  kTopEarlgreyAlertPeripheralI2c0 = 6, /**< i2c0 */
+  kTopEarlgreyAlertPeripheralI2c1 = 7, /**< i2c1 */
+  kTopEarlgreyAlertPeripheralI2c2 = 8, /**< i2c2 */
+  kTopEarlgreyAlertPeripheralPattgen = 9, /**< pattgen */
+  kTopEarlgreyAlertPeripheralRvTimer = 10, /**< rv_timer */
+  kTopEarlgreyAlertPeripheralUsbdev = 11, /**< usbdev */
+  kTopEarlgreyAlertPeripheralOtpCtrl = 12, /**< otp_ctrl */
+  kTopEarlgreyAlertPeripheralLcCtrl = 13, /**< lc_ctrl */
+  kTopEarlgreyAlertPeripheralSpiHost0 = 14, /**< spi_host0 */
+  kTopEarlgreyAlertPeripheralSpiHost1 = 15, /**< spi_host1 */
   kTopEarlgreyAlertPeripheralPwrmgrAon = 16, /**< pwrmgr_aon */
   kTopEarlgreyAlertPeripheralRstmgrAon = 17, /**< rstmgr_aon */
   kTopEarlgreyAlertPeripheralClkmgrAon = 18, /**< clkmgr_aon */
@@ -1282,20 +1282,20 @@
   kTopEarlgreyAlertIdUart3FatalFault = 3, /**< uart3_fatal_fault */
   kTopEarlgreyAlertIdGpioFatalFault = 4, /**< gpio_fatal_fault */
   kTopEarlgreyAlertIdSpiDeviceFatalFault = 5, /**< spi_device_fatal_fault */
-  kTopEarlgreyAlertIdSpiHost0FatalFault = 6, /**< spi_host0_fatal_fault */
-  kTopEarlgreyAlertIdSpiHost1FatalFault = 7, /**< spi_host1_fatal_fault */
-  kTopEarlgreyAlertIdI2c0FatalFault = 8, /**< i2c0_fatal_fault */
-  kTopEarlgreyAlertIdI2c1FatalFault = 9, /**< i2c1_fatal_fault */
-  kTopEarlgreyAlertIdI2c2FatalFault = 10, /**< i2c2_fatal_fault */
-  kTopEarlgreyAlertIdPattgenFatalFault = 11, /**< pattgen_fatal_fault */
-  kTopEarlgreyAlertIdRvTimerFatalFault = 12, /**< rv_timer_fatal_fault */
-  kTopEarlgreyAlertIdUsbdevFatalFault = 13, /**< usbdev_fatal_fault */
-  kTopEarlgreyAlertIdOtpCtrlFatalMacroError = 14, /**< otp_ctrl_fatal_macro_error */
-  kTopEarlgreyAlertIdOtpCtrlFatalCheckError = 15, /**< otp_ctrl_fatal_check_error */
-  kTopEarlgreyAlertIdOtpCtrlFatalBusIntegError = 16, /**< otp_ctrl_fatal_bus_integ_error */
-  kTopEarlgreyAlertIdLcCtrlFatalProgError = 17, /**< lc_ctrl_fatal_prog_error */
-  kTopEarlgreyAlertIdLcCtrlFatalStateError = 18, /**< lc_ctrl_fatal_state_error */
-  kTopEarlgreyAlertIdLcCtrlFatalBusIntegError = 19, /**< lc_ctrl_fatal_bus_integ_error */
+  kTopEarlgreyAlertIdI2c0FatalFault = 6, /**< i2c0_fatal_fault */
+  kTopEarlgreyAlertIdI2c1FatalFault = 7, /**< i2c1_fatal_fault */
+  kTopEarlgreyAlertIdI2c2FatalFault = 8, /**< i2c2_fatal_fault */
+  kTopEarlgreyAlertIdPattgenFatalFault = 9, /**< pattgen_fatal_fault */
+  kTopEarlgreyAlertIdRvTimerFatalFault = 10, /**< rv_timer_fatal_fault */
+  kTopEarlgreyAlertIdUsbdevFatalFault = 11, /**< usbdev_fatal_fault */
+  kTopEarlgreyAlertIdOtpCtrlFatalMacroError = 12, /**< otp_ctrl_fatal_macro_error */
+  kTopEarlgreyAlertIdOtpCtrlFatalCheckError = 13, /**< otp_ctrl_fatal_check_error */
+  kTopEarlgreyAlertIdOtpCtrlFatalBusIntegError = 14, /**< otp_ctrl_fatal_bus_integ_error */
+  kTopEarlgreyAlertIdLcCtrlFatalProgError = 15, /**< lc_ctrl_fatal_prog_error */
+  kTopEarlgreyAlertIdLcCtrlFatalStateError = 16, /**< lc_ctrl_fatal_state_error */
+  kTopEarlgreyAlertIdLcCtrlFatalBusIntegError = 17, /**< lc_ctrl_fatal_bus_integ_error */
+  kTopEarlgreyAlertIdSpiHost0FatalFault = 18, /**< spi_host0_fatal_fault */
+  kTopEarlgreyAlertIdSpiHost1FatalFault = 19, /**< spi_host1_fatal_fault */
   kTopEarlgreyAlertIdPwrmgrAonFatalFault = 20, /**< pwrmgr_aon_fatal_fault */
   kTopEarlgreyAlertIdRstmgrAonFatalFault = 21, /**< rstmgr_aon_fatal_fault */
   kTopEarlgreyAlertIdClkmgrAonRecovFault = 22, /**< clkmgr_aon_recov_fault */
@@ -1658,8 +1658,8 @@
 typedef enum top_earlgrey_gateable_clocks {
   kTopEarlgreyGateableClocksIoDiv4Peri = 0, /**< Clock clk_io_div4_peri in group peri */
   kTopEarlgreyGateableClocksIoDiv2Peri = 1, /**< Clock clk_io_div2_peri in group peri */
-  kTopEarlgreyGateableClocksIoPeri = 2, /**< Clock clk_io_peri in group peri */
-  kTopEarlgreyGateableClocksUsbPeri = 3, /**< Clock clk_usb_peri in group peri */
+  kTopEarlgreyGateableClocksUsbPeri = 2, /**< Clock clk_usb_peri in group peri */
+  kTopEarlgreyGateableClocksIoPeri = 3, /**< Clock clk_io_peri in group peri */
   kTopEarlgreyGateableClocksLast = 3, /**< \internal Last Valid Gateable Clock */
 } top_earlgrey_gateable_clocks_t;
 
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
index be38c15..797608a 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey_memory.h
@@ -106,20 +106,6 @@
  */
 #define TOP_EARLGREY_SPI_DEVICE_BASE_ADDR 0x40050000
 /**
- * Peripheral base address for spi_host0 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_SPI_HOST0_BASE_ADDR 0x40060000
-/**
- * Peripheral base address for spi_host1 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_SPI_HOST1_BASE_ADDR 0x40070000
-/**
  * Peripheral base address for i2c0 in top earlgrey.
  *
  * This should be used with #mmio_region_from_addr to access the memory-mapped
@@ -190,6 +176,20 @@
  */
 #define TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR 0x40150000
 /**
+ * Peripheral base address for spi_host0 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_SPI_HOST0_BASE_ADDR 0x40300000
+/**
+ * Peripheral base address for spi_host1 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_SPI_HOST1_BASE_ADDR 0x40310000
+/**
  * Peripheral base address for pwrmgr_aon in top earlgrey.
  *
  * This should be used with #mmio_region_from_addr to access the memory-mapped