smc_input_fabric
Route the SMC's inbound AXI initiators toward the local and output fabrics.
Widens the JTAG and MMIO IDs and converts the log AXI-Lite port to AXI, applies the alias remap to those and the data accelerator port, muxes the four, and sends requests inside the local or global SMC window to the local output port truncated to 32 bits and all others to the global output port. System inbound AXI passes a clock-gated access filter that blocks by default; system and SEP requests outside the SMC window receive DECERR, and the rest are truncated to 32 bits for the local fabric. The JTAG, system and SEP inputs each enter through an axi_cut.
Parameters
| Name | Type | Default | Description |
|---|---|---|---|
FILTER_REQ_PIPELINE_ENABLE | bit | 1'b0 | Adds spill registers on the request channels at the system inbound filter boundary. |
FILTER_RSP_PIPELINE_ENABLE | bit | 1'b0 | Adds spill registers on the response channels at the system inbound filter boundary. |
NUM_FILTERS | int unsigned | 16 | Number of system inbound filter entries; sizes the filter CSR arrays and the hit-index outputs. |
Ports
| Name | Direction | Type | Description |
|---|---|---|---|
clk_i | input | logic | SMC core clock. |
rst_ni | input | logic | Primary reset, active-low, synchronized to the SMC core clock. |
test_en_i | input | logic | Scan test mode enable, active-high; forwarded to the AXI primitives and forces the filter clock gate on. |
scan_rst_ni | input | logic | Scan reset, active-low; not used in this module. |
filter_axi_cg_en_i | input | logic | Enables clock gating of the system inbound filter, active-high; low keeps the filter clock running. |
cg_hysteresis_i | input | smc_pkg::cg_hyster_t | Idle SMC core clock cycles the system inbound filter clock gate waits after the bus goes quiet before stopping the filter clock. |
global_base_addr_i | input | smc_pkg::smc_axi_addr_t | Global base address of the SMC window; requests in [base, base + region_size_i) count as SMC accesses. |
local_base_addr_i | input | smc_pkg::smc_axi_addr_t | Local base address of the SMC window; requests in [base, base + region_size_i) count as SMC accesses. |
region_size_i | input | logic [31:0] | Size in bytes of the SMC window at either base; the window end is computed one bit wider than the address so it cannot wrap. |
axi_in_jtag_req_i | input | smc_pkg::smc_jtag_56_64_2_12_axi_req_t | JTAG AXI Input request. |
axi_in_jtag_resp_o | output | smc_pkg::smc_jtag_56_64_2_12_axi_resp_t | JTAG AXI Input response. |
axi_in_mmio_req_i | input | smc_pkg::smc_cpu_mmio_axi_req_t | MMIO AXI Input request. |
axi_in_mmio_resp_o | output | smc_pkg::smc_cpu_mmio_axi_resp_t | MMIO AXI Input response. |
axi_in_data_accel_req_i | input | smc_pkg::smc_input_fabric_56_64_4_12_axi_req_t | Data Accelerator AXI Input request. |
axi_in_data_accel_resp_o | output | smc_pkg::smc_input_fabric_56_64_4_12_axi_resp_t | Data Accelerator AXI Input response. |
axi_lite_log_req_i | input | smc_pkg::smc_axil_56_64_req_t | Log AXI-Lite Input request. |
axi_lite_log_resp_o | output | smc_pkg::smc_axil_56_64_resp_t | Log AXI-Lite Input response. |
axi_local_out_req_o | output | smc_pkg::smc_local_32_64_6_12_axi_req_t | Request from the alias-remapped JTAG, MMIO, log and data accelerator paths that hits the local or global SMC window, truncated to the 32-bit local address. |
axi_local_out_resp_i | input | smc_pkg::smc_local_32_64_6_12_axi_resp_t | Response to requests on the local output port. |
axi_out_req_o | output | smc_pkg::smc_56_64_6_12_axi_req_t | Request from the alias-remapped JTAG, MMIO, log and data accelerator paths that misses the SMC window, with its full 56-bit address. |
axi_out_resp_i | input | smc_pkg::smc_56_64_6_12_axi_resp_t | Response to requests on the global output port. |
sys_axi_in_req_i | input | smc_pkg::smc_sys_in_56_64_6_12_axi_req_t | System AXI Input request. |
sys_axi_in_resp_o | output | smc_pkg::smc_sys_in_56_64_6_12_axi_resp_t | System AXI Input response. |
filtered_sys_axi_out_req_o | output | smc_pkg::smc_local_32_64_6_12_axi_req_t | System request that passed the inbound filter and hits the SMC window, truncated to the 32-bit local address. |
filtered_sys_axi_out_resp_i | input | smc_pkg::smc_local_32_64_6_12_axi_resp_t | Response to the filtered system request. |
sep_axi_in_req_i | input | smc_pkg::smc_sep_in_56_64_6_12_axi_req_t | SEP AXI Input request. |
sep_axi_in_resp_o | output | smc_pkg::smc_sep_in_56_64_6_12_axi_resp_t | SEP AXI Input response. |
sep_axi_id_remap_req_o | output | smc_pkg::smc_local_32_64_6_12_axi_req_t | SEP request that hits the SMC window, truncated to the 32-bit local address; the ID passes through unchanged. |
sep_axi_id_remap_resp_i | input | smc_pkg::smc_local_32_64_6_12_axi_resp_t | Response to the SEP request. |
filter_ctrl_i | input | filter_ctrl_reg_pkg::filter_ctrl__out_t | Per-entry system inbound filter configuration from the register block; the filter matches source ID and the non-secure flag. |
filter_status_o | output | filter_ctrl_reg_pkg::filter_ctrl__in_t | Per-entry system inbound filter status returned to the register block. |
aR_ctrl_i | input | alias_remap_reg_pkg::alias_remap__out_t | Alias remap region configuration from the register block. |
remap_debug_mmio_o | output | smc_pkg::remap_debug_t | Alias region index hit by the MMIO path. |
remap_debug_jtag_o | output | smc_pkg::remap_debug_t | Alias region index hit by the JTAG path. |
remap_debug_log_o | output | smc_pkg::remap_debug_t | Alias region index hit by the log path. |
remap_debug_dma_o | output | smc_pkg::remap_debug_t | Alias region index hit by the data accelerator path. |
write_filter_hit_debug_o | output | logic [$clog2(NUM_FILTERS)-1:0] | Lowest system inbound filter entry hit by a write. |
read_filter_hit_debug_o | output | logic [$clog2(NUM_FILTERS)-1:0] | Lowest system inbound filter entry hit by a read. |
sys_in_filter_clk_active_o | output | logic | High while the system inbound filter clock runs. |
sys_in_filter_bus_active_o | output | logic | High while the system inbound filter input has a request valid or a transaction outstanding. |