(57)【要約】【課題】どのようなプログラムに対しても効率的にシミュレーションを行うこと。【解決手段】シミュレータは、読み込まれたプログラムのシミュレーションを行い、シミュレーション実行中にシミュレーション状態情報を生成するシミュレーション実行部と、シミュレーション状態情報のシミュレーション実行部からの出力タイミングに関する複数のモードの中から指定されたモードを認識するモード認識部と、モード認識部によって認識されたモードに応じて、シミュレーションの実行を制御するシミュレーション制御部と、シミュレーション実行部からシミュレーション状態情報を取得し、かつシミュレーション実行部にシミュレーション状態情報を入力する状態入出力部とを備える。複数のモードにはそれぞれ異なる出力タイミングが設定され、シミュレーション制御部は、認識されたモードに対応した出力タイミングでシミュレーション状態情報を出力するようシミュレーション実行部を制御する。【選択図】図１
2007293771.tif 000002
【特許請求の範囲】
【請求項１】
読み込まれたプログラムのシミュレーションを行い、シミュレーション実行中にシミュレーション状態情報を生成するシミュレーション実行部と、
シミュレーション状態情報の前記シミュレーション実行部からの出力タイミングに関する複数のモードの中から指定されたモードを認識するモード認識部と、
前記モード認識部によって認識されたモードに応じて、前記シミュレーション実行部による前記シミュレーションの実行を制御するシミュレーション制御部と、
前記シミュレーション実行部から出力されたシミュレーション状態情報を取得し、かつ前記シミュレーション実行部にシミュレーション状態情報を入力する状態入出力部と、を備え、
前記複数のモードにはそれぞれ異なる出力タイミングが設定され、
前記シミュレーション制御部は、前記認識されたモードに対応した出力タイミングでシミュレーション状態情報を出力するよう前記シミュレーション実行部を制御することを特徴とするシミュレータ。
【請求項２】
請求項１に記載のシミュレータであって、
前記シミュレーション実行部は、前記状態入出力部から入力されたシミュレーション状態情報が示すシミュレーション状態を復元することを特徴とするシミュレータ。
【請求項３】
請求項１に記載のシミュレータであって、
前記シミュレーション制御部は、前記複数のモードのそれぞれに対応した複数のタイミング制御部を有し、
前記複数のタイミング制御部は、
前記シミュレーション状態情報の出力タイミングが所定の時間で設定された時間モードに対応する時間モード制御部、
前記シミュレーション状態情報の出力タイミングが所定のサイクル数間隔で設定されたサイクルモードに対応するサイクルモード制御部、
前記シミュレーション状態情報の出力タイミングが所定の割り込み数間隔で設定された割り込みモードに対応する割り込みモード制御部、
前記シミュレーション状態情報の出力タイミングが所定のメモリアクセス数間隔で設定されたメモリアクセスモードに対応するメモリアクセスモード制御部、
前記シミュレーション状態情報の出力タイミングが所定のフラグ変化数間隔で設定されたフラグ変化モードに対応するフラグ変化モード制御部、及び
前記シミュレーション状態情報の出力タイミングが所定のタスク切替数間隔で設定されたタスク切替モードに対応するタスク切替モード制御部のうち、少なくとも２つを含むことを特徴とするシミュレータ。
【請求項４】
請求項３に記載のシミュレータであって、
前記時間モードに設定された前記所定の時間間隔、前記サイクルモードに設定された前記所定のサイクル数、前記割り込みモードに設定された前記所定の割り込み数、前記メモリアクセスモードに設定された前記所定のメモリアクセス数、前記フラグ変化モードに設定された前記所定のフラグ変化数、前記タスク切替モードに設定された前記所定のタスク切替数は、当該シミュレータのユーザによって設定されることを特徴とするシミュレータ。
【請求項５】
請求項３に記載のシミュレータであって、
前記割り込みモードに設定された前記所定の割り込み数は、全ての割り込みを対象とした割り込み回数であることを特徴とするシミュレータ。
【請求項６】
請求項３に記載のシミュレータであって、
前記割り込みモードに設定された前記所定の割り込み数は、当該シミュレータのユーザによって指定された割り込みを対象とした割り込み回数であることを特徴とするシミュレータ。
【請求項７】
請求項３に記載のシミュレータであって、
前記メモリアクセスモードに設定された前記所定のメモリアクセス数は、全アドレス範囲のメモリにアクセスされた回数であることを特徴とするシミュレータ。
【請求項８】
請求項３に記載のシミュレータであって、
前記メモリアクセスモードに設定された前記所定のメモリアクセス数は、当該シミュレータのユーザによって指定されたアドレス範囲のメモリにアクセスされた回数であることを特徴とするシミュレータ。
【請求項９】
請求項３に記載のシミュレータであって、
前記フラグ変化モードに設定された前記フラグ変化数は、全てのフラグを対象としたフラグの変化の回数であることを特徴とするシミュレータ。
【請求項１０】
請求項３に記載のシミュレータであって、
前記フラグ変化モードに設定された前記フラグ変化数は、当該シミュレータのユーザによって指定されたフラグを対象としたフラグの変化の回数であることを特徴とするシミュレータ。
【請求項１１】
請求項３に記載のシミュレータであって、
前記タスク切替モードに設定された前記タスク切替数は、全てのタスクを対象としたタスクの切替回数であることを特徴とするシミュレータ。
【請求項１２】
請求項３に記載のシミュレータであって、
前記タスク切替モードに設定された前記タスク切替数は、当該シミュレータのユーザによって指定されたタスクを対象としたタスクの切替回数であることを特徴とするシミュレータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション実行中に、指定されたモードに対応するタイミングでシミュレーション状態情報を出力するシミュレータに関する。
【背景技術】
【０００２】
新規に組み込みプログラムを開発する場合、作成した組み込みプログラムが設計者の意図通りに動作するかを検証する必要がある。当該組み込みプログラムを実行するハードウェアが完成していない場合は、ソフトウェアの早期開発を目的としてソフトウェアシミュレーションを用いて検証が行われる。
【０００３】
設計者の意図通りに動作しなかった場合はデバッグを行う必要がある。デバッグを行う際には、バグを取り除くために何度もシミュレーションが行われるが、シミュレーションに長時間を要する場合はデバッグのために長期間が必要とされる。このため、シミュレーション実行中のあるタイミングにおけるレジスタ値やメモリの記憶内容を全て記憶してサスペンドする機能が用いられている。当該機能を利用するとサスペンドされた状態に復元することができるため、シミュレーションを最初から行わなくても良い。この結果、デバッグに要する時間を短くすることができる。携帯電話等の端末に組み込まれるプログラムは検証項目が膨大であるため、当該機能は非常に有用である。
【０００４】
図４は、従来のシミュレータの構成を示すブロック図である。図４に示すシミュレータ１０は、プログラムインターフェース部１１と、シミュレーション実行部１３と、コマンドインターフェース部１５と、タスク切替制御部１７と、状態入出力部１９とを備える。
【０００５】
プログラムインターフェース部１１は、プログラム２１をシミュレータ１０に読み込むためのインターフェースである。シミュレーション実行部１３は、プログラムインターフェース部１１を介して読み込まれたプログラム２１のシミュレーションを行う。また、シミュレーション実行部１３は、タスク切替制御部１７からの指示に応じてシミュレーションを中断し、当該中断時のシミュレーション状態に係る情報（以下、「シミュレーション状態情報）という。）を出力する。
【０００６】
コマンドインターフェース部１５は、シミュレータ１０のユーザが操作する入力端末２３から入力されたコマンドを読み込むためのインターフェースである。タスク切替制御部１７は、コマンドインターフェース部１５を介して読み込まれたコマンドに応じてタスクの切り替えを認識して、タスク切替時にシミュレーション実行部１３がシミュレーション状態情報を出力するよう制御する。
【０００７】
状態入出力部１９は、シミュレーション実行部１３から出力されたシミュレーション状態情報を取得し、当該取得したシミュレーション状態情報を外部の記憶装置２５に格納する。また、状態入出力部１９は、記憶装置２５から取得したシミュレーション状態情報をシミュレーション実行部１３に入力する。シミュレーション状態情報が入力されたシミュレーション実行部１３は、当該シミュレーション状態情報が示すシミュレーション状態を復元する。
【０００８】
【特許文献１】特開平６−１３１２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかし、上記シミュレータ１０を用いて、タスク切替が存在しないプログラムや、膨大なシミュレーション時間を要するタスクを有するプログラムをデバッグする際には、不具合状態の再現に長時間を要するため効率的ではない。また、検証を行うプログラムの品質が高い場合であっても、不具合状態を復元するために必要な情報を保存する期間が一定のため、シミュレーションの実行速度が低下し、デバッグ工数が増加してしまう。
【００１０】
本発明の目的は、どのようなプログラムに対しても効率的にシミュレーションを行うことのできるシミュレータを提供することである。
【課題を解決するための手段】
【００１１】
本発明は、読み込まれたプログラムのシミュレーションを行い、シミュレーション実行中にシミュレーション状態情報を生成するシミュレーション実行部と、シミュレーション状態情報の前記シミュレーション実行部からの出力タイミングに関する複数のモードの中から指定されたモードを認識するモード認識部と、前記モード認識部によって認識されたモードに応じて、前記シミュレーション実行部による前記シミュレーションの実行を制御するシミュレーション制御部と、前記シミュレーション実行部から出力されたシミュレーション状態情報を取得し、かつ前記シミュレーション実行部にシミュレーション状態情報を入力する状態入出力部と、を備え、前記複数のモードにはそれぞれ異なる出力タイミングが設定され、前記シミュレーション制御部は、前記認識されたモードに対応した出力タイミングでシミュレーション状態情報を出力するよう前記シミュレーション実行部を制御するシミュレータを提供する。
【００１２】
上記シミュレータにおいて、前記シミュレーション実行部は、前記状態入出力部から入力されたシミュレーション状態情報が示すシミュレーション状態を復元しても良い。
【００１３】
上記シミュレータにおいて、前記シミュレーション制御部は、前記複数のモードのそれぞれに対応した複数のタイミング制御部を有し、前記複数のタイミング制御部は、前記シミュレーション状態情報の出力タイミングが所定の時間で設定された時間モードに対応する時間モード制御部、前記シミュレーション状態情報の出力タイミングが所定のサイクル数間隔で設定されたサイクルモードに対応するサイクルモード制御部、前記シミュレーション状態情報の出力タイミングが所定の割り込み数間隔で設定された割り込みモードに対応する割り込みモード制御部、前記シミュレーション状態情報の出力タイミングが所定のメモリアクセス数間隔で設定されたメモリアクセスモードに対応するメモリアクセスモード制御部、前記シミュレーション状態情報の出力タイミングが所定のフラグ変化数間隔で設定されたフラグ変化モードに対応するフラグ変化モード制御部、及び前記シミュレーション状態情報の出力タイミングが所定のタスク切替数間隔で設定されたタスク切替モードに対応するタスク切替モード制御部のうち、少なくとも２つを含んでも良い。
【００１４】
上記シミュレータにおいて、前記時間モードに設定された前記所定の時間間隔、前記サイクルモードに設定された前記所定のサイクル数、前記割り込みモードに設定された前記所定の割り込み数、前記メモリアクセスモードに設定された前記所定のメモリアクセス数、前記フラグ変化モードに設定された前記所定のフラグ変化数、前記タスク切替モードに設定された前記所定のタスク切替数は、当該シミュレータのユーザによって設定されても良い。
【００１５】
上記シミュレータにおいて、前記割り込みモードに設定された前記所定の割り込み数は、全ての割り込みを対象とした割り込み回数であっても良い。
【００１６】
上記シミュレータにおいて、前記割り込みモードに設定された前記所定の割り込み数は、当該シミュレータのユーザによって指定された割り込みを対象とした割り込み回数であっても良い。
【００１７】
上記シミュレータにおいて、前記メモリアクセスモードに設定された前記所定のメモリアクセス数は、全アドレス範囲のメモリにアクセスされた回数であっても良い。
【００１８】
上記シミュレータにおいて、前記メモリアクセスモードに設定された前記所定のメモリアクセス数は、当該シミュレータのユーザによって指定されたアドレス範囲のメモリにアクセスされた回数であっても良い。
【００１９】
上記シミュレータにおいて、前記フラグ変化モードに設定された前記フラグ変化数は、全てのフラグを対象としたフラグの変化の回数であっても良い。
【００２０】
上記シミュレータにおいて、前記フラグ変化モードに設定された前記フラグ変化数は、当該シミュレータのユーザによって指定されたフラグを対象としたフラグの変化の回数であっても良い。
【００２１】
上記シミュレータにおいて、前記タスク切替モードに設定された前記タスク切替数は、全てのタスクを対象としたタスクの切替回数であっても良い。
【００２２】
上記シミュレータにおいて、前記タスク切替モードに設定された前記タスク切替数は、当該シミュレータのユーザによって指定されたタスクを対象としたタスクの切替回数であっても良い。
【発明の効果】
【００２３】
本発明に係るシミュレータによれば、どのようなプログラムに対しても効率的にシミュレーションを行うことができる。
【発明を実施するための最良の形態】
【００２４】
以下、本発明の実施形態について、図面を参照して説明する。
【００２５】
図１は、一実施形態のシミュレータの構成を示すブロック図である。図１に示すシミュレータ１００は、プログラムインターフェース部１０１と、シミュレーション実行部１０３と、コマンドインターフェース部１０５と、モード認識部１０７と、シミュレーション制御部１０９と、状態入出力部１１１とを備える。
【００２６】
プログラムインターフェース部１０１は、プログラム１２１をシミュレータ１００に読み込むためのインターフェースである。シミュレーション実行部１０３は、プログラムインターフェース部１０１を介して読み込まれたプログラム１２１のシミュレーションを行う。また、シミュレーション実行部１０３は、シミュレーション制御部１０９からの指示に応じてシミュレーションを中断し、当該中断時のシミュレーション状態を示す情報（以下、「シミュレーション状態情報）という。）を出力する。
【００２７】
コマンドインターフェース部１０５は、シミュレータ１００のユーザが操作する入力端末１２３から入力されたコマンドを読み込むためのインターフェースである。モード認識部１０７は、コマンドインターフェース部１０５を介して読み込まれたコマンドを認識する。シミュレーション制御部１０９は、モード認識部１０７によって認識されたモードに応じて、シミュレーション実行部１０３によるシミュレーションの実行を制御する。
【００２８】
状態入出力部１１１は、シミュレーション実行部１０３から出力されたシミュレーション状態情報を取得し、当該取得したシミュレーション状態情報を外部の記憶装置１２５に格納する。また、状態入出力部１１１は、記憶装置１２５からシミュレーション状態情報を取得して、シミュレーション実行部１０３に入力する。このとき、シミュレーション実行部１０３は当該シミュレーション状態情報が示すシミュレーション状態を復元する。
【００２９】
詳細には、ユーザによって指定されたシミュレーション状態を復元するよう指示するコマンドがコマンドインターフェース部１０５を介して状態入出力部１１１に入力された場合、状態入出力部１１１は、記憶装置１２５から当該コマンドに応じたシミュレーション状態情報を記憶装置１２５から取得する。当該取得されたシミュレーション状態情報がシミュレーション実行部１０３に入力されると、シミュレーション実行部１０３は当該シミュレーション状態情報が示すシミュレーション状態を復元する。なお、指定されたシミュレーション状態を復元するよう指示するコマンドが入力される際には、シミュレーション実行部１０３で当該コマンドに応じたプログラムのシミュレーションが行われているのが好ましい。
【００３０】
本実施形態では、入力端末から入力され得るコマンドは次の複数が用意されている。本実施形態の複数のモードは、時間モード、サイクルモード、割り込みモード、メモリアクセスモード、フラグ変化モード、及びタスク切替モードである。
【００３１】
時間モードには、シミュレーション状態情報の出力タイミングが所定の時間間隔（例えば、１秒に１回）で設定されている。サイクルモードには、シミュレーション状態情報の出力タイミングが所定のサイクル数間隔（例えば、１００サイクルに１回）で設定されている。割り込みモードには、シミュレーション状態情報の出力タイミングが所定の割り込み数間隔（例えば、１０回に１回）で設定されている。メモリアクセスモードには、シミュレーション状態情報の出力タイミングが所定のメモリアクセス数間隔（例えば、１００回に１回）で設定されている。フラグ変化モードには、シミュレーション状態情報の出力タイミングが所定のフラグ変化数間隔（例えば、１０回に１回）で設定されている。タスク切替モードには、シミュレーション状態情報の出力タイミングが所定のタスク切替数間隔（例えば、１０回に１回）で設定されている。
【００３２】
シミュレーション制御部１０９は、上記複数のコマンドのそれぞれに対応した複数のタイミング制御部を有する。図２は、シミュレーション制御部１０９の内部構成を示すブロック図である。図２に示すように、シミュレーション制御部１０９は、時間モードに対応する時間モード制御部１５１と、サイクルモードに対応するサイクルモード制御部１５３と、割り込みモードに対応する割り込みモード制御部１５５と、メモリアクセスモードに対応するメモリアクセスモード制御部１５７と、フラグ変化モードに対応するフラグ変化モード制御部１５９と、タスク切替モードに対応するタスク切替モード制御部１６１とを有する。
【００３３】
シミュレーション制御部１０９は、モード認識部１０７によって認識されたモードに対応するタイミング制御部を実行させる。なお、時間モードにおける時間、サイクルモードにおける割り込み数、メモリアクセスモードにおけるメモリアクセス数、フラグ変化モードにおけるフラグ変化数、及びタスク切替モードにおけるタスク切替数は、シミュレータ１００のユーザによって設定された時間又は回数である。ユーザによって設定された時間間隔又は回数は、コマンドインターフェース部１０５を介して読み込まれ、モード認識部１０７によって認識された後、該当するタイミング制御部に設定される。
【００３４】
なお、割り込みモードに設定される割り込み数は、全ての割り込みを対象とした回数であっても、ユーザによって指定された割り込みを対象とした回数であっても良い。また、メモリアクセスモードに設定されるメモリアクセス数は、図示しないメモリの全アドレス範囲を対象としたアクセス回数であっても、ユーザによって指定されたアドレス範囲を対象としたアクセス回数であっても良い。また、フラグ変化モードに設定されるフラグ変化数は、全てのフラグを対象とした回数であっても、ユーザによって指定されたフラグを対象とした回数であっても良い。また、タスク切替モードに設定されるタスク切替数は、全てのタスクを対象とした回数であっても、ユーザによって指定されたタスクを対象とした回数であっても良い。
【００３５】
シミュレーション実行部１０３は、ユーザによって選択されたモードに対応するタイミング制御部から出力された指示に従うタイミングでシミュレーションを中断し、当該中断時のシミュレーション状態を示すシミュレーション状態情報を出力する。
【００３６】
以下、本実施形態のシミュレータ１００の動作について説明する。図３は、本実施形態のシミュレータ１００の動作を示すフローチャートである。図３に示すように、シミュレータ１００は、ユーザからシミュレーション状態の復元が指示されたかを判断する（ステップＳ１０１）。ステップＳ１０１で復元が指示されたと判断された場合はステップＳ１０３に進み、復元が指示されていないと判断された場合はステップＳ１０５に進む。ステップＳ１０３では、状態入出力部１１１が記憶装置１２５からシミュレーション状態情報を取得してシミュレーション実行部１０３に入力する。シミュレーション実行部１０３は入力されたシミュレーション状態情報に基づいてシミュレーション状態を復元する。
【００３７】
ステップＳ１０５では、シミュレータ１００は、ユーザによってモードが選択されたかを判断する。ステップＳ１０５で、モードが選択された場合はステップＳ１０７に進み、モードが選択されていない場合はステップＳ１０９に進む。ステップＳ１０７では、ユーザによって選択されたモードの出力タイミングをシミュレーション制御部１０９に設定する。ステップＳ１０９では、シミュレーション実行部１０３がシミュレーションを行う。
【００３８】
シミュレーションが行われている間、シミュレーション制御部１０９は、設定された出力タイミングかをモニタリングする（ステップＳ１１１）。ステップＳ１１１で設定された出力タイミングと判断された場合はステップＳ１１３に進み、設定された出力タイミングでないと判断された場合はステップＳ１１５に進む。ステップＳ１１３では、シミュレーション実行部１０３から出力されたシミュレーション状態情報が記憶装置１２５に格納される。ステップＳ１１５では、シミュレーションが終了したかを判断する。ステップＳ１１１〜Ｓ１１５はシミュレーションが終了するまで繰り返し続けられる。
【００３９】
本実施形態のシミュレータ１００によれば、不具合状態の再現するタイミングがそれぞれ異なる複数のモードが用意されており、プログラムの品質を考慮して当該複数のモードの中から選択されたモードに対応するタイミングのシミュレーション状態が記憶される。したがって、タスク切替が存在しないプログラムや、膨大なシミュレーション時間を要するタスクを有するプログラムをシミュレーションする際も、所望のシミュレーション状態を容易に短時間で復元することができる。また、ユーザが最適なモードを選択することによりシミュレーション状態情報の出力回数が制限されるため、シミュレーションの実行速度の低下を防ぐことができる。このため、シミュレーションによるデバッグ工数を削減することができる。これらの結果、どのようなプログラムに対しても効率的にシミュレーションを行うことができる。
【図面の簡単な説明】
【００４０】
【図１】一実施形態のシミュレータの構成を示すブロック図
【図２】シミュレーション制御部の内部構成を示すブロック図
【図３】一実施形態のシミュレータの動作を示すフローチャート
【図４】従来のシミュレータの構成を示すブロック図
【符号の説明】
【００４１】
１００  シミュレータ
１０１  プログラムインターフェース部
１０３  シミュレーション実行部
１０５  コマンドインターフェース部
１０７  モード認識部
１０９  シミュレーション制御部
１１１  状態入出力部
１５１  時間モード制御部
１５３  サイクルモード制御部
１５５  割り込みモード制御部
１５７  メモリアクセスモード制御部
１５９  フラグ変化モード制御部
１６１  タスク切替モード制御部
【図１】
2007293771.tif 000003
【図２】
2007293771.tif 000004
【図３】
2007293771.tif 000005
【図４】
2007293771.tif 000006