smc_fabric

Compose the SMC interconnect fabric from its input, local and output stages.

The input fabric alias-remaps the JTAG, CPU MMIO, log and data accelerator initiators and filters system inbound AXI; SMC-window traffic, including SEP, goes to the local fabric toward the CPU front port and SMC CSRs, and other traffic goes to the output fabric, which applies the M-mode and Xvisor output remap and the outbound filter before the system AXI output. Window decode uses the base-config global base, local base and region size.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
NO_ADDR_REMAPbit1'b1Removes the output fabric's M-mode and Xvisor output remap when the integration map is fixed, replacing it with an ID-width converter, which reduces area. The input fabric's alias remap remains.
SYS_IN_ID_WIDTHint unsigned9Unused; the input fabric takes the system input ID width from smc_pkg::SysInIdWidth.
NUM_INBOUND_FILTERSint unsigned16Number of filter entries on the system AXI input; sizes the inbound filter CSR arrays and the input fabric hit-index outputs.
NUM_OUTBOUND_FILTERSint unsigned16Number of filter entries on the system AXI output; sizes the outbound filter CSR arrays and the output fabric hit-index outputs.
MAX_TRANSint unsignedsmc_pkg::FabricMaxTransOutstanding transactions per ID bucket tracked by the output fabric remap demux and mux; unused when NO_ADDR_REMAP is set.
FILTER_REQ_PIPELINE_ENABLEbit1'b0Adds spill registers on the request channels at the inbound and outbound filter boundaries, trading a cycle of latency for easier timing closure.
FILTER_RSP_PIPELINE_ENABLEbit1'b0Adds spill registers on the response channels at the inbound and outbound filter boundaries, trading a cycle of latency for easier timing closure.

Ports

