smc

Integrate the System Management Controller chiplet top.

Instantiates reset, CPU, fabric, peripherals, and DFX under one SMC boundary. Bridges chiplet AXI ports, PLL clocks, powergood, and resets into smc_base and the peripheral domain. smc_base holds the fabric, internal registers, DFD and data accelerators; smc_cpu_wrapper holds the CPU cluster; smc_peripherals holds the peripherals, eFuse wrapper and reset unit. The ROM endianness bit comes from the eFuse shadow registers.

EFUSE_SHIM_SIZE is a literal carve-out at the base of the opaque smc_external window for the vendor eFuse shim CSR block; integrations that model the block override it. Memory-interface types are parameters rather than localparams so the mem-swap layer can specialize them.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
MAX_TRANSint unsigned2Maximum outstanding transactions of the padring GPIO demux and of each GPIO interface.
EFUSE_SHIM_SIZEint unsigned'h44Vendor eFuse shim CSR block carved off the base of the smc_external window. The open smc_external map is one opaque region, so this is a literal here and is overridden by an integration that models the block.
NumCpuCoresint unsignedsmc_4core_cpu_pkg::NumCpuCoresCPU cores in the SMC cluster; sizes the per-core writeback PC and watchdog timeout vectors.
NumCpuInterruptsint unsignedsmc_4core_cpu_pkg::NumCpuInterruptsInterrupt lines from smc_base to the CPU wrapper.
NumExtInterruptsint unsignedsmc_4core_cpu_pkg::NumExtInterruptsExternal interrupt lines accepted on smc_ext_interrupts_i.
NumSramBanksint unsignedchipyard_4core_mem_pkg::NumSramBanksScratch RAM banks; sizes the scratch RAM memory interface arrays.
NumIcacheTagBanksint unsignedchipyard_4core_mem_pkg::NumIcacheTagBanksL1 instruction-cache tag banks; sizes the I-cache tag memory interface arrays.
NumIcacheDataBanksint unsignedchipyard_4core_mem_pkg::NumIcacheDataBanksL1 instruction-cache data banks; sizes the I-cache data memory interface arrays.
NumDcacheTagBanksint unsignedchipyard_4core_mem_pkg::NumDcacheTagBanksL1 data-cache tag banks; sizes the D-cache tag memory interface arrays.
NumDcacheDataBanksint unsignedchipyard_4core_mem_pkg::NumDcacheDataBanksL1 data-cache data banks; sizes the D-cache data memory interface arrays.

Ports

