(57)【要約】【課題】集積回路のコンフィグレーションを、短時間で効率よく行うコンフィグレーション装置等を提供する。【解決手段】ＦＰＧＡ１４０の回路設定情報を固定長に分割されたブロック単位で格納する回路設定情報格納メモリ１２０と、回路設定情報をブロック単位で読み出し、ＦＰＧＡ１４０に、読み出したブロック単位の回路設定情報を出力する設定情報制御デバイス１３０と、ＦＰＧＡ１４０における回路設定情報の書き込みが可能な設定情報書込可能領域１５０が、ブロックごとに物理的に分割されており、設定情報制御デバイス１３０が出力したブロック単位の回路設定情報を入力し、入力した回路設定情報を書き込む対象となる領域を分割された書込可能領域から選択する書込領域選択部２２０と、選択された書込対象領域に、設定情報制御デバイス１３０から出力されたブロック単位の回路設定情報を書き込むコンフィグレーション制御部２１０とを備える。【選択図】図２
2011013829.tif 000002
【特許請求の範囲】
【請求項１】
回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するコンフィグレーション装置において、
前記回路設定情報を格納した回路設定情報格納メモリと、
前記複数の回路設定部を複数に分割して、形成された複数の回路設定ブロックと、
初期化時、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、
前記回路設定ブロックを特定する識別情報が入力された時、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択部と、
前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記回路設定ブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納メモリに格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御部と、
を有することを特徴とするコンフィグレーション装置。
【請求項２】
前記回路設定ブロック単位の回路設定情報のソフトエラーを検出し、ソフトエラー検出された回路設定ブロックを特定する前記識別情報を前記選択部と前記設定情報制御部へ出力するエラー検出部を有する請求項１記載のコンフィグレーション装置。
【請求項３】
請求項２に記載のコンフィグレーション装置において、
前記集積回路が有する処理機能ごとに、前記ブロックを割り付けた割付情報を格納する割付情報格納部を備え、
当該割付情報格納部が格納する割付情報から、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能を抽出し、当該抽出された処理機能を停止するコンフィグレーション装置。
【請求項４】
請求項３に記載のコンフィグレーション装置において、
前記処理機能ごとのスケジュール情報を格納するスケジュール情報格納部を備え、
当該スケジュール情報格納部に格納されたスケジュール情報に基づき、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能について、処理が行われていないときに、前記設定情報制御部が、前記ソフトエラーが検出された任意のブロックに相当する回路設定情報を読み出し、前記選択部に出力するコンフィグレーション装置。
【請求項５】
回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するコンフィグレーション方法において、
前記回路設定情報を回路設定情報格納メモリに格納する格納ステップと、
前記複数の回路設定部を複数に分割して、複数の回路設定ブロックを形成する分割ステップと、
選択部が、初期化時には、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、前記回路設定ブロックを特定する識別情報が入力された時には、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択ステップと、
設定情報制御部が、前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記回路設定ブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納メモリに格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御ステップと、
を含むことを特徴とするコンフィグレーション方法。
【請求項６】
回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するようにコンピュータを機能させるコンフィグレーションプログラムにおいて、
前記回路設定情報を格納した回路設定情報格納手段、
前記複数の回路設定部を複数に分割して、複数の回路設定ブロック形成する手段、
初期化時には、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、前記回路設定ブロックを特定する識別情報が入力された時には、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択手段、
前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記回路設定ブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納手段に格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御手段、
としてコンピュータを機能させることを特徴とするコンフィグレーションプログラム。
【請求項７】
回路設定情報を複数の回路設定部に設定することで、前記回路設定部に基づく、論理回路を構築する集積回路において、
前記複数の回路設定部を複数に分割して、形成された複数の回路設定ブロックと、
初期化時、入力された回路設定情報をビットカウンタのカウントによって、前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、
前記回路設定ブロックを特定する識別情報が入力された時、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択部と
を有することを特徴とする集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路のコンフィグレーションを行うコンフィグレーション装置等に関する。
【背景技術】
【０００２】
例えば、フィールドプログラマブルゲートアレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ、以下、ＦＰＧＡとする）は、ユーザによりプログラミングが可能な集積回路であり、ソフトエラーの発生時、バージョンアップ時、実現する処理機能等に応じてコンフィグレーションが必要となる。
【０００３】
ＦＰＧＡのコンフィグレーションについては、回路設定情報の全てを書き換える方法や機能ごとに必要な回路設定情報のみを書き換える方法がある（例えば、特許文献１、２を参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−８９９６３号公報
【特許文献２】特表２００６−５０４３４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、回路設定情報の全てを書き換える方法では、コンフィグレーション時間が非常に長くなり効率が悪いという課題を有する。また、機能ごとに必要な回路情報のみを書き換える方法では、複数の機能の中で大規模な機能を有するような装置においては、その大規模な機能のコンフィグレーションにやはり多くの時間を要してしまう。さらに、集積回路の機能を分割できず、一の機能しか有しない装置においては、結局全ての回路設定情報を書き換えることになってしまう。
そこで、集積回路のコンフィグレーションを、短時間で効率よく行うコンフィグレーション装置等を提供する。
【課題を解決するための手段】
【０００６】
本願に開示するコンフィグレーション装置は、集積回路の回路設定情報をブロック単位で分割すると共に、集積回路における回路設定情報を設定する回路設定部も、同じくブロック単位で物理的に分割する。コンフィグレーションを行う場合には、分割したブロック単位で回路設定情報を回路設定部に書き込む。
【発明の効果】
【０００７】
このように、本願に開示するコンフィグレーション装置においては、分割されたブロック単位で回路設定情報の書き込みを行うことで、機能の規模や数に影響されずに、短時間で効率よく集積回路のコンフィグレーションを行うことができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係るコンフィグレーション装置の基本ブロック図である。
【図２】第１の実施形態に係るコンフィグレーション装置の原理図である。
【図３】第１の実施形態に係るコンフィグレーション装置におけるＦＰＧＡの内部構造を詳細に示したブロック図である。
【図４】第１の実施形態に係るコンフィグレーション装置において、コンフィグレーションを実行する前の準備段階における動作を示すフローチャートである。
【図５】第１の実施形態に係るコンフィグレーション装置におけるＦＰＧＡ内部の書込領域選択部の詳細ブロック図である。
【図６】第１の実施形態に係るコンフィグレーション装置において、回路設定情報を生成する処理を示す図である。
【図７】第１の実施形態に係るコンフィグレーション装置におけるコンフィグレーションの処理動作を示すシーケンス図である。
【図８】第２の実施形態に係るコンフィグレーション装置におけるＦＰＧＡの内部構造を詳細に示したブロック図である。
【図９】第２の実施形態に係るコンフィグレーション装置におけるコンフィグレーションの処理動作を示すシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を説明する。本発明は多くの異なる形態で実施可能である。従って、本実施形態の記載内容のみで本発明を解釈すべきではない。また、本実施形態の全体を通して同じ要素には同じ符号を付けている。
【００１０】
以下の実施の形態では、主に装置について説明するが、所謂当業者であれば明らかな通り、本発明は方法、及び、コンピュータを動作させるためのプログラムとしても実施できる。また、本発明はハードウェア、ソフトウェア、または、ハードウェア及びソフトウェアの実施形態で実施可能である。プログラムは、ハードディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、光記憶装置、または、磁気記憶装置等の任意のコンピュータ可読媒体に記録できる。さらに、プログラムはネットワークを介した他のコンピュータに記録することができる。
また、実施形態においては、集積回路の一例としてＦＰＧＡについてのコンフィグレーション処理について説明する。
【００１１】
実施形態であるコンフィグレーション装置は、回路設定情報を集積回路内の複数の回路設定部に転送することで、回路設定部に基づく、論理回路を構築するものである。その装置は、回路設定情報格納メモリ、複数の回路設定ブロック、選択部および設定情報制御部を有するものである。回路設定情報格納メモリは、回路設定情報を格納したものである。複数の回路設定ブロックは、複数の回路設定部を複数に分割して、形成されたものである。選択部は、初期化時、入力された回路設定情報をビットカウンタのカウントによって、複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ回路設定情報を転送する。さらに、選択部は、回路設定ブロックを特定する識別情報が入力された時、識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送するものである。設定情報制御部は、識別情報が入力された時、回路設定ブロック単位の回路設定情報と回路設定ブロックを特定する識別情報とを対応づけた対応テーブルに基づいて、回路設定情報格納メモリに格納されている回路設定情報のうち識別情報に対応する回路設定情報を読出し、選択部へ出力する制御を行う。
【００１２】
この実施形態に係るコンフィグレーション装置は、再コンフィグレーションが必要となる回路設定ブロックを特定する識別情報を外部に出力することで、短時間で効率よくコンフィグレーションを行うことができる。
【００１３】
（第１の実施形態）
本実施形態に係るコンフィグレーション装置について、図１ないし図７を用いて説明する。本実施形態に係るコンフィグレーション装置は、機能の大きさに依存せずに固定長に区分された格納領域に、ＦＰＧＡの回路設定情報（以下、回路設定情報とする）を、前記固定長の大きさの範囲内で分割して格納しておく。また、ＦＰＧＡにおける回路設定情報の書込可能領域も、同じ固定長の大きさに物理的に分割する。以下、分割した領域をブロックとする。ブロックは、前記回路設定ブロックの一例である。コンフィグレーションの際には、分割したブロック単位でＦＰＧＡに回路設定情報を書き込む。
【００１４】
また、ソフトエラーが発生した際には、分割したブロックごとにエラーの発生を検知し、分割したブロック単位で回路設定情報を書き換える。ソフトエラーが発生したブロックが含まれる機能については、機能を停止し、ソフトエラーが発生したブロックに無関係の機能は、そのまま処理を続行する。機能を停止することは、例えば上位装置が機能に必要なデータを送らないようにすることで可能である。
【００１５】
図１は、本実施形態に係るコンフィグレーション装置の基本ブロック図である。コンフィグレーション装置１００は、基盤１０１にＣＰＵ１１０、回路設定情報格納メモリ１２０、設定情報制御デバイス１３０、及びＦＰＧＡ１４０を備える。また、ＦＰＧＡ１４０には、設定情報書込可能領域１５０を含み、ＦＰＧＡ１４０におけるソフトエラーを検出するエラー検出部１６０を備える。
【００１６】
ＣＰＵ１１０は、メモリ内に格納されたプログラムを読み出し、読み出したプログラムにしたがってコンフィグレーション装置１００全体の機能やデータを制御する処理装置である。ＣＰＵ１１０は、エラー検出部１６０が検知したＦＰＧＡ１４０におけるソフトエラー通知を受け、上位装置１７０に送信し、上位装置１７０からの指示に基づいて、設定情報制御デバイス１３０に対してコンフィグレーションの実行指示を行う。
【００１７】
設定情報制御デバイス１３０は、ＣＰＵ１１０からのコンフィグレーション指示に基づいて、回路設定情報格納メモリ１２０に格納された回路設定情報を読み出し、ＦＰＧＡ１４０の設定情報書込可能領域１５０に書き込む。
【００１８】
図２は、本実施形態に係るコンフィグレーション装置の構成図である。図２において、ＦＰＧＡ１４０内の設定情報書込可能領域１５０を物理的に固定長の大きさのブロック（ブロックＡ〜Ｆ）に分割する。書込領域選択部２２０は、分割されたブロックから処理の対象となるブロックを選択し、ブロックごとに回路設定情報（ブロックデータ２０１）を該当するブロックに送る。処理の対象となるブロックとは、例えばエラーが発生したブロックや、上位装置１７０から処理対象として指示されたブロック等である。コンフィグレーション制御部２１０は、ブロックごとに書き込みの有効無効を判断して書込処理を制御する。
【００１９】
ソフトエラーが発生した際には、エラー検出部１６０がブロックごとにソフトエラーを検出し、ソフトエラーが発生したブロック（以下、エラーブロックとする）の識別情報を複数ビットでＦＰＧＡ１４０の外部に出力する。設定情報制御デバイス１３０は、エラーブロックの識別情報に基づいて、予め登録されたブロックのマップ情報を参照する。このマップ情報には、回路設定情報格納メモリ１２０に格納された回路設定情報を各ブロック単位に読み出すための格納アドレスと、ＦＰＧＡ内のブロックを特定する識別情報とが対応づけが登録されており、回路設定情報格納メモリ１２０から該当する回路設定情報を設定情報制御デバイス１３０が読み出す際に使用する。エラーブロックに該当する回路設定情報が、回路設定情報格納メモリ１２０から読み出されると、ブロックデータ２０１としてＦＰＧＡ１４０に出力される。
【００２０】
回路設定情報を作成する際に、併せて機能とブロックの対応関係を指示して割付情報を作成し、割付情報格納メモリ２３０に格納する。上位装置１７０は、通知されたエラーブロックの識別情報から、エラーブロックが含まれる機能を認識することができる。上位装置は、エラーブロックが含まれる機能を認識することで、ソフトエラーが発生中の機能のみを一時的に停止させ、その間にエラーブロックを修復する。
【００２１】
図３は、本実施形態に係るコンフィグレーション装置におけるＦＰＧＡの内部構造を詳細に示したブロック図である。電源が投入されると、まずＣＰＵ１１０からの指示で、設定情報制御デバイス１３０が、回路設定情報格納メモリ１２０より全ての回路設定情報を読み出し、ＦＰＧＡ１４０に書き込む。
【００２２】
ＦＰＧＡ１４０内部では、設定情報書込回路３１０を介して外部から入力された回路設定情報の取り込みを行う。コンフィグレーション制御部２１０、及び書込領域選択部２２０は、電源投入後の最初のコンフィグレーションに限って、ブロックの切り替えを順次行い、全てのブロックについて各ブロックのＳＲＡＭＣｅｌｌに回路設定情報の書き込みを行う。各ブロックにおける回路設定情報（４ビット）がＦＦ（フリップフロップ）に渡されたタイミングで、コンフィグレーション制御部２１０がバッファ（図３中に△で示す）制御をしてＦＦの状態（０，１）をＳＲＡＭＣｅｌｌに反映させる。図３の場合は、Ａブロックの４ビットを書き込むと、次にＢブロックの４ビット、次にＣ、Ｄ、Ｅ、Ｆと順次書き込みが行われる。
【００２３】
回路設定情報の書き込み時に、設定情報チェック部３２０が回路設定情報の正常性をチェックし、正常終了した場合は、エラー検出部１６０に正常終了を通知する。エラー検出部１６０は、正常終了の通知を受信後、コンフィグレーション制御部２１０に定期的にリードリクエストを上げ、バッファを制御してＳＲＡＭＣｅｌｌに書き込まれている回路設定情報を、読込領域選択部３３０を介してブロック単位で読み出す。読み出した回路設定情報は、ブロック単位でＣＲＣ演算（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：巡回冗長検査）して、例えば、ブロックＡであれば、正常時ブロックＡのＣＲＣ値を正常時ブロックＡＣＲＣとして格納する。ブロックＡ以外にもほかのブロックについては、ブロックＡと同様な処理にて、正常時のＣＲＣ値を格納する。その後に、エラー検出部１６０は、ブロック単位で回路設定情報を読み出してＣＲＣ演算した結果と、ブロック単位の正常時のＣＲＣ値とを一致比較してチェックすることで、ソフトエラーを検出する。チェックの結果、正常でない場合はソフトエラーを検出したとして、エラーブロックの識別情報をＦＰＧＡ１４０の外部に通知する。例えば、図３において、Ａブロックが宇宙線等の原因によりソフトエラーが発生したとすると、ＡブロックのＣＲＣ演算のチェック結果でソフトエラーが検知され、ＣＰＵ１１０を経由して上位装置１７０にエラー情報とエラーブロックが通知される。
【００２４】
設定情報制御デバイス１３０は、図２において説明したように、通知されたエラーブロックの情報に基づいて、該当する回路設定情報を回路設定情報格納メモリ１２０から読み出して、ＦＰＧＡ１４０に出力する。例えば、設定情報制御デバイス１３０は、Ａブロックがエラーブロックである場合には、回路設定情報格納メモリ１２０のＡブロックに該当する回路設定情報を読み出して出力する。
【００２５】
また、ＣＰＵ１１０は、エラー通知を受けた上位装置１７０の指示により、エラーブロックが含まれる機能のみを停止し、その他の機能については処理を継続させる。例えば、機能１をＡ、Ｂブロックが実現し、機能２をＣブロックが実現し、機能３をＤ、Ｅ、Ｆブロックが実現しているとする。その場合にＡブロックでソフトエラーが検出されたとすると、機能１のみを停止し、機能２、及び機能３については継続させる制御が行われる。
【００２６】
次に、コンフィグレーション装置１００の動作について説明する。図４は、本実施形態に係るコンフィグレーション装置において、コンフィグレーションを実行する前の準備段階における動作を示すフローチャートである。まず、回路設定情報を生成する回路設定情報生成ツールに、ユーザが設計した回路設計情報（以下、ユーザデータとする）が入力される（ステップＳ４０１）。また、ユーザが作成した機能ごとのグループ分け情報が入力される（ステップＳ４０２）。
【００２７】
ここで、グループについて説明する。グループとは、一の処理機能を実現する機能の集合であり、一の機能が一のグループの場合もあれば、複数の機能で一のグループを形成する場合もある。例えば、ＦＰＧＡ１４０にて３ｃｈ（ｃｈごとに通信利用者のリソースが割り当てられる）の通信機能を実装するとする。ユーザは、機能１をグループ１、機能２をグループ２、機能３をグループ３といったように、ｃｈ機能ごとにグループ分けする情報を作成する。このグループ分け情報が、ユーザデータと共に回路設定情報生成ツールに入力される。
【００２８】
図５は、第１の実施形態に係るコンフィグレーション装置におけるＦＰＧＡ内部の書込領域選択部の詳細ブロック図である。書込領域選択部２２０は、ブロックアドレス生成カウンタ２３、デマルチプレクサ２２、アドレスSELECTOR２４を有する。書込領域選択部２２０は、回路設定情報であるDataが入力される。そのDataは、デマルチプレクサ22とブロックアドレス生成カウンタ２３へそれぞれ入力される。ブロックアドレス生成カウンタ２３は、Dataを１ビットずつカウントして所定ビット数ごとに、ブロックを特定するブロックアドレスを順次出力する。アドレスSELECTOR２４は、電源投入情報が入力されたときに、ブロックアドレス生成カウンタ２３からのブロックアドレスをデマルチプレクサ22へ出力し、識別情報（ブロックアドレス）が入力されると、そのブロック情報であるブロックアドレスをデマルチブレクサ２２へ出力する。デマルチプレクサ２２は、アドレスSELECTOR２４からのブロックアドレスに該当するブロックへ、入力されたDataを出力する。
【００２９】
図４に戻って、ユーザデータ、及びグループ分け情報が入力されると、ＦＰＧＡ１４０の回路設定情報とブロック割付情報が生成される（ステップＳ４０３）。
ここで、回路設定情報、及びブロック割付情報の生成について詳細に説明する。図６は、本実施形態に係るコンフィグレーション装置において、回路設定情報を生成する処理を示す図である。図６において、ユーザデータ５０１とグループ分け情報５０２が、回路設定情報生成ツール５１０に入力され、ブロックごとに分割された回路設定情報５１１とブロック割付情報５１２が出力される。グループ分け情報５０２は、例えばユーザにより作成され、エラーが発生した場合に、エラーが発生していないグループは継続して運用できることを考慮して作成される。例えば、図６の例で言うと、機能１にエラーが発生した場合には、グループ１（通信ｃｈ１）の処理機能については運用できなくなるが、グループ２（通信ｃｈ２）、及びグループ３（通信ｃｈ３）については継続して運用が可能となる。
【００３０】
回路設定情報生成ツール５１０は、グループ分け情報５０２に基づいて、分割されたブロックを機能の大きさに応じた必要なブロック数でグループ化する。例えば、図６の例で言うと、機能１は２つのブロック（ブロックＡ、Ｂ）が必要であり、機能２は１つのブロック（ブロックＣ）が必要であり、機能３は３つのブロック（ブロックＤ、Ｅ、Ｆ）が必要であることがわかる。このように、回路設定情報生成ツール５１０は、各グループの機能に必要なブロック数を割り当てる。ここで、設定情報書込可能領域１５０において、グループごとにまとまったブロックに配置するために、グループの境界となるブロック内の格納領域に空き領域が生じる場合がある（割り当て情報内の○で示す領域）。この領域は、未使用領域となるが、サイズが微小であるため、リソースの無駄になることはない。回路設定情報生成ツール５１０は、こうした処理の結果として、ブロックごとに分割された回路設定情報５１１とブロック割付情報５１２を生成して出力する。
【００３１】
図４に戻って、ステップＳ４０３で生成された回路設定情報５１１とブロック割付情報５１２を、それぞれ外部メモリ（回路設定情報格納メモリ１２０、割付情報格納メモリ２３０）に格納して、準備段階の処理を終了する。
【００３２】
次に、コンフィグレーション処理について説明する。図７は、本実施形態に係るコンフィグレーション装置におけるコンフィグレーションの処理動作を示すシーケンス図である。まず、ユーザにより基盤電源が投入される（Ｓ６０１）。電源が投入されると、設定情報制御デバイス１３０が、回路設定情報格納メモリ１２０から全ての回路設定情報を読み出し（Ｓ６０２）、ＦＰＧＡ１４０に書き込む（Ｓ６０３）。回路設定情報が入力されたＦＰＧＡ１４０では、設定情報書込回路３１０を介して回路設定情報を取り込む。コンフィグレーション制御部２１０、及び書込領域選択部２２０が、電源投入後の最初のコンフィグレーションに限って、ブロックの切り替えを順次行い、全ブロックのＳＲＡＭＣｅｌｌに回路設定情報を書き込む（Ｓ６０４）。
【００３３】
回路設定情報の書き込み時に設定情報チェック部３２０が、データの正常性をチェックし（Ｓ６０５）、書き込みが正常に終了した場合には、エラー検出部１６０に正常終了を通知する。正常でない場合は、ＮＧを通知しコンフィグレーションのやり直しとなる。
【００３４】
エラー検出部１６０は、正常終了を受信後、定期的にリクエストを上げコンフィグレーション制御部２１０からバッファを制御し、ＳＲＡＭＣｅｌｌに書き込まれている回路設定情報をブロック単位で読み出す（Ｓ６０６）。エラー検出部１６０は、ブロック単位でＣＲＣ演算を行い（Ｓ６０７）、その演算結果を内部メモリに格納して保持する（Ｓ６０８）。この保持したＣＲＣの演算結果を正常結果として次回以降のＣＲＣチェックを行う。
【００３５】
次回以降の定期的なリクエストによりブロック単位のＳＲＡＭＣｅｌｌのデータを読み出し（Ｓ６０９）、ブロック単位でＣＲＣ演算を行う（Ｓ６１０）。内部メモリに格納した正常結果としてのＣＲＣの演算値と、新たにＣＲＣ演算した結果とを比較し（Ｓ６１１）、回路設定情報の正常性を判定する（Ｓ６１２）。内部メモリに格納したＣＲＣの演算値と、新たなＣＲＣ演算値が一致した場合は、ソフトエラーは発生していないため、Ｓ６０９に戻って、定期的なＣＲＣチェックを繰り返して行う。内部メモリに格納したＣＲＣの演算値と、新たなＣＲＣ演算値が一致しない場合は、ソフトエラーを検出したとして、ソフトエラーが発生した旨のエラー情報とエラーブロックの識別情報とを外部に通知する（Ｓ６１３）。
【００３６】
上位装置１７０は、ＣＰＵ１１０経由で割付情報格納メモリ２３０を参照し（Ｓ６１４）、ブロック割付情報に基づいてエラーブロックを含む機能を停止する（Ｓ６１５）。エラーブロックを含む機能が停止されることで、当該停止された機能が含まれるグループの処理機能が停止される。例えば、図６の例で言うと、Ａブロックでソフトエラーが検出された場合は、Ａブロックが割り付けられた機能１が停止される。機能１はグループ１の処理機能を実現しているため、グループ１の処理機能が停止されることになる。仮に、グループ１の処理機能が、機能１を含む複数の機能（例えば、機能１０、機能１００等）により実現されているとしても、機能１が停止されればグループ１の処理機能全体が停止される。一方、グループ２、３については、ブロックＡでソフトエラーが検出された場合であっても、継続して運用することができる。
【００３７】
上位装置１７０は、エラーブロックを含む機能が停止されている間に、ＣＰＵ１１０を経由して設定情報制御デバイス１３０に対して、エラーブロックの再コンフィグレーションを指示する（Ｓ６１６）。設定情報制御デバイス１３０は、内部にブロックのマップ情報を持っているため、そのマップ情報に基づいて回路設定情報格納メモリ１２０からエラーブロックに該当する回路設定情報を読み出し（Ｓ６１７）、ＦＰＧＡ１４０に書き込む（Ｓ６１８）。ＦＰＧＡ１４０内部では、書込領域選択部２２０が書き込みの対象となるソフトエラーが検出されたブロックを選択し、回路設定情報をブロック単位でＳＲＡＭＣｅｌｌに書き込む（Ｓ６１９）。以降の処理は、電源が切断されるまで、Ｓ６０９の定期的なチェックが繰り返して行われる。
【００３８】
なお、ソフトエラーが検出された回数（エラー回数）をブロックごとにカウントして格納し、同一ブロックにおいて、予め設定した閾値の回数以上のエラー回数が検出された場合には、そのブロックの領域においてデバイスエラーが発生していると判断してもよい。つまり、ハード的なエラーが原因となって同一ブロック内で複数回以上のソフトエラーが検出されたと判断するようにしてもよい。
【００３９】
また、これまでソフトエラー発生時における再コンフィグレーションについて説明したが、バージョンアップや一部の機能修正等によるコンフィグレーション（上位装置からの指示）の場合にも、本実施形態に係るコンフィグレーション装置を適用可能である。
【００４０】
さらに、これまで固定長のブロック単位でのコンフィグレーションについて説明したが、必ずしも固定長ではなく、任意の長さに細分化されればよい。つまり、例えば機能ｍについてはｍ１の長さでブロックに分割し、機能ｎについてはｎ２の長さというように、必ずしも分割する長さを固定しなくてもよい。
【００４１】
このように、固定長のブロック単位で回路設定情報の書き込みが行うことで、機能の規模や数に影響されずに、短時間で効率よくＦＰＧＡのコンフィグレーションを行うことができるという効果を奏する。
【００４２】
また、ソフトエラーが発生した場合であっても、ブロックごとにソフトエラーを検出することで、エラーブロックのみを再コンフィグレーションすればよく、短時間で効率よく再コンフィグレーションが可能になるという効果を奏する。特に、近年では、デバイスの高密度化、低電圧化により宇宙線のデバイスへの影響が問題となっており、今後も宇宙線が原因で起こるソフトエラーが深刻化することが考えられる。したがって、本願のように、ソフトエラーが発生しても短時間で効率よくコンフィグレーションを行う技術は、非常に有用的である。
【００４３】
さらに、機能ごとにブロックを割り付けた情報を保持することで、必要最小限の機能のみを停止し、他の機能は運用を継続することができるという効果を奏する。これは、特に冗長構成を取ることで品質を向上させる場合と比較して、制御を簡略化し処理を効率よく行うことができると共に、冗長構成を取れない場合においては、運用の停止を防ぐことができる。
【００４４】
さらにまた、ブロックに分割することで、特定のブロックに集中してソフトエラーが検出された場合には、デバイスエラーとしての可能性を認識することができ、難解なデバイス不良の解析に有効であるという効果を奏する。
【００４５】
（第２の実施形態）
本実施形態に係るコンフィグレーション装置について、図７及び図８を用いて説明する。本実施形態に係るコンフィグレーション装置は、前記第１の実施形態に係るコンフィグレーション装置の機能を拡張したものである。ＦＰＧＡが有する処理機能ごとのスケジュール情報を格納し、格納されたスケジュール情報に基づいて、ソフトエラーが検出されたブロックを含む機能が処理を実行していないタイミングで、再コンフィグレーションを行うものである。つまり、ブロックごとにソフトエラーを検出することで、エラーが発生しているブロックを把握することができ、上位装置を介することなく再コンフィグレーションを行うことができる。
なお、本実施形態において、前記第１の実施形態と重複する説明については省略する。
【００４６】
図８は、本実施形態に係るコンフィグレーション装置におけるＦＰＧＡの内部構造を詳細に示したブロック図である。第１の実施形態における図３と異なるのは、スケジュール情報７１０を備えることである。スケジュール情報７１０は、グループごとに処理のスケジュール情報が格納されている。設定情報制御デバイス１３０は、ソフトエラーが発生した際にスケジュール情報７１０を参照する。そして、エラーブロックが含まれる機能のグループのスケジュール情報から、グループが処理を実行していないタイミングで、回路設定情報格納メモリ１２０から、該当する回路設定情報を読み出し、ＦＰＧＡ１４０に出力する。
なお、スケジュール情報は、グループごとに格納してもよいし、機能ごとに格納してもよいし、ブロックごとに格納してもよい。
【００４７】
次に、コンフィグレーション装置１００の動作について説明する。本実施形態に係るコンフィグレーション装置１００は、コンフィグレーションを実行する前の準備段階の処理として、第１の実施形態における準備段階の処理に加えて、スケジュール情報７１０の登録を行う。スケジュール情報は、グループごとに処理を実行している期間と実行していない期間とが区別されて登録される。
【００４８】
準備段階の処理が完了すると、コンフィグレーション処理を実行する。図９は、本実施形態に係るコンフィグレーション装置におけるコンフィグレーションの処理動作を示すシーケンス図である。図９におけるＳ８１０からＳ８１６までの処理は、図７におけるＳ６０１からＳ６１６までの処理と同じであるため、説明は省略する。
【００４９】
Ｓ８１６でＣＰＵ１１０から、設定情報制御デバイス１３０にエラーブロックの再コンフィグレーションの指示がなされると、設定情報制御デバイス１３０がスケジュール情報７１０を参照する（Ｓ８１７）。スケジュール情報に基づいて、エラーブロックが含まれるグループが処理を実行中でなければ、回路設定情報格納メモリ１２０からエラーブロックの回路設定情報を読み出して（Ｓ８１８）、ＦＰＧＡ１４０に書き込む（Ｓ８１９）。ＦＰＧＡ１４０内部では、書き込みの対象となるソフトエラーが検出されたブロックを選択し、回路設定情報をブロック単位でＳＲＡＭＣｅｌｌに書き込む（Ｓ８２０）。以降の処理は、電源が切断されるまで、Ｓ８０９の定期的なチェックが繰り返して行われる。
【００５０】
なお、本実施形態に係るコンフィグレーション装置は、ソフトエラーの発生時に限らず、バージョンアップや一部の機能修正等によるコンフィグレーションの場合にも適用可能である。その場合は、予め上位装置１７０が新しい回路設定情報を回路設定情報格納メモリ１２０内にブロックごとに分割して格納しておき、スケジュール情報に基づいて処理が行われていないタイミングで回路設定情報の書き換えをブロック単位で行う。つまり、全ての回路設定情報についてコンフィグレーションを行う必要がある場合（装置全体の機能を停止させる必要がある場合）であっても、処理を実行していないブロックから順次コンフィグレーションを行うことができる。したがって、装置全体の機能を停止させることなく、運用への支障を最小限に抑えつつ、コンフィグレーションを行うことができるという効果を奏する。
このように、上位装置を介することなく、エラーが発生した箇所のみを再コンフィグレーションを行うことができ、処理の効率化を図ることができるという効果を奏する。
【００５１】
なお、前記各実施形態において、ブロックの割り付けをグループ、機能、ブロックの３段階で行ったが、グループと機能は必ずしも区分する必要はなく、一のブロックを一の機能として捉えてもよい。
【００５２】
以上の前記各実施形態により本願のコンフィグレーション装置を説明したが、本願の技術的範囲は実施形態に記載の範囲には限定されず、これら各実施形態に多様な変更又は改良を加えることが可能である。そして、かような変更又は改良を加えた実施の形態も本願の技術的範囲に含まれる。このことは、特許請求の範囲及び課題を解決する手段からも明らかなことである。
【００５３】
前記各実施形態に関して、次の付記を示す。
（付記１）回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するコンフィグレーション装置において、前記回路設定情報を格納した回路設定情報格納メモリと、前記複数の回路設定部を複数に分割して、形成された複数の回路設定ブロックと、初期化時、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、前記回路設定ブロックを特定する識別情報が入力された時、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択部と、前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記メモルブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納メモリに格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御部と、を有することを特徴とするコンフィグレーション装置。
【００５４】
（付記２）前記回路設定ブロック単位の回路設定情報のソフトエラーを検出し、ソフトエラー検出された回路設定ブロックを特定する前記識別情報を前記選択部と前記設定情報制御部へ出力するエラー検出部を有する付記１記載のコンフィグレーション装置。
【００５５】
（付記３）付記２に記載のコンフィグレーション装置において、前記集積回路が有する処理機能ごとに、前記ブロックを割り付けた割付情報を格納する割付情報格納部を備え、当該割付情報格納部が格納する割付情報から、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能を抽出し、当該抽出された処理機能を停止するコンフィグレーション装置。
【００５６】
（付記４）付記３に記載のコンフィグレーション装置において、前記処理機能ごとのスケジュール情報を格納するスケジュール情報格納部を備え、当該スケジュール情報格納部に格納されたスケジュール情報に基づき、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能について、処理が行われていないときに、前記設定情報制御部が、前記ソフトエラーが検出された任意のブロックに相当する回路設定情報を読み出し、前記選択部に出力するコンフィグレーション装置。
【００５７】
（付記５）付記２ないし４のいずれかに記載のコンフィグレーション装置において、前記エラー検出部が検出したソフトエラーの回数を、前記分割されたブロックごとにカウントするエラー回数カウント部と、当該エラー回数カウント部がカウントしたソフトエラーの回数と、予め設定されたエラー回数とを前記ブロックごとに比較するエラー回数比較部と、当該エラー回数比較部がエラー回数を比較した結果、任意の一のブロックについてのソフトエラーの回数が、前記予め設定されたエラー回数を超える場合に、前記任意の一のブロックの領域において、物理的なデバイスエラーが発生していると判定するデバイスエラー判定部とを備えるコンフィグレーション装置。
【００５８】
（付記６）回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するコンフィグレーション方法において、前記回路設定情報を回路設定情報格納メモリに格納する格納ステップと、前記複数の回路設定部を複数に分割して、複数の回路設定ブロックを形成する分割ステップと、選択部が、初期化時には、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、前記回路設定ブロックを特定する識別情報が入力された時には、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択ステップと、設定情報制御部が、前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記回路設定ブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納メモリに格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御ステップと、を含むことを特徴とするコンフィグレーション方法。
【００５９】
（付記７）前記回路設定ブロック単位の回路設定情報のソフトエラーを検出し、ソフトエラー検出された回路設定ブロックを特定する前記識別情報を前記選択部と前記設定情報制御部へ出力するエラー検出ステップを含む付記６記載のコンフィグレーション方法。
【００６０】
（付記８）付記７に記載のコンフィグレーション方法において、前記集積回路が有する処理機能ごとに、前記ブロックを割り付けた割付情報に基づいて、前記エラー検出ステップにてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能を抽出し、当該抽出された処理機能を停止するコンフィグレーション方法。
【００６１】
（付記９）付記８に記載のコンフィグレーション方法において、前記処理機能ごとのスケジュール情報に基づき、前記エラー検出ステップにてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能について、処理が行われていないときに、前記設定情報制御ステップが、前記ソフトエラーが検出された任意のブロックに相当する回路設定情報を読み出し、前記選択部に出力するコンフィグレーション方法。
【００６２】
（付記１０）付記７ないし９のいずれかに記載のコンフィグレーション方法において、前記エラー検出ステップが検出したソフトエラーの回数を、前記分割されたブロックごとにカウントするエラー回数カウントステップと、当該エラー回数カウントステップがカウントしたソフトエラーの回数と、予め設定されたエラー回数とを前記ブロックごとに比較するエラー回数比較ステップと、当該エラー回数比較ステップがエラー回数を比較した結果、任意の一のブロックについてのソフトエラーの回数が、前記予め設定されたエラー回数を超える場合に、前記任意の一のブロックの領域において、物理的なデバイスエラーが発生していると判定するデバイスエラー判定ステップとを含むコンフィグレーション方法。
【００６３】
（付記１１）回路設定情報を集積回路内の複数の回路設定部に転送することで、前記回路設定部に基づく、論理回路を構築するようにコンピュータを機能させるコンフィグレーションプログラムにおいて、前記回路設定情報を格納した回路設定情報格納手段、前記複数の回路設定部を複数に分割して、複数の回路設定ブロック形成する手段、初期化時には、入力された回路設定情報を、ビットカウンタのカウントによって前記複数の回路設定ブロックから１つの回路設定ブロックを順次選択し、選択された回路設定ブロックへ前記回路設定情報を転送し、前記回路設定ブロックを特定する識別情報が入力された時、前記識別情報に基づいて、複数の回路設定ブロックのうち１つの回路設定ブロックを選択し、入力された回路設定情報を選択された前記回路設定ブロックの回路設定部へ転送する選択手段、前記識別情報が入力された時、前記回路設定ブロック単位の回路設定情報と前記回路設定ブロックを特定する前記識別情報とを対応づけた対応テーブルに基づいて、前記回路設定情報格納手段に格納されている回路設定情報のうち前記識別情報に対応する回路設定情報を読出し、前記選択部へ出力する制御を行う設定情報制御手段、としてコンピュータを機能させることを特徴とするコンフィグレーションプログラム。
【００６４】
（付記１２）前記回路設定ブロック単位の回路設定情報のソフトエラーを検出し、ソフトエラー検出された回路設定ブロックを特定する前記識別情報を前記選択手段と前記設定情報制御手段へ出力するエラー検出手段としてコンピュータを機能させる付記１１記載のコンフィグレーションプログラム。
【００６５】
（付記１３）付記１２に記載のコンフィグレーションプログラムにおいて、前記集積回路が有する処理機能ごとに、前記ブロックを割り付けた割付情報を格納する割付情報格納手段としてコンピュータを機能させ、当該割付情報格納手段が格納する割付情報から、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能を抽出し、当該抽出された処理機能を停止するコンフィグレーションプログラム。
【００６６】
（付記１４）付記１３に記載のコンフィグレーションプログラムにおいて、前記処理機能ごとのスケジュール情報を格納するスケジュール情報格納手段としてコンピュータを機能させ、当該スケジュール情報格納手段に格納されたスケジュール情報に基づき、前記エラー検出手段にてソフトエラーが検出された前記任意のブロックが割り付けられた処理機能について、処理が行われていないときに、前記設定情報制御手段が、前記ソフトエラーが検出された任意のブロックに相当する回路設定情報を読み出し、前記選択手段に出力するコンフィグレーションプログラム。
【００６７】
（付記１５）付記１２ないし１４のいずれかに記載のコンフィグレーションプログラムにおいて、前記エラー検出手段が検出したソフトエラーの回数を、前記分割されたブロックごとにカウントするエラー回数カウント手段、当該エラー回数カウント手段がカウントしたソフトエラーの回数と、予め設定されたエラー回数とを前記ブロックごとに比較するエラー回数比較手段、当該エラー回数比較手段がエラー回数を比較した結果、任意の一のブロックについてのソフトエラーの回数が、前記予め設定されたエラー回数を超える場合に、前記任意の一のブロックの領域において、物理的なデバイスエラーが発生していると判定するデバイスエラー判定手段としてコンピュータを機能させるコンフィグレーションプログラム。
【符号の説明】
【００６８】
１００  コンフィグレーション装置
１０１  基盤
１１０  ＣＰＵ
１２０  回路設定情報格納メモリ
１３０  設定情報制御デバイス
１４０  ＦＰＧＡ
１５０  設定情報書込可能領域
１６０  エラー検出部
１７０  上位装置
２０１  ブロックデータ
２１０  コンフィグレーション制御部
２２０  書込領域選択部
２３０  割付情報格納メモリ
３１０  設定情報書込回路
３２０  設定情報チェック部
３３０  読込領域選択部
５０１  ユーザデータ
５０２  グループ分け情報
５１０  回路設定情報生成ツール
５１１  回路設定情報
５１２  ブロック割付情報
７１０  スケジュール情報
【図１】
2011013829.tif 000003
【図２】
2011013829.tif 000004
【図３】
2011013829.tif 000005
【図４】
2011013829.tif 000006
【図５】
2011013829.tif 000007
【図６】
2011013829.tif 000008
【図７】
2011013829.tif 000009
【図８】
2011013829.tif 000010
【図９】
2011013829.tif 000011