(57)【要約】プロセッサ（１２）の少なくとも１つの論理ブロックを試験するための方法は、プロセッサによるユーザ・アプリケーションの実行の間において、停止および試験指示子（２４）を生成し、停止および試験指示子の生成に応じてユーザ・アプリケーションの実行を停止すること、および、必要に応じてプロセッサの少なくとも１つの論理ブロックの状態を保存することを含む。方法は、プロセッサの少なくとも１つの論理ロジックの試験に試験刺激を適用することをさらに含む。試験刺激は、ユーザ・アプリケーションの実行の間など、通常の動作の間、プロセッサのスキャン試験を実行するために、スキャン・チェーン内にシフトされる。
2009527821.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサの少なくとも１つの論理ブロックを試験する方法であって、
前記プロセッサによるユーザ・アプリケーションの実行時に、前記プロセッサが、停止および試験指示子を生成し、該停止および試験指示子の生成に応じて前記ユーザ・アプリケーションの実行を停止するとともに、必要に応じて前記プロセッサの少なくとも１つの論理ブロックの状態を保存すること、
前記プロセッサの少なくとも１つの論理ブロックの試験に試験刺激を適用すること、
を備える方法。
【請求項２】
前記プロセッサにより停止および試験命令を復号して前記停止および試験指示子を生成することをさらに備える請求項１に記載の方法。
【請求項３】
前記試験刺激を適用するのに先立って、前記停止および試験命令を復号してスキャン・チェーン構成を決定することをさらに備える請求項２に記載の方法。
【請求項４】
前記試験刺激を適用することは、複数のクロック・サイクルで、少なくとも１つのスキャン・チェーン内に前記試験刺激をシフトインすることを含む、請求項１に記載の方法。
【請求項５】
前記少なくとも１つのスキャン・チェーンが、前記プロセッサの少なくとも１つの論理ブロックに対応する、請求項４に記載の方法。
【請求項６】
前記試験刺激をシフトインする前に、前記プロセッサの少なくとも１つの論理ブロックをリセットすることをさらに備える請求項４に記載の方法。
【請求項７】
前記少なくとも１つのスキャン・チェーンから、第１のチェック・ポイントに対応する第１の試験結果のセットをシフトアウトすることであって、前記第１のチェック・ポイントは第１の複数のクロック・サイクルに対応する、第１の試験結果のセットをシフトアウトすること、
前記第１の試験結果のセットを符号分析器にて受信して、前記第１の試験結果のセットに対応する第１の符号を生成すること、
前記第１の符号を第１の符号期待値と比較すること、
をさらに備える請求項４に記載の方法。
【請求項８】
前記少なくとも１つのスキャン・チェーンから、第２のチェック・ポイントに対応する第２の試験結果のセットをシフトアウトすることであって、前記第２のチェック・ポイントは第２の複数のクロック・サイクルに対応する、第２の試験結果のセットをシフトアウトすること、
前記第２の試験結果のセットを符号分析器にて受信して、前記第２の試験結果のセットに対応する第２の符号を生成すること、
前記第２の符号を第２の符号期待値と比較すること、
をさらに備える請求項７に記載の方法。
【請求項９】
前記少なくとも１つのスキャン・チェーンが、少なくとも１つの第１のメモリ要素と、メモリ要素のチェーンと、第２のメモリ要素とを含み、前記第１のメモリ要素のアウトプットが前記メモリ要素のチェーンのインプットと前記少なくとも１つの論理ゲートのインプットとに接続され、前記少なくとも１つの論理ゲートのアウトプットが前記第２のメモリ要素のインプットに接続される、請求項４に記載の方法。
【請求項１０】
前記少なくとも１つの論理ゲートが、排他的ＯＲゲートおよび排他的ＮＯＲゲートのうちの少なくとも１つである、請求項９に記載の方法。
【請求項１１】
前記試験刺激を使用して、前記プロセッサの少なくとも１つの論理ブロックを動作させることをさらに備える請求項１に記載の方法。
【請求項１２】
割込みの受信に応答して、前記プロセッサ上で前記ユーザ・アプリケーションを実行することをさらに備える請求項１に記載の方法。
【請求項１３】
前記ユーザ・アプリケーションを実行することが、復元ベクトルで始まる前記ユーザ・アプリケーションを実行することを含む、請求項１２に記載の方法。
【請求項１４】
前記ユーザ・アプリケーションを実行することが、前記プロセッサの少なくとも１つの論理ブロックの状態が保存されていた場合に前記プロセッサの少なくとも１つの論理ブロックの状態を復元することをさらに含む、請求項１３に記載の方法。
【請求項１５】
前記複数のクロック・サイクルが、所定の最大値および所定の最小値のうちの少なくとも１つを有する、請求項１に記載の方法。
【請求項１６】
前記少なくとも１つのスキャン・チェーンから試験結果をシフトアウトすること、
前記試験結果を符号分析器内にて受信して、前記試験結果に対応する少なくとも１つの符号を生成すること、
をさらに備える請求項１に記載の方法。
【請求項１７】
前記少なくとも１つの符号を対応する符号期待値と比較することをさらに備える請求項１６に記載の方法。
【請求項１８】
プロセッサの少なくとも１つの論理ブロックを試験する装置であって、
前記プロセッサによるユーザ・アプリケーションの実行時に、停止および試験指示子を生成し、該停止および試験指示子の生成に応じて前記ユーザ・アプリケーションの実行を停止するとともに、必要に応じて前記プロセッサの少なくとも１つの論理ブロックの状態を保存するように構成された試験コントローラと、
少なくとも１つのスキャン・チェーンであって、前記試験コントローラが、前記プロセッサの少なくとも１つの論理ブロックを試験する試験刺激を複数のクロック・サイクルで前記少なくとも１つのスキャン・チェーン内に入力して、前記少なくとも１つのスキャン・チェーンから試験結果を出力させるように構成されている、少なくとも１つのスキャン・チェーンと、
前記試験刺激を生成するように構成されたパターン・ジェネレータと、
前記出力された試験結果に対応する少なくとも１つの符号を生成して、該少なくとも１つの符号を対応する符号期待値と比較するように構成された符号分析器と、
を備える装置。
【請求項１９】
試験の成功または不合格を表示する少なくとも１つの値を記憶するように構成された試験結果レジスタをさらに備える請求項１８に記載の装置。
【請求項２０】
前記試験結果レジスタが、前記複数のクロック・サイクルを定量化する値を記憶するように構成されている、請求項１９に記載の装置。
【請求項２１】
前記試験結果レジスタが、最後に完了したチェック・ポイントに関するクロック・サイクルの数に対応する値を記憶するように構成されている、請求項１９に記載の装置。
【請求項２２】
試験の成功または不合格を表示する複数の値を記憶するように構成された試験結果レジスタをさらに備え、前記複数の値の各々がチェック・ポイントに対応する、請求項１８に記載の装置。
【請求項２３】
前記試験コントローラが、前記少なくとも１つの符号を前記対応する符号期待値に一致させないようにする強制誤り信号を生成するように構成されている、請求項１８に記載の装置。
【請求項２４】
前記強制誤り信号が、前記パターン・ジェネレータのアウトプット内に変動を引き起こす、請求項２３に記載の装置。
【請求項２５】
前記停止および試験指示子の生成に先立って、前記プロセッサの少なくとも１つの論理ブロックのレジスタが所定の値に設定される、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データ処理システムに関し、より詳細には、データ処理システムの試験に関する。
【背景技術】
【０００２】
データ処理システムの試験は、適切な動作を保証するために重要である。試験は、ユーザ・アプリケーション内でデータ処理システムを使用するのに先立って、製造後に工場で実行される。これは、エンド・ユーザが適切に機能する製品を受け取ることを保証する。しかし、エンド・ユーザによるデータ処理システムの動作の間、製品の通常の動作の間に発生する可能性がある不具合を検出できるように、データ処理システムを連続的に試験することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
データ処理システムが、製造されて、エンド・ユーザに引き渡された後、データ処理システムが依然として適切に機能していることを保証するために通常動作の間における試験が望まれる場合がある。例えばデータ処理システムが自動車内で使用される場合、利用者が自動車を購入した後に、自動車内でデータ処理システムの試験を行うことが望まれる。一部の試験コードが、動作の間、データ処理システムを周期的に試験するために実行され得る。しかし、このコードは、通常、不均等かつ不完全な試験範囲を提供する。この試験コードはまた、通常、データ処理システムをテストするためには遅く、非効率的である。さらに、これらの試験コードは、不合格等級づけを行うのに時間がかかるとともに複雑である。もう１つの代替はスキャン試験である。スキャン試験は、より高い試験範囲を容易に提供するために使用される。しかし、従来のスキャン試験が動作の間に実行される場合、プロセッサの現在の状態は、スキャン試験が実行されるたびに失われる。
【発明を実施するための最良の形態】
【０００４】
本発明を、図面を参照して説明する。図中、同じ参照符号は類似の構成要素を示す。本発明は、添付の図面によって限定されず、図は例示である。当業者であれば、図中の構成要素は簡素化かつ見易さのために例示されており、必ずしも原寸に比例して描かれていないことを理解し得る。例えば、図中の構成要素のいくつかの寸法は、本発明の実施形態の理解を高めるのに役立つようにその他の要素と相対的に誇張されている。
【０００５】
本明細書で説明されるように、本発明の実施形態は、通常動作の間、データ処理システムのソフトウェア指令による割り込み的な（ｉｎｔｒｕｓｉｖｅ）試験を可能にし、ここで、この割り込み試験は、データ処理システムの状態に影響を与えるまたはその状態を失う試験を指す。例えば１つの実施形態では、通常の動作の間に試験するために、ロジック組み込み自己試験（ＬＢＩＳＴ）と組み合わせてスキャン試験方法が使用される。１つの実施形態では、試験を開始するために停止および試験命令が使用される。
【０００６】
本明細書で使用されるように、用語「バス」は、データ、アドレス、制御、または状態など、１つまたは複数の様々なタイプの情報を転送するために使用される複数の信号または導体を指す。本明細書で説明される導体は、単一の導体、複数の導体、単向性の導体、または双方向性の導体である。しかし、異なる実施形態では、導体の実装方法が変更される。例えば、双方向性の導体ではなく個別の単向性導体を使用可能であり、逆も同様である。また、複数の導体は、複数の信号を連続的にまたは時間的に多重化された方法で転送する単一の導体と交換可能である。同様に、複数の信号を転送する単一の導体は、これらの信号のサブセットを運ぶ様々な異なる導体内に分離可能である。したがって、信号を転送するための多くの選択肢が存在する。
【０００７】
用語「アサートする」または「設定する」および「ネゲートする」または「デアサートする」は、それぞれ、信号、状態ビット、または類似の装置を論理的に真（ｔｒｕｅ）の状態または論理的に偽（ｆａｓｓｅ）の状態にすることを指す場合に使用される。論理的に真の状態が論理レベル１である場合、論理的に偽の状態は論理レベル０である。また、論理的に真の状態が論理レベル０である場合、論理的に偽の状態は論理レベル１である。したがって、本明細書で説明される各信号は正論理または負論理として設計され、負論理は、信号名の上のバーまたは名称に続くアスタリスク（＊）によって表示され得る。負論理信号の場合、信号はアクティブ・ローであり、論理的に真の状態は論理レベル０に対応する。正論理信号の場合、信号はアクティブ・ハイであり、論理的に真の状態は論理レベル１に対応する。本明細書で説明される信号のいずれも、負論理信号または正論理信号として設計することができる。したがって、正論理信号として説明される信号は負論理信号として実施することが可能であり、負論理信号として説明される信号は正論理信号として実施することが可能である。
【０００８】
図１は、本明細書の１つの実施形態によるデータ処理システム１０をブロック図形式で例示する。データ処理システム１０は、プロセッサ１２と、停止および試験回路１４と、割込みコントローラ２０と、その他のモジュール１６と、メモリ１８と、バス２６とを含む。プロセッサ１２と、割込みコントローラ２０と、停止および試験回路１４と、その他のモジュール１６と、メモリ１８とは、すべてバス２６に双方向的に接続される。その他のモジュール１６は、例えば、その他のメモリ、プロセッサ、コプロセッサ、入出力装置、タイマ、または任意のその他のタイプの周辺装置など、任意のタイプおよび任意の数のモジュールを含み得る。あるいは、その他のモジュールはデータ処理システム１０内に存在しなくてもよい。メモリ１８は、例えば、読出し専用メモリ（ＲＯＭ）、ランダム・アクセス・メモリ（ＲＡＭ）など、任意のタイプのメモリであり得る。１つの実施形態では、プロセッサ１２によって実行されるユーザ・アプリケーションはメモリ１８内に記憶される。また、例示された実施形態では、プロセッサ１２は、（後述するようにオプションである）その他のモジュール・モニタ５０を含む。
【０００９】
停止および試験回路１４は、割込みコントローラ２０とプロセッサ１２とに接続される。割込みコントローラ２０は、停止および試験回路１４に割込み指示子２２を提供する。停止および試験回路１４は、プロセッサ１２にリセット４８を供給して、プロセッサ１２から停止および試験指示子２４を受信する。また、データ処理システム１０は、停止および試験イネーブル４４を受信するマルチプレクサ３０，３２及びデマルチプレクサ（ｄｅｍｕｌｔｉｐｌｅｘｅｒ）２８を含む。プロセッサ１２は、停止および試験イネーブル４４に基づいて、停止および試験回路１４への停止および試験スキャン・アウト（１〜Ｎ）３４として、または外部スキャン・アウト（１〜Ｎ）３７として提供されるスキャン・アウト（１〜Ｎ）４０をデマルチプレクサ２８に出力する。マルチプレクサ３０は、停止および試験回路１４からの停止および試験スキャン・イン（１〜Ｎ）３５と、外部スキャン・イン（１〜Ｎ）３８とを受信し、これらのうちの１つを、停止および試験イネーブル４４に基づいて、スキャン・イン（１〜Ｎ）４１としてプロセッサ１２に供給する。マルチプレクサ３２は、停止および試験回路１４からの停止および試験スキャン・イネーブル３６と、外部スキャン・イネーブル３９とを受信し、これらのうちの１つを、停止および試験イネーブル４４に基づいて、スキャン・イネーブル３９としてプロセッサ１２に供給する。図１のＮは、ゼロより大きい任意の整数を示し、これは、プロセッサ１２内に存在するスキャン・チェーンの数に対応する。したがって、マルチプレクサ３０はＮ個のマルチプレクサを含み、デマルチプレクサ２８はＮ個のデマルチプレクサを含む。また、代替の実施形態では、デマルチプレクサ２８は存在しなくてもよい。例えば、スキャン試験が実行されていない場合、スキャン・インプットは単に無視されてよい。
【００１０】
外部スキャン・アウト（１〜Ｎ）３７、外部スキャン・イン（１〜Ｎ）３８、及び外部スキャン・イネーブル３９の各々は、データ処理システム１０の外部パッドまたはピンに経路指定される。あるいは、これらの外部信号のいずれも、より少ない数の外部パッド上またはピン上に多重化される。例えば、チェーン内のすべてのスキャンは、Ｎ個のパッドまたはＮ個のピンを介して入力されるのではなく、同じパッドまたはピンを介して入力される。また、代替実施形態では、マルチプレクサ３０，３２ならびにデマルチプレクサ２８の機能を実装するために、異なる回路が用いられる。さらにもう１つの実施形態では、すべてのスキャン・インプットとスキャン・アウトプットとが停止および試験回路１４からおよび試験回路１４へ提供されるように、（外部スキャン・アウト３７および外部スキャン・イン３８などの）外部スキャン・インプットおよび外部スキャン・アウトプットがまったく提供されなくてもよい。
【００１１】
動作の際、停止および試験イネーブル４４がアサートされない場合、マルチプレクサ３０，３２は、それぞれ、外部スキャン・イン（１〜Ｎ）３８と外部スキャン・イネーブル３９とを選択して、外部スキャン・イン（１〜Ｎ）３８をスキャン・イン（１〜Ｎ）４１としてプロセッサ１２に供給するとともに、外部スキャン・イネーブル３９をスキャン・イネーブル４２として供給する。同様に、停止および試験イネーブル４４がアサートされない場合、デマルチプレクサ３８は、プロセッサ１２から外部スキャン・アウト（１〜Ｎ）３７にスキャン・アウト（１〜Ｎ）４０を供給する。このように、外部テスタは、プロセッサ１２をスキャン試験するために、プロセッサ１２のスキャン・インプットとスキャン・アウトプットとに接続される。例えば、プロセッサ１２すなわちデータ処理システム１０の製造後、プロセッサ１２は、外部スキャン・アウト（１〜Ｎ）３７と、外部スキャン・イン（１〜Ｎ）３８と、外部スキャン・イネーブル３９とに結合された従来のテスタを使用して工場試験することが可能である。したがって、この工場試験を実行するために、従来のスキャン試験方法が使用される。一方、停止および試験回路１４は、エンド・ユーザによって使用されている間など、実際の動作の間、プロセッサ１２の試験を改善するために使用される。停止および試験回路１４の動作は、図２，図３を参照して、以下に説明する（データ処理システム１０のその他の部分の動作は、当技術分野で知られているように動作するため、本実施形態を理解することに関連する、データ処理システム１０およびプロセッサ１２のそれらの部分だけをより詳細に説明する）。
【００１２】
図２は、本発明の１つの実施形態による、プロセッサ１２の一部分（破線内）と、停止および試験回路１４の一部分（破線外）とを例示する。一般に、プロセッサ１２の回路は、組合せ論理または組合せ回路からインプットを受信して、組合せ論理または組合せ回路にアウトプットを提供する複数のフリップ・フロップすなわちラッチとして例示される。例えば、図２は、Ｄフリップ・フロップ１２８〜１３０，１４６〜１４７と、組合せ論理１４０，１４２とを含む、プロセッサ１２の回路の小部分を例示する。組合せ論理１４０，１４２の各々は、様々な異なる機能を実行するために、任意のタイプの組合せ論理を含み得る。例えば、組合せ論理１４０，１４２の各々は、（例えば、ＡＮＤゲート、ＯＲゲート、ＮＯＲゲート、ＸＯＲゲートなど）任意の数の論理ゲートを含み得る。
【００１３】
フリップ・フロップ１２８およびフリップ・フロップ１２９は、それらのアウトプットを組合せ論理１４０に供給し、組合せ論理１４０は、そのアウトプットをフリップ・フロップ１４６に供給するマルチプレクサ１４４にアウトプットを供給する。同様に、フリップ・フロップ１２９およびフリップ・フロップ１３０は、それらのアウトプットを組合せ論理１４２に供給し、組合せ論理１４２は、そのアウトプットをフリップ・フロップ１４７に供給するマルチプレクサ１４５にアウトプットを供給する。フリップ・フロップ１３０はまた、そのアウトプットＳｏｕｔ１  １０９を、符号（ｓｉｇｎａｔｕｒｅ）分析器１１２、およびその他の論理１５０（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）にも供給する。マルチプレクサ１４４は、Ｓｉｎ２  １１０をインプットとして受信する。フリップ・フロップ１２８〜１３０は、それぞれ、マルチプレクサ１３１〜１３３からのデータ・インプットを受信する。マルチプレクサ１３１は、ランダム・パターン・ジェネレータ１０２からインプットＳｉｎ１  １０８を受信し、その他の論理１３４（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）から他方のインプットを受信する。マルチプレクサ１３２は、フリップ・フロップ１２８のアウトプットをインプットとして受信し、その他の論理１３５（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）から他方のインプットを受信する。マルチプレクサ１３３は、フリップ・フロップ１２９のアウトプットをインプットとして受信し、その他の論理１３６（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）から他方のインプットを受信する。フリップ・フロップ１４６は、そのアウトプットを、マルチプレクサ１４５のインプットとして供給するとともに、その他の論理１４８（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）にも供給する。フリップ・フロップ１４７は、そのアウトプットＳＯＵＴ２  １１１を、符号分析器１１２、およびその他の論理１４９（例えば、図２で例示されないプロセッサ１２内のその他の組合せ論理）に供給する。
【００１４】
プロセッサ１２は、任意のタイプの構成を含み得る。例えば、フリップ・フロップのいずれかのアウトプットは、任意の数の組合せ論理部分に供給することが可能であり、同じフリップ・フロップにインプットを供給する組合せ論理部分に再供給することさえ可能である。同様に、各フリップ・フロップは、任意の組合せ論理部分からそのインプットを受信することができる。プロセッサ１２は、プロセッサ１２の機能を実装するために、必要に応じて、任意の数のフリップ・フロップと任意の量の組合せ論理とを含む。また、プロセッサ１２は、相互接続された任意の数の論理ブロックを含んでもよく、ここで、各論理ブロックは、少なくとも１つのスキャン・チェーンまたはスキャン・チェーンの一部を含み得る。したがって、プロセッサ１２のすべてまたはプロセッサ１２の１つもしくは複数の論理ブロックは、スキャン試験することが可能である。
【００１５】
図２の破線の外には、ランダム・パターン・ジェネレータ１０２と、停止および試験コントローラ１００と、符号分析器１１２と、符号比較器１１４と、符号期待値（ｅｘｐｅｃｔｅｄ  ｓｉｇｎａｔｕｒｅ）記憶装置１１６と、試験結果レジスタ１１８とを含む、停止および試験回路１４の一部が示される。ランダム・パターン・ジェネレータ１０２は、プロセッサ１２にＳｉｎ１  １０８およびＳｉｎ２  １１０を供給する。なお、Ｓｉｎ１  １０８およびＳｉｎ２  １１０は、停止および試験イネーブル４４がアサートされた場合、マルチプレクサ３０を経由して停止および試験回路１４から受信される、図１で例示されたプロセッサ１２へのスキャン・イン（１〜Ｎ）４１インプットのうちの２つである。Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１２は、符号分析器１１２に供給される。なお、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１は、停止および試験イネーブル４４がアサートされた場合、デマルチプレクサ２８を経由してプロセッサ１２から停止および試験回路１４に供給される、図１で例示されたプロセッサ１２からのスキャン・アウト（１〜Ｎ）４０アウトプットのうちの２つである。また、停止および試験コントローラ１００は、マルチプレクサ１３１〜１３３，１４４，１４５のすべてにスキャン・イネーブル（ＳＥ）１３８を供給する。なお、ＳＥ１３８は、停止および試験イネーブル４４がアサートされた場合、マルチプレクサ３２を経由して停止および試験回路１４から受信される、図１で例示されたプロセッサ１２へのスキャン・イネーブル４２である。
【００１６】
図２で、停止および試験回路１４とプロセッサ１２との間のアウトプットおよびインプットは、図２を複雑化しないように、マルチプレクサ２８，３０，３２を図示せずにそれらを直接接続して例示している。なお、外部スキャン接続がプロセッサ１２に要求されない場合、データ処理システム１０は、マルチプレクサ２８，３０，３２を含まなくてもよく、停止および試験回路１４とプロセッサ１２の間のインプットおよびアウトプットは、図２で例示されるように、直接的に接続されることになる。
【００１７】
図２を参照すると、停止および試験コントローラ１００は、リセット１０６を受信して、リセット４８をフリップ・フロップ１２８〜１３０，１４６，１４７のすべてに供給する。１つの実施形態では、リセット１０６は、バス２６を経由して受信された信号である。リセット１０６はまた、符号分析器１１２と、ランダム・パターン・ジェネレータ１０２と、試験結果レジスタ１１８とにも供給される。停止および試験コントローラ１００はまた、復元ベクトル１５２、最大クロック１５４、および最小クロック１５６も含む。これらは、停止および試験コントローラ１００内に配置された（または停止および試験回路１４内またはデータ処理システム１０内の他の場所に配置してもよい）レジスタまたはその他の記憶回路である。停止および試験コントローラ１００は、割込みコントローラ２０から割込み指示子２２を受信して、強制誤り信号１５８と開始１６０とをランダム・パターン・ジェネレータ１０２に供給し、符号識別子１２４を符号期待値記憶装置１１６に供給し、比較値１２６を符号比較器１１４に供給する。符号比較器１１４は、符号分析器１１２から符号（ｓｉｇｎａｔｕｒｅ）１２０を受信し、符号期待値記憶装置１１６から符号期待値（ｅｘｐｅｃｔｅｄ  ｓｉｇｎａｔｕｒｅ）１１５を受信し、これら２つを比較して、試験結果レジスタ１１８に比較結果１２２を提供する。試験結果レジスタ１１８は、バス２９に双方向的に結合される。結果レジスタ１１８および符号期待値記憶装置１１６は、各々、レジスタとして実装可能であり、もしくは、任意のその他の記憶回路として実装可能である。例えば、これらはデータ処理システム１０内のメモリ内に配置され得る。また、試験結果レジスタ１１８および符号期待値記憶装置１１６は、データ処理システム１０内の任意の箇所に配置してもよい。
【００１８】
当技術分野で公知のように生成されるクロック１０４は、ランダム・パターン・ジェネレータ１０２と、停止および試験コントローラ１００と、符号分析器１１２と、プロセッサ１２（例えば、フリップ・フロップ１２８〜１３０，１４６，１４７の各々）とに供給される。クロック１０４は、データ処理システム１０内のクロックだけを表す場合、またはデータ処理システム１０もしくはプロセッサ１２の１つのクロック領域を表す場合がある。この場合、プロセッサ１２のその他の部分は、例えば、異なるクロック領域内に配置され、したがって、（クロック１０４と異なる）異なるクロックを受信する。クロック領域の各クロックは、同じシステムのクロックから生成することが可能であり、または個別に生成することも可能である。これらのクロックは、構成にかかわらず、当技術分野で知られているように生成および提供される。
【００１９】
動作の際に、マルチプレクサ１３１〜１３３，１４４，１４５は、プロセッサ１２のスキャン試験を可能にする。これらのマルチプレクサは、（そのうちの２つは図２で例示され、１つはインプットＳｉｎ１  １０８とアウトプットＳｏｕｔ１  １０９とを有し、もう１つはインプットＳｉｎ２  １１０とアウトプットＳｏｕｔ２  １１１とを有する）様々なスキャン・チェーンを作り出すために使用される。例えば、１つのスキャン・チェーンは、フリップ・フロップ１２８〜１３０を含み、ＳＥ１３８がアサートされた場合、スキャン・チェーン・インプットＳｉｎ１  １０８はフリップ・フロップ１２８へのインプットとして供給され、フリップ・フロップ１２８のアウトプットはフリップ・フロップ１２９へのインプットとして供給され、フリップ・フロップ１２９のアウトプットはフリップ・フロップ１３０へのインプットとして供給され、フリップ・フロップ１３０のアウトプットはスキャン・チェーン・アウトプットＳｏｕｔ１  １０９を供給する。同様に、プロセッサ１２のもう１つのスキャン・チェーンは、フリップ・フロップ１４６，１４７を含み、ＳＥ１３８がアサートされた場合、スキャン・チェーン・インプットＳｉｎ２  １１０はフリップ・フロップ１４６へのインプットとして供給され、フリップ・フロップ１４６のアウトプットはフリップ・フロップ１４７のインプットとして供給され、フリップ・フロップ１４７のアウトプットはスキャン・チェーン・アウトプットＳｏｕｔ２  １１１を供給する。したがって、ＳＥ１３８がアサートされた場合、スキャン・インプットとスキャン・アウトプットとは、プロセッサ１２のすべてまたは一部を試験するために、それぞれ、シフトインおよびシフトアウトされる。
【００２０】
ＳＥ１３８がアサートされない場合、プロセッサ１２は正常に動作し、フリップ・フロップ１２８〜１３０，１４６，１４７に対するインプットはプロセッサ１２の組合せ論理によって供給されるとともに、そのアウトプットはプロセッサ１２の組合せ論理に供給される。すなわち、ＳＥ１３８がアサートされない場合、通常動作の間、フリップ・フロップのインプットとアウトプットとは連鎖されず、したがって、上記で説明した動作チェーンは形成されない。
【００２１】
例示された実施形態では、Ｄフリップ・フロップが通常の動作で構成され、試験ではそれがスキャン・チェーンとして構成されるように、Ｄフリップ・フロップの各々のインプットでマルチプレクサが使用される、ｍｕｘ−Ｄスキャン・チェーン構成が例示されている。しかし、その他のスキャン・チェーン構成およびその他のメモリ要素が使用できる。例えば、当技術分野で知られているような、レベル・センシティブ・スキャン設計（Ｌｅｖｅｌ−Ｓｅｎｓｉｔｉｖｅ  Ｓｃａｎ  Ｄｅｓｉｇｎ）（ＬＳＳＤ）構成が使用可能である。プロセッサ１２のスキャン・チェーン構成も異なっていてよい。例えば、プロセッサ１２は、単一のスキャン・チェーン、または任意の数のスキャン・チェーンを含んでもよい。また、上記で説明したように、単一のまたは任意の数のスキャン・チェーンが各クロック領域のために存在し得る。また、各スキャン・チェーンは、任意の不定の長さの（したがって、任意の不定の数のフリップ・フロップまたは任意の不定の数のその他のメモリ要素を含む）ものであり得る。加えて、いくつかの実施形態では、スキャン・チェーン部は、プロセッサ１２の一部内のスキャン・チェーンの数および／または長さを変更するためにスキャン・チェーン接続が変更可能であるように構成される。この構成は、プロセッサ１２のフリップ・フロップのアウトプットの代替相互接続に影響を及ぼすために、マルチプレクサ１３１，１３２，１３３，１４４，１４５へのインプットと、これらのマルチプレクサの制御とを変更することによって達成される。この制御は、停止および試験コントローラ１００によって、もしくはデータ処理システム１０内の他の場所から提供される。
【００２２】
プロセッサ１２のフリップ・フロップは、ＳＥ１３８がネゲートされる通常の動作の間、プロセッサの現在の状態を記憶する。各クロック・パルスにより、フリップ・フロップの値は、組合せ論理を介して１つのフリップ・フロップからもう１つのフリップ・フロップに伝搬する値に基づいて更新される。例えば、ＳＥ１３８がネゲートされる通常の動作の間、フリップ・フロップ１２８，１２９のアウトプットは、マルチプレクサ１４４へのインプットを作り出すために組合せ論理１４０を介して伝搬する。クロック１０４がフリップ・フロップ１４６をクロッキングすると、（マルチプレクサ１４４の選択信号、すなわちＳＥ１３８がネゲートされているため）組合せ論理１４０のこのアウトプットは、マルチプレクサ１４４を経由してフリップ・フロップ１４６内に記憶される。スキャン試験時にシフトが実行される（ＳＥ１３８がアサートされる）場合、フリップ・フロップは（上記で説明したように）スキャン・チェーンを形成し、スキャン・チェーンのインプットの数（すなわち、試験刺激（ｓｔｉｍｕｌｕｓ）つまり試験インプット）がシフトインされる。インプットの数がシフトインされると、試験の間に次のクロックが機能的なサイクルを作り出し、組合せ論理を介して伝搬するシフトイン後の試験インプットの結果として生じた試験結果がスキャン・チェーン内に捕捉されるようにＳＥ１３８がネゲートされる。ＳＥ１３８は、捕捉されたアウトプットが次いでシフトアウトされるように、再びアサートされる。このように、ＳＥ１３８がアサートされた状態でインプット（試験刺激）がプロセッサ１２に供給され、次いで機能的なサイクルを提供するために、ＳＥ１３８がネゲートされた状態でクロックが供給され、次いでＳＥ１３８が再びアサートされた状態でアウトプットがプロセッサ１２から読み取られる。
【００２３】
１つの実施形態では、ＳＥ１３８がアサートされた状態でインプットの数がシフトインされると、同じ数のアウトプットがシフトアウトされる。すなわち、試験インプットがシフトインされるたびに、試験アウトプットが同時にシフトアウトされる。また、任意の数の試験インプットおよび試験アウトプットは、機能的なサイクルを可能にするためにＳＥ１３８をネゲートする前に、それぞれ、シフトインおよびシフトアウトされる。この数は、１以上の任意の整数であり得る。例えば、１つの実施形態では、（１つのアウトプットがシフトアウトされると同時に）１つのインプットがシフトインされた後、機能的なサイクルが次のクロックにより発生するように、ＳＥ１３８はネゲートされる。代替実施形態では、機能的なサイクルを可能にするために、ＳＥ１３８をネゲートする前に（５個のアウトプットがシフトアウトされると同時に）５個のインプットがシフトインされる。したがって、スキャン試験の間、クロック１０４は、ＳＥ１３８がアサートされた状態でインプットをスキャン・チェーン内にシフトインし、且つアウトプットをスキャン・チェーンからシフトアウトする試験インプット／アウトプットのシフトサイクルを可能にするとともに、組合せ論理を介して伝搬するシフトイン後の試験刺激として生じた試験結果を捕捉するようにＳＥ１３８をネゲートする機能的サイクルを可能にする。
【００２４】
例えば、図２を参照すると、スキャン試験に関して、ＳＥ１３８がアサートされ、特定の数の試験インプットがスキャン・チェーン内にスキャンされる。すなわち、クロック１０４の特定の数のクロック・サイクルが試験インプットを各チェーン内に入力するために使用される。例えば、クロック１０４の第１の試験インプット／アウトプット・シフト・サイクルで、試験刺激は、それぞれ、Ｓｉｎ１  １０８およびＳｉｎ２  １１０を経由して、フリップ・フロップ１２８，１４６の各々の中にシフトされる。また、クロック１０４のこの第１の試験インプット／アウトプット・シフト・サイクルの間、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１を介してフロップ・フロップ１３０，１４７からの値がそれぞれシフトアウトされる。クロック１０４の次の試験インプット／アウトプット・シフト・サイクルの間、フリップ・フロップ１２８，１４６の中にあった値は、それぞれ、フリップ・フロップ１２９，１４７の中にシフトされ、フリップ・フロップ１２９内の値はフリップ・フロップ１３０内にシフトされる。そして、フリップ・フロップ１３０，１４７の値は、それぞれ、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１として出力される。所望に応じて、任意の数のこれらの試験インプット／アウトプット・シフト・サイクルが発生する。所望の数の試験インプット／アウトプット・シフト・サイクルの後、ＳＥ１３８をネゲートすることによって、機能的サイクルが実行される。この機能的サイクルでは、その他の論理１３４，１３５，１３６および組合せ論理１４０，１４２から伝搬する値が、クロック１０４を用いて、それぞれフリップ・フロップ１２８〜１３０，１４６，１４７の中に捕捉される。次の試験インプット／アウトプット・シフト・サイクルの間、（新しいインプットがシフトインされると）これらの捕捉された値がシフトアウトされる。
【００２５】
一般に、スキャン試験を開始するのに先立って、フリップ・フロップは、例えば、論理レベル０などの既知の値にリセットされる。また、スキャン試験を開始するのに先立って、フリップ・フロップは、スキャン・チェーンの数とスキャン・チェーンの長さとを定義するためのいくつかの代替案のうちの１つに構成される。構成制御は、図２の停止および試験コントローラ１００から、またはデータ処理システム１０内の他の場所から供給される。
【００２６】
シフトインされた試験インプットに基づいて、特定の結果が期待される。したがって、スキャン・チェーンからシフトアウトされたアウトプット値は、次いで、シフトインされた試験インプットに対応する符号期待値と比較される符号を作り出すために、符号分析器に供給される。これらが一致しない場合、不合格が表示される。１つの実施形態では、インプットの所定のベクトルがシフトインされ、その場合、所定のベクトルの各々は対応する符号期待値を有する。あるいは、所定のベクトルではなく、擬似ランダム・ベクトル（試験インプット）を作り出すために擬似乱数ジェネレータを使用するＬＢＩＳＴも使用可能である。これらのベクトルはまた、試験の合格または不合格を決定するために使用され得る、関連する符号期待値を有する。
【００２７】
スキャン試験は、システムの全体的な健全性を提供する良い方法である。試験されている装置（すなわち、図２の例ではプロセッサ１２である、試験中の装置、すなわちＤＵＴ）のすべて、大部分、または単に多くの部分を容易に試験するために使用される。しかし、スキャン試験は、ＤＵＴの状態を記憶する同じフリップ・フロップの使用を要求するため、ＤＵＴの現在の状態がスキャン試験時に失われるという点で非常に割り込み的（ｉｎｔｒｕｓｉｖｅ）である。また、ＬＢＩＳＴは、スキャン試験において擬似ランダム・パターンの使用を介してＤＵＴの全体的な健全性を試験する便利な方法である。ＬＢＩＳＴは、ＤＵＴに対する擬似乱数に基づくスキャン刺激を提供する。先に説明したスキャン刺激の利用を介して取得された不合格範囲は、例えば、試験範囲内での増大が一定数のクロックの後に急速に下降し始める非線形範囲グラフによって表される。取得される実際の範囲はＬＢＩＳＴ生成の間に使用されたツールによって決定され、合格／不合格状態は、符号期待値に対して実際の符号を比較することによって決定される。一般に、より高い不合格範囲を取得するための２つの方法が存在する。すなわち、設計に可制御性および／または可観測性ポイントを挿入することまたは系列をより長く繰り返すこと、である。したがって、ＬＢＩＳＴおよびスキャン試験は、通常、装置をエンド・ユーザに出荷するのに先立って（したがって、エンド・ユーザによる通常の操作に先立って）工場で行われ、試験が割り込み的であるかどうかは無関係である。
【００２８】
図２および３を参照して説明されるように、本発明の実施形態は、通常の動作の間、このタイプの割り込み的試験を可能にする。すなわちエンド・ユーザによる使用の際など、通常の動作の間、プロセッサ１２をスキャン試験することが可能となるようにソフトウェアが書き込まれている。例えば、１つの実施形態では、プロセッサ１２のスキャン試験を開始するために、停止および試験命令などのソフトウェア命令がユーザ・アプリケーション内で使用される。あるいは、ソフトウェア命令は、結果として、プロセッサ１２のスキャン試験を引き起こすいくつかの動作をもたらす。例えば、特定のレジスタまたはアドレス位置にビットを書き込む命令により、プロセッサ１２のスキャン試験が開始される。このように、プロセッサ１２上で実行するソフトウェアは、結果として、プロセッサ１２自体のスキャン試験を開始する、停止および試験指示子の生成をもたらす。したがって、プロセッサ１２のすべてのまたは大部分の全体的な信頼レベルは、現在、当技術分野で行われているように、複雑なソフトウェア試験機能を書き込む必要なしに、通常の動作の間、ソフトウェア制御を介して達成される。上記で説明されたように、これらのソフトウェア試験機能は、ソフトウェアを用いてプロセッサ１２の一部分だけを試験し、スキャン試験と異なり、限定された範囲だけを提供する。
【００２９】
図１で例示されるように、プロセッサ１２は、停止および試験手順がいつ実行されるべきかを決定するために、データ処理システム１０内で、その他のモジュール１６などその他のモジュールを監視するその他のモジュール・モニタ５０を含み得る。１つの実施形態では、その他のモジュール・モニタ５０は、データ処理システム１０内の１つまたは複数のその他のモジュールの特定の１つまたは複数の動作に応答して、プロセッサ１２に停止および試験指示子を供給する。この停止および試験指示子に応じてプロセッサ１２のすべてまたは一部のスキャン試験が開始され、またはプロセッサ１２の代わりにもしくはプロセッサ１２に加えて、プロセッサ１２の外の回路の部分が試験され得る。例えば、その他のモジュール・モニタ５０は、停止および試験手順の間、その他のモジュール１６（またはその他のモジュール１６の部分）のうちのどれがスキャン試験されることになるかに関して表示を提供することも可能である。
【００３０】
図２および図３の説明は、ＤＵＴであるプロセッサ１２に関して提供される。しかし、本明細書の説明は、（プロセッサ１２の１つまたは複数の論理ブロックなど）プロセッサ１２の任意の部分であるＤＵＴ、またはデータ処理システム１０の任意のその他の部分にも応用される。すなわち図２のスキャン・チェーンは、プロセッサ１２であるのではなく、データ処理システム１０内のいくつかのその他のモジュールでもあり得る。１つの実施形態では、停止および試験回路１４が、データ処理システム１０のその他のモジュールに加えて、プロセッサ１２を試験する際に共有および使用される。もしくは、個別の停止および試験回路が、プロセッサ１２、および通常の動作の間に本明細書で説明された方法でスキャン試験することが可能な任意のその他のモジュールに使用される。
【００３１】
図３は、本発明の１つの実施形態による、通常の動作の間のスキャン試験の方法を例示する。説明を簡単にするために、図１および図２を参照して説明するが、この方法は、データ処理システム１０およびプロセッサ１２だけでなく、任意のシステムと任意のＤＵＴとに応用することが可能である。フローは、プロセッサ１２を含めて、データ処理システム１０が製造されるブロック２００から始まる。フローは、データ処理システム１０の工場試験が実行されるブロック２０２に進む。この工場試験は、例えば、スキャン試験、ＬＢＩＳＴ、または任意のその他のタイプの試験を含んでよく、通常、システムを任意のエンド・ユーザに提供するのに先立って実行される。装置はまだエンド・ユーザ・アプリケーションで使用されていないため、この工場試験は割り込み的である（すなわち、装置の状態をスクランブルし得る）。さらに、この工場試験のためにより多くの時間が一般に利用される。この工場試験のタイミングはエンド・ユーザ・アプリケーションによって制御される必要がない。
【００３２】
フローは、次いで、データ処理システム１０がエンド・ユーザ・アプリケーション内に組み込まれるブロック２０４に進む。例えば、データ処理システム１０は、自動車、ハンドヘルド装置などの中に組み込まれる。１つの実施形態では、ブロック２０２で説明された工場試験は、プロセッサ１２上でだけ実行される。この場合、プロセッサ１２は、ブロック２０４で、次いで、データ処理システム１０などのデータ処理システム内に組み込まれ、次いで、エンド・ユーザ・アプリケーション内に組み込まれる。１つの実施形態では、データ処理システム１０自体がエンド・ユーザ・アプリケーションであり得る。
【００３３】
フローは、ポイントＡを経由してブロック２０４から、ユーザ・アプリケーションが実行されるブロック２０６に進む。例えば、プロセッサ１２が自動車などのエンド・ユーザ・アプリケーション内にあると、ユーザ・アプリケーションはプロセッサ１２上で実行される。この時点で、データ処理システム１０は、工場の外にあり、エンド・ユーザの管理下にある。フローは、次いで、ユーザ・アプリケーションが停止および試験手順を指示したかどうかを判定する判定ブロック２０８に進む。上記したように、これは様々な方法でユーザ・アプリケーションによって行われる。１つの実施形態では、ユーザ・アプリケーション内の停止および試験ソフトウェア命令が、停止および試験手順を指示するために復号されている。あるいは、特定のレジスタまたはメモリ位置に書き込みを行うユーザ・アプリケーション内のソフトウェア命令が、停止および試験手順を指定するプロセッサ１２内の回路によって検出されている。いずれの場合も、停止および試験手順がプロセッサ１２内で指示されると、停止および試験指示子２４がプロセッサ１２から停止および試験回路１４に供給される。停止および試験ソフトウェア命令を使用する前者の実施形態では、プロセッサ１２の命令復号器が停止および試験指示子２４を提供し、特定の位置に書き込みを行う後者の実施形態では、特定の位置をポーリングする、または書込みを検出する回路が停止および試験指示子２４を提供する（あるいは、停止および試験手順は、上記したように、その他のモジュール・モニタ５０によって指示される）。
【００３４】
図３を再び参照すると、ユーザ・アプリケーションが停止および試験手順を指示していない場合、フローは、ユーザ・アプリケーションが引き続き実行するポイントＡに戻る。停止および試験手順が指示された場合、フローは、ユーザ・アプリケーションの実行が停止され、プロセッサ１２の状態が保存されるブロック２１０に進む。必要に応じて、停止および試験手順の後に同じポイントから実行を継続することが可能となるように、プロセッサ１２内のフリップ・フロップのすべてまたは一部の中の値が保存される。あるいは、停止および試験手順が指示された場合には、ユーザ・アプリケーションはアイドル状態であり得るため、したがって、状態が保存されることを要求しない。さらにもう１つの代替実施形態では、フリップ・フロップのいくつかだけの保存が必要とされ、この場合、時間とリソースとが節約される。この代替実施形態では、プロセッサ１２のどの部分が保存されることになるかを指示するためにソフトウェアが使用される。また、状態の保存が要求される場合、どのフリップ・フロップがどこに保存されるかを指示するために追加のソフトウェア命令をユーザ・アプリケーション内に提供することが可能であり、またはすべてのフリップ・フロップが保存されることになることを指示する追加のソフトウェア命令が提供される。あるいは、停止および試験手順の指示時に、フリップ・フロップのすべてまたは一部の現在の状態のより高速の保存を実行するために、専門のハードウェア回路が使用される。
【００３５】
状態が任意に保存された後、フローは、停止および試験回路１４に停止および試験指示子２４が供給されるブロック２１２に進む。フローは、リセットが実行されるブロック２１４に進む。例えば、停止および試験回路１４は、プロセッサ１２のフリップ・フロップに、ならびに、例えば、ランダム・パターン・ジェネレータ１０２、符号分析器１１２、および試験結果レジスタ１１８など、データ処理システム１０内でリセットされる必要のある任意のその他の回路にリセット４８を供給する。これは、停止および試験手順が、既知の値から開始することを確実にする。１つの実施形態では、（リセット４８などの）リセットはすべてをリセットせず、例えば、レジスタを初期化するためにソフトウェアが使用される。
【００３６】
フローは、次いで、現在のチェック・ポイントとして、クロック・カウント・チェック・ポイントが選択されるブロック２１６に進む。すなわち、試験が、ユーザ・アプリケーションの実行の間など、通常の動作の間に実行されているため、停止および試験手順が指示された時間によっては、完全な試験を可能にしない可能性がある。したがって、初めて特定の数のクロックに達した場合のみ、試験結果を比較および分析する必要が生じ得る。例えば、以下は、クロックの数をＬＢＩＳＴによって提供されたＤＵＴの不合格範囲と関連づけたサンプルの表である（以下の表は、例示として提供されており、実値は設計に応じて変化する）。
【００３７】
【表１】
2009527821.tif 000003
例えば、５００個のクロックが提供される場合、３０％の範囲が達成される。したがって、１つの実施形態では、試験結果は、特定のクロック・チェック・ポイントに達したときだけ更新される。１つの実施形態では、クロック・チェック・ポイントは、所望される範囲レベルに従って、例えば、５％、１０％、３０％などでセットアップされ、試験結果は、（５％に対応する）２０個のクロックの後、（１０％に対応する）１００個のクロックの後、（３０％に対応する）５００個のクロックの後などに更新される。また、現在の実施形態では、上の表内のクロックの数は、（上記で説明された）機能的なクロック・サイクルを指し、試験インプット／アウトプット・シフト・サイクルのために提供されたクロックはカウントされない。しかし、代替実施形態では、クロックの数は提供されたすべてのクロックを表すようにセットアップされる。したがって、ブロック２１６では、例えば、２０個のクロックなど、第１のクロック・カウント・チェック・ポイントが選択される。
【００３８】
フローは、ＳＥ１３８がアサートされることにより、ｘ個のクロックに関して試験結果を符号分析器１１２にシフトアウトすると同時に試験刺激がシフトインされるブロック２１８に進む。上記で説明されたように、任意の数、すなわち、ｘの試験インプット／アウトプット・シフト・サイクルを実行可能であり、ここでｘは１以上の整数である。また、例示された実施形態では、ＬＢＩＳＴは停止および試験手順の間に実行されている。したがって、図２を参照すると、停止および試験指示子２４に応答して、停止および試験コントローラ１００は、（１つの実施形態では、擬似ランダム・パターン・ジェネレータである）ランダム・パターン・ジェネレータ１０２に開始１６０を提供して、ＳＥ１３８をアサートする。開始１６０に応答して、ランダム・パターン・ジェネレータ１０２は、Ｓｉｎ１  １０８およびＳｉｎ２  １１０を経由して、スキャン・チェーンへ擬似ランダム・インプットの供給を開始する（インプットは、Ｓｉｎ１  １０８およびＳｉｎ２  １１０を経由して供給されており、アウトプットは、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１を経由してシフトアウトされている）。
【００３９】
フローは、次いで、ブロック２１８でシフトインされた試験刺激に基づいて、スキャン・チェーン内で試験アウトプットが捕捉されるように（機能的なクロック・サイクルを提供するために）ＳＥ１３８がネゲートされることにより、システム・クロック（例えば、クロック１０４）が提供されるブロック２２０に進む。また、クロック・カウントがインクリメントされ、機能的なクロックのために提供されたクロックが追跡される。１つの実施形態では、このクロック・カウントは試験結果レジスタ１１８内で行われ、試験結果レジスタ１１８は、例えばクロック・カウント領域を含む。すなわち、１つの実施形態では、試験結果レジスタ１１８は、複数のクロック・サイクルを定量化する値を記憶する。あるいは、このクロック・カウントは、データ処理システム１０内の他の場所に記憶され、後述するように、試験結果レジスタ１１８のクロック・カウント領域は、クロック・カウント・チェック・ポイントに達した場合だけ、クロック・カウントを記憶する。
【００４０】
フローは、割込みが受信されたかどうかが判定される判定ブロック２２１に進む。例えば、１つの実施形態では、データ処理システム１０は、割込みがデータ処理システム１０にいつ受信されたかを判定する割込みコントローラ２０を含む。割込みが受信された場合、割込みコントローラ２０は、割込み指示子２２を停止および試験回路１４に供給する。現在の実施形態では、任意の割込みは、停止および試験手順を終了させて、通常の動作を再開させる。あるいは、特定の優先レベルの特定の１つまたは複数の割込みだけが、停止および試験手順を終了させて、通常の動作を再開させる。図３を再び参照すると、（割込み指示子２２によって停止および試験回路１４に指示された）割込みが受信された場合、フローは、ポイントＢを介して、もう１つのリセットが実行されるブロック２３４に進む。このリセットは、ブロック２１４を参照して説明されたリセットと類似する。フローは、実行が復元ベクトル位置で始まるブロック２３６に進む。すなわち、復元ベクトルは、プロセッサ１２による実行がどこで再開すべきかを指示するために使用される。この復元ベクトルは、図２の復元ベクトル１５２であり、停止および試験コントローラ１００内に（または停止および試験回路１４内のその他の場所に）記憶される。あるいは、この復元ベクトルの効果は、プロセッサ１２の論理において固有であり、その場合、停止および試験コントローラ１００内の復元ベクトル１５２は不要になる。フローは、次いで、状態がブロック２１０内で保存された場合、状態が復元されるブロック２３８に進む。フローは次いで、ユーザ・アプリケーションが引き続き実行するポイントＡに戻る。
【００４１】
判定ブロック２２１で、第１のクロック・チェック・ポイントに達する前に割込みが受信された場合、判定ブロック２０８からブロック２１０への「ＹＥＳ」ブランチによって開始された停止および試験手順に関する試験結果は記憶されなくてもよい。判定ブロック２２１で、割込みが受信されなかった場合、フローは、（例えば、試験結果レジスタ１１８の）クロック・カウントに達したか、または第１のクロック・カウント・チェック・ポイント（すなわち、現在のチェック・ポイント）を超えたかが判定される判定ブロック２２２に進む（１つの実施形態では、上記で説明されたように、試験結果レジスタ１１８のクロック・カウント領域は、クロック・カウント・チェック・ポイントに達した場合だけ、クロック・カウントを記憶し、したがって、試験結果レジスタ１１８は、達した最新のクロック・カウント・チェック・ポイントを常に示す。この実施形態では、ブロック２２０でインクリメントされ、判定ブロック２２２で現在のチェック・ポイントに達したかまたは当該チェック・ポイントを超えたかを判定するために使用される実際のクロック・カウントは、プロセッサ１２内またはデータ処理システム１０内の他の場所で記憶されるか、あるいは試験結果レジスタ１１８の他の領域内に記憶される）。判定ブロック２２で、現在のクロック・カウント・チェック・ポイントに達していないまたは当該クロック・カウント・チェック・ポイントを超えていない場合、フローは、より多くの試験刺激がシフトインされ、より多くの試験結果がシフトアウトされるブロック２１８、および、現在のチェック・ポイントに達しようとして、もう１つの機能的なクロック・サイクルが実行されることになるブロック２２０に戻る。
【００４２】
判定ブロック２２２で、クロック・カウントに達していないまたは当該クロック・カウントを超えていない場合、フローは、シフトアウトされた試験アウトプット（例えば、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１）から計算された符号が符号期待値と比較されて、合格／不合格指示子がそれに応じて更新されるブロック２２４に進む。１つの実施形態では、試験結果レジスタは、試験が引き続き合格を表示する限り論理レベル１にとどまり、試験結果が不合格の場合（すなわち、試験結果が符号期待値と一致しない場合）、論理レベル０になる、単一ビットの合格／不合格指示子を含む。あるいは、合格／不合格指示子は、上の表の各クロック・カウント・チェック・ポイントに関して試験結果レジスタ１１８内に提供され、論理レベル１は、対応するチェック・ポイントで合格を表示することになり、論理レベル０は、対応するチェック・ポイントで不合格を表示することになり、その逆も同様である。あるいは、合格／不合格結果を記憶するその他の方法が使用され得る。
【００４３】
図２を参照すると、Ｓｏｕｔ１  １０９およびＳｏｕｔ２  １１１を経由してスキャン・チェーンからシフトアウトされた試験結果は符号分析器１１２に提供される。符号分析器１１２は、これらのアウトプットに基づいて符号１２０を作り出し、符号１２０を符号比較器１１４に供給して、停止および試験コントローラ１１０によって供給された比較値１２６に基づく比較を可能にする。符号期待値記憶装置１１６は、比較のための符号期待値１１５を符号比較器１１４に供給する。符号期待値記憶装置１１６からの符号期待値は、停止および試験コントローラ１１０から受信された符号識別子１２４に基づいて選択される。したがって、停止および試験コントローラ１００は、ランダム・パターン・ジェネレータ１０２を制御して、それに応じて、符号期待値の選択を制御する。当技術分野で知られているような、通常の擬似ランダム・パターン・ジェネレータおよび符号分析器が使用される。さらに、記憶装置１１６内に記憶された符号期待値はまた、当技術分野で知られているように生成される。例えば符号期待値は、ＤＵＴの刺激によって計算される。
【００４４】
図２を参照すると、符号比較器１１４は、符号１２０を符号期待値１１５と比較して、比較結果１２２を試験結果レジスタ１１８に供給する。試験結果レジスタ１１８内の適切な合格／不合格指示子は、次いで、比較結果１２２を反映するために、必要に応じて更新される。例えば、比較結果１２２が一致を表示する場合、合格／不合格指示子は（論理レベル１に設定されているなど）合格を表示するように設定される。しかし、比較結果１２２が不一致を表示する場合、合格／不合格指示子は（論理レベル０にクリアされているなど）不合格を表示するように設定される。
【００４５】
図３を再び参照すると、フローは、ブロック２２４での比較の結果として、合格が表示されるかまたは不合格が表示されるかが判定される判定ブロック２２６に進む。（例えば、比較結果１２２によって表示されたように、符号１２０が符号期待値１１５と一致したことを示す）合格が発生した場合、フローは判定ブロック２２８に進む。判定ブロック２２８で、割込みが受信されたかどうかが再び判定される。この割込みは、上記で説明されたように、割込み２２を経由して、停止および試験回路１４に指示される。判定ブロック２２１で割込みに関して提供された同じ説明が判定ブロック２２８にも応用される。割込みが受信された場合、フローは、上記で説明されたようにブロック２３４に進み、その後ブロック２３６、２３８、２０６を介して進む。したがって、割込みが受信された場合、試験は継続せず、通常の動作が再開する（例えば、ユーザ・アプリケーションの実行が再開する）。
【００４６】
しかし、割込みが判定ブロック２２８で受信されなかった場合、フローは、最大クロック・カウントに達したかどうかが判定される判定ブロック２３０に進む。例えば、１つの実施形態では、（例えば、停止および試験コントローラ１００、または停止および試験回路１４内の他の場所に記憶された、図２の最大クロック１５４に対応する）最大クロック・カウントが使用される。最大クロック・カウントに達した場合、フローは、割込みが受信されたかどうかを判定するために判定ブロック２２８に戻る（また、後述するように、ブロック２２７で不合格が表示された場合も、フローは判定ブロック２２８に戻る）。最大クロック・カウントに達した場合、試験は継続されず、あるいは、割込みが受信されるまで、フローが判定ブロック２２８，２３０間で継続される。その時点で、フローは、判定ブロック２２８から、上記で説明されたように、通常の動作が再開するブロック２３４に進む（代替実施形態では、最大クロック・カウントに達すると、停止および試験手順は停止して、フローは、割込みを待たずにユーザ・アプリケーションの実行が再開するブロック２３４に進む）。判定ブロック２３０で、最大クロック・カウントにまだ達していない場合（かつ、割込みがまだ停止および試験手順に受信されていないため）、フローは、現在のチェック・ポイントとして、次のクロック・カウント・チェック・ポイントが選択されるブロック２３２に進む。例えば、上の表を参照すると、次のクロック・カウント・チェック・ポイントは、１００個のクロックに関する記述を参照する。すなわち、（ブロック２２４で）次に試験結果が更新されることになるときは、割込みが受信される前に現在のクロック・カウントが１００個のクロックに達するかどうかによる。
【００４７】
１つの実施形態では、例えば、十分な数の機能的なクロックが提供される前に割込みが発生したため、クロック・カウントが現在のクロック・カウント・チェック・ポイントに達していない場合、次の停止および試験手順が最初から再び開始されなくてはならず、例えば、次の停止および試験手順のための現在のクロック・カウント・チェック・ポイントは、（上記に示された同じ表で、２０個のクロックである）第１のクロック・チェック・ポイントに設定し戻される。
【００４８】
判定ブロック２２６を再び参照すると、（例えば、比較結果１２２によって表示されるように、符号１２０が符号期待値１１５と一致しなかったことを表示する）不合格が発生すると、フローは、不合格が表示されるブロック２２７に進む。この不合格の表示は、ブロック２２４を参照して上記で説明された試験結果レジスタ１１８内の合格／不合格指示子の更新を指す場合があり、または不合格を表示する追加のアウトプットを含む場合がある。フローは、次いで、割込みが受信されたかどうかが判定される判定ブロック２２８に進む。フローは、判定ブロック２２８を参照して上記ですでに説明されたように進む。例示された実施形態では、割込みが受信され、フローがブロック２３４に進み、したがって、通常の動作が再開される（例えば、ユーザ・アプリケーションの実行を再開させる）まで、フローは判定ブロック２２８，２３０間で継続される。代替実施形態では、判定ブロック２３０で、最大クロック・カウントに達した場合、または不合格が表示された場合、フローは速やかにブロック２３４に進み、停止および試験手順を終了するために割込みを待つ必要はなく、ユーザ・アプリケーションの実行を再開させることができる。
【００４９】
代替実施形態では、図３のフローは、最小クロック・チェックを含むこともできる。例えば、図２で例示されたように、停止および試験手順の間、停止および試験コントローラ１００（または停止および試験回路１４内の他の場所）に記憶された最小クロック１５６が使用される。１つの実施形態では、任意の結果が更新される前に、最小数のクロックが受信される。もう１つの実施形態では、（判定ブロック２１１でなど）割込みが受信されかたどうかをチェックする前で最小数のクロックが受信される。さらに、もう１つの代替実施形態では、最大クロック・カウントが使用されなくてもよい。この場合、判定ブロック２３０は、不合格が発生したかどうかだけを表示することになる。
【００５０】
図３では、停止および試験手順の間に実行されているＬＢＩＳＴ試験を参照して説明された。しかし、代替実施形態では、その他のタイプのスキャン試験が実行される。あるいは、停止および試験手順の間、プロセッサの状態をスクランブルする試験を含めて、スキャン試験以外の、またはスキャン試験に加えて、その他のタイプの試験が実行される。これらの場合、停止および試験回路１４は、所望される１つまたは複数のタイプの試験を達成するために、図２で例示された回路とは異なる回路または追加の回路を含み得る。さらに、図３のフローは１つの例であり、追加の工程を含む代替のフロー、より少ない工程を含む代替のフロー、または工程を組み合わせる代替のフローが使用され得る。
【００５１】
また、上記の説明は、試験刺激がスキャン・チェーン内にシフトされ、試験アウトプットがスキャン・チェーンからシフトされるスキャン試験を説明したものであるが、代替実施形態では、試験刺激は異なって応用される。例えば、試験刺激はスキャン・チェーン内または複数のスキャン・チェーン内に同時にロード可能である。同様に、スキャン試験アウトプットは、スキャン・チェーンからまたは複数のスキャン・チェーンから同時に読み取り可能である。
【００５２】
したがって、工場から離れた後、エンド・ユーザ・アプリケーションで、通常の動作の間に、データ処理システム、プロセッサ、またはそれらの部分などを割り込み的に試験できるように、通常の動作の間にソフトウェア指令によって割り込み試験を可能とする例えば、図３のフローなどの本発明の様々な実施形態が理解される。プロセッサ１２自体がいつアイドルであるのか、そうでない場合は、いつプロセッサ自体が割り込み的に試験可能であるかを「把握する」のはプロセッサ１２のソフトウェアであるため、プロセッサ１２上で実行するソフトウェアによる、（例えば、停止および試験指示子２４の使用を介して）この割り込み的な試験をどのように、かついつ実施するのかを制御する能力は、エンド・ユーザ・アプリケーションにおける通常の動作の間、改善された試験を可能にする。同様に、バス２６に接続された共処理（ｃｏｐｒｏｃｅｓｓｉｎｇ）装置または周辺装置がいつアイドルであるか、またはアイドルになり得るかを把握するのは、通常、（プロセッサ１２上またはバス２６に接続されたもう１つのプロセッサ上で実行する）ソフトウェアである。例えば、ソフトウェアは、システム動作を監視することによって、プロトコルに従うことによって、またはフロー制御によって、これを把握することができる。したがって、ソフトウェアは、（割り込み的な試験を介して）いつ装置の状態がスクランブルされ、次いで、（例えば、リセットおよび復元動作を介して）系統的な方法でリカバされる可能性があるかを知るために、プロセッサ１２もしくはデータ処理システム１０のその他の部分、またはそれらの両方の割り込み的な試験を実行することが可能である。１つの実施形態では、プロセッサ１２からの停止および試験指示子２４は、データ処理システム１０のどのモジュールまたは部分が割り込み的に検査され得るかを表示することも可能である。
【００５３】
図２の例示された実施形態では、停止および試験コントローラ１００は、強制誤り信号１５８をランダム・パターン・ジェネレータ１０２に供給する。この信号は、試験を行うため、および試験回路自体が正確に動作していることを確実にするために使用され得る。例えば、強制誤り信号１５８は、（例えば、ランダム・パターン・ジェネレータ１０２のアウトプット内に変動を引き起こすことによって、少なくとも１つの符号が対応する符号期待値に一致しないことになるように）不合格が確実にされるように設定される。しかし、試験結果レジスタ１１８が不合格を表示しない場合、試験回路自体に問題がある可能性がある。したがって、強制誤り信号１５８は、試験回路自体の適切な動作を確実にする目的で、既知の結果を作り出すための方法を提供する。ソフトウェア命令は、この強制誤り信号を提供するために使用される。あるいは、この強制誤り信号は、適切な動作を確実にするために、周期的にハードウェアによって行うことも可能である。
【００５４】
図４は、プロセッサ１２内に存在し得るスキャン・チェーンの代替実施形態を例示する。本発明の１つの実施形態によれば、図４のスキャン・チェーンは、インプットをスキャン・チェーンの端にさらにより早く伝播するために、追加のＸＯＲゲートを利用する。図４は、（それぞれ、組合せ論理３１２，３１４，３１６，３１８，３２０からインプットを受信する）通常の動作の際に動作するように構成され、かつ（もう１つのフリップ・フロップからインプットを受信する）スキャン・チェーンとして動作するように構成されたフリップ・フロップ３０１〜３０６を含む。なお、図４の実施形態では、各フリップ・フロップは、図２のフリップ・フロップのインプットに配置されたマルチプレクサの機能を内部に含む。図４の各フリップ・フロップは、スキャン・イネーブル（ＳＥ）とクロック・インプットとを受信する。ＳＥがネゲートされた場合、各フリップ・フロップは、「Ｄ」インプットを経由して受信されたインプット上で動作し、したがって、通常の動作を可能にする。ＳＥがアサートされた場合、各フリップ・フロップは、スキャン・チェーンとして動作し、インプットは「ＳＤ」インプットを経由してスキャン・チェーンに伝播される。図４に示されないが、フリップ・フロップのアウトプットはまた、組合せ論理にも供給される。これらの同じタイプのフリップ・フロップは、図２の実施形態でも利用され得る。
【００５５】
図４のスキャン・チェーンは、排他的ＯＲ（ＸＯＲ）ゲート３０８，３１０も含む。ＸＯＲゲート３０８は、フリップ・フロップ３０１のアウトプットから第１のインプットを受信し、フリップ・フロップ３０３のアウトプットから第２のインプットを受信する。ＸＯＲゲート３１０は、フリップ・フロップ３０４のアウトプットから第１のインプットを受信し、フリップ・フロップ３０５のアウトプットから第２のインプットを受信する。ＸＯＲゲートは、試験インプットがより少ない数のクロックを用いて、スキャン・チェーンをさらに下がって伝播することを可能にする。すなわち、（例えば、フリップ・フロップ３０１など）フリップ・フロップのうちのいくつかのアウトプットは、ＸＯＲゲートを経由して、スキャン・チェーンをさらに下がって（例えば、フリップ・フロップ３０４など）フリップ・フロップに順方向送りされ、これらの順方向送りされた値（ｆｏｒｗａｒｄｅｄ  ｖａｌｕｅｓ）を受信するフリップ・フロップは、試験インプットがスキャン・チェーンのこれまでのフリップ・フロップのすべてを介して伝播するのを待つよりも、より早く状態を変えることが可能である。このように、これらのより多い遠隔のフリップ・フロップの状態が変更される限り、刺激はより多くの回路に提供され、場合によっては、より多くの試験範囲を可能にするため、スキャン・チェーンのより多い遠隔区分の試験をより少ないクロック・サイクルを用いて実行可能である。
【００５６】
例えば、排他的ＮＯＲ（ＸＮＯＲ）ゲートなど、その他の論理ゲートがＸＯＲゲート３０８，３１０の代わりにまたは当該ゲートに加えて使用可能である。また、任意の数のフリップ・フロップがゲートのインプット間に存在可能であり、図４で例示された数に限定されない。例えば、ＸＯＲゲート３０８，３１０などのゲートの配置は、特定の設計に関して最善のスキャン刺激を作り出すために選択される。
【００５７】
プロセッサ１２の１つまたは複数のスキャン・チェーンは、第１のメモリ要素と、メモリ要素のチェーンと、第２のメモリ要素とを含むものとして説明される。第１のメモリ要素のアウトプットは、メモリ要素のチェーンのインプットと、少なくとも１つの論理ゲートのインプットとに接続され、少なくとも１つの論理ゲートのアウトプットは、第２のメモリ要素のインプットに接続される。例えば、メモリ要素は、スキャン・チェーン内のフリップ・フロップであり、論理ゲートは、図４を参照して説明されたＸＯＲゲートであり得る。メモリ要素のチェーンは、任意の数のメモリ要素を含み得る。
【００５８】
以上記述したように、本発明を特定の実施形態を参照して説明した。しかし、当業者は、特許請求の範囲に記載される本発明の範囲から逸脱せずに様々な変形および変更が行われ得ることを理解する。例えば、ブロック図は、例示されたものと異なるブロック図を含むことが可能であり、より多いもしくはより少ないブロックを有すること、または異なって配置されることも可能である。またフロー図は、異なって配置されること、より多いもしくはより少ない工程を含むこと、異なって配置されることが可能であり、または複数の工程に分離され得る工程もしくは互いに同時に実行され得る工程を含むことが可能である。したがって、明細書および図面は、限定的な意味ではなく、例示的と見なされるべきであり、すべてのかかる変形形態は本発明の範囲内に含まれることが意図される。
【図面の簡単な説明】
【００５９】
【図１】本発明の１つの実施形態によるデータ処理システムをブロック図形式で例示する図。
【図２】本発明の１つの実施形態による、図１のプロセッサの一部と停止および試験回路とをブロック図の形式で例示する図。
【図３】本発明の１つの実施形態による、図１のプロセッサを試験する方法をフロー図の形式で例示する図。
【図４】本発明の実施形態による、図１のプロセッサの一部をブロック図形式で例示する図。
【図１】
2009527821.tif 000004
【図２】
2009527821.tif 000005
【図３】
2009527821.tif 000006
【図４】
2009527821.tif 000007
【国際調査報告】
2009527821.tif 000008