(57)【要約】本明細書ではリコンフィギュラブル予備クラスタを持つリコンフィギュラブル回路が説明されている。【その他】    国際段階にて出願人の名称変更手続を済ませております。【特許請求の範囲】
【請求項１】
プログラミングインタフェースと、
それぞれが前記プログラミングインタフェースと接続された複数のリコンフィギュラブル接続デバイスと、
各クラスタが前記プログラミングインタフェースおよび前記複数のリコンフィギュラブル接続デバイスと接続されたリコンフィギュラブル論理回路の複数のクラスタと、を備え、
前記複数のクラスタは、前記複数のクラスタのうちのひとつの不良クラスタの代わりに動作するよう設定することが可能な少なくともひとつの予備クラスタを含むことを特徴とするリコンフィギュラブル回路。
【請求項２】
論理アドレスから物理アドレスへのマッピングを行うことにより前記複数のクラスタのうちのひとつの予備クラスタを前記不良クラスタの代わりに動作せしめるように前記プログラミングインタフェースを設定することが可能であることを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項３】
前記複数のクラスタのそれぞれは、
命令受付ポートと、
α＊ｋ個の入力ポートであって（ただしｋおよびαは整数）、ｋ個のリコンフィギュラブル接続デバイスのそれぞれが前記α＊ｋ個の入力ポートのうちのα個と接続されているα＊ｋ個の入力ポートと、
β＊ｋ個の出力ポートであって（ただしｋおよびβは整数）、ｋ個のリコンフィギュラブル接続デバイスのそれぞれが前記β＊ｋ個の出力ポートのうちのβ個と接続されているβ＊ｋ個の出力ポートと、
前記命令受付ポートと前記α＊ｋ個の入力ポートと前記β＊ｋ個の出力ポートとに接続され、前記命令受付ポートを通して受信した命令に従って複数の機能のうちの少なくともひとつの機能を実装するよう設定することが可能であるリコンフィギュラブルモジュールと、を含むことを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項４】
前記複数のリコンフィギュラブル接続デバイスのそれぞれは、
命令受付ポートと、
α＊（ｎ＋１）個の出力ポートであって（ただしｎおよびαは整数）、ｎ＋１個のクラスタのそれぞれが前記α＊（ｎ＋１）個の出力ポートのうちのα個と接続されているα＊（ｎ＋１）個の出力ポートと、
β＊（ｎ＋１）個の入力ポートであって（ただしｎおよびβは整数）、ｎ＋１個のクラスタのそれぞれが前記β＊（ｎ＋１）個の入力ポートのうちのβ個と接続されているβ＊（ｎ＋１）個の入力ポートと、
前記命令受付ポートと前記β＊（ｎ＋１）個の入力ポートと前記α＊（ｎ＋１）個の出力ポートとに接続され、前記命令受付ポートを通して受信した命令に従って前記β＊（ｎ＋１）個の入力ポートと前記α＊（ｎ＋１）個の出力ポートを選択的に接続するよう設定することが可能であるリコンフィギュラブル接続部と、を含むことを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項５】
前記プログラミングインタフェースは、
外部からのデータがクラスタに送信されているのか、それともリコンフィギュラブル接続デバイスに送信されているのかを判断する論理回路を含み、
外部からのデータが不良クラスタに対応する論理宛先アドレスを含む場合には、それが前記不良クラスタに命令を与える場合であろうと、前記不良クラスタと接続するよう接続デバイスに命令を与える場合であろうとにかかわらず、前記プログラミングインタフェースは前記不良クラスタに対応する論理宛先アドレスを、前記不良クラスタを代替する前記予備クラスタに対応する宛先アドレスと置き換え、前記外部からのデータの残余部分をトランスピアレントな態様で通過させることを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項６】
前記複数のクラスタのそれぞれは同一であることを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項７】
前記プログラミングインタフェースと前記複数のリコンフィギュラブル接続デバイスと前記リコンフィギュラブル論理回路とがマクロクラスタを形成することを特徴とする請求項１に記載のリコンフィギュラブル回路。
【請求項８】
前記マクロクラスタの他に少なくともひとつのマクロクラスタをさらに備え、
前記複数のマクロクラスタはお互いに接続されていることを特徴とする請求項７に記載のリコンフィギュラブル回路。
【請求項９】
リコンフィギュラブル回路内の不良クラスタを識別するデータを受け取ることと、
前記識別された不良クラスタの代わりに動作するよう予備クラスタに命令を与えることと、を含み、
前記リコンフィギュラブル回路は、前記不良クラスタおよび少なくともひとつの予備クラスタを含む複数のクラスタであってそれぞれがリコンフィギュラブル論理回路のクラスタである複数のクラスタを有することを特徴とする方法。
【請求項１０】
前記命令を与えることは、
前記不良クラスタが正常であれば実装していたであろう機能と等価な機能を、前記不良クラスタに与える命令と同じ命令を用いて実装するよう前記予備クラスタをトランスピアレントな態様で設定することと、
前記リコンフィギュラブル回路をトランスピアレントな態様で動作させることと、を含み、
前記動作させることは、前記不良クラスタへ送信されるデータが、前記不良クラスタを代替する前記予備クラスタへと送信されるよう自動的に経路変更することを含むことを特徴とする請求項９に記載の方法。
【請求項１１】
前記経路変更することは、クラスタを処理する際に、受信した前記不良クラスタの論理識別子を前記予備クラスタの識別子と置き換えることを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記命令を与えることは、前記不良クラスタが正常であれば実装していたであろうメモリ機能または第２の機能もしくはその両方を実装するよう前記予備クラスタをトランスピアレントな態様で設定することを含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
前記命令を与えることは、前記不良クラスタが正常であれば実装していたであろう乗算機能または第２の機能もしくはその両方を実装するよう前記予備クラスタをトランスピアレントな態様で設定することを含むことを特徴とする請求項１０に記載の方法。
【請求項１４】
前記命令を与えることは、前記不良クラスタが正常であれば実装していたであろう乗算機能およびメモリ機能、またはそのどちらかを実装するように、もしくはそのどちらも実装しないように前記予備クラスタをトランスピアレントな態様で設定することを含むことを特徴とする請求項１０に記載の方法。
【請求項１５】
前記不良クラスタおよび前記予備クラスタは、前記リコンフィギュラブル回路に含まれるマクロクラスタの構成要素であり、
前記リコンフィギュラブル回路はお互いに接続された複数のマクロクラスタを含み、
前記データを受け取ることおよび前記命令を与えることを前記マクロクラスタの他の少なくともひとつのマクロクラスタに対して繰り返すことをさらに含むことを特徴とする請求項９に記載の方法。
【請求項１６】
複数の機能のうちの任意のひとつの機能を実装させる命令を伴った外部アプリケーションからのデータを受信するプログラミングインタフェースと、
それぞれが前記プログラミングインタフェースと接続されている複数のリコンフィギュラブル接続と、
前記複数のリコンフィギュラブル接続および前記プログラミングインタフェースと接続され、それぞれは、外部アプリケーションからのデータによってその論理アドレスが指定されうる複数のクラスタと、
前記複数のクラスタのうちの少なくともひとつのクラスタと設定上同一であり、前記外部アプリケーションからのデータからは見えない少なくともひとつの予備クラスタと、を備えることを特徴とする装置。
【請求項１７】
前記プログラミングインタフェースは、前記少なくともひとつの予備クラスタに、前記複数のクラスタのうちの少なくともひとつの不良クラスタを代替させる命令を与えるよう設定され、前記複数のリコンフィギュラブル接続に、アプリケーションからのデータの送信先を前記少なくともひとつの不良クラスタから前記少なくともひとつの予備クラスタへ変更する命令を与えるよう設定されることを特徴とする請求項１６に記載の装置。
【請求項１８】
前記複数のクラスタのそれぞれは同一であることを特徴とする請求項１６に記載の装置。
【請求項１９】
前記プログラミングインタフェースと、前記複数のリコンフィギュラブル接続と、前記複数のクラスタと、前記少なくともひとつの予備クラスタはマクロクラスタを形成し、
少なくともひとつの他のマクロクラスタをさらに備え、
前記マクロクラスタおよび前記他のマクロクラスタはそれぞれがお互いに接続されていることを特徴とする請求項１６に記載の装置。
【請求項２０】
前記少なくともひとつの予備クラスタは、前記複数のリコンフィギュラブル接続および前記プログラミングインタフェースと接続されていることを特徴とする請求項１６に記載の装置。
【請求項２１】
複数の回路基板と、
リコンフィギュラブル基板間接続と、を備え、
前記複数の回路基板のそれぞれは、
複数のリコンフィギュラブル回路と、
前記複数のリコンフィギュラブル回路をお互いに選択的にかつ再設定可能に接続する複数のリコンフィギュラブル基板上接続と、を含み、
前記複数のリコンフィギュラブル回路のそれぞれは、
複数のクラスタと、
前記複数のクラスタのうちのひとつの不良クラスタの代わりに動作するよう設定することが可能な少なくともひとつの予備クラスタと、を含み、
前記リコンフィギュラブル基板間接続は、前記複数の回路基板上の前記複数の基板上接続をお互いに選択的にかつ再設定可能に接続することを特徴とするシステム。
【請求項２２】
前記複数のリコンフィギュラブル回路のうちの少なくともひとつは、
複数の機能のうちの任意のひとつの機能を実装させる命令を伴った外部アプリケーションからのデータを受信するプログラミングインタフェースと、
それぞれが前記プログラミングインタフェースと接続されている複数のリコンフィギュラブル接続と、
前記複数のリコンフィギュラブル接続および前記プログラミングインタフェースと接続され、それぞれは、外部アプリケーションからのデータによってその論理アドレスが指定されうる複数のクラスタと、
前記複数のクラスタのうちの少なくともひとつのクラスタと設定上同一であり、前記外部アプリケーションからのデータからは見えない少なくともひとつの予備クラスタと、を備えることを特徴とする請求項２１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リコンフィギュラブル回路、特にリコンフィギュラブル予備クラスタを備えるリコンフィギュラブル回路およびその応用に関する。
【背景技術】
【０００２】
リコンフィギュラブル回路とは、それほど複雑ではない様々な機能を実現するためにコンピュータプログラムによって繰り返し書き換えることが可能な回路装置である。リコンフィギュラブル回路の一例としては、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）回路がある。所望する機能の実装に必要なそれぞれのトランジスタを実現するためには、通常リコンフィギュラブル回路上の２０個から５０個のトランジスタを必要とする。そのため、それぞれの集積回路技術の世代においてリコンフィギュラブル回路は最も大きな回路となる傾向にあった。
この避け難い大きさのため、リコンフィギュラブル回路装置は歩留まりが悪く初期不良が多発する。リコンフィギュラブル回路の製造者や使用者はこの問題に長年悩まされてきた。
【０００３】
それにもかかわらず、リコンフィギュラブル回路は広く利用されている。これは、特定用途向けの集積回路（ＡＳＩＣ：Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）に比べて開発費（ＮＲＥ：Ｎｏｎ  Ｒｅｃｕｒｒｉｎｇ  Ｅｘｐｅｎｓｅｓ）がかからないためである。
さらに、リコンフィギュラブル回路を用いれば、特定用途向けの集積回路が実際にシリコンに作り込まれる前に間違いがないかどうか確かめるために、その特定用途向けの集積回路を模したものを作成し試すことができる。これにより、特定用途向けの集積回路の開発費を大いに抑えることができる。
【０００４】
従来では、様々な歩留まりの問題を解決するためのひとつの方法として、製造過程においてレーザを用いてトリミングすることで不良素子を迂回する方法が用いられる。この方法では、回路テストの後、レーザを用いていくつかの接続部分を切り離すことで不良素子を迂回する。
また、初期不良の問題に対しては、主にバーンインプロセス（Ｂｕｒｎ−ｉｎ  ｐｒｏｃｅｓｓ）が用いられてきた。この方法では、意図的にある期間その部品を使用状態に置くことで、初期不良を起こすような部品を洗い出すことができる。
しかしながら、これらの従来の方法では、製造過程において著しいコストが発生し、またその部品の耐用期間中に不具合が起こらないことを保証することはできない。
【図面の簡単な説明】
【０００５】
以下本発明を実施の形態をもとに図を参照しながら説明する。実施の形態は例示であり、本発明を限定するものではない。各図面に示される同一または同等の構成要素には、同一の符号を付するもとする。
【０００６】
【図１】様々な実施の形態に係るリコンフィギュラブル回路の一部のブロック図である。このリコンフィギュラブル回路は一または複数の予備クラスタを持つ。
【図２】図１のプログラミングインタフェースの一部をさらに詳しく示すブロック図である。
【図３】様々な実施の形態に係る処理手順を示すフローチャートである。
【図４】様々な実施の形態に係るエミュレーションシステムのブロック図である。このエミュレーションシステムは予備クラスタを備えるリコンフィギュラブル回路を含む。
【詳細な説明】
【０００７】
以下、各図面に示される同一または同等の部材には、同一の符号を付するものとする。また、各図面には本発明が実施されうる実施の形態が示される。本発明の技術的範囲を逸脱することなく他の実施の形態を用いることができ、また構造もしくは論理値の設定を変更することができることは理解されるところである。したがって以下の詳細な説明は本発明を限定するものではない。本発明の技術的範囲は特許請求の範囲およびその均等の範囲によって定められる。
本明細書において「ひとつの実施の形態」を参照するということは、その実施の形態において説明された特定の特徴、構成または性質が本発明の少なくとも一つの実施の形態に含まれていることを意味する。
本明細書の様々な箇所に見られる「ひとつの実施の形態においては」という文言については、その文言全てが必ずしも同じ実施の形態を指しているとは言えないが、そうであってもよい。
【０００８】
図１は、本発明の実施の形態に係るリコンフィギュラブル回路の一部を示すブロック図である。このリコンフィギュラブル回路は一もしくは複数のリコンフィギュラブル予備クラスタを持つ。本実施の形態においては、図１に示された部分をリコンフィギュラブルマクロクラスタ２００と呼ぶ（以降単にマクロクラスタと表示）。リコンフィギュラブル回路は、お互いに接続された一もしくは複数のマクロクラスタ２００を含んでもよい。そのそれぞれのマクロクラスタ２００は複数のリコンフィギュラブルクラスタ２４０および２５０（以降単にクラスタと表示）を備える。それぞれのクラスタは複数のリソースを備えてもよい。そのようなリソースの例としては、リコンフィギュラブル論理回路、メモリ、乗算器などがあるが、これらに限定されるものではない。
本発明の他の実施の形態においては、マクロクラスタの形にまとめられた様々なクラスタを用いてもよいし、用いなくてもよい。
本実施の形態においては、マクロクラスタ２００は複数のリコンフィギュラブル接続デバイス２３０およびプログラミングインタフェース２２０を含む。図に示されるとおり、このリコンフィギュラブル接続デバイス２３０とプログラミングインタフェース２２０とは互いに接続され、かつその両方はクラスタ２４０および２５０とも接続されている。例えば、リコンフィギュラブル接続デバイスはクロスバースイッチであってもよい。
本実施の形態においては、以下で詳細に説明するように、プログラミングインタフェース２２０は特に本実施の形態におけるクラスタ２４０および２５０の構成を実現する適切な論理回路を備える。その論理回路によりプログラミングインタフェース２２０は、クラスタ２４０および２５０の部分集合、例えばクラスタ２４０、を外部によって使用されるクラスタとして設定する。さらに、残りのクラスタ、例えばクラスタ２５０、を外部によって使用されるクラスタのうちの不良クラスタをトランスピアレントな態様で置き換える予備クラスタとして設定する。
以下で詳細に説明するように、外部によって使用されるクラスタは物理アドレスではない論理アドレスによって指定されてもよい。その外部によって使用されるクラスタは、それが論理アドレスによって指定されるか物理アドレスによって指定されるかにかかわらず、主要クラスタと呼ばれてもよい。
【０００９】
本発明の目的から、本明細書および本特許請求の範囲において、「トランスピアレントな態様」という文言およびそれを変形した文言は次に述べる態様を意味するものとする。その態様とは、クラスタ、例えばクラスタ２４０、に含まれる不良クラスタを予備クラスタ、例えばクラスタ２５０、で置き換えることがあったとしても、それは外部からの設定データにとっては重要ではない態様である。ここで、重要ではない、とは、所望の一組の機能を実現するために予備クラスタおよび残りの不良でないクラスタ２４０を設定する上で重要ではないことを意味する。言い換えれば、外部からの設定データが指定するクラスタのうちのひとつが不良であっても、そのデータを変更する必要がない態様である。
【００１０】
本発明の目的から、クラスタ２４０もしくは２５０との接続不能を引き起こすリコンフィギュラブル接続デバイス２３０の不良は、そのクラスタ２４０もしくは２５０の不良として取り扱ってもよい。
【００１１】
図１について説明を続ける。様々な実施の形態においては、マクロクラスタ２００はホモジニアスクラスタ２４０および２５０を含む（以降ホモジニアスな実施の形態と表示）。ここでホモジニアスとは、クラスタ２４０および２５０が同一のクラスタであることを意味する。
以下でより詳細に説明するように、このホモジニアスな実施の形態のうちのいくつかの実施の形態においては、プログラミングインタフェース２２０は適切な論理回路を備える。その論理回路によりプログラミングインタフェース２２０は、ｎ＋１個のクラスタのうちのｎ個のクラスタ２４０を外部によって使用されるクラスタとして設定してもよい。そして残りのひとつのクラスタ２５０を予備クラスタとして設定してもよい。この予備クラスタ２５０は、ｎ個の外部によって使用されるクラスタ２４０のうちのひとつの不良クラスタをトランスピアレントな態様で置き換えるために用いられてもよい。
ここで説明を進める前に、以下の点を注意しておく。説明を簡単にするために図１では、「上部」に配置されたｎ個のクラスタ２４０を外部によって使用されるクラスタとして表し、「最下部」に配置されたクラスタ２５０を予備クラスタとしてと表すことによってホモジニアスな実施の形態を説明する。しかしその配置は外部に対してはトランスピアレントな態様であり、プログラミングインタフェース２２０のみによって認識されている。
他の実施の形態においては、プログラミングインタフェース２２０は、クラスタ２４０および２５０のうちの任意のｎ個を外部によって使用されるクラスタとして選び、残りのひとつのクラスタを予備クラスタとして設定してもよい。
【００１２】
以下でより詳細に説明するように、ホモジニアスな実施の形態のうちのいくつかの実施の形態においては、プログラミングインタフェース２２０は適切な論理回路を備える。その論理回路によりプログラミングインタフェース２２０は、ｎ＋１個のクラスタ２４０および２５０のうちのｍ個のクラスタを外部によって使用されるクラスタとして設定してもよい。そして残りのｎ＋１−ｍ個のクラスタ２４０および２５０を予備クラスタとして設定してもよい。ただし、ｍおよびｎはそのどちらも１よりも大きく、またｍはｎよりも小さいとする。ｎ＋１−ｍ個の予備クラスタのうちの任意のひとつは、外部によって使用されるｍ個のクラスタのうちの任意のひとつの不良クラスタを置き換えるために用いられてもよい。ここでは外部によって使用されるクラスタをｎ＋１−ｍ個まで置き換えることができる。
【００１３】
他のホモジニアスな実施の形態においては、プログラミングインタフェース２２０は適切な論理回路を備える。その論理回路によりプログラミングインタフェース２２０は、外部によって使用されるｍ個のクラスタの論理アドレスによる指定を可能とする。つまり外部によって使用されるｍ個のクラスタをｎ＋１個の物理的なクラスタのうちの任意のｍ個と対応づけることを可能とする。したがって、ｎ＋１個のクラスタのうちの任意のｎ＋１−ｍ個までのクラスタを、不良クラスタを置き換えるために用いることができる。
【００１４】
図１に関して説明を続ける。様々な実施の形態においては、ｎ＋１個のクラスタ２４０および２５０はヘテロジニアスである（以降ヘテロジニアスな実施の形態と表示）。ここでヘテロジニアスとは、少なくともふたつのクラスタ２４０および２５０がお互いに異なっていることを意味する。このヘテロジニアスな実施の形態においては、プログラミングインタフェース２２０は適切な論理回路を備え、またクラスタ２４０および２５０のうちの少なくともひとつのクラスタ、例えばクラスタ２５０、は（以降「特別な」クラスタと表示）異なるクラスタのそれぞれが備えるリソースを全て備える。その他の異種混合クラスタ、例えばクラスタ２４０、は外部によって使用される。「特別な」クラスタ２５０は、外部によって使用される異種混合クラスタのうちのひとつの不良クラスタを置き換えるために用いられてもよい。
【００１５】
このヘテロジニアスな実施の形態のうちのいくつかの実施の形態においては、外部によって使用される異種混合クラスタ２４０は乗算器を備える少なくともひとつのクラスタおよびメモリを備える少なくともひとつのクラスタを含む。ここでは「特別な」予備クラスタ２５０は乗算器とメモリの両方を含む。
【００１６】
このヘテロジニアスな実施の形態のうちのいくつかの実施の形態においては、「特別な」クラスタ２５０の様々なリソースは初期設定においてオフに設定される。そのリソースは、例えばプログラミングインタフェース２２０からの命令によって、補助リソースを介して選択的にオンに設定される。そのため、「特別な」クラスタ２５０とそれによって置き換えられるクラスタ２４０とは、その置き換えられるクラスタがどの種類のクラスタであれ、プログラム上は同じものであると見ることができる。
しかしながら、別のヘテロジニアスな実施の形態においては、以下でさらに詳細に説明するように、「特別な」クラスタ２５０とその他のヘテロジニアスなクラスタ２４０とはプログラム上異なったクラスタであってもよい。
【００１７】
図１に関して説明を続ける。様々な実施の形態においては、ｎ＋１個のクラスタ２４０および２５０に加えて、マクロクラスタ２００はｋ個のリコンフィギュラブル接続デバイス２３０を含む。ここでｋは整数である。それぞれのクラスタ２４０もしくは２５０は、それがホモジニアスであれヘテロジニアスであれ、リコンフィギュラブルリソース（例えばリコンフィギュラブル論理回路やメモリなど）に加えて、プログラミングインタフェース２２０と接続された命令受付ポートと、ｋ個のリコンフィギュラブル接続デバイス２３０と接続されたα＊ｋ個の入力ポートおよびβ＊ｋ個の出力ポートを備える。ここでαおよびβは整数である。ひとつのクラスタ２４０に含まれるα個の入力ポートおよびβ個の出力ポートは、ｋ個のリコンフィギュラブル接続デバイス２３０のそれぞれと接続される。リコンフィギュラブルリソースは命令受付ポート、α＊ｋ個の入力ポートおよびβ＊ｋ個の出力ポートと接続される。クラスタの命令受付ポートを通して、リコンフィギュラブルリソースを、そのクラスタのα＊ｋ個の入力ポートのうちの任意の入力ポートから入力信号を受け取り、そのクラスタのβ＊ｋ個の出力ポートのうちの任意の出力ポートへと出力するよう設定してもよい。
【００１８】
本実施の形態のうちのいくつかの実施の形態においては、接続デバイス２３０のそれぞれは、プログラミングインタフェース２２０と接続された命令受付ポート、α＊（ｎ＋１）個の出力ポート、β＊（ｎ＋１）個の入力ポートおよびリコンフィギュラブル接続素子を含む。ひとつの接続デバイス２３０に含まれるα個の出力ポートおよびβ個の入力ポートは、クラスタ２４０および２５０のそれぞれと接続される。リコンフィギュラブル接続素子は命令受付ポート、α＊（ｎ＋１）個の出力ポートおよびβ＊（ｎ＋１）個の入力ポートと接続される。接続デバイスの命令受付ポートを通して、リコンフィギュラブル接続素子を、その接続デバイスのα＊ｋ個の入力ポートのうちの任意の入力ポートから入力信号を受け取り、そのクラスタのβ＊ｋ個の出力ポートのうちの任意の出力ポートへと出力するよう設定してもよい。
【００１９】
図１に関して説明を続ける。プログラミングインタフェース２２０は命令受付ポート２７０およびプログラミング論理回路２２２を備える。命令受付ポート２７０は、一もしくは複数の所望の機能を実現するためにリコンフィギュラブル接続デバイス２３０、クラスタ２４０および２５０に命令を与える設定データを外部から受信する役目をもつ。プログラミング論理回路２２２はその受信した設定データを基に接続デバイス２３０、クラスタ２４０および２５０を設定する役目を持つ。本実施の形態においては、プログラミング論理回路２２２はさらに設定処理マッピング論理回路２２４を含む。設定処理マッピング論理回路２２４は、主要クラスタのうちの少なくともひとつの不良クラスタを宛先アドレスとしてもつ設定処理データを、不良クラスタを代替する予備クラスタを宛先アドレスとしてもつデータに変換する。また接続デバイス２３０を宛先アドレスとしてもつ設定処理データを変換することで、主要クラスタのうちの少なくともひとつの不良クラスタとの接続を不良クラスタを代替する予備クラスタとの接続に置き代える。
【００２０】
他の実施の形態においては、設定処理マッピング論理回路２２４は外部より、例えば命令受付ポート２７０を通して、マッピング情報を取得してもよい。この実施の形態では、外部機器を用いて主要クラスタ中に不良クラスタがあるかどうかを検知し、あればその不良クラスタがどれであるか識別してもよい。そのためマクロクラスタ２００はテスト用のアクセス回路（不図示）、例えばスキャンセル、をさらに含んでもよい。これにより外部のテスト回路を用いたマクロクラスタ２００の不良検知および識別が可能となる。
また別の実施の形態においては、マクロクラスタ２００はその不良検知および識別を行うテスト回路を含んでもよい。
また他の実施の形態においては、クラスタ２４０および２５０のそれぞれは、それ自身の不良検知および識別を行うテスト回路を含んでもよい。
【００２１】
マクロクラスタ２００のそれぞれもしくはクラスタ２４０および２５０のそれぞれが不良検知および識別を行うテスト回路を備えているような様々な実施の形態においては、プログラミング論理回路２２２は、それ自身で不良検知および識別のためのテストを実行し、不良クラスタの数が利用可能な予備クラスタの数よりも小さいかそれと等しい場合には設定処理マッピング論理回路２２４をそのテストの結果に従って設定してもよい。
他の実施の形態においては、プログラミング論理回路２２２は、利用可能な予備クラスタよりも多くの不良クラスタを検知した場合は、マクロクラスタ２００を使用不能に設定した上でそれが使用不能であることを報告してもよい。
【００２２】
図２は、様々な実施の形態に係る設定処理マッピング論理回路２２４をさらに詳細に示したブロック図である。図２に示されるとおり、設定処理マッピング論理回路２２２はお互いに接続されたルックアップテーブル３０２および混合部３０６を含んでもよい。ルックアップテーブル３０２は、ｎ個のクラスタのマッピング情報３０４を格納するｎ個の記憶部を含む。
他の実施の形態においては、マッピング情報３０４はクラスタ識別子を入力するｎ個の入力部を備える。
物理アドレスを用いる実施の形態においては、マッピング情報３０４はｎ個のクラスタの識別子のそれぞれをそれ自身もしくは予備クラスタのクラスタ識別子へ変換する。例えば、クラスタｎ＋１が予備クラスタの場合であってクラスタｎ０が不良クラスタである場合、クラスタ識別子ｎ＋１はクラスタｎ０に対するマッピング情報３０４が格納される記憶部に格納され、クラスタｎ０を宛先アドレスとしたどのような処理もクラスタｎ＋１を宛先アドレスとした処理に変換される。
論理アドレスを用いる実施の形態においては、マッピング情報３０４は論理アドレスによるｎ個のクラスタ識別子のそれぞれを物理アドレスによるクラスタ識別子に変換する。この際物理アドレスによって識別されるクラスタは主要クラスタであっても、予備クラスタであってもよい。
【００２３】
様々な実施の形態においては、混合部３０６は処理データを再構成するために用いられてもよい。そこでは、宛先アドレスによって指定されたクラスタが不良クラスタである場合、それぞれの処理データ中のその不良クラスタに対応する識別子が、ルックアップテーブル３０２によって参照された予備クラスタの識別子によって置き換えられる。
【００２４】
他の実施の形態においては、設定処理マッピング論理回路２２４を含むプログラミング論理回路２２２はハードウエアのみ、ソフトウエアのみ、またはそれらの組合せによってその全てもしくは一部が実現されてもよい。プログラミング論理回路２２２の少なくとも一部（例えば全てもしくは一部の設定処理マッピング論理回路２２４）がソフトウエアによって実現されている実施の形態においては、プログラミングインタフェース２２０は、そのソフトウエアコードを格納する適切な不揮発性の記憶部と、その不揮発性の記憶部と接続され、ソフトウエアコードを読み込んで実行するプロセッサとを備えてもよい。
【００２５】
ここで、「あるクラスタを宛先アドレスとする処理データ」という文言は、ある主要クラスタのリコンフィギュラブルリソースを宛先とする設定処理データを含むだけでなく、接続デバイス２３０のさまざまな入出力ポートをある特定のクラスタへ接続する設定処理データをも含む。
図２に示されるとおり、混合部３０６はルックアップテーブル３０２の出力に基づいて元の処理データのアドレス部を変換し、その変換されたアドレス部と元の処理データに含まれていたアドレス以外の他のデータとをつなぎ合わせて再構成する。
【００２６】
図３は、様々な実施の形態に係る処理手順を示すフローチャートである。図３に示されるとおり、不良クラスタが存在する場合、手順４００はプログラミングインタフェース２２０による不良クラスタに関する情報の受信（４０２）で開始される。前述の通り、不良クラスタが存在する場合、不良クラスタに関する情報は、外部機器によってプログラミングインタフェース２２０に与えられてもよいし、プログラミングインタフェース２２０自身によって取得されてもよく、これは実施の形態による。
【００２７】
次に、不良クラスタの数は利用可能な予備クラスタの数よりも小さいか等しいと仮定した場合、プログラミングインタフェース２２０は、少なくとも部分的には不良クラスタに関する情報に基づいて設定処理マッピング論理回路２２４を設定する（４０４）。前述の通り、不良クラスタの数が利用可能な予備クラスタの数よりも多い場合、プログラミングインタフェース２２０はマクロクラスタを使用不能に設定した上でそれが使用不能であることを報告してもよい。
【００２８】
その次に、プログラミングインタフェース２２０は接続デバイス２３０、クラスタ２４０および２５０を設定するための設定処理データを受信して（４０６）もよい。するとプログラミングインタフェース２２０は、もし必要なら設定処理データのアドレスをトランスピアレントな態様で変換した上で、その設定処理データに基づいて接続デバイス２３０、クラスタ２４０および２５０のうちから選択された部材に命令を与える（４０８）。前述の通り、本発明によれば、設定データはトランスピアレントな態様で受信されうるという顕著な効果が有る。これはつまり設定データを送る際には、主要クラスタの中に不良クラスタがあるかどうかということを考慮に入れる必要はなく、また、所望の機能を実現するためにクラスタおよび接続デバイスを設定する際には、この不良クラスタを考慮しなくてもよいことを意味する。
【００２９】
前述の通り、少なくともひとつの「特別な」クラスタを含むヘテロジニアスな実施の形態においては、プログラミングインタフェース２２０はさらに、「特別な」クラスタに備えられたさまざまなリソースのオンオフ状態を設定してもよい。この設定は置き換えられる不良クラスタの機能と「特別な」クラスタの機能とを合わせるために行われる。
【００３０】
ここで以下の点に注意する。本発明は、リコンフィギュラブル回路中の不良素子をトランスピアレントな態様で回避することを目的としているが、そのトランスピアレントな態様は、不良クラスタの数が利用可能な予備クラスタの数よりも小さいか等しい場合にのみ実現されうる。
【００３１】
図４は、一例としてのエミュレーションシステム１００のブロック図である。このエミュレーションシステム１００は予備クラスタを備えるリコンフィギュラブル回路を含む。これは、前述の様々な実施の形態に係るマクロクラスタ２００を備えるリコンフィギュラブル回路を用いたアプリケーションの一例である。
【００３２】
図示の通り、エミュレーションシステム１００はエミュレータ１１０および制御用ワークステーション１２０を備える。エミュレータ１１０は基板間接続または基板上接続もしくはその両方１４０によって互いに接続された複数のリコンフィギュラブル回路装置１３０を含む。リコンフィギュラブル回路装置１３０のうちの少なくともひとつは、お互いに接続された複数のマクロクラスタ１５０を含む。マクロクラスタ１５０のうちの少なくともひとつは上述の実施の形態に係るマクロクラスタ２００のうちのひとつを用いて構成される。
【００３３】
他の実施の形態においては、リコンフィギュラブル回路装置１３０はグループに分けられ、そのグループ毎にそれぞれ複数の回路基板（不図示）上に実装される。そこでは、基板間接続または基板上接続もしくはその両方１４０はある回路基板上のリコンフィギュラブル回路装置１３０のうちの選択されたものを選択的にかつ再設定可能に接続する一または複数の基板上接続を含んでもよい。さらに基板間接続は回路基板の基板上接続をお互いに、選択的にかつ再設定可能に接続する。
【００３４】
一または複数の実施の形態に係るマクロクラスタ２００を備えたリコンフィギュラブル回路装置１３０を除き、エミュレーションシステム１００の構成要素はその要素が属する広いカテゴリーを示しており、このカテゴリーは従来のエミュレーションシステムにおける対応する要素を含む。したがって、ここにおいて詳述することはしない。
【００３５】
本発明によれば、エミュレーションシステム１００は、一もしくは複数の特定用途向けの集積回路のデザインを、それが実際にシリコンに作り込まれる前に模することができ、それによりその集積回路が正しく動作するかチェックすることができる。そして潜在的には特定用途向けの集積回路の開発費を抑えることができるという顕著な効果を有する。
【００３６】
別の実施の形態においては、図１〜図３において説明された予備クラスタを備えるリコンフィギュラブル回路は他のシステムにおいても好適に用いられる。そのシステムは例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）、セットトップボックス（Ｓｅｔ−ｔｏｐ  ｂｏｘｅｓ）、テレビジョンまたはプロジェクタなどであるが、これに限定されない。
【００３７】
以上本発明を実施の形態をもとに説明したが、上述の図で示された実施の形態に対する多種多様な変形例や等価な実施の形態が可能であり、またそうした変形例や等価な実施の形態も本発明の範囲にあることは当業者に理解されるところである。本願は以上で説明された実施の形態のどのような変形や変更をもその範囲に含む。したがって、本発明は特許請求の範囲およびその均等の範囲によってのみ限定される。  
【図１】
2009508243.tif 000002
【図２】
2009508243.tif 000003
【図３】
2009508243.tif 000004
【図４】
2009508243.tif 000005
【国際調査報告】
2009508243.tif 000006
2009508243.tif 000007
2009508243.tif 000008