(57)【要約】【課題】シミュレーション結果を実時間速度で何度でも再現することができるシミュレーション方法及びシミュレータを提供すること。【解決手段】シミュレータ１０は、検証対象のプログラムを実行するシミュレーション実行部１２と、その結果を記録するトレースデータ記録部１３と、シミュレーション再現部１５とを有する。シミュレーション再現部１５は、トレースデータ記録部１３が記録したトレースデータファイル２３を、プラットフォーム情報テーブル４１を参照し、再現速度に応じた再現タイミング情報ファイル４３に変換する変換部３３と、タイマ５３を有し、シミュレーション結果を再現タイミング情報に基づき、タイマ５３のループ動作を使用して再現する再現部３４とを有する。【選択図】図２
2007334812.tif 000002
【特許請求の範囲】
【請求項１】
ターゲットシステムで動作させる検証対象プログラムをシミュレータでシミュレーションした結果から得られるトレースデータを任意の再現速度に応じた再現タイミング情報に変換し、
前記再現タイミング情報に基づき、前記シミュレーション結果を任意の再現速度で再現するシミュレーション方法。
【請求項２】
前記ターゲットシステム及びシミュレータが搭載されるシステムの性能情報を含むプラットフォーム情報を参照して、前記トレースデータを前記再現タイミング情報に変換する
ことを特徴とする請求項１記載のシミュレーション方法。
【請求項３】
前記プラットフォーム情報は、前記ターゲットシステム及び前記シミュレータが搭載されるシステムの動作周波数情報を含み、
前記ターゲットシステムの動作周波数を前記シミュレータが搭載されるシステムの動作周波数に換算し、
前記換算結果に基づき前記トレースデータを前記再現タイミング情報に換算する
ことを特徴とする請求項２記載のシミュレーション方法。
【請求項４】
前記プラットフォーム情報は、基準となるシステムの基準動作周波数情報を含み、
前記プラットフォーム情報を参照して前記シミュレータが搭載されるシステムの基本動作周波数を、前記基準となるシステムの基準動作周波数に換算し、
前記換算結果に基づき前記トレースデータを前記再現タイミング情報に換算する
ことを特徴とする請求項３記載のシミュレーション方法。
【請求項５】
前記プラットフォーム情報は、前記再現速度を調整する時間調整パラメータを含み、
前記プラットフォーム情報を参照して、前記トレースデータを任意の再現速度に応じた前記再現タイミング情報に変換する
ことを特徴とする請求項２記載のシミュレーション方法。
【請求項６】
前記検証対象プログラムとは独立して動作するタイマのループ動作に基づき前記シミュレーション結果を前記再現速度で表示する
ことを特徴とする請求項１記載のシミュレーション方法。
【請求項７】
検証対象プログラムのシミュレーションを実行してトレースデータを記録し、
前記記録されたトレースデータを前記再現速度に応じた前記再現タイミング情報に変換し、
前記再現タイミング情報に基づき、前記シミュレーション結果を再現する
ことを特徴とする請求項１乃至６のいずれか１項記載のシミュレーション方法。
【請求項８】
ターゲットシステムで動作させる検証対象プログラムをシミュレーションした結果から得られるトレースデータを任意の再現速度に応じた再現タイミング情報に変換する変換部と、
前記再現タイミング情報に基づき、前記シミュレーション結果を任意の再現速度で再現する再現部とを有するシミュレータ。
【請求項９】
前記変換部は、前記ターゲットシステム及びシミュレータが搭載されるシステムの性能情報を含むプラットフォーム情報を参照して、前記トレースデータを前記再現タイミング情報に変換する
ことを特徴とする請求項８記載のシミュレータ。
【請求項１０】
前記プラットフォーム情報は時間調整パラメータを有し、
前記変換部は、前記時間調整パラメータを参照して、前記トレースデータを任意の再現速度に応じた再現タイミング情報に変換する
ことを特徴とする請求項９記載のシミュレータ。
【請求項１１】
前記検証対象プログラムとは独立して動作するタイマを有し、
前記再現部は、前記シミュレーション結果を前記タイマのループ動作を使用して再現する
ことを特徴とする請求項８記載のシミュレータ。
【請求項１２】
前記検証対象プログラムのシミュレーションを実行するシミュレーション実行部と、
前記シミュレーション実行部の実行結果を記録するトレースデータ記録部とを有し、
前記変換部は、前記トレースデータ記録部の記録結果である前記トレースデータを前記再現タイミング情報に変換する
ことを特徴とする請求項８記載のシミュレータ。
【請求項１３】
前記シミュレーション結果を表示するシミュレーション情報表示部を有する
ことを特徴とする請求項８記載のシミュレータ。
【請求項１４】
前記トレースデータ記録部は、前記トレースデータとしてイベント情報及びそのクロック数を記録し、
前記変換部は、前記ターゲットシステム及びシミュレータが搭載されるシステムの動作周波数に基づき前記クロック数を前記再現速度に対応した値に変換し、
前記再現部は、前記変換結果に基づき前記シミュレーション結果を表示装置に表示する
ことを特徴とする請求項８記載のシミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばマイクロコントローラ（以下、マイコンという。）の動作を擬似的に作り出すシミュレータ及びシミュレーション方法に関する。
【背景技術】
【０００２】
システム・シミュレータは、マイコンソフト開発用などに使用される。このシステム・シミュレータは、ソフトウェアで作られ、実際のデバイスとは異なり擬似的に動作を実現している。そのため、一般的には、ハードウェアで動作するよりも動作が遅くなり、システム・シミュレータによるタイミングなどの実時間に関する動作の確認が困難である。複雑な装置や非常に高性能なコンピュータを用いなくても、ＰＣ（パーソナルコンピュータ）等の一般的なプラットフォームで動作するシステム・シミュレータ上で、実時間通りにシミュレータが動作し、タイミングを検証できることが望まれている。
【０００３】
図１１は、従来のシミュレータを示す図である。図１１に示すように、シミュレータ１１０は、シミュレーション動作を行うシミュレーション実行部１１２と、シミュレーション時の信号の入出力などの実行結果に関するデータ（トレースデータ）を収集するトレースデータ記録部１１３と、シミュレーションの動作を擬似ＬＥＤ（Light Emitting Diode）表示装置やタイミングチャートなどに表示させることができシミュレーション情報表示部１１４と、シミュレータ内部の制御及びオペレーティング・システム１１７とのやり取りを制御する制御部１１６とで構成されている。
【０００４】
シミュレーションを行うには、オペレーティング・システム１１７からシミュレータ１１０を起動する。先ず、デバックを含む動作を検証するプログラムを補助記録装置１２１から読み出して、シミュレーション対象プログラム１１１としてダウンロードする。シミュレーションの実行が開始すると、シミュレーション実行部１１２がシミュレーション対象プログラム１１１から命令コードを読み出して、デコードし、命令の動作を擬似的に行う。シミュレーション対象プログラム１１１の中でシミュレータ１１０（マイコン）内の端子に対して信号の入出力処理があると、端子の入出力情報をシミュレーション情報表示部１１４に伝え、シミュレータ１１０に接続された７セグメントＬＥＤなどの擬似ＬＥＤ表示装置や擬似タイマ（以下、擬似表示装置という。）に対し、端子やデータの変化を出力し表示させる。
【０００５】
すなわち、シミュレータ１１０を使って、プログラムをデバッグ又は検証する際に、シミュレーション情報表示部１１４により、シミュレータ１１０に接続された擬似表示装置に、シミュレータ１１０での実行結果を表示させることが可能である。
【０００６】
図１２は、シミュレータであるマイコンの端子に擬似表示装置としての７セグメントＬＥＤが接続されている場合の例を示す図である。ＣＰＵ（Central Processing Unit）１３１がマイコン１３０内のＲＯＭ（Read Only Memory）１３２にダウンロードされた検証対象プログラムを読み出し、デコードして、命令を実行する。命令の中で端子に対する出力処理があると、ＣＰＵ１３１がポート１３４を通じて端子に対して信号を送る。マイコン１３０の端子に接続された７セグメントＬＥＤ１３５は、その信号を受信し、信号のレベルに応じてＬＥＤを点滅させ数字などを表示する。ユーザは、この表示を見てシミュレーションの実行結果を確認・検証することができる。
【０００７】
しかしながら、シミュレータを使用してシステム全体のシミュレーションを行った場合、論理的な動作の検証できるが、期待通りのタイミングで表示が行われているかの確認は、かなり困難であり、信号の出力状態とクロックを出力したタイミングチャートを使っても、確認に多くの時間を要してしまうという問題点がある。
【０００８】
上記問題点が発生するメカニズムを説明する。ハードウェア、すなわちターゲットシステムにおいてこの一連の処理を行う場合、ＣＰＵの演算処理が高速なので期待通りの数字が期待とおりの間隔で表示されているか否かは簡単に判断できる。しかしながらシミュレータでは、シミュレーション処理性能によって、実際のハードウェアで動作するものとは違うため、期待とおりの数字が表示しているかどうかの判断はできるが、期待とおりの間隔で表示しているかどうかは判断できない。たとえば、ハードウェアでは、１秒間隔で数字を表示する場合、シミュレータでは、数十秒間隔で表示される。マイコンからの出力信号を、タイミングチャートなどで表示させることは可能だが、実際に７セグメントＬＥＤの表示間隔が正しいかどうかを判断するには、タイミングチャートに表示されている信号の波形から、その間隔の時間の計算を行う必要があり、正しく動作しているかどうかの判断には、時間を要する。これらは以下の理由による。
【０００９】
（１）マイコン用シミュレータの処理が遅い
実際のマイコンは、２０ＭＨｚで動作していても、シミュレータでの動作は、その１／１００の２００ＫＨｚ程度でしかシミュレーションできない。なぜなら、マイコンの１命令を、ＰＣのＣＰＵを使って複数の命令を実行させて、同じ動作を仮想的に実現しているからである。
【００１０】
（２）シミュレータを動作させるＰＣの性能によってシミュレーション処理時間が異なる
従来のシミュレータは、同じプログラムを動作させた場合、動作するＰＣの性能が高い、すなわち高性能ＰＣである場合には、シミュレーション対象のプログラムを高速処理ができるため、シミュレータから信号を出力して、７セグメントＬＥＤに表示するまでに要する時間は短くなるが、性能が低いＰＣでは、処理時間が長くかかるために、７セグメントＬＥＤに表示するまでに要する時間は長くなる。このように、ＰＣ性能によって、７セグメントＬＥＤ表示のタイミング動作が異なる。
【００１１】
（３）シミュレーション対象マイコンの動作周波数によって、シミュレーション表示動作を変更することが困難
従来のシミュレータは、シミュレーション対象マイコンの動作周波数を容易に変更が可能である。すなわち、１０ＭＨｚ動作又は２０ＭＨｚ動作など実際のシステムに合わせてシミュレーション実行前に設定することができる。よって、指定された周波数によるクロックで内部の動作をシミュレーションするため、数値的には、１０ＭＨｚ動作と２０ＭＨｚ動作のクロック数は、２倍異なるが、命令のクロック数をカウントして、タイミングを作るソフトウェアタイマ等を使用する以外には、７セグメントＬＥＤなどのシミュレーション表示動作は、動作周波数が異なっていてもほとんど同じタイミングである。これは、仮想的なクロックでプログラムをシミュレーションしているためであり、数値のみが異なるだけで、処理動作は同じプログラムであるため、シミュレータを動作させるＰＣの性能によってのみ変わり、表示動作としては、動作周波数に影響されないためである。
【００１２】
（４）表示シミュレーション動作は、シミュレータのプログラム規模に依存する
実際のハードウェアでは、表示信号が出てから表示されるまでの遅延時間はほとんど無視できるが、シミュレーションによる仮想表示では、処理するプログラム（シミュレータの一部）が、大きなプログラムステップで実現されているか、小さいプログラムステップで実現されているかによって、被対象プログラムが同じでも表示されるまでの時間が異なるため、表示タイミングが異なる。
【００１３】
これに対し、従来のシミュレータ技術としては、以下に示すものが公知である（例えば特許文献１、２参照）。特許文献１には、プログラム性能そのものを試験できるようにすることを目的としたプログラム試験システムが開示されている。
【００１４】
このプログラム試験システムは、プログラムを目的の情報処理装置上の動作と同様に動作するかどうかを試験実行させる実行手段と、プログラムが実行する命令の数又は所要時間を計測する計測手段と、計測結果を遅延時間に変換する変換手段と、試験結果を表示する表示手段と、時間信号を表示手段に入力するタイマとを有する。そして、変換器で変換された遅延時間に応じた実行手段の実効結果を遅延して表示手段に表示させることで、試験者は、性能が悪い程、実行結果が表示手段に遅れて表示されるので、プログラムの性能を客観的に評価することができる。
【００１５】
また、特許文献２には、ターゲットプログラムの特性を正確に捉えたターゲット実行時間の見積もりを得ることを目的としてシミュレーション方法及び装置が開示されている。図１３は、特許文献２に記載のシミュレーション装置を示す図である。この従来のシミュレーション装置２１０は、ホストを構成するホストＣＰＵ２１１と、ホストメモリ２１２とを有し、ホストメモリ２１２には、シミュレーションプログラム２１３が格納される。シミュレーションプログラム２１３の実行により、ホストメモリ２１２には、ターゲット実行ルーチン２１４、状態変更（デバッガ）ルーチン２１５、レジスタ情報２１６、パイプライン情報２１７、キャッシュメモリ情報２１８、及びターゲットメモリ情報２１９の各領域が確保される。
【００１６】
このように構成されたシミュレーション装置２１０は、ターゲット命令をホスト命令に変換してシミュレーションを行ってホスト実行時間を求める。そして、ターゲットのハードウェアで処理するのと同等の処理を行うソフトウェアでターゲット命令をシミュレーションして、ターゲット実行時間を求める。次に、再実行時間からターゲット／ホスト性能比を求め、被測定プログラムをホストで実行したホストで実行したプログラム実行時間とターゲット／ホスト性能比に基づき、被測定プログラムをターゲットで実行した場合のターゲット実行時間見積もりを求める。
【特許文献１】特開平３−１４２６３７号公報
【特許文献２】特開２０００−１２２８９８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、上述の特許文献１、２においては、シミュレーション対象プログラム（被測定プログラム）のターゲット測定時間を見積もることはできるが、上記（１）乃至（４）に説明したようにシミュレーションを実時間どおりに再現実行することはできない。シミュレーション結果を評価する場合にその評価結果の注目点（時間）を変更する場合や、ある時間におけるシミュレーション結果を見たい場合などにおいては、実時間どおり、又は任意の再現スピードでシミュレーション結果を再現することができれば便利である。
【課題を解決するための手段】
【００１８】
本発明に係るシミュレーション方法は、ターゲットシステムで動作させる検証対象プログラムをシミュレータでシミュレーションした結果から得られるトレースデータを任意の再現速度に応じた再現タイミング情報に変換し、前記再現タイミング情報に基づき、前記シミュレーション結果を任意の再現速度で再現するものである。
【００１９】
本発明においては、シミュレーションして得られるトレースデータを変換した再現タイミング情報を使用することで、シミュレーション結果を再現する際に、シミュレーションすることなく任意の再現速度で再現することができる。
【発明の効果】
【００２０】
本発明によれば、シミュレーション結果を任意の再現速度で何度でも再現することができるシミュレーション方法及びシミュレータを提供することができる。
【発明を実施するための最良の形態】
【００２１】
実施の形態１.
以下、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。図１は、本実施の形態にかかるシミュレータを示すブロック図である。図１１の従来のシミュレータの構成に対して、シミュレーション再現部１５を追加する構成となっており、その他の構成は、図１０と同様である。すなわち、シミュレータ１０は、シミュレーション対象プログラム１１と、シミュレーション実行部１２と、トレースデータ記録部１３と、シミュレーション情報表示部１４と、シミュレーション再現部１５と、制御部１６とを有する。
【００２２】
シミュレーション実行部１２は、シミュレーション動作を行う。また、トレースデータ記録部１３は、シミュレーション時の記録となるトレースデータを収集する。そして、シミュレーション情報表示部１４は、シミュレーションの動作をセグメントＬＥＤなどの擬似ＬＥＤ表示装置、擬似タイマ、又はタイミングチャートなどの擬似表示装置に表示させる。制御部１６は、シミュレータ内部の制御及びオペレーティング・システム１７とのやり取りを制御する。そして、本実施の形態におけるシミュレータは、シミュレーション再現部１５を有する。このシミュレーション再現部１５は、検証対象プログラムをシミュレーションした結果から得られるトレースデータを任意の再現速度に応じた再現タイミング情報に変換する変換部と、再現タイミング情報に基づき、シミュレーションの結果を再現する再現部と有する。変換部により、トレースデータを再現速度に応じた再現タイミング情報に変換し、再現部により、この再現タイミング情報に基づき、シミュレーションの結果を任意のスピードで再現することが可能である。
【００２３】
次に、本実施の形態に係るシミュレータについて更に詳細に説明する。図２は、本実施の形態におけるシミュレータの処理の流れを示した図である。シミュレータ１０は、記録モードと再現モードの２つの動作モードを有する。記録モードでは、従来のシミュレータと同様のシミュレーション動作を行うと共に、実行記録となるトレースデータを収集する。再現モードでは、収集したトレースデータに基づき、シミュレーション中の信号変化等のシミュレーション結果を再現表示する。この再現モードは、通常のシミュレーション実行で確認できない、実時間速度での擬似表示装置の表示を再現検証したい場合に使用する。
【００２４】
２つの動作モード、すなわち、記録モードと再現モードとを切り替えるために、図２に示すように、シミュレーション再現部１５は、モード切替部３１を有する。モード切替部３１は、シミュレータ１０が記録モードを実行するか、再現モードを実行するかの切換えを行う。
【００２５】
記録モードでは、シミュレーション実行部１２、トレースデータ記録部１３、及びシミュレーション情報表示部１４が動作し、トレースデータ記録部１３は、実行記録であるトレースデータを収集する。収集したトレースデータはトレースデータファイル２３に記録され、トレースデータファイル２３が生成される。
【００２６】
ここで、シミュレーション実行部１２は、記録モードに設定されると読み込んだ検証対象プログラムのシミュレーションを実行する。シミュレーションを行うには、オペレーティング・システム１７からシミュレータ１０を起動する。そして、デバッグを含む動作を検証するプログラムを補助記録装置２１から読み出して、シミュレーション対象プログラム１１としてダウンロードする。シミュレーションの実行が開始すると、シミュレーション実行部１２がシミュレーション対象プログラム１１から命令コードを読み出して、デコードし、命令の動作を擬似的に行うことで、マイコン等のターゲットシステムからなるターゲットのハードウェアで処理するのと同等の処理を行う。
【００２７】
このとき、ターゲットシステムの端子に対して信号の入出力処理があると、この端子の入出力情報をシミュレーション情報表示部１４に伝える。そして、シミュレーション情報表示部１４は、シミュレータ１０に接続された擬似ＬＥＤなどの擬似表示装置に、当該端子やデータの変化を表示する。
【００２８】
そして、命令の擬似動作を行いながら、トレースデータ記録部１３が何の処理がいつ実行されたか等を示すトレースデータの作成を行う。トレースデータは、補助記録装置２１から出力され、トレースデータファイル２３として保存することができる。このような一連の処理を、プログラムの最後まで、またはシミュレーション実行を止めるまで行う。
【００２９】
一方、再現モードでは、一度記録モードで実行して収集したトレースデータを使用して、擬似表示装置への表示シミュレーションの再現のみを行う。すなわち、検証対象プログラムにおける擬似表示装置の表示に関係しない処理のシミュレーションは行わない。再現モードにおいては、表示に関係ないシミュレーションを実行せず、予め収集したトレースデータに基づき擬似表示装置の表示のみを再現実行するため、任意の再現速度でシミュレーション結果を再現表示することができる。
【００３０】
この再現モードを実行するために、シミュレーション再現部１５は、再現制御部３２、変換部３３、及び再現部３４を有する。変換部３３は、プラットフォーム情報テーブル４１を参照してトレースデータファイル２３を再現タイミング情報ファイル４３に変換するトレース情報変換部４２を有する。再現部３４は、再現タイミング情報ファイル４３を取り込むタイミング情報読取部５１と、再現実行部５２と、ソフトタイマ５３と有する。
【００３１】
先ず、モード切替部３１により再現モードに設定されると、再現制御部３２は、再現部により再現実行するか、変換部３３により、トレースデータを再現に必要な再現タイミング情報ファイルに変換するかの制御を行う。
【００３２】
変換部３３においては、トレース情報変換部４２は、トレースデータファイル２３とプラットフォーム情報テーブル４１とを読み込んで、再現に必要な情報である再現タイミング情報ファイル４３を作成する。ここで、プラットフォーム情報テーブル４１は、シミュレータ１０、すなわちＰＣの性能情報、及びターゲットシステムの性能情報などを有する。具体的には、例えば、シミュレータ１０を搭載したＰＣにおけるＣＰＵ動作周波数及びメモリ容量、シミュレーション対象のターゲットシステムの動作周波数などである。更に、動作基準に設定したＰＣのＣＰＵ動作周波数及びメモリ容量、動作基準に設定したＰＣにおけるソフトタイマ１ループ当たりの実行時間、後述する速度調整用のパラメータなども記録されている。
【００３３】
シミュレータ１０を搭載するＰＣは、それぞれその性能が異なるため、どのような環境でシミュレーションを行っても同じ再現速度になるよう、所定の性能を有するＰＣを動作基準に設定しておく。そして、実際にシミュレータ１０を動作させるＰＣの性能と、動作基準に設定されたＰＣの性能とを比較することで、正確な再現時間に換算する。このプラットフォーム情報テーブル４１を使用することにより、ユーザ毎に異なるシミュレーション環境でも同一の実時間表示を再現することが可能となる。
【００３４】
タイミング情報読取部５１は、再現タイミング情報ファイル４３を読み取り、再現実行部５２へ入力する。再現実行部５２は、再現タイミング情報ファイル４３を元に再現実行を行う。ソフトタイマ５３は、単純なループ実行のみを行う。
【００３５】
このように構成された本実施の形態に係るシミュレータは、従来のシミュレータに、記録モードと再現モードを追加したものとなっている。そして、記録モードでシミュレーションを実行する際に、端子への入出力処理があると当該イベント毎に、必要な端子等の情報や、そのタイミングを示す実行クロック数（クロック情報）が入ったトレースデータを収集する。
【００３６】
そして、再現モード時には、ソフトタイマ５３を使用して、ターゲットシステムの端子への入出力処理を擬似表示装置に対し再現表示する。ソフトタイマ５３は、検証対象プログラムには依存せずに動くタイマであり、プログラムで構成される。このソフトタイマ５３により、再現タイミングの時間の調整を行う。
【００３７】
すなわち、再現モード実行の開始時に、収集したトレースデータのクロック情報から実時間通りに再現実行するために、トレースデータの実行クロック数をＰＣのＣＰＵ周波数やメモリ容量、ソフトタイマ１ループあたりの実行時間などの情報が入ったプラットフォーム情報テーブル４１を参照して論理時間及びソフトタイマ５３のループ回数に変換し、変換情報を再現タイミング情報ファイル４３に保存する。
【００３８】
そして、再現モード実行時に、再現タイミング情報ファイル４３の先頭から１つずつループ回数情報とデータを取り出し、ソフトタイマ５３を動作させ、ループ回数に達したら、データ情報をシミュレーション情報表示部１４に通知する。シミュレーション情報表示部１４の処理時間をソフトタイマ５３のループカウンタに加算して補正することで、実時間通りに記録したデータを再現表示することができる。
【００３９】
次に、本実施の形態にかかるシミュレータの動作について、図３、図４のフローチャートを参照して詳細に説明する。シミュレーション処理を再現するには、一度記録モードでシミュレーション実行を行い、再現時に必要な端子の情報や実行クロック数が入ったトレースデータを収集する必要がある。この記録モードは、従来のシミュレータの動きと同等で、特別な処理ではない。
【００４０】
先ず記録モードで実行するには、処理開始時点でモード切替部３１によりシミュレータ１０を記録モードに設定しておく。よってステップＳ１にて記録モードを選択し、シミュレーション対象のプログラムのシミュレーションを行う（ステップＳ２）。このとき、プログラムを実行時に何が実行されたかを示すトレースデータを保存する（ステップＳ３）。このステップＳ２、Ｓ３の処理を、プログラムの終了又はシミュレーション実行を停止するまで行う（ステップＳ４）。正しくシミュレーションが行われ、終了した場合には、モード切替部３１によりシミュレータ１０を再現モードに設定する（ステップＳ５）。
【００４１】
再現モードに設定すると、ステップＳ６に進む。ステップＳ６では、記録モードで保存したトレースデータファイル２３が存在するかを確認する。トレースデータファイルがない場合は、ステップＳ２からの処理に戻り、記録モードを実行させ、トレースデータの収集処理を行う。なお、トレースデータを出力せずに、シミュレーション実行が可能であるため、何らかの原因でトレースデータが出力されていない場合などは、ステップＳ２からの処理を繰り返す。
【００４２】
トレースデータファイル２３が整ったら、次に、トレースデータを再現タイミング情報に変換する処理に移る。再現タイミング情報ファイル４３内に保存するデータには、例えば、図５に示す形式のテーブルを用いることができる。本テーブルは４種類のデータが記録される。
１）記録モード時のプログラム開始時を０としてクロック数を換算して求めたイベント発生時のクロック数（累計）（ｒｃｌｋ）
２）シミュレーション対象のマイクロコントローラの動作周波数とクロック数とから求めた変換後の論理時間（ｌｔｉｍｅ）
３）ソフトウェアタイマの実時間に合わせたループ回数（ｌｏｏｐ）
４）イベント発生時のデータ情報（ｌｔｉｍｅ）
【００４３】
先ず、動作基準に設定したＰＣのソフトタイマの１ループ時間から、シミュレータ１０を動作させる、すなわちシミュレーションを実行するＰＣでの１ループの時間を、これら２つのＰＣの基本動作周波数などの性能情報から、ソフトタイマの１ループ時間に換算して求める。ここで求めたソフトタイマの１ループ時間は、プラットフォーム情報テーブル４１に保存される。
【００４４】
次に、全てのトレースデータが処理済みかをチェックし、処理すべきトレースデータがあれば、処理を続行し、全て処理済であれば、図４に示す再現処理へ移る。
【００４５】
トレースデータの処理は、先ず、トレースデータファイルの先頭からトレースデータを１行ずつ取り出し、再現に必要な記録時のクロック数（ｒｃｌｋ）とイベント発生時のデータ情報（ｄａｔａ）とを、再現タイミング情報ファイル４３に保存する（ステップＳ９）。具体例を図６に示す。
【００４６】
次に、トレース情報変換部４２により、クロック数（ｒｃｌｋ）を論理時間（ｌｔｉｍｅ）に変換し、論理時間（ｌｔｉｍｅ）をループ回数（ｌｏｏｐ）に変換する（ステップＳ１０）。図７にこの２つの変換の流れを示す。また、図８にクロック数（ｒｃｌｋ）を論理時間（ｌｔｉｍｅ）に変換する具体例を、図９に、論理時間（ｌｔｉｍｅ）をループ回数（ｌｏｏｐ）に変換する具体例を示す。
【００４７】
図７に示すように、論理時間（ｌｔｉｍｅ）は下記式（１）で算出される。
ｌｔｉｍｅ＝、（ｒｃｌｋ×１０３）／ｃｙｃｌｅ・・・（１）
ここで、ｃｙｃｌｅは、シミュレーション対象のターゲットシステムの動作周波数[ＭＨｚ]を示す。また、ループ回数（ｌｏｏｐ）は下記式（２）で算出される。
ｌｏｏｐ＝ｌｔｉｍｅ／ａｖｅｌｏｏｐ・・・（２）
ここで、ａｖｅｌｏｏｐはソフトタイマ１ループあたりの実行時間[ナノ秒]を示す。
【００４８】
具体的に説明する。図８に示すように、シミュレーション対象のターゲットシステムの動作周波数（ｃｙｃｌｅ）が２５ＭＨｚで、クロック数（ｒｃｌｋ）が４８４クロックの場合、上記変換式（１）を用いると、図８に示すように、変換後の論理時間は流れを１９３６０ナノ秒になる。次に論理時間をループ回数に変換する。１９３６０ナノ秒は、上記変換式（２）を用いると、図９に示すように、実時間のループ回数に変換した値は１６回になる。このように、ステップＳ１０で変換した論理時間及びループ回数を、ステップＳ１１にて再現タイミング情報ファイル４３に保存する。トレースデータファイル２３内のデータがなくなるまで、ステップＳ９〜Ｓ１１の処理を行う。以上の処理により、再現実行に必要な再現タイミング情報ファイル４３が完成する。
【００４９】
次に、再現実行処理に移る。先ず、ソフトタイマループカウンタを初期化して０に設定する（ステップＳ１２）。次に、再現タイミング情報ファイル４３に情報が格納されていれば（ステップＳ１３：Ｙｅｓ）、タイミング情報読取部５１が再現タイミング情報ファイル４３の先頭から１行読込み、再現に必要な情報を取り出す（ステップＳ１４）。次に、シミュレーション再現部１５の内部に設けたソフトタイマ５３を実行させる（ステップＳ１５）。ソフトタイマ５３のループカウンタをカウントアップする。そして、ステップＳ１４で取り出したループ回数情報及びソフトタイマループカウンタの値を比較する。このとき、ステップＳ１４で取り出したループ回数が大きければ、まだシミュレーション情報表示部１４へ表示処理を通知する時間に達していないので、ステップＳ１５のソフトタイマ実行を行う。
【００５０】
一方、ステップＳ１７でソフトタイマ５３のループカウンタの値が、ステップＳ１４で取り出したループ回数以上であれば、シミュレーション情報表示部１４に、情報表示に必要なデータを送付し（ステップＳ１８）、シミュレーション情報表示部１４が擬似表示装置においてデータの表示などを行う（ステップＳ１９）。
【００５１】
ステップＳ１８、１９の処理を行っている間に、シミュレーション情報表示部１４の処理時間によるソフトタイマ５３のループカウンタを加算して補正を行う（ステップＳ２０）。このステップＳ２０の処理は、擬似表示装置の種類に合わせて補正する場合も含む。すなわち、例えば、７セグメントＬＥＤの表示桁数や蛍光表示管（ＶＦＤ（Vacuum Fluorescent Display）、ＦＩＰ（Fluorescent Indicator Panel））によって処理時間が異なるためである。
【００５２】
そして、ひとつのデータ表示が終ったら、ステップＳ１３に戻り、再現タイミング情報ファイル４３内のデータがなくなるまで、ステップＳ１４〜Ｓ２０を繰り返す。以上の一連の処理により、記録したデータを実時間通りに再現表示できるようになる。
【００５３】
従来のシミュレータの場合、１つの命令を擬似的に実行させる際、その命令をソフトウェアでは一連の同じ処理を行うため、ターゲットシステムの動作周波数の高低に関係なく、処理時間は、ほとんど変らず、かつ実際のハードウェアの動作よりも非常に遅くなるため、擬似表示装置でその結果が表示されるものが遅かった。
【００５４】
これに対し、本実施の形態においては、再現実行する際、検証対象プログラムの実行は行わずに、記録モードで一度実行して収集したトレースデータに基づき再現処理を実行する。すなわち、トレースデータの中で、再現表示に関係するトレースデータのみを使用して再現処理を実現するため、擬似表示装置に表示するための処理を高速に行うことが可能である。
【００５５】
この場合、本実施の形態においては、予め、動作基準に設定したＰＣでのソフトウェアタイマの１回のループあたりの実行時間を事前に求めておく。そして、先ず、トレースデータに基づき各イベント時におけるクロック数を、ターゲットシステムの動作周波数を使って論理時間に変換する。次いで、実際にシミュレータを動作させるＰＣと、動作基準に設定したＰＣの性能を比較して、実際にシミュレータを動作させるＰＣにおけるソフトウェアタイマ５３の１回のループあたりの実行時間を換算する。例えば、実際に動作させるＰＣの基本動作周波数が１ＧＨｚで、動作基準に設定したＰＣの基本動作周波数が２ＧＨｚとした場合、処理速度は１／２となるため、実際に動作させるＰＣでのソフトタイマ５３の１回ループあたりの実行時間は、動作基準に設定したＰＣでの実行時間の２倍となる。
【００５６】
こうして、再現実時間になるよう時間を調整したソフトタイマ５３のループ回数を求める。そして、タイミング情報読取部５１が再現タイミング情報ファイル４３からループ回数を取り出し、その回数だけ、ソフトタイマ５３を使用してトレースデータの信号の表示処理を行う。なお、このとき、擬似表示装置にトレースデータの信号を表示処理する時間も考慮して、ソフトタイマのループカウンタを補正することも可能である。以上の処理を行うことによって、擬似表示装置に、トレースデータとして記録された信号の入出力タイミングなどの各イベント処理を実時間通りに再現実行することができるようになる。
【００５７】
実施の形態２．
次に、本発明の実施の形態２について説明する。ハードウェアにて実時間で表示されるものが、常にプログラム開発者にとって、見やすい表示とは限らない。たとえば、１秒毎に表示する場合に、１分後は正しく表示されるか否か、１時間後は正しく表示されるか否かを確認する場合、その時間だけプログラムを動作させる必要がある。又は、プログラムを一時的に変更しなければならず、元に戻すときに、戻し忘れによるミスの原因となる可能性がある。そこで、本実施の形態においては、シミュレーション結果を実時間に拘わらず、任意の再生速度で表示するものである。
【００５８】
このため、図２に示すプラットフォーム情報テーブル４１は、速度調整用のパラメータを備える。この場合、実際の時間経過を認識できるように、擬似的な時計をＰＣ上に速度調整用パラメータに合わせて表示する。
【００５９】
上述の実施の形態１においては、トレースデータ内のクロック数の実時間を計算し、この実時間に基づきソフトタイマのループ回数を実時間に合うように計算している。この場合、実時間通りにのみ表示され、処理速度は一定となる。これに対し、本実施の形態においては、速度調整用のパラメータを用いて、処理速度を変更できるようにする。
【００６０】
速度調整用のパラメータの使用方法としては、再現実行の速度を速めたい場合は１より大きい値を、遅くしたい場合は１より小さい値を記述する。この速度調整用のパラメータは、再現タイミング情報ファイル４３のループ回数を計算する際に使用する。図１０に速度調整用のパラメータを考慮した場合の再現タイミング情報ファイルの生成方法を示す。さらに、シミュレータの表示装置、例えばＣＲＴ又は液晶ディスプレイ等において、速度調整用のパラメータが０．５の場合には、２倍の速度で実時計が表示されるため、擬似表示装置と対比が容易となる。
【００６１】
本実施の形態においては、プラットフォーム情報テーブル４１内の速度調整用のパラメータを変更するだけで、再現モードにおける変換処理において、ループ回数が自動的に計算され、この値を元に再現実行されるため、プログラムの修正及びコンパイルなどの処理を行うことなく、再現速度を変更したシミュレーション結果の確認が可能となる。
【００６２】
例えば、プログラムに設定した処理時間を変更して試したい場合に、プログラムの修正及びコンパイルなどの処理を行うことなく、設定したい動作を確認することができるようになるため、開発期間の短縮化及びプログラム変更によるミスの減少を実現することができる。
【００６３】
実施の形態３．
上述の実施の形態１、２においては、ソフトウェアタイマを使って時間調整を行うものとして説明したが、オペレーティング・システムの強制的な割り込み処理によって、時間調整に誤差が生じる可能性がある。そこで、本実施の形態においては、シミュレータが動作するＰＣに、ソフトウェアタイマの代用となるハードウェアタイマを用意し、これを使って時間調整を行う。
【００６４】
そして、ソフトウェアタイマ実行の代わりに、ハードウェアタイマに時間を設定し、スタートさせる。設定した時間になると、割り込みによって、時間経過が再現実行部に知らされるため、ソフトタイマによる処理と同様の動作が可能である。
【００６５】
本実施の形態においては、ハードウェアタイマを使用するため、オペレーティング・システムの割り込み処理とは関係なく時間経過を処理プログラムに知らせることができる。
【００６６】
以上、説明したように、本実施の形態においては、以下の効果を奏する。先ず、再現モード時にて、プログラムのシミュレーションを行わずに、再現タイミング情報ファイル４３に登録された時間が経過するまで、シミュレータ１０内部のソフトタイマ又はハードタイマを使用して再現表示を行う。このため、命令の処理速度やシミュレータ１０を動作させるＰＣの性能に左右されずにシミュレーションの情報表示を行うことができる。よって、実際の実行時間とほぼ同じタイミングで再現表示することが可能になる。このことにより、ハードウェアを使わずに、シミュレータだけで実時間通りに動作していることを確認することができる。
【００６７】
また、プラットフォーム情報テーブル４１を参照することによって、動作基準に設定したＰＣの性能等に基づき再現を実行させるＰＣなどのシステム環境を考慮することができる。よってシステムの動作環境の差異によって表示結果が影響を受けないため、異なるシステムを使用しても同じタイミングで表示確認することができる。
【００６８】
更に、再現モードにより再現することで、ハードウェアがなくても、擬似表示装置の表示タイミングが意図した通りのものであるかの確認が可能になる。
【００６９】
更にまた、ある周期が正しい間隔で実行されているかを検証したい場合、従来のシミュレータでは、実行後に、タイミングチャートで正しい時間表示を行っているかを計算しなければならない。これに対し、本実施の形態においては、再現実行時に擬似表示装置の点滅間隔を確認するだけでよいので、再現実行にかかる時間だけで済み、作業効率が格段に向上する。
【００７０】
具体的には、シミュレーションにおいて、擬似表示装置の点滅が所定間隔で実行されているかを検証したい場合、従来は、シミュレーション実行後に、２点の検証点を検索する必要があり、その検索に約１０秒必要になる。さらに、この検証点２点間の実時間への換算に例えば約１０秒必要になり、合計２０秒を要する。これに対し、本実施の形態においては、擬似表示装置の点滅間隔だけを確認するだけでよいので、例えば点滅間隔が１秒毎であれば１秒で済み、この場合は、約２０倍の作業効率を得ることができる。更に複数の表示タイミングを従来の方法でチェックしようとした場合は、更に数倍の検証に時間がかかることになるが、実時間表示が可能な本シミュレータの再現モードを利用することで作業効率を格段に向上させることができる。
【００７１】
なお、本発明は上述した実施の形態のみに限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能であることは勿論である。
【図面の簡単な説明】
【００７２】
【図１】本発明の実施の形態１にかかるシミュレータを示すブロック図である。
【図２】本発明の実施の形態１にかかるシミュレータの処理の流を示す図である。
【図３】本発明の実施の形態１にかかるシミュレータの動作を示すフローチャートである。
【図４】同じく、本発明の実施の形態１にかかるシミュレータの動作を示すフローチャートである。
【図５】本発明の実施の形態１にかかるシミュレータにおける変換部が参照するプラットフォーム情報テーブルを示す図である。
【図６】本発明の実施の形態１にかかるシミュレータにおける再現タイミング情報ファイルの一具体例を示す図である。
【図７】本発明の実施の形態１にかかるシミュレータにおけるトレース情報変換部が、クロック数（ｒｃｌｋ）を論理時間（ｌｔｉｍｅ）に変換し、論理時間（ｌｔｉｍｅ）をループ回数（ｌｏｏｐ）に変換する変換方法を説明する図である・
【図８】クロック数（ｒｃｌｋ）を論理時間（ｌｔｉｍｅ）に変換する一具体例を示す図である。
【図９】論理時間（ｌｔｉｍｅ）をループ回数（ｌｏｏｐ）に変換する一具体例を示す図である。
【図１０】本発明の実施の形態２にかかるシミュレータにおける速度調整用のパラメータを考慮した場合の再現タイミング情報ファイルの生成方法を説明する図である。
【図１１】従来のシミュレータを示す図である。
【図１２】マイコンとＬＥＤを接続した様子を示す図である。
【図１３】特許文献２に記載のシミュレーション装置を示す図である。
【符号の説明】
【００７３】
１１、１１１  シミュレーション対象プログラム
１２、１１２  シミュレーション実行部
１３、１１３  トレースデータ記録部
１４、１１４  シミュレーション情報表示部
１５  シミュレーション再現部
１６、１１６  制御部
１７、１１７  オペレーティング・システム
２１、１２１  補助記録装置
２２、１２２  入出力装置
２３  トレースデータファイル
３１  モード切替部
３２  再現制御部
３３  変換部
３４  再現部
４１  プラットフォーム情報テーブル
４２  トレース情報変換部
４３  再現タイミング情報ファイル
５１  タイミング情報読取部
５２  再現実行部
５３  ソフトタイマ
【図１】
2007334812.tif 000003
【図２】
2007334812.tif 000004
【図３】
2007334812.tif 000005
【図４】
2007334812.tif 000006
【図５】
2007334812.tif 000007
【図６】
2007334812.tif 000008
【図７】
2007334812.tif 000009
【図８】
2007334812.tif 000010
【図９】
2007334812.tif 000011
【図１０】
2007334812.tif 000012
【図１１】
2007334812.tif 000013
【図１２】
2007334812.tif 000014
【図１３】
2007334812.tif 000015