`default_nettype none module de10_agilex_kyokko # ( parameter NumCh=8, BondingEnable = 0, // Set to 1 to enable BondingCh = 4, ChW = ((BondingEnable==0) ? 64 : BondingCh*64 ), NumChB = ((BondingEnable==0) ? NumCh : NumCh/BondingCh) ) ( input wire CLK156, CLK100, RST, output wire [NumCh-1:0] SFP_TXP, SFP_TXN, input wire [NumCh-1:0] SFP_RXP, SFP_RXN, // ------------------------------ // Aurora compatible interface signals output wire [NumChB-1:0] CH_UP, USER_CLK, // Data channel input wire [NumChB-1:0][ChW-1:0] S_AXI_TX_TDATA, input wire [ NumChB-1:0] S_AXI_TX_TLAST, S_AXI_TX_TVALID, output wire [NumChB-1:0] S_AXI_TX_TREADY, output wire [NumChB-1:0][ChW-1:0] M_AXI_RX_TDATA, output wire [NumChB-1:0] M_AXI_RX_TLAST, M_AXI_RX_TVALID, // UFC channel input wire [NumChB-1:0] UFC_TX_REQ, input wire [NumChB-1:0][7:0] UFC_TX_MS, input wire [NumChB-1:0][ChW-1:0] S_AXI_UFC_TX_TDATA, input wire [NumChB-1:0] S_AXI_UFC_TX_TVALID, output wire [NumChB-1:0] S_AXI_UFC_TX_TREADY, output wire [NumChB-1:0][ChW-1:0] M_AXI_UFC_RX_TDATA, output wire [NumChB-1:0] M_AXI_UFC_RX_TLAST, M_AXI_UFC_RX_TVALID, // NFC channel input wire [NumChB-1:0][15:0] S_AXI_NFC_TDATA, input wire [NumChB-1:0] S_AXI_NFC_TVALID, output wire [NumChB-1:0] S_AXI_NFC_TREADY ); wire GT_RST; gt_rst grst ( .CLK(CLK100), .RST(RST), .GT_RST(GT_RST) ); // ------------------------------ // Kyokko instances wire [NumCh-1:0] PLL_LOCKED; wire [NumCh-1:0] RX_LOCKED; wire [NumCh-1:0] TXUSERCLK2; wire [NumCh-1:0] RXUSERCLK2; wire [NumCh-1:0][63:0] TXS, RXS; wire [NumCh-1:0][1:0] TXHDRi, RXHDRi; wire [NumCh-1:0] RXRST = ~RX_LOCKED; wire [NumCh-1:0] TXRST = ~PLL_LOCKED; wire [NumCh-1:0] RXPATH_RST, RXSLIP; genvar ch; generate if (BondingEnable==0) begin : nobond_gen assign USER_CLK = TXUSERCLK2; for (ch=0; ch