特許第6971320号(P6971320)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ザイリンクス インコーポレイテッドの特許一覧

特許6971320ニューラルネットワークに基づいた回路設計の物理合成
<>
  • 特許6971320-ニューラルネットワークに基づいた回路設計の物理合成 図000002
  • 特許6971320-ニューラルネットワークに基づいた回路設計の物理合成 図000003
  • 特許6971320-ニューラルネットワークに基づいた回路設計の物理合成 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6971320
(24)【登録日】2021年11月4日
(45)【発行日】2021年11月24日
(54)【発明の名称】ニューラルネットワークに基づいた回路設計の物理合成
(51)【国際特許分類】
   G06F 30/39 20200101AFI20211111BHJP
   G06F 30/27 20200101ALI20211111BHJP
【FI】
   G06F30/39
   G06F30/27
【請求項の数】13
【全頁数】23
(21)【出願番号】特願2019-538355(P2019-538355)
(86)(22)【出願日】2017年11月30日
(65)【公表番号】特表2020-504403(P2020-504403A)
(43)【公表日】2020年2月6日
(86)【国際出願番号】US2017064026
(87)【国際公開番号】WO2018136156
(87)【国際公開日】20180726
【審査請求日】2020年10月15日
(31)【優先権主張番号】15/407,875
(32)【優先日】2017年1月17日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】ウン,アーロン
(72)【発明者】
【氏名】ダス,サビヤサーチ
(72)【発明者】
【氏名】バス,プラバル
【審査官】 堀井 啓明
(56)【参考文献】
【文献】 特開平07−056967(JP,A)
【文献】 特開平5−128085(JP,A)
【文献】 米国特許出願公開第2015/0347641(US,A1)
【文献】 米国特許出願公開第2014/0089880(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00−30/398
(57)【特許請求の範囲】
【請求項1】
回路設計の物理合成方法であって、
プロセッサタイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
前記プロセッサが2つ以上の複数の異なるニューラルネットワークモデルの各々を通じて前記特徴を処理することとを含み、前記2つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記プロセッサ前記2つ以上の複数の異なるニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第1の物理合成最適化を実行することを含む、方法。
【請求項2】
複数のニューラルネットワークモデルからの前記結果に基づいて、第2の物理合成最適化を前記信号経路に適用することとをさらに含む、請求項1に記載の方法。
【請求項3】
前記第1の物理合成最適化は、前記第1のニューラルネットワークモデルからの前記結果が閾値を超えているという判断に応答して、前記信号経路に対して実行される、請求項1に記載の方法。
【請求項4】
前記第1の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、前記第1のニューラルネットワークモデルを訓練することをさらに含む、請求項1に記載の方法。
【請求項5】
前記信号経路の前記特徴は、連続的なスケールに正規化され、入力として前記第1のニューラルネットワークモデルに提供される、請求項1に記載の方法。
【請求項6】
前記信号経路の前記特徴は、前記信号経路のロードピンの数、前記信号経路のドライバのピンの数、または前記信号経路の信号経路のドライバの回路素子の種類を含む、請求項1に記載の方法。
【請求項7】
前記信号経路に適用される前記複数の異なる物理合成最適化のうち少なくとも2つの順序は、前記2つ以上の複数の異なるニューラルネットワークモデルの実行から決定される、請求項に記載の方法。
【請求項8】
回路設計の物理合成システムであって、
実行可能な動作を開始するように構成されたプロセッサを含み、
前記実行可能な動作は、
タイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
2つ以上の複数の異なるニューラルネットワークモデルの各々を通じて特徴を処理することとを含み、前記2つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記2つ以上の複数の異なるニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第1の物理合成最適化を実行することを含む、システム。
【請求項9】
前記第1の物理合成最適化は、前記第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、前記信号経路に対して実行される、請求項に記載のシステム。
【請求項10】
前記信号経路の前記特徴は、連続的なスケールに正規化され、入力として前記第1のニューラルネットワークモデルに提供される、請求項に記載のシステム。
【請求項11】
前記信号経路の前記特徴は、前記信号経路のロードピンの数、前記信号経路のドライバのピンの数、または前記信号経路の信号経路のドライバの回路素子の種類を含む、請求項に記載のシステム。
【請求項12】
前記信号経路に適用される前記複数の異なる物理合成最適化のうち少なくとも2つの順序は、前記2つ以上の複数の異なるニューラルネットワークモデルの実行から決定される、請求項に記載のシステム。
【請求項13】
プログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品であって、前記プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、前記動作は、
プロセッサタイミング要件を満たさない前記回路設計の信号経路に関連する特徴を決定することと、
前記プロセッサが2つ以上の複数の異なるニューラルネットワークモデルの各々を通じて前記特徴を処理することとを含み、前記2つ以上の複数の異なるニューラルネットワークモデルの各ニューラルネットワークモデルは、複数の物理合成最適化の各々の有効性を示すように訓練され、
前記プロセッサ前記複数のニューラルネットワークモデルからの結果に基づいて、前記信号経路に対して前記複数の物理合成最適化のうち第1の物理合成最適化を実行することを含む、コンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示は、集積回路(IC)に関し、特にICに実装される回路設計の物理合成に関する。
【背景技術】
【0002】
背景
集積回路(IC)は、様々な機能を実行するように実装することができる。一部のICは、特定の機能を実行するようにプログラムすることができる。プログラムすることができるICの一例として、フィールドプログラマブルゲートアレイ(FPGA)が挙げられる。FPGAは、典型的には、プログラマブルタイルの配列を含む。これらのプログラマブルタイルは、例えば、入出力ブロック(IOB)、構成可能なロジックブロック(CLB)、専用ランダムアクセスメモリブロック(BRAM)、乗算器、デジタル信号処理ブロック(DSP)、プロセッサ、クロックマネージャ、遅延ロックループ(DLL)などを含むことができる。
【0003】
各プログラマブルタイルは、典型的には、プログラマブル相互接続回路とプログラマブルロジック回路の両方を含む。プログラマブル相互接続回路は、通常、プログラマブル相互接続点(PIP)によって相互接続された様々な長さを有する多数の相互接続線を含む。プログラマブルロジック回路は、例えば、関数発生器、レジスタ、算術論理などを含むことができるプログラマブル素子を用いて、ユーザ設計のロジック回路を実装する。
【0004】
プログラマブル相互接続回路およびプログラマブルロジック回路は、典型的には、構成データのストリームをプログラマブル素子の構成を定義する内部構成メモリセルにロードすることによってプログラムされる。構成データは、メモリから(例えば、外部PROMから)読み取ることができ、外部装置によってFPGAに書き込むことができる。個々のメモリセルの集団状態は、FPGAの機能を決める。
【0005】
別の種類のプログラマブルICとして、複合プログラマブルロジックデバイス(CPLD)が挙げられる。CPLDは、互いに接続され且つ相互接続スイッチマトリックスによって入出力(I/O)リソースに接続された2つ以上の「機能ブロック」を含む。CPLDの各機能ブロックは、プログラマブルロジックアレイ(PLA)およびプログラマブルアレイロジック(PAL)デバイスに使用されるものに類似する2レベルのAND/OR構造を含む。CPLDにおいて、構成データは、一般的に、オンチップの不揮発性メモリに格納される。一部のCPLDにおいて、構成データは、オンチップの不揮発性メモリに格納され、その後、初期構成(プログラミング)シーケンスの一部として揮発性メモリにダウンロードされる。
【0006】
これら全てのプログラマブルICに対して、デバイスの機能は、その目的のためにデバイスに提供され、構成ビットストリームと呼ばれるデータビットによって制御される。データビットは、揮発性メモリ(例えば、FPGAおよび一部のCPLD内の静的メモリセル)、不揮発性メモリ(たとえば、一部のCPLD内のフラッシュメモリ)、または他の種類のメモリセルに格納されてもよい。
【0007】
他のプログラマブルICは、デバイス上の様々な要素をプログラム可能に相互接続するための処理層、例えば金属層を適用することによってプログラムされる。これらのプログラマブルICは、マスクプログラマブルデバイスとして知られている。プログラマブルICは、別の方法で、例えばヒューズまたはアンチヒューズ技術を用いて実装されてもよい。「プログラマブルIC」という用語は、これらのデバイスを含み得るがこれらに限定されず、部分的にプログラム可能なデバイスをさらに含むことができる。例えば、ある種類のプログラマブルICは、ハードコードされたトランジスタロジックと、ハードコードされたトランジスタロジックをプログラム可能に相互接続するためのプログラマブルスイッチファブリックとの組み合わせを含む。
【0008】
FPGAのようなプログラマブルICに実装される回路設計を作製することは、複雑な工程である。複雑になる理由の1つは、しばしば回路設計に対して規定され、「タイミング制約」と呼ばれる厳しいタイミング要件である。設計者は、これらの厳しいタイミング制約を満たす回路設計を作成するために、かなりの時間を費やしている。
【0009】
一般的に、回路設計のタイミングは、信号経路(経路)ごとのスラック(slack)測定値として表すことができる。回路設計に関する「スラック」とは、経路の回路素子に到着する信号、例えばドライバからネットのロードに到着する信号の所要到着時間と、その経路の回路素子に到着する信号の推定到着時間との間の差である。正のスラックは、その経路が経路のタイミング要件を満たしていることを示す。信号は、タイミング要件によって指定された所要到着時間よりも早く目的地に到着すると推定される。負のスラックは、その経路が経路のタイミング要件を満たしていないことを示す。その経路のロードに到着する信号の推定到着時間は、タイミング要件によって指定された所要到着時間よりも遅い。
【発明の概要】
【課題を解決するための手段】
【0010】
概要
1つ以上の実施形態は、回路設計の物理合成方法に関する。一態様において、方法は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含むことができる。
【0011】
必要に応じて、方法は、第2の物理合成最適化の有効性を示すように訓練された第2のニューラルネットワークモデルを通じて特徴を処理することと、第2のニューラルネットワークモデルからの結果に基づいて、第2の物理合成最適化を信号経路に選択的に適用することとをさらに含んでもよい。
【0012】
必要に応じて、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【0013】
必要に応じて、方法は、第1の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、第1のニューラルネットワークモデルを訓練することをさらに含んでもよい。
【0014】
必要に応じて、信号経路の特徴は、正規化され、入力として第1のニューラルネットワークモデルに提供されてもよい。
【0015】
必要に応じて、信号経路の特徴は、信号経路のロードピンの数を含んでもよい。
必要に応じて、信号経路の特徴は、信号経路のドライバのピンの数を含んでもよい。
【0016】
必要に応じて、信号経路の特徴は、信号経路のドライバの回路素子の種類を含んでもよい。
【0017】
必要に応じて、方法は、第1の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第1の物理合成最適化を選択することをさらに含んでもよい。
【0018】
必要に応じて、信号経路に適用される物理合成最適化のうち少なくとも2つの順序は、複数のニューラルネットワークモデルの実行から決定されてもよい。
【0019】
1つ以上の実施形態は、回路設計の物理合成システムに関する。一態様において、システムは、実行可能な動作を開始するように構成されたプロセッサを含む。実行可能な動作は、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含む。
【0020】
必要に応じて、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【0021】
必要に応じて、信号経路の特徴は、正規化され、入力として第1のニューラルネットワークモデルに提供されてもよい。
【0022】
必要に応じて、信号経路の特徴は、信号経路のロードピンの数を含んでもよい。
必要に応じて、信号経路の特徴は、信号経路のドライバのピンの数を含んでもよい。
【0023】
必要に応じて、信号経路の特徴は、信号経路のドライバの回路素子の種類を含んでもよい。
【0024】
必要に応じて、プロセッサは、プロセッサは、実行可能な動作を開始するように構成され、実行可能な動作は、さらに、第1の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第1の物理合成最適化を選択することを含んでもよい。
【0025】
必要に応じて、信号経路に適用される少なくとも2つの物理合成最適化の順序は、複数のニューラルネットワークモデルの実行から決定されてもよい。
【0026】
1つ以上の実施形態は、回路設計の物理合成用のコンピュータプログラム製品に関する。一態様において、コンピュータプログラム製品は、プログラムコードを格納するコンピュータ可読記憶媒体を含む。プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、動作は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含む。
【0027】
必要に応じて、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行されてもよい。
【0028】
この概要は、単に特定の概念を紹介するために提供され、特許請求の範囲に記載されている重要なまたは本質的な特徴を特定するために提供されたものではない。本発明の構成の他の特徴は、添付の図面および以下の詳細な説明から明らかになるであろう。
【0029】
本発明の構成は、例示として添付の図面に示されている。しかしながら、これらの図面は、本発明の構成を図示された特定の実現例のみに限定するように解釈すべきではない。様々な態様および利点は、以下の詳細な説明を検討し、図面を参照することによって、明らかになるであろう。
【図面の簡単な説明】
【0030】
図1】物理合成を実行するための例示的システムを示す図である。
図2】ニューラルネットワークモデルを生成するための例示的な方法を示す図である。
図3】物理合成を実行するための例示的な方法を示す図である。
【発明を実施するための形態】
【0031】
詳細な説明
本開示は、新規な特徴を定義する特許請求の範囲で終わるが、本開示に記載された様々な特徴は、図面と併せて以下の説明を考慮することによってよりよく理解されると考えられる。本開示に記載のプロセス、機械、製造、およびそれらの変形は、説明の目的で提供されている。本開示に記載された特定の構造上の詳細および機能上の詳細は、限定として理解すべきではなく、単に特許請求の範囲の基礎としておよび記載された特徴を実際に様々な方法で適切に詳述した構造に適用することを当業者に教えるための代表的な基礎として理解すべきである。さらに、本開示に使用された用語および表現は、限定することを意図するものではなく、むしろ記載された特徴の理解可能な説明を提供することを意図している。
【0032】
本開示は、集積回路(IC)に関し、特に回路設計の物理合成に関する。1つ以上の実施形態は、人工ニューラルネットワークを用いて、回路設計に対して物理合成プロセスを実行することに関する。回路設計は、IC内の実装に適している。例えば、回路設計は、プログラマブルIC、特定用途向けIC(ASIC)などに実装されてもよい。プログラマブルICの例は、フィールドプログラマブルゲートアレイ(FPGA)、複合プログラマブルロジックデバイス(CPLD)、プログラムコードを実行するように構成されたプロセッサとプログラマブル回路とを含むことを特徴とするシステムオンチップを含み得るがこれらに限らない。
【0033】
人工ニューラルネットワークまたは単に「ニューラルネットワーク」は、生物学的脳をモデルにした計算アーキテクチャを指す。ニューラルネットワークにおいて、ニューロンと呼ばれるノードが、相互接続され、集合的に動作することによって、入力データを処理することができる。異なる種類のニューラルネットワークの例は、畳み込みニューラルネットワーク(Convolutional Neural Network)、リカレントニューラルネットワーク(Recurrent Neural Network)、ディープビリーフネットワーク(Deep Belief Network)、制限付きボルツマンマシン(Restricted Boltzman Machine)などを含むがこれらに限定されない。ニューラルネットワークを用いて、複雑な入力データから「特徴」を抽出することができる。ニューラルネットワークは、複数の層を含むことができる。各層は、入力データを受け取り、各層の入力データを処理することによって出力データを生成することができる。
【0034】
IC内に回路設計を実装する場合、電子設計自動化(EDA)システムは、設計フローを通じて回路設計を処理する。「設計フロー」という用語は、回路設計に対して合成、マッピング、配置および配線などの操作を実行することを意味する。また、EDAシステムは、構成ビットストリームを様々な種類のICにロードするために、構成ビットストリームの生成を実行することができる。例えば、設計フローの終点またはその近くに配置した後、EDAシステムまたは別の設計ツールは、制定されたタイミング制約を満たさない回路設計の信号経路に対して1つ以上の物理合成最適化を実行することができる。物理合成最適化(以下、「最適化処理」という)は、配置または配線された後の回路設計に対して実行されるものである。以下に最適化処理の特定の例を説明するが、最適化処理は、一般的に、配置、配線、またはその両方の変更を指す。
【0035】
従来のEDAシステムは、タイミング制約を満たさない信号経路(「クリティカル」または「タイミングクリティカル」信号経路と呼ばれる)のタイミングを改善するために、回路設計に複数の異なる最適化処理を適用することができる。本開示において、信号経路の改善は、インスタンス(例えば、ネットのドライバまたはロードなどの回路素子および/または回路素子の種類)、ピン、または信号経路のネットの性質または特徴(例えば、後述するような結果の品質(QOR))を改善することを指す。
【0036】
信号経路に対して最適化処理を実際に実行し、その後結果を測定する前には、信号経路のタイミングまたは回路設計のQORを実際に改善する特定の最適化処理または最適化処理の組み合わせが分からない。しかしながら、殆どの場合、回路設計に最適化処理を適用すると、性能の向上とは対照的に、回路設計の性能が低下する。失敗として棄却される最適化処理を実行した後、EDAシステムは、変更を破棄し、回路設計を、最適化処理を適用する前の状態に戻す。したがって、失敗した最適化処理の実行に費やされた時間は、事実上無駄になる。
【0037】
QORが最も重要である場合、従来のEDAシステムは、回路設計に対して利用可能な各種類の最適化処理を試みる。しかしながら、この手法によって、実行時間が許容できないほど長くなる可能性がある。従来のEDAシステムは、最適化処理を実行するための実行時間を短縮しようと試みるが、一般的にQORを犠牲にして行われ、例えば、より低いQORをもたらす。
【0038】
したがって、本開示に記載されている1つ以上の実施形態は、ニューラルネットワークを用いて、回路設計に最適化処理を適用するか否かを判断することに関する。システムは、ニューラルネットワークモデルの実行によって得られた結果を評価し、ニューラルネットワークモデルを用いて生成された結果に基づいて、信号経路に最適化処理を選択的に適用することができる。
【0039】
本開示に記載の実施形態は、考察されている特定の最適化処理の種類に依存しない。むしろ、実施形態は、回路設計の信号経路に対して様々な異なる最適化処理のいずれかを実行する時間を判断することができる。システムは、より高いQORを生成する可能性が高いと考えられる最適化処理のみを適用することができる。同様に、システムは、より高いQORを生成する可能性が低いと考えられる最適化処理をスキップまたは省略することができる。したがって、システムは、より低いQORを生成すると考えられる最適化処理をスキップすることによって実行時間を最小化することができ、および/またはより高いQORを生成する可能性が高いと考えられる最適化処理を実行することによってQORを最大化することができる。
【0040】
1つ以上の実施形態は、データ処理システムがニューラルネットワークモデルを用いて、回路設計を実装するおよび/または回路設計に対して物理合成を実行する方法に関する。1つ以上の実施形態は、ニューラルネットワークモデルを用いて、回路設計を実装するためにおよび/または回路設計に対して物理合成を実行するように構成されたシステムに関する。1つ以上の実施形態は、ニューラルネットワークモデルを用いて、回路設計を実装するおよび/または回路設計に対して物理合成を実行するためのプログラムコードを格納するコンピュータ可読記憶媒体を含むコンピュータプログラム製品に関する。
【0041】
本発明の構成のさらなる態様は、図面を参照して以下により詳細に説明される。図示を簡単且つ明瞭にするために、図面に示される要素は、必ずしも一定の縮尺で描かれていない。例えば、明瞭さのために、いくつかの要素の寸法は、他の要素に対して拡大される場合がある。さらに、適切な場合に、参照番号は、図面に繰り返して使用され、対応、同様または類似の特徴を示す。
【0042】
図1は、物理合成を実行するための例示的なデータ処理システム(システム)100を示す。システム100は、本開示に記載された様々な動作を実行するように構成されるEDAシステムの例示的な実装である。システム100は、インターフェイス回路115を介してメモリ110に連結された少なくとも1つのプロセッサ105を含む。インターフェイス回路115は、例えば、入出力(I/O)サブシステム、I/Oインターフェイス、バスシステム、メモリインターフェイス、または他の適切な回路として実装されてもよい。システム100は、(「プログラムコード」とも呼ばれる)コンピュータ可読命令をメモリ110に格納する。メモリ110は、コンピュータ可読記憶媒体の一例である。プロセッサ105は、インターフェイス回路115を介してメモリ110から入手できるプログラムコードを実行する。
【0043】
メモリ110は、1つ以上の物理メモリ装置、例えば、ローカルメモリおよび1つ以上の大容量記憶装置を含むことができる。ローカルメモリは、プログラムコードの実際の実行中に一般に使用されるランダムアクセスメモリ(RAM)または他の非永続メモリ装置を指す。大容量記憶装置は、ハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、または他の永続データ記憶装置として実装することができる。また、実行中に大容量記憶装置からプログラムコードを検索する回数を減らすために、システム100は、少なくとも一部のプログラムコードを一時的に記憶する1つ以上のキャッシュメモリ(図示せず)をさらに含んでもよい。
【0044】
システム100は、1つ以上のI/O装置120に連結することができる。I/O装置120の例として、キーボード、ディスプレイ装置、ポインティング装置および1つ以上のネットワークアダプタなどを含み得るが、これらに限定されない。ネットワークアダプタは、システム100を他のシステム、コンピュータシステム、リモートプリンタおよび/またはリモート記憶装置に連結することができる。ネットワークアダプタの例として、モデム、イーサネット(登録商標)カード、バスアダプタ、無線トランシーバおよび/または無線機などを含み得るが、これらに限定されない。システム100は、例示以外の1つ以上の追加のI/O装置を含んでもよい。本開示に記載のI/O装置は、直接にまたはI/Oコントローラを介在してシステム100に連結されてもよい。
【0045】
図示のように、メモリ110は、オペレーティングシステム125、1つ以上のアプリケーション130、および様々な異なる種類のデータ135を格納することができる。アプリケーション130は、例えば、EDAアプリケーションであってもよい。1つ以上の実施形態において、アプリケーション130は、本開示に記載された最適化処理を含む物理合成を実行するように構成されている。1つ以上の実施形態において、アプリケーション130は、物理合成を含む設計フローの1つ以上または全ての段階を実行するように構成されている。一態様において、実行可能なプログラムコードの形で実装されているオペレーティングシステム125およびアプリケーション130は、システム100によって、より具体的にはプロセッサ105によって実行され、本開示に記載された様々な動作を実行する。したがって、オペレーティングシステム125およびアプリケーション130は、システム100の一部として考えられてもよい。
【0046】
オペレーティングシステム125、アプリケーション130、およびシステム100によって使用され、生成されおよび/または操作される任意のデータ(例えば、データ135)は、システム100の一部として使用されるときにまたはICに与えられ且つIC内に実装されるときに機能を付与する機能性データ構造である。「データ構造」とは、データモデルのデータ編成を物理メモリに物理的に実装することを指す。したがって、データ構造は、メモリ内の特定の電気的または磁気的な構造素子を含む。データ構造は、メモリに格納され、プロセッサによって使用されるデータに物理的な編成を加える。
【0047】
システム100は、実装される特定の装置の種類に応じて、図1に示されているものより少ない構成要素、または図1に示されていない追加の構成要素を含むことができる。また、含まれる特定のオペレーティングシステムおよび/またはアプリケーションは、含まれるネットワークアダプタと同様に、装置の種類によって異なってもよい。さらに、例示された1つ以上の構成要素は、別の構成要素に組み込まれてもよく、別の構成要素の一部を形成してもよい。例えば、プロセッサは、少なくともいくつかのメモリを含んでもよい。
【0048】
図1の例は、2つの異なる段階を示している。1つの段階において、システム100またはシステム100に類似する別のシステムは、機械学習140を実行することができる。システム100は、訓練データ145を用いて機械学習140を実行することができる。一態様において、訓練データ145は、複数の訓練回路設計、任意の物理合成最適化を適用する前の訓練回路設計の特徴、および1つ以上の異なる最適化処理を適用した後の訓練回路設計の特徴を含む。
【0049】
プロセッサ105は、トレーニングデータ145を用いて、機械学習140、例えば、ニューラルネットワーク訓練を実行することによって、ニューラルネットワークモデル150を生成することができる。1つ以上の実施形態において、プロセッサ105は、物理合成中に実行され得る異なる最適化処理の各々に対してニューラルネットワークモデル150を生成することができる。機械学習140は、図2を参照してより詳細に説明される。
【0050】
第2または異なる段階において、システム100は、物理合成155を実行することができる。図1の例において、プロセッサ105は、メモリ110から回路設計160を読み取り、設計フローの1つ以上の段階を実行することによって回路設計160を処理することができる。回路設計160(および後述の回路設計165)は、ハードウエア記述言語を用いて、例えばレジスタ転送レベル(RTL)表現またはネットリストとして特定することができる。
【0051】
さらに、本開示に記載されたように、プロセッサ105は、1つ以上のニューラルネットワークモデル150を用いて、回路設計160に対して1つ以上の最適化処理を実行することができる。プロセッサ105は、回路設計160を処理することにより、回路設計160と異なるものを生成し、回路設計165として出力され示される。回路設計165は、回路設計160と機能的に同等であるが、システム100が回路設計160に対して1つ以上の最適化処理を実行することによって生成されたものであるという点で異なる。
【0052】
説明のために、一例として、回路設計160は、設計フローの一部として、合成、場合によって論理的最適化、および配置を受ける。回路設計160は、まだ配線されていない。回路設計160は、タイミングクリティカルではない1つ以上の信号経路を含む。本開示に定義された「信号経路」という用語は、同期ドライバ回路素子と1つ以上の同期ロード回路素子とを有する回路設計の一部を意味する。また、信号経路は、ドライバ(またはソース)とロードとの間に1つ以上の非同期回路素子を含んでもよい。
【0053】
システム100は、タイミング要件を満たさない回路設計160から信号経路を選出することができる。また、システム100は、QORを改善するために、1つ以上の最適化処理を信号経路に適用するか否かを判断することができる。システム100は、回路設計の1つ以上の特徴を決定し、これらの特徴を入力としてニューラルネットワークモデル150に提供し、ニューラルネットワークモデル150を実行することができる。ニューラルネットワークモデル150の実行によって得られた結果に基づいて、システムは、最適化処理を信号経路に適用するか否かを判断する。
【0054】
様々な方法でQORを測定することができる。1つ以上の実施形態において、QORの改善は、信号経路のタイミングの改善を意味する。タイミングの改善とは、信号経路のスラックの負数値がより小さくなり、その結果、信号経路がそれほどタイミングクリティカルではなくなるまたはタイミングクリティカルではなくなることを意味する。別の例において、QORの改善は、回路設計および/またはICにおいてタイミングを満たさない信号経路の数が減少することを意味する。
【0055】
他の例示的なQORは、回路設計および/またはICの電力消費量が改善された(例えば、低減された)か否かである。QORの尺度として電力消費量を使用する場合、電力消費量の評価は、回路設計またはICの全体、閾値量を超える電力を消費する特定のモジュールまたは他のホットスポットなどに適用されてもよい。別の例示的なQORは、回路設計および/またはICの面積使用量である。この場合、面積使用量の減少は、QORの改善を意味する。なお、QORは、前述した例示のいずれか、または前述した例示の1つ以上もしくは全ての組合せであってもよい。例えば、QORは、記載された1つ以上または全てのQOR量に重みを付け、重み付けられた量を合計することによって決定されてもよい。1つ以上の実施形態において、特定の最適化処理の結果を維持するかまたは棄却するかは、得られたQORに基づいて決定される。
【0056】
本開示に定義された「ニューラルネットワークモデル」という用語は、データ処理システムおよび/または専用のニューラルネットワークプロセッサによって実行可能な訓練済み人工ニューラルネットワークの実装を意味する。1つ以上の実施形態において、ニューラルネットワークモデルは、プロセッサ実行可能なプログラムコード、例えばオブジェクトコードとして実装され、データ構造として格納される。一例において、ニューラルネットワークモデルは、フィードフォワードニューラルネットワークとして実装されてもよい。フィードフォワードニューラルネットワークにおいて、ニューラルネットワークのニューロンは、他のニューロンと連結するためのリンクを有する。これらのリンクは、ニューラルネットワークを通って一方向のみ、すなわち順方向に延在する。
【0057】
1つ以上の実施形態において、システム100は、複数の異なる最適化処理を実行することができる。例示的な最適化処理は、回路設計160のネットリストに対する変更、回路設計160のタイミング制約に対する変更、回路設計160に対する配置変更、および/または回路設計160を配線する場合に回路設計160に対する配線変更を含むが、これらに限定されない。システム100は、提供された1つ以上の例または各々の例に対して、複数のより具体的な最適化処理を実行するように構成されてもよい。例えば、システム100は、2つ以上の異なる種類のネットリスト変更または2つ以上の配置変更を実行することができる。この場合、最適化処理の追加の例は、再マッピング、再構築、再配線、プッシュおよび/またはプル技術、複製、信号並べ替え、タイミング変更、インスタンス(例えば、ルックアップテーブル)挿入などを含むが、これらに限定されない。
【0058】
システム100は、システム100が実行することができる異なる種類の最適化処理の各々のために、ニューラルネットワークモデル150を生成して格納することができる。システム100は、最適化処理を実行するために、信号経路の特徴を1つ以上のニューラルネットワークモデル150に提供し、ニューラルネットワークモデル150の実行結果が少なくともQORの改善の最小可能性を示す判断に応答して信号経路に対して最適化処理を実行する。例えば、各ニューラルネットワークモデル150は、特定の最適化処理の可能な有効性を示すように構成されている。したがって、ニューラルネットワークモデル150の実行から得られた結果に基づいて、QORの改善をもたらす可能性が低い最適化処理は、物理合成中にスキップまたは省略することができる。
【0059】
1つ以上の実施形態において、システム100は、QORを改善するために、ニューラルネットワークモデル150を用いて、処理される信号経路および/または処理される信号経路の順序を決定することができる。例えば、システム100は、ニューラルネットワークモデル150によってQORを改善する可能性が低いと示された信号経路に対して最適化処理を実行しないように選択することができる。他の場合において、システム100は、QORを改善する可能性が低いと示された信号経路を処理する前に、QORを改善する可能性が高いと示された信号経路を処理することを選択することができる。
【0060】
1つ以上の実施形態において、システム100は、QORを改善するために、所定の信号経路に適用される最適化処理の順序を決定することができる。例えば、システム100は、ニューラルネットワークモデル150を用いて複数の最適化処理を評価し、QORの改善をもたらす可能性がない物理合成最適化を適用する前に、QORの改善をもたらす可能性がある最適化処理を特定の信号経路に適用することができる。
【0061】
図2は、ニューラルネットワークモデルを生成するための例示的な方法200を示す。図2に示された方法は、図1に関連して説明した機械学習を実行することによって、ニューラルネットワークを訓練し、ニューラルネットワークモデルを生成する。方法200は、図1のシステム100と同一または類似のアーキテクチャを有するデータ処理システムを用いて実行されてもよい。
【0062】
方法200は、システムによって実行され、信号経路に対して特定の最適化処理の適用によってQORの改善をもたらす可能性を決定するように構成されたニューラルネットワークモデルを作成することができる。方法200は、特定の最適化処理に対応する1つのニューラルネットワークモデルを生成することに関するため、必要に応じて、方法200を繰り返すことによって、所定のEDAシステムが実行可能な他の特定の最適化処理および/または各最適化処理用のさらなるニューラルネットワークモデルを生成することができる。
【0063】
1つ以上の実施形態において、ニューラルネットワークライブラリを用いて、ニューラルネットワークモデルを生成することができる。使用可能なニューラルネットワークライブラリの一例として、コペンハーゲン大学のコンピュータサイエンス学科から入手可能な「高速人工ニューラルネットワーク」(Fast Artificial Neural Network:FANN)が挙げられる。本開示に記載された例は、説明の目的のためのものであり、限定のためのものではない。なお、他のニューラルネットワークライブラリを用いて、ニューラルネットワークモデルを生成することもできる。
【0064】
ブロック205において、複数の訓練回路設計から、タイミングクリティカル信号経路に関連する特徴(例えば、訓練データ145)を決定する。例えば、回路設計のライブラリから、タイミングクリティカル信号経路を識別することができる。識別された信号経路の各々に対して、選択された最適化処理を適用する前に複数の特徴を決定することができる。最適化処理の適用に続いて、最適化処理を受け入れるかまたは棄却するかを含む1つ以上の追加の特徴が決定される。一実施形態において、訓練のために、最適化を受け入れるかまたは棄却するかは、設計者、例えばユーザによって判断されてもよい。別の実施形態において、訓練のために、最適化を受け入れるかまたは棄却するかは、本開示に記載のQORに従って決定されてもよい。QORは、システムによって自動的に決定されてもよい。
【0065】
ブロック205において訓練データの一部として決定された特徴の例は、以下のものを含むが、これらに限らない。例えば、
最適化処理の名前(ファンアウト最適化(fanout optimization)、配置最適化、リタイミング、再配線、リタイミング、DSP最適化、BRAM最適化など)、
ドライバインスタンスの種類(例えば、ルックアップテーブルおよびフリップフロップなどの信号経路のソースまたはドライバの回路素子の種類)、
ドライバのピンの数(入力ピンの数が多くなるほど、一般的にQORを改善する可能性が低くなる)、
ドライバに対する固有種類のロードの数(ドライバに対するロードの数が多くなるほど、一般的にQORを改善する可能性が低くなる)、
ロードピンの数、
信号経路のネットファンアウト、
最適化前のローカルネットのスラック(例えば、最適化前のネットのスラック)、
最適化後のローカルネットのスラック(例えば、最適化後のネットのスラック)、
最適化前の設計全体のスラック(例えば、最適化前の回路設計の最大の負のスラックを有する信号経路)、
最適化後の設計全体のスラック(例えば、最適化後の回路設計の最大の負のスラックを有する信号経路)、
ドライバ/ロードピンのネットマンハッタン距離、
1ホップ隣接ピンのネット境界ボックスのサイズ(例えば、現在のインスタンス/ネットおよび現在のインスタンス/ネットに接続している各ピンの位置を含むように設定された長方形)、
制御セットの数(制御セットとは、同じ制御ピン種類を有し、同じ制御信号またはドライバ回路構成要素の同じインスタンスによって駆動される2つ以上の異なる回路構成要素の2つ以上の制御ピンを指す。制御セットは、フリップフロップ、ラッチ、スライスRAMなどのようなシーケンス回路構成要素の制御および/またはクロックネットの独自のセットであってもよい。2つの回路構成要素の各々が同じ信号および/または同じドライバ回路構成要素(例えば、同じ回路構成要素の異なるインスタンス)によって駆動されている同じ制御ピン種類(例えば、セット、リセット、クロックイネーブル、クリア)を有する場合、2つの回路構成要素は、同じ制御セットにある。制御セットの数は、回路設計および/またはIC内のピンの固有の組み合わせの数を指す。全てのフリップフロップは、各種類の制御信号を有するとは限らない)、
最適化されるネット周辺の配置密度(配置密度は、ネット周辺の輻輳を意味する。一例として、ネットの周りに100個の場所があり、そのうちの80個の場所がロジック要素によって占有されている場合、配置密度は、80%または0.8である)、
最適化されるネット周辺の制御セットの密度(制御セットの密度は、ネット周辺の制御セットの輻輳を意味する。一例として、ICは、現在のネットのスライス(例えば、論理ブロックの一部)を囲む10個のスライスを含む。10個のスライスが合計40個の制御ネットを収容することができ、設計が10個のスライス内の20個の制御セットを使用する場合、制御セットの密度は、50%または0.5である)、および
最適化の受け入れまたは棄却。
【0066】
上記に示したように、特定の特徴は、一般的に、回路設計または評価されている信号経路の内部領域および周辺領域に関連し、他の特徴は、評価されている特定の信号経路に関連している。上記した特徴の1つ以上または全てを用いて、ニューラルネットワークを訓練することができる。
【0067】
一実施形態において、上記の例示的な入力の各々は、両端値を含めて−1から1の連続スケールに正規化することができる。例示的な入力の各々は、試みた最適化処理の成功または失敗に影響を与える。また、上述した特徴は、選択された最適化処理の成功率に相関するが、互いに殆ど相関しない。
【0068】
説明のために、システムが約20万のデータポイントを有すると仮定する。各データポイントは、タイミングクリティカル信号経路とすることができ、上記の各特徴の値(例えば、15個の入力および1つの出力)を有することができる。システムは、ニューラルネットワークモデルを構築するために、機械学習プロセスを実行する。機械学習は、各特徴が互いに殆ど相関しない場合に、複数の特徴を組み合わせることによって、より強力な統合モデルを作成することができる。出力値に関して、成功した最適化処理(例えば、受け入れられたもの)は、+1で示され、失敗した試み(例えば、棄却されたもの)は、−1で示される。
【0069】
前述のように、ニューラルネットワークは、利用可能な最適化処理の各々に対して個別に訓練される。上述のように、ニューラルネットワークを訓練した特定の最適化処理は、列挙された特徴のうち、第1の特徴として指定されてもよい。例えば、方法200の第1の反復において、各データポイントは、ファンアウト最適化処理に使用され、ファンアウト最適化処理用のニューラルネットワークモデル、例えば訓練済みニューラルネットワークを生成する。方法200の第2の反復において、各データポイントは、配置最適化処理に使用され、配置最適化処理用のニューラルネットワークモデルを生成する。
【0070】
ブロック210において、システムは、選択された最適化処理用のニューラルネットワークを訓練する。訓練段階において、システムは、異なる層および/またはノードの係数を決定することによって、ニューラルネットワークモデルを構築する。ニューラルネットワークモデルは、入力層と、出力層と、1つ以上の隠れ層とを含む。1つ以上の実施形態において、ニューラルネットワークモデルは、2つの隠れ層を含む。しかしながら、使用される特定の隠れ層の数は、本開示に記載された実施形態を限定することを意図していない。これらの層は、完全に接続された層として実装することができる。
【0071】
一態様において、システムは、ニューラルネットワークの重みが収束したまたは実質的に収束した時点まで、ニューラルネットワークを訓練することができる。例えば、ブロック210の訓練プロセスは、ニューラルネットワークに所望の入出力関係を提供する重みセットを決定することができる。一例として、学習プロセスは、ニューラルネットワークの重みを繰り返して調整することによって、入出力精度コスト関数が最適になるように入出力関係を変更することができる。したがって、訓練プロセスの目的は、ニューラルネットワークの入出力関係を変更することである。
【0072】
ブロック215において、システムは、ニューラルネットワークモデルを生成する。例えば、システムは、プログラムコードを出力することができる。システムは、このプログラムコードを実行することによって、信号経路に対して選択された物理合成処理の実行がQORの改善をもたらす可能性を判断することができる。この訓練プロセスを用いて、多数の訓練回路設計を実験することによって、ニューラルネットワークモデルが生成される。生成されたニューラルネットワークモデルを実行することによって、特定の最適化の受け入れまたは棄却の確率を予測するための浮動小数点値を生成することができる。
【0073】
構築およびテストの後、ユーザ回路設計上で動作するために、ニューラルネットワークモデルをEDAシステムに組み込むことができる。EDAシステムは、選択された最適化処理用のニューラルネットワークモデルを実行することによって得られた結果に基づいて、回路設計の所定の信号経路に対して選択された最適化処理を実行するか否かを決定することができる。
【0074】
図2は、例示の目的で提供されており、したがって、本開示に記載された構成を提供された特定の例に限定することを意図していない。1つ以上の実施形態において、ニューラルネットワークは、回路設計の電力消費量および/または電力管理特徴を用いて訓練されてもよい。これによって、ニューラルネットワークモデルの実行は、回路設計またはその一部の電力消費量が特定の最適化処理を適用することによって削減されている可能性を予測する値を提供することができる。1つ以上の他の実施形態において、ニューラルネットワークモデルは、QORに関して本開示で説明されたように、電力消費量およびタイミングの両方を考慮して、回路設計(またはその一部)の電力消費量およびタイミングの両方が改善される可能性を予測する値を提供することができる。
【0075】
図3は、物理合成を実行するための例示的な方法300を示す。方法300は、図1を参照して説明したシステムによって実行されてもよい。方法300は、システムが複数のニューラルネットワークモデルを記憶し、各ニューラルネットワークモデルが特定の最適化処理の適用によってQORを改善する可能性を推定するように構成されている状態から開始することができる。
【0076】
ブロック305において、システムは、物理合成最適化の要求を受信したか否かを判断する。受信した場合、方法300は、ブロック310に進む。受信していない場合、方法300は、図示のようにループし続けることができる。例えば、設計者は、回路設計を作成または編集することができる。1つ以上の実施形態において、回路設計を配置することができる。1つ以上の実施形態において、回路設計を配置して配線することができる。いずれの場合、回路設計は、1つ以上のタイミングクリティカル信号経路を含んでもよい。設計フローの1つ以上の段階を実行した後、設計者は、EDAシステムによる最適化処理の実行を要求することができる。
【0077】
ブロック310において、システムは、処理する信号経路が存在するか否かを判断する。特に、システムは、タイミングを満しておらず、まだ最適化されていないまたは最適化される予定のない信号経路が存在するか否かを判断することができる。存在する場合、方法300は、ブロック315に進む。存在しない場合、方法300は、終了してもよい。
【0078】
ブロック315において、システムは、分析する信号経路を選択することができる。例えば、システムは、タイミングクリティカル信号経路を選択することができる。1つ以上の実施形態において、システムは、最大の負のスラックを有する信号経路を選択することができる。方法300の次の反復において、システムは、(最大の負のスラックから最小の負のスラックまで)重要度が減少する順に、タイミングクリティカル信号を選択し続けることができる。
【0079】
ブロック320において、システムは、ブロック315で選択された信号経路に関連する回路設計の複数の特徴を決定する。1つ以上の実施形態において、システムは、選択された信号経路を評価し、以下の特徴の1つ以上または全てを決定することができる。これらの特徴は、ドライバインスタンスの種類、ドライバのピンの数、ドライバの固有の種類のロードの数、ロードピンの数、ネットファンアウト、最適化前のローカルネットのスラック、最適化前の設計全体のスラック、ドライバ/ロードピンのネットマンハッタン距離、1ホップ隣接ピンのネット境界ボックスサイズ、制御セットの数、最適化されるネット周辺の配置密度、および最適化されるネット周辺の制御セットの密度を含む。
【0080】
上記に列挙された例示的な特徴は、図2を参照して説明された特徴を含むが、最適化処理を適用した後に決定された特徴を含まない。例えば、物理合成最適化を適用した後に得られたタイミング/スラックなどの特徴は、使用されない。さらに、各ニューラルネットワークモデルは、特定の物理合成最適化に適応されるため、物理合成最適化の種類が入力として必要とされない。1つ以上の実施形態において、最適化処理を適用した後に得られた特徴は、最適化を実行した後のQORおよび最適化を受け入れるか否かを判断するために使用されてもよい。
【0081】
ブロック325において、システムは、考察される最適化処理を選択する。ブロック330において、システムは、選択された最適化処理に対してニューラルネットワークモデルを実行する。システムは、例えば、選択された最適化処理に対してニューラルネットワークモデルを選択する。システムは、ブロック320で決定された特徴を入力としてニューラルネットワークモデルに提供し、ニューラルネットワークモデルを通じてその特徴を処理することによって、ニューラルネットワークモデルを実行することができる。システムは、ニューラルネットワークモデルを実行する際に、信号経路に対して選択された最適化処理を実行することがQORの改善をもたらす可能性を示す浮動小数点値を返すことができる。
【0082】
1つ以上の実施形態において、入力としてニューラルネットワークモデルに提供される様々な特徴の各々は、両端値を含めて−1から+1の間の値に正規化することができる。この場合、ニューラルネットワークモデルの実行によって得られた結果も、両端値を含めて−1から+1の間の値であり得る。−1に近い結果は、選択された最適化処理を実行することによって回路設計のQORを改善する可能性が非常に低いことを示している。+1に近い結果は、選択された最適化処理を実行することによって回路設計のQORを改善する可能性が非常に高いことを示す。
【0083】
ブロック335において、システムは、ブロック330で得られた結果が閾値を超えているか否かを判断することができる。超えている場合、方法300は、ブロック340に進み、選択された回路設計の信号経路に対して選択された最適化処理を実行する。そうでない場合、方法300は、ブロック355に進むことができる。その場合、システムは、信号経路に対して選択された最適化処理を実行しない。
【0084】
1つ以上の実施形態において、システムは、ブロック335において変化する閾値を使用することができる。この閾値は、ユーザによってシステムのパラメータまたは優先値として調整または設定されてもよい。閾値が高くなるほど、最適化処理を実行するための実行時間が短くなる。閾値が高くなると、一般的に最適化が少なくなる。閾値が低くなるほど、最適化処理を実行するための実行時間が長くなるという犠牲を払って、回路設計のQORの改善が良くなる。
【0085】
ブロック345において、システムは、ブロック340で実行された最適化を維持するか否かを判断する。システムは、本開示に説明したようにQORの尺度を計算することに基づいて、最適化を維持するか否かを判断することができる。QORは、本開示に説明したように、タイミングの改善、電力消費量の改善、または両者の組み合わせに基づいて決定され得る。
【0086】
別の態様において、上述したように、システムは、ブロック320の特徴のうちのいずれかの改善を選択された最適化処理のQORとして測定することができる。特徴の改善は、QORの改善を示す。このような特徴の改善は、本開示に記載された他のQOR量、例えばタイミングに関連するQOR量および/または電力消費量に関連するQOR量のいずれかと組み合わせて(例えば、重み付けおよび/または合計を用いて)、最終QORを生成することができる。システムは、QOR(場合によって、最終QOR)が改善されたか否かに基づいて、最適化を維持するか否かを判断する。QORが改善されているという判断に応答して、方法300は、ブロック355に進む。QORが改善されていないという判断に応答して、方法300は、ブロック350に進む。
【0087】
ブロック350において、QORが改善されていないという判断に応答して、システムは、ブロック340で実行された物理合成最適化を棄却する。システムは、例えば、回路設計をブロック340の最近の反復の前の状態に戻す。
【0088】
ブロック355において、システムは、選択された信号経路に対して物理合成最適化の実行を継続するか否かを判断する。継続するという判断に応答して、方法300は、ブロック325に戻り、選択された信号経路に対して次に実行される最適化処理を選択する。継続しないという判断に応答して、方法300は、ブロック310に戻り、次に処理される信号を選択する。
【0089】
1つ以上の実施形態において、システムは、選択された信号経路に対してシステムが実行できる各最適化処理を評価したという判断に応答して、ブロック310に戻り、異なる信号経路を処理することができる。別の例において、システムは、ブロック310に進み、現在の信号経路がタイミング制約を満たしているという判断、すなわち、タイミングクリティカルではないという判断に応答して、異なる信号経路を処理することができる。一態様において、システムは、各最適化処理が選択された信号経路の適用に対して評価されているか否かにかかわらず、信号経路がタイミングを満たしているという判断に応答して、ブロック310に進むことができる。
【0090】
1つ以上の実施形態において、システムは、選択された信号経路に対して最大数の最適化処理を実行することができる。最適化処理の最大数は、最適化処理の総数または利用可能な最適化処理の総数より少ない数に設定することができる。したがって、選択された経路に対して最大数の最適化処理を実行する場合、方法300は、ブロック355からブロック310に進み続ける。
【0091】
説明のために、一例として、最適化処理の最大数を1に設定する。この場合、選択された信号経路に対してブロック340を1回実行した後、方法300は、ブロック355から離れてブロック310に進む。この構成において、ニューラルネットワークモデルからの結果が閾値以下であるために適用されない最適化処理は、カウントされない。なお、最適化処理の最大数は、システム設定値として調整されてもよい。例えば、最適化処理の最大数は、1、2、3、4などに設定されてもよい。
【0092】
1つ以上の実施形態において、システムは、QORを改善するために、ニューラルネットワークモデルを用いて、処理すべき信号経路および/または処理すべき信号経路の順序を決定することができる。例えば、システムは、異なる最適化処理に対応する1つ以上のまたは全てのニューラルネットワークモデルを通じて複数の信号経路の各々の特徴を処理することによって、複数の信号経路を評価することができる。システムは、ニューラルネットワークモデルの実行結果に基づいて、QORを改善する可能性が最も高い信号経路に対して操作することができる。次に、システムは、QORを改善する可能性が2番目に高い信号経路上に対して操作することができる。以下同様である。
【0093】
1つ以上の実施形態において、システムは、QORを改善するために、所定の信号経路に適用される最適化処理の順序を決定することができる。例えば、システムは、選択された信号経路の特徴を決定し、選択された信号経路に対して複数のニューラルネットワークモデルまたは各ニューラルネットワークモデルを実行することができる。まず、システムは、QORの改善をもたらす可能性が最も高い最適化処理を実行する。必要であれば、例えば信号経路が依然としてタイミングクリティカルである場合、システムは、QORの改善をもたらす可能性が2番目に高い最適化処理を実行してもよい。以下同様である。システムは、信号経路がタイミングクリティカルでなくなるまで最適化処理を適用し続け、「最適化処理の総数よりも小さい整数値である上位「N」個の最適化処理を適用し、関連ニューラルネットワークモデルの実行から得られた結果が閾値を超えている最適化処理の全てを適用することができる。
【0094】
本開示に記載された処理済み回路設計は、ICに実装することができる。1つ以上の実施形態において、システムは、回路設計を処理することによって、構成ビットストリームを生成することができる。この構成ビットストリームをICにロードすることによって、処理済み回路設計によって記述された回路をICに物理的に実装するすることができる。
【0095】
本開示に開示された様々な発明の概念の完全な理解を提供するために、説明の目的で、特定の命名法を使用した。しかしながら、本開示に使用された術語は、発明の構成の特定の態様を説明することのみを目的としており、限定することを意図していない。
【0096】
本開示に定義された単数形「a」、「an」および「the」は、文脈がそうでないことを明白に示していない限り、複数形を含むことを意図する。本開示に定義された「他の」という用語は、少なくとも第2のまたはそれ以上を意味する。本開示に定義された用語「少なくとも1つ」、「1つ以上」および「および/または」は、特に明記しない限り、接続的動作および離接的動作の両方を表す非限定表現である。例えば、「A、BおよびCのうち少なくとも1つ」、「A、BまたはCのうち少なくとも1つ」、「A、BおよびCのうち1つ以上」、「A、BまたはCのうち1つ以上」、および「A、Bおよび/またはC」という表現は、Aのみ、Bのみ、Cのみ、AとB、AとC、BとC、またはAとBとCを意味する。本開示に定義された「自動的に」という用語は、ユーザが介入しないことを意味する。
【0097】
本開示に定義された「コンピュータ可読記憶媒体」という用語は、命令実行システム、機械または装置によって使用されるまたはそれらに関連して使用されるプログラムコードを含むまたは格納する記憶媒体を意味する。本開示に定義された「コンピュータ可読記憶媒体」それ自体は、一時的な伝搬信号ではない。コンピュータ可読記憶媒体は、電子記憶装置、磁気記憶装置、光記憶装置、電磁記憶装置、半導体記憶装置、またはこれらの任意の適切な組み合わせを含むが、これらに限定されない。本開示に記載されたメモリ素子は、コンピュータ可読記憶媒体の一例である。コンピュータ可読記憶媒体のより具体的且つ非網羅的な例として、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、消去可能なプログラマブル読み取り専用メモリ(EPROMまたはフラッシュメモリ)、静的ランダムアクセスメモリ(SRAM)、ポータブル読み取り専用コンパクトディスク(CD−ROM)、デジタルバーサタイルディスク(DVD)、メモリースティック、フロッピー(登録商標)ディスク、機械的に暗号化された装置、例えばパンチカードまたは指示を記録した溝中の隆起構造、および前述したものの任意の適切な組み合わせを含むことができる。
【0098】
本開示に定義された「出力」という用語は、物理的メモリ素子、例えば装置への格納、ディスプレイまたは他の周辺出力装置への書き込み、別のシステムへの送信、転送または輸出などを意味する。
【0099】
本開示に定義された「if」という用語は、文脈に応じて、「〜の場合」または「〜のとき」または「〜に応答して」または「〜に応じて」を意味する。したがって、「判断された場合」または「前述した条件またはイベントが検出された場合」という表現は、文脈に応じて、「判断されたとき」または「判断に応じて」または「前述した条件またはイベントの検出に応じて」または「前述した条件またはイベントの検出に応答して」を意味するように解釈されてもよい。本開示に定義された「〜に応答して」という表現は、行動またはイベントに応答するまたは反応することを意味する。したがって、第2の動作が第1の動作「に応答して」実行される場合、第1の動作の発生と第2の動作の発生との間に因果関係が存在する。「〜に応答して」という用語は、因果関係を示す。
【0100】
本開示に定義された「1つの実施形態」、「一実施形態」または類似の用語は、一実施形態に関連して説明された特定の特徴、構造または特性が本開示に記載された少なくとも1つの実施形態に含まれることを意味する。したがって、本開示の全体において、「1つの実施形態では」、「一実施形態では」および類似の表現は、必ずしも全て同じ実施形態を指すと限らない。
【0101】
本開示に定義された「プロセッサ」という用語は、プログラムコードに含まれる命令を実行するように構成された少なくとも1つのハードウエア回路を意味する。ハードウエア回路は集積回路であってもよい。プロセッサの例は、中央処理装置(CPU)、アレイプロセッサ、ベクトルプロセッサ、デジタル信号プロセッサ(DSP)、フィールドプログラマブルゲートアレイ(FPGA)、プログラマブルロジックアレイ(PLA)、特定用途向け集積回路(ASIC)、プログラマブルロジック回路、グラフィック処理ユニット(GPU)、コントローラなどを含むが、これらに限定されない。
【0102】
本開示に定義された用語「ユーザ」は、人間を意味する。本開示において、第1、第2などの用語を用いて様々な要素を説明することがある。これらの要素は、これらの用語によって限定されるべきではない。これらの用語は、特に明記しない限りまたは文脈がそうでないことを明白に示していない限り、ある要素を別の要素から区別するために用いられるのみである。
【0103】
コンピュータプログラム製品は、本開示に記載の発明の構成をプロセッサに実行させるためのコンピュータ可読プログラム命令を格納するコンピュータ可読記憶媒体を含むことができる。本開示において、「プログラムコード」という用語は、「コンピュータ可読プログラム命令」という用語と互換的に使用される。本開示に記載のコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から、対応のコンピューティング/処理装置にまたはインターネット、LAN、WANおよび/または無線ネットワークなどのネットワークを介して外部コンピュータまたは外部記憶装置にダウンロードすることができる。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線伝送、ルータ、ファイアウォール、スイッチ、ゲートウェイコンピュータ、および/またはエッジサーバを含むエッジ装置を含んでもよい。各コンピューティング/処理装置内のネットワークアダプタカードまたはネットワークインターフェイスは、ネットワークからコンピュータ可読プログラム命令を受信し、受信したコンピュータ可読プログラム命令を対応のコンピューティング/処理装置内のコンピュータ可読記憶媒体に転送して格納する。
【0104】
本開示に記載された本発明の構成の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウエア命令、またはオブジェクト指向プログラミング言語および/または手続き型プログラミング言語を含む1つ以上のプログラミング言語の組み合わせで書かれたソースコードまたはオブジェクトコードであってもよい。コンピュータ可読プログラム命令は、状態設定データを含んでもよい。コンピュータ可読プログラム命令は、独立型ソフトウエアパッケージとして、ユーザのコンピュータ上で完全にまたは部分的に実行することができ、またはユーザのコンピュータ上で部分的におよびリモートコンピュータ上で部分的に実行することができ、またはリモートコンピュータまたはサーバ上で全体的に実行することができる。後者の場合、リモートコンピュータは、LANまたはWANを含む任意種類のネットワークを介してユーザのコンピュータに接続することができ、(例えば、インターネットサービスプロバイダを使用するインターネットを介して)外部コンピュータに接続することができる。場合によって、例えば、プログラマブルロジック回路、FPGAまたはPLAを含む電子回路は、本開示に記載された本発明の構成の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用して電子回路をカスタマイズすることによって、コンピュータ可読プログラム命令を実行することができる。
【0105】
本開示において、本発明の構成のいくつかの態様は、方法、装置(システム)およびコンピュータプログラム製品のフローチャート図および/またはブロック図を参照して説明される。理解すべきことは、フローチャート図および/またはブロック図の各ブロック並びにフローチャート図および/またはブロック図のブロックの組み合わせは、コンピュータ可読プログラム命令、例えばプログラムコードによって実装され得ることである。
【0106】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータまたは他のプログラマブルデータ処理装置のプロセッサに提供され、マシーンを生成することができる。したがって、これらの命令は、コンピュータのプロセッサまたは他のプログラマブルデータ処理装置によって実行されると、フローチャートおよび/またはブロック図のブロックに規定された機能/動作を実施するための手段を作成する。これらのコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体に格納することもできる。これらの命令は、特定の方法で機能するようにコンピュータ、プログラマブルデータ処理装置および/または他の装置に命令することができる。したがって、命令を格納するコンピュータ可読記憶媒体は、フローチャートおよび/またはブロック図のブロックに規定された動作を実行する命令を含む製品を含む。
【0107】
また、コンピュータ可読プログラム命令は、コンピュータ、他のプログラマブルデータ処理装置、または他の装置にロードされ、コンピュータ、他のプログラマブル装置または他の装置上で一連の動作を実行させることができる。したがって、コンピュータ、他のプログラマブルな装置または他の装置上で実行される命令は、フローチャートおよび/またはブロック図のブロックに規定された機能/動作を実行することができる。
【0108】
添付図面中のフローチャートおよびブロック図は、本発明の構成の様々な態様に従って、システム、方法およびコンピュータプログラム製品の可能な実装形態のアーキテクチャ、機能および動作を示している。この場合、フローチャートまたはブロック図の各ブロックは、規定された動作を実行するための1つ以上の実行可能命令を含むモジュール、セグメント、または命令の一部を表すことができる。
【0109】
いくつかの代替的な実装形態において、ブロックに記載の動作は、図面に示された順序とは異なる順序で行われてもよい。例えば、関連する機能に応じて、連続して示されている2つのブロックを実質的に同時に実行することができ、または逆の順序で実行することができる。他の例において、概して番号の昇順でブロックを実行しもよい。さらに他の例において、変動する順序でブロックを実行しもよい。したがって、得られた結果が格納され、後続のブロックまたはすぐ後続ではない他のブロックに利用されてもよい。ブロック図および/またはフローチャート図の各ブロック並びにブロック図および/またはフローチャート図のブロックの組み合わせは、特定の機能または動作もしくは専用ハードウエアとコンピュータ命令の組み合わせを実行する専用ハードウエアベースシステムによって実装されてもよい。
【0110】
添付の特許請求の範囲に含み得る全ての手段またはステップおよび機能要素に対応する構造、材料、動作および均等物は、明白に請求される他の要素と組み合わせて機能を実行するための任意の構造、材料または動作を含むように意図される。
【0111】
1つ以上の実施形態は、回路設計の物理合成方法に関する。一態様において、方法は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含む。
【0112】
一態様において、方法は、第2の物理合成最適化の有効性を示すように訓練された第2のニューラルネットワークモデルを通じて特徴を処理することと、第2のニューラルネットワークモデルからの結果に基づいて、第2の物理合成最適化を信号経路に選択的に適用することとを含む。
【0113】
別の態様において、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【0114】
別の態様において、方法は、第1の物理合成最適化を適用することによって得られた、複数の訓練回路設計のタイミングクリティカル信号経路のスラックの改善に少なくとも部分的に基づいて、第1のニューラルネットワークモデルを訓練することを含む。
【0115】
別の態様において、信号経路の特徴は、正規化され、入力として第1のニューラルネットワークモデルに提供される。
【0116】
別の態様において、信号経路の特徴は、信号経路のロードピンの数を含む。
別の態様において、信号経路の特徴は、信号経路のドライバのピンの数を含む。
【0117】
別の態様において、信号経路の特徴は、信号経路のドライバの回路素子の種類を含む。
別の態様において、方法は、第1の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第1の物理合成最適化を選択することを含む。
【0118】
別の態様において、信号経路に適用される物理合成最適化のうち少なくとも2つの順序は、複数のニューラルネットワークモデルの実行から決定される。
【0119】
1つ以上の実施形態は、回路設計の物理合成システムに関する。一態様において、システムは、実行可能な動作を開始するように構成されたプロセッサを含む。実行可能な動作は、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含む。
【0120】
一態様において、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【0121】
他の態様において、信号経路の特徴は、正規化され、入力として第1のニューラルネットワークモデルに提供される。
【0122】
別の態様において、信号経路の特徴は、信号経路のロードピンの数を含む。
別の態様において、信号経路の特徴は、信号経路のドライバのピンの数を含む。
【0123】
別の態様において、信号経路の特徴は、信号経路のドライバの回路素子の種類を含む。
別の態様において、プロセッサは、実行可能な動作を開始するように構成され、
実行可能な動作は、さらに、第1の物理合成最適化を信号経路に適用する前に、複数のニューラルネットワークモデルを実行することを含み、各ニューラルネットワークモデルは、特定の物理合成最適化に対応し、複数のニューラルネットワークモデルの実行結果に基づいて、第1の物理合成最適化を選択することを含む。
【0124】
別の態様において、信号経路に適用される少なくとも2つの物理合成最適化の順序は、複数のニューラルネットワークモデルの実行から決定される。
【0125】
1つ以上の実施形態は、回路設計の物理合成用のコンピュータプログラム製品に関する。一態様において、コンピュータプログラム製品は、プログラムコードを格納するコンピュータ可読記憶媒体を含む。プログラムコードは、以下の動作を実行するようにプロセッサによって実行可能であり、動作は、プロセッサを用いて、タイミング要件を満たさない回路設計の信号経路に関連する特徴を決定することと、プロセッサを用いて、第1のニューラルネットワークモデルを通じて特徴を処理することとを含み、第1のニューラルネットワークモデルは、第1の物理合成最適化の有効性を示すように訓練され、プロセッサを用いて、第1のニューラルネットワークモデルからの結果に基づいて、信号経路に対して第1の物理合成最適化を選択的に実行することを含む。
【0126】
一態様において、第1の物理合成最適化は、第1のニューラルネットワークモデルからの結果が閾値を超えているという判断に応答して、信号経路に対して実行される。
【0127】
本開示に提供された本発明の構成の説明は、例示を目的としており、網羅的であることまたは開示された形態および例に限定されることを意図していない。本開示に使用された用語は、本発明の構成の原理、市場で見られる技術に対する実際の応用または技術改善を説明するため、および/または当業者が本開示に開示された発明の構成を理解できるようにするために選択された。記載された発明の構成の範囲および精神から逸脱することなく、修正および変形は、当業者に明らかであり得る。したがって、これらの特徴および実施例の範囲を示すものとして、前述の開示ではなく特許請求の範囲を参照すべきである。
図1
図2
図3