]> jspc29.x-matter.uni-frankfurt.de Git - trbnet.git/commitdiff
XCKU MGTs: Add TX PI, BUFSTATUS, optional soft rst
authorThomas Gessler <Thomas.Gessler@exp2.physik.uni-giessen.de>
Fri, 12 Feb 2021 15:33:25 +0000 (16:33 +0100)
committerThomas Gessler <Thomas.Gessler@exp2.physik.uni-giessen.de>
Wed, 17 Mar 2021 15:05:42 +0000 (16:05 +0100)
The TX phase interpolator (PI) ports can be used to adjust the TX-data
phase with respect to the reference (and user) clock to achieve
deterministic latency.

The FIFO half full flag can be used to detect the phase between user
clock and XCLK as with the CERN HTPD TX phase aligner:

https://gitlab.cern.ch/HPTD/tx_phase_aligner

(cherry picked from commits
f9ed402b9d8ec37aa3df5d548f1c719ebbf08a75,
55d4774406b555cf9b1665ac97232877d379e92c,
17dd888de508b1e1b274422b0f6ac3559091c89e,
77e7dbe9d0a711f10f97c67384ea5295c18ef327)

media_interfaces/med_xcku_sfp_sync.vhd
media_interfaces/xcku/gth_xcku_2gbps0_100mhz/gth_xcku_2gbps0_100mhz.xci
media_interfaces/xcku/gth_xcku_2gbps0_100mhz/gth_xcku_2gbps0_100mhz.xml
media_interfaces/xcku/gth_xcku_2gbps0_200mhz/gth_xcku_2gbps0_200mhz.xci
media_interfaces/xcku/gth_xcku_2gbps0_200mhz/gth_xcku_2gbps0_200mhz.xml
media_interfaces/xcku/gth_xcku_2gbps4_120mhz/gth_xcku_2gbps4_120mhz.xci
media_interfaces/xcku/gth_xcku_2gbps4_120mhz/gth_xcku_2gbps4_120mhz.xml
media_interfaces/xcku/gth_xcku_top.vhd

index 5851651032e67bdc82c31df25fc213094cee1c8b..b34808d6144939ea3c9967daec1ad2678032c48a 100644 (file)
@@ -14,11 +14,13 @@ entity med_xcku_sfp_sync is
     generic (
         IS_SYNC_SLAVE  : integer := c_NO;
         LINE_RATE_KBPS : integer := 2000000;
-        REFCLK_FREQ_HZ : integer := 100000000
+        REFCLK_FREQ_HZ : integer := 100000000;
+        SOFT_RESET_TX  : integer range 0 to 1 := 1
     );
     port (
         SYSCLK          : in  std_logic;
         CLK_100         : in  std_logic;
+        RESET_ALL       : in  std_logic := '0';
         GTREFCLK        : in  std_logic;
         GTREFCLK_BUFG   : in  std_logic;
         RXOUTCLK        : out std_logic;
@@ -32,6 +34,8 @@ entity med_xcku_sfp_sync is
         TXUSRCLK_ACTIVE : in  std_logic;
         RXPMARESETDONE  : out std_logic;
         TXPMARESETDONE  : out std_logic;
+        RXRESETDONE     : out std_logic;
+        TXRESETDONE     : out std_logic;
 
         RESET           : in  std_logic;
         CLEAR           : in  std_logic;
@@ -68,7 +72,15 @@ entity med_xcku_sfp_sync is
         RXRATE          : in  std_logic_vector(2 downto 0) := b"000";
         TXDIFFCTRL      : in  std_logic_vector(3 downto 0) := b"1100";
         TXPOSTCURSOR    : in  std_logic_vector(4 downto 0) := b"00000";
-        TXPRECURSOR     : in  std_logic_vector(4 downto 0) := b"00000"
+        TXPRECURSOR     : in  std_logic_vector(4 downto 0) := b"00000";
+
+        TXPIPPMEN       : in  std_logic := '0';
+        TXPIPPMOVRDEN   : in  std_logic := '0';
+        TXPIPPMPD       : in  std_logic := '0';
+        TXPIPPMSEL      : in  std_logic := '0';
+        TXPIPPMSTEPSIZE : in  std_logic_vector(4 downto 0) := "00000";
+
+        TXBUFSTATUS     : out std_logic_vector(1 downto 0)
     );
 end entity;
 
