(57)【要約】【課題】  回路合成中における最小コストで正確なタイミングのハードウェアの設計方法を提供する。【解決手段】  回路設計プロセス中に回路のタイミング要件を考慮する方法であって、クロックサイクル時間制約条件を受け取ること、マクロセルライブラリ（２０４）からハードウェア資源の遅延特性を受け取ること、オペレーションと、該オペレーションに関連付けられた選択肢のクロックサイクルと、該オペレーションに関連付けられた選択肢のハードウェア資源（２０２）とを受け取ること、およびプログラムグラフのハードウェア構造表現を使用して、タイミング制約条件に関する前記受け取った選択肢の有効性を判断すること、を含む方法とする。
2006502500.tif 000002
【特許請求の範囲】
【請求項１】
回路設計プロセス中に回路のタイミング要件を満たす方法であって、
クロックサイクル時間制約条件を受け取るステップと、
マクロセルライブラリ（２０４）からハードウェア資源の遅延特性を受け取るステップと、
オペレーションと、該オペレーションに関連付けられた選択肢のクロックサイクルと、該オペレーションに関連付けられた選択肢のハードウェア資源（２０２）とを受け取るステップと、
プログラムグラフのハードウェア構造表現を使用して、タイミング制約条件に関する前記受け取った選択肢の有効性を判断するステップと、
を含む方法。
【請求項２】
前記回路設計プロセスに前記有効性を報告すること、
をさらに含む、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項３】
前記回路設計プロセスはスケジューラ／バインダである、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項４】
前記ハードウェア構造表現は、永続的であり、新たな選択肢を受け取るごとに追加的に更新される、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項５】
前記有効性の判断は、タイミング解析を使用して行われる、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項６】
前記タイミング解析は、前記ハードウェア構造表現に対する更新の結果としてタイミングが変更された、前記ハードウェア構造表現の部分に対して行われる、請求項５に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項７】
前記遅延特性関数のパラメータは、前記ハードウェア構造表現を使用して見積もられる、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項８】
前記クロックサイクル時間制約条件はクロック周期である、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項９】
前記クロックサイクル時間制約条件はクロック周波数である、請求項１に記載の回路設計プロセス中に回路のタイミング要件を満たす方法。
【請求項１０】
コンピュータ可読媒体に保存される、回路設計プロセス中に回路のタイミング要件を満たすコンピュータ・プログラムであって、
クロックサイクル時間制約条件を受け取るコンピュータ・コードと、
マクロセルライブラリ（２０４）からハードウェア資源の遅延特性を受け取るコンピュータ・コードと、
オペレーションと、該オペレーションに関連付けられた選択肢のクロックサイクルと、該オペレーションに関連付けられた選択肢のハードウェア資源（２０２）とを受け取るコンピュータ・コードと、
プログラムグラフのハードウェア構造表現を使用して、タイミング制約条件に関する前記受け取った選択肢の有効性を判断するコンピュータ・コードと、
を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願のクロスリファレンス］
本出願は、本発明の譲受人に譲渡された「SYSTEM FOR AND METHOD OF CLOCK CYCLE-TIME ANALYSIS USING MODE-SLICING MECHANISM」という発明の名称の米国特許出願第［代理人整理番号第１００２００５５９−１号］、および、「METHOD OF USING CLOCK CYCLE-TIME IN DETERMINING LOOP SCHEDULES DURING CIRCUIT DESIGN」という発明の名称の米国特許出願第［代理人整理番号第１００２００５６０−１号］に関連するものである。これらの出願は本出願と同時に出願され、この引用によって、それらの開示は、全内容が参照により本明細書に援用される。
【０００２】
［発明の分野］
本発明は、デジタル回路合成を対象にし、特に、タイミング解析の検討を組み込むことによって、ハイレベル合成により生成されたデジタル回路の品質を改善することを対象にする。
【背景技術】
【０００３】
［背景］
技術の継続的な進歩および生産コストの削減が組み合わさることによって、高度なデジタル回路を実装または使用する電子デバイスが急増している。これらの電子デバイスには、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルド計算デバイス等の従来型の電子デバイスだけでなく、携帯電話、プリンタ、デジタルカメラ、ファクシミリ装置、家庭用およびビジネス用の電化製品等の従来型でない電子デバイスの双方が含まれる。なお、ハンドヘルド計算デバイスは、携帯情報端末（ＰＤＡ）やハンドヘルドコンピュータ等である。これらの電子デバイスに含まれるデジタル回路は、その電子デバイスの基本機能を提供するのに使用することもできるし、望ましい特徴を追加して提供するのに使用することもできる。
【０００４】
これらの電子デバイスのそれぞれについて、そのデバイスの全体的なコストを削減することが望ましい。このコスト削減は、デバイスに実装されたデジタル回路のコストを削減することによって達成することができる。デジタル回路のコストは、各デジタル回路の製造に使用されるシリコンの量を削減することによって削減することができる。しかしながら、デジタル回路がこれまで通りに適切な機能および性能の要件を満たすことが重要である。性能要件は、スループット（クロックサイクルごとに実行されるタスク数）、待ち時間（単一のタスクを完了するためのクロックサイクル数）、およびクロック速度といったいくつかのメトリックの組み合わせとして表される。
【０００５】
機能および性能の要件が与えられると、合成手法は、通常、その要求された機能を有し、かつ、コストが最小で、それにもかかわらず性能要件を満たすデジタル回路の設計を試みる。図１は、デジタル回路のハイレベル合成の一般的なプロセスのブロック図である。図示するように、設計プロセスは、入力として、アプリケーションの機能仕様１０１および所望の性能要件１０２を取り込み、多数のステップを実行する。この多数のステップは、解析、変換、および最適化ステップ１０３、記憶決定ステップ１０４、機能ユニット割り当てステップ１０５、オペレーションスケジューリングおよび資源バインドステップ１０６、およびハードウェア合成ステップ１０７を含む。その後、回路の構造的レジスタ転送言語（ＲＴＬ）記述が出力として生成される（１０８）。
【０００６】
機能仕様入力１０１は、アプリケーションの振る舞いを表すハイレベルな仕様である。この機能仕様入力は、通常、ハイレベル合成プロセスが理解する言語による実行可能プログラムである。この機能仕様入力がテキスト文書である場合、合成のために、同等の実行可能コードを記述することが必要な場合がある。性能要件１０２は、合成されるデジタル回路に必要なスループット、待ち時間、クロック速度等を表す。
【０００７】
所望の性能を満たす機会およびコスト削減の機会を示すために、プログラムはステップ１０３で解析および変換される。これは、タスクレベル、インターレーション（interation）レベル、および命令レベルの並列性を利用する技法、ならびに、共通の部分式の削除、デッドコードの削除等のような従来の他のコンパイラの最適化を含む。
【０００８】
ステップ１０４において、プログラムの変数の記憶が決定される。プログラムに含まれるデータ構造体は、グローバルメモリにマッピングすることができる一方、それ以外のものは、ローカルメモリまたは場合によっては内部レジスタにマッピングすることができる。
【０００９】
ステップ１０５において、変換され最適化されたプログラムのオペレーションに対して、機能ユニットが割り当てられる。プログラムオペレーションには、加算、減算、乗算、除算等が含まれ得るが、これらに限定されるものではない。機能ユニット（ＦＵ）は、加算器、乗算器、ロード／ストアユニット、類似のコンポーネント等のコンポーネントを指す。これらの機能ユニットのそれぞれは、１つまたは２つ以上のタイプのオペレーションを実行することができる。機能ユニットの割り当てには、プログラムグラフのオペレーションを実行でき、かつ、要求された性能を満たすことができる最小コストの１組のハードウェアコンポーネントを割り当てるプロセスが必要とされる。例えば、加算、減算、乗算、メモリロード、およびメモリストアを有するプログラムが与えられると、ステップ１０５は、２つの乗加算器（multiply-adder）、３つの減算器、および１つのロード／ストア機能ユニットを割り当てることができる。
【００１０】
オペレーションのスケジューリングおよび資源のバインドは、ステップ１０６で行われる。オペレーションのスケジューリングには、各オペレーションの開始を特定のクロックサイクルに割り当てることが必要とされる。例えば、加算オペレーションは、クロックサイクル番号２３で実行を開始するように割り当てることができる。資源のバインドには、各オペレーションにつき、その実行に使用される特定の機能を選択することが必要とされる。例えば、機能ユニットを割り当てるステップ１０５では、２つの加算器ＡＤＤＥＲ１およびＡＤＤＥＲ２を回路設計に含める必要があるとの判断が行われることがある。資源のバインドステップ１０６では、特定の加算オペレーションをＡＤＤＥＲ１にバインドすることができる。すなわち、特定の加算オペレーションは、ＡＤＤＥＲ１で実行されるように割り当てられる。
【００１１】
通常、スケジューリングされていないオペレーション（クロックサイクルおよび機能ユニットに関連付けられていないオペレーション）は、事前に割り当てられるか、または、スケジューリング中に動的に決定されるかのいずれかの或る順序で対処される。スケジューリングされていないオペレーションが選択されると、このオペレーションのスケジューリングおよびバインドを行うために、いくつかの選択肢が検討される。選択肢とは、このオペレーションのスケジューリングおよびバインドを行うことができる特定のクロックサイクルおよび機能ユニットを指す。スケジューリングされていないオペレーションの選択肢は、このオペレーションの実行に利用可能なクロックサイクルおよび機能ユニットを決定することによって導き出される。例えば、加算器を必要とするオペレーションに対して、３つの可能なクロックサイクルおよび２つの可能な加算器機能ユニットがある場合、そのオペレーションをスケジューリングするために６つの選択肢が解析されることになる。また、スケジューラ／バインダは、依存性の問題および／または資源コンフリクトの問題のために、いくつかの前の決定を取り消すこともできる。スケジューリングおよびバインドのアルゴリズムの一例としては、B. R. Rauの「ITERATIVE MODULO SCHEDULING」, International Journal of Parallel Processing, vol. 24, pp. 3-64, 1996（非特許文献１）の「Ａ」の開示を参照されたい。この引用によって、この開示は、参照により本明細書に援用される。この文書は、Hewlett-Packard社から提供されるHP Labs Tech. Report HPL-94-115としても入手可能である。
【００１２】
ハードウェア合成ステップ１０７は、オペレーションのスケジューリングおよび資源のバインドのステップ１０６の完了後に行われる。ハードウェア合成は、データ値を保持するレジスタを割り当てるプロセス、ならびに、ハードウェア機能ユニットを互いに、および、割り当てられた記憶素子から／へ接続するプロセスを含む。これらの相互接続は、プログラムのデータフロー、ならびに、前のステップで行われたスケジューリングおよびバインドの決定に基づく。
【００１３】
最後に、出力１０９として、回路の構造記述が生成される。このＲＴＬ回路記述は、その後、後続の論理合成ステップ、ならびに、配置および配線ステップを通じて利用され、最終的な回路を生成することができる。
【００１４】
ハイレベル合成プロセスは、図１には図示しない他のステップを含むことができる。また、解析、変換、および最適化、記憶の決定、機能ユニットの割り当て、オペレーションのスケジューリングおよび資源のバインド、ならびにハードウェア合成を行うハイレベル合成プロセスは、図１に示すシーケンスで連続的に行うこともできるし、異なるシーケンスで連続的に行うこともできるし、これらのステップのいくつかは、組み合わせて並列に実行することもできる。プロセス全体のいくつかのステップを実行する現在利用可能なハイレベル合成の一例はＰＩＣＯ−ＮＰＡである。１９９９年８月２０日に出願された「PROGRAMMATIC SYNTHESIS OF PROCESSOR ELEMENT ARRAYS」という発明の名称の米国特許出願第０９／３７８，２９８号の図１３および第５節を参照されたい。この米国特許出願の開示は、この引用によって、参照により本明細書に援用される。
【００１５】
上述したように、オペレーションのスケジューリングおよび資源のバインドのステップの総合的な目的は、指定された性能要件を満たし、かつ、ハードウェアのコストを最小にするように、特定のクロックサイクルおよび機能ユニットをプログラムの各オペレーションに関連付けることである。待ち時間およびスループットの性能要件を満たすことに加えて、結果のハードウェアが、指定されたクロック周波数によって回路パスに課されたタイミング制約条件を満たすことを確保することも重要である。回路パスは、主入力からラッチ／レジスタへの組み合わせパス、または、或るラッチ／レジスタから別のラッチ／レジスタへの組み合わせパス、または、或るラッチ／レジスタから主出力への組み合わせパス、または、主入力から主出力への組み合わせパスである。
【特許文献１】米国特許第６,３２４,６７８号
【非特許文献１】B. R. Rau著「ITERATIVE MODULO SCHEDULING」, International Journal of Parallel Processing, vol. 24, pp. 3-64, 1996
【非特許文献２】KUEHLMANN A他, 「Timing analysis in high-level synthesis」, 1992年11月8-12日, PROCEEDINGS OF THE IEEE/ACM INTERNATIONAL CONFERENCE ON COMPUTER AIDED DESIGN (ICCAD). SANTA CLARA, LOS ALAMITOS, IEEE COMP.SOC.PRESS, US, vol. CONF.10, p349-354
【非特許文献３】NESTOR J A他「SALSA: a new approach to scheduling with timing constraints」, 1990年11月11-15日, PROCEEDINGS OF THE INTERNATIONAL CONFERENCE ON COMPUTER AIDED DESIGN. SANTA CLARA, LOS ALAMITOS, IEEE COMP.SOC.PRESS, US, vol.CONF.8, p262-265
【非特許文献４】LY T A他「Applying simulated evolution to scheduling in high level synthesis」1990年8月12-14日, CIRCUITS AND SYSTEMS, PROCEEDINGS OF THE 33RD MIDWEST SYMPOSIUM ON CALGARY, ALTA., CANADA, NEW YORK, NY, USA, IEEE, US, p172-175
【発明の開示】
【課題を解決するための手段】
【００１６】
［発明の概要］
本発明は、回路設計プロセス中に回路のタイミング要件を考慮する方法を対象とし、クロックサイクル時間制約条件を受け取ること、マクロセルライブラリからハードウェア資源の遅延特性を受け取ること、オペレーションと、該オペレーションに関連付けられた選択肢のクロックサイクルと、該オペレーションに関連付けられた選択肢のハードウェア資源とを受け取ること、およびプログラムグラフのハードウェア構造表現を使用して、タイミング制約条件に関する前記受け取った選択肢の有効性を判断すること、を含む方法。
【発明を実施するための最良の形態】
【００１７】
［詳細な説明］
図２は、スケジューリングおよびバインドによって所与のクロック周波数要件を満たすハードウェアを生成することができるメカニズムのフロー図を示している。本発明であるタイミングトラッカ２０５は、スケジューラ／バインダ２０１と共にこの目的を達成するために機能する。スケジューラ／バインダ２０１は、入力２０２としてタイミングトラッカ２０５に次のもの、すなわち、オペレーションと、順序対<クロックサイクル，機能ユニット>として表される、選択肢のクロックサイクルおよび選択肢の機能ユニットを含む選択肢を提供する。
【００１８】
また、タイミングトラッカ２０５は、クロック周期仕様２０３も受け取り、マクロセルライブラリ２０４にアクセスする。マクロセルライブラリ２０４は、すべてのハードウェア資源（機能ユニット、レジスタ、マルチプレクサ、および他の論理スイッチング素子）の遅延を収容する。これらのマクロセルのそれぞれに関連付けられた遅延は、Δｉｎｉ、Δｏｕｔｉ、Δｔｈｒｕｉ，ｊによって事前に特徴付けられる。Δｉｎｉは、マクロセルの主入力ｉからマクロセル内部のラッチへの最長の組み合わせパスの遅延を指し、主入力の遷移時間の関数である。このようなパスが存在しない場合（例えば、組み合わせマクロセルの場合）、Δｉｎｉは無関係となる。Δｏｕｔｉは、マクロセル内部のラッチからマクロセルの主出力ｉへの最長の組み合わせパスの遅延を指し、主出力の容量性負荷の関数である。このようなパスが存在しない場合（例えば、組み合わせマクロセルの場合）、Δｏｕｔｉは無関係となる。Δｔｈｒｕｉ，ｊは、マクロセルの主入力ｉからマクロセルの主出力ｊへの最長の組み合わせパスの遅延を指し、主入力の遷移時間および主出力の容量性負荷の関数である。このようなパスが存在しない場合（例えば、順序マクロセルの場合）、Δｔｈｒｕｉ，ｊは無関係となる。これらのマクロセルの遅延Δｉｎｉ、Δｏｕｔｉ、およびΔｔｈｒｕｉ，ｊは、幅等のマクロセル特有のパラメータの関数となることもある。さらに、これらの遅延は、例えば、最も高速な実施、最小の実施等のマクロセルの特定なハードウェアの実施に対応し、その選択は外部から制御することができる。
【００１９】
タイミングトラッカ２０５は、スケジューリングおよびバインド中に定義されるので、その部分ハードウェア構造の内部表現を使用する。ハードウェアの構造表現（ボックス２０６）は、ＦＵ間のデータフローがレジスタにバインドされ、対応する相互接続が合成される場合には、粒度を細かくすることもできるし、データフローが生産側ＦＵと消費側ＦＵとの間の仮想リンクとしてモデル化される場合には、粒度を粗くすることができる。粒度の粗い構造表現の例を図３に示す。図３では、ＦＵ１からＦＵ３へのデータフローが、ワイヤ３０１、レジスタ３０２、およびワイヤ３０３としてモデル化され、ＦＵ１からＦＵ６へのデータフローが、ワイヤ３０４としてモデル化されている。デジタル回路の構造表現に含まれる詳細のレベルは、外部から制御することができる。タイミングトラッカ２０５は、このようなすべての可能な構造表現を扱う。
【００２０】
各スケジューリング／バインドステップにおいて、タイミングトラッカ２０５は、入力２０２の新たな値を受け取る。タイミングトラッカ２０５は、選択肢によって与えられたオペレーションのスケジューリングおよびバインドが、前のスケジューリングおよびバインドの判断との関連でクロック周波数要件を満たすかどうか判断するための解析を行う。ステップ２０７は、入力２０２で与えられたオペレーションが入力２０２で与えられた選択肢に配置されることになると、フロー依存コンフリクト（flow dependency conflict）を引き起こす可能性のある、スケジューリングされたすべてのオペレーションを特定する。所与の選択肢にオペレーションを配置することは、そのオペレーションが、その選択肢に対応するクロックサイクルで実行されるようにスケジューリングされ、その選択肢に対応するＦＵで実行されることを意味する。フロー依存コンフリクトは、あるオペレーションがデータを、このデータが他のオペレーションにより消費された後に生成するときに、引き起こされる。
【００２１】
ステップ２０８において、指令がハードウェア構造表現モジュール２０６に発行され、前に行われたスケジューリングおよびバインドの判断、入力２０２、およびステップ２０７で特定されたあらゆるフロー依存コンフリクトオペレーションに基づいて、ハードウェア構造が計算される。タイミングトラッカ２０５が入力２０２の新たな値を受け取るごとに、構造表現を最初から構築することもできるし、スケジューリング／バインドプロセス中に、構造を永続的なものとして維持し、ステップ２０８が起動されるごと、すなわち、有効性の判断が行われるごとに、構造を追加的に更新することもできる。タイミングトラッカは、構造表現を維持するこのようなすべての可能性を扱う。ハードウェア構造に対する更新が追加的に行われる実施の形態では、ハードウェア構造表現は、選択肢によって与えられたクロックサイクルにおいて、および、選択肢によって与えられたＦＵで、このオペレーションをスケジューリングすることによって導入される、追加されたデータフロー関係で更新される。
【００２２】
図３は、タイミングトラッカが、例えばＯＰ１といったオペレーションが、例えば<クロックサイクル＝１７，機能ユニット＝ＦＵ１>といった指定された選択肢に対して有効であると確認されることを指定する入力２０２（図２）を受け取った時の内部ハードウェア構造表現に対する更新を示している。ここで、内部ハードウェア構造表現を更新した結果として、（ボールド体で示すような）ワイヤ３０４、３０６、および３０７が加えられ、機能ユニットＦＵ１のクロックサイクル１７においてＯＰ１をスケジューリングする結果としてバインドされるデータフロー関係をモデル化する。
【００２３】
ステップ２０９において、タイミング解析は、計算された構造表現に対して実行される。構造表現が粗い粒度である（すなわち、記憶および相互接続が正確にモデル化されない）場合、タイミング解析を実行するために、マクロセル遅延関数（Δｉｎｉ、Δｏｕｔｉ、Δｔｈｒｕｉ，ｊ）が必要とするパラメータは、近似する必要がある。これらのパラメータには、ファンイン、ファンアウト容量、および幅が含まれる。ファンインは、或るＦＵまたはレジスタから別のレジスタまたはＦＵへデータ値を導くのに必要な各スイッチング論理素子の入力数（例えば、マルチプレクサの入力数）を指す。ファンアウト容量は、すべてのＦＵ、レジスタ、および論理素子の出力の負荷容量を指す。これらの近似は、これらのパラメータの予測値に基づいて、スケジューリングおよびバインドの前に行うこともできるし、スケジューリングおよびバインド中に行うこともできる。後者の場合、これらの値は、構造が更新されるごとに再計算される。これらのシナリオはそれぞれ、本発明の範囲内にある。これらのパラメータは、次に、マクロセルライブラリの各資源に関連付けられたΔｉｎｉ関数、Δｏｕｔｉ関数、Δｔｈｒｕｉ，ｊ関数を使用したハードウェア構造のすべてのハードウェア資源の正確な遅延値を導出するのに使用される。タイミング解析は、これらの遅延値に基づきハードウェア構造に対して行われる。
【００２４】
タイミング解析ステップ２０９は、ハードウェア構造全体に対して行うこともできるし、追加的に、すなわち、構造の更新の結果タイミングが影響を受けるハードウェア構造の部分に対してのみ行うこともできる。例えば、図３では、上述した構造の更新の結果として、タイミングが影響を受けるハードウェア構造の部分を領域３０５内として示す。領域３０５は、ファンイン、ファンアウト容量、または幅が構造の更新によって変更されたあらゆるハードウェア資源を含み、その結果として、タイミングが変化したあらゆる回路パスに沿ったすべてのハードウェア資源を含む。本発明は、非追加的および追加的の双方で実行されたタイミング解析ステップ２０９をカバーする。この状況において、タイミング解析は、あらゆる回路パスがタイミング制約条件を満たすことをチェックするプロセスを指す。あらゆるタイミング解析アルゴリズムを使用でき、例えば、「SYSTEM FOR AND METHOD OF CLOCK CYCLE-TIME ANALYSIS USING MODE-SLICING MECHANISM」という発明の名称の米国特許出願第［代理人整理番号第１００１１０５５９−１号］に開示されたタイミング解析等を使用できることが理解されよう。この米国特許出願は、本出願と同時に出願され、参照によりその全内容が本明細書に援用される。
【００２５】
図２を再び参照して、ステップ２１０において、タイミング制約条件がステップ２０９で満たされた場合には、真信号がステップ２１１でスケジューラ／バインダ２０１に対して生成される。そうでない場合には、偽信号がステップ２１２で生成され、スケジューラ／バインダ２０１に送出される。本発明の一実施の形態では、ステップ２１０で実行されたタイミング制約条件を満たすかどうかのチェックの結果として、ブールフラグが真（ステップ２１１）または偽（ステップ２１２）に設定される。いずれの場合にも、ステップ２１３において、タイミングトラッカ２０５が新たな入力２０２に対して起動された時にハードウェア構造表現が有していた状態にハードウェア構造表現を戻す指令が、ハードウェア構造表現モジュール２０６に発行される。次に、タイミングトラッカは、スケジューラ／バインダ２０１に制御を戻す。
【００２６】
本発明の別の実施の形態は、クロック周波数によって課されたタイミング制約条件を満たしつつ、デジタル回路のコストを最小にするのに使用することができる。図４は、設計対象の電子デバイスのタイミング制約条件を満たすデジタル回路の最小コスト選択肢を選択するメカニズムのフロー図である。図２は、タイミングを正確するためにオペレーション／選択肢の選択の有効性を確認する方法およびシステムを説明するのに対して、本発明のこの実施の形態は、全体的な回路コストも削減する。スケジューラ／バインダ４０１は、スケジューラ／バインダ４０１がコストパーフォーマンストラッカ４０３と連係して、使用されるシリコンの量を最小にすることにより全体的なデジタル回路のコストを削減するという相違はあるが、本質的に、図２のスケジューラ／バインダ２０１と同様である。コストパーフォーマンストラッカ４０３は、スケジューラ／バインダ４０１と共に、この目的を達成するように機能する。
【００２７】
スケジューラ／バインダ４０１は、入力２０２として、コストパーフォーマンストラッカ４０３に次のもの、すなわち、オペレーション、および、選択肢のクロックサイクルと選択肢の機能ユニットを含む選択肢を提供する。
【００２８】
また、コストパーフォーマンストラッカモジュール４０３は、クロック周期仕様２０３も受け取り、マクロセルライブラリ４０２にアクセスする。マクロセルライブラリ４０２は、すべてのハードウェア資源（機能ユニット、レジスタ、マルチプレクサ、および他の論理スイッチング素子）の面積−遅延特性を収容する。この実施の形態では、マクロセルライブラリのマクロセルは、異なる面積および遅延を有する１組のハードウェア実施態様を表す。基本的に、この実施の形態のマクロセルは、上述した実施の形態におけるような特定のハードウェア実施態様に対応せず、その代わり、１系統のハードウェア実施態様に対応する。この実施の形態では、選択されたどの実施態様の遅延も、幅、入力遷移時間、容量性出力負荷等の他のパラメータに加えて、選択された実施態様の面積に依存する。同様に、選択されたどの実施態様の面積も、選択された実施態様の遅延に依存する。この状況において、面積は、ハードウェア資源に含まれるシリコンの量に比例し、したがって、ハードウェア資源のコストに関連付けられる。
【００２９】
ハードウェア資源のシリコンの量が増加するにつれて、遅延は減少するが、ハードウェア資源のコストは増加する。例えば、加算器の遅延が減少するにつれて、シリコンの面積は増加し、関連したコストも増加する。これらの面積−遅延特性は、通常、面積遅延トレードオフ曲線として表される。このトレードオフ曲線は、いくつかの方法で表すことができ、面積−遅延値のリスト（タプル）または閉形公式（closed-form formula）として表すことができる。本発明は、これらの表現のいずれも扱うことができる。また、内部ラッチ（例えば、パイプライン化されたＦＵ）を有するマクロセルの場合、そのマクロセルの可能な各マイクロアーキテクチャ上の選択（例えば、加算器のリップルキャリー対キャリールックアヘッド対キャリー選択）ごとに異なる面積−遅延曲線が存在する。
【００３０】
図５は、（ｉ）マクロセル５０１ならびに面積−遅延曲線５０５、５０６、および５０７として表されたその面積−遅延特性と、（ｉｉ）マクロセル５０８および面積−遅延曲線５１０として表されたその面積−遅延特性との２つの例を示している。ここで、「Ａｉｎ」５０２は、マクロセルの入力から、その入力から開始して当該マクロセル内で最初に遭遇するパイプラインレジスタセットまでのすべての組み合わせ論理回路から成る、当該マクロセルの部分の面積を指す。その対応する面積−遅延曲線を５０５によって示す。「Ａｏｕｔ」５０４は、マクロセルの出力から逆に戻って開始して当該マクロセル内で最初に遭遇するパイプラインレジスタセット、および、これらのレジスタと当該マクロセルの出力との間のすべての組み合わせ論理回路から成る、当該マクロセルの部分の面積を指す。その対応する面積−遅延曲線を５０７によって示す。「Ａｐｉｐｅ」５０３は、最初のパイプラインレジスタセットおよびすべての中間のパイプラインレジスタセット、ならびに、すべての介在する組み合わせ論理回路から成る、マクロセルの部分の面積を指す。その対応する面積−遅延曲線を５０６によって示す。組み合わせマクロセル５０８の例では、「Ａ」５０９は総面積を指す。その対応する面積−遅延曲線を５１０によって示す。
【００３１】
図４を参照して、各スケジューリング／バインドステップにおいて、コストパーフォーマンストラッカ４０３は、入力２０２の新たな値を受け取る。コストパーフォーマンストラッカ４０３は、クロック周波数要件を満たしつつも、前のスケジューリングおよびバインドの判断との関連で、選択肢によって与えられたオペレーションをスケジューリングおよびバインドした結果生じたハードウェアの比較コストを判断する解析を行う。入力２０２の新たな値を受け取ると、ステップ２０７、および、それに続いてステップ２０８が実行される。これらのステップは、図２との関連ですでに説明した。
【００３２】
次に、ステップ４０４は、指定されたクロック周期入力２０３を満たすような、計算されたハードウェア構造表現の最小の相対コストを決定する。この決定は、いくつかの方法で行うことができる。
【００３３】
ステップ４０４の一実施の形態では、これは、以下の数値最適化問題の形を取る。
∀ｐ，ΣｐΔ≦Ｔとなるような
ｍｉｎΣＡ
【００３４】
ここで、「ｍｉｎΣＡ」は、すべてのコンポーネントの面積の合計を最小にすることを意味し、「∀ｐ，ΣｐΔ≦Ｔ」は、あらゆる回路パスｐ（「∀ｐ」）について、そのパス遅延、すなわち、そのパスｐに沿ったすべてのコンポーネントの遅延の合計（「ΣｐΔ」）が、入力されたクロック周期２０３以下（≦Ｔ）であることを意味する。この数値最適化問題は、マクロセルの面積−遅延特性の非線形性により、非線形となる。
【００３５】
ステップ４０４の別の実施の形態では、各回路パスに沿ったレジスタ、相互接続、およびＦＵの間でクロックサイクル時間を分割するのに、時間編成（time-budgeting）を使用することができる。このように、個々の各ハードウェア資源の遅延制約条件が取得され、解析されて、タイミングの考慮事項を満たすことが保証される。面積−遅延特性は、各ハードウェア資源について、そのハードウェア資源の遅延制約条件を満たすような最小面積の実施態様を決定するのに使用される。
【００３６】
これに加えて、各ＦＵマクロセルについてのマイクロアーキテクチャ上の選択間の変動に関する選択も、解析の一部として含まれる。例えば、パイプライン化されたＦＵマクロセルは、図６の代表的な面積−遅延トレードオフ曲線６０１〜６０３によって表される、例えばａｒｃｈ１およびａｒｃｈ２といった２つの異なるマイクロアーキテクチャ上の実施態様を有することができる。遅延制約条件（Δｉｎｉ，サイクル時間，Δｏｕｔｉ）を満たすような最小面積の実施態様は次の通りである。
ｍｉｎ（Ａｉｎ，ａｒｃｈ１＋Ａｐｉｐｅ，ａｒｃｈ１＋Ａｏｕｔ，ａｒｃｈ１，Ａｉｎ，ａｒｃｈ２＋Ａｐｉｐｅ，ａｒｃｈ２＋Ａｏｕｔ，ａｒｃｈ２）
【００３７】
ステップ２０９と同様に、ステップ４０４は、ハードウェア構造のすべてのハードウェア資源について実行することもできるし、タイミングが構造更新ステップ２０８の結果として影響を受けるハードウェア構造の部分についてのみ行うこともできる。本発明は、非追加的および追加的の双方で実行されたステップ４０４をカバーする。
【００３８】
その後、ステップ２１３において、コストパーフォーマンストラッカ４０３が新たな入力２０２に対して起動された時にハードウェア構造表現が有していた状態にハードウェア構造表現を戻す指令が、ハードウェア構造表現モジュール２０６に発行される。次に、コストパーフォーマンストラッカは、スケジューラ／バインダ４０１に制御を戻す。
【００３９】
説明した第２の実施の形態は、最小コストで、かつ、タイミングが正確であるオペレーションの選択肢の選択を保証するものである。これによって、指定されたクロック周期全体を計算に利用しつつ、シリコン面積を最小にする目的が可能になる。この手法は、最小コストのハードウェアが、正確に導き出され、設計プロセスの各ステップにおいて選択肢の選択を案内するのに使用される点で、前の手法よりも優れている。
【図面の簡単な説明】
【００４０】
【図１】デジタル回路のハイレベル合成の一プロセスのブロック図。
【図２】スケジューリングおよびバインドに、本発明の一実施の形態の所与のクロック周波数を満たすハードウェアの生成を可能にさせるメカニズムのフロー図。
【図３】ハードウェア構造表現がスケジューリングの選択肢で更新される時に追加的なタイミング解析が実行される影響ゾーンを決定する一例。
【図４】スケジューリングおよびバインドに、所与のクロック周波数を満たしつつも、最小コストのハードウェアの生成を可能にさせるメカニズムのフロー図。
【図５】ハードウェア資源およびいくつかの一般的な面積−遅延特性。
【図６ａ】２つの異なるマイクロアーキテクチャ上の選択を有するパイプライン化された機能ユニットの面積−遅延特性。
【図６ｂ】２つの異なるマイクロアーキテクチャ上の選択を有するパイプライン化された機能ユニットの面積−遅延特性。
【図６ｃ】２つの異なるマイクロアーキテクチャ上の選択を有するパイプライン化された機能ユニットの面積−遅延特性。
【符号の説明】
【００４１】
２０１、４０１  スケジューラ／バインダ
２０２  入力
２０３  クロック周期仕様
２０４、４０２  マクロセルライブラリ
２０５  タイミングトラッカ
２０６  ハードウェア構造表現モジュール
３０１、３０３、３０４、３０６、３０７  ワイヤ
３０２  レジスタ
３０５  領域
４０３  コストパーフォーマンストラッカ
５０１、５０８  マクロセル
５０５、５０６、５０７、５１０  面積−遅延曲線
【図１】
2006502500.tif 000003
【図２】
2006502500.tif 000004
【図３】
2006502500.tif 000005
【図４】
2006502500.tif 000006
【図５】
2006502500.tif 000007
【図６ａ】
2006502500.tif 000008
【図６ｂ】
2006502500.tif 000009
【図６ｃ】
2006502500.tif 000010
【国際調査報告】
2006502500.tif 000011
2006502500.tif 000012
2006502500.tif 000013