JP2017111579A - 半導体集積回路及びその機能回復方法 - Google Patents

半導体集積回路及びその機能回復方法 Download PDF

Info

Publication number
JP2017111579A
JP2017111579A JP2015244578A JP2015244578A JP2017111579A JP 2017111579 A JP2017111579 A JP 2017111579A JP 2015244578 A JP2015244578 A JP 2015244578A JP 2015244578 A JP2015244578 A JP 2015244578A JP 2017111579 A JP2017111579 A JP 2017111579A
Authority
JP
Japan
Prior art keywords
circuit
failure
block
mounting position
semiconductor integrated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2015244578A
Other languages
English (en)
Inventor
松本 邦彦
Kunihiko Matsumoto
邦彦 松本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015244578A priority Critical patent/JP2017111579A/ja
Publication of JP2017111579A publication Critical patent/JP2017111579A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Hardware Redundancy (AREA)

Abstract

【課題】ハードウェア故障による部品交換の回数を低減し信頼性を向上させる。【解決手段】入力される回路構成情報に基づいてコンフィギュレーションを行うことで回路構成が変更される論理ブロック部と、少なくとも1つの論理ブロックを含む回路ブロックにてハードウェア故障を検出した場合、故障範囲に応じて論理ブロック部における実装位置を変更する実装位置演算部と、論理ブロック部における実装位置を実装位置演算部に従って変更し論理ブロック部の再コンフィギュレーションを行う制御部とを有する半導体集積回路にて、回路ブロックにてハードウェア故障を検出した場合、実装位置演算部が、回路ブロックを細分化して故障範囲を特定し、故障範囲内の論理ブロックの単位で構成する回路を移動させる正常動作する論理ブロックを決定するようにして、ハードウェア故障が発生しても機能回復できるようにする。【選択図】図2

Description

