(57)【特許請求の範囲】
【請求項１】
集積回路内の故障耐性を定めるためのシステムであって、
前記集積回路により保持されるプログラム可能論理デバイスと、
前記プログラム可能論理デバイスにより保持された、前記プログラム可能デバイスの一部分の機能及び接続のうちの少なくとも１つを制御するための設定可能メモリと、
前記プログラム可能論理デバイスにより保持され、ユーザ及び前記設定可能メモリのうちの少なくとも１つと通信し、前記設定可能メモリ内の破損データをユーザ要求の変化に基づいて識別するユーザ論理と、
１つ又は複数のラッチ・レジスタのサブチェーンからなり、各サブチェーンに対して行データバスを介して前記設定可能メモリの列セルを読み出し及び書き込みをさせるシフトレジスタとして配置された関連データ・アクセス・レジスタであって、前記ユーザ論理のアクセスのための接続を有する前記行データバスは、マルチプレクサの第１の入力に結合された関連する前記サブチェーンを有するように配置され、前記マルチプレクサの出力は次の前記サブチェーンのレジスタ入力に結合される、前記関連データ・アクセス・レジスタと
を含むシステム。
【請求項２】
前記ユーザ論理は、設定可能メモリビット及び設定可能メモリ・チェッカビットのうちの少なくとも１つへのアクセスを与えて、前記設定可能メモリに対するエラー検出及びエラー修正のうちの少なくとも１つを与える、請求項１に記載のシステム。
【請求項３】
前記プログラム可能デバイスの第２の部分は、前記ユーザ論理を介して、及び前記ユーザの破損データ識別スキームの選択に基づいてチェッカとして選択される、請求項１又は請求項２に記載のシステム。
【請求項４】
前記１つ又は複数のラッチ・レジスタのサブチェーン１及び前記ユーザ論理は協働して、前記設定可能メモリ内の任意の破損データの位置を明確に特定する、前記請求項のいずれかに記載のシステム。
【請求項５】
前記ユーザ論理は、破損データの深刻度、破損データの重要度、及び破損データの粒度のうちの少なくとも１つを決定する、請求項４に記載のシステム。
【請求項６】
前記マルチプレクサは、前記ユーザ論理と通信し、前記設定可能メモリ内で識別された任意の破損データの代わりに修正データを与える、請求項４に記載のシステム。
【請求項７】
前記プログラム可能論理デバイスは、複合プログラム可能論理デバイス及びフィールド・プログラム可能ゲート・アレイのうちの少なくとも１つを含み、前記設定可能メモリは揮発性メモリ及び非揮発性メモリのうちの少なくとも１つを含む、前記請求項のいずれかに記載のシステム。
【請求項８】
集積回路内の故障耐性を定める方法であって、
１つ又は複数のラッチ・レジスタのサブチェーンからなり、各サブチェーンに対して行データバスを介して前記設定可能メモリの列セルを読み出し及び書き込みをさせるシフトレジスタとして関連データ・アクセス・レジスタを配置するステップであって、前記ユーザ論理のアクセスのための接続を有する前記行データバスは、マルチプレクサの第１の入力に結合された関連する前記サブチェーンを有するように配置され、前記マルチプレクサの出力は次の前記サブチェーンのレジスタ入力に結合される、前記配置するステップと、
プログラム可能論理デバイスの少なくとも一部分を、設定可能メモリを介して制御するステップと、
前記設定可能メモリ内の破損データを、選択されたユーザ要求に基づいて、ユーザ及び前記プログラム可能論理デバイスのうちの少なくとも１つと通信するユーザ論理を介して識別するステップと、
を含む方法。
【請求項９】
設定可能メモリビット及び設定可能メモリ・チェッカビットのうちの少なくとも１つにアクセスして前記設定可能メモリに対するエラー検出及びエラー修正のうちの少なくとも１つを与えるステップをさらに含む、請求項８に記載の方法。
【請求項１０】
前記プログラム可能論理デバイスの第２の部分をチェッカとして選択するステップ、及び破損データ識別スキームを選択するステップをさらに含む、請求項８又は請求項９に記載の方法。
【請求項１１】
前記設定可能メモリ内の任意の破損データの位置を、前記１つ又は複数のラッチ・レジスタのサブチェーンにより特定するステップをさらに含む、請求項８から請求項１０までのいずれかに記載の方法。
【請求項１２】
破損データの深刻度、破損データの重要度、及び破損データの粒度のうちの少なくとも１つを決定するステップをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記マルチプレクサを介して前記設定可能メモリ内の破損データを正しいデータで置き換えるステップをさらに含む、請求項１１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は集積回路の分野に関し、より具体的には、集積回路における故障耐性（faulttolerance）に関する。
【背景技術】
【０００２】
フィールド・プログラム可能ゲート・アレイ（“ＦＰＧＡ”）装置は、互いに対して及び論理ブロックに対して設定可能な接続を有する相互接続導電体のマトリクスに埋め込まれた設定可能な論理ブロックのアレイを有する集積回路チップである。単一のＦＰＧＡチップ内に多数存在することがあるプログラム可能素子の単一のグループを図１に示す。グループの規模は、ＦＰＧＡのアーキテクチャの物理的特性によって決定される。
【０００３】
中心的構造体は、データ・アクセス・レジスタ配列１００、及びプログラム可能素子１４０−１５７のどれを動作させるかを決定するアドレス指定機能部１２０である。図１のこれらの構造体の各々は、１つ又は複数のかかる構造体をロードするように設計されている中央ロード機構１０３により入力され、これらの構造体の多くをチェックすることができる中央の周期的冗長検査（“ＣＲＣ”）チェック構造体１０４に出力する。データ・アクセス・レジスタ配列１００は、スキャン接続１０１によって中央ロード機構から入力され、スキャン接続１０２によって中央ＣＲＣチェック構造体１０４に出力する。
【０００４】
各プログラム可能素子１４０−１５７は２つの部分、すなわち、スタティック・ランダム・アクセス・メモリ（“ＳＲＡＭ”）１６０及びプログラム可能論理１６１からなる。各セル内のＳＲＡＭ１６０のサイズは、プログラム可能論理１６１のプログラム可能性の範囲によって決定される。ＳＲＡＭ１６０のサイズ、及びチェックを行う望ましい速度が実施されるチェックの範囲を決定する。
【０００５】
アドレス指定機能部１２０は、任意の所与のサイクルにおいて、プログラム可能素子１４０−１５７のどれが、データ・アクセス・レジスタ配列１００にロードされる、すなわち読み込まれるかを決定する。
【０００６】
データ・アクセス・レジスタ配列１００は、単一のプログラム可能素子１４０−１５７内のＳＲＡＭとそれぞれ同じ幅のデータバス１１０−１１５により、プログラム可能素子１４０−１５７に接続される。
【０００７】
アドレス指定機能部１２０からの各プログラム可能素子への制御は、アドレス選択信号１３０−１３５により接続される。この例では、例えば１４０，１４６及び１５２のような単一の列内の複数のプログラム可能素子をロードすることができる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
集積回路内の故障耐性を定めるためのシステム及び方法を提供する。
【課題を解決するための手段】
【０００９】
本発明の１つの態様は、集積回路内の故障耐性を定めるための、集積回路により保持されるプログラム可能論理デバイスを含むことができるシステムである。このシステムはまた、プログラム可能論理デバイスにより保持される設定可能メモリを含み、プログラム可能論理デバイスの一部分の機能及び／又は接続を制御することができる。本システムは、プログラム可能論理デバイスにより保持され、ユーザ及び／又は設定可能メモリと通信するユーザ論理をさらに含むことができる。ユーザ論理は、設定可能メモリ内の破損データをユーザ要求の変化に基づいて識別することができる。
【００１０】
ユーザ論理は、設定可能メモリビット及び／又は設定可能メモリ・チェッカビットへのアクセスを与えて、設定可能メモリに対するエラー検出及び／又はエラー修正を与えることができる。プログラム可能論理デバイスの一部分は、ユーザ論理を介して、及び／又はユーザによる破損データ識別スキームの選択に基づいて、チェッカとして選択することができる。
【００１１】
本システムはまた、プログラム可能論理デバイスの一部分の行及び／又は列のキャプチャ・ラッチを含むこともできる。キャプチャ・ラッチとユーザ論理は協働して設定可能メモリ内の任意の破損データの位置を明確に特定することができる。
【００１２】
ユーザ論理は、破損データの深刻度、破損データの重要度、及び／又は破損データの粒度を決定することができる。本システムは、ユーザ論理と通信するマルチプレクサをさらに含んで設定可能メモリ内の識別された任意の破損データの代わりに正しいデータを供給することができる。
【００１３】
プログラム可能論理デバイスは、複合プログラム可能論理デバイス及び／又はフィールド・プログラム可能・ゲート・アレイを含むことができる。設定可能メモリは、例えばスタティック・ランダム・アクセス・メモリ及び／又はダイナミック・ランダム・アクセス・メモリなどの揮発性メモリ、及び／又は、例えばＦＬＡＳＨメモリ及び磁気ランダム・アクセス・メモリなどの不揮発性メモリを含むことができる。
【００１４】
本発明の別の態様は、集積回路内の故障耐性を定める方法である。本方法は、プログラム可能論理デバイスの一部分の機能及び接続のうちの少なくとも１つを、設定可能メモリを介して制御することを含むことができる。本方法は、設定可能メモリ内の破損データを、選択されたユーザ要求に基づいて、ユーザ及び／又はプログラム可能論理デバイスと通信するユーザ論理を介して識別することをさらに含むことができる。
【００１５】
本方法はさらに、設定可能メモリビット及び／又は設定可能メモリ・チェッカビットにアクセスして、設定可能メモリに対するエラー検出及び／又はエラー修正を供給することを含むことができる。本方法はまた、プログラム可能論理デバイスの一部分をチェッカとして選択すること、及び／又は破損データ識別スキームを選択することを含むことができる。
【００１６】
本方法は、設定可能メモリ内の破損データの位置を、プログラム可能論理デバイスの一部分の行及び列のうちの少なくとも１つのキャプチャ・ラッチを介して、特定することをさらに含むことができる。本方法はさらに、破損データの深刻度、破損データの重要度、及び／又は破損データの粒度のうちの少なくとも１つを決定することを含むことができる。本方法はまた、設定可能メモリ内の破損データを正しいデータで置き換えることを含むことができる。
これより、本発明の実施形態を、添付の図面を参照しながら、例証としてのみ説明する。
【図面の簡単な説明】
【００１７】
【図１】従来技術のＦＰＧＡの概略ブロック図である。
【図２】本発明の実施形態による、故障耐性を定めるシステムの概略ブロック図である。
【図３】本発明の実施形態による、方法の態様を示すフローチャートである。
【図４】図３の方法による、方法の態様を示すフローチャートである。
【図５】図３の方法による、方法の態様を示すフローチャートである。
【図６】図３の方法による、方法の態様を示すフローチャートである。
【図７】図６の方法による、方法の態様を示すフローチャートである。
【図８】図６の方法による、方法の態様を示すフローチャートである。
【図９】本発明の実施形態による、設定可能メモリ、及びユーザ論理に対する新しい要素を有する関連データ・アクセス・レジスタの概略ブロック図である。
【図１０】本発明の実施形態による、ＦＰＧＡのプログラム可能素子を制御するＳＲＡＭの局所パターン修正に関する局所チェックを行う新しいタップと多重化挿入点を示す概略ブロック図である。
【図１１】本発明の実施形態による、ＣＲＣに基づくチェックを行うように加えられた局所チェック、及び、格納圧縮パターンに基づいて置き換えをもたらす局所修正を示す概略ブロック図である。
【図１２】本発明の実施形態による、格納ＥＣＣパターンに基づいてチェックを行うように加えられた局所チェック、及び、それらの同じ格納ＥＣＣパターンに基づいて置き換えをもたらす局所修正を示す概略ブロック図である。
【図１３】本発明の実施形態による、局所マルチプレクサ制御ラインの動作に関するフローチャートである。
【発明を実施するための形態】
【００１８】
図２を参照しながら、初めに集積回路１２内の故障耐性を定めるシステム１０を説明する。システム１０は、例えば、集積回路１２によって保持されるプログラム可能論理デバイス１４を含む。一実施形態において、プログラム可能論理デバイス１４は複合プログラム可能論理デバイス、フィールド・プログラム可能・ゲート・アレイ、又は当業者により認識されることになる類似物を含む。
【００１９】
別の実施形態において、システム１０はまた、例えばプログラム可能論理デバイス１４により保持される設定可能論理ブロック・アレイを含む。一実施形態において設定可能論理ブロック・アレイは、互いに対して及び論理ブロックに対して設定可能な接続を有する相互接続導電体のマトリクスを含む。
【００２０】
システム１０はまた、プログラム可能論理デバイスによって保持される設定可能メモリ１８ａ−１８ｎを含んで、例えばプログラム可能論理デバイスの機能及び／又は接続を制御する。一実施形態においてプログラム可能論理デバイス１４の一部分は、部分的に設定可能メモリ１８ａ−１８ｎを含む１つ又は複数のプログラム可能ルックアップ・テーブル（“ＬＵＴ”）を含む。別の実施形態において設定可能メモリ１８ａ−１８ｎは、ＳＲＡＭ、ダイナミック・ランダム・アクセス・メモリなどを含む。
【００２１】
システム１０は、プログラム可能論理デバイス１４により保持され、例えば、ユーザ２２及び／又は設定可能メモリ１８ａ−１８ｎと通信する、ユーザ論理２０ａ−２０ｎをさらに含む。一実施形態においてユーザ論理２０ａ−２０ｎは、設定可能メモリ１８ａ−１８ｎ内の破損データを、ユーザ要求の変化に基づいて識別する。別の実施形態においては、設定可能メモリ１８ａ−１８ｎを用いて、ユーザ論理２０ａ−２０ｎの一部分に対するブール論理制御状態すなわち“真理値表”が定められる。
【００２２】
ユーザ論理２０ａ−２０ｎは、設定可能メモリビット及び／又は設定可能メモリ・チェッカビットへのアクセスを与え、例えば、設定可能メモリ１８ａ−１８ｎに対するエラー検出及び／又はエラー修正を供給する。一実施形態においてプログラム可能論理デバイス１４の一部分は、ユーザ論理２０ａ−２０ｎを介して、及び／又はユーザによる破損データ識別スキームの選択に基づいて、チェッカ２４として選択される。別の実施形態においてユーザ論理２０ａ−２０ｎは、破損データの深刻度、破損データの重要度、及び／又は破損データの粒度を決定する。
【００２３】
システム１０はまた、例えば、プログラム可能論理デバイス１４の一部分の行及び／又は列のキャプチャ・ラッチ２６を含む。一実施形態において、キャプチャ・ラッチ２６及びユーザ論理２０ａ−２０ｎは協働して、設定可能メモリ１８ａ−１８ｎ内の任意の破損データの位置を明確に特定する。
【００２４】
システム１０は、ユーザ論理２０ａ−２０ｎと通信するマルチプレクサ２８をさらに含んで、例えば、設定可能メモリ１８ａ−１８ｎ内の識別された任意の破損データの代わりに、正しいデータ２９を与える。
【００２５】
本発明の別の態様は、集積回路内の故障耐性を定める方法であり、これから図３のフローチャート３０を参照して説明する。この方法はブロック３２で始まり、ブロック３４においてプログラム可能論理デバイスによって保持される設定可能メモリを介して、プログラム可能論理デバイスの一部分の機能及び接続のうちの少なくとも１つを制御することを含む。本方法はまた、ブロック３６において、設定可能メモリ内の破損データを、選択されたユーザ要求に基づいて、ユーザ及びプログラム可能論理デバイスのうちの少なくとも１つと通信するユーザ論理を介して識別することを含むことができる。本方法はブロック３８で終了する。
【００２６】
別の方法の実施形態を図４のフローチャート４０を参照してこれから説明するが、この方法はブロック４２で始まる。本方法は、ブロック３４及び３６において、図３のステップを含むことができる。本方法はまた、ブロック４４において、設定可能メモリビット及び設定可能メモリ・チェッカビットのうちの少なくとも１つにアクセスして設定可能メモリに対するエラー検出及びエラー修正のうちの少なくとも１つを供給することを含むことができる。本方法はブロック４６で終了する。
【００２７】
別の方法の実施形態を図５のフローチャート５０を参照してこれから説明するが、この方法ブロック５２で始まる。本方法は、ブロック３４及び３６において、図３のステップを含むことができる。本方法はまた、ブロック５４において、プログラム可能論理デバイスの一部分を、ユーザ論理を介して、及びユーザの破損データ識別スキームの選択に基づいて、チェッカとして選択することを含むことができる。本方法はブロック５６で終了する。
【００２８】
別の方法の実施形態を図６のフローチャート６０を参照してこれから説明するが、この方法はブロック６２で始まる。本方法は、ブロック３４及び３６において図３のステップを含むことができる。本方法はまた、ブロック６４において、設定可能メモリ内の任意の破損データの位置を、プログラム可能論理デバイスの一部分の行及び列のうちの少なくとも１つのキャプチャ・ラッチを介して特定することを含むことができる。本方法はブロック６６で終了する。
【００２９】
別の方法の実施形態を図７のフローチャート７０を参照してこれから説明するが、この方法はブロック７２で始まる。本方法は、ブロック３４、３６及び６４において図６のステップを含むことができる。本方法はまた、ブロック７４において、破損データの深刻度、破損データの重要度、及び破損データの粒度のうちの少なくとも１つを決定するステップを含むことができる。本方法はブロック７６で終了する。
【００３０】
別の方法の実施形態を図８のフローチャート８０を参照してこれから説明するが、この方法はブロック８２で始まる。本方法は、ブロック３４、３６及び６４において図６のステップを含むことができる。本方法はまた、ブロック８４において、設定可能メモリ内の破損データを正しいデータで置き換えることを含むことができる。本方法はブロック８６で終了する。
【００３１】
上記を考えると、システム１０は集積回路内の故障耐性を定める。さらに、システム１０は、低価格で待ち時間が短い構成メモリ論理故障検出及び修正のための、ユーザ論理２０ａ−２０ｎをＦＰＧＡの構成メモリ状態にアクセスさせる装置及び方法を表す。
【００３２】
ユーザ論理２０ａ−２０ｎは、関連データと、アドレス・アクセス・レジスタ及び相互接続導電体マトリクスとの間の設定可能な接続を介して、設定可能メモリ１８ａ−１８ｎのアレイへの設定可能アクセスが可能である。データ・アクセス・レジスタにおける設定可能マルチプレクサ２８は、設定可能メモリ１８ａ−１８ｎの列データへの最小粒度アクセスを定める手段を与える。
【００３３】
ソフトウエアをコンパイルするユーザ属性は、特定エラー検出及び修正アルゴリズム（パリティ、エラー修正コード、巡回冗長コード（ＣＲＣ）、チェックサムなど）、並びに設定可能メモリ１８ａ−１８ｎの検査を目的とするユーザ機能を定義し、その結果、それらの機能が効率的にマップされ、未使用の構成状態に関連する下層の設定可能メモリ１８ａ−１８ｎのアドレスレンジ、チェックビット及びマスクビットが、ユーザ・アプリケーション・テスト機能に埋め込まれて、望ましいチェックと修正が採用される。ユーザ・テスト機能は、周期的に動作して目標の列部分に対する任意の故障をテストし修正する。
【００３４】
上述のように、ＦＰＧＡデバイスは、互いに対して及び論理ブロックに対して設定可能な接続を有する相互接続導電体のマトリックスに埋め込まれた設定可能論理ブロックのアレイを有する集積回路チップである。このことを考慮して、特別の入力／出力及び位相ロックループ・クロック・ブロックが、設定可能な機能及び接続を有するアレイの周り及び内部に組み込まれる。
【００３５】
設定可能論理ブロックのアレイは、各々１つ又は複数のプログラム可能ルックアップ・テーブル（ＬＵＴ）構成メモリをさらに含む。これらのメモリを用いて、ユーザ・アプリケーション論理機能の一部分に対するブール論理制御状態すなわち“真理値表”が定められる。
【００３６】
一般に、メモリは高密度のＳＲＡＭで実装され、チップの外部に格納された状態から初期化される必要があり、その場合データは、特定のプロトコルに従って特別のピン上のチップ・レジスタ内にクロックされる。十分な構成データが集積された後、登録データが構成メモリの列にロードされる。
【００３７】
構成メモリは、環境放射線による論理混乱を受け易く、かかるイベントが生じると、徴候なしにユーザ・アプリケーション論理の挙動を変化させる場合がある。さらに、故障の挙動により、ユーザ論理機能が間違いであるが許容可能な挙動を模倣し、故障が気づかれないままシステム全体に進行し、サイレント・データ破損（ＳＤＣ）として知られる結果をもたらす可能性がある。
【００３８】
ＦＰＧＡデバイスは、チップ上に、自己チェック機構を組み込み、大きなセグメント又はアレイ全体にわたって構成メモリの状態を周期的にサンプリングし、予想されるＣＲＣに対する計算を行う。誤りが検出された場合には、エラー表示信号がユーザ・アプリケーション論理に供給される。このプロセスはシーケンシャルであり、ＦＰＧＡアレイは大きいため、エラー表示の待ち時間は数ミリ秒になる可能性があり、１つ又は複数のＳＤＣイベントがシステム内で発生するほど長くなり得る。この自己チェック・スキームの変形は、構成メモリに関連するマスク・レジスタを有し、検出されたエラーを修正するための構成メモリの特定部分の書き込みを促進する。
【００３９】
リアルタイムでＳＤＣ問題を処理する慣例は、下層の構成メモリ状態の支援又は認識なしに、もっぱらユーザ・アプリケーションによって担われるものである。例えば、構成メモリの存在下でＳＤＣを助長するユーザ・アプリケーション機能の複製（二重又は三重）及び比較は、誤りを犯す。例えば、暗号化／復号化、圧縮、演算、メモリ管理、及び故障検出ユニットは、全てこの特徴を有する。
【００４０】
これらのスキームのコストは、ＦＰＧＡデバイスの利用、電力消費、及び利用に起因する全体のタイミングの劣化の点で非常に高価になりうる。さらに、これらの検出結果は、数ミリ秒を要するプロセスであるチップの初期化なしには修正することができず、一般に、システム全体を大きく混乱させる。
【００４１】
他の従来技術は、チップ上に論理ブロックと共に実装される特別なエラー検出及び修正回路を説明する。これらの普及している信頼性スキームは、ユーザ・アプリケーション機能に対して、不必要又は不使用の場合（一般に、ＦＰＧＡ内の構成メモリの３０％−５０％が使用されない）でも、大きな面積及び電力コストを必要とする。
【００４２】
ＦＰＧＡデバイスの規模が、ますます高密度の技術（４０ｎｍ以上）を使用することによって大きくなるにつれて、構成メモリも規模が大きくなり、規模の増大と共に、チェック及び初期化の待ち時間が長くなり、また論理混乱率も増加する。さらに、現在、高密度デバイスは、構成メモリの故障特性に対して耐性が低いシステム・アプリケーションに対して、より広範囲のアプリケーションをイネーブルにする。
【００４３】
システム１０は、ユーザ論理２０ａ−２０ｎに、下層の設定可能メモリ１８ａ−１８ｎに対するアクセスを与えて、ユーザが、ユーザ・アプリケーション機能の一部分として望ましい、最短待ち時間並びに最低コストの面積及び電力での構成メモリのエラー検出及び修正機能を実装し管理するのを容易にする。
【００４４】
システム１０の様々な実施形態は、ＬＵＴなどの個々のプログラム可能ブロックを構成するＳＲＡＭの粒度の細かい局所チェック及び修正を行う手段を与える。目的のＳＲＡＭのチェックを完了するための所望の時間によって、チェック機能を実装するのに必要な最終的構造体及び付加的構造体のコストが決まる。
【００４５】
最も安価な実施形態において付加されるのは、かかる単一のプログラム可能エンティティの自然の境界のみで構成を行うＳＲＡＭを搭載する既存の構造に対して、一連のタップ点及び多重挿入点のみである。より積極的な実施形態においては、いくつかのタップ点及び多重挿入点が、かかる単一のプログラム可能エンティティに対して必要となる場合がある。
【００４６】
複数の並列エンティティをチェックしようとする場合には、さらに付加的なレジスタ・スキャン・チェーンを挿入する必要があり得る。プログラム可能エンティティを構成するＳＲＡＭのチェック及び修正のプロセスは、複数の実施形態を有することができる。強調される二つの主要な実施形態は、破損したパターンの置き換えのための格納圧縮パターンを用いて有効性をチェックする周期的冗長検査すなわちＣＲＣ、及び、破損したパターンの置き換えのためのＥＣＣ修正を用いて有効性をチェックするエラー修正コードすなわちＥＣＣである。
【００４７】
上記は、幾つかの好ましい実施形態を説明するが、特許請求される本発明は、それら好ましい実施形態に限定されない。下層のＦＰＧＡ構造体のアーキテクチャ、各プログラム可能エンティティ内の構成ＳＲＡＭのサイズ、ＳＲＡＭの有効性のチェックを完了するのに望ましい時間によって、各アプリケーションに対して望ましい特定の実施形態が定められる。これら実施形態を如何にして実現するかをより良く理解するためには、図面の簡単な説明及び本発明の詳細な説明を参照されたい。
【００４８】
例えば、システム１０は、ＦＰＧＡ内の個々のプログラム可能素子の各々のプログラミングを制御するＳＲＡＭの局所的検出及び修正に関する。このことは、最終的な実装において、チェック及び置き換えの任意の１つの特定の方法によってカバーされる特定数のブロックが存在することを意味しない。本説明においては、多くの具体的詳細を提示して、本発明の幾つかの要素、構造体、方法及び性能についてのより詳細な理解を与える。しかしながら、当業者であれば、本出願において提示されたのと同じ効果を達成する他の手段及び方法を理解できるであろう。
【００４９】
次に、さらに図９を参照して、予言的な例示的システム１０を説明する。図９は、行データバス２０４を介して設定可能メモリ２０２の列セル２０３を読み出し及び書き込むための、同じ機能部（feature）へのユーザ論理アクセスのための新しい要素３０１、３１０及び３００を含んだＦＰＧＡ“フレーム”のデータ・アクセス・レジスタ配列１００を示す。
【００５０】
データ・アクセス・レジスタ配列１００は、ユーザ相互接続マトリクス及びユーザ論理アプリケーションへのユーザ設定可能アクセスを有する１つ又は複数のラッチ・レジスタのサブチェーン２００に分割することができる。ユーザ論理は、構成メモリの１つ又は複数の列をデータ・アクセス・レジスタに読み出し、次にサブチェーン・シリアルデータを接続３００及びユーザ論理への相互接続リソースを通してクロックしてエラー検出コードを計算し、該コードが、ＦＰＧＡユーザ・コードのコンパイル時間中に同じデータに対して事前計算されたコードと一致することを検証する。
【００５１】
ユーザ・コードは、構成データ内の検出された故障を修正し、修正されたデータを、相互接続リソース接続３０１及びマルチプレクサ３１０を通してデータ・アクセス・レジスタに戻すことができる。次いで、修正されたデータは、データバス２０４を介して選択された列２０３に書き込むことができる。
【００５２】
図１０は、局所チェックのためのリングをタップする手段３００及び新しい修正されたストリーム３０１をマルチプレクサ挿入点３１０に挿入する手段を与える、本発明の新しい要素を有するデータ・アクセス・レジスタ配列１００内の単一のサブチェーン２０１を示す。マルチプレクサ挿入点３１０は、局所マルチプレクサ制御ライン３２０により制御される。局所チェック機能の間は、タップ機能３００だけを用いて、データの局所チェックを行うことができる。エラーの検出が発生した後、マルチプレクサ挿入点３１０を用いて、修正されたデータ３０１が選択されたプログラム可能素子１４０−１５７に与えられる。
【００５３】
図１１は、チェックのためのＣＲＣ機能及びＳＲＡＭビット１６０の置き換えのための格納値を用いた、特定のプログラム可能ブロック１４０−１５７の構成ＳＲＡＭ１６０の局所チェック及び修正を示す。サブチェーン・データ・タップ３００は、局所論理にサブチェーン２０１又はサブチェーン２００−２０２からのビットを与え、これらはＣＲＣ生成論理４００に供給される。
【００５４】
サブチェーン又は複数のサブチェーンの最終結果は、ＣＲＣ比較論理４０２において、既知の良好なＣＲＣの格納値４０１と比較される。ＣＲＣ比較論理からの結果は、局所破損イベント検出レジスタ４０３内に記憶され、後に、破損した局所ＳＲＡＭ１６０の再ロードを実行するときに、局所マルチプレクサ制御ライン３２０の値を変更するのに使用される。
【００５５】
図１２は、特定のプログラム可能ブロック１４０−１５７の構成ＳＲＡＭ１６０についての、ＳＲＡＭビット１６０の置き換えに関するチェック及び修正のためのＥＣＣ関数を用いた局所チェック及び修正を示す。サブチェーン・タップ３００は、局所チェック論理にサブチェーン２０１又はサブチェーン２００−２０２からのビットを与え、これらはＥＣＣチェック関数５００に供給される。
【００５６】
正しいＥＣＣチェック・パターンが、ＥＣＣパターン・ストレージ５０１から供給される。ＥＣＣ検出の結果は、局所破損イベント検出レジスタ５０２に記憶され、後に、破損局所ＳＲＡＭ１６０の再ロードを実行するときに、局所マルチプレクサ制御ライン３２０の値を変更するのに使用される。ＥＣＣ修正論理５０３は、供給されたＥＣＣ修正パターン５０１と共に、タップ３００を介してサブチェーン２０１からデータを取り込んで、マルチプレクサ挿入位置３１０に供給される修正ビットデータ３０１を作成する。
【００５７】
図１３は、マルチプレクサ挿入位置３１０における局所マルチプレクサ制御ライン３２０の制御を、ＦＰＧＡのグローバル制御と局所結果に基づいて決定する論理フローチャートを示す。第一の判断ブロック６００において、ＦＰＧＡがロードされていることを示すグローバル制御信号がアクティブであれば、局所マルチプレクサ挿入位置３１０の制御ライン３２０は、結果ブロック６０１において、ゼロ値、すなわちデフォルトのデータ・スキャン・チェーン・パスとなる。
【００５８】
判断ブロック６００において該信号がアクティブでない場合には、判断ブロック６０２に進む。判断ブロック６０２において、このプログラム可能ブロック１４０−１５７が局所修正可能かどうかを検査する。可能でない場合には、結果ブロック６０１に進み、デフォルトのマルチプレクサ制御ラインがゼロ値に設定される。
【００５９】
プログラム可能ブロック１４０−１５７が局所修正可能な場合には、判断ブロック６０３に進む。局所破損イベント４０３又は５０２が検出されていない場合には、結果ブロック６０４に進み、次に再び判断ブロック６０３に戻る。局所破損イベント４０３又は５０２が検出されている場合には、行動ブロック６０５へ進む。
【００６０】
行動ブロック６０５で、プログラム可能論理ブロック１４０−１５７内の通常の機能を停止する。ひとたび停止したら、判断ブロック６０６に進む。判断ブロック６０６において、該プログラム可能論理ブロック１４０−１５７内のＳＲＡＭ値を回復及び修正する準備ができているかどうかを判断する。
【００６１】
準備ができていない場合には、行動ブロック６０７に進み、そこでゼロ値すなわちデフォルトのデータ・スキャン・チェーンが残る。回復機能を実行する準備ができるまで判断ブロック６０６においてループし、そして行動ブロック６０８に進む。行動ブロック６０８において、上述の２つの手段のいずれかによって、局所プログラム可能ブロック１４０−１５７にロードされる正しいＳＲＡＭ値の生成を始める。
【００６２】
ひとたびプロセスが開始したら、行動ブロック６０９に進み、そこで正確な量の遅延が導入され、その後でマルチプレクサ制御ライン３２０上の修正データ・チェーンの値に１の値が設定され、そして正しいデータライン３０２上に正しいＳＲＡＭビットストリームが設定される。次に、正しいＳＲＡＭビットストリームがサブチェーン２０１内にスキャンされた行動ブロック６１０へ進み、その後、マルチプレクサ制御ライン３２０上にゼロ値すなわちデフォルトのデータ・スキャン・チェーンを設定し、このデータを目的のプログラム可能ブロック１４０−１５７のＳＲＡＭ１６０にロードする。
【００６３】
行動ブロック６１１に進み、そこでプログラム可能論理ブロック１４０−１５７に対する通常の動作が再開され、局所破損イベント４０３又は５０２がリセットされる。次に、判断ブロック６０３に戻り、局所ＳＲＡＭ１６０にさらに破損がないかチェックする。
【００６４】
一実施形態において、プログラム可能論理デバイスは、構成メモリと、各ステージに対して関連アレイの行データバスを介して複数の構成メモリアレイの列セルを読み出し及び書き込みをさせるシフトレジスタとして配置された関連データ・アクセス・レジスタとを含む。プログラム可能論理デバイスはまた、設定可能相互接続リソースに対する少なくとも１つの行データバスのユーザ設定可能結合を含む。プログラム可能論理デバイスは、行データバスの結合を制御するユーザ設定可能状態ビットをさらに含む。
【００６５】
別の実施形態において、プログラム可能論理デバイスはさらにユーザ設定可能結合を有する行データバスを含み、この行データバスは、マルチプレクサの第１の入力に結合された関連フレームのデータ・シフト・レジスタのステージを有するようにさらに配置され、マルチプレクサの出力は次のステージのレジスタ入力に結合される。マルチプレクサの第２の入力は、設定可能相互接続リソースに対するユーザ設定可能結合、及び行データバスの結合を制御するためのユーザ設定可能状態ビットに結合される。ユーザ設定可能状態ビットの状態は、構成メモリセルの出力状態が実際的でないときにはプログラム可能レジスタから得られる。
【００６６】
別の実施形態においてプログラム可能論理デバイスは、ユーザ論理アプリケーション論理に、構成メモリ状態の冗長コピーを格納する目的で使用されていない構成メモリ及び関連データ・アクセス・レジスタにアクセスさせる手段をさらに含む。一実施形態において構成メモリ状態の冗長コピーは、可逆符号化（loss-less coding）アルゴリズムを用いて論理的に圧縮された状態を有する。
【００６７】
別の実施形態においてプログラム可能論理デバイスは、非ユーザ機能とユーザ論理アプリケーションの間の、構成メモリ及び関連データ・アクセス・レジスタへのアクセスを共有するための設定可能信号をさらに含む。プログラム可能論理デバイスはまた、構成メモリ及び関連データ・アクセス・レジスタへの非ユーザ機能のアクセスを共有するための手段を含むことができ、非ユーザ機能はビジー信号をアサートして、ユーザがアクセス可能なときを示す。非ユーザ機能は、ユーザ論理アプリケーションと非ユーザ機能の間で、構成メモリ及び関連データ・アクセス・レジスタの故障検出を相互に排他的に与える手段を含むことができる。
【００６８】
別の実施形態は、構成メモリ故障耐性のためのユーザ論理アプリケーションのコンパイル方法であり、ここで、ユーザ論理は、どの特定の論理を保護するべきか、そして指定されたエラー検出アルゴリズム、未使用の構成ビットに対する所定の変数、及びエラー符号化チェックビットを有するどの特定の構成メモリ故障管理論理と関連付けられるべきかを言明する属性と、同じ構成メモリ内でいつ論理を制御できるか否かを定めるマッピング選好（preference）とを有する。
【００６９】
本方法は、以下のステップ、すなわち、特定の保護されたユーザ論理を総合しマッピングして、構成メモリ及び関連データ・アクセス・レジスタへのアクセス・パターンを最小化すること、指定のマッピング選好に従って特定の故障管理論理を総合してマッピングすること、未使用の構成メモリビットを識別し、符号化すること、及び、エラー符号化チェックビットを識別することを含む。
【００７０】
別の実施形態において、ユーザ・アプリケーション論理による構成メモリ故障耐性のための方法が、以下のステップによって説明される。非ユーザ構成メモリでビジーである非ユーザ機能を含む構成メモリの列を読み出し、そうでない場合は待機する。構成メモリ・アドレス・レジスタ及びデータ多重化制御状態を書き込む。構成メモリ読み出し信号をアサートする。読み出しデータを、構成メモリ読み出しレジスタから、相互接続マトリクスを通して、ユーザ・アプリケーション故障管理論理にシフトする。読み出しデータの検証は、読み出しデータに関するエラー検出コード（ＥＤＣ）を計算することを含む。計算したＥＤＣを、コンパイル時に算出されたハードコード化された予想ＥＤＣと比較する。故障が検出されないか又は検出されるが未使用の構成メモリビット内の場合は、次のアドレスに進み、そうでない場合は、ステップ１に進む。検出された故障がＥＤＣによって修正不可能である場合は、ユーザ・アプリケーションに修正不可能エラーの信号を送り、次に修正不可能故障状態に進み、そうでない場合は、修正可能エラー検出の信号を送る。故障の修正は、相互接続マトリクスを介して、修正されたデータを構成メモリ読み出しレジスタにシフトすることを含む。構成メモリ書き込み信号をアサートし、次いでステップ１に進む。修正不可能故障状態は、データロギングに対するユーザ論理アプリケーション、及び冗長コピーからの構成メモリの再初期化を停止することを含む。
【００７１】
当業者であれば理解するように、本発明は、方法、システム、又はコンピュータ・プログラムとして具体化することができる。さらに、本発明は、媒体内に具体化されたコンピュータ使用可能プログラムコードを有するコンピュータ使用可能記憶媒体上のコンピュータ・プログラムの形態を取るものとすることができる。
【００７２】
任意の好適なコンピュータ使用可能又はコンピュータ可読媒体を使用することができる。コンピュータ使用可能又はコンピュータ可読媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線、又は半導体システム、装置、デバイス、或いは伝搬媒体とすることができる。コンピュータ可読媒体のより具体的な例（非網羅的なリスト）としては、以下のもの、すなわち、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュメモリ）、光ファイバ、ポータブル・コンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、又は磁気記憶装置が挙げられる。
【００７３】
本発明の操作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋などのオブジェクト指向プログラミング言語で書くことができる。しかしながら、本発明の操作を実行するためのコンピュータ・プログラム・コードはまた、Ｃプログラミング言語又は類似のプログラミング言語などの従来の手続き型プログラミング言語で書くこともできる。
【００７４】
プログラムコードは、完全にユーザのコンピュータ上で、部分的にユーザのコンピュータ上で、スタンドアローンのソフトウエアパッケージとして実行することができ、部分的にユーザのコンピュータ上で且つ部分的にリモート・コンピュータ上で、又は完全にリモート・コンピュータ又はサーバ上で実行することができる。後者のシナリオでは、リモート・コンピュータは、ユーザのコンピュータに、ローカルエリア・ネットワーク（ＬＡＮ）又は広域ネットワーク（ＷＡＮ）を介して接続することができ、又は、外部のコンピュータに接続する（例えば、インターネット・サービスプロバイダを用いてインターネットを介して）こともできる。
【００７５】
本発明は、本発明の実施形態による方法、装置（システム）及びコンピュータ・プログラムのフローチャート説明図及び／又はブロック図を参照して説明される。フローチャート説明図及び／又はブロック図の各ブロック、並びに、フローチャート説明図及び／又はブロック図中のブロックの組み合わせは、コンピュータ・プログラム命令によって実施できることが理解されるであろう。これらのコンピュータ・プログラム命令は、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに供給してマシンを生成し、その結果、コンピュータ及び他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図のブロックにおいて指定される機能／動作を実行するための手段を生成するようにすることができる。
【００７６】
これらのコンピュータ・プログラム命令はまた、コンピュータ又は他のプログラム可能データ処理装置に特定の様式で機能するように指示することができるコンピュータ可読メモリに格納することができ、その結果、コンピュータ可読メモリに格納された命令が、フローチャート及び／又はブロック図のブロックにおいて指定された機能／動作を実行する命令手段を含む製品を生成する。
【００７７】
コンピュータ・プログラム命令はまた、コンピュータ又は他のデータ処理装置にロードして、一連の動作ステップをコンピュータ又は他のプログラム可能な装置上で実行させて、コンピュータ実施のプロセスを生成することができ、その結果コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図のブロックにおいて指定された機能／動作を実施するためのステップをもたらす。
【００７８】
システム１０の機能は、ソフトウエア、ファームウエア、ハードウエア又はそれらの幾つかの組み合わせにおいて実施することができる。
【００７９】
本明細書に示されるフローチャートは、単なる例にすぎない。本発明の範囲から逸脱することなく、本明細書に説明されるこれらの図又はステップ（或いは、動作）に対する多くの変形が可能である。例えば、ステップを異なる順序で実行することができ、或いはステップは付加し、削除し、又は変更することができる。これらの変形の全てが、特許請求される本発明の一部と見なされる。さらに、「１つの（ａ、ａｎ）」などの用語の使用は、数量の制限を示すものではなく、言及した項目の少なくとも１つの存在を示すものである。
【００８０】
本発明の好ましい実施形態について説明してきたが、当業者であれば、現在及び将来の両方において、以下の特許請求の範囲内に入る種々の改良及び強化を行うことができることを理解するであろう。これら特許請求の範囲は、最初に説明されたた本発明に対する適切な保護を維持すると解釈されるべきである。
【符号の説明】
【００８１】
１０：システム
１２：集積回路
１４：プログラム可能論理デバイス
１８ａ−１８ｎ：設定可能メモリ
２０ａ−２０ｎ：ユーザ論理
２２：ユーザ
２４：チェッカ
２６：キャプチャ・ラッチ
２８：設定可能マルチプレクサ
２９：正しいデータ
３０、４０、５０、６０、７０、８０：流れ図
３２、３４、３６、３８、４２、４４、４６、５２、５４、５６、６２、６４、６６、７２、７４、７６、８２、８４、８６：ブロック
１００：データ・アクセス・レジスタ配列
１０１、１０２：スキャン接続
１０３：中央ロード機構
１０４：周期的冗長検査（ＣＲＣ）チェック構造体
１１０−１１５：データバス
１２０：アドレス指定機能部
１３０−１３５：アドレス選択信号
１４０−１５７：プログラム可能素子／プログラム可能論理ブロック
１６０：スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）
１６１：プログラム可能論理
２０２：設定可能メモリ
２００−２０２：サブチェーン
２０３：列セル／列
２０４：データバス
３００：接続／タップ／タップする手段
３０１：ストリーム／相互接続リソース接続／修正データ／修正ビットデータ
３０２：正しいＳＲＡＭビットライン／正しいデータライン
３１０：マルチプレクサ／マルチプレクサ挿入点（マルチプレクサ挿入位置）
３２０：局所マルチプレクサ制御ライン
４００：ＣＲＣ生成論理
４０１：ＣＲＣの格納値
４０２：ＣＲＣ比較論理
４０３、５０２：局所破損イベント検出レジスタ／局所破損イベント
５００：ＥＣＣチェック機能
５０１：ＥＣＣパターン・ストレージ／ＥＣＣ修正パターン
５０３：ＥＣＣ修正論理
６００、６０２、６０３、６０６：判断ブロック
６０１：結果ブロック
６０５、６０７、６０８、６０９、６１０、６１１：行動ブロック
【図１】
0005506908.tif 000002
【図２】
0005506908.tif 000003
【図３】
0005506908.tif 000004
【図４】
0005506908.tif 000005
【図５】
0005506908.tif 000006
【図６】
0005506908.tif 000007
【図７】
0005506908.tif 000008
【図８】
0005506908.tif 000009
【図９】
0005506908.tif 000010
【図１０】
0005506908.tif 000011
【図１１】
0005506908.tif 000012
【図１２】
0005506908.tif 000013
【図１３】
0005506908.tif 000014