# Patent

## Title
Method and apparatus for pre-clocking

## Abstract

A method and apparatus for pre-clocking have been disclosed. In one case pre-clocking is used to effectively decrease the delay to output timing with respect to a clock. In another case pre-clocking is used to allow an output signal more time to reach a given level. In another case a pre-clocking adjustment may be determined while a device is in operation.

## Background
RELATED APPLICATION
The present Application for Patent is a continuation of U.S. patent application Ser. No. 11/314,683 titled “Method and Apparatus for Pre-Clocking” filed Dec. 21, 2005, pending, by the same inventors, and is hereby incorporated herein by reference.


FIELD OF THE INVENTION
The present invention pertains to clocking. More particularly, the present invention relates to a method and apparatus for pre-clocking.
BACKGROUND OF THE INVENTION
In many applications in electronics there is a limit to how fast an output may be slewed based on signal integrity and other constraints (such as, but not limited to, drive capability, capacitive load, overshoot, ringing, etc.). For example, in Registered Dual Inline Memory Modules (RDIMMs) if the output is slewed too fast, signal integrity suffers. This may present a problem.
Often the output (or output transition) of an electronic device is directly related to how fast a register can change state. This register state change is propagated and eventually results in an output (or output transition).
For example, the time required (delay) to propagate a signal from a register clock edge to the output of the register is the sum of the internal register delay and the register output swing delay. This time (delay) may be too long for fast devices (such as, but not limited to next generation RDIMMs, such as DDR2-667 and DDR2-800). This may present a problem.



BRIEF DESCRIPTION OF THE DRAWINGS
The invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which:
FIG. 1 illustrates a network environment in which the method and apparatus of the invention may be used;
FIG. 2 is a block diagram of a computer system in which some embodiments of the invention may be used;
FIG. 3 illustrates a timing diagram for a clock and a switching output used to illustrate embodiments of the invention;
FIG. 4 illustrates a timing diagram for a clock and a switching output for one embodiment of the invention;
FIG. 5 illustrates one embodiment of the invention;
FIG. 6 illustrates one embodiment of the invention where a number of fixed delays provide a series of timing delays;
FIG. 7 illustrates one embodiment of the invention in flow chart form; and
FIG. 8 illustrates a flow chart of one embodiment of the invention.