本発明は、半導体集積回路及びその機能回復方法に関する。
FPGA(Field Programmable Gate Array)は、ユーザによりプログラム可能な半導体集積回路である。例えば、SRAM(Static Random Access Memory)ベースのFPGAは、入力されたコンフィギュレーションデータ(回路構成情報)に基づいてコンフィギュレーションを行うことによって、プログラム可能な回路の構成を変更し各種機能を実現することが可能である。
SRAMベースのFPGAは、コンフィギュレーション後にSEU(Single Event Upset)が発生して回路が書き換わったりフリップフロップのビットデータが反転したりすることがある。そのため、FPGAベンダー各社は、FPGA内部のコンフィギュレーションメモリ(CRAM)に保持されているコンフィギュレーションデータを、専用のハードマクロによって周期的に検証し、エラー発生時には外部端子により通知するようFPGAを構成している。また、ユーザ回路の対応としては、例えばRAM(Random Access Memory)やFIFO(First-In First-Out)等のオンチップメモリの書き込みデータにCRC(Cyclic Redundancy Check)の演算結果を一緒に書き込み、読み出し時にCRC演算を再び行って検証するといった対策を講じている。
前述のようなエラーチェックによって異常を検出した場合、FPGAを正常な状態に戻すために再度コンフィギュレーション(再コンフィギュレーション)を行って復旧を試みるのが一般的である。しかし、再コンフィギュレーションを行ってもFPGAが正常動作しない場合、そのFPGAはハードウェア故障(デバイス故障)と判断されて新しいFPGAと部品交換される。
プログラム可能な情報処理装置において、複数の論理構成要素により論理回路として構成された論理処理部に加えて、複数の論理構成要素により論理回路として再構成可能に構成され、通常時には使用されない予備論理処理部を設けておき、論理処理部での障害の発生を検出した場合、障害の発生した論理処理部と同一の論理回路構成になるように予備論理処理部を再構成する技術が提案されている(特許文献1参照)。また、システムが有する複数の回路ブロックのうちの何れかの回路ブロックで故障が発生すると、優先順位の低い回路機能を切り捨てて、システムの機能を故障前の状態に近づけるように残存する回路ブロックを再構成する技術が提案されている(特許文献2参照)。
特開平8−44581号公報 特開2001−34496号公報
FPGAの再コンフィギュレーションを行ってもFPGAが正常動作しない場合、ハードウェア故障と判断して部品交換を行うことになる。FPGAパッケージの多ピン化やピンピッチ(ピン間距離)の縮小化が進んでおり、新しいFPGAへの部品交換は、プリント基板からの剥離や接合に特殊な設備(X線装置、ヒートガン、レーザ等)が必要となり難易度が高く、多くの時間も要する。また、FPGAを実装するプリント基板自体も高密度化が進んでおり、周辺部品への影響(熱、歪、振動)等を考慮すると部品交換ができないこともある。近年、FPGAは高密度化や高性能化に伴って装置の主要部品として使用されるようになり、FPGAが故障すると装置の動作への影響が大きい。1つの側面では、本発明の目的は、ハードウェア故障による部品交換の回数を低減し信頼性を向上させることができる半導体集積回路を提供することにある。
半導体集積回路の一態様は、入力される回路構成情報に基づいてコンフィギュレーションを行うことで回路構成が変更される論理ブロックを複数有する論理ブロック部と、少なくとも1つの論理ブロックを含む回路ブロックにてハードウェア故障を検出した場合、故障範囲に応じて論理ブロック部における実装位置を変更する実装位置演算部と、論理ブロック部における実装位置を実装位置演算部に従って変更し論理ブロック部の再コンフィギュレーションを行う制御部とを有する。実装位置演算部は、回路ブロックにてハードウェア故障を検出した場合、回路ブロックを逐次分割し細分化して故障範囲を特定し、特定した故障範囲内の論理ブロックの単位で構成する回路を移動させる正常動作する論理ブロックを決定する。
発明の一態様においては、半導体集積回路内の一部の回路でハードウェア故障が発生しても機能回復可能となり、ハードウェア故障による部品交換の回数を低減し信頼性を向上させることができる。
本発明の実施形態における半導体集積回路の構成例を示す図である。 本実施形態における半導体集積回路のハードウェア故障発生時の動作シーケンスの一例を示す図である。 本実施形態における実装位置変換を説明するための図である。 本実施形態における実装位置変換の一例を示す図である。 本実施形態における故障範囲特定処理の一例を説明するための図である。 本実施形態における故障範囲特定処理の他の例を説明するための図である。 本実施形態における機能回復方法の一例を示す図である。 本実施形態における機能回復処理の一例を示すフローチャートである。 本実施形態における機能回復方法の他の例を示す図である。 本実施形態における機能回復処理の他の例を示すフローチャートである。 本実施形態における機能回復処理のその他の例を示すフローチャートである。 本実施形態における故障履歴管理テーブルの一例を示す図である。
以下、本発明の実施形態を図面に基づいて説明する。
図1は、本発明の一実施形態における半導体集積回路の構成例を示す図である。本実施形態における半導体集積回路10は、入力されるコンフィギュレーションデータ(回路構成情報)に基づいてコンフィギュレーションを行うことによって論理ブロックの回路構成を変更できる、ユーザによりプログラム可能な半導体集積回路であり、例えばFPGA(Field Programmable Gate Array)である。半導体集積回路10は、論理ブロック部11、コンフィギュレーション制御部13、修復制御部15、故障監視部17、及び故障履歴管理テーブル19を有する。
論理ブロック部11は、ルックアップテーブル(LUT)やフリップフロップ(FF)をそれぞれ有し、プログラム可能な回路を実現する論理回路の最小単位としての論理ブロック12を複数有する。コンフィギュレーションデータ(回路構成情報)に基づいてコンフィギュレーションを行い、論理ブロック12等を含む論理ブロック部11の回路の構成を変更することで各種機能を実現することが可能となっている。なお、本実施形態における論理ブロック部11は、論理ブロック部11全体に限らず、部分的にコンフィギュレーションを行うことが可能になっている。
コンフィギュレーション制御部13は、フラッシュメモリ等の不揮発性メモリ20からコンフィギュレーションデータ(回路構成情報)を読み出し、コンフィギュレーションデータ(回路構成情報)に基づいて論理ブロック部11における論理ブロック12の回路構成や接続等を制御する。修復制御部15は、実装位置演算部16を有し、半導体集積回路10においてハードウェア故障を検出した場合に機能回復させるための処理を行う。実装位置演算部16は、論理ブロック部11における故障範囲を特定する処理や、特定された故障範囲及び論理ブロック部11の空き領域(未使用領域)に基づいて回路の実装位置を決めるための演算を行う。
故障監視部17は、半導体集積回路10(論理ブロック部11)における故障を検出するための回路であり、例えばFPGAベンダーが提供するマクロやユーザが提供するチェック回路等である。故障履歴管理テーブル19は、検出された故障範囲の履歴を保持するとともに、修復制御部15の実装位置演算部16での処理に用いるパラメータ等を保持する。故障履歴管理テーブル19に保持されている情報は、半導体集積回路10全体のコンフィギュレーションを行う場合に消失しないように、半導体集積回路10全体のコンフィギュレーションを行う前に外部に退避させるか、あるいは内部に不揮発性の記憶部を設けて保存するようにする。
図2は、本実施形態における半導体集積回路のハードウェア故障発生時の動作シーケンスの一例を示す図である。まず、通常動作中に故障監視部17は所定の回路ブロック単位で論理ブロック部11の正常性チェックを行っており、ある回路ブロックでハードウェア故障を検出すると、修復制御部15に故障検出を通知する(201)。
故障検出の通知を受けた修復制御部15は、論理ブロック部11における故障範囲を特定する処理を行うためにスケジューリングを行う(202)。スケジューリングでは、修復制御部15は、故障履歴管理テーブル19を参照して(203)、例えば故障範囲を特定するための分割情報(N)を取得して繰り返し処理する回数等を決定する。
その後、修復制御部15は、故障範囲特定処理を開始し、論理ブロック部11における故障範囲を特定するための診断を開始する(204)。故障範囲特定処理では、修復制御部15は、故障が検出された回路ブロックを(1/N)に分割して診断用回路を部分的な再コンフィギュレーションにより生成して動作を検証する(205)。
故障範囲が特定されるまで、回路ブロックを再分割し部分的な再コンフィギュレーションにより診断用回路を生成する処理を繰り返すが、診断結果を故障履歴管理テーブル19に書き込むまでの処理をスケジューリング(207)が管理している。そして、故障範囲が特定され診断結果が得られると(206)、修復制御部15は、故障履歴管理テーブル19に保持する故障結果を更新する(208)。故障範囲特定処理における内部処理は、故障範囲が特定されるまで回路ブロックの分割及び診断を繰り返し行う。
故障範囲特定処理によって故障範囲が特定されると、修復制御部15は、故障範囲に実装される予定の回路構成を、故障範囲を避けて実装するための移動量を測定し(209)、故障履歴管理テーブル19に保持する測定結果を更新する(210)。続いて、修復制御部15は、故障範囲を避けて実装予定の回路構成を実装するための実装位置の変換量を示す移動ベクトルを決定する(211)。移動ベクトルの決定は故障履歴管理テーブル19が保持する移動量の測定結果を参照して行われ(212)、決定した移動ベクトルは故障履歴管理テーブル19に保持される(213)。
故障範囲を避けて実装するための移動ベクトルが決定すると、修復制御部15は、コンフィギュレーション制御部13に再コンフィギュレーションの開始を指示する(214)。修復制御部15からの指示を受けたコンフィギュレーション制御部13は、メモリ20からコンフィギュレーションデータ(回路構成情報)を読み出して論理ブロック部11の再コンフィギュレーションを行う(215)。
このとき、論理ブロック部11の故障箇所に実装される予定の回路については、メモリ20から読み出されたコンフィギュレーションデータ(回路構成情報)が修復制御部15に供給されて実装位置が変換される(216)。修復制御部15は、故障履歴管理テーブル19に保持されている移動ベクトルを参照して(217)、故障箇所に実装される予定の回路の実装位置を変換する。そして、実装位置が変換されたコンフィギュレーションデータ(回路構成情報)に基づいて論理ブロック部11のコンフィギュレーションが行われる(218)。
一方、論理ブロック部11の通常箇所(故障箇所とは異なる箇所)については、メモリ20から読み出されたコンフィギュレーションデータ(回路構成情報)に基づいて論理ブロック部11のコンフィギュレーションが行われる(219)。そして、再コンフィギュレーションが完了すると、コンフィギュレーション制御部13が修復制御部15にコンフィギュレーションの完了を通知し(220)、完了通知を受けた修復制御部15が故障監視部17に故障監視の開始を指示して(221)、通常動作に戻る。
図3及び図4を参照して、本実施形態における半導体集積回路において故障箇所を避けて実装するための実装位置変換について説明する。メモリ20に記憶されているコンフィギュレーションデータ(回路構成情報)では、例えば図3(A)に示す実装イメージ300のように実装位置が指定されているものとする。ここで、図3(B)に示す実際の半導体集積回路301のように回路部302で故障が検出されている場合、故障が検出された回路部302を避けるようにコンフィギュレーションデータ(回路構成情報)における実装位置を変換する。
なお、故障範囲を避けるようなコンフィギュレーションデータ(回路構成情報)を生成してメモリ20に記憶する方法も考えられるが、故障が検出される度にコンフィギュレーションデータ(回路構成情報)を生成することは効率が悪い。そこで、本実施形態では、メモリ20に記憶するコンフィギュレーションデータ(回路構成情報)は変えずに、半導体集積回路の内部で実装位置の座標変換を行うようにする。これにより、半導体集積回路において故障が検出されても、容易に故障範囲を避けた実装を実現し機能を回復させることが可能となる。
また、本実施形態では故障した回路を再配置する場合、図4に一例を示すように回路構成は何も変換せずに実装位置の座標を同じだけずらすようにして変換する。図4(A)は故障した回路の実装位置を示しており、図4(B)は再配置後の実装位置を示している。図4(A)及び図4(B)に示す例では、回路内の回路要素や信号線は変えずに、各回路要素の実装位置を示すX座標を5ずらすようしている。
次に、本実施形態における故障範囲特定処理について説明する。図5は、本実施形態における故障範囲特定処理の一例を説明するための図である。故障監視部17による回路ブロック単位での論理ブロック部11の正常性チェックにより、図5(A)に示す回路ブロックBLK1においてハードウェア故障が検出されたとする。図5(A)において、ハッチングが施されていない論理ブロック(LUT/FF)が未使用の論理ブロックであり、ハッチングが施されている論理ブロック(LUT/FF)が使用している論理ブロックである。また、使用している論理ブロックのうち、×印の論理ブロックがハードウェア故障している論理ブロックである。
回路ブロックBLK1においてハードウェア故障が検出されると、まず修復制御回路15は、図5(B)に示すように回路ブロックBLK1をブロック501とブロック502とに左右に分割して故障範囲の特定を行う。修復制御回路15は、ブロック501とブロック502とのそれぞれを部分的に再コンフィギュレーションし、論理ブロック12を診断用回路にして動作を検証する。動作の検証は、例えば診断用回路として論理ブロック12を読み書き可能なレジスタのような構成にして、正常にデータの読み書きが行えるか否かによって判断すれば良い。なお、診断用回路はこれに限らず、論理ブロック12の動作が検証できる回路構成であれば良い。図5(B)に示した例の場合、ブロック501において故障が検出される。
ブロック501において故障が検出されると、続いて修復制御回路15は、図5(C)に示すようにブロック501をブロック511とブロック512とに左右に分割して故障範囲の特定を行う。修復制御回路15は、図5(B)に示した例と同様にして、ブロック511とブロック512とのそれぞれを部分的に再コンフィギュレーションし、論理ブロック12を診断用回路にして動作を検証する。図5(C)に示した例の場合、ブロック512において故障が検出される。
ブロック512において故障が検出されると、続いて修復制御回路15は、図5(D)に示すようにブロック512をブロック521とブロック522とに上下に分割して故障範囲の特定を行う。修復制御回路15は、図5(B)に示した例と同様にして、ブロック521とブロック522とのそれぞれを部分的に再コンフィギュレーションし、論理ブロック12を診断用回路にして動作を検証する。図5(D)に示した例の場合、ブロック521において故障が検出される。
ブロック521において故障が検出されると、続いて修復制御回路15は、図5(E)に示すようにブロック521をブロック531とブロック532とに上下に分割して故障範囲の特定を行う。修復制御回路15は、図5(B)に示した例と同様にして、ブロック531とブロック532とのそれぞれを部分的に再コンフィギュレーションし、論理ブロック12を診断用回路にして動作を検証する。図5(E)に示した例の場合、ブロック532において故障が検出される。
ブロック532において故障が検出されると、続いて修復制御回路15は、図5(F)に示すようにブロック532をブロック541とブロック542とに左右に分割して故障範囲の特定を行う。修復制御回路15は、図5(B)に示した例と同様にして、ブロック541とブロック542とのそれぞれを部分的に再コンフィギュレーションし、論理ブロック12を診断用回路にして動作を検証する。図5(F)に示した例の場合、ブロック541及びブロック542において故障が検出される。
図5(F)に示した例のように、分割したブロックのすべてで故障が検出されると、故障範囲特定処理を終了する。図5に示す例では、回路ブロックBLK1内のブロック541とブロック542とが故障範囲として特定されたこととなる。
なお、図5に示したハードウェア故障が検出された回路ブロックの分割方法は一例であり、これに限定されるものではない。各ブロックを縦方向(上下方向)に分割するか、横方向(左右方向)に分割するかは変更可能であり、回路ブロックを細分化する際の最小単位等も任意である。また、図5においては、故障が検出されたブロックを2分割する例を示したが、分割数も任意である。例えば、図6に示すように、ハードウェア故障が検出された回路ブロックBLK1を分割せずに、回路ブロックBLK1全体を再コンフィギュレーションして一括して動作の検証を行うようにしても良い。
次に、本実施形態における機能回復方法について説明する。図7は、本実施形態における半導体集積回路での機能回復方法の一例を示す図である。以下では、図7(A)に示すように、回路ブロックBLK1内の使用している論理ブロック12のうち、故障範囲701の論理ブロックの回路がハードウェア故障しているものとして説明する。
<1>故障した回路の実装位置を単に未使用の論理ブロックに変更する場合
まず、故障範囲701の故障した回路の実装位置を未使用の論理ブロックに変更する場合について説明する。これは、使用している論理ブロックのうち、故障していない論理ブロックについては実装位置の変更は行わずに、故障範囲701の故障した回路の実装位置を、例えば図7(B)に示すように未使用の論理ブロックの領域711に変更したり、図7(C)に示すように未使用の論理ブロックの領域721に変更したりする場合である。
図8は、図7(B)及び図7(C)に示したように故障した回路の実装位置を未使用の論理ブロックに変更することで機能回復させる機能回復処理の例を示すフローチャートである。故障監視部17により論理ブロック部11でのハードウェア故障が検出されると、機能回復処理を開始する。
まず、ステップS801にて、修復制御部15は、前述した故障範囲特定処理を行い、故障範囲を特定する。故障範囲を特定すると、ステップS802にて、修復制御部15は、故障履歴管理テーブル19に保持する故障範囲の情報を更新するとともに使用可能なリソースを示すリソース情報等を更新する。次に、ステップS803にて、修復制御部15は、更新したリソース情報に基づいて、故障した回路を配置可能な領域があるか否かを判断する。
故障した回路を配置可能な領域(リソース)がある、すなわち故障した回路を配置できる未使用の論理ブロックがある(Yes)と判断した場合、ステップS804にて、修復制御部15は、故障した回路の実装位置をX方向(横方向)に変更する場合の移動量(X座標移動量)を計算する。X座標移動量は、故障面積分(図7に示した例では故障範囲701)の未使用の論理ブロックが確保できるまで、実装位置のX座標を移動させることで求める。
このとき、修復制御部15は、故障履歴管理テーブル19を参照し、移動先に故障している論理ブロックがあれば、故障している論理ブロックの先から再びX座標の移動を行って移動量を求める。なお、故障した回路の位置から一方の方向にX座標を移動させていき、移動可能なX座標の末端に達した場合には、故障した回路の位置から他方の方向にX座標を移動させていくようにしても良いし、X座標の始点(他方向側の末端)から一方の方向にX座標を移動させていくようにしても良い。
次に、ステップS805にて、修復制御部15は、故障した回路の実装位置をY方向(縦方向)に変更する場合の移動量(Y座標移動量)を計算する。Y座標移動量は、故障面積分(図7に示した例では故障範囲701)の未使用の論理ブロックが確保できるまで、実装位置のY座標を移動させることで求める。
このとき、修復制御部15は、故障履歴管理テーブル19を参照し、移動先に故障している論理ブロックがあれば、故障している論理ブロックの先から再びY座標の移動を行って移動量を求める。なお、故障した回路の位置から一方の方向にY座標を移動させていき、移動可能なY座標の末端に達した場合には、故障した回路の位置から他方の方向にY座標を移動させていくようにしても良いし、Y座標の始点(他方向側の末端)から一方の方向にY座標を移動させていくようにしても良い。
以上のようにして、X座標移動量及びY座標移動量を求めた後、ステップS806にて、修復制御部15は、求めたX座標移動量及びY座標移動量に基づいて移動位置を決定する。修復制御部15は、求めたX座標移動量及びY座標移動量のうち、移動量が少ない方を故障した回路の移動位置として決定する。これにより、ハードウェア故障が発生しても、少ない変更量で機能を回復させることができる。例えば、図7(B)及び図7(C)に示した例であればX方向に移動させた場合の移動量が少ないので、修復制御部15は、X座標移動量だけX方向に移動した位置を故障した回路の実装位置として決定する。
そして、ステップS807にて、ステップS806において決定した移動位置に故障した回路の実装位置を変更して再コンフィギュレーションを行い、機能回復処理を終了する。なお、ステップS803での判断において、故障した回路を配置可能な領域(リソース)がない(No)、すなわち故障した回路を配置するには未使用の論理ブロックが不足していると判断した場合、修復不可(故障交換)であると判定し(S808)、機能回復処理を終了する。
<2>故障した回路に加えて故障していない回路の実装位置も変更する場合
次に、より厳密なタイミングが求められる場合など、故障範囲701の故障した回路に加えて、故障していない回路の実装位置もあわせて変更する場合について説明する。これは、例えば図9(A)に示すように故障範囲701の故障した回路の実装位置を領域911に変更するとともに故障していない回路の実装位置を領域912に変更したり、図9(B)に示すように故障範囲701の故障した回路の実装位置を領域921に変更するとともに故障していない回路の実装位置を領域922に変更したりする場合である。
図10は、図9(A)及び図9(B)に示したように故障した回路に加えて、故障していない回路の実装位置もあわせて変更することで機能回復させる機能回復処理の例を示すフローチャートである。故障監視部17により論理ブロック部11でのハードウェア故障が検出されると、機能回復処理を開始する。
まず、ステップS1001にて、修復制御部15は、前述した故障範囲特定処理を行い、故障範囲を特定する。故障範囲を特定すると、ステップS1002にて、修復制御部15は、故障履歴管理テーブル19に保持する故障範囲の情報を更新するとともに使用可能なリソースを示すリソース情報等を更新する。次に、ステップS1003にて、修復制御部15は、更新したリソース情報に基づいて、故障した回路を配置可能な領域があるか否かを判断する。
故障した回路を配置可能な領域(リソース)がある(Yes)と判断した場合、ステップS1004にて、修復制御部15は、故障した回路の実装位置をX方向(横方向)に変更する場合の移動量(X座標移動量)を計算する。X座標移動量は、故障面積分(図9に示した例では故障範囲701)の故障していない論理ブロックが確保できるまで、実装位置のX座標を移動させることで求める。なお、移動先の論理ブロックが使用する論理ブロックである場合には、それも合わせて実装位置のX座標を移動させる。
このとき、修復制御部15は、故障履歴管理テーブル19を参照し、移動先に故障している論理ブロックがあれば、故障している論理ブロックの先から再びX座標の移動を行って移動量を求める。なお、故障した回路の位置から一方の方向にX座標を移動させていき、移動可能なX座標の末端に達した場合には、故障した回路の位置から他方の方向にX座標を移動させていくようにしても良いし、X座標の始点(他方向側の末端)から一方の方向にX座標を移動させていくようにしても良い。
次に、ステップS1005にて、修復制御部15は、故障した回路の実装位置をY方向(縦方向)に変更する場合の移動量(Y座標移動量)を計算する。Y座標移動量は、故障面積分(図9に示した例では故障範囲701)の故障していない論理ブロックが確保できるまで、実装位置のY座標を移動させることで求める。なお、移動先の論理ブロックが使用する論理ブロックである場合には、それも合わせて実装位置のY座標を移動させる。
このとき、修復制御部15は、故障履歴管理テーブル19を参照し、移動先に故障している論理ブロックがあれば、故障している論理ブロックの先から再びY座標の移動を行って移動量を求める。なお、故障した回路の位置から一方の方向にY座標を移動させていき、移動可能なY座標の末端に達した場合には、故障した回路の位置から他方の方向にY座標を移動させていくようにしても良いし、Y座標の始点(他方向側の末端)から一方の方向にY座標を移動させていくようにしても良い。
以上のようにして、X座標移動量及びY座標移動量を求めた後、ステップS1006にて、修復制御部15は、求めたX座標移動量及びY座標移動量に基づいて移動位置を決定する。ここでは、例えば修復制御部15は、求めたX座標移動量及びY座標移動量に応じて実装位置を移動させたとき、正常な回路の総移動量(移動座標×移動数)が少ないものを故障した回路の移動位置として決定する。これにより、ハードウェア故障が発生しても、論理ブロック間の信号配線等を含めて少ない回路変更量でかつタイミング性能の低下を抑制して機能を回復させることができる。例えば、図9(A)及び図9(B)に示した例であればX方向に移動させた場合の総移動量が12(2×6)であり、Y方向に移動させた場合の総移動量が30(3×10)であるので、修復制御部15は、求めたX座標移動量に基づいて変更後の回路の実装位置を決定する。
そして、ステップS1007にて、ステップS1006において決定した移動位置に回路の実装位置を変更して再コンフィギュレーションを行い、機能回復処理を終了する。なお、ステップS1003での判断において、故障した回路を配置可能な領域(リソース)がない(No)と判断した場合、修復不可(故障交換)であると判定し(S1008)、機能回復処理を終了する。
なお、図8や図10に示した例では、X座標移動量計算を行った後にY座標移動量計算を行うようにしているが、X座標移動量計算及びY座標移動量計算を行う順序は任意である。また、ある方向において移動量計算を行う際に、一方の方向に限らず逆の他方の方向(座標におけるプラス方向及びマイナス方向)についてもそれぞれ移動量計算を行うようにしても良く、求めた移動量の内の最小の移動量に基づいて移動位置を決定すれば良い。また、前述した説明では、横方向又は縦方向に実装位置を変更する例を示したが、横方向又は縦方向に限らず、斜め方向に実装位置を変更する場合を含んでも良い。
図11は、故障した回路の実装位置を任意の方向に変更する場合における機能回復処理の例を示すフローチャートである。故障監視部17により論理ブロック部11でのハードウェア故障が検出されると、機能回復処理を開始する。
まず、ステップS1101にて、修復制御部15は、前述した故障範囲特定処理を行い、故障範囲を特定する。故障範囲を特定すると、ステップS1102にて、修復制御部15は、故障履歴管理テーブル19に保持する故障範囲の情報を更新するとともに使用可能なリソースを示すリソース情報等を更新する。次に、ステップS1103にて、修復制御部15は、更新したリソース情報に基づいて、故障した回路を配置可能な領域があるか否かを判断する。
故障した回路を配置可能な領域(リソース)がある(Yes)と判断した場合、ステップS1104へ進む。ステップS1104にて、修復制御部15は変数iを0に初期化する。次に、ステップS1105にて、修復制御部15は変数iを1インクリメントする。ステップS1106にて、修復制御部15は、移動距離が変数iに応じた距離となるように、故障した回路の実装位置をX方向(横方向)にΔX分移動させるとともにY方向(縦方向)にΔY分移動させる。
次に、ステップS1107にて、修復制御部15は、移動距離が変数iに応じた距離となるように移動させたときに、故障面積分の空き論理ブロックが確保できる位置があるか否かを判断する。故障面積分の空き論理ブロックが確保できる位置がない(No)と判断した場合、ステップS1105に戻り、変数iを増加、すなわち移動距離を増加させてステップS1105の処理を再び行う。
一方、ステップS1107での判断の結果、故障面積分の空き論理ブロックが確保できる位置がある場合(Yes)には、修復制御部15は、その位置を回路の移動位置として決定する。そして、ステップS1108にて、決定した移動位置に回路の実装位置を変更して再コンフィギュレーションを行い、機能回復処理を終了する。なお、ステップS1103での判断において、故障した回路を配置可能な領域(リソース)がない(No)と判断した場合、修復不可(故障交換)であると判定し(S1109)、機能回復処理を終了する。
図12は、本実施形態における故障履歴管理テーブルの一例を示す図である。本実施形態において故障履歴管理テーブルは、例えば回路ブロック単位での故障履歴を第1の故障履歴として保持し、回路ブロック毎に細分化した詳細領域単位での故障履歴を第2の故障履歴として保持するような階層構造を有している。図12(A)及び図12(B)には、4つの回路ブロックBLK11、BLK12、BLK21、BLK22を有し、各回路ブロックを9つの詳細領域に分割した例を示している。なお、各詳細領域は9つの論理ブロックを含む。
図12(A)に示すように、第1の故障履歴は、4つの回路ブロックBLK11、BLK12、BLK21、BLK22における故障の有無を示しており、故障した論理ブロックが含まれる場合が“1”であり、故障した論理ブロックが含まれない場合が“0”であるものとする。また、図12(B)に示すように、第2の故障履歴は、回路ブロック毎に9つの詳細領域における故障の有無を示しており、故障した論理ブロックが含まれる場合が“1”であり、故障した論理ブロックが含まれない場合が“0”であるものとする。
図12(B)においては、回路ブロックBLK22の9つの詳細領域BLK22−11、BLK22−12、BLK22−13、BLK22−21、BLK22−22、BLK22−23、BLK22−31、BLK22−32、BLK22−33の第2の故障履歴を一例として示している。図12(B)に示す例では、回路ブロックBLK22の詳細領域BLK22−23に故障した論理ブロックが含まれているので、回路ブロックBLK22に対応する第1の故障履歴が“1”となり、詳細領域BLK22−23に対応する回路ブロックBLK22の第2の故障履歴が“1”となっている。
故障履歴管理テーブルをこのような構成とすることで、故障履歴管理テーブルを参照する際に情報として要求する分割単位での故障履歴を参照することができ、効率良く参照することができる。例えば、第1の故障履歴を参照すれば、回路ブロックにおける故障した論理ブロックの有無がわかるので、回路ブロックが故障した論理ブロックを有しないと判定できれば第2の故障履歴を参照することなく、すべての論理ブロックが故障していないことを速やかに判定できることとなる。また、例えば第1の故障履歴のすべてが“1”、すなわちすべての回路ブロックに故障した論理ブロックが含まれる場合、半導体集積回路の寿命として部品交換を行うようにしても良い。
本実施形態によれば、ハードウェア故障が発生した場合、半導体集積回路内で、回路ブロックを細分化していき故障範囲を特定し、特定した故障範囲の論理ブロックを避けるように実装位置を変更して再コンフィギュレーションを行うことにより、ハードウェア故障が発生しても機能回復することが可能となる。したがって、ハードウェア故障による部品交換の回数を低減し信頼性を向上させることができる。
なお、前記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
10 半導体集積回路
11 論理ブロック部
12 論理ブロック
13 コンフィギュレーション制御部
15 修復制御部
16 実装位置演算部
17 故障監視部
19 故障履歴管理テーブル
20 メモリ

