This section of the MIG Design Assistant covers debugging DQS capture issues by changing the DQS capture point.
NOTE: This Answer Record is part of the Xilinx MIG Solution Center (Xilinx Answer 34243).The Xilinx MIG Solution Center is available to address all questions related to MIG. Whether you are starting a new design with MIG or troubleshooting a problem, use the MIG Solution Center to guide you to the right information.
By default, MIG delays DQS by 3/8 of a bit period with respect to DQ. This value was found to provide the best capture window through extensive characterization. However, if your design uses different termination schemes than have been characterized, using a different delay might provide more reliable data capture.
Before changing the default DQS delay that is implemented with thethe tap delay count of the IDELAY block in the DQS strobe input path, the DQS capture windowedges should be determined; see(Xilinx Answer 42172). If the beginning of the capture window is too close to the 3/8 bit period delay, increasing the delay to 1/2 of a bit period might provide additional margin and allow more reliable capture.Conversely, if the end of the capture window is too close to the 3/8 bit period delay, decreasing the DQS delay to 1/4 of a bit period might provide additional margin. To changethe DQS delay, modify the following lines in the mcb_soft_calibration module:
localparam DQS_NUMERATOR = 3;
localparam DQS_DENOMINATOR = 8;
localparam INCDEC_THRESHOLD= 8'h03; // parameter for the threshold which triggers an inc/dec to occur. 2 for half, 4 for quarter, 3 for three eighths
In addition to changing the above values, it might also be necessary to change the upper and lower limits for DQS delays. Search for the following linesin the mcb_soft_calibration module:
assign DQS_DELAY_LOWER_LIMIT = Quarter_Max_Value; // limit for DQS_DELAY for decrements; could optionally be assigned to any 8-bit hex value here
assign DQS_DELAY_UPPER_LIMIT = Half_Max_Value; // limit for DQS_DELAY for increments; could optionally be assigned to any 8-bit hex value here