@@ -82,12 +94,14 @@ architecture med_xcku_sfp_sync_arch of med_xcku_sfp_sync is
     signal rxnotintable : std_logic;
 
     signal rxpmareset : std_logic;
-    signal reset_all : std_logic;
+    signal reset_all_i : std_logic;
+
+    signal quad_rst : std_logic;
 
     signal rx_cdr_lol : std_logic;
     signal tx_lol : std_logic;
 
-    signal rxresetdone : std_logic;
+    signal rxresetdone_i : std_logic;
     signal txpmaresetdone_i : std_logic;
 
     signal rx_data_valid_count : unsigned(7 downto 0) := (others => '0');
@@ -128,67 +142,76 @@ begin
 
     SD_TXDIS_OUT <= '0';
 
+    reset_all_i <= quad_rst or RESET_ALL when SOFT_RESET_TX = 1 else RESET_ALL;
+
     THE_SERDES : entity work.gth_xcku_top
     generic map (
         LINE_RATE_KBPS => LINE_RATE_KBPS,
         REFCLK_FREQ_HZ => REFCLK_FREQ_HZ
     )
     port map (
-        CLK_100         => CLK_100,
-        GTREFCLK        => GTREFCLK,
-        RXOUTCLK        => RXOUTCLK,
-        TXOUTCLK        => TXOUTCLK,
-        RXUSRCLK        => RXUSRCLK,
-        RXUSRCLK_DOUBLE => RXUSRCLK_DOUBLE,
-        TXUSRCLK        => TXUSRCLK,
-        TXUSRCLK_DOUBLE => TXUSRCLK_DOUBLE,
-        RXUSRCLK_ACTIVE => RXUSRCLK_ACTIVE,
-        TXUSRCLK_ACTIVE => TXUSRCLK_ACTIVE,
-        RESET_ALL       => reset_all,
-        RXPMARESET      => rxpmareset,
-        RXPCSRESET      => '0',
-        TXPMARESET      => '0',
-        TXPCSRESET      => '0',
-        INIT_DONE       => open,
-        RXRESETDONE     => rxresetdone,
-        TXRESETDONE     => open,
-        RXPMARESETDONE  => RXPMARESETDONE,
-        TXPMARESETDONE  => txpmaresetdone_i,
-        RXBYTEISALIGNED => open,
-        RXN             => RXN,
-        RXP             => RXP,
-        TXN             => TXN,
-        TXP             => TXP,
-        TXDATA          => txdata,
-        TXCHARISK       => txcharisk,
-        TXCHARDISPMODE  => txchardispmode,
-        TXCHARDISPVAL   => '0',
-        RXDATA          => rxdata,
-        RXCHARISK       => rxcharisk,
-        RXCHARISCOMMA   => open,
-        RXNOTINTABLE    => rxnotintable,
-        RXDISPERR       => open,
-        DRPADDR         => DRPADDR,
-        DRPCLK          => DRPCLK,
-        DRPDI           => DRPDI,
-        DRPEN           => DRPEN,
-        DRPWE           => DRPWE,
-        DRPDO           => DRPDO,
-        DRPRDY          => DRPRDY,
-        EYESCANRESET    => EYESCANRESET,
-        RXLPMEN         => RXLPMEN,
-        RXRATE          => RXRATE,
-        TXDIFFCTRL      => TXDIFFCTRL,
-        TXPOSTCURSOR    => TXPOSTCURSOR,
-        TXPRECURSOR     => TXPRECURSOR
+        CLK_100           => CLK_100,
+        GTREFCLK          => GTREFCLK,
+        RXOUTCLK          => RXOUTCLK,
+        TXOUTCLK          => TXOUTCLK,
+        RXUSRCLK          => RXUSRCLK,
+        RXUSRCLK_DOUBLE   => RXUSRCLK_DOUBLE,
+        TXUSRCLK          => TXUSRCLK,
+        TXUSRCLK_DOUBLE   => TXUSRCLK_DOUBLE,
+        RXUSRCLK_ACTIVE   => RXUSRCLK_ACTIVE,
+        TXUSRCLK_ACTIVE   => TXUSRCLK_ACTIVE,
+        RESET_ALL         => reset_all_i,
+        RXPMARESET        => rxpmareset,
+        RXPCSRESET        => '0',
+        TXPMARESET        => '0',
+        TXPCSRESET        => '0',
+        INIT_DONE         => open,
+        RXRESETDONE       => rxresetdone_i,
+        TXRESETDONE       => TXRESETDONE,
+        RXPMARESETDONE    => RXPMARESETDONE,
+        TXPMARESETDONE    => txpmaresetdone_i,
+        RXBYTEISALIGNED   => open,
+        RXN               => RXN,
+        RXP               => RXP,
+        TXN               => TXN,
+        TXP               => TXP,
+        TXDATA            => txdata,
+        TXCHARISK         => txcharisk,
+        TXCHARDISPMODE    => txchardispmode,
+        TXCHARDISPVAL     => '0',
+        RXDATA            => rxdata,
+        RXCHARISK         => rxcharisk,
+        RXCHARISCOMMA     => open,
+        RXNOTINTABLE      => rxnotintable,
+        RXDISPERR         => open,
+        DRPADDR           => DRPADDR,
+        DRPCLK            => DRPCLK,
+        DRPDI             => DRPDI,
+        DRPEN             => DRPEN,
+        DRPWE             => DRPWE,
+        DRPDO             => DRPDO,
+        DRPRDY            => DRPRDY,
+        EYESCANRESET      => EYESCANRESET,
+        RXLPMEN           => RXLPMEN,
+        RXRATE            => RXRATE,
+        TXDIFFCTRL        => TXDIFFCTRL,
+        TXPOSTCURSOR      => TXPOSTCURSOR,
+        TXPRECURSOR       => TXPRECURSOR,
+        TXPIPPMEN         => TXPIPPMEN,
+        TXPIPPMOVRDEN     => TXPIPPMOVRDEN,
+        TXPIPPMPD         => TXPIPPMPD,
+        TXPIPPMSEL        => TXPIPPMSEL,
+        TXPIPPMSTEPSIZE   => TXPIPPMSTEPSIZE,
+        TXBUFSTATUS       => TXBUFSTATUS
     );
