SURF  1.0
Gtp7Core.vhd
Go to the documentation of this file.
1 -------------------------------------------------------------------------------
2 -- File : Gtp7Core.vhd
3 -- Company : SLAC National Accelerator Laboratory
4 -- Created : 2012-06-29
5 -- Last update: 2016-12-15
6 -------------------------------------------------------------------------------
7 -- Description: Wrapper for Xilinx 7-series GTP 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 xilinx_7Series_gtp7
28 entity Gtp7Core 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 := "1.0";
36 
37  SIMULATION_G : boolean := false;
38 
39  STABLE_CLOCK_PERIOD_G : real := 4.0E-9; --units of seconds
40  REF_CLK_FREQ_G : real := 125.0E6; -- Only needed if Fixed Latency used
41 
42  -- TX/RX Settings --
43  RXOUT_DIV_G : integer := 2;
44  TXOUT_DIV_G : integer := 2;
45  RX_CLK25_DIV_G : integer := 5; -- Set by wizard
46  TX_CLK25_DIV_G : integer := 5; -- Set by wizard
47  PMA_RSV_G : bit_vector := x"00000333"; -- Set by wizard
48  RX_OS_CFG_G : bit_vector := "0001111110000"; -- Set by wizard
49  RXCDR_CFG_G : bit_vector := x"0000107FE206001041010"; -- Set by wizard
50  RXLPM_INCM_CFG_G : bit := '1'; -- Set by wizard
51  RXLPM_IPCM_CFG_G : bit := '0'; -- Set by wizard
52 
53  -- Configure PLL sources
54  TX_PLL_G : string := "PLL0";
55  RX_PLL_G : string := "PLL1";
56 
57  -- Configure Data widths
58  TX_EXT_DATA_WIDTH_G : integer := 16;
59  TX_INT_DATA_WIDTH_G : integer := 20;
60  TX_8B10B_EN_G : boolean := true;
61 
62  RX_EXT_DATA_WIDTH_G : integer := 16;
63  RX_INT_DATA_WIDTH_G : integer := 20;
64  RX_8B10B_EN_G : boolean := true;
65 
66  -- Configure Buffer usage
67  TX_BUF_EN_G : boolean := true;
68  TX_OUTCLK_SRC_G : string := "PLLREFCLK"; -- or "OUTCLKPMA" when bypassing buffer
69  TX_DLY_BYPASS_G : sl := '1'; -- 1 for bypass, 0 for delay
70  TX_PHASE_ALIGN_G : string := "AUTO"; -- Or "MANUAL" or "NONE"
71  TX_BUF_ADDR_MODE_G : string := "FAST"; -- Or "FULL"
72 
73  RX_BUF_EN_G : boolean := true;
74  RX_OUTCLK_SRC_G : string := "PLLREFCLK"; -- or "OUTCLKPMA" when bypassing buffer
75  RX_USRCLK_SRC_G : string := "RXOUTCLK"; -- or "TXOUTCLK"
76  RX_DLY_BYPASS_G : sl := '1'; -- 1 for bypass, 0 for delay
77  RX_DDIEN_G : sl := '0'; -- Supposed to be '1' when bypassing rx buffer
78  RX_BUF_ADDR_MODE_G : string := "FAST";
79 
80  -- Configure RX comma alignment
81  RX_ALIGN_MODE_G : string := "GT"; -- Or "FIXED_LAT" or "NONE"
82  ALIGN_COMMA_DOUBLE_G : string := "FALSE";
83  ALIGN_COMMA_ENABLE_G : bit_vector := "1111111111";
84  ALIGN_COMMA_WORD_G : integer := 2;
85  ALIGN_MCOMMA_DET_G : string := "FALSE";
86  ALIGN_MCOMMA_VALUE_G : bit_vector := "1010000011";
88  ALIGN_PCOMMA_DET_G : string := "FALSE";
89  ALIGN_PCOMMA_VALUE_G : bit_vector := "0101111100";
91  SHOW_REALIGN_COMMA_G : string := "FALSE";
92  RXSLIDE_MODE_G : string := "PCS"; -- Set to PMA for fixed latency operation
93 
94  -- Fixed Latency comma alignment (If RX_ALIGN_MODE_G = "FIXED_LAT")
95  FIXED_COMMA_EN_G : slv(3 downto 0) := "0011";
96  FIXED_ALIGN_COMMA_0_G : slv := "----------0101111100";
97  FIXED_ALIGN_COMMA_1_G : slv := "----------1010000011";
98  FIXED_ALIGN_COMMA_2_G : slv := "XXXXXXXXXXXXXXXXXXXX";
99  FIXED_ALIGN_COMMA_3_G : slv := "XXXXXXXXXXXXXXXXXXXX";
100 
101  -- Configure RX 8B10B decoding (If RX_8B10B_EN_G = true)
102  RX_DISPERR_SEQ_MATCH_G : string := "TRUE";
103  DEC_MCOMMA_DETECT_G : string := "TRUE";
104  DEC_PCOMMA_DETECT_G : string := "TRUE";
105  DEC_VALID_COMMA_ONLY_G : string := "FALSE";
106 
107  -- Configure Clock Correction
108  CBCC_DATA_SOURCE_SEL_G : string := "DECODED";
109  CLK_COR_SEQ_2_USE_G : string := "FALSE";
110  CLK_COR_KEEP_IDLE_G : string := "FALSE";
111  CLK_COR_MAX_LAT_G : integer := 9;
112  CLK_COR_MIN_LAT_G : integer := 7;
113  CLK_COR_PRECEDENCE_G : string := "TRUE";
114  CLK_COR_REPEAT_WAIT_G : integer := 0;
115  CLK_COR_SEQ_LEN_G : integer := 1;
116  CLK_COR_SEQ_1_ENABLE_G : bit_vector := "1111";
117  CLK_COR_SEQ_1_1_G : bit_vector := "0100000000"; -- UG476 pg 249
118  CLK_COR_SEQ_1_2_G : bit_vector := "0000000000";
119  CLK_COR_SEQ_1_3_G : bit_vector := "0000000000";
120  CLK_COR_SEQ_1_4_G : bit_vector := "0000000000";
121  CLK_CORRECT_USE_G : string := "FALSE";
122  CLK_COR_SEQ_2_ENABLE_G : bit_vector := "0000";
123  CLK_COR_SEQ_2_1_G : bit_vector := "0100000000"; -- UG476 pg 249
124  CLK_COR_SEQ_2_2_G : bit_vector := "0000000000";
125  CLK_COR_SEQ_2_3_G : bit_vector := "0000000000";
126  CLK_COR_SEQ_2_4_G : bit_vector := "0000000000";
127 
128  -- Configure Channel Bonding
129  RX_CHAN_BOND_EN_G : boolean := false;
130  RX_CHAN_BOND_MASTER_G : boolean := false; --True: Master, False: Slave
131  CHAN_BOND_KEEP_ALIGN_G : string := "FALSE";
132  CHAN_BOND_MAX_SKEW_G : integer := 1;
133  CHAN_BOND_SEQ_LEN_G : integer := 1;
134  CHAN_BOND_SEQ_1_1_G : bit_vector := "0000000000";
135  CHAN_BOND_SEQ_1_2_G : bit_vector := "0000000000";
136  CHAN_BOND_SEQ_1_3_G : bit_vector := "0000000000";
137  CHAN_BOND_SEQ_1_4_G : bit_vector := "0000000000";
138  CHAN_BOND_SEQ_1_ENABLE_G : bit_vector := "1111";
139  CHAN_BOND_SEQ_2_1_G : bit_vector := "0000000000";
140  CHAN_BOND_SEQ_2_2_G : bit_vector := "0000000000";
141  CHAN_BOND_SEQ_2_3_G : bit_vector := "0000000000";
142  CHAN_BOND_SEQ_2_4_G : bit_vector := "0000000000";
143  CHAN_BOND_SEQ_2_ENABLE_G : bit_vector := "0000";
144  CHAN_BOND_SEQ_2_USE_G : string := "FALSE";
145  FTS_DESKEW_SEQ_ENABLE_G : bit_vector := "1111";
146  FTS_LANE_DESKEW_CFG_G : bit_vector := "1111";
147  FTS_LANE_DESKEW_EN_G : string := "FALSE");
148  port (
149  stableClkIn : in sl; -- Freerunning clock needed to drive reset logic
150 
151  qPllRefClkIn : in slv(1 downto 0);
152  qPllClkIn : in slv(1 downto 0);
153  qPllLockIn : in slv(1 downto 0);
154  qPllRefClkLostIn : in slv(1 downto 0);
155  qPllResetOut : out slv(1 downto 0);
156  gtRxRefClkBufg : in sl := '0'; -- In fixed latency mode, need BUF'd version of gt rx
157  -- reference clock to check if recovered clock is stable
158 
159  -- Serial IO
160  gtTxP : out sl;
161  gtTxN : out sl;
162  gtRxP : in sl;
163  gtRxN : in sl;
164 
165  -- Rx Clock related signals
171  rxMmcmLockedIn : in sl := '1';
172 
173  -- Rx User Reset Signals
176 
177  -- Manual Comma Align signals
178  rxDataValidIn : in sl := '1';
179  rxSlideIn : in sl := '0';
180 
181  -- Rx Data and decode signals
182  rxDataOut : out slv(RX_EXT_DATA_WIDTH_G-1 downto 0);
183  rxCharIsKOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0); -- If WIDTH not mult of 8 then
184  rxDecErrOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0); -- not using 8b10b and these dont matter
185  rxDispErrOut : out slv((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
186  rxPolarityIn : in sl := '0';
187  rxBufStatusOut : out slv(2 downto 0);
188 
189  -- Rx Channel Bonding
190  rxChBondLevelIn : in slv(2 downto 0) := "000";
191  rxChBondIn : in slv(3 downto 0) := "0000";
192  rxChBondOut : out slv(3 downto 0);
193 
194  -- Tx Clock Related Signals
198  txUserRdyOut : out sl; -- txOutClk is valid
200  txMmcmLockedIn : in sl := '1';
201 
202  -- Tx User Reset signals
205 
206  -- Tx Data
207  txDataIn : in slv(TX_EXT_DATA_WIDTH_G-1 downto 0);
208  txCharIsKIn : in slv((TX_EXT_DATA_WIDTH_G/8)-1 downto 0);
209  txBufStatusOut : out slv(1 downto 0);
210  txPolarityIn : in sl := '0';
211  -- Debug Interface
212  txPowerDown : in slv(1 downto 0) := "00";
213  rxPowerDown : in slv(1 downto 0) := "00";
214  loopbackIn : in slv(2 downto 0) := "000";
215  txPreCursor : in slv(4 downto 0) := (others => '0');
216  txPostCursor : in slv(4 downto 0) := (others => '0');
217  txDiffCtrl : in slv(3 downto 0) := "1000";
218  -- DRP Interface (stableClkIn Domain)
219  drpGnt : out sl;
220  drpRdy : out sl;
221  drpEn : in sl := '0';
222  drpWe : in sl := '0';
223  drpAddr : in slv(8 downto 0) := "000000000";
224  drpDi : in slv(15 downto 0) := X"0000";
225  drpDo : out slv(15 downto 0));
226 end entity Gtp7Core;
227 
228 architecture rtl of Gtp7Core is
229 
230  function getOutClkSelVal (OUT_CLK_SRC : string) return bit_vector is
231  begin
232  if (OUT_CLK_SRC = "PLLREFCLK") then
233  return "011";
234  elsif (OUT_CLK_SRC = "OUTCLKPMA") then
235  return "010";
236  elsif (OUT_CLK_SRC = "PLLREFDV2") then
237  return "100";
238  else
239  return "000";
240  end if;
241  end function getOutClkSelVal;
242 
243  function getDataWidth (USE_8B10B : boolean; EXT_DATA_WIDTH : integer) return integer is
244  begin
245  if (USE_8B10B = false) then
246  return EXT_DATA_WIDTH;
247  else
248  return (EXT_DATA_WIDTH / 8) * 10;
249  end if;
250  end function;
251 
252  --------------------------------------------------------------------------------------------------
253  -- Constants
254  --------------------------------------------------------------------------------------------------
255  constant RX_SYSCLK_SEL_C : slv := ite(RX_PLL_G = "PLL0", "00", "11");
256  constant TX_SYSCLK_SEL_C : slv := ite(TX_PLL_G = "PLL0", "00", "11");
257 
258  constant RX_PLL0_USED_C : boolean := (RX_PLL_G = "PLL0");
259  constant TX_PLL0_USED_C : boolean := (TX_PLL_G = "PLL0");
260 
261  constant RX_XCLK_SEL_C : string := ite(RX_BUF_EN_G, "RXREC", "RXUSR");
262  constant TX_XCLK_SEL_C : string := ite(TX_BUF_EN_G, "TXOUT", "TXUSR");
263 
264  constant RX_OUTCLK_SEL_C : bit_vector := getOutClkSelVal(RX_OUTCLK_SRC_G);
265  constant TX_OUTCLK_SEL_C : bit_vector := getOutClkSelVal(TX_OUTCLK_SRC_G);
266 
267  constant RX_DATA_WIDTH_C : integer := getDataWidth(RX_8B10B_EN_G, RX_EXT_DATA_WIDTH_G);
268  constant TX_DATA_WIDTH_C : integer := getDataWidth(TX_8B10B_EN_G, TX_EXT_DATA_WIDTH_G);
269 
270  constant GT_TYPE_C : string := "GTP";
271 
272  constant WAIT_TIME_CDRLOCK_C : integer := ite(SIM_GTRESET_SPEEDUP_G = "TRUE", 16, 165520);
273 
274  --------------------------------------------------------------------------------------------------
275  -- Signals
276  --------------------------------------------------------------------------------------------------
277 
278  ----------------------------
279  -- Rx Signals
280  signal rxOutClk : sl;
281  signal rxOutClkBufg : sl;
282 
283  signal rxPllResets : slv(1 downto 0);
284  signal rxPllLock : sl;
285 
286  signal gtRxReset : sl; -- GT GTRXRESET
287  signal rxResetDone : sl; -- GT RXRESETDONE
288  signal rxUserRdyInt : sl; -- GT RXUSERRDY
289 
290  signal rxUserResetInt : sl;
291  signal rxFsmResetDone : sl;
292  signal rxRstTxUserRdy : sl;
293  signal rxPmaResetDone : sl;
294 
295  signal rxRecClkStable : sl;
296  signal rxRecClkMonitorRestart : sl;
297  signal rxCdrLockCnt : integer range 0 to WAIT_TIME_CDRLOCK_C := 0;
298 
299  signal rxRunPhaseAlignment : sl;
300  signal rxPhaseAlignmentDone : sl;
301  signal rxAlignReset : sl;
302  signal rxDlySReset : sl; -- GT RXDLYSRESET
303  signal rxDlySResetDone : sl; -- GT RXDLYSRESETDONE
304  signal rxPhAlignDone : sl; -- GT RXPHALIGNDONE
305  signal rxSlide : sl; -- GT RXSLIDE
306  signal rxCdrLock : sl; -- GT RXCDRLOCK
307 
308  signal rxDfeAgcHold : sl := '0';
309  signal rxDfeLfHold : sl := '0';
310  signal rxLpmLfHold : sl := '0';
311  signal rxLpmHfHold : sl := '0';
312 
313  -- Rx Data
314  signal rxDataInt : slv(RX_EXT_DATA_WIDTH_G-1 downto 0);
315  signal rxDataFull : slv(31 downto 0); -- GT RXDATA
316  signal rxCharIsKFull : slv(3 downto 0); -- GT RXCHARISK
317  signal rxDispErrFull : slv(3 downto 0); -- GT RXDISPERR
318  signal rxDecErrFull : slv(3 downto 0);
319 
320  ----------------------------
321  -- Tx Signals
322  signal txOutClk : sl;
323 
324  signal txPllResets : slv(1 downto 0);
325 
326  signal gtTxReset : sl; -- GT GTTXRESET
327  signal txResetDone : sl; -- GT TXRESETDONE
328  signal txUserRdyInt : sl; -- GT TXUSERRDY
329 
330  signal txFsmResetDone : sl;
331  signal txPmaResetDone : sl;
332 
333 
334  signal txResetPhaseAlignment : sl;
335  signal txRunPhaseAlignment : sl;
336  signal txPhaseAlignmentDone : sl;
337  signal txPhAlignEn : sl; -- GT TXPHALIGNEN
338  signal txDlySReset : sl; -- GT TXDLYSRESET
339  signal txDlySResetDone : sl; -- GT TXDLYSRESETDONE
340  signal txPhInit : sl; -- GT TXPHINIT
341  signal txPhInitDone : sl; -- GT TXPHINITDONE
342  signal txPhAlign : sl; -- GT TXPHALIGN
343  signal txPhAlignDone : sl; -- GT TXPHALIGNDONE
344  signal txDlyEn : sl; -- GT TXDLYEN
345 
346  -- Tx Data Signals
347  signal txDataFull : slv(31 downto 0) := (others => '0');
348  signal txCharIsKFull : slv(3 downto 0) := (others => '0');
349  signal txCharDispMode : slv(3 downto 0) := (others => '0');
350  signal txCharDispVal : slv(3 downto 0) := (others => '0');
351 
352  -- DRP Signals
353  signal drpMuxAddr : slv(8 downto 0);
354  signal drpMuxDo : slv(15 downto 0);
355  signal drpMuxDi : slv(15 downto 0);
356  signal drpMuxRdy : sl;
357  signal drpMuxEn : sl;
358  signal drpMuxWe : sl;
359  signal drpRstAddr : slv(8 downto 0);
360  signal drpRstDo : slv(15 downto 0);
361  signal drpRstDi : slv(15 downto 0);
362  signal drpRstRdy : sl;
363  signal drpRstEn : sl;
364  signal drpRstWe : sl;
365  signal drpRstDone : sl;
366  signal gtRxRst : sl;
367 
368 begin
369 
370  txOutClkOut <= txOutClk;
371 
372  rxOutClkOut <= rxOutClkBufg;
373  qPllResetOut(0) <= rxPllResets(0) or txPllResets(0);
374  qPllResetOut(1) <= rxPllResets(1) or txPllResets(1);
375 
376  rxPllLock <= qPllLockIn(0) when RX_PLL0_USED_C else qPllLockIn(1);
377 
378  --------------------------------------------------------------------------------------------------
379  -- Rx Logic
380  --------------------------------------------------------------------------------------------------
381  -- Fit GTP port sizes to selected rx external interface size
382  rxDataOut <= rxDataInt;
383  RX_DATA_8B10B_GLUE : process (rxCharIsKFull, rxDataFull, rxDecErrFull,
384  rxDispErrFull) is
385  begin
386  if (RX_8B10B_EN_G) then
387  rxDataInt <= rxDataFull(RX_EXT_DATA_WIDTH_G-1 downto 0);
388  rxCharIsKOut <= rxCharIsKFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
389  rxDispErrOut <= rxDispErrFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
390  rxDecErrOut <= rxDecErrFull((RX_EXT_DATA_WIDTH_G/8)-1 downto 0);
391  else
392  for i in RX_EXT_DATA_WIDTH_G-1 downto 0 loop
393  if ((i-9) mod 10 = 0) then
394  rxDataInt(i) <= rxDispErrFull((i-9)/10);
395  elsif ((i-8) mod 10 = 0) then
396  rxDataInt(i) <= rxCharIsKFull((i-8)/10);
397  else
398  rxDataInt(i) <= rxDataFull(i-2*(i/10));
399  end if;
400  end loop;
401  rxCharIsKOut <= (others => '0');
402  rxDispErrOut <= (others => '0');
403  rxDecErrOut <= (others => '0');
404  end if;
405  end process RX_DATA_8B10B_GLUE;
406 
407  rxUserResetInt <= rxUserResetIn or rxAlignReset;
408  rxRstTxUserRdy <= txUserRdyInt when RX_USRCLK_SRC_G = "TXOUTCLK" else '1';
409 
410  -- Drive outputs that have internal use
411  rxUserRdyOut <= rxUserRdyInt;
412 
413  --------------------------------------------------------------------------------------------------
414  -- Rx Reset Module
415  -- 1. Reset RX PLL,
416  -- 2. Wait PLL Lock
417  -- 3. Wait recclk_stable
418  -- 4. Reset MMCM
419  -- 5. Wait MMCM Lock
420  -- 6. Assert gtRxUserRdy (gtRxUsrClk now usable)
421  -- 7. Wait gtRxResetDone
422  -- 8. Do phase alignment if necessary
423  -- 9. Wait DATA_VALID (aligned) - 100 us
424  --10. Wait 1 us, Set rxFsmResetDone.
425  --------------------------------------------------------------------------------------------------
426  Gtp7RxRst_Inst : entity work.Gtp7RxRst
427  generic map (
428  TPD_G => TPD_G,
430  STABLE_CLOCK_PERIOD => getTimeRatio(STABLE_CLOCK_PERIOD_G, 1.0E-9),
432  TX_PLL0_USED => TX_PLL0_USED_C,
433  RX_PLL0_USED => RX_PLL0_USED_C)
434  port map (
437  SOFT_RESET => rxUserResetInt,
438  RXPMARESETDONE => rxPmaResetDone,
439  RXOUTCLK => rxOutClkBufg,
442  PLL0LOCK => qPllLockIn(0),
443  PLL1LOCK => qPllLockIn(1),
444  RXRESETDONE => rxResetDone, -- From GT
446  RECCLK_STABLE => rxRecClkStable, -- Asserted after 50,000 UI as per DS183
447  RECCLK_MONITOR_RESTART => rxRecClkMonitorRestart,
448  DATA_VALID => rxDataValidIn, -- From external decoder if used
449  TXUSERRDY => rxRstTxUserRdy, -- Need to know when txUserRdy
450  GTRXRESET => gtRxReset, -- To GT
452  PLL0_RESET => rxPllResets(0),
453  PLL1_RESET => rxPllResets(1),
454  RX_FSM_RESET_DONE => rxFsmResetDone,
455  RXUSERRDY => rxUserRdyInt, -- To GT
456  RUN_PHALIGNMENT => rxRunPhaseAlignment, -- To Phase Alignment module
457  PHALIGNMENT_DONE => rxPhaseAlignmentDone, -- From Phase Alignment module
458  RESET_PHALIGNMENT => open, -- For manual phase align
459  RXDFEAGCHOLD => rxDfeAgcHold, -- Explore using these later
460  RXDFELFHOLD => rxDfeLfHold,
461  RXLPMLFHOLD => rxLpmLfHold,
462  RXLPMHFHOLD => rxLpmHfHold,
463  RETRY_COUNTER => open);
464 
465  --------------------------------------------------------------------------------------------------
466  -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic.
467  --------------------------------------------------------------------------------------------------
468  RstSync_RxResetDone : entity work.RstSync
469  generic map (
470  TPD_G => TPD_G,
471  IN_POLARITY_G => '0',
472  OUT_POLARITY_G => '0')
473  port map (
474  clk => rxUsrClkIn,
475  asyncRst => rxFsmResetDone,
476  syncRst => rxResetDoneOut); -- Output
477 
478  -------------------------------------------------------------------------------------------------
479  -- Recovered clock monitor
480  -------------------------------------------------------------------------------------------------
481  BUFG_RX_OUT_CLK : BUFG
482  port map (
483  I => rxOutClk,
484  O => rxOutClkBufg);
485 
486 -- GTX7_RX_REC_CLK_MONITOR_GEN : if (RX_BUF_EN_G = false) generate
487 -- SyncClockFreq_1 : entity work.SyncClockFreq
488 -- generic map (
489 -- TPD_G => TPD_G,
490 -- REF_CLK_FREQ_G => REF_CLK_FREQ_G,
491 -- REFRESH_RATE_G => 1.0E3,
492 -- CLK_LOWER_LIMIT_G => REF_CLK_FREQ_G * (1.010),
493 -- CLK_UPPER_LIMIT_G => REF_CLK_FREQ_G * (0.990),
494 -- CNT_WIDTH_G => 32)
495 -- port map (
496 -- freqOut => open,
497 -- freqUpdated => rxRecClkMonitorRestart,
498 -- locked => rxRecClkStable,
499 -- tooFast => open,
500 -- tooSlow => open,
501 -- clkIn => rxOutClkBufg,
502 -- locClk => stableClkIn,
503 -- refClk => gtRxRefClkBufg);
504 
505 -- end generate;
506 
507 -- RX_NO_RECCLK_MON_GEN : if (RX_BUF_EN_G) generate
508  rxRecClkMonitorRestart <= '0';
509  process(stableClkIn)
510  begin
511  if rising_edge(stableClkIn) then
512  if gtRxReset = '1' then
513  rxRecClkStable <= '0' after TPD_G;
514  rxCdrLockCnt <= 0 after TPD_G;
515  elsif rxRecClkStable = '0' then
516  if rxCdrLockCnt = WAIT_TIME_CDRLOCK_C then
517  rxRecClkStable <= '1' after TPD_G;
518  rxCdrLockCnt <= rxCdrLockCnt after TPD_G;
519  else
520  rxCdrLockCnt <= rxCdrLockCnt + 1 after TPD_G;
521  end if;
522  end if;
523  end if;
524  end process;
525 -- end generate RX_NO_RECCLK_MON_GEN;
526 
527  -------------------------------------------------------------------------------------------------
528  -- Phase alignment needed when rx buffer is disabled
529  -- Use normal Auto Phase Align module when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=false
530  -- Use special fixed latency aligner when RX_BUF_EN_G=false and RX_ALIGN_FIXED_LAT_G=true
531  -------------------------------------------------------------------------------------------------
532  RX_AUTO_ALIGN_GEN : if (RX_BUF_EN_G = false and RX_ALIGN_MODE_G = "GT") generate
533  Gtp7AutoPhaseAligner_Rx : entity work.Gtp7AutoPhaseAligner
534  generic map (
535  GT_TYPE => GT_TYPE_C)
536  port map (
538  RUN_PHALIGNMENT => rxRunPhaseAlignment, -- From RxRst
539  PHASE_ALIGNMENT_DONE => rxPhaseAlignmentDone, -- To RxRst
540  PHALIGNDONE => rxPhAlignDone, -- From gt
541  DLYSRESET => rxDlySReset, -- To gt
542  DLYSRESETDONE => rxDlySResetDone, -- From gt
543  RECCLKSTABLE => rxRecClkStable);
544  rxSlide <= rxSlideIn; -- User controlled rxSlide
545  rxAlignReset <= '0';
546  end generate;
547 
548  RX_FIX_LAT_ALIGN_GEN : if (RX_BUF_EN_G = false and RX_ALIGN_MODE_G = "FIXED_LAT") generate
549  Gtp7RxFixedLatPhaseAligner_Inst : entity work.Gtp7RxFixedLatPhaseAligner
550  generic map (
551  TPD_G => TPD_G,
558  port map (
559  rxUsrClk => rxUsrClkIn,
560  rxRunPhAlignment => rxRunPhaseAlignment,
561  rxData => rxDataInt,
562  rxReset => rxAlignReset,
563  rxSlide => rxSlide,
564  rxPhaseAlignmentDone => rxPhaseAlignmentDone);
565  rxDlySReset <= '0';
566  end generate;
567 
568  RX_NO_ALIGN_GEN : if (RX_BUF_EN_G = true or RX_ALIGN_MODE_G = "NONE") generate
569  rxPhaseAlignmentDone <= '1';
570  rxSlide <= rxSlideIn;
571  rxDlySReset <= '0';
572  rxAlignReset <= '0';
573  end generate;
574 
575  --------------------------------------------------------------------------------------------------
576  -- Tx Logic
577  --------------------------------------------------------------------------------------------------
578 
579  TX_DATA_8B10B_GLUE : process (txCharIsKIn, txDataIn) is
580  begin
581  if (TX_8B10B_EN_G) then
582  txDataFull <= (others => '0');
583  txDataFull(TX_EXT_DATA_WIDTH_G-1 downto 0) <= txDataIn;
584  txCharIsKFull <= (others => '0');
585  txCharIsKFull((TX_EXT_DATA_WIDTH_G/8)-1 downto 0) <= txCharIsKIn;
586  txCharDispMode <= (others => '0');
587  txCharDispVal <= (others => '0');
588  else
589  for i in TX_EXT_DATA_WIDTH_G-1 downto 0 loop
590  if ((i-9) mod 10 = 0) then
591  txCharDispMode((i-9)/10) <= txDataIn(i);
592  elsif ((i-8) mod 10 = 0) then
593  txCharDispVal((i-8)/10) <= txDataIn(i);
594  else
595  txDataFull(i-2*(i/10)) <= txDataIn(i);
596  end if;
597  end loop;
598  txCharIsKFull <= (others => '0');
599  end if;
600  end process TX_DATA_8B10B_GLUE;
601 
602  -- Drive outputs that have internal use
603  txUserRdyOut <= txUserRdyInt;
604 
605  --------------------------------------------------------------------------------------------------
606  -- Tx Reset Module
607  --------------------------------------------------------------------------------------------------
608  Gtp7TxRst_Inst : entity work.Gtp7TxRst
609  generic map (
610  TPD_G => TPD_G,
611  STABLE_CLOCK_PERIOD => getTimeRatio(STABLE_CLOCK_PERIOD_G, 1.0E-9),
613  TX_PLL0_USED => TX_PLL0_USED_C)
614  port map (
618  TXPMARESETDONE => txPmaResetDone,
619  TXOUTCLK => txOutClk,
622  PLL0LOCK => qPllLockIn(0),
623  PLL1LOCK => qPllLockIn(1),
624  TXRESETDONE => txResetDone, -- From GT
626  GTTXRESET => gtTxReset,
628  PLL0_RESET => txPllResets(0),
629  PLL1_RESET => txPllResets(1),
630  TX_FSM_RESET_DONE => txFsmResetDone,
631  TXUSERRDY => txUserRdyInt,
632  RUN_PHALIGNMENT => txRunPhaseAlignment,
633  RESET_PHALIGNMENT => txResetPhaseAlignment, -- Used for manual alignment
634  PHALIGNMENT_DONE => txPhaseAlignmentDone,
635  RETRY_COUNTER => open); -- Might be interesting to look at
636 
637  --------------------------------------------------------------------------------------------------
638  -- Synchronize rxFsmResetDone to rxUsrClk to use as reset for external logic.
639  --------------------------------------------------------------------------------------------------
640  RstSync_Tx : entity work.RstSync
641  generic map (
642  TPD_G => TPD_G,
643  IN_POLARITY_G => '0',
644  OUT_POLARITY_G => '0')
645  port map (
646  clk => txUsrClkIn,
647  asyncRst => txFsmResetDone,
648  syncRst => txResetDoneOut); -- Output
649 
650  -------------------------------------------------------------------------------------------------
651  -- Tx Phase aligner
652  -- Only used when bypassing buffer
653  -------------------------------------------------------------------------------------------------
654  TxAutoPhaseAlignGen : if (TX_BUF_EN_G = false and TX_PHASE_ALIGN_G = "AUTO") generate
655 
656  PhaseAlign_Tx : entity work.Gtp7AutoPhaseAligner
657  generic map (
658  GT_TYPE => GT_TYPE_C)
659  port map (
661  RUN_PHALIGNMENT => txRunPhaseAlignment,
662  PHASE_ALIGNMENT_DONE => txPhaseAlignmentDone,
663  PHALIGNDONE => txPhAlignDone,
664  DLYSRESET => txDlySReset,
665  DLYSRESETDONE => txDlySResetDone,
666  RECCLKSTABLE => '1');
667  txPhAlignEn <= '0'; -- Auto Mode
668  txPhInit <= '0';
669  txPhAlign <= '0';
670  txDlyEn <= '0';
671  end generate TxAutoPhaseAlignGen;
672 
673  TxManualPhaseAlignGen : if (TX_BUF_EN_G = false and TX_PHASE_ALIGN_G = "MANUAL") generate
674  Gtx7TxManualPhaseAligner_1 : entity work.Gtp7TxManualPhaseAligner
675  generic map (
676  TPD_G => TPD_G)
677  port map (
679  resetPhAlignment => txResetPhaseAlignment,
680  runPhAlignment => txRunPhaseAlignment,
681  phaseAlignmentDone => txPhaseAlignmentDone,
682  gtTxDlySReset => txDlySReset,
683  gtTxDlySResetDone => txDlySResetDone,
684  gtTxPhInit => txPhInit,
685  gtTxPhInitDone => txPhInitDone,
686  gtTxPhAlign => txPhAlign,
687  gtTxPhAlignDone => txPhAlignDone,
688  gtTxDlyEn => txDlyEn);
689  txPhAlignEn <= '1';
690  end generate TxManualPhaseAlignGen;
691 
692  NoTxPhaseAlignGen : if (TX_BUF_EN_G = true or TX_PHASE_ALIGN_G = "NONE") generate
693  txDlyEn <= '0';
694  txDlySReset <= '0';
695  txPhAlign <= '0';
696  txPhAlignEn <= '0';
697  txPhInit <= '0';
698  txPhaseAlignmentDone <= '1';
699  end generate NoTxPhaseAlignGen;
700 
701  --------------------------------------------------------------------------------------------------
702  -- GTX Instantiation
703  --------------------------------------------------------------------------------------------------
704  gtpe2_i : GTPE2_CHANNEL
705  generic map(
706  ------------------Simulation-Only Attributes---------------
707  SIM_RECEIVER_DETECT_PASS => ("TRUE"),
708  SIM_RESET_SPEEDUP => SIM_GTRESET_SPEEDUP_G,
709  SIM_TX_EIDLE_DRIVE_LEVEL => ("X"),
710  SIM_VERSION => SIM_VERSION_G,
711  ------------------RX Byte and Word Alignment Attributes---------------
712  ALIGN_COMMA_DOUBLE => ALIGN_COMMA_DOUBLE_G,
713  ALIGN_COMMA_ENABLE => ALIGN_COMMA_ENABLE_G,
714  ALIGN_COMMA_WORD => ALIGN_COMMA_WORD_G,
715  ALIGN_MCOMMA_DET => ALIGN_MCOMMA_DET_G,
716  ALIGN_MCOMMA_VALUE => ALIGN_MCOMMA_VALUE_G,
717  ALIGN_PCOMMA_DET => ALIGN_PCOMMA_DET_G,
718  ALIGN_PCOMMA_VALUE => ALIGN_PCOMMA_VALUE_G,
719  SHOW_REALIGN_COMMA => SHOW_REALIGN_COMMA_G,
720  RXSLIDE_AUTO_WAIT => 7,
721  RXSLIDE_MODE => RXSLIDE_MODE_G,
722  RX_SIG_VALID_DLY => 10,
723  ------------------RX 8B/10B Decoder Attributes---------------
724  -- These don't really matter since RX 8B10B is disabled
725  RX_DISPERR_SEQ_MATCH => RX_DISPERR_SEQ_MATCH_G,
726  DEC_MCOMMA_DETECT => DEC_MCOMMA_DETECT_G,
727  DEC_PCOMMA_DETECT => DEC_PCOMMA_DETECT_G,
728  DEC_VALID_COMMA_ONLY => DEC_VALID_COMMA_ONLY_G,
729  ------------------------RX Clock Correction Attributes----------------------
730  CBCC_DATA_SOURCE_SEL => CBCC_DATA_SOURCE_SEL_G,
731  CLK_COR_SEQ_2_USE => CLK_COR_SEQ_2_USE_G,
732  CLK_COR_KEEP_IDLE => CLK_COR_KEEP_IDLE_G,
733  CLK_COR_MAX_LAT => CLK_COR_MAX_LAT_G,
734  CLK_COR_MIN_LAT => CLK_COR_MIN_LAT_G,
735  CLK_COR_PRECEDENCE => CLK_COR_PRECEDENCE_G,
736  CLK_COR_REPEAT_WAIT => CLK_COR_REPEAT_WAIT_G,
737  CLK_COR_SEQ_LEN => CLK_COR_SEQ_LEN_G,
738  CLK_COR_SEQ_1_ENABLE => CLK_COR_SEQ_1_ENABLE_G,
739  CLK_COR_SEQ_1_1 => CLK_COR_SEQ_1_1_G,
740  CLK_COR_SEQ_1_2 => CLK_COR_SEQ_1_2_G,
741  CLK_COR_SEQ_1_3 => CLK_COR_SEQ_1_3_G,
742  CLK_COR_SEQ_1_4 => CLK_COR_SEQ_1_4_G,
743  CLK_CORRECT_USE => CLK_CORRECT_USE_G,
744  CLK_COR_SEQ_2_ENABLE => CLK_COR_SEQ_2_ENABLE_G,
745  CLK_COR_SEQ_2_1 => CLK_COR_SEQ_2_1_G,
746  CLK_COR_SEQ_2_2 => CLK_COR_SEQ_2_2_G,
747  CLK_COR_SEQ_2_3 => CLK_COR_SEQ_2_3_G,
748  CLK_COR_SEQ_2_4 => CLK_COR_SEQ_2_4_G,
749  ------------------------RX Channel Bonding Attributes----------------------
750  CHAN_BOND_KEEP_ALIGN => CHAN_BOND_KEEP_ALIGN_G,
751  CHAN_BOND_MAX_SKEW => CHAN_BOND_MAX_SKEW_G,
752  CHAN_BOND_SEQ_LEN => CHAN_BOND_SEQ_LEN_G,
753  CHAN_BOND_SEQ_1_1 => CHAN_BOND_SEQ_1_1_G,
754  CHAN_BOND_SEQ_1_2 => CHAN_BOND_SEQ_1_2_G,
755  CHAN_BOND_SEQ_1_3 => CHAN_BOND_SEQ_1_3_G,
756  CHAN_BOND_SEQ_1_4 => CHAN_BOND_SEQ_1_4_G,
757  CHAN_BOND_SEQ_1_ENABLE => CHAN_BOND_SEQ_1_ENABLE_G,
758  CHAN_BOND_SEQ_2_1 => CHAN_BOND_SEQ_2_1_G,
759  CHAN_BOND_SEQ_2_2 => CHAN_BOND_SEQ_2_2_G,
760  CHAN_BOND_SEQ_2_3 => CHAN_BOND_SEQ_2_3_G,
761  CHAN_BOND_SEQ_2_4 => CHAN_BOND_SEQ_2_4_G,
762  CHAN_BOND_SEQ_2_ENABLE => CHAN_BOND_SEQ_2_ENABLE_G,
763  CHAN_BOND_SEQ_2_USE => CHAN_BOND_SEQ_2_USE_G,
764  FTS_DESKEW_SEQ_ENABLE => FTS_DESKEW_SEQ_ENABLE_G,
765  FTS_LANE_DESKEW_CFG => FTS_LANE_DESKEW_CFG_G,
766  FTS_LANE_DESKEW_EN => FTS_LANE_DESKEW_EN_G,
767  ---------------------------RX Margin Analysis Attributes----------------------------
768  ES_CONTROL => ("000000"),
769  ES_ERRDET_EN => ("FALSE"),
770  ES_EYE_SCAN_EN => ("FALSE"),
771  ES_HORZ_OFFSET => (x"010"),
772  ES_PMA_CFG => ("0000000000"),
773  ES_PRESCALE => ("00000"),
774  ES_QUALIFIER => (x"00000000000000000000"),
775  ES_QUAL_MASK => (x"00000000000000000000"),
776  ES_SDATA_MASK => (x"00000000000000000000"),
777  ES_VERT_OFFSET => ("000000000"),
778  -------------------------FPGA RX Interface Attributes-------------------------
779  RX_DATA_WIDTH => (RX_DATA_WIDTH_C),
780  ---------------------------PMA Attributes----------------------------
781  OUTREFCLK_SEL_INV => ("11"), -- ??
782  PMA_RSV => PMA_RSV_G, --
783  PMA_RSV2 => (x"00002040"),
784  PMA_RSV3 => ("00"),
785  PMA_RSV4 => ("0000"),
786  RX_BIAS_CFG => ("0000111100110011"),
787  DMONITOR_CFG => (x"000A00"),
788  RX_CM_SEL => ("11"),
789  RX_CM_TRIM => ("1010"),
790  RX_DEBUG_CFG => ("00000000000000"),
791  RX_OS_CFG => RX_OS_CFG_G, -- From wizard
792  TERM_RCAL_CFG => ("100001000010000"),
793  TERM_RCAL_OVRD => ("000"),
794  TST_RSV => (x"00000000"),
795  RX_CLK25_DIV => RX_CLK25_DIV_G,
796  TX_CLK25_DIV => TX_CLK25_DIV_G,
797  UCODEER_CLR => ('0'),
798  ---------------------------PCI Express Attributes----------------------------
799  PCS_PCIE_EN => ("FALSE"),
800  ---------------------------PCS Attributes----------------------------
801  PCS_RSVD_ATTR => (x"000000000000"), -- From wizard
802  -------------RX Buffer Attributes------------
803  RXBUF_ADDR_MODE => RX_BUF_ADDR_MODE_G,
804  RXBUF_EIDLE_HI_CNT => ("1000"),
805  RXBUF_EIDLE_LO_CNT => ("0000"),
806  RXBUF_EN => toString(RX_BUF_EN_G),
807  RX_BUFFER_CFG => ("000000"),
808  RXBUF_RESET_ON_CB_CHANGE => ("TRUE"),
809  RXBUF_RESET_ON_COMMAALIGN => ("FALSE"),
810  RXBUF_RESET_ON_EIDLE => ("FALSE"),
811  RXBUF_RESET_ON_RATE_CHANGE => ("TRUE"),
812  RXBUFRESET_TIME => ("00001"),
813  RXBUF_THRESH_OVFLW => (61),
814  RXBUF_THRESH_OVRD => ("FALSE"),
815  RXBUF_THRESH_UNDFLW => (4),
816  RXDLY_CFG => (x"001F"),
817  RXDLY_LCFG => (x"030"),
818  RXDLY_TAP_CFG => (x"0000"),
819  RXPH_CFG => (x"C00002"),
820  RXPHDLY_CFG => (x"084020"),
821  RXPH_MONITOR_SEL => ("00000"),
822  RX_XCLK_SEL => RX_XCLK_SEL_C,
823  RX_DDI_SEL => ("000000"),
824  RX_DEFER_RESET_BUF_EN => ("TRUE"),
825  -----------------------CDR Attributes-------------------------
826  RXCDR_CFG => RXCDR_CFG_G, -- From wizard
827  RXCDR_FR_RESET_ON_EIDLE => ('0'),
828  RXCDR_HOLD_DURING_EIDLE => ('0'),
829  RXCDR_PH_RESET_ON_EIDLE => ('0'),
830  RXCDR_LOCK_CFG => ("001001"),
831  -------------------RX Initialization and Reset Attributes-------------------
832  RXCDRFREQRESET_TIME => ("00001"),
833  RXCDRPHRESET_TIME => ("00001"),
834  RXISCANRESET_TIME => ("00001"),
835  RXPCSRESET_TIME => ("00001"),
836  RXPMARESET_TIME => ("00011"), -- ! Check this
837  -------------------RX OOB Signaling Attributes-------------------
838  RXOOB_CFG => ("0000110"),
839  -------------------------RX Gearbox Attributes---------------------------
840  RXGEARBOX_EN => ("FALSE"),
841  GEARBOX_MODE => ("000"),
842  -------------------------PRBS Detection Attribute-----------------------
843  RXPRBS_ERR_LOOPBACK => ('0'),
844  -------------Power-Down Attributes----------
845  PD_TRANS_TIME_FROM_P2 => (x"03c"),
846  PD_TRANS_TIME_NONE_P2 => (x"3c"),
847  PD_TRANS_TIME_TO_P2 => (x"64"),
848  -------------RX OOB Signaling Attributes----------
849  SAS_MAX_COM => (64),
850  SAS_MIN_COM => (36),
851  SATA_BURST_SEQ_LEN => ("1111"),
852  SATA_BURST_VAL => ("100"),
853  SATA_EIDLE_VAL => ("100"),
854  SATA_MAX_BURST => (8),
855  SATA_MAX_INIT => (21),
856  SATA_MAX_WAKE => (7),
857  SATA_MIN_BURST => (4),
858  SATA_MIN_INIT => (12),
859  SATA_MIN_WAKE => (4),
860  -------------RX Fabric Clock Output Control Attributes----------
861  TRANS_TIME_RATE => (x"0E"),
862  --------------TX Buffer Attributes----------------
863  TXBUF_EN => toString(TX_BUF_EN_G),
864  TXBUF_RESET_ON_RATE_CHANGE => ("TRUE"),
865  TXDLY_CFG => (x"001F"),
866  TXDLY_LCFG => (x"030"),
867  TXDLY_TAP_CFG => (x"0000"),
868  TXPH_CFG => (x"0780"),
869  TXPHDLY_CFG => (x"084020"),
870  TXPH_MONITOR_SEL => ("00000"),
871  TX_XCLK_SEL => TX_XCLK_SEL_C,
872  -------------------------FPGA TX Interface Attributes-------------------------
873  TX_DATA_WIDTH => TX_DATA_WIDTH_C,
874  -------------------------TX Configurable Driver Attributes-------------------------
875  TX_DEEMPH0 => ("000000"),
876  TX_DEEMPH1 => ("000000"),
877  TX_EIDLE_ASSERT_DELAY => ("110"),
878  TX_EIDLE_DEASSERT_DELAY => ("100"),
879  TX_LOOPBACK_DRIVE_HIZ => ("FALSE"),
880  TX_MAINCURSOR_SEL => ('0'),
881  TX_DRIVE_MODE => ("DIRECT"),
882  TX_MARGIN_FULL_0 => ("1001110"),
883  TX_MARGIN_FULL_1 => ("1001001"),
884  TX_MARGIN_FULL_2 => ("1000101"),
885  TX_MARGIN_FULL_3 => ("1000010"),
886  TX_MARGIN_FULL_4 => ("1000000"),
887  TX_MARGIN_LOW_0 => ("1000110"),
888  TX_MARGIN_LOW_1 => ("1000100"),
889  TX_MARGIN_LOW_2 => ("1000010"),
890  TX_MARGIN_LOW_3 => ("1000000"),
891  TX_MARGIN_LOW_4 => ("1000000"),
892  -------------------------TX Gearbox Attributes--------------------------
893  TXGEARBOX_EN => ("FALSE"),
894  -------------------------TX Initialization and Reset Attributes--------------------------
895  TXPCSRESET_TIME => ("00001"),
896  TXPMARESET_TIME => ("00001"),
897  -------------------------TX Receiver Detection Attributes--------------------------
898  TX_RXDETECT_CFG => (x"1832"),
899  TX_RXDETECT_REF => ("100"),
900  ------------------ JTAG Attributes ---------------
901  ACJTAG_DEBUG_MODE => ('0'),
902  ACJTAG_MODE => ('0'),
903  ACJTAG_RESET => ('0'),
904  ------------------ CDR Attributes ---------------
905  CFOK_CFG => (x"49000040E80"),
906  CFOK_CFG2 => ("0100000"),
907  CFOK_CFG3 => ("0100000"),
908  CFOK_CFG4 => ('0'),
909  CFOK_CFG5 => (x"0"),
910  CFOK_CFG6 => ("0000"),
911  RXOSCALRESET_TIME => ("00011"),
912  RXOSCALRESET_TIMEOUT => ("00000"),
913  ------------------ PMA Attributes ---------------
914  CLK_COMMON_SWING => ('0'),
915  RX_CLKMUX_EN => ('1'),
916  TX_CLKMUX_EN => ('1'),
917  ES_CLK_PHASE_SEL => ('0'),
918  USE_PCS_CLK_PHASE_SEL => ('0'),
919  PMA_RSV6 => ('0'),
920  PMA_RSV7 => ('0'),
921  ------------------ TX Configuration Driver Attributes ---------------
922  TX_PREDRIVER_MODE => ('0'),
923  PMA_RSV5 => ('0'),
924  SATA_PLL_CFG => ("VCO_3000MHZ"),
925  ------------------ RX Fabric Clock Output Control Attributes ---------------
926  RXOUT_DIV => RXOUT_DIV_G,
927  ------------------ TX Fabric Clock Output Control Attributes ---------------
928  TXOUT_DIV => TXOUT_DIV_G,
929  ------------------ RX Phase Interpolator Attributes---------------
930  RXPI_CFG0 => ("000"),
931  RXPI_CFG1 => ('1'),
932  RXPI_CFG2 => ('1'),
933  --------------RX Equalizer Attributes-------------
934  ADAPT_CFG0 => (x"00000"),
935  RXLPMRESET_TIME => ("0001111"),
936  RXLPM_BIAS_STARTUP_DISABLE => ('0'),
937  RXLPM_CFG => ("0110"),
938  RXLPM_CFG1 => ('0'),
939  RXLPM_CM_CFG => ('0'),
940  RXLPM_GC_CFG => ("111100010"),
941  RXLPM_GC_CFG2 => ("001"),
942  RXLPM_HF_CFG => ("00001111110000"),
943  RXLPM_HF_CFG2 => ("01010"),
944  RXLPM_HF_CFG3 => ("0000"),
945  RXLPM_HOLD_DURING_EIDLE => ('0'),
946  RXLPM_INCM_CFG => RXLPM_INCM_CFG_G, -- From wizard
947  RXLPM_IPCM_CFG => RXLPM_IPCM_CFG_G, -- From wizard
948  RXLPM_LF_CFG => ("000000001111110000"),
949  RXLPM_LF_CFG2 => ("01010"),
950  RXLPM_OSINT_CFG => ("000"),
951  ------------------ TX Phase Interpolator PPM Controller Attributes---------------
952  TXPI_CFG0 => ("00"),
953  TXPI_CFG1 => ("00"),
954  TXPI_CFG2 => ("00"),
955  TXPI_CFG3 => ('0'),
956  TXPI_CFG4 => ('0'),
957  TXPI_CFG5 => ("000"),
958  TXPI_GREY_SEL => ('0'),
959  TXPI_INVSTROBE_SEL => ('0'),
960  TXPI_PPMCLK_SEL => ("TXUSRCLK2"),
961  TXPI_PPM_CFG => (x"00"),
962  TXPI_SYNFREQ_PPM => ("000"),
963  ------------------ LOOPBACK Attributes---------------
964  LOOPBACK_CFG => ('0'),
965  PMA_LOOPBACK_CFG => ('0'),
966  ------------------RX OOB Signalling Attributes---------------
967  RXOOB_CLK_CFG => ("PMA"),
968  ------------------TX OOB Signalling Attributes---------------
969  TXOOB_CFG => ('0'),
970  ------------------RX Buffer Attributes---------------
971  RXSYNC_MULTILANE => ('0'),
972  RXSYNC_OVRD => ('0'),
973  RXSYNC_SKIP_DA => ('0'),
974  ------------------TX Buffer Attributes---------------
975  TXSYNC_MULTILANE => ('0'),
976  TXSYNC_OVRD => ('1'),
977  TXSYNC_SKIP_DA => ('0'))
978  port map
979  (
980  --------------------------------- CPLL Ports -------------------------------
981  GTRSVD => "0000000000000000",
982  PCSRSVDIN => "0000000000000000",
983  TSTIN => "11111111111111111111",
984  ---------------------------- Channel - DRP Ports --------------------------
985  DRPADDR => drpMuxAddr,
986  DRPCLK => stableClkIn,
987  DRPDI => drpMuxDi,
988  DRPDO => drpMuxDo,
989  DRPEN => drpMuxEn,
990  DRPRDY => drpMuxRdy,
991  DRPWE => drpMuxWe,
992  ----------------- FPGA TX Interface Datapath Configuration ----------------
993  TX8B10BEN => toSl(TX_8B10B_EN_G),
994  ------------------------ GTPE2_CHANNEL Clocking Ports ----------------------
995  PLL0CLK => qPllClkIn(0),
996  PLL0REFCLK => qPllRefClkIn(0),
997  PLL1CLK => qPllClkIn(1),
998  PLL1REFCLK => qPllRefClkIn(1),
999  RXSYSCLKSEL => RX_SYSCLK_SEL_C,
1000  TXSYSCLKSEL => TX_SYSCLK_SEL_C,
1001  ------------------------------- Loopback Ports -----------------------------
1002  LOOPBACK => loopbackIn,
1003  ----------------------------- PCI Express Ports ----------------------------
1004  PHYSTATUS => open,
1005  RXRATE => "000",
1006  RXVALID => open,
1007  ----------------------------- PMA Reserved Ports ---------------------------
1008  PMARSVDIN3 => '0',
1009  PMARSVDIN4 => '0',
1010  ------------------------------ Power-Down Ports ----------------------------
1011  RXPD => rxPowerDown,
1012  TXPD => txPowerDown,
1013  -------------------------- RX 8B/10B Decoder Ports -------------------------
1014  SETERRSTATUS => '0',
1015  --------------------- RX Initialization and Reset Ports --------------------
1016  EYESCANRESET => '0',
1017  RXUSERRDY => rxUserRdyInt,
1018  -------------------------- RX Margin Analysis Ports ------------------------
1019  EYESCANDATAERROR => open,
1020  EYESCANMODE => '0',
1021  EYESCANTRIGGER => '0',
1022  ------------------------------- Receive Ports ------------------------------
1023  CLKRSVD0 => '0',
1024  CLKRSVD1 => '0',
1025  DMONFIFORESET => '0',
1026  DMONITORCLK => '0',
1027  RXPMARESETDONE => rxPmaResetDone,
1028  SIGVALIDCLK => '0',
1029  ------------------------- Receive Ports - CDR Ports ------------------------
1030  RXCDRFREQRESET => '0',
1031  RXCDRHOLD => '0',
1032  RXCDRLOCK => rxCdrLock,
1033  RXCDROVRDEN => '0',
1034  RXCDRRESET => '0',
1035  RXCDRRESETRSV => '0',
1036  RXOSCALRESET => '0',
1037  RXOSINTCFG => "0010",
1038  RXOSINTDONE => open,
1039  RXOSINTHOLD => '0',
1040  RXOSINTOVRDEN => '0',
1041  RXOSINTPD => '0',
1042  RXOSINTSTARTED => open,
1043  RXOSINTSTROBE => '0',
1044  RXOSINTSTROBESTARTED => open,
1045  RXOSINTTESTOVRDEN => '0',
1046  ------------------- Receive Ports - Clock Correction Ports -----------------
1047  RXCLKCORCNT => open,
1048  ---------- Receive Ports - FPGA RX Interface Datapath Configuration --------
1049  RX8B10BEN => toSl(RX_8B10B_EN_G),
1050  ------------------ Receive Ports - FPGA RX Interface Ports -----------------
1051  RXDATA => rxDataFull,
1052  RXUSRCLK => rxUsrClkIn,
1053  RXUSRCLK2 => rxUsrClk2In,
1054  ------------------- Receive Ports - Pattern Checker Ports ------------------
1055  RXPRBSERR => open,
1056  RXPRBSSEL => "000",
1057  ------------------- Receive Ports - Pattern Checker ports ------------------
1058  RXPRBSCNTRESET => '0',
1059  ------------------ Receive Ports - RX 8B/10B Decoder Ports -----------------
1060  RXCHARISCOMMA => open,
1061  RXCHARISK => rxCharIsKFull,
1062  RXDISPERR => rxDispErrFull,
1063  RXNOTINTABLE => rxDecErrFull,
1064  ------------------------ Receive Ports - RX AFE Ports ----------------------
1065  GTPRXN => gtRxN,
1066  GTPRXP => gtRxP,
1067  PMARSVDIN2 => '0',
1068  PMARSVDOUT0 => open,
1069  PMARSVDOUT1 => open,
1070  ------------------- Receive Ports - RX Buffer Bypass Ports -----------------
1071  RXBUFRESET => '0',
1072  RXBUFSTATUS => rxBufStatusOut,
1073  RXDDIEN => RX_DDIEN_G, -- Don't insert delay in deserializer. Might be wrong.
1074  RXDLYBYPASS => RX_DLY_BYPASS_G,
1075  RXDLYEN => '0', -- Used for manual phase align
1076  RXDLYOVRDEN => '0',
1077  RXDLYSRESET => rxDlySReset,
1078  RXDLYSRESETDONE => rxDlySResetDone,
1079  RXPHALIGN => '0',
1080  RXPHALIGNDONE => rxPhAlignDone,
1081  RXPHALIGNEN => '0',
1082  RXPHDLYPD => '0',
1083  RXPHDLYRESET => '0',
1084  RXPHMONITOR => open,
1085  RXPHOVRDEN => '0',
1086  RXPHSLIPMONITOR => open,
1087  RXSTATUS => open,
1088  RXSYNCALLIN => '0',
1089  RXSYNCDONE => open,
1090  RXSYNCIN => '0',
1091  RXSYNCMODE => '0',
1092  RXSYNCOUT => open,
1093  -------------- Receive Ports - RX Byte and Word Alignment Ports ------------
1094  RXBYTEISALIGNED => open,
1095  RXBYTEREALIGN => open,
1096  RXCOMMADET => open,
1097  RXCOMMADETEN => toSl(RX_ALIGN_MODE_G /= "NONE"), -- Enables RXSLIDE
1098  RXMCOMMAALIGNEN => toSl(ALIGN_MCOMMA_EN_G = '1' and (RX_ALIGN_MODE_G = "GT")),
1099  RXPCOMMAALIGNEN => toSl(ALIGN_PCOMMA_EN_G = '1' and (RX_ALIGN_MODE_G = "GT")),
1100  RXSLIDE => rxSlide,
1101  ------------------ Receive Ports - RX Channel Bonding Ports ----------------
1102  RXCHANBONDSEQ => open,
1103  RXCHBONDEN => toSl(RX_CHAN_BOND_EN_G),
1104  RXCHBONDI => rxChBondIn,
1105  RXCHBONDLEVEL => rxChBondLevelIn,
1106  RXCHBONDMASTER => toSl(RX_CHAN_BOND_MASTER_G),
1107  RXCHBONDO => rxChBondOut,
1108  RXCHBONDSLAVE => toSl(RX_CHAN_BOND_MASTER_G = false),
1109  ----------------- Receive Ports - RX Channel Bonding Ports ----------------
1110  RXCHANISALIGNED => open,
1111  RXCHANREALIGN => open,
1112  ------------ Receive Ports - RX Decision Feedback Equalizer(DFE) -----------
1113  DMONITOROUT => open,
1114  RXADAPTSELTEST => "00000000000000",
1115  RXDFEXYDEN => '0',
1116  RXOSINTEN => '1',
1117  RXOSINTID0 => x"0",
1118  RXOSINTNTRLEN => '0',
1119  RXOSINTSTROBEDONE => open,
1120  ------- Receive Ports - RX Driver,OOB signalling,Coupling and Eq.,CDR ------
1121  RXLPMLFOVRDEN => '0',
1122  RXLPMOSINTNTRLEN => '0',
1123  --------------------- Receive Ports - RX Equalizer Ports -------------------
1124  RXOSHOLD => '0',
1125  RXOSOVRDEN => '0',
1126  --------------------- Receive Ports - RX Equilizer Ports -------------------
1127  RXLPMHFHOLD => rxLpmHfHold,
1128  RXLPMHFOVRDEN => '0',
1129  RXLPMLFHOLD => rxLpmLfHold,
1130  ------------ Receive Ports - RX Fabric ClocK Output Control Ports ----------
1131  RXRATEDONE => open,
1132  ----------- Receive Ports - RX Fabric Clock Output Control Ports ----------
1133  RXRATEMODE => '0',
1134  --------------- Receive Ports - RX Fabric Output Control Ports -------------
1135  RXOUTCLK => rxOutClk,
1136  RXOUTCLKFABRIC => open, --rxGtRefClk,
1137  RXOUTCLKPCS => open,
1138  RXOUTCLKSEL => to_stdlogicvector(RX_OUTCLK_SEL_C), -- Selects rx recovered clk for rxoutclk
1139  ---------------------- Receive Ports - RX Gearbox Ports --------------------
1140  RXDATAVALID => open,
1141  RXHEADER => open,
1142  RXHEADERVALID => open,
1143  RXSTARTOFSEQ => open,
1144  --------------------- Receive Ports - RX Gearbox Ports --------------------
1145  RXGEARBOXSLIP => '0',
1146  ------------- Receive Ports - RX Initialization and Reset Ports ------------
1147  GTRXRESET => gtRxRst,
1148  RXLPMRESET => '0',
1149  RXOOBRESET => '0',
1150  RXPCSRESET => '0',
1151  RXPMARESET => '0',
1152  ------------------- Receive Ports - RX OOB Signaling ports -----------------
1153  RXCOMSASDET => open,
1154  RXCOMWAKEDET => open,
1155  ------------------ Receive Ports - RX OOB Signaling ports -----------------
1156  RXCOMINITDET => open,
1157  ------------------ Receive Ports - RX OOB signalling Ports -----------------
1158  RXELECIDLE => open,
1159  RXELECIDLEMODE => "11",
1160  ----------------- Receive Ports - RX Polarity Control Ports ----------------
1161  RXPOLARITY => rxPolarityIn,
1162  -------------- Receive Ports -RX Initialization and Reset Ports ------------
1163  RXRESETDONE => rxResetDone,
1164  --------------------------- TX Buffer Bypass Ports -------------------------
1165  TXPHDLYTSTCLK => '0',
1166  ------------------------ TX Configurable Driver Ports ----------------------
1167  TXPOSTCURSOR => txPostCursor,
1168  TXPOSTCURSORINV => '0',
1169  TXPRECURSOR => txPreCursor,
1170  TXPRECURSORINV => '0',
1171  -------------------- TX Fabric Clock Output Control Ports ------------------
1172  TXRATEMODE => '0',
1173  --------------------- TX Initialization and Reset Ports --------------------
1174  CFGRESET => '0',
1175  GTTXRESET => gtTxReset,
1176  PCSRSVDOUT => open,
1177  TXUSERRDY => txUserRdyInt,
1178  ----------------- TX Phase Interpolator PPM Controller Ports ---------------
1179  TXPIPPMEN => '0',
1180  TXPIPPMOVRDEN => '0',
1181  TXPIPPMPD => '0',
1182  TXPIPPMSEL => '0',
1183  TXPIPPMSTEPSIZE => "00000",
1184  ---------------------- Transceiver Reset Mode Operation --------------------
1185  GTRESETSEL => '0', -- Sequential Mode
1186  RESETOVRD => '0',
1187  ------------------------------- Transmit Ports -----------------------------
1188  TXPMARESETDONE => txPmaResetDone,
1189  ----------------- Transmit Ports - Configurable Driver Ports ---------------
1190  PMARSVDIN0 => '0',
1191  PMARSVDIN1 => '0',
1192  ------------------ Transmit Ports - FPGA TX Interface Ports ----------------
1193  TXDATA => txDataFull,
1194  TXUSRCLK => txUsrClkIn,
1195  TXUSRCLK2 => txUsrClk2In,
1196  --------------------- Transmit Ports - PCI Express Ports -------------------
1197  TXELECIDLE => '0',
1198  TXMARGIN => "000",
1199  TXRATE => "000",
1200  TXSWING => '0',
1201  ------------------ Transmit Ports - Pattern Generator Ports ----------------
1202  TXPRBSFORCEERR => '0',
1203  ------------------ Transmit Ports - TX 8B/10B Encoder Ports ----------------
1204  TX8B10BBYPASS => x"0",
1205  TXCHARDISPMODE => txCharDispMode,
1206  TXCHARDISPVAL => txCharDispVal,
1207  TXCHARISK => txCharIsKFull,
1208  ------------------ Transmit Ports - TX Buffer Bypass Ports -----------------
1209  TXDLYBYPASS => TX_DLY_BYPASS_G, -- Use the tx delay alignment circuit
1210  TXDLYEN => txDlyEn, -- Manual Align
1211  TXDLYHOLD => '0',
1212  TXDLYOVRDEN => '0',
1213  TXDLYSRESET => txDlySReset,
1214  TXDLYSRESETDONE => txDlySResetDone,
1215  TXDLYUPDOWN => '0',
1216  TXPHALIGN => txPhAlign, -- Manual Align
1217  TXPHALIGNDONE => txPhAlignDone,
1218  TXPHALIGNEN => txPhAlignEn, -- Enables manual align
1219  TXPHDLYPD => '0',
1220  TXPHDLYRESET => '0', -- Use SReset instead
1221  TXPHINIT => txPhInit, -- Manual Align
1222  TXPHINITDONE => txPhInitDone,
1223  TXPHOVRDEN => '0',
1224  ---------------------- Transmit Ports - TX Buffer Ports --------------------
1225  TXBUFSTATUS => txBufStatusOut,
1226  ------------ Transmit Ports - TX Buffer and Phase Alignment Ports ----------
1227  TXSYNCALLIN => '0',
1228  TXSYNCDONE => open,
1229  TXSYNCIN => '0',
1230  TXSYNCMODE => '0',
1231  TXSYNCOUT => open,
1232  --------------- Transmit Ports - TX Configurable Driver Ports --------------
1233  GTPTXN => gtTxN,
1234  GTPTXP => gtTxP,
1235  TXBUFDIFFCTRL => "100",
1236  TXDEEMPH => '0',
1237  TXDIFFCTRL => txDiffCtrl,
1238  TXDIFFPD => '0',
1239  TXINHIBIT => '0',
1240  TXMAINCURSOR => "0000000",
1241  TXPISOPD => '0',
1242  ----------- Transmit Ports - TX Fabric Clock Output Control Ports ----------
1243  TXOUTCLK => txOutClk,
1244  TXOUTCLKFABRIC => open, --txGtRefClk,
1245  TXOUTCLKPCS => open, --txOutClkPcsOut,
1246  TXOUTCLKSEL => to_stdlogicvector(TX_OUTCLK_SEL_C),
1247  TXRATEDONE => open,
1248  --------------------- Transmit Ports - TX Gearbox Ports --------------------
1249  TXGEARBOXREADY => open,
1250  TXHEADER => "000",
1251  TXSEQUENCE => "0000000",
1252  TXSTARTSEQ => '0',
1253  ------------- Transmit Ports - TX Initialization and Reset Ports -----------
1254  TXPCSRESET => '0',
1255  TXPMARESET => '0',
1256  TXRESETDONE => txResetDone,
1257  ------------------ Transmit Ports - TX OOB signalling Ports ----------------
1258  TXCOMFINISH => open,
1259  TXCOMINIT => '0',
1260  TXCOMSAS => '0',
1261  TXCOMWAKE => '0',
1262  TXPDELECIDLEMODE => '0',
1263  ----------------- Transmit Ports - TX Polarity Control Ports ---------------
1264  TXPOLARITY => '0',
1265  --------------- Transmit Ports - TX Receiver Detection Ports --------------
1266  TXDETECTRX => '0',
1267  ------------------ Transmit Ports - pattern Generator Ports ----------------
1268  TXPRBSSEL => "000");
1269 
1270 
1271  ------------------------- Soft Fix for Production Silicon----------------------
1272 
1273  GEN_RST_SEQ : if (SIMULATION_G = false) generate
1274  Gtp7RxRstSeq_Inst : entity work.Gtp7RxRstSeq
1275  port map(
1276  RST_IN => rxUserResetIn,
1277  GTRXRESET_IN => gtRxReset,
1278  RXPMARESETDONE => rxPmaResetDone,
1279  GTRXRESET_OUT => gtRxRst,
1280  DRP_OP_DONE => drpRstDone,
1281  DRPCLK => stableClkIn,
1282  DRPEN => drpRstEn,
1283  DRPADDR => drpRstAddr,
1284  DRPWE => drpRstWe,
1285  DRPDO => drpRstDo,
1286  DRPDI => drpRstDi,
1287  DRPRDY => drpRstRdy);
1288  end generate GEN_RST_SEQ;
1289 
1290  NO_RST_SEQ : if (SIMULATION_G) generate
1291  gtRxRst <= gtRxReset;
1292  drpRstDone <= '1';
1293  drpRstEn <= '0';
1294  drpRstAddr <= (others => '0');
1295  drpRstWe <= '0';
1296  drpRstDi <= (others => '0');
1297  end generate NO_RST_SEQ;
1298 
1299  drpGnt <= drpRstDone;
1300  drpRstRdy <= drpMuxRdy when(drpRstDone = '0') else '0';
1301  drpRdy <= drpMuxRdy when(drpRstDone = '1') else '0';
1302  drpMuxEn <= drpEn when(drpRstDone = '1') else drpRstEn;
1303  drpMuxWe <= drpWe when(drpRstDone = '1') else drpRstWe;
1304  drpMuxAddr <= drpAddr when(drpRstDone = '1') else drpRstAddr;
1305  drpMuxDi <= drpDi when(drpRstDone = '1') else drpRstDi;
1306  drpRstDo <= drpMuxDo;
1307  drpDo <= drpMuxDo;
1308 
1309 end architecture rtl;
in TXUSERRDYstd_logic
Definition: Gtp7RxRst.vhd:101
CHAN_BOND_SEQ_2_1_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:139
in rxUsrClkInsl
Definition: Gtp7Core.vhd:167
ALIGN_MCOMMA_DET_Gstring := "FALSE"
Definition: Gtp7Core.vhd:85
TPD_Gtime := 1 ns
Definition: Gtp7Core.vhd:31
DEC_PCOMMA_DETECT_Gstring := "TRUE"
Definition: Gtp7Core.vhd:104
in txUserResetInsl
Definition: Gtp7Core.vhd:203
SIM_VERSION_Gstring := "1.0"
Definition: Gtp7Core.vhd:35
out RXDFEAGCHOLDstd_logic := '0'
Definition: Gtp7RxRst.vhd:112
TX_EXT_DATA_WIDTH_Ginteger := 16
Definition: Gtp7Core.vhd:58
CLK_COR_MIN_LAT_Ginteger := 7
Definition: Gtp7Core.vhd:112
CHAN_BOND_SEQ_1_3_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:136
RX_EXT_DATA_WIDTH_Ginteger := 16
Definition: Gtp7Core.vhd:62
TX_INT_DATA_WIDTH_Ginteger := 20
Definition: Gtp7Core.vhd:59
RX_DLY_BYPASS_Gsl := '1'
Definition: Gtp7Core.vhd:76
TX_BUF_ADDR_MODE_Gstring := "FAST"
Definition: Gtp7Core.vhd:71
in qPllLockInslv( 1 downto 0)
Definition: Gtp7Core.vhd:153
RX_OS_CFG_Gbit_vector := "0001111110000"
Definition: Gtp7Core.vhd:48
out DRPADDRstd_logic_vector( 8 downto 0)
in txPowerDownslv( 1 downto 0) := "00"
Definition: Gtp7Core.vhd:212
FIXED_ALIGN_COMMA_0_Gslv := "----------0101111100"
Definition: Gtp7Core.vhd:96
out syncRstsl
Definition: RstSync.vhd:36
FTS_LANE_DESKEW_EN_Gstring := "FALSE"
Definition: Gtp7Core.vhd:147
RXOUT_DIV_Ginteger := 2
Definition: Gtp7Core.vhd:43
in RXUSERCLKstd_logic
Definition: Gtp7RxRst.vhd:88
IN_POLARITY_Gsl := '1'
Definition: RstSync.vhd:28
in qPllRefClkLostInslv( 1 downto 0)
Definition: Gtp7Core.vhd:154
ALIGN_COMMA_WORD_Ginteger := 2
Definition: Gtp7Core.vhd:84
in DRPDOstd_logic_vector( 15 downto 0)
out drpDoslv( 15 downto 0)
Definition: Gtp7Core.vhd:225
RX_BUF_ADDR_MODE_Gstring := "FAST"
Definition: Gtp7Core.vhd:78
CLK_CORRECT_USE_Gstring := "FALSE"
Definition: Gtp7Core.vhd:121
CHAN_BOND_SEQ_2_ENABLE_Gbit_vector := "0000"
Definition: Gtp7Core.vhd:143
std_logic sl
Definition: StdRtlPkg.vhd:28
ALIGN_COMMA_ENABLE_Gbit_vector := "1111111111"
Definition: Gtp7Core.vhd:83
in PLL1LOCKstd_logic
Definition: Gtp7RxRst.vhd:95
in PLL1LOCKstd_logic
Definition: Gtp7TxRst.vhd:93
out TX_FSM_RESET_DONEstd_logic
Definition: Gtp7TxRst.vhd:100
RX_DDIEN_Gsl := '0'
Definition: Gtp7Core.vhd:77
in stableClkInsl
Definition: Gtp7Core.vhd:149
in drpDislv( 15 downto 0) := X"0000"
Definition: Gtp7Core.vhd:224
in RXPMARESETDONEstd_logic
in rxDataslv( WORD_SIZE_G- 1 downto 0)
out rxCharIsKOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtp7Core.vhd:183
RX_PLL_Gstring := "PLL1"
Definition: Gtp7Core.vhd:55
in rxChBondInslv( 3 downto 0) := "0000"
Definition: Gtp7Core.vhd:191
out RUN_PHALIGNMENTstd_logic := '0'
Definition: Gtp7TxRst.vhd:102
CLK_COR_SEQ_1_2_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:118
TX_PHASE_ALIGN_Gstring := "AUTO"
Definition: Gtp7Core.vhd:70
in txCharIsKInslv(( TX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtp7Core.vhd:208
out GTRXRESETstd_logic := '0'
Definition: Gtp7RxRst.vhd:103
out txUserRdyOutsl
Definition: Gtp7Core.vhd:198
out txBufStatusOutslv( 1 downto 0)
Definition: Gtp7Core.vhd:209
in rxPowerDownslv( 1 downto 0) := "00"
Definition: Gtp7Core.vhd:213
FTS_DESKEW_SEQ_ENABLE_Gbit_vector := "1111"
Definition: Gtp7Core.vhd:145
TX_CLK25_DIV_Ginteger := 5
Definition: Gtp7Core.vhd:46
out drpRdysl
Definition: Gtp7Core.vhd:220
in rxUserResetInsl
Definition: Gtp7Core.vhd:174
out gtTxNsl
Definition: Gtp7Core.vhd:161
CHAN_BOND_SEQ_1_1_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:134
in TXOUTCLKstd_logic
Definition: Gtp7TxRst.vhd:89
out qPllResetOutslv( 1 downto 0)
Definition: Gtp7Core.vhd:155
out drpGntsl
Definition: Gtp7Core.vhd:219
CLK_COR_SEQ_2_4_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:126
in txPolarityInsl := '0'
Definition: Gtp7Core.vhd:210
ALIGN_MCOMMA_EN_Gsl := '0'
Definition: Gtp7Core.vhd:87
in PLL0REFCLKLOSTstd_logic
Definition: Gtp7TxRst.vhd:90
FIXED_ALIGN_COMMA_1_Gslv := "----------1010000011"
Definition: Gtp7Core.vhd:97
in PLL0REFCLKLOSTstd_logic
Definition: Gtp7RxRst.vhd:92
in asyncRstsl
Definition: RstSync.vhd:35
in txMmcmLockedInsl := '1'
Definition: Gtp7Core.vhd:200
CLK_COR_SEQ_LEN_Ginteger := 1
Definition: Gtp7Core.vhd:115
CHAN_BOND_SEQ_2_3_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:141
in txPostCursorslv( 4 downto 0) :=( others => '0')
Definition: Gtp7Core.vhd:216
out RESET_PHALIGNMENTstd_logic := '0'
Definition: Gtp7TxRst.vhd:103
in clksl
Definition: RstSync.vhd:34
out RESET_PHALIGNMENTstd_logic := '0'
Definition: Gtp7RxRst.vhd:111
OUT_POLARITY_Gsl := '1'
Definition: RstSync.vhd:29
CBCC_DATA_SOURCE_SEL_Gstring := "DECODED"
Definition: Gtp7Core.vhd:108
COMMA_1_Gslv := "----------1010000011"
out rxBufStatusOutslv( 2 downto 0)
Definition: Gtp7Core.vhd:187
RX_CHAN_BOND_EN_Gboolean := false
Definition: Gtp7Core.vhd:129
SIM_GTRESET_SPEEDUP_Gstring := "FALSE"
Definition: Gtp7Core.vhd:34
out DRPWEstd_logic
in rxSlideInsl := '0'
Definition: Gtp7Core.vhd:179
DEC_VALID_COMMA_ONLY_Gstring := "FALSE"
Definition: Gtp7Core.vhd:105
COMMA_EN_Gslv( 3 downto 0) := "0011"
COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
RX_DISPERR_SEQ_MATCH_Gstring := "TRUE"
Definition: Gtp7Core.vhd:102
in rxDataValidInsl := '1'
Definition: Gtp7Core.vhd:178
COMMA_0_Gslv := "----------0101111100"
out DRPDIstd_logic_vector( 15 downto 0)
ALIGN_COMMA_DOUBLE_Gstring := "FALSE"
Definition: Gtp7Core.vhd:82
TX_PLL0_USEDboolean := false
Definition: Gtp7TxRst.vhd:82
CLK_COR_SEQ_2_USE_Gstring := "FALSE"
Definition: Gtp7Core.vhd:109
TX_PLL0_USEDboolean := false
Definition: Gtp7RxRst.vhd:83
out MMCM_RESETstd_logic := '1'
Definition: Gtp7RxRst.vhd:104
out MMCM_RESETstd_logic := '1'
Definition: Gtp7TxRst.vhd:97
in GTRXRESET_INstd_logic
CHAN_BOND_SEQ_LEN_Ginteger := 1
Definition: Gtp7Core.vhd:133
CLK_COR_SEQ_2_1_Gbit_vector := "0100000000"
Definition: Gtp7Core.vhd:123
out rxDataOutslv( RX_EXT_DATA_WIDTH_G- 1 downto 0)
Definition: Gtp7Core.vhd:182
in RXOUTCLKstd_logic
Definition: Gtp7RxRst.vhd:91
in TXUSERCLKstd_logic
Definition: Gtp7TxRst.vhd:86
in DRPRDYstd_logic
TX_BUF_EN_Gboolean := true
Definition: Gtp7Core.vhd:67
FIXED_COMMA_EN_Gslv( 3 downto 0) := "0011"
Definition: Gtp7Core.vhd:95
TX_PLL_Gstring := "PLL0"
Definition: Gtp7Core.vhd:54
out GTTXRESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:96
in txDataInslv( TX_EXT_DATA_WIDTH_G- 1 downto 0)
Definition: Gtp7Core.vhd:207
out rxUserRdyOutsl
Definition: Gtp7Core.vhd:169
RXCDR_CFG_Gbit_vector := x"0000107FE206001041010"
Definition: Gtp7Core.vhd:49
in rxMmcmLockedInsl := '1'
Definition: Gtp7Core.vhd:171
in qPllRefClkInslv( 1 downto 0)
Definition: Gtp7Core.vhd:151
out RX_FSM_RESET_DONEstd_logic
Definition: Gtp7RxRst.vhd:107
in PHALIGNMENT_DONEstd_logic
Definition: Gtp7RxRst.vhd:110
in PHALIGNMENT_DONEstd_logic
Definition: Gtp7TxRst.vhd:104
TPD_Gtime := 1 ns
Definition: Gtp7TxRst.vhd:78
TPD_Gtime := 1 ns
Definition: Gtp7RxRst.vhd:79
ALIGN_PCOMMA_DET_Gstring := "FALSE"
Definition: Gtp7Core.vhd:88
RX_OUTCLK_SRC_Gstring := "PLLREFCLK"
Definition: Gtp7Core.vhd:74
CLK_COR_MAX_LAT_Ginteger := 9
Definition: Gtp7Core.vhd:111
in gtRxRefClkBufgsl := '0'
Definition: Gtp7Core.vhd:156
RX_ALIGN_MODE_Gstring := "GT"
Definition: Gtp7Core.vhd:81
in txDiffCtrlslv( 3 downto 0) := "1000"
Definition: Gtp7Core.vhd:217
out TXUSERRDYstd_logic := '0'
Definition: Gtp7TxRst.vhd:101
in DATA_VALIDstd_logic
Definition: Gtp7RxRst.vhd:100
in TXPMARESETDONEstd_logic
Definition: Gtp7TxRst.vhd:88
TPD_Gtime := 1 ns
Definition: RstSync.vhd:27
CLK_COR_SEQ_1_1_Gbit_vector := "0100000000"
Definition: Gtp7Core.vhd:117
in gtRxPsl
Definition: Gtp7Core.vhd:162
out RXLPMHFHOLDstd_logic := '0'
Definition: Gtp7RxRst.vhd:115
RX_CHAN_BOND_MASTER_Gboolean := false
Definition: Gtp7Core.vhd:130
in drpAddrslv( 8 downto 0) := "000000000"
Definition: Gtp7Core.vhd:223
CLK_COR_SEQ_1_ENABLE_Gbit_vector := "1111"
Definition: Gtp7Core.vhd:116
RXSLIDE_MODE_Gstring := "PCS"
Definition: Gtp7Core.vhd:92
in gtRxNsl
Definition: Gtp7Core.vhd:163
CLK_COR_PRECEDENCE_Gstring := "TRUE"
Definition: Gtp7Core.vhd:113
CLK_COR_SEQ_1_4_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:120
in rxChBondLevelInslv( 2 downto 0) := "000"
Definition: Gtp7Core.vhd:190
in txUsrClkInsl
Definition: Gtp7Core.vhd:196
out DRPENstd_logic
CHAN_BOND_SEQ_2_4_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:142
RX_PLL0_USEDboolean := false
Definition: Gtp7RxRst.vhd:85
out RXUSERRDYstd_logic := '0'
Definition: Gtp7RxRst.vhd:108
FTS_LANE_DESKEW_CFG_Gbit_vector := "1111"
Definition: Gtp7Core.vhd:146
out txMmcmResetOutsl
Definition: Gtp7Core.vhd:199
in qPllClkInslv( 1 downto 0)
Definition: Gtp7Core.vhd:152
in rxPolarityInsl := '0'
Definition: Gtp7Core.vhd:186
CLK_COR_KEEP_IDLE_Gstring := "FALSE"
Definition: Gtp7Core.vhd:110
REF_CLK_FREQ_Greal := 125.0E6
Definition: Gtp7Core.vhd:40
in rxUsrClk2Insl
Definition: Gtp7Core.vhd:168
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
Definition: Gtp7TxRst.vhd:80
ALIGN_PCOMMA_VALUE_Gbit_vector := "0101111100"
Definition: Gtp7Core.vhd:89
RETRY_COUNTER_BITWIDTHinteger range 2 to 8:= 8
Definition: Gtp7RxRst.vhd:82
RXLPM_INCM_CFG_Gbit := '1'
Definition: Gtp7Core.vhd:50
CHAN_BOND_KEEP_ALIGN_Gstring := "FALSE"
Definition: Gtp7Core.vhd:131
out PLL1_RESETstd_logic := '0'
Definition: Gtp7RxRst.vhd:106
out PLL1_RESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:99
out rxDecErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtp7Core.vhd:184
out rxDispErrOutslv(( RX_EXT_DATA_WIDTH_G/ 8)- 1 downto 0)
Definition: Gtp7Core.vhd:185
out txOutClkOutsl
Definition: Gtp7Core.vhd:195
out RUN_PHALIGNMENTstd_logic
Definition: Gtp7RxRst.vhd:109
CLK_COR_SEQ_2_3_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:125
out gtTxPsl
Definition: Gtp7Core.vhd:160
FIXED_ALIGN_COMMA_3_Gslv := "XXXXXXXXXXXXXXXXXXXX"
Definition: Gtp7Core.vhd:99
in RXRESETDONEstd_logic
Definition: Gtp7RxRst.vhd:96
in loopbackInslv( 2 downto 0) := "000"
Definition: Gtp7Core.vhd:214
DEC_MCOMMA_DETECT_Gstring := "TRUE"
Definition: Gtp7Core.vhd:103
CHAN_BOND_SEQ_2_2_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:140
in PLL0LOCKstd_logic
Definition: Gtp7TxRst.vhd:92
in PLL0LOCKstd_logic
Definition: Gtp7RxRst.vhd:94
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
Definition: Gtp7TxRst.vhd:108
out RETRY_COUNTERstd_logic_vector( RETRY_COUNTER_BITWIDTH- 1 downto 0) :=( others => '0')
Definition: Gtp7RxRst.vhd:118
RX_USRCLK_SRC_Gstring := "RXOUTCLK"
Definition: Gtp7Core.vhd:75
CHAN_BOND_MAX_SKEW_Ginteger := 1
Definition: Gtp7Core.vhd:132
out RXLPMLFHOLDstd_logic := '0'
Definition: Gtp7RxRst.vhd:114
COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
in DRPCLKstd_logic
TX_DLY_BYPASS_Gsl := '1'
Definition: Gtp7Core.vhd:69
ALIGN_MCOMMA_VALUE_Gbit_vector := "1010000011"
Definition: Gtp7Core.vhd:86
CLK_COR_REPEAT_WAIT_Ginteger := 0
Definition: Gtp7Core.vhd:114
SIMULATION_Gboolean := false
Definition: Gtp7Core.vhd:37
in RECCLK_STABLEstd_logic
Definition: Gtp7RxRst.vhd:98
TX_OUTCLK_SRC_Gstring := "PLLREFCLK"
Definition: Gtp7Core.vhd:68
in txUsrClk2Insl
Definition: Gtp7Core.vhd:197
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
Definition: Gtp7TxRst.vhd:79
out rxChBondOutslv( 3 downto 0)
Definition: Gtp7Core.vhd:192
STABLE_CLOCK_PERIODinteger range 4 to 20:= 8
Definition: Gtp7RxRst.vhd:81
in PLL1REFCLKLOSTstd_logic
Definition: Gtp7RxRst.vhd:93
out GTRXRESET_OUTstd_logic
in PLL1REFCLKLOSTstd_logic
Definition: Gtp7TxRst.vhd:91
out PLL0_RESETstd_logic := '0'
Definition: Gtp7TxRst.vhd:98
out rxMmcmResetOutsl
Definition: Gtp7Core.vhd:170
out PLL0_RESETstd_logic := '0'
Definition: Gtp7RxRst.vhd:105
CHAN_BOND_SEQ_1_ENABLE_Gbit_vector := "1111"
Definition: Gtp7Core.vhd:138
in drpEnsl := '0'
Definition: Gtp7Core.vhd:221
CLK_COR_SEQ_2_ENABLE_Gbit_vector := "0000"
Definition: Gtp7Core.vhd:122
FIXED_ALIGN_COMMA_2_Gslv := "XXXXXXXXXXXXXXXXXXXX"
Definition: Gtp7Core.vhd:98
RXLPM_IPCM_CFG_Gbit := '0'
Definition: Gtp7Core.vhd:51
CHAN_BOND_SEQ_1_4_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:137
gtpe2_channel gtpe2_igtpe2_i
Definition: Gtp7Core.vhd:1268
CLK_COR_SEQ_1_3_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:119
RX_BUF_EN_Gboolean := true
Definition: Gtp7Core.vhd:73
in SOFT_RESETstd_logic
Definition: Gtp7TxRst.vhd:87
STABLE_CLOCK_PERIOD_Greal := 4.0E-9
Definition: Gtp7Core.vhd:39
out rxResetDoneOutsl
Definition: Gtp7Core.vhd:175
in SOFT_RESETstd_logic
Definition: Gtp7RxRst.vhd:89
in drpWesl := '0'
Definition: Gtp7Core.vhd:222
CHAN_BOND_SEQ_1_2_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:135
out rxOutClkOutsl
Definition: Gtp7Core.vhd:166
CHAN_BOND_SEQ_2_USE_Gstring := "FALSE"
Definition: Gtp7Core.vhd:144
SIMULATION_Gboolean := false
Definition: Gtp7RxRst.vhd:80
in RECCLK_MONITOR_RESTARTstd_logic := '0'
Definition: Gtp7RxRst.vhd:99
PMA_RSV_Gbit_vector := x"00000333"
Definition: Gtp7Core.vhd:47
in STABLE_CLOCKstd_logic
Definition: Gtp7TxRst.vhd:84
out PHASE_ALIGNMENT_DONEstd_logic := '0'
in txPreCursorslv( 4 downto 0) :=( others => '0')
Definition: Gtp7Core.vhd:215
in STABLE_CLOCKstd_logic
Definition: Gtp7RxRst.vhd:86
TX_8B10B_EN_Gboolean := true
Definition: Gtp7Core.vhd:60
RX_INT_DATA_WIDTH_Ginteger := 20
Definition: Gtp7Core.vhd:63
in RST_INstd_logic
CLK_COR_SEQ_2_2_Gbit_vector := "0000000000"
Definition: Gtp7Core.vhd:124
in TXRESETDONEstd_logic
Definition: Gtp7TxRst.vhd:94
out DRP_OP_DONEstd_logic
in MMCM_LOCKstd_logic
Definition: Gtp7RxRst.vhd:97
in MMCM_LOCKstd_logic
Definition: Gtp7TxRst.vhd:95
RX_CLK25_DIV_Ginteger := 5
Definition: Gtp7Core.vhd:45
TXOUT_DIV_Ginteger := 2
Definition: Gtp7Core.vhd:44
out RXDFELFHOLDstd_logic := '0'
Definition: Gtp7RxRst.vhd:113
out txResetDoneOutsl
Definition: Gtp7Core.vhd:204
std_logic_vector slv
Definition: StdRtlPkg.vhd:29
SHOW_REALIGN_COMMA_Gstring := "FALSE"
Definition: Gtp7Core.vhd:91
RX_8B10B_EN_Gboolean := true
Definition: Gtp7Core.vhd:64
ALIGN_PCOMMA_EN_Gsl := '0'
Definition: Gtp7Core.vhd:90
in RXPMARESETDONEstd_logic
Definition: Gtp7RxRst.vhd:90