(57)【要約】  受付部（１１１）は、アーキテクチャ情報と処理プログラムと制約条件とを受け付ける。目的関数生成部（１１３）は、前記アーキテクチャ情報が示す各構成要素の評価項目について目的関数を生成する。最適化部（１１４）は、前記目的関数の最適化問題を１回以上解くことによって、前記１つ以上の構成要素と前記１つ以上のサブルーチンとについての１つ以上の分割解を得る。余裕度算出部（１１５）は、前記１つ以上の分割解と前記制約条件とに基づいて、各構成要素の評価項目について各構成要素の余裕度を算出する。変更判定部（１１６）は、各構成要素の余裕度に基づいて各構成要素の変更の要否を判定する。変更部（１１７）は、変更が必要な各構成要素について前記アーキテクチャ情報を変更する。
2019171464.tif 000002
【特許請求の範囲】
【請求項１】
アーキテクチャの１つ以上の構成要素と各構成要素の評価項目とを示すアーキテクチャ情報と、１つ以上のサブルーチンを含む処理プログラムと、各構成要素の評価項目について各構成要素の制約値を示す制約条件と、を受け付ける受付部と、
前記アーキテクチャ情報が示す各構成要素の評価項目について目的関数を生成する目的関数生成部と、
前記目的関数の最適化問題を１回以上解くことによって、前記１つ以上の構成要素と前記１つ以上のサブルーチンとについての１つ以上の分割解を得る最適化部と、
前記１つ以上の分割解と前記制約条件とに基づいて、各構成要素の評価項目について各構成要素の余裕度を算出する余裕度算出部と、
各構成要素の余裕度に基づいて各構成要素の変更の要否を判定する変更判定部と、
変更が必要な各構成要素について前記アーキテクチャ情報を変更する変更部と
を備える設計支援装置。
【請求項２】
前記目的関数生成部は、各構成要素の評価項目の線形結合を前記目的関数として生成する
請求項１に記載の設計支援装置。
【請求項３】
前記余裕度算出部は、各構成要素の余裕度として最大余裕度と最小余裕度とを算出し、
前記変更判定部は、対象要素の最大余裕度と前記対象要素の最小余裕度とのそれぞれを余裕度閾値と比較し、比較結果に基づいて前記対象要素の変更の要否を判定する
請求項１または請求項２に記載の設計支援装置。
【請求項４】
前記変更判定部は、前記対象要素の最大余裕度と前記対象要素の最小余裕度とのそれぞれが前記余裕度閾値より大きく、且つ、前記対象要素よりもスペックが低いアーキテクチャ要素である低スペック要素がある場合、前記対象要素を前記低スペック要素に変更すると判定する
請求項３に記載の設計支援装置。
【請求項５】
前記変更判定部は、前記対象要素の最大余裕度と前記対象要素の最小余裕度とのそれぞれが前記余裕度閾値より大きく、且つ、前記低スペック要素がなく、且つ、前記対象要素と種類が同じ構成要素である同種要素があり、且つ、前記同種要素よりもスペックが高いアーキテクチャ要素である高スペック要素がある場合、前記同種要素を前記高スペック要素に変更して前記対象要素を削除すると判定する
請求項４に記載の設計支援装置。
【請求項６】
前記変更判定部は、前記対象要素の最大余裕度が前記余裕度閾値より大きく、且つ、前記対象要素の最小余裕度が前記余裕度閾値より小さく、且つ、前記対象要素と種類が同じ構成要素である同種要素があり、且つ、前記対象要素よりもスペックが高いアーキテクチャ要素である高スペック要素がある場合、前記対象要素を前記高スペック要素に変更する
と判定する
請求項４に記載の設計支援装置。
【請求項７】
前記変更判定部は、前記対象要素の最大余裕度が前記余裕度閾値より大きく、且つ、前記対象要素の最小余裕度が前記余裕度閾値より小さく、且つ、前記同種要素がなく、且つ、スペックを下げる変更がなされる構成要素である低変更要素があり、且つ、前記対象要素よりもスペックが高いアーキテクチャ要素である低スペック要素がある場合、前記対象要素を前記低スペック要素に変更すると判定する
請求項６に記載の設計支援装置。
【請求項８】
前記変更部は、各構成要素の変更の要否についての判定結果に基づいて、前記目的関数を変更する
請求項１から請求項７のいずれか１項に記載の設計支援装置。
【請求項９】
前記変更部は、変更されない構成要素についての評価項目を前記目的関数から削除する
請求項８に記載の設計支援装置。
【請求項１０】
いずれの構成要素の変更も必要でないと判定された場合に前記アーキテクチャ情報と１つ以上の分割解とを出力する出力部を備える
請求項１から請求項９のいずれか１項に記載の設計支援装置。
【請求項１１】
アーキテクチャの１つ以上の構成要素と各構成要素の評価項目とを示すアーキテクチャ情報と、１つ以上のサブルーチンを含む処理プログラムと、各構成要素の評価項目について各構成要素の制約値を示す制約条件と、を受け付ける受付処理と、
前記アーキテクチャ情報が示す各構成要素の評価項目について目的関数を生成する目的関数生成処理と、
前記目的関数の最適化問題を１回以上解くことによって、前記１つ以上の構成要素と前記１つ以上のサブルーチンとについての１つ以上の分割解を得る最適化処理と、
前記１つ以上の分割解と前記制約条件とに基づいて、各構成要素の評価項目について各構成要素の余裕度を算出する余裕度算出処理と、
各構成要素の余裕度に基づいて各構成要素の変更の要否を判定する変更判定処理と、
変更が必要な各構成要素について前記アーキテクチャ情報を変更する変更処理と
をコンピュータに実行させるための設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アーキテクチャの設計を支援するための技術に関するものである。
【背景技術】
【０００２】
組み込みシステム設計において次のような作業が行われる。
まず、システム要求に従って要求分析が行われる。次に、システム全体の動作仕様が機能ブロックに分割される。次に、機能ブロック毎に動作仕様の設計が行われる。次に、機能ブロックを実装するための部品が選定される。具体的な部品は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）およびＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）である。部品の選定の後、機能ブロックをＣＰＵに実装するためのソフトウェアと機能ブロックをＬＳＩに実装するためのハードウェアとに機能ブロックが分割される。そして、ソフトウェアおよびハードウェアの実装が行われる。【０００３】
組み込みシステム設計において、最終的な実装結果が性能、コストおよび面積などの制約を満たす必要がある。そのため、部品の選定および機能ブロックの分割が重要であり、部品に関する知識、ソフトウェア／ハードウェアの実装に関する知識および作業経験が必要である。【０００４】
特許文献１は、機能仕様をソフトウェアとハードウェアとに分割するための方法として次のような方法を開示している。
まず、機能分割を評価するためのパラメータが入力される。次に、入力パラメータに基づいて分割指標が算出される。そして、算出された分割指標に基づいて、現在の分割が変更される。
さらに、再分割の結果が性能シミュレーションによって評価され、性能および回路規模などの制約条件を満足するまで処理が繰り返される。つまり、制約条件を満たす分割解が探索される。【０００５】
非特許文献１は、機能仕様の分割を組み合わせ最適化問題と見なして分割階を得る方法を開示している。
この方法では、機能仕様を分割して得られる処理群（サブルーチン）について、ソフトウェアとハードウェアとのいずれで処理を行うかが組み合わせ最適化により決定される。なお、非特許文献１には、ソフトウェアとハードウェアとの２つの要素で構成されるシステムアーキテクチャの処理分割だけでなく、３つ以上の要素で構成されるシステムアーキテクチャの処理分割についても示唆がある。
処理が一つも割り当てられない構成要素が許容されることにより、組み込みシステムアーキテクチャの探索を行うことが可能であると考えられる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−２６９１６３号公報
【非特許文献】
【０００７】
【非特許文献１】Ｒａｌｆ  Ｎｉｅｗｍａｎｎ，  Ｐｅｔｅｒ  Ｍａｒｗｅｄｅｌ，  “Ａｎ  Ａｌｇｏｒｉｔｈｍ  ｆｏｒ  Ｈａｒｄｗａｒｅ／Ｓｏｆｔｗａｒｅ  Ｐａｒｔｉｔｉｏｎｉｎｇ  Ｕｓｉｎｇ  Ｍｉｘｅｄ  Ｉｎｔｅｇｅｒ  Ｌｉｎｅａｒ  Ｐｒｏｇｒａｍｍｉｎｇ”．  Ｄｅｓｉｇｎ  Ａｕｔｏｍａｔｉｏｎ  ｆｏｒ  Ｅｍｂｅｄｄｅｄ  Ｓｙｓｔｅｍｓ  Ｍａｒｃｈ  １９９７，  Ｖｏｌｕｍｅ  ２，  Ｉｓｓｕｅ  ２，  ｐｐ  １６５−１９３
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１に開示された手法と非特許文献１に開示された手法とのいずれにおいても、実現可能な全ての組み込みシステムアーキテクチャ候補とそのシステムアーキテチャ上で実現可能な分割候補との中から、最適なシステムアーキテクチャと分割解とを探索する必要がある。そのため、分割要素数と組み込みシステムアーキテクチャの構成要素数とが増えると、指数関数的に探索数が増加する。その結果、探索に時間がかかってしまう。【０００９】
本発明は、アーキテクチャ設計における探索時間を削減できるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
本発明の設計支援装置は、
アーキテクチャの１つ以上の構成要素と各構成要素の評価項目とを示すアーキテクチャ情報と、１つ以上のサブルーチンを含む処理プログラムと、各構成要素の評価項目について各構成要素の制約値を示す制約条件と、を受け付ける受付部と、
前記アーキテクチャ情報が示す各構成要素の評価項目について目的関数を生成する目的関数生成部と、
前記目的関数の最適化問題を１回以上解くことによって、前記１つ以上の構成要素と前記１つ以上のサブルーチンとについての１つ以上の分割解を得る最適化部と、
前記１つ以上の分割解と前記制約条件とに基づいて、各構成要素の評価項目について各構成要素の余裕度を算出する余裕度算出部と、
各構成要素の余裕度に基づいて各構成要素の変更の要否を判定する変更判定部と、
変更が必要な各構成要素について前記アーキテクチャ情報を変更する変更部とを備える。
【発明の効果】
【００１１】
本発明によれば、各構成要素の余裕度に基づいて各構成要素の変更の要否が判定される。そのため、１つ以上の構成要素の全ての組み合わせについて分割解の探索を行わなくても、各構成要素を適切に選択することが可能となる。これにより、アーキテクチャ設計における探索時間を削減することが可能となる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１における設計支援装置１００の構成図。
【図２】実施の形態１における設計支援方法のフローチャート。
【図３】実施の形態１におけるアーキテクチャ情報１２１を示す図。
【図４】実施の形態１における制約条件１２２を示す図。
【図５】実施の形態１におけるコスト算出処理（Ｓ１１０）のフローチャート。
【図６】実施の形態１における目的関数生成処理（Ｓ１２０）のフローチャート。
【図７】実施の形態１における最適化処理（Ｓ１３０）のフローチャート。
【図８】実施の形態１における余裕度算出処理（Ｓ１４０）のフローチャート。
【図９】実施の形態１における余裕度情報１２３を示す図。
【図１０】実施の形態１における変更判定処理（Ｓ１５０）のフローチャート。
【図１１】実施の形態１における変更判定処理（Ｓ１５０）のフローチャート。
【図１２】実施の形態１における判定結果情報１２４Ａを示す図。
【図１３】実施の形態１における判定結果情報１２４Ｂを示す図。
【図１４】実施の形態１における判定結果情報１２４Ｃを示す図。
【図１５】実施の形態１における設計支援装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１３】
実施の形態および図面において、同じ要素および対応する要素には同じ符号を付している。同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
【００１４】
実施の形態１．
設計支援装置１００について、図１から図１５に基づいて説明する。
【００１５】
＊＊＊構成の説明＊＊＊
図１に基づいて、設計支援装置１００の構成を説明する。
設計支援装置１００は、プロセッサ１０１とメモリ１０２と補助記憶装置１０３と入出力インタフェース１０４といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
【００１６】
プロセッサ１０１は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、他のハードウェアを制御する。例えば、プロセッサ１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、またはＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
メモリ１０２は揮発性の記憶装置である。メモリ１０２は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ１０２はＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。メモリ１０２に記憶されたデータは必要に応じて補助記憶装置１０３に保存される。
補助記憶装置１０３は不揮発性の記憶装置である。例えば、補助記憶装置１０３は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）、またはフラッシュメモリである。補助記憶装置１０３に記憶されたデータは必要に応じてメモリ１０２にロードされる。
入出力インタフェース１０４は入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース１０４はＵＳＢ端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。ＵＳＢはＵｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓの略称である。
【００１７】
設計支援装置１００は、受付部１１１とコスト算出部１１２と目的関数生成部１１３と最適化部１１４と余裕度算出部１１５と変更判定部１１６と変更部１１７と出力部１１８といった要素を備える。これらの要素はソフトウェアで実現される。
【００１８】
補助記憶装置１０３には、受付部１１１とコスト算出部１１２と目的関数生成部１１３と最適化部１１４と余裕度算出部１１５と変更判定部１１６と変更部１１７と出力部１１８としてコンピュータを機能させるための設計支援プログラムが記憶されている。設計支援プログラムは、メモリ１０２にロードされて、プロセッサ１０１によって実行される。
さらに、補助記憶装置１０３にはＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）が記憶されている。ＯＳの少なくとも一部は、メモリ１０２にロードされて、プロセッサ１０１によって実行される。
つまり、プロセッサ１０１は、ＯＳを実行しながら、設計支援プログラムを実行する。
設計支援プログラムを実行して得られるデータは、メモリ１０２、補助記憶装置１０３、プロセッサ１０１内のレジスタまたはプロセッサ１０１内のキャッシュメモリといった記憶装置に記憶される。
【００１９】
補助記憶装置１０３は記憶部１２０として機能する。但し、他の記憶装置が、補助記憶装置１０３の代わりに、又は、補助記憶装置１０３と共に、記憶部１２０として機能してもよい。
【００２０】
設計支援装置１００は、プロセッサ１０１を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ１０１の役割を分担する。
【００２１】
設計支援プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータで読み取り可能に記録（格納）することができる。
【００２２】
＊＊＊動作の説明＊＊＊
設計支援装置１００の動作は設計支援方法に相当する。また、設計支援方法の手順は設計支援プログラムの手順に相当する。
【００２３】
図２に基づいて、設計支援方法を説明する。
ステップＳ１０１において、利用者が、アーキテクチャ情報と処理プログラムと制約条件とを設計支援装置１００に入力する。
受付部１１１は、アーキテクチャ情報と処理プログラムと制約条件とを受け付ける。そして、受付部１１１は、アーキテクチャ情報と処理プログラムと制約条件とを記憶部１２０に記憶する。
【００２４】
アーキテクチャ情報は、対象システムについて、アーキテクチャの１つ以上の構成要素と各構成要素の評価項目とを示す。
対象システムは、設計の対象となるシステムである。例えば、対象システムは、組込みシステムである。
構成要素は、アーキテクチャを構成する要素である。例えば、構成要素は、ＣＰＵ、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）、または、バスである。
評価項目は、性能評価の対象となる項目である。例えば、評価項目は、ＣＰＵの処理時間、ＦＰＧＡの回路規模、または、バスの転送時間である。
【００２５】
処理プログラムは、設計対象の処理が記述されたプログラムの全体または一部である。具体的には、処理プログラムは、プログラミング言語で記述されたソースプログラムである。例えば、プログラミング言語はＣ言語である。
処理プログラムは、１つ以上のサブルーチンを含む。
サブルーチンは、処理の固まりである。例えば、サブルーチンは、関数、ｆｏｒループまたは式の集合である。
【００２６】
制約条件は、各構成要素の評価項目について各構成要素の制約値を示す。
制約値は、各構成要素の評価項目についての制約を示す値である。
【００２７】
図３に基づいて、アーキテクチャ情報１２１を説明する。
アーキテクチャ情報１２１は、アーキテクチャ情報の一例である。
アーキテクチャ情報１２１は、第１ＣＰＵと第２ＣＰＵと第１バスと第１ＦＰＧＡとのそれぞれを構成要素として示している。
第１ＣＰＵと第２ＣＰＵとのそれぞれの評価項目は、処理時間である。
第１バスの評価項目は、転送時間である。
第１ＦＰＧＡの評価項目は、回路規模である。
【００２８】
図４に基づいて、制約条件１２２を説明する。
制約条件１２２は、制約条件の一例である。
制約条件１２２は、第１ＣＰＵと第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれの制約値を示している。
第１ＣＰＵの制約値は、１００マイクロ秒である。
第２ＣＰＵの制約値は、２００マイクロ秒である。
第１ＦＰＧＡの制約値は、１０００ＫＬＵＴである。ＫＬＵＴは、キロルックアップテーブルの略称である。つまり、ＫＬＵＴは、ルックアップテーブルの数を表す。
第１バスの制約値は、３０マイクロ秒である。
【００２９】
図２に戻り、ステップＳ１１０から説明を続ける。
ステップＳ１１０において、コスト算出部１１２は、処理プログラムに含まれる各サブルーチンについてコストを算出する。
コスト算出処理（Ｓ１１０）の詳細については後述する。
【００３０】
ステップＳ１２０において、目的関数生成部１１３は、アーキテクチャ情報が示す各構成要素の評価項目について目的関数を生成する。
目的関数生成処理（Ｓ１２０）の詳細については後述する。
【００３１】
ステップＳ１３０において、最適化部１１４は、目的関数の最適化問題を１回以上解くことによって、１つ以上の構成要素と１つ以上のサブルーチンとについて１つ以上の分割解を得る。
分割解は、各構成要素に割り当てられるサブルーチンを示す。つまり、分割解は、どのサブルーチンがどの構成要素に割り当てられるかを示す。
最適化処理（Ｓ１３０）の詳細については後述する。
【００３２】
ステップＳ１４０において、余裕度算出部１１５は、１つ以上の分割解と制約条件とに基づいて、各構成要素の評価項目について各構成要素の余裕度を算出する。
余裕度は、制約値に対する余裕の度合いを示す。
余裕度算出処理（Ｓ１４０）の詳細については後述する。
【００３３】
ステップＳ１５０において、変更判定部１１６は、各構成要素の余裕度に基づいて各構成要素の変更の要否を判定する。
変更判定処理（Ｓ１５０）の詳細については後述する。
【００３４】
少なくともいずれかの構成要素の変更が必要であると判定された場合、処理はステップＳ１６０に進む。
いずれの構成要素の変更も必要でないと判定された場合、処理はステップＳ１８０に進む。
【００３５】
ステップＳ１６０において、変更部１１７は、変更が必要な各構成要素についてアーキテクチャ情報を変更する。
変更処理（Ｓ１６０）の詳細については後述する。
【００３６】
ステップＳ１７０において、変更部１１７は、各構成要素の変更の要否についての判定結果に基づいて、目的関数を変更する。
変更処理（Ｓ１７０）の詳細については後述する。
【００３７】
ステップＳ１８０において、出力部１１８は、アーキテクチャ情報と分割解とを出力する。
出力処理（Ｓ１８０）の詳細については後述する。
【００３８】
図５に基づいて、コスト算出処理（Ｓ１１０）を説明する。
ステップＳ１１１において、コスト算出部１１２は、処理プログラムを１つ以上のサブルーチンに分割する。
【００３９】
ステップＳ１１２において、コスト算出部１１２は、処理プログラムを解析することによって、サブルーチン間のデータフローを生成する。
データフローは、サブルーチン間のデータの入出力を示す。
【００４０】
ステップＳ１１３において、コスト算出部１１２は、各サブルーチンの評価項目について各サブルーチンのコストを算出する。
サブルーチンのコストは、サブルーチンの実行のために構成要素にかかるコストである。
【００４１】
具体的には、コスト算出部１１２は、サブルーチン毎にソフトウェアコストとハードウェアコストとを算出する。
ソフトウェアコストは、ソフトウェア要素にかかるコストである。ソフトウェア要素は、サブルーチンをソフトウェアで実現するための構成要素である。例えば、ソフトウェア要素はＣＰＵであり、ソフトウェアコストはＣＰＵの処理時間である。
ハードウェアコストは、ハードウェア要素にかかるコストである。ハードウェア要素は、サブルーチンをハードウェアで実現するための構成要素である。例えば、ハードウェア要素はＦＰＧＡであり、ハードウェアコストはＦＰＧＡの回路規模である。
【００４２】
例えば、コスト算出部１１２は、以下のような方法によって、各サブルーチンのコストを算出する。
コスト算出部１１２は、特許文献１に記載の方法によって、各サブルーチンのコストを算出する。特許文献１にはデータベースを用いる方法が記載されている。
コスト算出部１１２は、シミュレータまたは実機を動作させ、各サブルーチンのソフトウェアコストを測定する。
コスト算出部１１２は、高位合成によって、各サブルーチンのハードウェアコストを見積る。
【００４３】
図６に基づいて、目的関数生成処理（Ｓ１２０）を説明する。
ステップＳ１２１において、目的関数生成部１１３は、アーキテクチャ情報から、各構成要素の評価項目を示す情報を取得する。
【００４４】
ステップＳ１２２において、目的関数生成部１１３は、各構成要素の評価項目の線形結合を生成する。生成される線形結合が目的関数である。
【００４５】
例えば、目的関数生成部１１３は、図３のアーキテクチャ情報１２１に基づいて、次のような目的関数を生成する。
【００４６】
＜目的関数＞
Ｃ１×｛第１ＣＰＵの処理時間｝＋Ｃ２×｛第２ＣＰＵの処理時間｝＋Ｃ３×｛第１ＦＰＧＡの回路規模｝＋Ｃ４×｛第１バスの転送時間｝  →  ｍｉｎ
【００４７】
Ｃ１からＣ４のそれぞれは係数である。
｛｝は、構成要素の評価項目を示している。
ｍｉｎは、目的関数の値が最小になるという条件を意味する。
【００４８】
図７に基づいて、最適化処理（Ｓ１３０）を説明する。
ステップＳ１３１において、最適化部１１４は、制約条件と各サブルーチンのコストとに基づいて、制約式を生成する。
具体的には、最適化部１１４は、非特許文献１に記載された方法で制約式を生成する。
【００４９】
ステップＳ１３２において、最適化部１１４は、目的関数に含まれる１つ以上の係数について、１つ以上の係数値組を生成する。
係数値組は、１つ以上の係数に対応する１つ以上の係数値である。
係数値は、係数に設定される値である。
【００５０】
例えば、最適化部１１４は、上記の＜目的関数＞に含まれる４つの係数について、以下のように８つの係数値組を生成する。
（１）Ｃ１＝０、Ｃ２＝Ｃ３＝Ｃ４＝１
係数値組（１）は、第１ＣＰＵを軽視する場合の係数値組である。軽視とは、制約が無いことを意味する。例えば、第１ＣＰＵが軽視される場合、第１ＣＰＵの処理時間が長くても構わない。
（２）Ｃ１＝１、Ｃ２＝Ｃ３＝Ｃ４＝０
係数値組（２）は、第１ＣＰＵを重視する場合の係数値組である。重視とは、制約が厳しいことを意味する。例えば、第１ＣＰＵが重視される場合、第１ＣＰＵの処理時間が最短の時間でなければならない。
（３）Ｃ２＝０、Ｃ１＝Ｃ３＝Ｃ４＝１
係数値組（３）は、第２ＣＰＵを軽視する場合の係数値組である。
（４）Ｃ２＝１、Ｃ１＝Ｃ３＝Ｃ４＝０
係数値組（４）は、第２ＣＰＵを重視する場合の係数値組である。
（５）Ｃ３＝０、Ｃ１＝Ｃ２＝Ｃ４＝１
係数値組（５）は、第１ＦＰＧＡを軽視する場合の係数値組である。
（６）Ｃ３＝１、Ｃ１＝Ｃ２＝Ｃ４＝０
係数値組（６）は、第１ＦＰＧＡを重視する場合の係数値組である。
（７）Ｃ４＝０、Ｃ１＝Ｃ２＝Ｃ３＝１
係数値組（７）は、第１バスを軽視する場合の係数値組である。
（８）Ｃ４＝１、Ｃ１＝Ｃ２＝Ｃ３＝０
係数値組（８）は、第１バスを重視する場合の係数値組である。
【００５１】
ステップＳ１３３において、最適化部１１４は、係数値組毎に制約式に従って目的関数の最適化問題を解く。これにより、係数値組毎に分割解が得られる。
具体的には、最適化部１１４は、最適化ソルバを使用することによって、最適化問題を解く。
【００５２】
図８に基づいて、余裕度算出処理（Ｓ１４０）を説明する。
ステップＳ１４１において、余裕度算出部１１５は、制約条件から各構成要素の制約値を取得する。
【００５３】
ステップＳ１４２において、余裕度算出部１１５は、各分割解における各構成要素の評価値を算出する。つまり、余裕度算出部１１５は、分割解毎に各構成要素の評価値を算出する。
評価値は、分割解が適用された場合の構成要素のコストである。
【００５４】
例えば、余裕度算出部１１５は、シミュレーションによって、各分割解における各構成要素の評価値を算出する。余裕度算出部１１５は、論理合成による評価によって、各分割解における各構成要素の評価値を算出してもよい。また、余裕度算出部１１５は、コスト算出部１１２がコストの算出に用いる方法と同じ方法によって、各分割解における各構成要素の評価値を算出してもよい。
【００５５】
ステップＳ１４３において、余裕度算出部１１５は、各構成要素の制約値と各分割解における各構成要素の評価値とに基づいて、各構成要素の余裕度を算出する。
余裕度は、制約値と評価値との差である。
【００５６】
具体的には、余裕度算出部１１５は、各構成要素の最小余裕度と各構成要素の最大余裕度とを算出する。
【００５７】
余裕度算出部１１５は、構成要素の最小余裕度と構成要素の最大余裕度とを以下のように算出する。
まず、余裕度算出部１１５は、分割解毎に、構成要素の制約値と構成要素の評価値との差を算出する。算出される差が余裕度である。
そして、余裕度算出部１１５は、最小余裕度と最大余裕度とを選択する。
【００５８】
例えば、第１ＣＰＵの処理時間についての制約値は１００マイクロ秒である。また、２つの分割解のうちの第１分割解において、第１ＣＰＵの処理時間についての評価値が５０マイクロ秒である。また、２つの分割解のうちの第２分割解において、第１ＣＰＵの処理時間についての評価値が４０マイクロ秒である。
この場合、第１分割解における第１ＣＰＵの余裕度は５０（＝１００−５０）であり、第２分割解における第１ＣＰＵの余裕度は６０（＝１００−４０）である。
したがって、最小余裕度は５０であり、最大余裕度は６０である。
【００５９】
図９に基づいて、余裕度情報１２３を説明する。
余裕度情報１２３は、余裕度情報の一例である。余裕度情報は、各構成要素の余裕度を示す。
余裕度情報１２３は、第１ＣＰＵと第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれの最小余裕度と最大余裕度とを示している。
第１ＣＰＵの最小余裕度は５０であり、第１ＣＰＵの最大余裕度は６０である。
第２ＣＰＵの最小余裕度は２０であり、第２ＣＰＵの最大余裕度は１００である。
第１ＦＰＧＡの最小余裕度は１００であり、第１ＦＰＧＡの最大余裕度は５００である。
第１バス最小余裕度は０であり、第１バスの最大余裕度は２である。
【００６０】
図１０および図１１に基づいて、変更判定処理（Ｓ１５０）を説明する。
図１０および図１１の変更判定処理（Ｓ１５０）は構成要素毎に実行される。
変更判定処理（Ｓ１５０）において、実行の対象となる構成要素を対象要素と呼ぶ。
【００６１】
変更判定処理（Ｓ１５０）において、アーキテクチャデータベースが使用される。アーキテクチャデータベースは、各種のアーキテクチャ要素のそれぞれの情報を有する。アーキテクチャ要素は、構成要素になり得る要素である。アーキテクチャデータベースは、設計支援装置１００に備わってもよいし、設計支援装置１００の外部に設けられてもよい。
【００６２】
ステップＳ１５１（図１０参照）において、変更判定部１１６は、対象要素の最大余裕度を余裕度閾値と比較する。
余裕度閾値は、構成要素の種類毎に予め決められる。変更判定部１１６は、対象要素の種類に対応する余裕度閾値を比較に用いる。
対象要素の最大余裕度が余裕度閾値より大きい場合、処理はステップＳ１５２に進む。
対象要素の最大余裕度が余裕度閾値以下である場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００６３】
ステップＳ１５２において、変更判定部１１６は、対象要素の最小余裕度を余裕度閾値と比較する。
対象要素の最小余裕度が余裕度閾値より大きい場合、処理はステップＳ１５３に進む。
対象要素の最小余裕度が余裕度閾値以下である場合、処理はステップＳ１５２１（図１１参照）に進む。
【００６４】
ステップＳ１５３において、変更判定部１１６は、対象要素と種類が同じで対象要素よりもスペックが低いアーキテクチャ要素が有るか判定する。
ステップＳ１５３およびステップＳ１５４において、対象要素と種類が同じで対象要素よりもスペックが低いアーキテクチャ要素を低スペック要素と呼ぶ。
具体的には、変更判定部１１６は、低スペック要素が有るかアーキテクチャデータベースに問い合わせる。
低スペック要素が有る場合、処理はステップＳ１５４に進む。
低スペック要素が無い場合、処理はステップＳ１５５に進む。
【００６５】
ステップＳ１５４において、変更判定部１１６は、対象要素を低スペック要素に変更すると判定する。そして、処理は終了する。
【００６６】
ステップＳ１５５において、変更判定部１１６は、アーキテクチャ情報が示す１つ以上の構成要素の中に対象要素と同じ種類の構成要素が有るか判定する。
ステップＳ１５５からステップＳ１５７において、対象要素と同じ種類の構成要素を同種要素と呼ぶ。
同種要素が有る場合、処理はステップＳ１５６に進む。
同種要素が無い場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００６７】
ステップＳ１５６において、変更判定部１１６は、同種要素と種類が同じで同種要素よりもスペックが高いアーキテクチャ要素が有るか判定する。
ステップＳ１５６およびステップＳ１５７において、同種要素と種類が同じで同種要素よりもスペックが高いアーキテクチャ要素を高スペック要素と呼ぶ。
具体的には、変更判定部１１６は、アーキテクチャデータベースに高スペック要素が有るか問い合わせる。
高スペック要素が有る場合、処理はステップＳ１５７に進む。
高スペック要素が無い場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００６８】
ステップＳ１５７において、変更判定部１１６は、同種要素を高スペック要素に変更して対象要素を削除すると判定する。そして、処理は終了する。
【００６９】
ステップＳ１５２１（図１１参照）において、変更判定部１１６は、アーキテクチャ情報が示す１つ以上の構成要素の中に対象要素と同じ種類の構成要素が有るか判定する。
ステップＳ１５２１において、対象要素と同じ種類の構成要素を同種要素と呼ぶ。
同種要素が有る場合、処理はステップＳ１５２２に進む。
同種要素が無い場合、処理はステップＳ１５２４に進む。
【００７０】
ステップＳ１５２２において、変更判定部１１６は、対象要素と種類が同じで対象要素よりもスペックが高いアーキテクチャ要素が有るか判定する。
ステップＳ１５２２およびステップＳ１５２３において、対象要素と種類が同じで対象要素よりもスペックが高いアーキテクチャ要素を高スペック要素と呼ぶ。
具体的には、変更判定部１１６は、アーキテクチャデータベースに高スペック要素が有るか問い合わせる。
高スペック要素が有る場合、処理はステップＳ１５２３に進む。
高スペック要素が無い場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００７１】
ステップＳ１５２３において、変更判定部１１６は、対象要素を高スペック要素に変更すると判定する。そして、処理は終了する。
【００７２】
ステップＳ１５２４において、変更判定部１１６は、アーキテクチャ情報が示す１つ以上の構成要素の中に対象要素と種類が同じで低スペックなアーキテクチャ要素に変更される構成要素が有るか判定する。
ステップＳ１５２４において、対象要素と種類が同じで低スペックなアーキテクチャ要素に変更される構成要素を低変更要素と呼ぶ。つまり、低変更要素は、スペックを下げる変更がなされる構成要素である。
低変更要素が有る場合、処理はステップＳ１５２５に進む。
低変更要素が無い場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００７３】
ステップＳ１５２５において、変更判定部１１６は、対象要素と種類が同じで対象要素よりもスペックが低いアーキテクチャ要素が有るか判定する。
ステップＳ１５２５およびステップＳ１５２６において、対象要素と種類が同じで対象要素よりもスペックが低いアーキテクチャ要素を低スペック要素と呼ぶ。
具体的には、変更判定部１１６は、アーキテクチャデータベースに低スペック要素が有るか問い合わせる。
低スペック要素が有る場合、処理はステップＳ１５２６に進む。
低スペック要素が無い場合、変更判定部１１６は対象要素を変更しないと判定し、処理は終了する。
【００７４】
ステップＳ１５２６において、変更判定部１１６は、対象要素を低スペック要素に変更すると判定する。そして、処理は終了する。
【００７５】
図１２に基づいて、判定結果情報１２４Ａを説明する。
判定結果情報１２４Ａは、判定結果情報の一例である。判定結果情報は、変更判定処理（Ｓ１５０）における判定結果を示す。
【００７６】
判定結果情報１２４Ａは、第１ＣＰＵと第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれについて判定結果を示している。
第１ＣＰＵは、現在のＣＰＵよりもスペックが低いＣＰＵに変更される。
第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれは、変更されない。
【００７７】
判定結果情報１２４Ａは、以下のような場合に得られる。
第１ＣＰＵの現在のスペックよりもスペックが低いＣＰＵが存在する。第１ＣＰＵの最大余裕度と第１ＣＰＵの最小余裕度とのそれぞれが余裕度閾値より大きい。この場合、変更判定部１１６は、第１ＣＰＵを現在のＣＰＵよりもスペックが低いＣＰＵに変更すると判定する。第２ＣＰＵと第１ＦＰＧＡとのそれぞれの最大余裕度は余裕度閾値より大きい。しかし、第２ＣＰＵと第１ＦＰＧＡとのそれぞれの最小余裕度は余裕度閾値より小さい。そのため、第２ＣＰＵと第１ＦＰＧＡとのそれぞれのスペックを低くすると、スペックに余裕がなくなる可能性が高い。この場合、変更判定部１１６は、第２ＣＰＵと第１ＦＰＧＡとのそれぞれを変更しないと判定する。第１バスの最大余裕度と第１バスの最小余裕度とのそれぞれが余裕度閾値より小さい。この場合、変更判定部１１６は、第１バスを変更しないと判定する。
【００７８】
図１３に基づいて、判定結果情報１２４Ｂを説明する。
判定結果情報１２４Ｂは、判定結果情報の一例である。
【００７９】
判定結果情報１２４Ｂは、第１ＣＰＵと第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれについて判定結果を示している。
第１ＣＰＵは、削除される。
第２ＣＰＵは、現在のＣＰＵよりもスペックが高いＣＰＵに変更される。
第１ＦＰＧＡと第１バスとのそれぞれは、変更されない。
【００８０】
判定結果情報１２４Ｂは、以下のような場合に得られる。
第１ＣＰＵよりもスペックが低いＣＰＵが存在しない。そのため、第１ＣＰＵを現在のＣＰＵよりもスペックが低いＣＰＵに変更できない。第２ＣＰＵの最小余裕度は余裕度閾値より小さい。そのため、第１ＣＰＵに割り当てられたサブルーチンを第１ＣＰＵの代わりに第２ＣＰＵに割り当てると、第２ＣＰＵのスペックに余裕がなくなる可能性がある。しかし、第２ＣＰＵよりもスペックが高いＣＰＵが存在する。この場合、変更判定部１１６は、第１ＣＰＵに割り当てられたサブルーチンを第１ＣＰＵの代わりに第２ＣＰＵに割り当てるため、第１ＣＰＵを削除して第２ＣＰＵを現在のＣＰＵよりもスペックが高いＣＰＵに変更すると判定する。
【００８１】
図１４に基づいて、判定結果情報１２４Ｃを説明する。
判定結果情報１２４Ｃは、判定結果情報の一例である。
【００８２】
判定結果情報１２４Ｃは、第１ＣＰＵと第２ＣＰＵと第１ＦＰＧＡと第１バスとのそれぞれについて判定結果を示している。
第１ＣＰＵと第２ＣＰＵと第１バスとのそれぞれは、変更されない。
第１ＦＰＧＡは、現在のＦＰＧＡよりもスペックが低いＦＰＧＡに変更される。
【００８３】
判定結果情報１２４Ｃは、以下のような場合に得られる。
第１ＣＰＵと第２ＣＰＵとして使用可能な他のＣＰＵが存在しない。そのため、変更判定部１１６は、第１ＣＰＵと第２ＣＰＵとのそれぞれを変更しないと判定する。第１ＦＰＧＡよりもスペックが低いＦＰＧＡが存在する。第１ＦＰＧＡの最大余裕度と第１ＦＰＧＡの最小余裕度とのそれぞれは余裕度閾値より大きい。この場合、変更判定部１１６は、第１ＦＰＧＡを現在のＦＰＧＡよりもスペックが低いＦＰＧＡに変更すると判定する。
【００８４】
次に、変更処理（Ｓ１６０）について説明する。
ステップＳ１６０において、変更部１１７は、変更が必要な各構成要素についてアーキテクチャ情報を変更する。
【００８５】
具体的には、変更部１１７は、アーキテクチャ情報を次のように変更する。次の説明において、変更が必要な構成要素を対象要素と呼ぶ。
変更部１１７は、変更後の対象要素となるアーキテクチャ要素の情報をアーキテクチャデータベースから取得する。
変更部１１７は、アーキテクチャ情報から対象要素の情報を選択する。
そして、変更部１１７は、選択した情報を取得した情報に変更する。
【００８６】
次に、変更処理（Ｓ１７０）について説明する。
ステップＳ１７０において、変更部１１７は、判定結果情報に基づいて、目的関数を変更する。
【００８７】
具体的には、変更部１１７は、目的関数を以下のように変更する。
変更部１１７は、変更されない構成要素についての評価項目を目的関数から選択する。そして、変更部１１７は、選択した評価項目を目的関数から削除する。
変更部１１７は、削除される構成要素についての評価項目を目的関数から選択する。そして、変更部１１７は、選択した評価項目を目的関数から削除する。
【００８８】
目的関数の変更例について説明する。
最大余裕度と最小余裕度とがともに余裕度閾値より小さい場合、その構成要素は、適切なスペックを有しているため、適切な要素である。その構成要素に関する探索は完了しているため、その構成要素について再び評価を行う必要はない。そこで、変更部１１７は、変更されない構成要素の評価項目を目的関数から削除する。これにより、最適化問題を解く回数が減少し、探索時間が短くなる。
【００８９】
例えば、第１ＦＰＧＡの最大余裕度と第１ＦＰＧＡの最小余裕度とがともに余裕度閾値より小さい場合、変更部１１７は、前記の＜目的関数＞を次のように変更する。
【００９０】
＜変更後の目的関数＞
Ｃ１×｛第１ＣＰＵの処理時間｝＋Ｃ２×｛第２ＣＰＵの処理時間｝＋Ｃ４×｛第１バスの転送時間｝  →  ｍｉｎ
【００９１】
次に、出力処理（Ｓ１８０）について説明する。
ステップＳ１８０において、出力部１１８は、アーキテクチャ情報と分割解とを出力する。
例えば、出力部１１８は、アーキテクチャ情報と分割解とをディスプレイに表示する。
【００９２】
ステップＳ１８０が実行される場合、アーキテクチャ情報は、１つ以上の適切な構成要素を示す。また、直前の最適化処理（Ｓ１３０）において最適な分割解が１つまたは複数得られる。複数の分割解が得られた場合、出力部１１８は、全ての分割解を出力してもよいし、いずれか１つ以上の分割解を出力してもよい。
【００９３】
＊＊＊実施の形態１の効果＊＊＊
各構成要素の評価項目を有する目的関数が生成され、目的関数の最適化問題を解くことにより分割解が得られ、分割解について各構成要素の余裕度が算出され、各構成要素の余裕度に基づいて各構成要素の変更の要否が判定される。これにより、分割解の全ての候補を探索する必要がなくなる。したがって、分割解の最適化にかかる総探索量を削減することができる。
【００９４】
各構成要素の余裕度に基づいて探索範囲が小さい構成要素が決定される。つまり、変更されない構成要素が決まる。そして、その構成要素の評価項目が目的関数から削除される。これにより、その構成要素について探索が行われないようになる。つまり、不要な探索が行われないようになる。したがって、イタレーション毎の探索量を削減することができる。
【００９５】
＊＊＊他の構成＊＊＊
目的関数は、各構成要素の評価項目の線形結合でなくてもよい。例えば、従来技術と同様の評価式が目的関数として利用されてもよい。
【００９６】
＊＊＊実施の形態の補足＊＊＊
図１５に基づいて、設計支援装置１００のハードウェア構成を説明する。
設計支援装置１００は処理回路１０９を備える。
処理回路１０９は、受付部１１１とコスト算出部１１２と目的関数生成部１１３と最適化部１１４と余裕度算出部１１５と変更判定部１１６と変更部１１７と出力部１１８とを実現するハードウェアである。
処理回路１０９は、専用のハードウェアであってもよいし、メモリ１０２に格納されるプログラムを実行するプロセッサ１０１であってもよい。
【００９７】
処理回路１０９が専用のハードウェアである場合、処理回路１０９は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ＡＳＩＣ、ＦＰＧＡまたはこれらの組み合わせである。
ＡＳＩＣはＡｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略称であり、ＦＰＧＡはＦｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略称である。
設計支援装置１００は、処理回路１０９を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路１０９の役割を分担する。
【００９８】
処理回路１０９において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
【００９９】
このように、処理回路１０９はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
【０１００】
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
【符号の説明】
【０１０１】
１００  設計支援装置、１０１  プロセッサ、１０２  メモリ、１０３  補助記憶装置、１０４  入出力インタフェース、１０９  処理回路、１１１  受付部、１１２  コスト算出部、１１３  目的関数生成部、１１４  最適化部、１１５  余裕度算出部、１１６  変更判定部、１１７  変更部、１１８  出力部、１２０  記憶部、１２１  アーキテクチャ情報、１２２  制約条件、１２３  余裕度情報、１２４  判定結果情報。
【図１】
2019171464.tif 000003
【図２】
2019171464.tif 000004
【図３】
2019171464.tif 000005
【図４】
2019171464.tif 000006
【図５】
2019171464.tif 000007
【図６】
2019171464.tif 000008
【図７】
2019171464.tif 000009
【図８】
2019171464.tif 000010
【図９】
2019171464.tif 000011
【図１０】
2019171464.tif 000012
【図１１】
2019171464.tif 000013
【図１２】
2019171464.tif 000014
【図１３】
2019171464.tif 000015
【図１４】
2019171464.tif 000016
【図１５】
2019171464.tif 000017
【国際調査報告】
2019171464.tif 000018
2019171464.tif 000019