(57)【要約】【課題】ハードウェアモジュール間を接続するインタフェース又はブリッジを挿入可能とする。【解決手段】機能モデル解析部２は、機能プログラム５を解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する。Ｉ／Ｆライブラリ４は、ハードウェアモジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述を、モジュラインタフェースとして、複数記憶する。Ｉ／Ｆ挿入部３は、機能モデル解析部２により抽出されたハードウェアモジュール間の入出力関係ごとにモジュラインタフェースを選択する。また、Ｉ／Ｆ挿入部３は、選択したモジュラインタフェースの記述を機能プログラム５に挿入して機能プログラム５を高位合成可能なプログラム８に変換する【選択図】図１
2016151830.tif 000002
【特許請求の範囲】
【請求項１】
機能プログラムを解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する解析抽出部と、
ハードウェアモジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述を、モジュラインタフェースとして、複数記憶するモジュラインタフェース記憶部と、
前記解析抽出部により抽出されたハードウェアモジュール間の入出力関係ごとにモジュラインタフェースを選択する選択部と、
前記選択部により選択されたモジュラインタフェースの記述を前記機能プログラムに挿入して前記機能プログラムを高位合成可能なプログラムに変換するプログラム変換部とを有する設計支援装置。
【請求項２】
前記プログラム変換部は、
前記選択部により選択されたモジュラインタフェースの記述を用いて、前記機能プログラムに含まれる、ハードウェアモジュールの機能が記述されたモジュール記述と、前記複数のハードウェアモジュールで構成される回路の機能が記述されるトップ記述とを書き換えることで、前記選択部により選択されたモジュラインタフェースの記述を前記機能プログラムに挿入して前記機能プログラムを前記高位合成可能なプログラムに変換する請求項１に記載の設計支援装置。
【請求項３】
前記選択部は、
複数の入出力関係が記述されるとともに、記述されている入出力関係ごとに、選択すべきモジュラインタフェースが記述されているインタフェース選択情報を取得し、
前記解析抽出部により抽出されたハードウェアモジュール間の入出力関係ごとに、前記インタフェース選択情報に記述されている、対応するモジュラインタフェースを選択する請求項１に記載の設計支援装置。
【請求項４】
前記設計支援装置は、更に、
前記高位合成可能なプログラムを用いて高位合成を実行し、高位合成実行結果における性能が要求性能を満たさない場合に、前記高位合成可能なプログラムへの変換に用いられたモジュラインタフェースのパラメータを変更する処理又は前記高位合成可能なプログラムへの変換に用いられたモジュラインタフェースを他のモジュラインタフェースに切り替える処理を行う調整処理部を有し、
前記プログラム変換部は、
前記調整処理部によりパラメータが変更された後のモジュラインタフェースの記述又は前記調整処理部により切り替えられた後のモジュラインタフェースの記述を前記機能プログラムに挿入して前記機能プログラムを高位合成可能なプログラムに変換する請求項１に記載の設計支援装置。
【請求項５】
前記調整処理部は、
前記高位合成実行結果における転送ビット量が、転送ビット量についての要求性能を満たさない場合に、前記高位合成可能なプログラムへの変換に用いられたモジュラインタフェースのデータ幅を変更する処理を行い、
前記高位合成実行結果における回路規模が、回路規模についての要求性能を満たさない場合に、前記高位合成可能なプログラムへの変換に用いられたモジュラインタフェースよりも回路規模が小さい他のモジュラインタフェースに切り替える処理を行う請求項４に記載の設計支援装置。
【請求項６】
コンピュータが、機能プログラムを解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する解析抽出ステップと、
ハードウェアモジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述を、モジュラインタフェースとして、複数記憶するインタフェースライブラリを参照して、前記コンピュータが、前記解析抽出ステップにより抽出されたハードウェアモジュール間の入出力関係ごとにモジュラインタフェースを選択する選択ステップと、
前記コンピュータが、前記選択ステップにより選択されたモジュラインタフェースを前記機能プログラムに挿入して前記機能プログラムを高位合成可能なプログラムに変換するプログラム変換ステップとを有する設計支援方法。
【請求項７】
機能プログラムを解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する解析抽出ステップと、
ハードウェアモジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述を、モジュラインタフェースとして、複数記憶するインタフェースライブラリを参照して、前記解析抽出ステップにより抽出されたハードウェアモジュール間の入出力関係ごとにモジュラインタフェースを選択する選択ステップと、
前記選択ステップにより選択されたモジュラインタフェースの記述を前記機能プログラムに挿入して前記機能プログラムを高位合成可能なプログラムに変換するプログラム変換ステップとをコンピュータに実行させる設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）設計を支援する技術に関する。
【背景技術】
【０００２】
従来、ＬＳＩ開発では、Ｖｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬといったハードウェア記述言語による設計をメインで行ってきた。
しかし、近年の集積回路の大規模化に伴いハードウェア記述での設計に多大な時間を要することが問題となっており、ハードウェア記述言語よりも抽象度の高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などの高級言語による設計を行い、高位合成ツールを用いて自動的にハードウェア記述言語を生成する高位設計を適用することで設計時間の短縮を図る技術が実用化されてきている。
通常、ＬＳＩ開発では、最初に、演算や制御のアルゴリズムを確認するために、Ｃ言語やＣ＋＋言語で記述したアルゴリズム記述を用意したり、ハードウェアで実現しようとする演算機能や制御機能をハードウェアでの処理単位に合わせて動作確認するために、Ｃ言語やＣ＋＋言語で記述した機能プログラム記述を用意する。
但し、これらのプログラム記述には時間の概念や並列動作といったハードウェアの概念は含まれていない。
そのため、高位設計では、時間概念やハードウェアモジュール（モジュールとも表記する）間の並列動作を含めた動作を確認するために、トランザクションレベルでハードウェア概念を挿入したプログラムに変更して検証を行ったり、高位合成ツールによりハードウェア記述を生成するために、サイクルレベルでのハードウェア概念を挿入したプログラムに変更して高位合成を行ったりする。
このとき、アルゴリズム記述や機能プログラム記述から変更するには、回路とバスを接続するインタフェース（Ｉ／Ｆとも表記する）の記述を人手で挿入し、プログラムを書き換える必要があった。
【０００３】
特許文献１は、アルゴリズム記述から高位合成可能な記述への変換処理を行うものであり、アルゴリズム記述において、入出力ポートになるパラメータを指示することで、入出力ポートの記述を挿入し、高位合成可能なハードウェア記述に自動変換することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−２０３２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、もとの記述に存在しているパラメータを入出力として指示することで、入出力ポートの記述を挿入することができた。
しかし、アルゴリズム記述や機能プログラム記述には、そのモジュールの演算や制御そのものに関係のない入出力や変数については記述しないため、インタフェースに含まれる各種制御信号についても記述しない。
したがって、特許文献１の技術では、インタフェースを自動挿入することはできなかった。
【０００６】
本発明は、このような事情に鑑みたものであり、ハードウェアモジュール間を接続するインタフェース又はブリッジを挿入可能とすることを主な目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る設計支援装置は、
機能プログラムを解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する解析抽出部と、
ハードウェアモジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述を、モジュラインタフェースとして、複数記憶するモジュラインタフェース記憶部と、
前記解析抽出部により抽出されたハードウェアモジュール間の入出力関係ごとにモジュラインタフェースを選択する選択部と、
前記選択部により選択されたモジュラインタフェースの記述を前記機能プログラムに挿入して前記機能プログラムを高位合成可能なプログラムに変換するプログラム変換部とを有する。
【発明の効果】
【０００８】
本発明では、ハードウェア間の入出力関係ごとに、インタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式で記述されたモジュラインタフェースを選択し、選択したモジュラインタフェースの記述を機能プログラムに挿入する。
このため、本発明によれば、モジュラインタフェースの記述の機能プログラムへの挿入によりインタフェース又はブリッジを機能プログラムに挿入することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るモジュール間Ｉ／Ｆ設計支援装置の機能構成例を示す図。
【図２】実施の形態１に係るモジュラＩ／Ｆの構成例を示す図。
【図３】実施の形態１に係るモジュラＩ／Ｆの記述例を示す図。
【図４】実施の形態１に係るＬＳＩの概略構成例を示す図。
【図５】実施の形態１に係る機能プログラムのトップ記述の記述例を示す図。
【図６】実施の形態１に係る機能プログラムのＹＵＶ→ＲＧＢフォーマット変換モジュール及び画面合成モジュールの記述例を示す図。
【図７】実施の形態１に係るＩ／Ｆ選択情報の記述例を示す図。
【図８】実施の形態１に係るモジュール間Ｉ／ＦにモジュラＩ／Ｆを挿入したＬＳＩの構成例を示す図。
【図９】実施の形態１に係る高位合成可能なプログラムのトップ記述の記述例を示す図。
【図１０】実施の形態１に係る高位合成可能なプログラムのＹＵＶ→ＲＧＢフォーマット変換モジュール及び画面合成モジュールの記述例を示す図。
【図１１】実施の形態１に係る異なるバスプロトコル間を接続したＬＳＩ構成例を示す図。
【図１２】実施の形態１に係る実施の形態１に係る異なるバスプロトコル間を接続するＩ／Ｆ選択情報とトップ記述の記述例を示す図。
【図１３】実施の形態２に係るモジュール間Ｉ／Ｆ設計支援装置の機能構成例を示す図。
【図１４】実施の形態２に係る性能改善ステップを示すフローチャート図。
【図１５】実施の形態１及び実施の形態２に係るモジュール間Ｉ／Ｆ設計支援装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態では、ＬＳＩ開発において、機能確認用に作成されるＣ／Ｃ＋＋記述のプログラムをもとに、各機能が割り当てられたハードウェアモジュール間を接続するＩ／Ｆおよびブリッジを自動挿入し、高位検証で用いるトランザクションレベルのプログラム記述、または、高位合成可能なサイクルレベルのプログラム記述への変換を支援する構成を説明する。
【００１１】
＊＊＊構成の説明＊＊＊
図１は、実施の形態１に係るモジュール間Ｉ／Ｆ設計支援装置１の構成を示す。
モジュール間Ｉ／Ｆ設計支援装置１は、機能モデル解析部２と、Ｉ／Ｆ挿入部３と、Ｉ／Ｆライブラリ４から構成される。
なお、モジュール間Ｉ／Ｆ設計支援装置１は、本願の設計支援装置の例に相当する。
【００１２】
機能モデル解析部２は、機能プログラムを解析し、複数のハードウェアモジュールにおけるハードウェアモジュール間の入出力関係を抽出する。
機能モデル解析部２は、解析抽出部の例に相当する。
機能プログラム５は、ＬＳＩの機能がＣまたはＣ＋＋で記述されたプログラムである。
機能モデル解析部２は、トップ構成解析部２ａと、モジュール入出力解析部２ｂと、モジュール間接続解析部２ｃとで構成される。
トップ構成解析部２ａは、機能プログラム５のトップ記述からハードウェアのトップ構成を解析する。
モジュール入出力解析部２ｂは、各ハードウェアモジュールの入出力信号を解析・抽出する。
モジュール間接続解析部２ｃは、モジュール入出力間の接続関係の情報を解析・抽出し、解析・抽出結果を表す入出力信号／接続情報６を出力する。
【００１３】
Ｉ／Ｆライブラリ４は、挿入候補であるモジュラインタフェース（モジュラＩ／Ｆとも表記する）を複数格納する。
モジュラＩ／Ｆは、モジュール間のインタフェース又はブリッジのインタフェース関数及び入出力ポートがカプセル化された高位合成可能な形式の記述である。
モジュラＩ／Ｆの詳細は後述する。
Ｉ／Ｆライブラリ４は、モジュラインタフェース記憶部の例に相当する。
【００１４】
Ｉ／Ｆ挿入部３は、インタフェース選択情報７（Ｉ／Ｆ選択情報７とも表記する）を取得する。
Ｉ／Ｆ選択情報７には、複数の入出力関係が記述されるとともに、記述されている入出力関係ごとに、選択すべきモジュラＩ／Ｆが記述されている。
そして、Ｉ／Ｆ挿入部３は、機能モデル解析部２により抽出されたハードウェアモジュール間の入出力関係ごとに、Ｉ／Ｆ選択情報７に記述されている、対応するモジュラＩ／Ｆを選択する。
また、Ｉ／Ｆ挿入部３は、選択したモジュラＩ／Ｆの記述を用いて、機能プログラム５に含まれる、モジュールの機能が記述されたモジュール記述と、複数のモジュールで構成される回路の機能が記述されるトップ記述とを書き換えることで、選択したモジュラＩ／Ｆの記述を機能プログラム５に挿入して機能プログラム５を高位合成可能なプログラム８に変換する。
高位合成可能なプログラム８はＳｙｓｔｅｍＣで記述されている。
Ｉ／Ｆ挿入部３は、選択部及びプログラム変換部の例に相当する。
Ｉ／Ｆ挿入部３は、Ｉ／Ｆ選択情報解析部３ａと、モジュール記述生成部３ｂと、トップ記述生成部３ｃとで構成される。
Ｉ／Ｆ選択情報解析部３ａは、Ｉ／Ｆ選択情報７から、モジュール間の信号名とモジュラＩ／Ｆ名を解析し対応付けを行う。
モジュール記述生成部３ｂは、Ｉ／Ｆライブラリ４からモジュラＩ／Ｆを取得し、モジュール記述を高位合成可能なプログラム記述に変換する。
トップ記述生成部３ｃは、機能プログラム５のトップ記述にモジュラＩ／Ｆを挿入する。
【００１５】
ここで、モジュラＩ／Ｆについて説明する。
図２は、Ｉ／Ｆライブラリ４に格納されているモジュラＩ／Ｆの構成例を示し、図３は、モジュラＩ／Ｆの記述例を示す。
モジュラＩ／Ｆは、図２及び図３に示すように、Ｉ／Ｆ関数と入出力ポートをカプセル化したクラスであり、モジュールは使用するモジュラＩ／Ｆのクラスをインスタンスし、Ｉ／Ｆ関数をコールするのみで、入出力ポートやプロトコルを意識せずにアクセスできる。
【００１６】
＊＊＊動作の説明＊＊＊
次に、図４〜図１０を用いて、本実施の形態に係るモジュール間Ｉ／Ｆ設計支援装置１によりモジュール間にモジュラＩ／Ｆを挿入する方法を示す。
以下に示す方法は、本願の設計支援方法及び設計支援プログラムの例に相当する。
【００１７】
図４は、ＬＳＩの概略構成例を示す。
図５及び図６は、図４のＬＳＩ構成を表す機能プログラム５の記述例を示す。
図７は、Ｉ／Ｆ選択情報７の記述例を示す。
図８は、モジュール間にモジュラＩ／Ｆを挿入した後のＬＳＩの概略構成例を示す。
図９及び図１０は、モジュール間Ｉ／Ｆ設計支援装置１によって得られる高位合成可能なプログラム８の記述例を示す。
【００１８】
図４に示すＬＳＩの場合、“前処理モジュール”から入力されたＹＵＶフォーマットの画素データを“ＹＵＶ→ＲＧＢ変換モジュール”がＲＧＢフォーマットの画素データに変換して出力する。
そして、その画素データを入力として“画面合成モジュール”が２系統分合成した画素データを生成して出力し、その画素データを“ＲＧＢ→ＹＵＶ変換モジュール”がＹＵＶフォーマットの画素データに変換して“後処理モジュール”に出力する。
これを機能プログラム５に記述にすると、図５及び図６に示すように、各モジュールの機能（演算処理）に必要なデータのみモジュールの入出力としてモジュール間で受け渡す記述となる。
【００１９】
図４のＬＳＩ構成を例に、モジュール間にモジュラＩ／Ｆを挿入する手順を示す。
【００２０】
まず、トップ構成解析部２ａが図５（ａ）のトップ記述からトップ構成を解析し（図５の（１））、モジュール入出力解析部２ｂが図６（ｂ）、（ｃ）の各モジュール記述から入出力信号を抽出する（図６の（２））（解析抽出ステップ）。
より具体的には、モジュール入出力解析部２ｂは、クラス内部にあるトップ関数において（トップ関数は、外部より指定される）、その関数の引数と戻り値を抽出する。
これが入出力信号となる。
戻り値は出力信号となる。
引数は、ポインタ以外は入力信号となる。
ポインタの場合は、関数内部で、ポインタの参照しかしない場合は、入力信号となる。
また、ポインタへの代入を行う場合は、出力信号となる。
なお、ポインタの参照と代入を行っている場合は、本明細書では対応外とする。
【００２１】
続いて、モジュール間接続解析部２ｃが、モジュール入出力解析部２ｂにより抽出された各クラスのトップ関数の入出力信号の情報をもとにモジュール入出力間の接続関係を解析して（図５の（３））、入出力信号／接続情報６を出力する（解析抽出ステップ）。
つまり、モジュール間接続解析部２ｃは、機能プログラム５のトップ記述（図５の（３））より、接続情報を抽出する。
モジュール間接続解析部２ｃは、各クラスのトップ関数への戻り値、引数において、同じ信号名を戻り値、引数としている関数は、接続されていると解釈する。
モジュール間接続解析部２ｃは、図４の構成だと、“前処理０”と“ＹＵＶ→ＲＧＢ変換（ｍ＿Ｆｍｔ０）”とが接続されており、この２つのモジュールで入出力関係があると解釈する。
また、“前処理１”と“ＹＵＶ→ＲＧＢ変換（ｍ＿Ｆｍｔ１）”とが接続されており、この２つのモジュールで入出力関係があると解釈する。
同様に、モジュール間接続解析部２ｃは、図４において矢印で接続されているモジュール間で入出力関係があると解釈する。
【００２２】
次に、Ｉ／Ｆ選択情報解析部３ａが、入出力信号／接続情報６と、図７のＩ／Ｆ選択情報７から、モジュール間の信号名とモジュラＩ／Ｆ名を解析し（図７の（４）））、対応付けを行う（選択ステップ）。
入出力信号／接続情報６には、モジュール間の入出力関係、すなわち、図７の左辺に示す信号（例えば、ｓ＿ｙｕｖ０）と、当該信号の出力元のモジュール（例えば、前処理０）と、入力先のモジュール（ＹＵＶ→ＲＧＢ変換（ｍ＿Ｆｍｔ０））とが記載されている。
Ｉ／Ｆ選択情報解析部３ａは、入出力信号／接続情報６に示される信号（例えば、ｓ＿ｙｕｖ０）に対応するモジュラＩ／Ｆ（Ｍｉｆ＿ＢｕｓＹｕｖ）を、入出力信号／接続情報６に示される出力元のモジュール（例えば、前処理０）と、入力先のモジュール（ＹＵＶ→ＲＧＢ変換（ｍ＿Ｆｍｔ０））とに対応付ける。
前述した通り、モジュラＩ／Ｆは、Ｉ／Ｆ関数と入出力ポートをカプセル化したクラスであるため、図７のように使用するモジュラＩ／Ｆのクラス名を指定すれば、Ｉ／Ｆライブラリ内から一意にモジュラＩ／Ｆを決定できる。
【００２３】
次に、モジュール記述生成部３ｂが、Ｉ／Ｆ選択情報解析部３ａによる対応付けをもとにＩ／Ｆライブラリ４から当該モジュラＩ／Ｆを取得して機能プログラム５のモジュール記述のＩ／Ｆ記述部分を書き換える（図１０の（５））（プログラム変換ステップ）。
また、トップ記述生成部３ｃが機能プログラム５のトップ記述にモジュラＩ／Ｆのインスタンスと接続を挿入して（図９の（６））、ＳｙｓｔｅｍＣ記述の高位合成可能なプログラム８を出力する（プログラム変換ステップ）。
【００２４】
図８は、トップ記述生成部３ｃから出力される高位合成可能なプログラム８に対応するＬＳＩの構成例である。
図８では、モジュール間に、Ｉ／Ｆ選択情報解析部３ａにより選択されたモジュラＩ／Ｆ（ｍ＿ｍｉｆ＿ｙｕｖ０等）が挿入されている。
なお、図８の「ｍ＿ｍｉｆ＿ｙｕｖ０」、「ｍ＿ｍｉｆ＿ｙｕｖ」、「ｍ＿ｍｉｆ＿ｙｕｖ２」は、それぞれ、図７の「Ｍｉｆ＿ＢｕｓＹｕｖ」のインスタンスである。
また、図８の「ｍ＿ｍｉｆ＿ｒｇｂ０」、「ｍ＿ｍｉｆ＿ｒｇｂ１」、「ｍ＿ｍｉｆ＿ｒｇｂ２」は、それぞれ、図７の「Ｍｉｆ＿ＢｕｓＲｇｂ」のインスタンスである。
また、図８において、「Ｍ」はマスタを意味し、「Ｓ」はスレーブを意味する。
【００２５】
＊＊＊効果の説明＊＊＊
以上のように、本実施の形態に係るモジュール間Ｉ／Ｆ設計支援装置１を用いれば、プロトコル情報等を含まないＣ言語記述のモジュール間を接続するＩ／Ｆを生成可能となるため、高位設計手順を効率化できる。
【００２６】
また、図１１は、異なるバスプロトコル間を接続する場合のＬＳＩ構成例を示す。
より詳しくは、図１１（ａ）は、モジュラＩ／Ｆを挿入する前のＬＳＩ構成例を示し、図１１（ｂ）は、モジュラＩ／Ｆを挿入した後のＬＳＩ構成例を示す。
図１２は、Ｉ／Ｆ選択情報の例と、図１１（ａ）のＬＳＩの機能プログラムから得られる高位合成可能なプログラムのトップ記述例を示す。
図１１（ａ）のＬＳＩ構成に示すように、例えばＲＧＢ→ＹＵＶ変換後の画素データを外部メモリに格納する場合など、図１１（ｂ）のようにモジュール間Ｉ／Ｆのマスタ側とスレーブ側でプロトコルが異なるときは、図１２（ｃ）に示すようにＩ／Ｆ選択情報としてマスタ側、スレーブ側それぞれのバスを指示する。
この場合は、両プロトコルを接続可能なバスブリッジを含むモジュラＩ／ＦがＩ／Ｆライブラリ４から選択され、図１２（ｄ）のようなトップ記述を生成する。
【００２７】
以上のように、本発明のモジュール間Ｉ／Ｆ設計支援装置１を用いれば、異なるバスプロトコル間を接続するブリッジを挿入することも可能であり、高位設計手順を効率化できる。
【００２８】
なお、上記では、高位合成可能なプログラム記述を得る場合を説明したが、Ｉ／Ｆ選択情報により、トランザクションレベルのモジュラＩ／Ｆを選択すれば、高位検証で用いるトランザクションレベルのプログラム記述を得ることもできる。
【００２９】
実施の形態２．
＊＊＊構成の説明＊＊＊
図１３は、実施の形態２によるモジュール間Ｉ／Ｆ設計支援装置１の構成を示したものである。
本実施の形態に係るモジュール間Ｉ／Ｆ設計支援装置１は、機能モデル解析部２と、Ｉ／Ｆ挿入部３と、Ｉ／Ｆライブラリ４と、性能改善部９から構成される。
【００３０】
機能モデル解析部２、Ｉ／Ｆライブラリ４、機能プログラム５、Ｉ／Ｆ選択情報７、高位合成可能なプログラム８は、実施の形態１で示したものと同様である。
本実施の形態でも、機能モデル解析部２は解析抽出部の例に相当し、Ｉ／Ｆライブラリ４はモジュラＩ／Ｆ記憶部の例に相当する。
【００３１】
Ｉ／Ｆ挿入部３は、構成としては実施の形態１と示したものと同様であるが、本実施の形態では、Ｉ／Ｆ挿入部３は、性能改善部９を経由してＩ／Ｆ選択情報７を取得し、また、性能改善部９を経由してＩ／Ｆライブラリ４からモジュラＩ／Ｆを取得する。
なお、本実施の形態では、Ｉ／Ｆ挿入部３は、プログラム変換部の例に相当する。
【００３２】
性能改善部９は、出力された高位合成可能なプログラム８を用いて高位合成（または、高位合成＋論理合成）と性能解析を行う。
そして、性能改善部９は、高位合成実行結果における性能が要求性能を満たさない場合に、高位合成可能なプログラム８への変換に用いられたモジュラＩ／Ｆのパラメータを変更する処理又は高位合成可能なプログラム８への変換に用いられたモジュラＩ／Ｆを他のモジュラＩ／Ｆに切り替える処理を行う。
具体的には、性能改善部９は、高位合成実行結果における転送ビット量が、転送ビット量についての要求性能を満たさない場合に、高位合成可能なプログラム８への変換に用いられたモジュラＩ／Ｆのデータ幅を変更する処理を行う。
また、性能改善部９は、高位合成実行結果における回路規模が、回路規模についての要求性能を満たさない場合に、高位合成可能なプログラム８への変換に用いられたモジュラＩ／Ｆよりも回路規模が小さい他のモジュラＩ／Ｆに切り替える処理を行う。
性能改善部９は、選択部及び調整処理部の例に相当する。
【００３３】
本実施の形態では、Ｉ／Ｆ挿入部３は、性能改善部９によりパラメータが変更された後のモジュラＩ／Ｆの記述又は性能改善部９により切り替えられた後のモジュラＩ／Ｆの記述を機能プログラム５に挿入して機能プログラム５を高位合成可能なプログラム８に変換する。
【００３４】
＊＊＊動作の説明＊＊＊
図１４は、性能改善部９における性能改善ステップを示すフローチャートである。
【００３５】
Ｓ０において、性能改善部９は、Ｉ／Ｆ選択情報７で指示された各種モジュラＩ／ＦをＩ／Ｆライブラリ４から取得する。
次に、Ｓ１において、性能改善部９は、Ｓ０で取得した各種モジュラＩ／Ｆの記述内に、転送ビット量カウンタを挿入する。
次に、Ｓ２において、性能改善部９は、Ｉ／Ｆ挿入部３に、Ｉ／Ｆ選択情報７と、Ｓ１で書き換えたモジュラＩ／Ｆを渡す。
次に、Ｓ３において、性能改善部９は、Ｉ／Ｆ挿入部３で生成された高位合成可能なプログラム８を取得する。
【００３６】
次に、Ｓ４において、性能改善部９は、Ｓ３で取得した高位合成可能なプログラム８を用いて高位合成（＋論理合成）を実行し、回路規模を見積もる。
次に、Ｓ５において、性能改善部９は、要求性能情報１０で指示された要求回路規模と、Ｓ４で得られた回路規模見積もり結果を比較する。
Ｓ５の比較で、回路規模見積もりが要求回路規模を満たしていなかったら（Ｓ６でＮＯ）、性能改善部９は、Ｓ７において、Ｉ／Ｆライブラリ４内のより回路規模の小さいモジュラＩ／Ｆを選択するようにＩ／Ｆ選択情報７を書き換える。
また、性能改善部９は、Ｉ／Ｆ選択情報７を書き換えた旨をＩ／Ｆ変更記録１１に記録する。
一方、Ｓ５の比較で、回路規模見積もりが要求回路規模を満たしていたら（Ｓ６でＹＥＳ）、性能改善部９は、Ｓ８において、Ｓ３で取得した高位合成可能なプログラム８を用いてシミュレーションを実行し、各モジュラＩ／Ｆの転送ビット量をカウントする。
次に、Ｓ９において、性能改善部９は、要求性能情報１０で指示された各モジュラＩ／Ｆの要求転送ビット量とＳ８で得られたカウント結果を比較する。
Ｓ９の比較で、転送ビットカウント量が要求転送ビット量を満たしていなかったら（Ｓ１０でＮＯ）、性能改善部９は、Ｓ１１において、Ｉ／Ｆライブラリ４から取得したモジュラＩ／Ｆのデータ幅を変更する。
また、性能改善部９は、モジュラＩ／Ｆのデータ幅を変更した旨をＩ／Ｆ変更記録１１に記録する。
一方、Ｓ９の比較で、転送ビットカウント量が要求転送ビット量を満たしていたら（Ｓ０でＹＥＳ）、性能改善を終了する。
【００３７】
＊＊＊効果の説明＊＊＊
以上のように、実施の形態２に係るモジュール間Ｉ／Ｆ設計支援装置１を用いれば、ユーザが想定したモジュラＩ／Ｆでは性能が満たせない場合にも、自動で適切なモジュラＩ／Ｆを挿入できるため、高位設計手順を効率化できる。
【００３８】
＊＊＊ハードウェア構成の説明＊＊＊
最後に、モジュール間Ｉ／Ｆ設計支援装置１のハードウェア構成例を図１５を参照して説明する。
モジュール間Ｉ／Ｆ設計支援装置１はコンピュータである。
モジュール間Ｉ／Ｆ設計支援装置１は、プロセッサ９０１、補助記憶装置９０２、メモリ９０３、通信装置９０４、入力インタフェース９０５、ディスプレイインタフェース９０６といったハードウェアを備える。
プロセッサ９０１は、信号線９１０を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
入力インタフェース９０５は、入力装置９０７に接続されている。
ディスプレイインタフェース９０６は、ディスプレイ９０８に接続されている。
【００３９】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。
プロセッサ９０１は、例えば、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
補助記憶装置９０２は、例えば、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、フラッシュメモリ、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）である。
メモリ９０３は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバー９０４１及びデータを送信するトランスミッター９０４２を含む。
通信装置９０４は、例えば、通信チップ又はＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５は、入力装置９０７のケーブル９１１が接続されるポートである。
入力インタフェース９０５は、例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。
ディスプレイインタフェース９０６は、ディスプレイ９０８のケーブル９１２が接続されるポートである。
ディスプレイインタフェース９０６は、例えば、ＵＳＢ端子又はＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。
入力装置９０７は、例えば、マウス、キーボード又はタッチパネルである。
ディスプレイ９０８は、例えば、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００４０】
補助記憶装置９０２には、図１に示す機能モデル解析部２、Ｉ／Ｆ挿入部３、図１３に示す性能改善部９（以下、機能モデル解析部２、Ｉ／Ｆ挿入部３、性能改善部９をまとめて「部」と表記する）の機能を実現するプログラムが記憶されている。
このプログラムは、メモリ９０３にロードされ、プロセッサ９０１に読み込まれ、プロセッサ９０１によって実行される。
更に、補助記憶装置９０２には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。
そして、ＯＳの少なくとも一部がメモリ９０３にロードされ、プロセッサ９０１はＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。
図１５では、１つのプロセッサ９０１が図示されているが、モジュール間Ｉ／Ｆ設計支援装置１が複数のプロセッサ９０１を備えていてもよい。
そして、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
また、「部」の処理の結果を示す情報やデータや信号値や変数値が、メモリ９０３、補助記憶装置９０２、又は、プロセッサ９０１内のレジスタ又はキャッシュメモリに記憶される。
【００４１】
また、「部」を「回路」又は「ステップ」又は「手順」又は「処理」に読み替えてもよい。
「回路」は、プロセッサ９０１だけでなく、ロジックＩＣ又はＧＡ（Ｇａｔｅ  Ａｒｒａｙ）又はＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）又はＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）といった他の種類の処理回路をも包含する概念である。
【符号の説明】
【００４２】
１  モジュール間Ｉ／Ｆ設計支援装置、２  機能モデル解析部、２ａ  トップ構成解析部、２ｂ  モジュール入出力解析部、２ｃ  モジュール間接続解析部、３  Ｉ／Ｆ挿入部、３ａ  Ｉ／Ｆ選択情報解析部、３ｂ  モジュール記述生成部、３ｃ  トップ構成記述生成部、４  Ｉ／Ｆライブラリ、５  機能プログラム、６  入出力信号／接続情報、７  Ｉ／Ｆ選択情報、８  高位合成可能なプログラム、９  性能改善部、１０  要求性能情報、１１  Ｉ／Ｆ変更記録。
【図１】
2016151830.tif 000003
【図２】
2016151830.tif 000004
【図３】
2016151830.tif 000005
【図４】
2016151830.tif 000006
【図５】
2016151830.tif 000007
【図６】
2016151830.tif 000008
【図７】
2016151830.tif 000009
【図８】
2016151830.tif 000010
【図９】
2016151830.tif 000011
【図１０】
2016151830.tif 000012
【図１１】
2016151830.tif 000013
【図１２】
2016151830.tif 000014
【図１３】
2016151830.tif 000015
【図１４】
2016151830.tif 000016
【図１５】
2016151830.tif 000017