DETAILED DESCRIPTION
The invention, as exemplified in various embodiments, illustrates pre-clocking. In one embodiment of the invention, pre-clocking is used to effectively decrease the delay to output timing with respect to a clock. In one embodiment of the invention, pre-clocking is used to allow an output signal more time to reach a given output level. That is, one embodiment of the invention allows the use of slower rise and fall times which may result in better signal integrity in an application, reduce current drain, lower electronic emissions, etc.
FIG. 3 illustrates at 300 a timing diagram for a clock and a switching output which will be used to illustrate embodiments of the invention. The clock is illustrated at 302 where the clock being high is denoted by Clk, the clock being low is denoted by Clk*, and Vref indicates a reference voltage at or near a midpoint of the clock swing. 304 denotes an input Dx, for example, to a register. 306 denotes an output Yx, for example, from a register. At 333 is a timeline represented by t. At 308, 310, 312, and 314 are time indicators represented by vertical dashed lines in timing diagram 300. tsu represents a setup time (308 to 310), for example, for a register. t1 represents a delay (310 to 312), for example, for a register. t2 represents a delay (312 to 314), for example, for a register output to change. t1+t2 (from 310 to 314) may be considered the register propagation delay.
In one embodiment of the invention, t1 may be a technology dependent internal delay, for example, due to silicon processing, etc. In one embodiment of the invention, t2 may be an application dependent state change delay, for example, due to a maximum slew rate allowed.
As illustrated in FIG. 3, a register output, such as Yx 306, does not start to change until input Dx 304 is clocked into the register by clock 302 at time 310. tsu (308 to 310) is the register setup time.
FIG. 4 illustrates at 400 a timing diagram for a clock and a switching output for one embodiment of the invention. The clock is illustrated at 302 as described for FIG. 3. 306 denotes an output Yx, for example, from a register using the clock at 302. Timeline 333, and time indicators 308, 310, 312, and 314 are as described for FIG. 3. In this embodiment of the invention an internal clock 402, denoted as logic high by Clkint, logic low by Clkint*, and reference voltage Vrefint, is generated based on the clock 302, however, it is shifted in time with respect to clock 302. For example, in FIG. 4, clock 402 precedes clock 302 by the time difference from 410 to 310. Based on this shift, clock 402 may be used internally to pre-clock (relative to an external clock, such as 302) a register, at, for example, time 410. The setup time for such a register is now tsu′ the time from 308 to 410. t1′ represents a delay (410 to 412), for example, for a register. t2′ represents a delay (412 to 414), for example, for a register output to change. t1′+t2′ (410 to 414) may be considered the register propagation delay.
For the sake of illustration, if we assume that t1=t1′, and that t2=t2′, then as shown in FIG. 4 the output Yx′ 406 of a register using clock 402 will precede the output Yx 306 of a register using clock 302 by an amount equal to 414 to 314. This 414 to 314 time (for the t1=t1′, t2=t2′ case) delay is the same as the 402 clock preceding the 302 clock by the time amount 410 to 310.
Thus, what has been described is a technique of using a pre-clock. One of skill in the art will appreciate that by obtaining the output of a register earlier, a system may be able to operate at a faster speed and/or operate with more timing margin.
Generation of the pre-clock may be done by a variety of techniques. For example, a PLL, a DLL, delay lines, etc.
FIG. 5 illustrates one embodiment of the invention 500. Here a register 510 has a data input Dx 304 a clock input Clkint 402 and an output Yx′ 406. The external clock Clk 302 goes into a variable delay block 520 and a phase comparator 524. The output of the variable delay 520 is the register 510 clock Clkint 402. The output of the variable delay 520 also goes into a fixed delay 522. The output of fixed delay 522 goes into the other input of phase comparator 524. The output 525 of phase comparator 524 is used to adjust variable delay 520.
One of skill in the art will appreciate that the variable delay may be used to adjust clock relationships, such as the time 410 to 310 as shown in FIG. 4. For ease of discussion the time from 410 to 310 as shown in FIG. 4 will be referred to as the internal clock shift time. Note that as shown in FIG. 4, 410 is in advance of 310 and may be considered a “pre-clock” relative to the clock 302. If 410 is the same time as 310 then the clock timing is the same (and they are in phase) and the clocking is neither pre nor post clock. If 410 occurs after 310, then it may be considered a “post-clock” relative to clock 302. While the description of the techniques of the invention, such as that shown in FIG. 4 have shown “pre-clocking”, the invention is not so limited and the full range from “pre-clocking” to “post-clocking” may be practiced.
In one embodiment of the invention the register setup time tsu may be known in advance and to speed the output of, for example, a register, the internal clock shift time may be fixed to pre-clock the register. In one embodiment of the invention, a controller, either at a low chip level, or at a higher system level, to speed the output, may adjust the variable delay, such as that shown in FIG. 5 at 520 for optimum performance. For example, with a known data pattern for input Dx and a fixed setup time, by varying the pre-clock and post-clock interval (410 to 310, 310 to 410) it is possible to determine the range of functionality for a register to correctly clock in data. If the register clock is too early or late then correct data will not be latched. Once a range of functionality is determined, the controller may pick a pre or post clock value to use.
In one embodiment of the invention the internal clock may be generated by using a phase locked loop (PLL) in communication with the external clock. In one embodiment of the invention the internal clock may be generated by using a delay locked loop (DLL) in communication with the external clock.
FIG. 6 illustrates one embodiment of the invention 600, where a number of fixed delay elements provide a series of timing delays 610-0 through 610-n from clock Clk 302. Register 510 has an input Dx 304, a clock input Clkint 402 and has an output Yx′ 406. As illustrated in FIG. 6, Clkint 402 may select any delay (610-0 through 610-n) and as shown is connected to a delay at 610-2.
One of skill in the art will appreciate that if the delays cover a full cycle of a clock then any range from no pre or post to pre and post clocking is possible. For example, if the clock is 1 GHz then the clock period is 1 ns. If the fixed delays are 100 ps each and there are 10 delays then a full range of adjustment in 100 ps increments from 0 delay is possible (0 ps—no delay, 100 ps—1st delay, 200 ps—2nd delay, . . . etc.).
In one embodiment of the invention, the delay may be preprogrammed into a part. In one embodiment of the invention, the delay may be dynamically adjustable at startup and/or during operation.
One of skill in the art will appreciate that the delay elements may be achieved in a number of ways. As shown in FIG. 6 they are buffers between the taps 610-0 through 610-n. However, in other embodiments of the invention they may be a wire length, inductors, capacitors, active elements, or a combination of these, etc. For example, the delay element may be a delay circuit, such as, for example, the variable delay shown in FIG. 5 at 520.
FIG. 7 illustrates one embodiment of the invention 700, where at 702 an input is received, at 704 a first clock is received, at 706 a second clock is generated based on the first clock, and at 708 the input (from 702) is captured using the second clock (generated at 706).
FIG. 8 illustrates one embodiment of the invention 800 where the second clock is adjusted to a “best” value based on adjustments that worked and criteria, for example, but not limited to, earliest adjustment that captured the input, middle of the range of adjustments that captured the input, the last adjustment that captured the input, the next to earliest adjustment that captured the input, etc.
At 802 an input is received, at 804 a first clock is received, at 806 a second clock is generated based on the first clock. At 808 the second clock is adjusted relative to the first clock, at 810 the second clock (as adjusted at 808) is used to try and capture the input (from 802). At 812 a check is made to see if the input (from 802) was captured. At 814 if the input was not captured the adjustment value and lack of capture is noted. At 816 if the input was captured the adjustment value and capture is noted. At 818 a check is made to see if all adjustments (or a range of adjustments) have been tried, if not then the second clock is adjusted at 808. If all adjustments have been tried then at 820 a “best” adjustment value for the second clock is selected based on criteria and adjustments that captured the input.
In one embodiment of the invention, a way to determine if the input was captured (such as at 812) is to have two registers in parallel with each receiving the same data input during testing, one with a fixed clock delay, and the other with an adjustable clock delay. By “sweeping” the adjustable delay (i.e. trying different delays) and comparing its output with that of the fixed clock delay (i.e. for example not adjusted and “tied” to the external clock, e.g. in FIG. 6, Clk 302 tied into Clkint 402, via 610-0 tap) when transitions occur, it is possible to determine if the input was captured correctly. Other approaches are also possible, such as, working with a known data input stream, etc.
One of skill in the art will appreciate that by proper placement of the “pre-clock” in relation to the original (such as system) clock taking into consideration the setup time an earlier output is possible. Conversely an output may be delayed.
One of skill in the art will also appreciate that setup time for a circuit, such as a register, may be different based on the data input state. For example, the setup time for a register receiving a logic high data input may be different than for a register receiving a logic low data input. Thus, although the invention discussion above has treated them, for the sake of discussion, as being the same, this is not necessary the case and the techniques discussed above may be applied so that the pre-clocking, or post-clocking may be based on the data input. Thus, for example, different pre-clocking times may be used based on the state of the data input.
In a similar fashion, outputs from a device, such as a register used in a system, may be able to slew at different rates based upon the direction of the output transition (from high toward low, low toward high, 3-state toward high or low, etc.) and this may be used to select the pre-clocking, or post-clocking time interval. One of skill in the art will appreciate that the pre-clocking, or post-clocking time interval may be based on other parameters, such as, but not limited to data input state, output slew, temperature, voltage, device characteristics or processing, etc., or a combination of these, etc.
Thus a method and apparatus for pre-clocking have been described.
FIG. 1 illustrates a network environment 100 in which the techniques described may be applied. The network environment 100 has a network 102 that connects S servers 104-1 through 104-S, and C clients 108-1 through 108-C. More details are described below.
FIG. 2 is a block diagram of a computer system 200 in which some embodiments of the invention may be used and which may be representative of use in any of the clients and/or servers shown in FIG. 1, as well as, devices, clients, and servers in other Figures. More details are described below.
Referring back to FIG. 1, FIG. 1 illustrates a network environment 100 in which the techniques described may be applied. The network environment 100 has a network 102 that connects S servers 104-1 through 104-S, and C clients 108-1 through 108-C. As shown, several computer systems in the form of S servers 104-1 through 104-S and C clients 108-1 through 108-C are connected to each other via a network 102, which may be, for example, a corporate based network. Note that alternatively the network 102 might be or include one or more of: the Internet, a Local Area Network (LAN), Wide Area Network (WAN), satellite link, fiber network, cable network, or a combination of these and/or others. The servers may represent, for example, disk storage systems alone or storage and computing resources. Likewise, the clients may have computing, storage, and viewing capabilities. The method and apparatus described herein may be applied to essentially any type of communicating means or device whether local or remote, such as a LAN, a WAN, a system bus, etc. Thus, the invention may find application at both the S servers 104-1 through 104-S, and C clients 108-1 through 108-C.
Referring back to FIG. 2, FIG. 2 illustrates a computer system 200 in block diagram form, which may be representative of any of the clients and/or servers shown in FIG. 1. The block diagram is a high level conceptual representation and may be implemented in a variety of ways and by various architectures. Bus system 202 interconnects a Central Processing Unit (CPU) 204, Read Only Memory (ROM) 206, Random Access Memory (RAM) 208, storage 210, display 220, audio, 222, keyboard 224, pointer 226, miscellaneous input/output (I/O) devices 228, and communications 230. The bus system 202 may be for example, one or more of such buses as a system bus, Peripheral Component Interconnect (PCI), Advanced Graphics Port (AGP), Small Computer System Interface (SCSI), Institute of Electrical and Electronics Engineers (IEEE) standard number 1394 (FireWire), Universal Serial Bus (USB), etc. The CPU 204 may be a single, multiple, or even a distributed computing resource. Storage 210, may be Compact Disc (CD), Digital Versatile Disk (DVD), hard disks (HD), optical disks, tape, flash, memory sticks, video recorders, etc. The Central Processing Unit (CPU) 204, the Read Only Memory (ROM) 206, the Random Access Memory (RAM) 208, and in fact most of the components and in FIG. 2 may make use of embodiments of the present invention. Note that depending upon the actual implementation of a computer system, the computer system may include some, all, more, or a rearrangement of components in the block diagram. For example, a thin client might consist of a wireless hand held device that lacks, for example, a traditional keyboard. Thus, many variations on the system of FIG. 2 are possible.
For purposes of discussing and understanding the invention, it is to be understood that various terms are used by those knowledgeable in the art to describe techniques and approaches. Furthermore, in the description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be evident, however, to one of skill in the art that the present invention may be practiced without these specific details. In some instances, well-known structures and devices are shown in block diagram form, rather than in detail, in order to avoid obscuring the present invention. These embodiments are described in sufficient detail to enable those of skill in the art to practice the invention, and it is to be understood that other embodiments may be utilized and that logical, mechanical, electrical, and other changes may be made without departing from the scope of the present invention.
Some portions of the description may be presented in terms of algorithms and symbolic representations of operations on, for example, data bits within a computer memory. These algorithmic descriptions and representations are the means used by those of skill in the data processing arts to most effectively convey the substance of their work to others of skill in the art. An algorithm is here, and generally, conceived to be a self-consistent sequence of acts leading to a desired result. The acts are those requiring physical manipulations of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. It has proven convenient at times, principally for reasons of common usage, to refer to these signals as bits, values, elements, symbols, characters, terms, numbers, or the like.
It should be borne in mind, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities.
Further, any of the methods according to the present invention can be implemented in hard-wired circuitry, by programmable logic, or by any combination of hardware and software.
It is to be understood that various terms and techniques are used by those knowledgeable in the art to describe communications, protocols, applications, implementations, mechanisms, etc. One such technique is the description of an implementation of a technique in terms of an algorithm or mathematical expression. That is, while the technique may be, for example, implemented as executing code on a computer, the expression of that technique may be more aptly and succinctly conveyed and communicated as a formula, algorithm, or mathematical expression. Thus, one of skill in the art would recognize a block denoting A+B=C as an additive function whose implementation in hardware and/or software would take two inputs (A and B) and produce a summation output (C). Thus, the use of formula, algorithm, or mathematical expression as descriptions is to be understood as having a physical embodiment in at least hardware and/or software.
A machine-readable medium is understood to include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer). For example, a machine-readable medium includes read only memory (ROM); random access memory (RAM); magnetic disk storage media; optical storage media; flash memory devices; electrical, optical, acoustical or other form of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.); etc.
As used in this description, “pre-clocking”, “post-clocking” or similar phrases are used, among other things, to describe the relationship between one clock relative to another clock. For sake of discussion and because faster is better, pre-clocking has been described in detail. However, the invention is not so limited and post-clocking is also possible. For example, if a device needs a longer setup time, then post-clocking may be useful. What is to be appreciated is that by adjusting one clock relative to another (for example, an internal clock register clock relative to an external register or system clock) performance of a device (such as register) or a system may be improved or enhanced.
As used in this description, “one embodiment” or “an embodiment” or similar phrases means that the feature(s) being described are included in at least one embodiment of the invention. References to “one embodiment” in this description do not necessarily refer to the same embodiment; however, neither are such embodiments mutually exclusive. Nor does “one embodiment” imply that there is but a single embodiment of the invention. For example, a feature, structure, act, etc. described in “one embodiment” may also be included in other embodiments. Thus, the invention may include a variety of combinations and/or integrations of the embodiments described herein.
Thus a method and apparatus for pre-clocking have been described.

