Patent ID: 8862966

Claim:
A method for adjusting write timing in a memory device, the method comprising: determining a first result from an error detection function performed on data bits transferred from a processing device to the memory device; transmitting the data bits on a data bus to the memory device; determining a second result from the error detection function performed on corresponding data bits received by the memory device; comparing the first result to the second result to determine write timing window with a first timing boundary and a second timing boundary for a signal on the data bus and a write clock signal, wherein if the first and second results do not match each other, iteratively repeating a sequence of the determining the first result, transmitting, determining the second result, and comparing for one or more positive incremental phase shifts in the data bits or the write clock signal to determine the first timing boundary defined by a first positive incremental phase shift in the data bits or the write clock signal in which the first result from the error detection function performed on the positive phase-shifted data bits matches the corresponding second result, and starting at the first timing boundary, iteratively repeating the sequence of the determining the first result, transmitting, determining the second result, and comparing for another one or more positive incremental phase shifts in the data bits or the write clock signal to determine the second timing boundary defined by a last positive incremental phase shift its the data bits or the write clock signal in which the first result from the error detection function performed on the positive phase-shifted data bits matches the corresponding second result; and adjusting a phase difference between the signal on the data bus and the write clock signal based on the first and second timing boundaries of the write timing window, wherein the memory device recovers the signal on the data bus based on the adjusted phase difference.