(57)【要約】【課題】プログラマブルデバイスの構成メモリにおけるエラーを検出する方法を提供すること。【解決手段】プログラマブルデバイスの構成メモリにおけるエラーを検出する方法であって、該構成メモリから構成メモリデータを読み取ることと、該構成メモリデータにおいてエラーが発生したか否かを判断することと、エラーが発生したという判断に応答して、エラーである該構成データに対応する感度データを読み取ることと、該エラーを無視することができるか否かを判断するために該感度データを解析することと、該エラーを無視することができない場合、修復アクティビティを開始することと、該エラーを無視することができる場合、該修復アクティビティを開始しないことによって該エラーを無視することとを包含する、方法。【選択図】図１
2007293856.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルデバイスの構成メモリにおけるエラーを検出する方法であって、
該構成メモリから構成メモリデータを読み取ることと、
該構成メモリデータにおいてエラーが発生したか否かを判断することと、
エラーが発生したという判断に応答して、  
エラーである該構成データに対応する感度データを読み取ることと、
該エラーを無視することができるか否かを判断するために該感度データを解析することと、
該エラーを無視することができない場合、修復アクティビティを開始することと、
該エラーを無視することができる場合、該修復アクティビティを開始しないことによって該エラーを無視することと
を包含する、方法。
【請求項２】
前記修復アクティビティを開始しないことによって前記エラーを無視する行動が、エラーログに該エラーの位置を格納することをさらに含む、請求項１に記載の方法。
【請求項３】
前記エラーが発生したという前記判断に対する前記応答が、
前記感度データを読み取る前に前記位置を前記エラーログと比較することと、
前記エラーの位置が該エラーログに予め格納されていない場合にのみ、該感度データを読み取ることと
をさらに含む、請求項２に記載の方法。
【請求項４】
発生した前記エラーがエラーチェックビットを用いて判断されていようとなかろうと、前記構成メモリが領域に分割され、かつ該エラーチェックビットが各領域に対して個別に判断される、請求項１に記載の方法。
【請求項５】
前記修復アクティビティが前記エラーを補正することを含む、請求項１に記載の方法。
【請求項６】
前記修復アクティビティが前記プログラマブルデバイスを再構成することを含む、請求項１に記載の方法。
【請求項７】
エラーである前記構成データによって構成されている回路が、前記プログラマブルデバイス上にて実行するアプリケーションによって使用されるか否かに基づいて、前記感度データが部分的に生成される、請求項１に記載の方法。
【請求項８】
プログラマブルデバイスにおける構成メモリに格納される構成データにおけるエラーをチェックする方法であって、該構成データが第１のアプリケーションのために該プログラマブルデバイスを構成し、該方法は、
該構成メモリから該構成データの一部を読み取ることと、
該構成データの該一部に対応する複数のエラーチェックビットの一部を読み取ることと、
該構成データの該一部にエラーがあるか否かを判断することと、
該エラーがあった場合、ソフトエラーが該第１のアプリケーションに不利益に影響するか否かを判断することと、
不利益に影響すると判断した場合、該ソフトエラーが生じたという指示を提供することと、
不利益に影響しないと判断した場合、該ソフトエラーが生じたという該指示を提供しないことと
を包含する、方法。
【請求項９】
前記ソフトエラーが前記第１のアプリケーションに不利益に影響するか否かを判断することが、メモリから感度データを読み取ることによって行われる、請求項８に記載の方法。
【請求項１０】
前記構成データの前記一部を読み取る前に、該構成データを構成デバイスから読み取り、かつ該構成データを前記構成メモリに格納することをさらに包含する、請求項８に記載の方法。
【請求項１１】
前記構成メモリから前記構成データを読み取る前に、該構成データを用いて前記複数のエラーチェックビットを判断することをさらに包含する、請求項１０に記載の方法。
【請求項１２】
前記プログラマブルデバイス上に前記複数のエラーチェックビットを格納することをさらに包含する、請求項１１に記載の方法。
【請求項１３】
前記エラーが前記第１のアプリケーションに不利益に影響することが判断された場合、前記ソフトエラーを補正することをさらに包含する、請求項８に記載の方法。
【請求項１４】
前記エラーが前記第１のアプリケーションに不利益に影響することが判断された場合、前記プログラマブルデバイスを再構成することをさらに包含する、請求項８に記載の方法。
【請求項１５】
構成データを格納するための第１の複数のメモリセルと、
エラーチェックビットを格納するための第２の複数のメモリセルと、
感度データを格納するための第３の複数のメモリセルと、
該構成データ、該エラーチェックビットおよび該感度データを含む構成ビットストリームを受信し、該第１の複数のメモリセルに該構成データ、該第２の複数のメモリセルに該エラーチェックビット、および該第３の複数のメモリセルに該感度データを書き込むための構成コントローラと、
該第１の複数のメモリセルから該構成データを、および該第２の複数のメモリセルから該エラーチェックビットを読み取り、かつ該構成データにおいてエラーが発生したか否かを判断するためのエラー検出回路であって、該エラーが発生したと判断された場合、該エラーが発生したところに該第１のメモリセルのうちの最初の１つに対してアドレスの少なくとも一部を提供するためのエラー検出回路と、
該アドレスの少なくとも一部を受信し、該アドレスの該少なくとも一部に対応する該感度データを受信し、かつ集積回路上にて実行するアプリケーションが発生した該エラーに対して影響を受けやすいか否かを判断するための感度プロセッサと
を備える、集積回路。
【請求項１６】
前記エラーが発生し、かつ前記アプリケーションが該エラーに対して影響を受けやすい場合、該エラーが発生したところでデータが前記メモリセルに書き込まれる、請求項１５に記載の集積回路。
【請求項１７】
前記エラー検出回路によって検出される前記エラーを補正するためのエラー補正回路をさらに備える、請求項１６に記載の集積回路。
【請求項１８】
前記アプリケーションが発生した前記エラーに対して影響を受けやすいものであろうとなかろうと、前記エラー補正回路が、前記エラー検出回路によって検出されるエラーを補正する、請求項１７に記載の集積回路。
【請求項１９】
エラーが発生し、かつ前記アプリケーションが該エラーに対して影響を受けやすい場合、前記集積回路が再構成される、請求項１５に記載の集積回路。
【請求項２０】
前記プログラマブルデバイスのどの部分が前記第１のアプリケーションによって使用されるかに基づいて、前記複数の感度ビットが部分的に判断される、請求項１５に記載の集積回路。
【請求項２１】
前記プログラマブルデバイスの対応する部分が前記第１のアプリケーションによって使用されているか否かに基づいて、前記感度ビットの各々が部分的に判断される、請求項１５に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願の引用）
本出願は、参考により援用される、２００６年４月２１日に出願された米国仮特許第６０／７９３，９４６号の利益を主張する。本出願は、参考により援用される、２００６年４月１９日に出願された米国特許出願第１１／４０７，５１９号に関連する。
【０００２】
本発明は、一般に、プログラマブルデバイスに関し、より詳細には、プログラマブルデバイスにおける構成エラーを検出するためのシステムおよび方法に関する。
【背景技術】
【０００３】
プログラマブルデバイスは典型的に、ユーザ定義のロジック機能を実行するように構成され得るロジックゲートまたはルックアップテーブルから成る数千ものプログラマブルロジック要素を含む。プログラマブルデバイスは、しばしば、特定の機能（加算器、乗算および蓄積回路、位相ロックループおよびメモリのような）に適合されている多数の特殊回路も含む。これらのプログラマブルロジック要素および特殊回路は、プログラマブル相互接続ラインを用いて相互接続され得る。プログラマブル相互接続ラインは、選択的に、プログラマブルロジック要素と特殊回路との間の接続をルートする。プログラマブルロジック要素と、特殊回路と、プログラマブル相互接続ラインとの組み合わせを構成することによって、プログラマブルデバイスは、ほぼすべての種類の情報処理機能をバーチャルに実行するように適合され得る。
【０００４】
プログラマブルデバイスの構成は、典型的に、構成ＲＡＭ（ＣＲＡＭ）セルのセットまたは構成メモリに格納されている構成データによって制御される。典型的に、ＣＲＡＭセルにおけるデータは、ルックアップテーブルに対するエントリ、プログラマブルロジック要素に含まれるマルチプレクサに対する制御信号、プログラマブル相互接続ラインを制御する値、およびプログラマブルデバイスのためのオペレーションのモードのようなプログラマブルデバイスの他の局面を制御する値を含む。
【０００５】
構成データは、典型的に、プログラマブルデバイスと同じチップパッケージ内の、またはプログラマブルメモリデバイスに接続されている外部の構成デバイス上のフラッシュメモリまたはＲＯＭのような不揮発性メモリに格納されている。パワーアップ、リセットまたは他の適切な状況においては、この構成は、プログラマブルデバイスを構成するためにフラッシュメモリからプログラマブルデバイスのＣＲＡＭセルにロードされる。
【０００６】
プログラマブルデバイスの新しい世代の各々は、製造処理における発達によって、それらの旧式のものより小さいトランジスタから成る。ＣＲＡＭセルの物理的な寸法が減少するとともに、それらは自発的「ソフトエラー」に対して影響をさらに受けやすくなる。ソフトエラーは、アルファ粒子または宇宙線のようなバックグラウンド放射線によって誘導され得、かつＣＲＡＭセルが「０」から「１」の状態へまたはその逆に自発的に変わるという結果をもたらし得る。メモリセルが永久的に機能しないハードエラーとは対照的に、メモリセルにおける誤った情報が再プログラミングによって補正され得るため、ソフトエラーはそのように名付けられている。プログラマブルデバイスの機能がＣＲＡＭセルに格納されているデータによって判断されるため、ＣＲＡＭセルの状態における単一の変化でも、プログラマブルデバイスの機能を変更し得るか、または無能にし得る。さらに、プログラマブルデバイスがより複雑になる一方、さらなるＣＲＡＭセルが構成データを格納するために必要とされる。これは、ソフトエラーの周波数をさらに増加させる。
【０００７】
ソフトエラーを補正するための従来の方法は、ＣＲＡＭセルからの構成データを読み取るエラー検出回路網を使用し、エラーの存在を判断することを含む。エラーの検出の際、エラー検出回路網は、典型的に、プログラマブルデバイスがその構成データを再ロードし、かつ適切な動作のために再構成されることをもたらすエラー信号を起こす。他のアプローチにおいては、既知のエラーを補正できるエラー補正回路網もデバイス上に含まれる。この回路網は、構成データのセット全体を再ロードをせずにＣＲＡＭにおける構成データを補正するために使用され得る。
【０００８】
プログラマブルデバイス上にて実行している多数のアプリケーションは、デバイスの回路網の大部分を使用しない。例えば、典型的なアプリケーションは、含まれる回路網の半分のみしか使用し得ない。それは、ＣＲＡＭセルの約半分のみが、アプリケーションによって使用されるプログラマブルロジック要素、特殊回路およびプログラマブル相互接続ラインの動作を構成するために必要とされることを意味する。何らかの既知のロジック値に設定され得る残りのＣＲＡＭセルは、プログラマブルデバイスの機能に影響を与えない。アプリケーションによって使用されていないプログラマブルロジック要素、特殊回路およびプログラマブル相互接続ラインを制御するＣＲＡＭセルは、未使用ＣＲＡＭセルと言われる。未使用ＣＲＡＭセルにおけるソフトエラーは、重要でなく、しばしば無視され得る。
【０００９】
エラー検出回路網は使用されているＣＲＡＭセルと未使用ＣＲＡＭセルとの間を区別しないため、従来の技術を利用するプログラマブルデバイスは、一般に、ＣＲＡＭセルにおける任意のエラーの検出の際に構成データを再ロードする。しかしながら、ＣＲＡＭの大部分がプログラマブルデバイスのアプリケーションによって使用されない場合があるので、これらのソフトエラーの多数は、プログラマブルデバイスの機能に対して影響を与えない「偽陽性（ｆａｌｓｅ  ｐｏｓｉｔｉｖｅ）」である。従って、プログラマブルデバイスは、しばしば、構成データの不必要なローディングおよび格納による、構成データのローディングの間のダウンタイムおよび増加された電力散逸によってプログラマブルデバイスの性能を減少させる偽陽性によって構成データを不必要に再ロードする。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
従って、必要とされるのは、エラー補正またはデバイス再構成のような不必要な修正処置を回避するための偽陽性ソフトエラーを検出する回路、方法および装置である。
【課題を解決するための手段】
【００１１】
従って、本発明の実施形態は、構成データの再ロードまたは他の修正処置が不必要に実行されないように、格納された構成データにおけるソフトエラーが無視され得る偽陽性であるか否かを検出する回路、方法および装置を提供する。
【００１２】
本発明の例示的実施形態は、エラー検出回路および感度プロセッサを有する集積回路を提供する。エラー検出回路は、格納された構成データにおけるソフトエラーの存在を検出する。感度プロセッサは、検出されたソフトエラーが無視され得るか否か、または修正行動（エラーフラグを提供するか、デバイスを再構成するか、またはエラーを補正するかのような）が開始される必要があるか否かを判断する。感度プロセッサは、エラーが未使用の回路網を構成するメモリセルにおいて発生したか否かに基づいて、この判断を行い得る。この判断が構成データがチェックされる度に行われる必要がないように、感度プロセッサは、無視され得る既知のエラーを追跡するためにエラーログを利用し得る。
【００１３】
本発明の特定の実施形態においては、ビットストリームは、プログラマブルデバイスによって受信され、かつプログラマブルデバイス上に格納される。ビットストリームは、プログラマブルデバイスを形成するプログラマブルロジック要素、特殊回路およびプログラマブル相互接続ラインを構成するために使用される構成データを含む。ビットストリームは、典型的に、構成データから引き出されたエラーチェックビットをさらに含む。これらのエラーチェックビットは、構成ビットの１つ以上が破損し、かついわゆるソフトエラーになったか否かを判断するために使用され得る。エラーチェックビットは、ソフトエラーの存在および位置を判断するために使用され得る。本発明の一部の状況または一部の実施形態において、ソフトエラーの位置が多数のＣＲＡＭセルまたはＣＲＡＭセルの群の中において見出されるが、典型的に、ソフトエラーの正確な位置、すなわち、正確なＣＲＡＭセルが判断される。さらに、複数のエラーの場合、これらのエラーの位置は判断可能ではない場合がある。
【００１４】
本発明の特定の一実施形態のおいては、ビットストリームは、感度データをさらに含む。この感度データは、プログラマバルデバイス上の所定回路が、アプリケーションによって必要とされているか否か、または使用されているか否かを指示する。ここで、プログラマブルデバイスは、そのアプリケーションのために構成されている。より詳細に、感度データの各ビットは、エラーが無視され得るように、１つ以上のＣＲＡＭセルにおけるエラーが回路性能全体に十分に不利益な影響を与えるか否かを指示する。エラーが、デバイス性能に対して十分に不利益な影響を与えない誤った構成という結果と成った場合、エラーは無視され得る。これは、エラー指示を提供し、エラー補正を実行し、かつデバイス再構成を被るような修正処置が回避されることを可能にする。
【００１５】
本発明の様々な実施形態においては、回路網がデバイス性能に対して十分に不利益な影響を与えるように誤って構成された場合に対する基準は変化し得る。例えば、感度は、回路がアプリケーションによって使用されているか否かに基づき得る。本発明の特定の一実施形態においては、プログラマブルロジック要素がアプリケーションによって使用されていない場合、アプリケーションは、そのプログラマブルロジック要素を構成するために使用されるＣＲＡＭセルにおけるエラーに対しては影響を受けやすくない。しかしながら、他の実施形態においては、未使用の回路における一部のエラーは、使用されている他の回路に逆に影響し得る。例えば、そのようなエラーは、使用されているドライバを不必要にロードし得るか、電力散逸を増やし得るか、または性能が望ましくなく減少されるそのような他の影響を有し得る。従って、本発明の様々な実施形態においては、これらおよび他の基準は、感度データを生成するのに使用され得る。
【００１６】
例えば、感度データの各ビットは、１つのＣＲＡＭセルにおけるエラーに対するアプリケーションの感度を指示し得る。しかしながら、これは、大きな感度データベースの使用を必要とする。従って、本発明の特定の一実施形態においては、各感度ビットは、ＣＲＡＭセルの群の中の任意の１つのＣＲＡＭセルにおけるエラーに対するアプリケーションに対する感度を指示する。
【００１７】
本発明の特定の一実施形態においては、プログラマブルロジック要素は、ルックアップテーブル部およびレジスタ部を含む。従って、プログラマブルロジック要素のルックアップテーブルまたはレジスタ部を構成するために使用されるＣＲＡＭセルの群におけるエラーに対する感度は、１ビットで追跡され得る。代替的に、１つの感度ビットは、プログラマブルロジック要素、またはロジックアレイブロックのようなロジック要素の群を構成するために使用される任意の１つのＣＲＡＭセルにおけるエラーに対するアプリケーションの感度を指示し得る。
【００１８】
さらに、この特定の実施形態においては、ルーティングは、ルーティングマルチプレクサを用いて構成される。これらのマルチプレクサは、典型的に、６〜１５のＣＲＡＭセルの制御の下にあり得る。従って、そのようなＣＲＡＭセルの群における任意のビットにおけるエラーに対するアプリケーションの感度は、感度ビットで追跡され得る。代替的に、ルーティングマルチプレクサの群に対するＣＲＡＭセルにおけるエラーに対する感度は、感度ビットで追跡され得る。例えば、ロジックアレイブロックにおけるローカルルーティングマルチプレクサは、感度ビットで追跡され得る。また、本発明の任意のこれらの実施形態においては、ＣＲＡＭビットにおけるエラーに対するアプリケーションの感度は、ＣＲＡＭビットがアプリケーションによって使用される回路網を構成するか否かによって判断され得る。
【００１９】
アプリケーションが発生するエラーに対して影響を受けやすい場合、感度プロセッサは、プログラマブルデバイスが再構成されることをもたらす外部デバイスにフラグを提供し得る。それは、アプリケーションがエラーに対して影響を受けにくい場合においては無視され得る。いずれの場合においても、アプリケーションによるデータ収集および解析に対するエラーを追跡することが望ましくあり得る。
【００２０】
エラーである構成ビットが無視され得ることが一旦判断されると、構成データがチェックされる度に同じ判断をする必要がないことが望ましい。従って、本発明の他の例示的実施形態は、無視され得るソフトエラーを追跡するエラーログを含む。エラーが検出された場合、エラーが無視され得るか否かをみるためにログがチェックされる。エラーがログされていなかった場合、感度データは、エラーが無視され得るか否かをみるために情報を求める。エラーが無視され得る場合、エラーは次いで、今後の参考のためにログされる。
【００２１】
本発明の様々な実施形態においては、エラー補正回路網もまた含まれる。アプリケーションがエラーに対して影響を受けやすい場合、ソフトまたはハードリセットのような、補正のほかのさらなる行動が必要になり得る。さらに、複数のエラーが発生した場合、リセットが必要とされ得る（補正回路網が複数のエラーを補正できない場合）。アプリケーションがエラーに対して影響を受けにくい場合においても、そのようなエラーは典型的に、それらが後のエラーが補正されることができないという状況をつのらせてもたらさないように、補正されるべきである。また、いずれの場合においても、アプリケーションによる解析に対するエラーを追跡することが望ましくあり得る。
【００２２】
本発明の様々な実施形態は、本明細書中に説明される１つ以上のこれらまたは他の特徴を組み入れ得る。本発明の本質および利点のより良い理解は、以下の詳細の説明および添付の図面を参照することによって得られ得る。
【００２３】
本発明は、さらに以下の手段を提供する。
（項目１）
プログラマブルデバイスの構成メモリにおけるエラーを検出する方法であって、
該構成メモリから構成メモリデータを読み取ることと、
該構成メモリデータにおいてエラーが発生したか否かを判断することと、
エラーが発生したという判断に応答して、
エラーである該構成データに対応する感度データを読み取ることと、
該エラーを無視することができるか否かを判断するために該感度データを解析することと、
該エラーを無視することができない場合、修復アクティビティを開始することと、
該エラーを無視することができる場合、該修復アクティビティを開始しないことによって該エラーを無視することと
を包含する、方法。
（項目２）
上記修復アクティビティを開始しないことによって上記エラーを無視する行動が、エラーログに該エラーの位置を格納することをさらに含む、項目１に記載の方法。
（項目３）
上記エラーが発生したという上記判断に対する上記応答が、
上記感度データを読み取る前に上記位置を上記エラーログと比較することと、
上記エラーの位置が該エラーログに予め格納されていない場合にのみ、該感度データを読み取ることと
をさらに含む、項目２に記載の方法。
（項目４）
発生した上記エラーがエラーチェックビットを用いて判断されていようとなかろうと、上記構成メモリが領域に分割され、かつ該エラーチェックビットが各領域に対して個別に判断される、項目１に記載の方法。
（項目５）
上記修復アクティビティが上記エラーを補正することを含む、項目１に記載の方法。
（項目６）
上記修復アクティビティが上記プログラマブルデバイスを再構成することを含む、項目１に記載の方法。
（項目７）
エラーである上記構成データによって構成されている回路が、上記プログラマブルデバイス上にて実行するアプリケーションによって使用されるか否かに基づいて、上記感度データが部分的に生成される、項目１に記載の方法。
（項目８）
プログラマブルデバイスにおける構成メモリに格納される構成データにおけるエラーをチェックする方法であって、該構成データが第１のアプリケーションのために該プログラマブルデバイスを構成し、該方法は、
該構成メモリから該構成データの一部を読み取ることと、
該構成データの該一部に対応する複数のエラーチェックビットの一部を読み取ることと、
該構成データの該一部にエラーがあるか否かを判断することと、
該エラーがあった場合、ソフトエラーが該第１のアプリケーションに不利益に影響するか否かを判断することと、
不利益に影響すると判断した場合、該ソフトエラーが生じたという指示を提供することと、
不利益に影響しないと判断した場合、該ソフトエラーが生じたという該指示を提供しないことと
を包含する、方法。
（項目９）
上記ソフトエラーが上記第１のアプリケーションに不利益に影響するか否かを判断することが、メモリから感度データを読み取ることによって行われる、項目８に記載の方法。
（項目１０）
上記構成データの上記一部を読み取る前に、該構成データを構成デバイスから読み取り、かつ該構成データを上記構成メモリに格納することをさらに包含する、項目８に記載の方法。
（項目１１）
上記構成メモリから上記構成データを読み取る前に、該構成データを用いて上記複数のエラーチェックビットを判断することをさらに包含する、項目１０に記載の方法。
（項目１２）
上記プログラマブルデバイス上に上記複数のエラーチェックビットを格納することをさらに包含する、項目１１に記載の方法。
（項目１３）
上記エラーが上記第１のアプリケーションに不利益に影響することが判断された場合、上記ソフトエラーを補正することをさらに包含する、項目８に記載の方法。
（項目１４）
上記エラーが上記第１のアプリケーションに不利益に影響することが判断された場合、上記プログラマブルデバイスを再構成することをさらに包含する、項目８に記載の方法。
（項目１５）
構成データを格納するための第１の複数のメモリセルと、
エラーチェックビットを格納するための第２の複数のメモリセルと、
感度データを格納するための第３の複数のメモリセルと、
該構成データ、該エラーチェックビットおよび該感度データを含む構成ビットストリームを受信し、該第１の複数のメモリセルに該構成データ、該第２の複数のメモリセルに該エラーチェックビット、および該第３の複数のメモリセルに該感度データを書き込むための構成コントローラと、
該第１の複数のメモリセルから該構成データを、および該第２の複数のメモリセルから該エラーチェックビットを読み取り、かつ該構成データにおいてエラーが発生したか否かを判断するためのエラー検出回路であって、該エラーが発生したと判断された場合、該エラーが発生したところに該第１のメモリセルのうちの最初の１つに対してアドレスの少なくとも一部を提供するためのエラー検出回路と、
該アドレスの少なくとも一部を受信し、該アドレスの該少なくとも一部に対応する該感度データを受信し、かつ集積回路上にて実行するアプリケーションが発生した該エラーに対して影響を受けやすいか否かを判断するための感度プロセッサと
を備える、集積回路。
（項目１６）
上記エラーが発生し、かつ上記アプリケーションが該エラーに対して影響を受けやすい場合、該エラーが発生したところでデータが上記メモリセルに書き込まれる、項目１５に記載の集積回路。
（項目１７）
上記エラー検出回路によって検出される上記エラーを補正するためのエラー補正回路をさらに備える、項目１６に記載の集積回路。
（項目１８）
上記アプリケーションが発生した上記エラーに対して影響を受けやすいものであろうとなかろうと、上記エラー補正回路が、上記エラー検出回路によって検出されるエラーを補正する、項目１７に記載の集積回路。
（項目１９）
エラーが発生し、かつ上記アプリケーションが該エラーに対して影響を受けやすい場合、上記集積回路が再構成される、項目１５に記載の集積回路。
（項目２０）
上記プログラマブルデバイスのどの部分が上記第１のアプリケーションによって使用されるかに基づいて、上記複数の感度ビットが部分的に判断される、項目１５に記載の集積回路。
（項目２１）
上記プログラマブルデバイスの対応する部分が上記第１のアプリケーションによって使用されているか否かに基づいて、上記感度ビットの各々が部分的に判断される、項目１５に記載の集積回路。
【００２４】
（摘要）
リローディング構成データまたは他の修正処置が不必要に実行されないように、格納された構成データにおいて発生するソフトエラーが無視され得る偽陽性であるか否かを検出する回路、方法および装置。一実施例は、エラー検出回路および感度プロセッサを含む集積回路を提供する。エラー検出回路は、エラーの存在を検出する。感度プロセッサは、検出されたエラーが無視され得るか否か、または修正行動（エラーフラグを提供するか、デバイスを再構成するか、またはエラーを補正するかのような）が開始されるべきであるか否かを判断する。感度プロセッサは、エラーが未使用の回路網を構成するメモリセルにおいて発生したか否かに基づいて、この判断を行い得る。この判断が構成データがチェックされる度に行われる必要がないように、感度プロセッサは、無視され得る既知のエラーを追跡するためにエラーログを利用し得る。
【発明を実施するための最良の形態】
【００２５】
図１は、典型的なプログラマブルデバイス１００に対するＣＲＡＭアレイ１１０およびプログラミング構造の概観である。プログラマブルデバイス１００は、行および列のアレイ１１０に組織化された幾つかのＣＲＡＭセルを含む。アドレスレジスタ１２０は、ラインのセットを含み、これらのラインそれぞれがＣＲＡＭセル１１０の列をアドレシングする。データレジスタ１３０は、ＣＲＡＭセル１１０の列に書き込むデータまたはプログラミングするデータを含むか、あるいはＣＲＡＭセル１１０の列から読み返されるデータを含む。
【００２６】
データがＣＲＡＭセル１１０に書き込まれるとき、構成コントローラ１５０は、構成メモリからの構成データを読み出すか、あるいは受け入れる。この構成メモリは、構成デバイス１４０の形態で別個のチップ上にあり得るか、あるいはプログラマブルデバイス１００と同じチップ上に含まれ得るかのいずれかでる。データは、構成メモリから読み出され、データレジスタ１３０に提供される。完全なデータの列が利用可能なとき、１つの列は、アドレスレジスタ１２０によってアドレシングされたラインの１つをストロボすることで、プログラミングされる。
【００２７】
本発明の特定の実施形態において、アドレスレジスタ１２０は、事前に全て０に設定され、単一の１がシフトされ、プログラミングされるべき列を選択する。別のバリエーションにおいて、アドレスレジスタは、異なるコード化を使用し得る。プログラマブルデバイスは、アドレスまたはデータのより小さなブロックにアレンジされ得るし、データは一度に単一のビットまたは幾つかのビットで読み出され得るし、他の考えられるバリエーションもあり得る。
【００２８】
ＣＲＡＭセルが書き込まれた後に、構成コントローラ１５０は、周期的にＣＲＡＭデータを読み返し、エラーをチェックし得る。構成コントローラ１５０は、再び、１つ以上の列を介して順序付け、データをデータレジスタ１３０の中に読み返す。各列が読まれた後に、構成コントローラ１５０は、このデータを用いて、エラー検出計算（ｃｏｍｐｕｔａｔｉｏｎ）の幾つかのステップを実行する。これは、典型的には、データを構成コントローラ１５０の中にシフトして、ＣＲＣチェックを実行することによって行われる。代替として、構成コントローラ１５０は、列または行のデータの様々なサブセットを含むＣＲＡＭセルのブロック上のエラー検出コードまたはエラー補正コードを計算し得る。代替として、ＣＲＡＭの任意の数の列および行に及び得るＣＲＡＭセルのブロックも、またエラー検出コードまたはエラー補正コードを含み得る。代替として、所与のエラー補正ブロック内のＣＲＡＭセルが、必ずしも近接しないように、領域は、複数の行および列にわたって、交互配置され（ｉｎｔｅｒｌｅａｖｅｄ）得る。
【００２９】
エラーが検出された場合、構成コントローラ１５０は、エラーフラグ１５２を上げ得る。このエラーフラグ１５２は、プログラマブルデバイス１００の内部または外部のいずれかにあるロジック信号であり得る。プログラマブルデバイス１００をモニタする外部ロジック（図示せず）は、この信号を用いて、このプログラマブルデバイス１００を再構成し得る。検出エラーのイベントにおいて、プログラマブルデバイス１００の状態は、信頼され得ない。なぜなら、エラーが発生して、それが検出されるまで、どのくらい時間が過ぎたかが分からないので、その結果、プログラマブルデバイス１００は、予測できない方法で損なわれ（ｃｏｒｒｕｐｔｅｄ）得るからである。プログラマブルデバイス１００の再構成および初期化は、これらの状況下での唯一の選択肢であることが多い。
【００３０】
例示的なプログラマブルデバイス１００の更なるバリエーションは、ＣＲＡＭ１１０コンテンツを内部で補正するためのエラー補正回路網を含み得るが、これは、偽陽性の問題に対処しない。さらに、一部の構成コントローラ１５０は、例えば、ライン１５４上で、構成データを読み返して、その構成データをプログラマブルデバイスから追い出す能力を提供し得る。
【００３１】
再び、ソフトエラーが偽陽性の場合、すなわち、そのエラーが使用されていない回路を構成するＣＲＡＭセル内のエラーであれば、そのエラーは無視され得る。したがって、エラーが偽陽性であるエラーの検出に引き続いて、デバイスを再構成することは望ましくない。このため、本発明の例示的な実施形態は、プログラマブルデバイスの動作に顕著な影響を与えないＣＲＡＭのソフトウェアエラーを無視することによって、プログラマブルデバイスを不必要に再構成することを低減する。本発明の実施形態は、最初に、エラーチェックビットを用い、デバイスの動作に潜在的に影響を与えるソフトエラーを検出し、位置決めする。その後、そのソフトエラーがデバイス性能に望ましくない度合いの顕著な影響を及ぼすエラーであるか、あるいは無視され得るエラーであるかが判断される。
【００３２】
本発明の実施形態において、エラー補正コード（ＥＣＣ）ユニットは、ＣＲＡＭ内に格納された構成データのビットのブロックまたはサブセット上でエラーチェックを実行する。このサブセットは、おそらくは、プログラマブルデバイス内の全てのＣＲＡＭデバイスであり得るが、典型的なエラー補正コードは、単一のエラーのみを補正し得、それゆえ、プログラマブルデバイスを構成データの幾つかの小さなブロックで、そのそれぞれが単一のソフトエラーを許容し得るブロックに分割することは、有利である。
【００３３】
本発明の実施形態において、ＥＣＣユニットは、単一のエラーのロケーションを識別することができる。さらなる実施形態において、少なくとも高い可能性で、２つ以上のソフトエラーが発生したかどうかを識別し得る。これによって、プログラマブルデバイスが多数のソフトエラーを許容できることを示す。ただし、各ブロックにおけるソフトエラーの数が、ＥＣＣユニットがエラーのロケーション（単数または複数）を識別する能力を超える場合を除く。
【００３４】
図２は、本発明の実施形態に従うプログラマブルデバイスの例示的な構成メモリを示す。この図は、デバイスを構成するために使用されるＣＲＡＭセル２１０、アドレスレジスタ２２０、データレジスタ２３０、およびエラーチェックビットを格納するために使用されるＣＲＡＭセル２４０を含む。
【００３５】
本発明のこの実施形態において、ＣＲＡＭセル２１０の各ブロックは、エラーチェックビットを格納するために使用される１つ以上の追加ＣＲＡＭセル２４０の関連コレクションを有する。これらのＣＲＡＭセル２４０は、プログラマブルデバイスの任意の部分を制御するために使用されるのではなく、ＣＲＡＭセル２１０のそのブロックに対するエラーチェックビットを格納するために使用される。本発明の一実施形態において、ロケーションのサブセットは、ＣＲＡＭセル２１０の列であり、エラーチェックビットは、その列の端に通常なるところを超えて、垂直に拡がり得る。エラーチェックビットは、これらの追加のＣＲＡＭセル２４０の中に格納される。他のバリエーションも可能であり、列の部分、２つ以上の列、またはデータの関連ブロックとして取り扱うのが効率的であるＣＲＡＭセルの任意の領域を含む。
【００３６】
図３は、本発明の実施形態に従うソフトエラー検出ユニットおよび関連回路網を含むブロック図である。この図は、ＦＰＧＡまたは他のプログラマブルデバイス３００を含む。このＦＰＧＡまたは他のプログラマブルデバイス３００は、構成コントローラ３１０、エラー補正コードユニット３２０、感度プロセッサ３３０、随意のエラーログ３４０、感度データデータベースまたはメモリ３５０、および外部構成デバイス３６０をさらに含む。
【００３７】
構成中に、構成コントローラ３１０は、構成デバイス３６０からの構成データを読み出す。構成コントローラ３１０は、構成データをＣＲＡＭセル（図示せず）に書き込む。構成後に、ＣＲＡＭセル内のデータは、周期的にソフトエラーをチェックされる。これは、ＣＲＡＭセルから構成データおよびエラーチェックビットを読み出すＥＣＣユニット３２０によって行われ得る。
【００３８】
ソフトエラーが検出されると、ＥＣＣユニット３２０は、エラーのロケーションを決定する。ＥＣＣ算出（ｃａｌｃｕｌａｔｉｏｎ）の幾つかのタイプは、２つ以上のロケーションを識別可能であり得、本開示における「ロケーション」の呼称は、１つ以上のロケーションを意味するものと解釈されるべきである。実施形態において、コードによって特定されるロケーションは、不良ビットの正確な指標と同じくらいに厳密である必要はないが、エラーを位置決めする何らかのメリットを提供し、この統計を活かすことができるのに十分厳密であり得る。これは、エラーが、ユーザ回路の動作に影響を与えないロケーションに対応する可能性が高いという意味においてである。
【００３９】
本発明の一実施形態において、ロケーションは、特定の不良ビットの正確な指標である。別の実施形態において、ロケーションは、列を備えるビットペアのセットの指標であり得る。したがって、以上の段落で記載された２つの異なるレベルの粒状性（ｇｒａｎｕｌａｒｉｔｙ）があることに留意すべきである。すなわち、（１）各ＥＣＣ算出に使用されるブロックサイズを形成する構成データの量、（２）ソフトエラーがブロック内の発生したロケーションを識別するときの解像度のレベルである。本発明の特定の実施形態において、エラーのロケーションは、不良ビットを有するブロック数と、そのブロック内のビットのロケーションとの双方を備える。
【００４０】
エラーチェック回路は、各ブロック上でエラー算出を実行し、エラーが発生する場合、フラグオンライン３３２を上げる。上述のように、エラーが見つかったとき、ＥＣＣユニット３２０は、またエラーのロケーションを決定する。ハミングコードのようなエラー補正コードの場合、これは、当然、ＥＣＣ算出の一部であり得る。ＣＲＣ算出の場合、エラーのロケーションを決定するには、さらなる計算を要し得る。エラー（単数または複数）がＥＣＣユニットの能力を超えて発生した場合、ＥＣＣユニットは、また信号を送り得る。例えば、シングルビットエラーのロケーションを識別し得るのみであるが、ダブルエラーを検出し得るＥＣＣユニットにおいて、ダブルビットエラーの場合である。
【００４１】
エラーのロケーションが決定されると、ＥＣＣユニット３２０の実施形態は、フラグおよびソフトエラーのロケーションを感度プロセッサ３３０にパスする。感度プロセッサ３３０は、検出されたエラーのロケーションに対応するアドレスを用いて、感度データメモリ３５０にアクセスする。結果として得られた感度データは、ユーザ回路が特定のロケーションにあるエラーに敏感（ｓｅｎｓｉｔｉｖｅ）であるか否かを特定する値である。
【００４２】
再び、様々な基準が感度を規定するために使用され得る。本発明の特定の実施形態において、エラーが、現在構成されているようなプログラマブルデバイスの動作に十分に有害であって、修復措置が取られるべきであり、エラーは無視されるべきではない場合、そのエラーは、敏感であると考えられる。異なる設計またはアプリケーションが、このプログラマブルデバイスの異なる部分に利用されているので、このプログラマブルデバイスに対する感度データは、それに従って変動する。本発明の実施形態において、感度データは、プログラマブルデバイスの構成データの決定と関連して、ソフトウェアによって事前に計算され、感度データメモリの中にロードされる。本発明の特定の実施形態において、感度データの各ビットは、ＣＲＡＭセルの個数に対応する。その個数のＣＲＡＭセルの任意の一つにあるエラーが、デバイスの動作に十分に有害であるので、修復措置が取られるべきとき、対応する感度データビットは、その設計がこれらのＣＲＡＭセルの一つでソフトエラーに敏感であることを示すように設定される。
【００４３】
感度プロセッサ３３０は、検索された感度データを解析し、検出されたソフトエラーが敏感であるかどうか、すなわち、そのエラーが現在構成されているようなプログラマブルデバイスの動作に十分に有害で、修復措置が必要とされるほどであるかどうかを判断する。感度プロセッサ３３０は、次いで、信号オンライン３３２をアサートし、敏感なエラーの存在を示し得る。エラーが敏感でない場合、本発明の随意の実施形態は、そのエラーを随意のエラーログメモリ３４０にログインし、そのエラーがさらに発生しても、同じ感度のエラーを繰り返し評価させない。この実施形態において、感度プロセッサ３３０は、感度データメモリ３５０にアクセスする前に、エラーログ３４０を調査し、感度プロセッサ３３０は、そのエラーが以前に検出されたことなく、エラーログメモリ３４０内に入った場合、単に感度データメモリにアクセスするのみである。
【００４４】
ＣＲＡＭセルは、幾つかの方法で、感度データメモリ３５０内のデータにマッピングされ得る。本発明の一実施形態において、感度データメモリ３５０は、各ＣＲＡＭセルに対する感度ビットを割り当てる。しかしながら、これには、非常に多くの感度データメモリ３５０を必要とする。それゆえ、本発明の他の実施形態において、感度データメモリ３５０は、各領域に対する感度ビットを割り当てる。ここで、１つの領域は、幾つかの数のＣＲＡＭセルを備える。本発明のこの実施形態において、感度データメモリ３５０へのアクセスは、ＣＲＡＭセルの最上位ビットを用いてなされる。例えば、ＥＣＣ計算は、ビットエラーの厳密なロケーションを識別し得るが、感度データは、ＣＲＡＭの各２×２長方形に対する感度ビットを格納し得る。それゆえ、ビットエラーロケーションの一部のみが、関連する感度データの対応するロケーションを決定するために使用される必要がある。
【００４５】
さらなる実施形態において、感度ビットと関連する領域は、サイズが異なり、プログラマブルデバイスの特定のコンポーネント（例えば、プログラマブル相互接続ラインまたはプログラマブルロジックエレメント）と対応し得る。例えば、感度ビットと関連する領域は、プログラマブルロジックエレメントの一部分（例えば、プログラマブルロジックデバイスのルックアップテーブルまたはレジスタ部分）であり得る。代替として、領域は、プログラマブルロジックエレメント、またはロジックエレメントのグループであり得る。他の領域は、１つのルーティングマルチプレクサ、またはルーティングマルチプレクサのグループ（例えば、ロジックアレイブロックと関連するルーティングマルチプレクサの全て）を含み得る。またさらなる実施形態において、より手の込んだデータ構造（例えば、ツリーまたはハッシュ（ｈａｓｈ）テーブル）は、感度データによって構成メモリの領域を表現するように使用され得る。
【００４６】
ロジックエレメント内の一つのＣＲＡＭビットが使用される場合、ロジックエレメントは、ユーザの設計の一部として構成され、必要とされることが多い。このような状況において、ロジックエレメント内に各ＣＲＡＭビットが必要とされる。したがって、本発明の実施形態において、１つ以上のロジックエレメントに対応する粗い粒状領域が使用され、感度データに対する非常に少ない量のメモリを用いて、本発明をインプリメントし得る。それによって、オンチップ（ｏｎ  ｃｈｉｐ）で感度データを格納させることができる。とはいえ、一部の実施形態においては、このデータはオフチップ（ｏｆｆ  ｃｈｉｐ）に、例えば、構成デバイス３６０の中に格納される。本発明の特定の実施形態において、ルーティング構成は、プログラマブルデバイス内の各ロジックブロックまたはＬＡＢは、使用されたルーティングを少なくとも一部は含むという仮定の下に、感度データから排除され得る。このルーティング構成に対する感度データの使用は、冗長であるためである。対照的に、感度情報に活かし得る全く未使用のロジックブロックまたはＬＡＢが多数あり得る。
【００４７】
本発明のさらなる実施形態において、随意のエラーログ３４０は、ダイに位置され、オフチップメモリにアクセスする必要を減らすことが好ましいが、感度データメモリは、オンチップ（比較的データの量が少ない場合）、あるいはオフチップ（おそらくは構成デバイス３６０の中）のいずれかに位置され得る。
【００４８】
ソフトエラーロケーションが単一のビットで識別され得るさらなる実施形態において、あるいはプログラマブルデバイスＣＲＡＭの小さな領域を再構成させることが可能なバリエーションにおいて、感度プロセッサは、不良ビットまたは不良ビット領域の構成データを再ロードして、そのエラーを修復し得る。これは、引き続くエラーが、システムの検出能力を超えないようにするためである。
【００４９】
冗長性を有するプログラマブルデバイスの実施形態は、ＥＣＣプロセッサによって記述されたロケーション情報に、少なくとも２つの異なる影響を有し得る。第一に、エラーロケーションは、物理的ロケーションであるより、むしろ、ロジカルロケーションに対応し得る。なぜなら、データは、デバイスのプログラミング中にシフトされ得るからである。例えば、データは、悪い行を避けるために、１行だけシフトされ得て（１つの行は、典型的には２０〜２００である多数の隣接するＬＡＢを備える）、所与のビットは、２つのＬＡＢ行の一方に物理的に位置し得る。この場合、データは、その悪い行を飛ばして、書き込まれるのと同じ方法で、読み返され得る。そのため、このシフト化は、データストリーム内で見ることができない。
【００５０】
対照的に、冗長性の第二の局面によって、ＣＲＡＭのコンテンツが容易に予測されないような欠陥ロケーションに依存して、構成データ内のビットが変更または移動され得るように、データが処理される原因となり得る。例えば、一つの特定の実施形態は、ビットペアをルーティングするコンテンツを、欠陥のある行のロケーションとその行への距離に依存して変更する。これらのデバイスにおいて、サイズで少なくとも１つのビットペアである領域は使用することが可能である。
【００５１】
本発明の実施形態は、プログラマブルデバイス上のハードロジック（すなわち、そのプログラマブルデバイスの専用特殊ロジック）、またはソフトロジック、あるいはソフトロジック（すなわち、そのプログラマブルデバイスのプログラマブルロジックリソースを用いて生成されたロジック）とハードロジックとの組み合わせで、完全にインプリメントされ得る。例えば、組み合わせの実施形態は、ＥＣＣロジックを設置して、ハードロジックのエラーロケーションを識別し、この情報をコード化したプログラマブルデバイスのコアに信号を提供し得る。例示的な感度プロセッサ３３０は、プログラマブルロジックコアの中のソフトロジックから構築され得、エラーロケーションから感度データメモリアドレスにマッピングするアルゴリズムの実質的に任意の選択を可能にする。この感度データは、典型的に、内蔵されたメモリブロックに十分フィットするほど小さな場合、オンチップに位置され得るか、あるいは上述のように、オフチップに位置され得る。感度プロセッサ３３０は、プログラマブルデバイスにおけるソフトエラーが、エラー検出ロジック内の故障の原因とならないように、三部構成にされ得、感度データは、エラー補正を用いて、ソフトエラーが故障の原因とならないようにする。
【００５２】
図４は、本発明の実施形態に従って、構成メモリのエラーを検出する方法の流れ図である。この方法において、デバイスは、最初に構成される。構成に続いて、構成データにおけるソフトエラーのチェックが、実行される。これらのチェックは、周期的または非周期的に実行され得る。エラーが検出されるとき、アプリケーションがそのエラーに対して敏感であるかどうかを判断する。アプリケーションがこのエラーに対して敏感でない場合、エラーは無視される。アプリケーションがこのエラーに敏感である場合、様々な措置（例えば、フラグの提供、エラーの補正、またはデバイスの再構成）が、本発明の実施形態の正確なインプリメンテーションに依存して実行され得る。
【００５３】
具体的には、行動４００で、エラーチェックビットが決定される。行動４０２で、感度データが、例えば、ソフトウェアで決定される。行動４１０で、プログラマブルデバイスが構成され、そして、行動４１２で、エラーチェックビットおよび感度データが、プログラマブルデバイスに格納される。デバイスは、プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイまたは他のデバイスのようなプログラマブルデバイスであり得る。再び、デバイスは、典型的には、幾つかのＣＲＡＭセルの中に構成データを書き込むことによって構成される。構成された後に、ＣＲＡＭセルに格納されたデータは、エラーをチェックされ得る。このチェックは、定期的または周期的に行われ得るか、所定のイベントに引き続いて行われ得るか、あるいは何らかの他の基準に従って行われ得る。行動４２０で、構成データの一部分が読み返される。行動４３０で、対応するエラーチェックビットが読み返される。
【００５４】
行動４４０で、ソフトエラーが発生したかどうかが判断される。ソフトエラーが発生しなかった場合、構成データの次の部分が、行動４２０で、読み返され得る。エラーが発生した場合、対応する感度が、行動４５０で、読み出される。この感度データは、アプリケーションがソフトエラーに敏感であるかどうかを示す。本発明の特定の実施形態において、エラーが、アプリケーションによって使用される回路網を構成するＣＲＡＭセルで発生する場合、そのアプリケーションは、エラーに敏感である。
【００５５】
行動４６０で、アプリケーションがソフトエラーに敏感であるかどうかが判断される。敏感でない場合、エラーは無視され得、行動４２０で、次の構成データが読み返される。行動４８０において、エラー補正回路網が存在する場合、できれば、アプリケーションが敏感でない場合であっても、エラーは補正され得る。これは、エラーが蓄積され、アプリケーションが敏感である後のエラーが補正されない状況に導かれるのを避けるためである。アプリケーションがエラーに敏感である場合、本発明の特定の実施形態に従って、様々な活動が取られ得る。例えば、エラーフラグが、行動４７０で、提供され得る。また、あるいは代替として、デバイスは、行動４７２で、再構成され得る。また、プログラマブルデバイスは、エラー補正回路網も含み得る。このような場合、エラーは、行動４７４で補正され得る。エラーが補正され得る場合、デバイスは、おそらく、行動４７２で再構成される必要はない。
【００５６】
再び、感度データを読み出す時間を節約するために、例えば、行動４５０で、アプリケーションが敏感でない既知のソフトエラーのログは、保たれ得る。このことによって、アプリケーションが敏感でない既知のソフトエラーを有するＣＲＡＭセルをチェックするために、毎回感度データを読み出す必要がなくなるか、あるいは敏感でないエラーが報告されている場合、同じエラーを繰り返し報告することを避ける。実施例が、以下の流れ図に示される。
【００５７】
図５は、本発明の実施形態に従って、エラーを検出する方法の流れ図である。再び、デバイスは、最初に構成される。構成に続いて、構成データにおけるソフトエラーのチェックが、実行される。エラーが検出されるとき、そのエラーが、アプリケーションが敏感でない既知のソフトエラーとして、以前にログされたかどうかを判断される。そのようにログされていた場合、エラーは無視され得、チェックが進行し得る。ログされていない場合、アプリケーションがそのエラーに対して敏感であるかどうかを判断する。アプリケーションがこのエラーに対して敏感でない場合、エラーは、後に参照するためにログされ、そうでない場合は、無視されるか、あるいはおそらく補正される。アプリケーションが、エラーに敏感である場合、様々な措置（例えば、フラグの提供、エラーの補正、またはデバイスの再構成）が、本発明の実施形態の正確なインプリメンテーションに依存して実行され得る。
【００５８】
具体的には、行動５１０で、プログラマブルデバイスが構成される。再び、これは、エラーチェックビット、感度データ、ならびに、このデバイスへのこの情報および構成データの格納を含み得る。行動５２０で、構成データの一部分が読み返される。行動５３０で、対応するエラーチェックビットが読み返される。
【００５９】
行動５４０で、ソフトエラーが発生したかどうかが判断される。ソフトエラーが発生しなかった場合、構成データの次の部分が、行動５２０で、読み返され得る。エラーが発生した場合、行動５５０で、このエラーがアプリケーションに敏感でないソフトエラーとしてログされているかどうかを判断される。ログされていた場合、エラーは無視され得、エラーチェックは、行動５２０で実行され得る。ソフトエラーがログされていない場合、行動５６０で、対応する感度データが読み出される。この感度データは、アプリケーションがソフトエラーに敏感であるかどうかを示す。行動５７０で、アプリケーションがソフトエラーに敏感であるかどうかが判断される。敏感でない場合、行動５９０で、エラーは、後に参照するためにログされ得る。エラーが回路網に存在する場合、エラーは、おそらく行動５９２で補正され得る。とはいえ、複数のビットがエラーにあるような一部の場合は、補正され得ない。次いで、構成データは、行動５２０で、読み返され得る。アプリケーションがエラーに敏感でない場合、本発明の特定の実施形態に依存して、様々な活動が取られ得る。例えば、エラーフラグが、行動５８０で、提供され得る。また、あるいは代替として、デバイスは、行動５８２で、再構成され得る。また、エラー補正回路網が含まれる場合、エラーは、行動５８４で補正され得る。この場合、デバイスは、おそらく、行動５８２で再構成される必要はない。
【００６０】
図６は、本発明に従う技術が利用され得る例示的な高密度プログラマブルロジックデバイスまたはＦＰＧＡ６００の簡略化した部分ブロック図である。ＰＬＤ６００は、プログラマブルロジックアレイブロック（すなわちＬＡＢ）６０２の二次元アレイを含み、これらのブロックは、異なる長さおよび速度の列および行の相互接続のネットワークで、相互接続される。ＬＡＢ６０２は、複数の（例えば、１０）のロジックエレメント（ＬＥ）を含み、ＬＥは、ユーザ定義のロジック機能の効率的なインプリメンテーションを提供する。
【００６１】
ＰＬＤ６００は、また、アレイ全体にわたって提供される様々なサイズのＲＡＭブロックを含む分散メモリ構造を含む。ＲＡＭブロックは、例えば、５１２ビットのＲＡＭを提供する５１２ビットブロック６０４、４Ｋブロック６０６、およびＭブロック６０８を含む。これらのメモリブロックは、シフトレジスタおよびＦＩＦＯバッファを含む。ＰＬＤ６００は、さらに、デジタル信号プロセッサ（ＤＳＰ）ブロック６１０を含む。このＤＳＰブロック６１０は、例えば、加算または減算の特徴とともに、乗算をインプリメントし得る。
【００６２】
ＰＬＤ６００が、単に例示的な目的のみに、本明細書において記載されたこと、および本発明が、異なるタイプのＰＬＤ、ＦＰＧＡおよび他のタイプのデジタル集積回路で、インプリメントされ得ることは、理解されるべきである。
【００６３】
図６に示されるタイプのＰＬＤまたはＦＰＧＡは、システムレベルでのソリューションを要する多数のリソースを提供する一方で、本発明は、ＰＬＤが幾つかのコンポーネントの一つであるシステムにおいても、またメリットをもたらし得る。
【００６４】
図７は、本発明が具現化され得る例示的なデジタルシステム７００のブロック図を示す。システム７００は、プログラム化されたデジタルコンピュータシステム、デジタル信号処理システム、特殊デジタルスイッチングネットワーク、または他の処理システムであり得る。さらに、このようなシステムは、幅広い様々なアプリケーションに設計され得る。例えば、電気通信システム、自動車システム、制御システム、消費者用電子機器、パーソナルコンピュータ、インターネット通信・ネットワーク化、およびその他に設計され得る。さらに、システム７００は、１枚のボード上に、複数枚のボード上に、あるいは複数の筺体内に提供され得る。
【００６５】
システム７００は、処理ユニット７０２、メモリユニット７０４、および１つ以上のバスによって一緒に相互接続された入力／出力ユニット７０６を含む。この例示的な実施形態において、プログラマブルロジックデバイス（ＰＬＤ）７０８は、処理ユニット７０２に内蔵される。ＰＬＤ７０８は、図７のシステム内で、多数の異なる目的に役立ち得る。ＰＬＤ７０８は、例えば、処理ユニット７０２のロジック構築ブロックであり得、その内部および外部での動作をサポートし得る。ＰＬＤ７０８は、システム動作におけるその特定の役割を実行するために必要なロジカル機能をインプリメントするようにプログラムされる。ＰＬＤ７０８は、接続７１０を介してメモリ７０４に、接続７１２を介して入力／出力ユニット７０６に、特に結合され得る。
【００６６】
処理ユニット７０２は、処理またはストレージの適切なシステムコンポーネントにデータを導き得るか、メモリ７０４に格納されたプログラムを実行し得るか、または入力／出力ユニット７０６を介して送受信し得るか、他の同様な機能を行い得る。処理ユニット７０２は、中央演算処理装置（ＣＰＵ）、マイクロプロセッサ、フローティングポイントコ
プロセッサ、グラフィックコプロセッサ、ハードウェアコントローラ、マイクロコントローラ、コントローラとして使用するプログラマブルロジックデバイス、ネットワークコントローラなどであり得る。さらに、多くの実施形態において、ＣＰＵを必要としないことが多い。
【００６７】
例えば、ＣＰＵの代わりに、１つ以上のＰＬＤ７０８は、システムのロジカル動作を制御し得る。実施形態において、ＰＬＤ７０８は、必要に応じて、特定の計算タスクを扱うように再プログラミングされ得る再構成可能プロセッサとして機能する。代替として、プログラマブルロジックデバイス７０８は、それ自身に内蔵されたマイクロプロセッサを含み得る。メモリユニット７０４は、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、固定またはフレキシブルディスク媒体、ＰＣカードフラッシュディスクメモリ、テープ、または他のストレージ手段、あるいはこれらのストレージ手段の組み合わせであり得る。
【００６８】
本発明の例示的な実施形態についての以上の記載は、例示および説明の目的で、提供されてきた。この記載は、網羅することも、本発明を記載された厳密な形態に制限することも意図されず、また、多くの改変およびバリエーションも、以上の教示を考慮すると可能である。実施形態は、本発明の原理およびその実際的なアプリケーションを最適に説明するために、選択され、記載されたので、当業者は、様々な実施形態で、検討された特定の用途に適するように様々な改変を加えて、本発明を最適に利用することができる。
【図面の簡単な説明】
【００６９】
【図１】プログラマブルデバイスに対する例示的な構成メモリおよび関連回路網を示す。
【図２】本発明の実施形態に従うプログラマブルデバイスに対する構成メモリの例を示す。
【図３】本発明の実施形態に従うソフトエラー検出ユニットおよび関連回路網の例を示す。
【図４】本発明の実施形態に従って、構成メモリ内のエラーを検出する方法の流れ図である。
【図５】本発明の実施形態に従って、構成メモリ内のエラーを検出する方法の別の流れ図である。
【図６】本発明の実施形態を組み込むことによって改善されるプログラマブルロジックデバイスの簡略化したブロック図である。
【図７】本発明の実施形態を組み込むことによって改善される電子システムのブロック図である。
【符号の説明】
【００７０】
１００  プログラマブルデバイス
１１０、２１０、２４０  ＣＲＡＭアレイ
１２０、２２０  アドレスレジスタ
１３０、２３０  データレジスタ
１４０  構成デバイス
３００  ＦＰＧＡ
３１０  構成コントローラ
３２０  エラー補正コードユニット
３３０  感度プロセッサ
３４０  エラーログ
３５０  感度データデータベース
３６０  外部構成デバイス
【図１】
2007293856.tif 000003
【図２】
2007293856.tif 000004
【図３】
2007293856.tif 000005
【図４】
2007293856.tif 000006
【図５】
2007293856.tif 000007
【図６】
2007293856.tif 000008
【図７】
2007293856.tif 000009