AXI-over-UCIe

Connect the UCIe 3.0 FDI bringup controller to the AXI-over-UCIe protocol engine.

AOU_TOP is the top-level wrapper around AOU_FDI_BRINGUP_CTRL, the UCIe 3.0 FDI state machine, and AOU_CORE_TOP, the AXI-over-UCIe protocol engine. The bringup controller manages the FDI handshakes (wake, clock, state, and rx-active) and drives I_INT_FSM_IN_ACTIVE into the AOU core, so the core needs no external UCIE_CORE connection.

The FDI data-plane ports mirror the _0/_1 naming and the +define+TWO_PHY gating of AOU_CORE_TOP. PHY0 is always present. PHY1 and I_PHY_TYPE are exposed only when the design is built with +define+TWO_PHY.

The single FDI_CONFIG parameter is an integer that picks the FDI data bus widths for both PHYs and, in two-PHY builds, the per-PHY pairing; packet_def_pkg::FDI_CFG_* enumerates its values. FDI_CONFIG is forwarded unchanged to AOU_CORE_TOP. Its default matches the legacy +define+FDI_32B single-PHY configuration. Keeping FDI_CONFIG consistent with +define+TWO_PHY is the integrator's responsibility. The local FDI_IF_WD0 and FDI_IF_WD1 localparams are derived from FDI_CONFIG only to size this wrapper's own FDI ports and the FIFO-depth defaults, and are not forwarded.

The RX W and R FIFO depths default to 140 when either FDI data path is 1024 bits (128B) wide, and to 88 otherwise. This matches the legacy +define+FDI_128B configuration, which applied to both the single-PHY (FDI_IF_WD0 == 1024) and the two-PHY (FDI_IF_WD1 == 1024) cases.

The ports fall into these groups:

  • APB slave interface.
  • AXI master interface (O_AOU_RX_AXI_M_*, I_AOU_TX_AXI_M_*): the RX side, facing the downstream bus.
  • AXI slave interface (I_AOU_TX_AXI_S_*, O_AOU_RX_AXI_S_*): the TX side, facing the upstream bus.
  • PHY type select (I_PHY_TYPE), present only with +define+TWO_PHY.
  • FDI data path for PHY0, always present, and for PHY1, present only with +define+TWO_PHY.
  • FDI bringup control (I_PL_*, O_LP_*), connected to AOU_FDI_BRINGUP_CTRL.
  • FDI bringup software control (I_SW_*) and status (O_FDI_FSM_STATE, O_FDI_LINK_UP).
  • Interrupt outputs (INT_*).
  • Bus quiescence inputs from external transaction monitors.
  • DFT.

Parameters

