(57)【特許請求の範囲】
【請求項１】
回路設計の物理合成方法であって、
プロセッサがタイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
前記プロセッサが２つ以上の複数の異なるニューラルネットワークモデルの各々を通じて前記特徴を処理することとを含み、前記２つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記プロセッサが前記２つ以上の複数の異なるニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第１の物理合成最適化を実行することを含む、方法。
【請求項２】
前記複数のニューラルネットワークモデルからの前記結果に基づいて、第２の物理合成最適化を前記信号経路に適用することとをさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の物理合成最適化は、前記第１のニューラルネットワークモデルからの前記結果が閾値を超えているという判断に応答して、前記信号経路に対して実行される、請求項１に記載の方法。
【請求項４】
前記第１の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、前記第１のニューラルネットワークモデルを訓練することをさらに含む、請求項１に記載の方法。
【請求項５】
前記信号経路の前記特徴は、連続的なスケールに正規化され、入力として前記第１のニューラルネットワークモデルに提供される、請求項１に記載の方法。
【請求項６】
前記信号経路の前記特徴は、前記信号経路のロードピンの数、前記信号経路のドライバのピンの数、または前記信号経路の信号経路のドライバの回路素子の種類を含む、請求項１に記載の方法。
【請求項７】
前記信号経路に適用される前記複数の異なる物理合成最適化のうち少なくとも２つの順序は、前記２つ以上の複数の異なるニューラルネットワークモデルの実行から決定される、請求項１に記載の方法。
【請求項８】
回路設計の物理合成システムであって、
実行可能な動作を開始するように構成されたプロセッサを含み、
前記実行可能な動作は、
タイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
２つ以上の複数の異なるニューラルネットワークモデルの各々を通じて特徴を処理することとを含み、前記２つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記２つ以上の複数の異なるニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第１の物理合成最適化を実行することを含む、システム。
【請求項９】
前記第１の物理合成最適化は、前記第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、前記信号経路に対して実行される、請求項８に記載のシステム。
【請求項１０】
前記信号経路の前記特徴は、連続的なスケールに正規化され、入力として前記第１のニューラルネットワークモデルに提供される、請求項８に記載のシステム。
【請求項１１】
前記信号経路の前記特徴は、前記信号経路のロードピンの数、前記信号経路のドライバのピンの数、または前記信号経路の信号経路のドライバの回路素子の種類を含む、請求項８に記載のシステム。
【請求項１２】
前記信号経路に適用される前記複数の異なる物理合成最適化のうち少なくとも２つの順序は、前記２つ以上の複数の異なるニューラルネットワークモデルの実行から決定される、請求項８に記載のシステム。
【請求項１３】
プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、前記プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、前記動作は、
プロセッサがタイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
前記プロセッサが２つ以上の複数の異なるニューラルネットワークモデルの各々を通じて前記特徴を処理することとを含み、前記２つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記プロセッサが前記複数のニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第１の物理合成最適化を実行することを含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示は、集積回路（ＩＣ）に関し、特にＩＣに実装される回路設計の物理合成に関する。
【背景技術】
【０００２】
背景
集積回路（ＩＣ）は、様々な機能を実行するように実装することができる。一部のＩＣは、特定の機能を実行するようにプログラムすることができる。プログラムすることができるＩＣの一例として、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）が挙げられる。ＦＰＧＡは、典型的には、プログラマブルタイルの配列を含む。これらのプログラマブルタイルは、例えば、入出力ブロック（ＩＯＢ）、構成可能なロジックブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含むことができる。
【０００３】
各プログラマブルタイルは、典型的には、プログラマブル相互接続回路とプログラマブルロジック回路の両方を含む。プログラマブル相互接続回路は、通常、プログラマブル相互接続点（ＰＩＰ）によって相互接続された様々な長さを有する多数の相互接続線を含む。プログラマブルロジック回路は、例えば、関数発生器、レジスタ、算術論理などを含むことができるプログラマブル素子を用いて、ユーザ設計のロジック回路を実装する。
【０００４】
プログラマブル相互接続回路およびプログラマブルロジック回路は、典型的には、構成データのストリームをプログラマブル素子の構成を定義する内部構成メモリセルにロードすることによってプログラムされる。構成データは、メモリから（例えば、外部ＰＲＯＭから）読み取ることができ、外部装置によってＦＰＧＡに書き込むことができる。個々のメモリセルの集団状態は、ＦＰＧＡの機能を決める。
【０００５】
別の種類のプログラマブルＩＣとして、複合プログラマブルロジックデバイス（ＣＰＬＤ）が挙げられる。ＣＰＬＤは、互いに接続され且つ相互接続スイッチマトリックスによって入出力（Ｉ／Ｏ）リソースに接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各機能ブロックは、プログラマブルロジックアレイ（ＰＬＡ）およびプログラマブルアレイロジック（ＰＡＬ）デバイスに使用されるものに類似する２レベルのＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいて、構成データは、一般的に、オンチップの不揮発性メモリに格納される。一部のＣＰＬＤにおいて、構成データは、オンチップの不揮発性メモリに格納され、その後、初期構成（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【０００６】
これら全てのプログラマブルＩＣに対して、デバイスの機能は、その目的のためにデバイスに提供され、構成ビットストリームと呼ばれるデータビットによって制御される。データビットは、揮発性メモリ（例えば、ＦＰＧＡおよび一部のＣＰＬＤ内の静的メモリセル）、不揮発性メモリ（たとえば、一部のＣＰＬＤ内のフラッシュメモリ）、または他の種類のメモリセルに格納されてもよい。
【０００７】
他のプログラマブルＩＣは、デバイス上の様々な要素をプログラム可能に相互接続するための処理層、例えば金属層を適用することによってプログラムされる。これらのプログラマブルＩＣは、マスクプログラマブルデバイスとして知られている。プログラマブルＩＣは、別の方法で、例えばヒューズまたはアンチヒューズ技術を用いて実装されてもよい。「プログラマブルＩＣ」という用語は、これらのデバイスを含み得るがこれらに限定されず、部分的にプログラム可能なデバイスをさらに含むことができる。例えば、ある種類のプログラマブルＩＣは、ハードコードされたトランジスタロジックと、ハードコードされたトランジスタロジックをプログラム可能に相互接続するためのプログラマブルスイッチファブリックとの組み合わせを含む。
【０００８】
ＦＰＧＡのようなプログラマブルＩＣに実装される回路設計を作製することは、複雑な工程である。複雑になる理由の１つは、しばしば回路設計に対して規定され、「タイミング制約」と呼ばれる厳しいタイミング要件である。設計者は、これらの厳しいタイミング制約を満たす回路設計を作成するために、かなりの時間を費やしている。
【０００９】
一般的に、回路設計のタイミングは、信号経路（経路）ごとのスラック（slack）測定値として表すことができる。回路設計に関する「スラック」とは、経路の回路素子に到着する信号、例えばドライバからネットのロードに到着する信号の所要到着時間と、その経路の回路素子に到着する信号の推定到着時間との間の差である。正のスラックは、その経路が経路のタイミング要件を満たしていることを示す。信号は、タイミング要件によって指定された所要到着時間よりも早く目的地に到着すると推定される。負のスラックは、その経路が経路のタイミング要件を満たしていないことを示す。その経路のロードに到着する信号の推定到着時間は、タイミング要件によって指定された所要到着時間よりも遅い。
【発明の概要】
【課題を解決するための手段】
【００１０】
概要
１つ以上の実施形態は、回路設計の物理合成方法に関する。一態様において、方法は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含むことができる。
【００１１】
必要に応じて、方法は、第２の物理合成最適化の有効性を示すように訓練された第２のニューラルネットワークモデルを通じて特徴を処理することと、第２のニューラルネットワークモデルからの結果に基づいて、第２の物理合成最適化を信号経路に選択的に適用することとをさらに含んでもよい。
【００１２】
必要に応じて、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【００１３】
必要に応じて、方法は、第１の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、第１のニューラルネットワークモデルを訓練することをさらに含んでもよい。
【００１４】
必要に応じて、信号経路の特徴は、正規化され、入力として第１のニューラルネットワークモデルに提供されてもよい。
【００１５】
必要に応じて、信号経路の特徴は、信号経路のロードピンの数を含んでもよい。
必要に応じて、信号経路の特徴は、信号経路のドライバのピンの数を含んでもよい。
【００１６】
必要に応じて、信号経路の特徴は、信号経路のドライバの回路素子の種類を含んでもよい。
【００１７】
必要に応じて、方法は、第１の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第１の物理合成最適化を選択することをさらに含んでもよい。
【００１８】
必要に応じて、信号経路に適用される物理合成最適化のうち少なくとも２つの順序は、複数のニューラルネットワークモデルの実行から決定されてもよい。
【００１９】
１つ以上の実施形態は、回路設計の物理合成システムに関する。一態様において、システムは、実行可能な動作を開始するように構成されたプロセッサを含む。実行可能な動作は、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含む。
【００２０】
必要に応じて、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【００２１】
必要に応じて、信号経路の特徴は、正規化され、入力として第１のニューラルネットワークモデルに提供されてもよい。
【００２２】
必要に応じて、信号経路の特徴は、信号経路のロードピンの数を含んでもよい。
必要に応じて、信号経路の特徴は、信号経路のドライバのピンの数を含んでもよい。
【００２３】
必要に応じて、信号経路の特徴は、信号経路のドライバの回路素子の種類を含んでもよい。
【００２４】
必要に応じて、プロセッサは、プロセッサは、実行可能な動作を開始するように構成され、実行可能な動作は、さらに、第１の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第１の物理合成最適化を選択することを含んでもよい。
【００２５】
必要に応じて、信号経路に適用される少なくとも２つの物理合成最適化の順序は、複数のニューラルネットワークモデルの実行から決定されてもよい。
【００２６】
１つ以上の実施形態は、回路設計の物理合成用のコンピュータプログラム製品に関する。一態様において、コンピュータプログラム製品は、プログラムコードを格納するコンピュータ可読記憶媒体を含む。プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、動作は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含む。
【００２７】
必要に応じて、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【００２８】
この概要は、単に特定の概念を紹介するために提供され、特許請求の範囲に記載されている重要なまたは本質的な特徴を特定するために提供されたものではない。本発明の構成の他の特徴は、添付の図面および以下の詳細な説明から明らかになるであろう。
【００２９】
本発明の構成は、例示として添付の図面に示されている。しかしながら、これらの図面は、本発明の構成を図示された特定の実現例のみに限定するように解釈すべきではない。様々な態様および利点は、以下の詳細な説明を検討し、図面を参照することによって、明らかになるであろう。
【図面の簡単な説明】
【００３０】
【図１】物理合成を実行するための例示的システムを示す図である。
【図２】ニューラルネットワークモデルを生成するための例示的な方法を示す図である。
【図３】物理合成を実行するための例示的な方法を示す図である。
【発明を実施するための形態】
【００３１】
詳細な説明
本開示は、新規な特徴を定義する特許請求の範囲で終わるが、本開示に記載された様々な特徴は、図面と併せて以下の説明を考慮することによってよりよく理解されると考えられる。本開示に記載のプロセス、機械、製造、およびそれらの変形は、説明の目的で提供されている。本開示に記載された特定の構造上の詳細および機能上の詳細は、限定として理解すべきではなく、単に特許請求の範囲の基礎としておよび記載された特徴を実際に様々な方法で適切に詳述した構造に適用することを当業者に教えるための代表的な基礎として理解すべきである。さらに、本開示に使用された用語および表現は、限定することを意図するものではなく、むしろ記載された特徴の理解可能な説明を提供することを意図している。
【００３２】
本開示は、集積回路（ＩＣ）に関し、特に回路設計の物理合成に関する。１つ以上の実施形態は、人工ニューラルネットワークを用いて、回路設計に対して物理合成プロセスを実行することに関する。回路設計は、ＩＣ内の実装に適している。例えば、回路設計は、プログラマブルＩＣ、特定用途向けＩＣ（ＡＳＩＣ）などに実装されてもよい。プログラマブルＩＣの例は、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、複合プログラマブルロジックデバイス（ＣＰＬＤ）、プログラムコードを実行するように構成されたプロセッサとプログラマブル回路とを含むことを特徴とするシステムオンチップを含み得るがこれらに限らない。
【００３３】
人工ニューラルネットワークまたは単に「ニューラルネットワーク」は、生物学的脳をモデルにした計算アーキテクチャを指す。ニューラルネットワークにおいて、ニューロンと呼ばれるノードが、相互接続され、集合的に動作することによって、入力データを処理することができる。異なる種類のニューラルネットワークの例は、畳み込みニューラルネットワーク（Convolutional Neural Network）、リカレントニューラルネットワーク（Recurrent Neural Network）、ディープビリーフネットワーク（Deep Belief Network）、制限付きボルツマンマシン（Restricted Boltzman Machine）などを含むがこれらに限定されない。ニューラルネットワークを用いて、複雑な入力データから「特徴」を抽出することができる。ニューラルネットワークは、複数の層を含むことができる。各層は、入力データを受け取り、各層の入力データを処理することによって出力データを生成することができる。
【００３４】
ＩＣ内に回路設計を実装する場合、電子設計自動化（ＥＤＡ）システムは、設計フローを通じて回路設計を処理する。「設計フロー」という用語は、回路設計に対して合成、マッピング、配置および配線などの操作を実行することを意味する。また、ＥＤＡシステムは、構成ビットストリームを様々な種類のＩＣにロードするために、構成ビットストリームの生成を実行することができる。例えば、設計フローの終点またはその近くに配置した後、ＥＤＡシステムまたは別の設計ツールは、制定されたタイミング制約を満たさない回路設計の信号経路に対して１つ以上の物理合成最適化を実行することができる。物理合成最適化（以下、「最適化処理」という）は、配置または配線された後の回路設計に対して実行されるものである。以下に最適化処理の特定の例を説明するが、最適化処理は、一般的に、配置、配線、またはその両方の変更を指す。
【００３５】
従来のＥＤＡシステムは、タイミング制約を満たさない信号経路（「クリティカル」または「タイミングクリティカル」信号経路と呼ばれる）のタイミングを改善するために、回路設計に複数の異なる最適化処理を適用することができる。本開示において、信号経路の改善は、インスタンス（例えば、ネットのドライバまたはロードなどの回路素子および／または回路素子の種類）、ピン、または信号経路のネットの性質または特徴（例えば、後述するような結果の品質（ＱＯＲ））を改善することを指す。
【００３６】
信号経路に対して最適化処理を実際に実行し、その後結果を測定する前には、信号経路のタイミングまたは回路設計のＱＯＲを実際に改善する特定の最適化処理または最適化処理の組み合わせが分からない。しかしながら、殆どの場合、回路設計に最適化処理を適用すると、性能の向上とは対照的に、回路設計の性能が低下する。失敗として棄却される最適化処理を実行した後、ＥＤＡシステムは、変更を破棄し、回路設計を、最適化処理を適用する前の状態に戻す。したがって、失敗した最適化処理の実行に費やされた時間は、事実上無駄になる。
【００３７】
ＱＯＲが最も重要である場合、従来のＥＤＡシステムは、回路設計に対して利用可能な各種類の最適化処理を試みる。しかしながら、この手法によって、実行時間が許容できないほど長くなる可能性がある。従来のＥＤＡシステムは、最適化処理を実行するための実行時間を短縮しようと試みるが、一般的にＱＯＲを犠牲にして行われ、例えば、より低いＱＯＲをもたらす。
【００３８】
したがって、本開示に記載されている１つ以上の実施形態は、ニューラルネットワークを用いて、回路設計に最適化処理を適用するか否かを判断することに関する。システムは、ニューラルネットワークモデルの実行によって得られた結果を評価し、ニューラルネットワークモデルを用いて生成された結果に基づいて、信号経路に最適化処理を選択的に適用することができる。
【００３９】
本開示に記載の実施形態は、考察されている特定の最適化処理の種類に依存しない。むしろ、実施形態は、回路設計の信号経路に対して様々な異なる最適化処理のいずれかを実行する時間を判断することができる。システムは、より高いＱＯＲを生成する可能性が高いと考えられる最適化処理のみを適用することができる。同様に、システムは、より高いＱＯＲを生成する可能性が低いと考えられる最適化処理をスキップまたは省略することができる。したがって、システムは、より低いＱＯＲを生成すると考えられる最適化処理をスキップすることによって実行時間を最小化することができ、および／またはより高いＱＯＲを生成する可能性が高いと考えられる最適化処理を実行することによってＱＯＲを最大化することができる。
【００４０】
１つ以上の実施形態は、データ処理システムがニューラルネットワークモデルを用いて、回路設計を実装するおよび／または回路設計に対して物理合成を実行する方法に関する。１つ以上の実施形態は、ニューラルネットワークモデルを用いて、回路設計を実装するためにおよび／または回路設計に対して物理合成を実行するように構成されたシステムに関する。１つ以上の実施形態は、ニューラルネットワークモデルを用いて、回路設計を実装するおよび／または回路設計に対して物理合成を実行するためのプログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品に関する。
【００４１】
本発明の構成のさらなる態様は、図面を参照して以下により詳細に説明される。図示を簡単且つ明瞭にするために、図面に示される要素は、必ずしも一定の縮尺で描かれていない。例えば、明瞭さのために、いくつかの要素の寸法は、他の要素に対して拡大される場合がある。さらに、適切な場合に、参照番号は、図面に繰り返して使用され、対応、同様または類似の特徴を示す。
【００４２】
図１は、物理合成を実行するための例示的なデータ処理システム（システム）１００を示す。システム１００は、本開示に記載された様々な動作を実行するように構成されるＥＤＡシステムの例示的な実装である。システム１００は、インターフェイス回路１１５を介してメモリ１１０に連結された少なくとも１つのプロセッサ１０５を含む。インターフェイス回路１１５は、例えば、入出力（Ｉ／Ｏ）サブシステム、Ｉ／Ｏインターフェイス、バスシステム、メモリインターフェイス、または他の適切な回路として実装されてもよい。システム１００は、（「プログラムコード」とも呼ばれる）コンピュータ可読命令をメモリ１１０に格納する。メモリ１１０は、コンピュータ可読記憶媒体の一例である。プロセッサ１０５は、インターフェイス回路１１５を介してメモリ１１０から入手できるプログラムコードを実行する。
【００４３】
メモリ１１０は、１つ以上の物理メモリ装置、例えば、ローカルメモリおよび１つ以上の大容量記憶装置を含むことができる。ローカルメモリは、プログラムコードの実際の実行中に一般に使用されるランダムアクセスメモリ（ＲＡＭ）または他の非永続メモリ装置を指す。大容量記憶装置は、ハードディスクドライブ（ＨＤＤ）、ソリッドステートドライブ（ＳＳＤ）、または他の永続データ記憶装置として実装することができる。また、実行中に大容量記憶装置からプログラムコードを検索する回数を減らすために、システム１００は、少なくとも一部のプログラムコードを一時的に記憶する１つ以上のキャッシュメモリ（図示せず）をさらに含んでもよい。
【００４４】
システム１００は、１つ以上のＩ／Ｏ装置１２０に連結することができる。Ｉ／Ｏ装置１２０の例として、キーボード、ディスプレイ装置、ポインティング装置および１つ以上のネットワークアダプタなどを含み得るが、これらに限定されない。ネットワークアダプタは、システム１００を他のシステム、コンピュータシステム、リモートプリンタおよび／またはリモート記憶装置に連結することができる。ネットワークアダプタの例として、モデム、イーサネット（登録商標）カード、バスアダプタ、無線トランシーバおよび／または無線機などを含み得るが、これらに限定されない。システム１００は、例示以外の１つ以上の追加のＩ／Ｏ装置を含んでもよい。本開示に記載のＩ／Ｏ装置は、直接にまたはＩ／Ｏコントローラを介在してシステム１００に連結されてもよい。
【００４５】
図示のように、メモリ１１０は、オペレーティングシステム１２５、１つ以上のアプリケーション１３０、および様々な異なる種類のデータ１３５を格納することができる。アプリケーション１３０は、例えば、ＥＤＡアプリケーションであってもよい。１つ以上の実施形態において、アプリケーション１３０は、本開示に記載された最適化処理を含む物理合成を実行するように構成されている。１つ以上の実施形態において、アプリケーション１３０は、物理合成を含む設計フローの１つ以上または全ての段階を実行するように構成されている。一態様において、実行可能なプログラムコードの形で実装されているオペレーティングシステム１２５およびアプリケーション１３０は、システム１００によって、より具体的にはプロセッサ１０５によって実行され、本開示に記載された様々な動作を実行する。したがって、オペレーティングシステム１２５およびアプリケーション１３０は、システム１００の一部として考えられてもよい。
【００４６】
オペレーティングシステム１２５、アプリケーション１３０、およびシステム１００によって使用され、生成されおよび／または操作される任意のデータ（例えば、データ１３５）は、システム１００の一部として使用されるときにまたはＩＣに与えられ且つＩＣ内に実装されるときに機能を付与する機能性データ構造である。「データ構造」とは、データモデルのデータ編成を物理メモリに物理的に実装することを指す。したがって、データ構造は、メモリ内の特定の電気的または磁気的な構造素子を含む。データ構造は、メモリに格納され、プロセッサによって使用されるデータに物理的な編成を加える。
【００４７】
システム１００は、実装される特定の装置の種類に応じて、図１に示されているものより少ない構成要素、または図１に示されていない追加の構成要素を含むことができる。また、含まれる特定のオペレーティングシステムおよび／またはアプリケーションは、含まれるネットワークアダプタと同様に、装置の種類によって異なってもよい。さらに、例示された１つ以上の構成要素は、別の構成要素に組み込まれてもよく、別の構成要素の一部を形成してもよい。例えば、プロセッサは、少なくともいくつかのメモリを含んでもよい。
【００４８】
図１の例は、２つの異なる段階を示している。１つの段階において、システム１００またはシステム１００に類似する別のシステムは、機械学習１４０を実行することができる。システム１００は、訓練データ１４５を用いて機械学習１４０を実行することができる。一態様において、訓練データ１４５は、複数の訓練回路設計、任意の物理合成最適化を適用する前の訓練回路設計の特徴、および１つ以上の異なる最適化処理を適用した後の訓練回路設計の特徴を含む。
【００４９】
プロセッサ１０５は、トレーニングデータ１４５を用いて、機械学習１４０、例えば、ニューラルネットワーク訓練を実行することによって、ニューラルネットワークモデル１５０を生成することができる。１つ以上の実施形態において、プロセッサ１０５は、物理合成中に実行され得る異なる最適化処理の各々に対してニューラルネットワークモデル１５０を生成することができる。機械学習１４０は、図２を参照してより詳細に説明される。
【００５０】
第２または異なる段階において、システム１００は、物理合成１５５を実行することができる。図１の例において、プロセッサ１０５は、メモリ１１０から回路設計１６０を読み取り、設計フローの１つ以上の段階を実行することによって回路設計１６０を処理することができる。回路設計１６０（および後述の回路設計１６５）は、ハードウエア記述言語を用いて、例えばレジスタ転送レベル（ＲＴＬ）表現またはネットリストとして特定することができる。
【００５１】
さらに、本開示に記載されたように、プロセッサ１０５は、１つ以上のニューラルネットワークモデル１５０を用いて、回路設計１６０に対して１つ以上の最適化処理を実行することができる。プロセッサ１０５は、回路設計１６０を処理することにより、回路設計１６０と異なるものを生成し、回路設計１６５として出力され示される。回路設計１６５は、回路設計１６０と機能的に同等であるが、システム１００が回路設計１６０に対して１つ以上の最適化処理を実行することによって生成されたものであるという点で異なる。
【００５２】
説明のために、一例として、回路設計１６０は、設計フローの一部として、合成、場合によって論理的最適化、および配置を受ける。回路設計１６０は、まだ配線されていない。回路設計１６０は、タイミングクリティカルではない１つ以上の信号経路を含む。本開示に定義された「信号経路」という用語は、同期ドライバ回路素子と１つ以上の同期ロード回路素子とを有する回路設計の一部を意味する。また、信号経路は、ドライバ（またはソース）とロードとの間に１つ以上の非同期回路素子を含んでもよい。
【００５３】
システム１００は、タイミング要件を満たさない回路設計１６０から信号経路を選出することができる。また、システム１００は、ＱＯＲを改善するために、１つ以上の最適化処理を信号経路に適用するか否かを判断することができる。システム１００は、回路設計の１つ以上の特徴を決定し、これらの特徴を入力としてニューラルネットワークモデル１５０に提供し、ニューラルネットワークモデル１５０を実行することができる。ニューラルネットワークモデル１５０の実行によって得られた結果に基づいて、システムは、最適化処理を信号経路に適用するか否かを判断する。
【００５４】
様々な方法でＱＯＲを測定することができる。１つ以上の実施形態において、ＱＯＲの改善は、信号経路のタイミングの改善を意味する。タイミングの改善とは、信号経路のスラックの負数値がより小さくなり、その結果、信号経路がそれほどタイミングクリティカルではなくなるまたはタイミングクリティカルではなくなることを意味する。別の例において、ＱＯＲの改善は、回路設計および／またはＩＣにおいてタイミングを満たさない信号経路の数が減少することを意味する。
【００５５】
他の例示的なＱＯＲは、回路設計および／またはＩＣの電力消費量が改善された（例えば、低減された）か否かである。ＱＯＲの尺度として電力消費量を使用する場合、電力消費量の評価は、回路設計またはＩＣの全体、閾値量を超える電力を消費する特定のモジュールまたは他のホットスポットなどに適用されてもよい。別の例示的なＱＯＲは、回路設計および／またはＩＣの面積使用量である。この場合、面積使用量の減少は、ＱＯＲの改善を意味する。なお、ＱＯＲは、前述した例示のいずれか、または前述した例示の１つ以上もしくは全ての組合せであってもよい。例えば、ＱＯＲは、記載された１つ以上または全てのＱＯＲ量に重みを付け、重み付けられた量を合計することによって決定されてもよい。１つ以上の実施形態において、特定の最適化処理の結果を維持するかまたは棄却するかは、得られたＱＯＲに基づいて決定される。
【００５６】
本開示に定義された「ニューラルネットワークモデル」という用語は、データ処理システムおよび／または専用のニューラルネットワークプロセッサによって実行可能な訓練済み人工ニューラルネットワークの実装を意味する。１つ以上の実施形態において、ニューラルネットワークモデルは、プロセッサ実行可能なプログラムコード、例えばオブジェクトコードとして実装され、データ構造として格納される。一例において、ニューラルネットワークモデルは、フィードフォワードニューラルネットワークとして実装されてもよい。フィードフォワードニューラルネットワークにおいて、ニューラルネットワークのニューロンは、他のニューロンと連結するためのリンクを有する。これらのリンクは、ニューラルネットワークを通って一方向のみ、すなわち順方向に延在する。
【００５７】
１つ以上の実施形態において、システム１００は、複数の異なる最適化処理を実行することができる。例示的な最適化処理は、回路設計１６０のネットリストに対する変更、回路設計１６０のタイミング制約に対する変更、回路設計１６０に対する配置変更、および／または回路設計１６０を配線する場合に回路設計１６０に対する配線変更を含むが、これらに限定されない。システム１００は、提供された１つ以上の例または各々の例に対して、複数のより具体的な最適化処理を実行するように構成されてもよい。例えば、システム１００は、２つ以上の異なる種類のネットリスト変更または２つ以上の配置変更を実行することができる。この場合、最適化処理の追加の例は、再マッピング、再構築、再配線、プッシュおよび／またはプル技術、複製、信号並べ替え、タイミング変更、インスタンス（例えば、ルックアップテーブル）挿入などを含むが、これらに限定されない。
【００５８】
システム１００は、システム１００が実行することができる異なる種類の最適化処理の各々のために、ニューラルネットワークモデル１５０を生成して格納することができる。システム１００は、最適化処理を実行するために、信号経路の特徴を１つ以上のニューラルネットワークモデル１５０に提供し、ニューラルネットワークモデル１５０の実行結果が少なくともＱＯＲの改善の最小可能性を示す判断に応答して信号経路に対して最適化処理を実行する。例えば、各ニューラルネットワークモデル１５０は、特定の最適化処理の可能な有効性を示すように構成されている。したがって、ニューラルネットワークモデル１５０の実行から得られた結果に基づいて、ＱＯＲの改善をもたらす可能性が低い最適化処理は、物理合成中にスキップまたは省略することができる。
【００５９】
１つ以上の実施形態において、システム１００は、ＱＯＲを改善するために、ニューラルネットワークモデル１５０を用いて、処理される信号経路および／または処理される信号経路の順序を決定することができる。例えば、システム１００は、ニューラルネットワークモデル１５０によってＱＯＲを改善する可能性が低いと示された信号経路に対して最適化処理を実行しないように選択することができる。他の場合において、システム１００は、ＱＯＲを改善する可能性が低いと示された信号経路を処理する前に、ＱＯＲを改善する可能性が高いと示された信号経路を処理することを選択することができる。
【００６０】
１つ以上の実施形態において、システム１００は、ＱＯＲを改善するために、所定の信号経路に適用される最適化処理の順序を決定することができる。例えば、システム１００は、ニューラルネットワークモデル１５０を用いて複数の最適化処理を評価し、ＱＯＲの改善をもたらす可能性がない物理合成最適化を適用する前に、ＱＯＲの改善をもたらす可能性がある最適化処理を特定の信号経路に適用することができる。
【００６１】
図２は、ニューラルネットワークモデルを生成するための例示的な方法２００を示す。図２に示された方法は、図１に関連して説明した機械学習を実行することによって、ニューラルネットワークを訓練し、ニューラルネットワークモデルを生成する。方法２００は、図１のシステム１００と同一または類似のアーキテクチャを有するデータ処理システムを用いて実行されてもよい。
【００６２】
方法２００は、システムによって実行され、信号経路に対して特定の最適化処理の適用によってＱＯＲの改善をもたらす可能性を決定するように構成されたニューラルネットワークモデルを作成することができる。方法２００は、特定の最適化処理に対応する１つのニューラルネットワークモデルを生成することに関するため、必要に応じて、方法２００を繰り返すことによって、所定のＥＤＡシステムが実行可能な他の特定の最適化処理および／または各最適化処理用のさらなるニューラルネットワークモデルを生成することができる。
【００６３】
１つ以上の実施形態において、ニューラルネットワークライブラリを用いて、ニューラルネットワークモデルを生成することができる。使用可能なニューラルネットワークライブラリの一例として、コペンハーゲン大学のコンピュータサイエンス学科から入手可能な「高速人工ニューラルネットワーク」（Fast Artificial Neural Network：ＦＡＮＮ）が挙げられる。本開示に記載された例は、説明の目的のためのものであり、限定のためのものではない。なお、他のニューラルネットワークライブラリを用いて、ニューラルネットワークモデルを生成することもできる。
【００６４】
ブロック２０５において、複数の訓練回路設計から、タイミングクリティカル信号経路に関連する特徴（例えば、訓練データ１４５）を決定する。例えば、回路設計のライブラリから、タイミングクリティカル信号経路を識別することができる。識別された信号経路の各々に対して、選択された最適化処理を適用する前に複数の特徴を決定することができる。最適化処理の適用に続いて、最適化処理を受け入れるかまたは棄却するかを含む１つ以上の追加の特徴が決定される。一実施形態において、訓練のために、最適化を受け入れるかまたは棄却するかは、設計者、例えばユーザによって判断されてもよい。別の実施形態において、訓練のために、最適化を受け入れるかまたは棄却するかは、本開示に記載のＱＯＲに従って決定されてもよい。ＱＯＲは、システムによって自動的に決定されてもよい。
【００６５】
ブロック２０５において訓練データの一部として決定された特徴の例は、以下のものを含むが、これらに限らない。例えば、
最適化処理の名前（ファンアウト最適化（fanout optimization）、配置最適化、リタイミング、再配線、リタイミング、ＤＳＰ最適化、ＢＲＡＭ最適化など）、
ドライバインスタンスの種類（例えば、ルックアップテーブルおよびフリップフロップなどの信号経路のソースまたはドライバの回路素子の種類）、
ドライバのピンの数（入力ピンの数が多くなるほど、一般的にＱＯＲを改善する可能性が低くなる）、
ドライバに対する固有種類のロードの数（ドライバに対するロードの数が多くなるほど、一般的にＱＯＲを改善する可能性が低くなる）、
ロードピンの数、
信号経路のネットファンアウト、
最適化前のローカルネットのスラック（例えば、最適化前のネットのスラック）、
最適化後のローカルネットのスラック（例えば、最適化後のネットのスラック）、
最適化前の設計全体のスラック（例えば、最適化前の回路設計の最大の負のスラックを有する信号経路）、
最適化後の設計全体のスラック（例えば、最適化後の回路設計の最大の負のスラックを有する信号経路）、
ドライバ／ロードピンのネットマンハッタン距離、
１ホップ隣接ピンのネット境界ボックスのサイズ（例えば、現在のインスタンス／ネットおよび現在のインスタンス／ネットに接続している各ピンの位置を含むように設定された長方形）、
制御セットの数（制御セットとは、同じ制御ピン種類を有し、同じ制御信号またはドライバ回路構成要素の同じインスタンスによって駆動される２つ以上の異なる回路構成要素の２つ以上の制御ピンを指す。制御セットは、フリップフロップ、ラッチ、スライスＲＡＭなどのようなシーケンス回路構成要素の制御および／またはクロックネットの独自のセットであってもよい。２つの回路構成要素の各々が同じ信号および／または同じドライバ回路構成要素（例えば、同じ回路構成要素の異なるインスタンス）によって駆動されている同じ制御ピン種類（例えば、セット、リセット、クロックイネーブル、クリア）を有する場合、２つの回路構成要素は、同じ制御セットにある。制御セットの数は、回路設計および／またはＩＣ内のピンの固有の組み合わせの数を指す。全てのフリップフロップは、各種類の制御信号を有するとは限らない）、
最適化されるネット周辺の配置密度（配置密度は、ネット周辺の輻輳を意味する。一例として、ネットの周りに１００個の場所があり、そのうちの８０個の場所がロジック要素によって占有されている場合、配置密度は、８０％または０．８である）、
最適化されるネット周辺の制御セットの密度（制御セットの密度は、ネット周辺の制御セットの輻輳を意味する。一例として、ＩＣは、現在のネットのスライス（例えば、論理ブロックの一部）を囲む１０個のスライスを含む。１０個のスライスが合計４０個の制御ネットを収容することができ、設計が１０個のスライス内の２０個の制御セットを使用する場合、制御セットの密度は、５０％または０．５である）、および
最適化の受け入れまたは棄却。
【００６６】
上記に示したように、特定の特徴は、一般的に、回路設計または評価されている信号経路の内部領域および周辺領域に関連し、他の特徴は、評価されている特定の信号経路に関連している。上記した特徴の１つ以上または全てを用いて、ニューラルネットワークを訓練することができる。
【００６７】
一実施形態において、上記の例示的な入力の各々は、両端値を含めて−１から１の連続スケールに正規化することができる。例示的な入力の各々は、試みた最適化処理の成功または失敗に影響を与える。また、上述した特徴は、選択された最適化処理の成功率に相関するが、互いに殆ど相関しない。
【００６８】
説明のために、システムが約２０万のデータポイントを有すると仮定する。各データポイントは、タイミングクリティカル信号経路とすることができ、上記の各特徴の値（例えば、１５個の入力および１つの出力）を有することができる。システムは、ニューラルネットワークモデルを構築するために、機械学習プロセスを実行する。機械学習は、各特徴が互いに殆ど相関しない場合に、複数の特徴を組み合わせることによって、より強力な統合モデルを作成することができる。出力値に関して、成功した最適化処理（例えば、受け入れられたもの）は、＋１で示され、失敗した試み（例えば、棄却されたもの）は、−１で示される。
【００６９】
前述のように、ニューラルネットワークは、利用可能な最適化処理の各々に対して個別に訓練される。上述のように、ニューラルネットワークを訓練した特定の最適化処理は、列挙された特徴のうち、第１の特徴として指定されてもよい。例えば、方法２００の第１の反復において、各データポイントは、ファンアウト最適化処理に使用され、ファンアウト最適化処理用のニューラルネットワークモデル、例えば訓練済みニューラルネットワークを生成する。方法２００の第２の反復において、各データポイントは、配置最適化処理に使用され、配置最適化処理用のニューラルネットワークモデルを生成する。
【００７０】
ブロック２１０において、システムは、選択された最適化処理用のニューラルネットワークを訓練する。訓練段階において、システムは、異なる層および／またはノードの係数を決定することによって、ニューラルネットワークモデルを構築する。ニューラルネットワークモデルは、入力層と、出力層と、１つ以上の隠れ層とを含む。１つ以上の実施形態において、ニューラルネットワークモデルは、２つの隠れ層を含む。しかしながら、使用される特定の隠れ層の数は、本開示に記載された実施形態を限定することを意図していない。これらの層は、完全に接続された層として実装することができる。
【００７１】
一態様において、システムは、ニューラルネットワークの重みが収束したまたは実質的に収束した時点まで、ニューラルネットワークを訓練することができる。例えば、ブロック２１０の訓練プロセスは、ニューラルネットワークに所望の入出力関係を提供する重みセットを決定することができる。一例として、学習プロセスは、ニューラルネットワークの重みを繰り返して調整することによって、入出力精度コスト関数が最適になるように入出力関係を変更することができる。したがって、訓練プロセスの目的は、ニューラルネットワークの入出力関係を変更することである。
【００７２】
ブロック２１５において、システムは、ニューラルネットワークモデルを生成する。例えば、システムは、プログラムコードを出力することができる。システムは、このプログラムコードを実行することによって、信号経路に対して選択された物理合成処理の実行がＱＯＲの改善をもたらす可能性を判断することができる。この訓練プロセスを用いて、多数の訓練回路設計を実験することによって、ニューラルネットワークモデルが生成される。生成されたニューラルネットワークモデルを実行することによって、特定の最適化の受け入れまたは棄却の確率を予測するための浮動小数点値を生成することができる。
【００７３】
構築およびテストの後、ユーザ回路設計上で動作するために、ニューラルネットワークモデルをＥＤＡシステムに組み込むことができる。ＥＤＡシステムは、選択された最適化処理用のニューラルネットワークモデルを実行することによって得られた結果に基づいて、回路設計の所定の信号経路に対して選択された最適化処理を実行するか否かを決定することができる。
【００７４】
図２は、例示の目的で提供されており、したがって、本開示に記載された構成を提供された特定の例に限定することを意図していない。１つ以上の実施形態において、ニューラルネットワークは、回路設計の電力消費量および／または電力管理特徴を用いて訓練されてもよい。これによって、ニューラルネットワークモデルの実行は、回路設計またはその一部の電力消費量が特定の最適化処理を適用することによって削減されている可能性を予測する値を提供することができる。１つ以上の他の実施形態において、ニューラルネットワークモデルは、ＱＯＲに関して本開示で説明されたように、電力消費量およびタイミングの両方を考慮して、回路設計（またはその一部）の電力消費量およびタイミングの両方が改善される可能性を予測する値を提供することができる。
【００７５】
図３は、物理合成を実行するための例示的な方法３００を示す。方法３００は、図１を参照して説明したシステムによって実行されてもよい。方法３００は、システムが複数のニューラルネットワークモデルを記憶し、各ニューラルネットワークモデルが特定の最適化処理の適用によってＱＯＲを改善する可能性を推定するように構成されている状態から開始することができる。
【００７６】
ブロック３０５において、システムは、物理合成最適化の要求を受信したか否かを判断する。受信した場合、方法３００は、ブロック３１０に進む。受信していない場合、方法３００は、図示のようにループし続けることができる。例えば、設計者は、回路設計を作成または編集することができる。１つ以上の実施形態において、回路設計を配置することができる。１つ以上の実施形態において、回路設計を配置して配線することができる。いずれの場合、回路設計は、１つ以上のタイミングクリティカル信号経路を含んでもよい。設計フローの１つ以上の段階を実行した後、設計者は、ＥＤＡシステムによる最適化処理の実行を要求することができる。
【００７７】
ブロック３１０において、システムは、処理する信号経路が存在するか否かを判断する。特に、システムは、タイミングを満しておらず、まだ最適化されていないまたは最適化される予定のない信号経路が存在するか否かを判断することができる。存在する場合、方法３００は、ブロック３１５に進む。存在しない場合、方法３００は、終了してもよい。
【００７８】
ブロック３１５において、システムは、分析する信号経路を選択することができる。例えば、システムは、タイミングクリティカル信号経路を選択することができる。１つ以上の実施形態において、システムは、最大の負のスラックを有する信号経路を選択することができる。方法３００の次の反復において、システムは、（最大の負のスラックから最小の負のスラックまで）重要度が減少する順に、タイミングクリティカル信号を選択し続けることができる。
【００７９】
ブロック３２０において、システムは、ブロック３１５で選択された信号経路に関連する回路設計の複数の特徴を決定する。１つ以上の実施形態において、システムは、選択された信号経路を評価し、以下の特徴の１つ以上または全てを決定することができる。これらの特徴は、ドライバインスタンスの種類、ドライバのピンの数、ドライバの固有の種類のロードの数、ロードピンの数、ネットファンアウト、最適化前のローカルネットのスラック、最適化前の設計全体のスラック、ドライバ／ロードピンのネットマンハッタン距離、１ホップ隣接ピンのネット境界ボックスサイズ、制御セットの数、最適化されるネット周辺の配置密度、および最適化されるネット周辺の制御セットの密度を含む。
【００８０】
上記に列挙された例示的な特徴は、図２を参照して説明された特徴を含むが、最適化処理を適用した後に決定された特徴を含まない。例えば、物理合成最適化を適用した後に得られたタイミング／スラックなどの特徴は、使用されない。さらに、各ニューラルネットワークモデルは、特定の物理合成最適化に適応されるため、物理合成最適化の種類が入力として必要とされない。１つ以上の実施形態において、最適化処理を適用した後に得られた特徴は、最適化を実行した後のＱＯＲおよび最適化を受け入れるか否かを判断するために使用されてもよい。
【００８１】
ブロック３２５において、システムは、考察される最適化処理を選択する。ブロック３３０において、システムは、選択された最適化処理に対してニューラルネットワークモデルを実行する。システムは、例えば、選択された最適化処理に対してニューラルネットワークモデルを選択する。システムは、ブロック３２０で決定された特徴を入力としてニューラルネットワークモデルに提供し、ニューラルネットワークモデルを通じてその特徴を処理することによって、ニューラルネットワークモデルを実行することができる。システムは、ニューラルネットワークモデルを実行する際に、信号経路に対して選択された最適化処理を実行することがＱＯＲの改善をもたらす可能性を示す浮動小数点値を返すことができる。
【００８２】
１つ以上の実施形態において、入力としてニューラルネットワークモデルに提供される様々な特徴の各々は、両端値を含めて−１から＋１の間の値に正規化することができる。この場合、ニューラルネットワークモデルの実行によって得られた結果も、両端値を含めて−１から＋１の間の値であり得る。−１に近い結果は、選択された最適化処理を実行することによって回路設計のＱＯＲを改善する可能性が非常に低いことを示している。＋１に近い結果は、選択された最適化処理を実行することによって回路設計のＱＯＲを改善する可能性が非常に高いことを示す。
【００８３】
ブロック３３５において、システムは、ブロック３３０で得られた結果が閾値を超えているか否かを判断することができる。超えている場合、方法３００は、ブロック３４０に進み、選択された回路設計の信号経路に対して選択された最適化処理を実行する。そうでない場合、方法３００は、ブロック３５５に進むことができる。その場合、システムは、信号経路に対して選択された最適化処理を実行しない。
【００８４】
１つ以上の実施形態において、システムは、ブロック３３５において変化する閾値を使用することができる。この閾値は、ユーザによってシステムのパラメータまたは優先値として調整または設定されてもよい。閾値が高くなるほど、最適化処理を実行するための実行時間が短くなる。閾値が高くなると、一般的に最適化が少なくなる。閾値が低くなるほど、最適化処理を実行するための実行時間が長くなるという犠牲を払って、回路設計のＱＯＲの改善が良くなる。
【００８５】
ブロック３４５において、システムは、ブロック３４０で実行された最適化を維持するか否かを判断する。システムは、本開示に説明したようにＱＯＲの尺度を計算することに基づいて、最適化を維持するか否かを判断することができる。ＱＯＲは、本開示に説明したように、タイミングの改善、電力消費量の改善、または両者の組み合わせに基づいて決定され得る。
【００８６】
別の態様において、上述したように、システムは、ブロック３２０の特徴のうちのいずれかの改善を選択された最適化処理のＱＯＲとして測定することができる。特徴の改善は、ＱＯＲの改善を示す。このような特徴の改善は、本開示に記載された他のＱＯＲ量、例えばタイミングに関連するＱＯＲ量および／または電力消費量に関連するＱＯＲ量のいずれかと組み合わせて（例えば、重み付けおよび／または合計を用いて）、最終ＱＯＲを生成することができる。システムは、ＱＯＲ（場合によって、最終ＱＯＲ）が改善されたか否かに基づいて、最適化を維持するか否かを判断する。ＱＯＲが改善されているという判断に応答して、方法３００は、ブロック３５５に進む。ＱＯＲが改善されていないという判断に応答して、方法３００は、ブロック３５０に進む。
【００８７】
ブロック３５０において、ＱＯＲが改善されていないという判断に応答して、システムは、ブロック３４０で実行された物理合成最適化を棄却する。システムは、例えば、回路設計をブロック３４０の最近の反復の前の状態に戻す。
【００８８】
ブロック３５５において、システムは、選択された信号経路に対して物理合成最適化の実行を継続するか否かを判断する。継続するという判断に応答して、方法３００は、ブロック３２５に戻り、選択された信号経路に対して次に実行される最適化処理を選択する。継続しないという判断に応答して、方法３００は、ブロック３１０に戻り、次に処理される信号を選択する。
【００８９】
１つ以上の実施形態において、システムは、選択された信号経路に対してシステムが実行できる各最適化処理を評価したという判断に応答して、ブロック３１０に戻り、異なる信号経路を処理することができる。別の例において、システムは、ブロック３１０に進み、現在の信号経路がタイミング制約を満たしているという判断、すなわち、タイミングクリティカルではないという判断に応答して、異なる信号経路を処理することができる。一態様において、システムは、各最適化処理が選択された信号経路の適用に対して評価されているか否かにかかわらず、信号経路がタイミングを満たしているという判断に応答して、ブロック３１０に進むことができる。
【００９０】
１つ以上の実施形態において、システムは、選択された信号経路に対して最大数の最適化処理を実行することができる。最適化処理の最大数は、最適化処理の総数または利用可能な最適化処理の総数より少ない数に設定することができる。したがって、選択された経路に対して最大数の最適化処理を実行する場合、方法３００は、ブロック３５５からブロック３１０に進み続ける。
【００９１】
説明のために、一例として、最適化処理の最大数を１に設定する。この場合、選択された信号経路に対してブロック３４０を１回実行した後、方法３００は、ブロック３５５から離れてブロック３１０に進む。この構成において、ニューラルネットワークモデルからの結果が閾値以下であるために適用されない最適化処理は、カウントされない。なお、最適化処理の最大数は、システム設定値として調整されてもよい。例えば、最適化処理の最大数は、１、２、３、４などに設定されてもよい。
【００９２】
１つ以上の実施形態において、システムは、ＱＯＲを改善するために、ニューラルネットワークモデルを用いて、処理すべき信号経路および／または処理すべき信号経路の順序を決定することができる。例えば、システムは、異なる最適化処理に対応する１つ以上のまたは全てのニューラルネットワークモデルを通じて複数の信号経路の各々の特徴を処理することによって、複数の信号経路を評価することができる。システムは、ニューラルネットワークモデルの実行結果に基づいて、ＱＯＲを改善する可能性が最も高い信号経路に対して操作することができる。次に、システムは、ＱＯＲを改善する可能性が２番目に高い信号経路上に対して操作することができる。以下同様である。
【００９３】
１つ以上の実施形態において、システムは、ＱＯＲを改善するために、所定の信号経路に適用される最適化処理の順序を決定することができる。例えば、システムは、選択された信号経路の特徴を決定し、選択された信号経路に対して複数のニューラルネットワークモデルまたは各ニューラルネットワークモデルを実行することができる。まず、システムは、ＱＯＲの改善をもたらす可能性が最も高い最適化処理を実行する。必要であれば、例えば信号経路が依然としてタイミングクリティカルである場合、システムは、ＱＯＲの改善をもたらす可能性が２番目に高い最適化処理を実行してもよい。以下同様である。システムは、信号経路がタイミングクリティカルでなくなるまで最適化処理を適用し続け、「最適化処理の総数よりも小さい整数値である上位「Ｎ」個の最適化処理を適用し、関連ニューラルネットワークモデルの実行から得られた結果が閾値を超えている最適化処理の全てを適用することができる。
【００９４】
本開示に記載された処理済み回路設計は、ＩＣに実装することができる。１つ以上の実施形態において、システムは、回路設計を処理することによって、構成ビットストリームを生成することができる。この構成ビットストリームをＩＣにロードすることによって、処理済み回路設計によって記述された回路をＩＣに物理的に実装するすることができる。
【００９５】
本開示に開示された様々な発明の概念の完全な理解を提供するために、説明の目的で、特定の命名法を使用した。しかしながら、本開示に使用された術語は、発明の構成の特定の態様を説明することのみを目的としており、限定することを意図していない。
【００９６】
本開示に定義された単数形「a」、「an」および「the」は、文脈がそうでないことを明白に示していない限り、複数形を含むことを意図する。本開示に定義された「他の」という用語は、少なくとも第２のまたはそれ以上を意味する。本開示に定義された用語「少なくとも１つ」、「１つ以上」および「および／または」は、特に明記しない限り、接続的動作および離接的動作の両方を表す非限定表現である。例えば、「Ａ、ＢおよびＣのうち少なくとも１つ」、「Ａ、ＢまたはＣのうち少なくとも１つ」、「Ａ、ＢおよびＣのうち１つ以上」、「Ａ、ＢまたはＣのうち１つ以上」、および「Ａ、Ｂおよび／またはＣ」という表現は、Ａのみ、Ｂのみ、Ｃのみ、ＡとＢ、ＡとＣ、ＢとＣ、またはＡとＢとＣを意味する。本開示に定義された「自動的に」という用語は、ユーザが介入しないことを意味する。
【００９７】
本開示に定義された「コンピュータ可読記憶媒体」という用語は、命令実行システム、機械または装置によって使用されるまたはそれらに関連して使用されるプログラムコードを含むまたは格納する記憶媒体を意味する。本開示に定義された「コンピュータ可読記憶媒体」それ自体は、一時的な伝搬信号ではない。コンピュータ可読記憶媒体は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせを含むが、これらに限定されない。本開示に記載されたメモリ素子は、コンピュータ可読記憶媒体の一例である。コンピュータ可読記憶媒体のより具体的且つ非網羅的な例として、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、消去可能なプログラマブル読み取り専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、ポータブル読み取り専用コンパクトディスク（ＣＤ−ＲＯＭ）、デジタルバーサタイルディスク（ＤＶＤ）、メモリースティック、フロッピー（登録商標）ディスク、機械的に暗号化された装置、例えばパンチカードまたは指示を記録した溝中の隆起構造、および前述したものの任意の適切な組み合わせを含むことができる。
【００９８】
本開示に定義された「出力」という用語は、物理的メモリ素子、例えば装置への格納、ディスプレイまたは他の周辺出力装置への書き込み、別のシステムへの送信、転送または輸出などを意味する。
【００９９】
本開示に定義された「if」という用語は、文脈に応じて、「〜の場合」または「〜のとき」または「〜に応答して」または「〜に応じて」を意味する。したがって、「判断された場合」または「前述した条件またはイベントが検出された場合」という表現は、文脈に応じて、「判断されたとき」または「判断に応じて」または「前述した条件またはイベントの検出に応じて」または「前述した条件またはイベントの検出に応答して」を意味するように解釈されてもよい。本開示に定義された「〜に応答して」という表現は、行動またはイベントに応答するまたは反応することを意味する。したがって、第２の動作が第１の動作「に応答して」実行される場合、第１の動作の発生と第２の動作の発生との間に因果関係が存在する。「〜に応答して」という用語は、因果関係を示す。
【０１００】
本開示に定義された「１つの実施形態」、「一実施形態」または類似の用語は、一実施形態に関連して説明された特定の特徴、構造または特性が本開示に記載された少なくとも１つの実施形態に含まれることを意味する。したがって、本開示の全体において、「１つの実施形態では」、「一実施形態では」および類似の表現は、必ずしも全て同じ実施形態を指すと限らない。
【０１０１】
本開示に定義された「プロセッサ」という用語は、プログラムコードに含まれる命令を実行するように構成された少なくとも１つのハードウエア回路を意味する。ハードウエア回路は集積回路であってもよい。プロセッサの例は、中央処理装置（ＣＰＵ）、アレイプロセッサ、ベクトルプロセッサ、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックアレイ（ＰＬＡ）、特定用途向け集積回路（ＡＳＩＣ）、プログラマブルロジック回路、グラフィック処理ユニット（ＧＰＵ）、コントローラなどを含むが、これらに限定されない。
【０１０２】
本開示に定義された用語「ユーザ」は、人間を意味する。本開示において、第１、第２などの用語を用いて様々な要素を説明することがある。これらの要素は、これらの用語によって限定されるべきではない。これらの用語は、特に明記しない限りまたは文脈がそうでないことを明白に示していない限り、ある要素を別の要素から区別するために用いられるのみである。
【０１０３】
コンピュータプログラム製品は、本開示に記載の発明の構成をプロセッサに実行させるためのコンピュータ可読プログラム命令を格納するコンピュータ可読記憶媒体を含むことができる。本開示において、「プログラムコード」という用語は、「コンピュータ可読プログラム命令」という用語と互換的に使用される。本開示に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、対応のコンピューティング／処理装置にまたはインターネット、ＬＡＮ、ＷＡＮおよび／または無線ネットワークなどのネットワークを介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および／またはエッジサーバを含むエッジ装置を含んでもよい。各コンピューティング／処理装置内のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、受信したコンピュータ可読プログラム命令を対応のコンピューティング／処理装置内のコンピュータ可読記憶媒体に転送して格納する。
【０１０４】
本開示に記載された本発明の構成の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ（ＩＳＡ）命令、機械命令、機械依存命令、マイクロコード、ファームウエア命令、またはオブジェクト指向プログラミング言語および／または手続き型プログラミング言語を含む１つ以上のプログラミング言語の組み合わせで書かれたソースコードまたはオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、状態設定データを含んでもよい。コンピュータ可読プログラム命令は、独立型ソフトウエアパッケージとして、ユーザのコンピュータ上で完全にまたは部分的に実行することができ、またはユーザのコンピュータ上で部分的におよびリモートコンピュータ上で部分的に実行することができ、またはリモートコンピュータまたはサーバ上で全体的に実行することができる。後者の場合、リモートコンピュータは、ＬＡＮまたはＷＡＮを含む任意種類のネットワークを介してユーザのコンピュータに接続することができ、（例えば、インターネットサービスプロバイダを使用するインターネットを介して）外部コンピュータに接続することができる。場合によって、例えば、プログラマブルロジック回路、ＦＰＧＡまたはＰＬＡを含む電子回路は、本開示に記載された本発明の構成の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
【０１０５】
本開示において、本発明の構成のいくつかの態様は、方法、装置（システム）およびコンピュータプログラム製品のフローチャート図および／またはブロック図を参照して説明される。理解すべきことは、フローチャート図および／またはブロック図の各ブロック並びにフローチャート図および／またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令、例えばプログラムコードによって実装され得ることである。
【０１０６】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供され、マシーンを生成することができる。したがって、これらの命令は、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置によって実行されると、フローチャートおよび／またはブロック図のブロックに規定された機能／動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に格納することもできる。これらの命令は、特定の方法で機能するようにコンピュータ、プログラマブルデータ処理装置および／または他の装置に命令することができる。したがって、命令を格納するコンピュータ可読記憶媒体は、フローチャートおよび／またはブロック図のブロックに規定された動作を実行する命令を含む製品を含む。
【０１０７】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他の装置にロードされ、コンピュータ、他のプログラマブル装置または他の装置上で一連の動作を実行させることができる。したがって、コンピュータ、他のプログラマブルな装置または他の装置上で実行される命令は、フローチャートおよび／またはブロック図のブロックに規定された機能／動作を実行することができる。
【０１０８】
添付図面中のフローチャートおよびブロック図は、本発明の構成の様々な態様に従って、システム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示している。この場合、フローチャートまたはブロック図の各ブロックは、規定された動作を実行するための１つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。
【０１０９】
いくつかの代替的な実装形態において、ブロックに記載の動作は、図面に示された順序とは異なる順序で行われてもよい。例えば、関連する機能に応じて、連続して示されている２つのブロックを実質的に同時に実行することができ、または逆の順序で実行することができる。他の例において、概して番号の昇順でブロックを実行しもよい。さらに他の例において、変動する順序でブロックを実行しもよい。したがって、得られた結果が格納され、後続のブロックまたはすぐ後続ではない他のブロックに利用されてもよい。ブロック図および／またはフローチャート図の各ブロック並びにブロック図および／またはフローチャート図のブロックの組み合わせは、特定の機能または動作もしくは専用ハードウエアとコンピュータ命令の組み合わせを実行する専用ハードウエアベースシステムによって実装されてもよい。
【０１１０】
添付の特許請求の範囲に含み得る全ての手段またはステップおよび機能要素に対応する構造、材料、動作および均等物は、明白に請求される他の要素と組み合わせて機能を実行するための任意の構造、材料または動作を含むように意図される。
【０１１１】
１つ以上の実施形態は、回路設計の物理合成方法に関する。一態様において、方法は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含む。
【０１１２】
一態様において、方法は、第２の物理合成最適化の有効性を示すように訓練された第２のニューラルネットワークモデルを通じて特徴を処理することと、第２のニューラルネットワークモデルからの結果に基づいて、第２の物理合成最適化を信号経路に選択的に適用することとを含む。
【０１１３】
別の態様において、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【０１１４】
別の態様において、方法は、第１の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、第１のニューラルネットワークモデルを訓練することを含む。
【０１１５】
別の態様において、信号経路の特徴は、正規化され、入力として第１のニューラルネットワークモデルに提供される。
【０１１６】
別の態様において、信号経路の特徴は、信号経路のロードピンの数を含む。
別の態様において、信号経路の特徴は、信号経路のドライバのピンの数を含む。
【０１１７】
別の態様において、信号経路の特徴は、信号経路のドライバの回路素子の種類を含む。
別の態様において、方法は、第１の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第１の物理合成最適化を選択することを含む。
【０１１８】
別の態様において、信号経路に適用される物理合成最適化のうち少なくとも２つの順序は、複数のニューラルネットワークモデルの実行から決定される。
【０１１９】
１つ以上の実施形態は、回路設計の物理合成システムに関する。一態様において、システムは、実行可能な動作を開始するように構成されたプロセッサを含む。実行可能な動作は、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含む。
【０１２０】
一態様において、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【０１２１】
他の態様において、信号経路の特徴は、正規化され、入力として第１のニューラルネットワークモデルに提供される。
【０１２２】
別の態様において、信号経路の特徴は、信号経路のロードピンの数を含む。
別の態様において、信号経路の特徴は、信号経路のドライバのピンの数を含む。
【０１２３】
別の態様において、信号経路の特徴は、信号経路のドライバの回路素子の種類を含む。
別の態様において、プロセッサは、実行可能な動作を開始するように構成され、
実行可能な動作は、さらに、第１の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第１の物理合成最適化を選択することを含む。
【０１２４】
別の態様において、信号経路に適用される少なくとも２つの物理合成最適化の順序は、複数のニューラルネットワークモデルの実行から決定される。
【０１２５】
１つ以上の実施形態は、回路設計の物理合成用のコンピュータプログラム製品に関する。一態様において、コンピュータプログラム製品は、プログラムコードを格納するコンピュータ可読記憶媒体を含む。プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、動作は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第１のニューラルネットワークモデルを通じて特徴を処理することとを含み、第１のニューラルネットワークモデルは、第１の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第１のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第１の物理合成最適化を選択的に実行することを含む。
【０１２６】
一態様において、第１の物理合成最適化は、第１のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【０１２７】
本開示に提供された本発明の構成の説明は、例示を目的としており、網羅的であることまたは開示された形態および例に限定されることを意図していない。本開示に使用された用語は、本発明の構成の原理、市場で見られる技術に対する実際の応用または技術改善を説明するため、および／または当業者が本開示に開示された発明の構成を理解できるようにするために選択された。記載された発明の構成の範囲および精神から逸脱することなく、修正および変形は、当業者に明らかであり得る。したがって、これらの特徴および実施例の範囲を示すものとして、前述の開示ではなく特許請求の範囲を参照すべきである。
【図１】
0006971320.tif 000002
【図２】
0006971320.tif 000003
【図３】
0006971320.tif 000004