The disclosure generally relates to voting circuits used in triple modular redundancy (TMR) circuits.
Programmable integrated circuits (ICs), such as field programmable gate arrays (FPGAs), are user configurable ICs capable of implementing various digital logic operations. FPGAs include programmable logic circuits such as configurable logic blocks (CLBs) arranged in rows and columns, input/output blocks (IOBs) surrounding the CLBs, and programmable interconnect lines that extend between the rows and columns of CLBs. The CLBs, IOBs, and interconnect lines are configured to implement a particular design according to configuration data stored in configuration memory cells of the programmable IC.
The versatility of programmable ICs is advantageous in applications, such as those requiring high availability, high reliability, or functional safety, where remote reconfiguration is preferred over physical replacement. However, with shrinkage of device geometry, atmospheric radiation can cause an error in a bi-stable circuit, which is known as a single event upset (SEU). When a single heavy ion strikes a silicon substrate, the ion loses energy through the creation of free electron hole pairs, resulting in a dense ionized track in the local region, and generating a current pulse that can upset the circuit. An SEU can also be caused by alpha particles. Alpha particles are generated when a neutron strikes a silicon substrate. The alpha particles travel through the substrate and generate charge clusters within a limited silicon volume. Alpha particles can be generated from high energy neutrons or from neutrons that have lost enough kinetic energy to be at thermal equilibrium with the operating environment. Alpha particles can also be generated through the decay of semiconductor packages that contain a small amount of radioactive contaminants.
In a programmable IC, an SEU may be of a configuration memory cell that is used to configure a programmable logic circuit. An SEU may additionally or alternatively induce errors by changing the value of a bi-stable circuit (e.g., a flip flop or latch) included in a user circuit design that is implemented by the programmable logic circuits. An error induced in configuration memory by an SEU may be referred to as a “configuration upset,” and an error induced in a bi-stable circuit of a user circuit design may be referred to as a logic upset.
Configuration and logic upsets induced by SEUs can be mitigated by implementing three redundant instances of a circuit along with a voting circuit to ensure that a correct value is output when a logic or configuration upset occurs in one of the redundant instances. A circuit having three redundant instances of a circuit and a voting circuit is said to implement “triple modular redundancy” (TMR).
A disclosed voting circuit includes a pull-up circuit connected to an output node and to a positive supply voltage and a pull-down circuit connected to the output node and to ground. The output node is coupled to receive true output of a first bi-stable circuit. The pull-up circuit is configured and arranged to pull the output node to the positive supply voltage in response to complementary output signals from second and third bi-stable circuits being in a first state, and the pull-down circuit is configured and arranged to pull the output node to ground in response to complementary output signals from second and third bi-stable circuits being in a second state that is opposite the first state.
A disclosed circuit arrangement includes first, second, and third voting circuits. The first voting circuit includes a pull-up circuit connected to a first output node and to a positive supply voltage and a pull-down circuit connected to the first output node and to ground. The pull-up circuit is configured and arranged to pull the first output node to the positive supply voltage in response to complementary output signals from second and third bi-stable circuits being in a first state. The pull-down circuit is configured and arranged to pull the first output node to ground in response to complementary output signals from second and third bi-stable circuits being in a second state that is opposite the first state. The second voting circuit includes a pull-up circuit connected to a second output node and to the positive supply voltage and a pull-down circuit connected to the second output node and to ground. The pull-up circuit of the second voting circuit configured and arranged to pull the second output node to the positive supply voltage in response to complementary output signals from the first and third bi-stable circuits being in a first state. The pull-down circuit of the second voting circuit is configured and arranged to pull the second output node to ground in response to complementary output signals from the first and third bi-stable circuits being in a second state that is opposite the first state. The third voting circuit includes a pull-up circuit connected to a third output node and to the positive supply voltage and a pull-down circuit connected to the third output node and to ground. The pull-up circuit of the third voting circuit is configured and arranged to pull the third output node to the positive supply voltage in response to complementary output signals from the first and second bi-stable circuits being in a first state. The pull-down circuit of the third voting circuit is configured and arranged to pull the third output node to ground in response to complementary output signals from the first and second bi-stable circuits being in a second state that is opposite the first state. The first, second, and third output nodes are coupled together.
A disclosed circuit arrangement includes a first bi-stable circuit, a second bi-stable circuit, a third bi-stable circuit, first and second transistors of a first type, and third and fourth transistors of a second type. The first transistor is serially connected to the second transistor, and the first transistor is serially coupled to a positive supply voltage. The third transistor is serially connected to the fourth transistor, the second transistor is serially connected to the third transistor at an output node, and the fourth transistor is serially coupled to ground. The output node is coupled to receive true output of the first bi-stable circuit. The gates of the first and third transistors are coupled to receive complementary output of the second bi-stable circuit, and the gates of the second and fourth transistors are coupled to receive complementary output of the third bi-stable circuit. An output signal line is connected to the output node, and a state of a signal on the output signal line is a state of a majority of true outputs of the first, second, and third bi-stable circuits.
Other features will be recognized from consideration of the Detailed Description and Claims, which follow.
Various aspects and features of the circuitry will become apparent upon review of the following detailed description and upon reference to the drawings in which:
In the following description, numerous specific details are set forth to describe specific examples presented herein. It should be apparent, however, to one skilled in the art, that one or more other examples and/or variations of these examples may be practiced without all the specific details given below. In other instances, well known features have not been described in detail so as not to obscure the description of the examples herein. For ease of illustration, the same reference numerals may be used in different diagrams to refer to the same elements or additional instances of the same element.
A voting circuit for TMR is commonly implemented according to the following Boolean equation:
(Q1 AND Q2) OR (Q1 AND Q3) OR (Q2 AND Q3)
where Q1 is the true output of a first bi-stable circuit, Q2 is the true output of a second bi-stable circuit, and Q3 is the true output of a third bi-stable circuit. The implemented circuit would typically consume a total of four gates (three 2-input AND gates and one 3-input OR gate). The four gates can be implemented on 18 transistors.
As set forth in the description that follows, a voting circuit can be implemented with 4 transistors instead of the 18 transistors found in prior approaches. In addition, the voting circuit may be implemented to self-correct one or all three latches that provide the signals to be voted on. A circuit design may have thousands of instances of a voting circuit. Thus, a significant savings in transistor count can be realized by using the disclosed voting circuit.
The disclosed voting circuits include a pull-up circuit and a pull-down circuit. The pull-up circuit is connected to an output node and to a positive supply voltage, and the pull-down circuit is connected to the output node and to ground. The output node is also coupled to receive true output of a first bi-stable circuit. In response to complementary output signals from second and third bi-stable circuits being in a first state, the pull-up circuit pulls the output node to the positive supply voltage. In response to complementary output signals from second and third bi-stable circuits being in a second state that is opposite the first state, the pull-down circuit pulls the output node to ground. In implementations in which the bi-stable circuits are latches, if the latch having output coupled to the output node is in error, the latch may be self-corrected with suitably sized transistors in the pull-up and pull-down circuits. Other disclosed implementations provide self-correction of all three latches.
In operating as a voting circuit, if Q1, Q2, and Q3 are all logic 1, the output node 126 is driven to logic 1 by Q1 and is also pulled up to the positive supply voltage. If Q1, Q2, and Q3 are all logic 0, the output node is driven to logic 0 by Q1 and is also pulled down to ground. If the bi-stable circuit 104 is corrupt and bi-stable circuits 106 and 108 are not corrupt, the output node will be pulled to the correct state by either the pull-up circuit 110 or pull-down circuit 112. If the bi-stable circuit driving either of Q2 or Q3 is flipped to the wrong state, the pull-up and pull-down paths are both turned off, and the output node is driven by Q1 (Q1 will match the uncorrupted one of Q2 or Q3).
The voting circuit 102 can be used with either latches or flip-flops as the bi-stable circuits 104, 106, and 108. In implementations in which the bi-stable circuits are latches, the voting circuit can self-correct the latch that is connected to the output node if the latch is corrupt. The self-correction may be implemented by suitably sizing the transistors 114, 116, 118, and 120 in the pull-up and pull-down circuits. Larger transistors provide more pull than would smaller transistors.
In an implementation in which the bi-stable circuits are flip-flops, the output node can be connected to the true output Q of the slave stage of the flip-flop. The voting circuit would not self-correct the flip-flop.
Those skilled in the art will recognize that an equivalent voting circuit may be realized by inverting the logic of voting circuit 102. That is, the output node 126 may be connected to the complementary output Q1_13 of the bi-stable circuit 104, and the gates of the transistors 114, 116, 118 and 120 may be connected to the true outputs Q2 and Q3 of the bi-stable circuits 106 and 108.
The voting circuit may be extended to accommodate more than three bi-stable circuits. However, the disclosed TMR voting circuit addresses SBEs, and the cost of resolving multi-bit errors with larger circuitry may be greater than the benefit.
The output node 208 of the first voting circuit 202 is coupled to receive the true output Q1 from latch 201, and the gates of the PMOS transistors 210 and 212 and NMOS transistors 214 and 216 are coupled to receive the complementary outputs Q2_B and Q3_B of latches 203 and 205. The output node 218 of the second voting circuit 204 is coupled to receive the true output Q2 from latch 203, and the gates of the PMOS transistors 220 and 222 and NMOS transistors 224 and 226 are coupled to receive the complementary outputs Q1_B and Q3_B of latches 201 and 205. The output node 228 of the third voting circuit 206 is coupled to receive the true output Q3 from latch 205, and the gates of the PMOS transistors 230 and 232 and NMOS transistors 234 and 236 are coupled to receive the complementary outputs Q1_B and Q2_B of latches 201 and 203. The output nodes are connected to the output signal line.
A transmission gate 302 is connected between the true output Q1 of latch 201 and the output node 126 of the voting circuit 102 in order to control self-correction of the latch 201 by the voting circuit. The control gates of the transmission gate 302 are coupled to the control circuit 304, which generates complementary signals ghigh and ghigh_B. The control circuit 304 may be state machine or microcontroller circuit that is on the same IC die or on an external IC die on which the voting circuit 102 is implemented. When ghigh is logic 1 and ghigh_B is logic 0, latches 201, 203, and 205 may be configured with different values.
Transmission gate 302 is connected between the true output of latch 201 and output node 208, transmission gate 402 is connected between the true output of latch 203 and the output node 218, and transmission gate 404 is connected between the true output of latch 206 and the output node 228.
The control gates of the transmission gate 302, transmission gate 402, and transmission gate 404 are coupled to the complementary signals of control circuit 304. When ghigh is logic 1 and ghigh_B is logic 0, latches 201, 203, and 205 may be configured with different values. For example, when the device having the latches and voting circuit is in configuration mode, the transmission gate controlled by ghigh is off and there is no interaction between outputs of the latches, which permits writing different values of the latches or the same value at different times. When the device having the latches and voting circuit is operating with TMR circuit, the transmission gate controlled by ghigh is on and the latches are forced to have the same value. If any of the latches is upset to a state that is different from the other two latches, the upset latch will be corrected to the proper state by the pull-up or pull-down controlled by the other two latches.
In some FPGA logic, each programmable tile includes a programmable interconnect element (INT) 511 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 logic. The programmable interconnect element INT 511 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 502 can include a configurable logic element CLE 512 that can be programmed to implement user logic, plus a single programmable interconnect element INT 511. A BRAM 503 can include a BRAM logic element (BRL) 513 in addition to one or more programmable interconnect elements. 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 five CLBs, but other numbers (e.g., four) can also be used. A DSP tile 506 can include a DSP logic element (DSPL) 514 in addition to an appropriate number of programmable interconnect elements. An 10B 504 can include, for example, two instances of an input/output logic element (IOL) 515 in addition to one instance of the programmable interconnect element INT 511. As will be clear to those of skill in the art, the actual I/O bond pads connected, for example, to the I/O logic element 515, are manufactured using metal layered above the various illustrated logic blocks, and typically are not confined to the area of the input/output logic element 515. The states of configuration memory cells (not shown) of the programmable IC specify the logic implemented by the CLEs 512, the interconnections of the INTs 511, and configurations of the IOLs 515.
In the pictured embodiment, a columnar area near the center of the die (shown shaded in
Some programmable ICs utilizing the architecture illustrated in
Note that
Though aspects and features may in some cases be described in individual figures, it will be appreciated that features from one figure can be combined with features of another figure even though the combination is not explicitly shown or explicitly described as a combination.
The disclosed circuitry is thought to be applicable to a variety of systems for TMR applications. Other aspects and features will be apparent to those skilled in the art from consideration of the specification. It is intended that the specification and drawings be considered as examples only, with a true scope of the invention being indicated by the following claims.
Number | Name | Date | Kind |
---|---|---|---|
6624654 | Trimberger | Sep 2003 | B1 |
6686763 | Yen | Feb 2004 | B1 |
7523371 | Mitra | Apr 2009 | B2 |
7760538 | Paak | Jul 2010 | B1 |
8519483 | Hart | Aug 2013 | B1 |
9191009 | Clark et al. | Nov 2015 | B1 |
20020074609 | Maruyama | Jun 2002 | A1 |
20060015786 | Mitra | Jan 2006 | A1 |
20060044035 | Bertin | Mar 2006 | A1 |
20080062746 | Loh | Mar 2008 | A1 |
20110157954 | Rimondi | Jun 2011 | A1 |
20120299175 | Tran | Nov 2012 | A1 |
20130009664 | Golke | Jan 2013 | A1 |
20130044543 | Kim | Feb 2013 | A1 |
20140266436 | Lee | Sep 2014 | A1 |
20160232968 | August | Aug 2016 | A1 |
Number | Date | Country |
---|---|---|
104901676 | Sep 2015 | CN |