(57)【要約】  高位合成装置（１００）は、回路の動作を記述した動作記述に対して高位合成処理を行い、回路を動作させるハードウェア記述言語を出力する。データハザード検出部（１５０）は、データハザードが発生した動作記述の箇所をデータハザード箇所として検出する。対処決定部（１７０）は、回路のレイテンシと回路規模とを含む回路性能の見積もり値である性能見積もり値（６１０）に基づいて、データハザード箇所のデータハザードを解消する対処方式を決定する。対処決定部（１７０）は、回路のパイプライン化の性能を落とす方式と、データハザード箇所の動作周波数を落とす方式と、回路のパイプライン化の性能を落とす方式とデータハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを対処方式として決定する。
2019186618.tif 000002
【特許請求の範囲】
【請求項１】
回路の動作を記述した動作記述に対して高位合成処理を行い、前記回路を動作させるハードウェア記述言語を出力する高位合成装置において、
データハザードが発生した前記動作記述の箇所をデータハザード箇所として検出するデータハザード検出部と、
前記回路のレイテンシと回路規模とを含む回路性能の見積もり値である性能見積もり値に基づいて、前記回路のパイプライン化の性能を落とす方式と、前記データハザード箇所の動作周波数を落とす方式と、前記回路のパイプライン化の性能を落とす方式と前記データハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを、前記データハザード箇所のデータハザードを解消する対処方式として決定する対処決定部と
を備えた高位合成装置。
【請求項２】
前記高位合成装置は、
前記データハザード箇所に前記回路のパイプライン化の性能を落とす方式を施した場合の前記データハザード箇所のレイテンシと回路規模とを含む第１の性能を算出するとともに、前記データハザード箇所の動作周波数を落とす方式を施した場合の前記データハザード箇所のレイテンシと回路規模とを含む第２の性能を算出し、前記第１の性能と前記第２の性能とを前記性能見積もり値として出力する性能算出部を備え、
前記対処決定部は、
前記性能見積もり値に基づいて前記対処方式を決定する請求項１に記載の高位合成装置。
【請求項３】
前記回路のパイプライン化の性能を落とす方式は、前記動作記述における前記データハザード箇所を１度処理する際のサイクル数を増加させる方式であり、
前記高位合成装置は、前記高位合成処理を行う高位合成部を備え、
前記性能算出部は、
前記サイクル数をインクリメントして前記高位合成部に前記高位合成処理を行わせ、前記データハザード箇所のデータハザードが解消するまで前記サイクル数をインクリメントした後の前記高位合成処理を繰り返す請求項２に記載の高位合成装置。
【請求項４】
前記高位合成装置は、前記高位合成処理を行う高位合成部を備え、
前記性能算出部は、
前記データハザード箇所の動作周波数を低減して前記高位合成部に前記高位合成処理を行わせ、前記データハザード箇所のデータハザードが解消するまで前記データハザード箇所の動作周波数を低減した後の前記高位合成処理を繰り返す請求項２に記載の高位合成装置。
【請求項５】
前記回路のパイプライン化の性能を落とす方式は、前記動作記述における前記データハザード箇所を１度処理する際のサイクル数を増加させる方式であり、
前記高位合成装置は、前記高位合成処理を行う高位合成部を備え、
前記性能算出部は、
前記サイクル数をインクリメントするとともに前記データハザード箇所の動作周波数を低減して前記高位合成部に前記高位合成処理を行わせ、前記データハザード箇所のデータハザードが解消するまで前記サイクル数をインクリメントするとともに前記データハザード箇所の動作周波数を低減した後の前記高位合成処理を繰り返す請求項２に記載の高位合成装置。
【請求項６】
前記対処決定部は、
前記第１の性能に基づいて、前記データハザード箇所に前記回路のパイプライン化の性能を落とす方式を施した場合の回路全体のレイテンシと回路規模とを含む第１の全体回路性能を算出するとともに、前記データハザード箇所の動作周波数を落とす方式を施した場合の回路全体のレイテンシと回路規模とを含む第２の全体回路性能を算出し、前記第１の全体回路性能と前記第２の全体回路性能とに基づいて前記対処方式を決定する請求項３から５のいずれか１項に記載の高位合成装置。
【請求項７】
前記対処決定部は、
前記回路が直列型か並列型かを示すロジックアーキテクチャ情報に基づいて、前記対処方式の決定方法を選択する請求項３から６のいずれか１項に記載の高位合成装置。
【請求項８】
前記対処決定部は、
前記対処方式を行って前記高位合成部に前記高位合成処理を再度行わせる請求項３から７のいずれか１項に記載の高位合成装置。
【請求項９】
回路の動作を記述した動作記述に対して高位合成処理を行い、前記回路を動作させるハードウェア記述言語を出力する高位合成装置の高位合成方法において、
データハザード検出部が、データハザードが発生した前記動作記述の箇所をデータハザード箇所として検出し、
対処決定部が、前記回路のレイテンシと回路規模を含む回路性能の見積もり値である性能見積もり値に基づいて、前記回路のパイプライン化の性能を落とす方式と、前記データハザード箇所の動作周波数を落とす方式と、前記回路のパイプライン化の性能を落とす方式と前記データハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを、前記データハザード箇所のデータハザードを解消する対処方式として決定する高位合成方法。
【請求項１０】
回路の動作を記述した動作記述に対して高位合成処理を行い、前記回路を動作させるハードウェア記述言語を出力する高位合成装置の高位合成プログラムにおいて、
データハザードが発生した前記動作記述の箇所をデータハザード箇所として検出するデータハザード検出処理と、
前記回路のレイテンシと回路規模を含む回路性能の見積もり値である性能見積もり値に基づいて、前記回路のパイプライン化の性能を落とす方式と、前記データハザード箇所の動作周波数を落とす方式と、前記回路のパイプライン化の性能を落とす方式と前記データハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを、前記データハザード箇所のデータハザードを解消する対処方式として決定する対処決定処理と
をコンピュータである前記高位合成装置に実行させる高位合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位合成装置、高位合成方法および高位合成プログラムに関する。特に、高位合成または動作合成を利用した半導体設計を支援する高位合成装置、高位合成方法および高位合成プログラムに関する。
【背景技術】
【０００２】
高位合成または動作合成は、動作記述からＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）といったハードウェア記述言語を自動生成する技術である。
従来の半導体集積回路の設計では、ハードウェア記述言語を用いて、フリップフロップによるレジスタ間の組み合わせ回路の動作を記述していた。近年では、集積回路の回路規模が増大しており、ハードウェア記述言語を用いた設計では多大な設計時間を要する。そこで、ハードウェア記述言語よりも抽象度が高いＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語、あるいはＭａｔｌａｂ言語といった高級言語を用いて設計を行い、ＲＴＬを自動的に生成する技術が提供されている。そして、この技術を実現するツールが高位合成ツールとして市販されている。
設計者は、高級言語を用いたソースコードと、回路仕様とを高位合成ツールに入力することで、回路設計を行う。また、設計者は、高級言語では表現できない、あるいはソースコードで表現するには効率的でない回路仕様については、オプション、アトリビュート、あるいはプラグマといった高位合成オプションを設定して、高位合成ツールに入力する。【０００３】
レイテンシおよび回路規模といった非機能要件を満たす回路を設計するために、高位合成オプションが選択される。回路アーキテクチャ、バッファの挿入、あるいはパイプライン指定といった高位合成オプションの選択は、設計者が行う必要がある。このように、依然として設計者が行う部分が多く、設計効率の観点では、改善の余地がある。そこで、特許文献１では、非機能要件から回路アーキテクチャを自動的に判定し、高位合成を行うことで、設計効率の改善を行っている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１７／１５４１８３号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、回路をパイプライン化指定して高位合成を実行する。しかし、データハザードによりパイプライン化ができない場合がある。データハザードによりパイプライン化ができない場合の対処方法は、２種類ある。しかし、特許文献１では、この対処方法については開示がされておらず、決められたアーキテクチャで高位合成ができない場合は、正しく回路が合成されない。【０００６】
本発明は、データハザードが発生した場合、自動で最適な対処方法を得ることができる高位合成装置を提供する。
【課題を解決するための手段】
【０００７】
本発明に係る高位合成装置は、
回路の動作を記述した動作記述に対して高位合成処理を行い、前記回路を動作させるハードウェア記述言語を出力する高位合成装置において、
データハザードが発生した前記動作記述の箇所をデータハザード箇所として検出するデータハザード検出部と、
前記回路のレイテンシと回路規模とに基づいて、前記回路のパイプライン化の性能を落とす方式と、前記データハザード箇所の動作周波数を落とす方式と、前記回路のパイプライン化の性能を落とす方式と前記データハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを、前記データハザード箇所のデータハザードを解消する対処方式として決定する対処決定部とを備えた。
【発明の効果】
【０００８】
本発明に係る高位合成装置によれば、データハザードが発生した場合、自動で最適な対処方法を得ることができる。
【図面の簡単な説明】
【０００９】
【図１】データハザードの発生について説明する図。
【図２】２サイクルに１度の処理をさせたときのタイミングチャート例。
【図３】動作周波数を落として合成したときのタイミングチャート例。
【図４】実施の形態１に係る高位合成装置の構成図。
【図５】実施の形態１の高位合成装置の入出力を示す図。
【図６】実施の形態１に係る高位合成処理による高位合成処理のフローチャート。
【図７】実施の形態１に係るソースコードのサンプル例。
【図８】図７のソースコードのサンプル例から得られた、各関数のレイテンシと回路規模を示す図。
【図９】直列型の回路構成例。
【図１０】並列型の回路構成例。
【図１１】直列型の処理の時間軸上の流れの例を示す図。
【図１２】並列型の処理の時間軸上の流れの例を示す図。
【図１３】ＤＩＩを変更した場合の第１の性能の例。
【図１４】周波数を低減させた場合の第２の性能の例。
【図１５】ＤＩＩを変更して回路性能を算出する機能と高位合成部とを連携させる場合のフローチャート。
【図１６】動作周波数を落として回路性能を算出する機能と高位合成部とを連携させる場合のフローチャート。
【図１７】ＤＩＩ＝２のときの第１の全体回路性能の例。
【図１８】ＤＩＩ＝３のときの第１の全体回路性能の例。
【図１９】周波数低減を行ったときの第２の全体回路性能の例。
【図２０】並列型が入力された場合の対処決定処理のフローチャート。
【図２１】Ｆ３関数がデータハザード発生関数の場合にＤＩＩを変更したときの第１の全体回路性能の例。
【図２２】Ｆ３関数がデータハザード発生関数の場合に周波数低減を行ったときの第２の全体回路性能の例。
【図２３】実施の形態１の変形例に係る高位合成装置の構成図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１１】
実施の形態１．
図１から図３は、データハザードの発生について説明する図である。
図１を用いて、データハザードと、データハザードが発生したときの対処方法について説明する。データハザードとは、図１に示すように、変数を参照した後で、その変数に代入しなければならない論理があるときに発生する可能性があるパイプラインハザードの一種である。図１では、変数ａについて、次のｉｔｅｒａｔｉｏｎ時にａの代入が終了していなければ、パイプライン化ができない。
【００１２】
一般的に、データハザードに対する対処方法は、２つある。
１つ目は、回路のパイプライン化の性能を落とす方式である。すなわち、パイプライン合成の指示として、２サイクルに１度の処理をさせることである。ここで、１サイクルに一度の処理を行うことをＤＩＩ（Ｄａｔａ  Ｉｎｉｔｉａｔｉｏｎ  Ｉｎｔｅｒｖａｌ）＝１という。ＤＩＩはＩＩともいう。また、２サイクルに一度の処理を行うことをＤＩＩ＝２という。なおＤＩＩ＝２はＤＩＩ＝１と比較し、性能が半分になる。また、ＤＩＩ＝２でもデータハザードが解消されない場合、ＤＩＩをさらにあげることもある。ＤＩＩはサイクル数の一例である。回路のパイプライン化の性能を落とす方式は、動作記述におけるデータハザード箇所を１度処理する際のサイクル数を増加させる方式である。
【００１３】
２つ目は、データハザード箇所の動作周波数を落とす方式である。すなわち、動作周波数を落として合成することである。動作周波数を落として合成するため、目標の周波数とはならないので、回路の性能は劣化する。ここで動作周波数をどれほど落とすかは、データハザードが解消されるまで落とす。つまり、データハザードが発生している変数の処理が次のサイクル、つまり１サイクルで処理しきれる程度の動作周波数となる。
【００１４】
図２に２サイクルに１度の処理をさせたときのタイミングチャート例を示す。また図３に動作周波数を落として合成したときのタイミングチャート例を示す。
以上のように、データハザードが発生したときの対処方法は２種類がある。
【００１５】
＊＊＊構成の説明＊＊＊
図４を用いて、本実施の形態に係る高位合成装置１００の構成を説明する。
高位合成装置１００は、コンピュータである。高位合成装置１００は、プロセッサ９１０を備えるとともに、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０といった他のハードウェアを備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１６】
高位合成装置１００は、機能要素として、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０と記憶部１８０とを備える。記憶部１８０には、ソースコード１８１と非機能要件１８２と仕様定義１８３とＲＴＬ１８４と合成レポート１８５とが記憶される。
【００１７】
ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能は、ソフトウェアにより実現される。記憶部１８０は、メモリ９２１に備えられる。
【００１８】
プロセッサ９１０は、高位合成プログラムを実行する装置である。高位合成プログラムは、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１９】
メモリ９２１は、データを一時的に記憶する記憶装置である。メモリ９２１の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
補助記憶装置９２２は、データを保管する記憶装置である。補助記憶装置９２２の具体例は、ＨＤＤである。また、補助記憶装置９２２は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈ（登録商標）の略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００２０】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００２１】
高位合成プログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリ９２１には、高位合成プログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、高位合成プログラムを実行する。高位合成プログラムおよびＯＳは、補助記憶装置９２２に記憶されていてもよい。補助記憶装置９２２に記憶されている高位合成プログラムおよびＯＳは、メモリ９２１にロードされ、プロセッサ９１０によって実行される。なお、高位合成プログラムの一部または全部がＯＳに組み込まれていてもよい。
【００２２】
高位合成装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、高位合成プログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、高位合成プログラムを実行する装置である。
【００２３】
高位合成プログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ９２１、補助記憶装置９２２、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００２４】
ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えてよい。ロジック判定処理とバッファ判定処理とコード変換処理と高位合成処理とデータハザード検出処理と性能算出処理と対処決定処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記憶媒体」に読み替えてよい。
高位合成プログラムは、上記の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。また、高位合成方法は、高位合成装置が高位合成プログラムを実行することにより行われる方法である。
高位合成プログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、高位合成プログラムは、プログラムプロダクトとして提供されてもよい。
【００２５】
＜高位合成装置１００の入出力＞
図５を用いて、本実施の形態の高位合成装置１００の入出力について説明する。
高位合成装置１００は、回路の動作を記述した動作記述であるソースコード１８１に対して高位合成処理を行い、回路を動作させるハードウェア記述言語であるＲＴＬ１８４を出力する。具体的には、高位合成装置１００は、ソースコード１８１と非機能要件１８２と仕様定義１８３とを入力として高位合成処理を行い、ＲＴＬ１８４と合成レポート１８５とを出力する。
【００２６】
ソースコード１８１は、高位合成対象の回路の動作をＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語、Ｍａｔｌａｂ言語といった高級言語で記述した動作記述である。ソースコード１８１は、入力装置から入力インタフェース９３０を介して入力され、記憶部１８０に記憶される。ソースコード１８１は、回路の動作を記述した動作記述の一例である。
【００２７】
非機能要件１８２には、要求する回路の非機能要件が定義されている。具体的には、非機能要件１８２には、要求する回路のレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が定義されている。非機能要件１８２は、入力装置から入力インタフェース９３０を介して入力され、記憶部１８０に記憶される。回路の非機能要件とは回路の特性および性能を表す回路特性の一例である。
【００２８】
仕様定義１８３には、回路の仕様が定義されている。具体的には、仕様定義１８３には、外部とのインタフェース定義、マッピングするデバイス名、および周波数といった情報が定義されている。マッピングするデバイス名は、具体的には、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）の形名、あるいはＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）のプロセス名である。仕様定義１８３は、入力装置から入力インタフェース９３０を介して入力され、記憶部１８０に記憶される。
【００２９】
ＲＴＬ１８４は、ハードウェア記述言語、すなわちＨＤＬの例である。
合成レポート１８５は、ＲＴＬ１８４とともに高位合成ツールから出力される。合成レポート１８５には、生成されたＲＴＬ１８４の非機能要件が設定される。すなわち、合成レポート１８５には、生成されたＲＴＬのレイテンシ、面積、スループット、消費電力、メモリ使用量、乗算器使用量、さらに回路への入力データの充填期間といった情報が設定されている。
【００３０】
＊＊＊機能の説明＊＊＊
ロジック判定部１１０は、複数の実行単位を含む動作記述であるソースコード１８１を取得し、非機能要件１８２を満たす回路全体の回路構成を決定回路構成として決定する。ロジック判定部１１０は、ロジックアーキテクチャ判定部ともいう。ソースコード１８１は、複数の実行単位として、ループ記述、関数、動作単位、あるいはサブモジュールを含む。本実施の形態では、主に、実行単位を関数として説明する。
また、バッファ判定部１２０は、決定回路構成において、各関数を接続するバッファ構成を決定する。バッファ判定部１２０は、内部バッファアーキテクチャ判定部ともいう。
このように、非機能要件１８２を満たす回路の回路構成と、この回路を構成する関数と、各関数を接続するバッファ構成とを決定することを、回路構成を探索するともいう。
コード変換部１３０は、回路特性が閾値を満たす決定回路構成となるように、ソースコード１８１を変換するとともに高位合成オプションを設定する。
高位合成部１４０は、高位合成処理を行う。高位合成部１４０は、コード変換部１３０により変換されたソースコード１８１と、コード変換部１３０により設定された高位合成オプションとを用いて、回路構成が決定回路構成となるようにソースコード１８１に対して高位合成処理を実行する。
【００３１】
＊＊＊動作の説明＊＊＊
図６を用いて、本実施の形態に係る高位合成処理１００による高位合成処理Ｓ１００について説明する。
高位合成処理Ｓ１００は、合成処理Ｓ０１０と、データハザード検出処理Ｓ１１０と、性能算出処理Ｓ１２０と、対処決定処理Ｓ１３０とを有する。
図７は、本実施の形態に係るソースコード１８１のサンプル例を示す。以下、図７のソースコード１８１を用いて、本実施の形態について説明する。
【００３２】
＜合成処理Ｓ０１０：最初の合成のトライアル＞
ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０により、以下の情報が出力される。ロジックアーキテクチャ情報と、各関数のレイテンシ見積もり値と、高位合成周波数と、高位合成実施後の高位合成ログとが出力される。高位合成ログには、レジスタ数、マルチプレクサ数、使用している演算器のその個数、およびデータハザード情報といった回路規模情報が含まれる。ロジックアーキテクチャ情報は、回路のロジックアーキテクチャを表す。ロジックアーキテクチャには、直列型と並列型がある。
【００３３】
図８は、図７のソースコード１８１のサンプル例から得られた、各関数のレイテンシ見積もり値と回路規模情報を示す図である。また、ロジックアーキテクチャ情報は、本来は、直列型と並列型とのいずれかである。しかし、本実施の形態では、直列型と並列型とのそれぞれが出力された場合について説明する。また、簡単のため、各ロジックアーキテクチャで、各関数のレイテンシ見積もり値と、高位合成周波数は同一とする。
【００３４】
回路規模情報について補足する。全体の回路規模は、レジスタと、マルチプレクサと、四則演算といった演算であるＦｕｎｃｔｉｏｎ  Ｕｎｉｔの回路規模の合計値となる。レジスタの回路規模は、（１ｂｉｔのレジスタの回路規模）＊（レジスタのビット数）である。マルチプレクサの回路規模は、１ｂｉｔマルチプレクサの２ｗａｙ、３ｗａｙ、およびＮｗａｙといった選択される本数から、Σ（１ｂｉｔのＮｗａｙの回路規模＊ｂｉｔ数）で表される。また、Ｆｕｎｃｔｉｏｎ  Ｕｎｉｔは、加算器および乗算器といった回路の各々のＮｂｉｔの回路規模に対して、その使用個数の総和で算出される。
【００３５】
図９は、直列型の回路構成例を示す図である。図１０は、並列型の回路構成例を示す図である。
直列型とは、図９で示すように、各処理で、バッファを共有し、時分割で処理する回路構成である。並列型とは、図１０に示すように、各処理がパイプラインステージで構成され、各処理の間にＰｉｎｇ−ｐｏｎｇバッファのようなバッファが構成される回路である。
図１１は、直列型の処理の時間軸上の流れの例を示す図である。図１２は、並列型の処理の時間軸上の流れの例を示す図である。
【００３６】
＜データハザード検出処理Ｓ１１０＞
データハザード検出部１５０について説明する。
データハザード検出部１５０は、データハザードが発生した動作記述の箇所をデータハザード箇所５１１として検出する。具体的には、データハザード検出部１５０は、高位合成ログから、データハザードが発生しているログを抽出し、データハザード箇所５１１を特定する。そして、データハザード検出部１５０は、そのデータハザードが発生しない周波数と等しいクリティカルパス情報を送出する。図７に示すように、本実施の形態では、Ｆ２関数がデータハザード箇所５１１であるとして説明する。
【００３７】
＜性能算出処理Ｓ１２０＞
次に、性能算出部１６０について説明する。性能算出部１６０は回路性能算出部ともいう。
性能算出部１６０は、データハザード箇所５１１に回路のパイプライン化の性能を落とす方式を施した場合のデータハザード箇所５１１のレイテンシと回路規模とを含む第１の性能６１１を算出する。また、性能算出部１６０は、データハザード箇所５１１の動作周波数を落とす方式を施した場合のデータハザード箇所のレイテンシと回路規模とを含む第２の性能６１２を算出する。そして、性能算出部１６０は、第１の性能６１１と第２の性能６１２とを性能見積もり値６１０として出力する。
【００３８】
具体的には、性能算出部１６０は、データハザード箇所に対して、回路のパイプライン化の性能を落とす方式によりＤＩＩを変更して回路性能の見積もり値を算出する機能を有する。また、性能算出部１６０は、動作周波数を落とす方式により動作周波数を落として回路性能の見積もり値を算出する機能を有する。これらの機能は独立にそれぞれ実行される。しかし、後述するように、この２つの機能を組み合わせてもよい。以降、それぞれ独立に動作する場合を説明する。なお、ここでの回路性能とは、レイテンシと回路規模である。データハザード箇所に対して、ＤＩＩを変更して算出された回路性能は、第１の性能６１１の例である。データハザード箇所に対して、動作周波数を落として算出された回路性能は、第２の性能６１２の例である。
図１３は、回路のパイプライン化の性能を落とす方式によりＤＩＩを変更して算出された第１の性能６１１の例である。
図１４は、動作周波数を落とす方式により動作周波数を低減させて算出された第２の性能６１２の例である。
【００３９】
ＤＩＩを変更して回路性能を算出する機能は、ＤＩＩ値と、そのＤＩＩで合成したときのレイテンシの見積もり値を算出する。レイテンシ値は、以下の式１のように算出する。
（式１）：ＤＩＩ  ＊  Ｌａｔ（Ｆｎ（））
本実施の形態では、Ｆ２にデータハザードが発生しているので、上記式１で、Ｆｎ＝＝Ｆ２となる。また、ＤＩＩ値は、入力となるデータハザード発生で設定されたＤＩＩに対して、１なら２のようにインクリメント値を任意の値の上限までインクリメントし算出する。この任意の値は、外部より設定してもよい。ここでは任意の値を３とする。また、入力となるデータハザード発生で設定されたＤＩＩを１とする。
【００４０】
次に、各ＤＩＩ値での回路規模の見積もり方法について説明する。ＤＩＩ＝２はＤＩＩ＝１と比べて、２サイクルに１回の動作となるため、回路共有が可能になる。ＤＩＩ＝１での合成結果として、使用している演算器のその個数をＤＩＩ値で割った値を使用する演算器数として、回路規模を見積もる。つまり、各演算器について以下の式２を算出し、その総和を取る。
（式２）：演算器の回路規模  ＊  使用数／ＤＩＩ
具体例としては、ＤＩＩ＝１では、乗算器が６個、加算器が２個使用されている場合で、ＤＩＩ＝２のとき、乗算器の回路規模  ＊  ６／２＋加算器の回路規模  ＊  ２／２となる。すなわち、ＤＩＩ＝２では、乗算器が３個、加算器が１個使用されている。
さらにマルチプレクサは、回路共有により増加する。そのため、マルチプレクサの回路規模はＤＩＩの値をかける。
レジスタについては、変わらない。
【００４１】
以上のように、ＤＩＩを変更して回路性能を算出する機能により、図１３の第１の性能６１１が出力される。
【００４２】
動作周波数を落として回路性能を算出する機能は、データハザード検出部から送出されるクリティカルパス情報から、そのクリティカルパスを解消する周波数を、データハザード解消周波数とする。つまり、データハザード検出部からはデータハザード箇所とともにクリティカルパス情報が出力され、その情報からデータハザード解消周波数が得られる。このデータハザード解消周波数をＦ＿ａｆｔｅｒとする。またデータハザードが生じた周波数をＦ＿ｈａｚａｒｄとする。
このとき、Ｆ＿ａｆｔｅｒ  ＜  Ｆ＿ｈａｚａｒｄの関係にある。
【００４３】
周波数を低減させた場合の回路規模は、レジスタ数のみ変更となる。レジスタの回路規模は、単純に入力された合成結果である回路規模を、Ｆ＿ａｆｔｅｒ／Ｆ＿ｈａｚａｒｄ倍することで求める。
具体的には、図７のソースコード１８１のサンプル例の場合、１００ＭＨｚ入力であり、９０ＭＨｚでハザード回避をするとする。すなわち、Ｆ＿ｈａｚａｒｄ＝１００ＭＨｚであり、Ｆ＿ａｆｔｅｒ＝９０ＭＨｚとなる。よって、周波数を低減させた場合の回路規模は、９０／１００  ＊  （１０００）となる。
図１４は、動作周波数を低減させた場合の処理結果を示す図である。なお、図１４では、参考までにデータハザードが生じたＤＩＩ＝１のときも合わせて示している。
【００４４】
以上のように、回路性能を見積もることで、高位合成を毎回実行せずに、回路性能に関する情報、すなわち第１の性能６１１、および、第２の性能６１２を得ることができる。よって、短時間に回路性能に関する情報を得ることが可能になるという効果がある。
【００４５】
また、性能算出部１６０は、データハザード箇所に対して、ＤＩＩを変更して回路性能を算出する機能と、動作周波数を落として回路性能を算出する機能を高位合成部と連携して算出させてもよい。
【００４６】
図１５は、ＤＩＩを変更して回路性能を算出する機能と高位合成部とを連携させる場合のフローチャートである。
性能算出部１６０は、サイクル数をインクリメントして高位合成部１４０に高位合成処理を行わせる。そして、性能算出部１６０は、データハザード箇所のデータハザードが解消するまでサイクル数をインクリメントした後の高位合成処理を繰り返す。具体的な処理を以下に記載する。
ステップＳ１０１において、性能算出部１６０は、ＤＩＩの指定変更を行う。性能算出部１６０は、データハザード箇所に対して、ＤＩＩの指定を変更する。ＤＩＩは、入力となるデータハザード発生で設定されたＤＩＩに対して、１なら２のようなインクリメント値を設定する。
ステップＳ１０２において、性能算出部１６０は、変更されたＤＩＩで、高位合成を再度実行し、高位合成ログを出力させる。
再度データハザードが発生した場合、ステップＳ１０１に戻り、ＤＩＩの指定変更を再度実行し、データハザードがなくなるまで処理を繰り返す。
【００４７】
図１６は、動作周波数を落として回路性能を算出する機能と高位合成部とを連携させる場合のフローチャートである。
性能算出部１６０は、データハザード箇所の動作周波数を低減して高位合成部１４０に高位合成処理を行わせる。そして、性能算出部１６０は、データハザード箇所のデータハザードが解消するまで動作周波数を低減した後の高位合成処理を繰り返す。具体的な処理を以下に記載する。
ステップＳ２０１において、性能算出部１６０は、動作周波数の低減指示を行う。性能算出部１６０は、データハザード箇所に対して、入力となるデータハザード箇所に設定されている高位合成時の動作周波数の設定値から、指定された低減値だけ周波数を引いた値に設定する。具体例としては、最初のデータハザードが発生した動作周波数が１００ＭＨｚであり、指定された低減値が１０ＭＨｚである場合、９０ＭＨｚ（１００ＭＨｚ−１０ＭＨｚ）に指定する。
ステップＳ２０２において、性能算出部１６０は、変更された周波数で、高位合成を実行し、高位合成ログを出力させる。
再度データハザードが発生した場合、性能算出部１６０は、ステップＳ１０１に戻り、動作周波数の低減指示を再度実行し、データハザードがなくなるまで処理を繰り返す。
【００４８】
図１５および図１６に示すように、高位合成の結果を使うことで、より正確にレイテンシおよび回路規模を見積もることができるという効果がある。
【００４９】
なお、性能算出部１６０は、ＤＩＩを変更して回路性能を算出する機能と動作周波数を落として回路性能を算出する機能とを組み合わせてもよい。
つまり、性能算出部１６０は、サイクル数をインクリメントするとともにデータハザード箇所の動作周波数を低減して高位合成部１４０に高位合成処理を行わせる。そして、性能算出部１６０は、データハザード箇所のデータハザードが解消するまでサイクル数をインクリメントするとともにデータハザード箇所の動作周波数を低減した後の高位合成処理を繰り返す。このように、性能算出部１６０は、ＤＩＩと動作周波数との両条件を変更して、性能見積もり値６１０を算出してもよい。
【００５０】
性能算出部１６０は、算出した性能見積もり値６１０を対処決定部１７０に出力する。
【００５１】
＜対処決定処理Ｓ１３０＞
次に、対処決定部１７０の動作について説明する。上述したように、ここでは、図７のソースコード１８１において、Ｆ２関数にデータハザードが発生した場合の対処決定部１７０の動作を説明する。対処決定部１７０は、データハザード対処方法決定部ともいう。
【００５２】
対処決定部１７０は、性能見積もり値６１０に基づいて、データハザード箇所のデータハザードを解消する対処方式を決定する。対処決定部１７０は、回路のパイプライン化の性能を落とす方式と、データハザード箇所の動作周波数を落とす方式と、回路のパイプライン化の性能を落とす方式とデータハザード箇所の動作周波数を落とす方式との組み合わせから成る方式とのいずれかを対処方式として決定する。
性能見積もり値６１０は、回路のレイテンシと回路規模とを含む回路性能の見積もり値である。上述したように、性能見積もり値６１０には、第１の性能６１１と、第２の性能６１２とが含まれる。
対処決定部１７０は、第１の性能６１１に基づいて、データハザード箇所に回路のパイプライン化の性能を落とす方式を施した場合の回路全体のレイテンシと回路規模とを含む第１の全体回路性能７１１を算出する。また、対処決定部１７０は、データハザード箇所の動作周波数を落とす方式を施した場合の回路全体のレイテンシと回路規模とを含む第２の全体回路性能７１２を算出する。そして、対処決定部１７０は、第１の全体回路性能７１１と第２の全体回路性能７１２とに基づいて対処方式を決定する。
最後に、対処決定部１７０は、対処方式を行って高位合成部１４０に高位合成処理を再度行わせる。
【００５３】
すなわち、対処決定部１７０は、データハザード発生箇所の回路性能と、ロジックアーキテクチャからのロジックアーキテクチャ情報とを元に、ＤＩＩ値での対処方法か、あるいは設定周波数での対処方法かを選択し、回路全体を再度合成する機能部である。ここで、データハザード発生箇所の回路性能とは、ＤＩＩ変更時、周波数低減時、またはその組み合わせ時のデータハザード発生箇所の回路性能である。
【００５４】
対処決定部１７０は、回路が直列型か並列型かを示すロジックアーキテクチャ情報に基づいて、対処方式の決定方法を選択する。回路のロジックアーキテクチャが直列型であるか並列型であるかにより、対処方式の決定方法が異なるため、直列型と並列型とのそれぞれに分けて説明する。
【００５５】
ロジックアーキテクチャとして、直列型が入力された場合の処理を説明する。まず、性能算出部１６０から出力されたレイテンシを基に、直列型で、ＤＩＩの指定を反映した処理時間の算出式は、（式３）となる。
（式３）：ΣＬａｔ（Ｆｎ（））／Ｆｒ
ここで、Ｆｒは周波数である。
【００５６】
図８のＦ２関数以外の関数のレイテンシと、図１３に示すＦ２関数以外のＤＩＩ＝２のときのレイテンシより、（１０００＋２００＋２０００）／１００ＭＨｚ＝３２００＊５ｎｓｅｃになる。同様にＤＩＩ＝３のときは、（１０００＋２００＋２０００）／１００ＭＨｚ＝３３００＊５ｎｓｅｃになる。
【００５７】
回路規模も同様に総和を取る。上記計算により得られる結果について、図１７および図１８に示す。
図１７は、ＤＩＩ＝２のときの全体の回路規模と性能、すなわち第１の全体回路性能７１１を示す図である。また、図１８は、ＤＩＩ＝３のときの全体の回路規模と性能、すなわち第１の全体回路性能７１１を示す図である。
【００５８】
直列型において周波数低減を行う場合は、データハザードが発生していない関数についても、データハザードが発生した周波数と同一の周波数にする必要がある。直列型では、データハザード発生回路のみ、周波数を変更して合成することはできないためである。よって、周波数低減を行う場合は、全体のレイテンシに以下の（式４）ように算出する。
（式４）：Ｆ＿ａｆｔｅｒ  ＊  （ΣＬａｔ（Ｆｎ（））＋Ｌａｔ（Ｆｍ（））
ここで、Ｆｍはデータハザード発生関数、Ｆｎはデータハザードが発生していない関数である。
【００５９】
またＦｎの回路規模についても、上述したように、レジスタ数のみ変更となる。レジスタの回路規模は、単純に入力された合成結果である回路規模を、Ｆ＿ａｆｔｅｒ／Ｆ＿ｈａｚａｒｄ倍することで求める。
図１９は、周波数低減を行った場合の関数ごとの回路規模と性能、すなわち第２の全体回路性能７１２を示す図である。
【００６０】
上述したように、対処決定部１７０は、直列型の場合、ＤＩＩ変更と、周波数低減でそれぞれ、回路全体の処理性能を算出し、処理時間が最小になるものを選択する。図１７から図１９の例では、対処決定部１７０は、３２ｕｓｅｃであるＤＩＩ＝２を選択する。つまり、対処決定部１７０は、データハザード箇所５１１についてＤＩＩ＝２にするという方式を対処方式として決定する。
【００６１】
また、対処決定部１７０は、決定した対処方式を、出力インタフェース９４０を介して高位合成装置１００の外部に出力してもよい。外部に出力された対処方式をユーザが判断し、その後の対処を決定してもよい。
あるいは、高位合成装置１００では、処理時間と回路規模のどちらを優先するかを優先情報として予め設定してもよい。対処決定部１７０は、優先情報に従って、処理時間と回路規模のどちらを優先するか決定する。具体例として、回路規模が優先される場合、図１７から図１９の例では、対処決定部１７０は、Ａｒｅａ  ｔｏｔａｌが２７００である周波数低減を選択する。
【００６２】
次に、ロジックアーキテクチャとして、並列型が入力された場合の処理を説明する。
図２０は、並列型が入力された場合の対処決定処理のフローチャートである。
ステップＳ３０１において、対処決定部１７０は、データハザード発生関数が、並列型のレイテンシを決定付けるＭａｘ（ＬａｔＦｎ（））となるＦｎと等しいかを判定する。
Ｍａｘ（ＬａｔＦｎ（））となるＦｎがデータハザード発生関数と等しくない場合、ステップＳ３０２に進む。Ｍａｘ（ＬａｔＦｎ（））となるＦｎがデータハザード発生関数と等しい場合、ステップＳ３０３に進む。
【００６３】
データハザード発生関数は、そのレイテンシが、Ｍａｘ（ＬａｔＦｎ（））を超えないのであれば、全体のレイテンシ性能に影響を与えない。よって、ステップＳ３０２において、対処決定部１７０は、ＤＩＩ、周波数低減、およびそれらの組み合わせのうち、回路規模が最も小さい対処方法を選択する。
具体例では、図１９からＭａｘ（ＬａｔＦｎ（））は、Ｆ３である。しかしながらデータハザード発生関数はＦ２である。よって、データハザード発生関数は、レイテンシがＭａｘ（ＬａｔＦｎ（））を超えない。そこで、回路規模が最小なのは、図１３および図１４の結果から、ＤＩＩ＝３である。また、ＤＩＩ＝３のときのＦ２のレイテンシは、Ｍａｘ（ＬａｔＦｎ（））を超えない。
【００６４】
このようにデータハザードが発生した場合でも、全体の処理時間を維持しつつ、回路規模を削減できるという効果がある。
【００６５】
Ｍａｘ（ＬａｔＦｎ（））となるＦｎがデータハザード関数と等しい場合は、データハザード発生回路が、並列型の全体の処理時間を決定付けることになる。よって、ステップＳ３０３において、対処決定部１７０は、処理時間を優先に、ＤＩＩ、周波数低減、またはそれらの組み合わせのうち、どれが最も処理時間を小さいかの比較を行う。そして、対処決定部１７０は、処理時間が最も小さい対処方法を選択する。
【００６６】
ステップＳ３０４において、対処決定部１７０は、データハザード発生箇所以外の関数の処理時間が、決定された最も小さい処理時間以下の範囲で、全て再合成を実施する。ステップＳ３０３において決定された最も小さい処理時間が、並列型全体の処理時間となる。このため、データハザードが発生していないその他の関数は、決定された最も小さい処理時間よりも処理時間が小さければ問題ない。言い換えると、データハザードが発生していないその他の関数は、決定された最も小さい処理時間よりも小さければ、処理時間を大きくしても問題ない。そのため、データハザード発生箇所以外の関数の処理時間が、決定された最も小さい処理時間以下の範囲で、全て再合成を実施する。
【００６７】
上述した具体例では、この条件に合わないため、本来ならば実行されないが、説明のため、別のサンプルを定義する。以下では、データハザード発生関数がＦ２ではなく、Ｆ３であるものとして説明する。
【００６８】
図２１は、Ｆ３関数がデータハザード発生関数の場合にＤＩＩを変更した際のレイテンシと回路規模、すなわち第１の全体回路性能７１１の例を表す図である。
図２２は、Ｆ３関数がデータハザード発生関数の場合に周波数低減を行った際のレイテンシと回路規模、すなわち第２の全体回路性能７１２の例を表す図である。
Ｆ３がデータハザード発生関数とする場合、図１９より、Ｍａｘ（ＬａｔＦｎ（））となるＦｎがデータハザード関数と等しくなる。
【００６９】
図２１および図２２では、ＤＩＩ＝２のとき４０００／１００ＭＨｚ＝４０ｕｓｅｃであり、９０ＭＨｚのとき２０００／９０ＭＨｚ＝２２ｕｓｅｃである。このため、最も処理時間が小さいものとして、動作周波数を低減する方式であるとの結果が得られる。つまり、２２ｕｓｅｃが回路全体の性能を決めることになる。ここでは、ＤＩＩ＝１でデータハザードが発生することを前提としている。よって、データハザードの対処方法としては、ＤＩＩ＝２の方式、あるいは、動作周波数を９０ＭＨｚに低減する方式のどちらかの方式が選択される。ここでは、動作周波数を９０ＭＨｚに低減する方式が選択される。
【００７０】
次に、対処決定部１７０は、データハザードが発生していない関数Ｆ１，Ｆ２それぞれで、処理時間２２ｕｓｅｃを上限に回路共有を行わせ、回路規模削減を行う。
このように、データハザードが発生し、レイテンシは増加するものの、回路規模については、削減できるという効果がある。
【００７１】
以上のように、対処決定部１７０は、決定されたデータハザード回避方法である対処方式、および、データハザード発生以外の関数に対して、再度高位合成を行うように高位合成部に指示することで、最良の回路全体のハードウェア記述言語を得ることができる。
【００７２】
＊＊＊他の構成＊＊＊
＜変形例１＞
高位合成装置１００は、ネットワークを介して他の装置と通信する通信装置を備えていてもよい。通信装置は、レシーバとトランスミッタを有する。通信装置は、無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。高位合成装置１００は、通信装置を介して、ソースコード、非機能要件、あるいは使用定義を取得してもよい。あるいは、高位合成装置１００は、通信装置を介して、ＲＴＬあるいは合成レポートを外部の表示装置に表示してもよい。
【００７３】
＜変形例２＞
本実施の形態では、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能がソフトウェアで実現される。変形例として、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能がハードウェアで実現されてもよい。
【００７４】
図２３は、本実施の形態の変形例に係る高位合成装置１００の構成を示す図である。
高位合成装置１００は、電子回路９０９、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０を備える。
【００７５】
電子回路９０９は、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能を実現する専用の電子回路である。
電子回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。
ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
【００７６】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、高位合成装置１００において、ロジック判定部１１０とバッファ判定部１２０とコード変換部１３０と高位合成部１４０とデータハザード検出部１５０と性能算出部１６０と対処決定部１７０の機能は、プロセッシングサーキットリにより実現される。
【００７７】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係る高位合成装置１００は、動作記述を入力として高位合成あるいは動作合成処理を行いＨＤＬ記述を出力する。性能算出部が、データハザードが発生した回路性能情報、あるいは、パイプラインの構成の変更から、レイテンシおよび回路規模の性能を算出する。対処決定部が、データハザード箇所に対して、データハザードを解消するために、パイプライン化の性能を落とす方式と、または動作周波数を落とす方式のいずれか、または両方の方式の組み合わせを決定する。対処決定部は、データハザード発生箇所以外も含めた回路全体のレイテンシと回路規模から、データハザードを解消するための方式を判断する。よって、本実施の形態に係る高位合成装置１００よれば、これまで手動で行ってきた、データハザード発生に対する対処を、自動に行うことができる。さらに、設計者に依存せず、短時間で最適な回路の設計が可能になる。
【００７８】
また、本実施の形態に係る高位合成装置１００では、対処決定部が、データハザード発生回路におけるパイプライン構成の変更、または周波数の変更結果から、データハザード以外の回路に対して、レイテンシおよび回路規模を探索し、再度高位合成する。よって、本実施の形態に係る高位合成装置１００よれば、回路全体において最良のハードウェア記述言語を得ることができる。
【００７９】
以上の実施の形態１では、高位合成装置の各部を独立した機能ブロックとして説明した。しかし、高位合成装置の構成は、上述した実施の形態のような構成でなくてもよい。高位合成装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。また、高位合成装置は、１つの装置でなく、複数の装置から構成されたシステムでもよい。
また、実施の形態１のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
すなわち、実施の形態１では、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【００８０】
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
【符号の説明】
【００８１】
１００  高位合成装置、１１０  ロジック判定部、１２０  バッファ判定部、１３０  コード変換部、１４０  高位合成部、１５０  データハザード検出部、５１１  データハザード箇所、１６０  性能算出部、６１０  性能見積もり値、６１１  第１の性能、６１２  第２の性能、１７０  対処決定部、７１１  第１の全体回路性能、７１２  第２の全体回路性能、１８０  記憶部、１８１  ソースコード、１８２  非機能要件、１８３  仕様定義、１８４  ＲＴＬ、１８５  合成レポート、９０９  電子回路、９１０  プロセッサ、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、Ｓ１００  高位合成処理、Ｓ０１０  合成処理、Ｓ１１０  データハザード検出処理、Ｓ１２０  性能算出処理、Ｓ１３０  対処決定処理。
【図１】
2019186618.tif 000003
【図２】
2019186618.tif 000004
【図３】
2019186618.tif 000005
【図４】
2019186618.tif 000006
【図５】
2019186618.tif 000007
【図６】
2019186618.tif 000008
【図７】
2019186618.tif 000009
【図８】
2019186618.tif 000010
【図９】
2019186618.tif 000011
【図１０】
2019186618.tif 000012
【図１１】
2019186618.tif 000013
【図１２】
2019186618.tif 000014
【図１３】
2019186618.tif 000015
【図１４】
2019186618.tif 000016
【図１５】
2019186618.tif 000017
【図１６】
2019186618.tif 000018
【図１７】
2019186618.tif 000019
【図１８】
2019186618.tif 000020
【図１９】
2019186618.tif 000021
【図２０】
2019186618.tif 000022
【図２１】
2019186618.tif 000023
【図２２】
2019186618.tif 000024
【図２３】
2019186618.tif 000025
【国際調査報告】
2019186618.tif 000026
2019186618.tif 000027