(57)【要約】【課題】  大規模なＡＳＩＣチップ設計においてもうまく機能する回路設計フロープロセスを提供する。【解決手段】    本発明の一実施の形態は、マッピングされたゲートレベルのネットリストを生成すること、テスト容易化設計（ＤＦＴ（design-for-test））およびクロックツリー構築の段階を通じて当該ゲートレベルのネットリストを実行すること、その結果生成されるネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して再現性を保証する、その結果生成されるネットリストを使用することとを含む。【選択図】図１
2004342100.tif 000002
【特許請求の範囲】
【請求項１】
マッピングされたゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること（６）と、
残りの電気基盤設備を前記ＩＣダイ上に配置すること（６）と
を含む回路設計フロープロセス。
【請求項２】
タイミング見積もりに基づいて、前記配置されたネットリストの回路最適化を行うこと（１０）
をさらに含む請求項１に記載の回路設計フロープロセス。
【請求項３】
前記配置されたネットリストの見積もられた配線および寄生要素を生成すること（１２）と、
前記見積もられた寄生要素(parasitics)を複数の寄生源(sources)からの他の利用可能な寄生要素と結合すること（１２）と
をさらに含む請求項２に記載の回路設計フロープロセス。
【請求項４】
前記見積もられた配線および寄生要素を有する前記配置されたネットリストに対してタイミング分析を実行すること（１４）、
をさらに含む請求項３に記載の回路設計フロープロセス。
【請求項５】
前記配置されたネットリストからネットの実際の配線を生成すること（１８）と、
前記配線されたネットの実際の寄生要素を抽出することであって、それによって、ＩＣレイアウトを生成する、前記配線されたネットの実際の寄生要素を抽出すること（１８）と
をさらに含む請求項４に記載の回路設計フロープロセス。
【請求項６】
前記ＩＣレイアウトに対してタイミング分析を実行すること（２０）
をさらに含む請求項５に記載の回路設計フロープロセス。
【請求項７】
前記重要な電気基盤設備は、
少なくとも１つのＩＯ（入力／出力）回路と、
少なくとも１つの静電放電（ＥＳＤ）保護回路と、
少なくとも１つの大きなレジスタ配列／ファイルと
を含む
請求項１に記載の回路設計フロープロセス。
【請求項８】
マッピングされたゲートレベルネットリストを生成すること（２）と、
ゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること（６）と
とを含む回路設計フロープロセス。
【請求項９】
ゲートレベルネットリストを使用することであって、それによって、残りの電気基盤設備を前記ＩＣダイ上に配置するゲートレベルネットリストを使用する（６）こと
をさらに含む請求項８に記載の回路設計フロープロセス。
【請求項１０】
タイミング見積もりに基づいて、前記配置されたネットリストの回路最適化を行うこと（１０）
をさらに含む請求項９に記載の回路設計フロープロセス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、包括的には、集積回路（ＩＣ）の開発に関し、より詳細には、ＩＣの物理設計用のツールフロープロセスに関する。
【背景技術】
【０００２】
集積回路（ＩＣ）は、通常、シリコンまたは他の半導体材料で通例構成されるモノリシック結晶格子上に製造された数千個のトランジスタを含む。
トランジスタは、導電材料で構成される１つまたは複数の相互接続層の使用を通じて選択的に相互接続されて、特定の機能を実現する。
この特定の機能は、集積回路が対象とする用途によって命令される。
特定用途向け集積回路（ＡＳＩＣ）は、ますます複雑となり、このような回路をより効率的に設計するのに、さまざまなコンピュータ支援設計（ＣＡＤ）ツールが使用されている。
フルスケール設計に必要な時間は、所与のウェハプロセスフロー用に十分特徴付けられている、事前に定義されたセルのライブラリから取り出すことにより大幅に削減される。
【０００３】
集積回路設計に一般によく使用される１つのＣＡＤツールは、合成ツールである。
合成ツールは、通常、回路を機能的に記述するハードウェア記述言語（ＨＤＬ）による回路の記述を受け取り、半導体ウェハ上に形成される実際の回路に対応する回路の記述（ネットリスト）を出力する。
ネットリストは、これからＡＳＩＣを作成する回路素子と、さまざまな回路素子間の相互接続との詳細なリストである。
【０００４】
設計が機能的に正しく、基本的なタイミング基準を満たしていると、ネットリストは、ソフトウェア配置ツールへ入力として渡される。
配置は、その設計のセルを、後に、配線ソフトウェアによって相互接続できるように、シリコンチップ上の物理的な位置にその設計の各セルを割り当てることを伴う。
一定の機能を実行するセルの群（セルブロック）、および、電気的に密接に関連したセルのブロックは、物理的に互いにできるだけ近接して配置される。
物理的に近接することにより、チップ上の空間が保存され、配線が簡単になり、回路の性能が向上する。
また、配置は、セル間の長い相互接続パスにより引き起こされる過剰な容量値および抵抗値とも関連する。
このセル間の長い相互接続パスは、信号遅延を引き起こすことがあり、機能障害につながることがある。
配置の別の目標は、セル間の相互接続を最小にして必要以上の配線混雑を回避するように、セルを割り当てることである。
配置は、手動および／または自動的に行うことができる。
配置が手動で行われる場合、設計者は、セルまたはセルのブロックが配置されることになるチップ（ダイ）上の特定の位置にソフトウェア配置ツールを誘導する。
自動的な配置は、高機能なアルゴリズムおよび事前に定義されたセルライブラリを使用して、セルをチップ上のさまざまな場所に割り当てる。
ライブラリの各セルは、各セルに関する機能、タイミング、およびそれ以外の情報を記述したさまざまな属性を含む。
【０００５】
配置が完了した後、ソフトウェアルータツールが使用され、ＡＳＩＣの相互接続されたレイアウトが生成される。
配線の目的は、論理設計の各ネットの点を接続し、その結果、セル間に必要とされる接続を完了することである。
配線ツールは、最も効率的な面積使用を確実にするように相互接続を行う。
また、配線ツールは、最悪の場合の遅延パスのタイミングも考慮する。
実際の寄生容量および寄生抵抗は、分析装置に入力される(fed into)、この分析装置は、さまざまなプロセスおよび温度条件の下で回路の性能の正確な評価を提供する。
何らかの配線問題が明らかになると、適切な設計変更が行われる。
配線問題が明らかにならない場合には、回路製造用のマスクを生成することができる。
【０００６】
一般に、セルが、配置段階の期間中に最適に配置されていると、配線問題を大幅に低減することができる。
セルの配置を誤ることにより、レイアウト障害が発生することがあり、このレイアウト障害は、場合によっては、最終段階、すなわち、追加されている接続が最終的に残り少なくなった時にしか明らかにならない。
したがって、セルの最適な配置は、配置段階の期間中に達成しておくことが重要である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、いくつかの標準的な配置ベースの合成ツールは、大規模なＡＳＩＣチップ設計ではあまり機能しない。
他のＣＡＤツールでは、最適化が、設計サイクルにおいて比較的遅い段階で行われ、その結果、さまざまな寄生源からの寄生要素間の不一致により、再合成、または、あまりにも多くの繰り返しが行われることがある。
また、既存の配置ベースでない合成ツールは、通常、ワイヤーロードモデルの見積もりを使用するので、タイミングおよびエリアのクローズ（close in timing and area）をうまく行う回路を作成しない。
【課題を解決するための手段】
【０００８】
本発明の一実施の形態は、マッピングされたゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること、残りの電気基盤設備をＩＣダイ上に配置することとを含む回路設計フロープロセスに関する。
【０００９】
本発明の別の実施の形態は、マッピングされたゲートレベルネットリストを生成すること、ゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用することとを含む回路設計フロープロセスを提供する。
【００１０】
本発明の一実施の形態は、マッピングされたゲートレベルのネットリストを生成すること、テスト容易化設計（ＤＦＴ（design-for-test））およびクロックツリー構築の段階を通じて当該ゲートレベルのネットリストを実行すること、その結果生成されるネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路（ＩＣ）ダイ上に事前に配置して再現性を保証する、その結果生成されるネットリストを使用することとを含む回路設計フロープロセスを提供する。
【００１１】
本発明の別の実施の形態では、設計合成ツールを使用することであって、それによって、マッピングされたゲートレベルのネットリストを生成する、設計合成ツールを使用すること、マスタスクリプトを使用することであって、それによって、第１のツールを呼び出して、ゲートレベルのネットリストのテスト容易化設計（ＤＦＴ）およびクロックツリー構築を実行し、その結果生成されるネットリストが、ＩＣの物理設計で利用される重要な電気基盤設備を含む、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第２のツールを呼び出して、重要な電気基盤設備をＩＣダイ上に事前に配置することを実行して再現性を保証する、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第２のツールを呼び出して、残りの電気基盤設備をＩＣダイ上に配置することを実行し、当該配置が、配置されたネットリストを構成する、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第２のツールを呼び出して、配置されたネットリストの回路最適化をタイミング見積もりに基づいて実行する、マスタスクリプトを使用することとを含む、集積回路（ＩＣ）の物理設計用のツールフロープロセスを提供する。
【発明を実施するための最良の形態】
【００１２】
以下では、本発明のいくつかの好ましい実施の形態について、図面の関連した図を参照しながら詳述することにする。
本発明の付加的な実施の形態、特徴、および／または利点は、以下の説明から明らかになり、本発明を実践することにより学ぶことができる。
【００１３】
以下の説明は、本発明を実行するために現在考えられる最良の形態を含む。
この説明は、限定する意味に取られるべきではなく、本発明の一般的な原理を説明する目的でなされるものにすぎない。
【００１４】
本発明の開発において、改良されたＩＣ設計方法論が、一定の重要な回路素子の手動による配置と、それに続く設計プロセスの早期の段階でのタイミング見積もりに基づく回路最適化とを利用できるということが分かった。
したがって、本発明の実施の形態は、一般に、ＡＳＩＣのようなＩＣの物理設計用のツールフロープロセスを対象とする。
このツールフロープロセスは、一定の重要な回路を手動により事前に配置すること、それに続いて、設計プロセスの早期の段階でタイミング見積もりに基づいて回路の最適化を行うこととを含む。
具体的には、事前に配置するプロセスは、クロックツリー、静電放電（ＥＳＤ）保護回路、入力／出力回路、ビットスタックなどのような戦略上重要な電気基盤設備の位置を特定して、これらの電気基盤設備を固定し、それに続いて、チップ回路の残りを自動的に配置することを含み得る。
したがって、寄生要素、タイミング、配線混雑、および回路面積のようなパラメータを見積もる開始時点が確立され、見積もられるパラメータの精度および安定性を改善する。
その結果、これにより、設計の繰り返しループおよび設計段階が高速化され、ダイの使用および頻度が最大にされ、そして結果の予測可能性が改善される。
【００１５】
図１に移って、本発明の一実施の形態による集積回路の設計のフロー図を示す。
図１に示す実施の形態のフローチャートは、設計合成ステップ２から開始する。
設計合成ステップ２は、ＤＥＳＩＧＮ  ＣＯＭＰＩＬＥＲ（商標）または他の適切な回路設計合成ツールを使用して実行されることが好ましい。
ＤＥＳＩＧＮ  ＣＯＭＰＩＬＥＲ（商標）は、カリフォルニア州マウンテンビューのSynopsys, Inc.から購入できる回路設計合成ソフトウェアツールである。
ＡＳＩＣ設計の合成は、設計のブロックごとにタイミング制約を定義することから開始する繰り返しプロセスである。
タイミング制約は、特定のブロックのクロック入力に対する各信号の関係を定義する。
合成環境を定義するファイルも、通常、利用される。
合成環境ファイルは、セルライブラリと、合成中に回路設計合成ツールによって使用される他の関連情報とを指定する。
上述したSynopsysの合成ツールのコマンドラインインターフェースは、例えば、ＵＮＩＸ（登録商標）のシェルでｄｃ＿ｓｈｅｌｌまたはｄｃ＿ｓｈｅｌｌ−ｔのいずれかをタイプ入力することにより起動することができる。
ｄｃ＿ｓｈｅｌｌコマンドは、Synopsys自身の言語に基づくものである一方、ｄｃ＿ｓｈｅｌｌ−ｔコマンドは、標準的なＴｃｌ言語に基づくものである。
回路設計合成ツールは、次に、タイミング制約を使用して設計のレジスタ転送レベル（ＲＴＬ）コードを読み出すことができ、そのコードを構造レベルに合成する。
すなわち、回路設計合成ツールは、マッピングされたゲートレベルネットリストを生成する。
【００１６】
生成されたゲートレベルネットリストは、ＩＢＭ（商標）ソフトウェアＢＯＯＬＥＤＯＺＥＲ（商標）ツールまたは他の論理合成ツールを利用して、ＤＦＴ（テスト容易化設計（Design-For-Test））およびクロックツリー構築ステップ４を通じて実行することができる。
このＩＢＭ（商標）ソフトウェアＢＯＯＬＥＤＯＺＥＲ（商標）ツールは、業界全体にわたって使用され、マサチューセッツ州ウォルサムのIBM Corporationから市販されているＩＢＭ  ＢＬＵＥ  ＬＯＧＩＣ（登録商標）ソフトウェア設計方法論フローツールスイートの一部である。
具体的には、図示する実施の形態のクロックツリー構築には、クロックツリーバッファを挿入することが必要である（図１のステップ４）。
【００１７】
ＤＦＴ技法では、設計サイクルの早期にテスト容易性が融合されており、これが、一般に、ＡＳＩＣ製造後にテスタで標準的に費やされるデバッグ時間の削減につながることから、ＤＦＴ技法は、ＡＳＩＣ設計者の間でますます評判となってきている。
ＡＳＩＣ設計者により現在使用されている主なＤＦＴ技法のうちの２つには、スキャン挿入およびバウンダリスキャン挿入が含まれる。
バウンダリスキャンは、通常、チップを基板から抜くことなく、基板の接続をテストするために使用される。
スキャンは、チップ設計者が、例えば縮退故障のようなチップの不良をテストするために使用される既知の技法である。
スキャン挿入では、テストを容易にするために、設計におけるすべてのフリップフロップを、組み込みロジックを含んだ特別なフロップと取り替えることが必要である。
例えば、ある既知のアーキテクチャでは、Ｄ型フリップフロップの入力に２入力のＭＵＸを組み込むことを基本的に必要とする多重化フリップフロップの使用が必要である。
このＭＵＸの選択信号線は、そのデバイスの動作モードを定義する。
すなわち、この選択信号線は、ＭＵＸが通常動作モード（通常データの入来）であるのか、テストモード（スキャンされたデータの入来）であるのかを定義する。
このスキャンフロップは、ＭＵＸのスキャンデータ入力を使用して共にリンクされ、シリアルシフトレジスタのように機能するスキャンチェーンを形成する。
別の例は、マスタ／スレーブラッチおよび複数のクロックを利用するＬＳＳＤ、すなわちレベルセンシティブスキャン設計（level sensitive scan design）のＩＢＭの方法である。
【００１８】
クロックツリーバッファが挿入された後は、論理合成ツールを使用して、スキャンチェーンを接続すること、ＭＵＸおよびバウンダリスキャン回路のようなテストを容易にする回路を挿入すること、および最上位レベルの論理階層用のデカップリングコンデンサのような他の構造をネットリストへ追加するスクリプトを実行することが可能である。
【００１９】
当業者ならば、他のソフトウェアツール／技法が本発明の意図する目的から逸脱しない限り、このような他のツール／技法を利用して、ＡＳＩＣ設計の早期にテストを容易にする機能を組み込むことが可能であるということが分かる。
例えば、Ｓｙｎｏｐｓｙｓ（登録商標）は、ＤＦＴの機能を、そのＤＦＴコンパイラ（ＤＦＴＣ）を通じて、ＤＥＳＩＧＮ  ＣＯＭＰＩＬＥＲ（商標）スイートのツールに追加する。
このＤＦＴコンパイラは、例えば、ｄｃ＿ｓｈｅｌｌ−ｔ>ｓｅｔ＿ｓｃａｎ＿ｃｏｎｆｉｇｕｒａｔｉｏｎ（スキャン構成の設定）  −ｓｔｙｌｅ  ｍｕｌｔｉｐｌｅｘｅｄ＿ｆｌｉｐ＿ｆｌｏｐ（スタイル  多重化フリップフロップ）＊＊＊その後のｉｎｓｅｒｔ＿ｓｃａｎ（挿入スキャン）＊＊＊により起動することができる。
Ｐｈｙｓｉｃａｌ  Ｃｏｍｐｉｌｅｒ（商標）のスキャンチェーンを縫い合わせるコマンドは、例えば、＊＊＊ｉｎｓｅｒｔ＿ｄｆｔ（ｄｆｔの挿入）＊＊＊によって起動することができる。
【００２０】
本発明の好ましい実施の形態によれば、スクリプトは、図１のステップ６で、ＣＨＩＰＢＥＮＣＨ（商標）（ＩＢＭ（商標）ＢＬＵＥ  ＬＯＧＩＣ（商標）設計フローツールスイートが提供するフロントエンドソフトウェアであるフロアプランツール）、または、他の適切な設計ツールを使用して生成することができる。
他の適切な設計ツールは、すなわち、（ＤＦＴおよびクロックツール構築された）ネットリストから名前およびさまざまな重要な特徴的電気基盤設備で選択され、設計者と対話して、設計プロセスの比較的早期の段階で、ダイ上の事前に設定されたそれぞれのエリアに特定の順序で手動により同じものを事前に配置（固定）し、それによって、再現性を保証するコマンドである（図１のステップ６）。
このようなスクリプトは、あらかじめ定められた順序で複数のサブスクリプトを呼び出して、設計者が、物理設計プロセスの早期に、一定の重要な電気基盤設備の位置を特定して、これらの電気基盤設備を手動によりダイに事前に配置することを可能にすることができる。
例えば、さまざまなサブスクリプトは、次のように実行するようにプログラミングすることができる。
【００２１】
サブスクリプト１。
ＩＯ（入力／出力）回路の位置を特定して、当該回路を事前に配置（固定）し、ＩＯマクロ（ＩＯ回路の群を含むセルライブラリ素子）が、それらのそれぞれのＣ４バンプアウト（ダイ上の入力／出力ポート）に近接することを保証する。
【００２２】
サブスクリプト２。
ＩＯマクロから一定の距離内に配置される静電放電（ＥＳＤ）保護回路の位置を特定して、当該回路を事前に配置（固定）する。
【００２３】
サブスクリプト３。
大きなレジスタ配列／ファイル、すなわち、個々のフリップフロップよりもコンパクトになるように、フリップフロップの配列として機能する大きなマクロファイルの位置を特定して、当該マクロファイルを事前に配置（固定）する。
【００２４】
サブスクリプト４。
Ｈツリーフォーマットでダイの残りのエリアに可能な限り最適にクロックツリーバッファの位置を特定して、当該バッファを事前に配置（固定）する。
【００２５】
サブスクリプト５。
高速リンクインターフェースのようなビットスタック（標準セルゲート）構造の位置を特定して、当該構造を事前に配置（固定）する。
【００２６】
サブスクリプト６。
シンクロナイザおよびリピータのような一定の重要なデータパス、ならびに、抵抗、負荷、または遅延を電気的ニーズと整合させるために回路の配線の一定のバランスを必要とする回路の位置を特定して、それらを事前に配置（固定）する。
【００２７】
サブスクリプト７。
チップの周りに一定の間隔で、大きなスタックおよび小さな個数で配置しなければならないデカップリングコンデンサの位置を特定し、当該デカップリングコンデンサを事前に配置（固定）する。
【００２８】
サブスクリプト８（プレフィル（prefill）ステップ）。
チップ（ダイ）の周りに一定の間隔でＮウェルのタップを挿入する。
【００２９】
サブスクリプト９。
スキャンパスに使用されるＭＵＸおよびフリップフロップのようなＩＯ回路のそばに配置されるバウンダリスキャン回路の位置を特定して、当該回路を事前に配置（固定）する。
【００３０】
サブスクリプト１０。
クロックツリーバッファの周りにおいて、ＩＯマクロに近接して配置しなければならないデカップリングコンデンサの位置を特定して、当該デカップリングコンデンサを事前に配置（固定）する。
デカップリングコンデンサの残りのものは、領域境界に拘束することができ、例えば、ＣＨＩＰＢＥＮＣＨ（商標）の「ｃｐｌａｃｅ」コマンドを使用して配置することができる。
【００３１】
サブスクリプト１１。
必要に応じて、所望のゲートを他のゲートにより近接してスナップする。
いくつかの例として、互いに近接した準安定フリップフロップ（metastability flip-flop）をプルすること、または、レジスタファイルの出力ピンが、エレクトロマイグレーション型の問題などを回避するような弱い駆動能力を有する場合には、バッファをそのレジスタファイルの出力ピンに近接して置くことが挙げられる。
【００３２】
ＡＳＩＣ設計者は、設計プロセスの早期に、重要な電気基盤設備を固定すると、図１のステップ６において、標準的技法に従い、ゲートの階層的プレフィックス（hierarchical prefix）を使用して、固定されていないすべての論理ゲートをダイ上の事前に定義された領域に拘束するために、設計ツール、例えばＣＨＩＰＢＥＮＣＨ（商標）を使用することもできる。
領域拘束は、どのセルブロックが、ダイ上のどの場所に共に配置されるべきかを定義する外周部である。
【００３３】
その後、ＡＳＩＣ設計者は、図１のステップ６において、標準的技法に従い、ＣＨＩＰＢＥＮＣＨ（商標）のゲート配置コマンド「ｃｐｌａｃｅ」または別の設計ツールの同様の機能を利用して、固定されていないすべての論理ゲートを事前に定義された領域に自動的に配置することができる。
これらの領域は、ゲート名のどのプレフィックスがどの領域に入るかを指示するスクリプトによって事前に定義することができる。
「ｃｐｌａｃｅ」アルゴリズムは、ゲートの接続情報を使用して、すべてのゲートが領域のどこに入るかを定義する。
当業者ならば、「ｃｐｌａｃｅ」をタイミングベースモードで実行させるタイミング制約を使用して、この配置の実行を行うことも可能であることが分かる。
【００３４】
ステップ６が完了すると、図１のステップ８において、回路の混雑を調べるために、セルの配置がチェックされる。
例えば、ＡＳＩＣ設計者は、回路の混雑を調べるために、ＣＨＩＰＢＥＮＣＨ（商標）を使用して、配置されたセルをチェックすることができる。
具体的には、ＣＨＩＰＢＥＮＣＨ（商標）を使用して、すべてのセルを共に接続することがどれだけ容易であるかを見積もることができる。
混雑問題が発生すると、設計者は、早期の手動による事前配置を変更することもできるし、領域拘束を変えることもできるし、設計合成（図１のステップ２）に戻ることもできる。
すべての混雑問題が解決された後、または、混雑問題が発生しない場合に、配置されたネットリストは、最適化ステップ、すなわち図１のステップ１０を通過することが好ましい。
【００３５】
例えば、ＣＨＩＰＢＥＮＣＨ（商標）を使用して、配置されたネットリストの標準的なスキャン接続最適化を行うことができる。
スキャン接続最適化ステップを行うことは、望ましい場合がある。
ＢＯＯＬＥＤＯＺＥＲ（商標）は、英数字の名前付けの慣習を使用してスキャンチェーンを接続するように設計されており、その結果、配置の実行後には、物理的に互いに近接して配置されていない（互いにスキャン接続されている）フリップフロップが生成されることがあるためである。
一実施の形態によると、スキャン接続がＢＯＯＬＥＤＯＺＥＲ（商標）によって行われる理由の１つは、このツールが、フリップフロップ出力の余分な負荷を早期にモデル化し、チェーンの長さが既知であり、かつ、バランスされているからである。
ＣＨＩＰＢＥＮＣＨ（商標）の「ＳｃａｎＯｐｔ（スキャン最適化）」コマンドを使用して、配置の近接性に基づき一定のチェーンにスキャン接続を再配置することができる。
他の技法および／またはツールを使用して、配置後のスキャン接続最適化を実行することもできる。
例えば、Synopsys, Inc.が提供するＰＨＹＳＩＣＡＬ  ＣＯＭＰＩＬＥＲ（商標）を使用することができる。
図示した実施の形態によると、スキャン接続最適化の後には、配置されたネットリストの標準的なクロックツリー最適化が続く。
【００３６】
本発明の別の実施の形態によると、ＣＨＩＰＢＥＮＣＨ（商標）を利用して、図１のステップ１０において、設計プロセスの比較的早期の段階で、タイミング見積もりに基づき、配置されたネットリストの回路の最適化を行うことができる。
当業者ならば、配置されたネットリストの回路の最適化を早期に行うことにより、寄生要素、タイミング、配線、混雑、および回路面積の見積もりのためのよい開始時点が提供され、これにより、これらのパラメータの精度および安定性が改善されることが容易に分かる。
具体的には、ＣＨＩＰＢＥＮＣＨ（商標）の「ＴＤＣｏｐｔ」コマンドを使用して、タイミング見積もりに合致するようにゲートのサイズ変更、ゲートの複製の作成、ネットの電源の変更（re-power）などを行うことができる。
【００３７】
本発明のさらに別の実施の形態によると、設計者は、ＣＨＩＰＢＥＮＣＨ（商標）の「ＣｌｏｃｋＯｐｔ（クロック最適化）」コマンドを使用して、配置されたネットリストのクロックツリー再最適化を行うことができる。
この再最適化は、本質的には、微調整ステップである。
「ＴＤＣｏｐｔ」ステップ（上述）後には、フリップフロップのいくつかのサイズが変更されていることがあることから、クロックツリー再最適化を行うことは、一般に望ましい。
サイズを変更すると、フリップフロップの入力容量が変化するので、クロックツリーバッファの負荷が影響を受けることがある。
その結果、クロックツリーは、以前と同様のスキューのバランスとならないことがある。
具体的には、前に構築されたクロックツリーは、今度は、異なるクロックピンシンクを有することになる。
すなわち、前のクロックツリーに対してクロックスキューが悪化する可能性がある。
したがって、この段階でクロックツリーのリーフを微調整することにより、クロックスキューを低く維持することが助けられ、タイミング要件を満足させる際の下流側の問題が回避される。
重要なクロックのいくつかを再構築して、新しいフリップフロップのサイズを明らかにすることができる。
さらに、これらのフリップフロップに関連したリセットクロックツリーおよびテストクロックも同様に最適化することができるが、それらのタイミング要件は、はるかに緩いものであるので、厳密には最適化されない。
具体的には、「ＣｌｏｃｋＯｐｔ」アルゴリズムは、新しいバッファサイズおよび新しいクロックツリー構造がどのようなものであるべきかを決定して、それらのバッファをダイ上に最適に配置するようにプログラミングされる。
【００３８】
図１のステップ１２は、一般に、配置されたネットリストの見積もられた配線および寄生要素を生成することを取り扱う。
より具体的には、本発明の一実施の形態によると、図１のステップ１２は、（１）自動的に生成されたグローバル配線（スタイナ（Steiner））の、信号に対する寄生要素の見積もり、（２）早期の実際の配線実験から得られた寄生要素の結果、および（３）クロックオーバーライドまたはクロックツールが生成した寄生要素、からの利用可能な寄生要素（抵抗値および容量値）を結合することを取り扱う。
【００３９】
グローバル配線の寄生要素は、ＣＨＩＰＢＥＮＣＨ（商標）の「ｒｏｕｔｅ＿ｇｌｏｂａｌ（配線＿グローバル）」コマンドを使用して生成することができる。
このコマンドは、詳細な配線は行わないが、その代わり、配線が、一般に、チップ上のどのタイル（ｇｃｅｌｌ）に入るかを見積もる。
「ｒｏｕｔｅ＿ｇｌｏｂａｌ」アルゴリズムは、どの信号がどのタイルを通過するかを決定するようにプログラミングされる。
しかしながら、このアルゴリズムは、どの配線チャネルが使用されるかに基づいてこれらの信号を正確に割り当てることはしない。
このアルゴリズムは、どれだけ多くのワイヤがタイルを横切らなければならないかに関する情報のみを有する。
したがって、あるタイルを通過するワイヤ数が、収容できる配線チャネルの総数よりも多い場合、そのタイルは、過剰に混雑した状態にあることになる。
具体的には、「ｒｏｕｔｅ＿ｇｌｏｂａｌ」アルゴリズムは、ダイ全体がどれだけ混雑しているかのカラーマップを提供する。
混雑したエリアがあまりにも多いと、設計者は、混雑したすべてのエリアが除去されるまで、フロアプランを変更するか、もしくは、物を周囲に移動させるか、または、ダイをより大きなものにすることになる。
【００４０】
事前の実際の配線実験から得られた寄生データが利用可能であり、かつ、クロックバッファおよびビットスタックのようないくつかの事前に固定されたゲートの一部の配置が変更されていないときはいつでも、設計者は、グローバル配線の寄生（スタイナ）の見積もりに代わって、早期の実験による寄生値を使用することができる。
一般的なルールとして、設計者は、これらのゲートが、ダイ上を移動する予定がなく、かつ、その２つの端点が、所定の場所、例えばＣ４からＩＯへまたはＩＯからビットスタックへ固定されていることを確信するとすぐに、固定されたゲート間の信号を一度に配線することができ、グローバル配線の寄生要素の代わりに、その点からの実際の寄生要素を使用して、設計サイクル全体を短縮することができる。
【００４１】
また、設計者は、ＢＯＯＬＥＤＯＺＥＲ（商標）の「ｃｌｏｃｋＰｒｏ」コマンドを使用して、クロックの寄生見積もりを得ることもできる。
「ｃｌｏｃｋＰｒｏ」アルゴリズム（クロックツール）は、初期クロックツリーを構築し、寄生要素が何であるかの見積もりを提供する。
実際のクロックツリーの配線が行われるまで、これらの寄生見積もりを使用することができる。
寄生見積もりも利用可能でなく、実際の配線データも利用可能でない場合、チップ設計者は、図１のステップ１２において、クロックオーバーライドを使用して、そのクロックを理想的なものとすることができる。
【００４２】
図１のステップ１４は、ＥＩＮＳＴＩＭＥＲ（商標）を使用して実行することができるグローバル配線／見積もり配線を有する配置されたネットリストに対して、標準的で静的なタイミング分析を行うことを取り扱う。
ＥＩＮＳＴＩＭＥＲ（商標）は、ＩＢＭ  ＢＬＵＥ  ＬＯＧＩＣ（登録商標）ソフトウェア設計フローツールスイートの一部でもある。
この型の分析は、設計中のすべての回路の時間を計り、指定されたクロック周期が満たされているかどうかを判断する。
図１のブロック１６に概略的に示すように、一定のパスが、所定のタイミング要件を満たしていない場合、設計者は、問題の重大性に応じて、ステップ２（設計合成）に戻ることもできるし、配置ステップ６に戻ることもできる。
【００４３】
本発明のさらに別の実施の形態によると、ＩＢＭ  ＢＬＵＥ  ＬＯＧＩＣ（登録商標）のＡＳＩＣ設計フローツールスイートのコマンドを使用して、マスタスクリプトを生成することができる。
これらのコマンドは、上記特定したツールのそれぞれをあらかじめ定められた順序で自動的に呼び出すことになる。
このようなマスタスクリプトは、上記で参照した（早期の手動による）事前配置スクリプトを組み込むことができ、ＡＳＩＣ設計フロープロセスを簡略化して合理化することができる一方で、最初から正しく動作する(first-time-right)設計効率を可能にする。
当業者ならば、この種のマスタスクリプトをＡＳＩＣ設計ツールフロープロセスに組み込むと、開発時間および開発コストが削減されて、それにより、設計者が、複雑な設計を市場に素早く届けることが可能になるということが容易に分かる。
【００４４】
本発明の模範的な一実施の形態によると、以下のマスタスクリプト（上述したさまざまな事前配置サブスクリプトを組み込む）が、ＰＣＩＸベースのサーバアプリケーションを一般に対象としたＡＳＩＣの物理設計用のツールフロープロセスに関連して生成された。
【００４５】
パート１：ＴＤＣＯｐｔまでのステップ
# set prefix for current run（現在の実行用のプレフィックスを設定する）
set prefix "VIM0426_pass1" 
set edif_tag "EDIF042601" 
echo [exec date] 
echo $auto_path   
# this list path that CB searches for tcl scripts（これは、ＣＢがｔｃｌスクリプトを検索するパスを一覧表示する）
echo [get_parm_path]
# the constraints file gives coordinates and cell types of IOs, ESD cells, etc（拘束ファイルは、ＩＯ、ＥＳＤセルなどの座標およびセルの型を与える）
read_parms -command read_design -file  ${prefix}_before_init.parms
report_parm -command read_design 
read_design -initialize -pdl_package_file {IA3D12886_A0} -chip_image {IA3D12886} 
nitialize_power -design_object_type {chip} -constraints_file {HDP_PDL.FP11}
# Write out initialized chip（初期化されたチップをすべて書き出す）
exec mkdir -p ${prefix}_after_init
write_design -directory ${prefix}_after_init -name {top} -no_children
write_parms -command read_design -file ${prefix}_after_init.parms
current_cell -root
check_placement -overlap
# Scan trace（トレースをスキャンする）
trace_scan_path -hierarchy_levels 99 -output_directory {HDP/reports} -chain_types {all}
# Save as _after_scanTrace（＿ａｆｔｅｒ＿ｓｃａｎＴｒａｃｅ（スキャントレース後）として保存する）
exec mkdir -p VIM/${prefix}_after_scanTrace
write_design -directory VIM/${prefix}_after_scanTrace -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_after_scanTrace.parms 
# Trace clock nets（クロックネットをトレースする）
source tcl/clock_trace.tcl
# save as _clockTrace（＿ｃｌｏｃｋＴｒａｃｅ（クロックトレース）として保存する）
exec mkdir -p VIM/${prefix}_after_clockTrace
write_design -directory VIM/${prefix}_after_clockTrace -name {top} -no_children
write_parms -command read_design -file etc/app-
parms/${prefix}_after_clockTrace.parms
# make blocks（ブロックを作成する）
source  tcl/create_hier.tcl
# Now estimate block size（次に、ブロックサイズを見積もる）
source tcl/place_size_rlms_core.tcl
echo [cputime]
# place and size of rlms (blocks)（ｒｌｍｓ（ブロック）の配置およびサイズ）
current_cell -root
echo "############ Placing and sizing blocks （ブロックの配置およびサイズの計測）##############"
source tcl/move_and_size_rlms.tcl
current_cell -root
# save as _hier FORCE SAVE（＿ｈｉｅｒとして保存する。強制保存）
exec mkdir -p VIM/${prefix}_HIER_PLACED
write_design -all -directory VIM/${prefix}_HIER_PLACED -name {top}
write_parms -command read_design -file etc/app-parms/${prefix}_HIER_PLACED.parms
# flatten and create movebounds（移動境界を平坦化して作成する）
# Generated by generate_placeSizeRlmsCore_createMb.pl（＿ｐｌａｃｅＳｉｚｅＲｌｍｓＣｏｒｅ＿ｃｒｅａｔｅＭｂ．ｐｌを生成することにより生成される）
# After this step, the Register Arrays are back on the top level, in the lower left hand of the chip（このステップの後、レジスタ配列は、チップの最上位レベルの左下隅に戻される）
# Need to click on Cell GROUP movebounds to see them（Ｃｅｌｌ  ＧＲＯＵＰ（セル群）の移動境界を見るには、当該移動境界をクリックする必要がある）
echo "############ Creating movebounds（移動境界の作成） ###########"
source tcl/create_mb.tcl
echo "############ Removing ioaffinity gates from movebounds（ＩＯアフィニティゲートを移動境界から除去する） ###########"
source tcl/remove_from_mbound.tcl
echo "############ Adding decaps to movebounds（移動境界にｄｅｃａｐ（デキャップ）を追加する）  ###########"
source tcl/add_decaps_to_mbounds.tcl
echo "############ Setting last_unused for place_old_decap.tcl end point to: $last_unused（ｐｌａｃｅ＿ｏｌｄ＿ｄｅｃａｐ．ｔｃｌの端点を＄ｌａｓｔ＿ｕｎｕｓｅｄに設定）"
echo "             Set in add_decaps_to_mbounds.tcl script（ａｄｄ＿ｄｅｃａｐｓ＿ｔｏ＿ｍｂｏｕｎｄｓ．ｔｃｌのスクリプトに設定） "
current_cell -root
# Save as _mbounds（＿ｍｂｏｕｎｄｓとして保存する）
exec mkdir -p VIM/${prefix}_mbounds
write_design VIM/${prefix}_mbounds -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_mbounds.parms
echo [cputime]
# place clock buffers (SCB), register files (RA), bitstacks and balanced route gates（クロックバッファ（ＳＣＢ）、レジスタファイル（ＲＡ）、ビットスタック、およびバランス配線ゲートを配置する）
echo "############ Placing RAs（ＲＡの配置） ##############"
source  tcl/place_ra.tcl
echo "############ Placing SCBs（ＳＣＢの配置） ############"
source  tcl/place_scb.tcl 
echo "############ Placing bitstacks（ビットスタックの配置） ############"
source  tcl/place_bstack.tcl
echo "############ Sourcing new bstacks...（新しいビットスタックの情報源を明らかにする） ############"
current_cell -root
source  tcl/place_io_bstack.tcl
echo "############ Placing balanced route related gates（バランス配線に関連したゲートを配置する） #####"
current_cell -root
source tcl/balanced_route_placement.tcl
echo [cputime]
current_cell -root
check_placement -overlap
# Save as _fixed（＿ｆｉｘｅｄとして保存する）
exec mkdir -p VIM/${prefix}_fixed
write_design -directory VIM/${prefix}_fixed -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_fixed.parms
# more decaps （より多くのｄｅｃａｐ）
echo "############ Placing NEW DECAPS（新しいＤＥＣＡＰを配置する）  ###############"
source tcl/place_new_decaps.tcl
echo [cputime]
current_cell -root
check_placement -overlap
# save as _large_decaps（＿ｌａｒｇｅ＿ｄｅｃａｐｓとして保存する）
exec mkdir -p VIM/${prefix}_large_decaps
write_design -directory VIM/${prefix}_large_decaps -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_large_decaps.parms
#prefill (nwell contacts)（プレフィル（ｎウェルの接点）
echo "############ PREFILL（プレフィル） ############"
current_cell -root
add_filler_cells -prefill
echo [cputime]
current_cell -root
check_placement -overlap
# save as _prefill（＿ｐｒｅｆｉｌｌとして保存する）
exec mkdir -p VIM/${prefix}_prefill
write_design -directory VIM/${prefix}_prefill -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_prefill.parms
# place wrappers（ラッパを配置する）
echo "############ Placing RA wrappers（ＲＡラッパの配置） ##########"
source tcl/place_ra_wrappers.tcl
echo [cputime]
current_cell -root
check_placement -overlap
#Save as _wrappers（＿ｗｒａｐｐｅｒｓとして保存する）
exec mkdir -p VIM/${prefix}_wrappers
write_design -directory VIM/${prefix}_wrappers -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_wrappers.parms
# ioaffinity placement（ＩＯアフィニティの配置）
echo "############ Placing ioaffinity（ＩＯアフィニティの配置） #############"
source tcl/io_affinity.fixwarn.tcl
io_affinity ioaffinity/io_affinity_pd.$edif_tag
echo [cputime]
current_cell -root
check_placement -overlap
# save as _affinitized（＿ａｆｆｉｎｉｔｉｚｅｄとして保存する）
exec mkdir -p  VIM/${prefix}_affinitized
write_design  VIM/${prefix}_affinitized -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_affinitized.parms
# decaps around IO and SCBs（ＩＯおよびＳＣＢの周りのｄｅｃａｐ）
# NOTE: Place only 1 ring around!!（注意：周りに１リングのみを配置すること！）
echo "############ Placing DECAPS（ＤＥＣＡＰの配置）  ###############"
source tcl/place_decaps_if_space_2X_new.tcl
echo "############# Setting last_decap_from2X to $last_decap_from2X before calling place_old_decaps_new.tcl （ｐｌａｃｅ＿ｏｌｄ＿ｄｅｃａｐｓ＿ｎｅｗ．ｔｃｌを呼び出す前にｌａｓｔ＿ｄｅｃａｐ＿ｆｒｏｍ２Ｘを＄ｌａｓｔ＿ｄｅｃａｐ＿ｆｒｏｍ２Ｘに設定） "
source tcl/place_old_decaps_new.tcl
# save as _decaps（＿ｄｅｃａｐｓとして保存する）
exec mkdir -p VIM/${prefix}_decaps
write_design -force_specified_only -directory VIM/${prefix}_decaps -name {top}
write_parms -command read_design -file etc/app-parms/${prefix}_decaps.parms
echo [cputime]
current_cell -root
check_placement -overlap
# cplace with absolute movebounds!（絶対移動境界を有するｃｐｌａｃｅ）
echo "########### Starting cplace（ｃｐａｌｃｅの開始）...... ############"
source tcl/cplace.tcl
echo [cputime]
check_placement -overlap -check_unplaced
### global route（グローバル配線）
#echo "########### Starting congestion analysis（混雑の分析の開始）.... ############"
#source tcl/global_route.tcl
# save as _PLACED --- FORCE SAVE!（＿ＰＬＡＣＥＤとして保存する。強制保存！）
exec mkdir -p VIM/${prefix}_PLACED
write_design -force_specified_only -directory VIM/${prefix}_PLACED -name {top}
write_parms -command read_design -file etc/app-parms/${prefix}_placed.parms
# snap moves（移動をスナップする）
source  tcl/snap_move.tcl
echo [cputime]
check_placement -overlap 
# save as _snap_moved（＿ｓｎａｐ＿ｍｏｖｅｄとして保存する）
exec mkdir -p VIM/${prefix}_snap_moved
write_design -directory VIM/${prefix}_snap_moved -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_snap_moved.parms
# ScanOpt（ＳｃａｎＯｐｔ（スキャン最適化））
optimize_scan_path -hierarchy_levels 99 -output_directory {HDP/reports} -chain_types {all}
# save as _scanOpted（＿ｓｃａｎＯｐｔｅｄとして保存する）
exec mkdir -p  VIM/${prefix}_scanOpted
write_design -directory  VIM/${prefix}_scanOpted -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_scanOpted.parms
current_cell -root
check_placement -overlap 
# ClockOpt（ＣｌｏｃｋＯｐｔ（クロック最適化））
source tcl/clock_opt.tcl
# save as _clockOpted（＿ｃｌｏｃｋＯｐｔｅｄとして保存する）
exec mkdir -p VIM/${prefix}_clockOpted
write_design -directory VIM/${prefix}_clockOpted -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_clockOpted.parms
current_cell -root
check_placement -check_unplaced
# Legalize（合法化する）
source tcl/legalize.tcl
echo [cputime]
current_cell -root
check_placement -overlap -check_unplaced
echo "### FIXING all global clock cells in place!（すべてのグローバルなクロックセルを所定の位置に固定する）"
current_cell -root
select_cell -name "glob_clk_box_0_*"
set_location_fixed -value 1
current_cell -root
# Save as _legalized（＿ｌｅｇａｌｉｚｅｄとして保存する）
exec mkdir -p VIM/${prefix}_LEGALIZED
write_design -force_specified_only -directory VIM/${prefix}_LEGALIZED -name {top}
write_parms -command read_design -file /etc/app-parms/${prefix}_LEGALIZED.parms
set_ignore_pin -scan FALSE -clock FALSE
【００４６】
パート２：この時点でＴＤＣｏｐｔを実行する。
#### NEED TO GENERATE NEW clock optimization  FILES FROM TDCOPTED VIM（ＴＤＣＯＰＴＥＤ  ＶＩＭから新しいクロック最適化ファイルを生成する必要がある）.
【００４７】
パート３：ＴＤＣｏｐｔの後のステップ
# set prefix for current run（現在の実行用のプレフィックスを設定）
set prefix "VIM0426_pass1"
set edif_tag "EDIF0426"
echo [exec date] 
echo $auto_path 
# this list path that CB searches for tcl scripts（これは、ＣＢがｔｃｌスクリプトを検索するパスを一覧表示する）
echo [get_parm_path]
# load _TDCOPT vim（＿ＴＤＣＯＰＴ  ｖｉｍをロードする）
# call legalize_after_tdcopt.tcl （ｌｅｇａｌｉｚｅ＿ａｆｔｅｒ＿ｔｄｃｏｐｔ．ｔｃｌを呼び出す）
# look at placement errors in member group window. Choose groups of fixed gates if necessary , （メンバグループウィンドウの配置エラーを調べる。必要に応じて、固定したゲートの群を選択し、）
#   give list a name : set unfixed_splitters [list_selection] and unfix. （リストに名前を与える：ｕｎｆｉｘｅｄ＿ｓｐｌｉｔｔｅｒｓ［ｌｉｓｔ＿ｓｅｌｅｃｔｉｏｎ］を設定し、取り外す）
# Call legalize_after_tdcopt again. （ｌｅｇａｌｉｚｅ＿ａｆｔｅｒ＿ｔｄｃｏｐｔを再び呼び出す）
# Fix the list of gates! set_location_fixed unfixed_splitters -value 1（ゲートのリストを固定する！  ｓｅｔ＿ｌｏｃａｔｉｏｎ＿ｆｉｘｅｄ  ｕｎｆｉｘｅｄ＿ｓｐｌｉｔｔｅｒｓ−値１）
# repeat as necessary（必要に応じて繰り返す）
# Save VIM and parms so that you can load them for this tcl script.（ＶＩＭおよびｐａｒｍｓをこのｔｃｌスクリプト用にロードできるように、これらを保存する）
# Therefore, save parms as: ${prefix}_tdcopt_LEGALIZED.parms as used below. （したがって、以下で使用されるような＄｛ｐｒｅｆｉｘ｝＿ｔｄｃｏｐｔ＿ＬＥＧＡＬＩＺＥＤ．ｐａｒｍｓとしてｐａｒｍｓを保存する）
# read _tdcopt_LEGALIZED parms（＿ｔｄｃｏｐｔ＿ＬＥＧＡＬＩＺＥＤ  ｐａｒｍｓを読み出す）
read_parms -command read_design -file etc/app-parms/${prefix}_tdcopt_LEGALIZED.parms
report_parm -command read_design
read_design -name  {top}
current_cell -root
check_placement -overlap -check_unplaced
# clockOpt（クロック最適化）
source  tcl/clock_opt_glob_clk.tcl
echo [cputime]
# save as reOpted （ｒｅＯｐｔｅｄとして保存する）
exec mkdir -p VIM/${prefix}_reOpted
write_design -directory VIM/${prefix}_reOpted -name {top} -no_children
write_parms -command read_design -file etc/app-parms/${prefix}_reOpted.parms
# Legalize（合法化）
source tcl/legalize_after_reOpt.tcl
# Save as _legalized（＿ｌｅｇａｌｉｚｅｄとして保存する）
exec mkdir -p VIM/${prefix}_reOpted_LEGALIZED
write_design -force_specified_only -directory VIM/${prefix}_reOpted_LEGALIZED -name {top}
write_parms -command read_design -file etc/app-parms/${prefix}_reOpted_LEGALIZED.parms
current_cell -root
set_ignore_pin -scan FALSE -clock FALSE
set_ignore_pin -clock FALSE
source tcl/global_route.tcl
### rap/rc generation（ｒａｐ／ｒｃ生成）
source tcl/generate_cap_rc.tcl
echo [cputime]
【００４８】
ステップ１４の完了後、配置されたネットリストをレイアウトベンダに提供することができる。
レイアウトベンダは、標準的技法に従って、設計中のすべてのネットの実際の配線を行うことになる。
すべてのネットが、指定された金属層で接続されると、このベンダは、図１のステップ１８において、実際の寄生要素（容量値および抵抗値）を抽出することができ、タイミング分析を行うために、生成されたレイアウトをＡＳＩＣ設計者に提供することができる。
次いで、設計者は、標準的技法にしたがって、図１のステップ２０で、実際の寄生要素を有する実際の配線で静的なタイミング分析を行うことができる。
具体的には、一実施の形態によると、設計者は、実際の容量値および抵抗値をＥＩＮＳＴＩＭＥＲ（商標）ソフトウェアツールに再び入力して、タイミング要件が満たされているかどうかを判断することができる。
いくつかのパスがタイミング要件を満たしていない場合（図１のブロック２２）、設計者は、問題の重大性に応じて、図１の配置ステップ６に戻らなければならない場合もあるし、設計合成ステップ２に戻らなければならない場合もある。
タイミング問題が発生していない場合、または、すべてのタイミング問題が解決した後（図１のブロック２２）に、ツールフロープロセスは完了する。
【００４９】
当業者ならば、ステップ２０のタイミングの結果が、比較的小さなエラーを含む場合には、技術変更指示（ＥＣＯ）型の変更を行い得るということが容易に分かる。
例えば、ＡＳＩＣ設計者は、ＣＨＩＰＢＥＮＣＨ（商標）ツールでバッファのようなゲートを数個追加するか、または、ゲートのサイズを変更して、容量またはスルーもしくはホールドの違反のようないくつかのタイミングの違反を修正することができる。
後にタイミングをクローズするために、設計者は、労力を追加することなく、必要に応じて、ネットリストにいくつかのバッファを挿入して配置することもできるし、またはいくつかのバッファをあちこちに移動させることもできるし、あるいはいくつかのバッファのサイズを大きくしてバッファの配置を合法化することもできる。
【００５０】
上述した新規なツールフロープロセスは、面積および寄生要素の見積もりの処理に関連した不安定性の問題が解決しつつ、タイミング、配線混雑、およびダイエリアに関するクロージャを得るために機能する。
新規なツールフロープロセスは、結果の再現性および予測可能性を向上させつつ、チップ設計者によって行われる分析を円滑にし、かつ、安定させる。
【００５１】
当業者ならば、さまざまな他のＩＣの設計方法論のツールおよび／または構成も、本発明の意図する目的および範囲から逸脱しないという条件で、上述した実施の形態で利用できることを理解すべきである。
【００５２】
本発明を、好ましい実施の形態について詳細に説明してきたが、本発明の範囲および精神から逸脱しないで、さまざまな変更および変形を行い得ることも理解されるべきである。
例えば、Synopsys, IncによるＰＨＹＳＩＣＡＬ  ＣＯＭＰＩＬＥＲ（商標）によって利用されるもののような物理アウェア合成フロー（physically aware synthesis flow）では、設計合成ステップおよび配置ステップを結合することができる。
【００５３】
本発明を実践したものは、上述した応用に限定されるものでないことに注目することは重要である。
他の多くの応用および／または変更したものが、本発明の意図した目的から逸脱しないという条件で利用することができる。
【００５４】
さらに、一実施の形態の一部として図示して説明した特徴が、上述した特定の実施の形態に限定されないように、それらの特徴を別の実施の形態で使用して、さらに別の実施の形態を提供できることが当業者には理解されるべきである。
したがって、このようなすべての変更、実施の形態、および変形が、添付した特許請求の範囲およびそれらの均等物の範囲内に入る限り、本発明は、このようなすべての変更、実施の形態、および変形を網羅することが意図されている。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施の形態による集積回路の物理設計用のツールフロープロセスのフローチャートである。
【符号の説明】
【００５６】
２〜２２・・・ステップ、
【図１】
2004342100.tif 000003