x393  1.0
FPGAcodeforElphelNC393camera
sata_phy.v
Go to the documentation of this file.
1 
39 //`include "oob_ctrl.v"
40 //`include "gtx_wrap.v"
41 module sata_phy #(
42 `ifdef USE_DATASCOPE
43  parameter ADDRESS_BITS = 10, //for datascope
44  parameter DATASCOPE_START_BIT = 14, // bit of DRP "other_control" to start recording after 0->1 (needs DRP)
45  parameter DATASCOPE_POST_MEAS = 16, // number of measurements to perform after event
46 `endif
47  parameter DATA_BYTE_WIDTH = 4,
48  parameter ELASTIC_DEPTH = 4, //5, With 4/7 got infrequent overflows!
49  parameter ELASTIC_OFFSET = 7 // 5 //10
50 )
51 (
52  // initial reset, resets PLL. After pll is locked, an internal sata reset is generated.
53  input wire extrst,
54  // sata clk, generated in pll as usrclk2
55  output wire clk, // 75MHz, bufg
56  output wire rst,
57 
58  // reliable clock to source drp and cpll lock det circuits
59  input wire reliable_clk,
60 
61  // state
62  output wire phy_ready,
63  // tmp output TODO
64  output wire gtx_ready,
65  output wire [11:0] debug_cnt,
66 
67  // top-level ifaces
68  // ref clk from an external source, shall be connected to pads
69  input wire extclk_p,
70  input wire extclk_n,
71  // sata link data pins
72  output wire txp_out,
73  output wire txn_out,
74  input wire rxp_in,
75  input wire rxn_in,
76 
77  // to link layer
78  output wire [DATA_BYTE_WIDTH * 8 - 1:0] ll_data_out,
79  output wire [DATA_BYTE_WIDTH - 1:0] ll_charisk_out,
80  output wire [DATA_BYTE_WIDTH - 1:0] ll_err_out, // TODO!!!
81 
82  // from link layer
83  input wire [DATA_BYTE_WIDTH * 8 - 1:0] ll_data_in,
84  input wire [DATA_BYTE_WIDTH - 1:0] ll_charisk_in,
85 
86  input set_offline, // electrically idle
87  input comreset_send, // Not possible yet?
88  output wire cominit_got,
89  output wire comwake_got,
90 
91  // elastic buffer status
92  output wire rxelsfull,
93  output wire rxelsempty,
94 
97  output re_aligned, // re-aligned after alignment loss
98  output xclk, // just to measure frequency to set the local clock
99 
100 `ifdef USE_DATASCOPE
101 // Datascope interface (write to memory that can be software-read)
104  output datascope_we,
105  output [31:0] datascope_di,
106  input datascope_trig, // external trigger event for the datascope
107 
108 `endif
109 
110 `ifdef USE_DRP
111  input drp_rst,
112  input drp_clk,
113  input drp_en, // @aclk strobes drp_ad
114  input drp_we,
115  input [14:0] drp_addr,
116  input [15:0] drp_di,
117  output drp_rdy,
118  output [15:0] drp_do,
119 `endif
120  output [31:0] debug_sata
122 
123 );
124 
125 wire [DATA_BYTE_WIDTH * 8 - 1:0] txdata;
126 wire [DATA_BYTE_WIDTH * 8 - 1:0] rxdata;
127 wire [DATA_BYTE_WIDTH * 8 - 1:0] rxdata_out;
128 wire [DATA_BYTE_WIDTH * 8 - 1:0] txdata_in;
135 wire [1:0] txbufstatus;
136 `ifdef DEBUG_ELASTIC
137  wire [15:0] dbg_data_cntr; // output[11:0] reg 4 MSBs - got primitives during data receive
138 `endif
140 
141 // once gtx_ready -> 1, gtx_configured latches
142 // after this point it's possible to perform additional resets and reconfigurations by higher-level logic
144 // after external rst -> 0, after sata logic resets -> 1
149 wire cplllock;
152 wire rxreset;
160 wire clk_phase_align_req;
161 wire clk_phase_align_ack;
163 
164 wire rxreset_oob;
165 // elastic buffer status signals TODO
166 //wire rxelsfull;
167 //wire rxelsempty;
171 wire dbg_rxcdrlock;
173 
174 //wire gtx_ready;
175 assign cominit_got = rxcominitdet; // For AHCI
176 assign comwake_got = rxcomwakedet; // For AHCI
177 wire dummy;
178 
180 
182  .clk (clk), // input wire // sata clk = usrclk2
183  .rst (rst), // input wire // reset oob
184  .gtx_ready (gtx_ready), // input wire // gtx is ready = all resets are done
185  .debug ({dummy,debug_cnt[10:0]}),
186  // oob responses
187  .rxcominitdet_in (rxcominitdet), // input wire
188  .rxcomwakedet_in (rxcomwakedet), // input wire
189  .rxelecidle_in (rxelecidle), // input wire
190  // oob issues
191  .txcominit (txcominit), // output wire
192  .txcomwake (txcomwake), // output wire
193  .txelecidle (txelecidle), // output wire
194  .txpcsreset_req (txpcsreset_req), // output wire
195  .recal_tx_done (recal_tx_done), // input wire
196  .rxreset_req (rxreset_req), // output wire
197  .rxreset_ack (rxreset_ack), // input wire
198  .clk_phase_align_req (clk_phase_align_req), // output wire
199  .clk_phase_align_ack (clk_phase_align_ack), // input wire
200  .txdata_in (txdata_in), // input[31:0] wire // input data stream (if any data during OOB setting => ignored)
201  .txcharisk_in (txcharisk_in), // input[3:0] wire // same
202  .txdata_out (txdata), // output[31:0] wire // output data stream to gtx
203  .txcharisk_out (txcharisk), // output[3:0] wire // same
204  .rxdata_in (rxdata[31:0]), // input[31:0] wire // input data from gtx
205  .rxcharisk_in (rxcharisk[3:0]), // input[3:0] wire // same
206  .rxdata_out (rxdata_out), // output[31:0] wire // bypassed data from gtx
207  .rxcharisk_out (rxcharisk_out), // output[3:0]wire // same
208  .rxbyteisaligned (rxbyteisaligned), // input wire // receiving data is aligned
209  .phy_ready (phy_ready), // output wire // shows if channel is ready
210  // To/from AHCI
211  .set_offline (set_offline), // input
212  .comreset_send (comreset_send), // input
213  .re_aligned (re_aligned) // output reg
215 );
217 wire cplllockdetclk; // TODO
219 wire gtrefclk;
223 wire txreset;
226 wire txusrclk;
228 //wire rxusrclk;
230 wire txp;
231 wire txn;
232 wire rxp;
233 wire rxn;
234 wire txoutclk; // comes out global from gtx_wrap
235 wire txpmareset_done;
236 wire rxeyereset_done;
238 // tx reset sequence; waves @ ug476 p67
239 localparam TXPMARESET_TIME = 5'h1;
240 reg [2:0] txpmareset_cnt;
242 always @ (posedge gtrefclk)
245 // rx reset sequence; waves @ ug476 p77
246 localparam RXPMARESET_TIME = 5'h11;
247 localparam RXCDRPHRESET_TIME = 5'h1;
248 localparam RXCDRFREQRESET_TIME = 5'h1;
249 localparam RXDFELPMRESET_TIME = 7'hf;
250 localparam RXISCANRESET_TIME = 5'h1;
252 reg [6:0] rxeyereset_cnt;
254 always @ (posedge gtrefclk) begin
255  if (rxreset) rxeyereset_cnt <= 0;
257 end
258 /*
259  Resets
260  */
261 wire usrpll_locked;
263 // make tx/rxreset synchronous to gtrefclk - gather singals from different domains: async, aclk, usrclk2, gtrefclk
264 localparam [7:0] RST_TIMER_LIMIT = 8'b1000;
269 reg rxreset_f_rr;
271 //reg pre_sata_reset_done;
273 reg [2:0] sata_reset_done_r;
274 reg [7:0] rst_timer;
275 //reg rst_r = 1;
276 assign rst = !sata_reset_done_r;
277 
279 
280 
281 assign cplllock_debug = cplllock;
283 
284 always @ (posedge clk or posedge sata_areset) begin
285  if (sata_areset) sata_reset_done_r <= 0;
286  else sata_reset_done_r <= {sata_reset_done_r[1:0], 1'b1};
287 end
288 
290 
291 always @ (posedge gtrefclk) begin
292  cplllock_r <= cplllock;
295 
300 
302  else if (|rst_timer) rst_timer <= rst_timer - 1;
303 
305 
306 end
307 assign rxreset = rxreset_f_rr;
308 assign txreset = txreset_f_rr;
309 assign cpllreset = extrst;
312 
315 // assert gtx_configured. Once gtx_ready -> 1, gtx_configured latches
316 always @ (posedge clk or posedge extrst)
317  if (extrst) gtx_configured <= 0;
319 
320 
321 
322 
323 
324 
325 // issue partial tx reset to restore functionality after oob sequence. Let it lasts 8 clock cycles
326 // Not enough or too early (after txelctidle?) txbufstatus shows overflow
327 localparam TXPCSRESET_CYCLES = 100;
329 reg [7:0] txpcsreset_cntr;
330 reg recal_tx_done_r;
332 assign txpcsreset = txpcsreset_r;
333 always @ (posedge clk) begin
334  if (rst || (txpcsreset_cntr == 0)) txpcsreset_r <= 0;
335  else if (txpcsreset_req) txpcsreset_r <= 1;
336 
337  if (rst) txpcsreset_cntr <= 0;
339  else if (txpcsreset_cntr != 0) txpcsreset_cntr <= txpcsreset_cntr - 1;
340 
341  if (rst || txelecidle || txpcsreset_r) recal_tx_done_r <= 0;
342  else if (txresetdone) recal_tx_done_r <= 1;
343 end
344 
346 // issue rx reset to restore functionality after oob sequence. Let it last 8 clock cycles
347 reg [3:0] rxreset_oob_cnt;
348 wire rxreset_oob_stop;
349 
353 
354 always @ (posedge clk or posedge extrst)
355  if (extrst) rxreset_oob_cnt <= 1;
357 
358 
359 /*
360  USRCLKs generation. USRCLK @ 150MHz, same as TXOUTCLK; USRCLK2 @ 75Mhz -> sata_clk === sclk
361  It's recommended to use MMCM instead of PLL, whatever
362  */
364 wire usrclk_global;
365 wire usrclk2;
366 // divide txoutclk (global) by 2, then make global. Does not need to be phase-aligned - will use FIFO
367 reg usrclk2_r;
368 always @ (posedge txoutclk) begin
369  if (~cplllock) usrclk2_r <= 0;
370  else usrclk2_r <= ~usrclk2;
371 end
372 assign txusrclk = txoutclk; // 150MHz, was already global
373 assign usrclk_global = txoutclk; // 150MHz, was already global
374 assign usrclk2 = usrclk2_r;
375 assign usrpll_locked = cplllock;
376 
377 assign txusrclk = usrclk_global; // 150MHz
378 assign txusrclk2 = clk; // usrclk2;
379 //assign rxusrclk = usrclk_global; // 150MHz
380 assign rxusrclk2 = clk; // usrclk2;
381 
383  .BUFFER_TYPE("BUFG")
384 ) bufg_sclk (
385  .o (clk), // output
386  .i (usrclk2), // input
387  .clr (1'b0) // input
388 );
389 
390 /*
391  Padding for an external input clock @ 150 MHz
392  */
393 
394 localparam [1:0] CLKSWING_CFG = 2'b11;
395 
396 IBUFDS_GTE2 #(
397  .CLKRCV_TRST ("TRUE"),
398  .CLKCM_CFG ("TRUE"),
400 )
401 ext_clock_buf(
402  .I (extclk_p),
403  .IB (extclk_n),
404  .CEB (1'b0),
405  .O (gtrefclk),
406  .ODIV2 ()
407 );
408 
409 gtx_wrap #(
410 `ifdef USE_DATASCOPE
411  .ADDRESS_BITS (ADDRESS_BITS), // for datascope
414 `endif
422  .ELASTIC_DEPTH (ELASTIC_DEPTH), // with 4/7 infrequent full !
424 
425 )
426 gtx_wrap
427 (
428  .debug (debug_cnt[11]), // output reg
429  .cplllock (cplllock), // output wire
430  .cplllockdetclk (cplllockdetclk), // input wire
431  .cpllreset (cpllreset), // input wire
432  .gtrefclk (gtrefclk), // input wire
433  .rxuserrdy (rxuserrdy), // input wire
434  .txuserrdy (txuserrdy), // input wire
435 // .rxusrclk (rxusrclk), // input wire
436  .rxusrclk2 (rxusrclk2), // input wire
437  .rxp (rxp), // input wire
438  .rxn (rxn), // input wire
439  .rxbyteisaligned (rxbyteisaligned), // output wire
440  .rxreset (rxreset), // input wire
441  .rxcomwakedet (rxcomwakedet), // output wire
442  .rxcominitdet (rxcominitdet), // output wire
443  .rxelecidle (rxelecidle), // output wire
444  .rxresetdone (rxresetdone), // output wire
445  .txreset (txreset), // input wire
446 
447  .clk_phase_align_req(clk_phase_align_req), // output wire
448  .clk_phase_align_ack(clk_phase_align_ack), // input wire
449 
450  .txusrclk (txusrclk), // input wire
451  .txusrclk2 (txusrclk2), // input wire
452  .txelecidle (txelecidle), // input wire
453  .txp (txp), // output wire
454  .txn (txn), // output wire
455  .txoutclk (txoutclk), // output wire // made global inside
456  .txpcsreset (txpcsreset), // input wire
457  .txresetdone (txresetdone), // output wire
458  .txcominit (txcominit), // input wire
459  .txcomwake (txcomwake), // input wire
460  .txcomfinish (), // output wire
461  .rxelsfull (rxelsfull), // output wire
462  .rxelsempty (rxelsempty), // output wire
463  .txdata (txdata), // input [31:0] wire
464  .txcharisk (txcharisk), // input [3:0] wire
465  .rxdata (rxdata), // output[31:0] wire
466  .rxcharisk (rxcharisk), // output[3:0] wire
467  .rxdisperr (rxdisperr), // output[3:0] wire
468  .rxnotintable (rxnotintable), // output[3:0] wire
469  .dbg_rxphaligndone (dbg_rxphaligndone),
470  .dbg_rx_clocks_aligned (dbg_rx_clocks_aligned),
471  .dbg_rxcdrlock (dbg_rxcdrlock) ,
472  .dbg_rxdlysresetdone (dbg_rxdlysresetdone),
473  .txbufstatus (txbufstatus[1:0]),
474  .xclk (xclk) // output receive clock, just to measure frequency // global
475 `ifdef USE_DATASCOPE
476  ,.datascope_clk (datascope_clk), // output
477  .datascope_waddr (datascope_waddr), // output[9:0]
478  .datascope_we (datascope_we), // output
479  .datascope_di (datascope_di), // output[31:0]
480  .datascope_trig (datascope_trig) // input // external trigger event for the datascope
481 `endif
482 
483 `ifdef USE_DRP
484  ,.drp_rst (drp_rst), // input
485  .drp_clk (drp_clk), // input
486  .drp_en (drp_en), // input
487  .drp_we (drp_we), // input
488  .drp_addr (drp_addr), // input[14:0]
489  .drp_di (drp_di), // input[15:0]
490  .drp_rdy (drp_rdy), // output
491  .drp_do (drp_do) // output[15:0]
492 `endif
493 `ifdef DEBUG_ELASTIC
494  ,.dbg_data_cntr (dbg_data_cntr) // output[11:0] reg
495 `endif
496 
497 );
498 
499 
500 
501 /*
502  Interfaces
503  */
504 assign cplllockdetclk = reliable_clk; //gtrefclk;
505 
506 assign rxn = rxn_in;
507 assign rxp = rxp_in;
508 assign txn_out = txn;
509 assign txp_out = txp;
510 assign ll_data_out = rxdata_out;
515 reg [3:0] debug_cntr1;
516 reg [3:0] debug_cntr2;
517 reg [3:0] debug_cntr3;
518 reg [3:0] debug_cntr4;
519 reg [15:0] debug_cntr5;
520 reg [15:0] debug_cntr6;
521 reg [1:0] debug_rxbyteisaligned_r;
522 reg debug_error_r;
523 //txoutclk
524 always @ (posedge gtrefclk) begin
525  if (extrst) debug_cntr1 <= 0;
526  else debug_cntr1 <= debug_cntr1 + 1;
527 end
528 
529 always @ (posedge clk) begin
530  if (rst) debug_cntr2 <= 0;
531  else debug_cntr2 <= debug_cntr2 + 1;
532 end
533 
534 always @ (posedge reliable_clk) begin
535  if (extrst) debug_cntr3 <= 0;
536  else debug_cntr3 <= debug_cntr3 + 1;
537 end
538 
539 always @ (posedge txoutclk) begin
540  if (extrst) debug_cntr4 <= 0;
541  else debug_cntr4 <= debug_cntr4 + 1;
542 end
543 
544 always @ (posedge clk) begin
547  if (rst) debug_cntr5 <= 0;
548  else if (debug_rxbyteisaligned_r==1) debug_cntr5 <= debug_cntr5 + 1;
549 
550  if (rst) debug_cntr6 <= 0;
552 end
556 
557 reg [11:0] error_count;
558 always @ (posedge clk) begin
559  if (rxelecidle) error_count <= 0;
560  else if (phy_ready && (|ll_err_out)) error_count <= error_count + 1;
561 
562 
565 
566  if (rxelecidle) dbg_clk_align_cntr <= 0;
568 
569 end
570 
571 
572 `ifdef USE_DATASCOPE
573  `ifdef DEBUG_ELASTIC
574  assign debug_sata = {dbg_data_cntr[15:0], // latched at error from previous FIS (@sof) (otherwise overwritten by h2d rfis)
575  error_count[3:0],
576  2'b0,
577  datascope_waddr[9:0]};
578  `else //DEBUG_ELASTIC
579  assign debug_sata = {8'b0,
580  error_count[11:0],
581  2'b0,
582  datascope_waddr[9:0]};
583  `endif //`else DEBUG_ELASTIC
584 //dbg_data_cntr
585 
586 `else
587  assign debug_sata = {8'b0, dbg_clk_align_cntr, txbufstatus[1:0], rxelecidle, dbg_rxcdrlock, rxelsfull, rxelsempty, dbg_rxphaligndone, dbg_rx_clocks_aligned};
588 `endif
589 
590 
591 endmodule
592 
15545txoutclkwire
Definition: sata_phy.v:232
15476cplllock_debug
Definition: sata_phy.v:95
wire 15401rst
Definition: oob_ctrl.v:46
15543rxpwire
Definition: sata_phy.v:230
15488drp_we
Definition: sata_phy.v:114
[14:0] 15489drp_addr
Definition: sata_phy.v:115
15564txreset_f_rrreg
Definition: sata_phy.v:268
15550RXPMARESET_TIME5'h11
Definition: sata_phy.v:244
15583debug_cntr5reg[15:0]
Definition: sata_phy.v:515
wire 15461txp_out
Definition: sata_phy.v:72
15510cplllockwire
Definition: sata_phy.v:147
15546txpmareset_donewire
Definition: sata_phy.v:233
15589error_countreg[11:0]
Definition: sata_phy.v:553
15497rxdata_outwire[DATA_BYTE_WIDTH*8-1:0]
Definition: sata_phy.v:127
15429debug_detected_alignp
Definition: oob_ctrl.v:76
15563rxreset_f_rrreg
Definition: sata_phy.v:267
reg 15428re_aligned
Definition: oob_ctrl.v:75
wire 15463rxp_in
Definition: sata_phy.v:74
15504rxnotintablewire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:134
wire 15408txcomwake
Definition: oob_ctrl.v:53
wire [DATA_BYTE_WIDTH * 8 - 1:0] 15465ll_data_out
Definition: sata_phy.v:78
15515txelecidlewire
Definition: sata_phy.v:152
15500rxchariskwire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:130
15579debug_cntr1reg[3:0]
Definition: sata_phy.v:511
wire 15457gtx_ready
Definition: sata_phy.v:64
15548TXPMARESET_TIME5'h1
Definition: sata_phy.v:237
15471comreset_send
Definition: sata_phy.v:87
wire 15406rxelecidle_in
Definition: oob_ctrl.v:51
15427comreset_send
Definition: oob_ctrl.v:74
15503rxdisperrwire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:133
wire 15400clk
Definition: oob_ctrl.v:45
[31:0] 15493debug_sata
Definition: sata_phy.v:120
wire 15404rxcominitdet_in
Definition: oob_ctrl.v:49
15541txpwire
Definition: sata_phy.v:228
15482datascope_we
Definition: sata_phy.v:104
15575usrclk_globalwire
Definition: sata_phy.v:362
15496rxdatawire[DATA_BYTE_WIDTH*8-1:0]
Definition: sata_phy.v:126
wire [DATA_BYTE_WIDTH*8 - 1:0] 15422rxdata_out
Definition: oob_ctrl.v:69
15426set_offline
Definition: oob_ctrl.v:73
15555RXEYERESET_TIME7'h0 + RXPMARESET_TIME + RXCDRPHRESET_TIME + RXCDRFREQRESET_TIME + RXDFELPMRESET_TIME + RXISCANRESET_TIME
Definition: sata_phy.v:249
15568cplllock_rreg
Definition: sata_phy.v:287
15506gtx_configuredreg
Definition: sata_phy.v:141
15567rst_timerreg[7:0]
Definition: sata_phy.v:272
wire [DATA_BYTE_WIDTH - 1:0] 15469ll_charisk_in
Definition: sata_phy.v:84
15582debug_cntr4reg[3:0]
Definition: sata_phy.v:514
wire 15411recal_tx_done
Definition: oob_ctrl.v:56
15588dbg_clk_align_waitreg
Definition: sata_phy.v:551
15559rxreset_freg
Definition: sata_phy.v:263
15477usrpll_locked_debug
Definition: sata_phy.v:96
15587dbg_clk_align_cntrreg[15:0]
Definition: sata_phy.v:550
15547rxeyereset_donewire
Definition: sata_phy.v:234
15512txcomwakewire
Definition: sata_phy.v:149
wire 15425phy_ready
Definition: oob_ctrl.v:72
15478re_aligned
Definition: sata_phy.v:97
15565sata_aresetreg
Definition: sata_phy.v:270
wire [DATA_BYTE_WIDTH*8 - 1:0] 15416txdata_in
Definition: oob_ctrl.v:63
wire 15412rxreset_req
Definition: oob_ctrl.v:57
15585debug_rxbyteisaligned_rreg[1:0]
Definition: sata_phy.v:517
oob_ctrl oob_ctrl
Definition: sata_phy.v:179
15522clk_phase_align_ackwire
Definition: sata_phy.v:159
15514rxelecidlewire
Definition: sata_phy.v:151
15572recal_tx_done_rreg
Definition: sata_phy.v:328
15448DATASCOPE_POST_MEAS16
Definition: sata_phy.v:45
15531gtrefclkwire
Definition: sata_phy.v:217
15447DATASCOPE_START_BIT14
Definition: sata_phy.v:44
15484datascope_trig
Definition: sata_phy.v:106
15552RXCDRFREQRESET_TIME5'h1
Definition: sata_phy.v:246
15470set_offline
Definition: sata_phy.v:86
15560txreset_freg
Definition: sata_phy.v:264
wire 15405rxcomwakedet_in
Definition: oob_ctrl.v:50
15533txresetdonewire
Definition: sata_phy.v:219
15569TXPCSRESET_CYCLES100
Definition: sata_phy.v:325
wire [DATA_BYTE_WIDTH - 1:0] 15421rxcharisk_in
Definition: oob_ctrl.v:68
15501txcharisk_inwire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:131
ext_clock_buf IBUFDS_GTE2
Definition: sata_phy.v:394
15539txusrclk2wire
Definition: sata_phy.v:225
15570txpcsreset_rreg
Definition: sata_phy.v:326
wire 15414clk_phase_align_req
Definition: oob_ctrl.v:60
15528dummywire
Definition: sata_phy.v:175
15584debug_cntr6reg[15:0]
Definition: sata_phy.v:516
15580debug_cntr2reg[3:0]
Definition: sata_phy.v:512
15513rxresetwire
Definition: sata_phy.v:150
15566sata_reset_done_rreg[2:0]
Definition: sata_phy.v:271
15495txdatawire[DATA_BYTE_WIDTH*8-1:0]
Definition: sata_phy.v:125
15508rxcomwakedetwire
Definition: sata_phy.v:145
[7:0] 15558RST_TIMER_LIMIT8'b1000
Definition: sata_phy.v:262
15479xclk
Definition: sata_phy.v:98
wire 15462txn_out
Definition: sata_phy.v:73
15537rxuserrdywire
Definition: sata_phy.v:223
15557usrpll_lockedwire
Definition: sata_phy.v:259
wire [DATA_BYTE_WIDTH - 1:0] 15423rxcharisk_out
Definition: oob_ctrl.v:70
15530cpllresetwire
Definition: sata_phy.v:216
15574rxreset_oob_stopwire
Definition: sata_phy.v:346
15542txnwire
Definition: sata_phy.v:229
wire 15413rxreset_ack
Definition: oob_ctrl.v:58
15507sata_reset_donewire
Definition: sata_phy.v:143
15527dbg_rxdlysresetdonewire
Definition: sata_phy.v:170
wire 15456phy_ready
Definition: sata_phy.v:62
15532rxresetdonewire
Definition: sata_phy.v:218
15549txpmareset_cntreg[2:0]
Definition: sata_phy.v:238
[ADDRESS_BITS-1:0] 15481datascope_waddr
Definition: sata_phy.v:103
wire 15452extrst
Definition: sata_phy.v:53
15534txpcsresetwire
Definition: sata_phy.v:220
15586debug_error_rreg
Definition: sata_phy.v:518
wire [DATA_BYTE_WIDTH*8 - 1:0] 15418txdata_out
Definition: oob_ctrl.v:65
15491drp_rdy
Definition: sata_phy.v:117
15449DATA_BYTE_WIDTH4
Definition: sata_phy.v:47
[1:0] 15578CLKSWING_CFG2'b11
Definition: sata_phy.v:392
15581debug_cntr3reg[3:0]
Definition: sata_phy.v:513
wire [DATA_BYTE_WIDTH * 8 - 1:0] 15468ll_data_in
Definition: sata_phy.v:83
15544rxnwire
Definition: sata_phy.v:231
15450ELASTIC_DEPTH4
Definition: sata_phy.v:48
15540rxusrclk2wire
Definition: sata_phy.v:227
wire 15455reliable_clk
Definition: sata_phy.v:59
wire [DATA_BYTE_WIDTH - 1:0] 15467ll_err_out
Definition: sata_phy.v:80
15577usrclk2_rreg
Definition: sata_phy.v:365
gtx_wrap gtx_wrap
Definition: sata_phy.v:407
15556rxeyereset_cntreg[6:0]
Definition: sata_phy.v:250
15499txchariskwire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:129
15529cplllockdetclkwire
Definition: sata_phy.v:215
15485drp_rst
Definition: sata_phy.v:111
15480datascope_clk
Definition: sata_phy.v:102
reg 14880debug
Definition: gtx_wrap.v:64
[31:0] 15483datascope_di
Definition: sata_phy.v:105
wire 15402gtx_ready
Definition: oob_ctrl.v:47
wire [DATA_BYTE_WIDTH - 1:0] 15419txcharisk_out
Definition: oob_ctrl.v:66
15553RXDFELPMRESET_TIME7'hf
Definition: sata_phy.v:247
15525dbg_rx_clocks_alignedwire
Definition: sata_phy.v:168
15523rxreset_oobwire
Definition: sata_phy.v:162
wire 15460extclk_n
Definition: sata_phy.v:70
15446ADDRESS_BITS10
Definition: sata_phy.v:43
15561rxreset_f_rreg
Definition: sata_phy.v:265
15509rxcominitdetwire
Definition: sata_phy.v:146
wire [DATA_BYTE_WIDTH - 1:0] 15417txcharisk_in
Definition: oob_ctrl.v:64
15451ELASTIC_OFFSET7
Definition: sata_phy.v:49
wire 15459extclk_p
Definition: sata_phy.v:69
wire 15415clk_phase_align_ack
Definition: oob_ctrl.v:61
wire 15410txpcsreset_req
Definition: oob_ctrl.v:55
wire 15409txelecidle
Definition: oob_ctrl.v:54
wire 15472cominit_got
Definition: sata_phy.v:88
15524dbg_rxphaligndonewire
Definition: sata_phy.v:167
[15:0] 15490drp_di
Definition: sata_phy.v:116
wire [DATA_BYTE_WIDTH - 1:0] 15466ll_charisk_out
Definition: sata_phy.v:79
15511txcominitwire
Definition: sata_phy.v:148
15502rxcharisk_outwire[DATA_BYTE_WIDTH-1:0]
Definition: sata_phy.v:132
15536txuserrdywire
Definition: sata_phy.v:222
15518recal_tx_donewire
Definition: sata_phy.v:155
15487drp_en
Definition: sata_phy.v:113
15494debug_detected_alignp
Definition: sata_phy.v:121
15498txdata_inwire[DATA_BYTE_WIDTH*8-1:0]
Definition: sata_phy.v:128
[15:0] 15492drp_do
Definition: sata_phy.v:118
15526dbg_rxcdrlockwire
Definition: sata_phy.v:169
wire [11:0] 15403debug
Definition: oob_ctrl.v:48
15519rxreset_reqwire
Definition: sata_phy.v:156
15554RXISCANRESET_TIME5'h1
Definition: sata_phy.v:248
wire 15474rxelsfull
Definition: sata_phy.v:92
15520rxreset_ackwire
Definition: sata_phy.v:157
15505txbufstatuswire[1:0]
Definition: sata_phy.v:135
bufg_sclk select_clk_buf
Definition: sata_phy.v:380
wire 15464rxn_in
Definition: sata_phy.v:75
15486drp_clk
Definition: sata_phy.v:112
15576usrclk2wire
Definition: sata_phy.v:363
15573rxreset_oob_cntreg[3:0]
Definition: sata_phy.v:345
15517txpcsreset_reqwire
Definition: sata_phy.v:154
15551RXCDRPHRESET_TIME5'h1
Definition: sata_phy.v:245
15535txresetwire
Definition: sata_phy.v:221
wire 15453clk
Definition: sata_phy.v:55
15521clk_phase_align_reqwire
Definition: sata_phy.v:158
15571txpcsreset_cntrreg[7:0]
Definition: sata_phy.v:327
wire 15475rxelsempty
Definition: sata_phy.v:93
wire 15473comwake_got
Definition: sata_phy.v:89
wire 15407txcominit
Definition: oob_ctrl.v:52
wire [DATA_BYTE_WIDTH*8 - 1:0] 15420rxdata_in
Definition: oob_ctrl.v:67
15538txusrclkwire
Definition: sata_phy.v:224
wire 15424rxbyteisaligned
Definition: oob_ctrl.v:71
wire [11:0] 15458debug_cnt
Definition: sata_phy.v:65
15562txreset_f_rreg
Definition: sata_phy.v:266
15516rxbyteisalignedwire
Definition: sata_phy.v:153
wire 15454rst
Definition: sata_phy.v:56