(57)【要約】  マルチチップ集積回路デバイスにおいてルーティングリソースを選択する方法を説明する。方法は、マルチチップ集積回路デバイス（２００）上に設計を配置すること（６０２）、設計の一部と共に配置されたマルチチップ集積回路デバイスのチップ（２０４、２０６）間の接続を可能にするために必要なバイア（２２６）の数を推定すること（６０４）、チップのエリアについてのバイアの最大数よりも大きなバイア（２２６）の数を有するチップ（２０４）のエリアを識別すること（６０６）、設計の一部と共に配置されたチップ（２０４）内のリソースを定義する区画ウィンドウを選択すること（６０８）であって、区画ウィンドウは、バイアの数を区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること（６０８）、および、チップ（２０４）のエリア内のバイアの数がエリアについてのバイアの最大数以内になるように、区画ウィンドウ内に設計の一部を再配置すること（６１０）、を含む。【選択図】図６
2021514506.tif 000002
【特許請求の範囲】
【請求項１】
マルチチップ集積回路デバイスにおいてルーティングリソースを選択する方法であって、
前記マルチチップ集積回路デバイス上に設計を配置すること、
前記設計の一部と共に配置される前記マルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、
前記チップのエリアについてのバイアの最大数よりも大きいバイアの数を有する前記チップの前記エリアを識別すること、
前記設計の前記一部と共に配置される前記チップ内のリソースを定義する区画ウィンドウを選択することであって、前記区画ウィンドウは、前記バイアの数を前記区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、
前記チップの前記エリア内の前記バイアの数が前記エリアについての前記バイアの最大数以内になるように、前記区画ウィンドウ内に前記設計の前記一部を再配置すること、
を含む、方法。
【請求項２】
前記マルチチップ集積回路デバイス上に設計を配置することは、アクティブオンアクティブマルチチップ集積回路デバイスのチップ内に設計を配置することを含む、請求項１に記載の方法。
【請求項３】
区画ウィンドウを選択することは、前記チップの幾何エリア、前記チップのリソースのセット、および前記チップの複数のタイル、のうちの少なくとも１つを選択することを含む、請求項１または２に記載の方法。
【請求項４】
前記区画ウィンドウの前記選択に基づいて配線長の成長を制御することをさらに含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
配線長の成長を制御することは、水平方向および垂直方向の両方の配線長の成長を制御することを含む、請求項４に記載の方法。
【請求項６】
区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記チップの他のエリアについてのバイアの最大数よりも大きいバイアの数を有する前記チップの前記他のエリアを決定することをさらに含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記チップの前記エリア内に完全に含まれるネット、および前記エリアの外にピンを有するネットを識別することを、さらに含む、請求項１から７のいずれか一項に記載の方法。
【請求項９】
区画ウィンドウを選択することは、前記区画ウィンドウ内のリソースの最大利用率を有する区画ウィンドウの部分を識別することを含む、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
区画ウィンドウを選択することは、カットを最小にするために前記エリア内に完全に含まれるネットを識別することを含む、請求項９に記載の方法。
【請求項１１】
システムであって、
プロセッサと、
前記プロセッサによって実行されたとき、前記プロセッサに動作を実行させる命令を記憶するコンピュータ可読媒体と、
を備え、前記動作は、
前記マルチチップ集積回路デバイス上に設計を配置すること、
前記設計の一部と共に配置される前記マルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、
前記チップの前記エリアについてのバイアの最大数よりも大きいバイアの数を有するチップのエリアを識別すること、
前記設計の前記一部と共に配置される前記チップ内のリソースを定義する区画ウィンドウを選択することであって、前記区画ウィンドウは、前記バイアの数を前記区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、
前記チップの前記エリア内の前記バイアの数が前記エリアについての前記バイアの最大数以内になるように、前記区画ウィンドウ内に前記設計の前記一部を再配置すること、
を含む、
システム。
【請求項１２】
区画ウィンドウを選択することは、前記チップの幾何エリア、前記チップのリソースのセット、および前記チップの複数のタイル、のうちの少なくとも１つを選択することを含む、請求項１１に記載のシステム。
【請求項１３】
前記区画ウィンドウの前記選択に基づいて配線長の成長を制御することをさらに含む、請求項１１または１２に記載のシステム。
【請求項１４】
配線長の成長を制御することは、水平方向および垂直方向の両方の配線長の成長を制御することを含む、請求項１３に記載のシステム。
【請求項１５】
区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含む、請求項１１から１４のいずれか一項に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に集積回路デバイスに関し、特に、マルチチップ集積回路デバイスにおけるルーティングリソースの選択を可能にする方法に関する。
【背景技術】
【０００２】
集積回路デバイスにおいて回路要素を実装する際に使用される技術は、進歩を続けている。たとえば、集積回路デバイスのトランジスタの寸法は縮小を続けており、性能の向上につながっている。同様に、集積回路デバイスの容量に関する需要も増加を続けており、集積回路デバイス上により多くの回路リソースが実装されることにつながっている。
【０００３】
しかしながら、より大きな集積回路デバイスを実装することによって、集積回路デバイスの容量を増加させるための努力は、しばしば、性能を低下させる配置につながる場合がある。集積回路デバイスの容量を増加させるための１つのやり方は、集積回路デバイス内のチップ（チップは、一般にダイとも呼ばれる）の数を増加させることである。たとえば、マルチチップモジュール（ＭＣＭ）集積回路デバイスは、インターポーザ内のトレースを用いて通信するように適合された複数の個々のチップを有するインターポーザデバイスを備える。こうした配置により、チップ間のトレースの配線長が長くなり、結果として集積回路デバイスのチップにおける回路の性能低下につながる可能性がある。
【０００４】
したがって、マルチチップ集積回路デバイスにおけるルーティングリソースのための改良された方法およびシステムが求められる。
【発明の概要】
【０００５】
マルチチップ集積回路デバイスにおいてルーティングリソースを選択する方法を説明する。方法は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置されたマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きなバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置されたチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数を区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内になるように、区画ウィンドウ内に設計の一部を再配置すること、を含む。
【０００６】
プロセッサおよびコンピュータ可読媒体を備えるシステムも記載され、コンピュータ可読媒体は、プロセッサによって実行されたとき、プロセッサに動作を実行させる命令を記憶し、動作は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置されたマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きなバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置されたチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数をウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内になるように、区画ウィンドウ内に設計の一部を再配置すること、を含む。
【０００７】
プロセッサによって実行されたとき、プロセッサに動作を実行させる命令を記憶する非一時的コンピュータ可読媒体であって、動作は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置されたマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きなバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置されたチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数をウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内になるように、区画ウィンドウ内に設計の一部を再配置すること、を含む。
【図面の簡単な説明】
【０００８】
【図１】プログラム可能リソースを有する集積回路の例示的ブロック図である。
【図２】集積回路デバイスの断面図である。
【図３】集積回路デバイスの別の断面図である。
【図４】本明細書で説明するプロセスおよび方法を実装するのに適したコンピュータ４０１を有する、システム４００のブロック図である。
【図５】プログラム可能論理デバイス（ＰＬＤ）のための論理設計システムの例示的な例である。
【図６】マルチチップ集積回路デバイスのルーティングリソースを選択する方法を示すフローチャートである。
【図７】ウィンドウの寸法の関数として配線長（ＷＬ）の成長を制御しながら、シリコン貫通バイア（ＴＳＶ）の使用率を減少させるために区分問題を作成および解決するための方法を示すフローチャートである。
【図８】ウィンドウの寸法の関数としてのＴＳＶ使用率の割合を示す、第１の表である。
【図９】ウィンドウの寸法の関数としての配線長の増加を示す、第２の表である。
【図１０】ウィンドウの寸法の関数としての水平配線長の増加を示す、第３の表である。
【図１１】ウィンドウの寸法の関数としての垂直配線長の増加を示す、第４の表である。
【図１２】再構成可能回路を有する集積回路の別の例のブロック図である。
【発明を実施するための形態】
【０００９】
下記に示すシステムおよび方法は、積層集積回路デバイスのチップ間のカット（すなわち、Ｚ方向の電気接続）の数を制御するため、および、積層ＩＣデバイス内での複数チップの使用に起因する配線長の成長を最小にするために、積層集積回路（ＩＣ）デバイス上に配置された回路設計上でウィンドウベースの区分化を使用する。
【００１０】
システムおよび方法は、集積回路デバイス内でのＺリソース（たとえば、ＴＳＶ）の過剰使用の問題に対処する。設計区分化を使用して層全体にわたるカットを最小にすることが可能である一方で、設計区分化は、減少した配線長のすべての利得を失わせる可能性もある。さらに、配置後スワップベース最適化が実行可能であり、Ｚカットは、高Ｚカット使用のエリアにおいて、層間で局在化論理をスワッピングすることによって低減可能である一方で、スワップベースアルゴリズムは、一般に、局所的最小問題を有し、低ピンカウントのネット上のカットが、スワップベースアルゴリズムを使用して論理の小セットを移動させている間に、それらを低減させる傾向のみがある。Ｚリソースの数を超えないことを保証するために区画ウィンドウを使用することによって、複数チップを有するＩＣデバイスの配線長の成長を制御することができる。
【００１１】
各チップ上のルーティングリソースの減少を維持するために、配線長の成長を最小にし、したがって積層ＩＣデバイスのコストを低減することが望ましい。下記に示すシステムおよび方法は、任意のタイプのマルチチップＩＣを用いて実装可能である一方で、システムおよび方法は、アクティブオンアクティブ（ＡＯＡ）シリコン積層化に使用可能であり、チップを非常に接近させて積層できるようにする。ＡｏＡ技術において、ＩＣチップは共に結合され、互いに積層されたチップのセットを作成する。チップは、１つのケースでは、すべてのチップ層全体にわたってルーティングファブリックを接続するために使用される、ＢＴＳＶ（背面シリコン貫通バイア）などのＴＳＶを介して通信する。これらのＢＳＴＶ接続（ＺカットまたはＺ接続と呼ぶことができる）の数は、貫通するチップのＸ，Ｙエリアのサイズに依存する。たとえば、７ｎｍのトランジスタ寸法を有するアーキテクチャにおいて、ＢＴＳＶの数は、ＢＴＳＶがチップのファブリックにどのように接続されるかに依存して、タイル当たり３２から６４の範囲とすることができる。
【００１２】
チップの積層化の一利点は、ＣＬＢが隣り合うのではなくＣＬＢの上にあるため、プログラム可能論理デバイス（ＰＬＤ）内などの論理は互いにかなり近くに配置可能なことである。たとえば、２層のファブリックを有することは、一般に、ＣＬＢサイズをＸ，Ｙ方向に２倍にし、従来のデバイスにおけるルーティングを２倍にする。しかしながら、Ｚ方向の接続を可能にするリソース（ＢＴＳＶなど）を使用することによって、ネット負荷およびドライバは共により近くに配置可能であり、ネットは長さのより短いリソースを用いてルーティング可能である。このＺ方向のリソースの使用により、各チップ上のルーティングリソースを減少させること、したがって、金属層要件およびコストの削減を可能にする。さらに、モノリシックデバイスと同じ容量のマルチスタックデバイスは、Ｚ接続の数を超えない（すなわち、Ｚリソースより多くのネットカットが層全体にわたって必要である）という条件で、よりルーティング可能である。
【００１３】
本明細書は、新規であるとみなされる本発明の１つまたは複数の実装の特徴を定義する請求項を含む一方で、回路および方法は、図面と共に説明される考察からより良く理解されることが考えられる。様々な回路および方法が開示される一方で、回路および方法は、様々な形で具体化可能な本発明の配置の単なる例であることを理解されたい。したがって、本明細書において開示される特定の構造および機能上の詳細は、限定的と解釈されるべきではなく、単に請求項の基準として、および、当業者が事実上任意の適切に詳細な構造において本発明の配置を様々に採用するための教示の代表的な基準として、解釈されるべきである。さらに、本明細書で使用される用語および言い回しは限定的であるものとは意図されず、回路および方法の理解可能な説明を提供するものと意図される。
【００１４】
第１に図１を見ると、プログラム可能リソースを有する集積回路デバイス１００のブロック図が示されている。特に、入力／出力ポート１０２が、構成可能論理要素１０９を有するプログラム可能リソース１０６を制御する、制御回路１０４に結合されている。構成データは、構成コントローラ１１０によって構成メモリ１０８に提供可能である。構成データは、プログラム可能リソース１０６の動作を実行可能にする。メモリ１１３は、制御回路１０４およびプログラム可能リソース１０６に結合可能である。トランシーバ回路１１４は、制御回路１０４、プログラム可能リソース１０６、およびメモリ１１３に結合可能であり、Ｉ／Ｏポート１１６および１１７を用いて集積回路において信号を受信することができる。他のＩ／Ｏポートは、図に示されるように制御回路１０４に結合されるＩ／Ｏポート１１８などの集積回路デバイスの回路に結合可能である。クロッキングネットワーク１２０は、図１の回路の様々な要素に結合される。図１の集積回路デバイスは、下記でより詳細に説明するように、垂直配置で積層されたチップを有するマルチチップ集積回路デバイスにおいて実装可能である。例としてプログラム可能リソースを有する集積回路デバイスが示されているが、下記に示すシステムおよび方法は、任意のタイプの集積回路デバイスにおいて実装可能であることを理解されたい。さらに、プログラム可能リソースを有する集積回路に関する追加の詳細は、図１２を参照しながら提供される。
【００１５】
次に図２を見ると、集積回路デバイスの断面図が示されている。集積回路２００は、複数の積層ＩＣチップを有するパッケージ基板２０２を備える。より具体的に言えば、システムおよび方法は任意数のチップを用いて実装可能であるが、図２の例示の実装は、３つのＩＣチップ２０４、２０６、および２０８を備える。チップは、チップのバイア、ならびに、接点要素２１２および２１２を含むチップ間の接続要素などの使用を介して、チップ間の通信を可能にするように構成される。図２に示されるように、第１のＩＣチップ２０４は、アクティブ領域２１６上に形成される複数の金属層２１４を備え、第２のＩＣチップ２０６は、アクティブ領域２２０上に形成される複数の金属層２１８を備え、第１のＩＣチップおよび第２のＩＣチップは接点要素２１０によって接続される。第３のＩＣチップ２０８は、アクティブ領域２２４上に形成される複数の金属層２２２を備える。複数の金属層は、一般に、ＩＣチップ内の信号の通信を可能にするトレースおよびバイアを含む。ＢＴＳＶなどのバイア２２６は、パッケージリッド２２８を有する集積回路デバイスのＩＣチップ間での信号の通信を可能にする。図２のＩＣチップの配置は、チップの前面または背面接続を示す１つの例示の配置を示すが、ＩＣチップは他の配置でも実装可能であることを理解されたい。
【００１６】
次に図３を見ると、集積回路デバイスの別の断面図が示されており、図３の例示の配置は、下記でより詳細に説明するように、トレースの長さを減少させるために使用可能な特定の接続およびバイアを示す。より具体的に言えば、基板２０２上の、ここでは例としてはんだボールとして示される接点要素３０２は、トレース３０４およびバイア３０６を用いてＩＣチップに電気的に接続可能である。ここでははんだバンプとして示される接点要素３０８は、パッケージ基板２０２と接触層３０９の接点要素との間の接続を可能にする。ここでははんだバンプとして示される接点要素３１０は、接触層３１２および３１４を用いてチップ２０４とチップ２０６との間の接続を可能にする。ここでははんだバンプとして示される接点要素３１６は、接触層３１８および３２０を用いてチップ２０８とチップ２０６との間の接続を可能にする。
【００１７】
いくつかの従来のマルチチップモジュールの場合のような、インターポーザ上の水平配置での複数チップの実装ではなく、チップは垂直に（すなわち、Ｚ方向に）積層される。チップを垂直に積層することによって、チップがインターポーザ上で隣り合う配置に比べて、２つのチップの回路要素を互いにより近くすることができる。すなわち、積層チップ間で（すなわち、図３に示されるように、Ｚ方向または垂直方向で）、ＢＳＴＶなどのバイアを用いて接続を実装することによって、２つのチップ内の回路要素間の距離は、水平に互いに近接して配置されたチップに比べて短い。ＡｏＡ集積回路デバイスを使用するとき、チップの背面をＩＣチップの形成中に薄くするかまたは除去し、チップの厚みを減少させ、したがって、ＩＣ内に積層された異なるチップ内の回路間を信号が移動する必要のある距離を減少させることが可能であることに留意されたい。
【００１８】
次に図４を見ると、本明細書で説明するプロセスおよび方法を実装するのに適したコンピュータ４０１を有するシステム４００の、例示的な例を示すブロック図が示されている。たとえば、コンピュータ４０１は、図５のシステム５００ならびに図１０および図１１の方法を実装するために使用可能である。コンピュータ４０１は、プロセッサ４０２、メモリ４０４、様々なサポート回路４０５、およびＩ／Ｏインターフェース４０３を含む。プロセッサ４０２は、当分野で既知の任意のタイプのマイクロプロセッサとすることができる。プロセッサ４０２のためのサポート回路４０５は、従来のキャッシュ、電源、クロック回路、データレジスタ、Ｉ／Ｏインターフェースなどを含む。Ｉ／Ｏインターフェース４０３は、メモリ４０４に直接結合するか、またはプロセッサ４０２を介して結合することができる。Ｉ／Ｏインターフェース４０３は、従来のキーボード、マウス、プリンタ、ディスプレイなどの、様々な入力デバイス４１２および出力デバイス４１１に結合することができる。
【００１９】
メモリ４０４は、本明細書で説明するシステムおよび方法を実装するための、１つまたは複数のプログラムおよび／またはデータのすべてまたは一部を記憶する。本開示の１つまたは複数の態様が、コンピュータ実行ソフトウェアプログラムとして実装されるように開示されているが、当業者であれば、本開示は、ハードウェア、ソフトウェア、または、ハードウェアおよびソフトウェアの組み合わせにおいて、実装可能であることを理解されよう。こうした実装は、様々なプログラムを独立に実行する多数のプロセッサと、ＡＳＩＣなどの専用ハードウェアとを含む。
【００２０】
コンピュータ４０１は、ＯＳ／２、Ｊａｖａ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ、Ｌｉｎｕｘ、Ｓｏｌａｒｉｓ、Ｕｎｉｘ、Ｗｉｎｄｏｗｓ、その他の既知のプラットフォームとすることが可能な、オペレーティングシステムを用いてプログラミング可能である。オペレーティングシステムの少なくとも一部が、メモリ４０４内に配設可能である。メモリ４０４は、ランダムアクセスメモリ、読み取り専用メモリ、磁気抵抗性読み取り／書き込みメモリ、光学読み取り／書き込みメモリ、キャッシュメモリ、磁気読み取り／書き込みメモリなど、ならびに下記で説明するような信号担持媒体、のうちの１つまたは複数を含むことができる。
【００２１】
本開示は、ソフトウェアにおいて、および／または、ソフトウェアとハードウェアとの組み合わせにおいて、たとえば特定用途集積回路（ＡＳＩＣ）、フィールドＰＧＡを含むプログラム可能ゲートアレイ（ＰＧＡ）、あるいは、ハードウェアデバイス、コンピューティングデバイス、または任意の他のハードウェア等価物上に展開される状態機械を使用して、実装可能であること、たとえば、前述の方法に関連するコンピュータ可読命令を使用して、集積回路デバイス内のルーティングリソースを選択する方法のステップ、機能、および／または動作を実行するためのハードウェアプロセッサを構成できることに、留意されたい。一実施形態において、本方法のための命令およびデータ（たとえば、コンピュータ実行可能命令を含むソフトウェアプログラム）は、メモリ４０４内にロードすること、および、方法のステップ、機能、または動作を実装するために、プロセッサ４０２、たとえばハードウェアプロセッサによって実行することが可能である。さらに、ハードウェアプロセッサが「動作」を実行するために命令を実行するとき、ハードウェアプロセッサは、動作を直接実行する、および／または、別のハードウェアデバイスまたは構成要素（たとえば、コプロセッサなど）の動作の実行を容易にする、動作の実行を指示する、または動作の実行のために協同する、ハードウェアプロセッサを含むことができる。
【００２２】
本開示の一態様は、コンピュータシステムと共に使用するためのプログラム製品として実装される。プログラム製品のプログラムは、例示の機能を定義し、（ｉ）書き込み不可記憶媒体（たとえば、ＣＤ−ＲＯＭドライブまたはＤＶＤドライブによる読み取りが可能な、ＣＤ−ＲＯＭまたはＤＶＤ−ＲＯＭディスクなどの、コンピュータ内の読み取り専用メモリデバイス）上に永続的に記憶される情報、（ｉｉ）書き込み可能記憶媒体（たとえば、ディスケットドライブまたはハードディスクドライブ内のフロッピーディスク、あるいは読み取り／書き込み可能ＣＤまたは読み取り／書き込み可能ＤＶＤ）上に記憶される可変情報、または、（ｉｉｉ）ワイヤレス通信を含むコンピュータネットワークまたは電話網などを介して、通信媒体によってコンピュータに伝達される情報、を含むが限定されない、様々な信号担持媒体上に含めることが可能である。後者の例は、具体的には、インターネットおよび他のネットワークからダウンロードされる情報を含む。こうした信号担持媒体は、本開示の機能を指示するコンピュータ可読命令を担持しているとき、本開示の例を表す。
【００２３】
上記で説明した方法に関するコンピュータ可読またはソフトウェア命令を実行するプロセッサは、プログラムプロセッサまたは特殊プロセッサとして認識可能である。したがって、本開示の本方法５００（関連付けられたデータ構造を含む）は、有形または物理（広義に「非一時的」）コンピュータ可読記憶デバイスまたは媒体上に、たとえば、揮発性メモリ、不揮発性メモリ、ＲＯＭメモリ、ＲＡＭメモリ、磁気または光学式のドライブ、デバイス、またはディスケットなどの上に、記憶可能である。さらに、「有形」コンピュータ可読記憶デバイスまたは媒体は、物理デバイス、ハードウェアデバイス、または、触覚によって認識可能なデバイスを含む。より具体的に言えば、コンピュータ可読記憶デバイスは、コンピュータまたはアプリケーションサーバなどのプロセッサまたはコンピューティングデバイスによってアクセスされるべき、データおよび／または命令などの、情報を記憶する機能を提供する、任意の物理デバイスを含むことができる。
【００２４】
次に図５を見ると、本開示の１つまたは複数の態様に従った、ＰＬＤのための論理設計システムの例示的な例が示される。図５は、本開示の１つまたは複数の態様に従った、プログラム可能論理デバイス（ＰＬＤ）のための論理設計システム５００の例示的な例を示すブロック図である。システム５００は、論理キャプチャツール５０２、合成ツール５０４、フロアプランナ５０８、制約エディタ５１０、および実装ツール５０６を含む。本例において、システム５００は、ターゲットＦＰＧＡを使用して論理設計を実装するように構成される。したがって、実装ツール５０６は、マップツール５１２、プレースアンドルート（ＰＡＲ）ツール５１４、およびビットストリーム生成器１２１１を含む。システム５００は、たとえばコンピュータ４００を使用して実装可能である。特に、ツールはメモリ内に記憶され、中央処理ユニット（ＣＰＵ）による実行のために構成された、１つまたは複数のソフトウェアプログラムの一部とすることができる。
【００２５】
マルチチップ集積回路デバイスにおけるルーティングリソースを選択するシステムおよび方法のいくつかの態様によれば、集積回路の回路リソースの配置は、特定の領域に許可されているよりも多くの２チップ間のカットを有することを避けるために、反復的に修正可能である。ＰＡＲツール５１４は、配置およびルーティングの両方を提供する。しかしながら、本発明の様々な態様に従ったマルチチップ集積回路デバイスにおいてルーティングリソースを選択するための配置プロセスを説明する前に、集積回路デバイス内の回路の配置およびルーティングを含む、集積回路デバイスをレイアウトするプロセスの例示的記述を説明する。システム５００は、ルーティングを含む設計フローを介して回路設計を処理する。ＩＣ内の回路設計を実装することは、プログラム可能ＩＣまたは特定用途向けＩＣ（ＡＳＩＣ）のいずれであっても、必然的に、設計フローを介して回路設計を処理することを伴う。設計フローは、複数の異なる段階を含む。これらの段階は、一般に、合成、配置、およびルーティングを含む。
【００２６】
合成は、回路の抽象的プログラム記述を低レベル設計実装に変換または転換するプロセスを表す。回路の抽象的プログラム記述は、回路の挙動を説明し、回路の「挙動記述」または「レジスタ転送レベル（ＲＴＬ）記述」とも呼ばれる。挙動記述は、しばしばＨＤＬを使用して指定される。合成を介して生成される低レベル設計実装は、典型的には相互接続論理ゲートとして指定される。
【００２７】
合成は、マッピングも含むことができる。マッピングは、低レベル回路設計の論理ゲートを、回路設計が実装されるべき特定のＩＣ、すなわち「ターゲットＩＣ」内で実際に利用可能な様々なタイプの物理回路ブロックと、相関または合致させるプロセスである。たとえば、ルックアップテーブル（ＬＵＴ）は複合関数を実装可能であるため、低レベル設計実装の１つまたは複数の論理ゲートを、単一のＬＵＴ、またはターゲットＩＣの他のプログラム可能タイルにマッピングすることができる。マッピングされた回路設計は、低レベル論理ゲートとは対照的に、ターゲットＩＣ上で利用可能な特定の回路ブロックに関してではあっても、低レベル設計実装と同じ機能性を指定する。
【００２８】
配置は、合成された回路設計の要素を、ターゲットＩＣ上に特定の場所を有する回路ブロックおよび／またはリソースの特定のインスタンスに割り当てるプロセスである。配置されると、回路設計の回路要素は、マッピングの後および配置の前の場合のように、特定タイプの回路ブロックおよび／またはリソースにのみ割り当てられるのとは対照的に、ターゲットＩＣ上に特定の場所を有する。回路設計の回路要素の場所は、いったん配置されると、回路要素が割り当てられた回路ブロックおよび／またはリソースのインスタンスのターゲットＩＣ上の場所である。ルーティングは、配置後に、ターゲットＩＣの様々な回路ブロックを電気的に結合するために、配線、プログラム可能相互接続ポイント（ＰＩＰ）、ＰＩＰ設定、および／または他の相互接続などの、特定のルーティングリソースを選択するプロセスである。
【００２９】
ＩＣデバイス内の積層チップの１つの大きな利点は、チップがＺ方向にチップの上にある場合、論理を共により近くに配置できることである。たとえば、２層のファブリックを有することで、ＣＬＢサイズをＸ，Ｙ方向に２倍にし、ルーティングを２倍にする。チップをＺ方向に積層することによって、ネット負荷およびドライバはそれほど遠く離れることはなく、Ｚリソース（たとえば、ＢＴＳＶ）を使用することによって、ネットはより短い長さのリソースを用いてルーティング可能である。結果として、各チップ上のルーティングリソースを減少させること、したがって金属層要件およびコストを減少させることが可能である。マルチスタックデバイスは、Ｚ接続の数がＺ接続の最大数を超えない限り、およびしたがってＺ接続の最大数内である（すなわち、そのエリア内の層全体にわたるネットカットが、そのエリア内で利用可能なＺリソースよりも多い）限り、同じ容量を有するモノリシックデバイスよりもルーティング可能である。マルチチップ集積回路デバイス内のルーティングリソースの選択を可能にするためのシステムおよび方法は、集積回路デバイスのチップを接続するために使用されるトレースの配線長を減少させること、およびしたがって、金属ルーティング要件を減少させ、集積回路デバイスの性能を向上させることが可能である。
【００３０】
最大のＸ，Ｙ配線長減少を得るために、Ｚ接続性制約を無視する配置アルゴリズムを実行することが可能である。しかしながら、これにより、使用可能な遷移より多くのＺ遷移（層全体にわたるネットカット）を必要とする配置を生成することができる。こうした設計配置は保証しなければならないため、こうした配置は実行不可能であるか、または設計はルーティング不能となる。下記でより詳細に説明するように、マルチチップＩＣのためのルーティングリソースを選択するためのシステムおよび方法は、回路設計の要素を接続するために必要なトレースまたは他の接点要素の配線長を最小にすることによって、設計の配置を向上させることができるが、Ｚカットの量を超えずにＺカットの使用を最大にすることもできる。一実装によれば、ウィンドウベースの区分化は、Ｚリソースの使用の減少を必要とする論理配置のエリア内で使用される。使用されるウィンドウのサイズを変化させることによって、Ｚカット減少のためのＸ，Ｙ配線長とトレードオフすることが可能である。さらに、異なるアスペクト比でウィンドウを変化させることによって、使用可能なルーティング構造に基づいて重要な可能性がある、ＸまたはＹのいずれかの方向に配線長をさらに追加するかどうかを制御することが可能である。たとえば、特定のＩＣデバイスのチップは、水平方向に比べて垂直方向で、２倍のルーティングリソースを有する可能性がある。したがって、低減されたＺ接続性について、垂直配線長をトレードオフすることが有益な可能性がある。区分器は配置の間、早急にすべてのネットに同時に対処するより大きな問題に取り組むため、ウィンドウベースの区分化は、スワップベース方法に存在する多くの局所的最小問題も考慮する。
【００３１】
製造の観点から、Ｚカット密度を分析することが有益であり得、過剰使用／高利用のエリアは、実験結果に基づいて処理されることになる。実験結果を使用することで、全体の配線長の成長を最小にし、必要な場合にのみＺカットの使用を減少させる。実験結果を設計最適化に適切に利用するために、ルータアルゴリズムがＺリソースをどのように利用するかに基づいて、結果を分析することが必要となる。これらのリソースは、単一層（すなわち、積層チップのうちの単一チップ）内の輻輳を迂回するためなどの、単に層全体にわたってカットされるネットがルーティング可能であること以外の理由のために、使用可能である。
【００３２】
次に図６を見ると、フローチャートは、マルチチップ集積回路デバイスのルーティングリソースを選択する方法を示す。ブロック６０２において、マルチチップ集積回路デバイス上に設計が配置される。ブロック６０４において、チップ間の接続を可能にするために必要なバイアの数が推定される。ブロック６０５において、マルチチップＩＣデバイスのエリア内の配置がバイア要件を超えるかどうかが判別される。すなわち、次いで、例としてバイアとして説明する、チップのエリアについてのバイアの最大数を超えるＺ接続の数を有するチップのエリアが存在するかどうかが判別される。存在しない場合、プロセスは終了となる。存在する場合、ブロック６０６において、チップのエリアについてのバイアの最大数を超えるバイアの数を有するチップのエリアが識別される。ブロック６０８において、設計の一部と共に配置されるチップ内のリソースを定義する区画ウィンドウが選択され、区画ウィンドウは、バイアの数が再配置後の区画ウィンドウについてのバイアの最大要件に合致できるように選択される。ブロック６０９において、部分化問題が形成および解決される。ブロック６１０において、区画ウィンドウ内の設計の一部は、チップのエリア内のバイアの数がエリアについてのバイアの最大数を超えないように、ソリューションに基づいて再配置される。
【００３３】
次に図７を見ると、フローチャートは、ウィンドウの寸法の関数としての配線長の成長を制御しながら、ＴＳＶ使用率を低下させるために区分化問題を作成および解決するための方法を示す。ネットリストは、回路内の構成要素の端子またはピン、および端子を相互接続する電気コネクタのリストである。ネットは、ピンを接続するＩＣの金属層の電気トレースおよびバイアを表す。ブロック７０２において、エリア内に完全に含まれるすべてのネット（ＮＥＴＳ＿ＩＮＴＥＲＮＡＬ）が識別される。ブロック７０４において、同じ層上にあるエリア外にピンを有するすべてのネット（ＮＥＴＳ＿ＳＡＭＥＰＬＡＮＥ＿Ｌ＃）が識別される。ブロック７０６において、同じ層上にないエリア外にピンを有するすべてのネット（ＮＥＴＳ＿ＣＵＴＯＵＴＳＩＤＥ）が識別される。
【００３４】
ブロック７０８において、区分器が定式化および解決される。例を挙げると、区分器問題は、チップのエリアについての最大利用／利用の許容分布を識別することができる。すなわち、エリア内の所与の割合のＣＬＢなどの、エリア内のある割合のリソースが利用可能である。カットを最小にするためにＮＥＴＳ＿ＩＮＴＥＲＮＡＬも識別される。カットを最小にするために同じ平面内のネット（ＮＥＴＳ＿ＳＡＭＥＰＬＡＮＥ＿Ｌ＃）が識別され、平面（ＰＬＡＮＥ  Ｌ＃）にロックされる。すでにカットを有するすべてのネットが無視される。次いで、配置問題が解決され、ソリューションに対して定義された平面上の論理は、できる限りオリジナルのＸ，Ｙの場所の近くに配置される。
【００３５】
デバイスの大半で、ネットは、関連付けられたカットを最小にできるようにするために、まだＮＥＴＳ＿ＩＮＴＥＲＮＡＬまでロックダウンされていない外部負荷と共に追加可能であることに留意されたい。処理されたエリアの外部のピンが同じ平面内にある場合、それらは、同じ平面内のネット（ＮＥＴＳ＿ＳＡＭＥＰＬＡＮＥ＿Ｌ＃）として扱うことができる。同じ平面上にあるという、または異なる平面上であるが接続に関して近い重み付けを有するという、タイミング理由にとって、いくつかの接続がより重要である場合、これらの目標を達成するように区分器を誘導することが可能である。段階的手法においてＷＬをさらに減少させるために、パス後ＷＬ最小化を行うことができる。
【００３６】
区分器は、異なる機能を有することも可能であり、また、設計の配置を決定する際にいくつかの異なるステップに至る可能性もある。たとえば、双区分器を使用するときに、アルゴリズム上で再帰的処理を行うこと、および、区画間で一度適切にカットされたネットを管理することが必要な可能性があり、他のパスはそれらを処理すべきではなく、外部ネットカット（ＮＥＴＳ＿ＣＵＴＯＵＴＳＩＤＥ）として扱うべきである。
【００３７】
図６〜図７の方法の様々な要素は、説明したように図１〜図５の回路を使用して、または何らかの他の適切な回路を使用して、実装可能である。方法の特定の要素が記載されているが、図１〜図５の開示に従って、方法の追加の要素、または要素に関する追加の詳細が実装可能であることを理解されたい。マルチチップＩＣデバイスのＩＣチップの例示の配置が示されているが、ＩＣデバイス内のルーティングリソースを選択するシステムおよび方法は、同様の場所およびルート問題が存在すると仮定すれば、他の３Ｄデバイス実装において使用可能であることに留意されたい。
【００３８】
例示的結果は、タイルベースのオプティマイザを使用してスライスの８７％を利用する設計を用いて、４層デバイスについて生成された。図８〜図１１の表は、エリア内のバイアの数がエリアについての所定の最大値を超えない旨を保証するために、区画ウィンドウの選択の効果を示す。回路設計の初期配置は、Ｚ接続に関係なく行うことができる。図８は、水平および垂直の両方の寸法によって定義される区画ウィンドウの関数として使用される、Ｚカットの割合を示す（水平および垂直の寸法は、前述のようにウィンドウを定義するための任意の基準に関することができる）。図８に示されるように、オリジナルの配置は、その領域内で許容できるＺカットの最大数を超える（すなわち、左上のボックス内に示される１１９よりも大きい）領域内のＺカットにつながる。異なるウィンドウが定義される場合、領域についてのＺカットの数は減少することがわかる。例として囲まれたボックスによって示されるように、利用可能なＺカットの９７パーセントを使用する要求されるＺカットは、ハイライト表示されたボックス内に示されるように、２×４の区画ウィンドウを用いて達成可能である。異なる数のＺカットにつながる多くの異なる寸法が選択可能であるが、図９〜図１１を参照しながら下記で説明するように、配線長要件は増加することになる。
【００３９】
より具体的に言えば、区画ウィンドウの水平寸法の関数としての総配線長における増加が、図９に示されている。たとえば領域内の総配線長は、最初は１００（すなわち、１００％）であり、１０４は１０４％を示すか、または区画のより大きな区画ウィンドウを使用することによって、配線長における４パーセントの増加（したがって、設計の一部が配置されるオリジナル領域におけるより少ないＺカット）を示すことになる。図９を見るとわかるように、区画ウィンドウの水平および垂直の寸法の寸法が増加すると、Ｚカットはウィンドウ内のＺカットの最大数よりも少なくなることを保証し、領域内に配置される設計の一部の配線長も増加することになる（表の右下隅が最も増加する）。ハイライト表示されたボックス内に示される（すなわち、水平寸法２および垂直寸法１を有する）ウィンドウを選択することによって、Ｚカットの数が最大の許容Ｚカットの９７％まで減少するときに、配線長には４％のみの増加が存在する。
【００４０】
図１０および図１１は、配線長の変化が、水平方向対垂直方向での変化に依存して、どのように異なって変動し得るかを示す。また、ウィンドウのアスペクト比によって、垂直対水平のＷＬ成長を制御可能であることを示している。より具体的に言えば、配線長は図１０の実装において、垂直方向での変化に比べて水平方向での変化で、より大きく増加するが、配線長は図１１の実装において、水平方向での変化に比べて垂直方向での変化で、より大きく増加する。すなわち、集積回路デバイスにおいて使用されるチップの特性に依存して、配線長における増加を最小にしながら、Ｚカットの実装をより容易にするようにアスペクト比を選択するべきである。配線長が、水平方向においてより大きな寸法を伴う区画ウィンドウについてより大きく増加する特性を有するデバイスでは、区画ウィンドウは、水平方向よりも大きな垂直寸法を伴うアスペクト比を有するように選択するべきである。配線長が、垂直方向においてより大きな寸法を伴う区画ウィンドウについてより大きく増加する特性を有するデバイスでは、区画ウィンドウは、垂直方向よりも大きな水平寸法を伴うアスペクト比を有するように選択するべきである。Ｚカットを最大にし、配線長を最小にすることによって、積層マルチチップＩＣデバイスの性能を向上させることができる。
【００４１】
次に図１２を見ると、チップのうちの１つとして実装可能な再構成可能回路を有する集積回路の別の例のブロック図が示されている。プログラム可能リソースを有するデバイスは、プログラム可能リソースを有する特定用途向け集積回路（ＡＳＩＣ）などの、任意のタイプの集積回路デバイスにおいて実装可能である一方で、他のデバイスは、専用プログラム可能論理デバイス（ＰＬＤ）を備える。１つのタイプのＰＬＤは、結合プログラム可能論理デバイス（ＣＰＬＤ）である。ＣＰＬＤは、２つまたはそれ以上の共に接続された、相互接続スイッチマトリクスによるリソースの入力／出力（Ｉ／Ｏ）のための、「機能ブロック」を含む。ＣＰＬＤの各機能ブロックは、プログラム可能論理アレイ（ＰＬＡ）またはプログラム可能アレイ論理（ＰＡＬ）デバイスで使用されるものと同様の、２層ＡＮＤ／ＯＲ構造を含む。別のタイプのＰＬＤは、フィールドプログラム可能ゲートアレイ（ＦＰＧＡ）である。典型的なＦＰＧＡでは、構成可能論理ブロック（ＣＬＢ）のアレイがプログラム可能入力／出力ブロック（ＩＯＢ）に結合される。ＣＬＢおよびＩＯＢは、プログラム可能ルーティングリソースの階層によって相互接続される。これらのＣＬＢ、ＩＯＢ、およびプログラム可能ルーティングリソースは、典型的にはオフチップメモリからＦＰＧＡの構成メモリセル内へ構成ビットストリームをロードすることによってカスタマイズされる。これらの両方のタイプのプログラム可能論理デバイスについて、デバイスの機能性は、その目的でデバイスに提供される構成ビットストリームの構成データビットによって制御される。構成データビットは、揮発性メモリ（たとえば、ＦＰＧＡおよびいくつかのＣＰＬＤにおけるような、静的メモリセル）内、不揮発性メモリ（たとえば、いくつかのＣＰＬＤにおけるような、フラッシュメモリ）内、または、任意のタイプのメモリセル内に記憶可能である。
【００４２】
図１２のデバイスは、マルチギガバイトトランシーバ（ＭＧＴ）１２０１、ＣＬＢ  １２０２、ランダムアクセスメモリブロック（ＢＲＡＭ）１２０３、入力／出力ブロック（ＩＯＢ）１２０４、構成およびクロッキング論理（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１２０５、デジタル信号処理ブロック（ＤＳＰ）１２０６、特殊化入力／出力ブロック（Ｉ／Ｏ）１２０７（たとえば、構成ポートおよびクロックポート）、および、デジタルクロックマネージャ、アナログ対デジタル変換器、システム監視論理などの他のプログラム可能論理１２０８を含む、多数の異なるプログラム可能タイルを有する、ＦＰＧＡアーキテクチャ１２００を備える。いくつかのＦＰＧＡは、たとえばソフトウェアアプリケーションを実装するために使用可能な専用プロセッサブロック（ＰＲＯＣ）１２１０も含む。
【００４３】
いくつかのＦＰＧＡにおいて、各プログラム可能タイルは、各近接タイルにおける対応する相互接続要素との間に標準化接続を有するプログラム可能相互接続要素（ＩＮＴ）１２１１を含む。したがって、まとめられたプログラム可能相互接続要素は、例示のＦＰＧＡに対してプログラム可能相互接続構造を実装する。プログラム可能相互接続要素１２１１は、図１２の頂部に含まれる例によって示されるように、同じタイル内のプログラム可能論理要素との間の接続も含む。
【００４４】
たとえば、ＣＬＢ  １２０２は、ユーザ論理に単一のプログラム可能相互接続要素１２１１を加えたものを実装するようにプログラム可能な、構成可能論理要素（ＣＬＥ）１２１２を含むことができる。ＢＲＡＭ  １２０３は、１つまたは複数のプログラム可能相互接続要素に加えて、ＢＲＡＭ論理要素（ＢＲＬ）１２１３を含むことができる。ＢＲＡＭは、構成論理ブロックの分布ＲＡＭとは別の専用メモリを含む。典型的には、タイルに含まれる相互接続要素の数はタイルの高さに依存する。図示された実装において、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数も使用可能である。ＤＳＰタイル１２０６は、適切な数のプログラム可能相互接続要素に加えて、ＤＳＰ論理要素（ＤＳＰＬ）１２１４を含むことができる。ＩＯＢ  １２０４は、プログラム可能相互接続要素１２１１の１つのインスタンスに加えて、たとえば入力／出力論理要素（ＩＯＬ）１２１５の２つのインスタンスを含むことができる。デバイスの接続の場所は、その目的でデバイスに提供された構成ビットストリームの構成データビットによって制御される。プログラム可能相互接続は、構成ビットストリームのビットに応答して、様々な信号をプログラム可能論理内に実装された回路、あるいは、ＢＲＡＭまたはプロセッサなどの他の回路に結合するために、相互接続線を備える接続を使用可能にする。
【００４５】
図示された実装において、チップの中央近くのカラム状エリアが、構成、クロック、および他の制御論理に使用される。このカラムから延在する構成／クロック分布領域１２０９は、ＦＰＧＡの幅にわたってクロックおよび構成信号を分布するために使用される。図１２に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的なカラム構造を分断する追加の論理ブロックを含む。追加の論理ブロックは、プログラム可能ブロックおよび／または専用論理とすることができる。たとえば図１２に示されるプロセッサブロックＰＲＯＣ  １２１０は、ＣＬＢおよびＢＲＡＭのいくつかのカラムにわたる。
【００４６】
図１２は、例示のＦＰＧＡアーキテクチャのみを示すように意図されていることに留意されたい。カラム内の論理ブロックの数、カラムの相対的な幅、カラムの数および順序、カラムに含まれる論理ブロックのタイプ、論理ブロックの相対的なサイズ、および、図１２の頂部に含まれる相互接続／論理実装は、単なる例である。たとえば、実際のＦＰＧＡでは、ユーザ論理の効率的な実装を容易にするために、典型的にはＣＬＢの複数の近接するカラムはＣＬＢが現れるところであればどこにでも含まれる。図１２の実装は、プログラム可能リソースを有する集積回路に関するが、下記でより詳細に示す回路および方法は、任意のタイプのＡＳＩＣ内に実装可能であることを理解されたい。
【００４７】
マルチチップ集積回路デバイスにおいてルーティングリソースを選択する方法を説明する。こうした方法は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置することができるマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きいことがあるバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置することができるチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数を区画ウィンドウについてのバイアの最大要件に合致させることができるように選択することができる、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内であり得るように、区画ウィンドウ内に設計の一部を再配置すること、を含むことができる。
【００４８】
何らかのこうした方法において、マルチチップ集積回路デバイス上に設計を配置することは、アクティブオンアクティブマルチチップ集積回路デバイスのチップ内に設計を配置することを含むことができる。
【００４９】
何らかのこうした方法において、区画ウィンドウを選択することは、チップの幾何エリア、チップのリソースのセット、およびチップの複数のタイル、のうちの少なくとも１つを選択することを含むことができる。
【００５０】
何らかのこうした方法は、区画ウィンドウの選択に基づいて配線長の成長を制御することを、さらに含むことができる。
【００５１】
何らかのこうした方法において、配線長の成長を制御することは、水平方向および垂直方向の両方の配線長の成長を制御することを含むことができる。
【００５２】
何らかのこうした方法において、区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含むことができる。
【００５３】
何らかのこうした方法は、チップの他のエリアについてのバイアの最大数よりも大きいことがあるバイアの数を有するチップの該他のエリアを決定することを、さらに含むことができる。
【００５４】
何らかのこうした方法は、チップのエリア内に完全に含まれるネット、およびエリアの外にピンを有するネットを識別することを、さらに含むことができる。
【００５５】
何らかのこうした方法において、区画ウィンドウを選択することは、区画ウィンドウ内のリソースの最大利用率を有する区画ウィンドウの部分を識別することを、含むことができる。
【００５６】
何らかのこうした方法において、区画ウィンドウを選択することは、カットを最小にするためにエリア内に完全に含まれるネットを識別することを、含むことができる。
【００５７】
別の例において、システムを提供することができる。こうしたシステムは、プロセッサおよびコンピュータ可読媒体を含むことができ、コンピュータ可読媒体は、プロセッサによって実行されたとき、プロセッサに動作を実行させる命令を記憶し、動作は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置することができるマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きいことがあるバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置することができるチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数を区画ウィンドウについてのバイアの最大要件に合致させることができるように選択することができる、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内であり得るように、区画ウィンドウ内に設計の一部を再配置すること、を含む。
【００５８】
こうしたシステムにおいて、区画ウィンドウを選択することは、チップの幾何エリア、チップのリソースのセット、およびチップの複数のタイル、のうちの少なくとも１つを選択することを含むことができる。
【００５９】
何らかのこうしたシステムは、区画ウィンドウの選択に基づいて配線長の成長を制御することを、さらに含むことができる。
【００６０】
こうしたシステムにおいて、配線長の成長を制御することは、水平方向および垂直方向の両方の配線長の成長を制御することを含むことができる。
【００６１】
こうしたシステムにおいて、区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含むことができる。
【００６２】
何らかのこうしたシステムは、チップの他のエリアについてのバイアの最大数よりも大きいことがあるバイアの数を有するチップの該他のエリアを決定することを、さらに含むことができる。
【００６３】
別の例において、命令を記憶する非一時的コンピュータ可読媒体を提供することができる。こうした非一時的コンピュータ可読媒体は、プロセッサによって実行されたとき、プロセッサに動作を実行させる命令を記憶しており、動作は、マルチチップ集積回路デバイス上に設計を配置すること、設計の一部と共に配置することができるマルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、チップのエリアについてのバイアの最大数よりも大きいことがあるバイアの数を有するチップのエリアを識別すること、設計の一部と共に配置することができるチップ内のリソースを定義する区画ウィンドウを選択することであって、区画ウィンドウは、バイアの数を区画ウィンドウについてのバイアの最大要件に合致させることができるように選択することができる、区画ウィンドウを選択すること、および、チップのエリア内のバイアの数がエリアについてのバイアの最大数以内であり得るように、区画ウィンドウ内に設計の一部を再配置すること、を含むことができる。
【００６４】
何らかのこうした非一時的コンピュータ可読媒体は、チップのエリア内に完全に含まれるネット、およびエリアの外にピンを有するネットを識別することを、さらに含むことができる。
【００６５】
何らかのこうした非一時的コンピュータ可読媒体において、区画ウィンドウを選択することは、区画ウィンドウ内のリソースの最大利用数を有する区画ウィンドウの部分を識別することを、含むことができる。
【００６６】
何らかのこうした非一時的コンピュータ可読媒体において、区画ウィンドウを選択することは、カットを最小にするためにエリア内に完全に含まれるネットを識別することを、含むことができる。
【００６７】
したがって、マルチチップ集積回路デバイスのルーティングリソースを選択するための新しい回路および方法を説明してきたことが理解できよう。当業者であれば、開示した発明を組み込む多数の代替および等価物が存在するとみられることを理解されよう。結果として、本発明は前述の実装によって限定されず、下記の特許請求の範囲によってのみ限定されるものである。
【図１】
2021514506.tif 000003
【図２】
2021514506.tif 000004
【図３】
2021514506.tif 000005
【図４】
2021514506.tif 000006
【図５】
2021514506.tif 000007
【図６】
2021514506.tif 000008
【図７】
2021514506.tif 000009
【図８】
2021514506.tif 000010
【図９】
2021514506.tif 000011
【図１０】
2021514506.tif 000012
【図１１】
2021514506.tif 000013
【図１２】
2021514506.tif 000014
【手続補正書】
【提出日】令和1年12月20日(2019.12.20)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
次に図２を見ると、集積回路デバイスの断面図が示されている。集積回路２００は、複数の積層ＩＣチップを有するパッケージ基板２０２を備える。より具体的に言えば、システムおよび方法は任意数のチップを用いて実装可能であるが、図２の例示の実装は、３つのＩＣチップ２０４、２０６、および２０８を備える。チップは、チップのバイア、ならびに、接点要素２１０および２１２を含むチップ間の接続要素などの使用を介して、チップ間の通信を可能にするように構成される。図２に示されるように、第１のＩＣチップ２０４は、アクティブ領域２１６上に形成される複数の金属層２１４を備え、第２のＩＣチップ２０６は、アクティブ領域２２０上に形成される複数の金属層２１８を備え、第１のＩＣチップおよび第２のＩＣチップは接点要素２１０によって接続される。第３のＩＣチップ２０８は、アクティブ領域２２４上に形成される複数の金属層２２２を備える。複数の金属層は、一般に、ＩＣチップ内の信号の通信を可能にするトレースおよびバイアを含む。ＢＴＳＶなどのバイア２２６は、パッケージリッド２２８を有する集積回路デバイスのＩＣチップ間での信号の通信を可能にする。図２のＩＣチップの配置は、チップの前面または背面接続を示す１つの例示の配置を示すが、ＩＣチップは他の配置でも実装可能であることを理解されたい。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３２
【補正方法】変更
【補正の内容】
【００３２】
次に図６を見ると、フローチャートは、マルチチップ集積回路デバイスのルーティングリソースを選択する方法を示す。ブロック６０２において、マルチチップ集積回路デバイス上に設計が配置される。ブロック６０４において、チップ間の接続を可能にするために必要なバイアの数が推定される。ブロック６０５において、マルチチップＩＣデバイスのエリア内の配置がバイア要件を超えるかどうかが判別される。すなわち、次いで、例としてバイアとして説明する、チップのエリアについてのバイアの最大数を超えるＺ接続の数を有するチップのエリアが存在するかどうかが判別される。存在しない場合、プロセスは終了となる。存在する場合、ブロック６０６において、チップのエリアについてのバイアの最大数を超えるバイアの数を有するチップのエリアが識別される。ブロック６０８において、設計の一部と共に配置されるチップ内のリソースを定義する区画ウィンドウが選択され、区画ウィンドウは、バイアの数が再配置後の区画ウィンドウについてのバイアの最大要件に合致できるように選択される。ブロック６０９において、区画化問題が形成および解決される。ブロック６１０において、区画ウィンドウ内の設計の一部は、チップのエリア内のバイアの数がエリアについてのバイアの最大数を超えないように、ソリューションに基づいて再配置される。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
マルチチップ集積回路デバイスにおいてルーティングリソースを選択する方法であって、
設計の初期の配置を作成するために、前記マルチチップ集積回路デバイス上に設計を配置すること、
前記設計の前記初期の配置に基づいて、前記設計の一部と共に配置される前記マルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、
前記チップのエリアについてのバイアの最大数よりも大きいバイアの数を有する前記チップの前記エリアを識別すること、
プロセッサによって、前記設計の前記一部と共に配置される前記チップ内のリソースを定義する区画ウィンドウを選択することであって、前記区画ウィンドウは、前記バイアの数を前記区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、
前記プロセッサによって、前記チップの前記エリア内の前記バイアの数が前記エリアについての前記バイアの最大数以内になるように、前記区画ウィンドウ内に前記設計の前記一部を再配置すること、
を含む、方法。
【請求項２】
前記マルチチップ集積回路デバイス上に設計を配置することは、アクティブオンアクティブマルチチップ集積回路デバイスのチップ内に設計を配置することを含む、請求項１に記載の方法。
【請求項３】
区画ウィンドウを選択することは、前記チップの幾何エリア、前記チップのリソースのセット、および前記チップの複数のタイル、のうちの少なくとも１つを選択することを含む、請求項１または２に記載の方法。
【請求項４】
区画ウィンドウを選択することは、配線長の成長に基づいて区画ウィンドウを選択することを含む、請求項１から３のいずれか一項に記載の方法。
【請求項５】
区画ウィンドウを選択することは、水平方向および垂直方向の両方の配線長の成長に基づいて区画ウィンドウを選択することを含む、請求項４に記載の方法。
【請求項６】
区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含む、請求項１から５のいずれか一項に記載の方法。
【請求項７】
前記チップの他のエリアについてのバイアの最大数よりも大きいバイアの数を有する前記チップの前記他のエリアを決定することをさらに含む、請求項１から６のいずれか一項に記載の方法。
【請求項８】
前記チップの前記エリア内に完全に含まれるネット、および前記エリアの外にピンを有するネットを識別することを、さらに含み、前記設計の前記一部を再配置することは、識別されたネットに基づく、請求項１から７のいずれか一項に記載の方法。
【請求項９】
区画ウィンドウを選択することは、前記区画ウィンドウ内のリソースの最大利用率を有する区画ウィンドウの部分を識別することを含む、請求項１から８のいずれか一項に記載の方法。
【請求項１０】
区画ウィンドウを選択することは、カットを最小にするために前記エリア内に完全に含まれるネットを識別することを含む、請求項９に記載の方法。
【請求項１１】
システムであって、
プロセッサと、
前記プロセッサによって実行されたとき、前記プロセッサに動作を実行させる命令を記憶するコンピュータ可読媒体と、
を備え、前記動作は、
設計の初期の配置を作成するために、前記マルチチップ集積回路デバイス上に設計を配置すること、
前記設計の前記初期の配置に基づいて、前記設計の一部と共に配置される前記マルチチップ集積回路デバイスのチップ間の接続を可能にするために必要なバイアの数を推定すること、
前記チップの前記エリアについてのバイアの最大数よりも大きいバイアの数を有するチップのエリアを識別すること、
前記設計の前記一部と共に配置される前記チップ内のリソースを定義する区画ウィンドウを選択することであって、前記区画ウィンドウは、前記バイアの数を前記区画ウィンドウについてのバイアの最大要件に合致させることができるように選択される、区画ウィンドウを選択すること、および、
前記チップの前記エリア内の前記バイアの数が前記エリアについての前記バイアの最大数以内になるように、前記区画ウィンドウ内に前記設計の前記一部を再配置すること、
を含む、
システム。
【請求項１２】
区画ウィンドウを選択することは、前記チップの幾何エリア、前記チップのリソースのセット、および前記チップの複数のタイル、のうちの少なくとも１つを選択することを含む、請求項１１に記載のシステム。
【請求項１３】
区画ウィンドウを選択することは、配線長の成長に基づいて区画ウィンドウを選択することを含む、請求項１１または１２に記載のシステム。
【請求項１４】
区画ウィンドウを選択することは、水平方向および垂直方向の両方の配線長の成長に基づいて区画ウィンドウを選択することを含む、請求項１３に記載のシステム。
【請求項１５】
区画ウィンドウを選択することは、第１の数の水平タイルおよび第２の数の垂直タイルを有する区画ウィンドウを選択することを含む、請求項１１から１４のいずれか一項に記載のシステム。
【国際調査報告】
2021514506.tif 000015
2021514506.tif 000016
2021514506.tif 000017