(57)【要約】  シミュレーション装置（１００）において、算出部（１１３）が、複数の命令コードの各命令コード（２２１）の実行にかかる実行処理時間を算出する。記憶部（１４０）は、処理単位に含まれる複数の命令コードの実行処理時間を変更する変更規則が設定されている変更設定情報（２３０）を記憶する。変更部（１１５）は、変更設定情報（２３０）に設定されている変更規則に従って実行処理時間を変更処理時間として変更する。また、変更部（１１５）は、複数の命令コードの各命令コードの変更処理時間を、全体時刻（２４０）に計上する。シミュレーション実行部（１１６）は、全体時刻（２４０）を用いてターゲットプログラム（２１０）のシミュレーションを実行する。監視部（１２０）は、シミュレーションの実行中にターゲットモデルの状態を監視する。
2019092849.tif 000002
【特許請求の範囲】
【請求項１】
複数の命令コードから成る処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置において、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する算出部と、
前記処理単位と、前記処理単位に含まれる前記複数の命令コードの実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部と、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上する変更部と、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行するシミュレーション実行部と、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視する監視部と
を備えたシミュレーション装置。
【請求項２】
前記ターゲットプログラムは、複数の処理単位を含み、
前記変更設定情報は、前記複数の処理単位のうち実行処理時間を変更する処理単位が設定され、
前記シミュレーション装置は、
前記複数の処理単位の各々を成す前記複数の命令コードが記憶された命令メモリから命令コードを取り出す命令取り出し部と、
前記命令取り出し部により取り出された命令コードが、前記変更設定情報に設定されている処理単位に含まれるかを判定する判定部と
を備え、
前記変更部は、
前記命令取り出し部により取り出された命令コードが、前記変更設定情報に設定されている処理単位に含まれる場合に、前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更する請求項１に記載のシミュレーション装置。
【請求項３】
前記変更設定情報は、処理単位の名称と、前記命令メモリにおける処理単位の開始アドレスと、前記命令メモリにおける処理単位の終了アドレスとを含み、
前記判定部は、
前記命令取り出し部により取り出された命令コードの前記命令メモリにおけるアドレスが、前記開始アドレスと前記終了アドレスの間に含まれる場合に前記命令コードが、前記変更設定情報に設定されている処理単位に含まれると判定する請求項２に記載のシミュレーション装置。
【請求項４】
前記変更設定情報は、処理単位の名称と変更時刻の範囲とが設定され、
前記判定部は、
前記命令取り出し部により取り出された命令コードを実行する時刻が、前記変更時刻の範囲に含まれる場合に、前記命令コードが前記変更設定情報に設定されている処理単位に含まれると判定する請求項２に記載のシミュレーション装置。
【請求項５】
前記変更設定情報は、前記変更規則として、正負倍率、もしくは、正負固定値で指定する請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記記憶部は、
前記ターゲットモデルのうちの監視対象である監視対象モデルと、前記監視対象モデルの状態を表す状態情報と、前記状態情報の期待値とが設定された監視対象情報を記憶し、
前記監視部は、
前記監視対象情報に基づいて、前記監視対象モデルの前記状態情報の時刻変化状況を監視し、監視結果を出力する請求項１から５のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記監視対象情報は、
前記監視対象モデルの前記状態情報として、ソフトウェアの内部変数名、レジスタ名、信号名、あるいはアドレスが設定されている請求項６に記載のシミュレーション装置。
【請求項８】
複数の命令コードから成る処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置であって、前記処理単位と、前記処理単位に含まれる前記複数の命令コードの実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部を備えたシミュレーション装置のシミュレーション方法において、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出し、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上し、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行し、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視するシミュレーション方法。
【請求項９】
複数の命令コードから成る処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置であって、前記処理単位と、前記処理単位に含まれる前記複数の命令コードの実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部を備えたシミュレーション装置のシミュレーションプログラムにおいて、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する算出処理と、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上する変更処理と、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行するシミュレーション実行処理と、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視する監視処理と
をコンピュータである前記シミュレーション装置に実行させるシミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法およびシミュレーションプログラムに関する。
【背景技術】
【０００２】
シミュレーションのターゲットとなるターゲットＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を含むターゲットモデルをホストコンピュータに構築し、シミュレーションを行うシミュレータがある。このシミュレータは、時間情報を含む試験シナリオと、この試験シナリオを解釈するシナリオ解釈部と、シナリオを実行するシナリオ実行部とを備える。シナリオ実行部は、解釈結果に基づいて、シナリオに記載された時間にシナリオに記載された信号を駆動する。このような構成により、シミュレータは、実機あるいはハードウェアシミュレータが無い場合でも、システム試験を行うことができる。【０００３】
特許文献１には、複数のハードウェアモデルを連動して行うシミュレーションによって、ソフトウェアの動作検証を行う方式が開示されている。特許文献１の方式は、ハードウェアモデルの時間経過を加速することにより、ソフトウェアの動作検証に要する時間を短縮する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−２６７８８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１の技術では、ＣＰＵ負荷変動あるいはハードウェア待ちといったタイミングのずれ、すなわち、タイミングロバストによる動作検証をすることができない。【０００６】
本発明の目的は、タイミングロバストによる動作検証を可能とし、検証品質を向上させることである。
【課題を解決するための手段】
【０００７】
本発明に係るシミュレーション装置は、複数の命令コードから成る処理単位を含むターゲットプログラムを仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置において、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する算出部と、
前記処理単位と、前記処理単位に含まれる前記複数の命令コードの実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部と、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上する変更部と、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行するシミュレーション実行部と、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視する監視部とを備えた。
【発明の効果】
【０００８】
本発明に係るシミュレーション装置では、変更部が、変更規則に従って実行処理時間を変更処理時間として変更する。そして、変更部が、複数の命令コードの各命令コードの変更処理時間を、シミュレーションの全体時刻に計上する。また、シミュレーション実行部が、全体時刻を用いてターゲットプログラムのシミュレーションを実行する。そして、監視部が、シミュレーションの実行中にターゲットモデルの状態を監視する。よって、本発明に係るシミュレーション装置によれば、簡単な構成により命令コードの実行のタイミングのずれを発生させ、タイミングロバストによる動作検証を可能とするので、検証品質を向上させることができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係るシミュレーション装置１００の構成図。
【図２】実施の形態１に係るシミュレーション装置１００によるシミュレーション処理Ｓ１００のフロー図。
【図３】実施の形態１に係るシミュレーション処理Ｓ１００を説明するための図。
【図４】実施の形態１に係る変更設定情報２３０の例を示す図。
【図５】実施の形態１に係る監視対象情報２５０の例を示す図。
【図６】実施の形態１において実行処理時間を変更せずにシミュレーションを行った場合の模式図。
【図７】実施の形態１において実行処理時間を変更してシミュレーションを行った場合の模式図。
【図８】実施の形態１の変形例に係るシミュレーション装置１００の構成図。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、図を用いて説明する。なお、各図中、同一または相当する部分には、同一符号を付している。実施の形態の説明において、同一または相当する部分については、説明を適宜省略または簡略化する。
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
図１を用いて、本実施の形態に係るシミュレーション装置１００の構成を説明する。
シミュレーション装置１００は、コンピュータである。シミュレーション装置１００は、プロセッサ９１０を備えるとともに、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０といった他のハードウェアを備える。プロセッサ９１０は、信号線を介して他のハードウェアと接続され、これら他のハードウェアを制御する。
【００１２】
シミュレーション装置１００は、機能要素として、ＣＰＵモデル１１０と、監視部１２０と、ＨＷ（ハードウェア）モデル１３０と、記憶部１４０とを備える。ＣＰＵモデル１１０は、命令取り出し部１１１と、命令実行部１１２と、算出部１１３と、判定部１１４と、変更部１１５と、シミュレーション実行部１１６とを備える。ＨＷモデル１３０は、メモリモデル１３１と、外部ＩＯモデル１３２と、周辺装置モデル１３３と、ＣＰＵバスモデル１３４とを備える。記憶部１４０には、変更設定情報２３０と、全体時刻２４０と、監視対象情報２５０が記憶されている。
【００１３】
シミュレーション装置１００は、ＣＰＵモデル１１０とＨＷモデル１３０から成る仮想モデルを、シミュレーションのターゲットモデルとする。ＣＰＵモデル１１０とＨＷモデル１３０から成るターゲットモデルは、シミュレーション装置１００の仮想環境に構築された仮想モデルである。
【００１４】
ＣＰＵモデル１１０と監視部１２０の機能は、ソフトウェアにより実現される。
記憶部１４０は、メモリ９２１に備えられる。メモリ９２１には、記憶部１４０の他に、ターゲットモデルを動作させるターゲットプログラム２１０が記憶される。また、メモリ９２１は、ターゲットプログラム２１０の命令コード２２１を記憶する命令メモリ２２０を備える。
図１では、ＨＷモデル１３０がプロセッサ９１０の外側に記載されているが、ＨＷモデル１３０はプロセッサ９１０と各種ハードウェアにより仮想的に構築される。
【００１５】
プロセッサ９１０は、シミュレーションプログラムを実行する装置である。シミュレーションプログラムは、ＣＰＵモデル１１０と監視部１２０の機能を実現するプログラムである。
プロセッサ９１０は、演算処理を行うＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）である。プロセッサ９１０の具体例は、ＣＰＵ、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
【００１６】
メモリ９２１は、データを一時的に記憶する記憶装置である。メモリ９２１の具体例は、ＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、あるいはＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
【００１７】
補助記憶装置９２２は、データを保管する記憶装置である。補助記憶装置９２２の具体例は、ＨＤＤである。また、補助記憶装置９２２は、ＳＤ（登録商標）メモリカード、ＣＦ、ＮＡＮＤフラッシュ、フレキシブルディスク、光ディスク、コンパクトディスク、ブルーレイ（登録商標）ディスク、ＤＶＤといった可搬記憶媒体であってもよい。なお、ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略語である。ＳＤ（登録商標）は、Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌの略語である。ＣＦは、ＣｏｍｐａｃｔＦｌａｓｈの略語である。ＤＶＤは、Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋの略語である。
【００１８】
入力インタフェース９３０は、マウス、キーボード、あるいはタッチパネルといった入力装置と接続されるポートである。入力インタフェース９３０は、具体的には、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）端子である。なお、入力インタフェース９３０は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）と接続されるポートであってもよい。シミュレーション装置１００は、入力インタフェース９３０を介して、変更設定情報２３０あるいは監視対象情報２５０といった情報を取得し、記憶部１４０に記憶する。
【００１９】
出力インタフェース９４０は、ディスプレイといった出力機器のケーブルが接続されるポートである。出力インタフェース９４０は、具体的には、ＵＳＢ端子またはＨＤＭＩ（登録商標）（Ｈｉｇｈ  Ｄｅｆｉｎｉｔｉｏｎ  Ｍｕｌｔｉｍｅｄｉａ  Ｉｎｔｅｒｆａｃｅ）端子である。ディスプレイは、具体的には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）である。シミュレーション装置１００は、出力インタフェース９４０を介して、監視部１２０による監視結果といった情報をディスプレイに表示する。
【００２０】
シミュレーションプログラムは、プロセッサ９１０に読み込まれ、プロセッサ９１０によって実行される。メモリ９２１には、シミュレーションプログラムだけでなく、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）も記憶されている。プロセッサ９１０は、ＯＳを実行しながら、シミュレーションプログラムを実行する。シミュレーションプログラムおよびＯＳは、補助記憶装置９２２に記憶されていてもよい。補助記憶装置９２２に記憶されているシミュレーションプログラムおよびＯＳは、メモリ９２１にロードされ、プロセッサ９１０によって実行される。なお、シミュレーションプログラムの一部または全部がＯＳに組み込まれていてもよい。
【００２１】
シミュレーション装置１００は、プロセッサ９１０を代替する複数のプロセッサを備えていてもよい。これら複数のプロセッサは、シミュレーションプログラムの実行を分担する。それぞれのプロセッサは、プロセッサ９１０と同じように、シミュレーションプログラムを実行する装置である。
【００２２】
シミュレーションプログラムにより利用、処理または出力されるデータ、情報、信号値および変数値は、メモリ９２１、補助記憶装置９２２、または、プロセッサ９１０内のレジスタあるいはキャッシュメモリに記憶される。
【００２３】
シミュレーションプログラムは、ＣＰＵモデル１１０と監視部１２０の各部の「部」を「処理」、「手順」あるいは「工程」に読み替えた各処理、各手順あるいは各工程を、コンピュータに実行させる。ＣＰＵモデル１１０と監視部１２０の各部とは、命令取り出し部１１１、命令実行部１１２、算出部１１３、判定部１１４、変更部１１５、シミュレーション実行部１１６、および監視部１２０の各部である。また、シミュレーション方法は、シミュレーション装置１００がシミュレーションプログラムを実行することにより行われる方法である。
シミュレーションプログラムは、コンピュータ読取可能な記録媒体に格納されて提供されてもよい。また、シミュレーションプログラムは、プログラムプロダクトとして提供されてもよい。
【００２４】
＊＊＊動作の説明＊＊＊
図２を用いて、本実施の形態に係るシミュレーション装置１００によるシミュレーション処理Ｓ１００について説明する。また、図３は、本実施の形態に係るシミュレーション処理Ｓ１００を説明するための図である。図３では、シミュレーション処理Ｓ１００の動作説明のため、処理の対象となる命令メモリ２２０のアドレスと命令コード２２１、および、その処理の実行処理時間と変更後の変更処理時間の例を対応付けて記載している。
シミュレーション装置１００は、複数の命令コードから成る処理単位を含むターゲットプログラム２１０を仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行う。ターゲットプログラム２１０は、複数の処理単位を含む。また、複数の処理単位の各々は、複数の命令コードから成る。シミュレーション装置１００は、シミュレーションの時刻設定を表す全体時刻２４０に基づいて、シミュレーションを行う。
【００２５】
ステップＳ１０１において、命令取り出し部１１１は、命令メモリ２２０から命令コード２２１を取り出す。図３の例では、命令取り出し部１１１は、命令メモリ２２０のアドレス０ｘ０００５から命令コード２２１としてＡＤＲを取り出す。
ステップＳ１０２において、命令実行部１１２は、取り出された命令コード２２１を実行する。図３の例では、命令実行部１１２は、命令メモリ２２０から取り出したＡＤＲを実行する。
ステップＳ１０３において、算出部１１３は、複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する。具体的には、算出部１１３は、ステップＳ１０２で実行された命令コード２２１について、命令コード２２１の実行にかかる実行処理時間を算出する。図３の例では、算出部１１３は、ＡＤＲの実行処理時間が３ｃｙｃｌｅであると算出している。
【００２６】
ステップＳ１０４において、判定部１１４は、命令取り出し部１１１により取り出された命令コード２２１が、変更設定情報２３０に設定されている処理単位に含まれるかを判定する。すなわち、判定部１１４は、命令取り出し部１１１により取り出された命令コード２２１が、実行処理時間を変更させるべき処理単位に含まれる命令コードかを判定する。処理単位とは、関数あるいはタスクといった処理の単位である。
【００２７】
図４を用いて、本実施の形態に係る変更設定情報２３０について説明する。
変更設定情報２３０には、処理単位と、処理単位に含まれる複数の命令コードの実行処理時間を変更する変更規則とが設定されている。ターゲットプログラム２１０は、複数の処理単位を含んでいるが、変更設定情報２３０には、複数の処理単位のうち実行処理時間を変更する処理単位が設定されている。つまり、変更設定情報２３０に設定されている処理単位は、自処理単位を構成する命令コードの実行処理時間を変更する処理単位である。
【００２８】
変更設定情報２３０は、処理単位の名称と、命令メモリ２２０における処理単位の開始アドレスと、命令メモリ２２０における処理単位の終了アドレスとを含む。具体的には、変更設定情報２３０には、処理単位名２３１と、開始アドレス２３２と、終了アドレス２３３と、サイズ２３４と、変更規則２３５とが設定されている。処理単位名２３１は、複数の命令コードから成る処理単位の名称である。開始アドレス２３２は、処理単位の命令メモリ２２０における開始アドレスである。終了アドレス２３３は、処理単位の命令メモリ２２０における終了アドレスである。サイズ２３４は処理単位のサイズである。変更規則２３５は、命令コードの実行処理時間を変更する変更方法である。変更規則２３５は、例えば、正負倍率、もしくは、正負固定値により指定される。なお、終了アドレス２３３とサイズ２３４のうち少なくともいずれかが変更設定情報２３０設定されていればよい。つまり、処理単位の終わりがどこなのかを示す情報があれば良い。処理単位の終わりがどこなのかを示す情報であれば、アドレスあるいはサイズでなくてもその他の情報でも構わない。
図４では、処理単位ｆｕｎｃＡについては、実行処理時間を３０％伸長させるように変更する変更規則２３５が設定されている。また、処理単位ｆｕｎｃＢについては、実行処理時間を１０％短縮させるように変更する変更規則２３５が設定されている。
【００２９】
判定部１１４は、命令コード２２１の命令メモリ２２０におけるアドレスが、開始アドレス２３２と終了アドレス２３３の間に含まれる場合に、この命令コード２２１が変更設定情報２３０に設定されている処理単位に含まれると判定する。つまり、判定部１１４は、変更設定情報２３０に設定されている処理単位のうち、命令メモリ２２０から取り出した命令コードのアドレスを含む処理単位があるかを判定する。命令コードのアドレスを含む処理単位がある場合、処理はステップＳ１０５に進む。命令コードのアドレスを含む処理単位がない場合、処理はステップＳ１０６に進む。
なお、開始アドレス２３２および終了アドレス２３３は、仮想アドレスあるいは物理アドレスのどちらでも構わない。プロセッサ内部で扱う仮想アドレスと、メモリの物理アドレスとが、同じ場合と異なる場合がある。異なる場合は仮想アドレスから物理アドレスに変換する処理が行われるが、本実施の形態はこのような処理にも対応可能である。
【００３０】
なお、図２では、判定部１１４は、算出部１１３により実行処理時間が算出された命令コードについて、変更対象の処理単位に含まれるかを判定している。しかし、判定部１１４は、シミュレーションの実行中の命令コードの実行を監視し、変更部１１５へ実行中の命令が実行処理時間を変更する命令コードであることを通知してもよい。
【００３１】
ステップＳ１０５において、変更部１１５は、変更設定情報２３０に設定されている変更規則に従って実行処理時間を変更し、変更処理時間とする。具体的には、図３の命令コードＡＤＲのアドレス０ｘ０００５が、図４のｆｕｎｃＡのアドレス０ｘＸＸＸから０ｘＹＹＹに含まれていた場合、ＡＤＲは実行処理時間を変更する命令コードである。そして、変更規則は「＋３０％」である。したがって、変更部１１５は、ＡＤＲの実行処理時間３ｃｙｃｌｅを３０％増の３．９ｃｙｃｌｅとする。ここで、変更した３．９ｃｙｃｌｅを変更処理時間ともいう。
ステップＳ１０６において、変更部１１５は、複数の命令コードの各命令コードの変更処理時間を、シミュレーション全体の時刻設定を表す全体時刻２４０に計上する。具体的には、変更部１１５は、命令コードの実行処理時間を、記憶部１４０に記憶されている全体時刻２４０に計上する。ここで、命令コードが実行処理時間を変更すべき処理単位に含まれている場合は、全体時刻２４０に計上される時間は、ステップＳ１０５で変更された変更後の実行処理時間、すなわち変更処理時間である。また、命令コードが実行処理時間を変更すべき処理単位に含まれていない場合は、全体時刻２４０に計上される時間は、ステップＳ１０３で算出された実行処理時間である。
【００３２】
ステップＳ１０７において、変更部１１５は、シミュレーションを実行するターゲットプログラム２１０に含まれる全ての処理単位の全ての命令コードについて、処理が完了したかを判定する。全ての処理単位について処理が完了していれば、処理はステップＳ１０８に進む。処理が完了していない処理単位があれば、処理はステップＳ１０１に戻る。
【００３３】
ステップＳ１０８において、シミュレーション実行部１１６は、全体時刻２４０を用いてシミュレーションを実行する。具体的には、シミュレーション実行部１１６は、全体時刻２４０に基づいて、ＣＰＵモデル１１０を用いてターゲットプログラム２１０を実行し、ＨＷモデル１３０のシミュレーションを行う。
【００３４】
ステップＳ１０９において、監視部１２０は、シミュレーションの実行中にターゲットモデルの状態を監視する。記憶部１４０には、ターゲットモデルのうちの監視対象である監視対象モデルと、監視対象モデルの状態を表す状態情報と、状態情報の期待値とが設定された監視対象情報２５０が記憶されている。監視部１２０は、監視対象情報２５０に基づいて、監視対象モデルの状態情報の時刻変化状況を監視し、監視結果を出力する。具体的には、監視部１２０は、シミュレーション装置１００内の任意のモデルの任意の内部状態を監視する。また、監視部１２０は、監視対象情報２５０に設定されている監視対象モデルの状態情報について、その時刻変化状況をディスプレイに表示するといった方法で外部に通知する。
【００３５】
図５を用いて、本実施の形態に係る監視対象情報２５０について説明する。
監視対象情報２５０には、ＣＰＵモデルおよびＨＷモデル１３０からなるターゲットモデルのうち、監視部１２０が監視すべき対象の監視対象モデル２５１が設定される。図５では、監視対象モデル２５１の例としてタイマが記載されている。また、監視対象モデル２５１の状態を表す状態情報２５２が設定される。監視対象モデル２５１の状態情報２５２として、ソフトウェアの内部変数名、レジスタ名、信号名、あるいはアドレスといった情報が設定される。また、状態情報２５２の期待値２５３が設定される。期待値２５３は、監視条件ともいう。期待値２５３として、前時刻と等しい、もしくは、前時刻より大きい、もしくは、前時刻より値以上大きい、もしくは、前時刻より小さい、もしくは、前時刻より値以上小さい、といった情報が設定される。
監視部１２０は、シミュレーションの実行中に、ＣＰＵモデルおよびＨＷモデル１３０について、監視対象のモデルの対象信号あるいは対象変数の時刻変化状況を監視する。監視部１２０は、監視結果を外部へ通知する。例えば、監視部１２０は、対象信号あるいは対象変数が、期待値以外の値をとった場合には不具合が発生したことを表す警告情報を外部へ通知してもよい。
以下に、監視対象モデル２５１のその他の具体例について説明する。
監視対象モデル２５１の具体例には、メモリがある。また、具体例として、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）、割り込みコントローラ、モータ、ＦＰＧＡ、あるいはＡＳＩＣといった周辺装置モデルがある。ＦＰＧＡは、Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙの略語である。ＡＳＩＣは、Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔの略語である。また、具体例として、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ／Ｔｒａｎｓｍｉｔｔｅｒ）あるいはＰＣＩｅといった外部ＩＯモデルがある。また、ＣＰＵモデルも監視対象モデル２５１の一つである。
メモリでは、特定アドレスに格納されているデータあるいはメモリの入出力ピン（アドレス、チップセレクト、あるいはライトイネーブル等）が監視される。ターゲットプログラムの変数は、基本的にはメモリに格納されており、アドレス指定で監視される。
ＤＭＡあるいは割り込みコントローラでは、設定および状態を格納するレジスタあるいは割り込みピン等が監視される。
モータでは、主にピンが監視される。モータの出力ピンが想定の値を出しているかといった状態が監視される。
ＦＰＧＡあるいはＡＳＩＣでは、ＤＭＡ等と同様に、内部レジスタ、あるいは入出力ピン等が監視される。
ＵＡＲＴあるいはＰＣＩｅでは、ＤＭＡ等と同様に、内部レジスタ等が監視される。通信データは必ず受信レジスタあるいは送信レジスタに格納されるので、その通信データが監視される。また、受信中あるいはエラーといった状態もレジスタに格納されるので、その状態が監視される。ＵＡＲＴあるいはＰＣＩｅでは、外部ピンもＤＭＡ等と同様に監視される。
ＣＰＵモデルでは、ＣＰＵ特有の内部レジスタが監視される。具体的には、プログラムカウンタ（ＰＣ）、ステータスレジスタ、あるいは汎用レジスタ値といった情報が監視される。
【００３６】
図６は、実行処理時間を変更せずにシミュレーションを行った場合の模式図である。図７は、実行処理時間を変更してシミュレーションを行った場合の模式図である。
図６および図７を用いて、本実施の形態に係るシミュレーション処理について、さらに説明する。
図６では、タスクＡ、タスクＣ、およびタスクＢの順で処理が実行されている。タスクＢの途中でタスクＡ用のデータセット処理が行われている。そして、タスクＢの処理が完了した後、タイマ割込みによりタスクＡが起動される。すなわち、タスクＡとタスクＢとが同期している。
【００３７】
図７では、図６のシミュレーションにおいてタイミングロバストを発生させることにより、タイミングロバスト検証を行う様子を示している。
（１）図７では、タスクＢについての設定規則が、実行処理時間を３０％伸長することであるとする。上述したステップＳ１０１からステップＳ１０７の処理により、タスクＢの各命令コードの実行処理時間が３０％伸長される。よって、タスクＢの各命令コードの実行タイミングが変更される。
（２）図６と同様に、タスクＡ、タスクＣ、およびタスクＢの順で処理が実行される。
（３）タスクＡ用のデータセット処理中にタイマ割込みが発生するように、タスクＢの各命令コードの実行処理時間が伸長されている。よって、タスクＡ用のデータセット処理中にタイマ割込みが発生する。
（４）タイマ割込みによりタスクＡが起動される。しかし、タスクＡ用のデータセット処理が完了していないため、タスクＡは意図しないデータで演算が実行されることになり、不具合が発生する。
（５）監視部１２０は、シミュレーションの実行中に、監視対象情報２５０に設定されている監視対象モデルの状態情報について、監視を行い、監視結果を外部に通知する。このように、図７のシミュレーション処理では、タイミングロバストを発生させることにより、タイミングロバスト検証を容易に行うことができ、シミュレーション装置１００の検証性能を向上させることができる。
【００３８】
＊＊＊他の構成＊＊＊
＜変形例１＞
シミュレーション装置１００がネットワークを介して他の装置と通信する通信装置を備えていてもよい。通信装置は、レシーバとトランスミッタを有する。通信装置は、有線または無線で、ＬＡＮ、インターネット、あるいは電話回線といった通信網に接続している。通信装置は、具体的には、通信チップまたはＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。シミュレーション装置１００は、通信装置を介して、外部の装置から変更設定情報２３０、あるいは監視対象情報２５０を受信し、記憶部１４０に記憶してもよい。あるいは、シミュレーション装置１００は、通信装置を介して、監視部１２０による監視結果を外部の装置に送信してもよい。
【００３９】
＜変形例２＞
本実施の形態では、変更設定情報に処理単位の名称と、処理単位の開始アドレスおよび終了アドレスとを設定していた。そして、判定部は、命令コードのアドレスと処理単位の開始アドレスおよび終了アドレスとを用いて、命令コードが処理単位に含まれるかを判定していた。
変形例２として、変更設定情報に、処理単位の名称と変更時刻の範囲とが設定されていてもよい。この場合、判定部は、命令取り出し部により取り出された命令コードを実行する時刻が、変更設定情報の変更時刻の範囲に含まれる場合に、命令コードが変更設定情報に設定されている処理単位に含まれると判定する。そして、変更部は、変更規則に従って、変更対象の処理単位に含まれると判定された命令コードの実行処理時間を変更する。その他の処理は、本実施の形態と同様である。
【００４０】
＜変形例３＞
本実施の形態では、命令取り出し部１１１、命令実行部１１２、処理時間算出部１１３、判定部１１４、処理時間変更部１１５、シミュレーション実行部１１６、および監視部１２０の機能がソフトウェアで実現される。以下において、命令取り出し部１１１、命令実行部１１２、処理時間算出部１１３、判定部１１４、処理時間変更部１１５、シミュレーション実行部１１６、および監視部１２０の機能を、ＣＰＵモデル１１０と監視部１２０の機能と称する場合がある。変形例として、ＣＰＵモデル１１０と監視部１２０の機能がハードウェアで実現されてもよい。
【００４１】
図８は、本実施の形態の変形例に係るシミュレーション装置１００の構成を示す図である。
シミュレーション装置１００は、電子回路９０９、メモリ９２１、補助記憶装置９２２、入力インタフェース９３０、および出力インタフェース９４０を備える。
【００４２】
電子回路９０９は、ＣＰＵモデル１１０と監視部１２０の機能を実現する専用の電子回路である。
電子回路９０９は、具体的には、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックＩＣ、ＧＡ、ＡＳＩＣ、または、ＦＰＧＡである。ＧＡは、Ｇａｔｅ  Ａｒｒａｙの略語である。
ＣＰＵモデル１１０と監視部１２０の機能は、１つの電子回路で実現されてもよいし、複数の電子回路に分散して実現されてもよい。
別の変形例として、ＣＰＵモデル１１０と監視部１２０の一部の機能が電子回路で実現され、残りの機能がソフトウェアで実現されてもよい。
【００４３】
プロセッサと電子回路の各々は、プロセッシングサーキットリとも呼ばれる。つまり、シミュレーション装置１００において、ＣＰＵモデル１１０と監視部１２０の機能は、プロセッシングサーキットリにより実現される。
【００４４】
シミュレーション装置１００において、命令取り出し部、命令実行部、処理時間算出部、判定部、処理時間変更部、シミュレーション実行部、および監視部の「部」を「工程」あるいは「処理」に読み替えてもよい。また、命令取り出し処理、命令実行処理、処理時間算出処理、判定処理、処理時間変更処理、シミュレーション実行処理、および監視処理の「処理」を「プログラム」、「プログラムプロダクト」または「プログラムを記録したコンピュータ読取可能な記憶媒体」に読み替えてもよい。
【００４５】
＊＊＊本実施の形態の効果の説明＊＊＊
本実施の形態に係るシミュレーション装置１００では、変更部が変更設定情報に基づいて、変更対象の命令コードの実行処理時間を変更し、変更した実行処理時間をシミュレーションの全体時刻に計上する。よって、シミュレーション装置１００によれば、命令の実行タイミングのずれを模擬することができる。また、シミュレーション装置１００では、監視部が、命令の実行タイミングのずれを模擬しているターゲットモデルの内部状態の時刻変化状況を監視する。よって、シミュレーション装置１００によれば、タイミングロバスト検証が可能となり、ＣＰＵ負荷変動あるいはハードウェア待ちといった外乱要素を考慮した試験品質を確保できる。
【００４６】
また、本実施の形態に係るシミュレーション装置１００では、シミュレーションのターゲットプログラムの任意の処理単位を指定し、指定した処理単位についてのみ実行処理時間を変更する。シミュレーション装置１００では、設定変更情報を用いているので、ソフトウェアの関数あるいはタスクといった処理単位で、命令の実行処理時間の変更を指定することができる。また、シミュレーション装置１００では、処理単位毎にシミュレーション時刻を任意の変更規則で変更することができる。すなわち、シミュレーション装置１００では、ソフトウェアの一部分のみの処理時間を任意の変更規則で変更できる。そして、シミュレーション装置１００では、変更後の仮想時間で模擬対象のターゲットモデル全体が同期して動作する。このように、シミュレーション装置１００では、タスク間、あるいは、ソフトウェアおよびハードウェア間の処理タイミングの重複といった事象の模擬と検証を可能とする。よって、シミュレーション装置１００によれば、タイミングロバスト検証を、簡易な構成で実現することができる。
【００４７】
また、本実施の形態に係るシミュレーション装置１００では、監視部は、実行する命令のアドレスの監視に加え、ターゲットモデルで模擬するレジスタ、信号、およびソフトウェア内部変数といった情報の監視も行う。また、シミュレーション装置１００では、ターゲットモデルの監視対象を、記憶部の監視対象情報を用いて管理することができる。よって、シミュレーション装置１００によれば、シミュレーションに対する要求に応じて監視対象を柔軟に設定することができる。
【００４８】
本実施の形態では、シミュレーション装置の各部を独立した機能ブロックとして説明した。しかし、シミュレーション装置の構成は、上述した実施の形態のような構成でなくてもよい。シミュレーション装置の機能ブロックは、上述した実施の形態で説明した機能を実現することができれば、どのような構成でもよい。
【００４９】
本実施の形態のうち、複数の部分を組み合わせて実施しても構わない。あるいは、この実施の形態のうち、１つの部分を実施しても構わない。その他、この実施の形態を、全体としてあるいは部分的に、どのように組み合わせて実施しても構わない。
なお、上述した実施の形態は、本質的に好ましい例示であって、本発明の範囲、本発明の適用物の範囲、および本発明の用途の範囲を制限することを意図するものではない。上述した実施の形態は、必要に応じて種々の変更が可能である。
【符号の説明】
【００５０】
１００  シミュレーション装置、１１０  ＣＰＵモデル、１１１  命令取り出し部、１１２  命令実行部、１１３  算出部、１１４  判定部、１１５  変更部、１１６  シミュレーション実行部、１２０  監視部、１３０  ＨＷモデル、１３１  メモリモデル、１３２  外部ＩＯモデル、１３３  周辺装置モデル、１３４  ＣＰＵバスモデル、１４０  記憶部、２１０  ターゲットプログラム、２２０  命令メモリ、２２１  命令コード、２３０  変更設定情報、２３１  処理単位名、２３２  開始アドレス、２３３  終了アドレス、２３４  サイズ、２３５  変更規則、２４０  全体時刻、２５０  監視対象情報、２５１  監視対象モデル、２５２  状態情報、２５３  期待値、９０９  電子回路、９１０  プロセッサ、９２１  メモリ、９２２  補助記憶装置、９３０  入力インタフェース、９４０  出力インタフェース、Ｓ１００  シミュレーション処理。
【図１】
2019092849.tif 000003
【図２】
2019092849.tif 000004
【図３】
2019092849.tif 000005
【図４】
2019092849.tif 000006
【図５】
2019092849.tif 000007
【図６】
2019092849.tif 000008
【図７】
2019092849.tif 000009
【図８】
2019092849.tif 000010
【手続補正書】
【提出日】令和1年11月22日(2019.11.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の命令コードから成る処理単位であって前記複数の命令コードの実行処理時間を変更する処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置において、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する算出部と、
前記処理単位と、前記処理単位に含まれる前記複数の命令コードの前記実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部と、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上する変更部と、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行するシミュレーション実行部と、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視する監視部と
を備えたシミュレーション装置。
【請求項２】
前記ターゲットプログラムは、複数の処理単位を含み、
前記変更設定情報は、前記複数の処理単位のうち実行処理時間を変更する処理単位が設定され、
前記シミュレーション装置は、
前記複数の処理単位の各々を成す前記複数の命令コードが記憶された命令メモリから命令コードを取り出す命令取り出し部と、
前記命令取り出し部により取り出された命令コードが、前記変更設定情報に設定されている処理単位に含まれるかを判定する判定部と
を備え、
前記変更部は、
前記命令取り出し部により取り出された命令コードが、前記変更設定情報に設定されている処理単位に含まれる場合に、前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更する請求項１に記載のシミュレーション装置。
【請求項３】
前記変更設定情報は、処理単位の名称と、前記命令メモリにおける処理単位の開始アドレスと、前記命令メモリにおける処理単位の終了アドレスとを含み、
前記判定部は、
前記命令取り出し部により取り出された命令コードの前記命令メモリにおけるアドレスが、前記開始アドレスと前記終了アドレスの間に含まれる場合に前記命令コードが、前記変更設定情報に設定されている処理単位に含まれると判定する請求項２に記載のシミュレーション装置。
【請求項４】
前記変更設定情報は、処理単位の名称と変更時刻の範囲とが設定され、
前記判定部は、
前記命令取り出し部により取り出された命令コードを実行する時刻が、前記変更時刻の範囲に含まれる場合に、前記命令コードが前記変更設定情報に設定されている処理単位に含まれると判定する請求項２に記載のシミュレーション装置。
【請求項５】
前記変更設定情報は、前記変更規則として、正負倍率、もしくは、正負固定値で指定する請求項１から４のいずれか１項に記載のシミュレーション装置。
【請求項６】
前記記憶部は、
前記ターゲットモデルのうちの監視対象である監視対象モデルと、前記監視対象モデルの状態を表す状態情報と、前記状態情報の期待値とが設定された監視対象情報を記憶し、
前記監視部は、
前記監視対象情報に基づいて、前記監視対象モデルの前記状態情報の時刻変化状況を監視し、監視結果を出力する請求項１から５のいずれか１項に記載のシミュレーション装置。
【請求項７】
前記監視対象情報は、
前記監視対象モデルの前記状態情報として、ソフトウェアの内部変数名、レジスタ名、信号名、あるいはアドレスが設定されている請求項６に記載のシミュレーション装置。
【請求項８】
複数の命令コードから成る処理単位であって前記複数の命令コードの実行処理時間を変更する処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置であって、前記処理単位と、前記処理単位に含まれる前記複数の命令コードの前記実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部を備えたシミュレーション装置のシミュレーション方法において、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出し、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上し、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行し、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視するシミュレーション方法。
【請求項９】
複数の命令コードから成る処理単位であって前記複数の命令コードの実行処理時間を変更する処理単位を含むターゲットプログラムを、仮想環境に構築されたターゲットモデルにおいて実行するシミュレーションを行うシミュレーション装置であって、前記処理単位と、前記処理単位に含まれる前記複数の命令コードの前記実行処理時間を変更する変更規則とが設定されている変更設定情報を記憶する記憶部を備えたシミュレーション装置のシミュレーションプログラムにおいて、
前記複数の命令コードの各命令コードの実行にかかる実行処理時間を算出する算出処理と、
前記変更設定情報に設定されている前記変更規則に従って前記実行処理時間を変更処理時間として変更し、前記複数の命令コードの各命令コードの変更処理時間を、前記シミュレーションの時刻設定を表す全体時刻に計上する変更処理と、
前記全体時刻を用いて前記ターゲットプログラムのシミュレーションを実行するシミュレーション実行処理と、
前記シミュレーションの実行中に前記ターゲットモデルの状態を監視する監視処理と
をコンピュータである前記シミュレーション装置に実行させるシミュレーションプログラム。
【国際調査報告】
2019092849.tif 000011
2019092849.tif 000012