This section is intended to provide information relevant to understanding the various technologies described herein. As the section's title implies, this is a discussion of related art that should in no way imply that it is prior art. Generally, the related art may or may not be considered prior art. It should therefore be understood that any statement in this section should be read in this light, and not as any admission of prior art.
In various modern circuit architectures, conventional clocking circuitry typically uses traditional logic circuitry, such as, e.g., buffers and clock gates. In the case of droop mitigation with clock stretching, one type of circuit that can be used is a digital clock divider that divides input clock frequency by an integer number, in situations when a droop is detected. Because a division factor can only be an integer value, the system performance can be greatly reduced if the stretching is triggered too often. On the other hand, without stretching, critical path delays can cause timing failure due to unexpected power supply droops (e.g., higher logic gates delay). Therefore, in some types of circuits, there exists a need for a small, energy and area efficient circuit that can provide clock stretching within a fractional division factor of the clock period.
Implementations of various techniques are described herein with reference to the accompanying drawings. It should be understood, however, that the accompanying drawings illustrate only various implementations described herein and are not meant to limit embodiments of various techniques described herein.
Various implementations described herein are related to elastic clock stretching schemes and/or techniques for various circuit related architectural applications in physical designs. Also, in some implementations, the various elastic clock stretching schemes and techniques described herein provide for a novel adaptive clocking architecture having an adaptive clocking block that reduces system circuit frequency when a power supply droop is detected. The various adaptive clocking schemes and/or techniques described herein use a delay line instead of DLL as a time base to stretch the clock period, which enables stretching to be gate delay based rather than being an absolute fraction of the main clock period. Also, because the delay line can be directly connected to the same power supply on which the droop occurs, the stretch amount may therefore be directly proportional to the droop without any extra processing power. Thus, the elastic stretch solution described herein may therefore be substantially low power since the ADC needed to detect the droop may be removed and the stretching state machine is substantially simple.
Various implementations of adiabatic stepwise clocking techniques for various circuit applications will be described in greater detail herein in
In various implementations, the adaptive clocking architecture 104 in
As shown in
In various implementations, the latches (FF0, FF1, . . . , FFN) may provide the sample out signals (sampout<0>, sampout<1>, . . . , sampout<N>) as sampling outputs (sampouts) so as to thereby generate a series of clock cycles of the clock signal (ck) with a stretched pulse width (or stretched pulse period). The series of clock cycles may include a series of delayed edges for each corresponding clock cycle so as to stretch the pulse width (or pulse period) of the clock signal (ck). Also, each latch (FF0, FF1, . . . , FFN) may provide a corresponding delayed clock pulse position in the delay line of the sample out signal (sampout<0>, . . . , sampout<N>) beginning with a starting edge of the latched output (Q0, Q1, . . . , QN) based on the clock signal (ck), and each latch (FF0, FF1, . . . , FFN) may provide the starting edge of the latched output (Q0, Q1, . . . , QN) as the sampling output (sampout) so as to select the series of clock cycles and delayed clock edges that will stretch the clock pulse width (or pulse period). Also, the series of clock cycles of the clock signal (ck) refers to a series of multiple clock cycles of the clock signal (ck) including a number of clock cycles that repeat.
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and buffers (B0, B1, . . . , BN) may include a number of stages including a first stage with a first latch (FF0) and a first buffer (B0). The first buffer (B0) may receive the clock signal (ck) and provide a first delayed clock signal (out<0>) as a first data input (DO) to the first latch (FF0). Also, the first latch (FF0) may receive the first delayed clock signal (out<0>) and provide a first sample out signal (sampout<0>) as a first latched output (Q0) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and buffers (B0, B1, . . . , BN) may include a second stage with a second latch (FF1) and a second buffer (B1). The second buffer (B1) may receive the first delayed clock signal (out<0>) and provide a second delayed clock signal (out<1>) as a second data input (D1) to the second latch (FF1). Also, the second latch (FF1) may receive the second delayed clock signal (out<1>) and then provide a second sample out signal (sampout<1>) as a second latched output (Q1) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and buffers (B0, B1, . . . , BN) may include a third stage with a third latch (FF2) and a third buffer (B2). The third buffer (B2) may receive the second delayed clock signal (out<1>) and provide a third delayed clock signal (out<2>) as a third data input (D2) to the third latch (FF2). Also, the third latch (FF2) may receive the third delayed clock signal (out<2>) and then provide a third sample out signal (sampout<2>) as a third latched output (Q2) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and buffers (B0, B1, . . . , BN) may include a fourth stage with a fourth latch (FF3) and a fourth buffer (B3). Also, the fourth buffer (B3) may receive the third delayed clock signal (out<2>) and provide a fourth delayed clock signal (out<3>) as a fourth data input (D3) to the fourth latch (FF3). Also, the fourth latch (FF3) may receive the fourth delayed clock signal (out<3>) and then provide a fourth sample out signal (sampout<3>) as a fourth latched output (Q3) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and buffers (B0, B1, . . . , BN) may include a number (N) of additional stages with each additional stage having an additional latch (FFN) and an additional buffer (BN). Also, each additional buffer (BN) may receive a previous delayed clock signal (out<N−1>) from a previous buffer (BN−1) and provide another delayed clock signal (out<N>) as another data input (DN) to each additional latch (FFN). Further, each additional latch (FFN) may receive the delayed clock signal (out<N>) and then provide another sample out signal (sampout<N>) as a latched output (QN) based on the clock signal (ck). Also, in various applications, the buffers (B0, B1, . . . , BN) may be any type of delay element and/or gate that is used to delay the clock signal (ck), such as, e.g., AND gate, OR gate, etc.
As shown in
For instance, in timing window tw0, delayed clock signal (ck=out<0>) triggers the rising edge of the ck_out signal, and in timing window tw1, the delayed clock signal (out<1>) triggers the rising edge of the ck_out signal. Also, in timing window tw2, delayed clock signal (out<2>) triggers the rising edge of the ck_out signal, and in timing window tw3, the delayed clock signal (out<3>) triggers the rising edge of the ck_out signal. Also, in timing window tw4, delayed clock signal (out<4>) triggers the rising edge of the ck_out signal, and these multiple timing sequences of tw0 to tw4 may repeat itself over the next timing windows. For instance, in timing window tw6, the delayed clock signal (ck=out<0>) triggers the rising edge of the ck_out signal, and in timing window tw7, the delayed clock signal (out<1>) triggers the rising edge of the ck_out signal.
In some implementations, the adaptive clocking waveform 204 may provide for 4 edges in 1 Tck (i.e., clock cycle timing periods). However, any number (N) of edges for any number of clock cycle timing periods may b e used to generate the ck_out signal.
As shown in
As shown in
As shown in
For instance, in timing window tw0, delayed clock signal (ck=out<0>) triggers the rising edge of the ck_out signal, and in timing window tw1, the delayed clock signal (out<1>) triggers the rising edge of the ck_out signal, and in timing window tw2, delayed clock signal (out<2>) triggers the rising edge of the ck_out signal, and also, these multiple timing sequences of tw0 to tw2 may repeat over the next timing windows. For instance, in timing window tw4, the delayed clock signal (out<0>) triggers the rising edge of the ck_out signal, and in timing window tw5, delayed clock signal (out<1>) triggers the rising edge of the ck_out signal, and in timing window tw6, delayed clock signal (out<2>) triggers the rising edge of the ck_out signal, and these multiple timing sequences of tw4 to tw6 may repeat itself in a similar manner over the next timing windows.
In some implementations, the adaptive clocking waveform 404 may provide for 2 edges in 1 Tck (i.e., clock cycle timing periods). However, any number (N) of edges for any number of clock cycle timing periods may b e used to generate the ck_out signal.
As shown in
As shown in
In some implementations, the adaptive clocking architecture 604A in
As shown in
In some implementations, the delay line reset-clock controller 614 may refer to a clock controller that provides clock signals (ck0, ck1) and reset signals (rst0, rst1, . . . , rstN) based on an enable signal (en), an input reset signal (reset) and an input clock signal (ckin). The delay line based droop detector and phase generator 618 may refer to a phase generator that may generate output signals (O<0>, O<1>, . . . O<N>) and sampling signals (S<0>, S<1>, . . . S<N>) based on the clock signals (ck0, ck1) and the reset signals (rst0, rst1, . . . , rstN) from the clock controller 614. The phase generator 618 may have multiple stages of latches and logic gates coupled in a delay line configuration. Also, each latch may receive a delayed clock signal as data input and provide a sample out signal as a latched output based on a clock signal. Also, each latch may provide a delayed edge of a next clock cycle so as to stretch the pulse width (or pulse period) of the clock signal.
In some implementations, the state machine controller 624 may receive sampling signals (S<0>, S<1>, . . . S<N>) from the phase generator 618, receive sampling signals (St<0>, St<1>, . . . St<N>) from the phase selector 628 (as feedback signals), and then provide the output signals (Os<0>, Os<1>, . . . Os<N>) based on the enable signal (en), the input reset signal (reset) and the input clock signal (ckin). Also, the phase selector 628 may receive the output signals (Os<0>, Os<1>, . . . Os<N>) from the state machine controller 624 and then provide the sampling signals (St<0>, St<1>, . . . St<N>) to the state machine controller 624 (as feedback signals). Also, the state calculator and synchronizer 634 may receive output signals (O<0>, O<1>, . . . O<N>) from the phase generator 618, receive sampling signals (St<0>, St<1>, . . . St<N>) from the phase selector 628, and then provide mask set signals (mask_set<N:0>) and mask reset signals (mask_reset<N:0>) as output.
In some implementations, the detector-generator circuitry 618 in
As shown in
In various implementations, the latches (FF0, FF1, . . . , FFN) may provide the sample out signals (O<0>, O<1>, . . . , O<N>) as a sampling output (sampout) so as to calculate the needed series of clock cycles of the clock signal (ck) to generate a stretched signal period (or stretched pulse width). Also, the series of clock cycles of the clock signal (ck) may refer to a series of multiple clock cycles of the clock signal (ck) including a number (N) of clock cycles that repeat. Also, the series of clock cycles may have a series of delayed edges for each corresponding clock cycle so as to stretch the pulse period (or pulse width) of the clock signal (ck). Also, each latch (FF0, FF1, . . . , FFN) may provide a corresponding sampled clock signal beginning with a starting edge of the latched output (Q0, Q1, . . . , QN) based on the clock signal (ck). Also, each latch (FF0, FF1, . . . , FFN) may provide the starting edge of the latched output (Q0, Q1, . . . , QN) as the sampling output (sampout) so as to generate the series of clock cycles with the stretched pulse width.
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and logic gates (L0, L1, . . . , LN) may include a first stage with a first latch (FF0) and a first logic gate (L0). Also, the first logic gate (L0) may receive the clock signal (ck), receive a first reset signal (rst0), and provides a first delayed clock signal (O<0>) as a first data input (DO) to the first latch (FF0). Also, the first latch (FF0) may receive the first delayed clock signal (O<0>) and provide a first sample out signal (S<0>) as a first latched output (Q0) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and logic gates (L0, L1, . . . , LN) may include a second stage with a second latch (FF1) and a second logic gate (L1). The second logic gate (L1) may receive first delayed clock signal (O<0>), receive a second reset signal (rst1), and provide a second delayed clock signal (O<1>) as a second data input (D1) to the second latch (FF1). The second latch (FF1) may receive the second delayed clock signal (O<1>) and provide a second sample out signal (S<1>) as a second latched output (Q1) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and logic gates (L0, L1, . . . , LN) may include a third stage with a third latch (FF2) and a third logic gate (12). Also, the third logic gate (12) may receive the second delayed clock signal (O<1>), receive a third reset signal (rst2), and provide a third delayed clock signal (O<2>) as a third data input (D2) to the third latch (FF2). Also, the third latch (FF2) may receive the third delayed clock signal (O<2>) and provide a third sample out signal (S<2>) as a third latched output (Q2) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and logic gates (L0, L1, . . . , LN) may include a fourth stage with a fourth latch (FF(N−1)) and a fourth logic gate (L(N−1)). Also, the fourth logic gate (L(N−1)) may receive the third delayed clock signal (O<2>), receive a fourth reset signal (rst(N−1)), and provide a fourth delayed clock signal (O<N−1>) as a fourth data input (D(N−1) to the fourth latch (FF(N−1)). Also, the fourth latch (FF(N−1)) may receive the fourth delayed clock signal (O<N−1>) and provide a fourth sample out signal (S<N−1>) as a fourth latched output (Q(N−1)) based on the clock signal (ck).
In various implementations, the multiple stages of latches (FF0, FF1, . . . , FFN) and logic gates (L0, L1, . . . , LN) may include a number (N) of additional stages with each additional stage having an additional latch (FFN) and an additional logic gate (LN). Also, each additional logic gate (LN) may receive another delayed clock signal (O<N>) from a previous logic gate (L(N−1)) and provide the delayed clock signal (O<N>) as another data input (DN) to each additional latch (FFN). Also, each additional latch (FFN) may receive the delayed clock signal (O<N>) and provide a sample out signal (S<N>) as a latched output (QN) based on the clock signal (ck).
In various implementations, the phase selector 628 in
As shown in
In various implementations, the adaptive clocking architecture 704 in
As shown in
It should be intended that the subject matter of the claims not be limited to the implementations and illustrations provided herein, but include modified forms of those implementations including portions of implementations and combinations of elements of different implementations in accordance with the claims. It should be appreciated that in the development of any such implementation, as in any engineering or design project, numerous implementation-specific decisions should be made to achieve developers' specific goals, such as compliance with system-related and business related constraints, which may vary from one implementation to another. Moreover, it should be appreciated that such a development effort may be complex and time consuming, but would nevertheless be a routine undertaking of design, fabrication, and manufacture for those of ordinary skill having benefit of this disclosure.
Described herein are various implementations of a device having adaptive clocking architecture with multiple stages of latches and buffers coupled in a delay line configuration. In some instances, each latch may receive a delayed clock signal as data input and provide a sample out signal as a latched output based on a clock signal. Also, in some instances, each latch may provide a delayed edge of a next clock cycle so as to stretch the pulse width of the clock signal.
Described herein are various implementations of a device having adaptive clocking architecture with multiple stages of latches and logic gates that are coupled in a delay line. In some instances, each logic gate may provide a delayed clock signal based on a reset signal. Also, in some instances, each latch may receive the delayed clock signal as data input and provide a sample out signal in the delay line as a latched output based on a clock signal. Also, in some instances, each latch may provide a delayed edge in the delay line of a next clock cycle so as to stretch the pulse width of the clock signal.
Described herein are various implementations of a device having a clock controller that provides clock signals and reset signals based on an enable signal, an input reset signal and an input clock signal. The device may have a phase generator that generates output signals and sampling signals based on the clock signals and the reset signals from the clock controller. In some instances, the phase generator may include multiple stages of latches and logic gates coupled in a delay line configuration. Also, in some instances, each latch may receive a delayed clock signal as data input and provide a sample out signal as a latched output based on a clock signal. Also, each latch may provide a delayed edge of a next clock cycle so as to implement a state machine that calculates a delayed edge to be used to stretch the pulse width of the clock signal.
Reference has been made in detail to various implementations, examples of which are illustrated in the accompanying drawings and figures. In the following detailed description, numerous specific details are set forth to provide a thorough understanding of the disclosure provided herein. However, the disclosure provided herein may be practiced without these specific details. In some other instances, well-known methods, procedures, components, circuits and networks have not been described in detail so as not to unnecessarily obscure details of the embodiments.
It should also be understood that, although the terms first, second, etc. may be used herein to describe various elements, these elements should not be limited by these terms. These terms are only used to distinguish one element from another. For example, a first element could be termed a second element, and, similarly, a second element could be termed a first element. The first element and the second element are both elements, respectively, but they are not to be considered the same element.
The terminology used in the description of the disclosure provided herein is for the purpose of describing particular implementations and is not intended to limit the disclosure provided herein. As used in the description of the disclosure provided herein and appended claims, the singular forms “a,” “an,” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. The term “and/or” as used herein refers to and encompasses any and all possible combinations of one or more of the associated listed items. The terms “includes,” “including,” “comprises,” and/or “comprising,” when used in this specification, specify a presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components and/or groups thereof.
As used herein, the term “if” may be construed to mean “when” or “upon” or “in response to determining” or “in response to detecting,” depending on the context. Similarly, the phrase “if it is determined” or “if [a stated condition or event] is detected” may be construed to mean “upon determining” or “in response to determining” or “upon detecting [the stated condition or event]” or “in response to detecting [the stated condition or event],” depending on the context. The terms “up” and “down”; “upper” and “lower”; “upwardly” and “downwardly”; “below” and “above”; and other similar terms indicating relative positions above or below a given point or element may be used in connection with some implementations of various technologies described herein.
While the foregoing is directed to implementations of various related techniques described herein, other and further implementations may be devised in accordance with the disclosure herein, which may be determined by the claims that follow.
Although the subject matter has been described herein in language specific to structural features and/or methodological acts, it should be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, specific features and acts described above are disclosed as example forms of implementing the claims.