(57)【特許請求の範囲】
【請求項１】
テストクロックを生成して電子回路のスキャンベースのテストを実施するためのテストクロック制御構造であって、前記テストクロック制御構造が、回路をテストするためのプログラム可能テストクロックコントローラを備え、前記プログラム可能テストクロックコントローラが、
制御チェーンからクロックコマンド情報の一部を受信するクロックパルスコントローラと、
スキャンチェーンのスキャンチェーン部分を駆動するテストクロックを、クロックコマンド情報の前記一部に基づいて発生するように構成されたテストクロックジェネレータと、
スキャンチェーンの部分を前記テストクロックで駆動するように構成されたスキャンレイヤインタフェースと、
前記制御チェーン内の前記クロックコマンド情報にアクセスするように構成された制御レイヤインタフェースと、
を含み、
前記クロックパルスコントローラが、スキャンイネーブルデータ（ＳｅＤ）信号を受信して、前記クロックパルスコントローラへのクロックコマンド情報の一部のシフトを制御し、
前記テストクロックジェネレータが、前記クロックパルスコントローラに、前記ＳｅＤ信号及び前記スキャンチェーンに与えられるクロック信号を示すスキャンイネーブルクロック（ＳｅＣ）信号に基づいて発生されたクロック速度制御信号を供給して、
前記クロック速度制御信号に応答して、前記クロックパルスコントローラが、テストクロックイネーブル信号を発生するためのクロック速度を選択し、前記クロックパルスコントローラは、前記テストクロックイネーブル信号を前記テストクロックジェネレータに供給し、
前記テストクロックジェネレータが、スキャンクロック用入力と機能クロック用入力とを、前記テストクロックイネーブル信号に基づいて、切り替えて発生することを特徴とするテストクロック制御構造。
【請求項２】
前記プログラム可能テストクロックコントローラは、前記制御チェーンの一部をインタフェースする制御論理を備え、前記制御論理は、前記クロックコマンド情報に基づいて前記スキャンチェーン部分にスキャンデータを選択可能にロードするように構成されていることを特徴とする請求項１に記載のテストクロック制御構造。
【請求項３】
前記制御論理は、前記スキャンクロック用入力と前記機能クロック用入力とを切り替えて、前記テストクロックを出力するように構成されていることを特徴とする請求項２に記
載のテストクロック制御構造。
【請求項４】
前記制御論理が、前記回路をテストするために２つ以上のスキャンテストプロトコルを実装するように構成されており、先行するプロトコルによって実行された前記スキャンチェーンの部分のみに、データをリロードすることを特徴とする請求項２に記載のテストクロック制御構造。
【請求項５】
前記２つ以上のスキャンテストプロトコルが、ブロードサイドテスト及びラストシフトローンチテストを含むことを特徴とする請求項４に記載のテストクロック制御構造。
【請求項６】
前記ＳｅＤ及びＳｅＣ信号が組み合わさって、前記回路への全てのクロックがオフであるサイレント状態が提供され、前記サイレント状態がＳｅＤ機能テスト状態及びＳｅＣスキャンクロック状態に対応することを特徴とする請求項５に記載のテストクロック制御構造。
【請求項７】
前記ＳｅＤ及びＳｅＣ信号が組み合わさって、前記クロックコマンド情報がアクセスされるクロックコントロールロード／アンロード状態が提供され、前記クロックコントロールロード／アンロード状態がＳｅＤスキャンテスト状態及びＳｅＣ機能クロック状態に対応することを特徴とする請求項６に記載のテストクロック制御構造。
【請求項８】
スキャンチェーンのテストクロック波形を生成して複数の回路を含む電子デバイスのスキャンベースのテストを実施するための方法であって、前記方法は、
プログラム可能テストクロックコントローラのクロックパルスコントローラにおいて、制御チェーンからクロックコマンド情報の一部を受信する段階であって、前記クロックコマンド情報の前記一部は、スキャンイネーブルデータ（ＳｅＤ）信号に応答して、クロックパルスコントローラへシフトされる、前記受信する段階と、
前記プログラム可能テストクロックコントローラのテストクロックジェネレータにおいて、前記ＳｅＤ信号及び前記クロックパルスコントローラのクロック速度を示すスキャンイネーブルクロック(ＳｅＣ)信号を受信する段階と、
前記テストクロックジェネレータから前記クロックパルスコントローラに、前記ＳｅＤ信号及び前記ＳｅＣ信号に基づいて、クロック速度制御信号を送信する段階と、
前記クロック速度制御信号に応答して、前記クロックパルスコントローラにおいて、テストクロックイネーブル信号を発生するためのクロック速度を選択して、前記テストクロックジェネレータに供給する段階と、
前記クロックパルスコントローラから前記テストクロックジェネレータへ前記テストクロックイネーブル信号を送信する段階と、
前記テストクロックジェネレータでテストクロックを発生して、スキャンチェーンのスキャンチェーン部分を駆動する段階であって、前記テストクロックイネーブル信号に基づいて、スキャンクロック用入力と機能クロック用入力とを切り替えることを含む、前記駆動する段階と、
を含む方法。
【請求項９】
前記プログラム可能テストクロックコントローラを、前記クロックコマンド情報に従って、テスト実行モードで作動する段階を更に含むことを特徴とする請求項８に記載の方法。
【請求項１０】
前記プログラム可能テストクロックコントローラを、前記テスト実行モードで作動して、前記テストクロックを停止して、静的テストを実施する段階を更に含む請求項９に記載の方法。
【請求項１１】
アット・スピードクロック速度で前記テストクロックの速度を設定して動的テストを実行するように前記テスト実行モードにおいて前記プログラム可能テストクロックコントローラを動作させる段階を更に含む請求項９に記載の方法。
【請求項１２】
スキャンデータのスキャンデータビットのＮビットを含む第１部分と、前記スキャンデータビットのＮ−１ビットを含む第２部分とをほぼ同時に前記スキャンチェーン部分にロードする段階と、
前記ＮビットにおけるＮスキャンクロックエッジ後にブロードサイドテストを実行するように前記プログラム可能テストクロックコントローラを構成する段階であって、前記クロックコマンド情報は、前記Ｎビット後にアット・スピードクロック速度で起動クロックエッジと取り込みクロックエッジとを提供する段階と、
前記Ｎ−１ビットにおけるＮ−１スキャンクロックエッジ後にラストシフト起動テストを実行するように前記プログラム可能テストクロックコントローラを構成する段階であって、前記クロックコマンド情報は、Ｎ番目のクロックエッジとして前記起動クロックエッジを提供し、（Ｎ＋１）番目のクロック取り込みクロックエッジとして前記取り込みクロックエッジを提供する段階と、
を更に含む請求項８に記載の方法。
【請求項１３】
テストクロックを生成してスキャンベースのテストを実施するためのテストクロック制御構造を含む電子デバイスであって、前記電子デバイスが、
前記電子デバイスの機能モードで動作可能な幾つかのドメインを含み、前記幾つかのドメインの少なくとも１つのドメインがテストモードで各々独立してテストするためのサブドメインに分割される複数の回路と、
複数のプログラム可能テストクロックコントローラであって、該複数のプログラム可能テストクロックコントローラの内の第１のものが、制御チェーンからクロックコマンド情報を受信して、前記幾つかのドメインに対するテストクロック信号を発生するように、前記複数のプログラム可能テストクロックコントローラの第２のものの制御スキャン出力と接続されている制御スキャン入力を有し、前記複数のプログラム可能テストクロックコントローラの内の前記第１のものが、
前記クロックコマンド情報の一部を受信するように構成されているクロックパルスコントローラと、
前記クロックコマンド情報の一部に基づいて、スキャンチェーンのスキャンチェーン部分を駆動するテストクロックを発生するように構成されているテストクロックジェネレータとを含む、前記複数のプログラム可能テストクロックコントローラと、を備え、
前記クロックパルスコントローラが、スキャンイネーブルデータ（ＳｅＤ）信号を受信して、前記クロックパルスコントローラへのクロックコマンド情報の前記一部のシフトを制御し、
前記テストクロックジェネレータが、前記クロックパルスコントローラに、前記ＳｅＤ信号及び前記スキャンチェーンに与えられるクロック信号を示すスキャンイネーブルクロック（ＳｅＣ）信号に基づいて発生されたクロック速度制御信号を供給し、
前記クロック速度制御信号に応答して、前記クロックパルスコントローラが、テストクロックイネーブル信号を発生するためのクロック速度を選択し、前記クロックパルスコントローラは、前記テストクロックイネーブル信号を前記テストクロックジェネレータに供給し、
前記テストクロックジェネレータが、スキャンクロック用入力と機能クロック用入力とを、前記テストクロックイネーブル信号に基づいて、切り替えて発生し、
前記複数のプログラム可能テストクロックコントローラのサブセットが、前記テストモード中に、前記サブドメインの一つ以上を並行してテストするように構成されていることを特徴とする電子デバイス。
【請求項１４】
データを前記選択されたサブドメインと交換するために前記ドメイン及び前記サブドメインに結合された１つ又はそれ以上のスキャンチェーンと、
他のサブドメインから独立して各サブドメインにおいて、前記データの交換を制御するために前記クロックコマンド情報に従って前記テストクロック信号を生成するように構成されたテストクロックジェネレータと、
を更に備えることを特徴とする請求項１３に記載の電子デバイス。
【請求項１５】
前記１つのドメインを前記サブドメインに分割することにより、前記テストクロック信号の制御下にある前記１つ又はそれ以上のスキャンチェーンのサブセットに関する刺激又は結果データとして前記データを選択的にロード又はアンロードすることでテストパターンボリュームの低減が促進されることを特徴とする請求項１４に記載の電子デバイス。
【請求項１６】
前記サブドメインの１つ又はそれ以上のオペレーションを停止するようにパワーダウン（ＰＷＤ）信号を配信するためのパワーダウン信号ジェネレータを更に備え、前記パワーダウン信号ジェネレータは、前記サブドメインに対するテスト中に停止すべきエラーを検出することに応答して、前記サブドメインに前記ＰＷＤ信号を提供することを特徴とする請求項１３に記載の電子デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、スキャンテスト回路のための電子デバイス及びクロックアーキテクチャに関し、より具体的には、例えば、少なくとも遅延に関する欠陥を検出するためのアット・スピード（ａｔ−ｓｐｅｅｄ）スキャンベーステストを容易にするために構成可能なテストクロック波形を生成するためのシステム、構造、及び方法に関する。
【背景技術】
【０００２】
電子デバイス製造業者は、ナノメートルレベルの半導体製造プロセスを使用して小さな形状サイズを有する集積回路を製造し、これによって単位面積当たりにより多くのトランジスタ及び相互接続リソースを備える。しかしながら、デバイスをより小さな形状寸法で製造するにつれて、導体関連の故障及び抵抗タイプの欠陥の存在が益々多くなる。導体関連の故障は、一般に、金属相互接続の品質を劣化させるプロセスのばらつきに起因しており、その結果、例えば一貫性のない接触抵抗を生じる。抵抗性欠陥は、影響を受ける回路ノードで信号遷移の極めてゆっくりとした上昇下降を引き起こす。しかしながら、従来の縮退及びパラメトリック漏れ電流（例えばＩＤＤＱテスト）テスト法はこれらのタイプの故障を有効に検出できないので、電子デバイス製造業者は通常、このような故障モードを選別するための遅延テスト法に依存している。しかしながら、構造上の遅延テストは、縮退テストなどの従来のテスト法よりも著しく高コストである。例えば、遅延テストを実施するためのデータのボリュームは、従来の縮退テスト用のデータのボリュームよりも有意に大きい。場合によっては、遅延テストは、縮退テストよりも３倍から５倍多いデータを必要とする。更に縮退テストは、１又は０のいずれかの論理値に「固着する」回路ノードなどの静的欠陥を検出する。比較すると、遅延テストは、許容可能なレベルよりもゆっくりと信号の上昇又は下降を引き起こす動的欠陥を検出する。一般的に、遅延テストは、該テストが遅延関連の欠陥について選別する回路を通る遷移信号の伝播を必要とする。更に、遅延テストは、あるタイミング制約内で遷移信号の起動及び取り込みを必要とするので、遅延テストベクトルは、テストクロックを生成しこれと同期させることは縮退テストベクトルよりも極めて難しい。
【０００３】
図１は、被試験回路（「ＣＵＴ」）１０２において動的関連の欠陥を検出するための従来の遅延テストを実施するのに通常使用されるスキャンチェーンの一部１００を示す図である。従来のスキャンチェーンは、一般に、フリップフロップ１０８及びマルチプレクサ１０６を含む。スキャンイネーブル（「ＳＥ」）信号１０４は、回路１０２との間で刺激及び結果信号を交換するため、或いはフリップフロップ１０８内外にスキャンデータをシフトさせるためマルチプレクサ１０６を制御する。典型的には、スキャンイネーブル１０４は、テストクロック（「ＣＬＫ」）１２０に類似するファンアウト構成を介して信号源から伝播するグローバル信号である。スキャンイン端子（「ＳＩ」）１１０は、自動テスト装置（「ＡＴＥ」）などの外部ソースからスキャンデータを受け取り、スキャンアウト端子（「ＳＯ」）１１２は、刺激信号によって発生する結果をシフトアウトする。スキャンチェーン部分１００を使用して遅延テストを調整するために、テストクロックジェネレータは通常、テストクロック（「ＣＬＫ」）１２０を生成し、スキャンチェーンを通してスキャンデータを駆動する。マルチプレクサ１３０は、低速クロック１４０又は高速クロック１５０のいずれかをゲート制御する。具体的には、スキャンチェーン部分１００は、スキャンチェーンを通してスキャンデータを駆動するために低速クロック１４０を使用し、回路１０２上でアット・スピード機能テストを実施するために高速クロック１５０を使用する。ＡＴＥはテストクロックジェネレータとして動作できるが、オンチップ位相ロックループ（「ＰＬＬ」）回路などのオンチップ機能クロック回路は、低コストで高速のテストクロック信号を供給することができる。しかしながら、従来のテストクロック生成回路は、特に被試験装置（「ＤＵＴ」）が２０から１００クロックドメイン又はそれよりも多い多数のクロックドメインを含む場合には複雑で高コストになる。
【０００４】
図２は、従来のスキャンチェーン構造において従来のアット・スピード遅延テストを実施するために単一のスキャンイネーブル（「ＳＥ」）信号を使用することにより発生するタイミングの不確実性を示している。動的欠陥を検出するために一般的に使用されるアット・スピード遅延テストの１つの実施例は、「ラスト−シフト−ローンチ」テストである。この技術では、第１テストパターンに対して１スキャンチェーンにシフトされる最後のスキャンデータビットが、もう１つのシフト後の第２テストパターンの入力になる。タイミング図２００は、従来のラスト−シフト−ローンチテストを実施する図１のテストクロック１２０とスキャンイネーブル１０４信号とを示す。詳細には、第１テストパターンは、スキャンモード中に低速クロック１４０を使用してスキャンチェーンにシフトされ、最後のスキャンデータビットは立ち上がりエッジ２１０としてスキャンチェーンにシフトされる。アット・スピード遅延テストを行うために、スキャンイネーブル１０４は、高速クロック１５０のスキャンチェーンへの印加に同調して状態が変化し、機能テストの結果を取り込む。アット・スピード遅延テストを実施するために単一のスキャンイネーブル信号１０４を使用することの欠点は、取り込みエッジ２２０の検出が定義された時間間隔内でなければならず、このためアット・スピードタイミング制約２０２が加えられる点である。従って、スキャンイネーブル１０４は、取り込みエッジ２２０を適切に検出するために、アット・スピードタイミング制約２０２の間にある状態から次の状態に遷移する必要がある。しかしながら、アット・スピードタイミング制約２０２がより小さな形状寸法に対して遅延テストを適合させるために益々狭くされるにつれて、スキャンイネーブル１０４が適切に状態を遷移するのを期待することが困難になる。
【０００５】
図３は、従来のテストクロック制御技術を使用してアット・スピード遅延テストを行う典型的なスキャンチェーン構造３００を示す。図示のように、スキャンチェーン構造３００は、スキャン入力３１０及びスキャン出力３１２を有するスキャンチェーン３２０、並びに内部クロックジェネレータ３３０（例えば１つ又はそれ以上のＰＬＬ回路）及び内部テストクロックコントローラ３４０を含む。スキャンチェーン構造３００は、内部テストクロックコントローラ３４０を使用して、被試験回路（「ＣＵＴ」）３０２上でアット・スピード遅延テストを行う。各被試験回路３０２は、クロックドメイン３０４内に存在している。クロックドメインは、特定のクロックに同期される回路領域である。クロック制御ビット３５０は、内部テストクロックコントローラ３４０のオペレーションを定める。しかしながら、内部テストクロックコントローラ３４０を構成するために、従来のアット・スピードテスト技術はクロック制御ビット３５０をスキャンデータビットと共にスキャンチェーン３２０内に埋め込む。この手法の欠点は、スキャンチェーン３２０にはクロック制御ビット３５０がロードされ、スキャンチェーンローディング当たりに１つのクロックドメイン３０４をテストすることである。従って、全スキャンチェーン３２０は、別のドメイン３０４がテストされる毎にロード及びアンロードが行われる。また、クロック制御ビット３５０は特にテスト中には静的である点に留意されたい。具体的には、スキャンチェーン構造３００は一般に、内部テストクロックコントローラ３４０がそのビットに従って動作できるように、クロック制御ビット３５０がスキャンチェーン３２０内で固定のまま保持されることが求められる。従って、スキャンチェーン構造３００及び他の類似の従来のスキャンチェーン構造は、特にクロック間ドメインテスト（例えば起動及び取り込み）を実施する場合に、スキャンチェーン３２０のビットに無関係に内部テストクロックコントローラ３４０を動作させるのに好適ではない。別の欠点は、従来のスキャンチェーン構造３００が一般に、テスト時間及びデータボリュームを低減する目的でスキャンチェーン３２０の一部の選択的なローディング及びアンローディングを制御する制御シーケンス及び／又はプログラムをサポートするのに十分ではないことである。例えば、ほとんどのスキャンチェーン３２０は、スキャンチェーン３２０（又は１つ又はそれ以上のその一部）を選択的にリロードし、目標とする被試験回路３０２だけをテストすることができない。これは、スキャンチェーン３２０には特定のテストに対して不必要なデータがロードされる可能性があり、これによってスキャンチェーン３２０にロードされた不必要なデータがテストデータボリュームを増大させ、その結果テスト時間が長くなることを意味する。目標とされる回路３０２の１つの結果を調べるために、比較的長くなりがちな従来のスキャンチェーン３２０では、不必要なデータ及び結果の両方をシフトすることが必要とされ、これらの組合せは、一般に長いテスト時間の原因となる。スキャンチェーン構造３００の更に別の欠点は、ドメイン間論理３０６が一般に、１つのクロックドメインでの取り込みクロックパルスと別のクロックドメインからの起動クロックパルスとが特に異なるクロック周波数を有する場合、これらを完全に同期させるには不十分であることである。
【０００６】
図４は、従来のテストクロック制御技術を使用して図３のスキャンチェーン構造３００を用いたドメイン間論理３０６のテストを示している。通常は、論理０から１への遷移（又はその逆）は、第１クロックドメイン（「ｉ」）４１０の出力レジスタ（「ＯｕｔＲｅｇ」）４０２から第２クロックドメイン（「ｊ」）４２０の入力レジスタ（「ＩｎＲｅｇ」）４０４に開始される。クロック（「ＣＬＫ［ｉ］」）４１２は、出力レジスタ４０２からドメイン間組合せ論理３０６を介して入力レジスタ４０４へ遷移させ、入力レジスタ４００は、クロック（「ＣＬＫ［ｊ］」）４２２で遷移の状態をラッチするように動作する。要求される立ち上がりエッジ４５０は、テスト応答を適切に取り込むために取り込みエッジ４７０の同時発生を可能にする。但し、クロック４２２の１クロック周期がクロック４１２の５クロック周期に対応すると考える。遷移は、従来の遅延テストで通常行われるようにクロック４２２（クロックドメイン４２０）のクロックエッジ４６０と同期してクロックドメイン４１０から起動される場合、テスト応答がクロックドメイン４２０内で取り込まれる前に５クロック周期が経過することができる。従って、エッジ４４０での意図されない起動は、エッジ４７０でテスト応答を適切に取り込まれない可能性がある。従来のスキャンチェーン構造におけるクロックドメイン間の同期を管理することは、参加しているクロックドメインの数が増えるにつれて益々難しくなる。更に、従来の内部テストクロックコントローラに固有の待ち時間は、同様の理由によりクロックドメイン間テストを複雑にする可能性がある。
【０００７】
図５は、アット・スピード遅延テストを実施するための従来のテスト機能クロック経路５３０を有する内部テストクロックコントローラ５０２を示すブロック図５００である。内部テストクロックコントローラ５０２は、機能クロック（「ＰＬＬ  Ｃｌｋ」）５１０及び埋め込まれたクロック制御ビット５０４を受信し、遅延取り込みパルスを生成する。内部テストクロックコントローラ５０２はまた、機能クロック５１０のエッジをカウントするパルスカウンタ５２０と、埋め込まれたクロック制御ビット５０４の値に応じてテストクロック５５０を生成する論理５２２とを含む。動作時には、パルスカウンタ５２０及び論理５２２は、起動パルス５６０の後の取り込みパルス５７０を遅延時間５６２だけ遅らせて、例えばドメイン間テストを実施するように協働する。この手法の欠点は、内部テストクロックコントローラ５０２が、マルチプレクサ５３４以外の追加の回路素子を含むテスト機能クロック経路５３０を含むことである。これらの追加の素子５３６は、起動及び取り込みオペレーションを行うときにアット・スピード機能クロック信号５１０を不利に歪ませる可能性があり、結果として取り込みパルス５７０のタイミングに不確実性５８０をもたらす。通常、遅延時間５６２は、テストモードにおける経路５３０上のアット・スピード機能クロックが、追加の素子５３６を含まない経路５３２上のランモード（例えばテストモード（又はＴＭ）がディスエーブルの場合）における機能クロック５１０を模擬できることを保証するためにクロックバランシングを必要とする。
【０００８】
図６Ａ及び６Ｂは、ブロードサイドとラスト−シフト−ローンチテストプロトコルのそれぞれの従来の実装を示す。図６Ａは、種々のレジスタステージ６１２を有するスキャンチェーン６１０を含む。図６００に示されるブロードサイドプロトコルテストでは、所要の遷移６０２が、前のレジスタステージ６１２ｂから起動されて組合せ回路６２０ｂを介して伝播し、次いでレジスタステージ６１２ｃのレジスタ６３０で取り込まれる。これは、直接又は間接的に組合せ回路６２０ａ及び６２０ｂをテストする。立ち上がりエッジの間に、レジスタ６３２は論理０をラッチし、これによって組合せ回路６２０ｂによる１から０の遷移を起動する。レジスタ６３０は、取り込みエッジで論理０値を取り込む。論理０の存在は、レジスタ６３４の値から前の遷移６０１に依存し、これによって組合せ回路６２０ａをテストする点に留意されたい。この技術では、全スキャンチェーンには、テストモードにおける低速でシフトすることによってデータがロードされ、その後、機能モードにおける２つのアット・スピードクロックパルス（例えば起動及び取り込みエッジ）が続く。次いで、値が取り込まれると、データはテストモードにおいてゆっくりとシフトアウトされる。ブロードサイドプロトコルを使用する遅延テストは、他の場合には検出できない遅延欠陥を検出することができ、ブロードサイドプロトコルのテストパターンのサイズは通常、ラスト−シフト−ローンチプロトコルのパターンよりも大きい。更に、ブロードサイドのテストパターンは実際には順次的であり、従って生成がより困難である。
【０００９】
図６Ｂは、種々のレジスタステージ６７２を有するスキャンチェーン６６０を含む。ラスト−シフト−ローンチプロトコルテストにおいて、遷移６６２は、レジスタステージ６７２ｂでのスキャンロード又はアンロードシーケンス中の最後のシフトから起動される。次に、該遷移は、次のレジスタステージ６７２ｃでレジスタ６８０に取り込まれる。入力遷移６９０が最後のシフト６６１から起動されるので、ラスト−シフト−ローンチテスト用のパターンサイズは、シーケンシャルテストパターンが組み合わせパターンよりも圧縮するのが難しいことに起因して、ブロードサイドのものよりも小さく、生成が容易とすることができる。但し、ラスト−シフト−ローンチプロトコルは、上述の欠点の影響を受ける。ブロードサイドとラスト−シフト−ローンチの両方が表面上は相互に排他的な利点及び欠点を有するので、ほとんどの設計者が一方又は他方のいずれかだけを実施する。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
以上の観点から、上述の欠点を最小にし、少なくとも遅延に関連する欠陥を検出するためのアット・スピードスキャンベースのテストを提供するシステム、構造、及び方法を提供することが望まれる。
【課題を解決するための手段】
【００１１】
スキャンチェーンのテストクロックを生成して電子回路のスキャンベースのテストを実施するためのシステム、構造、及び方法が開示される。１つの実施形態において、テストクロック制御構造は、プログラム可能テストクロックコントローラを含む。プログラム可能テストクロックコントローラは、構成可能なテストクロックを生成するためのテストクロックジェネレータを含む。コントローラはまた、構成可能なテストクロックでスキャンチェーン部分を駆動するためのスキャンレイヤインタフェースと、スキャンチェーン部分を制御するための制御情報にアクセスするように構成された制御レイヤインタフェースとを含む。プログラム可能テストクロックコントローラはまた、制御チェーンの一部をインタフェースする制御論理を含むことができる。これによって制御論理は、制御情報に基づいてスキャンチェーン部分にスキャンデータを選択可能にロードすることができる。種々の実施形態では、制御チェーンは、スキャンチェーンとは異なるチャンネルであり、これによってスキャンデータの転送とは独立してプログラム可能テストクロックコントローラへの制御情報の転送を容易にする。有利には、これによりスキャンロード及びアンロードシーケンスが低減されることで、テスト時間が削減される。場合によっては、制御論理は、スキャンチェーンからほぼ同じデータを使用して回路をテストするために２つ又はそれ以上のスキャンテストプロトコルの実施を容易にすることができる。
【００１２】
別の実施形態では、プログラム可能テストクロックコントローラは、クロックパルスコントローラとテストクロックジェネレータとを含む。クロックパルスコントローラは、クロックコマンド情報に従ってクロック制御信号を生成する。場合によっては、クロックパルスコントローラは、クロックコマンド情報を維持することができる。テストクロックジェネレータは、クロックコマンド情報の一部の機能としてテストクロックを生成する。クロックコマンド情報は、アット・スピードクロック速度を有するテストクロックなどの機能クロック信号をスキャンチェーンに加えるかどうかを指示する。
【００１３】
更に別の実施形態において、１つの方法が回路のスキャンベースのテストを行う。本方法は、ラスト−シフト−ローンチテストパターン及びブロードサイドテストパターンを含むことができる、少なくとも１つのドメイン内テストを行う段階と動的欠陥検出テストパターンを実施する少なくとも１つのドメイン間テストを行う段階を含む。ドメインは、異なるパワー又は異なるクロックドメインのいずれか、又はこれらの両方とすることができる点に留意されたい。場合によっては、本方法は更に、ほぼ並行して異なるクロックドメインをテストするようにプログラム可能テストクロックコントローラを構成する段階を更に含む。有利には、これは、異なるクロックドメインをテストするときに１つ又はそれ以上のスキャンチェーンがロードされる回数を低減することができる。他の実施形態では、ドメインという用語は、一般的に、特性がクロッキング、電力消費、又は同様のものの点で異なるか否かに関わらず、別の部分又は別の回路に比べて異なる動作特性を有するあらゆる回路又は部分を意味することができる。
【００１４】
また更に別の実施形態では、１つの方法が、テストクロック制御構造を実現して回路のスキャンベースのテストを実行し、本方法は、スキャンチェーンをロードするようにプログラム可能テストクロックコントローラの第１サブセットを構成する段階と、スキャンチェーンのローディングを指示するクロックコマンド情報に従ってスキャンデータをスキャンチェーンにロードする段階とを含む。本方法は、欠陥の検出を指示する付加的なクロックコマンド情報に応じてテストクロックを生成するためにプログラム可能テストクロックコントローラの第１サブセットにおいてプログラム可能テストクロックコントローラを構成することによって続く。更に、本方法は、１つ又はそれ以上の回路をテストするために付加的なクロックコマンド情報に従ってテストクロックを生成する段階を含むことができる。
【００１５】
幾つかの実施形態によれば、プログラム可能テストクロックコントローラ及び付随するテストクロック制御構造は、比較的低コストのアット・スピード遅延テストを提供する。プログラム可能テストクロックコントローラは、クロックツリーネットワーク（例えば機能的なオンチップＰＬＬツリー内）の仮想上のどこにでも挿入でき、ＡＴＥを介してプログラムすることができる。テストクロック制御構造は、プログラム可能テストクロックコントローラをプログラムすることによって、比較的多数のクロックドメインを処理することができる。プログラム可能テストクロックコントローラは、同じチップでのラスト−シフト−ローンチプロトコルとブロードサイドテストプロトコルの両方の使用を可能にし、これによってテスト時間とテストデータボリュームを低減しながら（例えばデバイスをテストするためのスキャンロード／アンロードシーケンスの数を低減することによって）テストカバレージを向上させる。
【００１６】
テストクロック制御構造は、本発明の種々の実施形態に従ってテスト時間とテストデータボリュームの両方を低減するための効果的なテスト開発及びテストフローを提供する。このような低減は、特に遅延テストが単なる縮退テストよりも実施するのに約３倍から５倍コストがかかるので重要である。更に従来の遅延テストでは、テスト時間及びテストデータボリュームを支配するのはスキャンロード及びアンロードオペレーションである。通常、１秒のＡＴＥ使用は約５〜１０セントのコストがかかる。従って、従来実施されていた遅延テストのＡＴＥ時間が増大することで、低価格の顧客電子デバイスの価格に有意なテスト間接費が付加される可能性がある。１つ又はそれ以上の実施形態は、プログラム可能性をテストクロック構造に導入することによって、複数のテストプロトコルを同時に又はほぼ同時に実施することによって、更に、とりわけ複数のドメイン（例えばクロックドメイン）を並行してテストすることによってスキャンロード及びアンロードオペレーションの数を低減する。
【００１７】
本発明は、添付図面を参照しながら以下の詳細な説明を読めばより完全に理解される。
【００１８】
同じ参照数字は、図面の幾つかの図を通して対応する要素を示す。参照数字のほとんどが、その参照数字を最初に導入した図をほぼ識別する１つ又は２つの一番左の桁の数字を含む。
【発明を実施するための最良の形態】
【００１９】
図７は、本発明の１つの特定の実施形態による少なくとも１つの回路をテストするためのテストクロック制御構造を示すブロック図である。テストクロック制御構造７０１は、被試験回路７０３をテストするための１つ又はそれ以上のプログラム可能テストクロックコントローラ７００を含む。図示のように、プログラム可能テストクロックコントローラは、２つの別個のレイヤ、すなわち制御レイヤ７２０とスキャンレイヤ７３０上でデータと対話する。プログラム可能テストクロックコントローラ７００は、構成可能なテストクロック（「ＣＴＣ」）７１４を生成するためのテストクロックジェネレータ７０４を含む。プログラム可能テストクロックコントローラ７００はまた、スキャンレイヤインタフェース７１２を含み、スキャンレイヤインタフェース７１２を介して構成可能なテストクロック７１４でスキャンチェーン７３２の少なくともスキャンチェーン部分を駆動する。図示のように、スキャンチェーン７３２は、スキャンレイヤ７３０内にある。更に、プログラム可能テストクロックコントローラ７００は、制御レイヤインタフェース７１０を含み、例えばスキャンチェーン７３２又はスキャンチェーン部分７３４を制御するための制御情報７２４にアクセスすることができる。
【００２０】
プログラム可能テストクロックコントローラ７００は、例えば制御レイヤインタフェース７１０を介して制御レイヤ７２０において制御チェーン７２２の一部にインタフェースする制御論理７０６を含むことができる。これによって制御論理７０６は、制御情報７２４に基づいてスキャンデータをスキャンチェーン７３２（又はその一部）に選択的にロードするかどうかを制御することができる。種々の実施形態において、制御チェーン７２２は、スキャンチェーン７３４とは別のチャンネルであるので、スキャンデータの転送とは独立してプログラム可能テストクロックコントローラ７００への制御情報７２４の転送を容易にする。有利には、これはスキャンロード及びアンロードシーケンスの量を低減するので、テスト時間が短縮される。場合によっては、制御論理７０６は、スキャンチェーンからほぼ同じデータを使用して（例えば、種々のテストプロトコル間のスキャンチェーンの全体のローディング又はアンローディングなしで）回路７５０をテストするための２つ又はそれ以上のスキャンテストプロトコルの実施を容易にすることができる。例えば、プログラム可能テストクロックコントローラ７００は、同じテストフロー中にブロードサイドテストプロトコルとラスト−シフト−ローンチテストプロトコルの利用を提供することができる。プログラム可能テストクロックコントローラ７００が単一のフレームワークで種々のテストプロトコルに対応することができるので、単一の遅延テストプロトコルの実施に比べてテストカバレージを有利に向上させることができる。そのため、例えばラスト−シフト−ローンチ技術を使用して欠陥が検出されなかった場合、ブロードサイドテストが欠陥を検出するために実施することができる。１つの実施形態では、プログラム可能テストクロックコントローラ７００は、従来の単一のスキャンイネーブル信号をまとめて置き換える複数のスキャンイネーブル制御信号を受け取る入力ポート７０８を含む。別の実施形態では、テストクロック制御構造７０１は、回路７５０を含む単一の基板上に形成することができる。構成可能なテストクロック７１４は、テストクロック並びにチェーンクロックと呼ぶことができる。一般的に、テストクロック制御構造は、プログラム可能テストクロックコントローラ、制御チェーン、スキャンチェーン、並びに回路をテストするための他のテスト関連構造を含む。
【００２１】
図８は、本発明の少なくとも１つの特定の実施形態によるプログラム可能テストクロックコントローラを示すブロック図である。プログラム可能テストクロックコントローラ８００は、比較的低速のスキャンクロック（すなわち、アット・「スキャンスピード」）及び比較的高速の機能クロック（すなわち、「アット・スピード」）を使用して構造遅延テストのための構成可能なテストクロックを生成してテストクロック８３０を構成し、複数の遅延テストプロトコルを実施するように構成されている。プログラム可能テストクロックコントローラ８００は、スキャンチェーンロード及びアンロードオペレーションのシーケンスを実行するようにテストクロックを構成することができる。或いは、該コントローラは、入力遷移を起動してテスト応答を取り込むようにテストクロックを構成することができる。従って、プログラム可能テストクロックコントローラ８００は、スキャンチェーンにスキャンデータを駆動し、又はスキャンチェーンからスキャンデータを駆動するためのスキャン−スピードクロック（「ＳＣＬＫ」）８３２、或いは起動及び／又は取り込みオペレーションを行うためのアット・スピード機能クロック（「ＰＣＬＫ」）８３４のいずれかとしてテストクロック８３０を構成することができる。少なくとも１つの実施形態では、マルチプレクサ８４０（又は切替オペレーションを実行できるいずれかの等価構造）が、スキャン−スピードクロック８３２又はアット・スピード機能クロック８３４のいずれかを出力端子にルーティングし、テストクロック８３０を供給する。プログラム可能テストクロックコントローラ８００は、仮想上のいずれかの機能クロック経路に挿入することができ、内部クロック構造を大きく修正することなくオンチップＰＬＬなどのいずれかの機能クロックソースと一体化させることができる。更にプログラム可能テストクロックコントローラ８００は、いずれかのクロックドメインをディスエーブルにするようにプログラムすることができ、これによっていずれかの起動、取り込み、スキャンロード及びスキャンアンロードオペレーションから１つ又はそれ以上のクロックドメインを選択的に含み、除外することができる。
【００２２】
プログラム可能テストクロックコントローラ８００は、スキャンクロックデコーダ８０２及びクロックモジュール８０４を含み、機能クロックＰＣＬＫ［ｉ］８１７及び外部駆動のスキャン−スピードスキャンクロック（「ＳｃａｎＣｌｏｃｋ」）８１０からテストクロック（「ＣＬＫ」）８３０などの構成可能なテストクロックを生成する。場合によっては、ＰＬＬ回路８５０が機能クロック８３４を生成し、ＡＴＥがスキャンクロック８１０を生成する。基準クロック（「Ｒｅｆ  Ｃｌｋ［ｋ］）８１５は、ＰＬＬ８５０に供給されて機能クロック８１７を生成することができ、該クロックは更に、例えばクロックモジュール８０４のオペレーションを制御することができる。幾つかの実施形態では、アット・スピード機能クロック８３４は、本質的には機能クロック８１７である。スキャンクロックデコーダ８０２は、スキャンクロック８１０を復号して、制御レイヤクロック信号（「ＴＣＬＫ」）８２０とスキャンレイヤクロック信号（「ＳＣＬＫ」）８２２とを含むクロック制御信号を同期させる。制御レイヤクロック信号８２０を用いて、制御チェーン（図示せず）からクロックモジュール８０４にクロックコマンド情報を少なくとも供給する。スキャンレイヤクロック信号（「ＳＣＬＫ」）８２２を用いて、スキャンチェーン又はその一部（図示せず）を駆動する。制御レイヤクロック信号８２０及びスキャンレイヤクロック信号８２２は実際には概念上のものとすることができ、プログラム可能テストクロックコントローラ８００を超えて拡張する必要はない点に留意されたい。
【００２３】
従来のスキャンテストクロック制御技術は、単一のスキャンイネーブル（「ＳＥ」）信号を使用して、スキャン経路と機能経路とを切り替えるが、プログラム可能テストクロックコントローラ８００は、従来の単一のスキャンイネーブル信号を少なくとも２つのスキャンイネーブル制御信号、すなわちスキャンイネーブルクロック（「ＳｅＣ」）制御信号８１２とスキャンイネーブルデータ（「ＳｅＤ」）制御信号８１４とに置き換える。ＳｅＤ制御信号８１４は、機能経路とスキャン経路とを切り替えるように構成されており、ＳｅＣ制御信号８１２は、スキャンクロックと機能（すなわちアット・スピード）クロックとを切り替える。有利には、クロック及びデータ制御の分離は、クロック生成構造の設計を簡素化し、スキャンシフトから起動及び取り込みオペレーションまでの同期を軽減し、逆もまた同様である。更に、別々のＳｅＤクロック制御信号８１４とＳｅＣデータ制御信号８１２はまた、同じチップ上のブロードサイド及びラスト−シフト−ローンチなどの種々のテストプロトコルを実施するためのプログラム可能テストクロックコントローラ８００の機能を提供する。
【００２４】
図９は、本発明の実施形態によるプログラム可能テストクロックコントローラによって実行される機能の実施例を示す図である。プログラム可能テストクロックコントローラ９００は、比較的低速のスキャンクロック（「ＳＣＬＫ」）９０２と比較的高速の機能クロック（「ＰＣＬＫ」）９０４とを切り替えて、テストクロック９３０を生成して、少なくともブロードサイド及びラスト−シフト−ローンチ遅延テストプロトコルを実施するように構成されている。詳細には、プログラム可能テストクロックコントローラ９００は、スキャンクロック９０２と機能クロック９０４のほぼ定常状態部分９０８との間でクロックソースを切り替える。定常状態位相９０６において同じ定常状態値（例えば論理低）を有するクロックソースを切り替えることによって、プログラム可能テストクロックコントローラ９００は、例えばデューティサイクルが変わらず、グリッチが最小になるように、スキャンクロック９０２と機能クロック９０４との間の安全なスイッチングを可能にする。１つの実施形態では、プログラム可能テストクロックコントローラ９００は、マルチプレクサ９１０を使用し、アット・スピードクロック生成経路において付加的な論理素子を必要とすることなくスキャンクロック９０２と機能クロック９０４とを切り替える。従って、プログラム可能テストクロックコントローラ９００は、クロックゲーティング目的で付加的な論理素子を使用する従来のテストクロックジェネレータに共通するクロックスキューを防ぐことができる。プログラム可能テストクロックコントローラ９００は、ブロードサイドクロッキングを供給するクロック９２６、又はラスト−シフト−ローンチクロッキングを供給するクロック９４６のいずれかとしてテストクロック９３０を構成することができる。このため、プログラム可能テストクロックコントローラ９００は、有利には、ブロードサイド及びラスト−シフト−ローンチプロトコルの両方を実施することができる。ブロードサイドクロッキング９２０を実施するために、プログラム可能テストクロックコントローラ９００は、スキャンモード中にＮ個のスキャンデータビットをスキャンチェーンにシフトするように動作し、その後、コントローラは、機能モード中に起動クロックエッジ９２２及び取り込みクロックエッジ９２４を両方ともアットスピードで供給する。ラスト−シフト−ローンチクロッキング９４０を実施するために、プログラム可能テストクロックコントローラ９００は、スキャンモード中にＮ−１個のスキャンデータビットをシフトさせるよう動作する。Ｎ番目−１ビット後、コントローラは、スキャンモードにおけるＮ番目のクロックエッジとして起動クロックエッジ９４２を供給し、その後、取り込みクロックエッジ９４４が機能モード中のＮ番目＋１クロック取り込みクロックエッジとして続く。
【００２５】
図１０は、本発明の実施形態によるプログラム可能テストクロックコントローラの実施例を示す図である。プログラム可能テストクロックコントローラ１０００は、クロックパルスコントローラ（「ＣＰＣ」）１００２を含み、該クロックパルスコントローラ１００２は、クロックパルスコントローラ１００２内にプログラムされたクロックコマンド情報（「ＣＣＩ」）１０１２に従ってクロック制御信号（「ＴＣ＿Ｅｎ」）１０２４を生成するように構成されている。クロックパルスコントローラ１００２は、制御レイヤ内に制御チェーン１０１２の一部を形成することができる。プログラム可能テストクロックコントローラ１０００はまた、クロックコマンド情報１０１２の一部に関係してテストクロック（「ＣＬＫ」）１０５２を生成するように構成されたテストクロックジェネレータ１０３０を含む。場合によっては、クロックコマンド情報１０１２は、機能クロック信号をテストクロック１０５２としてスキャンチェーンに加えるかどうかを指定する。プログラム可能テストクロックコントローラ１０００は、ＰＬＬ回路に入力することができる基準クロック（「Ｒｅｆ  Ｃｌｋ」）１０４６を受信する。基準クロック１０４６の位相は、１つ又はそれ以上のＰＬＬ回路から１つ又はそれ以上のＰＬＬ出力クロックにロックすることができる。
【００２６】
１つの実施形態では、クロックパルスコントローラ１００２は、クロック制御信号ジェネレータ１０１０及びクロック速度セレクタ１０２０を含む。クロック制御信号ジェネレータ１０１０は、クロックコマンド情報１０１２に基づいて各クロックエッジでクロック制御信号１０２４を生成し、クロック速度セレクタ１０２０は、個々のクロックエッジの各々に対してクロックサイクル周期を設定する。クロック速度セレクタ１０２０は、アット・スピードテストの第１クロック速度を示す第１周期と、少なくともスキャンチェーンを駆動するための第２クロック速度を示す第２周期との間で選択する。テストクロックジェネレータ１０３０は、テストセットアップ及び実行コントローラ１０４０と、テストクロックセレクタ１０５０とを含むことができる。テストセットアップ及び実行コントローラ１０４０は、データ配信モード又はテスト実行モードのいずれかでプログラム可能テストクロックコントローラ１０００を構成するよう動作する。更に、テストセットアップ及び実行コントローラ１０４０は、クロック速度制御信号（「ＣＰＣ＿Ｅｎ」）１０２２を供給し、個々のクロックエッジが例えばテストクロック１０５２としてシフトアウトされるクロック速度を選択する。テストクロックセレクタ１０５０は、機能クロック信号１０５４、又はクロック制御信号１０２４に基づいた個々のクロックエッジのサブセットのいずれかをスキャンチェーンに加えるように構成されている。クロック制御信号１０２４は、テストクロック１０５２を形成する機能クロック信号１０５４の個々のクロックエッジのプログラム可能な量を指定できる点に留意されたい。少なくとも１つの実施形態では、テストクロックセレクタ１０５０はまた、スキャンチェーンにスキャンデータをシフトインし、スキャンチェーンからスキャンデータをシフトアウトするためのテストクロック１０５２としてスキャンクロック（「ＳＣＬＫ」）１０５２を供給する。１つの実施形態によれば、テストクロックジェネレータ１０３０は、少なくとも２つの入力を含む。第１入力は、データ配信モード又はテスト実行モードのいずれかでプログラム可能テストクロックコントローラ１０００が動作することを示すスキャンイネーブルデータ（「ＳｅＤ」）信号１０４２を受け取るように構成され、第２入力は、機能クロック信号（「ＰＣＬＫ」）１０５４又は個々のクロックエッジのサブセットのいずれかをスキャンチェーンに加えるようにプログラム可能テストクロックコントローラ１０００を構成していることを示すスキャンイネーブルクロック（「ＳｅＣ」）信号１０４４を受け取るように構成されている。プログラム可能テストクロックコントローラ１０００は、スキャンイネーブルデータ信号１０４２がデータ配信モードを表す場合、スキャン−スピードクロック速度を使用してスキャンチェーン又は制御チェーンのいずれかにデータをシフトさせるように動作する。或いは、スキャンイネーブルデータ信号１０４２がテスト実行モードを表す場合、プログラム可能テストクロックコントローラ１０００は、アット・スピードクロック速度を使用して機能テストを行うように自らを構成するよう動作する。しかしながら、スキャンイネーブルクロック信号１０４４は、プログラム可能テストクロックコントローラ１０００にサイレント状態（例えば漏れＩＤＤＱテストを行う）又はアット・スピード起動及び／又は取り込みのいずれかで動作させる。図１０のプログラム可能テストクロックコントローラは、説明を簡単にするためにスキャンクロックデコーダを省いている点に留意されたい。
【００２７】
図１１は、本発明の実施形態による複数のスキャンイネーブル制御信号に基づくプログラム可能テストクロックコントローラ用のオペレーションの状態を示すテーブルである。テーブル１１００は、スキャンイネーブルデータ（「ＳｅＤ」）制御信号１１０１とスキャンイネーブルクロック（「ＳｅＣ」）制御信号１１０３が、本発明の種々の実施形態によるプログラム可能テストクロックコントローラの所要の機能を実施するのに用いることができる信号状態のセット１１０５（又はテストモード）を生成することを示している。サイレント状態１１０２の間、被試験回路に対する全クロックは遮断され、起動／取り込み状態１１０４では、アット・スピード機能クロックがスキャンチェーンに加えられ、遅延テストを実行する。スキャンロード／アンロードチェーン状態１１０６では、スキャンチェーンがロード又はアンロードされ、制御ロード／アンロード状態１１０８では、プログラム可能テストクロックコントローラをプログラムすることができる。一般に、スキャンイネーブルデータ制御信号１１０１の値により、プログラム可能テストクロックコントローラがデータ配信モード又はテスト実行モードのいずれかで動作するかが決定される。ＳｅＤ制御信号１１０１が１の値である場合、プログラム可能テストクロックコントローラは、ＡＴＥデバイスなどの外部ソースからのスキャンクロックを使用して比較的低速でデータ配信オペレーションに従事する。次に、ＳｅＣ制御信号１１０３が０の値である場合、プログラム可能テストクロックコントローラは、回路の内部レジスタを既知の状態に初期化するためにスキャンチェーンをロードするか又はアンロードするかのいずれかを行う。対照的に、ＳｅＣ制御信号１１０３の１の値は、プログラム可能テストクロックコントローラをクロックコマンド情報でプログラムさせるようにする。サイレント状態１１０２では、プログラム可能テストクロックコントローラは、被試験回路のドメインへの遷移を発生させるためにクロックパルスを加えない。この状態では、ＡＴＥは、一次入力（「ＰＩ」）に一次出力（「ＰＯ」）を測定させ、又は電源からアースまでのＩＤＤＱ漏れ電流を測定させることができる。ＳｅＤ制御信号１１０１が０の値を有する場合、プログラム可能テストクロックコントローラはアット・スピードテストを行い、機能クロックを使用して比較的高速で入力遷移を起動するか、又はテスト応答を取り込むか、或いはその両方を行うことができる。
【００２８】
図１２Ａ及び１２Ｂは、本発明の種々の実施形態によるスキャンクロックデコーダとプログラム可能テストクロックコントローラのそれぞれの特定の実施を示す。図１２Ａでは、スキャンクロックデコーダ１２００は、両方ともクロック制御信号である、スキャンチェーンを駆動するためのスキャンクロック（「ＳＣＬＫ」）１２０８と、プログラム目的の制御レイヤクロック（「ＴＣＬＫ」）１２１０とを駆動するための論理を含む。論理ゲート１２０１は、一次スキャンクロック（「ＳｃａｎＣｌｋ」）１２０６、スキャンイネーブルクロック制御信号（「ＳｅＣ」）１２０４、及びクロック制御信号（「ＴＣＥｎ」）１２０２を使用して、クロック制御信号ＳＣＬＫ、ＴＣＬＫを形成する。１つの実施形態において、ＡＴＥは、一次スキャンクロック１２０６とスキャンイネーブルクロック制御信号１２０４とを生成し、図１２Ｂのプログラム可能テストクロックコントローラに加えることができる。幾つかの実施形態において、スキャンイネーブルデータ制御信号（「ＳｅＤ」）１２１１を用いて、外部テスター又はＡＴＥによって一般的に供給される一次スキャンクロック（「ＳｃａｎＣｌｋ」）１２０６の状態とは無関係に、クロック制御信号ＳＣＬＫ及びＴＣＬＫの形成（例えば論理０でのＳｅＤ）をディスエーブルにするように論理ゲート１２０１ａのオペレーションを制御することができる。
【００２９】
図１２Ｂでは、プログラム可能テストクロックコントローラ１２２０は、クロックパルスコントローラ（「ＣＰＣ」）１２３０及びテストクロックジェネレータ（「ＴＣＧ」）１２５０を含む。クロックパルスコントローラ１２３０は、ＴＣＥｎ信号１２０２の値としてのクロックエッジのストリームを、クロックエッジの値を使用してアット・スピードテストクロックを形成するテストクロックジェネレータ１２５０に供給する。１つの実施形態では、クロックパルスコントローラ１２３０は、制御スキャンイン（「ＣＳＩ」）端子１２３６と制御スキャンアウト（「ＣＳＯ」）端子１２３８をそれぞれ介してシリアルにロード及びアンロードすることができる２ビットシフトレジスタ（「ＳＲ」）１２３４を含む。オペレーション時には、２ビットシフトレジスタ１２３４は、起動及び／又は取り込みオペレーション中に機能クロック（「ＰＣＬＫ」）１２５２に基づいて２アット・スピードパルスまで生成するための制御値を備えたＴＣＥｎ信号１２０２を供給する。少なくとも１つの実施形態では、２ビットシフトレジスタ１２３４は、テストクロックジェネレータ１２５０にシフトアウトされることになる個々のクロックエッジのプログラムされた量を保持する。クロックパルスコントローライネーブル（「ＣＰＣＥｎ」）信号１２４０が論理１の値を有する限り、ＴＣＥｎ信号１２０２は、起動／取り込み状態で機能クロック（「ＰＣＬＫ」）１２５２に基づいて「アットスピード」をシフトする。しかしながら、２ビットシフトレジスタ１２３４は、制御チェーンロード／アンロードオペレーション中に図１２Ａの比較的遅い一次スキャンクロック（「ＳｃａｎＣｌｋ」）１２０６に基づいて「スキャン−スピード」でシフトする。
【００３０】
２ビットシフトレジスタ１２３４は、サイレント状態並びにスキャンロード／アンロード状態の間はクロックパルスによってクロック制御されず、そのため、レジスタに記憶されたクロックコマンド情報はこれらの状態で変化されないままである点に留意されたい。幾つかの実施形態では、クロックパルスコントローラ１２３０は、クロックドメインイネーブル（「ＣＤＥｎ［ｉ］）制御信号１２４４を生成し、「ｉ番目」のクロックドメインを選択的にイネーブルにして、起動及び／又は取り込みオペレーションに参加する。代替の実施形態では、クロックパルスコントローラ１２３０は、ＩＣＬＫ信号１２４６を補完クロックコマンドソース（図示せず）に供給し、例えば文字列ジェネレータ入力（「ＳＧｅｎＩｎ」）１２４８から補完クロックコマンド情報を受け取る。補完クロックコマンドソースは、２ビットシフトレジスタ１２３４の機能を２ビットを超えて拡張する。
【００３１】
テストクロックジェネレータ１２５０は、テストクロック（「ＣＬＫ」）１２５４が機能クロック１２５２の部分とスキャンクロック（「ＳＣＬＫ」）１２０８の部分とから構成される所要の波形を供給するように構成されて設計されている。詳細には、テストクロックジェネレータ１２５０は、スキャンクロック（「ＳＣＬＫ」）１２０８と機能クロック（「ＰＣＬＫ」）１２５２とを切り替える。幾つかの実施形態において、機能クロック１２５２は、ＴＣＥｎ信号１２０２と論理積演算されてテストクロック１２５４を生成することができる。テストクロックジェネレータ１２５０は、ＳｅＤ信号１２５８及びＳｅＣ信号１２６０を使用して、機能クロック１２５２又はスキャンクロック１２０８のいずれかをクロックのソースとして選択する。更に、テストクロックジェネレータ１２５０は、これらの信号を使用して、テストクロック（「ＣＬＫ［ｉ］」）１２５４をクラフトするためのＴＣＥｎ信号１２０２を生成する。オペレーションでは、テストクロックジェネレータ１２５０は、クロックパルスコントローライネーブル信号１２４０を介してテストクロックをクロックパルスコントローラ（「ＣＰＣ」）１２３０と同期させ、該クロックパルスコントローライネーブル信号１２４０は、個々のクロックエッジがテストクロック１２５４として現れるクロック速度を選択するのに使用されるクロック速度制御信号である。
【００３２】
場合によっては、テストクロックジェネレータ１２５０は、阻止機能を有するストリームマルチプレクサとみなすことができる。すなわち、これは、ＴＣＥｎ信号値のストリーム（すなわち個々のクロックエッジの値）と論理積演算されたソースクロック信号波形を切り替えてテストクロック１２５４の波形を生成する。更に、ＳｅＣ信号１２６０及びＳｅＤ信号１２５８両方の状態は、ＴＣＥｎ信号値のストリームで論理積演算されたものであるソースクロックのいずれか１つを選択する。ソースクロックパルスは、ＴＣＥｎ信号１２０２が０の値を有する場合には阻止される。そうでなければ、ソースパルスは通過され、テストクロック１２５４の一部を形成する。更に、テストクロックジェネレータ１２５０は、起動及び／又は取り込みオペレーションの開始時に、「遮断」中又は論理値「ｌｏｗ」の定常状態位相において、スキャンクロック（「ＳＣＬＫ」）１２０８を選択することによって機能クロック経路によるビット毎のＡＮＤオペレーションを実行することから生じる発生可能なクロックスキューを阻止する。定常状態位相の実施例は、図９の定常状態位相９０８である。
【００３３】
図１２Ｂに示される実施例では、テストクロックジェネレータ１２５０は、サンプル及びホールドレジスタ（「ＳＨＲ」）１２７０と、クロック選択レジスタ（「ＣＳＲ」）１２７２とを含む。サンプル及びホールドレジスタ１２７０は、基準クロック（「Ｒｅｆ  Ｃｌｋ［ｋ］」）１２６２を使用してＳｅＣ信号１２６０をサンプリングし、更に、テストクロック速度選択のためにクロックパルスコントローライネーブル（「ＣＰＣＥｎ」）信号１２４０をクロックパルスコントローラ１２３０に供給する。ＣＰＣＥｎ信号１２４０が１の値を有する場合、マルチプレクサ１２４２は、機能クロック（「ＰＣＬＫ」）１２５２を選択する。０の値では、マルチプレクサ１２４２は、制御レイヤクロック（「ＴＣＬＫ」）１２１０を選択し、クロックコマンド情報ビットをシフトイン及びシフトアウトする。ＳｅＤ信号１２５８が０の値を有しＳｅＣ信号１２６０が１の値を有する場合、サンプル及びホールドレジスタ１２７０は１の論理値を生成する。それ以外は、サンプル及びホールドレジスタ１２７０の出力１２７１が論理０を保持する。幾つかの実施形態では、サンプル及びホールドレジスタ１２７０はまた、クロックドメイン間テストを行うための同期タイミング基準ポイントを提供することができる。
【００３４】
制御論理は制御レイヤクロック（「ＴＣＬＫ」）１２１０によってクロック制御されるので、サンプル及びホールドレジスタ１２７０はまた、制御レイヤでの制御論理に対しての縮退テストの実行を助ける。縮退テストを実施するために、ＲｅｆＣｌｋ１２６２が遮断される。サンプル及びホールドレジスタ１２７０は、ＳｅＤ信号１２５８によってリセットされ、静的テストの間はリセットされたままである。サンプル及びホールドレジスタ１２７０のリセット値は、静的テスト中にスキャンクロック（「ＳＣＬＫ」）１２０８を選択する。サンプル及びホールドレジスタ１２７０は、ＳｅＣ信号１２６０がクロック選択レジスタ１２７２に伝播するのを阻止するので、ＳｅＣ信号１２６０を用いて、縮退テストを行うためのクロック制御信号ＴＣＬＫ１２１０とＳＣＬＫ１２０８とを切り替えることができる。従って、プログラム可能テストクロックコントローラの起動／取り込み状態は、制御論理の縮退テスト中の取り込みに使用することができ、スキャンロード／アンロード状態は、データスキャンチェーンにアクセスするのに使用することができる。同様に、サイレント状態は取り込みに使用することができ、制御ロード／アンロード状態は、被試験回路の縮退テスト中に制御チェーンにアクセスするのに使用することができる。
【００３５】
クロック選択レジスタ１２７２は、ソースクロックを選択してテストクロック１２５４の構成可能な部分を形成するクロック選択制御情報を記憶するように構成されている。クロック選択レジスタ１２７２のクロック選択制御情報は、サンプル及びホールドレジスタ１２７０とＴＣＥｎ信号１２０２の両方の状態によって決定される。通常の機能モードでは、テストモード信号（「ＴＭ」）１２８０がクロック選択レジスタ１２７２をリセットする。従って、機能クロック１２５２は、テストクロック１２５４に接続されている。クロック選択レジスタ１２７２の状態は、パワーダウン信号（「ＰＷＤ」）１２８２が加えられない限り機能モード中は変化しないままである。パワーダウン信号（「ＰＷＤ」）１２８２は、通常機能モードの間は対応するクロックドメインのオペレーションを停止することができる。クロックドメインをパワーダウンすることは、低出力回路のアプリケーションをテストするのに所要の機能とすることができる。しかしながら、パワーダウン信号（「ＰＷＤ」）１２８２は、種々の実施形態の構造をテストするために拡張機能を提供することができる。詳細には、ＰＷＤ１２８２は、テストクロックコントローラに組み込まれ、機能クロック経路に沿って介在する追加の論理ゲートを挿入することなくクロックゲーティングを行う。ＰＷＤ信号１２８２がテストクロック１２５４の機能クロックを遮断するよう設定された場合、マルチプレクサ１２５５は、通常機能モード中はイナクティブであるスキャンクロック（「ＳＣＬＫ」）１２０８を選択し、これによってテストクロック１２５４としてクロックパルスは生成されない点に留意されたい。更に、ＰＷＤ信号１２８２はまた、機能テスト及びシリコンデバッグの両方でクロック停止回路として使用することができる。従って、埋め込まれた内部モニター回路（図示せず）がシステムエラーを検出した場合に、有利には問題のあるクロックドメインを遮断することができる。エラーが検出された場合、エラーが更に伝播しないように対応するクロックドメインを停止することができる。これにより、エラーを迅速に検出するための制御メカニズムのない比較的長いスキャンチェーンを含む従来のスキャンチェーン構造を使用するデバッギング回路と比べた場合、デバッグプロセスが簡素化される。多くの場合、数クロックサイクルを超えるエラー又は遅延検出のいずれかを妨げるのは、従来のスキャンチェーンの長さ及び介在する論理からの出力である。対照的に、本発明の種々の実施形態は、ＰＷＤ１２８２を用いて、例えば数個のクロックサイクル又はこれよりも少ない範囲内で迅速にエラーを検出するためにテストを停止することができる。パワーダウン信号（「ＰＷＤ」）１２８２を生成するためのＰＷＤ信号ジェネレータは、低出力回路アプリケーションを提供するための回路設計の当該技術で公知であり、詳細に説明する必要はない点に留意されたい。
【００３６】
図１３は、本発明の１つの実施形態による特定のクロックドメインをプログラムするための図１２Ｂの２ビットシフトレジスタの実施例の状態図を示す。２ビットシフトレジスタ１３００をロードすることによって、個々のクロックドメインは、スキャンロード及びアンロードオペレーション用に、並びに起動及び取り込みオペレーション用にプログラムすることができる。状態図１３１０は、図１２Ａ及び１２ＢのＴＣＥｎ信号１２０２が、２ビットシフトレジスタ１３００内に記憶されたプログラム状態からどのように生成されるのかを要約している。状態図１３１０は、補完クロックコマンドソースからの文字列ジェネレータ入力（「ＳＧｅｎＩｎ」）１３０２が使用されない（すなわち、ＳＧｅｎＩｎ端子が０の値に設定される）と仮定している。状態１３１２から状態１３１８までの各状態は、２ビットシフトレジスタ１３００のコンテンツを表し、遷移は「ＳＧｅｎＩｎ／ＴＣＥｎ」の表記でラベル付けされている。補完クロックコマンドソースの使用を除外する入力制約（すなわち、ＳＧｅｎＩｎ＝０）により、破線１３２０で示される幾つかの遷移は適用されない点に留意されたい。２ビットシフトレジスタ１３００の初期状態は、起動／取り込み状態１３１２（ＳＲのコンテンツは「１１」である）、起動のみの状態１３１４（ＳＲのコンテンツは「１０」である）、取り込みのみの状態１３１８（ＳＲのコンテンツは「０１」である）、及びディスエーブル状態１３１６（ＳＲのコンテンツは「００」である）を含む。つまり、２ビットシフトレジスタ１３００での１の数は、テストクロックＣＬＫ［ｉ］としてパスすることができる機能クロックパルスの数に対応する。
【００３７】
例えば、２ビットシフトレジスタ１３００がコンテンツ「１１」を含む場合、２つの連続する機能クロックパルスが生成されてテストクロックを形成し、すなわち１つが起動オペレーション用のパルスエッジであり、もう１つが取り込みオペレーション用のパルスエッジである。起動／取り込み状態１３１２の終了後、２ビットシフトレジスタ１３００は、ディスエーブル状態１３１６に達し、「００」のコンテンツによりテストクロックＣＬＫがディスエーブルになる。具体的には、ディスエーブル状態１３１６は、スキャンクロックＳＣＬＫをディスエーブルにする。ＳＣＬＫは起動／取り込み中に休止状態になることができる点に留意されたい。同様に、２ビットシフトレジスタ１３００が「１０」又は「０１」のいずれかの値を含む場合、起動のみの状態１３１４及び取り込みのみの状態１３１８に対して１つの機能クロックパルスが出される。起動クロックパルスエッジと取り込みクロックパルスエッジと間の差違は、これらのクロックエッジの時間的変位である。例えば、起動クロックパルスは、一般に、少なくとも１つの機能（「ＰＣＬＫ」）クロック周期だけ取り込みクロックパルスに先行する。
【００３８】
スキャンロード及びアンロードオペレーションを実施するために、２ビットシフトレジスタ１３００の初期状態は、テストクロックがスキャンクロックパルスを含むかどうかを判断するＴＣＥｎ信号値を供給する。２ビットシフトレジスタ１３００が「１ｘ」のコンテンツを含む場合、スキャンクロックは、スキャンロード及びアンロードオペレーションに対してイネーブルにされ、ここでｘは「ドント・ケア」を意味する。しかしながら、コンテンツが「０ｘ」である場合、スキャンクロックはディスエーブルにされ、パルスエッジはスキャンチェーンに加えられない。ＴＣＥｎ信号の値は、一般的にスキャンロード／アンロードの間は変化しない点に留意されたい。１つの実施形態では、全てのスキャンチェーンが選択的にではなく同時にロード／アンロードされることになる場合、ＳＣＬＫ経路におけるＡＮＤゲートを取り除くことができる。
【００３９】
図１４Ａ及び１４Ｂは、本発明の種々の実施形態による、起動及び取り込みオペレーションを行うためのテストクロックと、これに対応するクロックドメインをディスエーブルにするためのテストクロックとをそれぞれ構築するようにプログラム可能テストクロックコントローラを構成するための信号のタイミングを示している。図１４Ａのタイミング図１４００は、どのようにプログラム可能テストクロックコントローラがスキャンクロック（「ＳＣＬＫ」）信号及び機能クロック（「ＰＣＬＫ」）信号１４０２を使用して、起動及び／又は取り込みオペレーションの構成可能なテストクロック波形（「ＣＬＫ」）１４１０を生成するかを示している。他の信号１４２０は図示の状態に初期化されると仮定する。ＣＰＣＥｎ信号１４０６は、スキャンロード又はアンロードオペレーションの後に論理０の値に設定される。ＣＰＣＥｎ信号１４０６の値は、出力信号の値（「Ｍｕｘ．Ｓ０」）１４０８を論理１にする。ＳｅＣ信号１４０１及びＳｅＤ信号１４３０の両方が論理０の値に設定された場合、ＣＰＣＥＮ信号１４０６は、論理０の値を維持し、これによってクロック選択レジスタ（「ＣＳＲ」）出力信号（「Ｍｕｘ．Ｓ０」）１４０８を１の論理値に保持する。従って、ＣＳＲ出力信号１４０８は、マルチプレクサに、スキャンモード間隔１４１３中にテストクロック１４１０を形成するスキャンクロック（「ＳＣＬＫ［ｉ］」）１４１２を選択させる。次に、ＴＣＥｎ信号１４０４がイネーブル（すなわち１の値）であるときに、クロックパルスコントローラは、制御チェーンからのロードオペレーション中にそのシフトレジスタにおいて「１１」の値を含む（すなわちＳＲ＝１１）ようにプログラムされると仮定する。ＣＳＲの状態は、ＳｅＣ信号１４０１が１の論理値に遷移するまでＣＰＣＥｎ信号１４０６に対して論理０の値を継続して生成する。次いで、ＳｅＣ信号１４０１がサンプル及びホールドレジスタにサンプリングされた後の機能クロック信号１４０２の第１立ち下がりエッジ１４９０で、ＣＰＣＥｎ信号１４０６のエッジ１４０７での１の論理値がクロック選択レジスタに取り込まれる。クロック選択レジスタコンテンツの状態がＣＳＲ出力信号１４０８を１の論理値から０に変える場合、マルチプレクサは、テストクロック１４１０として機能クロック（「ＰＣＬＫ［ｉ］」）１４１４を選択する。機能モード間隔１４１５の間、２つの連続する機能クロックパルス１４１９は、起動クロックパルス及び取り込みクロックパルスとしてＴＣＥｎ信号１４０４によってイネーブルにされる。各機能クロックパルス１４１９に対し、０の論理値が（例えば、論理ゼロに設定されたＳＧｅｎＩｎ入力を介して）シフトレジスタにシフトされる点に留意されたい。シフトレジスタがディスエーブル状態に達した（すなわち、そのコンテンツが値「００」を含む）場合、ＴＣＥｎ信号１４０４はディスエーブルにされ、エッジ１４２１で０の論理値に下がる。更に、ＣＳＲ出力信号１４０８は、エッジ１４２３で状態が変化することで、プログラム可能テストクロックコントローラを間隔１４１７の間はスキャンモードに戻し、テストクロック１４１０としてスキャンクロック（「ＳＣＬＫ［ｉ］」）１４１６を出力する。
【００４０】
スキャンクロック１４１２は一般に、ＳｅＤ信号が論理０にある場合に０の定常状態値に維持される点に留意されたい。プログラム可能テストクロックコントローラは、論理０の定常状態値にある場合、マルチプレクサ出力（すなわち、出力信号１４０８）の遷移が機能クロック１４０２のデューティサイクルのほぼ中間１４３０で発生することを目標にする。有利には、定常状態段階１４３２の中間１４３０にあるスイッチングテストクロック１４１０は、製造で発生する可能性のあるプロセス変動に対する耐性をもたらし、これによってタイミングの不確実性を低減すると共に、不変の機能クロックデューティサイクルを維持する。
【００４１】
図１４Ｂのタイミング図１４５０は、本発明の１つの実施形態による、クロックドメインをディスエーブルにするための構成可能なテストクロック波形をプログラム可能テストクロックコントローラがどのように生成するかを示している。他の信号１４７０は、図示の状態に初期化されると想定する。従って、シフトレジスタ（「ＳＲ」）は「００」のコンテンツがロードされ、これによって論理０のＴＣＥｎ信号１４５４値を生成する。この結果、クロック選択レジスタは、１の論理値を有するＣＳＲ出力信号１４５８を生成し、これによってテストクロック１４６０としてスキャンクロック（「ＳＣＬＫ［ｉ］」）１４６２を選択する。従って、テストクロックに対してスキャンパルスも機能パルスも生成されない。
【００４２】
図１５は、本発明の１つの実施形態による単純化されたクロックパルスコントローラと単純化されたテストクロックジェネレータとを含むプログラム可能テストクロックコントローラを示す。プログラム可能テストクロックコントローラ１５００は、単純化されたクロックパルスコントローラ１５０２と単純化されたテストクロックジェネレータ１５２０とを含み、これらの両方が図１２Ｂに記載された同じ名前の信号と対話する。プログラム可能テストクロックコントローラ１５００は、図１２Ｂのプログラム可能テストクロックコントローラと同様に動作し、起動及び／又は取り込みオペレーション及び順次的なテスト機能を提供するように特に構成されている。この場合、単純化されたクロックパルスコントローラ１５０２は、シングルビットを記憶し供給するための１ビットシフトレジスタ（「ＣＰＣＲ」）１５０４を含む。例えば、プログラム可能テストクロックコントローラ１５００は、１［１*００］又は０［ｘ*］などのＴＣＥｎ信号１５０６値の対応するストリームを供給することができ、ここで１ビットシフトレジスタ５０４の初期状態が第１ビット（すなわち、ブラケット間のビットが外部から供給される）のみを含む。この場合、クロック速度制御信号（例えばＣＰＣＥｎ信号）はＳｅＤ１５２１から得られる。信号ＳｅＤ１５２１は、ＭＵＸ１５０８にスキャンロード／アンロード後にＣＬＫ［ｉ］を選択させる。しかしながら、ＣＬＫ［ｉ］は、一般的に、ＣＳＲ１５２４の出力がＣＬＫ［ｉ］を選択するよう設定されるまで休止状態にある。これは、論理０から１へ信号ＳｅＣ１５２３の値の変化によって起こる。プログラム可能テストクロックコントローラ１５００は、起動及び取り込みオペレーション用にＴＣＥｎ信号１５０６値を適応させるために有効な２ビットシフトレジスタ（「ＳＲ」）として１ビットシフトレジスタ１５０４とクロック選択レジスタ１５２６の両方を実装することができる。クロック選択レジスタ１５２６は、クロックコマンド情報のローディング及びアット・スピードテストの両方のテストクロックを決定する点に留意されたい。オペレーションにおいて、１ビットシフトレジスタ１５０４のコンテンツは、起動又は取り込みオペレーションの前にクロック選択レジスタ１５２６にコピーされる。１ビットシフトレジスタ１５０４をシフトすることによって、ＴＣＥｎ信号１５０６の値は、出力１５２４を介してマルチプレクサ１５２８に加えられる。別の実施形態では、単純化されたテストクロックジェネレータ１５２０は、同期式サンプル及びホールドが正確な又は安全なテストオペレーションを保証するのに十分でない場合に対応する２ビットシンクロナイザー１５２２を含む。また、図示されていないが、基準クロックＲｅｆＣｌｋ［ｋ］を用いて、機能クロック（「ＰＣＬＫ［ｉ］」）１５３０の代わりにシンクロナイザー１５２２を駆動することができる。
【００４３】
図１６は、本発明の１つの実施形態による補完クロックコマンドソースを含むプログラム可能テストクロックコントローラを示す。図示のように、プログラム可能テストクロックコントローラ１６００は、補完クロックコマンドソース（「ＳＣＣＳ」）１６０２に結合され、生成された機能クロックパルスをプログラム可能な時間量だけ阻止又は遅延させる。補完クロックコマンドソース１６０２は、例えば個々のクロックエッジに対してクロック制御（「ＴＣＥｎ」）信号値として所要のバイナリビットストリームを生成する有限状態機械とすることができる。図１２Ｂを再度参照すると、ＳＧｅｎＩｎ信号１２４８が制限されていない（すなわち、他の場合には２ビットのシフトアウト後にプログラム可能テストクロックコントローラをディスエーブルにする定常状態の「ｌｏｗ」値に保持されていない）場合、補完クロックコマンドソース１６０２によって生成されたビットストリームは、マルチサイクル経路テストを促進することができる点に留意されたい。従って、取り込みクロックエッジは、特定の起動クロックエッジの後の幾つかの機能クロックパルスを阻止することによって複数のサイクルだけ遅延させることができる。図１３を参照すると、最初に２ビットシフトレジスタ１３００の初期状態のように起動のみの状態１３１４（すなわち「１０」にプログラムされたコンテンツを持つ）から始めることによって、マルチサイクルクロッキング方式を実施することができると仮定する。その結果、１０［０*１００*］の図１６のＴＣＥｎ信号値１６０４は、遅延テストのマルチサイクル経路をサポートすることができる。補完クロックコマンド情報［０*１００*］（すなわち、「１０」の最初の２ビット後のシーケンスの残り）は、補完クロックコマンドソース１６０２によって提供することができる。
【００４４】
有利には、補完クロックコマンドソース１６０２は、マルチサイクルに対して１０*１００*、順次的に対して１*００*、及び起動のみ又は取り込みのみのいずれかでは０*１００*のＴＣＥｎ値を生成し、これに応じて、マルチサイクル経路テストオペレーション、順次テストオペレーション、及び遅延起動のみのオペレーション又は取り込みのみのオペレーションを実施する。ＴＣＥｎ値１６０４の最初の２ビットは、クロックパルスコントローラ内に記憶することができる。「ｘ*」の最初の発生の後に「ｘ」の補完が続き、その後で「００*」が続く。最後の文字列「００*」は、テスト動作の最後で機能クロックをディスエーブルにし、これによってプログラム可能テストクロックコントローラ１６００をディスエーブル状態にする。幾つかの実施形態では、補完クロックコマンドソース１６０２は、ＴＣＥｎ信号１６０４に対してｋビットの値（又は個々のクロックエッジ）まで供給するｋビットシフトレジスタとすることができる。しかしながら、ｋが比較的大きい場合、文字列ジェネレータを利用してハードウェアオーバーヘッドを低減することができる。
【００４５】
図１７Ａ及び１７Ｂは、本発明の種々の実施形態に従って文字列ジェネレータとして実施される補完クロックコマンドソースとその対応する状態図とをそれぞれ示す。１つの実施形態では、文字列ジェネレータ１７００は、補完クロックコマンド情報を表わすデータビットの文字列を生成し、文字列は、例えばｋビットレジスタにｋデータビットを記憶することが必要なある量のメモリ要素よりも一般的に長いビット長を有する。文字列ジェネレータ１７００は、第１パルス値及び第２パルス値を記憶するように構成されたビット保持ユニット１７２０と、幾つかの介在クロックサイクルが第１パルス値と第２パルス値との間でシフトされた後、専用リングカウンタの最上位ビット（「ＭＳＢ」）の論理遷移を行うための専用リングカウンタ１７２０とを含む。例えば、ビット保持ユニット１７２０は、ＴＣＥｎ信号値のストリームで０又は１のいずれかの論理値を「ｎ」回生成することができる。専用リングカウンタ１７２０は、生成されることになるパルスの数を追跡する。専用リングカウンタ１７２０の初期コンテンツは、ＣＳＩ１７１１及びＣＳＯ１７１２を介して連続してロード又はアンロードすることができる。起動及び取り込みオペレーションの間、カウンタはゼロ状態に達するまでカウントし続ける。
【００４６】
オペレーションにおいて、ビット保持ユニット１７１０は、論理０の値を有するゼロ（「ゼロ」）信号１７１６が端子１７１４に達するまで初期値を保持する。従って、ゼロ信号１７１６は、専用リングカウンタ１７２０がゼロ状態に達しているか否かを示す。レジスタ（「Ｇ１」）１７０２及びレジスタ（「Ｇ０」）１７０４は、例えば起動及び／又は取り込みオペレーションが次に進む前に補足論理値で初期化される。補足論理値は、カウントの終了時にクロックパルスコントローラ（図示せず）に出力される。専用リングカウンタ１７２０は、リロードされるまでゼロ状態のままである。説明の目的で、ゼロ信号１７１６は、論理１の値を有し、レジスタ１７０２及び１７０４は補足論理値を含むと仮定する。更に、ＸＯＲゲート１７１８は、レジスタ１７０４のコンテンツが変化しないようにするために追加の反転を導入する。次に、ゼロ信号１７１６は論理０の値を有し、これによって２ビットシフトレジスタとしてビット保持ユニット１７１０を構成すると仮定する。ＸＯＲゲート１７１８は、ゼロ信号１７１６が論理１の値を有する場合に反転器として機能するが、それ以外はバッファとして動作する点に留意されたい。従って、ゼロ信号１７１６が０の値に達した後の２つの機能クロックサイクル、すなわちレジスタ１７０２及び１７０４の各々は、０の論理値を含む。両方のレジスタ１７０２及び１７０４からのコンテンツに基づいて、ＳＧｅｎＥｎ信号１７１９は、文字列ジェネレータ１７００がイネーブルか否かを示すために生成される。レジスタ１７０２及び１７０４がそれぞれ０及び０の論理値を含む場合、ＳＧｅｎＥｎ信号１７１９は、文字列ジェネレータ１７００がディスエーブルである（及びリロードされるまでディスエーブルのままである）ことを示す。これ以外は、文字列ジェネレータ１７００は、起動及び／又は取り込みオペレーションに対してイネーブルである。図１７Ｂの状態図１７５０は、ビット保持ユニット１７１０のオペレーションを説明するための状態図１７６０を含む。
【００４７】
図１７Ａを再度参照すると、専用リングカウンタ１７２０は、レジスタ（「Ｇ１」）１７０４が保持する幾つかの機能クロックサイクル（例えば、起動クロックエッジと取り込みクロックエッジとの間の幾つかの個々のクロックエッジ）を含むようにプログラム可能である。文字列ジェネレータ１７００は、ゼロ検出能力を有する専用リングカウンタ１７２０を利用する。図示の実施例では、専用リングカウンタ１７２０は、３ビットリングカウンタ１７２２を実装する。有利には、３ビットリングカウンタ１７２２は、起動及び取り込みオペレーションの間のゼロ出力に対する単一のＯＲゲート遅延の最悪状況遅延を維持する。３ビットリングカウンタ１７２２は、専用リングカウンタ１７２０の最上位ビット（「ＭＳＢ」）をイネーブルにして、論理１から０遷移を有するゼロ信号１７１６として出力信号を設定することによって遅延を１ＯＲゲート遅延に制限する。ＯＲゲートのチェーン１７２４は、ゼロ信号１７１６においてゼロ値を直接決定するために最下位ビット（「ＬＳＢ」）から遷移が伝播しないという点で偽経路を提供する。専用リングカウンタ１７２０は、Ｎが本発明の他の実施形態でＭビットリングカウンタを実装するのに使用されるフリップフロップの数である場合、２Ｎまでカウントできる点に留意されたい。他のカウンタを文字列ジェネレータに組み込んでもよい。図１７Ｂの状態図１７５０は、３ビットリングカウンタ１７２２の動作を表す状態図１７７０を含む。
【００４８】
図１８は、本発明の実施形態に従って電子デバイス及びその回路をテストするためにプログラム可能テストクロックコントローラのあらゆる数を実装する概念的なテストクロック制御構造を示すブロック図を示している。テストクロック制御構造１８００は、あらゆる数Ｎのプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）を含み、その１つがＰＴＣＣ１８１０として示されている。テストクロック制御構造１８００の各ＰＴＣＣは、スキャンクロック（「ＳＣＬＫ」）１８１６などのソースクロックと、機能クロック（「ＰＣＬＫ［１．．Ｎ］」）１８０６の１つとを切り替えるマルチプレクサ（「ＭＵＸ」）１８１２を含む。この実施例では、１つ又はそれ以上のＰＬＬ回路１８０２は、ＰＬＬ出力クロック１８０６にロックされた位相を有する１つ又はそれ以上の基準クロック（「Ｒｅｆ  Ｃｌｋ［１．．Ｍ］」）１８０１から機能クロック１８０６を生成する。更に、各ＰＴＣＣは、クロックコマンド情報（「ＣＣＩ」）を加え、テストクロック（「ＣＬＫ［１．．Ｎ］」）１８１８からの少なくとも１つのテストクロックを有するスキャンチェーン１８２０において１つ又はそれ以上のフリップフロップ及び／又はスキャンチェーンを駆動するための論理１８１４を含む。スキャンチェーン１８２０は、順次的なセル１８２０ａのどのような数も含み、その１つは図１８に示されている。１つの実施形態では、順次セル１８２０ａはマルチプレクサ（「ｍｕｘ」）１８７０と記憶要素１８７２とを含む。マルチプレクサ１８７０は、スキャンイネーブルデータ（「ＳｅＤ」）制御信号１８４０の再時間調節バージョンであるＳＥ２ＦＦ信号１８７１によって制御され、入力１８８０（例えば被試験回路からの結果として得られるデータ）又はスキャンチェーン入力（「ＳＩ」）１８８２（前の順次セルから）のいずれかを記憶要素１８７２に切り換える。記憶要素は、出力１８８４として（例えば被試験回路への刺激データとして）及び／又はスキャン出力（「ＳＯ」）１８８６を介して次の順次セルにデータを供給するように構成されている。
【００４９】
この実施例では、ＰＴＣＣ１８１０は、制御チェーン１８３０の少なくとも一部からクロックコマンド情報を受け取る。幾つかの実施形態では、スキャンチェーン１８２０及び／又は制御チェーン１８３０は各々、単一のチェーン（例えば連続してデータをシフトする）又はスキャンチェーンの幾つかの部分（例えば、並行してデータをシフトする）のいずれかを含むことができる点に留意されたい。幾つかの実施形態では、ＡＴＥ（図示せず）は、ＳｅＤ信号１８４０、ＳｅＣ信号１８４２、一次スキャンクロック（「ＳｃａｎＣｌｋ」）信号１８４４、及び基準クロック１８０１を生成する。少なくとも１つの実施形態では、これらのＡＴＥ生成信号はグローバル信号である。すなわち、これらは、テストクロック制御構造１８００でＰＴＣＣに加えられる。幾つかの実施形態では、オプションのテスト用設計（「ＤＦＴ」）ブロック１８５０が追加される。ＤＦＴブロック１８５０は、ＳｅＤ信号１８４０及びクロックドメインイネーブル（「ＣＤＥｎ」）信号１８５２によって制御される幾つかのフリップフロップ（「ＳｅＦＦｓ」）１８６０を含む。一般に、ＳｅＤ信号１８４０のタイミング制約を確保するためのＳｅＦＦｓ１８６０は、例えば大きなシステム（例えばチップ上のシステム）でのラスト−シフト−ローンチテストプロトコルに適合する。論理１８１４が起動及び／又は取り込みオペレーションを行うためのクロックコマンド情報を含む場合、ＣＤＥｎ信号１８５２は、対応するＰＴＣＣにプログラムされたコンテンツに基づいてＳｅＦＦｓ１８６０のコンテンツを調節する。ＣＤＥｎ信号１８５２の状態は、ＳｅＦＦｓ１８６０のコンテンツをイネーブルにされたクロックドメインに保持し、ディスエーブルにされたクロックドメインのＳｅＦＦｓ１８６０をリセットする。従って、イネーブルにされたクロックドメインのみが、ラスト−シフト−ローンチテストに参加することができ、他のクロックドメインはディスエーブルにされるか、又は機能モードで動作することができる。
【００５０】
図１９は、本発明の実施形態による種々のドメインで回路をテストするためのプログラム可能テストクロックコントローラを実施するテストクロック制御構造を示す図である。テストクロック制御構造１９００（又はその一部）は、クロックドメイン１９０２ａ、１９０２ｂ、及び１９０２ｃとそれぞれ対話するためにプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）１９１０、１９２０、及び１９３０を含む。各クロックドメイン１９０２は、１つ又はそれ以上のスキャンチェーン１９０４（又はその一部）と被試験回路１９０６とを含む。この実施例では、クロックドメイン１９０２のスキャンチェーン１９０４は、１つ又はそれ以上のスキャンチェーン部分１９０４が例えばスキャンアンロード／ロードオペレーションを受けるが、他は受けない点で並行している。更に、１つ又はそれ以上のクロックドメインは、テストプロトコルの同じ又は異なるタイプで実行できると同時に、他は待機状態のままか又は他のテストに従事することができる。例えば、ＰＴＣＣ１９１０及び１９２０にそれぞれロードされたクロックコマンド情報（「ＣＣＩ」）１９１２及び１９２２がクロックドメイン１９２０ａで起動オペレーションを生じ、クロックドメイン１９２０ｂで取り込みオペレーションを生じることで、ドメイン間テストを実施すると仮定する。これは、クロックドメイン１９０２ｃのスキャンチェーン部分１９０４が、例えばＣＣＩ１９２４に応じてドメイン１９０２ｃをディスエーブルにするＰＴＣＣ１９３０の結果として、ロード／アンロードオペレーションを受けるか又はイナクティブ（例えば静的テストを行うために）である場合に起こる可能性がある。テストクロック制御構造１９００が１つ又はそれ以上のクロックドメイン１９０２を並行してテストする柔軟性をもたらすので、クロックドメイン間の順次的な依存が低減され、その結果自動化されたテストパターン生成の複雑さが軽減される。有利には、テストクロック制御構造１９００における並行ドメインの実施は、スキャンロード／アンロードオペレーションの数を低減することによって全体的なテスト時間及びテストデータボリュームを低減することができる。図１９はクロックドメインとしてのドメイン１９０２を示しているが、クロックドメインは、パワードメインなどの他のどのようなタイプのドメインとしても特徴付けることができる。テストクロック制御構造１９００に関する前述の説明は、以下の図２３及び２４にも適用可能である。
【００５１】
図２０は、本発明の実施形態によるテストアクセスポイントを低減するために一次入力２０２０と一次出力２０２２とを共用する制御チェーン２００２及びスキャンチェーン２００４を示す図である。この実施例では、ＳｅＣ信号２００１が、制御チェーン２００２又はスキャンチェーン２００４のいずれかからシフトされたデータをマルチプレクサ２００６に選択させ、ＳｅＤ信号２００３が、チェーンから又は機能出力からシフトされたデータをマルチプレクサ２００８に選択させる。
【００５２】
図２１は、本発明の１つの実施形態によるドメイン間テストを実行するように構成されたテストクロック制御構造を示す。テストクロック制御構造２１００は、２つのクロックドメインに対して遅延テストを協働させるためのプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）２１１１及びＰＴＣＣ２１２１を含む。クロックドメイン２１０２及びクロックドメイン２１０４はそれぞれ回路２１０３及び２１０５を含み、この両方は、本質的に異なるクロック周波数で共に動作するように設計されている。従って、ＰＴＣＣ２１１１は、機能クロックＰＣＬＫ［ｉ］２１１０を使用して第１クロック速度を生成することができ、ＰＴＣＣ２１２１は、機能クロックＰＣＬＫ［ｊ］２１２０を使用して第２クロック速度を生成することができる。本発明の種々の実施形態によれば、ＰＴＣＣ２１１１及び２１２１のクロックパルスコントローラ２１３０は、相対的に同時に起動のみのオペレーション及び取り込みのみオペレーションをそれぞれ実行し、ドメイン間領域２１５０でインタフェース回路及び同様のものをテストするように制御チェーン２１４０を介してプログラムすることができる。起動のみのオペレーション及び取り込みのみのオペレーションを含むマルチサイクル経路テストオペレーションを統合するために、自動化テストパターンジェネレータ（「ＡＴＰジェネレータ」）として機能するように構成されたコンピュータデバイスは、ドメイン間テストを実行してドメイン間領域２１５０における欠陥を検出するためのＰＴＣＣ２１１１及び２１２１のオペレーションを同期させるテストパターンを作成することができる。例えば、ＡＴＰジェネレータは、共通基準クロック（「Ｒｅｆ  Ｃｌｋ」）２１６０を使用してタイミング基準ポイントを設定することができる。他の実施形態では、ＡＴＰジェネレータはまた、互いに対して非同期の異なる基準クロックを使用してドメイン間テストを行うことができる。幾つかの実施形態では、用語「マルチサイクル経路テスト」は、一般的にドメイン間テスト又はドメイン内テスト、或いはこれらの両方を意味することができる点に留意されたい。
【００５３】
図２２Ａ及び２２Ｂは、本発明の種々の実施形態に従って１つ又はそれ以上のタイミング基準ポイントを使用して時間間隔を計算しドメイン間テストを実施するための種々の技術を示す。図２２Ａは、共通基準クロック（「Ｒｅｆ  Ｃｌｋ［ｋ］」）２２１６を用いてタイミング基準ポイント２２２０を提供し、１つ又はそれ以上のプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）によって行われるオペレーションを遅延させる幾つかのクロックサイクルを決定する方法を示している。ＰＴＣＣは、ＳｅＣ信号２２１８がサンプリングされた後に起動オペレーション又は取り込みオペレーションのいずれかを遅延させることができる。ＰＴＣＣは、その特定のクロックドメインにおけるテストクロックに対してオペレーションを遅延させる。ドメイン間（例えばクロックドメイン間）テストが、クロックドメイン［ｉ］から取り込みが行われる別のクロックドメイン［ｊ］に起動を行うように設計することができると仮定する。従って、クロックドメイン［ｉ］の起動クロックパルスは、ＳｅＣ信号２２１８がサンプリングされた後に４ＰＣＬＫ［ｉ］クロックサイクルだけ遅延させることができる。更に、クロックドメイン［ｊ］の取り込みオペレーションは、１ＰＣＬＫ［ｊ］クロックサイクルだけ遅延させることができる。Ｒｅｆ  Ｃｌｋ［ｋ］クロック２２１６の位相は、少なくともＰＣＬＫ［ｊ］２２１２及びＰＣＬＫ［ｊ］２２１４にロックされる点に留意されたい。「時間間隔」は、ＰＣＬＫ［ｉ］２２１２又はＰＣＬＫ［ｊ］２２１４のいずれかなどのある一定のクロックに対する幾つかのサイクルにおける遅延である。従って、ＡＴＰジェネレータは、基準クロックエッジ２２２０から始まり指定された起動（又は取り込み）クロックエッジまでのＰＣＬＫ［ｉ］２２１２の立ち下がりエッジの数をカウントすることによって時間間隔を算出することができる。ＡＴＰジェネレータは、時間間隔に基づいてテストパターンを形成することができる。次いで、ＡＴＥは、時間間隔をＰＴＣＣのクロックパルスコントローラ並びにスティングジェネレータにプログラムしてマルチサイクルテストを行うことができる。
【００５４】
図２２Ａの図２２３０は、クロックドメイン［ｉ］からの遷移を起動し、これをクロックドメイン［ｊ］で取り込むための算出時間間隔２２３２及び２２３４を示している。そのため、入力遷移は、Ｒｅｆ  Ｃｌｋ［ｋ］２２１６の立ち上がりエッジ２２２０から４立ち下がりエッジの遅延（例えば４の時間間隔２２３２）後にＰＣＬＫ［ｉ］２２１２の５番目の立ち上がりエッジ２２１７で起動することができる。遷移は、１立ち下がりエッジの遅延（例えば、１の時間間隔２２３４）の後でクロックＰＣＬＫ［ｊ］２２１４の２番目の立ち上がりエッジ２２１９で取り込まれる。図２２４０は、遷移を起動するクロックドメイン［ｊ］からクロックドメイン［ｉ］へ遷移を取り込む（図２２３０とは逆方向）ための算出時間間隔２２４２及び２２４４を示している。従って、遷移は、ＰＣＬＫ［ｊ］２２１４の２番目の立ち上がりエッジ２２１９（例えば、１の時間間隔２２４４の後）に起動することができ、遷移は、６立ち下がりエッジの遅延（例えば、６の時間間隔２２４２）後にＰＣＬＫ［ｉ］２２１２の７番目の立ち上がりエッジ２２２１で取り込むことができる。
【００５５】
図２２Ｂは、基準クロックもテストクロックも同相でない場合の時間間隔の算出を示す。この図は、クロックドメインが同相でなく且つ同期されていない機能クロックに相当するクロックドメイン間テストのタイミングを示す。この実施例では、クロックＰＣＬＫ［ｉ］２２６２及びＰＣＬＫ［ｊ］２２６４がそれぞれ、非同期である基準クロックＲｅｆ  Ｃｌｋ［ｋ］２２６６及びＲｅｆ  Ｃｌｋ［ｌ］２２６８から得られる。従って、時間間隔の算出は、複数のタイミング基準ポイントを用いてなされる。例えば、基準ポイント２２６７及び２２６９は、時間間隔を決定付ける種々のベースを提供する。図２２Ｂの図２２８０は、クロックドメイン［ｉ］からの遷移を起動しこれをクロックドメイン［ｊ］で取り込むための算出時間間隔２２８２及び２２８４をそれぞれ示す。そのため、入力遷移は、Ｒｅｆ  Ｃｌｋ［ｋ］２２６６の立ち上がりエッジ２２６７から４立ち下がりエッジの遅延（例えば、４の時間間隔２２８２）後にＰＣＬＫ［ｉ］２２６２の５番目の立ち上がりエッジ２２７７で起動することができる。遷移は、１立ち下がりエッジの遅延（例えば、１の時間間隔２２８４）後にクロックＰＣＬＫ［ｊ］２２６４の２番目の立ち上がりエッジ２２７９で取り込まれる。図２２９０は、遷移を起動するクロックドメイン［ｊ］からクロックドメイン［ｉ］への遷移を取り込むための算出時間間隔２２９２及び２２９４を示している。従って、遷移は、ＰＣＬＫ［ｊ］２２６４の２番目の立ち上がりエッジ２２７９（例えば、１の時間間隔２２９４の後）で起動することができ、７立ち下がりエッジの遅延（例えば、７の時間間隔２２９２）後にＰＣＬＫ［ｉ］２２６２の８番目の立ち上がりエッジ２２８１で取り込むことができる。幾つかの実施形態では、複数のＳｅＣ信号２２７０を組み込み、クロックドメイン間テストの融通性のある実施を可能にすることができる。複数のＳｅＣ信号２２７０（図示せず）は、基準クロックのエッジ選択の可制御性を高めることで、基準クロックの所要の開始エッジを選択することによって１つ又はそれ以上の文字列ジェネレータのサイズを低減することができる。例えば、ＳｅＣ［ｍ］信号及びＳｅＣ［ｍ＋１］信号は、文字列ジェネレータのサイズを最小にするために（ｔ）番目の周期及び（ｔ＋ｈ）番目の立ち下がり又は立ち上がりエッジになるように開始エッジを選択することができる。
【００５６】
図２３は、本発明の１つの実施形態によるドメイン内テストを実施するように構成されたテストクロック制御構造を示す。テストクロック制御構造２３００は、各々が対応するサブドメイン２３０２を制御するためのプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）２３０４を含む。ドメイン２３０１は、幾つかの小さなドメイン、又はサブドメイン２３０２に分割される。ドメイン２３０１がクロックドメインである場合、ＰＴＣＣ２３０４は、サブクロック「クロック」ドメインとしてサブドメイン２３０２をテストするための共通機能クロックＰＣＬＫ２３０６を集合的に使用する。
【００５７】
図２４は、本発明の１つの実施形態による単純化されたプログラム可能テストクロックコントローラを使用してドメイン内テストを行うように構成されたテストクロック制御構造を示す。この実施例では、テストクロック制御構造２４００は、複数のサブクロックドメイン２４０３のスキャンテストを制御するための単純化されたプログラム可能テストクロックコントローラの構成２４０１を含む。幾つかの実施形態において本明細書で使用される用語「クロックドメイン一般化」は、クロックドメインをサブクロックドメイン２４０３のセットに分割するプロセスを意味し、これによって単純化されたプログラム可能テストクロックコントローラの構成２４０１は、予め分割されたオリジナルのクロックドメインの構造よりも一般化されたクロックドメインでより融通性を高くすることができる。例えば、単純化されたプログラム可能テストクロックコントローラの構成２４０１は、回路に埋め込まれたパワードメインがサブドメイン２４０３に分割されてテストすることができる場合により有用とすることができる。パワー回路の性能がパワードメイン内のシステム遅延に影響を与える可能性があるので、別個のサブドメイン２４０３として各パワードメインを形成し、遅延テスト中はこれを独立して制御することが望ましいとすることができる。クロックドメインの一般化はまた、例えば他のサブクロックドメインのテストと干渉することなくサブクロックドメインの欠陥フリップフロップを検出するためのシリコンデバッグで有用とすることができる点に留意されたい。構成２４０１によってユーザーはどのクロックドメインでもスキャンロード／アンロードをプログラムすることが可能であるので、サブクロックドメイン２４０３を含むクロックドメインにおける選択スキャンチェーンだけを、診断中にロード／アンロードする必要がある。
【００５８】
構成２４０１は、機能クロックＰＣＬＫ［ｉ］２４０５を使用してサブクロックドメイン２４０３の「ｍ」個を駆動するように構成されている。構成２４０１は、親ＰＴＣＣ２４０２と子ＰＴＣＣ２４０６及び２４０８を含む。親ＰＴＣＣ２４０２は、テストクロックパルス２４０７のプログラム可能な数を子ＰＴＣＣ２４０６及び２４０８にブロードキャストするよう動作し、これらのいずれかを、テストクロックパルス２４０７を使用するか又は使用しないようにプログラムすることができる。ＰＴＣＣ２４０６及び２４０８が親ＰＴＣＣ２４０２と同じ構造及び／又は機能を有することができるが、これらは、この実施例では単純化されたプログラム可能テストクロックコントローラ（「ＳＰＴＣＣ」）から構成される。有利には、ＳＰＴＣＣとしてのＰＴＣＣ２４０６及び２４０８は、実施するのにハードウェアリソースをそれほど必要としない。図示のように、ＳＰＴＣＣは、単純化されたクロックパルスコントローラ（「ＳＣＰＣ」）とクロックドメイン一般化（「ＣＤＧ」）セルとを含む。ここで、ＰＴＣＣ２４０６は、ＳＣＰＣ２４１０とＣＤＧセル２４２０とを含み、ＰＴＣＣ２４０８は、ＳＣＰＣ２４３０及びＣＤＧセル２４４０を含む。幾つかの実施形態では、ＳＣＰＣ２４３０及びＣＤＧセル２４４０は、それぞれ親ＰＴＣＣ２４０２のＣＰＣとＴＣＧ（どちらも図示していない）の単純化されたバージョンとして記述することができる。オペレーションにおいて、ＳＣＰＣ２４１０及びＳＣＰＣ２４３０の出力は、ゲート２４７０でテストクロックパルス２４０７と論理積演算され、例えばＣＬＫ［ｉ，ｍ］までのサブドメインクロックＣＬＫ［ｉ，ｌ］、ＣＬＫ［ｉ，ｊ］を生成する。親ＰＴＣＣ２４０２をディスエーブルにすることにより、全サブクロックドメインがディスエーブルになる点に留意されたい。また、ゲート２４９０及びゲート２４９２は、クロックドメイン２４０３ａ及び２４０３ｃのオペレーションをそれぞれイネーブルにするクロックドメインイネーブル信号（「ＣＥＤＮ［ｉ，ｌ］」）２４９６及び（「ＣＥＤＮ［ｉ，ｍ］」）２４９８を生成する点に留意されたい。
【００５９】
更に、ＳＰＴＣＣの構造は、各サブクロックドメインのテスト要件に対して最適化することができる点に留意されたい。例えば、テストクロックパルス２４０７がパス又はブロックされることになる場合、ＳＰＴＣＣは、ＳＣＰＣ２４１０を含むことができ、該ＳＣＰＣ２４１０は、クロックＣＬＫ［ｉ，ｌ］を制御するための単一のフリップフロップ（「Ｃ０」）を含む。この場合、ＳＣＰＣ２４１０は、ＩＣＬＫ［ｉ］２４１１を使用してロードされ、起動及び／又は取り込みオペレーション中は変化しないままにすることができる。幾つかの実施形態では、ＩＣＬＫ［ｉ］２４１１は、図１２に示されるように信号ＣＰＣｅｎ１２４０、ＰＣＬＫ１２５２、及びＴＣＬＫ１２１０を使用して生成することができる。起動及び／又は取り込みオペレーションでは、ＳＣＰＣ２４１０は、ＣＬＫ［ｉ］（例えば文字列ジェネレータ又は同様のものから）を生成するために制御パターンがロードされた親ＰＴＣＣ２４０２の親ＣＰＣ（図示せず）と共に１の論理値（例えば要素（「Ｃ０」）２４７２にロードされた）をロードすることができる。ローカルテストクロックＣＬＫ［ｉ，ｊ］が親テストクロックＣＬＫ［ｉ］２４０７と同じである場合、ＰＴＣＣ２４０６及び２４０８はイネーブルにされる。サブクロックドメイン２４０３のテストが、例えば異なるクロックサイクルで遅延の起動のみ又は取り込みのみのいずれかを実行することが必要である場合、ＳＰＴＣＣは、要素（「Ｃ０」）２４７６及び（「Ｃ１」）２４３３から構成される２ビットローカルシフトレジスタ（親ＰＴＣＣ２４０２と同じ）を有するＳＣＰＣ２４３０を含むことができる。有利には、ＳＣＰＣ２４３０などのＳＣＰＣの２ビット実装は、テスト時間及びテストボリュームの低減を促進する。
【００６０】
図２５Ａから２５Ｄは、本発明の１つの実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造を示す。図２５Ａでは、テストクロック制御構造２５００が、ドメインの一部又はサブドメイン２５１０及び２５３０がテスト回路２５２０に並行して又は連続して実行されるかどうかに関わらず、回路のドメイン間テスト又はドメイン内テスト、或いはその両方を容易にする。プログラム可能テストクロックコントローラは、各クロックドメインの境界内にドメインの内部相互作用を限定するようにプログラムすることができるので、ドメインのインタフェースは、ドメインの残りとは独立して制御することができる。この結果、１つ又はそれ以上のドメインインタフェース（及びサブドメインインタフェース）は、ドメイン（又はサブドメイン）の他の部分のテストと並行して又は連続してスキャンベースのテストに実装することができる。従って、個々のＰＴＣＣを用いて、スキャンチェーン部分、回路、及び同様のものなどのサブドメインの選択部分を制御することができる。
【００６１】
例証の目的で、サブドメイン２５１０のＰＴＣＣ２５１２及び２５１４は各々、サブドメイン２５３０のＰＴＣＣ２５２２及び２５２４によって使用される機能クロックとは異なるクロック速度と同じ機能クロックで動作すると仮定する。最初に、ＰＴＣＣ２５１４及び２５２４は、ある時間Ｔ１でテストクロック制御構造２５００の一部２５０２を作動させるようにプログラムされると仮定する。例えば、ＰＴＣＣ２５１４及び２５２４は、起動及び取り込みオペレーション、又はスキャンチェーンロード又はアンロードオペレーションなどのある他のオペレーションを実行するようにプログラムすることができる。このような部分２５０２は、クロック制御構造２５００の他の部分とは独立して制御することができる。更にこの実施例では、ＰＴＣＣ２５１２及び２５２２は、部分２５０２のテストと並行又は連続したドメイン内（又はサブドメイン内）動的及び／又は静的テストを実行するようにプログラムすることができると仮定する。次に、時間Ｔ２で、ＰＴＣＣ２５１４及び２５２４はディスエーブルとすることができ、他のＰＴＣＣでは、部分２５０４をテストするために動的（例えば、ブロードサイド、ラスト−シフト−ローンチ、ドメイン間、ドメイン内など）及び／又は静的テストに従事するようにイネーブルにされると仮定する。幾つかの実施形態において、テストクロック制御構造２５００及び付随回路は一般に、ＰＴＣＣ２５１２、２５１４、２５２２、及び２５２４から構成された構造を定める点に留意されたい。
【００６２】
図２５Ｂから２５Ｄは、本発明の別の実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造の更に別の実施例を示す。テストクロック制御構造２５５０は、ドメイン間テスト又はドメイン内テスト、或いはこれらの両方を容易にする。プログラム可能テストクロックコントローラが各クロックドメインの境界内に内部相互作用を限定するようにプログラムすることができるので、ドメインのインタフェースは、ドメインの残りとは独立して制御することができる。このようなインタフェースの実施例は、入力レジスタ及び／又は出力レジスタを含む。この結果、１つ又はそれ以上のドメインインタフェース（及びサブドメインインタフェース）は、ドメイン（又はサブドメイン）の他の部分のテストと並行及び／又は連続したスキャンベースのテストにおいて実装することができる。従って、個々のＳＰＣＰを用いて、スキャンチェーン部分、回路、又は同様のものなどのサブドメインの選択部分を制御することができる。
【００６３】
例えば、図２５Ｂは、サブドメイン２５６０のＳＰＣＰ２５６４及び２５６６が各々同じ機能クロックで動作し、その両方がサブドメイン２５２０及び２５８０それぞれのＳＰＣＰ２５７１及び２５８１によって使用される機能クロックとは異なるクロック速度を有することができることを示している。最初に、ＳＰＣＰ２５７１及び２５６４は、クロックドメイン間テストを作動させて回路部分２５３０で論理２５７２及び／又は論理２４７４をテストするようプログラムされ、ＳＰＣＰ２５６６及び２５８１は、クロックドメイン間テストを作動させて回路部分２５３１で論理２５８２及び／又は論理２５８４をテストするようプログラムされると仮定する。全ＳＰＣＰ２５７１、２５６４、２５６６、及び２５８１は、ある時間Ｔ１に動作するようプログラムすることができる。レジスタ２５５９は、サブドメイン（「ドメインｒ」）２５８０の出力レジスタを表すことができる点に留意されたい。従って、ＳＰＣＰ２５７１及び２５６４は、例えばそれぞれ起動（例えばサブドメイン２５７０から）及び取り込みオペレーション（例えばサブドメイン（「ドメインｑ」）２５６０に）を、或いはスキャンチェーンロード又はアンロードオペレーションのような他のオペレーションを実行するようにプログラムすることができる。レジスタ２５８９は、サブドメイン（「ドメインｐ」）２５７０の入力レジスタを表すことができる点に留意されたい。同様に、ＳＰＣＰ２５６６及び２５８１は、例えばそれぞれ起動（例えばサブドメイン（「ドメインｑ」）２５６０から）及び取り込みオペレーション（例えば、サブドメイン（「ドメインｒ」）２５８０に）を、或いはスキャンチェーンロード又はアンロードオペレーションのような他のオペレーションを実行するようにプログラムすることができる。従って、回路部分２５３０及び２５３１は、クロック制御構造２５５０の他の部分とは独立して（例えば、サブドメイン２５６０の論理２５６１、論理２５６２、及び論理２５６３とは独立して）制御することができる。更にこの実施例では、ＳＰＣＰ２５６４、２５６５、及び２５６６は、図２５Ｂの部分回路部分２５３０及び２５３１のテストと並行又は連続してドメイン内（又はサブドメイン内）動的及び／又は静的テストを実行するようにプログラムすることができると仮定する。図２５Ｃは、時間Ｔ２でＳＰＣＰ２５７１及び２５８１をディスエーブルにすることができ（例えば、レジスタ２５５９及び２５８９のコンテンツを保護するため）、同時にＳＰＣＰ２５６４及び２５６５が、システム組合せ論理の部分２５６１、及び内部レジスタ及び論理を含むことができる別の部分２５６２を含む回路部分２５９０をテストするために動的（例えば、ブロードサイド、ラスト−シフト−ローンチ、ドメイン間、ドメイン内テストなど）及び／又は静的テストに従事するように構成されることを示している。同様に、図２５Ｄは、時間Ｔ３でＳＰＣＰ２５６５及び２５６６をイネーブルにし、回路の他の部分２５６２及び論理２５６３を含む回路部分２５９１をテストするために動的及び静的テストに従事できることを示している。
【００６４】
図２６は、プログラム可能テストクロックコントローラ（「ＰＴＣＣ」）を実装するテストクロックコントローラ構造を使用して本発明の実施形態による回路をテストするためのマイクロレベルのフローの実施例を示す。フロー２６００は一般に、２ビットシフトレジスタを備え補完クロックコマンドソースを備えないＰＴＣＣに適用される。場合によっては、ＳｅＦＦは、フロー２６００でのスキャンロード／アンロードオペレーション開始の前に初期化される。ＳｅＦＦの実施例は、図１８のＳｅＦＦ１８６０として参照される。フロー２６００は、２６０１でテストモード作動信号をアサートすることによってスキャンテストモード（「ＴＭ」）をイネーブルすることから始まる。２６０２で、制御ロード／アンロードオペレーションは、制御チェーンにアクセスするために初期化される。次いでＰＴＣＣは、スキャンクロック  ＳＣＬＫとしてのテストクロックの伝播をイネーブル又はディスエーブルにするように２６０４でプログラムされる。次に、スキャン経路がイネーブルである場合、スキャンロード／アンロードオペレーションが２６０６から始まる。２６０８で、スキャンデータは、スキャンチェーン部分にロードされるか、又はスキャンチェーン部分からアンロードされ、その後、ＰＴＣＣは２６１０でプログラムモードに入る。任意選択的に、２６１２の前に１つのＳＣＬＫクロックパルスを全ＳｅＦＦに加えることによってＳｅＦＦを初期化することができる。プログラムモードになると、２６１２でロードされたクロックコマンド情報に従ってＰＴＣＣを構成することができる。例えば、ＰＴＣＣは、起動及び／又は取り込みオペレーション、起動のみのオペレーション、取り込みのみのオペレーション、サイレントオペレーション、又は同様のもののうちの１つ又はそれ以上に従事するように構成することができる。２６１４で、ＰＴＣＣは、サイレント状態オペレーションに入ることができる。任意選択的に、ＩＤＤＱ漏れテストなどの静的テストを行うことができる。この場合、ＡＴＥは、２６１８で入力を加える（又は強制する）ことができ、その後、電源及び接地端子でのパラメータＩＤＤＱを測定する。次にＰＴＣＣは、２６２０で機能テストモードに入り、起動及び／又は取り込みに関連する動的テストを行う。ＰＴＣＣは、２６２２でプログラムされた起動又は／及び取り込みを実行する。２６２４でＡＴＥは、例えば、全てのドメインがテストされたかどうかを判断し、テストされていない場合、行うべき次の一連の措置が何かを判断する。１つ又はそれ以上の追加のクロックドメインがテストを要求する場合、フロー２６００は、ＰＴＣＣがその機能を変更して付随するスキャンロード／アンロードオペレーションなしに回路を更にテストするようにプログラムすることができる場合には２６１２に進む。しかしながら、スキャンロード／アンロードオペレーションが要求される場合、フロー２６００は２６０４に進む。２６３０で、ＡＴＥは、パターン実施が完了するまでテストを継続する。
【００６５】
フロー２６００は、制御チェーンを使用したＰＴＣＣの２つのプログラミングステップを示しており、２６０４及び２６１０でのオペレーションに関連したテスト時間及びテストデータボリュームは、スキャンロード及びアンロードオペレーションに比べて総テスト時間及びデータボリュームの影響が極めて少ない。更に、全クロックドメインは、クロックドメインが実行されるまでスキャンロード及びアンロードオペレーションに従事する必要はない。一般に、テストクロック制御構造は、実行されたクロックドメインにおいてのみスキャンチェーンに対してスキャンロード及びアンロードオペレーションを行うように設計されている。有利には、フロー２６００は、より頻繁にスキャンチェーンをロード及びアンロードする従来のスキャンベースのテストに比べて総テスト時間の削減をもたらした。
【００６６】
フロー２６００は、事前構成又はセットアップレベルでテストを実施するためにテストクロック制御構造を使用する方法の実施例を説明しており、本発明の他の実施形態は、本明細書に記載されるテストクロック制御構造を使用するマクロレベルテストフローを対象としている。１つの実施形態によれば、スキャンベースのテストのためのテストクロック制御構造を実施する方法は以下のように説明することができる。本方法は、動的欠陥検出テストパターンを実装する複数の回路のドメインの第１サブセットを実行するドメイン内テストを行うことができる。本方法は、動的欠陥検出テストパターンを実装する複数の回路のドメインの第２セットを実行するドメイン間テストなどの別のテストを更に行う段階に進む。これらの動的欠陥検出テストパターンは、ラスト−シフト−ローンチテストパターン及びブロードサイドテストパターン、並びに他のあらゆる動的テストパターンを含むことができる。幾つかの実施形態では、これらのドメインはクロックドメインである。場合によっては、本方法は更に、ドメイン間テストを受ける回路から分離された回路の部分に対して縮退テスト及び動的テストなどのドメイン内テストを実行する段階を含む。
【００６７】
次に、本方法は、ほぼ並行して種々のクロックドメインをテストするように種々のプログラム可能テストクロックコントローラを構成することができる。一般的に、これにより、種々のクロックドメインをテストするときに１つ又はそれ以上のスキャンチェーンがロードされる回数が低減される。プログラム可能テストクロックコントローラが、種々のサブクロックドメインをテストするための種々のサブクロックドメインを含むことができる点に留意されたい。幾つかの実施形態では、ドメイン内テストの実行は、縮退テストと共に実施することができるクロックドメイン間テストの実行を交互にすることができる。例えば、クロックドメイン内及びクロックドメイン間テストパターンを組み合わせて単一のテストパターンにし、これによって有利にはスキャンチェーンオペレーション当たりのテスト対象範囲を広くすることができる。クロックドメイン内テストの後にドメイン間テストを実行することができる点に留意されたい。ドメイン間テストの実行はまた、静的欠陥検出テストパターンを実施する段階を含むことができる。例えば、欠陥検出テストパターンは、ドメイン間テスト用に使用される動的欠陥検出テストパターンとほぼ同時にスキャンチェーンにロードすることができる。ＡＴＥはまた、ドメイン間テスト中の静的欠陥テストとほぼ同時にラスト−シフト−ローンチテストを実行することができる。
【００６８】
幾つかの実施形態では、本方法のドメイン間テストの実行は、時間間隔を算出する段階と、時間間隔に基づいて２つのドメイン間の起動及び取り込みシーケンスを開始する段階とを含む。少なくとも１つの実施形態では、本方法は、１つ又はそれ以上の制御チェーン及び１つ又はそれ以上のスキャンチェーンを含む、特定のテストクロック制御構造の自動テストパターン生成（「ＡＴＰＧ」）フローに従って、動的欠陥検出テストパターンを生成する段階を含む。ＡＴＰＧフローの実施例を次に説明する。
【００６９】
図２７は、本発明の実施形態による回路をテストするためにプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）を実装するテストクロックコントローラ構造を使用するためのマクロレベルのフローの実施例を示す。具体的には、フロー２７００は、テストクロック制御構造を実施するためのテストパターンを生成するＡＴＰＧフローである。フロー２７００では、クロックドメイン内及びクロックドメイン間テストは、スキャンロード／アンロードオペレーションの数を削減するために分離されている。クロックドメイン内及びクロックドメイン間テスト内では、ラスト−シフト−ローンチテスト用のアット・スピードテストが以下のブロードサイドと共に最初に実行される。ブロードサイド前のラスト−シフト−ローンチのこの位置付けは、全体的なテスト対象範囲、テストデータボリューム、及びＡＴＰＧランタイムを最適化しようと試みる。更に、テストパターンは、ラスト−シフト−ローンチを使用するパターンに対してブロードサイドを使用する遅延テストパターンを付加することによって取得することができる。縮退テストのフロー２７００におけるＡＴＰＧは、クロックドメイン間テストで実施することができる点に留意されたい。これは、遅延テストパターンに含まれる縮退テストパターンが遅延テスト中に実際にはどのような影響も及ぼさないことに起因するが、これらは、生成されることになる縮退テストパターンの数を削減することができる。
【００７０】
従って、フロー２７００は、２７１０でクロックドメイン内論理に対して遅延テストを実施するためのパターンを生成することによって自動テストパターン生成を開始する。これは、２７２０でラスト−シフト−ローンチを使用して遅延欠陥のテストパターンを生成する段階と、２７３０でブロードサイドを使用して２７２０で検出されなかった欠陥のテストパターンを生成する段階とを含むことができる。幾つかの実施形態では、クロックドメイン間テストパターンは、ラスト−シフト−ローンチテストのための２７２２でのテストパターン生成、並びにブロードアサイドテストのための２７３２でのテストパターン生成に含めることができる点に留意されたい。フロー２７００は、該フローがクロックドメイン間論理の遅延テストパターンを生成する２７４０に進む。２７５０で、ＡＴＰＧフローは、ラスト−シフト−ローンチを使用して遅延欠陥のテストパターンを生成し、この後に、ブロードサイドを使用した２７５０で検出されなかった欠陥に対して２７６０でのテストパターンの生成が続く。例えば、幾つかの場合でのラスト−シフト−ローンチを使用した遅延テストパターン生成の後に、ラスト−シフト−ローンチを使用したテストから漏れた欠陥を検出するためにブロードサイドテストプロトコルを使用する同じテストが続く。幾つかの実施形態では、クロックドメイン内論理をテストするための縮退パターンは、ラスト−シフト−ローンチテストのための２７５２でのテストパターン生成、並びにブロード−アサイドテストのための２７６２でのテストパターン生成に含めることができる。従って、フロー２７００は、動的テストと並行して静的テストを行うための縮退テストパターンを生成することができる。２７８０で、ＡＴＰＧフローは、２７１０と２７４０との間に生成されたテストパターン用の欠陥シミュレーションを実行し、縮退欠陥を検出することができる。この後に２７８０において、ステップ３で検出されなかった縮退欠陥のテストパターンを生成する。これは、２７９２でのクロックドメイン内論理及び２７９４でのクロックドメイン間論理用のテストパターンを生成する段階を含む。機能スピードで縮退テストパターンを実施することにより、縮退テストプロトコルを考える必要がないので、テストの品質を拡張すると同時にテストプロセスを単純化することができる。２７９６において、フロー２７００は、２７９２で生成された縮退テストパターンを２７２０で生成された遅延テストパターンと統合する。２７９８で、フロー２７００は、２７９４で生成された縮退テストパターンを２７５０で生成された遅延テストパターンと統合することによって続く。２７９９で、結果として得られたブロード−アサイドテストパターンは、ラスト−シフト−ローンチパターンに付加して最終テストパターンを形成することができる。
【００７１】
本発明の実施形態は、種々のコンピュータに実装されたオペレーションを行うためのコンピュータコードを有するコンピュータ可読媒体を備えたコンピュータ記憶製品に関する。本媒体及びコンピュータコードは、具体的に本発明の目的のために設計及び構成されたものとすることができ、或いはコンピュータソフトウェアの当業者には公知であり利用可能な種類のものとすることができる。コンピュータ可読媒体の実施例には、限定ではないが、ハードディスク、フロッピーディスク、及び磁気テープなどの磁気媒体；ＣＤ−ＲＯＭ及びホログラフィックデバイスなどの光学媒体；フロプティカルディスクなどの磁気光学媒体；及び特定用途向け集積回路（「ＡＳＩＣ」）、プログラム可能論理デバイス（「ＰＬＤ」）及びＲＯＭ並びにＲＡＭデバイスなどのプログラムコードを記憶及び実行するように具体的に構成されたハードウェアデバイスが含まれる。コンピュータコードの実施例は、コンパイラによって作成されるような機械コード、及びインタープリターを使用するコンピュータによって実行される高レベルのコードを包含するファイルを含む。例えば、本発明の実施形態は、Ｊａｖａ、Ｃ＋＋、又は他のオブジェクト指向プログラミング言語並びに開発ツールを使用して実施することができる。本発明の別の実施形態は、機械実行可能ソフトウェア命令の変わりに或いはこれと組み合わせたハードワイヤード回路で実施することができる。
【００７２】
上記の記載は、説明の目的として本発明の完全な理解をもたらすための特定の用語を使用した。しかしながら、本発明を実施するために特定の詳細が必要ではないことは当業者には明らかであるだろう。実際に、この説明は、本発明のいずれかの特徴又は態様をいずれかの実施形態に限定するように読まれるものではなく、逆に１つの実施形態の特徴及び態様は、他の実施形態と容易に置き換えることができる。例えば、ドメイン間及びドメイン内テストはクロックドメインの観点から一般的に説明してきたが、当業者であれば、これらのテストがパワードメインなどの他のあらゆるタイプのドメインにも適用することができる点を理解するはずである。
【００７３】
従って、本発明の特定の実施形態の上記の説明は、例証及び説明の目的で提示されている。これらは、網羅的なものではなく、或いは開示された正確な形式に限定されるものでもなく、明らかに多くの修正及び変形形態が上記の教示の点から実施可能である。本発明の原理及びその実際的な応用を良く説明するために実施形態が選択されて説明されており、これによって当業者は、本発明及び種々の実施形態を企図される特定の用途に好適な種々の修正形態と共に当業他者に良く利用させることが可能となる。特に、本明細書で説明されたあらゆる利益が本発明の各実施形態によって必ずしも実現される必要はなく、逆にいずれかの特定の実施形態が上述の利点の１つ又はそれ以上を提供することができる。添付の請求項及びこれらの均等物により本発明の範囲が定義されるものとする。
【図面の簡単な説明】
【００７４】
【図１】被試験回路に対して従来の遅延テストを実施するのに通常使用されるスキャンチェーンの一部を示す図である。
【図２】従来のスキャンチェーン構造でアット・スピード遅延テストを行うために単一のスキャンイネーブル（「ＳＥ」）信号を使用する場合のタイミング不確実性を示す図である。
【図３】アット・スピード遅延テストを実施するために従来のテストクロック制御技術を使用する一般的なスキャンチェーン構造を示す図である。
【図４】図３のスキャンチェーン構造を使用するドメイン間論理のテストを示す図である。
【図５】アット・スピードクロック信号をスキューするテスト機能クロック経路を有する従来の内部テストクロックコントローラを示すブロック図である。
【図６Ａ】ブロードサイドテストプロトコルの一般的な実施を示す図である。
【図６Ｂ】ラスト−シフト−ローンチテストプロトコルの一般的な実施を示す図である。
【図７】本発明の少なくとも１つの特定の実施形態による回路をテストするためのテストクロック制御構造を示すブロック図である。
【図８】本発明の少なくとも１つの特定の実施形態によるプログラム可能テストクロックコントローラを示すブロック図である。
【図９】本発明の実施形態によるプログラム可能テストクロックコントローラの１つの機能の実施例を示す図である。
【図１０】本発明の実施形態によるプログラム可能テストクロックコントローラの実施例を示す図である。
【図１１】本発明の実施形態に従って複数のスキャンイネーブル制御信号に基づいたプログラム可能テストクロックコントローラのオペレーションの状態を示すテーブルである。
【図１２Ａ】本発明の種々の実施形態によるスキャンクロックデコーダの特定の実施を示す図である。
【図１２Ｂ】本発明の種々の実施形態によるプログラム可能テストクロックコントローラの特定の実施を示す図である。
【図１３】本発明の１つの実施形態による特定のクロックドメインをプログラムするための図１２Ｂのプログラム可能テストクロックコントローラを実施するのに適したクロックパルスコントローラのための状態図である。
【図１４Ａ】本発明の種々の実施形態による、起動及び取り込みオペレーションのためのテストクロックを構築するようにプログラム可能テストクロックコントローラを構成するための信号のタイミングを示す図である。
【図１４Ｂ】本発明の種々の実施形態による、起動及び取り込みオペレーションのためのテストクロックが対応するクロックドメインをディスエーブルにするようにプログラム可能テストクロックコントローラを構成するための信号のタイミングを示す図である。
【図１５】本発明の１つの実施形態による単純化されたクロックパルスコントローラと単純化されたテストクロックジェネレータとを含むプログラム可能テストクロックコントローラを示す図である。
【図１６】本発明の１つの実施形態による補助クロックコマンドソースを含むプログラム可能テストクロックコントローラを示す図である。
【図１７Ａ】本発明の種々の実施形態による文字列ジェネレータとして実装される補助クロックコマンドソースを示す図である。
【図１７Ｂ】本発明の種々の実施形態による文字列ジェネレータとして実装される補助クロックコマンドソースに対応する状態図である。
【図１８】本発明の実施形態による電子デバイス及びその回路をテストするためにプログラム可能テストクロックコントローラのどのような数も実施する概念的なテストクロック制御構造を示すブロック図である。
【図１９】本発明の実施形態による種々のドメインで回路をテストするためにプログラム可能テストクロックコントローラを実施するテストクロック制御構造を示す図である。
【図２０】本発明の実施形態によるテストアクセスポイントを低減するために一次入力及び一次出力を共用する制御チェーン及びスキャンチェーンを示す図である。
【図２１】本発明の１つの実施形態によるドメイン間テストを行うように構成されたテストクロック制御構造を示す図である。
【図２２Ａ】本発明の種々の実施形態によるドメイン間テストを実施するために１つ又はそれ以上のタイミング基準ポイントを使用して時間間隔を算出するための種々の技術を示す図である。
【図２２Ｂ】本発明の種々の実施形態によるドメイン間テストを実施するために１つ又はそれ以上のタイミング基準ポイントを使用して時間間隔を算出するための種々の技術を示す図である。
【図２３】本発明の１つの実施形態によるドメイン内テストを行うように構成されたテストクロック制御構造を示す図である。
【図２４】本発明の１つの実施形態による、単純化されたプログラム可能テストクロックコントローラを使用してドメイン内テストを行うように構成されたテストクロック制御構造を示す図である。
【図２５Ａ】本発明の１つの実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造を示す図である。
【図２５Ｂ】本発明の１つの実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造を示す図である。
【図２５Ｃ】本発明の１つの実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造を示す図である。
【図２５Ｄ】本発明の１つの実施形態によるプログラム可能テストクロックコントローラを使用してドメイン間テスト及びドメイン内テストを容易にするように構成されたテストクロック制御構造を示す図である。
【図２６】本発明の実施形態による回路をテストするためにプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）を実施するテストクロックコントローラ構造を使用するためのマイクロレベルのフローの実施例を示す図である。
【図２７】本発明の実施形態による回路をテストするためにテストクロックコントローラ構造及びプログラム可能テストクロックコントローラ（「ＰＴＣＣ」）を使用するためのマクロレベルのフローの実施例を示す図である。
【符号の説明】
【００７５】
７００  プログラム可能テストクロックコントローラ
７０１  テストクロック制御構造
７０３  被試験回路
７０４  テストクロックジェネレータ
７１２  スキャンレイヤインタフェース
７２０  制御レイヤ
７２２  制御チェーン
７３０  スキャンレイヤ
７３４  スキャンチェーン
【図１】
0005588590.tif 000002
【図２】
0005588590.tif 000003
【図３】
0005588590.tif 000004
【図４】
0005588590.tif 000005
【図５】
0005588590.tif 000006
【図６Ａ】
0005588590.tif 000007
【図６Ｂ】
0005588590.tif 000008
【図７】
0005588590.tif 000009
【図８】
0005588590.tif 000010
【図９】
0005588590.tif 000011
【図１０】
0005588590.tif 000012
【図１１】
0005588590.tif 000013
【図１２Ａ】
0005588590.tif 000014
【図１２Ｂ】
0005588590.tif 000015
【図１３】
0005588590.tif 000016
【図１４Ａ】
0005588590.tif 000017
【図１４Ｂ】
0005588590.tif 000018
【図１５】
0005588590.tif 000019
【図１６】
0005588590.tif 000020
【図１７Ａ】
0005588590.tif 000021
【図１７Ｂ】
0005588590.tif 000022
【図１８】
0005588590.tif 000023
【図１９】
0005588590.tif 000024
【図２０】
0005588590.tif 000025
【図２１】
0005588590.tif 000026
【図２２Ａ】
0005588590.tif 000027
【図２２Ｂ】
0005588590.tif 000028
【図２３】
0005588590.tif 000029
【図２４】
0005588590.tif 000030
【図２５Ａ】
0005588590.tif 000031
【図２５Ｂ】
0005588590.tif 000032
【図２５Ｃ】
0005588590.tif 000033
【図２５Ｄ】
0005588590.tif 000034
【図２６】
0005588590.tif 000035
【図２７】
0005588590.tif 000036