(57)【特許請求の範囲】
【請求項１】
コンピュータによって実行される、集積回路についての相互接続回路内のデータ経路のルーティングを求める方法において、第1辺上の前記相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の前記相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、関連付けられる前記別のデバイスと前記第1デバイスとの間の前記相互接続回路を通じて接続を実現する方法であって、
(i)前記ワイドインターフェースに沿って設けるべき複数のセルを定義するステップであって、前記別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられるステップと、
(ii)行および列として形成されたブロックのアレイとして前記相互接続回路を定義するステップであって、各セルが前記列のうちの1つに当接するステップと、
(iii)所定の1組のタイルを設けるステップであって、各タイルが所定の配線レイアウトを提供するステップと、
(iv)各ブロックについて、所定の規則を適用して、前記ブロックを実装するのに使用すべき前記タイルのうちの1つを決定するステップであって、前記所定の規則が、前記アレイ内の前記ブロックの位置、および前記複数の別のデバイスと前記複数のセルの間の関連付けを考慮に入れて、前記相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するステップと
を含み、
前記ステップのそれぞれは、コンピュータシステムによって実行されることを特徴とする方法。
【請求項２】
各データ経路が、タイルのシーケンスによって形成され、前記シーケンス中の各タイルが、前記シーケンスの隣接するタイル内の前記配線レイアウトと少なくとも部分的に当接する配線レイアウトを有するように選択される請求項1に記載の方法。
【請求項３】
前記所定の規則が、ツリー構造を生成するようにタイルを前記アレイ内の個々のブロックに割り振り、少なくとも1つの列が、ツリー構造のトランクとして形成されるナローインターフェースに当接し、残りの列内の前記行が、前記ツリー構造のブランチを形成し、
前記ステップ(iv)で、前記アレイ内の個々のブロックを実装するのに使用すべきタイルを決定するときに、前記所定の規則が、ブロックが前記ツリー構造の前記トランク内にあるか、それともツリー構造のブランチ内にあるかを考慮に入れる請求項1に記載の方法。
【請求項４】
前記所定のタイルの組が、トランクタイルの所定のサブセットと、ブランチタイルの所定のサブセットとを含み、前記ステップ(iv)中に、各ブロックについて、前記所定の規則が、前記ブロックが前記ツリー構造の前記トランク内にある場合にトランクタイルの前記サブセットからタイルを選択し、または前記ブロックが前記ツリー構造の前記ブランチ内にある場合にブランチタイルの前記サブセットからタイルを選択する請求項3に記載の方法。
【請求項５】
セルの数が、前記ワイドインターフェースに接続すべき別のデバイスの数を超過し、それによって、前記別のデバイスのうちの1つに関連付けられない少なくとも1つの非接続セルが存在し、
前記ツリー構造の前記トランクとして形成された各列について、前記列に当接するように選ばれた前記セルが非接続セルである請求項3に記載の方法。
【請求項６】
前記ツリー構造が、1つまたは複数のツリー区間を含み、各ツリー区間が、前記ナローインターフェースに当接して前記ツリー区間に対するトランクを形成する1つの列を有し、前記ツリー区間の残りの列内の前記行が、前記ツリー区間のブランチを形成する請求項3に記載の方法。
【請求項７】
少なくとも1つのツリー区間が、少なくとも1つの他のツリー区間とは異なる軸上に設けられる請求項6に記載の方法。
【請求項８】
各ツリー区間が、左ツリー区間または右ツリー区間を含み、前記ステップ(iv)で、適用される所定の規則が、タイルが左ツリー区間のブロックについて決定されるか、それとも右ツリー区間のブロックについて決定されるかに依存すると共に、左ツリー区間内であっても、右ツリー区間内であっても、前記相互接続回路によって与えられる各データ経路が同一の伝播遅延を有することを依然として保証する請求項6に記載の方法。
【請求項９】
前記分散した複数の別のデバイスが、少なくとも1つの軸をたどる分散経路に沿って分散する請求項1に記載の方法。
【請求項１０】
分散経路中の少なくとも1つの地点で、軸の変化が生じ、
前記ステップ(ii)で、軸の変化が生じる前記分散経路中の各地点に関連して、前記相互接続回路内にコーナ素子を定義し、それによって各コーナ素子が、前記アレイ内のブロックの2つの隣接する列間の軸の変化を定義するステップと、
前記ステップ(iv)で、前記所定の規則が、前記所定のタイルの組と共に含まれる所定のコーナタイルを使用して各コーナ素子を実装し、前記アレイ内の各ブロックについて使用すべきタイルを決定するときに、前記所定の規則が、前記相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するように、前記相互接続回路内の任意のコーナ素子の位置を考慮に入れるステップと
をさらに含む請求項9に記載の方法。
【請求項１１】
前記ステップ(ii)で、前記コーナ素子のどちらかの側にフィラー素子が定義され、前記ステップ(iv)で、前記所定の規則が、前記所定のタイルの組に含まれる所定のフィラータイルを使用して各フィラー素子を実装する請求項10に記載の方法。
【請求項１２】
セルの数が、前記ワイドインターフェースに接続すべき別のデバイスの数を超過し、それによって、前記別のデバイスのうちの1つに関連付けられない少なくとも1つの非接続セルが存在し、前記相互接続回路に対する接続を必要としない前記集積回路の1つまたは複数の他の構成要素を、1つまたは複数の非接続セルに関連付けるステップをさらに含む請求項1に記載の方法。
【請求項１３】
前記他の構成要素が、前記分散した複数の別のデバイスに電力供給するのに使用される電力供給線を備える請求項12に記載の方法。
【請求項１４】
前記ステップ(iv)中に、前記所定の規則が、特定のブロックの位置で配線レイアウトが不要であると前記所定の規則が判定した場合、前記ブロックについてタイルが割り振られない請求項1に記載の方法。
【請求項１５】
前記所定のタイルの組が、配線レイアウトを有さない1つまたは複数のフィラータイルを含み、前記ステップ(iv)中に、特定のブロックの位置で配線レイアウトが不要であると前記所定の規則が判定した場合、前記フィラータイルのうちの1つが、前記ブロックに対して割り振られる請求項1に記載の方法。
【請求項１６】
前記ステップ(i)で、定義される前記複数のセルが、複数の異なる幅であり、前記所定のタイルの組が、各セルが前記列のうちの1つに当接することが可能となるように、対応する複数の異なる幅を有するタイルを含む請求項1に記載の方法。
【請求項１７】
前記ステップ(i)で、一定のセルが、初期セルとフィラーセルの組合せによって形成され、それによって前記アレイ内の列と当接する各セルが、等しい幅となる請求項1に記載の方法。
【請求項１８】
前記相互接続回路の前記ナローインターフェースから前記第1デバイスまで通るルートチャネルを定義し、それによって前記集積回路内の前記ナローインターフェース以外の位置への第1デバイスの配置を可能にするステップをさらに含む請求項1に記載の方法。
【請求項１９】
前記所定のタイルの組が、ルートタイルのサブセットを含み、前記サブセットからの1つまたは複数のルートタイルを使用して前記ルートチャネルを生成するステップをさらに含む請求項18に記載の方法。
【請求項２０】
前記分散した複数の別のデバイスが、前記集積回路の周辺に配置された入力/出力デバイスを含む請求項1に記載の方法。
【請求項２１】
前記第1デバイスが、前記複数の入力/出力デバイスを制御するのに使用されるメモリコントローラデバイスである請求項20に記載の方法。
【請求項２２】
前記別のデバイスのピンと、前記所定のタイルの組の中のタイルの配線レイアウトとの間のピンマッピングを実現する1つまたは複数のブリッジタイルを設けるステップと、
特定の別のデバイスについて、前記特定の別のデバイスのピンの、当接すべき前記相互接続回路内の前記タイルの前記配線レイアウトに対する直接的マッピングがないとき、前記特定の別のデバイスと前記相互接続回路内の前記タイルとの間に少なくとも1つのブリッジタイルを導入して、前記特定の別のデバイスのピンを前記タイルの前記配線レイアウトにマッピングするステップと
をさらに含む請求項1に記載の方法。
【請求項２３】
セルの数が、前記ワイドインターフェースに接続すべき別のデバイスの数を超過し、それによって、前記別のデバイスのうちの1つに関連付けられない少なくとも1つの非接続セルが存在し、ワイドインターフェースに沿った前記非接続セルの追加が、ナローインターフェースの幅に影響を及ぼさない請求項1に記載の方法。
【請求項２４】
前記ワイドインターフェースに沿った前記非接続セルの追加が、前記データ経路が前記ナローインターフェースに接続される順序に影響を及ぼさない請求項23に記載の方法。
【請求項２５】
前記所定の組の中の前記タイルのうちの少なくとも1つの配線レイアウトが、前記タイルのうちの少なくとも1つが前記アレイ内のブロックを実装するのに使用されるとき、前記タイル内の前記配線レイアウトのすべてが使用されるのではないようなものとなる請求項1に記載の方法。
【請求項２６】
コンピュータシステム上で実行されたときに、集積回路についての相互接続回路内のデータ経路のルーティングを求める方法を前記コンピュータシステムに実行させるコンピュータプログラムを含むコンピュータプログラムにおいて、第1辺上の前記相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の前記相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、関連付けられる前記別のデバイスと前記第1デバイスとの間の前記相互接続回路を通じて接続を実現するコンピュータプログラムであって、前記方法が、
(i)前記ワイドインターフェースに沿って設けるべき複数のセルを定義するステップであって、前記別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられるステップと、
(ii)行および列として形成されたブロックのアレイとして前記相互接続回路を定義するステップであって、各セルが前記列のうちの1つに当接するステップと、
(iii)所定の1組のタイルを設けるステップであって、各タイルが所定の配線レイアウトを提供するステップと、
(iv)各ブロックについて、所定の規則を適用して、前記ブロックを実装するのに使用すべき前記タイルのうちの1つを決定するステップであって、前記所定の規則が、前記アレイ内の前記ブロックの位置、および前記複数の別のデバイスと前記複数のセルの間の関連付けを考慮に入れて、前記相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するステップと
を含むコンピュータプログラム。
【請求項２７】
集積回路についての相互接続回路内のデータ経路のルーティングを求めるシステムにおいて、第1辺上の前記相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の前記相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、関連付けられる前記別のデバイスと前記第1デバイスとの間の前記相互接続回路を通じて接続を実現するシステムであって、
前記ワイドインターフェースに沿って設けるべき複数のセルを定義する手段であって、前記別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられる手段と、
行および列として形成されたブロックのアレイとして前記相互接続回路を定義する手段であって、各セルが前記列のうちの1つに当接する手段と、
所定の1組のタイルを設ける手段であって、各タイルが所定の配線レイアウトを提供する手段と、
各ブロックについて、所定の規則を適用して、前記ブロックを実装するのに使用すべき前記タイルのうちの1つを決定するデータ経路決定手段であって、前記所定の規則が、前記アレイ内の前記ブロックの位置、および前記複数の別のデバイスと前記複数のセルの間の関連付けを考慮に入れて、前記相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するデータ経路決定手段と
を備えるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の相互接続回路内のデータ経路のルーティングを求める技術に関する。
【背景技術】
【０００２】
ASIC(特定用途向け集積回路)設計フロープロセスで使用されるデジタルレイアウトEDA(electronic design automation)ツールなどの現在の設計ツールは、ディープサブミクロンプロセスで高速ネットおよびバスに対して必要とされることがあるような、相互接続回路のタイミングクリティカルなデータ経路に関する遅延整合で高精度を達成する際の厳しい制限を有する。この制限は主に、EDAツールがどのように問題に取り組むかということによるものである。
【０００３】
現在のデジタルレイアウトEDAツールは、タイミング制約を、設計レイアウトに対する要件として使用する。これはしばしば、「タイミングドリブン位置およびルート(timing driven place and route)」と呼ばれる。これにより、ASICレイアウトツールには、実際には無制限の数のレイアウト実装が提示される。このジレンマに直面して、EDAツールはしばしば、発見的アルゴリズムを使用してASICレイアウトを自動的に生成する。発見的アルゴリズムとは、最適解を求めるように設計されるのではなく、目標関数の点で最適解に近い、実現可能な解を見つけることを目標とするアルゴリズムである。設計の初期の配置およびルートが設計タイミング制約を満たすことはまれである。結果として、レイアウトツールは、設計タイミング制約を満たすことを望みながら、設計のタイミングクリティカルな部分の位置およびルートの反復に頼る。
【０００４】
例えば、高速平衡バス相互接続の場合に通常はそうであるように、設計要件が非常に限定的なものであるとき、レイアウト反復は往々にして収束せず、したがってツールは、使用可能なレイアウトの生成に失敗する。レイアウトツールが設計要件を満たすことに成功しないとき、生成されるレイアウトは、素子配置または信号ルーティングのどちらかで対称性がない。ネットはランダムな長さとなり、層から層へランダムにジャンプする。得られる各ネットのキャパシタンス、抵抗、カップリング、およびインダクタンスを正確に管理することができない。この結果、レイアウトのタイミング不確定性が生じる。
【０００５】
周知のデジタルレイアウトEDAツールは、タイミングを改善するいくつかの技術を使用する。こうした技術は、ある駆動素子を、同じ機能を有するが異なる駆動強度を有する別の駆動素子と置き換えること、クリティカルパス上にバッファを挿入して、遅延を加速または減速すること、および/または長いネットをレピータバッファで分割すること、重要な各セルを物理的に近くに移動することを含む。こうした手法によるタイミング変動が量子化され、タイミング不確定性を導入する。異なるタイミングクリティカルパス間の整合も、プロセスコーナにわたって非常に低減される。こうした経路は、異なる素子数、または異なる駆動特性を有する素子で構築されるからである。異なる素子のタイミング特性は、プロセス-温度-電圧コーナにわたって同一にスケーリングしない。あるコーナを合致させるとしばしば、別のコーナが不整合となる。
【０００６】
デジタルEDAレイアウトアルゴリズムの発見的な性質のために、異なるツールバージョン、または異なるベンダからのバージョンで、同一の設計が劇的に異なるレイアウトを生成する可能性がある。レイアウト手続きが反復されるとき、しばしば同一のツールが、同じ設計で異なるレイアウトを生成する。
【０００７】
現在のデジタルEDAレイアウトフローの別の制限は、ツールが、2つの別々のワイヤ上で送られる2つの補信号によって情報を電気的に送信する方法である差分信号を扱うことが不可能であることである。そのような差分信号技術は、例えばデジタルゲートのスイッチングによって生成されるような雑音のある環境を介する高速信号の正確な伝播を可能にすることができる。
【０００８】
結果として、周知のデジタルレイアウトEDAツールおよびASICフローは、相互接続回路内のクリティカルタイミング経路、ネット、およびバス(本明細書では「データ経路」と呼ぶ)の高度な遅延整合および雑音無影響性を必要とする設計レイアウトを生成することができない。
【０００９】
周知のデジタルレイアウトEDAツールの制限は、バスの異なるビットを物理的に接近していない設計ブロックにルーティングしなければならず、しかもタイミングの整合が必要とされるときに悪化する。DDR(double data rate)メモリインターフェースは、この制限の良い例である。DDRメモリは、ダブルポンピングする(クロック信号の立上りおよび立下り時にデータを転送する)ことにより、クロック周波数を上昇させることなく、非DDR(single data rate)メモリのほぼ2倍の帯域幅を達成する。DDRメモリコントローラは、それが接続しなければならない入出力(I/O)デバイスのスパンに対して比較的小型のレイアウトを有し、これにより、メモリコントローラをこうした分散I/Oデバイスと結合するのに使用される相互接続回路の設計に対して著しいタイミング問題が課される。
【００１０】
一例を挙げると、DDR3は、1600Mbsものデータ転送速度でオフチップSDRAMからのデータを読み書きするのにクロックの両端を使用するパラレルインターフェースである。データ信号DQ、ストローブ信号DQS、およびクロック信号CKの間のタイミング関係をしっかりと制御しなければならず、しかもこの設計に関するI/Oデバイスは、直線的に2mm超に及ぶことがある(すなわち、メモリコントローラブロックのサイズよりも何桁も大きい)。
【００１１】
クロックジッタ、オンチップ変動、プロセス-電圧-温度変動、プリント回路トレース変動、システム雑音、SDRAMセットアップおよび保持タイミングなどの制御不能タイミング不確定性を考慮に入れることにより、相互接続回路内のメモリコントローラとI/Oデバイスの間のデータ経路の伝播遅延を数十ナノ秒以内に整合させることが必要となる。2mm以上のネットについて数百ナノ秒の領域内にある相互接続遅延を仮定すると、そのような相互接続回路の設計は、現在のデジタルレイアウトEDAツールでは達成が困難である。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
したがって、様々なデータ経路間の高精度の遅延整合を可能にする、集積回路の相互接続回路内のデータ経路のルーティングを求める改良型の技術を提供することが望ましい。
【課題を解決するための手段】
【００１３】
第1態様から見ると、本発明は、集積回路についての相互接続回路内のデータ経路のルーティングを求める方法において、第1辺上の相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、その関連付けられる別のデバイスと第1デバイスとの間の相互接続回路を通じて接続を実現する方法であって、
(i)ワイドインターフェースに沿って設けるべき複数のセルを定義するステップであって、別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられるステップと、(ii)行および列として形成されたブロックのアレイとして相互接続回路を定義するステップであって、各セルが前記列のうちの1つに当接するステップと、(iii)所定の1組のタイルを設けるステップであって、各タイルが所定の配線レイアウトを提供するステップと、(iv)各ブロックについて、所定の規則を適用して、そのブロックを実装するのに使用すべき前記タイルのうちの1つを決定するステップであって、所定の規則が、アレイ内のブロックの位置、ならびに複数の別のデバイスと複数のセルの間の関連付けを考慮に入れて、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するステップとを含む方法を提供する。
【００１４】
本発明によれば、第1デバイスを分散した複数の別のデバイスと結合するのに使用される相互接続回路内のデータ経路のルーティングを求める方法が提供される。相互接続回路は、第1デバイスと結合するためのナローインターフェースと、分散した複数の別のデバイスと結合するためのワイドインターフェースとを有する。相互接続回路は、行および列として形成されたブロックのアレイとみなされ、所定の1組のタイルが、相互接続回路を構築する際に使用するために提供され、各タイルは所定の配線レイアウトを提供する。各ブロックについて、所定の規則が適用され、そのブロックを実装するのに使用すべきタイルのうちの1つが決定される。アレイ内のブロックの位置、および複数の別のデバイスとワイドインターフェースに沿って設けられる複数のセルとの間の関連付けを考慮に入れるように所定の規則を構成することにより、このタイル割振りプロセスは、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証する。
【００１５】
したがって、本発明が、所定のタイルを使用する構造化ルーティング方法を提供し、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するように、所定の規則が適用されて、相互接続回路を形成するブロックのアレイ内の各ブロックを実装するのにどのタイルが使用されるかが決定されることがわかる。
【００１６】
本発明を使用することにより、周知の従来技術配置ツールと比較して、いくつかの利点を得ることができる。まず、相互接続回路内の各データ経路が同一の伝播遅延を有する効果的な機構を提供することに加えて、プロセスは、カップリング、漏話、ローディング、雑音遮蔽などの他の物理的効果も整合させることができる。さらに、本発明の実施形態では、何ら反復する必要なしに方法を実装することができ、したがって、実行可能なルーティング設計を見つける目的で反復プロセスを実施する必要がある周知のEDAツールと比較したときに、著しい設計時間速度の利点が得られる。さらに、本発明は、所定の配線レイアウトを有するタイルを使用して、同一の伝播遅延を有するデータ経路を生成するものであるので、これにより、タイミングおよび整合を改善するために一定の経路中にバッファおよび/または他の構成要素をしばしば挿入する周知のEDAツールで設計されたものよりも、消費する電力が著しく低い相互接続回路を生み出すことができる。
【００１７】
一実施形態では、各データ経路が、タイルのシーケンスによって形成され、シーケンス中の各タイルは、シーケンスの隣接するタイル内の配線レイアウトと少なくとも部分的に当接する配線レイアウトを有するように選択される。したがって、各データ経路は、そのデータ経路を形成するのに使用されるタイルの関連するシーケンス内の様々な配線レイアウトの組合せによって形成される。各タイル内のワイヤの物理的レイアウトのために、各タイルに関連する伝播遅延が所定のものとなる。所定のタイルの組は、様々な異なる配線レイアウトに異なる伝播遅延を与え、これにより、伝播遅延があらゆるデータ経路について整合されることを保証するために、アレイ内のブロックの位置、および相互接続回路に接続すべき様々な別のデバイスの配置を考慮に入れて、所定の規則が、各ブロックを実装するのに使用すべき適切なタイルを決定することが可能となる。
【００１８】
一実施形態では、所定の規則は、ツリー構造を生成するようにタイルをアレイ内の個々のブロックに割り振り、少なくとも1つの列が、ツリー構造のトランクとして形成されるナローインターフェースに当接し、残りの列内の行が、ツリー構造のブランチを形成する。前記ステップ(iv)で、アレイ内の個々のブロックを実装するのに使用すべきタイルを決定するときに、前記所定の規則は、ブロックがツリー構造のトランク内にあるか、それともツリー構造のブランチ内にあるかを考慮に入れる。そのようなツリー構造の使用により、特に効率的なデータ経路のルーティングを達成することが可能となることが判明した。
【００１９】
一実施形態では、前記所定のタイルの組は、トランクタイルの所定のサブセットと、ブランチタイルの所定のサブセットとを含み、前記ステップ(iv)中に、各ブロックについて、所定の規則が、ブロックがツリー構造のトランク内にある場合にトランクタイルのサブセットからタイルを選択し、またはブロックがツリー構造のブランチ内にある場合にブランチタイルのサブセットからタイルを選択する。
【００２０】
一実施形態では、セルの数が、前記ワイドインターフェースに接続すべき別のデバイスの数を超過し、それによって、前記別のデバイスのうちの1つに関連付けられない少なくとも1つの非接続セルが存在し、ツリー構造のトランクとして形成された各列について、その列に当接するように選ばれたセルが非接続セルである。
【００２１】
したがって、そのような実施形態では、所定の規則が使用されて、ツリー構造のトランクを形成するブロックの列を実装するのに使用されるトランクタイルが選択されるとき、そうしたタイルが別のデバイスのうちの1つとの何らかの直接的接続を実現するための要件はなく、様々な別のデバイスとの接続が、ツリー構造のブランチを実装するのに使用されるブランチタイルを介して行われる。
【００２２】
様々な方式でツリー構造を設計することができる。しかし、一実施形態では、ツリー構造は、1つまたは複数のツリー区間を含み、各ツリー区間は、ナローインターフェースに当接してそのツリー区間に対するトランクを形成する1つの列を有し、ツリー区間の残りの列内の行が、そのツリー区間のブランチを形成する。別々のツリー区間からツリー構造を形成することを可能にすることにより、データ経路ルーティングのレイアウトに関する柔軟性、および相互接続回路のワイドインターフェースに接続すべき別のデバイスの配置に関する柔軟性の改善が実現される。例えば、一実施形態では、少なくとも1つのツリー区間が、少なくとも1つの他のツリー区間とは異なる軸上に設けられ、それによって別のデバイスを複数の軸にわたって分散させることが可能となる。一実施形態では、そのような軸の変化をツリー区間自体の中に吸収することもできる。
【００２３】
様々なタイプのツリー区間を設けることができる。一実施形態では、各ツリー区間は、左ツリー区間または右ツリー区間を含み、前記ステップ(iv)で、適用される所定の規則が、タイルが左ツリー区間のブロックについて決定されるか、それとも右ツリー区間のブロックについて決定されるかに依存すると共に、左ツリー区間内であっても、右ツリー区間内であっても、相互接続回路によって与えられる各データ経路が同一の伝播遅延を有することを依然として保証する。一実施形態では、そのような手法を使用して、相互接続回路のデータ経路レイアウトを、概して中央のトランクを有し、トランクからブランチが対向する方向に形成されるツリー構造として生成することができる。一実施形態では、左ツリー区間と右ツリー区間を共に同じ列数および行数を有するように構成することができ、それによって、ツリー構造のトランクを中心とした対称的設計を生成することが可能となる。
【００２４】
分散した複数の別のデバイスを集積回路上で様々な方式で配置させることができる。しかし、一実施形態では、別のデバイスは、少なくとも1つの軸をたどる分散経路上に分散する。一実施形態では、別のデバイスをすべて線形経路に沿って配置することができ、別の実施形態では、互いに異なる向きでよい複数の線形経路に沿ってデバイスを設けることができる。
【００２５】
一実施形態では、分散経路中の少なくとも1つの地点で、アクセスの変化が生じ、この方法は、前記ステップ(ii)で、軸の変化が生じる分散経路中の各地点に関連して、相互接続回路内にコーナ素子を定義し、それによって各コーナ素子が、アレイ内のブロックの2つの隣接する列間の軸の変化を定義するステップと、前記ステップ(iv)で、所定の規則が、前記所定のタイルの組と共に含まれる所定のコーナタイルを使用して各コーナ素子を実装し、アレイ内の各ブロックについて使用すべきタイルを決定するときに、所定の規則が、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するように、相互接続回路内の任意のコーナ素子の位置を考慮に入れるステップとをさらに含む。
【００２６】
所定のコーナタイルを使用することにより、そのようなコーナタイルを使用することに伴う伝播遅延が所定のものとなり、したがって、所定の規則は、相互接続回路内の各データ経路が同一の伝播遅延を有することを保証するように、各ブロックについて相互接続回路内のそのブロックを実装するのに使用すべき適切なタイルを決定するときに、任意のコーナ素子の位置を考慮に入れることができる。
【００２７】
コーナ素子が比較的短い場合、これにより、レイアウトが密集することなく(トランクに関して)コーナ素子の反対側に設けることのできるブランチ数が限定される。一実施形態では、このことを、コーナ素子のどちらかの側にフィラー素子を定義し、次いで所定のタイルの組内に提供される所定のフィラータイルを使用して各フィラー素子を実装することによって軽減することができる。コーナタイルと組み合わせたそのようなフィラータイルは、コーナ素子のサイズを実質上拡張し、コーナ素子の反対側で多数のブランチを必要とするツリー構造を構築することが可能となる。
【００２８】
非接続セルが存在する実施形態では、この方法は、相互接続回路への接続を必要としない集積回路の1つまたは複数の他の構成要素を、1つまたは複数の非接続セルに関連付けるステップをさらに含むことができる。非接続セルに関連付けることのできるそのような構成要素の一例を挙げると、そのような構成要素は、相互接続回路に接続すべき分散した複数の別のデバイスに電力供給するのに使用される電力供給線を備えることができる。
【００２９】
所定の規則を適用して、相互接続回路を定義するブロックのアレイ内の各ブロックにどのタイルを割り振るかを決定するとき、特定のブロックの位置で配線レイアウトが不要であると所定の規則が判定したとき、一実施形態では、そのブロックについてタイルが割り振られない。代替実施形態では、所定のタイルの組は、配線レイアウトを有さない1つまたは複数のフィラータイルを含むことができ、特定のブロックの位置で配線レイアウトが不要であると所定の規則が判定した場合、こうしたフィラータイルのうちの1つが、そのブロックに対して割り振られる。一実施形態では、そのようなフィラータイルは、与えられたプロセスに対する金属密度要件を満たすようにメタルフィルを有することができる。
【００３０】
一実施形態では、すべてのセルは等しい幅を有し、その結果として、ブロックの列のそれぞれは等しい幅となり、したがって所定のタイルの組を等しい幅で作成することができる。しかし、代替実施形態では、定義される複数のセルは、複数の異なる幅であり、所定のタイルの組は、各セルが前記列のうちの1つに当接することが可能となるように、対応する複数の異なる幅を有するタイルを含む。
【００３１】
しかし、代替実施形態では、フィラーセルの使用により、あらゆる可能な幅のセルに対するタイルを設ける必要を回避することができる。より具体的には、前記ステップ(i)で、一定のセルが、初期セルとフィラーセルの組合せによって形成され、それによってアレイ内の列と当接する各セルが、等しい幅となる。そのような手法により、ブロックの各列を同じ幅に構成することができ、したがって、所定のタイルの組が含む必要があるのは、その指定の幅のタイルだけとなり、それによって所定の組の中で提供する必要のあるタイルの数が削減される。
【００３２】
一実施形態では、第1デバイスが、相互接続回路のナローインターフェースに直接的に接続される。しかし、代替実施形態では、この方法は、相互接続回路のナローインターフェースから第1デバイスまで通るルートチャネルを定義し、それによって集積回路内のナローインターフェース以外の位置への第1デバイスの配置を可能にするステップをさらに含む。特定の一実施形態では、前記所定のタイルの組は、ルートタイルのサブセットを含み、この方法は、前記サブセットからの1つまたは複数のルートタイルを使用してルートチャネルを生成するステップをさらに含む。そのような手法により、分散した複数の別のデバイスの配置に対する第1デバイスの配置に関する自由が得られると共に、相互接続回路によって与えられる各データ経路が同一の伝播遅延を有することが依然として保証される。具体的には、一実施形態では、ルートチャネルを通る各データ経路の伝播遅延は同一であり、したがって、ルートチャネルを含めることにより、本発明の実施形態の技術の伝播遅延整合特性が維持される。
【００３３】
第1デバイスおよび別のデバイスは、様々な形態を取ることができる。一実施形態では、分散した複数の別のデバイスは、集積回路の周辺に配置された入力/出力デバイスを含む。そのようなデバイスでは、第1デバイスは、複数の入力/出力デバイスを制御するのに使用されるメモリコントローラデバイスである。SDR、DDRなどのメモリインターフェース、およびPCIなどのパラレルバスアーキテクチャは、本発明の実施形態のルーティング方法から恩恵を受けることのできる技術の主な例である。より一般には、本発明の実施形態の技術は、ワイドインターフェースに沿って物理的に比較的離れた間隔を置いて配置されたデバイスにナローインターフェースを接続するデータ経路に対して高度なタイミング整合が必要となる、すべての相互接続回路に適用可能である。
【００３４】
一実施形態では、様々な別のデバイスが、相互接続回路内の関連する列内の隣接するタイルと直接的に接続される。しかし、代替実施形態では、この方法は、前記別のデバイスのピンと、前記所定のタイルの組の中のタイルの配線レイアウトとの間のピンマッピングを実現する1つまたは複数のブリッジタイルを設けるステップと、特定の別のデバイスについて、そのピンの、当接すべき相互接続回路内のタイルの配線レイアウトに対する直接的マッピングがないとき、前記特定の別のデバイスと相互接続回路内の前記タイルとの間に少なくとも1つのブリッジタイルを導入して、前記特定の別のデバイスのピンをそのタイルの配線レイアウトにマッピングするステップとをさらに含む。したがって、そのようなブリッジタイルを使用して、相互接続回路内の関係するタイルと当接するのに必要なピン位置に適合するように、別のデバイス上のピン位置を変換することができる。そのようなブリッジタイルはまた、相互接続回路内の配線の、相互接続回路を介する接続を必要としない別のデバイス内のピンとの偶発的当接を回避する役割も果たすことができる。
【００３５】
一実施形態では、非接続セルがワイドインターフェースに沿って設けられる場合、そのような非接続セルの追加は、ナローインターフェースに影響を及ぼさない。さらに、そのような実施形態では、ワイドインターフェースに沿ったそのような非接続セルの追加は、データ経路がナローインターフェースに接続される順序に影響を及ぼさない。したがって、セルがワイドインターフェースに沿って設けられる方式、および別のデバイスと個々のセルとの間の関連付けにおいて高度な柔軟性がある。
【００３６】
一実施形態では、所定の組の中のタイルのうちの少なくとも1つの配線レイアウトは、タイルのうちの少なくとも1つが前記アレイ内のブロックを実装するのに使用されるとき、そのタイル内の配線レイアウトのすべてが使用されるのではないようなものとなる。したがって、そのような実施形態では、各タイルの配線レイアウト内の個々のワイヤのすべてが、相互接続回路内のそのタイルのすべての具体化で使用されるわけではない。そのようにタイルを設計することにより、そうしたタイルの使用に関する柔軟性の改善が得られる。
【００３７】
第2態様から見ると、本発明は、コンピュータシステム上で実行されたときに、集積回路についての相互接続回路内のデータ経路のルーティングを求める方法をコンピュータシステムに実行させるコンピュータプログラムを含むコンピュータプログラム製品において、第1辺上の相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、その関連付けられる別のデバイスと第1デバイスとの間の相互接続回路を通じて接続を実現するコンピュータプログラム製品であって、方法が、(i)ワイドインターフェースに沿って設けるべき複数のセルを定義するステップであって、別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられるステップと、(ii)行および列として形成されたブロックのアレイとして相互接続回路を定義するステップであって、各セルが前記列のうちの1つに当接するステップと、(iii)所定の1組のタイルを設けるステップであって、各タイルが所定の配線レイアウトを提供するステップと、(iv)各ブロックについて、所定の規則を適用して、そのブロックを実装するのに使用すべき前記タイルのうちの1つを決定するステップであって、所定の規則が、アレイ内のブロックの位置、および複数の別のデバイスと複数のセルの間の関連付けを考慮に入れて、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するステップとを含むコンピュータプログラム製品を提供する。
【００３８】
第3態様から見ると、本発明は、集積回路についての相互接続回路内のデータ経路のルーティングを求めるシステムにおいて、第1辺上の相互接続回路が、第1デバイスに対する接続のためのナローインターフェースを提供し、第2辺上の相互接続回路が、分散した複数の別のデバイスに対する接続のためのワイドインターフェースを提供し、各データ経路が、前記別のデバイスのうちの1つに関連付けられ、その関連付けられる別のデバイスと第1デバイスとの間の相互接続回路を通じて接続を実現するシステムであって、ワイドインターフェースに沿って設けるべき複数のセルを定義する手段であって、別のデバイスのそれぞれが、前記セルのうちの少なくとも1つに関連付けられる手段と、行および列として形成されたブロックのアレイとして相互接続回路を定義する手段であって、各セルが前記列のうちの1つに当接する手段と、所定の1組のタイルを設ける手段であって、各タイルが所定の配線レイアウトを提供する手段と、各ブロックについて、所定の規則を適用して、そのブロックを実装するのに使用すべき前記タイルのうちの1つを決定するデータ経路決定手段であって、所定の規則が、アレイ内のブロックの位置、および複数の別のデバイスと複数のセルの間の関連付けを考慮に入れて、相互接続回路によって設けられる各データ経路が同一の伝播遅延を有することを保証するデータ経路決定手段とを備えるシステムを提供する。
【００３９】
添付の図面に示される本発明の実施形態を参照しながら、単なる例示として本発明をさらに説明する。
【図面の簡単な説明】
【００４０】
【図１】本発明の実施形態の技術を使用して生成される相互接続回路を組み込む集積回路を示す略図である。
【図２】相互接続回路内のデータ経路のルーティングを求めるために本発明の一実施形態で使用される方法を示す流れ図である。
【図３】本発明の実施形態での相互接続回路に対して使用されるツリー構造を示す略図である。
【図４】本発明の一実施形態に従って、相互接続回路内の様々なデータ経路を生成するのに、個々のタイル内の配線レイアウトがどのように使用されるかを示す略図である。
【図５】本発明の一実施形態に従って生成される相互接続回路を、左ツリー区間と右ツリー区間を共に含む平衡ツリー構造として示す略図である。
【図６】本発明の一実施形態に従って生成される左ツリー区間を示す略図である。
【図７】本発明の一実施形態に従って生成される右ツリー区間を示す略図である。
【図８】左ツリー区間と右ツリー区間がコーナ素子で分離される、本発明の一実施形態に従って生成される平衡ツリー構造を示す略図である。
【図９】右ツリー区間を生成するために本発明の一実施形態に従って使用される方法を概略的に示す流れ図である。
【図１０】左ツリー区間を生成するために本発明の一実施形態に従って使用される方法を概略的に示す流れ図である。
【図１１】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１２】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１３】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１４】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１５】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１６】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１７】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１８】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図１９】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２０】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２１】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２２】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２３】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２４】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２５】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２６】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２７】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２８】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図２９】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図３０】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図３１】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図３２】本発明の一実施形態で使用される所定の1組のタイルを示す図である。
【図３３】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３４】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３５】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３６】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３７】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３８】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図３９】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４０】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４１】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４２】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４３】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４４】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４５】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４６】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４７】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４８】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図４９】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５０】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５１】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５２】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５３】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５４】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５５】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５６】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５７】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５８】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図５９】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６０】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６１】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６２】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６３】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６４】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６５】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６６】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６７】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６８】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図６９】本発明の一実施形態に従って、異なるタイルが当接によってどのように接続されるかを示す図である。
【図７０】本発明の一実施形態に従って例示的相互接続構造を生成するのに使用されるタイル配置を示す図である。
【図７１】本発明の一実施形態に従って、相互接続回路に対する様々なデバイスの接続のために様々なタイルがどのように使用されるかを示す図である。
【図７２】本発明の一実施形態に従って、相互接続回路に対する様々なデバイスの接続のために様々なタイルがどのように使用されるかを示す図である。
【図７３】本発明の実施形態の技術を実装するコンピュータプログラムを実行することのできる汎用コンピュータのアーキテクチャを示す略図である。
【発明を実施するための形態】
【００４１】
図1は、本発明の実施形態の技術を使用して設計される相互接続回路40を組み込む集積回路60の例示的実施例である。
【００４２】
図1に示されるように、集積回路60の2つの辺に広がる複数のデバイス/構成要素が、相互接続回路40を介して集積回路内のデバイス20に接続される。デバイス30は、相互接続回路40を介してデバイス20に対する接続を必要とするデバイスを含み、図1では、こうしたデバイスが、IO(入力/出力)デバイスと符号が付けられており、さらにデバイス30は、デバイス20に対する接続を必要としない1つまたは複数のデバイスをも含む。図1では、電源構成要素「VDD」34、「VDDA」35、「VSS」36、および「VSSA」37が、デバイス20に対する接続を必要としないそのような構成要素の例である。デバイスの2つの線形分散経路間の接合に、コーナ素子38も設けることができる。
【００４３】
相互接続回路40は、分散したデバイス30に対してワイドインターフェースを提供するが、デバイス20に対してナローインターフェースを提示する。図1に示されるように、デバイス20が集積回路60内に配置された場合に関する柔軟性を向上させるように、相互接続回路40のナローインターフェースからデバイス20に信号をルーティングするルートチャネル50を設けることができる。あるいは、そのようなルートチャネルを必要とすることなく、相互接続回路のナローインターフェースにデバイス20を直接的に接続することもできる。
【００４４】
後でより詳細に説明するように、相互接続回路を設計するとき、いくつかのセル(図1ではパッドとも呼ばれる)が、相互接続回路のワイドインターフェースに沿って設けられ、次いで様々なデバイス/構成要素30のそれぞれが、そうしたセルのうちの少なくとも1つに関連付けられる。一実施形態では、各デバイス30がセルのうちの1つに関連付けられるが、例えばデバイスが単一のセルに関連付けるには大き過ぎる場合、代替実施形態では、デバイスのうちのいくつかを複数のセルに関連付けることができる。
【００４５】
本発明の一実施形態では、相互接続回路内のデータ経路が、トランク部分およびいくつかのブランチ部分を含むツリー構造を採用するように設計される。ツリー構造は、1つまたは複数のツリー区間を含むことができ、例えば左ツリー区間および/または右ツリー区間を含むことができる。図1の実施例では、ツリー構造は、左ツリー区間と右ツリー区間を共に含み、左ツリー区間は、図1に示される点線の左側であり、右ツリー区間は、点線の右側である。各ツリー区間のトランクが、点線の一方の側のセルと位置合せされ、したがって、左ツリー区間のトランクがVDDセル42と位置合せされ、右ツリー区間のトランクがVSSセル44と位置合せされる。
【００４６】
図1に示される実施形態では、左ツリー区間内と右ツリー区間内に等しい数のセル/パッドがある。残りの図を参照しながらより詳細に論じるように、そのような制約を設計に課すことにより、様々なデータ経路が同一の伝播遅延を有する相互接続回路を生成することが容易となる。しかし、代替実施形態では、左ツリー区間と右ツリー区間に対してそれぞれ異なるタイプのタイルが設計される場合、相互接続回路内のすべてのデータ経路が同一の伝播遅延を有することを保証するように、この制約を取り除くことが可能となる。
【００４７】
図1では、デバイス20がメモリコントローラデバイスであり、かつ相互接続回路のワイドインターフェースに沿って設けられた分散した複数のデバイスが、メモリコントローラデバイスによって制御されるIOデバイス32であると仮定する。しかし、伝播遅延が相互接続を介するデータ経路のすべてについて整合される方式で、相互接続を介してデバイスを分散した複数の他のデバイスに結合する必要のある他の任意の相互接続構造に、本発明の実施形態の技術を適用することもできる。
【００４８】
図2は、相互接続回路40内のデータ経路のルーティングを求めるために本発明の一実施形態で使用される方法の略図である。まず、ステップ100で、相互接続回路のワイドインターフェースに沿って設けるべきセルの数が求められる。セルの数は、相互接続回路を通じてデバイス20に接続しなければならないデバイスの数と、収容する必要のある非接続構成要素の数とを考慮して求められる。本発明の一実施形態では、ツリー構造の任意のトランク部分と位置合せされるセルに関連する非接続構成要素があることが要件である。
【００４９】
ステップ100に続いて、ステップ110で、相互接続を表現するブロックのアレイが形成され、アレイは、ブロックの行および列として形成される。次いで、各セルは、アレイ内の列のうちの1つと当接する。したがって、ステップ100で求めたセルの数が、アレイ内に設ける必要のある列数を決定することがわかる。一実施形態では、行数は、ツリー構造の任意の特定のツリー区間内で、列数よりも1つ少なくなるように選ばれる。したがって、全くの例として、ステップ100で求められた100個のセルがあり、相互接続回路が、左ツリー区間および右ツリー区間を有するツリー構造によって形成されるべき場合、各ツリー区間は、50個の列と49個の行を有することになる。
【００５０】
ステップ120で、アレイ内の各ブロックが考慮され、考慮される各ブロックについて、所定の規則が適用され、そのブロックを表現するのに使用すべき所定の複数のタイルからタイルが決定される。後でより詳細に論じるように、所定の1組のタイルが提供され、各タイルは、その中に所定の配線レイアウトを有する。異なるタイルが、相互接続回路内の異なる幅のセル、したがって異なる幅の列に対して提供される。所定の規則は、アレイ内ブロックの位置、および相互接続回路に接続されている複数のデバイス(例えば、図1のIOセル32)と複数のセルの間の関連付けを考慮に入れる(すなわち、そうした様々なデバイスがどのセルに関連付けられるかを考慮に入れる)。この情報に基づいて、所定の規則は、各ブロック位置について適切なタイルを選ぶことができ、その結果、各ブロックが考慮された後は、デバイス20と、IOデバイス32のそれぞれとの間の必要なデータ経路が、相互接続回路内に設けられ、それによって、そうしたデータ経路のそれぞれは同一の伝播遅延を有する。
【００５１】
したがって、ステップ130で示されるように、ステップ120で各ブロックが考慮された後は、相互接続回路についてのレイアウト設計が出力され、必要な各データ経路が、相互接続されたタイルのシーケンスによって形成され、各データ経路は同一の伝播遅延を有する。
【００５２】
図3は、相互接続回路40に対して使用されるツリー構造をより詳細に示す略図である。図示されるように、任意選択のルートチャネル50を介して相互接続ツリー構造40のナローインターフェース160にデバイス20を結合することができる。この例では、相互接続ツリー構造40が、列165によって形成されるトランクと、トランク165の左側に延びる複数のブランチ170、175、180、185、190とを有する左ツリー区間として形成される。この例では、ブロックのアレイが、5個の行および6個の列として構成され、6個の列は、デバイスを関連付けるべき様々なセルに対するワイドインターフェース150を提供する。したがって、この例では、ワイドインターフェースに沿って6個のセルがあり、相互接続に接続すべきデバイス、または相互接続に接続すべきではないデバイス/構成要素が各セルに関連付けられる。
【００５３】
図4は、相互接続ツリー構造40の同じ編成を示すが、タイルが各ブロックに割り振られた後にツリー構造内に生成することのできるデータ経路の略図を示す。前と同様に、任意選択のルートチャネル50が設けられ、デバイス20が相互接続40のナローインターフェースに接続される。図4から理解するであろうが、デバイス20とセル1から5の間に設けられたデータ経路は、それぞれ同一の長さであり、したがって同一の伝播遅延を有する。先に論じたように、相互接続への接続を必要とする任意のデバイスがツリー構造のトランクに当接する位置に配置されないという前述の制約を仮定すると、セル0 200に関連する任意のデバイスを、相互接続40に対する接続を必要としないデバイスとなるように選ぶ必要がある。他のセル205、210、215、220、225に関して、これらはすべて、これらに関連する接続デバイスを有する可能性があり、またはこれらのうちの1つまたは複数が、これらに関連する非接続デバイスを有する可能性がある。
【００５４】
図5は、本発明の一実施形態を使用して生成される相互接続回路構成の一例である。NC(非接続)と符号が付けられた10個のセル260は、相互接続回路を介するデバイス20への接続を必要としない構成要素/デバイスに関連付けるべきセルである。この例は、この相互接続の主なサブコンポーネントを示す。
・ルート50-これは、デバイス20をツリー構造40に接続する。ルートはタイル10および11を使用して構築される。
・ツリー構造40-これは、ルート50を個々のIOセル260に接続する。ツリー構造40は、タイル0L、0R、1L、1R、2L、2R、3L、3R、4L、4R、5L、5R、6L、6R、7L、7R、8L、および8Rを使用して構築される。これが相互接続回路の本体を構成する。
【００５５】
ツリー自体は、2つの区間に分割される。左ツリー区間が、0L、0R、1L、2L、3L、4L、5L、6L、7L、および8Lタイルを使用して構築される。図5では、左ツリー区間は、図の中央の列C=0から、左末端の列C=12までに及ぶ。この区間は、列番号が与えられないコーナ素子250を含む。コーナ素子は、0Lおよび0Rタイルと共に構築される。それぞれの0Lおよび0Rタイルは、その行番号で索引付けされる。図5では、索引が角括弧内に0L[R]および0R[R]として示されており、角括弧内のRは、タイルに関連する行である。
【００５６】
右ツリー区間が、0L、0R、1R、2R、3R、4R、5R、6R、7R、および8Rタイルを使用して構築される。図5では、右ツリー区間は、図の中央の列C=0から、右末端の列C=12にまで及ぶ。図5のこの区間はコーナを含まないが、望むなら、コーナを右ツリー区間のレイアウトに組み込むことができる。
【００５７】
左ツリー区間および右ツリー区間はさらに、2つの部分、すなわちトランクとブランチに分割される。左ツリーブランチおよび右ツリーブランチは、0L、0R、1L、1R、2L、2R、3L、3R、4L、4R、5L、および5Rタイルを使用して構築される。これらは、値C>0を有する列内に含まれる。ツリーブランチは、ツリーの行Rと同じ番号を有する。行が、左ツリー区間と右ツリー区間についてそれぞれ、図の左側下部と右側に示されている。
【００５８】
ツリートランクは、6L、6R、7L、7R、8L、および8Rタイルを使用して構築される。図5では、ツリートランクは、列C=0内のタイルで作成される。
【００５９】
Xと符号が付けられたタイルは「don't care」タイルであり、相互接続回路を生成するときに「don't care」タイルを省略することができ、またはその代わりに、技術によるメタルフィル密度要件を満たすようにメタルフィルセルを含むタイルを使用することができる。
【００６０】
主要なタイプのツリー構成が3つある。左分岐ツリーは左ツリー区間のみを含み、右ツリー区間が省略される。左分岐ツリーはコーナ素子を含む。図6は、そのトランクのナローインターフェースでデバイス20に直接的に接続される左分岐ツリー270の一例を示す。この場合も、IOセル260が各列に関連付けられるように示されており、セルの一部が、相互接続回路のデータ経路に接続すべきデバイスに関連付けられており(IOLセル)、他のセルが、非接続デバイスに関連付けられている(NC IOLセル)。図6の例のこの左分岐ツリーは、コーナ素子またはルートを有さない。
【００６１】
右分岐ツリーは右ツリー区間を含み、左ツリー区間が省略される。左分岐ツリーの場合と同じく、右分岐ツリーはコーナ素子を含むことができる。図7は、コーナ素子またはルートを有さない右分岐ツリー290の一例を示す。やはり、この例では、右分岐ツリー290が、そのトランクのナローインターフェースでデバイス20に直接的に接続され、セル260が各列に関連付けられるように示されている。
【００６２】
平衡ツリーは、例えば図5を参照しながら先に示したように、左ツリー区間と右ツリー区間のどちらも含む。平衡ツリーは、1つが左ツリー区間上、1つが右ツリー区間上の2つのコーナ素子を有することができる。
【００６３】
アングルド平衡ツリーは、左ツリー区間と右ツリー区間の間にコーナ素子を有する、平衡ツリーの特殊なケースである。図8は、アングルド平衡ツリーの一例を示す。アングルド平衡ツリーは、3つのコーナ素子、すなわち左ツリー区間上のコーナ素子、右ツリー区間上のコーナ素子、ならびに左ツリー区間と右ツリー区間の間のコーナ素子を有することができる。図8の例では、アングルド平衡ツリーは、コーナ280によって右ツリー区間290から分離される左ツリー区間270を有する。デバイス20は、タイル9、10、および11で形成されるルート50によってツリーから分離される。先の図5から7の場合と同じく、セル260は、接続されるデバイスまたは非接続デバイスとの関連付けのために、ツリーの各列に関連付けられるように示されている。
【００６４】
上記の例では、任意のツリー区間は、その中に多くとも1つのコーナ素子を有することができることが示されているが、代替実施形態では、各ツリー区間内に複数のコーナ素子を設けることができることを理解されよう。
【００６５】
図9は、右分岐ツリーを構築する一実施形態で使用されるアルゴリズムの流れ図を示す。このアルゴリズムは、平衡ツリーの右ツリー区間を構築するのにも使用される。図10は、左分岐ツリーを構築する一実施形態で使用されるアルゴリズムの流れ図を示す。このアルゴリズムは、平衡ツリーの左ツリー区間を構築するのにも使用される。どちらのアルゴリズムも、以下のパラメータおよび変数を使用する。
N-その値が相互接続回路を介して部分接続されるIOセルの数を表す、所与の構成に対する定数。
CCL-コーナセルがその後ろで具体化されるIOセル列の位置をその値が表す、所与の構成に対する定数。
c-タイルを具体化するために選択された列位置を含む変数。
r-タイルを具体化するために選択された行位置を含む変数。
【００６６】
図9および10では、タイルはGDSタイルと呼ばれる。アルゴリズムは、行rおよび列cの座標を使用することによってタイルのタイプおよびツリー内のタイルの位置を指定することにより、ツリーを構築する。図9および10に示されるアルゴリズムは、「don't care」タイルが使用される場合、「don't care」タイルを具体化しない。図6に示されるように、左分岐ツリーが右から左に構築される。このことは、列c=0が右端の列であり、列c=N-1が左端の列であることを意味する。図7に示されるように、右分岐ツリーが左から右に構築される。このことは、列c=0が左端の列であり、列c=N-1が右端の列であることを意味する。図5に示されるように左分岐ツリーと右分岐ツリーを列c=0で当接させ、または図8に示されるように90°の角度で当接させて共に配置することによって平衡ツリーが構築される。図9および10に示されるアルゴリズムを使用して相互接続回路用に生成されるツリー構造は、以下の制約を有する。
1.すべてのタイル、IOセル、およびデバイス20が、当接によって互いに接続される。
2.素子を当接するとき、相互接続バス(データ経路)に関するビット位置を維持しなければならない。
3.伝播遅延が整合されることを保証するために、左ツリー区間および右ツリー区間に対する平衡ツリーを構築するときの列数が同一でなければならない。
4.列c=0に関連するIOセルを、相互接続を通じてデバイス20に対する接続を必要とするデバイスに関連付けなければならない。
5.コーナが、列番号が与えられないが、(c,r)グリッド位置を有するタイルの後に配置される0Lおよび0Rタイルと共に構築される。
【００６７】
図9および10で定義されるプロセスに続いて、右ツリー区間および左ツリー区間を、先の図で示されるように形成することができる。例えば、図9のプロセスを適用することにより、図7に示される右ツリー区間を生成することができる。この例では、N=11である。位置r=0、c=0で開始すると、プロセスがステップ300、305、310、320、325、330、405を通じてステップ415に進み、このツリー区間上にコーナがないと判定されることがわかる。したがって、プロセスはステップ420に進み、タイル6Rが行0、列0に挿入され、その後でプロセスはステップ400に進む。ステップ400で、列値cが増分され、その後でプロセスは、ステップ325、330、335、350、360を介してステップ370に進む。この時点で、ステップ370で指定される条件が満たされ、プロセスはステップ375に分岐し、タイル1Rが列1、行0に配置され、その後でプロセスはステップ400に戻る。
【００６８】
ステップ400で、値Nに等しい値まで列値が増分されると、プロセスはステップ450に分岐し、行値が増分され、その後で、ステップ320で列値が0にリセットされ、行1のブロック位置のすべてについてプロセスが反復される。ステップ310で、増分された行値がもはやN-1未満ではないと判定されたとき、プロセスはステップ315で終了する。
【００６９】
図10は、左ツリー区間を生成するのに使用される、対応するプロセスを示す。したがって、例えば、図6の左ツリー区間を考慮すると、図6に示されるこのタイル割振りが、図10のプロセスを実施することによって生成される。全くの例として、ブロック位置r=5、c=5を考慮すると、ステップ525から、プロセスは、地点ポイント560まで経路530、535、550をたどる。この地点で、r=5、c=5、およびN=11であるので、ステップ560で指定された条件が満たされる。したがって、プロセスはステップ565に分岐し、図6に明確に示されているように、タイル2Lがグリッド位置に配置される。
【００７０】
図5から8のいずれかに関連して図9および10を同様に検討にすることにより、こうした図に記載のプロセスが図5から8に示されるタイルレイアウトを生成することがわかる。こうしたタイルのそれぞれで設けられる配線レイアウトのために、図9および10のプロセスは、すべて同一の伝播遅延を有する相互接続構造内のデータ経路を生成する。さらに、図9および10から理解できるであろうが、この設計レイアウトプロセスは、タイミング制約を満たすかどうかを確認するための、生成されたレイアウトの評価を必要とせず、したがって、従来技術のEDAツールで一般に必要な反復のいずれも必要としない。
【００７１】
ルート構造は、あらゆる相互接続タイプに対して不要である。デバイス20は、図6および7に示されるように、ツリートランクに直接的に当接することができる。一般には、ルートは、タイル9、10、および11から構築される。左分岐ツリー、右分岐ツリー、および平衡ツリーは、タイル9、10、および11を使用して、ルートをツリーに接続することができる。アングルド平衡ツリーは、タイル9を使用して、ルートをツリーに接続する。図8に示されるように、デバイス20と当接する場所までルートを拡張するのにタイル10および11が使用される。
【００７２】
相互接続ツリー構造が、一緒に配置されたときに当接を通じて接続される1組のタイルから構築される。こうしたタイルを記述するいくつかの共通パラメータが存在する。
N-IO数。このパラメータは、IOリング260の一部となるIOセルの合計数を列挙する。
I-接続されるIO数。このパラメータは、相互接続を通じてデバイス20への接続を必要とするIOセル数を指定する。
P-ポート幅。このパラメータは、IOセルが相互接続を通じてデバイス20に伝播する必要がある最大接続数または最大ビット数を指定する。
Z-最大必要水平金属長。このパラメータは、以下のうちの最長のものを指定する。
1.任意のタイルのイーストポートをウェストポートに接続するのに必要な最長のワイヤ。
2.任意の0Rまたは0Lタイルのイーストポートをウェストポートに接続するのに必要な最長のワイヤの2倍。
V-最大必要垂直金属長。このパラメータは、任意のタイルのノースポートをサウスポートに接続するための最長のワイヤを指定する。
H-タイル高さ。このパラメータは、任意のタイルのイースト側またはウェスト側の幅Pビットの2つのポートを支持するのに必要な最小の高さを指定する。
【００７３】
図11は、例示のためのタイル「0L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、その行位置に応じて変動する。
・すべてのポート(2、3、4、および5)は、それぞれP個の接続(ビット)を有する。
・相互接続配線6および7は、長さMを有する。ただし
M=0.5*Z
【００７４】
図12は、例示のためのタイル「0R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、その行位置およびコーナ素子のサイズに応じて変動する。
・すべてのポート(2、3、4、および5)は、それぞれP個の接続(ビット)を有する。
・相互接続配線6および7は、長さMを有する。ただし
M=0.5*Z
【００７５】
左側と右側のタイルが等しい幅を有する場合、水平フリップを使用することにより、所与の行rについてのタイプ0L[r]および0R[r]に対して同一のタイル配線設計を使用することができる。
【００７６】
図13は、例示のためのタイル「1L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・デバイス20への接続を有さないIOセルを含む相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2、3、4、5、6、および7)は、それぞれP個の接続(ビット)を有する。
・相互接続配線8および9は、長さMを有する。ただし
M=Z
・相互接続配線10は長さVを有する。
【００７７】
図14は、例示のためのタイル「1R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2、3、4、5、6、および7)は、それぞれP個の接続(ビット)を有する。
・相互接続配線8および9は、長さMを有する。ただし
M=Z
・相互接続配線10は長さVを有する。
【００７８】
ノース側とサウス側のポートが垂直対称性を有する場合、水平フリップを使用することにより、タイプ1Lおよび1Rに対して同一のタイル配線設計を使用することができる。
【００７９】
図15は、例示のためのタイル「2L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2、3、4、および5)は、それぞれP個の接続(ビット)を有する。
・相互接続配線6は長さMを有する。ただし
M=0.5*Z+0.5*V
・相互接続配線7は長さMを有する。ただし
M=Z
【００８０】
図16は、例示のためのタイル「2R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2、3、4、および5)は、それぞれP個の接続(ビット)を有する。
・相互接続配線6は長さMを有する。ただし
M=0.5*Z+0.5*V
・相互接続配線7は長さMを有する。ただし
M=Z
【００８１】
ノース側のポートが垂直対称性を有する場合、水平フリップを使用することにより、タイプ2Lおよび2Rに対して同一のタイル配線設計を使用することができる。
【００８２】
図17は、例示のためのタイル「3L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし
M=2*Z+0.5*V
【００８３】
図18は、例示のためのタイル「3R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし
M=2*Z+0.5*V
【００８４】
水平フリップを使用することにより、タイプ3Lおよび3Rに対して同一のタイル配線設計を使用することができる。
【００８５】
図19は、例示のためのタイル「4L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし
M=Z+0.5*V
【００８６】
図20は、例示のためのタイル「4R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし、
M=Z+0.5*V
【００８７】
水平フリップを使用することにより、タイプ4Lおよび4Rに対して同一のタイル配線設計を使用することができる。
【００８８】
図21は、例示のためのタイル「5L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし
M=1.5Z+0.5*V
【００８９】
図22は、例示のためのタイル「5R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・相互接続回路内で使用される各IOセル幅について、1つのタイルが構築される。
・すべてのポート(2および3)は、それぞれP個の接続(ビット)を有する。
・相互接続配線4は長さMを有する。ただし
M=1.5Z+0.5*V
【００９０】
ノース側のポートが垂直対称性を有する場合、水平フリップを使用することにより、タイプ5Lおよび5Rに対して同一のタイル配線設計を使用することができる。
【００９１】
図23は、例示のためのタイル「6L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である。
・ポート2および3は、S個の接続を有する。ただし
S≧(I-1)*P
・ポート4および5は、S個の接続を有する。ただし
S=P
・相互接続配線6は長さMを有する。ただし
M=V
・相互接続配線7は長さMを有する。ただし
M=Z+0.5*V
【００９２】
図24は、例示のためのタイル「6R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である。
・ポート2および3は、S個の接続を有する。ただし
S≧(I-1)*P
・ポート4および5は、S個の接続を有する。ただし
S=P
・相互接続配線6は長さMを有する。ただし
M=V
・相互接続配線7は長さMを有する。ただし
M=Z+0.5*V
【００９３】
水平フリップを使用することにより、タイプ6Lおよび6Rに対して同一のタイル配線設計を使用することができる。
【００９４】
図25は、例示のためのタイル「7L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である。
・ポート2および3は、S個の接続を有する。ただし
S≧I*P
・相互接続配線4は長さMを有する。ただし
M=V
【００９５】
図26は、例示のためのタイル「7R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である
・ポート2および3は、S個の接続を有する。ただし
S≧I*P
・相互接続配線4は長さMを有する。ただし
M=V
【００９６】
水平フリップを使用することにより、タイプ7Lおよび7Rに対して同一のタイル配線設計を使用することができる。
【００９７】
図27は、例示のためのタイル「8L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である。
・ポート2および3は、S個の接続を有する。ただし
S≧(I-1)*P
・ポート4および5は、S個の接続を有する。ただし
S=P
・相互接続配線6は長さMを有する。ただし
M=V
・相互接続配線7は長さMを有する。ただし
M=2*Z+0.5*V
【００９８】
図28は、例示のためのタイル「8R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さHを有する。
・タイル幅は、ツリートランク上のIOセル幅と同一である。
・ポート2および3は、S個の接続を有する。ただし
S≧(I-1)*P
・ポート4および5は、S個の接続を有する。ただし
S=P
・相互接続配線6は長さMを有する。ただし
M=V
・相互接続配線7は長さMを有する。ただし
M=2*Z+0.5*V
【００９９】
水平フリップを使用することにより、タイプ8Lおよび8Rに対して同一のタイル配線設計を使用することができる。
【０１００】
図29は、例示のためのタイル「9L」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さTを有する。ただし
Xがツリートランク上のIOセル幅である場合、
T=2*X
・タイルは幅Uを有する。ただし
Xがツリートランク上のIOセル幅である場合、
U=X
・ポート2、3、4、および5は、S個の接続を有する。ただし
S≧(I-1)*P
・相互接続配線6および7は、長さMを有する。ただしMは任意の値でよく、好ましくはタイルに対して可能な最小の長さである。
【０１０１】
図30は、例示のためのタイル「9R」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さTを有する。ただし
Xがツリートランク上のIOセル幅である場合、
T=2*X
・タイルは幅Uを有する。ただし
Xがツリートランク上のIOセル幅である場合、
U=X
・ポート2、3、4、および5は、S個の接続を有する。ただし
S≧(I-1)*P
・相互接続配線6および7は、長さMを有する。ただしMは任意の値でよく、好ましくはタイルに対して可能な最小の長さである。
【０１０２】
水平フリップを使用することにより、タイプ9Lおよび9Rに対して同一のタイル配線設計を使用することができる。
【０１０３】
図31は、例示のためのタイル「10」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さTを有する。ただし
Xがツリートランク上のIOセル幅である場合、
T=2*X
・タイルは幅Uを有する。ただし
Xがツリートランク上のIOセル幅である場合、
U=2*X
・ポート2、3、4、および5は、S個の接続を有する。ただし
S≧(I-1)*P
・相互接続配線6および7は、長さMを有する。ただしMは任意の値でよく、好ましくはタイルに対して可能な最小の長さである。
【０１０４】
応用例に適合するようにタイル10を回転し、裏返すことができる。
【０１０５】
図32は、例示のためのタイル「11」の一例である。大部分の実装は、複数の金属層およびバイアを使用して、ポートおよび相互接続配線を作成する。
・タイルは高さTを有する。ただし
Xがツリートランク上のIOセル幅である場合、
T=2*X
・タイル幅は任意の長さである。幅が短くなるほど、相互接続ルートは、ASIC内にデバイス20をより正確に配置することができる。タイル10の幅を短くすることには、デバイス20を相互接続ツリーから離して配置しなければならないときに、タイル10の多くを使用しなければならないという犠牲が伴う。配置精度をタイル具体化数の削減と組み合わせるために、複数の幅のタイル10を構築することができる。
・ポート2、3、4、および5は、S個の接続を有する。ただし
S≧(I-1)*P
・相互接続配線6および7は、長さMを有する。ただしMは任意の値でよく、好ましくはタイルに対して可能な最小の長さである。
【０１０６】
応用例に適合するようにタイル10を回転し、裏返すことができる。
【０１０７】
すべてのタイル、IOセル、およびデバイス20は、当接によって接続される。すべてのバスビット順序は、当接するときに常に維持される。図33から69は、相異なるタイルがどのように当接するかについての様々な例を示す。図のリストは網羅的なものではなく、レイアウト内でタイルがどのように共に配置されるかについての広範な概念的例である。
【０１０８】
図70は、左ツリー区間および右ツリー区間を有し、各ツリー区間がそれに関連付けられた5個のセルを有する平衡ツリーの比較的単純な例について生成された配線レイアウトを示す。典型的な実施形態では、ワイドインターフェースに沿ってさらに多くのセルが設けられることになり、図70は、例示のために与えられるものに過ぎない。図70からわかるように、様々なタイル内の個々の配線レイアウトが、相互接続を通るデータ経路を提供し、相互接続に接続すべき各IOデバイス32に接続点を提供する。図70の例に示されるように、左ツリー区間内にそのようなIOデバイス32が3個あり、右ツリー区間内にそのようなIOデバイス32が4個ある。個々のタイル内の配線レイアウトを使用して、接続されたIOデバイス32への接続を実現し、または非IOデバイスへの接続を回避することのできる方式が、図71および72に略図で示されている。図71に示されるように、接続する必要のあるIOデバイス32上のピン位置は、隣接するタイル上の必要な配線レイアウトと接続するようなものとなり、接続を必要としないIOデバイスは、そのピンと隣接するタイルの配線レイアウトとが位置合せされない。
【０１０９】
同様に、図72では、6Lタイルと6Rタイルの組合せを使用して、デバイス20に対する必要な接続をどのように提供するかを示す。
【０１１０】
図73は、上述の技術を実装するのに使用することのできるタイプの汎用コンピュータ700の略図を示す。汎用コンピュータ700は、中央演算処理装置702、ランダムアクセスメモリ704、読取り専用メモリ706、ネットワークインターフェースカード708、ハードディスクドライブ710、ディスプレイドライバ712およびモニタ714、ならびにすべて共通バス722を介して接続されるキーボード718およびマウス720を伴うユーザ入力/出力回路716を含む。動作の際に、中央演算処理装置702は、ランダムアクセスメモリ704、読取り専用メモリ706、およびハードディスクドライブ710のうちの1つまたは複数に格納することができ、またはネットワークインターフェースカード708を介して動的にダウンロードすることのできるコンピュータプログラム命令を実行する。ディスプレイドライバ712およびモニタ714を介して、実行された処理の結果をユーザに表示することができる。キーボード718またはマウス720からユーザ入力/出力回路716を介して、汎用コンピュータ700の動作を制御するユーザ入力を受け取ることができる。コンピュータプログラムを様々なコンピュータ言語で書くことができることを理解されよう。コンピュータプログラムを記録媒体上に格納および配布することができ、または汎用コンピュータ700に動的にダウンロードすることができる。適切なコンピュータプログラムの制御下で動作するとき、汎用コンピュータ700は、相互接続回路内のデータ経路のルーティングを求める上述の技術を実施することができ、汎用コンピュータ700が上述の技術を実施する装置を形成するとみなすことができる。汎用コンピュータ700のアーキテクチャはかなり変動する可能性があり、図73は一例に過ぎない。
【０１１１】
本発明の上述の実施形態では、配線レイアウトが不要である任意のブロック位置について、タイルが具体化されない(例えば、図5から8の「x」とマークされたタイルを参照)。しかし、代替実施形態では、所定のタイルの組は、そうしたブロックについてのタイルを具体化するのに使用されるフィラータイルを含むことができる。一実施形態では、こうしたフィラータイルは、所与の製造工程に対する金属密度要件を満たすようにメタルフィルを有する。
【０１１２】
さらに、ある実施形態では、IOセルライブラリが、レイアウトが密集することなく(トランクに関して)コーナセルの反対側に設けることのできるブランチ数を限定するショートコーナIOセルを有することがある。一実施形態では、このことを、コーナ素子のどちらかの側にフィラー素子を定義し、次いで所定のタイルの組内に提供される所定のフィラータイルを使用して各フィラー素子を実装することによって軽減することができる。コーナタイルと組み合わせたそのようなフィラータイルは、コーナ素子のサイズを実質上拡張し、コーナ素子の反対側で多数のブランチを必要とするツリー構造を構築することが可能となる。
【０１１３】
前述の実施形態では、様々なタイルが、あらゆる可能なセル幅について別々の具体化を有する。しかし、代替実施形態では、フィラーセルの使用により、あらゆる可能なセル幅についてタイルを設ける必要を回避することができる。より具体的には、各IOセルについて同じ幅を有する組合せIOセルライブラリを作成するために、フィラーセルを既存のIOセルと組み合わせることができる。これにより、相互接続回路を構築するために所定のタイルの組内に提供する必要のあるタイル幅の数が著しく削減される。
【０１１４】
前述の実施形態では、相互接続回路のツリー構造に接続すべき様々なデバイスが、相互接続回路の関連する列内の隣接するタイルに直接的に接続されるように構成される。しかし、代替実施形態では、こうしたデバイスのピンと、所定のタイルの組の中のタイルの配線レイアウトとの間のピンマッピングを実現する1つまたは複数のブリッジタイルを設けることができる。したがって、こうしたブリッジタイルは、IOデバイスを相互接続ツリーに当接するのに必要なピン位置に適合するように、IOデバイスのピン位置を変換する。こうしたセルはまた、相互接続回路を介する接続を必要としないIOデバイス/構成要素との偶発的当接を回避するように、相互接続回路をデバイスから分離する役割も果たすことができる。こうしたブリッジタイルを使用して、水平フリップによる左側ツリーと右側ツリーについてのタイル配線設計の再利用を可能にする垂直対称性を有するポートを有するIOデバイスインターフェースを作成することもできる。
【０１１５】
本発明の実施形態の上記の説明より、そのような実施形態が以下の利点を有することを理解されよう。
1.本発明の実施形態の技術を使用して設計された相互接続回路は、2つの物理ブロックのインターフェース間のサイズ差が非常に大きい場合にその2つの物理ブロックを接続することを可能にする。
2.本発明の実施形態の技術を使用して設計された相互接続回路は、差分信号を効果的に処理することができ、具体的には、本発明の実施形態の対称的ワイヤ長および非励振整合(物理的効果整合)の特性により、差分信号を処理することに特に適している。
3.この技術は、厳密に整合した伝播遅延を実現し、カップリング、漏話、ローディング、雑音遮蔽などの他の物理的側面も整合させることができる。
4.この技術は、様々な幅を有するIOデバイスの混合を扱うことができる。
5.この技術は、コアインターフェースピンおよび信号位置を修正することなく、相互接続を通じて接続されるIOデバイスと、相互接続を通じて接続されないIOデバイス/構成要素との様々な混合を効果的に扱うことができる。
6.前述のルートチャネルの使用により、IOデバイスの配置に関して、どんな場所にもコアインターフェースを配置することができる。
7.この技術は、左コアインターフェース配置、右コアインターフェース配置、および中心コアインターフェース配置に対して、別々の最適化されたトポロジを提供することができる。
8.この技術は、所定の配線レイアウトを有する所定のタイルを使用する構造化ルーティング方法を提供する。
9.少数の所定のレイアウト素子(タイル)のみを用いて多種多様な相互接続を構築することが可能である。
10.本発明の実施形態の技術を使用して構築された相互接続は、厳密な幾何学情報に基づく、事前に特徴付けられたタイミングを有する。
11.この技術はアルゴリズムベースのものであり、フィードフォワード手法に基づいて、様々なバス幅に対して即座にコンパイルすることができる。大部分の周知のASICツールとは異なり、プロセスの反復は不要である。
12.本発明の実施形態の技術を使用して設計された相互接続は通常、従来技術のツールを使用して設計されたものと比較して電力消費が削減される。本技術は、遅延のタイミングおよび整合を改善するためにバッファおよび他の構成要素を様々な経路中に挿入する必要を回避するからである。
【０１１６】
本発明の実施形態の技術を、物理的に離れたブロックにバスを接続するときに高度なタイミング整合を必要とするすべての高速バスに適用することができる。本発明の実施形態の技術は、データ経路の物理的幅のサイズが大きく異なる、局所化設計から集積回路上のIOセルにパラレルバスを接続するのに特に適している。SDR、DDRなどのメモリインターフェース、およびPCIなどのパラレルバスアーキテクチャは、本発明の実施形態の技術を使用することから非常に恩恵を受けることのできる技術の主な例である。こうしたアーキテクチャのデータ転送速度が増加するにつれて、本発明の実施形態の技術は特に有益である。
【０１１７】
本明細書では本発明の特定の実施形態を説明したが、本発明はその特定の実施形態に限定されず、本発明の範囲内で多数の修正および追加を行えることは明らかであろう。例えば、本発明の範囲から逸脱することなく、以下の従属請求項の特徴の様々な組合せを、独立請求項の特徴と共に作成することができる。
【符号の説明】
【０１１８】
20  デバイス
30  デバイス
32  IOデバイス
34  電源構成要素「VDD」
35  電源構成要素「VDDA」
36  電源構成要素「VSS」
37  電源構成要素「VSSA」
38  電源構成要素コーナ素子
40  相互接続回路
42  VDDセル
44  VSSセル
50  ルートチャネル
60  集積回路
150  ワイドインターフェース
160  ナローインターフェース
165  トランク
170  ブランチ
175  ブランチ
180  ブランチ
185  ブランチ
190  ブランチ
200  セル
205  セル
210  セル
215  セル
220  セル
225  セル
250  コーナ素子
260  IOセル
270  左分岐ツリー
280  コーナ
290  右ツリー区間
700  汎用コンピュータ
702  中央演算処理装置
704  ランダムアクセスメモリ
706  読取り専用メモリ
708  ネットワークインターフェースカード
710  ハードディスクドライブ
712  ディスプレイドライバ
714  モニタ
716  ユーザ入力/出力回路
718  キーボード
720  マウス
722  共通バス
【図１】
0005241603.tif 000002
【図２】
0005241603.tif 000003
【図３】
0005241603.tif 000004
【図４】
0005241603.tif 000005
【図５】
0005241603.tif 000006
【図６】
0005241603.tif 000007
【図７】
0005241603.tif 000008
【図８】
0005241603.tif 000009
【図９】
0005241603.tif 000010
【図１０】
0005241603.tif 000011
【図１１】
0005241603.tif 000012
【図１２】
0005241603.tif 000013
【図１３】
0005241603.tif 000014
【図１４】
0005241603.tif 000015
【図１５】
0005241603.tif 000016
【図１６】
0005241603.tif 000017
【図１７】
0005241603.tif 000018
【図１８】
0005241603.tif 000019
【図１９】
0005241603.tif 000020
【図２０】
0005241603.tif 000021
【図２１】
0005241603.tif 000022
【図２２】
0005241603.tif 000023
【図２３】
0005241603.tif 000024
【図２４】
0005241603.tif 000025
【図２５】
0005241603.tif 000026
【図２６】
0005241603.tif 000027
【図２７】
0005241603.tif 000028
【図２８】
0005241603.tif 000029
【図２９】
0005241603.tif 000030
【図３０】
0005241603.tif 000031
【図３１】
0005241603.tif 000032
【図３２】
0005241603.tif 000033
【図３３】
0005241603.tif 000034
【図３４】
0005241603.tif 000035
【図３５】
0005241603.tif 000036
【図３６】
0005241603.tif 000037
【図３７】
0005241603.tif 000038
【図３８】
0005241603.tif 000039
【図３９】
0005241603.tif 000040
【図４０】
0005241603.tif 000041
【図４１】
0005241603.tif 000042
【図４２】
0005241603.tif 000043
【図４３】
0005241603.tif 000044
【図４４】
0005241603.tif 000045
【図４５】
0005241603.tif 000046
【図４６】
0005241603.tif 000047
【図４７】
0005241603.tif 000048
【図４８】
0005241603.tif 000049
【図４９】
0005241603.tif 000050
【図５０】
0005241603.tif 000051
【図５１】
0005241603.tif 000052
【図５２】
0005241603.tif 000053
【図５３】
0005241603.tif 000054
【図５４】
0005241603.tif 000055
【図５５】
0005241603.tif 000056
【図５６】
0005241603.tif 000057
【図５７】
0005241603.tif 000058
【図５８】
0005241603.tif 000059
【図５９】
0005241603.tif 000060
【図６０】
0005241603.tif 000061
【図６１】
0005241603.tif 000062
【図６２】
0005241603.tif 000063
【図６３】
0005241603.tif 000064
【図６４】
0005241603.tif 000065
【図６５】
0005241603.tif 000066
【図６６】
0005241603.tif 000067
【図６７】
0005241603.tif 000068
【図６８】
0005241603.tif 000069
【図６９】
0005241603.tif 000070
【図７０】
0005241603.tif 000071
【図７１】
0005241603.tif 000072
【図７２】
0005241603.tif 000073
【図７３】
0005241603.tif 000074