METHOD AND ARRANGEMENT FOR PROTECTING A DIGITAL CIRCUIT AGAINST TIME ERRORS
20200389156 ยท 2020-12-10
Assignee
Inventors
Cpc classification
H03K19/0016
ELECTRICITY
H03K3/0375
ELECTRICITY
H03K19/003
ELECTRICITY
Y02D10/00
GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
G06F1/12
PHYSICS
International classification
Abstract
Digital values obtained from an output of a preceding circuit element are temporarily stored and made available for a subsequent circuit element at a controlled moment of time. A digital value is received for temporary storage, as well as a triggering signal, a triggering edge of which defines an allowable time limit before which a digital value must appear at said data input to become available for said subsequent circuit element. A sequence of first and second pulse-enabled subregister stages is used to temporarily store said digital value. Said triggering signal is provided to said first pulse-enabled subregister stage delayed with respect to the triggering signal received by said second pulse-enabled subregister stage. The length of the delay is a fraction of a cycle of the triggering signal. A timing event observation signal is output as an indicator of said digital value at said data input having changed within a time window that begins at said allowable time limit and is shorter than one cycle of said triggering signal.
Claims
1. A register circuit for temporarily storing a digital value obtained from an output of a preceding circuit element, the register circuit comprising: a data input for receiving said digital value for temporary storage, a data output for outputting the temporarily stored digital value, a triggering event input for receiving a triggering signal, a triggering edge of which defines an allowable time limit before which a digital value must appear at said data input to become temporarily stored, and on the data propagation path between said data input and data output a sequence of a first pulse-enabled subregister stage and second pulse-enabled subregister stage; wherein said register circuit comprises, between said first and second pulse-enabled subregister stages, a timing event stage configured to use an internal digital value from the first pulse-enabled subregister stage and information of the changing moment of said digital value at the data input in relation to said allowable time limit to ensure passing a valid internal digital value to the second pulse-enabled subregister stage, and wherein said timing event stage is configured to output a timing event observation signal at an output of said register circuit as an indicator of said digital value at said data input having changed within a time window that begins at said allowable time limit and is shorter than one cycle of said triggering signal.
2. A register circuit according to claim 1, wherein said register circuit is a flip-flop.
3. A register circuit according to claim 1, wherein said first and second pulse-enabled subregister stages are latches.
4. A register circuit according to claim 1, wherein said timing event stage comprises: a timing event logic configured to selectively invert the internal digital value obtained from the first pulse-enabled subregister stage; and a timing event controller configured to detect any change of said digital value at said data input within a time window that begins at said allowable time limit and is shorter than a half cycle of said triggering signal, and configured to make said timing event logic effect said selective inverting as a response to such change having been detected.
5. A register circuit according to claim 4, wherein said timing event controller is configured to generate said timing event observation signal.
6. A register circuit according to claim 1, wherein said timing event stage comprises: complementary couplings from the input and output of the pulse enabled subregister stage to the input of the second pulse-enabled subregister stage and a timing event controller configured to detect any change of said digital value at said data input within a time window that begins at said allowable time limit and is shorter than a half cycle of said triggering signal, and configured to select that one of said complementary couplings that leads from the input of the first pulse-enabled subregister stage to the input of the second pulse-enabled subregister stage as a response to such change having been detected.
7. A register circuit according to claim 21, wherein said time window input is coupled to said timing event.
8. A register circuit according to claim 1, wherein the register circuit is a double edge triggered flip-flop.
9. A register circuit according to claim 8, wherein: said first pulse-enabled subregister stage comprises first and second parallel latch branches clocked at opposite phases of said triggering signal, said second pulse-enabled subregister stage comprises a multiplexer clocked by said triggering signal, each of said first and second parallel latch branches comprises a clocked latch, an input of which is coupled to said data input, from each of said first and second latch branches there is a coupling to a transition detector configured to detect timing events in the respective latch branch through comparison of input and output values of the respective docked latch and to produce a respective liming event observation component signal in response to a detected timing event, each of said first and second parallel latch branches comprises, between an output of the clocked latch and a respective input of said multiplexer, an arrangement configured to selectively invert the output value of the respective clocked latch in response to timing event observation component signal produced in that latch branch, and the register circuit is configured to produce said timing event observation signal as a combination of the timing event observation component signals from the first and second parallel latch branches.
10. A register circuit according to claim 1, wherein each of the first and second pulse-enabled subregister stages comprises a back-to-back coupling of two inverters, one of which comprises an enabling input, the timing event controller comprises an XOR gate coupled to receive into its inputs signals from the input and output of the first pulse-enabled subregister stage, the timing event controller comprises two parallel AND gates, one thereof being coupled to receive the output signal of said XOR gate in its first input while the other is coupled to receive the inverted output signal of said XOR gate in its first input, and each of said two AND gates is coupled to receive a pulsed signal in its second input, and the outputs of said two AND gates are coupled to select, whether the input signal of the first pulse-enabled subregister stage or the output signal of the first pulse-enabled subregister stage is coupled to the input of the second pulse-enabled subregister stage.
11. (canceled)
12. (canceled)
13. An integrated circuit according to claim 23, comprising a multitude of data processing paths, wherein said at least one register circuit is located along such a data processing path the time criticality of which is higher than that of another data processing path within said integrated circuit.
14. A set of library instructions for designing a part of an integrated circuit, said set of library instructions being stored on a machine-readable tangible medium and comprising one or more set of one or more machine-readable instructions that, when executed by a computer adapted for designing integrated circuits, are configured to effect the designing of a register circuit according to claim 1.
15. A method for temporarily storing a digital value obtained from an output of a preceding circuit element and for making such a temporarily stored digital value available for a subsequent circuit element at a controlled moment of time, the method comprising: receiving said digital value through a data input for temporary storage, and receiving a triggering signal, a triggering edge of which defines an allowable time limit before which a digital value must be available at said data input to become available for said subsequent circuit element, using between first and second pulse-enabled subregister stages, an internal digital value from the first pulse-enabled subregister stage and information of the changing moment of said digital value at the data input in relation to said allowable time limit to ensure passing a valid internal digital value to the second pulse-enabled subregister stage, using said second pulse-enabled subregister stage for making said valid internal digital value available for said subsequent circuit element, and outputting a timing event observation signal as an indicator of said digital value at said data input having changed within a time window that begins at said allowable time limit and is shorter than one cycle of said triggering signal.
16. A method according to claim 15, comprising: controlling one of: operating voltage, operating power, operating frequency, data throughput, and operating current, in dependence with the occurrence of said timing event observation signal in an integrated circuit.
17. A method according to claim 16, comprising: collecting timing event observations from a number of register circuits within said integrated circuit, and comparing the collected number of timing event observation signals to a threshold, doing at least one of: increasing operating voltage, increasing operating power, decreasing operating frequency, decreasing data throughput, increasing operating current; if said collected number of timing event observation signals is larger than a threshold.
18. A method according to claim 16, comprising: doing at least one of: decreasing operating voltage, decreasing operating power, increasing operating frequency, increasing data throughput, decreasing operating current; if said collected number of timing event observation signals is smaller than a threshold.
19. A register circuit according to claim 4, wherein: said timing event logic comprises a multiplexer and two parallel value propagation paths from an output of said first pulse-enabled subregister stage to the respective inputs of said multiplexer, one of said parallel value propagation paths comprises an inverter configured to invert the value going through that value propagation path with respect to the value going through the other propagation path, and said multiplexer is configured to couple one of said parallel value propagation paths to an input of the second pulse-enabled subregister stage in accordance with the timing event observation signal.
20. A register circuit according to claim 1, wherein the length of the time window is defined by an internal feature of the timing event stage.
21. A register circuit according to claim 1, wherein the register circuit comprises a time window input for receiving a pulsed signal, pulses of which are to define the length of the time window.
22. A register circuit according to claim 9, wherein said time window input is coupled to said second pulse-enabled subregister stage.
23. An integrated circuit, comprising at least one register circuit for temporarily storing a digital value obtained from an output of a circuit element preceding said at least one register circuit in the integrated circuit, the at least one register circuit comprising: a data input for receiving said digital value for temporary storage, a data output for outputting the temporarily stored digital value, a triggering event input for receiving a triggering signal, a triggering edge of which defines an allowable time limit before which a digital value must appear at said data input to become temporarily stored, and on the data propagation path between said data input and data output a sequence of a first pulse-enabled subregister stage and second pulse-enabled subregister stage; wherein said at least one register circuit comprises, between said first and second pulse-enabled subregister stages, a timing event stage configured to use an internal digital value from the first pulse-enabled subregister stage and information of the changing moment of said digital value at the data input in relation to said allowable time limit to ensure passing a valid internal digital value to the second pulse-enabled subregister stage, and wherein said timing event stage is configured to output a timing event observation signal at an output of said at least one register circuit as an indicator of said digital value at said data input having changed within a time window that begins at said allowable time limit and is shorter than one cycle of said triggering signal.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0016] The accompanying drawings, which are included to provide a further understanding of the invention and constitute a part of this specification, illustrate embodiments of the invention and together with the description help to explain the principles of the invention. In the drawings:
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
DETAILED DESCRIPTION
[0039] It is obvious to a person skilled in the art that with the advancement of technology, the basic idea of the invention may be implemented in various ways. The invention and its embodiments are thus not limited to the examples described above, instead they may vary within the scope of the claims.
[0040] The embodiments of the invention are meant for use in integrated circuits in which digital data is processed in pipelines consisting of sequences of combinational logic units. In particular, embodiments of the invention are meant for use as register circuits that are used to temporarily store digital values obtained from an output of a preceding circuit element, for example from an output of a preceding combinational logic unit. Temporary storing means here that the output value of the preceding circuit element is read into the register circuit and made (and kept) available at the output of the register circuit for a duration of time that is determined by a triggering signal, which for synchronous circuits is typically called a clock signal. Without losing generality the term clock signal can be used also for asynchronous circuits, and in this description these terms are used essentially as synonyms of each other.
[0041] Embodiments of the invention are generally categorized as register circuits of flip-flop type. This means that when the timing of the processing goes as intended, the digital value at the data input of the register circuit settles before an allowable time limit defined by a triggering edge of the clock signal, and the data output of the register circuit is locked to that value at the triggering edge. The allowable time limit is not at the triggering edge but slightly before it; the shortest allowable interval between the allowable time limit and the triggering edge is called the setup time of the register circuit of flip-flop type. Since the setup time is (essentially) constant and characteristic to the register circuit in question, the triggering edge of the clock signal may be said to define the allowable time limit, because the allowable time limit is always one setup time earlier than the triggering edge. The setup time is only a small fraction of the half cycle of the clock signal.
[0042]
[0043] On the data propagation path between the data input 201 and data output 202 there is a sequence of a first pulse-enabled subregister stage 203 and a second pulse-enabled subregister stage 204. Being pulse-enabled, the first and second subregister stages are transparent in the sense that whenever their enabling pulse is active, any change in the input of the respective pulse-enabled subregister stage is immediately reflected at its output. When the enabling pulse is not active, the output of the pulse-enabled subregister stage maintains the value it had when the enabling pulse was active last time, and is insensitive to any changes in its input value until the enabling pulse goes active again. Being in sequence on the data propagation path between the data input 201 and data output 202 means that data coming to the data input 201 must pass through the first pulse-enabled subregister stage 203 and the second pulse-enabled subregister stage 204 in this order before becoming available at the data output 202.
[0044] If a conventional flip-flop has first and second pulse-enabled subregister stages concatenated on a data propagation path, these are typically clocked with opposite phases of the same clock signal. In the register circuit of
[0045] The register circuit of
[0046] With these generalizations in mind it can be said that a triggering edge of the clock signal defines an allowable time limit before which a digital value must appear at the data input 201 to become temporarily stored according to the normal, expected operation of the register circuit.
[0047] Additionally the register circuit of
[0048] We may first assume that the register circuit of
[0049] The D line illustrates an arbitrary passage of an input data signal, which in this example changes its value once in every clock cycle. The changes of input data associated with moments 301, 302, 303, and 306 arrive in time, while the changes of input data associated with moments 304 and 305 are late. The allowable time limit of the register circuit is not separately shown in
[0050] Since the first latch remains enabled whenever the CLKD signal is low, its output signal q1 follows the incoming data signal at all changes in
[0051] At moment 304 the first latch is still enabled, because the CLKD signal is low. Even at the time of the late change 307 in the input data signal the first latch is still enabled, becauseas explained abovedespite being late the change 307 comes before the time window closes at the immediately following rising edge in the CLKD signal. The output signal q1 of the first latch goes low and stays low when the first latch is disabled by the CLKD signal going high. Meanwhile the second latch has been enabled by the high value or the CLK signal, so its output follows the falling edge of q1 and the changed value of input data becomes available as a corresponding value in the output signal Q of the whole register circuit, even if it was not on time (not simultaneous with the triggering edge in the clock signal at moment 304) but slightly late.
[0052] The fact that the value of i1 (and correspondingly q1) remained unchanged even at moment 304 does not tell as such, whether this was because a change in the input data signal D was late or whether the value of D will simply stay unchanged in this clock cycle. Thus at moment 304 sharp the timing event observation logic 205 does not know yet, whether there was a timing event or not. However, when the late change 307 in input data then takes place within the time window, the timing event observation logic 205 notices this and makes the TEO signal active. The next time when the timing event observation logic 205 must be ready to detect any eventual timing event is at the next triggering (rising) edge of the CLK signal, so it is advantageous to reset the TEO signal before that, for example at the falling edge of the CLK signal in the middle between moments 304 and 305 like in
[0053] Indeed there comes another timing event associated with moment 305 in
[0054]
[0055] In the embodiment of
[0056] In the embodiment of
[0057] A hybrid embodiment could be presented where the timing event observation logic 205 would have parallel inputs for receiving values on the data propagation path both before and after the first pulse-enabled subregister stage 203. Such an embodiment could involve the advantage that the timing event observation logic 205 could arrive at the correct result even in cases where the timing event took place so close to the end of the time window that it would be uncertain, whether the first pulse-enabled subregister stage 203 had been disabled already, i.e. whether the change in the input data value made it through the first pulse-enabled subregister stage 203. Since such a timing event represents already a relatively long delay in receiving the change in the input data signal, possibly necessitating significant corrective action in the whole integrated circuit, the timing event observation logic 205 may be configured to output a special kind of an indicator signal in such situations. Another possible reason for equipping the timing event observation logic 205 with parallel inputs for both i1 (=D) and q1 might be that this way the timing event observation logic 205 can be designed in a particularly advantageous way.
[0058] The embodiment shown in
[0059] Compared to those embodiments in which the delayed clock signal is derived internally within the register circuit, the embodiment of
[0060] As is shown with dashed lines and the and/or conjunction in
[0061]
[0062]
[0063] The pulsed clock signal CP is taken as such to clock the second pulse-enabled subregister stage 204. A delayed form CPD (clock pulse, delayed) of the pulsed clock signal is produced in a delay line 801, which in
[0064] The monitor circuit 803 in
[0065] In the embodiments described so far it has been assumed that the register circuit is of the single edge triggered flip-flop type. However, the same principle can be applied to register circuits that are of the double edge triggered flip-flop type.
[0066]
[0067] The second pulse-enabled subregister stage of the register circuit in
[0068] Concerning late-arriving changes in the input data D, the standard double edge triggered flip-flop of
[0069]
[0070] In the register circuit of
[0071] The data input 201 of the register circuit is coupled to the data inputs of the upper and lower latches 1101 and 1102 through respective multiplexers 1104 and 1105 that are clocked by the delayed clock signal CLKD. The arrangement and selecting of the inputs of the multiplexers 1104 and 1105 is such that on a high value of the delayed clock signal CLKD the data input 201 is coupled through multiplexer 1104 to the data input of the upper latch 1101, the enabling input of which is coupled to receive the delayed clock signal CLKD as such. On the high value of the delayed clock signal CLKD the data input of the lower latch 1102 is coupled to receive a feedback signal 11q from the data output of the lower latch 1102 itself. On a low value of the delayed clock signal CLKD the data input 201 is coupled through multiplexer 1105 to the data input of the lower latch 1102, while the data input of the upper latch is coupled to receive a feedback signal 10q from the data output of the upper latch 1101 itself. The enabling input of the lower latch 1102 is coupled to receive the inverse of the delayed clock signal CLKD.
[0072] As an example, if a change in input data should arrive to the register circuit of
[0073] The upper part of the register circuit in
[0074] A transition detector 1110 is coupled to the TE data input 1106 and to the output of the XOR gate 1109. It is configured to produce the timing event observation signal TEP in response to the value in the TE data input 1106 changing while the timing window indicator TEP-W is active.
[0075] The timing event observation logic of
[0076]
[0077] Clock gating is a technique used in integrated circuits to save energy by avoiding unnecessary changes of state. If digital data is processed in a pipeline where the intermediate results given by combinational logic units are stored in registers, it may happen that the intermediate result stored in a particular (set of) register(s) does not change at all at a certain triggering edge, or even at a number of consecutive triggering edges. In such a case it is advisable to temporarily disable the clocking of the subsequent stages in the same pipeline, because their outputs would remain the same anyway.
[0078]
[0079]
[0080] The clock gating of
[0081] However, let us then assume that the register circuits 1401 and 1403 are of the double edge triggered flip-flop type that was generally described earlier with reference to
[0082] It is an objective of the invention to present a method and circuit for performing clock gating for register circuits of the double edge triggered flip-flop type so that a proper number of triggering edges can be ensured in all occasions. It is a further objective of the invention to present such a method and circuit that are well suited for register circuits that are not only of the double edge triggered flip-flop type but also capable of time borrowing.
[0083] Said objectives of the invention are achieved by making the clock gating circuit remember its state at the last moment of disabling and to continue from there at each edge of the ungated clock signal, allowing the phase of the gated clock signal to invert if necessary.
[0084] It is characteristic to a clock gating circuit of the kind referred to here that the clock gating circuit is configured to freeze the toggling (gated) clock signal at its current value in response to an enabling signal assuming the value that disables delivering said toggling clock signal, and to respond to said enabling signal thereafter assuming the value that enables delivering said toggling clock signal by beginning the continued toggling of said toggling clock signal at the next edge of the input clock signal.
[0085] It is characteristic to a clock gating method of the kind referred to here that it comprises freezing the toggling (gated) clock signal at its current value in response to an enabling signal assuming the value that disables delivering said toggling clock signal, and responding to said enabling signal thereafter assuming the value that enables delivering said toggling clock signal by beginning the continued toggling of said toggling clock signal at the next edge of the input clock signal.
[0086] The inventive method and circuit for clock gating are based on the insight that for clocking double edge triggered flip-flops it is actually not necessary to require the clock signal to have the same phase. Also oppositely phased clock signals will work, at least as long as it can be ensured that the structure of the double edge triggered flip-flops can prevent having two transparent register circuits in line enabled simultaneously.
[0087] Clock gating of the kind described above will be discussed in more detail in the following with reference to
[0088]
[0089] The incoming CLK signal goes through two parallel branches, one of which comprises an inverter 1701, to the respective inputs of a first multiplexer 1702. The output of the first multiplexer 1702 goes to the data input of a first latch 1703, the non-inverted output of which provides the gated output clock signal GCLK. The last-mentioned is also taken to a first input of a second multiplexer 1704, the other input of which is coupled to receive the inverted output of the first latch 1703. The selection signal of the second multiplexer 1704 is the CLK signal.
[0090] The output of the second multiplexer 1704 goes to the data input of a second latch 1705, the (non-inverted) output of which constitutes the selection signal of the first multiplexer 1702. The enabling signal EN could be taken as such to the first latch 1703 and inverted to the second latch 1705; in
[0091] In the example case of
[0092] After moment 1801 the EN signal goes low; generally it can be said that the enabling signal assumes the value that disables delivering the gated clock signal to those clocked digital circuits that would otherwise receive it. This disables the first latch 1703, so its output signal Q1 is frozen at its current value. Simultaneously the second latch 1705 is enabled, so it begins to read the values of its input signal D2. These, in turn, come from the second multiplexer 1704 which, having its input values frozen, repeatedly alternates between passing them through in the rhythm of the input clock signal CLK. As long as the second latch 1705 remains enabled, the alternating values in its data input go through to its data output. The resulting toggling Q2 signal clocks the first multiplexer 1702, whichdue to the inverter 1701 in one of its input branchesensures that the input signal D1 to the first latch 1703 maintains the value it had when the EN signal went low, even if the CLK signal as such continues to toggle all the time.
[0093] After moment 1803 the EN signal goes high again. This happens while the signal D2 (and consequently also Q2) was low, so the value of the signal D1 that the now re-enabled first latch 1703 reads at its input comes from the non-inverted input branch of the first multiplexer 1702. No immediate change takes place in the gated output clock signal GCLK (which is line Q1 in
[0094] However, an important difference to conventional clock gating circuits becomes apparent at the end of the gated clock disabling interval that begins after moment 1804 in
[0095] Comparing line Q1 in
[0096] An inevitable consequence of said typical behavior is that the phase of the gated output clock signal may become inverted from what it was, and indeed does so whenever the EN signal goes high during a different phase of the CLK signal than what the CLK signal had when the EN signal went low. This is easy to see in
[0097] Inverting the phase of the gated clock signal does not matter, however, if all flip-flops in the clocked logic circuits, to which the CLK and GCLK signals are delivered, are of the double edge triggered type. For a double edge triggered flip-flop it is only important that there is an edge in the clocking signal, whether it is a rising or a falling edge does not matter.
[0098] As a general characterization, a clock gating circuit of the kind described above comprises a phase memory that is configured to memorize the phase of the input clock signal in response to the EN signal going low (i.e. assuming the value that disables delivering the gated clock signal further). The clock gating signal is configured to use the memorized phase as the phase of the gated clock signal in response to the EN signal thereafter going high again. In
[0099] The same principle can be used even if the integrated circuit comprises circuit elements that need a clock pulse window signal for defining the time window during which late-arriving changes in input data should be detected.
[0100] The clock gating circuit of
[0101] Any integrated circuit could comprise, and benefit from, a clock gating circuit of the kind described above. In particular, advantages are gained in an integrated circuit that comprises one or more double edge triggered flip-flops coupled to receive the output gated clock signal.
[0102] Advantageous features of a clock gating signal of the kind described above are recited in concise form in the following numbered clauses.
[0103] 1. A clock gating circuit for selectively enabling and disabling the delivery of a toggling clock signal to one or more clocked digital circuits, comprising a clock signal input for receiving an input clock signal, a gated clock signal output for delivering said toggling clock signal to said one or more clocked digital circuits in synchronism with edges of said input clock signal, and an enabling input for receiving an enabling signal, two values of which are commands to enable and disable delivering said toggling clock signal respectively, wherein the clock gating circuit is configured to freeze said toggling clock signal at its current value in response to said enabling signal assuming the value that disables delivering said toggling clock signal, and to respond to said enabling signal thereafter assuming the value that enables delivering said toggling clock signal by beginning the continued toggling of said toggling clock signal at the next edge of said input clock signal.
[0104] 2. A clock gating circuit according to numbered clause 1, comprising a phase memory configured to memorize the phase of said input clock signal in response to said enabling signal assuming the value that disables delivering said toggling clock signal, so that the clock gating circuit is configured to use the memorized phase as the phase of the toggling clock signal in response to said enabling signal thereafter assuming the value that enables delivering said toggling clock signal.
[0105] 3. A clock gating circuit according to numbered clause 2, wherein said phase memory comprises a first multiplexer with two inputs and an output, so that said input clock signal is coupled to one of said inputs as such and to the other of said inputs inverted.
[0106] 4. A clock gating circuit according to numbered clause 3, wherein said clock gating circuit is configured to clock said first multiplexer in rhythm with said input clock signal during those periods when said enabling signal has the value that disables delivering said toggling clock signal and to stop the clocking of said first multiplexer during those periods when said enabling signal has the value that enables delivering said toggling clock signal.
[0107] 5. A clock gating circuit according to any of the numbered clauses 2 to 4, comprising first and second latches, of which the first latch is configured to be enabled by said enabling signal and the second latch is configured to be enabled by an inverse of said enabling signal, and also comprising a second multiplexer configured to be clocked by said input clock signal and to selectively couple, as determined by said clocking input clock signal, either a non-inverted or an inverted output of said first latch to an input of said second latch, wherein an output of said second latch is configured to operate said phase memory.
[0108] 6. A clock gating circuit according to any of the numbered clauses 1 to 5, comprising a clock pulse window input for receiving an input clock pulse window signal, and a gated clock pulse window signal output for delivering a toggling clock pulse window signal to at least some of said one or more clocked digital circuits in synchronism with edges of said input clock window pulse signal, wherein the clock gating circuit is configured to freeze said toggling clock pulse window signal at its current value in response to said enabling signal assuming the value that disables delivering said toggling clock signal, and to respond to said enabling signal thereafter assuming the value that enables delivering said toggling clock signal by beginning the continued toggling of said toggling clock pulse window signal at the next edge of said input clock pulse window signal.
[0109] 7. An integrated circuit comprising a clock gating circuit according to any of the numbered clauses 1 to 6.
[0110] 8. An integrated circuit according to numbered clause 7, comprising one or more double edge triggered flip-flops coupled to receive said toggling clock signal.
[0111] 9. A set of library instructions for designing a part of an integrated circuit, said set of library instructions being stored on a machine-readable tangible medium and comprising one or more set of one or more machine-readable instructions that, when executed by a computer adapted for designing integrated circuits, are configured to effect the designing of a clock gating circuit according to any of numbered clauses 1 to 6.
[0112] A method embodiment of the invention is meant for temporarily storing a digital value obtained from an output of a preceding circuit element and for making such a temporarily stored digital value available for a subsequent circuit element at a controlled moment of time. The method comprises receiving said digital value for temporary storage, and receiving a triggering signal, a triggering edge of which defines an allowable time limit before which a digital value must appear at said data input to become available for said subsequent circuit element. The method comprises also using a sequence of first and second pulse-enabled subregister stages to temporarily store said digital value, and providing said triggering signal to said first pulse-enabled subregister stage delayed with respect to the triggering signal received by said second pulse-enabled subregister stage. The length of the delay is a fraction of a cycle of said triggering signal. Further the method comprises outputting a timing event observation signal as an indicator of said digital value at said data input having changed within a time window that begins at said allowable time limit and is shorter than one cycle of said triggering signal.
[0113] Changes and modifications are possible to the embodiments described so far without parting from the scope of the appended claims. For example,
[0114] Another class of variations is related to the number of stages inside the register circuit. For example, even if the register circuit has been consistently shown to comprise exactly two stages (the first and second pulse-enabled subregister stages), saying that the register circuit comprises a sequence of these stages does not exclude it from having additionally third, fourth, etc. subregister stages along the data path between the data input and the data output. Also, while the register circuits have been described as storing one-bit digital values, a register circuit according to the invention may temporarily store multi-bit digital values. This can be achieved for example by having parallel data paths between the data input and the data output, each data paths being configured to temporarily store one bit of the multibit value.
[0115] Another class of variations is related to the use of a margin adder circuit for making the time window longer at its beginning, at its end, or at both its beginning and its end. The margin adder circuit may be coupled to the timing event observation logic and configured to displace in time at least one edge of the time window with reference to a corresponding edge of the triggering signal.
[0116] An example of such a variation is shown schematically in
[0117]
[0118] Some additional circuitry could be used in the margin adder circuit to displace (to advance) also the left-hand edge of the time window, so that it would occur slightly before the rising edge in the CLK signal. An example of displacing both edges of the time window, for making the time window longer than without said displacing, is shown on the right in
[0119] The use of a margin adder circuit involves the advantage of compensating for arbitrary jitter in the timing of operation in individual circuit elements. If the timing window is defined strictly by the edges of a CLK (and CLKD) signal, it may happen that a timing event that actually occurred within the time window and should have been dealt with accordingly does not cause a timing event observation signal because the timing event observation logic actually operated according to a time window that was shorter than meant. The extra margin added by a margin adder circuit helps to ensure that a timing event observation signal is always generated when needed.
[0120] Handling multibit values may involve also time interleaving; in a way, a double edge triggered flip-flop may be considered as a register circuit for temporarily storing two-bit digital values, so that the first bit is temporarily stored and made available on the rising edge of the clock signal and the second bit is temporarily stored and made available on the falling edge of the clock signal.
[0121] Two or more register circuits for temporarily storing single-bit digital values can share some logic parts. For example, two or more register circuits of this kind may have common parts related to the detection of late-arriving changes, like common transition detectors.
[0122] In an integrated circuit that comprises a number of register circuits of the kind described above the TEO signals should be collected from all said register circuits and handled in an intelligent way. It may be sufficient just to know, for a plurality of register circuits, that a timing event was observed in one of them, without knowing exactly which one. A higher-level logic that is responsible for correct operation of one or more pipelines may take certain actions, which are known as such. For example, a certain delay may be introduced in the common clock signal so that circuit elements downstream from the one in which the timing event occurred have sufficient time to recover and ensure that they received the valid data.