(57)【要約】【課題】ＦＰＧＡの論理回路で構成されるシステムを迅速に復旧する。【解決手段】プログラミング可能な論理回路を有するプログラマブルゲートアレイであって、前記論理回路が設定されるコンフィグレーションメモリと、前記コンフィグレーションメモリ内のソフトエラーを正常化する対策回路とを備え、前記プログラマブルゲートアレイで構成される現用系の回路及び予備系の回路によって冗長構成を組み、前記対策回路は、前記現用系の回路を構成する前記コンフィグレーションメモリに発生するソフトエラーの検出を契機として、前記現用系の回路と前記予備系の回路とを切り替え、前記検出されたソフトエラーによって発生する二次障害から復旧するためのエラーの訂正を実行し、前記エラーの訂正の後に前記論理回路に保持される値を回復する。【選択図】図８
2015201814.tif 000002
【特許請求の範囲】
【請求項１】
プログラミング可能な論理回路を有するプログラマブルゲートアレイであって、
前記論理回路が設定されるコンフィグレーションメモリと、
前記コンフィグレーションメモリ内のソフトエラーを正常化する対策回路とを備え、
前記プログラマブルゲートアレイで構成される現用系の回路及び予備系の回路によって冗長構成を組み、
前記対策回路は、
前記現用系の回路を構成する前記コンフィグレーションメモリに発生するソフトエラーの検出を契機として、前記現用系の回路と前記予備系の回路とを切り替え、
前記検出されたソフトエラーによって発生する二次障害から復旧するためのエラーの訂正を実行し、
前記エラーの訂正の後に前記論理回路に保持される値を回復することを特徴とするプログラマブルゲートアレイ。
【請求項２】
請求項１に記載のプログラマブルゲートアレイであって、
前記対策回路は、前記エラーを検出したアドレスと、前記エラーの訂正の後にさらにエラーを検出したアドレスとを比較することによって、故障部位を分析することを特徴とするプログラマブルゲートアレイ。
【請求項３】
請求項１に記載のプログラマブルゲートアレイであって、
前記対策回路は、
検出したエラーの訂正の可否を判定し、
前記検出したエラーの訂正が不可能と判定した場合、前記論理回路の再コンフィグレーションを実行し、その後、再度エラーの訂正の可否を判定することによって故障部位を分析することを特徴とするプログラマブルゲートアレイ。
【請求項４】
請求項２又は３に記載のプログラマブルゲートアレイであって、
前記対策回路は、
前記論理回路の再コンフィグレーション前にエラーを検出したアドレスの情報及び訂正可否の情報を格納する記憶部に接続されており、
前記再コンフィグレーションの完了後に、前記記憶部に格納された情報を取得することを特徴とするプログラマブルゲートアレイ。
【請求項５】
プログラミング可能な論理回路を含むプログラマブルゲートアレイを有する電子装置であって、
前記プログラマブルゲートアレイで構成される二つの回路によって、現用系及び予備系による冗長構成を組み、
前記プログラマブルゲートアレイは、論理回路が設定されるコンフィグレーションメモリと、前記コンフィグレーションメモリ内のソフトエラーを正常化する対策回路とを有し、
前記対策回路は、
現用系の回路を構成する前記コンフィグレーションメモリに発生するソフトエラーの検出を契機として、前記現用系の回路と予備系の回路とを切り替え、
前記検出されたソフトエラーによって発生する二次障害から復旧するためのエラーの訂正を実行し、
前記エラーの訂正の後に前記論理回路に保持される値を回復することを特徴とする電子装置。
【請求項６】
請求項５に記載の電子装置であって、
前記対策回路は、前記エラーを検出したアドレスと、前記エラーの訂正の後にさらにエラーを検出したアドレスとを比較することによって、故障部位を分析することを特徴とする電子装置。
【請求項７】
請求項５に記載の電子装置であって、
前記対策回路は、
検出したエラーの訂正の可否を判定し、
前記検出したエラーの訂正が不可能と判定した場合、前記論理回路の再コンフィグレーションを実行し、その後、再度エラーの訂正の可否を判定することによって故障部位を分析することを特徴とする電子装置。
【請求項８】
請求項６又は７に記載の電子装置であって、
前記対策回路は、
前記論理回路の再コンフィグレーション前にエラーを検出したアドレスの情報及び訂正可否の情報を格納する記憶部に接続されており、
前記再コンフィグレーションの完了後に、前記記憶部に格納された情報を取得することを特徴とする電子装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルゲートアレイ（ＦＰＧＡ：Field Programmable Gate Array）に生じるソフトエラーの回復技術に関する。
【背景技術】
【０００２】
半導体デバイスに対して、中性子、α線等を起因とするソフトエラーが発生することは知られている。近年、半導体デバイスのプロセスの微細化に伴い、ソフトエラーの影響が顕在化している。このようなソフトエラーの可能性がある部品をシステムに適用する場合、ソフトエラーによるシステムの一時的な停止や再起動が許容できる範囲内であればよい。しかし、社会インフラを支えるシステムにおいては、障害が短時間であっても重大な影響を及ぼすことがあるため、より厳重な対策が必要である。
【０００３】
ソフトエラーによる半導体デバイスの障害は、例えばＳＲＡＭやＤＲＡＭなどのメモリセルの場合、メモリセルのデータを保持するノードに中性子が入射して電荷が注入されることによって、保持されたデータが反転し、以降、反転されたデータを保持し続けることによって生じる。
【０００４】
メモリデバイスのソフトエラー対策技術として最も一般的な方法は、データと共にＥＣＣ（Error Correction Code）をメモリ内に格納し、データを読み出す際にＥＣＣを用いてエラーを訂正する方法である。
【０００５】
ＦＰＧＡの多くは、内部のコンフィグレーションメモリをＳＲＡＭのメモリセルによって構成しており、メモリデバイスと同様のソフトエラー障害が発生する。コンフィグレーションメモリのエラーを訂正するために、ＥＣＣによるエラー訂正機能を搭載したＦＰＧＡが提案されている。
【０００６】
ＦＰＧＡにおいてソフトエラーが発生する部分は二つある。
【０００７】
一つはＳＲＡＭのメモリセル構成のメモリアレイをＦＰＧＡ内のメモリであり、他の一つは論理回路を形成するＬＵＴ（Look Up Table）や、プログラム可能な配線であるＩＣ（Interconnect）等の情報を格納したコンフィグレーションメモリである。なお、ＦＰＧＡ内には、前述した回路の他、フリップフロップ、ＩＯバッファ、クロックバッファ等の機能素子が搭載されるが、一般にこれらはＳＲＡＭのメモリセルで構成されないため、前述したＬＵＴやＩＣ等に比べてソフトエラーに対する耐力が高い。
【０００８】
ＦＰＧＡの内蔵メモリ部のソフトエラーの対策には、前述した一般的なメモリデバイスと同様のＥＣＣを用いたエラー検出及びエラー訂正が用いられる。
【０００９】
また、コンフィグレーションメモリ部のソフトエラーの対策に関する先行技術として特許文献１（特開２０１２−２７９２７号公報）がある。特許文献１には、プログラマブルロジックのリソース上にエラー検出回路を設け、プログラマブルロジックリソース構成データを巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）モジュール内にロードし、そこでチェックサムを計算するエラー検出システムが開示されている。
【００１０】
ＦＰＧＡは、設計者が自由に様々な論理回路を構成できるように、予め多くの基本論理モジュールや配線を搭載している。よって、ＦＰＧＡの全てのリソースが使われることはなく、多くのリソースは使用されない状態のまま残ること多い。プログラマブルデバイスの構成メモリのエラー検出の先行技術として特許文献２（特開２００７−２９３８５６号公報）がある。特許文献２には、プログラマブルデバイスの構成メモリから構成メモリデータを読み取ることと、該構成メモリデータにおいてエラーが発生したか否かを判断することと、エラーが発生したという判断に応答して、エラーである該構成データに対応する感度データを読み取ることと、該エラーを無視することができるか否かを判断するために該感度データを解析することと、該エラーを無視することができない場合、修復アクティビティを開始することと、該エラーを無視することができる場合、該修復アクティビティを開始しないことによって該エラーを無視することを包含する方法が開示されている。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２０１２−２７９２７号公報
【特許文献２】特開２００７−２９３８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
前述したように、従来のＦＰＧＡのソフトエラー対策には、メモリデバイス同様にＥＣＣを用いた訂正方法が用いられてきた。しかし、ＦＰＧＡに内蔵されるコンフィグレーションメモリでは、単にソフトエラーを訂正するだけでは、機能を正常化できない場合がある。
【００１３】
すなわち、メモリデバイスでは、接続されるメモリ制御回路がデータを読み出した時にエラーを検出及び訂正し、後段の論理回路にデータを出力する。ＥＣＣによる訂正機能は、訂正されるデータの範囲のうち１ｂｉｔまでのエラーを訂正することができ、１ｂｉｔまでのエラーは後段の論理回路に伝搬しない。
【００１４】
一方、コンフィグレーションメモリに格納される情報は、ＦＰＧＡ内に論理回路を形成するための情報を含む。例えば、組合せ論理部は、ＡＮＤやＯＲ等の論理素子の代わりに、論理素子の組合せによる真理値をＬＵＴによって実現しており、ＬＵＴやフリップフロップ（ＦＦ）間を接続するための配線及び分岐点をＩＣが決定している。よって、ＦＰＧＡ内に構成される論理回路は、膨大なコンフィグレーションメモリデータを参照して形成されており、たとえ一時的にでもＬＵＴの構成データやＩＣの設定データが失われれば、論理回路の構成自体を破壊する可能性がある。
【００１５】
また、メモリデバイスと同様な訂正回路をコンフィグレーションメモリに付加し、コンフィグレーションメモリに設定される全てのデータに訂正符号ビットを付加することは、回路規模やメモリ規模の観点から現実的ではない。従って、一般的にコンフィグレーションメモリの訂正機能は、メモリ内を所定の大きさの領域に分割し、各領域にエラー訂正ビットを設けることで、小さな領域毎に訂正を行っている。
【００１６】
以上から、コンフィグレーションメモリにＥＣＣ訂正を適用する場合でも、メモリデバイスのように全ての読み出しデータをリアルタイムで訂正することは困難であり、一般的には、エラーの発生から、検出、訂正までの間、後段の論理回路において一時的なエラーが発生する。
【００１７】
ＦＰＧＡ内に構成される論理回路がクロック同期回路である場合、エラーが発生している期間内にソフトエラーが発生しても、クロック周期内にソフトエラーの訂正が完了すれば、発生したエラーは後段の論理回路に伝搬しない。しかし、ソフトエラーの発生から訂正までの期間がクロック周期を超える場合、ソフトエラーによって誤ったデータを後段の論理回路が取り込んで、保持する可能性がある。この場合、ソフトエラーが発生した箇所が訂正によって復旧しても、後段の論理回路が取りこんだ値は誤ったままとなる。このため、ソフトエラーの訂正は完了しても、ソフトエラーが正常に復旧できない場合がある。このように、ソフトエラーの発生箇所でエラーを訂正しても、エラー発生から訂正までの間に、後段の論理回路にエラーを伝搬させてしまう現象を、本明細書では、ソフトエラーによる二次障害と称する。
【００１８】
以上に説明したように、コンフィグレーションメモリにおけるソフトエラーの対策は、ＥＣＣを用いた訂正だけでは不十分であり、ソフトエラーによる二次障害は避けられない。
【００１９】
このような二次障害の対策をしても、システムの復旧までには時間を要し、システムを短時間で復旧することは困難である。二次障害を復旧には数秒を要する場合があり、停止許容時間が定められているシステムおいては、数秒のシステム障害を許容できない場合がある。このため、ソフトエラーによる障害から、システムを迅速に復旧することが求められている。
【００２０】
さらに、外部メモリ及び論理回路でソフトエラーの検出・訂正をする場合、これらの検出・訂正をする機能部が故障し又はソフトエラーが発生すると、エラーを誤検出し、エラーを誤って訂正することがある。エラーを誤って訂正した場合、論理回路は正しく訂正したと判断しているが、実際には訂正ができていない状態となり、エラーの検出・訂正を繰り返してしまう。コンフィグレーションメモリが故障した場合も同様に、エラーの検出・訂正を繰り返してしまう。このため、ソフトエラーを検出・訂正する機能部が故障した場合に、故障箇所を判定することが求められている。
【課題を解決するための手段】
【００２１】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プログラミング可能な論理回路を有するプログラマブルゲートアレイであって、前記論理回路が設定されるコンフィグレーションメモリと、前記コンフィグレーションメモリ内のソフトエラーを正常化する対策回路とを備え、前記プログラマブルゲートアレイで構成される現用系の回路及び予備系の回路によって冗長構成を組み、前記対策回路は、前記現用系の回路を構成する前記コンフィグレーションメモリに発生するソフトエラーの検出を契機として、前記現用系の回路と前記予備系の回路とを切り替え、前記検出されたソフトエラーによって発生する二次障害から復旧するためのエラーの訂正を実行し、前記エラーの訂正の後に前記論理回路に保持される値を回復する。
【発明の効果】
【００２２】
本発明の代表的な実施の形態によれば、ＦＰＧＡの論理回路で構成されるシステムを迅速に復旧することができる。前述した以外の課題、構成及び効果は、以下の実施例の説明により明らかにされる。
【図面の簡単な説明】
【００２３】
【図１】第１実施例のソフトエラー対策回路を示す構成図である。
【図２】第１実施例の再設定制御部と論理回路部との接続を示す構成図である。
【図３】第２実施例のソフトエラー対策回路を示す構成図である。
【図４】第２実施例の配線接続交点におけるパストンランジスタの構成を示す図である。
【図５】第２実施例の動作を示すタイミングチャートである。
【図６】第３実施例のソフトエラー対策回路を示す構成図である。
【図７】第４実施例のソフトエラー対策回路を示す構成図である。
【図８】第６実施例のソフトエラーの発生を契機に運用系を非運用系に切り替えるシステムの構成図である。
【図９】第７実施例のソフトエラー対策回路を示す構成図である。
【図１０】第７実施例においてコンフィグレーションメモリのソフトエラーを判定するシーケンス図である。
【図１１】第７実施例において構成データメモリの故障を判定するシーケンス図である。
【図１２】第７実施例においてコンフィグレーションメモリの故障を判定するシーケンス図である。
【図１３】第７実施例においてソフトエラー対策回路のソフトエラーを判定するシーケンス図である。
【図１４】第７実施例においてコンフィグレーションメモリの故障を判定するシーケンス図である。
【図１５Ａ】第８実施例におけるソフトエラー対策回路の処理を説明するフローチャートである。
【図１５Ｂ】第８実施例におけるソフトエラー対策回路の処理を説明するフローチャートである。
【発明を実施するための形態】
【００２４】
本発明に係るソフトエラー対策回路の実施例を、構成図及びフローチャートを用いて説明する。
【００２５】
＜実施例１＞
図１は、第１実施例のソフトエラー対策回路６を示す構成図である。
【００２６】
一般に、ＳＲＡＭのメモリセル構成を採用したＦＰＧＡ１は、コンフィグレーションメモリ２と、それを制御するコンフィグレーションメモリ制御部３とを有し、外部の構成データメモリ４に接続される。構成データメモリ４は、コンフィグレーションメモリ２をプログラミングして、様々な論理回路を形成するための回路情報を格納し、フラッシュメモリなどの不揮発性メモリで構成される。
【００２７】
構成データメモリ４に格納された回路情報によって、コンフィグレーションメモリ２内に論理回路部５が構成される。なお、この論理回路部は、その論理回路に関連する配線、クロックライン、エンベデッドに構成されるハードウェア・マクロ等、コンフィグレーションメモリ２のプログラミングによって制御される機能を全て含む。
【００２８】
第１実施例のソフトエラー対策回路６は、ＦＰＧＡ１内に構成され、コンフィグレーションメモリ制御部３と、コンフィグレーションメモリ２内に構成される再設定制御部７とを有し、外部の再設定データメモリ８に接続される。再設定データメモリ８は、論理回路部５のフリップフロップ１２を特定するためのアドレス及び当該フリップフロップ１２を再設定するための再設定データ１６を格納する。再設定制御部７は、再設定データメモリ８に対して、読出しアドレス及び制御信号１５を出力し、論理回路部５のフリップフロップ１２を特定するためのアドレス及び再設定データ１６を読み出す。
【００２９】
コンフィグレーションメモリ制御部３は、構成データメモリ４よりデータを読み出し、読み出したデータをコンフィグレーションメモリ２の制御線（アドレス線９Ａ、データ線９Ｂ）を通して書き込む。さらに、コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２内に発生するビットエラーを検出した際にフラグ１４を出力する検出機能と、ビットエラーが訂正可能又は不可能な場合に、それぞれのフラグ１４を出力する訂正機能とを有する。なお、コンフィグレーションメモリ２のビットエラーは、コンフィグレーションメモリ２のＥＣＣ機能によって自動的に訂正される。さらに、コンフィグレーションメモリ制御部３は、構成データメモリ４に格納されているデータに基づいてビットエラーの発生箇所がコンフィグレーションメモリ２内で論理回路部５として使用されている領域に該当しているか又は該当していないかを判定し、該当している際にフラグ１４を出力する該当判定機能を有する。
【００３０】
第１実施例では、コンフィグレーションメモリ制御部３から出力される訂正フラグをトリガに、再設定制御部７が論理回路部５に対して再設定を行う。
【００３１】
以下に、再設定制御部７の基本動作を説明する。
【００３２】
図２は、再設定制御部７と論理回路部５との接続を示す構成図である。
【００３３】
図２に示す論理回路部５は、複数の基本回路モジュール１０から構成される。各基本回路モジュール１０は、データ保持機能を有さない組合せ論理部１１と、データ保持機能であるフリップフロップ１２と、フリップフロップ１２にデータを設定する設定部１３とで構成される。基本回路モジュール１０や、その周囲の配線接続は、構成データメモリ４に格納された情報に基づいてプログラミングされ、様々な論理回路を形成する。
【００３４】
再設定制御部７は、エラー訂正フラグ１４を受信すると、受信したエラー訂正フラグ１４から、ビットエラーが訂正可能又は不可能である箇所のアドレスを抽出し、抽出したコンフィグレーションメモリ２のアドレスから再設定データメモリ８のアドレスを特定する。そして、再設定制御部７は、再設定データメモリ８に対して、読出しアドレス及び制御信号１５を出力し、論理回路部５のフリップフロップ１２を特定するためのアドレス及び再設定データ１６を読み出す。さらに、再設定制御部７は、設定部１３に対して、フリップフロップ１２を特定するためのアドレスと制御信号１７を出力し、フリップフロップ１２に再設定データ１８を書き込む。
【００３５】
第１実施例は、図１及び図２に示すように、本発明による最も基本的なソフトエラー対策回路６であり、ソフトエラーによる二次障害を対策するため、アドレスと制御信号１７とによって指示した特定のフリップフロップ１２にデータを再設定する。一般的に、通信装置で用いられる論理回路は、主信号データを扱うデータパス系論理部と、データパス系論理部を制御する制御部と、ＣＰＵ等からの設定情報を保持する設定系レジスタ部とに大別できる。第１実施例のソフトエラー対策回路６は、特に、制御部及び設定系レジスタ部に有効である。この理由は以下の通りである。データパス系論理部は、データの一部に誤りが発生しても、データが流れるため、時間の経過に伴って正常化され、また時間軸上で一時的な僅かな時間において生じたビットエラーであれば、システム上も許容できる場合がある。しかし、制御部及び設定系レジスタ部は、エラーが生じると、二次障害によってシステム全体に対して誤動作が拡大する恐れがあり、積極的な訂正が必要となる。
【００３６】
なお、第１実施例では、論理回路部５中のフリップフロップ１２に対する再設定を制御する回路について説明したが、本実施例によるソフトエラー対策回路６を用いることによって、ＦＰＧＡ１に搭載される内蔵メモリや、その他エンベデッドに構成されるハードウェア・マクロなどにも同様の再設定をすることができる。
【００３７】
第１実施例では、図１に示すように、再設定制御部７はコンフィグレーションメモリ２内に構成されている。再設定制御部７をコンフィグレーションメモリ２で構成することによって、システムが求める再設定方法に応じて柔軟に回路を構成できる。
【００３８】
コンフィグレーションメモリ制御部３は、再設定制御部７に対するソフトエラーも検出することができる。再設定制御部７のエラーを検出した場合は、制御機能自体を保証できないため、再設定制御部７のエラーを検出した時点で、ＦＰＧＡ１自体を再コンフィグレーションしてもよい。なお、再設定制御部７のソフトエラー発生率を低減するためには、極力、回路規模を小さく抑えることや、再設定制御部７を３重化し多数決により制御方法を決定する構成等がある。なお、再設定制御部７は、コンフィグレーションメモリ２の外に構成してもよい。この場合、再設定制御部７を、よりソフトエラー耐力のあるＦＰＧＡやプロセッサ等に搭載してもよい。再設定制御部７に生じるソフトエラーの発生率を把握した上で、システムが求める信頼性に合わせて構成を決定してもよい。
【００３９】
以上に説明したように、従来の検出・訂正回路では、ＦＰＧＡ１内に構成された論理回路の一部に誤ったデータが保持され続ける不具合が生じることがあった。しかし、第１実施例によれば、前述した不具合を排除し、コンフィグレーションメモリ２にソフトエラーが発生した場合に、再設定制御部７がフリップフロップ１２に再設定データを書き込むので、論理回路の機能を正常化することができる。
【００４０】
＜実施例２＞
第２実施例では、論理回路部のフリップフロップの再設定をより簡易にできる回路の例を説明する。
【００４１】
図３は、第２実施例のソフトエラー対策回路６を示す構成図であり、図４は、第２実施例の配線接続交点におけるパストランジスタの構成を示す図であり、図５は、第２実施例の動作を示すタイミングチャートである。
【００４２】
図３に示すソフトエラー対策回路は、再設定制御部７と、四つの論理回路部群１９〜２２で構成される。図３では、一例として、ある条件保持信号２３を主機能部である論理回路部２２へ与える機能を考える。論理回路部群１９〜２２は、条件信号２４を生成するための論理回路部１９と、タイミング信号２５を生成する論理回路部２０と、タイミング信号２５によって条件信号２４の値を保持し、条件保持信号２３を出力する論理回路部２１と、条件保持信号２３を受信する論理回路部２２とで構成される。再設定制御部７は、現在の動作を一度初期化するために、エラー訂正フラグ１４をトリガとして、リセット信号２９を生成し、論理回路部群１９〜２２へ分配する。
【００４３】
なお、条件信号は４ｂｉｔのバス信号であるが、全てのｂｉｔが同じ構成であるため、ｂｉｔ０の接続のみを図３に示す。全ての回路はクロック２６で動作するクロック同期回路であり、クロック２６は数ＭＨｚ以上である。
【００４４】
ここで、図３の配線接続交点２７にソフトエラーが発生した場合、配線接続交点２７は、図４に示すパストランジスタ２８で構成され、構成データメモリ４に格納された回路情報に基づいてコンフィグレーションメモリ２にプログラミングされた値によって配線経路が決まる。例えば、ソフトエラー発生前のパストランジスタ２８はＯｎの状態であるが、コンフィグレーションメモリ２にソフトエラーが発生し、その設定情報のビットが反転されると、パストランジスタ２８はＯｆｆに変化し、経路が断たれる。但し、ＦＰＧＡ１には、図１で示したように、コンフィグレーションメモリ制御部３が設けられており、コンフィグレーションメモリ制御部３がコンフィグレーションメモリ２内のエラーを検出し、検出したエラーを訂正する。このため、エラーの発生から、しばらく時間を経過した後に訂正が完了し、経路が回復する。一般に、このエラー検出・訂正は、コンフィグレーションメモリ２内を巡回して行われるため、訂正完了までに、数ミリ秒〜数十ミリ秒程度の時間を要する。図３に示すように、数ＭＨｚのクロックで動作する論理回路部群１９〜２２では、エラーが訂正されるまでに多くのクロックがトグルされる（Ｏｎの状態とＯｆｆの状態が切り替わる）ために、二次障害が生じる可能性がある。
【００４５】
図５のタイミングチャートを用いて詳細の動作を説明する。
【００４６】
条件信号２４はタイミングＴ０で出力値を確定し、その値を取り込むためのタイミング信号２５はタイミングＴ３で確定する。ソフトエラーが発生し、タイミングＴ１で条件信号２４のｂｉｔ０が”１”→”０”に反転した場合、エラーが検出されるのはタイミングＴ２であり、Ｔ２から所定時間経過後のタイミングＴ４に訂正が完了する。このように、エラーの発生から訂正の完了までに、クロックサイクルに対して、かなり長い時間を必要とするため、タイミングＴ３の時点では論理回路部２１で確定する条件保持信号２３は、本来取るべき値である”１０１１”とは異なる”１０１０”の誤った値を保持する。このため、以降、条件信号２４が変化しなくても、次のタイミング信号２５が”Ｈ”になるまでは、論理回路部２２は誤った値で動作することとなる。そこで、図３に示す再設定制御部７では、現在の誤った動作を一度初期化するために、エラーが訂正されるタイミングＴ４以降に、確定するエラー訂正フラグ１４をトリガとして、リセット信号２９を生成し、論理回路部群１９〜２２へ分配する。リセット信号２９で論理回路部群１９〜２２が初期化されることによって、ＦＰＧＡ１全体が初期状態に戻る。
【００４７】
第１実施例では、アドレスによって、論理回路部５中の特定のフリップフロップ１２に対してデータを再設定したが、フリップフロップ１２に個々に指示を与えるためには、図１に示すように、対象とするアドレス及び再設定データ１６を再設定データメモリ８に格納する必要がある。また、アドレスをデコードするための設定部１３が論理回路部５に必要である。また、再設定を完了するまでにも時間がかかる。
【００４８】
これに対し、第２実施例では、論理回路部２１のフリップフロップを初期状態に戻すのみだけでよいため、論理回路部２１の付帯回路が不要であり、短時間で再設定を完了できることが特徴である。
【００４９】
初期化の対象範囲は、図３で説明した配線接続交点２７のように、ソフトエラーはコンフィグレーションメモリ２中のどこでも発生する可能性があるため、二次障害の波及範囲を特定することは難しい。このため、システムの仕様に応じて、一部の論理回路部のみを初期化してもよく、ＦＰＧＡ全体の論理回路部をリセットしてもよい。例えば、複数のリセット線を設け、各論理回路部が一つのリセット線に接続されている場合、一部のリセット線のみにリセット信号を送信し、一部の論理回路部のみを初期化してもよい。
【００５０】
以上に説明したように、第２実施例によれば、アドレス制御が不要となるので、小さな回路規模でデータを再設定することができる。また、リセットを送ればよいので、簡単案制御によってデータを再設定することができる。特に、全体のデータを再設定する場合には、１本のリセット線だけでよく、回路を簡素化することができる。
【００５１】
＜実施例３＞
第３実施例では、再設定の頻度を軽減するため、エラーが発生した箇所が、コンフィグレーションメモリ２の中で論理回路部として使用されている領域であると判定され、かつエラー訂正が完了したときのみ、論理回路部５のフリップフロップ（データ保持機能）１２の値を再設定する回路の例を説明する。
【００５２】
図６は、第３実施例のソフトエラー対策回路６を示す構成図である。
【００５３】
第３実施例（図６）では、第１実施例（図１）と異なり、コンフィグレーションメモリ２内を論理回路部群３４で使用されている使用領域３０と未使用領域３１とで異なる扱いをする。
【００５４】
第３実施例では、コンフィグレーションメモリ２内の領域が使用されているかの情報を、例えばビットマップ形式で、構成データメモリ４に格納する。このビットマップは、構成データメモリ４から回路情報を読み出してコンフィグレーションメモリ２に設定する際に、同時に設定するとよい。そして、このビットマップを参照することによって、論理回路に使用されている使用領域３０と論理回路に使用されていない未使用領域３１とを特定することができる。
【００５５】
コンフィグレーションメモリ制御部３は、構成データメモリ４に格納されたビットマップを参照して、ソフトエラーが使用領域３０に該当するかを判定する。そして、コンフィグレーションメモリ制御部３は、ソフトエラー発生箇所が使用領域３０に該当した場合のみに該当フラグ１４をアサートする該当判定機能を有する。該当判定機能は、第１実施例（図１）で説明したものと同じである。従って、該当フラグ１４を検出し、且つエラー訂正が完了した場合のみに、ＦＰＧＡ１内の論理回路部群３４中に二次障害が発生した可能性があると判定し、第１実施例で示した再設定方法や、第２実施例で示した初期化方法を行う。
【００５６】
一般に、ＦＰＧＡ１は、プログラミングの自由度を広げるために、プログラミングされる論理回路部の規模の数倍〜数１０倍のリソースを有し、膨大なコンフィグレーションメモリ２の領域が確保される。しかし、実際に使用される使用領域の割合は未使用領域に対して小さいことが多い。このため、第３実施例のように該当フラグ１４を利用することによって、再設定を行う範囲を少なくし、システムの停止時間を短縮することができる。
【００５７】
＜実施例４＞
第４実施例では、再設定の頻度をさらに低減するため、再設定が必要な論理回路部を特定し、特定された論理回路部（領域）のみを再設定する回路の例を説明する。
【００５８】
図７は、第４実施例のソフトエラー対策回路６を示す構成図である。
【００５９】
第４実施例（図７）では、第３実施例（図６）と異なり、再設定が必要な特定の論理回路部３５に分割する。
【００６０】
第４実施例のコンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２の領域単位でエラーを検出する。このため、コンフィグレーションメモリ２内に設けられた領域と、コンフィグレーションメモリ２のアドレスとの対応関係を保持する。この対応関係は、ＦＰＧＡ１の工場出荷時又は初期設定する際に設定するとよい。そして、この対応関係を参照することによって、エラーが検出された領域を特定することができる。
【００６１】
また、第４実施例では、再設定データメモリ８がコンフィグレーションメモリ２の領域に区分されており、各領域毎に、論理回路部５のフリップフロップ１２を特定するためのアドレス及び当該フリップフロップ１２を再設定するための再設定データ１６を格納する。
【００６２】
また、再設定制御部７は、アドレステーブル３３を格納する。アドレステーブル３３は、コンフィグレーションメモリ２内に設けられた領域と、コンフィグレーションメモリ２のアドレスとの対応関係を保持する。アドレステーブル３３を参照することによって、コンフィグレーションメモリ２のアドレスに該当する領域を特定することができる。
【００６３】
第４実施例では、図７に示すように、再設定が必要な特定の論理回路部３５を領域に分けて検出することによって、データパス系論理部は再設定せず、制御部及び設定レジスタ部のみを再設定するなど、さらに細かな再設定対象を特定することができ、再設定時間を短縮することができる。
【００６４】
なお、第３実施例と第４実施例とを併用して、使用領域の中でのみ再設定か必要な特定の論理回路部３５を検出してもよい。
【００６５】
また、第４実施例では、再設定が必要な特定の論理回路部３５の該当判定を、コンフィグレーションメモリ制御部３の機能によらず、再設定制御部７より制御してもよい。
【００６６】
例えば、コンフィグレーションメモリ制御部３は、該当フラグ１４を出力するとともに、エラーが発生したアドレス３２を出力する。再設定制御部７は、アドレステーブル３３を参照して、コンフィグレーションメモリ制御部３から出力されたエラーアドレス３２が該当する領域を判定し、該当する領域のアドレス・再設定データ１６を再設定データメモリ８から読み出し、ＦＰＧＡ１内部の再設定が必要な特定の論理回路部３５に対してのみ再設定をすることができる。
【００６７】
コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２全体に対して該当領域を判定するため、膨大な回路情報を構成データメモリ４に保持する必要がある。しかし、第４実施例のように、設計時に予め再設定が必要な特定の論理回路部３５のアドレスが決まっている場合、当該アドレスをアドレステーブル３３に登録することによって、回路規模や必要なメモリ規模を小さく抑えることができる。
【００６８】
また、設計時に予め再設定が必要なアドレスが決まっているので、当該決まっているアドレスの範囲で、データを再設定すればよいので、再設定を行う範囲を少なくし、システムの停止時間を短縮することができる。
【００６９】
＜実施例５＞
第５実施例では、再設定の対象領域の判定を容易にするため、論理回路部５に使用する領域をコンフィグレーションメモリ２内の定められた実装領域に設計段階で予め固定し、当該固定された領域内でエラーを検出して、訂正した場合に、再設定をする回路の例を説明する。
【００７０】
図６を用いて、第５実施例を説明する。
【００７１】
第３実施例では、コンフィグレーションメモリ内に自由に配置された論理回路部群３４に対して、コンフィグレーションメモリ制御部３が、ソフトエラーを検出し、ソフトエラーを検出した箇所が使用領域３０であるかを判定し、使用領域３０である場合に再設定制御部７が再設定を行う。
【００７２】
第５実施例では、例えば図６の使用領域３０を、論理回路部５を実装するための領域をコンフィグレーションメモリ２内の特定の物理的な領域に設計段階で予め固定し、当該領域範囲内に論理回路部５が配置されるように、ＦＰＧＡ１の実装設計の段階で考慮しておく。これにより、ソフトエラーの監視をＦＰＧＡ１特定の領域（使用領域３０）内のみに限定することができ、監視対象領域内でエラーが検出され、当該エラーが訂正されれた場合、フリップフロップ１２の値を再設定することができる。
【００７３】
以上に説明したように第５実施例によると、使用領域を判定するための該当判定機能がコンフィグレーションメモリ制御部３に搭載されていなくてもよい。また、コンフィグレーションメモリ制御部３が該当判定機能を搭載する場合でも、判定を行うための情報を構成データメモリ４に格納する必要がなく、外部メモリの記憶容量を削減することができ、外部メモリのコスト及び基板実装面積を低減することができる。
【００７４】
＜実施例６＞
第６実施例では、ソフトエラーの発生を契機に運用系を非運用系に切り替えるシステムを説明する。
【００７５】
図８は、第３実施例（図６）のソフトエラー対策回路６を搭載し、ソフトエラーの発生を契機に運用系を非運用系に切り替えるシステムの構成図である。
【００７６】
なお、第６実施例では通信装置を例にして説明するが、他のシステムにも適用することができる。また、通信装置が、第３実施例のソフトエラー対策回路６を搭載する例を説明するが、前述した第１から第５の何れの実施例のソフトエラー対策回路６を搭載してもよい。
【００７７】
通信装置Ａ４０と通信装置Ｂ４１との間では、運用系主信号４２及び非運用系主信号４３によって通信している。通信装置Ａ４０と通信装置Ｂ４１とは、それぞれ、運用系装置４４と非運用系装置４５とを搭載する。運用系装置４４と非運用系装置４５とは、ＦＰＧＡ１内の回路によって構成され、第３実施例のソフトエラー対策回路６を搭載し、コンフィグレーションメモリ２に発生するソフトエラーを検出すると、エラー検出信号４６を出力する。なお、運用系装置４４と非運用系装置４５とは、一つのＦＰＧＡ１内の回路によって構成しても、複数のＦＰＧＡ１内の回路によって構成してもよい。
【００７８】
セレクタ制御部４７は、運用系装置４４及び非運用系装置４５から出力されたエラー検出信号４６を監視し、運用系装置４４からのエラー検出信号４６を検出した場合、セレクタ制御信号４８をセレクタ４９に通知し、運用系主信号４２から非運用系主信号４３へセレクタ４９を切り替える。
【００７９】
非運用系主信号４３へ切り替えることによって、ソフトエラーを訂正し、データの再設定が完了するより早く、システム障害を復旧することができる。
【００８０】
ソフトエラーが発生した運用系装置４４は、運用系装置４４から非運用系装置４５へ切り替えた後、ソフトエラーを訂正し、データを再設定して、非運用系装置として継続してシステム運用することが可能になる。
【００８１】
一般的なＦＰＧＡの性能によれば、ソフトエラーの検出及び訂正からデータの再設定は数十ミリ秒〜数秒を要し、ソフトエラーの検出に要する時間は数マイクロ秒〜数ミリ秒である。ソフトエラーを検出した時点で非運用系装置４５に切り替えることによって、システム障害の時間を短縮することができる。
【００８２】
ソフトエラー対策回路６は、運用系装置４４から非運用系装置４５へ切り替えたタイミングで、ソフトエラーを検出したことを示す警報・故障情報５０を警報表示・通知部５１に通知する。警報表示・通知部５１は、ソフトエラーの検出を保守者へ通知することによって、ソフトエラーの発生を契機として、運用系装置４４から非運用系装置４５への切り替えが発生したことを知ることができる。また、第８実施例で説明するように、エラーの情報を警報・故障情報５０に含め、警報表示・通知部５１へ通知することができる。
【００８３】
前述した第６実施例の構成は、障害の発生から復旧までの停止許容時間が規定されているシステムに適用する。停止許容時間が規定されないシステムにおいては、非運用系装置４５、セレクタ４９、セレクタ制御部４７を搭載しなくてもよい。
【００８４】
以上に説明したように、第６実施例によると、現用系の回路を構成するコンフィグレーションメモリ２に発生するソフトエラーの検出を契機として、現用系の回路（運用系装置４４）と予備系の回路（非運用系装置４５）とを切り替え、検出されたソフトエラーによって発生する二次障害から復旧するためのエラーの訂正を実行し、エラーの訂正の後に論理回路に保持される値を回復するので、システムを規定内の時間で迅速に復旧することができる。
【００８５】
＜実施例７＞
第７実施例では、ソフトエラー対策回路に、ソフトエラーの検出及び訂正を行う機能部自身の故障やソフトエラーが発生した機能部を特定するための機能を追加した例を説明する。
【００８６】
図９は、第７実施例のソフトエラー対策回路６を示す構成図である。
【００８７】
第７実施例のソフトエラー対策回路６は、第３実施例のソフトエラー対策回路６に情報保持部６５が接続されている。コンフィグレーションメモリ制御部３から情報保持部６５へ、コンフィグレーション完了情報６０、ソフトエラーアドレス情報６１及び訂正不可情報６３が送信される。また、情報保持部６５からコンフィグレーションメモリ制御部３へ、ソフトエラーアドレス保持情報６２及び訂正不可保持情報６４が送信される。
【００８８】
次に、故障が発生した機能部を特定する方法を説明する。
【００８９】
図１０は、第７実施例において、コンフィグレーションメモリ２のソフトエラーを判定するシーケンス図である。
【００９０】
コンフィグレーションメモリ制御部３は、エラーの訂正後、コンフィグレーションメモリを１回スキャンする間に、同じアドレスで再度エラーを検出するかによってコンフィグレーションメモリ２のソフトエラーを判定する。
【００９１】
コンフィグレーションメモリ制御部３は、エラーの検出・訂正（Ｓ１００）の後、ソフトエラーアドレス情報６１を情報保持部６５へ通知する（Ｓ１０１）。
【００９２】
情報保持部６５は、コンフィグレーションメモリ制御部３から通知されたソフトエラーアドレス情報６１をＮミリ秒間保持し（Ｓ１０２）、ソフトエラーアドレス情報６１を保持する間、ソフトエラーアドレス保持情報６２をコンフィグレーションメモリ制御部３へ繰り返し返信する（Ｓ１０３）。なお、ソフトエラーアドレス保持情報６２を定期的に送信してもよい。
【００９３】
ソフトエラーアドレス情報６１を保持する時間（Ｎミリ秒）は、コンフィグレーションメモリ２を１回スキャンする時間を設定するとよい。
【００９４】
コンフィグレーションメモリ制御部３は、エラー検出監視期間（Ｎミリ秒）にエラーを検出しない場合、保持しているソフトエラーアドレス情報６１の破棄を情報保持部６５に指示する。なお、情報保持部６５が自律的に（例えば、Ｎミリ秒のタイマのタイムアップによって）ソフトエラーアドレス情報６１を破棄してもよい。
【００９５】
コンフィグレーションメモリ制御部３は、Ｎミリ秒間エラー検出監視を行い（Ｓ１０４）、Ｎミリ秒間にソフトエラーアドレス保持情報６２と一致するアドレスにエラーを検出しない場合（Ｓ１０５）、エラーが正常に訂正できているため、コンフィグレーションメモリ２のソフトエラーと判定する。よって、コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２のソフトエラーと判定した情報を警報・故障情報５０に含め、警報表示・通知部５１へ通知する（Ｓ１０６）。
【００９６】
警報表示・通知部５１は、コンフィグレーションメモリ２のソフトエラーを保守者に通知する（Ｓ１０７）。
【００９７】
図１１は、第７実施例において、構成データメモリ４の故障を判定するシーケンス図である。
【００９８】
コンフィグレーションメモリ制御部３は、エラーの訂正後、コンフィグレーションメモリ２を１回スキャンする間に、同じアドレスで再度エラーを検出するかによってコンフィグレーションメモリ２のソフトエラーを判定する。
【００９９】
コンフィグレーションメモリ制御部３は、エラー検出・訂正（Ｓ１１０）の後、ソフトエラーアドレス情報６１を情報保持部６５へ通知する（Ｓ１１１）。
【０１００】
情報保持部６５は、コンフィグレーションメモリ制御部３から通知されたソフトエラーアドレス情報６１をＮミリ秒間保持し（Ｓ１１２）、ソフトエラーアドレス情報６１を保持する間、ソフトエラーアドレス保持情報６２をコンフィグレーションメモリ制御部３へ繰り返し返信する（Ｓ１１３）。なお、ソフトエラーアドレス保持情報６２を定期的に送信してもよい。
【０１０１】
ソフトエラーアドレス情報６１を保持する時間（Ｎミリ秒）は、コンフィグレーションメモリ２を１回スキャンする時間を設定するとよい。なお、ソフトエラーアドレス情報６１を保持する時間は、最初のエラー検出監視期間（Ｎミリ秒）にエラーが検出された場合、次のエラー検出監視期間（Ｎミリ秒）が終了するまで延長される。
【０１０２】
コンフィグレーションメモリ制御部３は、Ｎミリ秒間エラー検出監視を行い（Ｓ１１４）、エラーを検出した（Ｓ１１５）。エラーを検出したアドレスがソフトエラーアドレス保持情報６２と一致した場合（Ｓ１１６）、エラーが訂正できていないため、コンフィグレーションメモリ制御部３は、訂正データを格納している構成データメモリ４又はコンフィグレーションメモリ２の故障であると判定する。
【０１０３】
ソフトエラー対策回路６は、故障箇所を特定するために、ＦＰＧＡ１を再コンフィグレーションする（Ｓ１１７）。再コンフィグレーションの完了後、コンフィグレーションメモリ制御部３は情報保持部６５へコンフィグレーション完了情報６０を送信する（Ｓ１１８）。
【０１０４】
情報保持部６５は、コンフィグレーション完了情報６０を受信すると、Ｎミリ秒間、ソフトエラーアドレス保持情報６２をコンフィグレーションメモリ制御部３へ繰り返し返信する（Ｓ１１９）。なお、ソフトエラーアドレス保持情報６２を定期的に送信してもよい。
【０１０５】
コンフィグレーションメモリ制御部３は、Ｎミリ秒間エラー検出監視を行い（Ｓ１２０）、ソフトエラーアドレス保持情報６２と一致するアドレスにエラーを検出しない場合（Ｓ１２１）、構成データメモリ４が故障し訂正データが誤っていると判定する。よって、コンフィグレーションメモリ制御部３は、構成データメモリ４の故障情報を警報・故障情報５０に含め、警報表示・通知部５１へ通知する（Ｓ１２２）。
【０１０６】
また、コンフィグレーションメモリ制御部３は、エラー検出監視期間（Ｎミリ秒）にエラーを検出しない場合、保持しているソフトエラーアドレス情報６１の破棄を情報保持部６５に指示する。なお、情報保持部６５が自律的に（例えば、Ｎミリ秒のタイマのタイムアップによって）ソフトエラーアドレス情報６１を破棄してもよい。
【０１０７】
警報表示・通知部５１は、構成データメモリ４の故障情報を保守者に通知する（Ｓ１２３）。
【０１０８】
図１２は、第７実施例において、コンフィグレーションメモリ２の故障を判定するシーケンス図である。
【０１０９】
再コンフィグレーションが完了するまでの手順は、図１１と同じである（Ｓ１１０〜Ｓ１１８）。再コンフィグレーションの完了後、コンフィグレーションメモリ制御部３は、Ｎミリ秒間エラー検出監視を行い（Ｓ１３０）、エラーを検出した（Ｓ１３１）。エラーを検出したアドレスがソフトエラー保持情報６２と一致した場合（Ｓ１３２）、構成データメモリ４から読み出された回路情報は正しいので、コンフィグレーションメモリ２の故障と判定することができる。このため、コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２の故障の情報を警報・故障情報５０に含め、警報表示・通知部５１へ通知する（Ｓ１３３）。
【０１１０】
警報表示・通知部５１は、コンフィグレーションメモリ２の故障を保守者に通知する（Ｓ１３４）。
【０１１１】
図１３は、第７実施例において、ソフトエラー対策回路６のソフトエラーを判定するシーケンス図である。
【０１１２】
エラー訂正不可を検出した後、ＦＰＧＡ１を再コンフィグレーションする。再コンフィグレーション完了後、コンフィグレーションメモリを１回スキャンする間に再度エラー訂正不可の検出有無を監視することで判定する。エラーの訂正可否は、前述したように、例えば、コンフィグレーションメモリ２がＥＣＣ訂正機能を有する場合、検出対象領域内で１ｂｉｔまでのエラーは訂正可能であるが、２ｂｉｔ以上のエラーは訂正不可能であると判定することができる。
【０１１３】
コンフィグレーションメモリ制御部３は、エラー訂正不可を検出した（Ｓ１４０）後、訂正不可情報６３を情報保持部６５へ通知する（Ｓ１４１）。情報保持部６５は、コンフィグレーションメモリ制御部３から通知された訂正不可情報６３保持する（Ｓ１４２）。
【０１１４】
ソフトエラー対策回路６は、故障箇所を特定するために、ＦＰＧＡ１を再コンフィグレーションする（Ｓ１４３）。再コンフィグレーションの完了後、コンフィグレーションメモリ制御部３は情報保持部６５へコンフィグレーション完了情報６０を送信する（Ｓ１４４）。
【０１１５】
情報保持部６５は、コンフィグレーション完了情報６０を受信すると、Ｎミリ秒間、訂正不可保持情報６４をコンフィグレーションメモリ制御部３へ繰り返し返信する（Ｓ１４５）。なお、訂正不可保持情報６４を定期的に送信してもよい。
【０１１６】
コンフィグレーションメモリ制御部３は、Ｎミリ秒の間にエラー訂正不可を検出しない場合（Ｓ１４６）、ソフトエラー対策回路６に発生したソフトエラーによって、回路が正常に動作できず、エラー訂正できないと判定する。よって、コンフィグレーションメモリ制御部３は、ソフトエラー対策回路６のソフトエラーを警報・故障情報５０に含め、警報表示・通知部５１へ通知する（Ｓ１４７）。
【０１１７】
警報表示・通知部５１は、ソフトエラー対策回路６のソフトエラーを保守者に通知する（Ｓ１４８）。
【０１１８】
図１４は、第７実施例において、コンフィグレーションメモリ２の故障を判定するシーケンス図である。
【０１１９】
再コンフィグレーションが完了するまでの手順は、図１３と同じである（Ｓ１４０〜Ｓ１４４）。再コンフィグレーションの完了後、Ｎミリ秒の間にエラー訂正不可を検出した場合（Ｓ１５０）、ソフトエラー対策回路６は正常に機能したが、コンフィグレーションメモリ２の故障によって訂正ができなかったと判定することができる。このため、コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２の故障の情報を警報・故障情報５０に含め、警報表示・通知部５１へ通知する（Ｓ１５１）。
【０１２０】
警報表示・通知部５１は、コンフィグレーションメモリ２の故障を保守者に通知する（Ｓ１５２）。
【０１２１】
前述したように、故障部位を判定するためには、ＦＰＧＡ１の再コンフィグレーションが必要である。再コンフィグレーションをすると、判定に用いるためのソフトエラーアドレス情報６１や訂正不可情報６３が初期化され消去される。第７実施例では、この情報の消去を防ぐために、ソフトエラーアドレス情報６１、訂正不可情報６３を情報保持部６５へ退避する。
【０１２２】
情報保持部６５は、ＦＰＧＡ１やプロセッサで構成することができる。情報保持部６５をＦＰＧＡ１で実現する場合、ソフトエラー対策回路６が必要となるため、図９に示す回路を搭載する。再コンフィグレーションされるＦＰＧＡ１と情報保持部６５との両方のソフトエラー対策回路６に同時にソフトエラーが発生すると、第７実施例の方法を実現することができない。しかし、両方のソフトエラー対策回路６で同時にソフトエラーが発生する確率は非常に小さいため、実用上の問題はない。
【０１２３】
以上に説明したように、第７実施例によると、ソフトエラーを検出・訂正する機能部が故障し又はソフトエラーが発生すると、エラーの検出・訂正を繰り返す可能性があったが、訂正後のエラー状態を詳しく分析することによって、故障した機能部を特定し、システムの保守性を向上することができる。
【０１２４】
また、エラーを検出したアドレスと、エラーの訂正の後にさらにエラーを検出したアドレスとを比較することによって、故障部位を分析するので、コンフィグレーションメモリ２のソフトエラーや、構成データメモリ４又はコンフィグレーションメモリ２の故障を的確に判定することができる。
【０１２５】
また、検出したエラーの訂正が不可能と判定した場合、論理回路の再コンフィグレーションを実行した後、再度エラーの訂正の可否を判定することによって、ソフトエラー対策回路６のソフトエラー又はコンフィグレーションメモリ２の故障を判定することができる。
【０１２６】
さらに、論理回路の再コンフィグレーション前にエラーを検出したアドレスの情報及び訂正可否の情報を格納する情報保持部６５を設けたので、再コンフィグレーションによって情報保持部６５に格納された情報は消去されることなく、検出されたソフトエラーアドレス情報６１及び訂正不可情報６３を用いて障害を復旧することができる。
【０１２７】
＜実施例８＞
図１５Ａ、図１５Ｂは、第８実施例におけるソフトエラー対策回路の処理を説明するフローチャートである。
【０１２８】
図１５Ａ、図１５Ｂに示すフローチャートは、第７実施例で説明したソフトエラーの検出・訂正を行う機能部の故障や、ソフトエラーが発生した機能部を特定する処理を含む。また、第６実施例で説明した運用系と非運用系とを切り替えるかを判定する処理も含む。
【０１２９】
コンフィグレーションメモリ制御部３は、コンフィグレーションメモリ２にエラーを検出すると、検出されたエラーが訂正可能かを判定する（Ｓｔｅｐ１）。その結果、訂正可能な場合（Ｓｔｅｐ１のＹＥＳ）、第６実施例の方法を用いて運用系と非運用系とを切り替え（Ｓｔｅｐ１０）、切替後に訂正処理を実行し（Ｓｔｅｐ２）、エラー検出フラグとエラー訂正フラグとの両方をアサートし出力する（Ｓｔｅｐ３）。その後、Ｓｔｅｐ３で訂正したエラーアドレスでＮミリ秒間に再度エラーを検出するかを監視する（Ｓｔｅｐ１１）。Ｎミリ秒間に同一アドレスでエラーを検出しない場合（Ｓｔｅｐ１１のＮＯ）、エラーが正しく訂正できたと判定できる。このため、再設定制御部７は、特定の論理回路部５に対する再設定を実行する。この論理回路部に対する再設定は、前述した第１から第５の何れの実施例の方法を採用してもよい（Ｓｔｅｐ５）。その後、コンフィグレーションメモリ２のソフトエラーであると判定し（Ｓｔｅｐ１２）、システムを復旧し、復旧を通知する（Ｓｔｅｐ２１）。
【０１３０】
一方、Ｓｔｅｐ１１において、Ｎミリ秒間に同一アドレスでエラーを検出した場合（Ｓｔｅｐ１１のＹＥＳ）、故障部位を特定するためにＦＰＧＡ１の全体を再コンフィグレーションする（Ｓｔｅｐ１３）。そして、再コンフィグレーションの完了後、Ｎミリ秒間に同一アドレスにエラーを検出するかを監視する（Ｓｔｅｐ１４）。
【０１３１】
そして、Ｓｔｅｐ１４において、Ｎミリ秒間に同一アドレスでエラーを検出しない場合（Ｓｔｅｐ１４のＮＯ）、構成データメモリ４の故障であると判定し（Ｓｔｅｐ１５）、構成データメモリ４の故障を通知する（Ｓｔｅｐ２２）。一方、Ｓｔｅｐ１４において、Ｎミリ秒間に同一アドレスでエラー検出した場合（Ｓｔｅｐ１４のＹＥＳ）、コンフィグレーションメモリ２の故障であると判定し（Ｓｔｅｐ１６）、コンフィグレーションメモリ２の故障を通知する（Ｓｔｅｐ２３）。
【０１３２】
一方、訂正不可能な場合（Ｓｔｅｐ１のＮＯ）、第６実施例の方法を用いて運用系と非運用系とを切り替える（Ｓｔｅｐ１７）。その後、コンフィグレーションメモリ制御部３はエラー検出フラグのみをアサートし出力する（Ｓｔｅｐ４）。つまり、エラー訂正フラグは、デアサートし出力しない。その後、再設定制御部７は、構成データメモリ４から回路情報を読み出して、ＦＰＧＡ１の全体を再コンフィグレーションし（Ｓｔｅｐ６）、その後、エラーが検出されたアドレスでＮミリ秒間に訂正不可を検出するかを監視する（Ｓｔｅｐ１８）。
【０１３３】
Ｎミリ秒間に同一アドレスで訂正不可を検出しない場合（Ｓｔｅｐ１８のＮＯ）、ソフトエラー対策回路６にソフトエラーが発生したと判定し（Ｓｔｅｐ１９）、ＦＰＧＡ１を再起動した後、全ての論理回路部を初期化し（Ｓｔｅｐ７）、システムを復旧し、復旧を通知する（Ｓｔｅｐ２４）。
【０１３４】
一方、Ｎミリ秒間に訂正不可を検出した場合（Ｓｔｅｐ１８のＹＥＳ）、コンフィグレーションメモリ２の故障である判定し（Ｓｔｅｐ２０）、コンフィグレーションメモリ２の故障を通知する（Ｓｔｅｐ２５）。
【０１３５】
なお、図１５Ａ、図１５Ｂに示すフローチャートは、図１０から図１４で説明した判定シーケンスを全て含むが、一部の故障部位のみを検出する判定シーケンスのみを含んでもよい。特に、Ｓｔｅｐ１〜３、５及び１０〜１６の判定処理と、Ｓｔｅｐ１、４、６〜５及び１７〜２０の判定処理とは、容易に分離可能で、一方のみを実装することができる。
【０１３６】
以上に説明したように、第８実施例では、訂正後のエラー状態を詳しく分析することによって、故障した機能部を容易に特定することができる。
【０１３７】
なお、本発明は前述した実施例に限定されるものではなく、添付した特許請求の範囲の趣旨内における様々な変形例及び同等の構成が含まれる。例えば、前述した実施例は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を有するものに本発明は限定されない。また、ある実施例の構成の一部を他の実施例の構成に置き換えてもよい。また、ある実施例の構成に他の実施例の構成を加えてもよい。また、各実施例の構成の一部について、他の構成の追加・削除・置換をしてもよい。
【０１３８】
また、前述した各構成、機能、処理部、処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等により、ハードウェアで実現してもよく、プロセッサがそれぞれの機能を実現するプログラムを解釈し実行することにより、ソフトウェアで実現してもよい。
【０１３９】
各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリ、ハードディスク、ＳＳＤ（Solid State Drive）等の記憶装置、又は、ＩＣカード、ＳＤカード、ＤＶＤ等の記録媒体に格納することができる。
【０１４０】
また、制御線や情報線は説明上必要と考えられるものを示しており、実装上必要な全ての制御線や情報線を示しているとは限らない。実際には、ほとんど全ての構成が相互に接続されていると考えてよい。
【０１４１】
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげられる。
【０１４２】
（１）プログラミング可能な論理回路を有するプログラマブルゲートアレイであって、
論理回路が設定されるコンフィグレーションメモリと、
前記コンフィグレーションメモリ内のソフトエラーを正常化する対策回路とを備え、
前記対策回路は、
前記コンフィグレーションメモリに発生するソフトエラーによって発生する二次障害から復旧するためのエラー訂正を実行し、
前記エラー訂正の後に前記論理回路に保持される値を回復することを特徴とするプログラマブルゲートアレイ。
【０１４３】
（２）前記対策回路は、前記論理回路に保持すべき値を再設定することによって、前記論理回路に保持される値を回復することを特徴とする（１）に記載のプログラマブルゲートアレイ。
【０１４４】
（３）前記対策回路は、前記エラー訂正の後に前記論理回路に保持される値を初期状態に戻すことによって、前記論理回路に保持される値を回復することを特徴とする（１）に記載のプログラマブルゲートアレイ。
【０１４５】
（４）前記対策回路は、
前記ソフトエラーが発生した箇所が前記コンフィグレーションメモリの中で論理回路として使用されている領域かを判定し、
前記ソフトエラーが発生した箇所がコンフィグレーションメモリの中で論理回路として使用されている領域である場合、当該論理回路に保持される値を再設定することを特徴とする（１）から（３）の何れか一つに記載のプログラマブルゲートアレイ。
【０１４６】
（５）前記対策回路は、
前記ソフトエラーが発生した箇所が所定の領域かを判定し、
前記ソフトエラーが発生した箇所が所定の領域である場合、当該論理回路に保持される値を再設定することを特徴とする（１）から（３）の何れか一つに記載のプログラマブルゲートアレイ。
【０１４７】
（６）前記論理回路は予め決められた実装領域を使用するものであって、
前記対策回路は、
前記ソフトエラーが発生した箇所が前記実装領域かを判定し、
前記ソフトエラーが発生した箇所が前記実装領域である場合、当該論理回路に保持される値を再設定することを特徴とする（１）から（３）の何れか一つに記載のプログラマブルゲートアレイ。
【０１４８】
（７）前記対策回路は、
前記ソフトエラーの訂正が可能かを判定し、
前記ソフトエラーの訂正が可能である場合、（１）から（５）の何れか一つに記載の方法によって前記論理回路に保持される値を再設定し、
前記ソフトエラーの訂正が不可能である場合、全ての前記論理回路を初期化することを特徴とする（１）から（５）の何れか一つに記載のプログラマブルゲートアレイ。
【符号の説明】
【０１４９】
１  ＦＰＧＡ
２  コンフィグレーションメモリ
３  コンフィグレーションメモリ制御部
４  構成データメモリ
５  論理回路部群
６  ソフトエラー対策回路
７  再設定制御部
８  再設定データメモリ
９Ａ  アドレス線
９Ｂ  データ線
１０  基本回路モジュール
１１  組合せ論理部
１２  フリップフロップ
１３  設定部
１４  エラー検出・訂正・該当フラグ
１５  読出しアドレス及び制御信号
１６  アドレス及び再設定データ
１７  アドレスと制御信号
１８  再設定データ
１９〜２２  論理回路部
２３  条件保持信号
２４  条件信号
２５  タイミング信号
２６  クロック
２７  配線接続交点
２８  パストランジスタ
２９  リセット
３０  使用領域
３１  未使用領域
３２  エラーアドレス
３３  アドレステーブル
３４  論理回路部
３５  再設定が必要な特定の論理回路部
４０  通信装置Ａ
４１  通信装置Ｂ
４２  運用系主信号
４３  非運用系主信号
４４  運用系装置
４５  非運用系装置
４６  エラー検出信号
４７  セレクタ制御部
４８  セレクタ制御信号
４９  セレクタ
５０  警報・故障情報
５１  警報表示・通知部
６０  コンフィグレーション完了情報
６１  ソフトエラーアドレス情報
６２  ソフトエラーアドレス保持情報
６３  訂正不可情報
６４  訂正不可保持情報
【図１】
2015201814.tif 000003
【図２】
2015201814.tif 000004
【図３】
2015201814.tif 000005
【図４】
2015201814.tif 000006
【図５】
2015201814.tif 000007
【図６】
2015201814.tif 000008
【図７】
2015201814.tif 000009
【図８】
2015201814.tif 000010
【図９】
2015201814.tif 000011
【図１０】
2015201814.tif 000012
【図１１】
2015201814.tif 000013
【図１２】
2015201814.tif 000014
【図１３】
2015201814.tif 000015
【図１４】
2015201814.tif 000016
【図１５Ａ】
2015201814.tif 000017
【図１５Ｂ】
2015201814.tif 000018