(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-04
(45)【発行日】2024-01-15
(54)【発明の名称】ニューラルネットワークを使用した集積回路フロアプランの生成
(51)【国際特許分類】
G06F 30/392 20200101AFI20240105BHJP
G06N 3/02 20060101ALI20240105BHJP
G06N 99/00 20190101ALI20240105BHJP
G06F 30/27 20200101ALI20240105BHJP
【FI】
G06F30/392
G06N3/02
G06N99/00 180
G06F30/27
【外国語出願】
(21)【出願番号】P 2023026457
(22)【出願日】2023-02-22
(62)【分割の表示】P 2021531776の分割
【原出願日】2019-12-04
【審査請求日】2023-03-23
(32)【優先日】2018-12-04
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】チアン-ミン・リチャード・ホ
(72)【発明者】
【氏名】ウィリアム・ハン
(72)【発明者】
【氏名】ムスタファ・ナズム・ヤズガン
(72)【発明者】
【氏名】アンナ・ダーリング・ゴールディ
(72)【発明者】
【氏名】ジェフリー・アドゲート・ディーン
(72)【発明者】
【氏名】アザリア・ミルホセイニ
(72)【発明者】
【氏名】エムラ・タンサー
(72)【発明者】
【氏名】ヤ・ワン
(72)【発明者】
【氏名】アナンド・バブ
【審査官】堀井 啓明
(56)【参考文献】
【文献】国際公開第2018/234945(WO,A1)
【文献】特開平11-306216(JP,A)
【文献】特開2001-134551(JP,A)
【文献】特開2004-259105(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00-30/398
G06N 3/02
G06N 99/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実行される方法であって、
コンピュータチップのためのネットリストデータを取得するステップであり、前記ネットリストデータは複数のノード間のコンピュータチップ上の接続を指定し、前記複数のノードの各々が前記コンピュータチップの複数の集積回路構成要素のうちの1つまたは複数に対応している、取得するステップと、
ノード配置ニューラルネットワークを使用して前記コンピュータチップの表面上のそれぞれの位置に前記ネットリストデータ内の各々のノードを配置するコンピュータチップフロアプランを生成するステップであり、前記ノード配置ニューラルネットワークは、(i)複数の時間ステップの各々において、時間ステップの入力表現を処理して前記入力表現の埋め込みを生成するように構成された入力サブネットワークと、(ii)前記複数の時間ステップの各々において、時間ステップの前記入力表現の前記埋め込みを処理して、前記コンピュータチップの前記表面上の複数の位置にわたるスコア分布を生成するように構成されたポリシーサブネットワークとを含む、生成するステップと、
前記コンピュータチップフロアプランの品質を測定する報酬関数を使用して、前記コンピュータチップフロアプランに対する報酬を生成するステップと、
前記報酬を少なくとも使用して、前記報酬関数を最大化する確率分布を生成するための強化学習を介して前記ノード配置ニューラルネットワークの少なくとも前記ポリシーサブネットワークをトレーニングするステップと
を含む方法。
【請求項2】
前記ノード配置ニューラルネットワークは、前記時間ステップの各々において、時間ステップの前記入力表現の前記埋め込みを処理して、前記時間ステップにおける前記コンピュータチップフロアプランの現在の状態の値を推定する値推定値を生成するように構成された値サブネットワークをさらに含み、強化学習を介して前記ノード配置ニューラルネットワークの少なくとも前記ポリシーサブネットワークをトレーニングするステップは、前記複数の時間ステップに対する値推定値と強化学習を介した報酬値とを使用して少なくとも前記ポリシーサブネットワークをトレーニングするステップを含む、請求項1に記載の方法。
【請求項3】
前記報酬関数は、前記チップの前記表面上のノード間のワイヤ長がより短いとき、より高いワイヤ長測度を含む、請求項1に記載の方法。
【請求項4】
前記報酬関数は、前記コンピュータチップの前記表面上の輻輳がより低いとき、より高い輻輳測度を含む、請求項1に記載の方法。
【請求項5】
前記輻輳測度は、前記表面の水平および垂直エッジにわたるワイヤの密度を追跡する、請求項4に記載の方法。
【請求項6】
各時間ステップにおいて、前記時間ステップの前記入力表現は、(i)シーケンス内の特定の時間ステップに先行する時間ステップにおいてすでに配置されているノードの前記コンピュータチップの前記表面上の位置、および(ii)前記特定の時間ステップにおいて配置されるべきノードを少なくとも特徴付ける、請求項1に記載の方法。
【請求項7】
前記コンピュータチップフロアプランを生成するステップは、各時間ステップにおいて、前記時間ステップにおいて配置されるべき前記ノードを、前記スコア分布を使用して前記複数の位置からの1つの位置に割り当てるステップを含む、請求項6に記載の方法。
【請求項8】
前記時間ステップにおいて配置されるべき前記ノードを割り当てるステップは、
前記時間ステップに先行する時間ステップにおいてすでに配置されているノードの前記チップの前記表面上の前記それぞれの位置に基づいて決定した密度がしきい値を超える各位置に対するスコアをゼロに設定する修正されたスコア分布を生成するステップと、
前記修正されたスコア分布を使用して前記ノードを割り当てるステップと
を含む、請求項7に記載の方法。
【請求項9】
前記複数の位置は、前記コンピュータチップの前記表面上にオーバーレイされたN×Mグリッドからのグリッド正方形を含む、請求項1に記載の方法。
【請求項10】
前記ノード配置ニューラルネットワークの前記トレーニングは、複数の同期作業者にわたって分散される、請求項1に記載の方法。
【請求項11】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、動作を実行させる命令を記憶した1つまたは複数の非一時的コンピュータ可読媒体であって、前記動作が、
コンピュータチップのためのネットリストデータを取得する動作であり、前記ネットリストデータは複数のノード間のコンピュータチップ上の接続を指定し、前記複数のノードの各々が前記コンピュータチップの複数の集積回路構成要素のうちの1つまたは複数に対応している、取得する動作と、
ノード配置ニューラルネットワークを使用して前記コンピュータチップの表面上のそれぞれの位置に前記ネットリストデータ内の各々のノードを配置するコンピュータチップフロアプランを生成する動作であり、前記ノード配置ニューラルネットワークは、(i)複数の時間ステップの各々において、時間ステップの入力表現を処理して前記入力表現の埋め込みを生成するように構成された入力サブネットワークと、(ii)前記複数の時間ステップの各々において、時間ステップの前記入力表現の前記埋め込みを処理して、前記コンピュータチップの前記表面上の複数の位置にわたるスコア分布を生成するように構成されたポリシーサブネットワークとを含む、生成する動作と、
前記コンピュータチップフロアプランの品質を測定する報酬関数を使用して、前記コンピュータチップフロアプランに対する報酬を生成する動作と、
前記報酬を少なくとも使用して、前記報酬関数を最大化する確率分布を生成するための強化学習を介して前記ノード配置ニューラルネットワークの少なくとも前記ポリシーサブネットワークをトレーニングする動作と
を含む、1つまたは複数の非一時的コンピュータ可読媒体。
【請求項12】
1つまたは複数のコンピュータと、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、動作を実行させる命令を記憶する1つまたは複数の記憶デバイスとを含むシステムであって、前記動作が、
コンピュータチップのためのネットリストデータを取得する動作であり、前記ネットリストデータは複数のノード間のコンピュータチップ上の接続を指定し、前記複数のノードの各々が前記コンピュータチップの複数の集積回路構成要素のうちの1つまたは複数に対応している、取得する動作と、
ノード配置ニューラルネットワークを使用して前記コンピュータチップの表面上のそれぞれの位置に前記ネットリストデータ内の各々のノードを配置するコンピュータチップフロアプランを生成する動作であり、前記ノード配置ニューラルネットワークは、(i)複数の時間ステップの各々において、時間ステップの入力表現を処理して前記入力表現の埋め込みを生成するように構成された入力サブネットワークと、(ii)前記複数の時間ステップの各々において、時間ステップの前記入力表現の前記埋め込みを処理して、前記コンピュータチップの前記表面上の複数の位置にわたるスコア分布を生成するように構成されたポリシーサブネットワークとを含む、生成する動作と、
前記コンピュータチップフロアプランの品質を測定する報酬関数を使用して、前記コンピュータチップフロアプランに対する報酬を生成する動作と、
前記報酬を少なくとも使用して、前記報酬関数を最大化する確率分布を生成するための強化学習を介して前記ノード配置ニューラルネットワークの少なくとも前記ポリシーサブネットワークをトレーニングする動作と
を含む、システム。
【請求項13】
前記ノード配置ニューラルネットワークは、前記時間ステップの各々において、時間ステップの前記入力表現の前記埋め込みを処理して、前記時間ステップにおける前記コンピュータチップフロアプランの現在の状態の値を推定する値推定値を生成するように構成された値サブネットワークをさらに含み、強化学習を介して前記ノード配置ニューラルネットワークの少なくとも前記ポリシーサブネットワークをトレーニングする動作は、前記複数の時間ステップに対する値推定値と強化学習を介した報酬値とを使用して少なくとも前記ポリシーサブネットワークをトレーニングする動作を含む、請求項12に記載のシステム。
【請求項14】
前記報酬関数は、前記チップの前記表面上のノード間のワイヤ長がより短いとき、より高いワイヤ長測度を含む、請求項12に記載のシステム。
【請求項15】
前記報酬関数は、前記コンピュータチップの前記表面上の輻輳がより低いとき、より高い輻輳測度を含む、請求項12に記載のシステム。
【請求項16】
前記輻輳測度は、前記表面の水平および垂直エッジにわたるワイヤの密度を追跡する、請求項15に記載のシステム。
【請求項17】
各時間ステップにおいて、前記時間ステップの前記入力表現は、(i)シーケンス内の特定の時間ステップに先行する時間ステップにおいてすでに配置されているノードの前記コンピュータチップの前記表面上の位置、および(ii)前記特定の時間ステップにおいて配置されるべきノードを少なくとも特徴付ける、請求項12に記載のシステム。
【請求項18】
前記コンピュータチップフロアプランを生成する動作は、各時間ステップにおいて、前記時間ステップにおいて配置されるべき前記ノードを、前記スコア分布を使用して前記複数の位置からの1つの位置に割り当てる動作を含む、請求項17に記載のシステム。
【請求項19】
前記時間ステップにおいて配置されるべき前記ノードを割り当てる動作は、
前記時間ステップに先行する時間ステップにおいてすでに配置されているノードの前記チップの前記表面上の前記それぞれの位置に基づいて決定した密度がしきい値を超える各位置に対するスコアをゼロに設定する修正されたスコア分布を生成する動作と、
前記修正されたスコア分布を使用して前記ノードを割り当てる動作と
を含む、請求項18に記載のシステム。
【請求項20】
前記複数の位置は、前記コンピュータチップの前記表面上にオーバーレイされたN×Mグリッドからのグリッド正方形を含む、請求項12に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2018年12月4日に出願された米国特許出願第62/775,284号の優先権を主張し、その内容全体が参照により組み込まれる。
【0002】
本明細書は、電子設計自動化のためのニューラルネットワークの使用に関し、より詳細には、コンピュータチップフロアプランを生成するためのニューラルネットワークの使用に関する。
【背景技術】
【0003】
コンピュータチップフロアプランは、コンピュータチップの表面、すなわちチップエリア上のコンピュータチップの回路の一部または全部の配置の概略図である。
【0004】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を使用して、受信された入力の出力を予測する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワーク内の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って受信された入力から出力を生成する。
【先行技術文献】
【非特許文献】
【0005】
【文献】S. Kirkpatrick, C. D. Gelatt, and M. P. Vecchi.Optimization by simulated annealing. SCIENCE, 220(4598):671-680, 1983
【文献】Thomas N. Kipf and Max Welling. Semi-supervised classification with graph convolutional networks. International Conference on Learning Representations, 2017
【文献】Siamese neural networks for one-shot image recognition. G Koch, R Zemel, and R Salakhutdinov. In ICML Deep Learning workshop, 2015
【文献】Inductive Representation Learning on Large Graphs. W.L. Hamilton, R. Ying, and J. Leskovec arXiv:1706.02216 [cs.SI], 2017
【発明の概要】
【課題を解決するための手段】
【0006】
本明細書は、集積回路のチップフロアプランを生成する1つまたは複数の位置にある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムについて説明する。チップフロアプランが生成される集積回路は、本明細書では「コンピュータチップ」と呼ばれるが、一般に、1つの半導体材料上に製造される電子回路の任意の集合を意味するものと理解されたい。チップフロアプランは、ノードのネットリストからの各ノードを、コンピュータチップの表面上のそれぞれの位置に配置する。
【0007】
本明細書に記載される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実施することができる。
【0008】
チップの表面上にチップの構成要素を配置することを伴うフロアプランニングは、チップ設計プロセスにおける重要なステップである。構成要素の配置は、面積、全ワイヤ長、および輻輳などのメトリクスを最適化すべきである。フロアプランがこれらのメトリクスでうまく機能しない場合、フロアプランに基づいて生成されるコンピュータチップはうまく機能しない。たとえば、コンピュータチップは、機能しなくなる可能性がある、過剰な電力を消費する可能性がある、許容できない待ち時間を有する可能性がある、またはチップ上の構成要素の準最適な配置によって引き起こされる様々な他の望ましくない特性のいずれかを有する可能性がある。
【0009】
記載された技法は、記載されたノード配置ニューラルネットワークおよび記載されたトレーニング技法を利用することによって、高品質のチップフロアプランが自動的に、かつ最小限のユーザ関与で生成されることを可能にする。特定の例として、分散トレーニングが使用されると、人間の専門家の関与なしに、数時間程度で高品質(すなわち、超人的)な配置が生成され得る。
【0010】
記載されたシステムとは異なり、従来のフロアプランニングソリューションは、多大な人間の関与を必要とする数週間にわたる長いプロセスを使用する。潜在的なノード配置の組合せの膨大なスペースのために、従来の自動化されたアプローチは、過度の計算能力および壁時計時間を消費することなく、人間の専門家の関与を必要とすることなく、またはその両方を必要とすることなく、高品質のフロアプランを確実に生成することができなかった。しかしながら、記載されたノード配置ニューラルネットワークをトレーニングするために強化学習を効果的に利用することによって、記載された技法は、高品質のフロアプランを迅速に生成することができる。
【0011】
さらに、この方法を使用して製造されたコンピュータチップは、従来の方法によって生成されたものと比較して、電力消費を低減することができる。それはまた、所与の表面積に対する計算能力を増加させてもよく、または別の観点から、所与の量の計算能力に対してより少ないリソースを使用して生成されてもよい。
【0012】
本明細書に記載の主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載されている。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0013】
【
図1】例示的なフロアプラン生成システムを示す図である。
【
図2】時間ステップにおけるノード配置ニューラルネットワークの処理を示す図である。
【
図3】特定の時間ステップにおいてノードを配置するための例示的なプロセスのフロー図である。
【
図4】強化学習を介してノード配置ニューラルネットワークをトレーニングするための例示的なプロセスのフロー図である。
【発明を実施するための形態】
【0014】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0015】
図1は、例示的なフロアプラン生成システム100を示す。フロアプラン生成システム100は、以下に説明するシステム、構成要素、および技法が実装される1つまたは複数の場所にある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの一例である。
【0016】
システム100は、製造される、たとえば、トランジスタ、抵抗器、キャパシタなど、複数の集積回路構成要素を含む、コンピュータチップ、すなわち、超大規模集積(VLSI)チップのネットリストデータ102を受信する。複数の集積回路構成要素は、チップの所望の機能に応じて異なっていてもよい。たとえば、チップは、機械学習計算、ビデオ処理、暗号化、または別の計算集約的機能のための専用チップ、すなわち特定用途向け集積回路(ASIC)とすることができる。
【0017】
ネットリストデータ102は、コンピュータチップの集積回路構成要素の接続を記述するデータである。特に、ネットリストデータ102は、複数のノード間のコンピュータチップ上の接続を指定し、その複数のノードの各々がコンピュータチップの複数の集積回路構成要素のうちの1つまたは複数に対応している。すなわち、各ノードは、集積回路構成要素のそれぞれの適切なサブセットに対応し、これらのサブセットは重複しない。言い換えれば、ネットリストデータ102は、複数のノードの各々について、製造されたコンピュータチップ内の1つまたは複数のワイヤによってノードが接続される必要がある他のノード(もしあれば)を識別する。いくつかの場合には、集積回路構成要素は、たとえば、外部システムによって、または既存のクラスタリング技法を使用することによって、すでにクラスタにクラスタ化されており、ネットリストデータ内の各ノードは、クラスタのうちの異なる1つを表す。
【0018】
システム100は、出力として、ネットリストデータ102内のノードの一部または全部をコンピュータチップの表面上のそれぞれの位置に配置する最終的なコンピュータチップフロアプラン152を生成する。すなわち、最終的なコンピュータチップフロアプラン152は、ネットリストデータ102内のノードの一部または全部について、したがって、ノードによって表される集積回路構成要素について、コンピュータチップの表面上のそれぞれの位置を識別する。
【0019】
一例として、ネットリストデータ102は、3つのタイプのノード、すなわち、マクロ、標準セルのクラスタ、およびポートを識別することができる。システム100は、標準セルのマクロおよびクラスタの配置を決定することができ、一方、ポート配置は、固定することができ、またはシステム100によって決定された配置に基づいて別のシステムによって決定することができる。
【0020】
一般に、フロアプラン152は、各ノードを、チップの表面上にオーバーレイされたN×Mグリッド内のグリッド正方形に割り当て、ここで、NおよびMは、システム100への入力として提供される整数である。
【0021】
システム100は、ノード配置ニューラルネットワーク110と、随意に、シミュレーテッドアニーリングエンジン130とを含む。
【0022】
システム100は、ノード配置ニューラルネットワーク110を使用して、初期コンピュータチップフロアプラン122を生成する。最終的なコンピュータチップフロアプラン152と同様に、初期コンピュータチップフロアプラン122も、ネットリストデータ102内の各ノードをコンピュータチップの表面上のそれぞれの位置に配置する。
【0023】
システム100は、複数の時間ステップのシーケンス内の各時間ステップにおいてネットリストデータ102からそれぞれのノードを配置することによって、初期チップフロアプラン122を生成する。すなわち、システム100は、いくつかの時間ステップにわたってノードごとに配置を生成し、各ノードは、時間ステップのうちの異なる1つの位置に配置される。
【0024】
シーケンス内の各特定の時間ステップにおいて、システムは、特定の時間ステップのための入力表現を生成し、ノード配置ニューラルネットワーク110を使用して入力表現を処理する。
【0025】
特定の時間ステップのための入力表現は、一般に、(i)シーケンス内の第1の時間ステップを除いて、シーケンス内の特定の時間ステップに先行する時間ステップにおいてすでに配置されているノードの配置を示す、部分的に配置されたチップを特徴付ける部分的に配置されたチップデータ(すなわち、ネットリストのノードの適切なサブセットが配置されたチップ設計)と、(ii)特定の時間ステップにおいて配置されるべきノードを特徴付ける現在のノードデータとを含む。シーケンスの第1の時間ステップでは、部分的に配置されたチップデータは、ノードが配置されていないことを示し、すなわち空のチップを表す。入力表現は、随意に、たとえば、ネットリストデータ102において指定されるノード間の接続を特徴付ける、ノードのネットリストを特徴付ける(たとえば、現在のノードデータの一部として)ネットリスト特徴を含むこともできる。たとえば、入力表現は、ノードのうちの1つまたは複数について、そのノードがネットリストに従って接続されるノードのうちの1つまたは複数の他のノードを特徴付けることができる。特に、入力表現は、ネットリストに従って、特定の時間に配置されるべきノードが接続されるネットリストのノードの一部または全部、たとえば、特定の時間ステップに先行する時間ステップにおいてすでに配置されているノードのうちの少なくとも1つ(またはいくつか)を指定することができる。
【0026】
ノード配置ニューラルネットワーク110は、パラメータ(本明細書では「ネットワークパラメータ」と呼ばれる)を有し、ネットワークパラメータの現在の値に従って入力表現を処理して、コンピュータチップの表面上の複数の位置にわたるスコア分布、たとえば、確率分布またはロジットの分布を生成するように構成されたニューラルネットワークである。たとえば、分布は、チップの表面上にオーバーレイされたN×Mグリッド内のグリッド正方形上にあり得る。
【0027】
次いで、システム100は、ニューラルネットワークによって生成されたスコア分布を使用して、特定の時間ステップにおいて配置されるべきノードを、複数の位置からの1つの位置に割り当てる。
【0028】
所与の時間ステップにおいてニューラルネットワーク110によって実行され、スコア分布を使用して時間ステップにおいてノードを配置することは、
図2および
図3を参照して以下でより詳細に説明される。
【0029】
シーケンス内の最後の時間ステップの後に、ノードを1つずつフロアプランに追加することによって、フロアプランは、ネットリストデータ102内のすべてのノードのそれぞれの配置を含む。
【0030】
ニューラルネットワーク110によって生成されたスコア分布124が高品質のフロアプランをもたらすために、システム100は、報酬関数を最大化するために、強化学習を介してノード配置ニューラルネットワーク110をトレーニングする。
【0031】
一例として、システム100は、ネットワークパラメータのトレーニングされた値を決定するために強化学習を介してニューラルネットワーク110をトレーニングすることができ、次いで、トレーニングが終了した後、ニューラルネットワーク110を使用して、ネットワークパラメータのトレーニングされた値に従って、フロアプランを生成することによって、初期フロアプラン122を生成する。システムは、様々な終了基準のいずれかに基づいて、トレーニングが終了したことを決定することができる。たとえば、システムは、ある量の時間が経過した後、ある数の候補フロアプランが評価された後、またはニューラルネットワーク110のパラメータ値が収束した後に、トレーニングを終了することができる。
【0032】
別の例として、システム100は、ニューラルネットワーク110のトレーニング中に生成された候補フロアプランに割り当てられた報酬値を追跡し、次いで、トレーニングが終了した後、最も高い報酬値を有する候補フロアプランを初期フロアプラン122として選択することができる。
【0033】
一般に、報酬関数は、ノード配置ニューラルネットワーク110を使用して生成されたフロアプランの品質を測定する、すなわち、最適化されると、生成されたフロアプランを使用して製造されたチップが、たとえば、電力消費、発熱、およびタイミング性能のうちの1つまたは複数に関して良好な性能を示す、生成されたフロアプランの特定の1つまたは複数の特性を測定する。品質は、典型的には、これらの1つまたは複数の特性の増加関数である。
【0034】
トレーニング中、システム100は、ニューラルネットワーク110を使用して候補フロアプランを繰り返し生成し、報酬関数によって測定される特性を評価することによって、生成された候補フロアプランの報酬関数の値を評価し、報酬関数の値に基づいてネットワークパラメータの値を調整する。
【0035】
ニューラルネットワーク110のトレーニングおよびトレーニングに使用できる報酬関数については、
図4を参照して以下でより詳細に説明する。
【0036】
いくつかの実装形態では、ニューラルネットワーク110がトレーニングされると、システム100は、初期コンピュータチップフロアプラン122を最終的なコンピュータチップフロアプラン152として出力する。
【0037】
いくつかの他の実装形態では、システム100は、ノード配置ニューラルネットワーク110を使用して生成された初期コンピュータチップフロアプラン122から開始するコスト関数を使用して(たとえば、報酬関数に対するシミュレートされたアニーリングによって)シミュレートされたアニーリングを実行することによって、最終的なコンピュータチップフロアプラン152を生成する。特定の例として、システム100は、山登りアルゴリズムを適用して初期コンピュータチップフロアプラン122内の配置を反復的に調整して、最終的なコンピュータチップフロアプラン152を生成することによって、シミュレートされたアニーリングを実行することができる。初期コンピュータチップフロアプラン122を調整するために使用することができる山登りアルゴリズムおよび他のシミュレートされたアニーリング技法は、S. Kirkpatrick, C. D. Gelatt, and M. P. Vecchi.Optimization by simulated annealing. SCIENCE, 220(4598):671-680, 1983により詳細に記載されている。
【0038】
随意に、システム100または外部システムは、次いで、報酬関数の最高値を有するもの、またはトレーニングが終了した後に生成されたものなど、候補フロアプランのうちの1つに従ってチップ(集積回路)を製造(生産)してもよい。そのような集積回路は、従来の設計プロセスを使用して設計されたものよりも、たとえば、より低い電力消費、より低い待ち時間、またはより小さい表面積のうちの1つまたは複数を有することができるなど、改善された性能を示すことができ、および/またはより少ないリソースを使用して生産可能であり得る。製造は、任意の既知の技法を使用することができる。
【0039】
図2は、所与の時間ステップにおけるノード配置ニューラルネットワーク110の処理を示す。
【0040】
図1を参照して上述したように、フロアプランの生成中の各時間ステップにおいて、ノード配置ニューラルネットワーク110は、入力表現を受信し、入力表現を処理して、コンピュータチップの表面上の複数の位置にわたるスコア分布、たとえば、確率分布またはロジットの分布を生成するように構成される。
【0041】
一般に、入力表現は、(i)シーケンス内の特定の時間ステップに先行する時間ステップにおいてすでに配置されているノードの配置を示す、部分的に配置されたチップデータと、(ii)特定の時間ステップにおいて配置されるべきノードを特徴付ける現在のノードデータとを含む。
【0042】
図2に示すように、ノード配置ニューラルネットワーク110は、埋め込みサブネットワーク210と、ポリシーサブネットワーク220と、随意に、値サブネットワーク230とを含む。
【0043】
埋め込みサブネットワーク210は、各特定の時間ステップにおいて、入力表現を処理して入力表現の埋め込みを生成するように構成される。埋め込みは、固定の次元空間における数値表現、すなわち、固定数の数値の順序付けられた集合である。たとえば、埋め込みは、浮動小数点値または他のタイプの数値のベクトルまたは行列とすることができる。
【0044】
ポリシーサブネットワーク220は、各特定の時間ステップにおいて、埋め込みを処理してスコア分布を生成するように構成される。たとえば、ポリシーサブネットワーク220は、リカレントニューラルネットワーク、すなわち、位置のスコアを生成する出力層を有する、1つまたは複数のリカレントニューラルネットワーク層、たとえば、長期短期メモリ(LSTM)層、ゲートリカレントユニット(GRU)層、または他のタイプのリカレント層を含むニューラルネットワークとすることができる。たとえば、スコアが確率であるとき、出力層は、ソフトマックス層とすることができる。
【0045】
値サブネットワーク230は、使用されるとき、各特定の時間ステップにおいて、埋め込みを処理して、特定の時間ステップにおけるフロアプランの現在の状態の値を推定する値推定値を生成するように構成される。現在の状態の値は、現在の状態から開始して、すなわち、現在の部分的なフロアプランから開始して生成されるフロアプランに対する報酬関数の出力の推定値である。たとえば、値サブネットワーク230は、リカレントニューラルネットワークであってもよく、またはフィードフォワードニューラルネットワーク、たとえば、1つまたは複数の完全に接続された層を含むものであってもよい。
【0046】
この値推定値は、ニューラルネットワーク110のトレーニング中に、すなわち、利用可能な値推定値に依存する強化学習技法を使用するときに使用することができる。言い換えれば、ノード配置ニューラルネットワークをトレーニングするために使用される強化学習技法が値推定値を必要とするとき、ノード配置ニューラルネットワーク110は、強化学習技法によって必要とされる値推定値を生成する値サブネットワーク230も含む。
【0047】
一般に、埋め込みサブネットワーク210は、1組のニューラルネットワーク層を使用して部分的に配置されたチップデータを処理して、部分的に配置されたチップデータ埋め込みを生成し、別の組のニューラルネットワーク層を使用して現在のノードを特徴付けるデータを処理して、現在のノードデータ埋め込みを生成し、次いで、これら2つの埋め込みを連結して、状態表現の最終的な埋め込みを生成する。
【0048】
配置ニューラルネットワーク110への入力として提供することができる状態表現の一例は、部分的に配置されたチップデータが、N×Mグリッドの平坦化された表現を含むベクトル、すなわち、N×Mグリッド内のグリッド正方形の各々についてのそれぞれのエントリを含むベクトルであるものである。N×Mグリッドの平坦化された表現は、各グリッド正方形について、ノードがすでにグリッド正方形に配置されているかどうか、および随意に、どのノード(もしあれば)がグリッド正方形に配置されているかを識別することができる。
【0049】
この例では、サブネットワーク210は、部分的に配置されたチップ埋め込みを生成するために、フィードフォワードニューラルネットワーク、たとえば、多層パーセプトロン(MLP)を使用して、部分的に配置されたチップデータを処理することができる。
【0050】
状態表現の別の例は、部分的に配置されたチップデータが、シーケンス内の特定の時間ステップに先行する時間ステップにおけるノードが配置された位置を示す、部分的に配置されたチップの表面の画像であるものである。
【0051】
【0052】
特に、
図2では、状態表現は、N×Mグリッドのグリッド正方形を示す部分的に配置されたチップの画像202を含む。画像202は、チップ上にすでに配置されているノードの位置、接続、および随意にサイズを示す。
図2の画像に示すように、ノードがすでに所与のグリッド正方形に配置されているとき、画像は、そのグリッド正方形におけるノードの視覚表現を示す。2つのノード間の接続は、たとえば、画像内のタクシージオメトリを使用して描かれる、画像内の2つのノード間のエッジとして表すことができる。
【0053】
システムはまた、チップ上の位置、すなわちグリッド内の正方形の密度を追跡する。特に、システムは、その位置が占有されている程度を示す各位置の密度値を維持する。ノードが所与の位置に配置されているとき、その位置の密度値は1に等しく(またはその位置が完全に占有されていることを示す異なる最大値に)設定される。所与の位置にノードが配置されていないとき、その位置の密度値は、その位置を通過するエッジの数を示す。
【0054】
いくつかの実装形態では、システムは、入力画像を生成するときに追跡された密度値を使用する。すなわち、入力画像は、チップ表面上の位置の追跡された密度値に基づいて生成される。一例として、任意の所与の位置について、その位置におけるチップの視覚表現に属するピクセルの強度値は、その位置の密度値に基づくことができ、たとえば、より高い強度値をシェービングするより高い密度値を有する位置を有し、たとえば、強度値は、密度値に等しいか、または正比例する。別の例として、入力画像は、入力画像内の位置の強度値を含む追加のチャネルを含むことができる。
【0055】
部分的に配置されたチップデータが画像であるとき、サブネットワーク210は、畳み込みニューラルネットワークを使用して画像を処理して、部分的に配置されたチップ埋め込みを生成する。
【0056】
状態表現に含まれる現在のノードを特徴付けるデータは、任意の適切な方法で現在のノードを表すことができる。
【0057】
一例として、現在のノードデータは、複数のノードのうちのどれが現在の時間ステップにおいて配置されているかを識別するワンホットベクトルとすることができる。この例では、サブネットワーク210は、現在のノードデータを生成するために、MLP、単一の完全に接続された層、または埋め込み層を使用して、現在のノードデータを処理することができる。
【0058】
別の例として、現在のノードデータは、現在のノードの埋め込み206、すなわち、ノード配置ニューラルネットワーク110のトレーニングと一緒に学習される埋め込みを含むことができる。
【0059】
別の例として、特定の時間ステップにおいて配置されるべきノードを特徴付ける現在のノードデータは、ネットリストデータによって指定される特定の時間ステップにおいて配置されるべきノードの接続を特徴付けるデータ、すなわち、ネットリストデータ内の現在のノードに接続されるノードを識別する隣接ベクトルまたは行列を含むことができる。
【0060】
いくつかの実装形態では、入力表現は、ネットリストデータを特徴付けるネットリスト特徴204も含む。特に、ネットリスト特徴は、ネットリスト内の各ノードについて、それぞれの特徴、たとえば、それぞれの特徴ベクトルを含むことができ、ネットリストデータ内のノード間の接続を識別することができる。各ノードの特徴は、ノードの様々な特性のいずれかを識別することができる。
【0061】
一例では、各ノードの特徴は、ノードのサイズを識別する。別の例として、シーケンス内のより早い時間ステップにおいてすでに配置されている各ノードについて、ノードの特徴は、ノードがチップの表面上に配置された位置を識別する。ノードがまだ配置されていない場合、ノードの特徴は、ノードのデフォルト位置を示すことができる。
図2の例では、システムは、ネットリスト特徴204を、特徴ベクトルの特徴行列と、ノード間の接続を指定する隣接行列とに結合する。
【0062】
別の例として、ネットリスト特徴204は、ポート情報、たとえば、ポートノードがシステムによって配置されていない場合であっても、他のノードへのそれらの接続に関する情報、およびそれらの位置を含むこともできる。
【0063】
別の例として、ネットリスト特徴204は、たとえば、ノードの名前が、ネットリストグラフ内のノードの階層、ノードの位置、ノードの幅および高さに関連する情報を有するとき、ネットリストデータ内のノードのフルネームを含むことができる。
【0064】
入力表現がネットリスト特徴を含む実装形態では、サブネットワーク210は、任意の適切なグラフ埋め込み機構を使用してネットリスト特徴および現在のノードデータを処理して、現在のノード埋め込みを生成することができる。
【0065】
たとえば、サブネットワーク210は、グラフ畳み込みニューラルネットワーク(GCN)を使用してネットリスト特徴および現在のノードデータを処理して、現在のノード埋め込みを生成することができる。サブネットワーク210によって使用することができるGCNの一例は、Thomas N. Kipf and Max Welling. Semi-supervised classification with graph convolutional networks. International Conference on Learning Representations, 2017に記載されている。
【0066】
別の例として、サブネットワーク210は、シャムニューラルネットワークを使用してネットリスト特徴および現在のノードデータを処理して、現在のノード埋め込みを生成することができる。サブネットワーク210によって使用することができるシャムニューラルネットワークの一例は、Siamese neural networks for one-shot image recognition. G Koch, R Zemel, and R Salakhutdinov. In ICML Deep Learning workshop, 2015に記載されている。
【0067】
別の例として、サブネットワーク210は、Graphsage技法を使用してネットリスト特徴および現在のノードデータを処理して、現在のノード埋め込みを生成することができる。サブネットワーク210によって使用することができるような技法の一例は、Inductive Representation Learning on Large Graphs. W.L. Hamilton, R. Ying, and J. Leskovec arXiv:1706.02216 [cs.SI], 2017に記載されている。
【0068】
上述したように、システムは、チップの表面上の各位置で、すなわち、N×Mグリッドのグリッド正方形の各々について、密度を追跡する。ポリシーニューラルネットワークが時間ステップにおいてスコア分布を生成すると、システムは、密度を使用して修正されたスコア分布を生成し、次いで、修正されたスコア分布を使用して時間ステップに対応するノードを割り当てる。
【0069】
たとえば、システムは、修正されたスコア分布において最も高いスコアを有する位置にノードを割り当てることができ、または修正されたスコア分布から位置をサンプリングすることができ、すなわち、各位置が、尤度に等しい選択される尤度を有するようにし、次いで、ノードをサンプリングされた位置に割り当てることができる。
【0070】
スコア分布を修正するために、システムは、任意の位置、すなわち、しきい値を超える密度を有する任意のグリッド正方形のスコアをゼロに設定する。
【0071】
これは、スコア分布に適用することができるグリッド密度マスク250として、すなわち、しきい値を超える密度を有する任意の位置の値がゼロであり、しきい値を超えない密度を有する任意の位置の値が1であるマスクとして、
図2に表される。特定の例として、しきい値は1に等しくすることができ、システムは、ノードがすでに配置されている、すなわち、1の密度値を有する任意の位置のスコアをゼロに設定することができる。別の例として、しきい値は1未満であってもよく、これは、システムが、ノードを有さないが、それを通って延びるワイヤが多すぎる(すなわち、位置に関連付けられたワイヤの数がしきい値を超える)任意の位置についてもスコアをゼロに設定することを示す。
【0072】
図3は、所与の時間ステップにおいてノードを配置するための例示的なプロセス300のフロー図である。便宜上、プロセス300は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、フロアプラン生成システム、たとえば、
図1のフロアプラン生成システム100は、適切にプログラムされ、プロセス300を実行することができる。
【0073】
システムは、コンピュータチップフロアプランを生成するために、時間ステップのシーケンス内の各時間ステップについてプロセス300を実行することができる。
【0074】
システムは、時間ステップの状態表現を生成する(ステップ302)。上述のように、状態表現は、一般に、部分的に配置されたチップデータおよび現在のノードデータを含む。
【0075】
システムは、ノード配置ニューラルネットワークを使用して時間ステップの状態表現を処理して、位置にわたるスコア分布を生成する(ステップ304)。
【0076】
システムは、スコア分布を使用してノードを配置する(ステップ306)。上述のように、システムは、チップの表面上の位置の密度に基づいてスコア分布を修正し、次いで、修正されたスコア分布に基づいてノードの位置を選択することができる。
【0077】
図4は、ノード配置ニューラルネットワークをトレーニングするための例示的なプロセス400のフロー図である。便宜上、プロセス400は、1つまたは複数の場所に位置する1つまたは複数のコンピュータのシステムによって実行されるものとして説明される。たとえば、フロアプラン生成システム、たとえば、
図1のフロアプラン生成システム100は、適切にプログラムされ、プロセス400を実行することができる。
【0078】
システムは、ノード配置ニューラルネットワークをトレーニングするために、すなわち、ネットワークパラメータのトレーニングされた値を決定するために、プロセス400を繰り返し実行することができる。
【0079】
いくつかの実装形態では、システムは、ノード配置ニューラルネットワークのトレーニングを、多くの異なる作業者にわたって、すなわち、多くの異なる同種または異種のコンピューティングデバイス、すなわち、CPU、GPU、またはASICを使用してトレーニング計算を実行するデバイスにわたって分散する。これらの実装形態のいくつかでは、ステップ400の一部または全部は、ノード配置ニューラルネットワークのトレーニングを高速化するために、互いに非同期で動作する多くの異なる作業者によって並列に実行することができる。他の実装形態では、異なる作業者は、ニューラルネットワークのトレーニングを高速化するために、プロセス400の反復を並列に実行するように同期して動作する。
【0080】
システムは、ノード配置ニューラルネットワークを使用し、
図2を参照して上述したように、ネットワークパラメータの現在の値に従って、候補フロアプランを生成する(ステップ402)。
【0081】
システムは、報酬関数を評価して、生成された候補フロアプランに対する報酬を決定する(ステップ404)。
【0082】
上述のように、報酬関数は、一般に、ノード配置ニューラルネットワークを使用して生成されたフロアプランの品質を測定する。
【0083】
より具体的には、報酬関数は、すなわち、最適化されると、生成されたフロアプランを使用して製造されたチップが、たとえば、1つまたは複数の電力消費、発熱、およびタイミング性能に関して良好な性能を示す、生成されたフロアプランの特定の特性を測定する。
【0084】
特に、報酬関数は、1つまたは複数の特性のそれぞれの項を含む。たとえば、複数の項があるとき、報酬関数は、複数の項の合計または重み付き和とすることができる。
【0085】
一例として、報酬関数は、ワイヤ長測度、すなわち、チップの表面上のノード間のワイヤ長がより短いとき、より高いワイヤ長を測定する項を含むことができる。たとえば、ワイヤ長は、チップの表面上のすべての隣接ノード間のマンハッタン距離または他の距離測度とすることができる。
【0086】
別の例として、報酬関数は、輻輳測度、すなわち、コンピュータチップの表面上の輻輳がより低いとき、より高い輻輳を測定する項を含むことができる。輻輳は、チップ上の所与の領域(必ずしも連続領域ではない)内の利用可能な配線リソースと、その領域を通る実際のワイヤとの間の差の測度である。たとえば、輻輳は、利用可能な配線リソース(たとえば、その領域を通り得る最大数のワイヤ)に対する、生成されたフロアプラン内の領域を通るワイヤの比率として定義することができる。特定の例として、輻輳測度は、表面の水平および垂直のエッジにわたるワイヤの密度を追跡することができる。特に、システムは、ネットリストのためのルーティングモデル(たとえば、ネットバウンディングボックス、上位L、下位L、A*、最小スパニングツリー、または実際のルーティングされたネットなど)を利用することができる。このルーティングモデルに基づいて、輻輳測度は、表面上の各位置について、フロアプラン内の利用可能な配線リソースと、その位置のルーティングモデルからの配線推定値との比率を決定することによって計算することができる。
【0087】
別の例として、報酬関数は、タイミング項、すなわち、チップの性能がより良好である(たとえば、報酬関数が、ある計算タスクを実行するためにより少ない時間を要するそれぞれのチップのフロアプランに対して対応してより高い値をとる)とき、より高いデジタルロジックのタイミングを測定する項を含むことができる。フロアプランのタイミングまたは性能は、静的タイミング分析(STA)を使用して測定することができる。この測定は、論理パス(内部セル遅延およびワイヤ遅延を含む)にわたるステージ遅延を計算すること、およびクロックが安全な動作のために実行することができる最大速度を決定するクリティカルパスを見つけることを含むことができる。タイミングの現実的な観点のために、ノード配置が進行するにつれてより長くまたはより短くなる経路に適応するために、論理最適化が必要であり得る。
【0088】
別の例として、報酬関数は、チップによって消費される電力またはエネルギーを測定する1つまたは複数の項、すなわち、チップによって消費される電力がより低いとき、より高い1つまたは複数の項を含むことができる。
【0089】
別の例として、報酬関数は、フロアプランの面積を測定する、すなわち、フロアプランによって占められる面積がより低いとき、より高い1つまたは複数の項を含むことができる。
【0090】
システムは、強化学習技法を使用して、ネットワークパラメータの現在の値に対する更新を決定する(ステップ406)。
【0091】
特に、システムは、強化学習技法に対応する強化損失関数のネットワークパラメータに対する勾配を決定し、次いで、適切な更新ルール、たとえば、確率的勾配降下更新ルール、Adam更新ルール、またはrmsProp更新ロールに従って、決定された勾配から更新を計算する。
【0092】
トレーニングを複数の作業者にどのように分散させることができるかの1つの特定の例として、複数の作業者の各々は、プロセスのステップ402~406を実行し、次いで、勾配を並列に計算することができる。次いで、複数の作業者は、計算された勾配をパラメータサーバに送信することができ、パラメータサーバは、更新を計算し、次いで、ネットワークパラメータを更新することができる。
【0093】
システムは、ノード配置ニューラルネットワークをトレーニングするために、様々な強化学習技法のいずれかを使用することができる。たとえば、システムは、トレーニングのために、たとえば、REINFORCEまたはProximal Policy Optimization (PPO)などのポリシー勾配技法を使用することができる。これらの場合、値サブネットワークによって生成された値予測を使用して、強化学習損失関数の勾配を計算するときに報酬関数値を修正するベースライン値を計算することができる。
【0094】
本明細書は、システムおよびコンピュータプログラム構成要素に関して「構成された」という用語を使用する。1つまたは複数のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるとは、システムが、動作中、システムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つまたは複数のコンピュータプログラムが特定の動作またはアクションを実行するように構成されるとは、1つまたは複数のプログラムが、データ処理装置によって実行されると、装置に動作またはアクションを実行させる命令を含むことを意味する。
【0095】
本明細書に記載された主題および機能的動作の実施形態は、デジタル電子回路、有形に実施されたコンピュータソフトウェアまたはファームウェア、本明細書に開示される構造およびそれらの構造的均等物を含むコンピュータハードウェア、またはそれらの1つもしくは複数の組合せに実装することができる。本明細書に記載される主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置によって実行される、またはデータ処理装置の動作を制御するための有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムまたはシリアルアクセスメモリデバイス、またはそれらの1つもしくは複数の組合せとすることができる。代替的に、または追加として、プログラム命令は、人工的に生成された伝搬信号、たとえば、データ処理装置によって実行するための適切な受信機装置への送信のために情報を符号化するために生成された機械生成電気、光学、または電磁信号上で符号化することができる。
【0096】
「データ処理装置」という用語は、データ処理ハードウェアを指し、たとえば、プログラム可能プロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイスおよび機械を包含する。装置は、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)などの専用論理回路でもよく、またはそれをさらに含むこともできる。装置は、随意に、ハードウェアに加えて、コンピュータプログラムの実行環境を生成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらの1つまたは複数の組合せを構成するコードを含むことができる。
【0097】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれるまたは記述されることもあるコンピュータプログラムは、コンパイルもしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む、任意の形式のプログラミング言語で記述することができ、それは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境での使用に適した他のユニットとしてなど、あらゆる形式で展開できる。プログラムは、必ずしも必要はないが、ファイルシステム内のファイルに対応し得る。プログラムは、当該プログラム専用の単一のファイル、またはたとえば、1つまたは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイルなど、複数のコーディネートされたファイルに、たとえば、マークアップ言語ドキュメントに記憶された1つまたは複数のスクリプトなど、他のプログラムまたはデータを保持するファイルの一部に記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、もしくは複数のサイトに分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【0098】
本明細書では、「データベース」という用語は、任意のデータの集まりを指すために広く使用されており、データは、任意の特定の方法で構造化する必要はなく、またはまったく構造化する必要はなく、1つまたは複数の場所における記憶デバイスに記憶することができる。したがって、たとえば、インデックスデータベースは、複数のデータの集まりを含むことができ、それらの各々は、異なって編成されアクセスされてもよい。
【0099】
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実行するようにプログラムされているソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く使用されている。一般に、エンジンは、1つまたは複数の場所にある1つまたは複数のコンピュータにインストールされた1つまたは複数のソフトウェアモジュールまたは構成要素として実装される。いくつかの場合には、1つまたは複数のコンピュータが特定のエンジンに専用であり、他の場合には、複数のエンジンを、同じ1つまたは複数のコンピュータにインストールし、そこにおいて実行することができる。
【0100】
本明細書で記述されたプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって機能を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラム可能コンピュータによって実行することができる。プロセスおよび論理フローは、たとえばFPGAまたはASICなどの専用論理回路によって、または専用論理回路と1つまたは複数のプログラムされたコンピュータとの組合せによっても実行することができる。
【0101】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、もしくはその両方、または他の種類の中央処理ユニットに基づくことができる。一般に、中央処理ユニットは、読取り専用メモリまたはランダムアクセスメモリまたはその両方から命令およびデータを受信する。コンピュータの要素は、命令を実行または実施するための中央処理ユニット、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。中央処理ユニットおよびメモリは、専用論理回路によって補うまたは組み込むことができる。一般に、コンピュータは、たとえば磁気、光磁気ディスク、または光ディスクなど、データを記憶するための1つまたは複数の大容量記憶デバイスも含み、あるいは、1つまたは複数の大容量記憶デバイスからデータを受信する、それにデータを転送する、またはその両方のために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば、ほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブル記憶デバイス中に組み込むことができる。
【0102】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体は、一例として、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイスなどの半導体メモリデバイス、たとえば内部ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、ならびにCD-ROMおよびDVD-ROMディスクを含むすべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。
【0103】
ユーザとの対話を提供するために、本明細書に記載される主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびにキーボードおよび、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえば、ユーザに提供されるフィードバックは、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形態で受信することができる。さらに、コンピュータは、たとえば、ウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザにウェブページを送信することによってなど、ユーザによって使用されるデバイスとの間でドキュメントを送受信することによって、ユーザと対話することができる。また、コンピュータは、テキストメッセージまたは他の形態のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、代わりに、ユーザから応答メッセージを受信することによって、ユーザと対話することができる。
【0104】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば、機械学習のトレーニングまたは製作、すなわち推論、作業負荷の共通部分および計算集約的部分を処理するための専用ハードウェアアクセラレータユニットを含むことができる。
【0105】
機械学習モデルは、機械学習フレームワーク、たとえば、TensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装および展開することができる。
【0106】
本明細書に記載される主題の実施形態は、たとえばデータサーバとしてのバックエンド構成要素を含む、またはアプリケーションサーバなどのミドルウェア構成要素を含む、またはたとえば、ユーザが本明細書に記載された主題の実装と対話することができる、グラフィカルユーザインタフェース、ウェブブラウザ、またはアプリを有するクライアントコンピュータなどのフロントエンド構成要素を含む、または1つもしくは複数のそのようなバックエンド、ミドルウェア、またはフロントエンド構成要素の任意の組合せを含むコンピューティングシステムにおいて実装することができる。システムの構成要素は、たとえば、通信ネットワークなど、任意の形式または媒体のデジタルデータ通信によって相互接続することができる。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットがある。
【0107】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般に、互いに遠隔であり、典型的には、通信ネットワークを介して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、たとえば、クライアントとして動作するデバイスと対話しているユーザにデータを表示し、ユーザからユーザ入力を受信するために、データ、たとえば、HTMLページをユーザデバイスに送信する。たとえば、ユーザ対話の結果など、ユーザデバイスにおいて生成されたデータは、デバイスからサーバにおいて受信することができる。
【0108】
本明細書は、多くの具体的な実施の詳細を含むが、これらは、いかなる発明の範囲または特許請求される可能性のある範囲に対する限定ではなく、むしろ特定の発明の特定の実施形態に固有であり得る特徴の説明として解釈されるものとする。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で記載されている様々な特徴は、複数の実施形態で別々にまたは任意の適切な部分組合せで実装することもできる。さらに、特徴は、いくつかの組合せで作用するものとして上述されており、当初はそのように請求されているものであるが、いくつかの場合、請求された組合せからの1つまたは複数の特徴を、組合せから削除することができ、請求された組合せは、部分組合せ、または部分組合せの変形を対象とし得る。
【0109】
同様に、動作が図面に示され、特許請求の範囲に特定の順序で記載されているが、これは、そのような動作が、示された特定の順序で、または順番に実行されること、あるいは望ましい結果を達成するために、図示されたすべての動作が実行されることを必要とするものとして理解されないものとする。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上述した実施形態における様々なシステムモジュールおよび構成要素の分離は、すべての実施形態においてそのような分離を必要とするものと理解されないものとし、記述されたプログラム構成要素およびシステムを、一般に、単一のソフトウェア製品に一緒に組み入れることができ、または複数のソフトウェア製品にパッケージ化することができることを理解されたい。
【0110】
主題の特定の実施形態が記載されている。他の実施形態は、以下の特許請求の範囲内にある。たとえば、特許請求の範囲に列挙されたアクションは、異なる順序で実行され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかの場合には、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0111】
100 フロアプラン生成システム
102 ネットリストデータ
110 ノード配置ニューラルネットワーク
122 初期コンピュータチップフロアプラン
124 スコア分布
130 シミュレーテッドアニーリングエンジン
152 最終的なコンピュータチップフロアプラン
202 画像
204 ネットリスト特徴
206 ノードの埋め込み
210 埋め込みサブネットワーク
220 ポリシーサブネットワーク
230 値サブネットワーク
250 グリッド密度マスク