+    RXRESETDONE <= rxresetdone_i;
 
     tx_lol <= not txpmaresetdone_i;
 
     process (RXUSRCLK_DOUBLE) is
     begin
         if rising_edge(RXUSRCLK_DOUBLE) then
-            if rxresetdone = '0' then
+            if rxresetdone_i = '0' then
                 rx_cdr_lol <= '1';
             else
                 if rxnotintable = '1' then
@@ -226,7 +249,7 @@ begin
         WA_POSITION      => (others => '0'),
         RX_SERDES_RST    => rxpmareset,
         RX_PCS_RST       => open,
-        QUAD_RST         => reset_all,
+        QUAD_RST         => quad_rst,
         TX_PCS_RST       => open,
         MEDIA_MED2INT    => MEDIA_MED2INT,
         MEDIA_INT2MED    => MEDIA_INT2MED,
index 6e887950ca695d34b9b0349162d70cf5aee79a76..29858659b2f0821d4715a541e1c6877d97e27f88 100644 (file)
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">gth_xcku_2gbps0_100mhz</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_LOC_XDC">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_COMMON_USRCLK">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FREERUN_FREQUENCY">100</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_DIRECTION">BOTH</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_REV">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBMDMTDO_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBRSVDOUT_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBTXUART_OUT">-1</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">18</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">21</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_USAGE_UPDATED">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PRESET">None</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_RX_COMMA_PRESET_UPDATE">8</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10bbypass_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10ben_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufdiffctrl_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomfinish_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcominit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomsas_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinitdone_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpisopd_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpllclksel_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpmareset_in">true</spirit:configurableElementValue>
index acdf8a65dd37ab5193def7ba4d55f5d292f36d41..6e154732c2f40c60cc60d72d51c272c4c766e86e 100644 (file)
@@ -14,7 +14,7 @@
         <spirit:parameters>
           <spirit:parameter>
             <spirit:name>outputProductCRC</spirit:name>
