(57)【要約】【課題】ＡＴＰＧの試験パターンを表すのに必要なデータ量の増加に対応したＡＴＥ装置を提供する。【解決手段】上記課題は、ＳＥＥＤパラメータ及び対応するＣＯＵＮＴパラメータを含む圧縮されたフォーマットで試験パターンを保存するメモリと、ビットストリームを生成するＬＦＳＲと、前記ＬＦＳＲを制御するロジックであって、個別のＳＥＥＤパラメータに従ってバイナリ値を前記ＬＦＳＲに読み込み、前記ＬＦＳＲを操作して、前記個別のＳＥＥＤパラメータと関連する対応するＣＯＵＮＴパラメータと等しい複数のビットを生成するロジックと、前記ＬＦＳＲから前記回路にビットストリームを印加するロジックとを有することを特徴とするＡＴＥ装置により解決される。【選択図】図１５
2005292126.tif 000002
【特許請求の範囲】
【請求項１】
ＳＥＥＤパラメータ及び対応するＣＯＵＮＴパラメータを含む圧縮されたフォーマットで試験パターンを保存するメモリと、
ビットストリームを生成するＬＦＳＲと、
前記ＬＦＳＲを制御するロジックであって、個別のＳＥＥＤパラメータに従ってバイナリ値を前記ＬＦＳＲに読み込み、前記ＬＦＳＲを操作して、前記個別のＳＥＥＤパラメータと関連する対応するＣＯＵＮＴパラメータと等しい複数のビットを生成するロジックと、
前記ＬＦＳＲから前記回路にビットストリームを印加するロジックと、
を有することを特徴とする回路を試験するＡＴＥ装置。
【請求項２】
前記ＬＦＳＲは、非原始多項式によって特徴付けられていることを特徴とする請求項１記載のＡＴＥ装置。
【請求項３】
前記ＬＦＳＲは、フィードバック及びフィードフォワード接続を含んでいることを特徴とする請求項１または２記載のＡＴＥ装置。
【請求項４】
前記圧縮されたフォーマットで保存されている試験パターンは、前記回路の複数のクロックサイクルにわたって印加される複数の試験パターンをエンコードする少なくとも１つのＳＥＥＤパラメータと個別のＣＯＵＮＴパラメータを含んでいることを特徴とする請求項１から３のいずれかに記載のＡＴＥ装置。
【請求項５】
個別のコードワードを並行してデコードし、ビットのランを生成する複数のデコーダと、
前記ランレングスエンコードされた試験パターン内のコードワードをセグメント化し、セグメント化されたコードワードを前記複数のデコーダに供給するロジックと、
前記複数のデコーダからのランをアセンブルして試験パターンを形成するロジックと、
前記試験パターンを前記回路に印加するロジックと、
を有することを特徴とする回路を試験するＡＴＥ装置。
【請求項６】
前記コードワードは、可変長コードワードであることを特徴とする請求項５記載のＡＴＥ装置。
【請求項７】
前記コードワードは、Ｆｉｂｏｎａｃｃｉコードワードであることを特徴とする請求項６記載のＡＴＥ装置。
【請求項８】
ＡＴＥのメモリ内に圧縮され、ＳＥＥＤパラメータ及び対応するＣＯＵＮＴパラメータを有する試験パターンを保存するステップと、
前記圧縮された試験パターンから個別のＳＥＥＤパラメータを取得するステップと、
前記取得したＳＥＥＤパラメータに従って前記ＡＴＥ内のＬＦＳＲを初期化するステップと、
個別のＣＯＵＮＴパラメータによって定義されている複数のサイクルにわたって前記ＬＦＳＲを操作してビットストリームを生成するステップと、
前記ＡＴＥによって生成された前記ビットストリームを被検回路に印加するステップと、
を有することを特徴とする前記ＡＴＥを操作する方法。
【請求項９】
前記ビットストリームを生成するステップは、前記取得したＳＥＥＤパラメータ及び前記個別のＣＯＵＮＴパラメータから前記被検回路用の複数の試験パターンを生成することを特徴とする請求項８記載の方法。
【請求項１０】
前記ＡＴＥのメモリから試験データを取得する段階を一時的に中断させるステップを更に有する請求項８または９記載の方法。
【請求項１１】
前記試験データの取得ステップを一時的に中断させるステップは、前記被検回路の自己試験回路に関連する遅延に応答して実行されることを特徴とする請求項１０記載の方法。
【請求項１２】
ＡＴＥのメモリ内に、ランレングスエンコードされた試験パターンを保存するステップと、
前記ランレングスエンコードされた試験パターンのコードワードをセグメント化するステップと、
前記セグメント化されたコードワードを前記ＡＴＥの個別のランレングスデコーダに供給して、バイナリシンボルの複数のランを並行して生成するステップと、
前記バイナリシンボルの複数のランをアセンブルしてビットストリームを形成するステップと、
前記ビットストリームを被検回路に印加するステップと、
を有することを特徴とする前記ＡＴＥを操作する方法。
【請求項１３】
前記コードワードは、Ｆｉｂｏｎａｃｃｉコードワードであることを特徴とする請求項１２記載の方法。
【請求項１４】
選択されたランレングスエンコードされた試験パターンは、前記被検回路の自己試験回路に関連して生成される遅延に対応するランレングスコードを含んでいることを特徴とする請求項１２または１３記載の方法。
【請求項１５】
自動試験パターンジェネレータから、ケアビットとドントケアビットを含む回路用の刺激パターンを受信するステップと、
ＬＦＳＲの動作に関連する前記ケアビットの位置によって定義される線形方程式を生成するステップと、
前記線形方程式と前記ケアビットからＳＥＥＤパラメータ及びＣＯＵＮＴパラメータを判定するステップを含む方法であって、
前記パラメータを判定するステップにおいて、それぞれのＳＥＥＤパラメータは、前記ＬＦＳＲ内に読み込まれて前記ケアビットの少なくともサブセットを生成する初期状態の組を定義しており、それぞれのＣＯＵＮＴパラメータは、ケアビットの競合値に対応する前記線形方程式中における線形依存性の場所に関連していることを特徴とする方法。
【請求項１６】
前記ＳＥＥＤパラメータの中の少なくとも１つを前記ＬＦＳＲに印加して、個別のＣＯＵＮＴパラメータによって定義されるいくつかのビットを生成することにより、バイナリ試験データを生成するステップと、
前記バイナリ試験データを障害シミュレータに印加するステップと、
前記バイナリ試験データの周辺カバレージによって刺激される障害を識別するステップと、
前記周辺カバレージによって刺激された前記障害を障害リストから除去するステップと、を更に有する請求項１５記載の方法。
【請求項１７】
段階的に増大する数の刺激パターンを使用して、前記受信ステップ、前記線形方程式を生成するステップ、前記判定ステップ、前記バイナリ試験データを生成するステップ、前記印加ステップ、前記識別ステップ、及び前記除去ステップを反復的に実行するステップを更に有する請求項１６記載の方法。
【請求項１８】
前記判定ステップは、前記線形方程式の中の１つが、前記線形方程式の前のものの線形の組み合わせであるかどうかを判定するステップを含んでいる請求項１５から１７のいずれかに記載の方法。
【請求項１９】
前記線形方程式の中の前記１つが、前記線形方程式の以前に生成された方程式と関連する別のケアビットの値と競合する値を有するケアビットと関連しているかどうかを判定するステップを更に有する請求項１８記載の方法。
【請求項２０】
前記線形方程式の中の前記１つが、競合する値を有するケアビットと関連しているという判定に従って、前記ＣＯＵＮＴパラメータの中の１つの値を設定するステップを更に有する請求項１８または１９記載の方法。
【請求項２１】
前記ＬＦＳＲは、非原始多項式である請求項１５から２０のいずれかに記載の方法。
【請求項２２】
前記ＬＦＳＲは、フィードバック及びフィードフォワード接続を有している請求項１５から２１のいずれかに記載の方法。
【請求項２３】
前記ＬＦＳＲは、少なくとも６４ビットの長さを具備している請求項１５から２２のいずれかに記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ：自動試験装置）と連係したＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ：自動試験パターン生成）の処理に関するものである。
【背景技術】
【０００２】
ＡＴＰＧ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ：自動試験パターン生成）とは、論理パターン又はベクトルを生成するプロセスを意味するものである。試験パターンをロジック（集積回路の一部など）に印加し、内部のスキャンチェーンを使用してロジックの機能を試験することができる。ＡＴＰＧは、一般に、回路のネットリストを調査して障害リストを生成することにより、行われる。障害リストとは、その設計において発生し得る潜在的な障害を記述したものであり、回路内のすべてのノードが含まれている。ブリッジ障害モデル、遷移障害モデル、及びスタックアット（Ｓｔｕｃｋ−ａｔ：縮退）障害モデルなどの様々な障害モデルを使用可能である。スタックアット障害モデルが、最も多く使用されているモデルである。「スタックアット１」とは、特定のノードが常に１であることを意味しており、「スタックアット０」とは、特定のノードが常に０であることを意味している。例えば、スタックアット０障害を対象とする場合には、個々のノードが１に駆動されて（これをセンシタイズ（Ｓｅｎｓｉｔｉｚｅ）とも呼ぶ）観察可能な出力に伝達されるように、パターンを生成することになる。そして、この観察可能な出力に基づいて、ノードが実際に１に駆動されるかどうかを判定する。１に駆動されなければ、スタックアット０障害が存在しているということになる。ノードをセンシタイズして伝達させるには、試験パターンのすべてのビットを指定する必要はない。この指定するビットを「ケア（Ｃａｒｅ）」ビットと呼び、指定しないビットを「ドントケア（Ｄｏｎ’ｔ  ｃａｒｅ）」ビットと呼ぶ。
【０００３】
最近、いくつかの理由から、ＡＴＰＧの試験パターンを表すのに必要なデータ量が大幅に増加している。例えば、新しい障害モデルに伴う複雑さの増大や試験対象回路の高度化のために、試験パターンを表すのに必要とされるデータ量が増大している。このため、試験パターンの回路への印加に使用するＡＴＥ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）のメモリ量を増やすことにより、この試験パターンデータの増大を補償しなければならない。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来は、（例えば、ＤＦＴ（Ｄｅｓｉｇｎ−ｆｏｒ−Ｔｅｓｔ）製品による）オンチップでの試験パターンの圧縮解除及び試験結果の圧縮を実装することにより、この試験パターンデータの増大に対処している。しかしながら、オンチップの圧縮及び圧縮解除は、いくつかの理由から問題である。即ち、第１に、オンチップの圧縮及び圧縮解除には、一定のオーバーヘッドが伴い、この結果、ダイのサイズが増大すると共に、スループットが低下する。更には、このダイのサイズの増大により、結果的に歩留まりが急激に低下することになる（即ち、ダイが大きいほど、不良の確率も大きくなる）。そして、第２の問題点は、オンチップの圧縮及び圧縮解除機能をチップ内に設計すると共に、これをチップのその他の機能部分と同様に適切に検証しなければならないということである。即ち、オンチップの圧縮及び圧縮解除機能は、チップの開発に対して不都合な一定の技術的なリスクをもたらすのである。又、これまで提案されているオンチップ圧縮法の多くは、診断機能に影響を与えると共に、未知の試験応答を良好に処理することができない。
【課題を解決するための手段】
【０００５】
代表的な実施例は、ＡＴＥ（Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）を使用してＡＴＰＧパターンを圧縮及び／又は圧縮解除し、回路の試験を円滑に実行するシステム及び方法に関するものである。又、代表的な実施例においては、既存のオンチップ法において採用されている圧縮及び圧縮解除アルゴリズムとは大幅に異なる圧縮及び圧縮解除アルゴリズムを採用している。例えば、オンチップ法においては、相対的に低レベルの圧縮率を有する試験データを圧縮解除している。具体的には、ケアビット密度が相対的に最小限のものであり、従って、ＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：線形帰還シフトレジスタ）の初期値の検出において線形依存性が発生する確率が相対的に低レベルに維持されている。又、オンチップ圧縮技術においては、ＡＴＰＧツールによって生成されたデータを利用している（即ち、ドントケアビットは指定されない）。指定されない状態にドントケアビットを維持することにより、パターン数が大幅に増えることになる（一般に提供されている商用ツールの場合に通常見られるものの２〜３倍）。これらの要因のそれぞれは、試験時間を増大させる傾向を有している。オンチップ法においては、複数のスキャンチェーンをファンアウトすることにより、この試験時間の増大を防止している。しかしながら、複数のスキャンチェーンのファンアウトは、圧縮解除をＡＴＥ上で実行する場合には、役に立たない。即ち、既存のアルゴリズムを採用してＡＴＥ上で試験データを圧縮解除すれば、被検回路に必要な試験時間量が許容不能なほどに増大することになろう。
【０００６】
代表的な一実施例においては、ＡＴＥアーキテクチャは、ピン単位で試験パターン処理を実行可能な十分な圧縮／圧縮解除リソースを提供している。具体的には、試験パターンを受信又は、結果データを出力する被検回路のそれぞれの関連ピンに、独立した圧縮／圧縮解除機能を関連付けることができる。この結果、個々の回路を試験する際に、圧縮解除及び圧縮をリアルタイムで実行可能である。
【０００７】
代表的な実施例においては、ＬＦＳＲをＡＴＥ上に実装しているため、オンチップ圧縮法とは対照的に、相対的に大きなＬＦＳＲを利用している。代表的な実施例においては、オンチップ法とは対照的に、潜在的に非原始多項式によって特徴付けられる「オーバークロック」ＬＦＳＲのアーキテクチャを利用している。そして、この結果生成されるタップの選択及びＬＦＳＲの長さにおける自由度を使用し、線形依存性確率を大幅に低下させている。従って、代表的な実施例においては、ＡＴＥの動作の際に、相対的に高度に圧縮された試験データをＡＴＥによってリアルタイムで圧縮解除することができる。圧縮された試験データを使用可能にすることにより、試験時間を許容可能なレベルに維持することができる。又、大きなＬＦＳＲにより、カウントビットと関連するオーバーヘッドを無視可能なものにできるため、高圧縮比を得ることができる。
【０００８】
別の代表的な実施例においては、刺激パターンのドントケアビットを反復充填（Ｒｅｐｅａｔ  Ｆｉｌｌ）している（例：ドントケアビットのラン内のそれぞれの連続ビット（複数の連続した発生）に対して、そのランの直前のケアビットの値を割り当てる）。そして、反復充填した後に、例えば、Ｆｉｂｏｎａｃｃｉコードなどの可変長コードワードを使用して、刺激パターンをランレングスエンコードし、高速圧縮解除を可能にしている。具体的には、複数のランレングスデコーダを使用した圧縮解除アーキテクチャを採用して圧縮解除を並行して実行することにより、ＡＴＥと関連する相対的に厳しいタイミング基準を満たしている。
【発明を実施するための最良の形態】
【０００９】
代表的な一実施例においては、後で被検回路を試験する際にＡＴＥ上でリアルタイム圧縮解除するための相対的に圧縮された試験パターンの圧縮を実現するＬＦＳＲの「オーバークロック」アーキテクチャを採用している。図１２に、この「オーバークロック」アーキテクチャの一例が示されており、これについては後程詳述するが、このアーキテクチャは、必ずしも原始的ではない多項式によって特徴付けられる相対的に大きなＬＦＳＲを使用しているという点において、オンチップ法で使用されているＬＦＳＲアーキテクチャとは異なっている。又、代表的な一実施例によるＬＦＳＲは、フィードフォワード及びフィードバックタップを含むことができる。そして、この結果生成されるタップの選択における自由度を使用して、実現可能な圧縮量を制限する傾向を有するＬＦＳＲサイクル間の線形依存性確率を大幅に低下させている。相対的に大量の試験パターンの圧縮を可能にすることにより、代表的な実施例においては、ＡＴＥが回路を試験するのに必要な時間量を許容可能なレベル内に維持している。
【００１０】
別の代表的な実施例においては、刺激パターン内のドンドケアビットのランを反復充填することにより、試験データの圧縮を実行可能である。反復充填を実行した後に、ランレングスエンコーディングを実行する。代表的な一実施例においては、変更されたＦｉｂｏｎａｃｃｉコードにより、バイナリシンボルのランを置換している。この変更されたＦｉｂｏｎａｃｃｉコードによれば、個別のランレングスのデコードを要することなしに、それぞれのコードの開始と終了が識別される。代表的な一実施例は、それぞれのコードを検出するこの能力を使用し、複数のランレングスデコーダを使用して試験データを並行して圧縮解除する。そして、それぞれのランレングスデコーダからの出力ビットをシリアライズすることにより、ＡＴＥによって被検回路に印加される試験データをリアルタイムで圧縮解除するのに十分なビットレートのデータストリームが得ている。
【００１１】
図１は、代表的な実施例によるＡＴＰＧ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｉｏｎ：自動試験パターン生成）とＬＦＳＲ圧縮及びランレングス圧縮の統合を示すフローチャートを示している。まず、段階１０１において、論理又はその他の適切な回路仕様書（例：適切な設計ツールを利用して生成された回路仕様書）から、障害リストを生成する。段階１０２において、試験パターンを定義する。このパターン内のそれぞれのシンボルは、「０」、「１」、及び「Ｘ」という３つの状態の中の１つによって表されている。シンボルが「０」状態を反映している場合には、個々のビットをゼロに設定し、回路設計のロジックに起因するこの刺激パターンに対応する障害を試験しなければならない。同様に、シンボルが「１」状態を反映している場合には、個々のビットを１に設定して、刺激パターンに対応する障害を試験しなければならない。尚、この「０」又は「１」状態に対応するビットをケアビットと呼ぶ。一方、シンボルが「Ｘ」状態を反映している場合には、個々のビットをゼロ又は１に設定し、刺激パターンに対応する障害を試験することができる。この「Ｘ」状態に対応するビットをドントケアビットと呼ぶ。そして、段階１０３において、競合しない刺激パターンを反復的に圧縮する。具体的には、競合値を具備するケアビットを有していない刺激パターンを１つのコンパクト化されたパターンに合成可能である。尚、これらの段階１０１〜１０３は、既存のＡＴＰＧソフトウェアツールに採用されているものなどの既存のアルゴリズムを使用して実行可能である。
【００１２】
段階１０４において、このコンパクト化された刺激パターンを代表的な実施例に従って圧縮する。代表的な一実施例においては、この段階１０４は、ＬＦＳＲアルゴリズムを使用して実行される。具体的には、動作のそれぞれのサイクルごとに、ＬＦＳＲの出力によって線形方程式を定義する。圧縮対象の刺激パターンのケアビットと関連するＬＳＦＲの個々の出力サイクルに対応するように、線形方程式の組を生成する。そして、この線形方程式の組をケアビットの論理値に照らして解くことにより、ＬＦＳＲにケアビットを再生成させることになるＬＦＳＲの初期状態を判定する。
【００１３】
前述のように、代表的な一実施例においては、相対的に大きな長さと非原始多項式を有するＬＦＳＲを採用している。又、このＬＦＳＲは、フィードフォワード及びフィードバックタップを有することができる。タップの選択における自由度を提供することにより、組の中に線形依存する複数の線形方程式が発生する確率を大幅に低下させている。そして、この確率を低下させることにより、高密度のケアビットをエンコードできるようになり、この結果、相対的に高圧縮の試験パターンを圧縮できるようになる。
【００１４】
圧縮は、刺激パターンをブロックに分割することにより、実行可能である。それぞれのブロックごとに、実装されているＬＦＳＲによって定義される線形方程式の組から「ＳＥＥＤ」パラメータと「ＣＯＵＮＴ」パラメータを導出する。これらのＳＥＥＤパラメータ及びＣＯＵＮＴパラメータから個別ブロックのケアビットを再生成可能である。個々のブロックのドントケアビットに対して、ＬＦＳＲの特性に応じて、擬似ランダムベースで値を割り当てる。そして、それぞれのブロックごとに、ＳＥＥＤパラメータ及びＣＯＵＮＴパラメータを判定した後に、刺激パターンを、３シンボル（即ち、０、１、又はＸ）の代わりにバイナリシンボルのみから構成される試験パターンに変換する。尚、このＬＦＳＲアルゴリズムによるパターンデータの圧縮及び圧縮解除の詳細については、後程、更に詳しく説明する。又、大きなＬＦＳＲをＡＴＥ上に実装して圧縮解除を実行可能であることから、ＣＯＵＮＴパラメータに関連するデータが無視可能になることに伴い、高圧縮比を実現できることにも留意されたい。又、メモリの「スロットリング」（これについては、後述する）を実行し、圧縮方式の効率を向上させることも可能である。
【００１５】
別の実施例においては、この段階１０４をランレングスエンコーディングを使用して実行している。この実施例においては、反復充填操作を刺激パターンに適用し、値をドンドケアビットに割り当てる。この割り当てにより、バイナリシンボルからのみ構成される試験パターンが生成される。一実施例においては、それぞれのドントケアビットには、最直前のケアビットの値が割り当てられる。そして、この反復充填操作を実行した後に、それぞれのコードワードの開始と終了を識別する可変長コードワードを使用して、パターンをランレングスエンコードする。後程詳述するように、このようにコードワードを識別することにより、圧縮データを並行して圧縮解除することができる。又、可変ランレングスコードを使用することも可能である。可変長コードによれば、反復カウント命令よりも優れた圧縮比が実現する。又、ランレングスエンコーディングによれば、ＡＴＥとオンチップのＤＦＴ機能間におけるインターフェイスも改善される。具体的には、ＤＦＴ機能がＡＴＥからのビットの組を処理する際には、通常、ＡＴＥにアイドルサイクルが採用されるが、ランレングスエンコーティングを使用すれば、アイドルサイクルをＡＴＥメモリ内に保存する必要がなくなり、ＤＦＴ機能による処理と同時に、これを生成することができる。
【００１６】
段階１０５において、段階１０４によって実行されたドントケアビットに割り当てられた値を具備する圧縮パターンを使用して障害シミュレーションを実行する。そして、これらのパターンによって処理された障害を障害リストから除去する。
【００１７】
障害シミュレーションを実行した後に、予想結果をそれぞれのパターンごとにシミュレートする（段階１０６）。試験パターンを回路に印加した場合、フローティングバス、バスコンテンション、及び／又はこれらに類似のもののために、結果的に生成される回路の論理要素の特定の出力又は状態は不明である。例えば、予想結果には、「０１００１ＸＸＸ１０１ＸＸ」というシーケンスが含まれることになり、ここで、「０」は、試験の結果においてゼロであるべきビットを定義しており、「１」は、試験の結果において１に設定されるべきビットを定義し、「Ｘ」は、試験の結果において１又はゼロに設定され得るビットを表している。マスクデータストリームを定義することにより、この不明の値に対処することができる。具体的には、マスクデータストリームを使用して、未知の状態と関連する受信試験データを既知の値（例：「０」）にマッピング可能である。
【００１８】
段階１０７において、この予想結果及びマスクデータストリームを、例えば、ランレングスエンコーディングを使用して圧縮する。又、固定したウィンドウの複数のサイクルにわたって予想結果を蓄積することにより、結果符号（ｒｅｓｕｌｔ  Ｓｉｇｎａｔｕｒｅ）を構築可能である。これにより、結果符号を生成し、マスクデータストリームを適用した後の同様に蓄積された結果試験データと照らして比較することができる。ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｏｄｅ）又はチェックサムに類似した方法によって、この比較を実行し、特定のウィンドウが合格するか或いは不合格になるかを判定可能である。尚、このマスクデータストリーム及び結果符号に関する更なる詳細については、２００２年１２月３日付けで出願された「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＴＥＳＴＩＮＧ  ＣＩＲＣＵＩＴＲＹ  ＵＳＩＮＧ  ＡＮ  ＥＸＴＥＲＮＡＬＬＹ  ＧＥＮＥＲＡＴＥＤ  ＳＩＧＮＡＴＵＲＥ」という名称の米国特許第１０／３０８，３２３号明細書に記載されており、この内容は、本引用によって本明細書に包含される。
【００１９】
段階１０８において、後続のＡＴＥを使用した回路の試験を円滑に実行するべく、これらの圧縮パターン、圧縮予想結果、及び結果符号を適切なフォーマットで保存する。
【００２０】
既存のＬＦＳＲは、通常、図２に示されているように、接続されたフリップフロップの組２００を使用してハードウェアとして実装されている。そして、ＬＦＳＲの動作の際には、それぞれのフリップフロップの値が次の隣接するフロップフロップに供給され、ＸＯＲ演算がそれぞれのフィードバックタップごとに実行される。内部及び外部ＬＦＳＲなどのその他の実装を採用することも可能である。ＬＦＳＲの出力値は、通常、最後のフリップフロップの値である。一般に、ＬＦＳＲは、その長さ「ｎ」と、フィードバックタップ及びその場所を表すサイズ「ｎ」の多項式ベクトルによって特徴付けられる。そして、動作の際に、ＬＦＳＲは、その長さとその特徴を示す多項式によって定義されるビットストリームを生成する。このビットストリームは周期的である、即ち、ＬＦＳＲを継続的に動作させることによって、１つの固有のパターンを反復させる。この固有のパターン（擬似ランダムパターンと呼ぶ）の長さは、その特徴を示す多項式として、原始多項式（因数分解不能な多項式）を選択することによって極大化される。又、ＬＦＳＲを初期化する際には、フリップフロップを個々の論理状態に初期化することも可能である。この論理状態を初期化するのに使用されるビットパターンを「ＳＥＥＤ」と呼ぶ。
【００２１】
既存のオンチップ圧縮解除法においては、ＬＦＳＲを使用し、回路試験のためにスキャンチェーンに印加するための単一の試験パターンを単一のＳＥＥＤ値から生成している。具体的には、通常、ＬＦＳＲ内に読み込んだ際に、所与の刺激パターンのケアビットを再生成するビットストリームをＬＦＳＲに生成させることになるＳＥＥＤ値を見出すことが可能である。ドンドケアビットの値には、ＬＦＳＲの擬似ランダム特性に従って値を割り当てる。ＬＦＳＲの既存の実装は、すべてのパターンをＬＦＳＲによって生成可能でなければならないという制約を有している。この制約の例として、いくつかのオーバーヘッドビットを使用して線形依存性を防止することや、パターンの圧縮量を制限してケアビット／ドントケアビットの比率を制限することが含まれる。そして、この既存のオンチップ圧縮解除ＬＦＳＲによってもたらされる制約により、試験時間が潜在的に増大することになる。尚、オンチップ圧縮の場合には、複数のスキャンチェーンにファンアウトすることにより、この潜在的な試験時間の増大を防止している。しかしながら、この方法は、圧縮をＡＴＥ上で実装する場合には、機能せず、この結果、まだ解決されていない新しい問題が提起されることになる。
【００２２】
前述のように、ＬＦＳＲのオーバークロックアーキテクチャを使用すれば、線形依存性の確率が大幅に低下し、この結果、圧縮量が増大することになる。又、代表的な実施例においては、既存のＬＦＳＲアルゴリズムとは大幅に異なるＬＦＳＲ圧縮アルゴリズムを採用している。代表的な一実施例によるＬＦＳＲ圧縮においては、競合する論理ビット値を有していない線形依存性の試験サイクルと、線形独立性の試験サイクルの試験データを生成し、これにより、圧縮比を向上させている。
【００２３】
図３は、代表的な実施例に従ってＬＦＳＲによって圧縮解除用のパターンデータを圧縮するフローチャートを示している。段階３０１において、行列内に、ＬＦＳＲによって定義される線形方程式を含めることにより、行列を生成する。この行列に使用される方程式は、パターンデータのケアビットの位置に対応するＬＦＳＲの出力サイクルによって定義されている。段階３０２において、ＬＦＳＲによってケアビットが再生成されるように、個別のケアビットの値に照らしてこの行列を解き、ＬＦＳＲのフリップフロップの初期値を定義するＳＥＥＤパラメータを判定するべく試みる。この行列を解く試みには、Ｇａｕｓｓｉａｎ消去法又はＧａｕｓｓ−Ｊｏｒｄａｎ消去法を利用可能である。そして、この行列を解く試みに基づき、単一のＳＥＥＤパラメータを使用してエンコード可能な最大数のケアビットが既に判定されているかどうかに関する論理判定を実行する（段階３０３）。この最大数のケアビットは、競合する論理値を有するケアビットに関連する線形方程式中における線形依存性の発生によって判定される。そして、最大数のケアビットが、まだ判定されていない場合には、プロセスフローは、段階３０１に戻り、異なる数のケアビットに対応する異なる数の方程式を使用して行列を生成する。一方、最大数のビットが既に識別されている場合には、プロセスフローは、段階３０３から段階３０４に進む。そして、段階３０４において、この最大数のケアビットに関連する刺激データのブロックを、行列を解くことによって判定されたＳＥＥＤパラメータとブロックの長さを定義するＣＯＵＮＴパラメータによって表現する。又、図３に示されているサーチプロセスをバイナリサーチを使用して促進することも可能であろう。
【００２４】
図４は、行列の逆転を必要としないＬＦＳＲによって圧縮解除用のパターンデータを圧縮する別のフローチャートを示している。段階４０１において、ＣＯＵＮＴパラメータを増加する。段階４０２において、１つの刺激パターン又は刺激パターンの組の中の次のビットを選択する。段階４０３において、その選択したビットがケアビットであるかどうかを判定するべく論理判定を実行する。そして、ケアビットでない場合には、このプロセスは、段階４０１に戻る。具体的には、選択したビットがドントケアビットであった場合には、単純にＣＯＵＮＴパラメータを増加させることにより、現在のＳＥＥＤパラメータを使用して、ドントケアビットをエンコード可能である。
【００２５】
一方、選択されたビットがケアビットであった場合には、プロセスフローは、段階４０３から段階４０４に進む。段階４０４において、ＬＦＳＲの特徴を示す多項式によって定義されているように、個別のＬＦＳＲサイクルごとに、方程式を生成する。そして、段階４０５において、その生成した方程式が以前に生成された方程式に線形依存しているかどうかを判定するべく論理判定を実行する（線形依存性とは、１つ又は複数の以前に生成された方程式に線形依存する生成方程式の発生を意味している）。そして、その生成された方程式が、以前に生成された方程式に線形依存していない場合には、プロセスフローは、段階４０５から段階４０６に進む。そして、段階４０６において、その新しく生成された方程式に基づいて、ＳＥＥＤパラメータを精製する。具体的には、その生成された方程式が線形独立である場合には、現在選択されているケアビットと前のケアビットを生成するＳＥＥＤパラメータを判定可能であることが知られている。プロセスフローは、段階４０６から段階４０１に戻る。
【００２６】
一方、その生成された方程式が線形依存していると判定された場合には、プロセスフローは、段階４０５から段階４０７に進むことになる。段階４０７において、ＣＯＵＮＴパラメータを増加することにより、現在のＳＥＥＤパラメータを使用して、その対応するサイクルについて、現在のケアビットがＬＦＳＲの出力と競合しているかどうかを判定するべく論理判定を実行する。そして、その選択されたケアビットが競合していない場合には、プロセスフローは、段階４０１に戻る。競合を有していない線形依存性の試験サイクルと、独立性の試験サイクルをＳＥＥＤ及びＣＯＵＮＴパラメータの単一のペアにエンコードすることにより、回路の複数のクロックサイクルにわたって回路に印加するべく、複数の試験パターンをエンコードすることができる。一方、その選択されたケアビットが競合している場合には、プロセスフローは、段階４０７から段階４０８に進むことになる。具体的には、その生成された方程式が線形依存しており、対応するケアビットが競合しているため、更なる圧縮を実現することはできない。このため、現在選択されているケアビットまでの刺激データの部分を現在のＳＥＥＤ及びＣＯＵＮＴパラメータを使用してエンコードする。
【００２７】
図４のプロセスプローは、図３のプロセスフローよりも効率的に実行可能である。即ち、Ｇａｕｓｓｉａｎ消去法及びＧａｕｓｓ−Ｊｏｒｄａｎ消去法の場合には、更なるケアビットに遭遇するたびに行列の逆転が必要となる。行列の逆転は、相対的にプロセッサ集約的なタスクである。一方、図４のプロセスフローの場合には、現在のＬＦＳＲサイクルの方程式が線形依存しているかどうかの判定が必要であるが、これは、行列の逆転と比べて、格段にプロセッサ集約性の低いタスクである。従って、図３のプロセスフローを使用して圧縮するのに数時間を要する刺激パターンの組も、図４のプロセスフローを使用して圧縮した場合には、所要時間は、わずかに数分である。
【００２８】
図５は、代表的な実施例によるランレングスエンコーディングを使用してパターン圧縮を実行するフローチャートを示している。段階５０１において、複数のケアビット及びドントケアビットを含む刺激パターンを受信する。刺激パターンは、通常、ドンドケアビットの数よりも比較的少ない数のケアビットを有しているため、刺激パターンがドントケアビットの複数のランを含んでいることが非常に多い。尚、ランとは、同じ値の連続した発生シーケンスのことである。段階５０２において、ドントケアビットの個別のランの中のそれぞれのビットに対して同一の値を割り当てる。代表的な実施例においては、ドントケアビットのそれぞれのランを、そのドントケアビットのランの直前のケアビットの値などの同一値によって置換する。又、隔離されているドントケアビット（個別のケアビットが前後に存在する単一のドントケアビット）には、直前のケアビットの値が割り当てられる。例えば、「０１００１ＸＸＸ０Ｘ０Ｘ０１１０１」という刺激パターンを処理して、「０１００１１１１０００００１１０１」というバイナリビットを形成することができる。このように刺激パターンを処理することを「反復充填（Ｒｅｐｅａｔ−ｆｉｌｌｉｎｇ）」と呼び、これは、現在既存のＥＤＡ／ＡＴＰＧソフトウェアツールによって実行されているものである。既存のソフトウェアツールは、電力損失を極小化する目的で、反復充填を実行し、試験パターン内のバイナリ遷移の数を極小化している。この実施例においては、既存のＥＤＡ／ＡＴＰＧソフトウェアツールに変更を加えることなしに、試験パターンの圧縮及び圧縮解除を実行可能である。
【００２９】
段階５０３において、反復充填されたバイナリストリーム内のバイナリシンボルのそれぞれのランを、例えば、交番位相及び可変長コードワードを使用して、ランレングスエンコードする。バイナリランレングスエンコーディングとは、同一バイナリ値が連続的に発生するランを、そのランの長さを表すコードワードによって置換するバイナリストリームのエンコーディングを意味するものである。例えば、１２個の「ゼロ」のランは、１２のランレングスを表すコードワードによって置換可能であろう。尚、バイナリのランレングスエンコーディング方式においては、ラン内で反復される特定のバイナリ値（「ゼロ」又は「１」）を定義する必要はない。具体的にはこれは、それぞれのランの後に、必然的に反対の値が続いているからである（即ち、このエンコーディング方式が適切に定義されておれば、「ゼロ」のランの後には、少なくとも１つの「１」が常に続いており、「１」のランの後には、少なくとも１つの「ゼロ」が常に続いている）。従って、ランレングスエンコードされた試験パターン内のバイナリシンボルの最初の発生を定義し、この試験パターンの第１のバイナリシンボルとの関係で「ゼロ」及び「１」の間で交互に変化させることにより、ランレングスコードのシンボルのすべてを判定可能である。代表的な実施例においては、可変長コードワードを使用し、反復充填された試験パターンをランレングスエンコードしている。
【００３０】
代表的な一実施例においては、Ｆｉｂｏｎａｃｃｉコードを採用し、パラレル圧縮解除アーキテクチャを実装している。Ｆｉｂｏｎａｃｃｉコードは、それぞれの値が以前の２つの値の合計になっているＦｉｂｏｎａｃｃｉ数列に基づくものである。Ｆｉｂｏｎａｃｃｉコードは、２つの連続したバイナリ「１」を含んでいない。又、Ｆｉｂｏｎａｃｃｉコードは、いずれも値「１」から始まっている。ビットストリームの開始を２つの「１」を使用して始めることができる。又、追加の「１」は、ビットストリーム内のそれぞれのＦｉｂｏｎａｃｃｉコードの最上位ビット（ＭＳＢ）に追加する。これらの特性を使用すれば、Ｆｉｂｏｎａｃｃｉエンコードされたビットストリーム内の２つの連続する「１」の発生を検出することにより、それぞれのＦｉｂｏｎａｃｃｉコードの開始と終了を識別可能である（即ち、コードワードをデコードする必要がない）。又、個々のＦｉｂｏｎａｃｃｉコードの検出には、その表している値の抽出も不要であることに留意されたい。
【００３１】
図６及び図７を参照し、この交番位相ランレングスエンコーディング及びＦｉｂｏｎａｃｃｉコードについて説明する。図６は、バイナリ値の複数のランを含むビットストリーム６００を示している。具体的には、ビットストリーム６００は、２つの「０」のラン、単一の「１」のラン、４つの「０」のラン、７つの「１」のラン、３つの「０」のラン、１５個の「１」のラン、及び７つの「０」のランを含んでいる。図７は、Ｆｉｂｏｎａｃｃｉエンコードされたビットストリーム７００を表しており、それぞれのランレングス（２、１、４、７、３、１５、及び７）は、コードのＭＳＢビットに追加された追加の「１」を具備する対応するＦｉｂｏｎａｃｃｉコードによって表されている。それぞれのＦｉｂｏｎａｃｃｉコードの開始及び終了点は、それぞれが２つの連続した「１」の発生と関連しているシンボル７０１、７０２、７０３、７０４、７０５、７０６、及び７０７を参照することによって判定可能である。それぞれのＦｉｂｏｎａｃｃｉコード＞１の終了点は、「０１１」の存在により、即座に検出される（シンボル７０１、７０３、７０４、７０５、７０６、及び７０７）。Ｆｉｂｏｎａｃｃｈｉコード＝１の終了点は、「１１」によって得られる。このＦｉｂｏｎａｃｃｉコードの終了点は、最直前のＦｉｂｏｎａｃｃｉコード＞１の終了点を使用して検出される。このように圧縮試験パターンを表せば、図８のパラレルＦｉｂｏｎａｃｃｉデコーダアーキテクチャ８００を採用して圧縮試験パターンを並行してランレングスデコードすることにより、ＡＴＥの相対的に厳しいタイミング基準をサポートすることができる。
【００３２】
別の代表的な実施例においては、図７に関連して上記で説明した可変長Ｆｉｂｏｎａｃｃｉコードを利用して、ＬＦＳＲ圧縮から生成されたＣＯＵＮＴパラメータをエンコードしている。具体的には、通常のバイナリフォーマットのＣＯＵＮＴパラメータを、同一値を表すＦｉｂｏｎａｃｃｉコードによって置換する。同様に、図６及び図７に関連して上記で説明したＦｉｂｏｎａｃｃｉコードを使用して、ＡＴＥにより、結果マスクデータをランレングスエンコード及びパラレルデコード可能である。尚、以上においては、代表的な一実施例において、Ｆｉｂｏｎａｃｃｉコードについて説明したが、圧縮解除ハードウェアの実装は、個々のアプリケーションに関連する周波数要件に応じて、その他の可変長コードワードに基づいたものであってもよい。
【００３３】
図９は、代表的な一実施例によって試験パターンデータを圧縮するフローチャートを示している。段階９０１において、ドントケアビットに値を割り当てずに、設定された数のパターンをＡＴＰＧツールから受信する。段階９０２において、代表的な実施例に従って、ＬＦＳＲ圧縮を使用し、この設定された数のパターンを圧縮する。具体的には、線形依存性の場所においてケアビットの競合値を有する線形依存性を有していない試験データストリングのＳＥＥＤパラメータ及びＣＯＵＮＴパラメータを生成する。次いで、段階９０３において、この圧縮パターンを個別のＬＦＳＲを使用して圧縮解除し、個別のＳＥＥＤ及びＣＯＵＮＴパラメータを使用してＬＦＳＲによってドントケアビットに割り当てられる値を判定する。段階９０４において、この圧縮解除（伸張）したパターンを障害シミュレーションツールに供給する。段階９０５において、障害シミュレーションツールから、圧縮解除パターンの周辺カバレージを判定する。具体的には、ドントケアビットに対する値の擬似ランダム割り当てによって刺激される状態を識別する。段階９０６において、設定された数のパターンを必要に応じて増やすことができる。初期段階においては、相対的に小さな数のパターン（例：１０パターン）を圧縮可能である。そして、単一の処理段階において格段に大きな数のパターン（例：１００）が圧縮されるまで、この設定された数のパターンをプロセスフローにおいて定期的に増やすことができる。段階９０７において、すべての障害を圧縮パターンを使用して刺激したかどうかを判定するべく論理判定を実行する。そして、まだ完了していない場合には、プロセスフローは、段階９０１に戻り、パターン数を増やして更なる設定数のパターンをＡＴＰＧから受信する。一方、すべての障害の刺激が完了している場合には、プロセスフローは、段階９０８に進むことになる。そして、段階９０８において、リバース障害シミュレーション及びパターンの整理を行って、パターンを除去するべく試みる。
【００３４】
圧縮プロセスにおいてパターン数を増やすことにより、代表的な実施例は、いくつかの利点を提供している。例えば、障害を「容易に検出可能」な障害と「困難」な障害に区分することができる。容易に検出可能な障害は、相対的に多数のパターンによって刺激可能である。この結果、代表的な実施例に従って試験パターンの圧縮を行った場合、相対的に少数のパターンにおいて、圧縮解除されたパターンの周辺カバレージが生じる可能性が高い。しかしながら、いくつかのパターンを処理した時点で、容易に検出可能な障害の大部分が既にカバーされており、従って、周辺カバレージの量は、処理済みのパターンの数に比例して減少する。このため、パターンの設定数を増やすことにより、圧縮、圧縮解除、及び障害シミュレーションに関連するプロセッサ集約的なタスクを減らすことができる。
【００３５】
前述のように、代表的な一実施例においては、ＳＥＥＤ及びＣＯＵＮＴパラメータの単一のペアを使用するＬＦＳＲエンコーディングは、ケアビットの値が前の方程式に関連するケアビットの値と競合する１つ又は複数のＬＦＳＲの前の方程式に線形依存するＬＦＳＲ方程式に関連するケアビットの発生によって制限されている。代表的な一実施例においては、ケアビットの線形依存性の発生確率を減少させることにより、この制限に対処している。具体的には、オーバークロックアーキテクチャを使用して線形依存性の確率を減少させている。
【００３６】
図１０は、フィードバックタップを有する４ビットＬＦＳＲ１０００を示しており、図１１は、ＬＦＳＲ１０００から導出可能な「２倍」のオーバークロックを有する４ビットＬＦＳＲ１１００を示している。このＬＦＳＲ１１００のオーバークロック特性のために、ＬＳＦＲ１１００は、フィードフォワード及びフィードバックタップを含んでいる。ＬＦＳＲ１１００の場合には、オーバークロックを採用しているため、ＬＦＳＲリシーディングを使用して試験データを圧縮する際に線形依存性が発生する確率は、ＬＦＳＲ１０００と比べて低くなっている。
【００３７】
正式な合成法を採用して、任意のＬＦＳＲからオーバークロックアーキテクチャを導出可能である。具体的には、ＬＦＳＲの特徴を示す多項式を判定する。この特徴を示す多項式は、図１０からわかるように、ＬＦＳＲ１０００の場合には、「１１００」である。この特徴を示す多項式を使用して、正方遷移行列を定義する。ＬＦＳＲ１０００の場合には、例えば、正方遷移行列１２００が図１２に示されている。この正方遷移行列の底部行（行１２０１として示されているもの）は、ＬＦＳＲ１０００の特徴を示す多項式である。最後の値を除いて、第１列（１２０２として示されているもの）は、ゼロによって充填されている。そして、残りの値（１２０３として示されているもの）は、正方対角行列を使用して充填される。
【００３８】
この正方遷移行列を、所望のオーバークロックレベルによって定義される次数に累乗する。例えば、図１３は、行列１２００を二乗することによって導出された行列１３００を示している。この行列１３００は、フィードフォワード及びフィードバック接続を定義している。具体的には、この行列のそれぞれの要素ｉ、ｊは、ＬＦＳＲのｉ番目のフリップフロップとＬＦＳＲのｊ番目のフリップフロップ間に接続が存在するかどうかを定義している。複数のフィードバック及び／又はフィードフォワード接続を有する要素の場合には、ＸＯＲゲートを使用する。この行列１３００により、結果的に、図１４のＬＦＳＲ１４００に示されている接続が生成される。尚、このＬＦＳＲ１４００のトポロジーは、フリップフロップの位置を整理して単純化することにより、結果的に図１１に示されているＬＦＳＲ１１００を生成可能である。
【００３９】
このオーバークロックＬＦＳＲを設計するための合成法を使用すれば、ハードウェアの制約下において、所望のあらゆる長さのＬＦＳＲ及びあらゆるレベルのオーバークロックを実現可能である。代表的な一実施例においては、１０倍のオーバークロックを有する６４ビット及び１２８ビットの長さのＬＦＳＲを使用することにより、ＬＦＳＲに基づいた試験パターンデータの圧縮の際に線形依存性が発生する確率を低下させている。
【００４０】
図１５は、代表的な一実施例によるＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）システム１５００を示している。ＡＴＥ１５１０は、試験パターンをリアルタイムで被検回路１５０７に印加し、この回路１５０７の機能を検証する。このＡＴＥ１５１０は、ワークステーション１５０１又は別の好適なコンピュータシステムに通信可能に接続することができる。ワークステーション１５０１は、代表的な実施例による自動試験パターン処理を定義する適切な実行可能命令又はコード（ＡＴＰＧ処理ロジック１５１１として示されているもの）を含むことができる。ワークステーション１５０１は、このＡＴＰＧ処理ロジック１５１１によって生成された圧縮試験パターンデータ、圧縮マスクデータ、及び予想される結果符号をＡＴＥ１５１０のメモリ１５０３にダウンロード可能である。又、ＡＴＥ１５１０は、必要に応じて、試験結果データをワークステーション１５０１に伝達し、試験データの後処理を円滑に実行することもできる。
【００４１】
ＡＴＥ１５１０の動作の際には、制御ロジック１５０２は、メモリ１５０３から適切な圧縮パターンを取得し、この圧縮パターンを圧縮解除／アセンブリロジック１５０５に供給可能である。圧縮解除／パターンアセンブリロジック１５０５には、ＳＥＥＤ及びＣＯＵＮＴパラメータに従って試験パターンを圧縮解除するＬＦＳＲを含むことができる。このＬＦＳＲは、非原始多項式によって特徴付けられた相対的に多数のフロップフロップを使用して実装可能である。又、このＬＦＳＲには、フードフォワード及びフィードバックタップを含むこともできる。このようにＬＦＳＲを実装することにより、相対的に高圧縮の試験パターンを被検回路１５０７に対して印加可能である。
【００４２】
更に（又は、この代わりに）、圧縮解除／パターンアセンブリロジック１５０５は、ランレングスエンコーディング方式に従って圧縮解除を実行可能である。例えば、Ｆｉｂｏｎａｃｃｉコードをセグメント化した後に、並行してデコードすることができる。コードワードを並行してデコードすることにより、被検回路１５０７に対する試験データのリアルタイムの印加をサポートするのに十分な高データレートを実現可能である。例えば、パラレルＦｉｂｏｎａｃｃｉデコーダからのデータをシリアライズ又はアセンブルすることにより、ＡＴＥ１５１０は、１ＧＨｚ以上のビットレートで試験データを供給できるようになり、回路のリアルタイム試験が可能となる。
【００４３】
圧縮解除された試験データは、圧縮解除／パターンアセンブリロジック１５０５からパターン印加ロジック１５０６に供給される。パターン印加ロジック１５０６は、この試験データを被検回路１５０７の適切なピン又はその他の接続に対して供給する。又、パターン印加ロジック１５０６は、被検回路１５０７からの結果データの読み出しも実行する。この結果データは、結果ロジック１５０４に供給される。結果ロジック１５０４は、この結果データに対してデータマスクを適用する。このデータマスクは、Ｆｉｂｏｎａｃｃｉコードのパラレルデコーディングを実行することにより、圧縮解除可能である。結果ロジック１５０４は、このマスクされた結果データを複数サイクルのウィンドウにわたって蓄積し、結果署名を形成する。そして、この算出した結果署名を予想結果署名と比較する。そして、結果署名が一致しない場合には、ワークステーション１５０１によって後処理するべく、その誤ったウィンドウの結果データのすべてをメモリ１５０３内に保存する。尚、これとは対照的に、オンチップ圧縮法の場合には、誤ったサイクルを直接的に識別することは不可能である。この種の技法においては、すべての試験応答を記録できるように、圧縮することなしに、その誤った試験を再実行することになる。代表的な実施例においては、このような追加の試験が不要であり、この結果、オンチップ圧縮解除法よりも効率的な方式で回路試験を実行可能である。尚、コンパクタツリーに基づいたオンチップ出力圧縮法の場合には、この問題は発生しない。
【００４４】
図１６は、代表的な一実施例によるＡＴＥメモリ１６０３からの試験データの取得を制御するための「スロットル」機能を使用するＡＴＥ１６００を示している。具体的には、試験プロセッサ１６０１は、拡張して被検チップ１６０６に伝達するべく、ＡＴＥメモリ１６０３から試験データ１６０４を取得する。試験プロセッサ１６０１のスロットルロジック１６０２は、この試験データ１６０４の伝達を、適切な時点において、一時的に中断する。具体的には、スロットル信号１６０５をＡＴＥメモリコントローラに伝達することにより、試験データ１６０４の伝達を中断させる。ＡＴＥ１６００の動作の際にＡＴＥメモリからのデータのダウンロードを中断するこの機能は、多くの状況において有利である。
【００４５】
特に、オンチップ圧縮解除と組み合わせてＡＴＥを使用する場合によく発生する問題点は、ビットの組をオンチップ圧縮解除する際に、ＡＴＥからのデータストリームを停止できないという事実にある。このため、理論的には高圧縮比をオンチップで実現可能であるにも拘らず、ＡＴＥを停止できないことから、実際は圧縮比が制限されることになる。アイドルサイクルをＡＴＥメモリ１６０３内に保存することにより、このＡＴＥの動作を中断できないという問題点に対処することはできよう。しかしながら、アイドルサイクルの保存を要することにより、圧縮方式の有効性が低下することになる。例えば、ＳＥＥＤパラメータとＣＯＵＮＴパラメータの単一の組み合わせは、２０４８ビットに（ＬＦＳＲの実装に応じては、これ以上に）拡張される可能性があろう。オンチップ圧縮解除の場合には、この組み合わせにより、結果的に多数のアイドルデータビットがメモリから取得されることになろう。一方、これとは対照的に、いくつかの代表的な実施例においては、ＬＦＳＲ拡張の際に「スロットル」機能を採用可能である。具体的には、このスロットル動作においては、代表的な実施例は、その他の動作が発生している際には、メモリからの試験データの取得を中断する。そして、このようにすることにより、ＡＴＥメモリ１６０３内に保存するデータ量を削減している。
【００４６】
又、このスロットル機能は、その他の状況においても使用可能である。例えば、被検チップ１６０６内に存在するＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ  Ｓｅｌｆ−Ｔｅｓｔ：組み込み型自己試験）回路１６０７は、いくつかの動作の際に遅延を引き起こす可能性がある。このような際には、有用な試験データが、ＡＴＥと被検チップ１６０６間で伝達されなくなる。前述のように、ＡＴＥの設計に起因し、被検チップ１６０６へのビットの伝達を停止することは不可能である。即ち、これらのビットは、試験のために使用されないにも拘らず、インターフェイスを通じてチップに伝達され続けられることになるのである。アイドルビットをＡＴＥメモリ内に保存することにより、このような状況に対処することはできよう。これは、メモリ試験の場合によく発生する問題である。代表的な実施例においては、スロットル機能を使用することにより、このようなアイドルビットのＡＴＥメモリ１６０３への保存を不要にしている。
【００４７】
尚、従来の反復カウント命令（複数のサイクルにわたって値の反復を命令するもの）を使用することにより、ＡＴＥメモリに保存するアイドルサイクルの数を削減可能であることに留意されたい。しかしながら、ランレングス圧縮法の場合には、より精細なランレングスの刻みと、ランレングス当たり更に小さなオーバーヘッドを実現可能であり、この結果、相対的に高い圧縮比が実現する。
【００４８】
図１７は、代表的な一実施例に従ってＢＩＳＴ遅延及びその他の類似の状況に対処しているＡＴＥ１７００を示している。図１７に示されているように、試験データ１７０１がＡＴＥメモリ１６０３から試験プロセッサ１６０１に伝達される。試験プロセッサ１６０１は、この受信したデータを拡張し、この拡張したデータを被検チップ１６０６に伝達する。尚、この説明のために、この被検チップ１６０６には、所定の時点でＮ秒の遅延を引き起こすＢＩＳＴ回路１６０７が採用されているものと仮定する。試験データ１７０１をランレングスエンコードして、この遅延に対処する。具体的には、１つ又は複数のランレングスコードを試験データ１７０１内に配置することにより、Ｎ秒の遅延に対応する十分な量の圧縮解除されたデータを生成可能である。ランレングスコードを使用してこのような遅延に対処することにより、アイドルサイクルを使用する場合に比べ、大きな圧縮性能が実現することになる。
【００４９】
図１８は、グループ単位の反復処理を採用したＡＴＥサブシステム１８００を示している。具体的には、個別のピンに印加する試験データをグループ単位反復ロジック１８０１によって受信する。グループ単位反復ロジック１８０１は、試験データを複数のチャネルにわたって反復させる共有リソースである。例えば、チャネル１、２、３、及び４に関連するピンに対して印加するビットパターン「０００１」を複数回反復する場合には、グループ単位反復ロジック１８０１によって反復カウント命令を印加し、ビットパターンの最初の発生を複数のサイクルにわたって反復させることができよう。但し、このような共有リソースアーキテクチャに伴う問題点は、複数のチャネルにわたる試験データの依存性にある。即ち、「０００１」のビットパターンの後に、「１００１」のビットパターンが発生すると、１つのビットの変化のために、反復カウント命令を使用することができない。
【００５０】
図１９は、代表的な一実施例に従って、ピン単位の処理の実行を実現するＡＴＥサブシステム１９００を示している。ピン単位の処理においては、試験データを受信する被検回路のそれぞれの関連ピンごとに圧縮解除機能を採用している。図１９に示されているように、複数の圧縮解除エンジン１９０１−１〜１９０１−Ｎが提供されている。それぞれの圧縮解除エンジン１９０１は、圧縮された試験パターンデータを独立的に受信し、圧縮解除された試験パターンデータを生成する。例えば、エンジン１９０１のそれぞれは、圧縮解除された試験データを生成するためのＬＦＳＲ及び関係回路を含むことができる。或いは、この代わりに、エンジン１９０１のそれぞれは、圧縮解除された試験データを生成するパラレルランレングスデコーダを含むことも可能である。そして、試験データは、ベクトルバッファ１９０２−１〜１９０２−Ｎ内にバッファリングすることができる。ベクトルバッファ１９０２−１〜１９０２−Ｎ内に保存されたデータは、チャネル１９０３−１〜１９０３−Ｎを通じて、適切な試験データ印加ロジックの制御下において、被検回路の個別のピンに伝達可能である。このピン単位の処理を採用する機能により、圧縮エンコーディングの更にハイレベルな柔軟性が実現し、この結果、更にハイレベルな圧縮性能が実現することになる。
【００５１】
いくつかの代表的な実施例は、多数の利点を提供することができる。即ち、ＡＴＥによって圧縮解除を実行すれば、試験対象の回路の設計を変更する必要がないために、いくつかの代表的な実施例は、オンチップ圧縮法と比べて有利である。この結果、いくつかの代表的な実施例によれば、回路設計を完成させる際に伴うリスクが増大しない。又、いくつかの代表的な実施例によれば、高圧縮された試験パターンを圧縮することが可能であり、この結果、試験時間を許容可能なレベル内に維持することができる。線形独立性の試験データに加えて、競合値を有していない線形依存性の試験データをエンコードすることにより、実現可能な圧縮量が増大するため、いくつかの代表的な実施例は有利である。この大きな圧縮量により、高圧縮された試験の組のエンコードが可能となり、この結果、試験時間量を削減することができる。更には、いくつかの代表的な実施例においては、適切に実装されたＬＦＳＲ及び／又はパラレルランレングスデコーダを利用することにより、ＡＴＥによって被検回路に試験データを印加すると同時に、圧縮解除をリアルタイムで実行可能である。具体的には、いくつかの代表的な実施例を使用することにより、４００ＭＨｚ以上のビットストリームレートを実現可能である。
【００５２】
最後に、本発明の代表的な実施態様を列挙する。
（実施態様１）
回路を試験するＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）装置であって、ＳＥＥＤパラメータ及び対応するＣＯＵＮＴパラメータを含む圧縮されたフォーマットで試験パターンを保存するメモリ（１５０３）と、
ビットストリームを生成するＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：線形帰還シフトレジスタ）（２００）と、
前記ＬＦＳＲを制御するロジック（１５０２）であって、個別のＳＥＥＤパラメータに従ってバイナリ値を前記ＬＦＳＲに読み込み、前記ＬＦＳＲを操作して、前記個別のＳＥＥＤパラメータと関連する対応するＣＯＵＮＴパラメータと等しい複数のビットを生成するロジックと、
前記ＬＦＳＲから前記回路にビットストリームを印加するロジック（１５０６）と、
を有することを特徴とするＡＴＥ装置。
【００５３】
（実施態様２）
前記ＬＦＳＲは、非原始多項式によって特徴付けられていることを特徴とする実施態様１記載のＡＴＥ装置。
【００５４】
（実施態様３）
前記ＬＦＳＲは、フィードバック及びフィードフォワード接続を含んでいることを特徴とする実施態様１または２記載のＡＴＥ装置。
【００５５】
（実施態様４）
前記圧縮されたフォーマットで保存されている試験パターンは、前記回路の複数のクロックサイクルにわたって印加される複数の試験パターンをエンコードする少なくとも１つのＳＥＥＤパラメータと個別のＣＯＵＮＴパラメータを含んでいることを特徴とする実施態様１から３のいずれかに記載のＡＴＥ装置。
【００５６】
（実施態様５）
回路を試験するＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）装置であって、
個別のコードワードを並行してデコードし、ビットのランを生成する複数のデコーダ（８００）と、
前記ランレングスエンコードされた試験パターン内のコードワードをセグメント化し、セグメント化されたコードワードを前記複数のデコーダに供給するロジック（１５０２）と、
前記複数のデコーダからのランをアセンブルして試験パターンを形成するロジック（１５０５）と、
前記試験パターンを前記回路に印加するロジック（１５０６）と、
を有することを特徴とするＡＴＥ装置。
【００５７】
（実施態様６）
前記コードワードは、可変長コードワードであることを特徴とする実施態様５記載のＡＴＥ装置。
【００５８】
（実施態様７）
前記コードワードは、Ｆｉｂｏｎａｃｃｉコードワードであることを特徴とする実施態様６記載のＡＴＥ装置。
【００５９】
（実施態様８）
ＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）を操作する方法であって、
前記ＡＴＥ（１５００）のメモリ内に圧縮され、ＳＥＥＤパラメータ及び対応するＣＯＵＮＴパラメータを有する試験パターンを保存するステップと、
前記圧縮された試験パターンから個別のＳＥＥＤパラメータを取得するステップと、
前記取得したＳＥＥＤパラメータに従って前記ＡＴＥ内のＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）（２００）を初期化するステップと、
個別のＣＯＵＮＴパラメータによって定義されている複数のサイクルにわたって前記ＬＦＳＲを操作してビットストリームを生成するステップと、
前記ＡＴＥによって生成された前記ビットストリームを被検回路（１５０７）に印加するステップと、
を有することを特徴とする方法。
【００６０】
（実施態様９）
前記ビットストリームを生成するステップは、前記取得したＳＥＥＤパラメータ及び前記個別のＣＯＵＮＴパラメータから前記被検回路用の複数の試験パターンを生成することを特徴とする実施態様８記載の方法。
【００６１】
（実施態様１０）
前記ＡＴＥのメモリから試験データを取得する段階を一時的に中断させるステップを更に有する実施態様８または９記載の方法。
【００６２】
（実施態様１１）
前記試験データの取得ステップを一時的に中断させるステップは、前記被検回路の自己試験回路に関連する遅延に応答して実行されることを特徴とする実施態様１０記載の方法。
【００６３】
（実施態様１２）
ＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）を操作する方法であって、
前記ＡＴＥ（１５００）のメモリ内に、ランレングスエンコードされた試験パターンを保存するステップと、
前記ランレングスエンコードされた試験パターンのコードワードをセグメント化するステップと、
前記セグメント化されたコードワードを前記ＡＴＥの個別のランレングスデコーダ（８００）に供給して、バイナリシンボルの複数のランを並行して生成するステップと、
前記バイナリシンボルの複数のランをアセンブルしてビットストリームを形成するステップと、
前記ビットストリームを被検回路（１５０７）に印加するステップと、
を有することを特徴とする方法。
【００６４】
（実施態様１３）
前記コードワードは、Ｆｉｂｏｎａｃｃｉコードワードであることを特徴とする実施態様１２記載の方法。
【００６５】
（実施態様１４）
選択されたランレングスエンコードされた試験パターンは、前記被検回路の自己試験回路に関連して生成される遅延に対応するランレングスコードを含んでいることを特徴とする実施態様１２または１３記載の方法。
【００６６】
（実施態様１５）
自動試験パターンジェネレータ（１５１１）から、ケアビットとドントケアビットを含む回路用の刺激パターンを受信するステップと、
ＬＦＳＲ（Ｌｉｎｅａｒ  Ｓｈｉｆｔ  Ｆｅｅｄｂａｃｋ  Ｒｅｇｉｓｔｅｒ）（２００）の動作に関連する前記ケアビットの位置によって定義される線形方程式を生成するステップと、
前記線形方程式と前記ケアビットからＳＥＥＤパラメータ及びＣＯＵＮＴパラメータを判定するステップを含む方法であって、
前記パラメータを判定するステップにおいて、それぞれのＳＥＥＤパラメータは、前記ＬＦＳＲ内に読み込まれて前記ケアビットの少なくともサブセットを生成する初期状態の組を定義しており、それぞれのＣＯＵＮＴパラメータは、ケアビットの競合値に対応する前記線形方程式中における線形依存性の場所に関連していることを特徴とする方法。
【００６７】
（実施態様１６）
前記ＳＥＥＤパラメータの中の少なくとも１つを前記ＬＦＳＲに印加して、個別のＣＯＵＮＴパラメータによって定義されるいくつかのビットを生成することにより、バイナリ試験データを生成するステップと、
前記バイナリ試験データを障害シミュレータに印加するステップと、
前記バイナリ試験データの周辺カバレージによって刺激される障害を識別するステップと、
前記周辺カバレージによって刺激された前記障害を障害リストから除去するステップと、を更に有する実施態様１５記載の方法。
【００６８】
（実施態様１７）
段階的に増大する数の刺激パターンを使用して、前記受信ステップ、前記線形方程式を生成するステップ、前記判定ステップ、前記バイナリ試験データを生成するステップ、前記印加ステップ、前記識別ステップ、及び前記除去ステップを反復的に実行するステップを更に有する実施態様１６記載の方法。
【００６９】
（実施態様１８）
前記判定ステップは、前記線形方程式の中の１つが、前記線形方程式の前のものの線形の組み合わせであるかどうかを判定するステップを含んでいる実施態様１５から１７のいずれかに記載の方法。
【００７０】
（実施態様１９）
前記線形方程式の中の前記１つが、前記線形方程式の以前に生成された方程式と関連する別のケアビットの値と競合する値を有するケアビットと関連しているかどうかを判定するステップを更に有する実施態様１８記載の方法。
【００７１】
（実施態様２０）
前記線形方程式の中の前記１つが、競合する値を有するケアビットと関連しているという判定に従って、前記ＣＯＵＮＴパラメータの中の１つの値を設定するステップを更に有する実施態様１８または１９記載の方法。
【００７２】
（実施態様２１）
前記ＬＦＳＲは、非原始多項式である実施態様１５から２０のいずれかに記載の方法。
【００７３】
（実施態様２２）
前記ＬＦＳＲは、フィードバック及びフィードフォワード接続を有している実施態様１５から２１のいずれかに記載の方法。
【００７４】
（実施態様２３）
前記ＬＦＳＲは、少なくとも６４ビットの長さを具備している実施態様１５から２２のいずれかに記載の方法。
【図面の簡単な説明】
【００７５】
【図１】代表的な一実施例に従って試験データを処理するフローチャートを示している。
【図２】ＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ：線形帰還シフトレジスタ）を示している。
【図３】代表的な一実施例に従ってＳＥＥＤ及びＣＯＵＮＴパラメータを使用して試験データをエンコードするフローチャートを示している。
【図４】代表的な一実施例に従ってＳＥＥＤ及びＣＯＵＮＴパラメータを使用して試験データをエンコードする別のフローチャートを示している。
【図５】代表的な一実施例に従ってランレングスエンコーディングを使用して試験データをエンコードするフローチャートを示している。
【図６】反復充填された試験データを示している。
【図７】代表的な一実施例による図６に示されている反復充填された試験データのランレングスエンコーティングを示している。
【図８】代表的な一実施例に従ってランレングスエンコードされた試験データをデコードするパラレルハードウェアアーキテクチャを示している。
【図９】代表的な一実施例に従って試験パターンを処理する別のフローチャートを示している。
【図１０】ＬＦＳＲを示している。
【図１１】図１０に示されているＬＦＳＲから導出された「２倍」のオーバークロックＬＦＳＲを示している。
【図１２】図１０に示されているＬＦＳＲによって定義される行列を示している。
【図１３】図１２に示されている行列から導出された図１１に示されているＬＦＳＲの特徴を示す行列を示している。
【図１４】図１３に示されている行列によって定義されるＬＦＳＲの接続回路を示している。
【図１５】試験パターンデータのリアルタイム圧縮解除を採用したＡＴＥ（Ａｕｔｏｍａｔｅｄ  Ｔｅｓｔ  Ｅｑｕｉｐｍｅｎｔ）システムを示している。
【図１６】「スロットル」機能を使用して、ＡＴＥメモリからのデータのダウロードを制御するＡＴＥを示している。
【図１７】ランレングスコードの採用によってオンチップ試験の遅延に対処しているＡＴＥを示している。
【図１８】グループ単位の処理を実行するＡＴＥサブシステムを示している。
【図１９】代表的な一実施例に従ってピン単位の処理を実行するＡＴＥサブシステムを示している。
【符号の説明】
【００７６】
２００  ＬＦＳＲ
８００  ランレングスデコーダ
１５００  ＡＴＥ
１５０２  制御ロジック
１５０３  メモリ
１５０５  圧縮解除／アセンブリロジック
１５０６  パターン印加ロジック
１５０７  被検回路
１５１１  自動試験パターンジェネレータ
【図１】
2005292126.tif 000003
【図２】
2005292126.tif 000004
【図３】
2005292126.tif 000005
【図４】
2005292126.tif 000006
【図５】
2005292126.tif 000007
【図６】
2005292126.tif 000008
【図７】
2005292126.tif 000009
【図８】
2005292126.tif 000010
【図９】
2005292126.tif 000011
【図１０】
2005292126.tif 000012
【図１１】
2005292126.tif 000013
【図１２】
2005292126.tif 000014
【図１３】
2005292126.tif 000015
【図１４】
2005292126.tif 000016
【図１５】
2005292126.tif 000017
【図１６】
2005292126.tif 000018
【図１７】
2005292126.tif 000019
【図１８】
2005292126.tif 000020
【図１９】
2005292126.tif 000021