## Claims

1. A method comprising:
receiving an input;
receiving a first clock, wherein said first clock is in a substantially fixed time relationship with said input;
generating a second clock based on said first clock, wherein said second clock is an output from a variable delay controlled by a phase comparator output and wherein said phase comparator has a first input and a second input, said phase comparator first input coupled directly to said first clock, said phase comparator second input coupled through a fixed delay to said second clock; and
capturing said input by using said second clock directly coupled to a device clock input.

2. The method of claim 1 wherein said device clock input is a clock input of a device selected from the group consisting of a register, and a latch.

3. The method of claim 1 wherein said generating said second clock further comprises generating said second clock at substantially the same frequency of said first clock.

4. The method of claim 3 wherein said second clock and said first clock are not in phase.

5. The method of claim 4 wherein said capturing is performed in a register.

6. The method of claim 5 wherein said second clock's signal transition is within said register's setup time.

7. The method of claim 6 wherein said second clock's signal transition is selected from the group consisting of logic high to logic low, and logic low to logic high.

8. An apparatus comprising:
a register having a data input, a clock input, and an output, said data input configured to be coupled to receive data, said output configured to be coupled to send data; and
a circuit having an input and an output, said input configured to be coupled to receive an external clock, wherein said external clock is in a substantially fixed time relationship with said data, said circuit output is coupled to said register clock input, and wherein said circuit output is from a variable delay controlled by a phase comparator having a first input, a second input, and an output, said phase comparator first input coupled to receive directly said external clock, said phase comparator second input coupled through a fixed delay to said register clock input, and said phase comparator output coupled to a variable delay having an input and an output, said variable delay input coupled to receive directly said external clock and said variable delay output coupled directly to said register clock input.

