(57)【特許請求の範囲】
【請求項１】
対象デバイスの動作記述が与えられたときに前記対象デバイスの設計空間探索を加速する方法であって、
パース生成器が、前記動作記述を構文解析して依存関係解析木を構築することと、
前記パース生成器が、前記依存関係解析木に基づきクラスタの独立した組を生成することと、
高レベル合成器が、前記対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索し、これによって、各クラスタに対して独立に、属性の全ての組み合わせあるいは前記全ての組み合わせの重要なサブセットを生成する探索処理と、
前記高レベル合成器が、全ての前記クラスタに対する属性を同時に組み合わせて、制約条件のもとで改善された特性を有する設計を生成することと、
を有し、
各クラスタは、前記依存関係解析木の１つ以上のノードの集合であって独立に探索可能である、方法。
【請求項２】
前記クラスタの独立した組を生成することは、前記パース生成器が、異なって合成することが可能であってそれゆえに前記最終的な回路に影響を与えるであろう探索可能な操作に対する、クラスタの前記独立した組を発生させることを含む、請求項１に記載の方法。
【請求項３】
前記探索処理において、前記高レベル合成器が、各クラスタに対する属性の組み合わせを発生しつつ前記クラスタの残りに対してはいかなる属性も付与しないことにより、各クラスタを別々に探索することを有する、請求項１に記載の方法。
【請求項４】
生成された回路に対する各属性組み合わせの影響を解析して部分的な結果を得ることと、
前記部分的な結果を記憶し、前記部分的な結果に基づいて各操作に対する属性の最終的な組み合わせを選択することと、
を有する、請求項１に記載の方法。
【請求項５】
前記高レベル合成器が、パレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタが別々に探索された時点で、パレート最適設計を探すことを有する、請求項１に記載の方法。
【請求項６】
パレート最適設計にのみ対する探索を精緻化することにより、前記探索結果をさらに精緻化することを有する、請求項１に記載の方法。
【請求項７】
それぞれの独立したクラスタの探索処理を複数のプロセッサにマッピングすることと、
前記クラスタの数に基づいて、必要とされる前記プロセッサの数を可変的に調節することと、
をさらに有する、請求項１に記載の方法。
【請求項８】
独立したクラスタに対する前記探索処理を複数のプロセッサのそれぞれにマッピングして実行することと、
前記複数のプロセッサの各々が当該プロセッサに割り当てられた前記クラスタの前記探索処理を終えたときに、前記複数のプロセッサから当該プロセッサによる部分的な結果を中央のプロセッサに移動させることと、
を有する、請求項７に記載の方法。
【請求項９】
対象デバイスの設計空間を探索する装置であって、
前記対象デバイスの動作記述を格納する第１の記憶装置と、
前記第１の記憶装置から読み出される前記動作記述を構文解析して依存関係解析木を構築し、前記依存関係解析木に基づいてクラスタの独立した組を生成するパース生成器と、
制約条件と属性のライブラリとを格納する第２の記憶装置と、
前記第２の記憶装置に格納された前記ライブラリを参照して各クラスタに対する合成命令を挿入することにより、前記動作記述をインストルメント化するプリプロセッサと、
前記対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索し、これによって、各クラスタに対して独立に、属性の全ての組み合わせあるいは前記全ての組み合わせの重要なサブセットを生成し、全ての前記クラスタに対する属性を同時に組み合わせて、前記制約条件のもとで改善された特性を有する設計を生成する高レベル合成器と、
を有し、
各クラスタは、前記依存関係解析木の１つ以上のノードの集合であって独立に探索可能である、装置。
【請求項１０】
前記高レベル合成器は、前記高レベル合成器がパレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタを別々に探索した時点で、パレート最適設計を探す、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路（ＩＣ：integrated circuit）、大規模集積回路（ＬＳＩ：large-scale integration）及び超大規模集積回路（ＶＬＳＩ：very-large-scale integration）のような半導体デバイスのための自動化電子回路設計（ＥＤＡ：electronic design automation）に関し、特に、設計空間探索を加速する方法及び装置に関する。
【背景技術】
【０００２】
動作（振る舞い(behavior)）回路記述から開始して同じ機能を有するが特性（例えば、面積、レイテンシ、スループット、電力消費、メモリ使用量）が異なっているＬＳＩ回路を自動生成することを加速する方法及び装置が提示される。このような自動生成は、設計空間探索（ＤＳＥ：design space exploration）とも呼ばれる。同じ機能を有し制約条件（例えば、面積、タイミング、電力、温度）の組に適合する、一連の固有ハードウェアアーキテクチャが、動作機能レベルのＬＳＩ回路記述から始めて自動的に生成される。設計空間探索での主要な目的は、指定された制約条件の組に対して最も効率的な回路を見出すことである。これらの最も効率的な設計は、効率性フロンティア（パレート(Pareto)フロンティアとも呼ばれる）と呼ばれるものを構築する。図１は、面積とレイテンシとが制約条件として用いられている設計空間探索の結果の例を示している。各々の点は、固有の面積とタイミング特性とを有するＬＳＩ設計に対応し、黒丸で示される点は、パレート最適のＬＳＩ設計に対応し、白丸で示される点は、パレート最適でないＬＳＩ設計に対応する。パレート最適のＬＳＩ設計の点は、パレートフロンティア上に配列されている。
【０００３】
説明を簡単にするため、たった２つの制約条件しか図１には示されていないが、電力、温度、周波数などの他の制約条件も考慮することができる。アーキテクチャ上のトレードオフは、設計者にとって意味のない設計空間全体を考慮することよりも、むしろ、この集合、すなわちパレートフロンティア上の設計の中で探索することができる。
【０００４】
設計空間探索における主要な課題は、設計空間のサイズである。ほどんど無数のＬＳＩ回路を動作回路記述から生成することができるから、総当たり検索によって、全ての効率的な設計を最終的には見つけ出すことができるであろう。しかしながら、これは、単一の回路を生成するために極端に長い実行時間がかかるので、大きな回路に対しては現実的ではない。したがって、最も効率的な設計をできるだけ速く得るために、設計空間の探索を加速するいくつかの方法が提案されている。
【０００５】
例えば、Benjamin Carrion Schaferらは、予め定められたクラスタの組に対し、合成命令(synthesis directive)の一定の組を適用することによって、設計空間探索を加速することを提案している（非特許文献１）。この提案された方法は高速ではあるが、その一方で、効率的なＬＳＩ設計の多くを見落とすことをもたらす。
【０００６】
特許文献１には、物理設計最適化を実行する方法であって、動作記述及び制約条件からデータフローを生成して動作合成情報を生成し、動作合成情報に基づいてＬＳＩのフロアプランのレベルでのクラスタを形成し、タイミングの制約条件に違反するそれらのクラスタのみを再合成することによる方法が開示されている。この提案された方法は、タイミング制約条件を適合するＬＳＩフロアプランの作成をスピードアップする。
【０００７】
また特許文献２は、初期の設計段階においてチップサイズとクリティカルパスとを評価することができるＬＳＩ設計システムを開示している。このシステムでは、ディレイ（遅延）モデルとエリア（面積）モデルとが、ＨＤＬ（ハードウェア記述言語(Hardware Description Language)）レベルでのＬＳＩ記述から生成され、次いで、エリアモデルに基づいてフロアプランが作成される。ディレイモデルとフロアプランとに基づく静的タイミング解析が実行されて、チップサイズとクリティカルパスとが評価される。特許文献３には、高レベル記述言語を用いてＬＳＩの所望の電子回路モデルを記述し、そのＬＳＩのさらに精密なコスト評価を実行するシステムが開示されている。このシステムは、まず、所望の電子回路モデルを記述する記述ファイルの構文解析を行って、木構造などの予め定められたグラフ構造を有する制御データフローグラフを生成する。次にシステムは、複数のノードの組から構成されて特定の機能を実現するスレッドに、制御データフローグラフを分割する。システムは、所定の面積制約条件及びタイミング制約条件に適合するように、その分割されたスレッドを最適化し、所望の電子回路モデルに関して論理（ロジック）セルの個数、機能、配置及びルーティングの特定情報(specifying information)を取得する。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−２６５２２４号公報
【特許文献２】米国特許第６，４６３，５６７号明細書
【特許文献３】米国特許公開第２００２／０１６２９０７号
【非特許文献】
【０００９】
【非特許文献１】Benjamin Carrion Schafer and Kazutoshi Wakabayashi, "Design Space Exploration Acceleration through Operation Clustering," IEEE Transaction on Computer Aided Design (TCAD), January 2010, Vol. 29, Issue 1, pp. 153-157
【発明の概要】
【発明が解決しようとする課題】
【００１０】
設計空間探索を加速する方法がいくつか提案されてきているが、提案された方法は最適設計を素早く決定するためには十分ではなく、設計空間探索は著しく時間を消費する。できるだけ速く最も効率的な設計を得るために、設計空間の探索を加速する要求がある。
【００１１】
したがって、本発明の例示的な目的は、動作記述から始めるＬＳＩ設計に関して設計空間探索を加速し、総当たり法あるいは人手による方法に比べてより高速に最も効率的なＬＳＩ設計に到達する方法を提供することにある。
【００１２】
本発明の別の例示的な目的は、動作記述から始めるＬＳＩ設計に対する設計空間探索を加速された形態で実行し、総当たり法あるいは人手による方法に比べてより高速に最も効率的なＬＳＩ設計に到達できる設計空間探索装置を提供することにある。
【課題を解決するための手段】
【００１３】
本発明の例示的な態様によれば、対象デバイスの動作記述が与えられたときに対象デバイスの設計空間探索を加速する方法は、動作記述を構文解析して依存関係解析木を構築することと、依存関係解析木に基づきクラスタの独立した組を生成することと、対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索することと、クラスタに対する属性を組み合わせて、制約条件のもとで改善された特性を有する設計を生成することと、を含み、各クラスタは、依存関係解析木の１つ以上のノードの集合であって独立に探索可能である。
【００１４】
本発明の別の例示的な態様によれば、対象デバイスの設計空間を探索する装置は、対象デバイスの動作記述を格納する第１の記憶装置と、第１の記憶装置から読み出される動作記述を構文解析して依存関係解析木を構築し、依存関係解析木に基づいてクラスタの独立した組を生成するパース生成器と、制約条件と属性のライブラリとを格納する第２の記憶装置と、第２の記憶装置に格納されたライブラリを参照して各クラスタに対する合成命令を挿入することにより、動作記述をインストルメント化するプリプロセッサと、対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索し、クラスタに対する属性を組み合わせて、制約条件のもとで改善された特性を有する設計を生成する高レベル合成器と、を含み、各クラスタは、依存関係解析木の１つ以上のノードの集合であって独立に探索可能である。
【００１５】
ここに記載される方法及び装置は、ＬＳＩ設計の設計空間探索を加速するツールを提供する。
【００１６】
本発明の上記及び他の目的、特徴及び効果は、本発明の例示実施形態を示す添付の図面に基いて、以下の記載から明らかになるであろう。
【図面の簡単な説明】
【００１７】
【図１】全てのパレート最適ＬＳＩ設計を含む効率的ＬＳＩ設計フロンティアを示す、例示的な設計空間探索の結果を示すグラフである。
【図２】実施形態に基づくＬＳＩ設計探索方法を示すフローチャートである。
【図３】設計探索結果のスクリーンショットの一例の図である。
【図４】例示実施形態に基づく探索フローの全体を示すデータフローグラフである。
【図５】所与の時間非依存(untimed)動作ＬＳＩ設計記述からの依存関係解析木生成の一例を示す図である。
【図６】合成されたＬＳＩ回路への合成命令(synthesis directive)の影響を解析するために別々に探索されるであろう、独立したクラスタの構成を示す図である。
【図７】動作ＬＳＩ記述と解析された依存関係木及びクラスタ生成の結果との例を示す図である。
【図８】各クラスタに対して生成されたデータ構造の例を示すことによって、図７に与えられた例に対する個々のクラスタの探索の結果を示す図である。
【図９】各クラスタの属性の組み合わせを備える新しい設計が個別のクラスタ探索の結果に基づいて生成されている探索における、最終ステップの例を示す図である。
【図１０】一例示実施形態に基づく設計空間探索装置を示すブロック図である。
【図１１】情報処理装置を示すブロック図である。
【発明を実施するための形態】
【００１８】
次に、説明のために、複数の図にわたって同様の参照符号は同様の要素を示している図面を参照すると、添付の図面は本発明の例示実施形態を示している。例示実施形態は、動作記述言語により規定されたＬＳＩシステムの自動化された設計空間探索を加速する方法及び装置に関し、より詳しくは、高レベル合成に対する時間非依存の高レベル言語記述から開始してパレート最適設計を探すことを加速する方法及び装置に関する。
【００１９】
上述したように、図１は、設計空間探索の一般的な目的を示している。パレートフロンティア上にある設計の集合内で簡単にアーキテクチャ上のトレードオフを探索するために、設計空間の全体を考慮するよりも、むしろ、パレート最適ＬＳＩ設計だけを見出す必要がある。設計空間の全体を考慮することは、非現実的であり、また、設計者にとっても無関係なことである。これらのＬＳＩ設計のみを取得することも非常に時間を消費し、総当たり法あるいはこれら手動で発生する方法を用いては現実的でない。
【００２０】
例示実施形態でのＬＳＩ設計方法の設計フローの概要が図２に示されている。ＬＳＩ記述の手動での改変や非常に時間がかかる自動化プロセスを有する関連技術の設計フローとは対照的に、例示実施形態は、設計空間探索を高速化する。
【００２１】
図２に示される設計フローは、動作ＬＳＩ機能記述３０１を受け取ることから開始する。動作記述は、Ｃ言語あるいはＳｙｓｔｅｍＣ言語のような任意の動作記述言語またはハードウェア記述言語で記述される。記述は、次にステップ３０２において、構文解析され（パースされ）て、解析木(parse tree)と、探索可能な操作(operation)のみを有する独立したクラスタとが生成される。次にステップ３０３において、動作記述は、各クラスタのソースコードにおいて合成命令を直接挿入することによって、自動的にインストルメント化される。記憶部３０４は、属性(attribute)を含んでいるライブラリと、面積やレイテンシなどの制約条件とを格納する。記憶部３０４に格納された属性は、動作記述をインストルメント化するために用いられる。
【００２２】
インストルメント化された動作ＬＳＩ記述は、次にステップ３０５において、高レベル合成（ＨＬＳ：high level synthesis）ツールを用いて合成され、この合成の結果は、記憶部３０４に格納された制約条件の下での最も効率的な設計のすべてが生成されるまで探索を続行するために、ステップ３０６において読み出され格納される。反復の間、生成された設計は、図３に示すように、表示装置上のトレードオフ・ウィンドウ３０７に表示することができる。図３は、設計探索結果の例示的なスクリーンショットを示しており、ここでは、グラフ上の各点は、それぞれ固有の特性を有する回路に対応する。
【００２３】
上述したように設計空間探索は、高レベル合成ツールを用いる動作記述の合成を伴っている。合成結果は、グローバル合成オプション、及び／または、回路記述に直接注記される特定の合成命令を設定することによって、制御することができる。これらのグローバル合成オプション及びローカル合成命令は、異なったＬＳＩ設計の生成をもたらす。グローバル合成オプションはＬＳＩ記述の全体に影響し、一方、ローカル合成命令は、設計の一部のみに影響を及ぼして、ソースコード中の具体的な操作において直接指定される。これらの操作のいくつかは、“フォーループ(for loop)”、関数(fuction)及び配列(array)を含んでいる。例えば、ループは、完全にアンロール（展開）されたり、部分的にアンロールされたり、あるいはアンロールされなかったりすることができる。配列は、レジスタ、配線接続ロジック、またはメモリにマップすることができ、関数は、単一のハードウェアブロックとして、あるいは複数のブロックとして合成することができる。図１は、ＬＳＩ設計の動作記述に対して異なるグローバル合成オプション及びローカル合成命令を適用した結果の例を示している。この図は、より大きな面積の設計はより高い性能を有する傾向にあり、一方、より小さな設計はより低い性能を有する傾向にあることを示している。
【００２４】
本例示実施形態による方法を詳しく説明する。この方法は、オリジナルの動作ＬＳＩ記述中の特定の操作に合成命令を挿入し、次に、インストルメント化されたＬＳＩ記述に対して高レベル合成を実行することによる、分割統治技術に基づいている。この方法は、大まかに言って、図４に示すように、４つのステップ（すなわちステップ１からステップ４）と２つのメインループとを含んでおり、一方のループはステップ３に含まれ、他方のループはステップ４に含まれている。
【００２５】
ステップ１：  ステップＳ１において探索フローを開始したのち、ステップＳ２において、動作ＬＳＩ記述は構文解析され、全ての探索可能操作、すなわち探索されることが可能な操作に対して、依存関係解析木(dependency parse tree)が構築される。動作記述は、例えば、Ｃ言語あるいはＳｙｓｔｅｍＣ言語で記述される。探索可能操作は、合成命令を適用することが可能な操作である。図５は、解析木生成の一例を示し、ここでは、内部あるいは外部ライブラリにおいて指定されたすべての探索可能操作の依存関係を備えた木が生成される。解析木の生成の詳細は、ＰＣＴ／ＪＰ２００９／０５７０４３に記載されており、その開示は、全体として引用によってここに組み込まれる。
【００２６】
ステップ２：  ステップＳ３において、解析木の独立した各ノードに対して独立にクラスタが構築される。図６はクラスタ生成の一例を示している。
【００２７】
ステップ３：  合成命令（すなわち合成属性）のすべての組み合わせ、あるいはそれらの組み合わせの重要なサブセットが、ステップＳ４において、各クラスタに対して独立に生成される。各クラスタは別々に探索される。ステップＳ５において、合成属性の各組み合わせに対し、ＨＬＳツールを呼び出すことによって新たにインストルメント化された動作記述が合成され、合成結果は、結果として得られるＬＳＩ設計に対する各属性組み合わせの影響（例えば、面積、レイテンシ、電力、温度）を解析するために、リードバック(read back)される。この目的のためにこのステップにおいて任意の検索アルゴリズムを使用できる。例えば、これらに限られるものではないが、総当たり法、焼きなまし法、遺伝アルゴリズムを使用できる。このステップの間、単一クラスタの属性のみが独立して探索される。一つのクラスタの探索の間、残りのクラスタの探索可能操作は、インストルメント化されていない状態に保たれる。すべての組み合わせをインストルメント化するために、ステップＳ６において、新しい属性組み合わせが見つかるかどうかがチェックされる。もし、すべての組み合わせ、あるいは最も重要な組み合わせに対する探索が完了していないのであれば、この方法では、ステップＳ４及びＳ５のこの処理が再度反復される。
【００２８】
ステップ４：  すべてのクラスタが独立して検索されると、新しいインストルメント化されたＬＳＩ記述が、すべてのクラスタに対する属性を同時に組み合わせることによって生成される。より効率的な回路をもたらす属性が、最も効率的な設計のみを作成するために組み合わされる。特に、パレート最適ＬＳＩ設計をもたらすであろう各クラスタの属性の各組がステップＳ７において特定され、ステップＳ８において、各新たにインストルメント化された記述を合成することによってパレート最適設計のみを生成するために、これらの最適設計が組み合わされる。さらなるパレート最適設計が見つからなくなるまでステップＳ７及びＳ８の処理を続けるために、ステップＳ９において、新たなパレート設計が生成できるかどうかが判断される。もしそうならば、処理はステップＳ７に戻り、そうれなければ、ステップＳ１０において処理は終了する。
【００２９】
本例示実施形態において、ＬＳＩ設計の所与の動作記述は、例えば固定ロジックのレジスタまたはメモリとして配列を合成するための合成命令によって、手動でインストルメント化することができる。これらの合成命令は、合成処理においてＨＬＳツールを制御し、動作ＬＳＩ記述をＲＴＬ（レジスタ転送レベル：register transfer level）言語記述のような詳細なＬＳＩ設計記述に変換する。本例示実施形態の方法は、自動的に、動作ＬＳＩ記述に異なる合成命令を挿入し、それによって、異なる特性を有する異なる回路を結果としてもたらし、最も効率的な回路だけを維持する。
【００３０】
なお、ステップ３での各クラスタの探索は完全に独立しており、この方法は、分割して複数のプロセッサ上で実行することよって探索処理をさらに高速化できる。理想的には、探索は、独立したクラスタと同数のプロセッサ上で実行されるべきである。Ｎはクラスタの数に等しいとして、これは、Ｎのファクターで探索処理を加速するであろう。
【００３１】
したがって、複数のプロセッサが利用可能である場合には、必要とされるプロセッサの数をクラスタの数に基づいて可変的に調節しつつ、それぞれの独立したクラスタの探索処理を複数のプロセッサにマッピングすることが好ましい。このような場合、データ構造は再生成され、各プロセッサがそのプロセッサに割り当てられたクラスタの探索を終えたときに、異なるプロセッサからの部分的な結果が中央のプロセッサに移動されるようにしてもよい。
【００３２】
次に、図２のステップ３０２でのオリジナルの動作ＬＳＩ記述からの依存関係解析木の生成について、詳しく説明する。図５は、動作記述の操作の独立したグループの各々に対する合成属性の効果を調べるためにそれらの独立したグループを抽出できるようにした、この例示実施形態の方法の主たるデータ構造である依存関係解析木の一例を示している。依存関係解析木は、図４のステップ１においても生成され、ここで説明する解析木の生成処理は、図４に示された例にも適用可能である。
【００３３】
図５において、依存関係解析木４００の各ノードは、動作記述４０６内の探索可能操作に対応する。この例では、動作記述４０６は、配列の定期を示す“ｉｎｔ  ａ［１０］”の文（ステートメント）４０７を含んでいる。文４０７によって定義される配列がアクセスされるごとに、配列４０２，４０５は解析木に含められる。同様に動作記述４０６は、フォーループ文４０８，４１０を含んでいる。フォーループ文４０８，４１０に応答してループ４０１，４０３がそれぞれ解析木に含められる。文４０９は関数“ｆｕｎｃ＿ｓｕｍ”を定義し、この関数は、解析木に含まれるｆｕｎｃ＿ｓｕｍ  ４０４に対応する。
【００３４】
次に、図２のステップ３０２でのクラスタの作成を詳しく説明する。図６は、クラスタ生成の一例を示している。このようなクラスタは図４のステップ２で生成されるので、ここで説明されるクラスタ作成処理は、図４に示した例にも適用可能である。
【００３５】
図６において、解析木５０１に対する探索可能操作の独立したサブセットの各々クラスタは、図５に示される構文解析されていない動作ＬＳＩ記述４０６に対応する、構文解析された動作記述５０３から生成される。この場合、２つの独立したクラスタが作成され、ここでクラスタ＃１  ５０２はループと配列５０４とを含み、クラスタ＃２  ５０２は関数とループと同一の配列５０５とを含む。各クラスタは、合成されたハードウェア設計に対する各属性組み合わせの影響を立証するために総当たり法を用いて、あるいは、設計空間探索を加速できる任意の発見的な（ヒューリスティックな）方法を用いて、参照符号５０６，５０７によってそれぞれ示されるように、別個に探索される。
【００３６】
ここで提案された分割統治法の最悪の場合のシナリオは、最初の時間非依存の高レベル記述が、１つの大きなクラスタしか含まないことである。そのような場合、探索の実行時間は、関連技術で開発されてきたいずれの発見的方法と同じである。最も好ましい場合は、個々の操作に一致したクラスタをソースコードが含むことである。この場合、探索の実行時間は、操作の数に対して線形である。
【００３７】
次に、実施例に照らし、図７、図８及び図９を参照して、本例示実施形態をさらに詳しく説明する。問題定義は、１つの主たる目標、すなわち、すべての（あるいはできるだけ多くの）パレート最適設計の生成であって、実行時間を最小化できる生成である。
【００３８】
図７は、動作ＬＳＩ記述とこの動作ＬＳＩ記述から生成されたクラスタとの例を示している。図７で例示されているクラスタの生成は、図４に示されるステップ１とステップ２に対応する。図７において、動作ＬＳＩ記述７０４は、配列に８個の変数を読み込み、最後の８個の値の平均を出力する。動作ＬＳＩ記述７０４は、３つの探索可能操作、すなわち２つのループ（すなわちループ１とループ２）と１つの配列（すなわちｆｉｆｏ［８］）を有する。ＨＬＳツールは、ソースコードにおいて直接指定されたローカル合成命令に応じて、ループを完全にアンロールしたり、部分的にアンロールしたり、あるいはアンロールしなかったりすることができる。命令が指定されない場合には、ツールにプログラムされたデフォルトの動作が実行される。一方、配列は、レジスタとして合成されたり、あるいはメモリとして展開されたりすることができるが、この場合、ポートの数や他のいくつかの副属性(sub-attribute)を選択することができる。
【００３９】
図７において、依存関係解析木７０１及び個別のクラスタが作成されている。この例では、２つのクラスタ、すなわち、第１のフォーループ（ループ１）及び参照符号７０５で示される配列アクセスに対するクラスタ＃１（７０２）と、第２のフォーループ（ループ２）及び参照符号７０６で示される配列アクセスに対するクラスタ＃２（７０３）とが生成される。
【００４０】
図８は、図７に与えられた例に関する個々のクラスタの探索の結果として各クラスタに対して生成されたデータ構造の例を示している。このようなデータ構造は、例えば、属性の各組み合わせがクラスタごとに別々に探索される図４に示されるステップ３を介して、生成される。各設計の合成の結果は、次に、生成された回路に対する属性の組み合わせの影響を理解するために、リードバックされる。
【００４１】
図８において、下線を付されたデータ構造例の形態で探索結果が示されている。連結リスト(linked list)８０１としてクラスタが表現されている。各クラスタノードは、設計連結リスト８０２に示されるように、各クラスタに対して作成された属性の一意的な組み合わせの数と同数の設計を含んでいる。属性リストは、設計連結リスト８０２に対する副連結リスト(sub-linked list)としても表されている。各設計ノードは、属性８０３のその特定の組み合わせに対する合成の結果の情報を含んでいる。図において、“ｍｅｍ”及び“ｒｅｇ”は、それぞれ、“メモリ(memory)”と“レジスタ(register)”の略記である。ここで説明されるデータ構造は、合成された設計に対する各属性組み合わせの影響を調べることを可能にする。
【００４２】
図９は、図７に示された例に対する、各クラスタの属性の組み合わせを有する新しい設計が個々のクラスタ探索の結果に基づいて生成される最終ステップ、すなわちマージステップを示している。このステップは、図４に示されるステップ４に対応する。クラスタが相互依存性の属性を有する場合には、同じ相互依存性の属性を有する属性リストのみが使用可能である。
【００４３】
図９において、クラスタリスト９０１中のクラスタ（すなわちクラスタ＃１及びクラスタ＃２）の各々は、属性９０３の固有の組をそれぞれ備える設計のリスト９０２を有する。各設計の合成の結果は調査され、パレート最適設計９０６をもたらす属性の組み合わせ９０７が作成される。この場合、配列が両方のクラスタに影響するので、配列に対する同じ属性を有するそれらの属性の組み合わせのみが、一緒に組み合わされる。クラスタ＃１に対する属性９０５の組み合わせとクラスタ＃２に対する属性９０４から作成される設計が合成され、次に、パレート最適ＬＳＩ設計９０６が作成される。パレートＬＳＩ設計を探すことは、さらなる新しいパレート設計が見つからなくなるまで続けられる。
【００４４】
図１０は、対象デバイスの設計空間探索の処理が上述した方法によって高速化された、設計空間探索装置の構成を示している。この装置は、大別して、対象デバイスの動作記述を格納する第１の記憶部１０１と、第１の記憶部１０１に格納された動作記述を構文解析して依存関係解析木を構築し、依存関係解析木に基づいてクラスタの独立した組を生成するパース生成器１０２と、面積やレイテンシなどの制約条件を格納し、属性のライブラリを格納する第２の記憶部１０３と、各クラスタに対する合成命令を挿入することにより動作記述をインストルメント化するプリプロセッサ１０４と、インストルメント化された動作記述を合成し、設計空間探索を実行する高レベル合成器１０５と、を含んでいる。ここで、各クラスタは、依存関係解析木の１つ以上のノードの集合であって、独立に探索可能である。動作記述のインストルメント化(instrumentation)において、プリプロセッサは、第２の記憶部１０３に格納されたライブラリを参照し、動作記述のソースコードに合成命令を直接挿入する。
【００４５】
高レベル合成器１０５は、対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索するように構成されていてよく、さらに、クラスタに対する属性を組み合わせてより効率的な設計を生成するように、すなわち、制約条件のもとで改善された特性を有する設計を生成するように、構成されていてもよい。パレート最適をもたらすであろう属性のみを組み合わせることによって高レベル合成器がすべてのクラスタを別々に探索し終えたら、高レベル合成器１０５は、パレート最適設計を検索してもよい。一例において、高レベル合成器１０５は、高レベル合成（ＨＬＳ）ツールとして実装される。
【００４６】
図１０に示す設計空間探索装置は、さらに、高レベル合成器で生成された設計を格納する第３の記憶部１０６と、生成された設計を設計空間探索の結果として表示する表示装置１０７と、を含んでいる。表示装置１０７は、制約条件に対する生成された設計の分布を認識できる形態で、結果を表示する。例えば、使用される制約条件が面積とレイテンシであるとすると、表示装置１０７は、図１に示したものと同様のグラフを表示する。高レベル合成器１０５は、第３の記憶部１０６から結果を繰り返し読み出し、最も効率的な設計がすべて生成されるまで、探索を実行する。
【００４７】
いくつかの例において、パース生成器１０２は、異なって合成することが可能であってそれゆえに最終的な回路に影響を与えるであろう探索可能操作に対して、クラスタの独立した組を発生させてもよい。高レベル合成器１０５は、各クラスタに対する属性の組み合わせを発生しつつクラスタの残りに対してはいかなる属性も付与しないことにより、各クラスタを別々に探索してもよい。高レベル合成器１０５は、パレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタが別々に探索された時点で、パレート最適設計を探してもよい。
【００４８】
図１０に示す装置において、複数のクラスタで用いられる配列または関数のような相互依存性をクラスタが有するときには、その相互依存性の同一の属性を用いてパレート最適設計を得るようにしてもよい。探索結果は、パレート最適設計にのみ対する探索を精緻化することにより、さらに精緻化されてもよい。例えばループのマージなど、クラスタをまたがる最適化を実行するローカル属性の線形動作を阻害することが可能ないかなる最適化オプションは、無効化されてもよい。高レベル合成の結果を読み出し、非最適の設計を無視しつつ最も効率的であるＬＳＩ設計のみを保持するようにしてもよい。
【００４９】
次に、本例示実施形態の応用の例を説明する。
【００５０】
図１１は、情報処理装置の機能ブロック図を示している。情報処理装置２００は、同一ＬＳＩ設計上に集積されたサブシステムである複合処理デバイス２０１を含んでいる。複合処理デバイス２０１は、処理ユニット２０３と、組み込みメモリ２０２と、入力及び出力（Ｉ／Ｏ）ポート２１０とを含んでいる。Ｉ／Ｏポート２１０は、通信インタフェースを含んでいる。複合処理デバイス２０１内のすべてのユニットは、内部バス２０８に相互接続されている。処理装置２０３は、記憶装置２１２と、異なる種類の周辺装置２１３及びインタフェース２１４をも含んでいる。処理デバイス２０１、記憶装置２１２、周辺装置２１３及びインタフェース２１４はともにバス２１１によって相互接続されている。
【００５１】
処理ユニット２０３は、マイクロプロセッサ２０４と、組み込みローカルメモリ２０９と、入力及び出力（Ｉ／Ｏ）ポート２５５と、２つの専用ハードウェア・アクセラレーション（加速）ブロック２０６，２０７と、を含んでいる。アクセラレーション・ブロックは、汎用プロセッサすなわちマイクロプロセッサ２０４に比べて種々の機能をより効率的に実行することができる。これらの専用アクセラレーション・ブロックの設計は、非常に時間を消費する。本例示実施形態に基づく方法は、専用アクセラレーション・ブロックの設計を関連技術の方法よりも高速にすることを可能にする。本例示実施形態は、所与の面積、性能、電力及び温度の制約条件に合致する効率的なＬＳＩ設計の組を自動的に作成することを可能にする。
【００５２】
上述した例示実施形態の方法を構成する各ステップは、コンピュータシステム上でも実装可能である。したがって、例示実施形態は、コンピュータシステムとともに使用するためのコンピュータプログラムとして、ソフトウェアの形態で実現されてもよい。コンピュータシステムは、例えば、図１１に示される構成を有していてもよい。少なくとも１つの例示実施形態の機能を規定するプログラムは、種々のコンピュータ可読媒体（すなわち、信号保持媒体）を介して、コンピュータに提供されることができる。そのようなコンピュータ可読媒体は、（ｉ）書き込み不能記憶媒体（例えば、ＣＤ−ＲＯＭドライブまたはＤＶＤドライブによって読み取り可能なＣＤ−ＲＯＭディスクなどの、コンピュータ内の読み出し専用メモリ装置）上に永久的に格納された情報、（ｉｉ）書き込み可能記憶媒体（例えば、フレキシブルディスクドライブまたはハードディスクドライブ内のフレキシブルディスク）上に格納された変更可能な情報、または（ｉｉｉ）無線通信を含むコンピュータネットワークまたは電話ネットワークを介するような、通信媒体によってコンピュータに運ばれる情報を含んでいるが、これらに限定されるものではない。後者は特に、インターネットを介して運ばれる情報を含んでいる。このような信号保持媒体は、本発明の方法によって規定される機能を指示するコンピュータ可読命令を運ぶとき、本発明の代替例示実施形態を示す。なお、プログラムの各部分は、独立に開発されて実装されてもよいが、それらの部分が組み合わされたとき、本発明のさらに別の例示実施形態を構成する。
【００５３】
ＬＳＩ回路設計の例に即して上述の例示実施形態が示されているが、本発明に基づく方法及び装置は、例えば、デジタル回路に関連した設計問題、スケジューリング、化学プロセス処理、制御システム、ニューラルネットワーク、検証及び認証方法、回帰モデル化、未知のシステムの同定、通信ネットワーク、光学回路、及びセンサなどを含む、他の多くの種類の設計問題に適用可能である。本発明に基づく方法及び装置は、例えば、道路システム、水道及び他の大規模物理ネットワークに関連するフローネットワーク設計問題にも適用可能であり、光学、機械要素、及び光−電気要素などの分野にも適用可能である。
【００５４】
したがって、上記の説明は、本発明の原理を図解するだけのものであると考えるべきである。さらに、数々の変更と改良とが容易に当業者の心に浮かぶであろうから、ここで示され説明された通りの構成及び動作に本発明を限定することは好ましくない。したがって、本発明の範囲内に含まれるすべての適切な変更及び等価物が用いられるであろう。
【００５５】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【００５６】
（付記１）  対象デバイスの動作記述が与えられたときに前記対象デバイスの設計空間探索を加速する方法であって、
前記動作記述を構文解析して依存関係解析木を構築することと、
前記依存関係解析木に基づきクラスタの独立した組を生成することと、
前記対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索することと、
前記クラスタに対する属性を組み合わせて、制約条件のもとで改善された特性を有する設計を生成することと、
を有し、
各クラスタは、前記依存関係解析木の１つ以上のノードの集合であって独立に探索可能である、方法。
【００５７】
（付記２）  前記クラスタの独立した組を生成することは、異なって合成することが可能であってそれゆえに前記最終的な回路に影響を与えるであろう探索可能な操作に対する、クラスタの前記独立した組を発生させることを含む、付記１に記載の方法。
【００５８】
（付記３）  前記探索することは、各クラスタに対する属性の組み合わせを発生しつつ前記クラスタの残りに対してはいかなる属性も付与しないことにより、各クラスタを別々に探索することよって実行される、付記１または２に記載の方法。
【００５９】
（付記４）  生成された回路に対する各属性組み合わせの影響を解析して部分的な結果を得ることと、
前記部分的な結果を記憶し、前記部分的な結果に基づいて各操作に対する属性の最終的な組み合わせを選択することと、
を有する、付記１乃至３のいずれか１項に記載の方法。
【００６０】
（付記５）  パレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタが別々に探索された時点で、パレート最適設計を探すことを有する、付記１乃至４のいずれか１項に記載の方法。
【００６１】
（付記６）  複数のクラスタで用いられる配列または関数のような相互依存性を前記クラスタが有するとき、前記相互依存性の同一の属性を用いて前記パレート最適設計を得る、付記１乃至４のいずれか１項に記載の方法。
【００６２】
（付記７）  パレート最適設計にのみ対する探索を精緻化することにより、前記探索結果をさらに精緻化することを有する、付記１乃至４のいずれか１項に記載の方法。
【００６３】
（付記８）  例えばループのマージなど、クラスタをまたがる最適化を実行するローカル属性の線形動作を阻害することが可能ないかなる最適化オプションも無効にすることを有する、付記１乃至７のいずれか１項に記載の方法。
【００６４】
（付記９）  前記高レベル合成の結果を読み出し、最も効率的であるＬＳＩ設計のみを保持し、非最適の設計を無視することを有する、付記１乃至８のいずれか１項に記載の方法。
【００６５】
（付記１０）  それぞれの独立したクラスタの探索処理を複数のプロセッサにマッピングすることと、
前記クラスタの数に基づいて、必要とされる前記プロセッサの数を可変的に調節することと、
をさらに有する、付記１乃至９のいずれか１項に記載の方法。
【００６６】
（付記１１）  データ構造を再生成することと、
各プロセッサが当該プロセッサに割り当てられた前記クラスタの前記探索を終えたときに、前記異なるプロセッサからの部分的な結果を中央のプロセッサに移動させることと、
を有する、付記１０に記載の方法。
【００６７】
（付記１２）  対象デバイスの設計空間を探索する装置であって、
前記対象デバイスの動作記述を格納する第１の記憶装置と、
前記第１の記憶装置から読み出される前記動作記述を構文解析して依存関係解析木を構築し、前記依存関係解析木に基づいてクラスタの独立した組を生成するパース生成器と、
制約条件と属性のライブラリとを格納する第２の記憶装置と、
前記第２の記憶装置に格納された前記ライブラリを参照して各クラスタに対する合成命令を挿入することにより、前記動作記述をインストルメント化するプリプロセッサと、
前記対象デバイスの設計での最終的な回路に対する、異なって合成された各操作の影響を立証するために、各クラスタの合成可能な操作を網羅的に探索し、前記クラスタに対する属性を組み合わせて、前記制約条件のもとで改善された特性を有する設計を生成する高レベル合成器と、
を有し、
各クラスタは、前記依存関係解析木の１つ以上のノードの集合であって独立に探索可能である、装置。
【００６８】
（付記１３）  前記高レベル合成器は、前記高レベル合成器がパレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタを別々に探索した時点で、パレート最適設計を探す、付記１２に記載の装置。
【００６９】
（付記１４）  前記生成された設計を格納する第３の記憶装置と、
前記制約条件に対する前記生成された設計の分布を認識できる形態で、前記第３の記憶装置に格納された前記生成された設計を表示する表示装置と、
を有する、付記１２または１３に記載の装置。
【００７０】
（付記１５）  前記パース生成器は、異なって合成することが可能であってそれゆえに前記最終的な回路に影響を与えるであろう探索可能な操作に対する、クラスタの前記独立した組を発生させる、付記１２乃至１４のいずれか１項に記載の装置。
【００７１】
（付記１６）  前記高レベル合成器は、各クラスタに対する属性の組み合わせを発生しつつ前記クラスタの残りに対してはいかなる属性も付与しないことにより、各クラスタを別々に探索する、付記１２乃至１５のいずれか１項に記載の装置。
【００７２】
（付記１７）  前記高レベル合成器は、パレート最適をもたらすであろう属性のみを組み合わせることによってすべてのクラスタが別々に探索された時点で、パレート最適設計を探す、付記１２乃至１５のいずれか１項に記載の方法。
【００７３】
（付記１８）  複数のクラスタで用いられる配列または関数のような相互依存性を前記クラスタが有するときに、前記相互依存性の同一の属性を用いて前記パレート最適設計を得る、付記１２乃至１５のいずれか１項に記載の装置。
【００７４】
（付記１９）  パレート最適設計にのみ対する探索を精緻化することにより、前記探索結果がさらに精緻化される、付記１２乃至１５のいずれか１項に記載の装置。
【００７５】
（付記２０）  例えばループのマージなど、クラスタをまたがる最適化を実行するローカル属性の線形動作を阻害することが可能ないかなる最適化オプションも、無効化される、付記１２乃至１９のいずれか１項に記載の装置。
【００７６】
（付記２１）  前記高レベル合成の結果が読み出され、最も効率的であるＬＳＩ設計のみが保持され、非最適の設計は無視される、付記１２乃至２０のいずれか１項に記載の装置。
【図１】
0005605435.tif 000002
【図２】
0005605435.tif 000003
【図３】
0005605435.tif 000004
【図４】
0005605435.tif 000005
【図５】
0005605435.tif 000006
【図６】
0005605435.tif 000007
【図７】
0005605435.tif 000008
【図８】
0005605435.tif 000009
【図９】
0005605435.tif 000010
【図１０】
0005605435.tif 000011
【図１１】
0005605435.tif 000012