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