Table 2. Ports
NameDirectionTypeDescription
clk_smc_iinputlogicSMC core clock for smc_base, the CPU wrapper and the SMC-clock peripherals.
clk_ref_iinputlogicReference clock for the reset unit, the CLA time tick, the CPU wrapper and the AVSBus controller.
clk_periph_iinputlogicPeripheral clock for the UART, I2C, I3C and AVSBus register interfaces.
powergood_iinputlogicChip powergood from the pad, active-high; low asynchronously holds the reset unit's powergood stretcher and cold-reset de-glitcher in reset.
powergood_stable_ooutputlogicPowergood from the reset unit: falls with powergood_i and rises 32 reference clock cycles after it.
rst_cold_niinputlogicCold reset, active-low, deglitched and extended in the reset unit.
rst_cold_stable_ref_clk_nooutputlogicDe-glitched and extended cold reset, active-low, synchronized to the reference clock.
rst_primary_ref_clk_nooutputlogicPrimary reset (cold, cool and function-level reset combined), active-low, synchronized to the reference clock.
rst_primary_smc_clk_nooutputlogicPrimary reset, active-low, synchronized to the SMC clock; also resets smc_base and the CPU wrapper.
rst_primary_periph_clk_nooutputlogicPrimary reset, active-low, synchronized to the peripheral clock.
rst_wdt_smc_clk_nooutputlogicWatchdog reset from the SEP watchdog or the second-stage SMC watchdog timeout, active-low, synchronized to the SMC clock.
gated_clk_periph_i3c_ooutputlogicPeripheral clock after the I3C clock gate; the clock of the I3C controllers.
sys_axi_in_req_iinputsmc_pkg::smc_sys_in_56_64_6_12_axi_req_tInbound system AXI request; passes the inbound filters to SMC local targets.
sys_axi_in_resp_ooutputsmc_pkg::smc_sys_in_56_64_6_12_axi_resp_tInbound system AXI response.
jtag_axi_in_req_iinputsmc_pkg::smc_jtag_56_64_2_12_axi_req_tJTAG debug AXI request, routed to SMC local targets or the output AXI port.
jtag_axi_in_resp_ooutputsmc_pkg::smc_jtag_56_64_2_12_axi_resp_tJTAG debug AXI response.
axil_smc_otp_jtag_req_iinputsmc_pkg::smc_axil_32_32_req_tJTAG request into the eFuse wrapper, filtered by lifecycle state.
axil_smc_otp_jtag_resp_ooutputsmc_pkg::smc_axil_32_32_resp_tResponse to the JTAG eFuse access path.
sep_axi_in_req_iinputsmc_pkg::smc_sep_in_56_64_6_12_axi_req_tInbound SEP AXI request, routed to SMC local targets.
sep_axi_in_resp_ooutputsmc_pkg::smc_sep_in_56_64_6_12_axi_resp_tInbound SEP AXI response.
output_axi_req_ooutputsmc_pkg::smc_sys_out_56_64_8_12_axi_req_tOutbound AXI request from the output fabric, after the output remap and outbound filters.
output_axi_resp_iinputsmc_pkg::smc_sys_out_56_64_8_12_axi_resp_tOutbound AXI response into the output fabric.
axil_dtp_csr_req_ooutputsmc_pkg::smc_axil_32_32_req_tDTP CSR request with its address rebased to zero at the DTP control window.
axil_dtp_csr_resp_iinputsmc_pkg::smc_axil_32_32_resp_tDTP CSR response.
shadow_regs_ooutputsmc_efuse_pkg::efuse_map_teFuse shadow-register contents; all zero until fuse sensing completes unless SEP security disable is set.
smc_external_req_ooutputsmc_pkg::smc_axil_32_32_req_tAXI-L interface for adopter peripheral request, covering the smc_external window above the eFuse shim carve-out.
smc_external_resp_iinputsmc_pkg::smc_axil_32_32_resp_tResponse from the adopter peripherals in the smc_external window.
efuse_bank_ctrl_req_ooutputsmc_pkg::smc_axil_32_32_req_tRequest to the vendor eFuse shim CSRs.
efuse_bank_ctrl_resp_iinputsmc_pkg::smc_axil_32_32_resp_tResponse from the vendor eFuse shim CSRs.
efuse_shim_command_req_ooutputsmc_efuse_pkg::fuse_command_req_tFuse sense and program command request to the shim state machine.
efuse_shim_command_resp_iinputsmc_efuse_pkg::fuse_command_resp_tFuse command response from the shim state machine.
lsio_interface_select_ooutputlogic [smc_pkg::NumGpioWraps-1:0]LSIO select per pad, high where a peripheral function claims the pad.
pad2core_iinputlogic [smc_pkg::NumGpioWraps-1:0]Value received from each GPIO pad.
core2pad_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Value driven onto each GPIO pad.
pad2core_en_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Input enable of each GPIO pad.
core2pad_en_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Output enable of each GPIO pad.
rst_cool_n_from_pin_iinputlogicCool reset from the external pin, active-low; deglitched in the reset unit into the primary reset.
spi_enable_iinputlogicHands the SPI pads to the external SPI host, active-high.
spi_clk_iinputlogicSerial clock from the external SPI host, driven onto the SPI clock pad.
spi_txd_iinputlogic [7:0]Transmit data from the external SPI host, one bit per data pad.
spi_cs_n_iinputlogicChip select from the external SPI host, active-low.
spi_cs_oe_n_iinputlogicOutput enable for the chip-select pad, active-low.
spi_cs_ie_n_iinputlogicInput enable for the chip-select pad, active-low.
spi_clk_ie_n_iinputlogicInput enable for the SPI clock pad, active-low.
spi_clk_oe_n_iinputlogicOutput enable for the SPI clock pad, active-low.
spi_dqs_ie_n_iinputlogicInput enable for the data-strobe pad, active-low.
spi_dqs_oe_n_iinputlogicOutput enable for the data-strobe pad, active-low; the pad drives zero when enabled.
spi_dq_ie_n_iinputlogic [7:0]Input enables for the data pads, active-low, one bit per data pad.
spi_dq_oe_n_iinputlogic [7:0]Output enables for the data pads, active-low, one bit per data pad.
spi_rxd_ooutputlogic [7:0]Receive data sampled from the data pads, to the external SPI host.
spi_rxds_ooutputlogicRead data strobe sampled from the data-strobe pad, used in DDR mode.
spi_mem_rebar_oepad_iinputlogicOutput enable for the SPI DQS loopback pad, active-high.
spi_mem_rebar_opad_iinputlogicData driven onto the SPI DQS loopback pad.
spi_mem_rebar_iepad_iinputlogicInput enable for the SPI DQS loopback pad, active-high.
spi_mem_rebar_ipad_ooutputlogicValue sampled from the SPI DQS loopback pad.
clk_telemetry_iinputlogicTelemetry clock for the ATB inputs, gated by the telemetry clock-gate enable.
rst_telemetry_niinputlogicTelemetry-domain reset, active-low, for the telemetry receivers' ATB FIFOs.
telemetry_atdata_iinputtelemetry_receiver_pkg::telemetry_data_t [smc_config_pkg::NumTelemetryReceivers-1:0]ATB telemetry data, one word per receiver, on the telemetry clock.
telemetry_atid_iinputtelemetry_receiver_pkg::atb_id_t [smc_config_pkg::NumTelemetryReceivers-1:0]ATB source ID accompanying each telemetry data word.
telemetry_atready_ooutputlogic [smc_config_pkg::NumTelemetryReceivers-1:0]ATB ready from each telemetry receiver to its source.
telemetry_atvalid_iinputlogic [smc_config_pkg::NumTelemetryReceivers-1:0]ATB valid from each telemetry source.
telemetry_afvalid_ooutputlogic [smc_config_pkg::NumTelemetryReceivers-1:0]ATB flush request from each telemetry receiver to its source.
telemetry_afready_iinputlogic [smc_config_pkg::NumTelemetryReceivers-1:0]ATB flush acknowledge from each telemetry source.
smc_cluster_ded_ooutputlogicUncorrectable (double-error-detected) memory error from the SMC CPU cluster, registered on the SMC clock.
smc_wdt_first_timeout_ooutputlogicFirst-stage watchdog timeout: OR of the per-core CPU watchdog timeouts.
smc_wdt_second_timeout_ooutputlogicSecond-stage watchdog timeout from the CPU control block, registered on the SMC clock; asserts the watchdog reset in the reset unit.
smc_global_base_ooutputsmc_pkg::smc_axi_addr_tSMC global base address from the smc_base configuration registers.
smc_region_size_ooutputlogic [31:0]SMC region size in bytes from the smc_base REGION_SIZE register.
smc_ext_interrupts_iinputlogic [NumExtInterrupts-1:0]External interrupts, synchronized in smc_base onto the lowest CPU interrupt lines.
sep_mailbox_interrupts_iinputlogic [7:0]SEP mailbox interrupts, placed on peripheral interrupt bits 7:0.
sep_wdt_reset_n_iinputlogicSEP watchdog reset, active-low; drives the watchdog reset in the reset unit and a peripheral interrupt.
smc_fuse_sense_done_ooutputlogicHigh once eFuse sensing into the shadow registers completes; used to sequence MBIST and memory repair.
smc_fuse_reset_n_delayed_ooutputlogicFuse-released reset, active-low, delayed by 16 SMC clock pipeline stages; held low while boot stall is asserted.
skip_mem_repair_ooutputlogicAsserted during a function-level reset to skip memory repair and MBIST.
ext_boot_seq_done_iinputlogicExternal boot sequence done, active-high; the fuse-released reset stays low until it is set.
ext_boot_seq_done_qual_ooutputlogicext_boot_seq_done_i synchronized to the SMC clock and held set until cold reset.
sep_security_disable_iinputlogicSecurity disable from the SEP eFuse controller, active-high; skips automatic fuse sensing and releases the shadow registers without it.
lc_state_iinputlogic [2*smc_pkg::LcStateWidth-1:0]Differentially encoded lifecycle state, used by the eFuse JTAG access filter and reported in chip_config.
lc_sigint_err_ooutputlogicIntegrity error from the differential decode of lc_state_i, active-high.
smc_ndmreset_request_iinputlogic [smc_config_pkg::CpuClusterCount - 1:0]Asynchronous NDM reset request from each external CPU cluster; raised as a peripheral interrupt.
smc_ndmreset_process_ooutputlogic [smc_config_pkg::CpuClusterCount - 1:0]Firmware response to each cluster's NDM reset request, from the NDMRESET_PROCESS register.
smc_ext_mailbox_interrupts_ooutputlogic [smc_pkg::NumMailboxes-1:0]Outbound interrupts of the SMC mailboxes, one per mailbox.
cfg_flr_pf_active_iinputlogicPCIe function-level reset request, active-high; starts the reset unit's isolation and cool reset sequence.
isolate_req_ooutputlogic [31:0]Per-subsystem isolation requests from the reset unit.
ss_reset_complete_iinputlogic [31:0]Per-subsystem reset complete acknowledgments, synchronized to the SMC clock in the reset unit.
ss_config_ooutputlogic [31:0]Per-subsystem configuration bits written through the reset-unit SS_CONFIG register; cleared by primary reset.
ss_reset_ctrl_ooutputsmc_reset_unit_pkg::reset_ctrl_tPer-subsystem cold and warm resets, hold controls and force-to-reference-clock select; the resets are not synchronized to the subsystem clock.
sync_irq_ooutputlogicGlobal sync bit set by software through the reset-unit SYNC_REG register.
smc_rom_intf_req_ooutputrom_req_tBoot ROM read request from the CPU wrapper.
smc_rom_intf_rsp_iinputrom_rsp_tBoot ROM read data.
smc_scratch_ram_intf_req_ooutputscratch_ram_req_tScratch RAM bank requests, driven by the zero-fill until it completes.
smc_scratch_ram_intf_rsp_iinputscratch_ram_rsp_tScratch RAM bank read data.
smc_l1_icache_tag_intf_req_ooutputl1_icache_tag_req_tInstruction-cache tag bank requests.
smc_l1_icache_tag_intf_rsp_iinputl1_icache_tag_rsp_tInstruction-cache tag bank read data.
smc_l1_icache_data_intf_req_ooutputl1_icache_data_req_tInstruction-cache data bank requests.
smc_l1_icache_data_intf_rsp_iinputl1_icache_data_rsp_tInstruction-cache data bank read data.
smc_l1_dcache_tag_intf_req_ooutputl1_dcache_tag_req_tData-cache tag bank requests.
smc_l1_dcache_tag_intf_rsp_iinputl1_dcache_tag_rsp_tData-cache tag bank read data.
smc_l1_dcache_data_intf_req_ooutputl1_dcache_data_req_tData-cache data bank requests.
smc_l1_dcache_data_intf_rsp_iinputl1_dcache_data_rsp_tData-cache data bank read data.
smc_disable_sram_auto_init_iinputlogicSkips zeroing of the scratch RAM after reset, active-high.
smc_init_mem_done_ooutputlogicHigh once scratch RAM zeroing completes or is skipped.
chiplet_is_primary_iinputlogicHigh on the primary chiplet: the system timer drives the timer sync pads, and the CPU wrapper reports it in SMC_ATTRIBUTES.
timer_count_ooutputlogic [63:0]Live 64-bit system timer count.
boot_stall_jtag_ovrd_iinputlogicReplaces the boot-stall pad value with boot_stall_jtag_val_i when high.
boot_stall_jtag_val_iinputlogicBoot-stall value used while the JTAG override is set.
boot_stall_combined_ooutputlogicBoot stall synchronized to the SMC clock and made sticky: once low it stays low until the next primary reset.
jtag_reset_ctrl_iinputsmc_pkg::jtag_smc_reset_ctrl_tJTAG override selects and values for the fuse, cold, cool, warm and per-subsystem resets.
cla_ext_action_custom_ooutputlogic [cla_pkg::CLA_NUMBER_OF_CUSTOM_ACTIONS-1:0]Custom CLA external-action outputs, one bit per action.
xtrigger_ss_ooutputsmc_pkg::xtrigger_tCross-trigger lanes from the SMC core logic analyzer to the subsystem cross-trigger matrix, masked by the clock-halt trigger mask.
xtrigger_ss_iinputsmc_pkg::xtrigger_tCross-trigger lanes from the subsystem cross-trigger matrix into the SMC core logic analyzer.
tdr_dbg_ctrl_clock_stop_en_iinputlogicEnables reporting a CLA halt-clock action as a clock stop.
tdr_dbg_ctrl_clocks_stopped_by_cla_ooutputlogicHigh while an enabled CLA halt-clock action requests a clock stop.
trace_mem_req_ooutputtrace_mem_pkg::SinkMemPktIn_s [tn_pkg::TRC_RAM_INSTANCES-1:0]Requests from the DFD trace sink to the external trace RAMs.
trace_mem_resp_iinputtrace_mem_pkg::SinkMemPktOut_s [tn_pkg::TRC_RAM_INSTANCES-1:0]Read data from the external trace RAMs.
ext_debug_bus_iinputlogic [511:0]Adopter debug signals for the upper half of the SMC debug bus. Note: Ensure signals are 16-bit aligned within this bus.
test_en_iinputlogicDFT test-mode enable, active-high; bypasses the clock gates and selects the scan reset.
scan_rst_niinputlogicDFT scan reset, active-low, used in place of functional resets while test_en_i is high.
mem_repair_done_iinputlogicMemory repair has finished; reported in the DFX STATUS_SMU register.
mem_repair_success_iinputlogicMemory repair succeeded; reported in the DFX STATUS_SMU register.
mem_repair_abort_iinputlogicMemory repair was aborted; reported in the DFX STATUS_SMU register.
mbist_done_iinputlogicMemory BIST has finished; reported in the DFX STATUS_SMU register.
mbist_pass_iinputlogicMemory BIST passed; reported in the DFX STATUS_SMU register.
mbist_abort_iinputlogicMemory BIST was aborted; reported in the DFX STATUS_SMU register.
smc_cpu_jtag_TCK_iinputlogicJTAG test clock for the CPU cluster debug transport module.
smc_cpu_jtag_TMS_iinputlogicJTAG test mode select for the CPU cluster debug transport module.
smc_cpu_jtag_TDI_iinputlogicJTAG test data into the CPU cluster debug transport module.
smc_cpu_jtag_TDO_data_ooutputlogicJTAG test data out of the CPU cluster debug transport module.
smc_cpu_jtag_reset_iinputlogicActive-high asynchronous reset of the CPU cluster JTAG TAP and debug module interface.
smc_cpu_jtag_mfr_id_iinputlogic [10:0]Manufacturer ID reported in the CPU cluster JTAG IDCODE.
smc_cpu_jtag_part_number_iinputlogic [15:0]Part number reported in the CPU cluster JTAG IDCODE.
smc_cpu_jtag_version_iinputlogic [3:0]Version reported in the CPU cluster JTAG IDCODE.
i3c_dat_mem_src_iinputi3c_pkg::dat_mem_src_t [smc_config_pkg::NumI3c-1:0]Read data from each I3C device address table memory.
i3c_dat_mem_sink_ooutputi3c_pkg::dat_mem_sink_t [smc_config_pkg::NumI3c-1:0]Request to each I3C device address table memory.
i3c_dct_mem_src_iinputi3c_pkg::dct_mem_src_t [smc_config_pkg::NumI3c-1:0]Read data from each I3C device characteristics table memory.
i3c_dct_mem_sink_ooutputi3c_pkg::dct_mem_sink_t [smc_config_pkg::NumI3c-1:0]Request to each I3C device characteristics table memory.
i3c_rlt_mem_src_iinputi3c_pkg::rlt_mem_src_t [smc_config_pkg::NumI3c-1:0]Read data from each I3C reverse-lookup table memory.
i3c_rlt_mem_sink_ooutputi3c_pkg::rlt_mem_sink_t [smc_config_pkg::NumI3c-1:0]Request to each I3C reverse-lookup table memory.
gpio_interrupt_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Interrupt from each GPIO interface, active-high, in the SMC clock domain.
uart_interrupt_ooutputlogic [smc_config_pkg::NumUart-1:0]UART interrupt from each UART on the peripheral clock, excluding UART error and log-engine interrupts.