【発明の詳細な説明】
ASIC設計における合成シェルの生成及び使用
著作権の限定的権利放棄
この特許文書の開示の一部には、著作権保護が求められている内容が含まれて
いる。著作権者は、米国特許商標庁のファイル又は記録に現れるままでのこの特
許文書又は特許開示の任意の者によるファクシミリ再生に反対しないが、それ以
外のすべての権利を留保する。
発明の背景
発明の分野
本発明は、集積回路の開発に関し、更に詳しくは、特定用途向け集積回路(A
SIC)の設計(design)及び開発(development)に用いられるツールに関す
る。
関連技術の説明
ASIC設計のための自動化された設計ツールにより、1つのチップ上に数百
万の使用可能なゲートを含むASICの設計が可能になる。そのような複雑なA
SICの開発プロセスは、設計を自動化するデータ処理システムにおいて実行さ
れる開発及び検証(verification)ツールに依存している。これらのツールは、
本発明の譲受人であるLSIロジック・コーポレーションなどの、主要な電子設
計自動化装置又はASICのベンダ(vendor)によって提供される。例えば、L
SIロジック社は、C−MDE(商標)設計ツールという製品を提供しているが
、これは、設計を作業用シリコンに移動させるのに必要なすべての機能を与える
ものである。市販されている設計自動化システムにおける設計ツールは、タイミ
ング解析ツール、フロア・プラニング・ツール、レイアウト・ツール、合成(sy
nthesis)ツール、パッケージング・ツールなどを含んでいる。
設計プロセスには、典型的には、行動(behavioral)の(又は、レジスタ移動
レベルの)記述(description)を伴うASICの仕様が含まれる。合成として
知られているプロセスでは、この行動記述が処理され、設計のための最適化され
たゲート・レベル・ネットリストが作成される。1つの設計に数百万のゲートが
存
在するために、ネットリストは、非常に大きくなる。合成は再帰的なプロセス(
recursive process)であるから、ネットリストの全体は、データ処理システム
の中に記憶され最終的な形態で作成される前に処理されなければならない。
ASIC設計の稠密度が高まるにつれて、利用可能な計算能力は、それに追い
ついていくのが困難になってきている。従って、ASIC設計のためのシステム
実行ツールは、大容量のメモリを有する強力なコンピュータを必要とする。使用
可能なゲートの数が極端に増大するにつれて、速度及びメモリのボトルネックの
問題が生じ、それにより、複雑な設計の開発プロセスの速度が実質的に低下する
ことになる。
この問題に対処するために、電子設計自動化装置のベンダであるシノプシス(
Synopsys)社が、タイミング・アーク(timing arcs)の形式でセルに対する遅
延情報を有するライブラリ・セルに変換可能な階層的設計を用いた「モデル」を
提案している。このモデルは、元の設計に代わって用いられ、元の設計は、その
設計のためのボトム・アップ合成プロセスの間、メモリから除去することができ
る。この技術は、それ自身の環境においてだけでなく、モデルが新たな環境に移
植された場合にも、不正確であることがわかっている。このモデルに依存する合
成は、結果的に、モデル化されたブロックの実際のゲート・レベルのネットリス
トを用いて得られるものとは非常に異なる設計を生じさせる。メモリの要求を削
減しようとする際に、この技術によって、受け入れられない量の精度が失われて
しまう。
また、ASIC産業が成熟するにつれて、多くのベンダが、ASIC設計ツー
ルのユーザに、回路のプロプライタリ(proprietary)なコア・ブロックを提供
する。これらのプロプライタリな回路は、ASIC開発に要求される設計時間を
、実質的に減少させる。しかし、そのような回路のベンダは、ASIC全体の合
成に用いるためのコア回路の設計の詳細を開示しなければならない。これでは、
結果的に、そうでなければ機密とされるはずのプロプライタリ情報を開示してし
まうことになり、望ましくない。
従って、精度を犠牲にせずに、大型のASIC設計の階層的な合成の際に、コ
ンパイル速度を改善しメモリ要求度を低下させるのに役立つツールを提供するこ
とが望まれている。更に、そのようなツールの実行結果が複数の設計環境及び合
成ツールの間で移植可能(portable)であり設計の再利用を容易にするものであ
ることが望ましい。更にまた、そのモジュールの所有者の知的財産権を保護する
フォーマットでプロプライタリ・モジュールに関する情報を提供し、同時に、そ
のモジュールを用いたASICの正確な合成を可能にすることが望まれる。
発明の概要
本発明は、合成シェル(systhesis shells)の使用に基づく数百万ゲートか
ら成るASICの合成のための実際的なアプローチを提供する。合成シェルは、
完全に特徴付けがなされた(fully characterized)ブロックのゲート・レベル
の記述から開始することによって、生成される。このゲート・レベルの記述は、
内部ゲートを除去し合成されたブロックの部分集合であるゲート・レベル合成シ
ェルを生じさせることによって、生成される。合成シェルは、ブロックの入力ロ
ード及びファンアウト、ブロックのクロックに対する出力遅延、ブロックの出力
ドライブ、ブロックのクロックに対する入力信号へのセットアップ/ホールド制
約条件、及びブロックの通過信号に対する入力から出力への遅延を保存する。こ
のような合成シェルは、元の設計ネットリストの代わりに、用いることができる
。従って、この合成シェルは、顧客の設計環境における階層的な合成のために、
又は、ASICサービスの提供側の知的財産権を保護するためにその提供側から
与えることが可能なものとして、用いることができる。合成側が必要とするすべ
ての情報はネットリストの形式で合成シェルにおいて入手可能であり、追加的な
情報が、元のローディング及び領域情報を再構成するのに与えられるので、シェ
ルは、非常に正確である。
上述の合成シェルは、合成されたブロックの部分集合であるゲート・レベル記
述を含む。この縮小された記述は、次のものを含む規準の組に従ってゲート・レ
ベル記述の要素を削除することによって得られる。すなわち、
入力ポートから第1の記憶素子(要素)への組合せ経路を保存すること、
最後の記憶素子から出力ポートへの組合せ経路を保存すること、
入力ポートから出力ポートへの直接の組合せ経路を保存すること、
クロック分散経路を保存すること、
出力ポートから記憶素子へのフィードバック経路を、その記憶素子と共に保存
すること、
設計における直接的な組合せ経路へのフィードバック経路を保存すること、
非同期RAMへの書き込み信号が入力ポートまでトレースされる場合にはその
非同期RAMを保存し、そうでなければその非同期RAMを組合せロジックとし
て扱い、同期RAMを記憶素子として扱うこと、
生じる内部クロックによってクロックされている任意の記憶素子が入力ポート
又は出力ポートに組合せロジックを介して又は直接に接続されている場合には、
内部クロックを生じる記憶素子を保存すること、及び
非同期経路を、リセット、クリアなどとして保存すること、である。
合成シェルの生成には、また、元のブロックに必要な領域と合成シェルにおけ
る保存された要素に必要な領域との差を示す領域差データを生成して、その領域
差データを合成シェルを用いて含ませるステップを含む。更に、ロード情報が、
合成シェルを用いて記憶され、この合成シェルは、合成プロセスに関連する合成
シェル内部のロードを示し、ブロックにおける最後の記憶素子から出力への経路
内のそれぞれのノード上のロードを示し、クロック及び非同期経路上のインクリ
メンタルなロードを示す。ここで、インクリメンタルなロードとは、ネットに接
続されたゲートの除去を補償するネット上のロードである。
シェルの直接的な実現は、シェルのブロックの主題に対する元のネットリスト
の部分集合にもかかわらず、ネットリストの形式で表されている。このシェルは
、ネットリストの部分集合において十分な情報を維持し、それによって、元のネ
ットリストをこの部分集合によって置き換えた場合には、合成装置に何の影響も
与えず、元のネットリストから得られたであろうすべての情報に依然としてアク
セスすることが可能である。シェル・ネットリストのサイズは、ずっと小さく、
その理由は、構成が、元のネットリストの部分集合によるからである。従って、
シェル・ネットリストを記憶するためのメモリ必要量は、より小さくなる。この
シェルは、異なるプロセス、電圧、温度(PVT)条件の間で移植可能であり、
集積回路の設計者にベンダから移植することができるし、また、階層的な合成の
間に設計者が生成することもできる。
従って、本発明は、複数のブロックを含む集積回路モジュールのゲート・レベ
ル記述を、そのモジュールの行動又はレジスタ移動(transfer)レベル記述から
合成する方法として特徴付けられる。この方法は、設計制約条件を伝え、そのブ
ロックの行動記述から複数の第1のブロックを合成する。この合成されたゲート
・レベル記述は、上述のように、合成シェルに縮小される。次に、この方法は、
合成シェルを参照して第2のブロックの行動記述を処理することによって複数の
ブロックにおける第2のブロックを合成し、少なくとも1つの他のブロックのゲ
ート・レベル記述を作成することに関する。
集積回路モジュールを合成するこの方法は、更に、更に他のブロックを、第1
及び第2のブロックの合成シェルを参照してその他のブロックの行動記述を再帰
的な態様で全体の設計が完了するまで処理することによって、合成することを含
む。
更に、このプロセスは、2つのブロックから成る合成シェルをより高いレベル
の合成シェルに統合するステップを含む。統合されたファイルは、次に、より低
いレベルの合成シェルの組合せに代わることができる統合された合成シェルに縮
小される。
本発明は、上述の方法を実行し作られる合成シェルを作成する及び/又は叙述
の方法によって作られる合成シェルを記憶する資源と、また、合成シェルを利用
する合成アルゴリズムを実行する処理資源を含む装置として特徴付けられる。
従って、数百万個のゲートを有する大規模なASICを合成するのに必要な処
理時間やメモリの量を縮小させることができる。先行技術によると、大規模な設
計の合成によると、利用可能な計算能力が限界に達し、速度及び資源のボトルネ
ック問題を生じていた。このボトルネックの主要な原因は、設計ネットリストの
全体を、従来技術では、最適化が完了したブロックの場合でも、メモリに保持し
ておかなければならないからであった。合成されたブロックがメモリに存在して
いることが要求されたが、その理由は、合成中の他のブロックの特徴付けに離京
を有し得るからである。本発明による合成シェルは、合成されたブロックからの
関連の情報の抽出に基づいており、合成中の他のブロックの特徴付けも依然とし
て正確である。このシェルの利点は、メモリに合成されたブロックの全体のネッ
トリストを記憶するのと比較して、抽出されたブロックを記憶するのであれば、
メモリ要求量が格段に小さくてすむ点である。従って、本発明の利点は、次のよ
うなものが含まれる。すなわち、
1.メモリ必要量の縮小、
2.ラン時間の縮小、
3.階層的な設計合成における表現と使用との精度に関して、元の設計と全く
変わらないこと、
4.複数の合成ツール及び設計環境の間で移植性を有する合成シェルへのネッ
トリスト・アプローチに依存していること、
5.先に設計したセルを設計者が自分自身のASICにおいて用いるために与
えるシステムにおいて、使用に関する情報の精度が保持されること、
6.ASICの合成において用いられる階層的なトップ・ダウン特徴付け及び
ボトム・アップ最適化方法に適合すること、
7.シェルが表すプロプライタリ・コアに対する知的財産権を保護すること、
である。
本発明のこれ以外の特徴及び効果は、次の、図面、詳細な説明及び請求の範囲
を参照することによって理解しうる。
図面の簡単な説明
図1は、合成シェルを生成し本発明に従って合成シェルに基づいて合成を行う
ための処理資源(processing resources)を含むシステムの簡略化されたブロ
ック図である。
図2は、合成シェルの使用と本発明による合成シェル生成とに基づく合成を含
むASIC設計のプロセスを図解している。
図3は、本発明による合成シェル生成に基づく再帰的合成プロセスの流れ図で
ある。
図4は、本発明による合成の流れの図解に用いられる例示的なブロック図であ
る。
図5は、シェル生成のための予め特定された規則に基づくセルの削除を図解す
るのに用いられる例示的なブロック図である。
図6は、本発明による1つの規則である内部的に生成されたクロックの保存の
図解に用いられる例示的なブロック図である。
図7は、本発明の1つの特徴による統合されたシェルを図解する例である。
図8は、本発明によるシェル生成のプロセスを図解する流れ図である。
図9は、本発明によるシェル生成の間の領域の平衡化技術を図解する流れ図で
ある。
図10は、合成シェルにおける特定のネット上でロード情報を保存する技術を
図解する流れ図である。
図11から図16は、代表的な回路ブロックの回路図と付属資料(アペンディ
クスA−C)のコード・サンプルによって表されている回路ブロックのシェルと
であり、本発明による合成シェル・プロセスの例を説明している。
詳細な説明
本発明の好適実施例の詳細な説明を、図1から図10を参照して行う。ここで
、図1は、合成シェルの生成と、本発明に従ってASICの合成における合成シ
ェルの利用とにおいて用いられる装置の全体像を与えている。図11から図16
は、付属資料におけるネットリスト全体及び合成シェルの例を図解するのに用い
られる。
図1に示されている装置は、バス11に結合されている中央処理装置(CPU)
10を含む。更にバス11には、入出力デバイス12と表示システム13とが結
合されている。この装置においては、データ・メモリ14と命令メモリ15とが
与えられており、CPU10によって用いられるために、バス11に接続されて
いる。本発明によるデータ・メモリは、開発中のASICのレジスタ移動(tran
sfer)レベルやそれ以外の行動記述(behavioral description)を含む。また
、データ・メモリは、合成の後のASICのゲート・レベル記述や、合成シェル
又は開発中のASIC内部の回路ブロックのシェルを記憶するのに用いられる。
このブロック図は、本発明に従って合成シェル及びプロセスを記憶し処理する
装置の発見的(heuristic)な見方を与える。この図は、例えば、この出願で述
ベられている追加的な要素を含む商用のワーク・ステーションやパーソナル・コ
ンピュータの構成要素を表そうとしたものである。本発明によると、命令メモリ
15は、合成ツールを含んでおり、本発明による合成シェル生成プロセスと合成
シェルの生成のための領域平衡化プロセスとを伴っている。更に、この合成ツー
ルは、既に合成されたブロックのための合成シェルに依存して、開発中のASI
C内部でブロックを合成することができる。
このように、命令メモリは、VERILOG又はVHDLなどのハードウェア
記述言語を実現するのに用いられる開発及び検証ツールを含む。これらの設計ツ
ールは、ハードウェア記述レベルからワークステーションに設計を移植するのに
必要なすべての機能を与えてくれる。これらの機能には、合成ツール、タイミン
グ解析ツール、フロア・プラニング・ツール、レイアウト・ツール、パッケージ
ング・ツールなどが含まれる。本発明によると、これらの機能は、また、上述し
たが後に更に詳しく説明する領域平衡化機能を有する合成シェル生成を含む。
図2は、本発明による合成シェル生成及び使用の内容を図解している。従って
、図2は、ASICの開発のための設計の流れを図解しており、これは、ASI
Cの仕様の生成(ブロック100)と、この仕様に基づくASICのゲート・レ
ベル記述の合成(ブロック101)と、結果的なゲート・レベル記述のレイアウ
ト(ブロック102)とを含み、これらは、ASICの製造の際に用いられる。
本発明は、合成資源(synthesis resource)における改善を提供するものであ
る。従って、合成は、例えば、レジスタ移動レベル(RTL)におけるハードウ
ェア記述言語を用いてASICの行動記述を提供すること(ブロック103)を含
む。この行動記述は、翻訳され最適化される(ブロック104)。翻訳及び最適化
ステップの結果は、ASICのためのゲート・レベル・ネットリストである(ブ
ロック105)。
本発明によると、合成シェルは、合成の翻訳と最適化の間に用いられる。合成
の方法に従って、例えばRTLコードである行動コードとASICのための設計
制約条件(design constraints)が、供給される(ブロック106)。この情報に
基づいて、ASICは、特徴付けられ最適化されて、ゲート・レベル記述を与え
る(ブロック107)。
最後に、合成シェル・ネットリストが、合成中のブロックに対して得られる(
ブロック108)。シェルは、「触れてはならない」とマークされ、ASICの
更なるブロックの合成のために記憶される(ブロック109)。
この合成シェル・ネットリストは、最適化されたブロックの読み取りを含むシ
ェル生成プロセスを用いて得られる(ブロック110)。
1組の規準を適用する規則が適用されて、回路ブロックに対する合成された設
計から、ゲートを除去する(ブロック111)。最後に、シェル・ネットリスト
とシェルのための必要な他のファイルが、ASICの平衡(バランス)の合成に
おいて用いるために書き込まれ、元のブロックが除去される(ブロック112)。
ブロック111において適用された規則には、基本的なシェル生成規則が含ま
れ、その結果として、ASICの平衡の合成には不要である回路ブロックの内部
からのゲートの除去が生じる(ブロック113)。特別のケース及び階層的な考慮
が、次に、結果的なゲート・リスト・レベル・シェルに加えられる(ブロック1
14)。更なる合成のために必要なネット上のロードは、合成シェルにおいて復
旧される(restored)(ブロック115)。回路ブロックに対する元のゲート・レ
ベル記述のための領域情報は、領域平衡化によって、合成シェルとして用いられ
る縮小されたネットリストにおいて保存される(ブロック116)。最後に、合成
シェルの結果は、他のブロックの更なる合成のために用いることができる(ブロ
ック117)。
図3は、本発明による合成プロセスの更に詳細なブロック図を与えている。従
って、図3は、大型の設計を特徴付けし最適化するのに用いられる合成の流れを
定義している。入力/出力属性及びタイミング制約条件が与えられ、モジュール
を特徴付ける(ブロック200)。特徴付けは、トップ・ダウンのプロセスであり
、特徴付けられているモジュールのピン上のすべてのI/O属性の計算を提供す
る。このプロセスは、トップ・レベル・モジュールのI/O特性と回路の残りの
効果とを特徴付けられているモジュールの入力及び出力まで伝えることによって
、実行される。特徴付けはトップ・ダウン・プロセスであるが、これは、階層の
トップ・レベルにあるモジュールの特性は、サブモジュールの特性を決定するこ
とができるより先に決定されなければならないからである。
モジュールを特徴付けすると、プロセスは、モジュールを最適化することに進
む(ブロック201)。最適化は、設計の小さなブロックから始まるボトム・アッ
プ・プロセスである。あるモジュールに対する合成シェルは、そのモジュールが
完全に最適化されゲートにマップされる、すなわち、現在の環境において合成さ
れるとすぐに作成される。これはまた、モジュールが「触れてはならない」とマ
ークされる地点である。
ブロック202に示されるように、遅延予測及びタイミング解析の後でタイミ
ング及びそれ以外の制約条件が満足されると、「触れてはならない」という属性
がモジュールに与えられ(ブロック203)、合成シェルが作成され、そのモジ
ュールは、このシェルによって代えられる(ブロック204)。
ブロック202においてタイミング及びそれ以外の制約条件が満足されないと
、シェルは、ブロック201から始まる最適化が再度なされる。
この合成シェルは、1組の規準に基づく最適化されたブロックのゲート・レベ
ル記述を縮小する規則に基づく技術によって、ブロック204において作成され
る。シェルがそのために生成されるモジュールは、次の制約条件を満足しなけれ
ばならない。すなわち、
1.完全に同期していなければならない。
2.すべての設計制約条件を満足していることが完全に検証されていなければ
ならない。
3.ゲート・レベルになければならない。
4.「触れてはならない」とマークされることができる地点まで、最適化され
ていなければならない。
これらの制約条件が満足される場合には、そのモジュールは、合成シェルに変
換することができる。
合成シェルは、次の情報を保存しなければならない。すなわち、
1.入力ロード及びファンアウト
2.クロックに対する出力遅延
3.クロックに対する入力信号に対するセットアップ/ホールド制約条件
4.すべての通過信号に対する入力から出力への遅延
図4は、本発明による合成シェルに基づく合成の流れの例を与えるのに用いら
れる回路図である。最初に、図4に示された回路は、行動レベルで定義される。
目的(オブジェクト)は、回路を最適に合成することである。回路ブロックAで
定義される階層は、ブロックBを有するトップ・レベルと、シェルC及びDとを
含む。シェルC及びDは、合成プロセスは既に作成されたシェルに依存し得るこ
とを強調するために図示されている。ブロックBは、ブロックE及びFによって
定義される階層の別のレベルを含む。接続関係は矢印で示されており、矢印11
は、ブロックA,B及Eに与えられる入力である。12は、ブロックA,B,E
及びFに接続される入力である。また、12は、シェルD及びCへの入力として
供給される。13は、ブロックA及びシェルCへの入力である。13は、ブロッ
クA及びシェルCへの入力である。14は、ブロックA及びシェルDへの入力で
ある。出力O1からO3は、次のように接続されている。出力O1は、ブロック
E,B及びAからの出力である。出力O2は、シェルc及びブロックAからの出
力である。出力O3は、シェルDにおいて生じ、ブロックAからの出力として与
えられる。内部ネットN1及びN2は、次のように接続されている。ネットN1
は、ブロックEにおいて生成され、ブロックFに供給される。ネットN2は、ブ
ロックFにおいて生成され、ブロックBからの出力として与えられ、シェルC及
びDへの入力として接続される。
この例では、入力12は、クロックを表している。すべての他の入力及び出力
は、クロックとの関係で特定される。この場合には、合成及び特徴付けの以下の
プロセスが行われ、最適な回路が提供される。ステップの次のリストでは、シェ
ルC及びDは、実際のブロックC及びDから作成される。(タイミング解析は、
ブロックのゲート・レベル・ネットリストが使用可能になるとすぐに、実行する
ことができる。)
すべてのブロックを、トップ・ダウンで特徴付ける(例えば、Bの次にE及び
F)。
Eを合成し、それをフロアプラン(floorplan)して、Eを再び特徴付ける。
Bを、そしてそれに続きFを再び特徴付ける。
Fを合成し、それをフロアプランして、Fを再び特徴付ける。
Eを再び特徴付ける。
E及びFをタイミング解析する。
必要であれば、Eを再び合成し、再び特徴付ける。
Fについて同じことをする。(ただし、この結果として、収束しない逐次的プ
ロセスとなる可能性があり、そうであれば、プロセスを停止させる規準が適用さ
れる。)
E及びFを「触れてはならない」とマークする。
E及びFのためのシェルを作成し、それぞれのシェルによって、それらの代わ
りとする。
Bを再び特徴付けする。
Bを合成し、それをフロアプランする(これによって、E及びFのフロア・プ
ラニングが変更され得る)。
Bを再び特徴付けし、タイミング解析を実行する。
必要であれば、Bを再び特徴付け及びフロアプランする。
Bを「触れてはならない」とマークする。
Bのためのシェルを作成し、そのシェルによってBの代わりとする。
C及びDを再び特徴付けする。
Cを合成し、それをフロアプランして、Cを再び特徴付けする。
Dを再び特徴付けする。
Dを合成し、それをフロアプランして、Dを再び特徴付けする。
C及びDをタイミング解析する。
必要であれば、Cを再び合成し、再び特徴付ける。
Dについて同じことをする。(ただし、この結果として、収束しない逐次的プ
ロセスとなる可能性があり、そうであれば、プロセスを停止させる規準が適用さ
れる。)
C及びDを「触れてはならない」とマークする。
C及びDのためのシェルを作成し、それぞれのシェルによって、それらの代わ
りとする。
Aを合成し、それをフロアプランする(これによって、B,C及びDのフロア
・プラニングが変更され得る)。
Aをタイミング解析する。
合成マネジャは、階層におけるすべてのブロックに対する規則に基づく特徴付
けを生じさせる。例えば、ブロックEに対する入力I1は、関連するワイヤ遅延
に対してなされる想定によって十分に特定される。12に接続されたクロックは
、ネット上のワイヤ遅延とロードに対する想定によって特定されるが、その理由
は、I2が接続されている他の2つのブロックもまたRTLレベルにあるからで
ある。同様にして、ネットN1は、O1に接続された出力が完全に特定される間
に、想定に基づいて特定される。ブロックE及びすべての他のブロックは、この
ようにして特徴付けられる。この場合には、合成及び特徴付けの次のプロセスが
行わ
れて、最適の回路を提供する。(タイミング解析は、あるブロックのゲート・レ
ベルの例が利用可能になるとすぐに実行することができる。)
すべてのブロックを、トップ・ダウンで特徴付ける(例えば、Bの次にE及び
F)。
Eを合成し、それをフロアプランして、Eを再び特徴付ける。
Bを、そしてそれに続きFを再び特徴付ける。
Fを合成し、それをフロアプランして、Fを再び特徴付ける。
Eを再び特徴付ける。
E及びFをタイミング解析する。
必要であれば、Eを再び合成し、再び特徴付ける。
Fについて同じことをする。(ただし、この結果として、収束しない逐次的プ
ロセスとなる可能性があり、そうであれば、プロセスを停止させる規準が適用さ
れる。)
E及びFを「触れてはならない」とマークする。
E及びFのためのシェルを作成し、それぞれのシェルによって、それらの代わ
りとする。
Bを再び特徴付けする。
Bを合成し、それをフロアプランする(これによって、E及びFのフロア・プ
ラニングが変更され得る)。
Bを再び特徴付けし、タイミング解析を実行する。
必要であれば、Bを再び特徴付け及びフロアプランする。
Bを「触れてはならない」とマークする。
Bのためのシェルを作成し、そのシェルによってBの代わりとする。
C及びDを再び特徴付けする。
Cを合成し、それをフロアプランして、Cを再び特徴付けする。
Dを再び特徴付けする。
Dを合成し、それをフロアプランして、Dを再び特徴付けする。
C及びDをタイミング解析する。
必要であれば、Cを再び合成し、再び特徴付ける。
Dについて同じことをする。(ただし、この結果として、収束しない逐次的プ
ロセスとなる可能性があり、そうであれば、プロセスを停止させる規準が適用さ
れる。)
C及びDを「触れてはならない」とマークする。
C及びDのためのシェルを作成し、それぞれのシェルによって、それらの代わ
りとする。
レジスタ318の出力は、インバータ314及びインバータ321を介して与
えられ、出力Out1を生成する。レジスタ320の出力は、インバータ322
に与えられ、出力Out2を与え、バッファ323を介して、ANDゲート32
4への1つの入力となる。ANDゲート324への第2の入力は、Out2信号
である。ANDゲート324の出力は、信号Out4を与える。
入力信号302は、インバータ325を介して、信号Out3を生成する組合
せクラウド(cloud)326に与えられる。
図5を参照すると、セルをゲート・リストから除去するタイミング規則を論じ
ることができる。図5では、Xとマークされた要素は、シェルに対して保存され
ない。
1.入力ポートから回路の経路上の第1の記憶素子への組合せ経路は、保存さ
れる必要がある。これは、任意の入力遅延を再構成し記憶素子のセットアップ及
びホールド時間を計算するのに必要である。従って、例えば、図5の矢印K1に
沿ったセルは、保存される必要があり、これには、NANDゲート305、AN
Dゲート306及びレジスタ310が含まれる。同様にして、ゲート304、ゲ
ート308及びレジスタ309は、保存される必要がある。レジスタ309の出
力からゲート306の入力へのネットは、保存されない。
2.最後の記憶素子から出力ポートへの任意の組合せ経路は、維持される必要
がある。これは、この出力ポートに従属するブロックに対するデータ到着時間と
この後であれば出力ポートにおいてデータが利用可能となる遅延との再構成を可
能にするために必要である。従って、図5の矢印K2の近傍の要素は、保存され
る必要がある。すなわち、レジスタ320及びゲート322は、この規則による
と保存されるべきである。また、レジスタ318、ゲート314及びゲート32
1は、保存されるべきである。
3.シェルがそのために作られるブロックの入力ポートから出力ポートへの任
意の直接の組合せ経路は、保存される必要がある。これは、この出力に従属する
他のブロックの入力においてシェルからデータ到着時間を再構成するために本質
的である。従って、図5の矢印K3に沿った要素は、保存される必要がある。従
って、インバータ325と組合せクラウド326とは、保存されるべきである。
4.クロック分散ネットワークは、保存される必要がある。従って、ライン3
03によって定義されるネットは、保存される必要がある。
5.バッファされていない出力ポートから生じるフィードバック経路は、出力
ローディングに基づいてそれらが接続されている記憶素子のセットアップ時間に
影響する。従って、そのようなフィードバック経路は、影響される記憶素子と共
に保存されるべきである。従って、例えば、図5の経路K4に沿って出力Out
1によって定義されるルートのブランチ上の要素は、保存される必要がある。結
果的に、ゲート307、ゲート304、ゲート308、レジスタ309が保存さ
れる。
6.純粋な組合せロジックを含む出力からのフィードバック経路は、保存され
る必要がある。従って、図5では、出力Out2からANDゲート324の入力
への矢印K5に沿ったブランチと共に、バッファ323とANDゲート324と
は、保存される。
7.リセット及びセットなどの非同期構造は、保存される必要がある。従って
、図5の回路におけるレジスタの任意のものがセット又はリセット入力を含む場
合には、これらの信号を生成するのに用いられるネットは、合成シェルにおいて
、保存されるべきである。
図5には示されていないが、メモリ素子の場合には、次の特別の場合を考慮す
る必要がある。すなわち、
1.メモリ・セルは、非同期RAMである場合には、任意の他の組合せロジッ
クのように扱われるべきであり、それに与えられるデータが記憶素子から来てい
るのでなければ、削除されるべきではない。この特別の場合は、このRAMへの
書き込み信号が入力ポートまでトレースされ得るときに生じる。そのような場合
には、RAMは、保存されるべきである。
2.同期RAMは、記憶素子のように扱われる。RAMに到着する及びRAM
を去るすべての信号がラッチされている場合には、RAMは削除することができ
るが、そうでなければ、保存されるべきである。
3.内部クロックを生成するフリップフロップは、それらがクロックする記憶
素子の任意のものが入力ポート又は出力ポートに組合せロジックを介して又は直
接に接続されている場合には、保存される必要がある。この場合が図6に図解さ
れているが、これは、ライン361上で入力Aを受け取る組合せクラウド360
を含む。レジスタ363をクロックするクロック信号が、ライン362上に与え
られる。レジスタ363の出力は、データ入力をレジスタ365に与える組合せ
クラウド364を介して、与えられる。このレジスタは、ライン322上の信号
によってクロックされる。このレジスタ365の出力は、レジスタ366をクロ
ックするのに用いられる。レジスタ366へのデータ入力は、組合せクラウド3
60の出力において与えられる。従って、要素365は、保存される必要がある
が、その理由は、それが、入力Aからそのデータを組合せロジックを介して受け
取るレジスタ366をクロックするからである。
以上の規準によると、セルを、回路ブロックのゲート・レベル記述から削除し
て、合成シェルを作成することができる。更に、多くのブロックを最適化して、
セルにすることができる。この場合には、相互接続されたシェルを、1つに統合
することができる。次に、2つのシェルがトップ・レベルから見られ、先行の規
則が適用されて、図7に図解されているような既存のサブシェルから成るスーパ
ー・シェルが得られる。従って、図7に示されている第1のシェル400と第2
のシェル401とは、組み合わされて、統合されたシェル402になる。第1の
シェル400は、記憶素子403と、組合せロジック405を介して出力を与え
る記憶素子404とを含む。ロジック405の出力は、第2のシェル401への
入力として、第1のシェル400から外へ与えられる。第2のシェルは、入力レ
ジスタ406と、組合せロジック408を介して出力を与えるレジスタ407と
を含む。統合されたシェルが作成され、その結果として、スーパー・シェル40
2のために、レジスタ404及び406と組合せロジック405とが削除される
。
更に、上述の規則に基づいて保存される必要があり、その推移的(transitive
)なファンアウトにおいていくつかの削除されたゲートを有する、すなわち、経
路
におけるノードに接続されているがシェルに記憶される必要はない削除されたゲ
ートを有する経路は、ロード復旧される必要がある。このようなロード平衡化(
バランシング)は、バッファされた出力からの内部フィードバック・ゲートが削
除される場合に必要であり、その理由は、記憶デバイスから出力に至る経路上の
ロードが影響されるからである。最後の記憶素子から出力ポートへの経路におけ
るそれぞれのノード上のロードは、復旧される必要がある。従って、図5のキャ
パシタ351によって発見的(ヒューリスティック)に表されるネット上のキャ
パシタンスは、復旧され留必要があり、この場合を満足するが、ここで、ゲート
315は、削除された内部フィードバック・ゲートであり、Out1上のロード
に影響する。
クロック・ネットに沿って現れるインクリメンタルなロードは、ダンプ・アウ
トされ、クロック・ネット上でロードの復旧を実行する必要がある。従って、要
素312及び316の除去を補償するクロック・ネット303上のインクリメン
タルなロードは、保存される必要がある。
合成の2つの主なゴールは領域とタイミングとであるから、合成装置によって
評価されるシェルの領域(面積)は、そのシェルが作られた元のネット・リスト
と同じである必要がある。元の領域は、元のゲート・レベル記述に基づいて入手
可能であり、シェルに対して生成された縮小されたネットリストの領域も同様で
ある。従って、機能を有さないが、元のネットリストと縮小されたネットリスト
との領域の差に等しく設定された領域パラメータを有するダミー・セルをモデル
化し、そのダミー・セルを縮小されたネットリストにおいて実例を示すことによ
り、領域の平衡が与えられる。
3つのタイプの領域が、合成装置によって評価される。すなわち、組合せ領域
、非組合せ領域及びネット領域である。組合せ、非組合せ及びネット領域は、ダ
ミー組合せセル、ダミー・シーケンシャル・セル及びダミー・ネットの実例を示
すことによって、復旧することができる。これらのダミー要素は、機能を有して
いないが、領域情報を与える。ダミー・セルは、それぞれの設計技術に特定的で
あり、従って、ライブラリ・ファイルとしてモデル化され、ユーザのホーム・デ
ィレクトリの中にコンパイルされる。ワイヤロード・モジュールが実際にはネッ
ト領域を決定し、ただ1つのワイヤロード・モジュールを、階層のそれぞれのレ
ベ
ルに対して選択することができるので、領域平衡化セルは、シェル・ネットリス
トにおける別個のブロックとして実例化される。
従って、トップ・ダウンの設計が3つのブロック(ブロック1、ブロック2及
びブロック3)が存在する階層の1つのレベルを有するという仮定の下では、合
成シェルのオプションを有する合成シェル生成ルーチンを呼び出すことにより、
次のオプションの下での次のファイルが結果的に生じる。すなわち、
1.領域平衡化のためにゲートを規則に基づいて削除しダミー・ゲートを含ま
せた後に残るゲートを含む合成シェル・ネットリスト。このネットリストは、ま
た、3つの成分であるdum_comb、dum_seq及びdum_netを
実例化するdum_areaと称されるトップ・レベルの下での階層の別個のレ
ベルを含む。dum_combセルは、1つのネットによって、dum_seq
セルに接続されている。これらの成分の記述は、ライブラリ・ファイルにおいて
入手可能である。
2.シノプシス(synopsys)フォーマット又は任意の合成ツール・フォーマッ
トでのライブラリ・ファイル。これは、dum_combを称される1つの組合
せセルを有し、このセルは、機能は有していないが、削除された組合せセルの領
域(面積)に等しい領域を有している。また、これは、機能は有していないが設
計から削除された非組合せセルの全体の領域に等しい領域を有するdum_se
qと称されるセルを含む。dum_netは、元のネットリストとゲートが除か
れたネットリストとの評価されたネット領域の差に単位ファンアウト当たりのワ
イヤロード領域が等しいワイヤロード・モデルである。
3.元の設計のすべての成分とネットとに対するローディング情報を含むブロ
ック・ローディング・ファイル。
統合されたシェルの場合には、合成シェル・プログラムは、ブロック1及びブ
ロック2を、1つのレベルの階層に崩壊させ、1つのシェルを作る。出力ファイ
ルに関する限り、プログラムは、2つのファイルを、すなわち、ブロック1に対
する崩壊したネットリストとブロック2に対する崩壊したネットリストとを、生
じさせる。元のシェル・ネットリストと崩壊したネットリスト・ファイルとの唯
一の差は、元のシェル・ネットリスト・ファイルの場合には、ネットリストは1
つのトップ・レベルを想定して生成されるということである。しかし、崩壊した
ネットリスト・ファイルは、既に図7を参照して述べたように2つ以上のレベル
を組み合わせてシェルを作成した後で生成されるネットリストである。
図8、図9及び図10は、本発明によるシェル生成において用いられる、シェ
ル生成の流れ、領域の平衡化及びロードの復旧を与えている。図8では、次の用
語が、シェル生成の背後にある概念の理解を助ける目的で用いられている。
「ルート(root)」。回路ブロックの任意の入力ポート又は出力ポートは、ルート
と称される。例えば、図5では、ノード300、301及び302が、ルートで
ある。また、出力Out1、Out2、Out3及びOut4もルートである。
「ブランチ(branch)」。ブランチは、ルートから生じるファンアウトである。従
って、図1を参照すると、ライン353によって表されている地点300からゲ
ート304の入力への経路はブランチであり、また、ネット354によって表さ
れるノード300からゲート305の入力への経路もまた入力ポート300のフ
ァンアウトであるからブランチである。
「シュート(shoot)」。シュートは、マクロセルから生じるファンアウトである
。図5では、インバータ314とインバータ313とに至るインバータ321の
入力はシュートである。
「シュート・イン(shoot in)」。シュート・インは、セルの入力に接続された
シュートである。例えば、図5におけるネットSin1は、ゲート313へのシ
ュート・インである。
「シュート・アウト(shoot out)」。シュート・アウトは、セルの出力に接続さ
れたシュートである。例えば、図5におけるネットSout1は、ゲート314
へのシュート・アウトである。
「リーフ(leaf)」。リーフとは、タイミング経路が終端する任意の記憶素子であ
る。設計におけるすべてのフリップフロップとラッチとはリーフである。
図8は、シェル生成のためのプロセスの流れを与える。アルゴリズムは、開始
から始まる(ブロック500)。第1のステップは、処理される次のルートを位置
決めし、それが入力なのか出力なのかを識別することである(ブロック501)。
次に、アルゴリズムは、そのルートがクロック、セット又はクリア信号を運ぶか
どうかを判断する(ブロック502)。ブロック502において、それがクロック
、セット又はクリア信号出ない場合には、アルゴリズムは、ルート上の
次の(又は第1の)ブランチを位置決めする(ブロック503)。このブランチに
対しては、ブランチ上のセルは、保持すべきものとしてマークされる(ブロック
504)。次に、そのセルがリーフであるかどうかが判断される(ブロック505
)。リーフでない場合には、レベル・インデクスiは、1に設定され(ブロック5
16)、このレベルに対してセル上の次のシュートが、位置決めされる(ブロック
507)。次に、アルゴリズムは、対応するルートが入力ルートであるかどうか
を判断する(ブロック508)。入力である場合には、そのシュートがシュート・
インであるかどうかを判断する(ブロック509)。ブロック509においてシュ
ート・インである場合には、そのセルは、ロード復旧のためにマークされ(ブロ
ック510)、アルゴリズムは、次のシュートの位置決めをするために、ブロッ
ク507までループして戻る。シュート・インではない場合には、又は、対応す
るルートがブロック508において入力であった場合には、アルゴリズムは、セ
ルを保持すべきものとマークする(ブロック511)。次に、アルゴリズムは、保
持されるべきとマークされたセルがリーフであるかどうかを判断する(ブロック
512)。リーフでない場合には、インデクスiはインクリメントされ(ブロック
513)、そうでない場合には、インデクスiは、変わらない。次に、アルゴリ
ズムは、このインデクス・レベルi上のすべてのシュートが処理されたかどうか
を判断する(ブロック514)。そうでなければ、アルゴリズムは、次のシュート
を処理するために、ブロック507までループして戻る。ブロック514ですべ
てのシュートがこのレベルに対して処理されたとされる場合には、アルゴリズム
は、インデクスiがゼロかどうかを判断する(ブロック515)。iがゼロではな
い場合には、iは、1だけデクリメントされ(ブロック516)、アルゴリズムは
、ブロック514にループする。iがブロック505においてゼロである場合に
は、アルゴリズムは、そのルートに対するすべてのブランチが処理されているか
どうかをブロック517において判断する。そうでなければ、次のブランチを処
理するために、ブロック503までループして戻る。ルート上のすべてのブラン
チが処理されている場合には、アルゴリズムは、すべてのルートが処理されてい
るかどうかを判断する(ブロック518)。そうでなければ、アルゴリズムは、図
示されているように、ブロック501において地点Aまで分岐して戻る。すべて
のルートが処理されている場合には、アルゴリズムは、終了に
よって示されているように、終了する(ブロック519)。
ブロック502においてルートがクロック、セット又はクリア信号であると判
断された場合には、アルゴリズムは、処理すべき次の(又は第1の)ブランチを
位置決めする(ブロック520)。次に、このブランチ上のセルがリーフであるか
どうかが判断される(ブロック521)。リーフである場合には、アルゴリズムは
、ルート上に他のブランチがあるかどうかを判断する(ブロック530)。ルート
上のすべてのブランチが処理されている場合には、アルゴリズムは、ブロック5
20までループして戻る。ブロック530においてそのルートに対するすべての
ブランチが終了しているを判断される場合には、アルゴリズムは、ルートを処理
するためにブロック501に分岐して戻る。ブロック521においてセルがリー
フではないということになれば、アルゴリズムは、ブロック522に分岐して、
インデクスiがゼロに設定される。次に、アルゴリズムは、セルを保持すべきも
のとしてマークし(ブロック523)、インデクスiを1だけインクリメントする
(ブロック524)。インデクスをインクリメントした後で、アルゴリズムは、レ
ベルiにおける第1の又は次のシュートを位置決めする(ブロック525)。そし
て、シュート上のセルがリーフであるかどうかが判断される(ブロック526)。
セルがリーフではない場合には、アルゴリズムは、分岐してブロック523に移
動し、セルを保持すべきものとマークする。セルがリーフである場合には、アル
ゴリズムは、レベルiにおけるすべてのシュートが処理されているかどうかを判
断する(ブロック527)。そうでなければ、アルゴリズムは、ブロック525に
戻り、次のシュートを処理する。すべてのシュートが処理されている場合には、
アルゴリズムは、インデクスが1に等しいかどうかを判断する(ブロック528)
。インデクスが1ではない場合には、1だけデクリメントされ(ブロック529)
、アルゴリズムは、ブロック527に戻って、それよりも低いレベルの他のシュ
ートを処理する。ブロック528においてインデクスiが1に等しい場合には、
アルゴリズムは、分岐してブロック530に至り、すべてのブランチが処理され
ているかどうかを判断する。そうでなければ、アルゴリズムは、ブロック520
に戻り、次のブランチに進む。すべてのブランチがブロック530で処理されて
いる場合には、アルゴリズムは、ブロック501までループして戻り、処理を継
続する。
図9は、タイミング・シェル・ネットリストのための領域平衡化プロセスを図
解している。このプロセスは、開始ブロック600で始まる。第1のステップは
、合成されている回路ブロックのための技術ライブラリを読み出すことに関する
(ブロック601)。次に、元の設計の組合せ、非組合せ及びネット領域が決定さ
れる(ブロック602)。次に、作成されたシェルの組合せ、非組合せ及びネット
領域が決定される(ブロック603)。これらの2つのファイルの差が、ライブラ
リ・ファイルに書き込まれる(ブロック604)。次に、このシェルの組合せ、非
組合せ及びネット領域が、ライブラリ・ファイルをコンパイルことによって作成
される(ブロック605)。これらのダミー・セルは、タイミング・シェルの中に
挿入され、プロセスは終了する(ブロック606)。
図10は、図8及び図9に従って生成された合成シェルのためのロード復旧の
プロセスを図解している。このアルゴリズムは、開始ブロック600で始まる。
第1のステップは、第1の又は次のリーフを回路において位置決めすることに関
する(ブロック601)。次のステップでは、このリーフがセル生成プロセスに保
持するためにマークされているかどうかを判断する(ブロック602)。そうでな
ければ、そのリーフに対するクロック、クリア及びセット・ネット上のロードは
、復旧される(ブロック603)。保持のためにマークされている場合には、アル
ゴリズムは、ブロック601まで、ループして戻る。
ブロック603の後は、アルゴリズムは、すべてのリーフが処理されているか
どうかをを判断する(ブロック604)。そうでなければ、アルゴリズムは、ブロ
ック601までループして戻り、次のリーフを処理する。すべてのリーフがブロ
ック604において処理されている場合には、アルゴリズムは、ブロック605
に進み、シェル生成プロセスにおいてロード復旧のためのマークがなされている
セル上のロードは、ロード復旧される。このプロセスの後で、アルゴリズムは、
終了する(ブロック606)。
この後に、付属資料(Appendices)のA、B及びCが続いている。付属資料A
は、加算器のためのVERILOG言語での行動コードのサンプルであり、付属
資料Bは、付属資料Aにおいてコードによって表された加算器に対するNDLフ
ォーマットでの合成されたネットリストであり、付属資料Cは、本発明によって
作成されたNDLフォーマットの合成シェルである。付属資料Bにおいて示さ
れている完全な合成されたネットリストは、28のマクロセルを有する回路を記
述している。例えば、図11、12及び13は、この合成されたネットリストの
トップ・レベルの回路を示している。図11において示されているように、FD
1というラベルの付された14のレジスタと、更にBITADDというラベルの
付されたサブブロックとがこのトップ・レベルの回路図に存在している。図12
は、5つのゲートを有する第1の加算器のサブブロックを示し、図13は、9つ
のゲートを有する第2の加算器のサブブロックを示している。これは、付属資料
Bに記述された加算器の完全なゲート・レベルのネットリストによって定義され
た28のゲートに対応する。
付属資料Cは、本発明による合成シェルのための縮小されたネットリストを示
している。この縮小されたネットリストは、図14の回路図によって示されるよ
うに、たった14のゲートと1つのダミー・セルとを有する。図示されているよ
うに、図14は、14のゲートと2つのゲートが除去されたブロックを有してい
る。ゲートが除去されたブロックは、図15及び図16に示された回路に表すこ
とができる。図示されているように、図15及び図16は、単に、回路における
サブブロックの入力と出力とである。従って、付属資料Cは、ネットリスト・フ
ォーマットでの結果的な合成シェルを示している。付属資料Cでは、ダミー・セ
ルは、ライン71によって表されている。上述のように、このダミー・セルは、
縮小されたネットリストのためのダミー・セルの記述が与えられているセル・ラ
イブラリへの基準を与える。代表的なダミー・モジュールは、付属資料Cのライ
ン122で始まる。ライン128は、シーケンシャル領域のための領域平衡化ラ
イブラリにおけるフェーク・セルfk_arseq()に対応し、ライン129
は、組合せ領域のためのフェーク・セルfk_ar_com()を指す。ダミー
・モジュールにおいて定義されたネットは、上述の領域平衡化dum_netで
ある。
このように、大規模集積回路(LSI)の合成に役立つ新たなツールがデータ
処理環境において用いられる合成シェル構成に基づいて与えられる。合成シェル
は、ASICの設計に関して表された回路ブロックに依存する顧客に移植され、
又は、大規模集積回路の合成の一部として生成される。合成シェルを用いること
により、大規模なASICの合成の際に、時間とメモリ消費との点で、処理要求
を大幅に縮小する。
本発明の好適実施例に関する以上の説明は、例示及び説明目的のものである。
網羅的であるとか本発明を開示された正確な形式に限定しようとするなどのiT
OTALは全くない。明らかに、当業者には、多くの修正や改変が明らかである
。本発明の範囲は、次に掲げる請求の範囲とその均等物とによって、画定される
ものとする。
DETAILED DESCRIPTION OF THE INVENTION Generation and Use of Synthetic Shells in ASIC Designs Limited Disclaimer of Copyright Some portions of the disclosure of this patent document contain material whose copyright protection is sought. The copyright holder does not object to facsimile reproduction by anyone of this patent document or patent disclosure as it appears in the United States Patent and Trademark Office files or records, but reserves all other rights. BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to integrated circuit development, and more particularly, to tools used in the design and development of application specific integrated circuits (ASICs). 2. Description of the Related Art Automated design tools for ASIC design enable the design of ASICs containing millions of available gates on a single chip. The development process of such a complex ASIC relies on development and verification tools implemented in a data processing system that automates the design. These tools are provided by major electronic design automation equipment or ASIC vendors, such as LSI Logic Corporation, the assignee of the present invention. For example, LSI Logic offers a product called the C-MDE (TM) design tool, which provides all the functions necessary to move a design to working silicon. Design tools in commercially available design automation systems include timing analysis tools, floor planning tools, layout tools, synthesis tools, packaging tools, and the like. The design process typically includes an ASIC specification with a description of the behavioral (or register-migration level). In a process known as synthesis, this behavioral description is processed to create an optimized gate-level netlist for the design. The netlist is very large because there are millions of gates in one design. Since synthesis is a recursive process, the entire netlist must be processed before it can be stored in a data processing system and created in its final form. As the density of ASIC designs increases, the available computing power has become more difficult to keep up with. Therefore, system execution tools for ASIC design require powerful computers with large amounts of memory. As the number of available gates grows exponentially, speed and memory bottleneck problems arise, which substantially slow down the development process for complex designs. To address this problem, Synopsys, a vendor of electronic design automation equipment, has created a hierarchical design that can be converted to a library cell that has delay information for the cell in the form of timing arcs. The "model" used is proposed. This model is used in place of the original design, which can be removed from memory during the bottom-up synthesis process for that design. This technique has proven inaccurate not only in its own environment, but also when the model is ported to a new environment. This model-dependent synthesis results in a design that is very different from that obtained with the actual gate-level netlist of the modeled block. In trying to reduce memory requirements, this technique loses an unacceptable amount of precision. Also, as the ASIC industry matures, many vendors provide users of ASIC design tools with proprietary core blocks of circuits. These proprietary circuits substantially reduce the design time required for ASIC development. However, vendors of such circuits must disclose details of the design of the core circuit for use in synthesizing the entire ASIC. This would end up disclosing proprietary information that would otherwise be confidential, which is undesirable. Therefore, it is desirable to provide a tool that can help improve compilation speed and reduce memory requirements when hierarchically synthesizing large ASIC designs without sacrificing accuracy. Further, it is desirable that the results of running such tools be portable between multiple design environments and synthesis tools to facilitate design reuse. Furthermore, it would be desirable to provide information about a proprietary module in a format that protects the intellectual property of the owner of the module, while at the same time allowing accurate synthesis of ASICs using the module. SUMMARY OF THE INVENTION The present invention provides a practical approach for the synthesis of ASICs consisting of millions of gates based on the use of synthesis shells. A synthetic shell is created by starting with a gate-level description of a fully characterized block. This gate-level description is generated by removing internal gates and creating a gate-level synthesis shell that is a subset of the synthesized block. The synthesis shell provides the input load and fanout of the block, the output delay of the block to the clock, the output drive of the block, the setup / hold constraints on the input signal for the block's clock, and the input to output delay for the passing signal of the block. Save. Such a synthetic shell can be used instead of the original design netlist. Therefore, the synthetic shell is used for hierarchical synthesis in a customer's design environment or as an offering from an ASIC service provider to protect the intellectual property rights of the provider. be able to. All the information needed by the compositing side is available in the compositing shell in the form of a netlist, and the shell is very accurate since additional information is provided to reconstruct the original loading and region information. It is. The synthesis shell described above includes a gate-level description that is a subset of the synthesized blocks. This reduced description is obtained by removing elements of the gate level description according to a set of criteria, including: That is, storing the combination path from the input port to the first storage element (element), storing the combination path from the last storage element to the output port, and setting the direct combination path from the input port to the output port. Preserving, preserving clock distribution path, preserving feedback path from output port to storage element with its storage element, preserving feedback path to direct combination path in design, to asynchronous RAM If the write signal is traced to the input port, save the asynchronous RAM, otherwise treat the asynchronous RAM as combinatorial logic and treat the synchronous RAM as a storage element, clocked by the resulting internal clock. Any storage element can be combined with input port or output port If the via to or is directly connected, to save the storage element to produce internal clock, and an asynchronous path, reset, be stored as such clear, it is. To generate the composite shell, area difference data indicating the difference between the area required for the original block and the area required for the elements stored in the composite shell is generated, and the area difference data is used by the composite shell. Including the step of including. In addition, load information is stored using a synthesis shell, which indicates the load inside the synthesis shell associated with the synthesis process, and on each node in the path from the last storage element to the output in the block. 5 shows the load and shows incremental loads on the clock and asynchronous paths. Here, the incremental load is a load on the net that compensates for the removal of the gate connected to the net. The shell's direct implementation is expressed in the form of a netlist, despite a subset of the original netlist for the subject of the shell's blocks. The shell maintains sufficient information in a subset of the netlist so that if the original netlist is replaced by this subset, it has no effect on the synthesizer, and It is still possible to access all the information that would have been obtained. The size of the shell netlist is much smaller, because its composition depends on a subset of the original netlist. Therefore, the memory requirement for storing the shell netlist is smaller. The shell is portable between different process, voltage, and temperature (PVT) conditions, can be ported from vendors to integrated circuit designers, and can be generated by designers during hierarchical synthesis. You can also. Accordingly, the present invention is characterized as a method of synthesizing a gate level description of an integrated circuit module including a plurality of blocks from a behavior or register transfer level description of the module. The method communicates design constraints and synthesizes a plurality of first blocks from the behavioral description of the block. This synthesized gate level description is reduced to a synthesis shell, as described above. Next, the method combines the second block in the plurality of blocks by processing the action description of the second block with reference to the combining shell to create a gate-level description of at least one other block. About doing. This method of synthesizing an integrated circuit module further completes the overall design of a further block in a recursive manner with reference to the synthesis shell of the first and second blocks and the behavioral description of the other blocks. Up to processing to combine. Further, the process includes integrating the two-block composite shell into a higher-level composite shell. The merged file is then reduced to a merged synthetic shell that can replace a lower level synthetic shell combination. The present invention includes resources for creating and / or storing a composite shell created by performing the above-described method and / or processing resources for executing a composite algorithm utilizing the composite shell. Characterized as a device. Therefore, the processing time and memory required for synthesizing a large-scale ASIC having several million gates can be reduced. According to the prior art, the synthesis of large designs has limited available computing power, creating speed and resource bottleneck problems. The main cause of this bottleneck is that in the prior art, the entire design netlist must be held in memory even for a block that has been optimized. The synthesized block was required to be present in memory because it could have a break in characterizing other blocks in the synthesis. The synthesis shell according to the invention is based on the extraction of relevant information from the synthesized block, and the characterization of other blocks during synthesis is still accurate. The advantage of this shell is that storing the extracted blocks requires a much smaller memory requirement than storing the entire netlist of the synthesized blocks in memory. Therefore, the advantages of the present invention include the following. That is, 1. 1. reduction of memory requirements; 2. reduction of run time; 3. The accuracy of representation and use in hierarchical design synthesis is not different from the original design. 4. Relying on a netlist approach to a synthesis shell that is portable between multiple synthesis tools and design environments; 5. In a system where a designer provides a previously designed cell for use in his or her own ASIC, the accuracy of the usage information is preserved; 6. Compatible with the hierarchical top-down characterization and bottom-up optimization methods used in ASIC synthesis; Protect intellectual property rights to the proprietary core that Shell represents. Other features and advantages of the invention can be understood by reference to the following drawings, detailed description, and claims. BRIEF DESCRIPTION OF THE DRAWINGS FIG. 1 is a simplified block diagram of a system that includes processing resources for generating a composition shell and performing composition based on the composition shell according to the present invention. FIG. 2 illustrates the process of ASIC design including synthesis based on the use of a synthesis shell and synthesis shell generation according to the present invention. FIG. 3 is a flowchart of a recursive synthesis process based on synthesis shell generation according to the present invention. FIG. 4 is an exemplary block diagram used to illustrate the synthesis flow according to the present invention. FIG. 5 is an exemplary block diagram used to illustrate cell deletion based on pre-specified rules for shell generation. FIG. 6 is an exemplary block diagram used to illustrate one rule, the storage of internally generated clocks, according to the present invention. FIG. 7 is an example illustrating an integrated shell according to one aspect of the present invention. FIG. 8 is a flow chart illustrating the process of shell creation according to the present invention. FIG. 9 is a flowchart illustrating the technique of region balancing during shell generation according to the present invention. FIG. 10 is a flowchart illustrating a technique for storing load information on a specific net in a synthetic shell. 11 to 16 are schematic diagrams of representative circuit blocks and shells of the circuit blocks represented by the code samples of the appendixes (Appendix AC), which are examples of the synthetic shell process according to the present invention. Is explained. DETAILED DESCRIPTION A detailed description of a preferred embodiment of the present invention is provided with reference to FIGS. Here, FIG. 1 gives an overview of the apparatus used in the generation of a synthetic shell and the use of the synthetic shell in the synthesis of an ASIC according to the invention. FIGS. 11 to 16 are used to illustrate examples of entire netlists and composite shells in the appendix. The apparatus shown in FIG. 1 includes a central processing unit (CPU) 10 coupled to a bus 11. Further, an input / output device 12 and a display system 13 are connected to the bus 11. In this device, a data memory 14 and an instruction memory 15 are provided and connected to the bus 11 for use by the CPU 10. The data memory according to the present invention includes a register tran sfer level of the ASIC under development and other behavioral descriptions. The data memory is also used to store the gate-level description of the ASIC after synthesis and the shell of the synthesis shell or circuit blocks within the ASIC under development. This block diagram provides a heuristic view of the apparatus for storing and processing a synthesis shell and process in accordance with the present invention. This figure is intended to represent, for example, components of a commercial work station or personal computer that include the additional elements described in this application. According to the invention, the instruction memory 15 includes a synthesis tool, with a synthesis shell generation process according to the invention and a region balancing process for synthesis shell generation. In addition, the synthesis tool can synthesize blocks within the ASIC under development, relying on the synthesis shell for already synthesized blocks. Thus, the instruction memory includes development and verification tools used to implement a hardware description language such as VELILOG or VHDL. These design tools provide all the functionality needed to port a design from the hardware description level to a workstation. These features include synthesis tools, timing analysis tools, floor planning tools, layout tools, packaging tools, and more. According to the present invention, these functions also include the generation of a synthetic shell having a region balancing function as described above and described in more detail below. FIG. 2 illustrates the content of creating and using a synthetic shell according to the present invention. Accordingly, FIG. 2 illustrates a design flow for ASIC development, which includes generation of an ASIC specification (block 100) and synthesis of an ASIC gate-level description based on this specification (block 100). 101) and the resulting layout of the gate-level description (block 102), which are used during ASIC fabrication. The present invention provides an improvement in synthesis resources. Thus, synthesizing includes, for example, providing an ASIC behavioral description using a hardware description language at the register transfer level (RTL) (block 103). This behavior description is translated and optimized (block 104). The result of the translation and optimization steps is a gate-level netlist for the ASIC (block 105). According to the present invention, a synthetic shell is used during translation and optimization of the synthesis. In accordance with the synthesis method, action codes, for example, RTL codes, and design constraints for the ASIC are provided (block 106). Based on this information, the ASIC is characterized and optimized to provide a gate level description (block 107). Finally, a synthesis shell netlist is obtained for the block being synthesized (block 108). The shell is marked "don't touch" and stored for synthesis of further blocks in the ASIC (block 109). This composite shell netlist is obtained using a shell generation process that includes reading the optimized block (block 110). Rules that apply a set of criteria are applied to remove gates from the synthesized design for the circuit block (block 111). Finally, the shell netlist and other necessary files for the shell are written for use in the synthesis of the ASIC balance and the original block is removed (block 112). The rules applied in block 111 include the basic shell generation rules, which result in the removal of gates from inside the circuit blocks that are not necessary for ASIC balance synthesis (block 113). Special cases and hierarchical considerations are then added to the resulting gate list level shell (block 114). The load on the net required for further synthesis is restored in the synthesis shell (block 115). Region information for the original gate-level description for the circuit block is saved by region balancing in a reduced netlist used as a synthesis shell (block 116). Finally, the results of the synthesis shell can be used for further synthesis of other blocks (block 117). FIG. 3 provides a more detailed block diagram of the synthesis process according to the present invention. Thus, FIG. 3 defines the synthesis flow used to characterize and optimize large designs. Given the input / output attributes and timing constraints, characterize the module (block 200). Characterization is a top-down process that provides the calculation of all I / O attributes on the pins of the module being characterized. This process is performed by communicating the I / O characteristics of the top-level module and the remaining effects of the circuit to the input and output of the module being characterized. Characterization is a top-down process because the characteristics of the module at the top level of the hierarchy must be determined before the characteristics of the sub-modules can be determined. Having characterized the module, the process proceeds to optimize the module (block 201). Optimization is a bottom-up process that starts with a small block of the design. The synthesis shell for a module is created as soon as the module is fully optimized and mapped to a gate, ie, synthesized in the current environment. This is also the point where the module is marked "don't touch". As shown in block 202, after the delay prediction and timing analysis, if the timing and other constraints are satisfied, the attribute "don't touch" is given to the module (block 203) and the synthetic shell is Once created, the module is replaced by the shell (block 204). If the timing and other constraints are not satisfied at block 202, the shell is re-optimized starting at block 201. The composite shell is created at block 204 by a rules-based technique that reduces the gate-level description of the optimized block based on a set of criteria. The module for which the shell is created must satisfy the following constraints: That is, 1. Must be completely synchronized. 2. It must be fully verified that all design constraints are satisfied. 3. Must be at the gate level. 4. It must be optimized to the point where it can be marked "don't touch". If these constraints are satisfied, the module can be converted to a synthetic shell. The synthetic shell must store the following information: That is, 1. 1. Input load and fanout 2. Output delay with respect to clock 3. Setup / hold constraints on input signal to clock Input to Output Delay for All Passed Signals FIG. 4 is a circuit diagram used to provide an example of a synthesis flow based on a synthesis shell according to the present invention. First, the circuit shown in FIG. 4 is defined at the activity level. The purpose (object) is to optimally synthesize the circuit. The hierarchy defined by circuit block A includes a top level having block B, and shells C and D. Shells C and D are shown to emphasize that the synthesis process may depend on a shell that has already been created. Block B includes another level of the hierarchy defined by blocks E and F. The connection relationship is indicated by arrows, and arrow 11 is an input given to blocks A, B and E. 12 is an input connected to blocks A, B, E and F. Also, 12 is provided as an input to shells D and C. 13 is an input to the block A and the shell C. 13 is an input to the block A and the shell C. 14 is an input to the block A and the shell D. The outputs O1 to O3 are connected as follows. Output O1 is the output from blocks E, B and A. Output O2 is the output from shell c and block A. Output O3 occurs in shell D and is provided as output from block A. The internal nets N1 and N2 are connected as follows. The net N1 is generated in the block E and supplied to the block F. Net N2 is generated in block F, provided as an output from block B, and connected as an input to shells C and D. In this example, input 12 represents a clock. All other inputs and outputs are specified in relation to the clock. In this case, the following processes of synthesis and characterization are performed to provide an optimal circuit. In the next list of steps, shells C and D are created from the actual blocks C and D. (Timing analysis can be performed as soon as the block's gate-level netlist becomes available.) Characterize all blocks from the top down (eg, B then E and F). Synthesize E, floorplan it, and characterize E again. Characterize B and then F again. Synthesize F, floorplan it, and characterize F again. Characterize E again. E and F are timing analyzed. If necessary, re-synthesize and re-characterize E. Do the same for F. (However, this can result in a sequential process that does not converge, in which case the criteria to stop the process apply.) Mark E and F as "do not touch". Create shells for E and F and substitute them for each shell. Characterize B again. Combine B and floorplan it (this can change the floor planning of E and F). Characterize B again and perform timing analysis. If necessary, characterize and floorplan B again. Mark B as "Do not touch." Create a shell for B and substitute B for that shell. Characterize C and D again. Synthesize C, floorplan it, and characterize C again. Characterize D again. Synthesize D, floorplan it, and characterize D again. Timing analysis of C and D. If necessary, resynthesize and characterize C again. Do the same for D. (However, this can result in a sequential process that does not converge, in which case the criteria for stopping the process apply.) Mark C and D as "do not touch." Create shells for C and D and substitute them for each shell. Combine A and floorplan it (this can change the floor planning of B, C and D). A is analyzed for timing. The composition manager produces a rule-based characterization for every block in the hierarchy. For example, input I1 to block E is well specified by assumptions made for the associated wire delay. The clock connected to 12 is specified by assumptions on wire delays and loads on the net, because the other two blocks to which I2 is connected are also at the RTL level. Similarly, net N1 is identified based on assumptions while the output connected to O1 is completely identified. Block E and all other blocks are characterized in this way. In this case, the following process of synthesis and characterization is performed to provide the optimal circuit. (Timing analysis can be performed as soon as a gate-level example of a block becomes available.) Characterize all blocks top down (eg, B then E and F). Synthesize E, floorplan it, and characterize E again. Characterize B and then F again. Synthesize F, floorplan it, and characterize F again. Characterize E again. E and F are timing analyzed. If necessary, re-synthesize and re-characterize E. Do the same for F. (However, this can result in a sequential process that does not converge, in which case the criteria for stopping the process apply.) Mark E and F as "do not touch". Create shells for E and F and substitute them for each shell. Characterize B again. Combine B and floorplan it (this can change the floor planning of E and F). Characterize B again and perform timing analysis. If necessary, characterize and floorplan B again. Mark B as "Do not touch." Create a shell for B and substitute B for that shell. Characterize C and D again. Synthesize C, floorplan it, and characterize C again. Characterize D again. Synthesize D, floorplan it, and characterize D again. Timing analysis of C and D. If necessary, resynthesize and characterize C again. Do the same for D. (However, this can result in a sequential process that does not converge, in which case the criteria to stop the process apply.) Mark C and D as "do not touch." Create shells for C and D and substitute them for each shell. The output of the register 318 is provided via the inverter 314 and the inverter 321 to generate the output Out1. The output of register 320 is provided to inverter 322, provides output Out2, and becomes one input to AND gate 324 via buffer 323. The second input to AND gate 324 is the Out2 signal. The output of AND gate 324 provides signal Out4. Input signal 302 is provided via inverter 325 to a combination cloud 326 that generates signal Out3. Referring to FIG. 5, the timing rules for removing cells from the gate list can be discussed. In FIG. 5, elements marked X are not saved to the shell. 1. The combination path from the input port to the first storage element on the path of the circuit needs to be preserved. This is necessary to reconstruct any input delays and calculate storage element setup and hold times. Thus, for example, the cells along arrow K1 in FIG. 5 need to be saved, including NAND gate 305, AND gate 306, and register 310. Similarly, gate 304, gate 308, and register 309 need to be saved. The net from the output of register 309 to the input of gate 306 is not saved. 2. Any combination path from the last storage element to the output port needs to be maintained. This is necessary in order to be able to reconstruct the data arrival time for the block dependent on this output port and the delay after which data will be available at the output port. Therefore, the elements near arrow K2 in FIG. 5 need to be saved. That is, register 320 and gate 322 should be saved according to this rule. Also, register 318, gate 314, and gate 321 should be preserved. 3. Any direct combinatorial paths from the input ports to the output ports of the block for which the shell is made need to be preserved. This is essential for reconstructing the data arrival time from the shell at the input of other blocks dependent on this output. Therefore, the elements along arrow K3 in FIG. 5 need to be preserved. Therefore, the inverter 325 and the combination cloud 326 should be saved. 4. Clock distribution networks need to be preserved. Therefore, the net defined by line 303 needs to be preserved. 5. Feedback paths arising from unbuffered output ports affect the setup time of the storage elements to which they are connected based on output loading. Therefore, such a feedback path should be preserved with the affected storage element. Thus, for example, the elements on the branch of the route defined by output Out1 along path K4 in FIG. 5 need to be preserved. As a result, the gate 307, the gate 304, the gate 308, and the register 309 are saved. 6. Feedback paths from the output, including pure combinational logic, need to be preserved. Thus, in FIG. 5, buffer 323 and AND gate 324 are saved, along with a branch along arrow K5 from output Out2 to the input of AND gate 324. 7. Asynchronous structures such as resets and sets need to be preserved. Thus, if any of the registers in the circuit of FIG. 5 include a set or reset input, the net used to generate these signals should be preserved in the synthesis shell. Although not shown in FIG. 5, in the case of a memory device, the following special cases need to be considered. That is, 1. If the memory cell is an asynchronous RAM, it should be treated like any other combinational logic and should not be deleted unless the data provided to it comes from storage elements. This special case occurs when the write signal to this RAM can be traced to the input port. In such a case, the RAM should be saved. 2. A synchronous RAM is treated like a storage element. If all the signals arriving and leaving the RAM are latched, the RAM can be deleted, otherwise it should be preserved. 3. The flip-flops that generate the internal clock need to be preserved if any of the storage elements they clock are connected to input or output ports via combinatorial logic or directly. This case is illustrated in FIG. 6, which includes a combination cloud 360 that receives input A on line 361. A clock signal for clocking register 363 is provided on line 362. The output of register 363 is provided via combination cloud 364 which provides data input to register 365. This register is clocked by the signal on line 322. The output of this register 365 is used to clock register 366. The data input to register 366 is provided at the output of combination cloud 360. Thus, element 365 needs to be saved because it clocks register 366, which receives its data from input A via combinational logic. According to the above criterion, cells can be deleted from the gate level description of a circuit block to create a composite shell. In addition, many blocks can be optimized into cells. In this case, the interconnected shells can be integrated into one. Next, the two shells are viewed from the top level and the preceding rules are applied, resulting in a super shell consisting of existing subshells as illustrated in FIG. Accordingly, the first shell 400 and the second shell 401 shown in FIG. 7 are combined into an integrated shell 402. First shell 400 includes storage element 403 and storage element 404 that provides output via combinational logic 405. The output of logic 405 is provided out of first shell 400 as an input to second shell 401. The second shell includes an input register 406 and a register 407 that provides an output via combinational logic 408. An integrated shell is created, resulting in the deletion of registers 404 and 406 and combination logic 405 for super shell 402. In addition, it needs to be preserved according to the rules described above and has some deleted gates in its transitive fanout, ie connected to the nodes in the path but stored in the shell Paths with deleted gates that do not need to be loaded need to be load restored. Such load balancing is necessary when the internal feedback gate from the buffered output is removed because the load on the path from the storage device to the output is affected. It is. The load on each node in the path from the last storage element to the output port needs to be restored. Thus, the capacitance on the net heuristically represented by the capacitor 351 of FIG. 5 needs to be restored and retained, satisfying this case, where the gate 315 has the internal feedback feedback removed. It is a gate and affects the load on Out1. Incremental loads that appear along the clock net are dumped out and need to perform load recovery on the clock net. Therefore, incremental loads on clock net 303 that compensate for removal of elements 312 and 316 need to be preserved. Since the two main goals of synthesis are area and timing, the area (area) of the shell evaluated by the synthesizer must be the same as the netlist from which the shell was created. The original region is available based on the original gate-level description, as is the region of the reduced netlist generated for the shell. Therefore, model a dummy cell that has no function, but has a region parameter set equal to the region difference between the original netlist and the reduced netlist, and replaces the dummy cell with the reduced netlist. By giving an example at, the equilibrium of the regions is given. Three types of regions are evaluated by the synthesizer. That is, a combination area, a non-combination area, and a net area. Combined, uncombined and net regions can be restored by showing examples of dummy combined cells, dummy sequential cells and dummy nets. These dummy elements have no function but provide area information. Dummy cells are specific to each design technique, and are therefore modeled as library files and compiled into the user's home directory. The region balancing cells are separate from the shell netlist because the wireload module actually determines the net region and only one wireload module can be selected for each level of the hierarchy. Is illustrated as a block. Therefore, under the assumption that the top-down design has one level of the hierarchy where three blocks (Block 1, Block 2 and Block 3) exist, calling the synthetic shell generation routine with the synthetic shell option Will result in the following files under the following options: That is, 1. A synthetic shell netlist containing the gates that remain after rule-based gate removal and dummy gate inclusion for region balancing. The netlist also includes distinct levels of the hierarchy below the top level, called dum_area, which illustrates the three components dum_comb, dum_seq, and dum_net. The dum_comb cell is connected to the dum_seq cell by one net. Descriptions of these components are available in library files. 2. Library files in synopsys format or any synthesis tool format. It has one combination cell called dum_comb, which has no function but has a region equal to the region (area) of the deleted combination cell. It also includes a cell called dum_seq that has an area equal to the entire area of the non-combined cell that has no function but has been removed from the design. dum_net is a wireload model where the wireload area per unit fanout is equal to the difference between the estimated net area of the original netlist and the netlist with the gate removed. 3. A block loading file that contains loading information for all components and nets in the original design. In the case of an integrated shell, the composite shell program collapses Block 1 and Block 2 into one level of hierarchy, creating one shell. As far as the output file is concerned, the program produces two files: a corrupted netlist for block 1 and a corrupted netlist for block 2. The only difference between the original shell netlist and the corrupted netlist file is that in the case of the original shell netlist file, the netlist is generated assuming one top level. It is. However, a collapsed netlist file is a netlist that is created after combining two or more levels to create a shell, as described above with reference to FIG. FIGS. 8, 9 and 10 provide the shell generation flow, region balancing and load recovery used in shell generation according to the present invention. In FIG. 8, the following terms are used to help understand the concepts behind shell creation. "Root". Any input or output port of a circuit block is called a root. For example, in FIG. 5, the nodes 300, 301, and 302 are the roots. The outputs Out1, Out2, Out3, and Out4 are also routes. "Branch". A branch is a fan-out resulting from a root. Thus, referring to FIG. 1, the path from point 300 represented by line 353 to the input of gate 304 is a branch, and the path from node 300 represented by net 354 to the input of gate 305 is also This is a branch because it is a fan-out of the input port 300. "Shoot". A shoot is a fanout resulting from a macrocell. In FIG. 5, the input of the inverter 321 to the inverters 314 and 313 is a shoot. "Shoot in". Shoot-in is a shoot connected to the input of the cell. For example, the net Sin1 in FIG. 5 is a shoot-in to the gate 313. "Shoot out". Shoot out is the shoot connected to the output of the cell. For example, the net Sout1 in FIG. 5 is a shoot out to the gate 314. "Leaf". A leaf is any storage element that terminates a timing path. Every flip-flop and latch in a design is a leaf. FIG. 8 gives the process flow for shell creation. The algorithm starts from the beginning (block 500). The first step is to locate the next route to be processed and identify whether it is an input or an output (block 501). Next, the algorithm determines whether the route carries a clock, set or clear signal (block 502). At block 502, if it does not issue a clock, set or clear signal, the algorithm locates the next (or first) branch on the route (block 503). For this branch, the cells on the branch are marked for holding (block 504). Next, it is determined whether the cell is a leaf (block 505). If not, the level index i is set to 1 (block 516) and the next shot on the cell for this level is located (block 507). Next, the algorithm determines whether the corresponding route is an input route (block 508). If so, it is determined whether the shot is a shoot-in (block 509). If it is a shoot-in at block 509, the cell is marked for load recovery (block 510) and the algorithm loops back to block 507 to locate the next shoot. If not, or if the corresponding route was an input at block 508, the algorithm marks the cell as being retained (block 511). Next, the algorithm determines whether the cell marked to be retained is a leaf (block 512). If it is not a leaf, index i is incremented (block 513); otherwise, index i remains unchanged. Next, the algorithm determines whether all shots on this index level i have been processed (block 514). Otherwise, the algorithm loops back to block 507 to process the next shot. If at block 514 all shots have been processed for this level, the algorithm determines whether index i is zero (block 515). If i is not zero, i is decremented by one (block 516) and the algorithm loops to block 514. If i is zero at block 505, the algorithm determines at block 517 whether all branches for that route have been processed. Otherwise, loop back to block 503 to process the next branch. If all branches on the route have been processed, the algorithm determines whether all routes have been processed (block 518). Otherwise, the algorithm branches back to point A at block 501, as shown. If all routes have been processed, the algorithm ends, as indicated by the end (block 519). If the route is determined to be a clock, set or clear signal at block 502, the algorithm locates the next (or first) branch to process (block 520). Next, it is determined whether the cell on this branch is a leaf (block 521). If so, the algorithm determines if there are other branches on the route (block 530). If all branches on the route have been processed, the algorithm loops back to block 520. If it is determined at block 530 that all branches for that route have been completed, the algorithm branches back to block 501 to process the route. If the cell is not a leaf at block 521, the algorithm branches to block 522 and sets index i to zero. Next, the algorithm marks the cell as to be retained (block 523) and increments index i by one (block 524). After incrementing the index, the algorithm locates the first or next shoot at level i (block 525). Then, it is determined whether the cell on the shoot is a leaf (block 526). If the cell is not a leaf, the algorithm branches to block 523 and marks the cell as holding. If the cell is a leaf, the algorithm determines whether all shots at level i have been processed (block 527). If not, the algorithm returns to block 525 to process the next shot. If all shots have been processed, the algorithm determines whether the index is equal to one (block 528). If the index is not one, it is decremented by one (block 529) and the algorithm returns to block 527 to process other shots at lower levels. If the index i is equal to 1 at block 528, the algorithm branches to block 530 and determines whether all branches have been processed. If not, the algorithm returns to block 520 and proceeds to the next branch. If all branches have been processed in block 530, the algorithm loops back to block 501 and continues processing. FIG. 9 illustrates the region balancing process for the timing shell netlist. The process begins at start block 600. The first step involves reading a technology library for the circuit block being synthesized (block 601). Next, combinations, uncombinations, and net regions of the original design are determined (block 602). Next, the combination, non-combination, and net area of the created shell are determined (block 603). The difference between these two files is written to the library file (block 604). Next, the combined, uncombined, and net regions of the shell are created by compiling the library file (block 605). These dummy cells are inserted into the timing shell and the process ends (block 606). FIG. 10 illustrates the process of load recovery for a composite shell generated according to FIGS. 8 and 9. The algorithm begins at start block 600. The first step involves positioning the first or next leaf in the circuit (block 601). The next step is to determine if this leaf has been marked for retention in the cell generation process (block 602). Otherwise, the clock, clear and load on the set net for that leaf is restored (block 603). If so, the algorithm loops back to block 601. After block 603, the algorithm determines whether all leaves have been processed (block 604). Otherwise, the algorithm loops back to block 601 to process the next leaf. If all leaves have been processed at block 604, the algorithm proceeds to block 605, where loads on cells marked for load recovery in the shell generation process are load recovered. After this process, the algorithm ends (block 606). This is followed by Appendices A, B and C. Appendix A is a sample behavior code in the VELILOG language for an adder; Appendix B is a synthesized netlist in NDL format for the adder represented by the code in Appendix A; Appendix C is a synthetic shell in NDL format created according to the present invention. The complete synthesized netlist shown in Annex B describes a circuit with 28 macrocells. For example, FIGS. 11, 12 and 13 show the top-level circuits of this synthesized netlist. As shown in FIG. 11, fourteen registers labeled FD 1 and sub-blocks labeled BITADD are present in this top-level schematic. FIG. 12 shows a sub-block of a first adder having five gates, and FIG. 13 shows a sub-block of a second adder having nine gates. This corresponds to the 28 gates defined by the full gate-level netlist of the adder described in Appendix B. Appendix C shows a reduced netlist for a synthetic shell according to the present invention. This reduced netlist has only 14 gates and one dummy cell, as shown by the circuit diagram of FIG. As shown, FIG. 14 has a block with 14 gates and 2 gates removed. The block with the gate removed can be represented by the circuits shown in FIGS. As shown, FIGS. 15 and 16 are simply the inputs and outputs of the sub-blocks in the circuit. Thus, Appendix C shows the resulting composite shell in netlist format. In Appendix C, the dummy cells are represented by lines 71. As described above, this dummy cell provides a reference to the cell library where the description of the dummy cell for the reduced netlist has been provided. A representative dummy module begins at line 122 of Appendix C. Line 128 corresponds to the fake cell fk_arseq () in the region balancing library for the sequential region, and line 129 points to the fake cell fk_ar_com () for the combination region. The net defined in the dummy module is the above-mentioned area-balancing dum_net. Thus, new tools useful for the synthesis of large scale integrated circuits (LSIs) are provided based on the synthesis shell configuration used in data processing environments. Synthetic shells can be ported to customers who rely on circuit blocks represented for ASIC design, or generated as part of the synthesis of large scale integrated circuits. The use of a synthesis shell greatly reduces processing requirements in terms of time and memory consumption when synthesizing large ASICs. The foregoing description of the preferred embodiment of the invention has been presented for purposes of illustration and description. There is no iT OTAL, such as trying to be exhaustive or to limit the invention to the exact form disclosed. Obviously, many modifications and variations will be apparent to practitioners skilled in this art. It is intended that the scope of the invention be defined by the following claims and their equivalents:
【手続補正書】特許法第184条の8第1項
【提出日】1997年3月4日
【補正内容】
請求の範囲の記載を次の通りに補正する。
『1.モジュールの行動(behavioral)記述から、複数の回路ブロックを含む
集積回路モジュールのゲート・レベル記述を合成する方法であって、
前記複数のブロックにおける第1のブロックを、前記第1のブロックの前記行
動記述を処理することによって合成し、前記第1のブロックのゲート・レベル記
述を生じさせるステップと、
前記第1のブロックの前記ゲート・レベル記述におけるゲート数を減らすこと
により、前記第1のブロックのゲート・レベル記述よりも少ないゲートを有する
回路のゲート・レベル記述を含む合成シェルを生成するステップであって、前記
合成シェルは、前記第1のブロックと同じ数の入力ロード及びファンアウト、前
記第1のブロックと同じクロックに対する出力遅延、前記第1のブロックと同じ
出力ドライブ、前記第1のブロックと同じクロックに対する入力信号へのセット
アップ/ホールド制約条件、及び前記第1のブロックと同じ通過信号に対する入
力から出力への遅延を有する、ステップと、
前記複数のブロックにおける少なくとも1つの他のブロックを、前記合成シェ
ルを参照して前記少なくとも1つの他のブロックの行動記述を処理することによ
って合成し、前記少なくとも1つの他のブロックのゲート・レベル記述を生じさ
せるステップと、
を含むことを特徴とする方法。
2.請求項1記載の方法において、前記第1のブロックのゲート・レベル記述
は、前記第1のブロックのために必要とされる領域を特定するパラメータを含ん
でおり、前記縮小するステップは、
前記第1のブロックのために必要とされる領域と前記合成シェルにおける要素
のために必要とされる領域との差を示す領域差データを生成し、前記合成シェル
を用いて前記領域差データを含ませるステップを含むことを特徴とする方法。
3.請求項1記載の方法において、前記縮小するステップは、
最後の記憶素子から出力ポートへの経路におけるそれぞれのノード上のロード
(負荷)とクロック及び非同期経路上のインクリメンタル・ロードとを示す情報
を記憶するステップを含むことを特徴とする方法。
4.請求項1記載の方法において、前記合成シェルは、前記第1のブロックの
部分集合であるゲート・レベル記述を含み、前記縮小するステップは、1組の規
準に従って前記第1のブロックのゲート・レベル記述の要素を削除するステップ
を含むことを特徴とする方法。
5.請求項4記載の方法において、前記第1のブロックのゲート・レベル記述
は、前記第1のブロックのために必要な領域を特定し、前記縮小するステップは
、
前記第1のブロックのために必要とされる領域と前記合成シェルにおける要素
が必要とする領域との差を示す領域差データを生成し、前記領域差データを、前
記複数のブロックにおける少なくとも1つの他のブロックの合成に用いるために
、前記合成シェルと関連させるステップを含むことを特徴とする方法。
6.請求項4記載の方法において、前記1組の規準は、
入力ポートから第1の記憶素子への組合せ経路を保存することを含むことを特
徴とする方法。
7.請求項4記載の方法において、前記1組の規準は、
非同期RAMへの書き込み信号が入力ポートまでトレースされる場合にはその
非同期RAMを保存し、そうでなければ、その非同期RAMを組合せロジックと
して扱うことを含むことを特徴とする方法。
8.請求項4記載の方法において、前記1組の規準は、
そのように生じる内部クロックによってクロックされている任意の記憶素子が
入力ポート又は出力ポートに組合せロジックを介して又は直接に接続されている
場合には、内部クロックを生じる記憶素子を保存することを含むことを特徴とす
る方法。
9.請求項4記載の方法において、前記1組の規準は、
最後の記憶素子から出力ポートへの組合せ経路を保存することを含むことを特
徴とする方法。
10.請求項4記載の方法において、前記1組の規準は、
入力ポートから出力ポートへの直接の組合せ経路を保存することを含むことを
特徴とする方法。
11.請求項4記載の方法において、前記1組の規準は、
クロック分散経路を保存することを含むことを特徴とする方法。
12.請求項4記載の方法において、前記1組の規準は、
出力ポートから記憶素子へのフィードバック経路を、その記憶素子と共に保存
することを含むことを特徴とする方法。
13.請求項4記載の方法において、前記1組の規準は、
組合せロジックから構成される経路へのフィードバック経路を保存することを
含むことを特徴とする方法。
14.請求項4記載の方法において、前記1組の規準は、
非同期経路を保存することを含むことを特徴とする方法。
15.請求項4記載の方法において、前記1組の規準は、
入力ポートから第1の記憶素子への組合せ経路を保存することと、
最後の記憶素子から出力ポートへの組合せ経路を保存することと、
入力ポートから出力ポートへの直接の組合せ経路を保存することと、
クロック分散経路を保存することと、
出力ポートから記憶素子へのフィードバック経路を、その記憶素子と共に保存
することと、
組合せロジックから構成される経路へのフィードバック経路を保存することと
、
非同期RAMへの書き込み信号が入力ポートまでトレースされる場合にはその
非同期RAMを保存し、そうでなければ、その非同期RAMを組合せロジックと
して扱うことと、
そのように生じる内部クロックによってクロックされている任意の記憶素子が
入力ポート又は出力ポートに組合せロジックを介して又は直接に接続されている
場合には、内部クロックを生じる記憶素子を保存することを含むことと、
非同期経路を保存することと、
を含むことを特徴とする方法。
16.請求項1記載の方法において、前記少なくとも1つの他のブロックを合
成するステップは、
第2のブロックのゲート・レベル記述を、前記第2のブロックに対する入力ロ
ード及びファンアウト、前記第2のブロックのクロックに対する出力遅延、前記
第2のブロックの出力ドライブ、前記第2のブロックのクロックに対する入力信
号へのセットアップ/ホールド制約条件、及び前記第2のブロックの通過信号に
対する入力から出力への遅延を保存する第2の合成シェルに縮小するステップと
、
前記複数のブロックにおける他のブロックを、前記第1のブロックの前記合成
シェルと前記第2のブロックの前記第2の合成シェルとを参照して前記他のブロ
ックの行動記述を処理することによって合成し、前記少なくとも1つの他のブロ
ックのゲート・レベル記述を生じさせるステップと、
を含むことを特徴とする方法。
17.請求項16記載の方法において、
前記第1及び第2のブロックの合成シェルを統合された(merged)合成シェル
に縮小するステップを含み、前記統合された合成シェルは、前記第1及び第2の
ブロックに対する入力ロード及びファンアウト、この統合された第1及び第2の
ブロックのクロックに対する出力遅延、この統合された第1及び第2のブロック
の出力ドライブ、構成員統合された第1及び第2のブロックのクロックに対する
入力信号へのセットアップ/ホールド制約条件、及びこの統合された第1及び第
2のブロックの通過信号に対する入力から出力への遅延を保存することを特徴と
する方法。
18.回路ブロックのゲート・レベル記述を作成する方法であって、
前記ゲート・レベル記述を処理し、1組の規準に従って、前記回路ブロックの
前記ゲート・レベル記述の要素を削除するステップであって、前記1組の規準は
、前記回路ブロックに対する入力ロード及びファンアウト、前記回路ブロックの
クロックに対する出力遅延、前記回路ブロックの出力ドライブ、前記回路ブロッ
クのクロックに対する入力信号へのセットアップ/ホールド制約条件、及び前記
回路ブロックの通過信号に対する入力から出力への遅延を保存する、ステップと
、
残りの要素のゲート・レベル記述を、前記合成シェルとして、前記回路ブロッ
クに記憶するステップと、
を含むことを特徴とする方法。
19.請求項18記載の方法において、前記回路ブロックのゲート・レベル記
述は、前記回路ブロックのために必要とされる領域を特定し、前記処理するステ
ップは、
前記回路ブロックのために必要とされる領域と前記合成シェルにおける要素が
必要とする領域との差を示す領域差データを生成し、前記合成シェルを用いて前
記領域差データを含ませるステップを含むことを特徴とする方法。
20.請求項18記載の方法において、前記処理するステップは、
最後の記憶素子から出力ポートへの経路におけるそれぞれのノード上のロード
とクロック及び非同期経路上のインクリメンタル・ロードとを示す情報を記憶す
るステップを含むことを特徴とする方法。
21.請求項18記載の方法において、前記1組の規準は、
前記回路ブロックにおける入力ポートから第1の記憶素子への組合せ経路を保
存することと、
前記回路ブロックの最後の記憶素子から出力ポートへの組合せ経路を保存する
ことと、
前記回路ブロックの入力ポートから出力ポートへの直接の組合せ経路を保存す
ることと、
前記回路ブロックにおいてクロック分散経路を保存することと、
前記回路ブロックの出力ポートから前記回路ブロックにおける記憶素子へのフ
ィードバック経路を、その記憶素子と共に保存することと、
組合せロジックから構成される経路への前記回路ブロックにおけるフィードバ
ック経路を保存することと、
非同期RAMへの書き込み信号が入力ポートまでトレースされる場合にはその
非同期RAMを保存し、そうでなければ、その非同期RAMを組合せロジックと
して扱うことと、
そのように生じる内部クロックによってクロックされている任意の記憶素子が
入力ポート又は出力ポートに組合せロジックを介して又は直接に接続されている
場合には、内部クロックを生じる記憶素子を保存することを含むことと、
非同期経路を保存することと、
を含むことを特徴とする方法。
22.請求項18記載の方法において、前記回路ブロックは、第1及び第2の
サブブロックを含み、前記処理するステップは、前記処理するステップは、前記
ゲート・レベル記述を処理して前記1組の規準に従って前記第1のサブブロック
のゲート・レベル記述の要素を読み出すステップと、前記ゲート・レベル記述を
処理して前記1組の規準に従って前記第2のサブブロックのゲート・レベル記述
の要素を削除するステップと、前記第1及び第2のサブブロックの残りの要素の
ゲート・レベル記述の組合せから成るゲート・レベル記述を処理して前記合成シ
ェルを生成するステップと、を含むことを特徴とする方法。
23.請求項18記載の方法において、前記処理するステップは、
前記回路ブロックに対する入力及び出力ポートを再帰的に検査して、前記ポー
ト上の信号がクロック、セット、又はクリア信号ではない場合には、前記ポート
のブランチを検査するステップと、
それぞれのブランチに対して、前記ブランチ上のセルを維持されるようにマー
クし、前記セルがリーフであるかどうかを判断するステップと、
前記セルがリーフでない場合には、前記セルに対するシュートをそれぞれのシ
ュート上でリーフに達するまで検査し、前記セル上のシュートが他のセルの出力
である場合や、検査されているポートが入力である場合には、前記他のセルを維
持されるようにマークし、そうでない場合には、ロードされるべきシュート上の
前記セルを復旧されたものとマークするステップと、
前記ポート上の信号がクロック、セット又はクリア信号である場合には、前記
ポートのブランチを検査し、次に、前記ポートのそれぞれのブランチ上のリーフ
まで又は維持されたセル上のそれぞれのシュートまで維持されるようにセルをマ
ークするステップと、
結果的なゲート・レベル記述にダミー・セルを追加し、前記合成シェルのため
の領域を平衡させるステップと、
前記ゲート・レベル記述におけるすべてのクロック、クリア及びセット・ネッ
ト上の、及び、ロードの復旧のためにマークされたすべてのセルの上のロードを
復旧するデータを記憶するステップと、
を含むことを特徴とする方法。
24.回路ブロックのゲート・レベル記述の合成シェルを記憶するメモリを含
む装置であって、この装置は、
前記ゲート・レベル記述を処理し、1組の規準に従って、前記回路ブロックの
前記ゲート・レベル記述の要素を削除するステップであって、前記1組の規準は
、前記回路ブロックに対する入力ロード及びファンアウト、前記回路ブロックの
クロックに対する出力遅延、前記回路ブロックの出力ドライブ、前記回路ブロッ
クのクロックに対する入力信号へのセットアップ/ホールド制約条件、及び前記
回路ブロックの通過信号に対する入力から出力への遅延を保存する、ステップと
、
残りの要素のゲート・レベル記述を、前記合成シェルとして、前記回路ブロッ
クに記憶するステップと、
を含む方法によって作成されることを特徴とする装置。
25.請求項24記載の装置において、前記回路ブロックのゲート・レベル記
述は、前記回路ブロックのために必要とされる領域を特定し、前記処理するステ
ップは、
前記回路ブロックのために必要とされる領域と前記合成シェルにおける要素が
必要とする領域との差を示す領域差データを生成し、前記合成シェルを用いて前
記領域差データを含ませるステップを含むことを特徴とする装置。
26.請求項24記載の装置において、前記処理するステップは、
最後の記憶素子から前記回路ブロックの出力ポートへの経路におけるそれぞれ
のノード上のロードと前記回路ブロックにおけるクロック及び非同期ネット上の
インクリメンタル・ロードとを示す情報を記憶するステップを含むことを特徴と
する装置。
27.請求項24記載の装置において、前記1組の規準は、
前記回路ブロックにおける入力ポートから第1の記憶素子への組合せ経路を保
存することと、
前記回路ブロックの最後の記憶素子から出力ポートへの組合せ経路を保存する
ことと、
前記回路ブロックの入力ポートから出力ポートへの直接の組合せ経路を保存す
ることと、
前記回路ブロックにおいてクロック分散経路を保存することと、
前記回路ブロックの出力ポートから前記回路ブロックにおける記憶素子へのフ
ィードバック経路を、その記憶素子と共に保存することと、
組合せロジックから構成される経路への前記回路ブロックにおけるフィードバ
ック経路を保存することと、
非同期RAMへの書き込み信号が入力ポートまでトレースされる場合にはその
非同期RAMを保存し、そうでなければ、その非同期RAMを組合せロジックと
して扱うことと、
そのように生じる内部クロックによってクロックされている任意の記憶素子が
入力ポート又は出力ポートに組合せロジックを介して又は直接に接続されている
場合には、内部クロックを生じる記憶素子を保存することを含むことと、
非同期経路を保存することと、
を含むことを特徴とする装置。
28.請求項24記載の装置において、前記合成シェルの前記回路ブロックの
主題と他の回路とを含む集積回路モジュールのゲート・レベル記述を、前記合成
シェルと前記モジュールにおける前記他の回路の行動記述とから合成する処理資
源を含むことを特徴とする装置。』[Procedure of Amendment] Article 184-8, Paragraph 1 of the Patent Act
[Submission date] March 4, 1997
[Correction contents]
The description in the claims is amended as follows.
[1. Include multiple circuit blocks from the behavioral description of the module
A method for synthesizing a gate level description of an integrated circuit module, comprising:
The first block in the plurality of blocks is referred to as the row of the first block.
The first block is synthesized by processing the dynamic description.
Generating a predicate;
Reducing the number of gates in the gate level description of the first block
Has fewer gates than the gate level description of the first block
Generating a synthesized shell including a gate level description of the circuit, wherein
The composite shell has the same number of input loads and fanouts as the first block,
The output delay for the same clock as the first block, the same as the first block
Output drive, set to an input signal for the same clock as the first block
Up / hold constraints and input for the same pass signal as in the first block
A step having a delay from force to output;
At least one other block in the plurality of blocks is
Processing the action description of the at least one other block with reference to the
To produce a gate-level description of said at least one other block.
Steps to make
A method comprising:
2. The method of claim 1, wherein a gate level description of the first block.
Includes a parameter specifying an area required for the first block.
Wherein the step of reducing includes:
Area required for the first block and elements in the composite shell
Generating region difference data indicating a difference from a region required for
Using the method to include the region difference data.
3. 2. The method of claim 1, wherein the step of reducing comprises:
Load on each node in path from last storage element to output port
Information indicating (load) and clock and incremental load on asynchronous path
Storing the method.
4. 2. The method of claim 1, wherein the composite shell comprises a first shell.
A gate-level description that is a subset;
Deleting elements of the gate level description of the first block according to a standard
A method comprising:
5. 5. The method of claim 4, wherein a gate level description of the first block.
Identifying the area required for the first block and the step of reducing
,
Area required for the first block and elements in the composite shell
Generates area difference data indicating a difference from the required area, and
For use in combining at least one other block in a plurality of blocks
Associating with the composite shell.
6. 5. The method of claim 4, wherein the set of criteria is:
Storing the combined path from the input port to the first storage element.
How to sign.
7. 5. The method of claim 4, wherein the set of criteria is:
If the write signal to the asynchronous RAM is traced to the input port,
Save the asynchronous RAM, otherwise combine it with combinational logic
A method characterized by including treating.
8. 5. The method of claim 4, wherein the set of criteria is:
Any storage element that is clocked by the internal clock so generated
Connected to input port or output port via combinational logic or directly
Storing the storage element that produces the internal clock.
Way.
9. 5. The method of claim 4, wherein the set of criteria is:
Including storing the combined path from the last storage element to the output port.
How to sign.
10. 5. The method of claim 4, wherein the set of criteria is:
Including storing the direct combination path from the input port to the output port.
Features method.
11. 5. The method of claim 4, wherein the set of criteria is:
A method comprising storing a clock distribution path.
12. 5. The method of claim 4, wherein the set of criteria is:
Stores feedback path from output port to storage element with that storage element
A method comprising:
13. 5. The method of claim 4, wherein the set of criteria is:
Saving the feedback path to the path composed of combinational logic
A method comprising:
14. 5. The method of claim 4, wherein the set of criteria is:
A method comprising storing an asynchronous path.
15. 5. The method of claim 4, wherein the set of criteria is:
Storing a combination path from the input port to the first storage element;
Storing the combined path from the last storage element to the output port;
Storing the direct combination path from the input port to the output port;
Preserving the clock distribution path,
Stores feedback path from output port to storage element with that storage element
To do
Storing a feedback path to a path composed of combinational logic;
,
If the write signal to the asynchronous RAM is traced to the input port,
Save the asynchronous RAM, otherwise combine it with combinational logic
And treat
Any storage element that is clocked by the internal clock so generated
Connected to input port or output port via combinational logic or directly
In some cases, including storing a storage element that produces an internal clock;
Preserving the asynchronous route,
A method comprising:
16. The method of claim 1, wherein the at least one other block is combined.
The steps performed are:
The gate level description of the second block is entered into the input log for the second block.
Mode and fan-out, output delay with respect to the clock of the second block,
An output drive for the second block, an input signal for the clock of the second block;
To the setup / hold constraints on the signal and the signal passing through the second block
Reducing the input-to-output delay to a second composite shell that preserves the delay;
,
Combining the other blocks in the plurality of blocks with the composite of the first block
The other block with reference to the shell and the second composite shell of the second block.
By processing the behavioral description of the block to generate the at least one other block.
Generating a gate-level description of the
A method comprising:
17. The method of claim 16,
A synthetic shell merging the synthetic shells of the first and second blocks
And the integrated composite shell includes the first and second composite shells.
Input load and fanout for the block, this integrated first and second
Output delay for block clock, integrated first and second blocks
Output drive, clock for the integrated first and second blocks
Setup / hold constraints on the input signal, and the integrated first and second
Saving delay from input to output for passing signal of block 2
how to.
18. A method of creating a gate level description of a circuit block, comprising:
Processing the gate-level description and, according to a set of criteria,
Deleting the elements of the gate level description, wherein the set of criteria comprises:
, Input load and fan-out for the circuit block,
Output delay with respect to clock, output drive of said circuit block, said circuit block
Setup / hold constraints on the input signal to the clock of the clock, and
Preserving the delay from input to output for the passing signal of the circuit block,
,
The gate-level description of the remaining elements is
Memorizing in the memory,
A method comprising:
19. 20. The method according to claim 18, wherein the gate level of the circuit block is determined.
The statement identifies the area needed for the circuit block and the processing steps.
The top
The area required for the circuit block and the elements in the composite shell are
Generate area difference data indicating the difference from the required area, and use the
Including the step of including region difference data.
20. 19. The method of claim 18, wherein said processing comprises:
Load on each node in path from last storage element to output port
And information indicating the clock and the incremental load on the asynchronous path.
A method comprising the steps of:
21. 20. The method of claim 18, wherein the set of criteria is:
The combination path from the input port to the first storage element in the circuit block is maintained.
To exist,
Save the combination path from the last storage element of the circuit block to the output port
That
Saving a direct combination path from an input port to an output port of the circuit block
And
Storing a clock distribution path in the circuit block;
A flow from an output port of the circuit block to a storage element in the circuit block
Storing the feedback path with the storage element;
Feedback in the circuit block to a path composed of combinational logic
To save the traffic route,
If the write signal to the asynchronous RAM is traced to the input port,
Save the asynchronous RAM, otherwise combine it with combinational logic
And treat
Any storage element that is clocked by the internal clock so generated
Connected to input port or output port via combinational logic or directly
In some cases, including storing a storage element that produces an internal clock;
Preserving the asynchronous route,
A method comprising:
22. 20. The method of claim 18, wherein the circuit block comprises first and second
Including a sub-block, wherein the processing step comprises:
Processing a gate-level description to generate the first sub-block according to the set of criteria;
Reading the elements of the gate level description of the
Processing a gate-level description of the second sub-block according to the set of criteria
And removing the remaining elements of the first and second sub-blocks.
A gate-level description consisting of a combination of gate-level descriptions is processed to process the composite system.
Generating a gel.
23. 19. The method of claim 18, wherein said processing comprises:
The input and output ports for the circuit block are recursively checked and
If the signal on the port is not a clock, set, or clear signal, the port
Inspecting the branch of
Mark each branch so that the cells on that branch are maintained.
Determining whether the cell is a leaf;
If the cell is not a leaf, shoot each cell against the cell.
Inspection until the leaf is reached on the cell, and the shoot on the cell is the output of another cell.
Or if the port being inspected is an input, keep the other cell
Mark to be held, otherwise, on the shoot to be loaded
Marking the cell as restored;
If the signal on the port is a clock, set or clear signal,
Inspect the branch of the port, then the leaf on each branch of said port
Cells so that they are maintained until each shot on the
Working steps,
Add a dummy cell to the resulting gate level description and add
Equilibrating the area of
All clock, clear and set nets in the gate level description
Load on all cells and on all cells marked for load recovery.
Storing the data to be recovered;
A method comprising:
24. Includes memory for storing a synthesized shell of gate-level descriptions of circuit blocks.
Device, the device comprising:
Processing the gate-level description and, according to a set of criteria,
Deleting the elements of the gate level description, wherein the set of criteria comprises:
, Input load and fan-out for the circuit block,
Output delay with respect to clock, output drive of said circuit block, said circuit block
Setup / hold constraints on the input signal to the clock of the clock, and
Preserving the delay from input to output for the passing signal of the circuit block,
,
The gate-level description of the remaining elements is
Memorizing in the memory,
An apparatus characterized by being created by a method comprising:
25. 25. The device according to claim 24, wherein the gate level of the circuit block is determined.
The statement identifies the area needed for the circuit block and the processing steps.
The top
The area required for the circuit block and the elements in the composite shell are
Generate area difference data indicating the difference from the required area, and use the
A step of including the region difference data.
26. 25. The apparatus according to claim 24, wherein the processing comprises:
Each in the path from the last storage element to the output port of the circuit block
Load on the node and clock on the circuit block and on the asynchronous net
Storing information indicative of an incremental load.
Equipment to do.
27. 25. The apparatus of claim 24, wherein the set of criteria comprises:
The combination path from the input port to the first storage element in the circuit block is maintained.
To exist,
Save the combination path from the last storage element of the circuit block to the output port
That
Saving a direct combination path from an input port to an output port of the circuit block
And
Storing a clock distribution path in the circuit block;
A flow from an output port of the circuit block to a storage element in the circuit block
Storing the feedback path with the storage element;
Feedback in the circuit block to a path composed of combinational logic
To save the traffic route,
If the write signal to the asynchronous RAM is traced to the input port,
Save the asynchronous RAM, otherwise combine it with combinational logic
And treat
Any storage element that is clocked by the internal clock so generated
Connected to input port or output port via combinational logic or directly
In some cases, including storing a storage element that produces an internal clock;
Preserving the asynchronous route,
An apparatus comprising:
28. 25. The apparatus of claim 24, wherein said circuit block of said composite shell is
Synthesizing a gate-level description of an integrated circuit module including a subject and other circuits,
Processing resources synthesized from a shell and the behavioral description of the other circuit in the module
A device comprising a source. 』
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,DE,
DK,ES,FI,FR,GB,GR,IE,IT,L
U,MC,NL,PT,SE),OA(BF,BJ,CF
,CG,CI,CM,GA,GN,ML,MR,NE,
SN,TD,TG),AP(KE,LS,MW,SD,S
Z,UG),AM,AT,AU,BB,BG,BR,B
Y,CA,CH,CN,CZ,DE,DK,EE,ES
,FI,GB,GE,HU,IS,JP,KE,KG,
KP,KR,KZ,LK,LR,LT,LU,LV,M
D,MG,MN,MW,MX,NO,NZ,PL,PT
,RO,RU,SD,SE,SG,SI,SK,TJ,
TM,TT,UA,UG,UZ,VN
(72)発明者 ラマチャンドラン,ラヴィチャンドラン
アメリカ合衆国カリフォルニア州94089,
サニーヴェール,ワイルドウッド・アベニ
ュー 1235,ナンバー72
(72)発明者 アグラワル,サリカ
アメリカ合衆国カリフォルニア州95054,
サンタ・クララ,リヴァーサイド・コート
420,ナンバー206
(72)発明者 アドカール,サンジャイ
アメリカ合衆国カリフォルニア州94514,
サンノゼ,ハンバーサイド・コート 3114
【要約の続き】
部分集合であるゲート・レベル記述を含む。この記述
は、予め特定された1組の規準に従って、ゲート・レベ
ル記述の要素を削除することによって、縮小される。────────────────────────────────────────────────── ───
Continuation of front page
(81) Designated countries EP (AT, BE, CH, DE,
DK, ES, FI, FR, GB, GR, IE, IT, L
U, MC, NL, PT, SE), OA (BF, BJ, CF)
, CG, CI, CM, GA, GN, ML, MR, NE,
SN, TD, TG), AP (KE, LS, MW, SD, S
Z, UG), AM, AT, AU, BB, BG, BR, B
Y, CA, CH, CN, CZ, DE, DK, EE, ES
, FI, GB, GE, HU, IS, JP, KE, KG,
KP, KR, KZ, LK, LR, LT, LU, LV, M
D, MG, MN, MW, MX, NO, NZ, PL, PT
, RO, RU, SD, SE, SG, SI, SK, TJ,
TM, TT, UA, UG, UZ, VN
(72) Inventors Ramachandran, Ravichandran
United States California 94089,
Sunnyvale, Wildwood Aveni
View 1235, Number 72
(72) Inventor Agrawal, Sarika
United States California 95054,
Santa Clara, Riverside Court
420, number 206
(72) Inventor Adkar, Sanjay
United States CA 94514,
San Jose, Humberside Court 3114
[Continuation of summary]
Contains a subset of gate-level descriptions. This description
Gate level according to a set of pre-specified criteria.
By deleting the elements of the file description.