-            <spirit:value>9:5d220aeb</spirit:value>
+            <spirit:value>9:1dd46ae3</spirit:value>
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
       <spirit:name>ENABLE_OPTIONAL_PORTS</spirit:name>
       <spirit:displayName>Enable optional ports</spirit:displayName>
       <spirit:description>Indicate whether a port should be included</spirit:description>
-      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:value>
+      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:value>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>RX_REFCLK_SOURCE</spirit:name>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>INTERNAL_PORT_ENABLEMENT_UPDATED</spirit:name>
-      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">18</spirit:value>
+      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">21</spirit:value>
       <spirit:vendorExtensions>
         <xilinx:parameterInfo>
           <xilinx:enablement>
index 62fbd3c0e097454617bfd11255a654b1fda3f8e9..7710d3a4dd451eb73f0203591f895fa2a31f29f6 100644 (file)
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">gth_xcku_2gbps0_200mhz</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_LOC_XDC">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_COMMON_USRCLK">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FREERUN_FREQUENCY">100</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_DIRECTION">BOTH</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_REV">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBMDMTDO_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBRSVDOUT_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBTXUART_OUT">-1</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">20</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">23</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_USAGE_UPDATED">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PRESET">None</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_RX_COMMA_PRESET_UPDATE">8</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10bbypass_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10ben_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufdiffctrl_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomfinish_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcominit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomsas_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinitdone_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpisopd_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpllclksel_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpmareset_in">true</spirit:configurableElementValue>
index 82c5206d61caf7dab67a9996f03201a34d926233..b615140f43c508717a5e74dcdf7e02a4a46b5af8 100644 (file)
@@ -14,7 +14,7 @@
         <spirit:parameters>
           <spirit:parameter>
             <spirit:name>outputProductCRC</spirit:name>
-            <spirit:value>9:b87ae0cb</spirit:value>
+            <spirit:value>9:510310c5</spirit:value>
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
       <spirit:name>ENABLE_OPTIONAL_PORTS</spirit:name>
       <spirit:displayName>Enable optional ports</spirit:displayName>
       <spirit:description>Indicate whether a port should be included</spirit:description>
-      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:value>
+      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:value>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>RX_REFCLK_SOURCE</spirit:name>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>INTERNAL_PORT_ENABLEMENT_UPDATED</spirit:name>
-      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">20</spirit:value>
+      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">23</spirit:value>
       <spirit:vendorExtensions>
         <xilinx:parameterInfo>
           <xilinx:enablement>
index f4b2d7c88a225a51a07b1253bae95d16c36bb1b7..e4a72e5cb6d608be68588e466b6b2e9e075e833d 100644 (file)
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.Component_Name">gth_xcku_2gbps4_120mhz</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.DISABLE_LOC_XDC">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_COMMON_USRCLK">0</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.ENABLE_OPTIONAL_PORTS">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.FREERUN_FREQUENCY">100</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_DIRECTION">BOTH</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.GT_REV">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBMDMTDO_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBRSVDOUT_OUT">-1</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLED_UBTXUART_OUT">-1</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">24</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED">27</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PORT_USAGE_UPDATED">0</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_PRESET">None</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.INTERNAL_RX_COMMA_PRESET_UPDATE">9</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10bbypass_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.tx8b10ben_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufdiffctrl_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txbufstatus_out">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomfinish_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcominit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txcomsas_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinit_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphinitdone_out">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txphovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">false</spirit:configurableElementValue>
-        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">false</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmen_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmovrden_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmpd_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmsel_in">true</spirit:configurableElementValue>
+        <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpippmstepsize_in">true</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpisopd_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpllclksel_in">false</spirit:configurableElementValue>
         <spirit:configurableElementValue spirit:referenceId="PORT_ENABLEMENT.txpmareset_in">true</spirit:configurableElementValue>
