(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-01-09
(54)【発明の名称】疑似ネットリストの反復的な変更を使用する経路ベースのタイミング・ドリブン配置
(51)【国際特許分類】
G06F 30/392 20200101AFI20231226BHJP
G06F 30/327 20200101ALI20231226BHJP
G06F 30/398 20200101ALI20231226BHJP
G06F 119/12 20200101ALN20231226BHJP
【FI】
G06F30/392
G06F30/327
G06F30/398
G06F119:12
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023534941
(86)(22)【出願日】2021-12-15
(85)【翻訳文提出日】2023-06-08
(86)【国際出願番号】 IB2021061753
(87)【国際公開番号】W WO2022130230
(87)【国際公開日】2022-06-23
(32)【優先日】2020-12-16
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】390009531
【氏名又は名称】インターナショナル・ビジネス・マシーンズ・コーポレーション
【氏名又は名称原語表記】INTERNATIONAL BUSINESS MACHINES CORPORATION
【住所又は居所原語表記】New Orchard Road, Armonk, New York 10504, United States of America
(74)【代理人】
【識別番号】100112690
【氏名又は名称】太佐 種一
(74)【代理人】
【識別番号】100120710
【氏名又は名称】片岡 忠彦
(72)【発明者】
【氏名】トロンブレイ、ベンジャミン、ニール
(72)【発明者】
【氏名】ヒーター、ナタニエル、ダグラス
(72)【発明者】
【氏名】ゲイ、ダニエル、アーサー
【テーマコード(参考)】
5B146
【Fターム(参考)】
5B146AA22
5B146GC03
5B146GC04
5B146GC12
5B146GC15
5B146GC26
(57)【要約】
コンピュータ化されたプレーサを使用して未配置ネットリストに具現化された集積回路設計のための初期配線長ドリブン配置を実行して、論理ゲートの初期配置を表すデータ構造を得る。初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別する。ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成して、更新されたネットリストを作成する。更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得る。
【特許請求の範囲】
【請求項1】
電子設計自動化を使用して設計される電子回路のタイミング性能を改善するための方法であって、
論理ゲートの初期配置を表すデータ構造を得るために、コンピュータ化されたプレーサを使用して未配置ネットリストに具現化された集積回路設計のための初期配線長ドリブン配置を実行するステップと、
前記初期配置を表す前記データ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別するステップと、
更新されたネットリストを作成するために、前記ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成するステップと、
修正された配置を表すデータ構造を得るために、前記更新されたネットリスト上の修正された配線長ドリブン配置を実行するステップと、
を含む、方法。
【請求項2】
前記少なくとも1つのタイミング・クリティカルなソース/シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、前記ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含む、請求項1に記載の方法。
【請求項3】
前記複数のタイミング・クリティカルなソース/シンク経路を識別する前記ステップ、前記エンドポイントの複数の対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記修正された配線長ドリブン配置を実行する前記ステップを、複数の全反復で繰り返すステップをさらに含む、請求項2に記載の方法。
【請求項4】
前記初期配線長ドリブン配置を実行するステップおよび前記修正された配線長ドリブン配置を実行するステップはそれぞれ、半周近似配線長ドリブン配置を適用することを含み、前記コンピュータ化されたプレーサは半周近似配線長ドリブンのコンピュータ化されたプレーサを含む、請求項3に記載の方法。
【請求項5】
前記初期配置を表す前記データ構造における前記ソース/シンク・エンドポイントの対の間の前記複数のタイミング・クリティカルなソース/シンク経路を識別するステップは、コンピュータ化されたユーザ・インターフェースを使用して、当技術分野の専門家から入力を得ることを含む、請求項3に記載の方法。
【請求項6】
前記初期配置を表す前記データ構造における前記ソース/シンク・エンドポイントの対の間の前記複数のタイミング・クリティカルなソース/シンク経路を識別するステップは、コンピュータ化されたタイミング推定ルーチンを使用することを含む、請求項3に記載の方法。
【請求項7】
前記コンピュータ化されたタイミング推定ルーチンを使用することは、前記コンピュータ化されたタイミング推定ルーチンを使用して、前記ソース/シンク・エンドポイントの対の間で比較的精確である結果を得ることを含む、請求項6に記載の方法。
【請求項8】
修正された配置を表す前記データ構造を得るために、前記更新されたネットリスト上の前記修正された配線長ドリブン配置を実行するステップは、前記エンドポイントの対を互いに近くなるように移動させることを含む、請求項3に記載の方法。
【請求項9】
修正された配置を表す前記データ構造を得るために、前記更新されたネットリスト上の前記修正された配線長ドリブン配置を実行するステップは、前記エンドポイントの対の間の経路の曲がった部分を小さくすることを含む、請求項3に記載の方法。
【請求項10】
修正された配置を表す前記データ構造を得るために、前記更新されたネットリスト上の前記修正された配線長ドリブン配置を実行するステップは、前記エンドポイントの対を互いに近くなるように移動させることをさらに含む、請求項9に記載の方法。
【請求項11】
修正された配置を表す前記データ構造を得るために、前記更新されたネットリスト上の前記修正された配線長ドリブン配置を実行する際に、前記エンドポイントの対は互いに対して固定される、請求項9に記載の方法。
【請求項12】
前記複数の全反復の間に前記疑似の2ピン・ネットを保持するステップをさらに含む、請求項3に記載の方法。
【請求項13】
前記未配置ネットリストに具現化された前記集積回路設計を得るために論理合成を実行するステップと、
前記複数の全反復の後、前記修正された配置を表す前記データ構造の最終バージョンにおいて、仮想タイミング最適化、クロック最適化、配線合成および最適化、およびルーティングを実行するステップと、
をさらに含む、請求項3に記載の方法。
【請求項14】
前記ルーティングの結果に基づいて、前記複数のタイミング・クリティカルなソース/シンク経路を識別する前記ステップ、前記エンドポイントの対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記修正された配線長ドリブン配置を実行する前記ステップを新たな複数の全反復で繰り返すステップをさらに含む、請求項13に記載の方法。
【請求項15】
前記ルーティングに基づいて物理的な集積回路を製作するステップをさらに含む、請求項13に記載の方法。
【請求項16】
前記修正された配置を表す前記データ構造の最終バージョンにおいて記憶素子をクラスタ化しかつ固定するステップと、
前記クラスタ化しかつ固定するステップに基づいてさらなる修正された配線長ドリブン配置を実行するステップと、
前記複数のタイミング・クリティカルなソース/シンク経路を識別する前記ステップ、前記エンドポイントの対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記修正された配線長ドリブン配置を実行する前記ステップを、前記クラスタ化しかつ固定するステップに基づく前記さらなる修正された配線長ドリブン配置の後の新たな複数の全反復で繰り返すステップと、
をさらに含む、請求項3に記載の方法。
【請求項17】
メモリと、
前記メモリに結合された少なくとも1つのプロセッサと、
を含み、前記少なくとも1つのプロセッサが、
論理ゲートの初期配置を表すデータ構造を得るために、コンピュータ化されたプレーサを使用して、未配置ネットリストに具現化された集積回路設計に対する初期配線長ドリブン配置を実行するステップと、
前記初期配置を表す前記データ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別するステップと、
更新されたネットリストを作成するために、前記ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成するステップと、
修正された配置を表すデータ構造を得るために、前記更新されたネットリスト上の修正された配線長ドリブン配置を実行するステップと
によって、電子設計自動化を使用して設計される電子回路のタイミング性能を改善するように動作する、コンピュータ。
【請求項18】
前記少なくとも1つのタイミング・クリティカルなソース/シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、前記ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含み、前記少なくとも1つのプロセッサは、前記複数のタイミング・クリティカルなソース/シンク経路を識別する前記ステップ、前記エンドポイントの複数の対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記修正された配線長ドリブン配置を実行する前記ステップを、複数の全反復で繰り返すようにさらに動作する、請求項17に記載のコンピュータ。
【請求項19】
前記少なくとも1つのプロセッサは、
前記複数の全反復の後、前記修正された配置を表す前記データ構造の最終バージョンにおいて、仮想タイミング最適化、クロック最適化、配線合成および最適化、およびルーティングを実行するステップと、
前記ルーティングに基づいてレイアウトを準備するステップと、
前記レイアウトを設計構造としてインスタンス化するステップと、
前記設計構造に従って物理的な集積回路の製作を容易にするために、前記設計構造を製作機器に提供するステップと
を行うようにさらに動作する、請求項18に記載のコンピュータ。
【請求項20】
1つまたは複数のコンピュータ可読記憶媒体を含む、コンピュータ・プログラム製品であって、前記1つまたは複数のコンピュータ可読記憶媒体には、
コンピュータ・システムに、論理ゲートの初期配置を表すデータ構造を得るために、コンピュータ化されたプレーサを使用して、未配置ネットリストに具現化された集積回路設計のための初期配線長ドリブン配置を実行させるように、前記コンピュータ・システムによって実行可能な第1のプログラム命令と、
前記コンピュータ・システムに、前記初期配置を表す前記データ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別させるように、前記コンピュータ・システムによって実行可能な第2のプログラム命令と、
前記コンピュータ・システムに、更新されたネットリストを作成するために、前記ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成させるように、前記コンピュータ・システムによって実行可能な第3のプログラム命令と、
前記コンピュータ・システムに、修正された配置を表すデータ構造を得るために、前記更新されたネットリスト上の修正された配線長ドリブン配置を実行させるように、前記コンピュータ・システムによって実行可能な第4のプログラム命令と
が記憶されている、コンピュータ・プログラム製品。
【請求項21】
前記少なくとも1つのタイミング・クリティカルなソース/シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、前記ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含み、前記コンピュータ・システムに、前記複数のタイミング・クリティカルなソース/シンク経路を識別する前記ステップ、前記エンドポイントの複数の対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記修正された配線長ドリブン配置を実行する前記ステップを、複数の全反復で繰り返させるように、前記コンピュータ・システムによって実行可能な第5のプログラム命令をさらに含む、請求項20に記載のコンピュータ・プログラム製品。
【請求項22】
前記コンピュータ・システムに、前記複数の全反復の後、前記修正された配置を表す前記データ構造の最終バージョンにおいて、仮想タイミング最適化、クロック最適化、配線合成および最適化、およびルーティングを実行させるように、前記コンピュータ・システムによって実行可能な第6のプログラム命令と、
前記コンピュータ・システムに、前記ルーティングに基づいてレイアウトを準備させるように、前記コンピュータ・システムによって実行可能な第7のプログラム命令と、
前記コンピュータ・システムに前記レイアウトを設計構造としてインスタンス化させるように、前記コンピュータ・システムによって実行可能な第8のプログラム命令と、
前記コンピュータ・システムに、前記設計構造に従って物理的な集積回路の製作を容易にするために、前記設計構造を製作機器に提供させるように、前記コンピュータ・システムによって実行可能な第9のプログラム命令と、
をさらに含む、請求項21に記載のコンピュータ・プログラム製品。
【請求項23】
電子設計自動化を使用して設計される電子回路のタイミング性能を改善するための方法であって、
コンピュータ化されたプレーサから、未配置ネットリストに具現化された集積回路設計に対する初期配線長ドリブン配置の結果を得るステップであって、前記結果は論理ゲートの初期配置を表すデータ構造を含む、前記結果を得るステップと、
コンピュータ化されたタイマから、前記初期配置を表す前記データ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を得るステップと、
更新されたネットリストを作成するために、前記ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップと、
修正された配置を表すデータ構造を生じさせるために、前記コンピュータ化されたプレーサが前記更新されたネットリスト上の修正された配線長ドリブン配置を実行することを容易にするように前記更新されたネットリストを前記コンピュータ化されたプレーサに提供するステップと、
を含む、方法。
【請求項24】
前記少なくとも1つのタイミング・クリティカルなソース/シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、前記ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含む、請求項23に記載の方法。
【請求項25】
前記複数のタイミング・クリティカルなソース/シンク経路を得る前記ステップ、前記エンドポイントの複数の対のそれぞれの対に対する前記新たな疑似の2ピン・ネットを作成する前記ステップ、および前記更新されたネットリストを提供する前記ステップを、複数の全反復で繰り返すステップをさらに含む、請求項24に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、電気技術、電子技術、およびコンピュータ技術に関し、より具体的には、半導体電子設計自動化(Electronic Design Automation:EDA)などに関する。
【背景技術】
【0002】
EDAは、集積回路(IC)および印刷回路基板などの電子システムを設計するためのソフトウェア・ツールの使用を伴う。一般に、ICはデータ信号およびクロックを有し、データ信号は、ある特定のノードに、そのノードにおけるデバイスの対応するクロック・サイクルの時間に関して、正確な時間に達する必要がある。データ信号が時間内に到達しない場合、クロックが早すぎるか、あるいはデータ信号が伝播する時間が長すぎる(経路が遅すぎる)。
【0003】
現在は、EDAプロセス内の配置には、半周近似配線長(Half-Perimeter Wire Length:HPWL)技術が使用されている。しかしながら、HPWLは、HPWL技術を使用して開発されたIC設計はタイミング制約を満たさない場合があるように、タイミングを考慮したものではない。HPWLがタイミングを考慮したものではないという問題に対処する以前の試みでは、過度に計算集約的であり、グローバル配置の品質またはタイミング解析の精度あるいはその両方によって限定されていて、飽和状態になりやすく、または、ソースとシンクとの間に曲がりくねった経路を生じさせる傾向があり、あるいはその両方が生じていた。
【発明の概要】
【0004】
本発明の原理は、疑似ネットリストの反復的な変更を使用する経路ベースのタイミング・ドリブン配置の技術を提供する。1つの態様では、電子設計自動化を使用して設計される電子回路のタイミング性能を改善するための例示的な方法は、論理ゲートの初期配置を表すデータ構造を得るために、コンピュータ化されたプレーサ(placer)を使用して未配置ネットリストに具現化された集積回路設計のための初期配線長ドリブン配置(wire-length-driven placement)を実行するステップと、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別するステップと、更新されたネットリストを作成するために、ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成するステップと、修正された配置を表すデータ構造を得るために、更新されたネットリスト上の修正された配線長ドリブン配置を実行するステップとを含む。
【0005】
1つまたは複数の実施形態では、少なくとも1つのタイミング・クリティカルなソース・シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含み、複数のタイミング・クリティカルなソース/シンク経路を識別するステップ、エンドポイントの複数の対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップ、および修正された配線長ドリブン配置を実行するステップが、複数の全反復で繰り返される。
【0006】
初期配線長ドリブン配置を実行するステップおよび修正された配線長ドリブン配置を実行するステップはそれぞれ、例えば、半周近似配線長ドリブン配置を適用することを含み、コンピュータ化されたプレーサは半周近似配線長が駆動されたコンピュータ化されたプレーサを含む。
【0007】
別の態様では、例示的なコンピュータは、メモリと、メモリに結合された少なくとも1つのプロセッサと、を含み、少なくとも1つのプロセッサは、論理ゲートの初期配置を表すデータ構造を得るために、コンピュータ化されたプレーサを使用して未配置ネットリストに具現化された集積回路設計に対する初期配線長ドリブン配置を実行するステップと、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別するステップと、更新されたネットリストを作成するために、ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネットを作成するステップと、修正された配置を表すデータ構造を得るために、更新されたネットリスト上の修正された配線長ドリブン配置を実行するステップとによって、電子設計自動化を使用して設計される電子回路のタイミング性能を改善するように動作する。
【0008】
さらに別の態様では、電子設計自動化を使用して設計される電子回路のタイミング性能を改善するための例示的な方法は、コンピュータ化されたプレーサから、未配置ネットリストに具現化された集積回路設計に対する初期配線長ドリブン配置の結果を得るステップであって、該結果は論理ゲートの初期配置を表すデータ構造を含む、結果を得るステップと、コンピュータ化されたタイマから、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を得るステップと、更新されたネットリストを作成するために、ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップと、修正された配置を表すデータ構造を生じさせるために、コンピュータ化されたプレーサが更新されたネットリスト上の修正された配線長ドリブン配置を実行することを容易にするように更新されたネットリストをコンピュータ化されたプレーサに提供するステップとを含む。
【0009】
動作を「容易にすること」は、本明細書で使用される際、動作を実行すること、動作を簡単にすること、動作の実行を助長すること、または動作を行わせることを含む。よって、限定ではなく例として、1つのプロセッサ上で実行される命令は、動作を行わせるまたは動作を行う支援をする適切なデータまたはコマンドを送ることによって、リモート・プロセッサ上で実行される命令による動作の実行を容易にし得る。誤解を避けるために、この動作を実行する実行者以外の実行者が動作を容易にする場合、それでもやはり、この動作は、何らかのエンティティまたはエンティティの組み合わせによって実行される。
【0010】
本発明またはこの要素の1つまたは複数の実施形態は、示される方法ステップを実行するためのコンピュータ使用可能プログラム・コードを有するコンピュータ可読記憶媒体を含むコンピュータ・プログラム製品の形態で実装可能である。さらに、本発明またはこの要素の1つまたは複数の実施形態は、メモリと、該メモリに結合され、かつ例示的な方法ステップを実行するように動作する少なくとも1つのプロセッサとを含むシステム(または装置)の形態で実装可能である。またさらに、別の態様では、本発明またはこの要素の1つまたは複数の実施形態は、本明細書に説明される方法ステップのうちの1つまたは複数を実行する手段の形態で実装可能であり、該手段は、(i)ハードウェア・モジュール、(ii)コンピュータ可読記憶媒体(または複数のこのような媒体)に記憶され、かつハードウェア・プロセッサ上に実装されるソフトウェア・モジュール、または(iii)(i)および(ii)の組み合わせを含むことができ、(i)~(iii)のいずれかは本明細書に示される具体的な技術を実装する。
【0011】
本発明の技術は、実質的に有益な技術的効果を提供する。例えば、この概要のセクションで説明される実施形態は以下の利点を提供する。
【0012】
本発明の態様を使用して設計されたチップは、先行技術の技術を使用して設計されたチップと比較するとより優れている(例えば、より良いタイミング・コンプライアンス)。
【0013】
本発明の態様を使用してEDAを実行するコンピュータは、先行技術と比較してより優れた結果を得、少なくともいくつかの事例では、先行技術と比較するとより少ないリソース(CPUまたはメモリなど)を使用する。
【0014】
本発明のこれらのならびに他の特徴および有利点は、本発明の例示的な実施形態の以下の詳細な説明から、添付の図面と併せて読むと明らかとなるであろう。
【図面の簡単な説明】
【0015】
【
図1】本発明の態様が配置に用いられ得るEDAプロセスのブロック図である。
【
図2】本発明の態様によるグローバル配置を示す図である。
【
図3】本発明の態様に従って高めることが可能である半周近似配線長配置の態様を示す図である。
【
図4】本発明の態様によるタイミング・ドリブン・アトラクション(Timing Driven Attraction:TDA)を示す図である。
【
図5】本発明の態様によるタイミング・ドリブン・アトラクション(TDA)を示す図である。
【
図6】本発明の態様によるタイミング・ドリブン・アトラクション(TDA)を示す図である。
【
図10】本発明の1つまたは複数の態様または要素あるいはその両方を実装するのに有用であり得るコンピュータ・システムを示す図である。
【
図11】半導体設計、製造、または試験あるいはこれらの組み合わせにおいて使用される設計プロセスのフロー図である。
【
図12】物理設計データからのIC製作のさらなる態様を示す図である。
【
図13】本発明の態様が用いられ得る例示的な高水準電子設計自動化(EDA)ツールのフローを示す図である。
【
図14】本発明の態様による、データ構造におけるTDAの要素を示す図である。
【発明を実施するための形態】
【0016】
図1は、半導体設計において使用される物理的合成フロー・プロセスを示す。ステップ101では、想定される設計が、VHDLなどのハードウェア記述言語でレンダリングされている。ステップ103では、ハードウェア記述言語から実際の相互接続された論理ゲートに変換するために論理合成を実行する。ステップ105では、初期(グローバル)配置を実行し、すなわち、ハードウェア(相互接続された論理ゲート)の抽象的記述をチップ上にレイアウトできる何かにトランスレートする。ステップ107では、仮想タイミング最適化を実行する。ステップ109では、クロック最適化を実行する。ステップ111では、配線合成、粗い最適化、および細かい最適化を実行する。ステップ113では、ルーティングを実行する。
【0017】
図2は、ネットリスト201から開始されるグローバル配置プロセスの進捗を示す。最初に、全配線長を最小化し、それによって203において「狭い」配置がもたらされる。所与の密度目標を満たすために、205、207、209、211で見られるように配置を徐々に「広げて」、最終的に、制約に従いいずれの重複もない正規配置(legal placement)213を生じさせる。
【0018】
1つまたは複数の実施形態は、限定ではなく例として、グローバル配置ステップ105またはクロック最適化109あるいはその両方の間、有用である。一般的に、物理的合成フロー・プロセスからの良好な最終結果と共に、ステップ105において良好なグローバル配置を生じさせることに注意が払われる。実際に、タイミング・クロージャを満たす物理的合成能力はグローバル配置に制約される。従来のグローバル配置アルゴリズムは、接続性が駆動された(半周近似配線長「HPWL」を用いる)線形最適化である。
図3を参照すると、HPWLアプローチでは、配線長は、ネットにおける全ての端子303-1、303-2、303-3、303-4、303-5を囲む最小の四角形領域(bounding rectangle)301の周囲の半分で近似される。最新技術のHPWL最小化には力指向配置が使用される。(同じ密度/密集の制約を満たす)より良いグローバル配置のHPWL解決策は、より良い物理的合成結果を意味することが多い。HPWL配置はまた、比較的早いという利点を有する。
図3の表311は、物理的合成フロー・プロセスに対する例示的な実行時の内訳を示す。配置部分には実行時の1分40秒しか使わないが、最適化部分には10.5時間を要し、ルーティング部分には17.3時間を要する。
【0019】
当業者に理解されるように、回路レイアウトにおける一部の経路は、通常、その他よりもタイミング・クリティカルであり、すなわち、回路が所望のクロック周波数でうまく動作できるように、それらの経路で信号伝播時間を低く抑えることが必要である。しかしながら、HPWLはタイミングを考慮したものではない。複雑で高性能の論理マクロでは、これは、物理的合成がサイクル時間制約にかなうには不十分である配置解決策をもたらす可能性がある。
【0020】
このHPWLの制限に対処するために多くの試みおよび技術が使用されており、これらのそれぞれには利点および欠点がある。ネット重みドリブン・プレーサでは、高いネット重みは、タイミング・クリティカルなネットへの処理を優先し、これにはタイミング情報をHPWL最適化に提供するという利点がある。しかしながら、このアプローチでは、急速に飽和状態になり、高ファンアウト・ネットには過度にアグレッシブであり、タイミングの精確さに頼りすぎており、1つの問題点を解決するとまた別の問題が生じ得る動きが示される。記憶素子(例えば、フリップフロップ)に基づくハイパーグラフ配置はタイミング・エンドポイント間の距離のバランスを取るのに役立つ。しかしながら、このアプローチによって、密集問題がもたらされることが多く、組み合わせ論理の蛇行経路が生じる場合があり、この場合、エンドポイントは閉じられるが、なお経路は長い。グローバル配置が一度行われた後にクリティカルな経路矯正アルゴリズムが用いられ、クリティカルな経路が識別可能であり、タイミング・エンドポイント間で信号が伝達された距離を減らすのには効果的であるが、グローバル配置解決策の品質に制約される。配置手順内(経路ベース)で実装されたタイミング・モデルは数学的な関心を引くが、極めてCPU集約型であり、まだ最適化されていないネットリストに過度に制約される。
【0021】
1つまたは複数の実施形態は、有利には、疑似ネットリストの反復的な変更を使用する経路ベースのタイミング・ドリブン配置(本明細書ではタイミング・ドリブン・アトラクション(TDA)とも称される)によって、タイミング情報をHPWLプレーサに提供し、タイミング・エンドポイント(すなわち、タイミング・クリティカルな経路のエンドポイント)同士を近くなるようにし、またはクリティカルな経路を矯正する、あるいはその組み合わせを行うグローバル配置技術を提供する。本明細書では「アトラクション(attraction)」とも称される疑似ネットリストの変更は、シンクからソースまでの、HPWLモデル内でのみ作成される「偽」の(「疑似の」)2ピン・ネットである。例示的なアプローチは、タイミング推定に基づいて最悪の「経路」(ソース・タイミング・エンドポイントからシンク・タイミング・エンドポイント)が選定される意味でタイミング・ドリブンであり、それらの最悪の経路に沿ってアトラクションが行き渡る(ソース/シンク対はアトラクションを受ける)。例示的なアプローチは、例えば、新たなアトラクション(すなわち、アトラクションが加えられた新たなネットリスト)によってグローバル配置を再実行することによって、プレーサに実装される。例示的なアプローチは、例えば、複数のグローバル配置が実行されており、少しずつアトラクションがもたらされるようになる、または以前のアトラクションの重みが増大する、あるいはその両方の意味で、反復的である。
【0022】
図4の表示401は、例示的なネットリストのサブセットについての、本発明の態様によるタイミング・ドリブン・アトラクション(TDA)の例を示す論理図である。四角形403-1、403-2、403-3、403-4、403-5はタイミング・エンドポイントであり、右側の表示405は、表示401の破線ボックス407内の要素に対応する物理レイアウト(実際の配置を有し、すなわち、物理HPWLモデルによって表される)を表す。複数の論理ゲートがあり、混乱しないように、ANDゲート421および411、ならびにORゲート413、417、419のみが番号付けされている。
【0023】
図5は、3つのタイミング・エンドポイント503-1、503-2、および503-3を有する論理図を示し、503-2および503-3は最悪のエンドポイントであると判断される。さまざまな論理ゲートを通してエンドポイント503-1、503-3を相互接続する太線505-1、505-2、505-3、505-4、505-5、505-6(混乱しないように、これらの全てが別々に番号付けされているわけではない)は、アトラクションを表す。ORゲート599がANDゲート597への出力およびANDゲート595への別の出力を有するが、599から595までの出力のみがアトラクションを受けるが、これはその出力のみがクリティカルな経路上にあるからであることに留意されたい。よって、最もタイミング・クリティカルな開始/エンドポイントの対が選択され、ネットリストにおいて新たなアトラクションがもたらされ、グローバル配置上で反復される。
【0024】
図6は、
図4からの表示405(NHPドリブン配置のデフォルトのモデル)を再現し、かつアトラクション687、689の付加を示す新たな表示605(ネットとしてのクリティカルなソース-シンクの対を有するモデル)が加えられている。アトラクション687がない表示405では、破線の境界ボックス(ひいてはHPWL)が変化することがないため、ゲート419がソース421の近くに移動する誘因がない。しかしながら、表示605におけるアトラクション687、689の付加は、要素421、419、および403-4同士を近づける誘因となる。
【0025】
ここで、
図7のフローチャートを参照すると、本発明の態様によるTDAを用いる配置フローが示されている。入ってくるネットリスト801には配置がない。ステップ805では、任意の現在知られているまたは今後開発されるHPWLベースの配置アルゴリズムを使用するHPWLドリブン配置が実行される。ステップ807では、タイミング推定が実行される。有利には、1つまたは複数の実施形態では、タイミング推定は絶対的な感覚で精確である必要はなく(これは、合成フローの初めに絶対的な感覚で精確なタイミングを得ることは難しいため有利である)、比較的精確であることだけが必要である(すなわち、アトラクションを挿入するのを容易にするのが最もクリティカルなのはどの経路かを判断することができ、どれくらいのピコ秒低下するかを知る必要はない)。さらに、1つまたは複数の実施形態では、(有利には、改善されたタイミング推定方法に技術が容易く適応できるようにする)任意の現在知られているまたは今後開発されるタイマ(タイミングを実施するプログラム)を使用して用いられ得る。1つまたは複数の実施形態では、バッファ推定および合理的な金属層の仮定の組み合わせを用いる。
【0026】
ステップ809では、説明されるように、アトラクション生成が実行される。破線ボックス803および矢印811によって示されるように、ステップ805、807、および809は反復方式で繰り返される。それぞれの反復では、全てのアトラクションは等しく処理され、すなわち、全てがまさに新たなネットとなる。クリティカルな経路を矯正し、かつエンドポイントをより近くなるように「少しずつ動かす」ことだけが所望されている。1反復ごとに、1つまたは複数の実施形態において全ての以前のアトラクションが保持される。よって、改善された経路は、これらを改善したHPWL力を維持し、経路が繰り返し損なわれることはさらに改善可能である(すなわち、より高い優先度が与えられる)。反復が終了すると、タイミング・ベースの最適化813に進む。
【0027】
図8には、物理設計クロージャ・フローにおけるTDA利用の一例が挙げられている。1つまたは複数の実施形態は、ハードウェア記述言語(例えば、VHDL901)からゲートまで(論理合成903から未配置ネットリスト905まで)進み、これらが(第1の)グローバル配置907に使用可能でありかつTDA反復909まで進むことができるという意味で再利用可能であり、さらにまたその後のフローでは、911において記憶素子はクラスタ化および固定可能であり(そのため、これらはもはや移動可能ではない)、次いで、残りの回路要素(固定された記憶素子以外)は、配置913およびTDA915を繰り返して、他のクリティカルな経路を減らし矯正することによって最適化可能である。物理的合成フローのその後の段階では、一定の最適化が行われると、ルーティングが難しいエリアにおけるゲートがTDAアトラクションを使用して917で広がる可能性がある。有利には、破線ボックスにおけるステップの間の多くの困難で複雑なアルゴリズムは、TDA配置と完全に置き換え可能である。ステップ917に続いて、919において追加の最適化が実行可能であり、921においてルーティングが実行可能である。
【0028】
有利には、TDAを用いる1つまたは複数の実施形態は、ネット重みドリブン・プレーサと比較して、既存のネットの重みを単に調節することとは対照的に新たなネットを追加する。先行技術のラッチ・ゲート技術と比較すると、TDAを用いる1つまたは複数の実施形態は、実際のネットリストが調節されるため、配置モデル以外の組み合わせ論理のいずれもストリップすることなくエンドポイントを近づけるように引き寄せる能力を提供する。グローバル配置の後に「修理」最適化としてクリティカル経路矯正アルゴリズムが行われるのに対し、TDAを用いる1つまたは複数の実施形態は、修理最適化とは対照的に事実上大局処理である。また、TDAを用いる1つまたは複数の実施形態は、クリティカルな経路を具体的に矯正することには注意を向けず、すなわちこれらの既存の矯正を見ず、むしろ、経路をより矯正することによって、TDAを用いる1つまたは複数の実施形態がもたらされることはまさに当然の結果である。TDAを用いる1つまたは複数の実施形態は、標準的な配線長およびプレーサ密度/密集の目的関数を使用し、かつ、プレーサ内のタイミング・モデルを必要とするのとは対照的に、配置ネットリスト・モデルを調節するためだけにタイミングを使用する。
【0029】
図9を参照すると、1つまたは複数の実施形態は、物理的合成の最悪のスラックおよび負のスラック全体(性能指数=FOM)の出力における大幅な改善、または多くの複雑な配置解決アルゴリズムを置き換える能力、あるいはその両方を提供する。1つまたは複数の実施形態が、総体的な改善があっても、通常何らかの最悪のHPWLを生じさせることに留意されたい。表示931は、(移動可能なエンドポイントの)TDAの前の経路939、およびTDAの後の経路941を示す。表示933は、(固定されたエンドポイントの)TDAの前の経路943、およびTDAの後の経路945を示す。表示935、937は、(ベースラインとTDAを使用した結果とを比較して)7つの異なる例示的なタイミングが困難な設計の実験結果についての最悪なスラック(ps)および負のスラックの合計の棒グラフを示す。
【0030】
本明細書における論述によると、1つまたは複数の実施形態によってタイミング・ドリブン配置をTDA技術を使用して生じさせることが可能であり、このTDA技術が、1つまたは複数の実施形態では、クリティカルな開始/エンドポイントの対を(任意のタイプのタイミング推定を使用して)選択することと、「偽の」2ピン・ネットを、全てのシンク-ソースの対のこれらの識別されたエンドポイント間のネットリストに追加することと、(任意の配線長ドリブン・プレーサ)を使用して配置を実行することとを含むことを当業者は認識するであろう。1つまたは複数の実施形態はさらに、これらのステップを反復して実行する。
【0031】
1つまたは複数の実施形態では、クリティカルな開始/エンドポイントの対を(任意のタイミング推定を使用して)選択するために、到達時間(At)および到達所要時間(RAT)が記憶素子からネットワーク(ネット)を通して前後に伝播するタイミング・シミュレーションを実行して、ネットのシンク・ピン全てにおける(ATからRATを差し引いた)スラック値を得る。それらのシンク・ピンにおけるスラックを知ることは、クリティカルな2ピン接続(すなわち、関係するエンドポイント間)の判断に役立つ。
【0032】
有利には、1つまたは複数の実施形態は、任意の配線長ドリブン・プレーサによっておよび任意のタイミング推定技術によって実行可能である。さらに、1つまたは複数の実施形態は、N+1合成に容易に拡張可能であり、この場合、以前の物理的合成フローの実行からの最悪の結果が最悪のエンドポイントとして自動的に選定される。つまり、いくつかの事例では、配置の時点でのタイミング情報は必ずしも必要であるわけではなく、以前の実行からのもので可能とされる。さらに、1つまたは複数の実施形態は、物理的合成フローに当てはまる以上に拡張可能である。例えば、
図8を参照すると、TDAが設計/合成プロセスのさまざまな時点、例えば、909、915で、かつ917内で用いられていることが示されている。1つまたは複数の実施形態は、ルーティング921と未配置ネットリスト905との間のデータ・フローが提供可能であり、すなわち、
図8におけるフロー全体について詳しく考察可能であり、その結果は次のラウンドにフィードバックされる。つまり、アトラクションをもたらすために使用されるインテリジェンスは、ルーティングのステップ921の出力を利用することができる。1つまたは複数の実施形態では、アトラクションなしで初期配置を実行して推定されるタイミングを得た後、アトラクションを使用して(現在のまたは以前のタイミングを使用して)配置を再反復する。TDAはそのように、必要に応じて、物理的合成フローの範囲外で行われ得る。
【0033】
さらに、1つまたは複数の実施形態はユーザ入力をサポート可能であり、ユーザは既知の重要なエンドポイントを指定することができる(すなわち、クリティカルなエンドポイントは、必ずしも必要というわけではないが、タイミング・プログラムによってもたらされる可能性がある)。さらに、1つまたは複数の実施形態は、グローバル配置だけでなくあらゆる配置の最適化の間にも再利用可能である。例えば、1つまたは複数の実施形態は、密集ドリブンの広がりの間に使用してタイミングの影響を低減することが可能である。
【0034】
プレーサによって(例えば、HPWLを使用して)生じた全配線長だけに重点を置くことでは十分でないことが見出されている。1つまたは複数の実施形態では、有利には、任意のHPWLドリブン・プレーサおよび任意のタイミング推定技術(当然ながら、当業者には認識されるように、タイミング推定には相当な注意を要する)にまで広げることが可能である柔軟なアプローチによる配置にタイミング情報を取り入れる困難な問題に対処する。1つまたは複数の実施形態では、TDA配置フローは、(実験評価に基づいて)タイミング・ドリブン配置の他の方法を大幅に凌ぐことが証明された。
【0035】
図15は、プレーサ1501と、タイマ1503と、アトラクション生成部1505と、ブロック1501、1503、および1505の間のデータ通信および共有を可能にする共有データ構造1507とを含む例示的なブロック図を示す。
【0036】
これまでの論述によって、本発明の一態様による、電子設計自動化を使用して設計された電子回路のタイミング性能を改善するための例示的な方法が、(例えば)ステップ805において、コンピュータ化されたプレーサ1501を使用して未配置ネットリストに具現化された集積回路設計のための初期配線長ドリブン配置を実行して、論理ゲートの初期配置を表すデータ構造を得ることを含むことは、認識されるであろう。プレーサ1501は、HPWL技術を実装するものなどの市販のまたは学術研究用のプレーサを含むことができ、選択されたプレーサによって、さらに以下に論じられるように、論理ゲートの物理的ピンに必ずしも対応するわけではない接続の追加が可能になることで、本明細書に説明されるアトラクションをもたらすことが可能であることが適切である。
【0037】
さらなるステップ807は、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を識別することを含む。このステップは、例えば、タイマ1503を使用して実行可能である。適したタイマの非限定的な例には、Cadence Tempus(商標)(米国カリフォルニア州サンノゼのCadence Design Systems社の商標)、およびSynopsys Primetime(R)(米国カリフォルニア州マウンテン・ビューのSynopsys社の登録商標)が含まれる。
【0038】
なおさらなるステップ809(
図4および
図5の論述も参照)は、ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対して新たな疑似の2ピン・ネット(アトラクション)を作成して更新されたネットリストを作成することを含む。これは、アトラクション生成部1505によって実行可能であり、このアトラクション生成部1505は、疑似ネットを作成するために本明細書に示される論理ステップを実装する。
【0039】
またさらなるステップ(更新されたネットリストについての繰り返すステップ805)は、更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得ることを含む。これはプレーサ1501を使用して行われ得る。
【0040】
ここで、1つまたは複数の実施形態において使用されるアトラクション、および更新されたネットリストに関するさらなる注釈を提供する。従来、人々は、ネットリストについて考える場合、これを実際の技術のゲートとして考え、この場合、例えば、ANDゲートは2入力を有する。1つまたは複数の実施形態では、疑似の2ピン・ネットが追加されて、例えば、そのANDゲートで終止する場合、このネットは実際は新たな信号を表しておらず、もっと正確に言えば、単にHPWLドリブン配置を最適化するための新たなネットである。1つまたは複数の事例では、更新されたネットリストは、アトラクションが増えた修正された従来のネットリストであり、これは、論理ゲートに対する物理入出力(I/O)と関連付けられておらず、むしろ、HPWL算出を高めるために提供される。従来のネットリストは実際の論理信号の表現である。例えば、インバータの出力によってNANDゲートの入力が駆動され、この関係が2ピン・ネットである。本発明の1つまたは複数の実施形態による「アトラクション」は、チップ上に存在する実際の論理信号を表さないが、HPWLドリブン配置のエンジンによってこのような信号と同等のやり方で使用される2ピン・ネットである。
【0041】
ここで、
図15のデータ構造1507の例示的な部分を示す
図14も参照すると、1つまたは複数の実施形態において、2つの論理ゲート間の新たな接続をもたらすアトラクションをもたらすことが示されている。疑似の2ピン・ネットのエンドポイントは、1つまたは複数の事例では論理ゲートである。1つまたは複数の実施形態は重みを接続に割り当てる。重みは新たな接続に対する(ラベルのような)属性である。既存のネットはまた、このようなラベルを有することができる。ネットに対する重みの概念はそれ自体、配置アルゴリズムではよく知られている。1つの例示的なアプローチでは、全てのネット、物理的接続に対応する両方の従来のネット、および本発明の態様によるアトラクションに対応するネットには、一様な重みが割り当てられる。1つまたは複数の例示的な実施形態では、反復811が実行され、ステップ809が2回目に達し、かつアトラクションが既に存在する場合、(代替的なアプローチでは行われない可能性があるが、新たなアトラクションを生み出すのではなく)重みが増大される。いくつかの事例では、増大量はユーザ設定可能なパラメータである。1つまたは複数の実施形態は、重みを線形に増加させるだけである。
【0042】
よって、再検討として、1つまたは複数の実施形態では、最初に、既知の技術を使用して2つの論理ゲート間の接続をデータ構造にプログラムし、かつその接続に最初の重みを割り当てることによって、2ピンの疑似ネットがもたらされる。例えば、
図14において、第1の反復において、重み「Weight_1_2」を有するアトラクションがGate1とGate2との間にもたらされ、重み「Weight_6_4」を有するアトラクションがGate6とGate4との間にもたらされ、重み「Weight_12_99」を有するアトラクションがGate12とGate99との間にもたらされる。1つの例示的な実施形態では、接続全てには一様な重みが与えられる(すなわち、Weight_1_2=Weight_6_4=Weight_12_99)。当業者は、実際の論理信号の従来の表現に対するこのような一様な重み付けに精通していると思われ、本明細書における教示によって、重みを本発明の「アトラクション」に割り当てることができる。ステップ809が反復時の2回目(第2の反復)に達すると、重みが調節される。ステップ807が2回繰り返されると、クリティカルなソース/シンク経路が再び判断されることになる。論理ゲートのいくつかの対(例えば、Gate49およびGate51)は1回目にはアトラクションを有しておらず現時点でクリティカルであることが見出されており、それらは最初の重みWeight_49_51を得る(1または別の値であり得る)。論理ゲートのいくつかの対は、1回目ではクリティカルであってアトラクションを有し、例えば、Gate6およびGate4では再びクリティカルであり、(代替的なアプローチではないが、Gate6とGate4との間の第2のアトラクションをもたらす代わりに)これらには重みが増やされる(例えば、2倍以上、一般的に、2*Weight_6_4)。(実際の論理信号の従来の表現についての)ネット重み付けはそれ自体、HPWLで精通しているものが既知である。反復ごとに一定量、または当該ネットのタイミングのクリティカルさに比例して増加させることが可能であり、または、いくつかの事例では増加させないことさえ可能である。最も簡易なアプローチでは、1回目では重み=wであり、2回目では2wであり、3回目では3wなどである。わずかな重みだけを加えること、または論じられるように、最悪の負のスラックによる接続により多くの重みを与えることも可能である。さらには、2つのゲート間の接続をどのようにもたらし、かつこれにどのように重み(実際の論理信号の従来の表現として)を割り当てるかについて、当業者は知っており、本明細書における教示によると、重みを本発明の「アトラクション」に割り当てることができる。既知の重み付け技術の非限定的な例には、Chentouf、Mohamed、およびZine El Abidine Alaoui Ismailiによる「A Novel Net Weighting Algorithm for Power and Timing-Driven Placement」、VLSI Design、2018年10月18日、Goplen、Brent、Prashant Saxena、およびSachin Sapatnekarによる、Proceedings 42nd Design Automation Conference, 2005における「Net weighting to reduce repeater counts during placement」、2005年6月13日(503~508頁)、IEEE、および、Ren、Haoxing、David Zhigang Pan、およびDavid S.Kungによる「Sensitivity guided net weighting for placement-driven synthesis」、IEEE Transactions on Computer-Aided Design of Integrated Circuitsand Systems、2005年4月25日、24(5):711-21が含まれる。
図14における重みは、そのように、データ構造1507に含まれ得、プレーサ1501と共有される。アトラクションが配置を高めるための疑似のネットであるため、物理的ピンは指定される必要はない。
【0043】
1つまたは複数の実施形態では、少なくとも1つのタイミング・クリティカルなソース・シンク経路が複数のタイミング・クリティカルなソース/シンク経路を含み、ソース/シンク・エンドポイントの少なくとも1つの対がソース/シンク・エンドポイントの複数の対を含む。
【0044】
1つまたは複数の実施形態は、複数のタイミング・クリティカルなソース/シンク経路を識別するステップ、エンドポイントの複数の対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップ、および修正された配線長ドリブン配置を実行するステップを複数の全反復で繰り返すことをさらに含む。矢印811を参照されたい。本明細書において使用される際、複数の全反復は、1回の実行に加えて少なくとも1つのさらなる実行を含む。反復を中止することは、例えば、一定数の反復、「収束」の基準(例えば、タイミング・メトリクスが改善を停止していて、クリティカルな経路が残っていない、または飽和状態により後続の反復においてタイミングが悪くなっていく)に基づいて、または一定のCPU利用後などに可能である。非限定的な例では、
図8を参照すると、8の反復909および4の反復915があり得る。
【0045】
1つまたは複数の実施形態では、初期配線長ドリブン配置を実行することおよび修正された配線長ドリブン配置を実行することはそれぞれ、半周近似配線長ドリブン配置を適用することを含み、コンピュータ化されたプレーサ1501は半周近似配線長ドリブンのコンピュータ化されたプレーサを含む。
【0046】
場合によって、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの対の間の複数のタイミング・クリティカルなソース/シンク経路を識別することは、コンピュータ化されたユーザ・インターフェースを使用して、当技術分野の専門家から入力を得ることを含むが、より典型的には、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの対の間の複数のタイミング・クリティカルなソース/シンク経路を識別することは、コンピュータ化されたタイミング推定ルーチン(タイマ1503)を使用することを含む。
【0047】
1つまたは複数の実施形態では、コンピュータ化されたタイミング推定ルーチンを使用することは、コンピュータ化されたタイミング推定ルーチンを使用して、ソース/シンク・エンドポイントの対の間で比較的精確である結果を得ることを含む。本明細書の他の所に論じられるように、「比較的精確な」は、ソース/シンク・エンドポイントの対が最悪から最高まで精確にランク付けされるが、実際の到達時間/スラック値が必ずしも正確であるわけではないという明白な意味を有する。
【0048】
図9における931を参照すると、1つまたは複数の実施形態では、更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得ることは、エンドポイントの対を互いに近くなるように移動させることを含む。
【0049】
いくつかの事例では、更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得ることは、(931および933両方で見られる)エンドポイントの対の間の経路の曲がった部分を小さくすることを含む。いくつかのこのような事例931において、更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得ることは、エンドポイントの対を互いに近くなるように移動させることをさらに含む。
【0050】
933で示されるように、場合によって、更新されたネットリスト上の修正された配線長ドリブン配置を実行して、修正された配置を表すデータ構造を得る際に、エンドポイントの対は互いに対して固定される。
【0051】
1つまたは複数の実施形態は、複数の全反復の間に疑似の2ピン・ネットを保持することをさらに含み、
図14のように、Weight_1_2およびWeight_12_99は、第2の反復でクリティカルではなくても第2の反復で保持される。
【0052】
1つまたは複数の実施形態は、論理合成103を実行して、未配置ネットリストに具現化された集積回路設計を得ることと、複数の全反復の後、修正された配置を表すデータ構造の最終バージョンにおいて、仮想タイミング最適化107、クロック最適化109、配線合成および最適化111、およびルーティング113を実行することとをさらに含む。データ構造の「最終バージョン」は、例えば、一般に、反復が最高の性能であれば、最後から2番目の反復または最後の反復によるものとすることができる。
【0053】
図8(921から905に戻る点線の矢印)を参照すると、1つまたは複数の実施形態は、ルーティングの結果に基づいて、複数のタイミング・クリティカルなソース/シンク経路を識別するステップ、エンドポイントの対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップ、および修正された配線長ドリブン配置を実行するステップを新たな複数の全反復で繰り返すことをさらに含む。
【0054】
1つまたは複数の実施形態は、ルーティング921に基づいて物理的な集積回路を製作することをさらに含み、例えば、ステップ921を終結させ、レイアウトを準備してそのレイアウトを設計構造としてインスタンス化し、物理的な集積回路はその設計構造に従って製作可能である。本明細書の他の所に論じられる
図11~
図13を参照されたい。
【0055】
1つまたは複数の実施形態は、911において、修正された配置を表すデータ構造の最終バージョンにおいて記憶素子をクラスタ化しかつ固定することと、複数のタイミング・クリティカルなソース/シンク経路を識別するステップ、エンドポイントの対のそれぞれの対に対する新たな疑似の2ピン・ネットを作成するステップ、および修正された配線長ドリブン配置を実行するステップを、記憶素子をクラスタ化しかつ固定した後の新たな複数の全反復で繰り返すこととをさらに含む(915を参照、また、907および909からアトラクションを取り除くステップ913に留意されたい)。911がクロック最適化またはクロック合成とも呼ばれる物理的クラスタ化を含むことにも留意されたい。
【0056】
さらには、「密集ドリブン」の広がりについて検討する。配置アルゴリズムは、HPWLを単に改善することとは異なる目的による物理的合成フローと呼ばれることが多いが、HPWLの低下をできるだけ少なくすることを保証するために配置エンジンを使用する。有利にこのような事例において本発明の態様を用いることは、タイミングの低下をできるだけ少なくするようにそれらのアルゴリズムをさらに高める。
【0057】
バッファリングおよび合理的な金属層の仮定に関して、物理的合成フローにおける早い段階でのタイミング情報は通常、かなり不精確である。クリティカルな経路が得られることを保証するために適切なステップが行われるべきであることを当業者は認識するであろう。長い配線は、信号を繰り返しかつ強化するバッファを含むことが必要である場合がある。長い配線に対する最良のバッファリング/リピータの解決策は、端末位置がわかるまで判断不可能であるが、その特定のネットのクリティカルさの何らかの知識が存在するまで、端末がどこにあるのかはわからない。タイミング情報は配置を実行するために所望されるが、精確なタイミングにするために、これらがどこに配置されるのかおよびこれらがどのように最適化されるのかを知ることが必要である。この問題は解決困難であるため、特有の技術に基づいて飛行時間型の算出が実行可能であり、接続が適正に最適化される場合の端末(ネットのソースおよびシンク)の間の距離が与えられた遅延の近似が提供される。経路は、短い場合、そのままにされる可能性がある。経路が長い場合、数個のバッファが入れられていることを仮定する。飛行時間型の費用は、特定の金属層について推定可能である。飛行時間は、伝播遅延、さらに、中間バッファ/繰り返し段階と関連付けられた遅延も含む。当業者は、全ての回路要素の場所がまだ知られていない場合に設計プロセスにおいて早いタイミングを実行する問題に精通しており、バッファの挿入および金属層についての仮定がなされる必要があることを承知している。金属層が高いほどより広い配線が使用可能である。低い層で配線される場合にクリティカルな経路は、高い層で配線される場合は全くクリティカルではない場合がある。全ての接続が最も低い金属層にあると仮定することは非現実的であり得る。技術によって、2ピン・ネット(ソースおよびシンク)を前提としてどのルータで行われることになるか、これらの端末間でルータによって配線はどのように引かれることになるのか、およびどのような最適化によって、数個のリピータがその配線に沿って挿入される必要があるのかどうかを決定することになるのかが推定される。これは設計プロセス(仮想タイミング、タイミング推定)においてタイミングが早く実行される時はいつも知られている問題である。本明細書における教示によると、当業者は、適したバッファリングおよび合理的な金属層の仮定を実施することができる。
【0058】
1つまたは複数の実施形態は、電子設計自動化を使用して設計される電子回路のタイミング性能を改善するための方法であって、コンピュータ化されたプレーサ1501から、未配置ネットリストに具現化された集積回路設計に対する初期配線長ドリブン配置の結果を得ることであって、該結果は論理ゲートの初期配置を表すデータ構造を含む、結果を得ることと、コンピュータ化されたタイマ1503から、初期配置を表すデータ構造におけるソース/シンク・エンドポイントの少なくとも1つの対の間の少なくとも1つのタイミング・クリティカルなソース/シンク経路を得ることと、ソース/シンク・エンドポイントの少なくとも1つの対のそれぞれの対に対する新たな疑似の2ピン・ネットを(例えば、生成部1505によって)作成して更新されたネットリストを作成することと、コンピュータ化されたプレーサが更新されたネットリスト上の修正された配線長ドリブン配置を実行することを容易にするように、更新されたネットリストをコンピュータ化されたプレーサに提供して、修正された配置を表すデータ構造を生じさせることとを含む、方法を提供する。
【0059】
1つまたは複数の実施形態では、結果として生じるレイアウトは設計構造としてインスタンス化される。
図11の論述を参照されたい。物理的な集積回路がさらにまた、設計構造に従って製作される。
図11の論述を再び参照されたい。
図12も参照されたい。本明細書に説明される解析プロセスに部分的に基づいて、物理設計データが得られると、これに従って設計された集積回路は、
図12を参照して一般的に説明される既知のプロセスに従って製造可能である。一般的に、最終設計の複数のコピーによるウエハは、それぞれのダイが集積回路の1つのコピーであるように製造されかつ切断される(すなわち、ダイシングされる)。ブロック1110では、プロセスは、最終的な物理レイアウトに基づくリソグラフィ用のマスクを製作することを含む。ブロック1120では、ウエハを製作することは、フォトリソグラフィおよびエッチングを行うためにマスクを使用することを含む。ウエハがダイシングされると、それぞれのダイを試験しかつソートすることは、1130において任意の欠陥のあるダイをフィルタで除去するために行われる。
【0060】
1つまたは複数の実施形態は、メモリ28と、該メモリに結合され、かつ(
図10に示されるように)本明細書に説明される方法ステップのいずれか1つ、いくつか、または全てを実行するまたはその他の場合は容易にするように動作する少なくとも1つのプロセッサ16とを含むコンピュータを含む。1つまたは複数の実施形態では、設計サイクル時に必要であるコンピュータ・リソース量/CPU時間、および人間工学設計時間量は、本発明の態様を使用して低減可能である。代替的には、同じリソースおよび工学設計時間によって、異なる(タイミング性能などに関して)より良いチップが設計可能である。
【0061】
さらに、
図11を参照すると、1つまたは複数の実施形態では、少なくとも1つのプロセッサは、回路設計用の設計構造を生成するように動作し、少なくともいくつかの実施形態では、少なくとも1つのプロセッサは、設計構造に従って物理的な集積回路を製作するように集積回路製造機器を制御するようにさらに動作する。よって、レイアウトは設計構造としてインスタンス化可能であり、設計構造は、設計構造に従って物理的な集積回路の製作を容易にするように製作機器に提供可能である。物理的な集積回路は(例えば、EDAについて本発明の態様を使用しない設計と比較して、向上した配置/タイミング性能により)改善されることになる。
【0062】
図13は、製造される最適化されたマイクロプロセッサ(または他のIC)設計を作成することを担う例示の高水準電子設計自動化(EDA)ツールのフローを示す。設計者は、回路の高位論理記述1201(例えば、VHDLまたはVerilog)から開始可能である。論理合成ツール1203は、論理をコンパイルし、これをこの物理的表現のいずれの意味もなく、推定されたタイミング情報と共に最適化する。配置ツール1205は、論理記述を採用しかつそれぞれのコンポーネントを配置して、設計のそれぞれのエリアにおける密集を最小化することに注意を向ける。クロック合成ツール1207は、ラッチまたはレジスタをクローンする/均衡化する/バッファリングすることによって、クロック・ツリー・ネットワークを最適化する。タイミング・クロージャ・ステップ1209は、バッファリング、配線同調、および回路のリパワリングを含めて、設計に関するいくつかの最適化を実行し、この目標は、タイミング違反なく過剰な電力消費なくルーティング可能な設計を生じさせることである。ルーティング段階1211は配置/最適化設計を採用し、かつ製造違反を引き起こさずに、コンポーネントの全てを接続する配線をどのように作成するかを判断する。ルーティング後のタイミング・クロージャ1213は、ルーティング後に残っているいずれの違反も解決するための最適化の別のセットを実行する。設計仕上げ1215は次いで、製造要件に準拠するように追加の金属形状をネットリストに加える。チェックのステップ1217では、設計が、製造、タイミング、電力、(例えば、本明細書に開示された技術を使用する)エレクトロマイグレーション、またはノイズなど、いずれかの要件に違反しているかどうかを解析する。設計が完全である場合、最終ステップ1219は、製作予定の設計1221において製作される形状全てを表す設計についてのレイアウトを生成することである。
【0063】
本発明またはこの要素の1つまたは複数の実施形態は、メモリと、該メモリに結合され、かつ例示的な方法ステップを実行するように動作する少なくとも1つのプロセッサとを含む装置の形態で実装可能である。
図10は、本発明の1つまたは複数の態様または要素あるいはその両方を実装するのに有用であり得るコンピュータ・システムを示し、本明細書ではクラウド・コンピューティング・ノードと称されるが、クラウドでまたはローカルに提供され得るサーバ、汎用コンピュータなどを代表するものでもある。
【0064】
クラウド・コンピューティング・ノード10では、多数の他の汎用または専用コンピューティング・システム環境もしくは構成で動作するコンピュータ・システム/サーバ12が存在する。コンピュータ・システム/サーバ12で使用するのに適し得る、周知のコンピューティング・システム、環境または構成あるいはその組み合わせの例には、限定はされないが、パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム、シン・クライアント、シック・クライアント、ハンドヘルドまたはラップトップ・デバイス、マルチプロセッサ・システム、マイクロプロセッサベースのシステム、セット・トップ・ボックス、プログラム可能消費者電子機器、ネットワークPC、ミニコンピュータ・システム、メインフレーム・コンピュータ・システム、および上記のシステムまたはデバイスのいずれかを含む分散クラウド・コンピューティング環境などが含まれる。
【0065】
コンピュータ・システム/サーバ12は、プログラム・モジュールなどの、コンピュータ・システムによって実行されるコンピュータ・システム実行可能命令の一般的な文脈で説明され得る。一般に、プログラム・モジュールは、特定のタスクを実行するまたは特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、論理、およびデータ構造などを含み得る。コンピュータ・システム/サーバ12は、通信ネットワークを通してリンクされるリモート処理デバイスによってタスクが実行される分散クラウド・コンピューティング環境において実践されてよい。分散クラウド・コンピューティング環境では、プログラム・モジュールは、メモリ・ストレージ・デバイスを含むローカル・コンピュータ・システム記憶媒体およびリモート・コンピュータ・システム記憶媒体の両方に位置していてよい。
【0066】
図10に示されるように、クラウド・コンピューティング・ノード10におけるコンピュータ・システム/サーバ12は、汎用コンピューティング・デバイスの形態で示されている。コンピュータ・システム/サーバ12のコンポーネントは、限定はされないが、1つまたは複数のプロセッサまたは処理ユニット16と、システム・メモリ28と、システム・メモリ28を含むさまざまなシステム・コンポーネントをプロセッサ16に結合するバス18とを含み得る。
【0067】
バス18は、メモリ・バスまたはメモリ・コントローラと、周辺バスと、アクセラレイテッド・グラフィックス・ポートと、さまざまなバス・アーキテクチャのいずれかを使用するプロセッサ・バスまたはローカル・バスとを含む、いくつかのタイプのバス構造のいずれかの1つまたは複数を表す。限定ではなく例として、このようなアーキテクチャには、業界標準アーキテクチャ(ISA)バス、マイクロ・チャネル・アーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオ・エレクトロニクス・スタンダード・アソシエーション(VESA)ローカル・バス、および周辺コンポーネント相互接続(PCI)バスが含まれる。
【0068】
コンピュータ・システム/サーバ12は通常、さまざまなコンピュータ・システム可読媒体を含む。このような媒体は、コンピュータ・システム/サーバ12によってアクセス可能な任意の利用可能な媒体であってよく、揮発性媒体および不揮発性媒体、取り外し可能な媒体および取り外し不可能な媒体の両方を含む。
【0069】
システム・メモリ28は、ランダム・アクセス・メモリ(RAM)30またはキャッシュ・メモリ32あるいはその両方などの揮発性メモリの形態のコンピュータ・システム可読媒体を含むことができる。コンピュータ・システム/サーバ12は、他の取り外し可能/取り外し不可能な、揮発性/不揮発性のコンピュータ・システム記憶媒体をさらに含んでよい。単に例として、ストレージ・システム34は、取り外し不可能な不揮発性磁気媒体(示されていないが通常は「ハード・ドライブ」と呼ばれる)に対する読み出しおよび書き込みを行うために提供可能である。示されていないが、取り外し可能な不揮発性磁気ディスク(例えば、「フロッピー(R)・ディスク」)に対する読み出しおよび書き込みを行うための磁気ディスク・ドライブ、および、CD-ROM、DVD-ROM、または他の光媒体などの、取り外し可能な不揮発性光ディスクに対する読み出しまたは書き込みを行うための光ディスク・ドライブが提供可能である。このような事例では、それぞれのディスク・ドライブは、1つまたは複数のデータ媒体インターフェースによってバス18に接続可能である。以下でさらに示されかつ説明されるように、メモリ28は、本発明の実施形態の機能を実行するように構成されるプログラム・モジュールのセット(例えば、少なくとも1つ)を有する、少なくとも1つのプログラム製品を含んでよい。
【0070】
プログラム・モジュール42のセット(少なくとも1つ)を有するプログラム/ユーティリティ40は、限定ではなく例としてメモリ28のみならず、オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データに記憶され得る。オペレーティング・システム、1つまたは複数のアプリケーション・プログラム、他のプログラム・モジュール、およびプログラム・データ、またはこれらの何らかの組み合わせのそれぞれは、ネットワーキング環境の実装を含み得る。プログラム・モジュール42は一般的に、本明細書に説明される本発明の実施形態の機能または手法あるいはその両方を実行する。
【0071】
コンピュータ・システム/サーバ12はまた、キーボード、ポインティング・デバイス、ディスプレイ24などの1つまたは複数の外部デバイス14、ユーザがコンピュータ・システム/サーバ12と対話できるようにする1つまたは複数のデバイス、またはコンピュータ・システム/サーバ12が1つまたは複数の他のコンピューティング・デバイスと通信できるようにする任意のデバイス(例えば、ネットワーク・カード、モデムなど)と、あるいはその組み合わせと通信し得る。このような通信は、入出力(I/O)インターフェース22を介して行うことができる。さらにまた、コンピュータ・システム/サーバ12は、ネットワーク・アダプタ20を介して、ローカル・エリア・ネットワーク(LAN)、一般的なワイド・エリア・ネットワーク(WAN)またはパブリック・ネットワーク(例えば、インターネット)あるいはその組み合わせなどの1つまたは複数のネットワークと通信することができる。示されるように、ネットワーク・アダプタ20は、バス18を介してコンピュータ・システム/サーバ12の他のコンポーネントと通信する。示されていないが、他のハードウェア・コンポーネントまたはソフトウェア・コンポーネントあるいはその両方が、コンピュータ・システム/サーバ12と併せて使用可能であることは理解されるべきである。例には、限定はされないが、マイクロコード、デバイス・ドライバ、冗長処理ユニット、外部ディスク・ドライブ・アレイ、RAIDシステム、テープ・ドライブ、およびデータ・アーカイバル・ストレージ・システムなどが含まれる。
【0072】
よって、1つまたは複数の実施形態は、汎用コンピュータまたはワークステーションで実行中のソフトウェアを利用することができる。
図10を参照すると、このような実装形態は、例えば、プロセッサ16、メモリ28、ならびにディスプレイ24、およびキーボードまたはポインティング・デバイスなどの外部デバイス14への入出力インターフェース22を用いる場合がある。本明細書で使用される際、「プロセッサ」という用語は、例えば、CPU(中央処理装置)または他の形態の処理回路あるいはその両方を含むものなどの任意の処理デバイスを含むことが意図されている。さらに、「プロセッサ」という用語は、複数の個別のプロセッサを指す場合がある。「メモリ」という用語は、例えば、RAM(ランダム・アクセス・メモリ)30、ROM(リードオンリ・メモリ)、固定メモリ・デバイス(例えば、ハード・ドライブ34)、取り外し可能なメモリ・デバイス(例えば、ディスケット)、およびフラッシュ・メモリなどのプロセッサまたはCPUと関連付けられるメモリを含むことが意図されている。さらに、本明細書で使用される際、「入出力インターフェース」という語句は、例えば、処理ユニットへのデータを入力するための1つまたは複数のメカニズム(例えば、マウス)、および処理ユニットと関連付けられる結果を提供するための1つまたは複数のメカニズム(例えば、プリンタ)へのインターフェースを想定することが意図されている。プロセッサ16、メモリ28、および入出力インターフェース22は、例えば、データ処理ユニット12の一部としてのバス18を介して相互接続可能である。例えばバス18を介する適した相互接続はまた、コンピュータ・ネットワークとインターフェース接続するように提供可能であるネットワーク・カードなどのネットワーク・インターフェース20に対して、および、適した媒体とインターフェース接続するように提供可能であるディスケットまたはCD-ROMドライブなどの媒体インターフェースに対して提供可能である。
【0073】
それ故に、本発明の手法を実行するための命令またはコードを含むコンピュータ・ソフトウェアは、本明細書に説明されるように、関連するメモリ・デバイス(例えば、ROM、固定、または取り外し可能なメモリ)のうちの1つまたは複数に記憶されてよく、利用される準備ができると、部分的または全体的に(例えば、RAMに)ロードされ、CPUによって実装されてよい。このようなソフトウェアには、ファームウェア、常駐ソフトウェア、およびマイクロコードなどが含まれる可能性があるがこれらに限定されない。
【0074】
プログラム・コードを記憶するまたは実行するあるいはその両方に適したデータ処理システムは、記憶素子28に直接またはシステム・バス18を介して間接的に結合される少なくとも1つのプロセッサ16を含むことになる。記憶素子は、プログラム・コードの実際の実装の間に用いられるローカル・メモリ、バルク・ストレージ、および、実装中にコードがバルク・ストレージから取得されなければならない回数を低減するために、少なくともいくつかのプログラム・コードの一時的な記憶を提供するキャッシュ・メモリ32を含むことができる。
【0075】
入出力デバイス、すなわちI/Oデバイス(キーボード、ディスプレイ、およびポインティング・デバイスなどを含むがこれらに限定されない)は、直接、または介在するI/Oコントローラを通してシステムに結合可能である。
【0076】
ネットワーク・アダプタ20はまた、データ処理システムを、介在するプライベート・ネットワークまたはパブリック・ネットワークを通して他のデータ処理システムまたはリモート・プリンタまたはストレージ・デバイスに結合できるようにするためにシステムに結合されてよい。モデム、ケーブル・モデム、およびイーサネット(R)・カードは、ネットワーク・アダプタの市販のタイプのごくわずかにすぎない。
【0077】
特許請求の範囲を含めて、本明細書において使用される際、「サーバ」には、サーバ・プログラムを実行中の物理的なデータ処理システム(例えば、
図10に示されるようなシステム12)が含まれる。このような物理的なサーバが、ディスプレイおよびキーボードを含んでもよいし含まなくてもよいことは理解されるであろう。
【0078】
本明細書に説明される方法のいずれかが、コンピュータ可読記憶媒体上に具現化される別個のソフトウェア・モジュールを含むシステムを提供する追加のステップを含むことができること、モジュールが、例えば、ブロック図で示されるまたは本明細書において説明されるあるいはその両方の適切な要素のうちのいずれかまたは全て、限定ではなく例として、(例えば、
図15において)説明されるモジュール/ブロック、またはサブモジュール/サブブロック、あるいはその組み合わせのいずれか1つ、いくつか、または全てを含むことができることは留意されるべきである。方法ステップはさらにまた、16などの1つまたは複数のハードウェア・プロセッサ上で実行される、上述されるシステムの別個のソフトウェア・モジュールまたはサブモジュールあるいはその両方を使用して実行可能である。さらに、コンピュータ・プログラム製品は、別個のソフトウェア・モジュールを有するシステムの提供を含めて、本明細書に説明される1つまたは複数の方法ステップを実行するために実装されるように適応されたコードを有するコンピュータ可読記憶媒体を含むことができる。
【0079】
場合によっては用いられ得るユーザ・インターフェースの1つの例は、サーバなどによってユーザのコンピューティング・デバイスのブラウザにサーブされるハイパーテキスト・マークアップ言語(HTML)コードである。HTMLは、ユーザのコンピューティング・デバイス上のブラウザによってパースされて、グラフィカル・ユーザ・インターフェース(GUI)を作成する。
【0080】
例示的なシステムおよび製品の詳細
【0081】
本発明は、任意の可能な技術詳細レベルの統合における、システム、方法、またはコンピュータ・プログラム製品、あるいはその組み合わせであり得る。コンピュータ・プログラム製品は、プロセッサに本発明の態様を実行させるためのコンピュータ可読プログラム命令を有するコンピュータ可読記憶媒体(単数または複数)を含み得る。
【0082】
コンピュータ可読記憶媒体は、命令実行デバイスによって使用するための命令を保持および格納できる有形デバイスであり得る。コンピュータ可読記憶媒体は、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁ストレージ・デバイス、半導体ストレージ・デバイス、または前述の任意の適した組み合わせであってよいが、これらに限定されない。コンピュータ可読記憶媒体のより具体的な例の非網羅的リストは、以下のもの、すなわち、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、リードオンリ・メモリ(ROM)、消去可能プログラマブル・リードオンリ・メモリ(EPROMまたはフラッシュ・メモリ)、スタティック・ランダム・アクセス・メモリ(SRAM)、ポータブル・コンパクト・ディスク・リードオンリ・メモリ(CD-ROM)、デジタル・バーサタイル・ディスク(DVD)、メモリ・スティック、フロッピ・ディスク、機械的に符号化されたデバイス、例えば、パンチカードまたは命令が記録された溝内の隆起構造、および前述の任意の適した組み合わせを含む。コンピュータ可読記憶媒体は、本明細書において使用される際、電波または他の自由に伝播する電磁波、導波路または他の伝送媒体を通して伝播する電磁波(例えば、光ファイバ・ケーブルを通過する光パルス)、またはワイヤを通して伝送される電気信号など、それ自体が一時的信号であると解釈されるべきではない。
【0083】
本明細書に説明されるコンピュータ可読プログラム命令は、コンピュータ可読記憶媒体から各々のコンピューティング/処理デバイスへと、または、ネットワーク、例えば、インターネット、ローカル・エリア・ネットワーク、ワイド・エリア・ネットワークまたは無線ネットワーク、あるいはその組み合わせを介して外部コンピュータまたは外部ストレージ・デバイスへとダウンロード可能である。ネットワークは、銅伝送ケーブル、光伝送ファイバ、無線送信、ルータ、ファイアウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバあるいはその組み合わせを含み得る。それぞれのコンピューティング/処理デバイスにおけるネットワーク・アダプタ・カードまたはネットワーク・インターフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、かつ、該コンピュータ可読プログラム命令を、各々のコンピューティング/処理デバイス内のコンピュータ可読記憶媒体に記憶するために転送する。
【0084】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、集積回路のための構成データ、または、Smalltalk(R)またはC++などのオブジェクト指向プログラミング言語、および、「C」プログラミング言語または同様のプログラミング言語などの手続き型プログラミング言語を含む1つまたは複数のプログラミング言語の任意の組み合わせで書き込まれたソース・コードまたはオブジェクト・コードのどちらかであってよい。コンピュータ可読プログラム命令は、ユーザのコンピュータ上で完全に実行されてもよいし、スタンドアロン・ソフトウェア・パッケージとしてユーザのコンピュータ上で部分的に実行されてもよいし、部分的にユーザのコンピュータ上で、かつ、部分的にリモート・コンピュータ上で実行されてもよいし、リモート・コンピュータまたはサーバ上で完全に実行されてもよい。後者のシナリオでは、リモート・コンピュータは、ローカル・エリア・ネットワーク(LAN)またはワイド・エリア・ネットワーク(WAN)を含む任意のタイプのネットワークを通してユーザのコンピュータに接続されてよい、または、(例えば、インターネット・サービス・プロバイダを使用してインターネットを通して)外部コンピュータへの接続が行われてよい。いくつかの実施形態では、例えば、プログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)を含む電子回路は、本発明の態様を実行するために、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、電子回路をパーソナライズしてよい。
【0085】
本発明の態様について、本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品の、フローチャート図またはブロック図あるいはその両方を参照して本明細書において説明する。フローチャート図またはブロック図あるいはその両方のそれぞれのブロック、およびフローチャート図またはブロック図あるいはその両方におけるブロックの組み合わせが、コンピュータ可読プログラム命令によって実施可能であることは理解されるであろう。
【0086】
これらのコンピュータ可読プログラム命令は、汎用コンピュータ、専用コンピュータ、または他のプログラマブル・データ処理装置のプロセッサを介して実行する命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作を実施する手段をもたらすように機械を生じさせる該コンピュータまたは他のプログラマブル・データ処理装置のプロセッサに提供され得る。これらのコンピュータ可読プログラム命令は、命令が記憶されたコンピュータ可読記憶媒体が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックにおいて指定される機能/動作の態様を実施する命令を含む製品を含むように、コンピュータ、プログラマブル・データ処理装置、または他のデバイスあるいはその組み合わせに特定のやり方で機能するように指図することが可能なコンピュータ可読記憶媒体にも記憶されてよい。
【0087】
コンピュータ可読プログラム命令はまた、コンピュータ、他のプログラマブル・データ処理装置、または他のデバイス上で実行される命令が、フローチャートまたはブロック図あるいはその両方の1つまたは複数のブロックで指定された機能/動作を実施するように、コンピュータ、他のプログラマブル装置、または他のデバイスにロードされ、コンピュータ、他のプログラマブル装置、または他のデバイス上で一連の動作ステップを実行させて、コンピュータ実装プロセスを生じさせてよい。
【0088】
図におけるフローチャートおよびブロック図は、本発明のさまざまな実施形態によるシステム、方法、およびコンピュータ・プログラム製品の考えられる実装のアーキテクチャ、機能性、および動作を示す。これに関して、フローチャートまたはブロック図におけるそれぞれのブロックは、指定された論理関数を実施する1つまたは複数の実行可能命令を含む命令のモジュール、セグメント、または部分を表し得る。いくつかの代替的な実装形態において、ブロックに記される機能は、図に記される順序以外で行われる場合がある。例えば、連続して示される2つのブロックは、実際には、実質的に同時に実行されてよい、または、ブロックは、関与する機能性に応じて逆の順序で実行される時があり得る。ブロック図またはフローチャート図あるいはその両方のそれぞれのブロック、および、ブロック図またはフローチャート図あるいはその両方におけるブロックの組み合わせは、指定された機能または動作を実行する、または、専用ハードウェアとコンピュータ命令との組み合わせを実行する専用ハードウェアベースのシステムによって実装可能であることも留意されたい。
【0089】
半導体設計、製造、または試験、あるいはその組み合わせにおいて使用される例示的な設計プロセス
【0090】
1つまたは複数の実施形態では、本明細書におけるTDA技術を、半導体集積回路設計シミュレーション、試験、レイアウト、または製造、あるいはその組み合わせと統合する。これに関して、
図11は、例えば、半導体IC論理設計、シミュレーション、試験、レイアウト、および製造で使用される例示的な設計フロー700のブロック図を示す。設計フロー700は、本明細書に開示される技術などを使用して解析可能であるものなど、設計構造またはデバイスあるいはその両方の論理的またはその他の場合は機能的に同等な表現を生成するために設計構造またはデバイスを処理するためのプロセス、機械、またはメカニズムあるいはその組み合わせを含む。設計フロー700によって処理または生成あるいはその両方が行われた設計構造は、データ処理システム上で実行またはその他の場合は処理されると、ハードウェア・コンポーネント、回路、デバイス、またはシステムの論理的、構造的、機械的、またはその他の場合は機能的に同等な表現を生成する、データまたは命令あるいはその両方を含むように、機械可読記憶媒体上で符号化され得る。機械には、回路、コンポーネント、デバイス、またはシステムの設計、製造、またはシミュレーションなどのIC設計プロセスで使用されるあらゆる機械が含まれるがこれらに限定されない。例えば、機械には、リソグラフィ機械、マスクを生成するための機械または機器あるいはその両方(例えば、電子ビーム書き込み機)、設計構造をシミュレーションするためのコンピュータまたは機器、製造または試験プロセスで使用されるあらゆる装置、または設計構造の機能的に同等な表現を任意の媒体にプログラムするためのあらゆる機械(例えば、プログラマブル・ゲート・アレイをプログラムするための機械)が含まれ得る。
【0091】
設計フロー700は、設計される表現のタイプによって異なる場合がある。例えば、特定用途向けIC(ASIC)を構築するための設計フロー700は、標準コンポーネントを設計するための設計フロー700、または設計をプログラマブル・アレイ、例えば、Altera(R)社またはXilinx(R)社によって提供されるプログラマブル・ゲート・アレイ(PGA)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)にインスタンス化するための設計フロー700と異なる場合がある。
【0092】
図11は、好ましくは設計プロセス710によって処理される入力設計構造720を含むこのような複数の設計構造を示す。設計構造720は、ハードウェア・デバイスの論理的に同等な機能的表現を生じさせるために設計プロセス710によって生成かつ処理される論理シミュレーション設計構造であってよい。設計構造720は、同様にまたは代替的に、設計プロセス710によって処理されるとハードウェア・デバイスの物理構造の機能的表現を生成するデータまたはプログラム命令あるいはその両方を含んでよい。機能的または構造的あるいはその両方の設計上の特徴を表すかどうかにかかわらず、設計構造720は、コア開発者/設計者によって実装されるなど、電子コンピュータ支援設計(ECAD)を使用して生成されてよい。ゲート・アレイまたは記憶媒体上などで符号化されると、設計構造720は、電子コンポーネント、回路、電子モジュールもしくは論理モジュール、装置、デバイス、またはシステムをシミュレーションするまたはその他の場合は機能的に表すように、設計プロセス710内の1つまたは複数のハードウェア・モジュールまたはソフトウェア・モジュールあるいはその両方によってアクセスおよび処理され得る。そのように、設計構造720は、設計またはシミュレーション・データ処理システムによって処理されると回路またはその他のレベルのハードウェア論理設計を機能的にシミュレーションするまたはその他の場合は表す、人間または機械あるいはその両方により読み取り可能なソース・コード、コンパイルされた構造、およびコンピュータ実行可能コード構造を含む、ファイルまたはその他のデータ構造を含み得る。このようなデータ構造は、VerilogおよびVHDLなどの低水準HDL設計言語、またはCまたはC++などの高水準設計言語あるいはその両方に準拠するまたは適合するあるいはその両方である、ハードウェア記述言語(HDL)設計エンティティまたはその他のデータ構造を含んでよい。
【0093】
設計プロセス710は、好ましくは、設計構造720などの設計構造を含有し得るネットリスト780を生成するように、コンポーネント、回路、デバイス、または論理構造の設計/シミュレーション機能同等物を合成、トランスレート、またはその他の場合は処理するための、ハードウェア・モジュールまたはソフトウェア・モジュールあるいはその両方を用いかつ組み込む。ネットリスト780は、例えば、集積回路設計における他の要素および回路への接続を記述する、ワイヤ、個別コンポーネント、論理ゲート、制御回路、I/Oデバイス、モデルなどのリストを表す、コンパイルまたはその他の場合は処理されたデータ構造を含み得る。ネットリスト780は、ネットリスト780がデバイスの設計仕様およびパラメータに応じて1回または複数回再合成される反復プロセスを使用して合成され得る。本明細書に説明される他の設計構造タイプと同様に、ネットリスト780は、機械可読データ記憶媒体上に記録され得る、またはプログラマブル・ゲート・アレイにプログラムされ得る。媒体は、磁気もしくは光ディスク・ドライブ、プログラマブル・ゲート・アレイ、コンパクト・フラッシュ、またはその他のフラッシュ・メモリなどの不揮発性記憶媒体であってよい。さらにまたは代案では、媒体は、システム・メモリもしくはキャッシュ・メモリ、バッファ領域、またはその他の適したメモリであってよい。
【0094】
設計プロセス710は、ネットリスト780を含むさまざまな入力データ構造タイプを処理するためのハードウェア・モジュールおよびソフトウェア・モジュールを含み得る。このようなデータ構造タイプは、例えば、ライブラリ要素730内に常駐してよく、所与の製造技術(例えば、異なる技術ノード、32nm、45nm、90nmなど)のためのモデル、レイアウト、およびシンボル表現を含む、一般に使用される要素、回路、およびデバイスのセットを含んでよい。データ構造タイプは、設計仕様740、特徴付けデータ750、検証データ760、設計ルール770、および、入力試験パターン、出力試験結果、およびその他の試験情報を含み得る試験データ・ファイル785をさらに含んでよい。設計プロセス710は、例えば、応力解析、熱解析、機械的事象シミュレーション、キャスト、モールド、およびダイ・プレス形成などの動作のプロセス・シミュレーションなどの、標準機械設計プロセスをさらに含み得る。機械設計の当業者には、本発明の範囲および思想から逸脱することなく設計プロセス710で使用される考えられる機械設計ツールおよびアプリケーションの範囲が認識可能である。設計プロセス710は、タイミング解析、検証、設計ルールのチェック、配置およびルーティング動作などの標準回路設計プロセスを実行するためのモジュールも含み得る。疑似ネットリストの反復的な変更を使用する経路ベースのタイミング・ドリブン配置は、本明細書に説明されるように実行可能である。
【0095】
設計プロセス710は、第2の設計構造790を生成するために任意の追加の機械設計またはデータ(該当する場合)に加えて、示されているサポート・データ構造の一部または全てと共に、設計構造720を処理するためにHDLコンパイラおよびシミュレーション・モデル構築ツールなどの論理および物理設計ツールを用いかつ組み込む。設計構造790は、記憶媒体またはプログラマブル・ゲート・アレイ上に、機械デバイスおよび構造のデータの交換のために使用されるデータ・フォーマット(例えば、IGES、DXF、Parasolid XT、JT、DRG、または、このような機械設計構造を記憶またはレンダリングするための任意の他の適したフォーマットで記憶された情報)で常駐する。設計構造720と同様に、設計構造790は、好ましくは、データ記憶媒体上に常駐し、かつ、ECADシステムによって処理されると、1つまたは複数のIC設計などの論理的またはその他の場合は機能的に同等な形態を生成する、1つまたは複数のファイル、データ構造、またはその他のコンピュータ符号化データもしくは命令を含む。1つの実施形態では、設計構造790は、解析されるデバイスを機能的にシミュレーションする、コンパイルされた実行可能HDLシミュレーション・モデルを含んでよい。
【0096】
設計構造790はまた、集積回路のレイアウト・データの交換のために使用されるデータ・フォーマット、またはシンボル・データ・フォーマット(例えば、GDSII(GDS2)、GL1、OASIS、マップ・ファイル、またはこのような設計データ構造を記憶するための任意の他の適したフォーマットで記憶された情報)あるいはその両方を用いてよい。設計構造790は、例えば、シンボル・データ、マップ・ファイル、試験データ・ファイル、設計内容ファイル、製造データ、レイアウト・パラメータ、ワイヤ、金属レベル、ビア、形状、製造ラインをルーティングするためのデータ、および本明細書に説明されるようなデバイスまたは構造体を生産するために製造業者またはその他の設計者/開発者によって必要とされる任意の他のデータ(例えば、libファイル)などの情報を含み得る。設計構造790は、次いで、段階795に進んでよく、ここで、例えば、設計構造790はテープアウトに進み、製造のためにリリースされ、マスク・ハウスにリリースされ、別の設計ハウスに送られ、顧客に返送されるなどが行われる。
【0097】
本発明のさまざまな実施形態の説明は、例示の目的で提示されており、開示された実施形態を網羅することもそれに限定されることも意図するものではない。説明した実施形態の範囲および思想から逸脱しない多くの修正および変形が、当業者には明らかになるであろう。本明細書で使用される専門用語は、実施形態の原理、市場で見出される技術を凌ぐ実際的応用または技術的改善を最も良く説明するために、または、当業者が、本明細書に開示された実施形態を理解できるようにするために選定された。
【国際調査報告】