(57)【要約】【課題】ソフトウェアシミュレーションに用いるターゲットシステムの構築時の設定ミスを減らすこと【解決手段】周辺機能シミュレーション部１２０は、マイコン内で実行されるプログラムの実行時に、前記マイコン上の各端子のデータ入出力の解析に応じて、端子名と端子種別が関連付けられた端子情報を出力する。解析結果出力部１４０は、端子情報と、ＧＵＩ部品と端子種別との関係を定めた部品情報と、に基づいてマイコン上の各端子に対して使用可能なＧＵＩ部品を規定した使用端子情報ログ３０を生成する。ログファイル処理部１５０は、ログ情報と、ユーザからの設定と、に基づいて、マイコン上の各端子とＧＵＩ部品との対応を示す表示制御情報を生成する。ＧＵＩ部１３０は、ＧＵＩ部品を制御するとともに、表示制御情報に基づいてＧＵＩ部品を疑似ターゲットシステムに再配置する。【選択図】図１
2013242762.tif 000002
【特許請求の範囲】
【請求項１】
検証対象のマイコンと関連した動作を行う１つ以上のインターフェイス部品が配置されたターゲットシステムを構築してシミュレーションを実行するシミュレーション装置であって、
前記マイコン内で実行されるプログラムの実行時に、前記マイコン上の各端子のデータ入出力を解析し、端子名と端子種別が関連付けられた端子情報を出力する周辺機能シミュレーション部と、
前記端子情報と、前記インターフェイス部品と端子種別との関係を定めた部品情報と、に基づいて前記マイコン上の各端子に対して使用可能な前記インターフェイス部品を規定したログ情報を生成する解析結果出力部と、
前記ログ情報と、ユーザからの設定と、に基づいて、前記マイコン上の各端子と前記インターフェイス部品との関連を示す関連情報を生成するログ処理部と、
前記インターフェイス部品を制御するとともに、前記関連情報に基づいて前記インターフェイス部品を前記ターゲットシステムに再配置するインターフェイス部と、を備えるシミュレーション装置。
【請求項２】
前記周辺機能シミュレーション部は、
前記端子情報を保持し、前記インターフェイス部へのデータ出力、及び前記インターフェイス部からのデータ受信を行う周辺機能情報管理部と、
前記インターフェイス部と、前記周辺機器情報管理部と、のデータ入出力を監視して出力すべき前記端子情報の解析を行う使用端子解析部と、
を備える請求項１に記載のシミュレーション装置。
【請求項３】
前記１つ以上のインターフェイス部品の少なくとも一部は、前記マイコンへの割り込みを模擬した疑似割り込みを発生させることを特徴とする請求項１に記載のシミュレーション装置。
【請求項４】
前記マイコンに対するデータ入力が生じる条件と、データ入力パターンと、入力先の端子と、が規定されたイベントファイルに基づいて、前記プログラムの実行中にデータ入力イベントの発生を検出し、当該イベント検出時に前記入力先の端子を介して前記周辺機能シミュレーション部に供給されるデータを更新する入力信号イベント処理部、
を更に有することを特徴とする請求項１に記載のシミュレーション装置。
【請求項５】
前記入力信号イベント処理部は、前記プログラムの実行時間に関するイベントを検出することを特徴とする請求項４に記載のシミュレーション装置。
【請求項６】
検証対象のマイコンと関連した動作を行う１つ以上のインターフェイス部品が配置されたターゲットシステムを構築してシミュレーションを実行するシミュレーション方法であって、
前記マイコン内で実行されるプログラムの実行時に、前記マイコン上の各端子のデータ入出力を解析し、端子名と端子種別が関連付けられた端子情報を出力し、
前記端子情報と、前記インターフェイス部品と端子種別との関係を定めた部品情報と、に基づいて前記マイコン上の各端子に対して使用可能な前記インターフェイス部品を規定したログ情報を生成し、
前記ログ情報と、ユーザからの設定と、に基づいて、前記マイコン上の各端子と前記インターフェイス部品との対応を示す関連情報を生成し、
前記インターフェイス部品を制御するとともに、前記関連情報に基づいて前記インターフェイス部品を前記ターゲットシステムに再配置する、
シミュレーション方法。
【請求項７】
前記１つ以上のインターフェイス部品の少なくとも一部は、前記マイコンへの割り込みを模擬した疑似割り込みを発生させることを特徴とする請求項６に記載のシミュレーション方法。
【請求項８】
前記マイコンに対するデータ入力が生じる条件と、データ入力パターンと、入力先の端子と、が規定されたイベントファイルに基づいて、前記プログラムの実行中にデータ入力イベントの発生を検出し、当該イベント検出に応じて前記入力先の端子を介してマイコンにデータを供給することを特徴とする請求項６に記載のシミュレーション方法。
【請求項９】
前記プログラムの実行時間に関するイベントを検出することを特徴とする請求項８に記載のシミュレーション方法。
【請求項１０】
検証対象のマイコンと関連した動作を行う１つ以上のインターフェイス部品が配置されたターゲットシステムを構築してシミュレーションを実行する処理をコンピュータに実行させるプログラムであって、
コンピュータに、
前記マイコン内で実行されるプログラムの実行時に、前記マイコン上の各端子のデータ入出力を解析し、端子名と端子種別が関連付けられた端子情報を出力するステップと、
前記端子情報と、前記インターフェイス部品と端子種別との関係を定めた部品情報と、に基づいて前記マイコン上の各端子に対して使用可能な前記インターフェイス部品を規定したログ情報を生成するステップと、
前記ログ情報と、ユーザからの設定と、に基づいて、前記マイコン上の各端子と前記インターフェイス部品との対応を示す関連情報を生成するステップと、
前記インターフェイス部品を制御するとともに、前記関連情報に基づいて前記インターフェイス部品を前記ターゲットシステムに再配置するステップと、
を実行させるためのプログラム。
【請求項１１】
前記１つ以上のインターフェイス部品の少なくとも一部は、前記マイコンへの割り込みを模擬した疑似割り込みを発生させることを特徴とする請求項１０に記載のプログラム。
【請求項１２】
前記マイコンに対するデータ入力が生じる条件と、データ入力パターンと、入力先の端子と、が規定されたイベントファイルに基づいて、前記プログラムの実行中にデータ入力イベントの発生を検出し、当該イベント検出に応じて前記入力先の端子を介してマイコンにデータを供給するステップ、を更に実行させることを特徴とする請求項１０に記載のプログラム。
【請求項１３】
前記プログラムの実行時間に関するイベントを検出することを特徴とする請求項１２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置、シミュレーション方法、及びプログラムに関する。
【背景技術】
【０００２】
近年、マイクロコントローラの高性能化及び高機能化が進んでいる。これに伴い、マイクロコントローラ上で動作する実行プログラムも大規模化し、かつ複雑化してきている。そこで、マイクロコントローラ（以下、マイコンとも呼称する。）を模擬するソフトウェアシミュレータが開発され、これらのシミュレータを用いてマイコンの動作検証が行われている。
【０００３】
ソフトウェアシミュレータは、マイコン上の入出力端子を介した信号入出力のシミュレーションを行うための様々なＧＵＩ（Graphical User Interface）部品を備えている。例えば、図２４に示すように、ＧＵＩ部品としてボタン型、ＬＥＤ型、７ｓｅｇＬＥＤ型の部品が挙げられる。ユーザは、ソフトウェアシミュレータを操作し、疑似ターゲットシステムを構築する。そして、この疑似ターゲットシステムを用いてシミュレーションを実行することにより、入力操作や出力表示のシミュレーションを実行する。図２５は、簡単な疑似ターゲットシステムの外観を示す図である。
【０００４】
一般的な疑似ターゲットシステムの構築手順は、使用するＧＵＩ部品をユーザが選択し、選択したＧＵＩ部品をソフトウェアシミュレータのウインドウ画面上に配置してから、これらのＧＵＩ部品毎にマイコンの入出力端子を割り当てる、というものである。
【０００５】
特許文献１は、ソフトウェアシミュレータの一態様を開示している。当該ソフトウェアシミュレータでは、実機（マイコン）部品が有する機能をソフトウェアで表現したシミュレータ部品を生成し、当該シミュレーション部品と仮想実機のシミュレータドライバを接続して仮想実機を構築し、シミュレーションを実行する。当該シミュレータは、シミュレーション部品を容易に置換できるため、短時間で様々なバリエーションのマイコンの動作確認を実行できる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開平７−９３３９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載のシミュレーション装置は、上述のようにシミュレーション部品を置換することが容易な構成である。しかし、置換したシミュレーション部品とシミュレータドライバの再接続を手動で設定する必要がある。ここで、ユーザがシミュレーション部品と、マイコン上の端子に関するシミュレーションドライバと、の接続設定を誤ってしまった場合、正しいシミュレーションが行えなくなってしまう。なお、当該問題は、特許文献１に記載のシミュレーション装置のみならず、一般的なソフトウェアシミュレータを用いた場合であっても生じ得る。
【０００８】
すなわち、上述した技術では、ソフトウェアシミュレータを用いた疑似的なターゲットシステムの構築時に設定ミスをする可能性があり、正しい（意図した）シミュレーションを行えない恐れがあった。
【０００９】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１０】
一実施の形態によれば、シミュレーション装置は、マイコン内で実行されるプログラムの実行時に、マイコン上の各端子のデータ入出力解析に応じて、端子名と端子種別が関連付けられた端子情報を取得する。シミュレーション装置は、この端子情報とユーザ設定に応じて、各端子とインターフェイス部品を関連付けた関連情報を生成する。そして、シミュレーション装置は、関連情報を基にターゲットシステム上でのインターフェイス部品を再配置する。
【発明の効果】
【００１１】
本発明では、ソフトウェアシミュレータのターゲットシステムの構築時の設定ミスを減らすことができるシミュレーション装置、シミュレーション方法、及びプログラムを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１にかかるシミュレーション装置１０の構成を示すブロック図である。
【図２】シミュレーション対象となるマイコンの一例を示す図である。
【図３】実施の形態１にかかる周辺機能シミュレーション部１２０の詳細構成を示すブロック図である。
【図４】実施の形態１にかかる使用端子情報ログ３０の構成を示す図である。
【図５】実施の形態１にかかる関連情報の一例を示す図である。
【図６】実施の形態１にかかるＧＵＩ部品設定データの一例を示す図である。
【図７】実施の形態１にかかるシミュレーション装置１０の各処理部の動作を示す図である。
【図８】実施の形態１にかかるユーザプログラム２０の一例を示す図である。
【図９】シミュレーション対象となるマイコンの一例を示す図である。
【図１０】実施の形態１にかかるシミュレーション装置１０の各処理部の動作を示す図である。
【図１１】実施の形態１にかかるユーザプログラム２０の一例を示す図である。
【図１２】実施の形態１にかかるシミュレーションの概念図である。
【図１３】実施の形態１にかかるシミュレーション装置１０の各処理部の動作を示す図である。
【図１４】実施の形態１にかかるユーザプログラム２０の一例を示す図である。
【図１５】実施の形態１にかかるシミュレーション装置１０の動作の流れを示すフローチャートである。
【図１６】実施の形態２にかかるシミュレーション装置１０の構成を示すブロック図である。
【図１７】実施の形態２にかかる使用端子情報ログ３０を示す図である。
【図１８】実施の形態２にかかる入力信号イベントファイル４０の一例を示す図である。
【図１９】実施の形態２にかかるシミュレーション装置１０の各処理部の動作を示す図である。
【図２０】実施の形態２にかかるシミュレーション装置１０の各処理部の動作を示す図である。
【図２１】実施の形態２にかかるユーザプログラム２０の一例を示す図である。
【図２２】実施の形態２にかかるシミュレーション装置１０の動作の流れを示すフローチャートである。
【図２３】実施の形態２にかかるシミュレーション装置１０の動作の流れを示すフローチャートである。
【図２４】ＧＵＩ部品の一例を示す図である。
【図２５】疑似ターゲットシステムの外観を示す図である。
【発明を実施するための形態】
【００１３】
＜実施の形態１＞
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施の形態にかかるシミュレーション装置の構成を示すブロック図である。シミュレーション装置１０には、ユーザプログラム２０が入力される。
【００１４】
ユーザプログラム２０は、検証対象とするマイコンを動作させるためのプログラムである。ユーザプログラム２０に用いられるプログラミング言語としては、例えばＣ言語が挙げられる。
【００１５】
シミュレーション装置１０は、命令シミュレーション部１１０と、周辺機能シミュレーション部１２０と、ＧＵＩ（Graphical User Interface）部１３０と、解析結果出力部１４０と、ログファイル処理部１５０と、を備える。
【００１６】
命令シミュレーション部１１０は、ユーザプログラム２０を実行する。詳細には、命令シミュレーション部１１０は、ユーザプログラム２０のバイナリコードを１行ごと実行していく。命令シミュレーション部１１０は、周辺機能を実行する（例えば端子からのデータ読み出しを実行する）コード記述を実行する場合、周辺機能シミュレーション部１２０とのデータのやり取りを行う。
【００１７】
周辺機能シミュレーション部１２０は、マイコン上の端子の情報を管理すると共に、シミュレーション時の端子からのデータ入出力を制御する。例えば、周辺機能シミュレーション部１２０は、マイコン上の端子からのデータの受信、マイコン上の端子へのデータ出力、割り込み（内部割り込み、外部割り込み）の受信等を制御する。周辺機能シミュレーション部１２０の処理詳細の説明に先立ち、シミュレーション装置１０が検証対象とするマイコンの一例を図２に示す。
【００１８】
図２に示すように、マイコンは、ＣＰＵと、ポートを有する。ポート内には、端子Ｐ００が存在する。端子Ｐ００は、治具（マイコン外部の装置）と接続されている。治具が操作された場合、端子Ｐ００にデータが入力される。当該治具は、シミュレーション装置１０のシミュレーション画面上ではスイッチ、ボタン等のＧＵＩ部品によって代替される。
【００１９】
シミュレーション装置１０は、当該治具をＧＵＩ部品で置き換えたシミュレーション画面を表示し、マイコンに組み込むユーザプログラム２０を用いて動作シミュレーションを行う。周辺機能シミュレーション部１２０は、これらの治具と接続する端子等の情報を管理するとともに、治具（ＧＵＩ部品）との間の信号やり取りを検出する。図３は、周辺機能シミュレーション部１２０の詳細構成を示すブロック図である。
【００２０】
周辺機能シミュレーション部１２０は、周辺機能情報管理部１２１と、使用端子解析部１２２と、を備える。周辺機能情報管理部１２１は、マイコン上の各端子の端子種別（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）と端子名等の端子情報を管理する。図３では、周辺機能情報管理部１２１は、２つの端子（Ｐ００、Ｐ１０）にかかる端子情報を管理している。周辺機能情報管理部１２１は、ＧＵＩ部１３０や命令シミュレーション部１１０からの入出力に応じて保持する端子情報を更新する。
【００２１】
使用端子解析部１２２は、周辺機能情報管理部１２１とＧＵＩ部１３０とのデータ入出力を監視する。詳細には、使用端子解析部１２２は、周辺機能情報管理部１２１からのデータ出力、または周辺機能情報管理部１２１へのデータ入力に応じて、端子情報を解析する。解析例は、図７等を参照して後述する。
【００２２】
再び、図１を参照する。ＧＵＩ部１３０は、マイコン上の端子と接続する治具、または割り込み処理を模擬する各ＧＵＩ部品を制御する。ＧＵＩ部１３０は、シミュレーションの実行に応じて処理を行う。たとえば、ＧＵＩ部１３０は、治具からマイコンに入力を行う処理を模擬する場合、周辺機能情報管理部１２１にデータ入力を行う。また、マイコンから治具に入力があった際の処理を模擬する場合、ＧＵＩ部１３０には、周辺機能情報管理部１２１からデータが入力される。周辺機能情報管理部１２１からのデータ入力に応じて、ＧＵＩ部１３０は、シミュレーション画面上の表示効果を変更する（たとえば、シミュレーション画面上のＬＥＤ（ＧＵＩ部品）を点灯させる）。
【００２３】
さらに、ＧＵＩ部１３０は、ＧＵＩ部品情報を保持する。ＧＵＩ部品情報とは、例えば部品名と、端子種別と、が組となった情報である。より具体的には、ＧＵＩ部品の情報とは、部品名「Ｂｕｔｔｏｎ」と端子種別「入力」（Ｂｕｔｔｏｎは入力用のＧＵＩ部品である）、部品名「ＬＥＤ」と端子種別「出力」（ＬＥＤは出力用のＧＵＩ部品である）、部品名「Ｉ−Ｂｕｔｔｏｎ」と端子種別「割り込み入力」（Ｉ−Ｂｕｔｔｏｎは割り込み入力用の部品である）、のように組となった情報である。
【００２４】
ＧＵＩ部１３０は、後述するように、ログファイル処理部１５０からの入力される関連情報を基に、シミュレーション画面上のＧＵＩ部品の表示設定を行う。ＧＵＩ部品の表示設定の詳細は、ログファイル処理部１５０の処理の説明の後に説明する。
【００２５】
解析結果出力部１４０には、使用端子解析部１２２から端子情報（端子名、及び端子種別）が入力される。解析結果出力部１４０は、ＧＵＩ部１３０からＧＵＩ部品情報を取得する。解析結果出力部１４０は、ＧＵＩ部品情報と、端子情報と、を基に使用端子情報ログ３０を生成する。図４は、使用端子情報ログ３０の構成を示す図である。
【００２６】
使用端子情報ログ３０は、テーブル形式の情報である。当該テーブルは、端子名、Ｉｎｐｕｔ／Ｏｕｔｐｕｔ／Ｉｎｔｅｒｒｕｐｔ、ＧＵＩ部品の情報を保持する。端子名は、マイコンの使用端子の名前であり、端子の識別情報である。Ｉｎｐｕｔ／Ｏｕｔｐｕｔ／Ｉｎｔeｒｒｕｐｔは、当該端子が入力用であるか、出力用であるか、それとも割り込み入力用であるかを示す。ＧＵＩ部品は、当該端子に接続するＧＵＩ部品として使用可能な候補を示す。例えば、端子Ｐ００が出力用端子である場合、当該端子と接続する治具を模擬するＧＵＩ部品として"ＬＥＤ"、"７ｓｅｇＬＥＤ"が候補となる。
【００２７】
再び図１を参照する。ログファイル処理部１５０は、使用端子情報ログ３０の情報を読み出し、各端子に対するＧＵＩ部品を１つに特定する画面を生成する。例えば、ログファイル処理部１５０は、図４に示すような表示画面を生成する。ユーザは、当該表示画面から各端子と接続する治具とＧＵＩ部品とを１対１に関連付ける。ログファイル処理部１５０は、この関連付けられた情報（以下、関連情報とも記載する）をＧＵＩ部１３０に供給する。
【００２８】
ＧＵＩ部１３０は、内部に表示情報構築部１３１を備える。表示情報構築部１３１には、ログファイル処理部１５０から関連情報が供給される。図５は、当該関連情報の一例を示す概念図である。
【００２９】
図示するように、当該情報は、端子名と、端子種別（入力（Ｉｎｐｕｔ）／出力（Ｏｕｔｐｕｔ）／割り込み（Ｉｎｔｅｒｒｕｐｔ））と、ＧＵＩ部品と、が関連付けられた情報である。ここで、ＧＵＩ部品と各端子は、ユーザの設定により１対１に対応付けられる。
【００３０】
表示情報構築部１３１は、関連情報を基にＧＵＩ部品用の設定データ（以下、ＧＵＩ部品設定データとも記載する）を設定する。図６は、ＧＵＩ部品設定データを示す図である。図示するように、ＧＵＩ部品設定データは、関連情報から端子種別が削除され、一意な識別情報である内部管理番号が付与された情報である。ＧＵＩ部１３０は、このＧＵＩ部品設定データを用いてシミュレーション画面上の各ＧＵＩ部品の表示を行う。なお、図示しないが、ＧＵＩ部品設定データには、画面上のＧＵＩ部品の配置座標等の情報も含まれる。
【００３１】
続いて、具体例を参照し、シミュレーション装置１の処理について説明する。はじめに、治具を模擬するＧＵＩ部品からデータ入力があった場合の各処理部の動作について説明する。模擬対象のマイコン構成は、図２に示す構成である。図７は、各処理部の動作を示す概念図である。図８は、実行対象となるユーザプログラム２０を示す図である。
【００３２】
命令シミュレーション部１１０は、ユーザプログラム（図８）に記載された命令コードを１行ずつ実行する。命令シミュレーション部１１０は、命令コード（"PM0 = 0xFF;"）の実行時に周辺機能シミュレーション部１２０内の周辺機能情報管理部１２１が管理する"ＰＭ０"（端子Ｐ００の端子種別）に"０ｘＦＦ"を書き込む（図７Ｓ１）。周辺機能情報管理部１２１は、"ＰＭ０"に入力モードを示す端子種別情報"０ｘＦＦ"が書き込まれたことにより、端子Ｐ００が入力端子であると判断する（図７Ｓ２）。
【００３３】
命令シミュレーション部１１０は、後続する命令コード（"switch = P00;"）を実行する。命令シミュレーション部１１０は、端子Ｐ００にかかる処理であるため、周辺機能情報管理部１２１の管理する端子Ｐ００からの情報の読み出しを開始する（図７Ｓ３）。
【００３４】
周辺機能情報管理部１２１は、端子Ｐ００が入力端子であり、かつ読み出し処理であるため、ＧＵＩ部１３０から端子Ｐ００への入力信号を問い合わせる（図７Ｓ４）。
【００３５】
ＧＵＩ部１３０は、端子Ｐ００に接続するボタン（治具）が押されているか否かに応じて出力信号（０または１の２値信号）を端子Ｐ００に供給する（図７Ｓ５）。使用端子解析部１２２は、周辺機能情報管理部１２１からのＧＵＩ部１３０への入力信号の問い合わせ（端子Ｐ００への入力信号の問い合わせ）を検出し、端子Ｐ００が入力端子であることを検出する。そして、使用端子解析部１２２は、端子Ｐ００とその端子種別（Ｉｎｐｕｔ）を組にした端子情報を取得する（図７Ｓ６）。
【００３６】
周辺機能情報管理部１２１は、ＧＵＩ部１３０から得た端子Ｐ００への入力値を命令シミュレーション部１１０に供給する（図７Ｓ７）。命令シミュレーション部１１０は、周辺機能情報管理部１２１から供給された値を変数ｓｗｉｔｃｈに代入する(図７Ｓ８)。
【００３７】
なお、使用端子解析部１２２は、任意のタイミングで端子情報（端子とその端子種別を組にした情報）を解析結果出力部１４０に供給する。この際、使用端子解析部１２２は、複数の端子情報を解析結果出力部１４０に供給できる。
【００３８】
続いて、治具を模擬するＧＵＩ部品に対してデータ出力を行う場合の各処理部の動作について説明する。模擬対象のマイコン構成は、図９に示す構成である。図１０は、各処理部の動作を示す概念図である。図１１は、実行対象となるユーザプログラム２０を示す図である。
【００３９】
検証対象のマイコンは、図示するように、ＣＰＵとポートを有する。ポート内には端子Ｐ１０が存在する。端子Ｐ１０は、治具と接続されている。マイコン内部で何らかのイベントが生じた場合、端子Ｐ１０を介して治具にデータが出力される。当該治具は、シミュレーション装置１０のシミュレーション画面上ではＬＥＤ等のＧＵＩ部品によって代替される。当該ＬＥＤは、例えば１が出力された場合には点灯し、０が出力された場合には消灯する。
【００４０】
図１０及び図１１を参照して、シミュレーション装置１０の動作を説明する。命令シミュレーション部１１０は、ユーザプログラム（図１１）に記載された命令コードを１行ずつ実行する。命令シミュレーション部１１０は、命令列コード（"PM1 = 0x00;"）の実行時に周辺機能シミュレーション部１２０内の周辺機能情報管理部１２１が管理する"ＰＭ１"（端子Ｐ１０の端子種別）に"０ｘ００"を書き込む（図１０Ｓ１１）。周辺機能情報管理部１２１は、"ＰＭ１"に出力モードを示す端子種別情報"０ｘ００"が書き込まれたことにより、端子Ｐ１０が出力端子であると判断する（図１０Ｓ１２）。
【００４１】
命令シミュレーション部１１０は、後続する命令コードを実行する。命令シミュレーション部１１０は、真偽値の引数"arg"が"ＴＲＵＥ"であるか"ＦＡＬＳＥ"であるかを判定する（図１０Ｓ１３）。引数"arg"が"ＴＲＵＥ"である場合、命令シミュレーション部１１０は、端子Ｐ１０に"0x0"の書込み要求を行う（図１０Ｓ１３）。一方、引数"arg"が"ＦＡＬＳＥ"である場合、命令シミュレーション部１１０は、端子Ｐ１０に"0x1"の書込み要求を行う（図１０Ｓ１３）。
【００４２】
周辺機能情報管理部１２１は、端子Ｐ１０が出力端子であり、かつ書込み処理であるため、ＧＵＩ部１３０に対して端子Ｐ１０からの出力値を通知する（図１０Ｓ１４）。
【００４３】
ＧＵＩ部１３０は、端子Ｐ１０に接続するＬＥＤ（治具）に対し、周辺機能情報管理部１２１から通知された値に応じて操作を行う（図１０Ｓ１５）。周辺機能情報管理部１２１から通知された値が１である場合、ＬＥＤは点灯する（図１０Ｓ１５）。周辺機能情報管理部１２１から通知された値が０である場合、ＬＥＤは消灯する（図１０Ｓ１５）。
【００４４】
使用端子解析部１２２は、周辺機能情報管理部１２１からＧＵＩ部１３０への出力信号（端子Ｐ１０からの出力信号）を検出し、端子Ｐ１０が出力端子であることを検出する。そして、使用端子解析部１２２は、端子Ｐ１０とその端子種別（Ｏｕｔｐｕｔ）を組にした端子情報を取得する（図１０Ｓ１６）。
【００４５】
なお、使用端子解析部１２２は、任意のタイミングで取得した端子情報を解析結果出力部１４０に供給する。
【００４６】
続いて、内部での割り込み処理をシミュレーションする場合の各処理部の動作について説明する。シミュレーションの概念図を図１２に示す。図１３は、各処理部の動作を示す概念図である。図１４は、実行対象となるユーザプログラム２０を示す図である。
【００４７】
図１２に示すように、シミュレーション画面上のＧＵＩ部品（割り込みボタン）からの入力が生じた場合に、マイコンは割り込みに応じた処理を行う。割り込みは、プログラムの実行とは独立して生じる事象であり、マイコン毎に扱う割り込み処理の種類は予め決まっている。マイコン内では、割り込み要求が発生するとその割り込みに対応した割り込みルーチンが実行される。シミュレーション装置１０では、ＧＵＩ部品を操作することにより疑似的に割り込み（疑似割り込み）を発生させ、割り込みルーチンの実行をシミュレーションする。
【００４８】
図１３は、各処理部の動作を示す概念図である。図１４は、実行対象となるユーザプログラム２０を示す図である。図１３及び図１４を参照して、割り込み発生時のシミュレーション装置１０の動作を説明する。命令シミュレーション部１１０は、割り込みが生じるまで命令コードを逐次実行する。
【００４９】
ＧＵＩ部１３０は、シミュレーション画面上から割り込みボタンが押されたことを検出する（図１３Ｓ２１）。ＧＵＩ部１３０は、割り込みボタンに割り当てられている割り込み要求の情報を割り込み用の端子ＩＮＴＰ２を介して周辺機能情報管理部１２１に供給する（図１３Ｓ２２）。
【００５０】
周辺機能情報管理部１２１は、ＧＵＩ部１３０から通知された割り込み要求情報を基に割り込みフラグを設定する（図１３Ｓ２３）。使用端子解析部１２２は、ＧＵＩ部１３０から周辺機能情報管理部１２１に対して割り込み要求が供給された（端子ＩＮＴＰ２に割り込み要求が入力された）ことを検出する（図１３Ｓ２４）。これに応じて、使用端子解析部１２２は、端子ＩＮＴＰ２とその端子種別"Ｉｎｔｅｒｒｕｐｔ"を組にした端子情報を取得する（図１３Ｓ２４）。
【００５１】
命令シミュレーション部１１０は、周辺機能情報管理部１２１において設定された割り込み要求フラグに従い、割り込み処理ルーチン（メソッド"foo"）を実行する（図１３Ｓ２５）。
【００５２】
続いて、本実施の形態にかかるシミュレーション装置１０の動作の流れについて図１５を参照して説明する。図１５は、本実施の形態にかかるシミュレーション装置１０の動作の流れを示すフローチャートである。
【００５３】
はじめに、命令シミュレーション部１１０は、ユーザプログラム２０を読み出す（Ｓ３１）。命令シミュレーション部１１０は、読み出したユーザプログラム２０を用いてシミュレーションを開始する（Ｓ３２）。
【００５４】
命令シミュレーション部１１０は、一命令毎に処理を実行する（Ｓ３３）。端子とのデータ入出力または割り込み処理に関するシミュレーションを行う必要がある場合、命令シミュレーション部１１０は、周辺機能情報管理部１２１を呼び出し、各端子からのデータ入出力処理を実行する（Ｓ３４）。この際、使用端子解析部１２２は、ＧＵＩ部１３０と周辺機能情報管理部１２１とのデータ入出力を監視し、端子情報を取得する（Ｓ３４）。
【００５５】
命令シミュレーション部１１０は、次の命令があるか否かを判定する（Ｓ３５）。次の命令がある場合（Ｓ３５：Ｙｅｓ）、命令シミュレーション部１１０は、Ｓ３３から処理を再実行する。一方、次の命令が無い場合（Ｓ３５：Ｎｏ）、使用端子解析部１２２は、取得した端子情報を解析結果出力部１４０に供給する（Ｓ３６）。
【００５６】
解析結果出力部１４０は、ＧＵＩ部１３０からＧＵＩ部品情報を取得する。解析結果出力部１４０は、ＧＵＩ部品情報と、端子情報と、から使用端子情報ログ３０を更新する（Ｓ３７）。
【００５７】
ログファイル処理部１５０は、使用端子情報ログ３０の情報を読み出し、ユーザが複数のＧＵＩ部品の候補から１つに選択する画面を生成する。ユーザは、当該表示画面から各端子と接続する治具と、ＧＵＩ部品と、を１対１に関連付ける（Ｓ３８）。ログファイル処理部１５０は、関連付けた情報（関連情報）をＧＵＩ部１３０に供給する。ＧＵＩ部１３０は、供給された関連情報を基にＧＵＩ部品用の設定（シミュレーション画面上へのＧＵＩ部品の配置）を行う。これにより、疑似ターゲットシステムが構築される（Ｓ３９）。
【００５８】
シミュレーション装置１０は、構築された疑似ターゲットシステムを用いてシミュレーションを再実行する（Ｓ４０）。
【００５９】
続いて、本実施の形態にかかるシミュレーション装置１０の効果について説明する。上述したように、シミュレーション装置１０は、シミュレーション実行時に各端子がどのように使用されているかを示す端子情報（端子名とその端子種別（入力、出力、割り込み））を取得し、この端子情報を基に各端子と接続するＧＵＩ部品を選択できる画面（例えば図４に示す選択画面）を生成する。これにより、ユーザプログラム２０内で使用している端子の種別に応じたＧＵＩ部品をユーザが選択できるようになる。そのため、ユーザは、マイコン上で使用されている端子を確認できるとともに、各端子に応じたＧＵＩ部品を容易に選択することができる。さらに、当該選択画面では、各端子の端子種別に応じたＧＵＩ部品しか選択できないようになっている。シミュレーション装置１０は、当該選択画面からの選択に応じてＧＵＩ部品を疑似ターゲットシステム上のシミュレーション画面に配置する。端子の使用状況に応じて適切なＧＵＩ部品を選択することにより、疑似ターゲットシステムの再構築時の設定ミスを防ぐことができる。
【００６０】
さらにまた、本実施の形態にかかるシミュレーション装置１０は、シミュレーション画面を操作することにより、割り込み処理（内部割り込み、外部割り込み、タイマ割り込み）を疑似的に発生させてシミュレーションを実行できる。これにより、いつ生じるかが不明である割り込み発生時のマイコンの動作を簡単に検証することができる。
【００６１】
＜実施の形態２＞
本実施の形態にかかるシミュレーション装置１０は、時間経過等のイベントが生じた場合に端子に入力が生じるケースをサポートすることを特徴とする。ここで、イベントとは、例えば入力端子にデータを入力するような事象であり、例えば「一定時間経過時に、端子Ｐ２０にＨｉｇｈ信号、Ｌｏｗ信号を交互に入力する」といったものである。本実施の形態にかかるシミュレーション装置１０について、実施の形態１と異なる点を中心に説明する。
【００６２】
図１６は、本実施の形態にかかるシミュレーション装置１０の構成を示すブロック図である。シミュレーション装置１０は、図１の構成に加えて、時間管理部１６０及び入力信号イベント処理部１７０を備える。入力信号イベント処理部１７０は、イベント検出部１７１と、イベント発生後処理部１７２と、を備える。
【００６３】
時間管理部１６０は、命令シミュレーション部１１０からシミュレーションの経過時間情報（経過クロック数）を取得し、周辺機能シミュレーション部１２０及び入力信号イベント処理部１７０に経過時間情報（経過クロック数）を通知する。
【００６４】
入力信号イベント処理部１７０は、シミュレーションの経過時間情報を保持し、経過時間に応じてイベントの発生を検出する。また、入力信号イベント処理部１７０は、任意の端子に対する入出力の状況を監視し、所定のイベントが発生したことを検出する。イベント検出の詳細は、図１８を参照して後述する。イベントが発生した場合、入力信号イベント処理部１７０は、当該イベントに関連する端子に入力値を入力する。以下、入力信号イベント処理部１７０の処理及び関連する事項を詳細に説明する。
【００６５】
解析結果出力部１４０は、図１７に示すように各端子に対応するイベント入力欄を有する使用端子情報ログ３０を生成する。ログファイル処理部１５０は、各端子に対応付けるＧＵＩ部品の入力を受け付けるとともに、各端子に対応付けるイベントの入力を受け付ける。イベント入力欄に情報が入力された場合、ログファイル処理部１５０は、そのイベント情報（端子名と、イベント入力欄に入力されたイベントファイル名と、の組）を入力信号イベント処理部１７０に供給する。
【００６６】
イベント検出部１７１は、入力されたイベント情報に含まれるイベントファイル名を参照し、当該ファイル名に合致する入力信号イベントファイル４０を読み出す。図１８は、入力信号イベントファイル４０の一例を示す図である。
【００６７】
入力信号イベントファイル４０には、端子名と、イベントタイプと、条件と、発生頻度と、入力パターンと、が設定される。データ項目「端子名」とは、イベントが発生した後にデータが入力される端子の端子名である。ここで、データ項目「端子名」には、入力端子のみが設定され、出力端子は設定されない。
【００６８】
データ項目「イベントタイプ」には、１から４までの整数値が設定される。データ項目「条件」とは、データ項目「イベントタイプ」の設定値に応じたイベント発生のトリガ（検出条件）が設定される。データ項目「イベントタイプ」に１が設定された場合、データ項目「条件」にはイベント発生のトリガとなる割り込み種別が記載される。データ項目「イベントタイプ」に２が設定された場合、データ項目「条件」の欄に設定された端子名を持つ端子に信号入力がされたことがイベント発生のトリガとなる。データ項目「イベントタイプ」に３が設定された場合、データ項目「条件」の欄に設定された端子名を持つ端子から信号が出力されたことがイベント発生のトリガとなる。データ項目「イベントタイプ」に４が設定された場合、データ項目「条件」の欄に設定された時間が経過したことがイベント発生のトリガとなる。
【００６９】
データ項目「イベント発生頻度」には、イベントがどのような頻度で生じるかを示す情報が設定される。データ項目「イベント発生頻度」には、"Ｒ"または数値が設定される。データ項目「イベント発生頻度」に"Ｒ"が設定された場合、シミュレーションが終了するまで永続的に繰り返しイベントが発生する。データ項目「イベント発生頻度」に数値が設定された場合、設定された数値の回数だけイベントが発生する。
【００７０】
データ項目「入力パターン」には、データ項目「端子名」に記載された端子に入力するデータのパターンが設定される。
【００７１】
図１８の入力信号イベントファイル４０には、データ項目「条件」に１００が設定され、データ項目「イベントタイプ」に４が設定され、データ項目「発生頻度」に"Ｒ"が設定されている。そのため、１００クロック毎に端子Ｐ２０に"１，０"（１と０の交互繰り返し）がシミュレーションの終了まで繰り返し入力されることが規定されている。
【００７２】
イベント検出部１７１は、読み出した入力信号イベントファイル４０からイベント検出に用いる情報、すなわち入力信号イベントファイル４０のデータ項目欄の情報を取得する。イベント検出部１７１は、入力信号イベントファイル４０に設定された情報に応じてシミュレーション実行時にイベントの検出を行う。イベント検出部１７１は、イベント検出時にデータ項目「端子名」及びデータ項目「入力パターン」の設定情報をイベント発生後処理部１７２に通知する。例えば、イベント検出部１７１は、図１８に示す入力信号イベントファイル４０を基にイベントを検出した場合、端子名Ｐ２０と入力データパターン"１，０（１と０の交互繰り返し）"をイベント発生後処理部１７２に通知する。
【００７３】
イベント発生後処理部１７２は、イベント発生時にデータを入力する端子（図１８の例では端子Ｐ２０）への入力データを保持し、周辺機能情報管理部１２１からの問い合わせを受けた場合に保持しているデータを端子（図１８の例では端子Ｐ２０）に入力する。なお、イベント発生後処理部１７２は、イベント発生毎にイベントファイル４０に規定された端子（図１８の例では端子Ｐ２０）に、入力パターンから規定されるデータ（図１８の例では１，０の交互繰り返し）を入力しても良い。
【００７４】
続いて、本実施の形態にかかるシミュレーション装置１０の処理詳細について図１９〜図２１を参照して説明する。図１９及び図２０は、各処理部の動作を示す概念図である。図２１は、以下の説明において実行対象となるユーザプログラム２０を示す図である。また、入力信号イベントファイル４０として、図１８に示す内容が設定されたものとする。
【００７５】
シミュレーション実行前に、イベント検出部１７１は、指定された入力信号イベントファイル４０を読み出し、当該ファイル内の各情報を読み出す。この場合、データ項目「イベントタイプ」に４が設定されているため、イベント検出部１７１は、時間管理部１６０に対して、シミュレーション実行時に経過クロックを定期的に通知するように指示する。
【００７６】
命令シミュレーション部１１０は、ユーザプログラム（図２１）に記載された命令コードを１行ずつ実行する。命令シミュレーション部１１０は、命令コード（"PM2 = 0xFF;"）の実行時に周辺機能シミュレーション部１２０内の周辺機能情報管理部１２１が管理する"ＰＭ２"（端子Ｐ２０の端子種別情報）に"０ｘＦＦ"を書き込む（図１９Ｓ４１）。周辺機能情報管理部１２１は、"ＰＭ２"に入力モード用のタイプ情報"０ｘＦＦ"が書き込まれたことにより、端子Ｐ２０が入力端子であると判断する（図１９Ｓ４２）。
【００７７】
時間管理部１６０は、シミュレーション開始からの経過クロック数を命令シミュレーション部１１０に問い合わせる（図１９Ｓ４３）。命令シミュレーション部１１０は、実行した命令クロック数を経過時間情報として時間管理部１６０に通知する（図１９Ｓ４４）。時間管理部１６０は、通知された経過時間情報をイベント検出部１７１に通知する（図１９Ｓ４５）。なお、Ｓ４３〜Ｓ４５の処理は、定期的に行われる。
【００７８】
イベント検出部１７１は、経過時間情報を参照し、イベント発生に必要なサイクルが経過したかを判定する（図１９Ｓ４６）。イベントが発生していた場合（イベント発生に必要なサイクルが経過していた場合）、イベント検出部１７１は、端子名Ｐ２０と、入力パターン"１，０（１，０の交互繰り返し）"を関連付けてイベント発生後処理部１７２に通知する（図１９Ｓ４７）。
【００７９】
イベント発生後処理部１７２は、端子Ｐ２０の入力値を入力パターンに従って保持する（図２０Ｓ４８）。ここで、本例（図１８）では、データ項目「入力パターン」に"１，０"（１と０の交互繰り返し）が設定されている。よって、イベント発生後処理部１７２は、内部に保持している端子Ｐ２０の入力値が０である場合には１に更新し、１である場合には０に更新する。なお、端子Ｐ２０の入力値の初期値は、０とする。
【００８０】
命令シミュレーション部１１０は、命令コード（"signal = P20;"）の実行を行う。はじめに命令シミュレーション部１１０は、周辺機能情報管理部１２１に対して端子Ｐ２０の読み出し命令を送信する（図２０Ｓ４９）。
【００８１】
周辺機能情報管理部１２１は、入力信号イベント処理部１７０に対して端子Ｐ２０の入力値を問い合わせる（図２０Ｓ５０）。当該問い合わせに応じて、イベント発生後処理部１７２は、内部に保持している端子Ｐ２０の入力値を周辺機能情報管理部１２１に通知する（図２０Ｓ５１）。
【００８２】
周辺機能情報管理部１２１は、受信した端子Ｐ２０の入力値を命令シミュレーション部１１０に送信する（図２０Ｓ５２）。命令シミュレーション部１１０は、周辺機能情報管理部１２１から受信した端子Ｐ２０の入力値を変数ｓｉｇｎａｌに代入する（図２０Ｓ５３）。
【００８３】
続いて、図２２及び図２３のフローチャートを参照して、本実施の形態にかかるシミュレーション装置１０の動作を説明する。なお、図２２及び図２３において実施の形態１と同様の処理については、図１５と同一符号を付し、詳細な説明は省略する。
【００８４】
イベント検出部１７０は、ユーザプログラムの読み込み（Ｓ３１）の後に、入力信号イベントファイル４０からイベント検出に必要な情報を読み出す（Ｓ６１）。シミュレーションの実行開始（Ｓ３２）後に、イベント検出部１７１は、イベント検出処理を行う（Ｓ６２）。イベントを検出した場合、イベント発生後処理部１７２は、イベントファイル４０で設定された端子への入力データを更新する（Ｓ６２）。Ｓ６２の処理は、シミュレーション実行が終了するまで行われる。以降の処理は、図１５と同様であるため、詳細な説明は省略する。
【００８５】
続いて、本実施の形態にかかるシミュレーション装置１０の効果について説明する。上述のように、本実施の形態にかかるシミュレーション装置１０では、所定のイベントに応じて端子に対するデータを入力するシミュレーションを行うことができる。そのため、時間の経過等により発生するデータ入力に関する動作確認を行うことができる。
【００８６】
さらに、使用端子情報ログ３０にイベント情報の入力欄を設けたことにより、マイコン上で使用されている端子にイベントを確実に対応付けることができる。そのため、イベント設定時の設定ミスを回避することができる。
【００８７】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【００８８】
シミュレーション装置１０内の各処理部（命令シミュレーション部１１０、周辺機能シミュレーション部１２０、ＧＵＩ部１３０、解析結果出力部１４０、ログファイル処理部１５０、時間管理部１６０、入力信号イベント処理部１７０）の各処理は、任意のコンピュータ内で動作するプログラムとして実現することが可能である。
【００８９】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（random access memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００９０】
１０  シミュレーション装置
１１０  命令シミュレーション部
１２０  周辺機能シミュレーション部
１２１  周辺機能情報管理部
１２２  使用端子解析部
１３０  ＧＵＩ部
１３１  表示情報構築部
１４０  解析結果出力部
１５０  ログファイル処理部
１６０  時間管理部
１７０  入力信号イベント処理部
１７１  イベント検出部
１７２  イベント発生後処理部
２０  ユーザプログラム
３０  使用端子情報ログ
４０  入力信号イベントファイル
【図１】
2013242762.tif 000003
【図２】
2013242762.tif 000004
【図３】
2013242762.tif 000005
【図４】
2013242762.tif 000006
【図５】
2013242762.tif 000007
【図６】
2013242762.tif 000008
【図７】
2013242762.tif 000009
【図８】
2013242762.tif 000010
【図９】
2013242762.tif 000011
【図１０】
2013242762.tif 000012
【図１１】
2013242762.tif 000013
【図１２】
2013242762.tif 000014
【図１３】
2013242762.tif 000015
【図１４】
2013242762.tif 000016
【図１５】
2013242762.tif 000017
【図１６】
2013242762.tif 000018
【図１７】
2013242762.tif 000019
【図１８】
2013242762.tif 000020
【図１９】
2013242762.tif 000021
【図２０】
2013242762.tif 000022
【図２１】
2013242762.tif 000023
【図２２】
2013242762.tif 000024
【図２３】
2013242762.tif 000025
【図２４】
2013242762.tif 000026
【図２５】
2013242762.tif 000027