From c05d42f0275ddfddb0c136d47ffd925d83ca0b7d Mon Sep 17 00:00:00 2001 From: Ray Lau Date: Fri, 29 May 2026 14:59:30 +0100 Subject: [PATCH 1/6] [rtl,rstmgr] Add debug domain reset This commit changes existing generated main and IO resets to be sourced from lc_src, and adds a debug domain reset sourced from sys_src. Co-authored-by: Marno van der Maas --- hw/top_chip/data/rstmgr_cfg.hjson | 48 +++++++++++++---- .../rstmgr/data/mocha_rstmgr.ipconfig.hjson | 48 +++++++++++++---- .../rstmgr/dv/cov/rstmgr_tgl_excl.cfg | 2 + .../rstmgr/dv/env/rstmgr_env_pkg.sv | 1 + .../dv/sva/rstmgr_rst_en_track_sva_if.sv | 13 +++++ hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr.sv | 52 +++++++++++++++---- .../ip_autogen/rstmgr/rtl/rstmgr_pkg.sv | 4 +- hw/top_chip/rtl/top_chip_system.sv | 2 +- 8 files changed, 139 insertions(+), 31 deletions(-) diff --git a/hw/top_chip/data/rstmgr_cfg.hjson b/hw/top_chip/data/rstmgr_cfg.hjson index 09344b17d..b846648bb 100644 --- a/hw/top_chip/data/rstmgr_cfg.hjson +++ b/hw/top_chip/data/rstmgr_cfg.hjson @@ -112,7 +112,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_main_n - parent: sys_src + parent: lc_src clock: main } { @@ -126,7 +126,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_io_n - parent: sys_src + parent: lc_src clock: io } { @@ -140,7 +140,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_device_n - parent: sys_src + parent: lc_src clock: io } { @@ -154,7 +154,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_host_n - parent: sys_src + parent: lc_src clock: io } { @@ -168,9 +168,23 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_i2c_n - parent: sys_src + parent: lc_src clock: io } + { + name: debug + gen: true + type: top + domains: + [ + Main + ] + shadowed: false + sw: false + path: rstmgr_aon_resets.rst_debug_n + parent: sys_src + clock: main + } ] leaf_rsts: [ @@ -213,7 +227,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_main_n - parent: sys_src + parent: lc_src clock: main } { @@ -227,7 +241,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_io_n - parent: sys_src + parent: lc_src clock: io } { @@ -241,7 +255,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_device_n - parent: sys_src + parent: lc_src clock: io } { @@ -255,7 +269,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_host_n - parent: sys_src + parent: lc_src clock: io } { @@ -269,9 +283,23 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_i2c_n - parent: sys_src + parent: lc_src clock: io } + { + name: debug + gen: true + type: top + domains: + [ + Main + ] + shadowed: false + sw: false + path: rstmgr_aon_resets.rst_debug_n + parent: sys_src + clock: main + } ] rst_ni: sys_src export_rsts: {} diff --git a/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson b/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson index fb5b996f8..37612b47e 100644 --- a/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson +++ b/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson @@ -112,7 +112,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_main_n - parent: sys_src + parent: lc_src clock: main } { @@ -126,7 +126,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_io_n - parent: sys_src + parent: lc_src clock: io } { @@ -140,7 +140,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_device_n - parent: sys_src + parent: lc_src clock: io } { @@ -154,7 +154,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_host_n - parent: sys_src + parent: lc_src clock: io } { @@ -168,9 +168,23 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_i2c_n - parent: sys_src + parent: lc_src clock: io } + { + name: debug + gen: true + type: top + domains: + [ + Main + ] + shadowed: false + sw: false + path: rstmgr_aon_resets.rst_debug_n + parent: sys_src + clock: main + } ] leaf_rsts: [ @@ -213,7 +227,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_main_n - parent: sys_src + parent: lc_src clock: main } { @@ -227,7 +241,7 @@ shadowed: false sw: false path: rstmgr_aon_resets.rst_io_n - parent: sys_src + parent: lc_src clock: io } { @@ -241,7 +255,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_device_n - parent: sys_src + parent: lc_src clock: io } { @@ -255,7 +269,7 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_spi_host_n - parent: sys_src + parent: lc_src clock: io } { @@ -269,9 +283,23 @@ shadowed: false sw: true path: rstmgr_aon_resets.rst_i2c_n - parent: sys_src + parent: lc_src clock: io } + { + name: debug + gen: true + type: top + domains: + [ + Main + ] + shadowed: false + sw: false + path: rstmgr_aon_resets.rst_debug_n + parent: sys_src + clock: main + } ] rst_ni: sys_src export_rsts: {} diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/cov/rstmgr_tgl_excl.cfg b/hw/top_chip/ip_autogen/rstmgr/dv/cov/rstmgr_tgl_excl.cfg index fd621cceb..604fbe164 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/cov/rstmgr_tgl_excl.cfg +++ b/hw/top_chip/ip_autogen/rstmgr/dv/cov/rstmgr_tgl_excl.cfg @@ -20,3 +20,5 @@ -module_node rstmgr rst_en_o.spi_host[DomainAonSel] -module_node rstmgr resets_o.rst_i2c_n[DomainAonSel] -module_node rstmgr rst_en_o.i2c[DomainAonSel] +-module_node rstmgr resets_o.rst_debug_n[DomainAonSel] +-module_node rstmgr rst_en_o.debug[DomainAonSel] diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/env/rstmgr_env_pkg.sv b/hw/top_chip/ip_autogen/rstmgr/dv/env/rstmgr_env_pkg.sv index f136b40c1..a88868277 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/env/rstmgr_env_pkg.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/env/rstmgr_env_pkg.sv @@ -37,6 +37,7 @@ package rstmgr_env_pkg; parameter string LIST_OF_LEAFS[] = { "u_daon_por", "u_daon_por_io", + "u_dmain_debug", "u_dmain_i2c", "u_dmain_io", "u_dmain_main", diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv index e41eb3b67..453ce4610 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv @@ -133,4 +133,17 @@ interface rstmgr_rst_en_track_sva_if ( clk_io_i, !rst_por_ni) + `ASSERT(DMainRstDebugEnTracksRstDebugActive_A, + $fell(resets_i.rst_debug_n[DomainMainSel]) |-> ##[0:DELAY] + reset_en_i.debug[DomainMainSel] == prim_mubi_pkg::MuBi4True, + clk_main_i, + !rst_por_ni) + + `ASSERT(DMainRstDebugEnTracksRstDebugInactive_A, + $rose(resets_i.rst_debug_n[DomainMainSel]) |-> ##DELAY + !resets_i.rst_debug_n[DomainMainSel] || + reset_en_i.debug[DomainMainSel] == prim_mubi_pkg::MuBi4False, + clk_main_i, + !rst_por_ni) + endinterface diff --git a/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr.sv b/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr.sv index 0dc3f6899..33a5238e1 100644 --- a/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr.sv +++ b/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr.sv @@ -184,12 +184,12 @@ module rstmgr //////////////////////////////////////////////////// // consistency check errors - logic [6:0][PowerDomains-1:0] cnsty_chk_errs; - logic [6:0][PowerDomains-1:0] shadow_cnsty_chk_errs; + logic [7:0][PowerDomains-1:0] cnsty_chk_errs; + logic [7:0][PowerDomains-1:0] shadow_cnsty_chk_errs; // consistency sparse fsm errors - logic [6:0][PowerDomains-1:0] fsm_errs; - logic [6:0][PowerDomains-1:0] shadow_fsm_errs; + logic [7:0][PowerDomains-1:0] fsm_errs; + logic [7:0][PowerDomains-1:0] shadow_fsm_errs; assign hw2reg.err_code.reg_intg_err.d = 1'b1; assign hw2reg.err_code.reg_intg_err.de = reg_intg_err; @@ -370,7 +370,7 @@ module rstmgr .clk_i, .rst_ni, .leaf_clk_i(clk_main_i), - .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .parent_rst_ni(rst_lc_src_n[DomainMainSel]), .sw_rst_req_ni(1'b1), .scan_rst_ni, .scanmode_i, @@ -404,7 +404,7 @@ module rstmgr .clk_i, .rst_ni, .leaf_clk_i(clk_io_i), - .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .parent_rst_ni(rst_lc_src_n[DomainMainSel]), .sw_rst_req_ni(1'b1), .scan_rst_ni, .scanmode_i, @@ -438,7 +438,7 @@ module rstmgr .clk_i, .rst_ni, .leaf_clk_i(clk_io_i), - .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .parent_rst_ni(rst_lc_src_n[DomainMainSel]), .sw_rst_req_ni(reg2hw.sw_rst_ctrl_n[SPI_DEVICE].q), .scan_rst_ni, .scanmode_i, @@ -472,7 +472,7 @@ module rstmgr .clk_i, .rst_ni, .leaf_clk_i(clk_io_i), - .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .parent_rst_ni(rst_lc_src_n[DomainMainSel]), .sw_rst_req_ni(reg2hw.sw_rst_ctrl_n[SPI_HOST].q), .scan_rst_ni, .scanmode_i, @@ -506,7 +506,7 @@ module rstmgr .clk_i, .rst_ni, .leaf_clk_i(clk_io_i), - .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .parent_rst_ni(rst_lc_src_n[DomainMainSel]), .sw_rst_req_ni(reg2hw.sw_rst_ctrl_n[I2C].q), .scan_rst_ni, .scanmode_i, @@ -525,6 +525,40 @@ module rstmgr assign shadow_cnsty_chk_errs[6] = '0; assign shadow_fsm_errs[6] = '0; + // Generating resets for debug + // Power Domains: ['Main'] + // Shadowed: False + assign resets_o.rst_debug_n[DomainAonSel] = '0; + assign cnsty_chk_errs[7][DomainAonSel] = '0; + assign fsm_errs[7][DomainAonSel] = '0; + assign rst_en_o.debug[DomainAonSel] = MuBi4True; + rstmgr_leaf_rst #( + .SecCheck(SecCheck), + .SecMaxSyncDelay(SecMaxSyncDelay), + .SwRstReq(1'b0) + ) u_dmain_debug ( + .clk_i, + .rst_ni, + .leaf_clk_i(clk_main_i), + .parent_rst_ni(rst_sys_src_n[DomainMainSel]), + .sw_rst_req_ni(1'b1), + .scan_rst_ni, + .scanmode_i, + .rst_en_o(rst_en_o.debug[DomainMainSel]), + .leaf_rst_o(resets_o.rst_debug_n[DomainMainSel]), + .err_o(cnsty_chk_errs[7][DomainMainSel]), + .fsm_err_o(fsm_errs[7][DomainMainSel]) + ); + + if (SecCheck) begin : gen_dmain_debug_assert + `ASSERT_PRIM_FSM_ERROR_TRIGGER_ALERT( + DMainDebugFsmCheck_A, + u_dmain_debug.gen_rst_chk.u_rst_chk.u_state_regs, + alert_tx_o[0]) + end + assign shadow_cnsty_chk_errs[7] = '0; + assign shadow_fsm_errs[7] = '0; + //////////////////////////////////////////////////// // Reset info construction // diff --git a/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr_pkg.sv b/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr_pkg.sv index 1cce9f8e5..fab94d622 100644 --- a/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr_pkg.sv +++ b/hw/top_chip/ip_autogen/rstmgr/rtl/rstmgr_pkg.sv @@ -29,6 +29,7 @@ package rstmgr_pkg; logic [PowerDomains-1:0] rst_spi_device_n; logic [PowerDomains-1:0] rst_spi_host_n; logic [PowerDomains-1:0] rst_i2c_n; + logic [PowerDomains-1:0] rst_debug_n; } rstmgr_out_t; // reset indication for alert handler @@ -41,9 +42,10 @@ package rstmgr_pkg; prim_mubi_pkg::mubi4_t [PowerDomains-1:0] spi_device; prim_mubi_pkg::mubi4_t [PowerDomains-1:0] spi_host; prim_mubi_pkg::mubi4_t [PowerDomains-1:0] i2c; + prim_mubi_pkg::mubi4_t [PowerDomains-1:0] debug; } rstmgr_rst_en_t; - parameter int NumOutputRst = 8 * PowerDomains; + parameter int NumOutputRst = 9 * PowerDomains; // cpu reset requests and status typedef struct packed { diff --git a/hw/top_chip/rtl/top_chip_system.sv b/hw/top_chip/rtl/top_chip_system.sv index ddad37a2a..adf0a0eea 100644 --- a/hw/top_chip/rtl/top_chip_system.sv +++ b/hw/top_chip/rtl/top_chip_system.sv @@ -1010,7 +1010,7 @@ module top_chip_system #( clkmgr_clocks.clk_main_hint | clkmgr_clocks.clk_io_peri | (|clkmgr_cg_en) | (|rstmgr_resets.rst_por_n) | (|rstmgr_resets.rst_spi_device_n) | (|rstmgr_resets.rst_spi_host_n) | (|rstmgr_resets.rst_i2c_n) | - (|rstmgr_rst_en); + (|rstmgr_resets.rst_debug_n) | (|rstmgr_rst_en); // Combine response and request between crossbar and atomics wrapper. AXI_BUS #( From ca960e83775086bd8e9c7140878c002fbb7bb641 Mon Sep 17 00:00:00 2001 From: Marno van der Maas Date: Mon, 1 Jun 2026 16:25:57 +0100 Subject: [PATCH 2/6] [rstmgr] Always on reset added --- hw/top_chip/data/rstmgr_cfg.hjson | 1 + .../rstmgr/data/mocha_rstmgr.ipconfig.hjson | 1 + .../rstmgr/dv/sva/rstmgr_cascading_sva_if.sv | 30 ++++++++++--------- .../dv/sva/rstmgr_rst_en_track_sva_if.sv | 13 ++++++++ 4 files changed, 31 insertions(+), 14 deletions(-) diff --git a/hw/top_chip/data/rstmgr_cfg.hjson b/hw/top_chip/data/rstmgr_cfg.hjson index b846648bb..a8d78eb12 100644 --- a/hw/top_chip/data/rstmgr_cfg.hjson +++ b/hw/top_chip/data/rstmgr_cfg.hjson @@ -122,6 +122,7 @@ domains: [ Main + Aon ] shadowed: false sw: false diff --git a/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson b/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson index 37612b47e..d6048bba4 100644 --- a/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson +++ b/hw/top_chip/ip_autogen/rstmgr/data/mocha_rstmgr.ipconfig.hjson @@ -122,6 +122,7 @@ domains: [ Main + Aon ] shadowed: false sw: false diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv index e71890760..0f46321bb 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv @@ -158,21 +158,23 @@ interface rstmgr_cascading_sva_if ( `CASCADED_ASSERTS(CascadeEffAonToRstPorMain, effective_aon_rst_n[rstmgr_pkg::DomainAonSel], resets_o.rst_por_n[rstmgr_pkg::DomainAonSel], SyncCycles, clk_main_i) - // Controlled by rst_sys_src_n. - `CASCADED_ASSERTS(CascadeSysToMain_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) - - `CASCADED_ASSERTS(CascadeSysToIO_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) - - `CASCADED_ASSERTS(CascadeSysToSPIHost_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) + // Controlled by rst_lc_src_n. + `CASCADED_ASSERTS(CascadeLcToAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], + resets_o.rst_io_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) + `CASCADED_ASSERTS(CascadeLcToMain, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToIo, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiDevice, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiHost, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToI2c, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) - `CASCADED_ASSERTS(CascadeSysToSPIDevice_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) - - `CASCADED_ASSERTS(CascadeSysToI2C_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) + // Controlled by rst_sys_src_n. + `CASCADED_ASSERTS(CascadeSysToDebug, rst_sys_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_debug_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) `undef FALL_ASSERT `undef RISE_ASSERTS diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv index 453ce4610..ef5a36868 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_rst_en_track_sva_if.sv @@ -94,6 +94,19 @@ interface rstmgr_rst_en_track_sva_if ( clk_io_i, !rst_por_ni) + `ASSERT(DAonRstIoEnTracksRstIoActive_A, + $fell(resets_i.rst_io_n[DomainAonSel]) |-> ##[0:DELAY] + reset_en_i.io[DomainAonSel] == prim_mubi_pkg::MuBi4True, + clk_io_i, + !rst_por_ni) + + `ASSERT(DAonRstIoEnTracksRstIoInactive_A, + $rose(resets_i.rst_io_n[DomainAonSel]) |-> ##DELAY + !resets_i.rst_io_n[DomainAonSel] || + reset_en_i.io[DomainAonSel] == prim_mubi_pkg::MuBi4False, + clk_io_i, + !rst_por_ni) + `ASSERT(DMainRstSpiDeviceEnTracksRstSpiDeviceActive_A, $fell(resets_i.rst_spi_device_n[DomainMainSel]) |-> ##[0:DELAY] reset_en_i.spi_device[DomainMainSel] == prim_mubi_pkg::MuBi4True, From 7ec282fc46f572518ebb412ca32afd5266ee5876 Mon Sep 17 00:00:00 2001 From: Ray Lau Date: Fri, 29 May 2026 15:03:54 +0100 Subject: [PATCH 3/6] [rtl] Clkmgr input clocks and resets fixed It also arranges them for better readability. Co-authored-by: Marno van der Maas --- hw/top_chip/rtl/top_chip_system.sv | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/hw/top_chip/rtl/top_chip_system.sv b/hw/top_chip/rtl/top_chip_system.sv index adf0a0eea..7bba3f970 100644 --- a/hw/top_chip/rtl/top_chip_system.sv +++ b/hw/top_chip/rtl/top_chip_system.sv @@ -913,16 +913,20 @@ module top_chip_system #( .tl_o (tl_clkmgr_d2h), .scanmode_i (prim_mubi_pkg::MuBi4False), - // Clock and reset connections. + // Primary module control clocks and resets. .clk_i (clkmgr_clocks.clk_io_powerup), + .rst_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), + .rst_shadowed_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), + + // System source clocks and resets. .clk_main_i (clk_i), + .rst_main_ni (rstmgr_resets.rst_main_n[rstmgr_pkg::DomainAonSel]), .clk_io_i (clk_i), + .rst_io_ni (rstmgr_resets.rst_io_n[rstmgr_pkg::DomainAonSel]), .clk_aon_i (clk_i), - .rst_shadowed_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), - .rst_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), - .rst_aon_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), - .rst_io_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), - .rst_main_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), + .rst_aon_ni (rstmgr_resets.rst_io_n[rstmgr_pkg::DomainAonSel]), + + // Resets for derived clock generation, root clock gating and related status. .rst_root_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), .rst_root_io_ni (rstmgr_resets.rst_por_io_n[rstmgr_pkg::DomainAonSel]), .rst_root_main_ni (rstmgr_resets.rst_por_n[rstmgr_pkg::DomainAonSel]) From 41266330f5c871eaf817a8d40fd7b30124d5b1d5 Mon Sep 17 00:00:00 2001 From: Ray Lau Date: Fri, 29 May 2026 15:04:37 +0100 Subject: [PATCH 4/6] [rtl] Use dedicated resets for SPI dev/host & I2C Co-authored-by: Marno van der Maas --- hw/top_chip/rtl/top_chip_system.sv | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hw/top_chip/rtl/top_chip_system.sv b/hw/top_chip/rtl/top_chip_system.sv index 7bba3f970..b34a3721e 100644 --- a/hw/top_chip/rtl/top_chip_system.sv +++ b/hw/top_chip/rtl/top_chip_system.sv @@ -670,7 +670,7 @@ module top_chip_system #( .InputDelayCycles(0) // note: may not be true for all tops ) u_i2c ( .clk_i (clkmgr_clocks.clk_io_infra), - .rst_ni (rstmgr_resets.rst_io_n[rstmgr_pkg::DomainMainSel]), + .rst_ni (rstmgr_resets.rst_i2c_n[rstmgr_pkg::DomainMainSel]), .alert_rx_i (prim_alert_pkg::ALERT_RX_DEFAULT), .alert_tx_o ( ), @@ -757,7 +757,7 @@ module top_chip_system #( // Instantiate SPI device spi_device u_spi_device ( .clk_i (clkmgr_clocks.clk_io_infra), - .rst_ni (rstmgr_resets.rst_io_n[rstmgr_pkg::DomainMainSel]), + .rst_ni (rstmgr_resets.rst_spi_device_n[rstmgr_pkg::DomainMainSel]), // Signals to xbar .tl_i (tl_spi_device_h2d), @@ -809,7 +809,7 @@ module top_chip_system #( ) u_spi_host ( // Clock and reset. .clk_i (clkmgr_clocks.clk_io_infra), - .rst_ni (rstmgr_resets.rst_io_n[rstmgr_pkg::DomainMainSel]), + .rst_ni (rstmgr_resets.rst_spi_host_n[rstmgr_pkg::DomainMainSel]), // TileLink bus connections. .tl_i (tl_spi_host_h2d), @@ -1013,8 +1013,7 @@ module top_chip_system #( assign unused_manager_output = clkmgr_clocks.clk_main_hint | clkmgr_clocks.clk_io_peri | (|clkmgr_cg_en) | - (|rstmgr_resets.rst_por_n) | (|rstmgr_resets.rst_spi_device_n) | (|rstmgr_resets.rst_spi_host_n) | (|rstmgr_resets.rst_i2c_n) | - (|rstmgr_resets.rst_debug_n) | (|rstmgr_rst_en); + (|rstmgr_resets.rst_por_n) | (|rstmgr_resets.rst_debug_n) | (|rstmgr_rst_en); // Combine response and request between crossbar and atomics wrapper. AXI_BUS #( From 7fc4993222b0d30f110beea1693a273cb1001d18 Mon Sep 17 00:00:00 2001 From: Marno van der Maas Date: Mon, 1 Jun 2026 16:06:53 +0100 Subject: [PATCH 5/6] [vendor] Cascade removed from template patch --- .../rstmgr/dv/sva/rstmgr_cascading_sva_if.sv | 22 +++++------- .../dv/sva/rstmgr_cascading_sva_if.sv.tpl | 24 ++++++------- .../rstmgr/0002_Fix_Templates.patch | 36 ------------------- 3 files changed, 18 insertions(+), 64 deletions(-) diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv index 0f46321bb..a81fa6f46 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv @@ -159,22 +159,16 @@ interface rstmgr_cascading_sva_if ( resets_o.rst_por_n[rstmgr_pkg::DomainAonSel], SyncCycles, clk_main_i) // Controlled by rst_lc_src_n. - `CASCADED_ASSERTS(CascadeLcToAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], - resets_o.rst_io_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) - `CASCADED_ASSERTS(CascadeLcToMain, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) - `CASCADED_ASSERTS(CascadeLcToIo, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) - `CASCADED_ASSERTS(CascadeLcToSpiDevice, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) - `CASCADED_ASSERTS(CascadeLcToSpiHost, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) - `CASCADED_ASSERTS(CascadeLcToI2c, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], + resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) + `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) // Controlled by rst_sys_src_n. - `CASCADED_ASSERTS(CascadeSysToDebug, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_debug_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) `undef FALL_ASSERT `undef RISE_ASSERTS diff --git a/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl b/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl index 1653cb608..143d0ed5b 100644 --- a/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl +++ b/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl @@ -183,21 +183,17 @@ interface rstmgr_cascading_sva_if ( resets_o.rst_por_${clk + "_" if clk != "main" else ""}n[rstmgr_pkg::DomainAonSel], SyncCycles, clk_${clk}_i) % endfor - // Controlled by rst_sys_src_n. - `CASCADED_ASSERTS(CascadeSysToMain_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) - - `CASCADED_ASSERTS(CascadeSysToIO_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) - - `CASCADED_ASSERTS(CascadeSysToSPIHost_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) + // Controlled by rst_lc_src_n. + `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], + resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) + `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) - `CASCADED_ASSERTS(CascadeSysToSPIDevice_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) - - `CASCADED_ASSERTS(CascadeSysToI2C_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) + // Controlled by rst_sys_src_n. + `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) `undef FALL_ASSERT `undef RISE_ASSERTS diff --git a/hw/vendor/patches/lowrisc_ip/rstmgr/0002_Fix_Templates.patch b/hw/vendor/patches/lowrisc_ip/rstmgr/0002_Fix_Templates.patch index 5ceb77777..bf35cb5d4 100644 --- a/hw/vendor/patches/lowrisc_ip/rstmgr/0002_Fix_Templates.patch +++ b/hw/vendor/patches/lowrisc_ip/rstmgr/0002_Fix_Templates.patch @@ -35,42 +35,6 @@ index 356807f..1670853 100644 check_reset_info(expected_reset_info_code); check_alert_info_after_reset(.alert_dump(expected_alert_dump), .enable(expected_alert_enable)); -diff --git a/dv/sva/rstmgr_cascading_sva_if.sv.tpl b/dv/sva/rstmgr_cascading_sva_if.sv.tpl -index 143d0ed..1653cb6 100644 ---- a/dv/sva/rstmgr_cascading_sva_if.sv.tpl -+++ b/dv/sva/rstmgr_cascading_sva_if.sv.tpl -@@ -183,17 +183,21 @@ interface rstmgr_cascading_sva_if ( - resets_o.rst_por_${clk + "_" if clk != "main" else ""}n[rstmgr_pkg::DomainAonSel], SyncCycles, clk_${clk}_i) - % endfor - -- // Controlled by rst_lc_src_n. -- `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], -- resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) -- `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], -- resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) -- - // Controlled by rst_sys_src_n. -- `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -- resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) -- `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], -- resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) -+ `CASCADED_ASSERTS(CascadeSysToMain_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -+ resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) -+ -+ `CASCADED_ASSERTS(CascadeSysToIO_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -+ resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) -+ -+ `CASCADED_ASSERTS(CascadeSysToSPIHost_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -+ resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) -+ -+ `CASCADED_ASSERTS(CascadeSysToSPIDevice_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -+ resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) -+ -+ `CASCADED_ASSERTS(CascadeSysToI2C_A, rst_sys_src_n[rstmgr_pkg::DomainMainSel], -+ resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_io_i) - - `undef FALL_ASSERT - `undef RISE_ASSERTS diff --git a/dv/tb.sv.tpl b/dv/tb.sv.tpl index c2e8ce4..49dbb57 100644 --- a/dv/tb.sv.tpl From dd5a403e8e0c1828e63e612a48adbebaa5949cab Mon Sep 17 00:00:00 2001 From: Marno van der Maas Date: Mon, 1 Jun 2026 16:25:30 +0100 Subject: [PATCH 6/6] [rstmgr,dv] Cascade assertions updated --- .../rstmgr/dv/sva/rstmgr_cascading_sva_if.sv | 22 +++++++----- .../dv/sva/rstmgr_cascading_sva_if.sv.tpl | 22 +++++++----- .../rstmgr/0003_Cascade_Assertion_Fix.patch | 35 +++++++++++++++++++ 3 files changed, 63 insertions(+), 16 deletions(-) create mode 100644 hw/vendor/patches/lowrisc_ip/rstmgr/0003_Cascade_Assertion_Fix.patch diff --git a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv index a81fa6f46..0f46321bb 100644 --- a/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv +++ b/hw/top_chip/ip_autogen/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv @@ -159,16 +159,22 @@ interface rstmgr_cascading_sva_if ( resets_o.rst_por_n[rstmgr_pkg::DomainAonSel], SyncCycles, clk_main_i) // Controlled by rst_lc_src_n. - `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], - resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) - `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], + resets_o.rst_io_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) + `CASCADED_ASSERTS(CascadeLcToMain, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToIo, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiDevice, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiHost, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToI2c, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) // Controlled by rst_sys_src_n. - `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) - `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeSysToDebug, rst_sys_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_debug_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) `undef FALL_ASSERT `undef RISE_ASSERTS diff --git a/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl b/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl index 143d0ed5b..53ba9744d 100644 --- a/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl +++ b/hw/vendor/lowrisc_ip/ip_templates/rstmgr/dv/sva/rstmgr_cascading_sva_if.sv.tpl @@ -184,16 +184,22 @@ interface rstmgr_cascading_sva_if ( % endfor // Controlled by rst_lc_src_n. - `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], - resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) - `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], + resets_o.rst_io_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) + `CASCADED_ASSERTS(CascadeLcToMain, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeLcToIo, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiDevice, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToSpiHost, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + `CASCADED_ASSERTS(CascadeLcToI2c, rst_lc_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) // Controlled by rst_sys_src_n. - `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) - `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], - resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) + `CASCADED_ASSERTS(CascadeSysToDebug, rst_sys_src_n[rstmgr_pkg::DomainMainSel], + resets_o.rst_debug_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) `undef FALL_ASSERT `undef RISE_ASSERTS diff --git a/hw/vendor/patches/lowrisc_ip/rstmgr/0003_Cascade_Assertion_Fix.patch b/hw/vendor/patches/lowrisc_ip/rstmgr/0003_Cascade_Assertion_Fix.patch new file mode 100644 index 000000000..ca902ed4b --- /dev/null +++ b/hw/vendor/patches/lowrisc_ip/rstmgr/0003_Cascade_Assertion_Fix.patch @@ -0,0 +1,35 @@ +diff --git a/dv/sva/rstmgr_cascading_sva_if.sv.tpl b/dv/sva/rstmgr_cascading_sva_if.sv.tpl +index 143d0ed5..f8853b04 100644 +--- a/dv/sva/rstmgr_cascading_sva_if.sv.tpl ++++ b/dv/sva/rstmgr_cascading_sva_if.sv.tpl +@@ -184,16 +184,22 @@ interface rstmgr_cascading_sva_if ( + % endfor + + // Controlled by rst_lc_src_n. +- `CASCADED_ASSERTS(CascadeLcToLcAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], +- resets_o.rst_lc_aon_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) +- `CASCADED_ASSERTS(CascadeLcToLc, rst_lc_src_n[rstmgr_pkg::DomainMainSel], +- resets_o.rst_lc_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) ++ `CASCADED_ASSERTS(CascadeLcToAon, rst_lc_src_n[rstmgr_pkg::DomainAonSel], ++ resets_o.rst_io_n[rstmgr_pkg::DomainAonSel], SysCycles, clk_aon_i) ++ `CASCADED_ASSERTS(CascadeLcToMain, rst_lc_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_main_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) ++ `CASCADED_ASSERTS(CascadeLcToIo, rst_lc_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_io_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) ++ `CASCADED_ASSERTS(CascadeLcToSpiDevice, rst_lc_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_spi_device_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) ++ `CASCADED_ASSERTS(CascadeLcToSpiHost, rst_lc_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_spi_host_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) ++ `CASCADED_ASSERTS(CascadeLcToI2c, rst_lc_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_i2c_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_io_i) + + // Controlled by rst_sys_src_n. +- `CASCADED_ASSERTS(CascadeSysToSys, rst_sys_src_n[rstmgr_pkg::DomainMainSel], +- resets_o.rst_sys_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) +- `CASCADED_ASSERTS(CascadeLcToLcShadowed, rst_lc_src_n[rstmgr_pkg::DomainMainSel], +- resets_o.rst_lc_shadowed_n[rstmgr_pkg::DomainMainSel], SysCycles, clk_main_i) ++ `CASCADED_ASSERTS(CascadeSysToDebug, rst_sys_src_n[rstmgr_pkg::DomainMainSel], ++ resets_o.rst_debug_n[rstmgr_pkg::DomainMainSel], PeriCycles, clk_main_i) + + `undef FALL_ASSERT + `undef RISE_ASSERTS