(57)【要約】【課題】コンフィグレーションデータのエラーチェック周期を短くする。【解決手段】プログラマブル論理回路装置は、コンフィグレーションデータを記憶するコンフィグレーションメモリと、コンフィグレーションメモリに記憶されたコンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、コンフィグレーションメモリ内のコンフィグレーションデータのうち、プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを前記コンフィグレーションメモリから順番に繰り返し読み出す制御回路と、制御回路が読み出した対象コンフィグレーションデータをエラーチェックするエラー検出回路とを有する。【選択図】図８
2016167669.tif 000002
【特許請求の範囲】
【請求項１】
コンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記コンフィグレーションメモリに記憶された前記コンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、
前記コンフィグレーションメモリ内の前記コンフィグレーションデータのうち、前記プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを、前記コンフィグレーションメモリから順番に繰り返し読み出す制御回路と、
前記制御回路が読み出した対象コンフィグレーションデータをエラーチェックするエラー検出回路と、を有するプログラマブル論理回路装置。
【請求項２】
前記制御回路は、前記コンフィグレーションメモリに、前記コンフィグレーションデータに加えて、前記対象コンフィグレーションデータのアドレスを書き込み、
前記制御回路は、前記コンフィグレーションメモリから前記対象コンフィグレーションデータのアドレスを読み出し、前記アドレスに基づいて前記対象コンフィグレーションデータを読み出し前記エラー検出回路に供給する、請求項１に記載のプログラマブル論理回路装置。
【請求項３】
前記制御回路は、前記コンフィグレーションメモリに、前記コンフィグレーションデータを、複数のアドレスに分割して書き込み、
前記制御回路は、前記複数のアドレスそれぞれに、前記コンフィグレーションデータと、次にチェックする前記対象コンフィグレーションデータのアドレスである次のアドレスとを書き込み、
前記制御回路は、第１のアドレスの前記コンフィグレーションデータと前記次のアドレスとを読み出し、前記次のアドレスに基づいて第２のアドレスの前記コンフィグレーションデータを読み出す、請求項２に記載のプログラマブル論理回路装置。
【請求項４】
前記コンフィグレーションメモリの複数のアドレスに記憶される前記コンフィグレーションデータそれぞれに対して、前記対象コンフィグレーションデータであることを示す複数のチェック優先値が割り当てられ、
前記制御回路は、前記コンフィグレーションメモリに、前記対象コンフィグレーションデータのアドレスを、前記複数のチェック優先値それぞれに対応して書き込み、
前記制御回路は、前記コンフィグレーションメモリから、選択されたチェック優先値に対応する前記対象コンフィグレーションデータのアドレスを読み出す、請求項２に記載のプログラマブル論理回路装置。
【請求項５】
さらに、前記コンフィグレーションメモリの複数のアドレスそれぞれに前記対象コンフィグレーションデータが記憶されているか否かを示すエラーチェックビットを、前記複数のアドレスそれぞれに対応して記憶するエラーチェックビットレジスタを有し、
前記制御回路は、前記エラーチェックビットレジスタ内の前記エラーチェックビットが前記対象コンフィグレーションデータが記憶されていることを示すアドレスのデータを、順番に読み出す、請求項１に記載のプログラマブル論理回路装置。
【請求項６】
コンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記コンフィグレーションメモリに記憶された前記コンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、
前記コンフィグレーションデータをエラーチェックするエラー検出回路と、を有するプログラマブル論理回路装置のエラー検出方法において、
前記コンフィグレーションメモリ内の前記コンフィグレーションデータのうち、前記プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを、前記コンフィグレーションメモリから順番に繰り返し読み出す工程と、
前記エラー検出回路が、前記繰り返し読み出した対象コンフィグレーションデータをエラーチェックする工程とを有する、プログラマブル論理回路装置のエラー検出方法。
【請求項７】
さらに、前記コンフィグレーションメモリに、前記コンフィグレーションデータに加えて、前記対象コンフィグレーションデータのアドレスを書き込む工程を有し、
前記読み出す工程は、前記コンフィグレーションメモリから前記対象コンフィグレーションデータのアドレスを読み出し、前記アドレスに基づいて前記対象コンフィグレーションデータを前記コンフィグレーションメモリから読み出して前記エラー検出回路に供給する、請求項６に記載のプログラマブル論理回路装置のエラー検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，プログラマブル論理回路装置及びそのエラー検出方法に関する。
【背景技術】
【０００２】
プログラマブル論理回路装置（またはプログラマブルロジックデバイス）は、LSI製造後に、内部の論理回路を変更することができる集積回路装置である。プログラマブル論理回路のうち、フィールドプログラマブルゲートアレイ（以下FPGAと省略する）は、内部の論理回路を書き換え可能である。
【０００３】
したがって、ユーザは、所望のタイミングで、内部の論理回路の構成を定義するコンフィグレーションデータをFPGAにダウンロードし、FPGAを所望の論理回路に変更することができる。例えば、通信用の集積回路装置は、通信規格の変化に対応する必要があることから、FPGAが広く利用されている。すなわち、ユーザは、製造後にコンフィグレーションデータを新規格に対応させて変更することで、FPGAを新規格に対応する集積回路装置に変更することができる。
【０００４】
FPGAは、コンフィグレーションデータを書き換え可能なコンフィグレーションメモリを内蔵する。FPGAは、外部のメモリ内のコンフィグレーションデータを内部のコンフィグレーションメモリにダウンロードする。その結果、コンフィグレーションメモリに書き込まれたコンフィグレーションデータに基づいて内部の論理回路が再構築される。
【０００５】
FPGAは、近年の微細化と大規模化に伴い、内部のコンフィグレーションメモリに書き込まれたコンフィグレーションデータが放射線によってビット反転するソフトエラーが発生する。そのため、FPGAは、コンフィグレーションメモリのコンフィグレーションデータを常時読み出してエラーチェックし、訂正可能なら訂正コンフィグレーションデータを生成しコンフィグレーションメモリに上書きする。また、FPGAは、エラーチェックによりエラーが検出されると、上位システムにエラー検出を報告する。これに応答して上位システムは、エラーが検出された内部論理回路の処理結果はエラーが含まれているため、その間の処理結果を破棄し、コンフィグレーションデータのコンフィグレーションメモリへの再ダウンロードを実行し、エラーが発生した処理を再度実行させる。
【０００６】
FPGAのソフトエラーについては、以下の特許文献などに記載されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００６−３４４２２３号公報
【特許文献２】特開２００７−２９３８５６号公報
【特許文献３】特表２０１４−５０２４５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
FPGAは、コンフィグレーションメモリ内のコンフィグレーションデータを順番に読み出し、エラーチェックを繰り返す。そのため、あるコンフィグレーションデータにソフトエラーが発生した時からそのエラーが検出される時までにタイムディレイが発生する。
【０００９】
ソフトエラーが発生した以降の内部論理回路は、エラーデータにより構築された論理回路であるため、その論理回路の出力は信頼できない。したがって、ソフトエラーが発生した時からそのエラーが検出されるまでの時間をできるだけ短くすることが望ましい。
【００１０】
そこで，実施の形態の第１の側面の目的は，エラー発生時からエラー検出時までの時間を短くしたプログラマブル論理回路装置及びそのエラー検出方法を提供することにある。
【課題を解決するための手段】
【００１１】
本実施の形態の第１の側面は，コンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記コンフィグレーションメモリに記憶された前記コンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、
前記コンフィグレーションメモリ内の前記コンフィグレーションデータのうち、前記プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを、前記コンフィグレーションメモリから順番に繰り返し読み出す制御回路と、
前記制御回路が読み出した対象コンフィグレーションデータをエラーチェックするエラー検出回路と、を有するプログラマブル論理回路装置である。
【発明の効果】
【００１２】
第１の側面によれば，エラー発生時からエラー検出時までの時間を短くすることができる。
【図面の簡単な説明】
【００１３】
【図１】プログラマブル論理回路装置に構成を示す図である。
【図２】コンフィグレーションメモリ１２のビットマップの一例を示す図である。
【図３】プログラマブル論理回路１１の構成例を示す図である。
【図４】ルックアップテーブルの構成例を示す図である。
【図５】プログラマブル論理回路装置のコンフィグレーションメモリの構成例を示す図である。
【図６】CRAM制御回路とエラー検出・訂正回路のエラー検出例のフローチャート図である。
【図７】CRAM制御回路とエラー検出・訂正回路によるコンフィグレーションデータのエラー検出の動作例を示すタイミングチャート図である。
【図８】第１の実施の形態におけるプログラマブル論理回路装置の構成例を示す図である。
【図９】第１の実施の形態におけるCRAM制御回路１３の回路構成を示す図である。
【図１０】第１の実施の形態におけるCRAM制御回路とエラー検出・訂正回路のエラー検出動作例のフローチャート図である。
【図１１】本実施の形態におけるCRAM制御回路とエラー検出・訂正回路によるコンフィグレーションデータのエラー検出の動作例を示すタイミングチャート図である。
【図１２】ソフトエラーのエラーチェックの優先値の一例を示す図表である。
【図１３】プログラマブル論理回路の一例を示す図である。
【図１４】設計ツールが生成するプログラマブル論理回路の設計データの一例を示す図である。
【図１５】図１３，１４のプログラマブル論理回路装置の各回路ブロックのエラーチェック優先値とフレームアドレスの一例を示す図である。
【図１６】図１５に基づいて設計ツールが生成するフレームアドレス毎のエラーチェック優先値と次のフレームアドレスの例を示す図である。
【図１７】第１の実施の形態の変形例を示す図である。
【図１８】第２の実施の形態におけるプログラマブル論理回路装置の構成例を示す図である。
【図１９】第２の実施の形態の変形例のプログラマブル論理回路装置の構成例を示す図である。
【発明を実施するための形態】
【００１４】
図１は、プログラマブル論理回路装置に構成を示す図である。図１のプログラマブル論理回路装置は、例えばFPGAである。FPGA１０は、コンフィグレーションデータを記憶するコンフィグレーションメモリ（CRAM：Configuration RAM）１２と、コンフィグレーションメモリに記憶されたコンフィグレーションデータに基づいて論理回路が構築されるプログラマブル論理回路１１とを有する。また、FPGA１０は、コンフィグレーションメモリ１２へのデータの読み出し及び書き込みを制御するCRAM制御回路１３と、コンフィグレーションデータのエラーチェックを行い、エラーが訂正可能な場合にエラーを含むコンフィグレーションデータを訂正するエラー検出・訂正回路１４を有する。
【００１５】
FPGA１０は、コンフィグレーションデータが書き込まれた外部のコンフィグレーションデータ・メモリ（第２のコンフィグレーションメモリ）２に接続される。外部のコンフィグレーションデータ・メモリ２は、例えばフラッシュメモリなどの不揮発性メモリである。
【００１６】
設計ツールにより回路設計が行われると、その設計した論理回路に対応するコンフィグレーションデータが生成される。そして、そのコンフィグレーションデータとそのエラー検出・訂正のための符号とが、外部のコンフィグレーションデータ・メモリ２に格納される。外部のコンフィグレーションデータ・メモリ２は、放射線の照射により記憶データの値が反転することはほとんどない、またはコンフィグレーションメモリ１２より反転しにくい。したがって、外部のコンフィグレーションデータ・メモリ２は、ほぼ常に正しいコンフィグレーションデータとエラー検出・訂正のための符号を記憶している。
【００１７】
CRAM制御回路１３は、上位システム１からのダウンロード指示信号１０１に応答して、外部のコンフィグレーションデータ・メモリ２からコンフィグレーションデータをダウンロードし、内部のコンフィグレーションメモリ１２に書き込む。上位システム１は、ダウンロード指示信号１０１を、例えば電源起動時や、プログラマブル論理回路内のコンフィグレーションデータに訂正不可能なエラーが発生した時などに生成する。
【００１８】
コンフィグレーションメモリ１２にコンフィグレーションデータが書き込まれると、そのコンフィグレーションデータに基づいてプログラマブル回路１１が再構築される。
【００１９】
コンフィグレーションメモリ１２は、例えばSRAM(Static RAM)である。コンフィグレーションメモリ１２は、大容量のコンフィグレーションデータを記憶するが、中性子線などの放射線の照射により、記憶されているコンフィグレーションデータの値が反転するソフトエラーが発生する。また、放射線以外の要因、例えば電源変動などによりデータの値が反転する場合もある。
【００２０】
プログラマブル論理回路は、後述するとおり、コンフィグレーションデータに基づいて回路構成が設定されているので、コンフィグレーションデータの値が反転すると論理回路の機能が変わってしまう。
【００２１】
そこで、CRAM制御回路１３は、コンフィグレーションメモリ１２内のコンフィグレーションデータを読み出し、エラー検出・訂正回路１４に供給する。それに応答して、エラー検出・訂正回路１４は、コンフィグレーションデータにエラーが含まれていないかチェックする。さらに、エラー検出・訂正回路１４は、エラーを検出すると、可能な場合はエラー訂正を行い、訂正されたコンフィグレーションデータを、CRAM制御回路１３を経由して、コンフィグレーションメモリ１２に上書きする。そして、エラー検出・訂正回路１４は、エラーが発生したコンフィグレーションと訂正の有無を含むエラー通知１１４を、上位システム１に送信する。
【００２２】
ソフトエラーの発生は予測不能であるので、CRAM制御回路１３は、常時、コンフィグレーションメモリ１２のコンフィグレーションデータを順番に読み出し、エラー検出・訂正回路１４にエラーチェックさせることを繰り返す。
【００２３】
図２は、コンフィグレーションメモリ１２のビットマップの一例を示す図である。コンフィグレーションメモリ１２は、横方向のフレームアドレスFadd毎に、４１のワードデータとCRC符号（Cyclic Redundancy Check: 巡回冗長検査符号）とを記憶する。１ワードは例えば３２ビットである。また、１つのフレームアドレスの４１のワードのうち、いずれかのワード（例えばワード＃２１）にECC（Error Correcting Code:エラー訂正符号）が格納される。
【００２４】
各フレームアドレス内の４０ワードのコンフィグレーションデータは、設計ツールで事前に計算されたCRC符号によりエラーチェックされ、ECCによりエラー訂正される。これにより、各フレームアドレスのコンフィグレーションデータにソフトエラーが発生すると、エラー検出・訂正回路１４は、そのエラーを検出し、可能な場合はそのエラーを訂正した訂正コンフィグレーションデータを生成する。
【００２５】
CRAM制御回路１３は、コンフィグレーションメモリ１２にアクセスする場合は、フレームアドレスFaddに基づいて４１のワードデータとCRC符号を読み出しまたは書き込む。したがって、CRAM制御回路１３は、コンフィグレーションメモリ１２内の全てのコンフィグレーションデータを読み出すためには、全フレームアドレスについて、コンフィグレーションデータの読み出し動作を繰り返す必要がある。
【００２６】
図３は、プログラマブル論理回路１１の構成例を示す図である。プログラマブル論理回路１１は、複数の論理回路ブロック１１０＿Ａ−１１０＿Ｄと、配線間を接続するスイッチボックス１１２と、配線と論理回路ブロック１１０の入出力端子とを接続するコネクションブロック１１１＿Ａ−１１１＿Ｄとを有する。論理回路ブロック１１０は、論理回路と後述するルックアップテーブルとを有する。ルックアップテーブルには参照データとしてコンフィグレーションデータが格納される。また、スイッチボックス１１２は、図示しない複数のスイッチを有し、複数のスイッチはコンフィグレーションデータにより任意のスイッチがオン状態に構築される。さらに、コネクションブロック１１１は、複数の配線と論理回路ブロックの入出力端子配線との交差位置にそれぞれスイッチを有し、それらのスイッチもコンフィグレーションデータによりオン状態に構築される。
【００２７】
図４は、ルックアップテーブルの構成例を示す図である。ルックアップテーブルLUTは、プログラマブル論理回路１１内に設けられる。ルックアップテーブルLUTは、複数のレジスタREGと、それらレジスタREGを選択するためのトーナメント型に配置された複数のセレクタSLとを有する。複数のレジスタREGには、コンフィグレーションメモリ１２内のコンフィグレーションデータが格納され、複数のセレクタSLはルックアップテーブルのアドレスADDa-ADDdによりそれぞれ制御される。図４の例では、ルックアップテーブルLUTは、１６個のレジスタREGと、１５個のセレクタSLを有する。
【００２８】
ルックアップテーブルLUTの複数のレジスタREGにコンフィグレーションデータを格納することで、任意のルックアップテーブルを構築することができる。そして、ルックアップテーブルLUTは、論理回路などが生成するアドレスADDa-ADDdにより選択されたレジスタのデータを出力し、出力に接続されたフリップフロップFFにラッチされる。
【００２９】
図３、図４で理解できるとおり、プログラマブル論理回路１１は、コンフィグレーションデータに基づいてスイッチ群やルックアップテーブルが任意の状態に構築され、任意の論理回路を構築する。そして、コンフィグレーションメモリ１２内のコンフィグレーションデータにソフトエラーが発生すると、構築された論理回路の機能が変更され正しい動作をしない。
【００３０】
図５は、プログラマブル論理回路装置のコンフィグレーションメモリの構成例を示す図である。図２で説明したとおり、コンフィグレーションメモリ１２は、複数のフレームアドレス毎に、所定ビット数のコンフィグレーションデータとそのCRC符号とを格納する。コンフィグレーションデータには放射線などによりその値が反転するソフトエラーが発生する。
【００３１】
CRAM制御回路１３は、コンフィグレーションメモリ１２内の各フレームアドレスのコンフィグレーションデータを読み出し、エラー検出・訂正回路１４が読み出されたコンフィグレーションデータのエラーチェックを行い、訂正可能な場合はエラー訂正された訂正コンフィグレーションデータを生成し、コンフィグレーションメモリ１２に上書きする。このコンフィグレーションデータの読み出し、エラーチェックとエラー訂正、そして訂正コンフィグレーションデータの上書きは、全てのフレームアドレスについて循環して繰り返される。
【００３２】
図６は、CRAM制御回路とエラー検出・訂正回路のエラー検出例のフローチャート図である。CRAM制御回路１３は、フレームアドレスを１に設定し（S10）、コンフィグレーションメモリ１２にアクセスしてフレームアドレスFadd=1のコンフィグレーションデータとそのECCとCRC符号を読み出し、読み出したデータR_DATAをエラー検出・訂正回路１４に供給する（S11）。
【００３３】
エラー検出・訂正回路１４は、読み出されたコンフィグレーションデータからCRC符号を計算し、予め記憶されていたCRC符号と比較することにより、読み出されたコンフィグレーションデータにエラーが含まれているか否かのチェックを行う(S11)。比較結果が不一致になりエラーが検出された場合（S12のYES）、エラー検出・訂正回路１４は、エラーが訂正可能な場合（S13のYES）は、ECCによりエラー訂正を行い、エラー通知１１４を上位システムに行う（S14）。また、エラー検出・訂正回路１４は、エラーが訂正不能の場合（S13のNO）は訂正不可のエラー通知１１４を上位システムに行う（S15）。いずれのエラー通知１１４にも、どのフレームアドレスにソフトエラーが発生したかの情報を含められる。また、エラー検出・訂正回路１４は、訂正コンフィグレーションデータC_DATAをCRAM制御回路１３に返信し、CRAM制御回路１３がコンフィグレーションメモリに訂正コンフィグレーションデータを上書きする。
【００３４】
そして、CRAM制御回路１３は、フレームアドレスが最後のアドレスNに達するまで（S16のNO）、フレームアドレスを＋１ずつインクリメントし（S17）、上記のコンフィグレーションデータの読み出し動作と、エラー検出・訂正回路１４によるエラー検出とエラー訂正と、訂正コンフィグレーションデータの書き込み動作を繰り返す。
【００３５】
図７は、CRAM制御回路とエラー検出・訂正回路によるコンフィグレーションデータのエラー検出の動作例を示すタイミングチャート図である。CRAM 制御回路１２は、エラーチェック対象のフレームアドレスを、Fadd#1からFadd#Nまで順番に且つ循環して変更しながら、各フレームアドレスでコンフィグレーションメモリにアクセスし、各フレームアドレスのコンフィグレーションデータとそのCRC符号及びECCを読み出す。そして、エラー検出・訂正回路１４は読み出されたコンフィグレーションデータのエラーチェック及びエラー訂正を行う。
【００３６】
図７の例では、フレームアドレスFadd#1のエラーチェックが終わった直後に、フレームアドレスFadd#2のコンフィグレーションデータについてエラーチェックをしている間に、フレームアドレスFadd#1のコンフィグレーションデータにソフトエラーが発生している。その場合、CRAM制御回路１３がその後フレームアドレスFadd#1のコンフィグレーションデータのエラーチェックを実行するとき初めてエラーを検出する。その結果、エラー発生時からエラー検出時まで最悪でフレームアドレスFaddの１サイクル分のエラーチェック動作の期間にわたり、プログラマブル論理回路の機能が正しくない状態になる。
【００３７】
論理回路の機能が正しくない状態にされると、エラーが検出されたコンフィグレーションデータを訂正してコンフィグレーションメモリに上書きして、プログラマブル論理回路の構成をリセットする必要がある。したがって、コンフィグレーションデータのエラー発生時からエラー検出時までのエラー状態（故障状態）の期間をできるだけ短くすることが要求される。
【００３８】
エラー検出周期は、プログラマブル論理回路の回路規模に基づくコンフィグレーションデータ容量が大きいほど長くなる。したがって、大規模化されるにしたがい、上記のエラー発生時からエラー検出時までのエラー時間が長くなり、好ましくない。
【００３９】
[第１の実施の形態]
プログラマブル論理回路装置では、必ずしも全てのプログラマブル論理回路が有効なコンフィグレーションデータにより構築されるわけではない。例えば、あるデザインされたFPGAの例では、プログラマブル論理回路の使用率が約７０％程度の場合、使用されたコンフィグレーションデータのフレームは５０％程度という結果がある。この場合は、エラーチェックが必要なフレームは５０％ということになる。
【００４０】
さらに、有効なコンフィグレーションデータにより構築されている論理回路の一部は、別の手段で機能故障を検出する機能を有したり、回路を冗長構成にして故障時に故障回路を他の冗長回路に切替えたりすることができる。そのような論理回路は、必ずしも常時エラーチェックを行う必要はない。そのような論理回路は、エラー検出・訂正回路によるエラーチェックを省略し、別の手段でエラーが検出された場合に、エラー検出・訂正回路によるエラーチェックとエラー訂正を行うようにすれば、常時繰り返し行われるエラーチェック動作の周期を短くできる。
【００４１】
そして、エラー検出動作においてコンフィグレーションメモリの読み出し動作に要する時間は、エラー検出・訂正回路１４によるエラーチェックやエラー訂正の時間よりも相対的に長い。したがって、エラーチェックする必要のないコンフィグレーションデータのコンフィグレーションメモリからの読み出し回数を抑制することで、エラーチェックの周期を大幅に短くできる。
【００４２】
そこで、第１の実施の形態におけるプログラマブル論理回路装置では、CRAM制御回路１３が、コンフィグレーションメモリ１２内の全コンフィグレーションデータのうち、プログラマブル論理回路１１内のエラーチェック対象回路に対応する対象コンフィグレーションデータを順番に繰り返し読み出す。そして、エラー検出回路が、CRAM制御回路１３が読み出した対象コンフィグレーションデータをエラーチェックする。
【００４３】
つまり、CRAM制御回路１３とエラー検出・訂正回路１４は、コンフィグレーションメモリ１２内の全てのデータを順番に読み出してエラーチェックするのではなく、コンフィグレーションメモリ１２内の全てのデータのうち、プログラマブル論理回路内のエラーチェック対象の回路に対応する対象コンフィグレーションデータだけを、順番に循環して読み出し、エラーチェックする。そのため、コンフィグレーションメモリ内の全てのデータをエラーチェックするよりも、エラーチェックの周期が短くなり、エラー発生時からエラー検出時までの期間を短くできる。
【００４４】
なお、前述の特開２００６−３４４２２３号公報、特開２００７−２９３８５６号公報では、未使用のコンフィグレーションデータのエラー検出を無視する機能を有するFPGAが記載されている。しかし、エラー検出は全てのコンフィグレーションデータに対して実行されている。
【００４５】
図８は、第１の実施の形態におけるプログラマブル論理回路装置の構成例を示す図である。外部のコンフィグレーションデータ・メモリ２には、コンフィグレーションデータとエラーチェックコードCRCに加えて、エラーチェック対象の論理回路に対応する対象コンフィグレーションデータのアドレスが記憶される。つまり、プログラマブル論理回路の設計段階で、設計ツールによりエラーチェック対象の論理回路に対応する対象コンフィグレーションデータのアドレスが生成され、外部のコンフィグレーションデータ・メモリ２に格納される。
【００４６】
そして、CRAM制御回路１３は、電源起動時やエラー検出時などに上位システム１から供給されるダウンロード指示信号１０１に応答して、外部のコンフィグレーションデータ・メモリ２のデータを内部のコンフィグレーションメモリ１２にダウンロードする。
【００４７】
図８には、コンフィグレーションメモリ１２にダウンロードされたデータの構成が示されている。コンフィグレーションメモリ１２には、フレームアドレス毎にコンフィグレーションデータとそのエラー検出符号CRCとが記憶される。そして、第１の実施の形態では、コンフィグレーションメモリ１２内にコンフィグレーションデータに加えて、エラーチェック対象回路に対応する対象コンフィグレーションデータのフレームアドレスも記憶される。特に、好ましい実施の形態では、各フレームアドレスに、コンフィグレーションデータとそのエラー検出符号CRCに加えて、次にエラーチェックすべきフレームアドレス（次のフレームアドレスN_Fadd）を記憶する。
【００４８】
図８の例では、フレーム１、４、８、１２、Ｎが対象コンフィグレーションデータを記憶する。したがって、フレーム１には次のフレームアドレスN＿Fadd＝４が、フレーム４には次のフレームアドレスN_Fadd＝８が、フレーム８には次のフレームアドレスN_Fadd＝１２が、そして、フレームNには次のフレームアドレスFadd＝１がそれぞれ記憶される。
【００４９】
このような構成でコンフィグレーションデータをコンフィグレーションメモリ１２内に記憶することで、CRAM制御回路１３は、エラーチェック動作において対象コンフィグレーションデータが記憶されるフレームのみを順番に読み出すことができる。
【００５０】
フレーム１が対象コンフィグレーションデータを記憶していない場合でも、フレーム１内の次のフレームアドレスN_Faddが読み出されることで、次の読み出し動作からエラーチェック対象のコンフィグレーションデータのみを読み出すことができる。そして、フレームNに、フレーム１のフレームアドレスではなく、最初の対象コンフィグレーションデータのフレームアドレスを記憶させることで、次にエラーチェック周期からはフレーム１の読み出しを回避することができる。
【００５１】
図９は、第１の実施の形態におけるCRAM制御回路１３の回路構成を示す図である。CRAM制御回路１３は、外部のコンフィグレーションデータ・メモリ２へのメモリアクセスを制御する第１のメモリアクセス制御回路１３１と、内部のコンフィグレーションメモリ１２へのメモリアクセスを制御する第２のメモリアクセス制御回路１３２とを有する。
【００５２】
さらに、CRAM制御回路１３は、ダウンロード指示信号１０１に応答して外部のコンフィグレーションデータ・メモリ２のデータのダウンロードを制御するダウンロード制御回路１３３を有する。ダウンロード制御回路１３３は、第１のメモリアクセス制御回路１３１に外部のコンフィグレーションデータ・メモリ２への読み出し指示信号１３６を出力すると共に、第２のメモリアクセス制御回路１３２に内部のコンフィグレーションメモリ１２への書き込み指示信号１３７を出力する。第１のメモリアクセス制御回路１３１が読み出したコンフィグレーションデータは、一旦データバッファ１３５に格納されてもよい。そして、第２のメモリアクセス制御回路１３２がデータバッファ１３５内のコンフィグレーションデータを内部のコンフィグレーションメモリ１２に書き込む。コンフィグレーションデータの読み出しと書き込みは、いずれもフレームアドレス毎に順番に行われる。
【００５３】
また、CRAM制御回路１３は、エラーチェックとエラー訂正を制御するエラー検出制御回路１３４を有する。エラー検出制御回路１３４は、第２のメモリアクセス制御回路１３２に読み出し指示信号１３８を出力し、常時、内部のコンフィグレーションメモリ１２内の対象コンフィグレーションデータを順番に読み出し、エラー検出制御回路１３４に読み出したコンフィグレーションデータR_DATAを出力する。また、エラー検出制御回路１３４は、第２のメモリアクセス制御回路１３２に書き込み指示信号１３９を出力し、エラー検出・訂正回路１４によりエラー訂正された訂正コンフィグレーションデータC_TADAを内部のコンフィグレーションメモリ１２に上書きする。
【００５４】
エラー検出制御回路１３４は、最初はフレームアドレスFadd＝１のコンフィグレーションデータを読み出し、フレームアドレスFadd=1内の次のフレームアドレスN_Faddを抽出し、次の読み出し指示信号１３８のフレームアドレスとして使用する。
【００５５】
図１０は、第１の実施の形態におけるCRAM制御回路とエラー検出・訂正回路のエラー検出動作例のフローチャート図である。図６と異なる動作は、工程S17Aにおける次のフレームアドレスの設定動作である。すなわち、CRAM制御回路１３は、工程S17Aで、読み出したフレーム内の次のフレームアドレスN_Faddを抽出し、それを次にアクセスするフレームアドレスFaddに設定する。
【００５６】
まず、CRAM制御回路１３は、フレームアドレスを初期値の１に設定し（S10）、コンフィグレーションメモリ１２にアクセスしてフレームアドレスFadd=1のコンフィグレーションデータとそのECCとCRC符号を読み出し、読み出したデータR_DATAをエラー検出・訂正回路１４に供給する（S11）。
【００５７】
エラー検出・訂正回路１４は、読み出されたコンフィグレーションデータからCRC符号を計算し、予め記憶されていたCRC符号と比較することにより、読み出されたコンフィグレーションデータにエラーが含まれているか否かのチェックを行う(S11)。エラーが検出された場合（S12のYES）、エラー検出・訂正回路１４は、エラーが訂正可能な場合（S13のYES）は、ECCによりエラー訂正を行い、エラー通知１１４を上位システムに行う（S14）。また、エラー検出・訂正回路１４は、エラーが訂正不能の場合（S13のNO）は訂正不可のエラー通知１１４を上位システムに行う（S15）。いずれのエラー通知１１４にも、どのフレームアドレスにソフトエラーが発生したかの情報を含められる。また、エラー検出・訂正回路１４は、訂正コンフィグレーションデータC_DATAをCRAM制御回路１３に返信し、CRAM制御回路１３がコンフィグレーションメモリに訂正コンフィグレーションデータを上書きする。ここまでの動作は、図６と同様である。
【００５８】
そして、CRAM制御回路１３は、アクセスしたフレームアドレスが最後のアドレスNでない場合（S16のNO）、読み出したフレームアドレス内の次のフレームアドレスN_Faddを抽出し、そのフレームアドレスN_Faddを次にアクセスするフレームアドレスに設定する（S17A）。そして、上記のコンフィグレーションデータの読み出し動作と、エラー検出・訂正回路１４によるエラー検出とエラー訂正と、訂正コンフィグレーションデータの書き込み動作を繰り返す。
【００５９】
上記のように、CRAM制御回路１３が、コンフィグレーションメモリ１２内に記憶されている対象コンフィグレーションデータのフレームアドレスFaddに基づいて、コンフィグレーションメモリ１２内の全てのデータのうち対象コンフィグレーションデータだけを読み出し、エラー検出・訂正回路１４がエラーチェックと可能な場合のエラー訂正を行い、内部のコンフィグレーションメモリ１２に上書きする。
【００６０】
図８に示された例では、コンフィグレーションメモリ１２内の次のフレームアドレスN_Faddが４、８、１２、Ｎ、１になっているので（Ｎは図示せず）、CRAM制御回路１３は、全てのフレームアドレスのコンフィグレーションデータを読み出すのではなく、フレームアドレスFadd＝１、４、８、１２、Ｎのコンフィグレーションデータを読み出す。したがって、CRAM制御回路１３は、コンフィグレーションメモリ内の全てのデータを読み出してエラーチェックするよりも、エラーチェック周期を短くすることができる。
【００６１】
図１１は、本実施の形態におけるCRAM制御回路とエラー検出・訂正回路によるコンフィグレーションデータのエラー検出の動作例を示すタイミングチャート図である。CRAM 制御回路１２は、エラーチェック対象のフレームアドレスを、最初はFadd#1とするが、次からはコンフィグレーションメモリ１２内の次のフレームアドレスN_Faddに順番に且つ循環して変更しながら、コンフィグレーションメモリ１２にアクセスし、各フレームアドレスのコンフィグレーションデータとそのCRC符号及びECCを読み出す。そして、エラー検出・訂正回路１４は読み出されたコンフィグレーションデータのエラーチェックを行う。
【００６２】
図７の例では、フレームアドレスFadd#1のエラーチェックが終わった後、その直後のフレームアドレスFadd#2のコンフィグレーションデータについてエラー検出動作中に、フレームアドレスFadd#1のコンフィグレーションデータにソフトエラーが発生している。しかし、図１１の例では、CRAM制御回路１３は、フレームアドレスFadd#4, Fadd#8, Fadd#12, Fadd#Nにアクセスする。そして、次のエラーチェック周期でフレームアドレスFadd#1のコンフィグレーションデータをチェックする時にエラーを検出する。そのため、フレームアドレスFadd#1のエラー発生から、次にフレームアドレスFadd#1でのエラー検出までの時間が、全てのフレームアドレスをエラーチェックする場合よりも短くなる。つまり、フレームアドレスFadd#1のコンフィグレーションデータで構築される回路構成がエラー状態になっている期間が短くなる。
【００６３】
［対象コンフィグレーションデータのフレームアドレスの生成］
次に、対象コンフィグレーションデータのフレームアドレスの生成について説明する。まず、FPGAなどのプログラマブル論理回路装置は、複数の回路ブロックを有する。そして、各回路ブロックは、回路構成がソフトエラーにより変更されてはいけない第１の回路ブロック、回路の障害を自分で検出する機能を有する自己障害検出機能付きの第２の回路ブロック、回路を冗長化して動作に異常が検出された場合に冗長構成の回路に切り替えて動作を継続できる第３の回路ブロックなどがある。そして、これらの回路ブロックに対するソフトエラーチェックの優先度は、以下のとおりである。
【００６４】
図１２は、ソフトエラーのエラーチェックの優先値の一例を示す図表である。図１２の例では、エラーチェック優先値が低いほど優先度が高いものとする。
【００６５】
第１の回路ブロックは、ソフトエラーが発生すると回路動作に異常が発生するので常時エラーチェックが必要である。そのため、エラーチェックの優先値は最も高い優先度を示す「１」に設定されるのが望ましい。
【００６６】
第２の回路ブロックは、自己障害検出機能を有しているので、必ずしも常時エラーチェックをする必要はない。但し、自己障害検出機能により障害が検出された場合、ソフトエラーが原因の場合はコンフィグレーションデータを訂正してコンフィグレーションメモリに上書きするか、訂正できない場合は外部のコンフィグレーションデータ・メモリ２からコンフィグレーションデータをダウンロードする。したがって、エラーチェックの優先値は次に優先度が高い「２」に設定されることが望ましい。
【００６７】
第３の回路ブロックは、異常が検出されても当分の間は冗長構成の回路で動作を継続できる。したがって、所定のタイミングでエラーチェックとエラー訂正を行えばよい。したがって、エラーチェックの優先値は次に優先度が高い「３」に設定されることが望ましい。
【００６８】
更に考慮すべき点は、プログラマブル論理回路装置は、必ずしも全ての回路構成が有効なコンフィグレーションデータによって有効な回路に構築されるわけではない。したがって、有効な回路を構築しているコンフィグレーションデータだけがエラーチェックされればよい。
【００６９】
上記のようなプログラマブル論理回路装置では、コンフィグレーションメモリ内のコンフィグレーションデータのうち、有効な回路構成を構築していないコンフィグレーションデータについては、ソフトエラーチェックは必要ない。したがって、そのエラーチェックの優先値は優先度が最も低い「４」に設定される。
【００７０】
図１３は、プログラマブル論理回路の一例を示す図である。図１３の例では、回路マクロＡ，Ｂ，Ｃ，Ｄが構築され、回路マクロＡは回路ブロックＡ１，Ａ２，Ａ３を有し、回路マクロＢは回路ブロックＢ１，Ｂ２，Ｂ３を有し、回路マクロＣは回路ブロックＣ１，Ｃ２を有し、そして、回路マクロＤは回路ブロックＤ１，Ｄ２を有する。
【００７１】
図１４は、設計ツールが生成するプログラマブル論理回路の設計データの一例を示す図である。図１４の設計データは、図１３に示したプログラマブル論理回路装置の例に対応する。すなわち、プログラマブル論理回路装置DEVICE#1は、４つの回路マクロＡ，Ｂ，Ｃ，Ｄを有し、各回路マクロは、図１２と同様にそれぞれ回路ブロックＡ１，Ａ２，Ａ３、回路ブロックＢ１、Ｂ２，Ｂ３、回路ブロックＣ１，Ｃ２、回路ブロックＤ１，Ｄ２を有する。
【００７２】
FPGAなどのプログラマブル論理回路装置を設計する設計ツールは、ユーザにより回路ブロックの配置と回路間の配線が行われた後に、その論理回路を構築するためのコンフィグレーションデータを生成する。コンフィグレーションデータを生成する際に、設計ツールは、以下の情報を参照して、コンフィグレーションメモリ１２内に記憶するエラーチェック対象のフレームアドレスを生成する。
（１）論理回路ブロック１１０内のLUT、配線と配線との接続を行うスイッチボックス１１２、論理回路ブロックの入出力端子と配線とを接続するコネクションブロック１１１の構築が、どのコンフィグレーションデータによって行われるのか。
（２）ユーザ回路の各回路ブロックに対応するコンフィグレーションデータが、どのフレームアドレスに記憶されるか。
（３）ユーザ回路の回路ブロック毎にソフトエラーのエラーチェック優先値。
【００７３】
さらに、設計ツールは、図８に示したとおり、エラーチェック対象のフレームアドレスを、次のチェック対象のフレームアドレスN_Faddとして、各フレームのコンフィグレーションデータに追加する。望ましくは、設計ツールは、次のチェック対象のフレームアドレスN_Faddが、各フレームの先頭ビットにまたは所定のビット位置に配置されるように、次のフレームアドレスN_Faddをコンフィグレーションデータに追加する。
【００７４】
図１５は、図１３，１４のプログラマブル論理回路装置の各回路ブロックのエラーチェック優先値とフレームアドレスの一例を示す図である。設計ツールは、前述した３つの情報に基づいて、図１５に示すような１０個の回路ブロックそれぞれに対応するエラーチェック優先値とフレームアドレスとを認識する。図１５には、設計された全ての回路ブロックに対するエラーチェック優先値とフレームアドレスが示される。したがって、図１５にないフレームアドレスのコンフィグレーションデータは、有効な回路ブロックを構築するものではないことが分かる。
【００７５】
設計ツールは、図１５の回路ブロックのデータに基づいて、エラーチェック対象のフレームアドレスを検出する。その場合、エラーチェックはエラーチェック優先値に応じて実行されるので、エラーチェック対象のフレームアドレスは、エラーチェック優先値に応じて検出される。例えば、エラーチェック優先値が「１」の場合は、エラーチェック対象の回路ブロックはエラーチェック優先値が「１」の回路ブロックになる。また、エラーチェック優先値が「２」の場合は、エラーチェック対象の回路ブロックはエラーチェック優先値が「２」の回路ブロックになる。
【００７６】
図１６は、図１５に基づいて設計ツールが生成するフレームアドレス毎のエラーチェック優先値と次のフレームアドレスの例を示す図である。図１６の例は、次のフレームアドレスN_Faddが、エラーチェック対象がエラーチェック優先値「１」の回路ブロックを有するフレームのアドレスを示す例である。１つのフレームに複数の回路ブロックのコンフィグレーションデータが書き込まれ、複数の回路ブロックのエラーチェック優先値が異なる場合、最も優先度の高い優先値（最も小さい値）がフレームのエラーチェック優先値に設定される。フレームアドレスFadd=1,3などがその例である。
【００７７】
図１５，図１６から明らかなとおり、フレームアドレスFadd＝１には、回路ブロックＡ１，Ａ２，Ａ３のコンフィグレーションデータが書き込まれ、それら回路ブロックのエラーチェック優先値は「１」と「２」であり、次にエラーチェックすべきフレームアドレスN_Faddは「４」である。次に、フレームアドレスFadd＝４には、回路ブロックＢ１，Ｂ２，Ｂ３のコンフィグレーションデータが書き込まれ、それらの回路ブロックの優先値は「１」と「３」であり、次のフレームアドレスN_Faddは「８」である。また、フレームアドレスFadd＝６には、回路ブロックＣ１，Ｃ２のコンフィグレーションが書き込まれ、それらの回路ブロックの優先値は「２」である。したがって、エラーチェック対象外のフレームアドレスである。そして、フレームアドレスFadd＝８、１２には、回路ブロックＤ１，Ｄ２のコンフィグレーションデータがそれぞれ書き込まれ、それらの優先値は「１」である。なお、図１６では、フレームアドレスFadd＝Nには、図示しない回路ブロックのコンフィグレーションデータが書き込まれ、その優先値は「１」とする。
【００７８】
図１６に示されるとおり、フレームアドレスFadd=２，３，５，７には、有効な回路ブロックのコンフィグレーションデータは書き込まれない。したがって、エラーチェック優先値は、エラーチェック不要を意味する「４」である。
【００７９】
エラーチェック対象の優先値を「１」に設定すると、図１６に示されるとおり、フレームアドレスFadd＝１，４，８，１２，Ｎがエラーチェック対象になる。そのため、フレームアドレスFadd＝１，４，８，１２，Ｎ内の次のエラーチェック対象フレームアドレスN_Faddは、４，８，１２，Ｎ，１になる。その結果、図８のコンフィグレーションメモリ１２に示したように、フレームアドレスFaddが１，４，８，１２，Ｎ（Fadd=12は図示されていない）のフレームに、次のフレームアドレスN_Faddとして４，８，１２，Ｎ，１（Ｎは図示されていない）が書き込まれる。
【００８０】
［第１の実施の形態の変形例］
図８の例では、エラーチェック対象のフレームアドレスが、各フレーム内に次にチェックすべきフレームアドレスN_Faddとして書き込まれ、エラー検出制御回路１３４が、読み出したフレームのコンフィグレーションデータから次のフレームアドレスN_Faddを抽出し、次のフレームの読み出し制御に利用している。
【００８１】
図１７は、第１の実施の形態の変形例を示す図である。この変形例では、次のフレームアドレスN_Faddをコンフィグレーションメモリの各フレームに書き込む代わりに、エラー検出制御回路１３４内に、エラーチェック対象か否かのエラーチェックビットをフレーム毎に有するエラーチェックビットレジスタ１５を設け、コンフィグレーションデータのダウンロードの際に、エラーチェックビットをエラーチェックビットレジスタ１５に設定する。そして、エラー検出制御回路１３４は、このエラーチェックビットレジスタ１５を参照して、エラーチェック対象のフレームアドレスを検出する。エラーチェックビットレジスタ１５にエラー対象のフレームアドレスの情報を格納することで、図８のようにコンフィグレーションメモリ内に次のフレームアドレスを書き込む必要はない。
【００８２】
図１７に示したエラーチェックビットレジスタ１５は、フレームアドレス１〜Ｎそれぞれに対応してエラーチェック対象か否かのエラーチェックビット（１がエラーチェック対象）を格納している。エラー検出制御回路１３４は、このエラーチェックビットレジスタ１５を参照することで、エラーチェック対象のフレームアドレスFaddが１，４，８，１２，Ｎ（１２は図示されていない）であることを判別することができる。
【００８３】
［第２の実施の形態］
第２の実施の形態では、各フレームアドレス内のコンフィグレーションデータに対応する複数の回路ブロックが異なるエラーチェック優先値を有する場合があることから、エラーチェックすべき優先値別にチェック対象のフレームアドレスを管理する。
【００８４】
図１８は、第２の実施の形態におけるプログラマブル論理回路装置の構成例を示す図である。図１８では、コンフィグレーションメモリ１２内の各フレームアドレスに、２種類の次のフレームアドレスN_Fadd_1、N_Fadd_2を記憶している。CRAM制御回路１３は、エラーチェック優先値「１」に対応するエラーチェックを行う場合は、次のフレームアドレスN_Fadd_1を参照してコンフィグレーションデータを読み出す。また、CRAM制御回路１３は、エラーチェック優先値「２」以上の優先度（１と２）に対応するエラーチェックを行う場合は、次のフレームアドレスN_Fadd_2を参照してコンフィグレーションデータを読み出す。
【００８５】
エラーチェック優先値１の場合の次のフレームアドレスN_Fadd_1は、図８の例と同じである。一方、エラーチェック優先値２以上（優先値２と１）の場合の次のフレームアドレスN_Fadd_2には、フレーム６に次のフレームアドレスN_Fadd_2＝６が追加されている。
【００８６】
図１８以外に、エラーチェックの優先値を、優先値２のみ、優先値３のみなど、柔軟に設定することもできる。
【００８７】
図１８のように複数種類の次のフレームアドレスN_Fadd_1、N_Fadd_2を記憶することで、次のようなエラーチェックが可能になる。例えば、CRAM制御回路１３内のエラー検出制御回路１３４は、通常のソフトエラーチェックでは、第１の次のフレームアドレスN_Fadd_1を参照して、順番にコンフィグレーションデータのエラーチェックを実行し、第２の回路ブロックで自己障害検出機能により障害が検出された後は、１回だけ第２の次のフレームアドレスN_Fadd_2を参照してエラーチェックを実行する。
【００８８】
［第２の実施の形態の変形例］
図１９は、第２の実施の形態の変形例のプログラマブル論理回路装置の構成例を示す図である。図１７と同様に、第２の実施の形態をエラーチェックビットレジスタで実現した例である。
【００８９】
図１９において、エラーチェックビットレジスタ１５は、エラーチェック優先値「１」のエラーチェックビットと、エラーチェック優先値「１＋２」のエラーチェックビットとをそれぞれ格納する。これらのエラーチェックビットは、コンフィグレーションデータをダウンロードする際にエラー検出制御回路１３４がエラーチェックビットレジスタに設定する。
【００９０】
優先値「１」に対応するエラーチェックビットは、図１７と同じである。一方、優先値「１＋２」に対応するエラーチェックビットは、優先値「１」のフレームアドレス１，４，８，１２，Ｎの有効ビット「１」に加えて、フレームアドレス６でも有効ビット「１」に設定されている。
【００９１】
以上の通り、本実施の形態によれば、コンフィグレーションメモリ内のコンフィグレーションデータのエラーチェック周期を短くすることができ、論理回路の故障状態の期間を短くすることができる。その結果、プログラマブル論理回路装置の平均故障時間を短縮できる。
【００９２】
以上の実施の形態をまとめると，次の付記のとおりである。
【００９３】
（付記１）
コンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記コンフィグレーションメモリに記憶された前記コンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、
前記コンフィグレーションメモリ内の前記コンフィグレーションデータのうち、前記プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを、前記コンフィグレーションメモリから順番に繰り返し読み出す制御回路と、
前記制御回路が読み出した対象コンフィグレーションデータをエラーチェックするエラー検出回路と、を有するプログラマブル論理回路装置。
【００９４】
（付記２）
前記制御回路は、前記コンフィグレーションメモリに、前記コンフィグレーションデータに加えて、前記対象コンフィグレーションデータのアドレスを書き込み、
前記制御回路は、前記コンフィグレーションメモリから前記対象コンフィグレーションデータのアドレスを読み出し、前記アドレスに基づいて前記対象コンフィグレーションデータを読み出し前記エラー検出回路に供給する、付記１に記載のプログラマブル論理回路装置。
【００９５】
（付記３）
前記制御回路は、前記コンフィグレーションメモリに、前記コンフィグレーションデータを、複数のアドレスに分割して書き込み、
前記制御回路は、前記複数のアドレスそれぞれに、前記コンフィグレーションデータと、次にチェックする前記対象コンフィグレーションデータのアドレスである次のアドレスとを書き込み、
前記制御回路は、第１のアドレスの前記コンフィグレーションデータと前記次のアドレスとを読み出し、前記次のアドレスに基づいて第２のアドレスの前記コンフィグレーションデータを読み出す、付記２に記載のプログラマブル論理回路装置。
【００９６】
（付記４）
前記コンフィグレーションメモリの複数のアドレスに記憶される前記コンフィグレーションデータそれぞれに対して、前記対象コンフィグレーションデータであることを示す複数のチェック優先値が割り当てられ、
前記制御回路は、前記コンフィグレーションメモリに、前記対象コンフィグレーションデータのアドレスを、前記複数のチェック優先値それぞれに対応して書き込み、
前記制御回路は、前記コンフィグレーションメモリから、選択されたチェック優先値に対応する前記対象コンフィグレーションデータのアドレスを読み出す、付記２に記載のプログラマブル論理回路装置。
【００９７】
（付記５）
さらに、前記コンフィグレーションメモリの複数のアドレスそれぞれに前記対象コンフィグレーションデータが記憶されているか否かを示すエラーチェックビットを、前記複数のアドレスそれぞれに対応して記憶するエラーチェックビットレジスタを有し、
前記制御回路は、前記エラーチェックビットレジスタ内の前記エラーチェックビットが前記対象コンフィグレーションデータが記憶されていることを示すアドレスのデータを、順番に読み出す、付記１に記載のプログラマブル論理回路装置。
【００９８】
（付記６）
前記コンフィグレーションメモリの複数のアドレスに記憶される前記コンフィグレーションデータそれぞれに対して、前記対象コンフィグレーションデータであることを示す複数のチェック優先値が割り当てられ、
前記エラーチェックビットレジスタは、前記エラーチェックビットを、前記複数のチェック優先度それぞれに対応して記憶し、
前記制御回路は、前記エラーチェックビットレジスタ内の選択されたチェック優先値に対応するエラーチェックビットが前記対象コンフィグレーションデータが記憶されていることを示すアドレスを、順番に読み出す、付記５に記載のプログラマブル論理回路装置。
【００９９】
（付記７）
前記エラー検出回路は、エラーが検出されたコンフィグレーションデータを訂正するエラー訂正回路を有し、
前記制御回路は、前記エラー訂正回路で訂正された訂正コンフィグレーションデータを前記コンフィグレーションメモリに書き込み、前記エラー訂正回路で訂正できない場合第２のコンフィグレーションメモリ内の前記コンフィグレーションデータを前記コンフィグレーションメモリにダウンロードする、付記１に記載のプログラマブル論理回路装置。
【０１００】
（付記８）
コンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記コンフィグレーションメモリに記憶された前記コンフィグレーションデータに基づいて、論理回路が構成されるプログラマブル論理回路と、
前記コンフィグレーションデータをエラーチェックするエラー検出回路と、を有するプログラマブル論理回路装置のエラー検出方法において、
前記コンフィグレーションメモリ内の前記コンフィグレーションデータのうち、前記プログラマブル論理回路内のエラーチェック対象回路に対応する対象コンフィグレーションデータを、前記コンフィグレーションメモリから順番に繰り返し読み出す工程と、
前記エラー検出回路が、前記繰り返し読み出した対象コンフィグレーションデータをエラーチェックする工程とを有する、プログラマブル論理回路装置のエラー検出方法。
【０１０１】
（付記９）
さらに、前記コンフィグレーションメモリに、前記コンフィグレーションデータに加えて、前記対象コンフィグレーションデータのアドレスを書き込む工程を有し、
前記読み出す工程は、前記コンフィグレーションメモリから前記対象コンフィグレーションデータのアドレスを読み出し、前記アドレスに基づいて前記対象コンフィグレーションデータを前記コンフィグレーションメモリから読み出して前記エラー検出回路に供給する、付記８に記載のプログラマブル論理回路装置のエラー検出方法。
【符号の説明】
【０１０２】
１：上位システム
２：コンフィグレーションデータ・メモリ
１０：プログラマブル論理回路装置、FPGA
１１：プログラマブル回路群
１２：コンフィグレーションRAM、CRAM
１３：CRAM制御回路
１４：エラー判定・訂正回路
１５：エラーチェックビットレジスタ
N_Fadd：次にエラーチェック対象のフレームアドレス
【図１】
2016167669.tif 000003
【図２】
2016167669.tif 000004
【図３】
2016167669.tif 000005
【図４】
2016167669.tif 000006
【図５】
2016167669.tif 000007
【図６】
2016167669.tif 000008
【図７】
2016167669.tif 000009
【図８】
2016167669.tif 000010
【図９】
2016167669.tif 000011
【図１０】
2016167669.tif 000012
【図１１】
2016167669.tif 000013
【図１２】
2016167669.tif 000014
【図１３】
2016167669.tif 000015
【図１４】
2016167669.tif 000016
【図１５】
2016167669.tif 000017
【図１６】
2016167669.tif 000018
【図１７】
2016167669.tif 000019
【図１８】
2016167669.tif 000020
【図１９】
2016167669.tif 000021