JP2019200524A - プログラム、情報処理装置、および情報処理方法 - Google Patents
プログラム、情報処理装置、および情報処理方法 Download PDFInfo
- Publication number
- JP2019200524A JP2019200524A JP2018093854A JP2018093854A JP2019200524A JP 2019200524 A JP2019200524 A JP 2019200524A JP 2018093854 A JP2018093854 A JP 2018093854A JP 2018093854 A JP2018093854 A JP 2018093854A JP 2019200524 A JP2019200524 A JP 2019200524A
- Authority
- JP
- Japan
- Prior art keywords
- block
- clock frequency
- blocks
- series
- output
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3234—Power saving characterised by the action undertaken
- G06F1/324—Power saving characterised by the action undertaken by lowering clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/26—Power supply means, e.g. regulation thereof
- G06F1/32—Means for saving power
- G06F1/3203—Power management, i.e. event-based initiation of a power-saving mode
- G06F1/3206—Monitoring of events, devices or parameters that trigger a change in power modality
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
【課題】モデルベース開発におけるシミュレーション時間を容易に削減することができる。【解決手段】プログラムは、プロセッサと、メモリとを備える情報処理装置において実行される。プログラムは、プロセッサに、入力ブロック、1以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップとを実行させる。【選択図】図3
Description
本開示は、プログラム、情報処理装置、および情報処理方法に関し、例えば、モデルベース開発におけるモデルのシミュレーションに利用されるプログラム、情報処理装置、および情報処理方法に関する。
システム開発においては、Vモデルのプロセスを用いて開発されることがある。Vモデルでは、例えば、コーディング工程より前の工程において、開発者がドキュメントを作成し、有識者がレビューし、レビュー結果を次工程の入力とすることで開発を進めていた。
しかし、システムの大規模化、複雑化に伴い、ドキュメントのレビューだけでは、最終段階のシステム挙動および性能を確認するシステムテストで問題が発生する場合がある。なぜなら、システム挙動および性能が、ドキュメントに基づく単純計算と実システムとで異なるためである。この場合、Vモデルの最初からやり直しが発生し、開発完了日程が遅延し、製品投入タイミングを逃してしまう。このような問題を解決するため、コーディングより前の工程で、ドキュメントだけでなく、モデルを使用して開発するモデルベース開発が広まりつつある。
例えば、特開2008−215254号公報(特許文献1)は、詳細モデルベースとは異なる特定系の簡易モデルベースを、エンジン制御のために車両ECU(engine control unit)に実装するためのモデルベース開発における簡易化手法を開示している。この手法では、簡易モデルベースを実機に適合させるための適合値は、簡易モデルベースにおいて逆算され、適合値を逆算するのに必要な値は、詳細モデルベースにより算出される。
モデルベース開発では、各工程で複数のブロックから構成されるモデルを作成し、モデルのシミュレーションを行ない、挙動および性能を見積もりながら開発が進められる。モデルのシミュレーションは、机上の単純計算より高精度にシステム挙動および性能を見積もることができる。また、実システムで発生させにくい、または発生させることができない故障パターンの再現等も行なうことができる。
したがって、モデルベース開発では、システム挙動および性能を確認するため、各種条件で何度もシミュレーションが実行される。しかし、モデルが高精度であるほど、シミュレーション時間が長くなる問題がある。特許文献1では、車両ECUの計算時間が膨大となるために、詳細モデルベースとは異なる簡易モデルベースを利用している。しかしながら、例えば、シミュレーション時間の所望の削減量に応じて、簡易モデルの構成の変更等の煩雑な作業が必要となり、容易にシミュレーション時間を削減することができない。
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
一実施の形態に従うプログラムは、プロセッサと、メモリとを備える情報処理装置において実行される。プログラムは、プロセッサに、入力ブロック、1以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップを実行させる。プログラムは、プロセッサに、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップをさらに実行させる。
一実施の形態に従う情報処理装置は、プロセッサと、メモリとを備える。プロセッサは、入力ブロック、1以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。プロセッサは、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、各ブロック間に配置された変換ブロックの変換比を設定する。
一実施の形態に従う情報処理方法は、情報処理装置のプロセッサにより実行される。情報処理方法は、入力ブロック、1以上の演算ブロックおよび出力ブロックを含む一連のブロックを所定のクロック周波数で動作させた場合のモデルのシミュレーション結果に基づいて、所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップを含む。情報処理方法は、対象ブロックを所定のクロック周波数よりも低い新たなクロック周波数で動作させ、残余のブロックを所定のクロック周波数で動作させるモデルのシミュレーションが実行されるように、変換ブロックの変換比を設定するステップをさらに含む。
一実施の形態によれば、モデルベース開発におけるシミュレーション時間を容易に削減することができる。
以下、各実施形態について図面を参照して詳しく説明する。なお、同一または相当する部分には同一の参照符号を付して、その説明を繰返さない。
図1は、本実施の形態に従う情報処理装置100のハードウェア構成および動作概要を説明するための図である。図1を参照して、情報処理装置100は、プロセッサ102と、補助記憶装置120と、主記憶装置110とを含む。情報処理装置100は、自装置への操作入力を受け付けるための各種の入力装置(例えば、キーボード、ボタン、マウス)、各種情報を表示するためのディスプレイ、各種データを通信するための通信インターフェイス等を含む構成であってもよい。
本実施の形態に従う情報処理装置100は、例えば、ディスプレイを備える据置型のパーソナルコンピュータである。ただし、情報処理装置100は、これに限られず、後述する演算機能を有する装置であればよく、例えば、ラップトップ型のパーソナルコンピュータ等であってもよい。
プロセッサ102は、典型的には、CPU(Central Processing Unit)等の演算処理部であり、補助記憶装置120にインストールされているOS(Operating System)、アプリケーションプログラムを含む各種プログラムを読出して、主記憶装置110に展開しつつ実行する。
主記憶装置110は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性記憶媒体であり、プロセッサ102によって実行されるOSを含む各種プログラムのコードの他、各種プログラムの実行に必要な各種ワークデータを保持する。補助記憶装置120は、ハードディスクあるいはSSD(Solid State Drive)などの不揮発性記憶媒体であり、OSを含む各種プログラムの他、各種設計情報などを保持する。なお、以下の説明では、主記憶装置110および補助記憶装置120をメモリと総称する場合がある。
本実施の形態では、補助記憶装置120は、シミュレーション実行環境プログラム(以下、単に「実行環境プログラム」とも称する。)112と、シミュレーション対象モデル(以下、単に「モデル」とも称する。)114と、シミュレーション時間改善プログラム(以下、単に「改善プログラム」とも称する。)116とを記憶している。
実行環境プログラム112は、モデルベース開発に利用されるシミュレーションの実行環境を提供するプログラムであり、例えば、MathWorks(登録商標)社のMATLAB(登録商標)上で動作するSimulink(登録商標)である。
開発者は、実行環境プログラム112を用いて目的とするプログラムのモデル114を記述する。モデル114は、ブロックと呼ばれる機能単位、および機能単位間の入出力関係を示す結線の組み合わせとして記述される。
図2は、本実施の形態に従うモデル114の一例を示す図である。図2を参照して、モデル114は、入力ブロック11と、変換ブロック12A〜12Eと、演算ブロック13A〜13Cと、出力ブロック14A,14Bとを含む。モデル114は、これらのブロックが入出力関係を示す結線によってつなぎ合わされた集合体である。
以下では、変換ブロック12A〜12Eの各々に共通の構成や機能を説明する際にはそれらを変換ブロック12と総称し、演算ブロック13A〜13Cの各々に共通の構成や機能を説明する際にはそれらを演算ブロック13と総称し、出力ブロック14A,14Bの各々に共通の構成や機能を説明する際にはそれらを出力ブロック14と総称する。
入力ブロック11は、モデル外部からデータの入力を受け、当該データを出力するブロックである。例えば、入力ブロック11は、外部からファイルを読み込み、読み込んだ値を出力する。
変換ブロック12は、設定された変換比でクロック周波数を変換する。具体的には、変換ブロック12は、自身の入力側に接続されたブロックを動作させるクロック周波数を、設定された変換比で変換して出力する。
例えば、入力ブロック11をクロック周波数50Hzで動作させ、演算ブロック13Aをクロック周波数100Hzで動作させたい場合には、変換ブロック12Aの変換比を“2”に設定する。このように、変換ブロック12の入力側に接続されたブロックのクロック周波数に対する、変換ブロック12の出力側に接続されたブロックのクロック周波数が、当該変換ブロック12の変換比として設定される。
演算ブロック13は、入力データに対して所定の演算を実行し、その結果を出力する。一例では、演算ブロック13は、入力値に対して四則演算を実行して、その結果を出力する。他の例では、演算ブロック13は、入力値が予め定められた範囲内(例えば、1≦入力値≦10)であれば、100を出力し、入力値が予め定められた範囲外であれば、入力値をそのままの値で出力する。さらに他の例では、演算ブロック13は、入力値の積算処理を実行し、積算結果を出力する。
出力ブロック14は、入力データをモデル外部に出力するブロックである。例えば、出力ブロック14は、ファイルへの書込みを実行したり、電圧(あるいは電流)の波形を出力したりする。
典型的には、入力ブロック11から出力ブロック14までの処理経路には、1つの入力ブロック11と、1以上の演算ブロック13と、1つの出力ブロックとを含む一連のブロックが存在する。また、当該一連のブロックの各ブロック間には、変換ブロック12が配置される。
図2の例では、モデル114は、入力ブロック11、演算ブロック13A、および出力ブロック14Aを含む一連のブロックと、一連のブロックの各ブロック間に配置された変換ブロック12A,12Bとを含む処理経路を有する。また、モデル114は、入力ブロック11、演算ブロック13B,13C、および出力ブロック14Bを含む一連のブロックと、一連のブロックの各ブロック間に配置された変換ブロック12C〜12Eとを含む処理経路を有する。
再び、図1を参照して、本実施の形態に従う情報処理装置100の動作概要について説明する。情報処理装置100における主たる工程としては、(1)プログラム読み出し工程、(2)シミュレーション実行工程、(3)シミュレーション結果の取得工程、(4)クロック周波数決定工程、(5)シミュレーション再実行工程の5つが存在する。図1における括弧内の数字が上記の各工程に対応する。
プログラム読み出し工程において、プロセッサ102は、実行環境プログラム112と、モデル114と、改善プログラム116とを補助記憶装置120から読み出して、主記憶装置110にロードする。
シミュレーション実行工程において、プロセッサ102は、実行環境プログラム112を実行して、所定のクロック周波数で一連のブロックを動作させることで、モデル114のシミュレーションを実行する。このとき、各変換ブロック12の変換比は、すべて“1”に設定されている(すなわち、周波数変換は行なわれない。)。シミュレーション結果の取得工程において、プロセッサ102は、改善プログラム116を実行して、シミュレーション結果を取得する。
クロック周波数決定工程において、プロセッサ102は、改善プログラム116を実行して、取得したシミュレーション結果に基づいて一連のブロックの各々にとって最適なクロック周波数を決定する。具体的には、プロセッサ102は、シミュレーション結果に基づいて、シミュレーション結果に実質的な影響を及ぼさない範囲で、一連のブロックの各々の現在のクロック周波数をどの程度低減できるのかを解析し、当該解析結果に基づいて各ブロックのクロック周波数を決定する。また、プロセッサ102は、決定した各ブロックのクロック周波数に基づいて、各ブロック間に配置された変換ブロック12の変換比を設定する。
そして、シミュレーション再実行工程において、プロセッサ102は、実行環境プログラム112を再実行して、各ブロックのクロック周波数を変更したモデル114のシミュレーションを実行する。
上記のように、シミュレーション再実行工程では、1以上のブロックのクロック周波数が低減されているため、当該工程のシミュレーション時間は、シミュレーション実行工程のシミュレーション時間よりも短くなる。また、シミュレーション結果に実質的な影響を及ぼさない範囲で各ブロックのクロック周波数を低減しているため、シミュレーション結果の精度も担保される。このように、改善プログラム116を利用することにより、シミュレーション結果の精度を担保しつつ、シミュレーション時間を容易に削減することができる。以下に各実施の形態を詳細に説明する。
[実施の形態1]
<機能構成>
図3は、実施の形態1に従う改善プログラム116Aの機能構成の一例を示すブロック図である。情報処理装置100は、改善プログラム116Aを実行することによって実現される主たる機能構成として、データ取得部31Aと、クロック周波数決定部32Aと、変換比設定部35Aとを含む。改善プログラム116Aは、図1に示す改善プログラム116と対応するが、他の実施の形態との区別のため、便宜上「A」といった追加の符号を付している。これは、実施の形態2〜3においても同様である。
<機能構成>
図3は、実施の形態1に従う改善プログラム116Aの機能構成の一例を示すブロック図である。情報処理装置100は、改善プログラム116Aを実行することによって実現される主たる機能構成として、データ取得部31Aと、クロック周波数決定部32Aと、変換比設定部35Aとを含む。改善プログラム116Aは、図1に示す改善プログラム116と対応するが、他の実施の形態との区別のため、便宜上「A」といった追加の符号を付している。これは、実施の形態2〜3においても同様である。
また、主記憶装置110にロードされたモデル20は、入力ブロック21と、変換ブロック22,24と、演算ブロック23と、出力ブロック25とを含む。モデル20は、図1に示すモデル114に対応するが、説明の容易化のため、入力ブロック、演算ブロックおよび出力ブロックが1つである場合について説明する。
データ取得部31Aは、所定のクロック周波数Fs(例えば、100Hz)で、入力ブロック21、演算ブロック23および出力ブロック25を含む一連のブロック(以下、単に「一連のブロック」とも称する。)を動作させた場合のモデル20のシミュレーション結果を取得する。所定のクロック周波数Fsは、仕様書等を参照してユーザにより予め設定された周波数である。具体的には、データ取得部31Aは、入力ブロック21、演算ブロック23および出力ブロック25の各々の入出力データを取得する。各入出力データは、クロック周波数決定部32Aに出力される。
クロック周波数決定部32Aは、取得した各入出力データに基づいて、一連のブロックのうち、所定のクロック周波数Fsよりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。具体的には、クロック周波数決定部32Aは、回数算出部33Aと、決定部34Aとを含む。
回数算出部33Aは、各入出力データを解析することにより、一連のブロックの各々について、同一の入出力データが連続する回数(以下、単に「連続回数」とも称する。)を算出する。図4を用いて回数算出部の算出方式をより具体的に説明する。
図4は、実施の形態1に従う回数算出部の算出方式を説明するための図である。図4では、変換ブロック22,24の変換比は“1”であることから、図解を容易にするために変換ブロックは図示していない。なお、以下の説明では、ブロックの入力値および出力値を(入力値,出力値)で表現する。
図4を参照して、0番目のクロックでは、入力ブロック21の入出力値は(1,1)であり、演算ブロック23の入出力値は(1,2)であり、出力ブロック25の入出力値は(2,2)である。1番目のクロックでは、入力ブロック21の入出力値は(1,1)であり、演算ブロック23の入力値は(1,3)であり、出力ブロック25の入力値は(3,3)である。
このことから、0番目のクロックと1番目のクロックとで、入力ブロック21の入出力値は同一である。ここで、入力ブロック21の入出力値が、2番目のクロックで(2,2)、3番目のクロックで(2,2)と変化していく場合、すなわち、2n番目(nは0以上の整数)および(2n+1)番目のクロックで、入出力値が同じである場合を想定する。この場合、回数算出部33Aは、入力ブロック21について、同一の入出力データの連続回数を“2”と算出する。
一方、0番目のクロックと1番目のクロックとで、演算ブロック23および出力ブロック25の入出力データは異なる。この場合、回数算出部33Aは、演算ブロック23および出力ブロック25の各々について、同一の入出力データの連続回数を“1”と算出する。
再び、図3を参照して、決定部34Aは、所定のクロック周波数Fsと、一連のブロックの各々についての連続回数とに基づいて、所定のクロック周波数Fsよりも低いクロック周波数で動作させる対象ブロックを選択し、選択した対象ブロックのクロック周波数を決定する。なお、対象ブロックのクロック周波数は、所定のクロック周波数Fsを、対象ブロックについての連続回数で除算した値である。
具体的には、決定部34Aは、連続回数が“2”以上のブロックを対象ブロックとして選択する。図4の例では、入力ブロック21のみが対象ブロックとして選択される。ここで、図4の例では連続回数が“2”であるため、入力ブロック21のクロック周波数を1/2にしても、シミュレーション結果は変化しない。そのため、決定部34Aは、所定のクロック周波数Fsの1/2を、入力ブロック21のクロック周波数として決定する。このように、決定部34Aは、所定のクロック周波数Fs(例えば、100Hz)を連続回数(例えば、2)で除算した値を、対象ブロック(例えば、入力ブロック21)の新たなクロック周波数(例えば、50Hz)として決定する。
また、決定部34Aは、所定のクロック周波数Fsを、演算ブロック23および出力ブロック25の各々のクロック周波数として決定する。このように、対象ブロック以外の各ブロックについては、新たなクロック周波数が設定されることなく現在のクロック周波数が維持される。
決定部34Aは、一連のブロックの各々に決定したクロック周波数を出力する。具体的には、決定部34Aは、入力ブロック21にクロック周波数f1を出力し、演算ブロック23にクロック周波数f2を出力し、出力ブロック25にクロック周波数f3を出力する。図4の例では、クロック周波数f1,f2,f3は、それぞれFs/2,Fs,Fsとなる。
変換比設定部35Aは、一連のブロックの各々を、決定部34Aにより決定されたクロック周波数で適切に動作させるために、変換ブロック22,24の変換比を設定する。具体的には、変換比設定部35Aは、対象ブロックを、決定部34Aにより決定された新たなクロック周波数で動作させ、対象ブロック以外の残余のブロックを所定のクロック周波数Fsで動作させるモデル20のシミュレーションが実行されるように、変換ブロック22,24の変換比を設定する。
ここで、入力ブロック21をクロック周波数f1で動作させ、演算ブロック23をクロック周波数f2で動作させ、出力ブロック25をクロック周波数f3で動作させる場合を想定する。この場合、変換比設定部35Aは、変換ブロック22の変換比D1をf1:f2(すなわち、f2/f1)に設定し、変換ブロック24の変換比D2をf2:f3(すなわち、f3/f2)に設定する。
詳細には、入力ブロック21に接続される変換ブロック22に接続された演算ブロック23は、入力ブロック21の後に処理を実行する。そこで、変換比設定部35Aは、入力ブロック21のクロック周波数f1に対する、演算ブロック23のクロック周波数f2の比であるf2/f1を変換ブロック22の変換比として設定する。
また、出力ブロック25は、演算ブロック23の後に処理を実行するため、変換比設定部35Aは、演算ブロック23のクロック周波数f2に対する、出力ブロック25のクロック周波数f3の比率であるf3/f2を変換ブロック24の変換比として設定する。このように、変換比を設定することにより、各ブロックを決定されたクロック周波数で動作させることができる。
図5は、シミュレーション時間が削減される理由を説明するための図である。図5では、入力ブロック21のクロック周波数f1は“Fs/2”であり、演算ブロック23のクロック周波数f2は“Fs”であり、出力ブロック25のクロック周波数f3は“Fs”であるとする。そのため、変換ブロック22の変換比は“2”である。一方、変換ブロック24の変換比は“1”となることから、図解を容易にするために変換ブロック24は図示していない。
図5を参照して、0番目のクロックでは、入力ブロック21の入出力値は(1,1)であり、変換ブロック22の入出力値は(1,1)であり、演算ブロック23の入出力値は(1,2)であり、出力ブロック25の入出力値は(2,2)である。
ここで、変換ブロック22は、入力側に接続された入力ブロック21の出力値を保持し、当該保持された出力値を出力側に接続された演算ブロック23に出力するように構成される。そのため、1番目のクロックでは、変換ブロック22の入出力値が(なし、1)となっている。これは、クロック周波数がFs/2に設定された入力ブロック21の処理は実行されず、入力ブロック21の出力値を保持した変換ブロック22が、当該出力値を演算ブロック23に出力することを意味している。したがって、演算ブロック23の入力値は(1,3)であり、出力ブロック25の入力値は(3,3)となる。
図5に示すように、1番目のクロックでは、入力ブロック21の処理を実行する必要がないため、0番目のクロックと比べてシミュレーション時間が削減される。具体的には、(2n+1)番目のクロックでは、入力ブロック21の処理を実行する必要がないため、全体としてのシミュレーション時間が大幅に削減されることになる。
<処理手順>
図6は、実施の形態1に従うプロセッサ102の処理手順の一例を示すフローチャートである。図6を参照して、プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーションを実行し、シミュレーション結果を取得する(ステップS6)。
図6は、実施の形態1に従うプロセッサ102の処理手順の一例を示すフローチャートである。図6を参照して、プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーションを実行し、シミュレーション結果を取得する(ステップS6)。
プロセッサ102は、一連のブロックの中から解析対象のブロックを選択する(ステップS8)。例えば、プロセッサ102は、処理順序が最も早い入力ブロック21を最初に選択する。解析対象のブロック(以下、「解析ブロック」とも称する。)の選択方式は任意である。
プロセッサ102は、解析ブロックに関する変数を初期化する(ステップS10)。具体的には、入出力データの総数をN(Nは1以上の整数)、総数Nを分割する場合の1セット当たりの入出力データ数をn(nは1以上の整数)、セット番号をi(iは0以上の整数)と定義する。プロセッサ102は、初期値として、入出力データの総数(例えば、6)をNに代入し、nに1を代入し、iに0を代入する。
プロセッサ102は、総数Nをn個ごとのセットに分割する(ステップS12)。例えば、総数Nが“6”である場合には、6クロック分の入出力データが存在する。このとき、nが“1”であれば総数Nは0番目〜5番目のクロックの入出力データに6分割される。この場合、セット数が6つであるため、セット番号iは0〜5となる。また、総数Nが“6”でありnが“2”であれば総数Nは、0番目および1番目のクロックの入出力データ、2番目および3番目のクロックの入出力データ、4番目および5番目のクロックの入出力データに3分割される。この場合、セット数が3つであるため、セット番号iは0〜2となる。
続いて、プロセッサ102は、セット番号iのn個の連続する入出力データを比較する(ステップS14)。プロセッサ102は、比較結果に基づいて、n個の入出力データが同一であるか否かを判断する(ステップS16)。例えば、nが“1”の場合には、入出力データは1つしかないため、同一と判断される。nが“2”の場合には、1セットに含まれる2つの入出力データ(例えば、0番目および1番目のクロックの入出力データ)が同一であるか否かが判断される。
n個の入出力データが同一ではない場合には(ステップS16においてNO)、後述するステップS26の処理を実行する。n個の入出力データが同一である場合には(ステップS16においてYES)、プロセッサ102は、セット番号iをインクリメントする(ステップS18)。すなわち、プロセッサ102は、セット番号iを“1”増加する。
プロセッサ102は、セット番号iが最後のセット番号であるか否かを判断する(ステップS20)。セット番号iが最後のセット番号ではない場合には(ステップS20においてNO)、プロセッサ102はステップS14の処理を実行する。セット番号iが最後のセット番号である場合には(ステップS20においてYES)、1セット当たりの入出力データ数nをインクリメントする(ステップS22)。続いて、プロセッサ102は、1セット当たりの入出力データ数nが総数Nよりも大きいか(すなわち、n>Nを満たす)か否かを判断する(ステップS24)。
n>Nではない場合には(ステップS24においてNO)、プロセッサ102は、ステップS12の処理を実行する。n>Nである場合には(ステップS24においてYES)、プロセッサ102は、(n−1)回を連続回数として用いることにより、解析ブロックのクロック周波数を決定する(ステップS26)。具体的には、プロセッサ102は、所定のクロック周波数Fsを(n−1)で除算した値を、解析ブロックのクロック周波数として決定する。なお、ステップS26においては、少なくともnは2以上であるため、(n−1)は1以上となる。
プロセッサ102は、一連のブロックのうち、解析ブロックとして選択されていないブロックが存在するか否かを判断する(ステップS28)。当該ブロックが存在する場合には(ステップS28においてNO)、プロセッサ102はステップS8の処理を実行する。すなわち、プロセッサ102は、選択されていないブロックを解析ブロックとして選択して、ステップS10以降の処理を実行する。
当該ブロックが存在しない場合には(ステップS28においてNO)、プロセッサ102は、一連のブロックの各々について、当該ブロックを決定したクロック周波数で適切に動作させるために、各ブロック間に配置された変換ブロックの変換比を設定して(ステップS30)、処理を終了する。
<利点>
実施の形態1によると、一連のブロックのうちの1以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果を変化させない範囲でブロックのクロック周波数を低減するため、コンパイラ等のシミュレータ内部の処理に依存せず、シミュレーション結果の精度も担保される。また、特許文献1のように、簡易モデルおよび詳細モデルの両方の開発およびメンテナンスも必要ないし、簡易モデルおよび詳細モデルをメモリに格納することによるメモリ容量の増大もない。さらに、シミュレーション時間の削減量に応じて簡易モデルの構成を変更する煩雑な作業も不要である。
実施の形態1によると、一連のブロックのうちの1以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果を変化させない範囲でブロックのクロック周波数を低減するため、コンパイラ等のシミュレータ内部の処理に依存せず、シミュレーション結果の精度も担保される。また、特許文献1のように、簡易モデルおよび詳細モデルの両方の開発およびメンテナンスも必要ないし、簡易モデルおよび詳細モデルをメモリに格納することによるメモリ容量の増大もない。さらに、シミュレーション時間の削減量に応じて簡易モデルの構成を変更する煩雑な作業も不要である。
このように、実施の形態1によると、モデルベース開発におけるシミュレーションの実行結果を変化させることなく、シミュレーション時間を容易に削減できる。
[実施の形態2]
実施の形態2では、各ブロックのクロック周波数を低減した場合のシミュレーション結果が許容範囲内であるか否かを確認しながら、各ブロックのクロック周波数を決定していく構成について説明する。
実施の形態2では、各ブロックのクロック周波数を低減した場合のシミュレーション結果が許容範囲内であるか否かを確認しながら、各ブロックのクロック周波数を決定していく構成について説明する。
<機能構成>
図7は、実施の形態2に従う改善プログラム116Bの機能構成の一例を示すブロック図である。図7を参照して、情報処理装置100は、改善プログラム116Bを実行することによって実現される主たる機能構成として、データ取得部31Bと、クロック周波数決定部32Bと、変換比設定部35Bと、優先順位設定部36Bと、誤差判定部38Bとを含む。また、情報処理装置100は、主記憶装置110および補助記憶装置120によって実現される出力データ保持部40Bをさらに含む。
図7は、実施の形態2に従う改善プログラム116Bの機能構成の一例を示すブロック図である。図7を参照して、情報処理装置100は、改善プログラム116Bを実行することによって実現される主たる機能構成として、データ取得部31Bと、クロック周波数決定部32Bと、変換比設定部35Bと、優先順位設定部36Bと、誤差判定部38Bとを含む。また、情報処理装置100は、主記憶装置110および補助記憶装置120によって実現される出力データ保持部40Bをさらに含む。
出力データ保持部40Bは、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーション結果を保持する。シミュレーション結果は、モデル20のクロック毎の出力データ(すなわち、最終段に配置された出力ブロック25の出力データ)を含む。この出力データはモデル20の出力期待値となる。具体的には、出力期待値は、一連のブロックのクロック周波数を所定のクロック周波数Fsから変更する前のモデル20の出力データDbeである。
優先順位設定部36Bは、一連のブロックの優先順位を設定する。具体的には、優先順位設定部36Bは、一連のブロックにおいて、処理順序が後になるブロックほど優先順位を高く設定する。モデル20の場合には、一連のブロックにおいて、入力ブロック21、演算ブロック23、出力ブロック25の順序で処理が実行される。そのため、出力ブロック25の優先順位が最も高く、演算ブロック23の優先順位が次に高く、入力ブロック21の優先順位が最も低く設定される。
クロック周波数決定部32Bは、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーション結果に少なくとも基づいて、一連のブロックのうち、所定のクロック周波数Fsよりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定する。具体的には、クロック周波数決定部32Bは、決定部34Bと、選択部37Bとを含む。
選択部37Bは、優先順位設定部36Bにより設定された優先順位に基づいて、所定のクロック周波数Fsより所定周波数k(例えば、1Hz)だけ低いクロック周波数F1(=Fs−k)で動作させる対象ブロックBL1を選択する。具体的には、選択部37Bは、一連のブロックのうち優先順位が最も高く設定されたブロック(例えば、出力ブロック25)を最初の対象ブロックとして選択する。このように、処理順序が後になるブロックを対象ブロックとして優先的に選択する理由は、クロック周波数を低減することで影響を与えるブロックを少なくするためである。
決定部34Bは、所定のクロック周波数Fsより所定周波数kだけ低いクロック周波数F1を、対象ブロックBL1のクロック周波数として仮決定する。なお、決定部34Bは、所定のクロック周波数Fsを、対象ブロックBL1以外の残余のブロックのクロック周波数として仮決定する。決定部34Bは、一連のブロックの各々に仮決定したクロック周波数を出力する。例えば、対象ブロックBL1が出力ブロック25である場合、クロック周波数f1,f2は所定のクロック周波数Fsであり、クロック周波数f3はクロック周波数F1である。
変換比設定部35Bは、一連のブロックの各々を、決定部34Bにより仮決定されたクロック周波数で適切に動作させるために、変換ブロック22,24の変換比を設定する。具体的には、変換比設定部35Bは、対象ブロックBL1をクロック周波数F1で動作させ、残余のブロックを所定のクロック周波数Fsで動作させるモデル20のシミュレーションが実行されるように、変換ブロック22,24の変換比を設定する。
データ取得部31Bは、対象ブロックBL1をクロック周波数F1で動作させ、残余のブロックを所定のクロック周波数Fsで動作させた場合のモデル20のシミュレーション結果として、当該モデル20のクロック毎の出力データを出力ブロック25から取得する。すなわち、データ取得部31Bは、クロック周波数が変更された後のモデル20のクロック毎の出力データDafを取得する。
また、データ取得部31Bは、クロック毎の出力期待値を出力データ保持部40Bから取得する。すなわち、データ取得部31Bは、モデル20のクロック毎の出力データDbeを取得する。
誤差判定部38Bは、クロック毎の出力データDafと出力データDbeとの誤差ΔDが予め定められた許容範囲内であるか否かを判定する。許容範囲は、ユーザにより任意に定められ、シミュレーション結果に実質的に影響を与えない範囲で設定される。
誤差ΔDが許容範囲内である場合、次のような処理が実行される。具体的には、決定部34Bは、クロック周波数F1よりさらに所定周波数kだけ低いクロック周波数F2(=F1−k)を、対象ブロックBL1のクロック周波数として仮決定し、所定のクロック周波数Fsを、残余のブロックのクロック周波数として仮決定する。変換比設定部35Bは、対象ブロックBL1をクロック周波数F2で動作させ、残余のブロックを所定のクロック周波数Fsで動作させるモデル20のシミュレーションが実行されるように、変換ブロック22,24の変換比を設定する。
データ取得部31Bは、対象ブロックBL1をクロック周波数F2で動作させ、残余のブロックを所定のクロック周波数Fsで動作させた場合のモデル20のクロック毎の出力データDaf1を取得する。誤差判定部38Bは、クロック毎の出力データDaf1と出力データDbeとの誤差ΔD1が許容範囲内であるか否かを判定する。以降、同様の処理が繰り返される。
一方、誤差ΔDが許容範囲外である場合、シミュレーション結果の精度が許容されないことを意味するため、次のような処理が実行される。決定部34Bは、対象ブロックBL1のクロック周波数を所定のクロック周波数Fsとして決定する(すなわち、本決定する)。このように、シミュレーション結果の精度を担保するため、決定部34Bは、対象ブロックBL1のクロック周波数として仮決定されたクロック周波数F1を採用せずに、元の所定のクロック周波数Fsを採用する。
選択部37Bは、当該対象ブロックBL1の次に優先順位が高いブロックを、クロック周波数F1で動作させる新たな対象ブロックBL2として選択する。例えば、元の対象ブロックBL1が出力ブロック25であった場合には、演算ブロック23が対象ブロックBL2として選択される。決定部34Bは、対象ブロックBL2のクロック周波数をクロック周波数F1として仮決定し、所定のクロック周波数Fsを、対象ブロックBL1,BL2以外の残余のブロックのクロック周波数として仮決定する。なお、上述したように、対象ブロックBL1のクロック周波数は、所定のクロック周波数Fsに本決定されている。
変換比設定部35Bは、対象ブロックBL2をクロック周波数F1で動作させ、対象ブロックBL2以外の残余のブロックを所定のクロック周波数Fsで動作させた場合のモデル20のシミュレーションが実行されるように、変換ブロック22,24の変換比を設定する。以降、対象ブロックBL2に対して、対象ブロックBL1と同様の処理が繰り返される。
上述のように、シミュレーション結果が許容範囲外となるまで対象ブロックのクロック周波数を下げていき、許容範囲外になる直前に仮決定されたクロック周波数が、対象ブロックのクロック周波数として本決定される。この処理が各ブロックについて実行される。また、複数の出力ブロックを有するモデル(例えば、モデル114等)の場合、出力ブロック毎に許容範囲が定められ、当該許容範囲と誤差とが比較される。
<処理手順>
図8は、実施の形態2に従うプロセッサ102の処理手順の一例を示すフローチャートである。図8を参照して、プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーション結果を取得する(ステップS36)。具体的には、プロセッサ102は、クロック毎の出力期待値として、当該モデル20のクロック毎の出力データをメモリに格納する。
図8は、実施の形態2に従うプロセッサ102の処理手順の一例を示すフローチャートである。図8を参照して、プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のシミュレーション結果を取得する(ステップS36)。具体的には、プロセッサ102は、クロック毎の出力期待値として、当該モデル20のクロック毎の出力データをメモリに格納する。
プロセッサ102は、モデル20の出力データの許容範囲を設定する(ステップS38)。なお、複数の出力ブロックが含まれる場合には、各出力ブロックの出力データについての許容範囲が設定される。
プロセッサ102は、変数を初期化する(ステップS40)。具体的には、モデル20における入力ブロックから出力ブロックまでの処理経路に含まれる各ブロックの総数をM、ブロック番号をj、ブロックのクロック周波数をCLと定義する。プロセッサ102は、初期値として、各ブロックの総数(例えば、3)をMに代入し、jに0を代入し、CLに所定のクロック周波数Fsを代入する。
プロセッサ102は、モデル20の処理順序に従う優先順位に基づいて、各ブロックにブロック番号を付与する(ステップS42)。具体的には、プロセッサ102は、処理経路を出力ブロック側からたどり、ブロック番号を付与する。例えば、出力ブロック25、演算ブロック23、入力ブロック21のブロック番号jは、それぞれ0、1、2となる。
プロセッサ102は、一連のブロックの各々に現在設定(すなわち、仮決定、または本決定)されているクロック周波数で、各ブロックを動作させることによりモデル20のシミュレーションを実行し、シミュレーション結果を取得する(ステップS44)。プロセッサ102は、クロック毎に、当該シミュレーション結果に基づくモデル20の出力データと出力期待値との誤差を算出する(ステップS46)。プロセッサ102は、算出された誤差が許容範囲内であるか否かを判断する(ステップS48)。
誤差が許容範囲内である場合には(ステップS48においてYES)、プロセッサ102は、j番目のブロックのクロック周波数CLを所定周波数kだけ低減したクロック周波数に仮決定する(ステップS50)。プロセッサ102は、クロック周波数CLが閾値(例えば、1Hz)以下であるか否かを判断する(ステップS54)。
クロック周波数CLが閾値以下である場合には(ステップS54においてYES)、後述するステップS58の処理を実行する。クロック周波数CLが閾値よりも大きい場合には(ステップS54においてNO)、プロセッサ102は、j番目のブロックを仮決定されたクロック周波数CLで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために、各ブロック間に配置された変換ブロックの変換比を設定する(ステップS56)。続いて、プロセッサ102は、ステップS44においてシミュレーションを実行する。
一方、ステップS48において、誤差が許容範囲外である場合には(ステップS48においてNO)、プロセッサ102は、j番目のブロックのクロック周波数CLを前回仮決定されたクロック周波数CLとして本決定する(ステップS52)。続いて、プロセッサ102は、j番目のブロックを本決定されたクロック周波数CLで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために、各ブロック間に配置された変換ブロックの変換比を設定する(ステップS53)。
次に、プロセッサ102は、ブロック番号jをインクリメントする(ステップS58)。すなわち、プロセッサ102は、ブロック番号jを“1”増加する。これにより、クロック周波数を低減させる対象ブロックが変更される。プロセッサ102は、ブロック番号jがブロック総数Mよりも大きいか(すなわち、j>Mを満たす)か否かを判断する(ステップS60)。
j>Mではない場合には(ステップS60においてNO)、プロセッサ102は、j番目のブロックのクロック周波数CLを所定周波数kだけ低減したクロック周波数に仮決定する(ステップS62)。続いて、プロセッサ102は、j番目のブロックを仮決定されたクロック周波数CLで動作させ、残余のブロックを現在設定されているクロック周波数で動作させるために変換ブロックの変換比を設定して(ステップS64)、ステップS44においてシミュレーションを実行する。
一方、j>Mである場合には(ステップS60においてYES)、プロセッサ102は処理を終了する。すなわち、プロセッサ102は、一連のブロックの各々のブロックのクロック周波数を本決定し、当該本決定されたクロック周波数に基づく変換比を設定した後、処理を終了する。
<利点>
実施の形態2によると、一連のブロックのうちの1以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果は多少変化するが許容範囲内でブロックのクロック周波数を低減するため、シミュレーション結果の精度も担保される。
実施の形態2によると、一連のブロックのうちの1以上のブロックのクロック周波数が低減されるため、シミュレーション時間を削減することができる。また、シミュレーション結果は多少変化するが許容範囲内でブロックのクロック周波数を低減するため、シミュレーション結果の精度も担保される。
[実施の形態3]
実施の形態2では、各ブロックの処理順序に基づいて優先順位を設定する構成について説明したが、実施の形態3では、各ブロックの出力データの変動率に基づいて優先順位を設定する構成について説明する。
実施の形態2では、各ブロックの処理順序に基づいて優先順位を設定する構成について説明したが、実施の形態3では、各ブロックの出力データの変動率に基づいて優先順位を設定する構成について説明する。
<機能構成>
図9は、実施の形態3に従う改善プログラム116Cの機能構成の一例を示すブロック図である。情報処理装置100は、改善プログラム116Cを実行することによって実現される主たる機能構成として、データ取得部31Cと、クロック周波数決定部32Cと、変換比設定部35Cと、優先順位設定部36Cと、誤差判定部38Cと,変動率算出部39Cとを含む。クロック周波数決定部32Cは、決定部34Cと、選択部37Cとを含む。データ取得部31C、クロック周波数決定部32C、変換比設定部35C、誤差判定部38Cは、それぞれ図7中のデータ取得部31B、クロック周波数決定部32B、変換比設定部35B、誤差判定部38Bと実質的に同一である。
図9は、実施の形態3に従う改善プログラム116Cの機能構成の一例を示すブロック図である。情報処理装置100は、改善プログラム116Cを実行することによって実現される主たる機能構成として、データ取得部31Cと、クロック周波数決定部32Cと、変換比設定部35Cと、優先順位設定部36Cと、誤差判定部38Cと,変動率算出部39Cとを含む。クロック周波数決定部32Cは、決定部34Cと、選択部37Cとを含む。データ取得部31C、クロック周波数決定部32C、変換比設定部35C、誤差判定部38Cは、それぞれ図7中のデータ取得部31B、クロック周波数決定部32B、変換比設定部35B、誤差判定部38Bと実質的に同一である。
出力データ保持部40Cは、実施の形態2と同様に、所定のクロック周波数Fsで一連のブロックを動作させた場合のモデル20のクロック毎の出力データDbeを含む。出力データ保持部40Cは、所定のクロック周波数Fsで一連のブロックを動作させた場合の各ブロックの出力データをさらに含む。
変動率算出部39Cは、出力データ保持部40Cに格納された各ブロックの出力データの波形に基づいて、各ブロックの出力変動率を算出する。
図10は、実施の形態3に従う出力変動率の算出方式を説明するための図である。具体的には、図10(a)は、出力データの波形の一例を示す図である。図10(b)は、出力データの波形の他の例を示す図である。ここで、出力変動率は、出力データの出力値の平均値に対する、当該出力データの振幅値である。図10(a)の出力データの場合、出力変動率は、0.04(=40/1000)となる。図10(b)の出力データの場合、出力変動率は、0.2(=20/100)となる。そのため、図10(a)の出力データを有するブロックの方が、図10(b)の出力データを有するブロックよりも出力変動率が小さく、出力誤差は小さいとみなされる。
再び、図9を参照して、優先順位設定部36Cは、一連のブロックの各々の出力変動率に基づいて、一連のブロックの優先順位を設定する。具体的には、優先順位設定部36Cは、一連のブロックにおいて、出力変動率が小さいブロックほど優先順位を高く設定する。そのため、図10(a)の出力データを有するブロックの方が、図10(b)の出力データを有するブロックの方よりも、優先順位が高く設定される。
そして、選択部37Cにより、優先順位が高く設定されたブロックが最初の対象ブロックとして選択される。このように、出力変動率が小さいブロックを対象ブロックとして優先的に選択する理由は、クロック周波数を低減した際の出力誤差が小さいためである。
<処理手順>
図11は、実施の形態3に従うプロセッサ102の処理手順の一例を示すフローチャートである。図11を参照して、ステップS66〜S70の処理は、それぞれ図8中のステップS36〜ステップS40の処理と同様であるため、その詳細な説明は繰り返さない。プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合の各ブロックの出力データに基づいて、各ブロックの出力変動率を算出する(ステップS71)。
図11は、実施の形態3に従うプロセッサ102の処理手順の一例を示すフローチャートである。図11を参照して、ステップS66〜S70の処理は、それぞれ図8中のステップS36〜ステップS40の処理と同様であるため、その詳細な説明は繰り返さない。プロセッサ102は、所定のクロック周波数Fsで一連のブロックを動作させた場合の各ブロックの出力データに基づいて、各ブロックの出力変動率を算出する(ステップS71)。
続いて、プロセッサ102は、各ブロックの出力変動率に従う優先順位に基づいて、各ブロックにブロック番号を付与する(ステップS72)。具体的には、プロセッサ102は、出力変動率が小さいブロックからブロック番号を付与していく。例えば、演算ブロック23、入力ブロック21、出力ブロック25の順に出力変動率が小さい場合(すなわち、優先順位が高い場合)には、演算ブロック23、入力ブロック21、出力ブロック25のブロック番号jは、それぞれ0、1、2となる。
ステップS74〜ステップS94の処理は、それぞれ図8中のステップS44〜ステップS64の処理と同様であるため、その詳細な説明は繰り返さない。
<利点>
実施の形態3によると、実施の形態2と同様に、許容範囲内で各ブロックのクロック周波数が低減されるためシミュレーション時間を削減できるとともにシミュレーション結果の精度を担保できる。実施の形態3では、さらに、クロック周波数を低減する対象ブロックを選択する時間を短縮できる。
実施の形態3によると、実施の形態2と同様に、許容範囲内で各ブロックのクロック周波数が低減されるためシミュレーション時間を削減できるとともにシミュレーション結果の精度を担保できる。実施の形態3では、さらに、クロック周波数を低減する対象ブロックを選択する時間を短縮できる。
[その他]
上述のフローチャートで説明したような制御を実行させるプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk Read Only Memory)、ROM、RAMおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
上述のフローチャートで説明したような制御を実行させるプログラムは、コンピュータに付属するフレキシブルディスク、CD−ROM(Compact Disk Read Only Memory)、ROM、RAMおよびメモリカードなどの一時的でないコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
上述した実施の形態において、その他の実施の形態で説明した処理や構成を適宜採用して実施する場合であってもよい。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
11,21 入力ブロック、12A〜12E,22,24 変換ブロック、13A〜13C,23 演算ブロック、14A,14B,25 出力ブロック、20,114 モデル、31A〜31C データ取得部、32A〜32C クロック周波数決定部、33A 回数算出部、34A〜34C 決定部、35A〜35C 変換比設定部、36B,36C 優先順位設定部、37B,37C 選択部、38B,38C 誤差判定部、39C 変動率算出部、40B,40C 出力データ保持部、100 情報処理装置、102 プロセッサ、110 主記憶装置、112 実行環境プログラム、116A〜116C 改善プログラム、120 補助記憶装置。
Claims (16)
- プロセッサと、メモリとを備える情報処理装置において実行されるプログラムであって、
前記メモリは、入力ブロック、1以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶し、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記プログラムは、前記プロセッサに、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルの第1シミュレーション結果を取得するステップと、
前記第1シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップとを実行させる、プログラム。 - 前記設定するステップは、
前記対象ブロックに接続される第1変換ブロックに接続された他のブロックが前記対象ブロックの後に処理を実行する場合、前記対象ブロックのクロック周波数に対する、前記他のブロックのクロック周波数の比率を前記第1変換ブロックの前記変換比として設定するステップを含む、請求項1に記載のプログラム。 - 前記設定するステップは、
前記他のブロックが前記対象ブロックの前に処理を実行する場合、前記他のブロックのクロック周波数に対する、前記対象ブロックのクロック周波数の比率を前記第1変換ブロックの前記変換比として設定するステップを含む、請求項2に記載のプログラム。 - 前記変換ブロックは、入力側に接続されたブロックの出力データを保持し、前記保持された出力データを出力側に接続されたブロックに出力するように構成される、請求項1に記載のプログラム。
- 前記第1シミュレーション結果は、前記一連のブロックの各々のクロック毎の入出力データを含み、
前記決定するステップは、
前記取得された各前記ブロックの入出力データを解析することにより、前記一連のブロックの各々について、同一の入出力データが連続する回数を算出するステップと、
前記所定のクロック周波数と、前記一連のブロックの各々についての前記回数とに基づいて、前記対象ブロックのクロック周波数を決定するステップとを含む、請求項1に記載のプログラム。 - 前記対象ブロックのクロック周波数は、前記所定のクロック周波数を、前記対象ブロックについての前記回数で除算した値である、請求項5に記載のプログラム。
- 前記第1シミュレーション結果は、前記所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのクロック毎の第1出力データを含み、
前記プログラムは、前記プロセッサに、
前記一連のブロックの優先順位を設定するステップと、
前記設定された優先順位に基づいて、前記所定のクロック周波数より所定周波数だけ低い第1クロック周波数で動作させる第1対象ブロックを選択するステップと、
前記第1対象ブロックを前記第1クロック周波数で動作させ、前記第1対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させた場合の前記モデルの第2シミュレーション結果として、前記モデルのクロック毎の第2出力データを取得するステップと、
前記第1出力データと前記第2出力データとの誤差が許容範囲内であるか否かを判定するステップとを、さらに実行させる、請求項1に記載のプログラム。 - 前記誤差が前記許容範囲内である場合、前記設定するステップは、前記第1対象ブロックを前記第1クロック周波数より前記所定周波数だけ低い第2クロック周波数で動作させ、前記第1対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルの第3シミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップを含む、請求項7に記載のプログラム。
- 前記誤差が前記許容範囲内ではない場合、
前記決定するステップは、前記第1対象ブロックのクロック周波数を前記所定のクロック周波数として決定するステップを含み、
前記選択するステップは、前記第1対象ブロックの次に優先順位が高いブロックを、前記第1クロック周波数で動作させる第2対象ブロックとして選択するステップを含む、請求項7に記載のプログラム。 - 前記設定するステップは、前記第2対象ブロックを前記第1クロック周波数で動作させ、前記第2対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させた場合の前記モデルの第4シミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップを含む、請求項9に記載のプログラム。
- 前記優先順位を設定するステップは、前記一連のブロックにおいて、処理順序が後になるブロックほど前記優先順位を高く設定する、請求項7に記載のプログラム。
- 前記第1シミュレーション結果は、前記所定のクロック周波数で前記一連のブロックを動作させたときの各ブロックの出力データをさらに含み、
前記プログラムは、前記プロセッサに、前記一連のブロックの各々について、当該ブロックの出力データの波形に基づいて当該ブロックの出力変動率を算出するステップをさらに実行させ、
前記優先順位を設定するステップは、前記出力変動率に基づいて、前記一連のブロックの優先順位を設定するステップを含む、請求項7に記載のプログラム。 - 前記優先順位を設定するステップは、前記一連のブロックにおいて、前記出力変動率が小さいブロックほど前記優先順位を高く設定する、請求項12に記載のプログラム。
- 前記出力変動率は、前記出力データの出力値の平均値に対する、前記出力データの振幅値である、請求項13に記載のプログラム。
- プロセッサと、
入力ブロック、1以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶するメモリとを備え、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記プロセッサは、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのシミュレーション結果を取得し、
前記シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定し、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定する、情報処理装置。 - 情報処理装置のプロセッサにより実行される情報処理方法であって、
前記情報処理装置は、入力ブロック、1以上の演算ブロック、および出力ブロックを含む一連のブロックと、前記一連のブロックの各ブロック間に配置された変換ブロックとを含むモデルを記憶するメモリを備え、
前記変換ブロックは、入力側に接続されたブロックのクロック周波数を、設定された変換比で変換して出力するように構成されており、
前記情報処理方法は、
所定のクロック周波数で前記一連のブロックを動作させた場合の前記モデルのシミュレーション結果を取得するステップと、
前記シミュレーション結果に基づいて、前記一連のブロックのうち、前記所定のクロック周波数よりも低いクロック周波数で動作させる対象ブロックの新たなクロック周波数を決定するステップと、
前記対象ブロックを前記所定のクロック周波数よりも低い前記新たなクロック周波数で動作させ、前記一連のブロックのうちの前記対象ブロック以外の残余のブロックを前記所定のクロック周波数で動作させる前記モデルのシミュレーションが実行されるように、前記各ブロック間に配置された変換ブロックの前記変換比を設定するステップとを含む、情報処理方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093854A JP2019200524A (ja) | 2018-05-15 | 2018-05-15 | プログラム、情報処理装置、および情報処理方法 |
US16/400,872 US11275876B2 (en) | 2018-05-15 | 2019-05-01 | Program, information processing device, and information processing method |
CN201910379266.4A CN110489772A (zh) | 2018-05-15 | 2019-05-08 | 程序、信息处理设备和信息处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2018093854A JP2019200524A (ja) | 2018-05-15 | 2018-05-15 | プログラム、情報処理装置、および情報処理方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2019200524A true JP2019200524A (ja) | 2019-11-21 |
Family
ID=68533758
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2018093854A Pending JP2019200524A (ja) | 2018-05-15 | 2018-05-15 | プログラム、情報処理装置、および情報処理方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11275876B2 (ja) |
JP (1) | JP2019200524A (ja) |
CN (1) | CN110489772A (ja) |
Family Cites Families (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2740705B2 (ja) * | 1992-04-08 | 1998-04-15 | 本田技研工業株式会社 | 流体式トルクコンバータの特性シミュレーション方法および装置 |
JPH09107370A (ja) * | 1995-08-08 | 1997-04-22 | Toshiba Corp | シミュレーション方法およびシミュレータ |
JP2002215599A (ja) * | 2001-01-18 | 2002-08-02 | Mitsubishi Electric Corp | マルチプロセッサシステムおよびその制御方法 |
CN1781070A (zh) * | 2003-05-07 | 2006-05-31 | 索尼株式会社 | 频率控制设备、信息处理设备和程序 |
JP4020849B2 (ja) * | 2003-09-25 | 2007-12-12 | 松下電器産業株式会社 | シミュレーション装置、シミュレーションプログラム、記録媒体及びシミュレーション方法 |
EP1685507A4 (en) * | 2003-10-31 | 2010-12-22 | Ibm | METHOD AND APPARATUS FOR SCALING A FREQUENCY AT A DYNAMIC SYSTEM |
US7890924B2 (en) * | 2004-01-20 | 2011-02-15 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Portland State University | System and method for simulating product design and development |
US7840287B2 (en) * | 2006-04-13 | 2010-11-23 | Fisher-Rosemount Systems, Inc. | Robust process model identification in model based control techniques |
US9360913B2 (en) * | 2006-06-15 | 2016-06-07 | Nxp B.V. | Method of providing a clock frequency for a processor |
JP2008077330A (ja) * | 2006-09-20 | 2008-04-03 | Fujitsu Ltd | ハードウエア高速シミュレーション用モデル生成装置及びそのシミュレーション装置。 |
JP4858240B2 (ja) | 2007-03-06 | 2012-01-18 | トヨタ自動車株式会社 | モデルベース開発におけるモデル簡易化手法 |
EP2202605B1 (en) * | 2007-10-11 | 2013-02-27 | Fujitsu Limited | Information processor, operation control method, and operation control program |
KR20100077405A (ko) * | 2008-12-29 | 2010-07-08 | 삼성전기주식회사 | 주파수 종속 특성을 가지는 배선 시스템의 신호 천이 특성 모델링 방법 |
JP5229119B2 (ja) * | 2009-06-10 | 2013-07-03 | 富士通株式会社 | モデル生成プログラム、方法及び装置 |
US8645117B2 (en) * | 2010-05-27 | 2014-02-04 | Freescale Semiconductor, Inc. | Clock simulation device and methods thereof |
JP2012048427A (ja) * | 2010-08-25 | 2012-03-08 | Sony Corp | 情報処理装置、情報処理方法及びプログラム |
JP5592825B2 (ja) * | 2011-03-29 | 2014-09-17 | ルネサスエレクトロニクス株式会社 | 表示装置用データ伝送システム、表示装置用データ伝送方法及び表示装置 |
JP2013012970A (ja) * | 2011-06-30 | 2013-01-17 | Renesas Electronics Corp | 半導体集積回路およびその動作方法 |
US9142192B2 (en) * | 2011-09-26 | 2015-09-22 | Intel Corporation | Simulation of web applications and secondary devices in a web browser, web application development tools, and methods using the same |
JP5904767B2 (ja) * | 2011-11-15 | 2016-04-20 | ルネサスエレクトロニクス株式会社 | 半導体装置の開発支援装置、開発支援方法及び開発支援プログラム |
CN102788950B (zh) * | 2012-06-27 | 2014-10-01 | 北京大学深圳研究生院 | 一种周期精确转换器及其集成电路验证方法和系统 |
CN104756043B (zh) * | 2012-11-05 | 2016-06-08 | 高通股份有限公司 | 用于以有保证的瞬态最后期限来控制中央处理单元功率的系统和方法 |
JP6259297B2 (ja) * | 2014-01-29 | 2018-01-10 | ルネサスエレクトロニクス株式会社 | 信号処理装置、信号処理方法およびプログラム |
US20160125110A1 (en) * | 2014-09-26 | 2016-05-05 | Yogitech S.P.A. | Method for the simulation of faults in integrated circuits of electronic systems implementing applications under functional safety, corresponding system and computer program product |
DE102015207932A1 (de) * | 2015-04-29 | 2016-11-03 | Siemens Aktiengesellschaft | Verfahren zur computerunterstützten Entwicklung eines aus Teilsystemen bestehenden Gesamtsystems |
US9898561B2 (en) * | 2015-05-27 | 2018-02-20 | Altera Corporation | Behavioral simulation model for clock-data recovery phase-locked loop |
JP2019086996A (ja) * | 2017-11-07 | 2019-06-06 | ルネサスエレクトロニクス株式会社 | シミュレーション装置及びプログラム |
-
2018
- 2018-05-15 JP JP2018093854A patent/JP2019200524A/ja active Pending
-
2019
- 2019-05-01 US US16/400,872 patent/US11275876B2/en active Active
- 2019-05-08 CN CN201910379266.4A patent/CN110489772A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN110489772A (zh) | 2019-11-22 |
US20190354646A1 (en) | 2019-11-21 |
US11275876B2 (en) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6795790B1 (en) | Method and system for generating sets of parameter values for test scenarios | |
US20080244488A1 (en) | Method for laying out decoupling cells and apparatus for laying out decoupling cells | |
US20150074674A1 (en) | Apparatus and method for adjusting priorities of tasks | |
JP5029096B2 (ja) | 電源ノイズモデル生成方法及び電源ノイズモデル生成装置 | |
US20100162185A1 (en) | Electronic circuit design | |
KR20050121716A (ko) | 집적회로들에서의 타이밍 관련 불량들을 디버깅하기 위한이벤트 기반 테스트 방법 | |
CN110069284A (zh) | 一种基于opu指令集的编译方法及编译器 | |
JP2019200524A (ja) | プログラム、情報処理装置、および情報処理方法 | |
KR20000011359A (ko) | 고속테스트패턴평가장치 | |
WO2020137566A1 (ja) | テスト環境決定装置及びテスト環境決定方法 | |
US20060031808A1 (en) | System and method for creating timing constraint information | |
CN117272894A (zh) | 用于电路设计调试的机器学习技术方法、装置及系统 | |
JP5034834B2 (ja) | 半導体装置、および半導体装置における制御方法 | |
US20040143813A1 (en) | System development supporting apparatus, system development supporting method, and computer-readable recorded medium | |
JP7107797B2 (ja) | 情報処理方法及び情報処理システム | |
CN110008112B (zh) | 模型训练方法和装置、业务测试方法和装置 | |
JP7117253B2 (ja) | パラメータ設定支援装置、パラメータ設定支援方法及びプログラム | |
JP5998926B2 (ja) | 電流モデル作成方法及びcad装置 | |
Singhal et al. | Spark job performance analysis and prediction tool | |
JPWO2018167940A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US20220350318A1 (en) | Information processing apparatus, search method, and storage medium | |
JP7419843B2 (ja) | 並列処理装置 | |
CN117034821B (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
JP7200659B2 (ja) | 決定方法、決定装置及び決定プログラム | |
JP7247422B2 (ja) | 情報処理装置、情報処理方法、及び情報処理プログラム |