Table 1. Parameters
NameTypeDefaultDescription
RP_COUNT1Number of receive ports (AXI master/slave pairs), up to 4.
FDI_CONFIGintFDI_CFG_SP_32BFDI configuration, one of packet_def_pkg::FDI_CFG_*.
FDI_IF_WD0int(FDI_CONFIG == FDI_CFG_SP_32B ) ? 256 : (FDI_CONFIG == FDI_CFG_SP_64B ) ? 512 : (FDI_CONFIG == FDI_CFG_SP_128B ) ? 1024 : (FDI_CONFIG == FDI_CFG_TP_32B_64B ) ? 256 : (FDI_CONFIG == FDI_CFG_TP_64B_128B) ? 512 : 256PHY0 FDI data bus width, in bits. Local only.
FDI_IF_WD1int(FDI_CONFIG == FDI_CFG_SP_32B ) ? 512 : (FDI_CONFIG == FDI_CFG_SP_64B ) ? 512 : (FDI_CONFIG == FDI_CFG_SP_128B ) ? 1024 : (FDI_CONFIG == FDI_CFG_TP_32B_64B ) ? 512 : (FDI_CONFIG == FDI_CFG_TP_64B_128B) ? 1024 : 512PHY1 FDI data bus width, in bits. Local only.
RP0_RX_AW_FIFO_DEPTH44RP0 RX write-address FIFO depth.
RP0_RX_AR_FIFO_DEPTH44RP0 RX read-address FIFO depth.
RP0_RX_W_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP0 RX write-data FIFO depth.
RP0_RX_R_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP0 RX read-data FIFO depth.
RP0_RX_B_FIFO_DEPTH44RP0 RX write-response FIFO depth.
RP1_RX_AW_FIFO_DEPTH44RP1 RX write-address FIFO depth.
RP1_RX_AR_FIFO_DEPTH44RP1 RX read-address FIFO depth.
RP1_RX_W_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP1 RX write-data FIFO depth.
RP1_RX_R_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP1 RX read-data FIFO depth.
RP1_RX_B_FIFO_DEPTH44RP1 RX write-response FIFO depth.
RP2_RX_AW_FIFO_DEPTH44RP2 RX write-address FIFO depth.
RP2_RX_AR_FIFO_DEPTH44RP2 RX read-address FIFO depth.
RP2_RX_W_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP2 RX write-data FIFO depth.
RP2_RX_R_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP2 RX read-data FIFO depth.
RP2_RX_B_FIFO_DEPTH44RP2 RX write-response FIFO depth.
RP3_RX_AW_FIFO_DEPTH44RP3 RX write-address FIFO depth.
RP3_RX_AR_FIFO_DEPTH44RP3 RX read-address FIFO depth.
RP3_RX_W_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP3 RX write-data FIFO depth.
RP3_RX_R_FIFO_DEPTH((FDI_IF_WD0 == 1024) || (FDI_IF_WD1 == 1024)) ? 140 : 88RP3 RX read-data FIFO depth.
RP3_RX_B_FIFO_DEPTH44RP3 RX write-response FIFO depth.
RX_AW_FIFO_RS_EN1Register slice on the RX write-address FIFO output.
RX_AR_FIFO_RS_EN1Register slice on the RX read-address FIFO output.
RX_W_FIFO_RS_EN1Register slice on the RX write-data FIFO output.
RX_R_FIFO_RS_EN1Register slice on the RX read-data FIFO output.
RX_B_FIFO_RS_EN1Register slice on the RX write-response FIFO output.
RP0_AXI_DATA_WD512RP0 AXI data width, in bits.
RP1_AXI_DATA_WD512RP1 AXI data width, in bits.
RP2_AXI_DATA_WD512RP2 AXI data width, in bits.
RP3_AXI_DATA_WD512RP3 AXI data width, in bits.
AXI_PEER_DIE_MAX_DATA_WD1024Widest AXI data width on the peer die, in bits.
APB_ADDR_WD32APB address width.
APB_DATA_WD32APB data width.
S_RD_MO_CNT32Outstanding reads on the AXI slave interface.
S_WR_MO_CNT32Outstanding writes on the AXI slave interface.
M_RD_MO_CNT32Outstanding reads on the AXI master interface.
M_WR_MO_CNT32Outstanding writes on the AXI master interface.
RP_AXI_DATA_WD_MAXmax4(RP0_AXI_DATA_WD, RP1_AXI_DATA_WD, RP2_AXI_DATA_WD, RP3_AXI_DATA_WD)Widest RPn AXI data width; sizes the AXI data ports.
RP_AXI_STRB_WD_MAXRP_AXI_DATA_WD_MAX / 8AXI write-strobe width for that data width.
AXI_ADDR_WD64AXI address width.
AXI_ID_WD10AXI ID width.
AXI_LEN_WD8AXI burst-length width.

Ports

