library ieee; use ieee.std_logic_1164.all; library UNISIM; use UNISIM.vcomponents.all; entity combpm_gtsfp_htgfmc2qsfp is port( -- 100MHz clock, main ref clock clk_100 : in std_logic; -- User clock provided by GT usrclk : out std_logic; -- Async reset active low rst_n : in std_logic; -- Differential reference clock inputs mgtrefclk_p : in std_logic; mgtrefclk_n : in std_logic; -- QSFP01 interface qsfp01_tx1n : out std_logic; qsfp01_tx1p : out std_logic; qsfp01_rx1n : in std_logic; qsfp01_rx1p : in std_logic; qsfp01_tx2n : out std_logic; qsfp01_tx2p : out std_logic; qsfp01_rx2n : in std_logic; qsfp01_rx2p : in std_logic; qsfp01_tx3n : out std_logic; qsfp01_tx3p : out std_logic; qsfp01_rx3n : in std_logic; qsfp01_rx3p : in std_logic; qsfp01_tx4n : out std_logic; qsfp01_tx4p : out std_logic; qsfp01_rx4n : in std_logic; qsfp01_rx4p : in std_logic; qsfp01_modprsl : in std_logic; qsfp01_resetn : out std_logic; qsfp01_intl : in std_logic; -- QSFP02 interface qsfp02_tx1n : out std_logic; qsfp02_tx1p : out std_logic; qsfp02_rx1n : in std_logic; qsfp02_rx1p : in std_logic; qsfp02_tx2n : out std_logic; qsfp02_tx2p : out std_logic; qsfp02_rx2n : in std_logic; qsfp02_rx2p : in std_logic; qsfp02_tx3n : out std_logic; qsfp02_tx3p : out std_logic; qsfp02_rx3n : in std_logic; qsfp02_rx3p : in std_logic; qsfp02_tx4n : out std_logic; qsfp02_tx4p : out std_logic; qsfp02_rx4n : in std_logic; qsfp02_rx4p : in std_logic; qsfp02_modprsl : in std_logic; qsfp02_resetn : out std_logic; qsfp02_intl : in std_logic; -- GT01 interface gt01_datarx : out std_logic_vector(15 downto 0); gt01_datatx : in std_logic_vector(15 downto 0); gt01_powergood : out std_logic; gt01_qplllock : out std_logic; gt01_txclkactive : out std_logic; gt01_rxclkactive : out std_logic; gt01_txresetdone : out std_logic; gt01_rxresetdone : out std_logic; gt01_rxcdrlock : out std_logic; gt01_rxbyteisaligned : out std_logic; gt01_rxbyterealign : out std_logic; gt01_rxcommadet : out std_logic; gt01_txfault : out std_logic; gt01_rxlos : out std_logic; gt01_modabs : out std_logic; gt01_rstall : in std_logic; gt01_rxcommadeten : in std_logic; gt01_txdisable : in std_logic; -- GT02 interface gt02_datarx : out std_logic_vector(15 downto 0); gt02_datatx : in std_logic_vector(15 downto 0); gt02_powergood : out std_logic; gt02_qplllock : out std_logic; gt02_txclkactive : out std_logic; gt02_rxclkactive : out std_logic; gt02_txresetdone : out std_logic; gt02_rxresetdone : out std_logic; gt02_rxcdrlock : out std_logic; gt02_rxbyteisaligned : out std_logic; gt02_rxbyterealign : out std_logic; gt02_rxcommadet : out std_logic; gt02_txfault : out std_logic; gt02_rxlos : out std_logic; gt02_modabs : out std_logic; gt02_rstall : in std_logic; gt02_rxcommadeten : in std_logic; gt02_txdisable : in std_logic; -- GT03 interface gt03_datarx : out std_logic_vector(15 downto 0); gt03_datatx : in std_logic_vector(15 downto 0); gt03_powergood : out std_logic; gt03_qplllock : out std_logic; gt03_txclkactive : out std_logic; gt03_rxclkactive : out std_logic; gt03_txresetdone : out std_logic; gt03_rxresetdone : out std_logic; gt03_rxcdrlock : out std_logic; gt03_rxbyteisaligned : out std_logic; gt03_rxbyterealign : out std_logic; gt03_rxcommadet : out std_logic; gt03_txfault : out std_logic; gt03_rxlos : out std_logic; gt03_modabs : out std_logic; gt03_rstall : in std_logic; gt03_rxcommadeten : in std_logic; gt03_txdisable : in std_logic; -- GT04 interface gt04_datarx : out std_logic_vector(15 downto 0); gt04_datatx : in std_logic_vector(15 downto 0); gt04_powergood : out std_logic; gt04_qplllock : out std_logic; gt04_txclkactive : out std_logic; gt04_rxclkactive : out std_logic; gt04_txresetdone : out std_logic; gt04_rxresetdone : out std_logic; gt04_rxcdrlock : out std_logic; gt04_rxbyteisaligned : out std_logic; gt04_rxbyterealign : out std_logic; gt04_rxcommadet : out std_logic; gt04_txfault : out std_logic; gt04_rxlos : out std_logic; gt04_modabs : out std_logic; gt04_rstall : in std_logic; gt04_rxcommadeten : in std_logic; gt04_txdisable : in std_logic; -- GT05 interface gt05_datarx : out std_logic_vector(15 downto 0); gt05_datatx : in std_logic_vector(15 downto 0); gt05_powergood : out std_logic; gt05_qplllock : out std_logic; gt05_txclkactive : out std_logic; gt05_rxclkactive : out std_logic; gt05_txresetdone : out std_logic; gt05_rxresetdone : out std_logic; gt05_rxcdrlock : out std_logic; gt05_rxbyteisaligned : out std_logic; gt05_rxbyterealign : out std_logic; gt05_rxcommadet : out std_logic; gt05_txfault : out std_logic; gt05_rxlos : out std_logic; gt05_modabs : out std_logic; gt05_rstall : in std_logic; gt05_rxcommadeten : in std_logic; gt05_txdisable : in std_logic; -- GT06 interface gt06_datarx : out std_logic_vector(15 downto 0); gt06_datatx : in std_logic_vector(15 downto 0); gt06_powergood : out std_logic; gt06_qplllock : out std_logic; gt06_txclkactive : out std_logic; gt06_rxclkactive : out std_logic; gt06_txresetdone : out std_logic; gt06_rxresetdone : out std_logic; gt06_rxcdrlock : out std_logic; gt06_rxbyteisaligned : out std_logic; gt06_rxbyterealign : out std_logic; gt06_rxcommadet : out std_logic; gt06_txfault : out std_logic; gt06_rxlos : out std_logic; gt06_modabs : out std_logic; gt06_rstall : in std_logic; gt06_rxcommadeten : in std_logic; gt06_txdisable : in std_logic; -- GT07 interface gt07_datarx : out std_logic_vector(15 downto 0); gt07_datatx : in std_logic_vector(15 downto 0); gt07_powergood : out std_logic; gt07_qplllock : out std_logic; gt07_txclkactive : out std_logic; gt07_rxclkactive : out std_logic; gt07_txresetdone : out std_logic; gt07_rxresetdone : out std_logic; gt07_rxcdrlock : out std_logic; gt07_rxbyteisaligned : out std_logic; gt07_rxbyterealign : out std_logic; gt07_rxcommadet : out std_logic; gt07_txfault : out std_logic; gt07_rxlos : out std_logic; gt07_modabs : out std_logic; gt07_rstall : in std_logic; gt07_rxcommadeten : in std_logic; gt07_txdisable : in std_logic; -- GT08 interface gt08_datarx : out std_logic_vector(15 downto 0); gt08_datatx : in std_logic_vector(15 downto 0); gt08_powergood : out std_logic; gt08_qplllock : out std_logic; gt08_txclkactive : out std_logic; gt08_rxclkactive : out std_logic; gt08_txresetdone : out std_logic; gt08_rxresetdone : out std_logic; gt08_rxcdrlock : out std_logic; gt08_rxbyteisaligned : out std_logic; gt08_rxbyterealign : out std_logic; gt08_rxcommadet : out std_logic; gt08_txfault : out std_logic; gt08_rxlos : out std_logic; gt08_modabs : out std_logic; gt08_rstall : in std_logic; gt08_rxcommadeten : in std_logic; gt08_txdisable : in std_logic ); end combpm_gtsfp_htgfmc2qsfp; architecture rtl of combpm_gtsfp_htgfmc2qsfp is -------------------------------- -- INTERFACE PORT ASSOCIATION -- -------------------------------- ATTRIBUTE X_INTERFACE_INFO : STRING; ATTRIBUTE X_INTERFACE_PARAMETER : STRING; ATTRIBUTE X_INTERFACE_INFO of clk_100 : SIGNAL is "xilinx.com:signal:clock:1.0 clk_100 CLK"; ATTRIBUTE X_INTERFACE_PARAMETER of clk_100 : SIGNAL is "FREQ 100000000"; ATTRIBUTE X_INTERFACE_INFO of rst_n : SIGNAL is "xilinx.com:signal:reset:1.0 rst_n RST"; ATTRIBUTE X_INTERFACE_PARAMETER of rst_n : SIGNAL is "POLARITY ACTIVE_LOW"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx1n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx1n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx1p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx1p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx1n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx1n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx1p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx1p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx2n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx2n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx2p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx2p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx2n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx2n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx2p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx2p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx3n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx3n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx3p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx3p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx3n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx3n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx3p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx3p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx4n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx4n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_tx4p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_tx4p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx4n : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx4n"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_rx4p : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_rx4p"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_modprsl : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_modprsl"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_resetn : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_resetn"; ATTRIBUTE X_INTERFACE_INFO of qsfp02_intl : SIGNAL is "soleil:user:qsfp:1.0 QSFP02 qsfp02_intl"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx1n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx1n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx1p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx1p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx1n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx1n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx1p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx1p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx2n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx2n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx2p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx2p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx2n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx2n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx2p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx2p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx3n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx3n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx3p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx3p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx3n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx3n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx3p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx3p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx4n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx4n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_tx4p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_tx4p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx4n : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx4n"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_rx4p : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_rx4p"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_modprsl : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_modprsl"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_resetn : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_resetn"; ATTRIBUTE X_INTERFACE_INFO of qsfp01_intl : SIGNAL is "soleil:user:qsfp:1.0 QSFP01 qsfp01_intl"; ATTRIBUTE X_INTERFACE_INFO of gt01_datarx : SIGNAL is "soleil:user:gtsfp:1.0 GT01 datarx"; ATTRIBUTE X_INTERFACE_INFO of gt01_datatx : SIGNAL is "soleil:user:gtsfp:1.0 GT01 datatx"; ATTRIBUTE X_INTERFACE_INFO of gt01_powergood : SIGNAL is "soleil:user:gtsfp:1.0 GT01 powergood"; ATTRIBUTE X_INTERFACE_INFO of gt01_qplllock : SIGNAL is "soleil:user:gtsfp:1.0 GT01 qplllock"; ATTRIBUTE X_INTERFACE_INFO of gt01_txclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT01 txclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt01_txresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT01 txresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxcdrlock : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxcdrlock"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxbyteisaligned : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxbyteisaligned"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxbyterealign : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxbyterealign"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxcommadet : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxcommadet"; ATTRIBUTE X_INTERFACE_INFO of gt01_txfault : SIGNAL is "soleil:user:gtsfp:1.0 GT01 txfault"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxlos : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxlos"; ATTRIBUTE X_INTERFACE_INFO of gt01_modabs : SIGNAL is "soleil:user:gtsfp:1.0 GT01 modabs"; ATTRIBUTE X_INTERFACE_INFO of gt01_rstall : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rstall"; ATTRIBUTE X_INTERFACE_INFO of gt01_rxcommadeten : SIGNAL is "soleil:user:gtsfp:1.0 GT01 rxcommadeten"; ATTRIBUTE X_INTERFACE_INFO of gt01_txdisable : SIGNAL is "soleil:user:gtsfp:1.0 GT01 txdisable"; ATTRIBUTE X_INTERFACE_INFO of gt02_datarx : SIGNAL is "soleil:user:gtsfp:1.0 GT02 datarx"; ATTRIBUTE X_INTERFACE_INFO of gt02_datatx : SIGNAL is "soleil:user:gtsfp:1.0 GT02 datatx"; ATTRIBUTE X_INTERFACE_INFO of gt02_powergood : SIGNAL is "soleil:user:gtsfp:1.0 GT02 powergood"; ATTRIBUTE X_INTERFACE_INFO of gt02_qplllock : SIGNAL is "soleil:user:gtsfp:1.0 GT02 qplllock"; ATTRIBUTE X_INTERFACE_INFO of gt02_txclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT02 txclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt02_txresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT02 txresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxcdrlock : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxcdrlock"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxbyteisaligned : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxbyteisaligned"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxbyterealign : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxbyterealign"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxcommadet : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxcommadet"; ATTRIBUTE X_INTERFACE_INFO of gt02_txfault : SIGNAL is "soleil:user:gtsfp:1.0 GT02 txfault"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxlos : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxlos"; ATTRIBUTE X_INTERFACE_INFO of gt02_modabs : SIGNAL is "soleil:user:gtsfp:1.0 GT02 modabs"; ATTRIBUTE X_INTERFACE_INFO of gt02_rstall : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rstall"; ATTRIBUTE X_INTERFACE_INFO of gt02_rxcommadeten : SIGNAL is "soleil:user:gtsfp:1.0 GT02 rxcommadeten"; ATTRIBUTE X_INTERFACE_INFO of gt02_txdisable : SIGNAL is "soleil:user:gtsfp:1.0 GT02 txdisable"; ATTRIBUTE X_INTERFACE_INFO of gt03_datarx : SIGNAL is "soleil:user:gtsfp:1.0 GT03 datarx"; ATTRIBUTE X_INTERFACE_INFO of gt03_datatx : SIGNAL is "soleil:user:gtsfp:1.0 GT03 datatx"; ATTRIBUTE X_INTERFACE_INFO of gt03_powergood : SIGNAL is "soleil:user:gtsfp:1.0 GT03 powergood"; ATTRIBUTE X_INTERFACE_INFO of gt03_qplllock : SIGNAL is "soleil:user:gtsfp:1.0 GT03 qplllock"; ATTRIBUTE X_INTERFACE_INFO of gt03_txclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT03 txclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt03_txresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT03 txresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxcdrlock : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxcdrlock"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxbyteisaligned : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxbyteisaligned"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxbyterealign : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxbyterealign"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxcommadet : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxcommadet"; ATTRIBUTE X_INTERFACE_INFO of gt03_txfault : SIGNAL is "soleil:user:gtsfp:1.0 GT03 txfault"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxlos : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxlos"; ATTRIBUTE X_INTERFACE_INFO of gt03_modabs : SIGNAL is "soleil:user:gtsfp:1.0 GT03 modabs"; ATTRIBUTE X_INTERFACE_INFO of gt03_rstall : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rstall"; ATTRIBUTE X_INTERFACE_INFO of gt03_rxcommadeten : SIGNAL is "soleil:user:gtsfp:1.0 GT03 rxcommadeten"; ATTRIBUTE X_INTERFACE_INFO of gt03_txdisable : SIGNAL is "soleil:user:gtsfp:1.0 GT03 txdisable"; ATTRIBUTE X_INTERFACE_INFO of gt04_datarx : SIGNAL is "soleil:user:gtsfp:1.0 GT04 datarx"; ATTRIBUTE X_INTERFACE_INFO of gt04_datatx : SIGNAL is "soleil:user:gtsfp:1.0 GT04 datatx"; ATTRIBUTE X_INTERFACE_INFO of gt04_powergood : SIGNAL is "soleil:user:gtsfp:1.0 GT04 powergood"; ATTRIBUTE X_INTERFACE_INFO of gt04_qplllock : SIGNAL is "soleil:user:gtsfp:1.0 GT04 qplllock"; ATTRIBUTE X_INTERFACE_INFO of gt04_txclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT04 txclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxclkactive : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxclkactive"; ATTRIBUTE X_INTERFACE_INFO of gt04_txresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT04 txresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxresetdone : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxresetdone"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxcdrlock : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxcdrlock"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxbyteisaligned : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxbyteisaligned"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxbyterealign : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxbyterealign"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxcommadet : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxcommadet"; ATTRIBUTE X_INTERFACE_INFO of gt04_txfault : SIGNAL is "soleil:user:gtsfp:1.0 GT04 txfault"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxlos : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxlos"; ATTRIBUTE X_INTERFACE_INFO of gt04_modabs : SIGNAL is "soleil:user:gtsfp:1.0 GT04 modabs"; ATTRIBUTE X_INTERFACE_INFO of gt04_rstall : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rstall"; ATTRIBUTE X_INTERFACE_INFO of gt04_rxcommadeten : SIGNAL is "soleil:user:gtsfp:1.0 GT04 rxcommadeten"; ATTRIBUTE X_INTERFACE_INFO of gt04_txdisable : SIGNAL is "soleil:user:gtsfp:1.0 GT04 txdisable"; --------------------------- -- COMPONENT DECLARATION -- --------------------------- COMPONENT gtwizard_ultrascale_htgfmc2qsfp PORT ( gtwiz_userclk_tx_reset_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_tx_srcclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_tx_usrclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_tx_usrclk2_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_tx_active_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_rx_reset_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_rx_srcclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_rx_usrclk_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_rx_usrclk2_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userclk_rx_active_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_clk_freerun_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_all_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_tx_pll_and_datapath_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_tx_datapath_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_rx_pll_and_datapath_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_rx_datapath_in : IN STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_rx_cdr_stable_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_tx_done_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_reset_rx_done_out : OUT STD_LOGIC_VECTOR(0 DOWNTO 0); gtwiz_userdata_tx_in : IN STD_LOGIC_VECTOR(127 DOWNTO 0); gtwiz_userdata_rx_out : OUT STD_LOGIC_VECTOR(127 DOWNTO 0); gtrefclk01_in : IN STD_LOGIC_VECTOR(1 DOWNTO 0); qpll1lock_out : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); qpll1outclk_out : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); qpll1outrefclk_out : OUT STD_LOGIC_VECTOR(1 DOWNTO 0); gtyrxn_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); gtyrxp_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); rx8b10ben_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); rxbufreset_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); rxcommadeten_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); rxmcommaalignen_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); rxpcommaalignen_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); tx8b10ben_in : IN STD_LOGIC_VECTOR(7 DOWNTO 0); txctrl0_in : IN STD_LOGIC_VECTOR(127 DOWNTO 0); txctrl1_in : IN STD_LOGIC_VECTOR(127 DOWNTO 0); txctrl2_in : IN STD_LOGIC_VECTOR(63 DOWNTO 0); gtpowergood_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); gtytxn_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); gtytxp_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxbufstatus_out : OUT STD_LOGIC_VECTOR(23 DOWNTO 0); rxbyteisaligned_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxbyterealign_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxcdrlock_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxclkcorcnt_out : OUT STD_LOGIC_VECTOR(15 DOWNTO 0); rxcommadet_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); rxctrl0_out : OUT STD_LOGIC_VECTOR(127 DOWNTO 0); rxctrl1_out : OUT STD_LOGIC_VECTOR(127 DOWNTO 0); rxctrl2_out : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); rxctrl3_out : OUT STD_LOGIC_VECTOR(63 DOWNTO 0); rxpmaresetdone_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); txpmaresetdone_out : OUT STD_LOGIC_VECTOR(7 DOWNTO 0) ); END COMPONENT; ------------------------ -- SIGNAL DECLARATION -- ------------------------ signal txclkactive : std_logic; signal rxclkactive : std_logic; signal rstall : std_logic; signal txresetdone : std_logic; signal rxresetdone : std_logic; signal qplllock : std_logic_vector(1 downto 0); signal ref_clk : std_logic; begin --------------------- -- DIFF CLK BUFFER -- --------------------- ibufd_clkref_inst: IBUFDS_GTE4 generic map ( REFCLK_EN_TX_PATH => '0', REFCLK_HROW_CK_SEL => "00", REFCLK_ICNTL_RX => "00" ) port map ( O => ref_clk, ODIV2 => open, CEB => '0', I => mgtrefclk_p, IB => mgtrefclk_n ); -------------------- -- GLOBAL SIGNALS -- -------------------- gt01_txclkactive <= txclkactive; gt02_txclkactive <= txclkactive; gt03_txclkactive <= txclkactive; gt04_txclkactive <= txclkactive; gt05_txclkactive <= txclkactive; gt06_txclkactive <= txclkactive; gt07_txclkactive <= txclkactive; gt08_txclkactive <= txclkactive; gt01_rxclkactive <= rxclkactive; gt02_rxclkactive <= rxclkactive; gt03_rxclkactive <= rxclkactive; gt04_rxclkactive <= rxclkactive; gt05_rxclkactive <= rxclkactive; gt06_rxclkactive <= rxclkactive; gt07_rxclkactive <= rxclkactive; gt08_rxclkactive <= rxclkactive; rstall <= gt01_rstall or gt02_rstall or gt03_rstall or gt04_rstall or gt05_rstall or gt06_rstall or gt07_rstall or gt08_rstall; gt01_txresetdone <= txresetdone; gt02_txresetdone <= txresetdone; gt03_txresetdone <= txresetdone; gt04_txresetdone <= txresetdone; gt05_txresetdone <= txresetdone; gt06_txresetdone <= txresetdone; gt07_txresetdone <= txresetdone; gt08_txresetdone <= txresetdone; gt01_rxresetdone <= rxresetdone; gt02_rxresetdone <= rxresetdone; gt03_rxresetdone <= rxresetdone; gt04_rxresetdone <= rxresetdone; gt05_rxresetdone <= rxresetdone; gt06_rxresetdone <= rxresetdone; gt07_rxresetdone <= rxresetdone; gt08_rxresetdone <= rxresetdone; gt01_qplllock <= qplllock(0); gt02_qplllock <= qplllock(0); gt03_qplllock <= qplllock(0); gt04_qplllock <= qplllock(0); gt05_qplllock <= qplllock(1); gt06_qplllock <= qplllock(1); gt07_qplllock <= qplllock(1); gt08_qplllock <= qplllock(1); -------------------------- -- TRANSCEIVER INSTANCE -- -------------------------- gtwiz_inst: gtwizard_ultrascale_htgfmc2qsfp PORT MAP ( gtwiz_userclk_tx_reset_in => "0", gtwiz_userclk_tx_srcclk_out => open, gtwiz_userclk_tx_usrclk_out => open, gtwiz_userclk_tx_usrclk2_out => open, gtwiz_userclk_tx_active_out(0) => txclkactive, gtwiz_userclk_rx_reset_in => "0", gtwiz_userclk_rx_srcclk_out => open, gtwiz_userclk_rx_usrclk_out(0) => usrclk, gtwiz_userclk_rx_usrclk2_out => open, gtwiz_userclk_rx_active_out(0) => rxclkactive, gtwiz_reset_clk_freerun_in(0) => clk_100, gtwiz_reset_all_in(0) => rstall, gtwiz_reset_tx_pll_and_datapath_in => "0", gtwiz_reset_tx_datapath_in => "0", gtwiz_reset_rx_pll_and_datapath_in => "0", gtwiz_reset_rx_datapath_in => "0", gtwiz_reset_rx_cdr_stable_out => open, gtwiz_reset_tx_done_out(0) => txresetdone, gtwiz_reset_rx_done_out(0) => rxresetdone, gtwiz_userdata_tx_in(15 downto 0) => gt01_datatx, gtwiz_userdata_tx_in(31 downto 16) => gt02_datatx, gtwiz_userdata_tx_in(47 downto 32) => gt03_datatx, gtwiz_userdata_tx_in(63 downto 48) => gt04_datatx, gtwiz_userdata_tx_in(79 downto 64) => gt05_datatx, gtwiz_userdata_tx_in(95 downto 80) => gt06_datatx, gtwiz_userdata_tx_in(111 downto 96) => gt07_datatx, gtwiz_userdata_tx_in(127 downto 112) => gt08_datatx, gtwiz_userdata_rx_out(15 downto 0) => gt01_datarx, gtwiz_userdata_rx_out(31 downto 16) => gt02_datarx, gtwiz_userdata_rx_out(47 downto 32) => gt03_datarx, gtwiz_userdata_rx_out(63 downto 48) => gt04_datarx, gtwiz_userdata_rx_out(79 downto 64) => gt05_datarx, gtwiz_userdata_rx_out(95 downto 80) => gt06_datarx, gtwiz_userdata_rx_out(111 downto 96) => gt07_datarx, gtwiz_userdata_rx_out(127 downto 112) => gt08_datarx, gtrefclk01_in(0) => ref_clk, gtrefclk01_in(1) => ref_clk, qpll1lock_out => qplllock, qpll1outclk_out => open, qpll1outrefclk_out => open, gtyrxn_in(0) => qsfp01_rx1n, gtyrxn_in(1) => qsfp01_rx2n, gtyrxn_in(2) => qsfp01_rx3n, gtyrxn_in(3) => qsfp01_rx4n, gtyrxn_in(4) => qsfp02_rx1n, gtyrxn_in(5) => qsfp02_rx2n, gtyrxn_in(6) => qsfp02_rx3n, gtyrxn_in(7) => qsfp02_rx4n, gtyrxp_in(0) => qsfp01_rx1p, gtyrxp_in(1) => qsfp01_rx2p, gtyrxp_in(2) => qsfp01_rx3p, gtyrxp_in(3) => qsfp01_rx4p, gtyrxp_in(4) => qsfp02_rx1p, gtyrxp_in(5) => qsfp02_rx2p, gtyrxp_in(6) => qsfp02_rx3p, gtyrxp_in(7) => qsfp02_rx4p, rxbufreset_in => (others => '0'), rx8b10ben_in => (others => '1'), rxcommadeten_in(0) => gt01_rxcommadeten, rxcommadeten_in(1) => gt02_rxcommadeten, rxcommadeten_in(2) => gt03_rxcommadeten, rxcommadeten_in(3) => gt04_rxcommadeten, rxcommadeten_in(4) => gt05_rxcommadeten, rxcommadeten_in(5) => gt06_rxcommadeten, rxcommadeten_in(6) => gt07_rxcommadeten, rxcommadeten_in(7) => gt08_rxcommadeten, rxmcommaalignen_in => (others => '1'), rxpcommaalignen_in => (others => '1'), tx8b10ben_in => (others => '1'), txctrl0_in => (others => '0'), txctrl1_in => (others => '0'), txctrl2_in => (others => '0'), gtpowergood_out(0) => gt01_powergood, gtpowergood_out(1) => gt02_powergood, gtpowergood_out(2) => gt03_powergood, gtpowergood_out(3) => gt04_powergood, gtpowergood_out(4) => gt05_powergood, gtpowergood_out(5) => gt06_powergood, gtpowergood_out(6) => gt07_powergood, gtpowergood_out(7) => gt08_powergood, gtytxn_out(0) => qsfp01_tx1n, gtytxn_out(1) => qsfp01_tx2n, gtytxn_out(2) => qsfp01_tx3n, gtytxn_out(3) => qsfp01_tx4n, gtytxn_out(4) => qsfp02_tx1n, gtytxn_out(5) => qsfp02_tx2n, gtytxn_out(6) => qsfp02_tx3n, gtytxn_out(7) => qsfp02_tx4n, gtytxp_out(0) => qsfp01_tx1p, gtytxp_out(1) => qsfp01_tx2p, gtytxp_out(2) => qsfp01_tx3p, gtytxp_out(3) => qsfp01_tx4p, gtytxp_out(4) => qsfp02_tx1p, gtytxp_out(5) => qsfp02_tx2p, gtytxp_out(6) => qsfp02_tx3p, gtytxp_out(7) => qsfp02_tx4p, rxbufstatus_out => open, rxbyteisaligned_out(0) => gt01_rxbyteisaligned, rxbyteisaligned_out(1) => gt02_rxbyteisaligned, rxbyteisaligned_out(2) => gt03_rxbyteisaligned, rxbyteisaligned_out(3) => gt04_rxbyteisaligned, rxbyteisaligned_out(4) => gt05_rxbyteisaligned, rxbyteisaligned_out(5) => gt06_rxbyteisaligned, rxbyteisaligned_out(6) => gt07_rxbyteisaligned, rxbyteisaligned_out(7) => gt08_rxbyteisaligned, rxbyterealign_out(0) => gt01_rxbyterealign, rxbyterealign_out(1) => gt02_rxbyterealign, rxbyterealign_out(2) => gt03_rxbyterealign, rxbyterealign_out(3) => gt04_rxbyterealign, rxbyterealign_out(4) => gt05_rxbyterealign, rxbyterealign_out(5) => gt06_rxbyterealign, rxbyterealign_out(6) => gt07_rxbyterealign, rxbyterealign_out(7) => gt08_rxbyterealign, rxcdrlock_out(0) => gt01_rxcdrlock, rxcdrlock_out(1) => gt02_rxcdrlock, rxcdrlock_out(2) => gt03_rxcdrlock, rxcdrlock_out(3) => gt04_rxcdrlock, rxcdrlock_out(4) => gt05_rxcdrlock, rxcdrlock_out(5) => gt06_rxcdrlock, rxcdrlock_out(6) => gt07_rxcdrlock, rxcdrlock_out(7) => gt08_rxcdrlock, rxclkcorcnt_out => open, rxcommadet_out(0) => gt01_rxcommadet, rxcommadet_out(1) => gt02_rxcommadet, rxcommadet_out(2) => gt03_rxcommadet, rxcommadet_out(3) => gt04_rxcommadet, rxcommadet_out(4) => gt05_rxcommadet, rxcommadet_out(5) => gt06_rxcommadet, rxcommadet_out(6) => gt07_rxcommadet, rxcommadet_out(7) => gt08_rxcommadet, rxctrl0_out => open, rxctrl1_out => open, rxctrl2_out => open, rxctrl3_out => open, rxpmaresetdone_out => open, txpmaresetdone_out => open ); ---------------------- -- DIRECT CONNEXION -- ---------------------- gt01_txfault <= qsfp01_modprsl; gt02_txfault <= qsfp01_modprsl; gt03_txfault <= qsfp01_modprsl; gt04_txfault <= qsfp01_modprsl; gt05_txfault <= qsfp02_modprsl; gt06_txfault <= qsfp02_modprsl; gt07_txfault <= qsfp02_modprsl; gt08_txfault <= qsfp02_modprsl; gt01_rxlos <= qsfp01_modprsl; gt02_rxlos <= qsfp01_modprsl; gt03_rxlos <= qsfp01_modprsl; gt04_rxlos <= qsfp01_modprsl; gt05_rxlos <= qsfp02_modprsl; gt06_rxlos <= qsfp02_modprsl; gt07_rxlos <= qsfp02_modprsl; gt08_rxlos <= qsfp02_modprsl; gt01_modabs <= qsfp01_modprsl; gt02_modabs <= qsfp01_modprsl; gt03_modabs <= qsfp01_modprsl; gt04_modabs <= qsfp01_modprsl; gt05_modabs <= qsfp02_modprsl; gt06_modabs <= qsfp02_modprsl; gt07_modabs <= qsfp02_modprsl; gt08_modabs <= qsfp02_modprsl; qsfp01_resetn <= '1'; qsfp02_resetn <= '1'; end architecture rtl;