`default_nettype none module agilexf_xcvr # ( parameter NumCh=8, BondingEnable=0, BondingCh=4) (input wire RST, input wire CLK156, // 156.25 MHz refclk input wire CLK100, // used with platform designer PHY input wire [NumCh-1:0] SFP_RXP, SFP_RXN, output wire [NumCh-1:0] SFP_TXP, SFP_TXN, input wire [NumCh-1:0][63:0] TX_DATA, output wire [NumCh-1:0][63:0] RX_DATA, input wire [NumCh-1:0][1:0] TX_CTRL, output wire [NumCh-1:0][1:0] RX_CTRL, output wire [NumCh-1:0] TX_USRCLK, RX_USRCLK, input wire [NumCh-1:0] TX_VALID, RX_BITSLIP, output wire [NumCh-1:0] RX_VALID, output wire [NumCh-1:0] PLL_LOCKED, RX_LOCKED ); wire [NumCh-1:0] TX_DLL_LOCK; wire [NumCh-1:0] TX_READY, RX_READY, TX_PMA_READY, RX_PMA_READY; wire [NumCh-1:0][79:0] TX_PARA_DATA, RX_PARA_DATA; wire [NumCh-1:0] TX_USRCLK2, RX_USRCLK2; genvar ch; generate if (BondingEnable==0) begin : nobond_gen phy_10g_8ch phy0 // width is for 4ch ( .tx_dll_lock (TX_DLL_LOCK ), // O [7:0] .reset ({NumCh{RST}} ), // I [7:0] .tx_ready (TX_READY ), // O [7:0] .rx_ready (RX_READY ), // O [7:0] .tx_pma_ready (TX_PMA_READY ), // O [7:0] .rx_pma_ready (RX_PMA_READY ), // O [7:0] .tx_serial_data (SFP_TXP ), // O [7:0] .tx_serial_data_n (SFP_TXN ), // O [7:0] .rx_serial_data (SFP_RXP ), // I [7:0] .rx_serial_data_n (SFP_RXN ), // I [7:0] .pll_refclk0 (CLK156 ), // I .rx_is_lockedtodata (RX_LOCKED ), // O [7:0] .rx_pmaif_bitslip (RX_BITSLIP ), // I [7:0] .tx_parallel_data (TX_PARA_DATA ), // I [639:0] .rx_parallel_data (RX_PARA_DATA ), // O [639:0] .tx_coreclkin (TX_USRCLK2 ), // I [7:0] .rx_coreclkin (RX_USRCLK2 ), // I [7:0] .tx_clkout (TX_USRCLK ), // O [7:0] .tx_clkout2 (TX_USRCLK2 ), // O [7:0] .rx_clkout (RX_USRCLK ), // O [7:0] .rx_clkout2 (RX_USRCLK2 ), // O [7:0] .tx_fifo_full (), // O[7:0] .tx_fifo_pfull (), // O[3:]0 .rx_fifo_full (), // O[7:0] .rx_fifo_pfull (), // O[7:0] .rx_fifo_rd_en ({NumCh{1'b1}}) // I [7:0] ); assign PLL_LOCKED = TX_DLL_LOCK; for (ch=0; ch