(57)【要約】スキャンチェーンの環境変数を、ホールドタイム障害を生じると思われる値に設定し、スキャンチェーンを通るようにパターンをシフトする。このパターンは、第１論理状態の少なくともｎ個の連続したビットと、その後に続く第２論理状態の少なくとも１つのビットを含むバックグラウンドパターンを有する。ｎはスキャンチェーンの長さである。ｉ）少なくとも１つのビットがスキャンチェーンの出力において遷移を生じると予測されるクロックサイクルと、ｉｉ）少なくとも１つのビットがスキャンチェーンの出力において実際に遷移を生じるクロックサイクルとの差として、スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定する。スキャンチェーンが正確に動作する環境変数の値が存在する場合には、ホールドタイム障害の１つ以上の場所を判定することができる。【選択図】図３
2011502267.tif 000002
【特許請求の範囲】
【請求項１】
被試験装置のスキャンチェーンを分析する方法であって、
前記スキャンチェーンの環境変数を第１の値に設定し、一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから不測のトグルパターンが出力されるかを判定することと、
前記環境変数を第２の値に設定し、前記一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから前記一定でないシーケンスパターンが予測時間に出力されるかを判定することと、
ｉ）前記スキャンチェーンが、前記環境変数の前記第１の値において不測のトグルパターンを出力する場合、及びｉｉ）前記スキャンチェーンが、前記環境変数の前記第２の値において前記一定でないシーケンスパターンを前記予測時間に出力しない場合、の両方が少なくとも生じた場合に、第１の数のスキャンテストの結果に基づいて、前記スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定することと、
を含むことを特徴とする方法。
【請求項２】
（ｉ）前記スキャンチェーンが、前記環境変数の前記第１の値において不測のトグルパターンを出力する場合、及び（ｉｉ）前記スキャンチェーンが、前記環境変数の前記第２の値において前記一定でないシーケンスパターンを前記予測時間に出力する場合、の両方が生じた場合に、第２の数のスキャンテストの結果に基づいて、前記スキャンチェーンにおいて起こり得るホールドタイム障害の位置を判定することをさらに含み、前記環境変数の前記第１の値及び前記第２の値を用いて第２の数のスキャンテストを行うこと、
を特徴とする請求項１に記載の方法。
【請求項３】
前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定することが、
前記環境変数を前記第２の値に設定して、前記スキャンチェーンに少なくとも１つのスキャンパターンをシフトインすることと、
前記スキャンチェーンにシフトインした前記少なくとも１つのスキャンパターンの各々に対して、前記スキャンチェーンに特定のスキャンパターンをシフトインした後に、
前記環境変数を一時的に前記第１の値に設定し、
前記スキャンチェーンを少なくとも一度クロック制御し、
前記環境変数を前記第２の値に設定して、前記スキャンチェーンから前記特定のスキャンパターンをシフトアウトすることと、
ビット毎に、前記スキャンチェーンからシフトアウトした各特定のスキャンパターンを予測スキャンパターンと比較して、ビットに違いのある少なくとも１つの位置を識別することと、
前記ビットに違いのある少なくとも１つの位置に基づいて、前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の前記位置を判定することと、
を含むこと、
を特徴とする請求項２に記載の方法。
【請求項４】
前記スキャンチェーンに少なくとも１つのスキャンパターンをシフトインすることが、
前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定する際に、前記スキャンチェーンに複数のスキャンパターンをシフトインすることを含み、前記スキャンチェーンが前記環境変数の前記第１の値においてクロック制御された際に、各スキャンセルが論理０−１、論理１−１、論理１−０、論理０−０の遷移を生じることを保証するビットのシーケンスを前記複数のスキャンパターンが有することで、１つ以上の前記ホールドタイム障害の極性に関らず、起こり得る全てのホールドタイム障害の１つ以上の位置を判定できること、
を特徴とする請求項３に記載の方法。
【請求項５】
前記複数のスキャンパターンが反復する１６進数３、６、Ｃ、９のパターンを含むこと、を特徴とする請求項４に記載の方法。
【請求項６】
前記スキャンチェーンを少なくとも一度クロック制御することが、前記スキャンチェーンを一度のみクロック制御することを含むこと、を特徴とする請求項３に記載の方法。
【請求項７】
ｉ）前記スキャンチェーンが、前記環境変数の前記第１の値において不測のトグルパターンを出力する場合、及びｉｉ）前記スキャンチェーンが、前記環境変数の前記第２の値において前記一定でないシーケンスパターンを出力する場合、の両方が生じた場合に、第１の数のスキャンテストの結果に基づいて、前記スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定することをさらに含むこと、
を特徴とする請求項１に記載の方法。
【請求項８】
前記環境変数の前記第１の値において、前記一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトした後に、ｉ）前記スキャンチェーンから予測パターンが出力された際に前記スキャンチェーンを「良」と識別し、及びｉｉ）前記スキャンチェーンからフラットラインパターンが出力された際に前記スキャンチェーンを「フラットライン」と識別することをさらに含むこと、
を特徴とする請求項１に記載の方法。
【請求項９】
前記スキャンチェーンが前記環境変数の前記第１の値において不測のトグルパターンを出力した場合には、前記環境変数を前記第２の値に設定することのみを行うことをさらに含むこと、を特徴とする請求項８に記載の方法。
【請求項１０】
前記環境変数の前記第１の値及び前記第２の値をユーザから受け付けることをさらに含むこと、を特徴とする請求項１に記載の方法。
【請求項１１】
前記環境変数の複数の値の各々に対して、前記一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記一定でないシーケンスパターンが予測時間に前記スキャンチェーンから出力されるかを判定し、
前記環境変数の前記第２の値を、前記複数の値のうち、前記予測時間に前記一定でないシーケンスパターンを前記スキャンチェーンから出力させる複数の値の１つとして識別することによって、前記環境変数の前記第２の値を識別することをさらに含むこと、
を特徴とする請求項１に記載の方法。
【請求項１２】
前記第１の値が前記スキャンチェーンに対する前記環境変数の正常動作範囲にあり、前記第２の値が前記スキャンチェーンに対する前記環境変数の正常動作範囲外にあること、を特徴とする請求項１に記載の方法。
【請求項１３】
前記スキャンチェーンにおける前記ホールドタイム障害の数を判定することが、
前記環境変数を前記第１の値に設定することと、
第１論理状態の少なくともｎ個の連続したビットと、その後に続く第２論理状態の少なくとも１つのビットを含むバックグラウンドパターンを、前記スキャンパターンを通るようにシフトすることと、
ｉ）前記少なくとも１つのビットが前記スキャンチェーンの出力において遷移を生じると予測されるクロックサイクルと、ｉｉ）前記少なくとも１つのビットが前記スキャンチェーンの前記出力において実際に遷移を生じるクロックサイクルとの差として、前記スキャンチェーンにおいて起こり得る前記ホールドタイム障害の数を判定することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項１４】
前記スキャンチェーンにおける前記ホールドタイム障害の数を判定することが、
前記環境変数を前記第１の値に設定することと、
第１論理状態の２ｎ個のビットと、その後に続く第２論理状態の２ｎ個のビットを含むパターンを、前記スキャンチェーンを通るようにシフトすることであって（ｎは前記スキャンチェーンにおけるスキャンセルの数）、前記シフトすることと、
立上りエッジホールドタイム障害の数と立下りエッジホールドタイム障害の数を、ｉ）それぞれのエッジが前記スキャンチェーンから出力されると予測されるクロックサイクルと、ｉｉ）それぞれのエッジが前記スキャンチェーンから実際に出力されるクロックサイクルとの差として判定することと、
を含むことを特徴とする請求項１に記載の方法。
【請求項１５】
前記スキャンチェーンが奇数パリティを有する場合に、前記スキャンチェーンから特定のパターンが出力されるかを判定することが、パターンの逆転を考慮することを含むこと、を特徴とする請求項１に記載の方法。
【請求項１６】
前記環境変数が供給電圧であること、を特徴とする請求項１に記載の方法。
【請求項１７】
前記環境変数が温度であること、を特徴とする請求項１に記載の方法。
【請求項１８】
前記環境変数がスキャンシフトクロックレートであること、を特徴とする請求項１に記載の方法。
【請求項１９】
被試験装置のスキャンチェーンを分析する方法であって、
前記スキャンチェーンの環境変数を第１の値に設定し、一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから不測のトグルパターンが出力されるかを判定することと、
前記環境変数を第２の値に設定し、前記一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから前記一定でないシーケンスパターンが予測時間に出力されるかを判定することと、
（ｉ）前記スキャンチェーンが、前記環境変数の前記第１の値において不測のトグルパターンを出力する場合、及び（ｉｉ）前記スキャンチェーンが、前記環境変数の前記第２の値において前記一定でないシーケンスパターンを前記予測時間に出力する場合、の両方が生じた場合に、複数のスキャンテストの結果に基づいて、前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定することと、
を含み、前記環境変数の前記第１の値及び前記第２の値を用いて、第２の数のスキャンテストを実行すること、
を特徴とする方法。
【請求項２０】
前記環境変数が供給電圧であること、を特徴とする請求項１９に記載の方法。
【請求項２１】
被試験装置のスキャンチェーンにおいて起こり得るホールドタイム障害の数を判定する方法であって、
前記スキャンチェーンの環境変数を、前記スキャンチェーンにおいてホールドタイム障害を生じると思われる値に設定することと、
前記スキャンチェーンを通るようにパターンをシフトすることであって、前記パターンが第１論理状態の少なくともｎ個の連続したビットと、その後に続く第２論理状態の少なくとも１つのビットを含むバックグラウンドパターンを有し（ｎは前記スキャンチェーンの長さ）、前記シフトすることと、
ｉ）前記少なくとも１つのビットが前記スキャンチェーンの出力において遷移を生じると予測されるクロックサイクルと、ｉｉ）前記少なくとも１つのビットが前記スキャンチェーンの出力において実際に遷移を生じるクロックサイクルと、の差として前記スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定することと、
を含むことを特徴とする方法。
【請求項２２】
前記スキャンチェーンを通るようにシフトした前記パターンが、前記第１論理状態の２ｎ個のビットと、その後に続く前記第２論理状態の２ｎ個のビットと、その後に続く前記第１論理状態のｎ個のビットを含み、
前記スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定することが、立上りエッジホールドタイム障害の数と立下りエッジホールドタイム障害の数を、ｉ）それぞれのエッジが前記スキャンチェーンから出力されると予測されるクロックサイクルと、ｉｉ）前記それぞれのエッジが前記スキャンチェーンから実際に出力されるクロックサイクルと、の差として判定することを含むこと、
を特徴とする請求項２１に記載の方法。
【請求項２３】
前記環境変数が供給電圧であること、を特徴とする請求項２１に記載の方法。
【請求項２４】
被試験装置のスキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定する方法であって、
前記スキャンチェーンの環境変数を第１の値と第２の値に交互に設定することであって、前記第１の値が前記スキャンチェーンにおいてホールドタイム障害を生じると思われる値であり、前記第２の値が前記スキャンチェーンにおいてホールドタイム障害を生じないと思われる値であり、前記交互に設定することと、
前記環境変数を前記第２の値に設定して、少なくとも１つのスキャンパターンを前記スキャンチェーンにシフトインすることと、
前記スキャンチェーンにシフトインした各スキャンパターンに対して、前記スキャンチェーンに特定のスキャンパターンをシフトインした後に、
前記環境変数を前記第１の値に一時的に設定し、
前記スキャンチェーンを少なくとも一度クロック制御し、
前記環境変数を前記第２の値に設定して、前記スキャンチェーンから前記特定のスキャンパターンをシフトアウトすることと、
ビット毎に、前記スキャンチェーンからシフトアウトした各特定のスキャンパターンを予測スキャンパターンと比較して、ビットに違いのある少なくとも１つの位置を識別することと、
ビットに違いのある前記少なくとも１つの位置に基づいて、前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定することと、
を含むことを特徴とする方法。
【請求項２５】
少なくとも１つのスキャンパターンを前記スキャンチェーンにシフトインすることが、
前記スキャンチェーンに複数のスキャンパターンをシフトインすることを含み、前記スキャンチェーンが前記環境変数の前記第１の値においてクロック制御される際に、各スキャンセルが論理０−１、論理１−１、論理１−０、論理０−０の遷移を生じることを保証するビットのシーケンスを前記複数のスキャンパターンが有することで、１つ以上の前記ホールドタイム障害の極性に関らず、起こり得る全てのホールドタイム障害の１つ以上の位置を判定できること、
を特徴とする請求項２４に記載の方法。
【請求項２６】
前記複数のスキャンパターンが反復する１６進数３、６、Ｃ、及び９のパターンを含むこと、を特徴とする請求項２５に記載の方法。
【請求項２７】
前記スキャンチェーンを少なくとも一度クロック制御することが、前記スキャンチェーンを一度のみクロック制御することを含むこと、を特徴とする請求項２４に記載の方法。
【請求項２８】
前記環境変数が供給電圧であること、を特徴とする請求項２４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スキャンチェーンを分析する方法、及びスキャンチェーンにおけるホールドタイム障害の数又は位置を判定する方法に関する。
本出願は２００７年１０月３１日に提出された第１１／９３１，８４７号の一部継続出願であり、本願ではこの出願の内容を参照し、援用する。
【背景技術】
【０００２】
テクノロジーノードが小さくなると、テストを行う目的で装置に付加されるスキャンチェーン中に、より多くの欠陥が発見されるようになる。これは、本書でも説明するように多くの理由によるものである。新しい集積回路を市場に出すために、そして歩留まりを許容可能レベルに向上させるために、スキャンチェーンの欠陥を識別する新たな方法及び装置が必要である。
【０００３】
スキャンチェーンはテストを行うため、及び歩留まり向上のために重要なものである。スキャンチェーンが壊れると、被試験装置（例えばチップ）が不良品に格下げとなるばかりでなく（歩留まり損失問題を増大させる）、複合的かつ連鎖的な配電、若しくはクロック論理を原因とするその他の障害が隠蔽され、それらを適時且つ正確に評価することができなくなる。
【０００４】
テスト容易化設計（ＤＦＴ）又はスキャンメソッドの手法は、１つのデザイン中の全てのフリップフロップをスキャンフリップフロップで置き換えることである。スキャンフリップフロップ（又はスキャンセル）は、各フリップフロップに入る２つの経路を提供する：１つは設計上のミッションを実行するための経路であり、もう１つはテストを容易化するための経路である。
【０００５】
スキャンフリップフロップに対する最も一般的な２つの手法は、ＭＵＸＤ手法とＬＳＳＤ手法である。ＭＵＸＤ手法はフリップフロップのＤ入力のフロントエンドにマルチプレクサ（ｍｕｘ）を配置する。スキャンイネーブルとして知られるｍｕｘへのセレクタは、ｍｕｘのミッションモード入力又はスキャンテスト入力を使用すべきか否かを判定する。ＬＳＳＤ手法は、複数の非オーバラップクロックを使用する：そのうちの１つの組は、ミッションデータを伝えるために分離したマスタラッチとスレーブラッチを操作し、他の組は、スキャンシフト操作を生成するために分離したマスタラッチとスレーブラッチを操作するものである。ＬＬＳＤ手法では、全体のスキャンシフト及びサンプル操作を１対のクロックのみ、又はクロックの全てを組み合わせて行なうことができる。
【０００６】
ＤＵＴのスキャンフリップフロップ（又はスキャンセル）を、スキャンチェーンと呼ばれる１つ以上のシフトレジスタにつなぐことによって、各フリップフロップを予め設定したり観察したりすることができる。そのようにすることで、ＤＵＴの副回路において障害を検出することに集中するテストパターンを構成することができる。
【０００７】
ＭＵＸＤタイプのスキャンに焦点を当てて更に説明するが、それは説明がより容易であると共により単純なためである。ＭＵＸＤタイプスキャンでは、各スキャンフリップフロップが２つの入力経路を有し、これをフリップフロップのＤ入力においてｍｕｘが制御する。スキャンイネーブルがアサートされると、スキャンチェーンはシフトレジスタとして動作する。これにより、各フリップフロップを特定の状態にセットすることができる。また、値が装置からスキャン出力へとシフトアウトされる際に各フリップフロップの状態を観察することができる。レベルセンシティブスキャン設計は、ストリー（Ｓｔｏｒｅｙ）らの非特許文献１において、さらには特許文献１及び特許文献２において開示されたものである。
【０００８】
スキャンチェーンにおける欠陥（又は障害）には、一般に認識されているモデルが幾つかある：それらは、ブロック化チェーン障害、ブリッジ障害、及びホールドタイム障害である。
【０００９】
ブロック化チェーン障害−スキャンモードにある間にスキャン出力を観察することによって、その状態を判断する。チェーンにシフトされたデータに関らず出力が一定レベルにある場合には、チェーンは１つ以上のポイントでブロック化されており、スキャン出力に最も近いブロックが、そのチェーンから何が観察されるかを支配する。一般に障害モデルでは、スキャンチェーンの出力はそのブロックポイントに位置する順次素子からの０縮退障害又は１縮退障害のいずれかとなる。
【００１０】
ブリッジ障害−ブリッジ障害は、１つのスキャンチェーンを通過するデータが別のスキャンチェーンで、又は同一スキャンチェーン内の異なる位置でデータを修正できる場合のデータ依存の状態である。推測されるメカニズムは、含まれる２つの信号が逆の値をとる場合に使用される「アグレッサ−ビクティム」の短絡又はブリッジである。
【００１１】
ホールドタイム障害−ホールドタイム障害は、あるフリップフロップからのデータをスキャンチェーン内で前に進める状態である。ホールドタイム障害は、例えばフリップフロップとクロックスキューのクロック−Ｑ時間に比較してワイヤルートが長いこと等、多くの要因に起因するものである。この状態は、出力で生成されたデータがまだトグルしているがスキューしたようでもある（応答は正確であるが時間がシフトしている）場合や、ビットが欠如している（データが不鮮明であったり、ビットがとんでいたりする）場合に推測される状態である。全体的に、ホールドタイム障害は「偶然の暗号化」と見なすことができる。スキャン入力において適用したビット数がスキャン出力におけるデータと合わない場合には、ホールドタイム障害の存在が疑われる。場合によっては、ホールドタイム障害によりスキャンチェーンは実際の保有数よりも少ない数のフリップフロップを有するように見える。
【００１２】
ホールドタイムはスキャンチェーンにおける２つの隣接したセルの間のデータ通信障害であり、スキャン入力に最も近いビットはアグレッサセルであり、スキャン出力に最も近いビットがビクティムセルである。ホールドタイム障害が存在すると、ビクティムセルのデータ値はアグレッサセルのデータ値で置き換えられる。その結果のデータストリームはアグレッサのデータを二度示すこととなり、ビクティムのデータは失われる。ホールドタイム障害には３つの通常のタイプがある。
【００１３】
標準的ホールドタイム障害−両方のデータ状態（アグレッサとビクティム）が不適切に伝わると、障害シグネチャはスキャンチェーン内で欠如したフリップフロップを装う形となる。
【００１４】
データ１ホールドタイム障害−アグレッサセルのデータが論理１である場合、そのデータが１つ前の位置に引きよせられてビクティムのデータに上書きされる。その結果、障害シグネチャが含む１の数が多すぎることになる。
【００１５】
データ０ホールドタイム障害−アグレッサセルのデータがゼロである場合、そのデータが１つ前の位置に引きよせられてビクティムのデータに上書きされる。その結果、障害シグネチャが含む０の数が多すぎることになる。
【００１６】
典型的には、スキャンチェーンテスト論理が動作可能であることを保証するべく、装置の機能論理のテストを実行する前にスキャンチェーンテスト論理に関するテストを行う。スキャンチェーンテスト論理に関するテストは、一般にスキャンチェーンインテグリティテストとして知られている。最も一般的な手法は、スキャン入力において一連の１及び０を送ることである。スキャンイネーブルがアサートされると、スキャンチェーンは本質的に大きいシフトレジスタとなる。スキャンイネーブルが継続的にアサートされると、機能論理がテストから除外される。ｎ個のクロックサイクルの後（ｎはチェーン内のスキャンセルの数に等しい）、スキャンチェーンが正確に動作していればスキャン出力において入力ストリームが観察されるはずである。
【００１７】
スキャンチェーンがスキャン入力からスキャン出力へと正確にデータを転送しなければ、スキャンメソッド全体が失われる。チェーンにロードする入力データとチェーンからアンロードする出力データの両方が乱れる。その乱れは典型的にスキャンチェーンのインテグリティ障害として表れる。これにより、スキャンチェーンは少なくとも１フロップ分実際よりも短くなる。クロックスキューの問題は、例えばタイミング収束のような設計の問題、又は例えばバイアスの不良やクロックツリーバッファの欠陥等の製造上の欠陥によって生じ得る。ナノメートル構造では、クロックスキューは上記２つの問題が組み合わさって生じることが多く、ホールドタイム問題による歩留まりの損失を生じることになる。
【先行技術文献】
【特許文献】
【００１８】
【特許文献１】米国特許第３，７８３，２５４号
【特許文献２】米国特許第４，２９３，９１９号
【非特許文献】
【００１９】
【非特許文献１】第１４回設計自動化会議議事録４９２頁から４９４頁「遅延テストシミュレーション」（１９７７年６月）
【発明の概要】
【００２０】
ＡＴＰＧツールの生成する従来のチェーンインテグリティパターンは、今日では「００１１００１１」シーケンスが繰り返すストリームとして実行される。このシーケンスは１ベクタおきに変化するデータを有する。そのため、標準的なホールドタイム障害のある装置が１ビット分シフトされたようになり、最終ビットが不確定となる。シフトアウトされた最終ビットはパターンの一部ではなく、それはスキャンアウトシーケンスが適用された際のスキャンインピンでの状態である。ここで図１を参照する。１つの標準的なホールドタイム障害を有する障害シグネチャは基本的に合−否−合−否であることに注目されたい。
【００２１】
多くの場合、ホールドタイム障害はタイミングに影響を受け易い。即ち、フリップフロップのＱ出力の立上り時間及び立下り時間は対称でないため、ホールドタイム障害が生じると、フリップフロップはあるデータ状態の伝送はできても他のデータ状態の伝送はできないということになる。この障害は立下り時間より立上り時間が遅いＱ出力によって生じ得る。
【００２２】
図２に示す例は１つのホールドタイム障害を想定したものであり、「０」がアグレッサ状態、「１」がビクティム状態となっている。装置が単一チェーンに複数のホールドタイム障害を有する場合には、データは各障害に対してサイクルを１つシフトする。より小さい形状の装置が単一チェーンに複数のホールドタイム障害を有することは極めて一般的である。標準的な００１１００１１パターンでは、チェーンがデータ４ポジションをシフトして、パターンの終端で実際にスキャンチェーンテストに合格する可能性もある。
【００２３】
前述のように、テストメソッドに対するデザインでは、フリップフロップは二重の機能性を有する。標準又は機能モード中、フリップフロップは回路においてデータ状態をラッチして、デザインにおける論理の次のクラウドに伝送する値を記憶する。テストモード中は、フリップフロップは組み合わせ論理にテスト刺激を提供して、論理演算の結果を収集するよう使用される。被試験装置の内外にテストパターンを伝送するために、フリップフロップは１つ以上のシリアルシフトレジスタとして再構成される。
【００２４】
セットアップ違反として知られる１つのタイプの設計の問題は、レジスタの２つのバンク間の論理の量が大きすぎてデータが論理を通って伝わらず、スキャンチェーンがクロック制御される前に許容されるセットアップ時間内に、フリップフロップへの入力においてデータが安定しない場合に発生する。これが発生すると、フリップフロップへとクロック供給される結果が無効となる可能性がある。この問題は、設計メソッドと「タイミング分析」に関連したツールによって解決される。
【００２５】
所望のスキャンパターンが１つ以上のスキャンチェーンにロードされた後、スキャンイネーブルがアサートされず、装置の論理は一回以上ミッションモードでクロック制御される。論理演算の結果は装置のスキャンフリップフロップで取り込まれる。この結果を被試験装置から取り出して、テストシステムが検査できるようすることが望ましい。これは、フリップフロップをシリアルシフトモードに戻し、その後スキャンアウトポートから多数のスキャンチェーンに全てのビットをシフトするのに十分なクロックを適用することによって実行される。ほとんどの設計には他のものより長いスキャンチェーンがいくらか備わっているため、最も長いスキャンチェーンでも完全にアンロードできる十分な回数でデータをシフトすることが重要である。比較的短いチェーンはオーバシフトするため、Ｘ（ドントケア（ｄｏｎ’ｔ ｃａｒｅ））状態で埋める。この同じ技術はデータがシフトインされた際に適用され、比較的短いチェーンは、実際のデータストリームの前にダミーの０データで事前に埋めることが典型的である。この時点で、スキャンインポートを通るように新たなテストパターンをシフトインすることが一般的である。
【００２６】
スキャンレジスタの従来の実行では、クロック事象のみならず、状態の変更を確立するために電荷の流れ又は電流が必要である。装置の導電媒体に欠陥があれば、電流率が下がり、状態の変更若しくはクロック事象が所望の時間から遅延する可能性がある。さらにクロック信号はチップ全体に分配されなければならないため、電流を引き上げるバッファが必要である。任意の２つのクロック信号のレジスタへの到達に差が生じることがあるが、これはクロックスキューと呼ばれており、バッファサイズとクロック信号を運ぶワイヤのルートを調整することによって対応することができる。
【００２７】
ホールドタイム障害の影響の一例として、長さ８（即ち８ビットポジション、フリップフロップ又はスキャンセル）、スキャンアウトポートに最も近いものがビット０、そしてスキャンインポートに最も近いものがビット７というスキャンチェーンについて検討する。機能クロックの後に、装置の論理状態はスキャンチェーンの８つのレジスタ内に次のように完全に取り込まれる：
Ｖ（Ｏ）Ｖ（１）Ｖ（２）Ｖ（３）Ｖ（４）Ｖ（５）Ｖ（６）Ｖ（７）。
【００２８】
正しいシフトレジスタでは、８ビットのそれぞれが連続的にシフトアウトし、Ｉ（０）で始まる新規なテストパターンがシフトインする。しかし、ここでビット６がホールドタイム障害を示すと想定する。第１シフトクロックでは、Ｖ（０）がスキャンアウトポートから放出される。しかし、ビット６における障害により、この第１シフトの間にＶ（６）ではなくＶ（７）が取り込まれることになる。８つのシフトクロックが適用された後、スキャンアウトにおいて取り込まれるパターンは以下のようになる：
Ｖ（０）Ｖ（１）Ｖ（２）Ｖ（３）Ｖ（４）Ｖ（５）Ｖ（７）Ｉ（０）。
【００２９】
また、上記スキャンチェーンの入力テストパターンの破損については以下のようになると考えられる：
Ｉ（０）Ｉ（１）Ｉ（２）Ｉ（３）Ｉ（４）Ｉ（５）Ｉ（７）Ｉ（Ｎ）。
【００３０】
スキャンチェーンは従来１０，０００のレジスタ（即ち、フリップフロップ又はセル）を含み、たとえ１パーセント未満がホールドタイム障害を示すとしても、スキャンチェーン中の何百ものビットが無効になり得ることが理解されよう。
【図面の簡単な説明】
【００３１】
【図１】ホールドタイム障害の第１の例を示す図である。
【図２】ホールドタイム障害の第２の例を示す図である。
【図３】一例としての被試験装置に連結した一例としてのテストシステムを示す図である。
【図４】スキャンチェーンにおけるホールドタイム障害の数を判定する方法の第１の例を示す図である。
【図５】スキャンチェーンにおける少なくとも１つのホールドタイム障害の位置を判定する方法の第１の例を示す図である。
【図６】スキャンチェーンを分析する方法の第１の例を示す図である。
【図７】スキャンチェーンを分析する方法の第２の例を示す図である。
【図８】スキャンチェーンにおけるホールドタイム障害の数を判定する方法の第２の例を示す図である。
【図９】スキャンチェーンにおける少なくとも１つのホールドタイム障害の位置を判定する方法の第２の例を示す図である。
【発明を実施するための形態】
【００３２】
本発明を例示する実施形態を図面に示す。
【００３３】
なお、以下の記載において、同様の要素／特徴については複数の異なる図面にわたって同じ参照番号を付して示す。
【００３４】
１つ以上のスキャンチェーンにおけるホールドタイム障害の数又は位置を判定する複数の新規な方法を記載する前に、一例としての被試験装置３００、スキャンチェーン３１４、３１６、及びテストシステム３１２を示す。図３は、２つのスキャンチェーン３１４、３１６を含む一例としての回路３００（又は被試験装置（ＤＵＴ））を示し、スキャンチェーン３１４は、一連の４つのフリップフロップ３０２、３０４、３０６、３０８を含み、これらは回路３００の組み合わせ論理３１０と相互接続している。組み合わせ論理３１０は単純に示すために「黒のボックス」で示している。例えば、各スキャンチェーン３１４、３１６は、対応するフリップフロップ３０２、３０４、３０６、３０８のデータ入力（Ｄ）の前に信号マルチプレクサを付加することによって作られている。スキャンイネーブル（ＳＥ）と呼ばれる１つの制御信号を付加して、これらマルチプレクサの選択を制御する。代替的に、スキャンチェーン３１４、３１６はＬＳＳＤ技術等の他の方法で作成することもできる。ＳＥ信号がローであれば、回路３００は通常の動作をするが、これはフリップフロップ３０２、３０４、３０６、３０８へのデータ入力が組み合わせ回路３１０からなされることを意味している。ＳＥ信号がハイであれば、各フリップフロップ３０２、３０４、３０６、３０８の入力は別のフリップフロップの出力に、又は回路３００のスキャンアウト（ＳＯ）ピンに接続される。スキャンチェーンにおける第１フリップフロップ３０２へのデータ入力は、回路３００の外部ピン（即ちスキャンイン（ＳＩ）ピン）にも接続している。テスト（又は分析）パターンがスキャンチェーン３１４にシフトインされた後、１サイクルの間ＳＥ信号はローになり、シフトインされたテストパターンから得られた組み合わせ論理３１０のデータ出力が、フリップフロップ３０２、３０４、３０６、３０８に取り込まれる。ＳＥ信号が再びハイになると、取り込まれたデータ結果がＳＯピンからシフトアウトされてテストシステム３１２の予測値と比較される。組み合わせ論理３１０に操作の欠陥があれば、データ出力シーケンスの１以上のビットが予測値と異なることになる。
【００３５】
一例としてのテストシステム３１２は、装置３００の構造テスト（スキャンテスト若しくはＤＦＴテストとしても知られている）を実行することができ、場合によっては回路３００の機能テストを実行することもできる。データパターンメモリには、装置３００に与えるテストパターンと、装置３００から読み出されると予測されるデータパターンがロードされている。テストシステム３００は選択可能なモード、即ち、１）エラーが生じた場合（例えば、出力データ状態が予測するデータ状態とは違う場合）にはいつでもテストを終了するというモード、又は２）全てのパターンセットを完了して観察したエラーのすべてを記録するというモードである。これを達成するために、テストシステムにはデータ収集メモリを備える必要がある。このメモリは、エラーを観察されたデータサイクルカウントと出力ピンを記録することができるものである。データ収集メモリの別のモードは、装置３００のスキャン出力から読み取った生の（実際の）状態を記録することである。
【００３６】
図４から図９は、被試験装置（ＤＵＴ）のスキャンチェーンを分析するための様々な例の方法４００、５００、６００、７００、８００、９００を示す。これらの方法は、詳細にはスキャンチェーンをホールドタイム障害に関して分析する仕様となっているが、これらの方法を用いてスキャンチェーンを他のタイプの障害に関して分析することもできる。
【００３７】
図４はスキャンチェーンにおいて起こり得るホールドタイム障害の数を判定するための一例としての方法４００を示す。方法４００は、スキャンチェーンがホールドタイム障害分析の対象として適しているかを判定すること（ブロック４０２）を含み、適している場合には、複数のスキャンテストの結果を用いて、スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定すること（ブロック４０４）を含む。起こり得るホールドタイム障害の数を判定する一例としての方法については後述する。
【００３８】
図５は、スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定する一例としての方法５００を示す。方法５００は、スキャンチェーンがホールドタイム障害分析に対する対象として適しているかを判定すること（ブロック５０２）を含む。適している場合には、スキャンチェーンがホールドタイム障害挙動を示した環境変数の値を（環境変数の第１の値として）確認する（ブロック５０４）。次いで環境変数を１つ以上の異なる値に設定し、スキャンチェーンがホールドタイム障害挙動を示すことなく動作する値である環境変数の第２の値が存在するか否かについて判定する（ブロック５０６）。第２の値が存在すると判定した場合には、複数のスキャンテストの結果を用いて、スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定する（ブロック５０８）。複数のスキャンテストは環境変数の第１の値と第２の値を使用して実行される。スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定するための例示の方法について、後述する。
【００３９】
方法５００により変化する環境変数は多様な形態をとることが可能であり、一部の例では供給電圧、温度、若しくはスキャンシフトクロックレートのうちの１つ以上を含み得る。発明者が実験を行ったところ、場合によっては、スキャンチェーン（又は総じてＤＵＴ）の供給電圧を上げる又は下げることで、ホールドタイム問題を引き起こす又はなくすのに十分なスキャンチェーンの内部タイミングを変えることができることが分かった。温度及びスキャンシフトクロックレート（図３のＣＫ速度）も内部タイミングに影響を与える可能性があり、スキャンチェーンの有効な動作に寄与することができる
【００４０】
図６は、図４及び図５に示す方法４００及び方法５００を組み合わせて実行する一例としての方法６００を示す。方法６００は、スキャンチェーンをシフトモードにすることで開始する（ブロック６０２）。その後、環境変数の１つ以上の値のそれぞれに対して（ブロック６０４参照）、方法６００は一連のステップを反復して行う。
【００４１】
ブロック６０６では、スキャンチェーンを通して一定でないシーケンスパターンをシフトし、スキャンチェーンの出力を観察する（ブロック６０８）。「一定でないシーケンスパターン」は、ここでは少なくとも２つの論理状態を含むパターンと定義する。必ずということではないが、好ましくは「一定でないシーケンスパターン」はまた、２つ以上の論理状態の間で頻繁に遷移することを含む。「一定でない」とは、パターンが反復しないという意味ではない。
【００４２】
ブロック６１０において、予測時間に一定でないシーケンスパターンがスキャンチェーンから出力されるかを判定する。出力される場合、スキャンチェーンは環境変数の特定の値において「良」と識別されたことになる（ブロック６１２）。出力されない場合には、方法６００はステップ６１４に進む。ブロック６１４では、スキャンチェーンの出力がトグル出力となっているかを判定する。スキャンチェーンから不測のトグルパターンが出力された場合（即ちブロック６１４の回答がＹＥＳの場合）には、スキャンチェーンはホールドタイム障害分析に適した対象である。スキャンチェーンからフラットラインパターンが出力される場合には、スキャンチェーンを「フラットライン」と判断する（ブロック６１６）。「フラットラインパターン」とは、ここでは１つの論理状態を有する連続的なビットを含むパターンと定義する（例えば全て論理１、又は全て論理０である）。一定でないシーケンスパターンに応答してフラットラインパターンを出力するスキャンチェーンは、（例えば、グランドにショートしているために）遮断されるのが典型的である。
【００４３】
ホールドタイム障害分析は判定ブロック６１８で始まり、スキャンチェーンが環境変数の任意の値において一定でないシーケンスパターンを出力するかを判定することを含む。スキャンチェーンが環境変数の任意の値において一定でないシーケンスパターンを出力しなかった場合には、スキャンチェーンにおいて起こり得るホールドタイム障害の数を、第１の数のスキャンテストの結果に基づいて判定する（ブロック６２０）。一方、スキャンチェーンが一定でないシーケンスパターンを出力する場合には、スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を、第２の数のスキャンテストの結果に基づいて判定する（ブロック６２２；好ましくは、全てのホールドタイム障害の位置を判定する）。第２の数のスキャンテストは、環境変数の第１の値及び第２の値を使用して実行する。
【００４４】
方法４００、方法５００、及び方法６００のステップは単なる例示にすぎず、方法４００、方法５００、方法６００の順列は様々なものが存在する。場合によっては、方法４００、方法５００、方法６００に追加のステップを挿入してもよい。また、同じ場合に又は異なる場合に、ステップを実行する順序を変えることもできる。
【００４５】
図７は方法６００の１つの順列７００を示す。図７では、スキャンチェーンが不測のトグルパターンを出力する（即ちホールドタイム障害分析に適した対象である）場合、スキャンチェーンが環境変数の任意の値において一定でないシーケンスパターンを出力するかに関わらず、スキャンチェーンにおいて起こり得るホールドタイム障害の数を判定する（ブロック７０２）。
【００４６】
起こり得るホールドタイム障害の数又は位置を判定するための一例としての方法を示す前に、「バックグラウンドパターン」の概念を説明する。バックグラウンドパターンは少なくともｎ個の連続的なビットからなるパターンであり、ｎは分析するスキャンチェーンの長さである。ホールドタイム障害が起こり得るスキャンチェーンは、データが変化している際には確実にロードされる又はアンロードされることができないため、さらにはかかるスキャンチェーンの長さは一貫していない可能性が高いため、スキャンチェーンに分析パターン（即ち、スキャンチェーンの出力が観察されるパターンである）をロードする前に、バックグラウンドパターンをスキャンチェーンにロードすることが望ましい。バックグラウンドパターンは未知のデータ遷移のスキャンチェーンをフラッシュするよう作用する。バックグラウンドパターンに従う分析パターンのタイプによって、バックグラウンドパターンは例えば論理１からなる少なくともｎ個の連続したビットである場合もあれば、論理０からなるｎ個の連続したビットである場合もある。場合によっては、バックグラウンドパターンを分析パターンに従わせて、アグレッサビットが分析パターンを破損しないよう保証する場合もある。
【００４７】
バックグラウンドパターンの概念について説明したが、図８はスキャンチェーンにおいて起こり得るホールドタイム障害の数を判定する一例としての方法８００を示す図である。例えば、方法８００は図４、図６、又は図７で示す方法４００、方法６００、方法７００のいずれかを実行した結果として実行してもよい。
【００４８】
方法８００は、スキャンチェーンにおいてホールドタイム障害を生じると思われる値に、スキャンチェーンの環境変数を設定することで開始する（ブロック８０２）。次いで、スキャンチェーンを通るようにパターンをシフトする（ブロック８０４）。パターンは第１論理状態の少なくともｎ個の連続したビットとその後に続く第２論理状態の少なくとも１つのビットからなるバックグラウンドパターンを含む。なお、ｎはスキャンチェーンの長さである。スキャンチェーンを通るようにパターンをシフトしている間又はその後、スキャンチェーンにおいて起こり得るホールドタイム障害の数については、１）少なくとも１つのビットがスキャンチェーンの出力において遷移を生じると予測されるクロックサイクルと、２）少なくとも１つのビットがスキャンチェーンの出力において実際に遷移を生じたクロックサイクルとの差として判定することができる（ブロック８０６）。換言すれば、ホールドタイム障害があればデータが１つ以上のスキャンセルを非常に速く伝播することができるため、方法８００は、「第２の論理状態の少なくとも１つのビット」がスキャンチェーンの出力において遷移を生じる、「速すぎる」クロックサイクルがいくつあるかを判定する。第２論理状態の少なくとも１つのビットが予測の時点で遷移を生じた場合には、スキャンチェーンにはホールドタイム障害がなく、第２論理状態の少なくとも１つのビットが非常に遅くに遷移を生じた場合には、スキャンチェーンにはホールドタイム障害以外の障害がある可能性がある。
【００４９】
第１論理状態のバックグラウンドパターンに続く第２論理状態の少なくとも１つのビットは単一のビットのみを含み得るが、ロバスト性（そして従来のスキャンチェーンのロードプロセスとの適合性）を考慮して、「第２論理状態の少なくとも１つのビット」を第２論理状態の少なくともｎ個の連続したビットとして構成することが好ましい。
【００５０】
方法８００は、前述のように１つの「極性」からなるホールドタイム障害の数（例えば、立上りエッジ若しくは論理０−１障害の数、又は立下りエッジ若しくは論理１−０障害の数）を判定することができる。ただし、方法８００を拡大して、立上りエッジのホールドタイム障害の数と立下りエッジのホールドタイム障害の数を判定できるようにしてもよい。例えば一実施形態では、方法８００によってスキャンチェーンを通るようにシフトしたパターンは、第１論理状態の２ｎ個のビットと、その後に続く第２論理状態の２ｎ個のビットと、その後に続く第１論理状態のｎ個のビットとを含み得る。この実施形態では、スキャンチェーンを通るようにパターンをシフトしている間又はその後に、立上りエッジのホールドタイム障害の数と立下りエッジのホールドタイム障害の数について、１）それぞれのエッジがスキャンチェーンから出力されると予測されるクロックサイクルと、２）それぞれのエッジがスキャンチェーンから実際に出力されたクロックサイクルとの差として判定することができる。スキャンチェーンを通るようにシフトするパターンには第１論理状態の最初の２ｎ個のビットが備わっているが、これはチェーンにホールドタイム障害があればスキャンチェーンの「見掛け上の」長さが変化するが、２ｎ個のビットであれば完全に放出されたスキャンチェーンにより似たものが得られるためである。
【００５１】
起こり得るホールドタイム欠陥の位置を判定するための一例としての方法を開示する前に、環境変数の第１の値と第２の値を判定する一例としての方法について説明する。第１の値はホールドタイム障害挙動がスキャンチェーンにおいて観察される値であり、第２の値はホールドタイム障害挙動がスキャンチェーンにおいて観察されない値である。
【００５２】
場合によっては、環境変数の第１の値と第２の値を単純にユーザから受け付けて判定してもよい。例えばユーザは、コンピュータのユーザインタフェースを介して値を入力することによって、又は電子ファイルに値を保存することによって、値を提供することができる。ユーザは第１の値でスキャンチェーンはホールドタイム障害挙動を示し、第２の値ではホールドタイム障害挙動を示さないという推定又は知識に基づいて値を提供し得る；又は、ユーザは第１の値を「目標値」とすること（又はスキャンチェーンに対する環境変数の正常動作範囲内にあること）に基づいて、そして第２の値をスキャンチェーンに対する環境変数の正常動作範囲外の値とすることに基づいて、値を提供し得る。第２の値は環境変数の正常動作範囲外にあっても、スキャンチェーンにダメージを与えないと予測される範囲内にあることを保証するよう留意すべきである。
【００５３】
別の場合においては、方法６００（図６）等の方法を用いて環境変数の第１の値又は第２の値を識別することができる。即ち、環境変数の複数の値（即ち２つ以上の値）の各々に対して、一定でないシーケンスパターンがスキャンチェーンを通るようにシフトして、一定でないシーケンスパターンが予測時間にスキャンチェーンから出力されるかを判定することができる（ブロック６０６、６０８、６１０、６１４）。スキャンチェーンに不測のトグルパターンを出力させる複数の値（又は目標値、又はスキャンチェーンの正常動作範囲内の値）のうちの１つとして環境変数の第１の値を識別する（ブロック６１８）。環境変数の第２の値については、予測した時間に一定でないシーケンスパターンをスキャンチェーンから出力させる複数の値のうちの１つとして識別する（ブロック６１０）。
【００５４】
一部の実施形態では、ブロック６０４内の方法６００のステップは、目標値より低い値から始まってその後増加する環境変数の値に対して連続的に繰り返す。他の実施形態では、ブロック６０４内のステップは目標値より高い値から始まってその後減少する環境変数の値に対して連続的に繰り返す。いずれの場合も、ブロック６０４内のステップを繰り返す対象の環境変数の値は、ステップサイズによって環境変数の値を段階的に変化させる（又は徐々に変化させる）ことによって判定し得る。ステップサイズは、第１の値及び第２の値が存在するかを判定することが十分にできるよう選択することができる。代替的に、環境変数の値を任意に選択してもよく、又は何の値が良好に機能するかについての知識に基づいて選択してもよい。
【００５５】
方法６００のブロック６０４内のステップを環境変数のそれぞれの値に対して一度ならず反復して、結果が反復することを保証することが好ましい。
【００５６】
環境変数の第１の値又は第２の値を識別する別の方法は、環境変数の異なる値に対して方法８００等の方法を実行することによるものである。第１の値は、スキャンチェーン出力を予測時間（又はクロックサイクル）の前に遷移させる値として識別し、第２の値はスキャンチェーン出力を予測時間に遷移させる値として識別することができる。
【００５７】
環境変数の適切な第１及び第２の値を判定するための様々な方法の例を説明してきたが、図９を参照してスキャンチェーンにおいて起こり得るホールドタイム障害の数を判定する一例としての方法９００を説明する。例えば、方法９００は図５、図６、又は図７で示す方法５００、方法６００、方法７００のいずれかを実行した結果として実行し得る。
【００５８】
方法９００の実行は、スキャンチェーンの環境変数を第１の値と第２の値に交互に設定できると仮定するものであるが、ここで第１の値はスキャンチェーンのホールドタイム障害を生じる値とし、第２の値はスキャンチェーンのホールドタイム障害を生じない値とする。この文脈において、方法９００はスキャンチェーンに少なくとも１つのスキャンパターンをシフトインし、環境変数を第２の値に設定する（ブロック９０２、Ｎはスキャンチェーンにシフトインするスキャンパターンの数とする）ことで開始する。スキャンチェーンにシフトインしたそれぞれのスキャンパターンに対して、特定のスキャンパターンをスキャンチェーンにシフトインした後に（ブロック９０４参照）、環境変数を一時的に第１の値に設定する（ブロック９０６）。環境変数の第１の値において少なくとも一度スキャンチェーンをクロック制御する（ブロック９０８）。その後環境変数を第２の値に戻し、環境変数が第２の値にしたままで特定のスキャンパターンをスキャンチェーンからシフトアウトする（ブロック９１０）。スキャンチェーンからシフトアウトされる各特定のスキャンパターンを、予測スキャンパターンとビット毎に比較し、ビットに違いのある位置を少なくとも１つ識別する（ブロック９１２）。ビットにおける違いを識別する度に、その違いに基づいて起こり得るホールドタイム障害の新たな位置を識別する（ブロック９１４）。
【００５９】
方法９００は環境変数の安全値（即ち第２の値）においてスキャンチェーンからデータをシフトアウトされるため、スキャンチェーンが環境変数の第１の値においてクロック制御される（即ち、スキャンチェーンにおいてホールドタイム障害を生じるとする環境変数の値でクロック制御される）と、欠陥のあるビットは誤転送を示す。好ましくは、バックグラウンドパターンのロードを用いて、スキャンチェーンの出力観察対象の各スキャンパターンをロードする前に、望ましくないデータを含むスキャンチェーンを放出する。
【００６０】
多くの場合、方法９００によってスキャンチェーンを通るようシフトされる１つ以上のパターンは、反復する００１１００１１のパターンのようなチェーンインテグリティパターンに基づくものとすることができる。
【００６１】
方法９００は少なくとも１つの追加のクロックを導入するため、スキャンチェーンが環境変数の第１の値でシフトされると、スキャンチェーンの出力において予測されるスキャンパターンは少なくとも１ビット分減ることになろう。これは、ロードされるパターンの１つ以上の先頭ビットが、通常のアンロードプロセス中ではなく追加クロック中にシフトアウトされるためである。よって、偶数パリティのスキャンチェーンに対して、以下がロードパターンと予想パターンとなる：
ロードパターン００１１００１１
予測パターン０１１００１１。
【００６２】
データ遷移にはホールドタイム障害が発生するものもあれば、発生しないものもあるため、方法９００は、スキャンチェーンが環境変数の第１の値においてクロック制御される際にスキャンチェーンにおける各スキャンセルが論理０−１、論理１−１、論理１−０、そして論理０−０と遷移することを保証するよう構成することができる。一実施形態では、これを達成するにあたり、反復する００１１００１１パターンの異なる位相をスキャンチェーンを通るようシフトし、各フェーズパターンに対して、環境変数の第１の値においてスキャンチェーンを１度のみクロック制御する。より詳細には、異なる位相は以下の通りである：
第１位相：００１１００１１（即ち１６進法３）第２位相：０１１００１１０（即ち１６進法６）
第３位相：１１００１１００（即ち１６進数Ｃ）第４位相：１００１１００１（即ち１６進法９）。
【００６３】
位相の命名規則と適用する順序は重要ではない。
【００６４】
上記例示した位相パターンと偶数パリティスキャンチェーンでは、ロードパターンと予想パターンは以下のようになる：
第１位相のロードパターン：００１１００１１
第１位相の予想パターン：０１１００１１
第２位相のロードパターン：０１１００１１０
第２位相の予想パターン：１１００１１０
第３位相のロードパターン：１１００１１００
第３位相の予想パターン：１００１１００
第４位相のロードパターン：１００１１００１
第４位相の予想パターン：００１１００１。
【００６５】
上記位相パターンは単なる例示にすぎず、他のパターンを使用して、スキャンチェーンが環境変数の第１の値でクロック制御される際に、スキャンチェーンにおける各スキャンセルが論理０−１、論理１−１、論理１−０、論理０−０と遷移することを保証することができる。スキャンセルが全ての可能な論理遷移を起こすように方法９００を構成することによって、方法９００を用いることで、ホールドタイム障害の極性に関わらず、起こり得る全てのホールドタイム障害の位置（１つ又は複数）を判定することが可能となる。
【００６６】
スキャンチェーンにおいて起こり得るホールドタイム障害の数より反復パターンの長さを大きくし、反復パターンのコピーが自ら破損しないようにしなければならないことに留意されたい。
【００６７】
スキャンチェーンを一定でないシーケンスパターンで満たすことによって、ホールドタイム障害の位置を識別する速度は通常増すが、ホールドタイム障害が予測又は検出されるスキャンチェーンの特定の領域に対して短いデータシーケンスを適用することが有用である場合もある。例えばゼロからなるバックグラウンドと単一の最前ベクタを含む１００００１００００パターンの場合、環境変数の第１の値（又は安全でない値）において１つ以上のサイクルの間スキャンチェーンの一領域を通してクロック制御することで、データ感度を検出できる場合もある。
【００６８】
本明細書に示した方法４００、方法５００、方法６００、方法７００、方法８００、方法９００は複数のスキャンチェーンを有するＤＵＴに適用することができる。このような場合、バックグラウンドパターン又は分析パターンと並行して複数の（又は全ての）スキャンチェーンをロードすることができる。しかし、バックグラウンドパターンと共に全てのスキャンチェーンをロードして、分析パターンと共にスキャンチェーンを１つのみロードすることによって、ホールドタイム障害の数又は位置を分離することが必要な場合もある。また、スキャンチェーンの長さが違う場合には、一部のスキャンチェーンを「ドントケア」ビットで事前に又は事後に埋める必要がある場合もある。これらの場合には、典型的に「ドントケア」ビットの状態をバックグラウンドパターンに適合させることが望ましい。
【００６９】
方法５００、方法６００、方法７００、又は方法９００を複数のスキャンチェーンを有するＤＵＴに適用した場合、スキャンチェーンのそれぞれに対して環境変数の「第２の値」（又は安全値）を判定する、又は使用することができる。
【００７０】
本明細書に示した方法４００、方法５００、方法６００、方法７００、方法８００、方法９００は、偶数パリティ又は奇数パリティを有するスキャンチェーンに適用することができる。偶数パリティを有するスキャンチェーンにこれらの方法のいずれかを適用した場合には、方法４００、方法５００、方法６００、方法７００、方法８００、又は方法９００はスキャンチェーンから特定のパターンが出力されるかを判定する際にパターン逆転を生じる場合もある。
【００７１】
前述のように、本明細書に示す方法４００、方法５００、方法６００、方法７００、方法８００、方法９００により、スキャンチェーンにおけるホールドタイム障害の数又は位置を判定することができる。多くの場合、これはＤＵＴのクロック分配システムに存在し得る欠陥のタイプ又は位置を判定することに役立つ。
【００７２】
方法４００、方法５００、方法６００、方法７００、方法８００、方法９００は、それらの実行によって、様々な利点を提供することができる。例えば、特定のＤＵＴに対する特定のテストプログラムを必要とすることなく、標準的な方法でホールドタイム障害の数及び／又は位置を判定する適応性のあるプロセスの一環として、これらの方法を実行することができる。またこれらの方法は、従来のチェーンインテグリティ又は縮退ベクトルを使用するよう構成することで、ホールドタイム障害の診断に特定したベクトルを必要とすることが最少化又は削減される。これらの方法は、実時間分析を提供するよう構成することもできる。
【００７３】
方法６００及び方法７００では実時間判定を行うことができ、方法６００及び方法７００のフローは、スキャンチェーンがホールドタイム障害分析に対して「適しているか」、「フラットラインであるか」、又は「適した対象であるか」という判断に基づいて修正することができる。スキャンチェーンがホールドタイム障害分析に対して適した対象であると思われる際には、目標値とは異なる環境変数の値においてスキャンチェーンが正確に動作するか否かによって、異なるタイプの分析を開始することができる。
【００７４】
方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００はまた、立上りエッジ及び立下りエッジの両方のホールドタイム障害の数及び／又は位置を提供することができるため、かかる障害の原因の判定に役立てることができる。
【００７５】
一部の実施形態では、チェーンインテグリティテストが失敗した際に、又はスキャンチェーンエラーが存在する可能性があるというその他の通知の後に、方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００のうちの１つ以上を自動的に開始させることができる。
【００７６】
本明細書に示す方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００は様々な方法で実行することができ、また一部の実施形態では主にソフトウェア又はファームウェアによって実行することができる。ここでソフトウェア又はファームウェアは、コンピュータ又はテストシステムによって実行される際に、一連のスキャンパターンを１つ以上のスキャンチェーンのスキャン入力及びスキャン出力に適用させ、１つ以上のスキャンチェーンのスキャン入力及びスキャン出力から一連のスキャンパターンの読出しを行わせる命令を含み得る。ソフトウェア又はファームウェアはまた、スキャンイネーブル（ＳＥ）及びスキャンクロック（ＣＫ）入力の値等のスキャンテストに関するその他の変数のみでなく、スキャンチェーンに対する１つ以上の環境変数の値を制御する命令を含み得る。ソフトウェア又はファームウェアはコンピュータ可読媒体に保存してもよい。コンピュータ可読媒体は、例えば、ネットワーク上の単一の位置にある又はネットワーク上に分散した任意の数又は組み合わせの固定若しくはリムーバブル媒体（１つ以上の固定ディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、あるいはコンパクトディスク等）を含み得る。コンピュータ可読媒体はまた、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）のようなプログラム化した回路を含み得る。
【００７７】
方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００はまた、それらがスキャンチェーンのスキャン出力から読み出される（又は予想パターンに関して供給される）際に、スキャンパターンを比較するハードウェアのようなハードウェアを用いて実行され得る。さらなる例として、ハードウェアベースのカウンタを使用して、スキャンパターンがスキャン出力において「早い」遷移又は「遅い」遷移を生じるクロックサイクルがいくつ存在するかを判定することもできる。方法５００、方法６００、方法７００、及び方法９００の使用するハードウェアはまた、パターン制御下で第１電圧と第２電圧との間で切り替えできるパターン制御電源を含み得る。
【００７８】
場合によっては、方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００を実行することによって得られたホールドタイム障害の数又は位置をファイルにセーブすることで、ユーザ又は下流の分析ソフトウェアは後にそれらを読み出す又は解釈することができる。代替的に、方法４００、方法５００、方法６００、方法７００、方法８００、及び方法９００から導出したデータは、テキストフォーマット又はグラフィックフォーマットで直ちにディスプレイすることができる。例えば、障害の数をテキスト形態でディスプレイしたり、影響を受けたスキャンセルのディスプレイ画像に障害の位置をマップしたりすることもできる。
【符号の説明】
【００７９】
３００  被試験装置（回路）
３０２、３０４、３０６、３０８  フリップフロップ
３１０  組み合わせ回路（組み合わせ論理）
３１２  テストシステム
３１４、３１６  スキャンチェーン
【図１】
2011502267.tif 000003
【図２】
2011502267.tif 000004
【図３】
2011502267.tif 000005
【図４】
2011502267.tif 000006
【図５】
2011502267.tif 000007
【図６】
2011502267.tif 000008
【図７】
2011502267.tif 000009
【図８】
2011502267.tif 000010
【図９】
2011502267.tif 000011
【手続補正書】
【提出日】平成22年7月26日(2010.7.26)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１９
【補正方法】変更
【補正の内容】
【請求項１９】
被試験装置のスキャンチェーンを分析する方法であって、
前記スキャンチェーンの環境変数を第１の値に設定し、一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから不測のトグルパターンが出力されるかを判定することと、
前記環境変数を第２の値に設定し、前記一定でないシーケンスパターンが前記スキャンチェーンを通るようにシフトして、前記スキャンチェーンから前記一定でないシーケンスパターンが予測時間に出力されるかを判定することと、
（ｉ）前記スキャンチェーンが、前記環境変数の前記第１の値において不測のトグルパターンを出力する場合、及び（ｉｉ）前記スキャンチェーンが、前記環境変数の前記第２の値において前記一定でないシーケンスパターンを前記予測時間に出力する場合、の両方が生じた場合に、第２の数のスキャンテストの結果に基づいて、前記スキャンチェーンにおいて起こり得る少なくとも１つのホールドタイム障害の位置を判定することと、
を含み、前記環境変数の前記第１の値及び前記第２の値を用いて、前記第２の数のスキャンテストを実行すること、
を特徴とする方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００５
【補正方法】変更
【補正の内容】
【０００５】
スキャンフリップフロップに対する最も一般的な２つの手法は、ＭＵＸＤ手法とＬＳＳＤ手法である。ＭＵＸＤ手法はフリップフロップのＤ入力のフロントエンドにマルチプレクサ（ｍｕｘ）を配置する。スキャンイネーブルとして知られるｍｕｘへのセレクタは、ｍｕｘのミッションモード入力又はスキャンテスト入力を使用すべきか否かを判定する。ＬＳＳＤ手法は、複数の非オーバラップクロックを使用する：そのうちの１つの組は、ミッションデータを伝えるために分離したマスタラッチとスレーブラッチを操作し、他の組は、スキャンシフト操作を生成するために分離したマスタラッチとスレーブラッチを操作するものである。ＬＳＳＤ手法では、全体のスキャンシフト及びサンプル操作を１対のクロックのみ、又はクロックの全てを組み合わせて行なうことができる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
一例としてのテストシステム３１２は、装置３００の構造テスト（スキャンテスト若しくはＤＦＴテストとしても知られている）を実行することができ、場合によっては回路３００の機能テストを実行することもできる。データパターンメモリには、装置３００に与えるテストパターンと、装置３００から読み出されると予測されるデータパターンがロードされている。テストシステム３１２は選択可能なモード、即ち、１）エラーが生じた場合（例えば、出力データ状態が予測するデータ状態とは違う場合）にはいつでもテストを終了するというモード、又は２）全てのパターンセットを完了して観察したエラーのすべてを記録するというモードである。これを達成するために、テストシステムにはデータ収集メモリを備える必要がある。このメモリは、エラーを観察されたデータサイクルカウントと出力ピンを記録することができるものである。データ収集メモリの別のモードは、装置３００のスキャン出力から読み取った生の（実際の）状態を記録することである。
【国際調査報告】
2011502267.tif 000012