smc_output_fabric

Route the SMC's outbound AXI through the output remap and filter to the system AXI port.

With NO_ADDR_REMAP clear, requests inside the M-mode or Xvisor remap window at either SMC base go through the matching output_remap, which rewrites the address and replaces AxUSER with the M-mode or the other source ID; all other requests have AxUSER replaced with the SMC source ID; a mux merges the three paths and widens the ID. With NO_ADDR_REMAP set, only the ID widening remains. A clock-gated outbound access filter, which allows traffic that hits no rule, then guards the port, which it reaches through an axi_cut.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
NO_ADDR_REMAPbit1'b1Removes the M-mode and Xvisor output remap when the integration map is fixed, leaving an ID-width converter in its place.
NUM_FILTERSint unsigned16Number of system outbound filter entries; sizes the filter CSR arrays and the hit-index outputs.
MAX_TRANSint unsignedsmc_pkg::FabricMaxTransOutstanding transactions per ID bucket in the remap demux and mux, which also sizes their clock-gate snoop; unused when NO_ADDR_REMAP is set.
FILTER_REQ_PIPELINE_ENABLEbit1'b0Adds spill registers on the request channels at the system outbound filter boundary.
FILTER_RSP_PIPELINE_ENABLEbit1'b0Adds spill registers on the response channels at the system outbound filter boundary.
MMODE_BASE_ADDRint unsignedsmc_top_addrmap_pkg::SMC_TOP_MMODE_REGION_BASE_ADDRBase of the M-mode remap region, subtracted from request addresses before the M-mode remap region lookup; unused when NO_ADDR_REMAP is set.
XVISOR_BASE_ADDRint unsignedsmc_top_addrmap_pkg::SMC_TOP_XVISOR_REGION_BASE_ADDRBase of the Xvisor remap region, subtracted from request addresses before the Xvisor remap region lookup; unused when NO_ADDR_REMAP is set.

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 AXI primitives and forces the fabric and filter clock gates on.
global_base_addr_iinputsmc_pkg::smc_axi_addr_tGlobal base address of the SMC address window; requests inside the M-mode or Xvisor remap window at this base go to that remap. Unused when NO_ADDR_REMAP is set.
local_base_addr_iinputsmc_pkg::smc_axi_addr_tLocal base address of the SMC address window; requests inside the M-mode or Xvisor remap window at this base go to that remap. Unused when NO_ADDR_REMAP is set.
filter_axi_cg_en_iinputlogicEnables clock gating of the system outbound filter, active-high; low keeps the filter clock running.
fabric_cg_en_iinputlogicEnables clock gating of the 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 remap fabric and outbound filter clock gates wait after their bus goes quiet before stopping the gated clock.
axi_req_iinputsmc_pkg::smc_56_64_6_12_axi_req_tOutbound request from the input fabric's global output port.
axi_resp_ooutputsmc_pkg::smc_56_64_6_12_axi_resp_tResponse to the input fabric's global output port.
axi_filtered_remapped_req_ooutputsmc_pkg::smc_sys_out_56_64_8_12_axi_req_tRequest to the system AXI output after remap and the outbound filter.
axi_filtered_remapped_resp_iinputsmc_pkg::smc_sys_out_56_64_8_12_axi_resp_tResponse from the system AXI output.
filter_ctrl_iinputfilter_ctrl_reg_pkg::filter_ctrl__out_tPer-entry system outbound filter configuration from the register block; the filter matches source ID and the non-secure flag.
filter_status_ooutputfilter_ctrl_reg_pkg::filter_ctrl__in_tPer-entry system outbound filter status returned to the register block.
mR_ctrl_iinputoutput_remap_reg_pkg::output_remap__out_tM-mode output remap region configuration; unused when NO_ADDR_REMAP is set.
xR_ctrl_iinputoutput_remap_reg_pkg::output_remap__out_tXvisor output remap region configuration; unused when NO_ADDR_REMAP is set.
write_filter_hit_debug_ooutputlogic [$clog2(NUM_FILTERS)-1:0]Lowest system outbound filter entry hit by a write.
read_filter_hit_debug_ooutputlogic [$clog2(NUM_FILTERS)-1:0]Lowest system outbound filter entry hit by a read.
fabric_clk_active_ooutputlogicHigh while the remap demux and mux clock runs; tied low when NO_ADDR_REMAP is set.
fabric_bus_active_ooutputlogicHigh while axi_req_i has a request valid or a transaction outstanding; tied 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 filter input has a request valid or a transaction outstanding.