[top] Re-arrange always on modules
- move usbdev out of always on
- move pinmux / padctrl to peri clock domain
- move sensor_ctrl / ast to always on and peri clock domain
- add validation check to make sure there is only 1 pwr/clk/rstmgr per top
- remove instance name hardcoding in merge.py
Signed-off-by: Timothy Chen <timothytim@google.com>
[util] tweak based on review comments
Signed-off-by: Timothy Chen <timothytim@google.com>
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index ff79fa1..7ce38eb 100644
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -34,8 +34,8 @@
clocks: {
hier_paths: {
- top: "clkmgr_clocks.", // top level is a struct
- ext: "", // ext is a port of the clock name
+ top: "clkmgr_aon_clocks.", // top level is a struct
+ ext: "", // ext is a port of the clock name
},
// Clock Source attributes
@@ -110,8 +110,8 @@
resets: {
hier_paths: {
- top: "rstmgr_resets.", // top level is a struct
- ext: "", // ext is a port of the clock name
+ top: "rstmgr_aon_resets.", // top level is a struct
+ ext: "", // ext is a port of the clock name
},
// Reset node attributes
@@ -313,15 +313,13 @@
reset_connections: {rst_ni: "sys_io_div4"},
base_addr: "0x40100000",
},
- { name: "sensor_ctrl",
- type: "sensor_ctrl",
- clock_srcs: {clk_i: "io_div4"},
- clock_group: "secure",
+ { name: "usbdev",
+ type: "usbdev",
+ clock_srcs: {clk_i: "io_div4", clk_aon_i: "aon", clk_usb_48mhz_i: "usb"},
+ clock_group: "peri",
clock_reset_export: ["ast"],
- reset_connections: {rst_ni: "sys_io_div4"},
- domain: "Aon",
+ reset_connections: {rst_ni: "sys_io_div4", rst_aon_ni: "sys_aon", rst_usb_48mhz_ni: "usb"},
base_addr: "0x40110000",
- top_only: "true"
},
{ name: "otp_ctrl",
type: "otp_ctrl",
@@ -359,7 +357,7 @@
reset_connections: {rst_ni: "sys_io_div4"},
base_addr: "0x40160000",
}
- { name: "pwrmgr",
+ { name: "pwrmgr_aon",
type: "pwrmgr",
clock_srcs: {clk_i: "io_div4", clk_slow_i: "aon"},
clock_group: "powerup",
@@ -369,7 +367,7 @@
generated: "true" // Indicate this module is generated in the topgen
},
- { name: "rstmgr",
+ { name: "rstmgr_aon",
type: "rstmgr",
clock_srcs: {clk_i: "io_div4", clk_aon_i: "aon", clk_main_i: "main", clk_io_i: "io", clk_usb_i: "usb",
clk_io_div2_i: "io_div2", clk_io_div4_i: "io_div4"},
@@ -379,7 +377,7 @@
base_addr: "0x40410000",
generated: "true" // Indicate this module is generated in the topgen
},
- { name: "clkmgr",
+ { name: "clkmgr_aon",
type: "clkmgr",
clock_srcs: {clk_i: "io_div4"},
clock_group: "powerup",
@@ -391,36 +389,38 @@
},
// pinmux is currently allocated to main fabric,
// however this should probably be moved to peri fabric
- { name: "pinmux",
+ { name: "pinmux_aon",
type: "pinmux",
clock: "main",
- clock_srcs: {clk_i: "main", clk_aon_i: "aon"},
+ clock_srcs: {clk_i: "io_div4", clk_aon_i: "aon"},
clock_group: "secure",
- reset_connections: {rst_ni: "sys", rst_aon_ni: "sys_aon"},
+ reset_connections: {rst_ni: "sys_io_div4", rst_aon_ni: "sys_aon"},
domain: "Aon",
base_addr: "0x40460000",
generated: "true"
},
// see comment regarding pinmux above
- { name: "padctrl",
+ { name: "padctrl_aon",
type: "padctrl",
clock: "main",
- clock_srcs: {clk_i: "main"},
+ clock_srcs: {clk_i: "io_div4"},
clock_group: "secure",
- reset_connections: {rst_ni: "sys"},
+ reset_connections: {rst_ni: "sys_io_div4"},
domain: "Aon",
base_addr: "0x40470000",
generated: "true"
},
- { name: "usbdev",
- type: "usbdev",
- clock_srcs: {clk_i: "io_div4", clk_aon_i: "aon", clk_usb_48mhz_i: "usb"},
- clock_group: "peri",
+ { name: "sensor_ctrl_aon",
+ type: "sensor_ctrl",
+ clock_srcs: {clk_i: "io_div4"},
+ clock_group: "secure",
clock_reset_export: ["ast"],
- reset_connections: {rst_ni: "sys_io_div4", rst_aon_ni: "sys_aon", rst_usb_48mhz_ni: "usb"},
+ reset_connections: {rst_ni: "sys_io_div4"},
+ domain: "Aon",
base_addr: "0x40500000",
+ top_only: "true"
},
- { name: "sram_ctrl_ret",
+ { name: "sram_ctrl_ret_aon",
type: "sram_ctrl",
clock_srcs: {clk_i: "io_div4", clk_otp_i: "io_div4"},
clock_group: "peri",
@@ -560,7 +560,7 @@
}
]
},
- { name: "ram_ret",
+ { name: "ram_ret_aon",
clock_srcs: {clk_i: "io_div4"},
clock_group: "infra",
reset_connections: {rst_ni: "sys_io_div4"},
@@ -656,15 +656,15 @@
// e.g flash_ctrl0.flash: [flash_phy0.flash_ctrl]
inter_module: {
'connect': {
- 'alert_handler.crashdump' : ['rstmgr.alert_dump'],
+ 'alert_handler.crashdump' : ['rstmgr_aon.alert_dump'],
'alert_handler.esc_rx' : ['rv_core_ibex.esc_nmi_rx',
'lc_ctrl.esc_wipe_secrets_rx',
'lc_ctrl.esc_scrap_state_rx'
- 'pwrmgr.esc_rst_rx'],
+ 'pwrmgr_aon.esc_rst_rx'],
'alert_handler.esc_tx' : ['rv_core_ibex.esc_nmi_tx',
'lc_ctrl.esc_wipe_secrets_tx',
'lc_ctrl.esc_scrap_state_tx',
- 'pwrmgr.esc_rst_tx'],
+ 'pwrmgr_aon.esc_rst_tx'],
'csrng.csrng_cmd' : ['edn0.csrng_cmd', 'edn1.csrng_cmd'],
'csrng.entropy_src_hw_if' : ['entropy_src.entropy_src_hw_if'],
'flash_ctrl.flash' : ['eflash.flash_ctrl'],
@@ -674,37 +674,37 @@
'flash_ctrl.rma_ack' : ['lc_ctrl.lc_flash_rma_ack'],
'flash_ctrl.rma_seed' : ['lc_ctrl.lc_flash_rma_seed'],
'sram_ctrl_main.sram_scr' : ['ram_main.sram_scr'],
- 'sram_ctrl_ret.sram_scr' : ['ram_ret.sram_scr'],
+ 'sram_ctrl_ret_aon.sram_scr' : ['ram_ret_aon.sram_scr'],
'otp_ctrl.sram_otp_key' : ['sram_ctrl_main.sram_otp_key',
- 'sram_ctrl_ret.sram_otp_key']
- 'pwrmgr.pwr_flash' : ['flash_ctrl.pwrmgr'],
- 'pwrmgr.pwr_rst' : ['rstmgr.pwr'],
- 'pwrmgr.pwr_clk' : ['clkmgr.pwr'],
- 'pwrmgr.pwr_otp' : ['otp_ctrl.pwr_otp'],
- 'pwrmgr.pwr_lc' : ['lc_ctrl.pwr_lc'],
+ 'sram_ctrl_ret_aon.sram_otp_key']
+ 'pwrmgr_aon.pwr_flash' : ['flash_ctrl.pwrmgr'],
+ 'pwrmgr_aon.pwr_rst' : ['rstmgr_aon.pwr'],
+ 'pwrmgr_aon.pwr_clk' : ['clkmgr_aon.pwr'],
+ 'pwrmgr_aon.pwr_otp' : ['otp_ctrl.pwr_otp'],
+ 'pwrmgr_aon.pwr_lc' : ['lc_ctrl.pwr_lc'],
'flash_ctrl.keymgr' : ['keymgr.flash'],
- 'alert_handler.crashdump' : ['rstmgr.alert_dump'],
- 'rv_core_ibex.crashdump' : ['rstmgr.cpu_dump'],
+ 'alert_handler.crashdump' : ['rstmgr_aon.alert_dump'],
+ 'rv_core_ibex.crashdump' : ['rstmgr_aon.cpu_dump'],
'csrng.entropy_src_hw_if' : ['entropy_src.entropy_src_hw_if'],
// usbdev connection to pinmux
- 'usbdev.usb_out_of_rst' : ['pinmux.usb_out_of_rst'],
- 'usbdev.usb_aon_wake_en' : ['pinmux.usb_aon_wake_en'],
- 'usbdev.usb_aon_wake_ack' : ['pinmux.usb_aon_wake_ack'],
- 'usbdev.usb_suspend' : ['pinmux.usb_suspend'],
- 'pinmux.usb_state_debug' : ['usbdev.usb_state_debug'],
+ 'usbdev.usb_out_of_rst' : ['pinmux_aon.usb_out_of_rst'],
+ 'usbdev.usb_aon_wake_en' : ['pinmux_aon.usb_aon_wake_en'],
+ 'usbdev.usb_aon_wake_ack' : ['pinmux_aon.usb_aon_wake_ack'],
+ 'usbdev.usb_suspend' : ['pinmux_aon.usb_suspend'],
+ 'pinmux_aon.usb_state_debug' : ['usbdev.usb_state_debug'],
// TODO see #4447
//'edn0.edn' : ['keymgr.edn', 'otp_ctrl.edn'],
// KeyMgr Sideload & KDF function
- 'otp_ctrl.otp_keymgr_key': ['keymgr.otp_key'],
- 'keymgr.kmac_key' : ['kmac.keymgr_key']
- 'keymgr.kmac_data': ['kmac.keymgr_kdf']
+ 'otp_ctrl.otp_keymgr_key' : ['keymgr.otp_key'],
+ 'keymgr.kmac_key' : ['kmac.keymgr_key']
+ 'keymgr.kmac_data' : ['kmac.keymgr_kdf']
// The idle connection is automatically connected through topgen.
// The user does not need to explicitly declare anything other than
// an empty list.
- 'clkmgr.idle' : [],
+ 'clkmgr_aon.idle' : [],
// OTP LC interface
'otp_ctrl.otp_lc_data' : ['lc_ctrl.otp_lc_data'],
@@ -726,12 +726,12 @@
//'lc_ctrl.lc_keymgr_en' : ['keymgr.lc_keymgr_en'],
'lc_ctrl.lc_escalate_en' : ['otp_ctrl.lc_escalate_en',
'sram_ctrl_main.lc_escalate_en',
- 'sram_ctrl_ret.lc_escalate_en'],
+ 'sram_ctrl_ret_aon.lc_escalate_en'],
'lc_ctrl.lc_check_byp_en' : ['otp_ctrl.lc_check_byp_en'],
// TODO: OTP Clock bypass signal going from LC to AST/clkmgr
'lc_ctrl.lc_clk_byp_req' : [],
- 'lc_ctrl.lc_clk_byp_ack' : ['clkmgr.lc_clk_bypass_ack'],
+ 'lc_ctrl.lc_clk_byp_ack' : ['clkmgr_aon.lc_clk_bypass_ack'],
// LC access control signal broadcast
'lc_ctrl.lc_creator_seed_sw_rw_en' : ['otp_ctrl.lc_creator_seed_sw_rw_en',
@@ -747,7 +747,7 @@
// It defines the signal in the top and connect from the module,
// use of the signal is up to top template
'top': [
- 'rstmgr.resets', 'rstmgr.cpu', 'pwrmgr.pwr_cpu', 'clkmgr.clocks',
+ 'rstmgr_aon.resets', 'rstmgr_aon.cpu', 'pwrmgr_aon.pwr_cpu', 'clkmgr_aon.clocks',
// Xbars
'main.tl_corei', 'main.tl_cored', 'main.tl_dm_sba', 'main.tl_debug_mem'
@@ -755,14 +755,14 @@
// ext is to create port in the top.
'external': {
- 'clkmgr.clk_main': 'clk_main', // clock inputs
- 'clkmgr.clk_io': 'clk_io', // clock inputs
- 'clkmgr.clk_usb': 'clk_usb', // clock inputs
- 'clkmgr.clk_aon': 'clk_aon', // clock inputs
- 'rstmgr.ast': '', // ast reset input
- 'pwrmgr.pwr_ast': '',
- 'sensor_ctrl.ast_alert': '',
- 'sensor_ctrl.ast_status': '',
+ 'clkmgr_aon.clk_main': 'clk_main', // clock inputs
+ 'clkmgr_aon.clk_io': 'clk_io', // clock inputs
+ 'clkmgr_aon.clk_usb': 'clk_usb', // clock inputs
+ 'clkmgr_aon.clk_aon': 'clk_aon', // clock inputs
+ 'rstmgr_aon.ast': '', // ast reset input
+ 'pwrmgr_aon.pwr_ast': '',
+ 'sensor_ctrl_aon.ast_alert': '',
+ 'sensor_ctrl_aon.ast_status': '',
'usbdev.usb_ref_val': '',
'usbdev.usb_ref_pulse': '',
'peri.tl_ast_wrapper': 'ast_tl',
@@ -803,7 +803,7 @@
// first item goes to LSB of the interrupt source
interrupt_module: ["uart0", "uart1", "uart2", "uart3",
"gpio", "spi_device", "i2c0", "i2c1", "i2c2", "pattgen",
- "flash_ctrl", "hmac", "alert_handler", "nmi_gen", "usbdev", "pwrmgr",
+ "flash_ctrl", "hmac", "alert_handler", "nmi_gen", "usbdev", "pwrmgr_aon",
"otbn", "keymgr", "kmac", "otp_ctrl", "csrng", "edn0", "edn1",
"entropy_src"]
@@ -818,8 +818,8 @@
// ===== ALERT HANDLER ======================================================
// list all modules that expose alerts
// first item goes to LSB of the alert source
- alert_module: [ "aes", "otbn", "sensor_ctrl", "keymgr", "otp_ctrl", "lc_ctrl",
- "entropy_src", "sram_ctrl_main", "sram_ctrl_ret", "flash_ctrl"]
+ alert_module: [ "aes", "otbn", "sensor_ctrl_aon", "keymgr", "otp_ctrl", "lc_ctrl",
+ "entropy_src", "sram_ctrl_main", "sram_ctrl_ret_aon", "flash_ctrl"]
// generated list of alerts:
alert: [