The present disclosure generally relates to the field of electronic data storage, and more particularly to a method and computer program product for compensating for jitter during DDR3 delay line training.
When a system that uses Double-Data-Rate Three (DDR3) Synchronous Dynamic Random Access Memory (SDRAM) is powered on, the interface must be trained so that read and write cycles function synchronously without corrupting data. DDR3 systems are highly configurable and capable of varying clock frequency, voltage, device rank, geometry, bus width, error correction code, buffering, and size. To accommodate this flexibility, the interconnect delay between the memory controller and the SDRAMs may be determined in an algorithmic fashion. Unless some of the flexibility of the memory is removed, this training requires a process of trial and error until a working combination is found.
Generally, training algorithms use a simple one-pass exhaustive search. All combinations of write and read delay settings are attempted (either simultaneously or independently) until a working range of values is found. Then, one particular value is selected to represent the optimal data eye. Depending on the algorithm, this is typically the mathematical average located in the middle of the working range. This average value is then programmed into the delay registers to complete the training sequence.
Current training algorithms focus on minimizing the duration of DDR3 initialization. To simplify data transfers, only a minimum number of beats are examined. It is assumed that each unique delay combination consistently results in either a pass or fail result. Thus, each delay combination is only examined once to find the center of the eye. These algorithms do not work in systems with high levels of jitter due to complex Printed Circuit Board (PCB) layout discontinuities that occur with vias, bends in traces and serpentine delay lines, non-standard Joint Electron Devices Engineering Council (JEDEC) DRAM topologies, or power supply droop due to Simultaneous Switching Noise (SSN) variations. Thus, when jitter exists in a system, it is not mitigated. This may result in an inaccurate data eye center, possibly pushing Process, Voltage, and Temperature (PVT) compensation circuitry beyond functional limits, causing training failures in the field, or causing data corruption.
A method for compensating for jitter during DDR3 delay line training may include using a computer or processor to perform the steps of executing a plurality of tests for each one of a plurality of delay values for an interconnect delay between a Double-Data-Rate Three (DDR3) memory controller and a DDR3 Synchronous Dynamic Random Access Memory (SDRAM); accumulating a plurality of test results for each plurality of tests for each one of the plurality of delay values; determining a plurality of final test results, where each final test result is associated with an accumulated plurality of test results; and determining a working window edge for the interconnect delay between the DDR3 memory controller and the DDR3 SDRAM utilizing the plurality of final test results.
A method for compensating for jitter during DDR3 delay line training may include using a computer or processor to perform the steps of executing a plurality of tests for each one of a plurality of delay values for an interconnect delay between a Double-Data-Rate Three (DDR3) memory controller and a DDR3 memory; accumulating a first plurality of test results for each plurality of tests for each one of the plurality of delay values; determining a first plurality of final test results, where each final test result is associated with an accumulated plurality of test results; determining a first working window edge for the interconnect delay between the DDR3 memory controller and the DDR3 memory utilizing the first plurality of final test results; adjusting at least one attribute of the DDR3 memory controller or the DDR3 memory; accumulating a second plurality of test results for each plurality of tests for each one of the plurality of delay values; determining a second plurality of final test results associated with the accumulated second plurality of test results; and determining a second working window edge for the interconnect delay between the DDR3 memory controller and the DDR3 memory utilizing the second plurality of final test results. The first working window edge and the second working window edge may be compared, and the at least one attribute of the DDR3 memory controller or the DDR3 memory may be selected based upon the comparison to maximize jitter tolerance for the DDR3 memory.
It is to be understood that both the foregoing general description and the following detailed description are exemplary and explanatory only and are not necessarily restrictive of the present disclosure. The accompanying drawings, which are incorporated in and constitute a part of the specification, illustrate subject matter of the disclosure. Together, the descriptions and the drawings serve to explain the principles of the disclosure.
The numerous advantages of the disclosure may be better understood by those skilled in the art by reference to the accompanying figures in which:
Reference will now be made in detail to the subject matter disclosed, which is illustrated in the accompanying drawings.
Referring generally to
Jitter may also cause inconsistent data eye widths. Utilizing data from the accumulated final results, the eye window can be “narrowed-in” (or otherwise adjusted) to ensure the true eye center is found. The number of iterations for the accumulator and eye window consistency check can be determined from lab clock jitter validation analysis using an oscilloscope. Once the jitter value is determined for the system, it may be translated into a value for the production algorithm. It should be noted that trade-offs can be made during validation between jitter tolerance levels and algorithm run time.
For example, a greater number of iterations may provide a more accurate eye window at the expense of a longer run time.
A method 100 may include executing a set of tests for each one of a number of delay values for an interconnect delay between a DDR3 memory controller and a DDR3 SDRAM, 110. For example, a pass or fail test may be executed multiple times for each delay value. In some implementations, all possible delay values may be attempted rather than coarse steps. The method 100 may also include accumulating a set of test results for each set of tests for each one of the various delay values, 120. In embodiments, an accumulator may be implemented as a unique storage element per delay value. Each delay value can be attempted several times, and the result is merged in the accumulator (e.g., as described in
In the example described in
The method 100 may further include determining a number of final test results, where each final test result is associated with an accumulated set of test results, 130. Once the accumulator data is obtained, it may be analyzed in an algorithmic way to determine a final result (e.g., as described in
For example, the chart of
Because this example illustrates a write-leveling algorithm where the goal is to detect the earliest rising edge of the clock (to ensure proper setup time), this value was interpreted as a “1” even though it only appeared a few times compared to “0”. This example shows how utilizing an accumulator allows for finding a correct response with jitter present in the system. The above-described process then continues until all accumulator results are analyzed for each delay value and processed into a final result. It should be noted that the processing of accumulator values into final results is not specific to write leveling, but can be used in any of the DDR3 related training algorithms.
The method 100 may further include determining a working window edge for the interconnect delay between the DDR3 memory controller and the DDR3 SDRAM utilizing the final test results, 140. Once the final results are obtained from the accumulator, the next step is to determine the raw edges of the working window (e.g., as illustrated in
It should be noted that method 100 may be applied to any DDR3 delay line training steps, including, but not limited to, write leveling, pre-amble finder, gate training, and/or read-leveling. Further, method 100 may be repeated multiple times as DDR3 memory controller and/or DDR3 memory attributes are changed. For example, the driver slew rate and termination may be dynamically changed between iterations of method 100 to achieve further jitter tolerance. The resulting data may then be merged into the accumulator to achieve data eye window consistency. In other embodiments, jitter tolerance may be further improved at the expense of system performance. In a specific implementation, to maximize jitter tolerance that works around Simultaneously Switching Noise (SSN), system performance may be sacrificed. For example, when the tCCD parameter (representing command to command delay) is slowly increased, the effective traffic time may be slowed, reducing noise and power supply draw at the expense of longer transfer times.
The foregoing detailed description has set forth various embodiments of the devices and/or processes via the use of block diagrams, flowcharts, and/or examples. Insofar as such block diagrams, flowcharts, and/or examples contain one or more functions and/or operations, each function and/or operation within such block diagrams, flowcharts, or examples can be implemented, individually and/or collectively, by a wide range of hardware, software, firmware, or virtually any combination thereof. In one embodiment, several portions of the subject matter described herein can be implemented via Application Specific Integrated Circuits (ASICs), Field Programmable Gate Arrays (FPGAs), digital signal processors (DSPs), or other integrated formats. However, some aspects of the embodiments disclosed herein, in whole or in part, can be equivalently implemented in integrated circuits, as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more processors (e.g., as one or more programs running on one or more microprocessors), as firmware, or as virtually any combination thereof, and that designing the circuitry and/or writing the code for the software and or firmware would be well within the skill of one skilled in the art in light of this disclosure. In addition, the mechanisms of the subject matter described herein are capable of being distributed as a program product in a variety of forms, and that an illustrative embodiment of the subject matter described herein applies regardless of the particular type of signal bearing medium used to actually carry out the distribution. Examples of a non-transitory signal bearing medium include, but are not limited to, the following: a recordable type medium such as a floppy disk, a hard disk drive, a Compact Disc (CD), a Digital Video Disk (DVD), a digital tape, a computer memory, and the like; and a transmission type medium such as a digital and/or an analog communication medium (e.g., a fiber optic cable, a waveguide, a wired communications link, a wireless communication link (e.g., transmitter, receiver, transmission logic, reception logic, and the like), and the like).
In the present disclosure, the methods disclosed may be implemented as sets of instructions or software readable by a device. Further, it is understood that the specific order or hierarchy of steps in the methods disclosed are examples of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the method can be rearranged while remaining within the disclosed subject matter. The accompanying method claims present elements of the various steps in a sample order, and are not necessarily meant to be limited to the specific order or hierarchy presented.
It is believed that the present disclosure and many of its attendant advantages will be understood by the foregoing description, and it will be apparent that various changes may be made in the form, construction and arrangement of the components without departing from the disclosed subject matter or without sacrificing all of its material advantages. The form described is merely explanatory, and it is the intention of the following claims to encompass and include such changes.