(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-14
(45)【発行日】2024-08-22
(54)【発明の名称】機械学習ベースの符号化を使用した電子回路レイアウト内のパターンの分類
(51)【国際特許分類】
G06F 30/392 20200101AFI20240815BHJP
G06F 30/27 20200101ALI20240815BHJP
G06N 3/08 20230101ALI20240815BHJP
【FI】
G06F30/392
G06F30/27
G06N3/08
(21)【出願番号】P 2021569037
(86)(22)【出願日】2020-05-18
(86)【国際出願番号】 US2020033473
(87)【国際公開番号】W WO2020236754
(87)【国際公開日】2020-11-26
【審査請求日】2023-03-01
(32)【優先日】2020-05-18
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2019-05-20
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】597035274
【氏名又は名称】シノプシス, インコーポレイテッド
【氏名又は名称原語表記】SYN0PSYS, INC.
(74)【代理人】
【識別番号】100094569
【氏名又は名称】田中 伸一郎
(74)【代理人】
【識別番号】100103610
【氏名又は名称】▲吉▼田 和彦
(74)【代理人】
【識別番号】100109070
【氏名又は名称】須田 洋之
(74)【代理人】
【識別番号】100067013
【氏名又は名称】大塚 文昭
(74)【代理人】
【識別番号】100086771
【氏名又は名称】西島 孝喜
(74)【代理人】
【氏名又は名称】上杉 浩
(74)【代理人】
【識別番号】100120525
【氏名又は名称】近藤 直樹
(74)【代理人】
【識別番号】100139712
【氏名又は名称】那須 威夫
(72)【発明者】
【氏名】セシル トーマス クリストファー
【審査官】合田 幸裕
(56)【参考文献】
【文献】特開2006-235762(JP,A)
【文献】特開2002-008031(JP,A)
【文献】国際公開第2004/008245(WO,A2)
【文献】米国特許出願公開第2018/0307792(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00 - 30/398
G06N 3/08
IEEE Xplore
JSTPlus(JDreamIII)
(57)【特許請求の範囲】
【請求項1】
回路の物理レイアウトの分類を実行するための方法であって、前記方法が、
前記回路の前記物理レイアウトの表現を受け取ることと、
前記回路の前記物理レイアウト
の表現から一組の回路パターンを識別することと、
プロセッサによって、前記一組の回路パターンを、一組の符号化された回路パターンとして符号化することであって、前記一組の符号化された回路パターンが、前記一組の回路パターンの中のそれぞれの回路パターンに対する1つの符号化された回路パターンを含み、前記符号化が、機械学習ベースの符号化器を使用して実行される、符号化することと、
前記一組の符号化された回路パターンを複数のクラスタにクラスタ化することと
を含む方法。
【請求項2】
前記機械学習ベースの符号化器が、ニューラルネットワークベースの自動符号化器であり、前記ニューラルネットワークベースの自動符号化器が、回路パターンを入力として受け取り
、入力
された前記回路パターンと整合する前記回路パターンの出力表現を生成するように訓練されており、前記ニューラルネットワークベースの自動符号化器の内層が、前記符号化された回路パターンを生成する、請求項1に記載の方法。
【請求項3】
前記ニューラルネットワークベースの自動符号化器が、
入力
された前記回路パターンを受け取って前記符号化された回路パターンを生成する畳み込み層
を含む、請求項2に記載の方法。
【請求項4】
前記ニューラルネットワークベースの自動符号化器が、
前記符号化された回路パターンを入力として受け取り、前記回路パターンの出力表現を生成する逆畳み込み層
をさらに含む、請求項3に記載の方法。
【請求項5】
前
記回路パターンのサブセットを使用して、前記機械学習ベースの符号化器の分散訓練を実行すること
をさらに含む、請求項1に記載の方法。
【請求項6】
前記分散訓練が、
複数の回路パターンをそれぞれが含む複数の訓練データセットを決定することと、
複数のコンピュータプロセッサを使用して、前記機械学習ベースの符号化器を並列に訓練することであって、それぞれのコンピュータプロセッサが、前記機械学習ベースの符号化器のための一組のパラメータを、前記複数の訓練データセットのうちの1つの訓練データセットを使用して決定する、訓練することと、
並列に生成された前記一組のパラメータを集約して、前記機械学習ベースの符号化器のための結合された一組のパラメータを取得することと
を含む、請求項5に記載の方法。
【請求項7】
前記回路パターンの前記複数のクラスタを使用して、機械学習ベースのモデルを訓練することをさらに含み、前記訓練が、前記機械学習ベースのモデルを訓練するために、それぞれのクラスタから、回路パターンのサブセットを選択することを含む、
請求項1に記載の方法。
【請求項8】
前記回路パターンの前記複数のクラスタを使用して、訓練された機械学習ベースのモデルを評価することをさらに含み、前記評価が、前記機械学習ベースのモデルを評価するために、それぞれのクラスタから、回路パターンのサブセットを選択することを含む、
請求項1に記載の方法。
【請求項9】
前記符号化された回路パターンをクラスタ化することが、階層クラスタ化技法を使用して実行される、請求項1に記載の方法。
【請求項10】
前記階層クラスタ化技法が、それぞれのクラスタをサブクラスタに並列に分割する分散システムを使用して実行される、請求項9に記載の方法。
【請求項11】
クラスタごとに、そのクラスタをサブクラスタにさらに再分割すべきかどうかを判定すること
をさらに含み、前記判定が、
クラスタごとに、そのクラスタ内の符号化された回路パターンの類似性の測度を決定することと、
符号化された回路パターンの前記類似性の測度が、そのクラスタの前記符号化された回路パターン間の類似性に対応するしきい条件を満たしているかどうかを判定することと、
符号化された回路パターンの前記類似性の測度が前記しきい条件を満たしていると判定したことに応答して、そのクラスタをサブクラスタにさらに再分割することと
を含む、
請求項10に記載の方法。
【請求項12】
回路パターンの前記類似性の測度が、一対の回路パターンについて、前記一対の回路パターンからのそれぞれの回路パターンの対応する部分を比較することによって決定される、請求項11に記載の方法。
【請求項13】
符号化された回路パターンの前記類似性の測度が、前記符号化された回路パターンの異なる部分に異なる重みを割り当てる、請求項11に記載の方法。
【請求項14】
回路パターンの前記類似性の測度が、回路パターンのポリゴン密度を比較することによって決定される、請求項
11に記載の方法。
【請求項15】
回路パターンの前記類似性の測度が、前記符号化器に入力された回路パターンを使用して決定され、前記クラスタをサブクラスタに分割することが、符号化された回路パターンを使用して実行される、請求項11に記載の方法。
【請求項16】
命令が記憶された非一過性コンピュータ可読媒体であって、前記命令が、プロセッサによって実行されたときに、前記プロセッサに複数のステップを実行させ、前記複数のステップが、
回路の物理レイアウトの表現を受け取るステップと、
前記回路の前記物理レイアウト
の表現から一組の回路パターンを識別するステップと、
プロセッサによって、前記一組の回路パターンを、一組の符号化された回路パターンとして符号化するステップであって、前記一組の符号化された回路パターンが、前記一組の回路パターンの中のそれぞれの回路パターンに対する1つの符号化された回路パターンを含み、前記符号化が、機械学習ベースの符号化器の実行に基づく、ステップと、
前記一組の符号化された回路パターンを複数のクラスタにクラスタ化するステップと
を含む、非一過性コンピュータ可読媒体。
【請求項17】
前記機械学習ベースの符号化器が、ニューラルネットワークベースの自動符号化器であり、前記ニューラルネットワークベースの自動符号化器が、回路パターンを入力として受け取り、
入力
された前記回路パターンと整合する前記回路パターンの出力表現を生成するように訓練されており、前記ニューラルネットワークベースの自動符号化器の内層が、前記符号化された回路パターンを生成する、請求項16に記載の非一過性コンピュータ可読媒体。
【請求項18】
前記複数のステップが、分散訓練を実行するステップをさらに含み、前記分散訓練が、
複数の回路パターンをそれぞれが含む複数の訓練データセットを決定することと、
複数のコンピュータプロセッサを使用して、前記機械学習ベースの符号化器を並列に訓練することであって、それぞれのコンピュータプロセッサが、前記機械学習ベースの符号化器のための一組のパラメータを、前記複数の訓練データセットのうちの1つの訓練データセットを使用して決定する、訓練することと、
並列に生成された前記一組のパラメータを集約して、前記機械学習ベースの符号化器のための結合された一組のパラメータを取得することと
によって実行される、請求項16に記載の非一過性コンピュータ可読媒体。
【請求項19】
前記複数のステップが、
クラスタごとに、そのクラスタをサブクラスタにさらに再分割すべきかどうかを判定するステップ
をさらに含み、前記判定が、
クラスタごとに、そのクラスタ内の回路パターンの類似性の測度を決定することと、
符号化された回路パターンの前記類似性の測度が、そのクラスタの前記符号化された回路パターン間の類似性に対応するしきい条件を満たしているかどうかを判定することと、
回路パターンの前記類似性の測度が前記しきい条件を満たしていると判定したことに応答して、そのクラスタをサブクラスタにさらに再分割することと
を含む、
請求項16に記載の非一過性コンピュータ可読媒体。
【請求項20】
命令を記憶したメモリと、
前記メモリに結合された、前記命令を実行するためのプロセッサと
を備えるシステムであって、前記命令が、実行されたときに、前記プロセッサに複数のステップを実行させ、前記複数のステップが、
回路の物理レイアウトの表現を受け取るステップと、
前記回路の前記物理レイアウト
の表現から一組の回路パターンを識別するステップと、
前記一組の回路パターンを、一組の符号化された回路パターンとして符号化するステップであって、前記一組の符号化された回路パターンが、前記一組の回路パターンの中のそれぞれの回路パターンに対する1つの符号化された回路パターンを含み、前記符号化が、機械学習ベースの符号化器の実行に基づく、ステップと、
前記一組の符号化された回路パターンを複数のクラスタにクラスタ化するステップと
を含む、システム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2019年5月20日に出願された米国特許出願第62/850,026号の利益を主張するものである。この米国特許出願の内容は参照によって本明細書に組み込まれている。
【0002】
本開示は、一般に、電子設計自動化(electronic design automation)の分野に関し、より詳細には、パターンの機械学習ベースの符号化(encoding)を使用した電子回路の大きなレイアウトのパターン分類のための分散パターン抽出およびクラスタ化に関する。
【背景技術】
【0003】
大きな電子回路の電子設計自動化はしばしば、数十億の固有の(unique)パターンを含む大きな設計を処理する。リソグラフィモデルフィッティング(lithography model fitting)および機械学習(ML:machine learning)モデル訓練などのいくつかの用途は、設計内のパターンをモデルが十分に補外するように、それらのパターンのタイプの理解を必要とする。回路の電子設計自動化中に実行されるある種のプロセスは、電子回路のパターンをサブグループまたはクラスタにグループ分けし、その場合、それぞれのサブグループまたはクラスタは、それぞれのクラスタからの代表的な1つのパターンを使用してそのクラスタを表現することができるように、類似のパターンを含む。現在の電子回路のサイズは大きいため、10億(またはそれ以上の)のパターンが関係するパターン収集および後続のクラスタ化を、単一の計算システム上で実行することは非実際的である。これは、単一の計算システムが通常、そのような大きな電子回路をロードおよび処理する十分なメモリおよび計算パワーを持たないためである。その結果、多数のコンピュータプロセッサにわたって分散させることができない従来の技法は、小さな電子回路を処理することしかできない。
【発明の概要】
【0004】
電子回路のレイアウトの分類のための構成(例えばシステム、方法、プロセッサによって実行可能な命令が記憶された非一過性コンピュータ可読記憶媒体)が開示されている。回路のレイアウトの表現(representation)を受け取る。このレイアウト表現は幾何学的形状を含む。この回路設計のレイアウト表現から一組の回路パターンを抽出する。この一組の回路パターンを符号化して、一組の符号化された回路パターンを生成する。この回路パターンの符号化は、入力回路パターンを受け取り、符号化された回路パターンを生成するように構成された機械学習ベースの符号化器(encoder)に回路パターンを入力として提供することによって実行される。符号化された回路パターンは、入力回路パターンに比べて少ないデータを使用して表現される。符号化器を実行して、入力回路パターンに対応する符号化された回路パターンを生成する。この一組の符号化された回路パターンを複数のクラスタにクラスタ化する。
【0005】
一実施形態では、機械学習ベースの符号化器が、(1)符号化および(2)復号(decoding)を実行するニューラルネットワークベースの自動符号化器(autoencoder)である。この符号化/復号は、複数組の関数/ステップを使用して実行することができる。
【0006】
これらのクラスタを使用して、機械学習ベースのモデルを訓練または評価することができる。例えば、機械学習ベースのモデルを訓練するために、それぞれのクラスタから、回路パターンのサブセット(subset)を選択することによって、機械学習モデルを訓練することができる。同様に、機械学習ベースのモデルを評価するために、それぞれのクラスタから、回路パターンのサブセットを選択することによって、機械学習モデルを評価することができる。
【0007】
一実施形態によれば、機械学習ベースの符号化器が、分散訓練を使用して訓練される。これに応じて訓練データセットが決定される。それぞれの訓練データセットは回路パターンを含む。コンピュータプロセッサを使用して、機械学習ベースの符号化器を並列に訓練する。それぞれのコンピュータプロセッサは、機械学習ベースの符号化器のための一組のパラメータを、決定された訓練データセットのうちの1つの訓練データセットを使用して決定する。これらのパラメータは、機械学習ベースの符号化器の重みを表す。例えば、機械学習ベースのモデルを、ノードを含むニューラルネットワークとすることができ、その場合、それぞれのノードは、そのノードの入力の線形結合を表し、それらの入力は、パラメータに従って重み付けされている。機械学習ベースの符号化器の重みは、モデルの調整可能なパラメータであり、機械学習ベースの符号化器の訓練中に、例えばバックプロパゲーションプロセスによって調整される。訓練された機械学習ベースのモデルのパラメータは、そのモデルを使用して予測を実施するために、新たな入力に適用される。並列に生成された一組のパラメータを集約して、機械学習ベースの符号化器のための結合された一組のパラメータ(a combined set of parameters)を取得する。このプロセスを複数回、繰り返すことができる。
【0008】
一実施形態では、機械学習ベースの符号化器がニューラルネットワークであり、このニューラルネットワークは、入力回路パターンを受け取って、符号化された回路パターンを生成する一組の層を備える畳み込み(convolution)構成要素と、符号化された回路パターンを入力として受け取り、回路パターンの出力表現を生成する一組の層を備える逆畳み込み(deconvolution)構成要素とを含む。畳み込み構成要素および逆畳み込み構成要素はそれぞれ、ニューラルネットワークの一組の層を含み、それぞれの層は、一組の値を受け取り、その一組の値を処理し、次の層に結果を提供する。あるいは、畳み込み構成要素および逆畳み込み構成要素はそれぞれ、一連のステップを実行する構成要素と考えることができ、それぞれのステップは、入力を受け取り、その入力を処理し、次のステップに結果を提供する。
【0009】
一実施形態によれば、符号化された回路パターンのクラスタ化が、階層クラスタ化技法(hierarchical clustering technique)を使用して実行される。この階層クラスタ化技法は、それぞれのクラスタをサブクラスタ(sub-cluster)に並列に繰返し分割する分散システムを使用して実行される。
【0010】
一実施形態によれば、この階層クラスタ化は、クラスタごとに、そのクラスタをサブクラスタにさらに再分割すべきかどうかを判定する。クラスタごとに、そのクラスタ内の回路パターンの類似性の測度(measure of similarity)を決定する。このシステムは、回路パターンの類似性の測度が、そのクラスタの回路パターン間のしきい類似度(threshold degree of similarity)よりも小さい類似度を表しているかどうかを判定する。クラスタの回路パターンの類似性の測度が、クラスタの回路パターンのしきい類似度よりも小さい類似度を表している場合には、そのクラスタをサブクラスタにさらに再分割する。本明細書においてさらに説明するとおり、他の実施形態は、他の判定基準を使用して、クラスタをサブクラスタに再分割し続けるかどうかを判定することができる。
【0011】
本開示は、以下に示す詳細な説明から、および本開示の実施形態の添付図からより完全に理解されるであろう。添付図は、本開示の実施形態の知識および理解を提供するために使用される。添付図は、本開示の範囲をこれらの特定の実施形態に限定しない。さらに、添付図は必ずしも一定の倍率では描かれていない。
【図面の簡単な説明】
【0012】
【
図1】本開示のいくつかの実施形態による、集積回路の設計中および製造中に使用されるさまざまなプロセスの流れ図である。
【
図2】一実施形態による、レイアウト分類システムのシステムアーキテクチャのブロック図である。
【
図3】一実施形態による、レイアウト分類の全体プロセスを示す流れ図である。
【
図4】一実施形態によるプロセスの全体フローを、例示的なレイアウトを使用して示す図である。
【
図5】一実施形態による、自動符号化器モデルを示す図である。
【
図6】一実施形態による、元のラスタ化された回路パターンおよびその符号化された表現を示す図である。
【
図7】一実施形態による、回路のレイアウトのトップダウン階層クラスタ化の例を示す図である。
【
図8】一実施形態による、非符号化されて、ラスタ化されたポリゴンスペース(polygon space)に戻された後のクラスタアイテムの例を示す図である。
【
図9】本開示の実施形態が機能することができる例示的なコンピュータシステムの抽象図である。
【発明を実施するための形態】
【0013】
大きな回路はしばしば、いくつかの繰返し回路パターンを有する。例えば、回路レイアウトは、幾何学的形状の繰返しパターンを有することがある。類似の回路パターンは類似の情報を記憶している。これに応じて、機械学習モデルを訓練するための訓練データセットとして、類似した多数の回路パターンが提供された場合には、モデルが、訓練データとして提供されなかった他のタイプの回路パターンを処理することができないことがある。
【0014】
一実施形態によるレイアウト分類システムは、回路の回路パターンを分類して、類似の回路パターンのクラスタを生成する。回路パターンのこれらのクラスタを使用して、例えば、類似した多数の回路パターンを含む訓練データセットではなしに、異なるタイプの回路パターンを含む、機械学習モデルを訓練するための訓練データセットを生成することができる。その結果、生成された訓練データセットを使用して訓練された機械学習モデルは、類似した多数の回路パターンを含む訓練データセットを使用して訓練されたモデルに比べて、はるかに広範囲の回路パターンを取り扱うことができる。
【0015】
大きな電子回路のレイアウトは、数十億の回路パターンを含みうる。そのような大量のデータのロードおよび処理が、大量の計算リソースおよび入力/出力リソースを消費することが起こりうる。そのような大きな回路のレイアウトをクラスタ化する従来の技法は、低速で非効率であるか、または高価な計算リソースを必要とする。
【0016】
実施形態は、複数のステップを実行することによってクラスタ化を実行する。これらの複数のステップは以下のステップを含む。(1)回路設計を受け取り、その回路の中の全ての固有のパターンを、分散処理(distributed processing)(DP)を使用して見つけるステップ。(2)分散訓練を使用して、機械学習ベースの符号化器モデルを訓練するステップ。この符号化器は、回路パターンの符号化された表現が、回路パターンの符号化されていない表現よりも大幅に少ないデータを使用するような態様で、回路パターンをより小さなサイズに圧縮する。(3)圧縮されたデータパターンを複数のクラスタに、例えば分散階層クラスタ化法を使用してクラスタ化するステップ。
【0017】
回路パターンを符号化して、より少ないデータを使用するようにすることは、計算リソースが、はるかに多数の回路パターンをロードおよび処理することを可能にする。これによって、回路を処理するための計算時間および入力/出力オーバヘッドが低減される。さらに、このレイアウト分類システムは、さまざまなステップの分散処理、例えば機械学習ベースの符号化器を訓練するステップおよび符号化された回路パターンをクラスタ化するステップの分散処理を実行する。分散処理は、多数の計算プロセスを使用して、クラスタ化プロセスのさまざまなステップを並列に実行することを可能にし、それによって、プロセスを加速し、はるかに大きな回路を合理的な時間で処理することを可能にする。
【0018】
電子設計自動化プロセス
図1は、集積回路などの製品の設計中、検証中および製造中に、集積回路を表現する設計データおよび命令を変換および検証するために使用される例示的な一組のプロセス100を示している。これらのプロセスはそれぞれ、複数のモジュールまたは操作として構築され、使用可能にされていることがありうる。用語「EDA」は、用語「電子設計自動化」を意味する。これらのプロセスは、設計者によって供給された情報によって製品アイデア110を生成することから始まる。この情報は、一組のEDAプロセス112を使用する製品を生み出すために変換される。設計が完成すると、設計はテープアウトされる134。テープアウトは、マスクセットを製造するために、集積回路のためのアートワーク(例えば幾何学的パターン)が製造施設へ送られるときにあたる。このマスクセットは次いで集積回路を製造するために使用される。テープアウト後、半導体ダイが製造され136、パッケージングおよび組立てプロセス138が実行されて、完成した集積回路140が生産される。
【0019】
回路または電子構造体に対する仕様は、低レベルのトランジスタ材料レイアウトから高レベルの記述言語までの範囲にわたることがある。VHDL、Verilog、SystemVerilog、SystemC、MyHDLまたはOpenVeraなどのハードウェア記述言語(hardware description language)(「HDL」)を使用して回路およびシステムを設計するために、高レベルの抽象化が使用されることがある。HDL記述は、論理レベルレジスタトランスファレベル(register transfer level)(「RTL」)記述、ゲートレベル記述、レイアウトレベル記述またはマスクレベル記述に変換することができる。抽象性の低い記述であるそれぞれの低抽象化レベルは、より有用な詳細、例えば設計記述を含むモジュールに対するより多くの詳細を、設計記述に追加する。抽象性の低い記述であるこの低抽象化レベルは、コンピュータによって生成することができ、または設計ライブラリから取り出すことができ、または別の設計自動化プロセスによって生み出すことができる。より多くの詳細な説明を指定するための低抽象化レベル言語における仕様言語の一例がSPICEであり、SPICEは、多くのアナログ構成要素を有する回路の詳細な記述のために使用される。その層の対応するツール(例えば形式的検証(formal verification)ツール)による使用のために、それぞれの抽象化レベルにおける記述が使用可能にされる。設計プロセスは、
図1に示されたシーケンスを使用することができる。記述されたプロセスは、EDA製品(またはツール)によって使用可能にすることができる。
【0020】
システム設計114中に、製造する集積回路の機能が指定される。電力消費、性能、面積(物理行および/または命令行)およびコスト低減などの所望の特性に対して設計を最適化することができる。この段階で、異なるタイプのモジュールまたは構成要素への設計の分割を実行することができる。
【0021】
論理設計および機能検証116中に、回路の中のモジュールまたは構成要素が1つまたは複数の記述言語で指定され、機能の正確さに関して仕様が検査される。例えば、設計中の回路またはシステムの仕様の要件と整合する出力を生成するために、回路の構成要素を検証することができる。機能検証は、テストベンチジェネレータ、スタティックHDLチェッカおよび形式的検証器などのシミュレータおよび他のプログラムを使用することができる。いくつかの実施形態では、機能検証を加速するために、「エミュレータ」または「プロトタイピングシステム」と呼ばれる構成要素の特別なシステムが使用される。
【0022】
試験のための合成および設計118中に、HDLコードがネットリスト(netlist)に変換される。いくつかの実施形態では、ネットリストをグラフ構造とすることができ、このグラフ構造では、グラフ構造のエッジが回路の構成要素を表現し、グラフ構造のノードが、構成要素がどのように相互接続されているのかを表現する。HDLコードおよびネットリストはともに、集積回路が製造されたときに、集積回路が、指定された設計に従って動作することを検証するためにEDA製品が使用することができる階層的製品である。このネットリストを、ターゲット半導体製造技術に対して最適化されたものとすることができる。さらに、集積回路が仕様の要件を満たすことを検証するために、完成した集積回路を試験することができる。
【0023】
ネットリスト検証120中に、ネットリストが、タイミング制約条件の遵守およびHDLコードとの対応に関して検査される。設計計画122中に、タイミングおよび最上位ルーティングのため、集積回路に対する全体平面図が構築および分析される。
【0024】
レイアウトまたは物理インプリメンテーション124中に、物理配置(トランジスタまたはキャパシタなどの回路構成要素の位置決め)およびルーティング(複数の導体による回路構成要素の接続)が実行され、特定の論理機能を使用可能にするためのライブラリからのセルの選択を実行することができる。本明細書で使用されるとき、用語「セル」は、ブール論理関数(例えばAND、OR、NOT、XOR)または記憶機能(例えばフリップフロップもしくはラッチ)を提供する一組のトランジスタ、他の構成要素および相互接続を指定することができる。本明細書で使用されるとき、回路「ブロック」は2つ以上のセルを指すことがある。セルおよび回路ブロックはともに、モジュールまたは構成要素と呼ぶことができ、物理構造体としておよびシミュレーションにおいて使用可能にされる。選択されたセルに対してサイズなどのパラメータが(「標準セル」に基づいて)指定され、EDA製品による使用のためにデータベース内でアクセス可能にされる。
【0025】
分析および抽出126中に、回路機能がレイアウトレベルで検証され、これによってレイアウト設計の改良が可能になる。DRC制約条件、電気制約条件、リソグラフィ制約条件などの製造制約条件が正しいこと、および回路機能がHDL設計仕様と整合することを保証するため、物理検証128中に、レイアウト設計が検査される。回路設計をどのように製造するのかを改良するために、解像度向上(resolution enhancement)130中に、レイアウトの幾何形状が変換される。
【0026】
テープアウト中に、リソグラフィマスクを生産するために(適切な場合にはリソグラフィ強化が適用された後に)使用されるデータが生成される。マスクデータ準備132中に、完成した集積回路を生産するために使用されるリソグラフィマスクを生産するために「テープアウト」データが使用される。
【0027】
本明細書に記載されたEDA製品の一部または全部によって使用されるプログラムおよびデータ構造、ならびにライブラリのためのセルの開発ならびにライブラリを使用する物理および論理設計に使用される製品を記憶するために、(
図9のコンピュータシステム900または
図8のホストシステム807などの)コンピュータシステムの記憶サブシステムを使用することができる。
【0028】
回路レイアウトを記憶する電子設計自動化プロセスのさまざまな段階中、例えばレイアウトまたは物理インプリメンテーション124中、分析および抽出126中、マスクデータ準備132中などに回路設計を処理するために、実施形態を使用することができる。
【0029】
レイアウト分類システムのアーキテクチャ
図2は、一実施形態による、レイアウト分類システムのシステムアーキテクチャのブロック図を示している。レイアウト分類システム210は、回路パターン生成構成要素220、自動符号化器230、モデル訓練構成要素240およびクラスタ化構成要素250を含む。他の実施形態は、本明細書に示された構成要素よりも多数の構成要素または少数の構成要素を含むことができる。特定の構成要素によって実行されると本明細書に示された機能を、本明細書に示された構成要素以外の他の構成要素によって実行することもできる。
【0030】
回路パターン生成構成要素220は、回路のレイアウトの表現から一組の回路パターンを抽出する。本明細書では回路パターンをクリップ(clip)とも呼ぶ。一実施形態では、回路パターン生成構成要素220がレイアウトをより小さなフラグメントに分割し、フラグメントごとに、幾何学的ハッシュキーなどの固有の識別子を計算する。この固有の識別子の計算は、それぞれのクリップに対するコンパクトな識別子であって、他のクリップの他のコンパクトな識別子と比較してそれらのクリップが同一であるかどうかを判断することができるコンパクトな識別子をシステムが有することができるように実行される。このハッシュキーは、幾何形状の頂点位置の数学的関数である。例えば、この数学的関数は、頂点位置を集約し、所定の値を法(divisor)として使用してモジュロ(modulo)(または剰余(remainder))値を決定することができる。さまざまな実施形態が他の幾何学的ハッシュ関数を使用することができる。後にそれらのハッシュキーにアクセスすることができるように、回路パターン生成構成要素220は、それぞれのクリップに対するハッシュキーを、クリップの位置とともにデータベースに記憶する。このデータベースは、どの回路パターンが回路の異なる位置に存在するのかの識別、したがって、どの回路パターンが、回路の中の多様な全ての幾何形状を全体として表現する固有の一組の回路パターンを識別するのかの識別を可能にする。
【0031】
自動符号化器240は、回路パターンの表現を入力として受け取り、回路パターンの表現を出力する、機械学習ベースのモデルである。自動符号化器240は、入力された表現の符号化された表現であり、入力された表現よりも少ないビットを使用して記憶することができる、回路パターンの中間表現を生成する。
【0032】
モデル訓練構成要素230は、回路から得られた回路パターンを使用して自動符号化器を訓練する。モデル訓練構成要素230は、回路パターンの入力表現と整合する回路パターンの表現を出力するように自動符号化器240を訓練する。
【0033】
クラスタ化構成要素250は、回路の入力レイアウト表現の回路パターンのクラスタ化を実行する。クラスタ化構成要素250はそれらのクラスタを記憶する。一実施形態では、生成されたクラスタが、機械学習モデルの訓練または評価に使用される。例えば、訓練データセットとして使用する回路パターンのサブセットをそれぞれのクラスタから選択することによって、機械学習モデルを訓練することができる。それぞれのクラスタからの回路パターンの使用は、この訓練が、互いに似ていない回路パターンを使用して実行されることを保証する。繰返しの多い訓練データを用いてモデルを訓練することで計算リソースが浪費されることがないため、このことは、訓練プロセスの計算効率を向上させる。繰返しの多い訓練データを使用してモデルを訓練することはリソースの浪費になる。
【0034】
同様に、機械学習ベースのモデルを評価するための回路パターンのサブセットをそれぞれのクラスタから選択することによって、機械学習モデルを評価することができる。異なるクラスタからの回路パターンを使用して機械学習ベースのモデルを評価することは、機械学習ベースのモデルの評価の質を向上させ、評価の範囲が、異なる全てのタイプの回路パターンにわたる十分なものになることを保証する。さらに、類似の回路パターンを使用して機械学習ベースのモデルを評価することで計算リソースが浪費されることがないため、異なるクラスタからの回路パターンを使用した評価プロセスは、従来のモデル評価技法の計算効率を向上させる。
【0035】
レイアウト分類プロセス
図3は、一実施形態による、レイアウト分類の全体プロセスを示す流れ図を示している。
図3の流れ図に示されたステップは、この流れ図に示された順序とは異なる順序で実行することができる。例えば、ある種のステップは、他のステップと並列に実行することができる。さらに、この流れ図に示されたさまざまなステップを、並列システムまたは分散システムを使用して実行することもできる。
【0036】
レイアウト分類システム210は、幾何学的形状を含む回路のレイアウトの表現を受け取る310。回路パターン生成構成要素220は、回路のレイアウト表現から固有の回路パターンを識別する320。回路パターン生成構成要素220は、それらの固有のパターンをデータベースに記憶する。
【0037】
レイアウト分類システム210は、識別された回路パターンごとにステップ330および340を繰り返すことにより、回路パターンを符号化して、一組の符号化された回路パターンを生成する。レイアウト分類システム210は、回路パターンを、符号化器、例えば自動符号化器230に入力として提供する。符号化器が実行されて、回路パターンごとに、符号化された回路パターンが生成される。符号化された回路パターンは、入力回路パターンに比べて少ないデータを使用して表現される。
【0038】
クラスタ化構成要素250は、一組の符号化された回路パターンのクラスタ化を実行して、回路パターンの複数のクラスタを生成する。生成されたクラスタはデータベースに記憶される。
図3のプロセスのさまざまなステップは本明細書においてさらに詳細に説明される。固有の回路パターンを識別するステップ320は
図4に示されている。回路パターンを符号化するステップ330、340は
図5に示されている。
図6は、符号化されたおよび符号化されていない回路パターンの例を示している。符号化された回路パターンをクラスタ化するステップ350は
図7に示されている。
【0039】
図4は、一実施形態によるプロセスの全体フローを、例示的なレイアウトを使用して示している。
【0040】
ステップ1:レイアウトの中の全ての固有のパターンを識別する
一実施形態では、分散システムが設計を回路パターンに分割する。それぞれの回路パターンは次いで、全ての固有の窓(unique window)を見つけるために並列に処理される。それぞれの回路パターンについて、レイアウト分類システム210は、その回路パターンのハッシュキーを取得する。一実施形態では、レイアウト分類システム210が、幾何レイアウトクリップ(geometry layout clip)から整数ハッシュキーを計算する。このハッシュキーは、幾何レイアウトクリップに対応する入力画像の特徴(例えば幾何学的パターン)に基づいてキーを生成する幾何学的ハッシング技法を使用して生成することができる。このハッシュキーは、回路内で遭遇する全ての回路パターンの大域データベースを構築するために使用される。いくつかの実施形態では、ミラーリング、平行移動または回転によって互いから回路パターンを得ることができる場合、レイアウト分類システム210が、それらの回路パターンを同一の回路パターンとして取り扱う。これに応じて、ミラーリング、平行移動または回転のうちの1つまたは複数を実行することによって互いから得ることができる2つの回路パターンは同じハッシュキーにマップされる。レイアウト分類システム210は幾何クリップを大域データベースDに記憶する。この大域データベースDは、例えばD[ハッシュキー]=幾何ポリゴン(D[hash key]=geometry_polygons)として、ハッシュキーを回路パターンにマップする。一実施形態では、多数のキー値対を生成することを可能にするために、レイアウト分類システム210がクラウド記憶を使用する。
【0041】
ステップ2:データサイズを低減させるために自動符号化器モデルを構築する
一実施形態では、モデル訓練構成要素240が、分散機械学習訓練プロセスを使用して、符号化されたデータを表現するその中間点においてより小さなデータサイズを有する自動符号化器モデル230を訓練する。一実施形態では、レイアウト分類システム210が、回路レイアウトのポリゴンデータを、ラスタ化されたピクセルグリッドに変換し、そのラスタ化されたピクセルグリッドを処理する後続のステップにおいて畳み込みニューラルネットワークを使用する。
【0042】
図5は、入力回路パターンを受け取り、その回路パターンを出力として再生成する自動符号化器モデルを示している。自動符号化器は、入力回路パターンを、モデルの隠れ層(hidden layer)によって生成された低次元の符号化された表現に変換し、その後に、その符号化された表現を、入力回路パターンと整合する出力回路パターンに変換する。その結果、自動符号化器の隠れ層によって生成された符号化された表現は、回路パターンを出力として再生成するのに必要な回路パターンの全ての情報を含む。隠れ層は、自動符号化器モデルの内層(internal layer)とも呼ばれる。
【0043】
図5に示されているように、自動符号化器は、回路パターンのレイアウト表現を受け取る。自動符号化器は以下の構成要素を含むことができる。(1)入力回路パターンのダウンサンプリング(downsampling)を実行するための1つまたは複数の畳み込み層。この畳み込み層は、入力回路パターンを走査して回路パターンの特徴を識別する。この畳み込み層は、回路パターンの中の特定の特徴を認識するようにそれぞれが構成された1つまたは複数のフィルタを使用することができる。(2)符号化された層(encoded layer)への密接続(dense connection)。この符号化された層は隠れ層(または内層)である。この密な層は、畳み込み層の出力を符号化された層の入力に接続する。この層が密であるのは、多数の接続を有するためであり、例えば、畳み込み層のそれぞれの出力を符号化された層のそれぞれの入力に接続することができる。(3)この符号化された層は、入力表現よりも少数のデータ値を使用した符号化された表現を使用して入力回路パターンを表現する。入力回路パターンに対応する符号化された回路パターンの例が
図6に示されている。(4)密接続層が、符号化された層の出力を1つまたは複数の逆畳み込み層に接続する。この層も、多数の接続を有するため密であり、例えば、符号化された層のそれぞれの出力が逆畳み込み層のそれぞれの入力に接続される。(5)符号化された回路パターンをアップサンプリング(upsampling)して、入力回路パターンと整合する回路パターンの復号された表現を生成する1つまたは複数の逆畳み込み層。この逆畳み込み層は、畳み込み層によって実行された畳み込みのプロセスを逆進させ、畳み込み演算の逆演算を表現する。
【0044】
一実施形態では、モデル訓練構成要素240が、確率的重み平均算出(stochastic weight averaging)を使用して自動符号化器の分散訓練を実行する。この訓練は以下のステップを含むことができる。(1)モデル訓練モジュール240が、訓練データをチャンク(chunk)に分割する。(2)モデル訓練モジュール240が、部分的に並列に、それぞれのチャンクにモデルをフィットさせる。(3)モデル訓練モジュール240が、それぞれの部分フィッティングによって得られた重みを平均して、結合されたモデル(combined model)を生成する。(3)モデル訓練モジュール240が、これらのステップをステップ2から繰り返し、ステップ3で得られたその最新の重み値からモデルの訓練を継続する。
【0045】
これによって、単一の計算システム上のメモリに含めることができるであろうデータセットよりも大きなデータセットにモデルをフィットさせることができる。
【0046】
自動符号化器が訓練された後、それぞれのデータ点の符号化されたバージョンが記憶される。この符号化されたバージョンは、1024×1024画像が符号化された8×8表現に小さくされることに帰着しうる。これは、分散機械学習ベースモデル推論(distributed machine learning based model inferencing)を用いて実行される。
図6は、元のラスタ化されたパターン610およびその符号化された表現620の例を示している。
【0047】
いくつかの実施形態では、レイアウト分類システム210が、パターンの異なるエリアにわたる幾何学的密度(geometric density)を使用する。これに応じて、レイアウト分類システム210は、幾何学的密度を使用して回路パターンの符号化を構築する。一実施形態では、レイアウト分類システム210が、所与のサイズの1つの領域内で幾何極性(geometry polarity)(ポリゴン/空スペース)のサンプリングを実行し、サンプリングされた値を合計して、符号化された回路パターンの中で使用される密度値を取得する。別の実施形態では、レイアウト分類システム210がポリゴンをラスタ化し、その結果を、あるエリア内では値1を有し、そのエリアの外側では値0を有する特性関数(indicator function)を用いて畳み込んで、ピクセル値を生成する。レイアウト分類システム210はそれらのピクセル値を合計して、符号化された回路パターンの中で使用される密度値を取得する。
【0048】
いくつかの実施形態では、レイアウト分類システム210が、ラスタ化されたパターンの異なる畳み込みをサンプリングする。これに応じて、レイアウト分類システム210は、ラスタ化され畳み込まれたパターンを使用する。これは、パターンをラスタ化し、次いで、一組の畳み込み核(convolution kernel)を用いて畳み込んで、一組の畳み込まれた画像を取得することによって実行される。レイアウト分類システム210はピクセル値を合計して、上述の密度計算に類似した、畳み込まれた和表現を取得する。
【0049】
いくつかの実施形態では、レイアウト分類システム210が、ラスタ化されたパターンまたは上記の畳み込みの局所サンプリングを実行する。これに応じて、レイアウト分類システム210は、幾何学的に(例えば回路パターンの中心の近くにあることとして)指定された局所的な一組のサンプル点を決定する。次いで、これらの点で、ピクセル化された画像(この画像は、ラスタ化されたパターン、畳み込み、リソグラフィ画像などから計算することができる)がサンプリングされ、レイアウト分類システム210は、サンプリングされた値を直接に使用するか、または符号化された回路パターンで使用するための和もしくは集約値などのサンプリングされた値の数学的関数を計算する。
【0050】
用途によっては、符号化されたデータセットを生成する他の方法、例えば、ポリゴンのリソグラフィシミュレーションを実施し、そのリソグラフィシミュレーションから幾何学的/ピクセル情報を抽出する方法を使用することができることに留意すべきである。回路パターンを符号化するために使用される符号化器は以下の特性を満たす。すなわち、ある類似性の測度によれば類似である2つの異なる回路パターンC1およびC2に符号化器が適用された場合、出力される符号化された回路パターン(例えばそれぞれE1およびE2)も、その類似性の測度によれば類似である。これに応じて、入力回路パターンのクラスタは、符号化された回路パターンの中の対応するクラスタとなるであろう。類似の入力に対して必ずしも類似ではないキーを生成するハッシュ関数は、上記の特性を満たさない符号化器である。類似の回路に対して類似の符号化された回路パターンを生成しないこのような符号化器は、実施形態において使用されない。
【0051】
いくつかの実施形態では、レイアウト分類システム210が、パターンのリソグラフィシミュレーションの局所サンプリングを実行する。レイアウト分類システム210は、クリップポリゴンを受け取り、それらをマスク表現として使用し、それをリソグラフィシミューレーションシステムにフィードして、シミュレートされたウェーハ画像を得る。このシミュレートされたウェーハ画像は次いで、サンプリング、畳み込みなどによって上述のとおりに処理される。
【0052】
ステップ3:分散クラスタ化
図7は、一実施形態による、回路のレイアウトのトップダウン階層クラスタ化を示している。
【0053】
このステップでは、クラスタ化構成要素250が、符号化された回路パターンをクラスタ化する。一実施形態では、クラスタ化構成要素250が分散階層クラスタ化を使用する。これは、典型的なクラスタ化アルゴリズムが計算複雑さO(kNd)を有するためである。ここで、kは、クラスタの数、Nは、クラスタ化するパターンの数、dは、パターンの大きさである。
【0054】
クラスタ化構成要素250は、クラスタ化を以下のように実行する。クラスタ化構成要素250は、当初、全ての入力回路パターンを1つの大きなクラスタとして含む。クラスタ化構成要素250は、そのクラスタをより小さなクラスタに分割する。クラスタごとに、クラスタ化構成要素250は、クラスタ内の符号化された回路パターンの類似性の測度を決定する。クラスタ化構成要素250は、符号化された回路パターンの類似性の測度が、そのクラスタの符号化された回路パターン間の類似性に基づくしきい条件を満たしているかどうかを判定する。符号化された回路パターンの類似性の測度が、そのクラスタの符号化された回路パターン間のしきい類似度よりも小さい(またはしきい類似度に等しい)類似度を示している場合、クラスタ化構成要素250は、そのクラスタをサブクラスタにさらに再分割する。符号化された回路パターンの類似性の測度が、そのクラスタの符号化された回路パターン間のしきい類似度よりも大きい類似度を示している場合、クラスタ化構成要素250は、そのクラスタの再分割をやめる。
【0055】
したがって、階層クラスタ化は、回路からの一組の回路パターン710を含むデータが、並列に再分割することができるサブクラスタ720に逐次的に分割されるときに、kおよびN(したがってレベル当たりのターンアラウンドタイム)を低減させることによって、クラスタ化プロセスを計算的に効率的にする。そのため、O(kNd)であるクラスタ化の複雑さの代わりに、システムは、木(tree)のそれぞれの枝(branch)に対して例えば2つのサブクラスタを使用してワークを分散させ、複雑さO(Ndlog(k))を得ることができる。kが大きいとき、これはかなりの節約である。さらに、従来の技法は、クラスタ化アルゴリズムを大きなkで実行するのに極端に大量のメモリを必要とする。対照的に、開示された実施形態は、回路パターンの従来の表現に比べて大幅に小さな記憶域を占有する符号化された回路パターンを使用することによって、メモリ使用量を改善する。
【0056】
クラスタ化モジュール250によって、単一のマシン上または分散マシン上でランする他のクラスタ化法、例えばk平均、スペクトル、凝集型(agglomerative)クラスタ化法などを使用することもできる。使用するクラスタ化法は、データボリューム、および当面の課題に対してどのクラスタ化法が最も適しているのかに関する他のデータ特性に依存するであろう。
【0057】
一実施形態では、クラスタ化構成要素250が、クラスタ化木のそれぞれの階層枝においてk平均クラスタ化を使用する。クラスタ化構成要素250は、所与のレベルでどのクラスタ葉(cluster leaf)730を分割するのかを、クラスタ慣性(cluster inertia)などのそれぞれの葉クラスタメトリック(leaf cluster metric)に基づいて決定する異なる方法を使用することができる。さまざまな実施形態が、それぞれの階層枝においてk平均の代わりに他のクラスタ化法を使用することができる。
【0058】
回路パターンの符号化は、結果として生じるクラスタが、類似性の測度を満たすパターンを有するのに十分な程度に、回路パターンを、例えばパターンの幾何学的形状が整合する程度に基づいて分離する。
図8は、非符号化されて、ラスタ化されたポリゴンスペースに戻された後のサンプルクラスタアイテム810を示している。
図8に示されているように、クラスタ内に回路パターンの小さな違いがあることもあるが、さまざまな回路パターンはかなりの類似点を有する。
【0059】
クラスタ化木が完成した後、その木の葉が、最終的なクラスタとして使用される。階層クラスタ化に関して、クラスタ化構成要素250は、その木の中間クラスタ枝を使用して、「最良の数のクラスタ」(すなわちさまざまなメトリックに基づいて過度にクラスタ化しないクラスタ数)が木の葉の全数よりも少ないかどうかを判定することができる。次いで、さらなるワークを実行することなく異なるクラスタ化結果が生み出される。
【0060】
いくつかの実施形態では、クラスタをさらに分割すべき時点を識別するのを助けるために、クラスタ化構成要素250が用途特化メトリック(application specific metric)を使用する。例えば、クラスタ化構成要素250は、符号化された回路パターンの類似性の測度が、そのクラスタの符号化された回路パターン間の類似性に対応するしきい条件を満たしているかどうかを判定する。しきい条件が満たされている場合、クラスタ化構成要素250はそのクラスタをさらに再分割する。一例として、しきい条件が満たされるのは、比較する回路パターンのしきい百分率以上の回路パターンが異なるときであり、しきい条件が満たされないのは、回路パターンのしきい百分率よりも少数の回路パターンが異なる場合である。回路パターンのこの比較は、以下のいずれかの技法を使用して実行することができる。
【0061】
クラスタ化構成要素250は、例えば回路パターンの中心を包含する回路パターンのエリアのサブセットだけを比較することにより、回路パターンの中心に最も近いポリゴンの類似性を使用することができる。これに応じて、クラスタ化構成要素250は、回路パターンの中心に最も近いポリゴンを識別し、それらのポリゴンを、クラスタの中の異なる回路パターン間で比較する。この比較を、ポリゴンの中心に最も近いポリゴンに限定することは、このプロセスを、回路パターン全体を比較するプロセスに比べて計算的に効率的にする。
【0062】
クラスタ化構成要素250は、クラスタの中の回路パターンを比較するために、回路パターンのポリゴン密度を決定することができる。これに応じて、クラスタ化構成要素250は、クラスタの回路パターンのポリゴン密度の測度を、例えばそれぞれのクラスタの中のポリゴンの数を数えることによって決定する。クラスタ化構成要素250は、クラスタの中の回路パターンの類似性の測度を、それらの回路パターンのポリゴン密度を比較することによって決定する。
【0063】
いくつかの実施形態では、クラスタ化構成要素250が、クラスタの回路パターンを比較して、クラスタをさらに再分割するかどうかを判定するために、回路パターンの中のポリゴンのシミュレートされたリソグラフィ画像のサンプリングを実行する。これに応じて、クラスタ化構成要素250は、回路パターンをサンプリングして回路パターン内のサブセットまたは領域を選択し、別の回路パターンの対応するサブセットまたは領域と比較する。
【0064】
いくつかの実施形態では、クラスタ化構成要素250が、符号化された回路パターンの異なる部分に異なる重みを付ける。例えば、それぞれの符号化された回路パターンが16の値(数)を有する場合、クラスタ化構成要素250は、それらの数の一部に大きな重みを付け、他の部分にそれよりも小さな重みを付ける。例えば、幾何学的パターンの中心により近い値に、回路パターンの境界により近い値と比べて異なる重みを付けることができる。例えば、幾何学的パターンの中心により近い値に、回路パターンの境界により近い値よりも大きな重みを付けることができる。これに応じて、クラスタ化構成要素250は、それらの値の一部に他の値よりも大きな重みを付ける。それぞれの符号化されたエントリは、ユーザが決定する相対的な重要度を有するため、これらの重みの決定は用途に依存する。これに応じて、これらの重みはユーザから受け取ることができ、構成可能である。
【0065】
いくつかの実施形態では、クラスタ化構成要素250が、クラスタ化の実行には符号化された回路パターンを使用するが、クラスタをさらに再分割するかどうかの判定には、符号化された回路パターンに対応する圧縮されていない(元の)回路パターンを使用する。これに応じて、クラスタ化構成要素250は、実際のクラスタ化手順は、圧縮されたデータ(符号化された回路パターン)を使用して実行するが、どのクラスタを分割するかの判断は、対応する元のデータセット(符号化されていない回路パターン)に関するメトリックに基づく、事実上ハイブリッドであるクラスタ化を実行する。例えば、たとえ、クラスタ化が、符号化された回路パターンを使用して実行されたとしても、2つの回路パターン間の類似性の測度の決定は、符号化されていない回路パターンを使用して実行することができる。
【0066】
コンピュータアーキテクチャ
図9は、コンピュータシステム900の例示的なマシンを示しており、このマシン内で、本明細書で論じた方法のうちの任意の1つまたは複数の方法をマシンに実行させるための一組の命令を実行することができる。代替実施態様では、このマシンを、LAN、イントラネット、エクストラネットおよび/またはインターネットで他のマシンに接続する(例えばネットワーク化する)ことができる。このマシンは、クライアントサーバネットワーク環境内のサーバもしくはクライアントマシンのキャパシティ内で、またはピアツーピア(もしくは分散)ネットワーク環境内のピアマシンとして、またはクラウドコンピューティングインフラストラクチャもしくは環境内のサーバもしくはクライアントマシンとして動作することができる。
【0067】
このマシンは、パーソナルコンピュータ(PC)、タブレットPC、セットトップボックス(STB)、パーソナルディジタルアシスタント(PDA)、移動電話、ウェブ機器、サーバ、ネットワークルータ、スイッチもしくはブリッジ、またはそのマシンが実行すべき動作を指定する一組の命令を(逐次的にもしくは他のやり方で)実行することができる任意のマシンとすることができる。さらに、単一のマシンが示されているが、用語「マシン」は、本明細書で論じた方法のうちの任意の1つまたは複数の方法を実行するために一組の(または複数組の)命令を個々にまたは共同で実行するマシンの任意の集合体を含むとも解釈される。
【0068】
例示的なコンピュータシステム900は、処理装置902、主メモリ904(例えばリードオンリーメモリ(ROM)、フラッシュメモリ、ダイナミックランダムアクセスメモリ(DRAM)、例えばシンクロナスDRAM(SDRAM)、スタティックメモリ906(例えばフラッシュメモリ、スタティックランダムアクセスメモリ(SRAM)など)、およびデータ記憶装置918を含み、これらはバス930を介して互いに通信する。
【0069】
処理装置902は、マイクロプロセッサ、中央処理ユニットなどの1つまたは複数のプロセッサを表している。より詳細には、処理装置は、複合命令セットコンピューティング(CISC)マイクロプロセッサ、縮小命令セットコンピューティング(RISC)マイクロプロセッサ、超長命令語(VLIW)マイクロプロセッサ、もしくは他の命令セットを実装したプロセッサ、または命令セットの組合せを実装したプロセッサとすることができる。処理装置902を、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、ディジタル信号プロセッサ(DSP)、ネットワークプロセッサなどの1つまたは複数の専用処理装置とすることもできる。処理装置902は、本明細書に記載された操作およびステップを実行するための命令926を実行するように構成されたものとすることができる。
【0070】
コンピュータシステム900はさらに、ネットワーク920を横切って通信するためのネットワークインタフェース装置908を含むことができる。コンピュータシステム900はさらに、ビデオ表示ユニット910(例えば液晶ディスプレイ(LCD)または陰極線管(CRT))、文字数字入力装置912(例えばキーボード)、カーソル制御装置914(例えばマウス)、グラフィクス処理ユニット922、信号生成装置916(例えばスピーカ)、グラフィクス処理ユニット922、ビデオ処理ユニット928および音声処理ユニット932を含むことができる。
【0071】
データ記憶装置918は、本明細書に記載された方法または機能のうちの任意の1つまたは複数の方法または機能を実施する一組もしくは複数組の命令926またはソフトウェアが記憶されたマシン可読記憶媒体924(非一過性コンピュータ可読媒体としても知られている)を含むことができる。命令926はさらに、コンピュータシステム900による命令926の実行の間、主メモリ904内および/または処理装置902内に、完全にまたは少なくとも部分的に存在することができる。主メモリ904および処理装置902もマシン可読記憶媒体を構成する。
【0072】
いくつかの実施態様では、命令926が、本開示に対応する機能を実施するための命令を含む。例示的な一実施態様ではマシン可読記憶媒体924が単一の媒体であるように示されるが、用語「マシン可読記憶媒体」は、一組または複数組の命令を記憶した単一の媒体または複数の媒体(例えば集中型もしくは分散型データベースならびに/または関連キャッシュおよびサーバ)を含むと解釈すべきである。用語「マシン可読記憶媒体」は、マシンが実行するための一組の命令であって、本開示の方法のうちの任意の1つまたは複数の方法をマシンおよび処理装置902に実行させる一組の命令を記憶または符号化することができる任意の媒体を含むとも解釈される。これに応じて、用語「マシン可読記憶媒体」は、限定はされないが、固体状態メモリ、光学媒体および磁気媒体を含むと解釈される。
【0073】
上記の詳細な説明のいくつかの部分は、アルゴリズムの形、およびコンピュータメモリ内のデータビットに対する操作の記号的表現の形で提示されている。これらのアルゴリズム的記述および表現は、データ処理技術の熟練者が、自分の仕事の内容を他の熟練者に最も効果的に伝達するために使用する方法である。アルゴリズムは、所望の結果に至る一連の操作であることがある。これらの操作は、物理量の物理的操作を必要とする操作である。このような物理量は、記憶すること、結合すること、比較すること、およびその他のやり方で操作することができる、電気または磁気信号の形態をとることがある。このような信号は、ビット、値、要素、記号、文字、項、数などと呼ばれることがある。
【0074】
しかしながら、これらの用語および類似の用語は全て、適切な物理量に関連づけられるべきものであり、これらの量に適用された単なる都合のよい標識であることに留意すべきである。そうではないと特に言及されていない限り、本開示から明らかであるとおり、この説明の全体を通じて、ある種の用語は、コンピュータシステムのレジスタおよびメモリ内の物理(電子)量として表現されたデータを操作し、それらのデータを、コンピュータシステムメモリもしくはレジスタまたは他のこのような情報記憶装置内の物理量として同様に表現された他のデータに変換する、コンピュータシステムまたは類似の電子計算装置の動作およびプロセスに関係することが理解される。
【0075】
本開示はさらに、本明細書の操作を実行するための装置に関する。この装置は、意図された目的に合わせて特別に構築することができ、または、その中に記憶されたコンピュータプログラムによって選択的に起動または再構成されるコンピュータを含むことができる。このようなコンピュータプログラムは、限定はされないが、それぞれがコンピュータシステムバスに結合された、フロッピーディスク、光ディスク、CD-ROMおよび光磁気ディスクを含む任意のタイプのディスク、リードオンリーメモリ(ROM)、ランダムアクセスメモリ(RAM)、EPROM、EEPROM、磁気もしくは光カード、または電子的命令を記憶するのに適した任意のタイプの媒体などのコンピュータ可読記憶媒体に記憶されたものとすることができる。
【0076】
本明細書に提示されたアルゴリズムおよび表示は、特定のコンピュータまたは他の装置に本質的に関係したものではない。他のさまざまなシステムを、本明細書の教示に基づくプログラムとともに使用することができ、または、この方法を実行するためのより特殊な装置を構築するのに、他のさまざまなシステムが都合がよいと分かることがある。さらに、本開示は、特定のプログラミング言語に関して記述されたものではない。本開示の教示を本明細書に記載されとおりに実施するのに、さまざまなプログラミング言語を使用することができることが理解されるであろう。
【0077】
本開示は、コンピュータプログラム製品またはソフトウェアとして提供することができ、それらのコンピュータプログラム製品またはソフトウェアは、その上に命令が記憶されたマシン可読媒体を含むことができ、それらの命令を使用して、コンピュータシステム(または他の電子装置)を、本開示に基づくプロセスを実行するようにプログラムすることができる。マシン可読媒体は、マシン(例えばコンピュータ)によって読出し可能な形態で情報を記憶するための任意の機構を含む。例えば、マシン可読(例えばコンピュータ可読)媒体は、リードオンリーメモリ(「ROM」)、ランダムアクセスメモリ(「RAM」)、磁気ディスク記憶媒体、光学記憶媒体、フラッシュメモリデバイスなどのマシン(例えばコンピュータ)可読記憶媒体を含む。
【0078】
以上の開示では、本開示の実施態様を、その特定の例示的な実施態様に関して説明した。以下の特許請求の範囲に記載された本開示の実施態様のより幅広い趣旨および範囲を逸脱することなく、本開示の実施態様にさまざまな変更を加えることができることが明らかになるであろう。本開示が、単数形のいくつかの要素に言及している場合に、図に2つ以上の要素が示されていることがあり、同様の要素には同様の符号が付けられている。これに応じて、本開示および図は、例示のためのものとみなすべきであり、限定のためのものとみなすべきではない。