Table 2. Ports
NameDirectionTypeDescription
I_CLKinputlogicClock for the AOU core and the FDI bringup controller.
I_RESETNinputlogicActive-low asynchronous reset for the I_CLK domain.
I_PCLKinputlogicAPB clock, asynchronous to I_CLK.
I_PRESETNinputlogicActive-low reset for the I_PCLK domain.
I_AOU_APB_SI0_PSELinputlogicAPB select.
I_AOU_APB_SI0_PENABLEinputlogicAPB enable.
I_AOU_APB_SI0_PADDRinputlogic [APB_ADDR_WD-1:0]APB address.
I_AOU_APB_SI0_PWRITEinputlogicAPB write.
I_AOU_APB_SI0_PWDATAinputlogic [APB_DATA_WD-1:0]APB write data.
O_AOU_APB_SI0_PRDATAoutputlogic [APB_DATA_WD-1:0]APB read data.
O_AOU_APB_SI0_PREADYoutputlogicAPB ready.
O_AOU_APB_SI0_PSLVERRoutputlogicAPB slave error.
O_AOU_RX_AXI_M_ARIDoutputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI master read-address ID.
O_AOU_RX_AXI_M_ARADDRoutputlogic [RP_COUNT-1:0][AXI_ADDR_WD-1:0]AXI master read address.
O_AOU_RX_AXI_M_ARLENoutputlogic [RP_COUNT-1:0][AXI_LEN_WD-1:0]AXI master read burst length.
O_AOU_RX_AXI_M_ARSIZEoutputlogic [RP_COUNT-1:0][2:0]AXI master read transfer size.
O_AOU_RX_AXI_M_ARBURSToutputlogic [RP_COUNT-1:0][1:0]AXI master read burst type.
O_AOU_RX_AXI_M_ARLOCKoutputlogic [RP_COUNT-1:0]AXI master read lock.
O_AOU_RX_AXI_M_ARCACHEoutputlogic [RP_COUNT-1:0][3:0]AXI master read cache attributes.
O_AOU_RX_AXI_M_ARPROToutputlogic [RP_COUNT-1:0][2:0]AXI master read protection.
O_AOU_RX_AXI_M_ARQOSoutputlogic [RP_COUNT-1:0][3:0]AXI master read QoS.
O_AOU_RX_AXI_M_ARVALIDoutputlogic [RP_COUNT-1:0]AXI master read-address valid.
I_AOU_RX_AXI_M_ARREADYinputlogic [RP_COUNT-1:0]AXI master read-address ready.
I_AOU_TX_AXI_M_RIDinputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI master read-data ID.
I_AOU_TX_AXI_M_RDATAinputlogic [RP_COUNT-1:0][RP_AXI_DATA_WD_MAX-1:0]AXI master read data.
I_AOU_TX_AXI_M_RRESPinputlogic [RP_COUNT-1:0][1:0]AXI master read response.
I_AOU_TX_AXI_M_RLASTinputlogic [RP_COUNT-1:0]AXI master last read beat.
I_AOU_TX_AXI_M_RVALIDinputlogic [RP_COUNT-1:0]AXI master read-data valid.
O_AOU_TX_AXI_M_RREADYoutputlogic [RP_COUNT-1:0]AXI master read-data ready.
O_AOU_RX_AXI_M_AWIDoutputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI master write-address ID.
O_AOU_RX_AXI_M_AWADDRoutputlogic [RP_COUNT-1:0][AXI_ADDR_WD-1:0]AXI master write address.
O_AOU_RX_AXI_M_AWLENoutputlogic [RP_COUNT-1:0][AXI_LEN_WD-1:0]AXI master write burst length.
O_AOU_RX_AXI_M_AWSIZEoutputlogic [RP_COUNT-1:0][2:0]AXI master write transfer size.
O_AOU_RX_AXI_M_AWBURSToutputlogic [RP_COUNT-1:0][1:0]AXI master write burst type.
O_AOU_RX_AXI_M_AWLOCKoutputlogic [RP_COUNT-1:0]AXI master write lock.
O_AOU_RX_AXI_M_AWCACHEoutputlogic [RP_COUNT-1:0][3:0]AXI master write cache attributes.
O_AOU_RX_AXI_M_AWPROToutputlogic [RP_COUNT-1:0][2:0]AXI master write protection.
O_AOU_RX_AXI_M_AWQOSoutputlogic [RP_COUNT-1:0][3:0]AXI master write QoS.
O_AOU_RX_AXI_M_AWVALIDoutputlogic [RP_COUNT-1:0]AXI master write-address valid.
I_AOU_RX_AXI_M_AWREADYinputlogic [RP_COUNT-1:0]AXI master write-address ready.
O_AOU_RX_AXI_M_WDATAoutputlogic [RP_COUNT-1:0][RP_AXI_DATA_WD_MAX-1:0]AXI master write data.
O_AOU_RX_AXI_M_WSTRBoutputlogic [RP_COUNT-1:0][RP_AXI_STRB_WD_MAX-1:0]AXI master write strobes.
O_AOU_RX_AXI_M_WLASToutputlogic [RP_COUNT-1:0]AXI master last write beat.
O_AOU_RX_AXI_M_WVALIDoutputlogic [RP_COUNT-1:0]AXI master write-data valid.
I_AOU_RX_AXI_M_WREADYinputlogic [RP_COUNT-1:0]AXI master write-data ready.
I_AOU_TX_AXI_M_BIDinputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI master write-response ID.
I_AOU_TX_AXI_M_BRESPinputlogic [RP_COUNT-1:0][1:0]AXI master write response.
I_AOU_TX_AXI_M_BVALIDinputlogic [RP_COUNT-1:0]AXI master write-response valid.
O_AOU_TX_AXI_M_BREADYoutputlogic [RP_COUNT-1:0]AXI master write-response ready.
I_AOU_TX_AXI_S_ARIDinputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI slave read-address ID.
I_AOU_TX_AXI_S_ARADDRinputlogic [RP_COUNT-1:0][AXI_ADDR_WD-1:0]AXI slave read address.
I_AOU_TX_AXI_S_ARLENinputlogic [RP_COUNT-1:0][AXI_LEN_WD-1:0]AXI slave read burst length.
I_AOU_TX_AXI_S_ARSIZEinputlogic [RP_COUNT-1:0][2:0]AXI slave read transfer size.
I_AOU_TX_AXI_S_ARBURSTinputlogic [RP_COUNT-1:0][1:0]AXI slave read burst type.
I_AOU_TX_AXI_S_ARLOCKinputlogic [RP_COUNT-1:0]AXI slave read lock.
I_AOU_TX_AXI_S_ARCACHEinputlogic [RP_COUNT-1:0][3:0]AXI slave read cache attributes.
I_AOU_TX_AXI_S_ARPROTinputlogic [RP_COUNT-1:0][2:0]AXI slave read protection.
I_AOU_TX_AXI_S_ARQOSinputlogic [RP_COUNT-1:0][3:0]AXI slave read QoS.
I_AOU_TX_AXI_S_ARVALIDinputlogic [RP_COUNT-1:0]AXI slave read-address valid.
O_AOU_TX_AXI_S_ARREADYoutputlogic [RP_COUNT-1:0]AXI slave read-address ready.
O_AOU_RX_AXI_S_RIDoutputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI slave read-data ID.
O_AOU_RX_AXI_S_RDATAoutputlogic [RP_COUNT-1:0][RP_AXI_DATA_WD_MAX-1:0]AXI slave read data.
O_AOU_RX_AXI_S_RRESPoutputlogic [RP_COUNT-1:0][1:0]AXI slave read response.
O_AOU_RX_AXI_S_RLASToutputlogic [RP_COUNT-1:0]AXI slave last read beat.
O_AOU_RX_AXI_S_RVALIDoutputlogic [RP_COUNT-1:0]AXI slave read-data valid.
I_AOU_RX_AXI_S_RREADYinputlogic [RP_COUNT-1:0]AXI slave read-data ready.
I_AOU_TX_AXI_S_AWIDinputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI slave write-address ID.
I_AOU_TX_AXI_S_AWADDRinputlogic [RP_COUNT-1:0][AXI_ADDR_WD-1:0]AXI slave write address.
I_AOU_TX_AXI_S_AWLENinputlogic [RP_COUNT-1:0][AXI_LEN_WD-1:0]AXI slave write burst length.
I_AOU_TX_AXI_S_AWSIZEinputlogic [RP_COUNT-1:0][2:0]AXI slave write transfer size.
I_AOU_TX_AXI_S_AWBURSTinputlogic [RP_COUNT-1:0][1:0]AXI slave write burst type.
I_AOU_TX_AXI_S_AWLOCKinputlogic [RP_COUNT-1:0]AXI slave write lock.
I_AOU_TX_AXI_S_AWCACHEinputlogic [RP_COUNT-1:0][3:0]AXI slave write cache attributes.
I_AOU_TX_AXI_S_AWPROTinputlogic [RP_COUNT-1:0][2:0]AXI slave write protection.
I_AOU_TX_AXI_S_AWQOSinputlogic [RP_COUNT-1:0][3:0]AXI slave write QoS.
I_AOU_TX_AXI_S_AWVALIDinputlogic [RP_COUNT-1:0]AXI slave write-address valid.
O_AOU_TX_AXI_S_AWREADYoutputlogic [RP_COUNT-1:0]AXI slave write-address ready.
I_AOU_TX_AXI_S_WDATAinputlogic [RP_COUNT-1:0][RP_AXI_DATA_WD_MAX-1:0]AXI slave write data.
I_AOU_TX_AXI_S_WSTRBinputlogic [RP_COUNT-1:0][RP_AXI_STRB_WD_MAX-1:0]AXI slave write strobes.
I_AOU_TX_AXI_S_WLASTinputlogic [RP_COUNT-1:0]AXI slave last write beat.
I_AOU_TX_AXI_S_WVALIDinputlogic [RP_COUNT-1:0]AXI slave write-data valid.
O_AOU_TX_AXI_S_WREADYoutputlogic [RP_COUNT-1:0]AXI slave write-data ready.
O_AOU_RX_AXI_S_BIDoutputlogic [RP_COUNT-1:0][AXI_ID_WD-1:0]AXI slave write-response ID.
O_AOU_RX_AXI_S_BRESPoutputlogic [RP_COUNT-1:0][1:0]AXI slave write response.
O_AOU_RX_AXI_S_BVALIDoutputlogic [RP_COUNT-1:0]AXI slave write-response valid.
I_AOU_RX_AXI_S_BREADYinputlogic [RP_COUNT-1:0]AXI slave write-response ready.
I_FDI_PL_0_VALIDinputlogicPHY0 received-flit valid.
I_FDI_PL_0_DATAinputlogic [FDI_IF_WD0-1:0]PHY0 received-flit data.
I_FDI_PL_0_FLIT_CANCELinputlogicPHY0 flit cancel.
I_FDI_PL_0_TRDYinputlogicPHY0 ready for transmit-flit data.
I_FDI_PL_0_STALLREQinputlogicPHY0 stall request.
I_FDI_PL_0_STATE_STSinputlogic [3:0]PHY0 state status.
O_FDI_LP_0_DATAoutputlogic [FDI_IF_WD0-1:0]PHY0 transmit-flit data.
O_FDI_LP_0_VALIDoutputlogicPHY0 transmit-flit valid.
O_FDI_LP_0_IRDYoutputlogicPHY0 transmit initiator ready.
O_FDI_LP_0_STALLACKoutputlogicPHY0 stall acknowledge.
I_PL_INBAND_PRESinputlogicPHY in-band presence.
I_PL_CLK_REQinputlogicPHY clock request.
I_PL_WAKE_ACKinputlogicPHY wake acknowledge.
I_PL_RX_ACTIVE_REQinputlogicPHY rx-active request.
O_LP_STATE_REQoutputlogic [3:0]Link state request to the PHY.
O_LP_WAKE_REQoutputlogicWake request to the PHY.
O_LP_CLK_ACKoutputlogicClock acknowledge to the PHY.
O_LP_RX_ACTIVE_STSoutputlogicRx-active status to the PHY.
I_SW_ACTIVATE_STARTinputlogicSoftware request to start activation.
I_SW_DEACTIVATE_STARTinputlogicSoftware request to start deactivation.
I_SW_RETRAIN_REQinputlogicSoftware request to retrain the link.
I_SW_LINKERROR_INJECTinputlogicSoftware request to inject a link error.
O_FDI_FSM_STATEoutputlogic [3:0]FDI bringup FSM state.
O_FDI_LINK_UPoutputlogicFDI link is up.
INT_REQ_LINKRESEToutputlogicLink reset request interrupt.
INT_SI0_ID_MISMATCHoutputlogicAXI slave ID mismatch interrupt.
INT_MI0_ID_MISMATCHoutputlogicAXI master ID mismatch interrupt.
INT_EARLY_RESP_ERRoutputlogicEarly-response error interrupt.
INT_ACTIVATE_STARToutputlogicActivation start interrupt from the AOU core. Also drives the bringup controller.
INT_DEACTIVATE_STARToutputlogicDeactivation start interrupt from the AOU core. Also drives the bringup controller.
I_MST_BUS_CLEANY_COMPLETEinputlogicAll responses to remote-die requests have completed. Tie to 1 when BUS_CLEANY is not used.
I_SLV_BUS_CLEANY_COMPLETEinputlogicAll remote-die responses to local requests have arrived. Tie to 1 when BUS_CLEANY is not used.
TIEL_DFT_MODESCANinputlogicDFT scan mode. Tie low for functional operation.