(57)【要約】【課題】シミュレーション環境なしでマイクロプロセッサの不具合の検出、現象確認を容易に実現する。            【解決手段】ホストＰＣ１２０上でデバッガが動作し、デバッガの操作に応じて２つのマイクロプロセッサＡ、Ｂ（１００、１００’）がデバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）を介して同一のデバッグ動作を並行して実行し、マイクロプロセッサＡ、Ｂから得られた内部情報（ダンプ結果）はホストＰＣ１２０に転送され、ホストＰＣ１２０で比較し不良解析を行う。【選択図】図１
2010176392.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサのデバッグの制御を行うホストマシンと、
同一構成とされる第１、第２のマイクロプロセッサと、
前記ホストマシンと前記第１、第２のマイクロプロセッサとをそれぞれ接続する第１、第２のデバッグ・インタフェース装置と、
を備え、
前記ホストマシンは、
前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して、同一のデバッグ動作を並行して実行させ、
前記第１、第２のマイクロプロセッサの内部情報を前記第１、第２のデバッグ・インタフェース装置を介して取得して比較し、不良解析を行う手段を備えている、ことを特徴とする不良解析装置。
【請求項２】
前記第１のマイクロプロセッサは良品であり、前記第２のマイクロプロセッサは不良解析対象のマイクロプロセッサである、ことを特徴とする請求項１記載の不良解析装置。
【請求項３】
前記ホストマシンは、前記第１、第２のマイクロプロセッサの内部情報の不一致を検出した場合に前記第１、第２のマイクロプロセッサにおいて次に行うデバッグ動作を予め指定しておく、ことを特徴とする請求項１又は２記載の不良解析装置。
【請求項４】
前記ホストマシンは、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサのプログラム上に複数のブレークポイントを設定し、
第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される第２ブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、次の動作として、前記第１のブレークポイントと前記第２のブレークポイント間の命令を、１ステップずつ実行させるように、デバッグ命令を変更し、該変更したデバッグ命令を前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項１乃至３のいずれか１項に記載の不良解析装置。
【請求項５】
前記ホストマシンは、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２マイクロプロセッサに対して、バイナリサーチでブレークポイントを設定し、不良解析を行う、ことを特徴とする請求項１乃至３のいずれか１項に記載の不良解析装置。
【請求項６】
前記ホストマシンは、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサのプログラム上に探索範囲の始めと終わりに対応する第１、第２のブレークポイントを設定し、
前記第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される前記第２のブレークポイントでは前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記ホストマシンは、前記第１のブレークポイントと前記第２のブレークポイントの中間を第３のブレークポイントとして設定するように、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項５記載の不良解析装置。
【請求項７】
前記第１、第２マイクロプロセッサがプログラムの先頭から前記第３のブレークポイントまで実行し、前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致した場合、
前記ホストマシンは、前記第３のブレークポイントを新たな第１のブレークポイントとし、前記新たな第１のブレークポイントと前記第２のブレークポイントとの中間を第３のブレークポイントとし、
前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記ホストマシンは、前記第３のブレークポイントを新たな第２のブレークポイントとし、前記新たな第２のブレークポイントと前記第１のブレークポイントとの中間を第３のブレークポイントとするように、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項６記載の不良解析装置。
【請求項８】
前記ホストマシンは、前記ブレークポイントのバイナリサーチを所定回数実行した後の探索範囲の始めと終わりに対応する第１、第２のブレークポイントに関して、
前記第１、第２マイクロプロセッサをプログラム先頭から第１のブレークポイントまで実行させ、その後、第２のブレークポイントまでステップ実行させる、ことを特徴とする請求項５乃至７のいずれか１項に記載の不良解析装置。
【請求項９】
前記ホストマシンは、一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、前記第１のマイクロプロセッサの内部情報の少なくとも１部を前記第２マイクロプロセッサの内部情報として設定した上で、前記第１、第２マイクロプロセッサを前記一のブレークポイントの次の命令から再実行させる制御を行う、ことを特徴とする請求項１乃至３のいずれか１項に記載の不良解析装置。
【請求項１０】
前記ホストマシンは、前記再実行がステップ実行で行われ、一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、不一致情報を記憶部に保存し、
前記ステップ実行の結果、前記記憶部に保存された不一致情報が複数個所ある場合、複数の不一致箇所の情報のうち少なくとも２つの不一致情報の共通点を抽出する、ことを特徴とする、請求項９記載の不良解析装置。
【請求項１１】
ホストマシン上でマイクロプロセッサのデバッガが動作し、
前記ホストマシンは、
同一構成とされる、第１、第２のマイクロプロセッサに対して、第１、第２のデバッグ・インタフェース装置を介して同一のデバッグ動作を並行して実行させ、
前記ホストマシンは、前記第１、第２のマイクロプロセッサの内部情報を第１、第２のデバッグ・インタフェース装置を介して取得して比較し、不良解析を行う、ことを特徴とする不良解析方法。
【請求項１２】
前記第１のマイクロプロセッサは良品であり、前記第２のマイクロプロセッサは不良解析対象のマイクロプロセッサである、ことを特徴とする請求項１１記載の不良解析方法。
【請求項１３】
前記ホストマシンには、前記第１、第２のマイクロプロセッサの内部情報の不一致を検出した場合において、前記第１、第２のマイクロプロセッサで次に行うデバッグ動作が予め指定されている、ことを特徴とする請求項１１又は１２記載の不良解析方法。
【請求項１４】
前記ホストマシンは、前記第１、第２のマイクロプロセッサのプログラム上に複数のブレークポイントを設定し、
第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される第２ブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、次の動作として、前記第１のブレークポイントと前記第２のブレークポイント間の命令を、１ステップずつ実行させるように、デバッグ命令を変更し、前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項１１乃至１３のいずれか１項に記載の不良解析方法。
【請求項１５】
前記ホストマシンは、前記第１、第２マイクロプロセッサに対して、バイナリサーチでブレークポイントを設定し不良解析を行う、ことを特徴とする請求項１１乃至１３のいずれか１項に記載の不良解析方法。
【請求項１６】
前記ホストマシンは、前記第１、第２のマイクロプロセッサのプログラム上に、探索範囲の始めと終わりに対応する第１、第２のブレークポイントを設定し、
前記第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される前記第２のブレークポイントでは前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記ホストマシンは、前記第１のブレークポイントと前記第２のブレークポイントの中間を第３のブレークポイントとして設定し、前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項１５記載の不良解析方法。
【請求項１７】
前記第１、第２マイクロプロセッサがプログラムの先頭から前記第３のブレークポイントまで実行し、前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致した場合、
前記ホストマシンは、前記第３のブレークポイントを新たな第１のブレークポイントとし、前記新たな第１のブレークポイントと前記第２のブレークポイントとの中間を第３のブレークポイントとし、
前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記ホストマシンは、前記第３のブレークポイントを新たな第２のブレークポイントとし、前記新たな第２のブレークポイントと前記第１のブレークポイントとの中間を第３のブレークポイントとし、前記第１、第２のマイクロプロセッサに対して指示する、ことを特徴とする請求項１６記載の不良解析方法。
【請求項１８】
前記ホストマシンは、前記ブレークポイントのバイナリサーチを所定回数実行した後の探索範囲の始めと終わりに対応する第１、第２のブレークポイントに関して、
前記第１、第２マイクロプロセッサをプログラム先頭から第１のブレークポイントまで実行させ、その後、第２のブレークポイントまでステップ実行させる、ことを特徴とする請求項１５乃至１７のいずれか１項に記載の不良解析方法。
【請求項１９】
前記ホストマシンは、一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、前記第１のマイクロプロセッサの内部情報の少なくとも１部を前記第２マイクロプロセッサの内部情報として設定した上で、再実行させる制御を行う、ことを特徴とする請求項１１乃至１３のいずれか１項に記載の不良解析方法。
【請求項２０】
前記ホストマシンは、前記再実行が、ステップ実行で行われ、一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、不一致情報を記憶部に保存し、
前記ステップ実行の結果、前記記憶部に保存された不一致情報が複数個所ある場合、複数の不一致箇所の情報のうち少なくとも２つの不一致情報の共通点を抽出する、ことを特徴とする、請求項１９記載の不良解析方法。
【請求項２１】
同一構成とされる第１、第２のマイクロプロセッサとそれぞれ第１、第２のデバッグ・インタフェース装置を介して接続されるホストマシンに、
前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して同一のデバッグ動作を並行して実行させ、
前記第１、第２のマイクロプロセッサの内部情報を取得して比較し、不良解析を行う処理を、実行させるプログラム。
【請求項２２】
前記第１のマイクロプロセッサは良品であり、前記第２のマイクロプロセッサは不良解析対象のマイクロプロセッサである、請求項２１記載のプログラム。
【請求項２３】
前記第１、第２のマイクロプロセッサの内部情報の不一致を検出した場合には、前記第１、第２のマイクロプロセッサにおいて次に行うデバッグ動作を指定しておく処理を、前記ホストマシンに実行させる請求項２１又は２２記載のプログラム。
【請求項２４】
前記第１、第２のマイクロプロセッサのプログラム上に複数のブレークポイントを設定し、
第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される第２ブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、次の動作として、前記第１のブレークポイントと前記第２のブレークポイント間の命令を、１ステップずつ実行させるように、デバッグ命令を変更し、前記第１、第２のマイクロプロセッサに対して指示する処理を、前記ホストマシンに実行させる請求項２１乃至２３のいずれか１項に記載のプログラム。
【請求項２５】
前記第１、第２マイクロプロセッサに対して、バイナリサーチでブレークポイントを設定し不良解析を行う処理を、前記ホストマシンに実行させる請求項２１乃至２３のいずれか１項に記載のプログラム。
【請求項２６】
前記第１、第２のマイクロプロセッサのプログラム上に、探索範囲の始めと終わりに対応する第１、第２のブレークポイントを設定し、
前記第１のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される前記第２のブレークポイントでは前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記第１のブレークポイントと前記第２のブレークポイントの中間を第３のブレークポイントとして設定し、前記第１、第２のマイクロプロセッサに対して指示する処理を、前記ホストマシンに実行させる請求項２５記載のプログラム。
【請求項２７】
前記第１、第２マイクロプロセッサがプログラムの先頭から前記第３のブレークポイントまで実行し、前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が一致した場合、
前記第３のブレークポイントを新たな第１のブレークポイントとし、前記新たな第１のブレークポイントと前記第２のブレークポイントとの中間を第３のブレークポイントとし、
前記第３のブレークポイントにおいて前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、
前記第３のブレークポイントを新たな第２のブレークポイントとし、前記新たな第２のブレークポイントと前記第１のブレークポイントとの中間を第３のブレークポイントとし、前記第１、第２のマイクロプロセッサに対して指示する処理を、前記ホストマシンに実行させる請求項２６記載のプログラム。
【請求項２８】
前記ブレークポイントのバイナリサーチを所定回数実行した後の探索範囲の始めと終わりに対応する第１、第２のブレークポイントに関して、
前記第１、第２マイクロプロセッサをプログラム先頭から第１のブレークポイントまで実行させ、その後、第２のブレークポイントまでステップ実行させる処理を、前記ホストマシンに実行させる請求項２５乃至２７のいずれか１項に記載のプログラム。
【請求項２９】
一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、前記第１のマイクロプロセッサの内部情報の少なくとも１部を前記第２マイクロプロセッサの内部情報として設定した上で、再実行させる制御を行う処理を、前記ホストマシンに実行させる請求項２１乃至２３のいずれか１項に記載のプログラム。
【請求項３０】
前記再実行がステップ実行で行われ、一のブレークポイントにおける前記第１、第２マイクロプロセッサから取得された内部情報が不一致の場合、不一致情報を記憶部に保存し、
前記ステップ実行の結果、前記記憶部に保存された不一致情報が複数個所ある場合、複数の不一致箇所の情報のうち少なくとも２つの不一致情報の共通点を抽出する処理を、前記ホストマシンに実行させる請求項２９記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデバイスの評価解析技術に関し、特にマイクロプロセッサの不良解析等に用いて好適な装置と方法及びプログラムに関する
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）のテストに関して、例えば特許文献１には、図９に示すように、良品であることが予め判明している良品ＬＳＩ１１と被測定ＬＳＩ１２とを同期させて同一のテスト入力条件下で動作させ、被測定ＬＳＩ１２が良品ＬＳＩ１１と機能的に同一動作を行うか否かを判定する構成が開示されている。
【０００３】
また、リアルタイムでエミュレーションを行うインサーキットエミュレータ（ＩＣＥ）として、例えば特許文献２には、図１０に示すように、被試験プロセッサのエミュレーションを行うエミュレーション装置において、被試験プロセッサ（ＭＰＵ）３についての予期される命令実行結果に対応するリファレンスデータを予め記憶し、被試験プロセッサ（ＭＰＵ）３の命令実行サイクルに同期した外部からのクロック信号に基づいてリファレンスデータを順次出力する記憶手段（トレースメモリ部）５と、被試験プロセッサ（ＭＰＵ）３の実行結果と、出力されたリファレンスデータとを比較し、比較結果信号を出力する比較手段（コンパレータ部）７と、比較結果信号に基づいてエミュレーションの中断、続行を行う制御手段（コントローラ）４とを備えた構成が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平５−１１９１１６号公報
【特許文献２】特開平５−７３３４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
以下に本発明による分析を与える。
【０００６】
不良品のマイクロプロセッサの解析（不良解析）を行うにあたり、ＬＳＩテスタでマイクロプロセッサの不具合現象を再現できたとしても、ＬＳＩテスタから得られる不良情報（フェイル・ログデータ）では、該不良品のマイクロプロセッサの外部端子から出力された一部の結果しか得られず、該不良品のマイクロプロセッサの動作過程における内部状態を知ることができない。
【０００７】
また、マイクロプロセッサにおいて異常動作が発生しても、当該異常動作の結果が直ちにマイクロプロセッサの出力ポートに出力されない場合がある。このような場合、どの時点で不具合動作が発生したのかを判断することは難しく、真の故障原因を特定することが困難である。
【０００８】
さらに、シミュレーション環境等により、不良の詳細を調査することは、手間が掛かり、緊急に解析を要する場合には、不向きといえる。
【０００９】
そして、図９に示した特許文献１の構成は、不良を検出することに特化しており、２つのマイクロプロセッサの同一動作結果を比較し不一致だった場合に、それがプログラム実行におけるどのアドレスのどの命令が原因で起きたかを特定したり、メモリやレジスタがどのような値になったのかを知ることはできない。これは、マイクロプロセッサ内部の詳細情報を調べるための手段を持たないためである。
【００１０】
また、図１０に示した特許文献２の構成では、予め予期していない命令で不具合が発生する場合の不良解析を行うことはできない。これは、特許文献２の構成においては、不具合が発生する命令を予め予期し、その実行結果に対する膨大な期待値データを用意しておく必要があるためである。
【００１１】
本発明は、上記した問題点の少なくも１つを解決するものである。
【課題を解決するための手段】
【００１２】
本発明によれば、マイクロプロセッサのデバッガが動作するホストと、同一構成の第１、第２のマイクロプロセッサと、前記ホストと前記第１、第２のマイクロプロセッサとをそれぞれ接続する第１、第２のデバッグ・インタフェース装置と、を備え、前記ホストは、前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して同一のデバッグ動作を並行して実行させ、前記ホストは、前記第１、第２のマイクロプロセッサから得られた内部情報を比較し、不良解析を行う不良解析装置が提供される。
【００１３】
本発明によれば、ホストマシン上でマイクロプロセッサのデバッガが動作し、前記ホストマシンは、同一構成とされる、第１、第２のマイクロプロセッサに対して、第１、第２のデバッグ・インタフェース装置を介して同一のデバッグ動作を並行して実行させ、前記ホストマシンは、前記第１、第２のマイクロプロセッサから得られた内部情報を比較し、不良解析を行う、不良解析方法が提供される。
【００１４】
本発明によれば、同一構成とされる第１、第２のマイクロプロセッサとそれぞれ第１、第２のデバッグ・インタフェース装置を介して接続されるホストマシンに、
前記第１、第２のデバッグ・インタフェース装置を介して前記第１、第２のマイクロプロセッサに対して同一のデバッグ動作を並行して実行させ、前記第１、第２のマイクロプロセッサの内部情報を取得して比較し、不良解析を行う処理を、実行させるプログラムが提供される。
【発明の効果】
【００１５】
本発明によれば、シミュレーション環境なしでマイクロプロセッサの不具合の検出、現象確認を容易に実現できる。
【図面の簡単な説明】
【００１６】
【図１】本発明の一実施例の構成を示す図である。
【図２】（Ａ）、（Ｂ）は本発明の一実施例のホストＰＣとマイクロプロセッサを示す図である。
【図３】本発明の一実施例の動作を説明する流れ図である。
【図４】本発明の一実施例の動作を説明する図である。
【図５】本発明の別の実施例の動作を説明する流れ図である。
【図６】本発明の別の実施例の動作を説明する流れ図である。
【図７】本発明の別の実施例の動作を説明する図である。
【図８】本発明の実施例の内部情報の一例を示す図である。
【図９】特許文献１の構成を示す図である。
【図１０】特許文献２の構成を示す図である。
【発明を実施するための形態】
【００１７】
本発明によれば、マイクロプロセッサのデバッガが動作するホストマシン（図１のホストＰＣ：１２０)と、同一構成とされる第１、第２のマイクロプロセッサ（図１の１００、１００’）と、ホストマシンと第１、第２のマイクロプロセッサとをそれぞれ接続する第１、第２のデバッグＩ／Ｆ（インタフェース）装置（図１の１１０、１１０’）と、を備えている。ホストマシン（１２０）は、第１、第２のデバッグＩ／Ｆ装置（１１０、１１０’）を介して第１、第２のマイクロプロセッサ（１００、１００’）に対して同一のデバッグ動作を並行して実行し、第１、第２のマイクロプロセッサ（１００、１００’）の内部情報（ダンプ結果）を取得して比較し、不良解析を行う。本発明において、一方のマイクロプロセッサ（第１のマイクロプロセッサ）は良品であり、他方（第２のマイクロプロセッサ）は不良解析対象のマイクロプロセッサである。
【００１８】
本発明において、ホストマシン（１２０）は、第１、第２のマイクロプロセッサ（１００、１００’）のプログラム上に複数のブレークポイントを設定し、第１のブレークポイントにおいて第１、第２マイクロプロセッサ（１００、１００’）から取得された内部情報が一致し、前記第１のブレークポイントよりも後に実行される第２ブレークポイントにおいて第１、第２マイクロプロセッサ（１００、１００’）から取得された内部情報が不一致の場合、次の動作として、前記第１のブレークポイントと前記第２のブレークポイント間の命令を、１ステップずつ実行させるように、デバッグ命令を変更し、前記第１、第２のマイクロプロセッサに対して指示する。
【００１９】
あるいは、本発明において、ホストマシン（１２０）は、第１、第２マイクロプロセッサ（１００、１００’）に対して、バイナリサーチでブレークポイントを設定し不良解析を行うようにしてもよい。本発明において、ホストマシン（１２０）は、ブレークポイントのバイナリサーチを所定回数実行の結果、決定された探索範囲の始めと終わりの第１、第２のブレークポイントに関して、第１、第２マイクロプロセッサ（１００、１００’）をプログラム先頭から第１のブレークポイントまで実行させ、その後、第２のブレークポイントまでステップ実行させるようにしてもよい。
【００２０】
本発明において、ホストマシン（１２０）は、一のブレークポイントにおける前記第１、第２マイクロプロセッサ（１００、１００’）から取得された内部情報が不一致の場合、第１のマイクロプロセッサ（１００）の内部情報の少なくとも１部を前記第２マイクロプロセッサ（１００’）の内部情報として設定した上で、ステップ実行等再実行させる制御を行うようにしてもよい。
【００２１】
本発明において、ホストマシン（１２０）は、再実行において、一のブレークポイントにおける第１、第２マイクロプロセッサ（１００、１００’）から取得された内部情報が不一致の場合、不一致情報を記憶部に保存していく。そして、再実行終了時等において、前記記憶部に保存された不一致情報が複数個所ある場合、複数の不一致箇所の情報のうち少なくとも２つの不一致情報の共通点を抽出するようにしてもよい。すなわち、第１、第２のマイクロプロセッサの（１００、１００’）内部情報（ダンプ結果）の比較の結果、不一致の場合、不一致情報（内部情報）を保存し、良品マイクロプロセッサの内部情報を不良のマイクロプロセッサに書き込んだ上で、ステップ実行又はブレークポイント設定等を行うようにしてもよい。不一致となる箇所（プログラム上の実行停止箇所）が、２箇所以上見つかった場合、次に保存しておいたそれぞれの不一致情報同士を比較し、一致した項目に関する情報（共通点）の保存を行うようにしてもよい。
【００２２】
このように、本発明においては、デバッグＩ／Ｆ（インタフェース）装置及びマイクロプロセッサを１台のホストマシン（１２０）に２台接続し、それらに同一のデバッグ動作をさせ、ブレークポイント等における良品と不良解析対象の２つのマイクロプロセッサの動作結果である内部情報（ダンプ結果）をホストマシンで比較する。比較の結果、不一致検出時、不良のマイクロプロセッサのＲＡＭ、レジスタ、実行命令アドレス等の情報をメモリに格納する。また、２つのマイクロプロセッサの内部情報（ダンプ結果）の比較結果に応じて、エミュレーションの中断、続行、その他デバッグ動作を効率よいものに変更する制御を好ましくはソフトウェアにより実現する。本発明によれば、不良品を同時に複数個動作させ比較させることも可能である。良品と不良解析対象の２つのマイクロプロセッサのプログラム実行、比較の結果、不一致が検出されなかった場合に、自動で、次のプログラムに切り替えロードを行うようにしてもよい。あるいは、ブレークポイントを自動で再設定し、プログラムを再実行するようにしてもよい。以下、実施例に即して説明する。
【００２３】
＜実施例１＞
図１は、本発明の一実施例に係る不良解析装置の構成を示す図である。図１を参照すると、本発明の一実施例の不良解析装置は、オンチップデバッグ機能を備えたマイクロプロセッサＡ、Ｂ（１００、１００’）と、それぞれのマイクロプロセッサＡ、Ｂ（１００、１００’）に接続されデバッグ機能を補助するデバッグ・インタフェース（Ｉ／Ｆ）装置Ａ、Ｂ（１１０、１１０’）と、デバッグＩ／Ｆ装置（１１０、１１０’）を介してマイクロプロセッサＡ、Ｂ（１００、１００’）にそれぞれ接続され、デバッグを行うホストＰＣ（ＨＯＳＴ  ＰＣ、単に、「ホスト」ともいう）１２０とを備えている。マイクロプロセッサＡ、Ｂ（１００、１００’）は、命令を実行するＣＰＵと、オンチップデバッグ機能としてブレーク、メモリダンプ等を行うオンチップデバッグ回路を有する（あるいは同等の動作を実行可能な手段を有する）。オンチップデバッグ回路は、インサーキットエミュレータ（ＩＣＥ）に設けられていたデバック回路の１部をチップ（マイクロプロセッサ）上に搭載し、評価時に、実デバイス（マイクロプロセッサ）を用いてエミュレーション機能を実現するものである。
【００２４】
マイクロプロセッサＡ（１００）は、予め良品であることが判明しているマイクロプロセッサ（ＫＧＤ：Ｋｎｏｗｎ  Ｇｏｏｄ  Ｄｅｖｉｃｅ）である。マイクロプロセッサＢ（１００’）は、マイクロプロセッサＡと同一構成とされる、不良解析対象のマイクロプロセッサである。デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）は同一の構成（同一仕様）とされる。
【００２５】
ホストＰＣ１２０とデバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）との間は例えばＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）インタフェースによって接続される。
【００２６】
デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）は、ＵＳＢインタフェース等の通信手段を介して、ホストＰＣ１２０のＣＰＵ１２１上で動作するデバッガからの指示を受けたり、マイクロプロセッサＡ、Ｂ（１００、１００’）からそれぞれ得たデバッグ結果（ダンプ情報、トレース情報等）を、ホストＰＣ１２０に送信する。
【００２７】
デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）とマイクロプロセッサＡ、Ｂの（１００、１００’）間はそれぞれ例えばＪＴＡＧ（Ｊｏｉｎｔ  Ｔａｇ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）インタフェース等により接続される。
【００２８】
図２（Ａ）は、ホストＰＣ１２０の構成の一例を示す図である。図２（Ａ）を参照すると、ホストＰＣ１２０は、デバッガツールを起動、実行するために必要なＣＰＵ１２１、主記憶装置（ＲＡＭ：ランダムアクセスメモリ）１２３、補助記憶装置（ハードディスク）１２２等を備え、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）と接続するためのＵＳＢ等の通信手段１２４を２つ以上備える。
【００２９】
ホストＰＣ１２０のＣＰＵ１２１では、デバッグ時、デバッガ・ソフトウェア（「エミュレーション・ソフトウェア」ともいう）が動作し、デバッガの操作に応じて、２つのマイクロプロセッサＡ、Ｂ（１００、１００’）は、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）を介して、同一のデバッグ動作を行い、２つのマイクロプロセッサＡ、Ｂ（１００、１００’）それぞれの内部レジスタやＲＡＭなどのデバイスの内部情報を取得する。ここで、デバッグ動作とは、ユーザプログラムの実行、所定の位置でブレークをかけるブレーク制御、一命令毎に、プログラム実行／停止を行うステップ実行、ブレーク中におけるメモリ／レジスタ内容の読み出し／書き込み等のことをいう。
【００３０】
マイクロプロセッサＡ、Ｂ（１００、１００’）から得られた内部情報は、ホストＰＣ１２０に転送され、ホストＰＣ１２０上の記憶装置（バッファ等）に一旦蓄えられた後で、比較され、不一致が検出された時の状態（内部情報）を記憶装置に保存し、確認することで、異常状態の検出（確認）、不良解析等が行われる。
【００３１】
図２（Ｂ）は、図１のマイクロプロセッサＡ、Ｂ（１００、１００’）の構成の一例を示す図である。マイクロプロセッサＡ、Ｂ（１００、１００’）は同一構成とされる。図２（Ｂ）を参照すると、マイクロプロセッサＡ、Ｂ（１００、１００’）は、ＣＰＵ１０１と、オンチップデバッグ回路１０２と、ＣＰＵ１０１とバス（データ／アドレスバス）１０６を介して接続される電気的書き換え可能な不揮発性のフラッシュメモリ（ＦＬＡＳＨ）１０３と、周辺回路（ＰＥＲＩＰＨＥＲＡＬ）１０４と、ＲＡＭ（ランダムアクセスメモリ）（１０５）とを備えている。なお、バス１０６には、図示されない制御信号、クロック（ＣＬＫ）等も転送される。なお、図２（Ｂ）は、本発明が適用可能なマイクロプロセッサＡ、Ｂ（１００、１００’）の一例を模式的に示したものであり、本発明において、マイクロプロセッサＡ、Ｂが図２（Ｂ）の構成にのみ限定されるものでないことは勿論である。
【００３２】
マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２は、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）とＪＴＡＧインタフェース（シリアル、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  ａｎｄ  Ｔｒａｎｓｍｉｔｔｅｒ）等でも可）を介して通信する。
【００３３】
マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２は、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）のＪＴＡＧインタフェースを介してホストＰＣ１２０からのデバッグ指示を受け、ＣＰＵ１０１のデバッグ動作を行い、ブレークポイント等でのレジスタ、メモリのダンプ情報等をＪＴＡＧインタフェースを介してデバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）に送信する。
【００３４】
本実施例において、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）は、ホストＰＣ１２０からのデバッグ命令をマイクロプロセッサＡ、Ｂ（１００、１００’）に対する指示に変換するための変換装置としての役割を果たしている。
【００３５】
本実施例においては、１台のホストＰＣ１２０に２台のデバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）が接続され、２つのマイクロプロセッサＡ、Ｂ（１００、１００’）に対して同一デバッグ動作を並行して実行し、ホストＰＣ１２０でデバッグ結果を比較することで、異常検出、不良解析を実行する。すなわち、ホストＰＣ１２０上では、オンチップデバッグを実行するためのデバッガ・ソフトウェアが動作し、ユーザによる操作に応じて又はデバッガ・ソフトウェアによる自律的制御にしたがって、２つのマイクロプロセッサＡ、Ｂ（１００、１００’）は並行して同一のデバッグ動作が実行される。ホストＰＣ１２０上では、この他に、図１には、図示されない不良解析プログラムがＣＰＵ１２１上で動作する。なお、不良解析プログラムは、デバッガ・ソフトウェアの機能の一部に組み込むようにしてもよい。
【００３６】
ホストＰＣ１２０のＣＰＵ１２１上で動作する不良解析プログラムは、デバッガ・ソフトウェアにより取得した２つのマイクロプロセッサＡ、Ｂ（１００、１００’）のそれぞれのレジスタ、メモリ等の値を格納し、比較し、不一致を検出した場合には、メモリの値やプログラム・カウンタ値等の情報を保存し、状況に応じて、次にどのような処置を行うかを、事前にプログラミングしたフローに従って、デバッガ・ソフトウェアの制御を行う。
【００３７】
図３は、本発明の一実施例の動作を説明するための流れ図である。図１、図２、図３を参照して、本実施例の動作を説明する。
【００３８】
マイクロプロセッサＡ、Ｂ（１００、１００’）に搭載された電気的書き換え可能な不揮発性メモリ（例えばＦＬＡＳＨメモリ）（図２（Ｂ）の１０３）に、予めフラッシュライタ等を使用して実行させたいユーザ・プログラム（動作プログラム）を書き込んでおく（ステップＳ１）。デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）に、フラッシュライタの機能が搭載されている場合には、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）のこの機能を利用して、マイクロプロセッサＡ、Ｂ（１００、１００’）のＦＬＡＳＨメモリ（図２（Ｂ）の１０３）にユーザ・プログラム（動作プログラム）を書き込んでも良い。
【００３９】
ユーザがホストＰＣ１２０上でデバッガを操作し、デバック動作を指定する（ステップＳ２）。なお、本実施例において、ステップＳ２におけるデバッガにおけるデバッグ動作の指定は、ユーザによる操作に制限されるものでなく、ホストＰＣ１２０上で動作するデバッガ・ソフトウェア（又は不良解析プログラム等）により自動で（自律的に）行うようにしてもよい。
【００４０】
ホストＰＣ１２０上で動作するデバッガ・ソフトウェアからデバッグ指示（デバック・コマンド（命令））が、各デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）に対して送信される（ステップＳ３）。例えば、ブレークポイントやプログラム実行開始アドレス、終了アドレス、取得したいレジスタの種類やＲＡＭのアドレス等の指定される。
【００４１】
各デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）は、それぞれに接続されたマイクロプロセッサＡ、Ｂ（１００、１００’）との間で通信を行い、ホストＰＣ１２０上で動作するデバッガ・ソフトウェアから受けたデバッグ命令をマイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２に対して、共通に指示する（ステップＳ４）。
【００４２】
マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２は、それぞれ、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）からの指示（デバッグ命令）を受けて、マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１に対してプログラムの実行を開始させる（ステップＳ５）。このとき、２つのマイクロプロセッサＡ、Ｂ（１００、１００’）が実行する動作は同一のものである。
【００４３】
マイクロプロセッサＡ、Ｂ（１００、１００’）では、設定されたブレークポイントまでプログラムが実行された後、マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２の持つブレークポイント機能により、プログラム動作を中断（停止）する（ステップＳ６）。
【００４４】
このとき、マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２が具備するデバッグ・モニタ機能により、ホストＰＣ１２０のデバッガ・ソフトウェアから受けた指示に従い、マイクロプロセッサＡ、Ｂ（１００、１００’）内のＲＡＭ１０５やレジスタ等の値（ダンプ情報）を、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）に対して送信する（ステップＳ７）。
【００４５】
デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）は、それぞれ、マイクロプロセッサＡ、Ｂ（１００、１００’）から受けた、マイクロプロセッサＡ、Ｂ（１００、１００’）内のＲＡＭ１０５、レジスタ値をホストＰＣ１２０に転送する（ステップＳ８）。
【００４６】
ホストＰＣ１２０は、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）より転送されたマイクロプロセッサＡ、Ｂ（１００、１００’）それぞれのＲＡＭ、レジスタ等の情報を記憶装置（ＲＡＭ１２３内のバッファメモリ等）に格納する（ステップＳ９）。
【００４７】
ホストＰＣ１２０は、記憶装置に格納されたマイクロプロセッサＡ、Ｂ（１００、１００’）のＲＡＭ１０５、レジスタ等の情報（ダンプ結果）について、対応するもの同士を比較する（ステップＳ１０）。ダンプ結果の比較動作は、ホストＰＣ１２０のＣＰＵ１２１上で動作する不良解析プログラムにより実行される。
【００４８】
ホストＰＣ１２０は、ステップＳ１０での比較結果が一致の場合には、ブレークポイント以降のプログラム実行を継続するようブレーク状態を解除する。そして、プログラムを再開するための指示が、ホストＰＣ１２０からデバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）を介してマイクロプロセッサＡ、Ｂ（１００、１００’）に伝えられる（ステップＳ１２、Ｓ１３）。
【００４９】
ホストＰＣ１２０は、ステップＳ１０での比較結果が不一致の場合には（ステップＳ１０の「不一致」分岐）、その時のＲＡＭやレジスタ情報や、実行命令、プログラムカウンタ等の情報を、ホストＰＣ１２０上の例えばハードディスク１２２に保存する（ステップＳ１１）。
【００５０】
ホストＰＣ１２０において、デバッグを継続するか否かの決定が行われる（ステップＳ１４）。ステップＳ１４におけるデバッグ継続の決定は、ホストＰＣ１２０上でのユーザ操作により行うようにしてもよいし、あるいは、ホストＰＣ１２０上で動作するソフトウェア（不良解析プログラム等）の制御により自動で行うようにしてもよい。デバッグを継続する場合（ステップＳ１５の「Ｙ」分岐）、比較結果の不一致の発生の状況に応じて、次に実行するデバッグ動作を再設定等して適宜変更する（ステップＳ１６）。これは、予めどのような動作をさせたいか条件を設定しておき、ホストＰＣ上でソフトウェア（（不良解析プログラム等）の動作により制御される。ホストＰＣ１２０において、デバッグの終了が決定された場合（ステップＳ１５の「Ｎ」分岐）、デバッグが終了する。
【００５１】
図４は、本実施例におけるマイクロプロセッサのデバッグ手順の一例を説明する図である。例えばマイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２により、事前にプログラムにいくつかのブレークポイント（図４ではＢＲＥＡＫＰＯＩＮＴ１〜４の４個）を設定しておき、マイクロプロセッサＡ、Ｂ（１００、１００’）の各ＣＰＵ１０１にプログラム実行開始アドレスからプログラムを実行させる。マイクロプロセッサＡ、Ｂ（１００、１００’）上のＣＰＵ１０１のプログラムカウンタ（不図示）がブレークポイントが設定されたアドレスと一致すると、該ブレークポイントのアドレスでプログラムの実行を停止し、その時点における、マイクロプロセッサＡ、Ｂ（１００、１００’）のＲＡＭ１０５やレジスタ等の値のダンプ結果情報が、デバッグＩ／Ｆ装置Ａ、Ｂ（１１０、１１０’）を介してホストＰＣ１２０に転送される。
【００５２】
ホストＰＣ１２０が、ブレークポイント３において、マイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報（ダンプ結果）の不一致を検出した場合、次の動作として、例えばブレークポイント２〜ブレークポイント３の間をステップ実行（プログラム内の命令を１つずつ実行）するように、デバッグ命令を変更し、マイクロプロセッサＡ、Ｂ（１００、１００’）のオンチップデバッグ回路１０２に設定する。
【００５３】
また、このとき不一致となったデータ（ダンプ結果）が、例えばマイクロプロセッサＡ、Ｂ（１００、１００’）のＲＡＭ１０５の特定のアドレスの場合、不良箇所を効率良く絞り込むために、次回以降に読み出す（比較の対象となる）データを、ＲＡＭ１０５の該特定のアドレスのみに限定するようにしてもよい。
【００５４】
ブレークポイント２からのステップ（ＳＴＥＰ）実行中、各停止ポイントにおけるマイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報の比較結果が一致した場合は、同様に、プログラム実行が再開され、次の命令実行後停止→ＲＡＭ１０５のデータ読み出し→比較を繰り返す。
【００５５】
ブレークポイント２からのステップ実行中、停止ポイントにおけるマイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報の比較結果が不一致の場合、図３のステップＳ１１におけるレジスタ値の保存等が実行され、デバッグ動作を完了する。ただし、設定次第で別の動作をさせることも可能である。
【００５６】
マイクロプロセッサＡ、Ｂ（１００、１００’）のデバッグ動作において、プログラムが最後まで不一致検出することなく実行された場合、ステップＳ１に戻り、別のプログラムをロードする。この動作もデバッグ用プログラムに予め組み込んでおくことで自動的に制御される。
【００５７】
以上説明した通り、本実施例によれば、デバッグ機能を利用することにより、良品であることが判明しているマイクロプロセッサＡ（１００）と、不良解析対象のマイクロプロセッサＢ（１００’）に同一のデバッグ動作をさせ、内部情報をダンプし、比較した結果、不一致となったときのデバイスの状態を確認することによって、不良品の解析を容易化することが可能である。
【００５８】
＜実施例２＞
本発明の第２の実施例として、不具合個所の絞込みにあたり、ブレークポイントをバイナリサーチ的に設定することで、不具合個所の絞込むようにしてもよい。こうすることで、不具合検出までの時間短縮効果が期待できる。例えば図４において、マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１にプログラム実行開始アドレスからプログラムを実行させ、ブレークポイント３でマイクロプロセッサＡ、Ｂ（１００、１００’）のダンプ結果に不一致が検出された場合、ブレークポイント２からステップ実行を行うのではなく、例えば、ブレークポイント２とブレークポイント３の間の中間アドレスにブレークポイントを新たに設定し、プログラム実行開始アドレスからプログラムをスタートさせる。新たなブレークポイントでのダンプ結果に不一致がなければ、新たなブレークポイントとブレークポイント３の間にさらに別のブレークポイントを挿入し（新たなブレークポイントは削除）、プログラム実行開始アドレスからプログラムをスタートさせる、別のブレークポイントでダンプ結果に不一致があれば、新たなブレークポイントと別のブレークポイント間に不具合があることになり、さらに２分探索法で絞り込むか、ステップ実行することで、不良箇所を検出する。
【００５９】
図５は、本発明の第２の実施例の動作を説明する流れ図である。図１、図２、図５を参照して本実施例の動作を説明する。
【００６０】
変数Ｎ＝０に初期化する（ステップＳ２０）。変数Ｎはバイナリサーチ（２分探索法）の実行回数を制御するためのループ変数である。
【００６１】
マイクロプロセッサＡ、Ｂ（１００、１００’）に対して、ブレークポイントＡを設定し（ステップＳ２１）、マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１にプログラムの先頭から実行させ、ブレークポイントＡで停止し（ステップＳ２２）、ホストＰＣ１２０において、マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報を比較する（ステップＳ２３）。
【００６２】
マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報一致した場合（ステップＳ２４の「Ｙ」分岐）、ブレークポイントＡをブレークポイントＢとし、次のブレークポイント（現在のアドレスより後ろのアドレス）をブレークポイントＡとして、ステップＳ２２から実行する。
【００６３】
マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報が不一致の場合（ステップＳ２４の「Ｎ」分岐）、ブレークポイントＡとＢの中間にブレークポイントＣを設定する（ステップＳ２６）。
【００６４】
Ｎ＝３でない場合（ステップＳ２７の「Ｎ」分岐）、Ｎをインクリメントし（ステップＳ２８）、プログラム先頭からブレークポイントＣまで実行する（ステップＳ２８）。
【００６５】
ブレークポイントＣで停止し、ホストＰＣ１２０で、マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報（ダンプ結果情報）を比較する（ステップＳ３０）。
【００６６】
ステップＳ３０での比較の結果が一致した場合（ステップＳ３１の「Ｙ」分岐）、ブレークポイントＣを新たなブレークポイントＢとし、ブレークポイントＡと新たなブレークポイントＢの中間を、新たなブレークポイントＣとして、ステップＳ２７に移行する（ステップＳ３２）。
【００６７】
ステップＳ３０での比較の結果が不一致の場合（ステップＳ３１の「Ｎ」分岐）、ブレークポイントＣを新たなブレークポイントＡとし、新たなブレークポイントＡとブレークポイントＢの中間を、新たなブレークポイントＣとしてステップＳ２７に移行行する（ステップＳ３３）。
【００６８】
ステップＳ２７において、Ｎ＝３のとき、プログラム先頭からブレークポイントＢまでプログラムを実行する（ステップＳ３４）。
【００６９】
すなわち、Ｎ＝１のとき、プログラムの先頭から、ステップＳ２６で設定されたブレークポイントＣまで実行され、マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＣでの内部情報（ダンプ結果情報）の一致／不一致に応じてブレークポイントＣと探索範囲の始めと終わりのブレークポイントＢ又はＡが更新され、再度、プログラムの先頭から新たなブレークポイントＣまで実行され（Ｎ＝２）、マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＣでの内部情報（ダンプ結果情報）の一致／不一致に応じて別の値にブレークポイントＣが更新され（探索範囲の始めと終わりのブレークポイントＢ又はＡが更新される）、さらに、プログラムの先頭から別のブレークポイントＣまで実行され（Ｎ＝３）、マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＣでの内部情報（ダンプ結果情報）の一致／不一致に応じてブレークポイントＣの値が更新され（探索範囲の始めと終わりのブレークポイントＢ又はＡが更新される）、ステップＳ２７において、Ｎ＝３であるため、ステップ３４に移行する。Ｎ＝３における不具合箇所の探索範囲は、Ｎ＝１の場合の１／４の範囲に絞りこまれる（Ｎ＝０の場合の１／８の範囲に絞りこまれる）。なお、バイナリサーチ回数Ｎは３に限定されるものでないことは勿論である。
【００７０】
ステップＳ３４では、マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１に、プログラムの先頭から実行させブレークポイントＢまで実行させ、続いてブレークポイントＢからＡまでステップ実行し（ステップＳ３５）、ホストＰＣ１２０で、各ステップにおけるマイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報を比較する（ステップＳ３６）。
【００７１】
比較の結果、一致する場合（ステップＳ３７の「Ｙ」分岐）、ステップ実行を継続するか判定し、継続する場合（ステップＳ３８の「Ｙ」分岐）、ステップＳ３５に戻りステップ実行を行う。ステップＳ３７の比較の結果、不一致の場合（ステップＳ３７の「Ｎ」分岐）については、図６を参照して後に説明される。
【００７２】
本実施例によれば、このようにしてバイナリサーチ（２分探索法）で不具合箇所の探索範囲を狭めていく。図４に示した前記実施例では、比較的大きな間隔でブレークポイントを設定し、不一致発生前後のブレークポイント間をステップ実行により１命令ずつ実行することにより、不具合個所を絞り込んでいたが、ブレークポイント再設定により、ある程度細かく不具合個所を絞り込んだ後に、ステップ実行に切り替えることで、プログラム実行回数を削減することができる。
【００７３】
＜実施例３＞
本発明の第３の実施例として、ホストＰＣ１２０で、マイクロプロセッサＡ、Ｂ（１００、１００’）のダンプ結果が一致せず、マイクロプロセッサＢ（１００’）の不具合検出時に、マイクロプロセッサＢ（１００’）に良品マイクロプロセッサＡ（１００）の正しいメモリ／レジスタ値をリストアし、その後の動作を継続して実行するようにしてもよい。このとき、例えばプログラムをステップ実行させ、１命令実行毎に、マイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報の読み出し、ホストＰＣ１２０において比較を行う。マイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報の読み出し結果が一致すればステップ実行を継続し、不一致を検出すれば内部情報を保存する。不一致検出後は、再度、良品マイクロプロセッサＡ（１００）の内部情報をマイクロプロセッサＢ（１００’）に書き込み、ステップ実行を継続する。ステップ実行は、予め設定したアドレスまで実行しても良いし、不一致検出した時点でやめても良い。またステップ実行でなくブレークポイントを設定し、前記第１の実行例のようにして、不一致箇所を絞り込んでも良い。
【００７４】
不一致となる場所が、２箇所以上見つかった場合、次に保存しておいたそれぞれの不一致情報同士を比較する。ここで比較する対象となるのは、例えば実行命令やレジスタ名、ＲＡＭのアドレスやそのデータなどである。ここでは、比較の結果一致した項目に関する情報の保存を行う。
【００７５】
マイクロプロセッサにおいて、プログラム実行中に、一度、動作異常が発生すると、この動作異常が、その後の動作にも影響を与える可能性が高い。一方、不良解析では、どの命令をどういう状態で実行した際に異常動作が発生したのか、各命令それぞれに対して確認できることが好ましい。
【００７６】
マイクロプロセッサＢ（１００’）において、異常動作が発生した命令の次の命令を実行する時に、メモリ、レジスタ等における異常状態を、正常状態に戻す（再設定する）ことによって、マイクロプロセッサＢ（１００’）では、その後のプログラムを正常に実行させることができるようになる。このため、マイクロプロセッサＡ、Ｂ（１００、１００’）でその後のプログラムを実行した結果、マイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報（ダンプ結果）の比較の結果、不一致が検出された場合に、新たな不具合発生条件と考えることができる。
【００７７】
次に、こうして検出された不一致個所が複数存在する場合に、それぞれの内部情報同士を比較したときに不一致結果に一致する項目が見つかれば、その項目に関連した動作が不良動作に、より深く関わっていると推測することができる。例えばマイクロプロセッサＢ（１００’）において、常に同じレジスタで異常が発生する場合、該レジスタ自身が異常を持っているか、もしくはそのレジスタをアクセスする命令や経路等に異常があると推測することができる。
【００７８】
このように、本実施例では、不一致発生時に良品マイクロプロセッサの正常な内部情報を不良マイクロプロセッサに書き込み、プログラム実行を継続、動作結果比較を行う。複数の動作異常ポイントが見つかった場合に、それぞれの不一致情報同士を比較し共通点を検出する。
【００７９】
図６は、本実施例の動作を説明する流れ図である。図１、図２、図６を参照して、本実施例の動作を説明する。
【００８０】
図５のステップＳ３７で、マイクロプロセッサＡ、Ｂ（１００、１００’）のステップ実行における内部情報（ダンプ結果）の比較の結果不一致の場合、不一致を検出したアドレスをブレークポイントに設定する（図６のステップＳ４０）。
【００８１】
マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１は、プログラム先頭からブレークポイントまで実行し、ブレークポイントで停止する（ステップＳ４１）。
【００８２】
ホストＰＣ１２０で、ブレークポイントにおけるマイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報を比較する（ステップＳ４２）。
【００８３】
良品のマイクロプロセッサＡ（１００）の内部情報を不良品のマイクロプロセッサＢ（１００’）に書き込む（ステップＳ４３）。
【００８４】
不一致検出アドレス以降を、マイクロプロセッサＡ、Ｂ（１００、１００’）のＣＰＵ１０１にステップ実行させる（ステップＳ４４）。
【００８５】
ホストＰＣ１２０において、ステップ実行時の各ステップ毎に、マイクロプロセッサＡ、Ｂ（１００、１００’）の内部情報を比較する（ステップＳ４５）。
【００８６】
マイクロプロセッサＡ、Ｂ（１００、１００’）のブレークポイントＡでの内部情報が不一致の場合（ステップＳ４６の「Ｎ」分岐）、不一致の内部情報をホストＰＣ１２０のハードディスク１２２等に保存する（ステップＳ４８）。そして、ステップ実行をさらに実行する場合（ステップＳ４９の「Ｎ」分岐）、ステップＳ４３に移行する。ステップ実行終了の場合（ステップＳ４９の「Ｙ」分岐）、ステップＳ５０に移行する。
【００８７】
ステップＳ４６において、一致の場合（ステップＳ４６の「Ｙ」分岐）、ステップＳ４７でステップ実行終了か否かを判定し、終了でない場合（ステップＳ４７の「Ｎ」分岐）、ステップＳ４４から実行する。
【００８８】
ステップＳ４７でステップ実行終了の場合（ステップＳ４７の「Ｙ」分岐）、ステップＳ５０に移行する。
【００８９】
ホストＰＣ１２０は、ステップＳ５０において、不一致箇所が複数あるか否か判断し、不一致箇所が複数の場合（ステップＳ５０の「Ｙ」分岐）、不一致箇所の２つを選択し（ステップＳ５１）、不一致の内部情報を比較し、共通点を抽出する（ステップＳ５２）。
【００９０】
選択された２つの不一致の内部情報の一致する項目がある場合（ステップＳ５３の「Ｙ」分岐）、ホストＰＣ１２０は、一致情報をハードディスク１２２等に保存する（ステップＳ５４）。
【００９１】
複数の不一致箇所の全ての組み合わせでの比較が終了するまで（ステップＳ５５の「Ｎ」分岐）、ステップＳ５１からの処理を繰り返す。例えば、不一致箇所が３箇所（Ａ、Ｂ、Ｃ）の場合、ＡＢ、ＢＣ、ＣＡの３通りの組み合わせに対して、不一致結果の共通点を見つける。比較の対象とされる内部情報は、実行命令、レジスタ名、ＲＡＭのアドレスとデータ等である。
【００９２】
図７は、図６を参照して説明した本実施例の動作を説明するための図である。良品、不良のマイクロプロセッサでプログラムの実行を開始し、不一致が発生した場合、不良のマイクロプロセッサにおいて、ＲＡＭ、レジスタの値が異常なまま、動作を継続した場合、その後の動作も異常となる場合がある。前の命令で動作異常となった影響を受けないようにしたい（図７（Ａ）参照）。
【００９３】
そこで、本実施例では、不一致が発生したＲＡＭ、レジスタに良品のマイクロプロセッサから読み出した値（正常値）を書き込む（図７（Ｂ）参照）。
【００９４】
そして、２つ以上の不一致発生箇所において、不一致となったレジスタ、ＲＡＭのアドレス等における共通点がないか検出する。ステップ実行で比較結果が一致する場合、正常であり、不良のマイクロプロセッサにおいて、以降の命令における動作が正常であるか異常であるかを確認できる。
【００９５】
そして、本実施例において、内部情報に不一致が発生した場合、不良のマイクロプロセッサにおいて、発生した不一致は前の動作の影響を受けていない。このため、マイクロプロセッサの不良解析を正確に行うことができる。
【００９６】
図８は、前記した第１乃至第３の実施例で用いられるマイクロプロセッサの内部情報の一例を示す図である。図８の内部情報は、ブレークポイントによる停止、あるいはステップ実行時の各ステップで、マイクロプロセッサＡ、Ｂ（１００、１００’）のＲＡＭやレジスタ等のダンプ情報を受け取ったホストＰＣ１２０の記憶装置（バッファ）上でのデータ構造に対応する。図８を参照すると、マイクロプロセッサＡの内部情報は、実行命令、実行命令アドレス、ダンプを実行したときのプログラムカウンタ、メモリの開始アドレス、メモリのアドレス範囲、データ（メモリの範囲で指定したデータ数）、レジスタ名、データ、ダンプ終了コードからなる。マイクロプロセッサＢについても同様な情報が格納される。
【００９７】
以上説明したように、上記各実施例によれば、マイクロプロセッサの持つオンチップデバッグ機能を利用することにより、不具合動作が検出された時点におけるマイクロプロセッサの内部情報（レジスタ、メモリ等）を確認することができる。
【００９８】
そして、２台のデバッグＩ／Ｆ装置を１台のホストＰＣに接続し、異常発生時のみ、ダンプ結果を保存するようにすることによって、良、不良品を単独で動作させ、結果を後から比較する場合に必要とされる結果格納のための大容量メモリが不要となる。このため、本実施例によれば、再現性の低い不具合現象を再現させるために、長時間連続動作させた場合でも、メモリが溢れることが回避可能とされ、効果的な不良解析を行うことができる。また、途中でマイクロプロセッサの入れ替え等の作業も不要とされる。
【００９９】
また、上記各実施例によれば、内部情報の不一致を検出した場合には、次に行うデバッグ動作を予め指定しておくことで、自動的にデバッグ動作を切り換え、効率のよい解析を行うことを可能としている。例えば、初めはブレークポイントを設定しておき、大まかな動作異常アドレスをつかんでおき、不一致検出した時点で、自動的に、ステップ動作に切り換えることで、詳細の動作異常発生アドレスを絞り込むといったことが可能となる。
【０１００】
上記各実施例によれば、このような比較や、不一致検出後の処理の大半を、ホストＰＣ上で実行されるソフトウェア処理（不良解析ソフトウェア）で実現することにより、利用者の都合に合わせた、柔軟で、低コストなデバッグ、解析ツールを提供することができる。
【０１０１】
なお、上記の特許文献１、２の各開示を、本書に引用をもって繰り込むものとする。本発明の全開示（請求の範囲を含む）の枠内において、さらにその基本的技術思想に基づいて、実施形態ないし実施例の変更・調整が可能である。また、本発明の請求の範囲の枠内において種々の開示要素の多様な組み合わせないし選択が可能である。すなわち、本発明は、請求の範囲を含む全開示、技術的思想にしたがって当業者であればなし得るであろう各種変形、修正を含むことは勿論である。
【符号の説明】
【０１０２】
１  エミュレーション装置
２  アドレスカウンタ
３  被試験ＭＰＵ
４  コントローラ
５  トレースメモリ部
６  バストランシーバ部
７  コンパレータ部
１１  良品ＬＳＩ
１２  被測定ＬＳＩ
４１  書込許可部
４２  ブレーク要求部
４３  タグテーブル
１００、１００’  マイクロプロセッサ
１０１  ＣＰＵ
１０２  オンチップデバッグ回路
１０３  ＦＬＡＳＨメモリ
１０４  周辺回路（ＰＥＲＩＰＨＥＲＡＬ）
１０５  ＲＡＭ（ランダムアクセスメモリ）
１０６  データ／アドレスバス
１１０、１１０’  デバッグＩ／Ｆ装置
１２０  ホスト
１２１  ＣＰＵ
１２２  ハードディスク
１２３  ＲＡＭ
１２４  通信手段
【図１】
2010176392.tif 000003
【図２】
2010176392.tif 000004
【図３】
2010176392.tif 000005
【図４】
2010176392.tif 000006
【図５】
2010176392.tif 000007
【図６】
2010176392.tif 000008
【図７】
2010176392.tif 000009
【図８】
2010176392.tif 000010
【図９】
2010176392.tif 000011
【図１０】
2010176392.tif 000012