IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特表2024-542907集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング
<>
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図1
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図2
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図3A
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図3B
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図4A
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図4B
  • 特表-集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-11-19
(54)【発明の名称】集積回路における回路部品配置のためのマルチインスタンス化ブロックモデリング
(51)【国際特許分類】
   G06F 30/347 20200101AFI20241112BHJP
   G06F 30/337 20200101ALI20241112BHJP
【FI】
G06F30/347
G06F30/337
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2023577745
(86)(22)【出願日】2023-06-01
(85)【翻訳文提出日】2024-02-19
(86)【国際出願番号】 US2023024150
(87)【国際公開番号】W WO2024091298
(87)【国際公開日】2024-05-02
(31)【優先権主張番号】17/973,078
(32)【優先日】2022-10-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.VERILOG
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】キム,ミョン-チョル
(72)【発明者】
【氏名】カーペンター,ロジャー・デイビッド
(72)【発明者】
【氏名】シンハ,デブジット
(72)【発明者】
【氏名】ロッドマン,ポール・キングスリー
(72)【発明者】
【氏名】ジン,シュヤン
(72)【発明者】
【氏名】イ,ヨン-ジュン
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146DC04
5B146DL09
5B146GC12
(57)【要約】
本開示の態様は、コンピュータチップのチップレベルグラフにおけるブロックの一意化を排除または低減し、ブロック固有の情報を符号化したままグラフのサイズを縮小することを提供する。多重インスタンス化ブロック(MIB)から生成されたグラフ内のブロックの各グループについて、グループ内のブロックがベースブロックとして選択される。ベースブロックの物理的位置は縮小グラフで符号化され、残りのブロックの物理的位置は、チップの面を横切るベースブロックの物理的位置の線形変換として符号化される。同じMIBからインスタンス化されたブロックの各グループは、単一のインスタンスとして表現される。縮小グラフは、回路部品配置プロセスを実行するように構成されたデバイスに供給することができ、1つまたは複数の目的に従って、チップ内のブロックに対する回路部品の配置を特定する。
【特許請求の範囲】
【請求項1】
方法であって、
1つまたは複数のプロセッサが、集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することを含み、前記ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含み、前記方法はさらに、
前記1つまたは複数のプロセッサが、第2のデータ構造を生成することを含み、前記第2のデータ構造は、前記第1のブロックに対する前記1つまたは複数の第2のブロックの物理的位置を表すデータを含み、前記方法はさらに、
前記1つまたは複数のプロセッサが、前記第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすことを含み、前記回路部品配置プロセスは、1つまたは複数の目的に従って、前記第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、方法。
【請求項2】
前記第2のデータ構造を生成することは、
第2のブロックの各回路部品について、前記第1のブロック内のそれぞれの回路部品の物理的位置に対する前記回路部品の物理的位置と1つまたは複数のオフセット値とを表すデータを生成すること、
を含む、請求項1に記載の方法。
【請求項3】
前記第2のデータ構造を生成することは、
前記第2のデータ構造の一部として、前記1つまたは複数の第2のブロックのブロック固有の相互接続を表すデータを生成することを含み、ブロック固有の相互接続は、第2のブロックと別の回路部品との間の一意の接続を表す、
請求項1に記載の方法。
【請求項4】
各ブロックの物理的位置は、前記集積回路のフロアプランのそれぞれの位置として表され、
前記第2のデータ構造を生成することは、
前記ブロックのグループ内のブロックから前記第1のブロックを選択することと、
各第2のブロックについて、前記集積回路の前記フロアプランに沿った前記第1のブロックの物理的位置のそれぞれの線形変換を含む、前記第2のブロックの物理的位置を表すデータを生成することと、
を含む、
請求項1に記載の方法。
【請求項5】
前記1つまたは複数のプロセッサが、前記グループ内の前記ブロックの物理的寸法に少なくとも部分的に基づく、前記1つまたは複数のオフセット値を受信することと、
各第2のブロックについて、前記1つまたは複数のプロセッサが、前記第1のブロックの物理的位置に対する前記第2のブロックの物理的位置の前記それぞれの線形変換と、前記1つまたは複数のオフセット値と、を受信することと、
をさらに含む、
請求項4に記載の方法。
【請求項6】
前記生成されたデータに表される線形変換は、
前記フロアプランに沿った水平平行移動、前記フロアプランに沿った垂直平行移動、前記フロアプランに沿った回転、および前記フロアプランに沿った鏡面反転、
の少なくとも1つを含む、
請求項4に記載の方法。
【請求項7】
前記第1のデータ構造は、前記回路部品配置プロセスを少なくとも部分的に使用して生成され、前記回路部品配置プロセスは、前記1つまたは複数の目的に従って、前記第1のデータ構造内のブロックの物理的位置を表すデータを更新することを含む、
請求項1に記載の方法。
【請求項8】
前記1つまたは複数の目的は、
1つまたは複数の所定のメトリックに従って前記集積回路の性能を向上させること、
前記集積回路の所要電力を低減すること、
前記集積回路の回路部品間の相互接続の長さを短縮すること、および
前記集積回路が実装された基板上の前記集積回路の物理的面積を縮小すること、
の少なくとも1つを含む、
請求項7に記載の方法。
【請求項9】
前記回路部品配置プロセスの1回または複数回の反復の実行を引き起こすことは、前記1つまたは複数のプロセッサが、前記1回または複数回の反復を実行することを含む、
請求項1に記載の方法。
【請求項10】
前記第1のデータ構造によって表される前記ブロックのグループの各ブロックは、テンプレートブロックの一意化されたインスタンスである、
請求項1に記載の方法。
【請求項11】
前記テンプレートブロックは、
多重インスタンス化ブロック(MIB)、1つまたは複数の知的財産(IP)ブロック、メモリマクロ、または1つまたは複数の論理ゲート、
のうちの1つである、請求項10に記載の方法。
【請求項12】
1つまたは複数のプロセッサを含むシステムであって、前記1つまたは複数のプロセッサは、
前記1つまたは複数のプロセッサによって、集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することを実行するように構成され、前記ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含み、前記1つまたは複数のプロセッサは、さらに、
前記1つまたは複数のプロセッサによって、第2のデータ構造を生成することを実行するように構成され、前記第2のデータ構造は、前記第1のブロックに対する前記1つまたは複数の第2のブロックの物理的位置を表すデータを含み、前記1つまたは複数のプロセッサは、さらに、
前記1つまたは複数のプロセッサによって、前記第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすことを実行するように構成され、前記回路部品配置プロセスは、1つまたは複数の目的に従って、前記第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、システム。
【請求項13】
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
第2のブロックの各回路部品について、前記第1のブロック内のそれぞれの回路部品の物理的位置に対する前記回路部品の物理的位置と1つまたは複数のオフセット値とを表すデータを生成すること、
をさらに実行するように構成される、
請求項12に記載のシステム。
【請求項14】
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
前記第2のデータ構造の一部として、前記1つまたは複数の第2のブロックのブロック固有の相互接続を表すデータを生成することをさらに実行するように構成され、ブロック固有の相互接続は、第2のブロックと別の回路部品との間の一意の接続を表す、
請求項12に記載のシステム。
【請求項15】
各ブロックの物理的位置は、前記集積回路のフロアプランのそれぞれの位置として表され、
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
前記ブロックのグループ内のブロックから前記第1のブロックを選択することと、
各第2のブロックについて、前記集積回路の前記フロアプランに沿った前記第1のブロックの物理的位置のそれぞれの線形変換を含む、前記第2のブロックの物理的位置を表すデータを生成することと、
をさらに実行するように構成される、
請求項12に記載のシステム。
【請求項16】
前記1つまたは複数のプロセッサは、
前記グループ内のブロックの物理的寸法に少なくとも部分的に基づく、前記1つまたは複数のオフセット値を受信することと、
各第2のブロックについて、前記第1のブロックの物理的位置に対する前記第2のブロックの物理的位置の前記それぞれの線形変換と、前記1つまたは複数のオフセット値とを受信することと、
をさらに実行するように構成される、
請求項15に記載のシステム。
【請求項17】
前記生成されたデータに表される線形変換は、
前記フロアプランに沿った水平平行移動、前記フロアプランに沿った垂直平行移動、前記フロアプランに沿った回転、または前記フロアプランに沿った鏡面反転、
の少なくとも1つを含む、
請求項15に記載のシステム。
【請求項18】
前記第1のデータ構造は、前記回路部品配置プロセスを少なくとも部分的に使用して生成され、前記回路部品配置プロセスは、前記1つまたは複数の目的に従って、前記第1のデータ構造内のブロックの物理的位置を表すデータを更新することを含む、
請求項12に記載のシステム。
【請求項19】
前記1つまたは複数の目的は、
1つまたは複数の所定のメトリックに従って前記集積回路の性能を向上させること、
前記集積回路の所要電力を低減すること、
前記集積回路の回路部品間の相互接続の長さを短縮すること、および
前記集積回路が実装された基板上の前記集積回路の物理的面積を縮小すること、
の少なくとも1つを含む、
請求項18に記載のシステム。
【請求項20】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、動作を実行させる命令を符号化する1つまたは複数の非一時的なコンピュータ読み取り可能記憶媒体であって、前記動作は、
集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することを含み、前記ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含み、前記動作はさらに、
第2のデータ構造を生成することを含み、前記第2のデータ構造は、前記第1のブロックに対する前記1つまたは複数の第2のブロックの物理的位置を表すデータを含み、前記動作はさらに、
前記第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすことを含み、前記回路部品配置プロセスは、1つまたは複数の目的に従って、前記第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、1つまたは複数の非一時的なコンピュータ読み取り可能記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
相互参照
本出願は、2022年10月25日に出願された米国特許出願第17/973,078号の継続出願であり、その開示内容は参照により本明細書に組み込まれる。
【背景技術】
【0002】
背景
電子設計自動化(EDA:Electronic Design Automation)技術は、集積回路(「IC」または「チップ」)の設計に関する。EDAの1つの部分は、チップのための基板上の回路部品の物理的位置を決定するチップフロアプランニングである。電子設計の回路部品の物理的位置は、多くの場合、部品が実装されるICに望まれる物理的特性の最適化に基づいている。部品間の配線長またはチップ面上の1平方単位あたりの部品密度など、望まれる物理的特性は、チップ性能の向上および消費電力の低減と相関している。配置エンジンは、これらの物理的特性および他の所望の物理的特性に従って、回路部品およびそれぞれの相互接続の物理的位置を計画するための装置またはソフトウェアである。
【0003】
最新のチップ上の回路部品および潜在的な相互接続が数十億に及ぶことがあるため、最新の配置エンジンは、回路部品の最適な配置を特定するのに苦労している。いくつかの配置エンジンは、分割統治アプローチを使用して実装され、チップを、独立した機能ユニットまたはブロックの集合体として表現することによって配置モデリングにアプローチする。
【0004】
最新の回路部品配置システムは、典型的には、表現されたブロックがどのようにインスタンス化され、互いに接続されるかを必ずしも考慮することなく、ブロックの回路部品を配置する。配置エンジンが、ブロックのインスタンス化またはその相互接続された近隣に関する情報を符号化するように構成される場合、各ブロックは、ブロックの別々のインスタンス(separate instances of blocks)がチップフロアプランを表すグラフ内の別々のノードとして表されるように、一意化される。そのため、一意化によってチップレベルのグラフのノードが増加し、最新のチップ設計手法で要求される規模では、配置最適化の計算が困難になる。
【発明の概要】
【課題を解決するための手段】
【0005】
概要
本開示の態様は、ブロック固有の情報を符号化したままグラフのサイズを縮小することによって、コンピュータチップのチップレベルグラフにおけるブロックの一意化を排除または低減することを提供する。多重インスタンス化ブロック(MIB:Multiply-Instantiated Block)などの共通のテンプレートブロックから生成されるグラフ内のブロックの各グループ(each group of blocks)について、あるブロックがベースブロックとして選択される。ベースブロックの物理的位置は縮小グラフにエンコードされ、残りのブロックの物理的位置は、チップの面全体にわたるベースブロックの物理的位置の線形変換として符号化される。同じMIBからインスタンス化されたブロックの各グループは単一のインスタンスとして表現され、インスタンス固有のピン位置情報は、追加されたサブグラフのピンオフセットとして符号化される。インスタンス固有の情報には、ブロックまたはブロックのピンの向き、例えば、ブロックが回転しているか反転しているか、も含まれ得る。インスタンス固有の情報には、ブロック上のピンの物理的位置や、ブロック上のピンと他の回路部品との間の相互接続も含めることができる。本開示の態様に従って構成されたシステムは、縮小グラフを生成して、インスタンス固有のピン接続などの情報を、チップレベルグラフの一部としてサブグラフとしてさらに符号化することができる。縮小グラフは、回路部品の相互接続のためのワイヤ長を短縮するなどの1つまたは複数の目的に従って、チップ内のブロックに対する回路部品の物理的位置を特定するための回路部品配置プロセスを実行するように構成されたデバイスに供給することができる。
【0006】
縮小されたグラフは元のグラフよりも少ないデータを使用して表現されるため、グラフを処理し、チップの各ブロック内の部品の物理的位置を特定するのに必要な計算リソースを削減することができる。非一意化ブロックのインスタンス固有情報(「ブロック固有」とも呼ばれる)を符号化するためにサブグラフを追加すると、各ブロックを一意化インスタンスとして表現するグラフよりも、チップレベルのグラフ全体のサイズを小さくすることができる。各ブロック内の回路部品の物理的位置は、回路部品配置プロセスの一部として特定することができる。回路部品配置プロセスは、チップ上の相互接続のワイヤ長を短くするなど、1つまたは複数の所望の目的に従ってチップの性能を向上させるために実行することができる。
【0007】
本開示の一態様は、1つまたは複数のプロセッサが、集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信するステップであって、ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含む、ステップと、1つまたは複数のプロセッサが、第2のデータ構造を生成するステップであって、第2のデータ構造は、第1のブロックに対する1つまたは複数の第2のブロックの物理的位置を表すデータを含む、ステップと、1つまたは複数のプロセッサが、第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすステップであって、回路部品配置プロセスは、1つまたは複数の目的に従って、第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、ステップと、を含む方法を提供する。
【0008】
この態様の他の実装形態は、対応するコンピュータシステム、装置、および1つまたは複数のメモリデバイスに記録された非一時的なコンピュータ可読記憶媒体を含み、各々が方法の動作を実行するように構成される。
【0009】
前述の実装形態および他の実装形態は各々、単独でまたは組み合わせて、以下の特徴の1つまたは複数を任意に含むことができる。少なくとも1つの実装形態は、以下のすべての特徴を組み合わせて含む。
【0010】
第2のデータ構造を生成するステップは、第2のブロックの各回路部品について、第1のブロック内のそれぞれの回路部品の物理的位置に対する回路部品の物理的位置と1つまたは複数のオフセット値とを表すデータを生成するステップを含む。
【0011】
各ブロックの物理的位置は、集積回路のフロアプランのそれぞれの位置として表され、第2のデータ構造を生成するステップは、ブロックのグループ内のブロックから第1のブロックを選択するステップと、各第2のブロックについて、第2のブロックの物理的位置を表すデータを生成するステップであって、データは、集積回路のフロアプランに沿った第1のブロックの物理的位置のそれぞれの線形変換を含む、ステップと、を含む。
【0012】
本方法は、第2のデータ構造を生成するステップをさらに含み、第2のデータ構造を生成するステップは、第2のデータ構造の一部として、1つまたは複数の第2のブロックのブロック固有の相互接続を表すデータを生成するステップを含み、ブロック固有の相互接続は、第2のブロックと別の回路部品との間の一意の接続を表す。
【0013】
本方法は、1つまたは複数のオフセット値を受信するステップであって、1つまたは複数のオフセット値は、グループ内のブロックの物理的寸法に少なくとも部分的に基づく、ステップと、各第2のブロックについて、第1のブロックの物理的位置に対する第2のブロックの物理的位置のそれぞれの線形変換と、1つまたは複数のオフセット値と、を受信するステップと、をさらに含む。
【0014】
生成されたデータに表される線形変換は、フロアプランに沿った水平平行移動、フロアプランに沿った垂直平行移動、フロアプランに沿った回転、およびフロアプランに沿った鏡面反転、の少なくとも1つを含む。
【0015】
第1のデータ構造は、回路部品配置プロセスを少なくとも部分的に使用して生成され、回路部品配置プロセスは、1つまたは複数の目的に従って、第1のデータ構造内のブロックの物理的位置を表すデータを更新するステップを含む。
【0016】
1つまたは複数の目的は、1つまたは複数の所定のメトリックに従って集積回路の性能を向上させること、集積回路の所要電力を低減すること、集積回路の回路部品間の相互接続の長さを短縮すること、および集積回路が実装された基板上の集積回路の物理的面積を縮小すること、の少なくとも1つを含む。
【0017】
第1のデータ構造によって表されるブロックのグループの各ブロックは、テンプレートブロックの一意化されたインスタンスである。
【0018】
テンプレートブロックは、多重インスタンス化ブロック(MIB)、1つまたは複数の知的財産(IP)ブロック、メモリマクロ、および1つまたは複数の論理ゲートのうちの1つである。
【図面の簡単な説明】
【0019】
図1】ブロック非一意化エンジンを備えた例示的なチップ配置生成システムのブロック図である。
図2】本開示の態様による、非一意化を伴う例示的なチップ設計パイプラインのフロー図である。
図3A】本開示の態様による、チップの例示的なチップレベルグラフである。
図3B】本開示の態様による、チップのチップレベルグラフの別の例である。
図4A】本開示の態様による、MIBの一意化されたインスタンスのデータ構造を非一意化するための例示的なプロセスのフロー図である。
図4B】本開示の態様による、共通のMIBを有する第1のブロックに対する1つまたは複数のブロックの物理的位置を表すデータを含むデータ構造を生成するための例示的なプロセスのフロー図である。
図5】本開示の態様による、チップ配置生成システムを実装するための例示的な環境のブロック図である。
【発明を実施するための形態】
【0020】
詳細な説明
概要
本開示の態様は、集積回路(「IC」または「チップ」)の回路部品の物理的位置を表すチップレベルグラフのサイズを縮小して、グラフ上での回路部品配置最適化処理の実行を容易にすることに向けられている。チップレベルグラフは、ICの回路部品の物理的配置を表すデータ構造である。ICの物理的部品の配置は、ウェハなどの基板上に製造されたときのICの面または表面を指すフロアプラン上のブロックとして表すことができる。回路部品のブロックは、多重インスタンス化ブロック(MIB)などの共通のテンプレートブロックから生成することができ、インスタンスごとに異なる場合がある。ブロック間のインスタンス固有の差異を表現するために、チップレベルグラフのブロックは一意化されるか、またはグラフ内で複製され、しばしば軽微な差異が注記される。本開示の態様は、インスタンス固有の差異を失うことなく、一意化されたインスタンスを排除することを提供する。本開示における非一意化とは、テンプレートブロックの一意化されたインスタンスがチップレベルグラフから除去されるプロセスを指す。
【0021】
チップ設計中、特に超大規模集積(VLSI)においては、チップ上またはチップ内の回路部品の配置が、チップの特定の物理的特性の最適化に大きな影響を及ぼすことがある。回路部品の物理的位置を最適化することによって改善される可能性のある物理的特性の例としては、部品間の相互接続のワイヤ長を短くすること、部品密度を高めること、例えば、同じチップ上に配置できる部品の量を増やすこと等が挙げられる。
【0022】
チップレベルグラフは、チップのモデル表現である。グラフのノードはブロックまたは他の回路部品であり、ノード間のエッジは相互接続である。最新のチップ設計では、数百万または数十億の部品が含まれることがあるため、最新のチップのチップレベルグラフは、多数のノードとノード間の相互接続のための指数関数的な量のエッジを持つ大規模なものになることもある。ブロックは、処理ユニット、メモリモジュールなど、大量の回路部品を論理的に抽象化したものである。各ブロックは、それ自身の内部グラフとして表現することができ、その内部グラフは、例えば数百万ノードのような大きなサイズになることがある。チップレベルのグラフのサイズが大きいと、ブロック内の回路部品の配置を最適化するための処理を実行することが困難になるか、または計算不可能になる可能性がある。
【0023】
チップレベルグラフのサイズの増大は、MIBのような共通のテンプレートブロックのインスタンスの一意化に一部起因する。MIBは、チップ上またはチップ内の機能ユニットを論理ブロックとして表す回路部品のテンプレートブロックである。MIBによって表現され得る機能ユニットの例としては、計算ユニット、メモリユニットなどがある。MIBのインスタンスは、MIBから生成されるブロックであり、MIBと同一である場合もあれば、MIBの設計から何らかの形で逸脱している場合もある。逸脱の例としては、チップ内の異なる位置または方向、またはチップの異なるブロックと異なる位置での相互接続などがある。一意化されたインスタンスは、例えば、あるブロックがチップ内の別のブロックをシフトしたものであり、そのブロックのすべての回路部品が同じようにシフトされている場合のように、インスタンス間の差異が小さい場合でも、チップレベルグラフでは個別のノードとして扱われる。
【0024】
本開示の態様は、MIBまたは別のテンプレートブロックに対して単一のグラフ表現のみを有することによって一意化を回避することを提供する。各MIBに対して一意化されたインスタンスではなく、この明細書ではベースブロックと呼ばれる単一のブロックが、それぞれのMIBに対応するブロックのグループごとに選択される。
【0025】
本開示の態様に従って構成されたシステムは、ブロックのグループ内のブロックに対する物理的寸法のような固定オフセットに基づいて、グループ内の他のブロックの各々に対する線形変換を特定することができる。チップをブロックのフロアプランとして扱うと、ブロックの物理的位置は、選択されたベースブロックの線形変換、例えば平行移動、回転、ミラー反転などとして記述することができる。例えば、ベースブロックに接するまたは隣接する第1のブロック内の回路部品の物理的位置は、チップ上またはチップ内の面または表面を固定オフセットだけシフトしたベースブロック内の対応する部品の物理的位置によって表すことができる。第1のブロックに接するまたは隣接する第2のブロックの物理的位置は、固定オフセットの2倍だけチップの面または表面をシフトしたベースブロックの物理的位置によって表すことができる。
【0026】
本開示の態様に従って生成される縮小チップレベルグラフは、ブロックのグループの各ブロックを、グループのそれぞれのベースブロックに対して共通のテンプレートブロックで符号化する。固定オフセット、例えば、ベースブロックの物理的位置を平行移動または回転させるためのオフセットは、予め決定することができ、システムは、グループ内の共通のテンプレートブロックを有する各ブロックと、ブロックを表現するための対応する線形変換とを識別することができる。テンプレートブロックに共通するブロックは同じ回路部品を有するので、ブロック内の回路部品の物理的位置は、対応するベースブロックのベース回路部品の配置の線形変換として表すことができる。
【0027】
ブロック間の相互接続およびブロックにおけるそれらのピン位置などのインスタンス固有またはブロック固有の情報は、別のサブグラフとして符号化することができる。例えば、共通のMIB Aから2つのブロックai1およびai2が与えられると、ブロックは、MIB Aで定義された異なるピンを介して異なる隣接ブロックへの異なる接続を有することができる。説明されるように、システムは、グループの各ブロックの相互接続を表すためにサブグラフを生成し、グループのベースブロックのチップレベルグラフのノードを表すデータにサブグラフを追加することができる。
【0028】
インスタンス固有の相互接続のグラフを追加することは、各テンプレートブロックの一意化インスタンスを個別に維持するよりも、計算負荷が少なく、例えば、計算に必要なメモリまたは処理サイクルが少なくて済む。保存されたインスタンス固有情報は、チップ上のブロック内の回路部品の配置を最適化する一環として情報を使用する回路部品配置プロセスにおいて、後でアクセスすることができる。回路部品の配置プロセスでは、テンプレートブロックのすべてのインスタンスは、小さな差異および冗長な情報を有する個別のインスタンスではなく、単一のインスタンスとして扱われる。
【0029】
本開示の態様は、少なくとも以下の技術的利点を提供する。本明細書で説明するように、非一意化によってチップレベルグラフのサイズを縮小することによって、縮小されたチップレベルグラフを受信する回路部品配置プロセスを、より効率的に、例えば、より少ないクロックサイクルまたは使用されるメモリで測定して、かつ/または、回路部品の改善された物理的位置を特定するために削減されたウォールクロック時間で測定して、実行することができる。そうでなければ、回路部品の配置によって最適化することが計算上不可能なチップレベルグラフを非一意化することで、チップ設計候補のクラスが広がる。最適化される可能性のある設計の量を増加させることにより、例えば、よりリソース効率の高いチップ、または以前のチップと比較してより性能の高いチップなど、改善された回路設計を特定することができる。
【0030】
本開示の態様は、例えば、チップのブロックレベルでの部品配置の改善とチップのブロック内での部品配置の改善との間の中間段階として、既存のチップ設計パイプラインに組み込むことができる。配置最適化の前にチップレベルのグラフを非一意化することは、計算リソースを節約する上で正味のプラスとなり得、そのリソースは、高速チッププロトタイピング、チップスケールの性能最適化および推定、ならびに既存のチップ設計パイプラインの他の改善に向けられ得る。これらの改善やその他の改善は、チップ設計のサイズ、およびブロックをインスタンス化するMIBの量をスケールする。MIBおよびMIBのインスタンスが多ければ多いほど、一意化されたインスタンスでチップレベルグラフを処理する場合に比べ、性能向上およびリソース削減がより大きくなる。
【0031】
システム例
図1は、ブロック非一意化エンジン110を備えた例示的なチップ配置生成システム100のブロック図である。チップ配置生成システム100は、1つまたは複数の位置の1つまたは複数のコンピュータ上の1つまたは複数のコンピュータプログラムとして実装することができる。
【0032】
システム100は、中央処理装置(CPU)のような超大規模集積(VLSI)チップ、または機械学習アクセラレーションのためのテンソル処理装置(TPU)のようなハードウェアアクセラレータのような、製造されるコンピュータチップのためのチップ回路部品データ105を受信するように構成される。コンピュータチップは、チップの機能に応じて、トランジスタ、抵抗器、コンデンサなどの集積回路部品を含むことができる。例えば、チップは、機械学習計算、ビデオ処理、暗号化、または他の計算集約的な機能のための特定用途向け集積回路(ASIC)またはグラフィック処理ユニット(GPU)などの特殊目的チップとすることができる。
【0033】
チップ回路部品データ105は、チップ設計の一部を形成する異なる回路部品の仕様を含むことができる。回路部品は、集積回路の一部となり得る任意の部品である。部品の例としては、処理ユニット、メモリ、ワイヤ、バス、機能を実行するためにグループ化された個々の回路または回路の集合体などがある。ブロックは、1つまたは複数の回路部品の論理的な構成である。チップ回路部品データ105は、チップ設計の回路部品の論理的または物理的構成を表すネットリストまたは他のデータ構造を含むことができる。ネットリストは、チップレベルのグラフおよびそのサブグラフを少なくとも部分的に記述できるデータ構造である。ブロックは、システムの異なる部品または他のデバイスにデータまたは電力を接続して通信するための、異なるピンまたはワイヤ、ケーブル、バスなどの相互接続に接続する他の手段を含むことができる。
【0034】
ブロックには、例えば、スタティックランダムアクセスメモリ(SRAM)または他のメモリブロックなどであるIC部品の大きなブロックに対応するマクロ部品(「マクロ」)が含まれ得る。別の例として、マクロ部品を表すノードは、レジスタファイルの固定数のインスタンスで構成されるマクロなど、固定数のスタンダードセルで構成されるハードマクロを含むことができる。一部の例では、マクロは、各々がチップ上に配置される位相同期ループ(PLL)回路を表す1つまたは複数のノードを含むことができる。いくつかの例では、マクロはチップ上に配置されるセンサを含むことができる。ブロックは知的財産(IP)ブロックでもあり得る。
【0035】
ブロックは、MIBのような共通のテンプレートブロックのインスタンスであってもよい。MIBは、チップ設計で頻繁に再利用されることがある回路部品のセットを定義することができる。MIBの例としては、行列乗算器またはベクトル乗算器などの計算ユニット、アキュムレータ、シストリックアレイなどがある。MIBのようなテンプレートブロックから生成されるブロックは、そのテンプレートブロックのインスタンスである。同じテンプレートブロックから生成された複数のブロックは、そのテンプレートブロックを共有すると言われている。
【0036】
複数のインスタンスが共通のテンプレートブロックを共有し、ネットリストまたはチップレベルグラフで個々のブロックとして表現される場合、それらのインスタンスは一意化されていると見なされる。一意化されたブロックは、例えば、図3Aを参照して本明細書でより詳細に説明するように、異なるブロックに接続される異なるピンにおいて異なる場合がある。
【0037】
チップ回路部品データ105は、チップ設計を生成するためのソフトウェアおよび/またはハードウェアから生成された生データまたは処理された出力であり得る。例えば、チップ回路部品データ105は、物理的ハードウェア設計を論理回路として指定するためのプログラミング言語またはフレームワークを使用して生成することができる。プログラミング言語またはフレームワークは、CまたはC++などの特定のプログラミング言語を、コンピュータチップの回路部品を指定するためのVerilogまたはVHDLなどのハードウェア記述言語(HDL)に変換することができる。チップ回路部品データ105は、例えば、高レベルのソースコードを動作ベースまたはデジタル論理ベースの記述に変換するなど、複数の変換ステップの産物であり得る。論理ベースの記述は、さらに、記述された論理を実装するために必要な論理ゲートおよび他の原始回路の仕様に変換することができる。一般に、部品データ105を生成するために、ハードウェア設計を様々な程度に抽象化するための様々なツールおよび技術のいずれかを使用することができる。
【0038】
システム100は、様々な方法のいずれかでチップ回路部品データ105を受信することができる。例えば、システム100は、システム100によって提供されるアプリケーションプログラミングインターフェース(API)を使用するなどして、データ通信ネットワークを介してシステム100のリモートユーザからアップロードとしてチップ回路部品データ105を受信することができる。場合によっては、システム100は、出力されたチップ配置104に従ってチップを製造する際に使用するためなど、システム100によって提供されるAPIを介して、出力されたチップ配置104をリモートユーザに提供することができる。別の例として、システム100は、電子設計自動化(EDA)ソフトウェアツールの一部であることができ、ツールのユーザから、またはツールの別の部品から、チップ回路部品データ105を受信することができる。
【0039】
システム100は、集積回路上の回路部品のグループの物理的位置を表すネットリストを受け取ることができる。ネットリストは、チップ回路部品データ105の一部であり得る。ネットリストは、コンピュータチップの集積回路部品の接続性を記述するデータである。ネットリストは、回路内の回路部品のリスト、および回路部品が接続されるノードのリストなど、電子回路の接続性の記述に対応することができる。例えば、メモリマクロを表すノードには、各々が対応するSRAMのインスタンスを表すノードを含めることができる。別の例として、メモリマクロを表すノードには、レジスタファイルの固定数のインスタンスで構成されるメモリマクロなど、固定数のスタンダードセルで構成されるハードマクロを含めることができる。一部の例では、メモリマクロを表すノードは、チップ上に配置される位相同期ループ(PLL)回路を各々表す1つまたは複数のノードを含むことができる。一部の例では、メモリマクロを表すノードは、チップ上に配置されるセンサを各々表す1つまたは複数のノードを含むことができる。
【0040】
各ノードは、集積回路部品のそれぞれの重複しないサブセットに対応することができる。各ノードについて、ネットリストは、製造されたコンピュータチップ内の1つまたは複数のワイヤによってノードが接続されるべき他のノード(もしあれば)を特定することができる。ネットリストの各ノードはブロックに対応することもできる。ネットリストは、集積回路のフロアプラン上のブロックおよび他の回路部品の物理的位置を表すグラフを少なくとも部分的に定義することができる。親ブロック内の回路部品は、親ブロックを表すノード内のサブグラフとして表すことができる。テンプレートブロックの一意化されたインスタンスは、グラフ内の別個のノードとして表示される。
【0041】
配置エンジン120は、チップ回路部品データ105を受け取ることができる。配置エンジン120は、ネットリストがまだ提供されていない場合、部品データ105からネットリストを生成することができる。配置エンジン120は、集積回路の性能を向上させるための1つまたは複数の目的に従って集積回路のフロアプラン上にブロックを配置する回路部品配置プロセスを実行するように構成される。例示的な目的には、消費電力の削減、相互接続のワイヤ長の最小化などが含まれる。回路部品配置プロセスは、1つまたは複数の指定された目的に従って、結果として得られる物理的チップを改善するブロックの物理的位置を記述するデータを生成するための任意のプロセスを指すことができる。例示的な技術には、制約ベースの手法、グラフベースの手法、およびツリーベースの手法が含まれ得る。
【0042】
配置エンジン120は、いくつかの停止基準を満たすまで回路部品配置プロセスの反復を実行するように構成され得る。停止基準には、例えば、目的に従った所定の最小改善が満たされていないと判定することを含むことができる。停止基準の別の例は、最大クロック時間割り当てまたは最大コンピューティングリソース割り当て、例えば、回路部品配置プロセスを実行するために割り当てる処理サイクルの最大量である。
【0043】
本開示の態様は、回路部品配置プロセスの第1のブロックに対する下流プロセスであり得る方法を含む。チップ上またはチップ内の回路部品は、フロアプランを共有するようにモデル化することができる。フロアプランにおいて、異なるブロックまたは他の回路部品は、例えば、フロアプラン上の、デッドスペースと呼ばれることもある無駄なスペースを最小化または削減するなどの何らかの目的に従って配置される。最初のステップは、集積回路フロアプラン上にブロックを配置するブロックレベルの配置であり得る。第2のステップは、ブロックの回路部品(「サブ部品」)が、フロアプラン上の回路部品の親ブロックによって占有される部分内に配置される、サブ部品レベルの配置であり得る。
【0044】
配置プロセスの第2のブロックを実行する前に、本明細書で説明するように、配置エンジン120は、処理済みネットリスト130を生成し、ネットリストを非一意化エンジン110に渡すことができる。いくつかの例では、チップ回路部品データ105は、ブロックレベルの配置プロセスを既に通過した処理済みネットリストを含む。
【0045】
システム100は、縮小ネットリスト140内の一部またはすべてのブロックをコンピュータチップの表面上のそれぞれの位置に配置するコンピュータチップ配置104を出力するように構成される。出力されたチップ配置104は、ノードによって表される集積回路部品に対応する縮小ネットリスト140内の一部またはすべてのノードについて、コンピュータチップの表面上のそれぞれの位置を特定することができる。
【0046】
図2は、本開示の態様による、非一意化を伴う例示的なチップ設計パイプライン200のフロー図である。いくつかの例では、システム100は、パイプライン200の一部または全部であり得る。いくつかの例では、システム100は、チップの設計および製造の一部として、同じ、より多い、より少ない、または様々な段階を含み得る、異なるパイプラインの一部である。
【0047】
ブロック205において、チップの要件が取得される。要件は、例えば、チップが実行すべき機能、および動作上の制約、例えば、電力制限、要求デバイスとの間のデータ通信における最大待ち時間などがあるかどうかを指定することができる。ブロック210では、要件を実装するためのロジックが設計される。ロジックは、例えば、動作要件を受信し、それらの要件を満たすチップを製造するためのロジックおよび要件を決定するように構成されたシステム100の一部として設計することができる。ブロック215では、設計されたロジックを実装するために必要な部品で回路が設計される。
【0048】
ブロック220において、システム100は、ブロックレベル配置プロセスの1回または複数回の反復を実行することができる。図1を参照して説明したように、回路部品配置プロセスは、ブロック220でのブロックレベルとブロック230でのサブ部品レベルの少なくとも2つの段階に分割することができる。ブロック220の後、システムは、1つまたは複数の目的に従って性能または電力使用を改善するように配置された集積回路のブロックを有するネットリストを生成することができる。
【0049】
ブロック225において、システム100は、ブロック220で処理されたネットリストの非一意化するプロセスを実行することができる。例えば、本明細書で説明するように、システムは、プロセス400Aを実行して、テンプレートブロックの一意化されたインスタンスを削除し、各インスタンスを単一の表現で表すことができる。結果として得られる縮小ネットリストは、ブロック230で示されるサブ部品レベルの配置のために構成されたデバイスへの入力として提供され得る。
【0050】
ブロック230でサブ部品レベルの配置を実行すると、1つまたは複数の目的、例えば、ワイヤ長の短縮、に従って配置された回路部品を有するブロックを有するネットリストが得られる。このネットリストは、ブロック235で示されるように、最終設計から物理チップを製造するための最終化/製造回路ステップの一部として使用することができる。
【0051】
図3Aは、本開示の態様による、チップ301Aの例示的なチップレベルグラフ300Aである。チップ301Aは、5つのMIB:A、B、C、D、Eのうちの1つから各々インスタンス化されたブロックを含む。明確にするために、MIBからインスタンス化されたブロック内の特定の回路部品を参照する場合、ブロックおよびサブ回路部品の参照数字の両方が使用される。例えば、回路部品ai1.ma1は、ブロックai1内の回路部品ma1を指す。回路部品ai1.ma1は、例えば、ブロックai2内の部品ma1を指す回路部品ai2.ma1とは区別される。
【0052】
グラフ300Aは、回路部品ma1、ma2、ma3を各々含むMIB Aからインスタンス化された3つのブロックai1、ai2、ai3を含む。グラフ300Aはまた、回路部品mb1、mb2を各々含むMIB Bからインスタンス化された3つのブロックbi1、bi2、bi3を含む。ブロックci1は、MIB Cからインスタンス化され、2つの回路部品mc1およびmc2を含む。ブロックdi1は、MIB Dからインスタンス化され、回路部品md1を含む。ブロックei1はMIB Eからインスタンス化され、回路部品me1を含む。回路部品mf1とmf2も示されており、これらはテンプレートブロックから生成されたものではないが、チップレベルグラフがインスタンス化された回路部品とインスタンス化されていない回路部品を混在させることができることを示している。
【0053】
チップ上のブロックが互いに相対的に所定の固定位置に配置される場合、ブロック内部の回路部品の位置は、同じMIBからインスタンス化された別のブロックの対応する内部部品の位置として表現することができる。これは、同じMIBからインスタンス化されたブロックの内部の部品が同じ相対位置を持つために可能である。例えば、ブロックai1、ai2、ai3が同じ幅Wを有し、ブロックがグラフ300Aに示すようにチップ上で互いに接している場合、ブロックai2内の回路部品ma1の位置は、ブロックai1内の回路部品ma1の位置とオフセットWとを用いて表すことができる。オフセットWは、チップ内のブロックの幅に対応する。オフセットHは、MIB Aからインスタンス化されたブロックの高さに対応する。部品ai2.ma1の物理的位置の定式化の一例は、次のようになる。
【0054】
i2.ma1=ai1.ma1+W (1)
オフセットWは、ブロックai1とブロックai2との間の固定オフセットである。オフセットWの加算は、水平平行移動、例えば、グラフ300Aの左上隅に対する右への平行移動を表すように予め定義することができる。他の例では、加算、減算、または他の演算を定義して、グラフ300Aの固定点に対する異なる方向の平行移動を表すことができる。
【0055】
別の例として、ブロックai3における回路部品ma1の位置は、ブロックai1における回路部品ma1の位置と、オフセットWの2倍とを用いて表すことができる。さらに、ブロックai3は、仮想の垂直軸を挟んでブロックai1の鏡面反射である。反射を符号化するために、回路部品ai3.ma1の位置を表す線形変換を反転することができる。一例の定式化は次のようになる。
【0056】
i3.ma1=2W-ai1.ma1 (2)
オフセット2Wは、ai1とai3との間の固定オフセットである。図2に示すようないくつかの例では、ブロックは一定の距離だけ離れていて、互いに接していない場合がある。そのような例では、幅Wは、ブロックの幅と、図2においてkとして示される各ブロック間の所定の固定距離との和とすることができる。距離kは、デッドスペースを減らすために、しばしばゼロである。
【0057】
ブロックai1は、上記の定式化において例示的なベースブロックとして選択されているが、他のブロックは、他のブロックの回路部品の位置を表すことができるベースブロックとして機能することができることが理解される。例えば、ベースブロックとしてブロックai2を使用すると、回路部品ai1.ma1の位置のための1つの例示的な定式化は、次のようにすることができる。
【0058】
i1.ma1=ai2.ma2-W (3)
式(1)と(3)を比較すると、回路部品の対応する変換を表すために適用される正確な変換が変わり得ることがわかる。例えば、右への平行移動は、固定オフセット(+)を加えることによって表すことができる。左への平行移動は、固定オフセット(-)を減算することで表すことができる。式(4)に示すように、ミラーフリップは回路部品の位置の反転として表すことができる。いくつかの例では、チップ全体で回路部品の位置を移動するいくつかの方法を定義するために、他の演算が使用される。
【0059】
非ベースブロックの異なる回路部品を接続するワイヤも、ベースブロックのワイヤの関数として表すことができる。グラフ400Aは、ワイヤw、w、w、w、w、w、w、w、w、w10、w11、w12、w13、w14、w15、w16、w17、w18を示している。ワイヤwとwは、一例ではベースブロックであるブロックai1に接続されている。ブロックai3に接続されたワイヤw10の物理的位置は、ワイヤwの物理的位置とオフセットWの線形変換として表すことができる。ワイヤw10の位置の定式化の一例としては、次のようなものがある。
【0060】
10=w+2W (4)
システム100は、チップ上またはチップ内の各回路部品について線形変換を受信するように構成される。例えば、システムは、共通のテンプレートブロックからインスタンス化されたブロックのグループを識別するために、チップレベルのグラフをトラバースすることができる。システムは、グループからブロックをベースブロックとして選択できる。ベースブロックを選択するために、システムはグループ内のブロックからランダムに選択することができる。いくつかの例では、ベースブロックを選択するために、システムは、グループ、例えば、グループ内の他の各ブロックからのグラフ距離が平均して最も小さいグループの最も中心に位置するブロックを特定することができる。グラフ距離を決定するための距離メトリックは、ベースブロックが他のブロックから有する分離の程度とすることができる。いくつかの例では、ベースブロックは予め決定されており、例えば、各テンプレートブロックの最初のインスタンスである。
【0061】
図3Aを参照して、非一意化の前後、例えば、プロセス400Aを実行する前後におけるチップレベルグラフの構造を比較する。グラフ300Aの1つの例示的な定式化は、(N,E)であってもよく、
N:
{ai1.ma1,ai1.ma2,ai1.ma3,ai2.ma1,ai2.ma2,ai2.ma3,ai3.ma1,ai3.ma2,ai3.ma3
i1.mb1,bi1.mb2,bi2.mb1,bi2.mb2,bi1.mb3,bi3.mb2
i1.mc1,ci1.mc2
i1.md1
i1.me1
f1
e1
また、
N:
{w,w,w,w,w,w,w,w,w,w10,w11,w12,w13,w14,w15,w16,w17,w18
Interconnects(ai1),Interconnects(ai2),Interconnects(ai3)、
Interconnects(bi1),Interconnects(bi2),Interconnects(bi3)、
Interconnects(ci1)、Interconnects(ci2)、Interconnects(di1)、Interconnects(ei1)}
ここで、Interconnects(x)は、ブロックx内の回路部品のすべての相互接続の集合である。例えば、Interconnects(ai1)は、{ai1.s,ai1.s,ai1.s}と等価である。
【0062】
(N,E)における各ブロックは一意化されたインスタンスであり、グラフ(N,E)は、本開示の態様に従って生成される縮小グラフ表現よりも多くのスペースを消費する。縮小グラフ表現(N’,E’,L)は、ベースブロックのブロック情報を保持することができ、残りのブロックはそれぞれの線形変換として表現されるままにすることができる。N’の一例の定式化は、以下のようになり得る。
【0063】
N’:
{ai1.ma1,ai1.ma2,ai1.ma3,ai2.ma1
i1.mb1,bi1.mb2
i1.mc1,ci1.mc2
i1.md1
i1.me1
f1
e1
N’では、ベースブロック、すなわちai1、bi1、ci1、di1、ei1のみが符号化される。回路部品mf1およびme1も、グラフ300Aによって表される回路において1回だけインスタンス化されるため、符号化される。
【0064】
E’に対する1つの定式化は、次のようにすることができる。
N’:
+{w,w,w’,w’,w,w,w,w,w’,w’10,w11,w12,w’13,w’14,w15,w16,w’17,w18
Interconnects(ai1)、
Interconnects(bi1)、
Interconnects(ci1)、
Interconnects(di1)、
Interconnects(ei1)}
E’において、ワイヤw、w、wはベースブロックai1に対応するワイヤであり、ワイヤw、w12はベースブロックbi1に対応するワイヤであり、ワイヤw、w11はベースブロックci1に対応するワイヤであり、ワイヤw16はベースブロックdi1に対応するワイヤであり、ワイヤw15はブロックei1に対応するワイヤであり、ワイヤwは回路部品mf1に対応するワイヤであり、ワイヤw18はブロックme1に対応するワイヤである。ワイヤw’、w’、w’、w’13、w’14、およびw’17は、非ベースブロックに対応し、図3Aを参照して説明したように、対応するベースブロックワイヤの線形変換として表される。ワイヤw’、w’、w’、w’13、w’14、およびw’17に関する、それらのピン位置を含むインスタンス固有の情報は、それぞれのブロックに固有であり、本明細書で説明するように、ブロックの回路部品の位置配置のために使用される。縮小グラフ(N’,E’)は、全体としてグラフ表現(N,E)よりも少ないデータでグラフ300Aを表現しながら、そのインスタンス固有の情報を維持する。
【0065】
E’における各ベースブロックの相互接続は、同じMIBからインスタンス化されたブロックの相互接続を含む。同じ非ベースブロック内の部品間のユニークな相互接続も、ベースブロックの相互接続として符号化される。例えば、ブロックaに2つの回路部品間のユニークな相互接続がある場合、その相互接続はInterconnects(ai1)で表現される。
【0066】
線形変換Lは、各非ベースブロックに対応する線形変換のリストとすることができる。例えば、線形変換Lは、式(1)、(2)、および(4)を参照して示される変換を含むことができる。いくつかの例では、線形変換Lは、システム100の一部として符号化される所定の変換、例えば、水平平行移動、回転などのルックアップテーブルの値を含むことができる。使用される固定オフセットは、線形変換Lの一部として含めることができ、かつ/またはベースブロックのブロック情報に基づいて決定することができる。ブロック情報は、チップレベルグラフ300Aの一部として符号化することができ、幅W、高さH、ブロック間のスペースkなどのオフセットを含む。いくつかの例では、線形変換は、例えば、ベースブロックに対する水平平行移動のみを含むように、予め決定され得る。これらの例では、線形変換Lは空であってもよい。
【0067】
図3Bは、本開示の態様による、チップ301Bの別の例示的なチップレベルグラフ300Bである。ブロックai4およびai5は、MIB Aから、ワイヤw20,w21を介してインスタンス化される。ベースブロックが選択された後、各非ベースブロックの各回路部品について、システムは、(i)ベースブロック内のそれぞれのベース回路部品、(ii)回路部品のオフセットの値、および(iii)回路部品の位置に到達するための、それぞれのベース回路部品の位置とオフセットの値との変換、を決定することができる。例300A~Cに示すように、異なる変換には、水平平行移動、垂直平行移動、ミラー反転、および回転の組合せが含まれる。システムは、例えば、水平/垂直平行移動のための加算/減算など、可能な変換を表すために特定の演算を適用するように構成することができる。いくつかの例では、線形変換は手作業で決定され、システム100に提供される。
【0068】
線形変換は回転も含むことができる。ブロックai5の物理的位置は、ブロックai4の物理的位置に対して90度回転される。ブロックai4がベースブロックである場合、ブロックai5の物理的位置の1つの定式化は次のようになる。
【0069】
i5=ai4+90° (5)
式(5)の例では、角度の加算はベースブロックの時計回りの回転とすることができ、角度の減算はベースブロックの反時計回りの回転とすることができる。平行移動、ミラー反転、および回転の組合せは、例えば、ベースブロックの後の第1項が水平移動であり、第2項が垂直移動であり、第3項が回転角度であり、ベースブロックにミラー反転を示す-1が乗算されるかどうかというように、順番に定義して適用することができる。ベースブロックxに対する非ベースブロックxの物理的位置を表すフォーマット例としては、次のようなものがある。
【0070】
=(±1)x±hoffset±voffset±rotationoffset (6)
ここで、hoffsetは水平オフセットであり、voffsetは垂直オフセットであり、rotationoffsetは回転オフセット(0~360度)である。
【0071】
例示的な方法
図4Aは、本開示の態様による、MIBの一意化されたインスタンスのデータ構造を非一意化するための例示的なプロセス400Aのフロー図である。システムは、CPU、GPU、および/またはASICを使用して計算を実行する多くの異なる同種または異種のコンピューティングデバイスを含むことができる、多くの異なるワーカーにわたってチップフロアプランオペレーションを分散することができる。プロセス400Aの一部またはすべてのステップは、互いに非同期に動作する多くの異なるワーカーによって並列に実行され得る。また、異なるワーカーは、同期的に動作して、プロセス400Aおよび/または400Bの一部またはすべてのステップを並行して実行することもできる。
【0072】
1つまたは複数のプロセッサのシステムは、ブロック405に従って、集積回路内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することができ、グループは、第1のブロックおよび1つまたは複数の第2のブロックを含む。例えば、システム100は、プロセス400Aを実行することができる。プロセス400Aは、ブロックの単一のグループを参照して説明されるが、プロセス400Aは、チップレベルグラフなどの第1のデータ構造内のブロックの複数のグループの各々に対して繰り返され得る。
【0073】
第1のデータ構造は、チップレベルグラフまたはチップ設計のブロックまたは他の回路部品の物理的位置を表す他のデータ構造とすることができる。例えば、第1のデータ構造は、図1を参照して示され説明されるように、ネットリストデータ130またはチップ回路部品データ105であり得る。
【0074】
システムは、ブロック410に従って、第1のブロックに対する1つまたは複数の第2のブロックの物理的位置を表すデータを含む第2のデータ構造を生成する。
【0075】
第1のブロックは、図1および図3A-3Cを参照して説明したようなベースブロックとすることができる。第2のデータ構造は、第1のデータ構造内のインスタンスを生成するために使用される各MIBまたはテンプレートブロックが単一のインスタンスによって表される、縮小チップレベルグラフであり得る。図4Bは、第1のブロックに対する1つまたは複数のブロックの物理的位置を表すデータを含むデータ構造を生成するための例示的なプロセス400Bを示す。
【0076】
システムは、ブロック415に従って、第2のデータ構造に対して回路部品配置プロセスの1回または複数回の反復を実行させる。図2を参照して本明細書で説明するような回路部品配置プロセスは、2つの段階に分けることができる。受信した第1のデータ構造は、回路部品配置プロセスの第1のブロックの一部として生成されたネットリストデータであることができ、このプロセスでは、チップ上またはチップ内のブロックの物理的位置が、1つまたは複数の目的に従って最適化される。システムは、1つまたは複数の目的に従って、受信したチップレベルグラフの各ブロック内の回路部品の配置が最適化される、回路部品配置プロセスの1回または複数回の反復または第2のブロックを引き起こすことができる。いくつかの例では、システムは、第2のデータ構造を入力として使用して、回路部品配置プロセスの第1段階、第2段階、または第1および第2のブロックの両方、の1回または複数回の反復の実行を引き起こすことができる。
【0077】
システムは、回路部品配置プロセスを実行するように構成された1つまたは複数のデバイスに、第2のデータ構造を含む要求を送信することによって、回路部品配置プロセスの1回または複数回の反復の実行を引き起こすことができる。いくつかの例では、システムは、回路部品配置への出力を受信し、例えば、チップ設計パイプラインの一部として、さらに処理を実行することができる。いくつかの例では、システムは、1つまたは複数のプロセッサを使用してプロセスを実行することにより、回路部品配置プロセスの実行を引き起こすことができる。
【0078】
図4Bは、本開示の態様に従って、共通のMIBを有する第1のブロックに対する1つまたは複数のブロックの物理的位置を表すデータを含むデータ構造を生成するための例示的なプロセス400Bのフロー図である。例えば、システム100は、プロセス400Bを実行することができる。
【0079】
システムは、ブロック420に従って、共通のMIBを共有するブロックのグループ内の第1のブロックを選択する。共通のMIBは、テンプレートブロックの一例であり、テンプレートブロックのインスタンスであるグループのブロックを生成するために使用することができる。MIBを参照して説明したが、いくつかの例では、システムは、図1を参照して本明細書で説明したように、メモリマクロ、IPブロックなどから生成されたブロックを使用して、プロセス400Bを実行することができる。
【0080】
システムは、グループのベースブロックとして第1のブロックを選択することができる。この選択は、ランダムであってもよいし、何らかのヒューリスティック、例えばチップレベルグラフに示されるような他のブロックに対する第1のブロックの物理的近接性に基づいてもよい。例えば、システムは、ブロックのグループを含むクラスタのセントロイドを特定するためにグラフ検索を実行し、グループの最も「中心」のブロックをベースブロックとして選択することができる。セントロイドまでの距離は、例えば、グループ内のブロックを表すノード間の分離度または平均分離度として測定することができる。別の例では、テンプレートブロックからインスタンス化されたネットリストの第1のブロックをベースブロックとして選択できる。
【0081】
システムは、ブロック425に従って、固定オフセットと線形変換を受信する。固定オフセットは、例えば水平平行移動または垂直平行移動の場合、ブロックのグループのブロック間の所定の幅、高さ、およびギャップ距離に基づくことができる。線形変換を受け取るために、システムは、データ構造、例えばチップレベルグラフをトラバースして、選択されたベースブロックと同じインスタンスからの非ベースブロックとの間の空間的関係を特定することができる。各回路部品の物理的配置および向きなど、各部品に関する空間情報は、ブロックレベルの配置プロセスの一部として特定することができる。空間情報を使用して、システムはベースブロックとグループの他のブロックとの関係を特定できる。例えば、非ベースブロックがベースブロックから3ブロック離れており、各ブロックの固定オフセット幅がWである場合、非ベースブロックの物理的位置を表すための線形変換は、3Wの水平平行移動を有する。いくつかの例では、システムは、グループ内の各非ベースブロックの物理的位置のための所定の線形変換を受信することができる。
【0082】
ブロックのグループ内の各第2のブロックについて、システムは、ブロック430に従って、第2のブロックの物理的位置を表すデータを生成し、データは、第2のブロックのそれぞれの線形変換を含む。
【0083】
コンピューティング環境の例
図5は、本開示の態様による、チップ配置生成システム100を実装するための例示的な環境500のブロック図である。システム100は、サーバコンピューティングデバイス515のような、1つまたは複数の位置に1つまたは複数のプロセッサを有する1つまたは複数のデバイスに実装され得る。ユーザコンピューティングデバイス512およびサーバコンピューティングデバイス515は、ネットワーク560を介して1つまたは複数のストレージデバイス530に通信可能に結合され得る。ストレージデバイス530は、揮発性メモリと不揮発性メモリの組合せとすることができ、コンピューティングデバイス512、515と同じ物理的位置にあることも、異なる物理的位置にあることもできる。例えば、ストレージデバイス530は、ハードドライブ、ソリッドステートドライブ、テープドライブ、光学記憶装置、メモリカード、ROM、RAM、DVD、CD-ROM、書き込み可能なメモリ、および読み取り専用メモリなど、情報を記憶することができる任意のタイプの非一時的なコンピュータ可読媒体を含むことができる。
【0084】
サーバコンピューティングデバイス515は、1つまたは複数のプロセッサ513およびメモリ514を含み得る。メモリ514は、プロセッサ513によって実行され得る命令521を含む、プロセッサ513によってアクセス可能な情報を記憶し得る。メモリ514はまた、プロセッサ513によって検索、操作、または記憶され得るデータ523を含み得る。メモリ514は、揮発性メモリおよび不揮発性メモリなど、プロセッサ513によってアクセス可能な情報を記憶することができるタイプの非一時的なコンピュータ可読媒体であり得る。プロセッサ513は、1つまたは複数の中央処理装置(CPU)、グラフィック処理装置(GPU)、フィールドプログラマブルゲートアレイ(FPGA)、および/またはテンソル処理装置(TPU)などの特定用途向け集積回路(ASIC)を含み得る。
【0085】
命令521は、プロセッサ513によって実行されると、1つまたは複数のプロセッサに命令によって定義される動作を実行させる1つまたは複数の命令を含み得る。命令521は、プロセッサ513によって直接処理されるためのオブジェクトコード形式で、または解釈可能なスクリプト、またはオンデマンドで解釈されるか、または事前にコンパイルされる独立したソースコードモジュールのコレクションを含む他の形式で記憶され得る。命令521は、本開示の態様と一致するシステム100を実施するための命令を含み得る。システム100は、プロセッサ513を使用して、かつ/またはサーバコンピューティングデバイス515から遠隔に配置された他のプロセッサを使用して実行され得る。
【0086】
データ523は、命令521に従って、プロセッサ513によって検索され、記憶され、または変更され得る。データ523は、複数の異なるフィールドおよびレコードを有するテーブルとして、またはJSON、YAML、proto、またはXMLドキュメントとして、コンピュータレジスタ、リレーショナルまたは非リレーショナルデータベースに記憶され得る。また、データ523は、バイナリ値、ASCII、またはUnicodeなどのコンピュータ可読形式でフォーマットすることもできるが、これらに限定されない。さらに、データ523は、数字、記述テキスト、専有コード、ポインタ、他のネットワークロケーションを含む他のメモリに記憶されたデータへの参照、または関連データを計算する機能によって使用される情報など、関連情報を特定するのに十分な情報を含むことができる。
【0087】
ユーザコンピューティングデバイス512はまた、1つまたは複数のプロセッサ516、メモリ517、命令518、およびデータ519を備える、サーバコンピューティングデバイス515のように構成され得る。ユーザコンピューティングデバイス512はまた、ユーザ出力526、およびユーザ入力524も含むことができる。ユーザ入力524は、キーボード、マウス、機械的アクチュエータ、ソフトアクチュエータ、タッチスクリーン、マイクロフォン、およびセンサなど、ユーザからの入力を受信するための任意の適切な機構または技術を含み得る。
【0088】
サーバコンピューティングデバイス515は、データをユーザコンピューティングデバイス512に送信するように構成され得、ユーザコンピューティングデバイス512は、受信されたデータの少なくとも一部を、ユーザ出力526の一部として実装されたディスプレイに表示するように構成され得る。ユーザ出力526はまた、ユーザコンピューティングデバイス512とサーバコンピューティングデバイス515との間のインターフェースを表示するために使用することもできる。ユーザ出力526は、代替的にまたは追加的に、ユーザコンピューティングデバイス512のユーザに非視覚および非可聴情報を提供する、1つまたは複数のスピーカ、トランスデューサ、または他のオーディオ出力、触覚インターフェース、または他の触覚フィードバックを含むことができる。
【0089】
図5は、プロセッサ513、516およびメモリ514、517がコンピューティングデバイス515、512内にあるように図示しているが、プロセッサ513、516およびメモリ514、517を含む本明細書で説明される部品は、同じコンピューティングデバイス内ではなく、異なる物理的位置で動作できる、複数のプロセッサおよびメモリを含み得る。例えば、命令521、518およびデータ523、519の一部は、取り外し可能なSDカードに記憶することができ、他は、読み取り専用コンピュータチップ内に記憶することができる。命令およびデータの一部または全部は、プロセッサ513、516から物理的に離れた位置に記憶することができるが、それでもプロセッサ513、516によってアクセス可能である。同様に、プロセッサ513、516は、同時動作および/または逐次動作を実行することができるプロセッサの集合を含むことができる。コンピューティングデバイス515、512は各々、タイミング情報を提供する1つまたは複数の内部クロックを含むことができ、これは、コンピューティングデバイス515、512によって実行される動作およびプログラムの時間測定に使用することができる。
【0090】
サーバコンピューティングデバイス515は、ユーザコンピューティングデバイス512からデータを処理する要求を受信するように構成され得る。例えば、環境500は、プラットフォームサービスを公開する様々なユーザインターフェースおよび/またはAPIを介して、ユーザに様々なサービスを提供するように構成されたコンピューティングプラットフォームの一部であり得る。
【0091】
デバイス512、515は、ネットワーク560を介した直接および間接通信が可能であり得る。デバイス515、512は、情報を送受信するための開始接続を受け入れることができるリスニングソケットをセットアップすることができる。ネットワーク560自体は、インターネット、ワールドワイドウェブ、イントラネット、仮想プライベートネットワーク、ワイドエリアネットワーク、ローカルネットワーク、および1つまたは複数の企業独自の通信プロトコルを使用するプライベートネットワークを含む、様々な構成およびプロトコルを含むことができる。ネットワーク560は、様々な短距離および長距離接続をサポートすることができる。短距離および長距離接続は、2.402GHz~2.480GHz(一般にBluetooth(登録商標)規格に関連する)、2.4GHzおよび5GHz(一般にWi-Fi(登録商標)通信プロトコルに関連する)、またはワイヤレスブロードバンド通信用のLTE(登録商標)規格などの様々な通信規格などの異なる帯域幅で行うことができる。ネットワーク560は、追加的または代替的に、いくつかのタイプのイーサネット(登録商標)接続を含む、デバイス512、515間の有線接続もサポートすることができる。
【0092】
図5には、単一のサーバコンピューティングデバイス515およびユーザコンピューティングデバイス512が示されているが、本開示の態様は、逐次処理または並列処理のためのパラダイム、または複数のデバイスの分散ネットワーク上を含む、コンピューティングデバイスの様々な異なる構成および数量に従って実装され得ることが理解される。いくつかの実装では、本開示の態様は、単一のデバイス上で、およびそれらの任意の組合せで実行され得る。
【0093】
本開示の態様は、デジタル回路、コンピュータ読み取り可能な記憶媒体、1つまたは複数のコンピュータプログラム、または前述の1つまたは複数の組合せで実装することができる。コンピュータ可読記憶媒体は、例えば、クラウドコンピューティングプラットフォームによって実行可能であり、有形記憶装置に記憶される1つまたは複数の命令として、非一時的であり得る。
【0094】
本明細書では、「~ように構成される」という語句は、コンピュータシステム、ハードウェア、またはコンピュータプログラム、エンジン、またはモジュールの一部に関連する異なる文脈で使用される。システムが1つまたは複数の動作を実行するように構成されていると言われる場合、これは、動作時にシステムに1つまたは複数の動作を実行させる適切なソフトウェア、ファームウェア、および/またはハードウェアがシステムにインストールされていることを意味する。あるハードウェアが1つまたは複数の動作を実行するように構成されていると言われる場合、これは、ハードウェアが、動作時に、入力を受け取り、入力に従って、1つまたは複数の動作に対応する出力を生成する1つまたは複数の回路を含むことを意味する。コンピュータプログラム、エンジン、またはモジュールが、1つまたは複数の動作を実行するように構成されていると言われる場合、これは、コンピュータプログラムが1つまたは複数のプログラム命令を含み、1つまたは複数のコンピュータによって実行されると、1つまたは複数のコンピュータに1つまたは複数の動作を実行させることを意味する。
【0095】
特に断らない限り、前述の代替例は相互に排他的なものではなく、独自の利点を達成するために様々な組合せで実施することができる。特許請求の範囲によって定義された主題から逸脱することなく、上述した特徴のこれらおよび他の変形例および組合せを利用することができるので、前述の実施形態の説明は、特許請求の範囲によって定義された主題を限定するためではなく、例示のために取られるべきである。加えて、本明細書に記載された実施例の提供、ならびに「~のような」、「~を含む」などのように表現された句は、特許請求の範囲の主題を特定の実施例に限定するものとして解釈されるべきではなく、むしろ、実施例は、多くの可能な実装形態のうちの1つのみを例示することを意図している。さらに、異なる図面における同じ参照番号は、同じまたは類似の要素を識別することができる。
図1
図2
図3A
図3B
図4A
図4B
図5
【手続補正書】
【提出日】2024-05-17
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
1つまたは複数のプロセッサが、集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することを含み、前記ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含み、前記方法はさらに、
前記1つまたは複数のプロセッサが、第2のデータ構造を生成することを含み、前記第2のデータ構造は、前記第1のブロックに対する前記1つまたは複数の第2のブロックの物理的位置を表すデータを含み、前記方法はさらに、
前記1つまたは複数のプロセッサが、前記第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすことを含み、前記回路部品配置プロセスは、1つまたは複数の目的に従って、前記第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、方法。
【請求項2】
前記第2のデータ構造を生成することは、
第2のブロックの各回路部品について、前記第1のブロック内のそれぞれの回路部品の物理的位置に対する前記回路部品の物理的位置と1つまたは複数のオフセット値とを表すデータを生成すること、
を含む、請求項1に記載の方法。
【請求項3】
前記第2のデータ構造を生成することは、
前記第2のデータ構造の一部として、前記1つまたは複数の第2のブロックのブロック固有の相互接続を表すデータを生成することを含み、ブロック固有の相互接続は、第2のブロックと別の回路部品との間の一意の接続を表す、
請求項1に記載の方法。
【請求項4】
各ブロックの物理的位置は、前記集積回路のフロアプランのそれぞれの位置として表され、
前記第2のデータ構造を生成することは、
前記ブロックのグループ内のブロックから前記第1のブロックを選択することと、
各第2のブロックについて、前記集積回路の前記フロアプランに沿った前記第1のブロックの物理的位置のそれぞれの線形変換を含む、前記第2のブロックの物理的位置を表すデータを生成することと、
を含む、
請求項1に記載の方法。
【請求項5】
前記1つまたは複数のプロセッサが、前記グループ内の前記ブロックの物理的寸法に少なくとも部分的に基づく、前記1つまたは複数のオフセット値を受信することと、
各第2のブロックについて、前記1つまたは複数のプロセッサが、前記第1のブロックの物理的位置に対する前記第2のブロックの物理的位置の前記それぞれの線形変換と、前記1つまたは複数のオフセット値と、を受信することと、
をさらに含む、
請求項4に記載の方法。
【請求項6】
前記生成されたデータに表される線形変換は、
前記フロアプランに沿った水平平行移動、前記フロアプランに沿った垂直平行移動、前記フロアプランに沿った回転、および前記フロアプランに沿った鏡面反転、
の少なくとも1つを含む、
請求項4に記載の方法。
【請求項7】
前記第1のデータ構造は、前記回路部品配置プロセスを少なくとも部分的に使用して生成され、前記回路部品配置プロセスは、前記1つまたは複数の目的に従って、前記第1のデータ構造内のブロックの物理的位置を表すデータを更新することを含む、
請求項1に記載の方法。
【請求項8】
前記1つまたは複数の目的は、
1つまたは複数の所定のメトリックに従って前記集積回路の性能を向上させること、
前記集積回路の所要電力を低減すること、
前記集積回路の回路部品間の相互接続の長さを短縮すること、および
前記集積回路が実装された基板上の前記集積回路の物理的面積を縮小すること、
の少なくとも1つを含む、
請求項7に記載の方法。
【請求項9】
前記回路部品配置プロセスの1回または複数回の反復の実行を引き起こすことは、前記1つまたは複数のプロセッサが、前記1回または複数回の反復を実行することを含む、
請求項1に記載の方法。
【請求項10】
前記第1のデータ構造によって表される前記ブロックのグループの各ブロックは、テンプレートブロックの一意化されたインスタンスである、
請求項1に記載の方法。
【請求項11】
前記テンプレートブロックは、
多重インスタンス化ブロック(MIB)、1つまたは複数の知的財産(IP)ブロック、メモリマクロ、または1つまたは複数の論理ゲート、
のうちの1つである、請求項10に記載の方法。
【請求項12】
1つまたは複数のプロセッサを含むシステムであって、前記1つまたは複数のプロセッサは、
前記1つまたは複数のプロセッサによって、集積回路(IC)内のブロックのグループの各ブロックの物理的位置を表すデータを含む第1のデータ構造を受信することを実行するように構成され、前記ブロックのグループは第1のブロックと1つまたは複数の第2のブロックとを含み、各ブロックは1つまたは複数のそれぞれの回路部品を含み、前記1つまたは複数のプロセッサは、さらに、
前記1つまたは複数のプロセッサによって、第2のデータ構造を生成することを実行するように構成され、前記第2のデータ構造は、前記第1のブロックに対する前記1つまたは複数の第2のブロックの物理的位置を表すデータを含み、前記1つまたは複数のプロセッサは、さらに、
前記1つまたは複数のプロセッサによって、前記第2のデータ構造に対する回路部品配置プロセスの1回または複数回の反復の実行を少なくとも部分的に引き起こすことを実行するように構成され、前記回路部品配置プロセスは、1つまたは複数の目的に従って、前記第2のデータ構造によって表されるブロックの回路部品の物理的位置を表すデータを生成することを含む、システム。
【請求項13】
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
第2のブロックの各回路部品について、前記第1のブロック内のそれぞれの回路部品の物理的位置に対する前記回路部品の物理的位置と1つまたは複数のオフセット値とを表すデータを生成すること、
をさらに実行するように構成される、
請求項12に記載のシステム。
【請求項14】
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
前記第2のデータ構造の一部として、前記1つまたは複数の第2のブロックのブロック固有の相互接続を表すデータを生成することをさらに実行するように構成され、ブロック固有の相互接続は、第2のブロックと別の回路部品との間の一意の接続を表す、
請求項12に記載のシステム。
【請求項15】
各ブロックの物理的位置は、前記集積回路のフロアプランのそれぞれの位置として表され、
前記第2のデータ構造を生成することにおいて、前記1つまたは複数のプロセッサは、
前記ブロックのグループ内のブロックから前記第1のブロックを選択することと、
各第2のブロックについて、前記集積回路の前記フロアプランに沿った前記第1のブロックの物理的位置のそれぞれの線形変換を含む、前記第2のブロックの物理的位置を表すデータを生成することと、
をさらに実行するように構成される、
請求項12に記載のシステム。
【請求項16】
前記1つまたは複数のプロセッサは、
前記グループ内のブロックの物理的寸法に少なくとも部分的に基づく、前記1つまたは複数のオフセット値を受信することと、
各第2のブロックについて、前記第1のブロックの物理的位置に対する前記第2のブロックの物理的位置の前記それぞれの線形変換と、前記1つまたは複数のオフセット値とを受信することと、
をさらに実行するように構成される、
請求項15に記載のシステム。
【請求項17】
前記生成されたデータに表される線形変換は、
前記フロアプランに沿った水平平行移動、前記フロアプランに沿った垂直平行移動、前記フロアプランに沿った回転、または前記フロアプランに沿った鏡面反転、
の少なくとも1つを含む、
請求項15に記載のシステム。
【請求項18】
前記第1のデータ構造は、前記回路部品配置プロセスを少なくとも部分的に使用して生成され、前記回路部品配置プロセスは、前記1つまたは複数の目的に従って、前記第1のデータ構造内のブロックの物理的位置を表すデータを更新することを含む、
請求項12に記載のシステム。
【請求項19】
前記1つまたは複数の目的は、
1つまたは複数の所定のメトリックに従って前記集積回路の性能を向上させること、
前記集積回路の所要電力を低減すること、
前記集積回路の回路部品間の相互接続の長さを短縮すること、および
前記集積回路が実装された基板上の前記集積回路の物理的面積を縮小すること、
の少なくとも1つを含む、
請求項18に記載のシステム。
【請求項20】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1~11のいずれか1項に記載の方法を実行させる1つまたは複数のコンピュータプログラム
【国際調査報告】