(57)【要約】【課題】コントロールデータフローグラフから定型部分をより多く抽出できるようにすることを目的とする。【解決手段】ＣＤＦＧ取得部２１０は高位合成装置からＣＤＦＧファイル１３０を取得する。ＣＤＦＧ変形部２３０はＣＤＦＧファイル１３０に含まれるＣＤＦＧを変形する。一致部分抽出部２２０は、変形後のＣＤＦＧから、ＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧと演算順序が一致する一致部分を抽出する。支援データ提供部２８０は、変形後のＣＤＦＧファイル１３０と一致部分データ２９１とを高位合成装置に提供する。【選択図】図２
2015197883.tif 000002
【特許請求の範囲】
【請求項１】
第一の演算順序を表す第一のコントロールデータフローグラフに基づいて、前記第一のコントロールデータフローグラフが表す前記第一の演算順序とは異なる演算順序を表す変形のコントロールデータフローグラフを生成するグラフ変形部と、
前記グラフ変形部によって生成された前記変形のコントロールデータフローグラフから、定型のコントロールデータフローグラフと同じ演算順序を表す定型部分を抽出する定型部分抽出部と
を備えることを特徴とする回路設計支援装置。
【請求項２】
前記グラフ変形部は、変形しても演算結果が変わらない可変部分を前記第一のコントロールデータフローグラフから選択し、選択した前記可変部分を変形することによって、前記変形のコントロールデータフローグラフを生成する
ことを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
前記グラフ変形部は、加算と減算とから成る加減算部分を前記可変部分として選択し、前記加減算部分の前記加算と前記加減算部分の前記減算との演算順序を入れ換える変形によって、前記変形のコントロールデータフローグラフを生成する
ことを特徴とする請求項２に記載の回路設計支援装置。
【請求項４】
前記グラフ変形部は、減算元の値から複数の減算値を引く多重減算を前記可変部分として選択し、前記多重減算を、前記複数の減算値を合計して得られる合計値を前記減算元の値から引く合計減算に変形することによって、前記変形のコントロールデータフローグラフを生成する
ことを特徴とする請求項２に記載の回路設計支援装置。
【請求項５】
前記グラフ変形部は、複数の条件に基づいて処理が分岐する条件分岐部分を前記第一のコントロールデータフローグラフから選択し、選択した前記条件分岐部分の前記複数の条件を互いに入れ換える変形によって、前記変形のコントロールデータフローグラフを生成する
ことを特徴とする請求項１に記載の回路設計支援装置。
【請求項６】
前記回路設計支援装置は、グラフ補助変形部を備え、
前記定型部分抽出部は、前記変形のコントロールデータフローグラフから前記定型部分の候補を抽出し、
前記グラフ補助変形部は、前記定型部分の候補に含まれる部分演算と同じ種類の演算を前記変形のコントロールデータフローグラフから交換演算として選択し、前記交換演算を前記部分演算と入れ換え、
前記定型部分抽出部は、前記部分演算の代わりに前記交換演算を含む前記定型部分の候補を前記定型部分として抽出する
ことを特徴とする請求項１から請求項５のいずれかに記載の回路設計支援装置。
【請求項７】
前記変形のコントロールデータフローグラフは、前記部分演算で用いられる変数のビット数を表す元のビット数値と、前記交換演算の候補群と、各交換演算の候補で用いられる変数のビット数を表す交換のビット数値を含み、
前記定型のコントロールデータフローグラフは、前記部分演算と順番が同じである定型演算と、前記定型演算で用いられる変数のビット数を表す定型のビット数値とを含み、
前記グラフ補助変形部は、前記変形のコントロールデータフローグラフに含まれる前記交換演算の候補群から、前記変形のコントロールデータフローグラフに含まれる前記元のビット数値よりも、前記定型のコントロールデータフローグラフに含まれる前記定型のビット数値に近いビット数の変数が用いられる候補を前記交換演算として選択する
ことを特徴とする請求項６に記載の回路設計支援装置。
【請求項８】
前記回路設計支援装置は、包含グラフ置換部を備え、
前記定型部分抽出部は、第一の定型のコントロールデータフローグラフと同じ演算順序を表す第一の定型部分と、前記第一の定型のコントロールデータフローグラフに包含される第二の定型のコントロールデータフローグラフと同じ演算順序を表す第二の定型部分とを前記変形のコントロールデータフローグラフから抽出し、
前記包含グラフ置換部は、前記変形のコントロールデータフローグラフに含まれる前記第二の定型部分を前記第一の定型のコントロールデータフローグラフに置き換える
ことを特徴とする請求項１から請求項７のいずれかに記載の回路設計支援装置。
【請求項９】
前記回路設計支援装置は、前記第一の定型部分が実行される第一の実行時間帯と前記第二の定型部分が実行される第二の実行時間帯とを示すスケジューリングデータを取得するスケジューリングデータ取得部を備え、
前記包含グラフ置換部は、前記スケジューリングデータが示す前記第一の実行時間帯と前記スケジューリングデータが示す前記第二の実行時間帯とが重複しない場合に、前記第二の定型部分を前記第一の定型のコントロールデータフローグラフに置き換える
ことを特徴とする請求項８に記載の回路設計支援装置。
【請求項１０】
前記第一の定型のコントロールデータフローグラフに置き換えられた後の前記第二の定型部分から、前記第一の定型のコントロールデータフローグラフに含まれるが前記第二の定型のコントロールデータフローグラフに含まれない未使用演算を選択する未使用演算選択部と、
前記未使用演算選択部によって選択された前記未使用演算と同じ種類の演算を、前記変形のコントロールデータフローグラフから、代替演算として選択する代替演算選択部と、
前記代替演算選択部によって選択された前記代替演算を削除し、前記未使用演算を前記代替演算に置き換える演算置換部と
を備えることを特徴とする請求項８または請求項９に記載の回路設計支援装置。
【請求項１１】
第一の演算順序を表す第一のコントロールデータフローグラフに基づいて、前記第一のコントロールデータフローグラフが表す前記第一の演算順序とは異なる演算順序を表す変形のコントロールデータフローグラフを生成するグラフ変形処理と、
前記グラフ変形処理によって生成された前記変形のコントロールデータフローグラフから、定型のコントロールデータフローグラフと同じ演算順序を表す定型部分を抽出する定型部分抽出処理と
をコンピュータに実行させるための回路設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路の設計を支援する技術に関するものである。
【背景技術】
【０００２】
従来、半導体集積回路を設計するために、ハードウェア記述言語を用いて、レジスタ（フリップフロップ）間の組み合わせ回路の動作を記述したＲＴＬを設計していた。ＲＴＬはＲｅｓｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌの略称である。
近年では集積回路の回路規模が増大しており、ＲＴＬの設計に多大な時間を要するようになっていた。
そこで、ＲＴＬよりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語を用いて、自動的にＲＴＬを生成する技術が提唱されている。そして、これを実現するツールが高位合成ツールとして市販されている。
【０００３】
一方で、既に最適化されたＲＴＬの設計資産を利用することによって、高性能で小規模な集積回路を短期間で設計する方法も広く行われている。ＲＴＬの設計資産はＲＴＬ  ＩＰ（Ｉｎｔｅｒｌｌｅｃｔｕａｌ  Ｐｒｏｐｅｒｔｙ）と呼ばれる。
【０００４】
非特許文献１は、高性能で小規模なＲＴＬを短期間で得るために、以下のような方法を開示している。
その方法は、ユーザーが記述した高級言語から高位合成によって得られるＣＤＦＧの部分とパターンが一致するＣＤＦＧテンプレートを、既に最適化されたＲＴＬ  ＩＰから自動的に抽出する、というものである。ＣＤＦＧはコントロールデータフローグラフの略称である。
しかし、非特許文献１は、得られたＣＤＦＧの部分とパターンが類似するＣＤＦＧテンプレートを利用する技術を開示していない。そのため、非特許文献１で得られたＲＴＬが最適解であるとは限らない。
【０００５】
特許文献１は、小規模なＲＴＬを短期間で得るために、以下のような方法を開示している。
その方法は、ユーザーが記述した高級言語から高位合成によってＣＤＦＧを得て、ＣＤＦＧから類似性が高いパターン対を自動的に抽出し、抽出したパターン対がタイミングの関係で共有可能であるか判定し、共有可能であるパターン対を共有化する、というものである。
しかし、特許文献１は、得られたＣＤＦＧから類似性の高いパターン対をより多く抽出するための技術を開示していない。そのため、特許文献１で得られたＲＴＬが最適解であるとは限らない。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−１２３５６３号公報
【非特許文献】
【０００７】
【非特許文献１】Ｍ．Ｃｏｒａｚａｏ，Ｍ．Ｋｈａｌａｆ，Ｌ．Ｇｕｅｒｒａ，Ｍ．Ｐｏｔｋｏｎｊａｋ，ａｎｄ  Ｊ．Ｒａｂａｅｙ，“Ｐｅｒｆｏｍａｎｃｅ  Ｏｐｔｉｍｉｚａｔｉｏｎ  Ｕｓｉｎｇ  Ｔｅｍｐｌａｔｅ  Ｍａｐｐｉｎｇ  ｆｏｒ  Ｄａｔａｐａｔｈ−Ｉｎｔｅｎｓｉｖｅ  Ｈｉｇｈ−Ｌｅｖｅｌ  Ｓｙｎｔｈｅｓｉｓ”，Ｐｒｏｃｅｅｄｉｎｇｓ  ｏｆ  ＩＥＥＥ  Ｔｒａｎｓａｃｔｉｏｎｓ  ｏｎ  Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ  ｏｆ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｕｒｃｕｉｔｓ  ａｎｄ  Ｓｙｓｔｅｍｓ，ｖｏｌ．１５，  Ｎｏ．８，  １９９６
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、コントロールデータフローグラフから定型部分をより多く抽出できるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明の回路設計支援装置は、
第一の演算順序を表す第一のコントロールデータフローグラフに基づいて、前記第一のコントロールデータフローグラフが表す前記第一の演算順序とは異なる演算順序を表す変形のコントロールデータフローグラフを生成するグラフ変形部と、
前記グラフ変形部によって生成された前記変形のコントロールデータフローグラフから、定型のコントロールデータフローグラフと同じ演算順序を表す定型部分を抽出する定型部分抽出部とを備える。
【発明の効果】
【００１０】
本発明によれば、コントロールデータフローグラフから定型部分をより多く抽出することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１における高位合成システム１００の構成図である。
【図２】実施の形態１における回路設計支援装置２００の機能構成図である。
【図３】実施の形態１における回路設計支援装置２００が実行する回路設計支援処理のフローチャートである。
【図４】実施の形態１における元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１の一例を示す図である。
【図５】実施の形態１における第一のＣＤＦＧテンプレート１４０に含まれる第一の定型のＣＤＦＧ１４１の一例を示す図である。
【図６】実施の形態１における第二のＣＤＦＧテンプレート１４０に含まれる第二の定型のＣＤＦＧ１４１の一例を示す図である。
【図７】実施の形態１における元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１の一例を示す図である。
【図８】実施の形態１における変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１の一例を示す図である。
【図９】実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
【図１０】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１１】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１２】実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
【図１３】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１４】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１５】実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
【図１６】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１７】実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図１８】実施の形態１における回路設計支援装置２００のハードウェア構成図である。
【図１９】実施の形態２における回路設計支援装置２００の機能構成図である。
【図２０】実施の形態２における一致部分抽出処理（Ｓ１２０）のフローチャートである。
【図２１】実施の形態２におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図２２】実施の形態２におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
【図２３】実施の形態２におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
【図２４】実施の形態３における回路設計支援装置２００の機能構成図である。
【図２５】実施の形態３におけるリソース共有化部２６０の機能構成図である。
【図２６】実施の形態３における回路設計支援装置２００が実行する回路設計支援処理のフローチャートである。
【図２７】実施の形態３におけるリソース共有化処理（Ｓ１６０）のフローチャートである。
【図２８】実施の形態３における変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１の一例を示す図である。
【図２９】実施の形態３におけるスケジューリングのＣＤＦＧファイル１３０に含まれるスケジューリングのＣＤＦＧ１３１の一例を示す図である。
【図３０】実施の形態３におけるスケジューリングのＣＤＦＧファイル１３０に含まれるスケジューリングのＣＤＦＧ１３１の一例を示す図である。
【図３１】実施の形態３における共有化のＣＤＦＧファイル１３０に含まれる共有化のＣＤＦＧ１３１の一例を示す図である。
【図３２】実施の形態３における共有化のＣＤＦＧファイル１３０に含まれる共有化のＣＤＦＧ１３１の一例を示す図である。
【発明を実施するための形態】
【００１２】
実施の形態１．
コントロールデータフローグラフから定型部分をより多く抽出する形態について説明する。
【００１３】
図１は、実施の形態１における高位合成システム１００の構成図である。
実施の形態１における高位合成システム１００の構成について、図１に基づいて説明する。
但し、高位合成システム１００の構成は図１と異なる構成であっても構わない。例えば、高位合成装置１１０および回路設計支援装置２００を１台の装置で構成しても構わない。
【００１４】
高位合成システム１００は高位合成を行うシステムである。
高位合成は、Ｃ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語を用いた集積回路の動作を記述した動作記述から、レジスタ転送レベル（ＲＴＬ）で集積回路の動作を記述したＲＴＬ記述を生成する技術である。
【００１５】
高位合成システム１００は、高位合成を実行する高位合成装置１１０と、高位合成の実行を支援する回路設計支援装置２００とを備える。
【００１６】
高位合成装置１１０は、ＣＤＦＧ生成部１１１と、スケジューリング部１１２と、バインディング部１１３と、ＲＴＬ記述生成部１１４と、合成装置記憶部１２０とを備える。
【００１７】
ＣＤＦＧ生成部１１１は、動作記述を含む動作記述ファイル１２１からＣＤＦＧを含むＣＤＦＧファイル１３０を生成する。ＣＤＦＧは集積回路が行う複数の演算の演算順序を表す。ＣＤＦＧはコントロールデータフローグラフの略称であり、コントロールフローグラフ（ＣＦＧ）とデータフローグラフ（ＤＦＧ）とを含む。
ＣＤＦＧファイル１３０を生成する方法は、従来の高位合成におけるＣＤＦＧ生成方法と同様である。
【００１８】
スケジューリング部１１２は、ＣＤＦＧファイル１３０に基づいて、スケジューリングデータ１２２を生成する。
スケジューリングデータ１２２は、ＣＤＦＧに含まれる各演算の実行時間帯を示すデータである。
スケジューリングデータ１２２を生成する方法は、従来の高位合成におけるスケジューリング方法と同様である。
【００１９】
バインディング部１１３は、ＣＤＦＧファイル１３０とスケジューリングデータ１２２とに基づいて、バインディングデータ１２３を生成する。
バインディングデータ１２３は、ＣＤＦＧに含まれる各演算に割り当てられる演算リソースを示すデータである。演算リソースは、演算器およびレジスタなどである。
バインディングデータ１２３を生成する方法は、従来の高位合成におけるバインディング方法と同様である。
【００２０】
ＲＴＬ記述生成部１１４は、ＣＤＦＧファイル１３０とスケジューリングデータ１２２とバインディングデータ１２３とに基づいて、ＲＴＬ記述を示すＲＴＬ記述ファイル１２４を生成する。
ＲＴＬ記述ファイル１２４を生成する方法は、従来の高位合成におけるＲＴＬ記述生成方法と同様である。
【００２１】
合成装置記憶部１２０は、高位合成装置１１０が使用、生成または入出力するデータを記憶する。
例えば、合成装置記憶部１２０は、動作記述ファイル１２１、ＣＤＦＧファイル１３０、スケジューリングデータ１２２、バインディングデータ１２３およびＲＴＬ記述ファイル１２４などを記憶する。
【００２２】
図２は、実施の形態１における回路設計支援装置２００の機能構成図である。
実施の形態１における回路設計支援装置２００の機能構成について、図２に基づいて説明する。但し、回路設計支援装置２００の機能構成は図２と異なる機能構成であっても構わない。
【００２３】
回路設計支援装置２００は、ＣＤＦＧ取得部２１０と、一致部分抽出部２２０と、ＣＤＦＧ変形部２３０と、支援データ提供部２８０と、支援装置記憶部２９０とを備える。
ＣＤＦＧ取得部２１０は、高位合成装置１１０からＣＤＦＧファイル１３０を取得する。
一致部分抽出部２２０は、ＣＤＦＧファイル１３０に含まれるＣＤＦＧからＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧと演算順序が一致する一致部分（定型部分の一例）を抽出し、抽出した一致部分を特定する情報を含む一致部分データ２９１を生成する。一致部分は定型のＣＤＦＧと同じ演算順序を表す定型部分である。
ＣＤＦＧ変形部２３０は、ＣＤＦＧファイル１３０に含まれるＣＤＦＧを変形することによって、変形のＣＤＦＧファイル１３０を生成する。
支援データ提供部２８０は、変形のＣＤＦＧファイル１３０と一致部分データ２９１とを高位合成装置１１０に提供する。
高位合成装置１１０のスケジューリング部１１２は、提供された変形のＣＤＦＧファイル１３０と一致部分データ２９１とに基づいて、スケジューリングデータ１２２を生成する。そして、バインディング部１１３およびＲＴＬ記述生成部１１４は、変形のＣＤＦＧファイル１３０とスケジューリングデータ１２２とに基づいて、バインディングデータ１２３およびＲＴＬ記述ファイル１２４を生成する。
【００２４】
支援装置記憶部２９０は、回路設計支援装置２００が使用、生成または入出力するデータを記憶する。
例えば、支援装置記憶部２９０は、ＣＤＦＧファイル１３０、一致部分データ２９１およびＣＤＦＧテンプレート１４０などを記憶する。
ＣＤＦＧテンプレート１４０は、ＲＴＬ設計資産（ＲＴＬ  ＩＰ）の一例である。
【００２５】
図３は、実施の形態１における回路設計支援装置２００が実行する回路設計支援処理のフローチャートである。
実施の形態１における回路設計支援装置２００が実行する回路設計支援処理について、図３に基づいて説明する。但し、回路設計支援処理は図３と異なる処理であっても構わない。
【００２６】
Ｓ１１０において、高位合成装置１１０のＣＤＦＧ生成部１１１は、動作記述ファイル１２１に基づいてＣＤＦＧファイル１３０を生成する。
そして、回路設計支援装置２００のＣＤＦＧ取得部２１０は、ＣＤＦＧ生成部１１１によって生成されたＣＤＦＧファイル１３０を高位合成装置１１０から取得（受信）する。
以下、Ｓ１１０で取得されるＣＤＦＧファイル１３０を元のＣＤＦＧファイル１３０という。また、元のＣＤＦＧファイル１３０に含まれるＣＤＦＧを元のＣＤＦＧ１３１という。
Ｓ１１０の後、処理はＳ１２０に進む。
【００２７】
図４は、実施の形態１における元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１の一例を示す図である。
実施の形態１における元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１について、図４に基づいて説明する。但し、元のＣＤＦＧ１３１は図４と異なるＣＤＦＧであっても構わない。
【００２８】
元のＣＤＦＧ１３１は、Ｙ＝（（Ａ＋Ｂ）×（Ｃ＋Ｄ）−Ｅ）＋（（（Ｇ＋Ｈ）×（Ｉ＋Ｊ）＋Ｋ−Ｌ）＞＞Ｆ）×Ｍ＋Ｎ−Ｏという演算式を表している。
図中の矢印は演算の実行順序、つまり、演算順序を表している。
図中の四角形は演算で用いられる変数を表している。
図中の丸印は演算の内容を示す演算記号を表している。
以降のＣＤＦＧの図において、矢印、四角形および丸印の意味は図４と同様である。
【００２９】
例えば、ＣＤＦＧ取得部２１０は、図４に示すような元のＣＤＦＧファイル１３０を取得する。
図３に戻り、Ｓ１２０から説明を続ける。
【００３０】
Ｓ１２０において、一致部分抽出部２２０は、元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１から、いずれかのＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧと演算順序が一致する一致部分１３２を抽出する。
例えば、一致部分抽出部２２０は、非特許文献１に開示されているテンプレートマッチングなどの方法を用いて、一致部分１３２を抽出する。
【００３１】
そして、一致部分抽出部２２０は、一致部分１３２を特定する情報を含む一致部分データ２９１を生成する。但し、一致部分１３２がみつからない場合、一致部分抽出部２２０は一致部分データ２９１を生成しない。
Ｓ１２０の後、処理はＳ１３０に進む。
【００３２】
図５は、実施の形態１における第一のＣＤＦＧテンプレート１４０に含まれる第一の定型のＣＤＦＧ１４１の一例を示す図である。
図６は、実施の形態１における第二のＣＤＦＧテンプレート１４０に含まれる第二の定型のＣＤＦＧ１４１の一例を示す図である。
ＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例について、図５および図６に基づいて説明する。但し、定型のＣＤＦＧ１４１は図５および図６と異なるＣＤＦＧであっても構わない。
【００３３】
図５において、第一の定型のＣＤＦＧ１４１は、Ｙ＝（Ａ＋Ｂ）×（Ｃ＋Ｄ）−Ｅという演算式を表している。
図６において、第二の定型のＣＤＦＧ１４１は、Ｙ＝（Ａ＋Ｂ）×Ｃという演算式を表している。
【００３４】
図７は、実施の形態１における元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１の一例を示す図である。
図７において、第一の一致部分１３２は、第一の定型のＣＤＦＧ１４１（図５参照）と演算順序が一致している。
また、第二の一致部分１３２は、第二の定型のＣＤＦＧ１４１（図６参照）と演算順序が一致している。
そのため、一致部分抽出部２２０は、元のＣＤＦＧ１３１から第一の一致部分１３２を抽出する。また、一致部分抽出部２２０は、元のＣＤＦＧ１３１から第二の一致部分１３２を抽出する。
図３に戻り、Ｓ１３０から説明を続ける。
【００３５】
Ｓ１３０において、ＣＤＦＧ変形部２３０は、元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１を変形できるか判定する。
但し、二回目以降のＳ１３０において、ＣＤＦＧ変形部２３０は、変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１を変形できるか判定する。
ＣＤＦＧ１３１の変形方法については後述する。
ＣＤＦＧ１３１を変形することができる場合（ＹＥＳ）、処理はＳ１３１に進む。
ＣＤＦＧ１３１を変形することができない場合（ＮＯ）、処理はＳ１４０に進む。
【００３６】
Ｓ１３１において、ＣＤＦＧ変形部２３０は、元のＣＤＦＧファイル１３０に含まれる元のＣＤＦＧ１３１を変形することによって、変形のＣＤＦＧファイル１３０を生成する。
但し、二回目以降のＳ１３１において、ＣＤＦＧ変形部２３０は、変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１を変形することによって、変形のＣＤＦＧファイル１３０を新たに生成する。
Ｓ１３１の後、処理はＳ１３２に進む。
【００３７】
図７において、加減算部分１３３は、加算（＋Ｋ）と減算（−Ｌ）とから成る部分である。
例えば、ＣＤＦＧ変形部２３０は、加減算部分１３３の加算を加減算部分１３３の減算と入れ換えて、元のＣＤＦＧ１３１を変形する。
これにより、図８に示す変形のＣＤＦＧ１３１が得られる。変形の加減算部分１３３（図８参照）の演算結果は変形の加減算部分１３３（図７参照）の演算結果と同じである。
図３に戻り、Ｓ１３２から説明を続ける。
【００３８】
Ｓ１３２において、一致部分抽出部２２０は、変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１から新たな一致部分１３２を抽出し、抽出した新たな一致部分１３２を特定する情報を含む新たな一致部分データ２９１を生成する。
Ｓ１３２はＳ１２０と同様の処理である。
Ｓ１３２の後、処理はＳ１３０に戻る。
【００３９】
図８は、実施の形態１における変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１の一例を示す図である。
図８において、第一の一致部分１３２（２）は、第一の定型のＣＤＦＧ１４１（図５参照）と演算順序が一致する。
そのため、一致部分抽出部２２０は、変形のＣＤＦＧ１３１から第一の一致部分１３２（２）を抽出する。
図３に戻り、Ｓ１４０から説明を続ける。
【００４０】
Ｓ１４０において、支援データ提供部２８０は、最後に生成された変形のＣＤＦＧファイル１３０と、各一致部分１３２の一致部分データ２９１とを高位合成装置１１０に提供（送信）する。
但し、変形のＣＤＦＧファイル１３０が生成されなかった場合、支援データ提供部２８０は、変形のＣＤＦＧファイル１３０の代わりに元のＣＤＦＧファイル１３０を高位合成装置１１０に提供する。
【００４１】
高位合成装置１１０において、スケジューリング部１１２は、提供されたＣＤＦＧファイル１３０および一致部分データ２９１に基づいて、スケジューリングデータ１２２を生成する。例えば、スケジューリング部１１２は、非特許文献１に開示される方法によって、スケジューリングデータ１２２を生成する。
バインディング部１１３は、提供されたＣＤＦＧファイル１３０および生成されたスケジューリングデータ１２２に基づいて、バインディングデータ１２３を生成する。バインディングデータ１２３を生成する方法は、一般的なバインディング方法と同じでよい。
ＲＴＬ記述生成部１１４は、提供されたＣＤＦＧファイル１３０、生成されたスケジューリングデータ１２２および生成されたバインディングデータ１２３に基づいて、ＲＴＬ記述ファイル１２４を生成する。ＲＴＬ記述ファイル１２４を生成する方法は、一般的なＲＴＬ記述生成方法と同じでよい。
Ｓ１４０の後、回路設計支援処理は終了する。
【００４２】
以下に、ＣＤＦＧ１３１を変形する変形方法について説明する。
例えば、ＣＤＦＧ変形部２３０は、以下に示す変形方法によって、ＣＤＦＧ１３１を変形する。但し、ＣＤＦＧ変形部２３０は、以下に示す変形方法とは異なる方法で、ＣＤＦＧ１３１を変形しても構わない。
【００４３】
まず、第一の変形方法について説明する。
ＣＤＦＧ変形部２３０は、加算と減算とから成る加減算部分（可変部分の一例）をＣＤＦＧ１３１から選択する。そして、ＣＤＦＧ変形部２３０は、加減算部分の加算と加減算部分の減算との演算順序を入れ換えることによって、ＣＤＦＧ１３１を変形する。
なお、加減算部分の加算と加減算部分の減算との演算順序を入れ換えても、加減算部分の演算結果は変わらない。
【００４４】
図９は、実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
図９において、定型のＣＤＦＧ１４１は、Ｙ＝（Ａ×Ｂ）−Ｃ＋Ｄという演算式を表している。
【００４５】
図１０は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１０において、ＣＤＦＧ１３１は、（Ａ×Ｂ）＋Ｃ−Ｄという部分式を表す演算部分を含んでいる。
この演算部分は、定型のＣＤＦＧ１４１（図９参照）と演算順序が異なる。
但し、この演算部分は、＋Ｃ−Ｄという加減算部分１３３を含んでいる。加減算部分１３３の加算と加減算部分１３３の減算とを入れ換えることにより、図１１に示すＣＤＦＧ１３１が得られる。
【００４６】
図１１は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１１において、ＣＤＦＧ１３１は、（Ａ×Ｂ）−Ｄ＋Ｃという部分式を表す演算部分を含んでいる。
この演算部分は、定型のＣＤＦＧ１４１（図９参照）と演算順序が同じである。
したがって、一致部分抽出部２２０は、この演算部分を一致部分１３２として抽出することができる。
なお、図１１に示すＣＤＦＧ１３１の演算結果は、図１０に示すＣＤＦＧ１３１の演算結果と同じである。
【００４７】
次に、第二の変形方法について説明する。
ＣＤＦＧ変形部２３０は、減算元の値から複数の減算値を引く多重減算（可変部分の一例）をＣＤＦＧ１３１から選択する。そして、ＣＤＦＧ変形部２３０は、多重減算を合計減算に変形することによって、ＣＤＦＧ１３１を変形する。合計減算は複数の減算値を合計して得られる合計値を減算元の値から引く演算である。
なお、合計減算の演算結果は多重減算の演算結果と同じである。
【００４８】
図１２は、実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
図１２において、定型のＣＤＦＧ１４１は、Ｙ＝（Ａ＋Ｂ）−（Ｃ＋Ｄ）という演算式を表している。
【００４９】
図１３は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１３において、ＣＤＦＧ１３１は、（Ａ＋Ｂ）−Ｃ−Ｄという部分式を表す演算部分を含んでいる。
この演算部分は、定型のＣＤＦＧ１４１（図１２参照）と演算順序が異なる。
但し、この演算部分は、−Ｃ−Ｄという多重減算１３４を含んでいる。多重減算１３４を−（Ｃ＋Ｄ）という合計減算に変形することにより、図１４に示すＣＤＦＧ１３１が得られる。
【００５０】
図１４は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１４において、ＣＤＦＧ１３１は、（Ａ＋Ｂ）−（Ｃ＋Ｄ）という部分式を表す演算部分を含んでいる。
この演算部分は、定型のＣＤＦＧ１４１（図１２参照）と演算順序が同じである。
したがって、一致部分抽出部２２０は、この演算部分を一致部分１３２として抽出することができる。
なお、図１４に示すＣＤＦＧ１３１の演算結果は、図１３に示すＣＤＦＧ１３１の演算結果と同じである。
【００５１】
次に、第三の変形方法について説明する。
ＣＤＦＧ変形部２３０は、複数の条件に基づいて処理が分岐する条件分岐部分をＣＤＦＧ１３１から選択する。そして、ＣＤＦＧ変形部２３０は、条件分岐部分の複数の条件を互いに入れ換えることによって、ＣＤＦＧ１３１を変形する。
【００５２】
図１５は、実施の形態１におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
図１５において、定型のＣＤＦＧ１４１は、Ａ＝０の場合の演算式であるＹ＝Ｂ＋Ｃと、Ａ≠０の場合の演算式であるＹ＝Ｂ−Ｃとを示す条件分岐の演算を表している。
【００５３】
図１６は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１６において、ＣＤＦＧ１３１は、Ａ≠０の場合の演算式であるＹ＝Ｂ＋Ｃと、Ａ＝０の場合の演算式であるＹ＝Ｂ−Ｃとを示す条件分岐部分を含んでいる。
この条件分岐部分は、定型のＣＤＦＧ１４１（図１５参照）と演算順序が異なる。
但し、条件分岐部分の第一の条件であるＡ≠０と条件分岐部分の第二の条件であるＡ＝０とを入れ換えることにより、図１７に示すＣＤＦＧ１３１が得られる。
【００５４】
図１７は、実施の形態１におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図１７において、ＣＤＦＧ１３１は、Ａ＝０の場合の演算式であるＹ＝Ｂ＋Ｃと、Ａ≠０の場合の演算式であるＹ＝Ｂ−Ｃとを示す条件分岐部分を含んでいる。
この条件分岐部分は、定型のＣＤＦＧ１４１（図１５参照）と演算順序が同じである。
したがって、一致部分抽出部２２０は、この条件分岐部分を一致部分１３２として抽出することができる。
【００５５】
図１８は、実施の形態１における回路設計支援装置２００のハードウェア構成図である。
実施の形態１における回路設計支援装置２００のハードウェア構成について、図１８に基づいて説明する。
但し、回路設計支援装置２００のハードウェア構成は図１８に示す構成と異なる構成であってもよい。なお、高位合成システム１００のハードウェア構成は回路設計支援装置２００と同様である。
【００５６】
回路設計支援装置２００は、演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５を備えるコンピュータである。
演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４および入出力装置９０５はバス９０９に接続している。
【００５７】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリまたはハードディスク装置である。
主記憶装置９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、有線または無線でインターネット、ＬＡＮ（ローカルエリアネットワーク）、電話回線網またはその他のネットワークを介して通信を行う。
入出力装置９０５は、例えば、マウス、キーボード、ディスプレイ装置である。
【００５８】
プログラムは、補助記憶装置９０２に記憶されている。
例えば、オペレーティングシステム（ＯＳ）が補助記憶装置９０２に記憶される。また、「〜部」として説明している機能を実現するプログラムが補助記憶装置９０２に記憶される。
プログラムは、補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされ、演算装置９０１に読み込まれ、演算装置９０１によって実行される。
【００５９】
「〜の判断」、「〜の判定」、「〜の抽出」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置９０３または補助記憶装置９０２に記憶される。
【００６０】
実施の形態１により、ＲＴＬ設計資産であるＣＤＦＧテンプレート１４０を利用して、非特許文献１に開示される技術よりもハードウェア構成が小規模な半導体集積回路を設計することができる。
【００６１】
実施の形態２．
ＣＤＦＧ１３１の変数のビット数が定型のＣＤＦＧ１４１と類似になるようにＣＤＦＧ１３１を変形する形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００６２】
高位合成システム１００の構成は、実施の形態１（図１参照）と同様である。
【００６３】
図１９は、実施の形態２における回路設計支援装置２００の機能構成図である。
実施の形態２における回路設計支援装置２００の機能構成について、図１９に基づいて説明する。但し、回路設計支援装置２００の機能構成は図１９と異なる機能構成であっても構わない。
【００６４】
回路設計支援装置２００は、実施の形態１（図２参照）で説明した機能構成に加えて、ＣＤＦＧ補助変形部２４０を備える。
一致部分抽出部２２０は、ＣＤＦＧ１３１から定型のＣＤＦＧ１４１と演算順序が同じである部分を一致部分１３２の候補として抽出する。
ＣＤＦＧ補助変形部２４０はＣＤＦＧ１３１から交換演算を選択し、選択した交換演算を一致部分１３２の候補に含まれる演算（以下、部分演算という）と入れ換える。交換演算は、部分演算と同じ種類の演算である。交換演算を部分演算と入れ換えても一致部分１３２の候補の演算順序は変わらず、ＣＤＦＧ１３１の演算結果は変わらない。交換演算の具体例については後述する。
一致部分抽出部２２０は、交換演算を部分演算と入れ換えた後の一致部分１３２の候補を一致部分１３２として抽出する。
【００６５】
回路設計支援装置２００の回路設計支援処理は、実施の形態１（図３参照）と同様である。
但し、Ｓ１２０およびＳ１３２において、一致部分１３２を抽出するために、一致部分抽出部２２０およびＣＤＦＧ補助変形部２４０は以下のように動作する。
【００６６】
図２０は、実施の形態２における一致部分抽出処理（Ｓ１２０）のフローチャートである。
実施の形態２における一致部分抽出処理（Ｓ１２０）について、図２０に基づいて説明する。但し、一致部分抽出処理（Ｓ１２０）は図２０と異なる処理であっても構わない。
なお、一致部分抽出処理（Ｓ１３２）は一致部分抽出処理（Ｓ１２０）と同様である。
【００６７】
Ｓ１２１において、一致部分抽出部２２０は、いずれかのＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１と演算順序が一致する部分をＣＤＦＧ１３１から一致部分１３２の候補として抽出する。
例えば、一致部分抽出部２２０は、ＣＤＦＧ１３１（図２１参照）から、定型のＣＤＦＧ１４１（図２２参照）と演算順序が一致する一致部分１３２の候補を抽出する。
Ｓ１２１の後、処理はＳ１２２に進む。
【００６８】
図２１は、実施の形態２におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
図２２は、実施の形態２におけるＣＤＦＧテンプレート１４０に含まれる定型のＣＤＦＧ１４１の一例を示す図である。
ＣＤＦＧ１３１および定型のＣＤＦＧ１４１に含まれる各矢印に付記されている数値は、変数のビット数を表している。
図２０に戻り、Ｓ１２２から説明を続ける。
【００６９】
Ｓ１２２において、ＣＤＦＧ補助変形部２４０は、定型のＣＤＦＧ１４１に含まれる演算（以下、定型演算１４２という）で用いられる変数とビット数が異なる変数が用いられる部分演算１３５を、一致部分１３２の候補から選択する。
定型演算１４２は、一致部分１３２の候補における部分演算１３５と順番が同じである演算である。
以下、部分演算１３５で用いられる変数のビット数を元のビット数といい、定型演算１４２で用いられる変数のビット数を定型のビット数という。
【００７０】
例えば、ＣＤＦＧ補助変形部２４０は、一致部分１３２の候補（図２１参照）から、定型のＣＤＦＧ１４１（図２２参照）の定型演算１４２と変数のビット数が異なる部分演算１３５を選択する。部分演算１３５の元のビット数（１０）は定型演算１４２の定型のビット数（３２）と異なっている。
Ｓ１２２の後、処理はＳ１２３に進む。
【００７１】
Ｓ１２３において、ＣＤＦＧ補助変形部２４０は、ＣＤＦＧ１３１から交換演算１３６の候補群を選択する。以下、交換演算１３６の候補で用いられる変数のビット数を交換のビット数という。
例えば、ＣＤＦＧ補助変形部２４０は、ＣＤＦＧ１３１（図２１参照）から交換演算１３６の２つの候補を選択する。いずれの候補も加算であるため、加算である部分演算１３５と入れ換えても、一致部分１３２の候補の演算順序は定型のＣＤＦＧ１４１（図２２参照）と一致する。また、部分演算１３５をいずれの候補と入れ換えても、ＣＤＦＧ１３１の演算結果は変わらない。
Ｓ１２３の後、処理はＳ１２４に進む。
【００７２】
Ｓ１２４において、ＣＤＦＧ補助変形部２４０は、部分演算１３５の元のビット数よりも、定型演算１４２の定型のビット数に近いビット数の変数が用いられる交換演算１３６の候補群を選択する。
例えば、ＣＤＦＧ補助変形部２４０は、ＣＤＦＧ１３１（図２１参照）から交換演算１３６の２つの候補を選択する。いずれの候補の交換のビット数（２０、３０）も、部分演算１３５の元のビット数（１０）よりも、定型演算１４２（図２２参照）の定型のビット数（３２）に近い。
【００７３】
そして、ＣＤＦＧ補助変形部２４０は、定型演算１４２の定型のビット数に最も近いビット数の変数が用いられる交換演算１３６の候補を交換演算１３６として選択する。
例えば、交換演算１３６の２つの候補（図２１参照）のそれぞれの交換のビット数は２０および３０である。一方、定型演算１４２（図２２参照）の定型のビット数は３２である。したがって、ＣＤＦＧ補助変形部２４０は、交換演算１３６の２つの候補から、交換のビット数が３０である方の候補を交換演算１３６として選択する。
Ｓ１２４の後、処理はＳ１２５に進む。
【００７４】
Ｓ１２５において、ＣＤＦＧ補助変形部２４０は、一致部分１３２の候補に含まれる部分演算１３５をＳ１２４で選択した交換演算１３６と入れ換える。
例えば、ＣＤＦＧ補助変形部２４０は、元のビット数が１０である部分演算１３５（図２１参照）を、交換のビット数が３０である交換演算１３６と入れ換える。これにより、ＣＤＦＧ１３１は図２３に示すように変形される。
図２３は、実施の形態２におけるＣＤＦＧファイル１３０に含まれるＣＤＦＧ１３１の一例を示す図である。
Ｓ１２５の後、処理はＳ１２６に進む。
【００７５】
Ｓ１２６において、一致部分抽出部２２０は、部分演算１３５を交換演算１３６と入れ換えた後の一致部分１３２の候補をＣＤＦＧ１３１から一致部分１３２として抽出する。
例えば、一致部分抽出部２２０は、ＣＤＦＧ１３１（図２３参照）から一致部分１３２を抽出する。
Ｓ１２６の後、一致部分抽出処理（Ｓ１２０）は終了する。
【００７６】
実施の形態２により、定型のＣＤＦＧ１４１における各変数のビット数を考慮して、半導体集積回路を設計することができる。
【００７７】
実施の形態３．
ＣＤＦＧ１３１が表す演算群の実行に用いる演算リソースの共有化を図る形態について説明する。
以下、実施の形態１と異なる事項について主に説明する。説明を省略する事項については実施の形態１と同様である。
【００７８】
高位合成システム１００の構成は、実施の形態１（図１参照）と同様である。
【００７９】
図２４は、実施の形態３における回路設計支援装置２００の機能構成図である。
実施の形態３における回路設計支援装置２００の機能構成について、図２４に基づいて説明する。但し、回路設計支援装置２００の機能構成は図２４と異なる機能構成であっても構わない。
【００８０】
回路設計支援装置２００は、実施の形態１（図２参照）で説明した機能に加えて、スケジューリングデータ取得部２５０とリソース共有化部２６０とを備える。
【００８１】
スケジューリングデータ取得部２５０は、変形のＣＤＦＧファイル１３０と各一致部分１３２の一致部分データ２９１とを高位合成装置１１０に提供する。
そして、スケジューリングデータ取得部２５０は、変形のＣＤＦＧファイル１３０と各一致部分１３２の一致部分データ２９１とに基づいて生成されたスケジューリングデータ１２２を高位合成装置１１０２００から取得する。
但し、スケジューリングデータ取得部２５０は、元のＣＤＦＧファイル１３０を提供し、元のＣＤＦＧファイル１３０に基づいて生成されたスケジューリングデータ１２２を取得しても構わない。
【００８２】
リソース共有化部２６０は、変形のＣＤＦＧファイル１３０とスケジューリングデータ１２２とに基づいて、共有化のＣＤＦＧファイル１３０を生成する。但し、リソース共有化部２６０は、元のＣＤＦＧファイル１３０とスケジューリングデータ１２２とに基づいてＣＤＦＧファイル１３０を生成しても構わない。
共有化のＣＤＦＧファイル１３０は共有化のＣＤＦＧ１３１を表す。共有化のＣＤＦＧ１３１は、演算リソースの共有化を図るために、変形のＣＤＦＧ１３１または元のＣＤＦＧ１３１を変形したものである。
【００８３】
支援データ提供部２８０は、共有化のＣＤＦＧファイル１３０と各一致部分１３２の一致部分データ２９１とを高位合成装置１１０に提供する。
高位合成装置１１０のスケジューリング部１１２は、提供された共有化のＣＤＦＧファイル１３０と各一致部分データ２９１とに基づいて、スケジューリングデータ１２２を新たに生成する。そして、バインディング部１１３およびＲＴＬ記述生成部１１４は、共有化のＣＤＦＧファイル１３０と新たに生成されたスケジューリングデータ１２２とに基づいて、バインディングデータ１２３およびＲＴＬ記述ファイル１２４を生成する。
【００８４】
図２５は、実施の形態３におけるリソース共有化部２６０の機能構成図である。
実施の形態３におけるリソース共有化部２６０の機能構成について、図２５に基づいて説明する。但し、リソース共有化部２６０の機能構成は図２５と異なる機能構成であっても構わない。
【００８５】
リソース共有化部２６０は、包含グラフ置換部２６１と、未使用演算選択部２６２と、代替演算選択部２６３と、演算置換部２６４とを備える。
以下、変形のＣＤＦＧファイル１３０および変形のＣＤＦＧ１３１は元のＣＤＦＧファイル１３０および元のＣＤＦＧ１３１と読み替えてもよい。
【００８６】
包含グラフ置換部２６１は、変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１のうちの第二の一致部分１３２を、第二の定型のＣＤＦＧ１４１を包含する第一の定型のＣＤＦＧ１４１に置き換える。第二の一致部分１３２は、第二の定型のＣＤＦＧ１４１と同じ演算順序を表す部分である。
未使用演算選択部２６２は、第一の定型のＣＤＦＧ１４１に置き換えられた後の第二の一致部分１３２から、第一の定型のＣＤＦＧ１４１に含まれるが第二の定型のＣＤＦＧ１４１に含まれない演算（以下、未使用演算という）を選択する。
代替演算選択部２６３は、未使用演算と同じ種類の演算（以下、代替演算という）を変形のＣＤＦＧ１３１から選択する。なお、未使用演算が実行されるタイミングで代替演算が実行されても、変形のＣＤＦＧ１３１の演算結果は変わらない。
演算置換部２６４は、変形のＣＤＦＧ１３１から代替演算を削除し、未使用演算を代替演算に置き換える。
【００８７】
演算置換部２６４によって処理された後の変形のＣＤＦＧ１３１または包含グラフ置換部２６１によって処理された後の変形のＣＤＦＧ１３１が、共有化のＣＤＦＧファイル１３０である。
【００８８】
図２６は、実施の形態３における回路設計支援装置２００が実行する回路設計支援処理のフローチャートである。
実施の形態３における回路設計支援装置２００が実行する回路設計支援処理について、図２６に基づいて説明する。但し、回路設計支援処理は図２６と異なる処理であっても構わない。
【００８９】
Ｓ１１０からＳ１３２は、実施の形態１（図３参照）と同じである。
【００９０】
Ｓ１５０において、スケジューリングデータ取得部２５０は、最終的に生成された変形のＣＤＦＧファイル１３０と、その変形のＣＤＦＧ１３１に含まれる各一致部分１３２の一致部分データ２９１と、を高位合成装置１１０に提供する。
高位合成装置１１０のスケジューリング部１１２は、提供された変形のＣＤＦＧファイル１３０と各一致部分データ２９１とに基づいて、スケジューリングデータ１２２を生成する。
そして、スケジューリングデータ取得部２５０は、生成されたスケジューリングデータ１２２を取得する。
Ｓ１５０の後、処理はＳ１６０に進む。
【００９１】
Ｓ１６０において、リソース共有化部２６０は、Ｓ１５０で提供された変形のＣＤＦＧファイル１３０と、Ｓ１５０で取得されたスケジューリングデータ１２２とに基づいて、共有化のＣＤＦＧファイル１３０を生成する。
リソース共有化処理（Ｓ１６０）の詳細については後述する。
Ｓ１６０の後、処理はＳ１７０に進む。
【００９２】
Ｓ１７０において、支援データ提供部２８０は、共有化のＣＤＦＧファイル１３０と共有化のＣＤＦＧ１３１に含まれる各一致部分１３２の一致部分データ２９１とを高位合成装置１１０に提供する。
そして、高位合成装置１１０のスケジューリング部１１２、バインディング部１１３およびＲＴＬ記述生成部１１４は、提供された共有化のＣＤＦＧファイル１３０と各一致部分データ２９１とに基づいて、スケジューリングデータ１２２、バインディングデータ１２３およびＲＴＬ記述ファイル１２４を生成する（図３のＳ１４０と同様）。
Ｓ１７０の後、回路設計支援処理は終了する。
【００９３】
図２７は、実施の形態３におけるリソース共有化処理（Ｓ１６０）のフローチャートである。
実施の形態３におけるリソース共有化処理（Ｓ１６０）について、図２７に基づいて説明する。但し、リソース共有化処理（Ｓ１６０）は図２７と異なる処理であっても構わない。
【００９４】
ここで、変形のＣＤＦＧ１３１は、第一の一致部分１３２と第二の一致部分１３２とを含む複数の一致部分１３２を含んでいるものとする。
以下に説明する第二の一致部分１３２が変形のＣＤＦＧ１３１に含まれない場合、リソース共有化処理（Ｓ１６０）は不要である。
【００９５】
Ｓ１６１において、包含グラフ置換部２６１は、スケジューリングデータ１２２に基づいて、スケジューリングのＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１から第二の一致部分１３２を選択する。
例えば、包含グラフ置換部２６１は、特許文献１に開示されている技術を用いて、第二の一致部分１３２を選択する。
【００９６】
スケジューリングのＣＤＦＧファイル１３０は、スケジューリングされた変形のＣＤＦＧファイル１３０である。
第二の一致部分１３２は、第一の定型のＣＤＦＧ１４１に包含される第二の定型のＣＤＦＧ１４１と演算順序が同じである部分であり、第一の定型のＣＤＦＧ１４１と演算順序が同じである第一の一致部分１３２と実行時間帯が重複しない。
【００９７】
そして、包含グラフ置換部２６１は、第二の一致部分１３２を第一の定型のＣＤＦＧ１４１に置き換える。また、包含グラフ置換部２６１は、第二の一致部分１３２を第一の定型のＣＤＦＧ１４１に置き換えたことを示す情報を、第二の一致部分１３２に関する一致部分データ２９１に記録する。
例えば、包含グラフ置換部２６１は、非特許文献１に開示されているテンプレートマッチングなどの技術を用いて、第二の一致部分１３２を第一の定型のＣＤＦＧ１４１に置き換える。
Ｓ１６１の後、処理はＳ１６２に進む。
【００９８】
第一の定型のＣＤＦＧ１４１（図５参照）は、第二の定型のＣＤＦＧ１４１を包含している。
つまり、第一の定型のＣＤＦＧ１４１は、（Ａ＋Ｂ）×Ｃと演算順序が同じ部分を含んでおり、変数Ｄの値および変数Ｅの値がゼロであれば、第二の定型のＣＤＦＧ１４１と同じ演算結果が得られる。
第一の定型のＣＤＦＧ１４１および第二の定型のＣＤＦＧ１４１は、特許文献１におけるパターン対に相当する。
【００９９】
図２８は、実施の形態３における変形のＣＤＦＧファイル１３０に含まれる変形のＣＤＦＧ１３１の一例を示す図である。
図２８に示す変形のＣＤＦＧ１３１は、図８に示した変形のＣＤＦＧ１３１と同じ内容である。
ＩＰ（１）は、第一の定型のＣＤＦＧ１４１と演算順序が同じである第一の一致部分１３２を表している。
ＩＰ（２）は、第二の定型のＣＤＦＧ１４１と演算順序が同じである第二の一致部分１３２を表している。
【０１００】
図２９は、実施の形態３におけるスケジューリングのＣＤＦＧファイル１３０に含まれるスケジューリングのＣＤＦＧ１３１の一例を示す図である。
図２９において、変数Ａから変数Ｅが入力されるＩＰ（１）は、変数Ｇから変数Ｌが入力されるＩＰ（１）の後の時間帯にスケジューリングされている。
スケジューリングのＣＤＦＧファイル１３０に含まれる縦破線は、クロック境界を表している。つまり、ＩＰ（１）は２クロックの時間で実行され、ＩＰ（２）は１クロックの時間で実行される。
【０１０１】
例えば、包含グラフ置換部２６１は、ＩＰ（１）に包含されるＩＰ（２）を第二の一致部分１３２として選択し、ＩＰ（２）をＩＰ（１）に置き換える。
これにより、図３０に示すスケジューリングのＣＤＦＧファイル１３０が得られる。
【０１０２】
図３０は、実施の形態３におけるスケジューリングのＣＤＦＧファイル１３０に含まれるスケジューリングのＣＤＦＧ１３１の一例を示す図である。
図２７に戻り、Ｓ１６２から説明を続ける。
【０１０３】
Ｓ１６２において、未使用演算選択部２６２は、第一の定型のＣＤＦＧ１４１に置き換えた後の第二の一致部分１３２から、未使用演算１３７を選択する。
例えば、図３０において、未使用演算選択部２６２は、破線枠で囲んだＩＰ（１）に含まれているが、ＩＰ（１）に包含されるＩＰ（２）には含まれていない減算を未使用演算１３７として選択する。
Ｓ１６２の後、処理はＳ１６３に進む。
【０１０４】
Ｓ１６３において、代替演算選択部２６３は、スケジューリングのＣＤＦＧ１３１から、代替演算１３８を選択する。
例えば、図３０において、代替演算選択部２６３は、未使用演算１３７と同じ種類の演算である代替演算１３８を選択する。なお、未使用演算１３７が実行されるタイミングで代替演算１３８が実行されても、スケジューリングのＣＤＦＧ１３１の実行結果は変わらない。
Ｓ１６３の後、処理はＳ１６４に進む。
【０１０５】
Ｓ１６４において、演算置換部２６４は、スケジューリングのＣＤＦＧ１３１から代替演算１３８を削除し、スケジューリングのＣＤＦＧ１３１に含まれる未使用演算１３７を代替演算１３８に置き換える。
また、演算置換部２６４は、未使用演算１３７を代替演算１３８に置き換えたことを示す情報を、第二の一致部分１３２に関する一致部分データ２９１に記録する。
Ｓ１６４の後、リソース共有化処理（Ｓ１６０）は終了する。
【０１０６】
図３１、図３２は、実施の形態３における共有化のＣＤＦＧファイル１３０に含まれる共有化のＣＤＦＧ１３１の一例を示す図である。
図３１および図３２に示す共有化のＣＤＦＧ１３１は、図３０において代替演算１３８を削除し、未使用演算１３７を代替演算１３８に置き換えたＣＤＦＧ１３１である。
【０１０７】
実施の形態３において、実施の形態２と同様に、各変数のビット数を考慮しても構わない。
【０１０８】
実施の形態３により、演算リソースを共有化し、特許文献１よりもハードウェア構成が小規模な半導体集積回路を設計することができる。
【０１０９】
各実施の形態は、高位合成システム１００および回路設計支援装置２００の形態の一例である。
つまり、高位合成システム１００および回路設計支援装置２００は、各実施の形態で説明した構成要素の一部を備えなくても構わない。また、高位合成システム１００および回路設計支援装置２００は、各実施の形態で説明していない構成要素を備えても構わない。さらに、高位合成システム１００および回路設計支援装置２００は、各実施の形態の構成要素の一部または全てを組み合わせたものであっても構わない。
【０１１０】
各実施の形態においてフローチャート等を用いて説明した処理手順は、各実施の形態に係る方法およびプログラムの処理手順の一例である。各実施の形態に係る方法およびプログラムは、各実施の形態で説明した処理手順と一部異なる処理手順で実現されても構わない。
【０１１１】
各実施の形態において「〜部」は「〜処理」「〜工程」「〜プログラム」「〜装置」と読み替えることができる。
【符号の説明】
【０１１２】
１００  高位合成システム、１１０  高位合成装置、１１１  ＣＤＦＧ生成部、１１２  スケジューリング部、１１３  バインディング部、１１４  ＲＴＬ記述生成部、１２０  合成装置記憶部、１２１  動作記述ファイル、１２２  スケジューリングデータ、１２３  バインディングデータ、１２４  ＲＴＬ記述ファイル、１３０  ＣＤＦＧファイル、１３１  ＣＤＦＧ、１３２  一致部分、１３３  加減算部分、１３４  多重減算、１３５  部分演算、１３６  交換演算、１３７  未使用演算、１３８  代替演算、１４０  ＣＤＦＧテンプレート、１４１  ＣＤＦＧ、１４２  定型演算、２００  回路設計支援装置、２１０  ＣＤＦＧ取得部、２２０  一致部分抽出部、２３０  ＣＤＦＧ変形部、２４０  ＣＤＦＧ補助変形部、２５０  スケジューリングデータ取得部、２６０  リソース共有化部、２６１  包含グラフ置換部、２６２  未使用演算選択部、２６３  代替演算選択部、２６４  演算置換部、２８０  支援データ提供部、２９０  支援装置記憶部、２９１  一致部分データ、９０１  演算装置、９０２  補助記憶装置、９０３  主記憶装置、９０４  通信装置、９０５  入出力装置、９０９  バス。
【図１】
2015197883.tif 000003
【図２】
2015197883.tif 000004
【図３】
2015197883.tif 000005
【図４】
2015197883.tif 000006
【図５】
2015197883.tif 000007
【図６】
2015197883.tif 000008
【図７】
2015197883.tif 000009
【図８】
2015197883.tif 000010
【図９】
2015197883.tif 000011
【図１０】
2015197883.tif 000012
【図１１】
2015197883.tif 000013
【図１２】
2015197883.tif 000014
【図１３】
2015197883.tif 000015
【図１４】
2015197883.tif 000016
【図１５】
2015197883.tif 000017
【図１６】
2015197883.tif 000018
【図１７】
2015197883.tif 000019
【図１８】
2015197883.tif 000020
【図１９】
2015197883.tif 000021
【図２０】
2015197883.tif 000022
【図２１】
2015197883.tif 000023
【図２２】
2015197883.tif 000024
【図２３】
2015197883.tif 000025
【図２４】
2015197883.tif 000026
【図２５】
2015197883.tif 000027
【図２６】
2015197883.tif 000028
【図２７】
2015197883.tif 000029
【図２８】
2015197883.tif 000030
【図２９】
2015197883.tif 000031
【図３０】
2015197883.tif 000032
【図３１】
2015197883.tif 000033
【図３２】
2015197883.tif 000034