9. The apparatus of claim 8 wherein said circuit further comprises one or more delay elements.

10. The apparatus of claim 9 wherein said one or more delay elements has a delay selected from the group consisting of a fixed delay, an adjustable delay, and a delay adjusted at the time said delay circuit is powered on.

11. The apparatus of circuit of claim 10 wherein one or more of said one or more delay elements are selected for use based on a condition selected from the group consisting of said register data input state, said register data output state, said register data output transition direction, and said register's fabrication process.

12. A circuit comprising:
a clock generating logic block having an input and an output, said input configured to be in communication with a clock wherein said clock is in a substantially fixed time relationship with data wherein said clock generating logic block further comprises a variable delay having an input, an output, and a control; a fixed delay having an input and an output; a comparator having a first input, a second input, and an output; wherein said variable delay first input is directly coupled to said comparator first input and to said clock; wherein said comparator output is coupled to said variable delay control and wherein said variable delay output is directly coupled to said fixed delay input and said clock generating logic block output; and wherein said fixed delay output is coupled to said second comparator input; and
a register having a data input, a clock input, and an output, said data input configured to be in communication with said data, said clock input directly connected to said clock generating logic block output, and said register output configured to communicate with an output.

13. The circuit of claim 12 wherein one or more signal transitions from said clock generating logic block occur within said register's setup time.

14. The circuit of claim 13 wherein said output of said clock generating logic block is out of phase with respect to said clock.

15. The circuit of claim 14 wherein said phase between said clock and said clock generating logic block output is determined by selecting one or more delay elements in a delay chain.

16. An apparatus comprising:
means for receiving an input;
means for receiving a first clock, wherein said means for receiving said first clock is in a substantially fixed time relationship with said means for receiving said input;
means for generating a second clock based on said first clock wherein said means for generating said second clock further comprises means for phase comparison not based on said input; and
means for capturing said input by using said second clock directly coupled to a register clock input.

17. The apparatus of claim 16 wherein said means for generating further comprises means for delaying said first clock.

18. The apparatus of claim 17 wherein said means for delaying said first clock further comprises means for adjusting said delaying.

19. The apparatus of claim 18 further comprising:
means for trying to capture said input by using said second clock;
means for determining if said input was captured by said second clock;
means for trying one or more different delays for said delaying said first clock; and
means for selecting one or more of said one or more different delays for said first clock.

20. The apparatus of claim 19 wherein said means for trying one or more different delays further comprises means for trying a range of delays that includes from 0 to 360 degrees phase difference between said first clock and said second clock.