(57)【要約】  記憶部（１９０）は対象の動作をシミュレーションして得られたトレースファイル（１９１）を記憶する。受付部（１０１）は順方向再現指示を受け付ける。再現部（１１０）はトレースファイルからトレースデータを１つずつ読み出す。再現部は、今回読み出された新トレースデータに含まれる発生時刻に対応する新表示時刻と前回読み出された旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求める。表示部（１２０）は、求められたタイミングで、グラフィック表示された対象の状態を新トレースデータに含まれる新状態値が示す状態に変化させる。
2016181455.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションされた対象の動作をグラフィック表示で再現するシミュレーション再現装置において、
前記対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを記憶する記憶部と、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付ける受付部と、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出すトレースデータ読み出し部と、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求めるタイミング制御部と、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる表示部と
を備えるシミュレーション再現装置。
【請求項２】
前記受付部は、前記対象の状態を時刻順に１回変化させる順方向コマ送り指示を受け付け、
前記トレースデータ読み出し部は、前記順方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つ読み出す
請求項１に記載のシミュレーション再現装置。
【請求項３】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記トレースデータ読み出し部は、前記逆方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つずつ読み出す
請求項１に記載のシミュレーション再現装置。
【請求項４】
前記新表示時刻と前記旧表示時刻との間隔が下限周期より短い場合、前記タイミングは前記旧表示時刻から前記下限周期ずれた時刻である
請求項１に記載のシミュレーション再現装置。
【請求項５】
前記新表示時刻と前記旧表示時刻との間隔が上限周期より長い場合、前記タイミングは前記旧表示時刻から前記上限周期ずれた時刻である
請求項１に記載のシミュレーション再現装置。
【請求項６】
前記トレースデータは、シミュレーションにおいて対象の状態を表すグラフィック表示が変化した際に発生した遅延時間を含み、
前記タイミング制御部は、前記新表示時刻と、前記旧表示時刻と、前記遅延時間とに基づいて、前記タイミングを求める
請求項１に記載のシミュレーション再現装置。
【請求項７】
グラフィック表示は、前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を含み、
前記表示部は、前記逆方向コマ送り指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻に前記再現時刻を更新する
請求項１に記載のシミュレーション再現装置。
【請求項８】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記表示部は、前記逆方向再現指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻に前記再現時刻を更新する
請求項７に記載のシミュレーション再現装置。
【請求項９】
前記タイミング制御部は、前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を示す時計として機能する再現時計部を備え、
前記再現時計部は、前記順方向再現指示が受け付けられた場合、前記再現時刻を時刻順に進め、
前記タイミング制御部は、前記新表示時刻と、前記旧表示時刻と、前記再現時刻とに基づいて、前記タイミングを求める
請求項１に記載のシミュレーション再現装置。
【請求項１０】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記再現時計部は、前記逆方向再現指示が受け付けられた場合、前記再現時刻を逆順に進める
請求項９に記載のシミュレーション再現装置。
【請求項１１】
前記受付部は、前記対象の状態を時刻順に１回変化させる順方向コマ送り指示を受け付け、
前記再現時計部は、前記順方向コマ送り指示または前記逆方向コマ送り指示が受け付けられた場合、前記再現時刻を前記新表示時刻に更新する
請求項９に記載のシミュレーション再現装置。
【請求項１２】
前記タイミング制御部は、
前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を示す時計として機能する再現時計部と、
前記新表示時刻と前記旧表示時刻との間隔である表示間隔を算出する表示間隔算出部と、
前記対象の状態を変化させるまでの待ち時間を算出する待ち時間算出部とを備え、
前記再現時計部は、前記順方向再現指示が受け付けられた場合、前記再現時刻を時刻順に進め、
前記表示間隔算出部は、前記順方向再現指示が受け付けられた場合、前記旧表示時刻から前記新トレースデータに含まれる発生時刻である前記新表示時刻までの間隔を前記表示間隔として算出し、
前記待ち時間算出部は、算出された表示間隔が上限周期より長い場合、前記再現時計部が示す再現時刻と、前記旧表示時刻から前記上限周期が経過するときの時刻との間隔を前記待ち時間として算出し、
前記表示部は、算出された待ち時間が経過したときを前記タイミングとして、前記対象の状態を変化させ、
前記再現時計部は、算出された待ち時間が経過したときに、前記再現時刻を前記新表示時刻に更新する
請求項１に記載のシミュレーション再現装置。
【請求項１３】
前記受付部は、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示を受け付け、
前記トレースデータ読み出し部は、前記逆方向コマ送り指示が受け付けられた場合、前記発生時刻の逆順に前記トレースデータを１つ読み出し、
前記表示部は、前記再現時計部が示す再現時刻が読み出されたトレースデータに含まれる発生時刻になるまで待たずに、読み出されたトレースデータに含まれる新状態値が示す状態に前記対象の状態を変化させ、
前記再現時計部は、前記新トレースデータに含まれる新状態値が示す状態に前記対象の状態が変化するときに、前記再現時刻を前記新表示時刻に更新する
請求項１２に記載のシミュレーション再現装置。
【請求項１４】
前記受付部は、前記対象の状態を時刻順に１回変化させる順方向コマ送り指示を受け付け、
前記トレースデータ読み出し部は、前記順方向コマ送り指示が受け付けられた場合、前記発生時刻の時刻順に前記トレースデータを１つ読み出し、
前記表示部は、前記再現時計部が示す再現時刻が読み出されたトレースデータに含まれる発生時刻になるまで待たずに、読み出されたトレースデータに含まれる新状態値が示す状態に前記対象の状態を変化させ、
前記再現時計部は、前記新トレースデータに含まれる新状態値が示す状態に前記対象の状態が変化するときに、前記再現時刻を前記新表示時刻に更新する
請求項１２に記載のシミュレーション再現装置。
【請求項１５】
前記トレースデータは、状態が変化する前の状態を示す旧状態値を含み、
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記再現時計部は、前記逆方向再現指示が受け付けられた場合、前記再現時刻を逆順に進め、
前記トレースデータ読み出し部は、前記逆方向再現指示が受け付けられた場合、前記発生時刻の逆順に前記トレースデータを１つずつ読み出し、
前記表示間隔算出部は、前記逆方向再現指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻である前記新表示時刻から前記旧表示時刻までの間隔を前記表示間隔として算出し、
前記待ち時間算出部は、算出された表示間隔が前記上限周期より長い場合、前記再現時計部が示す再現時刻と、前記旧表示時刻から前記上限周期さかのぼった時刻との間隔を前記待ち時間として算出し、
前記表示部は、算出された待ち時間が経過したときに、前記新トレースデータに含まれる新状態値が示す状態に前記対象の状態を変化させ、
前記再現時計部は、算出された待ち時間が経過したときに、前記再現時刻を前記新表示時刻に更新する
請求項１２に記載のシミュレーション再現装置。
【請求項１６】
シミュレーションされた対象の動作をグラフィック表示で再現するシミュレーション再現方法において、
前記対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを記憶し、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付け、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出し、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求め、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる
シミュレーション再現方法。
【請求項１７】
対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを用いるシミュレーション再現プログラムであって、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付ける受付処理と、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出すトレースデータ読み出し処理と、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求めるタイミング制御処理と、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる表示処理と
をコンピュータに実行させるためのシミュレーション再現プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーションされた対象の動作をグラフィック表示で再現する技術に関するものである。
【背景技術】
【０００２】
近年の組み込み機器向けのソフトウェア開発では、ソフトウェアデバッグを早期に開始するため、ソフトウェアが動作するマイクロコンピュータ及びその周辺機器の動作を模擬するソフトウェアシミュレータが用いられる。このシミュレータを用いることにより、実際にソフトウェアが動作するハードウェア試験環境が完成する前からソフトウェアデバッグを行うことができる。【０００３】
ソフトウェアシミュレータは、周辺機器の状態またはマイクロコンピュータの入出力端子の状態をグラフィックで表示することが可能である。例えば、ソフトウェアシミュレータは、周辺機器の状態として、ＬＥＤの点灯および消灯をグラフィックで表示する。また、ソフトウェアシミュレータは、入出力端子の状態として、入出力端子に入出力される信号の信号値をグラフィックで表示する。
そのため、ユーザは、ソフトウェアシミュレータによるシミュレーションの実行中に、周辺機器の状態またはマイクロコンピュータの入出力端子の状態が変化する様子をグラフィックで視認することができる。【０００４】
特許文献１は上記のようなシミュレータを開示している。特許文献１に開示されたシミュレータは以下のように動作する。
シミュレータは、シミュレーションの実行中に状態の変化が発生した発生時刻と変化後の状態値である更新値とをトレースデータとして記録する。
シミュレーションの終了後、シミュレータは、トレースデータの発生時刻を、状態の変化を再現して表示する再現表示時刻に変換する。
そして、シミュレータは、トレースデータを読み出して、再現表示時刻に状態の変化をグラフィックで表示する。
これにより、シミュレータは、シミュレーションを再度実行しなくても、トレースデータを用いて状態の変化を再現することができる。
また、シミュレータは、シミュレーション時の時間の経過速度に対する再現時の時間の経過速度の速度比を用いて発生時刻を再現表示時刻に変換することによって、状態の変化を再現する速さを変更することができる。例えば、シミュレータは状態の変化を高速に再現することができる。【０００５】
しかし、従来のシミュレータは、時間の経過の逆順に、状態の変化を再現することができない。そのため、従来のシミュレータは以下のような点で不便である。
シミュレーションにおいて不正な動作が発生した場合、ユーザは、不正な動作の原因を見つけるために、不正な動作に気付いた時点から過去へ遡りながら状態の変化を確認したい。
しかし、従来のシミュレータは時間の経過の逆順に状態の変化を再現することができないため、ユーザは、シミュレーションを開始した時点から時間の経過順に状態の変化を確認しながら、不正な動作の原因を見つけなければならない。その結果、不正な動作の原因を見つけるまでに時間がかかってしまう。【０００６】
また、従来のシミュレータは、状態の変化を再現している途中で、状態の変化を再現する速さを変えることができない。
そのため、ユーザは、再現の速さが早ければ状態の変化を見落としてしまい、再現の速さが遅ければ状態の変化の確認に時間がかかってしまう。
例えば、再現中のＬＥＤが高速に点滅している場合、ユーザは、視認する時間を確保するために、ＬＥＤが点滅する時間間隔を長くしたい。しかし、従来のシミュレータは、再現中に再現の速さを変えることができないため、ＬＥＤが点滅する時間間隔を長くすることができない。また、再現中のＬＥＤの点灯状態が変わらない場合、ユーザは、確認作業の効率化のために、点灯状態が変わらないＬＥＤが表示され続ける時間を短くしたい。しかし、従来のシミュレータは、再現中に再現の速さを変えることができないため、点灯状態が変わらないＬＥＤが表示され続ける時間を短くすることができない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００７−３３４８１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は、シミュレーションされた対象の動作をグラフィック表示で再現した際に、対象が状態を変化しないまま表示され続ける時間を上限周期以内にすることができるようにすることを目的とする。
【課題を解決するための手段】
【０００９】
本発明のシミュレーション再現装置は、シミュレーションされた対象の動作をグラフィック表示で再現する。
前記シミュレーション再現装置は、
前記対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを記憶する記憶部と、
前記対象が状態を変化しないまま表示され続ける時間の長さの上限である上限周期を受け付ける受付部と、
前記トレースファイルから前記トレースデータを１つずつ読み出すトレースデータ読み出し部と、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻との間隔が前記上限周期より長い場合、前記旧表示時刻から前記上限周期ずれた時刻に、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる表示部とを備える。
【発明の効果】
【００１０】
本発明によれば、シミュレーションされた対象の動作をグラフィック表示で再現した際に、対象が状態を変化しないまま表示され続ける時間を上限周期以内にすることができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１におけるシミュレーション再現装置１００の機能構成図。
【図２】実施の形態１におけるトレースファイル１９１の構成図。
【図３】実施の形態１における再現画面２００の構成図。
【図４】実施の形態１におけるグラフィック表示２１０の変化を示す図。
【図５】実施の形態１における順方向再現ボタン２２１の無効化を示す図。
【図６】実施の形態１における再現部１１０の機能構成図。
【図７】実施の形態１におけるシミュレーション再現方法のフローチャート。
【図８】実施の形態１におけるシミュレーション処理（Ｓ１２０）のフローチャート。
【図９】実施の形態１における再現処理（Ｓ２００）のフローチャート。
【図１０】実施の形態１における初期化処理（Ｓ２１０）のフローチャート。
【図１１】実施の形態１における不可方向処理（Ｓ２２０）のフローチャート。
【図１２】実施の形態１における不可方向判定処理（Ｓ２２１）のフローチャート。
【図１３】実施の形態１におけるボタン無効化処理（Ｓ２２２）のフローチャート。
【図１４】実施の形態１における順方向再現処理（Ｓ２４０）のフローチャート。
【図１５】実施の形態１における表示間隔および待ち時間算出処理（Ｓ２４３）のフローチャート。
【図１６】実施の形態１における逆方向再現処理（Ｓ２５０）のフローチャート。
【図１７】実施の形態１におけるトレースデータ読み出し処理（Ｓ２５２）のフローチャート。
【図１８】実施の形態１における表示間隔および待ち時間算出処理（Ｓ２５３）のフローチャート。
【図１９】実施の形態１における順方向コマ送り処理（Ｓ２６０）のフローチャート。
【図２０】実施の形態１における逆方向コマ送り処理（Ｓ２７０）のフローチャート。
【図２１】実施の形態２におけるトレースファイル１９１の構成図。
【図２２】実施の形態２における表示間隔および待ち時間算出処理（Ｓ２４３）のフローチャート。
【図２３】実施の形態２における表示間隔および待ち時間算出処理（Ｓ２５３）のフローチャート。
【図２４】実施の形態におけるシミュレーション再現装置１００のハードウェア構成図。
【発明を実施するための形態】
【００１２】
実施の形態１．
シミュレーションされた対象の動作をグラフィック表示で再現するシミュレーション再現装置１００について、図１から図２０に基づいて説明する。
【００１３】
＊＊＊構成の説明＊＊＊
図１に基づいて、シミュレーション再現装置１００について説明する。
シミュレーション再現装置１００は、受付部１０１と、再現部１１０と、再現時計部１０２と、表示部１２０と、シミュレーション部１８０と、記憶部１９０とを備える。
【００１４】
受付部１０１は、シミュレーション再現装置１００を使用するユーザによってシミュレーション再現装置１００に入力されるユーザ指示を受け付ける。
ユーザ指示には、シミュレーション指示と、再現指示とがある。
シミュレーション指示は、対象の動作をシミュレーションさせる指示である。
再現指示は、シミュレーションされた対象の動作をグラフィック表示で再現させる指示である。
【００１５】
再現指示には、再現開始指示と、順方向再現指示と、逆方向再現指示と、一時停止指示と、順方向コマ送り指示と、逆方向コマ送り指示と、パラメータ設定指示がある。
再現開始指示は、対象の動作の再現を開始させる指示である。
順方向再現指示は、対象の動作を時刻順に再現する順方向再現を行わせる指示である。
逆方向再現指示は、対象の動作を時刻の逆順に再現する逆方向再現を行わせる指示である。
一時停止指示は、対象の動作の再現を一時停止させる指示である。
順方向コマ送り指示は、対象の状態が時刻順に１回変化する順方向コマ送りを行わせる指示である。
逆方向コマ送り指示は、対象の状態が時刻の逆順に１回変化する逆方向コマ送りを行わせる指示である。
パラメータ設定指示は、対象の動作を再現するときに用いるパラメータを設定させる指示である。
【００１６】
パラメータ設定指示には、上限周期設定指示と、下限周期設定指示とがある。
上限周期設定指示は上限周期１９２を設定させる指示であり、下限周期設定指示は下限周期１９３を設定させる指示である。
上限周期１９２は、対象が状態を変化しないまま表示され続ける時間の長さの上限である。上限周期１９２の初期値は最長周期を表す値である。
下限周期１９３は、対象が状態を変化しないまま表示され続ける時間の長さの下限である。下限周期１９３の初期値は最短周期を表す値である。
【００１７】
シミュレーション部１８０は、シミュレーション指示が受け付けられた場合、シミュレーションプログラムを実行することによって対象の動作をシミュレーションして、トレースファイル１９１を生成する。
対象の動作がシミュレーションされている間、シミュレーションされた対象の動作は、シミュレーション画面にグラフィック表示される。シミュレーション画面は、表示部１２０のシミュレーション画面表示部１２２によって生成される。
【００１８】
図２に基づいて、トレースファイル１９１の構成について説明する。
トレースファイル１９１は、１つ以上のトレースデータ１９１Ｄが記録されたファイルである。図中の１行が１つのトレースデータ１９１Ｄに相当する。
トレースデータ１９１Ｄは、発生時刻と、サイクル数と、対象識別子と、新状態値と、旧状態値とを含んでいる。
【００１９】
発生時刻は、対象の状態の変化が発生した時刻である。
サイクル数は、発生時刻を仮想クロックのカウント数で表した値である。仮想クロックは仮想コンピュータのクロックであり、仮想コンピュータは対象が動作する仮想のコンピュータである。
発生時刻とサイクル数とは以下の関係を有する。仮想クロック周期は仮想クロックの周期である。
サイクル数＝発生時刻／仮想クロック周期
例えば、サイクル数が１６進数で１２Ａナノ秒であり、仮想クロック周期が１６進数でＡナノ秒である場合、発生時刻は１６進数でＢＡ４ナノ秒（＝１２Ａ×Ａ）である。
【００２０】
対象識別子は、対象を識別する。対象の一例はＬＥＤおよび周辺機器である。
新状態値は、対象の状態が変化した後の対象の状態を示す。
旧状態値は、対象の状態が変化する前の対象の状態を示す。
１つ以上のトレースデータ１９１Ｄは、発生時刻の時刻順にトレースファイル１９１に記録されている。
【００２１】
図１に戻って説明を続ける。
再現部１１０は、再現指示が受け付けられた場合、トレースファイル１９１と再現時刻１０９と上限周期１９２と下限周期１９３と初期状態フラグ１９４と操作不可情報１９５とを用いて、対象の動作をグラフィック表示で再現する。
再現時刻１０９は、対象の動作がシミュレーションされた時間帯の時刻を再現した時刻であり、再現時計部１０２から取得される。
初期状態フラグ１９４は、再現されている対象の状態が初期状態であるか否かを示すフラグである。初期状態を示すフラグ値を初期状態値とし、初期状態以外の状態を示すフラグ値を非初期状態値とする。
操作不可情報１９５は、時刻順および時刻の逆順に対象の動作を再現できるかを示す情報である。
【００２２】
再現時計部１０２は、再現時刻１０９を示す時計として機能する。再現時刻１０９は再現部１１０、表示部１２０およびシミュレーション部１８０から随時取得される。
順方向再現指示が受け付けられた場合、再現時計部１０２は再現時刻１０９を時刻順に進める。
逆方向再現指示が受け付けられた場合、再現時計部１０２は再現時刻１０９を逆順に進める。
【００２３】
表示部１２０は、再現画面表示部１２１と、シミュレーション画面表示部１２２とを備える。
再現画面表示部１２１は、再現画面ファイル１９９と再現時刻１０９とを用いて再現画面２００を表示する。
再現画面ファイル１９９は、再現画面２００を構成する画像を備えるファイルである。
【００２４】
図３に基づいて、再現画面２００について説明する。
再現画面２００は、グラフィック表示２１０と、ボタンウィジェット２２０と、メッセージ領域２３０とを備える。
グラフィック表示２１０は、シミュレーションした対象の状態の変化を表すグラフィックである。
例えば、グラフィック表示２１０は、ＬＥＤ１とＬＥＤ２とを対象として、ＬＥＤ１とＬＥＤ２とのそれぞれの点灯状態を示す。また、グラフィック表示２１０は、再現時刻１０９と再現時刻１０９に対応するクロック数とを示す。図中のＴｉｍｅ欄に再現時刻１０９を示し、図中のＣｌｋ欄にクロック数を示している。Ｔｉｍｅ欄の再現時刻１０９およびＣｌｋ欄のクロック数は再現時計部１０２の再現時刻１０９と共に変化する。
例えば、ＬＥＤ１とＬＥＤ２とが消灯している状態から、ＬＥＤ１だけが点灯した場合、図４に示すように、ＬＥＤ１の状態が消灯状態から点灯状態に変化する。
【００２５】
ボタンウィジェット２２０は、順方向再現ボタン２２１と、逆方向再現ボタン２２２と、順方向コマ送りボタン２２３と、逆方向コマ送りボタン２２４と、上限周期ボタン２２５と、下限周期ボタン２２６とを備える。
順方向再現ボタン２２１は順方向再現用のボタンである。順方向再現ボタン２２１が押下されると順方向再現指示が受け付けられる。
逆方向再現ボタン２２２は逆方向再現用のボタンである。逆方向再現ボタン２２２が押下されると逆方向再現指示が受け付けられる。
順方向コマ送りボタン２２３は順方向コマ送り用のボタンである。順方向コマ送りボタン２２３が押下されると順方向コマ送り指示が受け付けられる。
逆方向コマ送りボタン２２４は逆方向コマ送り用のボタンである。逆方向コマ送りボタン２２４が押下されると逆方向コマ送り指示が受け付けられる。
上限周期ボタン２２５は上限周期設定用のボタンである。上限周期ボタン２２５が押下されると上限周期１９２を指定するためのダイアログが表示され、表示されたダイアログで指定された上限周期１９２の設定指示が受け付けられる。
下限周期ボタン２２６は下限周期設定用のボタンである。下限周期ボタン２２６が押下されると下限周期１９３を指定するためのダイアログが表示され、表示されたダイアログで指定された下限周期１９３の設定指示が受け付けられる。
【００２６】
操作不可情報１９５が操作不可方向として逆方向を示す場合、逆方向再現ボタン２２２および逆方向コマ送りボタン２２４は無効化される。逆方向再現ボタン２２２および逆方向コマ送りボタン２２４が無効化された場合、逆方向再現指示および逆方向コマ送り指示は受け付けられず、逆方向再現および逆方向コマ送りは行われない。
操作不可情報１９５が操作不可方向として順方向を示す場合、順方向再現ボタン２２１および順方向コマ送りボタン２２３は無効化される。順方向再現ボタン２２１および順方向コマ送りボタン２２３が無効化された場合、順方向再現指示および順方向コマ送り指示は受け付けられず、順方向再現および順方向コマ送りは行われない。
例えば、順方向再現ボタン２２１が無効化された場合、図５に示すように、順方向再現ボタン２２１の表示は変化する。他のボタンについても同様である。
【００２７】
メッセージ領域２３０はメッセージが表示される領域である。
例えば、無効化された順方向再現ボタン２２１が押下された場合、順方向再現指示が無効である旨のエラーメッセージがメッセージ領域２３０に表示される。
【００２８】
図１に戻って説明を続ける。
シミュレーション画面表示部１２２は、シミュレーション画面ファイル１８９と再現時刻１０９とを用いてシミュレーション画面を表示する。
シミュレーション画面ファイル１８９は、シミュレーション画面を構成する画像を備えるファイルである。
シミュレーション画面は、再現画面２００のグラフィック表示２１０に相当する表示を含んだ画面である。
【００２９】
記憶部１９０は、シミュレーション再現装置１００が使用、生成または入出力するデータを記憶する。
記憶部１９０に記憶されるデータの一例は、トレースファイル１９１、上限周期１９２、下限周期１９３、初期状態フラグ１９４、操作不可情報１９５、再現画面ファイル１９９およびシミュレーション画面ファイル１８９である。
【００３０】
図６に基づいて、再現部１１０の機能構成について説明する。
再現部１１０は、初期化部１１１と、不可方向判定部１１２と、トレースデータ読み出し部１１３と、表示間隔算出部１１４と、待ち時間算出部１１５と、時間待ち部１１６とを備える。さらに、再現部１１０は、周期設定部１１７と再現制御部１１９とを備える。
【００３１】
初期化部１１１は、対象の動作をグラフィック表示で再現するための初期化処理を行う。初期化処理の詳細については後述する。
【００３２】
不可方向判定部１１２は、トレースファイル１９１の参照位置に基づいて有効な再現指示と無効な再現指示とを判定する不可方向判定処理を行う。不可方向判定処理の詳細については後述する。
【００３３】
トレースデータ読み出し部１１３は、トレースファイル１９１からトレースデータ１９１Ｄを読み出す。
順方向再現指示が受け付けられた場合、トレースデータ読み出し部１１３は、発生時刻の時刻順にトレースデータ１９１Ｄを１つずつ読み出す。
逆方向再現指示が受け付けられた場合、トレースデータ読み出し部１１３は、発生時刻の逆順にトレースデータ１９１Ｄを１つずつ読み出す。
順方向コマ送り指示が受け付けられた場合、トレースデータ読み出し部１１３は、発生時刻の時刻順にトレースデータ１９１Ｄを１つ読み出す。
逆方向コマ送り指示が受け付けられた場合、トレースデータ読み出し部１１３は、発生時刻の逆順にトレースデータ１９１Ｄを１つ読み出す。
【００３４】
今回読み出されたトレースデータを新トレースデータという。
新トレースデータに含まれる発生時刻に対応する時刻を新表示時刻という。
順方向再現中に新トレースデータが読み出された場合、新トレースデータに含まれる発生時刻が新表示時刻である。
逆方向再現中に新トレースデータが読み出された場合、新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻が新表示時刻である。補正時間は予め決められた微小な時間である。
【００３５】
前回読み出されたトレースデータを旧トレースデータという。
旧トレースデータに含まれる発生時刻に対応する時刻を旧表示時刻という。
順方向再現中に旧トレースデータが読み出された場合、旧トレースデータに含まれる発生時刻が旧表示時刻である。
逆方向再現中に旧トレースデータが読み出された場合、旧トレースデータに含まれる発生時刻から補正時間さかのぼった時刻が旧表示時刻である。
【００３６】
表示間隔算出部１１４は、新表示時刻と旧表示時刻との間隔である表示間隔を算出する。
順方向再現指示が受け付けられた場合、表示間隔算出部１１４は、旧表示時刻から新表示時刻までの間隔を表示間隔として算出する。
逆方向再現指示が受け付けられた場合、表示間隔算出部１１４は、新表示時刻から旧表示時刻までの間隔を表示間隔として算出する。
【００３７】
待ち時間算出部１１５は、対象の状態を変化させるまでの待ち時間を算出する。
新表示時刻と旧表示時刻との間隔が上限周期１９２より長い場合、待ち時間算出部１１５は、旧表示時刻と上限周期１９２とを用いて待ち時間を算出する。
順方向再現中に算出された表示間隔が上限周期１９２より長い場合、待ち時間算出部１１５は、再現時計部１０２が示す再現時刻１０９と、旧表示時刻から上限周期１９２が経過するときの時刻との間隔を待ち時間として算出する。
逆方向再現中に算出された表示間隔が上限周期１９２より長い場合、待ち時間算出部１１５は、再現時計部１０２が示す再現時刻１０９と、旧表示時刻から上限周期１９２さかのぼった時刻との間隔を待ち時間として算出する。
【００３８】
新表示時刻と旧表示時刻との間隔が下限周期１９３より短い場合、待ち時間算出部１１５は、旧表示時刻と下限周期１９３とを用いて待ち時間を算出する。
順方向再現中に算出された表示間隔が下限周期１９３より短い場合、待ち時間算出部１１５は、再現時計部１０２が示す再現時刻１０９と、旧表示時刻から下限周期１９３が経過するときの時刻との間隔を待ち時間として算出する。
逆方向再現中に算出された表示間隔が下限周期１９３より短い場合、待ち時間算出部１１５は、再現時計部１０２が示す再現時刻１０９と、新表示時刻から下限周期１９３さかのぼった時刻との間隔を待ち時間として算出する。
【００３９】
時間待ち部１１６は、算出された待ち時間が経過するまで待機する。
【００４０】
周期設定部１１７は、上限周期設定指示に従って上限周期１９２を設定し、下限周期設定指示に従って下限周期１９３を設定する。
【００４１】
再現制御部１１９は、再現部１１０が行う処理のうち、上記した各機能が行う処理以外の処理を行う。
【００４２】
表示間隔算出部１１４、待ち時間算出部１１５、時間待ち部１１６および再現時計部１０２は、タイミング制御部１３０を構成する。
タイミング制御部１３０は、新表示時刻と旧表示時刻とに基づいて、グラフィック表示２１０を更新するタイミングを求める。このタイミングは、待ち時間が経過したときである。タイミング制御部１３０の処理をタイミング制御処理という。
再現画面表示部１２１は、求められたタイミングで対象の状態を変化させる。
【００４３】
ここで、順方向再現指示または逆方向再現指示が受け付けられた場合の再現部１１０と再現画面表示部１２１と再現時計部１０２との関係について説明する。
再現画面表示部１２１は、新表示時刻と旧表示時刻との間隔が上限周期より長い場合、旧表示時刻から上限周期ずれた時刻に、グラフィック表示された対象の状態を新トレースデータに含まれる新状態値が示す状態に変化させる。
つまり、再現画面表示部１２１は、時間待ち部１１６が経過信号を出力したときに、新トレースデータに含まれる新状態値が示す状態に対象の状態を変化させる。
また、再現時計部１０２は、時間待ち部１１６が経過信号を出力したときに、再現時刻１０９を新表示時刻に更新する。
【００４４】
一方、一時停止指示が受け付けられた場合、再現部１１０と、再現画面表示部１２１と、再現時計部１０２とは一時停止する。
【００４５】
また、順方向コマ送り指示が受け付けられた場合、再現画面表示部１２１は、再現時計部１０２が示す再現時刻１０９が新トレースデータに含まれる発生時刻になるまで待たずに、新トレースデータに含まれる新状態値が示す状態に対象の状態を変化させる。
そして、再現時計部１０２は、新トレースデータに含まれる新状態値が示す状態に対象の状態が変化するときに、再現時刻１０９を新表示時刻に更新する。
【００４６】
＊＊＊動作の説明＊＊＊
シミュレーション再現装置１００の動作はシミュレーション再現方法に相当する。また、シミュレーション再現方法はシミュレーション再現プログラムの処理手順に相当する。
【００４７】
図７に基づいて、シミュレーション再現方法について説明する。
Ｓ１１０はユーザ指示受付処理である。
Ｓ１１０において、受付部１０１はユーザ指示を受け付ける。
受け付けられるユーザ指示は、シミュレーション指示または再現開始指示である。
【００４８】
Ｓ１１１において、受け付けられたユーザ指示がシミュレーション指示である場合、処理はＳ１２０に進む。
受け付けられたユーザ指示が再現開始指示である場合、処理はＳ２００に進む。
【００４９】
Ｓ１２０はシミュレーション処理である。
Ｓ１２０において、シミュレーション部１８０は、シミュレーションプログラムを実行することによって対象の動作をシミュレーションし、トレースファイル１９１を生成する。
【００５０】
図８に基づいて、シミュレーション処理（Ｓ１２０）について説明する。
Ｓ１２１において、シミュレーション部１８０は、グラフィック表示の初期化をシミュレーション画面表示部１２２に指示する。
そして、シミュレーション画面表示部１２２は、シミュレーション画面ファイル１８９を用いて、初期状態のグラフィック表示を含んだシミュレーション画面を表示する。
【００５１】
Ｓ１２２において、シミュレーション部１８０は、シミュレーションプログラムの実行を開始することによって、シミュレーションを開始する。そして、シミュレーション部１８０は、シミュレーションを開始した開始時刻を記憶部１９０に記憶する。
【００５２】
Ｓ１２３において、シミュレーションしている対象の状態が変化した場合、処理はＳ１２４に進む。
シミュレーションしている対象の状態が変化しない場合、処理はＳ１２６に進む。
【００５３】
Ｓ１２４において、シミュレーション部１８０は、発生時刻とサイクル数と状態識別子と新状態値と旧状態値とを含んだトレースデータ１９１Ｄを生成し、生成したトレースデータ１９１Ｄをトレースファイル１９１に記録する。
【００５４】
Ｓ１２５において、シミュレーション部１８０は、状態識別子と新状態値とをシミュレーション画面表示部１２２に入力することによって、グラフィック表示の更新を指示する。
そして、シミュレーション画面表示部１２２は、グラフィック表示において、状態識別子で識別される対象の状態を新状態値が示す状態に変化させる。
【００５５】
Ｓ１２６において、シミュレーションプログラムの実行が終了した場合、シミュレーション処理（Ｓ１２０）は終了する。
シミュレーションプログラムの実行が終了していない場合、処理はＳ１２３に戻る。
【００５６】
図７に戻り、Ｓ２００から説明を続ける。
Ｓ２００は再現処理である。
Ｓ２００において、再現部１１０は、トレースファイル１９１を用いて、対象の動作をグラフィック表示で再現する。
【００５７】
図９に基づいて、再現処理（Ｓ２００）について説明する。
Ｓ２１０は初期化処理である。
Ｓ２１０において、初期化部１１１は対象の動作の再現を開始するための初期化処理を行う。
【００５８】
図１０に基づいて、初期化処理（Ｓ２１０）について説明する。
Ｓ２１１において、初期化部１１１は、グラフィック表示の初期化を再現画面表示部１２１に指示する。
そして、再現画面表示部１２１は、再現画面ファイル１９９を用いて、初期状態のグラフィック表示２１０を含んだ再現画面２００を表示する。
【００５９】
Ｓ２１２において、初期化部１１１は、再現時刻１０９の初期化を再現時計部１０２に指示する。
そして、再現時計部１０２は再現時刻１０９を初期化する。つまり、再現時計部１０２は、再現時刻１０９を初期値に更新する。再現時刻１０９の初期値はシミュレーションが開始された開始時刻である。
【００６０】
Ｓ２１３において、初期化部１１１はトレースファイル１９１をオープンする。
トレースファイル１９１をオープンすることにより、トレースファイル１９１の中の参照位置を示すファイル参照ポインタが生成される。トレースファイル１９１をオープンしたときのファイル参照ポインタは、トレースファイル１９１の先頭、つまり、時刻順の先頭のトレースデータ１９１Ｄを示す。
【００６１】
Ｓ２１４において、初期化部１１１は初期状態フラグ１９４を初期化する。つまり、初期化部１１１は、初期状態フラグ１９４に初期状態値を設定する。
Ｓ２１４の後、初期化処理（Ｓ２１０）は終了する。
【００６２】
図９に戻り、Ｓ２２０から説明を続ける。
Ｓ２２０は不可方向処理である。
Ｓ２２０において、不可方向判定部１１２は、対象の動作を再現できない不可方向を判定する。不可方向は、時刻順を意味する順方向または時刻の逆順を意味する逆方向である。
そして、再現画面表示部１２１は、不可方向の再現を指示するためのボタンを無効化する。
【００６３】
図１１に基づいて、不可方向処理（Ｓ２２０）について説明する。
Ｓ２２１は不可方向判定処理である。
Ｓ２２１において、不可方向判定部１１２は、対象の動作を再現できない不可方向を判定する。
【００６４】
図１２に基づいて、不可方向判定処理（Ｓ２２１）について説明する。
Ｓ２２１１において、不可方向判定部１１２は、ファイル参照ポインタが示す参照位置を判定する。
ファイル参照ポインタがトレースファイル１９１の先頭を示す場合、処理はＳ２２１２に進む。
ファイル参照ポインタがトレースファイル１９１の終端を示す場合、処理はＳ２２１３に進む。
ファイル参照ポインタがトレースファイル１９１の中間を示す場合、処理はＳ２２１４に進む。
【００６５】
Ｓ２２１２において、不可方向判定部１１２は、操作不可情報１９５に逆方向を示す値を設定する。
【００６６】
Ｓ２２１３において、不可方向判定部１１２は、操作不可情報１９５に順方向を示す値を設定する。
【００６７】
Ｓ２２１４において、不可方向判定部１１２は、操作不可情報１９５に操作不可方向が無いことを示す値を設定する。
Ｓ２２１２からＳ２２１４の後、不可方向判定処理（Ｓ２２１）は終了する。
【００６８】
図１１に戻り、Ｓ２２２から説明を続ける。
Ｓ２２２はボタン無効化処理である。
Ｓ２２２において、再現画面表示部１２１は、不可方向の再現を指示するためのボタンを無効化する。
Ｓ２２２の後、不可方向処理（Ｓ２２０）は終了する。
【００６９】
図１３に基づいて、ボタン無効化処理（Ｓ２２２）について説明する。
Ｓ２２２１において、再現制御部１１９は、操作不可情報１９５が示す操作不可方向を判定する。
操作不可情報１９５が逆方向を示す場合、処理はＳ２２２２に進む。
操作不可情報１９５が順方向を示す場合、処理はＳ２２２３に進む。
操作不可情報１９５が操作不可方向が無いことを示す場合、処理はＳ２２２４に進む。
【００７０】
Ｓ２２２２において、再現制御部１１９は、逆方向再現ボタン２２２および逆方向コマ送りボタン２２４の無効化を再現画面表示部１２１に指示する。
そして、再現画面表示部１２１は、逆方向再現ボタン２２２および逆方向コマ送りボタン２２４を無効化する。また、順方向再現ボタン２２１および順方向コマ送りボタン２２３が無効化されている場合、再現画面表示部１２１は、順方向再現ボタン２２１および順方向コマ送りボタン２２３を有効にする。
【００７１】
Ｓ２２２３において、再現制御部１１９は、順方向再現ボタン２２１および順方向コマ送りボタン２２３の無効化を再現画面表示部１２１に指示する。
そして、再現画面表示部１２１は、順方向再現ボタン２２１および順方向コマ送りボタン２２３を無効化する。また、逆方向再現ボタン２２２および逆方向コマ送りボタン２２４が無効化されている場合、再現画面表示部１２１は、逆方向再現ボタン２２２および逆方向コマ送りボタン２２４を有効にする。
【００７２】
Ｓ２２２４において、再現制御部１１９は、再現指示ボタンの有効化を再現画面表示部１２１に指示する。
そして、再現画面表示部１２１は、順方向再現ボタン２２１と逆方向再現ボタン２２２と順方向コマ送りボタン２２３と逆方向コマ送りボタン２２４とのうち、無効化されているボタンを有効にする。
Ｓ２２２２からＳ２２２４の後、ボタン無効化処理（Ｓ２２２）は終了する。
【００７３】
図９に戻り、Ｓ２３０から説明を続ける。
Ｓ２３０は再現指示受付処理である。
Ｓ２３０において、受付部１０１は再現指示を受け付ける。
受け付けられる再現指示は、順方向再現指示、逆方向再現指示、順方向コマ送り指示、逆方向コマ送り指示、上限周期設定指示、または、下限周期設定処理である。
【００７４】
Ｓ２３１において、受け付けられた再現指示が順方向再現指示である場合、処理はＳ２４０に進む。
受け付けられた再現指示が逆方向再現指示である場合、処理はＳ２５０に進む。
受け付けられた再現指示が順方向コマ送り指示である場合、処理はＳ２６０に進む。
受け付けられた再現指示が逆方向コマ送り指示である場合、処理はＳ２７０に進む。
受け付けられた再現指示が上限周期設定処理である場合、処理はＳ２８１に進む。
受け付けられた再現指示が下限周期設定処理である場合、処理はＳ２８２に進む。
【００７５】
Ｓ２４０は順方向再現処理である。
Ｓ２４０において、再現部１１０は対象の動作を順方向に再現する。
順方向再現処理（Ｓ２４０）の詳細については後述する。
Ｓ２４０の後、処理はＳ２２０に戻る。
【００７６】
Ｓ２５０は逆方向再現処理である。
Ｓ２５０において、再現部１１０は対象の動作を逆方向に再現する。
逆方向再現処理（Ｓ２５０）の詳細については後述する。
Ｓ２５０の後、処理はＳ２２０に戻る。
【００７７】
Ｓ２６０は順方向コマ送り処理である。
Ｓ２６０において、再現部１１０は対象の状態を時刻順に１回変化させる。
順方向コマ送り処理（Ｓ２６０）の詳細については後述する。
Ｓ２６０の後、処理はＳ２２０に戻る。
【００７８】
Ｓ２７０は逆方向コマ送り処理である。
Ｓ２７０において、再現部１１０は対象の状態を時刻の逆順に１回変化させる。
逆方向コマ送り処理（Ｓ２７０）の詳細については後述する。
Ｓ２７０の後、処理はＳ２２０に戻る。
【００７９】
Ｓ２８１は上限周期設定処理である。
Ｓ２８１において、周期設定部１１７は、記憶部１９０に記憶されている上限周期１９２を上限周期設定指示で指定された上限周期に更新する。
Ｓ２８１の後、処理はＳ２２０に戻る。
【００８０】
Ｓ２８２は下限周期設定処理である。
Ｓ２８２において、周期設定部１１７は、記憶部１９０に記憶されている下限周期１９３を下限周期設定指示で指定された下限周期に更新する。
Ｓ２８２の後、処理はＳ２２０に戻る。
【００８１】
図１４に基づいて、順方向再現処理（Ｓ２４０）について説明する。
Ｓ２４１−１において、再現制御部１１９は、再現時計部１０２に再現時刻１０９のインクリメントの開始を指示する。
そして、再現時計部１０２は、再現時刻１０９のインクリメントを開始する。つまり、再現時計部１０２は再現時刻１０９を時刻順に進める。
【００８２】
Ｓ２４１−２において、再現制御部１１９は初期状態フラグ１９４をクリアする。つまり、再現制御部１１９は初期状態フラグ１９４のフラグ値を非初期状態値に更新する。
【００８３】
Ｓ２４２はトレースデータ読み出し処理である。
Ｓ２４２において、トレースデータ読み出し部１１３は、トレースファイル１９１から、ファイル参照ポインタが示すトレースデータ１９１Ｄを読み出す。
そして、トレースデータ読み出し部１１３は、ファイル参照ポインタを時刻順における次のトレースデータ１９１Ｄを示す値に更新する。これにより、トレースデータ１９１Ｄを時刻順に１つずつ読み出すことができる。
但し、時刻順における次のトレースデータ１９１Ｄがない場合、つまり、ファイル参照ポインタが最後のトレースデータ１９１Ｄを示す場合、トレースデータ読み出し部１１３は、トレースファイル１９１の終端を示す値にファイル参照ポインタを更新する。
【００８４】
Ｓ２４３は表示間隔および待ち時間算出処理である。
Ｓ２４３において、表示間隔算出部１１４は旧表示時刻から新表示時刻までの表示間隔を算出し、待ち時間算出部１１５は新表示時刻までの待ち時間を算出する。
表示間隔および待ち時間算出処理（Ｓ２４３）の詳細については後述する。
【００８５】
Ｓ２４４において、時間待ち部１１６は、算出された待ち時間を設定した待ち時間タイマを起動し、待ち時間タイマがタイムアウトするまで待機する。待ち時間タイマは、待ち時間が経過したときにタイムアウトするタイマである。
但し、算出された待ち時間がゼロ以下である場合、Ｓ２４４は実行されず、処理はＳ２４５−１に進む。
【００８６】
Ｓ２４５−１において、再現制御部１１９は、新表示時刻を用いて新クロック数を算出する。また、再現制御部１１９は、読み出されたトレースデータ１９１Ｄから対象識別子と新状態値とを取得する。そして、再現制御部１１９は、新表示時刻と新クロック数と対象識別子と新状態値とを再現画面表示部１２１に入力する。
新クロック数は以下の式で表すことができる。
新クロック数＝新表示時刻／仮想クロック周期
【００８７】
再現画面表示部１２１は、再現画面２００のグラフィック表示２１０において、入力された対象識別子で識別される対象の状態を入力された新状態値が示す状態に変化させる。また、再現画面表示部１２１は、グラフィック表示２１０に表示されている再現時刻を入力された新表示時刻に更新し、グラフィック表示２１０に表示されているクロック数を入力された新クロック数に更新する。
【００８８】
Ｓ２４５−２において、再現制御部１１９は、新表示時刻を再現時計部１０２に入力する。
そして、再現時計部１０２は、再現時刻１０９を新表示時刻に更新し、更新後の再現時刻１０９を時刻順に進める。
【００８９】
Ｓ２４６−１において、トレースデータ読み出し部１１３は、ファイル参照ポインタがトレースファイル１９１の終端を示すか判定する。
ファイル参照ポインタがトレースファイル１９１の終端を示す場合、処理はＳ２４７に進む。
ファイル参照ポインタがトレースファイル１９１の終端を示さない場合、処理はＳ２４６−２に進む。
【００９０】
Ｓ２４６−２において、再現制御部１１９は、順方向再現処理（Ｓ２４０）が開始された後に一次停止指示が受け付けられたか受付部１０１に問い合わせる。
順方向再現処理（Ｓ２４０）が開始された後に一次停止指示が受け付けられた場合、処理はＳ２４７に進む。
順方向再現処理（Ｓ２４０）が開始された後に一次停止指示が受け付けられていない場合、処理はＳ２４２に戻る。
【００９１】
Ｓ２４７において、再現制御部１１９は、再現時計部１０２に再現時刻１０９のインクリメントの停止を指示する。
そして、再現時計部１０２は、再現時刻１０９のインクリメントを停止する。つまり、再現時計部１０２は動作を停止する。
Ｓ２４７の後、順方向再現処理（Ｓ２４０）は終了する。
【００９２】
図１５に基づいて、表示間隔および待ち時間算出処理（Ｓ２４３）について説明する。
Ｓ２４３１において、表示間隔算出部１１４は、今回読み出されたトレースデータ１９１Ｄから発生時刻を取得し、取得した発生時刻を新表示時刻に設定する。
新表示時刻は以下の式で表される。
新表示時刻＝発生時刻
【００９３】
Ｓ２４３２は表示間隔算出処理である。
Ｓ２４３２において、表示間隔算出部１１４は、旧表示時刻から新表示時刻までの間隔である表示間隔を算出する。旧表示時刻は前回算出された新表示時刻である。但し、前回算出された新表示時刻がない場合、つまり、新表示時刻が初めて算出された場合、旧表示時刻は再現時刻１０９の初期値である。
表示間隔は以下の式で表すことができる。
表示間隔＝新表示時刻−旧表示時刻
【００９４】
Ｓ２４３３において、待ち時間算出部１１５は、算出された表示間隔と上限周期１９２とを比較する。
算出された表示間隔が上限周期１９２より長い場合、処理はＳ２４３４に進む。
算出された表示間隔が上限周期１９２以下である場合、処理はＳ２４３５に進む。
【００９５】
Ｓ２４３４において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９と、旧表示時刻から上限周期１９２が経過するときの時刻との間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝（旧表示時刻＋上限周期）−再現時刻
Ｓ２４３４の後、表示間隔および待ち時間算出処理（Ｓ２４３）は終了する。
【００９６】
Ｓ２４３５において、待ち時間算出部１１５は、算出された表示間隔と下限周期１９３とを比較する。
算出された表示間隔が下限周期１９３より短い場合、処理はＳ２４３６に進む。
算出された表示間隔が下限周期１９３以上である場合、処理はＳ２４３７に進む。
【００９７】
Ｓ２４３６において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９と、旧表示時刻から下限周期１９３が経過するときの時刻との間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝（旧表示時刻＋下限周期）−再現時刻
Ｓ２４３６の後、表示間隔および待ち時間算出処理（Ｓ２４３）は終了する。
【００９８】
Ｓ２４３７において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９から新表示時刻までの間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝新表示時刻−再現時刻
Ｓ２４３７の後、表示間隔および待ち時間算出処理（Ｓ２４３）は終了する。
【００９９】
図１６に基づいて、逆方向再現処理（Ｓ２５０）について説明する。
Ｓ２５１−１において、再現制御部１１９は、再現時計部１０２に再現時刻１０９のデクリメントの開始を指示する。
そして、再現時計部１０２は、再現時刻１０９のデクリメントを開始する。つまり、再現時計部１０２は再現時刻１０９を逆順に進める。
【０１００】
Ｓ２５２はトレースデータ読み出し処理である。
Ｓ２５２において、トレースデータ読み出し部１１３は、トレースファイル１９１から、トレースデータ１９１Ｄを時刻の逆順に１つ読み出す。
トレースデータ読み出し処理（Ｓ２５２）の詳細については後述する。
【０１０１】
Ｓ２５３は表示間隔および待ち時間算出処理である。
Ｓ２５３において、表示間隔算出部１１４は新表示時刻から旧表示時刻までの表示間隔を算出し、待ち時間算出部１１５は新表示時刻までの待ち時間を算出する。
表示間隔および待ち時間算出処理（Ｓ２５３）の詳細については後述する。
【０１０２】
Ｓ２５４において、時間待ち部１１６は、算出された待ち時間を設定した待ち時間タイマを起動し、待ち時間タイマがタイムアウトするまで待機する。待ち時間タイマは、待ち時間が経過したときにタイムアウトするタイマである。
但し、算出された待ち時間がゼロ以下である場合、Ｓ２５４は実行されず、処理はＳ２５５−１に進む。
【０１０３】
Ｓ２５５−１において、再現制御部１１９は、新表示時刻を用いて新クロック数を算出する。また、再現制御部１１９は、読み出されたトレースデータ１９１Ｄから対象識別子と旧状態値とを取得する。そして、再現制御部１１９は、新表示時刻と新クロック数と対象識別子と旧状態値とを再現画面表示部１２１に入力する。
新クロック数は以下の式で表すことができる。
新クロック数＝新表示時刻／仮想クロック周期
【０１０４】
再現画面表示部１２１は、再現画面２００のグラフィック表示２１０において、入力された対象識別子で識別される対象の状態を入力された旧状態値が示す状態に変化させる。また、再現画面表示部１２１は、グラフィック表示２１０に表示されている再現時刻を入力された新表示時刻に更新し、グラフィック表示２１０に表示されているクロック数を入力された新クロック数に更新する。
【０１０５】
Ｓ２５５−２において、再現制御部１１９は、新表示時刻を再現時計部１０２に入力する。
そして、再現時計部１０２は、再現時刻１０９を新表示時刻に更新し、更新後の再現時刻１０９を逆順に進める。
【０１０６】
Ｓ２５６−１において、トレースデータ読み出し部１１３は、初期状態フラグ１９４のフラグ値が初期状態値であるか判定する。
初期状態フラグ１９４のフラグ値が初期状態値である場合、処理はＳ２５７に進む。
初期状態フラグ１９４のフラグ値が非初期状態値である場合、処理はＳ２５６−２に進む。
【０１０７】
Ｓ２５６−２において、再現制御部１１９は、逆方向再現処理（Ｓ２５０）が開始された後に一次停止指示が受け付けられたか受付部１０１に問い合わせる。
逆方向再現処理（Ｓ２５０）が開始された後に一次停止指示が受け付けられた場合、処理はＳ２５７に進む。
逆方向再現処理（Ｓ２５０）が開始された後に一次停止指示が受け付けられていない場合、処理はＳ２５２に戻る。
【０１０８】
Ｓ２５７において、再現制御部１１９は、再現時計部１０２に再現時刻１０９のデクリメントの停止を指示する。
そして、再現時計部１０２は、再現時刻１０９のデクリメントを停止する。つまり、再現時計部１０２は動作を停止する。
Ｓ２５７の後、逆方向再現処理（Ｓ２５０）は終了する。
【０１０９】
図１７に基づいて、トレースデータ読み出し処理（Ｓ２５２）について説明する。
Ｓ２５２１において、再現制御部１１９は、ファイル参照ポインタがトレースファイル１９１の先頭、つまり、時刻順の先頭のトレースデータ１９１Ｄを示すか判定する。
ファイル参照ポインタがトレースファイル１９１の先頭を示す場合、処理はＳ２５２２に進む。
ファイル参照ポインタがトレースファイル１９１の先頭以外を示す場合、処理はＳ２５２４に進む。
【０１１０】
Ｓ２５２２において、再現制御部１１９は、再現時刻１０９の初期化を再現時計部１０２に指示する。
そして、再現制御部１１９は再現時刻１０９を初期化する。つまり、再現制御部１１９は、再現時刻１０９を初期値に更新する。
【０１１１】
Ｓ２５２３において、再現制御部１１９は初期状態フラグ１９４を初期化する。つまり、再現制御部１１９は、初期状態フラグ１９４のフラグ値を初期状態値に更新する。
Ｓ２５２３の後、トレースデータ読み出し処理（Ｓ２５２）は終了する。
【０１１２】
Ｓ２５２４において、再現制御部１１９は、ファイル参照ポインタを時刻の逆順における次のトレースデータ１９１Ｄを示す値に更新する。
【０１１３】
Ｓ２５２５において、トレースデータ読み出し部１１３は、トレースファイル１９１から、ファイル参照ポインタが示すトレースデータ１９１Ｄを読み出す。
Ｓ２５２５の後、トレースデータ読み出し処理（Ｓ２５２）は終了する。
【０１１４】
図１８に基づいて、表示間隔および待ち時間算出処理（Ｓ２５３）について説明する。
Ｓ２５３１において、表示間隔算出部１１４は、今回読み出されたトレースデータ１９１Ｄから発生時刻を取得し、取得した発生時刻から補正時間さかのぼった時刻を新表示時刻として算出する。この新表示時刻は、対象の状態が変化する直前の時刻を意味する。
新表示時刻は以下の式で表すことができる。
新表示時刻＝発生時刻−補正時間
【０１１５】
Ｓ２５３２は表示間隔算出処理である。
Ｓ２５３２において、表示間隔算出部１１４は、新表示時刻から旧表示時刻までの間隔である表示間隔を算出する。旧表示時刻は前回算出された新表示時刻である。
表示間隔は以下の式で表すことができる。
表示間隔＝旧表示時刻−新表示時刻
【０１１６】
Ｓ２５３３において、待ち時間算出部１１５は、算出された表示間隔と上限周期１９２とを比較する。
算出された表示間隔が上限周期１９２より長い場合、処理はＳ２５３４に進む。
算出された表示間隔が上限周期１９２以下である場合、処理はＳ２５３５に進む。
【０１１７】
Ｓ２５３４において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９と、旧表示時刻から上限周期１９２さかのぼった時刻との間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝再現時刻−（旧表示時刻−上限周期）
Ｓ２５３４の後、表示間隔および待ち時間算出処理（Ｓ２５３）は終了する。
【０１１８】
Ｓ２５３５において、待ち時間算出部１１５は、算出された表示間隔と下限周期１９３とを比較する。
算出された表示間隔が下限周期１９３より短い場合、処理はＳ２５３６に進む。
算出された表示間隔が下限周期１９３以上である場合、処理はＳ２５３７に進む。
【０１１９】
Ｓ２５３６において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９と、旧表示時刻から下限周期１９３さかのぼった時刻との間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝再現時刻−（旧表示時刻−下限周期）
Ｓ２５３６の後、表示間隔および待ち時間算出処理（Ｓ２５３）は終了する。
【０１２０】
Ｓ２５３７において、待ち時間算出部１１５は、再現時計部１０２から現在の再現時刻１０９を取得する。
そして、待ち時間算出部１１５は、現在の再現時刻１０９から新表示時刻までの間隔を待ち時間として算出する。
待ち時間は以下の式で表すことができる。
待ち時間＝再現時刻−新表示時刻
Ｓ２５３７の後、表示間隔および待ち時間算出処理（Ｓ２５３）は終了する。
【０１２１】
図１９に基づいて、順方向コマ送り処理（Ｓ２６０）について説明する。
Ｓ２６１において、再現制御部１１９は初期状態フラグ１９４をクリアする。つまり、再現制御部１１９は初期状態フラグ１９４のフラグ値を非初期状態値に更新する。
【０１２２】
Ｓ２６２において、トレースデータ読み出し部１１３は、トレースファイル１９１から、ファイル参照ポインタが示すトレースデータ１９１Ｄを読み出す。
そして、トレースデータ読み出し部１１３は、ファイル参照ポインタを時刻順における次のトレースデータ１９１Ｄを示す値に更新する。
但し、時刻順における次のトレースデータ１９１Ｄがない場合、つまり、ファイル参照ポインタが最後のトレースデータ１９１Ｄを示す場合、トレースデータ読み出し部１１３は、トレースファイル１９１の終端を示す値にファイル参照ポインタを更新する。
【０１２３】
Ｓ２６３において、再現制御部１１９は、読み出されたトレースデータ１９１Ｄから発生時刻とサイクル数と対象識別子と新状態値とを取得し、取得した発生時刻とサイクル数と対象識別子と新状態値とを再現画面表示部１２１に入力する。
【０１２４】
再現画面表示部１２１は、再現画面２００のグラフィック表示２１０において、入力された対象識別子で識別される対象の状態を入力された新状態値が示す状態に変化させる。また、再現画面表示部１２１は、グラフィック表示２１０に表示されている再現時刻を入力された発生時刻に更新し、グラフィック表示２１０に表示されているクロック数を入力されたサイクル数に更新する。
【０１２５】
Ｓ２６４において、再現制御部１１９は、取得した発生時刻を再現時計部１０２に入力する。
そして、再現時計部１０２は、再現時刻１０９を発生時刻に更新する。
Ｓ２６４の後、順方向コマ送り処理（Ｓ２６０）は終了する。
【０１２６】
図２０に基づいて、逆方向コマ送り処理（Ｓ２７０）について説明する。
Ｓ２７１において、再現制御部１１９は、ファイル参照ポインタがトレースファイル１９１の先頭、つまり、時刻順における先頭のトレースデータ１９１Ｄを示しているか判定する。
ファイル参照ポインタがトレースファイル１９１の先頭を示している場合、処理はＳ２７２に進む。
ファイル参照ポインタがトレースファイル１９１の先頭以外を示している場合、処理はＳ２７４に進む。
【０１２７】
Ｓ２７２において、再現制御部１１９は、初期状態フラグ１９４を初期化する。つまり、再現制御部１１９は、初期状態フラグ１９４のフラグ値を初期状態値に更新する。
【０１２８】
Ｓ２７３において、再現制御部１１９は、再現時刻１０９の初期化を再現時計部１０２に指示する。
そして、再現時計部１０２は再現時刻１０９を初期化する。つまり、再現時計部１０２は、再現時刻１０９を初期値に更新する。
Ｓ２７３の後、逆方向コマ送り処理（Ｓ２７０）は終了する。
【０１２９】
Ｓ２７４において、再現制御部１１９は、ファイル参照ポインタを時刻の逆順における次のトレースデータ１９１Ｄを示す値に更新する。
【０１３０】
Ｓ２７５において、トレースデータ読み出し部１１３は、トレースファイル１９１から、ファイル参照ポインタが示すトレースデータ１９１Ｄを読み出す。
【０１３１】
Ｓ２７６において、再現制御部１１９は、読み出されたトレースデータ１９１Ｄから発生時刻と状態識別子と旧状態値とを取得する。
再現制御部１１９は、取得した発生時刻から補正時間さかのぼった時刻を新表示時刻として算出する。この新表示時刻は、対象の状態が変化する直前の時刻を意味する。
新表示時刻は以下の式で表すことができる。
新表示時刻＝発生時刻−補正時間
【０１３２】
さらに、再現制御部１１９は、算出した新表示時刻を用いて新クロック数を算出する。
新クロック数は以下の式で表すことができる。
新クロック数＝新表示時刻／仮想クロック周期
【０１３３】
そして、再現制御部１１９は、新表示時刻と新クロック数と状態識別子と旧状態値とを再現画面表示部１２１に入力する。
再現画面表示部１２１は、再現画面２００のグラフィック表示２１０において、入力された対象識別子で識別される対象の状態を入力された旧状態値が示す状態に変化させる。また、再現画面表示部１２１は、グラフィック表示２１０に表示されている再現時刻を入力された新表示時刻に更新し、グラフィック表示２１０に表示されているクロック数を入力された新クロック数に更新する。
【０１３４】
Ｓ２７７において、再現制御部１１９は、新表示時刻を再現時計部１０２に入力する。
そして、再現時計部１０２は、再現時刻１０９を新表示時刻に更新する。
Ｓ２７７の後、逆方向コマ送り処理（Ｓ２７０）は終了する。
【０１３５】
＊＊＊効果の説明＊＊＊
シミュレーション再現装置１００は、一時停止指示に従って対象の状態の変化を一時停止し、逆方向コマ送り指示に従って対象の状態を時刻の逆順に１回変化させる。そのため、ユーザは、対象の状態の変化をさかのぼって確認することができる。そして、不具合が発生した場合に原因の特定が容易になる。
シミュレーション再現装置１００は、順方向コマ送り指示及び逆方向コマ送り指示に従って対象の状態を１回ずつ変化させる。そのため、ユーザは、対象の状態の変化を１つずつ確認することができる。
シミュレーション再現装置１００は、逆方向再生指示に従って対象の状態を時刻の逆順に連続して変化させる。そのため、ユーザは、逆方向コマ送り指示を複数回行わなくても、１回の逆方向再生指示によって、時刻の逆順における対象の状態の変化を連続して確認することができる。
シミュレーション再現装置１００は、上限周期設定指示に従って上限周期１９２を設定し、対象が状態を変化しないまま表示され続ける時間を上限周期１９２より短くする。そのため、対象の状態が長時間変化しないような場合、ユーザは、上限周期設定指示によって上限周期１９２を短くすることによって、確認作業に要する時間を短縮することができる。
シミュレーション再現装置１００は、下限周期設定指示に従って下限周期１９３を設定し、対象が状態を変化しないまま表示され続ける時間を下限周期１９３より長くする。そのため、対象の状態が高速に変化するような場合、ユーザは、下限周期設定指示によって下限周期１９３を長くすることによって、確認の見落としを防止することができる。
シミュレーション再現装置１００は、上限周期１９２と下限周期１９３とを両立して適用する。そのため、ユーザは、対象が状態を変化しないまま表示され続ける時間について、短縮と延長との両方の効果を得ることができる。
【０１３６】
シミュレーション再現装置１００は、逆方向再生または逆方向コマ送りの際に、発生時刻から微小な時間である補正時間さかのぼった時刻をグラフィック表示２１０に表示する。これにより、逆方向再生または逆方向コマ送りの際の確認作業において、ユーザの混乱を防ぐことができる。
例えば、対象の状態が第１の時刻に第１の状態から第２の状態に変化したものとする。ここで、逆方向再生が始まった際に、表示される時刻が第１の時刻のまま変わらず、対象の状態が第２の状態から第１の状態に戻ると、ユーザの混乱を招く可能性がある。一方、表示される時刻が第１の時刻から微小な時間さかのぼった時刻に変われば、対象の状態が第２の状態から第１の状態に戻っても、ユーザの混乱を招くことはない。
【０１３７】
実施の形態２．
シミュレーションにおいて対象の状態を表すグラフィック表示が変化した際に発生した遅延時間を、対象の動作の再現時に考慮する形態について、図２１から図２３に基づいて説明する。但し、実施の形態１と重複する説明は省略する。
【０１３８】
＊＊＊構成の説明＊＊＊
シミュレーション再現装置１００の機能構成は、以下の点を除いて、実施の形態１と同じである。
トレースファイル１９１のトレースデータ１９１Ｄは、図２１に示すように、遅延時間を含んでいる。
遅延時間は、シミュレーションにおいて対象の状態を表すグラフィック表示が変化した際に発生した時間である。
【０１３９】
待ち時間算出部１１５は、算出した待ち時間から新トレースデータに含まれる遅延時間を差し引いて待ち時間を修正する。
再現画面表示部１２１は、修正後の待ち時間が経過したときに対象の状態を変化させる。
再現時計部１０２は、修正後の待ち時間が経過したときに再現時刻１０９を新表示時刻に更新する。
【０１４０】
＊＊＊動作の説明＊＊＊
シミュレーション再現装置１００の動作は、以下の点を除いて、実施の形態１と同じである。
図８で説明したシミュレーション処理（Ｓ１２０）のＳ１２５は、以下のように実施の形態１と異なる。
Ｓ１２５において、シミュレーション部１８０は、シミュレーション画面表示部１２２にグラフィック表示の更新を指示したときに、更新完了時間の計測を開始する。
シミュレーション画面表示部１２２は、グラフィック表示の更新を完了したときに、更新完了通知を出力する。出力された更新完了通知はシミュレーション部１８０に入力される。
シミュレーション部１８０は、更新完了通知が入力されたときに、更新完了時間の計測を終了する。
更新完了時間は、グラフィック表示の更新に要した時間であり、以下の式で表すことができる。更新指示時刻はシミュレーション部１８０がシミュレーション画面表示部１２２にグラフィック表示の更新を指示した時刻である。更新完了時刻は更新完了通知がシミュレーション部１８０に入力された時刻である。
更新完了時間＝更新完了時刻−更新指示時刻
【０１４１】
そして、シミュレーション部１８０は、更新完了時間から規定時間を差し引いた時間を遅延時間として算出し、算出した遅延時間を記録したトレースデータ１９１Ｄに設定する。
遅延時間は以下の式で表すことができる。
遅延時間＝更新完了時間−規定時間
【０１４２】
規定時間は予め決められた時間である。
規定時間の一例は、更新完了通知の伝達時間、または、更新完了通知の伝達時間に対象の応答時間を加えた時間である。
更新完了通知の伝達時間は、更新完了通知がシミュレーション画面表示部１２２から出力されてから、出力された更新完了通知がシミュレーション部１８０に入力されるまでの時間である。対象がＬＥＤである場合、対象の応答時間は５０から１００ナノ秒程度である。
【０１４３】
図２２に基づいて、表示間隔および待ち時間算出処理（Ｓ２４３）について説明する。
表示間隔および待ち時間算出処理（Ｓ２４３）は、実施の形態１で説明したＳ２４３１からＳ２４３７に加えて、Ｓ２４３８を備える。
Ｓ２４３８において、待ち時間算出部１１５は、読み出されたトレースデータ１９１Ｄから遅延時間を取得する。
そして、待ち時間算出部１１５は、算出した待ち時間から取得した遅延時間を差し引いて待ち時間を修正する。
修正後の待ち時間は以下の式で表すことができる。
修正後の待ち時間＝修正前の待ち時間−遅延時間
【０１４４】
その後、時間待ち部１１６は、図１４で説明した順方向再現処理（Ｓ２４０）のＳ２４４において、修正後の待ち時間が経過するまで待機する。
【０１４５】
図２３に基づいて、表示間隔および待ち時間算出処理（Ｓ２５３）について説明する。
表示間隔および待ち時間算出処理（Ｓ２５３）は、実施の形態１で説明したＳ２５３１からＳ２５３７に加えて、Ｓ２５３８を備える。
Ｓ２５３８において、待ち時間算出部１１５は、読み出されたトレースデータ１９１Ｄから遅延時間を取得する。
そして、待ち時間算出部１１５は、算出した待ち時間から取得した遅延時間を差し引いて待ち時間を修正する。
修正後の待ち時間は以下の式で表すことができる。
修正後の待ち時間＝修正前の待ち時間−遅延時間
【０１４６】
その後、時間待ち部１１６は、図１６で説明した逆方向再現処理（Ｓ２５０）のＳ２５４において、修正後の待ち時間が経過するまで待機する。
【０１４７】
＊＊＊効果の説明＊＊＊
対象の状態の変化をグラフィック表示で再現する場合、グラフィック表示した対象の状態の変化が実際の対象の状態の変化よりも遅延する可能性がある。
そこで、シミュレーション再現装置１００は、待ち時間から遅延時間を差し引いて待ち時間を修正する。これにより、実機の対象により近いグラフィック表示で、対象の状態の変化を再現することができる。
【０１４８】
各実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。各実施の形態は部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。
フローチャート等を用いて説明した処理手順は、シミュレーション再現方法およびシミュレーション再現プログラムの処理手順の一例である。
【０１４９】
トレースファイル１９１は、ハードディスクに記憶される通常のファイルと、メモリに読み込まれるメモリマップドファイルとのいずれであってもよい。
ファイル参照ポインタをメモリアドレスに置き換えることによって、通常のメモリ空間でトレースファイル１９１を扱うことができる。
シミュレーション部１８０は、シミュレーション時に、発生時刻とサイクル数とのいずれか一方をトレースデータ１９１Ｄに設定してもよい。また、シミュレーション再現装置１００は、トレースデータ１９１Ｄに設定された発生時刻（またはサイクル数）をサイクル数（または発生時刻）に変換する機構を備えてもよい。その機構は、特許文献１と同様に、速度比乗じた変換を行ってもよい。そして、その変換は、トレースデータ１９１Ｄが読み出された際に行われてもよい。
時間待ち部１１６は、ワンショットタイマを用いて待ち時間の経過を検出してもよいし、再現時刻１０９をポーリングすることによって待ち時間の経過を検出してもよい。
シミュレーション部１８０は、一般的なマイクロコンピュータシミュレータと同様に、第１の方式と第２の方式とのいずれの方式でシミュレーションを行ってもよい。第１の方式は、シミュレーションプログラムの命令を仮想マイクロコンピュータ向けの命令に変換し、変換後の命令を仮想マイクロコンピュータによって実行する方式である。第２の方式は、シミュレーションプログラムの命令をホストプロセッサの命令に変換し、変換後の命令をホストプロセッサによって実行する方式である。
シミュレーション再現装置１００は、オペレーティングシステムが動作しているサーバ、ワークステーション、パーソナルコンピュータまたはその他コンピュータによってシミュレーションプログラムおよびシミュレーション再現プログラムを実行することで実現される。
【０１５０】
図２４に基づいて、シミュレーション再現装置１００のハードウェア構成について説明する。
シミュレーション再現装置１００は、プロセッサ８０１と、入力装置８０２と、ディスプレイ８０３と、記憶装置８０４と、メモリ８０５と、タイマ８０６とを備える。
シミュレーションプログラムおよびシミュレーション再現プログラムは、メモリ８０５に記憶されて、プロセッサ８０１によって実行される。
シミュレーション再現装置１００で使用、生成または入出力されるデータは、メモリ８０５または記憶装置８０４に記憶される。記憶装置８０４の一例はハードディスクまたは不揮発性メモリである。
ユーザ指示は、キーボード、マウス、ポインティングデバイスまたはタッチパネルなどの入力装置８０２を用いて、シミュレーション再現装置１００に入力される。
シミュレーション再現装置１００の操作画面、シミュレーション画面および再現画面２００はディスプレイ８０３に表示される。
受付部１０１は、プロセッサ８０１と、入力装置８０２とディスプレイ８０３とによって実現される。
再現時計部１０２は、プロセッサ８０１とメモリ８０５とタイマ８０６とによって実現される。
再現部１１０およびシミュレーション部１８０は、プロセッサ８０１とメモリ８０５とタイマ８０６とによって実現される。
表示部１２０は、プロセッサ８０１とメモリ８０５とディスプレイ８０３とによって実現される。
記憶部１９０は、メモリ８０５と記憶装置８０４とによって実現される。
【符号の説明】
【０１５１】
１００  シミュレーション再現装置、１０１  受付部、１０２  再現時計部、１０９  再現時刻、１１０  再現部、１１１  初期化部、１１２  不可方向判定部、１１３  トレースデータ読み出し部、１１４  表示間隔算出部、１１５  待ち時間算出部、１１６  時間待ち部、１１７  周期設定部、１１９  再現制御部、１２０  表示部、１２１  再現画面表示部、１２２  シミュレーション画面表示部、１３０  タイミング制御部、１８０  シミュレーション部、１８９  シミュレーション画面ファイル、１９０  記憶部、１９１  トレースファイル、１９１Ｄ  トレースデータ、１９２  上限周期、１９３  下限周期、１９４  初期状態フラグ、１９５  操作不可情報、１９９  再現画面ファイル、２００  再現画面、２１０  グラフィック表示、２２０  ボタンウィジェット、２２１  順方向再現ボタン、２２２  逆方向再現ボタン、２２３  順方向コマ送りボタン、２２４  逆方向コマ送りボタン、２２５  上限周期ボタン、２２６  下限周期ボタン、２３０  メッセージ領域、８０１  プロセッサ、８０２  入力装置、８０３  ディスプレイ、８０４  記憶装置、８０５  メモリ、８０６  タイマ。
【図１】
2016181455.tif 000003
【図２】
2016181455.tif 000004
【図３】
2016181455.tif 000005
【図４】
2016181455.tif 000006
【図５】
2016181455.tif 000007
【図６】
2016181455.tif 000008
【図７】
2016181455.tif 000009
【図８】
2016181455.tif 000010
【図９】
2016181455.tif 000011
【図１０】
2016181455.tif 000012
【図１１】
2016181455.tif 000013
【図１２】
2016181455.tif 000014
【図１３】
2016181455.tif 000015
【図１４】
2016181455.tif 000016
【図１５】
2016181455.tif 000017
【図１６】
2016181455.tif 000018
【図１７】
2016181455.tif 000019
【図１８】
2016181455.tif 000020
【図１９】
2016181455.tif 000021
【図２０】
2016181455.tif 000022
【図２１】
2016181455.tif 000023
【図２２】
2016181455.tif 000024
【図２３】
2016181455.tif 000025
【図２４】
2016181455.tif 000026
【手続補正書】
【提出日】平成29年2月21日(2017.2.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
シミュレーションされた対象の動作をグラフィック表示で再現するシミュレーション再現装置において、
前記対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを記憶する記憶部と、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付ける受付部と、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出すトレースデータ読み出し部と、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求めるタイミング制御部と、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる表示部と
を備えるシミュレーション再現装置。
【請求項２】
前記受付部は、前記対象の状態を時刻順に１回変化させる順方向コマ送り指示を受け付け、
前記トレースデータ読み出し部は、前記順方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つ読み出す
請求項１に記載のシミュレーション再現装置。
【請求項３】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記トレースデータ読み出し部は、前記逆方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つずつ読み出す
請求項１に記載のシミュレーション再現装置。
【請求項４】
前記新表示時刻と前記旧表示時刻との間隔が下限周期より短い場合、前記タイミングは前記旧表示時刻から前記下限周期ずれた時刻である
請求項１に記載のシミュレーション再現装置。
【請求項５】
前記新表示時刻と前記旧表示時刻との間隔が上限周期より長い場合、前記タイミングは前記旧表示時刻から前記上限周期ずれた時刻である
請求項１に記載のシミュレーション再現装置。
【請求項６】
前記トレースデータは、シミュレーションにおいて対象の状態を表すグラフィック表示が変化した際に発生した遅延時間を含み、
前記タイミング制御部は、前記新表示時刻と、前記旧表示時刻と、前記遅延時間とに基づいて、前記タイミングを求める
請求項１に記載のシミュレーション再現装置。
【請求項７】
グラフィック表示は、前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を含み、
前記表示部は、前記逆方向コマ送り指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻に前記再現時刻を更新する
請求項１に記載のシミュレーション再現装置。
【請求項８】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記表示部は、前記逆方向再現指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻に前記再現時刻を更新する
請求項７に記載のシミュレーション再現装置。
【請求項９】
前記タイミング制御部は、前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を示す時計として機能する再現時計部を備え、
前記再現時計部は、前記順方向再現指示が受け付けられた場合、前記再現時刻を時刻順に進め、
前記タイミング制御部は、前記新表示時刻と、前記旧表示時刻と、前記再現時刻とに基づいて、前記タイミングを求める
請求項１に記載のシミュレーション再現装置。
【請求項１０】
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記再現時計部は、前記逆方向再現指示が受け付けられた場合、前記再現時刻を逆順に進める
請求項９に記載のシミュレーション再現装置。
【請求項１１】
前記受付部は、前記対象の状態を時刻順に１回変化させる順方向コマ送り指示を受け付け、
前記再現時計部は、前記順方向コマ送り指示または前記逆方向コマ送り指示が受け付けられた場合、前記再現時刻を前記新表示時刻に更新する
請求項９に記載のシミュレーション再現装置。
【請求項１２】
前記タイミング制御部は、
前記対象の動作がシミュレーションされた時間帯の時刻を再現した時刻である再現時刻を示す時計として機能する再現時計部と、
前記新表示時刻と前記旧表示時刻との間隔である表示間隔を算出する表示間隔算出部と、
前記対象の状態を変化させるまでの待ち時間を算出する待ち時間算出部とを備え、
前記再現時計部は、前記順方向再現指示が受け付けられた場合、前記再現時刻を時刻順に進め、
前記表示間隔算出部は、前記順方向再現指示が受け付けられた場合、前記旧表示時刻から前記新トレースデータに含まれる発生時刻である前記新表示時刻までの間隔を前記表示間隔として算出し、
前記待ち時間算出部は、算出された表示間隔が上限周期より長い場合、前記再現時計部が示す再現時刻と、前記旧表示時刻から前記上限周期が経過するときの時刻との間隔を前記待ち時間として算出し、
前記表示部は、算出された待ち時間が経過したときを前記タイミングとして、前記対象の状態を変化させ、
前記再現時計部は、算出された待ち時間が経過したときに、前記再現時刻を前記新表示時刻に更新する
請求項１に記載のシミュレーション再現装置。
【請求項１３】
前記トレースデータは、状態が変化する前の状態を示す旧状態値を含み、
前記受付部は、前記対象の動作を時刻の逆順に再現させる逆方向再現指示を受け付け、
前記再現時計部は、前記逆方向再現指示が受け付けられた場合、前記再現時刻を逆順に進め、
前記トレースデータ読み出し部は、前記逆方向再現指示が受け付けられた場合、前記発生時刻の逆順に前記トレースデータを１つずつ読み出し、
前記表示間隔算出部は、前記逆方向再現指示が受け付けられた場合、前記新トレースデータに含まれる発生時刻から補正時間さかのぼった時刻である前記新表示時刻から前記旧表示時刻までの間隔を前記表示間隔として算出し、
前記待ち時間算出部は、算出された表示間隔が前記上限周期より長い場合、前記再現時計部が示す再現時刻と、前記旧表示時刻から前記上限周期さかのぼった時刻との間隔を前記待ち時間として算出し、
前記表示部は、算出された待ち時間が経過したときに、前記新トレースデータに含まれる新状態値が示す状態に前記対象の状態を変化させ、
前記再現時計部は、算出された待ち時間が経過したときに、前記再現時刻を前記新表示時刻に更新する
請求項１２に記載のシミュレーション再現装置。
【請求項１４】
シミュレーションされた対象の動作をグラフィック表示で再現するシミュレーション再現方法において、
前記対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを記憶し、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付け、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出し、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求め、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる
シミュレーション再現方法。
【請求項１５】
対象の動作をシミュレーションして得られたファイルであり、前記対象の状態の変化が発生した発生時刻と、状態が変化した後の状態を示す新状態値と、を含んだ１つ以上のトレースデータが記録されたファイルであるトレースファイルを用いるシミュレーション再現プログラムであって、
前記対象の動作を時刻順に再現させる順方向再現指示と、前記対象の動作を一時停止させる一時停止指示と、前記対象の状態を時刻の逆順に１回変化させる逆方向コマ送り指示と、を受け付ける受付処理と、
前記順方向再現指示が受け付けられた場合、前記トレースファイルから前記発生時刻の時刻順に前記トレースデータを１つずつ読み出し、前記逆方向コマ送り指示が受け付けられた場合、前記トレースファイルから前記発生時刻の逆順に前記トレースデータを１つ読み出すトレースデータ読み出し処理と、
今回読み出されたトレースデータである新トレースデータに含まれる発生時刻に対応する新表示時刻と、前回読み出されたトレースデータである旧トレースデータに含まれる発生時刻に対応する旧表示時刻とに基づいて、グラフィック表示を更新するタイミングを求めるタイミング制御処理と、
求められたタイミングで、グラフィック表示された対象の状態を前記新トレースデータに含まれる新状態値が示す状態に変化させる表示処理と
をコンピュータに実行させるためのシミュレーション再現プログラム。
【国際調査報告】
2016181455.tif 000027
2016181455.tif 000028