smc_padring

Mux SMC peripheral digital I/O onto chiplet pads.

Instantiates one gpio interface per pad behind an AXI-Lite demux whose error target returns DECERR with data 0xBADCAB1E outside the GPIO window. Assigns fixed pads to SPI, UART, I3C, I2C, AVSBus, the system timer, and the isolate-request, boot-stall and cool-reset pins; each function's enable drives the pad's LSIO select, which the gpio registers can disable. The pad mapping is combinational.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
MAX_TRANSint unsigned1Maximum outstanding transactions of the demux and of each gpio interface.
GPIO_INTF_BASE_ADDRbit [gpio_pkg::AddrWidth-1:0]32'h00000000Base address of the first GPIO interface; the demux decodes NumGpioWraps 16-byte slots from it.

Ports

Table 2. Ports
NameDirectionTypeDescription
clk_iinputlogicSMC core clock for the GPIO register demux and the GPIO interfaces.
rst_primary_niinputlogicPrimary reset, active-low, synchronized to clk_i; resets the demux and GPIO registers.
rst_cold_stable_smc_clk_niinputlogicStable cold reset, active-low, synchronized to clk_i; while low, every GPIO pad is held in its default direction with the output disabled.
test_en_iinputlogicDFT test-mode enable, active-high, passed to the demux and the gpio interfaces.
scan_rst_niinputlogicDFT scan reset, active-low; unused.
axil_req_iinputgpio_pkg::gpio_axil_req_tAXI-Lite Register Interface request.
axil_resp_ooutputgpio_pkg::gpio_axil_resp_tAXI-Lite Register Interface response.
spi_enable_iinputlogicSelects the SPI function on GPIO pads 0-10 and 54, active-high.
spi_clk_iinputlogicSerial bit-rate clock driven onto GPIO 9.
spi_txd_iinputlogic [7:0]Transmit data driven onto GPIO 0-7, one bit per pad.
spi_cs_n_iinputlogicChip select, active-low, driven onto GPIO 8.
spi_cs_oe_n_iinputlogicOutput enable for the chip-select pad (GPIO 8), active-low.
spi_cs_ie_n_iinputlogicInput enable for the chip-select pad (GPIO 8), active-low.
spi_clk_ie_n_iinputlogicInput enable for the SPI clock pad (GPIO 9), active-low.
spi_clk_oe_n_iinputlogicOutput enable for the SPI clock pad (GPIO 9), active-low.
spi_dqs_ie_n_iinputlogicInput enable for the data-strobe pad (GPIO 10), active-low.
spi_dqs_oe_n_iinputlogicOutput enable for the data-strobe pad (GPIO 10), active-low; the pad drives zero when enabled.
spi_dq_ie_n_iinputlogic [7:0]Input enables for the data pads (GPIO 0-7), active-low.
spi_dq_oe_n_iinputlogic [7:0]Output enables for the data pads (GPIO 0-7), active-low.
spi_rxd_ooutputlogic [7:0]Receive data sampled from GPIO 0-7.
spi_rxds_ooutputlogicRead data strobe sampled from GPIO 10, used in DDR mode.
spi_mem_rebar_oepad_iinputlogicOutput enable for the SPI DQS loopback pad (GPIO 54), active-high.
spi_mem_rebar_opad_iinputlogicData driven onto the SPI DQS loopback pad (GPIO 54).
spi_mem_rebar_iepad_iinputlogicInput enable for the SPI DQS loopback pad (GPIO 54), active-high.
spi_mem_rebar_ipad_ooutputlogicValue sampled from the SPI DQS loopback pad (GPIO 54).
uart_enable_iinputlogic [smc_config_pkg::NumUart-1:0]Selects each UART's four pads, active-high, one bit per UART; UART u uses GPIO 11+4u (RX), 12+4u (TX), 13+4u (RTS) and 14+4u (CTS).
uart_rx_ooutputlogic [smc_config_pkg::NumUart-1:0]Receive data sampled from each UART's RX pad.
uart_tx_iinputlogic [smc_config_pkg::NumUart-1:0]Transmit data driven onto each UART's TX pad.
uart_rts_n_iinputlogic [smc_config_pkg::NumUart-1:0]Request-to-send, active-low, driven onto each UART's RTS pad.
uart_cts_n_ooutputlogic [smc_config_pkg::NumUart-1:0]Clear-to-send, active-low, sampled from each UART's CTS pad.
chiplet_is_primary_iinputlogicTimer pad direction: high drives GPIO 55 and 56 from the timer inputs, low samples them.
timer_sync_load_iinputlogicSystem timer sync-load, driven onto GPIO 55 on the primary chiplet.
timer_cnt_credit_iinputlogicSystem timer count credit, driven onto GPIO 56 on the primary chiplet.
timer_sync_load_ooutputlogicSystem timer sync-load sampled from GPIO 55, used on a secondary chiplet.
timer_cnt_credit_ooutputlogicSystem timer count credit sampled from GPIO 56, used on a secondary chiplet.
timer_gpio_enable_iinputlogicSelects the system timer function on GPIO 55 and 56, active-high.
boot_stall_ooutputlogicBoot-stall strap sampled from GPIO 57, not synchronized to clk_i.
i3c_enable_iinputlogic [smc_config_pkg::NumI3c-1:0]Selects each I3C instance's SCL and SDA pads, active-high: GPIO 27-28 for instance 0, 63-64 for instance 1, and from 29 upward for the rest.
i3c_scl_ooutputlogic [smc_config_pkg::NumI3c-1:0]SCL sampled from each I3C instance's SCL pad.
i3c_sda_ooutputlogic [smc_config_pkg::NumI3c-1:0]SDA sampled from each I3C instance's SDA pad.
i3c_scl_iinputlogic [smc_config_pkg::NumI3c-1:0]SCL value driven onto each I3C instance's SCL pad.
i3c_scl_oen_iinputlogic [smc_config_pkg::NumI3c-1:0]Output enable for each SCL pad, active-low.
i3c_sda_iinputlogic [smc_config_pkg::NumI3c-1:0]SDA value driven onto each I3C instance's SDA pad.
i3c_sda_oen_iinputlogic [smc_config_pkg::NumI3c-1:0]Output enable for SDA IO pad (active low).
i3c_sda_pp_iinputlogic [smc_config_pkg::NumI3c-1:0]Push-pull select for each SDA pad; high enables the SDA output whatever i3c_sda_oen_i is.
i2c_enable_iinputlogic [smc_config_pkg::NumI2c-1:0]Selects each I2C instance's SCL, SDA, SMBus alert and SMBus suspend pads, active-high; instance i uses GPIO 37+4i to 40+4i.
i2c_master_enable_iinputlogic [smc_config_pkg::NumI2c-1:0]Controller mode per I2C instance: the SMBus alert pad is sampled and the suspend pad driven; in target mode the directions reverse.
i2c_scl_ooutputlogic [smc_config_pkg::NumI2c-1:0]SCL sampled from each I2C instance's SCL pad.
i2c_sda_ooutputlogic [smc_config_pkg::NumI2c-1:0]SDA sampled from each I2C instance's SDA pad.
i2c_smbus_n_ooutputlogic [smc_config_pkg::NumI2c-1:0]SMBus suspend, active-low, sampled from the pad in target mode; zero in controller mode.
i2c_smbus_alert_n_ooutputlogic [smc_config_pkg::NumI2c-1:0]SMBus alert, active-low, sampled from the pad in controller mode; zero in target mode.
i2c_scl_oen_iinputlogic [smc_config_pkg::NumI2c-1:0]Open-drain SCL control, active-low: low pulls the pad low, high releases it to the board pull-up.
i2c_sda_oen_iinputlogic [smc_config_pkg::NumI2c-1:0]Open-drain SDA control, active-low: low pulls the pad low, high releases it to the board pull-up.
i2c_smbus_n_iinputlogic [smc_config_pkg::NumI2c-1:0]SMBus suspend from the I2C core, active-low; in controller mode, low pulls the suspend pad low.
i2c_smbus_alert_oe_iinputlogic [smc_config_pkg::NumI2c-1:0]In target mode, high pulls the SMBus alert pad low.
avs_enable_iinputlogicSelects the AVSBus function on GPIO pads 49-51, active-high.
avs_clock_iinputlogicAVSBus clock from the AVSBus controller, driven onto GPIO 49.
avs_mdata_iinputlogicAVSBus controller-to-device data, driven onto GPIO 50.
avs_sdata_ooutputlogicAVSBus device-to-controller data, sampled from GPIO 51.
rst_cool_niinputlogicCool reset for other chiplets, active-low; pulls GPIO 62 low while asserted and leaves it undriven otherwise.
isolate_req_pin_ooutputlogicIsolation request sampled from GPIO 53, not synchronized to clk_i.
lsio_interface_select_ooutputlogic [smc_pkg::NumGpioWraps-1:0]LSIO select per pad, high where a peripheral function claims the pad; also drives each gpio interface's select.
core2pad_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Data driven to each pad by its gpio interface; zero during cold reset.
core2pad_en_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Output enable for each pad, active-high; low during cold reset.
pad2core_iinputlogic [smc_pkg::NumGpioWraps-1:0]Value received from each pad, not synchronized to clk_i.
pad2core_en_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Input enable for each pad, active-high; the pad's default direction during cold reset.
gpio_interrupt_ooutputlogic [smc_pkg::NumGpioWraps-1:0]Interrupt from each gpio interface, active-high, registered on clk_i.