Claims (6)

  1. 入力される回路構成情報に基づいて回路を構成可能な半導体集積回路であって、
    前記回路構成情報に基づいてコンフィギュレーションを行うことで回路構成が変更される論理ブロックを複数有する論理ブロック部と、
    少なくとも1つの前記論理ブロックを含む回路ブロックにてハードウェア故障を検出した場合、前記回路ブロックを逐次分割し細分化して故障範囲を特定し、特定した前記故障範囲内の論理ブロックの単位で構成する回路を移動させる正常動作する論理ブロックを決定する実装位置演算部と、
    前記実装位置演算部での決定に従って前記論理ブロック部における実装位置を変更し前記論理ブロック部の再コンフィギュレーションを行う制御部とを有することを特徴とする半導体集積回路。
  2. 前記実装位置演算部は、特定した前記故障範囲内の論理ブロックの単位で構成する回路を正常動作する論理ブロックに移動させる際の移動量を複数の方向について求め、求めた複数の方向の移動量に基づいて前記故障範囲内の論理ブロックの単位で構成する回路を移動させる論理ブロックを決定することを特徴とする請求項1記載の半導体集積回路。
  3. 前記実装位置演算部は、前記複数の方向の移動量のうち、移動量が最小となる論理ブロックを前記故障範囲内の論理ブロックの単位で構成する回路を移動させる論理ブロックに決定することを特徴とする請求項2記載の半導体集積回路。
  4. 特定した故障範囲を故障履歴として保持する故障履歴管理部を有し、
    前記実装位置演算部は、前記故障履歴管理部が保持する故障履歴を参照して、前記故障範囲内の論理ブロックの単位で構成する回路を移動させる論理ブロックを決定することを特徴とする請求項1〜3の何れか1項に記載の半導体集積回路。
  5. 前記実装位置演算部は、前記回路ブロックを分割し細分化した領域を部分的に再コンフィギュレーションし診断用の回路を生成して動作を検証し故障範囲を特定することを特徴とする請求項1〜4の何れか1項に記載の半導体集積回路。
  6. 入力される回路構成情報に基づいて回路を構成可能な半導体集積回路の機能回復方法であって、
    回路構成情報に基づいてコンフィギュレーションを行うことで回路構成が変更される論理ブロックを複数有する少なくとも1つの論理ブロックを含む回路ブロックにてハードウェア故障を検出した場合、前記半導体集積回路の実装位置演算部が、前記回路ブロックを逐次分割し細分化して前記論理ブロックの単位で故障範囲を特定し、
    前記実装位置演算部が、特定した前記故障範囲内の論理ブロックの単位で構成する回路を移動させる正常動作する論理ブロックを決定し、
    前記半導体集積回路の制御部が、前記実装位置演算部での決定に従って前記論理ブロック部における実装位置を変更し前記論理ブロック部の再コンフィギュレーションを行うことを特徴とする半導体集積回路の機能回復方法。
