(57)【要約】【課題】モデルベース開発におけるシミュレーション時間を容易に削減することができる。【解決手段】プログラムは、プロセッサと、メモリとを備える情報処理装置において実行される。プログラムは、プロセッサに、入力ブロック、１以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップとを実行させる。【選択図】図３
2019200524.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、メモリとを備える情報処理装置において実行されるプログラムであって、
前記メモリは、入力ブロック、１以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶し、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記プログラムは、前記プロセッサに、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルの第１シミュレーション結果を取得するステップと、
前記第１シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップとを実行させる、プログラム。
【請求項２】
前記設定するステップは、
前記対象ブロックに接続される第１変換ブロックに接続された他のブロックが前記対象ブロックの後に処理を実行する場合、前記対象ブロックのクロック周波数に対する、前記他のブロックのクロック周波数の比率を前記第１変換ブロックの前記変換比として設定するステップを含む、請求項１に記載のプログラム。
【請求項３】
前記設定するステップは、
前記他のブロックが前記対象ブロックの前に処理を実行する場合、前記他のブロックのクロック周波数に対する、前記対象ブロックのクロック周波数の比率を前記第１変換ブロックの前記変換比として設定するステップを含む、請求項２に記載のプログラム。
【請求項４】
前記変換ブロックは、入力側に接続されたブロックの出力データを保持し、前記保持された出力データを出力側に接続されたブロックに出力するように構成される、請求項１に記載のプログラム。
【請求項５】
前記第１シミュレーション結果は、前記一連のブロックの各々のクロック毎の入出力データを含み、
前記決定するステップは、
前記取得された各前記ブロックの入出力データを解析することにより、前記一連のブロックの各々について、同一の入出力データが連続する回数を算出するステップと、
前記所定のクロック周波数と、前記一連のブロックの各々についての前記回数とに基づいて、前記対象ブロックのクロック周波数を決定するステップとを含む、請求項１に記載のプログラム。
【請求項６】
前記対象ブロックのクロック周波数は、前記所定のクロック周波数を、前記対象ブロックについての前記回数で除算した値である、請求項５に記載のプログラム。
【請求項７】
前記第１シミュレーション結果は、前記所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのクロック毎の第１出力データを含み、
前記プログラムは、前記プロセッサに、
前記一連のブロックの優先順位を設定するステップと、
前記設定された優先順位に基づいて、前記所定のクロック周波数より所定周波数だけ低い第１クロック周波数で動作させる第１対象ブロックを選択するステップと、
前記第１対象ブロックを前記第１クロック周波数で動作させ、前記第１対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させた場合の前記モデルの第２シミュレーション結果として、前記モデルのクロック毎の第２出力データを取得するステップと、
前記第１出力データと前記第２出力データとの誤差が許容範囲内であるか否かを判定するステップとを、さらに実行させる、請求項１に記載のプログラム。
【請求項８】
前記誤差が前記許容範囲内である場合、前記設定するステップは、前記第１対象ブロックを前記第１クロック周波数より前記所定周波数だけ低い第２クロック周波数で動作させ、前記第１対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルの第３シミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップを含む、請求項７に記載のプログラム。
【請求項９】
前記誤差が前記許容範囲内ではない場合、
前記決定するステップは、前記第１対象ブロックのクロック周波数を前記所定のクロック周波数として決定するステップを含み、
前記選択するステップは、前記第１対象ブロックの次に優先順位が高いブロックを、前記第１クロック周波数で動作させる第２対象ブロックとして選択するステップを含む、請求項７に記載のプログラム。
【請求項１０】
前記設定するステップは、前記第２対象ブロックを前記第１クロック周波数で動作させ、前記第２対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させた場合の前記モデルの第４シミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップを含む、請求項９に記載のプログラム。
【請求項１１】
前記優先順位を設定するステップは、前記一連のブロックにおいて、処理順序が後になるブロックほど前記優先順位を高く設定する、請求項７に記載のプログラム。
【請求項１２】
前記第１シミュレーション結果は、前記所定のクロック周波数で前記一連のブロックを動作させたときの各ブロックの出力データをさらに含み、
前記プログラムは、前記プロセッサに、前記一連のブロックの各々について、当該ブロックの出力データの波形に基づいて当該ブロックの出力変動率を算出するステップをさらに実行させ、
前記優先順位を設定するステップは、前記出力変動率に基づいて、前記一連のブロックの優先順位を設定するステップを含む、請求項７に記載のプログラム。
【請求項１３】
前記優先順位を設定するステップは、前記一連のブロックにおいて、前記出力変動率が小さいブロックほど前記優先順位を高く設定する、請求項１２に記載のプログラム。
【請求項１４】
前記出力変動率は、前記出力データの出力値の平均値に対する、前記出力データの振幅値である、請求項１３に記載のプログラム。
【請求項１５】
プロセッサと、
入力ブロック、１以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶するメモリとを備え、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記プロセッサは、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのシミュレーション結果を取得し、
前記シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定し、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定する、情報処理装置。
【請求項１６】
情報処理装置のプロセッサにより実行される情報処理方法であって、
前記情報処理装置は、入力ブロック、１以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶するメモリを備え、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記情報処理方法は、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのシミュレーション結果を取得するステップと、
前記シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップとを含む、情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、プログラム、情報処理装置、および情報処理方法に関し、例えば、モデルベース開発におけるモデルのシミュレーションに利用されるプログラム、情報処理装置、および情報処理方法に関する。
【背景技術】
【０００２】
システム開発においては、Ｖモデルのプロセスを用いて開発されることがある。Ｖモデルでは、例えば、コーディング工程より前の工程において、開発者がドキュメントを作成し、有識者がレビューし、レビュー結果を次工程の入力とすることで開発を進めていた。
【０００３】
しかし、システムの大規模化、複雑化に伴い、ドキュメントのレビューだけでは、最終段階のシステム挙動および性能を確認するシステムテストで問題が発生する場合がある。なぜなら、システム挙動および性能が、ドキュメントに基づく単純計算と実システムとで異なるためである。この場合、Ｖモデルの最初からやり直しが発生し、開発完了日程が遅延し、製品投入タイミングを逃してしまう。このような問題を解決するため、コーディングより前の工程で、ドキュメントだけでなく、モデルを使用して開発するモデルベース開発が広まりつつある。
【０００４】
例えば、特開２００８−２１５２５４号公報（特許文献１）は、詳細モデルベースとは異なる特定系の簡易モデルベースを、エンジン制御のために車両ＥＣＵ（engine  control  unit）に実装するためのモデルベース開発における簡易化手法を開示している。この手法では、簡易モデルベースを実機に適合させるための適合値は、簡易モデルベースにおいて逆算され、適合値を逆算するのに必要な値は、詳細モデルベースにより算出される。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２１５２５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
モデルベース開発では、各工程で複数のブロックから構成されるモデルを作成し、モデルのシミュレーションを行ない、挙動および性能を見積もりながら開発が進められる。モデルのシミュレーションは、机上の単純計算より高精度にシステム挙動および性能を見積もることができる。また、実システムで発生させにくい、または発生させることができない故障パターンの再現等も行なうことができる。
【０００７】
したがって、モデルベース開発では、システム挙動および性能を確認するため、各種条件で何度もシミュレーションが実行される。しかし、モデルが高精度であるほど、シミュレーション時間が長くなる問題がある。特許文献１では、車両ＥＣＵの計算時間が膨大となるために、詳細モデルベースとは異なる簡易モデルベースを利用している。しかしながら、例えば、シミュレーション時間の所望の削減量に応じて、簡易モデルの構成の変更等の煩雑な作業が必要となり、容易にシミュレーション時間を削減することができない。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施の形態に従うプログラムは、プロセッサと、メモリとを備える情報処理装置において実行される。プログラムは、プロセッサに、入力ブロック、１以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップを実行させる。プログラムは、プロセッサに、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップをさらに実行させる。
【００１０】
一実施の形態に従う情報処理装置は、プロセッサと、メモリとを備える。プロセッサは、入力ブロック、１以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。プロセッサは、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、各ブロック間に配置された変換ブロックの変換比を設定する。
【００１１】
一実施の形態に従う情報処理方法は、情報処理装置のプロセッサにより実行される。情報処理方法は、入力ブロック、１以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップを含む。情報処理方法は、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップをさらに含む。
【発明の効果】
【００１２】
一実施の形態によれば、モデルベース開発におけるシミュレーション時間を容易に削減することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態に従う情報処理装置のハードウェア構成および動作概要を説明するための図である。
【図２】本実施の形態に従うモデルの一例を示す図である。
【図３】実施の形態１に従う改善プログラムの機能構成の一例を示すブロック図である。
【図４】実施の形態１に従う回数算出部の算出方式を説明するための図である。
【図５】シミュレーション時間が削減される理由を説明するための図である。
【図６】実施の形態１に従うプロセッサの処理手順の一例を示すフローチャートである。
【図７】実施の形態２に従う改善プログラムの機能構成の一例を示すブロック図である。
【図８】実施の形態２に従うプロセッサの処理手順の一例を示すフローチャートである。
【図９】実施の形態３に従う改善プログラムの機能構成の一例を示すブロック図である。
【図１０】実施の形態３に従う出力変動率の算出方式を説明するための図である。
【図１１】実施の形態３に従うプロセッサの処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
【００１５】
図１は、本実施の形態に従う情報処理装置１００のハードウェア構成および動作概要を説明するための図である。図１を参照して、情報処理装置１００は、プロセッサ１０２と、補助記憶装置１２０と、主記憶装置１１０とを含む。情報処理装置１００は、自装置への操作入力を受け付けるための各種の入力装置（例えば、キーボード、ボタン、マウス）、各種情報を表示するためのディスプレイ、各種データを通信するための通信インターフェイス等を含む構成であってもよい。
【００１６】
本実施の形態に従う情報処理装置１００は、例えば、ディスプレイを備える据置型のパーソナルコンピュータである。ただし、情報処理装置１００は、これに限られず、後述する演算機能を有する装置であればよく、例えば、ラップトップ型のパーソナルコンピュータ等であってもよい。
【００１７】
プロセッサ１０２は、典型的には、ＣＰＵ（Central  Processing  Unit）等の演算処理部であり、補助記憶装置１２０にインストールされているＯＳ（Operating  System）、アプリケーションプログラムを含む各種プログラムを読出して、主記憶装置１１０に展開しつつ実行する。
【００１８】
主記憶装置１１０は、典型的には、ＤＲＡＭ（Dynamic  Random  Access  Memory）などの揮発性記憶媒体であり、プロセッサ１０２によって実行されるＯＳを含む各種プログラムのコードの他、各種プログラムの実行に必要な各種ワークデータを保持する。補助記憶装置１２０は、ハードディスクあるいはＳＳＤ（Solid  State  Drive）などの不揮発性記憶媒体であり、ＯＳを含む各種プログラムの他、各種設計情報などを保持する。なお、以下の説明では、主記憶装置１１０および補助記憶装置１２０をメモリと総称する場合がある。
【００１９】
本実施の形態では、補助記憶装置１２０は、シミュレーション実行環境プログラム（以下、単に「実行環境プログラム」とも称する。）１１２と、シミュレーション対象モデル（以下、単に「モデル」とも称する。）１１４と、シミュレーション時間改善プログラム（以下、単に「改善プログラム」とも称する。）１１６とを記憶している。
【００２０】
実行環境プログラム１１２は、モデルベース開発に利用されるシミュレーションの実行環境を提供するプログラムであり、例えば、MathWorks（登録商標）社のＭＡＴＬＡＢ（登録商標）上で動作するSimulink（登録商標）である。
【００２１】
開発者は、実行環境プログラム１１２を用いて目的とするプログラムのモデル１１４を記述する。モデル１１４は、ブロックと呼ばれる機能単位、および機能単位間の入出力関係を示す結線の組み合わせとして記述される。
【００２２】
図２は、本実施の形態に従うモデル１１４の一例を示す図である。図２を参照して、モデル１１４は、入力ブロック１１と、変換ブロック１２Ａ〜１２Ｅと、演算ブロック１３Ａ〜１３Ｃと、出力ブロック１４Ａ，１４Ｂとを含む。モデル１１４は、これらのブロックが入出力関係を示す結線によってつなぎ合わされた集合体である。
【００２３】
以下では、変換ブロック１２Ａ〜１２Ｅの各々に共通の構成や機能を説明する際にはそれらを変換ブロック１２と総称し、演算ブロック１３Ａ〜１３Ｃの各々に共通の構成や機能を説明する際にはそれらを演算ブロック１３と総称し、出力ブロック１４Ａ，１４Ｂの各々に共通の構成や機能を説明する際にはそれらを出力ブロック１４と総称する。
【００２４】
入力ブロック１１は、モデル外部からデータの入力を受け、当該データを出力するブロックである。例えば、入力ブロック１１は、外部からファイルを読み込み、読み込んだ値を出力する。
【００２５】
変換ブロック１２は、設定された変換比でクロック周波数を変換する。具体的には、変換ブロック１２は、自身の入力側に接続されたブロックを動作させるクロック周波数を、設定された変換比で変換して出力する。
【００２６】
例えば、入力ブロック１１をクロック周波数５０Ｈｚで動作させ、演算ブロック１３Ａをクロック周波数１００Ｈｚで動作させたい場合には、変換ブロック１２Ａの変換比を“２”に設定する。このように、変換ブロック１２の入力側に接続されたブロックのクロック周波数に対する、変換ブロック１２の出力側に接続されたブロックのクロック周波数が、当該変換ブロック１２の変換比として設定される。
【００２７】
演算ブロック１３は、入力データに対して所定の演算を実行し、その結果を出力する。一例では、演算ブロック１３は、入力値に対して四則演算を実行して、その結果を出力する。他の例では、演算ブロック１３は、入力値が予め定められた範囲内（例えば、１≦入力値≦１０）であれば、１００を出力し、入力値が予め定められた範囲外であれば、入力値をそのままの値で出力する。さらに他の例では、演算ブロック１３は、入力値の積算処理を実行し、積算結果を出力する。
【００２８】
出力ブロック１４は、入力データをモデル外部に出力するブロックである。例えば、出力ブロック１４は、ファイルへの書込みを実行したり、電圧（あるいは電流）の波形を出力したりする。
【００２９】
典型的には、入力ブロック１１から出力ブロック１４までの処理経路には、１つの入力ブロック１１と、１以上の演算ブロック１３と、１つの出力ブロックとを含む一連のブロックが存在する。また、当該一連のブロックの各ブロック間には、変換ブロック１２が配置される。
【００３０】
図２の例では、モデル１１４は、入力ブロック１１、演算ブロック１３Ａ、および出力ブロック１４Ａを含む一連のブロックと、一連のブロックの各ブロック間に配置された変換ブロック１２Ａ，１２Ｂとを含む処理経路を有する。また、モデル１１４は、入力ブロック１１、演算ブロック１３Ｂ，１３Ｃ、および出力ブロック１４Ｂを含む一連のブロックと、一連のブロックの各ブロック間に配置された変換ブロック１２Ｃ〜１２Ｅとを含む処理経路を有する。
【００３１】
再び、図１を参照して、本実施の形態に従う情報処理装置１００の動作概要について説明する。情報処理装置１００における主たる工程としては、（１）プログラム読み出し工程、（２）シミュレーション実行工程、（３）シミュレーション結果の取得工程、（４）クロック周波数決定工程、（５）シミュレーション再実行工程の５つが存在する。図１における括弧内の数字が上記の各工程に対応する。
【００３２】
プログラム読み出し工程において、プロセッサ１０２は、実行環境プログラム１１２と、モデル１１４と、改善プログラム１１６とを補助記憶装置１２０から読み出して、主記憶装置１１０にロードする。
【００３３】
シミュレーション実行工程において、プロセッサ１０２は、実行環境プログラム１１２を実行して、所定のクロック周波数で一連のブロックを動作させることで、モデル１１４のシミュレーションを実行する。このとき、各変換ブロック１２の変換比は、すべて“１”に設定されている（すなわち、周波数変換は行なわれない。）。シミュレーション結果の取得工程において、プロセッサ１０２は、改善プログラム１１６を実行して、シミュレーション結果を取得する。
【００３４】
クロック周波数決定工程において、プロセッサ１０２は、改善プログラム１１６を実行して、取得したシミュレーション結果に基づいて一連のブロックの各々にとって最適なクロック周波数を決定する。具体的には、プロセッサ１０２は、シミュレーション結果に基づいて、シミュレーション結果に実質的な影響を及ぼさない範囲で、一連のブロックの各々の現在のクロック周波数をどの程度低減できるのかを解析し、当該解析結果に基づいて各ブロックのクロック周波数を決定する。また、プロセッサ１０２は、決定した各ブロックのクロック周波数に基づいて、各ブロック間に配置された変換ブロック１２の変換比を設定する。
【００３５】
そして、シミュレーション再実行工程において、プロセッサ１０２は、実行環境プログラム１１２を再実行して、各ブロックのクロック周波数を変更したモデル１１４のシミュレーションを実行する。
【００３６】
上記のように、シミュレーション再実行工程では、１以上のブロックのクロック周波数が低減されているため、当該工程のシミュレーション時間は、シミュレーション実行工程のシミュレーション時間よりも短くなる。また、シミュレーション結果に実質的な影響を及ぼさない範囲で各ブロックのクロック周波数を低減しているため、シミュレーション結果の精度も担保される。このように、改善プログラム１１６を利用することにより、シミュレーション結果の精度を担保しつつ、シミュレーション時間を容易に削減することができる。以下に各実施の形態を詳細に説明する。
【００３７】
［実施の形態１］
＜機能構成＞
図３は、実施の形態１に従う改善プログラム１１６Ａの機能構成の一例を示すブロック図である。情報処理装置１００は、改善プログラム１１６Ａを実行することによって実現される主たる機能構成として、データ取得部３１Ａと、クロック周波数決定部３２Ａと、変換比設定部３５Ａとを含む。改善プログラム１１６Ａは、図１に示す改善プログラム１１６と対応するが、他の実施の形態との区別のため、便宜上「Ａ」といった追加の符号を付している。これは、実施の形態２〜３においても同様である。
【００３８】
また、主記憶装置１１０にロードされたモデル２０は、入力ブロック２１と、変換ブロック２２，２４と、演算ブロック２３と、出力ブロック２５とを含む。モデル２０は、図１に示すモデル１１４に対応するが、説明の容易化のため、入力ブロック、演算ブロックおよび出力ブロックが１つである場合について説明する。
【００３９】
データ取得部３１Ａは、所定のクロック周波数Ｆｓ（例えば、１００Ｈｚ）で、入力ブロック２１、演算ブロック２３および出力ブロック２５を含む一連のブロック（以下、単に「一連のブロック」とも称する。）を動作させた場合のモデル２０のシミュレーション結果を取得する。所定のクロック周波数Ｆｓは、仕様書等を参照してユーザにより予め設定された周波数である。具体的には、データ取得部３１Ａは、入力ブロック２１、演算ブロック２３および出力ブロック２５の各々の入出力データを取得する。各入出力データは、クロック周波数決定部３２Ａに出力される。
【００４０】
クロック周波数決定部３２Ａは、取得した各入出力データに基づいて、一連のブロックのうち、所定のクロック周波数Ｆｓよりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。具体的には、クロック周波数決定部３２Ａは、回数算出部３３Ａと、決定部３４Ａとを含む。
【００４１】
回数算出部３３Ａは、各入出力データを解析することにより、一連のブロックの各々について、同一の入出力データが連続する回数（以下、単に「連続回数」とも称する。）を算出する。図４を用いて回数算出部の算出方式をより具体的に説明する。
【００４２】
図４は、実施の形態１に従う回数算出部の算出方式を説明するための図である。図４では、変換ブロック２２，２４の変換比は“１”であることから、図解を容易にするために変換ブロックは図示していない。なお、以下の説明では、ブロックの入力値および出力値を（入力値，出力値）で表現する。
【００４３】
図４を参照して、０番目のクロックでは、入力ブロック２１の入出力値は（１，１）であり、演算ブロック２３の入出力値は（１，２）であり、出力ブロック２５の入出力値は（２，２）である。１番目のクロックでは、入力ブロック２１の入出力値は（１，１）であり、演算ブロック２３の入力値は（１，３）であり、出力ブロック２５の入力値は（３，３）である。
【００４４】
このことから、０番目のクロックと１番目のクロックとで、入力ブロック２１の入出力値は同一である。ここで、入力ブロック２１の入出力値が、２番目のクロックで（２，２）、３番目のクロックで（２，２）と変化していく場合、すなわち、２ｎ番目（ｎは０以上の整数）および（２ｎ＋１）番目のクロックで、入出力値が同じである場合を想定する。この場合、回数算出部３３Ａは、入力ブロック２１について、同一の入出力データの連続回数を“２”と算出する。
【００４５】
一方、０番目のクロックと１番目のクロックとで、演算ブロック２３および出力ブロック２５の入出力データは異なる。この場合、回数算出部３３Ａは、演算ブロック２３および出力ブロック２５の各々について、同一の入出力データの連続回数を“１”と算出する。
【００４６】
再び、図３を参照して、決定部３４Ａは、所定のクロック周波数Ｆｓと、一連のブロックの各々についての連続回数とに基づいて、所定のクロック周波数Ｆｓよりも低いクロック周波数で動作させる対象ブロックを選択し、選択した対象ブロックのクロック周波数を決定する。なお、対象ブロックのクロック周波数は、所定のクロック周波数Ｆｓを、対象ブロックについての連続回数で除算した値である。
【００４７】
具体的には、決定部３４Ａは、連続回数が“２”以上のブロックを対象ブロックとして選択する。図４の例では、入力ブロック２１のみが対象ブロックとして選択される。ここで、図４の例では連続回数が“２”であるため、入力ブロック２１のクロック周波数を１／２にしても、シミュレーション結果は変化しない。そのため、決定部３４Ａは、所定のクロック周波数Ｆｓの１／２を、入力ブロック２１のクロック周波数として決定する。このように、決定部３４Ａは、所定のクロック周波数Ｆｓ（例えば、１００Ｈｚ）を連続回数（例えば、２）で除算した値を、対象ブロック（例えば、入力ブロック２１）の新たなクロック周波数（例えば、５０Ｈｚ）として決定する。
【００４８】
また、決定部３４Ａは、所定のクロック周波数Ｆｓを、演算ブロック２３および出力ブロック２５の各々のクロック周波数として決定する。このように、対象ブロック以外の各ブロックについては、新たなクロック周波数が設定されることなく現在のクロック周波数が維持される。
【００４９】
決定部３４Ａは、一連のブロックの各々に決定したクロック周波数を出力する。具体的には、決定部３４Ａは、入力ブロック２１にクロック周波数ｆ１を出力し、演算ブロック２３にクロック周波数ｆ２を出力し、出力ブロック２５にクロック周波数ｆ３を出力する。図４の例では、クロック周波数ｆ１，ｆ２，ｆ３は、それぞれＦｓ／２，Ｆｓ，Ｆｓとなる。
【００５０】
変換比設定部３５Ａは、一連のブロックの各々を、決定部３４Ａにより決定されたクロック周波数で適切に動作させるために、変換ブロック２２，２４の変換比を設定する。具体的には、変換比設定部３５Ａは、対象ブロックを、決定部３４Ａにより決定された新たなクロック周波数で動作させ、対象ブロック以外の残余のブロックを所定のクロック周波数Ｆｓで動作させるモデル２０のシミュレーションが実行されるように、変換ブロック２２，２４の変換比を設定する。
【００５１】
ここで、入力ブロック２１をクロック周波数ｆ１で動作させ、演算ブロック２３をクロック周波数ｆ２で動作させ、出力ブロック２５をクロック周波数ｆ３で動作させる場合を想定する。この場合、変換比設定部３５Ａは、変換ブロック２２の変換比Ｄ１をｆ１：ｆ２（すなわち、ｆ２／ｆ１）に設定し、変換ブロック２４の変換比Ｄ２をｆ２：ｆ３（すなわち、ｆ３／ｆ２）に設定する。
【００５２】
詳細には、入力ブロック２１に接続される変換ブロック２２に接続された演算ブロック２３は、入力ブロック２１の後に処理を実行する。そこで、変換比設定部３５Ａは、入力ブロック２１のクロック周波数ｆ１に対する、演算ブロック２３のクロック周波数ｆ２の比であるｆ２／ｆ１を変換ブロック２２の変換比として設定する。
【００５３】
また、出力ブロック２５は、演算ブロック２３の後に処理を実行するため、変換比設定部３５Ａは、演算ブロック２３のクロック周波数ｆ２に対する、出力ブロック２５のクロック周波数ｆ３の比率であるｆ３／ｆ２を変換ブロック２４の変換比として設定する。このように、変換比を設定することにより、各ブロックを決定されたクロック周波数で動作させることができる。
【００５４】
図５は、シミュレーション時間が削減される理由を説明するための図である。図５では、入力ブロック２１のクロック周波数ｆ１は“Ｆｓ／２”であり、演算ブロック２３のクロック周波数ｆ２は“Ｆｓ”であり、出力ブロック２５のクロック周波数ｆ３は“Ｆｓ”であるとする。そのため、変換ブロック２２の変換比は“２”である。一方、変換ブロック２４の変換比は“１”となることから、図解を容易にするために変換ブロック２４は図示していない。
【００５５】
図５を参照して、０番目のクロックでは、入力ブロック２１の入出力値は（１，１）であり、変換ブロック２２の入出力値は（１，１）であり、演算ブロック２３の入出力値は（１，２）であり、出力ブロック２５の入出力値は（２，２）である。
【００５６】
ここで、変換ブロック２２は、入力側に接続された入力ブロック２１の出力値を保持し、当該保持された出力値を出力側に接続された演算ブロック２３に出力するように構成される。そのため、１番目のクロックでは、変換ブロック２２の入出力値が（なし、１）となっている。これは、クロック周波数がＦｓ／２に設定された入力ブロック２１の処理は実行されず、入力ブロック２１の出力値を保持した変換ブロック２２が、当該出力値を演算ブロック２３に出力することを意味している。したがって、演算ブロック２３の入力値は（１，３）であり、出力ブロック２５の入力値は（３，３）となる。
【００５７】
図５に示すように、１番目のクロックでは、入力ブロック２１の処理を実行する必要がないため、０番目のクロックと比べてシミュレーション時間が削減される。具体的には、（２ｎ＋１）番目のクロックでは、入力ブロック２１の処理を実行する必要がないため、全体としてのシミュレーション時間が大幅に削減されることになる。
【００５８】
＜処理手順＞
図６は、実施の形態１に従うプロセッサ１０２の処理手順の一例を示すフローチャートである。図６を参照して、プロセッサ１０２は、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合のモデル２０のシミュレーションを実行し、シミュレーション結果を取得する（ステップＳ６）。
【００５９】
プロセッサ１０２は、一連のブロックの中から解析対象のブロックを選択する（ステップＳ８）。例えば、プロセッサ１０２は、処理順序が最も早い入力ブロック２１を最初に選択する。解析対象のブロック（以下、「解析ブロック」とも称する。）の選択方式は任意である。
【００６０】
プロセッサ１０２は、解析ブロックに関する変数を初期化する（ステップＳ１０）。具体的には、入出力データの総数をＮ（Ｎは１以上の整数）、総数Ｎを分割する場合の１セット当たりの入出力データ数をｎ（ｎは１以上の整数）、セット番号をｉ（ｉは０以上の整数）と定義する。プロセッサ１０２は、初期値として、入出力データの総数（例えば、６）をＮに代入し、ｎに１を代入し、ｉに０を代入する。
【００６１】
プロセッサ１０２は、総数Ｎをｎ個ごとのセットに分割する（ステップＳ１２）。例えば、総数Ｎが“６”である場合には、６クロック分の入出力データが存在する。このとき、ｎが“１”であれば総数Ｎは０番目〜５番目のクロックの入出力データに６分割される。この場合、セット数が６つであるため、セット番号ｉは０〜５となる。また、総数Ｎが“６”でありｎが“２”であれば総数Ｎは、０番目および１番目のクロックの入出力データ、２番目および３番目のクロックの入出力データ、４番目および５番目のクロックの入出力データに３分割される。この場合、セット数が３つであるため、セット番号ｉは０〜２となる。
【００６２】
続いて、プロセッサ１０２は、セット番号ｉのｎ個の連続する入出力データを比較する（ステップＳ１４）。プロセッサ１０２は、比較結果に基づいて、ｎ個の入出力データが同一であるか否かを判断する（ステップＳ１６）。例えば、ｎが“１”の場合には、入出力データは１つしかないため、同一と判断される。ｎが“２”の場合には、１セットに含まれる２つの入出力データ（例えば、０番目および１番目のクロックの入出力データ）が同一であるか否かが判断される。
【００６３】
ｎ個の入出力データが同一ではない場合には（ステップＳ１６においてＮＯ）、後述するステップＳ２６の処理を実行する。ｎ個の入出力データが同一である場合には（ステップＳ１６においてＹＥＳ）、プロセッサ１０２は、セット番号ｉをインクリメントする（ステップＳ１８）。すなわち、プロセッサ１０２は、セット番号ｉを“１”増加する。
【００６４】
プロセッサ１０２は、セット番号ｉが最後のセット番号であるか否かを判断する（ステップＳ２０）。セット番号ｉが最後のセット番号ではない場合には（ステップＳ２０においてＮＯ）、プロセッサ１０２はステップＳ１４の処理を実行する。セット番号ｉが最後のセット番号である場合には（ステップＳ２０においてＹＥＳ）、１セット当たりの入出力データ数ｎをインクリメントする（ステップＳ２２）。続いて、プロセッサ１０２は、１セット当たりの入出力データ数ｎが総数Ｎよりも大きいか（すなわち、ｎ＞Ｎを満たす）か否かを判断する（ステップＳ２４）。
【００６５】
ｎ＞Ｎではない場合には（ステップＳ２４においてＮＯ）、プロセッサ１０２は、ステップＳ１２の処理を実行する。ｎ＞Ｎである場合には（ステップＳ２４においてＹＥＳ）、プロセッサ１０２は、（ｎ−１）回を連続回数として用いることにより、解析ブロックのクロック周波数を決定する（ステップＳ２６）。具体的には、プロセッサ１０２は、所定のクロック周波数Ｆｓを（ｎ−１）で除算した値を、解析ブロックのクロック周波数として決定する。なお、ステップＳ２６においては、少なくともｎは２以上であるため、（ｎ−１）は１以上となる。
【００６６】
プロセッサ１０２は、一連のブロックのうち、解析ブロックとして選択されていないブロックが存在するか否かを判断する（ステップＳ２８）。当該ブロックが存在する場合には（ステップＳ２８においてＮＯ）、プロセッサ１０２はステップＳ８の処理を実行する。すなわち、プロセッサ１０２は、選択されていないブロックを解析ブロックとして選択して、ステップＳ１０以降の処理を実行する。
【００６７】
当該ブロックが存在しない場合には（ステップＳ２８においてＮＯ）、プロセッサ１０２は、一連のブロックの各々について、当該ブロックを決定したクロック周波数で適切に動作させるために、各ブロック間に配置された変換ブロックの変換比を設定して（ステップＳ３０）、処理を終了する。
【００６８】
＜利点＞
実施の形態１によると、一連のブロックのうちの１以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果を変化させない範囲でブロックのクロック周波数を低減するため、コンパイラ等のシミュレータ内部の処理に依存せず、シミュレーション結果の精度も担保される。また、特許文献１のように、簡易モデルおよび詳細モデルの両方の開発およびメンテナンスも必要ないし、簡易モデルおよび詳細モデルをメモリに格納することによるメモリ容量の増大もない。さらに、シミュレーション時間の削減量に応じて簡易モデルの構成を変更する煩雑な作業も不要である。
【００６９】
このように、実施の形態１によると、モデルベース開発におけるシミュレーションの実行結果を変化させることなく、シミュレーション時間を容易に削減できる。
【００７０】
［実施の形態２］
実施の形態２では、各ブロックのクロック周波数を低減した場合のシミュレーション結果が許容範囲内であるか否かを確認しながら、各ブロックのクロック周波数を決定していく構成について説明する。
【００７１】
＜機能構成＞
図７は、実施の形態２に従う改善プログラム１１６Ｂの機能構成の一例を示すブロック図である。図７を参照して、情報処理装置１００は、改善プログラム１１６Ｂを実行することによって実現される主たる機能構成として、データ取得部３１Ｂと、クロック周波数決定部３２Ｂと、変換比設定部３５Ｂと、優先順位設定部３６Ｂと、誤差判定部３８Ｂとを含む。また、情報処理装置１００は、主記憶装置１１０および補助記憶装置１２０によって実現される出力データ保持部４０Ｂをさらに含む。
【００７２】
出力データ保持部４０Ｂは、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合のモデル２０のシミュレーション結果を保持する。シミュレーション結果は、モデル２０のクロック毎の出力データ（すなわち、最終段に配置された出力ブロック２５の出力データ）を含む。この出力データはモデル２０の出力期待値となる。具体的には、出力期待値は、一連のブロックのクロック周波数を所定のクロック周波数Ｆｓから変更する前のモデル２０の出力データＤｂｅである。
【００７３】
優先順位設定部３６Ｂは、一連のブロックの優先順位を設定する。具体的には、優先順位設定部３６Ｂは、一連のブロックにおいて、処理順序が後になるブロックほど優先順位を高く設定する。モデル２０の場合には、一連のブロックにおいて、入力ブロック２１、演算ブロック２３、出力ブロック２５の順序で処理が実行される。そのため、出力ブロック２５の優先順位が最も高く、演算ブロック２３の優先順位が次に高く、入力ブロック２１の優先順位が最も低く設定される。
【００７４】
クロック周波数決定部３２Ｂは、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合のモデル２０のシミュレーション結果に少なくとも基づいて、一連のブロックのうち、所定のクロック周波数Ｆｓよりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。具体的には、クロック周波数決定部３２Ｂは、決定部３４Ｂと、選択部３７Ｂとを含む。
【００７５】
選択部３７Ｂは、優先順位設定部３６Ｂにより設定された優先順位に基づいて、所定のクロック周波数Ｆｓより所定周波数ｋ（例えば、１Ｈｚ）だけ低いクロック周波数Ｆ１（＝Ｆｓ−ｋ）で動作させる対象ブロックＢＬ１を選択する。具体的には、選択部３７Ｂは、一連のブロックのうち優先順位が最も高く設定されたブロック（例えば、出力ブロック２５）を最初の対象ブロックとして選択する。このように、処理順序が後になるブロックを対象ブロックとして優先的に選択する理由は、クロック周波数を低減することで影響を与えるブロックを少なくするためである。
【００７６】
決定部３４Ｂは、所定のクロック周波数Ｆｓより所定周波数ｋだけ低いクロック周波数Ｆ１を、対象ブロックＢＬ１のクロック周波数として仮決定する。なお、決定部３４Ｂは、所定のクロック周波数Ｆｓを、対象ブロックＢＬ１以外の残余のブロックのクロック周波数として仮決定する。決定部３４Ｂは、一連のブロックの各々に仮決定したクロック周波数を出力する。例えば、対象ブロックＢＬ１が出力ブロック２５である場合、クロック周波数ｆ１，ｆ２は所定のクロック周波数Ｆｓであり、クロック周波数ｆ３はクロック周波数Ｆ１である。
【００７７】
変換比設定部３５Ｂは、一連のブロックの各々を、決定部３４Ｂにより仮決定されたクロック周波数で適切に動作させるために、変換ブロック２２，２４の変換比を設定する。具体的には、変換比設定部３５Ｂは、対象ブロックＢＬ１をクロック周波数Ｆ１で動作させ、残余のブロックを所定のクロック周波数Ｆｓで動作させるモデル２０のシミュレーションが実行されるように、変換ブロック２２，２４の変換比を設定する。
【００７８】
データ取得部３１Ｂは、対象ブロックＢＬ１をクロック周波数Ｆ１で動作させ、残余のブロックを所定のクロック周波数Ｆｓで動作させた場合のモデル２０のシミュレーション結果として、当該モデル２０のクロック毎の出力データを出力ブロック２５から取得する。すなわち、データ取得部３１Ｂは、クロック周波数が変更された後のモデル２０のクロック毎の出力データＤａｆを取得する。
【００７９】
また、データ取得部３１Ｂは、クロック毎の出力期待値を出力データ保持部４０Ｂから取得する。すなわち、データ取得部３１Ｂは、モデル２０のクロック毎の出力データＤｂｅを取得する。
【００８０】
誤差判定部３８Ｂは、クロック毎の出力データＤａｆと出力データＤｂｅとの誤差ΔＤが予め定められた許容範囲内であるか否かを判定する。許容範囲は、ユーザにより任意に定められ、シミュレーション結果に実質的に影響を与えない範囲で設定される。
【００８１】
誤差ΔＤが許容範囲内である場合、次のような処理が実行される。具体的には、決定部３４Ｂは、クロック周波数Ｆ１よりさらに所定周波数ｋだけ低いクロック周波数Ｆ２（＝Ｆ１−ｋ）を、対象ブロックＢＬ１のクロック周波数として仮決定し、所定のクロック周波数Ｆｓを、残余のブロックのクロック周波数として仮決定する。変換比設定部３５Ｂは、対象ブロックＢＬ１をクロック周波数Ｆ２で動作させ、残余のブロックを所定のクロック周波数Ｆｓで動作させるモデル２０のシミュレーションが実行されるように、変換ブロック２２，２４の変換比を設定する。
【００８２】
データ取得部３１Ｂは、対象ブロックＢＬ１をクロック周波数Ｆ２で動作させ、残余のブロックを所定のクロック周波数Ｆｓで動作させた場合のモデル２０のクロック毎の出力データＤａｆ１を取得する。誤差判定部３８Ｂは、クロック毎の出力データＤａｆ１と出力データＤｂｅとの誤差ΔＤ１が許容範囲内であるか否かを判定する。以降、同様の処理が繰り返される。
【００８３】
一方、誤差ΔＤが許容範囲外である場合、シミュレーション結果の精度が許容されないことを意味するため、次のような処理が実行される。決定部３４Ｂは、対象ブロックＢＬ１のクロック周波数を所定のクロック周波数Ｆｓとして決定する（すなわち、本決定する）。このように、シミュレーション結果の精度を担保するため、決定部３４Ｂは、対象ブロックＢＬ１のクロック周波数として仮決定されたクロック周波数Ｆ１を採用せずに、元の所定のクロック周波数Ｆｓを採用する。
【００８４】
選択部３７Ｂは、当該対象ブロックＢＬ１の次に優先順位が高いブロックを、クロック周波数Ｆ１で動作させる新たな対象ブロックＢＬ２として選択する。例えば、元の対象ブロックＢＬ１が出力ブロック２５であった場合には、演算ブロック２３が対象ブロックＢＬ２として選択される。決定部３４Ｂは、対象ブロックＢＬ２のクロック周波数をクロック周波数Ｆ１として仮決定し、所定のクロック周波数Ｆｓを、対象ブロックＢＬ１，ＢＬ２以外の残余のブロックのクロック周波数として仮決定する。なお、上述したように、対象ブロックＢＬ１のクロック周波数は、所定のクロック周波数Ｆｓに本決定されている。
【００８５】
変換比設定部３５Ｂは、対象ブロックＢＬ２をクロック周波数Ｆ１で動作させ、対象ブロックＢＬ２以外の残余のブロックを所定のクロック周波数Ｆｓで動作させた場合のモデル２０のシミュレーションが実行されるように、変換ブロック２２，２４の変換比を設定する。以降、対象ブロックＢＬ２に対して、対象ブロックＢＬ１と同様の処理が繰り返される。
【００８６】
上述のように、シミュレーション結果が許容範囲外となるまで対象ブロックのクロック周波数を下げていき、許容範囲外になる直前に仮決定されたクロック周波数が、対象ブロックのクロック周波数として本決定される。この処理が各ブロックについて実行される。また、複数の出力ブロックを有するモデル（例えば、モデル１１４等）の場合、出力ブロック毎に許容範囲が定められ、当該許容範囲と誤差とが比較される。
【００８７】
＜処理手順＞
図８は、実施の形態２に従うプロセッサ１０２の処理手順の一例を示すフローチャートである。図８を参照して、プロセッサ１０２は、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合のモデル２０のシミュレーション結果を取得する（ステップＳ３６）。具体的には、プロセッサ１０２は、クロック毎の出力期待値として、当該モデル２０のクロック毎の出力データをメモリに格納する。
【００８８】
プロセッサ１０２は、モデル２０の出力データの許容範囲を設定する（ステップＳ３８）。なお、複数の出力ブロックが含まれる場合には、各出力ブロックの出力データについての許容範囲が設定される。
【００８９】
プロセッサ１０２は、変数を初期化する（ステップＳ４０）。具体的には、モデル２０における入力ブロックから出力ブロックまでの処理経路に含まれる各ブロックの総数をＭ、ブロック番号をｊ、ブロックのクロック周波数をＣＬと定義する。プロセッサ１０２は、初期値として、各ブロックの総数（例えば、３）をＭに代入し、ｊに０を代入し、ＣＬに所定のクロック周波数Ｆｓを代入する。
【００９０】
プロセッサ１０２は、モデル２０の処理順序に従う優先順位に基づいて、各ブロックにブロック番号を付与する（ステップＳ４２）。具体的には、プロセッサ１０２は、処理経路を出力ブロック側からたどり、ブロック番号を付与する。例えば、出力ブロック２５、演算ブロック２３、入力ブロック２１のブロック番号ｊは、それぞれ０、１、２となる。
【００９１】
プロセッサ１０２は、一連のブロックの各々に現在設定（すなわち、仮決定、または本決定）されているクロック周波数で、各ブロックを動作させることによりモデル２０のシミュレーションを実行し、シミュレーション結果を取得する（ステップＳ４４）。プロセッサ１０２は、クロック毎に、当該シミュレーション結果に基づくモデル２０の出力データと出力期待値との誤差を算出する（ステップＳ４６）。プロセッサ１０２は、算出された誤差が許容範囲内であるか否かを判断する（ステップＳ４８）。
【００９２】
誤差が許容範囲内である場合には（ステップＳ４８においてＹＥＳ）、プロセッサ１０２は、ｊ番目のブロックのクロック周波数ＣＬを所定周波数ｋだけ低減したクロック周波数に仮決定する（ステップＳ５０）。プロセッサ１０２は、クロック周波数ＣＬが閾値（例えば、１Ｈｚ）以下であるか否かを判断する（ステップＳ５４）。
【００９３】
クロック周波数ＣＬが閾値以下である場合には（ステップＳ５４においてＹＥＳ）、後述するステップＳ５８の処理を実行する。クロック周波数ＣＬが閾値よりも大きい場合には（ステップＳ５４においてＮＯ）、プロセッサ１０２は、ｊ番目のブロックを仮決定されたクロック周波数ＣＬで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために、各ブロック間に配置された変換ブロックの変換比を設定する（ステップＳ５６）。続いて、プロセッサ１０２は、ステップＳ４４においてシミュレーションを実行する。
【００９４】
一方、ステップＳ４８において、誤差が許容範囲外である場合には（ステップＳ４８においてＮＯ）、プロセッサ１０２は、ｊ番目のブロックのクロック周波数ＣＬを前回仮決定されたクロック周波数ＣＬとして本決定する（ステップＳ５２）。続いて、プロセッサ１０２は、ｊ番目のブロックを本決定されたクロック周波数ＣＬで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために、各ブロック間に配置された変換ブロックの変換比を設定する（ステップＳ５３）。
【００９５】
次に、プロセッサ１０２は、ブロック番号ｊをインクリメントする（ステップＳ５８）。すなわち、プロセッサ１０２は、ブロック番号ｊを“１”増加する。これにより、クロック周波数を低減させる対象ブロックが変更される。プロセッサ１０２は、ブロック番号ｊがブロック総数Ｍよりも大きいか（すなわち、ｊ＞Ｍを満たす）か否かを判断する（ステップＳ６０）。
【００９６】
ｊ＞Ｍではない場合には（ステップＳ６０においてＮＯ）、プロセッサ１０２は、ｊ番目のブロックのクロック周波数ＣＬを所定周波数ｋだけ低減したクロック周波数に仮決定する（ステップＳ６２）。続いて、プロセッサ１０２は、ｊ番目のブロックを仮決定されたクロック周波数ＣＬで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために変換ブロックの変換比を設定して（ステップＳ６４）、ステップＳ４４においてシミュレーションを実行する。
【００９７】
一方、ｊ＞Ｍである場合には（ステップＳ６０においてＹＥＳ）、プロセッサ１０２は処理を終了する。すなわち、プロセッサ１０２は、一連のブロックの各々のブロックのクロック周波数を本決定し、当該本決定されたクロック周波数に基づく変換比を設定した後、処理を終了する。
【００９８】
＜利点＞
実施の形態２によると、一連のブロックのうちの１以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果は多少変化するが許容範囲内でブロックのクロック周波数を低減するため、シミュレーション結果の精度も担保される。
【００９９】
［実施の形態３］
実施の形態２では、各ブロックの処理順序に基づいて優先順位を設定する構成について説明したが、実施の形態３では、各ブロックの出力データの変動率に基づいて優先順位を設定する構成について説明する。
【０１００】
＜機能構成＞
図９は、実施の形態３に従う改善プログラム１１６Ｃの機能構成の一例を示すブロック図である。情報処理装置１００は、改善プログラム１１６Ｃを実行することによって実現される主たる機能構成として、データ取得部３１Ｃと、クロック周波数決定部３２Ｃと、変換比設定部３５Ｃと、優先順位設定部３６Ｃと、誤差判定部３８Ｃと，変動率算出部３９Ｃとを含む。クロック周波数決定部３２Ｃは、決定部３４Ｃと、選択部３７Ｃとを含む。データ取得部３１Ｃ、クロック周波数決定部３２Ｃ、変換比設定部３５Ｃ、誤差判定部３８Ｃは、それぞれ図７中のデータ取得部３１Ｂ、クロック周波数決定部３２Ｂ、変換比設定部３５Ｂ、誤差判定部３８Ｂと実質的に同一である。
【０１０１】
出力データ保持部４０Ｃは、実施の形態２と同様に、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合のモデル２０のクロック毎の出力データＤｂｅを含む。出力データ保持部４０Ｃは、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合の各ブロックの出力データをさらに含む。
【０１０２】
変動率算出部３９Ｃは、出力データ保持部４０Ｃに格納された各ブロックの出力データの波形に基づいて、各ブロックの出力変動率を算出する。
【０１０３】
図１０は、実施の形態３に従う出力変動率の算出方式を説明するための図である。具体的には、図１０（ａ）は、出力データの波形の一例を示す図である。図１０（ｂ）は、出力データの波形の他の例を示す図である。ここで、出力変動率は、出力データの出力値の平均値に対する、当該出力データの振幅値である。図１０（ａ）の出力データの場合、出力変動率は、０．０４（＝４０／１０００）となる。図１０（ｂ）の出力データの場合、出力変動率は、０．２（＝２０／１００）となる。そのため、図１０（ａ）の出力データを有するブロックの方が、図１０（ｂ）の出力データを有するブロックよりも出力変動率が小さく、出力誤差は小さいとみなされる。
【０１０４】
再び、図９を参照して、優先順位設定部３６Ｃは、一連のブロックの各々の出力変動率に基づいて、一連のブロックの優先順位を設定する。具体的には、優先順位設定部３６Ｃは、一連のブロックにおいて、出力変動率が小さいブロックほど優先順位を高く設定する。そのため、図１０（ａ）の出力データを有するブロックの方が、図１０（ｂ）の出力データを有するブロックの方よりも、優先順位が高く設定される。
【０１０５】
そして、選択部３７Ｃにより、優先順位が高く設定されたブロックが最初の対象ブロックとして選択される。このように、出力変動率が小さいブロックを対象ブロックとして優先的に選択する理由は、クロック周波数を低減した際の出力誤差が小さいためである。
【０１０６】
＜処理手順＞
図１１は、実施の形態３に従うプロセッサ１０２の処理手順の一例を示すフローチャートである。図１１を参照して、ステップＳ６６〜Ｓ７０の処理は、それぞれ図８中のステップＳ３６〜ステップＳ４０の処理と同様であるため、その詳細な説明は繰り返さない。プロセッサ１０２は、所定のクロック周波数Ｆｓで一連のブロックを動作させた場合の各ブロックの出力データに基づいて、各ブロックの出力変動率を算出する（ステップＳ７１）。
【０１０７】
続いて、プロセッサ１０２は、各ブロックの出力変動率に従う優先順位に基づいて、各ブロックにブロック番号を付与する（ステップＳ７２）。具体的には、プロセッサ１０２は、出力変動率が小さいブロックからブロック番号を付与していく。例えば、演算ブロック２３、入力ブロック２１、出力ブロック２５の順に出力変動率が小さい場合（すなわち、優先順位が高い場合）には、演算ブロック２３、入力ブロック２１、出力ブロック２５のブロック番号ｊは、それぞれ０、１、２となる。
【０１０８】
ステップＳ７４〜ステップＳ９４の処理は、それぞれ図８中のステップＳ４４〜ステップＳ６４の処理と同様であるため、その詳細な説明は繰り返さない。
【０１０９】
＜利点＞
実施の形態３によると、実施の形態２と同様に、許容範囲内で各ブロックのクロック周波数が低減されるためシミュレーション時間を削減できるとともにシミュレーション結果の精度を担保できる。実施の形態３では、さらに、クロック周波数を低減する対象ブロックを選択する時間を短縮できる。
【０１１０】
［その他］
上述のフローチャートで説明したような制御を実行させるプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、ＲＯＭ、ＲＡＭおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０１１１】
上述した実施の形態において、その他の実施の形態で説明した処理や構成を適宜採用して実施する場合であってもよい。
【０１１２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１１３】
１１，２１  入力ブロック、１２Ａ〜１２Ｅ，２２，２４  変換ブロック、１３Ａ〜１３Ｃ，２３  演算ブロック、１４Ａ，１４Ｂ，２５  出力ブロック、２０，１１４  モデル、３１Ａ〜３１Ｃ  データ取得部、３２Ａ〜３２Ｃ  クロック周波数決定部、３３Ａ  回数算出部、３４Ａ〜３４Ｃ  決定部、３５Ａ〜３５Ｃ  変換比設定部、３６Ｂ，３６Ｃ  優先順位設定部、３７Ｂ，３７Ｃ  選択部、３８Ｂ，３８Ｃ  誤差判定部、３９Ｃ  変動率算出部、４０Ｂ，４０Ｃ  出力データ保持部、１００  情報処理装置、１０２  プロセッサ、１１０  主記憶装置、１１２  実行環境プログラム、１１６Ａ〜１１６Ｃ  改善プログラム、１２０  補助記憶装置。
【図１】
2019200524.tif 000003
【図２】
2019200524.tif 000004
【図３】
2019200524.tif 000005
【図４】
2019200524.tif 000006
【図５】
2019200524.tif 000007
【図６】
2019200524.tif 000008
【図７】
2019200524.tif 000009
【図８】
2019200524.tif 000010
【図９】
2019200524.tif 000011
【図１０】
2019200524.tif 000012
【図１１】
2019200524.tif 000013