(57)【要約】  仕様編集部（１３０）は、複数の処理で使用される複数の配列を共用配列に置き換えるために、ハードウェア仕様ファイル（１９３）を編集する。仕様変形部（１５０）は、編集後のハードウェア仕様ファイルが制約を満たさない場合、複数の処理を並列に実行するために、ハードウェア仕様ファイルを変形する。アーキテクチャ生成部（１６０）は、ハードウェア仕様ファイルに対応するハードウェアを有するＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）のアーキテクチャを表すアーキテクチャファイル（１９４）を生成する。
2017046941.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェアで実行する処理がプログラミング言語で記述されたファイルであって、異なる配列を使用する複数の処理を示す複数の処理文と、前記複数の処理で使用される複数の配列を宣言する複数の宣言文と、を含んだファイルであるハードウェア仕様ファイルから、前記複数の宣言文を特定する宣言文特定部と、
特定された複数の宣言文を、前記複数の処理で共用する共用配列を宣言する宣言文に置き換えて、前記複数の処理文それぞれを、前記共用配列を使用する処理を示す処理文に変更することによって、編集後のハードウェア仕様ファイルを生成する仕様生成部と
を備えるアーキテクチャ生成装置。
【請求項２】
前記編集後のハードウェア仕様ファイルが、回路規模を制限する規模制約と、処理時間を制限する時間制約と、を満たすか判定する制約判定部と、
前記編集後のハードウェア仕様ファイルが前記規模制約を満たすが前記時間制約を満たさないと判定された場合、前記複数の処理文のいずれかの処理文を対象文として選択し、前記複数の処理文を、前記対象文を含んだ処理ブロックと、前記対象文以外の処理文を含んだ処理ブロックと、に変更することによって、変形後のハードウェア仕様ファイルを生成する仕様変形部と
を備える請求項１に記載のアーキテクチャ生成装置。
【請求項３】
前記制約判定部は、前記変形後のハードウェア仕様ファイルが前記規模制約と前記時間制約とを満たすか判定し、
前記仕様変形部は、前記変形後のハードウェア仕様ファイルが前記規模制約を満たすが前記時間制約を満たさないと判定された場合、前記対象文以外の処理文を含んだ処理ブロックである対象処理ブロックからいずれかの処理文を追加の対象文として選択し、前記対象処理ブロックを、前記追加の対象文を含んだ処理ブロックと、前記追加の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、再変形後のハードウェア仕様ファイルを生成する
請求項２に記載のアーキテクチャ生成装置。
【請求項４】
前記制約判定部は、前記再変形後のハードウェア仕様ファイルが前記規模制約を満たすか判定し、
前記仕様変形部は、前記再変形後のハードウェア仕様ファイルが前記規模制約を満たさないと判定された場合、前記対象処理ブロックから前記追加の対象文とは異なる処理文を他の対象文として選択し、前記対象処理ブロックを、前記他の対象文を含んだ処理ブロックと、前記他の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、再変形後のハードウェア仕様ファイルを生成し直す
請求項３に記載のアーキテクチャ生成装置。
【請求項５】
前記制約判定部は、変形後のハードウェア仕様ファイルが前記規模制約を満たすか判定し、
前記仕様変形部は、前記変形後のハードウェア仕様ファイルが前記規模制約を満たさないと判定された場合、前記複数の処理文から前記対象文とは異なる処理文を他の対象文として選択し、前記複数の処理文を、前記他の対象文を含んだ処理ブロックと、前記他の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、変形後のハードウェア仕様ファイルを生成し直す
請求項２に記載のアーキテクチャ生成装置。
【請求項６】
前記制約判定部は、前記編集後のハードウェア仕様ファイルを高位合成して得られる高位合成結果を取得し、取得した高位合成結果を用いて、前記編集後のハードウェア仕様ファイルが前記規模制約と前記時間制約とを満たすか判定する
請求項２に記載のアーキテクチャ生成装置。
【請求項７】
前記複数の処理は、順番に実行される処理であり、
前記仕様変形部は、前記共用配列を宣言する宣言文を、前記対象文を含んだ処理ブロックと前記対象文以外の処理文を含んだ処理ブロックとが使用する外部配列を宣言する宣言文に置き換えて、前記対象文を、前記外部配列を使用する処理を示す処理文に変更し、前記対象文以外の処理文のうち、前記対象文と順番が連続する処理文を、前記外部配列を使用する処理文に変更する
請求項２に記載のアーキテクチャ生成装置。
【請求項８】
前記仕様変形部は、前記対象文以外の処理文を含んだ処理ブロックのうち、前記対象文と順番が連続する処理文以外の処理文である他の処理文が複数ある処理ブロックに、前記他の処理文で共用する処理ブロック別の共用配列を宣言する宣言文を追加し、前記他の処理文を、前記処理ブロック別の共用配列を使用する処理を示す処理文に変更する
請求項７に記載のアーキテクチャ生成装置。
【請求項９】
前記ハードウェア仕様ファイルに含まれる処理ブロックに対応する論理回路を有するハードウェアの情報と、前記ハードウェア仕様ファイルで宣言された共用配列に対応する共用メモリの情報と、を含んだアーキテクチャファイルを生成するアーキテクチャ生成部
を備える請求項２に記載のアーキテクチャ生成装置。
【請求項１０】
ハードウェアで実行する処理がプログラミング言語で記述されたファイルであって、異なる配列を使用する複数の処理を示す複数の処理文と、前記複数の処理で使用される複数の配列を宣言する複数の宣言文と、を含んだファイルであるハードウェア仕様ファイルから、前記複数の宣言文を特定する宣言文特定処理と、
特定された複数の宣言文を、前記複数の処理で共用する共用配列を宣言する宣言文に置き換えて、前記複数の処理文それぞれを、前記共用配列を使用する処理を示す処理文に変更することによって、編集後のハードウェア仕様ファイルを生成する仕様生成処理と
をコンピュータに実行させるためのアーキテクチャ生成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）のアーキテクチャ設計を支援する技術に関するものである。
【背景技術】
【０００２】
家電製品および事務機器などで広く利用されているシステムは、一般に、ハードウェアとソフトウェアとから構成されている組み込みシステムである。
組み込みシステムは、ＡＳＩＣ、プロセッサおよびメモリ等から構成されている。ＡＳＩＣは、ＦＰＧＡに置き換えられることがある。
ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ
Ａｒｒａｙの略称である。【０００３】
近年、組み込みシステムはＳｏＣという形で提供されている。
ＳｏＣは、システムの動作に必要な機能の全てが実装された一つの半導体チップである。【０００４】
組み込みシステムの設計では、システム全体の処理機能を記述した仕様を、ＡＳＩＣ等によりハードウェア化する部分と、プロセッサで実行されるプログラムとしてソフトウェア化する部分とに分割する必要がある。これをソフトウェア／ハードウェア機能分割という。
また、組み込みシステムの設計では、分割された複数の機能をＳｏＣにどのように実装すれば所望の性能が出させるか、を検討する必要がある。これをアーキテクチャ設計と呼ぶ。【０００５】
特許文献１では、システム全体の処理機能を記述した仕様から各処理の負荷を計算し、負荷が閾値を超えた処理をハードウェア化することでソフトウェア／ハードウェア機能分割を実施する装置が開示されている。【０００６】
特許文献２では、予め与えられるハードウェア構成情報を基にモジュール間の接続バスを自動判別して通信インタフェースを生成する装置が開示されている。ハードウェア構成情報は、オンチップバスおよび直結などの接続情報を含んだ情報である。【０００７】
特許文献１と特許文献２とを組み合わせることで、アルゴリズムＣからＳｏＣを自動生成することを実現できる。アルゴリズムＣは、Ｃ言語で記述されたアルゴリズムである。
しかしながら、ＳｏＣを自動生成するためには、システム仕様を実現するＳｏＣアーキテクチャを事前に検討する必要がある。具体的には、ＳｏＣに備わるハードウェアを構成するモジュール構成を事前に検討する必要がある。【０００８】
ハードウェアのモジュール構成は、設計者の経験によってモジュール分割を行うことで決定されていた。また、モジュール分割は、ハードウェア化する処理のシステム仕様を分析し、処理の並列動作および回路の共通化などの視点を基に行われていた。
しかしながら、設計者の経験によって最適なモジュール分割を行うことは非常に困難であるため、大きな手戻りの発生が懸念される。大きな手戻りは、ＳｏＣ設計の後工程で性能が未達であることが判明する、または、回路規模がチップ面積を超えてしまう、といった事態が発生した場合に発生する。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２０１３−１２５４１９号公報
【特許文献２】特開２００８−２０４３４１号公報
【特許文献３】特許第５３１２１５１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
本発明は、ＳｏＣのアーキテクチャ設計を支援できるようにすることを目的とする。
【課題を解決するための手段】
【００１１】
本発明のアーキテクチャ生成装置は、
ハードウェアで実行する処理がプログラミング言語で記述されたファイルであって、異なる配列を使用する複数の処理を示す複数の処理文と、前記複数の処理で使用される複数の配列を宣言する複数の宣言文と、を含んだファイルであるハードウェア仕様ファイルから、前記複数の宣言文を特定する宣言文特定部と、
特定された複数の宣言文を、前記複数の処理で共用する共用配列を宣言する宣言文に置き換えて、前記複数の処理文それぞれを、前記共用配列を使用する処理を示す処理文に変更することによって、編集後のハードウェア仕様ファイルを生成する仕様生成部とを備える。
【発明の効果】
【００１２】
本発明によれば、複数の配列が共用配列に置き換えられたハードウェア仕様ファイルが生成される。このようなハードウェア仕様ファイルを生成することにより、ＳｏＣのアーキテクチャ設計を支援することができる。
【図面の簡単な説明】
【００１３】
【図１】実施の形態１におけるアーキテクチャ生成装置１００の構成図。
【図２】実施の形態１における組み込みシステム２１０の構成図。
【図３】実施の形態１におけるシステム仕様ファイル３００の構成図。
【図４】実施の形態１における制約情報１９１の構成図。
【図５】実施の形態１におけるソフトウェア仕様ファイル１９２の構成図。
【図６】実施の形態１におけるハードウェア仕様ファイル１９３の構成図。
【図７】実施の形態１における編集後のハードウェア仕様ファイル１９３の構成図。
【図８】実施の形態１における変形後のハードウェア仕様ファイル１９３の構成図。
【図９】実施の形態１における処理ブロック（１）の構成図。
【図１０】実施の形態１における処理ブロック（２）の構成図。
【図１１】実施の形態１における処理ブロック（３）の構成図。
【図１２】実施の形態１における再変形後のハードウェア仕様ファイル１９３の構成図。
【図１３】実施の形態１における処理ブロック（１−１）の構成図。
【図１４】実施の形態１における処理ブロック（１−２）の構成図。
【図１５】実施の形態１における処理ブロック（１−３）の構成図。
【図１６】実施の形態１における再変形後のハードウェア仕様ファイル１９３の構成図。
【図１７】実施の形態１における処理ブロック（１−１）の構成図。
【図１８】実施の形態１における処理ブロック（１−２）の構成図。
【図１９】実施の形態１におけるアーキテクチャ生成方法のフローチャート。
【図２０】実施の形態１におけるアーキテクチャ生成方法のフローチャート。
【図２１】実施の形態１におけるＳ１１０のフローチャート。
【図２２】実施の形態１における配列情報２２０を示す図。
【図２３】実施の形態１におけるアーキテクチャファイル１９４の概要図。
【図２４】実施の形態１における変形後のソフトウェア仕様ファイル１９２を示す図。
【図２５】実施の形態１における編集後のハードウェア仕様ファイル１９３を評価した結果を示す図。
【図２６】実施の形態１におけるＳ１３０のフローチャート。
【図２７】実施の形態１におけるハードウェア処理毎の処理時間を示す図。
【図２８】実施の形態１における変形後のアーキテクチャファイル１９４の概要図。
【図２９】実施の形態１における変形後のハードウェア処理の処理時間を示す図。
【図３０】実施の形態１における変形後のハードウェア仕様ファイル１９３を評価した結果を示す図。
【図３１】実施の形態１における再変形後のアーキテクチャファイル１９４の概要図。
【図３２】実施の形態１における再変形後のハードウェア処理の処理時間を示す図。
【図３３】実施の形態１における再変形後のハードウェア仕様ファイル１９３を評価した結果を示す図。
【図３４】実施の形態１における再変形後のアーキテクチャファイル１９４の概要図。
【図３５】実施の形態１における再変形後のハードウェア処理の処理時間を示す図。
【図３６】実施の形態１における再変形後のハードウェア仕様ファイル１９３を評価した結果を示す図。
【発明を実施するための形態】
【００１４】
実施の形態１．
ＳｏＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）のアーキテクチャ設計を支援するアーキテクチャ生成装置１００について、図１から図３６に基づいて説明する。
【００１５】
＊＊＊構成の説明＊＊＊
図１に基づいて、アーキテクチャ生成装置１００の構成について説明する。
アーキテクチャ生成装置１００は、プロセッサ９０１、メモリ９０３、通信装置９０４、入力インタフェース９０５、表示インタフェース９０６といったハードウェアを備えるコンピュータである。
プロセッサ９０１は信号線９１０を介して他のハードウェアと接続されている。入力インタフェース９０５はケーブル９１１を介して入力装置９０７に接続されている。表示インタフェース９０６はケーブル９１２を介して表示装置９０８に接続されている。
【００１６】
プロセッサ９０１は、プロセッシングを行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。プロセッサ９０１の一例は、ＣＰＵ、ＤＳＰ、ＧＰＵである。ＣＰＵはＣｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称であり、ＤＳＰはＤｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒの略称であり、ＧＰＵはＧｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔの略称である。
メモリ９０３はデータを記憶する記憶装置である。メモリ９０３の一例はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、データを受信するレシーバ９０４１と、データを送信するトランスミッタ９０４２とを備える。通信装置９０４の一例は、通信チップ、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入力インタフェース９０５はケーブル９１１が接続されるポートであり、ポートの一例はＵＳＢ端子である。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
表示インタフェース９０６はケーブル９１２が接続されるポートであり、ＵＳＢ端子およびＨＤＭＩ端子はポートの一例である。ＨＤＭＩ（登録商標）はＨｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅの略称である。
入力装置９０７はデータ、命令および要求を入力する。入力装置９０７の一例は、マウス、キーボード、タッチパネルである。
表示装置９０８はデータ、結果および応答を表示する。表示装置９０８の一例はＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。
【００１７】
メモリ９０３には、アーキテクチャ生成装置１００で使用、生成または入出力するデータが記憶される。
具体的には、メモリ９０３には、システム仕様ファイル３００と、制約情報１９１と、ソフトウェア仕様ファイル１９２と、ハードウェア仕様ファイル１９３と、アーキテクチャファイル１９４とが記憶される。
さらに、メモリ９０３には、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がロードされる。また、メモリ９０３には、仕様受付部１１０、仕様分割部１２０、仕様編集部１３０、制約判定部１４０、仕様変形部１５０およびアーキテクチャ生成部１６０といった「部」の機能を実現するプログラムがロードされる。「部」の機能を実現するプログラムは記憶媒体に記憶することができる。
プロセッサ９０１は、ＯＳを実行しながら、「部」の機能を実現するプログラムを実行する。つまり、「部」の機能を実現するプログラムは、メモリ９０３にロードされて、プロセッサ９０１によって実行される。
なお、アーキテクチャ生成装置１００が複数のプロセッサ９０１を備えて、複数のプロセッサ９０１が「部」の機能を実現するプログラムを連携して実行してもよい。
【００１８】
「部」の処理の結果を示すデータ、情報、信号値および変数値などは、メモリ９０３、プロセッサ９０１内のレジスタ、または、プロセッサ９０１内のキャッシュメモリに記憶される。
【００１９】
「部」は「サーキットリ」で実装してもよい。「部」は「回路」、「工程」、「手順」または「処理」に読み替えてもよい。
「回路」及び「サーキットリ」は、プロセッサ９０１、ロジックＩＣ、ＧＡ、ＡＳＩＣ、ＦＰＧＡといった処理回路を包含する概念である。ＧＡはＧａｔｅ  Ａｒｒａｙの略称であり、ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ
Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
【００２０】
仕様受付部１１０は、システム仕様ファイル３００と、制約情報１９１とを受け付ける。
システム仕様ファイル３００は、組み込みシステム２１０で実行する処理がプログラミング言語で記述されたファイルである。組み込みシステム２１０は、ＳｏＣに実装されるシステムである。
制約情報１９１は、規模制約と時間制約とを含んだ情報である。規模制約は、ハードウェア２１２の回路規模を制限するための条件である。ハードウェア２１２の回路規模は、ハードウェア２１２が有する論理回路の規模である。時間制約は、ハードウェア２１２の処理時間を制限するための条件である。ハードウェア２１２の処理時間は、ハードウェア２１２が処理の実行に要する時間である。
【００２１】
図２に基づいて、組み込みシステム２１０の構成について説明する。
組み込みシステム２１０は、プロセッサ２１１と、ハードウェア２１２と、共用メモリ２１３と、バス２１４とを備える。
プロセッサ２１１は、ソフトウェア処理を実行する。ソフトウェア処理は、組み込みシステム２１０で実行する処理のうち、プロセッサ２１１が実行する処理である。
ハードウェア２１２は、ハードウェア処理を実行する。ハードウェア処理は、組み込みシステム２１０で実行する処理のうち、ハードウェア２１２が実行する処理である。
共用メモリ２１３は、複数のハードウェア処理で共用するメモリである。
プロセッサ２１１、ハードウェア２１２および共用メモリ２１３は、バス２１４に接続される。
【００２２】
図３に基づいて、システム仕様ファイル３００の構成について説明する。
システム仕様ファイル３００は、Ｃ言語で記述されたファイルである。
システム仕様ファイル３００は、複数の宣言文３０１と、複数の処理文３０２とを含んでいる。
複数の宣言文３０１は、複数の処理で使用される複数の配列を宣言している。
複数の処理文３０２は、異なる配列を使用する複数の処理を示している。
複数の処理は、順番に実行される処理である。つまり、処理Ａ、処理Ｂ、処理Ｃ、処理Ｄ、処理Ｅ、処理Ｆの順番で実行される。ｆｏｒループは処理単位の一例であり、順番に実行される複数のｆｏｒループは複数の処理の一例である。
処理Ａは配列ｍｅｍＡを使用し、処理Ｂは配列ｍｅｍＢを使用し、処理Ｃは配列ｍｅｍＣを使用し、処理Ｄは配列ｍｅｍＤを使用し、処理Ｅは配列ｍｅｍＥを使用し、処理Ｆは配列ｍｅｍＦを使用する。
先頭に／＊が記され、末尾に＊／が記された行については、処理の具体的な記述を省略している。
【００２３】
図４に基づいて、制約情報１９１の構成について説明する。
制約情報１９１は、規模制約と時間制約とを含んでいる。
規模制約は、回路規模の上限となるゲート数を示している。
時間制約は、処理時間の上限となるサイクル数を示している。
【００２４】
図１に戻り、アーキテクチャ生成装置１００の説明を続ける。
仕様分割部１２０は、システム仕様ファイル３００を、ソフトウェア仕様ファイル１９２と、ハードウェア仕様ファイル１９３とに分割する。
【００２５】
ソフトウェア仕様ファイル１９２は、システム仕様ファイル３００に記述された処理のうち、プロセッサ２１１で実行する処理が記述されたファイルである。
図５に、図３のシステム仕様ファイル３００を分割することによって得られるソフトウェア仕様ファイル１９２を示す。
【００２６】
ハードウェア仕様ファイル１９３は、システム仕様ファイル３００に記述された処理のうち、ハードウェア２１２で実行する処理が記述されたファイルである。
図６に、図３のシステム仕様ファイル３００を分割することによって得られるハードウェア仕様ファイル１９３を示す。
ハードウェア仕様ファイル１９３は、複数の宣言文３０１と、複数の処理文３０２とを含んでいる。
【００２７】
仕様編集部１３０は、宣言文特定部１３１と、仕様生成部１３２とを備える。
宣言文特定部１３１は、異なる配列を使用する複数の処理を示す複数の処理文３０２と、複数の処理で使用される複数の配列を宣言する複数の宣言文３０１と、を含んだハードウェア仕様ファイル１９３から、複数の宣言文３０１を特定する。
仕様生成部１３２は、編集後のハードウェア仕様ファイル１９３を生成する。
編集後のハードウェア仕様ファイル１９３は、特定された複数の宣言文３０１を、複数の処理で共用する共用配列を宣言する宣言文３０３に置き換えて、複数の処理文３０２それぞれを、共用配列を使用する処理を示す処理文３０４に変更することによって、生成される。
図７に、図６のハードウェア仕様ファイル１９３を編集することによって得られる編集後のハードウェア仕様ファイル１９３を示す。
編集後のハードウェア仕様ファイル１９３は、共用配列を宣言する宣言文３０３と、共用配列を使用する複数の処理文３０４とを含んでいる。
【００２８】
制約判定部１４０は、編集後のハードウェア仕様ファイル１９３が規模制約と時間制約とを満たすか否かを以下のように判定する。規模制約および時間制約は制約情報１９１に含まれる制約である。
まず、制約判定部１４０は、編集後のハードウェア仕様ファイル１９３を高位合成して得られる高位合成結果を取得する。
そして、制約判定部１４０は、取得した高位合成結果を用いて、編集後のハードウェア仕様ファイル１９３が規模制約と時間制約とを満たすか判定する。
高位合成結果は、ＲＴＬファイルと回路規模情報とを含み、高位合成装置２００から取得される。
ＲＴＬファイルは、ハードウェア２１２の論理回路の構成を表すＲＴＬが記述されたファイルである。ＲＴＬは、Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌの略称である。
回路規模情報は、ＲＴＬファイルに記述されたＲＴＬが表す構成におけるハードウェア２１２の回路規模を示す情報である。
【００２９】
仕様変形部１５０は、編集後のハードウェア仕様ファイル１９３が規模制約を満たすが時間制約を満たさないと判定された場合、変形後のハードウェア仕様ファイル１９３を以下のように生成する。
まず、仕様変形部１５０は、複数の処理文３０４のいずれかの処理文３０４を対象文として選択する。
そして、仕様変形部１５０は、複数の処理文３０４を、対象文を含んだ処理ブロックと、対象文以外の処理文を含んだ処理ブロックと、に変更する。
処理ブロックは、一連の処理を構成する１つ以上の処理の纏まりである。具体的には、宣言文、ｆｏｒ文およびｆｏｒ文の中に記載された処理文が処理ブロックを構成する。
【００３０】
さらに、仕様変形部１５０は、以下のような編集を行う。
仕様変形部１５０は、共用配列を宣言する宣言文３０３を、対象文を含んだ処理ブロックと対象文以外の処理文３０４を含んだ処理ブロックとが使用する外部配列を宣言する宣言文３０５に置き換える。外部配列は、複数の処理ブロックで使用する配列である。
仕様変形部１５０は、対象文を、外部配列を使用する処理を示す処理文３０６に変更する。
仕様変形部１５０は、対象文以外の処理文３０４のうち、対象文と順番が連続する処理文３０４を、外部配列を使用する処理文３０６に変更する。
仕様変形部１５０は、対象文以外の処理文３０４を含んだ処理ブロックのうち、対象文と順番が連続する処理文以外の処理文である他の処理文が複数ある処理ブロックに、他の処理文で共用する処理ブロック別の共用配列を宣言する宣言文３０７を追加する。
仕様変形部１５０は、他の処理文を、処理ブロック別の共用配列を使用する処理を示す処理文３０８に変更する。
【００３１】
図８に、図７の編集後のハードウェア仕様ファイル１９３を編集することによって得られる変形後のハードウェア仕様ファイル１９３を示す。
処理Ａ〜処理Ｆのうちの処理Ｄの処理文３０４が対象文として選択された場合、変形後のハードウェア仕様ファイル１９３は、外部配列の宣言文３０５と、処理ブロック（１）と、処理ブロック（２）と、処理ブロック（３）と含む。
図９に示すように、処理ブロック（１）は、共用配列の宣言文３０７と、処理Ａの処理文３０８と、処理Ｂの処理文３０８と、処理Ｃの処理文３０６とを含んでいる。
図１０に示すように、処理ブロック（２）は、処理Ｄの処理文３０６を含んでいる。
図１１に示すように、処理ブロック（３）は、共用配列の宣言文３０７と、処理Ｅの処理文３０６と、処理Ｆの処理文３０８とを含んでいる。
【００３２】
制約判定部１４０は、変形後のハードウェア仕様ファイル１９３が規模制約と時間制約とを満たすか判定する。
【００３３】
仕様変形部１５０は、再変形後のハードウェア仕様ファイル１９３を以下のように生成する。
まず、仕様変形部１５０は、変形後のハードウェア仕様ファイル１９３が規模制約を満たすが時間制約を満たさないと判定された場合、対象文以外の処理文を含んだ処理ブロックである対象処理ブロックからいずれかの処理文３０８を追加の対象文として選択する。
そして、仕様変形部１５０は、対象処理ブロックを、追加の対象文を含んだ処理ブロックと、追加の対象文以外の処理文を含んだ処理ブロックと、に変更する。
【００３４】
図１２に、図８の変形後のハードウェア仕様ファイル１９３を編集することによって得られる再変形後のハードウェア仕様ファイル１９３を示す。
処理ブロック（１）〜（３）のうちの処理ブロック（１）が対象処理ブロックとして選択され、処理ブロック（１）に含まれる処理Ａ〜処理Ｃのうちの処理Ｂの処理文が追加の対象文として選択されたものとする。
その場合、再変形後のハードウェア仕様ファイル１９３は、処理ブロック（１−１）と、処理ブロック（１−２）と、処理ブロック（１−３）とを含む。
図１３に示すように、処理ブロック（１−１）は、処理Ａの処理文３０６を含んでいる。
図１４に示すように、処理ブロック（１−２）は、処理Ｂの処理文３０６を含んでいる。
図１５に示すように、処理ブロック（１−３）は、処理Ｃの処理文３０６を含んでいる。
【００３５】
制約判定部１４０は、再変形後のハードウェア仕様ファイル１９３が規模制約を満たすか判定する。
【００３６】
仕様変形部１５０は、再変形後のハードウェア仕様ファイル１９３が規模制約を満たさないと判定された場合、再変形後のハードウェア仕様ファイル１９３を以下のように生成し直す。
まず、仕様変形部１５０は、対象処理ブロックから追加の対象文とは異なる処理文を他の対象文として選択する。
そして、仕様変形部１５０は、対象処理ブロックを、他の対象文を含んだ処理ブロックと、他の対象文以外の処理文を含んだ処理ブロックと、に変更する。
【００３７】
図１６に、図８の変形後のハードウェア仕様ファイル１９３を編集することによって得られる再変形後のハードウェア仕様ファイル１９３を示す。
処理ブロック（１）〜（３）のうちの処理ブロック（１）が対象処理ブロックとして選択され、処理ブロック（１）に含まれる処理Ａ〜処理Ｃのうちの処理Ｃの処理文が他の対象文として選択されたものとする。
その場合、再変形後のハードウェア仕様ファイル１９３は、処理ブロック（１−１）と、処理ブロック（１−２）とを含む。
図１７に示すように、処理ブロック（１−１）は、共用配列の宣言文３０７と、処理Ａの処理文３０８と、処理Ｂの処理文３０６とを含んでいる。
図１８に示すように、処理ブロック（１−２）は、処理Ｃの処理文３０６を含んでいる。
【００３８】
なお、変形後のハードウェア仕様ファイル１９３が規模制約を満たさないと判定された場合、仕様変形部１５０は、変形後のハードウェア仕様ファイル１９３を以下のように生成し直す。
まず、仕様変形部１５０は、複数の処理文３０４から対象文とは異なる処理文３０４を他の対象文として選択する。
そして、仕様変形部１５０は、複数の処理文３０４を、他の対象文を含んだ処理ブロックと、他の対象文以外の処理文３０４を含んだ処理ブロックと、に変更する
【００３９】
アーキテクチャ生成部１６０は、以下のようなアーキテクチャファイル１９４を生成する。
アーキテクチャファイル１９４は、ハードウェア仕様ファイル１９３に含まれる処理ブロックに対応する論理回路を有するハードウェア２１２の情報と、ハードウェア仕様ファイル１９３で宣言された共用配列に対応する共用メモリ２１３の情報とを含む。
【００４０】
メモリ９０３は、アーキテクチャ生成装置１００で使用、生成または入出力されるデータを記憶する。
メモリ９０３に記憶されるデータの一例は、システム仕様ファイル３００、制約情報１９１、ソフトウェア仕様ファイル１９２、ハードウェア仕様ファイル１９３およびアーキテクチャファイル１９４である。
【００４１】
高位合成装置２００は高位合成を行う装置である。高位合成は、プログラミング言語の記述を用いて、ＲＴＬの記述を自動で生成する機能である。この機能を実現するツールを高位合成ツールという。プログラミング言語は、ＲＴＬよりも抽象度が高い高級言語である。プログラミング言語の一例は、Ｃ言語、Ｃ＋＋言語およびＳｙｓｔｅｍＣ言語である。
【００４２】
＊＊＊動作の説明＊＊＊
アーキテクチャ生成装置１００の動作はアーキテクチャ生成方法に相当する。また、アーキテクチャ生成方法はアーキテクチャ生成プログラムの処理手順に相当する。
【００４３】
図１９および図２０に基づいて、アーキテクチャ生成方法について説明する。
Ｓ１０１は受付処理である。
Ｓ１０１において、システム仕様ファイル３００および制約情報１９１が利用者によって入力装置９０７を用いてアーキテクチャ生成装置１００に入力される。
仕様受付部１１０は、入力されたシステム仕様ファイル３００と制約情報１９１とを入力インタフェース９０５を介して受け付ける。
【００４４】
Ｓ１０２は仕様分割処理である。
Ｓ１０２において、仕様分割部１２０は、システム仕様ファイル３００をソフトウェア仕様ファイル１９２とハードウェア仕様ファイル１９３とに分割する。
図３のシステム仕様ファイル３００は、図５のソフトウェア仕様ファイル１９２と、図６のハードウェア仕様ファイル１９３とに分割される。
【００４５】
Ｓ１１０はアーキテクチャ生成処理および仕様編集処理である。
Ｓ１１０において、アーキテクチャ生成部１６０は、アーキテクチャファイル１９４を生成する。
また、仕様編集部１３０は、ソフトウェア仕様ファイル１９２を編集し、ハードウェア仕様ファイル１９３を編集する。
【００４６】
図２１に基づいて、アーキテクチャ生成処理および仕様編集処理（Ｓ１１０）について説明する。
Ｓ１１１は宣言文特定処理である。
Ｓ１１１において、宣言文特定部１３１は、ハードウェア仕様ファイル１９３を解析し、処理別の配列を宣言している複数の宣言文３０１を特定する。
具体的には、宣言文特定部１３１は、ハードウェア仕様ファイル１９３に対して字句解析および構文解析を行うことによって、宣言文の構文に合致する文を宣言文３０１として特定する。
図６のハードウェア仕様ファイル１９３において、６つの宣言文３０１が特定される。
【００４７】
Ｓ１１２において、宣言文特定部１３１は、複数の宣言文３０１を解析し、処理別の配列の情報を示す配列情報２２０を生成する。
図２２は、図６のハードウェア仕様ファイル１９３から特定された６つの宣言文３０１を解析して得られる配列情報２２０を示している。
配列情報２２０は、配列名とビット幅と要素数とを含んでいる。
配列名は、配列を識別する配列識別子である。
ビット幅は、配列を構成する要素の大きさである。
要素数は、配列を構成する要素の数である。
【００４８】
Ｓ１１３において、アーキテクチャ生成部１６０は、システム仕様ファイル３００および配列情報２２０を用いて、アーキテクチャファイル１９４を生成する。
具体的には、アーキテクチャ生成部１６０は、プロセッサ２１１の情報とハードウェア２１２の情報と共用メモリ２１３の情報とバス２１４の情報とを含んだフォーマットを用いて、アーキテクチャファイル１９４を以下のように生成する。
アーキテクチャ生成部１６０は、システム仕様ファイル３００に対して字句解析および構文解析を行うことによって、システム仕様ファイル３００に含まれる処理を特定する。そして、アーキテクチャ生成部１６０は、特定した処理の情報をハードウェア２１２の情報の一部としてアーキテクチャファイル１９４に設定する。さらに、アーキテクチャ生成部１６０は、配列情報２２０から最大のビット幅と最大の要素数とを取得する。そして、アーキテクチャ生成部１６０は、最大のビット幅をバス２１４の情報の一部としてアーキテクチャファイル１９４に設定する。また、アーキテクチャ生成部１６０は、最大のビット幅と最大の要素数とを共用メモリ２１３の情報の一部としてアーキテクチャファイル１９４に設定する。
図２３は、図２２の配列情報２２０を用いて生成されるアーキテクチャファイル１９４の内容を示している。
アーキテクチャファイル１９４は、組み込みシステム２１０のアーキテクチャの情報として、プロセッサ２１１の情報と、ハードウェア２１２の情報と、共用メモリ２１３の情報と、バス２１４の情報とを含んでいる。
ハードウェア２１２の情報は、ハードウェア２１２が、処理Ａ〜処理Ｆを実行する論理回路と、共用メモリ２１３にアクセスするメモリインタフェースと、を有することを示している。
共用メモリ２１３の情報は、共用メモリ２１３のビット幅が６４ビットであり、共用メモリ２１３の要素数が５００００個であることを示している。この共用メモリ２１３のビット幅は、図２２の配列情報２２０に示される各配列のビット幅のうちの最大のビット幅である。また、この共用メモリ２１３の要素数は、図２２の配列情報２２０に示される各配列の要素数のうちの最大の要素数である。
バス２１４の情報は、バス２１４のビット幅が６４ビットであることを示している。バス２１４のビット幅は、共用メモリ２１３のビット幅と同じである。
【００４９】
Ｓ１１４はソフトウェア仕様生成処理である。
Ｓ１１４において、仕様生成部１３２は、ソフトウェア仕様ファイル１９２を以下のように編集することによって、編集後のソフトウェア仕様ファイル１９２を生成する。
仕様生成部１３２は、インタフェース（Ｈ）の記述をソフトウェア仕様ファイル１９２に追加する。インタフェース（Ｈ）は、プロセッサ２１１がハードウェア２１２と通信するためのインタフェースである。
図２４は、図５のソフトウェア仕様ファイル１９２を編集することによって生成される編集後のソフトウェア仕様ファイル１９２を示している。
【００５０】
Ｓ１１５はハードウェア仕様生成処理である。
Ｓ１１５において、仕様生成部１３２は、ハードウェア仕様ファイル１９３を以下のように編集することによって、編集後のハードウェア仕様ファイル１９３を生成する。編集後のハードウェア仕様ファイル１９３の内容は、アーキテクチャファイル１９４の内容と合っている。
仕様生成部１３２は、インタフェース（Ｓ）の記述をハードウェア仕様ファイル１９３に追加する。インタフェース（Ｓ）は、ハードウェア２１２がプロセッサ２１１と通信するためのインタフェースである。
仕様生成部１３２は、処理別の配列を宣言している宣言文３０１を、共用配列を宣言する宣言文３０３に置き換える。具体的には、仕様生成部１３２は、宣言文３０３のフォーマットを編集して宣言文３０３を生成する。そして、仕様生成部１３２は、Ｓ１１１で特定した宣言文３０１をハードウェア仕様ファイル１９３から削除し、宣言文３０１が記載されていた場所に宣言文３０３を記載する。
仕様生成部１３２は、処理別の配列を使用している処理を示す処理文３０２を、共用配列を使用する処理を示す処理文３０２に変更する。具体的には、仕様生成部１３２は、Ｓ１１１で特定した宣言文３０１に記載された配列を検索し、検索した配列の名称を共用配列の名称に書き換える。
図６のハードウェア仕様ファイル１９３を編集することによって、図７のハードウェア仕様ファイル１９３が生成される。
宣言文３０３は、６４ビットの要素を５００００個有する共用配列を宣言している。この共用配列は共用メモリ２１３に相当する。この共用配列のビット幅は、図２２の配列情報２２０に示される各配列のビット幅のうちの最大のビット幅である。また、この共用配列のビット幅は、図２２の配列情報２２０に示される各配列の要素数のうちの最大の要素数である。
【００５１】
Ｓ１１６において、仕様生成部１３２は、編集後のソフトウェア仕様ファイル１９２をメモリ９０３のソフトウェア仕様ファイル１９２に上書きする。これにより、ソフトウェア仕様ファイル１９２が更新される。
さらに、仕様生成部１３２は、編集後のハードウェア仕様ファイル１９３をメモリ９０３のハードウェア仕様ファイル１９３に上書きする。これにより、ハードウェア仕様ファイル１９３が更新される。
Ｓ１１６の後、アーキテクチャ生成処理および仕様編集処理（Ｓ１１０）は終了する。
【００５２】
Ｓ１２１〜Ｓ１２３は制約判定処理である。
Ｓ１２１は高位合成結果取得処理である。
Ｓ１２１において、制約判定部１４０は、ハードウェア仕様ファイル１９３に対する高位合成を要求する要求データをトランスミッタ９０４２を介して高位合成装置２００に送信する。高位合成装置２００は、要求データを受信し、ハードウェア仕様ファイル１９３に対する高位合成を行い、高位合成結果を含んだ応答データを送信する。そして、制約判定部１４０は、レシーバ９０４１を介して応答データを受信し、応答データから高位合成結果を取得する。
高位合成結果は、ハードウェア仕様ファイル１９３を高位合成することによって得られる結果であり、ＲＴＬファイルと回路規模情報とを含んでいる。
なお、制約判定部１４０は、高位合成を要求する際、回路規模を最小にするオプションを指定する。これにより、ＲＴＬファイルには、処理Ａ〜処理Ｆで共用される論理回路を有する構成が記述される。
【００５３】
Ｓ１２２は規模制約判定処理である。
Ｓ１２２において、制約判定部１４０は、回路規模情報が示す回路規模を制約情報１９１に含まれる規模制約の制約値と比較する。
そして、制約判定部１４０は、比較結果に基づいて、ハードウェア仕様ファイル１９３が規模制約を満たすか判定する。
ハードウェア仕様ファイル１９３が規模制約を満たす場合、処理はＳ１２３に進む。
ハードウェア仕様ファイル１９３が規模制約を満たさない場合、制約判定部１４０は、ＳｏＣアーキテクチャの自動生成に失敗した旨のエラーメッセージを表示インタフェース９０６を介して表示装置９０８に表示し、アーキテクチャ生成処理は終了する。
【００５４】
Ｓ１２３は時間制約判定処理である。
Ｓ１２３において、制約判定部１４０は、ＲＴＬファイルを用いてハードウェア２１２の動作をシミュレーションすることによって、ハードウェア処理の処理時間を測定する。
次に、制約判定部１４０は、測定した処理時間を制約情報１９１に含まれる時間制約の制約値と比較する。
そして、制約判定部１４０は、比較結果に基づいて、ハードウェア仕様ファイル１９３が規模制約を満たすか判定する。
ハードウェア仕様ファイル１９３が時間制約を満たす場合、アーキテクチャ生成方法の処理は終了する。このとき、メモリ９０３には、最終的に生成されたソフトウェア仕様ファイル１９２、ハードウェア仕様ファイル１９３およびアーキテクチャファイル１９４が記憶されている。
ハードウェア仕様ファイル１９３が時間制約を満たさない場合、処理はＳ１３０に進む。
【００５５】
図２５は、図７のハードウェア仕様ファイル１９３を評価して得られた回路規模と処理時間とを示している。
回路規模は、図４の制約情報１９１に含まれる規模制約の制約値より小さい。そのため、図７のハードウェア仕様ファイル１９３は、規模制約を満たしている。
一方、処理時間は、図４の制約情報１９１に含まれる時間制約の制約値より長い。そのため、図７のハードウェア仕様ファイル１９３は、時間制約を満たしていない。
つまり、図７のハードウェア仕様ファイル１９３は規模制約を満たすが時間制約を満たしていない。したがって、処理はＳ１３０に進む。
【００５６】
Ｓ１３０はアーキテクチャ変形処理および仕様変形処理である。
Ｓ１３０において、アーキテクチャ生成部１６０はアーキテクチャファイル１９４を変形し、仕様変形部１５０はハードウェア仕様ファイル１９３を変形する。
【００５７】
図２６に基づいて、アーキテクチャ変形処理および仕様変形処理（Ｓ１３０）について説明する。
Ｓ１３１において、仕様変形部１５０は、ＲＴＬファイルを用いてハードウェア２１２の動作をシミュレーションすることによって、ハードウェア処理毎の処理時間を測定する。
図２７は、処理Ａ〜処理Ｆのそれぞれの処理時間を示している。これらの処理時間は、図７のハードウェア仕様ファイル１９３を高位合成した得られたＲＴＬファイルを用いて実行されたシミュレーションの結果である。
【００５８】
Ｓ１３２において、仕様変形部１５０は、未選択のハードウェア処理のうちで処理時間が最も長いハードウェア処理を対象処理として選択する。対象処理は、他のハードウェア処理と並列に実行する対象となるハードウェア処理である。
具体的には、仕様変形部１５０は、各ハードウェア処理の処理時間を時間の長い順に予めソートしておく。そして、仕様変形部１５０は、処理時間の長い順にハードウェア処理を１つずつ選択する。
図２７に示すハードウェア処理毎の処理時間において、処理Ｄの処理時間が最も長いため、処理Ｄが最初の対象処理として選択される。
【００５９】
Ｓ１３３において、アーキテクチャ生成部１６０は、対象処理が他のハードウェア処理と並列に実行されるようにアーキテクチャファイル１９４を編集することによって、変形後のアーキテクチャファイル１９４を生成する。
図２８は、図２３のアーキテクチャファイル１９４を変形することによって生成される変形後のアーキテクチャファイル１９４を示している。
組み込みシステム２１０は、処理Ａ〜処理Ｃ用の共用メモリ２１３と、処理Ｅおよび処理Ｆ用の共用メモリ２１３とを有している。処理Ａ〜処理Ｃ用の共用メモリ２１３のビット数は、処理Ａ〜処理Ｃの各処理用の配列のビット幅のうちの最大のビット幅である（図２２参照）。処理Ａ〜処理Ｃ用の共用メモリ２１３の要素数は、処理Ａ〜処理Ｃの各処理用の配列の要素数のうちの最大の要素数である。処理Ｅおよび処理Ｆ用の共用メモリ２１３のビット数は、処理Ｅおよび処理Ｆの各処理用の配列のビット幅のうちの最大のビット幅である（図２２参照）。処理Ｅおよび処理Ｆ用の共用メモリ２１３の要素数は、処理Ｅおよび処理Ｆの各処理用の配列の要素数のうちの最大の要素数である。
ハードウェア２１２は、処理Ａ〜処理Ｃを実行する論理回路と、処理Ｄを実行する論理回路と、処理Ｅおよび処理Ｆを実行する論理回路を有している。さらに、ハードウェア２１２は、処理Ａ〜処理Ｃ用の共用メモリ２１３にアクセスするメモリインタフェースと、処理Ｅおよび処理Ｆ用の共用メモリ２１３にアクセスするメモリインタフェースとを有している。
【００６０】
Ｓ１３４において、仕様変形部１５０は、ハードウェア仕様ファイル１９３を以下のように編集することによって、変形後のハードウェア仕様ファイル１９３を生成する。変形後のハードウェア仕様ファイル１９３の内容は、変形後のアーキテクチャファイル１９４の内容と合っている。
仕様変形部１５０は、ハードウェア仕様ファイル１９３に含まれる複数の処理文を、対象文を含んだ処理ブロックと、対象文以外の処理文を含んだ処理ブロックとに変更する。対象文は、対象処理を示す処理文である。つまり、仕様変形部１５０は、複数の処理文を、Ｓ１３２で選択した対象処理を含んだ処理ブロックと、それ以外の処理を実行する処理ブロックとに分離する。
仕様変形部１５０は、共用配列を宣言する宣言文３０３を、外部配列を宣言する宣言文３０５に置き換える。具体的には、仕様変形部１５０は、宣言文３０５のフォーマットを編集して宣言文３０５を生成する。そして、仕様変形部１５０は、ハードウェア仕様ファイル１９３から宣言文３０３を削除し、宣言文３０３が記載されていた場所に宣言文３０５を記載する。
仕様変形部１５０は、対象文を、外部配列を使用する処理を示す処理文３０６に変更する。具体的には、仕様変形部１５０は、対象文に含まれる共用配列の記載を外部配列の記載に書き換える。
仕様変形部１５０は、対象文以外の処理文のうち、対象文と順番が連続する処理文を、外部配列を使用する処理文に変更する。具体的には、仕様変形部１５０は、対象文と順番が連続する処理文に含まれる共用配列の記載を外部配列の記載に書き換える。
仕様変形部１５０は、対象文以外の処理文を含んだ処理ブロックのうち、対象文と順番が連続する処理文以外の処理文である他の処理文が複数ある処理ブロックに、他の処理文で共用する処理ブロック別の共用配列を宣言する宣言文３０７を追加する。具体的には、仕様変形部１５０は、対象文以外の処理文を含んだ処理ブロックを選択し、選択した処理ブロック毎に他の処理文の数を数える。さらに、仕様変形部１５０は、選択した処理ブロックのうち、他の処理文の数が複数である処理ブロックを選択する。そして、仕様変形部１５０は、宣言文３０７のフォーマットを編集して宣言文３０７を生成し、宣言文３０７を選択した処理ブロックに記載する。
仕様変形部１５０は、他の処理文を、処理ブロック別の共用配列を使用する処理を示す処理文３０８に変更する。具体的には、仕様変形部１５０は、他の処理文に含まれる共用配列の記載を当該処理ブロック用の共用配列の記載に書き換える。
【００６１】
図７のハードウェア仕様ファイル１９３を編集することによって、図８〜図１１のハードウェア仕様ファイル１９３が生成される。
図８〜図１１のハードウェア仕様ファイル１９３は、外部配列の宣言文３０５を含んでいる。外部配列ｍｅｍＤｉｎのビット数および要素数は、対象処理Ｄの前の処理Ｃ用の配列ｍｅｍＣのビット数および要素数と同じである。外部配列ｍｅｍＤｏｕｔのビット数および要素数は、対象処理Ｄ用の配列ｍｅｍＤのビット数および要素数と同じである。
さらに、ハードウェア仕様ファイル１９３は、処理Ａと処理Ｂと処理Ｃとを順番に実行する処理ブロック（１）と、処理Ｄを実行する処理ブロック（２）と、処理Ｅと処理Ｆとを順番に実行する処理ブロック（３）とを含んでいる。
処理ブロック（１）は、処理ブロック（１）用の共用配列の宣言文３０７と、共用配列を使用する処理の処理文３０８と、外部配列を使用する処理の処理文３０６とを含んでいる。処理文３０８は、共用配列ＡＢＣにアクセスする処理を含んでいる。処理文３０６は、共用配列ＡＢＣに対してリードアクセスを行う処理と、外部配列ｍｅｍＤｉｎに対してライトアクセスを行う処理とを含んでいる。
処理ブロック（２）は、外部配列を使用する処理の処理文３０６を含んでいる。処理文３０６は、外部配列ｍｅｍＤｉｎに対してリードアクセスを行う処理と、外部配列ｍｅｍＤｏｕｔに対してライトアクセスを行う処理とを含んでいる。処理ブロック（２）は、共用配列にアクセスしない。
処理ブロック（３）は、処理ブロック（３）用の共用配列の宣言文３０７と、外部配列を使用する処理の処理文３０６と、共用配列を使用する処理の処理文３０８とを含んでいる。処理文３０６は、外部配列ｍｅｍＤｏｕｔに対してリードアクセスを行う処理と、共用配列ＥＦに対してライトアクセスを行う処理とを含んでいる。処理文３０８は、共用配列ＥＦにアクセスする処理を含んでいる。
Ｓ１３４の後、アーキテクチャ変形処理および仕様変形処理（Ｓ１３０）は終了する。
【００６２】
図２９は、処理Ａ〜処理Ｆを順番に実行した場合の処理時間と、処理Ａ〜処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行した場合の処理時間とを示している。
処理Ａ〜処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行する場合、処理Ａ〜処理Ｆを順番に実行する場合に比べて、回路規模は大きくなる。しかし、処理時間は短くなる。
【００６３】
図２０に戻り、Ｓ１４１から説明を続ける。
Ｓ１４１は高位合成結果取得処理である。
Ｓ１４１において、制約判定部１４０は、ハードウェア仕様ファイル１９３に対する高位合成を要求する要求データをトランスミッタ９０４２を介して高位合成装置２００に送信する。高位合成装置２００は、要求データを受信し、ハードウェア仕様ファイル１９３に対する高位合成を行い、高位合成結果を含んだ応答データを送信する。そして、制約判定部１４０は、レシーバ９０４１を介して応答データを受信し、応答データから高位合成結果を取得する。
高位合成結果は、ハードウェア仕様ファイル１９３を高位合成することによって得られる結果であり、ＲＴＬファイルと回路規模情報とを含んでいる。
なお、制約判定部１４０は、高位合成を要求する際、回路規模を最小にするオプションを指定する。これにより、ＲＴＬファイルには、処理Ａ〜処理Ｃで共用される論理回路と、処理Ｅおよび処理Ｆで共用される論理回路と、を含んだ構成が記述される。
【００６４】
Ｓ１４２は規模制約判定処理である。
Ｓ１４２において、制約判定部１４０は、回路規模情報が示す回路規模を制約情報１９１に含まれる規模制約の制約値と比較する。
そして、制約判定部１４０は、比較結果に基づいて、ハードウェア仕様ファイル１９３が規模制約を満たすか判定する。
ハードウェア仕様ファイル１９３が規模制約を満たす場合、処理はＳ１４３に進む。
ハードウェア仕様ファイル１９３が規模制約を満たさない場合、処理はＳ１４５に進む。
【００６５】
Ｓ１４３において、仕様変形部１５０は、変形後のソフトウェア仕様ファイル１９２をメモリ９０３のソフトウェア仕様ファイル１９２に上書きする。これにより、ソフトウェア仕様ファイル１９２が更新される。
さらに、仕様変形部１５０は、変形後のハードウェア仕様ファイル１９３をメモリ９０３のハードウェア仕様ファイル１９３に上書きする。これにより、ハードウェア仕様ファイル１９３が更新される。
【００６６】
Ｓ１４４は時間制約判定処理である。
Ｓ１４４において、制約判定部１４０は、ＲＴＬファイルを用いてハードウェア２１２の動作をシミュレーションすることによって、ハードウェア処理の処理時間を測定する。
次に、制約判定部１４０は、測定した処理時間を制約情報１９１に含まれる時間制約の制約値と比較する。
そして、制約判定部１４０は、比較結果に基づいて、ハードウェア仕様ファイル１９３が規模制約を満たすか判定する。
ハードウェア仕様ファイル１９３が時間制約を満たす場合、アーキテクチャ生成方法の処理は終了する。このとき、メモリ９０３には、最終的に生成されたソフトウェア仕様ファイル１９２、ハードウェア仕様ファイル１９３およびアーキテクチャファイル１９４が記憶されている。
ハードウェア仕様ファイル１９３が時間制約を満たさない場合、処理はＳ１４５に進む。
【００６７】
図３０は、図８〜図１１のハードウェア仕様ファイル１９３を評価して得られた回路規模と処理時間とを示している。
回路規模は、図４の制約情報１９１に含まれる規模制約の制約値より小さい。そのため、図８〜図１１のハードウェア仕様ファイル１９３は、規模制約を満たしている。
処理時間は、図４の制約情報１９１に含まれる時間制約の制約値より長い。そのため、図８〜図１１のハードウェア仕様ファイル１９３は、時間制約を満たしていない。
つまり、図８〜図１１のハードウェア仕様ファイル１９３は規模制約を満たすが時間制約を満たさない。したがって、処理はＳ１４５に進む。
【００６８】
Ｓ１４５において、仕様変形部１５０は、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能であるか判定する。
並列化の対象処理として選択されていないハードウェア処理を含んだ処理ブロックがある場合、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である。
アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である場合、処理はＳ１３０に戻る。
アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能でない場合、仕様変形部１５０は、ＳｏＣアーキテクチャの自動生成に失敗した旨のエラーメッセージを表示インタフェース９０６を介して表示装置９０８に表示し、アーキテクチャ生成処理は終了する。
【００６９】
図８〜図１１のハードウェア仕様ファイル１９３において、処理ブロック（１）は、並列化の対象処理として選択されていない処理Ａ〜処理Ｃを含んでいる。また、処理ブロック（３）は、並列化の対象処理として選択されていない処理Ｅおよび処理Ｆを含んでいる。
つまり、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である。したがって、処理はＳ１３０に戻る。
【００７０】
Ｓ１３０において、アーキテクチャ生成部１６０はアーキテクチャファイル１９４を変形し、仕様変形部１５０はハードウェア仕様ファイル１９３を変形する。
図２７に示すハードウェア処理毎の処理時間において、並列化の対象処理として選択済の処理Ｄを除いた残りの処理のうち、処理時間が最も長い処理は処理Ｂである。したがって、処理Ｂが次の対象処理として選択される。
【００７１】
図３１は、図２８のアーキテクチャファイル１９４を変形することによって生成される変形後のアーキテクチャファイル１９４を示している。
組み込みシステム２１０は、処理Ｅおよび処理Ｆ用の共用メモリ２１３を有している。処理Ｅおよび処理Ｆ用の共用メモリ２１３のビット数は、処理Ｅおよび処理Ｆの各処理用の配列のビット幅のうちの最大のビット幅である（図２２参照）。処理Ｅおよび処理Ｆ用の共用メモリ２１３の要素数は、処理Ｅおよび処理Ｆの各処理用の配列の要素数のうちの最大の要素数である。
ハードウェア２１２は、処理Ａを実行する論理回路と、処理Ｂを実行する論理回路と、処理Ｃを実行する論理回路と、処理Ｄを実行する論理回路と、処理Ｅおよび処理Ｆを実行する論理回路とを有している。さらに、ハードウェア２１２は、処理Ｅおよび処理Ｆ用の共用メモリ２１３にアクセスするメモリインタフェースを有している。
【００７２】
図８〜図１１のハードウェア仕様ファイル１９３を編集することによって、図１２〜図１５のハードウェア仕様ファイル１９３が生成される。
図１２〜図１５のハードウェア仕様ファイル１９３は、外部配列の宣言文３０５を含んでいる。外部配列ｍｅｍＡｏｕｔのビット数および要素数は、対象処理Ｂの前の処理Ａ用の配列ｍｅｍＡのビット数および要素数と同じである。外部配列ｍｅｍＢｏｕｔのビット数および要素数は、対象処理Ｂ用の配列ｍｅｍＢのビット数および要素数と同じである。外部配列ｍｅｍＤｉｎおよび外部配列ｍｅｍＤｏｕｔは、図８〜図１１のハードウェア仕様ファイル１９３で宣言されている外部配列と同じである。
さらに、ハードウェア仕様ファイル１９３は、処理Ａを実行する処理ブロック（１−１）と、処理Ｂを実行する処理ブロック（１−２）と、処理Ｃを実行する処理ブロック（１−３）と、処理Ｄを実行する処理ブロック（２）と、処理Ｅと処理Ｆとを順番に実行する処理ブロック（３）とを含んでいる。
処理ブロック（１−１）は、外部配列を使用する処理Ａの処理文３０６を含んでいる。処理文３０６は、外部配列ｍｅｍＡｏｕｔに対してライトアクセスを行う処理を含んでいる。
処理ブロック（１−２）は、外部配列を使用する処理Ｂの処理文３０６を含んでいる。処理文３０６は、外部配列ｍｅｍＡｏｕｔに対してリードアクセスを行う処理と、外部配列ｍｅｍＢｏｕｔに対してライトアクセスを行う処理とを含んでいる。
処理ブロック（１−３）は、外部配列を使用する処理Ｃの処理文３０６を含んでいる。処理文３０６は、外部配列ｍｅｍＢｏｕｔに対してリードアクセスを行う処理と、外部配列ｍｅｍＤｉｎに対してライトアクセスを行う処理とを含んでいる。
処理ブロック（１−１）〜処理ブロック（１−３）は、共有配列ＥＦにアクセスしない。
処理ブロック（２）および処理ブロック（３）は、図１０および図１１で説明した通りである。
【００７３】
図３２は、処理Ａと処理Ｂと処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行した場合の処理時間を示している。この場合、処理Ａ〜処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行する場合（図２９参照）に比べて、回路規模は大きくなる。しかし、処理時間は短くなる。
【００７４】
図３３は、図１２〜図１５のハードウェア仕様ファイル１９３をＳ１４１〜Ｓ１４４で評価した場合に得られる回路規模と処理時間とを示している。
回路規模は、図４の制約情報１９１に含まれる規模制約の制約値より大きい。そのため、図１２〜図１５のハードウェア仕様ファイル１９３は、規模制約を満たしていない。
処理時間は、図４の制約情報１９１に含まれる時間制約の制約値より短い。そのため、図１２〜図１５のハードウェア仕様ファイル１９３は、時間制約を満たしている。
つまり、図１２〜図１５のハードウェア仕様ファイル１９３は時間制約を満たすが規模制約を満たさない。したがって、処理はＳ１４２の後、Ｓ１４５に進む。
この場合、メモリ９０３のアーキテクチャファイル１９４は更新されないため、アーキテクチャファイル１９４の内容は図２８のままである。また、メモリ９０３のハードウェア仕様ファイル１９３は更新されないため、ハードウェア仕様ファイル１９３の内容は図８〜図１１のままである。
【００７５】
Ｓ１４５において、仕様変形部１５０は、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能であるか判定する。
並列化の対象処理として選択されていないハードウェア処理を含んだ処理ブロックがある場合、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である。
アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である場合、処理はＳ１３０に戻る。
アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能でない場合、仕様変形部１５０は、ＳｏＣアーキテクチャの自動生成に失敗した旨のエラーメッセージを表示インタフェース９０６を介して表示装置９０８に表示し、アーキテクチャ生成処理は終了する。
【００７６】
図８〜図１１のハードウェア仕様ファイル１９３において、処理ブロック（１）は、並列化の対象処理として選択されていない処理Ａおよび処理Ｃを含んでいる。また、処理ブロック（３）は、並列化の対象処理として選択されていない処理Ｅおよび処理Ｆを含んでいる。
つまり、アーキテクチャファイル１９４およびハードウェア仕様ファイル１９３をさらに変形することが可能である。したがって、処理はＳ１３０に戻る。
【００７７】
Ｓ１３０において、アーキテクチャ生成部１６０はアーキテクチャファイル１９４を変形し、仕様変形部１５０はハードウェア仕様ファイル１９３を変形する。
図２７に示すハードウェア処理毎の処理時間において、並列化の対象処理として選択されていない処理Ａ、処理Ｃ、処理Ｅおよび処理Ｆの処理のうち、処理時間が最も長い処理は処理Ｃである。したがって、処理Ｃが次の対象処理として選択される。
【００７８】
図３４は、図２８のアーキテクチャファイル１９４を変形することによって生成される変形後のアーキテクチャファイル１９４を示している。
組み込みシステム２１０は、処理Ａおよび処理Ｂ用の共用メモリ２１３と、処理Ｅおよび処理Ｆ用の共用メモリ２１３とを有している。処理Ａおよび処理Ｂ用の共用メモリ２１３のビット数は、処理Ａおよび処理Ｂの各処理用の配列のビット幅のうちの最大のビット幅である（図２２参照）。処理Ａおよび処理Ｂ用の共用メモリ２１３の要素数は、処理Ａおよび処理Ｂの各処理用の配列の要素数のうちの最大の要素数である。処理Ｅおよび処理Ｆ用の共用メモリ２１３のビット数は、処理Ｅおよび処理Ｆの各処理用の配列のビット幅のうちの最大のビット幅である（図２２参照）。処理Ｅおよび処理Ｆ用の共用メモリ２１３の要素数は、処理Ｅおよび処理Ｆの各処理用の配列の要素数のうちの最大の要素数である。
ハードウェア２１２は、処理Ａおよび処理Ｂを実行する論理回路と、処理Ｃを実行する論理回路と、処理Ｄを実行する論理回路と、処理Ｅおよび処理Ｆを実行する論理回路とを有している。さらに、ハードウェア２１２は、処理Ａおよび処理Ｂ用の共用メモリ２１３にアクセスするメモリインタフェースと、処理Ｅおよび処理Ｆ用の共用メモリ２１３にアクセスするメモリインタフェースとを有している。
【００７９】
図８〜図１１のハードウェア仕様ファイル１９３を編集することによって、図１６〜図１８のハードウェア仕様ファイル１９３が生成される。
図１６〜図１８のハードウェア仕様ファイル１９３は、外部配列の宣言文３０５を含んでいる。外部配列ｍｅｍＢｏｕｔ、外部配列ｍｅｍＤｉｎおよび外部配列ｍｅｍＤｏｕｔは、図１６〜図１８のハードウェア仕様ファイル１９３で宣言されている外部配列と同じである。
さらに、ハードウェア仕様ファイル１９３は、処理Ａと処理Ｂとを順番に実行する処理ブロック（１−１）と、処理Ｃを実行する処理ブロック（１−２）と、処理Ｄを実行する処理ブロック（２）と、処理Ｅと処理Ｆとを順番に実行する処理ブロック（３）とを含んでいる。
処理ブロック（１−１）は、処理ブロック（１−１）用の共用配列を宣言する宣言文３０７と、共用配列を使用する処理Ａの処理文３０８と、外部配列を使用する処理Ｂの処理文３０６とを含んでいる。処理文３０８は、共用配列ＡＢに対してライトアクセスを行う処理を含んでいる。処理文３０６は、共用配列ＡＢに対してリードアクセスを行う処理と、外部配列ｍｅｍＢｏｕｔに対してライトアクセスを行う処理とを含んでいる。
処理ブロック（１−２）は、外部配列を使用する処理Ｃの処理文３０６を含んでいる。処理文３０６は、外部配列ｍｅｍＢｏｕｔに対してリードアクセスを行う処理と、外部配列ｍｅｍＤｉｎに対してライトアクセスを行う処理とを含んでいる。処理ブロック（１−２）は共用メモリにアクセスしない。
処理ブロック（２）および処理ブロック（３）は、図１０および図１１で説明した通りである。
【００８０】
図３５は、処理Ａ〜処理Ｂと処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行した場合の処理時間を示している。この場合、処理Ａ〜処理Ｃと処理Ｄと処理Ｅ〜処理Ｆとを並列に実行する場合（図２９参照）に比べて、回路規模は大きくなる。しかし、処理時間は短くなる。
【００８１】
図３６は、図１６〜図１８のハードウェア仕様ファイル１９３をＳ１４１〜Ｓ１４４で評価した場合に得られる回路規模と処理時間とを示している。
回路規模は、図４の制約情報１９１に含まれる規模制約の制約値より小さい。そのため、図１６〜図１８のハードウェア仕様ファイル１９３は、規模制約を満たしている。
処理時間は、図４の制約情報１９１に含まれる時間制約の制約値より短い。そのため、図１６〜図１８のハードウェア仕様ファイル１９３は、時間制約を満たしている。
つまり、図１６〜図１８のハードウェア仕様ファイル１９３は時間制約と規模制約との両方を満たす。
したがって、Ｓ１４１〜Ｓ１４４の後、アーキテクチャ生成方法の処理は終了する。このとき、メモリ９０３には、最終的に生成されたソフトウェア仕様ファイル１９２、ハードウェア仕様ファイル１９３およびアーキテクチャファイル１９４が記憶されている。
最終的に生成されたソフトウェア仕様ファイル１９２は、図２４のソフトウェア仕様ファイル１９２である。
最終的に生成されたハードウェア仕様ファイル１９３は、図１６〜図１８のハードウェア仕様ファイル１９３である。
最終的に生成されたアーキテクチャファイル１９４は、図３４のアーキテクチャファイル１９４である。
【００８２】
＊＊＊実施の形態の効果の説明＊＊＊
アーキテクチャ生成装置１００は、システム仕様ファイル３００を用いて、規模制約および時間制約を満たすＳｏＣアーキテクチャを生成することができる。そのため、設計者は、システム仕様ファイル３００を基に規模制約および時間制約を満たすＳｏＣアーキテクチャを検討しなくても、規模制約および時間制約を満たすＳｏＣアーキテクチャを得ることができる。
【００８３】
＊＊＊他の構成＊＊＊
システム仕様ファイル３００は、Ｃ＋＋言語またはＳｙｓｔｅｍＣ言語など、Ｃ言語以外のプログラミング言語で記述されてもよい。
Ｓ１０２（図１９参照）において、ハードウェア仕様ファイル１９３を分割するために、特許文献１に開示された方法を適用することができる。但し、特許文献１に開示された方法以外の方法によって、ハードウェア仕様ファイル１９３が分割されてもよい。
Ｓ１１１（図２１参照）において宣言文３０１が特定される前に、ハードウェア仕様ファイル１９３から不要な配列の記述を削除してもよい。これにより、ハードウェア２１２の回路規模が小さくなることが期待できる。不要な配列の記述を削除するために、特許文献３に開示されたメモリ削除機能を適用することができる。
Ｓ１１４（図２１参照）において、インタフェース（Ｈ）の記述を追加するために、特許文献２に開示された方法を適用することができる。但し、特許文献２に開示された方法以外の方法によって、インタフェース（Ｈ）の記述が追加されてもよい。
Ｓ１１５（図２１参照）において、インタフェース（Ｓ）の記述を追加するために、特許文献２に開示された方法を適用することができる。但し、特許文献２に開示された方法以外の方法によって、インタフェース（Ｓ）の記述が追加されてもよい。
図６において、処理Ｃと処理Ｄとの間に、ｆｕｎｃ１（）を実行する第１の処理およびｆｕｎｃ２（）を実行する第２の処理がある。第１の処理および第２の処理は、処理Ｃを含んだ処理ブロックに含めてもよいし、処理Ｄを含んだ処理ブロックに含めてもよい。また、第１の処理は処理Ｃを含んだ処理ブロックに含めて、第２の処理は処理Ｄを含んだ処理ブロックに含めてもよい。但し、処理ブロック間のピン数が最も小さくなることが望ましい。処理ブロック間のピン数は、処理ブロック間の配線の数である。
複数の処理ブロックが並列に動作するように、ダブルバッファまたはＦＩＦＯが組み込みシステム２１０のＳｏＣに実装されることが望ましい。ＦＩＦＯは、Ｆｉｒｓｔ  Ｉｎ，  Ｆｉｒｓｔ  Ｏｕｔの略称である。
【００８４】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。
フローチャート等を用いて説明した処理手順は、アーキテクチャ生成装置、アーキテクチャ生成方法およびアーキテクチャ生成プログラムの処理手順の一例である。
【符号の説明】
【００８５】
１００  アーキテクチャ生成装置、１１０  仕様受付部、１２０  仕様分割部、１３０  仕様編集部、１３１  宣言文特定部、１３２  仕様生成部、１４０  制約判定部、１５０  仕様変形部、１６０  アーキテクチャ生成部、１９１  制約情報、１９２  ソフトウェア仕様ファイル、１９３  ハードウェア仕様ファイル、１９４  アーキテクチャファイル、２００  高位合成装置、２１０  組み込みシステム、２１１  プロセッサ、２１２  ハードウェア、２１３  共用メモリ、２１４  バス、２２０  配列情報、３００  システム仕様ファイル、３０１  宣言文、３０２  処理文、３０３  宣言文、３０４  処理文、３０５  宣言文、３０６  処理文、３０７  宣言文、９０１  プロセッサ、９０２  補助記憶装置、９０３  メモリ、９０４  通信装置、９０４１  レシーバ、９０４２  トランスミッタ、９０５  入力インタフェース、９０６  表示インタフェース、９０７  入力装置、９０８  表示装置、９１０  信号線、９１１  ケーブル、９１２  ケーブル。
【図１】
2017046941.tif 000003
【図２】
2017046941.tif 000004
【図３】
2017046941.tif 000005
【図４】
2017046941.tif 000006
【図５】
2017046941.tif 000007
【図６】
2017046941.tif 000008
【図７】
2017046941.tif 000009
【図８】
2017046941.tif 000010
【図９】
2017046941.tif 000011
【図１０】
2017046941.tif 000012
【図１１】
2017046941.tif 000013
【図１２】
2017046941.tif 000014
【図１３】
2017046941.tif 000015
【図１４】
2017046941.tif 000016
【図１５】
2017046941.tif 000017
【図１６】
2017046941.tif 000018
【図１７】
2017046941.tif 000019
【図１８】
2017046941.tif 000020
【図１９】
2017046941.tif 000021
【図２０】
2017046941.tif 000022
【図２１】
2017046941.tif 000023
【図２２】
2017046941.tif 000024
【図２３】
2017046941.tif 000025
【図２４】
2017046941.tif 000026
【図２５】
2017046941.tif 000027
【図２６】
2017046941.tif 000028
【図２７】
2017046941.tif 000029
【図２８】
2017046941.tif 000030
【図２９】
2017046941.tif 000031
【図３０】
2017046941.tif 000032
【図３１】
2017046941.tif 000033
【図３２】
2017046941.tif 000034
【図３３】
2017046941.tif 000035
【図３４】
2017046941.tif 000036
【図３５】
2017046941.tif 000037
【図３６】
2017046941.tif 000038
【手続補正書】
【提出日】平成29年4月7日(2017.4.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
ハードウェアで実行する処理がプログラミング言語で記述されたファイルであって、異なる配列を使用する複数の処理を示す複数の処理文と、前記複数の処理で使用される複数の配列を宣言する複数の宣言文と、を含んだファイルであるハードウェア仕様ファイルから、前記複数の宣言文を特定する宣言文特定部と、
特定された複数の宣言文を、前記複数の処理で共用する共用配列を宣言する宣言文に置き換えて、前記複数の処理文それぞれを、前記共用配列を使用する処理を示す処理文に変更することによって、編集後のハードウェア仕様ファイルを生成する仕様生成部と、
前記編集後のハードウェア仕様ファイルが、回路規模を制限する規模制約と、処理時間を制限する時間制約と、を満たすか判定する制約判定部と、
前記編集後のハードウェア仕様ファイルが前記規模制約を満たすが前記時間制約を満たさないと判定された場合、前記複数の処理文のいずれかの処理文を対象文として選択し、前記複数の処理文を、前記対象文を含んだ処理ブロックと、前記対象文以外の処理文を含んだ処理ブロックと、に変更することによって、変形後のハードウェア仕様ファイルを生成する仕様変形部と
を備えるアーキテクチャ生成装置。
【請求項２】
前記制約判定部は、前記変形後のハードウェア仕様ファイルが前記規模制約と前記時間制約とを満たすか判定し、
前記仕様変形部は、前記変形後のハードウェア仕様ファイルが前記規模制約を満たすが前記時間制約を満たさないと判定された場合、前記対象文以外の処理文を含んだ処理ブロックである対象処理ブロックからいずれかの処理文を追加の対象文として選択し、前記対象処理ブロックを、前記追加の対象文を含んだ処理ブロックと、前記追加の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、再変形後のハードウェア仕様ファイルを生成する
請求項１に記載のアーキテクチャ生成装置。
【請求項３】
前記制約判定部は、前記再変形後のハードウェア仕様ファイルが前記規模制約を満たすか判定し、
前記仕様変形部は、前記再変形後のハードウェア仕様ファイルが前記規模制約を満たさないと判定された場合、前記対象処理ブロックから前記追加の対象文とは異なる処理文を他の対象文として選択し、前記対象処理ブロックを、前記他の対象文を含んだ処理ブロックと、前記他の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、再変形後のハードウェア仕様ファイルを生成し直す
請求項２に記載のアーキテクチャ生成装置。
【請求項４】
前記制約判定部は、変形後のハードウェア仕様ファイルが前記規模制約を満たすか判定し、
前記仕様変形部は、前記変形後のハードウェア仕様ファイルが前記規模制約を満たさないと判定された場合、前記複数の処理文から前記対象文とは異なる処理文を他の対象文として選択し、前記複数の処理文を、前記他の対象文を含んだ処理ブロックと、前記他の対象文以外の処理文を含んだ処理ブロックと、に変更することによって、変形後のハードウェア仕様ファイルを生成し直す
請求項１に記載のアーキテクチャ生成装置。
【請求項５】
前記制約判定部は、前記編集後のハードウェア仕様ファイルを高位合成して得られる高位合成結果を取得し、取得した高位合成結果を用いて、前記編集後のハードウェア仕様ファイルが前記規模制約と前記時間制約とを満たすか判定する
請求項１に記載のアーキテクチャ生成装置。
【請求項６】
前記複数の処理は、順番に実行される処理であり、
前記仕様変形部は、前記共用配列を宣言する宣言文を、前記対象文を含んだ処理ブロックと前記対象文以外の処理文を含んだ処理ブロックとが使用する外部配列を宣言する宣言文に置き換えて、前記対象文を、前記外部配列を使用する処理を示す処理文に変更し、前記対象文以外の処理文のうち、前記対象文と順番が連続する処理文を、前記外部配列を使用する処理文に変更する
請求項１に記載のアーキテクチャ生成装置。
【請求項７】
前記仕様変形部は、前記対象文以外の処理文を含んだ処理ブロックのうち、前記対象文と順番が連続する処理文以外の処理文である他の処理文が複数ある処理ブロックに、前記他の処理文で共用する処理ブロック別の共用配列を宣言する宣言文を追加し、前記他の処理文を、前記処理ブロック別の共用配列を使用する処理を示す処理文に変更する
請求項６に記載のアーキテクチャ生成装置。
【請求項８】
前記ハードウェア仕様ファイルに含まれる処理ブロックに対応する論理回路を有するハードウェアの情報と、前記ハードウェア仕様ファイルで宣言された共用配列に対応する共用メモリの情報と、を含んだアーキテクチャファイルを生成するアーキテクチャ生成部
を備える請求項１に記載のアーキテクチャ生成装置。
【請求項９】
ハードウェアで実行する処理がプログラミング言語で記述されたファイルであって、異なる配列を使用する複数の処理を示す複数の処理文と、前記複数の処理で使用される複数の配列を宣言する複数の宣言文と、を含んだファイルであるハードウェア仕様ファイルから、前記複数の宣言文を特定する宣言文特定処理と、
特定された複数の宣言文を、前記複数の処理で共用する共用配列を宣言する宣言文に置き換えて、前記複数の処理文それぞれを、前記共用配列を使用する処理を示す処理文に変更することによって、編集後のハードウェア仕様ファイルを生成する仕様生成処理と、
前記編集後のハードウェア仕様ファイルが、回路規模を制限する規模制約と、処理時間を制限する時間制約と、を満たすか判定する制約判定処理と、
前記編集後のハードウェア仕様ファイルが前記規模制約を満たすが前記時間制約を満たさないと判定された場合、前記複数の処理文のいずれかの処理文を対象文として選択し、前記複数の処理文を、前記対象文を含んだ処理ブロックと、前記対象文以外の処理文を含んだ処理ブロックと、に変更することによって、変形後のハードウェア仕様ファイルを生成する仕様変形処理と
をコンピュータに実行させるためのアーキテクチャ生成プログラム。
【国際調査報告】
2017046941.tif 000039
2017046941.tif 000040
2017046941.tif 000041