sep_system_peripherals
Integrate mailbox, filters, remap, and system CSRs on the SEP peripheral fabric.
Bridges local and SMN AXI into mailbox, system CSR, and filtered outbound/inbound paths. Publishes mailbox interrupts, remap debug, filter hit debug, NMI vector, TRNG source select, KM wipe, and DMA/peripheral bus-error clear.
Local-master requests are widened from 32 to 56 address bits, pass the 16-region alias remap and a register cut, and are decoded in priority order: the SMC aperture to sep_ext_to_smc_axi_req_o unfiltered; the SMU aperture or any address at or above 0x1_0000_0000 to the outbound filter; the AP and STEE regions through output remaps that set AxUSER to OthersSourceId, then to the outbound filter; everything else to the peripheral xbar. SMN inbound requests pass an axi_cut and the inbound filter, have SEP_GLOBAL_BASE_ADDR within SEP_REGION_SIZE rebased to 0, and enter the same xbar. The xbar serves the mailbox and system CSR windows and forwards other addresses below 0x4000_0000, truncated to 32 address bits with a 3-bit ID, on smn_inbound_to_sep_axi_req_o. Both filters block by default and check the 4-bit source ID and the non-secure bit.
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | logic | System clock. |
clk_ref_i | input | logic | Free-running reference clock for REFERENCE_COUNTER. |
rst_ni | input | logic | Active-low reset. |
rst_warm_ni | input | logic | Active-low warm reset of the warm scratch registers only. |
test_en_i | input | logic | DFT test-enable (scan-enable). |
scan_rst_ni | input | logic | DFT scan reset, active-low; unused. |
inbound_filter_skip_i | input | logic | Bypasses all inbound filter matching while high; feat_ctrl.sep_debug in sep. |
outbound_filter_skip_i | input | logic | Bypasses all outbound filter matching while high. |
sep_system_peripheral_axi_req_i | input | sep_pkg::sep_axi_xbar_slv_req_t | AXI request from local masters via the SEP local xbar, with 32-bit addresses. |
sep_system_peripheral_axi_resp_o | output | sep_pkg::sep_axi_xbar_slv_resp_t | AXI response to the SEP local xbar. |
smn_inbound_axi_req_i | input | sep_pkg::sep_system_peripherals_internal_axi_req_t | SMN inbound AXI request with a 56-bit global address, before the inbound filter. |
smn_inbound_axi_resp_o | output | sep_pkg::sep_system_peripherals_internal_axi_resp_t | SMN inbound AXI response; blocked requests get the filter's error response. |
smn_inbound_to_sep_axi_req_o | output | sep_pkg::sep_system_peripherals_inbound_to_sep_axi_req_t | Peripheral-xbar request outside the mailbox and system CSR windows, from either initiator, with a 32-bit address and 3-bit ID, to the SEP local xbar. |
smn_inbound_to_sep_axi_resp_i | input | sep_pkg::sep_system_peripherals_inbound_to_sep_axi_resp_t | Response from the SEP local xbar to smn_inbound_to_sep_axi_req_o. |
smn_outbound_axi_req_o | output | sep_pkg::sep_system_peripherals_outbound_axi_req_t | Outbound request to the SMN after the outbound filter. |
smn_outbound_axi_resp_i | input | sep_pkg::sep_system_peripherals_outbound_axi_resp_t | Outbound response from the SMN. |
sep_ext_to_smc_axi_req_o | output | sep_pkg::sep_system_peripherals_internal_axi_req_t | Local-master request in the SMC aperture, after the alias remap; not filtered. |
sep_ext_to_smc_axi_resp_i | input | sep_pkg::sep_system_peripherals_internal_axi_resp_t | Response from the SMC to sep_ext_to_smc_axi_req_o. |
local_masters_remap_debug_o | output | sep_pkg::remap_debug_t | Alias-remap hit region indices for local-master write and read requests. |
outbound_write_filter_hit_debug_o | output | logic [$clog2(sep_pkg::OutboundFilterNumFilters)-1:0] | Index of the outbound filter matched by the current write request. |
outbound_read_filter_hit_debug_o | output | logic [$clog2(sep_pkg::OutboundFilterNumFilters)-1:0] | Index of the outbound filter matched by the current read request. |
inbound_write_filter_hit_debug_o | output | logic [$clog2(sep_pkg::InboundFilterNumFilters)-1:0] | Index of the inbound filter matched by the current write request. |
inbound_read_filter_hit_debug_o | output | logic [$clog2(sep_pkg::InboundFilterNumFilters)-1:0] | Index of the inbound filter matched by the current read request. |
mailbox_inbound_interrupt_o | output | logic [sep_pkg::NumMailboxes-1:0] | Per-mailbox inbound-data interrupts. |
mailbox_outbound_interrupt_o | output | logic [sep_pkg::NumMailboxes-1:0] | Per-mailbox outbound-data interrupts. |
smc_fuse_sense_done_i | input | logic | SMC fuse sense completion, reflected in SMC_FUSE_SENSE_STATUS; requests to the SMC hang while it is low. |
sep_fuse_sense_done_i | input | logic | SEP fuse sense completion, reflected in SEP_FUSE_SENSE_STATUS. |
nmi_vec_o | output | logic [31:1] | SEP_NMI_VEC register value: the address the CPU jumps to on a non-maskable interrupt. |
smc_global_base_addr_i | input | logic [sep_pkg::SEP_SYSTEM_PERIPHERALS_56_ADDR_WIDTH-1:0] | Base of the SMC aperture in the global address map; local-master requests inside it leave on sep_ext_to_smc_axi_req_o. |
smc_region_size_i | input | logic [sep_pkg::SEP_SYSTEM_PERIPHERALS_56_ADDR_WIDTH-1:0] | Size in bytes of the SMC aperture at smc_global_base_addr_i. |
sep_local_base_addr_o | output | logic [sep_pkg::SEP_SYSTEM_PERIPHERALS_56_ADDR_WIDTH-1:0] | SEP_LOCAL_BASE_ADDR register value: base of the SEP local alias window. |
sep_global_base_addr_o | output | logic [sep_pkg::SEP_SYSTEM_PERIPHERALS_56_ADDR_WIDTH-1:0] | SEP_GLOBAL_BASE_ADDR register value: base of the SEP aperture in the global address map; inbound SMN addresses inside it are remapped to local addresses. |
sep_region_size_o | output | logic [sep_pkg::SEP_SYSTEM_PERIPHERALS_56_ADDR_WIDTH-1:0] | SEP_REGION_SIZE register value, zero-extended: size of the SEP aperture in bytes. |
ext_trng_src_sel_o | output | logic [2:0] | EXT_TRNG_SRC_SEL register value: bit i selects external TRNG (1) or internal DRBG (0) for stream i. |
km_wipe_state_o | output | logic | KM_WIPE_CTRL.wipe_state register value; a rising edge wipes the Key Manager. |
dma_reg_bus_err_i | input | logic | Secure DMA register-path fault, reflected in DMA_BUS_ERR_STATUS.reg_path_err. |
dma_host_intg_err_i | input | logic | DMA-master-path fault, latched into DMA_BUS_ERR_STATUS.host_path_err. |
dma_err_clr_o | output | logic | Single-cycle clear pulse from DMA_BUS_ERR_CLEAR to both DMA bridge-fault latches. |
periph_bus_err_i | input | logic [sep_pkg::NUM_PERIPH_BUS_ERRS-1:0] | Per-block peripheral register-bridge faults, reflected in PERIPH_BUS_ERR_STATUS, in sep_pkg::periph_bus_err_e bit order. |
periph_bus_err_clr_o | output | logic [sep_pkg::NUM_PERIPH_BUS_ERRS-1:0] | Per-block single-cycle clear pulses from PERIPH_BUS_ERR_CLEAR, in sep_pkg::periph_bus_err_e bit order. |