"ソフトエラーを緩和するためのシステムであって、プログラマブルロジックおよび相互接続リソースと、設定メモリとを含むプログラマブル集積回路を備え、前記プログラマブルロジックおよび相互接続リソースは、前記設定メモリに記憶された設定データに応じてユーザ設計を実行し、前記システムは、前記プログラマブル集積回路に結合される不揮発性メモリをさらに備え、前記不揮発性メモリは、前記ユーザ設計のための前記設定データを記憶し、前記ユーザ設計は、三重冗長ソフトエラーマネジメント回路を含み、前記三重冗長ソフトエラーマネジメント回路は、エラー検出コードを用いて前記設定メモリ内の複数の記憶ビットのうちの破損した1つにおける前記ソフトエラーを繰り返しチェックするチェック回路と、前記チェック回路に結合される分類回路とを有し、前記分類回路は、各記憶ビットに対して複数のクリティカリティクラスのうちの1つを特定するマップを用いて、前記チェック回路に応答して前記破損した記憶ビットの前記クリティカリティクラスを決定するように構成され、前記三重冗長ソフトエラーマネジメント回路は、前記クリティカリティクラスに関連した複数の緩和技術を開始するための、前記分類回路に結合される訂正回路をさらに有し、前記訂正回路は、前記分類回路によって決定された前記クリティカリティクラスに関連した前記緩和技術を開始するように構成される、システム。第1の前記緩和技術は、冗長なロジックへのフェイルオーバーを実行することを含み、第2の前記緩和技術は、前記設定メモリを再初期化することを含み、第3の前記緩和技術は、前記破損した記憶ビットを訂正することを含む、請求項1に記載のシステム。前記マップは、前記記憶ビットの1つおよび複数の状態の1つの各組み合わせに対する前記クリティカリティクラスのそれぞれの1つを特定し、前記分類回路は、前記破損した記憶ビットおよび前記分類回路の状態レジスタの前記状態の組み合わせに対して前記マップにおいて特定されるそれぞれの前記クリティカリティクラスを決定するようにさらに構成され、前記訂正回路は、それぞれの前記クリティカリティクラスの各々に関連した前記緩和技術を開始するようにさらに構成される、請求項1に記載のシステム。前記訂正回路は、前記破損した記憶ビットに対して前記マップにおいて特定された前記クリティカリティクラスに関連する前記緩和技術に応答して前記破損した記憶ビットを訂正するようにさらに構成され、前記訂正回路は、エラー訂正コードである前記エラー検出コードを用いて前記破損した記憶ビットを訂正するようにさらに構成される、請求項1~3のいずれか1項に記載のシステム。前記マップは、前記設定メモリ内に記憶される、請求項1~3のいずれか1項に記載のシステム。前記マップは、前記不揮発性メモリ内に記憶される、請求項1~3のいずれか1項に記載のシステム。前記チェック回路は、エラー検出および訂正コードを用いて前記記憶ビットを読み取るとともにチェックすることによって前記ソフトエラーを繰り返しチェックする、請求項1~3のいずれか1項に記載のシステム。設定メモリを含む集積回路におけるソフトエラーを緩和する方法であって、エラー検出コードを用いて前記設定メモリ内の複数の記憶ビットの破損した1つにおける前記ソフトエラーを繰り返しチェックするステップと、各記憶ビットに対する複数のクリティカリティクラスの1つを特定する記憶されたマップを用いて前記破損した記憶ビットのクリティカリティクラスを決定するステップと、複数の緩和技術の1つを開始するステップとを含み、開始された前記緩和技術は、前記破損した記憶ビットの前記クリティカリティクラスに関連する、方法。第1の前記緩和技術は、冗長なロジックへのフェイルオーバーを実行することを含み、第2の前記緩和技術は、前記設定メモリを再初期化することを含み、第3の前記緩和技術は、前記破損した記憶ビットを訂正することを含む、請求項8に記載の方法。第4の前記緩和技術は、前記ソフトエラーの通知を送信するとともに、前記破損した記憶ビットを訂正することを含み、第5の前記緩和技術は、前記ソフトエラーの通知を送信し、そうでなければ前記破損した記憶ビットを無視することを含む、請求項9に記載の方法。前記マップは、前記記憶ビットの1つおよび複数の状態の1つの各組み合わせに対するそれぞれの前記クリティカリティクラスの1つを特定し、前記設定するステップは、前記破損した記憶ビットおよび前記状態レジスタの状態の前記組み合わせに対して前記マップにおいて特定されたそれぞれの前記クリティカリティクラスを決定するステップを含み、前記開始するステップは、それぞれの前記クリティカリティクラスの各々に関連した前記緩和技術を開始するステップを含む、請求項8~10のいずれか1項に記載の方法。前記マップは、前記集積回路の外部のメモリに記憶される、請求項8~10のいずれか1項に記載の方法。前記マップは、前記集積回路内のメモリに記憶される、請求項8~10のいずれか1項に記載の方法。前記繰り返しチェックするステップは、エラー検出および訂正コードを用いて前記記憶ビットを繰り返し読み取るとともにチェックするステップを含む、請求項8~10のいずれか1項に記載の方法。通信製品であって、設定メモリを有する集積回路と、前記集積回路に結合され、エラー検出コードを用いて設定メモリ内の複数の記憶ビットの破損した1つにおけるソフトエラーを繰り返しチェックするチェック回路と、前記チェック回路に結合される分類回路とを備え、前記分類回路は、各記憶ビットに対して複数のクリティカリティクラスの1つを特定するマップを用いて、前記チェック回路に応答して前記破損した記憶ビットの前記クリティカリティクラスを決定するように構成され、前記通信製品は、前記クリティカリティクラスに関連した複数の緩和技術を開始するための、前記分類回路に結合される訂正回路をさらに備え、前記訂正回路は、前記分類回路によって決定された前記クリティカリティクラスに関連した前記緩和技術を開始するように構成される、通信製品。要約ソフトエラーを緩和するためのシステムは、プログラマブルロジックおよび相互接続リソースと、設定メモリとを含むプログラマブル集積回路を備え、プログラマブルロジックおよび相互接続リソースは、設定メモリに記憶された設定データに応じてユーザ設計を実行し、システムは、プログラマブル集積回路に結合される不揮発性メモリをさらに備える。不揮発性メモリは、ユーザ設計のための設定データを記憶する。ユーザ設計は、三重冗長ソフトエラーマネジメント回路を含み、三重冗長ソフトエラーマネジメント回路は、エラー検出コードを用いて設定メモリ内の複数の記憶ビットのうちの破損した1つにおけるソフトエラーを繰り返しチェックするチェック回路と、チェック回路に結合される分類回路とを有し、分類回路は、各記憶ビットに対して複数のクリティカリティクラスのうちの1つを特定するマップを用いて、チェック回路に応答して破損した記憶ビットのクリティカリティクラスを決定するように構成され、三重冗長ソフトエラーマネジメント回路は、クリティカリティクラスに関連した複数の緩和技術を開始するための、分類回路に結合される訂正回路をさらに有し、訂正回路は、分類回路によって決定されたクリティカリティクラスに関連した緩和技術を開始するように構成される。いくつかの実施の形態においては、第1の緩和技術は、冗長なロジックへのフェイルオーバーを実行することを含み、第2の緩和技術は、設定メモリを再初期化することを含み、第3の緩和技術は、破損した記憶ビットを訂正することを含む。マップは、記憶ビットの1つおよび複数の状態の1つの各組み合わせに対するクリティカリティクラスのそれぞれの1つを特定し得る。分類回路は、破損した記憶ビットおよび分類回路の状態レジスタの状態の組み合わせに対してマップにおいて特定されるそれぞれのクリティカリティクラスを決定するようにさらに構成され得る。訂正回路は、それぞれのクリティカリティクラスの各々に関連した緩和技術を開始するようにさらに構成され得る。訂正回路は、破損した記憶ビットに対してマップにおいて特定されたクリティカリティクラスに関連する緩和技術に応答して破損した記憶ビットを訂正するようにさらに構成され得る。訂正回路は、エラー訂正コードであるエラー検出コードを用いて破損した記憶ビットを訂正するようにさらに構成され得る。マップは、たとえば、設定メモリ内、または不揮発性メモリ内に記憶され得る。チェック回路は、エラー検出および訂正コードを用いて記憶ビットを読み取るとともにチェックすることによってソフトエラーを繰り返しチェックし得る。もう1つの実施の形態においては、設定メモリを含む集積回路におけるソフトエラーを緩和する方法は、エラー検出コードを用いて設定メモリ内の複数の記憶ビットの破損した1つにおけるソフトエラーを繰り返しチェックするステップと、各記憶ビットに対する複数のクリティカリティクラスの1つを特定する記憶されたマップを用いて破損した記憶ビットのクリティカリティクラスを決定するステップと、複数の緩和技術の1つを開始するステップとを含み、開始された緩和技術は、破損した記憶ビットのクリティカリティクラスに関連する。第1の緩和技術は、冗長なロジックへのフェイルオーバーを実行することを含み得るとともに、第2の緩和技術は、設定メモリを再初期化することを含み得るとともに、第3の緩和技術は、破損した記憶ビットを訂正することを含み得る。第4の緩和技術は、ソフトエラーの通知を送信するとともに、破損した記憶ビットを訂正することを含み得るとともに、第5の緩和技術は、ソフトエラーの通知を送信し、そうでなければ破損した記憶ビットを無視することを含み得る。マップは、記憶ビットの1つおよび複数の状態の1つの各組み合わせに対するそれぞれのクリティカリティクラスの1つを特定し得る。設定するステップは、破損した記憶ビットおよび状態レジスタの状態の組み合わせに対してマップにおいて特定されたそれぞれのクリティカリティクラスを決定するステップを含み得る。開始するステップは、それぞれのクリティカリティクラスの各々に関連した緩和技術を開始するステップを含み得る。マップは、集積回路の外部のメモリ、または集積回路内のメモリに記憶され得る。チェック回路は、エラー検出および訂正コードを用いて記憶ビットを読み取るとともにチェックすることによってソフトエラーを繰り返しチェックし得る。さらにもう1つの実施の形態においては、通信製品は、設定メモリを有する集積回路と、集積回路に結合され、エラー検出コードを用いて設定メモリ内の複数の記憶ビットの破損した1つにおけるソフトエラーを繰り返しチェックするチェック回路と、チェック回路に結合される分類回路とを備え、分類回路は、各記憶ビットに対して複数のクリティカリティクラスの1つを特定するマップを用いて、チェック回路に応答して破損した記憶ビットのクリティカリティクラスを決定するように構成され、通信製品は、クリティカリティクラスに関連した複数の緩和技術を開始するための、分類回路に結合される訂正回路をさらに備える。訂正回路は、分類回路によって決定されたクリティカリティクラスに関連した緩和技術を開始するように構成される。もう1つの実施の形態においては、方法は、集積回路におけるソフトエラーを緩和するために提供される。マップは、メモリに記憶され、上記マップは、集積回路における各記憶ビットに対するクリティカリティクラスを特定する。緩和技術は、各クリティカリティクラスに関連する。ソフトエラーは、記憶ビットの破損した1つにおいて検出される。破損した記憶ビットに対してマップにおいて特定されたクリティカリティクラスに関連する緩和技術が実行される。もう1つの実施の形態においては、方法は、プログラマブル集積回路の設定メモリにおけるソフトエラーを緩和するために提供される。クリティカリティクラスは、ユーザ設計の設計記述designdescriptionの各コードブロックに対して指定される。緩和技術は、各クリティカリティクラスに関連する。仕様specificationは、設計記述から統合synthesizedされる。統合された仕様は、プログラマブル集積回路のプログラマブルロジックおよび相互接続リソースにおけるユーザ設計の実行を特定する。仕様は、各コードブロックのクリティカリティクラスが、実行においてコードブロックを実行するプログラマブルロジックおよび相互接続リソースのサブセットのクリティカリティクラスであることを特定する。マップは、仕様から生成される。設定メモリの記憶ビットは、プログラマブルロジックおよび相互接続リソースを構成する。マップは、各コードブロックを実行するサブセットのクリティカリティクラスが、サブセットにおいてプログラマブルロジックおよび相互接続リソースを構成する各記憶ビットのクリティカリティクラスであることを特定する。上記マップは、記憶される。ソフトエラーは、記憶ビットの破損した1つにおいて検出される。破損した記憶ビットに対してマップにおいて特定されたクリティカリティクラスに関連する緩和技術が実行される。さらにもう1つの実施の形態においては、ソフトエラーを緩和するためのシステムが提供される。システムは、プログラマブル集積回路と、不揮発性メモリとを備える。プログラマブル集積回路は、プログラマブルロジックおよび相互接続リソースと、設定メモリとを含む。プログラマブルロジックおよび相互接続リソースは、設定メモリに記憶された設定データに応じてユーザ設計を実行する。不揮発性メモリは、ユーザ設計のための設定データを記憶する。ユーザ設計は、三重冗長ソフトエラーマネジメント回路を含む。上記ソフトエラーマネジメント回路は、チェック回路と、分類回路と、訂正回路とを有する。チェック回路は、エラー検出コードを用いて設定メモリ内の複数の記憶ビットのうちの破損した1つにおけるソフトエラーを繰り返しチェックする。分類回路は、各記憶ビットに対して複数のクリティカリティクラスのうちの1つを特定するマップを用いて、チェック回路に応答して破損した記憶ビットのクリティカリティクラスを決定する。訂正回路は、クリティカリティクラスに関連した緩和技術を開始し、上記訂正回路は、破損した記憶ビットに対してマップにおいて特定されたクリティカリティクラスに関連した緩和技術を開始する。様々な他の実施の形態が以下の詳細な説明および特許請求の範囲に記載されていることが理解されるであろう。開示された実施の形態の様々な局面および利点は、以下の詳細な説明の検討および図面への参照によって明らかになるであろう。詳細な説明図1は、集積回路におけるソフトエラーを緩和するためのプロセスのフローチャートである。あり得るソフトエラーは、クリティカリティクラスに分離され、検出された各ソフトエラーのクリティカリティクラスに基づいて適当な緩和技術が選択されるとともに実行される。いくつかの検出されたソフトエラーは、集積回路の全リセットよりも厳しくない緩和技術で扱われるので、複数のソフトエラーの緩和に必要とされるダウン時間が低減される。1つの実施の形態においては、ブロック102~116の1つ以上のプロセスは、所望の動作を実行するように特別に適合されたソフトウェアを実行する1つ以上のプロセッサによって実行される。ブロック102,106は、任意的である。なぜなら、クリティカリティクラスは、ブロック104の統合前にブロック102において、またはブロック104の統合後にブロック106において、指定され得るからである。図1に示される他のブロックは、いくつかの実施の形態においても任意的であり得る。図1は、単なる1つの例示的な実施の形態を詳細に説明することが意図される。ブロック102においては、クリティカリティクラスは、ユーザ設計の設計記述の各コードブロックに対して指定される。1つの実施の形態においては、回路設計者は、ハードウェア記述言語で設計記述を特定し、回路設計者は、たとえばプラグマpragmasなどの1つ以上の指令を設計記述に挿入して、各コードブロックのクリティカリティクラスを宣言する。プラグマという用語は、明細書の以下の部分において用いられ、一般に指令を指すことが意図される。1つの実施の形態においては、設計記述は、ブロックのインスタンスの階層を含み、プラグマは、階層における個別のインスタンスへのクリティカリティクラスを割り当て得る。各コードブロックは、階層におけるコードブロックを含む第1のインスタンスのクリティカリティクラス、またはそのような包括的なインスタンスがない場合のデフォルトクリティカリティクラスを有する。もう1つの例においては、プラグマは、ブロックのインスタンスの全てが同一のクリティカリティクラスを有するように、階層におけるブロックのクリティカリティクラスを特定する。さらにもう1つの例においては、プラグマは、各コードブロックの範囲を明示的に特定するコメントであり、コードブロックは、後続の設計記述のクリティカリティクラスを特定する開始コメントとともに始まるコードブロック、および任意の終了コードブロックのクリティカリティクラスを再開する終了コメントとともに終わるコードブロックを有する。この例においては、プラグマは、設計記述における単一のステートメントの細かさgranularityでコードブロックを特定する。ブロック104において、集積回路の仕様は、設計記述から統合される。1つの実施の形態においては、仕様は、ユーザ設計を実行する基本ゲートelementarygateのネットリストを特定する。もう1つの実施の形態においては、仕様は、集積回路における基本ゲートの配置、および基本ゲート間の相互接続のルーティングを追加的に特定する。プログラマブル集積回路におけるユーザ設計の1つの実行例について、仕様は、各基本ゲートを実行する具体的なプログラマブルロジックリソース、および実行された基本ゲート間の相互接続を実行する具体的なプログラマブル相互接続リソースを特定する。ブロック102にてクリティカリティクラスを特定する実施の形態においては、クリティカリティクラスは、ブロック104にて統合される仕様に保存される。1つの例においては、各記憶ビットは、記憶ビットが実行を助けるコードブロックのクリティカリティクラスを受け継ぐ。したがって、仕様は、記憶ビットが統合されるコードブロックのクリティカリティクラスである、各記憶ビットのクリティカリティクラスを特定する。1つの実施の形態においては、異なるクリティカリティクラスを有する複数のコードブロックによって規定される記憶ビットは、これらのコードブロックに対する最も厳しいクリティカリティクラスが割り当てられる。プログラマブル集積回路におけるユーザ設計の実行例について、各プログラマブルロジックおよび相互接続リソースは、プログラマブルリソースが実行を助けるコードブロックのクリティカリティクラスを受け継ぐ。さらに、各設定記憶ビットは、プログラマブルリソースを設定し、設定ビットのクリティカリティクラスは、プログラマブルリソースのクリティカリティクラスである。ブロック106において、統合された仕様は部分に分けられ、各部分は、クリティカリティクラスが割り当てられる。1つの実施の形態においては、統合されたネットリストにおける各基本ゲートは、クリティカリティクラスが割り当てられる。もう1つの実施の形態においては、ネットリストのグラフィック描画は様々な部分にグラフィカルに分けられ、クリティカリティクラスの1つは各部分へ割り当てられる。プログラマブル集積回路において実行されるユーザ設計のためのさらにもう1つの実施の形態においては、グラフィカルレイアウトは、プログラマブル集積回路のプログラマブルロジックおよび相互接続リソースにおいて実行されるユーザ設計を表わし、グラフィカルレイアウトは、各々にクリティカリティクラスが割り当てられる部分にグラフィカルに分けられる。ある実施の形態においては、ブロック102にて指定されたクリティカリティクラスは、ブロック106にて修正される。したがって、任意的なブロック102,106は、相互排他的ではない。1つの実施の形態においては、ブロック104の統合は、ブロック102にて指定されたコードブロックを、ブロック106にて修正され得る対応する部分にマッピングする。もう1つの実施の形態においては、ブロック106の部分は、プログラマブル集積回路のプログラマブルロジックおよび相互接続リソースであり、各個別のプログラマブルリソースのクリティカリティクラスは、ブロック106にて特定または修正され得る。1つの実施の形態においては、クリティカリティクラスは、記憶ビットのグループまたはフレームへ割り当てられる。あるプログラマブル相互接続回路においてユーザ設計を実行するためには、設定データのフレームは、プログラマブル集積回路の設定メモリを設定し、設定データの各フレームは、設定メモリにおける記憶ビットの対応するフレームを初期化する。各フレームにおける記憶ビットは、異なるクリティカリティクラスを有し得るが、記憶ビットのフレームの全体のクリティカリティクラスは、フレームにおける個別の記憶ビットの最も厳しいクリティカリティクラスである。フレームにおけるある記憶ビットは、必要であるよりも厳しいクリティカリティクラスが割り当てられ得るが、クリティカリティクラスを特定するデータは、劇的に低減される。なぜなら、記憶ビットごとに1つのクリティカリティクラスが特定される代わりに、フレームごとに1つのクリティカリティクラスが特定されるからである。したがって、任意的なブロック108において、各フレームに対してクリティカリティクラスが決定され、このクリティカリティクラスは、フレームにおける記憶ビットが統合されるコードブロックのクリティカリティクラスの厳しい1つである。いくつかの記憶ビットに必要であるよりも厳しいクリティカリティクラスを与えることのインパクトを低減するために、仕様は、ブロック104にて統合されて、異なる設定フレームに対するプログラマブルリソースにおいて異なるクリティカリティクラスでコードブロックを優先的に実行し得る。異なるクリティカリティクラスを有するコードブロックが、単一の設定フレームにおいて一緒にまとめられなければならないときは、まとめられたクリティカリティクラスは、優先的に類似する厳しさを有する。ブロック110にて、マップは、統合された仕様から生成され、マップは、集積回路における各記憶ビットのクリティカリティクラスを特定する。1つの実施の形態においては、マップは、各記憶ビットのクリティカリティクラスが、記憶ビットが統合されるコードブロックのクリティカリティクラスであることを特定する。もう1つの実施の形態においては、各記憶ビットのクリティカリティクラスは、ブロック108にて決定されたように、記憶ビットを含むフレームのクリティカリティクラスである。ブロック112にて、マップは、集積回路内のメモリまたは集積回路外のメモリのようなメモリに記憶される。1つの実施の形態においては、テーブルは、記憶ビットのアドレスによってインデックスを付けられて記憶され、テーブルは、記憶ビットのアドレスにて各記憶ビットのクリティカリティクラスを含む。プログラマブル集積回路におけるユーザ設計の実行例について、各設定記憶ビットに対するアドレスは、設定記憶ビットを含むフレームのアドレスを含む。ブロック114にて、ソフトエラーは、破損した記憶ビットにおいて検出され、アドレスは、破損した記憶ビットに対して決定される。1つの実施の形態においては、チェッカは、記憶ビットのグループまたはフレームを繰り返し読み取るとともに、エラー検出コードを用いてそれらをチェックし、チェッカは、破損した記憶ビットを含むグループまたはフレームのアドレスを、場合によっては、フレームにおいて破損した具体的な記憶ビットのオフセットアドレスを決定する。ブロック116にて、記憶されたマップにおいて破損した記憶ビットに対して特定されたクリティカリティクラスと関連する緩和技術が実行される。1つの実施の形態においては、マップは、記憶ビットのアドレスによってインデックスを付されたテーブルであり、クリティカリティクラスは、破損した記憶ビットのアドレスにてテーブルから読み取られる。記憶ビットは、各記憶ビットの破損の結果の厳しさに従って、様々なクリティカリティクラスへ分類される。各緩和技術は、各クリティカリティクラスと関連する。1つの実施の形態においては、緩和技術は、ソフトエラーの通知を送信すること、またはソフトエラーを特定する情報の記録を取ることである。そのような緩和技術は、冗長なロジックへのフェイルオーバーを実行し、続いて破損した記憶ビットを訂正するもの、いくつかまたは全ての記憶ビットをバックアップ状態から再初期化するもの、破損した記憶ビットを訂正して、集積回路をリセットするもの、破損した記憶ビットを訂正して、破損した記憶ビットを生成するコードブロックに対応する集積回路の一部をリセットするもの、またはいかなるリセットも行うことなく破損した記憶ビットを訂正するもののような様々なエラー訂正技術と組み合わせられ得る。記憶ビットの破損がいかなる有害な結果も引き起こさない場合は、緩和技術は、破損した記憶ビットを完全に無視し得る、または単にこのソフトエラーを特定する情報の記録を取り得る。破損した記憶ビットの訂正は、1つの実施の形態におけるエラー検出および訂正コードを用いて遂行される。図2は、ソフトエラーを緩和するように構成可能なプログラマブル集積回路の一例のブロック図である。先に説明されたように、ソフトエラーを緩和するためのシステムは、プログラマブル集積回路のプログラマブルロジックおよび相互接続リソースにおいて実行され得る。FPGAは、1つの配列の中にいくつかの異なるタイプのプログラマブルロジックブロックを含み得る。たとえば、図2は、多数の異なるプログラマブルタイルprogrammabletileを含むFPGA構造200を説明する。多数の異なるプログラマブルタイルは、マルチギガビットトランシーバmultigigabittransceiver:MGT201と、コンフィギュラブルロジックブロックconfigurablelogicblock:CLB202と、ランダムアクセスメモリブロックrandomaccessmemoryblock:BRAM203と、入出力ブロックinputoutputblock:IOB204と、設定およびクロッキングロジックCONFIGCLOCK205と、デジタルシグナルプロセッシングブロックdigitalsignalprocessingblock:DSP206と、たとえばクロックポートなどの特別な入出力ブロックspecializedinputoutputblock:I/O207と、デジタルクロックマネージャ、アナログ-デジタルコンバータ、システムモニタリングロジックなどのような他のプログラマブルロジック208とを含む。いくつかのFPGAは、専用のプロセッサブロックdedicatedprocessorblock:PROC、内部再設定ポート、および外部再設定ポート図示せずも含む。いくつかのFPGAにおいては、各プログラマブルタイルは、各隣接するタイルにおいて対応する相互接続要素への、および対応する相互接続要素からの標準化された接続を有するプログラマブル相互接続要素programmableinterconnectelement:INT211を含む。したがって、総合すれば、プログラマブル相互接続要素は、図示されたFPGAに対するプログラマブル相互接続構造を実現する。図2の上部に含まれる例によって示されるように、プログラマブル相互接続要素INT211は、同一のタイル内のプログラマブルロジック要素への、およびプログラマブルロジック要素からの接続も含む。たとえば、CLB202は、単一のプログラマブル相互接続要素INT211をユーザロジックに加えて実行するようにプログラムされ得るコンフィギュラブルロジック要素configurablelogicelement:CLE212を含み得る。BRAM203は、1つ以上のプログラマブル相互接続要素に加えて、BRAMロジック要素BRAMlogicelement:BRL213を含み得る。典型的には、タイルに含まれる相互接続要素の数は、タイルの高さに従う。図示された実施の形態においては、BRAMタイルは、5つのCLBと同一の高さを有するが、他の数たとえば、4つも用いられ得る。DSPタイル206は、適当な数のプログラマブル相互接続要素に加えて、DSPロジック要素DSPlogicelement:DSPL214を含み得る。IOB204は、たとえば、プログラマブル相互接続要素INT211の1つのインスタンスに加えて、入出力ロジック要素inputoutputlogicelement:IOL215の2つのインスタンスを含み得る。当業者に明らかなように、たとえばI/Oロジック要素215へ接続される実際のI/Oパッドは、様々な図示されたロジックブロックの上に積層された金属を用いて製造され、典型的には、入出力ロジック要素215の領域に限定されない。図示された実施の形態においては、ダイの中心の近くのコラム状の領域図2において影で示されるは、設定、クロック、および他の制御ロジックのために用いられる。このコラム状の領域から伸びる水平な領域209は、FPGAの幅に亘ってクロック信号および設定信号を分配するように用いられる。図2に説明される構造を利用するいくつかのFPGAは、FPGAの大部分を作る通常のコラム状の構造を分断する追加的なロジックブロックを含む。追加的なロジックブロックは、プログラマブルブロックおよび/または専用のロジックとされ得る。たとえば、図2に示されるプロセッサブロックprocessorblock:PROC210は、CLBおよびBRAMのいくつかのコラムに及ぶ。図2は単に例示的なFPGA構造を説明することが意図されることに留意すべきである。コラムにおけるロジックブロックの数、コラムの相対幅、コラムの数および順序、コラムに含まれるロジックブロックのタイプ、ロジックブロックの相対サイズ、および図2の上部に含まれる相互接続/ロジックの実行例は、単に例示的である。たとえば、実際のFPGAにおいては、CLBの1つよりも多い隣接するコラムは、典型的には、CLBが現れるところのどこにでも含まれ、ユーザロジックの効果的な実行を容易にする。図3は、プログラマブル集積回路302の設定メモリにおけるソフトエラーを緩和するためのシステムのブロック図である。プログラマブル集積回路302は、不揮発性メモリ306からの設定データ304を持つユーザ設計を実行するように構成される。プログラマブル集積回路302は、プログラマブルロジックリソース308,310~312,314,316~318と、プログラマブル相互接続リソース320,322~324,326,328~330と含む。プログラマブルリソース308,310~312,320,322~324は、設定メモリのフレーム332内の記憶ビットによって設定される。同様に、プログラマブルリソース314,316~318,326,328~330は、設定メモリフレームconfigurationmemoryframe:CMF334内の記憶ビットによって設定される。ユーザ設計を実行するプログラマブル集積回路302の設定の間に、設定メモリフレーム332~334は、不揮発性メモリ306に記憶された設定データ304の対応するフレームを有する設定ポート336を介して初期化される。不揮発性メモリ306は、ユーザ設計のための設定データ304を記憶する。設定データ304は、ソフトエラーマネージャ338およびユーザ設計のコードブロック340~342を実行するための設定データを含む。関連するコードブロック340~342は、クリティカリティクラスを指定される。コードブロック340を実行するプログラマブルリソース308,310~312,314,316~318,320,322~324,326,328~330のサブセットは、コードブロック340の指定されたクリティカリティクラス有し、プログラマブルリソースのこのサブセットを設定する設定メモリフレーム332~334からの記憶ビットも、コードブロック340の指定されたクリティカリティクラスを有する。同様に、プログラマブルリソース308,310~312,314,316~318,320,322~324,326,328~330を設定して、コードブロック342を実行する設定メモリフレーム332~334内の記憶ビットは、コードブロック342の指定されたクリティカリティクラスを有する。1つの実施の形態においては、設定データ304において特定されたソフトエラーマネージャ338は、厳しいクリティカリティクラスを有し、関連する緩和技術は、設定データ304を有するプログラマブル集積回路302の再設定を含み、続いて、プログラマブル集積回路302がリセットされる。もう1つの実施の形態においては、設定データ304において特定されたソフトエラーマネージャ338は、プログラマブルリソース308,310~312,314,316~318,320,322~324,326,328~330を設定してソフトエラーマネージャ338を実行する、設定メモリフレーム332~334内の記憶ビットを破損するソフトエラーからの深刻な結果を防止するための三層冗長である。三重冗長ソフトエラーマネージャ338は、投票回路votingcircuitおよび3つのコピー、または設定データ304において特定される回路344,346,348のような各ロジック回路のインスタンスを含む。回路の1つのインスタンスの出力は回路の他の2つのインスタンスの出力に一致しないが、他の2つのインスタンスの出力が一致するときに、投票回路は、一致する2つのインスタンスから一致する出力を選ぶ。したがって、回路の1つのインスタンスへ限定されるフェイルは、3重冗長ソフトエラーマネージャに影響しない。さらに、投票回路は、ソフトエラーマネージャを冗長投票回路における多数のフェイルによって影響されないように保持する冗長投票回路とされ得る。設定データ304において特定されるソフトエラーマネージャ338は、1つの実施の形態におけるチェック回路344、分類回路346、および訂正回路348のための設定データを含む。設定データ304において特定されるチェック回路344は、エラー検出コードを用いて設定メモリフレーム332,334内の記憶ビットを破損するソフトエラーを繰り返しチェックする。設定データ304において特定される分類回路346は、各記憶ビットに対するクリティカリティクラスを特定するマップテーブル350または352を用いて破損した記憶ビットのクリティカリティクラスを決定する。設定データ304において特定される訂正回路348は、マップテーブル350または352において破損した記憶ビットに対して特定されたクリティカリティクラスに関連する緩和技術を選択するとともに開始する。特定の訂正回路348は、たとえば、エラー訂正コードを用いて破損した記憶ビットを訂正する。1つの実施の形態においては、エラー訂正コードは、特定のチェック回路344のエラー検出コードでもある。1つの実施の形態においては、プログラマブル集積回路302は、設定メモリフレーム332~334の破損をチェックする専用のプログラマブルチェッカロジックリソースprogrammablecheckerlogicresource:CC354を含む。この実施の形態においては、設定データ304は、専用のチェッカリソース354における特定のチェック回路344を実行するための設定データを含む。この設定データは、設定メモリフレーム332~334に亘る周期的な冗長チェックの期待値を含み、またはエラー検出コードを用いた設定メモリフレーム332~334の連続的なチェックを可能とする。設定メモリフレーム332~334の各々は、プログラマブルリソース308,310~312,314,316~318,320,322~324,326,328~330を設定しない追加的な記憶ビットを含み、これらの追加的な記憶ビットは、エラー検出コードのチェックビットを記憶するために専用とされ得る。その設定に従って、チェッカリソース354は、周期的な冗長チェックおよび/またはエラー検出コードを用いて設定メモリフレーム332~334を連続的にチェックし得る。専用のプログラマブルチェッカリソース354を有するこの実施の形態においては、特定の分類回路346および特定の訂正回路348は、プログラマブルリソース308,310~312,314,316~318,320,322~324,326,328~330のサブセットにおいて実行される。特定の分類回路346および特定の訂正回路348を実行するための設定メモリフレーム332~334の部分の破損のインパクトを制限するために、特定の分類回路346および特定の訂正回路348は、三重冗長回路とされ得る。1つの実施の形態においては、プログラマブル集積回路302における特定の分類回路346の実行は、不揮発性メモリ306内のマップテーブル352にアクセスして、特定のチェック回路344によって検出されたソフトエラーのクリティカリティクラスを決定する。特定の分類回路346は、特定のチェック回路344からの破損した記憶ビットのアドレスを用いてマップテーブル352にインデックスを付する。マップテーブル352は、設定メモリフレーム332~334に対する各マスク356~358を含む。ソフトエラーの検出時に、特定のチェック回路344は、破損した記憶ビットに対するフレームアドレス、およびフレーム内の破損した記憶ビットのオフセットアドレス、またはフレーム内のどの記憶ビットが破損したのかを示すベクトルを提供する。特定の分類回路346は、マップテーブル352からフレームアドレスに対するマスクを読み取る。特定の分類回路346がこのマスクのオフセットアドレスにてクリティカリティクラスを選択するか、または特定の分類回路346がベクトルでこのマスクをマスクして、クリティカリティクラスを決定する。2つのクリティカリティクラスを有する例について、特定の分類回路346は、非ゼロマスキング結果に対して厳しいクリティカリティクラスを選択し、ゼロのマスキング結果に対して他のクリティカリティクラスを選択する。特定の訂正回路348は、選択されたクリティカリティクラスに関連する緩和技術を実行する。もう1つの実施の形態においては、マップテーブルは、ソフトエラーを緩和するためのシステム内のもう1つのメモリ図示せずにおいて記憶される。さらにもう1つの実施の形態においては、マップテーブル350は、ユーザ設計のための設定データ304内に記憶される。ユーザ設計の実行の仕様は、ユーザ設計の設計記述から統合される。ユーザ設計の設計記述は、マップテーブルを特定し、マップテーブルに対する初期化されていない内容を特定するソフトエラーマネージャを含む。統合された仕様は、図2の1つ以上のBRAM203のようなプログラマブル集積回路302の1つ以上のメモリにおいて初期化されていないマップテーブルを実行する。マップテーブルに含まれるクリティカリティクラスは、統合された仕様から生成される。設定データ304は、統合された仕様からも生成され、これは、生成されたクリティカリティクラスをマップテーブル350に統合することを含む。したがって、プログラマブル集積回路320が設定データ304で設定されるときに、プログラマブル集積回路302のあるメモリは、マップテーブル350から指定されたクリティカリティクラスで初期化される。設定メモリフレーム332~334内の記憶ビットは、各記憶ビットの破損の結果の厳しさに従って、様々なクリティカリティクラスへ分類される。各緩和技術は、各クリティカリティクラスに関連する。1つの実施の形態においては、緩和技術は、ソフトエラーの通知を送信すること、またはソフトエラーを特定する情報の記録を取ることである。また、そのような緩和技術は、プログラマブルリソース308,310,312,314,316,318,320,322,324,326,328~330を再設定するために設定メモリフレーム332~334を再初期化し、それから、プログラマブル集積回路302をリセットすること、破損した記憶ビットに対応するコードブロックに対するプログラマブルロジックおよび相互接続リソースを設定する各設定メモリフレーム332~334を再初期化し、それから、プログラマブル集積回路をリセットすること、破損した記憶ビットを訂正して、破損した記憶ビットに対応するコードブロックに対するプログラマブルロジックおよび相互接続リソースをリセットすること、および破損した記憶ビットを単に訂正することのような様々な訂正技術と組み合わせられ得る。1つの実施の形態においては、分類回路346に対する設定データ304は、プログラマブルリソース308,310,312,314,316,318,320,322,324,326,328~330における特定の分類回路346とともに実行される状態レジスタ360を含む。代替的には、コードブロック340は、状態レジスタを含む。1つの実施の形態においては、コードブロック342は、通常は、厳しいクリティカリティクラスを有し、状態レジスタ360は、コードブロック342がクリティカルデータ上で動作しないときを示す。特定のチェック回路344がソフトエラーを検出したときに、特定の分類回路346は、状態レジスタ360の現在の値が与えられるソフトエラーに対する適当なクリティカリティクラスを決定する。1つの実施の形態においては、マップテーブル350または352は、メモリフレーム332~334内の記憶ビット設定の1つおよび状態レジスタ360の各可能な状態の各組み合わせに対する各クリティカリティクラスを特定する。分類回路は、破損した記憶ビットおよび状態レジスタ360の現在の状態の組み合わせに対してマップテーブル350または352における特定のクリティカリティクラスを決定する。たとえば、破損した記憶ビットがクリティカルデータ上で現在動作しているプログラマブルリソースを設定することを、状態レジスタ360の現在の状態が示す場合、分類回路は、クリティカリティクラスが厳しいと決定する。破損した記憶ビットがアイドルまたはクリティカルデータ上で現在動作していないプログラマブルリソースを設定することを、状態レジスタ360の現在の状態が示す場合、分類回路は、クリティカリティクラスが厳しくないと決定する。1つの実施の形態においては、破損した記憶ビットのアドレスは、マップテーブル352におけるマスク356~358のうちの1つを選択し、状態レジスタ360の現在の値は、選択されたマスクに埋め込まれた適当なクリティカリティクラスを選択する。1つの実施の形態には、1つよりも多い状態レジスタがある。1つの例において、マップテーブル350または352は、メモリフレーム332~334内の設定内の各記憶ビットに対する識別値を含み、識別値は、状態レジスタ360または他の状態レジスタを選択する。プラグマは、各コードブロック340~342に関連する状態レジスタ、および状態レジスタの可能な値に対するクリティカリティクラスを特定する。特定のチェック回路344がソフトエラーを検出したときに、特定の分類回路346は、ソフトエラーによって影響されるコードブロックの現在の動作状態に対する適当なクリティカリティクラスを決定し得る。本発明の実施の形態は、集積回路におけるソフトエラーを緩和するための様々な方法およびシステムに利用可能であると考えられる。他の局面および実施の形態は、明細書の考慮および本明細書に開示された実施の形態の実行から当業者に明らかになるであろう。実施の形態は、ソフトウェアを実行するように構成された1つ以上のプロセッサとして、特定用途向け集積回路applicationspecificintegratedcircuit:ASICとして、またはプログラマブル論理回路programmablelogicdevice上のロジックとして実行され得る。明細書および説明された実施の形態は、単なる例示であると考慮され、本発明の本当の範囲は、以下の特許請求の範囲によって示されることが意図される。"