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

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

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

特許7520995ニューラルネットワークを使った集積回路配置の生成
<>
  • 特許-ニューラルネットワークを使った集積回路配置の生成 図1
  • 特許-ニューラルネットワークを使った集積回路配置の生成 図2
  • 特許-ニューラルネットワークを使った集積回路配置の生成 図3
  • 特許-ニューラルネットワークを使った集積回路配置の生成 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-12
(45)【発行日】2024-07-23
(54)【発明の名称】ニューラルネットワークを使った集積回路配置の生成
(51)【国際特許分類】
   G06N 3/092 20230101AFI20240716BHJP
   G06N 3/04 20230101ALI20240716BHJP
【FI】
G06N3/092
G06N3/04 100
【請求項の数】 42
(21)【出願番号】P 2022556215
(86)(22)【出願日】2021-04-22
(65)【公表番号】
(43)【公表日】2023-05-31
(86)【国際出願番号】 US2021028713
(87)【国際公開番号】W WO2021216923
(87)【国際公開日】2021-10-28
【審査請求日】2022-11-17
(31)【優先権主張番号】63/014,021
(32)【優先日】2020-04-22
(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)【発明者】
【氏名】チアン-ミン・リチャード・ホ
(72)【発明者】
【氏名】クォク・ヴィー・レ
(72)【発明者】
【氏名】ジェームズ・ラウドン
(72)【発明者】
【氏名】ジェフリー・アドゲート・ディーン
(72)【発明者】
【氏名】カヴヤ・スリニヴァサ・セティ
(72)【発明者】
【氏名】オムカール・パータク
【審査官】北川 純次
(56)【参考文献】
【文献】特開平03-184173(JP,A)
【文献】米国特許出願公開第2018/0225817(US,A1)
【文献】GOLDIE, Anna et al.,Placement Optimization with Deep Reinforcement Learning,arXiv.org [online],2020年03月18日,[検索日 2023.12.06], インターネット:<URL: https://arxiv.org/ftp/arxiv/papers/2003/2003.08445.pdf>
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00-99/00
G06F 30/00
(57)【特許請求の範囲】
【請求項1】
1つまたは複数のコンピュータによって実施される方法であって、
集積回路チップ用のネットリストデータを取得するステップであって、前記ネットリストデータは、前記集積回路チップの複数の集積回路コンポーネントのうちの1つまたは複数に各々が対応する複数のノードの間の前記集積回路チップ上での接続性を指定し、前記複数のノードは、マクロコンポーネントを表すマクロノードと、標準セルコンポーネントを表す標準セルノードとを備える、ステップと、
前記集積回路チップの表面上のそれぞれの位置に前記ネットリストデータの中の各ノードを配置する集積回路チップ配置を生成するステップであって、
前記チップの表面上の前記マクロノードのマクロノード配置を生成するために、マクロノード順序に従って複数の時間ステップの各々においてそれぞれのマクロノードを配置するステップであって、前記複数の時間ステップの中の各特定の時間ステップに対して、
前記ネットリストデータから、少なくとも(i)前記マクロノード順序における前記特定の時間ステップにおいて配置されるべき特定のマクロノードの前である任意のマクロノードの前記チップの表面上でのそれぞれの位置と、(ii)前記特定の時間ステップにおいて配置されるべき前記特定のマクロノードとを特徴付ける入力表現を生成するステップと、
複数のネットワークパラメータを有するノード配置ニューラルネットワークを使用して前記入力表現を処理するステップであって、前記ノード配置ニューラルネットワークは、前記集積回路チップの表面上の複数の位置にわたるスコア分布を生成するために前記ネットワークパラメータの現在の値に従って前記入力表現を処理するように構成される、ステップと、
前記スコア分布を使用して前記複数の位置からの位置に前記特定の時間ステップにおいて配置されるべき前記マクロノードを割り当てるステップと
を含む、ステップと、
初期集積回路チップ配置を生成するステップであって、前記マクロノード配置に従って配置された前記マクロノードによって表される前記マクロコンポーネントを含む、部分的に配置された集積回路チップの表面上のそれぞれの位置に前記標準セルの各々を配置するステップを含む、ステップと
を含む、方法。
【請求項2】
前記標準セルの各々を配置するステップは、
標準セルの複数のクラスタを生成するように、前記標準セルをクラスタ化するステップと、
グラフ配置技法を使用して、前記部分的に配置された集積回路チップの表面上のそれぞれの位置に標準セルの各クラスタを配置するステップと
を含む、請求項1に記載の方法。
【請求項3】
前記標準セルの各々を配置するステップは、
グラフ配置技法を使用して、前記部分的に配置された集積回路チップの表面上のそれぞれの位置に前記標準セルの各々を配置するステップを含む、請求項1に記載の方法。
【請求項4】
前記グラフ配置技法は力ベースの技法である、請求項2または3のいずれか一項に記載の方法。
【請求項5】
前記マクロノード順序を生成するステップをさらに含む、請求項1から4のいずれか一項に記載の方法。
【請求項6】
前記マクロノード順序を生成するステップは、前記マクロノード順序を定義する出力を生成するために、前記ネットリストデータから導出された入力を処理するように構成されるマクロノード順序予測機械学習モデルを通して前記ネットリストデータから導出された前記入力を処理するステップを含む、請求項5に記載の方法。
【請求項7】
前記マクロノード順序を生成するステップは、
サイズに従って前記マクロコンポーネントを順序付けるステップを含む、請求項5に記載の方法。
【請求項8】
前記複数の位置は、前記集積回路チップの表面に重ねられたN×Mグリッドからのグリッドスクエアを含む、請求項1から7のいずれか一項に記載の方法。
【請求項9】
前記集積回路チップの表面を前記N×Mグリッドにどのように分割するかを定義する出力を生成するために、前記入力を処理するように構成されるグリッド生成機械学習モデルを使用して前記ネットリストデータから導出された入力、前記集積回路チップの表面を特徴付けるデータ、または両方を処理するステップをさらに含む、請求項8に記載の方法。
【請求項10】
前記ノード配置ニューラルネットワークは、
前記入力表現を受信し、かつ符号化表現を生成するために前記入力表現を処理するように構成されるエンコーダニューラルネットワークと、
前記スコア分布を生成するために前記符号化表現を処理するように構成されるポリシーニューラルネットワークと
を含む、請求項1から9のいずれか一項に記載の方法。
【請求項11】
前記入力表現は、前記ネットリスト中の各ノードのそれぞれのベクトル化表現を含み、
前記エンコーダニューラルネットワークは、(i)前記ネットリスト中の前記ノードの前記ベクトル化表現のネットリスト埋込みと、(ii)前記特定の時間ステップにおいて配置されるべき前記マクロノードを表す現在のノード埋込みとを生成するために前記ネットリスト中の前記ノードの前記ベクトル化表現を処理するグラフエンコーダニューラルネットワークを含む、
請求項10に記載の方法。
【請求項12】
前記ネットリストデータは、前記ネットリストデータの中で2つのそれぞれのノードを各々が接続するエッジとしてノードの間の前記接続性を表し、前記グラフエンコーダニューラルネットワークは、
前記ネットリストデータの中の各エッジについて、それぞれのエッジ埋込みを初期化することと、
前記ネットリストデータの中の各ノードについて、前記ノード用の前記それぞれのベクトル化表現に等しくなるように前記ネットリストデータの中の前記ノード用のそれぞれのノード埋込みを初期化することと、
前記ネットリストデータの中の各エッジについて、前記エッジによって接続された前記2つのノード用の前記それぞれのノード埋込みを使用して、前記エッジ用の前記エッジ埋込みを更新すると、
前記ネットリストデータの中の各ノードについて、前記ノードに接続される前記エッジ用の前記それぞれのエッジ埋込みを使用して、前記ノード用の前記ノード埋込みを更新する動作と
を繰り返し実施することと
を行うように構成される、請求項11に記載の方法。
【請求項13】
前記エッジ用の前記エッジ埋込みを更新することは、
前記エッジによって接続された前記2つのノード用の少なくとも前記ノード埋込みから集約された表現を生成し、かつ前記更新されたエッジ埋込みを生成するように第1の完全接続ニューラルネットワークを使用して前記集約された表現を処理することを含む、請求項12に記載の方法。
【請求項14】
前記集約された表現を生成することは、
前記ノードの各々についてそれぞれの中間埋込みを生成するために、第2の完全接続ニューラルネットワークを使用して前記ノード埋込みの各々を処理することと、
少なくとも前記それぞれの中間埋込みを組み合わせることによって前記集約された表現を生成することと
を含む、請求項13に記載の方法。
【請求項15】
各エッジは、前記ネットリストデータの中で重みに関連付けられ、
前記集約された表現を生成することは、前記エッジによって接続された前記2つのノードについての前記ノード埋込み、および前記ネットリストデータの中で前記エッジに関連付けられた前記重みから前記集約された表現を生成することを含む、
請求項13または14のいずれか一項に記載の方法。
【請求項16】
前記ノードに接続される前記エッジ用の前記それぞれのエッジ埋込みを使用して前記ノード用の前記ノード埋込みを更新することは、
前記ノードに接続される前記エッジ用の前記それぞれのエッジ埋込みを平均することを含む、請求項12から15のいずれか一項に記載の方法。
【請求項17】
前記ネットリスト埋込みは、前記動作を繰り返し実施した後の前記エッジ埋込みの組合せである、請求項12から16のいずれか一項に記載の方法。
【請求項18】
前記現在のノード埋込みは、前記動作を繰り返し実施した後、前記特定の時間ステップにおいて配置されるべき前記マクロノード用の前記ノード埋込みである、請求項12から17のいずれか一項に記載の方法。
【請求項19】
すでに配置されている各ノードについて、前記ベクトル化表現は、前記チップの表面上での前記ノードの前記位置を識別するデータを含み、
まだ配置されていない各ノードについて、前記ベクトル化表現は、前記ノードがまだ配置されていないことを示すデータを含む、
請求項11から18のいずれか一項に記載の方法。
【請求項20】
前記エンコーダニューラルネットワークは、前記ネットリスト中の前記ノードの前記ベクトル化表現の少なくとも前記ネットリスト埋込み、および前記特定の時間ステップにおいて配置されるべき前記マクロノードを表す前記現在のノード埋込みから、前記符号化表現を生成するように構成される、請求項11から19のいずれか一項に記載の方法。
【請求項21】
前記エンコーダニューラルネットワークは、教師あり学習を通してトレーニングされている、請求項10から20のいずれか一項に記載の方法。
【請求項22】
前記ポリシーニューラルネットワークは、強化学習を通してトレーニングされている、請求項10から21のいずれか一項に記載の方法。
【請求項23】
前記スコア分布を使用して、前記複数の位置からの位置に前記ノードを割り当てることは、
前記マクロノード順序において前記特定のマクロノードの前である任意のマクロノードの前記チップの表面上での前記それぞれの位置に基づいて判断された密度が閾値を超える各位置についてのスコアをゼロに設定する修正されたスコア分布を生成することと、
前記修正されたスコア分布を使用して前記ノードを割り当てることと
を含む、請求項1から22のいずれか一項に記載の方法。
【請求項24】
前記修正されたスコア分布を使用して前記ノードを割り当てることは、
前記修正されたスコア分布の中で最高スコアを有する位置に前記ノードを割り当てることを含む、請求項23に記載の方法。
【請求項25】
前記修正されたスコア分布を使用して前記ノードを割り当てることは、
前記修正されたスコア分布から位置をサンプリングすることと、
前記サンプリングされた位置に前記ノードを割り当てることと
を含む、請求項23に記載の方法。
【請求項26】
配置生成システムによって実施される、ノード配置ニューラルネットワークをトレーニングする方法であって、前記ノード配置ニューラルネットワークが、
複数の時間ステップの各々について、時間ステップの時点での集積回路チップの表面上でのノードのネットリストの配置の現在の状態を表すデータを含む入力表現を受信し、エンコーダ出力を生成するために前記入力表現を処理するように構成されるエンコーダニューラルネットワークと、
前記複数の時間ステップの各々において、前記エンコーダニューラルネットワークによって生成された前記エンコーダ出力から生成された符号化表現を受信し、前記集積回路チップの前記表面上の複数の位置にわたるスコア分布を生成するために前記符号化表現を処理するように構成されたポリシーニューラルネットワークと
報酬予測ニューラルネットワークと
を備え、前記方法は、
教師ありトレーニングデータを取得するステップであって、前記教師ありトレーニングデータは、
複数のトレーニング入力表現であって、各トレーニング入力表現は、ノードのそれぞれのネットリストのそれぞれの配置を表す、複数のトレーニング入力表現と、
各トレーニング入力表現についての、前記ノードのそれぞれのネットリストの前記配置の品質を測定する報酬関数のそれぞれの目標値と
を含む、ステップと、
教師あり学習を通して前記教師ありトレーニングデータで、前記報酬予測ニューラルネットワークと共同で前記エンコーダニューラルネットワークをトレーニングするステップであって、前記報酬予測ニューラルネットワークは、各トレーニングエンコーダ入力について、前記トレーニング入力表現から前記エンコーダニューラルネットワークによって生成された前記エンコーダ出力を受信することと、前記トレーニング入力表現によって表される前記配置についての前記報酬関数の予測値を生成するために、前記符号化表現を処理することとを行うように構成される、ステップと
を含む、方法。
【請求項27】
前記報酬関数は、前記チップの前記表面上のノードの間のワイヤ長がより短いとき、より高いワイヤ長測度を含む、請求項26に記載の方法。
【請求項28】
前記報酬関数は、前記集積回路チップの前記表面上での混雑がより低いとき、より高い混雑測度を含む、請求項26または27に記載の方法。
【請求項29】
前記報酬関数を最大にする配置を生じるスコア分布を生成するように、強化学習を通してポリシーニューラルネットワークをトレーニングするステップをさらに含む、請求項26から28のいずれか一項に記載の方法。
【請求項30】
前記ノード配置NNは、前記複数の時間ステップの各々において、前記エンコーダニューラルネットワークによって生成された前記符号化表現を受信し、値推定を生成するために前記符号化表現を処理するように構成される値ニューラルネットワークをさらに備え、ポリシーニューラルネットワークをトレーニングするステップは、値推定を使う強化技法を使用して前記値ニューラルネットワークと共同でポリシーニューラルネットワークをトレーニングするステップを含む、請求項29に記載の方法。
【請求項31】
強化学習を通して前記ポリシーニューラルネットワークをトレーニングするステップは、前記教師ありトレーニングデータでの前記トレーニングを通して判断された値に固定された、前記エンコーダニューラルネットワークのパラメータの値を保持するステップを含む、請求項29または30に記載の方法。
【請求項32】
前記ノード配置ニューラルネットワークをトレーニングした後、前記トレーニングされたノード配置ニューラルネットワークを使用して、新たなネットリストデータ用の集積回路配置を生成するステップであって、前記トレーニングされたノード配置ニューラルネットワークによって生成されたスコア分布を使用して、複数の時間ステップの各々において前記新たなネットリストデータからのそれぞれのノードを配置することを含むステップをさらに含む、請求項26から31のいずれか一項に記載の方法。
【請求項33】
前記ノード配置ニューラルネットワークをトレーニングした後、
新たなネットリストデータを受信するステップと、
強化学習を通して前記新たなネットリストデータで前記トレーニングされたノード配置ニューラルネットワークを微調整するステップと、
前記微調整されたノード配置ニューラルネットワークを使用して、前記新たなネットリストデータ用の集積回路配置を生成するステップであって、前記微調整されたノード配置ニューラルネットワークによって生成されたスコア分布を使用して、複数の時間ステップの各々において前記新たなネットリストデータからのそれぞれのノードを配置することを含むステップと
をさらに含む、請求項26から31のいずれか一項に記載の方法。
【請求項34】
前記エンコーダニューラルネットワークは、請求項11から25に記載の前記グラフエンコーダニューラルネットワークを備え、前記エンコーダ出力は、前記グラフエンコーダニューラルネットワークによって生成された前記ネットリストの埋込みを含む、請求項26から33のいずれか一項に記載の方法。
【請求項35】
前記エンコーダニューラルネットワークは、前記ネットリストに関連付けられたメタデータを埋め込むメタデータ埋込みニューラルネットワークを備え、前記エンコーダ出力は、前記埋め込まれたメタデータを含む、請求項34に記載の方法。
【請求項36】
前記符号化表現は、少なくとも、前記ネットリストの前記埋込みと、前記グラフエンコーダニューラルネットワークによって生成された前記現在のノードの埋込みから生成される、時間ステップにおいて配置されるべきノードの前記ネットリストからの現在のノードの埋込みとを含む、請求項34または35に記載の方法。
【請求項37】
教師あり学習を通して前記教師ありトレーニングデータで報酬予測ニューラルネットワークと共同で前記エンコーダニューラルネットワークをトレーニングするステップは、所与のトレーニング表現について、前記トレーニング入力表現に対する前記報酬関数の前記目標値と前記報酬関数の前記予測値との間の誤差を測定する目的関数を最適化するように、前記エンコーダニューラルネットワークと前記報酬予測ニューラルネットワークとをトレーニングするステップを含む、請求項26から36のいずれか一項に記載の方法。
【請求項38】
前記複数のトレーニング入力表現によって表される前記配置は、異なるノード配置ニューラルネットワークの出力に基づいて、前記異なるノード配置ニューラルネットワークの前記トレーニング中の異なる時点において生成される、請求項26から37のいずれか一項に記載の方法。
【請求項39】
前記ノード配置ニューラルネットワークは、前記マクロノードにわたる確率分布を生成するようにさらに構成され、前記マクロノード順序を生成するステップは、前記複数の時間ステップの中の各特定の時間ステップについて、前記マクロノードにわたる前記確率分布に基づいて、前記特定の時間ステップの後の次の時間ステップにおいて配置されるべき前記マクロノードを選択するステップを含む、請求項5従属する場合請求項26から38のいずれか一項に記載の方法。
【請求項40】
命令を記憶する1つまたは複数の非一時的コンピュータ可読記憶媒体であって、前記命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から39のいずれか一項に記載の方法を実施させる、非一時的コンピュータ可読記憶媒体。
【請求項41】
1つまたは複数のコンピュータと、命令を記憶する1つまたは複数の記憶デバイスとを備えるシステムであって、前記命令は、1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から39のいずれか一項に記載の方法を実施させる、システム。
【請求項42】
集積回路チップを製造する方法であって、請求項1から253233または39のいずれか一項に記載の方法に従って集積回路チップ配置を生成するステップと、前記配置に従って前記集積回路チップを製造するステップとを含む、方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2020年4月22日に出願された米国特許出願第63/014,021号の優先権を主張し、その内容全体が参照により組み込まれる。
【0002】
本明細書は、電子設計自動化のために、より詳細には、コンピュータチップ配置を生成するためにニューラルネットワークを使うことに関する。
【背景技術】
【0003】
コンピュータチップ配置は、コンピュータチップの表面、すなわちチップ面積上での、コンピュータチップの回路の一部または全部の、配置の概略表現である。
【0004】
ニューラルネットワークは、受信された入力に対する出力を予測するために、非線形ユニットの1つまたは複数の層を利用する機械学習モデルである。いくつかのニューラルネットワークは、出力層に加え、1つまたは複数の隠れ層を含む。各隠れ層の出力は、ネットワークの中の次の層、すなわち次の隠れ層または出力層への入力として使用される。ネットワークの各層は、パラメータのそれぞれのセットの現在の値に従って、受信された入力から出力を生成する。
【先行技術文献】
【特許文献】
【0005】
【文献】米国特許出願番号第16/703,837号
【非特許文献】
【0006】
【文献】Karypis, GおよびKumar, V、A hypergraph partitioning package、HMETIS、1998年
【文献】Shahookar, KおよびMazumder, P、Vlsi cell placement techniques. ACM Comput. Surv.、23(2):143220、1991年6月、ISSN0360-0300.doi:10.1145/103724.103725
【文献】S. Kirkpatrick、C. D. Gelatt、およびM. P. Vecchi、Optimization by simulated annealing、SCIENCE、220(4598):671~680、1983年
【発明の概要】
【課題を解決するための手段】
【0007】
本明細書は、集積回路のためのチップ配置を生成する、1つまたは複数のロケーションにある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムについて記載する。チップ配置が生成されている集積回路は本明細書では、「コンピュータチップ」と呼ばれるが、概して、1つの半導体材料上で製造される電子回路のいかなる集合体も意味するものと理解されるべきである。チップ配置は、ノードのネットリストからの各ノードを、コンピュータチップの表面上のそれぞれのロケーションに配置する。
【0008】
本明細書で説明される主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するために実装され得る。
【0009】
チップのコンポーネントをチップの表面上に配置することを伴うフロアプランニングは、チップ設計プロセスにおける重要なステップである。コンポーネントの配置は、面積、総ワイヤ長および混雑などのメトリックを最適化するべきである。フロアプランが、これらのメトリックに対してうまく働かない場合、フロアプランに基づいて生成される集積回路チップは、不十分な働きをすることになる。たとえば、集積回路チップは、機能できない可能性もあり、過度の量の電力を消費する可能性もあり、許容できないレイテンシを有するか、またはチップ上でのコンポーネントの準最適配置によって引き起こされる様々な他の望ましくない特性のいずれをも有する場合もある。
【0010】
記載する技法は、記載するノード配置ニューラルネットワークおよび記載するトレーニング技法を利用することによって、高品質チップフロアプランが自動的に、および最小限のユーザ関与で生成されるようにする。具体的な例として、分散型トレーニングが利用されるとき、高品質の(すなわち、超人的)配置を、いかなる専門家関与もなく、時間順で生成することができる。
【0011】
記載するシステムとは異なり、従来のフロアプランニングソリューションは、かなりの人間関与を要求する、何週間もかかるプロセスを利用する。起こり得るノード配置組合せの膨大な空間のせいで、従来の自動化手法は、過度の量の計算力および実測時間を消費すること、専門家関与を要求すること、または両方なしで高品質フロアプランを確実に生成することはできなかった。ただし、記載するノード配置ニューラルネットワークをトレーニングするのに強化学習を効果的に利用することによって、記載する技法は、高品質フロアプランを迅速に生成することが可能である。
【0012】
さらに、本方法を使用して製造される集積回路チップは、従来の方法によって製造されたものと比較して、電力消費を削減した場合がある。チップは、所与の表面積に対して計算力を増大した場合も、または別の視点からは、所与の量の計算電力に対してより少ないリソースを使用して製造される場合もある。
【0013】
さらに、記載するノード配置ニューラルネットワークは、本明細書において記載されるようにトレーニングされるとき、すなわちエンコーダニューラルネットワークが、教師あり学習を通してトレーニングされ、ポリシーニューラルネットワークが、強化学習を通してトレーニングされるとき、新たなネットリストおよび新たな集積回路チップ寸法に迅速に一般化することができる。これは、新たなネットリスト用の配置を生成するために要求される計算リソースの量を大きく削減し、というのは、新たなネットリストのための高品質フロアプランを生成するために、計算コストが高い微調整がほとんど要求されないからである。
【0014】
本明細書において説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0015】
図1】例示的配置生成システムを示す図である。
図2】時間ステップにおけるノード配置ニューラルネットワークの処理を示す図である。
図3】ノード配置ニューラルネットワークをトレーニングするための例示的プロセスの流れ図である。
図4】所与の時間ステップにおいてマクロノードを配置するための例示的プロセスの流れ図である。
【発明を実施するための形態】
【0016】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0017】
図1は、例示的配置生成システム100を示す。配置生成システム100は、以下で説明するシステム、コンポーネント、および技法が実装される、1つまたは複数のロケーションにある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されるシステムの例である。
【0018】
システム100は、製造されることになっているコンピュータチップであって、複数の集積回路コンポーネント、たとえばトランジスタ、抵抗器、キャパシタなどを含むコンピュータチップ、すなわち超大規模集積(VLSI)チップについてのネットリストデータ102を受信する。複数の集積回路コンポーネントは、チップの所望の機能に依存して異なってもよい。たとえば、チップは、機械学習計算、ビデオ処理、暗号技術、または別の数値計算機能のための、専用目的チップ、すなわち特定用途向け集積回路(ASIC)であることが可能である。
【0019】
ネットリストデータ102は、コンピュータチップの集積回路コンポーネントの接続性を記述するデータである。具体的には、ネットリストデータ102は、コンピュータチップの複数の集積回路コンポーネントのうちの1つまたは複数に各々が対応する複数のノードの間の、コンピュータチップ上での接続性を指定する。つまり、各ノードは、集積回路コンポーネントのそれぞれの適切なサブセットに対応し、それらのサブセットは重複しない。言い換えると、ネットリストデータ102は、複数のノードの各々について、製造されたコンピュータチップの中の1つまたは複数のワイヤによってノードがどの他のノードに(あるとすれば)接続される必要があるかを識別する。いくつかの場合には、集積回路コンポーネントは、たとえば外部システムによって、または既存のクラスタ化技法を使うことによって、すでにクラスタにクラスタ化されており、ネットリストデータの中の各ノードは、クラスタのうちの異なるものを表す。
【0020】
システム100は、出力として、ネットリストデータ102の中のノードの一部または全部を、コンピュータチップの表面上のそれぞれの位置に配置する最終コンピュータチップ配置152を生成する。つまり、最終コンピュータチップ配置152は、ネットリストデータ102の中のノードの一部または全部について、したがって、ノードによって表される集積回路コンポーネントについて、コンピュータチップの表面上のそれぞれの位置を識別する。
【0021】
一例として、ネットリストデータ102は、2つのタイプのノード、すなわちマクロコンポーネントを表すノードと、標準セルコンポーネントを表すノードとを識別することができる。
【0022】
マクロコンポーネントは、ネットリスト中の単一ノードとして表される、ICコンポーネントの大型ブロック、たとえば静的ランダムアクセスメモリ(SRAM)または他のメモリブロックである。たとえば、マクロコンポーネントを表すノードは、SRAMの対応するインスタンスを各々が表すノードを含むことができる。別の例として、マクロコンポーネントを表すノードは、一定数の標準セルからなるハードマクロ、たとえばレジスタファイルの一定数のインスタンスからなるマクロを含むことができる。別の例として、チップ上に配置されるべきマクロコンポーネントを表すノードは、フェーズロックループ(PLL)回路を各々が表す1つまたは複数のノードを含むことができる。さらに別の例として、マクロコンポーネントを表すノードは、チップ上に配置されるべきセンサを各々が表す1つまたは複数のノードを含むことができる。
【0023】
標準セルコンポーネントは、トランジスタおよび相互接続構造のグループ、たとえばブール論理関数(たとえば、AND、OR、XOR、XNOR、インバータ)を提供するグループまたは記憶関数(たとえば、フリップフロップもしくはラッチ)を提供するグループである。
【0024】
いくつかの実装形態では、ネットリストデータの中のノードは、単一の標準セルコンポーネントを表す。いくつかの他の実装形態では、ネットリストデータの中のノードは、すでにクラスタ化された標準セルコンポーネントを表す。
【0025】
概して、配置152は、チップの表面に重ねられたN×Mグリッド中のグリッドスクエアに各ノードを割り当て、ここでNおよびMは整数である。
【0026】
いくつかの実装形態では、NおよびMの値は、システム100への入力として与えられる。
【0027】
他の実装形態では、システム100が、NおよびMの値を生成する。
【0028】
たとえば、システム100は、最適な数の行および列を選ぶことを、ビンパッキング問題として扱い、行および列の異なる組合せを、それらがチップの表面において招く無駄な空間の量でランク付けすることができる。システム100は次いで、最小量の無駄な空間を生じる組合せを、NおよびMに対する値として選択することができる。
【0029】
別の例として、システム100は、ネットリストデータから導出された入力、集積回路チップの表面を特徴付けるデータ、または両方を、集積回路チップの表面をN×Mグリッドにどのように分割するかを定義する出力を生成するために入力を処理するように構成されるグリッド生成機械学習モデルを使用して処理することができる。
【0030】
システム100は、ノード配置ニューラルネットワーク110と、グラフ配置エンジン130とを含む。
【0031】
システム100は、ノード配置ニューラルネットワーク110を、マクロノード配置122を生成するのに使う。
【0032】
具体的には、マクロノード配置122は、ネットリストデータ102の中の各マクロノード、すなわちマクロを表す各ノードを、コンピュータチップの表面のそれぞれの位置に配置する。
【0033】
システム100は、複数の時間ステップのシーケンス中の各時間ステップにおいて、ネットリストデータ102からのそれぞれのマクロノードを配置することによって、マクロノード配置122を生成する。
【0034】
つまり、システム100は、いくつかの時間ステップにわたってマクロノード配置をノード単位で生成し、各マクロノードは、マクロノード順序に従って、時間ステップのうちの異なる1つにおいて、ロケーションに配置される。マクロノード順序はマクロノードを順序付け、マクロノード順序においてどの所与のマクロノードの前にある各ノードも、その所与のマクロノードの前に配置される。
【0035】
シーケンス中の各特定の時間ステップにおいて、システム100は、特定の時間ステップ向けの入力表現を生成し、ノード配置ニューラルネットワーク110を使用して入力表現を処理する。
【0036】
特定の時間ステップ向けの入力表現は概して、少なくとも(i)マクロノード順序における特定の時間ステップにおいて配置されるべき特定のマクロノードの前にある任意のマクロノードのチップの表面上のそれぞれの位置と(ii)特定の時間ステップにおいて配置されるべき特定のマクロノードとを特徴付ける。
【0037】
入力表現はまた、オプションで、ネットリストデータ102の中で指定される、ノードの間の接続性を特徴付けるデータを含むことができる。たとえば、入力表現は、ノードの一部または全部について、ネットリストに従ってそのノードが接続されるノードのうちの1つまたは複数の他のものを特徴付けてもよい。たとえば、入力表現は、任意の2つのノードの間の各接続を、2つのノードを接続するエッジとして表すことができる。
【0038】
入力表現の例が、図2を参照して以下でより詳しく記述される。
【0039】
シーケンスの第1の時間ステップにおいて、入力表現は、どのノードも配置されていないことを示し、したがって、ネットリスト中の各ノードについて、ノードがチップの表面上の位置をまだ有していないことを示す。
【0040】
ノード配置ニューラルネットワーク110は、パラメータ(本明細書では、「ネットワークパラメータ」と呼ばれる)を有するニューラルネットワークであって、コンピュータチップの表面上の複数の位置にわたるスコア分布、たとえば確率分布またはロジットの分布を生成するために、ネットワークパラメータの現在の値に従って入力表現を処理するように構成されるニューラルネットワークである。たとえば、分布は、チップの表面に重ねられたN×Mグリッド中のグリッドスクエアにわたる可能性がある。
【0041】
システム100は次いで、特定の時間ステップにおいて配置されるべきマクロノードを、ニューラルネットワークによって生成されたスコア分布を使用して、複数の位置からの位置に割り当てる。
【0042】
所与の時間ステップにおいてニューラルネットワーク110によって実施される動作であって、その時間ステップにおいてスコア分布を使用してノードを配置する動作については、図2図4を参照して以下でより詳しく説明する。
【0043】
配置にマクロノードを1つずつ追加することによって、シーケンス中の最後の時間ステップ後に、マクロノード配置は、ネットリストデータ102の中のマクロノードすべてに対してそれぞれの配置を含むことになる。
【0044】
システム100がマクロノード配置122を生成すると、グラフ配置エンジン130は、マクロノード配置に従って配置された、すなわちマクロノード配置122でのように配置されたマクロノードによって表されるマクロコンポーネントを含む、部分的に配置された集積回路チップの表面上のそれぞれの位置に標準セルの各々を配置することによって、初期コンピュータチップ配置132を生成する。
【0045】
いくつかの実装形態では、エンジン130は、標準セルを、標準セルクラスタのセットにクラスタ化し(または、すでに生成されたクラスタを識別するデータを取得し)、次いで標準セルの各クラスタを、部分的に配置された集積回路チップの表面上のそれぞれの位置に、グラフ配置技法を使用して配置する。具体的な例として、エンジン130は、正規化最小カット目標に基づく区分技法を使用して、標準セルをクラスタ化することができる。そのような技法の例がhMETISであり、これは、Karypis, GおよびKumar, V、A hypergraph partitioning package、HMETIS、1998年に記載されている。
【0046】
いくつかの他の実装形態では、エンジン130は、標準セルをクラスタ化せず、各標準セルを、グラフ配置技法を使用して、部分的に配置された集積回路チップの表面上のそれぞれの位置に直接配置する。
【0047】
グラフ配置技法は、グラフのノードを配置するためのどの適切な技法であってもよい。たとえば、エンジン130は、力ベースの技法、すなわち力指向技法を使うことが可能である。具体的には、力ベースの技法を使うとき、エンジン130は、ネットリストを、重み×距離という公式に従って、各ノードに力を加えるばねのシステムとして表し、緊密に接続されたノードを互いに引きつけさせる。オプションで、エンジン130はまた、配置密度を低減するために、重複ノードの間に反発力をもち込む。すべての力を加えた後、エンジン130は、力ベクトルの方向にノードを動かす。振動を削減するために、エンジン130は、各動きに対して最大距離を設定することができる。ノードを配置するための力指向技法の使用については、Shahookar, KおよびMazumder, P、Vlsi cell placement techniques、ACM Comput. Surv.、23(2):143220、1991年6月、ISSN0360-0300.doi:10.1145/103724.103725により詳しく記載されている。
【0048】
いくつかの実装形態では、システム100は、初期配置132を最終配置152として使う。
【0049】
いくつかの他の実装形態では、システム100は、初期配置132を、承認エンジン150への入力として与え、エンジン150は、最終配置152を生成するように初期配置132を調節する。
【0050】
具体的には、承認エンジン150は、初期集積回路チップ配置に貪欲承認アルゴリズムを適用することによって、承認された集積回路チップ配置を生成することができる。たとえば、エンジン150は、最小間隔制約を尊重しながら、マクロを、最も近い正当な位置にスナップするために、貪欲承認ステップを実施することができる。
【0051】
オプションで、エンジン150は、承認された配置をさらに精密にすることができ、または承認された配置を生成せずに直接、たとえばシミュレートされたアニーリングを報酬関数に対して実施することによって、初期配置132を精密にすることができる。例示的報酬関数について、以下でより詳細に説明する。具体的な例として、エンジン150は、承認された配置または初期配置132における配置を反復して調節して最終コンピュータチップ配置152を生成するために山登りアルゴリズムを適用することによって、シミュレートされたアニーリングを実施することができる。マクロノード配置122を調節するのに使うことができる、山登りアルゴリズムおよび他のシミュレートされたアニーリング技法については、S. Kirkpatrick、C. D. Gelatt、およびM. P. Vecchi、Optimization by simulated annealing、SCIENCE、220(4598):671~680、1983年により詳しく記載されている。別の例として、システム100は、承認された配置をさらに精密にすることができ、または承認された配置または初期配置132を評価および微調整のために電子設計自動化(EDA)ソフトウェアツールに提供することによって、承認された配置を生成せずに直接、初期配置132を精密にすることができる。
【0052】
オプションで、システム100または外部システムは次いで、最終配置152に従ってチップ(集積回路)を製造する(生産する)ことができる。そのような集積回路は、向上した性能を呈する、たとえば従来の設計プロセスを使用して設計されたものよりも低い電力消費、より低いレイテンシ、もしくはより小さい表面積のうちの1つもしくは複数を有し、かつ/またはより少ないリソースを使用して生産可能である場合がある。製作は、どの知られている技術を使用してもよい。いくつかの場合には、最終配置に従ってチップを製造することは、配置を識別するデータをユーザに対して提示して、ユーザが、製作前に最終配置152を修正できるようにすること、または最終配置152を、製作前の微調整のために電子設計自動化(EDA)に与えることを含むことができる。
【0053】
システム100は、ネットリストデータ102を、様々なやり方のどれでも受信することができる。
【0054】
たとえば、システム100は、ネットリストデータ102を、システムの遠隔ユーザからのアップロードとして、データ通信ネットワークを介して、たとえばシステム100によって利用可能にされたアプリケーションプログラミングインターフェース(API)を使用して受信することができる。いくつかの場合には、システム100は次いで、システム100によって提供されるAPIを通して、最終配置152を、たとえば最終配置152に従ってチップを製造する際に使うために、遠隔ユーザに与えることができる。
【0055】
別の例として、システム100は、電子設計自動化(EDA)ソフトウェアツールの一部であることが可能であり、ネットリストデータ102を、ツールのユーザから、またはツールの別のコンポーネントから受信することができる。この例では、システム100は、最終配置152を、コンピュータチップが製造される前に、EDAソフトウェアツールの別のコンポーネントによる評価のために与えることができる。
【0056】
図2は、所与の時間ステップにおけるノード配置ニューラルネットワーク110の処理を示す。
【0057】
図1を参照して上述したように、配置の生成中の各時間ステップにおいて、ノード配置ニューラルネットワーク110は、入力表現を受信するように、およびコンピュータチップの表面上の複数のロケーションにわたるスコア分布、たとえば確率分布またはロジットの分布を生成するために、入力表現を処理するように構成される。
【0058】
概して、入力表現は、少なくとも、(i)マクロノード順序において、特定の時間ステップにおいて配置されるべき特定のマクロノードの前にある任意のマクロノードのチップの表面上のそれぞれの位置を特徴付けるデータと、(ii)特定の時間ステップにおいて配置されるべき特定のマクロノードを特徴付けるデータとを含む。
【0059】
図2に示すように、ノード配置ニューラルネットワーク110は、エンコーダニューラルネットワーク210と、ポリシーニューラルネットワーク220と、オプションで、値ニューラルネットワーク230とを含む。
【0060】
エンコーダニューラルネットワーク210は、各特定の時間ステップにおいて、入力表現の符号化表現212を生成するために入力表現を処理するように構成される。符号化表現とは、固定された次元空間における数値表現、すなわち一定数の数値の番号付きコレクションである。たとえば、符号化表現は、浮動小数点値または他のタイプの数値のベクトルまたは行列であることが可能である。
【0061】
ポリシーニューラルネットワーク220は、各特定の時間ステップにおいて、スコア分布を生成するために符号化表現212を処理するように構成される。
【0062】
概して、ポリシーニューラルネットワーク220は、ポリシーニューラルネットワーク220が符号化表現212をスコア分布にマップできるようにする任意の適切なアーキテクチャを有することが可能である。図2の例に示すように、ポリシーニューラルネットワーク220は、完全接続ニューラルネットワークと、それに続く逆畳み込み層のセットを含む逆畳み込みニューラルネットワークである。ポリシーニューラルネットワーク220はオプションで、他のタイプのニューラルネットワーク層、たとえばバッチ正規化層または他の種類の正規化層を含むことができる。ただし、他の例では、ポリシーニューラルネットワーク220は、たとえば回帰型ニューラルネットワーク、すなわち1つもしくは複数の回帰型ニューラルネットワーク層、たとえば長短期メモリ(LSTM)層、ゲート付き回帰型ユニット(GRU)層、または位置に対するスコアを生成する出力層をもつ他のタイプの回帰型層を含むニューラルネットワークであることが可能である。たとえば、スコアが確率であるとき、出力層はソフトマックス層である可能性がある。
【0063】
値ニューラルネットワーク230は、使用されるとき、各特定の時間ステップにおいて、特定の時間ステップ時点での配置の現在の状態の値を推定する値推定を生成するために、符号化表現212を処理するように構成される。現在の状態の値は、現在の状態から始まって、すなわち現在の部分的配置から始まって生成される配置に対する、報酬関数の出力の推定値である。たとえば、値ニューラルネットワーク230は、回帰型ニューラルネットワークであることが可能であり、またはフィードフォワードニューラルネットワーク、たとえば1つまたは複数の完全接続層を含むものであることが可能である。
【0064】
この値推定は、ニューラルネットワーク110のトレーニング中に、すなわち利用可能である値推定に依拠する強化学習技法を使うときに使うことができる。言い換えると、ノード配置ニューラルネットワークをトレーニングするのに使用される強化学習技法が値推定を要求するとき、ノード配置ニューラルネットワーク110は、強化学習技法によって要求される値推定を生成する値ニューラルネットワーク230も含む。
【0065】
ノード配置ニューラルネットワーク110のトレーニングについて、以下でより詳しく説明する。
【0066】
図2の例に示すように、入力特徴表現は、ネットリスト中のノード(「マクロ特徴」)、ネットリスト中のノードの間の接続性を、ネットリストデータ中の2つのそれぞれのノードを各々が接続するエッジとして表す「ネットリストグラフデータ」、および特定の時間ステップにおいて配置されているところであるマクロノードを識別する「現在のマクロid」の一部または全部の、それぞれのベクトル化表現を含む。具体的な例として、入力特徴表現は、マクロノードのみの、標準セルのマクロノードおよびクラスタの、またはマクロノードおよび標準セルノードの、それぞれのベクトル化表現を含むことができる。
【0067】
各ベクトル化表現は、対応するノードを特徴付ける。具体的には、すでに配置されている各ノードについて、ベクトル化表現は、チップの表面上でのノードの位置を識別するデータ、たとえばノードの中心の、またはノードの何らかの他の指定された一部の、座標を含み、まだ配置されていない各ノードについて、ベクトル化表現は、ノードがまだ配置されていないことを示すデータを含み、たとえばノードがチップの表面にまだ配置されていないことを示すデフォルト座標を含む。ベクトル化表現は、ノードを特徴付ける他の情報、たとえばノードのタイプ、ノードの寸法、たとえばノードの高さおよび幅なども含むことができる。
【0068】
図2の例では、エンコーダニューラルネットワーク210は、(i)ネットリスト中のノードのベクトル化表現のネットリスト埋込みと、(ii)特定の時間ステップにおいて配置されるべきマクロノードを表す現在のノード埋込みとを生成するように、ネットリスト中のノードのベクトル化表現を処理するグラフエンコーダニューラルネットワーク214を含む。埋込みとは、固定された次元空間における数値表現、すなわち一定数の数値の番号付きコレクションである。たとえば、表現は、浮動小数点値または他のタイプの数値のベクトルまたは行列であることが可能である。
【0069】
具体的には、グラフエンコーダニューラルネットワーク214は、ネットリストデータの中の各エッジについてのそれぞれのエッジ埋込みを、たとえばランダムに初期化し、ネットリストデータの中の各ノードに対してそれぞれのノード埋込みを、すなわちノード埋込みがノード用のそれぞれのベクトル化表現と等しくなるように初期化する。
【0070】
グラフエンコーダニューラルネットワーク214は次いで、複数のメッセージ受渡し反復の各々において埋込みを更新することによって、ノードおよびエッジ埋込みを繰り返し更新する。
【0071】
最後のメッセージ受渡し反復の後、グラフエンコーダニューラルネットワーク214は、ノードおよびエッジ埋込みから、ネットリスト埋込みと現在のノード埋込みとを生成する。
【0072】
具体的な例として、ニューラルネットワーク214は、最後のメッセージ受渡し反復の後のエッジ埋込みを組み合わせることによってネットリスト埋込みを生成することができる。たとえば、システムは、最後のメッセージ受渡し反復の後のエッジ埋込みに対して平均削減関数を適用することによって、ネットリスト埋込みを計算することができる。
【0073】
別の具体的な例として、ニューラルネットワーク214は、現在のノードに対する現在のノード埋込みを、最後のメッセージ受渡し反復の後の現在のノードに対する埋込みと等しくなるように設定することができる。
【0074】
ニューラルネットワーク214は、各メッセージ受渡し反復においてノードおよびエッジ埋込みを更新するために、様々なメッセージ受渡し技法のうちのどれを使うこともできる。
【0075】
具体的な例として、各メッセージ受渡し反復において、ニューラルネットワーク214は、エッジによって接続された2つのノードに対してそれぞれのノード埋込みを使用して、各エッジに対するエッジ埋込みを更新する。
【0076】
各反復において、所与のエッジに対する埋込みを更新するために、ネットワーク214は、エッジによって接続された2つのノードに対する少なくともノード埋込みから、集約された表現を生成し、集約された表現を、所与のエッジに対する更新されたエッジ埋込みを生成するように、第1の完全接続ニューラルネットワークを使用して処理する。いくつかの実装形態では、各エッジは、ネットリストデータの中で、同じ重み、すなわち1を有する。いくつかの他の実装形態では、各エッジは、ネットリストデータの中でそれぞれの重みに関連付けられ、システムは、エッジによって接続された2つのノードに対するノード埋込み、およびネットリストデータの中でエッジに関連付けられた重みから、集約された表現を生成する。各エッジについての重みは、たとえばニューラルネットワークのトレーニングと共同で学習することができる。
【0077】
所与のメッセージ受渡し反復において所与のノードに対する埋込みを更新するために、システムは、ノードに接続されているエッジに対するそれぞれのエッジ埋込みを使用して、ノードに対するノード埋込みを更新する。たとえば、システムは、それぞれのエッジ埋込みを、ノードに接続されているエッジに対して平均することができる。
【0078】
入力特徴表現はまた、オプションで、ノードのネットリストを特徴付ける「ネットリストメタデータ」を含むことができる。ネットリストメタデータは、ネットリストを特徴付ける、どの適切な情報も含むことができる。たとえば、情報は、基底半導体技術(水平および垂直ルーティング容量)、ネット(エッジ)の総数、マクロ、ネットリスト中の標準セルクラスタ、キャンバスサイズ、すなわちチップの表面のサイズ、またはグリッド中の行および列の数についての情報のうちのどれを含むことが可能であってもよい。
【0079】
入力特徴表現がネットリストメタデータを含むとき、エンコーダニューラルネットワーク210は、ネットリストメタデータ埋込みを生成するようにメタデータを処理する完全接続ニューラルネットワークを含むことができる。
【0080】
エンコーダニューラルネットワーク210は、少なくとも、ネットリスト中のノードのベクトル化表現のネットリスト埋込み、および特定の時間ステップにおいて配置されるべきマクロノードを表す現在のノード埋込みから、符号化表現を生成する。エンコーダニューラルネットワーク210がネットリストメタデータ埋込みも生成するとき、システムは、符号化表現を生成するのに、ネットリストメタデータ埋込みも使う。
【0081】
具体的な例として、ニューラルネットワーク210は、ネットリスト埋込みと、現在のノード埋込みと、ネットリストメタデータ埋込みとを連結し、次いで符号化表現を生成するように、完全接続ニューラルネットワークを使用して連結を処理することができる。
【0082】
システムは、チップ上での位置、すなわちグリッド中のスクエアの位置の密度も追跡する。具体的には、システムは、各位置が占有される程度を示す、その位置についての密度値を維持する。ノードが所与の位置に配置されたとき、その位置についての密度値は、1に(または、位置が完全に占有されていることを示す、異なる最大値に)等しく設定される。どのノードも所与の位置に配置されていないとき、その位置についての密度値は、位置を通るエッジの数を示す。所与の位置についての密度値は、妨害物、たとえば時計ストラップまたはチップ表面のいくつかのパーツを遮る他の構造を、それらの位置についての値を1に設定することによって反映することも可能である。
【0083】
ポリシーニューラルネットワーク220が、時間ステップにおいてスコア分布を生成すると、システムは、修正されたスコア分布を生成するのに密度を使い、次いで修正されたスコア分布を使用して、時間ステップに対応するノードを割り当てる。具体的には、システムは、閾を満足する、たとえば超える密度値を有する任意の位置についてのスコアをゼロに設定することによって、スコア分布を修正する。
【0084】
たとえば、システムは、修正されたスコア分布の中で最高スコアを有する位置にノードを割り当て、または修正されたスコア分布から位置をサンプリングし、すなわち見込みに等しい、選択される見込みを各位置が有するようにサンプリングし、次いでサンプリングされた位置にノードを割り当てることができる。
【0085】
これは、図2において、修正されたスコア分布を生成するために、スコア分布に適用することができるグリッド密度マスクとして、すなわち閾値を上回る密度を有する、任意の位置についての値がゼロであり、閾値を上回らない密度を有する任意の位置についての値が1であるマスクとして表される。
【0086】
具体的な例として、閾は1に等しい可能性があり、システムは、ノードがすでに配置されている、すなわち1の密度値を有するどの位置についても、スコアをゼロに設定することができる。別の例として、閾は1未満である可能性があり、これは、システムがまた、ノードを有さないがノードの中を走るあまりにも多いワイヤを有する(すなわち、位置に関連付けられたワイヤの数が閾を上回る)どの位置についてもスコアをゼロに設定することを示す。
【0087】
ニューラルネットワーク110が、高品質の配置を生成するのに使用されるために、システム(または別のシステム)は、ニューラルネットワークをトレーニングデータでトレーニングする。
【0088】
いくつかの実装形態では、システムは、報酬関数によって測定されたように、受信された予想報酬を最大にするように、強化学習を使用してニューラルネットワーク110をエンドツーエンドでトレーニングする。報酬関数は概して、ノード配置ニューラルネットワーク110を使用して生成された配置の品質を測定する。報酬関数については、図3を参照して以下でより詳細に記述される。
【0089】
ただし、強化学習のみを通してニューラルネットワークをトレーニングすると、新たなネットリストデータに不十分に一般化される場合があり、システムはしたがって、ニューラルネットワークを、たとえば最初から、新たなネットリストが受信されるたびにトレーニングし直さなければならない場合がある。
【0090】
ニューラルネットワーク110の一般化を向上するために、システムは、教師あり学習を通してエンコーダニューラルネットワーク210をトレーニングし、次いで強化学習を通してポリシーニューラルネットワーク220をトレーニングすることができる。そのようなトレーニングプロセスが、図3を参照して以下でより詳しく記述される。
【0091】
図3は、ノード配置ニューラルネットワークをトレーニングするための例示的プロセス300の流れ図である。便宜上、プロセス300は、1つまたは複数のロケーションにある1つまたは複数のコンピュータからなるシステムによって実施されるものとして記載される。たとえば、配置生成システム、たとえば適切にプログラムされた図1の配置生成システム100が、プロセス300を実施することができる。
【0092】
システムは、ノード配置ニューラルネットワークをトレーニングするために、すなわちネットワークパラメータのトレーニングされた値を判断するために、プロセス300を実施することができる。
【0093】
いくつかの実装形態では、システムは、ノード配置ニューラルネットワークのトレーニングを、多くの異なるワーカーに、すなわち多くの異なる同種または異種コンピューティングデバイス、すなわちCPU、GPU、またはASICを使用してトレーニング計算を実施するデバイスに分散させる。これらの実装形態のうちのいくつかにおいて、ステップ300の一部または全部は、ノード配置ニューラルネットワークのトレーニングを高速化するために、互いとは非同期に動作する多くの異なるワーカーによって並行して実施することができる。他の実装形態では、異なるワーカーは、ニューラルネットワークのトレーニングを高速化するために、プロセス300のステップの一部または全部を並行して実施するように同期して動作する。
【0094】
システムは、(i)複数の時間ステップの各々において、時間ステップ時点での集積回路チップの表面上でのノードのネットリストの配置の現在の状態を表すデータを含む入力表現を受信し、入力表現を処理してエンコーダ出力を生成するように構成されるエンコーダニューラルネットワークと、(ii)複数の時間ステップの各々において、エンコーダニューラルネットワークによって生成されたエンコーダ出力から生成された符号化表現を受信し、集積回路チップの表面上の複数の位置にわたるスコア分布を生成するために、符号化表現を処理するように構成されるポリシーニューラルネットワークと、を含むどのノード配置ニューラルネットワークもトレーニングするのにプロセス300を使うことができる。
【0095】
そのようなニューラルネットワークの一例が、図2を参照して上で説明されたものである。
【0096】
そのようなニューラルネットワークの別の例が、その内容全体が本明細書に組み込まれている、GENERATING INTEGRATED CIRCUIT FLOORPLANS USING NEURAL NETWORKSと題する、2019年12月4日に出願された米国特許出願番号第16/703,837号に記載されている。
【0097】
システムは、教師ありトレーニングデータを取得する(ステップ302)。
【0098】
教師ありトレーニングデータは、(i)ノードのそれぞれのネットリストのそれぞれの配置を各トレーニング入力表現が表す複数のトレーニング入力表現と、(ii)各トレーニング入力表現に対して、ノードのそれぞれのネットリストの配置の品質を測定する報酬関数のそれぞれの目標値とを含む。
【0099】
より具体的には、報酬関数は、最適化されると、たとえば電力消費、熱生成、またはタイミング性能のうちの1つまたは複数に関して良好な性能を呈する、生成された配置を使用して製造されるチップを生じる、生成された配置のいくつかの特性を測定する。
【0100】
具体的には、報酬関数は、1つまたは複数の特性に対するそれぞれの項を含む。たとえば、複数の項があるとき、報酬関数は、複数の項の和または加重和であることが可能である。
【0101】
一例として、報酬関数は、チップの表面上のノードの間のワイヤ長が比較的短いときは比較的高いワイヤ長測度、すなわちチップの表面上のワイヤのワイヤ長を測定する項を含むことができる。
【0102】
たとえば、ワイヤ長は、チップの表面上の隣接ノードのすべての間のマンハッタン距離または他の距離測度の負数である可能性がある。
【0103】
別の例として、ワイヤ長測度は、半周ワイヤ長(HPWL)に基づくことができ、これは、ネットリスト中のすべてのノードに対する境界ボックスの半周を使用して、ワイヤ長に近似する。HPWLを計算するとき、システムは、標準セルクラスタを出るすべてのワイヤがクラスタの中心から発すると仮定することができる。具体的には、システムは、ネットリスト中の各エッジについてHPWLを計算し、次いでワイヤ長測度を、ネットリスト中のエッジすべてについてのHPWLの正規化和の負数に等しいものとして計算することができる。
【0104】
ワイヤ長を測定する項を報酬関数の中に含めることには、書込み長が、配線コストを概算で測定し、電力およびタイミングなど、他の重要メトリックとも相関するという利点がある。
【0105】
別の例として、報酬関数は、コンピュータチップの表面上の混雑が比較的低いときは比較的高い混雑測度、すなわち混雑を測定する項を含むことができる。混雑は、領域の中を走る実際のワイヤに対して、チップ上の所与の領域(必ずしも接触領域ではない)中の利用可能な配線リソースの間の差の測度である。たとえば、混雑は、生成された配置の中の領域の中を走るワイヤと、利用可能な配線リソースの比(たとえば、その領域の中を走ることが可能であるワイヤの最大数)として定義されてもよい。具体的な例として、混雑測度は、表面の水平および垂直エッジにわたるワイヤの密度を追跡することができる。
【0106】
具体的には、システムは、ネットリスト用のルーティングモデル(たとえば、ネット境界ボックス、上部L、下部L、A*、最小スパニングツリー、または実際のルーティングされたネット、など)を利用することができる。このルーティングモデルに基づいて、表面上の各位置について、配置における利用可能な配線リソースと配線推定値の比を、位置に対するルーティングモデルから判断することによって、混雑測度を算出することができる。
【0107】
別の例として、システムは、上述したように、たとえば別々に計算された各位置における垂直および水平割振りを追跡することによって、混雑測度を計算することができる。システムは次いで、畳み込みフィルタ、たとえば各方向の、すなわち垂直および水平方向の両方の位置の数に依存して、5×1畳み込みフィルタまたは異なるサイズのフィルタを稼動することによって、混雑推定値を平滑化することができる。システムは次いで、混雑測度を、混雑推定値の上位10%、15%、または20%の平均の負数として計算することができる。
【0108】
別の例として、報酬関数は、チップの性能が比較的良好であるときに比較的高いタイミング項、すなわちデジタル論理のタイミングを測定する項を含むことができる(たとえば、報酬関数は、特定の計算タスクを実施するのに比較的時間がかからないそれぞれのチップの配置に対して、対応してより高い値をとる)。配置のタイミングまたは性能は、静的タイミング解析(STA)を使用して測定することができる。この測定は、論理経路にわたる段階遅延(内部セル遅延とワイヤ遅延とを含む)を算出することと、クロックが安全な動作のために動くことができる最大速度を判断することになる重要経路を見つけることとを含むことができる。タイミングを現実的に見るために、ノード配置が進行中のときにより長く、またはより短くなる経路に適応するための論理最適化が必要な場合がある。
【0109】
別の例として、報酬関数は、チップによって消費されることになる電力またはエネルギーを測定する1つまたは複数の項、すなわちチップによって消費されることになる電力が比較的低いときは比較的高い1つまたは複数の項を含むことができる。
【0110】
別の例として、報酬関数は、配置の面積を測定する、すなわち配置によって取り込まれる面積が比較的低いときは比較的高い1つまたは複数の項を含むことができる。
【0111】
いくつかの場合には、システムは、教師ありトレーニングデータを別のシステムから受信する。
【0112】
他の場合には、システムは、教師ありトレーニングデータを生成する。具体的な例として、複数のトレーニング入力表現によって表される配置は、異なるノード配置ニューラルネットワーク、たとえば図2を参照して上述したものよりも単純なアーキテクチャを有するノード配置ニューラルネットワークの出力に基づいて、異なるネットリストでの異なるノード配置ニューラルネットワークのトレーニング中の異なる時点において生成することができる。こうすることにより、配置が様々な品質であることを保証することができる。
【0113】
たとえば、システムは、異なるアクセラレータネットリストのセットを選択すること、および次いで、各ネットリスト用の配置を生成することによって、教師ありトレーニングデータを生成することができる。各ネットリスト用に多様な配置を生成するために、システムは、より単純なポリシーネットワークを、様々な混雑重み(0~1にわたる)およびランダムシードにおいてネットリストデータで、たとえば強化学習を通してトレーニングし、ポリシートレーニングの間に各配置のスナップショットを収集することができる。各スナップショットは、配置の表現と、配置についての、報酬関数によって生成された報酬値とを含む。トレーニングされていないポリシーネットワークはランダム重みで始め、生成された配置は低品質であるが、ポリシーネットワークがトレーニングすると、生成される配置の品質は向上し、システムは、様々な品質の配置をもつ多様なデータセットを収集できるようになる。
【0114】
いくつかの実装形態では、トレーニング入力表現はすべて、最終決定配置、すなわち対応するネットリスト中のマクロノードすべてが配置されたものを表すことができる。いくつかの他の実装形態では、トレーニング入力表現は、配置生成プロセスの様々な段階における配置を表すことができ、すなわちいくつかの表現は、マクロノードのうちのいくつかだけが配置された部分的配置を表すことができる。
【0115】
システムは、教師あり学習を通して、教師ありトレーニングデータで報酬予測ニューラルネットワークと共同でエンコーダニューラルネットワークをトレーニングする(ステップ304)。
【0116】
報酬予測ニューラルネットワークは、各トレーニングエンコーダ入力について、トレーニング入力表現からエンコーダニューラルネットワークによって生成されたエンコーダ出力を受信することと、トレーニング入力表現によって表される配置についての報酬関数の予測値を生成するために、符号化表現を処理することとを行うように構成される。
【0117】
報酬予測ニューラルネットワークは、たとえばエンコーダ出力を受信し、報酬予測を生成するようにエンコーダ出力を処理する完全接続ニューラルネットワークであることが可能である。エンコーダニューラルネットワークが、図2を参照して上述したアーキテクチャを有するとき、エンコーダ出力は、ネットリストグラフ埋込みとメタデータ埋込みの連結であることができる。
【0118】
たとえば、システムは、所与のトレーニング表現について、トレーニング入力表現に対する報酬関数の目標値と、報酬関数の予測値との間の誤差を測定する目的関数、たとえば平均二乗誤差損失を最適化するように、エンコーダニューラルネットワークと報酬予測ニューラルネットワークとをトレーニングすることができる。
【0119】
システムは次いで、報酬関数を最大にする配置を生じるスコア分布を生成するように、強化学習を通してポリシーニューラルネットワークをトレーニングする(ステップ306)。システムは、ノード配置ニューラルネットワークをトレーニングするのに、様々な強化学習技法のどれをも使うことができる。
【0120】
たとえば、システムは、ポリシー勾配技法、たとえばREINFORCEまたは基部ポリシー最適化(PPO)を、トレーニングに使うことができる。これらの場合、ニューラルネットワークが値予測ニューラルネットワークを含むとき、値ニューラルネットワークによって生成された値予測は、強化学習損失関数の勾配を計算するとき、報酬関数値を修正するベースライン値を計算するのに使うことができる。
【0121】
強化学習を通してポリシーニューラルネットワークをトレーニングする間、システムは、教師ありトレーニングデータでのトレーニングを通して判断された値に固定されたエンコーダニューラルネットワークのパラメータの値を保持することができる。
【0122】
具体的には、所与のチップについての所与のネットリストで、強化学習を通してポリシーニューラルネットワークをトレーニングする間、システムは、上述したように、所与のネットリストの中にマクロノードを1つずつ配置するのに、配置ニューラルネットワークを使うことができる。マクロノードが配置された後、システムは、最終配置を判断するために、標準セルノードを上述したように配置することができる。システムは次いで、たとえば上述した要求される量を計算することによって、最終配置についての報酬関数を計算し、強化学習を通して配置ニューラルネットワークをトレーニングするために、配置ニューラルネットワークによって生成された、報酬値と、マクロノード配置と、スコア分布とを使うことができる。したがって、配置ニューラルネットワークが、マクロノードを配置するためにのみ使用される間、報酬値は、標準セルノードも配置された後でのみ計算され、依然として標準セルノードの高品質配置を可能にするマクロノード配置を配置ニューラルネットワークが生成することを保証する。
【0123】
システムは、新たなネットリストデータを受信する(ステップ308)。
【0124】
いくつかの実装形態では、システムは、トレーニングされたノード配置ニューラルネットワークを使用して、すなわちトレーニングされたノード配置ニューラルネットワークによって生成されたスコア分布を使用して、複数の時間ステップの各々において、新たなネットリストデータからのそれぞれのノードを配置することによって、新たなネットリストデータのための集積回路配置を生成する(ステップ310)。つまり、システムは、ノード配置ニューラルネットワークをそれ以上トレーニングすることなく、新たなネットリストデータ用の配置を生成する。
【0125】
つまり、教師あり学習を通してエンコーダニューラルネットワークをトレーニングし、次いで強化学習を通してポリシーニューラルネットワークをトレーニングすることによって、システムは、ノード配置ニューラルネットワークを、いかなる追加トレーニングもなしで新たなネットリストに一般化するようにトレーニングする。
【0126】
いくつかの他の実装形態では、新たなネットリスト用に生成される配置の品質をさらに向上するために、システムは最初に、トレーニングされたノード配置ニューラルネットワークを、強化学習を通して新たなネットリストデータで微調整し(ステップ312)、次いで上述したように、微調整されたノード配置ニューラルネットワークを使用して、新たなネットリストデータ用の集積回路配置を生成する(ステップ314)。システムは、微調整中に、上述した同じ強化学習技法を使うことができ、実装に依存して、固定された、エンコーダニューラルネットワークのパラメータ値を保持するか、またはこの微調整中にエンコーダニューラルネットワークのパラメータ値を更新するかのいずれかができる。
【0127】
図4は、所与の時間ステップにおいてマクロノードを配置するための例示的プロセス400の流れ図である。便宜上、プロセス400は、1つまたは複数のロケーションにある1つまたは複数のコンピュータからなるシステムによって実施されるものとして記載される。たとえば、配置生成システム、たとえば適切にプログラムされた図1の配置生成システム100が、プロセス400を実施することができる。
【0128】
システムは、マクロノード順序に従って各マクロノードを配置するために、時間ステップのシーケンス中の各時間ステップに対して、プロセス400を実施することができる。
【0129】
いくつかの実装形態では、システムは、ネットリストデータとともに、マクロノード順序を入力として受信する。
【0130】
いくつかの他の実装形態では、システムは、ネットリストデータからマクロノード順序を生成することができる。
【0131】
一例として、システムは、サイズによって、たとえば降順サイズでマクロノードを順序付け、トポロジカルソートを使用してつながりを断ち切ることができる。より大きいマクロを最初に配置することによって、システムは、以降のマクロに対して、実現可能な配置が存在しない機会を削減する。トポロジカルソートは、接続されたノードを互いに接近して配置することをポリシーネットワークが学習するのを助けることができる。
【0132】
別の例として、システムは、マクロノード順序を定義する出力を生成するために、ネットリストデータから導出された入力を処理するように構成されるマクロノード順序予測機械学習モデルを通して、ネットリストデータから導出された入力を処理することができる。
【0133】
さらに別の例として、ノード配置ニューラルネットワークは、マクロノードにわたる確率分布を生成するようにさらに構成することができる。次いで、システムは、複数の時間ステップ中の各特定の時間ステップに対して、マクロノードにわたる確率分布に基づいて、特定の時間ステップの後の次の時間ステップにおいて配置されるべきマクロノードを選択することによって、マクロノード順序を動的に生成することができる。たとえば、システムは、最高確率を有する、まだ配置されていないマクロノードを選択することができる。
【0134】
システムは、ネットリストデータから、少なくとも(i)マクロノード順序において、所与の時間ステップにおいて配置されるべき特定のマクロノードの前の任意のマクロノードのチップの表面上のそれぞれの位置と、(ii)所与の時間ステップにおいて配置されるべき特定のマクロノードとを特徴付ける入力表現を生成する(ステップ402)。オプションで、入力表現は、ネットリスト中のノード、ネットリストメタデータ、または両方についての他の情報も含むことができる。入力表現の例については、図2を参照して上で説明されている。
【0135】
システムは、複数のパラメータ(「ネットワークパラメータ」)を有するノード配置ニューラルネットワークを使用して、入力表現を処理する(ステップ404)。ノード配置ニューラルネットワークは、集積回路チップの表面上の複数の位置にわたるスコア分布を生成するために、ネットワークパラメータの現在の値に従って入力表現を処理するように構成される。
【0136】
システムは、特定の時間ステップにおいて配置されるべきマクロノードを、スコア分布を使用して、複数の位置からの位置に割り当てる(ステップ406)。上述したように、システムは、現在の配置の追跡された密度に基づいて、すなわち閾値を満足する密度値を有する任意の位置についてのスコアをゼロに設定することによって、スコア分布を修正し、次いで修正されたスコア分布から位置を選択することができる。
【0137】
いくつかの実装形態では、システムは、追加情報を使用してスコア分布をさらに修正することができる。
【0138】
具体的には、上述したように、いくつかの実装形態では、ニューラルネットワークは、複数の異なるチップのための複数の異なるネットリスト用の複数の異なる配置でトレーニングされる。これは、ニューラルネットワークが、異なるサイズのチップ表面にわたるスコア分布を生成することを要求する可能性がある。つまり、複数の位置が、集積回路チップの表面に重ねられたN×Mグリッドからのグリッドスクエアであるとき、異なるチップは、NおよびMについて異なる値を有することができる。これを考慮するために、システムは、固定サイズmaxN×maxMグリッドを超えるスコアを生成するようにニューラルネットワークを構成することができる。現在のチップ用のNの値がmaxN未満のとき、システムは、余剰行についてのスコアをゼロに設定することができる。同様に、現在のチップ用のMの値がmaxM未満のとき、システムは、余剰列についてのスコアをゼロに設定することができる。
【0139】
本明細書は、「構成される」という用語を、システムおよびコンピュータプログラムコンポーネントとの関連で使用している。1つまたは複数のコンピュータからなるシステムが特定の動作またはアクションを実施するように構成されることは、システムが、動作の際にシステムに動作またはアクションを実施させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしたことを意味する。1つまたは複数のコンピュータプログラムが、特定の動作またはアクションを実施するように構成されることは、1つまたは複数のプログラムが、データ処理装置によって実行されると、動作またはアクションを装置に実施させる命令を含むことを意味する。
【0140】
本明細書に記載する主題および機能的動作の実施形態は、デジタル電子回路機構で、または有形に実施されるコンピュータソフトウェアもしくはファームウェアで、本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアで、またはそれらのうちの1つもしくは複数の、組合せで実装することができる。本明細書において説明される主題の実施形態は、1つまたは複数のコンピュータプログラムとして、すなわちデータ処理装置によって実行するか、またはデータ処理装置の動作を制御するための、有形の非一時的記憶媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはそれらのうちの1つもしくは複数の、組合せとすることができる。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切なレシーバ装置への送信用の情報を符号化するように生成される、人工的に生成された伝搬信号、たとえば機械生成された電気、光学、または電磁信号上で符号化することができる。
【0141】
「データ処理装置」という用語は、データ処理ハードウェアを指し、例として、プログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのすべての種類の装置と、デバイスと、機械とを包含する。装置は、特殊目的論理回路機構、たとえばFPGA(フィールドプログラム可能ゲートアレイ)またはASIC(特定用途向け集積回路)であるか、またはそれらをさらに含むこともできる。装置は、オプションで、ハードウェアに加え、コンピュータプログラムのための実行環境を作成するコード、たとえばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数の、組合せを構成するコードを含むことができる。
【0142】
コンピュータプログラムは、プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプト、またはコードと呼ばれるか、またはそれらとして知られている場合もあり、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む、どの形のプログラミング言語でも書かれることが可能であり、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境における使用に適した他の単位として、を含む、どの形でも展開することができる。プログラムが、ファイルシステム内のファイルに対応してもよいが、そうである必要はない。プログラムは、他のプログラムもしくはデータ、たとえばマークアップ言語ドキュメントに記憶された1つもしくは複数のスクリプトを保持するファイル部分に、問題になっているプログラムに専用の単一のファイルに、または複数の協調ファイル、たとえば1つもしくは複数のモジュール、サブプログラム、もしくはコードの部分を記憶するファイルに記憶することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するか、もしくは複数のサイトに分散され、データ通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように配備することができる。
【0143】
本明細書では、「データベース」という用語は、データのどの集合体も指すように広く使用されるが、データは、どの特定のやり方で構造化される必要も、またはまったく構造化される必要もなく、1つまたは複数のロケーションにある記憶デバイス上に記憶することができる。したがって、たとえばインデックスデータベースは、異なるやり方で各々が編成されアクセスされてもよい、データの複数の集合体を含むことができる。
【0144】
同様に、本明細書では、「エンジン」という用語は、1つまたは複数の特定の機能を実施するようにプログラムされる、ソフトウェアベースのシステム、サブシステム、またはプロセスを指すように広く使用される。概して、エンジンは、1つまたは複数のソフトウェアモジュールまたはコンポーネントとして実装され、1つまたは複数のロケーションにある1つまたは複数のコンピュータ上にインストールされることになる。いくつかのケースでは、1つまたは複数のコンピュータは、特定のエンジンに専用となり、他のケースでは、複数のエンジンが、同じコンピュータまたは複数のコンピュータ上でインストールされ、稼動中であることが可能である。
【0145】
本明細書で説明されるプロセスおよび論理フローは、入力データを操作し出力を生成することによって機能を実施するために1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって実施することができる。プロセスおよび論理フローはまた、特殊目的論理回路機構、たとえばFPGA、もしくはASICによって、または特殊目的論理回路機構と1つもしくは複数のプログラムされたコンピュータの組合せによって実施することもできる。
【0146】
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサもしくは専用マイクロプロセッサ、もしくはその両方、または他の種類の中央処理ユニットに基づくことができる。概して、中央処理ユニットは、読取り専用メモリもしくはランダムアクセスメモリまたは両方から、命令およびデータを受信することになる。コンピュータの要素は、命令を実施または実行するための中央処理ユニットと、命令およびデータを記憶するための1つまたは複数のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回路要素によって補完することも、その中に組み込むこともできる。概して、コンピュータは、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば磁気、光磁気ディスク、または光ディスクも含み、あるいは大容量記憶デバイスからデータを受信し、もしくはデータを転送し、または両方を行うように大容量記憶デバイスに動作可能に結合される。ただし、コンピュータは、そのようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえばほんのいくつかの例を挙げれば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはユニバーサルシリアルバス(USB)フラッシュドライブなどのポータブル記憶デバイス中に組み込むことができる。
【0147】
コンピュータプログラム命令とデータとを記憶するのに適したコンピュータ可読媒体は、例として、半導体メモリデバイス、たとえばEPROM、EEPROM、およびフラッシュメモリデバイスと、磁気ディスク、たとえば内部ハードディスクまたは取外し可能ディスクと、光磁気ディスクと、CD ROMおよびDVD-ROMディスクとを含む、あらゆる形の不揮発性メモリと、媒体と、メモリデバイスとを含む。
【0148】
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがコンピュータに入力を提供することができる、キーボード、およびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実装することができる。他の種類のデバイスを使用して、ユーザとの対話を提供することもでき、たとえばユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形態の感覚フィードバックとすることができ、ユーザからの入力は、音響、音声、または触覚入力を含む任意の形で受信することができる。さらに、コンピュータは、ユーザによって使用されるデバイスへドキュメントを送信し、デバイスからドキュメントを受信することによって、たとえばウェブブラウザから受信された要求に応答して、ユーザのデバイス上のウェブブラウザへウェブページを送信することによってユーザと対話することができる。また、コンピュータは、パーソナルデバイス、たとえばメッセージングアプリケーションを稼動しているスマートフォンにテキストメッセージまたは他の形のメッセージを送信し、ユーザから引き換えに応答メッセージを受信することによって、ユーザと対話することができる。
【0149】
機械学習モデルを実装するためのデータ処理装置はまた、たとえば機械学習のトレーニングまたは製作、すなわち推論、作業負荷の共通部分と計算集約的部分とを処理するための専用ハードウェアアクセラレータユニットを含むこともできる。
【0150】
機械学習モデルは、機械学習フレームワーク、たとえばTensorFlowフレームワーク、Microsoft Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを使用して実装し、展開することができる。
【0151】
本明細書に記載する主題の実施形態は、バックエンドコンポーネントを、たとえばデータサーバとして含む、もしくはミドルウェアコンポーネント、たとえばアプリケーションサーバを含む、もしくはフロントエンドコンポーネント、たとえば本明細書に記載する主題の実装形態とユーザが対話し得るためのグラフィカルユーザインターフェースもしくはウェブブラウザ、またはアプリを有するクライアントコンピュータ、または1つもしくは複数のそのようなバックエンド、ミドルウェア、もしくはフロントエンドコンポーネントのどの組合せも含むコンピューティングシステムで実装することができる。システムのコンポーネントは、どの形または媒体のデジタルデータ通信(たとえば、通信ネットワーク)によっても相互接続されることが可能である。通信ネットワークの例には、ローカルエリアネットワーク(LAN)およびワイドエリアネットワーク(WAN)、たとえばインターネットがある。
【0152】
コンピューティングシステムは、クライアントとサーバとを含むことができる。クライアントとサーバは概して、互いから離れており、通常、通信ネットワークを通して対話する。クライアントとサーバの関係は、それぞれのコンピュータ上で稼動するとともに互いとのクライアントサーバ関係を有するコンピュータプログラムにより発生する。いくつかの実施形態では、サーバは、たとえばクライアントとして動作するデバイスと対話しているユーザにデータを表示し、ユーザからユーザ入力を受信するために、データ、たとえばHTMLページをユーザデバイスに伝送する。たとえば、ユーザ対話の結果など、ユーザデバイスにおいて生成されたデータは、デバイスからサーバにおいて受信することができる。
【0153】
本明細書は、多くの具体的な実装詳細を含むが、これらは、いかなる発明の範囲に対する、または請求され得るものの範囲に対する限定としても解釈されるべきでなく、特定の発明の特定の実施形態に特有な場合がある特徴の記述として解釈されるべきである。別個の実施形態の文脈において本明細書に記載されるいくつかの特徴は、単一の実施形態において組み合わせて実装することもできる。逆に、単一の実施形態の文脈で記載されている様々な特徴は、複数の実施形態で別々にまたは任意の適切な部分組合せで実装することもできる。さらに、特徴は、いくつかの組合せで働くものとして上記で説明され、初めにそのように請求される場合もあるが、請求される組合せからの1つまたは複数の特徴は、場合によってはその組合せから削除することができ、請求される組合せは、部分組合せ、または部分組合せの変形形態を対象としてもよい。
【0154】
同様に、動作は、特定の順序において図面に示され、請求項に具陳されているが、これは、そのような動作が図示された特定の順序において、もしくは順次に実施されることを必要とするか、または、所望の結果を達成するためにすべての示された動作が実施されることを必要とするものと理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利な場合がある。その上、上述した実施形態における様々なシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、記載したプログラムコンポーネントおよびシステムは概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされることが可能であることを理解されたい。
【0155】
主題の特定の実施形態について説明した。他の実装形態も以下の特許請求の範囲内である。たとえば、請求項に具陳されるアクションは、異なる順序で実施され、依然として望ましい結果を達成することができる。一例として、添付の図面に示されるプロセスは、望ましい結果を達成するために、示された特定の順序または逐次的な順序を必ずしも必要としない。いくつかのケースでは、マルチタスキングおよび並列処理が有利な場合がある。
【符号の説明】
【0156】
100 配置生成システム、システム
110 ノード配置ニューラルネットワーク、ニューラルネットワーク
130 グラフ配置エンジン、エンジン
150 承認エンジン、エンジン
210 エンコーダニューラルネットワーク、ニューラルネットワーク
214 グラフエンコーダニューラルネットワーク、ニューラルネットワーク、ネットワーク
220 ポリシーニューラルネットワーク
230 値ニューラルネットワーク
図1
図2
図3
図4