(57)【特許請求の範囲】
【請求項１】
三重化された論理回路と、
前記三重化された論理回路の２個ずつの出力を比較する３個の比較器と、
前記三重化された論理回路の３個の出力の多数決をとる１個の多数決回路と、
前記三重化された論理回路および前記３個の比較器の故障判定を行う１個の故障判定回路と、
を有し、
前記故障判定回路は、故障判定論理回路と、前記故障判定論理回路の出力を保持する故障判定レジスタと、を有し、
前記故障判定論理回路は、前記比較器の３個の出力と、前記故障判定レジスタの保持している値との論理をとる、半導体装置。
【請求項２】
請求項１に記載の半導体装置において、
前記半導体装置は、ＦＰＧＡである、半導体装置。
【請求項３】
請求項２に記載の半導体装置において、
前記半導体装置は、コンフィグレーションＲＡＭで論理が決まる前記ＦＰＧＡである、半導体装置。
【請求項４】
請求項３に記載の半導体装置において、
前記半導体装置は、前記コンフィグレーションＲＡＭを一定の間隔で巡回してエラー修正を行うためのスクラビング回路を有する、半導体装置。
【請求項５】
請求項４に記載の半導体装置において、
前記スクラビング回路の動作によってリセット信号が生成され、前記リセット信号によって前記故障判定レジスタの保持している値がリセットされる、半導体装置。
【請求項６】
請求項１に記載の半導体装置において、
前記比較器の出力に基づく故障状況は、前記論理回路および前記比較器の故障なし、前記論理回路の故障、前記比較器の故障、および、前記論理回路および前記比較器の多重故障のいずれかである、半導体装置。
【請求項７】
請求項６に記載の半導体装置において、
前記多重故障は、
前記三重化された論理回路のうちの第１の論理回路が故障し、さらに前記第１の論理回路とは異なる第２の論理回路が故障する場合と、
前記３個の比較器のうちの第１の比較器が故障し、さらに前記三重化された論理回路のうちの第１の論理回路が故障する場合と、
前記三重化された論理回路のうちの第１の論理回路が故障し、さらに前記３個の比較器のうちの第１の比較器が故障する場合と、
前記３個の比較器のうちの第１の比較器が故障し、さらに前記第１の比較器とは異なる第２の比較器が故障する場合と、
を含む、半導体装置。
【請求項８】
請求項１に記載の半導体装置において、
前記故障判定回路の状態遷移は、
前記論理回路および前記比較器の故障なし状態から前記論理回路または前記比較器の故障状態への遷移と、
前記論理回路および前記比較器の故障なし状態から前記論理回路および前記比較器の多重故障状態への遷移と、
前記論理回路または前記比較器の故障状態から前記論理回路および前記比較器の多重故障状態への遷移と、
前記論理回路または前記比較器の故障状態から前記論理回路および前記比較器の故障なし状態への遷移と、
前記論理回路および前記比較器の多重故障状態から前記論理回路および前記比較器の故障なし状態への遷移と、
を含む、半導体装置。
【請求項９】
請求項１に記載の半導体装置において、
前記比較器および前記故障判定論理回路は、ルックアップテーブルで構成されている、半導体装置。
【請求項１０】
請求項１に記載の半導体装置において、
前記論理回路は、プロセッサである、半導体装置。
【請求項１１】
請求項１に記載の半導体装置において、
前記故障判定回路は、二重化または三重化されている、半導体装置。
【請求項１２】
多重化された論理回路と、
前記多重化された論理回路の複数個ずつの出力を比較する複数個の比較器と、
前記多重化された論理回路の複数個の出力の多数決をとる１個の多数決回路と、
前記多重化された論理回路および前記複数個の比較器の故障判定を行う１個の故障判定回路と、
を有し、
前記故障判定回路は、故障判定論理回路と、前記故障判定論理回路の出力を保持する故障判定レジスタと、を有し、
前記故障判定論理回路は、前記比較器の複数個の出力と、前記故障判定レジスタの保持している値との論理をとる、半導体装置。
【請求項１３】
請求項１２に記載の半導体装置において、
前記半導体装置は、ＦＰＧＡである、半導体装置。
【請求項１４】
請求項１３に記載の半導体装置において、
前記半導体装置は、コンフィグレーションＲＡＭで論理が決まる前記ＦＰＧＡである、半導体装置。
【請求項１５】
請求項１４に記載の半導体装置において、
前記半導体装置は、前記コンフィグレーションＲＡＭを一定の間隔で巡回してエラー修正を行うためのスクラビング回路を有する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、特に、ＦＰＧＡ（Field Programmable Gate Array）の高信頼性を実現するために三重化回路を有する半導体装置に関する。
【背景技術】
【０００２】
ＦＰＧＡは、デジタル回路の回路設計を電気的に変更可能なデバイスとして知られている。ＦＰＧＡは、多数の論理ゲートを有し、論理ゲート間の論理関係と接続関係とを記述したコンフィグレーションデータを、ＦＰＧＡが備えるコンフィグレーションＲＡＭに書き込むことで、所定の論理回路として機能する。よって、コンフィグレーションデータを変更することで、ハードウェアを変更することなく容易に回路設計を変更できるため、電子機器を始として様々な製品で利用されている。
【０００３】
例えば、非特許文献１で述べられているように、ＦＰＧＡの応用分野が広がっているが、高信頼性が要求される用途では、コンフィグレーションＲＡＭのソフトエラーが問題となっている。その対策の１つとして、Triple Module Redundancy  （ＴＭＲ：三重化）が用いられている。
【０００４】
また、特許文献１には、三重化回路の故障判定を行う回路が開示されている。例えば、図１に構成が示されている第１実施例で、図２の比較回路で三重化されたＣＰＵの出力を比較し、その比較結果を図３のエラー判別回路により論理をとって判定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許第３２２９０７０号公報
【非特許文献】
【０００６】
【非特許文献１】H. Asadi and M. B. Tahoori, “Analytical Techniques for Soft Error Rate Modeling and Mitigation of FPGA-Based Designs,” IEEE Trans. VLSI Systems, Vol. 15, No. 12, 2007, pp. 1320-1331.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
前記特許文献１に開示されている技術では、故障の有無と多重故障を判定するが、ＣＰＵの１つに故障が発生した後、二重化動作を続けた場合に、さらに別なＣＰＵに故障が発生しても気がつかない恐れがあり、安全性が低い。
【０００８】
本発明の代表的な目的は、多重故障を検出して安全性を向上する半導体装置を提供するものである。
【０００９】
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、下記の通りである。
【００１１】
代表的な半導体装置は、三重化された論理回路と、前記三重化された論理回路の２個ずつの出力を比較する３個の比較器と、前記三重化された論理回路の３個の出力の多数決をとる１個の多数決回路と、前記三重化された論理回路および前記３個の比較器の故障判定を行う１個の故障判定回路と、を有する。前記故障判定回路は、故障判定論理回路と、前記故障判定論理回路の出力を保持する故障判定レジスタと、を有する。前記故障判定論理回路は、前記比較器の３個の出力と、前記故障判定レジスタの保持している値との論理をとる。
【発明の効果】
【００１２】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、以下の通りである。
【００１３】
代表的な効果は、多重故障を検出して安全性を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施の形態における半導体装置の構成の一例を示すブロック図である。
【図２】図１の半導体装置において、多数決回路の構成の一例を示す回路図である。
【図３】図１の半導体装置において、比較器の構成の一例を示す回路図である。
【図４】図１の半導体装置において、比較器の出力に対して可能性が高い故障状況の一例を示す説明図である。
【図５】図１の半導体装置において、故障判定回路の状態遷移の一例を示す説明図である。
【図６】図１の半導体装置において、故障判定回路の構成の一例を示す回路図である。
【図７】図１の半導体装置において、故障判定回路の真理値表の一例を示す説明図である。
【図８】図６の故障判定回路において、判定論理回路の構成の一例を示す回路図である。
【図９】図１の半導体装置において、故障判定回路の動作の一例（論理回路が故障し、さらに別の論理回路も故障した場合）を示すタイミングチャートである。
【図１０】図１の半導体装置において、故障判定回路の動作の一例（比較器が故障し、さらに論理回路も故障した場合）を示すタイミングチャートである。
【図１１】図１の半導体装置において、故障判定回路の動作の一例（論理回路が故障し、さらに比較器も故障した場合）を示すタイミングチャートである。
【図１２】図１の半導体装置において、故障判定回路の動作の一例（比較器が故障し、さらに別の比較器も故障した場合）を示すタイミングチャートである。
【図１３】本発明の一実施の形態における半導体装置を適用したＦＰＧＡの構成の一例を示すブロック図である。
【図１４】図１３のＦＰＧＡにおいて、故障判定回路とスクラビング回路との時間的関係の一例を示す説明図である。
【発明を実施するための形態】
【００１５】
以下の実施の形態においては、便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１６】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１７】
［実施の形態の概要］
まず、実施の形態の概要について説明する。本実施の形態の概要では、一例として、括弧内に実施の形態の対応する構成要素の符号等を付して説明する。
【００１８】
実施の形態の代表的な半導体装置は、三重化された論理回路（１０，１１，１２）と、前記三重化された論理回路の２個ずつの出力を比較する３個の比較器（２０，２１，２２）と、前記三重化された論理回路の３個の出力の多数決をとる１個の多数決回路（３０）と、前記三重化された論理回路および前記３個の比較器の故障判定を行う１個の故障判定回路（４０）と、を有する。前記故障判定回路は、故障判定論理回路（４１）と、前記故障判定論理回路の出力を保持する故障判定レジスタ（４２）と、を有する。前記故障判定論理回路は、前記比較器の３個の出力と、前記故障判定レジスタの保持している値との論理をとる。
【００１９】
以下、上述した実施の形態の概要に基づいた一実施の形態を図面に基づいて詳細に説明する。なお、一実施の形態を説明するための全図において、同一の部材には原則として同一の符号または関連する符号を付し、その繰り返しの説明は省略する。また、以下の一実施の形態では、特に必要なとき以外は同一または同様な部分の説明を原則として繰り返さない。
【００２０】
［一実施の形態］
本実施の形態における半導体装置について、図１〜図１４を用いて説明する。
【００２１】
＜半導体装置＞
まず、図１を用いて、本実施の形態における半導体装置の構成について説明する。図１は、この半導体装置の構成の一例を示すブロック図である。
【００２２】
本実施の形態における半導体装置は、３個の論理回路１０，１１，１２と、３個の比較器２０，２１，２２と、１個の多数決回路３０と、１個の故障判定回路４０とを有する。
【００２３】
論理回路１０，１１，１２は、三重化された論理回路である。各論理回路１０，１１，１２は、例えば、プロセッサなどからなり、同じ構成で、故障が無ければ、同じ動作を行い、同じ値を出力する回路である。各論理回路１０，１１，１２の出力は、それぞれＡ，Ｂ，Ｃとする。論理回路１０，１１，１２の各出力Ａ，Ｂ，Ｃは、所定のバス幅とする（太線で図示）。
【００２４】
比較器２０，２１，２２は、論理回路１０，１１，１２に接続され、論理回路１０，１１，１２の２個ずつの出力を比較する比較器である。比較器２０は、論理回路１０の出力Ａと論理回路１１の出力Ｂとを入力に持ち、この出力Ａと出力Ｂとを比較する比較器である。この比較器２０の比較結果の出力は、Ｄ０とする。比較器２１は、論理回路１１の出力Ｂと論理回路１２の出力Ｃとを入力に持ち、この出力Ｂと出力Ｃとを比較する比較器である。この比較器２１の比較結果の出力は、Ｄ１とする。比較器２２は、論理回路１２の出力Ｃと論理回路１０の出力Ａとを入力に持ち、この出力Ｃと出力Ａとを比較する比較器である。この比較器２２の比較結果の出力は、Ｄ２とする。
【００２５】
多数決回路３０は、論理回路１０，１１，１２に接続され、論理回路１０，１１，１２の３個の出力の多数決をとる回路である。この多数決回路３０は、論理回路１０，１１，１２の出力Ａ，Ｂ，Ｃを入力に持ち、この出力Ａ，Ｂ，Ｃの多数決をとる回路である。この多数決回路３０の多数決結果の出力は、ＯＵＴとする。
【００２６】
故障判定回路４０は、３個の比較器２０，２１，２２に接続され、論理回路１０，１１，１２および比較器２０，２１，２２の故障判定を行う回路であり、故障判定論理回路４１と、故障判定レジスタ４２とを有する。故障判定論理回路４１は、比較器２０，２１，２２の３個の出力Ｄ０，Ｄ１，Ｄ２と、故障判定レジスタ４２の保持している値（Ｆ）との論理をとり、故障判定を行う回路である。この故障判定論理回路４１の故障判定結果の出力は、Ｅとする。故障判定レジスタ４２は、故障判定論理回路４１の出力Ｅを入力に持ち、この出力Ｅを保持するレジスタである。この故障判定レジスタ４２の保持する出力は、Ｆとする。この故障判定レジスタ４２の出力Ｆは、故障判定論理回路４１の１つの入力となる。また、この故障判定レジスタ４２には、リセット信号ＲＳＴが入力される。
【００２７】
＜多数決回路＞
図２を用いて、前述した多数決回路３０の構成について説明する。図２は、この多数決回路３０の構成の一例を示す回路図である。図２では、所定のバス幅のうちの１ビット分を示しており、この図２の構成をバス幅に応じた個数分用いる。
【００２８】
多数決回路３０は、論理回路１０の出力Ａ、論理回路１１の出力Ｂ、論理回路１２の出力Ｃを入力とし、この出力Ａ，Ｂ，Ｃの多数決をビットごとに行う回路である。この多数決回路３０では、３個の出力Ａ，Ｂ，Ｃの多数決を行うことにより、出力Ａ，Ｂ，Ｃのうちの２つが正しい値であれば、出力ＯＵＴは正しい値となる。
【００２９】
図２では、所定のバス幅のうちの１ビット分（０ビット目）を示しており、論理回路１０の出力Ａ０、論理回路１１の出力Ｂ０、論理回路１２の出力Ｃ０の多数決をとり、この多数決結果を出力ＯＵＴ０する構成である。この多数決回路３０の１ビット分は、３個の２入力のＮＡＮＤ（論理積の否定）ゲート１０１，１０２，１０３と、１個の３入力のＮＡＮＤゲート１０４とからなる。ＮＡＮＤゲート１０１は、Ａ０とＢ０とを入力として、結果を出力する。ＮＡＮＤゲート１０２は、Ｂ０とＣ０とを入力として、結果を出力する。ＮＡＮＤゲート１０３は、Ｃ０とＡ０とを入力として、結果を出力する。ＮＡＮＤゲート１０４は、ＮＡＮＤゲート１０１の出力とＮＡＮＤゲート１０２の出力とＮＡＮＤゲート１０３の出力とを入力とし、結果のＯＵＴ０を出力する。
【００３０】
＜比較器＞
図３および図４を用いて、前述した比較器２０，２１，２２の構成、さらに、比較器２０，２１，２２の出力に対して可能性が高い故障状況について説明する。図３は、この比較器２０，２１，２２の構成の一例を示す回路図である。図３では、比較器２０を例として、論理回路１０，１１からの出力Ａ，Ｂのバス幅が８ビットの場合を示している。
【００３１】
比較器２０は、論理回路１０の出力Ａと論理回路１１の出力Ｂとを入力に持ち、この出力Ａと出力Ｂとを比較し、この比較結果を出力Ｄ０する構成である。この比較器２０は、ビットごとに排他的論理和をとり、それらの論理和をとる構成であり、これにより、ＡとＢが１ビットでも異なると、出力Ｄ０が１となる。
【００３２】
図３では、２個の２入力のＸＮＯＲ（排他的論理和の否定）ゲート２０１，２０２と１個の２入力のＮＡＮＤゲート２０３とからなる第１ブロック（破線で図示）が４セットと、２個の２入力のＮＯＲ（論理和の否定）ゲート２１１，２１２と１個の２入力のＮＡＮＤゲート２１３とからなる第２ブロック（破線で図示）が１セットとからなる。例えば、ＸＮＯＲゲート２０１，２０２とＮＡＮＤゲート２０３とからなる１つの第１ブロックでは、ＸＮＯＲゲート２０１はＡ０とＢ０とを入力とし、ＸＮＯＲゲート２０２はＡ１とＢ１とを入力とし、各結果を出力する。そして、ＮＡＮＤゲート２０３は、ＸＮＯＲゲート２０１の出力とＸＮＯＲゲート２０２の出力とを入力として、結果を出力する。他の第１ブロック（Ａ２，Ｂ２，Ａ３，Ｂ３、Ａ４，Ｂ４，Ａ５，Ｂ５、Ａ６，Ｂ６，Ａ７，Ｂ７）においても同様である。
【００３３】
さらに、ＮＯＲゲート２１１，２１２とＮＡＮＤゲート２１３とからなる第２ブロックでは、ＮＯＲゲート２１１はＡ０，Ｂ０，Ａ１，Ｂ１の第１ブロックの出力とＡ２，Ｂ２，Ａ３，Ｂ３の第１ブロックの出力とを入力とし、ＮＯＲゲート２１２はＡ４，Ｂ４，Ａ５，Ｂ５の第１ブロックの出力とＡ６，Ｂ６，Ａ７，Ｂ７の第１ブロックの出力とを入力として、各結果を出力する。そして、ＮＡＮＤゲート２１３は、ＮＯＲゲート２１１の出力とＮＯＲゲート２１２の出力とを入力として、結果のＤ０を出力する。
【００３４】
比較器２０は、図３において、論理ゲートで描いているが、第１ブロック、第２ブロックの破線の箱ごとに、４入力のＬＵＴ（Look Up Table）で実現できる。このＬＵＴは、４入力における各入力値に対する１出力における出力値の関係をテーブル形式にしたものである。
【００３５】
以上の図３を用いて説明した比較器２０の構成などは、他の比較器２１，２２においても同様である。
【００３６】
図４は、比較器２０，２１，２２の出力Ｄ０，Ｄ１，Ｄ２に対して可能性が高い故障状況の一例を示す説明図である。
【００３７】
図４において、Ｄは、比較器２０，２１，２２の出力Ｄ０，Ｄ１，Ｄ２の各１ビットの値を並べた３ビットの値を示している。
【００３８】
（１）論理回路１０，１１，１２および比較器２０，２１，２２に故障が何もなければ、Ｄは３ビットとも０となる。すなわち、図４において、０００＝故障なし、の関係である。
【００３９】
（２）論理回路１０，１１，１２および比較器２０，２１，２２に故障があっても、それが発現しないようなデータパターンになれば、Ｄは３ビットとも０となる。すなわち、図４において、０００＝故障なし、の関係である。
【００４０】
（３）論理回路１０，１１，１２が１個故障して誤った値を出力すると、他の２つの論理回路の出力との比較が不一致となるので、Ｄは２ビットが１となる。すなわち、図４において、０１１＝論理回路１０の故障、１１０＝論理回路１１の故障、１０１＝論理回路１２の故障、の関係である。
【００４１】
（４）比較器２０，２１，２２が、入力が一致でも１を出力するような故障となると、その比較器の出力だけが１となる。すなわち、図４において、００１＝比較器２０の故障、０１０＝比較器２１の故障、１００＝比較器２２の故障、の関係である。
【００４２】
（５）論理回路１０，１１，１２が２個故障すると、たまたま同じ値をとるような故障でなければ、論理回路の出力がばらばらな値となり、比較器２０，２１，２２がいずれも１を出力する。すなわち、図４において、１１１＝多重故障、の関係である。
【００４３】
なお、図４以外の故障状況も考えられる。例えば、比較器２０，２１，２２に入力が不一致でも０を出力するような故障があり、論理回路１０，１１，１２が１個故障すると、Ｄは１ビットだけが１となる。また、２個の比較器２０，２１，２２が、入力が一致でも１を出力するような故障となると、論理回路１０，１１，１２が故障していなくとも、Ｄの２ビットが１となる。これらの確率は低いので、本実施の形態では考えられる例に留める。
【００４４】
＜故障判定回路＞
図５〜図１２を用いて、前述した故障判定回路４０の状態遷移、さらに、故障判定回路４０の構成やタイミングチャートなどについて説明する。図５は、この故障判定回路４０の状態遷移の一例を示す説明図である。
【００４５】
図５において、丸の中に故障判定レジスタ４２が保持している値Ｆを示している。また、Ｄは比較器２０，２１，２２の出力であり、ＲＳＴは故障判定レジスタ４２へのリセット信号である。故障判定レジスタ４２が保持している値Ｆには、０００，００１，０１０，１００，０１１，１１０，１０１，１１１がある。比較器２０，２１，２２の出力Ｄには、０００，００１，０１０，１００，０１１，１１０，１０１，１１１がある。
【００４６】
（１）故障判定レジスタ４２がリセットされた状態では、この故障判定レジスタ４２が保持している値Ｆは０００となる。これは、図５の上段の状態である。
【００４７】
（２）故障判定レジスタ４２が保持している値Ｆが０００のとき、比較器２０，２１，２２の出力Ｄが０００以外になると、Ｄの値をＦとする。これは、図５の上段から中段または下段への遷移である。すなわち、論理回路および比較器の故障なし状態から論理回路または比較器の故障状態への遷移、または、論理回路および比較器の故障なし状態から論理回路および比較器の多重故障状態への遷移である。
【００４８】
（３）故障判定レジスタ４２が保持している値Ｆが０００，１１１以外のとき、比較器２０，２１，２２の出力Ｄが０００もしくはＦと同じ値であるとき、Ｆの値は保持される。これは、図５の中段の保持である。
【００４９】
（４）故障判定レジスタ４２が保持している値Ｆが０００，１１１以外のとき、比較器２０，２１，２２の出力Ｄが０００もしくはＦと同じ値以外の値であるとき、Ｆの値は１１１となる。これは、図５の中段から下段への遷移である。すなわち、論理回路または比較器の故障状態から論理回路および比較器の多重故障状態への遷移である。
【００５０】
（５）故障判定レジスタ４２が保持している値Ｆがいかなる状態であっても、リセット信号ＲＳＴによってＦは０００となる。これは、図５の中段または下段から上段への遷移である。すなわち、論理回路または比較器の故障状態から論理回路および比較器の故障なし状態への遷移、または、論理回路および比較器の多重故障状態から論理回路および比較器の故障なし状態への遷移である。
【００５１】
（６）比較器２０，２１，２２の出力Ｄが０００以外の２種類の値をとれば、故障判定レジスタ４２が保持している値Ｆを１１１とすることにより、多重故障が判定できる。
【００５２】
図６は、故障判定回路４０の構成の一例を示す回路図である。
【００５３】
故障判定回路４０は、３個の判定論理回路４１１〜４１３からなる故障判定論理回路４１と、３個のフリップフロップ（ＦＦ）４２１〜４２３からなる故障判定レジスタ４２とを有する。
【００５４】
故障判定論理回路４１において、３個の判定論理回路４１１〜４１３は同じ論理である。判定論理回路４１１は、Ｆ０，Ｄ０，Ｆ１，Ｄ１，Ｆ２，Ｄ２を入力として、判定論理の結果Ｅ０を出力する。判定論理回路４１２は、Ｆ１，Ｄ１，Ｆ２，Ｄ２，Ｆ０，Ｄ０を入力として、判定論理の結果Ｅ１を出力する。判定論理回路４１３は、Ｆ２，Ｄ２，Ｆ０，Ｄ０，Ｆ１，Ｄ１を入力として、判定論理の結果Ｅ２を出力する。
【００５５】
故障判定レジスタ４２において、３個のフリップフロップ４２１〜４２３は、それぞれ、判定論理回路４１１〜４１３からの出力Ｅ０，Ｅ１，Ｅ２を入力として、保持している値Ｆ０，Ｆ１，Ｆ２を出力する回路である。また、３個のフリップフロップ４２１〜４２３は、それぞれ、リセット信号ＲＳＴが入力されることで、保持している値Ｆ０，Ｆ１，Ｆ２がリセットされる。フリップフロップ４２１は、Ｅ０を入力として、保持している値Ｆ０を出力する。フリップフロップ４２２は、Ｅ１を入力として、保持している値Ｆ１を出力する。フリップフロップ４２３は、Ｅ２を入力として、保持している値Ｆ２を出力する。
【００５６】
図７は、故障判定回路４０の真理値表の一例を示す説明図である。図７に示す真理値表は、図５に示した状態遷移を実現する。図７において、Ｄは比較器２０，２１，２２の出力であり、Ｆは故障判定レジスタ４２が保持している値を示している。
【００５７】
例えば、Ｆ＝０００のとき、Ｄ＝００１になると、Ｆ＝００１となる。同様に、Ｆ＝０００のとき、Ｄ＝０１１，０１０，１１０，１１１，１０１，１００になると、それぞれ、Ｆ＝０１１，０１０，１１０，１１１，１０１，１００となる。これは、図５における上段から中段または下段への遷移である。なお、Ｆ＝０００のとき、Ｄ＝０００では、Ｆ＝０００を保持する。
【００５８】
例えば、Ｆ＝００１のとき、Ｄ＝０１１になると、Ｆ＝１１１となる。同様に、Ｆ＝００１のとき、Ｄ＝０１０，１１０，１１１，１０１，１００になると、いずれも、Ｆ＝１１１となる。これは、図５における中段（Ｆ＝００１）から下段への遷移である。なお、Ｆ＝００１のとき、Ｄ＝０００，００１では、どちらも、Ｆ＝００１を保持する。また、Ｆ＝００１のような状態遷移または保持は、Ｆ＝０１１，０１０，１１０，１０１，１００でも同様である。
【００５９】
例えば、Ｆ＝１１１のとき、Ｄ＝０００，００１，０１１，０１０，１１０，１１１，１０１，１００では、いずれも、Ｆ＝１１１を保持する。
【００６０】
図８は、判定論理回路４１１〜４１３の構成の一例を示す回路図である。図８では、判定論理回路４１１を例として示している。
【００６１】
判定論理回路４１１は、４個の３入力（１入力は否定入力）のＡＮＤ（論理積）ゲート３０１〜３０４と、１個の６入力のＯＲ（論理和）ゲート３０５とからなる。ＡＮＤゲート３０１は、Ｆ１（否定入力），Ｄ１，Ｆ２を入力として、結果を出力する。ＡＮＤゲート３０２は、Ｄ１（否定入力），Ｆ１，Ｄ２を入力として、結果を出力する。ＡＮＤゲート３０３は、Ｆ１，Ｄ２，Ｆ２（否定入力）を入力として、結果を出力する。ＡＮＤゲート３０４は、Ｄ１，Ｆ２，Ｄ２（否定入力）を入力として、結果を出力する。ＯＲゲート３０５は、Ｆ０，Ｄ０とＡＮＤゲート３０１〜３０４の各出力とを入力とし、結果のＥ０を出力する。
【００６２】
判定論理回路４１１は、図８において、論理ゲートで描いているが、１個の６入力のＬＵＴで実現できる。このＬＵＴは、６入力における各入力値に対する１出力における出力値の関係をテーブル形式にしたものである。
【００６３】
以上の図８を用いて説明した判定論理回路４１１の構成などは、他の判定論理回路４１２，４１３においても同様である。
【００６４】
図９〜図１２は、故障判定回路４０の動作の一例を示すタイミングチャートである。図９〜図１２では、クロック信号ＣＬＫに同期して各回路が動作し、クロック信号の立ち上がり時間Ｔ０〜Ｔ１０からの各周期をサイクルとする。
【００６５】
図９は、論理回路１２が故障し、さらに論理回路１１も故障した場合の例である。Ｔ２からのサイクルで、論理回路１２が故障して、Ｄが１０１（Ｄ２＝１、Ｄ１＝０、Ｄ０＝１）になることにより、Ｆ０及びＦ２が１となる。論理回路１２に故障が起きても、データパターンが変化することにより、その出力ＣがＡ及びＢと不一致を続けるとは限らない。例えば、Ｔ４のタイミングで出力が変化した結果Ｄが０００（Ｄ２＝０、Ｄ１＝０、Ｄ０＝０）に戻っても、故障判定レジスタ４２により、Ｆは論理回路１２の故障を示す１０１（Ｆ２＝１、Ｆ１＝０、Ｆ０＝１）を維持する。
【００６６】
さらに、Ｔ８で論理回路１１が故障して、Ｄが１１０（Ｄ２＝１、Ｄ１＝１、Ｄ０＝０）になると、故障判定回路４０は２種類目の故障であると判定し、ＦはＴ９で多重故障を示す１１１（Ｆ２＝１、Ｆ１＝１、Ｆ０＝１）を出力する。このように、２個の論理回路１２，１１の故障が同時に、比較結果Ｄに反映されなくても二重故障が検出できる。
【００６７】
図１０は、比較器２０が故障し、さらに論理回路１２も故障した場合の例である。Ｔ２からのサイクルで、比較器２０が故障して、Ｄが００１（Ｄ２＝０、Ｄ１＝０、Ｄ０＝１）になることにより、Ｆ０が１となる。例えば、データパターンが変化することにより、Ｄが０００（Ｄ２＝０、Ｄ１＝０、Ｄ０＝０）に戻っても、故障判定レジスタ４２により、Ｆは比較器２０の故障を示す００１（Ｆ２＝０、Ｆ１＝０、Ｆ０＝１）を維持する。
【００６８】
さらに、Ｔ８で論理回路１２が故障して、Ｄが１０１（Ｄ２＝１、Ｄ１＝０、Ｄ０＝１）になると、故障判定回路４０は２種類目の故障であると判定し、ＦはＴ９で多重故障を示す１１１（Ｆ２＝１、Ｆ１＝１、Ｆ０＝１）を出力する。このように、サイクル毎には一個の回路ブロックにしか故障が無いような比較結果Ｄであっても、多重故障が検出できる。
【００６９】
図１１は、Ｔ２で論理回路１２が故障し、さらにＴ８で比較器２２も故障した場合の例である。Ｔ２での論理回路１２の故障は、前述した図９と同様である。さらに、比較器２２の故障により、ＣがＡ及びＢと不一致であるのにＤが１００（Ｄ２＝１、Ｄ１＝０、Ｄ０＝０）となると、Ｆは多重故障を示す１１１（Ｆ２＝１、Ｆ１＝１、Ｆ０＝１）を出力する。このように、比較器２２が０を出力してしまう故障も検出できる。
【００７０】
図１２は、Ｔ２で比較器２０が故障し、さらにＴ８で比較器２１も故障した場合の例である。Ｔ２での比較器２０の故障は、前述した図１０と同様である。さらに、比較器２１の故障により、Ｄが０１０（Ｄ２＝０、Ｄ１＝１、Ｄ０＝０）となると、Ｆは多重故障を示す１１１（Ｆ２＝１、Ｆ１＝１、Ｆ０＝１）を出力する。このような多重故障も検出できる。
【００７１】
以上、図９〜図１２に示したように、故障判定論理回路４１で、比較器２０，２１，２２の３個の出力Ｄ０，Ｄ１，Ｄ２と、故障判定レジスタ４２の保持している値Ｆ０，Ｆ１，Ｆ２の論理をとることにより、２種類の故障発生を検出する。これにより、多重故障を高い確率で判定でき、安全性が高まる。
【００７２】
なお、前述した特許文献１の図１７にステータスレジスタを設けた構成が示されているが、図１８に示されているように、値を一時的に保持しているだけで、故障の判定に用いる本発明の概念は言及されていない。
【００７３】
以上説明した故障判定回路４０は、３個の６入力のＬＵＴ（故障判定論理回路４１）と、３個のフリップフロップ（故障判定レジスタ４２）で実現できるので、回路規模が小さい。また、故障判定回路４０の故障の確率は低い。
【００７４】
＜ＦＰＧＡ＞
図１３〜図１４を用いて、前述した半導体装置をＦＰＧＡに適用した場合について説明する。図１３は、このＦＰＧＡの構成の一例を示すブロック図である。ＦＰＧＡは、多数の論理ゲート間の論理関係と接続関係とを記述したコンフィグレーションデータを、ＦＰＧＡが備えるコンフィグレーションＲＡＭに書き込むことで、所定の論理回路として機能する。本実施の形態におけるＦＰＧＡは、コンフィグレーションＲＡＭ（図示省略）で論理が決まるＦＰＧＡである。
【００７５】
ＦＰＧＡは、三重化されたプロセッサ１０ａ，１１ａ，１２ａと、３個の比較器２０，２１，２２と、１個の多数決回路３０と、１個の故障判定回路４０と、ＦＰＧＡ制御回路５０と、スクラビング回路６０とを有する。このＦＰＧＡにおいて、プロセッサ１０ａ，１１ａ，１２ａと、比較器２０，２１，２２と、多数決回路３０と、故障判定回路４０とが、ＦＰＧＡファブリックのユーザ論理で構成される。プロセッサ１０ａ，１１ａ，１２ａは、図１に示した論理回路１０，１１，１２の一例である。比較器２０，２１，２２、多数決回路３０、および、故障判定回路４０は、図１に示した各回路と同じである。
【００７６】
ＦＰＧＡ制御回路５０は、ＦＰＧＡのコンフィグレーションなど動作全体を制御する回路である。このＦＰＧＡ制御回路５０は、故障判定回路４０に接続され、故障判定回路４０との間で、故障判定回路４０の出力ＦがＦＰＧＡ制御回路５０に入力され、ＦＰＧＡ制御回路５０からリセット信号ＲＳＴが故障判定回路４０に入力される。
【００７７】
スクラビング回路６０は、ＦＰＧＡ制御回路５０に接続され、コンフィグレーションＲＡＭを一定の間隔で巡回してエラー修正を行うためのスクラビングを行う回路である。
【００７８】
図１４は、故障判定回路４０とスクラビング回路６０との時間的関係の一例を示す説明図である。
【００７９】
スクラビング回路６０は、コンフィグレーションＲＡＭを一巡した後、故障判定回路４０の故障判定レジスタ４２をリセット信号ＲＳＴで０００にリセットする。図１４では、巡回ｎ回目、巡回ｎ＋１回目、巡回ｎ＋２回目を示しており、巡回の各回は巡回開始から巡回終了までの時間である。故障判定レジスタ４２のリセットは、リセット信号ＲＳＴの入力により巡回の各回の巡回終了時に行われる。
【００８０】
スクラビングｎ回目終了時とｎ＋１回目開始時との間で発生した故障［１］は、スクラビングｎ＋１回目で修理し、故障判定レジスタ４２が保持している値Ｆをｎ＋１回目終了時にリセットする。故障［１］の発生から修理までの間は故障期間［１］となる。
【００８１】
スクラビングｎ＋１回目開始時とｎ＋１回目終了時との間で発生した故障［２］は、スクラビングｎ＋１回目終了時では修理せず、Ｆをリセットするが、その直後に故障判定回路４０が故障［２］を再検出するために問題がない。なお、この故障［２］はスクラビングｎ＋２回目で修理し、Ｆをｎ＋２回目終了時にリセットする。故障［２］の発生から修理までの間は故障期間［２］となる。
【００８２】
以上説明したＦＰＧＡでは、多重故障が高い確率で検出できるので、プロセッサ１０ａ，１１ａ，１２ａの１つに故障が発生した後、他の２つのプロセッサで二重化動作を続けても安全性が高い。さらに、スクラビングとの組合せが好適である。
【００８３】
また、ＦＰＧＡに適用する場合に、故障判定回路４０をハードマクロとすると、故障判定回路４０のコンフィグレーションＲＡＭソフトエラーの恐れをなくせる。また、故障判定回路４０の規模は小さいので、面積ペナルティは小さい。
【００８４】
＜変形例＞
本実施の形態においては、以下のような変形例が可能である。
【００８５】
例えば、故障判定回路４０を、二重化や三重化することも可能である。二重化して故障判定結果の論理和をとれば、論理和をとる回路の故障の恐れが加わるが、１個の故障判定回路が故障しても安全側故障になる。三重化して故障判定回路の多数決をとれば、多数決をとる回路の故障の恐れが加わるが、１個の故障判定回路が故障しても影響を除去できる。故障判定回路の回路規模は小さいので、多重化してもＦＰＧＡファブリックの使用量でのペナルティは小さい。
【００８６】
また、三重化された論理回路１０，１１，１２が、それぞれ別チップであるようなシステムにも適用することが可能である。
【００８７】
＜実施の形態の効果＞
以上説明した本実施の形態における半導体装置によれば、多重故障を検出して安全性を向上することができる。すなわち、故障判定レジスタ４２に故障の状態を保持しておくことにより、別な種類の故障発生を検出できるので、多重故障を検出することが可能となる。この結果、多重故障を検出できるので、安全性を向上することが可能となる。
【００８８】
本実施の形態における半導体装置は、高信頼性を必要とされる用途（例えばインフラ系装置など）でのＦＰＧＡに適用可能であり、さらに、高信頼コンピュータシステムなどへの応用も可能となる。
【００８９】
より詳細には、以下の通りである。
【００９０】
（１）故障判定論理回路４１は、比較器２０，２１，２２の３個の出力と、故障判定レジスタ４２の保持している値との論理をとることで、２種類の故障発生を検出することができる。これにより、多重故障を高い確率で判定できるので、安全性を高めることが可能となる。
【００９１】
（２）半導体装置は、ＦＰＧＡに適用することができる。
【００９２】
（３）半導体装置は、コンフィグレーションＲＡＭで論理が決まるＦＰＧＡに適用することができる。
【００９３】
（４）半導体装置は、スクラビング回路６０を有することで、コンフィグレーションＲＡＭを一定の間隔で巡回してエラー修正を行うことができる。
【００９４】
（５）スクラビング回路６０の動作によってリセット信号ＲＳＴを生成し、このリセット信号ＲＳＴによって故障判定レジスタ４２の保持している値をリセットすることができる。
【００９５】
（６）比較器２０，２１，２２の出力に基づいて、論理回路および比較器の故障なし、論理回路の故障、比較器の故障、および、論理回路および比較器の多重故障のいずれかの故障状況であるかを判定することができる。
【００９６】
（７）多重故障として、１つの論理回路とさらに異なる別の論理回路が故障する場合、１つの比較器とさらに１つの論理回路が故障する場合、１つの論理回路とさらに１つの比較器が故障する場合、および、１つの比較器とさらに異なる別の比較器が故障する場合、を含むことができる。
【００９７】
（８）故障判定回路４０の状態遷移として、論理回路および比較器の故障なし状態から論理回路または比較器の故障状態への遷移、論理回路および比較器の故障なし状態から論理回路および比較器の多重故障状態への遷移、論理回路または比較器の故障状態から論理回路および比較器の多重故障状態への遷移、論理回路または比較器の故障状態から論理回路および比較器の故障なし状態への遷移、および、論理回路および比較器の多重故障状態から論理回路および比較器の故障なし状態への遷移、を含むことができる。
【００９８】
（９）比較器２０，２１，２２および故障判定論理回路４１は、ＬＵＴで構成することができる。
【００９９】
（１０）論理回路１０，１１，１２は、プロセッサ１０ａ，１１ａ，１２ａとすることができる。
【０１００】
（１１）故障判定回路４０は、二重化または三重化することで、安全性を高めることができる。
【０１０１】
＜他の実施の形態＞
本実施の形態における半導体装置においては、三重化された論理回路を有する場合に限らず、四重化以上などの多重化された論理回路を有する場合にも適用可能である。この場合に、半導体装置は、多重化（四重化以上）された論理回路と、前記多重化された論理回路の複数個ずつの出力を比較する複数個の比較器と、前記多重化された論理回路の複数個の出力の多数決をとる１個の多数決回路と、前記多重化された論理回路および前記複数個の比較器の故障判定を行う１個の故障判定回路と、を有する。前記故障判定回路は、故障判定論理回路と、前記故障判定論理回路の出力を保持する故障判定レジスタと、を有する。前記故障判定論理回路は、前記比較器の複数個の出力と、前記故障判定レジスタの保持している値との論理をとる。
【０１０２】
このような四重化以上などの多重化された論理回路を有する半導体装置では、比較器を１段で接続する場合に限らず、２段などのように階層的に接続したり、各回路をＬＵＴで実現することなどが考えられる。また、論理回路、比較器、多数決回路、故障判定回路の各回路の詳細などは、前記三重化された論理回路を有する場合で説明したものと同様である。
【０１０３】
以上、本発明者によってなされた発明をその実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【０１０４】
例えば、前記実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【符号の説明】
【０１０５】
１０，１１，１２  論理回路
１０ａ，１１ａ，１２ａ  プロセッサ
２０，２１，２２  比較器
３０  多数決回路
４０  故障判定回路
４１  故障判定論理回路
４２  故障判定レジスタ
５０  ＦＰＧＡ制御回路
６０  スクラビング回路
【図１】
0006373154.tif 000002
【図２】
0006373154.tif 000003
【図３】
0006373154.tif 000004
【図４】
0006373154.tif 000005
【図５】
0006373154.tif 000006
【図６】
0006373154.tif 000007
【図７】
0006373154.tif 000008
【図８】
0006373154.tif 000009
【図９】
0006373154.tif 000010
【図１０】
0006373154.tif 000011
【図１１】
0006373154.tif 000012
【図１２】
0006373154.tif 000013
【図１３】
0006373154.tif 000014
【図１４】
0006373154.tif 000015