index 3810e34a522592fc3b2cce3f874cc7e2a4e1059d..98bade8f9135210574e092b05245bf92be690fb6 100644 (file)
@@ -14,7 +14,7 @@
         <spirit:parameters>
           <spirit:parameter>
             <spirit:name>outputProductCRC</spirit:name>
-            <spirit:value>9:47853102</spirit:value>
+            <spirit:value>9:7418d113</spirit:value>
           </spirit:parameter>
         </spirit:parameters>
       </spirit:view>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmen_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmovrden_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmpd_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmsel_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txpippmstepsize_in">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
         <spirit:vendorExtensions>
           <xilinx:portInfo>
             <xilinx:enablement>
-              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">false</xilinx:isEnabled>
+              <xilinx:isEnabled xilinx:resolve="generated" xilinx:id="PORT_ENABLEMENT.txbufstatus_out">true</xilinx:isEnabled>
             </xilinx:enablement>
           </xilinx:portInfo>
         </spirit:vendorExtensions>
       <spirit:name>ENABLE_OPTIONAL_PORTS</spirit:name>
       <spirit:displayName>Enable optional ports</spirit:displayName>
       <spirit:description>Indicate whether a port should be included</spirit:description>
-      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpmareset_in rxresetdone_out txresetdone_out</spirit:value>
+      <spirit:value spirit:resolve="user" spirit:id="PARAM_VALUE.ENABLE_OPTIONAL_PORTS" spirit:order="150">rxcdrreset_in rxpcsreset_in rxpmareset_in txpcsreset_in txpippmen_in txpippmovrden_in txpippmpd_in txpippmsel_in txpippmstepsize_in txpmareset_in rxresetdone_out txbufstatus_out txresetdone_out</spirit:value>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>RX_REFCLK_SOURCE</spirit:name>
     </spirit:parameter>
     <spirit:parameter>
       <spirit:name>INTERNAL_PORT_ENABLEMENT_UPDATED</spirit:name>
-      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">24</spirit:value>
+      <spirit:value spirit:format="long" spirit:resolve="generated" spirit:id="PARAM_VALUE.INTERNAL_PORT_ENABLEMENT_UPDATED" spirit:order="165">27</spirit:value>
       <spirit:vendorExtensions>
         <xilinx:parameterInfo>
           <xilinx:enablement>
index 0c0187d386b06c851ee29f554c690438b2a3c54a..8b5078f794b3a5c59b64559e7a68e8b3b69d1487 100644 (file)
@@ -63,7 +63,15 @@ entity gth_xcku_top is
         RXRATE          : in  std_logic_vector(2 downto 0);
         TXDIFFCTRL      : in  std_logic_vector(3 downto 0);
         TXPOSTCURSOR    : in  std_logic_vector(4 downto 0);
-        TXPRECURSOR     : in  std_logic_vector(4 downto 0)
+        TXPRECURSOR     : in  std_logic_vector(4 downto 0);
+
+        TXPIPPMEN       : in  std_logic := '0';
+        TXPIPPMOVRDEN   : in  std_logic := '0';
+        TXPIPPMPD       : in  std_logic := '0';
+        TXPIPPMSEL      : in  std_logic := '0';
+        TXPIPPMSTEPSIZE : in  std_logic_vector(4 downto 0) := "00000";
+
+        TXBUFSTATUS     : out std_logic_vector(1 downto 0)
     );
 end entity gth_xcku_top;
 
