SURF  1.0
Gtx7Core.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : Gtx7Core.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2012-12-17
5 -- Last update: 2016-10-27
6 -------------------------------------------------------------------------------
7 -- Description: Wrapper for Xilinx 7-series GTX primitive
8 -------------------------------------------------------------------------------
9 -- This file is part of 'SLAC Firmware Standard Library'.
10 -- It is subject to the license terms in the LICENSE.txt file found in the
11 -- top-level directory of this distribution and at:
12 -- https://confluence.slac.stanford.edu/display/ppareg/LICENSE.html.
13 -- No part of 'SLAC Firmware Standard Library', including this file,
14 -- may be copied, modified, propagated, or distributed except according to
15 -- the terms contained in the LICENSE.txt file.
16 -------------------------------------------------------------------------------
17 
18 library ieee;
19 use ieee.std_logic_1164.all;
20 use ieee.math_real.all;
21 
22 use work.StdRtlPkg.all;
23 
24 library UNISIM;
25 use UNISIM.VCOMPONENTS.all;
26 
27 --! @see entity
28  --! @ingroup xilinx_7Series_gtx7
29 entity Gtx7Core is
30 
31  generic (
32  TPD_G : time := 1 ns;
33 
34  -- Sim Generics --
35  SIM_GTRESET_SPEEDUP_G : string := "FALSE";
36  SIM_VERSION_G : string := "4.0";
37 
38  SIMULATION_G : boolean := false;
39 
40  STABLE_CLOCK_PERIOD_G : real := 4.0E-9; --units of seconds
41 
42  -- CPLL Settings --
43  CPLL_REFCLK_SEL_G : bit_vector := "001";
44  CPLL_FBDIV_G : integer := 4;
45  CPLL_FBDIV_45_G : integer := 5;
46  CPLL_REFCLK_DIV_G : integer := 1;
47  RXOUT_DIV_G : integer := 2;
48  TXOUT_DIV_G : integer := 2;
49  RX_CLK25_DIV_G : integer := 5; -- Set by wizard
50  TX_CLK25_DIV_G : integer := 5; -- Set by wizard
51 
52 
53  PMA_RSV_G : bit_vector := X"00018480"; -- Use X"00018480" when RXPLL=CPLL
54  -- Use X"001E7080" when RXPLL=QPLL and QPLL > 6.6GHz
55  RX_OS_CFG_G : bit_vector := "0000010000000"; -- Set by wizard
56  RXCDR_CFG_G : bit_vector := x"03000023ff40200020"; -- Set by wizard
57 
58 
59  -- Configure PLL sources
60  TX_PLL_G : string := "CPLL";
61  RX_PLL_G : string := "CPLL";
62 
63  -- Configure Data widths
64  TX_EXT_DATA_WIDTH_G : integer := 16;
65  TX_INT_DATA_WIDTH_G : integer := 20;
66  TX_8B10B_EN_G : boolean := true;
67 
68  RX_EXT_DATA_WIDTH_G : integer := 16;
69  RX_INT_DATA_WIDTH_G : integer := 20;
70  RX_8B10B_EN_G : boolean := true;
71 
72  -- Configure Buffer usage
73  TX_BUF_EN_G : boolean := true;
74  TX_OUTCLK_SRC_G : string := "PLLREFCLK"; -- or "OUTCLKPMA" when bypassing buffer
75  TX_DLY_BYPASS_G : sl := '1'; -- 1 for bypass, 0 for delay
76  TX_PHASE_ALIGN_G : string := "AUTO"; -- Or "MANUAL" or "NONE"
77  TX_BUF_ADDR_MODE_G : string := "FAST"; -- Or "FULL"
78 
79  RX_BUF_EN_G : boolean := true;
80  RX_OUTCLK_SRC_G : string := "PLLREFCLK"; -- or "OUTCLKPMA" when bypassing buffer
81  RX_USRCLK_SRC_G : string := "RXOUTCLK"; -- or "TXOUTCLK"
82  RX_DLY_BYPASS_G : sl := '1'; -- 1 for bypass, 0 for delay
83  RX_DDIEN_G : sl := '0'; -- Supposed to be '1' when bypassing rx buffer
84  RX_BUF_ADDR_MODE_G : string := "FAST";
85 
86  -- Configure RX comma alignment
87  RX_ALIGN_MODE_G : string := "GT"; -- Or "FIXED_LAT" or "NONE"
88  ALIGN_COMMA_DOUBLE_G : string := "FALSE";
89  ALIGN_COMMA_ENABLE_G : bit_vector := "1111111111";
90  ALIGN_COMMA_WORD_G : integer := 2;
91  ALIGN_MCOMMA_DET_G : string := "FALSE";
92  ALIGN_MCOMMA_VALUE_G : bit_vector := "1010000011";
94  ALIGN_PCOMMA_DET_G : string := "FALSE";
95  ALIGN_PCOMMA_VALUE_G : bit_vector := "0101111100";
97  SHOW_REALIGN_COMMA_G : string := "FALSE";
98  RXSLIDE_MODE_G : string := "PCS"; -- Set to PMA for fixed latency operation
99 
100  -- Fixed Latency comma alignment (If RX_ALIGN_MODE_G = "FIXED_LAT")
101  FIXED_COMMA_EN_G : slv(3 downto 0) := "0011";
102  FIXED_ALIGN_COMMA_0_G : slv := "----------0101111100";
103  FIXED_ALIGN_COMMA_1_G : slv := "----------1010000011";
104  FIXED_ALIGN_COMMA_2_G : slv := "XXXXXXXXXXXXXXXXXXXX";
105  FIXED_ALIGN_COMMA_3_G : slv := "XXXXXXXXXXXXXXXXXXXX";
106 
107  -- Configure RX 8B10B decoding (If RX_8B10B_EN_G = true)
108  RX_DISPERR_SEQ_MATCH_G : string := "TRUE";
109  DEC_MCOMMA_DETECT_G : string := "TRUE";
110  DEC_PCOMMA_DETECT_G : string := "TRUE";
111  DEC_VALID_COMMA_ONLY_G : string := "FALSE";
112 
113  -- Configure Clock Correction
114  CBCC_DATA_SOURCE_SEL_G : string := "DECODED";
115  CLK_COR_SEQ_2_USE_G : string := "FALSE";
116  CLK_COR_KEEP_IDLE_G : string := "FALSE";
117  CLK_COR_MAX_LAT_G : integer := 9;
118  CLK_COR_MIN_LAT_G : integer := 7;
119  CLK_COR_PRECEDENCE_G : string := "TRUE";
120  CLK_COR_REPEAT_WAIT_G : integer := 0;
121  CLK_COR_SEQ_LEN_G : integer := 1;
122  CLK_COR_SEQ_1_ENABLE_G : bit_vector := "1111";
123  CLK_COR_SEQ_1_1_G : bit_vector := "0100000000"; -- UG476 pg 249
124  CLK_COR_SEQ_1_2_G : bit_vector := "0000000000";
125  CLK_COR_SEQ_1_3_G : bit_vector := "0000000000";
126  CLK_COR_SEQ_1_4_G : bit_vector := "0000000000";
127  CLK_CORRECT_USE_G : string := "FALSE";
128  CLK_COR_SEQ_2_ENABLE_G : bit_vector := "0000";
129  CLK_COR_SEQ_2_1_G : bit_vector := "0100000000"; -- UG476 pg 249
130  CLK_COR_SEQ_2_2_G : bit_vector := "0000000000";
131  CLK_COR_SEQ_2_3_G : bit_vector := "0000000000";
132  CLK_COR_SEQ_2_4_G : bit_vector := "0000000000";
133 
134  -- Configure Channel Bonding
135  RX_CHAN_BOND_EN_G : boolean := false;
136  RX_CHAN_BOND_MASTER_G : boolean := false; --True: Master, False: Slave
137  CHAN_BOND_KEEP_ALIGN_G : string := "FALSE";
138  CHAN_BOND_MAX_SKEW_G : integer := 1;
139  CHAN_BOND_SEQ_LEN_G : integer := 1;
140  CHAN_BOND_SEQ_1_1_G : bit_vector := "0000000000";
141  CHAN_BOND_SEQ_1_2_G : bit_vector := "0000000000";
142  CHAN_BOND_SEQ_1_3_G : bit_vector := "0000000000";
143  CHAN_BOND_SEQ_1_4_G : bit_vector := "0000000000";
144  CHAN_BOND_SEQ_1_ENABLE_G : bit_vector := "1111";
145  CHAN_BOND_SEQ_2_1_G : bit_vector := "0000000000";
146  CHAN_BOND_SEQ_2_2_G : bit_vector := "0000000000";
147  CHAN_BOND_SEQ_2_3_G : bit_vector := "0000000000";
148  CHAN_BOND_SEQ_2_4_G : bit_vector := "0000000000";
149  CHAN_BOND_SEQ_2_ENABLE_G : bit_vector := "0000";
150  CHAN_BOND_SEQ_2_USE_G : string := "FALSE";
151  FTS_DESKEW_SEQ_ENABLE_G : bit_vector := "1111";
152  FTS_LANE_DESKEW_CFG_G : bit_vector := "1111";
153  FTS_LANE_DESKEW_EN_G : string := "FALSE";
154 
155  -- RX Equalizer Attributes--------------------------
156  RX_EQUALIZER_G : string := "DFE"; -- Or "LPM"
157  RX_DFE_KL_CFG2_G : bit_vector := x"3008E56A"; -- Set by wizard
158  RX_CM_TRIM_G : bit_vector := "010";
159  RX_DFE_LPM_CFG_G : bit_vector := x"0954";
160  RXDFELFOVRDEN_G : sl := '1';
161  RXDFEXYDEN_G : sl := '1' -- This should always be 1
162  );
163 
164  port (
165  stableClkIn : in sl; -- Freerunning clock needed to drive reset logic
166 
167  cPllRefClkIn : in sl := '0'; -- Drives CPLL if used
169 
170  qPllRefClkIn : in sl := '0'; -- Signals from QPLL if used
171  qPllClkIn : in sl := '0';
172  qPllLockIn : in sl := '0';
173  qPllRefClkLostIn : in sl := '0';
175  gtRxRefClkBufg : in sl := '0'; -- In fixed latency mode, need BUF'd version of gt rx
176  -- reference clock to check if recovered clock is stable
177 
178  -- Serial IO
179  gtTxP : out sl;
180  gtTxN : out sl;
181  gtRxP : in sl;
182  gtRxN : in sl;
183 
184  -- Rx Clock related signals
190  rxMmcmLockedIn : in sl := '1';
191 
192  -- Rx User Reset Signals
195 
196  -- Manual Comma Align signals
197  rxDataValidIn : in sl := '1';
198  rxSlideIn : in sl := '0';
199 
200  -- Rx Data and decode signals
201  rxDataOut : out slv(RX_EXT_DATA_WIDTH_G-1 downto 0);
202  rxCharIsKOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0); -- If WIDTH not mult of 8 then
203  rxDecErrOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0); -- not using 8b10b and these dont matter
204  rxDispErrOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
205  rxPolarityIn : in sl := '0';
206  rxBufStatusOut : out slv(2 downto 0);
207 
208  -- Rx Channel Bonding
209  rxChBondLevelIn : in slv(2 downto 0) := "000";
210  rxChBondIn : in slv(4 downto 0) := "00000";
211  rxChBondOut : out slv(4 downto 0);
212 
213  -- Tx Clock Related Signals
217  txUserRdyOut : out sl; -- txOutClk is valid
219  txMmcmLockedIn : in sl := '1';
220 
221  -- Tx User Reset signals
224 
225  -- Tx Data
226  txDataIn : in slv(TX_EXT_DATA_WIDTH_G-1 downto 0);
227  txCharIsKIn : in slv((TX_EXT_DATA_WIDTH_G/8)-1 downto 0);
228  txBufStatusOut : out slv(1 downto 0);
229  txPolarityIn : in sl := '0';
230  -- Debug Interface
231  txPowerDown : in slv(1 downto 0) := "00";
232  rxPowerDown : in slv(1 downto 0) := "00";
233  loopbackIn : in slv(2 downto 0) := "000";
234  txPreCursor : in slv(4 downto 0) := (others => '0');
235  txPostCursor : in slv(4 downto 0) := (others => '0');
236  txDiffCtrl : in slv(3 downto 0) := "1000";
237  -- DRP Interface (drpClk Domain)
238  drpClk : in sl := '0';
239  drpRdy : out sl;
240  drpEn : in sl := '0';
241  drpWe : in sl := '0';
242  drpAddr : in slv(8 downto 0) := "000000000";
243  drpDi : in slv(15 downto 0) := X"0000";
244  drpDo : out slv(15 downto 0));
245 
246 end entity Gtx7Core;
247 
248 architecture rtl of Gtx7Core is
249 
250  function getOutClkSelVal (OUT_CLK_SRC : string) return bit_vector is
251  begin
252  if (OUT_CLK_SRC = "PLLREFCLK") then
253  return "011";
254  elsif (OUT_CLK_SRC = "OUTCLKPMA") then
255  return "010";
256  elsif (OUT_CLK_SRC = "PLLDV2CLK") then
257  return "100";
258  else
259  return "000";
260  end if;
261  end function getOutClkSelVal;
262 
263  function getDataWidth (USE_8B10B : boolean; EXT_DATA_WIDTH : integer) return integer is
264  begin
265  if (USE_8B10B = false) then
266  return EXT_DATA_WIDTH;
267  else
268  return (EXT_DATA_WIDTH / 8) * 10;
269  end if;
270  end function;
271 
272  --------------------------------------------------------------------------------------------------
273  -- Constants
274  --------------------------------------------------------------------------------------------------
275  constant RX_SYSCLK_SEL_C : slv := ite(RX_PLL_G = "CPLL", "00", "11");
276  constant TX_SYSCLK_SEL_C : slv := ite(TX_PLL_G = "CPLL", "00", "11");
277 
278  constant RX_XCLK_SEL_C : string := ite(RX_BUF_EN_G, "RXREC", "RXUSR");
279  constant TX_XCLK_SEL_C : string := ite(TX_BUF_EN_G, "TXOUT", "TXUSR");
280 
281  constant RX_OUTCLK_SEL_C : bit_vector := getOutClkSelVal(RX_OUTCLK_SRC_G);
282  constant TX_OUTCLK_SEL_C : bit_vector := getOutClkSelVal(TX_OUTCLK_SRC_G);
283 
284  constant RX_DATA_WIDTH_C : integer := getDataWidth(RX_8B10B_EN_G, RX_EXT_DATA_WIDTH_G);
285  constant TX_DATA_WIDTH_C : integer := getDataWidth(TX_8B10B_EN_G, TX_EXT_DATA_WIDTH_G);
286 
287  constant WAIT_TIME_CDRLOCK_C : integer := ite(SIM_GTRESET_SPEEDUP_G = "TRUE", 16, 65520);
288 
289  constant RX_INT_DATAWIDTH_C : integer := (RX_INT_DATA_WIDTH_G/32);
290  constant TX_INT_DATAWIDTH_C : integer := (TX_INT_DATA_WIDTH_G/32);
291 
292  constant RXLPMEN_C : sl := ite(RX_EQUALIZER_G = "LPM", '1', '0');
293 
294  --------------------------------------------------------------------------------------------------
295  -- Signals
296  --------------------------------------------------------------------------------------------------
297 
298  -- CPll Reset
299  signal cPllLock : sl;
300  signal cPllReset : sl;
301  signal cPllRefClkLost : sl;
302 
303  -- Gtx CPLL Input Clocks
304  signal gtGRefClk : sl;
305  signal gtNorthRefClk0 : sl;
306  signal gtNorthRefClk1 : sl;
307  signal gtRefClk0 : sl;
308  signal gtRefClk1 : sl;
309  signal gtSouthRefClk0 : sl;
310  signal gtSouthRefClk1 : sl;
311 
312  ----------------------------
313  -- Rx Signals
314  signal rxOutClk : sl;
315  signal rxOutClkBufg : sl;
316 
317  signal rxPllLock : sl;
318  signal rxPllReset : sl;
319  signal rxPllRefClkLost : sl;
320 
321  signal gtRxReset : sl; -- GT GTRXRESET
322  signal rxResetDone : sl; -- GT RXRESETDONE
323  signal rxUserRdyInt : sl; -- GT RXUSERRDY
324 
325  signal rxUserResetInt : sl;
326  signal rxFsmResetDone : sl;
327  signal rxRstTxUserRdy : sl; --
328 
329  signal rxRecClkStable : sl;
330  signal rxRecClkMonitorRestart : sl;
331  signal rxCdrLockCnt : integer range 0 to WAIT_TIME_CDRLOCK_C := 0;
332 
333  signal rxRunPhAlignment : sl;
334  signal rxPhaseAlignmentDone : sl;
335  signal rxAlignReset : sl := '0';
336  signal rxDlySReset : sl; -- GT RXDLYSRESET
337  signal rxDlySResetDone : sl; -- GT RXDLYSRESETDONE
338  signal rxPhAlignDone : sl; -- GT RXPHALIGNDONE
339  signal rxSlide : sl; -- GT RXSLIDE
340  signal rxCdrLock : sl; -- GT RXCDRLOCK
341 
342  signal rxDfeAgcHold : sl;
343  signal rxDfeLfHold : sl;
344  signal rxLpmLfHold : sl;
345  signal rxLpmHfHold : sl;
346 
347  -- Rx Data
348  signal rxDataInt : slv(RX_EXT_DATA_WIDTH_G-1 downto 0);
349  signal rxDataFull : slv(63 downto 0); -- GT RXDATA
350  signal rxCharIsKFull : slv(7 downto 0); -- GT RXCHARISK
351  signal rxDispErrFull : slv(7 downto 0); -- GT RXDISPERR
352  signal rxDecErrFull : slv(7 downto 0);
353 
354 
355  ----------------------------
356  -- Tx Signals
357  signal txPllLock : sl;
358  signal txPllReset : sl;
359  signal txPllRefClkLost : sl;
360 
361  signal gtTxReset : sl; -- GT GTTXRESET
362  signal txResetDone : sl; -- GT TXRESETDONE
363  signal txUserRdyInt : sl; -- GT TXUSERRDY
364 
365  signal txFsmResetDone : sl;
366 
367  signal txResetPhAlignment : sl;
368  signal txRunPhAlignment : sl;
369  signal txPhaseAlignmentDone : sl;
370  signal txPhAlignEn : sl; -- GT TXPHALIGNEN
371  signal txDlySReset : sl; -- GT TXDLYSRESET
372  signal txDlySResetDone : sl; -- GT TXDLYSRESETDONE
373  signal txPhInit : sl; -- GT TXPHINIT
374  signal txPhInitDone : sl; -- GT TXPHINITDONE
375  signal txPhAlign : sl; -- GT TXPHALIGN
376  signal txPhAlignDone : sl; -- GT TXPHALIGNDONE
377  signal txDlyEn : sl; -- GT TXDLYEN
378 
379  -- Tx Data Signals
380  signal txDataFull : slv(63 downto 0) := (others => '0');
381  signal txCharIsKFull : slv(7 downto 0) := (others => '0');
382  signal txCharDispMode : slv(7 downto 0) := (others => '0');
383  signal txCharDispVal : slv(7 downto 0) := (others => '0');
384 
385 -- attribute KEEP_HIERARCHY : string;
386 -- attribute KEEP_HIERARCHY of
387 -- Gtx7RxRst_Inst,
388 -- RstSync_RxResetDone,
389 -- Gtx7AutoPhaseAligner_Rx,
390 -- Gtx7RxFixedLatPhaseAligner_Inst,
391 -- Gtx7TxRst_Inst,
392 -- RstSync_Tx,
393 -- PhaseAlign_Tx,
394 -- Gtx7TxManualPhaseAligner_1 : label is "TRUE";
395 
396 begin
397 
398  rxOutClkOut <= rxOutClkBufg;
399 
400  cPllLockOut <= cPllLock;
401 
402  --------------------------------------------------------------------------------------------------
403  -- PLL Resets. Driven from TX Rst if both use same PLL
404  --------------------------------------------------------------------------------------------------
405  cPllReset <= txPllReset when (TX_PLL_G = "CPLL") else rxPllReset when (RX_PLL_G = "CPLL") else '0';
406  qPllResetOut <= txPllReset when (TX_PLL_G = "QPLL") else rxPllReset when (RX_PLL_G = "QPLL") else '0';
407 
408  --------------------------------------------------------------------------------------------------
409  -- CPLL clock select. Only ever use 1 clock to drive cpll. Never switch clocks.
410  -- This may be unnecessary. Vivado does this for you now.
411  --------------------------------------------------------------------------------------------------
412  gtRefClk0 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "001" else '0';
413  gtRefClk1 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "010" else '0';
414  gtNorthRefClk0 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "011" else '0';
415  gtNorthRefClk1 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "100" else '0';
416  gtSouthRefClk0 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "101" else '0';
417  gtSouthRefClk1 <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "110" else '0';
418  gtGRefClk <= cPllRefClkIn when CPLL_REFCLK_SEL_G = "111" else '0';
419 
420  --------------------------------------------------------------------------------------------------
421  -- Rx Logic
422  --------------------------------------------------------------------------------------------------
423  -- Fit GTX port sizes to selected rx external interface size
424  rxDataOut <= rxDataInt;
425  RX_DATA_8B10B_GLUE : process (rxCharIsKFull, rxDataFull, rxDecErrFull,
426  rxDispErrFull) is
427  begin
428  if (RX_8B10B_EN_G) then
429  rxDataInt <= rxDataFull(RX_EXT_DATA_WIDTH_G-1 downto 0);
430  rxCharIsKOut <= rxCharIsKFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
431  rxDispErrOut <= rxDispErrFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
432  rxDecErrOut <= rxDecErrFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
433  else
434  for i in RX_EXT_DATA_WIDTH_G-1 downto 0 loop
435  if ((i-9) mod 10 = 0) then
436  rxDataInt(i) <= rxDispErrFull((i-9)/10);
437  elsif ((i-8) mod 10 = 0) then
438  rxDataInt(i) <= rxCharIsKFull((i-8)/10);
439  else
440  rxDataInt(i) <= rxDataFull(i-2*(i/10));
441  end if;
442  end loop;
443  rxCharIsKOut <= (others => '0');
444  rxDispErrOut <= (others => '0');
445  rxDecErrOut <= (others => '0');
446  end if;
447  end process RX_DATA_8B10B_GLUE;
448 
449  -- Mux proper PLL Lock signal onto rxPllLock
450  rxPllLock <= cPllLock when (RX_PLL_G = "CPLL") else qPllLockIn when (RX_PLL_G = "QPLL") else '0';
451 
452  -- Mux proper PLL RefClkLost signal on rxPllRefClkLost
453  rxPllRefClkLost <= cPllRefClkLost when (RX_PLL_G = "CPLL") else qPllRefClkLostIn when (RX_PLL_G = "QPLL") else '0';
454 
455  rxUserResetInt <= rxUserResetIn or rxAlignReset;
456  rxRstTxUserRdy <= txUserRdyInt when RX_USRCLK_SRC_G = "TXOUTCLK" else '1';
457 
458  -- Drive outputs that have internal use
459  rxUserRdyOut <= rxUserRdyInt;
460 
461  --------------------------------------------------------------------------------------------------
462  -- Rx Reset Module
463  -- 1. Reset RX PLL,
464  -- 2. Wait PLL Lock
465  -- 3. Wait recclk_stable
466  -- 4. Reset MMCM
467  -- 5. Wait MMCM Lock
468  -- 6. Assert gtRxUserRdy (gtRxUsrClk now usable)
469  -- 7. Wait gtRxResetDone
470  -- 8. Do phase alignment if necessary
471  -- 9. Wait DATA_VALID (aligned) - 100 us
472  --10. Wait 1 us, Set rxFsmResetDone.
473  --------------------------------------------------------------------------------------------------
474  Gtx7RxRst_Inst : entity work.Gtx7RxRst
475  generic map (
476  TPD_G => TPD_G,
477  EXAMPLE_SIMULATION => 0,
478  GT_TYPE => "GTX",
480  STABLE_CLOCK_PERIOD => natural(ROUND(abs(STABLE_CLOCK_PERIOD_G / 1.0E-9))),
482  port map (
485  SOFT_RESET => rxUserResetInt,
486  PLLREFCLKLOST => rxPllRefClkLost,
487  PLLLOCK => rxPllLock,
488  RXRESETDONE => rxResetDone, -- From GT
490  RECCLK_STABLE => rxRecClkStable, -- Asserted after 50,000 UI as per DS183
491  RECCLK_MONITOR_RESTART => rxRecClkMonitorRestart,
492  DATA_VALID => rxDataValidIn, -- From external decoder if used
493  TXUSERRDY => rxRstTxUserRdy, -- Need to know when txUserRdy
494  GTRXRESET => gtRxReset, -- To GT
496  PLL_RESET => rxPllReset,
497  RX_FSM_RESET_DONE => rxFsmResetDone,
498  RXUSERRDY => rxUserRdyInt, -- To GT
499  RUN_PHALIGNMENT => rxRunPhAlignment, -- To Phase Alignment module
500  PHALIGNMENT_DONE => rxPhaseAlignmentDone, -- From Phase Alignment module
501  RESET_PHALIGNMENT => open, -- For manual phase align
502  RXDFEAGCHOLD => rxDfeAgcHold, -- Explore using these later
503  RXDFELFHOLD => rxDfeLfHold,
504  RXLPMLFHOLD => rxLpmLfHold,
505  RXLPMHFHOLD => rxLpmHfHold,
506  RETRY_COUNTER => open);
507 
508  --------------------------------------------------------------------------------------------------
509  -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic.
510  --------------------------------------------------------------------------------------------------
511  RstSync_RxResetDone : entity work.RstSync
512  generic map (
513  TPD_G => TPD_G,
514  IN_POLARITY_G => '0',
515  OUT_POLARITY_G => '0')
516  port map (
517  clk => rxUsrClkIn,
518  asyncRst => rxFsmResetDone,
519  syncRst => rxResetDoneOut); -- Output
520 
521  -------------------------------------------------------------------------------------------------
522  -- Recovered clock monitor
523  -------------------------------------------------------------------------------------------------
524  BUFG_RX_OUT_CLK : BUFG
525  port map (
526  I => rxOutClk,
527  O => rxOutClkBufg);
528 
529 -- GTX7_RX_REC_CLK_MONITOR_GEN : if (RX_BUF_EN_G = false) generate
530 -- Gtx7RecClkMonitor_Inst : entity work.Gtx7RecClkMonitor
531 -- generic map (
532 -- COUNTER_UPPER_VALUE => 15,
533 -- GCLK_COUNTER_UPPER_VALUE => 15,
534 -- CLOCK_PULSES => 164,
535 -- EXAMPLE_SIMULATION => ite(SIMULATION_G, 1, 0))
536 -- port map (
537 -- GT_RST => gtRxReset,
538 -- REF_CLK => gtRxRefClkBufg,
539 -- RX_REC_CLK0 => rxOutClkBufg, -- Only works if rxOutClkOut fed back on rxUsrClkIn through bufg
540 -- SYSTEM_CLK => stableClkIn,
541 -- PLL_LK_DET => rxPllLock,
542 -- RECCLK_STABLE => rxRecClkStable,
543 -- EXEC_RESTART => rxRecClkMonitorRestart);
544 -- end generate;
545 
546 -- RX_NO_RECCLK_MON_GEN : if (RX_BUF_EN_G) generate
547  rxRecClkMonitorRestart <= '0';
548  process(stableClkIn)
549  begin
550  if rising_edge(stableClkIn) then
551  if gtRxReset = '1' then
552  rxRecClkStable <= '0' after TPD_G;
553  rxCdrLockCnt <= 0 after TPD_G;
554  elsif rxRecClkStable = '0' then
555  if rxCdrLockCnt = WAIT_TIME_CDRLOCK_C then
556  rxRecClkStable <= '1' after TPD_G;
557  rxCdrLockCnt <= rxCdrLockCnt after TPD_G;
558  else
559  rxCdrLockCnt <= rxCdrLockCnt + 1 after TPD_G;
560  end if;
561  end if;
562  end if;
563  end process;
564 -- end generate RX_NO_RECCLK_MON_GEN;
565 
566  -------------------------------------------------------------------------------------------------
567  -- Phase alignment needed when rx buffer is disabled
568  -- Use normal Auto Phase Align module when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=false
569  -- Use special fixed latency aligner when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=true
570  -------------------------------------------------------------------------------------------------
571  RX_AUTO_ALIGN_GEN : if (RX_BUF_EN_G = false and RX_ALIGN_MODE_G = "GT") generate
572  Gtx7AutoPhaseAligner_Rx : entity work.Gtx7AutoPhaseAligner
573  generic map (
574  GT_TYPE => "GTX")
575  port map (
577  RUN_PHALIGNMENT => rxRunPhAlignment, -- From RxRst
578  PHASE_ALIGNMENT_DONE => rxPhaseAlignmentDone, -- To RxRst
579  PHALIGNDONE => rxPhAlignDone, -- From gt
580  DLYSRESET => rxDlySReset, -- To gt
581  DLYSRESETDONE => rxDlySResetDone, -- From gt
582  RECCLKSTABLE => rxRecClkStable);
583  rxSlide <= rxSlideIn; -- User controlled rxSlide
584  rxAlignReset <= '0';
585  end generate;
586 
587  RX_FIX_LAT_ALIGN_GEN : if (RX_BUF_EN_G = false and RX_ALIGN_MODE_G = "FIXED_LAT") generate
588  Gtx7RxFixedLatPhaseAligner_Inst : entity work.Gtx7RxFixedLatPhaseAligner
589  generic map (
590  TPD_G => TPD_G,
597  port map (
598  rxUsrClk => rxUsrClkIn,
599  rxRunPhAlignment => rxRunPhAlignment,
600  rxData => rxDataInt,
601  rxReset => rxAlignReset,
602  rxSlide => rxSlide,
603  rxPhaseAlignmentDone => rxPhaseAlignmentDone);
604  rxDlySReset <= '0';
605  end generate;
606 
607  RX_NO_ALIGN_GEN : if (RX_BUF_EN_G = true or RX_ALIGN_MODE_G = "NONE") generate
608  rxPhaseAlignmentDone <= '1';
609  rxSlide <= rxSlideIn;
610  rxDlySReset <= '0';
611  rxAlignReset <= '0';
612  end generate;
613 
614  --------------------------------------------------------------------------------------------------
615  -- Tx Logic
616  --------------------------------------------------------------------------------------------------
617 
618  TX_DATA_8B10B_GLUE : process (txCharIsKIn, txDataIn) is
619  begin
620  if (TX_8B10B_EN_G) then
621  txDataFull <= (others => '0');
622  txDataFull(TX_EXT_DATA_WIDTH_G-1 downto 0) <= txDataIn;
623  txCharIsKFull <= (others => '0');
624  txCharIsKFull((TX_EXT_DATA_WIDTH_G/8)-1 downto 0) <= txCharIsKIn;
625  txCharDispMode <= (others => '0');
626  txCharDispVal <= (others => '0');
627  else
628  for i in TX_EXT_DATA_WIDTH_G-1 downto 0 loop
629  if ((i-9) mod 10 = 0) then
630  txCharDispMode((i-9)/10) <= txDataIn(i);
631  elsif ((i-8) mod 10 = 0) then
632  txCharDispVal((i-8)/10) <= txDataIn(i);
633  else
634  txDataFull(i-2*(i/10)) <= txDataIn(i);
635  end if;
636  end loop;
637  txCharIsKFull <= (others => '0');
638  end if;
639  end process TX_DATA_8B10B_GLUE;
640 
641  -- Mux proper PLL Lock signal onto txPllLock
642  txPllLock <= cPllLock when (TX_PLL_G = "CPLL") else qPllLockIn when (TX_PLL_G = "QPLL") else '0';
643 
644  -- Mux proper PLL RefClkLost signal on txPllRefClkLost
645  txPllRefClkLost <= cPllRefClkLost when (TX_PLL_G = "CPLL") else qPllRefClkLostIn when (TX_PLL_G = "QPLL") else '0';
646 
647  -- Drive outputs that have internal use
648  txUserRdyOut <= txUserRdyInt;
649 
650  --------------------------------------------------------------------------------------------------
651  -- Tx Reset Module
652  --------------------------------------------------------------------------------------------------
653  Gtx7TxRst_Inst : entity work.Gtx7TxRst
654  generic map (
655  TPD_G => TPD_G,
656  GT_TYPE => "GTX",
657  STABLE_CLOCK_PERIOD => natural(ROUND(abs(STABLE_CLOCK_PERIOD_G / 1.0E-9))),
659  port map (
663  PLLREFCLKLOST => txPllRefClkLost,
664  PLLLOCK => txPllLock,
665  TXRESETDONE => txResetDone, -- From GT
667  GTTXRESET => gtTxReset,
669  PLL_RESET => txPllReset,
670  TX_FSM_RESET_DONE => txFsmResetDone,
671  TXUSERRDY => txUserRdyInt,
672  RUN_PHALIGNMENT => txRunPhAlignment,
673  RESET_PHALIGNMENT => txResetPhAlignment, -- Used for manual alignment
674  PHALIGNMENT_DONE => txPhaseAlignmentDone,
675  RETRY_COUNTER => open); -- Might be interesting to look at
676 
677  --------------------------------------------------------------------------------------------------
678  -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic.
679  --------------------------------------------------------------------------------------------------
680  RstSync_Tx : entity work.RstSync
681  generic map (
682  TPD_G => TPD_G,
683  IN_POLARITY_G => '0',
684  OUT_POLARITY_G => '0')
685  port map (
686  clk => txUsrClkIn,
687  asyncRst => txFsmResetDone,
688  syncRst => txResetDoneOut); -- Output
689 
690  -------------------------------------------------------------------------------------------------
691  -- Tx Phase aligner
692  -- Only used when bypassing buffer
693  -------------------------------------------------------------------------------------------------
694  TxAutoPhaseAlignGen : if (TX_BUF_EN_G = false and TX_PHASE_ALIGN_G = "AUTO") generate
695 
696  PhaseAlign_Tx : entity work.Gtx7AutoPhaseAligner
697  generic map (
698  GT_TYPE => "GTX")
699  port map (
701  RUN_PHALIGNMENT => txRunPhAlignment,
702  PHASE_ALIGNMENT_DONE => txPhaseAlignmentDone,
703  PHALIGNDONE => txPhAlignDone,
704  DLYSRESET => txDlySReset,
705  DLYSRESETDONE => txDlySResetDone,
706  RECCLKSTABLE => '1');
707  txPhAlignEn <= '0'; -- Auto Mode
708  txPhInit <= '0';
709  txPhAlign <= '0';
710  txDlyEn <= '0';
711  end generate TxAutoPhaseAlignGen;
712 
713  TxManualPhaseAlignGen : if (TX_BUF_EN_G = false and TX_PHASE_ALIGN_G = "MANUAL") generate
714  Gtx7TxManualPhaseAligner_1 : entity work.Gtx7TxManualPhaseAligner
715  generic map (
716  TPD_G => TPD_G)
717  port map (
719  resetPhAlignment => txResetPhAlignment,
720  runPhAlignment => txRunPhAlignment,
721  phaseAlignmentDone => txPhaseAlignmentDone,
722  gtTxDlySReset => txDlySReset,
723  gtTxDlySResetDone => txDlySResetDone,
724  gtTxPhInit => txPhInit,
725  gtTxPhInitDone => txPhInitDone,
726  gtTxPhAlign => txPhAlign,
727  gtTxPhAlignDone => txPhAlignDone,
728  gtTxDlyEn => txDlyEn);
729  txPhAlignEn <= '1';
730  end generate TxManualPhaseAlignGen;
731 
732  NoTxPhaseAlignGen : if (TX_BUF_EN_G = true or TX_PHASE_ALIGN_G = "NONE") generate
733  txPhaseAlignmentDone <= '1';
734  txDlySReset <= '0';
735  txPhInit <= '0';
736  txPhAlign <= '0';
737  txDlyEn <= '0';
738  txPhAlignEn <= '0';
739  end generate NoTxPhaseAlignGen;
740 
741  --------------------------------------------------------------------------------------------------
742  -- GTX Instantiation
743  --------------------------------------------------------------------------------------------------
744  gtxe2_i : GTXE2_CHANNEL
745  generic map
746  (
747 
748  --_______________________ Simulation-Only Attributes ___________________
749 
750  SIM_RECEIVER_DETECT_PASS => ("TRUE"),
751  SIM_RESET_SPEEDUP => (SIM_GTRESET_SPEEDUP_G),
752  SIM_TX_EIDLE_DRIVE_LEVEL => ("X"),
753  SIM_CPLLREFCLK_SEL => (CPLL_REFCLK_SEL_G), --("001"), -- GTPREFCLK0
754  SIM_VERSION => (SIM_VERSION_G),
755 
756 
757  ------------------RX Byte and Word Alignment Attributes---------------
758  ALIGN_COMMA_DOUBLE => ALIGN_COMMA_DOUBLE_G,
759  ALIGN_COMMA_ENABLE => ALIGN_COMMA_ENABLE_G,
760  ALIGN_COMMA_WORD => ALIGN_COMMA_WORD_G,
761  ALIGN_MCOMMA_DET => ALIGN_MCOMMA_DET_G,
762  ALIGN_MCOMMA_VALUE => ALIGN_MCOMMA_VALUE_G,
763  ALIGN_PCOMMA_DET => ALIGN_PCOMMA_DET_G,
764  ALIGN_PCOMMA_VALUE => ALIGN_PCOMMA_VALUE_G,
765  SHOW_REALIGN_COMMA => SHOW_REALIGN_COMMA_G,
766  RXSLIDE_AUTO_WAIT => 7,
767  RXSLIDE_MODE => RXSLIDE_MODE_G,
768  RX_SIG_VALID_DLY => 10,
769 
770  ------------------RX 8B/10B Decoder Attributes---------------
771  -- These don't really matter since RX 8B10B is disabled
772  RX_DISPERR_SEQ_MATCH => RX_DISPERR_SEQ_MATCH_G,
773  DEC_MCOMMA_DETECT => DEC_MCOMMA_DETECT_G,
774  DEC_PCOMMA_DETECT => DEC_PCOMMA_DETECT_G,
775  DEC_VALID_COMMA_ONLY => DEC_VALID_COMMA_ONLY_G,
776 
777  ------------------------RX Clock Correction Attributes----------------------
778  CBCC_DATA_SOURCE_SEL => CBCC_DATA_SOURCE_SEL_G,
779  CLK_COR_SEQ_2_USE => CLK_COR_SEQ_2_USE_G,
780  CLK_COR_KEEP_IDLE => CLK_COR_KEEP_IDLE_G,
781  CLK_COR_MAX_LAT => CLK_COR_MAX_LAT_G,
782  CLK_COR_MIN_LAT => CLK_COR_MIN_LAT_G,
783  CLK_COR_PRECEDENCE => CLK_COR_PRECEDENCE_G,
784  CLK_COR_REPEAT_WAIT => CLK_COR_REPEAT_WAIT_G,
785  CLK_COR_SEQ_LEN => CLK_COR_SEQ_LEN_G,
786  CLK_COR_SEQ_1_ENABLE => CLK_COR_SEQ_1_ENABLE_G,
787  CLK_COR_SEQ_1_1 => CLK_COR_SEQ_1_1_G, -- UG476 pg 249
788  CLK_COR_SEQ_1_2 => CLK_COR_SEQ_1_2_G,
789  CLK_COR_SEQ_1_3 => CLK_COR_SEQ_1_3_G,
790  CLK_COR_SEQ_1_4 => CLK_COR_SEQ_1_4_G,
791  CLK_CORRECT_USE => CLK_CORRECT_USE_G,
792  CLK_COR_SEQ_2_ENABLE => CLK_COR_SEQ_2_ENABLE_G,
793  CLK_COR_SEQ_2_1 => CLK_COR_SEQ_2_1_G, -- UG476 pg 249
794  CLK_COR_SEQ_2_2 => CLK_COR_SEQ_2_2_G,
795  CLK_COR_SEQ_2_3 => CLK_COR_SEQ_2_3_G,
796  CLK_COR_SEQ_2_4 => CLK_COR_SEQ_2_4_G,
797 
798  ------------------------RX Channel Bonding Attributes----------------------
799  CHAN_BOND_KEEP_ALIGN => CHAN_BOND_KEEP_ALIGN_G,
800  CHAN_BOND_MAX_SKEW => CHAN_BOND_MAX_SKEW_G,
801  CHAN_BOND_SEQ_LEN => CHAN_BOND_SEQ_LEN_G,
802  CHAN_BOND_SEQ_1_1 => CHAN_BOND_SEQ_1_1_G,
803  CHAN_BOND_SEQ_1_2 => CHAN_BOND_SEQ_1_2_G,
804  CHAN_BOND_SEQ_1_3 => CHAN_BOND_SEQ_1_3_G,
805  CHAN_BOND_SEQ_1_4 => CHAN_BOND_SEQ_1_4_G,
806  CHAN_BOND_SEQ_1_ENABLE => CHAN_BOND_SEQ_1_ENABLE_G,
807  CHAN_BOND_SEQ_2_1 => CHAN_BOND_SEQ_2_1_G,
808  CHAN_BOND_SEQ_2_2 => CHAN_BOND_SEQ_2_2_G,
809  CHAN_BOND_SEQ_2_3 => CHAN_BOND_SEQ_2_3_G,
810  CHAN_BOND_SEQ_2_4 => CHAN_BOND_SEQ_2_4_G,
811  CHAN_BOND_SEQ_2_ENABLE => CHAN_BOND_SEQ_2_ENABLE_G,
812  CHAN_BOND_SEQ_2_USE => CHAN_BOND_SEQ_2_USE_G,
813  FTS_DESKEW_SEQ_ENABLE => FTS_DESKEW_SEQ_ENABLE_G,
814  FTS_LANE_DESKEW_CFG => FTS_LANE_DESKEW_CFG_G,
815  FTS_LANE_DESKEW_EN => FTS_LANE_DESKEW_EN_G,
816 
817  ---------------------------RX Margin Analysis Attributes----------------------------
818  ES_CONTROL => ("000000"),
819  ES_ERRDET_EN => ("FALSE"),
820  ES_EYE_SCAN_EN => ("TRUE"),
821  ES_HORZ_OFFSET => (x"000"),
822  ES_PMA_CFG => ("0000000000"),
823  ES_PRESCALE => ("00000"),
824  ES_QUALIFIER => (x"00000000000000000000"),
825  ES_QUAL_MASK => (x"00000000000000000000"),
826  ES_SDATA_MASK => (x"00000000000000000000"),
827  ES_VERT_OFFSET => ("000000000"),
828 
829  -------------------------FPGA RX Interface Attributes-------------------------
830  RX_DATA_WIDTH => (RX_DATA_WIDTH_C),
831 
832  ---------------------------PMA Attributes----------------------------
833  OUTREFCLK_SEL_INV => ("11"), -- ??
834  PMA_RSV => PMA_RSV_G, --
835  PMA_RSV2 => (x"2070"),
836  PMA_RSV3 => ("00"),
837  PMA_RSV4 => (x"00000000"),
838  RX_BIAS_CFG => ("000000000100"),
839  DMONITOR_CFG => (x"000A00"),
840  RX_CM_SEL => ("11"),
841  RX_CM_TRIM => RX_CM_TRIM_G,
842  RX_DEBUG_CFG => ("000000000000"),
843  RX_OS_CFG => RX_OS_CFG_G,
844  TERM_RCAL_CFG => ("10000"),
845  TERM_RCAL_OVRD => ('0'),
846  TST_RSV => (x"00000000"),
847  RX_CLK25_DIV => RX_CLK25_DIV_G, --(5),
848  TX_CLK25_DIV => TX_CLK25_DIV_G, --(5),
849  UCODEER_CLR => ('0'),
850 
851  ---------------------------PCI Express Attributes----------------------------
852  PCS_PCIE_EN => ("FALSE"),
853 
854  ---------------------------PCS Attributes----------------------------
855  PCS_RSVD_ATTR => ite(RX_ALIGN_MODE_G = "FIXED_LAT", X"000000000002", X"000000000000"), --UG476 pg 241
856 
857  -------------RX Buffer Attributes------------
858  RXBUF_ADDR_MODE => RX_BUF_ADDR_MODE_G,
859  RXBUF_EIDLE_HI_CNT => ("1000"),
860  RXBUF_EIDLE_LO_CNT => ("0000"),
861  RXBUF_EN => toString(RX_BUF_EN_G),
862  RX_BUFFER_CFG => ("000000"),
863  RXBUF_RESET_ON_CB_CHANGE => ("TRUE"),
864  RXBUF_RESET_ON_COMMAALIGN => ("FALSE"),
865  RXBUF_RESET_ON_EIDLE => ("FALSE"),
866  RXBUF_RESET_ON_RATE_CHANGE => ("TRUE"),
867  RXBUFRESET_TIME => ("00001"),
868  RXBUF_THRESH_OVFLW => (61),
869  RXBUF_THRESH_OVRD => ("FALSE"),
870  RXBUF_THRESH_UNDFLW => (4),
871  RXDLY_CFG => (x"001F"),
872  RXDLY_LCFG => (x"030"),
873  RXDLY_TAP_CFG => (x"0000"),
874  RXPH_CFG => (x"000000"),
875  RXPHDLY_CFG => (x"084020"),
876  RXPH_MONITOR_SEL => ("00000"),
877  RX_XCLK_SEL => RX_XCLK_SEL_C,
878  RX_DDI_SEL => ("000000"),
879  RX_DEFER_RESET_BUF_EN => ("TRUE"),
880 
881  -----------------------CDR Attributes-------------------------
882  RXCDR_CFG => RXCDR_CFG_G,
883  RXCDR_FR_RESET_ON_EIDLE => ('0'),
884  RXCDR_HOLD_DURING_EIDLE => ('0'),
885  RXCDR_PH_RESET_ON_EIDLE => ('0'),
886  RXCDR_LOCK_CFG => ("010101"),
887 
888  -------------------RX Initialization and Reset Attributes-------------------
889  RXCDRFREQRESET_TIME => ("00001"),
890  RXCDRPHRESET_TIME => ("00001"),
891  RXISCANRESET_TIME => ("00001"),
892  RXPCSRESET_TIME => ("00001"),
893  RXPMARESET_TIME => ("00011"), -- ! Check this
894 
895  -------------------RX OOB Signaling Attributes-------------------
896  RXOOB_CFG => ("0000110"),
897 
898  -------------------------RX Gearbox Attributes---------------------------
899  RXGEARBOX_EN => ("FALSE"),
900  GEARBOX_MODE => ("000"),
901 
902  -------------------------PRBS Detection Attribute-----------------------
903  RXPRBS_ERR_LOOPBACK => ('0'),
904 
905  -------------Power-Down Attributes----------
906  PD_TRANS_TIME_FROM_P2 => (x"03c"),
907  PD_TRANS_TIME_NONE_P2 => (x"3c"),
908  PD_TRANS_TIME_TO_P2 => (x"64"),
909 
910  -------------RX OOB Signaling Attributes----------
911  SAS_MAX_COM => (64),
912  SAS_MIN_COM => (36),
913  SATA_BURST_SEQ_LEN => ("1111"),
914  SATA_BURST_VAL => ("100"),
915  SATA_EIDLE_VAL => ("100"),
916  SATA_MAX_BURST => (8),
917  SATA_MAX_INIT => (21),
918  SATA_MAX_WAKE => (7),
919  SATA_MIN_BURST => (4),
920  SATA_MIN_INIT => (12),
921  SATA_MIN_WAKE => (4),
922 
923  -------------RX Fabric Clock Output Control Attributes----------
924  TRANS_TIME_RATE => (x"0E"),
925 
926  --------------TX Buffer Attributes----------------
927  TXBUF_EN => toString(TX_BUF_EN_G),
928  TXBUF_RESET_ON_RATE_CHANGE => ("TRUE"),
929  TXDLY_CFG => (x"001F"),
930  TXDLY_LCFG => (x"030"),
931  TXDLY_TAP_CFG => (x"0000"),
932  TXPH_CFG => (x"0780"),
933  TXPHDLY_CFG => (x"084020"),
934  TXPH_MONITOR_SEL => ("00000"),
935  TX_XCLK_SEL => TX_XCLK_SEL_C,
936 
937  -------------------------FPGA TX Interface Attributes-------------------------
938  TX_DATA_WIDTH => (TX_DATA_WIDTH_C),
939 
940  -------------------------TX Configurable Driver Attributes-------------------------
941  TX_DEEMPH0 => ("00000"),
942  TX_DEEMPH1 => ("00000"),
943  TX_EIDLE_ASSERT_DELAY => ("110"),
944  TX_EIDLE_DEASSERT_DELAY => ("100"),
945  TX_LOOPBACK_DRIVE_HIZ => ("FALSE"),
946  TX_MAINCURSOR_SEL => ('0'),
947  TX_DRIVE_MODE => ("DIRECT"),
948  TX_MARGIN_FULL_0 => ("1001110"),
949  TX_MARGIN_FULL_1 => ("1001001"),
950  TX_MARGIN_FULL_2 => ("1000101"),
951  TX_MARGIN_FULL_3 => ("1000010"),
952  TX_MARGIN_FULL_4 => ("1000000"),
953  TX_MARGIN_LOW_0 => ("1000110"),
954  TX_MARGIN_LOW_1 => ("1000100"),
955  TX_MARGIN_LOW_2 => ("1000010"),
956  TX_MARGIN_LOW_3 => ("1000000"),
957  TX_MARGIN_LOW_4 => ("1000000"),
958 
959  -------------------------TX Gearbox Attributes--------------------------
960  TXGEARBOX_EN => ("FALSE"),
961 
962  -------------------------TX Initialization and Reset Attributes--------------------------
963  TXPCSRESET_TIME => ("00001"),
964  TXPMARESET_TIME => ("00001"),
965 
966  -------------------------TX Receiver Detection Attributes--------------------------
967  TX_RXDETECT_CFG => (x"1832"),
968  TX_RXDETECT_REF => ("100"),
969 
970  ----------------------------CPLL Attributes----------------------------
971  CPLL_CFG => (x"BC07DC"),
972  CPLL_FBDIV => (CPLL_FBDIV_G), -- 4
973  CPLL_FBDIV_45 => (CPLL_FBDIV_45_G), -- 5
974  CPLL_INIT_CFG => (x"00001E"),
975  CPLL_LOCK_CFG => (x"01E8"),
976  CPLL_REFCLK_DIV => (CPLL_REFCLK_DIV_G), -- 1
977  RXOUT_DIV => (RXOUT_DIV_G), -- 2
978  TXOUT_DIV => (TXOUT_DIV_G), -- 2
979  SATA_CPLL_CFG => ("VCO_3000MHZ"),
980 
981  --------------RX Initialization and Reset Attributes-------------
982  RXDFELPMRESET_TIME => ("0001111"),
983 
984  --------------RX Equalizer Attributes-------------
985  RXLPM_HF_CFG => ("00000011110000"),
986  RXLPM_LF_CFG => ("00000011110000"),
987  RX_DFE_GAIN_CFG => (x"020FEA"),
988  RX_DFE_H2_CFG => ("000000000000"),
989  RX_DFE_H3_CFG => ("000001000000"),
990  RX_DFE_H4_CFG => ("00011110000"),
991  RX_DFE_H5_CFG => ("00011100000"),
992  RX_DFE_KL_CFG => ("0000011111110"),
993  RX_DFE_LPM_CFG => RX_DFE_LPM_CFG_G,
994  RX_DFE_LPM_HOLD_DURING_EIDLE => ('0'),
995  RX_DFE_UT_CFG => ("10001111000000000"),
996  RX_DFE_VP_CFG => ("00011111100000011"),
997 
998  -------------------------Power-Down Attributes-------------------------
999  RX_CLKMUX_PD => ('1'),
1000  TX_CLKMUX_PD => ('1'),
1001 
1002  -------------------------FPGA RX Interface Attribute-------------------------
1003  RX_INT_DATAWIDTH => RX_INT_DATAWIDTH_C,
1004 
1005  -------------------------FPGA TX Interface Attribute-------------------------
1006  TX_INT_DATAWIDTH => TX_INT_DATAWIDTH_C,
1007 
1008  ------------------TX Configurable Driver Attributes---------------
1009  TX_QPI_STATUS_EN => ('0'),
1010 
1011  -------------------------RX Equalizer Attributes--------------------------
1012  RX_DFE_KL_CFG2 => (RX_DFE_KL_CFG2_G), -- Set by wizard
1013  RX_DFE_XYD_CFG => ("0000000000000"),
1014 
1015  -------------------------TX Configurable Driver Attributes--------------------------
1016  TX_PREDRIVER_MODE => ('0')
1017 
1018 
1019  )
1020  port map
1021  (
1022  ---------------------------------- Channel ---------------------------------
1023  CFGRESET => '0',
1024  CLKRSVD => "0000",
1025  DMONITOROUT => open,
1026  GTRESETSEL => '0', -- Sequential Mode
1027  GTRSVD => "0000000000000000",
1028  QPLLCLK => qPllClkIn,
1029  QPLLREFCLK => qPllRefClkIn,
1030  RESETOVRD => '0',
1031  ---------------- Channel - Dynamic Reconfiguration Port (DRP) --------------
1032  DRPADDR => drpAddr,
1033  DRPCLK => drpClk,
1034  DRPDI => drpDi,
1035  DRPDO => drpDo,
1036  DRPEN => drpEn,
1037  DRPRDY => drpRdy,
1038  DRPWE => drpWe,
1039  ------------------------- Channel - Ref Clock Ports ------------------------
1040  GTGREFCLK => gtGRefClk,
1041  GTNORTHREFCLK0 => gtNorthRefClk0,
1042  GTNORTHREFCLK1 => gtNorthRefClk1,
1043  GTREFCLK0 => gtRefClk0,
1044  GTREFCLK1 => gtRefClk1,
1045  GTREFCLKMONITOR => open,
1046  GTSOUTHREFCLK0 => gtSouthRefClk0,
1047  GTSOUTHREFCLK1 => gtSouthRefClk1,
1048  -------------------------------- Channel PLL -------------------------------
1049  CPLLFBCLKLOST => open,
1050  CPLLLOCK => cPllLock,
1051  CPLLLOCKDETCLK => stableClkIn,
1052  CPLLLOCKEN => '1',
1053  CPLLPD => '0',
1054  CPLLREFCLKLOST => cPllRefClkLost,
1055  CPLLREFCLKSEL => to_stdlogicvector(CPLL_REFCLK_SEL_G),
1056  CPLLRESET => cPllReset,
1057  ------------------------------- Eye Scan Ports -----------------------------
1058  EYESCANDATAERROR => open,
1059  EYESCANMODE => '0',
1060  EYESCANRESET => '0',
1061  EYESCANTRIGGER => '0',
1062  ------------------------ Loopback and Powerdown Ports ----------------------
1063  LOOPBACK => loopbackIn,
1064  RXPD => rxPowerDown,
1065  TXPD => txPowerDown,
1066  ----------------------------- PCS Reserved Ports ---------------------------
1067  PCSRSVDIN => "0000000000000000",
1068  PCSRSVDIN2 => "00000",
1069  PCSRSVDOUT => open,
1070  ----------------------------- PMA Reserved Ports ---------------------------
1071  PMARSVDIN => "00000",
1072  PMARSVDIN2 => "00000",
1073  ------------------------------- Receive Ports ------------------------------
1074  RXQPIEN => '0',
1075  RXQPISENN => open,
1076  RXQPISENP => open,
1077  RXSYSCLKSEL => RX_SYSCLK_SEL_C,
1078  RXUSERRDY => rxUserRdyInt,
1079  -------------- Receive Ports - 64b66b and 64b67b Gearbox Ports -------------
1080  RXDATAVALID => open,
1081  RXGEARBOXSLIP => '0',
1082  RXHEADER => open,
1083  RXHEADERVALID => open,
1084  RXSTARTOFSEQ => open,
1085  ----------------------- Receive Ports - 8b10b Decoder ----------------------
1086  RX8B10BEN => toSl(RX_8B10B_EN_G),
1087  RXCHARISCOMMA => open,
1088  RXCHARISK => rxCharIsKFull,
1089  RXDISPERR => rxDispErrFull,
1090  RXNOTINTABLE => rxDecErrFull,
1091  ------------------- Receive Ports - Channel Bonding Ports ------------------
1092  RXCHANBONDSEQ => open,
1093  RXCHBONDEN => toSl(RX_CHAN_BOND_EN_G),
1094  RXCHBONDI => rxChBondIn, --"00000",
1095  RXCHBONDLEVEL => rxChBondLevelIn, --"000",
1096  RXCHBONDMASTER => toSl(RX_CHAN_BOND_MASTER_G),
1097  RXCHBONDO => rxChBondOut,
1098  RXCHBONDSLAVE => toSl(RX_CHAN_BOND_MASTER_G = false),
1099  ------------------- Receive Ports - Channel Bonding Ports -----------------
1100  RXCHANISALIGNED => open,
1101  RXCHANREALIGN => open,
1102  ------------------- Receive Ports - Clock Correction Ports -----------------
1103  RXCLKCORCNT => open,
1104  --------------- Receive Ports - Comma Detection and Alignment --------------
1105  RXBYTEISALIGNED => open,
1106  RXBYTEREALIGN => open,
1107  RXCOMMADET => open,
1108  RXCOMMADETEN => toSl(RX_ALIGN_MODE_G /= "NONE"), -- Enables RXSLIDE
1109  RXMCOMMAALIGNEN => toSl(ALIGN_MCOMMA_EN_G = '1' and (RX_ALIGN_MODE_G = "GT")),
1110  RXPCOMMAALIGNEN => toSl(ALIGN_PCOMMA_EN_G = '1' and (RX_ALIGN_MODE_G = "GT")),
1111  RXSLIDE => rxSlide,
1112  ----------------------- Receive Ports - PRBS Detection ---------------------
1113  RXPRBSCNTRESET => '0',
1114  RXPRBSERR => open,
1115  RXPRBSSEL => "000",
1116  ------------------- Receive Ports - RX Data Path interface -----------------
1117  GTRXRESET => gtRxReset,
1118  RXDATA => rxDataFull,
1119  RXOUTCLK => rxOutClk,
1120  RXOUTCLKFABRIC => open,
1121  RXOUTCLKPCS => open,
1122  RXOUTCLKSEL => to_stdlogicvector(RX_OUTCLK_SEL_C), -- Selects rx recovered clk for rxoutclk
1123  RXPCSRESET => '0', -- Don't bother with component level resets
1124  RXPMARESET => '0',
1125  RXUSRCLK => rxUsrClkIn,
1126  RXUSRCLK2 => rxUsrClk2In,
1127  ------------ Receive Ports - RX Decision Feedback Equalizer(DFE) -----------
1128  RXDFEAGCHOLD => rxDfeAgcHold,
1129  RXDFEAGCOVRDEN => '0',
1130  RXDFECM1EN => '0',
1131  RXDFELFHOLD => rxDfeLfHold,
1132  RXDFELFOVRDEN => RXDFELFOVRDEN_G,
1133  RXDFELPMRESET => '0',
1134  RXDFETAP2HOLD => '0',
1135  RXDFETAP2OVRDEN => '0',
1136  RXDFETAP3HOLD => '0',
1137  RXDFETAP3OVRDEN => '0',
1138  RXDFETAP4HOLD => '0',
1139  RXDFETAP4OVRDEN => '0',
1140  RXDFETAP5HOLD => '0',
1141  RXDFETAP5OVRDEN => '0',
1142  RXDFEUTHOLD => '0',
1143  RXDFEUTOVRDEN => '0',
1144  RXDFEVPHOLD => '0',
1145  RXDFEVPOVRDEN => '0',
1146  RXDFEVSEN => '0',
1147  RXDFEXYDEN => RXDFEXYDEN_G,
1148  RXDFEXYDHOLD => '0',
1149  RXDFEXYDOVRDEN => '0',
1150  RXMONITOROUT => open,
1151  RXMONITORSEL => "00",
1152  RXOSHOLD => '0',
1153  RXOSOVRDEN => '0',
1154  ------- Receive Ports - RX Driver,OOB signalling,Coupling and Eq.,CDR ------
1155  GTXRXN => gtRxN,
1156  GTXRXP => gtRxP,
1157  RXCDRFREQRESET => '0',
1158  RXCDRHOLD => '0',
1159  RXCDRLOCK => rxCdrLock,
1160  RXCDROVRDEN => '0',
1161  RXCDRRESET => '0',
1162  RXCDRRESETRSV => '0',
1163  RXELECIDLE => open,
1164  RXELECIDLEMODE => "11",
1165  RXLPMEN => RXLPMEN_C,
1166  RXLPMHFHOLD => rxLpmHfHold,
1167  RXLPMHFOVRDEN => '0',
1168  RXLPMLFHOLD => rxLpmLfHold,
1169  RXLPMLFKLOVRDEN => '0',
1170  RXOOBRESET => '0',
1171  -------- Receive Ports - RX Elastic Buffer and Phase Alignment Ports -------
1172  RXBUFRESET => '0',
1173  RXBUFSTATUS => rxBufStatusOut,
1174  RXDDIEN => RX_DDIEN_G, -- Don't insert delay in deserializer. Might be wrong.
1175  RXDLYBYPASS => RX_DLY_BYPASS_G,
1176  RXDLYEN => '0', -- Used for manual phase align
1177  RXDLYOVRDEN => '0',
1178  RXDLYSRESET => rxDlySReset,
1179  RXDLYSRESETDONE => rxDlySResetDone,
1180  RXPHALIGN => '0',
1181  RXPHALIGNDONE => rxPhAlignDone,
1182  RXPHALIGNEN => '0',
1183  RXPHDLYPD => '0',
1184  RXPHDLYRESET => '0',
1185  RXPHMONITOR => open,
1186  RXPHOVRDEN => '0',
1187  RXPHSLIPMONITOR => open,
1188  RXSTATUS => open,
1189  ------------------------ Receive Ports - RX PLL Ports ----------------------
1190  RXRATE => "000",
1191  RXRATEDONE => open,
1192  RXRESETDONE => rxResetDone,
1193  -------------- Receive Ports - RX Pipe Control for PCI Express -------------
1194  PHYSTATUS => open,
1195  RXVALID => open,
1196  ----------------- Receive Ports - RX Polarity Control Ports ----------------
1197  RXPOLARITY => rxPolarityIn,
1198  --------------------- Receive Ports - RX Ports for SATA --------------------
1199  RXCOMINITDET => open,
1200  RXCOMSASDET => open,
1201  RXCOMWAKEDET => open,
1202  ------------------------------- Transmit Ports -----------------------------
1203  SETERRSTATUS => '0',
1204  TSTIN => "11111111111111111111",
1205  TSTOUT => open,
1206  TXPHDLYTSTCLK => '0',
1207  TXPOSTCURSOR => txPostCursor,
1208  TXPOSTCURSORINV => '0',
1209  TXPRECURSOR => txPreCursor,
1210  TXPRECURSORINV => '0',
1211  TXQPIBIASEN => '0',
1212  TXQPISENN => open,
1213  TXQPISENP => open,
1214  TXQPISTRONGPDOWN => '0',
1215  TXQPIWEAKPUP => '0',
1216  TXSYSCLKSEL => TX_SYSCLK_SEL_C,
1217  TXUSERRDY => txUserRdyInt,
1218  -------------- Transmit Ports - 64b66b and 64b67b Gearbox Ports ------------
1219  TXGEARBOXREADY => open,
1220  TXHEADER => "000",
1221  TXSEQUENCE => "0000000",
1222  TXSTARTSEQ => '0',
1223  ---------------- Transmit Ports - 8b10b Encoder Control Ports --------------
1224  TX8B10BBYPASS => X"00",
1225  TX8B10BEN => toSl(TX_8B10B_EN_G),
1226  TXCHARDISPMODE => txCharDispMode,
1227  TXCHARDISPVAL => txCharDispVal,
1228  TXCHARISK => txCharIsKFull,
1229  ------------ Transmit Ports - TX Buffer and Phase Alignment Ports ----------
1230  TXBUFSTATUS => txBufStatusOut,
1231  TXDLYBYPASS => TX_DLY_BYPASS_G, -- Use the tx delay alignment circuit
1232  TXDLYEN => txDlyEn, -- Manual Align
1233  TXDLYHOLD => '0',
1234  TXDLYOVRDEN => '0',
1235  TXDLYSRESET => txDlySReset,
1236  TXDLYSRESETDONE => txDlySResetDone,
1237  TXDLYUPDOWN => '0',
1238  TXPHALIGN => txPhAlign, -- Manual Align
1239  TXPHALIGNDONE => txPhAlignDone,
1240  TXPHALIGNEN => txPhAlignEn, -- Enables manual align
1241  TXPHDLYPD => '0',
1242  TXPHDLYRESET => '0', -- Use SReset instead
1243  TXPHINIT => txPhInit, -- Manual Align
1244  TXPHINITDONE => txPhInitDone,
1245  TXPHOVRDEN => '0',
1246  ------------------ Transmit Ports - TX Data Path interface -----------------
1247  GTTXRESET => gtTxReset,
1248  TXDATA => txDataFull,
1249  TXOUTCLK => txOutClkOut,
1250  TXOUTCLKFABRIC => open, --txGtRefClk,
1251  TXOUTCLKPCS => open, --txOutClkPcsOut,
1252  TXOUTCLKSEL => to_stdlogicvector(TX_OUTCLK_SEL_C),
1253  TXPCSRESET => '0', -- Don't bother with individual resets
1254  TXPMARESET => '0',
1255  TXUSRCLK => txUsrClkIn,
1256  TXUSRCLK2 => txUsrClk2In,
1257  ---------------- Transmit Ports - TX Driver and OOB signaling --------------
1258  GTXTXN => gtTxN,
1259  GTXTXP => gtTxP,
1260  TXBUFDIFFCTRL => "100",
1261  TXDIFFCTRL => txDiffCtrl,
1262  TXDIFFPD => '0',
1263  TXINHIBIT => '0',
1264  TXMAINCURSOR => "0000000",
1265  TXPDELECIDLEMODE => '0',
1266  TXPISOPD => '0',
1267  ----------------------- Transmit Ports - TX PLL Ports ----------------------
1268  TXRATE => "000",
1269  TXRATEDONE => open,
1270  TXRESETDONE => txResetDone,
1271  --------------------- Transmit Ports - TX PRBS Generator -------------------
1272  TXPRBSFORCEERR => '0',
1273  TXPRBSSEL => "000",
1274  -------------------- Transmit Ports - TX Polarity Control ------------------
1275  TXPOLARITY => txPolarityIn,
1276  ----------------- Transmit Ports - TX Ports for PCI Express ----------------
1277  TXDEEMPH => '0',
1278  TXDETECTRX => '0',
1279  TXELECIDLE => '0',
1280  TXMARGIN => "000",
1281  TXSWING => '0',
1282  --------------------- Transmit Ports - TX Ports for SATA -------------------
1283  TXCOMFINISH => open,
1284  TXCOMINIT => '0',
1285  TXCOMSAS => '0',
1286  TXCOMWAKE => '0'
1287 
1288  );
1289 
1290 
1291 end architecture rtl;
ALIGN_MCOMMA_VALUE_Gbit_vector := "1010000011"
Definition: Gtx7Core.vhd:92
CLK_COR_REPEAT_WAIT_Ginteger := 0
Definition: Gtx7Core.vhd:120
SIMULATION_Gboolean := false
Definition: Gtx7Core.vhd:38
out RUN_PHALIGNMENTstd_logic
Definition: Gtx7RxRst.vhd:104
TX_OUTCLK_SRC_Gstring := "PLLREFCLK"
Definition: Gtx7Core.vhd:74
TX_PLL_Gstring := "CPLL"
Definition: Gtx7Core.vhd:60
in RXRESETDONEstd_logic
Definition: Gtx7RxRst.vhd:93
in drpEnsl := '0'
Definition: Gtx7Core.vhd:240
TX_PHASE_ALIGN_Gstring := "AUTO"
Definition: Gtx7Core.vhd:76
in txCharIsKInslv(( TX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtx7Core.vhd:227
CHAN_BOND_SEQ_1_4_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:143
out txUserRdyOutsl
Definition: Gtx7Core.vhd:217
FTS_DESKEW_SEQ_ENABLE_Gbit_vector := "1111"
Definition: Gtx7Core.vhd:151
RX_BUF_EN_Gboolean := true
Definition: Gtx7Core.vhd:79
TX_CLK25_DIV_Ginteger := 5
Definition: Gtx7Core.vhd:50
STABLE_CLOCK_PERIOD_Greal := 4.0E-9
Definition: Gtx7Core.vhd:40
out rxResetDoneOutsl
Definition: Gtx7Core.vhd:194
in drpWesl := '0'
Definition: Gtx7Core.vhd:241
in RECCLK_STABLEstd_logic
Definition: Gtx7RxRst.vhd:95
in rxUserResetInsl
Definition: Gtx7Core.vhd:193
out gtTxNsl
Definition: Gtx7Core.vhd:180
CPLL_FBDIV_45_Ginteger := 5
Definition: Gtx7Core.vhd:45
out syncRstsl
Definition: RstSync.vhd:36
in txPolarityInsl := '0'
Definition: Gtx7Core.vhd:229
out RXDFEAGCHOLDstd_logic
Definition: Gtx7RxRst.vhd:107
ALIGN_MCOMMA_EN_Gsl := '0'
Definition: Gtx7Core.vhd:93
IN_POLARITY_Gsl := '1'
Definition: RstSync.vhd:28
FIXED_ALIGN_COMMA_1_Gslv := "----------1010000011"
Definition: Gtx7Core.vhd:103
RX_INT_DATA_WIDTH_Ginteger := 20
Definition: Gtx7Core.vhd:69
in SOFT_RESETstd_logic
Definition: Gtx7TxRst.vhd:87
in SOFT_RESETstd_logic
Definition: Gtx7RxRst.vhd:90
std_logic sl
Definition: StdRtlPkg.vhd:28
in RECCLK_MONITOR_RESTARTstd_logic := '0'
Definition: Gtx7RxRst.vhd:96
in qPllLockInsl := '0'
Definition: Gtx7Core.vhd:172
CHAN_BOND_SEQ_2_3_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:147
EQ_MODEstring := "DFE"
Definition: Gtx7RxRst.vhd:82
in txPostCursorslv( 4 downto 0) :=( others => '0')
Definition: Gtx7Core.vhd:235
out MMCM_RESETstd_logic := '1'
Definition: Gtx7RxRst.vhd:100
out MMCM_RESETstd_logic := '1'
Definition: Gtx7TxRst.vhd:93
CPLL_REFCLK_SEL_Gbit_vector := "001"
Definition: Gtx7Core.vhd:43
SHOW_REALIGN_COMMA_Gstring := "FALSE"
Definition: Gtx7Core.vhd:97
CBCC_DATA_SOURCE_SEL_Gstring := "DECODED"
Definition: Gtx7Core.vhd:114
out rxBufStatusOutslv( 2 downto 0)
Definition: Gtx7Core.vhd:206
RX_CHAN_BOND_EN_Gboolean := false
Definition: Gtx7Core.vhd:135
ALIGN_PCOMMA_EN_Gsl := '0'
Definition: Gtx7Core.vhd:96
SIM_GTRESET_SPEEDUP_Gstring := "FALSE"
Definition: Gtx7Core.vhd:35
DEC_VALID_COMMA_ONLY_Gstring := "FALSE"
Definition: Gtx7Core.vhd:111
COMMA_EN_Gslv( 3 downto 0) := "0011"
COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
RX_DISPERR_SEQ_MATCH_Gstring := "TRUE"
Definition: Gtx7Core.vhd:108
TPD_Gtime := 1 ns
Definition: Gtx7Core.vhd:32
RX_EQUALIZER_Gstring := "DFE"
Definition: Gtx7Core.vhd:156
DEC_PCOMMA_DETECT_Gstring := "TRUE"
Definition: Gtx7Core.vhd:110
in txUserResetInsl
Definition: Gtx7Core.vhd:222
in TXRESETDONEstd_logic
Definition: Gtx7TxRst.vhd:90
in MMCM_LOCKstd_logic
Definition: Gtx7RxRst.vhd:94
ALIGN_COMMA_DOUBLE_Gstring := "FALSE"
Definition: Gtx7Core.vhd:88
in MMCM_LOCKstd_logic
Definition: Gtx7TxRst.vhd:91
CLK_COR_SEQ_2_USE_Gstring := "FALSE"
Definition: Gtx7Core.vhd:115
CHAN_BOND_SEQ_1_3_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:142
TX_INT_DATA_WIDTH_Ginteger := 20
Definition: Gtx7Core.vhd:65
RX_DLY_BYPASS_Gsl := '1'
Definition: Gtx7Core.vhd:82
in qPllRefClkLostInsl := '0'
Definition: Gtx7Core.vhd:173
gtxe2_channel gtxe2_igtxe2_i
Definition: Gtx7Core.vhd:1288
in txPowerDownslv( 1 downto 0) := "00"
Definition: Gtx7Core.vhd:231
CLK_COR_SEQ_2_1_Gbit_vector := "0100000000"
Definition: Gtx7Core.vhd:129
out rxDataOutslv( RX_EXT_DATA_WIDTH_G- 1 downto 0)
Definition: Gtx7Core.vhd:201
FIXED_ALIGN_COMMA_0_Gslv := "----------0101111100"
Definition: Gtx7Core.vhd:102
CPLL_FBDIV_Ginteger := 4
Definition: Gtx7Core.vhd:44
TX_BUF_EN_Gboolean := true
Definition: Gtx7Core.vhd:73
FIXED_COMMA_EN_Gslv( 3 downto 0) := "0011"
Definition: Gtx7Core.vhd:101
PMA_RSV_Gbit_vector := X"00018480"
Definition: Gtx7Core.vhd:53
in rxChBondInslv( 4 downto 0) := "00000"
Definition: Gtx7Core.vhd:210
out TXUSERRDYstd_logic := '0'
Definition: Gtx7TxRst.vhd:96
RXOUT_DIV_Ginteger := 2
Definition: Gtx7Core.vhd:47
out cPllLockOutsl
Definition: Gtx7Core.vhd:168
in DATA_VALIDstd_logic
Definition: Gtx7RxRst.vhd:97
in asyncRstsl
Definition: RstSync.vhd:35
CLK_CORRECT_USE_Gstring := "FALSE"
Definition: Gtx7Core.vhd:127
RX_OUTCLK_SRC_Gstring := "PLLREFCLK"
Definition: Gtx7Core.vhd:80
CLK_COR_MAX_LAT_Ginteger := 9
Definition: Gtx7Core.vhd:117
RX_ALIGN_MODE_Gstring := "GT"
Definition: Gtx7Core.vhd:87
in txDiffCtrlslv( 3 downto 0) := "1000"
Definition: Gtx7Core.vhd:236
in clksl
Definition: RstSync.vhd:34
OUT_POLARITY_Gsl := '1'
Definition: RstSync.vhd:29
CLK_COR_SEQ_1_1_Gbit_vector := "0100000000"
Definition: Gtx7Core.vhd:123
in gtRxPsl
Definition: Gtx7Core.vhd:181
in drpDislv( 15 downto 0) := X"0000"
Definition: Gtx7Core.vhd:243
in rxDataslv( WORD_SIZE_G- 1 downto 0)
RXCDR_CFG_Gbit_vector := x"03000023ff40200020"
Definition: Gtx7Core.vhd:56
out rxCharIsKOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtx7Core.vhd:202
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
Definition: Gtx7TxRst.vhd:82
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
Definition: Gtx7RxRst.vhd:85
in gtRxNsl
Definition: Gtx7Core.vhd:182
CLK_COR_SEQ_1_4_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:126
in rxChBondLevelInslv( 2 downto 0) := "000"
Definition: Gtx7Core.vhd:209
in txUsrClkInsl
Definition: Gtx7Core.vhd:215
CLK_COR_SEQ_1_2_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:124
CPLL_REFCLK_DIV_Ginteger := 1
Definition: Gtx7Core.vhd:46
out txBufStatusOutslv( 1 downto 0)
Definition: Gtx7Core.vhd:228
in rxPowerDownslv( 1 downto 0) := "00"
Definition: Gtx7Core.vhd:232
in rxPolarityInsl := '0'
Definition: Gtx7Core.vhd:205
out drpRdysl
Definition: Gtx7Core.vhd:239
in qPllClkInsl := '0'
Definition: Gtx7Core.vhd:171
CLK_COR_KEEP_IDLE_Gstring := "FALSE"
Definition: Gtx7Core.vhd:116
CHAN_BOND_SEQ_1_1_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:140
GT_TYPEstring := "GTX"
Definition: Gtx7RxRst.vhd:81
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
Definition: Gtx7TxRst.vhd:103
GT_TYPEstring := "GTX"
Definition: Gtx7TxRst.vhd:79
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
Definition: Gtx7RxRst.vhd:114
in drpClksl := '0'
Definition: Gtx7Core.vhd:238
RXDFEXYDEN_Gsl := '1'
Definition: Gtx7Core.vhd:162
CLK_COR_SEQ_2_4_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:132
out RUN_PHALIGNMENTstd_logic := '0'
Definition: Gtx7TxRst.vhd:97
out rxDispErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtx7Core.vhd:204
out RXLPMHFHOLDstd_logic
Definition: Gtx7RxRst.vhd:110
CLK_COR_SEQ_2_3_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:131
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
Definition: Gtx7TxRst.vhd:80
out gtTxPsl
Definition: Gtx7Core.vhd:179
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
Definition: Gtx7RxRst.vhd:83
FIXED_ALIGN_COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
Definition: Gtx7Core.vhd:105
in loopbackInslv( 2 downto 0) := "000"
Definition: Gtx7Core.vhd:233
in txMmcmLockedInsl := '1'
Definition: Gtx7Core.vhd:219
DEC_MCOMMA_DETECT_Gstring := "TRUE"
Definition: Gtx7Core.vhd:109
CHAN_BOND_SEQ_2_2_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:146
CLK_COR_SEQ_LEN_Ginteger := 1
Definition: Gtx7Core.vhd:121
RX_CM_TRIM_Gbit_vector := "010"
Definition: Gtx7Core.vhd:158
EXAMPLE_SIMULATIONinteger := 0
Definition: Gtx7RxRst.vhd:80
RX_USRCLK_SRC_Gstring := "RXOUTCLK"
Definition: Gtx7Core.vhd:81
CHAN_BOND_MAX_SKEW_Ginteger := 1
Definition: Gtx7Core.vhd:138
RX_PLL_Gstring := "CPLL"
Definition: Gtx7Core.vhd:61
COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
TX_DLY_BYPASS_Gsl := '1'
Definition: Gtx7Core.vhd:75
COMMA_1_Gslv := "----------1010000011"
in txUsrClk2Insl
Definition: Gtx7Core.vhd:216
RX_DFE_KL_CFG2_Gbit_vector := x"3008E56A"
Definition: Gtx7Core.vhd:157
TPD_Gtime := 1 ns
Definition: RstSync.vhd:27
out rxChBondOutslv( 4 downto 0)
Definition: Gtx7Core.vhd:211
in rxSlideInsl := '0'
Definition: Gtx7Core.vhd:198
in rxDataValidInsl := '1'
Definition: Gtx7Core.vhd:197
COMMA_0_Gslv := "----------0101111100"
out rxMmcmResetOutsl
Definition: Gtx7Core.vhd:189
CHAN_BOND_SEQ_1_ENABLE_Gbit_vector := "1111"
Definition: Gtx7Core.vhd:144
in STABLE_CLOCKstd_logic
Definition: Gtx7TxRst.vhd:84
in STABLE_CLOCKstd_logic
Definition: Gtx7RxRst.vhd:87
out PHASE_ALIGNMENT_DONESTD_LOGIC := '0'
CLK_COR_SEQ_2_ENABLE_Gbit_vector := "0000"
Definition: Gtx7Core.vhd:128
FIXED_ALIGN_COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
Definition: Gtx7Core.vhd:104
out RESET_PHALIGNMENTstd_logic := '0'
Definition: Gtx7TxRst.vhd:98
CLK_COR_SEQ_1_3_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:125
out RESET_PHALIGNMENTstd_logic := '0'
Definition: Gtx7RxRst.vhd:106
CHAN_BOND_SEQ_1_2_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:141
out rxOutClkOutsl
Definition: Gtx7Core.vhd:185
CHAN_BOND_SEQ_2_USE_Gstring := "FALSE"
Definition: Gtx7Core.vhd:150
CHAN_BOND_SEQ_LEN_Ginteger := 1
Definition: Gtx7Core.vhd:139
in txPreCursorslv( 4 downto 0) :=( others => '0')
Definition: Gtx7Core.vhd:234
in txDataInslv( TX_EXT_DATA_WIDTH_G- 1 downto 0)
Definition: Gtx7Core.vhd:226
out rxUserRdyOutsl
Definition: Gtx7Core.vhd:188
out RXDFELFHOLDstd_logic
Definition: Gtx7RxRst.vhd:108
in TXUSERRDYstd_logic
Definition: Gtx7RxRst.vhd:98
TX_8B10B_EN_Gboolean := true
Definition: Gtx7Core.vhd:66
in rxMmcmLockedInsl := '1'
Definition: Gtx7Core.vhd:190
CLK_COR_SEQ_2_2_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:130
RX_DFE_LPM_CFG_Gbit_vector := x"0954"
Definition: Gtx7Core.vhd:159
out qPllResetOutsl
Definition: Gtx7Core.vhd:174
RX_CLK25_DIV_Ginteger := 5
Definition: Gtx7Core.vhd:49
TXOUT_DIV_Ginteger := 2
Definition: Gtx7Core.vhd:48
out RXLPMLFHOLDstd_logic
Definition: Gtx7RxRst.vhd:109
out txResetDoneOutsl
Definition: Gtx7Core.vhd:223
in TXUSERCLKstd_logic
Definition: Gtx7TxRst.vhd:86
ALIGN_PCOMMA_DET_Gstring := "FALSE"
Definition: Gtx7Core.vhd:94
out GTTXRESETstd_logic := '0'
Definition: Gtx7TxRst.vhd:92
RX_8B10B_EN_Gboolean := true
Definition: Gtx7Core.vhd:70
in gtRxRefClkBufgsl := '0'
Definition: Gtx7Core.vhd:175
CHAN_BOND_SEQ_2_1_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:145
in rxUsrClkInsl
Definition: Gtx7Core.vhd:186
ALIGN_MCOMMA_DET_Gstring := "FALSE"
Definition: Gtx7Core.vhd:91
out RX_FSM_RESET_DONEstd_logic
Definition: Gtx7RxRst.vhd:102
in cPllRefClkInsl := '0'
Definition: Gtx7Core.vhd:167
RXDFELFOVRDEN_Gsl := '1'
Definition: Gtx7Core.vhd:160
in PLLLOCKstd_logic
Definition: Gtx7RxRst.vhd:92
in PHALIGNMENT_DONEstd_logic
Definition: Gtx7RxRst.vhd:105
in PLLLOCKstd_logic
Definition: Gtx7TxRst.vhd:89
in PHALIGNMENT_DONEstd_logic
Definition: Gtx7TxRst.vhd:99
in PLLREFCLKLOSTstd_logic
Definition: Gtx7RxRst.vhd:91
in PLLREFCLKLOSTstd_logic
Definition: Gtx7TxRst.vhd:88
TPD_Gtime := 1 ns
Definition: Gtx7TxRst.vhd:78
RX_CHAN_BOND_MASTER_Gboolean := false
Definition: Gtx7Core.vhd:136
in drpAddrslv( 8 downto 0) := "000000000"
Definition: Gtx7Core.vhd:242
TPD_Gtime := 1 ns
Definition: Gtx7RxRst.vhd:79
TX_EXT_DATA_WIDTH_Ginteger := 16
Definition: Gtx7Core.vhd:64
CLK_COR_MIN_LAT_Ginteger := 7
Definition: Gtx7Core.vhd:118
in RXUSERCLKstd_logic
Definition: Gtx7RxRst.vhd:89
CLK_COR_SEQ_1_ENABLE_Gbit_vector := "1111"
Definition: Gtx7Core.vhd:122
RX_EXT_DATA_WIDTH_Ginteger := 16
Definition: Gtx7Core.vhd:68
RXSLIDE_MODE_Gstring := "PCS"
Definition: Gtx7Core.vhd:98
CLK_COR_PRECEDENCE_Gstring := "TRUE"
Definition: Gtx7Core.vhd:119
TX_BUF_ADDR_MODE_Gstring := "FAST"
Definition: Gtx7Core.vhd:77
RX_OS_CFG_Gbit_vector := "0000010000000"
Definition: Gtx7Core.vhd:55
CHAN_BOND_SEQ_2_4_Gbit_vector := "0000000000"
Definition: Gtx7Core.vhd:148
FTS_LANE_DESKEW_EN_Gstring := "FALSE"
Definition: Gtx7Core.vhd:153
FTS_LANE_DESKEW_CFG_Gbit_vector := "1111"
Definition: Gtx7Core.vhd:152
out txMmcmResetOutsl
Definition: Gtx7Core.vhd:218
out TX_FSM_RESET_DONEstd_logic
Definition: Gtx7TxRst.vhd:95
in rxUsrClk2Insl
Definition: Gtx7Core.vhd:187
out PLL_RESETstd_logic := '0'
Definition: Gtx7RxRst.vhd:101
ALIGN_PCOMMA_VALUE_Gbit_vector := "0101111100"
Definition: Gtx7Core.vhd:95
out PLL_RESETstd_logic := '0'
Definition: Gtx7TxRst.vhd:94
CHAN_BOND_KEEP_ALIGN_Gstring := "FALSE"
Definition: Gtx7Core.vhd:137
out rxDecErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtx7Core.vhd:203
ALIGN_COMMA_WORD_Ginteger := 2
Definition: Gtx7Core.vhd:90
out drpDoslv( 15 downto 0)
Definition: Gtx7Core.vhd:244
RX_BUF_ADDR_MODE_Gstring := "FAST"
Definition: Gtx7Core.vhd:84
out txOutClkOutsl
Definition: Gtx7Core.vhd:214
CHAN_BOND_SEQ_2_ENABLE_Gbit_vector := "0000"
Definition: Gtx7Core.vhd:149
out RXUSERRDYstd_logic := '0'
Definition: Gtx7RxRst.vhd:103
ALIGN_COMMA_ENABLE_Gbit_vector := "1111111111"
Definition: Gtx7Core.vhd:89
in qPllRefClkInsl := '0'
Definition: Gtx7Core.vhd:170
RX_DDIEN_Gsl := '0'
Definition: Gtx7Core.vhd:83
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
in stableClkInsl
Definition: Gtx7Core.vhd:165
out GTRXRESETstd_logic := '0'
Definition: Gtx7RxRst.vhd:99
SIM_VERSION_Gstring := "4.0"
Definition: Gtx7Core.vhd:36