OpenCores
URL https://opencores.org/ocsvn/usb_fpga_2_14/usb_fpga_2_14/trunk

Subversion Repositories usb_fpga_2_14

[/] [usb_fpga_2_14/] [trunk/] [examples/] [memfifo/] [fpga-2.14/] [memfifo.srcs/] [sources_1/] [ip/] [mig_7series_0/] [mig_7series_0/] [user_design/] [rtl/] [phy/] [mig_7series_v2_3_ddr_phy_oclkdelay_cal.v] - Blame information for rev 2

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ZTEX
//*****************************************************************************
2
// (c) Copyright 2009 - 2013 Xilinx, Inc. All rights reserved.
3
//
4
// This file contains confidential and proprietary information
5
// of Xilinx, Inc. and is protected under U.S. and
6
// international copyright and other intellectual property
7
// laws.
8
//
9
// DISCLAIMER
10
// This disclaimer is not a license and does not grant any
11
// rights to the materials distributed herewith. Except as
12
// otherwise provided in a valid license issued to you by
13
// Xilinx, and to the maximum extent permitted by applicable
14
// law: (1) THESE MATERIALS ARE MADE AVAILABLE "AS IS" AND
15
// WITH ALL FAULTS, AND XILINX HEREBY DISCLAIMS ALL WARRANTIES
16
// AND CONDITIONS, EXPRESS, IMPLIED, OR STATUTORY, INCLUDING
17
// BUT NOT LIMITED TO WARRANTIES OF MERCHANTABILITY, NON-
18
// INFRINGEMENT, OR FITNESS FOR ANY PARTICULAR PURPOSE; and
19
// (2) Xilinx shall not be liable (whether in contract or tort,
20
// including negligence, or under any other theory of
21
// liability) for any loss or damage of any kind or nature
22
// related to, arising under or in connection with these
23
// materials, including for any direct, or any indirect,
24
// special, incidental, or consequential loss or damage
25
// (including loss of data, profits, goodwill, or any type of
26
// loss or damage suffered as a result of any action brought
27
// by a third party) even if such damage or loss was
28
// reasonably foreseeable or Xilinx had been advised of the
29
// possibility of the same.
30
//
31
// CRITICAL APPLICATIONS
32
// Xilinx products are not designed or intended to be fail-
33
// safe, or for use in any application requiring fail-safe
34
// performance, such as life-support or safety devices or
35
// systems, Class III medical devices, nuclear facilities,
36
// applications related to the deployment of airbags, or any
37
// other applications that could lead to death, personal
38
// injury, or severe property or environmental damage
39
// (individually and collectively, "Critical
40
// Applications"). Customer assumes the sole risk and
41
// liability of any use of Xilinx products in Critical
42
// Applications, subject only to applicable laws and
43
// regulations governing limitations on product liability.
44
//
45
// THIS COPYRIGHT NOTICE AND DISCLAIMER MUST BE RETAINED AS
46
// PART OF THIS FILE AT ALL TIMES.
47
//
48
//*****************************************************************************
49
//   ____  ____
50
//  /   /\/   /
51
// /___/  \  /    Vendor: Xilinx
52
// \   \   \/     Version: %version
53
//  \   \         Application: MIG
54
//  /   /         Filename: ddr_phy_oclkdelay_cal.v
55
// /___/   /\     Date Last Modified: $Date: 2011/02/25 02:07:40 $
56
// \   \  /  \    Date Created: Aug 03 2009 
57
//  \___\/\___\
58
//
59
//Device: 7 Series
60
//Design Name: DDR3 SDRAM
61
//Purpose: Center write DQS in write DQ valid window using Phaser_Out Stage3
62
//         delay
63
//Reference:
64
//Revision History:
65
//*****************************************************************************
66
 
