[ earlgrey ] Updating module memory map to better reflect future plans
Soon to be added modules should be added to the memory map in
their proper places. This update rearranges top_earlgrey to
better align with the plan laid out in the following
spreadsheet:
https://docs.google.com/spreadsheets/d/1ptfdrG5RWiYHKtjYyDO1ubGYPPlN_4YQfzRKO1G1Mls/edit#gid=0
Signed-off-by: Martin Lueker-Boden <martin.lueker-boden@wdc.com>
diff --git a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
index f2fb35c..556e4b6 100644
--- a/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
+++ b/hw/top_earlgrey/data/autogen/top_earlgrey.gen.hjson
@@ -523,7 +523,7 @@
{
rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x40010000
+ base_addr: 0x40040000
clock_reset_export: []
clock_connections:
{
@@ -592,7 +592,7 @@
{
rst_ni: rstmgr_resets.rst_spi_device_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x40020000
+ base_addr: 0x40050000
clock_reset_export: []
clock_connections:
{
@@ -727,202 +727,6 @@
]
}
{
- name: flash_ctrl
- type: flash_ctrl
- clock_srcs:
- {
- clk_i: main
- }
- clock_group: infra
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]
- }
- base_addr: 0x40030000
- generated: "true"
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_infra
- }
- domain: "0"
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list: []
- interrupt_list:
- [
- {
- name: prog_empty
- width: 1
- bits: "0"
- bitinfo:
- [
- 1
- 1
- 0
- ]
- type: interrupt
- }
- {
- name: prog_lvl
- width: 1
- bits: "1"
- bitinfo:
- [
- 2
- 1
- 1
- ]
- type: interrupt
- }
- {
- name: rd_full
- width: 1
- bits: "2"
- bitinfo:
- [
- 4
- 1
- 2
- ]
- type: interrupt
- }
- {
- name: rd_lvl
- width: 1
- bits: "3"
- bitinfo:
- [
- 8
- 1
- 3
- ]
- type: interrupt
- }
- {
- name: op_done
- width: 1
- bits: "4"
- bitinfo:
- [
- 16
- 1
- 4
- ]
- type: interrupt
- }
- {
- name: op_error
- width: 1
- bits: "5"
- bitinfo:
- [
- 32
- 1
- 5
- ]
- type: interrupt
- }
- ]
- alert_list: []
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- struct: flash
- type: req_rsp
- name: flash
- act: req
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: flash_ctrl_flash
- index: -1
- }
- {
- struct: otp_flash
- type: uni
- name: otp
- act: rcv
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_provision_en
- act: rcv
- package: lc_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: lc_flash
- type: req_rsp
- name: lc
- act: rsp
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: edn_entropy
- type: uni
- name: edn
- act: rcv
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: pwr_flash
- type: req_rsp
- name: pwrmgr
- act: rsp
- package: pwrmgr_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: pwrmgr_pwr_flash
- index: -1
- }
- {
- struct: keymgr_flash
- type: uni
- name: keymgr
- act: req
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_type: broadcast
- top_signame: flash_ctrl_keymgr
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: flash_ctrl_tl
- index: -1
- }
- ]
- }
- {
name: rv_timer
type: rv_timer
clock_srcs:
@@ -934,7 +738,7 @@
{
rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x40080000
+ base_addr: 0x40100000
clock_reset_export: []
clock_connections:
{
@@ -978,139 +782,40 @@
]
}
{
- name: aes
- type: aes
+ name: sensor_ctrl
+ type: sensor_ctrl
clock_srcs:
{
- clk_i: main
+ clk_i: io_div4
}
- clock_group: trans
+ clock_group: secure
+ clock_reset_export:
+ [
+ ast
+ ]
reset_connections:
{
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]
}
+ domain: Aon
base_addr: 0x40110000
- clock_reset_export: []
+ top_only: "true"
clock_connections:
{
- clk_i: clkmgr_clocks.clk_main_aes
+ clk_i: clkmgr_clocks.clk_io_div4_secure
}
- domain: "0"
size: 0x1000
bus_device: tlul
bus_host: none
available_input_list: []
available_output_list: []
available_inout_list: []
- param_list:
- [
- {
- name: AES192Enable
- type: bit
- default: 1'b1
- desc: Disable (0) or enable (1) support for 192-bit key lengths (AES-192).
- local: "false"
- expose: "false"
- randcount: "0"
- randtype: none
- name_top: AesAES192Enable
- }
- {
- name: Masking
- type: bit
- default: 1'b1
- desc:
- '''
- Disable (0) or enable (1) first-order masking of the AES cipher core.
- Masking requires the use of a masked S-Box, see SBoxImpl parameter.
- '''
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: AesMasking
- }
- {
- name: SBoxImpl
- type: aes_pkg::sbox_impl_e
- default: aes_pkg::SBoxImplCanrightMasked
- desc: Selection of the S-Box implementation. See aes_pkg.sv.
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: AesSBoxImpl
- }
- {
- name: SecStartTriggerDelay
- type: int unsigned
- default: "0"
- desc:
- '''
- Manual start trigger delay, useful for SCA measurements.
- A value of e.g. 40 allows the processor to go into sleep before AES starts operation.
- '''
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: SecAesStartTriggerDelay
- }
- {
- name: SecAllowForcingMasks
- type: bit
- default: 1'b0
- desc:
- '''
- Forbid (0) or allow (1) forcing the mask to zero via FORCE_ZERO_MASK bit in the Control Register.
- Useful for SCA measurements.
- Meaningful only if masking is enabled.
- '''
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: SecAesAllowForcingMasks
- }
- {
- name: SeedClearing
- type: logic [aes_pkg::WidthPRDClearing-1:0]
- default: aes_pkg::DefaultSeedClearing
- desc: Default seed of the PRNG used for register clearing.
- local: "false"
- expose: "false"
- randcount: "0"
- randtype: none
- name_top: AesSeedClearing
- }
- {
- name: SeedMasking
- type: logic [aes_pkg::WidthPRDMasking-1:0]
- default: aes_pkg::DefaultSeedMasking
- desc: Default seed of the PRNG used for masking.
- local: "false"
- expose: "false"
- randcount: "0"
- randtype: none
- name_top: AesSeedMasking
- }
- {
- name: AlertAsyncOn
- type: logic [aes_reg_pkg::NumAlerts-1:0]
- default: "{aes_reg_pkg::NumAlerts{1'b1}}"
- desc: One bit per alert specifying whether the corresponding sender in the AES module and the receiver in the alert handler are in the same clock domain (0) or whether there is an asynchronous boundary in between (1).
- local: "false"
- expose: "false"
- randcount: "0"
- randtype: none
- name_top: AesAlertAsyncOn
- }
- ]
+ param_list: []
interrupt_list: []
alert_list:
[
{
- name: ctrl_err_update
+ name: as
width: 1
bits: "0"
bitinfo:
@@ -1120,10 +825,10 @@
0
]
type: alert
- async: 0
+ async: 1
}
{
- name: ctrl_err_storage
+ name: cg
width: 1
bits: "1"
bitinfo:
@@ -1133,95 +838,10 @@
1
]
type: alert
- async: 0
- }
- ]
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- name: idle
- type: uni
- act: req
- package: ""
- struct: logic
- width: 1
- inst_name: aes
- default: ""
- top_signame: clkmgr_idle
- index: 0
+ async: 1
}
{
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: aes
- width: 1
- default: ""
- top_signame: aes_tl
- index: -1
- }
- ]
- }
- {
- name: hmac
- type: hmac
- clock_srcs:
- {
- clk_i: main
- }
- clock_group: trans
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
- }
- base_addr: 0x40120000
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_hmac
- }
- domain: "0"
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list: []
- interrupt_list:
- [
- {
- name: hmac_done
- width: 1
- bits: "0"
- bitinfo:
- [
- 1
- 1
- 0
- ]
- type: interrupt
- }
- {
- name: fifo_empty
- width: 1
- bits: "1"
- bitinfo:
- [
- 2
- 1
- 1
- ]
- type: interrupt
- }
- {
- name: hmac_err
+ name: gd
width: 1
bits: "2"
bitinfo:
@@ -1230,145 +850,62 @@
1
2
]
- type: interrupt
+ type: alert
+ async: 1
}
- ]
- alert_list: []
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
{
- name: idle
- type: uni
- act: req
- package: ""
- struct: logic
+ name: ts_hi
width: 1
- inst_name: hmac
- default: ""
- top_signame: clkmgr_idle
- index: 1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: hmac
- width: 1
- default: ""
- top_signame: hmac_tl
- index: -1
- }
- ]
- }
- {
- name: kmac
- type: kmac
- clock_srcs:
- {
- clk_i: main
- }
- clock_group: trans
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
- }
- base_addr: 0x41120000
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_kmac
- }
- domain: "0"
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list:
- [
- {
- name: EnMasking
- type: int
- default: "0"
- desc:
- '''
- Disable(0) or enable(1) first-order masking of Keccak round.
-
- If masking is enabled, ReuseShare parameter will impact the design.
- '''
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: KmacEnMasking
- }
- {
- name: ReuseShare
- type: int
- default: "0"
- desc:
- '''
- If enabled (1), the internal Keccak round logic will re-use the
- adjacent shares as entropy in Domain-Oriented Masking AND logic.
- It improves the throughput of Keccak, as it only requires small
- amount of entropy rather than 1600 bit per round.
-
- This feature is not implemented yet.
- '''
- local: "false"
- expose: "true"
- randcount: "0"
- randtype: none
- name_top: KmacReuseShare
- }
- ]
- interrupt_list:
- [
- {
- name: kmac_done
- width: 1
- bits: "0"
+ bits: "3"
bitinfo:
[
+ 8
1
- 1
- 0
+ 3
]
- type: interrupt
+ type: alert
+ async: 1
}
{
- name: fifo_empty
+ name: ts_lo
width: 1
- bits: "1"
+ bits: "4"
bitinfo:
[
- 2
+ 16
1
- 1
- ]
- type: interrupt
- }
- {
- name: kmac_err
- width: 1
- bits: "2"
- bitinfo:
- [
4
- 1
- 2
]
- type: interrupt
+ type: alert
+ async: 1
+ }
+ {
+ name: ls
+ width: 1
+ bits: "5"
+ bitinfo:
+ [
+ 32
+ 1
+ 5
+ ]
+ type: alert
+ async: 1
+ }
+ {
+ name: ot
+ width: 1
+ bits: "6"
+ bitinfo:
+ [
+ 64
+ 1
+ 6
+ ]
+ type: alert
+ async: 1
}
]
- alert_list: []
wakeup_list: []
reset_request_list: []
scan: "false"
@@ -1376,40 +913,30 @@
inter_signal_list:
[
{
- struct: hw_key_req
- type: uni
- name: keymgr_key
- act: rcv
- package: keymgr_pkg
- inst_name: kmac
- width: 1
- default: ""
- top_signame: keymgr_kmac_key
- index: -1
- }
- {
- struct: kmac_data
+ struct: ast_alert
type: req_rsp
- name: keymgr_kdf
+ name: ast_alert
act: rsp
- package: keymgr_pkg
- inst_name: kmac
+ package: ast_wrapper_pkg
+ inst_name: sensor_ctrl
width: 1
default: ""
- top_signame: keymgr_kmac_data
+ external: true
+ top_signame: sensor_ctrl_ast_alert
index: -1
}
{
- name: idle
+ struct: ast_status
type: uni
- act: req
- package: ""
- struct: logic
+ name: ast_status
+ act: rcv
+ package: ast_wrapper_pkg
+ inst_name: sensor_ctrl
width: 1
- inst_name: kmac
default: ""
- top_signame: clkmgr_idle
- index: 2
+ external: true
+ top_signame: sensor_ctrl_ast_status
+ index: -1
}
{
struct: tl
@@ -1417,251 +944,34 @@
type: req_rsp
act: rsp
name: tl
- inst_name: kmac
+ inst_name: sensor_ctrl
width: 1
default: ""
- top_signame: kmac_tl
+ top_signame: sensor_ctrl_tl
index: -1
}
]
}
{
- name: rv_plic
- type: rv_plic
+ name: otp_ctrl
+ type: otp_ctrl
clock_srcs:
{
- clk_i: main
+ clk_i: io_div4
}
- clock_group: secure
+ clock_group: timers
reset_connections:
{
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ rst_ni: rstmgr_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x40090000
- generated: "true"
+ base_addr: 0x40130000
clock_reset_export: []
clock_connections:
{
- clk_i: clkmgr_clocks.clk_main_secure
+ clk_i: clkmgr_clocks.clk_io_div4_timers
}
domain: "0"
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list: []
- interrupt_list: []
- alert_list: []
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: rv_plic
- width: 1
- default: ""
- top_signame: rv_plic_tl
- index: -1
- }
- ]
- }
- {
- name: pinmux
- type: pinmux
- clock: main
- clock_srcs:
- {
- clk_i: main
- clk_aon_i: aon
- }
- clock_group: secure
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]
- rst_aon_ni: rstmgr_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel]
- }
- domain: Aon
- base_addr: 0x40070000
- generated: "true"
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_secure
- clk_aon_i: clkmgr_clocks.clk_aon_secure
- }
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list: []
- interrupt_list: []
- alert_list: []
- wakeup_list:
- [
- {
- name: aon_wkup_req
- width: "1"
- }
- ]
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- struct: lc_strap
- type: req_rsp
- name: lc_pinmux_strap
- act: rsp
- package: pinmux_pkg
- default: "'0"
- inst_name: pinmux
- index: -1
- }
- {
- struct: dft_strap_test
- type: uni
- name: dft_strap_test
- act: req
- package: pinmux_pkg
- default: "'0"
- inst_name: pinmux
- index: -1
- }
- {
- struct: io_pok
- type: uni
- name: io_pok
- act: rcv
- package: pinmux_pkg
- default: "{pinmux_pkg::NIOPokSignals{1'b1}}"
- inst_name: pinmux
- index: -1
- }
- {
- struct: logic
- type: uni
- name: sleep_en
- act: rcv
- package: ""
- default: 1'b0
- inst_name: pinmux
- index: -1
- }
- {
- struct: logic
- type: uni
- name: aon_wkup_req
- act: req
- package: ""
- default: 1'b0
- inst_name: pinmux
- width: 1
- top_signame: pwrmgr_wakeups
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: pinmux
- width: 1
- default: ""
- top_signame: pinmux_tl
- index: -1
- }
- ]
- }
- {
- name: padctrl
- type: padctrl
- clock: main
- clock_srcs:
- {
- clk_i: main
- }
- clock_group: secure
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]
- }
- domain: Aon
- base_addr: 0x40160000
- generated: "true"
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_secure
- }
- size: 0x1000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list: []
- interrupt_list: []
- alert_list: []
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: padctrl
- width: 1
- default: ""
- top_signame: padctrl_tl
- index: -1
- }
- ]
- }
- {
- name: alert_handler
- type: alert_handler
- clock_srcs:
- {
- clk_i: main
- }
- clock_group: secure
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
- }
- base_addr: 0x411b0000
- generated: "true"
- localparam:
- {
- EscCntDw: 32
- AccuCntDw: 16
- LfsrSeed: 0x7FFFFFFF
- }
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_main_secure
- }
- domain: "0"
- size: 0x1000
+ size: 0x4000
bus_device: tlul
bus_host: none
available_input_list: []
@@ -1672,32 +982,68 @@
{
name: RndCnstLfsrSeed
desc: Compile-time random bits for initial LFSR seed
- type: alert_pkg::lfsr_seed_t
- randcount: "32"
+ type: otp_ctrl_pkg::lfsr_seed_t
+ randcount: "40"
randtype: data
local: "false"
- default: 0x5def7861
+ default: 0xf45def7861
expose: "false"
- name_top: RndCnstAlertHandlerLfsrSeed
- randwidth: 32
+ name_top: RndCnstOtpCtrlLfsrSeed
+ randwidth: 40
}
{
name: RndCnstLfsrPerm
desc: Compile-time random permutation for LFSR output
- type: alert_pkg::lfsr_perm_t
- randcount: "32"
+ type: otp_ctrl_pkg::lfsr_perm_t
+ randcount: "40"
randtype: perm
local: "false"
- default: 0x5f00c4cafd73fc4ac479a61068375f38956d84b3
+ default: 0x5d294061e29a7c404f4593035a19097666e37072064153623855022d39e0
expose: "false"
- name_top: RndCnstAlertHandlerLfsrPerm
- randwidth: 160
+ name_top: RndCnstOtpCtrlLfsrPerm
+ randwidth: 240
+ }
+ {
+ name: RndCnstKey
+ desc: Compile-time random scrambling keys
+ type: otp_ctrl_pkg::key_array_t
+ randcount: "384"
+ randtype: data
+ local: "false"
+ default: 0x79ee911ce801484ba8373086f9dd4eee6faf88f22bccd612d1c09f5c02b2c8d1fdb92558e2d9c5d24440722325a93144
+ expose: "false"
+ name_top: RndCnstOtpCtrlKey
+ randwidth: 384
+ }
+ {
+ name: RndCnstDigestConst
+ desc: Compile-time random digest constant
+ type: otp_ctrl_pkg::digest_const_array_t
+ randcount: "640"
+ randtype: data
+ local: "false"
+ default: 0xce7d846469a3b8e35a6bd38295bd2fb366b3d62126c75eeaeb93d32f5cbc77463c91917516d51a2fa4400adc2669e2530ee2a465fd4dabcbd877afb6bcfeed7e03a0b091dc41d062dd10ca2d7b93136f
+ expose: "false"
+ name_top: RndCnstOtpCtrlDigestConst
+ randwidth: 640
+ }
+ {
+ name: RndCnstDigestIV
+ desc: Compile-time random digest IV
+ type: otp_ctrl_pkg::digest_iv_array_t
+ randcount: "320"
+ randtype: data
+ local: "false"
+ default: 0xb77f07ff3d7297200d5ab25561af49c696466a983e5346826a43628219e5a91389b9fe0d3b818e46
+ expose: "false"
+ name_top: RndCnstOtpCtrlDigestIV
+ randwidth: 320
}
]
interrupt_list:
[
{
- name: classa
+ name: otp_operation_done
width: 1
bits: "0"
bitinfo:
@@ -1709,7 +1055,7 @@
type: interrupt
}
{
- name: classb
+ name: otp_error
width: 1
bits: "1"
bitinfo:
@@ -1720,32 +1066,36 @@
]
type: interrupt
}
+ ]
+ alert_list:
+ [
{
- name: classc
+ name: otp_macro_failure
width: 1
- bits: "2"
+ bits: "0"
bitinfo:
[
- 4
1
- 2
+ 1
+ 0
]
- type: interrupt
+ type: alert
+ async: 1
}
{
- name: classd
+ name: otp_check_failure
width: 1
- bits: "3"
+ bits: "1"
bitinfo:
[
- 8
+ 2
1
- 3
+ 1
]
- type: interrupt
+ type: alert
+ async: 1
}
]
- alert_list: []
wakeup_list: []
reset_request_list: []
scan: "false"
@@ -1753,16 +1103,162 @@
inter_signal_list:
[
{
- struct: alert_crashdump
+ struct: otp_ast_req
type: uni
- name: crashdump
+ name: otp_ast_pwr_seq
act: req
- package: alert_pkg
- inst_name: alert_handler
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
width: 1
- default: ""
- top_type: broadcast
- top_signame: alert_handler_crashdump
+ external: true
+ top_signame: otp_ctrl_otp_ast_pwr_seq
+ index: -1
+ }
+ {
+ struct: otp_ast_rsp
+ type: uni
+ name: otp_ast_pwr_seq_h
+ act: rcv
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ width: 1
+ external: true
+ top_signame: otp_ctrl_otp_ast_pwr_seq_h
+ index: -1
+ }
+ {
+ struct: otp_edn
+ type: req_rsp
+ name: otp_edn
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: pwr_otp
+ type: req_rsp
+ name: pwr_otp
+ act: rsp
+ default: "'0"
+ package: pwrmgr_pkg
+ inst_name: otp_ctrl
+ width: 1
+ top_signame: pwrmgr_pwr_otp
+ index: -1
+ }
+ {
+ struct: lc_otp_program
+ type: req_rsp
+ name: lc_otp_program
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_otp_token
+ type: req_rsp
+ name: lc_otp_token
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otp_lc_data
+ type: uni
+ name: otp_lc_data
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_escalate_en
+ act: rcv
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_provision_wr_en
+ act: rcv
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_dft_en
+ act: rcv
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otp_keymgr_key
+ type: uni
+ name: otp_keymgr_key
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: flash_otp_key
+ type: req_rsp
+ name: flash_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: sram_otp_key
+ width: "2"
+ type: req_rsp
+ name: sram_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otbn_otp_key
+ type: req_rsp
+ name: otbn_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: logic
+ type: uni
+ name: hw_cfg
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
index: -1
}
{
@@ -1771,10 +1267,10 @@
type: req_rsp
act: rsp
name: tl
- inst_name: alert_handler
+ inst_name: otp_ctrl
width: 1
default: ""
- top_signame: alert_handler_tl
+ top_signame: otp_ctrl_tl
index: -1
}
]
@@ -1794,7 +1290,7 @@
rst_slow_ni: rstmgr_resets.rst_por_aon_n[rstmgr_pkg::DomainAonSel]
}
domain: Aon
- base_addr: 0x400A0000
+ base_addr: 0x40400000
generated: "true"
clock_reset_export: []
clock_connections:
@@ -1972,7 +1468,7 @@
rst_ni: rst_ni
}
domain: Aon
- base_addr: 0x400B0000
+ base_addr: 0x40410000
generated: "true"
clock_reset_export: []
clock_connections:
@@ -2106,7 +1602,7 @@
rst_io_div4_ni: rstmgr_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel]
}
domain: Aon
- base_addr: 0x400C0000
+ base_addr: 0x40420000
generated: "true"
clock_reset_export: []
clock_connections:
@@ -2245,24 +1741,29 @@
]
}
{
- name: nmi_gen
- type: nmi_gen
+ name: pinmux
+ type: pinmux
+ clock: main
clock_srcs:
{
clk_i: main
+ clk_aon_i: aon
}
clock_group: secure
reset_connections:
{
- rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]
+ rst_aon_ni: rstmgr_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel]
}
- base_addr: 0x411c0000
+ domain: Aon
+ base_addr: 0x40460000
+ generated: "true"
clock_reset_export: []
clock_connections:
{
clk_i: clkmgr_clocks.clk_main_secure
+ clk_aon_i: clkmgr_clocks.clk_aon_secure
}
- domain: "0"
size: 0x1000
bus_device: tlul
bus_host: none
@@ -2270,67 +1771,70 @@
available_output_list: []
available_inout_list: []
param_list: []
- interrupt_list:
- [
- {
- name: esc0
- width: 1
- bits: "0"
- bitinfo:
- [
- 1
- 1
- 0
- ]
- type: interrupt
- }
- {
- name: esc1
- width: 1
- bits: "1"
- bitinfo:
- [
- 2
- 1
- 1
- ]
- type: interrupt
- }
- {
- name: esc2
- width: 1
- bits: "2"
- bitinfo:
- [
- 4
- 1
- 2
- ]
- type: interrupt
- }
- ]
+ interrupt_list: []
alert_list: []
- wakeup_list: []
- reset_request_list:
+ wakeup_list:
[
{
- name: nmi_rst_req
+ name: aon_wkup_req
+ width: "1"
}
]
+ reset_request_list: []
scan: "false"
scan_reset: "false"
inter_signal_list:
[
{
+ struct: lc_strap
+ type: req_rsp
+ name: lc_pinmux_strap
+ act: rsp
+ package: pinmux_pkg
+ default: "'0"
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: dft_strap_test
+ type: uni
+ name: dft_strap_test
+ act: req
+ package: pinmux_pkg
+ default: "'0"
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: io_pok
+ type: uni
+ name: io_pok
+ act: rcv
+ package: pinmux_pkg
+ default: "{pinmux_pkg::NIOPokSignals{1'b1}}"
+ inst_name: pinmux
+ index: -1
+ }
+ {
struct: logic
type: uni
- name: nmi_rst_req
+ name: sleep_en
+ act: rcv
+ package: ""
+ default: 1'b0
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: logic
+ type: uni
+ name: aon_wkup_req
act: req
package: ""
default: 1'b0
- inst_name: nmi_gen
+ inst_name: pinmux
width: 1
- top_signame: pwrmgr_rstreqs
+ top_signame: pwrmgr_wakeups
index: -1
}
{
@@ -2339,10 +1843,60 @@
type: req_rsp
act: rsp
name: tl
- inst_name: nmi_gen
+ inst_name: pinmux
width: 1
default: ""
- top_signame: nmi_gen_tl
+ top_signame: pinmux_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: padctrl
+ type: padctrl
+ clock: main
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: secure
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]
+ }
+ domain: Aon
+ base_addr: 0x40470000
+ generated: "true"
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_secure
+ }
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list: []
+ interrupt_list: []
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: padctrl
+ width: 1
+ default: ""
+ top_signame: padctrl_tl
index: -1
}
]
@@ -2366,7 +1920,7 @@
rst_usb_48mhz_ni: rstmgr_resets.rst_usb_n[rstmgr_pkg::DomainAonSel]
}
domain: Aon
- base_addr: 0x40150000
+ base_addr: 0x40500000
clock_connections:
{
clk_i: clkmgr_clocks.clk_io_div4_peri
@@ -2685,28 +2239,221 @@
]
}
{
- name: sensor_ctrl
- type: sensor_ctrl
+ name: flash_ctrl
+ type: flash_ctrl
clock_srcs:
{
- clk_i: io_div4
+ clk_i: main
}
- clock_group: secure
- clock_reset_export:
- [
- ast
- ]
+ clock_group: infra
reset_connections:
{
- rst_ni: rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel]
+ rst_ni: rstmgr_resets.rst_lc_n[rstmgr_pkg::Domain0Sel]
}
- domain: Aon
- base_addr: 0x40170000
- top_only: "true"
+ base_addr: 0x41000000
+ generated: "true"
+ clock_reset_export: []
clock_connections:
{
- clk_i: clkmgr_clocks.clk_io_div4_secure
+ clk_i: clkmgr_clocks.clk_main_infra
}
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list: []
+ interrupt_list:
+ [
+ {
+ name: prog_empty
+ width: 1
+ bits: "0"
+ bitinfo:
+ [
+ 1
+ 1
+ 0
+ ]
+ type: interrupt
+ }
+ {
+ name: prog_lvl
+ width: 1
+ bits: "1"
+ bitinfo:
+ [
+ 2
+ 1
+ 1
+ ]
+ type: interrupt
+ }
+ {
+ name: rd_full
+ width: 1
+ bits: "2"
+ bitinfo:
+ [
+ 4
+ 1
+ 2
+ ]
+ type: interrupt
+ }
+ {
+ name: rd_lvl
+ width: 1
+ bits: "3"
+ bitinfo:
+ [
+ 8
+ 1
+ 3
+ ]
+ type: interrupt
+ }
+ {
+ name: op_done
+ width: 1
+ bits: "4"
+ bitinfo:
+ [
+ 16
+ 1
+ 4
+ ]
+ type: interrupt
+ }
+ {
+ name: op_error
+ width: 1
+ bits: "5"
+ bitinfo:
+ [
+ 32
+ 1
+ 5
+ ]
+ type: interrupt
+ }
+ ]
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: flash
+ type: req_rsp
+ name: flash
+ act: req
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ width: 1
+ default: ""
+ top_signame: flash_ctrl_flash
+ index: -1
+ }
+ {
+ struct: otp_flash
+ type: uni
+ name: otp
+ act: rcv
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_provision_en
+ act: rcv
+ package: lc_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: lc_flash
+ type: req_rsp
+ name: lc
+ act: rsp
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: edn_entropy
+ type: uni
+ name: edn
+ act: rcv
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: pwr_flash
+ type: req_rsp
+ name: pwrmgr
+ act: rsp
+ package: pwrmgr_pkg
+ inst_name: flash_ctrl
+ width: 1
+ default: ""
+ top_signame: pwrmgr_pwr_flash
+ index: -1
+ }
+ {
+ struct: keymgr_flash
+ type: uni
+ name: keymgr
+ act: req
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ width: 1
+ default: ""
+ top_type: broadcast
+ top_signame: flash_ctrl_keymgr
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: flash_ctrl
+ width: 1
+ default: ""
+ top_signame: flash_ctrl_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: rv_plic
+ type: rv_plic
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: secure
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x41010000
+ generated: "true"
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_secure
+ }
+ domain: "0"
size: 0x1000
bus_device: tlul
bus_host: none
@@ -2715,10 +2462,161 @@
available_inout_list: []
param_list: []
interrupt_list: []
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: rv_plic
+ width: 1
+ default: ""
+ top_signame: rv_plic_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: aes
+ type: aes
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: trans
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x41100000
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_aes
+ }
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list:
+ [
+ {
+ name: AES192Enable
+ type: bit
+ default: 1'b1
+ desc: Disable (0) or enable (1) support for 192-bit key lengths (AES-192).
+ local: "false"
+ expose: "false"
+ randcount: "0"
+ randtype: none
+ name_top: AesAES192Enable
+ }
+ {
+ name: Masking
+ type: bit
+ default: 1'b1
+ desc:
+ '''
+ Disable (0) or enable (1) first-order masking of the AES cipher core.
+ Masking requires the use of a masked S-Box, see SBoxImpl parameter.
+ '''
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: AesMasking
+ }
+ {
+ name: SBoxImpl
+ type: aes_pkg::sbox_impl_e
+ default: aes_pkg::SBoxImplCanrightMasked
+ desc: Selection of the S-Box implementation. See aes_pkg.sv.
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: AesSBoxImpl
+ }
+ {
+ name: SecStartTriggerDelay
+ type: int unsigned
+ default: "0"
+ desc:
+ '''
+ Manual start trigger delay, useful for SCA measurements.
+ A value of e.g. 40 allows the processor to go into sleep before AES starts operation.
+ '''
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: SecAesStartTriggerDelay
+ }
+ {
+ name: SecAllowForcingMasks
+ type: bit
+ default: 1'b0
+ desc:
+ '''
+ Forbid (0) or allow (1) forcing the mask to zero via FORCE_ZERO_MASK bit in the Control Register.
+ Useful for SCA measurements.
+ Meaningful only if masking is enabled.
+ '''
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: SecAesAllowForcingMasks
+ }
+ {
+ name: SeedClearing
+ type: logic [aes_pkg::WidthPRDClearing-1:0]
+ default: aes_pkg::DefaultSeedClearing
+ desc: Default seed of the PRNG used for register clearing.
+ local: "false"
+ expose: "false"
+ randcount: "0"
+ randtype: none
+ name_top: AesSeedClearing
+ }
+ {
+ name: SeedMasking
+ type: logic [aes_pkg::WidthPRDMasking-1:0]
+ default: aes_pkg::DefaultSeedMasking
+ desc: Default seed of the PRNG used for masking.
+ local: "false"
+ expose: "false"
+ randcount: "0"
+ randtype: none
+ name_top: AesSeedMasking
+ }
+ {
+ name: AlertAsyncOn
+ type: logic [aes_reg_pkg::NumAlerts-1:0]
+ default: "{aes_reg_pkg::NumAlerts{1'b1}}"
+ desc: One bit per alert specifying whether the corresponding sender in the AES module and the receiver in the alert handler are in the same clock domain (0) or whether there is an asynchronous boundary in between (1).
+ local: "false"
+ expose: "false"
+ randcount: "0"
+ randtype: none
+ name_top: AesAlertAsyncOn
+ }
+ ]
+ interrupt_list: []
alert_list:
[
{
- name: as
+ name: ctrl_err_update
width: 1
bits: "0"
bitinfo:
@@ -2728,10 +2626,10 @@
0
]
type: alert
- async: 1
+ async: 0
}
{
- name: cg
+ name: ctrl_err_storage
width: 1
bits: "1"
bitinfo:
@@ -2741,72 +2639,7 @@
1
]
type: alert
- async: 1
- }
- {
- name: gd
- width: 1
- bits: "2"
- bitinfo:
- [
- 4
- 1
- 2
- ]
- type: alert
- async: 1
- }
- {
- name: ts_hi
- width: 1
- bits: "3"
- bitinfo:
- [
- 8
- 1
- 3
- ]
- type: alert
- async: 1
- }
- {
- name: ts_lo
- width: 1
- bits: "4"
- bitinfo:
- [
- 16
- 1
- 4
- ]
- type: alert
- async: 1
- }
- {
- name: ls
- width: 1
- bits: "5"
- bitinfo:
- [
- 32
- 1
- 5
- ]
- type: alert
- async: 1
- }
- {
- name: ot
- width: 1
- bits: "6"
- bitinfo:
- [
- 64
- 1
- 6
- ]
- type: alert
- async: 1
+ async: 0
}
]
wakeup_list: []
@@ -2816,30 +2649,16 @@
inter_signal_list:
[
{
- struct: ast_alert
- type: req_rsp
- name: ast_alert
- act: rsp
- package: ast_wrapper_pkg
- inst_name: sensor_ctrl
- width: 1
- default: ""
- external: true
- top_signame: sensor_ctrl_ast_alert
- index: -1
- }
- {
- struct: ast_status
+ name: idle
type: uni
- name: ast_status
- act: rcv
- package: ast_wrapper_pkg
- inst_name: sensor_ctrl
+ act: req
+ package: ""
+ struct: logic
width: 1
+ inst_name: aes
default: ""
- external: true
- top_signame: sensor_ctrl_ast_status
- index: -1
+ top_signame: clkmgr_idle
+ index: 0
}
{
struct: tl
@@ -2847,10 +2666,267 @@
type: req_rsp
act: rsp
name: tl
- inst_name: sensor_ctrl
+ inst_name: aes
width: 1
default: ""
- top_signame: sensor_ctrl_tl
+ top_signame: aes_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: hmac
+ type: hmac
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: trans
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x41110000
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_hmac
+ }
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list: []
+ interrupt_list:
+ [
+ {
+ name: hmac_done
+ width: 1
+ bits: "0"
+ bitinfo:
+ [
+ 1
+ 1
+ 0
+ ]
+ type: interrupt
+ }
+ {
+ name: fifo_empty
+ width: 1
+ bits: "1"
+ bitinfo:
+ [
+ 2
+ 1
+ 1
+ ]
+ type: interrupt
+ }
+ {
+ name: hmac_err
+ width: 1
+ bits: "2"
+ bitinfo:
+ [
+ 4
+ 1
+ 2
+ ]
+ type: interrupt
+ }
+ ]
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ name: idle
+ type: uni
+ act: req
+ package: ""
+ struct: logic
+ width: 1
+ inst_name: hmac
+ default: ""
+ top_signame: clkmgr_idle
+ index: 1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: hmac
+ width: 1
+ default: ""
+ top_signame: hmac_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: kmac
+ type: kmac
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: trans
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x41120000
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_kmac
+ }
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list:
+ [
+ {
+ name: EnMasking
+ type: int
+ default: "0"
+ desc:
+ '''
+ Disable(0) or enable(1) first-order masking of Keccak round.
+
+ If masking is enabled, ReuseShare parameter will impact the design.
+ '''
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: KmacEnMasking
+ }
+ {
+ name: ReuseShare
+ type: int
+ default: "0"
+ desc:
+ '''
+ If enabled (1), the internal Keccak round logic will re-use the
+ adjacent shares as entropy in Domain-Oriented Masking AND logic.
+ It improves the throughput of Keccak, as it only requires small
+ amount of entropy rather than 1600 bit per round.
+
+ This feature is not implemented yet.
+ '''
+ local: "false"
+ expose: "true"
+ randcount: "0"
+ randtype: none
+ name_top: KmacReuseShare
+ }
+ ]
+ interrupt_list:
+ [
+ {
+ name: kmac_done
+ width: 1
+ bits: "0"
+ bitinfo:
+ [
+ 1
+ 1
+ 0
+ ]
+ type: interrupt
+ }
+ {
+ name: fifo_empty
+ width: 1
+ bits: "1"
+ bitinfo:
+ [
+ 2
+ 1
+ 1
+ ]
+ type: interrupt
+ }
+ {
+ name: kmac_err
+ width: 1
+ bits: "2"
+ bitinfo:
+ [
+ 4
+ 1
+ 2
+ ]
+ type: interrupt
+ }
+ ]
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: hw_key_req
+ type: uni
+ name: keymgr_key
+ act: rcv
+ package: keymgr_pkg
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: keymgr_kmac_key
+ index: -1
+ }
+ {
+ struct: kmac_data
+ type: req_rsp
+ name: keymgr_kdf
+ act: rsp
+ package: keymgr_pkg
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: keymgr_kmac_data
+ index: -1
+ }
+ {
+ name: idle
+ type: uni
+ act: req
+ package: ""
+ struct: logic
+ width: 1
+ inst_name: kmac
+ default: ""
+ top_signame: clkmgr_idle
+ index: 2
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: kmac_tl
index: -1
}
]
@@ -2867,7 +2943,7 @@
{
rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x401a0000
+ base_addr: 0x41130000
clock_reset_export: []
clock_connections:
{
@@ -3031,329 +3107,6 @@
]
}
{
- name: otp_ctrl
- type: otp_ctrl
- clock_srcs:
- {
- clk_i: io_div4
- }
- clock_group: timers
- reset_connections:
- {
- rst_ni: rstmgr_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel]
- }
- base_addr: 0x401b0000
- clock_reset_export: []
- clock_connections:
- {
- clk_i: clkmgr_clocks.clk_io_div4_timers
- }
- domain: "0"
- size: 0x4000
- bus_device: tlul
- bus_host: none
- available_input_list: []
- available_output_list: []
- available_inout_list: []
- param_list:
- [
- {
- name: RndCnstLfsrSeed
- desc: Compile-time random bits for initial LFSR seed
- type: otp_ctrl_pkg::lfsr_seed_t
- randcount: "40"
- randtype: data
- local: "false"
- default: 0xf45def7861
- expose: "false"
- name_top: RndCnstOtpCtrlLfsrSeed
- randwidth: 40
- }
- {
- name: RndCnstLfsrPerm
- desc: Compile-time random permutation for LFSR output
- type: otp_ctrl_pkg::lfsr_perm_t
- randcount: "40"
- randtype: perm
- local: "false"
- default: 0x5d294061e29a7c404f4593035a19097666e37072064153623855022d39e0
- expose: "false"
- name_top: RndCnstOtpCtrlLfsrPerm
- randwidth: 240
- }
- {
- name: RndCnstKey
- desc: Compile-time random scrambling keys
- type: otp_ctrl_pkg::key_array_t
- randcount: "384"
- randtype: data
- local: "false"
- default: 0x79ee911ce801484ba8373086f9dd4eee6faf88f22bccd612d1c09f5c02b2c8d1fdb92558e2d9c5d24440722325a93144
- expose: "false"
- name_top: RndCnstOtpCtrlKey
- randwidth: 384
- }
- {
- name: RndCnstDigestConst
- desc: Compile-time random digest constant
- type: otp_ctrl_pkg::digest_const_array_t
- randcount: "640"
- randtype: data
- local: "false"
- default: 0xce7d846469a3b8e35a6bd38295bd2fb366b3d62126c75eeaeb93d32f5cbc77463c91917516d51a2fa4400adc2669e2530ee2a465fd4dabcbd877afb6bcfeed7e03a0b091dc41d062dd10ca2d7b93136f
- expose: "false"
- name_top: RndCnstOtpCtrlDigestConst
- randwidth: 640
- }
- {
- name: RndCnstDigestIV
- desc: Compile-time random digest IV
- type: otp_ctrl_pkg::digest_iv_array_t
- randcount: "320"
- randtype: data
- local: "false"
- default: 0xb77f07ff3d7297200d5ab25561af49c696466a983e5346826a43628219e5a91389b9fe0d3b818e46
- expose: "false"
- name_top: RndCnstOtpCtrlDigestIV
- randwidth: 320
- }
- ]
- interrupt_list:
- [
- {
- name: otp_operation_done
- width: 1
- bits: "0"
- bitinfo:
- [
- 1
- 1
- 0
- ]
- type: interrupt
- }
- {
- name: otp_error
- width: 1
- bits: "1"
- bitinfo:
- [
- 2
- 1
- 1
- ]
- type: interrupt
- }
- ]
- alert_list:
- [
- {
- name: otp_macro_failure
- width: 1
- bits: "0"
- bitinfo:
- [
- 1
- 1
- 0
- ]
- type: alert
- async: 1
- }
- {
- name: otp_check_failure
- width: 1
- bits: "1"
- bitinfo:
- [
- 2
- 1
- 1
- ]
- type: alert
- async: 1
- }
- ]
- wakeup_list: []
- reset_request_list: []
- scan: "false"
- scan_reset: "false"
- inter_signal_list:
- [
- {
- struct: otp_ast_req
- type: uni
- name: otp_ast_pwr_seq
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- width: 1
- external: true
- top_signame: otp_ctrl_otp_ast_pwr_seq
- index: -1
- }
- {
- struct: otp_ast_rsp
- type: uni
- name: otp_ast_pwr_seq_h
- act: rcv
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- width: 1
- external: true
- top_signame: otp_ctrl_otp_ast_pwr_seq_h
- index: -1
- }
- {
- struct: otp_edn
- type: req_rsp
- name: otp_edn
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: pwr_otp
- type: req_rsp
- name: pwr_otp
- act: rsp
- default: "'0"
- package: pwrmgr_pkg
- inst_name: otp_ctrl
- width: 1
- top_signame: pwrmgr_pwr_otp
- index: -1
- }
- {
- struct: lc_otp_program
- type: req_rsp
- name: lc_otp_program
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_otp_token
- type: req_rsp
- name: lc_otp_token
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otp_lc_data
- type: uni
- name: otp_lc_data
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_escalate_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_provision_wr_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_dft_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otp_keymgr_key
- type: uni
- name: otp_keymgr_key
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: flash_otp_key
- type: req_rsp
- name: flash_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: sram_otp_key
- width: "2"
- type: req_rsp
- name: sram_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otbn_otp_key
- type: req_rsp
- name: otbn_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: logic
- type: uni
- name: hw_cfg
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: otp_ctrl
- width: 1
- default: ""
- top_signame: otp_ctrl_tl
- index: -1
- }
- ]
- }
- {
name: csrng
type: csrng
clock_srcs:
@@ -3860,6 +3613,253 @@
]
}
{
+ name: alert_handler
+ type: alert_handler
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: secure
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x411b0000
+ generated: "true"
+ localparam:
+ {
+ EscCntDw: 32
+ AccuCntDw: 16
+ LfsrSeed: 0x7FFFFFFF
+ }
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_secure
+ }
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list:
+ [
+ {
+ name: RndCnstLfsrSeed
+ desc: Compile-time random bits for initial LFSR seed
+ type: alert_pkg::lfsr_seed_t
+ randcount: "32"
+ randtype: data
+ local: "false"
+ default: 0x5def7861
+ expose: "false"
+ name_top: RndCnstAlertHandlerLfsrSeed
+ randwidth: 32
+ }
+ {
+ name: RndCnstLfsrPerm
+ desc: Compile-time random permutation for LFSR output
+ type: alert_pkg::lfsr_perm_t
+ randcount: "32"
+ randtype: perm
+ local: "false"
+ default: 0x5f00c4cafd73fc4ac479a61068375f38956d84b3
+ expose: "false"
+ name_top: RndCnstAlertHandlerLfsrPerm
+ randwidth: 160
+ }
+ ]
+ interrupt_list:
+ [
+ {
+ name: classa
+ width: 1
+ bits: "0"
+ bitinfo:
+ [
+ 1
+ 1
+ 0
+ ]
+ type: interrupt
+ }
+ {
+ name: classb
+ width: 1
+ bits: "1"
+ bitinfo:
+ [
+ 2
+ 1
+ 1
+ ]
+ type: interrupt
+ }
+ {
+ name: classc
+ width: 1
+ bits: "2"
+ bitinfo:
+ [
+ 4
+ 1
+ 2
+ ]
+ type: interrupt
+ }
+ {
+ name: classd
+ width: 1
+ bits: "3"
+ bitinfo:
+ [
+ 8
+ 1
+ 3
+ ]
+ type: interrupt
+ }
+ ]
+ alert_list: []
+ wakeup_list: []
+ reset_request_list: []
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: alert_crashdump
+ type: uni
+ name: crashdump
+ act: req
+ package: alert_pkg
+ inst_name: alert_handler
+ width: 1
+ default: ""
+ top_type: broadcast
+ top_signame: alert_handler_crashdump
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: alert_handler
+ width: 1
+ default: ""
+ top_signame: alert_handler_tl
+ index: -1
+ }
+ ]
+ }
+ {
+ name: nmi_gen
+ type: nmi_gen
+ clock_srcs:
+ {
+ clk_i: main
+ }
+ clock_group: secure
+ reset_connections:
+ {
+ rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
+ }
+ base_addr: 0x411c0000
+ clock_reset_export: []
+ clock_connections:
+ {
+ clk_i: clkmgr_clocks.clk_main_secure
+ }
+ domain: "0"
+ size: 0x1000
+ bus_device: tlul
+ bus_host: none
+ available_input_list: []
+ available_output_list: []
+ available_inout_list: []
+ param_list: []
+ interrupt_list:
+ [
+ {
+ name: esc0
+ width: 1
+ bits: "0"
+ bitinfo:
+ [
+ 1
+ 1
+ 0
+ ]
+ type: interrupt
+ }
+ {
+ name: esc1
+ width: 1
+ bits: "1"
+ bitinfo:
+ [
+ 2
+ 1
+ 1
+ ]
+ type: interrupt
+ }
+ {
+ name: esc2
+ width: 1
+ bits: "2"
+ bitinfo:
+ [
+ 4
+ 1
+ 2
+ ]
+ type: interrupt
+ }
+ ]
+ alert_list: []
+ wakeup_list: []
+ reset_request_list:
+ [
+ {
+ name: nmi_rst_req
+ }
+ ]
+ scan: "false"
+ scan_reset: "false"
+ inter_signal_list:
+ [
+ {
+ struct: logic
+ type: uni
+ name: nmi_rst_req
+ act: req
+ package: ""
+ default: 1'b0
+ inst_name: nmi_gen
+ width: 1
+ top_signame: pwrmgr_rstreqs
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: nmi_gen
+ width: 1
+ default: ""
+ top_signame: nmi_gen_tl
+ index: -1
+ }
+ ]
+ }
+ {
name: otbn
type: otbn
clock_srcs:
@@ -3871,7 +3871,7 @@
{
rst_ni: rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel]
}
- base_addr: 0x50000000
+ base_addr: 0x411d0000
clock_reset_export: []
clock_connections:
{
@@ -4634,28 +4634,12 @@
}
{
base_addr: 0x40000000
- size_byte: 0x21000
+ size_byte: 0x421000
}
{
- base_addr: 0x40080000
+ base_addr: 0x40500000
size_byte: 0x1000
}
- {
- base_addr: 0x400A0000
- size_byte: 0x21000
- }
- {
- base_addr: 0x40150000
- size_byte: 0x1000
- }
- {
- base_addr: 0x40170000
- size_byte: 0x11000
- }
- {
- base_addr: 0x401b0000
- size_byte: 0x4000
- }
]
}
{
@@ -4668,7 +4652,7 @@
addr_range:
[
{
- base_addr: 0x40030000
+ base_addr: 0x41000000
size_byte: 0x1000
}
]
@@ -4686,7 +4670,7 @@
addr_range:
[
{
- base_addr: 0x40120000
+ base_addr: 0x41110000
size_byte: 0x1000
}
]
@@ -4722,7 +4706,7 @@
addr_range:
[
{
- base_addr: 0x40110000
+ base_addr: 0x41100000
size_byte: 0x1000
}
]
@@ -4811,7 +4795,7 @@
addr_range:
[
{
- base_addr: 0x40090000
+ base_addr: 0x41010000
size_byte: 0x1000
}
]
@@ -4829,7 +4813,7 @@
addr_range:
[
{
- base_addr: 0x40070000
+ base_addr: 0x40460000
size_byte: 0x1000
}
]
@@ -4847,7 +4831,7 @@
addr_range:
[
{
- base_addr: 0x40160000
+ base_addr: 0x40470000
size_byte: 0x1000
}
]
@@ -4900,7 +4884,7 @@
addr_range:
[
{
- base_addr: 0x50000000
+ base_addr: 0x411d0000
size_byte: 0x10000
}
]
@@ -4918,7 +4902,7 @@
addr_range:
[
{
- base_addr: 0x401a0000
+ base_addr: 0x41130000
size_byte: 0x1000
}
]
@@ -5286,7 +5270,7 @@
addr_range:
[
{
- base_addr: 0x40010000
+ base_addr: 0x40040000
size_byte: 0x1000
}
]
@@ -5304,7 +5288,7 @@
addr_range:
[
{
- base_addr: 0x40020000
+ base_addr: 0x40050000
size_byte: 0x1000
}
]
@@ -5322,7 +5306,7 @@
addr_range:
[
{
- base_addr: 0x40080000
+ base_addr: 0x40100000
size_byte: 0x1000
}
]
@@ -5340,7 +5324,7 @@
addr_range:
[
{
- base_addr: 0x40150000
+ base_addr: 0x40500000
size_byte: 0x1000
}
]
@@ -5358,7 +5342,7 @@
addr_range:
[
{
- base_addr: 0x400A0000
+ base_addr: 0x40400000
size_byte: 0x1000
}
]
@@ -5376,7 +5360,7 @@
addr_range:
[
{
- base_addr: 0x400B0000
+ base_addr: 0x40410000
size_byte: 0x1000
}
]
@@ -5394,7 +5378,7 @@
addr_range:
[
{
- base_addr: 0x400C0000
+ base_addr: 0x40420000
size_byte: 0x1000
}
]
@@ -5430,7 +5414,7 @@
addr_range:
[
{
- base_addr: 0x401b0000
+ base_addr: 0x40130000
size_byte: 0x4000
}
]
@@ -5448,7 +5432,7 @@
addr_range:
[
{
- base_addr: 0x40170000
+ base_addr: 0x40110000
size_byte: 0x1000
}
]
@@ -6909,15 +6893,15 @@
{
ast:
{
+ sensor_ctrl:
+ [
+ io_div4_secure
+ ]
usbdev:
[
io_div4_peri
usb_peri
]
- sensor_ctrl:
- [
- io_div4_secure
- ]
}
}
wakeups:
@@ -6939,15 +6923,15 @@
{
ast:
{
+ sensor_ctrl:
+ [
+ sys_io_div4
+ ]
usbdev:
[
sys_io_div4
usb
]
- sensor_ctrl:
- [
- sys_io_div4
- ]
}
}
reset_paths:
@@ -7008,91 +6992,6 @@
index: -1
}
{
- struct: flash
- type: req_rsp
- name: flash
- act: req
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: flash_ctrl_flash
- index: -1
- }
- {
- struct: otp_flash
- type: uni
- name: otp
- act: rcv
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_provision_en
- act: rcv
- package: lc_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: lc_flash
- type: req_rsp
- name: lc
- act: rsp
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: edn_entropy
- type: uni
- name: edn
- act: rcv
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- index: -1
- }
- {
- struct: pwr_flash
- type: req_rsp
- name: pwrmgr
- act: rsp
- package: pwrmgr_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: pwrmgr_pwr_flash
- index: -1
- }
- {
- struct: keymgr_flash
- type: uni
- name: keymgr
- act: req
- package: flash_ctrl_pkg
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_type: broadcast
- top_signame: flash_ctrl_keymgr
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: flash_ctrl
- width: 1
- default: ""
- top_signame: flash_ctrl_tl
- index: -1
- }
- {
struct: tl
package: tlul_pkg
type: req_rsp
@@ -7105,163 +7004,200 @@
index: -1
}
{
- name: idle
- type: uni
- act: req
- package: ""
- struct: logic
- width: 1
- inst_name: aes
- default: ""
- top_signame: clkmgr_idle
- index: 0
- }
- {
- struct: tl
- package: tlul_pkg
+ struct: ast_alert
type: req_rsp
+ name: ast_alert
act: rsp
- name: tl
- inst_name: aes
+ package: ast_wrapper_pkg
+ inst_name: sensor_ctrl
width: 1
default: ""
- top_signame: aes_tl
+ external: true
+ top_signame: sensor_ctrl_ast_alert
index: -1
}
{
- name: idle
+ struct: ast_status
type: uni
- act: req
- package: ""
- struct: logic
- width: 1
- inst_name: hmac
- default: ""
- top_signame: clkmgr_idle
- index: 1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: hmac
- width: 1
- default: ""
- top_signame: hmac_tl
- index: -1
- }
- {
- struct: hw_key_req
- type: uni
- name: keymgr_key
+ name: ast_status
act: rcv
- package: keymgr_pkg
- inst_name: kmac
+ package: ast_wrapper_pkg
+ inst_name: sensor_ctrl
width: 1
default: ""
- top_signame: keymgr_kmac_key
+ external: true
+ top_signame: sensor_ctrl_ast_status
index: -1
}
{
- struct: kmac_data
+ struct: tl
+ package: tlul_pkg
type: req_rsp
- name: keymgr_kdf
act: rsp
- package: keymgr_pkg
- inst_name: kmac
+ name: tl
+ inst_name: sensor_ctrl
width: 1
default: ""
- top_signame: keymgr_kmac_data
+ top_signame: sensor_ctrl_tl
index: -1
}
{
- name: idle
+ struct: otp_ast_req
type: uni
+ name: otp_ast_pwr_seq
act: req
- package: ""
- struct: logic
- width: 1
- inst_name: kmac
- default: ""
- top_signame: clkmgr_idle
- index: 2
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: kmac
- width: 1
- default: ""
- top_signame: kmac_tl
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: rv_plic
- width: 1
- default: ""
- top_signame: rv_plic_tl
- index: -1
- }
- {
- struct: lc_strap
- type: req_rsp
- name: lc_pinmux_strap
- act: rsp
- package: pinmux_pkg
default: "'0"
- inst_name: pinmux
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ width: 1
+ external: true
+ top_signame: otp_ctrl_otp_ast_pwr_seq
index: -1
}
{
- struct: dft_strap_test
+ struct: otp_ast_rsp
type: uni
- name: dft_strap_test
- act: req
- package: pinmux_pkg
+ name: otp_ast_pwr_seq_h
+ act: rcv
default: "'0"
- inst_name: pinmux
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ width: 1
+ external: true
+ top_signame: otp_ctrl_otp_ast_pwr_seq_h
index: -1
}
{
- struct: io_pok
+ struct: otp_edn
+ type: req_rsp
+ name: otp_edn
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: pwr_otp
+ type: req_rsp
+ name: pwr_otp
+ act: rsp
+ default: "'0"
+ package: pwrmgr_pkg
+ inst_name: otp_ctrl
+ width: 1
+ top_signame: pwrmgr_pwr_otp
+ index: -1
+ }
+ {
+ struct: lc_otp_program
+ type: req_rsp
+ name: lc_otp_program
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_otp_token
+ type: req_rsp
+ name: lc_otp_token
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otp_lc_data
type: uni
- name: io_pok
+ name: otp_lc_data
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_escalate_en
act: rcv
- package: pinmux_pkg
- default: "{pinmux_pkg::NIOPokSignals{1'b1}}"
- inst_name: pinmux
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_provision_wr_en
+ act: rcv
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_dft_en
+ act: rcv
+ default: lc_ctrl_pkg::Off
+ package: lc_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otp_keymgr_key
+ type: uni
+ name: otp_keymgr_key
+ act: req
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: flash_otp_key
+ type: req_rsp
+ name: flash_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: sram_otp_key
+ width: "2"
+ type: req_rsp
+ name: sram_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
+ index: -1
+ }
+ {
+ struct: otbn_otp_key
+ type: req_rsp
+ name: otbn_otp_key
+ act: rsp
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
index: -1
}
{
struct: logic
type: uni
- name: sleep_en
- act: rcv
- package: ""
- default: 1'b0
- inst_name: pinmux
- index: -1
- }
- {
- struct: logic
- type: uni
- name: aon_wkup_req
+ name: hw_cfg
act: req
- package: ""
- default: 1'b0
- inst_name: pinmux
- width: 1
- top_signame: pwrmgr_wakeups
+ default: "'0"
+ package: otp_ctrl_pkg
+ inst_name: otp_ctrl
index: -1
}
{
@@ -7270,47 +7206,10 @@
type: req_rsp
act: rsp
name: tl
- inst_name: pinmux
+ inst_name: otp_ctrl
width: 1
default: ""
- top_signame: pinmux_tl
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: padctrl
- width: 1
- default: ""
- top_signame: padctrl_tl
- index: -1
- }
- {
- struct: alert_crashdump
- type: uni
- name: crashdump
- act: req
- package: alert_pkg
- inst_name: alert_handler
- width: 1
- default: ""
- top_type: broadcast
- top_signame: alert_handler_crashdump
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: alert_handler
- width: 1
- default: ""
- top_signame: alert_handler_tl
+ top_signame: otp_ctrl_tl
index: -1
}
{
@@ -7634,15 +7533,55 @@
index: -1
}
{
+ struct: lc_strap
+ type: req_rsp
+ name: lc_pinmux_strap
+ act: rsp
+ package: pinmux_pkg
+ default: "'0"
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: dft_strap_test
+ type: uni
+ name: dft_strap_test
+ act: req
+ package: pinmux_pkg
+ default: "'0"
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: io_pok
+ type: uni
+ name: io_pok
+ act: rcv
+ package: pinmux_pkg
+ default: "{pinmux_pkg::NIOPokSignals{1'b1}}"
+ inst_name: pinmux
+ index: -1
+ }
+ {
struct: logic
type: uni
- name: nmi_rst_req
+ name: sleep_en
+ act: rcv
+ package: ""
+ default: 1'b0
+ inst_name: pinmux
+ index: -1
+ }
+ {
+ struct: logic
+ type: uni
+ name: aon_wkup_req
act: req
package: ""
default: 1'b0
- inst_name: nmi_gen
+ inst_name: pinmux
width: 1
- top_signame: pwrmgr_rstreqs
+ top_signame: pwrmgr_wakeups
index: -1
}
{
@@ -7651,10 +7590,22 @@
type: req_rsp
act: rsp
name: tl
- inst_name: nmi_gen
+ inst_name: pinmux
width: 1
default: ""
- top_signame: nmi_gen_tl
+ top_signame: pinmux_tl
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: padctrl
+ width: 1
+ default: ""
+ top_signame: padctrl_tl
index: -1
}
{
@@ -7696,29 +7647,76 @@
index: -1
}
{
- struct: ast_alert
+ struct: flash
type: req_rsp
- name: ast_alert
- act: rsp
- package: ast_wrapper_pkg
- inst_name: sensor_ctrl
+ name: flash
+ act: req
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
width: 1
default: ""
- external: true
- top_signame: sensor_ctrl_ast_alert
+ top_signame: flash_ctrl_flash
index: -1
}
{
- struct: ast_status
+ struct: otp_flash
type: uni
- name: ast_status
+ name: otp
act: rcv
- package: ast_wrapper_pkg
- inst_name: sensor_ctrl
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: lc_tx
+ type: uni
+ name: lc_provision_en
+ act: rcv
+ package: lc_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: lc_flash
+ type: req_rsp
+ name: lc
+ act: rsp
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: edn_entropy
+ type: uni
+ name: edn
+ act: rcv
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ index: -1
+ }
+ {
+ struct: pwr_flash
+ type: req_rsp
+ name: pwrmgr
+ act: rsp
+ package: pwrmgr_pkg
+ inst_name: flash_ctrl
width: 1
default: ""
- external: true
- top_signame: sensor_ctrl_ast_status
+ top_signame: pwrmgr_pwr_flash
+ index: -1
+ }
+ {
+ struct: keymgr_flash
+ type: uni
+ name: keymgr
+ act: req
+ package: flash_ctrl_pkg
+ inst_name: flash_ctrl
+ width: 1
+ default: ""
+ top_type: broadcast
+ top_signame: flash_ctrl_keymgr
index: -1
}
{
@@ -7727,10 +7725,118 @@
type: req_rsp
act: rsp
name: tl
- inst_name: sensor_ctrl
+ inst_name: flash_ctrl
width: 1
default: ""
- top_signame: sensor_ctrl_tl
+ top_signame: flash_ctrl_tl
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: rv_plic
+ width: 1
+ default: ""
+ top_signame: rv_plic_tl
+ index: -1
+ }
+ {
+ name: idle
+ type: uni
+ act: req
+ package: ""
+ struct: logic
+ width: 1
+ inst_name: aes
+ default: ""
+ top_signame: clkmgr_idle
+ index: 0
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: aes
+ width: 1
+ default: ""
+ top_signame: aes_tl
+ index: -1
+ }
+ {
+ name: idle
+ type: uni
+ act: req
+ package: ""
+ struct: logic
+ width: 1
+ inst_name: hmac
+ default: ""
+ top_signame: clkmgr_idle
+ index: 1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: hmac
+ width: 1
+ default: ""
+ top_signame: hmac_tl
+ index: -1
+ }
+ {
+ struct: hw_key_req
+ type: uni
+ name: keymgr_key
+ act: rcv
+ package: keymgr_pkg
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: keymgr_kmac_key
+ index: -1
+ }
+ {
+ struct: kmac_data
+ type: req_rsp
+ name: keymgr_kdf
+ act: rsp
+ package: keymgr_pkg
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: keymgr_kmac_data
+ index: -1
+ }
+ {
+ name: idle
+ type: uni
+ act: req
+ package: ""
+ struct: logic
+ width: 1
+ inst_name: kmac
+ default: ""
+ top_signame: clkmgr_idle
+ index: 2
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: kmac
+ width: 1
+ default: ""
+ top_signame: kmac_tl
index: -1
}
{
@@ -7819,177 +7925,6 @@
index: -1
}
{
- struct: otp_ast_req
- type: uni
- name: otp_ast_pwr_seq
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- width: 1
- external: true
- top_signame: otp_ctrl_otp_ast_pwr_seq
- index: -1
- }
- {
- struct: otp_ast_rsp
- type: uni
- name: otp_ast_pwr_seq_h
- act: rcv
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- width: 1
- external: true
- top_signame: otp_ctrl_otp_ast_pwr_seq_h
- index: -1
- }
- {
- struct: otp_edn
- type: req_rsp
- name: otp_edn
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: pwr_otp
- type: req_rsp
- name: pwr_otp
- act: rsp
- default: "'0"
- package: pwrmgr_pkg
- inst_name: otp_ctrl
- width: 1
- top_signame: pwrmgr_pwr_otp
- index: -1
- }
- {
- struct: lc_otp_program
- type: req_rsp
- name: lc_otp_program
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_otp_token
- type: req_rsp
- name: lc_otp_token
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otp_lc_data
- type: uni
- name: otp_lc_data
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_escalate_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_provision_wr_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: lc_tx
- type: uni
- name: lc_dft_en
- act: rcv
- default: lc_ctrl_pkg::Off
- package: lc_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otp_keymgr_key
- type: uni
- name: otp_keymgr_key
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: flash_otp_key
- type: req_rsp
- name: flash_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: sram_otp_key
- width: "2"
- type: req_rsp
- name: sram_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: otbn_otp_key
- type: req_rsp
- name: otbn_otp_key
- act: rsp
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: logic
- type: uni
- name: hw_cfg
- act: req
- default: "'0"
- package: otp_ctrl_pkg
- inst_name: otp_ctrl
- index: -1
- }
- {
- struct: tl
- package: tlul_pkg
- type: req_rsp
- act: rsp
- name: tl
- inst_name: otp_ctrl
- width: 1
- default: ""
- top_signame: otp_ctrl_tl
- index: -1
- }
- {
struct: csrng
type: req_rsp
name: csrng_cmd
@@ -8184,6 +8119,55 @@
index: -1
}
{
+ struct: alert_crashdump
+ type: uni
+ name: crashdump
+ act: req
+ package: alert_pkg
+ inst_name: alert_handler
+ width: 1
+ default: ""
+ top_type: broadcast
+ top_signame: alert_handler_crashdump
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: alert_handler
+ width: 1
+ default: ""
+ top_signame: alert_handler_tl
+ index: -1
+ }
+ {
+ struct: logic
+ type: uni
+ name: nmi_rst_req
+ act: req
+ package: ""
+ default: 1'b0
+ inst_name: nmi_gen
+ width: 1
+ top_signame: pwrmgr_rstreqs
+ index: -1
+ }
+ {
+ struct: tl
+ package: tlul_pkg
+ type: req_rsp
+ act: rsp
+ name: tl
+ inst_name: nmi_gen
+ width: 1
+ default: ""
+ top_signame: nmi_gen_tl
+ index: -1
+ }
+ {
name: idle
type: uni
struct: logic
diff --git a/hw/top_earlgrey/data/top_earlgrey.hjson b/hw/top_earlgrey/data/top_earlgrey.hjson
index 28f46ac..dc58252 100755
--- a/hw/top_earlgrey/data/top_earlgrey.hjson
+++ b/hw/top_earlgrey/data/top_earlgrey.hjson
@@ -181,7 +181,6 @@
// the ip.hjson will declare the reset port names
// If none are defined at ip.hjson, rst_ni is used by default
reset_connections: {rst_ni: "sys_io_div4"},
-
base_addr: "0x40000000",
},
{ name: "gpio",
@@ -189,103 +188,46 @@
clock_srcs: {clk_i: "io_div4"},
clock_group: "peri",
reset_connections: {rst_ni: "sys_io_div4"},
- base_addr: "0x40010000",
+ base_addr: "0x40040000",
}
-
{ name: "spi_device",
type: "spi_device",
clock_srcs: {clk_i: "io_div4"},
clock_group: "peri",
reset_connections: {rst_ni: "spi_device"},
- base_addr: "0x40020000",
- },
- { name: "flash_ctrl",
- type: "flash_ctrl",
- clock_srcs: {clk_i: "main"},
- clock_group: "infra",
- reset_connections: {rst_ni: "lc"},
- base_addr: "0x40030000",
- generated: "true" // Indicate this module is generated in the topgen
+ base_addr: "0x40050000",
},
{ name: "rv_timer",
type: "rv_timer",
clock_srcs: {clk_i: "io_div4"},
clock_group: "timers",
reset_connections: {rst_ni: "sys_io_div4"},
- base_addr: "0x40080000",
+ base_addr: "0x40100000",
},
- { name: "aes",
- type: "aes",
- clock_srcs: {clk_i: "main"},
- clock_group: "trans",
- reset_connections: {rst_ni: "sys"},
+ { name: "sensor_ctrl",
+ type: "sensor_ctrl",
+ clock_srcs: {clk_i: "io_div4"},
+ clock_group: "secure",
+ clock_reset_export: ["ast"],
+ reset_connections: {rst_ni: "sys_io_div4"},
+ domain: "Aon",
base_addr: "0x40110000",
+ top_only: "true"
},
- { name: "hmac",
- type: "hmac",
- clock_srcs: {clk_i: "main"},
- clock_group: "trans",
- reset_connections: {rst_ni: "sys"},
- base_addr: "0x40120000",
- },
- { name: "kmac"
- type: "kmac"
- clock_srcs: {clk_i: "main"}
- clock_group: "trans"
- reset_connections: {rst_ni: "sys"}
- base_addr: "0x41120000"
- }
- { name: "rv_plic",
- type: "rv_plic",
- clock_srcs: {clk_i: "main"},
- clock_group: "secure",
- reset_connections: {rst_ni: "sys"},
- base_addr: "0x40090000",
- generated: "true" // Indicate this module is generated in the topgen
- }
- // pinmux is currently allocated to main fabric,
- // however this should probably be moved to peri fabric
- { name: "pinmux",
- type: "pinmux",
- clock: "main",
- clock_srcs: {clk_i: "main", clk_aon_i: "aon"},
- clock_group: "secure",
- reset_connections: {rst_ni: "sys", rst_aon_ni: "sys_aon"},
- domain: "Aon",
- base_addr: "0x40070000",
- generated: "true"
- },
- // see comment regarding pinmux above
- { name: "padctrl",
- type: "padctrl",
- clock: "main",
- clock_srcs: {clk_i: "main"},
- clock_group: "secure",
- reset_connections: {rst_ni: "sys"},
- domain: "Aon",
- base_addr: "0x40160000",
- generated: "true"
- },
- { name: "alert_handler",
- type: "alert_handler",
- clock_srcs: {clk_i: "main"},
- clock_group: "secure",
- reset_connections: {rst_ni: "sys"},
- base_addr: "0x411b0000",
- generated: "true" // Indicate this module is generated in the topgen
- localparam: {
- EscCntDw: 32,
- AccuCntDw: 16,
- LfsrSeed: "0x7FFFFFFF"
- }
- }
+ { name: "otp_ctrl",
+ type: "otp_ctrl",
+ clock_srcs: {clk_i: "io_div4"},
+ clock_group: "timers",
+ reset_connections: {rst_ni: "lc_io_div4"},
+ base_addr: "0x40130000",
+ },
{ name: "pwrmgr",
type: "pwrmgr",
clock_srcs: {clk_i: "io_div4", clk_slow_i: "aon"},
clock_group: "powerup",
reset_connections: {rst_ni: "por", rst_slow_ni: "por_aon"},
domain: "Aon",
- base_addr: "0x400A0000",
+ base_addr: "0x40400000",
generated: "true" // Indicate this module is generated in the topgen
},
@@ -296,7 +238,7 @@
clock_group: "powerup",
reset_connections: {rst_ni: "rst_ni"},
domain: "Aon",
- base_addr: "0x400B0000",
+ base_addr: "0x40410000",
generated: "true" // Indicate this module is generated in the topgen
},
{ name: "clkmgr",
@@ -306,18 +248,32 @@
reset_connections: {rst_ni: "por_io_div4", rst_main_ni: "por", rst_io_ni: "por_io", rst_usb_ni: "por_usb"
rst_io_div2_ni: "por_io_div2", rst_io_div4_ni: "por_io_div4"},
domain: "Aon",
- base_addr: "0x400C0000",
+ base_addr: "0x40420000",
generated: "true"
},
- // dummy module to capture the alert handler escalation signals
- // and test them by converting them into IRQs
- { name: "nmi_gen",
- type: "nmi_gen",
+ // pinmux is currently allocated to main fabric,
+ // however this should probably be moved to peri fabric
+ { name: "pinmux",
+ type: "pinmux",
+ clock: "main",
+ clock_srcs: {clk_i: "main", clk_aon_i: "aon"},
+ clock_group: "secure",
+ reset_connections: {rst_ni: "sys", rst_aon_ni: "sys_aon"},
+ domain: "Aon",
+ base_addr: "0x40460000",
+ generated: "true"
+ },
+ // see comment regarding pinmux above
+ { name: "padctrl",
+ type: "padctrl",
+ clock: "main",
clock_srcs: {clk_i: "main"},
clock_group: "secure",
reset_connections: {rst_ni: "sys"},
- base_addr: "0x411c0000",
- }
+ domain: "Aon",
+ base_addr: "0x40470000",
+ generated: "true"
+ },
{ name: "usbdev",
type: "usbdev",
clock_srcs: {clk_i: "io_div4", clk_usb_48mhz_i: "usb"},
@@ -325,31 +281,51 @@
clock_reset_export: ["ast"],
reset_connections: {rst_ni: "sys_io_div4", rst_usb_48mhz_ni: "usb"},
domain: "Aon",
- base_addr: "0x40150000",
+ base_addr: "0x40500000",
},
- { name: "sensor_ctrl",
- type: "sensor_ctrl",
- clock_srcs: {clk_i: "io_div4"},
+ { name: "flash_ctrl",
+ type: "flash_ctrl",
+ clock_srcs: {clk_i: "main"},
+ clock_group: "infra",
+ reset_connections: {rst_ni: "lc"},
+ base_addr: "0x41000000",
+ generated: "true" // Indicate this module is generated in the topgen
+ },
+ { name: "rv_plic",
+ type: "rv_plic",
+ clock_srcs: {clk_i: "main"},
clock_group: "secure",
- clock_reset_export: ["ast"],
- reset_connections: {rst_ni: "sys_io_div4"},
- domain: "Aon",
- base_addr: "0x40170000",
- top_only: "true"
+ reset_connections: {rst_ni: "sys"},
+ base_addr: "0x41010000",
+ generated: "true" // Indicate this module is generated in the topgen
+ },
+ { name: "aes",
+ type: "aes",
+ clock_srcs: {clk_i: "main"},
+ clock_group: "trans",
+ reset_connections: {rst_ni: "sys"},
+ base_addr: "0x41100000",
+ },
+ { name: "hmac",
+ type: "hmac",
+ clock_srcs: {clk_i: "main"},
+ clock_group: "trans",
+ reset_connections: {rst_ni: "sys"},
+ base_addr: "0x41110000",
+ },
+ { name: "kmac"
+ type: "kmac"
+ clock_srcs: {clk_i: "main"}
+ clock_group: "trans"
+ reset_connections: {rst_ni: "sys"}
+ base_addr: "0x41120000"
},
{ name: "keymgr",
type: "keymgr",
clock_srcs: {clk_i: "main"},
clock_group: "secure",
reset_connections: {rst_ni: "sys"},
- base_addr: "0x401a0000",
- },
- { name: "otp_ctrl",
- type: "otp_ctrl",
- clock_srcs: {clk_i: "io_div4"},
- clock_group: "timers",
- reset_connections: {rst_ni: "lc_io_div4"},
- base_addr: "0x401b0000",
+ base_addr: "0x41130000",
},
{ name: "csrng",
type: "csrng",
@@ -379,12 +355,34 @@
reset_connections: {rst_ni: "sys"},
base_addr: "0x41180000",
},
+ { name: "alert_handler",
+ type: "alert_handler",
+ clock_srcs: {clk_i: "main"},
+ clock_group: "secure",
+ reset_connections: {rst_ni: "sys"},
+ base_addr: "0x411b0000",
+ generated: "true" // Indicate this module is generated in the topgen
+ localparam: {
+ EscCntDw: 32,
+ AccuCntDw: 16,
+ LfsrSeed: "0x7FFFFFFF"
+ }
+ },
+ // dummy module to capture the alert handler escalation signals
+ // and test them by converting them into IRQs
+ { name: "nmi_gen",
+ type: "nmi_gen",
+ clock_srcs: {clk_i: "main"},
+ clock_group: "secure",
+ reset_connections: {rst_ni: "sys"},
+ base_addr: "0x411c0000",
+ },
{ name: "otbn",
type: "otbn",
clock_srcs: {clk_i: "main"},
clock_group: "trans",
reset_connections: {rst_ni: "sys"},
- base_addr: "0x50000000",
+ base_addr: "0x411d0000",
},
]
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 a16d135..31c6801 100644
--- a/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
+++ b/hw/top_earlgrey/dv/autogen/xbar_env_pkg__params.sv
@@ -20,16 +20,16 @@
'{32'h20000000, 32'h2007ffff}
}},
'{"flash_ctrl", '{
- '{32'h40030000, 32'h40030fff}
+ '{32'h41000000, 32'h41000fff}
}},
'{"hmac", '{
- '{32'h40120000, 32'h40120fff}
+ '{32'h41110000, 32'h41110fff}
}},
'{"kmac", '{
'{32'h41120000, 32'h41120fff}
}},
'{"aes", '{
- '{32'h40110000, 32'h40110fff}
+ '{32'h41100000, 32'h41100fff}
}},
'{"entropy_src", '{
'{32'h41160000, 32'h41160fff}
@@ -44,13 +44,13 @@
'{32'h41180000, 32'h41180fff}
}},
'{"rv_plic", '{
- '{32'h40090000, 32'h40090fff}
+ '{32'h41010000, 32'h41010fff}
}},
'{"pinmux", '{
- '{32'h40070000, 32'h40070fff}
+ '{32'h40460000, 32'h40460fff}
}},
'{"padctrl", '{
- '{32'h40160000, 32'h40160fff}
+ '{32'h40470000, 32'h40470fff}
}},
'{"alert_handler", '{
'{32'h411b0000, 32'h411b0fff}
@@ -59,43 +59,43 @@
'{32'h411c0000, 32'h411c0fff}
}},
'{"otbn", '{
- '{32'h50000000, 32'h5000ffff}
+ '{32'h411d0000, 32'h411dffff}
}},
'{"keymgr", '{
- '{32'h401a0000, 32'h401a0fff}
+ '{32'h41130000, 32'h41130fff}
}},
'{"uart", '{
'{32'h40000000, 32'h40000fff}
}},
'{"gpio", '{
- '{32'h40010000, 32'h40010fff}
+ '{32'h40040000, 32'h40040fff}
}},
'{"spi_device", '{
- '{32'h40020000, 32'h40020fff}
+ '{32'h40050000, 32'h40050fff}
}},
'{"rv_timer", '{
- '{32'h40080000, 32'h40080fff}
+ '{32'h40100000, 32'h40100fff}
}},
'{"usbdev", '{
- '{32'h40150000, 32'h40150fff}
+ '{32'h40500000, 32'h40500fff}
}},
'{"pwrmgr", '{
- '{32'h400a0000, 32'h400a0fff}
+ '{32'h40400000, 32'h40400fff}
}},
'{"rstmgr", '{
- '{32'h400b0000, 32'h400b0fff}
+ '{32'h40410000, 32'h40410fff}
}},
'{"clkmgr", '{
- '{32'h400c0000, 32'h400c0fff}
+ '{32'h40420000, 32'h40420fff}
}},
'{"ram_ret", '{
'{32'h18000000, 32'h18000fff}
}},
'{"otp_ctrl", '{
- '{32'h401b0000, 32'h401b3fff}
+ '{32'h40130000, 32'h40133fff}
}},
'{"sensor_ctrl", '{
- '{32'h40170000, 32'h40170fff}
+ '{32'h40110000, 32'h40110fff}
}},
'{"ast_wrapper", '{
'{32'h40180000, 32'h40180fff}
diff --git a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
index d7d8373..4b4e085 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr.sv
@@ -416,9 +416,9 @@
// Exported clocks
////////////////////////////////////////////////////
+ assign clocks_ast_o.clk_ast_sensor_ctrl_io_div4_secure = clocks_o.clk_io_div4_secure;
assign clocks_ast_o.clk_ast_usbdev_io_div4_peri = clocks_o.clk_io_div4_peri;
assign clocks_ast_o.clk_ast_usbdev_usb_peri = clocks_o.clk_usb_peri;
- assign clocks_ast_o.clk_ast_sensor_ctrl_io_div4_secure = clocks_o.clk_io_div4_secure;
////////////////////////////////////////////////////
// Assertions
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 7edd4ea..eaf0059 100644
--- a/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/clkmgr/rtl/autogen/clkmgr_pkg.sv
@@ -43,9 +43,9 @@
} clkmgr_out_t;
typedef struct packed {
+ logic clk_ast_sensor_ctrl_io_div4_secure;
logic clk_ast_usbdev_io_div4_peri;
logic clk_ast_usbdev_usb_peri;
- logic clk_ast_sensor_ctrl_io_div4_secure;
} clkmgr_ast_out_t;
typedef struct packed {
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
index 02cf6e7..a890f3f 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr.sv
@@ -566,9 +566,9 @@
////////////////////////////////////////////////////
// Exported resets //
////////////////////////////////////////////////////
+ assign resets_ast_o.rst_ast_sensor_ctrl_sys_io_div4_n = resets_o.rst_sys_io_div4_n;
assign resets_ast_o.rst_ast_usbdev_sys_io_div4_n = resets_o.rst_sys_io_div4_n;
assign resets_ast_o.rst_ast_usbdev_usb_n = resets_o.rst_usb_n;
- assign resets_ast_o.rst_ast_sensor_ctrl_sys_io_div4_n = resets_o.rst_sys_io_div4_n;
////////////////////////////////////////////////////
// Crash info capture //
diff --git a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
index 5487c0b..78d69ab 100644
--- a/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
+++ b/hw/top_earlgrey/ip/rstmgr/rtl/autogen/rstmgr_pkg.sv
@@ -62,9 +62,9 @@
// exported resets
typedef struct packed {
+ logic [PowerDomains-1:0] rst_ast_sensor_ctrl_sys_io_div4_n;
logic [PowerDomains-1:0] rst_ast_usbdev_sys_io_div4_n;
logic [PowerDomains-1:0] rst_ast_usbdev_usb_n;
- logic [PowerDomains-1:0] rst_ast_sensor_ctrl_sys_io_div4_n;
} rstmgr_ast_out_t;
// default value for rstmgr_ast_rsp_t (for dangling ports)
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 82f70d6..a432951 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
@@ -205,28 +205,12 @@
}
{
base_addr: 0x40000000
- size_byte: 0x21000
+ size_byte: 0x421000
}
{
- base_addr: 0x40080000
+ base_addr: 0x40500000
size_byte: 0x1000
}
- {
- base_addr: 0x400A0000
- size_byte: 0x21000
- }
- {
- base_addr: 0x40150000
- size_byte: 0x1000
- }
- {
- base_addr: 0x40170000
- size_byte: 0x11000
- }
- {
- base_addr: 0x401b0000
- size_byte: 0x4000
- }
]
}
{
@@ -239,7 +223,7 @@
addr_range:
[
{
- base_addr: 0x40030000
+ base_addr: 0x41000000
size_byte: 0x1000
}
]
@@ -257,7 +241,7 @@
addr_range:
[
{
- base_addr: 0x40120000
+ base_addr: 0x41110000
size_byte: 0x1000
}
]
@@ -293,7 +277,7 @@
addr_range:
[
{
- base_addr: 0x40110000
+ base_addr: 0x41100000
size_byte: 0x1000
}
]
@@ -382,7 +366,7 @@
addr_range:
[
{
- base_addr: 0x40090000
+ base_addr: 0x41010000
size_byte: 0x1000
}
]
@@ -400,7 +384,7 @@
addr_range:
[
{
- base_addr: 0x40070000
+ base_addr: 0x40460000
size_byte: 0x1000
}
]
@@ -418,7 +402,7 @@
addr_range:
[
{
- base_addr: 0x40160000
+ base_addr: 0x40470000
size_byte: 0x1000
}
]
@@ -471,7 +455,7 @@
addr_range:
[
{
- base_addr: 0x50000000
+ base_addr: 0x411d0000
size_byte: 0x10000
}
]
@@ -489,7 +473,7 @@
addr_range:
[
{
- base_addr: 0x401a0000
+ base_addr: 0x41130000
size_byte: 0x1000
}
]
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 08b9698..f2ba945 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
@@ -21,24 +21,20 @@
}},
'{"peri", '{
'{32'h18000000, 32'h18000fff},
- '{32'h40000000, 32'h40020fff},
- '{32'h40080000, 32'h40080fff},
- '{32'h400a0000, 32'h400c0fff},
- '{32'h40150000, 32'h40150fff},
- '{32'h40170000, 32'h40180fff},
- '{32'h401b0000, 32'h401b3fff}
+ '{32'h40000000, 32'h40420fff},
+ '{32'h40500000, 32'h40500fff}
}},
'{"flash_ctrl", '{
- '{32'h40030000, 32'h40030fff}
+ '{32'h41000000, 32'h41000fff}
}},
'{"hmac", '{
- '{32'h40120000, 32'h40120fff}
+ '{32'h41110000, 32'h41110fff}
}},
'{"kmac", '{
'{32'h41120000, 32'h41120fff}
}},
'{"aes", '{
- '{32'h40110000, 32'h40110fff}
+ '{32'h41100000, 32'h41100fff}
}},
'{"entropy_src", '{
'{32'h41160000, 32'h41160fff}
@@ -53,13 +49,13 @@
'{32'h41180000, 32'h41180fff}
}},
'{"rv_plic", '{
- '{32'h40090000, 32'h40090fff}
+ '{32'h41010000, 32'h41010fff}
}},
'{"pinmux", '{
- '{32'h40070000, 32'h40070fff}
+ '{32'h40460000, 32'h40460fff}
}},
'{"padctrl", '{
- '{32'h40160000, 32'h40160fff}
+ '{32'h40470000, 32'h40470fff}
}},
'{"alert_handler", '{
'{32'h411b0000, 32'h411b0fff}
@@ -68,10 +64,10 @@
'{32'h411c0000, 32'h411c0fff}
}},
'{"otbn", '{
- '{32'h50000000, 32'h5000ffff}
+ '{32'h411d0000, 32'h411dffff}
}},
'{"keymgr", '{
- '{32'h401a0000, 32'h401a0fff}
+ '{32'h41130000, 32'h41130fff}
}}};
// List of Xbar hosts
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 e53e2cb..acb519e 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,42 +10,34 @@
localparam logic [31:0] ADDR_SPACE_DEBUG_MEM = 32'h 1a110000;
localparam logic [31:0] ADDR_SPACE_RAM_MAIN = 32'h 10000000;
localparam logic [31:0] ADDR_SPACE_EFLASH = 32'h 20000000;
- localparam logic [6:0][31:0] ADDR_SPACE_PERI = {
- 32'h 401b0000,
- 32'h 40170000,
- 32'h 40150000,
- 32'h 400a0000,
- 32'h 40080000,
+ localparam logic [2:0][31:0] ADDR_SPACE_PERI = {
+ 32'h 40500000,
32'h 40000000,
32'h 18000000
};
- localparam logic [31:0] ADDR_SPACE_FLASH_CTRL = 32'h 40030000;
- localparam logic [31:0] ADDR_SPACE_HMAC = 32'h 40120000;
+ localparam logic [31:0] ADDR_SPACE_FLASH_CTRL = 32'h 41000000;
+ localparam logic [31:0] ADDR_SPACE_HMAC = 32'h 41110000;
localparam logic [31:0] ADDR_SPACE_KMAC = 32'h 41120000;
- localparam logic [31:0] ADDR_SPACE_AES = 32'h 40110000;
+ localparam logic [31:0] ADDR_SPACE_AES = 32'h 41100000;
localparam logic [31:0] ADDR_SPACE_ENTROPY_SRC = 32'h 41160000;
localparam logic [31:0] ADDR_SPACE_CSRNG = 32'h 41150000;
localparam logic [31:0] ADDR_SPACE_EDN0 = 32'h 41170000;
localparam logic [31:0] ADDR_SPACE_EDN1 = 32'h 41180000;
- localparam logic [31:0] ADDR_SPACE_RV_PLIC = 32'h 40090000;
- localparam logic [31:0] ADDR_SPACE_PINMUX = 32'h 40070000;
- localparam logic [31:0] ADDR_SPACE_PADCTRL = 32'h 40160000;
+ localparam logic [31:0] ADDR_SPACE_RV_PLIC = 32'h 41010000;
+ localparam logic [31:0] ADDR_SPACE_PINMUX = 32'h 40460000;
+ localparam logic [31:0] ADDR_SPACE_PADCTRL = 32'h 40470000;
localparam logic [31:0] ADDR_SPACE_ALERT_HANDLER = 32'h 411b0000;
localparam logic [31:0] ADDR_SPACE_NMI_GEN = 32'h 411c0000;
- localparam logic [31:0] ADDR_SPACE_OTBN = 32'h 50000000;
- localparam logic [31:0] ADDR_SPACE_KEYMGR = 32'h 401a0000;
+ localparam logic [31:0] ADDR_SPACE_OTBN = 32'h 411d0000;
+ localparam logic [31:0] ADDR_SPACE_KEYMGR = 32'h 41130000;
localparam logic [31:0] ADDR_MASK_ROM = 32'h 00003fff;
localparam logic [31:0] ADDR_MASK_DEBUG_MEM = 32'h 00000fff;
localparam logic [31:0] ADDR_MASK_RAM_MAIN = 32'h 0000ffff;
localparam logic [31:0] ADDR_MASK_EFLASH = 32'h 0007ffff;
- localparam logic [6:0][31:0] ADDR_MASK_PERI = {
- 32'h 00003fff,
- 32'h 00010fff,
+ localparam logic [2:0][31:0] ADDR_MASK_PERI = {
32'h 00000fff,
- 32'h 00020fff,
- 32'h 00000fff,
- 32'h 00020fff,
+ 32'h 00420fff,
32'h 00000fff
};
localparam logic [31:0] ADDR_MASK_FLASH_CTRL = 32'h 00000fff;
diff --git a/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv b/hw/top_earlgrey/ip/xbar_main/rtl/autogen/xbar_main.sv
index 4670d59..245c314 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
@@ -567,15 +567,7 @@
((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[1] + ADDR_SPACE_PERI[1])) &&
(tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[1])) ||
((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[2] + ADDR_SPACE_PERI[2])) &&
- (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[2])) ||
- ((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[3] + ADDR_SPACE_PERI[3])) &&
- (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[3])) ||
- ((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[4] + ADDR_SPACE_PERI[4])) &&
- (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[4])) ||
- ((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[5] + ADDR_SPACE_PERI[5])) &&
- (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[5])) ||
- ((tl_s1n_28_us_h2d.a_address <= (ADDR_MASK_PERI[6] + ADDR_SPACE_PERI[6])) &&
- (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[6]))
+ (tl_s1n_28_us_h2d.a_address >= ADDR_SPACE_PERI[2]))
) begin
dev_sel_s1n_28 = 5'd4;
@@ -643,15 +635,7 @@
((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[1] + ADDR_SPACE_PERI[1])) &&
(tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[1])) ||
((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[2] + ADDR_SPACE_PERI[2])) &&
- (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[2])) ||
- ((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[3] + ADDR_SPACE_PERI[3])) &&
- (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[3])) ||
- ((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[4] + ADDR_SPACE_PERI[4])) &&
- (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[4])) ||
- ((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[5] + ADDR_SPACE_PERI[5])) &&
- (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[5])) ||
- ((tl_s1n_45_us_h2d.a_address <= (ADDR_MASK_PERI[6] + ADDR_SPACE_PERI[6])) &&
- (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[6]))
+ (tl_s1n_45_us_h2d.a_address >= ADDR_SPACE_PERI[2]))
) begin
dev_sel_s1n_45 = 5'd3;
diff --git a/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson b/hw/top_earlgrey/ip/xbar_peri/data/autogen/xbar_peri.gen.hjson
index 28bb941..6e9d155 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
@@ -83,7 +83,7 @@
addr_range:
[
{
- base_addr: 0x40010000
+ base_addr: 0x40040000
size_byte: 0x1000
}
]
@@ -101,7 +101,7 @@
addr_range:
[
{
- base_addr: 0x40020000
+ base_addr: 0x40050000
size_byte: 0x1000
}
]
@@ -119,7 +119,7 @@
addr_range:
[
{
- base_addr: 0x40080000
+ base_addr: 0x40100000
size_byte: 0x1000
}
]
@@ -137,7 +137,7 @@
addr_range:
[
{
- base_addr: 0x40150000
+ base_addr: 0x40500000
size_byte: 0x1000
}
]
@@ -155,7 +155,7 @@
addr_range:
[
{
- base_addr: 0x400A0000
+ base_addr: 0x40400000
size_byte: 0x1000
}
]
@@ -173,7 +173,7 @@
addr_range:
[
{
- base_addr: 0x400B0000
+ base_addr: 0x40410000
size_byte: 0x1000
}
]
@@ -191,7 +191,7 @@
addr_range:
[
{
- base_addr: 0x400C0000
+ base_addr: 0x40420000
size_byte: 0x1000
}
]
@@ -227,7 +227,7 @@
addr_range:
[
{
- base_addr: 0x401b0000
+ base_addr: 0x40130000
size_byte: 0x4000
}
]
@@ -245,7 +245,7 @@
addr_range:
[
{
- base_addr: 0x40170000
+ base_addr: 0x40110000
size_byte: 0x1000
}
]
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 8e54374..0b29528 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
@@ -11,34 +11,34 @@
'{32'h40000000, 32'h40000fff}
}},
'{"gpio", '{
- '{32'h40010000, 32'h40010fff}
+ '{32'h40040000, 32'h40040fff}
}},
'{"spi_device", '{
- '{32'h40020000, 32'h40020fff}
+ '{32'h40050000, 32'h40050fff}
}},
'{"rv_timer", '{
- '{32'h40080000, 32'h40080fff}
+ '{32'h40100000, 32'h40100fff}
}},
'{"usbdev", '{
- '{32'h40150000, 32'h40150fff}
+ '{32'h40500000, 32'h40500fff}
}},
'{"pwrmgr", '{
- '{32'h400a0000, 32'h400a0fff}
+ '{32'h40400000, 32'h40400fff}
}},
'{"rstmgr", '{
- '{32'h400b0000, 32'h400b0fff}
+ '{32'h40410000, 32'h40410fff}
}},
'{"clkmgr", '{
- '{32'h400c0000, 32'h400c0fff}
+ '{32'h40420000, 32'h40420fff}
}},
'{"ram_ret", '{
'{32'h18000000, 32'h18000fff}
}},
'{"otp_ctrl", '{
- '{32'h401b0000, 32'h401b3fff}
+ '{32'h40130000, 32'h40133fff}
}},
'{"sensor_ctrl", '{
- '{32'h40170000, 32'h40170fff}
+ '{32'h40110000, 32'h40110fff}
}},
'{"ast_wrapper", '{
'{32'h40180000, 32'h40180fff}
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 cf2c712..c74cffc 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
@@ -7,16 +7,16 @@
package tl_peri_pkg;
localparam logic [31:0] ADDR_SPACE_UART = 32'h 40000000;
- localparam logic [31:0] ADDR_SPACE_GPIO = 32'h 40010000;
- localparam logic [31:0] ADDR_SPACE_SPI_DEVICE = 32'h 40020000;
- localparam logic [31:0] ADDR_SPACE_RV_TIMER = 32'h 40080000;
- localparam logic [31:0] ADDR_SPACE_USBDEV = 32'h 40150000;
- localparam logic [31:0] ADDR_SPACE_PWRMGR = 32'h 400a0000;
- localparam logic [31:0] ADDR_SPACE_RSTMGR = 32'h 400b0000;
- localparam logic [31:0] ADDR_SPACE_CLKMGR = 32'h 400c0000;
+ localparam logic [31:0] ADDR_SPACE_GPIO = 32'h 40040000;
+ localparam logic [31:0] ADDR_SPACE_SPI_DEVICE = 32'h 40050000;
+ localparam logic [31:0] ADDR_SPACE_RV_TIMER = 32'h 40100000;
+ localparam logic [31:0] ADDR_SPACE_USBDEV = 32'h 40500000;
+ localparam logic [31:0] ADDR_SPACE_PWRMGR = 32'h 40400000;
+ localparam logic [31:0] ADDR_SPACE_RSTMGR = 32'h 40410000;
+ localparam logic [31:0] ADDR_SPACE_CLKMGR = 32'h 40420000;
localparam logic [31:0] ADDR_SPACE_RAM_RET = 32'h 18000000;
- localparam logic [31:0] ADDR_SPACE_OTP_CTRL = 32'h 401b0000;
- localparam logic [31:0] ADDR_SPACE_SENSOR_CTRL = 32'h 40170000;
+ localparam logic [31:0] ADDR_SPACE_OTP_CTRL = 32'h 40130000;
+ localparam logic [31:0] ADDR_SPACE_SENSOR_CTRL = 32'h 40110000;
localparam logic [31:0] ADDR_SPACE_AST_WRAPPER = 32'h 40180000;
localparam logic [31:0] ADDR_MASK_UART = 32'h 00000fff;
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
index 1d31d2d..306dad4 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey.sv
@@ -119,19 +119,14 @@
logic cio_spi_device_sdi_p2d;
logic cio_spi_device_sdo_d2p;
logic cio_spi_device_sdo_en_d2p;
- // flash_ctrl
// rv_timer
- // aes
- // hmac
- // kmac
- // rv_plic
- // pinmux
- // padctrl
- // alert_handler
+ // sensor_ctrl
+ // otp_ctrl
// pwrmgr
// rstmgr
// clkmgr
- // nmi_gen
+ // pinmux
+ // padctrl
// usbdev
logic cio_usbdev_sense_p2d;
logic cio_usbdev_d_p2d;
@@ -153,13 +148,18 @@
logic cio_usbdev_dp_en_d2p;
logic cio_usbdev_dn_d2p;
logic cio_usbdev_dn_en_d2p;
- // sensor_ctrl
+ // flash_ctrl
+ // rv_plic
+ // aes
+ // hmac
+ // kmac
// keymgr
- // otp_ctrl
// csrng
// entropy_src
// edn0
// edn1
+ // alert_handler
+ // nmi_gen
// otbn
@@ -180,27 +180,10 @@
logic intr_spi_device_rxerr;
logic intr_spi_device_rxoverflow;
logic intr_spi_device_txunderflow;
- logic intr_flash_ctrl_prog_empty;
- logic intr_flash_ctrl_prog_lvl;
- logic intr_flash_ctrl_rd_full;
- logic intr_flash_ctrl_rd_lvl;
- logic intr_flash_ctrl_op_done;
- logic intr_flash_ctrl_op_error;
logic intr_rv_timer_timer_expired_0_0;
- logic intr_hmac_hmac_done;
- logic intr_hmac_fifo_empty;
- logic intr_hmac_hmac_err;
- logic intr_kmac_kmac_done;
- logic intr_kmac_fifo_empty;
- logic intr_kmac_kmac_err;
- logic intr_alert_handler_classa;
- logic intr_alert_handler_classb;
- logic intr_alert_handler_classc;
- logic intr_alert_handler_classd;
+ logic intr_otp_ctrl_otp_operation_done;
+ logic intr_otp_ctrl_otp_error;
logic intr_pwrmgr_wakeup;
- logic intr_nmi_gen_esc0;
- logic intr_nmi_gen_esc1;
- logic intr_nmi_gen_esc2;
logic intr_usbdev_pkt_received;
logic intr_usbdev_pkt_sent;
logic intr_usbdev_disconnected;
@@ -218,10 +201,20 @@
logic intr_usbdev_frame;
logic intr_usbdev_connected;
logic intr_usbdev_link_out_err;
+ logic intr_flash_ctrl_prog_empty;
+ logic intr_flash_ctrl_prog_lvl;
+ logic intr_flash_ctrl_rd_full;
+ logic intr_flash_ctrl_rd_lvl;
+ logic intr_flash_ctrl_op_done;
+ logic intr_flash_ctrl_op_error;
+ logic intr_hmac_hmac_done;
+ logic intr_hmac_fifo_empty;
+ logic intr_hmac_hmac_err;
+ logic intr_kmac_kmac_done;
+ logic intr_kmac_fifo_empty;
+ logic intr_kmac_kmac_err;
logic intr_keymgr_op_done;
logic intr_keymgr_err;
- logic intr_otp_ctrl_otp_operation_done;
- logic intr_otp_ctrl_otp_error;
logic intr_csrng_cs_cmd_req_done;
logic intr_csrng_cs_entropy_req;
logic intr_csrng_cs_hw_inst_exc;
@@ -233,6 +226,13 @@
logic intr_edn0_edn_fifo_err;
logic intr_edn1_edn_cmd_req_done;
logic intr_edn1_edn_fifo_err;
+ logic intr_alert_handler_classa;
+ logic intr_alert_handler_classb;
+ logic intr_alert_handler_classc;
+ logic intr_alert_handler_classd;
+ logic intr_nmi_gen_esc0;
+ logic intr_nmi_gen_esc1;
+ logic intr_nmi_gen_esc2;
logic intr_otbn_done;
@@ -745,33 +745,6 @@
.rst_ni (rstmgr_resets.rst_spi_device_n[rstmgr_pkg::Domain0Sel])
);
- flash_ctrl u_flash_ctrl (
-
- // Interrupt
- .intr_prog_empty_o (intr_flash_ctrl_prog_empty),
- .intr_prog_lvl_o (intr_flash_ctrl_prog_lvl),
- .intr_rd_full_o (intr_flash_ctrl_rd_full),
- .intr_rd_lvl_o (intr_flash_ctrl_rd_lvl),
- .intr_op_done_o (intr_flash_ctrl_op_done),
- .intr_op_error_o (intr_flash_ctrl_op_error),
-
- // Inter-module signals
- .flash_o(flash_ctrl_flash_req),
- .flash_i(flash_ctrl_flash_rsp),
- .otp_i(flash_ctrl_pkg::OTP_FLASH_DEFAULT),
- .lc_provision_en_i(lc_ctrl_pkg::LC_TX_DEFAULT),
- .lc_i(flash_ctrl_pkg::LC_FLASH_REQ_DEFAULT),
- .lc_o(),
- .edn_i(flash_ctrl_pkg::EDN_ENTROPY_DEFAULT),
- .pwrmgr_i(pwrmgr_pwr_flash_req),
- .pwrmgr_o(pwrmgr_pwr_flash_rsp),
- .keymgr_o(flash_ctrl_keymgr),
- .tl_i(flash_ctrl_tl_req),
- .tl_o(flash_ctrl_tl_rsp),
- .clk_i (clkmgr_clocks.clk_main_infra),
- .rst_ni (rstmgr_resets.rst_lc_n[rstmgr_pkg::Domain0Sel])
- );
-
rv_timer u_rv_timer (
// Interrupt
@@ -784,150 +757,72 @@
.rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::Domain0Sel])
);
- aes #(
- .AES192Enable(1'b1),
- .Masking(AesMasking),
- .SBoxImpl(AesSBoxImpl),
- .SecStartTriggerDelay(SecAesStartTriggerDelay),
- .SecAllowForcingMasks(SecAesAllowForcingMasks),
- .SeedClearing(aes_pkg::DefaultSeedClearing),
- .SeedMasking(aes_pkg::DefaultSeedMasking),
- .AlertAsyncOn({aes_reg_pkg::NumAlerts{1'b1}})
- ) u_aes (
+ sensor_ctrl u_sensor_ctrl (
- // [0]: ctrl_err_update
- // [1]: ctrl_err_storage
- .alert_tx_o ( alert_tx[1:0] ),
- .alert_rx_i ( alert_rx[1:0] ),
+ // [0]: as
+ // [1]: cg
+ // [2]: gd
+ // [3]: ts_hi
+ // [4]: ts_lo
+ // [5]: ls
+ // [6]: ot
+ .alert_tx_o ( alert_tx[6:0] ),
+ .alert_rx_i ( alert_rx[6:0] ),
// Inter-module signals
- .idle_o(clkmgr_idle[0]),
- .tl_i(aes_tl_req),
- .tl_o(aes_tl_rsp),
- .clk_i (clkmgr_clocks.clk_main_aes),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ .ast_alert_i(sensor_ctrl_ast_alert_req_i),
+ .ast_alert_o(sensor_ctrl_ast_alert_rsp_o),
+ .ast_status_i(sensor_ctrl_ast_status_i),
+ .tl_i(sensor_ctrl_tl_req),
+ .tl_o(sensor_ctrl_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_io_div4_secure),
+ .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel])
);
- hmac u_hmac (
+ otp_ctrl #(
+ .RndCnstLfsrSeed(RndCnstOtpCtrlLfsrSeed),
+ .RndCnstLfsrPerm(RndCnstOtpCtrlLfsrPerm),
+ .RndCnstKey(RndCnstOtpCtrlKey),
+ .RndCnstDigestConst(RndCnstOtpCtrlDigestConst),
+ .RndCnstDigestIV(RndCnstOtpCtrlDigestIV)
+ ) u_otp_ctrl (
// Interrupt
- .intr_hmac_done_o (intr_hmac_hmac_done),
- .intr_fifo_empty_o (intr_hmac_fifo_empty),
- .intr_hmac_err_o (intr_hmac_hmac_err),
+ .intr_otp_operation_done_o (intr_otp_ctrl_otp_operation_done),
+ .intr_otp_error_o (intr_otp_ctrl_otp_error),
+
+ // [7]: otp_macro_failure
+ // [8]: otp_check_failure
+ .alert_tx_o ( alert_tx[8:7] ),
+ .alert_rx_i ( alert_rx[8:7] ),
// Inter-module signals
- .idle_o(clkmgr_idle[1]),
- .tl_i(hmac_tl_req),
- .tl_o(hmac_tl_rsp),
- .clk_i (clkmgr_clocks.clk_main_hmac),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
- );
-
- kmac #(
- .EnMasking(KmacEnMasking),
- .ReuseShare(KmacReuseShare)
- ) u_kmac (
-
- // Interrupt
- .intr_kmac_done_o (intr_kmac_kmac_done),
- .intr_fifo_empty_o (intr_kmac_fifo_empty),
- .intr_kmac_err_o (intr_kmac_kmac_err),
-
- // Inter-module signals
- .keymgr_key_i(keymgr_kmac_key),
- .keymgr_kdf_i(keymgr_kmac_data_req),
- .keymgr_kdf_o(keymgr_kmac_data_rsp),
- .idle_o(clkmgr_idle[2]),
- .tl_i(kmac_tl_req),
- .tl_o(kmac_tl_rsp),
- .clk_i (clkmgr_clocks.clk_main_kmac),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
- );
-
- rv_plic u_rv_plic (
-
- // Inter-module signals
- .tl_i(rv_plic_tl_req),
- .tl_o(rv_plic_tl_rsp),
-
- .intr_src_i (intr_vector),
- .irq_o (irq_plic),
- .irq_id_o (irq_id),
- .msip_o (msip),
- .clk_i (clkmgr_clocks.clk_main_secure),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
- );
-
- pinmux u_pinmux (
-
- // Inter-module signals
- .lc_pinmux_strap_i('0),
- .lc_pinmux_strap_o(),
- .dft_strap_test_o(),
- .io_pok_i({pinmux_pkg::NIOPokSignals{1'b1}}),
- .sleep_en_i(1'b0),
- .aon_wkup_req_o(pwrmgr_wakeups),
- .tl_i(pinmux_tl_req),
- .tl_o(pinmux_tl_rsp),
-
- .periph_to_mio_i (mio_d2p ),
- .periph_to_mio_oe_i (mio_d2p_en ),
- .mio_to_periph_o (mio_p2d ),
-
- .mio_out_o,
- .mio_oe_o,
- .mio_in_i,
-
- .periph_to_dio_i (dio_d2p ),
- .periph_to_dio_oe_i (dio_d2p_en ),
- .dio_to_periph_o (dio_p2d ),
-
- .dio_out_o,
- .dio_oe_o,
- .dio_in_i,
- .clk_i (clkmgr_clocks.clk_main_secure),
- .clk_aon_i (clkmgr_clocks.clk_aon_secure),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]),
- .rst_aon_ni (rstmgr_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
- );
-
- padctrl u_padctrl (
-
- // Inter-module signals
- .tl_i(padctrl_tl_req),
- .tl_o(padctrl_tl_rsp),
-
- .mio_attr_o,
- .dio_attr_o,
- .clk_i (clkmgr_clocks.clk_main_secure),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel])
- );
-
- alert_handler #(
- .RndCnstLfsrSeed(RndCnstAlertHandlerLfsrSeed),
- .RndCnstLfsrPerm(RndCnstAlertHandlerLfsrPerm)
- ) u_alert_handler (
-
- // Interrupt
- .intr_classa_o (intr_alert_handler_classa),
- .intr_classb_o (intr_alert_handler_classb),
- .intr_classc_o (intr_alert_handler_classc),
- .intr_classd_o (intr_alert_handler_classd),
-
- // Inter-module signals
- .crashdump_o(alert_handler_crashdump),
- .tl_i(alert_handler_tl_req),
- .tl_o(alert_handler_tl_rsp),
- // TODO: wire this to TRNG
- .entropy_i ( 1'b0 ),
- // alert signals
- .alert_rx_o ( alert_rx ),
- .alert_tx_i ( alert_tx ),
- // escalation outputs
- .esc_rx_i ( esc_rx ),
- .esc_tx_o ( esc_tx ),
- .clk_i (clkmgr_clocks.clk_main_secure),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ .otp_ast_pwr_seq_o(otp_ctrl_otp_ast_pwr_seq_o),
+ .otp_ast_pwr_seq_h_i(otp_ctrl_otp_ast_pwr_seq_h_i),
+ .otp_edn_o(),
+ .otp_edn_i('0),
+ .pwr_otp_i(pwrmgr_pwr_otp_req),
+ .pwr_otp_o(pwrmgr_pwr_otp_rsp),
+ .lc_otp_program_i('0),
+ .lc_otp_program_o(),
+ .lc_otp_token_i('0),
+ .lc_otp_token_o(),
+ .otp_lc_data_o(),
+ .lc_escalate_en_i(lc_ctrl_pkg::Off),
+ .lc_provision_wr_en_i(lc_ctrl_pkg::Off),
+ .lc_dft_en_i(lc_ctrl_pkg::Off),
+ .otp_keymgr_key_o(),
+ .flash_otp_key_i('0),
+ .flash_otp_key_o(),
+ .sram_otp_key_i('0),
+ .sram_otp_key_o(),
+ .otbn_otp_key_i('0),
+ .otbn_otp_key_o(),
+ .hw_cfg_o(),
+ .tl_i(otp_ctrl_tl_req),
+ .tl_o(otp_ctrl_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_io_div4_timers),
+ .rst_ni (rstmgr_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
);
pwrmgr u_pwrmgr (
@@ -1007,22 +902,49 @@
.rst_io_div4_ni (rstmgr_resets.rst_por_io_div4_n[rstmgr_pkg::DomainAonSel])
);
- nmi_gen u_nmi_gen (
-
- // Interrupt
- .intr_esc0_o (intr_nmi_gen_esc0),
- .intr_esc1_o (intr_nmi_gen_esc1),
- .intr_esc2_o (intr_nmi_gen_esc2),
+ pinmux u_pinmux (
// Inter-module signals
- .nmi_rst_req_o(pwrmgr_rstreqs),
- .tl_i(nmi_gen_tl_req),
- .tl_o(nmi_gen_tl_rsp),
- // escalation signal inputs
- .esc_rx_o ( esc_rx[3:1] ),
- .esc_tx_i ( esc_tx[3:1] ),
+ .lc_pinmux_strap_i('0),
+ .lc_pinmux_strap_o(),
+ .dft_strap_test_o(),
+ .io_pok_i({pinmux_pkg::NIOPokSignals{1'b1}}),
+ .sleep_en_i(1'b0),
+ .aon_wkup_req_o(pwrmgr_wakeups),
+ .tl_i(pinmux_tl_req),
+ .tl_o(pinmux_tl_rsp),
+
+ .periph_to_mio_i (mio_d2p ),
+ .periph_to_mio_oe_i (mio_d2p_en ),
+ .mio_to_periph_o (mio_p2d ),
+
+ .mio_out_o,
+ .mio_oe_o,
+ .mio_in_i,
+
+ .periph_to_dio_i (dio_d2p ),
+ .periph_to_dio_oe_i (dio_d2p_en ),
+ .dio_to_periph_o (dio_p2d ),
+
+ .dio_out_o,
+ .dio_oe_o,
+ .dio_in_i,
.clk_i (clkmgr_clocks.clk_main_secure),
- .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ .clk_aon_i (clkmgr_clocks.clk_aon_secure),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel]),
+ .rst_aon_ni (rstmgr_resets.rst_sys_aon_n[rstmgr_pkg::DomainAonSel])
+ );
+
+ padctrl u_padctrl (
+
+ // Inter-module signals
+ .tl_i(padctrl_tl_req),
+ .tl_o(padctrl_tl_rsp),
+
+ .mio_attr_o,
+ .dio_attr_o,
+ .clk_i (clkmgr_clocks.clk_main_secure),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::DomainAonSel])
);
usbdev u_usbdev (
@@ -1081,26 +1003,105 @@
.rst_usb_48mhz_ni (rstmgr_resets.rst_usb_n[rstmgr_pkg::DomainAonSel])
);
- sensor_ctrl u_sensor_ctrl (
+ flash_ctrl u_flash_ctrl (
- // [2]: as
- // [3]: cg
- // [4]: gd
- // [5]: ts_hi
- // [6]: ts_lo
- // [7]: ls
- // [8]: ot
- .alert_tx_o ( alert_tx[8:2] ),
- .alert_rx_i ( alert_rx[8:2] ),
+ // Interrupt
+ .intr_prog_empty_o (intr_flash_ctrl_prog_empty),
+ .intr_prog_lvl_o (intr_flash_ctrl_prog_lvl),
+ .intr_rd_full_o (intr_flash_ctrl_rd_full),
+ .intr_rd_lvl_o (intr_flash_ctrl_rd_lvl),
+ .intr_op_done_o (intr_flash_ctrl_op_done),
+ .intr_op_error_o (intr_flash_ctrl_op_error),
// Inter-module signals
- .ast_alert_i(sensor_ctrl_ast_alert_req_i),
- .ast_alert_o(sensor_ctrl_ast_alert_rsp_o),
- .ast_status_i(sensor_ctrl_ast_status_i),
- .tl_i(sensor_ctrl_tl_req),
- .tl_o(sensor_ctrl_tl_rsp),
- .clk_i (clkmgr_clocks.clk_io_div4_secure),
- .rst_ni (rstmgr_resets.rst_sys_io_div4_n[rstmgr_pkg::DomainAonSel])
+ .flash_o(flash_ctrl_flash_req),
+ .flash_i(flash_ctrl_flash_rsp),
+ .otp_i(flash_ctrl_pkg::OTP_FLASH_DEFAULT),
+ .lc_provision_en_i(lc_ctrl_pkg::LC_TX_DEFAULT),
+ .lc_i(flash_ctrl_pkg::LC_FLASH_REQ_DEFAULT),
+ .lc_o(),
+ .edn_i(flash_ctrl_pkg::EDN_ENTROPY_DEFAULT),
+ .pwrmgr_i(pwrmgr_pwr_flash_req),
+ .pwrmgr_o(pwrmgr_pwr_flash_rsp),
+ .keymgr_o(flash_ctrl_keymgr),
+ .tl_i(flash_ctrl_tl_req),
+ .tl_o(flash_ctrl_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_main_infra),
+ .rst_ni (rstmgr_resets.rst_lc_n[rstmgr_pkg::Domain0Sel])
+ );
+
+ rv_plic u_rv_plic (
+
+ // Inter-module signals
+ .tl_i(rv_plic_tl_req),
+ .tl_o(rv_plic_tl_rsp),
+
+ .intr_src_i (intr_vector),
+ .irq_o (irq_plic),
+ .irq_id_o (irq_id),
+ .msip_o (msip),
+ .clk_i (clkmgr_clocks.clk_main_secure),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ );
+
+ aes #(
+ .AES192Enable(1'b1),
+ .Masking(AesMasking),
+ .SBoxImpl(AesSBoxImpl),
+ .SecStartTriggerDelay(SecAesStartTriggerDelay),
+ .SecAllowForcingMasks(SecAesAllowForcingMasks),
+ .SeedClearing(aes_pkg::DefaultSeedClearing),
+ .SeedMasking(aes_pkg::DefaultSeedMasking),
+ .AlertAsyncOn({aes_reg_pkg::NumAlerts{1'b1}})
+ ) u_aes (
+
+ // [9]: ctrl_err_update
+ // [10]: ctrl_err_storage
+ .alert_tx_o ( alert_tx[10:9] ),
+ .alert_rx_i ( alert_rx[10:9] ),
+
+ // Inter-module signals
+ .idle_o(clkmgr_idle[0]),
+ .tl_i(aes_tl_req),
+ .tl_o(aes_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_main_aes),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ );
+
+ hmac u_hmac (
+
+ // Interrupt
+ .intr_hmac_done_o (intr_hmac_hmac_done),
+ .intr_fifo_empty_o (intr_hmac_fifo_empty),
+ .intr_hmac_err_o (intr_hmac_hmac_err),
+
+ // Inter-module signals
+ .idle_o(clkmgr_idle[1]),
+ .tl_i(hmac_tl_req),
+ .tl_o(hmac_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_main_hmac),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ );
+
+ kmac #(
+ .EnMasking(KmacEnMasking),
+ .ReuseShare(KmacReuseShare)
+ ) u_kmac (
+
+ // Interrupt
+ .intr_kmac_done_o (intr_kmac_kmac_done),
+ .intr_fifo_empty_o (intr_kmac_fifo_empty),
+ .intr_kmac_err_o (intr_kmac_kmac_err),
+
+ // Inter-module signals
+ .keymgr_key_i(keymgr_kmac_key),
+ .keymgr_kdf_i(keymgr_kmac_data_req),
+ .keymgr_kdf_o(keymgr_kmac_data_rsp),
+ .idle_o(clkmgr_idle[2]),
+ .tl_i(kmac_tl_req),
+ .tl_o(kmac_tl_rsp),
+ .clk_i (clkmgr_clocks.clk_main_kmac),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
);
keymgr u_keymgr (
@@ -1109,10 +1110,10 @@
.intr_op_done_o (intr_keymgr_op_done),
.intr_err_o (intr_keymgr_err),
- // [9]: fault_err
- // [10]: operation_err
- .alert_tx_o ( alert_tx[10:9] ),
- .alert_rx_i ( alert_rx[10:9] ),
+ // [11]: fault_err
+ // [12]: operation_err
+ .alert_tx_o ( alert_tx[12:11] ),
+ .alert_rx_i ( alert_rx[12:11] ),
// Inter-module signals
.aes_key_o(),
@@ -1129,52 +1130,6 @@
.rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
);
- otp_ctrl #(
- .RndCnstLfsrSeed(RndCnstOtpCtrlLfsrSeed),
- .RndCnstLfsrPerm(RndCnstOtpCtrlLfsrPerm),
- .RndCnstKey(RndCnstOtpCtrlKey),
- .RndCnstDigestConst(RndCnstOtpCtrlDigestConst),
- .RndCnstDigestIV(RndCnstOtpCtrlDigestIV)
- ) u_otp_ctrl (
-
- // Interrupt
- .intr_otp_operation_done_o (intr_otp_ctrl_otp_operation_done),
- .intr_otp_error_o (intr_otp_ctrl_otp_error),
-
- // [11]: otp_macro_failure
- // [12]: otp_check_failure
- .alert_tx_o ( alert_tx[12:11] ),
- .alert_rx_i ( alert_rx[12:11] ),
-
- // Inter-module signals
- .otp_ast_pwr_seq_o(otp_ctrl_otp_ast_pwr_seq_o),
- .otp_ast_pwr_seq_h_i(otp_ctrl_otp_ast_pwr_seq_h_i),
- .otp_edn_o(),
- .otp_edn_i('0),
- .pwr_otp_i(pwrmgr_pwr_otp_req),
- .pwr_otp_o(pwrmgr_pwr_otp_rsp),
- .lc_otp_program_i('0),
- .lc_otp_program_o(),
- .lc_otp_token_i('0),
- .lc_otp_token_o(),
- .otp_lc_data_o(),
- .lc_escalate_en_i(lc_ctrl_pkg::Off),
- .lc_provision_wr_en_i(lc_ctrl_pkg::Off),
- .lc_dft_en_i(lc_ctrl_pkg::Off),
- .otp_keymgr_key_o(),
- .flash_otp_key_i('0),
- .flash_otp_key_o(),
- .sram_otp_key_i('0),
- .sram_otp_key_o(),
- .otbn_otp_key_i('0),
- .otbn_otp_key_o(),
- .hw_cfg_o(),
- .tl_i(otp_ctrl_tl_req),
- .tl_o(otp_ctrl_tl_rsp),
- .clk_i (clkmgr_clocks.clk_io_div4_timers),
- .rst_ni (rstmgr_resets.rst_lc_io_div4_n[rstmgr_pkg::Domain0Sel])
- );
-
csrng #(
.SBoxImpl(CsrngSBoxImpl)
) u_csrng (
@@ -1257,6 +1212,51 @@
.rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
);
+ alert_handler #(
+ .RndCnstLfsrSeed(RndCnstAlertHandlerLfsrSeed),
+ .RndCnstLfsrPerm(RndCnstAlertHandlerLfsrPerm)
+ ) u_alert_handler (
+
+ // Interrupt
+ .intr_classa_o (intr_alert_handler_classa),
+ .intr_classb_o (intr_alert_handler_classb),
+ .intr_classc_o (intr_alert_handler_classc),
+ .intr_classd_o (intr_alert_handler_classd),
+
+ // Inter-module signals
+ .crashdump_o(alert_handler_crashdump),
+ .tl_i(alert_handler_tl_req),
+ .tl_o(alert_handler_tl_rsp),
+ // TODO: wire this to TRNG
+ .entropy_i ( 1'b0 ),
+ // alert signals
+ .alert_rx_o ( alert_rx ),
+ .alert_tx_i ( alert_tx ),
+ // escalation outputs
+ .esc_rx_i ( esc_rx ),
+ .esc_tx_o ( esc_tx ),
+ .clk_i (clkmgr_clocks.clk_main_secure),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ );
+
+ nmi_gen u_nmi_gen (
+
+ // Interrupt
+ .intr_esc0_o (intr_nmi_gen_esc0),
+ .intr_esc1_o (intr_nmi_gen_esc1),
+ .intr_esc2_o (intr_nmi_gen_esc2),
+
+ // Inter-module signals
+ .nmi_rst_req_o(pwrmgr_rstreqs),
+ .tl_i(nmi_gen_tl_req),
+ .tl_o(nmi_gen_tl_rsp),
+ // escalation signal inputs
+ .esc_rx_o ( esc_rx[3:1] ),
+ .esc_tx_i ( esc_tx[3:1] ),
+ .clk_i (clkmgr_clocks.clk_main_secure),
+ .rst_ni (rstmgr_resets.rst_sys_n[rstmgr_pkg::Domain0Sel])
+ );
+
otbn #(
.RegFile(OtbnRegFile)
) u_otbn (
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
index ae13197..3086406 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_pkg.sv
@@ -24,7 +24,7 @@
/**
* Peripheral base address for gpio in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_GPIO_BASE_ADDR = 32'h40010000;
+ parameter int unsigned TOP_EARLGREY_GPIO_BASE_ADDR = 32'h40040000;
/**
* Peripheral size in bytes for gpio in top earlgrey.
@@ -34,7 +34,7 @@
/**
* Peripheral base address for spi_device in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_SPI_DEVICE_BASE_ADDR = 32'h40020000;
+ parameter int unsigned TOP_EARLGREY_SPI_DEVICE_BASE_ADDR = 32'h40050000;
/**
* Peripheral size in bytes for spi_device in top earlgrey.
@@ -42,19 +42,9 @@
parameter int unsigned TOP_EARLGREY_SPI_DEVICE_SIZE_BYTES = 32'h1000;
/**
- * Peripheral base address for flash_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_FLASH_CTRL_BASE_ADDR = 32'h40030000;
-
- /**
- * Peripheral size in bytes for flash_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES = 32'h1000;
-
- /**
* Peripheral base address for rv_timer in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_RV_TIMER_BASE_ADDR = 32'h40080000;
+ parameter int unsigned TOP_EARLGREY_RV_TIMER_BASE_ADDR = 32'h40100000;
/**
* Peripheral size in bytes for rv_timer in top earlgrey.
@@ -62,9 +52,109 @@
parameter int unsigned TOP_EARLGREY_RV_TIMER_SIZE_BYTES = 32'h1000;
/**
+ * Peripheral base address for sensor_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_SENSOR_CTRL_BASE_ADDR = 32'h40110000;
+
+ /**
+ * Peripheral size in bytes for sensor_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for otp_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_OTP_CTRL_BASE_ADDR = 32'h40130000;
+
+ /**
+ * Peripheral size in bytes for otp_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_OTP_CTRL_SIZE_BYTES = 32'h4000;
+
+ /**
+ * Peripheral base address for pwrmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PWRMGR_BASE_ADDR = 32'h40400000;
+
+ /**
+ * Peripheral size in bytes for pwrmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PWRMGR_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for rstmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_RSTMGR_BASE_ADDR = 32'h40410000;
+
+ /**
+ * Peripheral size in bytes for rstmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_RSTMGR_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for clkmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_CLKMGR_BASE_ADDR = 32'h40420000;
+
+ /**
+ * Peripheral size in bytes for clkmgr in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_CLKMGR_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for pinmux in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PINMUX_BASE_ADDR = 32'h40460000;
+
+ /**
+ * Peripheral size in bytes for pinmux in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PINMUX_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for padctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PADCTRL_BASE_ADDR = 32'h40470000;
+
+ /**
+ * Peripheral size in bytes for padctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_PADCTRL_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for usbdev in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_USBDEV_BASE_ADDR = 32'h40500000;
+
+ /**
+ * Peripheral size in bytes for usbdev in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_USBDEV_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for flash_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_FLASH_CTRL_BASE_ADDR = 32'h41000000;
+
+ /**
+ * Peripheral size in bytes for flash_ctrl in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for rv_plic in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_RV_PLIC_BASE_ADDR = 32'h41010000;
+
+ /**
+ * Peripheral size in bytes for rv_plic in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_RV_PLIC_SIZE_BYTES = 32'h1000;
+
+ /**
* Peripheral base address for aes in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_AES_BASE_ADDR = 32'h40110000;
+ parameter int unsigned TOP_EARLGREY_AES_BASE_ADDR = 32'h41100000;
/**
* Peripheral size in bytes for aes in top earlgrey.
@@ -74,7 +164,7 @@
/**
* Peripheral base address for hmac in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_HMAC_BASE_ADDR = 32'h40120000;
+ parameter int unsigned TOP_EARLGREY_HMAC_BASE_ADDR = 32'h41110000;
/**
* Peripheral size in bytes for hmac in top earlgrey.
@@ -92,109 +182,9 @@
parameter int unsigned TOP_EARLGREY_KMAC_SIZE_BYTES = 32'h1000;
/**
- * Peripheral base address for rv_plic in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_RV_PLIC_BASE_ADDR = 32'h40090000;
-
- /**
- * Peripheral size in bytes for rv_plic in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_RV_PLIC_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for pinmux in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PINMUX_BASE_ADDR = 32'h40070000;
-
- /**
- * Peripheral size in bytes for pinmux in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PINMUX_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for padctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PADCTRL_BASE_ADDR = 32'h40160000;
-
- /**
- * Peripheral size in bytes for padctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PADCTRL_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for alert_handler in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR = 32'h411b0000;
-
- /**
- * Peripheral size in bytes for alert_handler in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for pwrmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PWRMGR_BASE_ADDR = 32'h400A0000;
-
- /**
- * Peripheral size in bytes for pwrmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_PWRMGR_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for rstmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_RSTMGR_BASE_ADDR = 32'h400B0000;
-
- /**
- * Peripheral size in bytes for rstmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_RSTMGR_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for clkmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_CLKMGR_BASE_ADDR = 32'h400C0000;
-
- /**
- * Peripheral size in bytes for clkmgr in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_CLKMGR_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for nmi_gen in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_NMI_GEN_BASE_ADDR = 32'h411c0000;
-
- /**
- * Peripheral size in bytes for nmi_gen in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_NMI_GEN_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for usbdev in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_USBDEV_BASE_ADDR = 32'h40150000;
-
- /**
- * Peripheral size in bytes for usbdev in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_USBDEV_SIZE_BYTES = 32'h1000;
-
- /**
- * Peripheral base address for sensor_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_SENSOR_CTRL_BASE_ADDR = 32'h40170000;
-
- /**
- * Peripheral size in bytes for sensor_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES = 32'h1000;
-
- /**
* Peripheral base address for keymgr in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_KEYMGR_BASE_ADDR = 32'h401a0000;
+ parameter int unsigned TOP_EARLGREY_KEYMGR_BASE_ADDR = 32'h41130000;
/**
* Peripheral size in bytes for keymgr in top earlgrey.
@@ -202,16 +192,6 @@
parameter int unsigned TOP_EARLGREY_KEYMGR_SIZE_BYTES = 32'h1000;
/**
- * Peripheral base address for otp_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_OTP_CTRL_BASE_ADDR = 32'h401b0000;
-
- /**
- * Peripheral size in bytes for otp_ctrl in top earlgrey.
- */
- parameter int unsigned TOP_EARLGREY_OTP_CTRL_SIZE_BYTES = 32'h4000;
-
- /**
* Peripheral base address for csrng in top earlgrey.
*/
parameter int unsigned TOP_EARLGREY_CSRNG_BASE_ADDR = 32'h41150000;
@@ -252,9 +232,29 @@
parameter int unsigned TOP_EARLGREY_EDN1_SIZE_BYTES = 32'h1000;
/**
+ * Peripheral base address for alert_handler in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR = 32'h411b0000;
+
+ /**
+ * Peripheral size in bytes for alert_handler in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES = 32'h1000;
+
+ /**
+ * Peripheral base address for nmi_gen in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_NMI_GEN_BASE_ADDR = 32'h411c0000;
+
+ /**
+ * Peripheral size in bytes for nmi_gen in top earlgrey.
+ */
+ parameter int unsigned TOP_EARLGREY_NMI_GEN_SIZE_BYTES = 32'h1000;
+
+ /**
* Peripheral base address for otbn in top earlgrey.
*/
- parameter int unsigned TOP_EARLGREY_OTBN_BASE_ADDR = 32'h50000000;
+ parameter int unsigned TOP_EARLGREY_OTBN_BASE_ADDR = 32'h411d0000;
/**
* Peripheral size in bytes for otbn in top earlgrey.
diff --git a/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv b/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv
index 573464b..929aec2 100644
--- a/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv
+++ b/hw/top_earlgrey/rtl/autogen/top_earlgrey_rnd_cnst_pkg.sv
@@ -14,19 +14,6 @@
package top_earlgrey_rnd_cnst_pkg;
////////////////////////////////////////////
- // alert_handler
- ////////////////////////////////////////////
- // Compile-time random bits for initial LFSR seed
- parameter alert_pkg::lfsr_seed_t RndCnstAlertHandlerLfsrSeed = {
- 32'h5DEF7861
- };
-
- // Compile-time random permutation for LFSR output
- parameter alert_pkg::lfsr_perm_t RndCnstAlertHandlerLfsrPerm = {
- 160'h5F00C4CAFD73FC4AC479A61068375F38956D84B3
- };
-
- ////////////////////////////////////////////
// otp_ctrl
////////////////////////////////////////////
// Compile-time random bits for initial LFSR seed
@@ -58,4 +45,17 @@
256'h0D5AB25561AF49C696466A983E5346826A43628219E5A91389B9FE0D3B818E46
};
+ ////////////////////////////////////////////
+ // alert_handler
+ ////////////////////////////////////////////
+ // Compile-time random bits for initial LFSR seed
+ parameter alert_pkg::lfsr_seed_t RndCnstAlertHandlerLfsrSeed = {
+ 32'h5DEF7861
+ };
+
+ // Compile-time random permutation for LFSR output
+ parameter alert_pkg::lfsr_perm_t RndCnstAlertHandlerLfsrPerm = {
+ 160'h5F00C4CAFD73FC4AC479A61068375F38956D84B3
+ };
+
endpackage : top_earlgrey_rnd_cnst_pkg
diff --git a/hw/top_earlgrey/sw/autogen/top_earlgrey.h b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
index e7b7b2e..e335b22 100644
--- a/hw/top_earlgrey/sw/autogen/top_earlgrey.h
+++ b/hw/top_earlgrey/sw/autogen/top_earlgrey.h
@@ -49,7 +49,7 @@
* 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_GPIO_BASE_ADDR 0x40010000u
+#define TOP_EARLGREY_GPIO_BASE_ADDR 0x40040000u
/**
* Peripheral size for gpio in top earlgrey.
@@ -67,7 +67,7 @@
* 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_DEVICE_BASE_ADDR 0x40020000u
+#define TOP_EARLGREY_SPI_DEVICE_BASE_ADDR 0x40050000u
/**
* Peripheral size for spi_device in top earlgrey.
@@ -80,30 +80,12 @@
#define TOP_EARLGREY_SPI_DEVICE_SIZE_BYTES 0x1000u
/**
- * Peripheral base address for flash_ctrl 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_FLASH_CTRL_BASE_ADDR 0x40030000u
-
-/**
- * Peripheral size for flash_ctrl 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_FLASH_CTRL_BASE_ADDR and
- * `TOP_EARLGREY_FLASH_CTRL_BASE_ADDR + TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES 0x1000u
-
-/**
* Peripheral base address for rv_timer 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_RV_TIMER_BASE_ADDR 0x40080000u
+#define TOP_EARLGREY_RV_TIMER_BASE_ADDR 0x40100000u
/**
* Peripheral size for rv_timer in top earlgrey.
@@ -116,12 +98,192 @@
#define TOP_EARLGREY_RV_TIMER_SIZE_BYTES 0x1000u
/**
+ * Peripheral base address for sensor_ctrl 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_SENSOR_CTRL_BASE_ADDR 0x40110000u
+
+/**
+ * Peripheral size for sensor_ctrl 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_SENSOR_CTRL_BASE_ADDR and
+ * `TOP_EARLGREY_SENSOR_CTRL_BASE_ADDR + TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for otp_ctrl 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_OTP_CTRL_BASE_ADDR 0x40130000u
+
+/**
+ * Peripheral size for otp_ctrl 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_OTP_CTRL_BASE_ADDR and
+ * `TOP_EARLGREY_OTP_CTRL_BASE_ADDR + TOP_EARLGREY_OTP_CTRL_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_OTP_CTRL_SIZE_BYTES 0x4000u
+
+/**
+ * Peripheral base address for pwrmgr 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_PWRMGR_BASE_ADDR 0x40400000u
+
+/**
+ * Peripheral size for pwrmgr 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_PWRMGR_BASE_ADDR and
+ * `TOP_EARLGREY_PWRMGR_BASE_ADDR + TOP_EARLGREY_PWRMGR_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_PWRMGR_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for rstmgr 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_RSTMGR_BASE_ADDR 0x40410000u
+
+/**
+ * Peripheral size for rstmgr 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_RSTMGR_BASE_ADDR and
+ * `TOP_EARLGREY_RSTMGR_BASE_ADDR + TOP_EARLGREY_RSTMGR_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_RSTMGR_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for clkmgr 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_CLKMGR_BASE_ADDR 0x40420000u
+
+/**
+ * Peripheral size for clkmgr 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_CLKMGR_BASE_ADDR and
+ * `TOP_EARLGREY_CLKMGR_BASE_ADDR + TOP_EARLGREY_CLKMGR_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_CLKMGR_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for pinmux 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_PINMUX_BASE_ADDR 0x40460000u
+
+/**
+ * Peripheral size for pinmux 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_PINMUX_BASE_ADDR and
+ * `TOP_EARLGREY_PINMUX_BASE_ADDR + TOP_EARLGREY_PINMUX_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_PINMUX_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for padctrl 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_PADCTRL_BASE_ADDR 0x40470000u
+
+/**
+ * Peripheral size for padctrl 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_PADCTRL_BASE_ADDR and
+ * `TOP_EARLGREY_PADCTRL_BASE_ADDR + TOP_EARLGREY_PADCTRL_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_PADCTRL_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for usbdev 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_USBDEV_BASE_ADDR 0x40500000u
+
+/**
+ * Peripheral size for usbdev 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_USBDEV_BASE_ADDR and
+ * `TOP_EARLGREY_USBDEV_BASE_ADDR + TOP_EARLGREY_USBDEV_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_USBDEV_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for flash_ctrl 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_FLASH_CTRL_BASE_ADDR 0x41000000u
+
+/**
+ * Peripheral size for flash_ctrl 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_FLASH_CTRL_BASE_ADDR and
+ * `TOP_EARLGREY_FLASH_CTRL_BASE_ADDR + TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_FLASH_CTRL_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for rv_plic 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_RV_PLIC_BASE_ADDR 0x41010000u
+
+/**
+ * Peripheral size for rv_plic 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_RV_PLIC_BASE_ADDR and
+ * `TOP_EARLGREY_RV_PLIC_BASE_ADDR + TOP_EARLGREY_RV_PLIC_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_RV_PLIC_SIZE_BYTES 0x1000u
+
+/**
* Peripheral base address for aes 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_AES_BASE_ADDR 0x40110000u
+#define TOP_EARLGREY_AES_BASE_ADDR 0x41100000u
/**
* Peripheral size for aes in top earlgrey.
@@ -139,7 +301,7 @@
* 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_HMAC_BASE_ADDR 0x40120000u
+#define TOP_EARLGREY_HMAC_BASE_ADDR 0x41110000u
/**
* Peripheral size for hmac in top earlgrey.
@@ -170,192 +332,12 @@
#define TOP_EARLGREY_KMAC_SIZE_BYTES 0x1000u
/**
- * Peripheral base address for rv_plic 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_RV_PLIC_BASE_ADDR 0x40090000u
-
-/**
- * Peripheral size for rv_plic 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_RV_PLIC_BASE_ADDR and
- * `TOP_EARLGREY_RV_PLIC_BASE_ADDR + TOP_EARLGREY_RV_PLIC_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_RV_PLIC_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for pinmux 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_PINMUX_BASE_ADDR 0x40070000u
-
-/**
- * Peripheral size for pinmux 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_PINMUX_BASE_ADDR and
- * `TOP_EARLGREY_PINMUX_BASE_ADDR + TOP_EARLGREY_PINMUX_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_PINMUX_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for padctrl 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_PADCTRL_BASE_ADDR 0x40160000u
-
-/**
- * Peripheral size for padctrl 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_PADCTRL_BASE_ADDR and
- * `TOP_EARLGREY_PADCTRL_BASE_ADDR + TOP_EARLGREY_PADCTRL_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_PADCTRL_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for alert_handler 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_ALERT_HANDLER_BASE_ADDR 0x411b0000u
-
-/**
- * Peripheral size for alert_handler 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_ALERT_HANDLER_BASE_ADDR and
- * `TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR + TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for pwrmgr 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_PWRMGR_BASE_ADDR 0x400A0000u
-
-/**
- * Peripheral size for pwrmgr 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_PWRMGR_BASE_ADDR and
- * `TOP_EARLGREY_PWRMGR_BASE_ADDR + TOP_EARLGREY_PWRMGR_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_PWRMGR_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for rstmgr 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_RSTMGR_BASE_ADDR 0x400B0000u
-
-/**
- * Peripheral size for rstmgr 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_RSTMGR_BASE_ADDR and
- * `TOP_EARLGREY_RSTMGR_BASE_ADDR + TOP_EARLGREY_RSTMGR_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_RSTMGR_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for clkmgr 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_CLKMGR_BASE_ADDR 0x400C0000u
-
-/**
- * Peripheral size for clkmgr 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_CLKMGR_BASE_ADDR and
- * `TOP_EARLGREY_CLKMGR_BASE_ADDR + TOP_EARLGREY_CLKMGR_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_CLKMGR_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for nmi_gen 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_NMI_GEN_BASE_ADDR 0x411c0000u
-
-/**
- * Peripheral size for nmi_gen 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_NMI_GEN_BASE_ADDR and
- * `TOP_EARLGREY_NMI_GEN_BASE_ADDR + TOP_EARLGREY_NMI_GEN_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_NMI_GEN_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for usbdev 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_USBDEV_BASE_ADDR 0x40150000u
-
-/**
- * Peripheral size for usbdev 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_USBDEV_BASE_ADDR and
- * `TOP_EARLGREY_USBDEV_BASE_ADDR + TOP_EARLGREY_USBDEV_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_USBDEV_SIZE_BYTES 0x1000u
-
-/**
- * Peripheral base address for sensor_ctrl 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_SENSOR_CTRL_BASE_ADDR 0x40170000u
-
-/**
- * Peripheral size for sensor_ctrl 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_SENSOR_CTRL_BASE_ADDR and
- * `TOP_EARLGREY_SENSOR_CTRL_BASE_ADDR + TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_SENSOR_CTRL_SIZE_BYTES 0x1000u
-
-/**
* Peripheral base address for keymgr 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_KEYMGR_BASE_ADDR 0x401a0000u
+#define TOP_EARLGREY_KEYMGR_BASE_ADDR 0x41130000u
/**
* Peripheral size for keymgr in top earlgrey.
@@ -368,24 +350,6 @@
#define TOP_EARLGREY_KEYMGR_SIZE_BYTES 0x1000u
/**
- * Peripheral base address for otp_ctrl 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_OTP_CTRL_BASE_ADDR 0x401b0000u
-
-/**
- * Peripheral size for otp_ctrl 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_OTP_CTRL_BASE_ADDR and
- * `TOP_EARLGREY_OTP_CTRL_BASE_ADDR + TOP_EARLGREY_OTP_CTRL_SIZE_BYTES`.
- */
-#define TOP_EARLGREY_OTP_CTRL_SIZE_BYTES 0x4000u
-
-/**
* Peripheral base address for csrng in top earlgrey.
*
* This should be used with #mmio_region_from_addr to access the memory-mapped
@@ -458,12 +422,48 @@
#define TOP_EARLGREY_EDN1_SIZE_BYTES 0x1000u
/**
+ * Peripheral base address for alert_handler 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_ALERT_HANDLER_BASE_ADDR 0x411b0000u
+
+/**
+ * Peripheral size for alert_handler 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_ALERT_HANDLER_BASE_ADDR and
+ * `TOP_EARLGREY_ALERT_HANDLER_BASE_ADDR + TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_ALERT_HANDLER_SIZE_BYTES 0x1000u
+
+/**
+ * Peripheral base address for nmi_gen 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_NMI_GEN_BASE_ADDR 0x411c0000u
+
+/**
+ * Peripheral size for nmi_gen 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_NMI_GEN_BASE_ADDR and
+ * `TOP_EARLGREY_NMI_GEN_BASE_ADDR + TOP_EARLGREY_NMI_GEN_SIZE_BYTES`.
+ */
+#define TOP_EARLGREY_NMI_GEN_SIZE_BYTES 0x1000u
+
+/**
* Peripheral base address for otbn 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_OTBN_BASE_ADDR 0x50000000u
+#define TOP_EARLGREY_OTBN_BASE_ADDR 0x411d0000u
/**
* Peripheral size for otbn in top earlgrey.