(57)【特許請求の範囲】
【請求項１】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であり、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・ハードウェアのシミュレートされた部分をシミュレートするように構成されたハードウェア・シミュレータと、
ターゲット・プロセッサに結合されたターゲット・モニタであって、該ターゲット・モニタはターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分との連絡をいつ試みようとしたかを判断し、その判断に応じてターゲット・プログラムの実行を一時中止するように動作し、該ターゲット・モニタは、さらに、ターゲット・プロセッサから出力され、シミュレートされた部分に送られる出力信号を対応する出力データに変換し、ハードウェア・シミュレータからの入力データをターゲット・プロセッサに印加される、対応する入力信号に変換するように動作するターゲット・モニタと、
ターゲット・モニタをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースはターゲット・モニタからの出力データをハードウェア・シミュレータに転送するように動作すると共に、ハードウェア・シミュレータからの入力データをターゲット・モニタに転送するように動作するコミュニケーション・インタフェースとを具え、
ターゲット・モニタは、
シミュレートされたハードウェアのアドレス空間内のアドレスを記録するマッピング・メモリと、
マッピング・メモリと、ターゲット・プロセッサのアドレス・バスとに結合されたアドレス・コンパレータであって、該アドレス・コンパレータはアドレス・バス上に現れたアドレスを、マッピング・メモリに記録されたアドレスと比較し、アドレス・バス上のアドレスとマッピング・メモリに記録されたアドレスとが一致していると、ターゲット・プログラムの実行を一時中止するアドレス・コンパレータと
を含むことを特徴とするシステム。
【請求項２】
請求項１に記載のシステムにおいて、ターゲット・プロセッサを収容しているマイクロプロセッサ・エミュレータと、ターゲット・プログラムを収めているメモリ・デバイスとをさらに具えたことを特徴とするシステム。
【請求項３】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であり、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・ハードウェアのシミュレートされた部分をシミュレートするように構成されたハードウェア・シミュレータと、
ターゲット・プロセッサに結合されたターゲット・モニタであって、該ターゲット・モニタはターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分との連絡をいつ試みようとしたかを判断し、その判断に応じてターゲット・プログラムの実行を一時中止するように動作し、該ターゲット・モニタは、さらに、ターゲット・プロセッサから出力され、シミュレートされた部分に送られる出力信号を対応する出力データに変換し、ハードウェア・シミュレータからの入力データをターゲット・プロセッサに印加される、対応する入力信号に変換するように動作するターゲット・モニタと、
ターゲット・モニタをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースはターゲット・モニタからの出力データをハードウェア・シミュレータに転送するように動作すると共に、ハードウェア・シミュレータからの入力データをターゲット・モニタに転送するように動作するコミュニケーション・インタフェースとを具え、
ターゲット・モニタは、
ターゲット・プロセッサが物理的ハードウェアにアクセスしたとき物理的ハードウェアから制御信号を受信するように構成された、ターゲット・プロセッサ上の端子をモニタリングする制御信号モニタであって、該制御信号モニタは制御信号の受信に応答して検出信号を生成するようにした制御信号モニタと、
ターゲット・プロセッサと制御信号モニタに結合されたタイマであって、該タイマは、ターゲット・プロセッサがターゲット・ハードウェアにアクセスしたことに応答してタイミング期間の計時を開始し、該タイミング期間が開始された後で、該タイミング期間の開始後のあらかじめ定めた期間内に検出信号が受信されていなければ、ターゲット・プログラムの実行を一時中止するタイマと
を含むことを特徴とするシステム。
【請求項４】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であり、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・ハードウェアのシミュレートされた部分をシミュレートするように構成されたハードウェア・シミュレータと、
ターゲット・プロセッサに結合されたターゲット・モニタであって、該ターゲット・モニタはターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分との連絡をいつ試みようとしたかを判断し、その判断に応じてターゲット・プログラムの実行を一時中止するように動作し、該ターゲット・モニタは、さらに、ターゲット・プロセッサから出力され、シミュレートされた部分に送られる出力信号を対応する出力データに変換し、ハードウェア・シミュレータからの入力データをターゲット・プロセッサに印加される、対応する入力信号に変換するように動作するターゲット・モニタと、
ターゲット・モニタをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースはターゲット・モニタからの出力データをハードウェア・シミュレータに転送するように動作すると共に、ハードウェア・シミュレータからの入力データをターゲット・モニタに転送するように動作するコミュニケーション・インタフェースとを具え、
ターゲット・モニタは、
ターゲット・プロセッサが物理的ハードウェアにアクセスしたとき物理的ハードウェアから制御信号を受信するように構成された、ターゲット・プロセッサ上の端子をモニタリングする制御信号モニタであって、該制御信号モニタは制御信号の受信に応答して検出信号を生成するようにした制御信号モニタと、
ターゲット・プロセッサと制御信号モニタに結合されたタイマであって、該タイマは、ターゲット・プロセッサがターゲット・ハードウェアにアクセスしたことに応答してタイミング期間の計時を開始し、該タイミング期間が開始された後で、該タイミング期間の開始後のあらかじめ定めた期間内に検出信号が受信されていなければ、ターゲット・プログラムの実行を一時中止するタイマと
を含み、
制御信号は、ターゲット・プロセッサが物理的ハードウェアにアクセスしたことに応答して、物理的ハードウェアによって生成されるように構成された受信確認信号を含むことを特徴とするシステム。
【請求項５】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であり、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・ハードウェアのシミュレートされた部分をシミュレートするように構成されたハードウェア・シミュレータと、
ターゲット・プロセッサに結合されたターゲット・モニタであって、該ターゲット・モニタはターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分との連絡をいつ試みようとしたかを判断し、その判断に応じてターゲット・プログラムの実行を一時中止するように動作し、該ターゲット・モニタは、さらに、ターゲット・プロセッサから出力され、シミュレートされた部分に送られる出力信号を対応する出力データに変換し、ハードウェア・シミュレータからの入力データをターゲット・プロセッサに印加される、対応する入力信号に変換するように動作するターゲット・モニタと、
ターゲット・モニタをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースはターゲット・モニタからの出力データをハードウェア・シミュレータに転送するように動作すると共に、ハードウェア・シミュレータからの入力データをターゲット・モニタに転送するように動作するコミュニケーション・インタフェースとを具え、
ターゲット・モニタは、
ターゲット・モニタを制御する制御プロセッサから入力信号を受信し、該入力信号をターゲット・プロセッサに印加するように動作するターゲット・プロセッサ・ドライバ回路と、
ターゲット・プロセッサからの出力信号を制御プロセッサに印加するように動作するターゲット・プロセッサ・バス・キャプチャ回路とを含むことを特徴とするシステム。
【請求項６】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であり、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・ハードウェアのシミュレートされた部分をシミュレートするように構成されたハードウェア・シミュレータと、
ターゲット・プロセッサに結合されたターゲット・モニタであって、該ターゲット・モニタはターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分との連絡をいつ試みようとしたかを判断し、その判断に応じてターゲット・プログラムの実行を一時中止するように動作し、該ターゲット・モニタは、さらに、ターゲット・プロセッサから出力され、シミュレートされた部分に送られる出力信号を対応する出力データに変換し、ハードウェア・シミュレータからの入力データをターゲット・プロセッサに印加される、対応する入力信号に変換するように動作するターゲット・モニタと、
ターゲット・モニタをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースはターゲット・モニタからの出力データをハードウェア・シミュレータに転送するように動作すると共に、ハードウェア・シミュレータからの入力データをターゲット・モニタに転送するように動作するコミュニケーション・インタフェースとを具え、
コミュニケーション・インタフェースは、ターゲット・モニタをハードウェア・シミュレータに結合しているイーサネットのリンクを含むことを特徴とするシステム。
【請求項７】
請求項１に記載のシステムにおいて、ハードウェア・シミュレータはターゲット・ハードウェアのシミュレート部分をシミュレートするハードウェア・シミュレーション・プログラムでプログラムされたホスト・コンピュータを含むことを特徴とするシステム。
【請求項８】
請求項１に記載のシステムにおいて、ターゲット・プロセッサを収容しているマイクロプロセッサ・エミュレータと、ターゲット・プログラムを収めているメモリ・デバイスとをさらに含み、マイクロプロセッサ・エミュレータは該エミュレータのユーザ・インタフェースとして動作するホスト・コンピュータに結合されていることを特徴とするシステム。
【請求項９】
ターゲット・プログラムを実行するように構成されたターゲット・プロセッサであって、該ターゲット・プロセッサはその一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されるターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
シミュレートされたハードウェアのアクセス空間内のアドレスを記録するマッピング・メモリと、
該マッピング・メモリと、ターゲット・プロセッサのアドレス・バスとに結合されたアドレス・コンパレータであって、該アドレス・コンパレータはアドレス・バス上に現れたアドレスを、マッピング・メモリに記録されたアドレスと比較し、アドレス・バス上のアドレスとマッピング・メモリに記録されたアドレスとが一致していると、ターゲット・プログラムの実行を一時中止するようにしたアドレス・コンパレータと、
アドレス・バス上のアドレスとマッピング・メモリに記録されたアドレスとが一致していることをアドレス・コンパレータが検出すると、それに応答してターゲット・プログラムからの出力信号をストアするように動作するターゲット・プロセッサ・バス・キャプチャ回路と、
該バス・キャプチャ回路にストアされた出力信号を対応する出力データに変換するように動作する信号コンバータと、
該信号コンバータをハードウェア・シミュレータに結合するコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースは、信号コンバータからの出力データをハードウェア・シミュレータに転送するコミュニケーション・インタフェースと
を具えたことを特徴とするシステム。
【請求項１０】
請求項９に記載のシステムにおいて、
ハードウェア・シミュレータに結合された第２信号コンバータであって、該第２信号コンバータはハードウェア・シミュレータからの入力データを対応する入力信号に変換する第２信号コンバータと、
該第２信号コンバータに結合されたターゲット・プロセッサ・バス・ドライバ回路であって、該ターゲット・プロセッサ・バス・ドライバは入力信号をターゲット・プロセッサに印加するように動作するターゲット・プロセッサ・バス・ドライバ回路と
をさらに含むことを特徴とするシステム。
【請求項１１】
請求項９に記載のシステムにおいて、ターゲット・プロセッサを収容しているマイクロプロセッサ・エミュレータと、ターゲット・プログラムを収めているメモリ・デバイスとをさらに具えたことを特徴とするシステム。
【請求項１２】
請求項９に記載のシステムにおいて、コミュニケーション・インタフェースは、信号コンバータをハードウェア・シミュレータに結合しているイーサネットのリンクを含むことを特徴とするシステム。
【請求項１３】
請求項９に記載のシステムにおいて、前記ハードウェア・シミュレータはターゲット・ハードウェアのシミュレート部分をシミュレートするハードウェア・シミュレーション・プログラムでプログラムされたホスト・コンピュータを含むことを特徴とするシステム。
【請求項１４】
請求項１３に記載のシステムにおいて、ターゲット・プロセッサと、該ターゲット・プログラムを収めているメモリ・デバイスとを収容しているマイクロプロセッサ・エミュレータをさらに含み、該マイクロプロセッサ・エミュレータは該エミュレータのユーザ・インタフェースとして動作するホスト・コンピュータに結合されていることを特徴とするシステム。
【請求項１５】
ターゲット・プログラムを実行するように構成されたターゲット・プロセッサであって、該ターゲット・プロセッサはその一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されるターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするためのシステムであって、該システムは、
ターゲット・プロセッサが物理的ハードウェアにアクセスしたとき物理的ハードウェアから制御信号を受信するように構成された、ターゲット・プロセッサ上の端子をモニタリングする制御信号モニタであって、該制御信号モニタは制御信号の受信に応答して検出信号を生成する制御信号モニタと、
ターゲット・プロセッサと制御信号モニタに結合されたタイマであって、該タイマは、ターゲット・プロセッサがハードウェア・アクセスしたことに応答してタイミング期間の計時を開始し、該タイミング期間が開始された後で、該タイミング期間の開始後のあらかじめ定めた期間内に検出信号が受信されていなければ、ターゲット・プログラムの実行を一時中止するタイマと、
タイミング期間が開始された後で、該タイミング期間の開始後のあらかじめ定めた期間内に検出信号が受信されていなければ、ターゲット・プロセッサからの出力信号をストアするように動作するターゲット・プロセッサ・バス・キャプチャ回路と、
該バス・キャプチャ回路にストアされた出力信号を、対応する出力データに変換するように動作する信号コンバータと、
該信号コンバータをハードウェア・シミュレータに結合しているコミュニケーション・インタフェースであって、該コミュニケーション・インタフェースは信号コンバータからの出力データをハードウェア・シミュレータに転送するコミュニケーション・インタフェースと
を具えたことを特徴とするシステム。
【請求項１６】
請求項１５に記載のシステムにおいて、
ハードウェア・シミュレータに結合された第２信号コンバータであって、該第２信号コンバータはハードウェア・シミュレータからの入力データを対応する入力信号に変換する第２信号コンバータと、
該第２信号コンバータに結合されたターゲット・プロセッサ・バス・ドライバ回路であって、該ターゲット・プロセッサ・バス・ドライバは入力信号をターゲット・プロセッサに印加するように動作するターゲット・プロセッサ・バス・ドライバ回路と
をさらに含むことを特徴とするシステム。
【請求項１７】
請求項１５に記載のシステムにおいて、ターゲット・プロセッサを収容しているマイクロプロセッサ・エミュレータと、ターゲット・プログラムを収めているメモリ・デバイスとをさらに具えたことを特徴とするシステム。
【請求項１８】
請求項１５に記載のシステムにおいて、前記コミュニケーション・インタフェースは、信号コンバータをハードウェア・シミュレータに結合しているイーサネットのリンクを含むことを特徴とするシステム。
【請求項１９】
請求項１５に記載のシステムにおいて、ハードウェア・シミュレータはターゲット・ハードウェアのシミュレート部分をシミュレートするハードウェア・シミュレーション・プログラムでプログラムされたホスト・コンピュータを含むことを特徴とするシステム。
【請求項２０】
請求項１９に記載のシステムにおいて、ターゲット・プロセッサを収容しているマクロプロセッサ・エミュレータと、ターゲット・プログラムを収めているメモリ・デバイスとをさらに含み、マイクロプロセッサ・エミュレータは該エミュレータのユーザ・インタフェースとして動作するホスト・コンピュータに結合されていることを特徴とするシステム。
【請求項２１】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするための方法であって、該方法は、
ターゲット・プロセッサの複数の外部からアクセス可能な端子に現れた信号を、ターゲット・プロセッサがターゲット・プログラムを実行するときモニタリングし、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にいつアクセスすることを試みているかを、モニタリングされた信号に基づいて判断し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、ターゲット・プログラムの実行を一時中止し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、複数の外部からアクセス可能な端子に現れた出力信号をハードウェア・シミュレータで処理し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にいつアクセスすることを試みているかを判断するステップは、
シミュレートされたハードウェアのアドレス空間内にあるアドレスを記録し、
ターゲット・プロセッサのアドレス・バス上のアドレスを記録されたアドレスと比較し、
アドレス・バス上のアドレスと記録されたアドレスとが一致することを検出する
ステップを含むことを特徴とする方法。
【請求項２２】
請求項２１に記載の方法において、ターゲット・プロセッサがターゲット・ハードウェアの物理的部分にいつアクセスすることを試みているかをモニタリングされた信号に基づいて判断し、ターゲット・プロセッサがターゲット・ハードウェアの物理的部分にアクセスすることを試みていると判断したことに応答して、ターゲット・プロセッサがターゲット・ハードウェアの物理的部分にアクセスすることを可能にすることを特徴とする方法。
【請求項２３】
請求項２１に記載の方法において、さらに、
出力信号を処理したことに応答してハードウェア・シミュレータから入力データを受信し、
入力データを対応する入力信号に変換し、
該入力信号を外部からアクセス可能な端子に印加する
ことを特徴とする方法。
【請求項２４】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするための方法であって、該方法は、
ターゲット・プロセッサの複数の外部からアクセス可能な端子に現れた信号を、ターゲット・プロセッサがターゲット・プログラムを実行するときモニタリングし、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にいつアクセスすることを試みているかを、モニタリングされた信号に基づいて判断し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、ターゲット・プログラムの実行を一時中止し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、複数の外部からアクセス可能な端子に現れた出力信号をハードウェア・シミュレータで処理し、
ターゲット・プロセッサがターゲット・プロセッサのシミュレートされた部分にいつアクセスすることを試みているかを判断するステップは、
ターゲット・プロセッサが物理的ハードウェアにアクセスしたとき物理的ハードウェアから制御信号を受信するように構成された、ターゲット・プロセッサ上の端子をモニタリングし、
ターゲット・プロセッサがターゲット・ハードウェアにアクセスしたことに応答してタイミング期間の計時を開始し、
タイミング期間の開始後のあらかじめ定めた期間内に制御信号が物理的ターゲット・ハードウェアから受信されたかどうかを検出する
ステップを含むことを特徴とする方法。
【請求項２５】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするための方法であって、該方法は、
ターゲット・プロセッサの複数の外部からアクセス可能な端子に現れた信号を、ターゲット・プロセッサがターゲット・プログラムを実行するときモニタリングし、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にいつアクセスすることを試みているかを、モニタリングされた信号に基づいて判断し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、ターゲット・プログラムの実行を一時中止し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、複数の外部からアクセス可能な端子に現れた出力信号をハードウェア・シミュレータで処理し、
さらに、
ターゲット・プロセッサがターゲット・プログラムの実行を一時中止している時間の間にターゲット・プロセッサに印加された割り込み信号を検出し、
割り込み信号に応答して割り込みルーチンを実行する
ことを特徴とする方法。
【請求項２６】
ターゲット・プログラムを実行するターゲット・プロセッサであって、その一部が物理的であって、その一部をシミュレートすることが可能であるターゲット・ハードウェアに結合されたターゲット・プロセッサを実装する組み込み型エレクトロニック・システムをテストするための方法であって、該方法は、
ターゲット・プロセッサの複数の外部からアクセス可能な端子に現れた信号を、ターゲット・プロセッサがターゲット・プログラムを実行するときモニタリングし、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にいつアクセスすることを試みているかを、モニタリングされた信号に基づいて判断し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、ターゲット・プログラムの実行を一時中止し、
ターゲット・プロセッサがターゲット・ハードウェアのシミュレートされた部分にアクセスすることを試みていると判断したことに応答して、複数の外部からアクセス可能な端子に現れた出力信号をハードウェア・シミュレータで処理し、
さらに、
割り込み信号に対応する、ハードウェア・シミュレータからのデータを検出し、
割り込み信号に対応する、ハードウェア・シミュレータからのデータを検出したことに応答して、割り込み信号をターゲット・プロセッサに印加し、
割り込み信号に応答して、ターゲット・プロセッサが割り込みルーチンを実行可能にする
ことを特徴とする方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、一般的には、組み込み型システムにおけるソフトウェアとハードウェアをテストすることに関し、さらに具体的には、ハードウェアを全体的にまたは部分的にシミュレートすることが可能であるような、組み込み型システムにおけるソフトウェアとハードウェアをテストするためのシステムおよび方法に関する。
【０００２】
【従来の技術】
コンピュータ・シミュレーションの使用は、回路設計などの多くの分野で普及している。集積回路の製造コストは極めて高価であり、集積回路に組み込まれるハードウェアは集積回路の実際の製造前にテストすることが望ましいとされている。その目的のために、集積回路メーカは、ハードウェアと、そのハードウェアに実行させることを目的としたソフトウェアとをテストするためにシミュレータを使用することがよく行われている。望ましいハードウェア設計は「ターゲット・ハードウェア」と呼ばれるのに対し、ターゲット・ハードウェア内の「ターゲット・プロセッサ」に実行させることを目的としたソフトウェアは「ターゲット・プログラム」と呼ばれている。
【０００３】
ターゲット・ハードウェアの製造前にターゲット・ハードウェアをテストするために使用される手法には、いくつかの手法がある。そのアプローチの１つは、コンピュータ・ハードウェア・シミュレータを使用してハードウェアをシミュレートする方法である。ハードウェア・シミュレータとは、ターゲット・ハードウェアの応答をシミュレートするソフトウェア・プログラムであり、その全体がソフトウェアで実現されている。従って、ハードウェア・シミュレータでは、ターゲット・ハードウェアはターゲット・プロセッサも含めて、その全体がコンピュータ・ソフトウェアによってシミュートされている。
【０００４】
アプローチのもう１つは、ターゲット・ハードウェアのハードウェア・エミュレータとのインタフェースとなるターゲット・プロセッサを使用する方法である。このハードウェア・エミュレータは、フィールドプログラマブル（書き換え可能）ゲートアレイ (field-programmable gate array)などのように、ターゲット・ハードウェアの機能を実行するようにプログラム可能である再構成可能ハードウェアを使用して実現されているのが代表的である。ターゲット・プログラムはハードウェア・エミュレータと共に使用されるメモリ・デバイスから実行されているのが代表的である。しかし、ターゲット・プロセッサはマイクロプロセッサ・エミュレータ内のマイクロプロセッサを使用して実現できる場合もあり、そのような場合には、ターゲット・プロセッサは、マイクロプロセッサ・エミュレータ内のメモリからのターゲット・プログラムを実行することが可能になっている。従って、ハードウェア・エミュレータによる方法では、ターゲット・ハードウェアはターゲット・プロセッサも含めて、その全体がハードウェアで実現されており、その場合には、ターゲット・プロセッサは実際のターゲット・ハードウェアではなく、エミュレートされたターゲット・ハードウェアとのインタフェースとなっている。
【０００５】
さらに最近では、組み込み型システム (embedded system)をテストするためのシステムが開発されており、そこでは、ハードウェア・シミュレータはマイクロプロセッサ・エミュレータに結合されている。このシステムは米国特許出願第 08/566,401 号（発明者 Geoffrey J. Bunza) に記載されている。なお、これは引用により本明細書の一部を構成するものである。コミュニケーション・インタフェースはメモリ、エミュレータ内のマイクロプロセッサ、およびハードウェア・シミュレータの相互間のコミュニケーションを制御する。マイクロプロセッサはメモリからターゲット命令を受け取ると、そのターゲット命令を実行する。マイクロプロセッサがターゲット・ハードウェアとのやりとり (interaction)を必要とするときは、エミュレータはハードウェア・シミュレータと連絡して、シミュレートされたターゲット・ハードウェアがマイクロプロセッサとやりとりするようにする。Ｂｕｎｚａがとっているアプローチの利点は、ハードウェア・シミュレータがマイクロプロセッサをシミュレートする必要がないために、ハードウェア・シミュレーション・タスクが大幅に軽減されることである。さらに、ターゲット・コードは、ターゲット・ハードウェアとのやりとりが行われるまではほぼ通常のスピードで実行される。
【０００６】
上述したアプローチの各々には、利点と欠点がある。ハードウェア・シミュレタは、特にターゲット・プログラムを実行する複雑なマイクロプロセッサをシミュレートするために使用されるときは極めて低速で、扱いづらくなっている。従って、完全なターゲット・プログラムをテストすることは、代表的なハードウェア・シミュレータが必要とする実行時間が非常に長いために実用的でない。ハードウェア・エミュレータとのインタフェースとなる実際のターゲット・プロセッサを使用すると、ターゲット・プログラムの実行は高速化されるが、ターゲット・ハードウェアの機能を実行するために必要とされるハードウェア・エミュレータのプログラミングの費用が高くなる可能性がある。Ｂｕｎｚａによるアプローチは上述した問題の多くを解決しているが、それが使用できるのはシミュレートされたターゲット・ハードウェアに限られている。このアプローチは、ハードウェア全体またはその一部がターゲット・システム内に物理的に存在する場合には、ターゲットのソフトウェアとハードウェアをテストするために使用することができない。従って、ターゲット・システムをテストできるのは、Ｂｕｎｚａのアプローチを使用する場合はターゲット・ハードウェアの製造が開始される前であり、従来のエミュレータを使用する場合はターゲット・ハードウェアの製造が完了した後である。しかし、ターゲット・ソフトウェアとハードウェアを、ターゲット・ハードウェアが部分的にしか製造されていないハードウェア製造過程でテスト可能にする、満足すべき手法はまだ知られていない。
【０００７】
３２ビット・マイクロプロセッサと複雑なオペレーティング・ソフトウェアの出現に伴って、組み込み型システムは非常に複雑化している。今日製造されているエレクロニック製品の大部分はストアド・ソフトウェア・プログラムを実行する、ある種のコンピュータ・ハードウェアを実装している。組み込み型システムの代表例としては、「ターゲット・プログラム」内の命令を実行し、特定用途向けＩＣ (application specific integrated circuit - ASIC) またはカスタムＩＣ (custom integrated circuit)といった「ターゲット・ハードウェア」とやりとりする「ターゲット・プロセッサ」がある。
【０００８】
最新のエレクトロニクス設計の複雑さと密度が与えられているとき、望ましいことは、最初のシステム・プロトタイプが、ターゲット・ハードウェアとターゲット・プログラムも含めて、フォーム（形状）、フィット（適合性）および機能の面で最終製品と近似していることである。従って、ターゲット・ハードウェア・プロトタイプは最終的なＡＳＩＣおよびカスタムＩＣ設計を含んでいるのが理想的である。しかるに、以下で述べる理由により、通常の場合、組み込み型システムのプロトタイプを上記のような方法で作ることは実用的でない。
【０００９】
ソフトウェア・エンジニアが作業を開始するとき、最終的にターゲット・プログラムを実行するターゲット・ハードウェアは物理的な形で存在していない。上で説明したように、ターゲット・ハードウェアが物理的に実現される前にターゲット・ソフトウェアがソターゲット・ハードウェアとやりとりしながらターゲット・ソフトウェアをテストしていくことを可能にする、さまざまな方法が開発されている。しかし、同じく上で説明したように、これらの方法はいずれも完全に満足すべきものではない。その結果、ターゲット・システムの物理的ターゲット・ハードウェアとターゲット・ソフトウェアは、プロトタイプ・ターゲット・ハードウェアが製造されたとき初めて一緒にされるのが代表的になっている。物理的ターゲット・ハードウェアはその前に利用可能になっていないため、プロトタイプ・ターゲット・ハードウェアとソフトウェアの統合化時にロードされたターゲット・プログラムが働いていないことがよくある。よくあることは、この統合化問題は厳密にはソフトウェアの複雑さが原因で起こっている。そのために、ターゲット・プログラムに問題があることが原因でソフトウェア開発に著しい遅延が起こっている。統合化のその他の問題は、ターゲット・ハードウェアがターゲット・プログラムとやりとりすることが原因で起こっている。その結果、ＡＳＩＣとカスタムＩＣ設計のコストが多大であることを考えると、ソフトウェア修正が相対的に低コストで容易なので、ソフトウェアをターゲット・ハードウェア・プロタイプに無理に適合させることがよく行われ、それにより予定されたソフトウェア開発期間が全体的に増大する。
【００１０】
【発明が解決しようとする課題】
以上の理由から、組み込み型システムのターゲット・プログラムとターゲット・ハードウェアを、ターゲット・ハードウェアの一部だけがすでに製造され、組み込み型システムに物理的に存在している時点も含めて、ターゲット・ハードウェアの設計と製造期間全体にわたってテストすることを可能にするようなシステムが要求されている。
【００１１】
【課題を解決するための手段】
本発明は、ターゲット・プロセッサと、そのターゲット・プロセッサによって実行されるターゲット・プログラムを格納しているメモリと、その一部だけが物理的に存在し、ターゲット・プログラムに結合されているようなターゲット・ハードウェアとを実装している組み込み型エレクトロニック・システムをテストするためのシステムと方法で実現されている。テスト・システムは、ターゲット・プロセッサに結合されたターゲット・モニタと、ターゲット・ハードウェアのうち組み込み型システムにまだ物理的に存在しない部分をシミュレートするように構成されたハードウェア・シミュレータと前記ターゲット・モニタとを結合しているコミュニケーション・インタフェースとを含んでいる。ターゲット・モニタは、ターゲット・プロセッサがターゲット・ハードウェアのシミュレート部分にアクセスする時点またはターゲット・ハードウェアのシミュレート部分がターゲット・プロセッサにアクセスする時点を検出する。シミュレートされたターゲット・ハードウェアへのアクセスを検出すると、ターゲット・モニタはターゲット・プロセッサがターゲット・プログラムを実行することを一時中止させる。その後、ターゲット・モニタはターゲット・プロセッサから出力され、シミュレートされたハードウェアに送られる出力信号を、対応する出力データに変換する。この出力データはコミュニケーション・インタフェース経由でハードウェア・シミュレータに転送され、そこでデータは、もしターゲット・ハードウェアが組み込み型システムに物理的に存在していれば、ターゲット・プロセッサからの対応する信号がそのターゲット・ハードウェアによって処理されるのと同じように処理される。シミュレートされたターゲット・ハードウェアがターゲット・プロセッサにアクセスすることを試みるか、あるいはターゲット・プロセッサによるアクセスに応答することを試みると、ハードウェア・シミュレータは、信号、すなわち、もしターゲット・ハードウェアが組み込み型システムに物理的に存在していれば、そのターゲット・ハードウェアによって生成されるであろう信号に対応する入力データを生成する。この入力データはコミュニケーション・インタフェースを通してターゲット・モニタに結合され、そこでデータはターゲット・プロセッサに印加される信号に変換される。この信号は、もしターゲット・ハードウェアが組み込み型システムに物理的に存在していれば、そのターゲット・ハードウェアによって生成される信号と同じものである。組み込み型システムに物理的に存在するターゲット・ハードウェアへの、ターゲット・プロセッサによるアクセスは、そのターゲット・ハードウェアのすべてが製造された後で組み込み型システムで行われるのと同じように行われる。
【００１２】
好ましくは、ターゲット・モニタはシミュートされた物理ハードウェアへのアクセスを、次の２つのモードのどちらかで検出する。第１のモードでは、ターゲット・モニタは、シミュレートされたターゲット・ハードウェアのアドレス空間にあるアドレスがターゲット・プロセッサから出されるとそのことを検出する。第２のモードでは、ターゲット・モニタは、ターゲット・プロセッサによるアクセスに応じて通常行われるようにターゲット・ハードウェアがあらかじめ定めた時間内に、受信確認信号を返すことができないと、そのことを検出する。シミュレートされたターゲット・ハードウェアのアドレス空間内のアドレスへのアクセスは、好ましくは、マッピング・メモリとアドレス・コンパレータを使用して検出される。マッピング・メモリはシミュレートされたターゲット・ハードウェアのアドレス空間内のアドレスを記録しており、アドレス・コンパレータはターゲット・プロセッサのアドレス・バスに現れた各アドレスを、マッピング・メモリに記録されたアドレスと比較する。アドレスが一致していれば、ターゲット・モニタはターゲット・プログラムの実行を一時中止し、上述したようにハードウェア・シミュレータによりアクセス処理を実行させる。受信確認信号が返されなかったことは、制御信号モニタとタイマによって検出することが好ましい。制御信号モニタは、ターゲット・プロセッサが物理ターゲット・ハードウェアにアクセスすると、物理ターゲット・ハードウェアからの受信確認信号を受信するように構成された、ターゲット・プロセッサ上の端子をモニタしている。制御信号モニタは受信確認信号を受信すると、それに応答して検出信号を生成する。タイマはターゲット・プロセッサがターゲット・ハードウェアにアクセスすると、それに応答してタイミング期間の計時を開始する。タイミング期間を開始した後、あらかじめ定めた期間内に検出信号が受信されていなければ、タイマはターゲット・プログラムの実行を一時中止し、上述したようにアクセスをハードウェア・シミュレータによりアクセス処理を実行させる。
【００１３】
【発明の実施の形態】
組み込み型エレクトロニック・システムをテストするためのシステムの一実施形態を図１に示す。組み込み型システム１０はターゲット・プロセッサ１２と、これに結合されたメモリ１４とを備え、メモリ１４はターゲット・プロセッサ１２によって実行されるターゲット・プログラム１６を少なくとも格納している。メモリ１４は、ターゲット・プロセッサ１２によって使用される他のプログラム命令および／またはデータを格納しておくことも可能である。また、メモリ１４はリードオンリメモリ(read only memory - ROM)、ランダムアクセスメモリ(random access memory - RAM)、またはＲＯＭとＲＡＭを組み合わせたものにすることができる。
【００１４】
組み込み型システム１０内のターゲット・プロセッサ１２には物理ターゲット・ハードウェア２０も結合されており、これはすでに実装されているターゲット・ハードウェアからなっている。ターゲット・ハードウェアのうち、まだ物理ターゲット・ハードウェアに含まれていない残余部分は以下で説明するようにシミュレートされている。
【００１５】
組み込み型システム１０をテストするためのシステム３０は、ターゲット・モニタ３２、コミュニケーション・インタフェース３４、およびコミュニケーション・インタフェース３４を通してターゲット・モニタ３２に結合されているハードウェア・シミュレータ３６を含んでいる。ハードウェア・シミュレータ３６はターゲット・ハードウェアのうち物理ターゲット・ハードウェア２０に含まれていない部分をシミュートする、従来型のデバイスである。例えば、ハードウェア・シミュレータは適切に構成されたハードウェア・シミュレーション・プログラムを実行するホスト・コンピュータで実現することが可能である。
【００１６】
オペレーション時には、ターゲット・プロセッサ１２はターゲット・プログラム１６を実行することにより、ターゲット・プロセッサ１２は物理ターゲット・ハードウェア２０と、シミュレートされたターゲット・ハードウェアの両方にアクセスする。ターゲット・プロセッサ１２は物理ターゲット・ハードウェア２０に通常のようにアクセスするが、これは物理ターゲット・ハードウェア２０が実際に組み込み型システム１０に存在するからである。しかし、ターゲット・プロセッサ１２は、シミュレートされたターゲット・ハードウェアがまだ実装されていないので、ターゲット・ハードウェアのシミュレートされた部分に通常のようにアクセスすることができない。
【００１７】
ターゲット・プロセッサ１２が物理ターゲット・ハードウェア２０以外のターゲット・ハードウェアにアクセスすることを試みるとき、ターゲット・プロセッサ１２はそのターゲット・ハードウェアにではなくテスト・システム３０にアクセスする。より具体的には、ターゲット・モニタ３２は以下で説明するように、ターゲット・プロセッサ１２上の該当する端子をモニタし、物理ターゲット・ハードウェア２０に含まれていないターゲット・ハードウェアにターゲット・プロセッサ１２がいつアクセスしようと試みているかを判断する。次に、ターゲット・モニタ３２はターゲット・プロセッサ１２からの出力信号を対応する出力データに変換する。この出力データはコミュニケーション・インタフェース３４を通してハードウェア・シミュレータ３６に結合される。その後、ハードウェア・シミュレータ３６は、ターゲット・ハードウェアがもし組み込み型システムに物理的に存在していれば、ターゲット・プロセッサ１２からの出力信号を処理するのと同じように出力データを処理する。ある場合には、ターゲット・ハードウェアは信号をターゲット・プロセッサ１２に返すことによって、ターゲット・プロセッサ１２からの出力信号に応答するように構成されている。他の場合には、ターゲット・ハードウェアはターゲット・プロセッサ１２とのやりとりを開始するようになっている。どちらの場合も、ハードウェア・シミュレータ３６は入力データを生成し、この入力データはコミュニケーション・インタフェース３４を通してターゲット・モニタ３２に結合される。その後、ターゲット・モニタ３２は入力データを対応する入力信号に変換し、この入力信号はターゲット・プロセッサ１２の該当する端子に印加される。入力信号は、シミュレートされたターゲット・ハードウェアがもし組み込み型システム１０に物理的に存在していれば、ターゲット・プロセッサ１２に印加されるであろう入力信号と同じものである。
【００１８】
ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアに、上述したようにアクセスしている時間の間に、ターゲット・モニタ３２は該当する制御信号をターゲット・プロセッサ１２に印加して、ターゲット・プログラム１６の実行を一時中止させる。従って、ターゲット・プログラム１６の実行は、シミュレートされたターゲット・ハードウェアがもし物理ターゲット・ハードウェア２０の一部であれば、ターゲット・プログラム１６が実行されるのと同じ順序で続けられる。ターゲット・プロセッサ１２がターゲット・プログラム１６の実行を一時中止している時間の間に、ターゲット・プロセッサは種々の割り込みルーチンで割り込処理サービスを行うことができる。これは、ターゲット・プロセッサ１２を延長待ち状態（extended waited state）に置いたままにし、ターゲット・プログラムの実行を一時中止することによって実現される。具体的には、バス・サイクルは終了され、例外ハンドラ、すなわち、カストマがターゲット・プログラムにリンクするような例外ハンドラへの即時ベクトル (immediate vector) がある。この例外ハンドラは基本的にポーリング・ループ内に置かれていて、ポーリング・ループによりハードウェア・シミュレータ３６がシミュレートされたターゲット・ハードウェアへのアクセスの処理を完了するのを待機する。このポーリング・ループの間、ターゲット・プロセッサ１２によるサービスを必要とする他の例外は、いずれもそのサービスを受けることができる。ハードウェア・シミュレータ３６が応答すると、ポーリング・ループから抜け出て、シミュレートされたターゲット・ハードウェアへのアクセスを引き起こしたバス・サイクルが再生成され、例外ハンドラから抜け出ることになる。このプロセスはシミュレートされたターゲット・ハードウェア３６への読み取りアクセスのときだけ行われるのが代表的である。その理由は、書き込みアクセスはバス・サイクルを正しく完了するためには、シミュレートされたターゲット・ハードウェアからデータを受信したかどうかに左右されないためである。従って、ターゲット・プロセッサ１２はある程度のマルチタスキングにすることが可能である。
【００１９】
ターゲット・プロセッサ１２とメモリ１４はスタンドアロン・コンポーネントであるかのように図１に示されているが、当然に理解されるように、これらは物理ターゲット・ハードウェア２０を実装している組み込み型システムにプラグインされる従来型のエミュレータ（図示せず）にすることも可能である。
【００２０】
物理ターゲット・ハードウェア２０の一部ではないターゲット・ハードウェアに対して、ターゲット・プロセッサ１２がいつアクセスしようと試みているかを判断するためにターゲット・モニタ３２によって使用される手法には、さまざまなものがある。例えば、ターゲット・モニタ３２はシミュレートされたターゲット・ハードウェアのアドレス空間内にあるアドレスを記録することができる。その後、ターゲット・モニタ３２はターゲット・プロセッサ１２のアドレス・バスをモニタすることができる。ターゲット・プロセッサ１２がシミュレートされたハードウェアのアドレス空間内にあるアドレスを出力した場合には、ターゲット・モニタ３２はターゲット・プロセッサ１２のデータ・バスとアドレス・バスに現れた信号をキャプチャし、１つまたは２つ以上の制御信号をターゲット・プロセッサ１２に印加して、シミュレートされたハードウェアへのアクセスが完了するまでターゲット・プログラムの実行を一時中止する。上記とは別に、シミュレートされたハードウェアがアクセスに対して受信確認または他の信号で応答するように構成されている場合には、ターゲット・モニタ３２は、ターゲット・プロセッサ１２に結合されている受信確認または他の信号がそこに現れる、信号ラインをモニタすることができる。受信確認または他の信号があらかじめ定めた時間内にターゲット・プロセッサ１２に印加されない場合には、受信確認または他の信号を返す物理ターゲット・ハードウェア２０が組み込み型システム１０に存在しないことが明らかであるので、ターゲット・モニタ３２はそのアクセスをシミュレートされたターゲット・ハードウェアへのアクセスとして扱うことができる。
【００２１】
以下では、図１のテスト・システム３０で使用されるターゲット・モニタ３２とコミュニケーション・インタフェースの実施形態について、図２を参照して詳しく説明する。ターゲット・モニタ３２は、(a) ターゲット・プロセッサ１２（図１）のアドレス・バス、制御バスおよびデータ・バスに結合されているターゲット・インタフェース回路４０、(b) ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアにいつアクセスしようと試みているかを検出するアクセス検出器４２、(c) ターゲット・プロセッサ１２からの信号をキャプチャし、ターゲット・プロセッサ１２に印加する信号を生成するバス・キャプチャ／ドライバ回路４４、(d) ターゲット・モニタ３２のオペレーションを制御する制御プロセッサ４６、(e) プロセッサ４６によって実行されるプログラムを格納しているＲＯＭ  ４８、および(f) データをストアするためにプロセッサ４６によって使用されるＲＡＭ５０を含んでいる。プロセッサ４６は、コミュニケーション・インタフェース３４に結合されている通信ポート５４も含んでいる。コミュニケーション・インタフェース３４は従来のイーサネット (Ethernet) ドライバ６６と、ハードウェア・シミュレータ３６（図１）の従来型イーサネット・コネクタ（図示せず）に接続される従来型イーサネット・コネクタ６８とを含んでいる。
【００２２】
ターゲット・インタフェース回路４０はターゲット・アドレス・バス・バッファ７０、ターゲット制御バス・バッファ７２およびターゲット・データ・バス・バッファ７４を含んでいる。ターゲット・アドレス・バス・バッファ７０はターゲット・プロセッサ１２のアドレス・バスからアドレス信号を受信し、その信号を内部アドレス・バス８０に結合する。同様に、ターゲット・データ・バス・バッファ７４は、ターゲット・プロセッサ１２のデータ・バスと内部データ・バス９４の間を結合し、データ信号を転送する。ターゲット制御バス・バッファ７２は、ターゲット・プロセッサ１２の制御バスと内部制御バス８２の間を結合し、少なくとも一部の制御信号を転送する。ターゲット・プロセッサ１２から内部制御バス８２に転送される制御信号の１つとして、ターゲット・クロック・ライン９０に結合されているターゲット・クロック信号がある。
【００２３】
システムはターゲット・クロック信号も受信し、その信号をターゲット・データ／制御バス・バッファ制御回路８８に印加するターゲット・クロック制御回路８６も含んでいる。ターゲット・データ／制御バス・バッファ制御回路８８はターゲット制御バス・バッファ７２とターゲット・データ・バス・バッファ７４をターゲット・クロック信号と同期して選択的にイネーブルして、ターゲット・プロセッサ１２からの制御信号およびデータ信号をキャプチャし、その制御信号およびデータ信号を適切な時間にターゲット・プロセッサ１２に印加できるようにする。
【００２４】
場合によっては、ターゲット・クロック制御回路８６とターゲット・データ／制御バス・バッファ制御回路８８はテスト目的のために、組み込み型システム１０に組み込んでおくこともできる。その場合は、ターゲット・クロック制御回路８６はターゲット・クロック信号をターゲット・プロセッサ１２から切り離す（decouple）ことができるように設計することが可能である。ターゲット・クロック信号がターゲット・プロセッサ１２から切り離されると、ターゲット・プロセッサ１２はターゲット・プログラム１６の実行を一時中止する。従って、ターゲット・クロック制御回路は、ハードウェア・シミュレータ３６がシミュレートされたターゲット・ハードウェアへのアクセスを処理しているとき、ターゲット・プロセッサ１２にターゲット・プログラム１６の実行を一時中止させる１つの手段となっている。
【００２５】
内部アドレス・バス８０はアクセス検出器４２と、バス・キャプチャおよびドライバ回路４４内のターゲット・アドレス・バス・ラッチ１００とに結合されている。以下で詳しく説明するように、ターゲット・アドレス・バス・ラッチ１００はターゲット・アドレス・バス・バッファ７０からのアドレス信号をキャプチャし、そのアドレス信号を制御プロセッサ４６に結合する。また、以下で詳しく説明するように、アドレス検出器４２は内部アドレス・バス８０に現れたアドレス信号を検査し、ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアにアクセスすることを試みているかどうかを判断する。
【００２６】
内部制御バス８２とターゲット・クロック・ライン９０はアクセス検出器４２に結合されているが、内部制御バス８２の方はバス・キャプチャ／ドライバ回路４４内のターゲット制御バス・ラッチ１１２にも結合されている。以下で説明するように、アクセス検出器４２はターゲット・クロック信号のあらかじめ定めたサイクル数にわたって内部制御バス８２に現れるある種の制御信号を調べ、物理ターゲット・ハードウェア２０が組み込み型システム１０にいつ存在しないかを判断し、ターゲット・ハードウェアへのアクセス試みに応答して受信確認信号を返す。このようにして、アクセス検出器４２はターゲット・ハードウェアへのアクセスを試みていることがシミュレートされたターゲット・ハードウェアへのアクセスであると判断する。ターゲット制御バス・ラッチ１１２は、シミュレートされたターゲット・ハードウェアへのアクセスが読み取りアクセスであるか、書き込みアドレスであるかを指定しているＲ／Ｗ＊信号のような、ターゲット・プロセッサの端子に現れた信号をキャプチャするために使用される。また、ターゲット制御バス・バッチ１１２は、ターゲット・プログラム１６（図１）の実行を一時中止する制御信号のような、ターゲット・プロセッサ１２に印加される１つまたは２つ以上の制御信号を出力するためにも使用される。例えば、ハードウェア・シミュレータ３６がシミュレートされたターゲット・ハードウェアへのアクセスを処理している期間に、ターゲット制御バス・ラッチ１１２は、インアクティブＲＥＡＤＹ信号をＩｎｔｅｌ（登録商標）プロセッサに出力することも、インアクティブ・データ・ストローブ確認ＤＳＡＣＫ信号をターゲット・プロセッサ１２で使用されているＭｏｔｏｒｏｌａ（登録商標）プロセッサに出力することもできる。
【００２７】
内部データ・バス９４はバス・キャプチャ／ドライバ回路４４内のターゲット・データ・バス・ラッチ１０２に結合されている。ターゲット・データ・バス・ラッチ１０２はデータ信号を内部データ・バス９４に出力し、内部データ・バス９４からのデータ・バス信号をストアする。
【００２８】
ターゲット・アドレス・バス・ラッチ１００とターゲット・データ・バス・ラッチ１０２のほかに、バス・キャプチャ／ドライバ回路４４はモニタ制御ラッチ１１０とアドレス・デコーダ１１４を含んでいる。アドレス・デコーダ１１４はラッチ１００〜１１２の各々に対応する制御プロセッサ４６からのアドレスをデコードする。制御プロセッサは、ラッチ１００〜１１２の特定ラッチからの信号を、その特定ラッチに対応するアドレスを出力することによってストアし、あるいは受信する。これと同時に、制御プロセッサ４６はアクセスされるラッチ１００〜１１２にストアすべき信号を印加するか、あるいはアクセスされるラッチ１００〜１１２からの信号をデータ・バス１２２から受信する。また、制御プロセッサ４６は該当の制御信号を制御バス１２４経由でアドレス・デコーダに印加する。
【００２９】
オペレーション時には、モニタ制御ラッチ１１０はラッチ１００、１０２および１１２のオペレーションを制御するために使用される信号を制御プロセッサ４６から受信する。以下で詳しく説明するように、ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアにアクセスすることを試みているとアクセス検出器４２が判断したとき、アクセス検出器は信号をモニタ制御ラッチ１１０に印加する。その後、モニタ制御ラッチ１１０はターゲット・プロセッサ１２からのアドレス信号、制御信号およびデータ信号を、それぞれ他のラッチ１００、１０２、および１１２にキャプチャさせる。また、モニタ制御ラッチ１１０は制御信号をバッファ制御回路８８に、制御信号をアクセス検出器４２に印加する。
【００３０】
アクセス検出器４２はマッピングＲＡＭ１３０とタイムアウト回路１３２を含んでいる。以下で詳しく説明するように、マッピングＲＡＭ１３０はシミュレートされたターゲット・ハードウェアへのアクセスを、シミュートされたターゲット・ハードウェアのアドレス空間内にある、ターゲット・プロセッサ１２からのアドレスを検出することによって検出する。タイムアウト回路１３２はシミュレートされたターゲット・ハードウェアへのアクセスを、ターゲット・ハードウェアへのアクセスに対する応答としてあらかじめ定めた時間内に受信確認を返したターゲット・ハードウェアが組み込み型システム１０に存在しないと判断することによって検出する。
【００３１】
マッピングＲＡＭ１３０はアドレス・マルチプレクサ１４０を含んでおり、これは制御プロセッサ４６のアドレス・バス１２０または内部アドレス・バス８０のどちらかをマップＲＡＭ１４２に結合している。そのために、アドレス・マルチプレクサ１４０は制御プロセッサ４６がアドレス・バス１２０を経由して、あるいはターゲット・プロセッサ１２がそのアドレス・バス（図示せず）、ターゲット・アドレス・バス・バッファ７０、および内部アドレス・バス８０を経由してマップＲＡＭ１３０に対してアクセス可能にしている。マッピングＲＡＭ１３０はデータ・マルチプレクサ１４４も含んでおり、これはマップＲＡＭ１４２と、制御プロセッサ４６のデータ・バス１２２またはＯＲゲート１５０の一方の入力に印加されるデータ・ラインとの間でデータを転送させる。アドレス・マルチプレクサ１４０とデータ・マルチプレクサ１４２は制御プロセッサ４６によって制御され、そのために制御プロセッサ４６はアドレス・マルチプクサ１４０とデータ・マルチプレクサ１４２に印加される該当の制御信号をモニタ制御ラッチ１１０にストアしている。
【００３２】
オペレーション時には、マップＲＡＭ１４２は、初期状態では、アドレス・マルチプレクサ１４０が制御プロセッサ４６のアドレス・バス１２０を、データ・マルチプレクサ１４４が制御プロセッサ４６のデータ・バス１２２をマップＲＡＭ  １４２に結合するようにプログラムされる。その後、制御プロセッサ４６はターゲット・プロセッサ１２のアドレス空間内の各アドレスにビットをストアする。各アドレスにストアされたビットは、そのアドレスが物理ターゲット・ハードウェア２０のアドレス空間内にあればロジック「０」に、そのアドレスがシミュレートされたターゲット・ハードウェアのアドレス空間内にあれば各アドレスのストアされたビットはロジック「１」になっている。マップＲＡＭ１４２がプログラムされた後、アドレス・マルチプレクサ１４０は内部アドレス・バス８０をマップＲＡＭ１４２に、マップＲＡＭ１４２からのデータ・ビットをＯＲゲート１５０に結合する。ターゲット・プロセッサ１２がターゲット・プログラム１６を実行すると、ターゲット・プロセッサ１２から出力されたアドレスはターゲット・アドレス・バス７０、内部アドレス・バス８０、およびアドレス・マルチプレクサ１４０を通してマップＲＡＭ１４２に結合される。ターゲット・プロセッサ４６からの各アドレスはマップＲＡＭ１４２にアクセスし、これによりマップＲＡＭ  １４２はそのアドレスにストアされたデータ・ビットを出力する。このデータ・ビットはアドレスが物理ターゲット・ハードウェアのアドレス空間にあることを示すロジック「０」になっているか、あるいはアドレスがシミュレートされたターゲット・ハードウェアのアドレス空間にあることを示すロジック「１」になっている。ターゲット・プロセッサ１２から出力されたアドレスがシミュレートされたターゲット・ハードウェアのアドレス空間にあれば、ＯＲゲート１５０はロジック「１」を出力する。
【００３３】
タイムアウト・カウンタ１３２はターゲット・クロック・カウンタ１６０とカウンタ制御回路１６２を含んでいる。ターゲット・クロック・カウンタ１６０はカウンタ制御回路１６２からプリロードされた初期カウントから最終カウントまでインクリメントしていく。また、カウンタ制御回路１６２はターゲット・クロック・カウンタ１６０を選択的にイネーブルにする。ターゲット・クロック・カウンタ１６０は最終カウントまで到達すると、ロジック「１」を出力し、これによりＯＲゲート１５０はロジック「１」を出力する。カウンタ制御回路１６２はモニタ制御ラッチ１１０が該当の制御信号を出力したときそれに応答して初期カウントをストアする。その後、カウンタ制御回路１６２は制御プロセッサ４６のデータ・バス１２２からの初期カウントをストアする。次に、カウンタ制御回路１６２は初期カウントをターゲット・クロック・カウンタ１６０にプリロードし、ターゲット・クロック・カウンタ１６０はターゲット・バス制御バッファ７２からのターゲット・クロック信号に応答してインクリメントしていく。しかし、カウンタ制御回路１６２は、ターゲット・プロセッサ１２がターゲット・ハードウェア（物理ハードウェア２０またはシミュレートされたハードウェアのどちらか）にアクセスすることを試みたことを示す専用の制御信号をカウンタ制御回路１６２に印加した後だけターゲット・クロック・カウンタ１６０をインクリメントさせる。ターゲット・プロセッサ１２が物理ターゲット・ハードウェア２０にアクセスしていれば、物理ターゲット・ハードウェア２０は受信確認信号を返し、これはターゲット制御バス・バッファ７２からカウンタ制御回路１６２に印加される。この受信確認信号を受けると、カウンタ制御回路１６２はターゲット・クロック・カウンタ１６０をディスエーブルし、ターゲット・クロック・カウンタ１６０が最終カウントに到達しないようにする。従って、ターゲット・クロック・カウンタ１６０はロジック「１」を出力しないことになる。しかし、ターゲット・ハードウェア１２がアクセスしているアドレスに物理ターゲット・ハードウェアが存在しなければ、どの物理ターゲット・ハードウェアからも受信確認信号が返されない。その結果、ターゲット・クロック・カウンタ１６０は最終カウントまでインクリメントするので、ターゲット・クロック・カウンタはロジック「１」を出力する。これを受けて、ＯＲゲート１５０はロジック「１」を出力する。従って、ＯＲゲート１５０は、ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアにアクセスすることを試みているとマッピングＲＡＭ１３０またはタイムアウト・カウンタ１３２が検出すると、ロジック「１」を出力することになる。
【００３４】
ＯＲゲート１５０の出力はデコード／コントローラ通知回路１７０に印加され、この回路からは該当の制御信号がモニタ制御ラッチ１１０に印加される。これを受けて、モニタ制御ラッチ１１０はターゲット・プロセッサ１２からのアドレス信号、データ信号、および制御信号をバス・ラッチ１００、１０２、および１１２にキャプチャさせる。アドレス信号、データ信号、および制御信号はラッチ１００、１０２、および１１２から制御プロセッサ４６に結合され、そこでこれらの信号は対応する出力データに変換される。この出力データは、コミュニケーション・インタフェース３４を通してハードウェア・シミュレータ３６に結合され、そこでこのデータは、もし物理ターゲット・ハードウェアが実際に組み込み型システム１０に存在していれば、物理ターゲット・ハードウェアが制御プロセッサからのアドレス信号、データ信号、および制御信号を処理するのと同じように処理される。
【００３５】
シミュレートされたターゲット・ハードウェアがアクセスに応答して受信確認信号を返した場合、あるいはシミュレートされたターゲット・ハードウェアとターゲット・プロセッサ１２とのやりとりがシミュレートされたターゲット・ハードウェアによって開始された場合には、ハードウェア・シミュレータ３６はコミュニケーション・インタフェース３４を通して入力データを制御プロセッサ４６に送信する。その後、ハードウェア・シミュレータ３６はその入力データを対応するデータ信号と制御信号に変換し、これらの信号をそれぞれデータと制御バス・ラッチ１０２、１１２にストアする。最後に、ラッチ１０２と１１２はこれらの信号をそれぞれターゲット・データと制御バス・バッファ７４、７２を通してターゲット・プロセッサ１２に印加する。従って、ターゲット・プロセッサ１２は、シミュレートされたターゲット・ハードウェアが物理的に組み込み型システム１０に存在していれば受信するものと同じ信号を受信することになる。
【００３６】
ターゲット・プロセッサ１２とシミュレートされたターゲット・ハードウェアとのやりとりがターゲット・プロセッサ１２によって開始された場合には、そのやりとりは上述したように、アクセス検出器４２によって検出される。しかし、ターゲット・プロセッサ１２とシミュレートされたターゲット・ハードウェアとのやりとりがシミュレートされたターゲット・ハードウェアによって検出された場合は、アクセス検出器４２はターゲット・プロセッサ１２によって開始されたアクセスだけを検出できるので、アクセス検出器４２はそのやりとりを検出することができない。組み込み型システム設計で通常行われているように、ターゲット・ハードウェアとターゲット・プロセッサとのやりとりは、ターゲット・ハードウェアが割り込み信号をターゲット・プロセッサに印加することによって開始される。これを受けて、ターゲット・プロセッサはターゲット・プログラムの一部である割り込みルーチンを実行する。
【００３７】
シミュレートされたターゲット・ハードウェアとターゲット・プロセッサとのやりとりがシミュレートされたターゲット・ハードウェアによって開始された場合には、ハードウェア・シミュータ３６は割り込みを指示する入力信号を制御プロセッサ４６に送信する。これを受けて、制御プロセッサ４６はその入力信号を割り込み信号に変換し、その割り込み信号をターゲット制御バス・ラッチ１１２にストアする。ターゲット制御バス・ラッチ１１２は割り込み信号をターゲット制御バス・バッファ７２を通してターゲット・プロセッサ１２の割り込み端子に印加する。これを受けて、ターゲット・プロセッサ１２はターゲット・プログラム１６の一部としてフラッシュＲＯＭ４８にストアされた割り込みルーチンを実行する。ターゲット・プロセッサ１２は、次の方法、すなわち、シミュレートされたターゲット・ハードウェアの代わりに物理ターゲット・ハードウェア２０が割り込み信号を生成させるのと同じ方法で割り込みルーチンを実行する。従って、ターゲット・プロセッサ１２は、ターゲット・ハードウェアが物理ターゲット・ハードウェア２０であるか、シミュレートされたターゲット・ハードウェアであるかに関係なく、ターゲット・ハードウェアによって開始されたやりとりに対し同じように応答する。
【００３８】
図３は、フラッシュＲＯＭ４８に格納されていて制御プロセッサ４６によって実行されるソフトウェアのフローチャートである。このプログラムにはステップ１８０で入り、そこで制御プロセッサ４６はハードウェア・シミュレータ３６とのコミュニケーションをセットアップする。プログラムが制御プロセッサ４６によって実行されると、プログラムはステップ１８４に進み、そこで制御プロセッサ４６はモニタ制御ラッチ１１０を通して結合されたヒット・デコード／コントローラ通知回路１７０の出力を検査する。上述したように、ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアのアドレス空間内のアドレスを出力したか、あるいは物理ターゲット・ハードウェア２０があらかじめ定めた時間内に受信確認信号を返すことに失敗していれば、ヒット・デコード／コントローラ通知回路１７０はシミュレータされたターゲット・ハードウェアへのアクセスであることを示す信号を出力する。そのような場合には、プログラムは１８４からステップ１８８にブランチし、そこでターゲット・プロセッサ１２のバスに現れた信号が上述したようにキャプチャされる。キャプチャされた信号をターゲット・プロセッサ１２から受信すると、制御プロセッサ４６はステップ１９０で、その信号を対応する出力データに変換する。その後、制御プロセッサ４６はステップ１９２で、そのデータをハードウェア・シミュレータ３６（図１）に送信する。
【００３９】
上述したように、その後、ハードウェア・シミュレータ３６は、ターゲット・プロセッサ１２から出力された実際の信号がハードウェア・シミュレータ３６でシミュレートされている物理ターゲット・ハードウェアによって処理されるのと同じようにデータを処理する。データがハードウェア・シミュレータ３６によって処理されている時間の間、プログラムはステップ１９６でループに入ったままになっている。ハードウェア・シミュレータ３６は出力データの処理を完了すると、ステップ２００で入力データを制御プロセッサ４６に送信する。これを受けて、制御プロセッサ４６はステップ２０２で入力データを、受信確認信号などの対応する信号にフォーマットし、その信号はステップ２０４でターゲット・プロセッサ１２に送信される。その後、プログラムはステップ１８４に戻り、ターゲット・プロセッサ１２によるシミュレートされたターゲット・ハードウェアへの別のアクセスを待つことになる。
【００４０】
これまでの説明は、ターゲット・プロセッサ１２とシミュレートされたターゲット・ハードウェアとのやりとりがターゲット・プロセッサ１２によって開始されたときの、制御プロセッサ４６のオペレーションを説明したものである。しかし、上述したように、組み込み型システムでは、ターゲット・プロセッサ１２とターゲット・ハードウェアとのやりとりはターゲット・ハードウェアによって開始されることも可能である。従って、ターゲット・プロセッサ１２がシミュレートされたターゲット・ハードウェアにアクセスすることを試みていることを制御プロセッサ４６が検出しなければ、制御プロセッサ４６はステップ２１０にブランチする。ステップ２１０で、制御プロセッサ４６はターゲット・ハードウェア・シミュレータ３６からの、割り込み信号に対応する入力データを検出する。この割り込み信号は、シミュレートされるターゲット・ハードウェアがもし物理的に組み込み型システムに存在しなければ、ターゲット・プロセッサ１２に印加されるものと同じ信号である。割り込みに対応する、ターゲット・ハードウェア・シミュレータ３６からの入力データが２１０で検出された場合には、その入力データはステップ２１２で制御プロセッサ４６に印加される。この入力データはターゲット・ハードウェアが物理的に組み込み型システム１０に存在していれば、割り込み信号に加えて、そのターゲット・ハードウェアからターゲット・プロセッサ１２に印加される信号に対応している場合がある。どちらの場合も、制御プロセッサ４６はステップ２１４で、そのデータを対応する信号にフォーマットする。最後に、この信号はステップ２１８で、バス・キャプチャ／ドライバ回路４４を通してターゲット・プロセッサ１２に送信される。
【００４１】
以上の説明から理解されるように、テスト・システム３０はターゲット・ハードウェアの一部だけが製造され、物理的に組み込み型システムに存在する場合であっても、組み込み型システムを分析し、テストすることができる。その結果、ターゲット・ソフトウェアとターゲット・ハードウェアとのやりとりはターゲット・ハードウェアのすべてが物理的に実現される前にテストすることができ、ターゲット・ハードウェアはそれが開発され、物理的に組み込み型システムに置かれているものとしてテストすることができる。また、以上の説明から理解されるように、本発明の特定実施形態を説明してきたが、本発明の精神と範囲を逸脱しない限り種々態様に変更することが可能である。従って、本発明は請求の範囲に記載されている事項によってのみ限定されるものである。
【００４２】
【発明の効果】
以上説明したように本発明によれば、システムはターゲット・ハードウェアの一部だけが製造され、物理的に組み込み型システムに存在する場合であっても、組み込み型システムを分析し、テストすることができる。その結果、ターゲット・ソフトウェアとターゲット・ハードウェアとのやりとりはターゲット・ハードウェアのすべてが物理的に実現される前にテストすることができ、ターゲット・ハードウェアはそれが開発され、物理的に組み込み型システムに置かれているものとしてテストすることができる。
【図面の簡単な説明】
【図１】ターゲット・プロセッサと、物理および／またはシミュレートされたハードウェアを実装する組み込み型システムをテストするためのシステムおよび方法の一実施形態を示すブロック図である。
【図２】図１のテスト・システムの一実施形態を示す詳細ブロック図である。
【図３】本発明の一実施形態による方法を実行するために、図２のテスト・システム内の制御プロセッサによって実行されるソフトウェアのフローチャートである。
【符号の説明】
１０    組み込み型システム
１２    ターゲット・プロセッサ
１４    メモリ
１６    ターゲット・プログラム
２０    物理ターゲット・ハードウェア
３０    テスト・システム
３２    ターゲット・モニタ
３４    コミュニケーション・インタフェース
３６    ハードウェア・シミュレータ
４０    ターゲット・インタフェース回路
４２    アクセス検出器
４４    バス・キャプチャ／ドライバ回路
４６    制御プロセッサ
４８    ＲＯＭ
５０    ＲＡＭ
６６    イーサネット・ドライバ
６８    イーサネット・コネクタ
７０    ターゲット・アドレス・バス制御バッファ
７２    ターゲット制御バス・バッファ
７４    ターゲット・データ・バス・バッファ
８０    内部アドレス・バス
８２    内部制御バス
８６    ターゲット・クロック制御回路
８８    ターゲット・データ／制御バス・バッファ制御回路
９０    ターゲット・クロック・ライン
９４    内部データ・バス
１００  ターゲット・アドレス・バス・ラッチ
１０２  ターゲット・データ・バス・ラッチ
１１０  モニタ制御ラッチ
１１２  ターゲット制御バス
１１４  アドレス・デコーダ
１２０  アドレス・バス
１２２  データ・バス
１３０  マッピングＲＡＭ
１３２  タイムアウト回路
１４０  アドレス・マルチプレクサ
１４２  マップＲＡＭ
１４４  データ・マルチプレクサ
１４８  データ・ライン
１５０  ＯＲゲート
１６０  ターゲット・クロック・カウント
【図１】
0003715456.tif 000002
【図２】
0003715456.tif 000003
【図３】
0003715456.tif 000004