67
`timescale 1ps/1ps
68
 
69
module mig_7series_v2_3_ddr_phy_oclkdelay_cal #
70
  (parameter TCQ                    = 100,
71
   parameter nCK_PER_CLK            = 4,
72
   parameter DRAM_WIDTH             = 8,
73
   parameter DQS_CNT_WIDTH          = 3,
74
   parameter DQS_WIDTH              = 8,
75
   parameter DQ_WIDTH               = 64,
76
   parameter MMCM_SAMP_WAIT         = 10,
77
   parameter OCAL_SIMPLE_SCAN_SAMPS = 2,
78
   parameter PCT_SAMPS_SOLID        = 95,
79
   parameter POC_USE_METASTABLE_SAMP = "FALSE",
80
   parameter SCAN_PCT_SAMPS_SOLID   = 95,
81
   parameter SIM_CAL_OPTION         = "NONE",
82
   parameter SAMPCNTRWIDTH          = 8,
83
   parameter SAMPLES                = 128,
84
   parameter TAPCNTRWIDTH           = 7,
85
   parameter TAPSPERKCLK            = 56,
86
   parameter BYPASS_COMPLEX_OCAL    = "FALSE")
87
  (/*AUTOARG*/
88
  // Outputs
89
  wrlvl_final, rd_victim_sel, psincdec, psen, poc_error,
90
  po_stg3_incdec, po_stg23_sel, po_stg23_incdec, po_en_stg3,
91
  po_en_stg23, oclkdelay_center_calib_start,
92
  oclkdelay_center_calib_done, oclk_prech_req, oclk_init_delay_done,
93
  oclk_center_write_resume, oclk_calib_resume,
94
  ocal_num_samples_done_r, lim2init_write_request,
95
  complex_wrlvl_final, complex_oclkdelay_calib_done,
96
  oclkdelay_calib_cnt, dbg_phy_oclkdelay_cal, dbg_oclkdelay_rd_data,
97
  oclkdelay_calib_done, f2o, f2z, o2f, z2f, fuzz2oneeighty, fuzz2zero,
98
  oneeighty2fuzz, zero2fuzz, lim_done, dbg_ocd_lim,
99
  // Inputs
100
  wl_po_fine_cnt, rst, poc_sample_pd, psdone, prech_done, prbs_o,
101
  prbs_ignore_last_bytes, prbs_ignore_first_byte, po_counter_read_val,
102
  phy_rddata_en, phy_rddata, oclkdelay_init_val,
103
  oclkdelay_calib_start, ocal_num_samples_inc, metaQ,
104
  complex_oclkdelay_calib_start, clk
105
  );
106
 
107
  /*AUTOINPUT*/
108
  // Beginning of automatic inputs (from unused autoinst inputs)
109
  input                 clk;                    // To u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v, ...
110
  input                 complex_oclkdelay_calib_start;// To u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v, ...
111
  input                 metaQ;                  // To u_poc of mig_7series_v2_3_poc_top.v
112
  input                 ocal_num_samples_inc;   // To u_ocd_samp of mig_7series_v2_3_ddr_phy_ocd_samp.v
113
  input                 oclkdelay_calib_start;  // To u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
114
  input [5:0]            oclkdelay_init_val;     // To u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v, ...
115
  input [2*nCK_PER_CLK*DQ_WIDTH-1:0] phy_rddata;// To u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v
116
  input                 phy_rddata_en;          // To u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
117
  input [8:0]            po_counter_read_val;    // To u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v, ...
118
  input                 poc_sample_pd;
119
  input                 prbs_ignore_first_byte; // To u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v
120
  input                 prbs_ignore_last_bytes; // To u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v
121
  input [2*nCK_PER_CLK*DQ_WIDTH-1:0] prbs_o;     // To u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v
122
  input                 prech_done;             // To u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v, ...
123
  input                 psdone;                 // To u_poc of mig_7series_v2_3_poc_top.v
124
  input                 rst;                    // To u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v, ...
125
  input [6*DQS_WIDTH-1:0] wl_po_fine_cnt;        // To u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
126
  // End of automatics
127
  /*AUTOOUTPUT*/
128
  // Beginning of automatic outputs (from unused autoinst outputs)
129
  output                complex_oclkdelay_calib_done;// From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
130
  output                complex_wrlvl_final;    // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
131
  output                lim2init_write_request; // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
132
  output                ocal_num_samples_done_r;// From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
133
  output                oclk_calib_resume;      // From u_ocd_samp of mig_7series_v2_3_ddr_phy_ocd_samp.v
134
  output                oclk_center_write_resume;// From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
135
  output                oclk_init_delay_done;   // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
136
  output                oclk_prech_req;         // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
137
  output                oclkdelay_center_calib_done;// From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
138
  output                oclkdelay_center_calib_start;// From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
139
  output                po_en_stg23;            // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
140
  output                po_en_stg3;             // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
141
  output                po_stg23_incdec;        // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
142
  output                po_stg23_sel;           // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
143
  output                po_stg3_incdec;         // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
144
  output                poc_error;              // From u_poc of mig_7series_v2_3_poc_top.v
145
  output                psen;                   // From u_poc of mig_7series_v2_3_poc_top.v
146
  output                psincdec;               // From u_poc of mig_7series_v2_3_poc_top.v
147
  output [2:0]           rd_victim_sel;          // From u_ocd_samp of mig_7series_v2_3_ddr_phy_ocd_samp.v
148
  output                wrlvl_final;            // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
149
  // End of automatics
150
  /*AUTOWIRE*/
151
  // Beginning of automatic wires (for undeclared instantiated-module outputs)
152
  wire                  ktap_at_left_edge;      // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
153
  wire                  ktap_at_right_edge;     // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
154
  wire                  lim2init_prech_req;     // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
155
  wire [5:0]             lim2ocal_stg3_left_lim; // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
156
  wire [5:0]             lim2ocal_stg3_right_lim;// From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
157
  wire                  lim2poc_ktap_right;     // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
158
  wire                  lim2poc_rdy;            // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
159
  wire                  lim2stg2_dec;           // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
160
  wire                  lim2stg2_inc;           // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
161
  wire                  lim2stg3_dec;           // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
162
  wire                  lim2stg3_inc;           // From u_ocd_lim of mig_7series_v2_3_ddr_phy_ocd_lim.v
163
  wire                  lim_start;              // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
164
  wire [1:0]             match;                  // From u_ocd_data of mig_7series_v2_3_ddr_phy_ocd_data.v
165
  wire                  mmcm_edge_detect_done;  // From u_poc of mig_7series_v2_3_poc_top.v
166
  wire                  mmcm_edge_detect_rdy;   // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
167
  wire                  mmcm_lbclk_edge_aligned;// From u_poc of mig_7series_v2_3_poc_top.v
168
  wire [1:0]             ninety_offsets;         // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
169
  wire                  ocd2stg2_dec;           // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
170
  wire                  ocd2stg2_inc;           // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
171
  wire                  ocd2stg3_dec;           // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
172
  wire                  ocd2stg3_inc;           // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
173
  wire                  ocd_cntlr2stg2_dec;     // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
174
  wire                  ocd_edge_detect_rdy;    // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
175
  wire                  ocd_ktap_left;          // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
176
  wire                  ocd_ktap_right;         // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
177
  wire                  ocd_prech_req;          // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
178
  wire                  phy_rddata_en_1;        // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
179
  wire                  phy_rddata_en_2;        // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
180
  wire                  phy_rddata_en_3;        // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
181
  wire                  po_rdy;                 // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
182
  wire                  poc_backup;             // From u_poc of mig_7series_v2_3_poc_top.v
183
  wire                  reset_scan;             // From u_ocd_cntlr of mig_7series_v2_3_ddr_phy_ocd_cntlr.v
184
  wire [TAPCNTRWIDTH-1:0] rise_lead_right;       // From u_poc of mig_7series_v2_3_poc_top.v
185
  wire [TAPCNTRWIDTH-1:0] rise_trail_right;      // From u_poc of mig_7series_v2_3_poc_top.v
186
  wire                  samp_done;              // From u_ocd_samp of mig_7series_v2_3_ddr_phy_ocd_samp.v
187
  wire [1:0]             samp_result;            // From u_ocd_samp of mig_7series_v2_3_ddr_phy_ocd_samp.v
188
  wire                  scan_done;              // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
189
  wire                  scan_right;             // From u_ocd_edge of mig_7series_v2_3_ddr_phy_ocd_edge.v
190
  wire                  scanning_right;         // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
191
  wire [5:0]             simp_stg3_final_sel;    // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
192
  wire [5:0]             stg3;                   // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
193
  wire                  taps_set;               // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
194
  wire                  use_noise_window;       // From u_ocd_po_cntlr of mig_7series_v2_3_ddr_phy_ocd_po_cntlr.v
195
  wire [5:0]             wl_po_fine_cnt_sel;     // From u_ocd_mux of mig_7series_v2_3_ddr_phy_ocd_mux.v
196
  // End of automatics
197
  wire [DQS_WIDTH*6-1:0] simp_stg3_final, cmplx_stg3_final;
198
  wire ocal_scan_win_not_found;
199
 
200
 
201
  output [DQS_CNT_WIDTH:0] oclkdelay_calib_cnt;
202
  output [255:0] dbg_phy_oclkdelay_cal;
203
  output [16*DRAM_WIDTH-1:0] dbg_oclkdelay_rd_data;
204
  output oclkdelay_calib_done;
205
 
206
  output f2o;
207
  output f2z;
208
  output o2f;
209
  output z2f;
210
  output [5:0] fuzz2oneeighty;
211
  output [5:0] fuzz2zero;
212
  output [5:0] oneeighty2fuzz;
213
  output [5:0] zero2fuzz;
214
 
215
  output lim_done;
216
  output [255:0] dbg_ocd_lim;
217
 
218
  // Debug signals
219
  assign dbg_phy_oclkdelay_cal[0] = f2o;
220
  assign dbg_phy_oclkdelay_cal[1] = f2z;
221
  assign dbg_phy_oclkdelay_cal[2] = o2f;
222
  assign dbg_phy_oclkdelay_cal[3] = z2f;
223
  assign dbg_phy_oclkdelay_cal[4+:6] = fuzz2oneeighty;
224
  assign dbg_phy_oclkdelay_cal[10+:6] = fuzz2zero;
225
  assign dbg_phy_oclkdelay_cal[16+:6] = oneeighty2fuzz;
226
  assign dbg_phy_oclkdelay_cal[22+:6] = zero2fuzz;
227
  assign dbg_phy_oclkdelay_cal[28+:3] = oclkdelay_calib_cnt;
228
  assign dbg_phy_oclkdelay_cal[31] = oclkdelay_calib_start;
229
  assign dbg_phy_oclkdelay_cal[32] = lim_done;
230
  assign dbg_phy_oclkdelay_cal[33+:6] =lim2ocal_stg3_left_lim ;
231
  assign dbg_phy_oclkdelay_cal[39+:6] = lim2ocal_stg3_right_lim ;
232
  assign dbg_phy_oclkdelay_cal[45+:8] = po_counter_read_val[8:0];
233
  assign dbg_phy_oclkdelay_cal[53+:54] = simp_stg3_final[DQS_WIDTH*6-1:0];
234
  assign dbg_phy_oclkdelay_cal[107] = ocal_scan_win_not_found;
235
  assign dbg_phy_oclkdelay_cal[108] = oclkdelay_center_calib_start;
236
  assign dbg_phy_oclkdelay_cal[109] = oclkdelay_center_calib_done;
237
  assign dbg_phy_oclkdelay_cal[115:110] = stg3[5:0];
238
 
239
  mig_7series_v2_3_ddr_phy_ocd_lim #
240
    (/*AUTOINSTPARAM*/
241
     // Parameters
242
     .DQS_CNT_WIDTH                     (DQS_CNT_WIDTH),
243
     .DQS_WIDTH                         (DQS_WIDTH),
244
     .TAPCNTRWIDTH                      (TAPCNTRWIDTH),
245
     .TAPSPERKCLK                       (TAPSPERKCLK),
246
     .TCQ                               (TCQ),
247
     .TDQSS_DEGREES                     (),
248
         .BYPASS_COMPLEX_OCAL   (BYPASS_COMPLEX_OCAL))                   // Templated
249
  u_ocd_lim
250
    (/*AUTOINST*/
251
     // Outputs
252
     .lim2init_prech_req                (lim2init_prech_req),
253
     .lim2init_write_request            (lim2init_write_request),
254
     .lim2ocal_stg3_left_lim            (lim2ocal_stg3_left_lim[5:0]),
255
     .lim2ocal_stg3_right_lim           (lim2ocal_stg3_right_lim[5:0]),
256
     .lim2poc_ktap_right                (lim2poc_ktap_right),
257
     .lim2poc_rdy                       (lim2poc_rdy),
258
     .lim2stg2_dec                      (lim2stg2_dec),
259
     .lim2stg2_inc                      (lim2stg2_inc),
260
     .lim2stg3_dec                      (lim2stg3_dec),
261
     .lim2stg3_inc                      (lim2stg3_inc),
262
     .lim_done                          (lim_done),
263
     // Inputs
264
     .clk                               (clk),
265
     .lim_start                         (lim_start),
266
     .oclkdelay_calib_done              (oclkdelay_calib_done),
267
     .oclkdelay_init_val                (oclkdelay_init_val[5:0]),
268
     .po_rdy                            (po_rdy),
269
     .poc2lim_detect_done               (mmcm_edge_detect_done), // Templated
270
     .poc2lim_fall_align_taps_lead      ({TAPCNTRWIDTH{1'b0}}),  // Templated
271
     .poc2lim_fall_align_taps_trail     ({TAPCNTRWIDTH{1'b0}}),  // Templated
272
     .poc2lim_rise_align_taps_lead      (rise_lead_right),       // Templated
273
     .poc2lim_rise_align_taps_trail     (rise_trail_right),      // Templated
274
     .prech_done                        (prech_done),
275
     .rst                               (rst),
276
     .simp_stg3_final_sel               (simp_stg3_final_sel[5:0]),
277
     .wl_po_fine_cnt                    (wl_po_fine_cnt_sel[5:0]),
278
         .oclkdelay_calib_cnt           (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]),
279
         .dbg_ocd_lim               (dbg_ocd_lim)); // Templated
280
 
281
  /*mig_7series_v2_3_poc_top AUTO_TEMPLATE(
282
   .CCENABLE                            (0),
283
   .SCANFROMRIGHT                       (1),
284
   .pd_out                              (metaQ),); */
285
 
286
  mig_7series_v2_3_poc_top #
287
    (/*AUTOINSTPARAM*/
288
     // Parameters
289
     .CCENABLE                          (0),                      // Templated
290
     .MMCM_SAMP_WAIT                    (MMCM_SAMP_WAIT),
291
     .PCT_SAMPS_SOLID                   (PCT_SAMPS_SOLID),
292
     .POC_USE_METASTABLE_SAMP           (POC_USE_METASTABLE_SAMP),
293
     .SAMPCNTRWIDTH                     (SAMPCNTRWIDTH),
294
     .SAMPLES                           (SAMPLES),
295
     .SCANFROMRIGHT                     (1),                     // Templated
296
     .TAPCNTRWIDTH                      (TAPCNTRWIDTH),
297
     .TAPSPERKCLK                       (TAPSPERKCLK),
298
     .TCQ                               (TCQ))
299
  u_poc
300
    (/*AUTOINST*/
301
     // Outputs
302
     .mmcm_edge_detect_done             (mmcm_edge_detect_done),
303
     .mmcm_lbclk_edge_aligned           (mmcm_lbclk_edge_aligned),
304
     .poc_backup                        (poc_backup),
305
     .poc_error                         (poc_error),
306
     .psen                              (psen),
307
     .psincdec                          (psincdec),
308
     .rise_lead_right                   (rise_lead_right[TAPCNTRWIDTH-1:0]),
309
     .rise_trail_right                  (rise_trail_right[TAPCNTRWIDTH-1:0]),
310
     // Inputs
311
     .clk                               (clk),
312
     .ktap_at_left_edge                 (ktap_at_left_edge),
313
     .ktap_at_right_edge                (ktap_at_right_edge),
314
     .mmcm_edge_detect_rdy              (mmcm_edge_detect_rdy),
315
     .ninety_offsets                    (ninety_offsets[1:0]),
316
     .pd_out                            (metaQ),                 // Templated
317
     .poc_sample_pd                     (poc_sample_pd),
318
     .psdone                            (psdone),
319
     .rst                               (rst),
320
     .use_noise_window                  (use_noise_window));
321
 
322
  mig_7series_v2_3_ddr_phy_ocd_mux #
323
    (/*AUTOINSTPARAM*/
324
     // Parameters
325
     .DQS_CNT_WIDTH                     (DQS_CNT_WIDTH),
326
     .DQS_WIDTH                         (DQS_WIDTH),
327
     .TCQ                               (TCQ))
328
  u_ocd_mux
329
    (/*AUTOINST*/
330
     // Outputs
331
     .ktap_at_left_edge                 (ktap_at_left_edge),
332
     .ktap_at_right_edge                (ktap_at_right_edge),
333
     .mmcm_edge_detect_rdy              (mmcm_edge_detect_rdy),
334
     .oclk_prech_req                    (oclk_prech_req),
335
     .po_en_stg23                       (po_en_stg23),
336
     .po_en_stg3                        (po_en_stg3),
337
     .po_rdy                            (po_rdy),
338
     .po_stg23_incdec                   (po_stg23_incdec),
339
     .po_stg23_sel                      (po_stg23_sel),
340
     .po_stg3_incdec                    (po_stg3_incdec),
341
     .wl_po_fine_cnt_sel                (wl_po_fine_cnt_sel[5:0]),
342
     // Inputs
343
     .clk                               (clk),
344
     .lim2init_prech_req                (lim2init_prech_req),
345
     .lim2poc_ktap_right                (lim2poc_ktap_right),
346
     .lim2poc_rdy                       (lim2poc_rdy),
347
     .lim2stg2_dec                      (lim2stg2_dec),
348
     .lim2stg2_inc                      (lim2stg2_inc),
349
     .lim2stg3_dec                      (lim2stg3_dec),
350
     .lim2stg3_inc                      (lim2stg3_inc),
351
     .ocd2stg2_dec                      (ocd2stg2_dec),
352
     .ocd2stg2_inc                      (ocd2stg2_inc),
353
     .ocd2stg3_dec                      (ocd2stg3_dec),
354
     .ocd2stg3_inc                      (ocd2stg3_inc),
355
     .ocd_cntlr2stg2_dec                (ocd_cntlr2stg2_dec),
356
     .ocd_edge_detect_rdy               (ocd_edge_detect_rdy),
357
     .ocd_ktap_left                     (ocd_ktap_left),
358
     .ocd_ktap_right                    (ocd_ktap_right),
359
     .ocd_prech_req                     (ocd_prech_req),
360
     .oclkdelay_calib_cnt               (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]),
361
     .rst                               (rst),
362
     .wl_po_fine_cnt                    (wl_po_fine_cnt[6*DQS_WIDTH-1:0]));
363
 
364
  mig_7series_v2_3_ddr_phy_ocd_data #
365
    (/*AUTOINSTPARAM*/
366
     // Parameters
367
     .DQS_CNT_WIDTH                     (DQS_CNT_WIDTH),
368
     .DQ_WIDTH                          (DQ_WIDTH),
369
     .TCQ                               (TCQ),
370
     .nCK_PER_CLK                       (nCK_PER_CLK))
371
  u_ocd_data
372
    (/*AUTOINST*/
373
     // Outputs
374
     .match                             (match[1:0]),
375
     // Inputs
376
     .clk                               (clk),
377
     .complex_oclkdelay_calib_start     (complex_oclkdelay_calib_start),
378
     .oclkdelay_calib_cnt               (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]),
379
     .phy_rddata                        (phy_rddata[2*nCK_PER_CLK*DQ_WIDTH-1:0]),
380
     .phy_rddata_en_1                   (phy_rddata_en_1),
381
     .prbs_ignore_first_byte            (prbs_ignore_first_byte),
382
     .prbs_ignore_last_bytes            (prbs_ignore_last_bytes),
383
     .prbs_o                            (prbs_o[2*nCK_PER_CLK*DQ_WIDTH-1:0]),
384
     .rst                               (rst));
385
 
386
  mig_7series_v2_3_ddr_phy_ocd_samp #
387
    (/*AUTOINSTPARAM*/
388
     // Parameters
389
     .OCAL_SIMPLE_SCAN_SAMPS            (OCAL_SIMPLE_SCAN_SAMPS),
390
     .SCAN_PCT_SAMPS_SOLID              (SCAN_PCT_SAMPS_SOLID),
391
     .SIM_CAL_OPTION                    (SIM_CAL_OPTION),
392
     .TCQ                               (TCQ),
393
     .nCK_PER_CLK                       (nCK_PER_CLK))
394
  u_ocd_samp
395
    (/*AUTOINST*/
396
     // Outputs
397
     .oclk_calib_resume                 (oclk_calib_resume),
398
     .rd_victim_sel                     (rd_victim_sel[2:0]),
399
     .samp_done                         (samp_done),
400
     .samp_result                       (samp_result[1:0]),
401
     // Inputs
402
     .clk                               (clk),
403
     .complex_oclkdelay_calib_start     (complex_oclkdelay_calib_start),
404
     .match                             (match[1:0]),
405
     .ocal_num_samples_inc              (ocal_num_samples_inc),
406
     .phy_rddata_en_1                   (phy_rddata_en_1),
407
     .reset_scan                        (reset_scan),
408
     .rst                               (rst),
409
     .taps_set                          (taps_set));
410
 
411
  mig_7series_v2_3_ddr_phy_ocd_edge #
412
    (/*AUTOINSTPARAM*/
413
     // Parameters
414
     .TCQ                               (TCQ))
415
  u_ocd_edge
416
    (/*AUTOINST*/
417
     // Outputs
418
     .f2o                               (f2o),
419
     .f2z                               (f2z),
420
     .fuzz2oneeighty                    (fuzz2oneeighty[5:0]),
421
     .fuzz2zero                         (fuzz2zero[5:0]),
422
     .o2f                               (o2f),
423
     .oneeighty2fuzz                    (oneeighty2fuzz[5:0]),
424
     .scan_right                        (scan_right),
425
     .z2f                               (z2f),
426
     .zero2fuzz                         (zero2fuzz[5:0]),
427
     // Inputs
428
     .clk                               (clk),
429
     .phy_rddata_en_2                   (phy_rddata_en_2),
430
     .reset_scan                        (reset_scan),
431
     .samp_done                         (samp_done),
432
     .samp_result                       (samp_result[1:0]),
433
     .scanning_right                    (scanning_right),
434
     .stg3                              (stg3[5:0]));
435
 
436
 
437
  mig_7series_v2_3_ddr_phy_ocd_cntlr #
438
    (/*AUTOINSTPARAM*/
439
     // Parameters
440
     .DQS_CNT_WIDTH                     (DQS_CNT_WIDTH),
441
     .DQS_WIDTH                         (DQS_WIDTH),
442
     .TCQ                               (TCQ))
443
  u_ocd_cntlr
444
    (/*AUTOINST*/
445
     // Outputs
446
     .complex_oclkdelay_calib_done      (complex_oclkdelay_calib_done),
447
     .complex_wrlvl_final               (complex_wrlvl_final),
448
     .lim_start                         (lim_start),
449
     .ocd_cntlr2stg2_dec                (ocd_cntlr2stg2_dec),
450
     .ocd_prech_req                     (ocd_prech_req),
451
     .oclk_init_delay_done              (oclk_init_delay_done),
452
     .oclkdelay_calib_cnt               (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]),
453
     .oclkdelay_calib_done              (oclkdelay_calib_done),
454
     .phy_rddata_en_1                   (phy_rddata_en_1),
455
     .phy_rddata_en_2                   (phy_rddata_en_2),
456
     .phy_rddata_en_3                   (phy_rddata_en_3),
457
     .reset_scan                        (reset_scan),
458
     .wrlvl_final                       (wrlvl_final),
459
     // Inputs
460
     .clk                               (clk),
461
     .complex_oclkdelay_calib_start     (complex_oclkdelay_calib_start),
462
     .lim_done                          (lim_done),
463
     .oclkdelay_calib_start             (oclkdelay_calib_start),
464
     .phy_rddata_en                     (phy_rddata_en),
465
     .po_counter_read_val               (po_counter_read_val[8:0]),
466
     .po_rdy                            (po_rdy),
467
     .prech_done                        (prech_done),
468
     .rst                               (rst),
469
     .scan_done                         (scan_done));
470
 
471
 
472
  mig_7series_v2_3_ddr_phy_ocd_po_cntlr #
473
    (/*AUTOINSTPARAM*/
474
     // Parameters
475
     .DQS_CNT_WIDTH                     (DQS_CNT_WIDTH),
476
     .DQS_WIDTH                         (DQS_WIDTH),
477
     .TCQ                               (TCQ),
478
     .nCK_PER_CLK                       (nCK_PER_CLK))
479
  u_ocd_po_cntlr
480
    (.cmplx_stg3_final                  (cmplx_stg3_final[DQS_WIDTH*6-1:0]),
481
     .ocal_scan_win_not_found           (ocal_scan_win_not_found),
482
     .simp_stg3_final                   (simp_stg3_final[DQS_WIDTH*6-1:0]),
483
     /*AUTOINST*/
484
     // Outputs
485
     .ninety_offsets                    (ninety_offsets[1:0]),
486
     .ocal_num_samples_done_r           (ocal_num_samples_done_r),
487
     .ocd2stg2_dec                      (ocd2stg2_dec),
488
     .ocd2stg2_inc                      (ocd2stg2_inc),
489
     .ocd2stg3_dec                      (ocd2stg3_dec),
490
     .ocd2stg3_inc                      (ocd2stg3_inc),
491
     .ocd_edge_detect_rdy               (ocd_edge_detect_rdy),
492
     .ocd_ktap_left                     (ocd_ktap_left),
493
     .ocd_ktap_right                    (ocd_ktap_right),
494
     .oclk_center_write_resume          (oclk_center_write_resume),
495
     .oclkdelay_center_calib_done       (oclkdelay_center_calib_done),
496
     .oclkdelay_center_calib_start      (oclkdelay_center_calib_start),
497
     .scan_done                         (scan_done),
498
     .scanning_right                    (scanning_right),
499
     .simp_stg3_final_sel               (simp_stg3_final_sel[5:0]),
500
     .stg3                              (stg3[5:0]),
501
     .taps_set                          (taps_set),
502
     .use_noise_window                  (use_noise_window),
503
     // Inputs
504
     .clk                               (clk),
505
     .complex_oclkdelay_calib_start     (complex_oclkdelay_calib_start),
506
     .f2o                               (f2o),
507
     .f2z                               (f2z),
508
     .fuzz2oneeighty                    (fuzz2oneeighty[5:0]),
509
     .fuzz2zero                         (fuzz2zero[5:0]),
510
     .lim2ocal_stg3_left_lim            (lim2ocal_stg3_left_lim[5:0]),
511
     .lim2ocal_stg3_right_lim           (lim2ocal_stg3_right_lim[5:0]),
512
     .mmcm_edge_detect_done             (mmcm_edge_detect_done),
513
     .mmcm_lbclk_edge_aligned           (mmcm_lbclk_edge_aligned),
514
     .o2f                               (o2f),
515
     .oclkdelay_calib_cnt               (oclkdelay_calib_cnt[DQS_CNT_WIDTH:0]),
516
     .oclkdelay_init_val                (oclkdelay_init_val[5:0]),
517
     .oneeighty2fuzz                    (oneeighty2fuzz[5:0]),
518
     .phy_rddata_en_3                   (phy_rddata_en_3),
519
     .po_counter_read_val               (po_counter_read_val[8:0]),
520
     .po_rdy                            (po_rdy),
521
     .poc_backup                        (poc_backup),
522
     .reset_scan                        (reset_scan),
523
     .rst                               (rst),
524
     .samp_done                         (samp_done),
525
     .scan_right                        (scan_right),
526
     .wl_po_fine_cnt_sel                (wl_po_fine_cnt_sel[5:0]),
527
     .z2f                               (z2f),
528
     .zero2fuzz                         (zero2fuzz[5:0]));
529
 
530
 
531
endmodule // mig_7series_v2_3_ddr_phy_oclkdelay_cal
532
 
533
// Local Variables:
534
// verilog-library-directories:(".")
535
// verilog-library-extensions:(".v")
536
// End:

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.