Table 2. Ports
NameDirectionTypeDescription
clk_iinputlogicSMC core clock.
rst_niinputlogicPrimary reset, active-low, synchronized to the SMC core clock.
test_en_iinputlogicScan test mode enable, active-high; forwarded to the fabric stages and forces their clock gates on.
scan_rst_niinputlogicScan reset, active-low; forwarded to the input fabric, which does not use it.
global_base_addr_iinputsmc_pkg::smc_axi_addr_tGlobal base address of the SMC address window, from the base-config registers; the input and output fabrics decode SMC accesses against it.
local_base_addr_iinputsmc_pkg::smc_axi_addr_tLocal base address of the SMC address window, from the base-config registers; the input and output fabrics also decode SMC accesses against it, and the local fabric rebases every request onto it.
region_size_iinputlogic [31:0]Size in bytes of the SMC address window at either base, a power of two by software contract.
ob_filter_axi_cg_en_iinputlogicEnables clock gating of the system outbound filter, active-high; low keeps its clock running.
ib_filter_axi_cg_en_iinputlogicEnables clock gating of the system inbound filter, active-high; low keeps its clock running.
fabric_cg_en_iinputlogicEnables clock gating of the output fabric remap demux and mux, active-high; low keeps their clock running. Unused when NO_ADDR_REMAP is set.
cg_hysteresis_iinputsmc_pkg::cg_hyster_tIdle SMC core clock cycles the fabric and filter clock gates wait after their bus goes quiet before stopping the gated clock.
axi_in_jtag_req_iinputsmc_pkg::smc_jtag_56_64_2_12_axi_req_tJTAG AXI request into the input fabric, which widens its ID and alias-remaps it.
axi_in_jtag_resp_ooutputsmc_pkg::smc_jtag_56_64_2_12_axi_resp_tJTAG AXI response from the input fabric.
axi_in_mmio_req_iinputsmc_pkg::smc_cpu_mmio_axi_req_tCPU MMIO AXI request into the input fabric, which widens its ID and alias-remaps it.
axi_in_mmio_resp_ooutputsmc_pkg::smc_cpu_mmio_axi_resp_tCPU MMIO AXI response from the input fabric.
axi_in_data_accel_req_iinputsmc_pkg::smc_input_fabric_56_64_4_12_axi_req_tData accelerator AXI request into the input fabric, which alias-remaps it.
axi_in_data_accel_resp_ooutputsmc_pkg::smc_input_fabric_56_64_4_12_axi_resp_tData accelerator AXI response from the input fabric.
axi_lite_log_req_iinputsmc_pkg::smc_axil_56_64_req_tLog engine AXI-Lite request into the input fabric, which converts it to AXI and alias-remaps it.
axi_lite_log_resp_ooutputsmc_pkg::smc_axil_56_64_resp_tLog engine AXI-Lite response from the input fabric.
sys_axi_in_req_iinputsmc_pkg::smc_sys_in_56_64_6_12_axi_req_tSystem AXI input request; passes the inbound filter, and outside the SMC window receives DECERR.
sys_axi_in_resp_ooutputsmc_pkg::smc_sys_in_56_64_6_12_axi_resp_tSystem AXI input response.
sep_axi_in_req_iinputsmc_pkg::smc_sep_in_56_64_6_12_axi_req_tSEP AXI input request; unfiltered, and outside the SMC window receives DECERR.
sep_axi_in_resp_ooutputsmc_pkg::smc_sep_in_56_64_6_12_axi_resp_tSEP AXI input response.
axi_front_port_req_ooutputsmc_pkg::smc_local_32_64_8_12_axi_req_tAXI request from the local fabric to the CPU cluster's front port.
axi_front_port_rsp_iinputsmc_pkg::smc_local_32_64_8_12_axi_resp_tAXI response from the CPU cluster's front port.
apb_smc_dfd_reg_req_ooutputsmc_pkg::smc_dfd_apb_req_tAPB request from the local fabric for the SMC CLA (DFD) register window.
apb_smc_dfd_reg_resp_iinputsmc_pkg::smc_dfd_apb_resp_tAPB response from the SMC CLA (DFD) registers.
axi_data_accel_ctrl_req_ooutputsmc_pkg::smc_local_32_64_8_12_axi_req_tAXI request from the local fabric to the data accelerator's control port.
axi_data_accel_ctrl_rsp_iinputsmc_pkg::smc_local_32_64_8_12_axi_resp_tAXI response from the data accelerator's control port.
axil_peripherals_req_ooutputsmc_pkg::smc_axil_32_32_req_t32-bit AXI-Lite request from the local fabric to the peripheral CSR crossbar.
axil_peripherals_resp_iinputsmc_pkg::smc_axil_32_32_resp_t32-bit AXI-Lite response from the peripheral CSR crossbar.
axil_aR_ctrl_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the alias remap control registers.
axil_aR_ctrl_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the alias remap control registers.
axil_mR_ctrl_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the M-mode output remap control registers.
axil_mR_ctrl_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the M-mode output remap control registers.
axil_xR_ctrl_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the Xvisor output remap control registers.
axil_xR_ctrl_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the Xvisor output remap control registers.
axil_inbound_filter_ctrl_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the inbound filter control registers.
axil_inbound_filter_ctrl_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the inbound filter control registers.
axil_outbound_filter_ctrl_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the outbound filter control registers.
axil_outbound_filter_ctrl_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the outbound filter control registers.
axil_mailbox_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the SMC mailbox window.
axil_mailbox_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the SMC mailbox.
axil_smc_base_config_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the SMC base configuration registers.
axil_smc_base_config_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the SMC base configuration registers.
axil_dfx_csr_req_ooutputsmc_pkg::smc_axil_32_64_req_tAXI-Lite request for the DFX control register window.
axil_dfx_csr_resp_iinputsmc_pkg::smc_axil_32_64_resp_tAXI-Lite response from the DFX control registers.
axi_filtered_remapped_req_ooutputsmc_pkg::smc_sys_out_56_64_8_12_axi_req_tSystem AXI output request from the output fabric, after output remap and the outbound filter.
axi_filtered_remapped_resp_iinputsmc_pkg::smc_sys_out_56_64_8_12_axi_resp_tSystem AXI output response.
outbound_filter_ctrl_iinputfilter_ctrl_reg_pkg::filter_ctrl__out_tPer-entry configuration of the system outbound filter.
outbound_filter_status_ooutputfilter_ctrl_reg_pkg::filter_ctrl__in_tPer-entry status of the system outbound filter.
inbound_filter_ctrl_iinputfilter_ctrl_reg_pkg::filter_ctrl__out_tPer-entry configuration of the system inbound filter.
inbound_filter_status_ooutputfilter_ctrl_reg_pkg::filter_ctrl__in_tPer-entry status of the system inbound filter.
mR_ctrl_iinputoutput_remap_reg_pkg::output_remap__out_tM-mode output remap region configuration.
xR_ctrl_iinputoutput_remap_reg_pkg::output_remap__out_tXvisor output remap region configuration.
aR_ctrl_iinputalias_remap_reg_pkg::alias_remap__out_tAlias remap region configuration.
remap_debug_mmio_ooutputsmc_pkg::remap_debug_tAlias region index hit by the MMIO path.
remap_debug_jtag_ooutputsmc_pkg::remap_debug_tAlias region index hit by the JTAG path.
remap_debug_log_ooutputsmc_pkg::remap_debug_tAlias region index hit by the log path.
remap_debug_dma_ooutputsmc_pkg::remap_debug_tAlias region index hit by the data accelerator path.
inbound_write_filter_hit_debug_ooutputlogic [$clog2(NUM_INBOUND_FILTERS)-1:0]Lowest system inbound filter entry hit by a write.
inbound_read_filter_hit_debug_ooutputlogic [$clog2(NUM_INBOUND_FILTERS)-1:0]Lowest system inbound filter entry hit by a read.
outbound_write_filter_hit_debug_ooutputlogic [$clog2(NUM_OUTBOUND_FILTERS)-1:0]Lowest system outbound filter entry hit by a write.
outbound_read_filter_hit_debug_ooutputlogic [$clog2(NUM_OUTBOUND_FILTERS)-1:0]Lowest system outbound filter entry hit by a read.
fabric_clk_active_ooutputlogicHigh while the output fabric remap clock runs; low when NO_ADDR_REMAP is set.
fabric_bus_active_ooutputlogicHigh while the output fabric input has a request valid or a transaction outstanding; low when NO_ADDR_REMAP is set.
sys_out_filter_clk_active_ooutputlogicHigh while the system outbound filter clock runs.
sys_out_filter_bus_active_ooutputlogicHigh while the system outbound filter input has a request valid or a transaction outstanding.
sys_in_filter_clk_active_ooutputlogicHigh while the system inbound filter clock runs.
sys_in_filter_bus_active_ooutputlogicHigh while the system AXI input has a request valid or a transaction outstanding.