@@ -110,6 +118,11 @@ architecture behavioral of gth_xcku_top is
             txctrl2_in                         : in  std_logic_vector(7 downto 0);
             txdiffctrl_in                      : in  std_logic_vector(3 downto 0);
             txpcsreset_in                      : in  std_logic_vector(0 downto 0);
+            txpippmen_in                       : in  std_logic_vector(0 downto 0);
+            txpippmovrden_in                   : in  std_logic_vector(0 downto 0);
+            txpippmpd_in                       : in  std_logic_vector(0 downto 0);
+            txpippmsel_in                      : in  std_logic_vector(0 downto 0);
+            txpippmstepsize_in                 : in  std_logic_vector(4 downto 0);
             txpmareset_in                      : in  std_logic_vector(0 downto 0);
             txpostcursor_in                    : in  std_logic_vector(4 downto 0);
             txprecursor_in                     : in  std_logic_vector(4 downto 0);
@@ -132,6 +145,7 @@ architecture behavioral of gth_xcku_top is
             rxoutclk_out                       : out std_logic_vector(0 downto 0);
             rxpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             rxresetdone_out                    : out std_logic_vector(0 downto 0);
+            txbufstatus_out                    : out std_logic_vector(1 downto 0);
             txoutclk_out                       : out std_logic_vector(0 downto 0);
             txpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             txresetdone_out                    : out std_logic_vector(0 downto 0)
@@ -180,6 +194,11 @@ architecture behavioral of gth_xcku_top is
             txctrl2_in                         : in  std_logic_vector(7 downto 0);
             txdiffctrl_in                      : in  std_logic_vector(3 downto 0);
             txpcsreset_in                      : in  std_logic_vector(0 downto 0);
+            txpippmen_in                       : in  std_logic_vector(0 downto 0);
+            txpippmovrden_in                   : in  std_logic_vector(0 downto 0);
+            txpippmpd_in                       : in  std_logic_vector(0 downto 0);
+            txpippmsel_in                      : in  std_logic_vector(0 downto 0);
+            txpippmstepsize_in                 : in  std_logic_vector(4 downto 0);
             txpmareset_in                      : in  std_logic_vector(0 downto 0);
             txpostcursor_in                    : in  std_logic_vector(4 downto 0);
             txprecursor_in                     : in  std_logic_vector(4 downto 0);
@@ -202,6 +221,7 @@ architecture behavioral of gth_xcku_top is
             rxoutclk_out                       : out std_logic_vector(0 downto 0);
             rxpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             rxresetdone_out                    : out std_logic_vector(0 downto 0);
+            txbufstatus_out                    : out std_logic_vector(1 downto 0);
             txoutclk_out                       : out std_logic_vector(0 downto 0);
             txpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             txresetdone_out                    : out std_logic_vector(0 downto 0)
@@ -250,6 +270,11 @@ architecture behavioral of gth_xcku_top is
             txctrl2_in                         : in  std_logic_vector(7 downto 0);
             txdiffctrl_in                      : in  std_logic_vector(3 downto 0);
             txpcsreset_in                      : in  std_logic_vector(0 downto 0);
+            txpippmen_in                       : in  std_logic_vector(0 downto 0);
+            txpippmovrden_in                   : in  std_logic_vector(0 downto 0);
+            txpippmpd_in                       : in  std_logic_vector(0 downto 0);
+            txpippmsel_in                      : in  std_logic_vector(0 downto 0);
+            txpippmstepsize_in                 : in  std_logic_vector(4 downto 0);
             txpmareset_in                      : in  std_logic_vector(0 downto 0);
             txpostcursor_in                    : in  std_logic_vector(4 downto 0);
             txprecursor_in                     : in  std_logic_vector(4 downto 0);
@@ -272,6 +297,7 @@ architecture behavioral of gth_xcku_top is
             rxoutclk_out                       : out std_logic_vector(0 downto 0);
             rxpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             rxresetdone_out                    : out std_logic_vector(0 downto 0);
