(57)【要約】本発明は、異なるサイクル周期に基づく試験信号を生成する複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、複数の試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、同期エミュレート部が生成した複数の試験信号生成タイミングを時刻順に整列して順次出力するタイミング整列部と、タイミング整列部が出力した一の試験信号生成タイミングに対応する試験モジュールエミュレート部に、一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部と備えた試験エミュレート装置を提供するものである。
2004090562.tif 000002
【特許請求の範囲】
【請求項１】
試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、
異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部と
を備える試験エミュレート装置。
【請求項２】
擬似的に生成された前記試験信号に基づいて被試験デバイスの動作をシミュレートする被試験デバイスシミュレート部を更に備える請求項１記載の試験エミュレート装置。
【請求項３】
前記同期エミュレート部は、複数の前記試験モジュールエミュレート部のそれぞれが、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的に発生する、前記制御装置に対する割込みを収集する割込み収集タイミングを更に生成し、
前記タイミング整列部は、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、タイミング整列部が一の前記割込み収集タイミングを出力した場合に、当該割込み収集タイミングに対応する前記試験モジュールエミュレート部に、当該割込み収集タイミングの直前に当該試験モジュールエミュレート部が試験信号を生成したサイクル時間において擬似的に発生した前記割込みを前記制御エミュレート部に対して通知させる
請求項１記載の試験エミュレート装置。
【請求項４】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを生成し、
当該試験エミュレート装置は、前記複数の試験モジュールエミュレート部により生成された複数の前記変化タイミングを取得し、前記複数の変化タイミングに基づいて、試験信号を時刻順に順次擬似的に変化させる被試験デバイス接続部を更に備える
請求項１記載の試験エミュレート装置。
【請求項５】
前記被試験デバイス接続部は、前記複数の試験モジュールエミュレート部から取得した複数の前記変化タイミングを前記タイミング整列部に供給し、
前記タイミング整列部は、前記複数の変化タイミング、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、前記タイミング整列部が一の前記変化タイミングを出力した場合に、前記被試験デバイス接続部に、当該変化タイミングに試験信号を擬似的に変化させる
請求項４記載の試験エミュレート装置。
【請求項６】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間が終了するサイクル終了タイミングを前記同期エミュレート部に通知し、
前記同期エミュレート部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記サイクル終了タイミングに基づいて、当該試験モジュールエミュレート部が次のサイクル時間に対応する試験信号を擬似的に生成すべき前記試験信号生成タイミングを生成する
請求項１記載の試験エミュレート装置。
【請求項７】
次のサイクル時間に対応する前記試験信号生成タイミングを前記タイミング整列部が出力した場合に、前記スケジュール部は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、当該試験信号生成タイミングに対応する前記試験モジュールエミュレート部が擬似的に発生した割込みを前記制御エミュレート部に対して通知させる
請求項６記載の試験エミュレート装置。
【請求項８】
前記複数の試験モジュールエミュレート部のそれぞれは、当該試験モジュールエミュレート部に対応する試験モジュールエミュレートプログラムをコンピュータで動作させることにより実現され、
前記試験モジュールエミュレートプログラムは、
前記試験モジュールが前記制御装置から受信する複数のコマンドのそれぞれに対応して設けられ、当該コマンドに対応する前記試験モジュールの動作をエミュレートする複数のハードウェアエミュレート関数と、
前記スケジュール部が、前記試験信号生成タイミングに対応するサイクル時間における試験信号を生成させるために用いる制御関数と
を有する請求項１記載の試験エミュレート装置。
【請求項９】
コンピュータを、試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置として機能させるプログラムを記録した記録媒体であって、
前記プログラムは、前記コンピュータを、
異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部と
して機能させる記録媒体。
【請求項１０】
異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置であって、
前記試験エミュレート装置は、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部と
を備え、
当該試験モジュールエミュレート装置は、
前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部
を備える試験モジュールエミュレート装置。
【請求項１１】
前記一の試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期エミュレート部に通知し、前記同期エミュレート部に前記サイクル終了タイミングに基づき当該試験モジュールエミュレート装置が次に試験信号を擬似的に生成すべき前記試験信号生成タイミングを更に生成させる試験モジュールインターフェイスエミュレート部を更に備える請求項１０記載の試験モジュールエミュレート装置。
【請求項１２】
異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、コンピュータを、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置として機能させるプログラムを記録した記録媒体であって、
前記試験エミュレート装置は、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部と
を備え、
前記プログラムは、前記コンピュータを、
前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部
として機能させる記録媒体。
【請求項１３】
試験信号を被試験デバイスに供給する試験モジュールを備える試験装置であって、
前記被試験デバイスの試験を制御する制御装置と、
サイクル周期に基づき試験信号を生成する試験モジュールと、
前記試験モジュールをエミュレートする試験モジュールエミュレート部と
を備え、
前記制御装置は、
前記被試験デバイスの実試験又は擬似試験のいずれを行うかの指示を入力し、
前記被試験デバイスの実試験を行う指示を受けた場合に、前記被試験デバイスの試験を行う試験プログラムを前記試験モジュールに供給して、前記試験モジュールにより前記被試験デバイスの試験を行わせ、前記被試験デバイスの擬似試験を行う指示を受けた場合に、前記試験プログラムを前記試験モジュールエミュレート部に供給して、前記試験モジュールエミュレート部により前記被試験デバイスの試験をシミュレートさせる
試験装置。
【請求項１４】
前記制御装置は、当該制御装置と前記試験モジュールとの間の通信処理を行う通信ソフトウェアを実行し、
前記通信ソフトウェアは、前記制御装置と協働して、当該通信ソフトウェアを初期化する呼び出しに含まれる前記指示に基づいて、前記試験プログラムを前記試験モジュール及び前記試験モジュールエミュレート部のいずれに供給するかを判断する
請求項１３記載の試験装置。
【請求項１５】
試験信号を被試験デバイスに供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、
サイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記複数の試験モジュールエミュレート部のそれぞれが、サイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングをスケジュールするスケジュール部と
を備え、
前記試験モジュールエミュレート部は、
関数呼び出しにより前記試験信号生成タイミングの通知を受けて、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッドを複数回呼び出すことにより出力し、
当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、前記出力チャネルオブジェクトの終了メソッドを呼び出すことにより通知する
試験エミュレート装置。
【請求項１６】
前記スケジュール部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記終了メソッドに基づいて、全ての前記試験モジュールエミュレート部が試験信号の電圧の変化の出力を終えた期間を算出し、
前記期間内における前記試験信号を取得して、当該試験信号に基づいて被試験デバイスの前記期間内における動作をシミュレートする被試験デバイスシミュレート部を更に備える
請求項１５記載の試験エミュレート装置。
【請求項１７】
前記出力チャネルオブジェクトは、前記終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止する請求項１５記載の試験エミュレート装置。
【発明の詳細な説明】
文献の参照による組み込みが認められる指定国については、下記の出願に記載された内容を参照により本出願に組み込み、本出願の記載の一部とする。
米国特許出願１０／４０４，００２  出願日  平成１５年３月３１日
米国特許出願１０／４０３，８１７  出願日  平成１５年３月３１日
国際特許出願ＰＣＴ／ＪＰ２００４／００１６４９  出願日平成１６年２月１６日
国際特許出願ＰＣＴ／ＪＰ２００４／００１６４８  出願日平成１６年２月１６日
【技術分野】  本発明は、試験エミュレート装置、試験モジュールエミュレート装置、及びこれらのプログラムを記録した記録媒体に関する。特に本発明は、被試験デバイスに試験信号をそれぞれ供給する、交換可能な複数の試験モジュールを備える試験装置をエミュレートし、被試験デバイスや試験モジュール等の実物を用いることなく試験環境を検証することができる試験エミュレート装置、試験モジュールエミュレート装置、及びこれらのプログラムを記録した記録媒体に関する。
【背景技術】  従来、被試験デバイスや試験装置等の実物を用いることなく試験環境を検証する手段として、特開平１０−３２０２２９号、特開２０００−２６７８８１号、特開２００１−５１０２５号、特開２００１−１３４４５７号、特開２００２−３３３４６９号に示す技術が開示されている。
特開平１０−３２０２２９号は、半導体試験装置の各ハードウェアユニットの機能をエミュレートする各エミュレータユニットと、ＤＵＴの機能をエミュレートするデバイスエミュレータと、テストプログラムに基づいて、各エミュレータユニットからテストプログラムの実行に必要なデータを収集する手段と、収集したデータに基づきデバイスエミュレータに試験信号を発生し、デバイスエミュレータからの結果信号を比較して結果を格納するデバイステストエミュレータとを備えるエミュレータを開示する。
特開２０００−２６７８８１号は、ＤＵＴの内部抵抗に依存して変化する電圧値、電流値を的確にシミュレートする半導体シミュレート装置を開示する。
特開２００１−５１０２５号は、半導体試験装置の動作をエミュレートするテスタエミュレート手段と、ハードウェア記述言語に基づきＤＵＴをシミュレートするハードウェア記述言語シミュレート手段と、ＤＵＴのシミュレート結果に基づいて半導体試験用プログラムのデバッグを行なうデバッグ手段とを備える半導体試験用プログラムデバッグ装置を開示する。
特開２００１−１３４４５７号は、半導体試験装置の動作をエミュレートする際に、各ピンに対応した波形データを高速に作成することができる半導体試験用プログラムデバッグ装置を開示する。
特開２００２−３３３４６９号は、アナログ出力端子を備える半導体デバイス用に作成された半導体試験用プログラムの検証を行なうことができる半導体試験用プログラムデバッグ装置を開示する。
上記に示した試験装置のエミュレート装置は、主として試験装置ベンダによって独自に開発されたアーキテクチャによる試験装置を前提とする。一方、将来の試験装置においては、試験装置がオープンアーキテクチャにより実現され、様々なベンダによって開発されたモジュールを組み合わせて試験装置を構成する方式が期待されており、様々なモジュールを混載して使用する試験装置を適切にエミュレートすることができるエミュレート装置を提供することが望ましい。
そこで本発明は、このような問題を解決することを目的とする。
【発明の開示】
このような目的を達成するために、本発明の第１の形態によると、試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部とを備える試験エミュレート装置を提供する。
擬似的に生成された前記試験信号に基づいて被試験デバイスの動作をシミュレートする被試験デバイスシミュレート部を更に備えてもよい。
前記同期エミュレート部は、複数の前記試験モジュールエミュレート部のそれぞれが、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的に発生する、前記制御装置に対する割込みを収集する割込み収集タイミングを更に生成し、前記タイミング整列部は、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、前記スケジュール部は、タイミング整列部が一の前記割込み収集タイミングを出力した場合に、当該割込み収集タイミングに対応する前記試験モジュールエミュレート部に、当該割込み収集タイミングの直前に当該試験モジュールエミュレート部が試験信号を生成したサイクル時間において擬似的に発生した前記割込みを前記制御エミュレート部に対して通知させてよい。
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを生成し、当該試験エミュレート装置は、前記複数の試験モジュールエミュレート部により生成された複数の前記変化タイミングを取得し、前記複数の変化タイミングに基づいて、試験信号を時刻順に順次擬似的に変化させる被試験デバイス接続部を更に備えてもよい。
前記被試験デバイス接続部は、前記複数の試験モジュールエミュレート部から取得した複数の前記変化タイミングを前記タイミング整列部に供給し、前記タイミング整列部は、前記複数の変化タイミング、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、前記スケジュール部は、前記タイミング整列部が一の前記変化タイミングを出力した場合に、前記被試験デバイス接続部に、当該変化タイミングに試験信号を擬似的に変化させてもよい。
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間が終了するサイクル終了タイミングを前記同期エミュレート部に通知し、前記同期エミュレート部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記サイクル終了タイミングに基づいて、当該試験モジュールエミュレート部が次のサイクル時間に対応する試験信号を擬似的に生成すべき前記試験信号生成タイミングを生成してもよい。
次のサイクル時間に対応する前記試験信号生成タイミングを前記タイミング整列部が出力した場合に、前記スケジュール部は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、当該試験信号生成タイミングに対応する前記試験モジュールエミュレート部が擬似的に発生した割込みを前記制御エミュレート部に対して通知させてもよい。
前記複数の試験モジュールエミュレート部のそれぞれは、当該試験モジュールエミュレート部に対応する試験モジュールエミュレートプログラムをコンピュータで動作させることにより実現され、前記試験モジュールエミュレートプログラムは、前記試験モジュールが前記制御装置から受信する複数のコマンドのそれぞれに対応して設けられ、当該コマンドに対応する前記試験モジュールの動作をエミュレートする複数のハードウェアエミュレート関数と、前記スケジュール部が、前記試験信号生成タイミングに対応するサイクル時間における試験信号を生成させるために用いる制御関数とを有してもよい。
本発明の第２の形態によると、コンピュータを、試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置として機能させるプログラムを記録した記録媒体であって、前記プログラムは、前記コンピュータを、異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部として機能させる記録媒体を提供する。
本発明の第３の形態によると、異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置であって、前記試験エミュレート装置は、前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部とを備え、当該試験モジュールエミュレート装置は、前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部を備える試験モジュールエミュレート装置を提供する。
前記一の試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期エミュレート部に通知し、前記同期エミュレート部に前記サイクル終了タイミングに基づき当該試験モジュールエミュレート装置が次に試験信号を擬似的に生成すべき前記試験信号生成タイミングを更に生成させる試験モジュールインターフェイスエミュレート部を更に備えてもよい。
本発明の第４の形態によると、異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、コンピュータを、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置として機能させるプログラムを記録した記録媒体であって、前記試験エミュレート装置は、前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部とを備え、前記プログラムは、前記コンピュータを、前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部として機能させる記録媒体を提供する。
本発明の第５の形態によると、試験信号を被試験デバイスに供給する試験モジュールを備える試験装置であって、前記被試験デバイスの試験を制御する制御装置と、サイクル周期に基づき試験信号を生成する試験モジュールと、前記試験モジュールをエミュレートする試験モジュールエミュレート部とを備え、前記制御装置は、前記被試験デバイスの実試験又は擬似試験のいずれを行うかの指示を入力し、前記被試験デバイスの実試験を行う指示を受けた場合に、前記被試験デバイスの試験を行う試験プログラムを前記試験モジュールに供給して、前記試験モジュールにより前記被試験デバイスの試験を行わせ、前記被試験デバイスの擬似試験を行う指示を受けた場合に、前記試験プログラムを前記試験モジュールエミュレート部に供給して、前記試験モジュールエミュレート部により前記被試験デバイスの試験をシミュレートさせる試験装置を提供する。
前記制御装置は、当該制御装置と前記試験モジュールとの間の通信処理を行う通信ソフトウェアを実行し、前記通信ソフトウェアは、前記制御装置と協働して、当該通信ソフトウェアを初期化する呼び出しに含まれる前記指示に基づいて、前記試験プログラムを前記試験モジュール及び前記試験モジュールエミュレート部のいずれに供給するかを判断してもよい。
本発明の第６の形態によると、試験信号を被試験デバイスに供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、サイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、前記複数の試験モジュールエミュレート部のそれぞれが、サイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングをスケジュールするスケジュール部とを備え、前記試験モジュールエミュレート部は、関数呼び出しにより前記試験信号生成タイミングの通知を受けて、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッドを複数回呼び出すことにより出力し、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、前記出力チャネルオブジェクトの終了メソッドを呼び出すことにより通知する試験エミュレート装置を提供する。
前記スケジュール部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記終了メソッドに基づいて、全ての前記試験モジュールエミュレート部が試験信号の電圧の変化の出力を終えた期間を算出し、前記期間内における前記試験信号を取得して、当該試験信号に基づいて被試験デバイスの前記期間内における動作をシミュレートする被試験デバイスシミュレート部を更に備えてもよい。
前記出力チャネルオブジェクトは、前記終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止してもよい。
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではなく、これらの特徴群のサブコンビネーションも又発明となりうる。
【図面の簡単な説明】  図１は、本発明の実施形態に係る試験装置１０の構成を示す。
図２は、本発明の実施形態に係る試験エミュレート装置１９０の機能構成を示す。
図３は、本発明の実施形態に係るコンピュータ２０のハードウェア構成の一例を示す。
図４は、本発明の実施形態に係る試験モジュールエミュレート部２７０の機能構成を示す。
図５は、本発明の実施形態に係るクラス階層構造５００の一例を示す。
図６は、本発明の実施形態に係る試験エミュレート装置１９０の試験信号生成処理フローを示す。
図７は、本発明の実施形態に係る試験エミュレート装置１９０により擬似的に生成される試験信号の一例を示す。
図８は、本発明の実施形態によるソフトウェアアーキテクチャを示している。
図９は、本発明の実施形態によるテストクラスの使用を示している。
図１０は、本発明の実施形態による、テスタシステムと異なるベンダが提供するモジュールリソースとの相互作用を示す統一モデリング言語（ＵＭＬ）ダイアグラムである。
図１１は、サイトコントローラによって保持されているときのユーザのテストを管理するためのサイトコントローラオブジェクトの一実施形態を示している。
図１２は、図１１に示されているサイトコントローラオブジェクトを表しているシステムコントローラ側のオブジェクトの代理の一実施形態を示している。
図１３は、本発明の実施形態によるテスト環境を示している。
図１４は、本発明の実施形態に係るシミュレーションコンフィギュレーションファイルの一例を示す第１の図である。
図１５は、本発明の実施形態に係るシミュレーションコンフィギュレーションファイルの一例を示す第２の図である。
図１６は、本発明の実施形態に係るオフラインコンフィギュレーションファイルの一例を示す第１の図である。
図１７は、本発明の実施形態に係るオフラインコンフィギュレーションファイルの一例を示す第２の図である。
図１８は、本発明の実施形態に係るクラス階層構造５２００の一例を示す。
図１９は、本発明の実施形態に係るチャネルオブジェクトの使用ダイアグラムを示す。
図２０は、本発明の実施形態に係るイベントオブジェクトの仕様ダイアグラムを示す。
図２１は、本発明の実施形態に係るデジタルモジュールの基本クラスの一例を示す。
図２２は、本発明の実施形態に係るデジタルドライバモジュールのクラス宣言の一例を示す。
図２３は、本発明の実施形態に係るデジタルドライバモジュールのｈａｎｄｌｅＥｖｅｎｔメソッドの一例を示す。
図２４は、本発明の実施形態に係るデジタルストローブモジュールのクラス宣言を示す。
図２５は、本発明の実施形態に係るデジタルストローブモジュールのｈａｎｄｌｅＥｖｅｎｔメソッドの一例を示す。
図２６は、本発明の実施形態に係るＤＵＴモデルのクラス定義の一例を示す。
図２７は、本発明の実施形態に係るＤＵＴモデルのｒｕｎメソッドの一例を示す。
図２８は、実環境６０００及びエミュレート環境６０５０におけるシステムバスアクセスライブラリ６０１４の位置付けを示す。
【発明を実施するための最良の形態】  以下、図面を参照して本発明の実施の形態の一例を説明する。
図１は、本発明の実施形態に係る試験装置１０の構成を示す。試験装置１０は、試験信号を生成してＤＵＴ１００（Ｄｅｖｉｃｅ  Ｕｎｄｅｒ  Ｔｅｓｔ：被試験デバイス）に供給し、ＤＵＴ１００が試験信号に基づいて動作した結果出力する結果信号が期待値と一致するか否かに基づいてＤＵＴ１００の良否を判断する。本実施形態に係る試験装置１０は、オープンアーキテクチャにより実現され、ＤＵＴ１００に試験信号を供給する試験モジュール１７０等として、オープンアーキテクチャに基づく各種のモジュールを用いることができる。そして、試験装置１０は、ＤＵＴ１００の実試験をエミュレートする試験エミュレート装置１９０を有し、試験エミュレート装置１９０により、実試験に用いる試験モジュール１７０等の変更に対応して適切に構成を変更し、ＤＵＴ１００の実試験を適切にエミュレートするエミュレート環境を提供することができる。
試験装置１０は、システム制御装置１１０と、通信ネットワーク１２０と、サイト制御装置１３０ａ〜ｃと、バススイッチ１４０と、同期モジュール１５０ａ〜ｂと、同期接続モジュール１６０ａ〜ｂと、試験モジュール１７０ａ〜ｂと、ロードボード１８０と、試験エミュレート装置１９０とを備え、ＤＵＴ１００ａ〜ｂに接続される。
システム制御装置１１０は、試験装置１０がＤＵＴ１００ａ〜ｂの試験に用いる試験制御プログラム、試験プログラム、及び試験データ等を外部のネットワーク等を介して受信し、格納する。通信ネットワーク１２０は、システム制御装置１１０、サイト制御装置１３０ａ〜ｃ、及び試験エミュレート装置１９０を接続し、これらの間の通信を中継する。
サイト制御装置１３０ａ〜ｃは、本発明に係る制御装置の一例であり、ＤＵＴ１００の試験を制御する。ここで、複数のサイト制御装置１３０は、それぞれ一のＤＵＴ１００の試験を制御する。例えば、図１においては、サイト制御装置１３０ａはＤＵＴ１００ａの試験を制御し、サイト制御装置１３０ｂはＤＵＴ１００ｂの試験を制御する。これに代えて、複数のサイト制御装置１３０は、それぞれ複数のＤＵＴ１００の試験を制御してもよい。
より具体的には、サイト制御装置１３０は、通信ネットワーク１２０を介してシステム制御装置１１０から試験制御プログラムを取得し実行する。次に、サイト制御装置１３０は、試験制御プログラムに基づいて、当該ＤＵＴ１００の試験に用いる試験プログラム及び試験データをシステム制御装置１１０から取得し、バススイッチ１４０を介して当該ＤＵＴ１００の試験に用いる同期モジュール１５０及び１又は複数の試験モジュール１７０等のモジュールに格納する。次に、サイト制御装置１３０は、試験プログラム及び試験データに基づく試験の開始をバススイッチ１４０を介して同期モジュール１５０に指示する。そして、サイト制御装置１３０は、試験が終了したことを示す割込み等を例えば同期モジュール１５０から受信し、試験結果に基づいて次の試験を各モジュールに行なわせる。
バススイッチ１４０は、複数のサイト制御装置１３０のそれぞれを、当該サイト制御装置１３０が制御する同期モジュール１５０及び１又は複数の試験モジュール１７０に接続し、これらの間の通信を中継する。ここで、予め定められた一のサイト制御装置１３０は、試験装置１０の使用者や試験制御プログラム等の指示に基づいて、複数のサイト制御装置１３０のそれぞれを、当該サイト制御装置１３０がＤＵＴ１００の試験に用いる同期モジュール１５０及び１以上の試験モジュール１７０に接続させるべくバススイッチ１４０を設定してよい。例えば、図１においては、サイト制御装置１３０ａは、同期モジュール１５０ａ及び複数の試験モジュール１７０ａに接続する様に設定され、これらを用いてＤＵＴ１００ａの試験を行なう。また、サイト制御装置１３０ｂは、同期モジュール１５０ｂ及び複数の試験モジュール１７０ｂに接続する様に設定され、これらを用いてＤＵＴ１００ｂの試験を行なう。
ここで、サイト制御装置１３０ｂが同期モジュール１５０ｂ、同期接続モジュール１６０ｂ、及び１又は複数の試験モジュール１７０ｂを用いてＤＵＴ１００ｂを試験するための構成及び動作は、サイト制御装置１３０ａが同期モジュール１５０ａ、同期接続モジュール１６０ａ、及び１又は複数の試験モジュール１７０ａを用いてＤＵＴ１００ａを試験するための構成及び動作と略同様であるため、以下相違点を除きサイト制御装置１３０ａがＤＵＴ１００ａを試験するための構成及び動作を中心に説明する。
同期モジュール１５０ａは、サイト制御装置１３０ａの指示に基づいて、ＤＵＴ１００ａの試験に用いる複数の試験モジュール１７０ａが試験信号を生成すべき試験信号生成タイミングを生成する。また、同期モジュール１５０ａは、同期接続モジュール１６０ａを介して１又は複数の試験モジュール１７０ａから試験結果を受信し、試験結果の良否に対応した試験プログラムのシーケンスを１又は複数の試験モジュール１７０ａに実行させる。
同期接続モジュール１６０ａは、同期モジュール１５０ａが生成した試験信号生成タイミングを、当該試験信号生成タイミングに対応して動作させるべき試験モジュール１７０ａに通知し、１又は複数の試験モジュール１７０ａのそれぞれを指定したタイミングで動作させる。また、同期接続モジュール１６０ａは、１又は複数の試験モジュール１７０ａから試験結果を受信し、同期モジュール１５０ａに送信する。
複数の試験モジュール１７０ａは、ＤＵＴ１００ａが有する複数の端子の一部ずつにそれぞれ接続され、サイト制御装置１３０ａにより格納された試験プログラム及び試験データに基づいてＤＵＴ１００ａの試験を行なう。ＤＵＴ１００ａの試験において、試験モジュール１７０ａは、試験プログラムにより定められたシーケンスに基づいて試験データから試験信号を生成し、当該試験モジュール１７０ａに接続されたＤＵＴ１００ａの端子に試験信号を供給する。次に、試験モジュール１７０ａは、ＤＵＴ１００ａが試験信号に基づいて動作した結果出力する結果信号を取得し、期待値と比較する。そして、試験モジュール１７０ａは、結果信号と期待値との比較結果を、試験結果として同期接続モジュール１６０ａに送信する。ここで複数の試験モジュール１７０ａは、試験プログラム及び試験データに基づいて、試験信号のサイクル周期を動的に変化させるため、異なるサイクル周期に基づいて試験信号を生成する。
また、試験モジュール１７０ａは、試験プログラムの処理が完了した場合や、試験プログラムの実行中に異常が生じた場合等において、サイト制御装置１３０ａに対して割込みを発生する。この割込みは、バススイッチ１４０を介して当該試験モジュール１７０ａに対応するサイト制御装置１３０ａに通知され、サイト制御装置１３０ａが有するプロセッサにより割込み処理が行われる。
ロードボード１８０は、複数のＤＵＴ１００を載置し、複数の試験モジュール１７０を対応するＤＵＴ１００の端子に接続する。
試験エミュレート装置１９０は、システム制御装置１１０に格納された試験制御プログラム、試験プログラム、及び試験データに基づいて試験装置１０をエミュレートし、ＤＵＴ１００のシミュレーションモデルを用いてＤＵＴ１００の試験を擬似的に行なう。本実施形態において、試験エミュレート装置１９０は、一のサイト制御装置１３０と、当該サイト制御装置１３０により制御される同期モジュール１５０、同期接続モジュール１６０、及び１又は複数の試験モジュール１７０と、当該サイト制御装置１３０による試験対象となるＤＵＴ１００の動作を擬似的に行なう。試験エミュレート装置１９０を用いることにより、試験装置１０の使用者は、ＤＵＴ１００、同期モジュール１５０、同期接続モジュール１６０、及び／又は試験モジュール１７０等の実物を準備していない段階で、試験制御プログラム、試験プログラム、及び／又は試験データの検証を開始することができる。また、試験エミュレート装置１９０を複数用意することにより、複数の使用者のそれぞれがより高価な実試験環境を占有することなく、試験制御プログラム、試験プログラム、及び／又は試験データを開発することができる。
以上において、試験装置１０は、オープンアーキテクチャにより実現され、オープンアーキテクチャ規格を満たす各種のモジュールを使用することができる。そして、試験装置１０は、同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０等のモジュールを、バススイッチ１４０が有する任意の接続スロットに挿入して使用することができる。この際、試験装置１０の使用者等は、例えばサイト制御装置１３０ａを介してバススイッチ１４０の接続形態を変更し、ＤＵＴ１００の試験に用いる複数のモジュールを、当該ＤＵＴ１００の試験を制御するサイト制御装置１３０に接続させることができる。これにより、試験装置１０の使用者は、複数のＤＵＴ１００のそれぞれの端子数、端子の配置、端子の種類、又は試験の種類等に応じて適切なモジュールを選択し、試験装置１０に実装することができる。
なお、以上に代えて、同期接続モジュール１６０ａ及び同期接続モジュール１６０ｂは、試験装置１０に用いられる全ての試験モジュール１７０に共通して設けられた一の同期接続部により実現されてもよい。この場合において、試験装置１０の使用者等は、バススイッチ１４０の接続形態の変更と共に同期接続部と試験モジュール１７０との接続形態を変更することにより、複数のＤＵＴ１００の特性に応じて適切なモジュールを選択することができる。
図２は、本発明の実施形態に係る試験エミュレート装置１９０の機能構成を示す。試験エミュレート装置１９０は、サイト制御エミュレート部２３０と、バススイッチエミュレート部２４０と、同期モジュールエミュレート部２５０と、同期接続モジュールエミュレート部２６０と、１又は複数の試験モジュールエミュレート部２７０と、ＤＵＴ接続部２８０と、ＤＵＴシミュレート部２００と、スケジュール制御部２７５とを有する。以下、試験エミュレート装置１９０が、サイト制御装置１３０ａによるＤＵＴ１００ａの試験をエミュレートする場合を例に説明を行なう。
サイト制御エミュレート部２３０は、図１に示したサイト制御装置１３０ａをエミュレートする。すなわち、サイト制御エミュレート部２３０は、通信ネットワーク１２０を介してシステム制御装置１１０から試験制御プログラムを取得し実行する。次に、サイト制御エミュレート部２３０は、試験制御プログラムに基づいてＤＵＴ１００ａの試験に用いる試験プログラム及び試験データをシステム制御装置１１０から取得し、バススイッチエミュレート部２４０を介して同期モジュールエミュレート部２５０及び１又は複数の試験モジュールエミュレート部２７０等のモジュールエミュレート部に格納する。
ここで、サイト制御エミュレート部２３０は、サイト制御装置１３０ａが同期モジュール１５０ａ及び１又は複数の試験モジュール１７０ａに対して発行する、当該モジュール内の記憶領域への読出アクセス、書込アクセス等のコマンドをバススイッチエミュレート部２４０に対して擬似的に発行する。サイト制御エミュレート部２３０は、試験プログラム及び試験データの書込アクセスをバススイッチエミュレート部２４０に対して擬似的に発行することにより、バススイッチエミュレート部２４０を介して同期モジュールエミュレート部２５０及び１又は複数の試験モジュールエミュレート部２７０等に試験プログラム及び試験データを格納してよい。
また、サイト制御エミュレート部２３０は、同期モジュールエミュレート部２５０及び試験モジュールエミュレート部２７０が擬似的に発生する割込みをバススイッチエミュレート部２４０を介して受信し、サイト制御装置１３０ａの割込み処理を擬似的に実行する。
バススイッチエミュレート部２４０は、図１に示したバススイッチ１４０をエミュレートし、サイト制御エミュレート部２３０と、同期モジュールエミュレート部２５０及び１又は複数の試験モジュールエミュレート部２７０との間の通信を中継する。
同期モジュールエミュレート部２５０は、図１に示した同期モジュール１５０をエミュレートし、サイト制御エミュレート部２３０からの指示に基づき複数の試験モジュールエミュレート部２７０のそれぞれが、当該試験モジュールエミュレート部２７０のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する。次に、同期モジュールエミュレート部２５０は、試験信号を生成した当該試験モジュールエミュレート部２７０からサイクル時間の終了タイミングであるサイクル終了タイミングを受信する。そして、同期モジュールエミュレート部２５０は、サイクル終了タイミングに基づき、当該試験モジュールエミュレート部２７０が次に試験信号を生成すべき試験信号生成タイミング、当該試験モジュールエミュレート部２７０から試験結果を収集する試験結果収集タイミング、当該試験モジュールエミュレート部２７０にサイクル時間の処理を終了させるサイクル終了処理タイミング、及び、当該試験モジュールエミュレート部２７０からサイト制御エミュレート部２３０に対する割込みを収集する割込み収集タイミングを生成する。ここで、試験モジュールエミュレート部２７０からサイト制御エミュレート部２３０に対する割込みとは、複数の試験モジュールエミュレート部２７０のそれぞれが、試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的にサイト制御装置１３０ａに対して発生する割込みである。
同期接続モジュールエミュレート部２６０は、図１に示した同期接続モジュール１６０をエミュレートし、同期モジュールエミュレート部２５０が擬似的に生成した試験信号生成タイミング、及び、同期モジュールエミュレート部２５０がエミュレーションのために生成した試験結果収集タイミング、サイクル終了処理タイミング、及び割込み収集タイミングをスケジュール制御部２７５に通知する。また、同期接続モジュールエミュレート部２６０は、１又は複数の試験モジュールエミュレート部２７０から試験結果を受信し、同期モジュールエミュレート部２５０に送信する。
試験モジュールエミュレート部２７０は、試験信号生成の指示を受けた同期モジュールエミュレート部２５０からサイクル開始の指示を受け、サイト制御エミュレート部２３０により格納された試験プログラム及び試験データに基づいて、当該試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成する。より具体的には、試験モジュールエミュレート部２７０は、試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを擬似的に生成する。ここで、試験モジュールエミュレート部２７０は、試験信号の変化タイミングとして、当該試験モジュールエミュレート部２７０に対応する試験モジュール１７０の仕様により定められた数の変化タイミングを、一のサイクル時間に対応して生成してもよい。また、試験モジュールエミュレート部２７０は、ＤＵＴシミュレート部２００が試験信号に基づいて擬似的に動作した結果出力する出力信号を取得し、試験プログラム及び試験データに基づき定められた期待値と比較する。そして、試験モジュールエミュレート部２７０は、結果信号と期待値との比較結果を、試験結果として同期接続モジュールエミュレート部２６０を介して同期モジュールエミュレート部２５０に送信する。
また、試験モジュールエミュレート部２７０は、スケジュール部２７７から割込み発生の指示を受けて、割込み発生の指示を受ける前に最後に試験信号を生成したサイクル時間中において擬似的に発生した割込みを、バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０に通知する。
ＤＵＴ接続部２８０は、複数の試験モジュールエミュレート部２７０により生成された複数の変化タイミングを取得し、複数の変化タイミングに基づいて、試験信号を時刻順に擬似的に変化させる。
ＤＵＴシミュレート部２００は、例えばＶｅｒｉｌｏｇ−ＨＤＬやＶＨＤＬ等のハードウェア記述言語により記述されたＤＵＴ１００の動作を、ＤＵＴ接続部２８０から取得した試験信号に基づきシミュレートする。そして、ＤＵＴシミュレート部２００は、ＤＵＴ１００が試験信号に基づいて動作した結果出力する結果信号をシミュレーションにより生成し、ＤＵＴ接続部２８０を介して試験モジュールエミュレート部２７０に供給する。
スケジュール制御部２７５は、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、複数の試験モジュールエミュレート部２７０、及びＤＵＴ接続部２８０によるＤＵＴ１００の擬似的な試験において、これらの複数のモジュールエミュレート部が生成する各種のタイミングに基づいて、それぞれのモジュールエミュレート部を動作させるスケジュールを制御する。スケジュール制御部２７５は、タイミング整列部２７６と、スケジュール部２７７とを含む。
タイミング整列部２７６は、同期モジュールエミュレート部２５０が生成した複数の試験信号生成タイミング、複数の割込み収集タイミング、複数のサイクル終了処理タイミング、及び複数の試験結果収集タイミングと、１又は複数の試験モジュールエミュレート部２７０により生成され、ＤＵＴ接続部２８０により供給された複数の変化タイミングを、時刻順に整列して順次スケジュール部２７７に出力する。スケジュール部２７７は、タイミング整列部２７６が順次出力するそれぞれのタイミングを、当該タイミングに対応するモジュールエミュレート部やＤＵＴ接続部２８０に通知し、モジュールエミュレート部又はＤＵＴ接続部２８０に当該タイミングに対応する動作を行わせる。以下に、タイミング整列部２７６が出力したタイミングの種類に応じたスケジュール部２７７の動作を説明する。
（１）  タイミング整列部２７６が試験信号生成タイミングを出力した場合
スケジュール部２７７は、当該試験信号生成タイミングを同期モジュールエミュレート部２５０に通知し、当該試験信号生成タイミングに対応する試験モジュールエミュレート部２７０による試験信号の生成を同期モジュールエミュレート部２５０を介して指示する。これにより、スケジュール部２７７は、同期モジュールエミュレート部２５０を介して、当該試験信号生成タイミングに対応する試験モジュールエミュレート部２７０に、当該試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させる。
（２）  タイミング整列部２７６が割込み収集タイミングを出力した場合
スケジュール部２７７は、当該割込み収集タイミングに対応して指定された試験モジュールエミュレート部２７０に割込みの発生を指示する。これにより、スケジュール部２７７は、当該試験モジュールエミュレート部２７０に、当該割込み収集タイミングの直前に試験信号を生成したサイクル時間において擬似的に発生した割込みを、バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０に対して通知させる。
（３）  タイミング整列部２７６がサイクル終了処理タイミングを出力した場合
スケジュール部２７７は、当該サイクル終了処理タイミングに対応する試験モジュールエミュレート部２７０に、サイクル終了タイミングが到達したことを通知する。
（４）  タイミング整列部２７６が試験結果収集タイミングを出力した場合
スケジュール部２７７は、当該試験結果収集タイミングに対応する試験モジュールエミュレート部２７０に、試験結果収集タイミングが到達したことを通知する。これを受けて、当該試験モジュールエミュレート部２７０は、当該サイクル時間における結果信号と期待値との比較結果を同期接続モジュールエミュレート部２６０を介して同期モジュールエミュレート部２５０に通知する。
（５）  タイミング整列部２７６が変化タイミングを出力した場合
ＤＵＴ接続部２８０は、複数の試験モジュールエミュレート部２７０から取得した複数の変化タイミングをタイミング整列部２７６に供給する。これを受けてタイミング整列部２７６は、複数の変化タイミングと、他の各種タイミングとを合わせて時刻順に整列する。
タイミング整列部２７６が変化タイミングを出力すると、スケジュール部２７７は、当該変化タイミングに試験信号を擬似的に変化させるべく、ＤＵＴ接続部２８０に変化タイミングが到達したことを通知する。これを受けて、ＤＵＴ接続部２８０は、当該変化タイミングに試験信号を擬似的に変化させる。
ここで、試験モジュールエミュレート部２７０は、結果信号を取得すべきタイミングである結果信号取得タイミングをスケジュール制御部２７５に通知し、他の各種タイミングと併せてタイミング整列部２７６により時刻順に整列させてもよい。この場合、スケジュール部２７７は、タイミング整列部２７６が結果信号取得タイミングを出力した場合に、ＤＵＴ接続部２８０に、当該結果信号取得タイミングにおいて、当該結果信号を取得すべき試験モジュールエミュレート部２７０に結果信号を供給させてもよい。
また、ＤＵＴ接続部２８０は、複数の試験モジュールエミュレート部２７０により生成された複数の変化タイミングを取得し、時刻順に整列することなくＤＵＴシミュレート部２００に供給してもよい。この場合、ＤＵＴシミュレート部２００は、供給された複数の変化タイミングを時刻順に整列し、整列した複数の変化タイミングに基づきＤＵＴ１００のシミュレーションを行なってよい。
以上に示した試験エミュレート装置１９０によれば、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び１又は複数の試験モジュールエミュレート部２７０を、試験装置１０の実機における同期モジュール１５０、同期接続モジュール１６０、及び１又は複数の試験モジュール１７０にそれぞれ対応して設けることにより、これらのモジュールエミュレート部を他のモジュールエミュレート部に容易と置換することができる。これにより、例えば試験装置１０の実機において一のモジュールを他のモジュールに変更した場合に、試験エミュレート装置１９０において当該一のモジュールに対応するモジュールエミュレート部を、他のモジュールに対応するモジュールエミュレート部に置換し、試験装置１０の実機と略同一の試験環境を試験エミュレート装置１９０上で提供することができる。
なお、以上に代えて、サイト制御エミュレート部２３０、バススイッチエミュレート部２４０、同期モジュールエミュレート部２５０、試験モジュールエミュレート部２７０、スケジュール制御部２７５、ＤＵＴ接続部２８０、及びＤＵＴシミュレート部２００は、サイト制御装置１３０等の１台のコンピュータにより実現されてもよく、複数のコンピュータによる分散システムにより実現されてもよい。
図３は、本発明の実施形態に係る試験エミュレート装置１９０のハードウェア構成の一例を示す。本実施形態に係る試験エミュレート装置１９０は、ＣＰＵ３００、ＲＯＭ３１０、ＲＡＭ３２０、通信インターフェイス３３０、ハードディスク・ドライブ３４０、フレキシブルディスク・ドライブ３５０、及びＣＤ−ＲＯＭドライブ３６０を備えるコンピュータ２０により実現される。
ＣＰＵ３００は、ＲＯＭ３１０及びＲＡＭ３２０に格納されたプログラムに基づいて動作し、各部の制御を行う。ＲＯＭ３１０は、コンピュータ２０の起動時にＣＰＵ３００が実行するブートプログラムや、コンピュータ２０のハードウェアに依存するプログラム等を格納する。ＲＡＭ３２０は、ＣＰＵ３００が実行するプログラム及びＣＰＵ３００が使用するデータ等を格納する。通信インターフェイス３３０は、通信ネットワークを介して他の装置と通信する。ハードディスク・ドライブ３４０は、コンピュータ２０が使用するプログラム及びデータを格納し、ＲＡＭ３２０を介してＣＰＵ３００に供給する。フレキシブルディスク・ドライブ３５０は、フレキシブルディスク３９０からプログラム又はデータを読み取り、ＲＡＭ３２０に提供する。ＣＤ−ＲＯＭドライブ３６０は、ＣＤ−ＲＯＭ３９５からプログラム又はデータを読み取り、ＲＡＭ３２０に提供する。
ＲＡＭ３２０を介してＣＰＵ３００に提供されるプログラムは、フレキシブルディスク３９０、ＣＤ−ＲＯＭ３９５、又はＩＣカード等の記録媒体に格納されて利用者によって提供される。プログラムは、記録媒体から読み出され、ＲＡＭ３２０を介してコンピュータ２０にインストールされ、コンピュータ２０において実行される。
コンピュータ２０にインストールされて実行され、コンピュータ２０を試験エミュレート装置１９０として機能させるプログラムモジュールは、ＤＵＴシミュレートモジュールと、サイト制御エミュレートモジュールと、バススイッチエミュレートモジュールと、同期モジュールエミュレートモジュールと、同期接続モジュールエミュレートモジュールと、試験モジュールエミュレートモジュールと、スケジュール制御モジュールと、タイミング整列モジュールと、スケジュールモジュールと、ＤＵＴ接続モジュールとを含む。これらのプログラム又はモジュールは、コンピュータ２０を、ＤＵＴシミュレート部２００、サイト制御エミュレート部２３０、バススイッチエミュレート部２４０、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、スケジュール制御部２７５、タイミング整列部２７６、スケジュール部２７７、及びＤＵＴ接続部２８０としてそれぞれ機能させる。
以上に示したプログラム又はモジュールは、外部の記録媒体に格納されてもよい。記録媒体としては、フレキシブルディスク３９０、ＣＤ−ＲＯＭ３９５の他に、ＤＶＤやＰＤ等の光学記録媒体、ＭＤ等の光磁気記録媒体、テープ媒体、ＩＣカード等の半導体メモリ等を用いることができる。また、専用通信ネットワークやインターネットに接続されたサーバシステムに設けたハードディスク又はＲＡＭ等の記憶装置を記録媒体として使用し、通信ネットワークを介して外部のネットワークからプログラムをコンピュータ２０に提供してもよい。
図４は、本発明の実施形態に係る試験モジュールエミュレート部２７０の機能構成を示す。図４において、試験モジュールエミュレート部２７０は、当該試験モジュールエミュレート部２７０に対応する試験モジュールエミュレートプログラム又は試験モジュールエミュレートモジュールをコンピュータ２０で動作させることにより実現される。
試験モジュールエミュレート部２７０は、試験モジュール１７０がサイト制御装置１３０からバススイッチ１４０を介して受信する複数のコマンドのそれぞれに対応して設けられた複数のハードウェアエミュレート関数と、試験モジュールエミュレート部２７０に各種のタイミングを通知する目的で呼び出される制御関数とを有し、バススイッチエミュレート部２４０及びスケジュール制御部２７５からこれらの関数に対する呼び出しを受けて動作する。ここで、制御関数は、スケジュール制御部２７５が、試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるため、及び、割込み収集タイミングの直前に試験モジュールエミュレート部２７０が試験信号を生成したサイクル時間において擬似的に発生した割込みをサイト制御エミュレート部２３０に対して通知させるため等に用いられる。
試験モジュールエミュレート部２７０は、試験モジュールＩＦエミュレート部４００（試験モジュールインターフェイスエミュレート部）と、パターン発生器エミュレート部４３０と、波形整形器エミュレート部４４０と、ピン制御エミュレート部４５０と、パラメータ測定エミュレート部４６０とを含む。
試験モジュールＩＦエミュレート部４００は、バススイッチエミュレート部２４０からハードウェアエミュレート関数の呼び出しを受けた場合、及びスケジュール制御部２７５から制御関数の呼び出しを受けた場合に起動され、これらの関数呼び出しに対応する試験モジュールエミュレート部２７０の動作を制御する。試験モジュールＩＦエミュレート部４００は、マシンワードＤＢ４２０と、制御関数処理部４１０とを含む。
マシンワードＤＢ４２０は、試験モジュール１７０に設けられた記憶領域に格納される記憶領域をエミュレートし、ハードウェアエミュレート関数の呼び出しによりサイト制御エミュレート部２３０からバススイッチエミュレート部２４０を介してコマンドを擬似的に受け取った場合に、当該コマンドに対応してマシンワードＤＢ４２０内の記憶領域をアクセスする。
より具体的には、本実施形態に係る試験モジュールＩＦエミュレート部４００は、読出しアクセスや書込みアクセス等の複数のコマンドに対応する試験モジュールエミュレート部２７０の動作をそれぞれエミュレートする複数のハードウェアエミュレート関数を実装する。バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０から読出しアクセスを受け取ると、試験モジュールＩＦエミュレート部４００は、当該読出しアクセスの対象となる記憶領域に対応するマシンワードＤＢ４２０内のデータをバススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０に返信する。また、書込みアクセスを受け取ると、マシンワードＤＢ４２０は、当該書込みアクセスの対象となる記憶領域に対応するマシンワードＤＢ４２０内の記憶領域に、書込み対象のデータを格納する。例えば、マシンワードＤＢ４２０は、バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０から試験プログラム又は試験データの書込みアクセスを受け取ると、当該書込みアクセスに対応するマシンワードＤＢ４２０内の記憶領域にこれらの試験プログラム又は試験データを格納する。
制御関数処理部４１０は、スケジュール制御部２７５から制御関数の呼び出しを受けた場合に、当該制御関数に対応してパターン発生器エミュレート部４３０、波形整形器エミュレート部４４０、ピン制御エミュレート部４５０、及びパラメータ測定エミュレート部４６０を動作させ、当該制御関数の指示に対応する試験モジュール１７０の動作をエミュレートする。より具体的には、スケジュール制御部２７５が制御関数を用いて試験信号生成タイミングに対応するサイクル時間における試験信号の生成を指示すると、制御関数処理部４１０は、マシンワードＤＢ４２０に格納された試験プログラム及び試験データのうち、当該サイクル時間中に試験モジュールエミュレート部２７０が処理すべきプログラム部分及びデータ部分を読み出し、これらのプログラム部分及びデータ部分に対応する処理をパターン発生器エミュレート部４３０、波形整形器エミュレート部４４０、ピン制御エミュレート部４５０、及びパラメータ測定エミュレート部４６０に行なわせる。
パターン発生器エミュレート部４３０は、試験モジュール１７０が有するパターン発生器をエミュレートする。すなわち、パターン発生器エミュレート部４３０は、マシンワードＤＢ４２０に格納された試験プログラム及び試験データを、例えば関数呼び出しにより制御関数処理部４１０から受信し格納する。そして、あるサイクル時間について試験信号を生成すべきことを示す指示を、スケジュール制御部２７５から制御関数処理部４１０を介して例えば関数呼び出しにより受け取り、当該サイクル時間中に発生すべき試験信号を擬似的に生成する。
また、パターン発生器エミュレート部４３０は、ＤＵＴシミュレート部２００が試験信号に基づいて動作した結果擬似的に出力する結果信号をＤＵＴ接続部２８０及び波形整形器エミュレート部４４０を介して取得し、期待値との比較を行なう。
波形整形器エミュレート部４４０は、試験モジュール１７０が有する波形整形器をエミュレートする。すなわち、波形整形器エミュレート部４４０は、パターン発生器エミュレート部４３０から試験信号を受けて、試験信号の波形を擬似的に整形し、ＤＵＴ接続部２８０へ出力する。
ピン制御エミュレート部４５０は、試験モジュール１７０が有するピン制御部をエミュレートする。すなわち、ピン制御エミュレート部４５０は、試験プログラムに基づいて、波形整形器エミュレート部４４０及び／又はパラメータ測定エミュレート部４６０が試験信号を擬似的に出力する各端子に、動作電圧等のパラメータを設定する。
パラメータ測定エミュレート部４６０は、試験モジュール１７０が有するパラメータ測定部をエミュレートする。すなわち例えば、パラメータ測定エミュレート部４６０は、関数呼び出しにより直流試験（ＤＣパラメトリック試験）の指示を、スケジュール制御部２７５から制御関数処理部４１０を介して受け取り、直流試験において当該サイクル時間中に発生すべき試験信号を擬似的に生成する。また、パラメータ測定エミュレート部４６０は、ＤＵＴシミュレート部２００が直流試験において試験信号に基づいて動作した結果擬似的に出力する結果信号を取得する。
また、制御関数処理部４１０は、試験信号生成タイミングに対応するサイクル時間における試験信号を試験モジュールエミュレート部２７０が生成した場合、当該試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期モジュールエミュレート部２５０に通知する。
以上において、制御関数処理部４１０は、試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクルが終了するサイクル終了タイミングをスケジュール制御部２７５を介して同期モジュールエミュレート部２５０に通知してもよい。これにより、制御関数処理部４１０は、同期モジュールエミュレート部２５０に、当該サイクル終了タイミングに基づき試験モジュールエミュレート部２７０が次に試験信号を擬似的に生成すべき試験信号生成タイミングを更に生成させることができる。
また、制御関数処理部４１０は、スケジュール制御部２７５から割り込み発生の指示を受けた場合、例えば関数呼び出しにより割込み発生の指示をパターン発生器エミュレート部４３０、波形整形器エミュレート部４４０、及びピン制御エミュレート部４５０に送信する。割込み発生の指示を受けたパターン発生器エミュレート部４３０、波形整形器エミュレート部４４０、及びピン制御エミュレート部４５０は、試験モジュールエミュレート部２７０が試験信号を生成した各サイクル時間のうち、当該割込み収集タイミングの直前のサイクル時間において擬似的に発生した割込みを制御関数処理部４１０に通知する。制御関数処理部４１０は、割込みの通知を受けると、例えばバススイッチエミュレート部２４０が有する割込み通知用のハードウェアエミュレート関数を呼び出すことにより、バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０に割込みを通知する。
図５は、本発明の実施形態に係るクラス階層構造５００の一例を示す。本実施形態において、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０等のモジュールエミュレート部を実現するモジュールエミュレートプログラムは、試験装置１０のオープンアーキテクチャを擬似的に実現するために定められたモジュールエミュレートプログラムの枠組みであるクラス関数を用いて作成される。
シミュレーションコンポーネントクラス５１０は、モジュールエミュレートプログラムが備えるべき複数のメソッド関数のパラメータや戻り値等の呼び出し規則を、仮想メソッド関数により定義するクラスである。シミュレーションコンポーネントクラス５１０は、複数の仮想ハードウェアエミュレート関数５１２と、複数の仮想制御関数５１４とを有する。
ここで、ｒｅａｄ（）は、サイト制御エミュレート部２３０が読出アクセスコマンドを擬似的に発行する場合に呼び出される、読出アクセスに対応するモジュールの動作をエミュレートするメソッド関数である。ｗｒｉｔｅ（）は、サイト制御エミュレート部２３０が書込アクセスコマンドを擬似的に発行する場合に呼び出される、書込アクセスに対応するモジュールの動作をエミュレートするメソッド関数である。ｓｅｔＢａｓｅＡｄｄｒｅｓｓ（）は、試験モジュール１７０が有する記憶領域のベースアドレスを設定する際にサイト制御装置１３０が発行するベースアドレス設定コマンドを、サイト制御エミュレート部２３０が擬似的に発行する場合に呼び出されるメソッド関数である。
ｒｅｇｉｓｔｅｒＥｖｅｎｔ（）は、同期モジュールエミュレート部２５０からの通知を受けた同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、及びＤＵＴ接続部２８０が、割込み収集タイミング、変化タイミング、及び結果信号取得タイミング等をタイミング整列部２７６に通知し登録する場合に呼び出されるメソッド関数である。ｈａｎｄｌｅＥｖｅｎｔ（）は、試験信号生成タイミング、割込み収集タイミング、変化タイミング、及び結果信号取得タイミングに到達したとき等に、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、及びＤＵＴ接続部２８０にこれらのタイミングに対応する処理を行なわせるためにスケジュール制御部２７５により呼び出されるメソッド関数である。ｒａｉｓｅＥｖｅｎｔ（）は、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、及びＤＵＴ接続部２８０が、タイミングに関わりなく非同期に処理すべきイベントをスケジュール制御部２７５に通知する場合に呼び出されるメソッド関数である。
Ａ社モジュールクラス５２０及びＢ社モジュールクラス５３０は、シミュレーションコンポーネントクラス５１０から派生されたクラスであり、例えばモジュールを提供する製造業者等により提供される、当該製造業者のモジュールが共通して備える共通機能をエミュレートするモジュールエミュレートプログラムである。Ａ社モジュールクラス５２０及びＢ社モジュールクラス５３０は、それぞれ複数の実ハードウェアエミュレート関数５２２と、複数の実制御関数５２４とを有する。複数の実ハードウェアエミュレート関数５２２及び複数の実制御関数５２４のそれぞれは、複数の仮想ハードウェアエミュレート関数５１２及び複数の仮想制御関数５１４のそれぞれに対応して記述され、仮想メソッド関数に対応する実メソッド関数（非仮想メソッド関数）の処理内容を記述したモジュールエミュレートプログラムである。
Ａ社モジュールクラス５２０及びＢ社モジュールクラス５３０は、更に派生したクラスを有してよい。例えば、図５において、Ｂ社モジュールクラス５３０は、デジタル試験モジュールクラス５４０、電源モジュールクラス５６０、及び同期モジュールクラス５９０に更に派生される。
デジタル試験モジュールクラス５４０は、ＤＵＴ１００の機能試験を行なう試験モジュール１７０をエミュレートする試験モジュールエミュレートプログラムのクラスである。デジタル試験モジュールクラス５４０は、２５０ＭＨｚで動作してＤＵＴ１００の機能試験を行なう試験モジュール１７０をエミュレートする２５０ＭＨｚデジタル試験モジュールクラス５５０に更に派生される。電源モジュールクラス５６０は、ＤＵＴ１００に電源を供給するモジュールをエミュレートするモジュールエミュレートプログラムのクラスである。電源モジュールクラス５６０は、ＤＵＴ１００に高電圧電源を供給するモジュールをエミュレートする高電圧電源モジュールクラス５７０と、ＤＵＴ１００に低電圧電源を供給するモジュールをエミュレートする低電圧電源モジュールクラス５８０とに更に派生される。同期モジュールクラス５９０は、同期モジュール１５０をエミュレートするモジュールエミュレートプログラムのクラスである。
２５０ＭＨｚデジタル試験モジュールクラス５５０、高電圧電源モジュールクラス５７０、低電圧電源モジュールクラス５８０、及び同期モジュールクラス５９０のそれぞれは、Ｂ社モジュールクラス５３０に含まれるｈａｎｄｌｅＥｖｅｎｔ（）を置き換えて（オーバーライドして）使用される、それぞれのモジュールの独自機能をエミュレートする実メソッド関数ｈａｎｄｌｅＥｖｅｎｔ（）を含む。
試験エミュレート装置１９０が有する同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び１又は複数の試験モジュールエミュレート部２７０等は、クラス階層構造５００に含まれるモジュールエミュレートプログラムのクラスのいずれかのインスタンスとして実現されてよい。
以上に示した通り、試験エミュレート装置１９０が有する同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０等のモジュールエミュレート部は、例えばクラス階層構造５００に含まれるいずれかのクラスに対応するモジュールエミュレートプログラムにより実現される。試験エミュレート装置１９０の使用者は、例えば試験装置１０の実機に実装されるべきモジュールの組合せに対応するクラスの組合せからモジュールエミュレートプログラムのインスタンスを生成することにより、試験装置１０の実機と略同一の試験環境を試験エミュレート装置１９０上で構築することができる。また、新たなモジュールに対応する新たなクラスを作成する場合においても、新たなクラスをいずれかのクラスの派生クラスとして作成することにより、モジュールエミュレートプログラムの作成工数を低減することができる。
図６は、本発明の実施形態に係る試験エミュレート装置１９０の試験信号生成処理フローを、一の試験モジュールエミュレート部２７０により試験を行なう場合について示す。
試験プログラム及び試験データが同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び１又は複数の試験モジュールエミュレート部２７０に格納された状態で、サイト制御エミュレート部２３０が試験の開始を同期モジュールエミュレート部２５０に指示すると、試験エミュレート装置１９０は以下に示す手順で擬似的に試験を行なう。
まず、スケジュール制御部２７５（図中ＳＣＨＥＤ）中のスケジュール部２７７は、タイミング整列部２７６が試験信号生成タイミングを出力した場合に、同期モジュールエミュレート部２５０（図中ＳＹＮＣ）のｈａｎｄｌｅＥｖｅｎｔ（）関数を呼び出し、試験信号生成タイミングに至ったことを通知する（Ｓ６００）。これにより、スケジュール制御部２７５は、同期モジュールエミュレート部２５０を介して、試験信号生成タイミングに対応する試験モジュールエミュレート部２７０に、当該試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させる。ここで、スケジュール制御部２７５は、対応する試験モジュールエミュレート部２７０の試験信号生成タイミングに至ったことを示すイベント識別子をｈａｎｄｌｅＥｖｅｎｔ（）関数のパラメータに含めることにより、試験信号生成タイミングを同期モジュールエミュレート部２５０に通知してもよい。
次に、同期モジュールエミュレート部２５０は、当該試験信号生成タイミングにおいて試験信号を擬似的に生成すべき試験モジュールエミュレート部２７０（図中ＴＭ）に対して、サイクル時間の処理を開始し試験信号を生成させる指示であるサイクル開始を通知する（Ｓ６０５）。ここで、同期モジュールエミュレート部２５０は、サイクル開始を指示するイベント識別子をｒａｉｓｅＥｖｅｎｔ（）関数のパラメータに含めてスケジュール制御部２７５を呼び出すことにより、タイミング整列部２７６が時刻順に整列したタイミングと非同期にスケジュール制御部２７５を介して試験モジュールエミュレート部２７０にサイクル開始を通知してよい。
次に、試験モジュールエミュレート部２７０は、サイクル開始の通知を受けて、対応するサイクル時間における試験信号を擬似的に発生する（Ｓ６１０）。すなわち、Ｓ６００においてスケジュール制御部２７５が試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に発生させるべく同期モジュールエミュレート部２５０に試験信号生成タイミングを通知し、この通知を受けた同期モジュールエミュレート部２５０がスケジュール制御部２７５を介して試験モジュールエミュレート部２７０にサイクル開始を通知することにより、試験モジュールエミュレート部２７０は、当該サイクル時間における試験信号を擬似的に発生する。ここで、試験モジュールエミュレート部２７０は、当該サイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを擬似的に生成する。
次に、ＤＵＴ接続部２８０（図中ＬＢ）は、試験モジュールエミュレート部２７０から試験信号の変化タイミングを受けて、変化タイミングをタイミング整列部２７６に通知し登録する（Ｓ６１５）。
次に、試験モジュールエミュレート部２７０は、当該サイクルを終了するタイミングを同期モジュールエミュレート部２５０に通知する（Ｓ６２０）。ここで、試験モジュールエミュレート部２７０は、試験プログラム及び試験データによる指定に基づき、各サイクル時間を動的に変更しつつパターン発生器エミュレート部４３０により試験信号を生成する。このため、試験モジュールエミュレート部２７０における試験モジュールＩＦエミュレート部４００内の制御関数処理部４１０は、各サイクルの終了するタイミングをパターン発生器エミュレート部４３０から取得して同期モジュールエミュレート部２５０に通知し、同期モジュールエミュレート部２５０が次の試験信号生成タイミングを正しく生成できるようにする。
次に、同期モジュールエミュレート部２５０は、Ｓ６２０において試験モジュールエミュレート部２７０から通知されたサイクル終了タイミングに基づいて、試験モジュールエミュレート部２７０が次のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成し、タイミング整列部２７６に通知して登録する（Ｓ６２５）。また、同期モジュールエミュレート部２５０は、試験モジュールエミュレート部２７０から試験結果を収集する試験結果収集タイミング、試験モジュールエミュレート部２７０の当該サイクル時間を終了させるサイクル終了処理タイミング、当該サイクル時間における試験信号の生成において試験モジュールエミュレート部２７０が擬似的に発生した割込みを収集する割込み収集タイミングを更に生成し、タイミング整列部２７６に通知して登録する（Ｓ６２５）。ここで、同期モジュールエミュレート部２５０は、スケジュール制御部２７５のｒｅｇｉｓｔｅｒＥｖｅｎｔ（）関数を呼び出すことにより、これらのタイミングをタイミング整列部２７６に登録してよい。
なお、同期モジュールエミュレート部２５０は、試験モジュールエミュレート部２７０から受信したサイクル終了タイミングと略同一のタイミングを、当該試験モジュールエミュレート部２７０における次の試験信号生成タイミング、試験結果収集タイミング、サイクル終了処理タイミング、及び割り込み収集タイミングとして生成してもよい。
次に、タイミング整列部２７６がＳ６１５において登録された変化タイミングを出力すると、スケジュール部２７７は、当該変化タイミングに試験信号を擬似的に変化させるべく、ＤＵＴ接続部２８０に変化タイミングが到達したことを通知する（Ｓ６３０）。
次に、スケジュール部２７７から変化タイミングの通知を受けると、ＤＵＴ接続部２８０は、当該変化タイミングに試験信号を擬似的に変化させることにより試験信号を生成し、ＤＵＴシミュレート部２００に供給する（Ｓ６３５）。ＤＵＴシミュレート部２００は、ＤＵＴ接続部２８０から取得した試験信号に基づきＤＵＴ１００の動作をシミュレートする。そして、ＤＵＴシミュレート部２００は、ＤＵＴ１００が試験信号に基づいて動作した結果出力する結果信号を擬似的に生成し、ＤＵＴ接続部２８０を介して試験モジュールエミュレート部２７０に供給する。試験モジュールエミュレート部２７０は、結果信号と期待値とを比較し、比較結果を得る。
次に、タイミング整列部２７６がＳ６２５において登録された試験結果収集タイミングを出力すると、スケジュール部２７７は、ＤＵＴシミュレート部２００から試験モジュールエミュレート部２７０に供給された結果信号に基づく結果の良否を収集するべく、試験モジュールエミュレート部２７０に試験結果収集タイミングが到達したことを通知する（Ｓ６４０）。試験結果収集タイミングの通知を受けると、試験モジュールエミュレート部２７０は、当該サイクル時間における結果信号と期待値との比較結果を、同期接続モジュールエミュレート部２６０を介して同期モジュールエミュレート部２５０に通知する。同期モジュールエミュレート部２５０は、各試験モジュールエミュレート部２７０から収集した比較結果に基づき試験結果の良否（パス又はフェイル）を判定し、試験結果の良否を各試験モジュールエミュレート部２７０に配信することにより通知する（Ｓ６４５）。複数の試験モジュールエミュレート部２７０に供給される試験プログラム及び試験データは、この試験結果の良否に基づいて、当該サイクル時間以降に行なう試験のシーケンスを変更するように記述されていてもよい。
次に、タイミング整列部２７６がＳ６２５において登録されたサイクル終了処理タイミングを出力すると、スケジュール部２７７は、試験モジュールエミュレート部２７０にサイクルを終了させるタイミングが到達したことを通知する（Ｓ６５０）。
次に、タイミング整列部２７６がＳ６２５において登録された割込み収集タイミングを出力すると、スケジュール部２７７は、試験モジュールエミュレート部２７０に割込み収集タイミングが到達したことを通知する（Ｓ６５５）。割込み収集タイミングの通知を受けると、試験モジュールエミュレート部２７０は、当該割込み収集タイミングの直前に試験モジュールエミュレート部２７０が試験信号を生成したサイクル時間において擬似的に発生した割込みを、バススイッチエミュレート部２４０を介してサイト制御エミュレート部２３０に対して擬似的に通知する。
試験エミュレート装置１９０は、上記のＳ６００からＳ６５５に示した処理を、試験が終了するまで繰り返す（Ｓ６６０）。
なお、複数の試験モジュールエミュレート部２７０により試験を行なう場合、スケジュール制御部２７５は、これらの複数の試験モジュールエミュレート部２７０のそれぞれが動作すべきタイミングを時刻順に整列し、スケジュールする。このため、複数の試験モジュールエミュレート部２７０についてのＳ６００、Ｓ６３０、Ｓ６４０、Ｓ６５０、及びＳ６５５は、時刻順に整列された順序で実行される。
図７は、本発明の実施形態に係る試験エミュレート装置１９０により擬似的に生成される試験信号の一例を示す。本図において、試験エミュレート装置１９０は、試験モジュールエミュレート部２７０として、試験モジュールＡをエミュレートする試験モジュールエミュレート部２７０ａと、試験モジュールＢをエミュレートする試験モジュールエミュレート部２７０ｂとを含む。
まず、時刻ｔ１以前において、タイミング整列部２７６は、試験モジュールエミュレート部２７０ａの試験信号生成タイミングｔ１と、試験モジュールエミュレート部２７０ｂの試験信号生成タイミングｔ２とを登録しており、これらを時刻順に整列して出力する結果、まず試験信号生成タイミングｔ１を出力する。これを受けて、スケジュール部２７７は、時刻をｔ１に進めると共に、試験信号生成タイミングｔ１に至ったことを同期モジュールエミュレート部２５０に通知する。
試験信号生成タイミングｔ１の通知を受けると、同期モジュールエミュレート部２５０は、同期接続モジュールエミュレート部２６０及び試験モジュールエミュレート部２７０を介して、試験信号生成タイミングｔ１に対応する試験モジュールエミュレート部２７０ａにサイクル開始を通知する。これを受けて、試験モジュールエミュレート部２７０ａは、図中サイクル１と示したサイクル時間における試験信号を擬似的に発生する。ここで、試験モジュールエミュレート部２７０ａは、当該サイクル時間中の変化タイミングｔ４において試験信号がＨレベルに変化することを、ＤＵＴ接続部２８０に通知する。これを受けて、ＤＵＴ接続部２８０は、変化タイミングｔ４をタイミング整列部２７６に登録する。
次に、試験モジュールエミュレート部２７０ａは、サイクル１における試験信号の生成を終えると、サイクル１のサイクル終了タイミングｔ６を同期モジュールエミュレート部２５０に通知する。これを受けて、同期モジュールエミュレート部２５０は、サイクル終了タイミングｔ６に基づき、次の試験信号生成タイミングｔ６、試験結果収集タイミングｔ６−Δ、サイクル終了処理タイミングｔ６−Δ、及び割り込み収集タイミングｔ６−Δを生成し、タイミング整列部２７６に登録する。ここで、ｔ６−Δは、次の試験信号生成タイミングｔ６の微小時間前であることを示す。
次に、タイミング整列部２７６は、登録されたタイミングを時刻順に整列し、試験信号生成タイミングｔ２を出力する。これを受けて、スケジュール部２７７は、時刻をｔ２に進めると共に、試験信号生成タイミングｔ２に至ったことを同期モジュールエミュレート部２５０に通知する。
試験信号生成タイミングｔ２の通知を受けると、同期モジュールエミュレート部２５０は、試験信号生成タイミングｔ２に対応する試験モジュールエミュレート部２７０ｂに、スケジュール制御部２７５を介してサイクル開始を通知する。これを受けて、試験モジュールエミュレート部２７０ｂは、試験モジュールエミュレート部２７０ｂのサイクル１における試験信号を擬似的に発生する。この結果、試験モジュールエミュレート部２７０ｂは、試験信号の変化タイミングｔ３及びｔ５を生成し、ＤＵＴ接続部２８０はこれらの変化タイミングをタイミング整列部２７６に登録する。
次に、試験モジュールエミュレート部２７０ｂは、サイクル１における試験信号の生成を終えると、サイクル１のサイクル終了タイミングｔ７を同期モジュールエミュレート部２５０に通知する。これを受けて、同期モジュールエミュレート部２５０は、サイクル終了タイミングｔ７に基づき、次の試験信号生成タイミングｔ７、試験結果収集タイミングｔ７−Δ、サイクル終了処理タイミングｔ７−Δ、及び割り込み収集タイミングｔ７−Δを生成し、タイミング整列部２７６に登録する。
次に、タイミング整列部２７６は、登録されたタイミングを時刻順に整列し、変化タイミングｔ３、ｔ４、ｔ５を順次出力する。これらの変化タイミングのそれぞれを受けて、スケジュール部２７７は、変化タイミングをＤＵＴ接続部２８０に通知する。この結果、ＤＵＴ接続部２８０は、当該変化タイミングに試験信号を擬似的に変化させ、ＤＵＴシミュレート部２００に供給する。
次に、タイミング整列部２７６は、試験結果収集タイミングｔ６−Δを出力する。これを受けて、スケジュール部２７７は、時刻をｔ６−Δに進めると共に、試験モジュールエミュレート部２７０ａに試験結果収集タイミングｔ６−Δを通知する。この結果、試験モジュールエミュレート部２７０ａ及び同期モジュールエミュレート部２５０の間で試験結果の収集及び配信を行なう。
次に、タイミング整列部２７６は、サイクル終了処理タイミングｔ６−Δを出力する。これを受けて、スケジュール部２７７は、試験モジュールエミュレート部２７０ａにサイクル１の終了を通知する。
次に、タイミング整列部２７６は、割込み収集タイミングｔ６−Δを出力する。これを受けて、スケジュール部２７７は、試験モジュールエミュレート部２７０ａに割込み収集タイミングｔ６−Δを通知する。この結果、試験モジュールエミュレート部２７０ａは、サイクル１において擬似的に発生した割込みをサイト制御エミュレート部２３０に対して通知する。
次に、タイミング整列部２７６は、試験信号生成タイミングｔ６を出力する。これを受けて、スケジュール部２７７は、時刻をｔ６に進めると共に、試験信号生成タイミングｔ６に至ったことを同期モジュールエミュレート部２５０に通知する。以降試験エミュレート装置１９０は、時刻ｔ１と同様にして、変化タイミングｔ８、結果信号を取得すべきタイミングを示す結果信号取得タイミングｔ１１、次の試験信号生成タイミングｔ１２、試験結果収集タイミングｔ１２−Δ、サイクル終了処理タイミングｔ１２−Δ、及び割込み収集タイミングｔ１２の生成及びタイミング整列部２７６への登録を行なう。
次に、タイミング整列部２７６は、登録されたタイミングを時刻順に整列し、試験信号生成タイミングｔ７を出力する。これを受けて、スケジュール部２７７は、時刻をｔ７に進めると共に、試験信号生成タイミングｔ７に至ったことを同期モジュールエミュレート部２５０に通知する。以降試験エミュレート装置１９０は、時刻ｔ２と同様にして、変化タイミングｔ９及びｔ１０、次の試験信号生成タイミングｔ１３、試験結果収集タイミングｔ１３−Δ、サイクル終了処理タイミングｔ１３−Δ、及び割込み収集タイミングｔ１３の生成及びタイミング整列部２７６への登録を行なう。
以上に示した通り、本実施形態に係る試験エミュレート装置１９０によれば、試験信号生成タイミング、試験信号の変化タイミング、試験結果収集タイミング、結果信号取得タイミング、及び割込み収集タイミング等の各種のタイミングをスケジュール制御部２７５により時刻順に整列してスケジューリングする。このため、試験エミュレート装置１９０は、異なるサイクル周期に基づく複数の試験モジュール１７０が実装された場合における試験装置１０の動作を適切にエミュレートすることができる。
なお、本実施形態において、同期接続モジュールエミュレート部２６０は、試験モジュール１７０からサイクル終了タイミングを受けた場合に、試験結果収集タイミング、サイクル終了処理タイミング、及び割込み収集タイミングをタイミング整列部２７６に登録するが、これに代えて、以下の方法を用いてもよい。
図６のＳ６２５において、同期モジュールエミュレート部２５０は、サイクル終了タイミングに基づいて、試験モジュールエミュレート部２７０が次のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成し、タイミング整列部２７６に通知して登録する。一方、この時点において、同期モジュールエミュレート部２５０は、試験結果収集タイミング、サイクル終了処理タイミング、及び割り込み収集タイミングを生成せず、タイミング整列部２７６に対して登録しない。
この結果、試験エミュレート装置１９０は、図６のＳ６３０及びＳ６３５の処理の後、Ｓ６４０、Ｓ６５０、及びＳ６５５を行なうことなく、Ｓ６００に処理を進める。そして、Ｓ６００において次のサイクル時間に対応する試験信号生成タイミングをタイミング整列部２７６が出力した場合に、スケジュール部２７７は、当該試験信号生成タイミングに至ったことを同期モジュールエミュレート部２５０に通知する。これを受けて、同期モジュールエミュレート部２５０は、次のサイクル時間の試験信号生成の前に、試験結果の収集、サイクル終了の通知、及び割込みの収集を、当該試験信号生成タイミングに対応する試験モジュールエミュレート部２７０に指示する。
以上の処理により、スケジュール制御部２７５は、次のサイクル時間の試験信号生成の前に、Ｓ６４０、Ｓ６４５、Ｓ６５０、及びＳ６５５に示した処理を同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０等に行わせる。より具体的には、スケジュール制御部２７５は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、試験モジュールエミュレート部２７０に供給された結果信号に基づく試験結果の良否を同期モジュールエミュレート部２５０及び同期接続モジュールエミュレート部２６０により収集及び配信させ、当該試験モジュールエミュレート部２７０が擬似的に発生した割込みをサイト制御エミュレート部２３０に対して通知させる。
以上発明の実施の形態を説明したが、本出願に係る発明の技術的範囲は上記の実施の形態に限定されるものではない。上記実施の形態に種々の変更を加えて、請求の範囲に記載の発明を実施することができる。そのような発明が本出願に係る発明の技術的範囲に属することもまた、請求の範囲の記載から明らかである。
例えば、以上に示した試験装置１０は、同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０等によるＤＵＴ１００の実試験と、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、及びＤＵＴシミュレート部２００等によるＤＵＴ１００の擬似試験とを、同一の試験制御プログラム及び／又は試験プログラムにより実行可能な試験装置１０の使用者に提供すると共に、使用者により実試験及び擬似試験を切替可能としてもよい。
すなわち、サイト制御装置１３０は、ＤＵＴ１００の実試験又は擬似試験のいずれを行うかの指示を、例えば試験開始コマンドのオプション等により入力する。そして、システム制御装置１１０又はサイト制御装置１３０は、ＤＵＴ１００の実試験を行う指示を受けた場合に、ＤＵＴ１００の試験を行う試験プログラムをバススイッチ１４０を介して１又は複数の試験モジュール１７０に供給して、これらの試験モジュール１７０によりＤＵＴ１００の試験を行わせる。一方、サイト制御装置１３０は、ＤＵＴ１００の擬似試験を行う指示を受けた場合に、試験プログラムを試験エミュレート装置１９０又はサイト制御装置１３０等の上でソフトウェアにより実現される試験モジュールエミュレート部２７０に供給して、試験モジュールエミュレート部２７０等によりＤＵＴ１００の試験をシミュレートさせる。
以上において、サイト制御装置１３０は、当該制御装置と試験モジュール１７０との間の通信処理を行う通信ソフトウェア（通信ライブラリ）を実行し、当該通信ソフトウェアを通じて実試験環境及び擬似試験環境をアクセス可能としてもよい。この場合、サイト制御装置１３０上で実行される試験制御プログラムは、当該通信ソフトウェアにより提供される同一のアクセス関数（ｒｅａｄ／ｗｒｉｔｅ関数等）を用いて、同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０等をアクセスして実試験を行い、また、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０等をアクセスして擬似試験を行うことができる。
ここで、上記の通信ソフトウェアは、サイト制御装置１３０と協働して、当該通信ソフトウェアを初期化する呼び出しに含まれる、実試験環境及び擬似試験環境を選択する指示に基づいて、試験プログラムを試験モジュール１７０等及び試験モジュールエミュレート部２７０等のいずれに供給するかを判断してもよい。このような実装の一例を、補足説明Ｃ．２．４．３に示す。
また、例えば、以上に示した試験モジュールエミュレート部２７０は、次に示す構成を採ってもよい。まず、各試験モジュールエミュレート部２７０は、スケジュール制御部２７５内のスケジュール部２７７によりスケジューリングされた試験信号生成タイミングの通知を、関数呼び出しにより受ける。そして、各試験モジュールエミュレート部２７０は、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッド（ｓｅｔメソッド）を複数回呼び出すことにより出力する。そして、試験モジュールエミュレート部２７０は、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、出力チャネルオブジェクトの終了メソッド（ｅｎｄメソッド）を呼び出すことによりスケジュール部２７７等に通知する。このような実装の一例を、補足説明Ｂ．３．３等に示す。
そして、スケジュール部２７７は、複数の試験モジュールエミュレート部２７０のそれぞれから通知された終了メソッドに基づいて、全ての試験モジュールエミュレート部２７０が試験信号の電圧の変化の出力を終えた期間を算出し、この期間内におけるＤＵＴ１００の動作のシミュレーションをＤＵＴシミュレート部２００に要求する。これを受けて、ＤＵＴ接続部２８０は、この期間内における試験信号を取得して、当該試験信号に基づいて被試験デバイスのこの期間内における動作をシミュレートする。
以上において、出力チャネルオブジェクトは、終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止する。これにより、既にシミュレーションを終えた期間のシミュレーション結果が不整合となるのを防ぐことができる。このような実装の一例を補足説明Ｂ．３．４等に示す。
以下に、本実施形態に係る試験装置１０及び試験エミュレート装置１９０を実現するための各種の具体例・仕様例を補足説明する。
（補足説明Ａ）ソフトウェアアーキテクチャの具体例
図８は、本発明の一実施形態によるソフトウェアアーキテクチャ２２００を示している。ソフトウェアアーキテクチャ２２００は、関連するハードウェアシステムの要素１１０と、１３０と、１５０、１６０及び１７０とに対応して、システムコントローラ２２００と、少なくとも一つのサイトコントローラ２２４０と、少なくとも一つのモジュール２２６０とのための要素を有している分散オペレーティングシステムを表している。モジュール２２６０に加えて、アーキテクチャ２２００は、ソフトウェアでのモジュールエミュレーションのための対応するＳＷ（ソフトウェア）モジュールエミュレーション２２８０を含んでいる。
例示的な選択として、このプラットフォーム用の開発環境はマイクロソフトのウィンドウズに基づいていてもよい。このアーキテクチャの使用は、プログラムおよびサポートの移植性において副次的な利点（例えばフィールドサービスエンジニアは高度な診断を行うためのテスタオペレーティングシステムを動作させるラップトップコンピュータを接続することができるであろう）を有している。しかし、大規模な計算集約型の動作（テストパターンのコンパイル等）については、関連するソフトウェアは、独立して動作して分散されたプラットフォームを横断してのジョブスケジューリングを可能にすることができる独立した構成要素とされ得る。したがって、バッチジョブに関連するソフトウェアツールは、複数のプラットフォームタイプ上で動作することができる。
例示的な選択として、ＡＮＳＩ／ＩＳＯ標準のＣ＋＋をソフトウェア用のネイティブ言語とすることができる。当然のことながら、サードパーティが自身の選択した代わりの言語をシステムにまとめることを可能にする、（名目上のＣ＋＋インタフェース上のレイヤを提供するための）使用可能な複数の選択肢がある。
図８は、名目上のソースによる組織化（あるいはサブシステムとしての集合的な展開）にしたがって、テスタオペレーティングシステムインタフェース２２９０、ユーザコンポーネント２２９２（例えば、テスト目的のためにユーザによって供給される）、システムコンポーネント２２９４（例えば、基本的な接続性および通信のためのソフトウェアインフラとして提供される）、モジュール開発コンポーネント２２９６（例えば、モジュールディベロッパによって提供される）、および外部コンポーネント２２９８（例えばモジュールディベロッパ以外の外部ソースによって提供される）を含む要素を陰付きで示している。
ソースベースの構成の観点から、テスタオペレーティングシステム（ＴＯＳ）インタフェース２２９０は、システムコントローラ−サイトコントローラインタフェース２２２２、フレームワーククラス２２２４、サイトコントローラ−モジュールインタフェース２２４５、フレームワーククラス２２４６、所定のモジュールレベルインタフェース２２４７、バックプレーン通信ライブラリ２２４９、シャーシスロットＩＦ（インタフェース）２２６２、ロードボードハードウェアＩＦ２２６４、バックプレーンシミュレーションＩＦ２２８３、ロードボードシミュレーションＩＦ２２８５、ＤＵＴシミュレーションＩＦ２２８７、ＤＵＴのＶｅｒｉｌｏｇモデル用のＶｅｒｉｌｏｇＰＬＩ（プログラミング言語インタフェース）２２８８、およびＤＵＴのＣ／Ｃ＋＋モデル用のＣ／Ｃ＋＋言語サポート２２８９を含んでいる。
ユーザコンポーネント２２９２は、ユーザテストプラン２２４２、ユーザテストクラス２２４３、ハードウェアロードボード２２６５、ＤＵＴ２２６６、ＤＵＴ  Ｖｅｒｉｌｏｇモデル２２９３およびＤＵＴ  Ｃ／Ｃ＋＋モデル２２９１を含んでいる。
システムコンポーネント２２９４は、システムツール２２２６、通信ライブラリ２２３０、テストクラス２２４４、バックプレーンドライバ２２５０、バススイッチ１４０を含むＨＷバックプレーン２２６１、シミュレーションフレームワーク２２８１、バックプレーンエミュレーション２２８２およびロードボードシミュレーション２２８６を含んでいる。
モデル展開コンポーネント２２９６は、モジュールコマンドインプリメンテーション２２４８、モジュールハードウェア２２６３およびモジュールエミュレーション２２８４を含んでいる。
外部コンポーネント２２９８は外部ツール２２２５を含んでいる。
図１に示したシステム制御装置１１０上で動作するソフトウェアであるシステムコントローラ２２２０は、サイトコントローラに対するインタフェース２２２２、フレームワーククラス２２２４、システムツール２２２６、外部ツール２２２５および通信ライブラリ２２３０を含んでいる。システムコントローラソフトウェアは、ユーザに対する相互作用の主要な点である。これは、本実施形態のサイトコントローラへのゲートウェイと、同一譲受人による米国出願第６０／４４９，６２２号に述べられているマルチサイト／ＤＵＴ環境におけるサイトコントローラの同期化とを提供する。ユーザアプリケーションおよびツールは、グラフィカルユーザインタフェース（ＧＵＩ）ベースかそれ以外のものであり、システムコントローラ上で動作する。システムコントローラは、テストプラン、テストパターンおよびテストパラメータファイルを含むすべてのテストプラン関連の情報の収納庫としても機能する。テストパラメータファイルは、発明の一実施形態のオブジェクト指向の環境におけるテストクラス用のパラメータ化されたデータを含んでいる。
サードパーティのディベロッパは、標準的なシステムツール２２２６に加えて（あるいはその代わりとして）ツールを提供することができる。システムコントローラ２２２０上の標準的なインタフェース２２２２は、ツールがテスタおよびテストオブジェクトにアクセスするために用いるインタフェースを有している。ツール（アプリケーション）２２２５、２２２６は、テストおよびテスタオブジェクトの相互的なバッチ制御を可能にする。このツールは、（例えばＳＥＣＳ／ＴＳＥＭ等の使用を通じて）自動化能力を提供するためのアプリケーションを含んでいる。
システムコントローラ２２２０上にある通信ライブラリ２２３０は、ユーザアプリケーションおよびテストプログラムにトランスペアレントな形でサイトコントローラ２２４０と通信するメカニズムを提供する。
インタフェース２２２２は、システムコントローラ２２２０と関連したメモリに常駐しており、システムコントローラ上で実行するフレームワークオブジェクトに対するオープンインタフェースを提供する。サイトコントローラベースのモジュールソフトウェアがパターンデータにアクセス、取得することを可能にするインタフェースが含まれる。また、アプリケーションおよびツールがテスタおよびテストオブジェクトにアクセスするために用いるインタフェース、ならびに、スクリプトエンジンを通じてテスタおよびテストコンポーネントにアクセスして操作することができる能力を提供するスクリプトインタフェースも含まれる。これにより、インタラクティブな、バッチおよびリモートアプリケーションのための共通のメカニズムがそれらの機能を行うことが可能となる。
システムコントローラ２２２０に関連しているフレームワーククラス２２２４は、これらの上述したオブジェクトと相互に作用するメカニズムを提供し、これは標準的なインタフェースのリファレンスインプリメンテーションを提供する。例えば、本実施形態のサイトコントローラ２２４０は機能テストオブジェクトを提供する。システムコントローラフレームワーククラスは、この機能テストオブジェクトのリモートシステムコントローラベースの代理として、対応する機能テストプロキシを提供してもよい。したがって、標準的な機能テストインタフェースは、システムコントローラ２２２０上のツールに対して利用可能とされる。システム、モジュール開発コンポーネントおよびインタフェースコンポーネント２２９４、２２９６および２２９０はそれぞれ、システムコントローラとサイトコントローラとの間で分散されたオペレーティングシステムであると考えてもよい。フレームワーククラスは、ホストシステムコントローラに関連するオペレーティングシステムインタフェースを実質的に提供する。これらはまた、サイトコントローラに対するゲートウェイを提供するソフトウェア要素も構成し、マルチサイト／ＤＵＴ環境におけるサイトコントローラの同期を提供する。したがってこのレイヤは、コミュニケーションレイヤを直接扱う必要なくサイトコントローラを操作し、それにアクセスするのに適している、発明の一実施形態におけるオブジェクトモデルを提供する。
図１に示したサイト制御装置１３０上で動作するソフトウェアであるサイトコントローラ２２４０は、ユーザテストプラン２２４２、ユーザテストクラス２２４３、標準テストクラス２２４４、標準インタフェース２２４５、サイトコントローラフレームワーククラス２２４６、モジュールハイレベルコマンドインタフェース（例えば所定のモジュールレベルのインタフェース）２２４７、モジュールコマンドインプリメンテーション２２４８、バックプレーン通信ライブラリ２２４９、およびバックプレーンドライバ２２５０のホストとなる。好ましくは、テストの機能の大半をサイトコントローラ２１０４／２２４０が扱い、それによってテストサイト２１１０の独立した動作が可能である。
テストプラン２２４２はユーザによって書かれる。このプランは、Ｃ＋＋のような標準的なコンピュータ言語で直接記述されてもよいし、実行可能なテストプログラムへとコンパイル可能であるＣ＋＋コードを生成するような、より高レベルのテストプログラミング言語で記述されてもよい。
このテストプランは、フレームワーククラス２２４６および／または、サイトコントローラに関連する標準あるいはユーザによって供給されるテストクラス２２４４を用いて、テストオブジェクトを作り出し、標準インタフェース２２４５を用いてハードウェアを構成し、テストプランのフローを定義する。また、テストプランの実行中に必要とされる追加的なロジックも提供する。テストプランは、いくつかの基本的なサービスをサポートし、デバッグサービス（例えばブレークポイント）等のその下にあるオブジェクトのサービスに対するインタフェースと、その下にあるフレームワークおよび標準クラスへのアクセスとを提供する。
サイトコントローラに関連するフレームワーククラス２２４６は、共通のテスト関連動作をインプリメントするクラスおよび方法のセットである。サイトコントローラレベルフレームワークは、例えば、電力供給およびピンエレクトロニクスの順番付け、レベルおよびタイミング条件の設定、測定値取得、テストフロー制御のためのクラスを含んでいる。フレームワークオブジェクトは、標準インタフェースをインプリメントすることを通じて動作してもよい。例えば、テスタピンフレームワーククラスのインプリメンテーションは、テストクラスがハードウェアモジュールピンと相互に作用するために用いるであろう汎用のテスタピンインタフェースをインプリメントするように統一される。
あるフレームワークオブジェクトは、モジュールと通信するためにモジュールレベルインタフェース２２４７の助けを借りて動作するようにインプリメントされてもよい。サイトコントローラフレームワーククラスは、実質的に、各サイトコントローラをサポートするローカルオペレーティングシステムとして機能する。
一般的に、プログラムコードの９０％以上は装置テスト用のデータであり、残りの１０％のコードがテスト方法を実現する。装置テストデータはＤＵＴ依存のデータ（例えば電力供給条件、信号電圧条件、タイミング条件等）である。テストコードは、指定された装置条件をＡＴＥハードウェア上にロードする方法からなり、またユーザが指定した目的（データロギング等）を実現するのに必要である方法からも構成される。発明の一実施形態のフレームワークは、ハードウェア依存性のテストと、ユーザがＤＵＴテストプログラミングのタスクを行うことを可能にするテスタオブジェクトモデルとを提供する。
テストコードの再利用性を高めるために、このようなコードは、装置特有のデータ（例えばピンの名前、活性化データ等）、あるいは装置テストに特有のデータ（例えばＤＣユニットの条件、測定ピン、ターゲットピンの数、パターンファイルの名前、パターンプログラムのアドレス）のいずれに対しても独立とされてもよい。もしテスト用のコードをこれらのタイプのデータとともにコンパイルすれば、テストコードの再利用性は低下する。したがって、発明の一実施形態によれば、いかなる装置特有のデータあるいは装置テストに特有のデータも、コード実行期間中の入力として、外部からテストコードに役立てられてもよい。
発明の一実施形態においては、標準テストインタフェースのインプリメンテーションであるテストクラスは、ここではＩＴｅｓｔと記載するが、特定のタイプのテストに関してテストデータとコードとの分離（したがってコードの再利用性）を実現する。このようなテストクラスは、装置特有および／あるいは装置テスト特有のデータにおいてのみ異なるような別々のテストクラスの「テンプレート」とみなしてもよい。テストクラスはテストプランファイルにおいて指定される。各テストクラスは、典型的には、具体的なタイプの装置テストあるいは装置テスト用のセットアップをインプリメントする。例えば、発明の一実施形態は、ＤＵＴに関するすべての機能テストの基本となるクラスとして、ＩＴｅｓｔインタフェースの具体的なインプリメンテーション、例えばＦｕｎｃｔｉｏｎａｌＴｅｓｔを提供する。それは、テスト条件の設定、パターンの実行および、失敗したストローブの存在に基づくテスト状況の判定という基本的な機能を提供する。他のタイプのインプリメンテーションは、ここではＡＣＰａｒａｍｅｔｒｉｃＴｅｓｔおよびＤＣＰａｒａｍｅｔｒｉｃＴｅｓｔとして表記されるＡＣおよびＤＣテストクラスを含んでいてもよい。
全てのテストタイプは、いくつかの仮想的な方法のデフォルトのインプリメンテーション（例えば、ｉｎｉｔ（）、ｐｒｅＥｘｅｃ（）およびｐｏｓｔＥｘｅｃ（））を提供してもよい。これらの方法は、デフォルトの動作を乗り越えてテスト特有のパラメータを設定するためのテストエンジニアのエントリポイントとなる。しかしながら、カスタムテストクラスもテストプランにおいて用いることができる。
テストクラスは、そのテストの特定の場合に関するオプションを指定するために用いられるパラメータを提供することによって、ユーザがクラスの動作を構成することを可能にする。例えば、機能テストは、実行すべきパターンリストとテスト用のレベルおよびタイミング条件とを指定するために、パラメータＰｌｉｓｔおよびＴｅｓｔＣｏｎｄｉｔｉｏｎと採用してもよい。（テストプラン記述ファイルにおける異なる「テスト」ブロックの使用を通して）これらのパラメータについて異なる値を指定することにより、ユーザは機能テストの異なる例を作り出すことが可能である。図９は、どのようにして単一のテストクラスから異なるテスト例が導き出されるかを示している。テンプレートライブラリは、一般的なアルゴリズムおよびデータ構造の汎用ライブラリとして採用されてもよい。このライブラリはテスタのユーザに見えてもよく、ユーザは、例えば、ユーザ定義のテストクラスを作り出すようにテストクラスのインプリメンテーションを改変してもよい。
ユーザによって展開されるテストクラスに関して、システムの一実施形態は、このようなテストクラスを、全てのテストクラスが単一のテストインタフェース、例えばＩＴｅｓｔから得られるようなフレームワークに統合することをサポートし、その結果、そのフレームワークはシステムテストクラスの標準的なセットと同じようなやり方でそれらを処理することができる。ユーザは、追加のファシリティを生かすためには自分達のテストプログラムにおいてカスタムコードを用いなければならないという理解のもとで、自分達のテストクラスに追加の機能を自由に追加することができる。
図１に示したサイト制御装置１３０、同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０を含んで構成される各テストサイトは、一つ以上のＤＵＴ１００のテスト専用のものであり、試験モジュール１７０等のテストモジュールの構成可能な集合体を通じて機能する。各テストモジュールは特定のテストタスクを行う主体である。例えば、テストモジュールは、ＤＵＴの電源、ピンカード、アナログカード等であり得る。モジュールによるこのアプローチは、高いフレキシビリティと構成可能性を提供する。
モジュールコマンドインプリメンテーションクラス２２４８は、モジュールハードウェアベンダによって提供されてもよく、ベンダによって選択されるコマンド実行方法に応じて、ハードウェアモジュールに関するモジュールレベルインタフェースをインプリメントするか、あるいは標準的なインタフェースのモジュール特有のインプリメンテーションを提供する。これらのクラスの外部インタフェースは、所定のモジュールレベルインタフェース要件およびバックプレーン通信ライブラリ要件によって規定される。またこのレイヤは、標準的なセットのテストコマンドの拡張も提供し、それにより方法（機能）およびデータ要素の追加が可能となる。
バックプレーン通信ライブラリ２２４９は、バックプレーンをまたいでの標準的な通信のためのインタフェースを提供し、それによってテストサイトに接続されたモジュールとの通信に必要な機能を提供する。これにより、ベンダに特有のモジュールソフトウェアが対応するハードウェアモジュールとの通信にバックプレーンドライバ２２５０を用いることが可能である。バックプレーシ通信プロトコルはパケットベースのフォーマットである。
テスタピンオブジェクトは、物理的なテスタチャネルを表しており、ここではＩＴｅｓｔｅｒＰｉｎで示されるテスタピンインタフェースから得られる。発明の一実施形態によるソフトウェア開発キット（ＳＤＫ）は、ＴｅｓｔｅｒＰｉｎと呼ばれることもあるＩＴｅｓｔｅｒＰｉｎのデフォルトのインプリメンテーションを提供し、これは所定のモジュールレベルインタフェースＩＣｈａｎｎｅｌに関してインプリメントされる。ベンダは、ＩＣｈａｎｎｅｌに関して彼らのモジュールの機能をインプリメントすることができるのであればＴｅｓｔｅｒＰｉｎを自由に使うことができるが、そうでなければ、彼らのモジュールとどもに動作するＩＴｅｓｔｅｒＰｉｎのインプリメンテーションを提供しなければならない。
本実施形態のテスタシステムによって提供される標準的なモジュールインタフェースは、ここではＩＭｏｄｕｌｅと表記するが、これは一般的には、ベンダのハードウェアモジュールを表している。ベンダによって供給される、システム用のモジュール特有のソフトウェアは、ダイナミックリンクライブラリ（ＤＬＬ）のような実行可能な形態で提供されてもよい。ベンダからの各モジュールタイプ用のソフトウェアは、単一のＤＬＬにカプセル化されていてもよい。このようなソフトウェアモジュールのそれぞれは、モジュールソフトウェア展開のためのＡＰＩを備えている、モジュールインタフェースコマンド用のベンダに特有なインプリメンテーションを提供することを担っている。
モジュールインタフェースコマンドには２つのの局面がある。それらは、第一に、ユーザがシステムにおける特定のハードウェアモジュールと（間接的に）通信するためのインタフェースとして機能し、第二に、サードパーティディベロッパが彼ら自身のモジュールをサイトコントローラレベルのフレームワークに統合するために活用することができるインタフェースを提供する。したがって、フレームワークによって提供されるモジュールインタフェースコマンドは、２つのタイプに分けられる。
一つ目は、最も疑う余地のないものであるが、フレームワークインタフェースを通じてユーザに対してあらわになる「コマンド」である。したがって、例えば、テスタピンインタフェース（ＩＴｅｓｔｅｒＰｉｎ）は、レベルおよびタイミングの値を取得、設定するための方法を提供し、一方で電源インタフェース（ＩＰｏｗｅｒＳｕｐｐｌｙ）は電力を上げたり下げたりする方法を提供する。
また、フレームワークは、モジュールとの通信に用いられることができる、所定のモジュールレベルインタフェースの特別なカテゴリを提供する。これらは、ベンダのモジュールとの通信のためにフレームワーククラスによって用いられるインタフェース（すなわち、フレームワークインタフェースの「標準的な」インプリメンテーション）である。
しかしながら、第二の局面、モジュールレベルインタフェースの使用は、任意のものである。それをすることの利点は、ベンダは、モジュールレベルインタフェースをインプリメントすることによって彼らのハードウェアに対して送られる具体的なメッセージの内容を注視しつつ、ＩＴｅｓｔｅｒＰｉｎおよびＩＰｏｗｅｒＳｕｐｐｌｙのようなクラスのインプリメンテーションを活用し得るということである。しかし、もしこれらのインタフェースがベンダに不適切であれば、それらはフレームワークインタフェースのそれらのカスタムインプリメンテーション（例えばＩＴｅｓｔｅｒＰｉｎ、ＩＰｏｗｅｒＳｕｐｐｌｙ等のベンダインプリメンテーション）を提供することを選択してもよい。そうすればこれらは、それらのハードウェアに対して適切であるカスタム機能を提供するであろう。
したがって、モジュールに特有なベンダソフトウェアの統合は、２つの異なった手段、すなわち、関連するフレームワーククラスおよびインタフェースのカスタムインプリメンテーション、あるいはモジュールレベルインタフェースの特別なカテゴリのカスタムインプリメンテーションを通じて実現され得る。
次に、両方の方法の例示的な応用を図１０の助けを借りて説明する。図１０は、発明の一実施形態によるテスタシステムとベンダによって供給されるモジュールとの相互作用を示すユニバーサルモデリング言語（ＵＭＬ）クラスダイアグラムである。
新しいデジタルモジュールのベンダであるサードパーティＡ（ＴＰＡ）は、そのハードウェアモジュールと通信するためのソフトウェアモジュールを提供する。このソフトウェアモジュールは、標準的なインタフェースＩＭｏｄｕｌｅをインプリメントする。このモジュールオブジェクトをＴＰＡＰｉｎＭｏｄｕｌｅと呼ぶことにしよう。ベンダＴＰＡは、そのモジュールにおいて、関連する所定のモジュールレベルインタフェース、この場合にはＩＣｈａｎｎｅｌをインプリメントすることによって、ここではＴｅｓｔｅｒＰｉｎとして表されている、ＩＴｅｓｔｅｒＰｉｎインタフェースの標準的なシステムインプリメンテーションを利用することができる。これは、ＴｅｓｔｅｒＰｉｎがモジュールと通信するためにＩＣｈａｎｎｅｌのような標準的な所定のモジュールレベルインタフェースを用いるという事実によって可能とされる。したがって、ＴＰＡＰｉｎＭｏｄｕｌｅは、ＴｅｓｔｅｒＰｉｎオブジェクトを単に作り出してあらわにすることでピンを提供する。
ここで、ＩＣｈａｎｎｅｌインタフェースは自分達のハードウェアとともにはうまく動作しないと判断する、異なるベンダであるサードパーティＢ（ＴＰＢ）を考える。したがって、ＴＰＢは、彼ら自身のＩＭｏｄｕｌｅインプリメンテーション（ＴＰＢＰｉｎＭｏｄｕｌｅ）だけではなく、ＩＴｅｓｔｅｒＰｉｎインタフェースのインプリメンテーションＴＰＢＴｅｓｔｅｒＰｉｎも提供することが必要となる。
このアプローチは、サードパーティディベロッパがどのようにして自分達のハードウェアを展開するかの選択およびソフトウェアのサポートにおいて、多大なフレキシビリティをサードパーティディベロッパに与える。彼らはＩＭｏｄｕｌｅインタフェースをインプリメントすることを求められながら、モジュールレベルインタフェースをインプリメントすることか、適合するとわかればＴｅｓｔｅｒＰｉｎのようなオブジェクトをインプリメントすることかを選択し得る。
実際に、ベンダは、ＩＴｅｓｔｅｒＰｉｎインタフェースにおいてはサポートされていない拡張を提供するためにＴｅｓｔｅｒＰｉｎをインプリメントすることを選択してもよい。フレームワークはユーザに、特定のインタフェースを取り出すためのメカニズムあるいはオブジェクトへのインプリメンテーションポインタを提供する。これは、ユーザコードがＩＴｅｓｔｅｒＰｉｎポインタを有している場合に、フレームワークはそれが必要であるときにいわゆるＴＰＢＴｅｓｔｅｒＰｉｎオブジェクトをポイントしているかどうかを判断することができるということを意味している。（この特徴は標準的なＣ＋＋ランタイムタイプ識別（ＲＴＴＩ）を介して提供されてもよいことに留意されたい。）言い換えると、テストプランがＩＴｅｓｔｅｒＰｉｎインタフェースを要求するときには、インタフェースは、ＴｅｓｔｅｒＰｉｎクラスのベンダのテスタピンのインプリメンテーションを直接呼び出し、これがモジュールに特有の情報（例えば、特定のＤＵＴ刺激を与えるように設定されるべきレジスタのアドレス）を内蔵している。
まとめると、フレームワークコードが常にＩＴｅｓｔｅｒＰｉｎインタフェースを使用している間、ユーザは、必要なときにモジュールベンダによって提供される具体的な特徴および拡張を自由に使うことができる。言い換えると、モジュールベンダは、例えば、クラスの標準的なシステムインプリメンテーションに方法（機能）を付加することができる。ユーザに対するトレードオフは、具体的なベンダの拡張を活用することが他のベンダのモジュールに対するテストコードの有用性を低下させるということである。
モジュールのレベルでは、試験装置１０は、名目上２つの動作モードを有している。動作のオンラインモードでは、バススイッチ１４０、同期モジュール１５０、同期接続モジュール１６０、試験モジュール１７０、ロードボード１８０、及びＤＵＴ１００を含んで構成されるモジュールエレメント２２６０（例えばハードウェアエレメント）が用いられ、動作のオフラインモードでは、バススイッチエミュレート部２４０、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、試験モジュールエミュレート部２７０、スケジュール制御部２７５、ＤＵＴ接続部２８０、及びＤＵＴシミュレート部２００を含んで構成されるソフトウェアにおけるモジュールエミュレーション２２８０が用いられる。
動作のオンラインモードについて、モジュールエレメント２２６０は、図１に示したバススイッチ１４０を含むＨＷ（ハードウェア）バックプレーン２２６１と、シャーシスロットＩＦ（インタフェース）２２６２と、同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０等を含むモジュールハードウェア２２６３と、ロードボードハードウェアＩＦ２２６４と、ロードボード１８０に対応するハードウェアロードボード２２６５と、図１０に示したＤＵＴ１００に対応するＤＵＴ２２６６とを有している。
動作のオフラインモードについて、ソフトウェアでのモジュールエミュレーション２２８０は、図２に示したスケジュール制御部２７５を含むシミュレーションフレームワーク２２８１と、バススイッチエミュレート部２４０を含むバックプレーンエミュレーション２２８２と、バックプレーンシミュレーションＩＦ２２８３と、同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０等を含むモジュールエミュレーション２２８４と、ロードボードシミュレーションＩＦ２２８５と、ＤＵＴ接続部２８０を含むロードボードシミュレーション２２８６と、ＤＵＴシミュレーションＩＦ２２８７を有している。２つのモデルをＤＵＴシミュレーションに関して示す。Ｖｅｒｉｌｏｇを用いるモデルは、Ｖｅｒｉｌｏｇ  ＰＬＩ（プログラミング言語インタフェース）２２８８とＤＵＴ  Ｖｅｒｉｌｏｇモデル２２９３とを有している。Ｃ／Ｃ＋＋を用いるモデルは、Ｃ／Ｃ＋＋言語サポート２２８９とＤＵＴ  Ｃ／Ｃ＋＋モデル２２９１とを有している。シミュレーションは、ＰＣ等のいかなるコンピュータ上でも行うことができることに留意されたい。
オンラインモードでは、モジュールベンダは、デジタルテスタチャネル、ＤＵＴ電源、あるいはＤＣ測定ユニットといった、テストをサポートするための物理的なハードウェアコンポーネントを提供する。モジュールは、シャーシスロットＩＦ２２６２を通じてＨＷバックプレーン２２６１にインタフェース接続される。
オフラインでの作業については、システムコントローラと等価なものを動かすＰＣベースあるいは他の環境が、付加的に、サイトコントローラレベルのフレームワークと、ソフトウェアのより低いレイヤのランタイム環境とを提供するとともにハードウェアをエミュレートするための全ての任務を引き受ける。
バックプレーンエミュレーション２２８２は、物理的なバックプレーン２２６１のためのソフトウェアによる代理を提供する。これは、バックプレーンシミュレーションインタフェース２２８３を通して（ベンダが供給する）モジュールエミュレーションソフトウェア２２８４と通信する。
モジュールエミュレーションソフトウェア２２８４は、好ましくはモジュールベンダによって提供され、典型的にはモジュール２２６３の特定のベンダインプリメンテーションと密接に結びついている。したがって、モジュールエミュレーションソフトウェアは、典型的には、異なるベンダによって供給されるモジュール間で詳細で異なっている。この場合、モジュールシミュレーションにより、ベンダは、ソフトウェアモデル（例えばモジュールエミュレーションソフトウェア２２８４）を通してハードウェアの機能をあらわにし、シミュレートされるロードボード２２８６に対して活性化信号を送り、ＤＵＴシミュレーションＩＦ２２８７を介してＤＵＴモデリングソフトウェア２２９１、２２９３に接続されている、シミュレートされるロードボード２２８６からのＤＵＴ応答信号を受け取って処理することが可能になる。モジュールの単純な機能シミュレーションを提供してモジュールファームウェアのエミュレーションを迂回することが有利であるとベンダが考える場合もある。モジュールエミュレーションソフトウェアは、シミュレートされたモジュール活性化信号に対するシミュレートされたＤＵＴの応答を、既知の良好なＤＵＴ応答と比較する。この比較に基づいて、ソフトウェアは、そのモジュールによって実行されているテストが所望のとおりＤＵＴをテストするという目標に適合しているかを判断し、ユーザがオンラインの実際のテスタ上のＩＣ（実際のＤＵＴ）上でそれを用いるのに先立って、モジュールのデバッグを行うことを助ける。
ロードボードシミュレーションインタフェース２２８５は、モジュールエミュレーションレイヤおよびシミュレートされるロードボード２２８６への、およびこれらからの信号のためのルートとして機能する。ロードボードシミュレーションコンポーネント２２８６は、デバイスソケットマッピングと、ＤＵＴシミュレーションＩＦ２２８７への、およびそれからの信号伝達とをサポートする。
ＤＵＴシミュレーションは、ネイティブコード（すなわちＣ／Ｃ＋＋）シミュレーション２２９１、または対象のＤＵＴモデル２２９３の機能モデルに対するＶｅｒｉｌｏｇプログラミング言語インタフェース（ＰＬＩ）であってもよい。このモデルは、ＤＵＴシミュレーションインタフェース２２８７を通じて、シミュレートされるロードボードとインタフェース接続する。
これらのレイヤの全体の制御はシミュレーションフレームワーク２２８１によって提供されることに留意されたい。シミュレーションフレームワークは、既知の活性化信号に対するシミュレートされたＤＵＴ応答を測定する。システムエミュレーションの方法は、米国出願第１０／４０３，８１７号に開示されている。
通信および制御
通信および制御は、関連するソフトウェアオブジェクトの管理を通じて実現される。好ましくは、通信のメカニズムは、システムコントローラ上のオブジェクトモデルの後ろに隠れている。このオブジェクトモデルは、サイトコントローラ上に見られるクラスおよびオブジェクトに対してプロキシを提供し、それによって、アプリケーションの開発（例えばＩＣ装置のテスト）のための便利なプログラミングモデルを提供する。これにより、アプリケーションの開発者（例えばＡＴＥシステムのユーザ）は、アプリケーションとサイト／システムコントローラとの間の通信の具体的な情報に関連する不要な詳細を避けることが可能である。
図１１は、サイト制御装置１３０内のサイトコントローラソフトウェア２２４０に維持されているときのサイトコントローラオブジェクトの具体的な実施形態を示している。サイトコントローラオブジェクトは、ＣｍｄＤｉｓｐａｔｃｈｅｒ２６０２、ＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２６０４およびＦｕｎｃｔｉｏｎａｌＴｅｓｔ２６０６を有している。インタフェースは、ＩＭｓｇＨａｎｄｌｅｒ２６０８およびＩＴｅｓｔ２６１０を有している。
好ましくはサイトコントローラ２２４０は、アプリケーションがアクセスのために必要とする機能クラスの全てを含んでいる。これらのクラスは、例えば、テスト、モジュール、ピン等を含む。ユーザのテストおよびソフトウェアツールは典型的には異なるコンピュータ上に存在するので、メッセージは、システムコントローラ上のツールからサイトコントローラ上のサーバに送られる。このサーバは、コマンド発送オブジェクトに関する方法を必要とする。
コマンド発送オブジェクト（ＣｍｄＤｉｓｐａｔｃｈｅｒ）２６０２は、ＩＭｓｇＨａｎｄｌｅｒインタフェース２６０８をインプリメントするメッセージハンドラオブジェクトのマップを保持する。図１１は、ＩＭｓｇＨａｎｄｌｅｒの具体的なインプリメンテーションＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２６０４を示している。ＤｍｄＤｉｓｐａｔｃｈｅｒオブジェクト２６０２によって受信されたメッセージは通信すべきオブジェクトの識別子を含んでいる。この識別子は、内部のマップにおいて見られ、具体的なインプリメンテーション、この場合には図示されているＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒオブジェクト２６０４に帰着する。
本例では、ＩＭｓｇＨａｎｄｌｅｒ２６０８は、単一の方法ｈａｎｄｌｅＭｅｓｓａｇｅ（）からなる。この方法は、好ましくは単一のインプリメンテーションクラスとしてインプリメントされる。図示されている場合においては、ＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２６０４は、入ってくるメッセージの正確な性質に応じて、６つの方法のうちの１つにメッセージを送る。入ってくるメッセージのヘッダは、メッセージハンドラがどのようにメッセージを解釈し、どこにメッセージを送るかを決定することを可能にするメッセージＩＤを含んでいる。
システム制御装置１１０における対応する通信環境は、システムコントローラソフトウェア２２２０のツール２２２５、２２２６セクションに関連する。図１２は、システムコントローラソフトウェア２２２０においてシステム制御装置１１０上に保持されるツールオブジェクト（あるいはシステムコントローラオブジェクト）の一実施形態を、図１１に示したサイトコントローラオブジェクトと対応するように示している。ツールオブジェクトは、オブジェクトＣｍｄＤｉｓｐａｔｃｈｅｒ２７０２、ＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２７０４およびＦｕｎｃｔｉｏｎａｌＴｅｓｔＰｒｏｘｙ２７０６を含んでいる。インタフェースは、ＩＭｓｇＨａｎｄｌｅｒ２７０８、ＩＴｅｓｔＣｌｉｅｎｔ２７１０、およびＩＤｉｓｐａｔｃｈ２７１２を含んでいる。またユーティリティアプリケーション２７１４も含まれる。
この例に関して、クラスＣｍｄＤｉｓｐａｔｃｈｅｒ２７０２、ＩＭｓｇＨａｎｄｌｅｒ２７０８、およびＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２７０４は図１１に示したものと同じである。しかしながら、ＦｕｎｃｔｉｏｎａｌＴｅｓｔ２６０６（あるいは他のいかなるサイトコントローラクラス）のインスタンス化は用いられない。代わりに、ツールオブジェクトは、サイト制御装置１３０上の各オブジェクトと通信するためのプロキシクラスを有している。したがって例えば、ツールオブジェクトはＦｕｎｃｔｉｏｎａｌＴｅｓｔ２６０６に代えてクラスＦｕｎｃｔｉｏｎａｌＴｅｓｔＰｒｏｘｙ２７０６を含んでいる。同様に、ツールオブジェクトにおけるＩＴｅｓｔＣｌｉｅｎｔ２７１０は、サイトコントローラオブジェクトにおけるＩＴｅｓｔ２６１０と同じではない。一般的に、サイト制御装置１３０上で動作するアプリケーションは、サイト制御装置１３０上に設けられているものそのもののようなインタフェースを用いない。この場合、ＩＴｅｓｔ２６１０の３つの方法（すなわち、ｐｒｅＥｘｅｃ（）、ｅｘｅｃｕｔｅ（）およびｐｏｓｔＥｘｅｃ（））はＩＴｅｓｔＣｌｉｅｎｔ２７１０における単一の方法（すなわちｒｕｎＴｅｓｔ（））に置き換えられる。またＩＴｅｓｔＣｌｉｅｎｔ２７１０は、好ましくはデュアルインタフェース、すなわち、ＩＤｉｓｐａｔｃｈ７１２を受け継ぐものであり、マイクロソフトコンポーネントオブジェクトモデル（ＣＯＭ）としてインプリメントされる。それは、そのインタフェースをインプリメントするオブジェクトへのスクリプトエンジンのアクセスを可能にするようなインタフェースを提供する。これによって、システムをマイクロソフトウィンドウズプラットフォーム上で記述することが可能となる。
図１１〜１２に示す実施形態の動作の一例として、（例えば、ツールセクション２２２６、２２２８のうちの一つにおいて）システム制御装置１１０上で動作するアプリケーションは、テストプラン２２４２が一つ以上のＦｕｎｃｔｉｏｎａｌＴｅｓｔオブジェクト２６０６を有しているようなサイト制御装置１３０と通信してもよい。サイト制御装置１３０上でのテストプラン２２４２の初期化中に、対応するテストプランオブジェクトはサイト制御装置１３０上にロードされ、ＴｅｓｔＰｌａｎＭｅｓｓａｇｅＨａｎｄｌｅｒオブジェクトを構成し、それをＣｍｄＤｉｓｐａｔｃｈｅｒオブジェクト２６０２とともに登録する。これがメッセージハンドラに独自のＩＤを割り当てる。同様な動作は、テストプラン２２４２を構成する他のＴｅｓｔＰｌａｎオブジェクトでも起こる。
システム制御装置１１０上の（例えばツール２２２６、２２２８における）アプリケーションは、通信ライブラリ２２３０を初期化し、通信チャネルを介してサイト制御装置１３０に接続し、ＴｅｓｔＰｌａｎオブジェクトのためのＩＤを取得する。この初期化中に、プロキシオブジェクトは、それがテストをいくつ含んでいるかと、それらのタイプおよびＩＤとを決定する。それはタイプごとに（この場合には一つだけのタイプ）適切なＤＬＬをロードし、それらに関するプロキシオブジェクトを構成し、それらをＩＤ値を用いて初期化する。
ＴｅｓｔＰｒｏｘｙオブジェクトも初期化する。これをするために、それらは、それらの名前を（それらのＩＤ値を用いて）取得するための適切なメッセージを構成してサイト制御装置１３０の通信サーバに送信する。通信サーバは、メッセージをＣｍｄＤｉｓｐａｔｃｈｅｒ２６０２に渡す。このオブジェクトは、その内部マップにおいて宛先ＩＤを調べて、ＦｕｎｃｔｉｏｎａｌＴｅｓｔＭｓｇＨａｎｄｌｅｒ２６０４のｈａｎｄｌｅＭｅｓｓａｇｅ（）方法にメッセージを送る。例えばもしメッセージがテスト名取得の要求であれば、これらのオブジェクトは、それぞれのテスト名を取得し、適切なネーム列でアプリケーションのＴｅｓｔＰｒｏｘｙオブジェクトに応答する。
初期化が完了すると、アプリケーションは、ＴｅｓｔＰｌａｎオブジェクトへのリモートアクセスと、それを通じて両方のＴｅｓｔオブジェクトへのリモートアクセスを有する。ユーザはここで、例えば、アプリケーション上の「テストプラン起動」のボタンを押す。その結果、アプリケーションはＴｅｓｔＰｌａｎＰｒｏｘｙオブジェクト上のＲｕｎＴｅｓｔＰｌａｎ（）方法を呼び出す。この方法は、ＴｅｓｔＰｌａｎオブジェクトの宛先ＩＤでＲｕｎＴｅｓｔＰｌａｎメッセージを構成し、ＲＰＣプロキシ上でｓｅｎｄＭｅｓｓａｇｅ（）機能を呼び出す。この機能がサイトコントローラにメッセージを送信する。
サイト制御装置１３０上の通信サーバは、ＣｍｄＤｉｓｐａｔｃｈｅｒオブジェクト２６０２上のｈａｎｄｌｅＭｅｓｓａｇｅ（）方法を呼び出し、ＴｅｓｔＰｌａｎオブジェクトのＩＤをそれに渡す。ＣｍｄＤｉｓｐａｔｃｈｅｒオブジェクト２６０２はその内部マップでこのＩＤを調べて、ＴｅｓｔＰｌａｎオブジェクト用のメッセージハンドラを見つけて、このオブジェクト上のｈａｎｄｌｅＭｅｓｓａｇｅ（）方法を呼び出し、これがＴｅｓｔＰｌａｎオブジェクト上のＲｕｎＴｅｓｔＰｌａｎ（）方法を呼び出す。同じようなやり方で、アプリケーションは名前とＴｅｓｔオブジェクトの最近の動作状況とを取得することができる。
通信ライブラリを用いる方法
通信ライブラリ２２３０を用いる例を以下に述べる。
通信ライブラリ２２３０は好ましくは静的なライブラリである。アプリケーションは、ＣｏｍｍＬｉｂｒａｒｙ．ｈファイルを通してこの通信ライブラリを使用することができる。通信ライブラリクラスをエクスポートする必要があるアプリケーションは、上記インクルードファイルを含むことに加えて、定義されたプリプロセッサ定義ＣＯＭＭＬＩＢＲＡＲＹ＿ＥＸＰＯＲＴＳ、ＣＯＭＭＬＩＢＲＡＲＹ＿ＦＯＲＣＥ＿ＬＩＮＫＡＧＥを有していなければならない。通信ライブラリをインポートするアプリケーションは、プリプロセッサ定義を何も定義する必要はない。通信ライブラリがサーバとして用いられるときには、アプリケーションは、ＣｃｍｄＤｉｓｐａｔｃｈｅｒの次の静的な関数を呼び出さなければならない：ＩｎｉｔｉａｌｉｚｅＳｅｒｖｅｒ（ｕｎｓｉｇｎｅｄ  ｌｏｎｇ  ｐｏｒｔＮｏ）。
このｐｏｒｔＮｏは、サーバが要求を待たなければならないポート番号である。サーバに対応するコマンドディスパッチャは、静的な関数ｇｅｔＳｅｒｖｅｒＣｍｄＤｉｓｐａｔｃｈｅｒをＣｃｍｄＤｉｓｐａｔｃｈｅｒクラス上に呼び出すことによって読み出される。
通信ライブラリがクライアントとして用いられるときには、アプリケーションはＣｃｍｄＤｉｓｐａｔｃｈｅｒの静的な関数「ＩｎｉｔｉａｌｉｚｅＣｌｉｅｎｔ（ｃｏｎｓｔ  ＯＦＣＳｔｒｉｎｇ  ｓｅｒｖｅｒＡｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｌｏｎｇ  ｓｅｒｖｅｒＰｏｒｔＮｏ，ＣｃｍｄＤｉｓｐａｔｃｈｅｒ  ＊＊ｐＣｍｄＤｉｓｐａｔｃｈｅｒ，ＯＦＣＳｔｒｉｎｇ  ｓｅｒｖｅｒＩｄ）」を呼び出さなければならない。
このｓｅｒｖｅｒＡｄｄｒｅｓｓおよびＳｅｒｖｅｒＰｏｒｔＮｏは、クライアントが接続しなければならないものである。この関数は、クライアント用のコマンドディスパッチャポインタおよびそれが接続するサーバＩＤを初期化する。また、後の時点で、クライアントは、静的な関数ｇｅｔＣｌｉｅｎｔＣｍｄＤｉｓｐａｔｃｈｅｒを呼び出すことによってサーバＩＤに対応するコマンドディスパッチャを取り出すことができる。
通信ライブラリがコンパイルされるときには、ファイルＣｌｉｅｎｔＩｎｔｅｒｆａｃｅ．ｉｄｌおよびＳｅｒｖｅｒＩｎｔｅｒｆａｃｅ．ｉｄｌ上ではビルドは排除される。好ましい実施形態は、これらのインタフェース定義ファイルに関して既に生成されたスタブおよびプロキシファイルを適用して、プロキシおよびスタブインプリメンテーションファイルを同じライブラリにリンクする。したがって、サーバおよびクライアントは、同じアドレス空間内にインスタンス化される。インタフェース定義ファイルおよびスタブファイルにおける以下の変更は、好ましくは、通信ライブラリをサーバおよびクライアントとして同じアドレス空間内で動作させるために行われる。
インタフェース定義ファイルにおける変更
以下のネームスペースの宣言は、好ましくは、インタフェース定義ファイルのそれぞれにおいて付加される。これは、プロキシインプリメンテーション機能とインタフェース機能の我々自身のインプリメンテーションとの名前の衝突を避けるためである。以下のネームスペースの宣言は、ｓｅｒｖｅｒＩｎｔｅｒｆａｃｅ．ｉｄｌにおいて付加される。
スタブインプリメンテーションファイルにおける関数は、インタフェースにおいて宣言された機能のための我々自身のインプリメンテーション関数を呼び出すように変更される。すなわち、我々は、インタフェースにおいて宣言された機能のそれぞれに対応する異なる名前の関数をもつことになる。
関数呼び出しにおける競合を避けるために、インプリメンテーション関数の名前を「ＣＯＭＭ＿」列で始まる名前とすることが好ましい。そうすればスタブ関数におけるコードは、「ｆｕｎｃｔｉｏｎＮａｍｅ」に代えて「ＣＯＭＭ＿ｆｕｎｃｔｉｏｎＮａｍｅ」を呼び出すように変更される。
この方法が動作するためには、存在する全ての機能クラスは、対応するメッセージハンドラオブジェクトおよびプロキシクラスも有していなければならない。全てのメッセージハンドラオブジェクトは、通信ライブラリによって提供されるＩＭｓｇＨａｎｄｌｅｒクラスから得られなげればならない。ＩＭｓｇＨａｎｄｌｅｒクラスは抽象的なクラスである。メッセージハンドラのインプリメンタの任務は、ｈａｎｄｌｅＭｅｓｓａｇｅ、ｓｅｔＯｂｊｅｃｔ、ｈａｎｄｌｅＥｒｒｏｒの定義を提供することが好ましい。全てのメッセージタイプは、１から始まらなければならない（ゼロはｈａｎｄｌｅＥｒｒｏｒのためにとっておく）。機能クラスは好ましくは、そのメンバが可変であるように対応するメッセージハンドラを有する。機能クラスのコンストラクタにおいて、機能クラスは、そのメッセージハンドラによって提供される関数を呼び出すことによって、メッセージハンドラとともに自身を登録させる。次にメッセージハンドラオブジェクトは、ａｄｄＭｓｇＨａｎｄｌｅｒ関数をコマンドディスパッチャ上にパラメータとしてのメッセージハンドラとともに呼び出すことによって、コマンドディスパッチャとともに登録されなければならない。ａｄｄＭｓｇＨａｎｄｌｅｒ関数は、メッセージハンドラおよび機能クラスにＩＤを割り当てる。機能クラスのデストラクタは、パラメータとしての機能クラス識別子を送ることによって、コマンドディスパッチャ上にｒｅｍｏｖｅＭｓｇＨａｎｄｌｅｒ関数を呼び出さなければならない。またプロキシクラスも、機能クラスに関して説明されたように、同じ登録手順に従わなければならない。
システム構成とテスト
図１３は、本発明の一実施形態による名目上のテストシーケンス２８００を示している。テストシーケンス２８００は、テスト環境２８０４におけるモジュールのインストール２８１５を含んでおり、これはテスト準備２８０６とシステムテスト２８０８とを包含している。初めに新しいモジュール（ハードウェアまたはソフトウェアまたはこれらの組み合わせ）２８１０が（ベンダの品質管理に基づいているかもしれないいくつかの外部手順によって）認証２８１２される。インストール２８１５はまず、オフラインシミュレーション２８０９のためのハードウェアモジュールエミュレーションの設定、テストプログラム開発２８１４のためのモジュールリソースファイルおよびインタフェースの設定、ならびにパターンコンパイル２８１６のためのモジュール特有のパターンコンパイラの設定を含むテスト準備２８０６を必要とする。次にシステムテスト２８０８が、較正２８１７、診断２８１８および構成２８２０からの入力を用いて実行される。そして新しいモジュールに対して、（１）インタフェース制御、（２）同期、順序付けおよび再現性、（３）エラー／アラーム対応、（４）マルチサイト制御、ならびに（５）マルチインストゥルメントモジュール制御を含むシステムテスト２８０８が行われる。
（補足説明Ｂ）ＤＵＴ１００のシステムソフトウェアのフレームワークの仕様例
Ｂ．１  概要
本仕様は、試験エミュレート装置１９０、又は、システム制御装置１１０及びサイト制御装置１３０の分散システムによるエミュレート環境（オフライン環境）を中心として、ＤＵＴ１００のシステムソフトウェアのユーザ及び開発者向けのフレームワークを示す。
Ｂ．２  ユーザの仕様
本章は、試験装置１０のシステムソフトウェアの、ユーザ向けのフレームワークを示す。
Ｂ．２．１  ＳｉｍＴｅｓｔｅｒ
「ＳｉｍＴｅｓｔｅｒ（シミュレーションされた試験装置）」は、コンピュータ２０を図２に示した試験エミュレート装置１９０として機能させるアプリケーションプログラムである。ＳｉｍＴｅｓｔｅｒは、各モジュール及びＤＵＴのＤＬＬをロードして、システムソフトウェアからのコマンドに応答して試験装置をエミュレートする。ここで、システムソフトウェアは、シミュレートするパターンをロードし実行するランタイムソフトウェアである。
ＳｉｍＴｅｓｔｅｒは、起動されると、シミュレーションコンフィギュレーションファイルを読み出す。この結果、試験エミュレート装置１９０を同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び／又は試験モジュールエミュレート部２７０として機能させる全てのモジュールエミュレーションＤＬＬがロードされる。ＤＬＬがロードされると、ＳｉｍＴｅｓｔｅｒは、システム制御装置１１０からの接続を待つ。システム制御装置１１０は、テストプランをロードするとＳｉｍＴｅｓｔｅｒに接続する。テストプランは、オフラインコンフィギュレーションファイルを含む。システム制御装置１１０がテストプランのデータを実際にロードする前に、オフラインコンフィギュレーションファイルをＳｉｍＴｅｓｔｅｒに渡し、初期化を完了できるようにする。オフラインコンフィギュレーションファイルのロードに成功すれば、ＳｉｍＴｅｓｔｅｒはＤＵＴモデルをロードし、ＤＵＴ接続部２８０及びＤＵＴシミュレート部２００として試験モジュールエミュレート部２７０等のモジュールエミュレータに接続させる。この時点で、シミュレーションは、パターンの読み出し及び実行の準備ができたこととなる。
テストプランがアンロードされると、ＳｉｍＴｅｓｔｅｒはＤＵＴモデルをアンロードするシグナルを受け、新たなオフラインコンフィギュレーションファイルの受付を待つ。
Ｂ．２．２  コンフィギュレーションファイル
ＳｉｍＴｅｓｔｅｒは、２つのコンフィギュレーションファイルを使用する。第１のファイルは、シミュレーションコンフィギュレーションファイルである。本ファイルは、シミュレーション中にどのようなモジュールが使用可能となるかを特定する。第２のファイルは、オフラインコンフィギュレーションファイルである。このファイルは、どのＤＵＴモデルがロードされ、どのように試験装置に接続されるかを特定する。
Ｂ．２．２．１  シミュレーションコンフィギュレーションファイル
図１４から１５は、シミュレーションコンフィギュレーションファイルの一例である。シミュレーションコンフィギュレーションファイルは、階層的にブロック化されている。
グローバルセクション５０１０は、全体的な設定を行う。ＩｎｉｔｉａｌＶｏｌｔａｇｅパラメータは、シミュレーションスタート時における全ての配線の電圧の初期値を設定する。この値は、ドライブされていない配線の電圧レベルの指定にも用いられる。
ＲｅｃｏｖｅｒｙＲａｔｅパラメータは、オプションのパラメータであり、２つのアナログ信号が対向してドライブされた場合に用いられる。より具体的には、当該パラメータは、２つのアナログ信号により配線がドライブされた場合に、一定の電圧レベルとなるまでに要する時間を決定するために用いられる、時間当たりの電圧変化量を示す。
モジュールエミュレーションセクション５０２０は、モジュールＤＬＬを指定し、当該モジュールＤＬＬの設定を行う。
Ｗａｖｅｆｏｒｍセクションは、各モジュールにおいて使用される波形モデルを宣言する。波形モデルは、ＤＵＴの端子に接続されるチャネル毎に、Ｓｔｅｐ（ステップ波形）、Ｓｌｅｗ（スリュー波形）、及びＡｎａｌｏｇ（アナログ波形）等を指定する。
Ｐｏｒｔセクションは、試験エミュレート装置１９０を同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び／又は試験モジュールエミュレート部２７０等として機能させるモジュールエミュレータのインスタンスを宣言する。
ＬｏｇｉｃａｌＰｏｒｔパラメータは、実機におけるあるチャネルの不良等により、当該チャネルに挿入されていたモジュールを他のチャネルに差替えた場合に、モジュールエミュレータ上で当該差替えを記述するために設けられる。
モジュールエミュレーションセクション５０２０にけるＰａｒａｍｓセクションは、モジュールＤＬＬに渡すべきパラメータを記述する。
Ｂ．２．２．２  オフラインコンフィギュレーションファイル
図１６から１７は、オフラインコンフィギュレーションファイルの一例である。
グローバルセクション５１１０は、全体的な設定を行う。ＲｅｇＳｅｌｅｃｔパラメータは、パターンのトレース時にトレースすべきレジスタを選択するファイルを指定する。
ＤＵＴモデルセクション５１２０は、ＤＵＴモデルとなるＤＬＬファイルの指定や、各種の設定を行う。
Ｗａｖｅｆｏｒｍパラメータは、各ＤＵＴの端子ごとに、波形モデルを設定する。ＤＵＴブロックは、主にＰａｒａｍｓブロックと、ＰｉｎＣｏｎｎｅｃｔｉｏｎｓブロックとを含む。
Ｐａｒａｍｓブロックは、モジュールＤＬＬに渡すべきパラメータを記述する。
ＰｉｎＣｏｎｎｅｃｔｉｏｎｓブロックは、試験装置のリソースとＤＵＴの端子との接続を指定する。すなわち例えば、「Ｌ３．１１  １０  １．０ｎｓ」は、論理ポート３の１１番目のリソースはＤＵＴの端子１０に接続され、配線遅延が１．０ｎｓであることを示す。ここで、論離ポートとは、例えばモジュールが実装されるポートであり、リソースとは、当該モジュール内に設けられたチャネル対応論理等である。
Ｂ．３  開発者向けの仕様
試験装置のモジュールやＤＵＴモデルは、図５に示したモジュールエミュレートプログラムのフレームワークを用いて、例えばＣ＋＋言語のクラス関数から派生することにより作成される。この派生に伴い、基本クラス中の幾つかの仮想関数を実装する必要がある。また、このフレームワークは、試験装置のモジュールとＤＵＴモデルの間のＩ／Ｏの実現を容易化する関数を含む。そして、このフレームワークに従うことにより、得られたＤＬＬを試験エミュレート装置１９０上で他のコンポーネントに接続してエミュレーションを行うことができる。
Ｂ．３．１  オフラインフレームワーククラスの構造
図１８は、図５に示したクラス階層構造をより詳細に記述したクラス階層構造５２００である。ＴｈｉｒｄＰａｒｔｙＭｏｄｕｌｅクラスやＴｈｉｒｄＰａｒｔｙＤＵＴクラス内の各メソッドは仮想メソッドであり、本モデルの振る舞いを定義するために実メソッドの実装を要する。ＳｉｍＣｏｍｐｏｎｅｎｔ基本クラス内のｃｒｅａｔｅＤｏｍａｉｎ、ｒｅｇｉｓｔｅｒＤｏｍａｉｎ、ｒｅｌｅａｓｅＤｏｍａｉｎ、ｇｅｔＤｏｍａｉｎ、ｒｅｇｉｓｔｅｒＥｖｅｎｔ、及びｒａｉｓｅＥｖｅｎｔメソッドは、試験エミュレート装置１９０をスケジュール制御部２７５等として機能させる、ＤＵＴ１００のソフトウェアシミュレーションエンジンをアクセスするサービスを提供する。
図１９は、当該フレームワークにおいてインターフェイスとして用いられるチャネルオブジェクトの使用ダイアグラムを示す。試験装置のモジュール及びＤＵＴモデルは、ＳｉｍＣｈａｎｎｅｌオブジェクトの配列を含む。ＳｉｍＣｈａｎｎｅｌオブジェクトの各インスタンスは、当該モデルのＩ／Ｏチャネルに対応する。Ｉ／Ｏチャネルは、ＳｉｍＣｈａｎＩＤオブジェクトを用いて識別される。ＳｉｍＣｈａｎｎｅｌクラスは、モジュールやＤＵＴモデルが、出力チャネルに出力すべき電圧のタイミングを書き込み、入力チャネルから特定のタイミングで電圧を読み出すために用いられる。入力チャネルからある時間ウィンドウの間に入力された信号のエッジをスキャンする場合、ＳｉｍＣｈａｎｎｅｌ：：ｇｅｔＷａｖｅｆｏｒｍＩｔｅｒメソッドを呼び出して、ＳｉｍＷａｖｅｆｒｏｍＩｔｅｒのインスタンスを得ることができる。そして、ＳｉｍＷａｖｅｆｏｒｍＩｔｅｒオブジェクトは、呼び出し側のルーチンに、有限の時間ウィンドウの全てのエッジについて繰返し処理を行うことを可能とさせる。
図２０は、当該フレームワークにおいてインターフェイスとして用いられるイベントオブジェクトの使用ダイアグラムを示す。イベントは、当該フレームワークとサードパーティモデルとの間における通信に用いられる。イベントは、ＳｉｍＥｖｅｎｔクラスによりカプセル化されている。ＳｉｍＥｖｅｎｔのインスタンスは、ＳｉｍＥｖｅｎｔＭｇｒクラスにより生成される。一般的には、１つのモデルはＳｉｍＥｖｅｎｔＭｇｒの１つのインスタンスを持つ。しかし、もし１つのモデルが他のモジュールに特別なイベントを送信する場合、複数のＳｉｍＥｖｅｎｔＭｇｒインスタンスが必要となる。
Ｂ．３．２  試験装置のモジュールの実装
本節では、単純なデジタルドライバモジュール及びデジタルストローブモジュールを例として、モジュールの実装方法を示す。
図２１は、試験装置のモジュールの一例として、単純なデジタルモジュールの基本クラスを示す。デジタルドライバモジュール及びデジタルストローブモジュールのクラスは、基本クラスの派生クラスとして生成する。
開発者は、当該基本クラスに基づいて、基本クラスのコンストラクタ、チャネルオブジェクトを返すｇｅｔＣｈａｎｎｅｌメソッド、モジュールのメモリアドレス空間を設定するｓｅｔＢａｓｅＡｄｄｒｅｓｓメソッド、バススイッチ１４０のスロット番号を設定するｓｅｔＢｕｓＮｕｍｂｅｒメソッド、割込みの禁止／許可を設定するｌｏｃｋＩｎｔｅｒｒｕｐｔ／ｕｎｌｏｃｋＩｎｔｅｒｒｕｐｔメソッド、及び、モジュールのメモリアドレス空間をアクセスするｒｅａｄ／ｗｒｉｔｅメソッド等を実装する。
Ｂ．３．２．１  ローカルイベント
オフラインのシミュレーションは、イベントドリブンで行われる。すなわち、各モジュールはイベントを登録する。そして、イベントが発生するとイベントを登録したモジュールのｈａｎｄｌｅＥｖｅｎｔメソッドが呼び出される。
イベントは、ＳｉｍＥｖｅｎｔクラスによって定義され、同期イベント及び非同期イベントに分類される。非同期イベントは、更にシステムイベント及びローカル非同期イベントに分類される。システムイベントは、例えばシステム割込み、及びパターン生成の終了等である。
Ｂ．３．２．１．１  ローカル非同期イベント
ローカル非同期イベントは、モジュール間の通信に用いられる。このイベントには、時間は関連付けられない。非同期イベントの受信を要求する場合、モジュールは、オーバーロードされた、時間の引数を持たないｒｅｇｉｓｔｅｒＥｖｅｎｔメソッドによりイベントを登録する。非同期イベントを発生する場合、モジュールは、ｒａｉｓｅＥｖｅｎｔメソッドを呼び出す。非同期イベントを受信するモジュールは、オーバーロードされた、時間の引数を持たないｈａｎｄｌｅＥｖｅｎｔメソッド内においてイベント処理を行う。
Ｂ．３．２．１．２  ローカル同期イベント
ローカル同期イベント（同期イベント）は、モジュールがリードイベント又はライトイベント、すなわち信号のストローブ又はドライブをスケジュールするために用いられる。同期イベントは、モジュールが特定のタイミングで通知を受けるために用いられ、モジュール間の通信には用いられない。
Ｂ．３．３  単純なデジタルドライバモジュール
図２２は、単純なデジタルドライバモジュールのクラス宣言を示す。開発者は、当該クラスのコンストラクタ、ベンダ／モジュールの情報を返すｇｅｔＭｏｄｕｌｅＩＤｓメソッド、及び、ドライバモジュールを初期化するｉｎｉｔＥｖｅｎｔｓメソッド等を実装する。
図２３は、デジタルドライバモジュールのｈａｎｄｌｅＥｖｅｎｔメソッドの一例である。デジタルドライバモジュールは、現在のサイクルにおいて、全てのチャネルにエッジを書き込む。この書き込みは、ＳｉｍＣｈａｎｎｅｌオブジェクトの配列であるｍ＿ｃｈａｎｎｅｌｓの各要素におけるｓｅｔメソッドにより行われる。ＳｉｍＣｈａｎｎｅｌオブジェクトは、ｓｅｔメソッドの他、ｏｆｆメソッド及びｅｎｄメソッドを有する。ｏｆｆメソッドは、信号のドライブを中止する。ｅｎｄメソッドは、当該チャネルが所定の期間、すなわち例えばサイクル期間の信号の生成を終えたことをフレームワークに通知する。この通知を受けると、チャネルの反対側のコンポーネント、すなわち例えばＤＵＴ接続部２８０に対してチャネルの読み出しを指示するシグナルが通知される。この結果、生成した信号が当該コンポーネントによって読み出される。一般的には、使用者は、複数のｓｅｔメソッドにより所定の期間の電圧を特定した後、当該期間の最後にｅｎｄメソッドを１回呼び出すことで、当該期間の信号を生成し伝搬させることができる。なお、ｓｅｔメソッド及びｅｎｄメソッドの関係については、Ｂ．３．５において詳細に示す。
Ｂ．３．４  単純なデジタルストローブモジュール
図２４は、単純なデジタルストローブモジュールのクラス宣言を示す。開発者は、デジタルドライバモジュールと同様にして、コンストラクタ、ｇｅｔＭｏｄｕｌｅＩＤメソッド、ｉｎｉｔＥｖｅｎｔｓメソッド等を実装する。ここで、デジタルストローブモジュールにおいては、ＤＵＴの出力値及び期待値の比較結果をフェイルメモリに格納するため、ｒｅａｄ及びｗｒｉｔｅメソッドを変更する。
図２５は、デジタルストローブモジュールのｈａｎｄｌｅＥｖｅｎｔメソッドの一例である。デジタルストローブモジュールは、ＳｉｍＣｈａｎｎｅｌのｒｅａｄメソッドを用いて、特定のタイミングにおける当該チャネルの電圧を読み出す。そして、サイクル期間の処理を終えた後、ＳｉｍＥｖｅｎｔＭｇｒオブジェクトに次のサイクルの終了タイミングを通知しイベントの発生を要求すると共に、ｒｅｇｉｓｔｅｒＥｖｅｎｔメソッドにより当該イベントを登録する。
Ｂ．３．５  ＤＵＴモデルの実装
ＤＵＴモデルは、イベントドリブンでない点を除き、試験装置のモジュールと同様の手順により作成できる。したがって、ＤＵＴモデルの基本クラスＳｉｍＣｏｍｐｏｎｅｎｔＳｔｅｐｐｅｄは、ｉｎｉｔＥｖｅｎｔｓメソッド、ｈａｎｄｌｅＥｖｅｎｔメソッド、及びバスＩ／Ｏメソッドを実装可能とする。パターン実行の間におけるＤＵＴモデルの振る舞いを定義するために、関数ｒｕｎを実装する必要がある。
図２６は、試験装置によりドライブされた８本の配線が、試験装置に再度入力されるＤＵＴモデルのクラス定義を示す。開発者は、当該クラスに基づいて、コンストラクタ、ｇｅｔＣｈａｎｎｅｌメソッド、及びｒｕｎメソッド等を実装する。
図２７は、本ＤＵＴモデルのｒｕｎメソッドの一例を示す。ｒｕｎメソッドは、開始時刻及び終了時刻の２つの引数を有する。これらの引数により、ＤＵＴモデルは、入力端子からの入力に基づいて内部状態を開始時刻から終了時刻まで進め、ＤＵＴの内部状態の変化の結果に基づいてデータを出力する。入力は、ＳｉｍＣｈａｎｎｅｌオブジェクトを通して行われ、出力は、ＳｉｍＣｈａｎｎｅｌオブジェクトに対して送られる。ここで、出力は、終了時刻の後にまとめて行われる。
ｒｕｎメソッドは、入力端子をスキャンし、ＤＵＴの内部状態を更新し、ＤＵＴの出力チャネルにデータを出力するステップを含む。ここで、実行の時間ウィンドウの外に出力信号のｆａｌｌエッジが存在する場合においても、ｆａｌｌエッジを出力チャネルにｓｅｔメソッドにより書き込む必要がある。そして、ｅｎｄメソッドが呼び出される際には、出力信号はｆａｌｌした状態でなければならない。これにより、出力信号の値が変化しないため、当該チャネルの反対側のコンポーネントは、終了時刻までのチャネルの電圧値を正しく読み出すことができる。これを保証するために、フレームワークは、最後のｅｎｄメソッドの呼び出し後に、当該ｅｎｄメソッドより先の時刻についてのチャネルへの書き込みを禁止する。
Ｂ．３．６  オフラインのＤＬＬインターフェイス
次に、当該フレームワークに基づくモジュール及びＤＵＴモデルのＤＬＬをビルドし、これらのモデルのインスタンスを生成する関数、及び、処理の終了後にクリーンアップする関数をエクスポートする。これにより、試験装置のモジュールをエミュレートするＤＬＬ及びＤＵＴをエミュレートするＤＬＬを生成することができる。
（補足説明Ｃ）システムバスアクセスライブラリの仕様例
Ｃ．１  概要
図２８は、実環境６０００及びエミュレート環境６０５０におけるシステムバスアクセスライブラリ６０１４の位置付けを示します。ＤＵＴ１００の実環境６０００及び試験エミュレート装置１９０によるエミュレート環境６０５０において共通して用いられます。
図２８（ａ）は、実環境６０００（オンライン環境）におけるシステムバスアクセスライブラリ６０１４の位置付けを示します。ソフトウェア６０１０は、図１に示したサイト制御装置１３０上で動作するソフトウェアです。ソフトウェア６０１０は、試験装置１０の試験を制御するプログラムからＨＬＣ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ｃｏｍｍａｎｄ）を受け取って解釈してハードウェア６０３０へのアクセスコマンドを生成するＨＬＣ処理部６０１２と、アクセスコマンドに基づいて通信処理を行う通信ライブラリ及び通信ライブラリの指示に基づきシステムバス（本例においてはＰＣＩバス）をアクセスするバスアクセスライブラリを含むシステムバスアクセスライブラリ６０１４と、システムバスアクセスライブラリ６０１４の指示に基づいてシステムバスを制御するＰＣＩバスドライバ６０１６とを含みます。
ハードウェア６０３０は、図１に示したサイト制御装置１３０が有するバスＩＦ６０３２と、バススイッチ１４０と、同期モジュール１５０、同期接続モジュール１６０及び／又は試験モジュール１７０等とを含みます。サイト制御装置１３０のバススロットに接続されたバスＩＦ６０３２は、ＰＣＩバスドライバ６０１６により発行されたアクセスを、バススイッチ１４０を介して同期モジュール１５０及び／又は試験モジュール１７０等のモジュールへ送信し、当該アクセスの処理を行わせます。
図２８（ｂ）は、エミュレート環境６０５０（オフライン環境）におけるシステムバスアクセスライブラリ６０１４の位置付けを示します。オフラインプロセス６０６０は、図１に示したサイト制御装置１３０又は試験エミュレート装置１９０上で動作するソフトウェアであり、試験エミュレート装置１９０をサイト制御エミュレート部２３０として機能させます。オフラインプロセス６０６０は、ソフトウェア６０１０においてハードウェア６０３０を制御する代わりに試験装置エミュレートプロセス６０８０を制御するように変更されたプロセスです。オフラインプロセス６０６０は、ソフトウェア６０１０と略同様のＨＬＣ処理部６０１２及びシステムバスアクセスライブラリ６０１４を用いて、ソフトウェア６０１０の使用者に対してソフトウェア６０１０と共通のユーザレベルインターフェイスを提供します。
試験装置エミュレートプロセス６０８０は、試験装置１０をエミュレートするプロセスであり、バススイッチ１４０をエミュレートするシステムバスエミュレータ６０８４と、同期モジュール１５０、同期接続モジュール１６０、及び／又は試験モジュール１７０をエミュレートするモジュールエミュレータ６０８６とを含みます。システムバスエミュレータ６０８４は、試験エミュレート装置１９０をバススイッチエミュレート部２４０として機能させます。モジュールエミュレータ６０８６は、試験エミュレート装置１９０を同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０及び／又は試験モジュールエミュレート部２７０として機能させます。以下、明記しない限り、「モジュール」は、オンライン環境における同期モジュール１５０、同期接続モジュール１６０、及び試験モジュール１７０と、オフライン環境における同期モジュールエミュレート部２５０、同期接続モジュールエミュレート部２６０、及び試験モジュールエミュレート部２７０との総称として用います。
Ｃ．２  モジュール制御汎用関数
本章では、サイト制御装置１３０上で動作し同期モジュール１５０、同期接続モジュール１６０、及び／又は試験モジュール１７０を制御するモジュールドライバで利用できる汎用的な機能を説明します。モジュールドライバ内では、当ライブラリを用いて各種モジュール内のレジスタやメモリをアクセスし、デバイス測定に必要なデータをリード／ライトします。本章で説明する主な機能は下記のとおりです。
１．プログラムＩＯを用いたバスアクセス
２．ＤＭＡ機能を用いたバスアクセス
３．インターラプトハンドリング
４．ライブラリ／システムバスの制御
Ｃ．２．１  プログラムＩＯを用いたバスアクセス
システムバスのアクセスは、バス上に接続された各モジュールのレジスタへＭＷ（Ｍａｃｈｉｎｅ  Ｗｏｒｄ）を直接に書き込む方式と、各モジュールへＨＬＣ（Ｈｉｇｈ  Ｌｅｖｅｌ  Ｃｏｍｍａｎｄ）を転送する方式の２種類があります。何れの場合も、ＡｄｄｒｅｓｓとＤａｔａがシステムバス上を流れます。各モジュール側でＡｄｄｒｅｓｓによりＨＬＣと認識された場合、各モジュール側でそのＨＬＣに対応した処理を実行します。サイトＣＰＵ（サイト制御装置１３０）から各モジュールへのデータ書き込みは、サイトＣＰＵに接続されている各モジュールへ同じデータが一斉に送出され、各モジュール側で該当するデータを取り込みます。
システムバスや各モジュール内にはＦＩＦＯが配置されており、サイトＣＰＵから各モジュールへデータを転送した場合、各モジュールのライト動作の終了を待たないでＣＰＵのライト動作を終了します（ｐｏｓｔｅｄ  ｗｒｉｔｅ）。データが実際にレジスタに格納されるまでの時間は、ＣＰＵからターゲットのレジスタの間に存在するＦＩＦＯの空き状態によって影響を受けます。全てのモジュールに対してデータが確実に届いたことを保証する場合は、ＦＩＦＯのフラッシュ待ち機能を利用してください。各モジュール内のレジスタのリードを用いてＦＩＦＯをフラッシュする場合は、リード対象のモジュールのＦＩＦＯのみフラッシュされたことが保証できます。
オフラインのシステムバスエミュレータ６０８４にはＦＩＦＯはありません。そのためＦＩＦＯを持たないモジュールエミュレータ６０８６に対してＰＩＯのライトを実行した場合、モジュールエミュレータ６０８６のレジスタにデータを格納したあと関数から戻ります。
また、オンライン同様にＦＩＦＯを持ったモジュールエミュレータ６０８６にデータを書き込むと、モジュールエミュレータ６０８６のＦＩＦＯにデータを格納した後、直ちにライト処理を終了します。
Ｃ．２．１．１  プログラムＩＯを用いたライト
モジュールのレジスタに対してデータを書き込みます。サイトＣＰＵは、書き込んだデータがモジュールに到達する前にライト動作を終了します（ｐｏｓｔｅｄ  ｗｒｉｔｅ）。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｄａｔａ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（書き込むデータ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．１．２  プログラムＩＯを用いたリード
モジュールのレジスタのデータを読み出します。サイトＣＰＵは、データが読み出されるまで待ちます。また、ＣＰＵからターゲットのレジスタの間に存在するＦＩＦＯ内のデータがフラッシュされるまで対象レジスタのリードは待たされます。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データを読み込む変数へのポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．１．３  プログラムＩＯを用いたブロックライト
モジュールレジスタに対してまとまったデータを書き込みます。データのフォーマットはアドレスとデータをペアで指定します。システムバスはライトサイクルを指定された回数分実行します。
複数の任意アドレスに対してデータを書き込む場合は、毎回ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅ（）関数で書き込むよりも高速に実行することが可能です。これは、関数呼び出しが１回で済む点や複数回の排他処理が行われないためです。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｌｏｃｋ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｌｏｃｋ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ）；
・引数：ａｄｄｒｅｓｓ（アドレスが格納されている配列へのポインタ）、ｄａｔａ（データが格納されている配列へのポインタ）、ｎｕｍｂｅｒ（書き込むデータの数）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．１．４  プログラムＩＯを用いたブロックリード
モジュールのレジスタのデータをまとまった単位で読み出します。レジスタのアドレスは不連続な値で指定が可能です。システムバスはリードサイクルを指定された回数分実行します。
複数の任意アドレスからデータを読み込む場合は、毎回ＢＣＬ＿ＧＢＩ＿ｒｅａｄ（）関数で読み込むよりも高速に実行することが可能です。これは、関数呼び出しが１回で済む点や複数回の排他処理が行われないためです。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｌｏｃｋ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｌｏｃｋ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ）；
・引数：ａｄｄｒｅｓｓ（アドレスが格納されている配列へのポインタ）、ｄａｔａ（データを読み込む配列へのポインタ）、ｎｕｍｂｅｒ（読み込むデータの数）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．１．５  プログラムＩＯを用いた連続ブロックライト
モジュールの等間隔アドレスに配置されたレジスタに対してデータ列を書き込みます。指定された開始アドレスからデータ列を書き込み、データを書き込む毎にアドレスへオフセット値が加算されます。オフセット値は０から０ｘ３ｆｆｆｆｆｆまで指定することが可能です。システムバスはライトサイクルを指定された回数分実行します。
複数の固定オフセットアドレスに対してデータを書き込む場合は、ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｌｏｃｋ（）関数で書き込むよりも高速に実行することが可能です。これは、アドレスの加算がハードウェアで行われることにより、ＰＣＩバス上を流れるパケット数が少なくなるためです。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｅｑ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｅｑ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データが格納されている配列へのポインタ）、ｎｕｍｂｅｒ（書き込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．１．６  プログラムＩＯを用いた連続ブロックリード
モジュールの等間隔アドレスに配置されたレジスタからデータ列を読み込みます。指定された開始アドレスからデータ列を読み出し、データを読み出す毎にアドレスへオフセット値が加算されます。オフセット値は０から０ｘ３ｆｆｆｆｆｆまで指定することが可能です。システムバスはリードサイクルを指定された回数分実行します。
複数の固定オフセットアドレスからデータを読み込む場合は、ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｌｏｃｋ（）関数で読み込むよりも高速に実行することが可能です。これは、アドレスの加算がハードウェアで行われることにより、ＰＣＩバス上を流れるパケット数が少なくなるためです。
・名前：ＢＣＩ＿ＧＢＩ＿ｒｅａｄＳｅｑ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｅｑ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データを読み込むための配列へのポインタ）、ｎｕｍｂｅｒ（読み込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．２  ＤＭＡ機能を用いたバスアクセス
ＤＭＡを用いたデータ転送には、以下の同期／非同期のライト／リードの４種類の関数を準備しています。また、それぞれについて、バーストＤＭＡ／シングルＤＭＡを選択できます。
（１）同期／非同期ＤＭＡ
同期ＤＭＡの場合、関数はＤＭＡの終了を待って関数を終了します。ＤＭＡの終了を待って関数は終了しますが、転送データはシステムバスＩＦやモジュール内のＦＩＦＯに残っている場合があります。
非同期ＤＭＡの場合、関数はＤＭＡの終了を待たずに関数を終了します。このため、データ領域のライフサイクルをＤＭＡが終了するまで利用者側で保証する必要があります。また、非同期ＤＭＡの転送が終了しないあいだに、さらにＤＭＡを利用する関数が実行された場合、前のＤＭＡ転送が終了するまで関数は待たされます。非同期ＤＭＡ処理の完了を待つための識別情報として、転送ＩＤが用意されています。この転送ＩＤは、３２ビットの符号なしデータで、３２ビットを越える回数のＤＭＡ転送があった場合は、０に戻り再利用されます。
（２）バースト／シングルＤＭＡ
バーストＤＭＡ転送は、システムバス上をバースト専用のパケットでデータを転送します。この転送は、１個のアドレスとＮ個（最大６４個）のデータを１組のパケットとして、指定されたデータが終了するまでパケットを繰り返し転送します。このため高速転送が可能です。
また、ＤＭＡ転送時に各種モジュール側のアドレスの増加値を指定することができます。この増加値は、２組目以降のパケット転送時に、パケットの先頭アドレスの算出に利用します。すなわち、「（パケットのアドレス）＝（（指定した増加値）＊（前回のパケット中のデータの個数））＋（前回のパケットの先頭アドレス）」となります。
また、バースト転送が可能なレジスタは、モジュールに依存しているため、利用可能なレジスタかどうかの確認が必要です。
シングルＤＭＡ転送は、システムバス上をプログラムＩＯと同様にアドレスとデータがセットで転送されます。このため、転送速度はバーストＤＭＡより低いですが、どのレジスタに対しても転送が可能です。ＤＭＡ転送時、システムバス側のアドレスの増加値を指定することができます。この増加値は、アドレスを発生するごとにアドレスに増加値が加算されます。
オフラインの場合、バースト転送を指定しても内部的にはシングル転送として扱う仕様もとり得ます。この場合、バースト転送をサポートしてないレジスタへの転送も可能です。しかし、オンラインでの利用を考慮すると、ハードウェアでバースト転送をサポートしてないレジスタに対しての利用は避けてください。また、オフラインの同期／非同期ＤＭＡはオンラインと同様です。
Ｃ．２．２．１  ＤＭＡ機能を用いた同期ライト
サイトＣＰＵのメモリ上に配置したデータをＤＭＡを用いて各モジュールへ転送します。この関数は、同期ライトでバースト／シングルの指定が可能です。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｙｎｃＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｙｎｃＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｍｏｄｅ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データが格納されている配列へのポインタ）、ｎｕｍｂｅｒ（書き込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）、ｍｏｄｅ（Ｂｕｒｓｔ／Ｓｉｎｇｌｅの動作モード）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．２．２  ＤＭＡ機能を用いた同期リード
モジュール内のレジスタからＤＭＡを用いてデータをサイトＣＰＵのメモリ上へ読み出します。この関数は、同期リードでバースト／シングルの指定が可能です。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｙｎｃＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｙｎｃＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｍｏｄｅ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データを読み込むための配列へのポインタ）、ｎｕｍｂｅｒ（読み込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）、ｍｏｄｅ（Ｂｕｒｓｔ／Ｓｉｎｇｌｅの動作モード）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．２．３  ＤＭＡ機能を用いた非同期ライト
サイトＣＰＵのメモリ上に配置したデータをＤＭＡを用いて各種モジュールへ転送します。この関数は、非同期ライトでバースト／シングルの指定が可能です。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＡｓｙｎｃＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＡｓｙｎｃＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｍｏｄｅ，ｉｎｔ  ＊ｔｒａｎｓｆｅｒＩＤ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データが格納されている配列へのポインタ）、ｎｕｍｂｅｒ（書き込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）、ｍｏｄｅ（Ｂｕｒｓｔ／Ｓｉｎｇｌｅの動作モード）、ｔｒａｎｓｆｅｒＩＤ（転送終了待ちＩＤのポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．２．４  ＤＭＡ機能を用いた非同期リード
モジュール内のレジスタからＤＭＡを用いてデータをサイトＣＰＵのメモリ上へ読み出します。この関数は、非同期リードでバースト／シングルの指定が可能です。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄＡｓｙｎｃＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＡｓｙｎｃＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｄａｔａ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｏｆｆｓｅｔ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｍｏｄｅ）；
・引数：ａｄｄｒｅｓｓ（マシンワードのアドレス）、ｄａｔａ（データを読み込むための配列へのポインタ）、ｎｕｍｂｅｒ（読み込むデータの数）、ｏｆｆｓｅｔ（データ転送毎にアドレスに加算されるオフセット値）、ｍｏｄｅ（Ｂｕｒｓｔ／Ｓｉｎｇｌｅの動作モード）、ｔｒａｎｓｆｅｒＩＤ（転送終了待ちＩＤのポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．２．５  非同期ＤＭＡ転送の終了待ち
ＤＭＡを用いた非同期転送の転送終了を待ちます。この関数は、ＤＭＡが終了した場合あるいは指定した時間が経過した場合、関数を終了します。時間の指定範囲は、分解能が１ｍｓの３２ビット符号付きタイマを使用するため、０〜（ＩＮＴ＿ＭＡＸ／１０００）となります。この範囲外の指定を行った場合は、ＢＣＬ＿ＧＢＩ＿ＩＮＦＩＮＩＴＥを指定したのと同じ扱いになります。
また、ｔｒａｎｓｆｅｒＩＤを誤った値で指定した場合は、すぐにＢＣＬ＿ＧＢＩ＿ＯＫを返し、この関数を終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｗａｉｔＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗａｉｔＤＭＡ（ｕｎｓｉｇｉｎｅｄ  ｉｎｔ  ｔｒａｎｓｆｅｒＩＤ，ｄｏｕｂｌｅ  ｔｉｍｅＯｕｔ）；
・引数：ｔｒａｎｓｆｅｒＩＤ（非同期モード転送時に返された転送終了待ちＩＤ）、ｔｉｍｅＯｕｔ（待ち時間。ＢＣＬ＿ＧＢＩ＿ＩＮＦＩＮＩＴＥ：ＤＭＡが終了するまで待つ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（ＤＭＡが正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（ＤＭＡがエラー）、ＢＣＬ＿ＧＢＩ＿ＴＩＭＥＯＵＴ（タイムアウト）
Ｃ．２．２．６  非同期ＤＭＡ転送の状態
非同期ＤＭＡ転送の現在の状態を通知します。誤ったｔｒａｎｓｆｅｒＩＤを指定した場合、ＤＭＡの終了と同じ状態を通知します。
・名前：ＢＣＬ＿ＧＢＩ＿ｇｅｔＣｏｎｄｉｔｉｏｎＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｇｅｔＣｏｎｄｉｔｉｏｎＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｔｒａｎｓｆｅｒＩＤ）；
・引数：ｔｒａｎｓｆｅｒＩＤ（非同期モード転送時に返された転送終了待ちＩＤ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（ＤＭＡが正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（ＤＭＡがエラー）、ＢＣＬ＿ＧＢＩ＿ＢＵＳＹ（ＤＭＡ実行中）
Ｃ．２．３  インターラプトハンドリング
システムバスアクセスライブラリでは、インターラプトの基本的な操作を行うための機能を提供します。システムバスアクセスライブラリを利用して操作できるインターラプトには次の４種類があります。
１．Ｂｕｓエラー割り込み（オンラインのみ）
最大で６５個のインターラプトハンドラを登録することが可能です。
２．Ｂｕｓタイムアウト割り込み
最大で６５個のインターラプトハンドラを登録することが可能です。
３．Ｓｙｎｃエラー割り込み（オンラインのみ）
最大で６５個のインターラプトハンドラを登録することが可能です。
４．各種モジュールから発生する割り込み。
各バス番号で最大２個のインターラプトハンドラを登録することが可能です。
上記の割り込みは、ともにインターラプト専用スレッドで実行されます。
システムバスＩ／Ｆが発生する、Ｂｕｓエラー，Ｂｕｓタイムアウト，Ｓｙｎｃエラーの割り込みは、インターラプト専用スレッドの内部でインターラプトをディセーブルし、その後、それぞれ登録されている対象のインターラプトハンドラを順次実行します。対象となるインターラプトハンドラの実行終了後、インターラプト専用スレッドはインターラプトの要因をクリアし、内部でインターラプトをイネーブルします。
なお、インターラプトの受付はインターラプトスレッド内でのイネーブル／ディセーブルとは別に当ライブラリの関数でイネーブル／ディセーブルの制御が可能です。種モジュールで発生する割り込みは、インターラプト専用スレッドが内部でインターラプトをディセーブルし、当該モジュールに対してインターラプトのロックを実行します。その後、インターラプトを発生したバス番号に対応するインターラプトハンドラを順次実行します。対象となるインターラプトハンドラの実行終了後、インターラプト専用スレッドは当該モジュールに対してインターラプトの要因をクリアします。その後インターラプトのロックを解除し、内部でインターラプトをイネーブルします。
なお、インターラプトの受付はインターラプトスレッド内でのイネーブル／ディセーブルとは別に当ライブラリの関数でイネーブル／ディセーブルの制御が可能です。インターラプトの禁止／許可は、システムバスＩ／Ｆボード上と、各種モジュール上で、それぞれ制御が可能です。
システムバスＩ／Ｆボード側での禁止／許可は、単純にモジュールからのインターラプトをイネーブル／ディセーブルしています。モジュール側でのインターラプトのロック／アンロックは、モジュール側のインターラプトの発生元でインターラプトの発生を制御します。ロック中は、モジュール内で新たなインターラプトの発生を禁止し、さらにインターラプト関係のステータスの変化も禁止されています。アンロック後、モジュール側でのインターラプトの発生が可能となります。
Ｃ．２．３．１  モジュールインターラプトハンドラの登録
モジュールからインターラプトが発生した時のインターラプトハンドラ関数を登録します。登録された関数はインターラプトが発生した場合、インターラプトハンドラ専用のスレッドで実行されます。インターラプトハンドラは、バス番号とともに登録し、インターラプトを上げたモジュールのバス番号と登録されているバス番号が等しいインターラプトハンドラを起動します。
また、インターラプトハンドラに対して、登録時に設定した値を同時に戻します。インターラプトハンドラは、各バス番号ごとに２個登録することが可能です。バス番号は１から６４まで指定可能です。登録に成功すると戻り値にキー番号が返されます。このキー番号を使用して登録を行うと、そのキー番号のインターラプトハンドラの再登録及び、削除が可能になります。キー番号を０にして登録を行うと、空いているキー番号にインターラプトハンドラが設定されます。空いているキー番号がない場合は、エラーとなり戻り値に−１が返されます。インターラプトハンドラの実行は、２個登録されている場合、若いキー番号から順に実行されます。
インターラプトハンドラの削除は、コールバック関数のアドレスをＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＭＯＤＵＬＥ＿ＨＡＮＤＬＥＲとして登録します。インタラプトスレッドは、ＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＭＯＤＵＬＥ＿ＨＡＮＤＬＥＲのインタラプトハンドラは実行しません。各バス番号ごとの２個のインターラプトハンドラが両方ともＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＭＯＤＵＬＥ＿ＨＡＮＤＬＥＲとなった場合は、そのバス番号のインターラプトハンドラは初期状態に戻ります。（アクセスライブラリ内の標準インターラプトハンドラが設定されます。）
・名前：ＢＣＬ＿ＧＢＩ＿ａｄｄＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ａｄｄＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＢｕｓＮｏ，ｉｎｔ  ＫｅｙＮｏ，ＢＣＬ＿ＧＢＩ＿ＭＯＤＵＬＥ＿ＨＡＮＤＬＥＲ  ｈａｎｄｌｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・コールバック関数：ｖｏｉｄ  ＩｎｔｅｒｒｕｐｔＲｏｕｔｉｎｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＢｕｓＮｏ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  Ｆａｃｔｏｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・引数：ＢｕｓＮｏ（バス番号）、ＫｅｙＮｏ（キー番号）、ｈａｎｄｌｅｒ（コールバック関数のアドレス）、ａｒｇ（インターラプトハンドラへ渡す値）、Ｆａｃｔｏｒ（割り込み要因（各モジュールに依存））
・戻り値：インターラプトハンドラが登録されたキー番号（−１の場合、登録に失敗［不正なバス番号または、キー番号］）
Ｃ．２．３．２  バスエラーインターラプトハンドラの登録
システムバスでエラーが発生した場合のエラー処理関数を登録します。システムバスでエラーが発生した場合、インターラプトスレッドは、登録されている関数を実行します。なお、システムバスでエラーが発生した場合、インターラプトスレッドでインターラプトをクリアします。インターラプトハンドラ内でのクリアは必要ありません。
Ｂｕｓエラーのインターラプトハンドラは６５個まで登録することが可能です。登録に成功すると戻り値にキー番号が返されます。このキー番号を使用して登録を行うと、そのキー番号のインターラプトハンドラの再登録及び、削除が可能になります。キー番号を０にして登録を行うと、空いているキー番号にインターラプトハンドラが設定されます。空いているキー番号がない場合はエラーとなり、戻り値に−１が返されます。インターラプトハンドラの削除は、コールバック関数のアドレスをＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＢＵＳＥＲＲＯＲ＿ＨＡＮＤＬＥＲとして登録します。
インタラプトスレッドは、ＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＢＵＳＥＲＲＯＲ＿ＨＡＮＤＬＥＲのインタラプトハンドラは実行しません。６５個のインターラプトハンドラがすべてＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＢＵＳＥＲＲＯＲ＿ＨＡＮＤＬＥＲとなった場合は、初期状態に戻ります。（アクセスライブラリ内の標準インターラプトハンドラが設定されます。）Ｂｕｓエラーはシステムバス上の通信エラーやハードウェアの故障などが原因となり発生します。
なお、オフラインではＢｕｓでエラーが発生する要因がないため、本関数で登録されたハンドラは動作することはありません。
・名前：ＢＣＬ＿ＧＢＩ＿ａｄｄＢｕｓＥｒｒｏｒＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ａｄｄＢｕｓＥｒｒｏｒＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ（ｉｎｔ  ＫｅｙＮｏ，ＢＣＬ＿ＧＢＩ＿ＢＵＳＥＲＲＯＲ＿ＨＡＮＤＬＥＲ  ｈａｎｄｌｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・コールバック関数：ｖｏｉｄ  ＢｕｓＥｒｒｏｒＩｎｔｅｒｒｕｐｔＲｏｕｔｉｎｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・引数：ＫｅｙＮｏ（キー番号）、ｈａｎｄｌｅｒ（コールバック関数のアドレス）、ａｒｇ（インターラプトハンドラへ渡す値）
・戻り値：インターラプトハンドラが登録されたキー番号（−１の場合、登録に失敗［不正なバス番号または、キー番号］）
Ｃ．２．３．３  バスタイムアウトインターラプトハンドラの登録
システムバスでタイムアウトが発生した場合のエラー処理関数を登録します。システムバスでタイムアウトが発生した場合、インターラプトスレッドは、登録されている関数を実行します。なお、システムバスでタイムアウトが発生した場合、インターラプトスレッドでインターラプトをクリアします。
インターラプトハンドラ内でのクリアは必要ありません。Ｂｕｓタイムアウトのインターラプトハンドラは６５個まで登録することが可能です。登録に成功すると戻り値にキー番号が返されます。このキー番号を使用して登録を行うと、そのキー番号のインターラプトハンドラの再登録及び、削除が可能になります。キー番号を０にして登録を行うと、空いているキー番号にインターラプトハンドラが設定されます。空いているキー番号がない場合はエラーとなり、戻り値に−１が返されます。インターラプトハンドラの削除は、コールバック関数のアドレスをＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＴＩＭＥＯＵＴ＿ＨＡＮＤＬＥＲとして登録します。
インタラプトスレッドは、ＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＴＩＭＥＯＵＴ＿ＨＡＮＤＬＥＲのインタラプトハンドラは実行しません。６５個のインターラプトハンドラがすべてＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＴＩＭＥＯＵＴ＿ＨＡＮＤＬＥＲとなった場合は、初期状態に戻ります。（アクセスライブラリ内の標準インターラプトハンドラが設定されます。）Ｂｕｓタイムアウトはケーブル抜け状態でのリード時や受信先がいない場合のリード時に発生します。また、ハードウェアの故障などもその原因となります。
・名前：ＢＣＬ＿ＧＢＩ＿ａｄｄＴｉｍｅｏｕｔＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ａｄｄＴｉｍｅｏｕｔＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ（ｉｎｔ  ＫｅｙＮｏ，ＢＣＬ＿ＧＢＩ＿ＴＩＭＥＯＵＴ＿ＨＡＮＤＬＥＲ  ｈａｎｄｌｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・コールバック関数：ｖｏｉｄ  ＴｉｍｅｏｕｔＩｎｔｅｒｒｕｐｔＲｏｕｔｉｎｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  Ｆａｃｔｏｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・引数：ＫｅｙＮｏ（キー番号）、ｈａｎｄｌｅｒ（コールバック関数のアドレス）、ａｄｄｒｅｓｓ（タイムアウトが発生したマシンワードのアドレス）、Ｆａｃｔｏｒ（タイムアウトが発生した要因［ＢＣＬ＿ＧＢＩ＿ＦＡＣＴＯＲ＿ＭＯＤＵＬＥ：モジュールのリード、ＢＣＬ＿ＧＢＩ＿ＦＡＣＴＯＲ＿ＣＯＮＦＩＧ：コンフィグレーションのリード、ＢＣＬ＿ＧＢＩ＿ＦＡＣＴＯＲ＿ＷＲＩＴＥ：すべてのライト］）、ａｒｇ（インターラプトハンドラへ渡す値）
・戻り値：インターラプトハンドラが登録されたキー番号（−１の場合、登録に失敗［不正なバス番号または、キー番号］）
Ｃ．２．３．４  Ｓｙｎｃエラーインタラプトハンドラの登録
システムバスでＳｙｎｃエラーが発生した場合のエラー処理関数を登録します。システムバスでＳｙｎｃエラーが発生した場合、インターラプトスレッドは、登録されている関数を実行します。なお、システムバスでＳｙｎｃエラーが発生した場合、インターラプトスレッドでインターラプトをクリアします。インターラプトハンドラ内でのクリアは必要ありません。
Ｓｙｎｃエラーのインターラプトハンドラは６５個まで登録することが可能です。登録に成功すると戻り値にキー番号が返されます。このキー番号を使用して登録を行うと、そのキー番号のインターラプトハンドラの再登録及び、削除が可能になります。キー番号を０にして登録を行うと、空いているキー番号にインターラプトハンドラが設定されます。空いているキー番号がない場合はエラーとなり、戻り値に−１が返されます。
インターラプトハンドラの削除は、コールバック関数のアドレスをＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＳＹＮＣＥＲＲＯＲ＿ＨＡＮＤＬＥＲとして登録します。インタラプトスレッドは、ＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＳＹＮＣＥＲＲＯＲ＿ＨＡＮＤＬＥＲのインタラプトハンドラは実行しません。６５個のインターラプトハンドラがすべてＢＣＬ＿ＧＢＩ＿ＩＧＮＯＲＥ＿ＳＹＮＣＥＲＲＯＲ＿ＨＡＮＤＬＥＲとなった場合は、初期状態に戻ります。（アクセスライブラリ内の標準インターラプトハンドラが設定されます。）Ｓｙｎｃエラーはソフトウェアの設定ミスやハードウェアの設計不良により発生します。また、ハードウェアの故障などもその原因となります。
オフラインではＢｕｓでＳｙｎｃエラーが発生する要因がないため、本関数で登録されたハンドラは動作することはありません。
・名前：ＢＣＬ＿ＧＢＩ＿ａｄｄＳｙｎｃＥｒｒｏｒＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ａｄｄＳｙｎｃＥｒｒｏｒＩｎｔｅｒｒｕｐｔＨａｎｄｌｅｒ（ｉｎｔ  ＫｅｙＮｏ，ＢＣＬ＿ＧＢＩ＿ＳＹＮＣＥＲＲＯＲ＿ＨＡＮＤＬＥＲ  ｈａｎｄｌｅｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・コールバック関数：ｖｏｉｄ  ＳｙｎｃＥｒｒｏｒＩｎｔｅｒｒｕｐｔＲｏｕｔｉｎｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｒｇ）；
・引数：ＫｅｙＮｏ（キー番号）、ｈａｎｄｌｅｒ（コールバック関数のアドレス）、ａｒｇ（インターラプトハンドラへ渡す値）
・戻り値：インターラプトハンドラが登録されたキー番号（−１の場合、登録に失敗［不正なバス番号または、キー番号］）
Ｃ．２．４  ライブラリ／システムバスの制御
Ｃ．２．４．１  ＦＩＦＯのフラッシュ待ち
サイトＣＰＵに接続されているシステムバスと接続されている全てのモジュールのＦＩＦＯのフラッシュを待ちます。ＦＩＦＯは、システムバスＩ／Ｆボード内とモジュール内に存在します。この関数を終了した時、この関数の実行に入る直前のＦＩＦＯ内に存在するデータが全てモジュールにライトされたことを意味します。この関数を実行中、ＣＰＵはＰＣＩバスに対してリードサイクルを発行しているため、ＦＩＦＯがフラッシュされるまでバスをハード的にロックしています。このためＤＭＡ転送やインターラプトの受け付けに遅延を生じる場合があります。また、この関数の実行によりタイムアウトが発生する場合があります。
オフラインの場合は、システムバスエミュレータのＦＩＦＯは存在しません。また、モジュール内のＦＩＦＯの存在はベンダ依存です。
・名前：ＢＣＬ＿ＧＢＩ＿ｗａｉｔＦｌｕｓｈＦＩＦＯ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗａｉｔＦｌｕｓｈＦＩＦＯ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（フラッシュ完了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．４．２  モジュールのリセット
サイトＣＰＵに接続されているモジュールにたいして、リセットを行います。この関数内では、下記の処理を実行します。
１．システムバスへバスリセットパケットの送出。
２．システムバスへインターラプトのクリア用パケットの送出。
３．システムバスへインターラプトのアンロックパケットの送出。
なお、リセットの動作やかかる時間については、各モジュールに依存します。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅｓｅｔＭｏｄｕｌｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅｓｅｔＭｏｄｕｌｅ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．４．３  ライブラリの初期化
システムバスアクセスライブラリの初期化を行います。システムバスアクセスライブラリを利用する場合、最初にこの初期化処理を実行する必要があります。また、この関数内では下記の処理を実行します。
１．アクセスライブラリの変数の初期化。
２．インターラプトハンドラを実行するためのスレッドを起動。
また、システムバスＩ／Ｆ上のインターラプトはディセーブルの状態です。
オフラインの場合はこの関数でシステムバスエミュレータとのプロセス間通信の準備をします。システムバスエミュレータと３０秒以内に接続が確立されないとタイムアウトになります。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｉｔ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｉｔ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｉｔｅＮｏ，ｉｎｔ  ｍｏｄｅ）；
・引数：ｓｉｔｅＮｏ（サイト番号［１〜８］）、ｍｏｄｅ（オンライン／オフラインの指定。ＢＣＬ＿ＧＢＩ＿ＯＮＬＩＮＥ：オンライン、ＢＣＬ＿ＧＢＩ＿ＯＦＦＬＩＮＥ：オフライン）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（サイト番号が規定外）、ＢＣＬ＿ＧＢＩ＿ＴＩＭＥＯＵＴ（オフラインにおいて３０秒以内にシステムバスエミュレータと接続できない）
Ｃ．２．４．４  ライブラリの開放
システムバスアクセスライブラリの使用終了の処理を行います。
・名前：ＢＣＬ＿ＧＢＩ＿ｆｉｎｉｓｈ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｆｉｎｉｓｈ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｉｔｅＮｏ）；
・引数：ｓｉｔｅＮｏ（サイト番号［１〜８］）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（サイト番号が規定外）
Ｃ．２．４．５  オンライン／オフラインの識別（ＢＣＬ＿ＧＢＩ＿ｉｓＯｎｌｉｎｅ）
現在動作中のシステムバスアクセスライブラリがオンラインで動作中か、オフラインで動作中か識別します。
・名前：
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｓＯｎｌｉｎｅ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＮＬＩＮＥ（オンライン）、ＢＣＬ＿ＧＢＩ＿ＯＦＦＬＩＮＥ（オフライン）
Ｃ．２．４．６  ＧＢＳＣとの通信可否の確認
システムバスＩ／ＦとＧＢＳＣ（システム制御装置１１０）との通信が可能かどうかの確認をします。これにより、ＧＢＳＣの電源が入っている事が確認できます。
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｇｅｔＣｏｎｎｅｃｔｅｄ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｃｏｎｎｅｃｔ）；
・引数：ｃｏｎｎｅｃｔ（通信可否の結果を格納する変数へのポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．２．４．７  詳細エラー情報の取得
システムバスアクセスライブラリがＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲを返したときの詳細エラー情報を返します。
・名前：ＢＣＬ＿ＧＢＩ＿ｇｅｔＬａｓｔＥｒｒｏｒ
・形式：ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｇｅｔＬａｓｔＥｒｒｏｒ（ｖｏｉｄ）；
・引数：なし
・戻り値：無符号の３２ビットエラー情報を返します。
ｂｉｔ３１：エラーコードの種別を特定する値
０：Ｗｉｎｄｏｗｓのエラーコード（Ｓｙｓｔｅｍ  Ｅｒｒｏｒ  Ｃｏｄｅｓを参照）
１：アクセスライブラリ固有のエラーコード
ｂｉｔ３０−２４：エラーが発生した関数内の場所を特定する値（内部情報）
ｂｉｔ２３−１６：エラーが発生したアクセスライブラリ関数を特定する値
ｂｉｔ１５−０：エラーコード
ｂｉｔ３１が０のとき：ＧｅｔＬａｓｔＥｒｒｏｒ（）の下位１６ｂｉｔ値
ｂｉｔ３１が１のとき：アクセスライブラリの内部エラー値
Ｃ．２．４．８  詳細エラー情報履歴の取得
現在までに使用されたシステムバスアクセスライブラリがＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲを返したときの詳細エラー情報を最大で過去１６回分まで返します。
・形式：ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｇｅｔＰｒｅｖｉｏｕｓＥｒｒｏｒｓ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｅｒｒｏｒ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｉｚｅ）；
・名前：ＢＣＬ＿ＧＢＩ＿ｇｅｔＰｒｅｖｉｏｕｓＥｒｒｏｒｓ
・引数：ｅｒｒｏｒ（エラー情報を格納する配列変数のポインタ。エラー情報のフォーマットはＢＣＬ＿ＧＢＩ＿ｇｅｔＬａｓｔＥｒｒｏｒ（）と同様）、ｓｉｚｅ（エラー情報を格納する配列変数のサイズ）
・戻り値：格納されたエラー情報の数を返します。
Ｃ．３  タイマ関数
本章では、システムバスＩ／Ｆボード上のタイマハードウェアを利用するための関数について説明します。システムバスＩ／Ｆボード上に実装されたハードウェアのタイマの分解能は１［ｕｓ］です。
Ｃ．３．１  経過時間の読み出し
Ｃ．３．１．１  時間の読み出し
システムバスアクセスライブラリの初期化が実行されてからの経過時間を秒［ｓ］で読み出します。
＜制約事項＞
分解能は１［ｕｓ］ですが、ｄｏｕｂｌｅ型に変換して読み出しているため、ｄｏｕｂｌｅの有効桁＊１［ｕｓ］以上の値が読み出された場合、１［ｕｓ］の分解能が得られない場合があります。ｄｏｕｂｌｅの有効桁は１０進の１５桁で、理論上、システムバスアクセスライブラリを初期化してから約３１年経過した場合、１［ｕｓ］の分解能が得られなくなります。
ハードウェアのカウンタは６４ビットで動作しているため、システムバスアクセスライブラリを初期化してから理論上約５８万年後に０に戻ります。プログラム上、一定の間隔で読み出しを行った場合の差分（経過時間）は、ＣＰＵの負荷状態、ＰＣＩバスの負荷状態およびＦＩＦＯの状態により一定の値にならない場合があります。
＜オフライン＞
オフラインでは、オフラインプロセスが動作するサイトＣＰＵが起動してからの経過時間を秒［ｓ］で読み出します。
・名前：ＢＣＬ＿ＴＭＲ＿ｒｅａｄＴｉｍｅ
・形式：ｉｎｔ  ＢＣＬ＿ＴＭＲ＿ｒｅａｄＴｉｍｅ（ｄｏｕｂｌｅ  ＊ｔｉｍｅ）；
・引数：ｔｉｍｅ（システムバスアクセスライブラリが初期化されてからの経過時間［ｓ］）
・戻り値：ＢＣＬ＿ＴＭＲ＿ＯＫ（正常終了）
Ｃ．３．１．２  タイマカウンタの読み出し
システムバスアクセスライブラリの初期化が実行されてからの経過時間をカウント値で読み出します。カウント値は１［ｕｓ］経過するごとに１が加算されます。
＜制約事項＞
ハードウェアのカウンタは６４ビットで動作しているため、システムバスアクセスライブラリを初期化してから理論上約５８万年後に０に戻ります。また、プログラム上一定の間隔で読み出しを行った場合の差分（経過時間）は、ＣＰＵの負荷状態、ＰＣＩバスの負荷状態およびＦＩＦＯの状態により一定の値にならない場合があります。
オフラインでは、オフラインプロセスが動作するサイトＣＰＵが起動してからの経過時間をカウント値で読み出します。
・名前：ＢＣＬ＿ＴＭＲ＿ｒｅａｄＣｏｕｎｔ
・形式：ｉｎｔ  ＢＣＬ＿ＴＭＲ＿ｒｅａｄＣｏｕｎｔ（ｕｎｓｉｇｎｅｄ＿ｉｎｔ６４  ＊ｃｏｕｎｔ）；
・引数：ｃｏｕｎｔ（システムバスアクセスライブラリが初期化されてからのカウント値［１［ｕｓ］／１カウント］）
・戻り値：ＢＣＬ＿ＴＭＲ＿ＯＫ（正常終了）
Ｃ．３．２  時間待ち関連関数
Ｃ．３．２．１  時間待ち
指定された時間の経過後、関数は戻ります。待ち時間（ｔｉｍｅ）に１［ｕｓ］未満の値を指定した場合、直ちに関数は戻ります。ＣＰＵの負荷状況により指定された時間より経過時間が長く過ぎてから戻る場合があります。
オフラインでは、１［ｍｓ］未満は切捨てされた値で時間待ちを実行します。たとえば、待ち時間（ｔｉｍｅ）に１［ｍｓ］未満の値を指定した場合、直ちに関数は戻ります。また、最大待ち時間は、４２９４９６７．２９６［ｓ］（約４９日）です。
・名前：ＢＣＬ＿ＴＭＲ＿ｗａｉｔ
・形式：ｉｎｔ  ＢＣＬ＿ＴＭＲ＿ｗａｉｔ（ｄｏｕｂｌｅ  ｔｉｍｅ）；
・引数：ｔｉｍｅ（待ち時間を秒単位［ｓ］で指定）
・戻り値：ＢＣＬ＿ＴＭＲ＿ＯＫ（正常終了）、ＢＣＬ＿ＴＭＲ＿ＥＲＲＯＲ（待ちがキャンセルされた）
Ｃ．３．２．２  時間待ち関数のキャンセル
現在実行中の全てのＢＣＬ＿ＴＭＲ＿ｗａｉｔ関数の実行をキャンセルします。複数のスレッドで動作している場合、すべてのＢＣＬ＿ＴＭＲ＿ｗａｉｔ関数について実行がキャンセルされます。
・名前：ＢＣＬ＿ＴＭＲ＿ｃａｎｃｅｌ
・形式：ｉｎｔ  ＢＣＬ＿ＴＭＲ＿ｃａｎｃｅｌ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＴＭＲ＿ＯＫ（正常終了）
Ｃ．４  コンフィグレーション／診断専用関数
本章ではハードウェアのコンフィグレーションおよびハードウェア診断で利用する関数を説明します。ハードウェアのコンフィグレーションおよびハードウェア診断以外で利用した場合、各種モジュールへのデータ転送やインターラプトの処理が正しく処理できなくなります。システムバスＩ／Ｆボード、ＢｕｓＳｗｉｔｃｈ、各種モジュールなどハードウェア構造を熟知した上、ハードウェアのコンフィグレーションおよびハードウェア診断関数内で利用してください。
当ライブラリでは実行時にランタイムエラーとなりませんが、バスコンフィグレーション関数およびハードウェア診断関数以外で利用した場合、当ライブラリおよびシステムバスＩ／Ｆボードのディバイスドライバのインターラプトに関する動作は保障しません。
Ｃ．４．１  コンフィグレーション制御（特殊関数）
本節で説明する関数は、システムバスＩ／Ｆおよび各種モジュールのコンフィグレーションで利用する関数です。不注意に操作すると各種モジュールへのデータの転送ができなくなりますので、ハードウェアやソフトウェアの構造を熟知した上、利用してください。
Ｃ．４．１．１  バスコンフィグレーションライト
システムバスＩ／Ｆおよび各種モジュールのコンフィグレーションレジスタに対してデータを書き込みます。また、コンフィグレーションデータがシステムバスＩ／Ｆおよび各種モジュールに格納された後、この関数を終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｕｓＣｏｎｆｉｇ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｕｓＣｏｎｆｉｇ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｃｏｎｆｉｇ）；
・引数：ａｄｄｒｅｓｓ（コンフィグレーションデータのアドレス）、ｃｏｎｆｉｇ（書き込むコンフィグレーションデータ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．１．２  バスコンフィグレーションリード
システムバスＩ／Ｆおよび各種モジュールのコンフィグレーションレジスタからデータを読み出します。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｕｓＣｏｎｆｉｇ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｕｓＣｏｎｆｉｇ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｃｏｎｆｉｇ）；
・引数：ａｄｄｒｅｓｓ（コンフィグレーションデータのアドレス）、ｃｏｎｆｉｇ（コンフィグレーションデータを格納する変数へのポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．１．３  バススイッチコンフィグレーションの設定終了
オンラインでは、何も実行されません。
オフラインでは、バススイッチのコンフィグレーションライトを完了した際、当関数を実行することによりオフラインのバスの接続が切り替わります。
・名前：ＢＣＬ＿ＧＢＩ＿ｄｅｃｉｄｅＢｕｓＭａｔｒｉｘ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｄｅｃｉｄｅＢｕｓＭａｔｒｉｘ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２  インターラプト制御（特殊関数）
本節で説明する関数は、バスコンフィグレーションおよびハードウェア診断で利用する関数です。システムバスＩ／Ｆボード上のインターラプトを直接制御するため、不注意に操作するとシステムバスＩ／Ｆボードのディバイスドライバや当ライブラリがインターラプトの処理を正しく実行できなくなります。
Ｃ．４．２．１  Ｂｕｓ  Ｉ／Ｆボードインターラプトイネーブル
各種インターラプト信号をシステムバスＩ／Ｆボード上でイネーブルにします。インターラプト信号には、各種モジュールからの割り込み、Ｂｕｓエラー、Ｂｕｓタイムアウト、Ｓｙｎｃエラーの４種類があります。これらの信号は下記で定義されたビット情報として設定できます。複数のインターラプト信号を指定する場合は、論理和として設定します。この関数は、システムバスＩ／Ｆ上でインターラプトがイネーブルになったことを確認後、終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＥｎａｂｌｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＥｎａｂｌｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｔａｔｕｓ）；
・引数：ｓｔａｔｕｓ（インターラプト信号の指定。ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＭＯＤＵＬＥ：モジュールからの割り込み、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＢＵＳＥＲＲＯＲ：Ｂｕｓエラー、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＴＩＭＥＯＵＴ：Ｂｕｓタイムアウト、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＳＹＮＣＥＲＲＯＲ：Ｓｙｎｃエラー）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．２  Ｂｕｓ  Ｉ／Ｆボードインターラプトディセーブル
各種インターラプト信号をシステムバスＩ／Ｆボード上でディセーブルにします。インターラプト信号には、各種モジュールからの割り込み、Ｂｕｓエラー、Ｂｕｓタイムアウト、Ｓｙｎｃエラーの４種類があります。これらの信号は下記で定義されたビット情報として設定できます。複数のインターラプト信号を指定する場合は、論理和として設定します。この関数は、システムバスＩ／Ｆ上でインターラプトがディセーブルになったことを確認後、終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＤｉｓａｂｌｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＤｉｓａｂｌｅ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｔａｔｕｓ）；
・引数：ｓｔａｔｕｓ（インターラプト信号の指定。ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＭＯＤＵＬＥ：モジュールからの割り込み、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＢＵＳＥＲＲＯＲ：Ｂｕｓエラー、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＴＩＭＥＯＵＴ：Ｂｕｓタイムアウト、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＳＹＮＣＥＲＲＯＲ：Ｓｙｎｃエラー）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．３  Ｂｕｓ  Ｉ／Ｆボードインターラプトリード
各種インターラプト信号をシステムバスＩ／Ｆボード上で読み込みます。インターラプト信号には、各種モジュールからの割り込み、Ｂｕｓエラー、Ｂｕｓタイムアウト、Ｓｙｎｃエラーの４種類があります。これらの信号は下記で定義されたビット情報として読み込まれます。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＲｅａｄ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＲｅａｄ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊ｓｔａｔｕｓ）；
・引数：ｓｔａｔｕｓ（インターラプト信号を読み込む変数へのポインタ。ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＭＯＤＵＬＥ：モジュールからの割り込み、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＢＵＳＥＲＲＯＲ：Ｂｕｓエラー、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＴＩＭＥＯＵＴ：Ｂｕｓタイムアウト、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＳＹＮＣＥＲＲＯＲ：Ｓｙｎｃエラー）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．４  Ｂｕｓ  Ｉ／Ｆボードインターラプトクリア
各種インターラプト信号をシステムバスＩ／Ｆボード上でクリアします。インターラプト信号には、各種モジュールからの割り込み、Ｂｕｓエラー、Ｂｕｓタイムアウト、Ｓｙｎｃエラーの４種類があります。これらの信号は下記で定義されたビット情報として設定できます。複数のインターラプト信号を指定する場合は、論理和として設定します。
モジュールからの割り込み（ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＭＯＤＵＬＥ）のみが指定された場合は、この関数が実行される直前の各モジュールのＦＩＦＯをフラッシュしたあと、システムバスＩ／Ｆ上のインターラプトをクリアし、システムバスＩ／Ｆ上でインターラプトがクリアになったことを確認後、終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＣｌｅａｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＣｌｅａｒ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｓｔａｔｕｓ）；
・引数：ｓｔａｔｕｓ（インターラプト信号の指定。ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＭＯＤＵＬＥ：モジュールからの割り込み、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＢＵＳＥＲＲＯＲ：Ｂｕｓエラー、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＴＩＭＥＯＵＴ：Ｂｕｓタイムアウト、ＢＣＬ＿ＧＢＩ＿ＩＮＴ＿ＳＹＮＣＥＲＲＯＲ：Ｓｙｎｃエラー）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．５  Ｓｙｎｃするモジュール数の設定
サイトＣＰＵに接続されているシステムバスと接続されている全てのモジュールの数をシステムバスＩ／Ｆボード上に設定します。この設定を行うことにより、ＦＩＦＯをＳｙｎｃするモジュールの数が決定されます。
オフラインの場合は、システムバスエミュレータのＦＩＦＯは存在しません。また、モジュール内のＦＩＦＯの存在はベンダ依存です。
・名前：ＢＣＬ＿ＧＢＩ＿ｓｅｔＳｙｎｃＣｏｕｎｔ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｓｅｔＳｙｎｃＣｏｕｎｔ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｎｕｍｂｅｒ）；
・引数：ｎｕｍｂｅｒ（Ｓｙｎｃするモジュールの数）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．６  インターラプトの設定状態のセーブ
システムバスＩ／Ｆボード上のインターラプト信号の設定状態（イネーブル／ディゼーブル）及び、モジュールからのインターラプト発生の設定状態（ロック／アンロック）をセーブします。この関数は、診断等でインターラプト操作を行う前に、現在の設定状態をセーブする目的で使用されます。セーブされた内容は、ＢＣＬ＿ＧＢＩ＿ｒｅｓｔｏｒｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ（）関数でリストアされます。この関数が２回以上実行された場合は、以前にセーブされた設定状態は取り消され、最後にセーブした設定状態のみ有効となります。
オフラインでは無効な機能のため、本関数内では何も行いません。
・名前：ＢＣＬ＿ＧＢＩ＿ｓａｖｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｓａｖｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．７  インターラプトの設定状態のリストア
ＢＣＬ＿ＧＢＩ＿ｓａｖｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ（）関数によりセーブされたシステムバスＩ／Ｆボード上のインターラプト信号の設定状態（イネーブル／ディゼーブル）及び、各種モジュールからのインターラプト発生の設定状態（ロック／アンロック）をリストアします。この関数は、診断等でインターラプト操作を行った後に、操作前の設定状態に戻す目的で使用されます。ＢＣＬ＿ＧＢＩ＿ｓａｖｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ（）関数によるセーブが行わずに本関数が実行された場合は、エラーを返します。この関数が２回以上実行されてもエラーとはならず、常に最後にセーブされた設定状態がリストアされます。
オフラインでは無効な機能のため、本関数内では何も行いません。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅｓｔｏｒｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅｓｔｏｒｅＩｎｔｅｒｒｕｐｔＣｏｎｄｉｔｉｏｎ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．４．２．８  モジュールインターラプト要因の読み出し
各種モジュールからインターラプトが発生した場合の要因とその要因数を読み出します。インターラプトの要因は最大２５６個（４バイト／要因）あります。このうち発生したインターラプトの要因数分だけ要因を返します。要因の読み出し用バッファは、最大要因数分のインターラプトが発生した場合を考慮して最大要因数（ｕｎｓｉｇｎｅｄ  ｉｎｔ型で２５６個）確保する必要があります。
オフラインでは無効な機能のため、本関数内では何も行いません。
・名前：ＢＣＬ＿ＧＢＩ＿ｒｅａｄＩｎｔｅｒｒｕｐｔＦａｃｔｏｒ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｒｅａｄＩｎｔｅｒｒｕｐｔＦａｃｔｏｒ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ＊Ｆａｃｔｏｒ，ｉｎｔ  ＊ｎｕｍｂｅｒ）；
・引数：Ｆａｃｔｏｒ（割り込み要因を読み込む配列へのポインタ）、ｎｕｍｂｅｒ（割り込み要因数を格納するポインタ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５  非公開関数
非公開関数です。
Ｃ．５．１．１  非同期ＤＭＡ転送のキャンセル（非公開）
実行中の非同期ＤＭＡ転送をキャンセルします。同期ＤＭＡはキャンセルできません。また、誤ったｔｒａｎｓｆｅｒ  ＩＤを指定した場合、ＤＭＡのキャンセルは実行されず、正常終了のステータスが戻ります。
・名前：ＢＣＬ＿ＧＢＩ＿ｃａｎｃｅｌＤＭＡ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｃａｎｃｅｌＤＭＡ（ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｔｒａｎｓｆｅｒＩＤ）；
・引数：ｔｒａｎｓｆｅｒＩＤ（非同期モード転送時に返された転送終了待ちＩＤ）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．２  ＰＣＩベースアドレスの取得（非公開）
システムバスＩ／Ｆボードで使用するＰＣＩバスのベースアドレスを取得します。この関数は、システムバスＩ／Ｆボードの診断等で使用されます。このアドレスは、取得したプロセスでのみ使用可能です。取得したアドレスがＮＵＬＬであった場合は、本ライブラリの初期設定が行われていません。ＢＣＬ＿ＧＢＩ＿ｉｎｉｔ関数によりライブラリの初期化を行ってから使用してください。
オフラインでは無効な機能のため、本関数内では何も行いません。
・名前：ＢＣＬ＿ＧＢＩ＿ｅｘｐｏｒｔＰｃｉＢａｓｅＡｄｄｒｅｓｓ
・形式：ＰＵＬＯＮＧ  ＢＣＬ＿ＧＢＩ＿ｅｘｐｏｒｔＰｃｉＢａｓｅＡｄｄｒｅｓｓ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＮＵＬＬ（エラー）、ＮＵＬＬ以外（システムバスＩ／ＦのＰＣＩベースアドレス）
Ｃ．５．１．３  モジュールインターラプトロック（非公開）
モジュールからのインターラプトの発生を発生元で禁止します。インターラプトのロックを設定すると以後新規にインターラプトの発生をモジュール側で禁止します。なお、この関数は、各モジュールにロックが格納された後終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＬｏｃｋ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＬｏｃｋ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．４  モジュールインターラプトアンロック（非公開）
モジュールからのインターラプトの発生を発生元で許可します。この関数を実行すると、ロック中に発生を待たされていたインターラプトやアンロック以後のインターラプトの発生が各種モジュール側で可能となります。
なお、この関数は、各モジュールにアンロックが格納された後終了します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＵｎｌｏｃｋ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｎｔｅｒｒｕｐｔＵｎｌｏｃｋ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．５  詳細エラー情報の出力（非公開）
システムバスアクセスライブラリがＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲを返したときの詳細エラー情報を標準出力ストリームに出力します。
・名前：ＢＣＬ＿ＧＢＩ＿ｐｒｉｎｔＬａｓｔＥｒｒｏｒ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｐｒｉｎｔＬａｓｔＥｒｒｏｒ（ｖｏｉｄ）；
・引数：なし
・戻り値：なし
Ｃ．５．１．６  詳細エラー情報履歴の出力（非公開）
現在までに使用されたシステムバスアクセスライブラリがＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲを返したときの詳細エラー情報を最大で過去１６回分まで標準出力ストリームに出力します。
・名前：ＢＣＬ＿ＧＢＩ＿ｐｒｉｎｔＰｒｅｖｉｏｕｓＥｒｒｏｒｓ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｐｒｉｎｔＰｒｅｖｉｏｕｓＥｒｒｏｒｓ（ｖｏｉｄ）；
・引数：なし
・戻り値：なし
Ｃ．５．１．７  デバッグ・モードの制御（非公開）
アクセスライブラリに実装したデバッグ・モードの制御を行います。
・名前：ＢＣＬ＿ＧＢＩ＿ｖｅｒｂｏｓｅ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｖｅｒｂｏｓｅ（ｉｎｔ  ｖａｌ）；
・引数：ｖａｌ（デバッグ・モードの指定）
・戻り値：なし
Ｃ．５．１．８  レース機能のイネーブル（非公開）
システムバスアクセスライブラリのトレース機能をイネーブルにします。トレース機能をイネーブルにすると、バスアクセスや関数のトレースが有効となります。バスアクセスのトレースでは、アクセスしたアドレスとデータ及び、リード／ライトの識別が標準出力ストリームに表示されます。関数のトレースでは、実行された関数名が標準出力ストリームに表示されます。また、トレースを実行する関数は、任意の関数を登録して置き換える事も可能です。
バスアクセスのトレースを行うアクセスライブラリの関数は以下の通りです。
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｌｏｃｋ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｌｏｃｋ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｅｑ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｅｑ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｙｎｅＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＡｓｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＡｓｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＣｏｎｆｉｇ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＣｏｎｆｉｇ
関数のトレースを行うアクセスライブラリの関数は以下の通りです。
ＢＣＬ＿ＧＢＩ＿ｗａｉｔＦｌｕｓｈＦＩＦＯ
ＢＣＬ＿ＧＢＩ＿ｗａｉｔＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｃａｎｃｅｌＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｃｏｎｄｉｔｉｏｎＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｓｙｎｃＣｏｕｎｔ
ＢＣＬ＿ＧＢＩ＿ｒｅｓｅｔＭｏｄｕｌｅ
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＥｎａｂｌｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＥｎａｂｌｅ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．９  トレース機能のディセーブル（非公開）
システムバスアクセスライブラリのトレース機能をディセーブルにします。トレース機能をディセーブルにすると、バスアクセスや関数のトレースが無効となります。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＤｉｓａｂｌｅ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＤｉｓａｂｌｅ（ｖｏｉｄ）；
・引数：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．１０  トレース機能のアドレスフィルタ指定（非公開）
バスアクセスのトレース機能に関するアドレスフィルタの指定を行います。フィルタの指定方法は、モードによって単一指定または、連続指定が可能です。指定できる組み合わせは最大で１６通りの指定が可能です。トレース機能がイネーブルとなっている場合は、この組み合わせのいずれかに該当したアドレスのみトレース対象となります。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＡｄｄｒｅｓｓ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＡｄｄｒｅｓｓ（ｉｎｔ  ｍｏｄｅ，．．．）；
ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＡｄｄｒｅｓｓ（０）；
ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＡｄｄｒｅｓｓ（１，ａｄｄｒ）；
ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＡｄｄｒｅｓｓ（２，ｓｔａｒｔ＿ａｄｄｒ，ｓｔｏｐ＿ａｄｄｒ）；
・引数：ｍｏｄｅ（フィルタ・モードの指定。０：フィルタ指定の解除、１：単一アドレス指定、２：連続アドレス指定）、ａｄｄｒ（単一アドレス指定時の対象アドレス）、ｓｔａｒｔ＿ａｄｄｒ（連続アドレス指定時の開始アドレス）、ｓｔｏｐ＿ａｄｄｒ（連続アドレス指定時の終了アドレス）
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．１１  トレース機能の設定情報出力（非公開）
現在設定されているトレース機能に関する設定情報を標準出力ストリームに出力します。トレースのイネーブル／ディセーブル状態やアドレスフィルタの設定状態を確認する事が出来ます。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＳｈｏｗ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＳｈｏｗ（ｖｏｉｄ）；
・引数：なし
・戻り値：なし
Ｃ．５．１．１２  トレース機能の簡易ヘルプ情報出力（非公開）
トレース機能に関する簡易ヘルプ情報を標準出力ストリームに出力します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨｅｌｐ
・形式：ｉｎｔ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨｅｌｐ（ｖｏｉｄ）；
・引数：なし
・戻り値：なし
Ｃ．５．１．１３  トレース関数の登録（非公開）
トレース機能を実行するデフォルトのトレース関数を任意のトレース関数に置き換えます。トレース機能がイネーブルとなっていれば、直後のトレース対象のアクセスライブラリ関数から登録された関数が実行されます。登録できる関数は１個で、既に登録されている場合は、上書きで登録されます。デフォルトのトレース関数に戻す場合は、ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＲｅｓｅｔＨａｎｄｌｅｒ関数を実行します。
トレースが行われるアクセスライブラリの関数は以下のとおりです。
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＢｌｏｃｋ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＢｌｏｃｋ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｅｑ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｅｑ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＳｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＳｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＡｓｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＡｓｙｎｃＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｗｒｉｔｅＣｏｎｆｉｇ
ＢＣＬ＿ＧＢＩ＿ｒｅａｄＣｏｎｆｉｇ
ＢＣＬ＿ＧＢＩ＿ｗａｉｔＦｌｕｓｈＦＩＦＯ
ＢＣＬ＿ＧＢＩ＿ｗａｉｔＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｃａｎｃｅｌＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｃｏｎｄｉｔｉｏｎＤＭＡ
ＢＣＬ＿ＧＢＩ＿ｓｙｎｃＣｏｕｎｔ
ＢＣＬ＿ＧＢＩ＿ｒｅｓｅｔＭｏｄｕｌｅ
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨａｎｄｌｅｒ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨａｎｄｌｅｒ（ＢＣＬ＿ＧＢＩ＿ＴＲＡＣＥ＿ＨＡＮＤＬＥＲ  ｈａｎｄｌｅｒ，ｖｏｉｄ  ＊ａｒｇ）；
・引数：ｈａｎｄｌｅｒ（コールバック関数のアドレス）、ａｒｇ（トレースハンドラへ渡す値）
・戻り値：なし
・戻り値：ＢＣＬ＿ＧＢＩ＿ＯＫ（正常終了）、ＢＣＬ＿ＧＢＩ＿ＥＲＲＯＲ（エラー）
Ｃ．５．１．１４  デフォルトのトレース関数の登録（非公開）
ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨａｎｄｌｅｒ関数により置き換えられた任意のトレース関数をデフォルトのトレース関数に戻します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＲｅｓｅｔＨａｎｄｌｅｒ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＲｅｓｅｔＨａｎｄｌｅｒ（ｖｏｉｄ）；
・引数：なし
・戻り値：なし
Ｃ．５．１．１５  デフォルトのトレース関数の実行（非公開）
ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＨａｎｄｌｅｒ関数により登録された任意のトレース関数からデフォルトのトレース関数を実行します。
・名前：ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＥｘｅｃｕｔｅＤｅｆａｕｌｔＨａｎｄｌｅｒ
・形式：ｖｏｉｄ  ＢＣＬ＿ＧＢＩ＿ｉｏＴｒａｃｅＥｘｅｃｕｔｅＤｅｆａｕｌｔＨａｎｄｌｅｒ（ｉｎｔ  ｃｍｄ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ａｄｄｒｅｓｓ，ｕｎｓｉｇｎｅｄ  ｉｎｔ  ｄａｔａ，ｖｏｉｄ  ＊ａｒｇ）；
・引数：ｃｍｄ（トレース対象となる関数）、ａｄｄｒｅｓｓ（トレース対象のアドレス）、ｄａｔａ（トレース対象のデータ）、ａｒｇ（トレースハンドラに引き渡された引数）
・戻り値：なし
【産業上の利用可能性】  上記説明から明らかなように、本発明によれば、様々なモジュールを混載して使用する試験装置を適切にエミュレートすることができる試験エミュレート装置、試験モジュールエミュレート装置、及びこれらのプログラムを記録した記録媒体を実現することができる。
【図１】
2004090562.tif 000003
【図２】
2004090562.tif 000004
【図３】
2004090562.tif 000005
【図４】
2004090562.tif 000006
【図５】
2004090562.tif 000007
【図６】
2004090562.tif 000008
【図７】
2004090562.tif 000009
【図８】
2004090562.tif 000010
【図９】
2004090562.tif 000011
【図１０】
2004090562.tif 000012
【図１１】
2004090562.tif 000013
【図１２】
2004090562.tif 000014
【図１３】
2004090562.tif 000015
【図１４】
2004090562.tif 000016
【図１５】
2004090562.tif 000017
【図１６】
2004090562.tif 000018
【図１７】
2004090562.tif 000019
【図１８】
2004090562.tif 000020
【図１９】
2004090562.tif 000021
【図２０】
2004090562.tif 000022
【図２１】
2004090562.tif 000023
【図２２】
2004090562.tif 000024
【図２３】
2004090562.tif 000025
【図２４】
2004090562.tif 000026
【図２５】
2004090562.tif 000027
【図２６】
2004090562.tif 000028
【図２７】
2004090562.tif 000029
【図２８】
2004090562.tif 000030
【手続補正書】
【提出日】平成17年9月21日(2005.9.21)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、
異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部と
を備える試験エミュレート装置。
【請求項２】
擬似的に生成された前記試験信号に基づいて被試験デバイスの動作をシミュレートする被試験デバイスシミュレート部を更に備える請求項１記載の試験エミュレート装置。
【請求項３】
前記同期エミュレート部は、複数の前記試験モジュールエミュレート部のそれぞれが、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的に発生する、前記制御装置に対する割込みを収集する割込み収集タイミングを更に生成し、
前記タイミング整列部は、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、タイミング整列部が一の前記割込み収集タイミングを出力した場合に、当該割込み収集タイミングに対応する前記試験モジュールエミュレート部に、当該割込み収集タイミングの直前に当該試験モジュールエミュレート部が試験信号を生成したサイクル時間において擬似的に発生した前記割込みを前記制御エミュレート部に対して通知させる
請求項１記載の試験エミュレート装置。
【請求項４】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを生成し、
当該試験エミュレート装置は、前記複数の試験モジュールエミュレート部により生成された複数の前記変化タイミングを取得し、前記複数の変化タイミングに基づいて、試験信号を時刻順に順次擬似的に変化させる被試験デバイス接続部を更に備える
請求項１記載の試験エミュレート装置。
【請求項５】
前記被試験デバイス接続部は、前記複数の試験モジュールエミュレート部から取得した複数の前記変化タイミングを前記タイミング整列部に供給し、
前記タイミング整列部は、前記複数の変化タイミング、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、前記タイミング整列部が一の前記変化タイミングを出力した場合に、前記被試験デバイス接続部に、当該変化タイミングに試験信号を擬似的に変化させる
請求項４記載の試験エミュレート装置。
【請求項６】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間が終了するサイクル終了タイミングを前記同期エミュレート部に通知し、
前記同期エミュレート部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記サイクル終了タイミングに基づいて、当該試験モジュールエミュレート部が次のサイクル時間に対応する試験信号を擬似的に生成すべき前記試験信号生成タイミングを生成する
請求項１記載の試験エミュレート装置。
【請求項７】
次のサイクル時間に対応する前記試験信号生成タイミングを前記タイミング整列部が出力した場合に、前記スケジュール部は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、当該試験信号生成タイミングに対応する前記試験モジュールエミュレート部が擬似的に発生した割込みを前記制御エミュレート部に対して通知させる
請求項６記載の試験エミュレート装置。
【請求項８】
前記複数の試験モジュールエミュレート部のそれぞれは、当該試験モジュールエミュレート部に対応する試験モジュールエミュレートプログラムをコンピュータで動作させることにより実現され、
前記試験モジュールエミュレートプログラムは、
前記試験モジュールが前記制御装置から受信する複数のコマンドのそれぞれに対応して設けられ、当該コマンドに対応する前記試験モジュールの動作をエミュレートする複数のハードウェアエミュレート関数と、
前記スケジュール部が、前記試験信号生成タイミングに対応するサイクル時間における試験信号を生成させるために用いる制御関数と
を有する請求項１記載の試験エミュレート装置。
【請求項９】
試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート方法であって、
異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート段階と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート段階と、
前記制御エミュレート段階からの指示に基づき、前記複数の試験モジュールエミュレート段階のそれぞれが、当該試験モジュールエミュレート段階のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート段階と、
前記同期エミュレート段階が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列段階と、
前記タイミング整列段階が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート段階に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール段階と
を備える試験エミュレート方法。
【請求項１０】
擬似的に生成された前記試験信号に基づいて被試験デバイスの動作をシミュレートする被試験デバイスシミュレート段階を更に備える請求項９記載の試験エミュレート方法。
【請求項１１】
前記同期エミュレート段階は、複数の前記試験モジュールエミュレート段階のそれぞれが、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的に発生する、前記制御装置に対する割込みを収集する割込み収集タイミングを更に生成し、
前記タイミング整列段階は、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール段階は、タイミング整列部が一の前記割込み収集タイミングを出力した場合に、当該割込み収集タイミングに対応する前記試験モジュールエミュレート段階に、当該割込み収集タイミングの直前に当該試験モジュールエミュレート段階が試験信号を生成したサイクル時間において擬似的に発生した前記割込みを前記制御エミュレート段階に対して通知させる
請求項９記載の試験エミュレート方法。
【請求項１２】
前記複数の試験モジュールエミュレート段階のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを生成し、
当該試験エミュレート方法は、前記複数の試験モジュールエミュレート段階により生成された複数の前記変化タイミングを取得し、前記複数の変化タイミングに基づいて、試験信号を時刻順に順次擬似的に変化させる被試験デバイス接続段階を更に備える
請求項９記載の試験エミュレート方法。
【請求項１３】
前記被試験デバイス接続段階は、前記複数の試験モジュールエミュレート段階から取得した複数の前記変化タイミングを前記タイミング整列段階に供給し、
前記タイミング整列段階は、前記複数の変化タイミング、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール段階は、前記タイミング整列段階が一の前記変化タイミングを出力した場合に、前記被試験デバイス接続段階に、当該変化タイミングに試験信号を擬似的に変化させる
請求項１２記載の試験エミュレート方法。
【請求項１４】
前記複数の試験モジュールエミュレート段階のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間が終了するサイクル終了タイミングを前記同期エミュレート段階に通知し、
前記同期エミュレート段階は、前記複数の試験モジュールエミュレート段階のそれぞれから通知された前記サイクル終了タイミングに基づいて、当該試験モジュールエミュレート段階が次のサイクル時間に対応する試験信号を擬似的に生成すべき前記試験信号生成タイミングを生成する
請求項９記載の試験エミュレート方法。
【請求項１５】
次のサイクル時間に対応する前記試験信号生成タイミングを前記タイミング整列段階が出力した場合に、前記スケジュール段階は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、当該試験信号生成タイミングに対応する前記試験モジュールエミュレート段階が擬似的に発生した割込みを前記制御エミュレート段階に対して通知させる
請求項１４記載の試験エミュレート方法。
【請求項１６】
前記複数の試験モジュールエミュレート段階のそれぞれは、当該試験モジュールエミュレート段階に対応する試験モジュールエミュレートプログラムをコンピュータで動作させることにより実現され、
前記試験モジュールエミュレートプログラムは、
前記試験モジュールが前記制御装置から受信する複数のコマンドのそれぞれに対応して設けられ、当該コマンドに対応する前記試験モジュールの動作をエミュレートする複数のハードウェアエミュレート関数と、
前記スケジュール部が、前記試験信号生成タイミングに対応するサイクル時間における試験信号を生成させるために用いる制御関数と
を有する請求項９記載の試験エミュレート方法。
【請求項１７】
試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をコンピュータによりエミュレートするプログラムであって、
前記コンピュータを、
異なるサイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールエミュレート部のそれぞれが、当該試験モジュールエミュレート部のサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート部に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させるスケジュール部と
して機能させるプログラム。
【請求項１８】
前記コンピュータを、擬似的に生成された前記試験信号に基づいて被試験デバイスの動作をシミュレートする被試験デバイスシミュレート部として更に機能させる請求項１７記載のプログラム。
【請求項１９】
前記同期エミュレート部は、複数の前記試験モジュールエミュレート部のそれぞれが、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において擬似的に発生する、前記制御装置に対する割込みを収集する割込み収集タイミングを更に生成し、
前記タイミング整列部は、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、タイミング整列部が一の前記割込み収集タイミングを出力した場合に、当該割込み収集タイミングに対応する前記試験モジュールエミュレート部に、当該割込み収集タイミングの直前に当該試験モジュールエミュレート部が試験信号を生成したサイクル時間において擬似的に発生した前記割込みを前記制御エミュレート部に対して通知させる
請求項１７記載のプログラム。
【請求項２０】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間中における試験信号の変化タイミングを生成し、
当該プログラムは、前記コンピュータを、前記複数の試験モジュールエミュレート部により生成された複数の前記変化タイミングを取得し、前記複数の変化タイミングに基づいて、試験信号を時刻順に順次擬似的に変化させる被試験デバイス接続部として更に機能させる
請求項１７記載のプログラム。
【請求項２１】
前記被試験デバイス接続部は、前記複数の試験モジュールエミュレート部から取得した複数の前記変化タイミングを前記タイミング整列部に供給し、
前記タイミング整列部は、前記複数の変化タイミング、前記複数の試験信号生成タイミング及び複数の前記割込み収集タイミングを時刻順に整列して順次出力し、
前記スケジュール部は、前記タイミング整列部が一の前記変化タイミングを出力した場合に、前記被試験デバイス接続部に、当該変化タイミングに試験信号を擬似的に変化させる
請求項２０記載のプログラム。
【請求項２２】
前記複数の試験モジュールエミュレート部のそれぞれは、前記試験信号生成タイミングに対応するサイクル時間における試験信号の生成において、当該サイクル時間が終了するサイクル終了タイミングを前記同期エミュレート部に通知し、
前記同期エミュレート部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記サイクル終了タイミングに基づいて、当該試験モジュールエミュレート部が次のサイクル時間に対応する試験信号を擬似的に生成すべき前記試験信号生成タイミングを生成する
請求項１７記載のプログラム。
【請求項２３】
次のサイクル時間に対応する前記試験信号生成タイミングを前記タイミング整列部が出力した場合に、前記スケジュール部は、当該試験信号生成タイミングの直前のサイクル時間における試験信号の生成において、当該試験信号生成タイミングに対応する前記試験モジュールエミュレート部が擬似的に発生した割込みを前記制御エミュレート部に対して通知させる
請求項２２記載のプログラム。
【請求項２４】
前記複数の試験モジュールエミュレート部のそれぞれは、当該試験モジュールエミュレート部に対応する試験モジュールエミュレートプログラムをコンピュータで動作させることにより実現され、
前記試験モジュールエミュレートプログラムは、
前記試験モジュールが前記制御装置から受信する複数のコマンドのそれぞれに対応して設けられ、当該コマンドに対応する前記試験モジュールの動作をエミュレートする複数のハードウェアエミュレート関数と、
前記スケジュール部が、前記試験信号生成タイミングに対応するサイクル時間における試験信号を生成させるために用いる制御関数と
を有する請求項１７記載のプログラム。
【請求項２５】
請求項１７から２４のいずれかに記載のプログラムを記録した記録媒体。
【請求項２６】
異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置であって、
前記試験エミュレート装置は、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部と
を備え、
当該試験モジュールエミュレート装置は、
前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部
を備える試験モジュールエミュレート装置。
【請求項２７】
前記一の試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期エミュレート部に通知し、前記同期エミュレート部に前記サイクル終了タイミングに基づき当該試験モジュールエミュレート装置が次に試験信号を擬似的に生成すべき前記試験信号生成タイミングを更に生成させる試験モジュールインターフェイスエミュレート部を更に備える請求項２６記載の試験モジュールエミュレート装置。
【請求項２８】
異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、一の前記試験モジュールを試験モジュールエミュレート装置としてエミュレートする試験モジュールエミュレート方法であって、
前記試験エミュレート装置は、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する前記試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部と
を備え、
当該試験モジュールエミュレート方法は、
前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート段階
を備える試験モジュールエミュレート方法。
【請求項２９】
前記一の試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期エミュレート部に通知し、前記同期エミュレート部に前記サイクル終了タイミングに基づき前記試験モジュールエミュレート装置が次に試験信号を擬似的に生成すべき前記試験信号生成タイミングを更に生成させる試験モジュールインターフェイスエミュレート段階を更に備える請求項２８記載の試験モジュールエミュレート方法。
【請求項３０】
異なるサイクル周期に基づく試験信号を被試験デバイスにそれぞれ供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置において、コンピュータを、一の前記試験モジュールをエミュレートする試験モジュールエミュレート装置として機能させるプログラムであって、
前記試験エミュレート装置は、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記制御エミュレート部からの指示に基づき、前記複数の試験モジュールのそれぞれが、当該試験モジュールのサイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングを生成する同期エミュレート部と、
前記同期エミュレート部が生成した複数の前記試験信号生成タイミングを、時刻順に整列して順次出力するタイミング整列部と、
前記タイミング整列部が出力した一の前記試験信号生成タイミングに対応する当該試験モジュールエミュレート装置に、当該一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成させることを指示するスケジュール部と
を備え、
当該プログラムは、前記コンピュータを、
前記スケジュール部からの指示に基づき、前記一の試験信号生成タイミングに対応するサイクル時間における試験信号を擬似的に生成するパターン発生器エミュレート部
として機能させるプログラム。
【請求項３１】
前記一の試験信号生成タイミングに対応するサイクルが終了するサイクル終了タイミングを同期エミュレート部に通知し、前記同期エミュレート部に前記サイクル終了タイミングに基づき当該試験モジュールエミュレート装置が次に試験信号を擬似的に生成すべき前記試験信号生成タイミングを更に生成させる試験モジュールインターフェイスエミュレート部として前記コンピュータを更に機能させる請求項３０記載のプログラム。
【請求項３２】
請求項３０または請求項３１に記載のプログラムを記録した記録媒体。
【請求項３３】
試験信号を被試験デバイスに供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート装置であって、
サイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記複数の試験モジュールエミュレート部のそれぞれが、サイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングをスケジュールするスケジュール部と
を備え、
前記試験モジュールエミュレート部は、
関数呼び出しにより前記試験信号生成タイミングの通知を受けて、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッドを複数回呼び出すことにより出力し、
当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、前記出力チャネルオブジェクトの終了メソッドを呼び出すことにより通知する
試験エミュレート装置。
【請求項３４】
前記スケジュール部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記終了メソッドに基づいて、全ての前記試験モジュールエミュレート部が試験信号の電圧の変化の出力を終えた期間を算出し、
前記期間内における前記試験信号を取得して、当該試験信号に基づいて被試験デバイスの前記期間内における動作をシミュレートする被試験デバイスシミュレート部を更に備える
請求項３３記載の試験エミュレート装置。
【請求項３５】
前記出力チャネルオブジェクトは、前記終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止する請求項３３記載の試験エミュレート装置。
【請求項３６】
試験信号を被試験デバイスに供給する複数の試験モジュールを備える試験装置をエミュレートする試験エミュレート方法であって、
サイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート段階と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート段階と、
前記複数の試験モジュールエミュレート段階のそれぞれが、サイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングをスケジュールするスケジュール団塊と
を備え、
前記試験モジュールエミュレート段階は、
関数呼び出しにより前記試験信号生成タイミングの通知を受けて、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッドを複数回呼び出すことにより出力し、
当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、前記出力チャネルオブジェクトの終了メソッドを呼び出すことにより通知する
試験エミュレート方法。
【請求項３７】
前記スケジュール段階は、前記複数の試験モジュールエミュレート段階のそれぞれから通知された前記終了メソッドに基づいて、全ての前記試験モジュールエミュレート段階が試験信号の電圧の変化の出力を終えた期間を算出し、
前記期間内における前記試験信号を取得して、当該試験信号に基づいて被試験デバイスの前記期間内における動作をシミュレートする被試験デバイスシミュレート段階を更に備える
請求項３６記載の試験エミュレート方法。
【請求項３８】
前記出力チャネルオブジェクトは、前記終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止する請求項３６記載の試験エミュレート装置。
【請求項３９】
試験信号を被試験デバイスに供給する複数の試験モジュールを備える試験装置をコンピュータによりエミュレートするプログラムであって、
前記コンピュータを、
サイクル周期に基づく試験信号を生成する前記複数の試験モジュールをエミュレートする複数の試験モジュールエミュレート部と、
前記被試験デバイスの試験を制御する制御装置をエミュレートする制御エミュレート部と、
前記複数の試験モジュールエミュレート部のそれぞれが、サイクル時間に対応する試験信号を擬似的に生成すべき試験信号生成タイミングをスケジュールするスケジュール部と
として機能させ、
前記試験モジュールエミュレート部は、
関数呼び出しにより前記試験信号生成タイミングの通知を受けて、当該試験信号生成タイミングに対応するサイクル時間中における試験信号の電圧の変化を、出力チャネルをエミュレートする出力チャネルオブジェクトの電圧設定メソッドを複数回呼び出すことにより出力し、
当該サイクル時間に対応する試験信号の電圧の変化の出力を終えた後に、当該サイクル時間に対応する試験信号の電圧の変化の出力を終えたことを、前記出力チャネルオブジェクトの終了メソッドを呼び出すことにより通知する
プログラム。
【請求項４０】
前記スケジュール部は、前記複数の試験モジュールエミュレート部のそれぞれから通知された前記終了メソッドに基づいて、全ての前記試験モジュールエミュレート部が試験信号の電圧の変化の出力を終えた期間を算出し、
当該プログラムは、前記コンピュータを、前記期間内における前記試験信号を取得して、当該試験信号に基づいて被試験デバイスの前記期間内における動作をシミュレートする被試験デバイスシミュレート部として更に機能させる
請求項３９記載のプログラム。
【請求項４１】
前記出力チャネルオブジェクトは、前記終了メソッドの呼び出しを受けた後に、当該終了メソッドにより通知された、既に試験信号の電圧の変化の出力を終えた期間内の電圧の変化を禁止する請求項３９記載のプログラム。
【請求項４２】
請求項３９から請求項４１のいずれかに記載のプログラムを記録した記録媒体。
【国際調査報告】
2004090562.tif 000031
2004090562.tif 000032