1. A method of de-skewing data in a data communication system having a first chip for communicating a plurality of data-bits to a second chip through a data-bus, the method comprising: forwarding a sequence of training bits from the first chip to the second chip; receiving the sequence of training bits at the second chip; comparing the sequence of training bits received to the sequence forwarded in order to determine if one training bit has a data skew; if the training bit is not skewed, selecting a first input (the no-skew input) for receiving the plurality of data-bits; if the training bit is skewed, determining whether there is a late skew or an early skew; if a late skew exists, correcting the late skew by selecting a second input (the late skew input) for receiving the plurality of data-bits, wherein the data-bits at the second input are at least one clock cycle earlier than the data-bits for the first input; and if there is an early skew, correcting the early skew by selecting a third input (the early skew input) for receiving the plurality of data-bits such that the data-bits at the third input are at least one clock cycle later than the data-bits at the first input.