JP2004342100A - 集積回路の物理設計用のツールフロープロセス - Google Patents
集積回路の物理設計用のツールフロープロセス Download PDFInfo
- Publication number
- JP2004342100A JP2004342100A JP2004134979A JP2004134979A JP2004342100A JP 2004342100 A JP2004342100 A JP 2004342100A JP 2004134979 A JP2004134979 A JP 2004134979A JP 2004134979 A JP2004134979 A JP 2004134979A JP 2004342100 A JP2004342100 A JP 2004342100A
- Authority
- JP
- Japan
- Prior art keywords
- design
- flow process
- netlist
- circuit
- tcl
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/39—Circuit design at the physical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】 大規模なASICチップ設計においてもうまく機能する回路設計フロープロセスを提供する。
【解決手段】 本発明の一実施の形態は、マッピングされたゲートレベルのネットリストを生成すること、テスト容易化設計(DFT(design-for-test))およびクロックツリー構築の段階を通じて当該ゲートレベルのネットリストを実行すること、その結果生成されるネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して再現性を保証する、その結果生成されるネットリストを使用することとを含む。
【選択図】図1
【解決手段】 本発明の一実施の形態は、マッピングされたゲートレベルのネットリストを生成すること、テスト容易化設計(DFT(design-for-test))およびクロックツリー構築の段階を通じて当該ゲートレベルのネットリストを実行すること、その結果生成されるネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して再現性を保証する、その結果生成されるネットリストを使用することとを含む。
【選択図】図1
Description
本開示は、包括的には、集積回路(IC)の開発に関し、より詳細には、ICの物理設計用のツールフロープロセスに関する。
集積回路(IC)は、通常、シリコンまたは他の半導体材料で通例構成されるモノリシック結晶格子上に製造された数千個のトランジスタを含む。
トランジスタは、導電材料で構成される1つまたは複数の相互接続層の使用を通じて選択的に相互接続されて、特定の機能を実現する。
この特定の機能は、集積回路が対象とする用途によって命令される。
特定用途向け集積回路(ASIC)は、ますます複雑となり、このような回路をより効率的に設計するのに、さまざまなコンピュータ支援設計(CAD)ツールが使用されている。
フルスケール設計に必要な時間は、所与のウェハプロセスフロー用に十分特徴付けられている、事前に定義されたセルのライブラリから取り出すことにより大幅に削減される。
トランジスタは、導電材料で構成される1つまたは複数の相互接続層の使用を通じて選択的に相互接続されて、特定の機能を実現する。
この特定の機能は、集積回路が対象とする用途によって命令される。
特定用途向け集積回路(ASIC)は、ますます複雑となり、このような回路をより効率的に設計するのに、さまざまなコンピュータ支援設計(CAD)ツールが使用されている。
フルスケール設計に必要な時間は、所与のウェハプロセスフロー用に十分特徴付けられている、事前に定義されたセルのライブラリから取り出すことにより大幅に削減される。
集積回路設計に一般によく使用される1つのCADツールは、合成ツールである。
合成ツールは、通常、回路を機能的に記述するハードウェア記述言語(HDL)による回路の記述を受け取り、半導体ウェハ上に形成される実際の回路に対応する回路の記述(ネットリスト)を出力する。
ネットリストは、これからASICを作成する回路素子と、さまざまな回路素子間の相互接続との詳細なリストである。
合成ツールは、通常、回路を機能的に記述するハードウェア記述言語(HDL)による回路の記述を受け取り、半導体ウェハ上に形成される実際の回路に対応する回路の記述(ネットリスト)を出力する。
ネットリストは、これからASICを作成する回路素子と、さまざまな回路素子間の相互接続との詳細なリストである。
設計が機能的に正しく、基本的なタイミング基準を満たしていると、ネットリストは、ソフトウェア配置ツールへ入力として渡される。
配置は、その設計のセルを、後に、配線ソフトウェアによって相互接続できるように、シリコンチップ上の物理的な位置にその設計の各セルを割り当てることを伴う。
一定の機能を実行するセルの群(セルブロック)、および、電気的に密接に関連したセルのブロックは、物理的に互いにできるだけ近接して配置される。
物理的に近接することにより、チップ上の空間が保存され、配線が簡単になり、回路の性能が向上する。
また、配置は、セル間の長い相互接続パスにより引き起こされる過剰な容量値および抵抗値とも関連する。
このセル間の長い相互接続パスは、信号遅延を引き起こすことがあり、機能障害につながることがある。
配置の別の目標は、セル間の相互接続を最小にして必要以上の配線混雑を回避するように、セルを割り当てることである。
配置は、手動および/または自動的に行うことができる。
配置が手動で行われる場合、設計者は、セルまたはセルのブロックが配置されることになるチップ(ダイ)上の特定の位置にソフトウェア配置ツールを誘導する。
自動的な配置は、高機能なアルゴリズムおよび事前に定義されたセルライブラリを使用して、セルをチップ上のさまざまな場所に割り当てる。
ライブラリの各セルは、各セルに関する機能、タイミング、およびそれ以外の情報を記述したさまざまな属性を含む。
配置は、その設計のセルを、後に、配線ソフトウェアによって相互接続できるように、シリコンチップ上の物理的な位置にその設計の各セルを割り当てることを伴う。
一定の機能を実行するセルの群(セルブロック)、および、電気的に密接に関連したセルのブロックは、物理的に互いにできるだけ近接して配置される。
物理的に近接することにより、チップ上の空間が保存され、配線が簡単になり、回路の性能が向上する。
また、配置は、セル間の長い相互接続パスにより引き起こされる過剰な容量値および抵抗値とも関連する。
このセル間の長い相互接続パスは、信号遅延を引き起こすことがあり、機能障害につながることがある。
配置の別の目標は、セル間の相互接続を最小にして必要以上の配線混雑を回避するように、セルを割り当てることである。
配置は、手動および/または自動的に行うことができる。
配置が手動で行われる場合、設計者は、セルまたはセルのブロックが配置されることになるチップ(ダイ)上の特定の位置にソフトウェア配置ツールを誘導する。
自動的な配置は、高機能なアルゴリズムおよび事前に定義されたセルライブラリを使用して、セルをチップ上のさまざまな場所に割り当てる。
ライブラリの各セルは、各セルに関する機能、タイミング、およびそれ以外の情報を記述したさまざまな属性を含む。
配置が完了した後、ソフトウェアルータツールが使用され、ASICの相互接続されたレイアウトが生成される。
配線の目的は、論理設計の各ネットの点を接続し、その結果、セル間に必要とされる接続を完了することである。
配線ツールは、最も効率的な面積使用を確実にするように相互接続を行う。
また、配線ツールは、最悪の場合の遅延パスのタイミングも考慮する。
実際の寄生容量および寄生抵抗は、分析装置に入力される(fed into)、この分析装置は、さまざまなプロセスおよび温度条件の下で回路の性能の正確な評価を提供する。
何らかの配線問題が明らかになると、適切な設計変更が行われる。
配線問題が明らかにならない場合には、回路製造用のマスクを生成することができる。
配線の目的は、論理設計の各ネットの点を接続し、その結果、セル間に必要とされる接続を完了することである。
配線ツールは、最も効率的な面積使用を確実にするように相互接続を行う。
また、配線ツールは、最悪の場合の遅延パスのタイミングも考慮する。
実際の寄生容量および寄生抵抗は、分析装置に入力される(fed into)、この分析装置は、さまざまなプロセスおよび温度条件の下で回路の性能の正確な評価を提供する。
何らかの配線問題が明らかになると、適切な設計変更が行われる。
配線問題が明らかにならない場合には、回路製造用のマスクを生成することができる。
一般に、セルが、配置段階の期間中に最適に配置されていると、配線問題を大幅に低減することができる。
セルの配置を誤ることにより、レイアウト障害が発生することがあり、このレイアウト障害は、場合によっては、最終段階、すなわち、追加されている接続が最終的に残り少なくなった時にしか明らかにならない。
したがって、セルの最適な配置は、配置段階の期間中に達成しておくことが重要である。
セルの配置を誤ることにより、レイアウト障害が発生することがあり、このレイアウト障害は、場合によっては、最終段階、すなわち、追加されている接続が最終的に残り少なくなった時にしか明らかにならない。
したがって、セルの最適な配置は、配置段階の期間中に達成しておくことが重要である。
しかしながら、いくつかの標準的な配置ベースの合成ツールは、大規模なASICチップ設計ではあまり機能しない。
他のCADツールでは、最適化が、設計サイクルにおいて比較的遅い段階で行われ、その結果、さまざまな寄生源からの寄生要素間の不一致により、再合成、または、あまりにも多くの繰り返しが行われることがある。
また、既存の配置ベースでない合成ツールは、通常、ワイヤーロードモデルの見積もりを使用するので、タイミングおよびエリアのクローズ(close in timing and area)をうまく行う回路を作成しない。
他のCADツールでは、最適化が、設計サイクルにおいて比較的遅い段階で行われ、その結果、さまざまな寄生源からの寄生要素間の不一致により、再合成、または、あまりにも多くの繰り返しが行われることがある。
また、既存の配置ベースでない合成ツールは、通常、ワイヤーロードモデルの見積もりを使用するので、タイミングおよびエリアのクローズ(close in timing and area)をうまく行う回路を作成しない。
本発明の一実施の形態は、マッピングされたゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること、残りの電気基盤設備をICダイ上に配置することとを含む回路設計フロープロセスに関する。
本発明の別の実施の形態は、マッピングされたゲートレベルネットリストを生成すること、ゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用することとを含む回路設計フロープロセスを提供する。
本発明の一実施の形態は、マッピングされたゲートレベルのネットリストを生成すること、テスト容易化設計(DFT(design-for-test))およびクロックツリー構築の段階を通じて当該ゲートレベルのネットリストを実行すること、その結果生成されるネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して再現性を保証する、その結果生成されるネットリストを使用することとを含む回路設計フロープロセスを提供する。
本発明の別の実施の形態では、設計合成ツールを使用することであって、それによって、マッピングされたゲートレベルのネットリストを生成する、設計合成ツールを使用すること、マスタスクリプトを使用することであって、それによって、第1のツールを呼び出して、ゲートレベルのネットリストのテスト容易化設計(DFT)およびクロックツリー構築を実行し、その結果生成されるネットリストが、ICの物理設計で利用される重要な電気基盤設備を含む、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第2のツールを呼び出して、重要な電気基盤設備をICダイ上に事前に配置することを実行して再現性を保証する、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第2のツールを呼び出して、残りの電気基盤設備をICダイ上に配置することを実行し、当該配置が、配置されたネットリストを構成する、マスタスクリプトを使用すること、マスタスクリプトを使用することであって、それによって、第2のツールを呼び出して、配置されたネットリストの回路最適化をタイミング見積もりに基づいて実行する、マスタスクリプトを使用することとを含む、集積回路(IC)の物理設計用のツールフロープロセスを提供する。
以下では、本発明のいくつかの好ましい実施の形態について、図面の関連した図を参照しながら詳述することにする。
本発明の付加的な実施の形態、特徴、および/または利点は、以下の説明から明らかになり、本発明を実践することにより学ぶことができる。
本発明の付加的な実施の形態、特徴、および/または利点は、以下の説明から明らかになり、本発明を実践することにより学ぶことができる。
以下の説明は、本発明を実行するために現在考えられる最良の形態を含む。
この説明は、限定する意味に取られるべきではなく、本発明の一般的な原理を説明する目的でなされるものにすぎない。
この説明は、限定する意味に取られるべきではなく、本発明の一般的な原理を説明する目的でなされるものにすぎない。
本発明の開発において、改良されたIC設計方法論が、一定の重要な回路素子の手動による配置と、それに続く設計プロセスの早期の段階でのタイミング見積もりに基づく回路最適化とを利用できるということが分かった。
したがって、本発明の実施の形態は、一般に、ASICのようなICの物理設計用のツールフロープロセスを対象とする。
このツールフロープロセスは、一定の重要な回路を手動により事前に配置すること、それに続いて、設計プロセスの早期の段階でタイミング見積もりに基づいて回路の最適化を行うこととを含む。
具体的には、事前に配置するプロセスは、クロックツリー、静電放電(ESD)保護回路、入力/出力回路、ビットスタックなどのような戦略上重要な電気基盤設備の位置を特定して、これらの電気基盤設備を固定し、それに続いて、チップ回路の残りを自動的に配置することを含み得る。
したがって、寄生要素、タイミング、配線混雑、および回路面積のようなパラメータを見積もる開始時点が確立され、見積もられるパラメータの精度および安定性を改善する。
その結果、これにより、設計の繰り返しループおよび設計段階が高速化され、ダイの使用および頻度が最大にされ、そして結果の予測可能性が改善される。
したがって、本発明の実施の形態は、一般に、ASICのようなICの物理設計用のツールフロープロセスを対象とする。
このツールフロープロセスは、一定の重要な回路を手動により事前に配置すること、それに続いて、設計プロセスの早期の段階でタイミング見積もりに基づいて回路の最適化を行うこととを含む。
具体的には、事前に配置するプロセスは、クロックツリー、静電放電(ESD)保護回路、入力/出力回路、ビットスタックなどのような戦略上重要な電気基盤設備の位置を特定して、これらの電気基盤設備を固定し、それに続いて、チップ回路の残りを自動的に配置することを含み得る。
したがって、寄生要素、タイミング、配線混雑、および回路面積のようなパラメータを見積もる開始時点が確立され、見積もられるパラメータの精度および安定性を改善する。
その結果、これにより、設計の繰り返しループおよび設計段階が高速化され、ダイの使用および頻度が最大にされ、そして結果の予測可能性が改善される。
図1に移って、本発明の一実施の形態による集積回路の設計のフロー図を示す。
図1に示す実施の形態のフローチャートは、設計合成ステップ2から開始する。
設計合成ステップ2は、DESIGN COMPILER(商標)または他の適切な回路設計合成ツールを使用して実行されることが好ましい。
DESIGN COMPILER(商標)は、カリフォルニア州マウンテンビューのSynopsys, Inc.から購入できる回路設計合成ソフトウェアツールである。
ASIC設計の合成は、設計のブロックごとにタイミング制約を定義することから開始する繰り返しプロセスである。
タイミング制約は、特定のブロックのクロック入力に対する各信号の関係を定義する。
合成環境を定義するファイルも、通常、利用される。
合成環境ファイルは、セルライブラリと、合成中に回路設計合成ツールによって使用される他の関連情報とを指定する。
上述したSynopsysの合成ツールのコマンドラインインターフェースは、例えば、UNIX(登録商標)のシェルでdc_shellまたはdc_shell−tのいずれかをタイプ入力することにより起動することができる。
dc_shellコマンドは、Synopsys自身の言語に基づくものである一方、dc_shell−tコマンドは、標準的なTcl言語に基づくものである。
回路設計合成ツールは、次に、タイミング制約を使用して設計のレジスタ転送レベル(RTL)コードを読み出すことができ、そのコードを構造レベルに合成する。
すなわち、回路設計合成ツールは、マッピングされたゲートレベルネットリストを生成する。
図1に示す実施の形態のフローチャートは、設計合成ステップ2から開始する。
設計合成ステップ2は、DESIGN COMPILER(商標)または他の適切な回路設計合成ツールを使用して実行されることが好ましい。
DESIGN COMPILER(商標)は、カリフォルニア州マウンテンビューのSynopsys, Inc.から購入できる回路設計合成ソフトウェアツールである。
ASIC設計の合成は、設計のブロックごとにタイミング制約を定義することから開始する繰り返しプロセスである。
タイミング制約は、特定のブロックのクロック入力に対する各信号の関係を定義する。
合成環境を定義するファイルも、通常、利用される。
合成環境ファイルは、セルライブラリと、合成中に回路設計合成ツールによって使用される他の関連情報とを指定する。
上述したSynopsysの合成ツールのコマンドラインインターフェースは、例えば、UNIX(登録商標)のシェルでdc_shellまたはdc_shell−tのいずれかをタイプ入力することにより起動することができる。
dc_shellコマンドは、Synopsys自身の言語に基づくものである一方、dc_shell−tコマンドは、標準的なTcl言語に基づくものである。
回路設計合成ツールは、次に、タイミング制約を使用して設計のレジスタ転送レベル(RTL)コードを読み出すことができ、そのコードを構造レベルに合成する。
すなわち、回路設計合成ツールは、マッピングされたゲートレベルネットリストを生成する。
生成されたゲートレベルネットリストは、IBM(商標)ソフトウェアBOOLEDOZER(商標)ツールまたは他の論理合成ツールを利用して、DFT(テスト容易化設計(Design-For-Test))およびクロックツリー構築ステップ4を通じて実行することができる。
このIBM(商標)ソフトウェアBOOLEDOZER(商標)ツールは、業界全体にわたって使用され、マサチューセッツ州ウォルサムのIBM Corporationから市販されているIBM BLUE LOGIC(登録商標)ソフトウェア設計方法論フローツールスイートの一部である。
具体的には、図示する実施の形態のクロックツリー構築には、クロックツリーバッファを挿入することが必要である(図1のステップ4)。
このIBM(商標)ソフトウェアBOOLEDOZER(商標)ツールは、業界全体にわたって使用され、マサチューセッツ州ウォルサムのIBM Corporationから市販されているIBM BLUE LOGIC(登録商標)ソフトウェア設計方法論フローツールスイートの一部である。
具体的には、図示する実施の形態のクロックツリー構築には、クロックツリーバッファを挿入することが必要である(図1のステップ4)。
DFT技法では、設計サイクルの早期にテスト容易性が融合されており、これが、一般に、ASIC製造後にテスタで標準的に費やされるデバッグ時間の削減につながることから、DFT技法は、ASIC設計者の間でますます評判となってきている。
ASIC設計者により現在使用されている主なDFT技法のうちの2つには、スキャン挿入およびバウンダリスキャン挿入が含まれる。
バウンダリスキャンは、通常、チップを基板から抜くことなく、基板の接続をテストするために使用される。
スキャンは、チップ設計者が、例えば縮退故障のようなチップの不良をテストするために使用される既知の技法である。
スキャン挿入では、テストを容易にするために、設計におけるすべてのフリップフロップを、組み込みロジックを含んだ特別なフロップと取り替えることが必要である。
例えば、ある既知のアーキテクチャでは、D型フリップフロップの入力に2入力のMUXを組み込むことを基本的に必要とする多重化フリップフロップの使用が必要である。
このMUXの選択信号線は、そのデバイスの動作モードを定義する。
すなわち、この選択信号線は、MUXが通常動作モード(通常データの入来)であるのか、テストモード(スキャンされたデータの入来)であるのかを定義する。
このスキャンフロップは、MUXのスキャンデータ入力を使用して共にリンクされ、シリアルシフトレジスタのように機能するスキャンチェーンを形成する。
別の例は、マスタ/スレーブラッチおよび複数のクロックを利用するLSSD、すなわちレベルセンシティブスキャン設計(level sensitive scan design)のIBMの方法である。
ASIC設計者により現在使用されている主なDFT技法のうちの2つには、スキャン挿入およびバウンダリスキャン挿入が含まれる。
バウンダリスキャンは、通常、チップを基板から抜くことなく、基板の接続をテストするために使用される。
スキャンは、チップ設計者が、例えば縮退故障のようなチップの不良をテストするために使用される既知の技法である。
スキャン挿入では、テストを容易にするために、設計におけるすべてのフリップフロップを、組み込みロジックを含んだ特別なフロップと取り替えることが必要である。
例えば、ある既知のアーキテクチャでは、D型フリップフロップの入力に2入力のMUXを組み込むことを基本的に必要とする多重化フリップフロップの使用が必要である。
このMUXの選択信号線は、そのデバイスの動作モードを定義する。
すなわち、この選択信号線は、MUXが通常動作モード(通常データの入来)であるのか、テストモード(スキャンされたデータの入来)であるのかを定義する。
このスキャンフロップは、MUXのスキャンデータ入力を使用して共にリンクされ、シリアルシフトレジスタのように機能するスキャンチェーンを形成する。
別の例は、マスタ/スレーブラッチおよび複数のクロックを利用するLSSD、すなわちレベルセンシティブスキャン設計(level sensitive scan design)のIBMの方法である。
クロックツリーバッファが挿入された後は、論理合成ツールを使用して、スキャンチェーンを接続すること、MUXおよびバウンダリスキャン回路のようなテストを容易にする回路を挿入すること、および最上位レベルの論理階層用のデカップリングコンデンサのような他の構造をネットリストへ追加するスクリプトを実行することが可能である。
当業者ならば、他のソフトウェアツール/技法が本発明の意図する目的から逸脱しない限り、このような他のツール/技法を利用して、ASIC設計の早期にテストを容易にする機能を組み込むことが可能であるということが分かる。
例えば、Synopsys(登録商標)は、DFTの機能を、そのDFTコンパイラ(DFTC)を通じて、DESIGN COMPILER(商標)スイートのツールに追加する。
このDFTコンパイラは、例えば、dc_shell−t>set_scan_configuration(スキャン構成の設定) −style multiplexed_flip_flop(スタイル 多重化フリップフロップ)***その後のinsert_scan(挿入スキャン)***により起動することができる。
Physical Compiler(商標)のスキャンチェーンを縫い合わせるコマンドは、例えば、***insert_dft(dftの挿入)***によって起動することができる。
例えば、Synopsys(登録商標)は、DFTの機能を、そのDFTコンパイラ(DFTC)を通じて、DESIGN COMPILER(商標)スイートのツールに追加する。
このDFTコンパイラは、例えば、dc_shell−t>set_scan_configuration(スキャン構成の設定) −style multiplexed_flip_flop(スタイル 多重化フリップフロップ)***その後のinsert_scan(挿入スキャン)***により起動することができる。
Physical Compiler(商標)のスキャンチェーンを縫い合わせるコマンドは、例えば、***insert_dft(dftの挿入)***によって起動することができる。
本発明の好ましい実施の形態によれば、スクリプトは、図1のステップ6で、CHIPBENCH(商標)(IBM(商標)BLUE LOGIC(商標)設計フローツールスイートが提供するフロントエンドソフトウェアであるフロアプランツール)、または、他の適切な設計ツールを使用して生成することができる。
他の適切な設計ツールは、すなわち、(DFTおよびクロックツール構築された)ネットリストから名前およびさまざまな重要な特徴的電気基盤設備で選択され、設計者と対話して、設計プロセスの比較的早期の段階で、ダイ上の事前に設定されたそれぞれのエリアに特定の順序で手動により同じものを事前に配置(固定)し、それによって、再現性を保証するコマンドである(図1のステップ6)。
このようなスクリプトは、あらかじめ定められた順序で複数のサブスクリプトを呼び出して、設計者が、物理設計プロセスの早期に、一定の重要な電気基盤設備の位置を特定して、これらの電気基盤設備を手動によりダイに事前に配置することを可能にすることができる。
例えば、さまざまなサブスクリプトは、次のように実行するようにプログラミングすることができる。
他の適切な設計ツールは、すなわち、(DFTおよびクロックツール構築された)ネットリストから名前およびさまざまな重要な特徴的電気基盤設備で選択され、設計者と対話して、設計プロセスの比較的早期の段階で、ダイ上の事前に設定されたそれぞれのエリアに特定の順序で手動により同じものを事前に配置(固定)し、それによって、再現性を保証するコマンドである(図1のステップ6)。
このようなスクリプトは、あらかじめ定められた順序で複数のサブスクリプトを呼び出して、設計者が、物理設計プロセスの早期に、一定の重要な電気基盤設備の位置を特定して、これらの電気基盤設備を手動によりダイに事前に配置することを可能にすることができる。
例えば、さまざまなサブスクリプトは、次のように実行するようにプログラミングすることができる。
サブスクリプト1。
IO(入力/出力)回路の位置を特定して、当該回路を事前に配置(固定)し、IOマクロ(IO回路の群を含むセルライブラリ素子)が、それらのそれぞれのC4バンプアウト(ダイ上の入力/出力ポート)に近接することを保証する。
IO(入力/出力)回路の位置を特定して、当該回路を事前に配置(固定)し、IOマクロ(IO回路の群を含むセルライブラリ素子)が、それらのそれぞれのC4バンプアウト(ダイ上の入力/出力ポート)に近接することを保証する。
サブスクリプト2。
IOマクロから一定の距離内に配置される静電放電(ESD)保護回路の位置を特定して、当該回路を事前に配置(固定)する。
IOマクロから一定の距離内に配置される静電放電(ESD)保護回路の位置を特定して、当該回路を事前に配置(固定)する。
サブスクリプト3。
大きなレジスタ配列/ファイル、すなわち、個々のフリップフロップよりもコンパクトになるように、フリップフロップの配列として機能する大きなマクロファイルの位置を特定して、当該マクロファイルを事前に配置(固定)する。
大きなレジスタ配列/ファイル、すなわち、個々のフリップフロップよりもコンパクトになるように、フリップフロップの配列として機能する大きなマクロファイルの位置を特定して、当該マクロファイルを事前に配置(固定)する。
サブスクリプト4。
Hツリーフォーマットでダイの残りのエリアに可能な限り最適にクロックツリーバッファの位置を特定して、当該バッファを事前に配置(固定)する。
Hツリーフォーマットでダイの残りのエリアに可能な限り最適にクロックツリーバッファの位置を特定して、当該バッファを事前に配置(固定)する。
サブスクリプト5。
高速リンクインターフェースのようなビットスタック(標準セルゲート)構造の位置を特定して、当該構造を事前に配置(固定)する。
高速リンクインターフェースのようなビットスタック(標準セルゲート)構造の位置を特定して、当該構造を事前に配置(固定)する。
サブスクリプト6。
シンクロナイザおよびリピータのような一定の重要なデータパス、ならびに、抵抗、負荷、または遅延を電気的ニーズと整合させるために回路の配線の一定のバランスを必要とする回路の位置を特定して、それらを事前に配置(固定)する。
シンクロナイザおよびリピータのような一定の重要なデータパス、ならびに、抵抗、負荷、または遅延を電気的ニーズと整合させるために回路の配線の一定のバランスを必要とする回路の位置を特定して、それらを事前に配置(固定)する。
サブスクリプト7。
チップの周りに一定の間隔で、大きなスタックおよび小さな個数で配置しなければならないデカップリングコンデンサの位置を特定し、当該デカップリングコンデンサを事前に配置(固定)する。
チップの周りに一定の間隔で、大きなスタックおよび小さな個数で配置しなければならないデカップリングコンデンサの位置を特定し、当該デカップリングコンデンサを事前に配置(固定)する。
サブスクリプト8(プレフィル(prefill)ステップ)。
チップ(ダイ)の周りに一定の間隔でNウェルのタップを挿入する。
チップ(ダイ)の周りに一定の間隔でNウェルのタップを挿入する。
サブスクリプト9。
スキャンパスに使用されるMUXおよびフリップフロップのようなIO回路のそばに配置されるバウンダリスキャン回路の位置を特定して、当該回路を事前に配置(固定)する。
スキャンパスに使用されるMUXおよびフリップフロップのようなIO回路のそばに配置されるバウンダリスキャン回路の位置を特定して、当該回路を事前に配置(固定)する。
サブスクリプト10。
クロックツリーバッファの周りにおいて、IOマクロに近接して配置しなければならないデカップリングコンデンサの位置を特定して、当該デカップリングコンデンサを事前に配置(固定)する。
デカップリングコンデンサの残りのものは、領域境界に拘束することができ、例えば、CHIPBENCH(商標)の「cplace」コマンドを使用して配置することができる。
クロックツリーバッファの周りにおいて、IOマクロに近接して配置しなければならないデカップリングコンデンサの位置を特定して、当該デカップリングコンデンサを事前に配置(固定)する。
デカップリングコンデンサの残りのものは、領域境界に拘束することができ、例えば、CHIPBENCH(商標)の「cplace」コマンドを使用して配置することができる。
サブスクリプト11。
必要に応じて、所望のゲートを他のゲートにより近接してスナップする。
いくつかの例として、互いに近接した準安定フリップフロップ(metastability flip-flop)をプルすること、または、レジスタファイルの出力ピンが、エレクトロマイグレーション型の問題などを回避するような弱い駆動能力を有する場合には、バッファをそのレジスタファイルの出力ピンに近接して置くことが挙げられる。
必要に応じて、所望のゲートを他のゲートにより近接してスナップする。
いくつかの例として、互いに近接した準安定フリップフロップ(metastability flip-flop)をプルすること、または、レジスタファイルの出力ピンが、エレクトロマイグレーション型の問題などを回避するような弱い駆動能力を有する場合には、バッファをそのレジスタファイルの出力ピンに近接して置くことが挙げられる。
ASIC設計者は、設計プロセスの早期に、重要な電気基盤設備を固定すると、図1のステップ6において、標準的技法に従い、ゲートの階層的プレフィックス(hierarchical prefix)を使用して、固定されていないすべての論理ゲートをダイ上の事前に定義された領域に拘束するために、設計ツール、例えばCHIPBENCH(商標)を使用することもできる。
領域拘束は、どのセルブロックが、ダイ上のどの場所に共に配置されるべきかを定義する外周部である。
領域拘束は、どのセルブロックが、ダイ上のどの場所に共に配置されるべきかを定義する外周部である。
その後、ASIC設計者は、図1のステップ6において、標準的技法に従い、CHIPBENCH(商標)のゲート配置コマンド「cplace」または別の設計ツールの同様の機能を利用して、固定されていないすべての論理ゲートを事前に定義された領域に自動的に配置することができる。
これらの領域は、ゲート名のどのプレフィックスがどの領域に入るかを指示するスクリプトによって事前に定義することができる。
「cplace」アルゴリズムは、ゲートの接続情報を使用して、すべてのゲートが領域のどこに入るかを定義する。
当業者ならば、「cplace」をタイミングベースモードで実行させるタイミング制約を使用して、この配置の実行を行うことも可能であることが分かる。
これらの領域は、ゲート名のどのプレフィックスがどの領域に入るかを指示するスクリプトによって事前に定義することができる。
「cplace」アルゴリズムは、ゲートの接続情報を使用して、すべてのゲートが領域のどこに入るかを定義する。
当業者ならば、「cplace」をタイミングベースモードで実行させるタイミング制約を使用して、この配置の実行を行うことも可能であることが分かる。
ステップ6が完了すると、図1のステップ8において、回路の混雑を調べるために、セルの配置がチェックされる。
例えば、ASIC設計者は、回路の混雑を調べるために、CHIPBENCH(商標)を使用して、配置されたセルをチェックすることができる。
具体的には、CHIPBENCH(商標)を使用して、すべてのセルを共に接続することがどれだけ容易であるかを見積もることができる。
混雑問題が発生すると、設計者は、早期の手動による事前配置を変更することもできるし、領域拘束を変えることもできるし、設計合成(図1のステップ2)に戻ることもできる。
すべての混雑問題が解決された後、または、混雑問題が発生しない場合に、配置されたネットリストは、最適化ステップ、すなわち図1のステップ10を通過することが好ましい。
例えば、ASIC設計者は、回路の混雑を調べるために、CHIPBENCH(商標)を使用して、配置されたセルをチェックすることができる。
具体的には、CHIPBENCH(商標)を使用して、すべてのセルを共に接続することがどれだけ容易であるかを見積もることができる。
混雑問題が発生すると、設計者は、早期の手動による事前配置を変更することもできるし、領域拘束を変えることもできるし、設計合成(図1のステップ2)に戻ることもできる。
すべての混雑問題が解決された後、または、混雑問題が発生しない場合に、配置されたネットリストは、最適化ステップ、すなわち図1のステップ10を通過することが好ましい。
例えば、CHIPBENCH(商標)を使用して、配置されたネットリストの標準的なスキャン接続最適化を行うことができる。
スキャン接続最適化ステップを行うことは、望ましい場合がある。
BOOLEDOZER(商標)は、英数字の名前付けの慣習を使用してスキャンチェーンを接続するように設計されており、その結果、配置の実行後には、物理的に互いに近接して配置されていない(互いにスキャン接続されている)フリップフロップが生成されることがあるためである。
一実施の形態によると、スキャン接続がBOOLEDOZER(商標)によって行われる理由の1つは、このツールが、フリップフロップ出力の余分な負荷を早期にモデル化し、チェーンの長さが既知であり、かつ、バランスされているからである。
CHIPBENCH(商標)の「ScanOpt(スキャン最適化)」コマンドを使用して、配置の近接性に基づき一定のチェーンにスキャン接続を再配置することができる。
他の技法および/またはツールを使用して、配置後のスキャン接続最適化を実行することもできる。
例えば、Synopsys, Inc.が提供するPHYSICAL COMPILER(商標)を使用することができる。
図示した実施の形態によると、スキャン接続最適化の後には、配置されたネットリストの標準的なクロックツリー最適化が続く。
スキャン接続最適化ステップを行うことは、望ましい場合がある。
BOOLEDOZER(商標)は、英数字の名前付けの慣習を使用してスキャンチェーンを接続するように設計されており、その結果、配置の実行後には、物理的に互いに近接して配置されていない(互いにスキャン接続されている)フリップフロップが生成されることがあるためである。
一実施の形態によると、スキャン接続がBOOLEDOZER(商標)によって行われる理由の1つは、このツールが、フリップフロップ出力の余分な負荷を早期にモデル化し、チェーンの長さが既知であり、かつ、バランスされているからである。
CHIPBENCH(商標)の「ScanOpt(スキャン最適化)」コマンドを使用して、配置の近接性に基づき一定のチェーンにスキャン接続を再配置することができる。
他の技法および/またはツールを使用して、配置後のスキャン接続最適化を実行することもできる。
例えば、Synopsys, Inc.が提供するPHYSICAL COMPILER(商標)を使用することができる。
図示した実施の形態によると、スキャン接続最適化の後には、配置されたネットリストの標準的なクロックツリー最適化が続く。
本発明の別の実施の形態によると、CHIPBENCH(商標)を利用して、図1のステップ10において、設計プロセスの比較的早期の段階で、タイミング見積もりに基づき、配置されたネットリストの回路の最適化を行うことができる。
当業者ならば、配置されたネットリストの回路の最適化を早期に行うことにより、寄生要素、タイミング、配線、混雑、および回路面積の見積もりのためのよい開始時点が提供され、これにより、これらのパラメータの精度および安定性が改善されることが容易に分かる。
具体的には、CHIPBENCH(商標)の「TDCopt」コマンドを使用して、タイミング見積もりに合致するようにゲートのサイズ変更、ゲートの複製の作成、ネットの電源の変更(re-power)などを行うことができる。
当業者ならば、配置されたネットリストの回路の最適化を早期に行うことにより、寄生要素、タイミング、配線、混雑、および回路面積の見積もりのためのよい開始時点が提供され、これにより、これらのパラメータの精度および安定性が改善されることが容易に分かる。
具体的には、CHIPBENCH(商標)の「TDCopt」コマンドを使用して、タイミング見積もりに合致するようにゲートのサイズ変更、ゲートの複製の作成、ネットの電源の変更(re-power)などを行うことができる。
本発明のさらに別の実施の形態によると、設計者は、CHIPBENCH(商標)の「ClockOpt(クロック最適化)」コマンドを使用して、配置されたネットリストのクロックツリー再最適化を行うことができる。
この再最適化は、本質的には、微調整ステップである。
「TDCopt」ステップ(上述)後には、フリップフロップのいくつかのサイズが変更されていることがあることから、クロックツリー再最適化を行うことは、一般に望ましい。
サイズを変更すると、フリップフロップの入力容量が変化するので、クロックツリーバッファの負荷が影響を受けることがある。
その結果、クロックツリーは、以前と同様のスキューのバランスとならないことがある。
具体的には、前に構築されたクロックツリーは、今度は、異なるクロックピンシンクを有することになる。
すなわち、前のクロックツリーに対してクロックスキューが悪化する可能性がある。
したがって、この段階でクロックツリーのリーフを微調整することにより、クロックスキューを低く維持することが助けられ、タイミング要件を満足させる際の下流側の問題が回避される。
重要なクロックのいくつかを再構築して、新しいフリップフロップのサイズを明らかにすることができる。
さらに、これらのフリップフロップに関連したリセットクロックツリーおよびテストクロックも同様に最適化することができるが、それらのタイミング要件は、はるかに緩いものであるので、厳密には最適化されない。
具体的には、「ClockOpt」アルゴリズムは、新しいバッファサイズおよび新しいクロックツリー構造がどのようなものであるべきかを決定して、それらのバッファをダイ上に最適に配置するようにプログラミングされる。
この再最適化は、本質的には、微調整ステップである。
「TDCopt」ステップ(上述)後には、フリップフロップのいくつかのサイズが変更されていることがあることから、クロックツリー再最適化を行うことは、一般に望ましい。
サイズを変更すると、フリップフロップの入力容量が変化するので、クロックツリーバッファの負荷が影響を受けることがある。
その結果、クロックツリーは、以前と同様のスキューのバランスとならないことがある。
具体的には、前に構築されたクロックツリーは、今度は、異なるクロックピンシンクを有することになる。
すなわち、前のクロックツリーに対してクロックスキューが悪化する可能性がある。
したがって、この段階でクロックツリーのリーフを微調整することにより、クロックスキューを低く維持することが助けられ、タイミング要件を満足させる際の下流側の問題が回避される。
重要なクロックのいくつかを再構築して、新しいフリップフロップのサイズを明らかにすることができる。
さらに、これらのフリップフロップに関連したリセットクロックツリーおよびテストクロックも同様に最適化することができるが、それらのタイミング要件は、はるかに緩いものであるので、厳密には最適化されない。
具体的には、「ClockOpt」アルゴリズムは、新しいバッファサイズおよび新しいクロックツリー構造がどのようなものであるべきかを決定して、それらのバッファをダイ上に最適に配置するようにプログラミングされる。
図1のステップ12は、一般に、配置されたネットリストの見積もられた配線および寄生要素を生成することを取り扱う。
より具体的には、本発明の一実施の形態によると、図1のステップ12は、(1)自動的に生成されたグローバル配線(スタイナ(Steiner))の、信号に対する寄生要素の見積もり、(2)早期の実際の配線実験から得られた寄生要素の結果、および(3)クロックオーバーライドまたはクロックツールが生成した寄生要素、からの利用可能な寄生要素(抵抗値および容量値)を結合することを取り扱う。
より具体的には、本発明の一実施の形態によると、図1のステップ12は、(1)自動的に生成されたグローバル配線(スタイナ(Steiner))の、信号に対する寄生要素の見積もり、(2)早期の実際の配線実験から得られた寄生要素の結果、および(3)クロックオーバーライドまたはクロックツールが生成した寄生要素、からの利用可能な寄生要素(抵抗値および容量値)を結合することを取り扱う。
グローバル配線の寄生要素は、CHIPBENCH(商標)の「route_global(配線_グローバル)」コマンドを使用して生成することができる。
このコマンドは、詳細な配線は行わないが、その代わり、配線が、一般に、チップ上のどのタイル(gcell)に入るかを見積もる。
「route_global」アルゴリズムは、どの信号がどのタイルを通過するかを決定するようにプログラミングされる。
しかしながら、このアルゴリズムは、どの配線チャネルが使用されるかに基づいてこれらの信号を正確に割り当てることはしない。
このアルゴリズムは、どれだけ多くのワイヤがタイルを横切らなければならないかに関する情報のみを有する。
したがって、あるタイルを通過するワイヤ数が、収容できる配線チャネルの総数よりも多い場合、そのタイルは、過剰に混雑した状態にあることになる。
具体的には、「route_global」アルゴリズムは、ダイ全体がどれだけ混雑しているかのカラーマップを提供する。
混雑したエリアがあまりにも多いと、設計者は、混雑したすべてのエリアが除去されるまで、フロアプランを変更するか、もしくは、物を周囲に移動させるか、または、ダイをより大きなものにすることになる。
このコマンドは、詳細な配線は行わないが、その代わり、配線が、一般に、チップ上のどのタイル(gcell)に入るかを見積もる。
「route_global」アルゴリズムは、どの信号がどのタイルを通過するかを決定するようにプログラミングされる。
しかしながら、このアルゴリズムは、どの配線チャネルが使用されるかに基づいてこれらの信号を正確に割り当てることはしない。
このアルゴリズムは、どれだけ多くのワイヤがタイルを横切らなければならないかに関する情報のみを有する。
したがって、あるタイルを通過するワイヤ数が、収容できる配線チャネルの総数よりも多い場合、そのタイルは、過剰に混雑した状態にあることになる。
具体的には、「route_global」アルゴリズムは、ダイ全体がどれだけ混雑しているかのカラーマップを提供する。
混雑したエリアがあまりにも多いと、設計者は、混雑したすべてのエリアが除去されるまで、フロアプランを変更するか、もしくは、物を周囲に移動させるか、または、ダイをより大きなものにすることになる。
事前の実際の配線実験から得られた寄生データが利用可能であり、かつ、クロックバッファおよびビットスタックのようないくつかの事前に固定されたゲートの一部の配置が変更されていないときはいつでも、設計者は、グローバル配線の寄生(スタイナ)の見積もりに代わって、早期の実験による寄生値を使用することができる。
一般的なルールとして、設計者は、これらのゲートが、ダイ上を移動する予定がなく、かつ、その2つの端点が、所定の場所、例えばC4からIOへまたはIOからビットスタックへ固定されていることを確信するとすぐに、固定されたゲート間の信号を一度に配線することができ、グローバル配線の寄生要素の代わりに、その点からの実際の寄生要素を使用して、設計サイクル全体を短縮することができる。
一般的なルールとして、設計者は、これらのゲートが、ダイ上を移動する予定がなく、かつ、その2つの端点が、所定の場所、例えばC4からIOへまたはIOからビットスタックへ固定されていることを確信するとすぐに、固定されたゲート間の信号を一度に配線することができ、グローバル配線の寄生要素の代わりに、その点からの実際の寄生要素を使用して、設計サイクル全体を短縮することができる。
また、設計者は、BOOLEDOZER(商標)の「clockPro」コマンドを使用して、クロックの寄生見積もりを得ることもできる。
「clockPro」アルゴリズム(クロックツール)は、初期クロックツリーを構築し、寄生要素が何であるかの見積もりを提供する。
実際のクロックツリーの配線が行われるまで、これらの寄生見積もりを使用することができる。
寄生見積もりも利用可能でなく、実際の配線データも利用可能でない場合、チップ設計者は、図1のステップ12において、クロックオーバーライドを使用して、そのクロックを理想的なものとすることができる。
「clockPro」アルゴリズム(クロックツール)は、初期クロックツリーを構築し、寄生要素が何であるかの見積もりを提供する。
実際のクロックツリーの配線が行われるまで、これらの寄生見積もりを使用することができる。
寄生見積もりも利用可能でなく、実際の配線データも利用可能でない場合、チップ設計者は、図1のステップ12において、クロックオーバーライドを使用して、そのクロックを理想的なものとすることができる。
図1のステップ14は、EINSTIMER(商標)を使用して実行することができるグローバル配線/見積もり配線を有する配置されたネットリストに対して、標準的で静的なタイミング分析を行うことを取り扱う。
EINSTIMER(商標)は、IBM BLUE LOGIC(登録商標)ソフトウェア設計フローツールスイートの一部でもある。
この型の分析は、設計中のすべての回路の時間を計り、指定されたクロック周期が満たされているかどうかを判断する。
図1のブロック16に概略的に示すように、一定のパスが、所定のタイミング要件を満たしていない場合、設計者は、問題の重大性に応じて、ステップ2(設計合成)に戻ることもできるし、配置ステップ6に戻ることもできる。
EINSTIMER(商標)は、IBM BLUE LOGIC(登録商標)ソフトウェア設計フローツールスイートの一部でもある。
この型の分析は、設計中のすべての回路の時間を計り、指定されたクロック周期が満たされているかどうかを判断する。
図1のブロック16に概略的に示すように、一定のパスが、所定のタイミング要件を満たしていない場合、設計者は、問題の重大性に応じて、ステップ2(設計合成)に戻ることもできるし、配置ステップ6に戻ることもできる。
本発明のさらに別の実施の形態によると、IBM BLUE LOGIC(登録商標)のASIC設計フローツールスイートのコマンドを使用して、マスタスクリプトを生成することができる。
これらのコマンドは、上記特定したツールのそれぞれをあらかじめ定められた順序で自動的に呼び出すことになる。
このようなマスタスクリプトは、上記で参照した(早期の手動による)事前配置スクリプトを組み込むことができ、ASIC設計フロープロセスを簡略化して合理化することができる一方で、最初から正しく動作する(first-time-right)設計効率を可能にする。
当業者ならば、この種のマスタスクリプトをASIC設計ツールフロープロセスに組み込むと、開発時間および開発コストが削減されて、それにより、設計者が、複雑な設計を市場に素早く届けることが可能になるということが容易に分かる。
これらのコマンドは、上記特定したツールのそれぞれをあらかじめ定められた順序で自動的に呼び出すことになる。
このようなマスタスクリプトは、上記で参照した(早期の手動による)事前配置スクリプトを組み込むことができ、ASIC設計フロープロセスを簡略化して合理化することができる一方で、最初から正しく動作する(first-time-right)設計効率を可能にする。
当業者ならば、この種のマスタスクリプトをASIC設計ツールフロープロセスに組み込むと、開発時間および開発コストが削減されて、それにより、設計者が、複雑な設計を市場に素早く届けることが可能になるということが容易に分かる。
本発明の模範的な一実施の形態によると、以下のマスタスクリプト(上述したさまざまな事前配置サブスクリプトを組み込む)が、PCIXベースのサーバアプリケーションを一般に対象としたASICの物理設計用のツールフロープロセスに関連して生成された。
パート1:TDCOptまでのステップ
# 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(これは、CBがtclスクリプトを検索するパスを一覧表示する)
echo [get_parm_path]
# the constraints file gives coordinates and cell types of IOs, ESD cells, etc(拘束ファイルは、IO、ESDセルなどの座標およびセルの型を与える)
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(_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(_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)(rlms(ブロック)の配置およびサイズ)
current_cell -root
echo "############ Placing and sizing blocks (ブロックの配置およびサイズの計測)##############"
source tcl/move_and_size_rlms.tcl
current_cell -root
# save as _hier FORCE SAVE(_hierとして保存する。強制保存)
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(_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(Cell GROUP(セル群)の移動境界を見るには、当該移動境界をクリックする必要がある)
echo "############ Creating movebounds(移動境界の作成) ###########"
source tcl/create_mb.tcl
echo "############ Removing ioaffinity gates from movebounds(IOアフィニティゲートを移動境界から除去する) ###########"
source tcl/remove_from_mbound.tcl
echo "############ Adding decaps to movebounds(移動境界にdecap(デキャップ)を追加する) ###########"
source tcl/add_decaps_to_mbounds.tcl
echo "############ Setting last_unused for place_old_decap.tcl end point to: $last_unused(place_old_decap.tclの端点を$last_unusedに設定)"
echo " Set in add_decaps_to_mbounds.tcl script(add_decaps_to_mbounds.tclのスクリプトに設定) "
current_cell -root
# Save as _mbounds(_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(クロックバッファ(SCB)、レジスタファイル(RA)、ビットスタック、およびバランス配線ゲートを配置する)
echo "############ Placing RAs(RAの配置) ##############"
source tcl/place_ra.tcl
echo "############ Placing SCBs(SCBの配置) ############"
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(_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 (より多くのdecap)
echo "############ Placing NEW DECAPS(新しいDECAPを配置する) ###############"
source tcl/place_new_decaps.tcl
echo [cputime]
current_cell -root
check_placement -overlap
# save as _large_decaps(_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)(プレフィル(nウェルの接点)
echo "############ PREFILL(プレフィル) ############"
current_cell -root
add_filler_cells -prefill
echo [cputime]
current_cell -root
check_placement -overlap
# save as _prefill(_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(RAラッパの配置) ##########"
source tcl/place_ra_wrappers.tcl
echo [cputime]
current_cell -root
check_placement -overlap
#Save as _wrappers(_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(IOアフィニティの配置)
echo "############ Placing ioaffinity(IOアフィニティの配置) #############"
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(_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(IOおよびSCBの周りのdecap)
# NOTE: Place only 1 ring around!!(注意:周りに1リングのみを配置すること!)
echo "############ Placing DECAPS(DECAPの配置) ###############"
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 (place_old_decaps_new.tclを呼び出す前にlast_decap_from2Xを$last_decap_from2Xに設定) "
source tcl/place_old_decaps_new.tcl
# save as _decaps(_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!(絶対移動境界を有するcplace)
echo "########### Starting cplace(cpalceの開始)...... ############"
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!(_PLACEDとして保存する。強制保存!)
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(_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(ScanOpt(スキャン最適化))
optimize_scan_path -hierarchy_levels 99 -output_directory {HDP/reports} -chain_types {all}
# save as _scanOpted(_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(ClockOpt(クロック最適化))
source tcl/clock_opt.tcl
# save as _clockOpted(_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(_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
# 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(これは、CBがtclスクリプトを検索するパスを一覧表示する)
echo [get_parm_path]
# the constraints file gives coordinates and cell types of IOs, ESD cells, etc(拘束ファイルは、IO、ESDセルなどの座標およびセルの型を与える)
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(_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(_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)(rlms(ブロック)の配置およびサイズ)
current_cell -root
echo "############ Placing and sizing blocks (ブロックの配置およびサイズの計測)##############"
source tcl/move_and_size_rlms.tcl
current_cell -root
# save as _hier FORCE SAVE(_hierとして保存する。強制保存)
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(_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(Cell GROUP(セル群)の移動境界を見るには、当該移動境界をクリックする必要がある)
echo "############ Creating movebounds(移動境界の作成) ###########"
source tcl/create_mb.tcl
echo "############ Removing ioaffinity gates from movebounds(IOアフィニティゲートを移動境界から除去する) ###########"
source tcl/remove_from_mbound.tcl
echo "############ Adding decaps to movebounds(移動境界にdecap(デキャップ)を追加する) ###########"
source tcl/add_decaps_to_mbounds.tcl
echo "############ Setting last_unused for place_old_decap.tcl end point to: $last_unused(place_old_decap.tclの端点を$last_unusedに設定)"
echo " Set in add_decaps_to_mbounds.tcl script(add_decaps_to_mbounds.tclのスクリプトに設定) "
current_cell -root
# Save as _mbounds(_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(クロックバッファ(SCB)、レジスタファイル(RA)、ビットスタック、およびバランス配線ゲートを配置する)
echo "############ Placing RAs(RAの配置) ##############"
source tcl/place_ra.tcl
echo "############ Placing SCBs(SCBの配置) ############"
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(_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 (より多くのdecap)
echo "############ Placing NEW DECAPS(新しいDECAPを配置する) ###############"
source tcl/place_new_decaps.tcl
echo [cputime]
current_cell -root
check_placement -overlap
# save as _large_decaps(_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)(プレフィル(nウェルの接点)
echo "############ PREFILL(プレフィル) ############"
current_cell -root
add_filler_cells -prefill
echo [cputime]
current_cell -root
check_placement -overlap
# save as _prefill(_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(RAラッパの配置) ##########"
source tcl/place_ra_wrappers.tcl
echo [cputime]
current_cell -root
check_placement -overlap
#Save as _wrappers(_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(IOアフィニティの配置)
echo "############ Placing ioaffinity(IOアフィニティの配置) #############"
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(_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(IOおよびSCBの周りのdecap)
# NOTE: Place only 1 ring around!!(注意:周りに1リングのみを配置すること!)
echo "############ Placing DECAPS(DECAPの配置) ###############"
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 (place_old_decaps_new.tclを呼び出す前にlast_decap_from2Xを$last_decap_from2Xに設定) "
source tcl/place_old_decaps_new.tcl
# save as _decaps(_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!(絶対移動境界を有するcplace)
echo "########### Starting cplace(cpalceの開始)...... ############"
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!(_PLACEDとして保存する。強制保存!)
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(_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(ScanOpt(スキャン最適化))
optimize_scan_path -hierarchy_levels 99 -output_directory {HDP/reports} -chain_types {all}
# save as _scanOpted(_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(ClockOpt(クロック最適化))
source tcl/clock_opt.tcl
# save as _clockOpted(_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(_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
パート2:この時点でTDCoptを実行する。
#### NEED TO GENERATE NEW clock optimization FILES FROM TDCOPTED VIM(TDCOPTED VIMから新しいクロック最適化ファイルを生成する必要がある).
#### NEED TO GENERATE NEW clock optimization FILES FROM TDCOPTED VIM(TDCOPTED VIMから新しいクロック最適化ファイルを生成する必要がある).
パート3:TDCoptの後のステップ
# 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(これは、CBがtclスクリプトを検索するパスを一覧表示する)
echo [get_parm_path]
# load _TDCOPT vim(_TDCOPT vimをロードする)
# call legalize_after_tdcopt.tcl (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. (リストに名前を与える:unfixed_splitters[list_selection]を設定し、取り外す)
# Call legalize_after_tdcopt again. (legalize_after_tdcoptを再び呼び出す)
# Fix the list of gates! set_location_fixed unfixed_splitters -value 1(ゲートのリストを固定する! set_location_fixed unfixed_splitters−値1)
# repeat as necessary(必要に応じて繰り返す)
# Save VIM and parms so that you can load them for this tcl script.(VIMおよびparmsをこのtclスクリプト用にロードできるように、これらを保存する)
# Therefore, save parms as: ${prefix}_tdcopt_LEGALIZED.parms as used below. (したがって、以下で使用されるような${prefix}_tdcopt_LEGALIZED.parmsとしてparmsを保存する)
# read _tdcopt_LEGALIZED parms(_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 (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(_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(rap/rc生成)
source tcl/generate_cap_rc.tcl
echo [cputime]
# 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(これは、CBがtclスクリプトを検索するパスを一覧表示する)
echo [get_parm_path]
# load _TDCOPT vim(_TDCOPT vimをロードする)
# call legalize_after_tdcopt.tcl (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. (リストに名前を与える:unfixed_splitters[list_selection]を設定し、取り外す)
# Call legalize_after_tdcopt again. (legalize_after_tdcoptを再び呼び出す)
# Fix the list of gates! set_location_fixed unfixed_splitters -value 1(ゲートのリストを固定する! set_location_fixed unfixed_splitters−値1)
# repeat as necessary(必要に応じて繰り返す)
# Save VIM and parms so that you can load them for this tcl script.(VIMおよびparmsをこのtclスクリプト用にロードできるように、これらを保存する)
# Therefore, save parms as: ${prefix}_tdcopt_LEGALIZED.parms as used below. (したがって、以下で使用されるような${prefix}_tdcopt_LEGALIZED.parmsとしてparmsを保存する)
# read _tdcopt_LEGALIZED parms(_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 (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(_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(rap/rc生成)
source tcl/generate_cap_rc.tcl
echo [cputime]
ステップ14の完了後、配置されたネットリストをレイアウトベンダに提供することができる。
レイアウトベンダは、標準的技法に従って、設計中のすべてのネットの実際の配線を行うことになる。
すべてのネットが、指定された金属層で接続されると、このベンダは、図1のステップ18において、実際の寄生要素(容量値および抵抗値)を抽出することができ、タイミング分析を行うために、生成されたレイアウトをASIC設計者に提供することができる。
次いで、設計者は、標準的技法にしたがって、図1のステップ20で、実際の寄生要素を有する実際の配線で静的なタイミング分析を行うことができる。
具体的には、一実施の形態によると、設計者は、実際の容量値および抵抗値をEINSTIMER(商標)ソフトウェアツールに再び入力して、タイミング要件が満たされているかどうかを判断することができる。
いくつかのパスがタイミング要件を満たしていない場合(図1のブロック22)、設計者は、問題の重大性に応じて、図1の配置ステップ6に戻らなければならない場合もあるし、設計合成ステップ2に戻らなければならない場合もある。
タイミング問題が発生していない場合、または、すべてのタイミング問題が解決した後(図1のブロック22)に、ツールフロープロセスは完了する。
レイアウトベンダは、標準的技法に従って、設計中のすべてのネットの実際の配線を行うことになる。
すべてのネットが、指定された金属層で接続されると、このベンダは、図1のステップ18において、実際の寄生要素(容量値および抵抗値)を抽出することができ、タイミング分析を行うために、生成されたレイアウトをASIC設計者に提供することができる。
次いで、設計者は、標準的技法にしたがって、図1のステップ20で、実際の寄生要素を有する実際の配線で静的なタイミング分析を行うことができる。
具体的には、一実施の形態によると、設計者は、実際の容量値および抵抗値をEINSTIMER(商標)ソフトウェアツールに再び入力して、タイミング要件が満たされているかどうかを判断することができる。
いくつかのパスがタイミング要件を満たしていない場合(図1のブロック22)、設計者は、問題の重大性に応じて、図1の配置ステップ6に戻らなければならない場合もあるし、設計合成ステップ2に戻らなければならない場合もある。
タイミング問題が発生していない場合、または、すべてのタイミング問題が解決した後(図1のブロック22)に、ツールフロープロセスは完了する。
当業者ならば、ステップ20のタイミングの結果が、比較的小さなエラーを含む場合には、技術変更指示(ECO)型の変更を行い得るということが容易に分かる。
例えば、ASIC設計者は、CHIPBENCH(商標)ツールでバッファのようなゲートを数個追加するか、または、ゲートのサイズを変更して、容量またはスルーもしくはホールドの違反のようないくつかのタイミングの違反を修正することができる。
後にタイミングをクローズするために、設計者は、労力を追加することなく、必要に応じて、ネットリストにいくつかのバッファを挿入して配置することもできるし、またはいくつかのバッファをあちこちに移動させることもできるし、あるいはいくつかのバッファのサイズを大きくしてバッファの配置を合法化することもできる。
例えば、ASIC設計者は、CHIPBENCH(商標)ツールでバッファのようなゲートを数個追加するか、または、ゲートのサイズを変更して、容量またはスルーもしくはホールドの違反のようないくつかのタイミングの違反を修正することができる。
後にタイミングをクローズするために、設計者は、労力を追加することなく、必要に応じて、ネットリストにいくつかのバッファを挿入して配置することもできるし、またはいくつかのバッファをあちこちに移動させることもできるし、あるいはいくつかのバッファのサイズを大きくしてバッファの配置を合法化することもできる。
上述した新規なツールフロープロセスは、面積および寄生要素の見積もりの処理に関連した不安定性の問題が解決しつつ、タイミング、配線混雑、およびダイエリアに関するクロージャを得るために機能する。
新規なツールフロープロセスは、結果の再現性および予測可能性を向上させつつ、チップ設計者によって行われる分析を円滑にし、かつ、安定させる。
新規なツールフロープロセスは、結果の再現性および予測可能性を向上させつつ、チップ設計者によって行われる分析を円滑にし、かつ、安定させる。
当業者ならば、さまざまな他のICの設計方法論のツールおよび/または構成も、本発明の意図する目的および範囲から逸脱しないという条件で、上述した実施の形態で利用できることを理解すべきである。
本発明を、好ましい実施の形態について詳細に説明してきたが、本発明の範囲および精神から逸脱しないで、さまざまな変更および変形を行い得ることも理解されるべきである。
例えば、Synopsys, IncによるPHYSICAL COMPILER(商標)によって利用されるもののような物理アウェア合成フロー(physically aware synthesis flow)では、設計合成ステップおよび配置ステップを結合することができる。
例えば、Synopsys, IncによるPHYSICAL COMPILER(商標)によって利用されるもののような物理アウェア合成フロー(physically aware synthesis flow)では、設計合成ステップおよび配置ステップを結合することができる。
本発明を実践したものは、上述した応用に限定されるものでないことに注目することは重要である。
他の多くの応用および/または変更したものが、本発明の意図した目的から逸脱しないという条件で利用することができる。
他の多くの応用および/または変更したものが、本発明の意図した目的から逸脱しないという条件で利用することができる。
さらに、一実施の形態の一部として図示して説明した特徴が、上述した特定の実施の形態に限定されないように、それらの特徴を別の実施の形態で使用して、さらに別の実施の形態を提供できることが当業者には理解されるべきである。
したがって、このようなすべての変更、実施の形態、および変形が、添付した特許請求の範囲およびそれらの均等物の範囲内に入る限り、本発明は、このようなすべての変更、実施の形態、および変形を網羅することが意図されている。
したがって、このようなすべての変更、実施の形態、および変形が、添付した特許請求の範囲およびそれらの均等物の範囲内に入る限り、本発明は、このようなすべての変更、実施の形態、および変形を網羅することが意図されている。
2〜22・・・ステップ、
Claims (10)
- マッピングされたゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること(6)と、
残りの電気基盤設備を前記ICダイ上に配置すること(6)と
を含む回路設計フロープロセス。 - タイミング見積もりに基づいて、前記配置されたネットリストの回路最適化を行うこと(10)
をさらに含む請求項1に記載の回路設計フロープロセス。 - 前記配置されたネットリストの見積もられた配線および寄生要素を生成すること(12)と、
前記見積もられた寄生要素(parasitics)を複数の寄生源(sources)からの他の利用可能な寄生要素と結合すること(12)と
をさらに含む請求項2に記載の回路設計フロープロセス。 - 前記見積もられた配線および寄生要素を有する前記配置されたネットリストに対してタイミング分析を実行すること(14)、
をさらに含む請求項3に記載の回路設計フロープロセス。 - 前記配置されたネットリストからネットの実際の配線を生成すること(18)と、
前記配線されたネットの実際の寄生要素を抽出することであって、それによって、ICレイアウトを生成する、前記配線されたネットの実際の寄生要素を抽出すること(18)と
をさらに含む請求項4に記載の回路設計フロープロセス。 - 前記ICレイアウトに対してタイミング分析を実行すること(20)
をさらに含む請求項5に記載の回路設計フロープロセス。 - 前記重要な電気基盤設備は、
少なくとも1つのIO(入力/出力)回路と、
少なくとも1つの静電放電(ESD)保護回路と、
少なくとも1つの大きなレジスタ配列/ファイルと
を含む
請求項1に記載の回路設計フロープロセス。 - マッピングされたゲートレベルネットリストを生成すること(2)と、
ゲートレベルネットリストを使用することであって、それによって、重要な電気基盤設備を集積回路(IC)ダイ上に事前に配置して、再現性を保証する、マッピングされたゲートレベルネットリストを使用すること(6)と
とを含む回路設計フロープロセス。 - ゲートレベルネットリストを使用することであって、それによって、残りの電気基盤設備を前記ICダイ上に配置するゲートレベルネットリストを使用する(6)こと
をさらに含む請求項8に記載の回路設計フロープロセス。 - タイミング見積もりに基づいて、前記配置されたネットリストの回路最適化を行うこと(10)
をさらに含む請求項9に記載の回路設計フロープロセス。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/438,580 US20040230933A1 (en) | 2003-05-15 | 2003-05-15 | Tool flow process for physical design of integrated circuits |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004342100A true JP2004342100A (ja) | 2004-12-02 |
Family
ID=33417608
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004134979A Withdrawn JP2004342100A (ja) | 2003-05-15 | 2004-04-30 | 集積回路の物理設計用のツールフロープロセス |
Country Status (2)
Country | Link |
---|---|
US (1) | US20040230933A1 (ja) |
JP (1) | JP2004342100A (ja) |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7062736B2 (en) * | 2003-06-24 | 2006-06-13 | Lsi Logic Corporation | Timing constraint generator |
US7111269B2 (en) * | 2003-10-23 | 2006-09-19 | Lsi Logic Corporation | Comparison of two hierarchical netlist to generate change orders for updating an integrated circuit layout |
US20050091621A1 (en) * | 2003-10-24 | 2005-04-28 | Goldberg David N. | Methods for designing a circuit |
JP4053969B2 (ja) * | 2003-11-28 | 2008-02-27 | 沖電気工業株式会社 | 半導体集積回路の設計装置および半導体集積回路の設計方法 |
US7373615B2 (en) * | 2004-02-17 | 2008-05-13 | International Business Machines Corporation | Method for optimization of logic circuits for routability |
US7152217B1 (en) * | 2004-04-20 | 2006-12-19 | Xilinx, Inc. | Alleviating timing based congestion within circuit designs |
US7448012B1 (en) | 2004-04-21 | 2008-11-04 | Qi-De Qian | Methods and system for improving integrated circuit layout |
WO2005119531A2 (en) * | 2004-06-01 | 2005-12-15 | Tera Systems, Inc. | Rule-based design consultant and method for integrated circuit design |
JP2006128635A (ja) * | 2004-09-30 | 2006-05-18 | Matsushita Electric Ind Co Ltd | 半導体集積回路 |
US7526745B2 (en) * | 2004-12-08 | 2009-04-28 | Telefonaktiebolaget L M Ericsson (Publ) | Method for specification and integration of reusable IP constraints |
US7784015B2 (en) * | 2005-07-05 | 2010-08-24 | Texas Instruments Incorporated | Method for generating a mask layout and constructing an integrated circuit |
US7415687B2 (en) * | 2005-10-05 | 2008-08-19 | Lsi Corporation | Method and computer program for incremental placement and routing with nested shells |
US7363607B2 (en) * | 2005-11-08 | 2008-04-22 | Pulsic Limited | Method of automatically routing nets according to parasitic constraint rules |
US7454729B1 (en) * | 2005-11-16 | 2008-11-18 | Altera Corporation | Method and system for validating testbench |
EP2030114B1 (en) | 2006-06-09 | 2013-01-23 | Otrsotech, Limited Liability Company | Transparent test method and scan flip-flop |
US8302042B2 (en) * | 2006-07-24 | 2012-10-30 | Oasys Design Systems | Generating a convergent circuit design from a functional description using entities having access to the functional description and to physical design information |
US8205182B1 (en) * | 2007-08-22 | 2012-06-19 | Cadence Design Systems, Inc. | Automatic synthesis of clock distribution networks |
US8239797B1 (en) * | 2008-09-18 | 2012-08-07 | Cadence Design Systems, Inc. | Congestion aware block placement |
US8589839B2 (en) * | 2008-12-30 | 2013-11-19 | Texas Instruments Incorporated | ESD protection validator, an ESD validation system and a method of validating ESD protection for an IC |
US7979819B2 (en) * | 2009-01-23 | 2011-07-12 | International Business Machines Corporation | Minterm tracing and reporting |
US10817641B1 (en) | 2017-09-29 | 2020-10-27 | Cadence Design Systems, Inc. | Method and system to implement topology integrity throughout routing implementations |
US10521097B1 (en) | 2017-09-29 | 2019-12-31 | Cadence Design Systems, Inc. | User interface to implement topology integrity throughout routing implementations |
US10489549B1 (en) | 2017-12-22 | 2019-11-26 | Cadence Design Systems, Inc. | Tree-routing for specific areas of an electronic design |
US10551431B1 (en) * | 2017-12-22 | 2020-02-04 | Cadence Design Systems, Inc. | EM-compliance topology in a tree router |
US10943040B1 (en) | 2019-09-11 | 2021-03-09 | International Business Machines Corporation | Clock gating latch placement |
US10831966B1 (en) | 2019-09-11 | 2020-11-10 | International Business Machines Corporation | Multi-fanout latch placement optimization for integrated circuit (IC) design |
US10831967B1 (en) | 2019-09-11 | 2020-11-10 | International Business Machines Corporation | Local clock buffer controller placement and connectivity |
US11030376B2 (en) | 2019-09-11 | 2021-06-08 | International Business Machines Corporation | Net routing for integrated circuit (IC) design |
US10878152B1 (en) | 2019-09-11 | 2020-12-29 | International Business Machines Corporation | Single-bit latch optimization for integrated circuit (IC) design |
US11775730B2 (en) * | 2021-08-16 | 2023-10-03 | International Business Machines Corporation | Hierarchical large block synthesis (HLBS) filling |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5812561A (en) * | 1996-09-03 | 1998-09-22 | Motorola, Inc. | Scan based testing of an integrated circuit for compliance with timing specifications |
US6370673B1 (en) * | 1999-03-22 | 2002-04-09 | Synopsys, Inc. | Method and system for high speed detailed placement of cells within an integrated circuit design |
US6857110B1 (en) * | 2001-01-30 | 2005-02-15 | Stretch, Inc. | Design methodology for merging programmable logic into a custom IC |
US6530073B2 (en) * | 2001-04-30 | 2003-03-04 | Lsi Logic Corporation | RTL annotation tool for layout induced netlist changes |
US7127695B2 (en) * | 2002-07-18 | 2006-10-24 | Incentia Design Systems Corp. | Timing based scan chain implementation in an IC design |
-
2003
- 2003-05-15 US US10/438,580 patent/US20040230933A1/en not_active Abandoned
-
2004
- 2004-04-30 JP JP2004134979A patent/JP2004342100A/ja not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20040230933A1 (en) | 2004-11-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004342100A (ja) | 集積回路の物理設計用のツールフロープロセス | |
US6968514B2 (en) | Block based design methodology with programmable components | |
US7340700B2 (en) | Method for abstraction of manufacturing test access and control ports to support automated RTL manufacturing test insertion flow for reusable modules | |
US9852253B2 (en) | Automated layout for integrated circuits with nonstandard cells | |
US6725432B2 (en) | Blocked based design methodology | |
US8015522B2 (en) | System for implementing post-silicon IC design changes | |
US8719752B1 (en) | Hierarchical crosstalk noise analysis model generation | |
WO2000019528A1 (de) | Dram-zellenanordnung und verfahren zu deren herstellung | |
US7100140B2 (en) | Generation of graphical congestion data during placement driven synthesis optimization | |
US20160292332A1 (en) | System for verifying timing constraints of ic design | |
Engel et al. | Design methodology for IBM ASIC products | |
US20200410152A1 (en) | System and method of timing characterization for semiconductor circuit | |
Khan et al. | GHAZI: An Open-Source ASIC Implementation of RISC-V based SoC | |
Doerre et al. | The IBM ASIC/SoC methodology—A recipe for first-time success | |
US20060150136A1 (en) | Systems and methods for designing integrated circuits | |
Piatak et al. | Open-Source and Non-Commercial Software for Digital ASIC Design | |
Kumar et al. | Methodology for Timing Closure in VLSI Physical Design containing high clock to Q Memory Delay | |
Mourtziapis | Design and Fabrication of an AMBA (ARM AHB-Lite Slave) Circuit Using CAD Tools at 350nm Technology | |
Conci et al. | Current criticalities and innovation perspectives in flash memory design automation | |
Proctor | by JJ Engel TS Guzowski A. Hunt LD Pickup | |
Jariwala | Implementation of Complete ASIC Design Flow, RTL to GDS-II | |
Chandrasetty et al. | ASIC Design | |
Lee | Introduction to Place and Route Design in VLSIs | |
Said | Low power ASIC design, a comparative study | |
Sato et al. | ZEPHCAD and FLORA: logic synthesis for control and datapath |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20060314 |