+            txbufstatus_out                    : out std_logic_vector(1 downto 0);
             txoutclk_out                       : out std_logic_vector(0 downto 0);
             txpmaresetdone_out                 : out std_logic_vector(0 downto 0);
             txresetdone_out                    : out std_logic_vector(0 downto 0)
@@ -435,6 +461,11 @@ begin
             txctrl2_in                            => txctrl2,
             txdiffctrl_in                         => TXDIFFCTRL,
             txpcsreset_in(0)                      => TXPCSRESET,
+            txpippmen_in(0)                       => TXPIPPMEN,
+            txpippmovrden_in(0)                   => TXPIPPMOVRDEN,
+            txpippmpd_in(0)                       => TXPIPPMPD,
+            txpippmsel_in(0)                      => TXPIPPMSEL,
+            txpippmstepsize_in                    => TXPIPPMSTEPSIZE,
             txpmareset_in(0)                      => TXPMARESET,
             txpostcursor_in                       => TXPOSTCURSOR,
             txprecursor_in                        => TXPRECURSOR,
@@ -457,6 +488,7 @@ begin
             rxoutclk_out(0)                       => RXOUTCLK,
             rxpmaresetdone_out(0)                 => RXPMARESETDONE,
             rxresetdone_out(0)                    => RXRESETDONE,
+            txbufstatus_out                       => TXBUFSTATUS,
             txoutclk_out(0)                       => TXOUTCLK,
             txpmaresetdone_out(0)                 => TXPMARESETDONE,
             txresetdone_out(0)                    => TXRESETDONE
@@ -508,6 +540,11 @@ begin
             txctrl2_in                            => txctrl2,
             txdiffctrl_in                         => TXDIFFCTRL,
             txpcsreset_in(0)                      => TXPCSRESET,
+            txpippmen_in(0)                       => TXPIPPMEN,
+            txpippmovrden_in(0)                   => TXPIPPMOVRDEN,
+            txpippmpd_in(0)                       => TXPIPPMPD,
+            txpippmsel_in(0)                      => TXPIPPMSEL,
+            txpippmstepsize_in                    => TXPIPPMSTEPSIZE,
             txpmareset_in(0)                      => TXPMARESET,
             txpostcursor_in                       => TXPOSTCURSOR,
             txprecursor_in                        => TXPRECURSOR,
@@ -530,6 +567,7 @@ begin
             rxoutclk_out(0)                       => RXOUTCLK,
             rxpmaresetdone_out(0)                 => RXPMARESETDONE,
             rxresetdone_out(0)                    => RXRESETDONE,
+            txbufstatus_out                       => TXBUFSTATUS,
             txoutclk_out(0)                       => TXOUTCLK,
             txpmaresetdone_out(0)                 => TXPMARESETDONE,
             txresetdone_out(0)                    => TXRESETDONE
@@ -581,6 +619,11 @@ begin
             txctrl2_in                            => txctrl2,
             txdiffctrl_in                         => TXDIFFCTRL,
             txpcsreset_in(0)                      => TXPCSRESET,
+            txpippmen_in(0)                       => TXPIPPMEN,
+            txpippmovrden_in(0)                   => TXPIPPMOVRDEN,
+            txpippmpd_in(0)                       => TXPIPPMPD,
+            txpippmsel_in(0)                      => TXPIPPMSEL,
+            txpippmstepsize_in                    => TXPIPPMSTEPSIZE,
             txpmareset_in(0)                      => TXPMARESET,
             txpostcursor_in                       => TXPOSTCURSOR,
             txprecursor_in                        => TXPRECURSOR,
@@ -603,6 +646,7 @@ begin
             rxoutclk_out(0)                       => RXOUTCLK,
             rxpmaresetdone_out(0)                 => RXPMARESETDONE,
             rxresetdone_out(0)                    => RXRESETDONE,
+            txbufstatus_out                       => TXBUFSTATUS,
             txoutclk_out(0)                       => TXOUTCLK,
             txpmaresetdone_out(0)                 => TXPMARESETDONE,
             txresetdone_out(0)                    => TXRESETDONE