(57)【要約】【課題】フィールド・プログラム可能ゲート・アレイを構成するためのより高速な技術を提供し、構成プロセス中に設計を十分に保障するための方式をユーザーに提供する。【解決手段】揮発性と不揮発性プログラム可能ロジックを１つの集積回路（ＩＣ）に結合する。ＩＣは２つの部分に分離される。プログラム可能ロジックの第１のブロックは、オン・チップ不揮発性メモリに記憶されているビットによって構成され、第２のブロックはオフ・チップ・メモリに記憶されているビットによって構成される。ＩＣ上のＩＯバンクの機能がＩＣの２つのロジック・ブロックの間で多重化される。第１のブロック内のプログラム可能ロジックは、第２のブロック内のプログラム可能ロジックを構成することができる時間のごく僅かで動作状態になる。第１のブロック内のプログラム可能ロジックは十分に速く構成できかつ十分に独立性を持って第２のブロックの構成を支援している。【選択図】図１
2006166430.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリ・ブロックと、
前記不揮発性メモリ・ブロック内に記憶された構成データによって構成されるプログラム可能ロジックの第１のブロックと、
イン・システム構成インターフェースと、
前記イン・システム構成インターフェースを通して第２のプログラム可能ロジック・ブロックにロードされる外部構成データにより構成されるプログラム可能ロジックの第２のブロックと
を備える集積回路。
【請求項２】
前記プログラム可能ロジックの第２のブロックが、前記プログラム可能ロジックの第１のブロックを通して構成データを転送することによってプログラムされる請求項１に記載の集積回路。
【請求項３】
第１のパワー・オン・リセット回路と、
前記第１のパワー・オン・リセット回路、前記不揮発性メモリ・ブロック、前記プログラム可能ロジックの第１のブロックに接続されたパワー・オン・リセット構成ブロックをさらに備え、
電源電圧が所定の値に達したことを前記第１のパワー・オン・リセット回路が示したときに、前記パワー・オン・リセット構成ブロックが、構成データを前記不揮発性メモリ・ブロックから前記プログラム可能ロジックの第１のブロックへ転送する請求項１に記載の集積回路。
【請求項４】
前記パワー・オン・リセット構成ブロックに接続された第２のパワー・オン・リセット回路をさらに備え、
電源電圧が所定の値に達したことを前記第２のパワー・オン・リセット回路が示したときに、前記パワー・オン・リセット構成ブロックが、構成データを外部メモリから前記プログラム可能ロジックの第２のブロックに転送する請求項３に記載の集積回路。
【請求項５】
前記第１又は第２のパワー・オン・リセット回路と集積回路の同じ部分に存在する新たなパワー・オン・リセット回路をさらに含む請求項４に記載の集積回路。
【請求項６】
第１のＩ／Ｏブロックと、
前記第１のＩ／Ｏブロックに接続された第１の入力端子、前記プログラム可能ロジックの第１のブロックに接続された第２の入力端子、イン・システム構成インターフェースに接続された出力端子、前記プログラム可能ロジックの第１のブロックに接続された選択入力を有する第１のマルチプレクサとを備える請求項１に記載の集積回路。
【請求項７】
第２のＩ／Ｏブロックと、
前記第２のＩ／Ｏブロック及び前記不揮発性メモリ・ブロックに接続されたＪＴＡＧインターフェースをさらに備える請求項６に記載の集積回路。
【請求項８】
第３のＩ／Ｏブロックと、
前記第３のＩ／Ｏブロック、前記プログラム可能ロジックの第１のブロック、前記プログラム可能ロジックの第２のブロックに接続された第２のマルチプレクサをさらに備える請求項７に記載の集積回路。
【請求項９】
前記プログラム可能ロジックの第２のブロックに接続された第４のＩ／Ｏブロックをさらに備える請求項８に記載の集積回路。
【請求項１０】
前記プログラム可能ロジックの第１のブロックと前記プログラム可能ロジックの第２のブロックが共にＳＲＡＭプログラム可能ロジック・セルのブロックを収納する請求項１に記載の集積回路。
【請求項１１】
前記プログラム可能ロジックの第１のブロックが、部分的にプログラム可能なハード・インテレクチュアル・プロパティ・ブロックを収納し、前記プログラム可能ロジックの第２のブロックがＳＲＡＭプログラム可能ロジック・セルのブロックを収納する請求項１に記載の集積回路。
【請求項１２】
前記第１のプログラム可能ロジック・ブロックのための暗号化アルゴリズムが前記不揮発性メモリ・ブロックに記憶されている請求項１に記載の集積回路。
【請求項１３】
ブート・パターンが、前記不揮発性メモリ・ブロックの第１の部分に記憶され、ユーザー・データが前記不揮発性メモリ・ブロックの第２の部分に記憶されている請求項１に記載の集積回路。
【請求項１４】
集積回路（ＩＣ）を製造するための方法であって、前記方法が、
前記ＩＣ上に不揮発性のメモリ・ブロックを設けるステップと、
前記不揮発性のメモリ・ブロックに記憶された構成データによって構成されるように設計されたプログラム可能ロジックの第１のブロックを前記ＩＣ上に設けるステップと、
イン・システム構成インターフェースを前記ＩＣ上に設けるステップと、
前記イン・システム構成インターフェースを通して前記第２のプログラム可能ロジック・ブロックにロードされた構成データによって構成されるように設計されたプログラム可能ロジックの第２のブロックを前記ＩＣ上に設けるステップを備える方法。
【請求項１５】
第１のパワー・オン・リセット回路を前記ＩＣ上に設けるステップと、
前記第１のパワー・オン・リセット回路が、電源電圧が所定の値に達したことを示したときに構成データを前記不揮発性メモリ・ブロックから前記プログラム可能ロジックの第１のブロックに転送するように設計されたパワー・オン・リセット構成ブロックを前記ＩＣ上に設けるステップをさらに備える請求項１４に記載の方法。
【請求項１６】
第２のパワー・オン・リセット回路を前記ＩＣ上に設けるステップであって、前記パワー・オン・リセット構成ブロックは、前記第２のパワー・オン・リセット回路が、電源電圧が所定の値に達したことを示したときに、構成データを外部メモリから前記プログラム可能ロジックの第２のブロックに転送するように設計されているステップをさらに備える請求項１５に記載の方法。
【請求項１７】
プログラム可能ロジックの前記第１のブロックとプログラム可能ロジックの前記第２のブロックが共にＳＲＡＭプログラム可能ロジック・セルのブロックを収納する請求項１４に記載の方法。
【請求項１８】
前記プログラム可能ロジックの第１のブロックが、部分的にプログラム可能なハード・インテレクチュアル・プロパティ・ブロックを、前記プログラム可能ロジックの第２のブロックがＳＲＡＭプログラム可能ロジック・セルのブロックを収納する請求項１４に記載の方法。
【請求項１９】
前記不揮発性メモリ・ブロックの第１の部分にブート・パターンを記憶するステップをさらに備え、前記不揮発性メモリ・ブロックの第２の部分が、ユーザー・データを記憶するために利用可能である請求項１４に記載の方法。
【請求項２０】
前記不揮発性メモリ・ブロックに暗号化アルゴリズムを記憶するステップをさらに備え、前記暗号化アルゴリズムが、前記外部構成データを暗号化するために使用される請求項１４に記載の方法。
【請求項２１】
イン・システム構成インターフェースと、
前記イン・システム構成インターフェースを通して集積回路にロードされる外部構成データにより第１のプログラム可能ロジック回路を構成するための手段と、
不揮発性記憶ブロックと、
前記不揮発性記憶ブロックに記憶されている内部構成データにより第２のプログラム可能ロジック回路を構成するための手段と
を備える集積回路。
【請求項２２】
前記第１のプログラム可能ロジック回路を構成するための前記手段及び前記第２のプログラム可能ロジック回路を構成するための前記手段が共にＳＲＡＭセルを備える請求項２１による集積回路。
【請求項２３】
前記第１のプログラム可能ロジック回路を構成するための前記手段が、ＳＲＡＭセルを備え、前記第２のプログラム可能ロジック回路を構成するための前記手段が、部分的にプログラム可能なハード・インテレクチュアル・プロパティ・ブロックとレジスタ・セットを備える請求項２１に記載の集積回路。
【請求項２４】
前記不揮発性記憶ブロックが、ブート・データを記憶するための第１の部分とユーザー・データを記憶するための第２の部分を含む請求項２１に記載の集積回路。
【請求項２５】
前記不揮発性記憶ブロックが、前記外部構成データを暗号化するための暗号化アルゴリズムを記憶する請求項２１に記載の集積回路。
【請求項２６】
プログラム可能ロジックのブロックと、
プログラム可能レジスタ・セットや特定用途向け集積回路を含み、前記プログラム可能レジスタ・セットが前記特定用途向け集積回路のサブセットの機能を制御するように構成されている、部分的にプログラム可能なハード・インテレクチュアル・プロパティ・ブロック（ＨＩＰ）と
を備える集積回路。
【請求項２７】
前記部分的にプログラム可能なＨＩＰブロック内のロジック回路が、前記集積回路の電源電圧投入期間中ＣＲＡＭから前記プログラム可能レジスタ・セットに構成データをロードする請求項２６に記載の集積回路。
【請求項２８】
前記部分的にプログラム可能なＨＩＰブロック内のロジック回路が、ユーザー・モード構成コントローラから構成インターフェースを通してデータを前記プログラム可能レジスタ・セットにロードする請求項２６に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路（ＩＣ）上で揮発性と不揮発性プログラム可能ロジックを結合させるための技術、より具体的にはオフ・チップ・メモリで構成される１区画のプログラム可能ロジックとオン・チップ不揮発メモリで構成されるもう１つの区画のプログラム可能ロジックとを有するＩＣを提供するための技術を提供する。
【背景技術】
【０００２】
オン・チップ揮発性メモリを含む大規模フィールド・プログラム可能ゲート・アレイ（ＦＰＧＡ）は、電源投入時に構成させるに相当の時間を要するのが普通である。なぜなら、構成データが外部のメモリ・チップからチップにロードされるので外部メモリ・チップは、例えばシリアル・リード・オンリ・メモリ（ＳＲＯＭ）である。
【０００３】
ＡｌｔｅｒａのＣＰＬＤのＭＡＸファミリのような小規模のコンプレックス・プログラム可能ロジック・デバイス（ＣＰＬＤ）は、オン・チップ不揮発性メモリを含む。構成データは、オン・チップ不揮発性メモリに蓄えられる。構成データは、電源投入時にオン・チップ不揮発性メモリからプログラム可能ロジックにすばやくロードすることができる。不揮発性ＣＰＬＤは、電源投入と同時に実質上瞬時オンであり、外部の構成データを必要としない。しかし大規模ＦＰＧＡに不揮発性メモリを全て持たせることは、面積の面でいえば高く付き、プロセス選択を制限する。
【０００４】
多くの大規模揮発性ＦＰＧＡは、電源投入と構成プロセスを編成するために随伴ＣＰＬＤを有する。構成データがＦＰＧＡに送出される前に、ＣＰＬＤは、構成データを暗号化することによって、構成データを傍受やコピーされないようにする。しかし、このソルーションは、大規模ＦＰＧＡにＦＰＧＡ，ＳＲＯＭ、ＣＰＬＤを含む３つのデバイス備えさせることになるのでこの技術はより複雑である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
したがってフィールド・プログラム可能ゲート・アレイを構成するためのより高速な技術を提供することが望ましい。構成プロセス中に設計を十分に保障するための方式をユーザーに提供することも望ましい。
【課題を解決するための手段】
【０００６】
本発明は、揮発性と不揮発性プログラム可能ロジックを１つの集積回路（ＩＣ）に結合するための技術を提供する。本発明のＩＣは２つの部分に分けられている。ＩＣの片方の部分は、オン・チップ・不揮発性メモリ・ブロックにストアされたビットによって構成される、プログラム可能ロジックの第１のブロックを含む。ＩＣのもう一方の部分は、オフ・チップ・メモリ・デバイスにストアされたビットによって構成される、プログラム可能ロジックの第２のブロックを含む。
【０００７】
ＩＣの不揮発性の部分にあるロジックは、揮発性の部分にあるロジックを構成することができる時間のごく僅かで構成させ、完全に機能を果たすようにすることができる。不揮発性の部分のロジックは、ＩＣの揮発性の部分の構成を助けるように十分に速く構成できかつ十分に独立性を持っている。不揮発性メモリは、ユーザーの設計に対して暗号化や暗号解読などのセキュリティ特徴を提供することができる。
【発明を実施するための最良の形態】
【０００８】
本発明のその他の目的、特徴、利点は、下記詳細説明とその中で同じ参照符号が、図面全般にわたり同じ特徴を表している添付図面を良く考えれば明らかに成るであろう。
【０００９】
図１は、本発明の第１の実施形態により設計されたプログラム可能ロジック集積回路（ＩＣ）の一部１００を示す。部分１００は、プログラム可能ロジックの第１のブロック１１０とプログラム可能ロジックの第２のブロック１３０を含む。プログラム可能ロジック・ブロック１１０、１３０は共に、プログラム可能ロジック回路を収納する。プログラム可能ロジック回路は、例えばルック・アップ・テーブル・ベースの或いはプロダクト・ターム・ベースのロジック要素などである。ブロック１１０、１３０内のプログラム可能ロジック・アレイのアーキテクチャは同じでも、異なっていてもよい。ロジック・ブロック１１０、１３０はメモリを含んでもよい。両方のブロック１１０、１３０内のメモリは、例えばＳＲＡＭなどの揮発性メモリでよい。
【００１０】
ブロック１１０内のプログラム可能ロジックは、不揮発性メモリ・ブロック１１２内にストアされた構成ビットによって構成される。製造者又はユーザーは構成ビットを、不揮発性メモリ・ブロック１１２内に記憶させることができる。パワー・オン・リセット（ＰＯＲ）構成ブロック１１１が、不揮発性メモリ１１２からロジック・ブロック１１０内のメモリに構成ビットを転送する。
【００１１】
ブロック１３０内のプログラム可能ロジックは外部メモリ・デバイス内にストアされている構成ビットによって構成される。外部メモリ・デバイスは、例えばＦＬＡＳＨメモリ・デバイス又はシリアルＲＯＭ（ＳＲＯＭ）メモリ・デバイスなどである。構成ビットは、Ｉ／Ｏポート１０３からマルチプレクサ１１８やイン・システム構成（ＩＳＣ）ブロック１３１を通ってブロック１３０にロードされる。
【００１２】
上記したように、多くの大規模ＦＰＧＡでは、電源投入時に相当の構成時間を必要とする。一方小規模な不揮発性ＣＰＬＤは、電源投入時に実質的に瞬時オンであり、外部構成データを必要としない。しかし、ＦＰＧＡのプログラム可能ロジック回路全てを構成するために、大規模ＦＰＧＡ上に十分なオン・チップ・不揮発性メモリを配置するには大きすぎるダイ面積を必要とする。
【００１３】
本発明は、２ブロックのプログラム可能ロジック（１１０、１３０）を設けることによってこれらの問題を解決する。電源投入時に構成データをメモリ１１２からロードすることにより、ブロック１１０内のプログラム可能ロジックをすばやく構成することができる。ブロック１１０は、電源投入段階でブロック１３０が構成される前に実行される必要がある特定の重要な機能を実行するためのプログラム可能ロジックを十分に収納していることが好ましい。ブロック１３０は、外部ソースからロードされる構成データにより、もっとゆっくりと構成される。
【００１４】
一実施形態によれば、ＩＣ上のプログラム可能ロジックはほとんど揮発性ブロック１３０内に存在する。この実施形態では、不揮発性メモリ・ブロック１１２は、ブロック１１０内のプログラム可能ロジックのための構成データを記憶するのに十分な大きさを必要とするだけである。ブロック１１０が比較的小さな場合、メモリ１１２は比較的小さなサイズでもよい。この要件が、ＩＣ上でのメモリ１１２の面積の影響を最小にする。ブロック１３０は、例えば電源投入に続いてＦＰＧＡの機能の全てを実行することができる。
【００１５】
メモリ１１２が小さなサイズであれば、より多くの実装の可能性がある。例えばＦＰＧＡ全体に使用される大規模不揮発性メモリ・ブロックは、最先端のＥＥＰＲＯＭ又はＦＬＡＳＨプロセスを必要とする。ＦＰＧＡのほんのわずかの部分のためにのみ構成データを供給する小さなメモリ・ブロック１１２は、ポリフューズ・アレイや磁気抵抗ＲＯＭのようなメモリ・テクノロジを使用できる。
【００１６】
ここでプログラム可能ロジック・ブロック１１０が実行することができる特定の機能の一例を検討する。システム・リセット信号や重要信号は、ＦＰＧＡが構成され完全に機能する前に制御される必要がある。大規模ＦＰＧＡが、そのシステム内で中心的な役割を果たすこともある。ＦＰＧＡが重要信号、リセット、又はバスをドライブする場合には、ＦＰＧＡは、それが構成されるまで信号を能動的に又は正確にドライブすることができない。電源投入と構成の間の不動作が、システムの適切な電源投入処理を妨げることがある。プログラム可能ロジック・ブロック１１０は、電源投入処理中に重要信号を制御してこれらの問題を解決することができる。
【００１７】
ブロック１１０は、構成を制御することもできるし、ＦＰＧＡ構成の前後でリセットを順番に配列することができる。ブロック１１０は、外部ＩＯ信号を使用せずに揮発性ＦＰＧＡブロック・リセットを直接ドライブする能力を有する。
【００１８】
他の例として、ブロック１１０は、ブロック１３０に送出する構成データを確保するために使用することができる。ブロック１１０は、ＣＰＬＤと同様に読出し禁止にすることができ、イン・システム構成（ＩＳＣ）ポート１３１への内部バイパスを有することもできる。ブロック１１０は、外部ピンへのアクセスができないデータ暗号化／暗号解読を追加して実行することができる。
【００１９】
例えば、電源投入時にブロック１１０内のロジックを構成し、メモリ１１２内に記憶されている暗号化アルゴリズムに基づいてそのブロックに暗号解読スキームを実施させることができる。次いで、ブロック１３０のための構成データが、Ｉ／Ｏポート１０３を通してブロック１１０にロードされ、暗号解読される。その後、暗号解読された構成データが、ブロック１１０からブロック１３０へ（例えば、直接又はマルチプレクサ１１８を通して）ロードされる。
【００２０】
ブロック１１０は、暗号化スキームを各顧客向けに個人化し、顧客の安全性及び快適さを追加することができる。したがって顧客は、彼らが望む任意の暗号スキームを選択することができる。暗号アルゴリズムにハッカによるクラックが生じた場合には、顧客は、メモリ１１２に新しいアルゴリズムをロードすることによって簡単に暗号スキームを変更することができる。ブロック１１０を使用して、顧客の選択した非構成データ・ストリームを暗号化又は暗号解読することもできる。
【００２１】
ＦＰＧＡのための構成データが専用のＳＲＯＭからロードされないときには、標準のＦＬＡＳＨデバイス又はプロセッサ・バスからロードされるのが一般的である。いずれのソルーションにも、電源投入時にＦＰＧＡが構成される前にアクティブになっているいくつかのロジックが求められる。このロジックは、データを順番に配列し、不揮発性のデータ・ソースからＦＰＧＡ構成ピン（ＩＳＣ  ポート）に転送する。ＦＰＧＡは、プロセッサを含む広い範囲の不揮発性記憶デバイスや広い範囲のＦＰＧＡ構成モードを受容することができるので、このロジックを内部で実行することは利点である。
【００２２】
図１を参照すると、ＩＣの部分１００は６つの領域１０１〜１０６を含む。各６つの領域１０１〜１０６は、別々のパワー・オン・リセット回路（ＰＯＲ１〜ＰＯＲ６）を含む。パワー・オン・リセット回路は、１つ又は複数のパワー・レール（又はパワー・グリッド）からの電源電圧を監視する。パワー・オン・リセット回路は、対応するパワー・レールからの電源電圧が予め決められたレベルに達した時期を示す出力信号を生成する。予め決められた電源電圧レベルは、ＩＣの特定の領域が安全に機能をはじめることができる時期を示す。例えば、パワー・オン・リセット回路ＰＯＲ１は、領域１０１内の回路が電源投入後に動作を開始するのに許容できる最低の電圧レベルまで電源電圧が増加した時期を示す出力信号を生成する。
【００２３】
図１に示す回路の領域は、２つの区画に分割することができる。第１の区画は領域１０１〜１０４を含む。領域１０１〜１０４は、不揮発性メモリ・ブロック１１２とプログラム可能ロジック・ブロック１１０に関連している。領域１０５〜１０６はプログラム可能ロジック・ブロック１３０に関連している。
【００２４】
ＰＯＲ構成ブロック１１１は、パワー・オン・リセット回路ＰＯＲ１〜ＰＯＲ６を制御し、監視する。電源電圧が領域１０１〜１０４で許容値に達したことをパワー・オン・リセット回路ＰＯＲ１〜ＰＯＲ４が示すとすぐに、ＰＯＲ構成ブロック１１１は、不揮発性メモリ１１２にストアされている構成データを不揮発性のＦＰＧＡブロック１１０に転送する。
【００２５】
したがってＰＯＲ１〜ＰＯＲ４は、領域１０１〜１０４で電源が予め決められたレベルに達したらすぐに、領域１０５〜１０６での電源電圧の上昇を待つことなくブロック１１０内のプログラム可能ロジックを構成させる。この実施形態は、電源投入期間中のブロック１１０の構成速度をさらに速くできるようにする。
【００２６】
領域１０５〜１０６で電源が許容値に達したことをパワー・オン・リセット回路ＰＯＲ５、ＰＯＲ６が示したらすぐに、イン・システム構成データは外部のソースからマルチプレクサ１１８とＩＳＣインターフェース１３１を通してブロック１３０にロードされる。ＰＯＲ構成ブロック１１１又はブロック１１０内のプログラム可能ロジックは、マルチプレクサ１１８の選択入力を制御することができる。
【００２７】
図１に示すＦＰＧＡの実施形態では、領域１０３内のイン・システム構成（ＩＳＣ）Ｉ／Ｏポートは、不揮発性プログラム可能ロジック・ブロック１１０と揮発性プログラム可能ロジック・ブロック１３０とのインターフェースを取っている。
【００２８】
或いは、ＩＳＣデータを不揮発性ブロック１１０にロードし、次でそれに続けてブロック１３０にロードすることができる。ＩＳＣ構成データは、図１の矢印で示すようにブロック１１０からブロック１３０へ直接、或いはマルチプレクサ１１８とＩＳＣインターフェース１３１を通してロードされる。ブロック１１０内のプログラム可能ロジックは、ＩＳＣ構成データをそれがブロック１３０にロードされる前に暗号化して顧客の回路設計を保護することができる。
【００２９】
不揮発性メモリ１１２は、電源が除去されたときデータ・パターンを失わない。例えばメモリ１１２を使用してＦＰＧＡ構成ファイルと揮発性ＦＰＧＡ冗長情報を保持することができる。メモリ１１２は多くの方式で実現することができる。例えばメモリ１１２は、１回限りのプログラム可能メモリ・セルを有するメタル・ヒューズ・メモリとすることができる。メモリ１１２のその他の例にプログラム可能アンチ・フューズ・アレイ、メタル又はポリ・マスク・プログラム可能アレイ、フラッシュ・メモリ・アレイ、ＥＥＰＲＯＭメモリ・アレイ、ＬＡＳＥＲによってプログラムされたフューズ・アレイ、磁気抵抗メモリ・アレイ（ＭＲＡＭ）、強誘電体メモリ・アレイ（ＦｅＲＡＭ）がある。メモリ・ブロック１１２の小さなサイズがその集積度上の可能性を増加する。
【００３０】
不揮発性メモリ１１２は、領域１０２内のＪＴＡＧＩ／Ｏテスト・ポート又は領域１０３内のＩＳＣポートを通してプログラムされる。不揮発性プログラム可能ロジック・ブロック１１０も、そのＩ／Ｏポートが既にブロック１１０を制御しているのでなければ領域１０３内のＩＳＣＩ／Ｏポートを通して、プログラムされる。不揮発性プログラム可能ブロック１１０は、汎用ＩＯの小さなサブセットや、ＩＳＣのＩＯの全部、内部リセットとクロック用のバスのサブセット、内部ルーチン用のいくつかの汎用相互接続線にアクセスすることができる。
【００３１】
領域１１３は、ジョイント・テスト・アクション・グループ（ＪＴＡＧ）ＩＯポートと関連回路を含む。領域１１３内の回路は、不揮発性メモリ１１２を良く知られた技術に従ってプログラムするＪＴＡＧコマンドをデコードする。領域１０３は、電源投入時に揮発性ＦＰＧＡブロック１３０を構成するイン・システム構成（ＩＳＣ）Ｉ／Ｏポートと関連回路を含む。ＩＳＣＩＯポートは、揮発性ＦＰＧＡ１３０の構成ＳＲＡＭを再構成するために使用することもできる。さらに領域１０３内のＩＳＣＩＯポートと回路は、１回限りプログラム可能な不揮発性メモリ・プログラムが定義される前にブロック１３０内の不揮発性構成ＳＲＡＭをプログラムするために使用することができる。プログラミング上のソルーションが、ブロック１１０又は１１２の構成についての前提条件を伴わずに利用可能であることが重要である。
【００３２】
ＰＯＲ構成ブロック１１１は、領域１０４内のＩＯ並びに構成マルチプレクサ１２１やＩＳＣソース・マルチプレクサ１２２を制御する。ＰＯＲ構成ブロック１１１は、構成データをメモリ１１２から領域１０４内のＩ／Ｏバンクへマルチプレクサ１２２を通してロードし、領域１０４内のＩＯポートを構成することができる。ＰＯＲ構成１１１がそれを可能にすれば、揮発性ＩＳＣブロック１３１は、ＰＯＲ４のＩＯブロック１０４を再構成することもできる。
【００３３】
ＰＯＲ構成ブロック１１１は領域１０４内のＩ／Ｏバンクの制御を不揮発性ＦＰＧＡ１１０に与えることができる。ブロック１１０内のプログラム可能ロジックが構成されるとすぐにプログラム可能ロジックは、マルチプレクサ１２１の制御を決定する。マルチプレクサ１２１は、領域１０４内のＩ／Ｏポートと不揮発性ブロック１１０又は揮発性ブロック１３０の間で経路に沿って信号を送る。したがって入出力信号を、マルチプレクサ１２１を制御することにより領域１０４内のＩ／Ｏポートを通してブロック１１０内のプログラム可能ロジックか１３０内のプログラム可能ロジックに経路に沿って送ることができる。
【００３４】
図２は、本発明の第２の実施形態を示す。この実施形態によれば、２セットの構成データをメモリ・ブロック１１２内に記憶することができる。構成データの第１のセットは、ブート・パターンであり製造者によってプログラムされ、あらゆる顧客向けにＡＳＳＰのようなＦＰＧＡの標準機能を提供する。この実施形態は、製造テスト・フローの簡単な変更によりＦＰＧＡの製造者が製品定義（product definition）を時間とともに変更することが可能であるという利点を有する。
【００３５】
ユーザーは、適用分野を決定したらすぐに、メモリ１１２に構成データを追加書き込みすることができる。例えばユーザーは、ＦＰＧＡを様々な信号をテストするための診断モードで動作させるのに使用される構成データをメモリ１１２に記憶することができる。
【００３６】
ＯＴＰ形の不揮発性メモリでは、メモリ・ブロック１１２内に２つのパーティションが必要である。１つのパーティションは、製造者のデフォルト・ブート構成データを記憶するために、１つのパーティションは、ユーザーの具体的なニーズにより良く応ずるためのユーザー構成データを記憶するために使用される。パーティションは図２のメモリ・ブロック１１２で示されている。構成ロジックは、ユーザー・パーティション内に有効データを検出した場合ブート構成をスキップすることができる。
【００３７】
図２の実施形態では、不揮発性メモリ１１２は十分なメモリを有し、したがってブロック１１０のために２セットの構成データを記憶することができる。本発明のさらなる実施形態では、不揮発性メモリ１１２は、２セットを超える構成データをブロック１１０のために記憶することができる。図２のメモリ１１２は、図１のメモリ１１２のＮ倍だけの量のメモリを記憶することができ、ここにＮは、ブロック１１０を構成するのに必要な構成データのセットの数である。
【００３８】
図３Ａは、本発明の他の実施形態を示している。今日のプログラム可能ロジック集積回路の多くはハード・インテレクチュアル・プロパティ・ブロック（ＨＩＰ）を有する。ＨＩＰブロックは特定用途向け集積回路（ＡＳＩＣ）のセグメントであり、所定の機能を実行するために配線で接続されている。多数の顧客が同じ機能を求める場合、製造者はＨＩＰブロックをプログラム可能ロジックＩＣに追加する。特定の機能を実行するときＡＳＩＣは、一般的にＦＰＧＡより効率的である。しかしＡＳＩＣは、マスク・セットにより配線で接続された機能だけを実行することができるのでＦＰＧＡに比して柔軟性でずっと劣る。
【００３９】
ＦＰＧＡの顧客は、特定タイプの回路機能に対して同一ではないが同様な要件を有していることが多い。このような場合には、プログラム可能性を組み込んだＨＩＰブロックをＦＰＧＡに設けることが望ましい。図３Ａに示す例では、プログラム可能レジスタ・セットの形態でＨＩＰブロックにプログラム可能性が組み込まれており、それについては下記に詳細を説明する。プログラム可能レジスタ・セットは、ＨＩＰブロックの柔軟性を増す。
【００４０】
図３Ａは、プログラム可能ロジックＩＣのＨＩＰブロック３０１内にある、ＣＲＡＭで初期化されるレジスタ・セットのブロック図である。図３Ａのブロック図は、ユーザー・モード期間中再構成することができる構成インターフェース３２０、ＦＰＧＡ構成初期化のための構成ＲＡＭ（ＣＲＡＭ）３１２、モード・設定をＩＰロジック３３５に出力するプログラム可能レジスタ・セット３３０を示す。
【００４１】
ＩＰロジック３３５は、特定の機能を実行するために配線で接続されたロジック回路をＨＩＰブロック３０１内に収納している。プログラム可能レジスタ・セット３３０は、ＩＰロジック３３５によって実行される機能にいくらかのプログラム可能性を与える。例えばレジスタ・セット３３０は、ＩＰロジック３３５内のマルチプレクサ又はカウンタを制御して、ロジックの機能に関して多数の任意選択を提供することができる。
【００４２】
プログラム可能レジスタ・セット３３０は、ＦＰＧＡのユーザー・モードの期間中にプログラムされ、電源投入時に固定機能を有する。レジスタ・セット３３０は、ＣＲＡＭ３１２に記憶されているビットであるユーザー・モード（Ｕｓｅｒ＿Ｍｏｄｅ）信号からの、又はユーザー・モード構成インターフェース３２０からのユーザー・モード構成データによってプログラムされる。書込みロジック３２２はユーザー・モード構成データをマルチプレクサ３２５を通してレジスタ・セット３３０に送出する。ＣＲＡＭ３１２からの構成データも、マルチプレクサ３２５を通して直接レジスタ・セット３３０に送出することができる。
【００４３】
電源が投入されると、ＣＲＡＭ＿ｎ＿ｃｏｎｆｉｇを１に、Ｗｒｉｔｅ＿Ｅｎを１にセットすることによってマルチプレクサ３２５が、ＣＲＡＭインターフェース３１２を選択するように、書込みロジック３２２は規定値に初期設定される。プログラム可能ＩＣのＣＲＡＭのビットは、ＦＰＧＡ構成サイクル期間中にロードされる。ユーザー・モードに入ると、プログラム可能ＩＣのコアがユーザー・モード（Ｕｓｅｒ＿Ｍｏｄｅ）信号をアサートし、クロック信号がトグル動作を始める。ユーザー・モード（Ｕｓｅｒ＿Ｍｏｄｅ）信号のアサートに基づき、書込みロジック（Ｗｒｉｔｅ＿Ｌｏｇｉｃ）３２２内で同期自己タイミング回路を実行し、ＣＲＡＭの値を初期設定値としてレジスタ・セット３３０に確実にサンプリングすることができる。
【００４４】
書込みロジック（Ｗｒｉｔｅ＿Ｌｏｇｉｃ）３２２は、ＣＲＡＭ＿ｎ＿Ｃｏｎｆｉｇを０にセットすることによりマルチプレクサ３２５を切り替えてユーザー・モード構成インターフェース３２０を選択することができる。レジスタ・セット３３０の出力値は、ユーザー・モード期間中、（バスのプロトコル・スキームの）書込みサイクルにより、データをユーザー・モード構成コントローラ３１０からユーザー・モード構成インターフェース３２０を通してレジスタ・セット３３０にロードすることによってその値を変更することができる。ユーザー・モード構成コントローラ３１０は、構成データ・セットに従って構成されるプログラム可能ロジック・ブロックとして実現されるのが一般的である。レジスタ・セット３３０は、メモリ・マップド・レジスタとして実現されるのが一般的である。
【００４５】
レジスタ・セット３３０の出力値は、読み取りロジック３２１と構成インターフェース３２０により、モニタリング、デバッグ、テストの目的でその値を読戻すことができる。ユーザー・モード構成インターフェース３２０は、テスト目的でレジスタ・セット３３０に記憶された設定を読戻させ、その設定が正しいことを確認する。この実施形態の構成インターフェースを使用することによってＣＲＡＭ３１２からＨＩＰブロック３０１への接続性を確認しより良いテスト網羅度を得ることができる。
【００４６】
レジスタ・セット３３０は、ＣＲＡＭによって非同期的に初期化されないことが好ましい。このような実施は、レジスタ・セット３３０が非同期セットと非同期リセットの両方をサポートする場合、競合状態を招きやすい。競合状態を回避するために余分なロジックを追加することができる。しかし、このようなロジックを追加するための全体的なコストは、前記に説明した同期初期化スキームに比べより高価である。
【００４７】
図３Ａの実施形態には、いくつかの利点がある。例えばこの実施形態は、ＣＲＡＭからレジスタ・セットへの接続性に対してより良いテスト網羅度を提供する。正確なＣＲＡＭの設定が、ＩＰ機能テスト・ベクトルを実施することによってのみ確認することができる従来式ＩＰの機能テスト・スキームに比べ、テストの構造的な性質により、テスト時間も削減される。しかしこの実施形態は、ダイ面積のコストの面から非常に大規模なレジスタ・セットにとっては適切ではないこともある。
【００４８】
本発明の他の実施形態によればプログラム可能ＨＩＰブロック３０１は、図１又は図２のプログラム可能ロジック・ブロック１１０にとって代わることができる。図３Ｂが、この実施形態を示している。図３Ｂは、ＨＩＰブロック３０１が揮発性プログラム可能ロジック・ブロック１３０と関係なく動作することを可能にしている。
【００４９】
図３Ｂは、少量のプログラミングでＨＩＰブロック３０１の能力をも最大化し、瞬時オンにする。図３ＢのＨＩＰブロック３０１は、メモリ１１２に記憶された少量の構成データを必要とするだけなのでメモリ・ブロック１１２は多くのタイプのメモリ（例えばポリフューズ、磁気抵抗ＲＯＭその他）を使用して実現することができる。
【００５０】
図３Ｂの実施形態は、プログラム可能ロジック３０１、１３０のアーキテクチャが同一である必要はないことを示している。ブロック３０１、１３０のアーキテクチャは、いくらかのプログラム可能性を有することを必要とするのみである。ブロック３０１は、ブロック１３０に比して非常に少ない構成ビットを必要とすることも望ましい（ただし、必要ではない）。一般的にブロック３０１の面積や複雑さがより小さな必要はない。
【００５１】
図４は、本発明の態様を含むことができるＰＬＤ４００の一例の簡素化した部分ブロック図である。本発明を、基本的にＰＬＤやＦＰＧＡの文脈で論議しているが、本発明を多くのタイプのプログラム可能集積回路に適用することができることを理解されたい。ＰＬＤ４００は、その中で本発明の技術を実行することができるプログラム可能集積回路の一例である。ＰＬＤ４００は、様々な長さと速度の内部接続の列と行のネットワークにより相互接続されたプログラム可能ロジック・アレイ・ブロック（ＬＡＢ）４０２の２次元配列を含む。ＬＡＢ４０２は、多数（例えば１０個）のロジック要素（ＬＥ）を含む。
【００５２】
ＬＥは、ユーザーが定義したロジック機能を効率よく実行するプログラム可能ロジック・ブロックである。ＰＬＤは、様々な組み合せ機能と逐次的機能を実行するように構成することができる数多くのロジック要素を有する。ロジック要素は、プログラム可能な相互接続構造にアクセスできる。プログラム可能な相互接続構造は、ほぼ如何なる所望の形にも構成することができる。
【００５３】
ＰＬＤ４００は、アレイにわたって設けられている様々なサイズのＲＡＭブロックを含む分散化メモリ構造も含む。ＲＡＭブロックは、例えば５１２ビットのブロック４０４、４Ｋのブロック４０６と５１２ＫビットのＲＡＭを提供するブロック（Ｂｌｏｃｋ）４０８を含む。これらメモリ・ブロックはシフト・レジスタやＦＩＦＯバッファも含むことができる。
【００５４】
ＰＬＤ４００は、例えば、加算又は減算機能をもつ乗算器を実行することができるディジタル・シグナル・プロセシング（ＤＳＰ）ブロック４１０をさらに含む。本例では、デバイスの周辺機器周りに配置されているＩ／Ｏ要素（ＩＯＥ）４１２は、数多くのシングルエンド形や差動形のＩ／Ｏ標準をサポートする。本明細書では、ＰＬＤ４００が例示的な目的のために限って説明されているが、本発明は多くの異なるタイプのＰＬＤ，ＦＰＧＡ、その他の同様なもので実行することができることを理解されたい。
【００５５】
図４に示されているタイプのＰＬＤは、システム・レベルのソルーションを実行するために必要な多くの資源を提供するが、本発明は、ＰＬＤがいくつかの構成部品の１つであるシステムにも利点を与える。図５が、本発明を実施することができる例示的ディジタル・システム５００のブロック図を示している。システム５００は、プログラムされたディジタル・コンピュータ・システム、ディジタル・シグナル・プロセシング・システム、特化したディジタル・スイッチング・ネットワーク、又はその他のプロセシング・システムなどである。さらに、そのようなシステムは、電気通信システム、自動車システム、制御システム、民生用電子機器、パーソナル・コンピュータ、インターネット通信、ネットワーク、その他の広範囲にわたる適用分野に対して設計することができる。さらにシステム５００は、単一のボード上にも、複数のボード上にも、或いは複数の筐体内にも設けることができる。
【００５６】
システム５００は、１つ又は複数のバスで相互に接続されたプロセシング・ユニット５０２、メモリ・ユニット５０４、Ｉ／Ｏユニット５０６を含む。この例示的な実施形態によればプログラム可能ロジック・デバイス（ＰＬＤ）５０８は、プロセシング・ユニット５０２に埋め込まれている。ＰＬＤ５０８は、図５のシステム内で多くの異なった目的を満たすことができる。ＰＬＤ５０８は、例えばプロセシング・ユニット５０２のロジカル・ビルディング・ブロックとしてその内部オペレーション動作や外部オペレーション動作をサポートすることができる。ＰＬＤ５０８は、システム・オペレーションにおける特定の役割を続行するために必要なロジカル機能を実行するようにプログラムされる。ＰＬＤ５０８は、接続５１０を通してメモリ５０４に、接続５１２を通してＩ／Ｏユニット５０６に特別に連結することができる。
【００５７】
プロセシング・ユニット５０２は、処理し又は記憶するためにデータを適切なシステム構成要素に案内し、メモリ５０４に記憶されたプログラムを実行し、Ｉ／Ｏユニット５０６を経由してデータを受領し、転送し或いは他の同様の機能を実施することができる。プロセシング・ユニット５０２は、中央処理ユニット（ＣＰＵ）、マイクロプロセッサ、浮動小数点コプロセッサ、グラフィック・コプロセッサ、ハードウェア・コントローラ、マイクロコントローラ、コントローラとして使用するためにプログラムされたプログラム可能ロジック・デバイス、ネットワーク・コントローラ、その他の同様のものである。さらに多くの実施形態では、ＣＰＵが必要でないこともある。
【００５８】
例えばＣＰＵに代わって１つ又は複数のＰＬＤ５０８がシステムの論理オペレーションを制御することができる。一実施形態では、ＰＬＤ５０８は、必要に応じて特定の計算作業を処理するために再プログラムすることができる再構成可能なプロセッサとして動作する。或いはプログラム可能ロジック・デバイス５０８は、それ自身に埋め込まれたマイクロプロセッサを含むことができる。メモリ・ユニット５０４は、ランダム・アクセス・メモリ（ＲＡＭ）、リード・オンリ・メモリ（ＲＯＭ）、固定又は柔軟なディスク・メディア、ＰＣカード（ＰＣ  Ｃａｒｄ）フラッシュ・ディスク・メモリ、テープ、又はその他の記憶手段、或いはこれら記憶手段の組み合せとすることができる。
【００５９】
本明細書では、本発明をその具体的な実施形態を参考に説明してきたが、変形の自由、様々な変更と置換は本発明の意図するものである。時には、本発明の特徴を、その他の特徴を対応して使用することなく、規定された本発明の範囲を逸脱することなしに採用することができる。したがって本発明の基本的な範囲と趣旨から逸脱することなしに、開示した具体的な構成又は方法を適合させるために多くの改変をすることができる。本発明は、開示した具体的な実施形態に限定するものではなく、特許請求の範囲に収まる全ての実施形態及び同等物を含むものとする。
【図面の簡単な説明】
【００６０】
【図１】本発明の第１の実施形態による、オン・チップ・不揮発性メモリによって構成されるプログラム可能ロジックのブロック及びオフ・チップ・メモリによって構成されるプログラム可能ロジックのブロックを含むＩＣを示す図である。
【図２】本発明の第２の実施形態による、ユーザー及び製造者の構成データを貯蔵するのに十分な大きさであるオン・チップ・不揮発性メモリ・ブロックをもつ、図１に示すＩＣを示す図である。
【図３Ａ】本発明の第３の実施形態による、プログラム可能ロジックＩＣ上にあり、そのプログラム可能ロジックＩＣが有するプログラム可能レジスタ・セットによりプログラム可能性（ｐｒｏｇｒａｍｍａｂｉｌｉｔｙ）を与えられるハード・インテレクチュアル・プロパティ（ＨＩＰ）ブロックを示す図である。
【図３Ｂ】本発明の第４の実施形態による、図３Ａのプログラム可能ＨＩＰブロック及びオフ・チップ・メモリによって構成されるプログラム可能ロジックのブロックを含むＩＣを示す図である。
【図４】本発明の技術で使用することができるプログラム可能ロジック・デバイスの簡素化したブロック図である。
【図５】本発明の実施形態を実現することができる電子システムのブロック図である。
【符号の説明】
【００６１】
１００  プログラム可能ロジック集積回路（ＩＣ）の部分、１０３  Ｉ／Ｏポート、１１０  第１のブロック、１１１  パワー・オン・リセット構成ブロック、１１２  不揮発性メモリ・ブロック、１１８  マルチプレクサ、１２１  マルチプレクサ、１２２  マルチプレクサ、１３０  第２のブロック、１３１  イン・システム構成ブロック、３０１  ＨＩＰブロック、３１０  構成コントローラ、３１２  ＲＡＭ、３２０  構成インターフェース、３２２  書込みロジック、３２５  マルチプレクサ、３３０  プログラム可能レジスタ・セット、３３５  ＩＰロジック、４００  ＰＬＤ、４０２  ロジック・アレイ４、４０４  ＲＡＭブロック、４０６  ＲＡＭブロック、４０８  ＲＡＭブロック、４１０  シグナル・プロセシング・ブロック、５００  ディジタル・システム、５０２  プロセシング・ユニット、５０４  メモリ・ユニット、５０６  Ｉ／Ｏユニット、５０８  プログラム可能ロジック・デバイス、５１０  接続
【図１】
2006166430.tif 000003
【図２】
2006166430.tif 000004
【図３Ａ】
2006166430.tif 000005
【図３Ｂ】
2006166430.tif 000006
【図４】
2006166430.tif 000007
【図５】
2006166430.tif 000008