i3c_wrapper

Wrap one I3C core with AXI-Lite CSRs and exported DAT/DCT/RLT memories.

Adapted from i3c-core/src/i3c_wrapper.sv and maintained in-tree for the full-AXI4 core with open-drain SCL. Each AXI-Lite access reaches the core as a single-beat AXI4 burst with ID and user zero. SCL is open-drain: scl_o is tied low and scl_oe_o pulls the line; SDA drives through sda_oe_o in push-pull mode or when low. DUMMY_PARAM exists only for trailing-comma handling in the parameter list. The DAT, DCT, and RLT memory ports require the CONTROLLER_SUPPORT macro, since the core declares them only when it is defined.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
AXI_LITE_DATA_WIDTHint unsigned32Data width of the AXI-Lite CSR port; also sets the beat size given to the core.
AXI_LITE_ADDR_WIDTHint unsigned32AXI-Lite address width.
DAT_AWint unsignedi3c_pkg::DatAwDAT memory address width.
DCT_AWint unsignedi3c_pkg::DctAwDCT memory address width.
CSR_ADDR_WIDTHint unsignedI3CCSR_pkg::I3CCSR_MIN_ADDR_WIDTHCSR address width.
CSR_DATA_WIDTHint unsignedI3CCSR_pkg::I3CCSR_DATA_WIDTHData width of the I3C core's internal CSR interface.
DUMMY_PARAMint unsigned0Trailing-comma placeholder.

Ports

Table 2. Ports
NameDirectionTypeDescription
clk_iinputSystem clock.
rst_niinputAsync reset, active-low.
awvalid_iinputlogicWrite-address valid.
awready_ooutputlogicWrite-address ready.
awaddr_iinputlogic [AXI_LITE_ADDR_WIDTH-1:0]Write byte address into the I3C core's CSR space.
awprot_iinputlogic [2:0]Write-address protection; not used.
wvalid_iinputlogicWrite-data valid.
wready_ooutputlogicWrite-data ready.
wdata_iinputlogic [AXI_LITE_DATA_WIDTH-1:0]Write data.
wstrb_iinputlogic [AXI_LITE_DATA_WIDTH/8-1:0]Write strobe.
bvalid_ooutputlogicWrite-response valid.
bready_iinputlogicWrite-response ready.
bresp_ooutputlogic [1:0]Write response.
arvalid_iinputlogicRead-address valid.
arready_ooutputlogicRead-address ready.
araddr_iinputlogic [AXI_LITE_ADDR_WIDTH-1:0]Read address.
arprot_iinputlogic [2:0]Read-address protection; not used.
rvalid_ooutputlogicRead-data valid.
rready_iinputlogicRead-data ready.
rdata_ooutputlogic [AXI_LITE_DATA_WIDTH-1:0]Read data.
rresp_ooutputlogic [1:0]Read response.
scl_iinputlogicSCL pad input, passed straight to the core.
sda_iinputlogicSDA pad input, passed straight to the core.
scl_ooutputlogicSCL pad output, tied low; scl_oe_o controls the line.
sda_ooutputlogicSDA bus level from the core; the pad drives it while sda_oe_o is high.
scl_oe_ooutputlogicSCL output enable, high while the core pulls SCL low.
sda_oe_ooutputlogicSDA output enable, high in push-pull mode or while sda_o is low.
sel_od_pp_ooutputlogicDriver mode from the core: 0 open-drain, 1 push-pull.
recovery_payload_available_ooutputlogicHigh when the recovery handler has a payload available for the recovery agent.
recovery_image_activated_ooutputlogicHigh while RECOVERY_CTRL.ACTIVATE_REC_IMG holds the activate-image value 0x0F.
peripheral_reset_ooutputlogicSet on a target reset pattern selecting peripheral reset; cleared by peripheral_reset_done_i.
peripheral_reset_done_iinputlogicAcknowledges peripheral_reset_o and clears it.
escalated_reset_ooutputlogicSet on an escalated target reset pattern; stays high until rst_ni.
irq_ooutputOR of the core's controller, target transaction and recovery interrupts.
dat_mem_src_iinputi3c_pkg::dat_mem_src_tDAT memory read data; requires CONTROLLER_SUPPORT.
dat_mem_sink_ooutputi3c_pkg::dat_mem_sink_tDAT memory request; requires CONTROLLER_SUPPORT.
dct_mem_src_iinputi3c_pkg::dct_mem_src_tDCT memory read data; requires CONTROLLER_SUPPORT.
dct_mem_sink_ooutputi3c_pkg::dct_mem_sink_tDCT memory request; requires CONTROLLER_SUPPORT.
rlt_mem_src_iinputi3c_pkg::rlt_mem_src_tReverse-lookup table memory read data; requires CONTROLLER_SUPPORT.
rlt_mem_sink_ooutputi3c_pkg::rlt_mem_sink_tReverse-lookup table memory request; requires CONTROLLER_SUPPORT.