(57)【要約】【課題】シミュレーションによるソフトウェアの評価において、データ入力、動作結果の出力、または検証等の評価作業を自動化することにより、作業ミスの発生しやすい手作業を省略して、デバッグに要する期間の短縮と品質の向上を実現し得る評価システムを提供する。【解決手段】ＩＣＥ４００と仮想ＥＥＰＲＯＭ８０とを用いてプログラムの動作検証を行うプログラム検証システムであって、仮想ＥＥＰＲＯＭ８０に対するＩＣＥ４００の入出力データをデータＲ／Ｗ部３００で取得し、取得したデータをモニタ３０４の表示形式に合わせて可視化する。【選択図】  図１
2004157787.tif 000002
【特許請求の範囲】
【請求項１】
エミュレータと、前記エミュレータに接続された仮想周辺デバイスとを用いてプログラムの動作検証を行うプログラム検証システムであって、
前記仮想周辺デバイスに対する前記エミュレータの入出力データを取得するデータ取得部と、
前記データ取得部により取得されたデータを少なくとも一時的に格納する検証データ記憶部と、
前記検証データ記憶部の内容を可視化するモニタ表示部とを備えたことを特徴とするプログラム検証システム。
【請求項２】
前記プログラムが、ＥＥＰＲＯＭを周辺デバイスとして用いるプログラムであり、
前記仮想周辺デバイスとして前記ＥＥＰＲＯＭをシミュレートする仮想ＥＥＰＲＯＭ部と、
前記エミュレータと前記仮想ＥＥＰＲＯＭ部との間のデータ転送のタイミングを制御する転送制御部とをさらに備えた、請求項１に記載のプログラム検証システム。
【請求項３】
検証シナリオデータが記述されたシナリオ記憶部をさらに備え、
前記シナリオ記憶部が前記仮想ＥＥＰＲＯＭ部に接続され、前記仮想ＥＥＰＲＯＭ部が、前記シナリオ記憶部から読み込んだ前記検証シナリオデータに従って検証を行う、請求項２に記載のプログラム検証システム。
【請求項４】
前記検証シナリオデータが、エラーデータ生成コマンドを含むと共に、
前記仮想ＥＥＰＲＯＭ部が、
前記検証シナリオデータからエラーデータ生成コマンドを抽出した場合にエラーデータを作成するエラーデータ作成部と、
前記データ取得部と、前記エラーデータ作成部と、前記ポーリング部との書き込みタイミングを同期させる同期部とを備える、請求項３に記載のプログラム検証システム。
【請求項５】
前記仮想ＥＥＰＲＯＭ部と前記エミュレータとが仮想配線を介して接続され、
前記仮想ＥＥＰＲＯＭ部に、前記ポーリング部と前記仮想配線との間でデータを転送する第１のデータ転送部を備え、
前記エミュレータと前記仮想配線との間に、前記エミュレータのＲＡＭと前記仮想配線との間でデータを転送する第２のデータ転送部を備えた、請求項２〜４のいずれか一項に記載のプログラム検証システム。
【請求項６】
前記プログラムが、周波数測定器を周辺デバイスとして用いて周波数を判別するプログラムであり、
前記仮想周辺デバイスとして前記周波数測定器をシミュレートする仮想周波数判別部と、
前記エミュレータと前記仮想周波数判別部との間のデータ転送のタイミングを制御する転送制御部とをさらに備えた、請求項１に記載のプログラム検証システム。
【請求項７】
前記仮想周波数判別部と前記エミュレータとが仮想配線を介して接続され、
前記仮想周波数判別部に、前記仮想配線との間でデータを転送する第１のデータ転送部を備え、
前記エミュレータと前記仮想配線との間に、前記エミュレータのＲＡＭと前記仮想配線との間でデータを転送する第２のデータ転送部を備えた、請求項６に記載のプログラム検証システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、機器組込みマイコン用ソフトウェアを実際のハードウェア上ではなく、擬似バスシステムを使用したシステムシミュレータ上で動作させる環境において、疑似マイコンおよび周辺機器を擬似バスに接続し、ソフトウェアの論理的な評価をＰＣ上で自動的に行うための自動論理評価システムに関するものである。
【０００２】
【従来の技術】
従来、シングルチップマイコン制御用アプリケーションプログラムの評価は、シングルチップマイコンの全機能をエミュレートできるインサーキットエミュレータを、ターゲットとなるシングルチップマイコンの代わりに組み込み、ハードウェアで構成された実機デバッグセットに接続して行われていた。
【０００３】
しかし、プログラムのテストを行うためには、システムを動作させるハードウェアが先行完成していることが必須条件となっていたため、ソフトウェア開発の工程がハードウェア開発の進捗に大きく左右されるという問題があった。
【０００４】
この問題を解決するために、ターゲットとなるシングルチップマイコンのシミュレーションおよび周辺デバイスのシミュレーションを行うことで、実機を使わずに、デバッグ対象プログラムを評価する方法が提案されている。
【０００５】
このようなシミュレーション方法の一例が、例えば特開平９−１１４７００号公報（特許文献１）に開示されている。特許文献１に開示されたシステムは、テスト／デバッグの対象となる組込みソフトウェアと、マイクロプロセッサユニット（ＭＰＵ）およびメモリを模擬するＭＰＵシミュレータと、入出力を模擬する入出力装置模擬部と、ＭＰＵと１つ以上の入出力装置を接続する信号線を模擬する入出力装置実行制御機構と、シミュレータの起動順序を記述した起動定義ファイルと、Ｉ／ＯモニタとＩ／Ｏモデルのプロセスを起動／終了する手段と、ユーザが全てのＩ／Ｏモデルのリソース情報を参照・変更できる手段と、Ｉ／ＯモデルとＩ／Ｏモニタの接続関係を表示する手段を持つ入出力模擬部操作環境とで構成され、それぞれの構成要素は、複数のプロセスで構成され、仮想バスにて接続されている。
【０００６】
この従来のシミュレーション方法では、図１１に示す通り、実機周辺デバイスを制御する部分に、仮想周辺デバイスを制御するプログラムを組込み仮想ＲＡＭに接続し、実機プログラムをＰＣ上でシミュレーションする方法をとっていた。
【０００７】
【特許文献１】
特開平９−１１４７００号公報
【０００８】
【発明が解決しようとする課題】
しかし、従来の実機デバッグセットを用いて、例えばＥＥＰＲＯＭの検証を行う場合、図１２に示すように、実機デバッグセットのユーザＲＡＭ４０２等を、検証操作手順書１２０に記載された操作手順に基づいて手動で操作し、その実行結果を検証結果記録書１３０に手作業で記録していた。このため、検証に手間がかかるだけでなく、検証作業者により検証精度にばらつきが生じるという問題があった。
【０００９】
また、実機デバッグセットが完成してからでないと動作検証ができないので、実機デバッグセットが正常に動作しない場合に、検証対象のプログラムが悪いのか、あるいは、検証プラットフォームである実機デバッグセットが悪いのかを判断することが難しく、解析に時間がかかる。
【００１０】
また、従来、実機デバッグセットを用いたプログラム実行結果の検証は、検証結果記録書１３０に記録されたデータを、手作業で表示イメージに変換することにより行われていた。このため、検証作業に大変な手間と時間がかかるという問題もあった。
【００１１】
また、例えば、白物家電等に用いられる周波数判別プログラムの検証作業（図１３参照）も、ＥＥＰＲＯＭ処理の検証作業と全く同じく、実機デバッグセットが完成してからでないと動作検証ができず、また、検証データを人間が見やすい状態に変換するために手間と時間がかかるという問題を有していた。
【００１２】
本発明は、上記の問題を解決するために、シミュレーションによるソフトウェアの評価において、データ入力、動作結果の出力、または検証等の評価作業を自動化することにより、作業ミスの発生しやすい手作業を省略して、デバッグに要する期間の短縮と品質の向上を実現し得るプログラム評価システムを提供することを目的とする。
【００１３】
【課題を解決するための手段】
上記の目的を達成するために、本発明にかかるプログラム検証システムは、エミュレータと、前記エミュレータに接続された仮想周辺デバイスとを用いてプログラムの動作検証を行うプログラム検証システムであって、前記仮想周辺デバイスに対する前記エミュレータの入出力データを取得するデータ取得部と、前記データ取得部により取得されたデータを少なくとも一時的に格納する検証データ記憶部と、前記検証データ記憶部の内容を可視化するモニタ表示部とを備えたことを特徴とする。
【００１４】
【発明の実施の形態】
本発明によれば、仮想周辺デバイスに対するエミュレータの入出力データを可視化することにより、実機デバッグセットの完成を待たずして仮想周辺デバイスでデバッグした結果を、手間をかけずに視覚的に検証することが可能なプログラム検証システムを提供することができる。
【００１５】
以下、図面を参照しながら、本発明にかかるプログラム検証システムの実施形態について説明する。
【００１６】
最初に、以下の各実施形態で用いる用語を説明する。
【００１７】
デバッグ対象プログラムとは、マイコン上で動作させるべくユーザが開発するプログラムであり、本発明のシミュレーションシステムにおいてデバッグされるプログラムである。
【００１８】
マイコンエミュレーションとは、実機の組込みマイコンに搭載されている機能（割込み、タイマ、タスク等）をエミュレートするものである。
【００１９】
同期通信とは、仮想配線を利用して通信する手段であるが、データを通信相手に送信した後、通信相手から返信データが返ってくるまで待っている通信方法である。
【００２０】
実機プログラムは、デバッグ対象プログラムおよび同期処理プログラムを含む。同期処理プログラムとは、デバッグ対象プログラムが利用する実機デバイスのユーザＲＡＭと、仮想配線で実機デバイスに接続されている仮想デバイスとの間での相互の転送データを、デバッグ対象プログラムの動作に合わせて同期化する処理を制御するためのプログラムである。
【００２１】
デバッガは、実機デバッグセットで利用するＩＣＥ（Ｉｎ  Ｃｉｒｃｕｉｔ  Ｅｍｕｌａｔｏｒ）を制御する。
【００２２】
ＩＣＥは、デバッグプログラムを実行するために、実機の組込みマイコンをエミュレートする。
【００２３】
ＨＴＡとは、ＨＴＭＬ  Ａｐｐｌｉｃａｔｉｏｎｓの略で、Ｗｅｂページで実行可能なさまざまな機能（ＨＴＭＬ、ＣＳＳ、スクリプト言語（ＪａｖａＳｃｒｉｐｔ（登録商標），ＶＢＡ等）、Ｂｅｈａｖｉｏｒ等）をサポートする。
【００２４】
ＡｃｔｉｖｅＸ（登録商標）とは、インターネット対応のＯＬＥドキュメントオブジェクトであるＡｃｔｉｖｅＸドキュメントや、インターネットアクセス機能を持ったクライアントアプリケーションを開発するためのＡＰＩである。
【００２５】
ＯＬＥとは、Ｏｂｊｅｃｔ  Ｌｉｎｋｉｎｇ  ａｎｄ  Ｅｍｂｅｄｄｉｎｇの略で、アプリケーションが別のアプリケーションの機能を呼出して自分自身の機能のように利用したりできる。
【００２６】
仮想配線とは、仮想デバイスとデバッガと自動検証制御等を仮想的に接続する配線である。なお、仮想デバイスとデバッガと自動検証制御等を複数のパーソナルコンピュータで実現した場合は、この仮想配線として、ネットワーク、ＵＳＢ、ＲＳ２３２Ｃ、ＩＥＥＥ１３９４等を使用できる。また、仮想デバイスとデバッガと自動検証制御等を一台のパーソナルコンピュータ内で複数の単独実行可能なアプリケーションとして実現した場合は、仮想配線は、アプリケーション間にて通信可能なＤＤＥ、ＣＯＭ等のデータ通信機能を利用して実現できる。
【００２７】
オンザフライとは、デバッグ対象プログラムが実行中でもＩＣＥ内のユーザＲＡＭとマイコンエミュレーション内のレジスタの読書きが可能な機能である。  仮想配線は、本出願人による先の出願（特願２００１−２１９８８７号）に記載されたバス疑似化装置を用いて実施できる。
【００２８】
（第１の実施形態）
以下、本発明の第１の実施形態について、図１を用いて説明する。
【００２９】
本実施形態にかかるプログラム検証システムは、ＥＥＰＲＯＭデバイスを制御するプログラムをデバッグ対象プログラム４１４とするものである。図１に示す通り、本プログラム検証システムは、デバッグ対象プログラム４１４が、ＥＥＰＲＯＭデバイスに対して、設計されたとおりにデータの読書きが行えるかを、実機であるＥＥＰＲＯＭデバイスの代わりに仮想ＥＥＰＲＯＭ８０を用いてシミュレーションする。これにより、実機では検証困難なデータ読書きシーケンスの検証や、ノイズ等によるデータ化けに対するデバッグ対象プログラムの動作の検証を行う。
【００３０】
本プログラム検証システムでは、デバッグ対象プログラム４１４をＩＣＥ４００上で実行するのだが、仮想ＥＥＰＲＯＭ８０とＩＣＥ４００とのデータ転送を行う必要がある。このため、ＩＣＥ４００と仮想ＥＥＰＲＯＭ８０の同期を合わせるためのポーリング部３０２を備える。このポーリング部３０２を経由して仮想ＥＥＰＲＯＭ８０とＩＣＥ４００内のユーザＲＡＭ４０２との間でデータ転送を行う。また、仮想ＥＥＰＲＯＭ８０のデータＲ／Ｗ部３００のデータをモニタし表示する。
【００３１】
また、本プログラム検証システムでは、仮想ＥＥＰＲＯＭ８０にコマンド判別部３１０を備え、シナリオファイル６９２からのコマンドを判別してエラーデータを生成し、ポーリング部３０２とデータＲ／Ｗ部３００とを同期させることにより、実基板での評価ではかなりの時間を要するエラーチェックを簡単に行うことが可能である。
【００３２】
さらに、図１に示すように、ＩＣＥ４００側にＥＥＰＲＯＭ転送部４２２を設け、仮想ＥＥＰＲＯＭ８０内にＥＥＰＲＯＭデータ転送部３２０を設け、これらを仮想配線７０に接続することにより、仮想ＥＥＰＲＯＭ８０が完全に独立した構成となっていることが好ましい。これにより、仮想ＥＥＰＲＯＭ８０を、ＥＥＰＲＯＭを使用する製品の検証に応用できるようになり、汎用性を持たせることができる。
【００３３】
以下、具体的に、本実施形態のプログラム検証システムの構成と動作について説明する。本プログラム検証システムは、図１に示すように、実機デバイス検証システム８１と仮想ＥＥＰＲＯＭ８０とを、仮想配線７０で接続した構成である。実機デバイス検証システム８１は、ＩＣＥ４００、デバッガ５００、実機プログラム４１０、ＥＥＰＲＯＭ転送部４２２、およびバススロット４２４を備えている。仮想ＥＥＰＲＯＭ８０は、ポーリング部３０２、ＥＥＰＲＯＭデータ転送部３２０、同期部３１４、エラーデータ部３１２、コマンド判別部３１０、データＲ／Ｗ部３００、モニタ３０４、仮想表示部３０６、およびバススロット３０８を備えている。
【００３４】
なお、デバッグ対象プログラム４１４の動作に必要なＩＣＥ４００と、ＩＣＥ４００に接続されるデバッガ５００と、仮想ＥＥＰＲＯＭ８０とは、共に仮想配線７０に接続されている。
［ＥＥＰＲＯＭデータ書き込みシーケンスの検証］
最初に、本プログラム検証システムにおける、ＥＥＰＲＯＭデータ書き込みシーケンスの検証について説明する。
【００３５】
実機デバイス検証システム８１では、デバッグ対象プログラム４１４における実機ＥＥＰＲＯＭへのデータ書き込みシーケンスを、シミュレーションにて検証するために、図２に示すように、デバッグ対象プログラム４１４の命令を置き換える。
【００３６】
すなわち、従来の検証システムでは、デバッグ対象プログラムに実機ＥＥＰＲＯＭへの書き込み命令（実機ＷＲＩＴＥ）があった場合（図２の左側のフローチャートにおけるステップＳ４２０）、書き込みデータをダンプして検証するために仮想表示ＲＡＭへ転送するようにしていたが（ステップＳ４２１）、本実施形態では、デバッグ対象プログラム４１４における実機ＥＥＰＲＯＭへの書き込み命令を、マイコンエミュレーション４０６を経由した、ユーザＲＡＭ４０２への仮想ＷＲＩＴＥ命令に変更する。仮想ＷＲＩＴＥ命令は、図２の右側のフローチャートに示すとおり、ＥＥＰＲＯＭへ書き込みたいデータおよびそのアドレスを設定し（ステップＳ４３２）、ＥＥＰＲＯＭへの書き込み要求を出す（ステップＳ４３６）ことにより実現される。
【００３７】
ＥＥＰＲＯＭへの書き込み要求のチェックを行うために、仮想ＥＥＰＲＯＭ８０のポーリング部３０２は、ＥＥＰＲＯＭデータ転送部３２０に対して、１ｍｓ毎に、書き込みイベントの読み込み指示を出す。ＥＥＰＲＯＭデータ転送部３２０は、ポーリング部３０２から、書き込みイベントの読み込み指示を受けると、以下に説明するＥＥＰＲＯＭデータ読み込み処理を行うことにより、ＥＥＰＲＯＭ書き込み要求があるか否かを判断する。
＜ＥＥＰＲＯＭデータ読み込み処理＞
ＥＥＰＲＯＭデータ転送部３２０は、読み込みたいユーザＲＡＭ４０２内のＲＡＭアドレスを指定して、バススロット３０８〜仮想配線７０〜バススロット４２４を経由して、同期通信にてＥＥＰＲＯＭ転送部４２２へ送る。ＥＥＰＲＯＭ転送部４２２は、デバッガ５００に対して、デバッガの機能であるオンザフライ機能を利用して、図３に示すメッセージ内の１バイトメモリリードコマンドを発行する。デバッガ５００は、ＥＥＰＲＯＭデータ転送部３２０にて指定されたアドレスから、ユーザＲＡＭ４０２のデータを読出し、読み出したデータを、ＥＥＰＲＯＭ転送部４２２〜バススロット４２４〜仮想配線７０〜バススロット３０８を順次経由して、ＥＥＰＲＯＭデータ転送部３２０へ、同期通信により返信する。これにより、ポーリング部３０２へ、ユーザＲＡＭ４０２の指定アドレスから読み出されたデータが送られる。
＜ＥＥＰＲＯＭ書き込みイベント有りの場合＞
上述のようにユーザＲＡＭ４０２から読み出されたデータ（ＥＥＰＲＯＭ書き込みイベントデータ）が、「要求有り」を表している場合は、ＥＥＰＲＯＭデータ転送部３２０が上述したＥＥＰＲＯＭデータ読み込み処理を行うことにより、ユーザＲＡＭ４０２内のＥＥＰＲＯＭ書き込みデータアドレスおよびデータを、ポーリング部３０２へ取得する。
＜ＥＥＰＲＯＭ書き込みアドレスおよびデータの表示処理＞
ポーリング部３０２は、ユーザＲＡＭ４０２から読み込んだＥＥＰＲＯＭ書き込みデータアドレスおよびデータを、データＲ／Ｗ部３００に渡す。データＲ／Ｗ部３００は、モニタ３０４の表示形式に合わせてデータを整形して、仮想表示部３０６に渡す。仮想表示部３０６は、例えば図４に示すような画面をモニタ３０４に表示する。
【００３８】
以上のように、本実施形態のプログラム検証システムでは、ＥＥＰＲＯＭへのデータ書き込みシーケンスについて、仮想ＥＥＰＲＯＭ８０が、ＥＥＰＲＯＭ書き込みアドレスおよび書き込みデータをユーザＲＡＭ４０２から取得し、取得したデータをモニタ表示する。これにより、デバッグ対象プログラム４１４におけるＥＥＰＲＯＭデータ書き込みシーケンスを視覚的に検証することができるので、検証効率が向上する。
［ＥＥＰＲＯＭデータ読み込みシーケンスの検証］
次に、本プログラム検証システムにおける、ＥＥＰＲＯＭデータ読み込みシーケンスの検証について説明する。
【００３９】
実機デバイス検証システム８１は、デバッグ対象プログラム４１４における実機ＥＥＰＲＯＭからのデータ読み込みシーケンスを、シミュレーションにて検証するために、図５に示すように、デバッグ対象プログラム４１４の命令を置き換える。すなわち、従来の検証システムでは、デバッグ対象プログラムに実機ＥＥＰＲＯＭからの読み込み命令（実機ＲＥＡＤ）があった場合（図５の左側のフローチャートにおけるステップＳ５２０）、読み込みデータを仮想表示ＲＡＭへ転送するようにしていたが（ステップＳ５２１）、本実施形態では、デバッグ対象プログラム４１４における実機ＥＥＰＲＯＭからの読み込み命令を、マイコンエミュレーション４０６を経由した、ユーザＲＡＭ４０２からの仮想ＲＥＡＤ命令に変更する。仮想ＲＥＡＤ命令は、図５の右側のフローチャートに示すとおり、ＥＥＰＲＯＭから読み込みたいデータおよびそのアドレスを設定し（ステップＳ５３２）、ＥＥＰＲＯＭ読み込み要求を出す（ステップＳ５３６）ことにより実現される。
【００４０】
ＥＥＰＲＯＭ読み込み要求のチェックを行うために、ポーリング部３０２は、ＥＥＰＲＯＭデータ転送部３２０に対して、１ｍｓ毎に、読み込みイベントの読み込み指示を出す。ＥＥＰＲＯＭデータ転送部３２０は、ポーリング部３０２から、読み込みイベントの読み込み指示を受けると、前記で説明したとおりのＥＥＰＲＯＭデータ読み込み処理を行うことにより、ユーザＲＡＭ４０２からＥＥＰＲＯＭ読込イベントデータを読み出し、ＥＥＰＲＯＭ読み込み要求があるか否かを判断する。
＜ＥＥＰＲＯＭ読み込みイベント有り＞
上述のようにユーザＲＡＭ４０２から読み出されたＥＥＰＲＯＭ読み込みイベントデータが、「要求有り」を表している場合は、ＥＥＰＲＯＭデータ転送部３２０が上述したＥＥＰＲＯＭデータ読み込み処理を行うことにより、ユーザＲＡＭ４０２内のＥＥＰＲＯＭ読み込みデータアドレスおよびデータを、ポーリング部３０２へ取得する。
＜ＥＥＰＲＯＭ読み込みアドレスおよびデータの表示処理＞
ポーリング部３０２は、ユーザＲＡＭ４０２から読み込んだＥＥＰＲＯＭ読み込みデータアドレスおよびデータを、データＲ／Ｗ部３００に渡す。データＲ／Ｗ部３００は、モニタ３０４の表示形式に合わせてデータを整形して、仮想表示部３０６に渡す。仮想表示部３０６は、例えば図４に示すような画面をモニタ３０４に表示する。
【００４１】
以上のように、本実施形態のプログラム検証システムでは、ＥＥＰＲＯＭからのデータ読み込み書き込みシーケンスについて、仮想ＥＥＰＲＯＭ８０が、ＥＥＰＲＯＭ読み込みアドレスおよび読み込みデータをユーザＲＡＭ４０２から取得し、取得したデータをモニタ表示する。これにより、デバッグ対象プログラム４１４におけるＥＥＰＲＯＭデータ読み込みシーケンスを視覚的に検証することができるので、検証効率が向上する。
［ＥＥＰＲＯＭエラーデータの読み込みシーケンスの検証］
さらに、本プログラム検証システムにおける、ＥＥＰＲＯＭエラーデータの読み込みシーケンスの検証について説明する。
＜シナリオファイルおよび検証結果ファイルの読書き処理＞
本プログラム検証システムは、図１に示すように、テスト仕様書および成績書として、シナリオファイル６９２および検証結果ファイル６９０を利用する。検証結果ファイル６９０およびシナリオファイル６９２を読み書きするためのアプリケーションとして、例えば、Ｍｉｃｒｏｓｏｆｔ社のＥｘｃｅｌ（登録商標）を利用できる。
【００４２】
プログラム自動検証をコントロールする自動検証制御部６５０は、ＨＴＡを利用して記述されている。また、検証結果ファイル６９０およびシナリオファイル６９２の読み書きを自動検証制御部６５０から行うために、ＯＬＥ機能を利用できる。また、自動検証制御部６５０と仮想配線７０との間では、例えばＡｃｔｉｖｅＸ（登録商標）を利用したデータ通信を行う。
＜ＥＥＰＲＯＭエラーデータ読み込み処理＞
シナリオファイル６９２には、ＥＥＰＲＯＭのデータマップに従って、アドレスおよび各種書き込みデータがセットされている。図６に示すように、検証手順が記述されているシナリオファイル６９２から、シナリオファイル読込部６６０が、ＡｃｔｉｖｅＸ（登録商標）コントロールを利用し、ＪａｖａＳｃｒｉｐｔ（登録商標）記述にてアドレスデータと書き込みデータを読み込み、データ実行部６６２にデータを渡す。データ実行部６６２は、アドレスデータと書き込みデータをＨＥＸデータに変換し、データ発行部６６４へ渡す。データ発行部６６４は、バススロット６００から仮想配線７０を介して仮想ＥＥＰＲＯＭ８０のコマンド判別部３１０へデータを送ると同時に、イベント検出部６５６に対して、バススロット６００を介さずに、データを記録するための同期化イベント、コメント、アドレスデータ、および、書き込みデータを送る。
＜イベント検出処理＞
イベント検出部６５６は、バススロット６００を介して送られて来るＩＣＥ４００からのデータと、データ発行部６６４から直接送られて来る同期化イベントとを判別する。ＩＣＥ４００からのデータであれば、ＩＣＥデータ取得部６５８へ送り、データ発行部６６４からの同期化イベントであれば、検証結果ファイル書込部６５２へ送る。ＩＣＥデータ取得部６５８は、ＨＥＸデータを文字列データに変換し、検証結果ファイル書込部６５２へ転送する。
【００４３】
検証結果ファイル書込部６５２は、ＡｃｔｉｖｅＸ（登録商標）コントロールを利用し、ＪａｖａＳｃｒｉｐｔ（登録商標）記述にて、検証結果ファイル６９０へ書き込みを行う。
【００４４】
図７（ａ）および（ｂ）に、シナリオファイル６９２および検証結果ファイル６９０の一例を示す。このように、シナリオファイル６９２に基づく検証結果を、検証結果ファイル６９０へ自動で書き込むことにより、検証作業の手順と結果を一元的に管理することが可能となる。
＜ＥＥＰＲＯＭのエラー判別処理＞
ＥＥＰＲＯＭのエラー判別は、以下のように行う。
【００４５】
まず、上述のＥＥＰＲＯＭデータ読込処理を行うことにより、ポーリング部３０２へユーザＲＡＭデータを取り込む。
【００４６】
次に、シナリオファイル６９２から、バススロット６００〜仮想配線７０〜バススロット３０８を介して、コマンド判別部３１０へ、エラー判別データを取り込む。
＜エラーデータの判別＞
エラー判別データは、“０”が正常チェック、“１”がエラーチェックを表すものとする。すなわち、ＥＰＰＲＯＭからの読み出しデータが正常であるものとして検証を行う場合は、シナリオファイル６９２のエラー判別データに“０”を設定し、ＥＰＰＲＯＭからの読み出しデータがエラーデータであるものとして検証を行う場合は、シナリオファイル６９２のエラー判別データに“１”を設定する。コマンド判別部３１０は、コマンドとして、正常チェックの場合は“０”を、エラーチェックの場合は“１”を、エラーデータ部３１２に転送する。
＜エラーデータの置換＞
コマンド判別部３１０により転送されたコマンドがエラーチェックを表す“１”であれば、エラーデータ部３１２は、ユーザＲＡＭ４０２からポーリング部３０２に取り込んであるデータを反転することにより、エラーデータを作成する。コマンドが“０”であれば、ユーザＲＡＭ４０２から取り込んだデータをそのまま用いる。
＜アドレス、リトライカウンタの読み込み処理＞
次に、前述したＥＥＰＲＯＭデータ読み込み処理を実行することにより、ユーザＲＡＭ４０２から、アドレスおよびリトライカウンタを、ポーリング部３０２へ読み込む。アドレスとは、ＥＥＰＲＯＭのデータマップのアドレスであり、リトライカウンタとは、ソフトウェア上で読み返しているカウンタである。
＜ポーリングと同期化＞
ポーリング部３０２は、読み込んだユーザＲＡＭ４０２内のアドレスと、ＥＥＰＲＯＭのリトライカウンタとを、同期部３１４へ転送する。
＜エラーデータとの同期＞
同期部３１４は、ＥＥＰＲＯＭのリトライカウンタが０であれば、正常と判断し、データＲ／Ｗ部３００とエラーデータ部３１２へ、アドレスとデータを転送する。ＥＥＰＲＯＭのリトライカウンタが１以上であれば、異常と判断し、データＲ／Ｗ部３００へのデータ転送を停止し、エラーデータ部３１２のみへアドレスとデータを転送する。
＜エラーデータの返信＞
エラーデータ部３１２は、ＥＥＰＲＯＭのリトライカウンタが１以上であれば、アドレスとエラーデータを、バススロット３０８〜仮想配線７０〜バススロット６００へ、返信データとして送信する。
＜ＥＥＰＲＯＭエラーデータ読み込み処理およびイベント検出処理＞
バススロット６００は、前述したＥＥＰＲＯＭエラーデータ読込処理を行うことにより、イベント検出部６５６に対して、エラーデータ部３１２からの返信データを送る。そして、イベント検出部６５６は、前述したイベント検出処理を行うことにより、検証結果ファイル６９０へ書き込みを行う。
【００４７】
従来、ＥＥＰＲＯＭのエラーデータの検証作業は、エラーコマンドを手作業により変更し、エラーとしてプログラムが判断するかどうかを検証し、シナリオファイルに書き込むという作業を要していたため、すべてのエラーデータを検証するためには、大変な時間がかかっていた。しかし、以上に説明したように、本実施形態によれば、自動的にエラー判別を行うことができ、手作業に比べて短時間に検証できる。また、検証テスト成績表（検証結果ファイル６９０）の自動生成も可能になる。
＜ＥＥＰＲＯＭの統合評価＞
なお、ＥＥＰＲＯＭデータ転送部３２０とバススロット３０８との間の送信と、ＥＥＰＲＯＭ転送部４２２とバススロット４２４との間の送信が、同一のデータフォーマットを採用しているために、ＥＥＰＲＯＭデータ転送部３２０とデバッガ５００とを直接接続することによっても、ＥＥＰＲＯＭの評価を行うことができる。この場合、ＥＥＰＲＯＭ転送部４２２およびバススロット４２４を省略して、実機デバイス検証システム８１内に仮想ＥＥＰＲＯＭ８０を埋め込むことができる。このようにすれば、バススロットや仮想配線を経由したデータ通信ではないために汎用性は高くないが、短期開発が容易となる。
【００４８】
（第２実施形態）
以下、本発明の第２の実施形態について説明する。
【００４９】
本実施形態にかかるプログラム検証システムは、周波数を判別するプログラムをデバッグ対象とし、デバッグ対象プログラムが設計どおりに周波数判別を行えるかを、周波数測定器（実機）の代わりに仮想周波数判別部を用いてシミュレーションすることで、実機では検証時間がかかる周波数判別シーケンスを、効率的に検証するものである。
【００５０】
このため、本実施形態のプログラム検証システムは、図８に示すように、実機デバイス検証システム９１と、仮想周波数判別部９０とを仮想配線７０で接続した構成である。実機デバイス検証システム９１は、ＩＣＥ４００、デバッガ５００、実機プログラム４１０、周波数抽出部４５０、周波数転送部４５２、および、バススロット４５４を備えている。仮想周波数判別部９０は、仮想周波数作成部８０１、周波数データ転送部８１０、周波数判別Ｉ／Ｏ部８００、モニタ８０４、仮想表示部８０６、および、バススロット３０８を備えている。
［周波数判別データシーケンス処理］
実機デバイス検証システム９１は、実機周波数判別のプログラムを、デバッグ対象プログラム４１４を用いたシミュレーションにて検証するために、以下のとおり、周波数判別データシーケンス処理を行う。
＜周波数判別データ読み込み＞
まず、周波数判別データを読み込むために、周波数データ転送部８１０が、読み込みたいユーザＲＡＭ４０２内のＲＡＭアドレスを指定して、バススロット３０８〜仮想配線７０〜バススロット４５４を順次経由して、周波数転送部４５２に同期通信にて送る。周波数転送部４５２は、デバッガ５００に対して、デバッガ５００の機能であるオンザフライ機能を利用して、図３に示すメッセージ内の１バイトメモリリードコマンドを発行する。デバッガ５００は、周波数データ転送部８１０にて指定されたアドレスからユーザＲＡＭのデータを読み出し、周波数転送部４５２〜バススロット４５４〜仮想配線７０〜バススロット３０８を経由して、周波数データ転送部８１０への同期通信の返信データとする。
＜シナリオファイルおよび検証結果ファイルの読書き方法＞
本実施形態のプログラム検証システムも、第１の実施形態と同様に、自動検証を行うために、自動検証制御部７５０、検証結果ファイル７９０、およびシナリオファイル７９２を備えている。これらは、バススロット６００を介して仮想配線７０に接続される。
【００５１】
検証結果ファイル７９０およびシナリオファイル７９２の読み書きを行うアプリケーションとして、例えば、Ｍｉｃｒｏｓｏｆｔ社のＥｘｃｅｌ（登録商標）を利用できる。プログラム自動検証をコントロールする自動検証制御部７５０は、ＨＴＡを利用して記述されている。また、Ｅｘｃｅｌ（登録商標）を用いて作成された検証結果ファイル７９０およびシナリオファイル７９２の読み書きを自動検証制御部７５０から行うために、ＯＬＥ機能を利用している。また、自動検証制御部７５０と仮想配線７０との間で、ＡｃｔｉｖｅＸ（登録商標）を利用してデータ通信を行っている。
＜周波数判別データファイル読み込み処理＞
図９に示すように、検証手順が記述されているシナリオファイル７９２から、シナリオファイル読込部６６０が、例えば、ＡｃｔｉｖｅＸ（登録商標）コントロールを利用し、ＪａｖａＳｃｒｉｐｔ（登録商標）記述にてアドレスデータと書き込みデータを読み込み、データ実行部６６２にデータを渡す。データ実行部６６２は、アドレスデータと書き込みデータをＨＥＸデータに変換し、データ発行部６６４へ渡す。データ発行部６６４は、バススロット６００から仮想配線７０を介してバススロット３０８へデータを送ると同時に、イベント検出部６５６に対して、バススロット６００を介さずに、データを記録するための同期化イベント、コメント、アドレスデータ、および、書き込みデータを送る。
＜イベント検出＞
イベント検出部６５６は、バススロット６００経由で送られて来るＩＣＥ４００からのデータと、データ発行部６６４から直接送られて来る同期化イベントとを判別し、ＩＣＥ４００からのデータは、ＩＣＥデータ取得部７５８へ送る。ＩＣＥデータ取得部７５８は、受け取ったデータをＨＥＸデータから文字列データに変換し、検証結果ファイル書込部６５２へ転送する。
【００５２】
検証結果ファイル書込部６５２は、ＡｃｔｉｖｅＸ（登録商標）コントロールを利用し、ＪａｖａＳｃｒｉｐｔ（登録商標）記述にて、検証結果ファイル７９０へ書き込みを行う。
【００５３】
図１０（ａ）および（ｂ）に、シナリオファイル７９２および検証結果ファイル７９０の一例を示す。このように、シナリオファイル７９２に従って検証を行った結果を、検証結果ファイル７９０へ自動で書き込むことにより、検証作業の手順と結果を一元的に管理することが可能となる。
＜周波数判別イベント＞
データ発行部６６４から直接送られてくる同期化イベントは、バススロット６００を通して返信され、仮想配線からバススロット３０８を介して周波数発生部８０２へ転送される。
＜周波数判別データ転送処理＞
周波数発生部８０２で、同期化イベントがあると判断した場合、周波数判別データ部８０３が、シナリオファイル７９２から送られた周波数判別データを周波数データ転送部８１０へ転送する。
＜周波数判別データ書き込み処理＞
周波数データ転送部８１０は、書き込みたいユーザＲＡＭ４０２内のＲＡＭアドレスを指定して、バススロット３０８〜仮想配線７０〜バススロット４５４を経由して、周波数転送部４５２へ同期通信にて送る。周波数抽出部４５０は、デバッガ５００に対して、デバッガ５００の機能であるオンザフライ機能を利用して、図３に示すメッセージ内の１バイトメモリライトコマンドを発行する。デバッガ５００は、周波数データ転送部８１０にて指定されたアドレスからユーザＲＡＭ４０２のデータを読み出し、周波数転送部４５２〜バススロット４５４〜仮想配線７０〜バススロット３０８を順次経由して、周波数データ転送８１０へ同期通信により返信する。
＜周波数判別データ作成＞
周波数判別データ部８０３により、周波数判別データは、バススロット３０８〜仮想配線７０〜バススロット４５４を順次経由して、周波数転送部４５２へ同期通信にて送られる。送られたデータは、周波数抽出部４５０からデバッガ５００に対して、図３に示すメッセージ内の１バイトメモリライトコマンドを１ｍｓ毎に発行することにより、デバッガ５００の機能であるオンザフライ機能を利用して、ユーザＲＡＭ４０２上の、周波数データ転送部８１０に指定されたアドレスへ書き込まれる。
＜周波数判別データ表示＞
ユーザＲＡＭ４０２から読み込んだ周波数判別データは、周波数判別Ｉ／Ｏ部８００に渡される。周波数判別Ｉ／Ｏ部８００は、モニタ８０４の表示方式に合わせてデータを整形し、仮想表示部８０６に渡す。仮想表示部８０６は、例えば図４に示すような画面をモニタ８０４に表示することにより、視覚的に検証することができる。
＜周波数判別の統合評価＞
なお、周波数データ転送部８１０とバススロット３０８との間、周波数転送部４５２とバススロット４５４との間は、同一の送信データフォーマットを用いる。従って、周波数データ転送部８１０と周波数抽出部４５０とを直接接続することによっても、周波数判別のシミュレーションを行うことができる。この場合、周波数転送部４５２およびバススロット４５４を省略して、実機デバイス検証システム９１内に仮想周波数判別部９０を埋め込むことができる。このようにすれば、バススロットや仮想配線を経由したデータ通信ではないので汎用性は高くないが、短期開発が容易である。
【００５４】
一方、図８に示すように、仮想周波数判別部９０に周波数データ転送部８１０、ＩＣＥ４００側に周波数抽出部４５０を設けて、仮想配線７０に接続した構成によれば、仮想周波数判別部９０を完全に独立した構成とすることができる。この場合、この仮想周波数判別部９０は、周波数判別を使用する製品に単独で対応できるようになり、汎用性を有する。
【００５５】
以上の各実施形態で説明したプログラム検証システムによれば、擬似バスシステムを使用したシステムシミュレータに、自動評価システムを接続することにより、ソフトウェアの評価において、ハードウェアの開発日程による制約を受けずにソフトウェアの評価を行うことができる。また、手作業によらず、検証結果の一元管理が可能となり、作業効率が向上する。さらに、自動評価に用いる評価データの収集および書類の作成も自動化することにより、評価仕様書の作成から成績書の作成までを一元管理し、人為ミスの入り込む余地を徹底的に排除することが可能である。これにより、評価期間の短縮とソフトウェアの品質向上を図ることができる。
【００５６】
【発明の効果】
以上のように、本発明によれば、シミュレーションによるソフトウェアの評価において、データ入力、動作結果の出力、または検証等の評価作業を自動化することにより、作業ミスの発生しやすい手作業を省略して、デバッグに要する期間の短縮と品質の向上を実現し得るプログラム評価システムを提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図２】ＥＥＰＲＯＭ書き込みフロー
【図３】メッセージ一覧表
【図４】仮想表示部の表示例
【図５】ＥＥＰＲＯＭ読み込みフロー
【図６】第１の実施形態における自動検証制御部の構成例を示すブロック図
【図７】（ａ）はＥＥＰＲＯＭの評価におけるシナリオファイルの一例、（ｂ）はＥＥＰＲＯＭの評価における検証結果ファイルの一例
【図８】本発明の第２の実施形態にかかるプログラム検証システムの構成を示すブロック図
【図９】第２の実施形態における自動検証制御部の構成例を示すブロック図
【図１０】（ａ）は周波数判別プログラムの評価におけるシナリオファイルの一例、（ｂ）は検証結果ファイルの一例
【図１１】従来の実機評価システムのフロー構成
【図１２】従来の実機デバッグセットを用いたプログラム検証方法（ＥＥＰＲＯＭの場合）
【図１３】従来の実機デバッグセットを用いたプログラム検証方法（周波数判別処理の場合）
【符号の説明】
７０  仮想配線
８０  仮想ＥＥＰＲＯＭ
８１  実機デバイス検証システム
９０  仮想周波数判別部
９１  実機デバイス検証システム
３００  データＲ／Ｗ部
３０２  ポーリング部
３０４  モニタ
３０６  仮想表示部
３０８  バススロット
３１０  コマンド判別部
３１２  エラーデータ部
３１４  同期部
３２０  ＥＥＰＲＯＭデータ転送部
４００  ＩＣＥ
４１０  実機プログラム
４１４  デバッグ対象プログラム
４２２  ＥＥＰＲＯＭ転送部
４２４  バススロット
４５０  周波数抽出部
４５２  周波数転送部
４５４  バススロット
５００  デバッガ
８００  周波数判別Ｉ／Ｏ部
８０１  仮想周波数作成部
８０４  モニタ
８０６  仮想表示部
８１０  周波数データ転送部
【図１】
2004157787.tif 000003
【図２】
2004157787.tif 000004
【図３】
2004157787.tif 000005
【図４】
2004157787.tif 000006
【図５】
2004157787.tif 000007
【図６】
2004157787.tif 000008
【図７】
2004157787.tif 000009
【図８】
2004157787.tif 000010
【図９】
2004157787.tif 000011
【図１０】
2004157787.tif 000012
【図１１】
2004157787.tif 000013
【図１２】
2004157787.tif 000014
【図１３】
2004157787.tif 000015