JP2015244578A 2015-12-15 2015-12-15 半導体集積回路及びその機能回復方法 Pending JP2017111579A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015244578A JP2017111579A (ja) 2015-12-15 2015-12-15 半導体集積回路及びその機能回復方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015244578A JP2017111579A (ja) 2015-12-15 2015-12-15 半導体集積回路及びその機能回復方法

Publications (1)

Publication Number Publication Date
JP2017111579A true JP2017111579A (ja) 2017-06-22

Family

ID=59079722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015244578A Pending JP2017111579A (ja) 2015-12-15 2015-12-15 半導体集積回路及びその機能回復方法

Country Status (1)

Country Link
JP (1) JP2017111579A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11390290B2 (en) 2018-06-28 2022-07-19 Mitsubishi Electric Corporation Vehicle electronic control apparatus

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11390290B2 (en) 2018-06-28 2022-07-19 Mitsubishi Electric Corporation Vehicle electronic control apparatus

Similar Documents

Publication Publication Date Title
JP5699057B2 (ja) プログラマブルデバイス、プログラマブルデバイスのリコンフィグ方法および電子デバイス
JP5014899B2 (ja) 再構成可能デバイス
JP6290934B2 (ja) プログラマブルデバイス、エラー保持システム、及び電子システム装置
JP4457083B2 (ja) リコンフィグラブルデバイス搭載ボードのセルフテスト装置および方法
Di Carlo et al. A novel methodology to increase fault tolerance in autonomous FPGA-based systems
JP6408482B2 (ja) プログラマブルデバイス及びこれを用いた電子システム装置
KR101313692B1 (ko) 로봇용 소프트웨어 컴포넌트를 실행하는데 있어서 고장 감내 방법 및 장치
JP5446229B2 (ja) 電子デバイス、電子デバイスの故障検出方法および電子デバイスの故障回復方法
JP2018181206A (ja) データ処理装置、データ処理方法およびプログラム
JP6489954B2 (ja) 半導体装置及びその制御方法
KR101478907B1 (ko) 신호 처리 회로 및 이를 사용한 시험 장치
JP2014052781A (ja) Fpga監視制御回路
US9117047B2 (en) Diagnosis device, control method of diagnosis device, and recording medium
JP2017111579A (ja) 半導体集積回路及びその機能回復方法
Miculka et al. Generic partial dynamic reconfiguration controller for transient and permanent fault mitigation in fault tolerant systems implemented into fpga
Bolchini et al. A reliable reconfiguration controller for fault-tolerant embedded systems on multi-FPGA platforms
JP5691715B2 (ja) Fpga、fpgaを用いた回路再構成システム、方法およびプログラム
WO2014115289A1 (ja) プログラマブルデバイス及び電子システム装置
JP2013187699A (ja) Fpga構成処理制御回路
Bolchini et al. Increasing autonomous fault-tolerant FPGA-based systems' lifetime
WO2018179739A1 (ja) 情報処理装置、情報処理方法及びプログラム
Fouad et al. Context-aware resources placement for SRAM-based FPGA to minimize checkpoint/recovery overhead
JP6337548B2 (ja) 論理集積回路
JP7287651B2 (ja) 分散処理装置、分散処理方法、及びプログラム
JP2015201813A (ja) プログラマブルゲートアレイ