x393  1.0
FPGAcodeforElphelNC393camera
GTXE2_GPL.v
Go to the documentation of this file.
1 
40 /**
41  Original unisims primitive's interfaces, according to xilinx's user guide:
42  "7 Series FPGAs GTX/GTH Transceivers User Guide UG476(v1.11)", which is further
43  referenced as ug476 or UG476
44 
45  Due to lack of functionality of gtxe2_gpl project as compared to the xilinx's primitive,
46  not all of the inputs are used and not all of the outputs are driven.
47  ***/
48 // cpll reference clock mux
50  input wire [2:0] CPLLREFCLKSEL,
51  input wire GTREFCLK0,
52  input wire GTREFCLK1,
53  input wire GTNORTHREFCLK0,
54  input wire GTNORTHREFCLK1,
55  input wire GTSOUTHREFCLK0,
56  input wire GTSOUTHREFCLK1,
57  input wire GTGREFCLK,
58  output wire CPLL_MUX_CLK_OUT
59 );
60 
61 // clock multiplexer - pre-syntesis simulation only
62 assign CPLL_MUX_CLK_OUT = CPLLREFCLKSEL == 3'b000 ? 1'b0 // reserved
63  : CPLLREFCLKSEL == 3'b001 ? GTREFCLK0
64  : CPLLREFCLKSEL == 3'b010 ? GTREFCLK1
65  : CPLLREFCLKSEL == 3'b011 ? GTNORTHREFCLK0
66  : CPLLREFCLKSEL == 3'b100 ? GTNORTHREFCLK1
67  : CPLLREFCLKSEL == 3'b101 ? GTSOUTHREFCLK0
68  : CPLLREFCLKSEL == 3'b110 ? GTSOUTHREFCLK1
69  : /*CPLLREFCLKSEL == 3'b111 ?**/ GTGREFCLK;
70 
71 endmodule
72 
74  input wire TXPLLREFCLK_DIV1,
75  input wire TXPLLREFCLK_DIV2,
76  input wire TXOUTCLKPMA,
77  input wire TXOUTCLKPCS,
78  input wire [2:0] TXOUTCLKSEL,
79  input wire TXDLYBYPASS,
80  output wire TXOUTCLK
81 );
82 
83 assign TXOUTCLK = TXOUTCLKSEL == 3'b001 ? TXOUTCLKPCS
84  : TXOUTCLKSEL == 3'b010 ? TXOUTCLKPMA
85  : TXOUTCLKSEL == 3'b011 ? TXPLLREFCLK_DIV1
86  : TXOUTCLKSEL == 3'b100 ? TXPLLREFCLK_DIV2
87  : /* 3'b000 **/ 1'b1;
88 endmodule
89 
90 `timescale 1ps/1ps
92 
94 // top-level interfaces
95  input wire CPLLLOCKDETCLK,
96  input wire CPLLLOCKEN,
97  input wire CPLLPD,
98  input wire CPLLRESET, // active high
99  output wire CPLLFBCLKLOST,
100  output wire CPLLLOCK,
101  output wire CPLLREFCLKLOST,
102 
103  input wire [15:0] GTRSVD,
104  input wire [15:0] PCSRSVDIN,
105  input wire [4:0] PCSRSVDIN2,
106  input wire [4:0] PMARSVDIN,
107  input wire [4:0] PMARSVDIN2,
108  input wire [19:0] TSTIN,
109  output wire [9:0] TSTOUT,
110 
111 // internal
112  input wire ref_clk,
113  output wire clk_out,
114  output wire pll_locked // equals CPLLLOCK
115 );
116 
117 parameter [23:0] CPLL_CFG = 29'h00BC07DC;
118 parameter integer CPLL_FBDIV = 4;
119 parameter integer CPLL_FBDIV_45 = 5;
120 parameter [23:0] CPLL_INIT_CFG = 24'h00001E;
121 parameter [15:0] CPLL_LOCK_CFG = 16'h01E8;
122 parameter integer CPLL_REFCLK_DIV = 1;
123 parameter integer RXOUT_DIV = 2;
124 parameter integer TXOUT_DIV = 2;
125 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
126 parameter [1:0] PMA_RSV3 = 1;
127 
130 
131 assign pll_locked = locked;
132 assign CPLLLOCK = pll_locked;
133 
135 wire reset;
138 
139 assign clk_out = mult_dev_clk;
140 
141 // generate internal async reset
142 assign reset = CPLLPD | CPLLRESET;
143 
144 // apply multipliers
145 time last_edge; // reference clock edge's absolute time
146 time period; // reference clock's period
147 integer locked_f;
148 reg locked;
149 
150 initial
151 begin
152  last_edge = 0;
153  period = 0;
154  forever @ (posedge ref_clk or posedge reset)
155  begin
156  period = reset ? 0 : $time - (last_edge == 0 ? $time : last_edge);
157  last_edge = reset ? 0 : $time;
158  end
159 end
160 reg tmp = 0;
161 initial
162 begin
163  @ (posedge reset);
164  forever @ (posedge ref_clk)
165  begin
166  tmp = ~tmp;
167  if (period > 0)
168  begin
169  locked_f = 1;
170  mult_clk = 1'b1;
171  repeat (multiplier * 2 - 1)
172  begin
173  #(period/multiplier/2)
174  mult_clk = ~mult_clk;
175  end
176  end
177  else
178  locked_f = 0;
179  end
180 end
181 
182 // apply dividers
183 initial
184 begin
185  mult_dev_clk = 1'b1;
186  forever
187  begin
188  repeat (divider)
189  @ (mult_clk);
191  end
192 end
193 
194 // show if 'pll' is locked
195 reg [31:0] counter;
196 always @ (posedge ref_clk or posedge reset)
197  counter <= reset | locked_f == 0 ? 0 : counter == 60 ? counter : counter + 1;
198 
199 always @ (posedge ref_clk)
200  locked <= counter == 60;
201 /*
202 always @ (posedge ref_clk or posedge reset)
203 begin
204  if (locked_f == 1 && ~reset)
205  begin
206  repeat (`GTXE2_CHNL_CPLL_LOCK_TIME) @ (posedge ref_clk);
207  locked <= 1'b1;
208  end
209  else
210  locked <= 1'b0;
211 end**/
212 
213 endmodule
214 
215  /**
216  Divides input clock either by input 'div' or by parameter 'divide_by' if divide_by_param
217  was set to 1
218  ***/
219 `ifndef CLOCK_DIVIDER_V
220 `define CLOCK_DIVIDER_V
221 // non synthesisable!
222 module clock_divider(
223  input wire clk_in,
224  output reg clk_out,
225 
226  input wire [31:0] div
227 );
228 parameter divide_by = 1;
229 parameter divide_by_param = 1;
230 
231 reg [31:0] cnt = 0;
232 
233 reg [31:0] div_r;
234 initial
235 begin
236  cnt = 0;
237  clk_out = 1'b1;
238  forever
239  begin
240  if (divide_by_param == 0)
241  begin
242  if (div > 32'h0)
243  div_r = div;
244  else
245  div_r = 1;
246  repeat (div_r)
247  @ (clk_in);
248  end
249  else
250  begin
251  repeat (divide_by)
252  @ (clk_in);
253  end
254  clk_out = ~clk_out;
255  end
256 end
257 
258 endmodule
259 `endif
260 
262 // top-level interfaces
263  input wire [2:0] CPLLREFCLKSEL,
264  input wire GTREFCLK0,
265  input wire GTREFCLK1,
266  input wire GTNORTHREFCLK0,
267  input wire GTNORTHREFCLK1,
268  input wire GTSOUTHREFCLK0,
269  input wire GTSOUTHREFCLK1,
270  input wire GTGREFCLK,
271  input wire QPLLCLK,
272  input wire QPLLREFCLK,
273  input wire [1:0] RXSYSCLKSEL,
274  input wire [1:0] TXSYSCLKSEL,
275  input wire [2:0] TXOUTCLKSEL,
276  input wire [2:0] RXOUTCLKSEL,
277  input wire TXDLYBYPASS,
278  input wire RXDLYBYPASS,
279  output wire GTREFCLKMONITOR,
280 
281  input wire CPLLLOCKDETCLK,
282  input wire CPLLLOCKEN,
283  input wire CPLLPD,
284  input wire CPLLRESET,
285  output wire CPLLFBCLKLOST,
286  output wire CPLLLOCK,
287  output wire CPLLREFCLKLOST,
288 
289  input wire [2:0] TXRATE,
290  input wire [2:0] RXRATE,
291 
292 // phy-level interfaces
293  output wire TXOUTCLKPMA,
294  output wire TXOUTCLKPCS,
295  output wire TXOUTCLK,
296  output wire TXOUTCLKFABRIC,
297  output wire tx_serial_clk,
298  output wire tx_piso_clk,
299 
300  output wire RXOUTCLKPMA,
301  output wire RXOUTCLKPCS,
302  output wire RXOUTCLK,
303  output wire RXOUTCLKFABRIC,
304  output wire rx_serial_clk,
305  output wire rx_sipo_clk,
306 
307 // additional ports to cpll
308  output [9:0] TSTOUT,
309  input [15:0] GTRSVD,
310  input [15:0] PCSRSVDIN,
311  input [4:0] PCSRSVDIN2,
312  input [4:0] PMARSVDIN,
313  input [4:0] PMARSVDIN2,
314  input [19:0] TSTIN
315 );
316 // CPLL
317 parameter [23:0] CPLL_CFG = 29'h00BC07DC;
318 parameter integer CPLL_FBDIV = 4;
319 parameter integer CPLL_FBDIV_45 = 5;
320 parameter [23:0] CPLL_INIT_CFG = 24'h00001E;
321 parameter [15:0] CPLL_LOCK_CFG = 16'h01E8;
322 parameter integer CPLL_REFCLK_DIV = 1;
323 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
324 parameter [1:0] PMA_RSV3 = 1;
325 
326 parameter TXOUT_DIV = 2;
327 //parameter TXRATE = 3'b000;
328 parameter RXOUT_DIV = 2;
329 //parameter RXRATE = 3'b000;
330 
331 parameter TX_INT_DATAWIDTH = 0;
332 parameter TX_DATA_WIDTH = 20;
333 parameter RX_INT_DATAWIDTH = 0;
334 parameter RX_DATA_WIDTH = 20;
335 /*
336 localparam tx_serial_divider = TXRATE == 3'b001 ? 1
337  : TXRATE == 3'b010 ? 2
338  : TXRATE == 3'b011 ? 4
339  : TXRATE == 3'b100 ? 8
340  : TXRATE == 3'b101 ? 16 : TXOUT_DIV ;
341 localparam rx_serial_divider = RXRATE == 3'b001 ? 1
342  : RXRATE == 3'b010 ? 2
343  : RXRATE == 3'b011 ? 4
344  : RXRATE == 3'b100 ? 8
345  : RXRATE == 3'b101 ? 16 : RXOUT_DIV ;
346 */
347 localparam tx_pma_divider1 = TX_INT_DATAWIDTH == 1 ? 4 : 2;
349 localparam tx_pma_divider2 = TX_DATA_WIDTH == 20 | TX_DATA_WIDTH == 40 | TX_DATA_WIDTH == 80 ? 5 : 4;
351 localparam rx_pma_divider1 = RX_INT_DATAWIDTH == 1 ? 4 : 2;
352 localparam rx_pma_divider2 = RX_DATA_WIDTH == 20 | RX_DATA_WIDTH == 40 | RX_DATA_WIDTH == 80 ? 5 : 4;
353 
362 
367 
368 assign tx_serial_clk = tx_phy_clk;
369 assign rx_serial_clk = rx_phy_clk;
370 
371 // piso and sipo clocks
372 // are not used in the design - no need to use ddr mode during simulation. much easier just multi serial clk by 2
373 wire [31:0] tx_serial_divider;
374 wire [31:0] rx_serial_divider;
375 assign tx_serial_divider = TXRATE == 3'b001 ? 1
376  : TXRATE == 3'b010 ? 2
377  : TXRATE == 3'b011 ? 4
378  : TXRATE == 3'b100 ? 8
379  : TXRATE == 3'b101 ? 16 : TXOUT_DIV ;
380 assign rx_serial_divider = RXRATE == 3'b001 ? 1
381  : RXRATE == 3'b010 ? 2
382  : RXRATE == 3'b011 ? 4
383  : RXRATE == 3'b100 ? 8
384  : RXRATE == 3'b101 ? 16 : RXOUT_DIV ;
386 // .divide_by (tx_serial_divider),
387  .divide_by_param (0)
388 )
389 tx_toserialclk_div(
390  .clk_in (tx_phy_clk),
391  .clk_out (tx_piso_clk),
392 
394 );
396 // .divide_by (rx_serial_divider),
397  .divide_by_param (0)
398 )
399 rx_toserialclk_div(
400  .clk_in (rx_phy_clk),
401  .clk_out (rx_sipo_clk),
402 
404 );
405 
406 // TXOUTCLKPCS/TXOUTCLKPMA generation
408 assign TXOUTCLKPCS = TXOUTCLKPMA;
409 
411  .divide_by (tx_pma_divider1)
412 )
413 tx_pma_div1(
414  .div (1),
415  .clk_in (tx_piso_clk),
417 );
418 
420  .divide_by (tx_pma_divider2)
421 )
422 tx_pma_div2(
423  .div (1),
426 );
427 
428 // RXOUTCLKPCS/RXOUTCLKPMA generation
430 assign RXOUTCLKPCS = RXOUTCLKPMA;
432  .divide_by (rx_pma_divider1)
433 )
434 rx_pma_div1(
435  .div (1),
436  .clk_in (rx_sipo_clk),
438 );
439 
441  .divide_by (rx_pma_divider2)
442 )
443 rx_pma_div2(
444  .div (1),
447 );
448 
449 //
451  .divide_by (2)
452 )
453 txpllrefclk_div2(
454  .div (1),
457 );
459  .divide_by (2)
460 )
461 rxpllrefclk_div2(
462  .div (1),
465 );
466 
474  .TXOUTCLK (TXOUTCLK)
475 );
476 
484  .TXOUTCLK (RXOUTCLK)
485 );
486 
487 
490 
491  .GTREFCLK0 (GTREFCLK0),
492  .GTREFCLK1 (GTREFCLK1),
497  .GTGREFCLK (GTGREFCLK),
498 
500 );
501 
503  .CPLL_FBDIV (4),
504  .CPLL_FBDIV_45 (5),
505  .CPLL_REFCLK_DIV (1)
506 )
507 cpll(
510  .CPLLPD (CPLLPD),
511  .CPLLRESET (CPLLRESET),
513  .CPLLLOCK (CPLLLOCK),
515 
516  .GTRSVD (GTRSVD),
517  .PCSRSVDIN (PCSRSVDIN),
519  .PMARSVDIN (PMARSVDIN),
521  .TSTIN (TSTIN),
522  .TSTOUT (TSTOUT),
523 
524  .ref_clk (clk_mux_out),
526  .pll_locked ()
527 );
528 
529 endmodule
530 
531 // simplified resynchronisation fifo, could cause metastability
532 // because of that shall not be syntesisable
533 // TODO add shift registers and gray code to fix that
534 `ifndef RESYNC_FIFO_NOSYNT_V
535 `define RESYNC_FIFO_NOSYNT_V
536 module resync_fifo_nonsynt #(
537  parameter [31:0] width = 20,
538  //parameter [31:0] depth = 7
539  parameter [31:0] log_depth = 3
540 )
541 (
542  input wire rst_rd,
543  input wire rst_wr,
544  input wire clk_wr,
545  input wire val_wr,
546  input wire [width - 1:0] data_wr,
547  input wire clk_rd,
548  input wire val_rd,
549  output wire [width - 1:0] data_rd,
550 
551  output wire empty_rd,
552  output wire almost_empty_rd,
553  output wire full_wr
554 );
555 /* function integer clogb2; input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
556 function integer clogb2; input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
557  input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
558  begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
559  value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
560  for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
561  value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
562  end end endfunction localparam log_depth = clogb2(depth); */
563  end endfunction localparam log_depth = clogb2(depth); */
564 endfunction localparam log_depth = clogb2(depth); */
565  localparam log_depth = clogb2(depth); */
566 localparam log_depth = clogb2(depth); */
567 */
569 
571 
573 
575 
576 
577 
578 
579 
580 localparam depth = 1 << log_depth;
582 reg [width -1:0] fifo [depth - 1:0];
583 // wr_clk domain
584 reg [log_depth - 1:0] cnt_wr;
585 // rd_clk domain
586 reg [log_depth - 1:0] cnt_rd;
588 assign data_rd = fifo[cnt_rd];
589 assign empty_rd = cnt_wr == cnt_rd;
590 assign full_wr = (cnt_wr + 1'b1) == cnt_rd;
591 assign almost_empty_rd = (cnt_rd + 1'b1) == cnt_wr;
592 
593 always @ (posedge clk_wr)
594  fifo[cnt_wr] <= val_wr ? data_wr : fifo[cnt_wr];
595 
596 always @ (posedge clk_wr)
597  cnt_wr <= rst_wr ? 0 : val_wr ? cnt_wr + 1'b1 : cnt_wr;
599 always @ (posedge clk_rd)
600  cnt_rd <= rst_rd ? 0 : val_rd ? cnt_rd + 1'b1 : cnt_rd;
602 endmodule
603 `endif
605 module gtxe2_chnl_tx_ser #(
606  parameter [31:0] width = 20
607 )
608 (
609  input wire reset,
610  input wire trim,
611  input wire inclk,
612  input wire outclk,
613  input wire [width - 1:0] indata,
614  input wire idle_in,
615  output wire outdata,
616  output wire idle_out
617 );
618 
619 localparam trimmed_width = width * 4 / 5;
620 
621 reg [31:0] bitcounter;
622 wire [width - 1:0] data_resynced;
623 wire almost_empty_rd;
624 wire empty_rd;
625 wire full_wr;
626 wire val_rd;
627 wire bitcounter_limit;
628 
629 assign bitcounter_limit = trim ? bitcounter == (trimmed_width - 1) : bitcounter == (width - 1);
630 
631 always @ (posedge outclk)
632  bitcounter <= reset | bitcounter_limit ? 32'h0 : bitcounter + 1'b1;
633 
636 
638  .width (width + 1), // +1 is for a flag of an idle line (both TXP and TXN = 0)
639  .log_depth (3)
640 )
641 fifo(
642  .rst_rd (reset),
643  .rst_wr (reset),
644  .clk_wr (inclk),
645  .val_wr (1'b1),
646  .data_wr ({idle_in, indata}),
647  .clk_rd (outclk),
648  .val_rd (val_rd),
653 
655 );
658 endmodule
660 // for some reason overall trasmitted disparity is tracked at the top level
662  parameter iwidth = 16,
663  parameter iskwidth = 2,
664  parameter owidth = 20
665 )
666 (
667  input wire [iskwidth - 1:0] TX8B10BBYPASS,
668  input wire TX8B10BEN,
669  input wire [iskwidth - 1:0] TXCHARDISPMODE,
670  input wire [iskwidth - 1:0] TXCHARDISPVAL,
671  input wire [iskwidth - 1:0] TXCHARISK,
672  input wire disparity,
673  input wire [iwidth - 1:0] data_in,
674  output wire [owidth - 1:0] data_out,
675  output wire next_disparity
676 );
678 wire [owidth - 1:0] enc_data_out;
679 wire [owidth - 1:0] bp_data_out;
683 
684 // only full 8/10 encoding and width=20 case is implemented
685 
686 localparam word_count = owidth / 10;
687 
689 wire [word_count - 1:0] interm_disparity;
690 wire [5:0] six [word_count - 1:0];
691 wire [3:0] four [word_count - 1:0];
692 wire [9:0] oword [word_count - 1:0];
693 wire [iwidth - 1:0] iword [word_count - 1:0];
694 wire [word_count - 1:0] is_control;
695 
696 // typical approach: 8x10 = 5x6 + 3x4
697 // word disparity[i] = calculated disparity for the i-th 8-bit word
698 // interm_disparity[i] - disparity after 5x6 encoding for the i-th word
699 genvar ii;
700 generate
701 for (ii = 0; ii < 2; ii = ii + 1)
702 begin: encode_by_word
703  assign is_control[ii] = TXCHARISK[ii];
704  assign iword[ii] = data_in[ii*8 + 7:ii*8];
705  assign interm_disparity[ii]= ^six[ii] ? word_disparity[ii] : ~word_disparity[ii];
706  assign word_disparity[ii] = (ii == 0) ? disparity :
707  (^oword[ii - 1] ? word_disparity[ii - 1] : ~word_disparity[ii - 1]); // if there're 5 '1's - do no change the disparity, 6 or 4 - change
708  assign six[ii] = iword[ii][4:0] == 5'b00000 ? (~word_disparity[ii] ? 6'b100111 : 6'b011000)
709  : iword[ii][4:0] == 5'b00001 ? (~word_disparity[ii] ? 6'b011101 : 6'b100010)
710  : iword[ii][4:0] == 5'b00010 ? (~word_disparity[ii] ? 6'b101101 : 6'b010010)
711  : iword[ii][4:0] == 5'b00011 ? (~word_disparity[ii] ? 6'b110001 : 6'b110001)
712  : iword[ii][4:0] == 5'b00100 ? (~word_disparity[ii] ? 6'b110101 : 6'b001010)
713  : iword[ii][4:0] == 5'b00101 ? (~word_disparity[ii] ? 6'b101001 : 6'b101001)
714  : iword[ii][4:0] == 5'b00110 ? (~word_disparity[ii] ? 6'b011001 : 6'b011001)
715  : iword[ii][4:0] == 5'b00111 ? (~word_disparity[ii] ? 6'b111000 : 6'b000111)
716  : iword[ii][4:0] == 5'b01000 ? (~word_disparity[ii] ? 6'b111001 : 6'b000110)
717  : iword[ii][4:0] == 5'b01001 ? (~word_disparity[ii] ? 6'b100101 : 6'b100101)
718  : iword[ii][4:0] == 5'b01010 ? (~word_disparity[ii] ? 6'b010101 : 6'b010101)
719  : iword[ii][4:0] == 5'b01011 ? (~word_disparity[ii] ? 6'b110100 : 6'b110100)
720  : iword[ii][4:0] == 5'b01100 ? (~word_disparity[ii] ? 6'b001101 : 6'b001101)
721  : iword[ii][4:0] == 5'b01101 ? (~word_disparity[ii] ? 6'b101100 : 6'b101100)
722  : iword[ii][4:0] == 5'b01110 ? (~word_disparity[ii] ? 6'b011100 : 6'b011100)
723  : iword[ii][4:0] == 5'b01111 ? (~word_disparity[ii] ? 6'b010111 : 6'b101000)
724  : iword[ii][4:0] == 5'b10000 ? (~word_disparity[ii] ? 6'b011011 : 6'b100100)
725  : iword[ii][4:0] == 5'b10001 ? (~word_disparity[ii] ? 6'b100011 : 6'b100011)
726  : iword[ii][4:0] == 5'b10010 ? (~word_disparity[ii] ? 6'b010011 : 6'b010011)
727  : iword[ii][4:0] == 5'b10011 ? (~word_disparity[ii] ? 6'b110010 : 6'b110010)
728  : iword[ii][4:0] == 5'b10100 ? (~word_disparity[ii] ? 6'b001011 : 6'b001011)
729  : iword[ii][4:0] == 5'b10101 ? (~word_disparity[ii] ? 6'b101010 : 6'b101010)
730  : iword[ii][4:0] == 5'b10110 ? (~word_disparity[ii] ? 6'b011010 : 6'b011010)
731  : iword[ii][4:0] == 5'b10111 ? (~word_disparity[ii] ? 6'b111010 : 6'b000101)
732  : iword[ii][4:0] == 5'b11000 ? (~word_disparity[ii] ? 6'b110011 : 6'b001100)
733  : iword[ii][4:0] == 5'b11001 ? (~word_disparity[ii] ? 6'b100110 : 6'b100110)
734  : iword[ii][4:0] == 5'b11010 ? (~word_disparity[ii] ? 6'b010110 : 6'b010110)
735  : iword[ii][4:0] == 5'b11011 ? (~word_disparity[ii] ? 6'b110110 : 6'b001001)
736  : iword[ii][4:0] == 5'b11100 ? (~word_disparity[ii] ? 6'b001110 : 6'b001110)
737  : iword[ii][4:0] == 5'b11101 ? (~word_disparity[ii] ? 6'b101110 : 6'b010001)
738  : iword[ii][4:0] == 5'b11110 ? (~word_disparity[ii] ? 6'b011110 : 6'b100001)
739  :/*iword[ii][4:0] == 5'b11111**/(~word_disparity[ii] ? 6'b101011 : 6'b010100);
740  assign four[ii] = iword[ii][7:5] == 3'd0 ? (~interm_disparity[ii] ? 4'b1011 : 4'b0100)
741  : iword[ii][7:5] == 3'd1 ? (~interm_disparity[ii] ? 4'b1001 : 4'b1001)
742  : iword[ii][7:5] == 3'd2 ? (~interm_disparity[ii] ? 4'b0101 : 4'b0101)
743  : iword[ii][7:5] == 3'd3 ? (~interm_disparity[ii] ? 4'b1100 : 4'b0011)
744  : iword[ii][7:5] == 3'd4 ? (~interm_disparity[ii] ? 4'b1101 : 4'b0010)
745  : iword[ii][7:5] == 3'd5 ? (~interm_disparity[ii] ? 4'b1010 : 4'b1010)
746  : iword[ii][7:5] == 3'd6 ? (~interm_disparity[ii] ? 4'b0110 : 4'b0110)
747  :/*iword[ii][7:5] == 3'd7**/(~interm_disparity[ii] ? (six[ii][1:0] == 2'b11 ? 4'b0111 : 4'b1110)
748  : (six[ii][1:0] == 2'b00 ? 4'b1000 : 4'b0001));
749  assign oword[ii] = ~is_control[ii] ? {six[ii], four[ii]}
750  : iword[ii][7:0] == 8'b00011100 ? (~word_disparity[ii] ? 10'b0011110100 : 10'b1100001011)
751  : iword[ii][7:0] == 8'b00111100 ? (~word_disparity[ii] ? 10'b0011111001 : 10'b1100000110)
752  : iword[ii][7:0] == 8'b01011100 ? (~word_disparity[ii] ? 10'b0011110101 : 10'b1100001010)
753  : iword[ii][7:0] == 8'b01111100 ? (~word_disparity[ii] ? 10'b0011110011 : 10'b1100001100)
754  : iword[ii][7:0] == 8'b10011100 ? (~word_disparity[ii] ? 10'b0011110010 : 10'b1100001101)
755  : iword[ii][7:0] == 8'b10111100 ? (~word_disparity[ii] ? 10'b0011111010 : 10'b1100000101)
756  : iword[ii][7:0] == 8'b11011100 ? (~word_disparity[ii] ? 10'b0011110110 : 10'b1100001001)
757  : iword[ii][7:0] == 8'b11111100 ? (~word_disparity[ii] ? 10'b0011111000 : 10'b1100000111)
758  : iword[ii][7:0] == 8'b11110111 ? (~word_disparity[ii] ? 10'b1110101000 : 10'b0001010111)
759  : iword[ii][7:0] == 8'b11111011 ? (~word_disparity[ii] ? 10'b1101101000 : 10'b0010010111)
760  : iword[ii][7:0] == 8'b11111101 ? (~word_disparity[ii] ? 10'b1011101000 : 10'b0100010111)
761  :/*iword[ii][7:0] == 8'b11111110**/(~word_disparity[ii] ? 10'b0111101000 : 10'b1000010111);
763  assign enc_data_out[ii*10 + 9:ii * 10] = oword[ii];
764 
765  // case of a disabled encoder
766  assign bp_data_out[ii*10 + 9:ii*10] = {TXCHARDISPMODE[ii], TXCHARDISPVAL[ii], data_in[ii*8 + 7:ii*8]};
767 end
768 endgenerate
770 
771 endmodule
774  parameter width = 20
775 )
776 (
777 // top-level ifaces
778  input wire TXCOMINIT,
779  input wire TXCOMWAKE,
780  output wire TXCOMFINISH,
781 
782 // internal ifaces
783  input wire clk,
784  input wire reset,
785  input wire disparity,
786  output wire [width - 1:0] outdata,
787  output wire outval
788 );
789 parameter [3:0] SATA_BURST_SEQ_LEN = 4'b0101;
790 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
792 localparam burst_len_mult = SATA_CPLL_CFG == "VCO_3000MHZ" ? 2 // assuming each usrclk cycle == 20 sata serial clk cycles
793  : SATA_CPLL_CFG == "VCO_1500MHZ" ? 4
794  : /* VCO_6000MHZ **/ 1;
795 localparam burst_len = /*burst_len_mult * 8**/ 32; // = 106.7ns; each burst contains 16 SATA Gen1 words
796 localparam quiet_len_init = burst_len * 3; // = 320ns
797 localparam quiet_len_wake = burst_len; // = 106.7ns
800 
801 reg [31:0] bursts_cnt;
802 reg [31:0] stopwatch;
805 wire bursts_cnt_clr;
806 wire [31:0] quiet_len;
808 // FSM Declarations
809 reg state_burst;
811 wire state_idle;
812 
813 wire set_burst;
814 wire set_quiet;
815 wire clr_burst;
817 
818 // remember what command was issued
819 reg issued_init;
820 reg issued_wake;
821 
822 always @ (posedge clk)
823 begin
824  issued_init <= reset | TXCOMFINISH | issued_wake ? 1'b0 : TXCOMINIT ? 1'b1 : state_idle ? 1'b0 : issued_init;
825  issued_wake <= reset | TXCOMFINISH | issued_init ? 1'b0 : TXCOMWAKE ? 1'b1 : state_idle ? 1'b0 : issued_wake;
826 end
827 
828 wire [31:0] bursts_cnt_togo;
830 
831 // FSM
832 
833 assign state_idle = ~state_burst & ~state_quiet;
834 always @ (posedge clk)
835 begin
838 end
839 
842 
843 assign clr_burst = state_burst & stopwatch == (burst_len - burst_len_mult);
844 assign clr_quiet = state_quiet & stopwatch == (quiet_len - burst_len_mult);
845 
846 // bursts timing
849 always @ (posedge clk)
850  stopwatch <= reset | stopwatch_clr ? 0 : stopwatch + burst_len_mult;
851 
852 // total bursts count
853 assign bursts_cnt_clr = state_idle;
855 always @ (posedge clk)
857 
858 // data to serializer
859 // only datawidth = 20 is supported for now
860 wire [width - 1:0] outdata_pos;
861 wire [width - 1:0] outdata_neg;
862 // outdata = {Align2 + Align1}, disparity always flips
863 assign outdata_pos = stopwatch[0] == 1'b0 ? {10'b0101010101, 10'b1100000101}
864  : {10'b1101100011, 10'b0101010101};
865 assign outdata_neg = stopwatch[0] == 1'b0 ? {10'b0101010101, 10'b0011111010}
866  : {10'b0010011100, 10'b0101010101};
872 endmodule
873 
874 /*
875  According to the doc, p110
876  If TX_INT_DATAWIDTH, the inner width = 32 bits, otherwise 16.
877  */
880  parameter internal_data_width = 16,
881  parameter interface_data_width = 32,
882  parameter internal_isk_width = 2,
883  parameter interface_isk_width = 4
884 )
885 (
886  input wire usrclk,
887  input wire usrclk2,
888  input wire reset,
889  output wire [internal_data_width - 1:0] outdata,
890  output wire [internal_isk_width - 1:0] outisk,
891  input wire [interface_data_width - 1:0] indata,
892  input wire [interface_isk_width - 1:0] inisk
893 );
894 
896 
898 
899 reg [31:0] wordcounter;
900 wire almost_empty_rd;
901 wire empty_rd;
902 wire full_wr;
903 wire val_rd;
904 
905 always @ (posedge usrclk)
906  wordcounter <= reset | wordcounter == (div - 1) ? 32'h0 : wordcounter + 1'b1;
907 
908 
911 assign val_rd = ~almost_empty_rd & ~empty_rd & wordcounter == (div - 1);
912 
915  .log_depth (3)
916 )
917 fifo(
918  .rst_rd (reset),
919  .rst_wr (reset),
920  .clk_wr (usrclk2),
921  .val_wr (1'b1),
922  .data_wr ({inisk, indata}),
927  .empty_rd (empty_rd),
931 );
932 
933 endmodule
936  input wire reset,
937  output wire TXP,
938  output wire TXN,
939 
940  input wire [63:0] TXDATA,
941  input wire TXUSRCLK,
942  input wire TXUSRCLK2,
944 // 8/10 encoder
945  input wire [7:0] TX8B10BBYPASS,
946  input wire TX8B10BEN,
947  input wire [7:0] TXCHARDISPMODE,
948  input wire [7:0] TXCHARDISPVAL,
949  input wire [7:0] TXCHARISK,
951 // TX Buffer
952  output wire [1:0] TXBUFSTATUS,
953 
954 // TX Polarity
955  input wire TXPOLARITY,
956 
957 // TX Fabric Clock Control
958  input wire [2:0] TXRATE,
959  output wire TXRATEDONE,
961 // TX OOB
962  input wire TXCOMINIT,
963  input wire TXCOMWAKE,
964  output wire TXCOMFINISH,
965 
966 // TX Driver Control
967  input wire TXELECIDLE,
968 
969 // internal
970  input wire serial_clk
971 );
972 parameter TX_DATA_WIDTH = 20;
973 parameter TX_INT_DATAWIDTH = 0;
974 
975 parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111;
976 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
977 
978 function integer calc_idw;
979  input TX8B10BEN;
980 // input TX_INT_DATAWIDTH;
981 // input TX_DATA_WIDTH;
982  begin
983 // if (TX8B10BEN == 1)
984  calc_idw = TX_INT_DATAWIDTH == 1 ? 40 : 20;
985 /* else
986  begin
987  if (TX_INT_DATAWIDTH == 1)
988  calc_idw = TX_DATA_WIDTH == 32 ? 32
989  : TX_DATA_WIDTH == 40 ? 40
990  : TX_DATA_WIDTH == 64 ? 32 : 40;
991  else
992  calc_idw = TX_DATA_WIDTH == 16 ? 16
993  : TX_DATA_WIDTH == 20 ? 20
994  : TX_DATA_WIDTH == 32 ? 16 : 20;
995  end**/
996  end
997 endfunction
998 
999 function integer calc_ifdw;
1000  input TX8B10BEN;
1001  begin
1002 // if (TX8B10BEN == 1)
1003  calc_ifdw = TX_DATA_WIDTH == 16 ? 20 :
1004  TX_DATA_WIDTH == 32 ? 40 :
1005  TX_DATA_WIDTH == 64 ? 80 : TX_DATA_WIDTH;
1006 /* else
1007  begin
1008  if (TX_INT_DATAWIDTH == 1)
1009  calc_ifdw = TX_DATA_WIDTH == 32 ? 32
1010  : TX_DATA_WIDTH == 40 ? 40
1011  : TX_DATA_WIDTH == 64 ? 64 : 80;
1012  else
1013  calc_ifdw = TX_DATA_WIDTH == 16 ? 16
1014  : TX_DATA_WIDTH == 20 ? 20
1015  : TX_DATA_WIDTH == 32 ? 16 : 20;
1016  end**/
1017  end
1018 endfunction
1019 
1020 // can be 20 or 40, if it shall be 16 or 32, extra bits wont be used
1021 localparam internal_data_width = calc_idw(1);//PTX8B10BEN);//, TX_INT_DATAWIDTH, TX_DATA_WIDTH);
1022 localparam interface_data_width = calc_ifdw(1);
1023 localparam internal_isk_width = internal_data_width / 10;
1024 localparam interface_isk_width = interface_data_width / 10;
1025 // used in case of TX8B10BEN = 0
1026 localparam data_width_odd = TX_DATA_WIDTH == 16 | TX_DATA_WIDTH == 32 | TX_DATA_WIDTH == 64;
1027 // TX PMA
1028 
1029 // serializer
1030 wire serial_data;
1031 wire line_idle;
1032 wire line_idle_pcs; // line_idle in pcs clock domain
1033 wire [internal_data_width - 1:0] ser_input;
1034 wire oob_active;
1035 reg oob_in_process;
1036 always @ (posedge TXUSRCLK)
1037  oob_in_process <= reset | TXCOMFINISH ? 1'b0 : TXCOMINIT | TXCOMWAKE ? 1'b1 : oob_in_process;
1038 
1039 assign TXP = ~line_idle ? serial_data : 1'bz;
1040 assign TXN = ~line_idle ? ~serial_data : 1'bz;
1041 
1042 
1043 assign line_idle_pcs = (TXELECIDLE | oob_in_process) & ~oob_active | reset;
1044 
1045 // Serializer
1046 wire [internal_data_width - 1:0] parallel_data;
1047 wire [internal_data_width - 1:0] inv_parallel_data;
1048 
1050  .width (internal_data_width)
1051 )
1052 ser(
1053  .reset (reset),
1054  .trim (data_width_odd & ~TX8B10BEN),
1055  .inclk (TXUSRCLK),
1056  .outclk (serial_clk),
1057  .indata (inv_parallel_data),
1058  .idle_in (line_idle_pcs),
1059  .outdata (serial_data),
1060  .idle_out (line_idle)
1061 );
1062 
1063 // TX PCS
1064 
1065 // fit data width
1066 localparam iface_databus_width = interface_data_width * 8 / 10;
1067 localparam intern_databus_width = internal_data_width * 8 / 10;
1068 
1069 wire [intern_databus_width - 1:0] internal_data;
1070 wire [internal_isk_width - 1:0] internal_isk;
1071 wire [internal_isk_width - 1:0] internal_dispval;
1072 wire [internal_isk_width - 1:0] internal_dispmode;
1073 wire [internal_data_width - 1:0] dataiface_data_out;
1074 wire [interface_data_width - 1:0] dataiface_data_in;
1075 
1076 //assign dataiface_data_in = {TXCHARDISPMODE[interface_isk_width - 1:0], TXCHARDISPVAL[interface_isk_width - 1:0], TXDATA[iface_databus_width - 1:0]};
1077 genvar ii;
1078 localparam outdiv = interface_data_width / internal_data_width;
1079 generate
1080 for (ii = 1; ii < (outdiv + 1); ii = ii + 1)
1081 begin: asdadfdsf
1082  assign dataiface_data_in[ii*internal_data_width - 1-:internal_data_width] = {TXCHARDISPMODE[ii*interface_isk_width - 1-:interface_isk_width],
1083  TXCHARDISPVAL[ii*interface_isk_width - 1-:interface_isk_width],
1084  TXDATA[ii*intern_databus_width - 1-:intern_databus_width]
1085  };
1086 end
1087 endgenerate
1088 
1089 assign internal_dispmode = dataiface_data_out[intern_databus_width + internal_isk_width + internal_isk_width - 1-:internal_isk_width];
1090 assign internal_dispval = dataiface_data_out[intern_databus_width + internal_isk_width - 1-:internal_isk_width];
1091 assign internal_data = dataiface_data_out[intern_databus_width - 1:0];
1092 
1094  .internal_data_width (internal_data_width),
1095  .interface_data_width (interface_data_width),
1096  .internal_isk_width (internal_isk_width),
1097  .interface_isk_width (interface_isk_width)
1098 )
1099 dataiface
1100 (
1101  .usrclk (TXUSRCLK),
1102  .usrclk2 (TXUSRCLK2),
1104  .outdata (dataiface_data_out),
1105  .outisk (internal_isk),
1106  .indata (dataiface_data_in),
1107  .inisk (TXCHARISK[interface_isk_width - 1:0])
1108 );
1109 
1110 
1111 wire [internal_data_width - 1:0] polarized_data;
1112 
1113 // invert data (get words as [abdceifghj] after 8/10, each word shall be transmitter in a reverse bit order)
1114 genvar jj;
1115 generate
1116  for (ii = 0; ii < internal_data_width; ii = ii + 10)
1117  begin: select_each_word
1118  for (jj = 0; jj < 10; jj = jj + 1)
1119  begin: reverse_bits
1120  assign inv_parallel_data[ii + jj] = TX8B10BEN ? polarized_data[ii + 9 - jj] : polarized_data[ii + jj];
1121  end
1122  end
1123 endgenerate
1124 
1125 // Polarity:
1127 assign ser_input = polarized_data;
1128 generate
1129 for (ii = 0; ii < internal_data_width; ii = ii + 1)
1130 begin: invert_dataword
1131  assign polarized_data[ii] = TXPOLARITY == 1'b1 ? ~parallel_data[ii] : parallel_data[ii];
1132 end
1133 endgenerate
1134 
1135 
1136 // SATA OOB
1137 reg disparity;
1138 wire [internal_data_width - 1:0] oob_data;
1139 wire oob_val;
1140 
1141 assign oob_active = oob_val;
1143  .width (internal_data_width),
1146 )
1147 tx_oob(
1151 
1152  .clk (TXUSRCLK),
1155  .outdata (oob_data),
1156  .outval (oob_val)
1157 );
1158 
1159 // Disparity control
1160 wire next_disparity;
1161 always @ (posedge TXUSRCLK)
1162  disparity <= reset | line_idle_pcs? 1'b0 : oob_val ? ~disparity : next_disparity;
1163 
1164 // 8/10 endoding
1165 wire [internal_data_width - 1:0] encoded_data;
1167  .iwidth (intern_databus_width),//TX_DATA_WIDTH),
1168  .iskwidth (internal_isk_width),
1169  .owidth (internal_data_width)
1170 // .oddwidth (data_width_odd)
1171 )
1172 encoder_8x10(
1173  .TX8B10BBYPASS (TX8B10BBYPASS[internal_isk_width - 1:0]),
1174  .TX8B10BEN (TX8B10BEN),
1175  .TXCHARDISPMODE (internal_dispmode),
1176  .TXCHARDISPVAL (internal_dispval),
1177  .TXCHARISK (internal_isk),
1178  .disparity (disparity),
1179  .data_in (internal_data),
1182 );
1183 
1184 // OOB-OrdinaryData Arbiter
1185 assign parallel_data = oob_val ? oob_data : encoded_data;
1186 
1187 
1188 endmodule
1189 
1190  /**
1191  For now contains only deserializer, oob, 10x8 decoder, aligner and polarity invertor blocks
1192  ***/
1193 // TODO resync all output signals
1194 // simplified resynchronisation fifo, could cause metastability
1195 // because of that shall not be syntesisable
1196 // TODO add shift registers and gray code to fix that
1197 `ifndef RESYNC_FIFO_NOSYNT_V
1198 `define RESYNC_FIFO_NOSYNT_V
1199 module resync_fifo_nonsynt #(
1200  parameter [31:0] width = 20,
1201  //parameter [31:0] depth = 7
1202  parameter [31:0] log_depth = 3
1203 )
1204 (
1205  input wire rst_rd,
1206  input wire rst_wr,
1207  input wire clk_wr,
1208  input wire val_wr,
1209  input wire [width - 1:0] data_wr,
1210  input wire clk_rd,
1211  input wire val_rd,
1212  output wire [width - 1:0] data_rd,
1214  output wire empty_rd,
1215  output wire almost_empty_rd,
1216  output wire full_wr
1217 );
1218 /* function integer clogb2; input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1219 function integer clogb2; input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1220  input [31:0] value; begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1221  begin value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1222  value = value - 1; for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1223  for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1224  value = value >> 1; end end endfunction localparam log_depth = clogb2(depth); */
1225  end end endfunction localparam log_depth = clogb2(depth); */
1226  end endfunction localparam log_depth = clogb2(depth); */
1227 endfunction localparam log_depth = clogb2(depth); */
1228  localparam log_depth = clogb2(depth); */
1229 localparam log_depth = clogb2(depth); */
1230 */
1232 
1233 
1234 
1236 
1237 
1238 
1239 
1240 
1241 
1242 
1243 localparam depth = 1 << log_depth;
1244 
1245 reg [width -1:0] fifo [depth - 1:0];
1246 // wr_clk domain
1247 reg [log_depth - 1:0] cnt_wr;
1248 // rd_clk domain
1249 reg [log_depth - 1:0] cnt_rd;
1250 
1251 assign data_rd = fifo[cnt_rd];
1252 assign empty_rd = cnt_wr == cnt_rd;
1253 assign full_wr = (cnt_wr + 1'b1) == cnt_rd;
1254 assign almost_empty_rd = (cnt_rd + 1'b1) == cnt_wr;
1255 
1256 always @ (posedge clk_wr)
1257  fifo[cnt_wr] <= val_wr ? data_wr : fifo[cnt_wr];
1259 always @ (posedge clk_wr)
1260  cnt_wr <= rst_wr ? 0 : val_wr ? cnt_wr + 1'b1 : cnt_wr;
1261 
1262 always @ (posedge clk_rd)
1263  cnt_rd <= rst_rd ? 0 : val_rd ? cnt_rd + 1'b1 : cnt_rd;
1264 
1265 endmodule
1266 `endif
1267 
1268 module gtxe2_chnl_rx_des #(
1269  parameter [31:0] width = 20
1270 )
1271 (
1272  input wire reset,
1273  input wire trim,
1274  input wire inclk,
1275  input wire outclk,
1276  input wire indata,
1277  output wire [width - 1:0] outdata
1278 );
1279 
1280 localparam trimmed_width = width * 4 / 5;
1281 
1282 reg [31:0] bitcounter;
1283 reg [width - 1:0] inbuffer;
1285 wire full_wr;
1286 wire val_wr;
1287 wire val_rd;
1290 reg need_reset = 1;
1293 always @ (posedge inclk)
1295 
1296 genvar ii;
1297 generate
1298 for (ii = 0; ii < width; ii = ii + 1)
1299 begin: splicing
1300  always @ (posedge inclk)
1301  if ((ii >= trimmed_width) & trim)
1302  inbuffer[ii] <= 1'bx;
1303  else
1304  inbuffer[ii] <= reset ? 1'b0 : (bitcounter == ii) ? indata : inbuffer[ii];
1305 end
1306 endgenerate
1308 assign val_rd = ~empty_rd & ~almost_empty_rd;
1309 assign val_wr = ~full_wr & bitcounter == (width - 1);
1310 
1311 always @ (posedge inclk) begin
1312  if (reset) need_reset <= 0;
1313  else if (full_wr && !need_reset) begin
1314  $display("1:FIFO in %m is full, that is not an appropriate behaviour - needs reset @%time", $time);
1315  bitcounter <= 'bx;
1316  need_reset <= 1'b1;
1317 // $finish;
1318  end
1319 end
1321  .width (width),
1322  .log_depth (3)
1324 fifo(
1328  .val_wr (val_wr),
1336 
1338 );
1339 
1340 
1341 endmodule
1342 
1343 // doesnt support global parameters for now. instead uses localparams
1344 // in case global parameters are needed, have to translate them in terms of localparams
1345 module gtxe2_chnl_rx_oob #(
1346  parameter width = 20,
1347 
1348 // parameters are not used for now
1349  parameter [2:0] SATA_BURST_VAL = 3'b100,
1350  parameter [2:0] SATA_EIDLE_VAL = 3'b100,
1351  parameter SATA_MIN_INIT = 12,
1352  parameter SATA_MIN_WAKE = 4,
1353  parameter SATA_MAX_BURST = 8,
1354  parameter SATA_MIN_BURST = 4,
1355  parameter SATA_MAX_INIT = 21,
1356  parameter SATA_MAX_WAKE = 7
1357 )
1358 (
1359  input wire reset,
1360  input wire clk,
1361  input wire usrclk2,
1362  input wire RXN,
1363  input wire RXP,
1364 
1365  input wire [1:0] RXELECIDLEMODE,
1366  output wire RXELECIDLE,
1368  output wire RXCOMINITDET,
1369  output wire RXCOMWAKEDET
1370 );
1372 
1373 localparam burst_min_len = 150;
1374 localparam burst_max_len = 340;
1375 localparam wake_idle_min_len = 150;
1376 localparam wake_idle_max_len = 340;
1377 localparam init_idle_min_len = 450;
1378 localparam init_idle_max_len = 990;
1379 localparam wake_bursts_cnt = SATA_BURST_VAL;
1380 localparam init_bursts_cnt = SATA_BURST_VAL;
1381 
1382 wire idle;
1383 assign idle = (RXN == RXP) | (RXP === 1'bx) | (RXP === 1'bz);
1384 
1385 wire state_notrans;
1386 wire state_error; //nostrans substate
1387 wire state_done; //notrans substate
1388 reg state_idle;
1389 reg state_burst;
1390 
1391 wire set_notrans;
1392 wire set_done;
1393 wire set_error;
1394 wire set_idle;
1400 always @ (posedge clk)
1401 begin
1404 end
1405 
1406 assign set_notrans = set_done | set_error;
1407 assign set_idle = state_burst & clr_burst & idle;
1408 assign set_burst = state_notrans & ~idle | state_idle & clr_idle & ~idle;
1409 assign clr_idle = ~idle | set_notrans;
1410 assign clr_burst = idle | set_notrans;
1411 
1412 reg [31:0] burst_len;
1413 reg [31:0] idle_len;
1414 reg [31:0] bursts_cnt;
1415 always @ (posedge clk)
1416 begin
1420 end
1423 wire idle_len_violation;
1424 wire wake_idle_violation;
1426 //reg burst_len_ok;
1430 reg init_idle_curr_ok;
1435 always @ (posedge clk)
1436 begin
1439 // burst_len_ok <= reset | state_notrans ? 1'b1 : burst_len_violation ? 1'b0 : burst_len_ok;
1444 end
1454 assign set_done = ~set_error & (done_wake | done_init);
1455 
1456 // just to rxcominit(wake)det be synchronous to usrclk2
1457 reg rxcominitdet_clk = 1'b0;
1458 reg rxcominitdet_usrclk2 = 1'b0;
1459 reg rxcomwakedet_clk = 1'b0;
1460 reg rxcomwakedet_usrclk2 = 1'b0;
1461 always @ (posedge clk)
1462 begin
1465 end
1466 always @ (posedge usrclk2)
1467 begin
1470 end
1473 assign RXELECIDLE = RXP === 1'bz ? 1'b1 : RXP === 1'bx ? 1'b1 : RXP == RXN;
1474 
1475 endmodule
1476 
1477 // always enabled, wasnt tested with width parameters, disctinct from 20
1478 module gtxe2_chnl_rx_10x8dec #(
1479  parameter iwidth = 20,
1480  parameter iskwidth = 2,
1481  parameter owidth = 20,
1482 
1483  parameter DEC_MCOMMA_DETECT = "TRUE",
1484  parameter DEC_PCOMMA_DETECT = "TRUE"
1485 )
1486 (
1487  input wire clk,
1488  input wire rst,
1489  input wire [iwidth - 1:0] indata,
1490  input wire RX8B10BEN,
1491  input wire data_width_odd,
1492 
1493  output wire [iskwidth - 1:0] rxchariscomma,
1494  output wire [iskwidth - 1:0] rxcharisk,
1495  output wire [iskwidth - 1:0] rxdisperr,
1496  output wire [iskwidth - 1:0] rxnotintable,
1497 
1498  output wire [owidth - 1:0] outdata
1499 );
1500 wire [iskwidth - 1:0] rxcharisk_dec;
1501 wire [iskwidth - 1:0] rxdisperr_dec;
1502 wire [owidth - 1:0] outdata_dec;
1503 
1504 localparam word_count = iwidth / 10;
1505 localparam add_2out_bits = owidth == 20 | owidth == 40 | owidth == 80 ? "TRUE" : "FALSE";
1506 
1507 wire [iwidth - 2 * word_count - 1:0] pure_data;
1508 wire [iwidth - 1:0] data;
1509 wire [word_count - 1:0] disp; //consecutive disparity calculations;
1510 wire [word_count - 1:0] disp_word; // 0 - negative, 1 - positive
1511 wire [word_count - 1:0] no_disp_word; // ignore disp_word, '1's and '0's have equal count
1512 wire [word_count - 1:0] disp_err;
1513 
1514 reg disp_init; // disparity after last clock's portion of data
1515 always @ (posedge clk)
1516  disp_init <= rst ? 1'b0 : disp[word_count - 1];
1517 
1518 genvar ii;
1519 generate
1520 for (ii = 0; ii < word_count; ii = ii + 1)
1521 begin: asdf
1522  //data = {1'(is in table) + 3'(decoded 4/3) + 1'(is in table) + 5'(decoded 6/5)}
1523 
1524  //6/5 decoding
1525  assign data[ii*10+5:ii*10] = rxcharisk_dec[ii] ? (
1526  indata[ii*10 + 9:ii*10] == 10'b0010111100 | indata[ii*10 + 9:ii*10] == 10'b1101000011 ? 6'b011100 :
1527  indata[ii*10 + 9:ii*10] == 10'b1001111100 | indata[ii*10 + 9:ii*10] == 10'b0110000011 ? 6'b011100 :
1528  indata[ii*10 + 9:ii*10] == 10'b1010111100 | indata[ii*10 + 9:ii*10] == 10'b0101000011 ? 6'b011100 :
1529  indata[ii*10 + 9:ii*10] == 10'b1100111100 | indata[ii*10 + 9:ii*10] == 10'b0011000011 ? 6'b011100 :
1530  indata[ii*10 + 9:ii*10] == 10'b0100111100 | indata[ii*10 + 9:ii*10] == 10'b1011000011 ? 6'b011100 :
1531  indata[ii*10 + 9:ii*10] == 10'b0101111100 | indata[ii*10 + 9:ii*10] == 10'b1010000011 ? 6'b011100 :
1532  indata[ii*10 + 9:ii*10] == 10'b0110111100 | indata[ii*10 + 9:ii*10] == 10'b1001000011 ? 6'b011100 :
1533  indata[ii*10 + 9:ii*10] == 10'b0001111100 | indata[ii*10 + 9:ii*10] == 10'b1110000011 ? 6'b011100 :
1534  indata[ii*10 + 9:ii*10] == 10'b0001010111 | indata[ii*10 + 9:ii*10] == 10'b1110101000 ? 6'b010111 :
1535  indata[ii*10 + 9:ii*10] == 10'b0001011011 | indata[ii*10 + 9:ii*10] == 10'b1110100100 ? 6'b011011 :
1536  indata[ii*10 + 9:ii*10] == 10'b0001011101 | indata[ii*10 + 9:ii*10] == 10'b1110100010 ? 6'b011101 :
1537  indata[ii*10 + 9:ii*10] == 10'b0001011110 | indata[ii*10 + 9:ii*10] == 10'b1110100001 ? 6'b011110 :
1538  6'b100000)
1539  :
1540  (indata[ii*10 + 5:ii*10] == 6'b111001 | indata[ii*10 + 5:ii*10] == 6'b000110 ? 6'b000000 :// Data VVV
1541  indata[ii*10 + 5:ii*10] == 6'b101110 | indata[ii*10 + 5:ii*10] == 6'b010001 ? 6'b000001 :
1542  indata[ii*10 + 5:ii*10] == 6'b101101 | indata[ii*10 + 5:ii*10] == 6'b010010 ? 6'b000010 :
1543  indata[ii*10 + 5:ii*10] == 6'b100011 | indata[ii*10 + 5:ii*10] == 6'b100011 ? 6'b000011 :
1544  indata[ii*10 + 5:ii*10] == 6'b101011 | indata[ii*10 + 5:ii*10] == 6'b010100 ? 6'b000100 :
1545  indata[ii*10 + 5:ii*10] == 6'b100101 | indata[ii*10 + 5:ii*10] == 6'b100101 ? 6'b000101 :
1546  indata[ii*10 + 5:ii*10] == 6'b100110 | indata[ii*10 + 5:ii*10] == 6'b100110 ? 6'b000110 :
1547  indata[ii*10 + 5:ii*10] == 6'b000111 | indata[ii*10 + 5:ii*10] == 6'b111000 ? 6'b000111 :
1548  indata[ii*10 + 5:ii*10] == 6'b100111 | indata[ii*10 + 5:ii*10] == 6'b011000 ? 6'b001000 :
1549  indata[ii*10 + 5:ii*10] == 6'b101001 | indata[ii*10 + 5:ii*10] == 6'b101001 ? 6'b001001 :
1550  indata[ii*10 + 5:ii*10] == 6'b101010 | indata[ii*10 + 5:ii*10] == 6'b101010 ? 6'b001010 :
1551  indata[ii*10 + 5:ii*10] == 6'b001011 | indata[ii*10 + 5:ii*10] == 6'b001011 ? 6'b001011 :
1552  indata[ii*10 + 5:ii*10] == 6'b101100 | indata[ii*10 + 5:ii*10] == 6'b101100 ? 6'b001100 :
1553  indata[ii*10 + 5:ii*10] == 6'b001101 | indata[ii*10 + 5:ii*10] == 6'b001101 ? 6'b001101 :
1554  indata[ii*10 + 5:ii*10] == 6'b001110 | indata[ii*10 + 5:ii*10] == 6'b001110 ? 6'b001110 :
1555  indata[ii*10 + 5:ii*10] == 6'b111010 | indata[ii*10 + 5:ii*10] == 6'b000101 ? 6'b001111 :
1556  indata[ii*10 + 5:ii*10] == 6'b110110 | indata[ii*10 + 5:ii*10] == 6'b001001 ? 6'b010000 :
1557  indata[ii*10 + 5:ii*10] == 6'b110001 | indata[ii*10 + 5:ii*10] == 6'b110001 ? 6'b010001 :
1558  indata[ii*10 + 5:ii*10] == 6'b110010 | indata[ii*10 + 5:ii*10] == 6'b110010 ? 6'b010010 :
1559  indata[ii*10 + 5:ii*10] == 6'b010011 | indata[ii*10 + 5:ii*10] == 6'b010011 ? 6'b010011 :
1560  indata[ii*10 + 5:ii*10] == 6'b110100 | indata[ii*10 + 5:ii*10] == 6'b110100 ? 6'b010100 :
1561  indata[ii*10 + 5:ii*10] == 6'b010101 | indata[ii*10 + 5:ii*10] == 6'b010101 ? 6'b010101 :
1562  indata[ii*10 + 5:ii*10] == 6'b010110 | indata[ii*10 + 5:ii*10] == 6'b010110 ? 6'b010110 :
1563  indata[ii*10 + 5:ii*10] == 6'b010111 | indata[ii*10 + 5:ii*10] == 6'b101000 ? 6'b010111 :
1564  indata[ii*10 + 5:ii*10] == 6'b110011 | indata[ii*10 + 5:ii*10] == 6'b001100 ? 6'b011000 :
1565  indata[ii*10 + 5:ii*10] == 6'b011001 | indata[ii*10 + 5:ii*10] == 6'b011001 ? 6'b011001 :
1566  indata[ii*10 + 5:ii*10] == 6'b011010 | indata[ii*10 + 5:ii*10] == 6'b011010 ? 6'b011010 :
1567  indata[ii*10 + 5:ii*10] == 6'b011011 | indata[ii*10 + 5:ii*10] == 6'b100100 ? 6'b011011 :
1568  indata[ii*10 + 5:ii*10] == 6'b011100 | indata[ii*10 + 5:ii*10] == 6'b011100 ? 6'b011100 :
1569  indata[ii*10 + 5:ii*10] == 6'b011101 | indata[ii*10 + 5:ii*10] == 6'b100010 ? 6'b011101 :
1570  indata[ii*10 + 5:ii*10] == 6'b011110 | indata[ii*10 + 5:ii*10] == 6'b100001 ? 6'b011110 :
1571  indata[ii*10 + 5:ii*10] == 6'b110101 | indata[ii*10 + 5:ii*10] == 6'b001010 ? 6'b011111 :
1572  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :// Controls VVV
1573 /* indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1574  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1575  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1576  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1577  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1578  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1579  indata[ii*10 + 5:ii*10] == 6'b111100 | indata[ii*10 + 5:ii*10] == 6'b000011 ? 6'b011100 :
1580  indata[ii*10 + 5:ii*10] == 6'b010111 | indata[ii*10 + 5:ii*10] == 6'b101000 ? 6'b010111 :
1581  indata[ii*10 + 5:ii*10] == 6'b011011 | indata[ii*10 + 5:ii*10] == 6'b100100 ? 6'b011011 :
1582  indata[ii*10 + 5:ii*10] == 6'b011101 | indata[ii*10 + 5:ii*10] == 6'b100010 ? 6'b011101 :
1583  indata[ii*10 + 5:ii*10] == 6'b011110 | indata[ii*10 + 5:ii*10] == 6'b100001 ? 6'b011110 :**/
1584  6'b100000); // not in a table
1585  //4/3 decoding
1586  assign data[ii*10+ 9:ii*10+ 6] = rxcharisk_dec[ii] ? (
1587  indata[ii*10 + 9:ii*10] == 10'b0010111100 | indata[ii*10 + 9:ii*10] == 10'b1101000011 ? 4'b0000 :
1588  indata[ii*10 + 9:ii*10] == 10'b1001111100 | indata[ii*10 + 9:ii*10] == 10'b0110000011 ? 4'b0001 :
1589  indata[ii*10 + 9:ii*10] == 10'b1010111100 | indata[ii*10 + 9:ii*10] == 10'b0101000011 ? 4'b0010 :
1590  indata[ii*10 + 9:ii*10] == 10'b1100111100 | indata[ii*10 + 9:ii*10] == 10'b0011000011 ? 4'b0011 :
1591  indata[ii*10 + 9:ii*10] == 10'b0100111100 | indata[ii*10 + 9:ii*10] == 10'b1011000011 ? 4'b0100 :
1592  indata[ii*10 + 9:ii*10] == 10'b0101111100 | indata[ii*10 + 9:ii*10] == 10'b1010000011 ? 4'b0101 :
1593  indata[ii*10 + 9:ii*10] == 10'b0110111100 | indata[ii*10 + 9:ii*10] == 10'b1001000011 ? 4'b0110 :
1594  indata[ii*10 + 9:ii*10] == 10'b0001111100 | indata[ii*10 + 9:ii*10] == 10'b1110000011 ? 4'b0111 :
1595  indata[ii*10 + 9:ii*10] == 10'b0001010111 | indata[ii*10 + 9:ii*10] == 10'b1110101000 ? 4'b0111 :
1596  indata[ii*10 + 9:ii*10] == 10'b0001011011 | indata[ii*10 + 9:ii*10] == 10'b1110100100 ? 4'b0111 :
1597  indata[ii*10 + 9:ii*10] == 10'b0001011101 | indata[ii*10 + 9:ii*10] == 10'b1110100010 ? 4'b0111 :
1598  indata[ii*10 + 9:ii*10] == 10'b0001011110 | indata[ii*10 + 9:ii*10] == 10'b1110100001 ? 4'b0111 :
1599  4'b1000)
1600  :
1601  (indata[ii*10 + 9:ii*10 + 6] == 4'b1101 | indata[ii*10 + 9:ii*10 + 6] == 4'b0010 ? 4'b0000 : // Data VVV
1602  indata[ii*10 + 9:ii*10 + 6] == 4'b1001 | indata[ii*10 + 9:ii*10 + 6] == 4'b1001 ? 4'b0001 :
1603  indata[ii*10 + 9:ii*10 + 6] == 4'b1010 | indata[ii*10 + 9:ii*10 + 6] == 4'b1010 ? 4'b0010 :
1604  indata[ii*10 + 9:ii*10 + 6] == 4'b0011 | indata[ii*10 + 9:ii*10 + 6] == 4'b1100 ? 4'b0011 :
1605  indata[ii*10 + 9:ii*10 + 6] == 4'b1011 | indata[ii*10 + 9:ii*10 + 6] == 4'b0100 ? 4'b0100 :
1606  indata[ii*10 + 9:ii*10 + 6] == 4'b0101 | indata[ii*10 + 9:ii*10 + 6] == 4'b0101 ? 4'b0101 :
1607  indata[ii*10 + 9:ii*10 + 6] == 4'b0110 | indata[ii*10 + 9:ii*10 + 6] == 4'b0110 ? 4'b0110 :
1608  indata[ii*10 + 9:ii*10 + 6] == 4'b0111 | indata[ii*10 + 9:ii*10 + 6] == 4'b1110 ? 4'b0111 :
1609  indata[ii*10 + 9:ii*10 + 6] == 4'b0001 | indata[ii*10 + 9:ii*10 + 6] == 4'b1000 ? 4'b0111 :
1610  indata[ii*10 + 9:ii*10 + 6] == 4'b0010 | indata[ii*10 + 9:ii*10 + 6] == 4'b1101 ? 4'b0000 : // Control VVV
1611 /* indata[ii*10 + 9:ii*10 + 6] == 4'b1001 | indata[ii*10 + 9:ii*10 + 6] == 4'b0110 ? 4'b0001 :
1612  indata[ii*10 + 9:ii*10 + 6] == 4'b1010 | indata[ii*10 + 9:ii*10 + 6] == 4'b0101 ? 4'b0010 :
1613  indata[ii*10 + 9:ii*10 + 6] == 4'b1100 | indata[ii*10 + 9:ii*10 + 6] == 4'b0011 ? 4'b0011 :
1614  indata[ii*10 + 9:ii*10 + 6] == 4'b0100 | indata[ii*10 + 9:ii*10 + 6] == 4'b1011 ? 4'b0100 :
1615  indata[ii*10 + 9:ii*10 + 6] == 4'b0101 | indata[ii*10 + 9:ii*10 + 6] == 4'b1010 ? 4'b0101 :
1616  indata[ii*10 + 9:ii*10 + 6] == 4'b0110 | indata[ii*10 + 9:ii*10 + 6] == 4'b1001 ? 4'b0110 :
1617  indata[ii*10 + 9:ii*10 + 6] == 4'b0001 | indata[ii*10 + 9:ii*10 + 6] == 4'b1110 ? 4'b0111 :**/
1618  4'b1000); // not in a table
1619  assign disp_word[ii] = (4'd0 + indata[ii*10] + indata[ii*10 + 1] + indata[ii*10 + 2] + indata[ii*10 + 3] + indata[ii*10 + 4]
1620  + indata[ii*10 + 5] + indata[ii*10 + 6] + indata[ii*10 + 7] + indata[ii*10 + 8] + indata[ii*10 + 9]) > 5;
1621  assign no_disp_word[ii]= (4'd0 + indata[ii*10] + indata[ii*10 + 1] + indata[ii*10 + 2] + indata[ii*10 + 3] + indata[ii*10 + 4]
1622  + indata[ii*10 + 5] + indata[ii*10 + 6] + indata[ii*10 + 7] + indata[ii*10 + 8] + indata[ii*10 + 9]) == 5;
1624  assign pure_data[ii*8 + 7:ii*8] = {data[ii*10 + 8:ii*10 + 6], data[ii*10 + 4:ii*10]};
1626  assign outdata_dec[ii*8 + 7:ii*8] = pure_data[ii*8 + 7:ii*8];
1628  assign outdata[ii*8 + 7:ii*8] = RX8B10BEN ? outdata_dec[ii*8 + 7:ii*8] : ~data_width_odd ? indata[ii*10 + 7:ii*10] : indata[ii*8 + 7:ii*8];
1629  assign rxcharisk[ii] = RX8B10BEN ? rxcharisk_dec[ii] : ~data_width_odd ? indata[ii*10 + 8] : 1'bx;
1630  assign rxdisperr[ii] = RX8B10BEN ? rxdisperr_dec[ii] : ~data_width_odd ? indata[ii*10 + 9] : 1'bx;
1631 /* if (RX8B10BEN) begin
1632  end
1633  else
1634  if (data_width_odd) begin
1635  assign outdata[ii*8 + 7:ii*8] = indata[ii*8 + 7:ii*8];
1636  assign rxcharisk[ii] = 1'bx;
1637  assign rxdisperr[ii] = 1'bx;
1638  end
1639  else begin
1640  assign outdata[ii*8 + 7:ii*8] = indata[ii*10 + 7:ii*10];
1641  assign rxcharisk[ii] = indata[ii*10 + 8];
1642  assign rxdisperr[ii] = indata[ii*10 + 9];
1643  end**/
1644 end
1645 endgenerate
1647 assign disp_err = ~no_disp_word & (~disp_word ^ {disp[word_count - 2:0], disp_init});
1648 assign disp = ~no_disp_word & disp_word | no_disp_word & {disp[word_count - 2:0], disp_init};
1651 generate
1652 for (ii = 0; ii < word_count; ii = ii + 1)
1653 begin:dfsga
1654  assign rxnotintable[ii] = ii >= word_count ? 1'b0 : data[ii*10 + 9] | data[ii*10 + 5];
1655 
1656  assign rxdisperr_dec[ii] = ii >= word_count ? 1'b0 : disp_err[ii];
1657  assign rxcharisk_dec[ii] = ii >= word_count ? 1'b0 :
1658  indata[ii*10 + 9:ii*10] == 10'b0010111100 | indata[ii*10 + 9:ii*10] == 10'b1101000011 |
1659  indata[ii*10 + 9:ii*10] == 10'b1001111100 | indata[ii*10 + 9:ii*10] == 10'b0110000011 |
1660  indata[ii*10 + 9:ii*10] == 10'b1010111100 | indata[ii*10 + 9:ii*10] == 10'b0101000011 |
1661  indata[ii*10 + 9:ii*10] == 10'b1100111100 | indata[ii*10 + 9:ii*10] == 10'b0011000011 |
1662  indata[ii*10 + 9:ii*10] == 10'b0100111100 | indata[ii*10 + 9:ii*10] == 10'b1011000011 |
1663  indata[ii*10 + 9:ii*10] == 10'b0101111100 | indata[ii*10 + 9:ii*10] == 10'b1010000011 |
1664  indata[ii*10 + 9:ii*10] == 10'b0110111100 | indata[ii*10 + 9:ii*10] == 10'b1001000011 |
1665  indata[ii*10 + 9:ii*10] == 10'b0001111100 | indata[ii*10 + 9:ii*10] == 10'b1110000011 |
1666  indata[ii*10 + 9:ii*10] == 10'b0001010111 | indata[ii*10 + 9:ii*10] == 10'b1110101000 |
1667  indata[ii*10 + 9:ii*10] == 10'b0001011011 | indata[ii*10 + 9:ii*10] == 10'b1110100100 |
1668  indata[ii*10 + 9:ii*10] == 10'b0001011101 | indata[ii*10 + 9:ii*10] == 10'b1110100010 |
1669  indata[ii*10 + 9:ii*10] == 10'b0001011110 | indata[ii*10 + 9:ii*10] == 10'b1110100001;
1670 
1671  assign rxchariscomma[ii] = ii >= word_count ? 1'b0 :
1672  (indata[ii*10 + 9:ii*10] == 10'b1001111100 |
1673  indata[ii*10 + 9:ii*10] == 10'b0101111100 |
1674  indata[ii*10 + 9:ii*10] == 10'b0001111100) & DEC_PCOMMA_DETECT |
1675  (indata[ii*10 + 9:ii*10] == 10'b0110000011 |
1676  indata[ii*10 + 9:ii*10] == 10'b1010000011 |
1677  indata[ii*10 + 9:ii*10] == 10'b1110000011) & DEC_MCOMMA_DETECT;
1678 end
1679 endgenerate
1680 
1681 
1682 endmodule
1683 
1684 module gtxe2_chnl_rx_align #(
1685  parameter width = 20,
1686  parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011,
1687  parameter ALIGN_MCOMMA_DET = "TRUE",
1688  parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100,
1689  parameter ALIGN_PCOMMA_DET = "TRUE",
1690  parameter [9:0] ALIGN_COMMA_ENABLE = 10'b1111111111,
1691  parameter ALIGN_COMMA_DOUBLE = "FALSE",
1692  parameter ALIGN_COMMA_WORD = 1
1693 )
1695  input wire clk,
1696  input wire rst,
1697  input wire [width - 1:0] indata,
1698  output wire [width - 1:0] outdata,
1699 
1700  input wire rxelecidle,
1701 
1702  output wire RXBYTEISALIGNED,
1703  output wire RXBYTEREALIGN,
1704  output wire RXCOMMADET,
1705 
1706  input wire RXCOMMADETEN,
1707  input wire RXPCOMMAALIGNEN,
1708  input wire RXMCOMMAALIGNEN
1709 );
1710 
1711 localparam comma_width = ALIGN_COMMA_DOUBLE == "FALSE" ? 10 : 20;
1712 localparam window_size = width;//comma_width + width;
1713 
1714 // prepare a buffer to be scanned on comma matches
1715 reg [width - 1:0] indata_r;
1716 wire [width*2 - 1:0] data;
1717 
1718 // looking for matches in all related bit history - in 'data'
1719 assign data = {indata, indata_r};//{indata_r, indata};
1720 always @ (posedge clk)
1721  indata_r <= indata;
1722 
1723 // finding matches
1724 wire [comma_width - 1:0] comma_window [window_size - 1:0];
1725 //initial
1726 // for (idx = 0; idx < window_size; idx = idx + 1) $dumpvars(0, comma_width[idx]);
1727 wire [window_size - 1:0] comma_match; // shows all matches
1728 wire [window_size - 1:0] comma_pos; // shows the first match
1729 wire [window_size - 1:0] pcomma_match;
1730 wire [window_size - 1:0] mcomma_match;
1732 genvar ii;
1733 generate
1734 for (ii = 0; ii < window_size; ii = ii + 1)
1735 begin: filter
1736  assign comma_window[ii] = data[comma_width + ii - 1:ii];
1740 end
1741 endgenerate
1742 
1743 // so, comma_match indicates bits, from whose comma/doublecomma (or commas) occurs in the window buffer
1744 // all we need from now is to get one of these bits, [x], and say [x+width-1:x] is an aligned data
1745 
1746 // doing it in a hard way
1747 generate
1748 for (ii = 1; ii < window_size; ii = ii + 1)
1749 begin: filter_comma_pos
1750  assign comma_pos[ii] = comma_match[ii] & ~|comma_match[ii - 1:0];
1751 end
1752 endgenerate
1753 assign comma_pos[0] = comma_match[0];
1754 // so, comma_pos's '1' indicates the first comma occurence. there is only one '1' in the vector
1756 function integer clogb2;
1757  input [31:0] value;
1758  begin
1759  value = value - 1;
1760  for (clogb2 = 0; value > 0; clogb2 = clogb2 + 1) begin
1761  value = value >> 1;
1762  end
1763  end
1764 endfunction
1766 function integer powerof2;
1767  input [31:0] value;
1768  begin
1769  value = 1 << value;
1770  end
1771 endfunction
1772 
1773 localparam pwidth = clogb2(width * 2 -1);
1775 // decoding (finding an index, representing '1' in comma_pos)
1776 wire [pwidth - 1:0] pointer;
1777 reg [pwidth - 1:0] pointer_latched;
1778 wire pointer_set;
1779 wire [window_size - 1:0] pbits [pwidth - 1:0];
1780 genvar jj;
1781 generate
1782 for (ii = 0; ii < pwidth; ii = ii + 1)
1783 begin: for_each_pointers_bit
1784  for (jj = 0; jj < window_size; jj = jj + 1)
1785  begin: calculate_encoder_mask
1786  assign pbits[ii][jj] = jj[ii];
1787  end
1788  assign pointer[ii] = |(pbits[ii] & comma_pos);
1789 end
1790 endgenerate
1791 
1792 //here we are: pointer = index of a beginning of the required output data
1793 reg is_aligned;
1795 assign outdata = ~RXCOMMADETEN ? indata : pointer_set ? data[pointer + width - 1 -:width] : data[pointer_latched + width - 1 -:width];
1796 assign pointer_set = |comma_pos;
1797 assign RXCOMMADET = RXCOMMADETEN & pointer_set & (|pcomma_match & ALIGN_PCOMMA_DET == "TRUE" | |mcomma_match & ALIGN_MCOMMA_DET == "TRUE");
1799 assign RXBYTEREALIGN = RXCOMMADETEN & is_aligned & pointer_set;
1800 
1801 always @ (posedge clk)
1802 begin
1803  is_aligned <= rst | pointer_set === 1'bx | rxelecidle ? 1'b0 : ~is_aligned & pointer_set | is_aligned;
1804  pointer_latched <= rst ? {pwidth{1'b0}} : pointer_set ? pointer : pointer_latched;
1805 end
1806 
1807 endmodule
1808 
1809 /*
1810  According to the doc, p110
1811  If RX_INT_DATAWIDTH, the inner width = 32 bits, otherwise 16.
1812  */
1813 
1815  parameter internal_data_width = 16,
1816  parameter interface_data_width = 32,
1817  parameter internal_isk_width = 2,
1818  parameter interface_isk_width = 4
1820 (
1821  input wire usrclk,
1822  input wire usrclk2,
1823  input wire reset,
1824  output wire [interface_data_width - 1:0] outdata,
1825  output wire [interface_isk_width - 1:0] outisk,
1826  input wire [internal_data_width - 1:0] indata,
1827  input wire [internal_isk_width - 1:0] inisk,
1828  input wire realign
1829 );
1830 
1834 
1836 reg [interface_isk_width - 1:0] inbuffer_isk;
1837 reg [31:0] wordcounter;
1838 wire empty_rd;
1839 wire full_wr;
1840 wire val_wr;
1841 wire val_rd;
1842 wire almost_empty_rd;
1843 reg need_reset = 1;
1844 
1845 always @ (posedge usrclk)
1846  wordcounter <= reset ? 32'h0 : realign & ~(div == 0) ? 32'd1 : wordcounter == (div - 1) ? 32'h0 : wordcounter + 1'b1;
1847 
1848 genvar ii;
1849 generate
1850 for (ii = 0; ii < div; ii = ii + 1)
1851 begin: splicing
1852  always @ (posedge usrclk)
1854 end
1855 endgenerate
1856 generate
1857 for (ii = 0; ii < div; ii = ii + 1)
1858 begin: splicing2
1859  always @ (posedge usrclk)
1861 end
1862 endgenerate
1864 assign val_rd = ~empty_rd & ~almost_empty_rd;
1865 assign val_wr = ~full_wr & wordcounter == (div - 1);
1867 always @ (posedge usrclk)
1868  if (reset) need_reset <= 0;
1869  else if (full_wr && !need_reset) begin
1870  $display("2:FIFO in %m is full, that is not an appropriate behaviour, needs reset @%time", $time);
1872  need_reset <= 1;
1873 // $finish;
1874  end
1876 wire [interface_total_width - 1:0] resync;
1877 assign outdata = resync[interface_data_width - 1:0];
1879 
1881 generate
1884 else
1885  assign data_wr = {inisk, indata};
1886 endgenerate
1887 
1889  .width (interface_total_width),
1890  .log_depth (3)
1892 fifo(
1895  .clk_wr (usrclk),
1902  .empty_rd (empty_rd),
1904 
1906 );
1907 
1908 endmodule
1909 
1911  input wire reset,
1912  input wire RXP,
1913  input wire RXN,
1914 
1915  input wire RXUSRCLK,
1916  input wire RXUSRCLK2,
1917 
1918  output wire [63:0] RXDATA,
1919 
1920 // oob
1921  input wire [1:0] RXELECIDLEMODE,
1922  output wire RXELECIDLE,
1923 
1924  output wire RXCOMINITDET,
1925  output wire RXCOMWAKEDET,
1926 
1927 // polarity
1928  input wire RXPOLARITY,
1930 // aligner
1931  output wire RXBYTEISALIGNED,
1932  output wire RXBYTEREALIGN,
1933  output wire RXCOMMADET,
1934 
1935  input wire RXCOMMADETEN,
1936  input wire RXPCOMMAALIGNEN,
1937  input wire RXMCOMMAALIGNEN,
1938 
1939 // 10/8 decoder
1940  input wire RX8B10BEN,
1941 
1942  output wire [7:0] RXCHARISCOMMA,
1943  output wire [7:0] RXCHARISK,
1944  output wire [7:0] RXDISPERR,
1945  output wire [7:0] RXNOTINTABLE,
1946 
1947 // internal
1948  input wire serial_clk
1949 
1950 );
1951 
1952 parameter integer RX_DATA_WIDTH = 20;
1953 parameter integer RX_INT_DATAWIDTH = 0;
1954 
1955 parameter DEC_MCOMMA_DETECT = "TRUE";
1956 parameter DEC_PCOMMA_DETECT = "TRUE";
1957 
1958 parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011;
1959 parameter ALIGN_MCOMMA_DET = "TRUE";
1960 parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100;
1961 parameter ALIGN_PCOMMA_DET = "TRUE";
1962 parameter [9:0] ALIGN_COMMA_ENABLE = 10'b1111111111;
1963 parameter ALIGN_COMMA_DOUBLE = "FALSE";
1964 
1965 function integer calc_idw;
1966  input dummy;
1967  begin
1968  calc_idw = RX_INT_DATAWIDTH == 1 ? 40 : 20;
1969  end
1970 endfunction
1971 
1972 function integer calc_ifdw;
1973  input dummy;
1974  begin
1975  calc_ifdw = RX_DATA_WIDTH == 16 ? 20 :
1976  RX_DATA_WIDTH == 32 ? 40 :
1977  RX_DATA_WIDTH == 64 ? 80 : RX_DATA_WIDTH;
1978  end
1979 endfunction
1980 
1981 // can be 20 or 40, if it shall be 16 or 32, extra bits wont be used
1982 localparam internal_data_width = calc_idw(1);
1983 localparam interface_data_width = calc_ifdw(1);
1984 localparam internal_isk_width = internal_data_width / 10;
1985 localparam interface_isk_width = interface_data_width / 10;
1986 // used in case of TX8B10BEN = 0
1987 localparam data_width_odd = RX_DATA_WIDTH == 16 | RX_DATA_WIDTH == 32 | RX_DATA_WIDTH == 64;
1988 
1989 
1990 // OOB
1992  .width (internal_data_width)
1993 )
1994 rx_oob(
1995  .reset (reset),
1996  .clk (serial_clk),
1997  .usrclk2 (RXUSRCLK2),
1998  .RXN (RXN),
1999  .RXP (RXP),
2000 
2003 
2006 );
2007 
2008 // Polarity
2009 // no need to invert data after a deserializer, no need to resync or make a buffer trigger for simulation
2010 wire indata_ser;
2011 assign indata_ser = RXPOLARITY ^ RXP;
2012 
2013 // due to non-syntasisable usage, CDR is missing
2014 
2015 // deserializer
2016 wire [internal_data_width - 1:0] parallel_data; // in trimmed case highest bites shall be 'x'
2018  .width (internal_data_width)
2019 )
2020 des(
2021  .reset (reset),
2022  .trim (data_width_odd & ~RX8B10BEN),
2023  .inclk (serial_clk),
2024  .outclk (RXUSRCLK),
2025  .indata (indata_ser),
2026  .outdata (parallel_data)
2027 );
2028 
2029 // aligner
2030 wire [internal_data_width - 1:0] aligned_data;
2032  .width (internal_data_width),
2040 aligner(
2041  .clk (RXUSRCLK),
2042  .rst (reset),
2043  .indata (parallel_data),
2044  .outdata (aligned_data),
2045 
2047 
2051 
2055 );
2056 
2057 localparam iface_databus_width = interface_data_width * 8 / 10;
2058 localparam intern_databus_width = internal_data_width * 8 / 10;
2059 
2060 wire [intern_databus_width - 1:0] internal_data;
2061 wire [internal_isk_width - 1:0] internal_isk;
2062 wire [internal_isk_width - 1:0] internal_chariscomma;
2063 wire [internal_isk_width - 1:0] internal_notintable;
2064 wire [internal_isk_width - 1:0] internal_disperr;
2065 // 10x8 decoder
2067  .iwidth (internal_data_width),
2068  .iskwidth (internal_isk_width),
2069  .owidth (intern_databus_width),
2072 )
2073 decoder_10x8(
2074  .clk (RXUSRCLK),
2076  .indata (aligned_data),
2077  .RX8B10BEN (RX8B10BEN),
2078  .data_width_odd (data_width_odd),
2079 
2080  .rxchariscomma (internal_chariscomma),
2081  .rxcharisk (internal_isk),
2082  .rxdisperr (internal_disperr),
2083  .rxnotintable (internal_notintable),
2085  .outdata (internal_data)
2086 );
2087 
2088 // fit data width
2090 localparam outdiv = interface_data_width / internal_data_width;
2091 // if something is written into dataiface_data_in _except_ internal_data and internal_isk => count all extra bits in this parameter
2092 localparam internal_data_extra = 4;
2093 localparam interface_data_extra = outdiv * internal_data_extra;
2094 
2095 wire [interface_data_width - 1 + interface_data_extra:0] dataiface_data_out;
2096 wire [internal_data_width - 1 + internal_data_extra:0] dataiface_data_in;
2097 
2098 assign dataiface_data_in = {internal_notintable, internal_chariscomma, internal_disperr, internal_isk, internal_data};
2099 
2100 genvar ii;
2101 generate
2102 for (ii = 1; ii < (outdiv + 1); ii = ii + 1)
2103 begin: asdadfdsf
2104  assign RXDATA[ii*intern_databus_width - 1 -: intern_databus_width] = dataiface_data_out[(ii-1)*(internal_data_width + internal_data_extra) + intern_databus_width - 1 -: intern_databus_width];
2105  assign RXCHARISK[ii*internal_isk_width - 1 -: internal_isk_width] = dataiface_data_out[(ii-1)*(internal_data_width + internal_data_extra) + intern_databus_width - 1 + internal_isk_width -: internal_isk_width];
2106  assign RXDISPERR[ii*internal_isk_width - 1 -: internal_isk_width] = dataiface_data_out[(ii-1)*(internal_data_width + internal_data_extra) + intern_databus_width - 1 + internal_isk_width*2 -: internal_isk_width];
2107  assign RXCHARISCOMMA[ii*internal_isk_width - 1 -: internal_isk_width] = dataiface_data_out[(ii-1)*(internal_data_width + internal_data_extra) + intern_databus_width - 1 + internal_isk_width*3 -: internal_isk_width];
2108  assign RXNOTINTABLE[ii*internal_isk_width - 1 -: internal_isk_width] = dataiface_data_out[(ii-1)*(internal_data_width + internal_data_extra) + intern_databus_width - 1 + internal_isk_width*4 -: internal_isk_width];
2109 end
2110 endgenerate
2111 assign RXDATA[63:iface_databus_width] = {64 - iface_databus_width{1'bx}};
2112 assign RXDISPERR[7:interface_isk_width] = {8 - interface_isk_width{1'bx}};
2113 assign RXCHARISK[7:interface_isk_width] = {8 - interface_isk_width{1'bx}};
2114 assign RXCHARISCOMMA[7:interface_isk_width] = {8 - interface_isk_width{1'bx}};
2115 assign RXNOTINTABLE[7:interface_isk_width] = {8 - interface_isk_width{1'bx}};
2118  .internal_data_width (internal_data_width + internal_data_extra),
2119  .interface_data_width (interface_data_width + interface_data_extra),
2120  .internal_isk_width (internal_isk_width),
2121  .interface_isk_width (interface_isk_width)
2122 )
2123 dataiface
2124 (
2125  .usrclk (RXUSRCLK),
2128  .indata (dataiface_data_in),
2129  .inisk (internal_isk), // not used actually
2130  .outdata (dataiface_data_out),
2131  .outisk (),
2132  .realign (RXBYTEREALIGN === 1'bx ? 1'b0 : RXBYTEREALIGN)
2133 );
2134 
2135 endmodule
2137 module gtxe2_chnl(
2138  input wire reset,
2139 /*
2140  TX
2141  */
2142  output wire TXP,
2143  output wire TXN,
2144 
2145  input wire [63:0] TXDATA,
2146  input wire TXUSRCLK,
2147  input wire TXUSRCLK2,
2149 // 8/10 encoder
2150  input wire [7:0] TX8B10BBYPASS,
2151  input wire TX8B10BEN,
2152  input wire [7:0] TXCHARDISPMODE,
2153  input wire [7:0] TXCHARDISPVAL,
2154  input wire [7:0] TXCHARISK,
2155 
2156 // TX Buffer
2157  output wire [1:0] TXBUFSTATUS,
2159 // TX Polarity
2160  input wire TXPOLARITY,
2162 // TX Fabric Clock Control
2163  input wire [2:0] TXRATE,
2164  output wire TXRATEDONE,
2166 // TX OOB
2167  input wire TXCOMINIT,
2168  input wire TXCOMWAKE,
2169  output wire TXCOMFINISH,
2171 // TX Driver Control
2172  input wire TXELECIDLE,
2173 
2174 /*
2175  RX
2176  */
2177  input wire RXP,
2178  input wire RXN,
2180  input wire RXUSRCLK,
2181  input wire RXUSRCLK2,
2182 
2183  output wire [63:0] RXDATA,
2185  input wire [2:0] RXRATE,
2187 // oob
2188  input wire [1:0] RXELECIDLEMODE,
2189  output wire RXELECIDLE,
2191  output wire RXCOMINITDET,
2192  output wire RXCOMWAKEDET,
2194 // polarity
2195  input wire RXPOLARITY,
2197 // aligner
2198  output wire RXBYTEISALIGNED,
2199  output wire RXBYTEREALIGN,
2200  output wire RXCOMMADET,
2202  input wire RXCOMMADETEN,
2203  input wire RXPCOMMAALIGNEN,
2204  input wire RXMCOMMAALIGNEN,
2206 // 10/8 decoder
2207  input wire RX8B10BEN,
2209  output wire [7:0] RXCHARISCOMMA,
2210  output wire [7:0] RXCHARISK,
2211  output wire [7:0] RXDISPERR,
2212  output wire [7:0] RXNOTINTABLE,
2213 
2214 /*
2215  Clocking
2216  */
2217 // top-level interfaces
2218  input wire [2:0] CPLLREFCLKSEL,
2219  input wire GTREFCLK0,
2220  input wire GTREFCLK1,
2221  input wire GTNORTHREFCLK0,
2222  input wire GTNORTHREFCLK1,
2223  input wire GTSOUTHREFCLK0,
2224  input wire GTSOUTHREFCLK1,
2225  input wire GTGREFCLK,
2226  input wire QPLLCLK,
2227  input wire QPLLREFCLK,
2228  input wire [1:0] RXSYSCLKSEL,
2229  input wire [1:0] TXSYSCLKSEL,
2230  input wire [2:0] TXOUTCLKSEL,
2231  input wire [2:0] RXOUTCLKSEL,
2232  input wire TXDLYBYPASS,
2233  input wire RXDLYBYPASS,
2234  output wire GTREFCLKMONITOR,
2236  input wire CPLLLOCKDETCLK,
2237  input wire CPLLLOCKEN,
2238  input wire CPLLPD,
2239  input wire CPLLRESET,
2240  output wire CPLLFBCLKLOST,
2241  output wire CPLLLOCK,
2242  output wire CPLLREFCLKLOST,
2243 
2244 // phy-level interfaces
2245  output wire TXOUTCLKPMA,
2246  output wire TXOUTCLKPCS,
2247  output wire TXOUTCLK,
2248  output wire TXOUTCLKFABRIC,
2249  output wire tx_serial_clk,
2250 
2251  output wire RXOUTCLKPMA,
2252  output wire RXOUTCLKPCS,
2253  output wire RXOUTCLK,
2254  output wire RXOUTCLKFABRIC,
2255  output wire rx_serial_clk,
2256 
2257 // additional ports to pll
2258  output [9:0] TSTOUT,
2259  input [15:0] GTRSVD,
2260  input [15:0] PCSRSVDIN,
2261  input [4:0] PCSRSVDIN2,
2262  input [4:0] PMARSVDIN,
2263  input [4:0] PMARSVDIN2,
2264  input [19:0] TSTIN
2265 );
2266 parameter [23:0] CPLL_CFG = 29'h00BC07DC;
2267 parameter integer CPLL_FBDIV = 4;
2268 parameter integer CPLL_FBDIV_45 = 5;
2269 parameter [23:0] CPLL_INIT_CFG = 24'h00001E;
2270 parameter [15:0] CPLL_LOCK_CFG = 16'h01E8;
2271 parameter integer CPLL_REFCLK_DIV = 1;
2272 parameter [1:0] PMA_RSV3 = 1;
2273 
2274 parameter TXOUT_DIV = 2;
2275 //parameter TXRATE = 3'b000;
2276 parameter RXOUT_DIV = 2;
2277 //parameter RXRATE = 3'b000;
2278 
2279 parameter integer TX_INT_DATAWIDTH = 0;
2280 parameter integer TX_DATA_WIDTH = 20;
2281 
2282 parameter integer RX_DATA_WIDTH = 20;
2283 parameter integer RX_INT_DATAWIDTH = 0;
2284 
2285 parameter DEC_MCOMMA_DETECT = "TRUE";
2286 parameter DEC_PCOMMA_DETECT = "TRUE";
2287 
2288 parameter [9:0] ALIGN_MCOMMA_VALUE = 10'b1010000011;
2289 parameter ALIGN_MCOMMA_DET = "TRUE";
2290 parameter [9:0] ALIGN_PCOMMA_VALUE = 10'b0101111100;
2291 parameter ALIGN_PCOMMA_DET = "TRUE";
2292 parameter [9:0] ALIGN_COMMA_ENABLE = 10'b1111111111;
2293 parameter ALIGN_COMMA_DOUBLE = "FALSE";
2294 
2295 
2296 parameter [3:0] SATA_BURST_SEQ_LEN = 4'b1111;
2297 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
2298 
2299 gtxe2_chnl_tx #(
2304 )
2305 tx(
2306  .reset (reset),
2307  .TXP (TXP),
2308  .TXN (TXN),
2309 
2310  .TXDATA (TXDATA),
2311  .TXUSRCLK (TXUSRCLK),
2312  .TXUSRCLK2 (TXUSRCLK2),
2313 
2315  .TX8B10BEN (TX8B10BEN),
2318  .TXCHARISK (TXCHARISK),
2319 
2321 
2324  .TXRATE (TXRATE),
2326 
2327  .TXCOMINIT (TXCOMINIT),
2328  .TXCOMWAKE (TXCOMWAKE),
2330 
2332 
2334 );
2335 
2336 gtxe2_chnl_rx #(
2339 
2342 
2349 )
2350 rx(
2351  .reset (reset),
2352  .RXP (RXP),
2353  .RXN (RXN),
2354 
2355  .RXUSRCLK (RXUSRCLK),
2356  .RXUSRCLK2 (RXUSRCLK2),
2357 
2358  .RXDATA (RXDATA),
2359 
2364 
2366 
2370 
2374 
2375  .RX8B10BEN (RX8B10BEN),
2376 
2378  .RXCHARISK (RXCHARISK),
2379  .RXDISPERR (RXDISPERR),
2381 
2383 );
2384 
2386  .CPLL_CFG (CPLL_CFG),
2392  .RXOUT_DIV (RXOUT_DIV),
2393  .TXOUT_DIV (TXOUT_DIV),
2396 
2402 clocking(
2423  .CPLLPD (CPLLPD),
2426  .CPLLLOCK (CPLLLOCK),
2434  .TXOUTCLK (TXOUTCLK),
2446 
2452  .rx_sipo_clk ()
2453 );
2454 
2455 endmodule
2457 module GTXE2_GPL(
2458 // clocking ports, UG476 p.37
2459  input [2:0] CPLLREFCLKSEL,
2460  input GTGREFCLK,
2462  input GTNORTHREFCLK1,
2463  input GTREFCLK0,
2464  input GTREFCLK1,
2465  input GTSOUTHREFCLK0,
2467  input [1:0] RXSYSCLKSEL,
2468  input [1:0] TXSYSCLKSEL,
2470 // CPLL Ports, UG476 p.48
2471  input CPLLLOCKDETCLK,
2472  input CPLLLOCKEN,
2473  input CPLLPD,
2474  input CPLLRESET,
2475  output CPLLFBCLKLOST,
2476  output CPLLLOCK,
2478  output [9:0] TSTOUT,
2479  input [15:0] GTRSVD,
2480  input [15:0] PCSRSVDIN,
2481  input [4:0] PCSRSVDIN2,
2482  input [4:0] PMARSVDIN,
2483  input [4:0] PMARSVDIN2,
2484  input [19:0] TSTIN,
2485 // Reset Mode ports, ug476 p.62
2486  input GTRESETSEL,
2487  input RESETOVRD,
2488 // TX Reset ports, ug476 p.65
2489  input CFGRESET,
2490  input GTTXRESET,
2491  input TXPCSRESET,
2492  input TXPMARESET,
2493  output TXRESETDONE,
2494  input TXUSERRDY,
2495  output [15:0] PCSRSVDOUT,
2496 // RX Reset ports, UG476 p.73
2497  input GTRXRESET,
2498  input RXPMARESET,
2499  input RXCDRRESET,
2500  input RXCDRFREQRESET,
2501  input RXDFELPMRESET,
2502  input EYESCANRESET,
2503  input RXPCSRESET,
2504  input RXBUFRESET,
2505  input RXUSERRDY,
2506  output RXRESETDONE,
2507  input RXOOBRESET,
2508 // Power Down ports, ug476 p.88
2509  input [1:0] RXPD,
2510  input [1:0] TXPD,
2512  input TXPHDLYPD,
2513  input RXPHDLYPD,
2514 // Loopback ports, ug476 p.91
2515  input [2:0] LOOPBACK,
2516 // Dynamic Reconfiguration Port, ug476 p.92
2517  input [8:0] DRPADDR,
2518  input DRPCLK,
2519  input [15:0] DRPDI,
2520  output [15:0] DRPDO,
2521  input DRPEN,
2522  output DRPRDY,
2523  input DRPWE,
2524 // Digital Monitor Ports, ug476 p.95
2525  input [3:0] CLKRSVD,
2526  output [7:0] DMONITOROUT,
2527 // TX Interface Ports, ug476 p.110
2528  input [7:0] TXCHARDISPMODE,
2529  input [7:0] TXCHARDISPVAL,
2530  input [63:0] TXDATA,
2531  input TXUSRCLK,
2532  input TXUSRCLK2,
2533 // TX 8B/10B encoder ports, ug476 p.118
2534  input [7:0] TX8B10BBYPASS,
2535  input TX8B10BEN,
2536  input [7:0] TXCHARISK,
2537 // TX Gearbox ports, ug476 p.122
2539  input [2:0] TXHEADER,
2540  input [6:0] TXSEQUENCE,
2541  input TXSTARTSEQ,
2542 // TX BUffer Ports, ug476 p.134
2543  output [1:0] TXBUFSTATUS,
2544 // TX Buffer Bypass Ports, ug476 p.136
2546  input TXPHALIGN,
2548  input TXPHINIT,
2549  input TXPHOVRDEN,
2551  input TXDLYBYPASS,
2552  input TXDLYEN,
2555  input TXDLYHOLD,
2560 /* input TXSYNCMODE,
2561  input TXSYNCALLIN,
2562  input TXSYNCIN,
2563  output TXSYNCOUT,
2564  output TXSYNCDONE,**/
2565 // TX Pattern Generator, ug476 p.147
2566  input [2:0] TXPRBSSEL,
2568 // TX Polarity Control Ports, ug476 p.149
2569  input TXPOLARITY,
2570 // TX Fabric Clock Output Control Ports, ug476 p.152
2571  input [2:0] TXOUTCLKSEL,
2572  input [2:0] TXRATE,
2574  output TXOUTCLK,
2575  output TXOUTCLKPCS,
2576  output TXRATEDONE,
2577 // TX Phase Interpolator PPM Controller Ports, ug476 p.154
2578 // GTH only
2579 /* input TXPIPPMEN,
2580  input TXPIPPMOVRDEN,
2581  input TXPIPPMSEL,
2582  input TXPIPPMPD,
2583  input [4:0] TXPIPPMSTEPSIZE,**/
2584 // TX Configurable Driver Ports, ug476 p.156
2585  input [2:0] TXBUFDIFFCTRL,
2586  input TXDEEMPH,
2587  input [3:0] TXDIFFCTRL,
2588  input TXELECIDLE,
2589  input TXINHIBIT,
2590  input [6:0] TXMAINCURSOR,
2591  input [2:0] TXMARGIN,
2593  output TXQPISENN,
2594  output TXQPISENP,
2597  input [4:0] TXPOSTCURSOR,
2599  input [4:0] TXPRECURSOR,
2601  input TXSWING,
2602  input TXDIFFPD,
2603  input TXPISOPD,
2604 // TX Receiver Detection Ports, ug476 p.165
2605  input TXDETECTRX,
2606  output PHYSTATUS,
2607  output [2:0] RXSTATUS,
2608 // TX OOB Signaling Ports, ug476 p.166
2609  output TXCOMFINISH,
2610  input TXCOMINIT,
2611  input TXCOMSAS,
2612  input TXCOMWAKE,
2613 // RX AFE Ports, ug476 p.171
2614  output RXQPISENN,
2615  output RXQPISENP,
2616  input RXQPIEN,
2617 // RX OOB Signaling Ports, ug476 p.178
2618  input [1:0] RXELECIDLEMODE,
2619  output RXELECIDLE,
2621  output RXCOMSASDET,
2622  output RXCOMWAKEDET,
2623 // RX Equalizer Ports, ug476 p.189
2624  input RXLPMEN,
2625  input RXOSHOLD,
2626  input RXOSOVRDEN,
2629  input RXLPMHFHOLD,
2642  input RXDFETAP3OVRDEN,
2644  input RXDFETAP4OVRDEN,
2646  input RXDFETAP5OVRDEN,
2647  input RXDFECM1EN,
2650  input RXDFEXYDEN,
2651  input [1:0] RXMONITORSEL,
2652  output [6:0] RXMONITOROUT,
2653 // CDR Ports, ug476 p.202
2654  input RXCDRHOLD,
2656  input RXCDRRESETRSV,
2657  input [2:0] RXRATE,
2658  output RXCDRLOCK,
2659 // RX Fabric Clock Output Control Ports, ug476 p.213
2660  input [2:0] RXOUTCLKSEL,
2662  output RXOUTCLK,
2663  output RXOUTCLKPCS,
2664  output RXRATEDONE,
2666 // RX Margin Analysis Ports, ug476 p.220
2667  output EYESCANDATAERROR,
2669  input EYESCANMODE,
2670 // RX Polarity Control Ports, ug476 p.224
2671  input RXPOLARITY,
2672 // Pattern Checker Ports, ug476 p.225
2673  input RXPRBSCNTRESET,
2674  input [2:0] RXPRBSSEL,
2675  output RXPRBSERR,
2676 // RX Byte and Word Alignment Ports, ug476 p.233
2679  output RXCOMMADET,
2681  input RXPCOMMAALIGNEN,
2682  input RXMCOMMAALIGNEN,
2683  input RXSLIDE,
2684 // RX 8B/10B Decoder Ports, ug476 p.241
2685  input RX8B10BEN,
2686  output [7:0] RXCHARISCOMMA,
2687  output [7:0] RXCHARISK,
2688  output [7:0] RXDISPERR,
2689  output [7:0] RXNOTINTABLE,
2690  input SETERRSTATUS,
2691 // RX Buffer Bypass Ports, ug476 p.244
2693  input RXPHALIGN,
2695  input RXPHOVRDEN,
2697  input RXDLYEN,
2699  input RXDDIEN,
2701  output [4:0] RXPHMONITOR,
2702  output [4:0] RXPHSLIPMONITOR,
2704 // RX Buffer Ports, ug476 p.259
2705  output [2:0] RXBUFSTATUS,
2706 // RX Clock Correction Ports, ug476 p.263
2707  output [1:0] RXCLKCORCNT,
2708 // RX Channel Bonding Ports, ug476 p.274
2712  input [4:0] RXCHBONDI,
2713  output [4:0] RXCHBONDO,
2714  input [2:0] RXCHBONDLEVEL,
2717  input RXCHBONDEN,
2718 // RX Gearbox Ports, ug476 p.285
2719  output RXDATAVALID,
2721  output [2:0] RXHEADER,
2724 // FPGA RX Interface Ports, ug476 p.299
2725  output [63:0] RXDATA,
2726  input RXUSRCLK,
2727  input RXUSRCLK2,
2729 // ug476, p.323
2730  output RXVALID,
2731 // for correct clocking scheme in case of multilane structure
2732  input QPLLCLK,
2733  input QPLLREFCLK,
2735 // dunno
2736  input RXDFEVSEN,
2738 // Diffpairs
2739  input GTXRXP,
2740  input GTXRXN,
2741  output GTXTXN,
2742  output GTXTXP
2743 );
2744 // simulation common attributes, UG476 p.28
2745 parameter SIM_RESET_SPEEDUP = "TRUE";
2746 parameter SIM_CPLLREFCLK_SEL = 3'b001;
2747 parameter SIM_RECEIVER_DETECT_PASS = "TRUE";
2748 parameter SIM_TX_EIDLE_DRIVE_LEVEL = "X";
2749 parameter SIM_VERSION = "1.0";
2750 // Clocking Atributes, UG476 p.38
2751 parameter OUTREFCLK_SEL_INV = 1'b0;
2752 // CPLL Attributes, UG476 p.49
2753 parameter CPLL_CFG = 24'h0;
2754 parameter CPLL_FBDIV = 4;
2755 parameter CPLL_FBDIV_45 = 5;
2756 parameter CPLL_INIT_CFG = 24'h0;
2757 parameter CPLL_LOCK_CFG = 16'h0;
2758 parameter CPLL_REFCLK_DIV = 1;
2759 parameter RXOUT_DIV = 2;
2760 parameter TXOUT_DIV = 2;
2761 parameter SATA_CPLL_CFG = "VCO_3000MHZ";
2762 parameter PMA_RSV3 = 2'b00;
2763 // TX Initialization and Reset Attributes, ug476 p.66
2764 parameter TXPCSRESET_TIME = 5'b00001;
2765 parameter TXPMARESET_TIME = 5'b00001;
2766 // RX Initialization and Reset Attributes, UG476 p.75
2767 parameter RXPMARESET_TIME = 5'h0;
2768 parameter RXCDRPHRESET_TIME = 5'h0;
2769 parameter RXCDRFREQRESET_TIME = 5'h0;
2770 parameter RXDFELPMRESET_TIME = 7'h0;
2771 parameter RXISCANRESET_TIME = 7'h0;
2772 parameter RXPCSRESET_TIME = 5'h0;
2773 parameter RXBUFRESET_TIME = 5'h0;
2774 // Power Down attributes, ug476 p.88
2775 parameter PD_TRANS_TIME_FROM_P2 = 12'h0;
2776 parameter PD_TRANS_TIME_NONE_P2 = 8'h0;
2777 parameter PD_TRANS_TIME_TO_P2 = 8'h0;
2778 parameter TRANS_TIME_RATE = 8'h0;
2779 parameter RX_CLKMUX_PD = 1'b0;
2780 parameter TX_CLKMUX_PD = 1'b0;
2781 // GTX Digital Monitor Attributes, ug476 p.96
2782 parameter DMONITOR_CFG = 24'h008101;
2783 // TX Interface attributes, ug476 p.111
2784 parameter TX_DATA_WIDTH = 20;
2785 parameter TX_INT_DATAWIDTH = 0;
2786 // TX Gearbox Attributes, ug476 p.121
2787 parameter GEARBOX_MODE = 3'h0;
2788 parameter TXGEARBOX_EN = "FALSE";
2789 // TX BUffer Attributes, ug476 p.134
2790 parameter TXBUF_EN = "TRUE";
2791 // TX Bypass buffer, ug476 p.138
2792 parameter TX_XCLK_SEL = "TXOUT";
2793 parameter TXPH_CFG = 16'h0;
2794 parameter TXPH_MONITOR_SEL = 5'h0;
2795 parameter TXPHDLY_CFG = 24'h0;
2796 parameter TXDLY_CFG = 16'h0;
2797 parameter TXDLY_LCFG = 9'h0;
2798 parameter TXDLY_TAP_CFG = 16'h0;
2799 parameter TXSYNC_MULTILANE = 1'b0;
2800 parameter TXSYNC_SKIP_DA = 1'b0;
2801 parameter TXSYNC_OVRD = 1'b1;
2802 parameter LOOPBACK_CFG = 1'b0;
2803 // TX Pattern Generator, ug476 p.147
2804 parameter RXPRBS_ERR_LOOPBACK = 1'b0;
2805 // TX Fabric Clock Output Control Attributes, ug476 p. 153
2806 parameter TXBUF_RESET_ON_RATE_CHANGE = "TRUE";
2807 // TX Phase Interpolator PPM Controller Attributes, ug476 p.155
2808 // GTH only
2809 /*parameter TXPI_SYNCFREQ_PPM = 3'b001;
2810 parameter TXPI_PPM_CFG = 8'd0;
2811 parameter TXPI_INVSTROBE_SEL = 1'b0;
2812 parameter TXPI_GREY_SEL = 1'b0;
2813 parameter TXPI_PPMCLK_SEL = "12345";**/
2814 // TX Configurable Driver Attributes, ug476 p.162
2815 parameter TX_DEEMPH0 = 5'b10100;
2816 parameter TX_DEEMPH1 = 5'b01101;
2817 parameter TX_DRIVE_MODE = "DIRECT";
2818 parameter TX_MAINCURSOR_SEL = 1'b0;
2819 parameter TX_MARGIN_FULL_0 = 7'b0;
2820 parameter TX_MARGIN_FULL_1 = 7'b0;
2821 parameter TX_MARGIN_FULL_2 = 7'b0;
2822 parameter TX_MARGIN_FULL_3 = 7'b0;
2823 parameter TX_MARGIN_FULL_4 = 7'b0;
2824 parameter TX_MARGIN_LOW_0 = 7'b0;
2825 parameter TX_MARGIN_LOW_1 = 7'b0;
2826 parameter TX_MARGIN_LOW_2 = 7'b0;
2827 parameter TX_MARGIN_LOW_3 = 7'b0;
2828 parameter TX_MARGIN_LOW_4 = 7'b0;
2829 parameter TX_PREDRIVER_MODE = 1'b0;
2830 parameter TX_QPI_STATUS_EN = 1'b0;
2831 parameter TX_EIDLE_ASSERT_DELAY = 3'b110;
2832 parameter TX_EIDLE_DEASSERT_DELAY = 3'b100;
2833 parameter TX_LOOPBACK_DRIVE_HIZ = "FALSE";
2834 // TX Receiver Detection Attributes, ug476 p.165
2835 parameter TX_RXDETECT_CFG = 14'h0;
2836 parameter TX_RXDETECT_REF = 3'h0;
2837 // TX OOB Signaling Attributes
2838 parameter SATA_BURST_SEQ_LEN = 4'b0101;
2839 // RX AFE Attributes, ug476 p.171
2840 parameter RX_CM_SEL = 2'b11;
2841 parameter TERM_RCAL_CFG = 5'b0;
2842 parameter TERM_RCAL_OVRD = 1'b0;
2843 parameter RX_CM_TRIM = 3'b010;
2844 // RX OOB Signaling Attributes, ug476 p.179
2845 parameter PCS_RSVD_ATTR = 48'h0100; // oob is up
2846 parameter RXOOB_CFG = 7'b0000110;
2847 parameter SATA_BURST_VAL = 3'b110;
2848 parameter SATA_EIDLE_VAL = 3'b110;
2849 parameter SAS_MIN_COM = 36;
2850 parameter SATA_MIN_INIT = 12;
2851 parameter SATA_MIN_WAKE = 4;
2852 parameter SATA_MAX_BURST = 8;
2853 parameter SATA_MIN_BURST = 4;
2854 parameter SAS_MAX_COM = 64;
2855 parameter SATA_MAX_INIT = 21;
2856 parameter SATA_MAX_WAKE = 7;
2857 // RX Equalizer Attributes, ug476 p.193
2858 parameter RX_OS_CFG = 13'h0080;
2859 parameter RXLPM_LF_CFG = 14'h00f0;
2860 parameter RXLPM_HF_CFG = 14'h00f0;
2861 parameter RX_DFE_LPM_CFG = 16'h0;
2862 parameter RX_DFE_GAIN_CFG = 23'h020FEA;
2863 parameter RX_DFE_H2_CFG = 12'h0;
2864 parameter RX_DFE_H3_CFG = 12'h040;
2865 parameter RX_DFE_H4_CFG = 11'h0e0;
2866 parameter RX_DFE_H5_CFG = 11'h0e0;
2867 parameter PMA_RSV = 32'h00018480;
2869 parameter RX_DFE_XYD_CFG = 13'h0;
2870 parameter PMA_RSV4 = 32'h0;
2871 parameter PMA_RSV2 = 16'h0;
2872 parameter RX_BIAS_CFG = 12'h040;
2873 parameter RX_DEBUG_CFG = 12'h0;
2874 parameter RX_DFE_KL_CFG = 13'h0;
2875 parameter RX_DFE_KL_CFG2 = 32'h0;
2876 parameter RX_DFE_UT_CFG = 17'h11e00;
2877 parameter RX_DFE_VP_CFG = 17'h03f03;
2878 // CDR Attributes, ug476 p.203
2879 parameter RXCDR_CFG = 72'h0;
2880 parameter RXCDR_LOCK_CFG = 6'h0;
2881 parameter RXCDR_HOLD_DURING_EIDLE = 1'b0;
2882 parameter RXCDR_FR_RESET_ON_EIDLE = 1'b0;
2883 parameter RXCDR_PH_RESET_ON_EIDLE = 1'b0;
2884 // RX Fabric Clock Output Control Attributes
2885 parameter RXBUF_RESET_ON_RATE_CHANGE = "TRUE";
2886 // RX Margin Analysis Attributes
2887 parameter ES_VERT_OFFSET = 9'h0;
2888 parameter ES_HORZ_OFFSET = 12'h0;
2889 parameter ES_PRESCALE = 5'h0;
2890 parameter ES_SDATA_MASK = 80'h0;
2891 parameter ES_QUALIFIER = 80'h0;
2892 parameter ES_QUAL_MASK = 80'h0;
2893 parameter ES_EYE_SCAN_EN = 1'b1;
2894 parameter ES_ERRDET_EN = 1'b0;
2895 parameter ES_CONTROL = 6'h0;
2896 parameter es_control_status = 4'b000;
2897 parameter es_rdata = 80'h0;
2898 parameter es_sdata = 80'h0;
2899 parameter es_error_count = 16'h0;
2900 parameter es_sample_count = 16'h0;
2901 parameter RX_DATA_WIDTH = 20;
2902 parameter RX_INT_DATAWIDTH = 0;
2903 parameter ES_PMA_CFG = 10'h0;
2904 // Pattern Checker Attributes, ug476 p.226
2905 parameter RX_PRBS_ERR_CNT = 16'h15c;
2906 // RX Byte and Word Alignment Attributes, ug476 p.235
2907 parameter ALIGN_COMMA_WORD = 1;
2908 parameter ALIGN_COMMA_ENABLE = 10'b1111111111;
2909 parameter ALIGN_COMMA_DOUBLE = "FALSE";
2910 parameter ALIGN_MCOMMA_DET = "TRUE";
2911 parameter ALIGN_MCOMMA_VALUE = 10'b1010000011;
2912 parameter ALIGN_PCOMMA_DET = "TRUE";
2913 parameter ALIGN_PCOMMA_VALUE = 10'b0101111100;
2914 parameter SHOW_REALIGN_COMMA = "TRUE";
2915 parameter RXSLIDE_MODE = "OFF";
2916 parameter RXSLIDE_AUTO_WAIT = 7;
2917 parameter RX_SIG_VALID_DLY = 10;
2918 parameter COMMA_ALIGN_LATENCY = 9'h14e;
2919 // RX 8B/10B Decoder Attributes, ug476 p.242
2920 parameter RX_DISPERR_SEQ_MATCH = "TRUE";
2921 parameter DEC_MCOMMA_DETECT = "TRUE";
2922 parameter DEC_PCOMMA_DETECT = "TRUE";
2923 parameter DEC_VALID_COMMA_ONLY = "FALSE";
2924 parameter UCODEER_CLR = 1'b0;
2925 // RX Buffer Bypass Attributes, ug476 p.247
2926 parameter RXBUF_EN = "TRUE";
2927 parameter RX_XCLK_SEL = "RXREC";
2928 parameter RXPH_CFG = 24'h0;
2929 parameter RXPH_MONITOR_SEL = 5'h0;
2930 parameter RXPHDLY_CFG = 24'h0;
2931 parameter RXDLY_CFG = 16'h0;
2932 parameter RXDLY_LCFG = 9'h0;
2933 parameter RXDLY_TAP_CFG = 16'h0;
2934 parameter RX_DDI_SEL = 6'h0;
2935 parameter TST_RSV = 32'h0;
2936 // RX Buffer Attributes, ug476 p.259
2937 parameter RX_BUFFER_CFG = 6'b0;
2938 parameter RX_DEFER_RESET_BUF_EN = "TRUE";
2939 parameter RXBUF_ADDR_MODE = "FAST";
2940 parameter RXBUF_EIDLE_HI_CNT = 4'b0;
2941 parameter RXBUF_EIDLE_LO_CNT = 4'b0;
2942 parameter RXBUF_RESET_ON_CB_CHANGE = "TRUE";
2943 parameter RXBUF_RESET_ON_COMMAALIGN = "FALSE";
2944 parameter RXBUF_RESET_ON_EIDLE = "FALSE";
2945 parameter RXBUF_THRESH_OVFLW = 0;
2946 parameter RXBUF_THRESH_OVRD = "FALSE";
2947 parameter RXBUF_THRESH_UNDFLW = 0;
2948 // RX Clock Correction Attributes, ug476 p.265
2949 parameter CBCC_DATA_SOURCE_SEL = "DECODED";
2950 parameter CLK_CORRECT_USE = "FALSE";
2951 parameter CLK_COR_SEQ_2_USE = "FALSE";
2952 parameter CLK_COR_KEEP_IDLE = "FALSE";
2953 parameter CLK_COR_MAX_LAT = 9;
2954 parameter CLK_COR_MIN_LAT = 7;
2955 parameter CLK_COR_PRECEDENCE = "TRUE";
2956 parameter CLK_COR_REPEAT_WAIT = 0;
2957 parameter CLK_COR_SEQ_LEN = 1;
2958 parameter CLK_COR_SEQ_1_ENABLE = 4'b1111;
2959 parameter CLK_COR_SEQ_1_1 = 10'b0;
2960 parameter CLK_COR_SEQ_1_2 = 10'b0;
2961 parameter CLK_COR_SEQ_1_3 = 10'b0;
2962 parameter CLK_COR_SEQ_1_4 = 10'b0;
2963 parameter CLK_COR_SEQ_2_ENABLE = 4'b1111;
2964 parameter CLK_COR_SEQ_2_1 = 10'b0;
2965 parameter CLK_COR_SEQ_2_2 = 10'b0;
2966 parameter CLK_COR_SEQ_2_3 = 10'b0;
2967 parameter CLK_COR_SEQ_2_4 = 10'b0;
2968 // RX Channel Bonding Attributes, ug476 p.276
2969 parameter CHAN_BOND_MAX_SKEW = 1;
2970 parameter CHAN_BOND_KEEP_ALIGN = "FALSE";
2971 parameter CHAN_BOND_SEQ_LEN = 1;
2972 parameter CHAN_BOND_SEQ_1_1 = 10'b0;
2973 parameter CHAN_BOND_SEQ_1_2 = 10'b0;
2974 parameter CHAN_BOND_SEQ_1_3 = 10'b0;
2975 parameter CHAN_BOND_SEQ_1_4 = 10'b0;
2976 parameter CHAN_BOND_SEQ_1_ENABLE = 4'b1111;
2977 parameter CHAN_BOND_SEQ_2_1 = 10'b0;
2978 parameter CHAN_BOND_SEQ_2_2 = 10'b0;
2979 parameter CHAN_BOND_SEQ_2_3 = 10'b0;
2980 parameter CHAN_BOND_SEQ_2_4 = 10'b0;
2981 parameter CHAN_BOND_SEQ_2_ENABLE = 4'b1111;
2982 parameter CHAN_BOND_SEQ_2_USE = "FALSE";
2983 parameter FTS_DESKEW_SEQ_ENABLE = 4'b1111;
2984 parameter FTS_LANE_DESKEW_CFG = 4'b1111;
2985 parameter FTS_LANE_DESKEW_EN = "FALSE";
2986 parameter PCS_PCIE_EN = "FALSE";
2987 // RX Gearbox Attributes, ug476 p.287
2988 parameter RXGEARBOX_EN = "FALSE";
2989 
2990 // ug476 table p.326 - undocumented parameters
2991 parameter RX_CLK25_DIV = 6;
2992 parameter TX_CLK25_DIV = 6;
2993 
2994 // clocking reset ( + TX PMA)
2995 //wire clk_reset = EYESCANRESET | RXCDRFREQRESET | RXCDRRESET | RXCDRRESETRSV | RXPRBSCNTRESET | RXBUFRESET | RXDLYSRESET | RXPHDLYRESET | RXDFELPMRESET | GTRXRESET | RXOOBRESET | RXPCSRESET | RXPMARESET | CFGRESET | GTTXRESET | GTRESETSEL | RESETOVRD | TXDLYSRESET | TXPHDLYRESET | TXPCSRESET | TXPMARESET;
2997 // have to wait before an external pll (mmcm) locks with usrclk, after that PCS can be resetted. Actually, we reset PMA also, because why not
2998 reg reset;
2999 reg [31:0] reset_timer = 0;
3000 always @ (posedge TXUSRCLK)
3001  reset_timer <= ~TXUSERRDY ? 32'h0 : reset_timer == 32'hffffffff ? reset_timer : reset_timer + 1'b1;
3003 always @ (posedge TXUSRCLK)
3004  reset <= ~TXUSERRDY ? 1'b0 : reset_timer < 32'd20 ? 1'b1 : 1'b0;
3005 
3006 
3007 reg rx_rst_done = 1'b0;
3008 reg tx_rst_done = 1'b0;
3009 reg rxcdrlock = 1'b0;
3010 reg rxdlysresetdone = 1'b0;
3011 reg rxphaligndone = 1'b0;
3012 
3013 assign RXRESETDONE = rx_rst_done;
3014 assign TXRESETDONE = tx_rst_done;
3015 
3016 assign RXCDRLOCK = rxcdrlock;
3018 assign RXPHALIGNDONE = rxphaligndone;
3019 
3020 localparam DRP_LATENCY = 5;
3021 integer drp_latency_counter;
3022 reg drp_rdy_r;
3023 reg [15:0] drp_ram[0:511];
3024 reg [ 8:0] drp_raddr;
3025 
3026 assign DRPDO = drp_rdy_r ? drp_ram[drp_raddr] : 16'bz;
3027 assign DRPRDY = drp_rdy_r;
3028 always @ (posedge DRPCLK) begin
3031 
3032  if (DRPEN && DRPWE) drp_ram[DRPADDR] <= DRPDI;
3033 
3034  drp_rdy_r <= (drp_latency_counter == 1);
3035 
3036  if (DRPEN) drp_raddr <= DRPADDR;
3037 end
3038 
3040 
3041 initial
3042 forever @ (posedge reset_or_GTRXRESET)
3043 begin
3044  tx_rst_done <= 1'b0;
3045  @ (negedge reset_or_GTRXRESET);
3046  repeat (80)
3047  @ (posedge GTREFCLK0);
3048  tx_rst_done <= 1'b1;
3049 end
3050 initial
3051 forever @ (posedge reset_or_GTRXRESET)
3052 begin
3053  rx_rst_done <= 1'b0;
3054  @ (negedge reset_or_GTRXRESET);
3055  repeat (100)
3056  @ (posedge GTREFCLK0);
3057  rx_rst_done <= 1'b1;
3058 end
3059 localparam RXCDRLOCK_DELAY = 10; // Refclk periods
3060 localparam RXDLYSRESET_MIN_DURATION = 50; // ns
3061 localparam RXDLYSRESETDONE_DELAY = 10;
3062 localparam RXDLYSRESETDONE_DURATION = 7; // 100ns
3063 localparam RXPHALIGNDONE_DELAY1 = 15; // 0.45 usec from the end of reset (measured)
3064 localparam RXPHALIGNDONE_DURATION1 = 7;
3065 localparam RXPHALIGNDONE_DELAY2 = 311; // 4.9 usec from the end of reset (measured)
3066 
3067 initial forever @ (posedge (reset || RXELECIDLE)) begin
3068  rxcdrlock <= 1'b0;
3069  @ (negedge (reset || RXELECIDLE));
3070  repeat (RXCDRLOCK_DELAY) @ (posedge GTREFCLK0);
3071  rxcdrlock <= 1'b1;
3072 
3073 end
3074 
3075 initial forever @ (posedge RXDLYSRESET) begin
3076  rxdlysresetdone <= 1'b0;
3077  rxphaligndone <= 1'b0;
3079  if (!RXDLYSRESET) begin
3080  $display ("%m: RXDLYSRESET is too short - minimal duration is 50 nsec");
3081  end else begin
3082  @ (negedge RXDLYSRESET);
3083 // if (!RXELECIDLE && rxcdrlock) begin
3084  if (!RXELECIDLE) begin // removed that condition - rxcdrlock seems to go up/down (SS?)
3085  repeat (RXDLYSRESETDONE_DELAY) @ (posedge GTREFCLK0);
3086  rxdlysresetdone <= 1'b1;
3087  repeat (RXDLYSRESETDONE_DURATION) @ (posedge GTREFCLK0);
3088  rxdlysresetdone <= 1'b0;
3089  repeat (RXPHALIGNDONE_DELAY1) @ (posedge GTREFCLK0);
3090  rxphaligndone <= 1'b1;
3091  repeat (RXPHALIGNDONE_DURATION1) @ (posedge GTREFCLK0);
3092  rxphaligndone <= 1'b0;
3093  repeat (RXPHALIGNDONE_DELAY2) @ (posedge GTREFCLK0);
3094  rxphaligndone <= 1'b1;
3095  end else $display ("%m: RXELECIDLE in active or rxcdrlock is inactive when applying RXDLYSRESET");
3096  end
3097 end
3098 //RXELECIDLE
3099 gtxe2_chnl #(
3100  .CPLL_CFG (CPLL_CFG),
3106  .RXOUT_DIV (RXOUT_DIV),
3107  .TXOUT_DIV (TXOUT_DIV),
3109  .PMA_RSV3 (PMA_RSV3),
3110 
3113 
3116 
3119 
3126 
3129 
3131 )
3132 channel(
3133  .reset (reset),
3134  .TXP (GTXTXP),
3135  .TXN (GTXTXN),
3136 
3137  .TXDATA (TXDATA),
3138  .TXUSRCLK (TXUSRCLK),
3139  .TXUSRCLK2 (TXUSRCLK2),
3140 
3142  .TX8B10BEN (TX8B10BEN),
3145  .TXCHARISK (TXCHARISK),
3146 
3148 
3150 
3151  .TXRATE (TXRATE),
3152  .RXRATE (RXRATE),
3154 
3155  .TXCOMINIT (TXCOMINIT),
3156  .TXCOMWAKE (TXCOMWAKE),
3158 
3160 
3161  .RXP (GTXRXP),
3162  .RXN (GTXRXN),
3163 
3164  .RXUSRCLK (RXUSRCLK),
3165  .RXUSRCLK2 (RXUSRCLK2),
3166 
3167  .RXDATA (RXDATA),
3168 
3173 
3175 
3179 
3183 
3184  .RX8B10BEN (RX8B10BEN),
3185 
3187  .RXCHARISK (RXCHARISK),
3188  .RXDISPERR (RXDISPERR),
3190 
3192  .GTREFCLK0 (GTREFCLK0),
3193  .GTREFCLK1 (GTREFCLK1),
3198  .GTGREFCLK (GTGREFCLK),
3199  .QPLLCLK (QPLLCLK),
3207 
3210  .CPLLPD (CPLLPD),
3211  .CPLLRESET (CPLLRESET),
3213  .CPLLLOCK (CPLLLOCK),
3215 
3216  .GTRSVD (GTRSVD),
3217  .PCSRSVDIN (PCSRSVDIN),
3219  .PMARSVDIN (PMARSVDIN),
3221  .TSTIN (TSTIN),
3222  .TSTOUT (TSTOUT),
3223 
3224  .TXOUTCLKPMA (),
3226  .TXOUTCLK (TXOUTCLK),
3228  .tx_serial_clk (),
3229 
3230  .RXOUTCLKPMA (),
3232  .RXOUTCLK (RXOUTCLK),
3234  .rx_serial_clk (),
3235 
3237 );
3238 
3239 
3240 endmodule
3241 
3242 
3243 
3244 
17044FTS_DESKEW_SEQ_ENABLE4'b1111
Definition: GTXE2_GPL.v:2921
16900TX_MARGIN_LOW_07'b0
Definition: GTXE2_GPL.v:2762
16354wake_bursts_cntSATA_BURST_VAL
Definition: GTXE2_GPL.v:1317
16604ALIGN_MCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:2227
16854TXOUT_DIV2
Definition: GTXE2_GPL.v:2698
wire [internal_isk_width - 1:0] 16455inisk
Definition: GTXE2_GPL.v:1765
16816RXCHANBONDSEQ
Definition: GTXE2_GPL.v:2647
17020CLK_COR_SEQ_1_ENABLE4'b1111
Definition: GTXE2_GPL.v:2896
16766RXDFEXYDHOLD
Definition: GTXE2_GPL.v:2586
16758RXDFETAP2OVRDEN
Definition: GTXE2_GPL.v:2578
wire [7:0] 16514TXCHARDISPMODE
Definition: GTXE2_GPL.v:2090
wire [7:0] 16287TX8B10BBYPASS
Definition: GTXE2_GPL.v:933
[window_size-1:0] 16437comma_windowwire[comma_width-1:0]
Definition: GTXE2_GPL.v:1662
[23:0] 16588CPLL_CFG29'h00BC07DC
Definition: GTXE2_GPL.v:2204
integer 16598TX_DATA_WIDTH20
Definition: GTXE2_GPL.v:2218
wire [7:0] 16489RXCHARISCOMMA
Definition: GTXE2_GPL.v:1880
integer 16593CPLL_REFCLK_DIV1
Definition: GTXE2_GPL.v:2209
wire [internal_data_width - 1:0] 16270outdata
Definition: GTXE2_GPL.v:877
16312encoded_datawire[internal_data_width-1:0]
Definition: GTXE2_GPL.v:1153
integer calc_idwTX8B10BEN
Definition: GTXE2_GPL.v:966
16911TX_RXDETECT_REF3'h0
Definition: GTXE2_GPL.v:2774
16355init_bursts_cntSATA_BURST_VAL
Definition: GTXE2_GPL.v:1318
17002RXBUF_ADDR_MODE"FAST"
Definition: GTXE2_GPL.v:2877
16460inbuffer_datareg[interface_data_width-1:0]
Definition: GTXE2_GPL.v:1773
[7:0] 16670DMONITOROUT
Definition: GTXE2_GPL.v:2464
16260bursts_cnt_togowire[31:0]
Definition: GTXE2_GPL.v:816
16925SATA_MIN_BURST4
Definition: GTXE2_GPL.v:2791
wire 16485RXCOMMADETEN
Definition: GTXE2_GPL.v:1873
wire 16100GTSOUTHREFCLK0
Definition: GTXE2_GPL.v:268
wire [2:0] 16107TXOUTCLKSEL
Definition: GTXE2_GPL.v:275
17032CHAN_BOND_SEQ_LEN1
Definition: GTXE2_GPL.v:2909
[9:0] 16498ALIGN_MCOMMA_VALUE10'b1010000011
Definition: GTXE2_GPL.v:1896
[4:0] 16720TXPOSTCURSOR
Definition: GTXE2_GPL.v:2535
channel gtxe2_chnl
Definition: GTXE2_GPL.v:3037
[9:0] 16502ALIGN_COMMA_ENABLE10'b1111111111
Definition: GTXE2_GPL.v:1900
wire 16055CPLLREFCLKLOST
Definition: GTXE2_GPL.v:101
16697TXPHINITDONE
Definition: GTXE2_GPL.v:2496
[15:0] 16583PCSRSVDIN
Definition: GTXE2_GPL.v:2198
[2:0] 16787RXPRBSSEL
Definition: GTXE2_GPL.v:2612
[4:0] 16812RXPHSLIPMONITOR
Definition: GTXE2_GPL.v:2640
16436datawire[width*2-1:0]
Definition: GTXE2_GPL.v:1654
16891TX_DEEMPH05'b10100
Definition: GTXE2_GPL.v:2753
[4:0] 16722TXPRECURSOR
Definition: GTXE2_GPL.v:2537
16971ES_PMA_CFG10'h0
Definition: GTXE2_GPL.v:2841
[2:0] 16699TXPRBSSEL
Definition: GTXE2_GPL.v:2504
16955ES_VERT_OFFSET9'h0
Definition: GTXE2_GPL.v:2825
16610SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:2235
16756RXDFEVPOVRDEN
Definition: GTXE2_GPL.v:2576
16946RX_DFE_KL_CFG232'h0
Definition: GTXE2_GPL.v:2813
17005RXBUF_RESET_ON_CB_CHANGE"TRUE"
Definition: GTXE2_GPL.v:2880
wire 16540RXPCOMMAALIGNEN
Definition: GTXE2_GPL.v:2141
rxpllrefclk_div2 clock_divider
Definition: GTXE2_GPL.v:458
16829RXSTARTOFSEQ
Definition: GTXE2_GPL.v:2661
[23:0] 16591CPLL_INIT_CFG24'h00001E
Definition: GTXE2_GPL.v:2207
16750RXDFEAGCOVRDEN
Definition: GTXE2_GPL.v:2570
integer 16068CPLL_FBDIV_455
Definition: GTXE2_GPL.v:119
17027CLK_COR_SEQ_2_210'b0
Definition: GTXE2_GPL.v:2903
17058rxphaligndonereg
Definition: GTXE2_GPL.v:2949
16247stopwatch_clrwire
Definition: GTXE2_GPL.v:791
[2:0] 16774RXRATE
Definition: GTXE2_GPL.v:2595
wire [width - 1:0] 16178data_wr
Definition: GTXE2_GPL.v:546
17067RXDLYSRESETDONE_DELAY10
Definition: GTXE2_GPL.v:2999
wire [4:0] 16060PMARSVDIN2
Definition: GTXE2_GPL.v:107
16936RX_DFE_H4_CFG11'h0e0
Definition: GTXE2_GPL.v:2803
16761RXDFETAP4HOLD
Definition: GTXE2_GPL.v:2581
16412disp_errwire[word_count-1:0]
Definition: GTXE2_GPL.v:1450
[2:0] 16814RXBUFSTATUS
Definition: GTXE2_GPL.v:2643
16980SHOW_REALIGN_COMMA"TRUE"
Definition: GTXE2_GPL.v:2852
16991RX_XCLK_SEL"RXREC"
Definition: GTXE2_GPL.v:2865
16987DEC_PCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:2860
[31:0] 16189width20
Definition: GTXE2_GPL.v:594
16848CPLL_FBDIV4
Definition: GTXE2_GPL.v:2692
16953RXCDR_PH_RESET_ON_EIDLE1'b0
Definition: GTXE2_GPL.v:2821
16613GTNORTHREFCLK0
Definition: GTXE2_GPL.v:2399
16887TXSYNC_OVRD1'b1
Definition: GTXE2_GPL.v:2739
17065RXCDRLOCK_DELAY10
Definition: GTXE2_GPL.v:2997
[word_count-1:0] 16225owordwire[9:0]
Definition: GTXE2_GPL.v:680
wire 16576RXOUTCLKPMA
Definition: GTXE2_GPL.v:2189
17007RXBUF_RESET_ON_EIDLE"FALSE"
Definition: GTXE2_GPL.v:2882
16817RXCHANISALIGNED
Definition: GTXE2_GPL.v:2648
wire 16098GTNORTHREFCLK0
Definition: GTXE2_GPL.v:266
dataiface gtxe2_chnl_tx_dataiface
Definition: GTXE2_GPL.v:1081
17056rxcdrlockreg
Definition: GTXE2_GPL.v:2947
17039CHAN_BOND_SEQ_2_210'b0
Definition: GTXE2_GPL.v:2916
17009RXBUF_THRESH_OVRD"FALSE"
Definition: GTXE2_GPL.v:2884
wire 16471reset
Definition: GTXE2_GPL.v:1849
[23:0] 16069CPLL_INIT_CFG24'h00001E
Definition: GTXE2_GPL.v:120
wire [7:0] 16545RXDISPERR
Definition: GTXE2_GPL.v:2149
[6:0] 16713TXMAINCURSOR
Definition: GTXE2_GPL.v:2528
16889RXPRBS_ERR_LOOPBACK1'b0
Definition: GTXE2_GPL.v:2742
wire 16052CPLLRESET
Definition: GTXE2_GPL.v:98
wire 16295TXRATEDONE
Definition: GTXE2_GPL.v:947
wire [2:0] 16095CPLLREFCLKSEL
Definition: GTXE2_GPL.v:263
16617GTSOUTHREFCLK0
Definition: GTXE2_GPL.v:2403
wire 16528RXUSRCLK2
Definition: GTXE2_GPL.v:2119
wire 16563GTREFCLKMONITOR
Definition: GTXE2_GPL.v:2172
16927SATA_MAX_INIT21
Definition: GTXE2_GPL.v:2793
[2:0] 16332SATA_EIDLE_VAL3'b100
Definition: GTXE2_GPL.v:1288
wire 16101GTSOUTHREFCLK1
Definition: GTXE2_GPL.v:269
16146SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:323
16990RXBUF_EN"TRUE"
Definition: GTXE2_GPL.v:2864
16608ALIGN_COMMA_DOUBLE"FALSE"
Definition: GTXE2_GPL.v:2231
16951RXCDR_HOLD_DURING_EIDLE1'b0
Definition: GTXE2_GPL.v:2819
16802RXPHDLYRESET
Definition: GTXE2_GPL.v:2630
wire [internal_isk_width - 1:0] 16271outisk
Definition: GTXE2_GPL.v:878
16718TXQPISTRONGPDOWN
Definition: GTXE2_GPL.v:2533
reg 16089clk_out
Definition: GTXE2_GPL.v:224
wire [7:0] 16512TX8B10BBYPASS
Definition: GTXE2_GPL.v:2088
16219bp_data_outwire[owidth-1:0]
Definition: GTXE2_GPL.v:667
wire 16520TXRATEDONE
Definition: GTXE2_GPL.v:2102
16994RXPHDLY_CFG24'h0
Definition: GTXE2_GPL.v:2868
16074SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:125
17008RXBUF_THRESH_OVFLW0
Definition: GTXE2_GPL.v:2883
17060drp_latency_counterinteger
Definition: GTXE2_GPL.v:2959
16874TX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:2723
16420ALIGN_COMMA_DOUBLE"FALSE"
Definition: GTXE2_GPL.v:1629
17028CLK_COR_SEQ_2_310'b0
Definition: GTXE2_GPL.v:2904
16850CPLL_INIT_CFG24'h0
Definition: GTXE2_GPL.v:2694
16205bitcounter_limitwire
Definition: GTXE2_GPL.v:615
16602DEC_PCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:2224
wire 16479RXCOMINITDET
Definition: GTXE2_GPL.v:1862
[4:0] 16819RXCHBONDI
Definition: GTXE2_GPL.v:2650
integer 16071CPLL_REFCLK_DIV1
Definition: GTXE2_GPL.v:122
16626CPLLFBCLKLOST
Definition: GTXE2_GPL.v:2413
16966es_sdata80'h0
Definition: GTXE2_GPL.v:2836
[4:0] 16585PMARSVDIN
Definition: GTXE2_GPL.v:2200
16967es_error_count16'h0
Definition: GTXE2_GPL.v:2837
wire [31:0] 16090div
Definition: GTXE2_GPL.v:226
wire 16484RXCOMMADET
Definition: GTXE2_GPL.v:1871
[2:0] 16611CPLLREFCLKSEL
Definition: GTXE2_GPL.v:2397
17010RXBUF_THRESH_UNDFLW0
Definition: GTXE2_GPL.v:2885
16988DEC_VALID_COMMA_ONLY"FALSE"
Definition: GTXE2_GPL.v:2861
feature GTXE2_CHNL_CPLL_LOCK_TIME 60
Definition: GTXE2_GPL.v:91
17061drp_rdy_rreg
Definition: GTXE2_GPL.v:2960
[9:0] 16415ALIGN_MCOMMA_VALUE10'b1010000011
Definition: GTXE2_GPL.v:1624
wire 16510TXUSRCLK
Definition: GTXE2_GPL.v:2084
16082last_edgetime
Definition: GTXE2_GPL.v:145
17053reset_timerreg[31:0]
Definition: GTXE2_GPL.v:2937
16503ALIGN_COMMA_DOUBLE"FALSE"
Definition: GTXE2_GPL.v:1901
wire [owidth - 1:0] 16216data_out
Definition: GTXE2_GPL.v:662
17023CLK_COR_SEQ_1_310'b0
Definition: GTXE2_GPL.v:2899
17050TX_CLK25_DIV6
Definition: GTXE2_GPL.v:2930
16986DEC_MCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:2859
wire 16050CPLLLOCKEN
Definition: GTXE2_GPL.v:96
integer 16589CPLL_FBDIV4
Definition: GTXE2_GPL.v:2205
16899TX_MARGIN_FULL_47'b0
Definition: GTXE2_GPL.v:2761
16248bursts_cnt_incwire
Definition: GTXE2_GPL.v:792
16405word_countiwidth / 10
Definition: GTXE2_GPL.v:1442
16893TX_DRIVE_MODE"DIRECT"
Definition: GTXE2_GPL.v:2755
wire 16522TXCOMWAKE
Definition: GTXE2_GPL.v:2106
[0:511] 17062drp_ramreg[15:0]
Definition: GTXE2_GPL.v:2961
16853RXOUT_DIV2
Definition: GTXE2_GPL.v:2697
16371bursts_cntreg[31:0]
Definition: GTXE2_GPL.v:1352
16689TXPHDLYRESET
Definition: GTXE2_GPL.v:2488
[7:0] 16676TX8B10BBYPASS
Definition: GTXE2_GPL.v:2472
wire 16281reset
Definition: GTXE2_GPL.v:924
wire 16508TXN
Definition: GTXE2_GPL.v:2081
integer 16599RX_DATA_WIDTH20
Definition: GTXE2_GPL.v:2220
[19:0] 16587TSTIN
Definition: GTXE2_GPL.v:2202
wire [width - 1:0] 16319outdata
Definition: GTXE2_GPL.v:1215
16818RXCHANREALIGN
Definition: GTXE2_GPL.v:2649
wire 16480RXCOMWAKEDET
Definition: GTXE2_GPL.v:1863
16876TXGEARBOX_EN"FALSE"
Definition: GTXE2_GPL.v:2726
16764RXDFETAP5OVRDEN
Definition: GTXE2_GPL.v:2584
[7:0] 16672TXCHARDISPVAL
Definition: GTXE2_GPL.v:2467
16982RXSLIDE_AUTO_WAIT7
Definition: GTXE2_GPL.v:2854
[63:0] 16830RXDATA
Definition: GTXE2_GPL.v:2663
16884TXDLY_TAP_CFG16'h0
Definition: GTXE2_GPL.v:2736
16760RXDFETAP3OVRDEN
Definition: GTXE2_GPL.v:2580
16985RX_DISPERR_SEQ_MATCH"TRUE"
Definition: GTXE2_GPL.v:2858
17012CLK_CORRECT_USE"FALSE"
Definition: GTXE2_GPL.v:2888
16374wake_idle_violationwire
Definition: GTXE2_GPL.v:1362
wire 16041CPLL_MUX_CLK_OUT
Definition: GTXE2_GPL.v:58
16902TX_MARGIN_LOW_27'b0
Definition: GTXE2_GPL.v:2764
16321bitcounterreg[31:0]
Definition: GTXE2_GPL.v:1220
[2:0] 16702TXOUTCLKSEL
Definition: GTXE2_GPL.v:2509
17037CHAN_BOND_SEQ_1_ENABLE4'b1111
Definition: GTXE2_GPL.v:2914
16983RX_SIG_VALID_DLY10
Definition: GTXE2_GPL.v:2855
17049RX_CLK25_DIV6
Definition: GTXE2_GPL.v:2929
wire [iskwidth - 1:0] 16400rxnotintable
Definition: GTXE2_GPL.v:1434
16867PD_TRANS_TIME_NONE_P28'h0
Definition: GTXE2_GPL.v:2714
16852CPLL_REFCLK_DIV1
Definition: GTXE2_GPL.v:2696
wire [iskwidth - 1:0] 16399rxdisperr
Definition: GTXE2_GPL.v:1433
wire [7:0] 16491RXDISPERR
Definition: GTXE2_GPL.v:1882
wire 16486RXPCOMMAALIGNEN
Definition: GTXE2_GPL.v:1874
16929RX_OS_CFG13'h0080
Definition: GTXE2_GPL.v:2796
16309oob_datawire[internal_data_width-1:0]
Definition: GTXE2_GPL.v:1126
16781RXDLYBYPASS
Definition: GTXE2_GPL.v:2603
16825RXDATAVALID
Definition: GTXE2_GPL.v:2657
clk_mux gtxe2_chnl_cpll_inmux
Definition: GTXE2_GPL.v:488
16870RX_CLKMUX_PD1'b0
Definition: GTXE2_GPL.v:2717
16963ES_CONTROL6'h0
Definition: GTXE2_GPL.v:2833
integer 16495RX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:1891
16880TXPH_MONITOR_SEL5'h0
Definition: GTXE2_GPL.v:2732
[3:0] 16237SATA_BURST_SEQ_LEN4'b0101
Definition: GTXE2_GPL.v:777
wire [1:0] 16557RXSYSCLKSEL
Definition: GTXE2_GPL.v:2166
16220word_countowidth / 10
Definition: GTXE2_GPL.v:674
16773RXCDRRESETRSV
Definition: GTXE2_GPL.v:2594
16723TXPRECURSORINV
Definition: GTXE2_GPL.v:2538
wire [2:0] 16108RXOUTCLKSEL
Definition: GTXE2_GPL.v:276
17025CLK_COR_SEQ_2_ENABLE4'b1111
Definition: GTXE2_GPL.v:2901
wire [2:0] 16119TXRATE
Definition: GTXE2_GPL.v:289
wire 16524TXELECIDLE
Definition: GTXE2_GPL.v:2110
[15:0] 16630GTRSVD
Definition: GTXE2_GPL.v:2417
17026CLK_COR_SEQ_2_110'b0
Definition: GTXE2_GPL.v:2902
16790RXBYTEREALIGN
Definition: GTXE2_GPL.v:2616
16779RXOUTCLKPCS
Definition: GTXE2_GPL.v:2601
wire 16578RXOUTCLK
Definition: GTXE2_GPL.v:2191
16076multiplierCPLL_FBDIV * CPLL_FBDIV_45
Definition: GTXE2_GPL.v:128
16719TXQPIWEAKPUP
Definition: GTXE2_GPL.v:2534
16939RX_DFE_LPM_HOLD_DURING_EIDLE1'b0
Definition: GTXE2_GPL.v:2806
16320trimmed_widthwidth * 4 / 5
Definition: GTXE2_GPL.v:1218
16970RX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:2840
16250quiet_lenwire[31:0]
Definition: GTXE2_GPL.v:794
16846OUTREFCLK_SEL_INV1'b0
Definition: GTXE2_GPL.v:2689
16903TX_MARGIN_LOW_37'b0
Definition: GTXE2_GPL.v:2765
16849CPLL_FBDIV_455
Definition: GTXE2_GPL.v:2693
16858TXPMARESET_TIME5'b00001
Definition: GTXE2_GPL.v:2703
wire [7:0] 16290TXCHARDISPVAL
Definition: GTXE2_GPL.v:936
decoder_10x8 gtxe2_chnl_rx_10x8dec
Definition: GTXE2_GPL.v:2004
16087counterreg[31:0]
Definition: GTXE2_GPL.v:195
16857TXPCSRESET_TIME5'b00001
Definition: GTXE2_GPL.v:2702
[15:0] 16135PCSRSVDIN
Definition: GTXE2_GPL.v:310
16913RX_CM_SEL2'b11
Definition: GTXE2_GPL.v:2778
16958ES_SDATA_MASK80'h0
Definition: GTXE2_GPL.v:2828
integer clogb2value
Definition: GTXE2_GPL.v:1694
16947RX_DFE_UT_CFG17'h11e00
Definition: GTXE2_GPL.v:2814
wire 16553GTSOUTHREFCLK1
Definition: GTXE2_GPL.v:2162
16439comma_poswire[window_size-1:0]
Definition: GTXE2_GPL.v:1666
wire [2:0] 16530RXRATE
Definition: GTXE2_GPL.v:2123
wire [7:0] 16543RXCHARISCOMMA
Definition: GTXE2_GPL.v:2147
16981RXSLIDE_MODE"OFF"
Definition: GTXE2_GPL.v:2853
16898TX_MARGIN_FULL_37'b0
Definition: GTXE2_GPL.v:2760
16976ALIGN_MCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:2848
wire [2:0] 16519TXRATE
Definition: GTXE2_GPL.v:2101
17024CLK_COR_SEQ_1_410'b0
Definition: GTXE2_GPL.v:2900
16961ES_EYE_SCAN_EN1'b1
Definition: GTXE2_GPL.v:2831
16698TXDLYSRESETDONE
Definition: GTXE2_GPL.v:2497
integer calc_ifdwdummy
Definition: GTXE2_GPL.v:1910
16871TX_CLKMUX_PD1'b0
Definition: GTXE2_GPL.v:2718
17068RXDLYSRESETDONE_DURATION7
Definition: GTXE2_GPL.v:3000
wire [7:0] 16490RXCHARISK
Definition: GTXE2_GPL.v:1881
16944RX_DEBUG_CFG12'h0
Definition: GTXE2_GPL.v:2811
16948RX_DFE_VP_CFG17'h03f03
Definition: GTXE2_GPL.v:2815
16386rxcomwakedet_usrclk2reg
Definition: GTXE2_GPL.v:1398
16410disp_wordwire[word_count-1:0]
Definition: GTXE2_GPL.v:1448
16792RXCOMMADETEN
Definition: GTXE2_GPL.v:2618
17043CHAN_BOND_SEQ_2_USE"FALSE"
Definition: GTXE2_GPL.v:2920
16304SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:964
wire 16568CPLLFBCLKLOST
Definition: GTXE2_GPL.v:2178
wire [width - 1:0] 16235outdata
Definition: GTXE2_GPL.v:774
16411no_disp_wordwire[word_count-1:0]
Definition: GTXE2_GPL.v:1449
16158rx_pma_divider1RX_INT_DATAWIDTH == 1 ? 4 : 2
Definition: GTXE2_GPL.v:351
wire 16478RXELECIDLE
Definition: GTXE2_GPL.v:1860
16084locked_finteger
Definition: GTXE2_GPL.v:147
17064reset_or_GTRXRESETwire
Definition: GTXE2_GPL.v:2977
wire [19:0] 16061TSTIN
Definition: GTXE2_GPL.v:108
16810RXPHALIGNDONE
Definition: GTXE2_GPL.v:2638
wire 16534RXCOMWAKEDET
Definition: GTXE2_GPL.v:2130
16813RXDLYSRESETDONE
Definition: GTXE2_GPL.v:2641
16904TX_MARGIN_LOW_47'b0
Definition: GTXE2_GPL.v:2766
[1:0] 16619RXSYSCLKSEL
Definition: GTXE2_GPL.v:2405
17003RXBUF_EIDLE_HI_CNT4'b0
Definition: GTXE2_GPL.v:2878
16658TXPDELECIDLEMODE
Definition: GTXE2_GPL.v:2449
[2:0] 16703TXRATE
Definition: GTXE2_GPL.v:2510
[7:0] 16799RXDISPERR
Definition: GTXE2_GPL.v:2626
16950RXCDR_LOCK_CFG6'h0
Definition: GTXE2_GPL.v:2818
16155tx_pcs_divider1tx_pma_divider1
Definition: GTXE2_GPL.v:348
16896TX_MARGIN_FULL_17'b0
Definition: GTXE2_GPL.v:2758
wire 16538RXCOMMADET
Definition: GTXE2_GPL.v:2138
wire [7:0] 16516TXCHARISK
Definition: GTXE2_GPL.v:2092
wire 16506reset
Definition: GTXE2_GPL.v:2076
wire 16297TXCOMWAKE
Definition: GTXE2_GPL.v:951
integer 16073TXOUT_DIV2
Definition: GTXE2_GPL.v:124
16081mult_dev_clkreg
Definition: GTXE2_GPL.v:137
wire 16566CPLLPD
Definition: GTXE2_GPL.v:2176
[7:0] 16671TXCHARDISPMODE
Definition: GTXE2_GPL.v:2466
16921SAS_MIN_COM36
Definition: GTXE2_GPL.v:2787
16745RXLPMLFHOLD
Definition: GTXE2_GPL.v:2565
16777RXOUTCLKFABRIC
Definition: GTXE2_GPL.v:2599
16952RXCDR_FR_RESET_ON_EIDLE1'b0
Definition: GTXE2_GPL.v:2820
16157tx_pcs_divider2tx_pma_divider2
Definition: GTXE2_GPL.v:350
16851CPLL_LOCK_CFG16'h0
Definition: GTXE2_GPL.v:2695
16748RXLPMHFOVRDEN
Definition: GTXE2_GPL.v:2568
17011CBCC_DATA_SOURCE_SEL"DECODED"
Definition: GTXE2_GPL.v:2887
16862RXDFELPMRESET_TIME7'h0
Definition: GTXE2_GPL.v:2708
16861RXCDRFREQRESET_TIME5'h0
Definition: GTXE2_GPL.v:2707
16996RXDLY_LCFG9'h0
Definition: GTXE2_GPL.v:2870
[word_count-1:0] 16223sixwire[5:0]
Definition: GTXE2_GPL.v:678
wire [1:0] 16344RXELECIDLEMODE
Definition: GTXE2_GPL.v:1303
wire [2:0] 16033CPLLREFCLKSEL
Definition: GTXE2_GPL.v:50
16998RX_DDI_SEL6'h0
Definition: GTXE2_GPL.v:2872
wire [1:0] 16517TXBUFSTATUS
Definition: GTXE2_GPL.v:2095
wire 16299TXELECIDLE
Definition: GTXE2_GPL.v:955
wire 16482RXBYTEISALIGNED
Definition: GTXE2_GPL.v:1869
16868PD_TRANS_TIME_TO_P28'h0
Definition: GTXE2_GPL.v:2715
16242quiet_len_wakeburst_len
Definition: GTXE2_GPL.v:785
wire 16042TXPLLREFCLK_DIV1
Definition: GTXE2_GPL.v:74
16757RXDFETAP2HOLD
Definition: GTXE2_GPL.v:2577
17054rx_rst_donereg
Definition: GTXE2_GPL.v:2945
wire 16475RXUSRCLK2
Definition: GTXE2_GPL.v:1854
[3:0] 16303SATA_BURST_SEQ_LEN4'b1111
Definition: GTXE2_GPL.v:963
16823RXCHBONDSLAVE
Definition: GTXE2_GPL.v:2654
16327bitcounter_limitwire
Definition: GTXE2_GPL.v:1226
wire 16053CPLLFBCLKLOST
Definition: GTXE2_GPL.v:99
wire [9:0] 16062TSTOUT
Definition: GTXE2_GPL.v:109
wire 16049CPLLLOCKDETCLK
Definition: GTXE2_GPL.v:95
[1:0] 16147PMA_RSV31
Definition: GTXE2_GPL.v:324
wire [interface_data_width - 1:0] 16452outdata
Definition: GTXE2_GPL.v:1762
16942PMA_RSV216'h0
Definition: GTXE2_GPL.v:2809
[word_count-1:0] 16226iwordwire[iwidth-1:0]
Definition: GTXE2_GPL.v:681
[15:0] 16592CPLL_LOCK_CFG16'h01E8
Definition: GTXE2_GPL.v:2208
16905TX_PREDRIVER_MODE1'b0
Definition: GTXE2_GPL.v:2767
16440pcomma_matchwire[window_size-1:0]
Definition: GTXE2_GPL.v:1667
16864RXPCSRESET_TIME5'h0
Definition: GTXE2_GPL.v:2710
[1:0] 16683TXBUFSTATUS
Definition: GTXE2_GPL.v:2481
wire 16539RXCOMMADETEN
Definition: GTXE2_GPL.v:2140
wire 16063ref_clk
Definition: GTXE2_GPL.v:112
[4:0] 16584PCSRSVDIN2
Definition: GTXE2_GPL.v:2199
wire 16555QPLLCLK
Definition: GTXE2_GPL.v:2164
16403rxdisperr_decwire[iskwidth-1:0]
Definition: GTXE2_GPL.v:1439
integer 16141CPLL_FBDIV4
Definition: GTXE2_GPL.v:318
16883TXDLY_LCFG9'h0
Definition: GTXE2_GPL.v:2735
[4:0] 16811RXPHMONITOR
Definition: GTXE2_GPL.v:2639
wire 16565CPLLLOCKEN
Definition: GTXE2_GPL.v:2175
17018CLK_COR_REPEAT_WAIT0
Definition: GTXE2_GPL.v:2894
16461inbuffer_iskreg[interface_isk_width-1:0]
Definition: GTXE2_GPL.v:1774
wire [2:0] 16046TXOUTCLKSEL
Definition: GTXE2_GPL.v:78
integer 16494RX_DATA_WIDTH20
Definition: GTXE2_GPL.v:1890
17041CHAN_BOND_SEQ_2_410'b0
Definition: GTXE2_GPL.v:2918
16435indata_rreg[width-1:0]
Definition: GTXE2_GPL.v:1653
17042CHAN_BOND_SEQ_2_ENABLE4'b1111
Definition: GTXE2_GPL.v:2919
16859RXPMARESET_TIME5'h0
Definition: GTXE2_GPL.v:2705
16715TXQPIBIASEN
Definition: GTXE2_GPL.v:2530
fifo resync_fifo_nonsynt
Definition: GTXE2_GPL.v:625
wire [1:0] 16477RXELECIDLEMODE
Definition: GTXE2_GPL.v:1859
16199bitcounterreg[31:0]
Definition: GTXE2_GPL.v:609
16972RX_PRBS_ERR_CNT16'h15c
Definition: GTXE2_GPL.v:2843
16866PD_TRANS_TIME_FROM_P212'h0
Definition: GTXE2_GPL.v:2713
[3:0] 16669CLKRSVD
Definition: GTXE2_GPL.v:2463
integer powerof2value
Definition: GTXE2_GPL.v:1704
wire 16542RX8B10BEN
Definition: GTXE2_GPL.v:2145
16370idle_lenreg[31:0]
Definition: GTXE2_GPL.v:1351
16244wake_bursts_cntSATA_BURST_SEQ_LEN
Definition: GTXE2_GPL.v:787
[23:0] 16140CPLL_CFG29'h00BC07DC
Definition: GTXE2_GPL.v:317
rx gtxe2_chnl_rx
Definition: GTXE2_GPL.v:2274
16964es_control_status4'b000
Definition: GTXE2_GPL.v:2834
16746RXLPMLFKLOVRDEN
Definition: GTXE2_GPL.v:2566
16390DEC_MCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:1421
16973ALIGN_COMMA_WORD1
Definition: GTXE2_GPL.v:2845
17052resetreg
Definition: GTXE2_GPL.v:2936
16198trimmed_widthwidth * 4 / 5
Definition: GTXE2_GPL.v:607
16692TXDLYOVRDEN
Definition: GTXE2_GPL.v:2491
wire [1:0] 16531RXELECIDLEMODE
Definition: GTXE2_GPL.v:2126
wire 16536RXBYTEISALIGNED
Definition: GTXE2_GPL.v:2136
16457divinterface_data_width / internal_data_width
Definition: GTXE2_GPL.v:1769
17059DRP_LATENCY5
Definition: GTXE2_GPL.v:2958
wire 16285TXUSRCLK
Definition: GTXE2_GPL.v:929
wire [1:0] 16105RXSYSCLKSEL
Definition: GTXE2_GPL.v:273
16741RXCOMWAKEDET
Definition: GTXE2_GPL.v:2560
wire 16532RXELECIDLE
Definition: GTXE2_GPL.v:2127
wire 16569CPLLLOCK
Definition: GTXE2_GPL.v:2179
16975ALIGN_COMMA_DOUBLE"FALSE"
Definition: GTXE2_GPL.v:2847
wire 16488RX8B10BEN
Definition: GTXE2_GPL.v:1878
wire [63:0] 16284TXDATA
Definition: GTXE2_GPL.v:928
wire [15:0] 16056GTRSVD
Definition: GTXE2_GPL.v:103
16954RXBUF_RESET_ON_RATE_CHANGE"TRUE"
Definition: GTXE2_GPL.v:2823
16693TXPHDLYTSTCLK
Definition: GTXE2_GPL.v:2492
wire 16580rx_serial_clk
Definition: GTXE2_GPL.v:2193
16907TX_EIDLE_ASSERT_DELAY3'b110
Definition: GTXE2_GPL.v:2769
17071RXPHALIGNDONE_DELAY2311
Definition: GTXE2_GPL.v:3003
16786RXPRBSCNTRESET
Definition: GTXE2_GPL.v:2611
[23:0] 16143CPLL_INIT_CFG24'h00001E
Definition: GTXE2_GPL.v:320
[3:0] 16710TXDIFFCTRL
Definition: GTXE2_GPL.v:2525
wire 16493serial_clk
Definition: GTXE2_GPL.v:1886
17001RX_DEFER_RESET_BUF_EN"TRUE"
Definition: GTXE2_GPL.v:2876
wire 16537RXBYTEREALIGN
Definition: GTXE2_GPL.v:2137
wire 16511TXUSRCLK2
Definition: GTXE2_GPL.v:2085
16890TXBUF_RESET_ON_RATE_CHANGE"TRUE"
Definition: GTXE2_GPL.v:2744
16782EYESCANDATAERROR
Definition: GTXE2_GPL.v:2605
16762RXDFETAP4OVRDEN
Definition: GTXE2_GPL.v:2582
17035CHAN_BOND_SEQ_1_310'b0
Definition: GTXE2_GPL.v:2912
16459interface_total_widthinterface_data_width + interface_isk_width
Definition: GTXE2_GPL.v:1771
16648RXCDRFREQRESET
Definition: GTXE2_GPL.v:2438
16912SATA_BURST_SEQ_LEN4'b0101
Definition: GTXE2_GPL.v:2776
integer 16597TX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:2217
16730TXCOMFINISH
Definition: GTXE2_GPL.v:2547
17051clk_resetwire
Definition: GTXE2_GPL.v:2934
encoder_8x10 gtxe2_chnl_tx_8x10enc
Definition: GTXE2_GPL.v:1154
17022CLK_COR_SEQ_1_210'b0
Definition: GTXE2_GPL.v:2898
wire 16286TXUSRCLK2
Definition: GTXE2_GPL.v:930
integer calc_ifdwTX8B10BEN
Definition: GTXE2_GPL.v:987
16937RX_DFE_H5_CFG11'h0e0
Definition: GTXE2_GPL.v:2804
16752RXDFELFOVRDEN
Definition: GTXE2_GPL.v:2572
[19:0] 16635TSTIN
Definition: GTXE2_GPL.v:2422
17016CLK_COR_MIN_LAT7
Definition: GTXE2_GPL.v:2892
wire 16579RXOUTCLKFABRIC
Definition: GTXE2_GPL.v:2192
17033CHAN_BOND_SEQ_1_110'b0
Definition: GTXE2_GPL.v:2910
16968es_sample_count16'h0
Definition: GTXE2_GPL.v:2838
16628CPLLREFCLKLOST
Definition: GTXE2_GPL.v:2415
wire 16570CPLLREFCLKLOST
Definition: GTXE2_GPL.v:2180
16997RXDLY_TAP_CFG16'h0
Definition: GTXE2_GPL.v:2871
[2:0] 16714TXMARGIN
Definition: GTXE2_GPL.v:2529
wire [15:0] 16057PCSRSVDIN
Definition: GTXE2_GPL.v:104
16957ES_PRESCALE5'h0
Definition: GTXE2_GPL.v:2827
16928SATA_MAX_WAKE7
Definition: GTXE2_GPL.v:2794
16372burst_len_violationwire
Definition: GTXE2_GPL.v:1360
[9:0] 16629TSTOUT
Definition: GTXE2_GPL.v:2416
16808RXDLYOVRDEN
Definition: GTXE2_GPL.v:2636
wire 16523TXCOMFINISH
Definition: GTXE2_GPL.v:2107
[4:0] 16633PMARSVDIN
Definition: GTXE2_GPL.v:2420
17066RXDLYSRESET_MIN_DURATION50
Definition: GTXE2_GPL.v:2998
wire [2:0] 16120RXRATE
Definition: GTXE2_GPL.v:290
16614GTNORTHREFCLK1
Definition: GTXE2_GPL.v:2400
16794RXMCOMMAALIGNEN
Definition: GTXE2_GPL.v:2620
17004RXBUF_EIDLE_LO_CNT4'b0
Definition: GTXE2_GPL.v:2879
wire 16507TXP
Definition: GTXE2_GPL.v:2080
16168tx_serial_dividerwire[31:0]
Definition: GTXE2_GPL.v:373
16894TX_MAINCURSOR_SEL1'b0
Definition: GTXE2_GPL.v:2756
wire [1:0] 16292TXBUFSTATUS
Definition: GTXE2_GPL.v:940
16793RXPCOMMAALIGNEN
Definition: GTXE2_GPL.v:2619
16992RXPH_CFG24'h0
Definition: GTXE2_GPL.v:2866
16275data_resyncedwire[interface_data_width+interface_isk_width-1:0]
Definition: GTXE2_GPL.v:885
16621GTREFCLKMONITOR
Definition: GTXE2_GPL.v:2407
[4:0] 16586PMARSVDIN2
Definition: GTXE2_GPL.v:2201
wire 16130RXOUTCLKFABRIC
Definition: GTXE2_GPL.v:303
[1:0] 16075PMA_RSV31
Definition: GTXE2_GPL.v:126
16885TXSYNC_MULTILANE1'b0
Definition: GTXE2_GPL.v:2737
wire 16293TXPOLARITY
Definition: GTXE2_GPL.v:943
wire 16118CPLLREFCLKLOST
Definition: GTXE2_GPL.v:287
wire 16541RXMCOMMAALIGNEN
Definition: GTXE2_GPL.v:2142
16922SATA_MIN_INIT12
Definition: GTXE2_GPL.v:2788
wire [internal_data_width - 1:0] 16454indata
Definition: GTXE2_GPL.v:1764
17000RX_BUFFER_CFG6'b0
Definition: GTXE2_GPL.v:2875
16882TXDLY_CFG16'h0
Definition: GTXE2_GPL.v:2734
wire 16525RXP
Definition: GTXE2_GPL.v:2115
16934RX_DFE_H2_CFG12'h0
Definition: GTXE2_GPL.v:2801
16759RXDFETAP3HOLD
Definition: GTXE2_GPL.v:2579
16245bursts_cntreg[31:0]
Definition: GTXE2_GPL.v:789
17057rxdlysresetdonereg
Definition: GTXE2_GPL.v:2948
16909TX_LOOPBACK_DRIVE_HIZ"FALSE"
Definition: GTXE2_GPL.v:2771
16154tx_pma_divider1TX_INT_DATAWIDTH == 1 ? 4 : 2
Definition: GTXE2_GPL.v:347
16753RXDFEUTHOLD
Definition: GTXE2_GPL.v:2573
wire [width - 1:0] 16181data_rd
Definition: GTXE2_GPL.v:549
fifo resync_fifo_nonsynt
Definition: GTXE2_GPL.v:1258
wire [iskwidth - 1:0] 16212TXCHARDISPVAL
Definition: GTXE2_GPL.v:658
16438comma_matchwire[window_size-1:0]
Definition: GTXE2_GPL.v:1665
wire [7:0] 16515TXCHARDISPVAL
Definition: GTXE2_GPL.v:2091
16740RXCOMSASDET
Definition: GTXE2_GPL.v:2559
[23:0] 16066CPLL_CFG29'h00BC07DC
Definition: GTXE2_GPL.v:117
16078fb_clk_outwire
Definition: GTXE2_GPL.v:134
wire 16231TXCOMFINISH
Definition: GTXE2_GPL.v:768
clocking gtxe2_chnl_clocking
Definition: GTXE2_GPL.v:2323
integer 16142CPLL_FBDIV_455
Definition: GTXE2_GPL.v:319
16828RXHEADERVALID
Definition: GTXE2_GPL.v:2660
16328almost_empty_rdwire
Definition: GTXE2_GPL.v:1227
16416ALIGN_MCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:1625
wire 16099GTNORTHREFCLK1
Definition: GTXE2_GPL.v:267
[1:0] 16620TXSYSCLKSEL
Definition: GTXE2_GPL.v:2406
[31:0] 16313width20
Definition: GTXE2_GPL.v:1207
[1:0] 16815RXCLKCORCNT
Definition: GTXE2_GPL.v:2645
wire 16556QPLLREFCLK
Definition: GTXE2_GPL.v:2165
16872DMONITOR_CFG24'h008101
Definition: GTXE2_GPL.v:2720
16806RXDLYSRESET
Definition: GTXE2_GPL.v:2634
wire [interface_isk_width - 1:0] 16453outisk
Definition: GTXE2_GPL.v:1763
16863RXISCANRESET_TIME7'h0
Definition: GTXE2_GPL.v:2709
16077dividerCPLL_REFCLK_DIV
Definition: GTXE2_GPL.v:129
16686TXPHALIGNEN
Definition: GTXE2_GPL.v:2485
integer calc_idwdummy
Definition: GTXE2_GPL.v:1903
[7:0] 16678TXCHARISK
Definition: GTXE2_GPL.v:2474
wire 16518TXPOLARITY
Definition: GTXE2_GPL.v:2098
16789RXBYTEISALIGNED
Definition: GTXE2_GPL.v:2615
16307polarized_datawire[internal_data_width-1:0]
Definition: GTXE2_GPL.v:1099
17031CHAN_BOND_KEEP_ALIGN"FALSE"
Definition: GTXE2_GPL.v:2908
16622CPLLLOCKDETCLK
Definition: GTXE2_GPL.v:2409
wire 16296TXCOMINIT
Definition: GTXE2_GPL.v:950
16977ALIGN_MCOMMA_VALUE10'b1010000011
Definition: GTXE2_GPL.v:2849
16311next_disparitywire
Definition: GTXE2_GPL.v:1148
17021CLK_COR_SEQ_1_110'b0
Definition: GTXE2_GPL.v:2897
16763RXDFETAP5HOLD
Definition: GTXE2_GPL.v:2583
16974ALIGN_COMMA_ENABLE10'b1111111111
Definition: GTXE2_GPL.v:2846
wire [iwidth - 1:0] 16394indata
Definition: GTXE2_GPL.v:1427
wire 16535RXPOLARITY
Definition: GTXE2_GPL.v:2133
16841SIM_RESET_SPEEDUP"TRUE"
Definition: GTXE2_GPL.v:2683
[9:0] 16607ALIGN_COMMA_ENABLE10'b1111111111
Definition: GTXE2_GPL.v:2230
wire [2:0] 16547CPLLREFCLKSEL
Definition: GTXE2_GPL.v:2156
wire [2:0] 16559TXOUTCLKSEL
Definition: GTXE2_GPL.v:2168
16783EYESCANTRIGGER
Definition: GTXE2_GPL.v:2606
16965es_rdata80'h0
Definition: GTXE2_GPL.v:2835
[8:0] 16662DRPADDR
Definition: GTXE2_GPL.v:2455
wire [interface_isk_width - 1:0] 16273inisk
Definition: GTXE2_GPL.v:880
16200data_resyncedwire[width-1:0]
Definition: GTXE2_GPL.v:610
16238SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:778
16373idle_len_violationwire
Definition: GTXE2_GPL.v:1361
[1:0] 16769RXMONITORSEL
Definition: GTXE2_GPL.v:2589
des gtxe2_chnl_rx_des
Definition: GTXE2_GPL.v:1955
16156tx_pma_divider2TX_DATA_WIDTH == 20 | TX_DATA_WIDTH == 40 | TX_DATA_WIDTH == 80 ? 5 : 4
Definition: GTXE2_GPL.v:349
rx_out_mux gtxe2_chnl_outclk_mux
Definition: GTXE2_GPL.v:477
wire [iskwidth - 1:0] 16397rxchariscomma
Definition: GTXE2_GPL.v:1431
16906TX_QPI_STATUS_EN1'b0
Definition: GTXE2_GPL.v:2768
integer 16590CPLL_FBDIV_455
Definition: GTXE2_GPL.v:2206
[6:0] 16770RXMONITOROUT
Definition: GTXE2_GPL.v:2590
wire 16564CPLLLOCKDETCLK
Definition: GTXE2_GPL.v:2174
[63:0] 16673TXDATA
Definition: GTXE2_GPL.v:2468
[4:0] 16634PMARSVDIN2
Definition: GTXE2_GPL.v:2421
16749RXDFEAGCHOLD
Definition: GTXE2_GPL.v:2569
16700TXPRBSFORCEERR
Definition: GTXE2_GPL.v:2505
16441mcomma_matchwire[window_size-1:0]
Definition: GTXE2_GPL.v:1668
16747RXLPMHFHOLD
Definition: GTXE2_GPL.v:2567
16855SATA_CPLL_CFG"VCO_3000MHZ"
Definition: GTXE2_GPL.v:2699
17030CHAN_BOND_MAX_SKEW1
Definition: GTXE2_GPL.v:2907
16497DEC_PCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:1894
wire [owidth - 1:0] 16401outdata
Definition: GTXE2_GPL.v:1436
16940RX_DFE_XYD_CFG13'h0
Definition: GTXE2_GPL.v:2807
16751RXDFELFHOLD
Definition: GTXE2_GPL.v:2571
wire [iskwidth - 1:0] 16209TX8B10BBYPASS
Definition: GTXE2_GPL.v:655
wire [interface_data_width - 1:0] 16272indata
Definition: GTXE2_GPL.v:879
wire 16487RXMCOMMAALIGNEN
Definition: GTXE2_GPL.v:1875
[1:0] 16737RXELECIDLEMODE
Definition: GTXE2_GPL.v:2556
wire 16550GTNORTHREFCLK0
Definition: GTXE2_GPL.v:2159
16908TX_EIDLE_DEASSERT_DELAY3'b100
Definition: GTXE2_GPL.v:2770
16877TXBUF_EN"TRUE"
Definition: GTXE2_GPL.v:2728
16249bursts_cnt_clrwire
Definition: GTXE2_GPL.v:793
16784EYESCANMODE
Definition: GTXE2_GPL.v:2607
16960ES_QUAL_MASK80'h0
Definition: GTXE2_GPL.v:2830
16969RX_DATA_WIDTH20
Definition: GTXE2_GPL.v:2839
16418ALIGN_PCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:1627
wire 16575tx_serial_clk
Definition: GTXE2_GPL.v:2187
wire 16051CPLLPD
Definition: GTXE2_GPL.v:97
16945RX_DFE_KL_CFG13'h0
Definition: GTXE2_GPL.v:2812
17069RXPHALIGNDONE_DELAY115
Definition: GTXE2_GPL.v:3001
wire 16551GTNORTHREFCLK1
Definition: GTXE2_GPL.v:2160
17047PCS_PCIE_EN"FALSE"
Definition: GTXE2_GPL.v:2924
16243init_bursts_cntSATA_BURST_SEQ_LEN
Definition: GTXE2_GPL.v:786
wire 16573TXOUTCLK
Definition: GTXE2_GPL.v:2185
[2:0] 16331SATA_BURST_VAL3'b100
Definition: GTXE2_GPL.v:1287
16458internal_total_widthinternal_data_width + internal_isk_width
Definition: GTXE2_GPL.v:1770
16375init_idle_violationwire
Definition: GTXE2_GPL.v:1363
16943RX_BIAS_CFG12'h040
Definition: GTXE2_GPL.v:2810
[2:0] 16708TXBUFDIFFCTRL
Definition: GTXE2_GPL.v:2523
wire 16521TXCOMINIT
Definition: GTXE2_GPL.v:2105
wire 16124TXOUTCLKFABRIC
Definition: GTXE2_GPL.v:296
16959ES_QUALIFIER80'h0
Definition: GTXE2_GPL.v:2829
wire 16552GTSOUTHREFCLK0
Definition: GTXE2_GPL.v:2161
16369burst_lenreg[31:0]
Definition: GTXE2_GPL.v:1350
16914TERM_RCAL_CFG5'b0
Definition: GTXE2_GPL.v:2779
16886TXSYNC_SKIP_DA1'b0
Definition: GTXE2_GPL.v:2738
16918RXOOB_CFG7'b0000110
Definition: GTXE2_GPL.v:2784
wire [7:0] 16544RXCHARISK
Definition: GTXE2_GPL.v:2148
16879TXPH_CFG16'h0
Definition: GTXE2_GPL.v:2731
16999TST_RSV32'h0
Definition: GTXE2_GPL.v:2873
16915TERM_RCAL_OVRD1'b0
Definition: GTXE2_GPL.v:2780
17014CLK_COR_KEEP_IDLE"FALSE"
Definition: GTXE2_GPL.v:2890
16433comma_widthALIGN_COMMA_DOUBLE == "FALSE" ? 10 : 20
Definition: GTXE2_GPL.v:1649
16949RXCDR_CFG72'h0
Definition: GTXE2_GPL.v:2817
[1:0] 16656RXPD
Definition: GTXE2_GPL.v:2447
17034CHAN_BOND_SEQ_1_210'b0
Definition: GTXE2_GPL.v:2911
16721TXPOSTCURSORINV
Definition: GTXE2_GPL.v:2536
[7:0] 16797RXCHARISCOMMA
Definition: GTXE2_GPL.v:2624
[2:0] 16776RXOUTCLKSEL
Definition: GTXE2_GPL.v:2598
16901TX_MARGIN_LOW_17'b0
Definition: GTXE2_GPL.v:2763
wire 16064clk_out
Definition: GTXE2_GPL.v:113
wire [7:0] 16291TXCHARISK
Definition: GTXE2_GPL.v:937
16895TX_MARGIN_FULL_07'b0
Definition: GTXE2_GPL.v:2757
wire 16474RXUSRCLK
Definition: GTXE2_GPL.v:1853
wire [width - 1:0] 16425outdata
Definition: GTXE2_GPL.v:1636
[15:0] 16664DRPDI
Definition: GTXE2_GPL.v:2457
16227is_controlwire[word_count-1:0]
Definition: GTXE2_GPL.v:682
16888LOOPBACK_CFG1'b0
Definition: GTXE2_GPL.v:2740
16601DEC_MCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:2223
wire 16572TXOUTCLKPCS
Definition: GTXE2_GPL.v:2184
tx_oob gtxe2_chnl_tx_oob
Definition: GTXE2_GPL.v:1130
wire 16527RXUSRCLK
Definition: GTXE2_GPL.v:2118
16856PMA_RSV32'b00
Definition: GTXE2_GPL.v:2700
16402rxcharisk_decwire[iskwidth-1:0]
Definition: GTXE2_GPL.v:1438
wire [iskwidth - 1:0] 16211TXCHARDISPMODE
Definition: GTXE2_GPL.v:657
[3:0] 16609SATA_BURST_SEQ_LEN4'b1111
Definition: GTXE2_GPL.v:2234
16772RXCDROVRDEN
Definition: GTXE2_GPL.v:2593
16409dispwire[word_count-1:0]
Definition: GTXE2_GPL.v:1447
16956ES_HORZ_OFFSET12'h0
Definition: GTXE2_GPL.v:2826
aligner gtxe2_chnl_rx_align
Definition: GTXE2_GPL.v:1969
[15:0] 16631PCSRSVDIN
Definition: GTXE2_GPL.v:2418
wire 16288TX8B10BEN
Definition: GTXE2_GPL.v:934
16860RXCDRPHRESET_TIME5'h0
Definition: GTXE2_GPL.v:2706
[word_count-1:0] 16224fourwire[3:0]
Definition: GTXE2_GPL.v:679
16910TX_RXDETECT_CFG14'h0
Definition: GTXE2_GPL.v:2773
16932RX_DFE_LPM_CFG16'h0
Definition: GTXE2_GPL.v:2799
wire 16561TXDLYBYPASS
Definition: GTXE2_GPL.v:2170
wire 16088clk_in
Definition: GTXE2_GPL.v:223
wire 16513TX8B10BEN
Definition: GTXE2_GPL.v:2089
[9:0] 16581TSTOUT
Definition: GTXE2_GPL.v:2196
wire [2:0] 16560RXOUTCLKSEL
Definition: GTXE2_GPL.v:2169
[4:0] 16632PCSRSVDIN2
Definition: GTXE2_GPL.v:2419
16301TX_DATA_WIDTH20
Definition: GTXE2_GPL.v:960
16649RXDFELPMRESET
Definition: GTXE2_GPL.v:2439
16302TX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:961
16923SATA_MIN_WAKE4
Definition: GTXE2_GPL.v:2789
16995RXDLY_CFG16'h0
Definition: GTXE2_GPL.v:2869
[9:0] 16605ALIGN_PCOMMA_VALUE10'b0101111100
Definition: GTXE2_GPL.v:2228
[15:0] 16582GTRSVD
Definition: GTXE2_GPL.v:2197
16650EYESCANRESET
Definition: GTXE2_GPL.v:2440
16690TXDLYBYPASS
Definition: GTXE2_GPL.v:2489
16606ALIGN_PCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:2229
16642TXRESETDONE
Definition: GTXE2_GPL.v:2431
wire 16526RXN
Definition: GTXE2_GPL.v:2116
wire 16300serial_clk
Definition: GTXE2_GPL.v:958
wire 16283TXN
Definition: GTXE2_GPL.v:926
wire 16549GTREFCLK1
Definition: GTXE2_GPL.v:2158
16873TX_DATA_WIDTH20
Definition: GTXE2_GPL.v:2722
16404outdata_decwire[owidth-1:0]
Definition: GTXE2_GPL.v:1440
[9:0] 16500ALIGN_PCOMMA_VALUE10'b0101111100
Definition: GTXE2_GPL.v:1898
16169rx_serial_dividerwire[31:0]
Definition: GTXE2_GPL.v:374
[1:0] 16657TXPD
Definition: GTXE2_GPL.v:2448
[6:0] 16681TXSEQUENCE
Definition: GTXE2_GPL.v:2478
[7:0] 16800RXNOTINTABLE
Definition: GTXE2_GPL.v:2627
17029CLK_COR_SEQ_2_410'b0
Definition: GTXE2_GPL.v:2905
wire [1:0] 16558TXSYSCLKSEL
Definition: GTXE2_GPL.v:2167
16920SATA_EIDLE_VAL3'b110
Definition: GTXE2_GPL.v:2786
17046FTS_LANE_DESKEW_EN"FALSE"
Definition: GTXE2_GPL.v:2923
wire [2:0] 16294TXRATE
Definition: GTXE2_GPL.v:946
17019CLK_COR_SEQ_LEN1
Definition: GTXE2_GPL.v:2895
16695TXDLYUPDOWN
Definition: GTXE2_GPL.v:2494
17048RXGEARBOX_EN"FALSE"
Definition: GTXE2_GPL.v:2926
wire 16554GTGREFCLK
Definition: GTXE2_GPL.v:2163
16618GTSOUTHREFCLK1
Definition: GTXE2_GPL.v:2404
[2:0] 16680TXHEADER
Definition: GTXE2_GPL.v:2477
wire 16574TXOUTCLKFABRIC
Definition: GTXE2_GPL.v:2186
wire 16282TXP
Definition: GTXE2_GPL.v:925
16935RX_DFE_H3_CFG12'h040
Definition: GTXE2_GPL.v:2802
16984COMMA_ALIGN_LATENCY9'h14e
Definition: GTXE2_GPL.v:2856
16754RXDFEUTOVRDEN
Definition: GTXE2_GPL.v:2574
16654RXRESETDONE
Definition: GTXE2_GPL.v:2444
16408datawire[iwidth-1:0]
Definition: GTXE2_GPL.v:1446
integer 16067CPLL_FBDIV4
Definition: GTXE2_GPL.v:118
16276wordcounterreg[31:0]
Definition: GTXE2_GPL.v:887
16501ALIGN_PCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:1899
16845SIM_VERSION"1.0"
Definition: GTXE2_GPL.v:2687
16407pure_datawire[iwidth-2*word_count-1:0]
Definition: GTXE2_GPL.v:1445
wire [63:0] 16529RXDATA
Definition: GTXE2_GPL.v:2121
16499ALIGN_MCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:1897
[2:0] 16827RXHEADER
Definition: GTXE2_GPL.v:2659
16201almost_empty_rdwire
Definition: GTXE2_GPL.v:611
16704TXOUTCLKFABRIC
Definition: GTXE2_GPL.v:2511
16875GEARBOX_MODE3'h0
Definition: GTXE2_GPL.v:2725
16496DEC_MCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:1893
16938PMA_RSV32'h00018480
Definition: GTXE2_GPL.v:2805
17055tx_rst_donereg
Definition: GTXE2_GPL.v:2946
wire [4:0] 16059PMARSVDIN
Definition: GTXE2_GPL.v:106
16391DEC_PCOMMA_DETECT"TRUE"
Definition: GTXE2_GPL.v:1422
16469resync[interface_total_width-1:0]
Definition: GTXE2_GPL.v:1814
16919SATA_BURST_VAL3'b110
Definition: GTXE2_GPL.v:2785
wire [iskwidth - 1:0] 16398rxcharisk
Definition: GTXE2_GPL.v:1432
[15:0] 16144CPLL_LOCK_CFG16'h01E8
Definition: GTXE2_GPL.v:321
wire [1:0] 16106TXSYSCLKSEL
Definition: GTXE2_GPL.v:274
17063drp_raddrreg[8:0]
Definition: GTXE2_GPL.v:2962
wire [width - 1:0] 16424indata
Definition: GTXE2_GPL.v:1635
wire 16548GTREFCLK0
Definition: GTXE2_GPL.v:2157
17006RXBUF_RESET_ON_COMMAALIGN"FALSE"
Definition: GTXE2_GPL.v:2881
16978ALIGN_PCOMMA_DET"TRUE"
Definition: GTXE2_GPL.v:2850
[15:0] 16665DRPDO
Definition: GTXE2_GPL.v:2458
[9:0] 16417ALIGN_PCOMMA_VALUE10'b0101111100
Definition: GTXE2_GPL.v:1626
16881TXPHDLY_CFG24'h0
Definition: GTXE2_GPL.v:2733
16826RXGEARBOXSLIP
Definition: GTXE2_GPL.v:2658
17017CLK_COR_PRECEDENCE"TRUE"
Definition: GTXE2_GPL.v:2893
wire [63:0] 16476RXDATA
Definition: GTXE2_GPL.v:1856
integer 16145CPLL_REFCLK_DIV1
Definition: GTXE2_GPL.v:322
16842SIM_CPLLREFCLK_SEL3'b001
Definition: GTXE2_GPL.v:2684
16822RXCHBONDMASTER
Definition: GTXE2_GPL.v:2653
16221word_disparitywire[word_count-1:0]
Definition: GTXE2_GPL.v:676
[2:0] 16821RXCHBONDLEVEL
Definition: GTXE2_GPL.v:2652
[9:0] 16603ALIGN_MCOMMA_VALUE10'b1010000011
Definition: GTXE2_GPL.v:2226
16262outdata_negwire[width-1:0]
Definition: GTXE2_GPL.v:849
16892TX_DEEMPH15'b01101
Definition: GTXE2_GPL.v:2754
ser gtxe2_chnl_tx_ser
Definition: GTXE2_GPL.v:1037
16384rxcominitdet_usrclk2reg
Definition: GTXE2_GPL.v:1396
17040CHAN_BOND_SEQ_2_310'b0
Definition: GTXE2_GPL.v:2917
wire 16577RXOUTCLKPCS
Definition: GTXE2_GPL.v:2190
wire 16112CPLLLOCKDETCLK
Definition: GTXE2_GPL.v:281
16865RXBUFRESET_TIME5'h0
Definition: GTXE2_GPL.v:2711
[15:0] 16134GTRSVD
Definition: GTXE2_GPL.v:309
wire 16483RXBYTEREALIGN
Definition: GTXE2_GPL.v:1870
rx_oob gtxe2_chnl_rx_oob
Definition: GTXE2_GPL.v:1929
16274divinterface_data_width / internal_data_width
Definition: GTXE2_GPL.v:883
wire 16562RXDLYBYPASS
Definition: GTXE2_GPL.v:2171
[4:0] 16136PCSRSVDIN2
Definition: GTXE2_GPL.v:311
[4:0] 16138PMARSVDIN2
Definition: GTXE2_GPL.v:313
16261outdata_poswire[width-1:0]
Definition: GTXE2_GPL.v:848
16847CPLL_CFG24'h0
Definition: GTXE2_GPL.v:2691
16979ALIGN_PCOMMA_VALUE10'b0101111100
Definition: GTXE2_GPL.v:2851
wire 16043TXPLLREFCLK_DIV2
Definition: GTXE2_GPL.v:75
integer 16072RXOUT_DIV2
Definition: GTXE2_GPL.v:123
16989UCODEER_CLR1'b0
Definition: GTXE2_GPL.v:2862
wire [63:0] 16509TXDATA
Definition: GTXE2_GPL.v:2083
wire [iwidth - 1:0] 16215data_in
Definition: GTXE2_GPL.v:661
17070RXPHALIGNDONE_DURATION17
Definition: GTXE2_GPL.v:3002
16470data_wrwire[interface_total_width-1:0]
Definition: GTXE2_GPL.v:1818
16684TXDLYSRESET
Definition: GTXE2_GPL.v:2483
wire 16054CPLLLOCK
Definition: GTXE2_GPL.v:100
[7:0] 16798RXCHARISK
Definition: GTXE2_GPL.v:2625
16218enc_data_outwire[owidth-1:0]
Definition: GTXE2_GPL.v:666
16933RX_DFE_GAIN_CFG23'h020FEA
Definition: GTXE2_GPL.v:2800
16993RXPH_MONITOR_SEL5'h0
Definition: GTXE2_GPL.v:2867
16804RXPHALIGNEN
Definition: GTXE2_GPL.v:2632
[1:0] 16594PMA_RSV31
Definition: GTXE2_GPL.v:2210
[9:0] 16419ALIGN_COMMA_ENABLE10'b1111111111
Definition: GTXE2_GPL.v:1628
16843SIM_RECEIVER_DETECT_PASS"TRUE"
Definition: GTXE2_GPL.v:2685
16322inbufferreg[width-1:0]
Definition: GTXE2_GPL.v:1221
wire 16533RXCOMINITDET
Definition: GTXE2_GPL.v:2129
16916RX_CM_TRIM3'b010
Definition: GTXE2_GPL.v:2781
16844SIM_TX_EIDLE_DRIVE_LEVEL"X"
Definition: GTXE2_GPL.v:2686
17038CHAN_BOND_SEQ_2_110'b0
Definition: GTXE2_GPL.v:2915
16878TX_XCLK_SEL"TXOUT"
Definition: GTXE2_GPL.v:2730
wire 16065pll_locked
Definition: GTXE2_GPL.v:114
16767RXDFEXYDOVRDEN
Definition: GTXE2_GPL.v:2587
[4:0] 16820RXCHBONDO
Definition: GTXE2_GPL.v:2651
17036CHAN_BOND_SEQ_1_410'b0
Definition: GTXE2_GPL.v:2913
[15:0] 16644PCSRSVDOUT
Definition: GTXE2_GPL.v:2433
16222interm_disparitywire[word_count-1:0]
Definition: GTXE2_GPL.v:677
16926SAS_MAX_COM64
Definition: GTXE2_GPL.v:2792
16869TRANS_TIME_RATE8'h0
Definition: GTXE2_GPL.v:2716
16739RXCOMINITDET
Definition: GTXE2_GPL.v:2558
16917PCS_RSVD_ATTR48'h0100
Definition: GTXE2_GPL.v:2783
16755RXDFEVPHOLD
Definition: GTXE2_GPL.v:2575
integer 16600RX_INT_DATAWIDTH0
Definition: GTXE2_GPL.v:2221
16962ES_ERRDET_EN1'b0
Definition: GTXE2_GPL.v:2832
wire 16571TXOUTCLKPMA
Definition: GTXE2_GPL.v:2183
dataiface gtxe2_chnl_rx_dataiface
Definition: GTXE2_GPL.v:2055
16241quiet_len_initburst_len * 3
Definition: GTXE2_GPL.v:784
16406add_2out_bitsowidth == 20 | owidth == 40 | owidth == 80 ? "TRUE" : "FALSE"
Definition: GTXE2_GPL.v:1443
[15:0] 16070CPLL_LOCK_CFG16'h01E8
Definition: GTXE2_GPL.v:121
16310oob_valwire
Definition: GTXE2_GPL.v:1127
wire 16567CPLLRESET
Definition: GTXE2_GPL.v:2177
wire [width - 1:0] 16194indata
Definition: GTXE2_GPL.v:601
[19:0] 16139TSTIN
Definition: GTXE2_GPL.v:314
16941PMA_RSV432'h0
Definition: GTXE2_GPL.v:2808
wire [7:0] 16492RXNOTINTABLE
Definition: GTXE2_GPL.v:1883
[4:0] 16137PMARSVDIN
Definition: GTXE2_GPL.v:312
16801SETERRSTATUS
Definition: GTXE2_GPL.v:2628
wire 16183almost_empty_rd
Definition: GTXE2_GPL.v:552
16930RXLPM_LF_CFG14'h00f0
Definition: GTXE2_GPL.v:2797
16696TXPHALIGNDONE
Definition: GTXE2_GPL.v:2495
tx gtxe2_chnl_tx
Definition: GTXE2_GPL.v:2237
16679TXGEARBOXREADY
Definition: GTXE2_GPL.v:2476
wire [4:0] 16058PCSRSVDIN2
Definition: GTXE2_GPL.v:105
[2:0] 16729RXSTATUS
Definition: GTXE2_GPL.v:2545
16159rx_pma_divider2RX_DATA_WIDTH == 20 | RX_DATA_WIDTH == 40 | RX_DATA_WIDTH == 80 ? 5 : 4
Definition: GTXE2_GPL.v:352
17045FTS_LANE_DESKEW_CFG4'b1111
Definition: GTXE2_GPL.v:2922
wire [iskwidth - 1:0] 16213TXCHARISK
Definition: GTXE2_GPL.v:659
wire 16347RXCOMWAKEDET
Definition: GTXE2_GPL.v:1307
16246stopwatchreg[31:0]
Definition: GTXE2_GPL.v:790
wire 16346RXCOMINITDET
Definition: GTXE2_GPL.v:1306
wire [7:0] 16289TXCHARDISPMODE
Definition: GTXE2_GPL.v:935
[2:0] 16661LOOPBACK
Definition: GTXE2_GPL.v:2453
16706TXOUTCLKPCS
Definition: GTXE2_GPL.v:2513
16931RXLPM_HF_CFG14'h00f0
Definition: GTXE2_GPL.v:2798
17015CLK_COR_MAX_LAT9
Definition: GTXE2_GPL.v:2891
16924SATA_MAX_BURST8
Definition: GTXE2_GPL.v:2790
wire 16481RXPOLARITY
Definition: GTXE2_GPL.v:1866
16897TX_MARGIN_FULL_27'b0
Definition: GTXE2_GPL.v:2759
wire [7:0] 16546RXNOTINTABLE
Definition: GTXE2_GPL.v:2150
wire 16298TXCOMFINISH
Definition: GTXE2_GPL.v:952
17013CLK_COR_SEQ_2_USE"FALSE"
Definition: GTXE2_GPL.v:2889
wire 16111GTREFCLKMONITOR
Definition: GTXE2_GPL.v:279