(57)【要約】      （修正有）【課題】全体としての実行速度を速めつつ、模擬動作の実行中にスクリプトを変更できる制御ソフトウェアの検証装置を提供する。【解決手段】検証装置３００は、装置のＣＰＵが実行する制御ソフトウェアを実行するＣＰＵシミュレータ３１０と、ＣＰＵの制御対象の機能を模擬するため、コンパイルされたスクリプトを実行する第１実行部３６１と、スクリプトを逐次解釈しながら実行する第２実行部３６２と、を有する外界シミュレータ３６０と、外界シミュレータにおいて動作させる実行手段を第１実行部３６１と第２実行部３６２から選択する選択部３３３と、ＣＰＵシミュレータ３１０と外界シミュレータ３６０との間で送受信される信号を、ＣＰＵシミュレータ３１０と選択部３３３が選択した実行部との間で送受信される様に中継する中継部３３０と、を備えている。【選択図】図１
2016033789.tif 000002
【特許請求の範囲】
【請求項１】
装置のＣＰＵが実行する制御ソフトウェアを実行するＣＰＵシミュレータと、
前記ＣＰＵの制御対象の機能を模擬するため、コンパイルされたスクリプトを実行する第１実行手段と、スクリプトを逐次解釈しながら実行する第２実行手段と、を有する外界シミュレータと、
前記外界シミュレータにおいて動作させる実行手段を第１実行手段と第２実行手段から選択する選択手段と、
前記ＣＰＵシミュレータと前記外界シミュレータとの間で送受信される信号を、前記ＣＰＵシミュレータと前記選択手段が選択した実行手段との間で送受信される様に中継する中継手段と、
を備えていることを特徴とする前記制御ソフトウェアの検証装置。
【請求項２】
前記第２実行手段が実行するスクリプトを保持する保持手段をさらに備えており、
前記第２実行手段は、前記選択手段により選択されたことにより動作を開始する際に、前記保持手段が保持するスクリプトを読み込むことを特徴とする請求項１に記載の検証装置。
【請求項３】
前記第２実行手段は、さらに、ユーザ・インタフェースを介して入力されるスクリプトを実行することを特徴とする請求項２に記載の検証装置。
【請求項４】
前記保持手段は、前記ＣＰＵシミュレータと前記外界シミュレータとの間で送受信される信号を示す結線情報をさらに保持し、
前記中継手段は、前記結線情報に従い前記ＣＰＵシミュレータと前記外界シミュレータとの間で送受信される信号を中継することを特徴とする請求項２又は３に記載の検証装置。
【請求項５】
前記中継手段は、前記選択手段の選択により、一方の前記実行手段の動作を停止して、他方の前記実行手段の動作を開始する場合、前記一方の実行手段の内部変数の値を、前記他方の実行手段に通知することを特徴とする請求項１から４のいずれか１項に記載の検証装置。
【請求項６】
前記選択手段は、ユーザからの指示に基づき前記動作させる実行手段を選択することを特徴とする請求項１に記載の検証装置。
【請求項７】
前記ＣＰＵシミュレータ及び前記外界シミュレータの状態が選択条件を満たすか否かを監視する監視手段をさらに備えており、
前記選択手段は、満たされた前記選択条件に基づき前記動作させる実行手段を選択することを特徴とする請求項１又は６に記載の検証装置。
【請求項８】
前記第２実行手段が実行するスクリプトを保持する保持手段をさらに備えており、
前記第２実行手段は、前記選択条件が満たされたことにより動作を開始する場合、満たされた前記選択条件に従い前記保持手段が保持するスクリプトから実行するスクリプトを選択することを特徴とする請求項７に記載の検証装置。
【請求項９】
前記保持手段は、前記ＣＰＵシミュレータと前記外界シミュレータとの間で送受信される信号を示す結線情報をさらに保持し、
前記中継手段は、前記選択条件が満たされたことにより前記第２実行手段が動作を開始する場合、満たされた前記選択条件に従い、前記保持手段が保持する結線情報から使用する結線情報を選択することを特徴とする請求項８に記載の検証装置。
【請求項１０】
前記選択手段は、前記実行手段を選択すると、前記検証装置の状態に基づき動作開始タイミングを監視し、前記動作開始タイミングになると、選択した前記実行手段の動作を開始させることを特徴とする請求項１から９のいずれか１項に記載の検証装置。
【請求項１１】
前記動作開始タイミングは、前記ＣＰＵシミュレータ及び前記外界シミュレータが処理待ちとなっているタイミングであることを特徴とする請求項１０に記載の検証装置。
【請求項１２】
請求項１から１１のいずれか１項に記載の検証装置としてコンピュータを機能させることを特徴とするプログラム。
【請求項１３】
請求項１２に記載のプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、装置を制御する制御ソフトウェアの検証を行う検証装置に関する。
【背景技術】
【０００２】
特許文献１は、装置に組み込まれ、装置の各部を制御するＣＰＵが実行する制御ソフトウェアの検証のため、当該ＣＰＵの動作を模擬するＣＰＵシミュレータを開示している。また、特許文献２は、ＣＰＵの制御対象である装置又は機能の動作を模擬する外界シミュレータを開示している。なお、外界とは、装置のＣＰＵを除く機能ブロックを意味する。以下では、装置の制御ソフトウェアを検証するために、装置のＣＰＵを模擬するＣＰＵシミュレータと、当該ＣＰＵの制御対象の機能又は動作を模擬する外界シミュレータとを含む装置又はシステムを検証装置と呼ぶものとする。
【０００３】
外界シミュレータには、ユーザがスクリプト言語によって記述した動作定義に応じて、模擬対象の動作を模擬するものが有る。さらに、このような外界シミュレータには、インタプリタ形式とコンパイラ形式が存在する。インタプリタ形式は、スクリプトを逐次解釈しながら模擬動作を実行する外界シミュレータである。一方、コンパイラ形式は、予め、スクリプトを中間言語に変換（コンパイル）しておき、この中間言語を実行する外界シミュレータである。コンパイラ形式は、シミュレーションの実行前にコンパイルを行う必要があるが、模擬動作が速いという利点がある。ここで、特許文献３は、まず、インタプリタ形式で外界シミュレータを動作させつつ、バックグラウンドでコンパイルを行い、コンパイルの完了により、コンパイラ形式で外界シミュレータを動作させることで、模擬動作の実行速度を増加させている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平６−２０２９０３号公報
【特許文献２】特開２００５−３３９０２９号公報
【特許文献３】特開２００４−３５５２７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
インタプリタ形式の外界シミュレータは、模擬動作の実行中にフレキシブルにスクリプトを変更できるが、その実行速度は遅い。一方、コンパイル形式の外界シミュレータは、模擬動作の実行速度は速いが、その実行中にスクリプトを変更することはできない。
【０００６】
本開示は、全体としての実行速度を速めつつ、模擬動作の実行中にスクリプトを変更できる検証装置を提供するものである。
【課題を解決するための手段】
【０００７】
本発明の一側面によると、制御ソフトウェアの検証装置は、装置のＣＰＵが実行する制御ソフトウェアを実行するＣＰＵシミュレータと、前記ＣＰＵの制御対象の機能を模擬するため、コンパイルされたスクリプトを実行する第１実行手段と、スクリプトを逐次解釈しながら実行する第２実行手段と、を有する外界シミュレータと、前記外界シミュレータにおいて動作させる実行手段を第１実行手段と第２実行手段から選択する選択手段と、前記ＣＰＵシミュレータと前記外界シミュレータとの間で送受信される信号を、前記ＣＰＵシミュレータと前記選択手段が選択した実行手段との間で送受信される様に中継する中継手段と、を備えていることを特徴とする。
【発明の効果】
【０００８】
本発明によると、全体としての実行速度を速めつつ、模擬動作の実行中にスクリプトを変更できる。
【図面の簡単な説明】
【０００９】
【図１】一実施形態による検証装置のブロック図。
【図２】一実施形態による検証装置を実現するハードウェア構成図。
【図３】一実施形態による結線リスト及び結線情報を示す図。
【図４】一実施形態による検証処理のフローチャート。
【図５】一実施形態による検証装置のブロック図。
【図６】一実施形態による結線リスト及び結線情報を示す図。
【図７】一実施形態による検証処理のフローチャート。
【図８】一実施形態による検証装置のブロック図。
【図９】一実施形態による選択条件を示す図。
【図１０】一実施形態による検証処理のフローチャート。
【図１１】一実施形態による検証装置のブロック図。
【図１２】一実施形態による選択条件を示す図。
【図１３】一実施形態による検証処理のフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の例示的な実施形態について図面を参照して説明する。なお、以下の実施形態は例示であり、本発明を実施形態の内容に限定するものではない。また、以下の各図においては、実施形態の説明に必要ではない構成要素については図から省略する。
【００１１】
＜第一実施形態＞
一例として、本実施形態による検証装置は、図２に示すコンピュータシステム２０１上でプログラムを実行することで実現できる。図２の本体部２０２のコンピュータ可読記憶媒体であるハードディスク２０８には、検証装置の各機能を実現するためのプログラムが格納される。中央処理装置（ＣＰＵ）２０６がプログラム及び各種データを主記憶装置２０７にロードして実行することで、コンピュータシステム２０１は検証装置として動作する。なお、表示装置２０３は、本体部２０２からの指示により画面表示を行う。また、キーボード２０４は、このコンピュータシステム２０１にユーザの指示や文字情報を入力するためのものである。さらに、マウス２０５は、表示装置２０３上の任意の位置を指定することによりその位置に表示されていたアイコン等に応じた指示を入力するためのものである。
【００１２】
図１は、本実施形態による検証装置３００の機能ブロック図である。ＣＰＵシミュレータ３１０は、模擬対象の装置のＣＰＵを模擬するものであり、当該ＣＰＵが実行する制御ソフトウェア３０１を実行する。外界シミュレータ３６０は、ＣＰＵシミュレータ３１０が模擬するＣＰＵの制御対象の機能を模擬するため、シミュレーション定義情報３０２の評価用スクリプト３０４を実行する。外界シミュレータ３６０は、コンパイルされたスクリプト、つまり、中間言語に変換されたスクリプトを実行する第１実行部と、実行中にスクリプトを逐次解釈しながら実行する第２実行部３６２と、を備えている。なお、本実施形態において、外界シミュレータ３６０を１つとしているが、装置の模擬対象の機能ブロックに応じて複数の外界シミュレータ３６０を設ける構成とすることができる。なお、以下の説明において、ＣＰＵシミュレータ３１０と、外界シミュレータ３６０を総称して、単に、シミュレータと呼ぶものとする。
【００１３】
評価用スクリプト３０４は、外界シミュレータ３６０の第１実行部３６１及び第２実行部３６２が実行するスクリプトを含んでいる。なお、本例において、評価用スクリプト３０４に含まれる第１実行部３６１が実行するスクリプトは、コンパイルされたものとするが、コンパイル前のものとし、外界シミュレータ３６０の内部に設けたコンパイラでコンパイルする構成であっても良い。評価用スクリプト３０４は、イベントドリブン型であり、外界シミュレータ３６０は、ＣＰＵシミュレータ３１０が出力する特定の信号変化や、シミュレーション環境内の仮想時間が一定時間経過するなどをトリガとして、それに応じた処理を実行する。
【００１４】
中継部３３０は、ＣＰＵシミュレータ３１０と外界シミュレータ３６０との間で送受信される信号を中継することで、これらを連携動作させる。結線管理部３３１は、シミュレーション定義情報３０２の結線リスト３０３を読み込み、結線情報３３４を作成する。なお、結線リスト３０３は、ＣＰＵシミュレータ３１０と、外界シミュレータ３６０との間で送受信される信号等を示す情報であり、シミュレーション開始前にユーザによって作成される。なお、シミュレーション定義情報３０２は、例えば、検証装置を構成するコンピュータシステム２０１のハードディスク２０８といった保持部に予め記憶・保持させておく。
【００１５】
本実施形態において、シミュレーションの開始時には第１実行部３６１を選択し、コンパイルされたスクリプトを実行する。そして、ユーザは、第２実行部３６２に変更する場合、ユーザ・インタフェース部３３５を介して選択部３３３に変更指示を行う。選択部３３３は、ユーザから変更指示を受け取ると第２実行部３６２を動作させるための処理を行う。なお、第２実行部３６２は、動作を開始する際に、評価用スクリプト３０４を保持部から読み込んで実行する。つまり、第２実行部３６２は、検証装置のシミュレーション開始時ではなく、第２実行部３６２の動作開始時点での評価用スクリプト３０４を実行する。
【００１６】
同期管理部３３２は、模擬動作における時間（シミュレーション時刻）の管理を行う。より詳細に述べると、ＣＰＵシミュレータ３１０での時間と、外界シミュレータ３６０での時間に不整合が生じないように時刻管理を行う。以下、同期管理部３３２における同期処理について説明する。同期管理部３３２は、基準となるシミュレーション時刻（以下では、基準時刻と呼ぶ。）を有する。さらに、同期管理部３３２は、ＣＰＵシミュレータ３１０及び外界シミュレータ３６０ごとに、進歩時刻を管理する。ＣＰＵシミュレータ３１０及び外界シミュレータ３６０は、同期管理部３３２から実行許可通知を受けると、実行許可通知において指定された時間分のシミュレーションを行い、その後、終了通知を同期管理部３３２に出力する。同期管理部３３２は、シミュレータに実行許可通知を出力すると、そのシミュレータの進歩時刻を指定した時間だけ進める。同期管理部３３２は、進歩時刻が基準時刻より遅いシミュレータに実行許可通知を行い、終了通知を受けるまで待機する。そして、同期管理部３３２は、進歩時刻が基準時刻より遅いシミュレータが存在しなくなると、基準時刻を所定時間だけ進め、その後、進歩時刻が基準時刻より遅いシミュレータに実行許可通知を行うことを繰り返す。この構成により、各シミュレータの時刻を同期させる。
【００１７】
続いて、結線管理部３３１及び結線情報３３４について説明する。図３（Ａ）及び図３（Ｂ）は、それぞれ、結線リスト３０３及び結線情報３３４から、結線方向に関する情報を抜粋したものである。図３（Ａ）及び図３（Ｂ）において、入力とは、その信号線により対応するシミュレータに信号が入力されることを、出力とは、その信号線により対応するシミュレータから信号が出力されることを示している。また、入出力とは、その信号線により対応するシミュレータが信号の入力と出力の両方を行うことを示している。なお、"−"は、対応するシミュレータがその信号線を使用しないことを示している。
【００１８】
図３（Ａ）の結線リスト３０３の例において、"ｓｉｇ１"で示される信号線は、ＣＰＵシミュレータ３１０から外界シミュレータ３６０に出力される片方向の信号線である。また、"ｓｉｇ２"で示される信号線は、ＣＰＵシミュレータ３１０と外界シミュレータ３６０との間で相互に信号を送受信する双方向の信号線である。
【００１９】
本実施形態では、外界シミュレータ３６０において評価用スクリプト３０４を実行する実行部を、必要に応じて第１実行部３６１から第２実行部３６２に切り替える。このとき、第２実行部３６２に値を引き継ぐことが必要な内部変数が存在する。例えば、第１実行部３６１と第２実行部３６２で、内部変数を保持するためのメモリ領域を異ならせる構成においては、内部変数の値を引き継ぐ仕組みが必要となる。そこで、本実施形態では、値を引き継ぐ必要がある内部変数については、図３（Ａ）の"Ｖｓｉｇ１"及び"Ｖｓｉｇ２"の様に、外界シミュレータ３６０にその値を出力させ、結線情報３３４内の情報として記録する。中継部３３０は、第２実行部３６２に切り替えられると、結線情報３３４に記録された内部変数の値を第２実行部３６２に通知する。なお、第１実行部３６１と第２実行部３６２で同じメモリ領域を参照する構成の場合には、引き継ぐ内部変数を結線リスト３０３に登録する必要はない。
【００２０】
図３（Ｂ）は、模擬動作の開始時に、結線管理部３３１が図３（Ａ）に示す結線リスト３０３から作成する結線情報３３４の例である。検証装置３００は、模擬動作の開始時には、第１実行部３６１を使用するため、結線管理部３３１は、結線リスト３０３の外界シミュレータ３６０に関する情報については、第１実行部３６１の情報として結線情報３３４を作成する。このとき、第２実行部３６２についての情報は、入出力無し（図３（Ｂ）の"−"）として登録する。なお、値については、結線リスト３０３において定義されている初期値（図３（Ａ）においては不図示）を設定する。
【００２１】
結線管理部３３１は、結線情報３３４を作成すると、結線情報３３４に従って各シミュレータにイベント通知指示を出力し、かつ、信号線の初期値を通知する。各シミュレータは、イベント通知指示を受け取ると、以後、信号線に対する出力や、信号線の値の読み込みイベントを結線管理部３３１に通知する。結線管理部３３１は、シミュレータから信号線の書込みイベントの通知を受けると、結線情報３３４の値フィールドに、通知された値を設定する。一方、シミュレータから、信号線の読出しイベントの通知を受けると、対応する信号線の値を結線情報３３４から取得して、イベント元のシミュレータに出力する。なお、各シミュレータは、書込みイベントや読出しイベントを中継部３３０に通知すると、中継部３３０から、当該イベントに対する返送を受け取るまで処理を中断し、当該イベントに対する返送を受け取ると処理を再開する。
【００２２】
図４は、本実施形態による検証装置３００での検証処理のフローチャートである。模擬動作の開始により、検証装置３００の結線管理部３３１は、Ｓ４０１で結線リスト３０３を読み込み、結線情報３３４を作成する。例えば、結線リスト３０３が図３（Ａ）の通りであると、結線管理部３３１は、図３（Ｂ）に示す結線情報３３４を作成する。結線管理部３３１は、結線情報３３４を作成後、各シミュレータにイベント通知指示を出力する。
【００２３】
ユーザは、シミュレーション中において、シミュレーション定義情報３０２の評価用スクリプト３０４と、結線リスト３０３を更新することができる。そして、ユーザは、任意のタイミングでユーザ・インタフェース部３３５を介して実行部の変更指示を選択部３３３に対して行うことができる。
【００２４】
Ｓ４０２において、選択部３３３が、ユーザからの変更指示を受け取ると、選択部３３３は、同期管理部３３２に変更要求を出力し、当該要求に対する返送があるまで待機する。同期管理部３３２は、選択部３３３から変更要求を受け取ると、Ｓ４０３において、各シミュレータが変更可能状態となるのを監視する。例えば、シミュレータが、読出しイベントや書込みイベントを発生させた場合や、指定時間の処理を終了した場合には、当該シミュレータが変更可能状態にあると判定することができる。より一般的には、中継部３３０からの何らかの通知待ちであり、通知を受け取るまで処理を中断しているシミュレータについては変更可能状態にあると判定することができる。さらに、外界シミュレータ３６０については、スクリプトを処理中であれば、その終了により変更可能状態に遷移したと判定することができる。なお、処理中のスクリプトがなければ、当該外界シミュレータ３６０については変更可能状態と判断することができる。
【００２５】
同期管理部３３２は、総てのシミュレータが変更可能状態になると、Ｓ４０４において、選択部３３３へ変更可能を通知する。なお、同期管理部３３２は、各シミュレータが変更可能状態になるまで、各シミュレータからイベントの通知を受け取っても、その通知に対する返送を行わない様にする。同様に、同期処理が終了しても基準時刻を所定時間だけ進めることなく待機する。つまり、各シミュレータに実行許可通知を行わない。これは、各シミュレータを変更可能状態にするためである。選択部３３３は、同期管理部３３２から変更可能との通知を受け取ると、結線管理部３３１に変更要求を出力し、当該要求に対する返送があるまで待機する。結線管理部３３１は、変更要求を受け取ると、Ｓ４０４において、結線リスト３０３を読み込んで結線情報３３４を作成する。このとき、結線管理部３３１は、結線リスト３０３の外界シミュレータ３６０が、第２実行部３６２、つまり、インタプリタ形式の実行部であるものとして結線情報３３４を作成する。
【００２６】
なお、作成する結線情報３３４に設定する信号の値について、変更前の結線情報３３４においても使用していた信号線については、変更前の値を保持し、新規に追加された信号線については、結線リスト３０３で定義された初期値を使用する。なお、信号線の異同は、信号線名の一致により判定するが、例えば、信号線の値を保存するための記憶領域の仮想アドレスやサイズ等の一致で判定する構成とすることもできる。例えば、結線リスト３０３が、図３（Ａ）から図３（Ｃ）に変更された場合に、結線管理部３３１が作成する結線情報３３４の例を図３（Ｄ）に示す。なお、Ｖｓｉｇ１〜３の様な、第１実行部３６１から第２実行部３６２に値を引き継ぐために定義している信号線については、結線情報３３４から削除することができる。結線情報３３４から削除することで、当該信号線についての書込みイベントが発生しなくなるためシミュレーション負荷を減らすことができる。なお、第１実行部３６１に切り戻す構成においては、Ｖｓｉｇ１〜３を削除しない。
【００２７】
結線管理部３３１は、結線情報３３４を作成後、シミュレーション開始時と同様に、各シミュレータに通知を行う。さらに、第２実行部３６２に対して、結線管理部３３１は、結線情報３３４に従い各信号線の値を通知する。その後、結線管理部３３１は、選択部３３３に処理の終了を通知する。選択部３３３は、処理の終了の通知を受け取ると、同期管理部３３２へ変更終了通知を出力する。同期管理部３３２は、選択部３３３から変更終了通知を受信すると、各シミュレータから既に受けているイベント通知に対応する処理を行い、各シミュレータに処理結果を返送する。または、指定時間の処理終了通知を送付したことにより模擬動作を停止しているシミュレータに対しては、通常の同期処理を再開して模擬動作を再開させる。その後、検証装置３００は、Ｓ４０２から処理を繰り返す。一方、Ｓ４０５において、ユーザがユーザ・インタフェース部３３５を介して模擬動作の終了を通知すると、検証装置３００は模擬動作を終了する。
【００２８】
以上の構成により、模擬動作の途中において、コンパイル形式の第１実行部から、インタプリタ形式の第２実行部に切り替えると共に、使用するスクリプトを変更することが可能になる。これにより、模擬動作の開始前には想定していなかった状況が発生しても、模擬動作を中断させることなく評価用スクリプト３０４を変更して実行することが可能となり、開発効率が向上する。
【００２９】
＜第二実施形態＞
続いて、第二実施形態について、第一実施形態との相違点を中心に説明する。例えば、模擬動作中における評価用スクリプト３０４の変更が情報の追加のみであり、開始時における評価用スクリプト３０４及び結線リスト３０３に関する部分についての変更がないものとする。この場合には、全ての評価用スクリプト３０４を第２実行部３６２で実行させる必要はない。本実施形態では、模擬動作開始時の評価用スクリプト３０４については第１実行部３６１で実行し、追加分のみを第２実行部３６２で実行する。つまり、第１実行部３６１と第２実行部３６２を並行して動作させる。
【００３０】
図５は、本実施形態による検証装置３００の機能ブロック図である。本実施形態においては、シミュレーション途中において何らかの修正を行う場合、シミュレーション定義情報３０２に、結線リスト３０５と評価用スクリプト３０６を追加する。そして、第１実行部３６１は、模擬動作の開始時と同様に評価用スクリプト３０４を実行し続け、追加した評価用スクリプト３０６については第２実行部が実行する。選択部３３３は、ユーザ・インタフェース部３３５を介してユーザから追加要求を受け取ると、結線管理部３３１に結線情報３３４を作成させる。
【００３１】
図７は、本実施形態による検証処理のフローチャートである。図７のＳ７０１〜Ｓ７０５の処理は基本的には図４のＳ４０１〜Ｓ４０５の処理と同様である。したがって、結線リスト３０３が図６（Ａ）の通りであると、Ｓ７０１において、結線管理部３３１は、図６（Ｂ）に示す結線情報を作成する。また、Ｓ７０２及びＳ７０３での処理は、図４のＳ４０２及びＳ４０３の変更が追加になるが、追加可能か否かの判断は、第一実施形態における変更可能か否かの判断と同様である。但し、本実施形態においては、第１実行部３６１に関しては、イベントの通知のみで判断し、スクリプトを処理中であるか否かについては追加可能であるか否かの判定の対象とはしない。これは、第１実行部３６１が、評価用スクリプト３０４をそのまま実行するものであるからである。結線管理部３３１は、Ｓ７０４において、結線リスト３０５を読み込み、結線情報３３４を作成する。なお、結線管理部３３１は、結線リスト３０５の外界シミュレータ３６０を第２実行部３６２と読み替える。なお、結線リスト３０５に、結線リスト３０３でも定義されている信号線が存在する場合、結線リスト３０５での信号の方向が"入力"であるもののみを結線情報３３４に反映させる。例えば、結線リスト３０５が図６（Ｃ）の通りとすると、結線情報３３４は、例えば、図６（Ｄ）の様になる。なお、図６（Ｃ）の結線リスト３０５のＶｓｉｇ３は、第２実行部３６２の内部で使用する信号値であるため、結線リスト３０５において定義しなくとも良い。
【００３２】
以上、コンパイルされたスクリプトを実行する第１実行部３６１に加えて、追加されたスクリプトをインタプリタ形式の第２実行部３６２で実行する。この構成により、模擬動作の速度を高く保ちつつ、模擬動作の途中において評価用スクリプトの変更が可能になる。
【００３３】
＜第三実施形態＞
続いて、第三実施形態について第一実施形態との相違点を中心に説明する。第一実施形態においては、ユーザの指示に基づき第１実行部３６１から第２実行部３６２への切り替えを行っていた。本実施形態では、ユーザの指示に加えて、シミュレータの状態が選択条件に合致すると、その条件に応じて評価用スクリプトを実行する実行部を選択する。
【００３４】
図８は、本実施形態による検証装置３００の機能ブロック図である。シミュレーション定義情報３０２は、選択条件３０７を有し、監視部３４０は、選択条件３０７を読み込んで検証装置３００の状態が選択条件３０7に合致するか否かを監視する。選択部３３３は、検証装置３００の状態が選択条件３０7に合致すると監視部３４０が判定すると、それに応じて評価用スクリプトを実行する実行部を選択する。
【００３５】
図９は、選択条件３０７の例である。選択条件は、結線情報３３４の各種信号の現在値や、シミュレータ内部で使用する変数や状態を示す値や、デバッガからのブレーク情報や、イベント通知内容で定義される。なお、図９においては、シミュレータ内部で使用する変数や状態を示す値は、シミュレータが使用する仮想アドレスで特定している。選択条件３０７の成立の判定には、結線リスト３０３に含まれる信号線以外の値も使用する場合がある。したがって、本実施形態において、結線管理部３３１は、結線情報３３４を作成する際、選択条件３０７も参照し、選択条件３０７のみに使用されている値があれば、それらも結線情報３３４に含める。これら値は、監視部３４０が選択条件３０７の成立の判定のためのみに使用されるので、対象とするシミュレータについては"出力"を設定し、その他のシミュレータについては"−"を設定する。また、ユーザがユーザ・インタフェース部３３５を介して行う、第１実行部３６１から第２実行部３６２に変更すること（図９の条件６）や、第２実行部３６２から第１実行部３６１に変更すること（図９の条件７）の指示も選択条件の１つとする。なお、第二実施形態のように、第１実行部３６１に加えて第２実行部３６２を動作させることの指示も選択条件とすることができる。本例において、ユーザからの指示以外の選択条件（図９の条件１から５）が成立すると、選択部３３３は、第１実行部３６１から第２実行部３６２に変更を行うが、成立した条件に応じて動作させる実行部を選択する構成とすることができる。
【００３６】
また、本実施形態において、ユーザは、ユーザ・インタフェース部３３５を介して第２実行部３６２にスクリプトを直接入力することができる。さらに、ユーザは、ユーザ・インタフェース部３３５を介して編集部３６３により、評価用スクリプト３０４の追加・修正といった編集作業を行える。第２実行部３６２は、編集後の評価用スクリプト３０４を実行する。
【００３７】
図１０は、本実施形態による検証処理のフローチャートである。Ｓ１００１からＳ１００４及びＳ１０１２での処理は、図４のＳ４０１〜４０５の処理と同様である。但し、図４のＳ４０２では、ユーザからの変更指示を監視したが、Ｓ１００２では、選択条件の成立を監視する。また、本実施形態においては、第１実行部３６１から第２実行部３６２への変更のみならず、第１実行部３６１に加えて第２実行部３６２を動作させることも含むため、Ｓ１００３では、第２実行部３６２が動作開始可能であるかを判定している。しかしながら、動作可能か否かの判定条件は、第一実施形態の変更可能か否かの判定条件と同様である。
【００３８】
本実施形態において、第２実行部３６２は、ユーザ・インタフェース部３３５を介して入力されるスクリプトを実行できるが、この場合、以下の２つの同期処理方法が存在する。ひとつめは、ユーザから"シミュレーション再開"の指示を受け取るまで他のシミュレータを駆動させない方法である。これは、第２実行部３６２が"処理終了"を同期管理部３３２に返送しないことで実現できる。同期管理部３３２は、第２実行部３６２から"処理終了"が通知されないため同期待ちとなり、他のシミュレータを停止させるからである。第２実行部３６２は、ユーザ・インタフェース部３３５を介してユーザからの様々な指示を受けると、指示に対する処理を実行し、ユーザへ処理が終了したことを表示する。第２実行部３６２は、ユーザから、"シミュレーション再開"の指示を受け取ると、同期管理部３３２へ"処理終了"を送信する。
【００３９】
もうひとつは、ユーザからの指示を待つ間において、他のシミュレータでの処理を実行させ続ける方法である。第２実行部３６２は、所定時間の処理を終了すると同期管理部３３２へ"処理終了"を送信する。また、第２実行部３６２は、ユーザから何らかの指示を受けると、同期管理部３３２へ"処理中"を送信する。これは、他のシミュレータが所定時間の処理を終了したときに同期管理部３３２が同期処理を実行しないようにするためである。第２実行部３６２は、ユーザから指示された処理を終了すると、同期管理部３３２へ"処理終了"を送信し、同期管理部３３２が同期処理を実行可能な状態にする。なお、ユーザは、ユーザ・インタフェース部３３５を介して、スクリプトを入力し、評価用スクリプト３０４を編集する以外にも、結線情報３３４を更新することもできる。
【００４０】
図１０に戻り、第２実行部３６２は、Ｓ１００５において、ユーザ・インタフェース部３３５を介してユーザからの指示を受けると、その指示が結線情報３３４の更新を伴う要求であるかをＳ１００６で判定する。結線情報３３４の更新を伴う要求ではないと、第２実行部３６２は、Ｓ１０１１でユーザから指示された処理を実行する。一方、結線情報３３４の更新を伴う要求であると、第２実行部３６２は、中継部３３０に結線情報３３４の更新を通知し、中継部３３０は、Ｓ１００７で結線情報の更新が可能となるまで待機する。なお、更新可能であるか否かの判定条件は、Ｓ１００３における動作可能であるかの判定条件と同じである。中継部３３０は、更新可能になると、Ｓ１００８において、ユーザの指示を再びチェックする。ユーザの指示が、第１実行部３６１のみを動作させるものでなければ、Ｓ１００９で結線情報３３４を更新し、Ｓ１００５から処理を繰り返す。一方、ユーザの指示が第１実行部３６１のみを動作させるものであれば、中継部３３０は、結線情報３３４を更新して、Ｓ１００２からの処理を繰り返す。なお、検証装置３００は、Ｓ１０１３において、模擬動作の終了通知を受け取ると、模擬動作を終了する。
【００４１】
なお、選択部３３３は、第２実行部３６２の動作を停止して、第１実行部３６１を動作させる場合には、その逆の処理と同様に、第２実行部３６２の内部変数の値を第１実行部３６１に通知する。つまり、選択部３３３は、一方の実行部の動作を停止して、他方の実行部の動作を開始する場合、当該一方の実行部の内部変数の値を、当該他方の実行部に通知する。また、中継部３３０は、実行部を動作させる際には、動作開始タイミングを監視して、動作開始タイミングになると当該実行部を動作させる。なお、動作開始タイミングは、各シミュレータが処理待ちとなっているタイミングである。この構成により、必要に応じて実行部を切り替えることができる。
【００４２】
以上、選択条件を監視して動作させる実行部を選択することで、模擬動作において想定していなかった状態の発生に応じて第２実行部３６２によりデバッグを行うことができる。さらに、ユーザ・インタフェース部３３５を介してユーザが対話形式でスクリプトを第２実行部３６２に入力することで、状況に応じたデバッグを行うことができる。また、デバッグの終了後、第１実行部３６１に切り戻すことで模擬動作の実行速度を速めることができる。
【００４３】
＜第四実施形態＞
続いて、第四実施形態について第三実施形態との相違点を中心に説明する。第三実施形態においてはいずれの選択条件が成立しても、その後の処理は同じであった。本実施形態では、図１２に示す選択条件を使用し、成立した選択条件に応じて、第２実行部３６２において使用する評価用スクリプト及び結線リストを選択する。
【００４４】
図１１は、本実施形態による検証装置３００の機能ブロック図である。本実施形態においては、成立した選択条件３０７に応じて評価用スクリプト３０４を読み込んで実行するため、外界シミュレータ３６０も選択条件３０７を読み込む。そして、監視部３４０は、成立した選択条件を第２実行部３６２に通知する。
【００４５】
図１３は、本実施形態による検証処理のフローチャートである。Ｓ１３０１からＳ１３０４及びＳ１３１３での処理は、図１０のＳ１００１からＳ１００４及びＳ１０１３の処理と同様である。但し、Ｓ１３０４において、第２実行部３６２は、中継部３３０から通知される成立した選択条件に基づき評価用スクリプトを読み込む。
【００４６】
また、Ｓ１３０５からＳ１３１０、Ｓ１３１１及びＳ１３１４での処理は、図１０のＳ１００５からＳ１０１０、Ｓ１０１１及びＳ１０１３での処理と同様である。なお、本実施形態においては、ユーザからの指示を受信しなくとも、Ｓ１３１２において選択条件が成立した場合、Ｓ１３０７及びＳ１３０８において、選択条件に応じた評価用スクリプトを読み込む。
【００４７】
［その他の実施形態］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００４８】
３１０：ＣＰＵシミュレータ、３３０：中継部、３３３：選択部、３６０：外界シミュレータ、３６１：第１実行部、３６２：第２実行部、３０３：結線リスト、３０４：評価用スクリプト
【図１】
2016033789.tif 000003
【図２】
2016033789.tif 000004
【図３】
2016033789.tif 000005
【図４】
2016033789.tif 000006
【図５】
2016033789.tif 000007
【図６】
2016033789.tif 000008
【図７】
2016033789.tif 000009
【図８】
2016033789.tif 000010
【図９】
2016033789.tif 000011
【図１０】
2016033789.tif 000012
【図１１】
2016033789.tif 000013
【図１２】
2016033789.tif 000014
【図１３】
2016033789.tif 000015