Method of and circuit for providing temporal redundancy for a hardware circuit
A method and circuit for providing temporal redundancy for a hardware circuit implemented in an integrated circuit is disclosed. The method comprises implementing a comparison circuit for comparing values in the integrated circuit; coupling an input signal to the hardware circuit; detecting an output signal of the hardware circuit at a first time, wherein the output signal is based upon the input signal; holding the input signal until at least a second time; detecting the output signal of the hardware circuit at the second time; determining, by the comparison circuit, whether the output signal of the hardware circuit at the first time corresponds to the output signal of the hardware circuit at the second time; and generating an error signal based upon determining whether the output signal of the hardware circuit at the first time corresponds to the output signal of the hardware circuit at the second time.
Latest Xilinx, Inc. Patents:
One or more embodiments of the present invention relate generally to integrated circuits, and in particular, to a method of and circuit for providing temporal redundancy for a hardware circuit in an integrated circuit.
BACKGROUND OF THE INVENTIONIntegrated circuits are used to implement a variety of applications. However, certain applications, such as military, aerospace, and some communications applications, must be highly reliable. Therefore, redundant circuits are often employed. While duplicating a circuit in a device will enable error detection, triple module redundancy (TMR) is a redundancy technique for ensuring that a circuit functions even if one of the circuits is not operating properly, where corresponding values output by the remaining two circuits will ensure that the output of the circuit is correct.
However, implementing a circuit with redundancy can be expensive because it requires that a circuit be implemented multiple times. Temporal redundancy has been proposed in software for finding soft errors. That is, a given calculation is run twice, and the two runs are compared. Temporal redundancy in a software application requires no additional hardware, but does take twice the time. Implementing any type of redundancy in a hardware application according to conventional methods requires multiple implementations of a hardware circuit. While such redundancy of hardware may be acceptable for some systems, the additional area required for redundant circuits may significantly reduce the available space on the integrated circuit for implementing circuits.
SUMMARY OF THE INVENTIONA method of providing temporal redundancy for a hardware circuit implemented in an integrated circuit is disclosed. The method comprises implementing a comparison circuit for comparing values in the integrated circuit; coupling an input signal to the hardware circuit; detecting an output signal of the hardware circuit at a first time, wherein the output signal is based upon the input signal; holding the input signal until at least a second time; detecting the output signal of the hardware circuit at the second time; determining, by the comparison circuit, whether the output signal of the hardware circuit at the first time corresponds to the output signal of the hardware circuit at the second time; and generating an error signal based upon determining whether the output signal of the hardware circuit at the first time corresponds to the output signal of the hardware circuit at the second time.
Detecting the output signal of the hardware circuit at the first time and detecting the output signal of the hardware circuit at the second time according to the method may comprises detecting the output signal based upon first and second clock pulses of a first clock signal, or detecting the output signal based upon a clock pulse of a first clock signal by detecting the output signal of the hardware circuit based upon a clock pulse of a first clock signal and detecting the output signal of the hardware circuit at the second time by detecting the output signal based upon a clock pulse of a second clock signal.
Detecting the output signal of the hardware circuit at the first time and detecting the output signal of the hardware circuit at the second time may comprise detecting values stored in a plurality of registers coupled in series to receive the output signal of the hardware circuit, or detecting values stored in parallel registers coupled to receive the output signal of the hardware circuit. The parallel registers may comprise three registers, and the method may further comprise holding the input signal until at least a third time and detecting an output signal of the hardware circuit at the third time to provide an output value based upon a majority rule.
According to an alternate embodiment, a method of providing temporal redundancy for a hardware circuit implemented in an integrated circuit comprises implementing a comparison circuit for comparing values in the integrated circuit; coupling an input signal to a state machine implemented in hardware in the integrated circuit; detecting a state value of the state machine at a first time based upon the input signal coupled to the state machine; holding the input signal until at least a second time; detecting the state value at the second time; determining, by the comparison circuit, whether the state value of the state machine at the first time corresponds to the state value of the state machine at the second time; and generating an error signal based upon determining whether the state value of the state machine at the first time corresponds to the state value of the state machine at the second time.
Detecting the state value of the state machine at the first time and at the second time according to the alternate embodiment of the invention may comprise detecting the state value based upon first and second clock pulses of a clock signal. Alternatively, detecting the state value of the state machine at the first time comprises detecting the state value based upon a first clock pulse of a first clock signal and detecting the state value of the state machine at the second time comprises detecting the state value based upon a second clock pulse of a second clock signal.
Further, detecting the state value of the state machine at the first time and detecting the state value of the state machine at the second time may comprise detecting values stored in a series of registers coupled to receive the state value of the state machine. Alternatively, detecting the state value of the state machine at the first time and detecting the state value of the state machine at the second time may comprise detecting values stored in parallel registers coupled to receive the state value of the state machine. The state value of the state machine at the first time may be compared to the state value of the state machine at the second time. The method may further comprise holding the input signal until a third time and determining the state of the state machine at the third time to provide an output value based upon a majority rule of the state values stored in the parallel registers at the first, second and third times.
A circuit for providing temporal redundancy for a hardware circuit implemented in an integrated circuit is also disclosed. The circuit comprises an input of the hardware circuit coupled to receive an input signal; a first register coupled to receive a signal generated by the hardware circuit at a first time based upon the input signal; a second register coupled to receive the signal generated by the hardware circuit at a second time, wherein the input signal coupled to the input of the hardware circuit at the first time is held at least until the second time; and a comparison circuit coupled to the first register and the second register, wherein the comparison circuit generates an error signal based upon a comparison of the signal generated by the hardware circuit at the first time and the signal generated by the hardware circuit at the second time.
The first register and the second register may be coupled in series or in parallel. The circuit may further comprise a third register coupled to receive the signal generated by the hardware circuit based upon the input at a third time, wherein the comparison circuit may comprise a voter circuit coupled to the first, second and third registers and may generate a majority vote output based upon values in the first, second and third registers. The hardware circuit may comprise a state machine and the signal generated by the hardware circuit is a state output of the state machine, while the integrated circuit may comprise a device having programmable logic and the hardware circuit may be implemented in programmable logic of the device.
Turning first to
The device of
In some FPGAs, each programmable tile includes a programmable interconnect element (INT) 111 having standardized connections to and from a corresponding interconnect element in each adjacent tile. Therefore, the programmable interconnect elements taken together implement the programmable interconnect structure for the illustrated FPGA. The programmable interconnect element 111 also includes the connections to and from the programmable logic element within the same tile, as shown by the examples included at the top of
For example, a CLB 102 may include a configurable logic element (CLE) 112 that may be programmed to implement user logic plus a single programmable interconnect element 111. A BRAM 103 may include a BRAM logic element (BRL) 113 in addition to one or more programmable interconnect elements. The BRAM comprises dedicated memory separate from the distributed RAM of a configuration logic block. Typically, the number of interconnect elements included in a tile depends on the height of the tile. In the pictured embodiment, a BRAM tile has the same height as four CLBs, but other numbers (e.g., five) may also be used. A DSP tile 106 may include a DSP logic element (DSPL) 114 in addition to an appropriate number of programmable interconnect elements. An 10B 104 may include, for example, two instances of an input/output logic element (IOL) 115 in addition to one instance of the programmable interconnect element 111. The location of connections of the device is controlled by configuration data bits of a configuration bitstream provided to the device for that purpose. The programmable interconnects, in response to bits of a configuration bitstream, enable connections comprising interconnect lines to be used to couple the various signals to the circuits implemented in programmable logic, or other circuits such as BRAMs or the processor.
In the pictured embodiment, a columnar area near the center of the die (shown crosshatched in
Note that
Turning now to
In the pictured embodiment, each memory element 202A-202D may be programmed to function as a synchronous or asynchronous flip-flop or latch. The selection between synchronous and asynchronous functionality is made for all four memory elements in a slice by programming Sync/Asynch selection circuit 203. When a memory element is programmed so that the S/R (set/reset) input signal provides a set function, the REV input terminal provides the reset function. When the memory element is programmed so that the S/R input signal provides a reset function, the REV input terminal provides the set function. Memory elements 202A-202D are clocked by a clock signal CK, which may be provided by a global clock network or by the interconnect structure, for example. Such programmable memory elements are well known in the art of FPGA design. Each memory element 202A-202D provides a registered output signal AQ-DQ to the interconnect structure. Because each LUT 201A-201D provides two output signals, O5 and O6, the LUT may be configured to function as two 5-input LUTs with five shared input signals (IN1-IN5), or as one 6-input LUT having input signals IN1-IN6.
In the embodiment of
Turning now to
Multiplexers 340 and 341 both drive data input terminals of multiplexer 350, which is controlled by input signal IN6 and its inverted counterpart (provided by inverter 366) to select either of the two signals from multiplexers 340-341 to drive output terminal O6. Thus, output signal O6 can either provide any function of up to five input signals IN1-IN5 (when multiplexer 350 selects the output of multiplexer 341, i.e., when signal IN6 is high), or any function of up to six input signals IN1-IN6.
In the pictured embodiment, multiplexer 350 is implemented as two three-state buffers, where one buffer is driving and the other buffer is disabled at all times. The first buffer includes transistors 351-354, and the second buffer includes transistors 355-358, coupled together as shown in
Turning now to
Referring specifically to
Accordingly, there are 4 nets associated with a Path 1 which extends from register 404 to register 412 by way of LUT 406, LUT 408 and LUT 410. In particular, a first net (Net1) is defined between register 404 and the LUT 406. A second net (Net 2) is defined between LUT 406 and LUT 408, and includes one interconnect point 415 connecting two interconnect segments. The interconnect point may include a programmable interconnect point (PIP), which may be a programmable multiplexing network. A third net (Net3) extending from the LUT 408 to the LUT 410 includes two interconnect points 416 and 417 connecting interconnect segments. Finally, a fourth net is defined between the LUT 410 and the register 412.
A second path, Path 2, between the register 404 and the register 412 is shown extending through LUTs 418 and 419 by way of an interconnect point 420, and back to LUT 410. While Path 1 and Path 2 have the same number of LUTs between the same registers, they extend through different LUTs and interconnect points. Accordingly, Path 1 and Path 2 may have different delays. A third path, Path 3, extends from register 404, through LUTs 418 and 419 to a register 421, the output of which is coupled to an I/O port 422. Finally, the output of a register 424 is coupled by way of LUTs 426-430 to an I/O port 432, as shown by Path 4. A feedback loop 434 is also shown, which would be considered a separate path, designated as Path 5. The interconnect points provide input flexibility between a general interconnect structure of the integrated circuit device and configurable elements, such as the LUTs in
The circuits and methods of the present invention may be implemented according to the device of
Turning now to
A particular type of hardware circuit may be a state machine implemented using hardware elements. According to the embodiment of
Turning now to
Turning now to
Turning now to
Turning now to
Turning now to
According to the alternate embodiment of
Turning now to
Turning now to
It can therefore be appreciated that the new and novel method of and circuit for providing temporal redundancy for a hardware circuit implemented in an integrated circuit has been described. It will be appreciated by those skilled in the art that numerous alternatives and equivalents will be seen to exist which incorporate the disclosed invention. As a result, the invention is not to be limited by the foregoing embodiments, but only by the following claims.
Claims
1. A method of providing temporal redundancy for a hardware circuit implemented in an integrated circuit, the method comprising:
- implementing a comparison circuit for comparing values in the integrated circuit;
- coupling an input signal to a state machine;
- detecting a state value at a first time and at a second time;
- detecting an output signal of the state machine at the second time, wherein the output signal is based upon the input signal;
- holding the input signal until at least the second time;
- detecting the output signal of the state machine at a third time;
- determining, by the comparison circuit, whether the output signal of the state machine at the second time corresponds to the output signal of the state machine at the third time; and
- determining, by the comparison circuit, whether the state value of the state machine at the first time corresponds to the state value of the state machine at the second time.
2. The method of claim 1, wherein detecting the output signal of the state machine at the second time comprises detecting the output signal based upon a clock pulse of a first clock signal and detecting the output signal of the state machine at the third time comprises detecting the output signal based upon a clock pulse of a second clock signal.
3. The method of claim 1, further comprising holding the input signal until at least the third time and detecting the state value of the state machine at a third time to provide a feedback state value based upon a majority rule.
4. The method of claim 1, wherein detecting an output signal of the state machine at the second time and detecting the output signal of the state machine at the third time comprises detecting values stored in parallel registers coupled to receive the output signal of the state machine.
5. The method of claim 4, wherein the parallel registers comprise three registers, the method further comprising holding the input signal until at least the third time and detecting an output signal of the state machine at the third time to provide an output value based upon a majority rule.
6. A method of providing temporal redundancy for a hardware circuit implemented in an integrated circuit, the method comprising:
- implementing a comparison circuit for comparing values in the integrated circuit;
- coupling an input signal to a state machine implemented in hardware in the integrated circuit;
- detecting a state value of the state machine at a first time based upon the input signal coupled to the state machine;
- holding the input signal until at least a second time;
- detecting the state value at the second time;
- detecting an output value of the state machine at the second time;
- determining, by the comparison circuit, whether the state value of the state machine at the first time corresponds to the state value of the state machine at the second time and whether the output value of the state machine at the second time corresponds to the output value of the state machine at a third time; and
- generating an error signal based upon determining whether the state value of the state machine at the first time corresponds to the state value of the state machine at the second time and whether the output value of the state machine at the second time corresponds to the output value of the state machine at the third time.
7. The method of claim 6, wherein detecting the state value of the state machine at the first time and at the second time comprises detecting the state value based upon first and second clock pulses of a clock signal.
8. The method of claim 6, wherein detecting the state value of the state machine at the first time comprises detecting the state value based upon a first clock pulse of a first clock signal and detecting the state value of the state machine at the second time comprises detecting the state value based upon a second clock pulse of a second clock signal.
9. The method of claim 6, wherein detecting the state value of the state machine at the first time and detecting the state value of the state machine at the second time comprises detecting values stored in a series of registers coupled to receive the state value of the state machine.
10. The method of claim 9, further comprising comparing the state value of the state machine at the first time and to the state value of the state machine at the second time.
11. The method of claim 6, wherein detecting the state value of the state machine at the first time and detecting the state value of the state machine at the second time comprises detecting values stored in parallel registers coupled to receive the state value of the state machine.
12. The method of claim 11, further comprising determining the state value of the state machine at the third time to provide an output value based upon a majority rule of the state values stored in the parallel registers at the first, second and third times.
13. A circuit for providing temporal redundancy for a hardware circuit implemented in an integrated circuit, the method comprising:
- an input of a state machine coupled to receive an input signal;
- a first register coupled to receive a state value generated by the state machine at a first time based upon the input signal;
- a second register coupled to receive the state value generated by the state machine at a second time, wherein the input signal coupled to the input of the state machine at the first time is held at least until the second time;
- a third register coupled to receive an output signal of the state machine;
- a comparison circuit coupled to the first register, the second register, and the third register; and
- a fourth register coupled to an output of the comparison circuit, wherein the fourth register generates an error signal based upon a comparison of the state value generated by the state machine at the first time and the state value generated by the state machine at the second time and a comparison of the output of the state machine generated at the second time and the output of the state machine generated at a third time.
14. The circuit of claim 13, wherein first register and the second register are coupled in series.
15. The circuit of claim 13, wherein first register and the second register are coupled in parallel.
16. The circuit of claim 13, wherein integrated circuit comprises a device having programmable logic and the state machine is implemented in programmable logic of the device.
5124588 | June 23, 1992 | Baltus et al. |
6453431 | September 17, 2002 | Bernstein et al. |
7506230 | March 17, 2009 | Chu et al. |
20110022909 | January 27, 2011 | Wang et al. |
- U.S. Appl. No. 11/732,782, filed Apr. 4, 2007, Bridgford, Brendan K., XILINX, Inc., 2100 Logic Drive, San Jose, CA.
Type: Grant
Filed: Oct 12, 2009
Date of Patent: Oct 23, 2012
Assignee: Xilinx, Inc. (San Jose, CA)
Inventor: Stephen M. Trimberger (San Jose, CA)
Primary Examiner: Scott Baderman
Assistant Examiner: Jason Bryan
Attorney: John J. King
Application Number: 12/577,681
International Classification: G06F 11/00 (20060101);