(57)【要約】【課題】ＪＴＡＧ-ＩＣＥにおいて、ＬＳＩの入出力状態をトリガとするエミュレーションのブレークを実現する「エミュレータ及びデバッグ方法」を提供する。【解決手段】エミュレーション処理部２３は、ＬＳＩ３１のＩＣＥ制御ブロック３１４に命令を発行し、所定のプログラムをコアロジック３１１に実行させ、スキャン処理部２４は、ＬＳＩ３１のコアロジック３１１のプログラムの１ステップ実行毎のスキャン動作を、ＬＳＩ３１のバウンダリスキャン制御ブロック３１５に行わせ、ＬＳＩ３１の各入出力端子３１２の状態をスキャンデータメモリ２５に格納する。エミュレーション処理部２３は、スキャンデータメモリ２５からＬＳＩ３１の各入出力端子３１２の状態を読み出し、読み出した各入出力端子３１２の状態が、予めブレーク条件メモリ２６に設定されているブレーク条件にマッチするかどうかを調べ、マッチしていればプログラムの実行をブレークする。【選択図】図１
2012242931.tif 000002
【特許請求の範囲】
【請求項１】
ＪＴＡＧインタフェースと、ＪＴＡＧインタフェースを介して各入出力端子の状態を出力するバウンダリスキャン機能と、ＪＴＡＧインタフェースを介した実行制御に応じてプログラムを実行するＪＴＡＧ-ＩＣＥ対応機能とを備えたＬＳＩ用のエミュレータであって、
前記ＬＳＩの前記ＪＴＡＧ-ＩＣＥ対応機能を利用して、前記ＬＳＩのプログラムの実行を制御するエミュレーション処理部と、
前記エミュレーション処理部によるプログラムの実行の制御に応じた前記ＬＳＩの動作中に、前記ＬＳＩのバウンダリスキャン機能を利用して、前記ＬＳＩの各入出力端子の状態を取得するスキャン処理部と、
前記スキャン処理部が取得した前記ＬＳＩの各入出力端子の状態もしくは当該状態の組み合わせが、予め設定されたブレーク条件にマッチしたときに、前記ＬＳＩのプログラムの実行を停止させるブレーク手段とを有することを特徴とするエミュレータ。
【請求項２】
請求項１記載のエミュレータであって、
前記エミュレーション処理部は、前記ＬＳＩのプログラムの実行を１ステップずつ制御し、
前記ブレーク手段は、前記ＬＳＩがプログラムの１ステップの実行毎に、前記スキャン処理部が取得した前記ＬＳＩの各入出力端子の状態もしくは当該状態の組み合わせが、予め設定されたブレーク条件にマッチするかどうかを判定し、マッチしない場合に、前記エミュレーション処理部に、前記ＬＳＩのプログラムの次のステップの実行の制御を行わせ、マッチした場合に、前記エミュレーション処理部の、前記ＬＳＩのプログラムの実行の制御を停止させることを特徴とするエミュレータ。
【請求項３】
ＪＴＡＧインタフェースと、ＪＴＡＧインタフェースを介して各入出力端子の状態を出力するバウンダリスキャン機能と、ＪＴＡＧインタフェースを介した実行制御に応じてプログラムを実行するＪＴＡＧ-ＩＣＥ対応機能とを備えたＬＳＩ用のエミュレータを用いて、前記ＬＳＩをデバッグするデバッグ方法であって、
前記エミュレータが、前記ＬＳＩの前記ＪＴＡＧ-ＩＣＥ対応機能を利用して、前記ＬＳＩのプログラムの実行を制御するステップと、
前記エミュレータが、前記プログラムの実行の制御に応じた前記ＬＳＩの動作中に、前記ＬＳＩのバウンダリスキャン機能を利用して、前記ＬＳＩの各入出力端子の状態を取得するステップと、
前記エミュレータが、前記取得した前記ＬＳＩの各入出力端子の状態もしくは当該状態の組み合わせが、予め設定されたブレーク条件にマッチしたときに、前記ＬＳＩのプログラムの実行を停止させるステップとを有することを特徴とするデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレータを用いた電子回路のデバッグの技術に関するものである。
【背景技術】
【０００２】
電子回路のデバッグの技術としては、ＬＳＩに内蔵されたスキャン回路でスキャンしたＬＳＩの入出力端子の状態を、ＬＳＩがデバッグ用に備えるＪＴＡＧインタフェースを介して外部に読み出すＪＴＡＧバウンダリスキャンの技術が知られている（ＩＥＥＥ １１４９．１）。
【０００３】
また、ＬＳＩに、ＪＴＡＧインタフェースを介した外部からの制御に応じて、ＬＳＩの状態や実行の制御を行うＩＣＥ制御回路を備えることにより、オンチップエミュレーションを可能としたＪＴＡＧ-ＩＣＥの技術も知られている（たとえば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１-０２２８８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述したＪＴＡＧ-ＩＣＥの技術によれば、ＬＳＩの入出力の状態に同期してＬＳＩの実行制御を行う手段が無く、ＬＳＩの入出力状態をトリガとするエミュレーションのブレークを行うことができなかった。
そこで、本発明は、ＪＴＡＧ-ＩＣＥにおいて、ＬＳＩの入出力状態をトリガとするエミュレーションのブレークを実現することを課題とする。
【課題を解決するための手段】
【０００６】
前記課題達成のために、本発明は、ＪＴＡＧインタフェースと、ＪＴＡＧインタフェースを介して各入出力端子の状態を出力するバウンダリスキャン機能と、ＪＴＡＧインタフェースを介した実行制御に応じてプログラムを実行するＪＴＡＧ-ＩＣＥ対応機能とを備えたＬＳＩ用のエミュレータに、前記ＬＳＩの前記ＪＴＡＧ-ＩＣＥ対応機能を利用して、前記ＬＳＩのプログラムの実行を制御するエミュレーション処理部と、前記エミュレーション処理部によるプログラムの実行の制御に応じた前記ＬＳＩの動作中に、前記ＬＳＩのバウンダリスキャン機能を利用して、前記ＬＳＩの各入出力端子の状態を取得するスキャン処理部と、前記スキャン処理部が取得した前記ＬＳＩの各入出力端子の状態もしくは当該状態の組み合わせが、予め設定されたブレーク条件にマッチしたときに、前記ＬＳＩのプログラムの実行を停止させるブレーク手段とを備えたものである。
【０００７】
ここで、このようなエミュレータは、前記エミュレーション処理部において、前記ＬＳＩのプログラムの実行を１ステップずつ制御し、前記ブレーク手段において、前記ＬＳＩがプログラムの１ステップの実行毎に、前記スキャン処理部が取得した前記ＬＳＩの各入出力端子の状態もしくは当該状態の組み合わせが、予め設定されたブレーク条件にマッチするかどうかを判定し、マッチしない場合に、前記エミュレーション処理部に、前記ＬＳＩのプログラムの次のステップの実行の制御を行わせ、マッチした場合に、前記エミュレーション処理部の、前記ＬＳＩのプログラムの実行の制御を停止させるように構成してもよい。
【０００８】
これらのようなエミュレータによれば、ＬＳＩが備えるバウンダリスキャンの機能を利用して、ＪＴＡＧ-ＩＣＥにおいて、ＬＳＩの入出力状態をトリガとするエミュレーションのブレークを実現することができるようになる。
【発明の効果】
【０００９】
以上のように、本発明によれば、ＪＴＡＧ-ＩＣＥにおいて、ＬＳＩの入出力状態をトリガとするエミュレーションのブレークを実現することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係るデバッグ構成を示すブロック図である。
【図２】本発明の実施形態に係るエミュレーション処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施形態について説明する。
図１に、本実施形態に係るデバッグの構成を示す。
本構成は、コンピュータ１とエミュレータユニット２を用いて、ロジックボード３をデバッグするものである。
ロジックボード３には、ＪＴＡＧバウンダリスキャンとＪＴＡＧ-ＩＣＥとに対応したＣＰＵ等のＬＳＩ３１と、その周辺回路３２と、ＬＳＩ３１のＪＴＡＧポート用のコネクタ３３が搭載されている。
また、ＬＳＩ３１は、ＬＳＩ本来の機能を奏するコアロジック３１１、コアロジック３１１が入出力に用いるＬＳＩ３１の入出力端子３１２、複数のスキャンセル３１３、ＩＣＥ制御ブロック３１４、バウンダリスキャン制御ブロック３１５、４本の入出力端子３１７より構成されるＪＴＡＧポートを介した外部との入出力を担うＪＴＡＧインタフェース３１６を備えている。
【００１２】
ここで、スキャンセル３１３は、ＪＴＡＧポートを構成する４本の入出力端子３１７を除く、ＬＳＩ３１の各入出力端子３１２に対応して各々設して設けられている。また、各スキャンセル３１３はシリアルに順次接続されている。
また、バウンダリスキャン制御ブロック３１５は、ＬＳＩ３１のバウンダリスキャン動作を制御する。すなわち、バウンダリスキャン制御ブロック３１５は、ＪＴＡＧインタフェース３１６を介した外部からの制御に応じて、各スキャンセル３１３に対応する入出力端子３１２の状態を、各スキャンセル３１３にシフト動作を行わせることにより取得して、ＪＴＡＧインタフェース３１６を介して外部に出力するスキャン動作等を行う。
【００１３】
また、ＩＣＥ制御ブロック３１４は、ＬＳＩ３１のオンチップエミュレーション動作を制御する。すなわち、ＩＣＥ制御ブロック３１４は、ＪＴＡＧインタフェース３１６を介した外部からの命令に応じて、コアロジック３１１の状態やプログラムの実行を制御する。
ここで、バウンダリスキャン制御ブロック３１５は、ＩＣＥ制御ブロック３１４の制御下におけるコアブロックの動作実行中にも、上述したスキャン動作を行うことができるように構成されている。
次に、エミュレータユニット２は、ロジックボード３のコネクタ３３を介して、ＬＳＩ３１のＪＴＡＧポートとの間の入出力を担うデバイスインタフェース２１、コンピュータ１との間の入出力を担うホストインタフェース２２、エミュレーション処理部２３、スキャン処理部２４、スキャンデータメモリ２５、ブレーク条件メモリ２６とを備えている。
【００１４】
ここで、エミュレーション処理部２３は、コンピュータ１からの制御に従って、ＬＳＩ３１のＩＣＥ制御ブロック３１４に命令を発行し、ＩＣＥ制御ブロック３１４にＬＳＩ３１のオンチップエミュレーション動作を制御させる。
また、スキャン処理部２４は、コンピュータ１からの制御に従って、ＬＳＩ３１のバウンダリスキャン制御ブロック３１５を制御し、ＬＳＩ３１に前述したスキャン動作を行わせＬＳＩ３１の各入出力端子３１２の状態を読み出しスキャンデータメモリ２５に格納する動作などを行う。また、エミュレーション処理部２３は、コンピュータ１からの要求に応えてスキャンデータメモリ２５に格納されたＬＳＩ３１の各入出力端子３１２の状態の履歴をトレースデータとしてコンピュータ１に提供する処理も行う。
【００１５】
次に、コンピュータ１は、オペレーティングシステム１１上で稼働するエミュレータアプリケーション１２を備えており、エミュレータアプリケーション１２は、ユーザの作成したスクリプトやユーザの操作に従ってエミュレータユニット２のＩＣＥ制御ブロック３１４とスキャン処理部２４とを制御する。
以下、このような構成において行うＬＳＩ３１のデバッグ動作について説明する。
図２に、エミュレータユニット２のエミュレーション処理部２３が、コンピュータ１のエミュレータアプリケーション１２からの制御に従って行うエミュレーション処理の手順を示す。
図示するように、このエミュレーション処理では、まず、スキャン処理部２４に並行スキャンモードを設定する（ステップ２０２）。
ここで、並行スキャンモードが設定されたスキャン処理部２４は、エミュレーション処理部２３と同期して動作し、ＬＳＩ３１のコアロジック３１１のプログラムの１ステップ実行毎のスキャン動作を、ＬＳＩ３１のバウンダリスキャン制御ブロック３１５に行わせ、ＬＳＩ３１の各入出力端子３１２の状態をＬＳＩ３１より読み出しスキャンデータメモリ２５に格納する。
【００１６】
そして、次に、エミュレーション処理部２３は、ＬＳＩ３１のＩＣＥ制御ブロック３１４に命令を発行し、所定のプログラムを１ステップ、コアロジック３１１に実行させる（ステップ２０４）。
ここで、コアロジック３１１のプログラムの各ステップの実行は、たとえば、コアロジック３１１に、周辺回路３２やＬＳＩ３１に含まれる所定のプログラムメモリのプログラムの各ステップを実行させること等により実現する。
次に、エミュレーション処理部２３は、スキャンデータメモリ２５から、ステップ２０２のプログラムのステップの実行後のＬＳＩ３１の各入出力端子３１２の状態を読み出し、読み出した各入出力端子３１２の状態が、予めコンピュータ１のエミュレータアプリケーション１２からブレーク条件メモリ２６に設定されているブレーク条件にマッチするかどうかを調べる（ステップ２０６）。
【００１７】
ここで、ブレーク条件メモリ２６に設定されるブレーク条件としては、特定の入出力端子３１２の特定の値の出現もしくは当該特定の値への変化や、特定の入出力端子３１２の値の特定の組み合わせ（たとえば、特定アドレスのリード/ライトを表す入出力端子３１２の値の組み合わせ）の出現等を設定する。
そして、読み出した各入出力端子３１２の状態がブレーク条件にマッチしなかった場合には（ステップ２０６）、プログラムが最後のステップまで実行を完了したかどうかを調べ（ステップ２０８）、完了していればエミュレーション処理を終了し、完了していなければステップ２０２に戻ってプログラムの次のステップを実行する。
【００１８】
一方、読み出した各入出力端子３１２の状態がブレーク条件にマッチした場合には（ステップ２０６）、プログラムの実行をブレークする（ステップ２１０）。すなわち、プログラムの以降のステップの実行を停止し、最後に実行したステップの識別と共にコンピュータ１のエミュレータアプリケーション１２にブレーク発生を通知する。そして、エミュレータアプリケーション１２からの再開の指示があれば（ステップ２１２）、ステップ２０８に進み、プログラムが最後のステップまで実行を完了したかどうかを調べ、完了していればエミュレーション処理を終了し、完了していなければステップ２０２に戻ってプログラムの次のステップを実行する。一方、エミュレータアプリケーション１２からの終了の指示があった場合には（ステップ２１４）、エミュレーション処理を終了する。
【００１９】
以上、本発明の実施形態について説明した。
以上のように、本実施形態によれば、ＬＳＩ３１が備えるバウンダリスキャンの機能を利用して、ＪＴＡＧ-ＩＣＥにおいて、ＬＳＩ３１の入出力状態をトリガとするエミュレーションのブレークを実現することができる。
ところで、以上の実施形態におけるエミュレーション処理では、ＬＳＩ３１のコアロジック３１１にプログラムのステップを１ステップずつ実行させてコアロジック３１１のプログラムの実行を停止した上で、スキャン動作によって読み出されたＬＳＩ３１の各入出力端子３１２の状態とブレーク条件とのマッチの有無を判定し、マッチした場合にプログラムの実行をブレークするようにしたが、ＬＳＩ３１のコアロジック３１１のプログラムの各ステップの連続的な実行中に、プログラムの各ステップの実行と同期した形態でＬＳＩ３１の各入出力端子３１２の状態をスキャン動作によって取得できる場合には、１ステップずつプログラムの実行を停止する必要はなく、プログラムの各ステップを連続的に実行させながら、スキャン動作によって読み出されたＬＳＩ３１の各入出力端子３１２の状態とブレーク条件とのマッチの有無を判定し、マッチした時点でＬＳＩ３１のプログラムの実行をブレークするようにしてよい。
【００２０】
また、以上の実施形態におけるエミュレータユニット２の機能またはその一部は、コンピュータ１のエミュレータアプリケーション１２に、これを備えるようにしてもよい。または、逆に、以上の実施形態におけるコンピュータ１のエミュレータアプリケーション１２の機能はエミュレータユニット２にこれを備えるようにしてもよい。
【符号の説明】
【００２１】
１…コンピュータ、２…エミュレータユニット、３…ロジックボード、１１…オペレーティングシステム、１２…エミュレータアプリケーション、２１…デバイスインタフェース、２２…ホストインタフェース、２３…エミュレーション処理部、２４…スキャン処理部、２５…スキャンデータメモリ、２６…ブレーク条件メモリ、３１…ＬＳＩ、３２…周辺回路、３３…コネクタ、３１１…コアロジック、３１２…入出力端子、３１３…スキャンセル、３１４…ＩＣＥ制御ブロック、３１５…バウンダリスキャン制御ブロック、３１６…ＪＴＡＧインタフェース。
【図１】
2012242931.tif 000003
【図２】
2012242931.tif 000004