(57)【要約】  方法は、設計を実行するための最良の組のセルを選択するような方法で、設計およびライブラリをともに最適化する。方法は、目標コストを低減し、かつ設計制限を遵守しながら、新しいセルの数を制限するという考え方を考慮する。方法は、最小に近い最適な組のセルを選択し、設計を最適化する。これは、それを実行するために用いられるセルベースの設計およびセルライブラリの同時最適化を含む。本発明は、回路が無視されるときには、特定の用途のために最適化されたライブラリのみを産する。方法は、オリジナルのライブラリとは異なるトランジスタトポロジ、異なるサイズ、異なる論理関数、および／または異なるセルテンプレートを有する可能性のある最終セルまたは仮想セルとして記述される新しいセルの組を考慮する。
2011525261.tif 000002
【特許請求の範囲】
【請求項１】
回路設計における使用のためのライブラリの最適化のための方法であって、
初期回路ネットリストを提供するステップと、
１つまたはより多くの既存セルの組を提供するステップと、
１つまたはより多くの追加的に許容可能なセルの組を提供するステップと、
最初から存在するセルの組、および、許容可能セルの追加的な組を考慮して実行コストを低減するセルを検索するために、前記初期回路ネットリストを解析するステップと、
潜在的に設計コストを低減する、前記既存セルのサブセットおよび前記許容可能セルのサブセットを含む、１つまたはより多くの新しいセルライブラリ仕様および記述を出力するステップとを備える、方法。
【請求項２】
前記初期回路ネットリストは、複数のセルまたはブール方程式の表現の少なくとも１つによって提供される、請求項１に記載の方法。
【請求項３】
前記初期回路ネットリストを解析するステップは、
前記最初から存在するセルの組および前記許容可能セルの追加的な組を考慮しながら、前記回路を再マッピングするステップを備える、請求項１に記載の方法。
【請求項４】
新しい再マッピングされたネットリストを出力するステップを備える、請求項３に記載の方法。
【請求項５】
前記許容可能セルの追加的な組は、
追加的に利用可能な機能またはセルを列挙する、少なくとも１つの明示的な組を含む、請求項４に記載の方法。
【請求項６】
前記許容可能セルの追加的な組は、
追加的に利用可能なセルを列挙する明示的な組を含み、
追加的な許容可能な論理関数の各々は異なる実行例を有し得る、請求項４に記載の方法。
【請求項７】
前記許容可能セルの追加的な組は、
いくつかのパラメータを通して非明示的に定義された機能またはセルの組を含む、請求項４に記載の方法。
【請求項８】
前記許容可能セルの追加的な組は、
許容される最大の入力数によって非明示的に定義された機能またはセルの組を含む、請求項４に記載の方法。
【請求項９】
前記許容可能セルの追加的な組は、
直列または並列結合された、直列および並列のスイッチの最大数によって非明示的に定義された機能またはセルの組を含む、請求項４に記載の方法。
【請求項１０】
前記許容可能セルの追加的な組は、
前記関数のバイナリデシジョンダイアグラム（ＢＤＤ）実行例における直列のアークの最大数によって非明示的に定義されたセルの組を含む、請求項４に記載の方法。
【請求項１１】
前記許容可能セルの追加的な組は、
一般的なトランジスタ実行例における直列のスイッチの最大許容数によって非明示的に定義される機能またはセルの組を含む、請求項４に記載の方法。
【請求項１２】
前記許容可能な関数の追加的な組は、組合せ論理関数を実行するための両方のトランジスタ計画における直列のスイッチの数についての正確な下限内のスイッチの最大許容数によって非明示的に定義される、請求項４に記載の方法。
【請求項１３】
セルライブラリテンプレートを最適化するための方法であって、
目標技術情報を受けるステップと、
前記ライブラリに含まれるべき関数またはセルの組を受けるステップと、
各関数のために生成されるべき駆動強度のセットを受けるステップと、
関数および駆動強度の各々の対についてのトランジスタトポロジの組を受けまたは導き出すステップと、
異なる代替的なセルテンプレートについてのセル特性の一次推定を出力するステップと、
要求されたセルの集合のために推定された前記特性の関数として、前記ライブラリのための最終テンプレートを選択するステップとを備える、方法。
【請求項１４】
配置およびルーティング後の回路ネットリストに関連するセルライブラリを最適化するための方法であって、
配置されかつルーティングされた回路ネットリストを受けるステップと、
前記関連したセルライブラリを受けるステップと、
前記ライブラリから不使用の関数を削除するステップと、
使用関数についての不使用の駆動強度を任意的に削除するステップと、
使用セルの各々について、さらなるサイズ調整を可能とするために、隣接する駆動強度の組を追加するステップと、
前記ライブラリテンプレートを新しいセルの混合に任意的に適合させるステップと、
導入された修正を考慮して新しいライブラリ仕様を出力するステップとを備える、方法。
【請求項１５】
前記ライブラリテンプレートを新しいセルの混合に任意的に適合させるステップは、
目標技術情報を受けるステップと、
前記ライブラリに含まれるべき関数またはセルの組を受けるステップと、
各関数のために生成されるべき駆動強度のセットを受けるステップと、
関数および駆動強度の各々の対についてのトランジスタトポロジの組を受けまたは導き出すステップと、
異なる代替的なセルテンプレートについてのセル特性の一次推定を出力するステップと、
要求されたセルの集合のために推定された前記特性の関数として、前記ライブラリのための最終テンプレートを選択するステップとを備える、請求項１４に記載の方法。
【請求項１６】
回路設計における使用のために、コンピュータ読込可能媒体を用いて統合されるライブラリを最適化するためのコンピュータプログラム製品であって、
初期回路ネットリストを提供するためのコンピュータ読込可能コードと、
１つまたはより多くの組の既存セルを提供するためのコンピュータ読込可能コードと、
１つまたはより多くの組の追加的な許容可能セルの組を提供するためのコンピュータ読込可能コードと、
最初から存在するセルの組、および、許容可能セルの追加的な組を考慮して実行コストを低減するセルを検索するように、前記初期回路ネットリストを解析するためのコンピュータ読込可能コードと、
潜在的に設計コストを低減する、前記既存セルのサブセットおよび前記許容可能セルのサブセットを含む、１つまたはより多くの新しいセルライブラリ仕様および記述を出力するためのコンピュータ読込可能コードとを備える、コンピュータプログラム製品。
【請求項１７】
前記最初から存在するセルの組および前記許容可能セルの追加的な組を考慮しながら、前記回路を再マッピングするためのコンピュータ読込可能コードを備える、請求項１６に記載のコンピュータプログラム製品。
【請求項１８】
新しい再マッピングされたネットリストを出力するためのコンピュータ読込可能コードを備える、請求項１７に記載のコンピュータプログラム製品。
【請求項１９】
前記許容可能セルの追加的な組は、
追加的に利用可能な機能またはセルを列挙する、少なくとも１つの明示的な組を含む、請求項１８に記載のコンピュータプログラム製品。
【請求項２０】
前記許容可能セルの追加的な組は、
追加的に利用可能なセルを列挙する明示的な組を含み、
追加的に許容可能な論理関数の各々は異なる実行例を有し得る、請求項１８に記載のコンピュータプログラム製品。
【請求項２１】
方法であって、
第１の集積回路設計ネットリストを提供するステップと、
コンピュータ読込可能媒体上に記憶された、セルの第１のライブラリにおける１つまたはより多くのセルに対応するように、前記第１の集積回路設計ネットリスト内の要素のグルーピングをマッピングするステップと、
第１のセルへの少なくとも１つの要素のグルーピングを、前記マッピングから除去するステップとを備え、
前記マッピングは、第１のセルマッピングを含んでおらず、
前記方法は、
前記マッピングにおいて識別されたセルのみを含む第２のライブラリを生成するステップをさらに備え、
前記第２のライブラリは、第１のセルマッピングを含まず、かつコンピュータ読込可能媒体上に記憶される、方法。
【請求項２２】
前記第１の集積回路設計ネットリストを、前記第２のライブラリで使用するが前記第１のライブラリでは使用しない第２の集積回路設計ネットリストへマッピングするステップと、
前記第２の集積回路設計ネットリストを、コンピュータ読込可能媒体上に記憶するステップとを備える、請求項２１に記載の方法。
【請求項２３】
前記第２のライブラリを生成する前に、第２のセルを前記第１のライブラリでなく前記第２のライブラリに追加するステップを備え、
前記第２の集積回路設計ネットリストは、前記第２のセルへの少なくとも１つの参照を含む、請求項２３に記載の方法。
【請求項２４】
前記第２のライブラリを生成した後、前記第２のライブラリの少なくとも第２のセルを識別するとともに除去するステップと、
前記第２のセルではないが、前記第２のライブラリのセルを含む第３のライブラリを生成するステップと、
前記第１の集積回路設計ネットリストを、第１または第２のライブラリではないが前記第３のライブラリへの参照を有する第２の集積回路設計ネットリストへマッピングするステップと、
前記第２の集積回路設計ネットリストを、コンピュータ読込可能媒体上に記憶するステップとを備える、請求項２１に記載の方法。
【請求項２５】
前記第２のライブラリを生成するステップは、
前記第２のライブラリのためのセルを得るために、論理合成ではなく物理合成を実行するステップを含む、請求項２１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連する出願の相互参照
本願は、２００８年２月５日に出願された米国仮特許出願６１／０２６，２２２、および２００８年６月６日に出願された米国仮特許出願６１／０５９，７４２、６１／０５９，７４４、６１／０５９，７４５、６１／０５９，７４６の正規出願であり、本願において引用される他の全ての参照とともに、参照により引用される。
【０００２】
２００７年２月２８日に出願され、２００７年９月１３日に米国特許出願公報２００７／０２１４４３９として公開された米国特許出願１１／７１１，８２８、および２００６年３月１日に出願された米国仮特許出願６０／７７７，５６１は、参照により引用される。
【０００３】
発明の背景
本発明は、電子設計自動化の分野に関し、より特定的には、セルライブラリに基づいた設計を有するデジタル回路の最適化に関する。
【背景技術】
【０００４】
集積回路は情報化時代の重要な基本要素であり、経済、銀行、法律、軍事、高度技術、運輸、電信、石油、医療、薬品、食品、農業、教育、およびその他多くに影響を与える、情報化時代にとって重要な意味を持つものである。ＤＳＰ、増幅器、ＤＲＡＭ、ＳＲＡＭ，ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリ、マイクロプロセッサ、ＡＳＩＣ，およびプログラマブル論理のような集積回路は、コンピュータ、ネットワーク、遠隔通信、および家電製品などのような多くの用途において用いられる。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
消費者は、彼らの電子製品において、より大きな性能を要求し続ける。たとえば、より高速なコンピュータは、マルチメディア用途または開発のためのより高速なグラフィックを提供するであろう。より高速なインターネットウェブサーバは、オンライでの株式取引、書籍販売、オークション、および食料品購入などの例を含む、より大きな電子商取引をもたらすであろう。より高性能な集積回路は、それらが組み込まれた製品の性能を改善するであろう。
【０００６】
現代の大型集積回路は、ゲートおよびトランジスタを含む数百万もの機器を有し、非常に複雑である。プロセス技術が改善されるにつれて、ますます多くの機器が単一の集積回路上に作られ、それによって集積回路は、時間とともにより複雑になり続けるであろう。より複雑でかつより高性能な集積回路を製造する要求に合致させるために、ソフトウェアツールが用いられる。これらのツールは、コンピュータ支援設計（Computer Aided Design：ＣＡＤ）、コンピュータ支援エンジニアリング（Computer Aided Engineering：ＣＡＥ）、または電子設計自動化（Electronic Design Automation：ＥＤＡ）と一般に称される領域のものである。集積回路におけるより高集積およびより高性能のための要望に応えるために、これらの電子自動化ツールを改善する一定の要求がある。
【０００７】
したがって、電子設計自動化のための改善された技術が必要である。
【課題を解決するための手段】
【０００８】
発明の簡単な要約
方法は、設計を実行するための最良の組のセルを選択するような方法で、設計およびライブラリ（またはライブラリの組）をともに最適化する。方法は、設計コストを低減し、かつ設計制限を遵守しながら、新しいセルの数を制限するという考え方を考慮する。方法は、最適に近い最小の組のセルを選択し、設計を最適化する。これは、それを実行するために用いられるセルベースの設計およびセルライブラリの同時最適化を含む。方法は、オリジナルのライブラリとは異なるトランジスタトポロジ、異なるサイズ、異なる論理機能、および／または異なるセルテンプレートを有する可能性のある仮想セルとして記述される新しいセルの組を考慮する。
【０００９】
マッピングプロセスは、入力として、まだ実行されていないが推定コストが利用可能できる可能性のあるセルを記述する特別な方法を採用し、これらのセルは本用途においては仮想セルと称される。設計は、その後実際のセルおよび仮想セルがマッピングされ、初期のセルの最適な組を決定する。再マッピングされた設計は、その後、徐々に再マッピングされて、実行コストを大きくは悪化させずかつ設計制限も遵守しながら、使用されるセルの数を減少する。全体のプロセスは、何回か繰り返され得る。理想的なセルの組が決定された後に、各セルについてのいくつかの特別なサイズが、タイミングクロージャ（timing closure）を保証するために挿入され得る。最終のセルの組の行高さ（row height）は、最終のライブラリについての選択されたセルにもっとよく適するように最適化され得る。
【００１０】
１つの実行例においては、回路設計およびライブラリの同時最適化のための方法は、複数のセルまたはブール方程式、あるいはＲＴＬコードのような他の方法で表現され得る初期回路ネットリストを提供すること、（空であり得る）最初から存在するセルの組を提供すること、仮想セルをおそらく含んでいる許容可能な機能／セルの追加的な組を供給すること、実行コストを最小化するために、最初から存在するセルの組と許容可能な機能またはセルの追加的な組とを考慮して回路をマッピングすること、新しく再マッピングしたネットリストを生成すること、そして、再マッピングされたネットリスト内で用いられる先在のセルおよび許容可能な機能から成る新しいセルライブラリ仕様および記述を生成することを含む。
【００１１】
許容可能な機能またはセルの追加的な組は、おそらく仮想セルを含む、機能またはセルのリストを通して明示的に定義され得る。追加的に許容可能な論理機能の各々は、異なるトランジスタトポロジ、トランジスタの異なるサイズ、および異なる駆動強度を含む、異なる実行例を含み得る。許容可能な機能またはセルの追加的な組は、いくつかのパラメータを通して非明示的に定義され得る。許容可能な機能の追加的な組は、許可される入力の最大数によって非明示的に定義され得る。許容可能な機能の追加的な組は、直列または並列接続の、直列および並列スイッチの最大数によって非明示的に定義され得る。
【００１２】
許容可能な機能の追加的な組は、関数のＢＤＤ実行例における直列のアーク（arc）の最大数によって非明示的に定義され得る。許容可能な機能の追加的な組は、一般的なトランジスタ実行例における直列のスイッチの最大許容数によって非明示的に定義され得る。許容可能な機能の追加的な組は、組合せ論理機能を実行するための両方のトランジスタ平面における直列のスイッチの数についての正確な下限内のスイッチの最大許容数によって非明示的に定義される
１つの実行例においては、セルライブラリテンプレートを最適化するための方法は、目標技術情報を受けること、そのライブラリに含まれるべき機能またはセルの組を受けること、各関数のために生成されるべき駆動強度の組を受けること、関数および駆動強度の各対のためのトランジスタトポロジの組を受けまたは導き出すこと、異なる代替的なセルテンプレートのためのセル特性の一次推定を出力すること、および要求されたセルの集合のために推定された特性の関数として、ライブラリのための最終テンプレートを選択することを含む。
【００１３】
１つの実行例においては、配置およびルーティング後の回路ネットリストに関連するセルライブラリを最適化するための方法は、配置されかつルーティングされた回路ネットリストを受けること、関連したセルライブラリを受けること、ライブラリから不使用のセルを削除する（あるいは、無視するまたは使用を不許可とする）こと、使用される機能についての不使用の駆動強度を任意的に削除する（あるいは、無視するまたは使用を不許可とする）こと、使用されるセルの各々について、さらなるサイズ調整を可能とするために隣接する駆動強度の組を追加すること、本特許において説明される制限の１つまたは組合せに従って、ライブラリテンプレートを新しいセルの混合に任意的に適合させること、および導入された修正を考慮して新しいライブラリ仕様を出力することを含む。
【００１４】
１つの実行例においては、回路設計における使用のためのライブラリの最適化のための方法は、初期回路ネットリストを提供すること、１つまたはより多くの組の既存セルを提供すること、１つまたはより多くの追加的に許容可能なセルの組を提供すること、初めから存在しているセルの組、および、追加的に許容可能セルの組を考慮して実行コストを低減するセルを検索するために初期回路ネットリストを解析すること、および、潜在的に設計コストを低減する、先在セルのサブセットおよび許容可能セルのサブセットを含む、１つまたはより多くの新しいセルライブラリ仕様および記述を出力することを含む。
【００１５】
初期回路ネットリストは、複数のセルの表現またはブール方程式の少なくと１つによって提供され得る。初期回路ネットリストを解析することは、既存セルの組および許容可能セルの追加的な組を考慮しながら回路を再マッピングすることを含む。方法は、新しい再マッピングされたネットリストを出力することを含み得る。
【００１６】
許容可能セルの追加的な組は、追加的に利用可能な機能またはセルを列挙する、少なくとも１つの明示的な組を含み得る。許容可能セルの追加的な組は、追加的に利用可能なセルを列挙する明示的な組を含み、追加的に許容可能な論理関数の各々は異なる実行例を有し得る。許容可能セルの追加的な組は、いくつかのパラメータを通して非明示的に定義された機能またはセルの組を含み得る。
【００１７】
許容可能セルの追加的な組は、許容される最大の入力数によって非明示的に定義された機能またはセルの組を含み得る。許容可能セルの追加的な組は、直列または並列結合された、直列および並列のスイッチの最大数によって非明示的に定義された機能またはセルの組を含み得る。許容可能セルの追加的な組は、関数のＢＤＤ実行例における直列のアークの最大数によって非明示的に定義されたセルの組を含み得る。
【００１８】
許容可能セルの追加的な組は、一般的なトランジスタ実行例における直列のスイッチの最大許容数によって非明示的に定義される機能またはセルの組を含み得る。許容可能な機能の追加的な組は、組合せ論理関数を実行するための両方のトランジスタ計画における直列のスイッチの数についての正確な下限内のスイッチの最大許容数によって非明示的に定義され得る。
【００１９】
１つの実行例においては、セルライブラリテンプレートを最適化するための方法は、目標技術情報を受けること、そのライブラリに含まれるべき関数またはセルの組を受けること、各関数のために生成されるべき駆動強度の組を受けること、関数および駆動強度の各対のためのトランジスタトポロジの組を受けまたは導き出すこと、異なる代替的なセルテンプレートのためのセル特性の一次推定を出力すること、および要求されたセルの集合のために推定された特性の関数として、ライブラリのための最終テンプレートを選択することを含む。
【００２０】
１つの実行例においては、配置およびルーティング後の回路ネットリストに関連するセルライブラリを最適化するための方法は、配置されかつルーティングされた回路ネットリストを受けること、関連したセルライブラリを受けること、ライブラリから不使用の関数を削除すること、使用される関数についての不使用の駆動強度を任意的に削除すること、使用されるセルの各々について、さらなるサイズ調整を可能とするために隣接する駆動強度の組を追加すること、ライブラリテンプレートを新しいセルの混合に任意的に適合させること、および導入された修正を考慮して新しいライブラリ仕様を出力することを含む。
【００２１】
ライブラリテンプレートを新しいセルの混合に任意的に適合させることは、目標技術情報を受けること、ライブラリに含まれるべき関数またはセルの組を受けること、各関数のために生成されるべき駆動強度の組を受けること、関数および駆動強度の各対のためのトランジスタトポロジの組を受けまたは導き出すこと、異なる代替的なセルテンプレートのためのセル特性の一次推定を出力すること、要求されたセルの集合のために推定された特性の関数として、ライブラリのための最終テンプレートを選択することを含む。
【００２２】
１つの実行例においては、回路設計における使用のために、コンピュータ読込可能媒体を用いて統合されるライブラリを最適化するためのコンピュータプログラム製品は、初期回路ネットリストを提供するためのコンピュータ読込可能コードと、１つまたはより多くの組の既存セルを提供するためのコンピュータ読込可能コードと、１つまたはより多くの組の追加的に許容可能なセルの組を提供するためのコンピュータ読込可能コードと、最初から存在するセルの組、および、許容可能セルの追加的な組を考慮して実行コストを低減するセルを検索するように、初期回路ネットリストを解析するためのコンピュータ読込可能コードと、潜在的に設計コストを低減する、既存セルのサブセットおよび許容可能セルのサブセットを含む、１つまたはより多くの新しいセルライブラリ仕様および記述を出力するためのコンピュータ読込可能コードとを含む。
【００２３】
コンピュータプログラム製品は、最初から存在するセルの組および記許容可能セルの追加的な組を考慮しながら回路を再マッピングするための、コンピュータ読込可能コードを含み得る。新しい再マッピングされたネットリストを出力するためのコンピュータ読込可能コードを含み得る。
【００２４】
許容可能セルの追加的な組は、追加的に利用可能な機能またはセルを列挙する、少なくとも１つの明示的な組を含み得る。許容可能セルの追加的な組は、追加的に利用可能なセルを列挙する明示的な組を含み、追加的な許容可能な論理関数の各々は異なる実行例を有し得る。
【００２５】
１つの実施例においては、方法は、第１の集積回路設計ネットリストを提供すること、コンピュータ読込可能媒体上に記憶された、セルの第１のライブラリにおける１つまたはより多くのセルに対応するように、前記第１の集積回路設計ネットリスト内の要素のグルーピングをマッピングすること、第１のセルへの要素の少なくとも１つのグルーピングを、そのマッピングから除去ることを含み、そのマッピングは第１のセルマッピングを含んでおらず、そして、マッピングにおいて識別されたセルのみを含む第２のライブラリを生成することをさらに含み、第２のライブラリは、第１のセルマッピングを含まず、かつコンピュータ読込可能媒体上に記憶される。
【００２６】
方法は、さらに、第１の集積回路設計ネットリストを、第２のライブラリで使用するが第１のライブラリでは使用しない第２の集積回路設計ネットリストへマッピングすること、および第２の集積回路設計ネットリストをコンピュータ読込可能媒体上に記憶することを含む。方法は、第２のライブラリを生成する前に、第２のセルを第１のライブラリでなく第２のライブラリに追加することをさらに含み、第２の集積回路設計ネットリストは第２のセルへの少なくとも１つの参照を含む。
【００２７】
方法は、第２のライブラリを生成した後、第２のライブラリの少なくとも第２のセルを識別するとともに除去すること、第２のセルではないが第２のライブラリのセルを含む第３のライブラリを生成すること、第１の集積回路設計ネットリストを第１または第２のライブラリではないが第３のライブラリへの参照を有する第２の集積回路設計ネットリストへマッピングすること、第２の集積回路設計ネットリストをコンピュータ読込可能媒体上に記憶することを含み得る。第２のライブラリを生成することは、第２のライブラリのためのセルを得るために、論理合成ではなく物理合成を実行することを含み得る。
【００２８】
本発明の他の目的、特徴、および利点は、以下の詳細な説明および添付の図面を考慮して、明らかになるであろう。その中で、同じ参照符号は、図を通して同じ特徴を表す。
【図面の簡単な説明】
【００２９】
【図１】電子設計自動化のための本発明のシステムを示す図である。
【図２】本発明のソフトウェアを実行するために用いられるコンピュータシステムの簡略化されたシステムブロック図である。
【図３】ライブラリを設計空間の一部として考えたときの、性能に対するコストトレードオフを示すグラフである。
【図４】デジタル設計およびライブラリの同時最適化のための、入出力データのシステムフローを示す図である。
【図５】プロセスの反復の可能性を示す、デジタル設計およびライブラリの同時最適化のための入出力データのシステムフローを示す図である。
【図６】デジタル設計およびライブラリの同時最適化のための、１つの可能な実行例についてのフローを示す図である。
【図７】プロセスの反復の可能性を示す、デジタル設計およびライブラリの同時最適化のための、１つの可能な実行例についてのフローを示す図である。
【図８】特定の設計のために合成される必要のある効果的な駆動強度を選択するための手段として、マッピングならびに配置およびルーティングの実行のプロセスを示す図である。
【図９】配置およびルーティング後のライブラリ仕様を最適化するプロセスを示す図である。
【図１０】最終ライブラリの生成を示す図である。
【図１１】１１個のセルインスタンスから成る回路を示す図である。
【図１２】４つのセルインスタンスから成る等価回路を示す図である。
【図１３】５つのセルインスタンスから成る等価回路を示す図である。
【図１４Ａ】同じセルの９トラックおよび７トラックバージョンの集積回路レイアウトを示す図である。
【図１４Ｂ】同じセルの９トラックおよび７トラックバージョンの集積回路レイアウトを示す図である。
【発明を実施するための形態】
【００３０】
発明の詳細な説明
図１は、本発明のシステムを示す。１つの実施形態においては、本発明は、図１に示されるような、コンピュータワークステーション上で実行されるソフトウェアである。図１は、モニタ３と、スクリーン５と、キャビネット７と、キーボード９と、マウス１１を含むコンピュータシステム１を示す。マウス１１は、マウスボタン１３のような、１つまたはより多くのボタンを有し得る。キャビネット７は、そのいくつかは示されないが、（マルチプロセッサおよびグリッディングの可能性を含む）プロセッサ、メモリ、ダイ要領記憶装置１７などの、よく知られたコンピュータ要素を収納する。
【００３１】
大容量記憶装置１７は、大容量ディスクドライブ、フロッピディスク、磁気ディスク、光ディスク、磁気光ディスク、固定ディスク、ハードディスク、ＣＤ−ＲＯＭ、記録可能ＣＤ、ＤＶＤ、記録可能ＤＶＤ（たとえば、ＤＶＤ−Ｒ、ＤＶＤ＋Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ＋ＲＷ、ＨＤ−ＤＶＤまたはブルーレイディスク）、フラッシュおよび他の不揮発性半導体記憶装置（たとえば、ＵＳＢフラッシュドライブ）、バッテリバックアップされた揮発性メモリ、テープ記録装置、リーダ、および他の類似媒体、ならびにこれらの組合せを含み得る。
【００３２】
本発明の、コンピュータで実現された、またはコンピュータで実行されたバージョンは、コンピュータ読取可能媒体を用いて具現化され、コンピュータ読取可能媒体上に記憶され、またはコンピュータ読取可能媒体に関連する。コンピュータ読取可能媒体は、１つまたはより多くのプロセッサに実行のための指示を提供することに関与するどのような媒体をも含み得る。このような媒体は、限定されないが、不揮発性媒体、揮発性媒体または伝達媒体を含む、多くの形態を採用し得る。不揮発性媒体は、たとえば、フラッシュメモリ、あるいは光または磁気ディスクを含む。揮発性媒体は、キャッシュメモリまたはＲＡＭのような、スタティックメモリまたはダイナミックメモリを含む。伝達媒体は、同軸ケーブル、銅線、光ファイバ線、およびバス内に配列されたワイヤを含む。伝達媒体は、さらに、電波および赤外線データ通信中に生成されるもののような、電磁波、高周波、音波、または光波の形態を採用し得る。
【００３３】
たとえば、本発明のソフトウェアの、バイナリで機械実行可能なバージョンは、ＲＡＭまたはキャッシュメモリ内、あるいは大容量記憶装置１７上に記憶され、または具備され得る。本発明のソフトウェアのソースコードもまた、大容量記憶装置１７（たとえば、ハードディスク、磁気ディスク、テープまたはＣＤ−ＲＯＭ）上に記憶され、または具備され得る。さらなる例として、本発明のコードは、ワイヤ、電波、またはインターネットのようなネットワークを介して伝達され得る。
【００３４】
図２は、本発明のソフトウェアを実行するために用いられるコンピュータシステム１のシステムブロック図を示す。図１のように、コンピュータシステム１は、モニタ３と、キーボード９と、大容量記憶装置１７とを含む。コンピュータシステム１は、セントラルプロセッサ２０２、システムメモリ２０４、入出力（Ｉ／Ｏ）コントローラ２０６、ディスプレイアダプタ２０８、シリアルまたはユニバーサルシリアルバス（ＵＳＢ）ポート２１２、ネットワークインターフェース２１８、およびスピーカ２２０のようなサブシステムを、さらに含む。本発明は、追加のまたはより少ないサブシステムを伴うコンピュータシステムでも用いられ得る。たとえば、コンピュータシステムは、１つより多くのプロセッサ２０２（すなわち、マルチプロセッサシステム）を含み得、またはシステムはキャッシュメモリを含み得る。
【００３５】
プロセッサは、複数のプロセッサコアが１つの集積回路上にある、デュアルコアまたはマルチコアプロセッサであり得る。システムは、分散型演算環境の一部でもあり得る。分散型演算環境においては、個々の演算システムはネットワークで接続され、必要に応じて、ネットワーク内の他のシステムへ演算リソースを貸し出すことが利用できる。ネットワークは、内部イーサネット（登録商標）ネットワーク、インターネット、または他のネットワークであり得る。
【００３６】
２２２のような矢印は、コンピュータシステム１のシステムバス構成を表す。しかしながら、これらの矢印は、サブシステムにリンクするように機能する相互接続スキームの例示である。たとえば、スピーカ２２０は、ポートを通じて他のサブシステムに接続され得、またはセントラルプロセッサ２０２への内部接続を有し得る。図１に示されるコンピュータシステム１は、本発明を伴う使用に適したコンピュータシステムの例である。本発明を伴う使用に適したサブシステムの他の構成は、当業者には容易に明らかとなるであろう。
【００３７】
コンピュータソフトウェア製品は、Ｃ、Ｃ＋＋、パスカル（Pascal）、フォートラン（Fortran）、パール（Perl）、（マス・ワーク社（Math Works, Inc.）からの）マトラボ（Matlab）、ＳＡＳ、ＳＰＳＳ、ジャバ（Java）（登録商標）、ジャバスクリプト（JavaScript）（登録商標）、ＴＣＬ、およびＡＪＡＸのような、様々な適当なプログラム言語で書かれ得る。コンピュータソフトウェア製品は、データ入力モジュールおよびデータ表示モジュールを伴う、個別のアプリケーションであり得る。あるいは、コンピュータソフトウェア製品は、分散化されたオブジェクトとしてインスタンス化され得るクラスであり得る。コンピュータソフトウェア製品は、（サンマイクロシステム社からの）ジャバビーンズ（Java Beans）（登録商標）または（サンマイクロシステム社からのＥＪＢである）エンタープライズジャバビーンズ（Enterprise Java Beans）（登録商標）のようなコンポーネントソフトウェアでもあり得る。
【００３８】
システムのためのオペレーティングシステムは、マイクロソフトウィンドウズ（登録商標）オペレーティングシステムのファミリ（たとえば、Windows 95, 98, Me, Windows NT, Windows 2000, Windows XP, Windows XP x64 Edition, Windows Vista, Windows 7, Windows CE, Windows Mobile）、リナックス（Linux）、ＨＰ―ＵＸ、ユニックス（UNIX）（登録商標）、サンＯＳ（Sun OS）、ソラリス（Solaris）、マックＯＳＸ（Mac OS X）、アルファＯＳ（Alpha OS）、ＡＩＸ、ＩＲＩＸ３２、またはＩＲＩＸ６４、あるいはこれらの組合せのうちの１つであり得る。マイクロソフトウィンドウズは、マイクロソフト社の登録商標である。他のオペレーティングシステムも用いられ得る。分散化演算環境におけるコンピュータは、他のコンピュータとは異なったオペレーティングシステムを用い得る。
【００３９】
さらに、コンピュータはネットワークに接続され、このネットワークを用いて他のコンピュータとインターフェースし得る。たとえば、ネットワーク内の各コンピュータは、本発明の多くの一連のステップのタスクの一部を並列に実行し得る。さらに、ネットワークは、イントラネット、インターネット、またはとりわけインターネットであり得る。ネットワークは、（たとえば、銅を用いる）ワイヤネットワーク、電話ネットワーク、パケットネットワーク、（たとえば、光ファイバを用いる）光ネットワーク、または無線ネットワーク、あるいはこれらの組合せであり得る。たとえば、データおよび他の情報は、コンピュータと、Ｗｉ−Ｆｉ（いくつか例を挙げると、ＩＥＥＥ規格８０２．１１、８０２．１１ａ、８０２．１１ｂ、８０２．１１ｅ、８０２．１１ｇ、８０２．Ｈｉおよび８０２．Ｈｎ）のようなプロトコルを用いる無線ネットワークを用いる本発明のシステムの要素（またはステップ）との間を通過し得る。たとえば、コンピュータからの信号は、少なくとも一部は、要素または他のコンピュータへ無線的に伝達され得る。
【００４０】
この発明は、その設計がセルライブラリに基づいた、デジタル回路の最適化に関する。ほとんどのデジタル設計は、現在はセルライブラリに基づいている。これは、ほとんどの設計フローは、ブール論理方程式が、ライブラリ（またはライブラリの組）からのセルの相互接続された組にマッピングされるステップを有する。ライブラリからのセルは、互いに接続されて完全な回路のための所望の機能を生成するロジックプリミティブ（ブール関数および記憶素子）を実行する。方程式を相互接続されたセルの組に変換するステップは、他のコスト（典型的には領域および電力）を最小化しつつ、いくつかのコスト（典型的には、要求される動作速度）の制限に従うような方法でなされる。このステップは、技術マッピングとして一般的に知られており、技術マッピングを実行するための様々なツールは異なるベンダーまたは大学から利用可能である。このツールへの入力は、典型的には、設計、事前設計されたライブラリ、および最適化目標である。
【００４１】
セルベースの設計は、マッピングおよびアンマッピングされた設計、最適化目標、設計制限、目標ライブラリ、ライブラリテンプレートの概念を含み得る。本発明は、強化されたライブラリ、使用されたサブセット、使用のヒストグラム、インスタンスの分配、仮想セル、ほぼ圧縮されたセル（nearly compacted cell）、セル生成ツール、およびセル生成ＡＰＩの概念を利用する。これらの概念は、以下に簡単に説明される。
【００４２】
マッピングおよびアンマッピングされた設計。設計（または設計の一部）は、ライブラリからの相互接続されたネットワークとして表わされるときに、マッピングされたと言われる。ライブラリ内の各セルは、多くの回数インスタンス化され得るが、いくつかはあまり（ほんの１回だけも）インスタンス化されないかもしれず、ライブラリ内の利用可能ないくつかのセルは全く使用されないかもしれない。設計（または設計の一部）は、サブ設計としてライブラリからのセルに対する参照（インスタンス化）を作成することなく、より高いレベルにおいて記述されるときに、アンマッピングされたと言われる。アンマッピングされた設計をマッピングされた設計に変換しながら設計コストを最小化するタスクは、通常は、技術マッピング（technology mapping）と呼ばれる。同様に、再マッピングの語句は、マッピングされた設計の異なったマッピングがされた設計への変換のために用いられ、技術独立最適化（technology independent optimization）の語句は、アンマッピングされた設計の異なったアンマッピングがされた設計への変換のために用いられ、そしてアンマッピングの語句は、マッピングされた設計のアンマッピングがされた設計への変換のために用いられる。
【００４３】
最適化目標および設計制限。最適化目標および設計制限は、取り扱われる特定の設計のための設計者の要求が何であるかを、最適化ツールへ記述する。典型的に、最適化ツールは、回路の様々なポイントについて表現され得る最適化目標と設計制限の混合を受ける。例としては、所望の到着時間（arrival times）および頻度を遵守しながら領域および電力を最小化すること、タイミングを低減するとともに最大領域を遵守すること、最大領域を遵守するとともに歩留まりを増加することを含む。設計目標および制限の多くの組合せは、それらの目標を達成するために設計者によって用いられ得る。
【００４４】
目標ライブラリ。マッピングされた設計を生成する最適化ステップのために、ライブラリを参照して、マッピングツールによって用いられ得るセルを含む目標ライブラリを特定することが必要である。利用可能なセルは異なるライブラリに分割され得るので、マッピングツールは１つより多くの目標ライブラリを処理することが可能である。目標ライブラリは、初期回路について用いられる初期ライブラリのいくつかまたは全てを含み得る。
【００４５】
ライブラリテンプレート。完成した設計の最終レイアウトは、セルを隣り合わせに配置することによってなされるので、セルの設計は、このように配置されるときに、それらがより簡単に組合わされるように制限される。ベンダーは、電力消費や高速度のような異なる設計目標に適合するような、異なるテンプレートを有するライブラリを提供し得る。ベンダーにとって、同じ技術ノード、すなわち汎用、高速および低電力のライブラリバージョンに対して少なくとも３つの異なる標準セルライブラリを提供することは珍しいことではない。いくつかのベンダーは、追加的な他のバージョンを提供し得る。
【００４６】
これらのライブラリは、異なるテンプレートを使用し、異なる列高さおよび電力グリッドサイズを有し得る。あるいは、これらのライブラリは、同じテンプレート、または同じ設計において用いられるべき適合可能なテンプレートを用い得る。ライブラリの異なるバージョンが適合可能でないテンプレートを有し、かつ設計ツールが異なるテンプレートの使用をサポートしないときに、設計者は、彼らの設計を達成するために、ライブラリの異なるバージョン（たとえば、汎用、高速、および低電力）の中から選択しなければならないかもしれない。設計者は、ライブラリが同じまたは適合可能なテンプレートを有しているときには、ライブラリの異なるバージョンからのセルを混合することができる。いくつかのテンプレートは、２つの隣接した列を占有する、２倍の高さのセルを適合し得る。
【００４７】
本発明が解決する課題は、新しいセルの追加によって利用可能な目標ライブラリを強化することの可能性を考慮しつつ、設計を最適化するための最小のほぼ最適なセルの組を選択することである。これは、それを実行するために用いられる、セルベースの設計およびセルライブラリの同時最適化を含む。ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。本方法は、ライブラリは、オリジナルのライブラリとはおそらく異なるトランジスタトポロジ、異なるサイズ、異なる論理機能、および／または異なるセルテンプレートを有する新しいセルによって強化され得るという事実を考慮する。
【００４８】
強化されたライブラリ。ライブラリは、設計者が、設計を最適化するために、新しいセルをそれに追加する場合に強化されたと言われる。
【００４９】
使用されたサブセット。設計をマッピングした後、マッピングされた設計は、ライブラリからの特定のセルへの参照を作成し、それは設計においてインスタンス化される。ライブラリからの全てのセルが、設計において必ずしもインスタンス化される必要はない。与えられたマッピングされた設計において少なくとも１回はインスタンス化される全てのセルの組は、その与えられた設計に関するライブラリの使用されたサブセットを構成する。
【００５０】
使用のヒストグラム。マッピングされた設計、およびその特定の設計に関するライブラリの使用されたサブセットが与えられると、使用されたサブセット内の各セルは、設計において特定の数のインスタンスを有する。いくつかのセルは、一度だけしか用いられないかもしれないが、その他は多くの回数インスタンス化され得る。ヒストグラムは、（領域、電力、遅延などの）ライブラリまたは各個別のセルからのいくつかの特性に従って重み付けされ得る。
【００５１】
インスタンスの寄与。設計への各インスタンスの寄与は、設計においてどれだけ多くの回数使用されたか（使用のヒストグラムから利用可能なデータ）、および（回路のタイミングクロージャについてそのセルへの寄与に関連する）低スラックのインスタンスにおいてどれだけ多くの回数そのセルが現れたかによって測定され得る。インスタンスの寄与は、設計の限られた領域、またはサブ設計に関して演算され得る。
【００５２】
仮想セル。仮想セルは、セルの最終レイアウト記述からではなく生成されたデータを有するセルである。これらのセルは、（テープアウト（tape out）において用いられるべき）それらの最終形態において、いまだ実行されておらず、または特徴付けられていないが、設計および最適化プロセスにおけるそれらの使用を許容しつつ、利用可能なコストを推定する。推定されたコストは、最終レイアウトとは異なったソースから導き出されるか、あるいはテープアウトのために用いられるものとは異なった精度を伴う最終レイアウトから導き出される。仮想セルまたは推定されたコストが、（テープアウトのために用いられる）最終の物理的実施形態からどれだけ乖離しているかに依存して、仮想セルは、より大きな度合またはより小さな度合だけ仮想であり得る。仮想セルが最終のテープアウトバージョンに近ければ近いほど、仮想度合はより小さくなる。仮想セルが最終のテープアウトバージョンから遠ければ遠いほど、仮想度合はより大きくなる。
【００５３】
通常、コンパクション前のトランジスタの配置およびルーティングは、（この記述はしばしばスティック線図と称されるが、）領域および電気的特性を推定するために用いられる。推定がスパイスネットリスト（spice netlist）から純粋になされる場合は、仮想−仮想セル（virtual-virtual cell）または仮想２セル（virtual2 cell）と呼ぶ。本発明において用いられる仮想セルを生成する方法は、中間の駆動強度を得るために既存セルを補間する従前のアプローチとは異なっている。本アプローチにおいては、セルのためのコストが、セル生成器によって提供されるＡＰＩ推定を通して導き出される。これらのコストは、すでに事前演算され、追加のセルの組において利用可能であり得る。各セルは、（ＡＮＤ２、ＯＲ３、ＮＡＮＤ４、ＡＯＩ２２などの）組合関数または（ＦＦＤ、ＦＦＤＳＲなどの）メモリ要素であり得る、セルの挙動を表わす機能を有することに注意すべきである。１つより多くのセルが、駆動強度、トランジスタトポロジ、論理ファミリ、セルテンプレートなどが異なる、同じ機能を有し得る。
【００５４】
ほぼ圧縮されたセル。ほぼ圧縮されたセルは、いまだにいくつかの設計基準検査（Design Rule Check：ＤＲＣ）エラーを含んではいるが、領域および電気的特性は非常により精度で得られているセルである。仮想セルもまた、やや精密ではないが得るための時間消費が少ない特性データをもたらす、軽い特性化（light characterization）を実行することによって、完全に圧縮されたセルから導き出され得る。
【００５５】
セル生成ツール。セル生成ツールは、セルベース設計において用いられるためのセルを生成し得るツールである。ユーザは、生成されるべきセルについての所望の機能を特定しなくてはならない。セル生成ツールは、論理方程式から、あるいは所望のセルを特定するための、スパイスネットリストまたは他の形態から始まるセルを生成し得る。セルの生成は、（目標技術設計基準についての情報を提供する）技術定義（technology definition）およびセルについての所望のセルテンプレートに基づいている。セル生成器の一例は、ナンゲートライブラリクリエータ（登録商標）ツール（Nangate Library CreatorTM tool）であり、そのユーザーズマニュアルは、その他のナンゲートソフトウェアユーザーズマニュアル、ヘルプスクリーンを含むナンゲートソフトウェアスクリーン、および本願において引用される他の全ての参考文献とともに、参照により引用される。セル生成ツールは、その特徴について外部のツールに依存し、またはその特徴を実行するための密接に統合されたツールを有し得る。ライブラリ特性化ツールの一例は、ナンゲートライブラリキャラクタライザ（登録商標）ツール（Nangate Library CharacterizerTM tool）である。
【００５６】
登録商標は、それら個別の所有者の財産権である。ナンゲートライブラリクリエータおよびナンゲートライブラリキャラクタライザは、ナンゲートＡ／Ｓ（Nangate A/S）の登録商標である。
【００５７】
セル生成器ＡＰＩ。セル生成器ＡＰＩは、異なる精度を用いることによってセルコスト（領域、遅延、電力など）を推定するためのインターフェースを提供し得る。仮想セルが、（テープアウトのために用いられる）最終的な物理実施形態からどれだけ乖離しているかに依存して、それらは、異なる仮想度合（degree of virtuality）を提示し得る。仮想度合がより低ければ低いほど、仮想セルは、最終のテープアウトバージョンにより近くなる。前の議論から、セルは、仮想２レイアウト、仮想レイアウト、ほぼ圧縮されたレイアウト、および最終レイアウトの４つの異なる精度の選択肢を伴って生成されるコストを有し得る。セル生成器アプリケーションプログラムインターフェース（Application Program Interface：ＡＰＩ）は、これら４つの異なる方法を提供し、セルおよびライブラリデータを生成し得る。セル生成器ＡＰＩは、許容可能な機能についての実際のまたは推定されるコストを導き出すために用いられ、利用可能でないと考えられる機能についての無限コストを返すだろう。
【００５８】
本発明は、設計を最適化するための強化されたライブラリを使用するために用いられる。解空間は、ライブラリの強化によって拡大され、それに続くステップにおいて、強化されたライブラリは、追加されたセルの数をユーザによって定められた数に限定するためにフィルタがかけられる。目標は、設計者によって許可されたものより多いセルを追加することなく、ライブラリの強化からの最大ゲインを得ることである。実用的な観点から、このプロセスは、設計およびそれを実行するために用いられるライブラリを、ともに最適化することを可能にする。
【００５９】
図３は、ライブラリを設計空間の一部として考えたときの、性能とコストとのトレードオフのグラフを示す。図３は、潜在的なコスト節約を導入するように実行コストを最小化しながら、（点線３０７の）所望の性能を達成する（星印３０２として表わされた）ライブラリを見出すための課題決定を図示する。図に提示されたコストは、領域、遅延および電力であることに注意すべきである。これらは、本発明の制限としてではなく、例として引用され、測定され得る利点（領域、電力、遅延、歩留まりなど）の図も、本プロセス中で最適化され得る。
【００６０】
提案された方法の利点は、設計空間の一部としてのライブラリの開発を含む。
これまでに、いくつかのアプローチが、詳細な物理的特徴を考慮せずかつそれをフィルタリングしようとしないまま、完全な仮想ライブラリを用いてなされている。これらのアプローチは、ライブラリがいくつかのトポロジカルパラメータによって定義される、純粋に仮想のライブラリを用いる。その唯一の目標は、トランジスタの数を最小化することである。実際の領域および特性は存在せず、かつ考慮されない。セルの数において、アクティブフィルタリングは実行されず、そのため、ライブラリ内の結果のセルの数は、著しく増加し得る。
【００６１】
これらのアプローチは、実際のデータ−特性、領域、セルの詳細データ、またはそれらの構成を考慮せず、トランジスタの数のみが考慮されるので、非常に不正確である。他の不利益は、使用されるセルの数のアクティブな制限がないことである。
【００６２】
いくつかのアプローチは、強化または拡張することなく、既存のライブラリにフィルタリングをかける。たとえば、１つのアプローチは、以前から存在していたライブラリからのセルをフィルタリングするだけである。強化は全く行なわれない。これらのアプローチは、単に既存の事前に特徴付けられたライブラリをフィルタリングするという主な制限を有し、そのアプローチは、設計を改善し得る特別なセルは見ない。他の制限は、セルのフィルタリングがセルごとになされ、隣接するサイズのセルはタイミングクロージャのためには保存されないということである。
【００６３】
いくつかのアプローチはライブラリを強化するが、その強化は、新しい機能ではなく、新しい駆動強度を追加することに限定される。このように、強化は既存のセルについての新しいサイズのみを考慮する。新しい機能は全く追加されない。強化は、初期ライブラリ上に存在し（かつすでに特徴付けされた）機能に限定される。これは、新しいサイズを生成するために用いられる仮想セルの特徴が、ライブラリ内の既存セルから導き出されるために生じる。
【００６４】
これらのアプローチは、すべてのデータが既存セルから生成されるので、ライブラリに新しい機能を追加せず、かつ新しいトポロジを導き出すことができない。特性がライブラリ内の既存セルから導き出されるので、ライブラリ内にすでに存在するセルのみが用いられ得る。これは、与えられたトポロジを伴うライブラリ内に既に存在する機能について、新しいトポロジ（たとえば、トランジスタネットリスト）の使用を不正確にさせる。精度を確保するために、このアプローチは、ライブラリ内のセルのトポロジが公知であると非明示的に想定し、類似のトポロジ（および、したがって、既存のセルから正しく導き出され得る同様の特性）を伴う新しいセルが生成され得る。
【００６５】
他のアプローチは、特定の設計を最適化するための新しいセルのオンザフライ生成を用いる。このアプローチは、初期（仮想）のライブラリは考慮しない。それは設計を調査し、最適化のための候補点に関する新しいセルを生成する。新しいセルの生成は、既存の回路の一部を置換するために用いられる新しいセルを生成するために用いられる文脈特定情報（context specific information）に基づいてなされる。
【００６６】
方法は、設計特定セルを生成する。方法は、特定のセルによる回路の一部（たとえば、サブ回路）を構成する。方法は、設計特定セルの追加プロセスにおいて生成された新しいセルの数を低減する。方法は、この文脈におけるセル特性の事前レイアウト推定を実行する。仮想セルを生成することは、１つの可能性のある方法として見なされ得る。方法は、機能的に冗長なトランジスタネットワークを有する論理回路を生成する。方法は、与えられたセルライブラリにマッピングされた設計を受け、そして、回路の速度アップのためにセルのトランジスタサイズが変更される。このトランジスタサイズの変更は、ライブラリ内への新しいセルの追加をもたらし、ライブラリは新しいセルに適合するように再設計される。
【００６７】
これらのアプローチは、サブ回路の代用として用いられるための設計特定セルの生成を用いて行なわれる。それは、（特徴および性能評価がオンザフライでなされるので、）長時間を要し、結果としてより局部的な調査がなされる。他の不利益は、それがインプレースの最適化に向けられ、セル配置におけるいかなる修正も、セルが生成された環境および境界条件を修正し得ることである。もしこれが生じると、設計特定セルは、もはや有効ではないだろう。この先行技術においては隣接サイズのセルが提供されないので、タイミングクロージャは、この特定の場合において悪影響を与え得る。この意味で、この先行技術は、新しいセルを伴う設計特定ライブラリのずっとより限定された強化を提供する。
【００６８】
ライブラリ生成のための方法は、推測的な（a priori）セル記述を有する。そのため、方法は、一旦セルが知られると、包括的なライブラリを作成する。本方法において考慮される設計の特異性はなく、そのため、それは設計特定ライブラリ生成法ではないと言うことができる。これらのアプローチは、特定の設計のためにはライブラリを最適化しない。それは、一旦セルが特定されると、ライブラリを形成するためのセルレイアウトを単に生成するだけである。セルそれ自体を選択することが、設計者の責任であり、方法はこのタスクにおいては設計者を手助けしない。
【００６９】
本特許は、デジタル設計とその実行に用いられるセルライブラリとの同時最適化を実行するための、新しい手法を提供する。図４は、この共同最適化を実行するためのシステムフローを示す。
【００７０】
図４は、デジタル設計およびライブラリ４００の同時最適化のための入出力データのシステムフローを示す。典型的に、方法は、入力として、初期設計４０３、初期ライブラリ４０６（任意的）、および追加的に許容可能な機能４０９の組を採用する。プロセス４００からの出力は、再マッピングされた設計４１３およびライブラリ仕様４１６である。
【００７１】
ライブラリ仕様または最適化されたライブラリは、新しい関数、新しいサイズ、新しいテンプレートを有し、かつ初期ライブラリのサブセットも含み得る。ユーザは最適化されたライブラリ４１６のみに興味があり、そのため、回路４０３はライブラリ最適化プロセス４００を案内するためだけに用いられ得ることに注意すべきである。この場合において、本技術は、最適化された回路４１３を出力する必要なく、特定の設計のために最適化されたライブラリ仕様４１６を生成する。再マッピングされた設計または回路は、この場合においては出力されなくてもよい。
【００７２】
３つの入力項目は、最適化されるべき回路または初期設計４０３、（空であり得る）最初から存在するセルライブラリ４０６、および明示的または非明示的に定められた追加的に許容可能な論理機能４０９の組である。設計制限および最適化目標のようなほかの入力項目は、たとえ図面においては明示的に示されていなくとも、本方法によって用いられ得る。設計制限は、回路設計の当業者においてはよく知られており、本説明においては議論されない。
【００７３】
最適化されるべき回路は、ゲートのネットリストまたは方程式の組、あるいはその２つの混合、あるいは他のフォーマットのいずれかとして説明され得る。初期回路または最適化されるべき回路はＲＴＬからも得られ、すでにある程度最適化されたものであってもよい。ゲートのネットリストは、最初から存在するライブラリにおいて記述された、インスタンス化および相互接続ゲートを作成する回路の記述である。回路の機能は、ゲートの記述およびそれらの相互接続から導き出され得る。あるいは、最適化されるべき回路は、ライブラリにおけるゲートを特定するためのインスタンスを作成することなく、その回路の機能を直接的に表現するブール方程式の組として記述され得る。初期回路は、ゲートの機能だけが記述された、包括的なライブラリに対する参照も作成し得る。
【００７４】
取り扱われるべき機能が記述され得る回路記述は、本発明の範囲において用いられ、ライブラリからのセル参照、および方程式、真偽表、バイナリデシジョンダイアグラム（ＢＤＤ）または等価な形式を通して記述される回路のマッピングされていない部分を含んでいる混合された記述を含み得ることに注意すべきである。
【００７５】
最初から存在しているライブラリは、設計のためにすでに利用可能であるセルの組を含む。この組が空であり得ることに注目すべきであり、そして、もしこの組が空でない場合は、ライブラリのサブセットは、不許可とされ、無視され、あるいは「使用しない」としマークが付けられ得る。セルは、最適化されるべき回路の初期の記述において参照されてもよいし参照されなくてもよく、それはマッピングされた回路、マッピングされていない回路、あるいは部分的にマッピングされたまたはマッピングされていない回路、あるいはこれらの組合せであり得る。
【００７６】
追加的に許容可能なセル（論理機能）の組は、単一のセルとしてみなされ得る、（オリジナルのライブラリに関する）追加のセル機能のリストを定める。この意味で、目標ライブラリは、追加的な許容可能な論理機能の組を伴うオリジナルのライブラリ（ライブラリ達）におけるセルの組の結合として理解され得る。このフローにおいて、新しい許容可能な機能は、ライブラリに追加されるべき候補セルを生成するために用いられ、したがって、利用可能なセルのセットを強化する。追加的に許容可能な機能の組は、非明示的にまたは明示的に、あるいはその２つの組合せ（非明示的および明示的な定義）によっても記述され得る。
【００７７】
ライブラリの非明示的な定義のいくつかの異なる例が以下に与えられる。（以下のおよびその他の）本用途における例は、本発明のいくつかの側面を例示するために提供され、これらの側面は必要に応じて、または特定の用途の要望にあわせて適合および修正され得る。本発明の範囲は、与えられる特定の例についてのいかなる方法においても、限定されまたは制限されるべきではない。
【００７８】
入力数による（非明示的なライブラリ定義についての）例１。入力数によってライブラリを定義する場合には、機能は、その入力数に従って容認されまたは廃棄され得る。容認および拒否されるべき入力数についての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【００７９】
直列並列の実施形態における直列および並列のトランジスタの数による（非明示的なライブラリ定義についての）例２。直列および並列のトランジスタの数によってライブラリを定義する場合には、機能は、直列および並列のトランジスタの数に従って容認されまたは廃棄され得る。容認および拒否されるべき直列および並列のトランジスタの数についての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【００８０】
ＢＤＤ高さによる（非明示的なライブラリ定義についての）例３。ＢＤＤ高さによってライブラリを定義する場合には、機能は、その機能を表すＢＤＤの高さに従って容認されまたは廃棄され得る。容認および拒否されるべきＢＤＤの高さについての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【００８１】
一般的なスイッチ実行例において達成可能なトランジスタチェーンの最小（最悪の場合）の長さによる（非明示的なライブラリ定義についての）例４。これは、直列トランジスタの数における「下限」である。トランジスタチェーンの最小（最悪の場合）の達成可能な長さによってライブラリを定義する場合には、機能は、トランジスタチェーンの最小（最悪の場合）の達成可能な長さに従って容認されまたは廃棄され得る。容認および拒否されるべきトランジスタチェーンの最小（最悪の場合）の達成可能な長さについての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【００８２】
（オリジナルのライブラリにおいてセルの関連を生成することを含む）オリジナルのライブラリにおいて提示される機能を伴うこれらの例からの機能の組合せを含む、上記４つの方法の組合せの、（非明示的なライブラリ定義についての）例５。非明示的または明示的に定義された各セルの機能について、異なるトランジスタトポロジ、異なるトランジスタのサイズ、および異なる駆動強度を含むセルのバリエーションが生成され得ることに注意すべきである。これらの方法は例示のためだけに提示され、本発明はここで例示された方法を用いる事に制限されないことに注意すべきである。
【００８３】
明示的な定義は、追加的に許容可能な論理機能のセットの明示的なリスティングを行うことである。これは、本方法の実行のために適した形式における追加的に利用可能な機能のリストを明示的に提供することである。
【００８４】
追加的に利用可能な機能を定義するどのような形式も、本発明の内容において有効であることに注目すべきである。リスト化された方法は、例示的な特徴を有するが、制限的な特徴は有しない。
【００８５】
本方法の出力は、マッピングされたネットリスト、および新しいライブラリを構成するセルの組を含む。ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計についての最適化されたライブラリを生成する。マッピングされたネットリストおよび新しいライブラリを構成するセルの組が以下に説明される。
【００８６】
マッピングされたネットワークは、オリジナルの回路を実現する相互接続されたセルの組であり、おそらく、領域、遅延および電力消費を含むがこれに制限されないコストに関するいくつかの利点を有する。得られるべき特定の利点は、マッピングツールのための設計制限および目標を通して、設計者によって案内される。マッピングされたネットワークにおいて用いられるセルは、本法によってさらに出力される新しいライブラリ内にリスト化される。
【００８７】
本方法によって出力される新しいライブラリは、以下のいずれかを含み得る。
１．既存セルの組合せを意味する、既存ライブラリ自体。
【００８８】
２．（追加的に利用可能なセルからの）新しいセルが既存ライブラリに追加されたことを意味する、強化されたライブラリ。新しいセルは、既存論理機能のための新しい論理機能または新しい駆動強度を表すことができ、既存機能のための新しいトランジスタトポロジを含む。新しいセルを導入することの目標は、最終設計の領域、遅延および電力を低減することである。得られるべき特定の利点は、マッピングツールのための設計制限および目標を通して、設計者によって案内される。このプロセスの間、強化されたライブラリにおけるより効率的なセルの導入によって、オリジナルのライブラリからのいくつかのセルが削除され、廃棄され、不許可とされ、または使用しないとしてマークされ得ることに注意すべきである。
【００８９】
３．新しいセルライブラリにおいてセルの混合をよりよく適合するように、セルテンプレートを変更したことを意味する、新しいライブラリ。再び、既存セルについての新しい論理機能および新しい駆動強度が、既存ライブラリへ追加され得る。しかしながら、新しいテンプレートが選択されると、オリジナルのセルは、新しいテンプレートに適合するように、おそらく再設計され得る。セルの新しい混合を考慮すると、古いものは最良のものではないので、新しいテンプレートが導入され得る。
【００９０】
４．１より多くのテンプレートにおいて利用可能なセルにより構成される、新しい混合テンプレートライブラリ。原理は上述の「新しいライブラリ」と同様であるが、配置およびルーティングツールが不均一なセルテンプレート、あるいは、異なるテンプレートを用いる回路領域または電力領域またはセルの異なるＶｔバージョンに対処することができる場合には、セルは異なるテンプレートにおいて利用可能とされ得る。混合テンプレートライブラリは、適合可能でないテンプレートを使用し、異なる列高さおよび電力グリッドサイズを有してもよいし、または同じ設計において用いられるべき適合可能なテンプレートを用いてもよい。このようにして、設計者は、適合可能でないテンプレートの場合について異なる回路テンプレート領域のために用いられるべきセルの異なるテンプレートバージョンの中から選択することができ、または設計者は、テンプレートが適合可能である場合に、回路のどんな領域においてもセルを混合することができる。いくつかのテンプレートは、２つの隣接する列を占有する、２倍高さのセルに適合し得る。
【００９１】
本方法によって生成された新しい設計およびライブラリ仕様は、図５に示されるように、最適化プロセスへの入力５２０として用いられ、繰り返し最適化を生成する。最適化プロセスは、どのような回数（たとえば、２，３，４，５，６または７、あるいはより多くの回数）でも反復され得ることに注意すべきである。これは、最適化ツールによって生成される結果が初期データに依存しており、そのため反復がさらなる改善を提供し得ることがよく知られているので、重要である。反復プロセスのより一般的な観点においては、最適化は設計の前のバージョン、または前の反復において生成されたライブラリを再利用し得る。
【００９２】
図５を参照して、ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。この場合には、回路は出力され得ない。
【００９３】
設計およびライブラリの同時最適化のための提案された方法を実現するように適合された、１つの可能なフロー４００が図６に示される。フローの特定の実行例のステップは、以下に説明される。
【００９４】
図６を参照して、ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。この場合には、回路は出力され得ない。
【００９５】
特定のフローが以下に提示されるが、本発明は提示された特定のフローおよびステップに限定されないことが理解されるべきである。本発明のフローは、（この用途においては必ずしも説明される必要のない）追加のステップ、提示されたステップのいくつかを置換した異なるステップ、より少ないステップまたは提示されたステップのサブセット、あるいは提示されたものと異なる順番のステップ、あるいはこれらの組合せを有し得る。さらに、本発明の他の実行例におけるステップは、提示されたステップと全く同一でなくてもよく、かつ特定の用途に適したようにまたはデータに基づいて、修正されあるいは変更されてもよい。
【００９６】
１．ステップ６０３において、既存ライブラリおよび許容可能な機能を考慮して、設計を最適化するための候補セルを同定する一致（match）を生成する。基本的に、このステップは、（セルとなり得る）許容可能な機能の組において、初期のライブラリまたは機能におけるセルに対応する回路の部分を同定する。このフェーズは、当業者によって、一般的にマッチングと呼ばれている。しかしながら、ここでは、同時に、物理的なセル、仮想セル、および仮想２セルを同定することができるオリジナルの特性を提示する。
【００９７】
２．ステップ６０６において、回路を実現する候補セルの最良の組を選択する。一旦、回路の異なる部分が、割り当てられた候補セルを有すると、技術は、それらが領域、遅延および電力消費コストについて所望のトレードオフを伴う回路を実現するような、候補のサブセットを選択する。このフェーズにおいて事項された選択は、当業者によって、一般的にカバーリングと呼ばれる。
【００９８】
３．ステップ６１０において、コストは許容できるがあまり頻繁に使用されていない候補セルを削除する。このステップは、カバーリングフェーズの結果を調査し、少数のインスタンスのみを有するセルのインスタンスを削除する。回路のこれらの部分は、その後、残りの使用されるセルの組を考慮して再マッピングされる。このステップの目標は、設計実行コストを著しく増加させず、かつ設計制限を遵守しながら、セル候補の全体数（およびライブラリのサイズ）を減少することである。このプロセスは、設計のための使用におけるライブラリから、セルを削除し、無視し、または使用しないようにマーキングし得ることに注意すべきである。
【００９９】
４．ステップ６１４において、新しいライブラリのためのセルテンプレートを最適化する。新しいセルの混合が生成されるので、最適化されたライブラリに存在するセルの組によりよく適合するように、ライブラリテンプレートが最適化され得る。ライブラリテンプレートは、セル高さ、電源の幅、Ｐ型およびＮ型の拡散などを定義する。
【０１００】
５．ステップ６１９において、再マッピングされた設計および適合したライブラリ仕様を生成する。適合したライブラリ仕様は、再マッピングされた設計において用いられるセルについての駆動強度の多様性を含む。駆動強度のこの多様性の要求は、配置およびルーティング後のクロージングタイムのために必要とされる駆動強度が、推測的に知られていないという事実に由来する。
【０１０１】
出力されたライブラリは仮想セルおよび仮想２セルを含んでいるので、図６における出力されたライブラリは、ライブラリ仕様であることに注意すべきである。これは、再マッピングされた設計において用いられる仮想セルおよび仮想２セルは、回路の最終テープアウト前に、物理的セルを生成するための仕様として用いられなければならないことを意味する。ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。
【０１０２】
再び、読者は、本発明によって生成された新しい設計およびライブラリ仕様が、最適化プロセスへの入力として用いられ、図７に示されるように、繰り返し最適化を生成することに注意すべきである。新しい設計およびライブラリ仕様は、ステップ６０３または６１０への入力として用いられ得る。これは、最適化ツールによって生成される結果が初期データに依存しており、そのため反復がさらなる改善を提供し得ることがよく知られているので、重要である。反復プロセスのより一般的な観点においては、最適化は設計の前のバージョン、または前の反復において生成されたライブラリを再利用し得る。
【０１０３】
図７を参照して、ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。この場合には、回路は出力され得ない。
【０１０４】
ここで説明される方法は、図８に記載されるように、ポストプロセッシングを通してさらに強化され得る。図８を参照して、ユーザは最適化されたライブラリのみに興味を示し、そのため、回路はライブラリ最適化プロセスを案内するためだけに用いられ得ることに注意すべきである。この場合において、本発明は、最適化された回路を出力する必要なく、特定の設計のために最適化されるライブラリを生成する。この場合には、回路は出力され得ない。
【０１０５】
このポストプロセッシングステップは、配置およびルーティング８１８を実行することによって設計の新しいバージョンを導き出すための、本方法によって生成されたマッピングされたネットリスト８１０の出力および強化されたライブラリ８１５の出力から構成される。この配置されかつルーティングされた設計のバージョン８２２によって、初期のセルライブラリからのどのセルおよびサイズが、回路の物理的実行例において効果的に用いられるかを検証することができる。このように、効果的に使用されるセルおよびサイズを考慮しつつ、ライブラリ仕様のさらなる最適化８２６を実行することができる。
【０１０６】
配置およびルーティング後にライブラリ仕様を最適化するプロセス（８２６）は、図９においてより詳細に説明される。このプロセスは、いくつかのレベルの配置保護を採用することができ、既存セルは、同じ場所に残るかあるいは著しくは置換されない。最適化を通して行なわれる基本的な動作が、以下で説明される。
【０１０７】
１．ステップ９３３において、どのようなサイズにおいても使用されていないセル機能を削除する。ライブラリ内にあるがどのサイズにおいても使用されないセルは、生成されなければならないセルの数を最小化するために、ライブラリから削除され得る。
【０１０８】
２．ステップ９３５において、使用されているセルについて、使用されていないサイズを削除する。使用されていないサイズもまた、ライブラリをシンプルにするために削除され得る。
【０１０９】
３．ステップ９３７において、使用されているセルおよびサイズについて、タイミングクロージャのために既存のサイズを調整させるような追加的なサイズを追加する。回路は配置およびルーティングされ、かつタイミングが閉鎖されておりまたは閉鎖されそうであるので、セルは使用される最終サイズに近づく。すべての使用されるセル／サイズについて、近接のサイズの組が、ライブラリに導入されて、最終タイミングを確定させる。
【０１１０】
４．ステップ９３９において、最適化された設計におけるセルの新しい混合を最適化するためにライブラリテンプレートを調整する。セルの新しい混合が生成されるので、ライブラリテンプレートは、最適化されたライブラリにおいて存在するセルの組によりよく適合するように最適化され得る。ライブラリテンプレートは、セル高さ、電力の幅、Ｐ型およびＮ型の拡散などを定義する。
【０１１１】
最適化されたライブラリ仕様９４８が生成された後、技術は、図１０に示されるように、対応する最適化された物理ライブラリの合成１０５２へ進む。これは、（物理的合成を通して）仮想セルおよび仮想２セルの物理的実行例への変換に相当する。そして、セルの物理的実行例は、テープアウトのための最終設計クロージャ（closure）を実行するために用いられる最適化された物理ライブラリ１０５４を構成する。設計は、（再マッピングされた設計１０５６によって示されるように、）物理合成後に、新しいライブラリを反映するように更新されなくてはならないことに注目すべきである。このステップは、本発明の範囲において自動的に実行され得る。
【０１１２】
現在の発明は、先行技術に対して利点を提供する。本発明は、領域および性能（電力、遅延、歩留まりおよびその他）に関して、より現実的なデータを用いる。それによって、新しく生成された機能のタイプおよび数を制御することもできる。
【０１１３】
本発明は、設計を最適化するために有用であり得る新しいセルを追加することの利点を有する。さらに、本発明は、最終的なタイミングクロージャおよび最適化を可能とするための、隣接したサイズのセルを追加するステップを有する。
【０１１４】
本発明は、新しい機能、異なるトランジスタトポロジ、異なるサイズ、およびセルテンプレートのバリエーションを開発する利点を有する。他のアプローチにおける異なるサイズが、既存セルサイズの補間によって生成され、それは、異なるサイズが異なるトポロジを有するときに多くの不正確さを追加し得る。本明細書に記載される本発明はこの課題を有しておらず、かつ同じ駆動強度を伴う１つより多くのトポロジの使用もサポートする。
【０１１５】
本発明は、セルが最初にライブラリに追加され、その後マッピングツールが、どのセルが使用されるのが興味深いかを決定するので、より強力である。本明細書で提示される発明は、仮想セルについての事前演算されたデータ（初期特性および領域のプレビュー）を用いる可能性を有することによって大きな組のセルを開発し、それは本明細書で提示される発明をより高速にする。
【０１１６】
その他のポイントは、ライブラリ内にセルを挿入するときに、同一性（セルの固有化（uniquify））によって、セルをグループ化する必要がないことであり、セルは仮想ライブラリ（追加的な利用可能な機能の組）において、状態が類似の場合にマッピングツールが同じセルサイズを選択できるというサイズの選択とともにすでに利用可能であるが、この発明の文脈においては、これは取るに足らない問題である。本明細書で提示される発明は、ライブラリに異なる特色の新しいセルを追加することによって推測的に生成される新しい機能のタイプを制御できるようにし、そして後続のステップにおいてセルの量を制御する。これは、セルが状況を満足するように生成され、類似のすでに存在するセルが代わりに使用され得るかどうかを理解するための検証ステップを有するようなアプローチとは、基本的に異なる。
【０１１７】
その他のアプローチは、新しく生成されたセルの数を制御するような特徴を有していない。本発明の他の利点は、セルの使用の状況（たとえば、配置）が若干変化した場合に、最終のタイミングクロージャおよび最適化を可能とする隣接するサイズのセルを追加するステップである。
【０１１８】
本発明は、設計を考慮し、設計を最適化するための所望のセル仕様を自動的に生成する。他のアプローチは、設計者が自分自身でセル仕様を生成するように要求されるので、このタスクを達成するために設計者に何の援助も提供しない。
【０１１９】
ここで提示された発明の用途例として、図１１に示される回路を考える。それは通常の標準的なセルライブラリを用いることによって生成された回路である。そのため、この回路は、反転器１１００と、ＮＯＲ２（Ｕ２７）と、１つの反転された入力を有するＮＯＲ３（Ｕ２６）と、１つの反転された入力を有するＮＡＮＤ３（Ｕ２４）と、ＯＡＩ２１（Ｕ２２）と、ＯＡＩ３１（Ｕ１８）と、ＡＯＩ２１（Ｕ２０）と、ＯＡＩ２２（Ｕ１９）とを含む、図に列挙されたセルを用いる。ＯＡＩは、オア−アンド−反転ゲート（OR-AND-INVERT gate）である。ＡＯＩは、アンド−オア−反転ゲート（AND-OR-INVERT）である。これらは、最も一般的なライブラリにおいて見出され得るセルである。回路が１１のセルインスタンスを有していることに注意することが重要である。
【０１２０】
この特定の例について、たとえばトランジスタの直列および並列接続から成る論理ゲートにおいて、制限された数の直列的に接続されたＰＭＯＳおよびＮＭＯＳトランジスタを有する組合セルを用いることによって生じるライブラリのように、強化されたライブラリが用いられ得る。このアプローチにおいて、仮想ライブラリまたは物理的ライブラリが利用可能であり、またはセル生成器ツールが追加されるべきセルのためのコスト推定を提供し得る。
【０１２１】
最大４つの直列のトランジスタである、トランジスタの直列および並列の組合せを用い、かつセルの入出力の取り消し（negation）を許容することによって、図１２の回路が得られる。トランジスタの数が４つまで低減されていることに注目すべきである。たとえ、図１２のセルが図１１のものより大きいという可能性があったとしても、より少ない数のセルインスタンスが、より大きいセルの使用を補償することに気づくことが重要である。確かに、図１２の回路は、実現のためにより少ないトランジスタを要求する。
【０１２２】
さらに、図１２の回路は、より少ないセルの出力がバッファリングされる必要があるので、より効率的なサイズとされ得る。このステップにおける追加的で許容可能な機能の組は、前述されそして以降で繰り返されるように、明示的または非明示的に定義され得ることに注意すべきである。
【０１２３】
追加的に許容可能な論理機能の組は、単一のセルとしてみなされ得る機能のリストを定義する。このフローにおいて、新しい許容可能な機能は、ライブラリに追加されるべき候補セルを生成するために用いられ、したがって、利用可能なセルの組を強化する。追加的に許容可能な機能の組は、非明示的または明示的に、あるいはその２つの組合せ（非明示的および明示的定義）によってでさえも記述され得る。
【０１２４】
ライブラリの非明示的定義のいくつかの異なる例が以下に与えられる。（以下およびその他のところでの）本用途における例は、本発明のいくつかの側面を例示するために提供され、これらの側面は、必要に応じてまたは特定の用途のための要求に応じて、適合および修正され得る。本発明の広さは、与えられた特定の例に多少なりとも限定または制限されるべきではない。
【０１２５】
入力数による（非明示的なライブラリ定義についての）例１。入力数によってライブラリを定義する場合には、機能は、その入力数に従って容認されまたは廃棄され得る。容認および拒否されるべき入力数についての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【０１２６】
直列並列の実施形態における直列および並列のトランジスタの数による（非明示的なライブラリ定義についての）例２。直列および並列のトランジスタの数によってライブラリを定義する場合には、機能は、直列および並列のトランジスタの数に従って容認されまたは廃棄され得る。容認および拒否されるべき直列および並列のトランジスタの数についての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【０１２７】
ＢＤＤ高さによる（非明示的なライブラリ定義についての）例３。ＢＤＤ高さによってライブラリを定義する場合には、機能は、その機能を表すＢＤＤの高さに従って容認されまたは廃棄され得る。容認および拒否されるべきＢＤＤの高さについての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【０１２８】
一般的なスイッチ実行例において達成可能なトランジスタチェーンの最小（最悪の場合）の長さによる（非明示的なライブラリ定義についての）例４。これは、直列トランジスタの数における「下限」である。トランジスタチェーンの最小（最悪の場合）の達成可能な長さによってライブラリを定義する場合には、機能は、トランジスタチェーンの最小（最悪の場合）の達成可能な長さに従って容認されまたは廃棄され得る。容認および拒否されるべきトランジスタチェーンの最小（最悪の場合）の達成可能な長さについての特定値は、ライブラリにおける機能を非明示的に定めるパラメータである。
【０１２９】
（オリジナルのライブラリにおいてセルの関連を生成することを含む）オリジナルのライブラリにおいて提示される機能を伴うこれらの例からの機能の組合せを含む、上記４つの方法の組合せの、（非明示的なライブラリ定義についての）例５。非明示的または明示的に定義された各セルの機能について、異なるトランジスタトポロジ、異なるトランジスタのサイズ、および異なる駆動強度を含むセルのバリエーションが生成され得ることに注意すべきである。これらの方法は例示のためだけに提示され、本発明はここで例示された方法を用いる事に制限されないことに注意すべきである。
【０１３０】
明示的な定義は、追加的に許容可能な論理機能のセットの明示的なリスティングを行うことである。これは、本方法の実行のために適した形式における追加的に利用可能な機能のリストを明示的に提供することである。
【０１３１】
セルを減少するためにライブラリをフィルタリングするステップが、このステップからもたらされる回路を提示する図１３に図示される。ここで提示された例はより大きな回路の一部であり、図１２の出力信号ｎ０を生成するセルは、より大きな回路の範囲における非常にわずかなインスタンスしか有していないことを考慮すべきである。そして、この特定のセルは、ライブラリにおいて禁止され、より多くの数のインスタンスを有するセルに再マッピングされ得る。
【０１３２】
これは、ｎ０を生成するセルが図１３の回路をもたらし、範囲を定義するより大きな回路の他のサブ回路における多数のインスタンスを有する２つのインスタンスに置換される。このプロセスは、各セルが最初のマッピングにおいて有するインスタンスの数の情報を考慮するとともに、ライブラリから削除されるときに顕著なコスト増加を意味することのないわずかなインスタンスを伴うセルを削除する目標を有する。
【０１３３】
ライブラリ強化プロセスのための次のステップは、使用される各セルが、十分な数のサイズにおいて利用可能でなくてはならないことを考慮する。このように、（Ｘ１、Ｘ１．５、Ｘ２、Ｘ４などの）サイズ変形体が、ライブラリを構成するための選択された各セルのために、ライブラリに追加される。これは、配置およびルーティングツールが効果的に最終のタイミングクロージャおよび最適化を実行できるように用いられる。
【０１３４】
一旦サイズが追加されると、新しいテンプレートがライブラリのために定義され得る。セルおよびインスタンスの数が既知であるので、全体の実行コストを低減するテンプレートを選択するために、ライブラリ生成ツールＡＰＩを用いて、異なるテンプレートのためのセルの特性について調べることが可能である。
【０１３５】
図１４Ａおよび１４Ｂは、同じ論理機能についての２つの異なるテンプレートの用途を例示する。セルは、９つのトラックのテンプレート（図１４Ａ）および７つのトラックのテンプレート（図１４Ｂ）に対して、異なるように適合することに注目すべきである。この特定の場合において、７つのトラックテンプレートがより小さな領域をもたらすことに気づくことができる。この状態はセルごとに変化し、重み付けされた決定がセルインスタンスの数または他の基準に基づいて採用される。いくつかのセルサイズはこのプロセスの間に変化され使用のヒストグラムを変化するので、このステップは、最終のタイミングクロージャの後に再び適用され得る。
【０１３６】
本発明のこの説明は、例示および説明の目的のために提示された。それは、網羅的または説明された詳細な形式に本発明を限定することを意図したものではなく、多くの修正およびバリエーションが、上記の教示の範囲において可能である。実施形態は、本発明の原理およびその実質的な用途を最もよく説明するために選択され、かつ説明された。この説明は、他の当業者が、様々な実施形態においておよび特定の使用に対して適合するような様々な修正とともに本発明を最もよく利用しかつ実現できるようにする。本発明の範囲は、以下の特許請求の範囲によって定義される。
【図１】
2011525261.tif 000003
【図２】
2011525261.tif 000004
【図４】
2011525261.tif 000005
【図５】
2011525261.tif 000006
【図１０】
2011525261.tif 000007
【図１１】
2011525261.tif 000008
【図１２】
2011525261.tif 000009
【図１３】
2011525261.tif 000010
【図１４Ａ】
2011525261.tif 000011
【図１４Ｂ】
2011525261.tif 000012
【図３】
2011525261.tif 000013
【図６】
2011525261.tif 000014
【図７】
2011525261.tif 000015
【図８】
2011525261.tif 000016
【図９】
2011525261.tif 000017
【国際調査報告】
2011525261.tif 000018
2011525261.tif 000019