(57)【特許請求の範囲】
【請求項１】
集積回路におけるスキャンチェーンを介するスキャンテストのためのテストモード制御信号を生成するように構成される集積回路であって、
テストパターン検出ブロックであって、
検出パターンを受け取り、
前記検出パターンに基づいて、テストパターンのシフトフェーズに対応する第１のパターンと前記テストパターンのキャプチャフェーズに対応する第２のパターンとの検出を実行し、
前記第１及び第２のパターンのうちの少なくとも１つの前記検出に基づいてトリガ信号を生成する、
ように構成される、前記テストパターン検出ブロックと、
前記テストパターン検出ブロックに結合される制御回路であって、当該制御回路が、前記トリガ信号を受け取り、前記シフトフェーズに対応する１つまたは複数のカウント状態と前記キャプチャフェーズに対応する１つまたは複数のカウント状態とに基づいて、前記テストモード制御信号を生成して制御するように構成される、前記制御回路と、
前記制御回路に結合されるカウンタ回路であって、当該カウンタ回路が、前記第１のパターンと前記第２のパターンとの少なくとも１つに基づいて、前記シフトフェーズとクロック信号とに対応する１つまたは複数のカウント状態と、前記キャプチャフェーズと前記クロック信号とに対応する１つまたは複数のカウント状態とを生成するように構成される、前記カウンタ回路と、
を含み、
前記制御回路が、前記カウンタ回路のカウント状態がシフト開始カウント状態とキャプチャ終了カウント状態のうちの１つである際に、前記テストモード制御信号をアサートすることと、前記カウント状態がキャプチャ開始カウント状態とシフト終了カウント状態のうちの１つである際に、前記テストモード制御信号をデアサートすることとのうちの少なくとも１つを実行するように更に構成され、
前記カウンタ回路が、前記制御回路に結合されるレジスタブロックを含み、前記レジスタブロックが、前記シフト開始カウント状態と前記シフト終了カウント状態と前記キャプチャ開始カウント状態と前記キャプチャ終了カウント状態とのうちの少なくとも１つを記憶するように構成される、集積回路。
【請求項２】
請求項１に記載の集積回路であって、
前記カウンタ回路が、前記レジスタブロックと結合される１つまたは複数のカウンタを更に含み、
前記１つまたは複数のカウンタが、
前記シフト開始カウント状態から前記シフト終了カウント状態までの前記シフトフェーズに対応する１つまたは複数のカウント状態を生成し、
前記キャプチャ開始カウント状態から前記キャプチャ終了カウント状態までの前記キャプチャフェーズに対応する１つまたは複数のカウント状態を生成する、
ように構成される、集積回路。
【請求項３】
請求項１に記載の集積回路であって、
前記カウンタ回路が、
前記シフト開始カウント状態から前記シフト終了カウント状態までの１つまたは複数のカウント状態を生成するように構成される第１のカウンタと、
前記キャプチャ開始カウント状態から前記キャプチャ終了カウント状態までの１つまたは複数のカウント状態を生成するように構成される第２のカウンタと、
前記シフトフェーズの開始前に１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態と、前記キャプチャフェーズの開始前に１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態とを生成するよう構成される１つまたは複数のカウンタと、
を更に含む、集積回路。
【請求項４】
請求項３に記載の集積回路であって、
前記カウンタ回路が、前記テストパターンの前記シフトフェーズに対応する前記シフト開始カウント状態から前記テストパターンの前記キャプチャフェーズに対応するキャプチャ終了カウント状態までの予め決められた数の遷移に対応する１つまたは複数のカウント状態を生成するように構成されるパターンカウンタを更に含む、集積回路。
【請求項５】
請求項１に記載の集積回路であって、
前記テストパターン検出ブロックと結合され、前記シフトフェーズに対応する前記第１のパターンを検出する際に、第１の予め決められた遅延を生成するよう構成される、フリップフロップの第１のセットと、
スキャンチェーンと結合され、第２の予め決められた遅延のために先行するシフトフェーズに対応するテストパターンを記憶し、前記第２の予め決められた遅延が完了する際に前記シフトフェーズを初期化する、フリップフロップの第２のセットと、
を更に含む、集積回路。
【請求項６】
請求項１に記載の集積回路であって、
前記レジスタブロックと通信可能に関連付けられまたは結合され、前記テストパターンに基づいて、前記レジスタブロックを制御し、前記シフト開始カウント状態と前記キャプチャ開始カウント状態と前記シフト終了カウント状態と前記キャプチャ終了カウント状態とのうちの少なくとも１つを変化させる、テストインタフェースを更に含む、集積回路。
【請求項７】
請求項１に記載の集積回路であって、
前記テストモード制御信号が、前記テストパターンの前記シフトフェーズと前記キャプチャフェーズとを制御するためのスキャンイネーブル信号と、前記スキャンチェーンの動作を制御するためのロードイネーブル信号とのうちの１つを含む、集積回路。
【請求項８】
集積回路におけるスキャンチェーンを介するスキャンテストのためのテストモード制御信号を生成するように構成される集積回路であって、
テストパターン検出ブロックであって、
検出パターンを受け取り、
前記検出パターンに基づいて、テストパターンの第１のシフトフェーズに対応するパターンの検出を実行し、
前記パターンの前記検出に基づきトリガ信号を生成する、
ように構成される、前記テストパターン検出ブロックと、
前記テストパターン検出ブロックに結合される制御回路であって、前記トリガ信号を受け取り、前記第１のシフトフェーズに対応する１つまたは複数のカウント状態と、後続のシフトフェーズとキャプチャフェーズとに対応する１つまたは複数のカウント状態とに基づいて、前記テストモード制御信号を生成するように構成される制御回路と、
前記制御回路に結合されたカウンタ回路であって、
前記第１のシフトフェーズの検出の際にトリガされるように構成され、前記テストパターンの前記第１のシフトフェーズと後続のシフトフェーズとのうちの１つに対応するシフト開始カウント状態から、前記テストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの、予め決められた数の遷移に対応する１つまたは複数のカウント状態を生成するように構成される、パターンカウンタと、
前記パターンカウンタに結合され、前記第１のシフトフェーズと前記後続のシフトフェーズと前記キャプチャフェーズとに対応する１つまたは複数のカウント状態を生成するように構成される、１つまたは複数のカウンタと、
を含む、前記カウンタ回路と、
を含む、集積回路。
【請求項９】
請求項８に記載の集積回路であって、
前記制御回路が、
前記カウンタ回路のカウント状態が、前記シフト開始カウント状態と前記キャプチャ終了カウント状態とのうちの１つである際に、前記テストモード制御信号をアサートすることと、
前記カウント状態が、キャプチャ開始カウント状態とシフト終了カウント状態とのうちの１つである際に、前記テストモード制御信号をデアサートすること、
のうちの少なくとも１つを実行するように更に構成される、集積回路。
【請求項１０】
請求項８に記載の集積回路であって、
前記カウンタ回路が、前記シフト開始カウント状態と前記キャプチャ開始カウント状態と前記シフト終了カウント状態と前記キャプチャ終了カウント状態とのうちの少なくとも１つを記憶するように構成されるレジスタブロックを更に含む、集積回路。
【請求項１１】
請求項１０に記載の集積回路であって、
前記カウンタ回路が、前記第１のシフトフェーズと前記後続のシフトフェーズとのうちの１つを開始する前の１つまたは複数のウェイトサイクルと、前記キャプチャフェーズを開始する前の１つまたは複数のウェイトサイクルとに対応する１つまたは複数のカウント状態を生成するように構成される１つまたは複数のカウンタを更に含み、
前記テストモード制御信号の生成が、前記１つまたは複数のカウンタの１つまたは複数のカウント状態に更に基づく、集積回路。
【請求項１２】
請求項８に記載の集積回路であって、
前記テストパターン検出ブロックに結合され、前記第１のシフトフェーズに対応する前記パターンを検出する際に、第１の予め決められた遅延を生成するように構成される、フリップフロップの第１のセットと、
前記スキャンチェーンと結合され、第２の予め決められた遅延のために先行するシフトフェーズに対応するテストパターンを記憶し、前記第２の予め決められた遅延が完了する際に前記シフトフェーズを初期化する、フリップフロップの第２のセットと、
を更に含む、集積回路。
【請求項１３】
請求項１０に記載の集積回路であって、
前記レジスタブロックと通信可能に関連付けられまたは結合され、前記テストパターンに基づいて、前記レジスタブロックを制御し、前記シフト開始カウント状態と前記キャプチャ開始カウント状態と前記シフト終了カウント状態と前記キャプチャ終了カウント状態とのうちの少なくとも１つを変化させる、テストインタフェースを更に含む、集積回路。
【請求項１４】
請求項８に記載の集積回路であって、
前記テストモード制御信号が、前記テストパターンの前記シフトフェーズと前記キャプチャフェーズとを制御するためのスキャンイネーブル信号と、前記スキャンチェーンの動作を制御するためのロードイネーブル信号とのうちの１つを含む、集積回路。
【請求項１５】
集積回路におけるスキャンチェーンを介するスキャンテストのためのテストモード制御信号を生成する方法であって、
テストパターンのシフトフェーズに対応する第１のパターンと、前記テストパターンのキャプチャフェーズに対応する第２のパターンとを検出することと、
前記第１のパターンと前記第２のパターンとを検出する際に、前記シフトフェーズに対応する１つまたは複数のカウント状態と、前記キャプチャフェーズに対応する１つまたは複数のカウント状態とを生成することであって、前記シフトフェーズに対応する前記１つまたは複数のカウント状態が、シフト開始カウント状態とシフト終了カウント状態との間のカウント状態を含み、前記シフト開始カウント状態が、前記シフトフェーズに対応するクロック信号のサイクル数に関連付けられ、前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態が、キャプチャ開始カウント状態とキャプチャ終了カウント状態との間のカウント状態を含み、前記キャプチャ開始カウント状態が、前記キャプチャフェーズに対応する前記クロック信号のサイクル数に関連付けられる、前記生成することと、
前記シフトフェーズに対応する前記１つまたは複数のカウント状態と前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態とに基づいて、前記テストモード制御信号を生成することと、
前記シフトフェーズに対応する前記第１のパターンを検出する際に、前記シフト開始カウント状態として、カウンタ回路の第１のカウンタのカウント状態を生成することと、
を含み、更に、
前記第１のカウンタの前記カウント状態が前記シフト開始カウント状態である場合に、前記テストモード制御信号をアサートすることと、
前記スキャンテストの前記シフトフェーズ中に、前記シフト開始カウント状態から前記シフト終了カウント状態へ、第１のカウンタの１つまたは複数のカウント状態を変化させることと、
前記第１のカウンタの前記カウント状態が前記シフト終了カウント状態に変化された場合に、前記テストモード制御信号をデアサートすることと、
前記第１のカウンタの前記カウント状態が前記シフト終了カウント状態である際に、１つまたは複数のウェイトサイクルに対応する前記カウンタ回路のウェイトカウンタの１つまたは複数のカウント状態を生成することと、
前記１つまたは複数のウェイトサイクルが終了した後に、前記キャプチャ終了カウント状態として、前記カウンタ回路の第２カウンタのカウント状態を生成することと、
前記キャプチャフェーズ中に、前記キャプチャ開始カウント状態から前記キャプチャ終了カウント状態へ、前記第２のカウンタの前記カウント状態を変化させることと、
を反復的に実行することを含む、方法。
【請求項１６】
集積回路におけるスキャンチェーンを介するスキャンテストのためのテストモード制御信号を生成する方法であって、
テストパターンのシフトフェーズに対応する第１のパターンと、前記テストパターンのキャプチャフェーズに対応する第２のパターンとを検出することと、
前記第１のパターンと前記第２のパターンとを検出する際に、前記シフトフェーズに対応する１つまたは複数のカウント状態と、前記キャプチャフェーズに対応する１つまたは複数のカウント状態とを生成することであって、前記シフトフェーズに対応する前記１つまたは複数のカウント状態が、シフト開始カウント状態とシフト終了カウント状態との間のカウント状態を含み、前記シフト開始カウント状態が、前記シフトフェーズに対応するクロック信号のサイクル数に関連付けられ、前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態が、キャプチャ開始カウント状態とキャプチャ終了カウント状態との間のカウント状態を含み、前記キャプチャ開始カウント状態が、前記キャプチャフェーズに対応する前記クロック信号のサイクル数に関連付けられる、前記生成することと、
前記シフトフェーズに対応する前記１つまたは複数のカウント状態と前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態とに基づいて、前記テストモード制御信号を生成することと、
前記シフトフェーズに対応する前記第１のパターンを検出する際に、前記シフト開始カウント状態として、カウンタ回路の第１のカウンタのカウント状態を生成することと、
を含み、更に、
前記テストパターンの前記シフトフェーズに対応する前記シフト開始カウント状態から前記テストパターンの前記キャプチャフェーズに対応する前記キャプチャ終了カウント状態までの間の、予め決められた数の遷移に対応する１つまたは複数のカウント状態のために、
第１のシフトフェーズに対応する前記パターンの検出と、パターンカウンタのカウント状態の１つのカウント状態だけの変化とのうちの１つの際に、第１のウェイトサイクルに対応する第１のウェイトカウンタの１つまたは複数の状態を生成することと、
前記第１のウェイトサイクルが終了した後に、前記シフト開始カウント状態として、前記カウンタ回路の前記第１のカウンタのカウント状態を生成することと、
前記第１のカウンタの前記カウント状態が前記シフト開始カウント状態である場合に、前記テストモード制御信号をアサートすることと、
前記シフト開始カウント状態から前記シフト終了カウント状態へ、前記第１のカウンタの前記カウント状態を変化させることと、
前記第１のカウンタの前記カウント状態が前記シフト終了カウント状態に変化された場合に、前記テストモード制御信号をデアサートすることと、
前記カウント状態が前記シフト終了カウント状態である際に、第２のウェイトサイクルに対応する第２のウェイトカウンタの１つまたは複数のカウント状態を生成することと、
前記第２のウェイトサイクルが終了した後に、前記キャプチャ開始カウント状態として、前記カウンタ回路の第２のカウンタのカウント状態を生成することと、
前記スキャンテストの前記キャプチャフェーズ中に、前記キャプチャ開始カウント状態から前記キャプチャ終了カウント状態へ、前記第２のカウンタの前記カウント状態を変化させることと、
前記テストパターンの前記シフトフェーズの前記シフト開始カウント状態から、前記テストパターンの前記キャプチャフェーズの前記キャプチャ終了カウント状態への、予め決められた数の遷移に対応する前記カウンタ回路のパターンカウンタの１つまたは複数の状態を、１つのカウント状態だけ変化させることと、
を反復的に実行することを含む、方法。
【請求項１７】
集積回路におけるスキャンチェーンを介するスキャンテストのためのテストモード制御信号を生成する方法であって、
テストパターンのシフトフェーズに対応する第１のパターンと、前記テストパターンのキャプチャフェーズに対応する第２のパターンとを検出することと、
前記第１のパターンと前記第２のパターンとを検出する際に、前記シフトフェーズに対応する１つまたは複数のカウント状態と、前記キャプチャフェーズに対応する１つまたは複数のカウント状態とを生成することであって、前記シフトフェーズに対応する前記１つまたは複数のカウント状態が、シフト開始カウント状態とシフト終了カウント状態との間のカウント状態を含み、前記シフト開始カウント状態が、前記シフトフェーズに対応するクロック信号のサイクル数に関連付けられ、前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態が、キャプチャ開始カウント状態とキャプチャ終了カウント状態との間のカウント状態を含み、前記キャプチャ開始カウント状態が、前記キャプチャフェーズに対応する前記クロック信号のサイクル数に関連付けられる、前記生成することと、
前記シフトフェーズに対応する前記１つまたは複数のカウント状態と前記キャプチャフェーズに対応する前記１つまたは複数のカウント状態とに基づいて、前記テストモード制御信号を生成することと、
前記シフトフェーズに対応する前記第１のパターンを検出する際に、前記シフト開始カウント状態として、カウンタ回路の第１のカウンタのカウント状態を生成することと、
を含み、更に、
前記テストパターンの前記シフトフェーズに対応する前記シフト開始カウント状態から、前記テストパターンの前記キャプチャフェーズに対応する前記キャプチャ終了カウント状態への、予め決められた数の遷移に対応する１つまたは複数のカウント状態のために、
第１のシフトフェーズの検出と、先行するキャプチャフェーズの終了とのうちの１つの際に、前記予め決められた数の遷移に対応する前記カウンタ回路のパターンカウンタの１つまたは複数のカウント状態を、１つのカウント状態だけ変化させることと、
前記１つまたは複数のカウント状態を１つのカウント状態だけ変化させる際に、前記シフト開始カウント状態として、前記カウンタ回路の前記第１のカウンタのカウント状態を生成することと、
前記第１のカウンタの前記カウント状態が前記シフト開始カウント状態である場合に、前記テストモード制御信号をアサートすることと、
前記スキャンテストの前記シフトフェーズ中に、前記シフト開始カウント状態から前記シフト終了カウント状態へ、前記第１のカウンタの前記カウント状態を変化させることと、
前記第１のカウンタの前記カウント状態が前記シフト終了カウント状態へ変化される場合に、前記テストモード制御信号をデアサートすることと、
前記スキャンテストの前記キャプチャフェーズ中に、前記キャプチャ開始カウント状態から前記キャプチャ終了カウント状態へ、前記カウンタ回路の第２のカウンタの前記カウント状態を変化させることと、
を反復的に実行することを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、集積回路のスキャン制御に関する。
【背景技術】
【０００２】
例示的なシナリオによれば、組立回路内の論理ゲートの入力または出力が、例えば短絡などの不測の状況により動作中に固定値（例えば、論理０または論理１）に固定しない（またはそこに維持されない）ことを検証するために、組立回路はテストされる。上記の問題を軽減するために、組立回路はスキャンテストを受ける。スキャンテストは、組合せ部分とシーケンシャル部分とを含む集積回路で実行される。シーケンシャル部分は、１つまたは複数の記憶素子（例えば、フリップフロップ）のシーケンスを含む。スキャンテスト中、集積回路のシーケンシャル部分を構成する記憶素子は、スキャンチェーンとして結合または接続され、テストベクトルが、集積回路に提供される１つまたは複数の入力テストピンを介してスキャンチェーンに伝送される。集積回路は、１つまたは複数の入力と１つまたは複数の記憶素子の状態とが評価されるように評価モード（例えば、キャプチャフェーズ）に置かれ、評価モードで得られた対応する応答ベクトルが、１つまたは複数の出力テストピンを介してシフトアウトされる。応答ベクトルのビット値は、集積回路における障害状態を判定するように、出力期待値と比較される。
【発明の開示】
【０００３】
集積回路においてスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる、いくつかの例示的な方法および集積回路を本明細書において開示する。集積回路は、テストパターン検出ブロック、カウンタ回路、および制御回路を含む。テストパターン検出ブロックは、検出パターンを受け取り、この検出パターンに基づいて、テストパターンのシフトフェーズに対応する第１のパターンとテストパターンのキャプチャフェーズに対応する第２のパターンとを検出する。テストパターン検出ブロックはまた、第１のパターンおよび第２のパターンのうちの少なくとも１つを検出することに基づいて、トリガ信号を生成するように構成される。カウンタ回路は、検出されたパターンに基づいて（１）シフトフェーズおよびクロック信号に対応する１つまたは複数のカウント状態、ならびに（２）キャプチャフェーズおよびクロック信号に対応する１つまたは複数のカウント状態を生成するように構成される。制御回路は、テストパターン検出ブロックに結合され、トリガ信号を受け取り、シフトフェーズに対応する１つまたは複数のカウント状態とキャプチャフェーズに対応する１つまたは複数のカウント状態とに基づいて、テストモード制御信号を生成および制御するように構成される。
【０００４】
制御回路はさらに、（１）カウント状態がシフト開始カウント状態およびキャプチャ終了カウント状態のうちの１つである場合、テストモード制御信号をアサートすること、（２）カウント状態がキャプチャ開始カウント状態およびシフト終了カウント状態のうちの１つである場合、テストモード制御信号をデアサートすること、の少なくとも１つを実行するように構成される。カウンタ回路は、レジスタブロックおよび１つまたは複数のカウンタを含む。レジスタブロックは、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、およびキャプチャ終了カウント状態のうちの少なくとも１つを記憶するように構成される。レジスタブロックに結合される１つまたは複数のカウンタは、シフト開始カウント状態からシフト終了カウント状態までのシフトフェーズに対応する１つまたは複数のカウント状態を生成するように、および、キャプチャ開始カウント状態からキャプチャ終了カウント状態までのキャプチャフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。
【０００５】
さらに、一実施形態において、集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる集積回路が提供される。集積回路は、テストパターン検出ブロック、カウンタ回路、および制御回路を含む。テストパターン検出ブロックは、検出パターンを受け取り、この検出パターンに基づいてテストパターンの第１のシフトフェーズに対応するパターンを検出し、このパターンの検出に基づいてトリガ信号を生成するように構成される。カウンタ回路は、パターンカウンタおよび１つまたは複数のカウンタを含む。パターンカウンタは、第１のシフトフェーズを検出する際にトリガされるように、および、第１のシフトフェーズおよび後続のシフトフェーズのうちの１つに対応するシフト開始カウント状態と、キャプチャフェーズに対応するキャプチャ終了カウント状態との間の予め決められた数の遷移に対応する１つもしくは複数のカウント状態を生成するように構成される。１つまたは複数のカウンタは、後続のシフトフェーズおよびキャプチャフェーズに対応するカウント状態を生成するように構成される。制御回路は、カウンタ回路およびテストパターン検出ブロックに結合され、かつ、トリガ信号を受け取るように、および、第１のシフトフェーズに対応する１つまたは複数のカウント状態に基づいてテストモード制御信号を生成および制御するように構成される。このカウント状態は、１つまたは複数の後続のシフトフェーズおよび１つまたは複数のキャプチャフェーズに対応する。
【０００６】
さらに、一実施形態において、集積回路内のスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成する方法が提供される。この方法は、テストパターンのシフトフェーズに対応する第１のパターンまたはシフトフェーズに対応する当該第１のパターン、およびテストパターンのキャプチャフェーズに対応する第２のパターンのうちの１つを検出することを含む。シフトフェーズおよびキャプチャフェーズの各々に対応する１つまたは複数のカウント状態が、パターンの検出の際にカウンタ回路を介して生成される。シフトフェーズに対応する１つまたは複数のカウント状態は、シフト開始カウント状態とシフト終了カウント状態の間のカウント状態を含む。シフト開始カウント状態は、シフトフェーズに対応するクロック信号のサイクル数と関連付けられる。キャプチャフェーズに対応する１つまたは複数のカウント状態は、キャプチャ開始カウント状態とキャプチャ終了カウント状態の間のカウント状態を含み、このキャプチャ開始カウント状態は、キャプチャフェーズに対応するクロック信号のサイクル数と関連付けられる。テストモード制御信号は、シフトフェーズに対応する１つまたは複数のカウント状態とキャプチャフェーズに対応する１つまたは複数のカウント状態とに基づいて、生成され、次いで制御される。
【図面の簡単な説明】
【０００７】
【図１Ａ】一実施形態に従った開示される技術の様々な実施形態を実装するための例示的な環境を示すブロック図である。
【０００８】
【図１Ｂ】一実施形態に従った、クロック信号、テストモード制御信号、スキャンデータ入力信号、およびスキャンデータ出力信号の例示的な波形を示す図である。
【０００９】
【図２】一実施形態に従った集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる、第１の例示的な集積回路を示す図である。
【００１０】
【図３Ａ】一実施形態に従った集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる、第１の例示的な集積回路を示す図である。
【００１１】
【図３Ｂ】一実施形態に従った図３Ａの集積回路の動作を示すプロセスフローの例示的な図である。
【００１２】
【図４Ａ】一実施形態に従った集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる、第２の例示的な集積回路を示す図である。
【００１３】
【図４Ｂ】一実施形態に従った図４Ａの集積回路の動作を示すプロセスフローの例示的な図である。
【００１４】
【図５Ａ】一実施形態に従った集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる、第３の例示的な集積回路を示す図である。
【００１５】
【図５Ｂ】一実施形態に従った図５Ａの集積回路の動作を示すプロセスフローの例示的な図である。
【００１６】
【図６】別の実施形態に従った図５Ａの集積回路の動作を示すプロセスフローの例示的な図である。
【００１７】
【図７Ａ】一実施形態に従った、スキャンテスト中にシフトフェーズを制御することのできるフリップフロップのセットを含む例示的な集積回路を示す図である。
【００１８】
【図７Ｂ】一実施形態に従った図７Ａの集積回路の動作を示すプロセスフローの例示的な図である。
【００１９】
【図８】一実施形態に従った集積回路におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成する方法のフロー図である。
【００２０】
本明細書において参照する図面は、特に言及する場合を除いて、一定の縮尺で描かれているものと解釈されるべきでなく、このような図面は本質的に単なる例である。
【発明を実施するための形態】
【００２１】
例示的なシナリオによれば、集積回路のスキャンテストの間、１つまたは複数のテストベクトルがその集積回路に関連付けられるスキャンチェーンに伝送される。１つまたは複数のテストベクトルは、１つまたは複数のテストパターンの形式で、テスタからピンのセットを介して伝送される。ピンのセットは、スキャンデータ入力ピン、スキャンデータ出力ピン、クロック信号ピン、およびスキャンイネーブルピンを含む。先行するパターンに対応するスキャンデータ出力信号がスキャンチェーンの外に伝送されるのと同時に、新たなテストパターンに対応するスキャンデータ入力信号がスキャンチェーン内に伝送されるように、スキャンデータ入力ピンおよびスキャンデータ出力ピンは同時に機能する。スキャンイネーブルピンは、スキャンテストの間、シフトフェーズ（スキャンイネーブルピンがアサートされる間）とキャプチャフェーズ（スキャンイネーブルピンがデアサートされる間）の間に相違をもたらす。シフトフェーズの間、テストパターンの形式のスキャンデータは、クロック信号を用いてスキャンチェーン内におよびスキャンチェーン外にシフトされ、キャプチャフェーズの間、スキャンデータのための集積回路の応答が、機能クロックを用いてスキャンチェーン内でキャプチャされる。スキャンチェーン内の所与の数の記憶素子およびクロック信号の所与のクロックシーケンスについて、テストモードイネーブル信号（例えば、スキャンイネーブルピンに関連付けられるスキャンイネーブル信号）が、クロック信号のクロックサイクルの数と一定の関係がある。それゆえ、スキャンイネーブルピンのアサートおよびデアサートは、所与のタイプの所与の自動テストパターン発生（ＡＴＰＧ）の実行での様々なパターンについて標準的である。
【００２２】
この結果、テスタおよびスキャンイネーブルピンからのサイクルベース毎のテストモード制御信号の動的な制御は重要でない。集積回路を少数セットのピンを介してテストしなければならない低減されたピンカウントテストでは、集積回路はテスタに対してピンを制限し、いくつかの機能的な入力および出力を使用できなくする。また、テストパターンによっては、スキャンデータ入力ピンおよびスキャンデータ出力ピンの状態が、シフト動作終了後およびキャプチャ動作の間、依然として変化しないままであり、または、シフト動作終了とキャプチャ動作終了の間で変化することがある。加えて、スキャンイネーブルピンなどの専用のデバイスレベルピンが、スキャンテストの間テスタから駆動（例えば、制御）される必要があり、これにより資源が無駄に消費されることとなる。さらに、テスタの入力／出力のチャンネル速度により、スキャンイネーブルピンが制御され得る速度、および、テストパターンが集積回路内におよび集積回路外にシフトされ得る速度が制限され得る。事象駆動型のダイレクトメモリアクセスベースのテスタアーキテクチャの場合、シフトフェーズ（例えば、クロック信号を用いてスキャンデータがスキャンチェーン内におよびスキャンチェーン外にシフトされる）とキャプチャフェーズ（例えば、機能クロックを用いて集積回路応答がスキャンチェーン内でキャプチャされる）の間の切り替えにより、スキャンチェーン内にシフトされた最後のデータとテストモード制御信号のデアサートとの間、およびキャプチャクロックの最後の印加とテストモード制御信号のアサートとの間に、デッドデッドサイクルが生じる。事象駆動型のダイレクトメモリアクセスベースのテスタアーキテクチャは、シフトフェーズからキャプチャフェーズへ、同様にキャプチャフェーズからシフトフェーズへ切り替えるために余分のサイクルを利用する。しかし、開示する技術の様々な実施形態が、（１）（集積回路内などの）スキャンチェーンを介してスキャンテスト用のテストモード制御信号を内部生成することができ、（２）上記およびその他の障害を克服し、追加の利点を提供することのできる、方法および集積回路を提供する。
【００２３】
以下の説明および添付の図面は、開示する技術が様々な異なる実施形態において実施でき、または実装できることを示す。しかし、開示する技術の範囲が、本明細書において開示する実施形態のいずれかまたはすべてに限定されないことに留意すべきである。実際には、開示する実施形態の、デバイス、特徴、動作、プロセス、特性、または他の性質のうちの１つまたは複数を、削除、置換、補足、または変更することができる。
【００２４】
図１Ａは、様々な例示的な実施形態を実装する環境を示す。図１Ａに示すように、テスタ（１０２）が、複数の通信経路（例えば、（１１２）、（１１４）、（１１６）、（１１８）および（１２０））を介して集積回路（１０４）と通信可能に関連付けられまたは結合される。集積回路（１０４）はシステムオンチップ（ＳｏＣ）であってもよいことに留意されたい。集積回路（１０４）は、デコンプレッサ（１０６）、スキャンチェーン（１０８）、およびコンパクタ（１１０）を含む。スキャンチェーン（１０８）は、１つまたは複数の記憶素子（例えば、フリップフロップ）を含む。１つまたは複数の記憶素子は、１つまたは複数のテストベクトルのシフトインおよび１つまたは複数の応答ベクトルのシフトアウトの間、シフトレジスタとして結合または接続され得る。スキャンテストの間、テスタ（１０２）は、この１つまたは複数のテストベクトルを圧縮した形式で入力経路（１１２）によりデコンプレッサ（１０６）に提供し、スキャンテストのキャプチャされた結果を表わす１つまたは複数の応答ベクトルを圧縮した形式で出力経路（１１４）によりコンパクタ（１１０）から受け取る。テストベクトルのシフトインがいったん完了すると、またはそれに続いて（例えば、キャプチャフェーズの間）、１つまたは複数の応答ベクトルは、テスト中の集積回路（１０４）の組合せ論理の評価の結果（例えば、応答ビット）を含む。テスタ（１０２）は、１つまたは複数の応答ベクトルにおけるビット値を１つまたは複数の期待値と比較して、集積回路（１０４）内の故障を判定することができる。テスタ（１０２）は、経路（１１６）によりテストモード制御信号を、ならびに経路（１１８）を介して１つまたは複数のクロックを、集積回路（１０４）に提供する。この１つまたは複数のクロックは、スキャンテストの間集積回路（１０４）の動作を調整する。テスタ（１０２）は、この１つまたは複数のクロックの構成を特定するように構成データも提供し得、この構成データは、出力経路（１２０）を介して集積回路（１０４）における制御信号を生成するために利用され得る。
【００２５】
デコンプレッサ（１０６）は、経路（１１２）によって受け取られた１つまたは複数のテストベクトルを復元し、この１つまたは複数のテストベクトルを圧縮されていない形式でスキャンチェーン（１０８）に提供するように構成される。コンパクタ（１１０）は、応答ベクトルを圧縮し、対応する圧縮された１つまたは複数の応答ベクトルをテスタ（１０２）へ出力経路（１１４）を介して提供するように構成される。デコンプレッサ（１０６）およびコンパクタ（１１０）は、組合せおよび／またはシーケンシャル論理回路に基づく様々なアプローチを用いて実装してもよい。この集積回路（１０４）には、デコンプレッサ（１０６）およびコンパクタ（１１０）がなく、テスタ（１０２）は、スキャンチェーン（１０８）を直接駆動するように構成される。集積回路（１０４）は、例えば、スキャンテストの間に必要とされる動作を調整する際に用いられ得る様々なクロック信号および制御信号を内部生成するための、組合せ論理要素および対応する回路などの、様々な追加の要素を含み得る。
【００２６】
クロック信号は、テスタ（１０２）から受け取られたクロック信号に基づいて生成することができる。経路（１１２）および（１２０）は、複数の信号ライン（例えば、複数の信号ラインの各信号ラインが、一度に単一のビットを転送する）を含む／表すことができ、さらに、集積回路（１０４）は、複数の信号ラインに接続または結合するために、対応する数のピンを含むことができる。例示的なシナリオでは、１つまたは複数のテストパターンが、テスタ（１０２）から、集積回路（１０４）をスキャンテストにかけるように実装され得るピンのセットを介して、集積回路（１０４）に印加される。ピンのセットは、スキャンデータ入力ピン、スキャンデータ出力ピン、およびクロック信号ピンを含む。ピンのセットは、スキャンテストの間に必要とされる動作の調整の際に用いられ得る制御信号を生成および伝送するために使用できる。スキャンテストの間生成される様々な制御信号を図１Ｂに示す。
【００２７】
図１Ｂは、一実施例に従ったクロック信号（１２２）、テストモード制御信号（１２４）、スキャンデータ入力信号（１２６）、およびスキャンデータ出力信号（１２８）の例示的な波形を示す。先行するテストパターンに対応するスキャンデータ出力信号（１２８）がスキャンチェーン（１０８）の外にシフトアウトされるのと同時に、新しい入力パターンがスキャンチェーン（１０８）内にシフトインすることを確実にするように、スキャンデータ入力信号（１２６）およびスキャンデータ出力信号（１２８）は同時に実装される。「テストモード制御信号」という用語は、スキャンテスト中のテストパターンのシフトフェーズおよびキャプチャフェーズを制御するために、ならびに／または、クロックの制御のためおよび／もしくはスキャンチェーンの入出力のための様々な内部レジスタをスキャンチェーンの選択的な動作のために構成するために、開示する技術の集積回路を介して内部生成される信号を指すと解釈されることに留意されたい。テストモード制御信号（１２４）の例は、これらに限定されないが、制御性を改善し観測を容易にするためのスキャンチェーン（１０８）の選択的な動作のために、スキャンテストの間テストパターンのシフトフェーズおよびキャプチャフェーズを制御するためのスキャンイネーブル信号と、各スキャンチェーンへのクロックの制御のためならびに／または各スキャンチェーンの入出力の制御のための様々な内部レジスタを構成するためのロードイネーブル信号とを含むことができる。スキャンイネーブル信号は、シフトフェーズおよびキャプチャフェーズの間各テストパターンに対する固定的な挙動を有し、ロードイネーブル信号は、スキャンテストの間スキャンチェーン（１０８）に１つまたは複数のテストパターンを印加する際の様々な制御のための内部レジスタをロードすることを可能にし、また、シフト動作の一部として１つまたは複数のテストパターンのための一定数のサイクルで動作される。テストモード制御信号（１２４）は、集積回路（例えば、集積回路（１０４））において、シフトフェーズ（例えば、テストモード制御信号（１２４）がアサートされるシフトフェーズ（１３０）および（１３４））とキャプチャフェーズ（例えば、その間にテストモード制御信号（１２４）がデアサートされる（１３２））との間の相違をもたらし、アサートされたテストモード制御信号またはデアサートされたテストモード制御信号をスキャンチェーン（１０８）に印加することを制御するのにも役立つ。
【００２８】
シフトフェーズ（例えばシフトフェーズ（１３０）および（１３４））の間、テストパターンはスキャンチェーン（１０８）にロードされ、テスト応答はスキャンチェーン（１０８）からアンロードされる。シフトフェーズの間テストパターンがロードされたことに応答してスキャンチェーン（１０８）を介して生成された１つまたは複数の応答ベクトルが、スキャンチェーン（１０８）を構成する記憶素子の通常動作モードの間キャプチャフェーズ（例えば、（１３２））でキャプチャされる。図１Ｂに示すように、スキャンチェーン内の所与の数のフリップフロップ、および所与のテストパターンでは、スキャンイネーブル信号に関するテストモード制御信号（１２４）は、クロック信号（１２２）のクロックサイクルの数と一定の関係にある。図１Ｂに示した波形は１つのキャプチャクロック（例えば、キャプチャフェーズ（１３２）内）を示しているが、複数のキャプチャクロックが様々なタイプのテストパターンに必要とされてもよく、例えば、縮退故障ＡＴＰＧパターンが１つのキャプチャクロックを含み得、遷移故障ＡＴＰＧパターンが２つのキャプチャクロックを含み得、また、シーケンシャルなＡＰＴＧパターンが複数のキャプチャクロックを含み得る。テストモード制御信号（１２４）は、例えば、ローンチオフキャプチャ遷移故障ＡＴＰＧパターンの２つのキャプチャクロックの前、第１のキャプチャクロックと第２のキャプチャクロックの間、および様々なタイプのテストパターン用の連続したキャプチャクロック間での様々なその他の方式で、状態を変化させ得る（すなわち、デアサートされ得る）。
【００２９】
図２は、一実施形態に従った集積回路（２００）におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる第１の例示的な集積回路（２００）を示す。集積回路（２００）は、テストパターン検出ブロック（２０２）、カウンタ回路（２０４）、および制御回路（２０６）を含む。テストパターン検出ブロック（２０２）は、検出パターン（２０８）を受け取るように構成される。制御回路（２０６）およびカウンタ回路（２０４）は、クロック信号（２０９）を介して動作する。クロック信号（２０９）（例えば、図１Ｂのクロック信号（１２２））は、シフトフェーズおよびキャプチャフェーズの間、テスタ（例えば、図１Ａのテスタ（１０２））から受け取られる。クロック信号（２０９）は、例えば、キャプチャフェーズの間（例えば、集積回路（２００）内または集積回路（２００）と通信可能に結合されたデバイス内の）位相ロックループを用いて、内部生成される。検出パターン（２０８）は、テストパターンのシフトフェーズの開始および／またはテストパターンのキャプチャフェーズの開始を示す情報を含む。例えば、パターン８’ｈＡＡがシフトフェーズの開始を示し得、パターン８’ｈ５５がキャプチャフェーズの開始を示し得る。テストパターン検出ブロック（２０２）は、テストパターンのシフトフェーズの開始に対応する第１のパターン（例えば、８’ｈＡＡ）およびテストパターンのキャプチャフェーズの開始に対応する第２のパターン（例えば、８’ｈ５５）を、検出パターン（２０８）に基づいて検出するように構成される。テストパターンは、テストベクトルと、スキャンテスト中の各シフトフェーズおよび各キャプチャフェーズに対応するクロック信号（２０９）のクロックサイクル数を示す情報とを含む。テストパターン検出ブロック（２０２）は、集積回路（２００）のスキャンデータ入力ピンでのビット組合せに基づいて、第１のパターンおよび第２のパターンを検出する。
【００３０】
テストパターン検出ブロック（２０２）は、テストパターンセット全体のシフトフェーズの開始およびキャプチャフェーズの開始を検出するために単一検出パターンを利用することができる。テストパターン（２０８）は、可変数の入力チャンネルを介してテストパターン検出ブロック（２０２）に伝送され得る。例えば、パターンＡＡが、０１０１０１０１として、例えば、１つのサイクルにおける８ビットバス、２つのサイクルにおける４ビットバス（例えば、１サイクルにおいて０１０１および後続のサイクルにおいて０１０１として）、４つのサイクルにおける２ビットバス（例えば、４サイクルの各々において０１として）、および８つのサイクルにおける１ビットバス、を介して伝送され得る。
【００３１】
一実施形態において、テストパターン検出ブロック（２０２）、カウンタ回路（２０４）、および制御回路（２０６）のうちの１つまたは複数が、本明細書で説明するように、いくつかの動作を実行するように特に構成された、特定用途向け集積回路（ＡＳＩＣ）またはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）として、またはそれらの組合せとして、具現化され得る。一実施形態において、テストパターン検出ブロック（２０２）、カウンタ回路（２０４）、および制御回路（２０６）のうちの１つまたは複数が、メモリデバイス（例えば、キャッシュ）、タイミングデバイス（例えば、リアルタイムクロック（ＲＴＣ））、構成可能な論理ブロック（ＣＢＬ）のアレイ、プログラム可能な入力／出力ブロック（ＩＯＢ）および／または追加回路のアレイもしくは伝送チャンネルのアレイを含むこともできる。ＣＬＢおよびＩＯＢは、プログラム可能な相互接続構成によって互いに相互接続または結合され得る。
【００３２】
一実施形態において、テストパターン検出ブロック（２０２）、カウンタ回路（２０４）、および制御回路（２０６）のうちの１つまたは複数が、メモリデバイスと関連付けられる内部構成メモリセルに構成データのストリーム（例えば、ビットストリーム）をロードすることによってプログラムすることができ、この構成データは様々な構成の定義を含むことができる。構成データは、外部メモリ（例えば、プログラマブルリードオンリメモリ（ＲＯＭ））から読み出され得、または、外部デバイスにより集積回路（２００）に書き込まれ得る。個々のメモリセルの集合的な状態は、ＦＰＧＡの機能を決定する。図２の集積回路（２００）の例示的な回路実装を、図３Ａに示す。
【００３３】
図３Ａは、一実施形態に従った、集積回路（３００）内のスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる第１の例示的な集積回路（３００）を示す。テストモード制御信号の例は、これらに限定されないが、スキャンイネーブル信号およびロードイネーブル信号を含む。集積回路（３００）は、テストパターン検出ブロック（３０２）、カウンタ回路（３０４）、および制御回路（３０６）を含む。テストパターン検出ブロック（３０２）、カウンタ回路（３０４）、および制御回路（３０６）は、図２の、それぞれ、テストパターン検出ブロック（２０２）、カウンタ回路（２０４）、および制御回路（２０６）と実質的に同等である。テストパターン検出ブロック（３０２）は、検出パターン（３０８）を受け取るように構成される。検出パターン（３０８）は、テストパターンのシフトフェーズの開始および／またはテストパターンのキャプチャフェーズの開始を示す情報を含む。テストパターンは、テストベクトルを含み得、また、スキャンテスト中の１つまたは複数のシフトフェーズおよび１つまたは複数のキャプチャフェーズに対応するクロック信号（３０９）のクロックサイクル数を示す情報、または、スキャンテスト中の１つまたは複数のシフトフェーズに対応するクロック信号（３０９）のクロックサイクル数を示す情報を含むことができる。
【００３４】
テストパターンが、１つもしくは複数のシフトフェーズおよび１つもしくは複数のキャプチャフェーズに対応するクロック信号（３０９）のクロックサイクル数を示す際、シフトフェーズおよびキャプチャフェーズは、スキャンイネーブル信号を介して区別される。テストパターンが１つまたは複数のシフトフェーズのみを示す際には、シフトフェーズは、ロードイネーブル信号を介して識別される。１つまたは複数のキャプチャフェーズおよびシフトフェーズを示すテストパターン、ならびに１つまたは複数のシフトフェーズのみを示すテストパターンは、マッチングテストモード制御を用いて好ましい順で選択される。クロック信号（３０９）（例えば、図１Ｂのクロック信号（１２２））は、シフトフェーズおよびキャプチャフェーズの間、テスタ（例えば、図１Ａの（１０２））から受け取られる。クロック信号（３０９）は、例えば、キャプチャフェーズの間（例えば、集積回路（３００）内、または集積回路（３００）と通信可能に結合されたデバイス内の）位相ロックループを用いて、内部生成され得る。テストパターン検出ブロック（３０２）は、検出パターン（３０８）に基づいて、テストパターンのシフトフェーズ（例えば、８’ｈＡＡ）の開始に対応する第１のパターン、およびテストパターンのキャプチャフェーズの開始に対応する第２のパターン（例えば、８’ｈ５５）を検出するようにも構成される。
【００３５】
テストパターン検出ブロック（３０２）は、スキャンデータ入力ピンでのビット組合せに基づいて第１のパターンおよび第２のパターンを検出する。テストパターン検出ブロック（３０２）は、テストパターンのシフトフェーズに対応する第１のパターンを検出するように構成された第１のテストパターンブロック（３１０）、およびテストパターンのキャプチャフェーズに対応する第２のパターンを検出するように構成された第２のテストパターンブロック（３１２）を含む。テストパターン検出ブロック（３０２）は、第１のパターンおよび第２のパターンの検出に基づいてトリガ信号（例えば、（３１４）および（３１６））を生成するように構成される。第１のテストパターン検出ブロック（３１０）は、シフトフェーズの開始を示しかつトリガ信号（３１４）を生成する、例えば８’ｈＡＡなどの、第１のパターンを検出し、第２のテストパターンブロック（３１２）は、キャプチャフェーズの開始を示しかつトリガ信号（３１６）を生成する、例えば８’ｈ５５などの、第２のパターンを検出する。
【００３６】
トリガ信号（例えば、（３１４）および（３１６））は制御回路（３０６）に送信され、これにより、制御回路（３０６）を介してカウンタ回路（３０４）がトリガされる。カウンタ回路（３０４）は、検出されたパターンに基づいて１つまたは複数の状態を生成するよう構成される。カウンタ回路（３０４）は、シフトフェーズおよびクロック信号（３０９）に対応する１つまたは複数のカウント状態、ならびにキャプチャフェーズおよびクロック信号（３０９）に対応する１つまたは複数のカウント状態を生成する。カウンタ回路（３０４）は、レジスタブロック（３１８）、第１のカウンタ（３２０）、および第２のカウンタ（３２１）を含む。レジスタブロック（３１８）は、クロック信号（３０９）およびリセット信号（３１９）を介して動作するように構成された１つまたは複数のレジスタを含む。レジスタブロック（３１８）は、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、およびキャプチャ終了カウント状態のうちの少なくとも１つを記憶するように構成される。
【００３７】
シフト開始カウント状態とシフト終了カウント状態の間の期間は、テストモード制御信号がシフトフェーズのためにアサートされたままである期間に対応し、スキャンテストの間シフト動作を実行しなければならないクロック信号（３０９）のクロックサイクル数にも対応している。この期間は、期間という観点では、スキャンチェーンの最大の長さに対応し得る。キャプチャ開始カウント状態とキャプチャ終了カウント状態の間の期間は、テストモード制御信号がキャプチャフェーズのためにデアサートされたままである期間に対応し、スキャンテストの間キャプチャ動作を実行しなければならないクロック信号（３０９）のクロックサイクル数にも対応している。集積回路（３００）は更にテストインタフェース（３２３）を含み、テストインタフェース（３２３）は、レジスタブロック（３１８）と通信可能に関連付けられまたは結合され、かつ、レジスタブロック（３１８）を制御するように、およびテストパターンに基づきシフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、およびキャプチャ開始カウント状態のうちの少なくとも１つを変化させるように構成される。テストインタフェース（３２３）の例は、これらに限定されないが、ジョイントテスト作業グループ（ＪＴＡＧ）インタフェース、および埋め込みコアテストインタフェースを含む。第１のカウンタ（３２０）および第２のカウンタ（３２１）は、レジスタブロック（３１８）と結合される。テスタからのクロック信号（３０９）は、シフト動作およびキャプチャ動作のために第１のカウンタ（３２０）および第２のカウンタ（３２１）に使用される。あるいは、テスタからのクロック信号（３０９）は、シフト動作のために第１のカウンタ（３２０）をクロックするために用いられ、高速の内部生成されたクロック信号（例えば、位相ロックループを用いて生成される）が、キャプチャ動作のために第２のカウンタ（３２１）をクロックするために用いられる。
【００３８】
第１のカウンタ（３２０）は、シフト開始カウント状態からシフト終了カウント状態（例えば、ゼロカウント）までのシフトフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。第２のカウンタ（３２１）は、キャプチャ開始カウント状態からキャプチャ終了カウント状態（例えば、ゼロカウント）までのキャプチャフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。第１のカウンタ（３２０）および第２のカウンタ（３２１）は、ダウンカウンタを含むことができる。ダウンカウンタは、これに限定されないが、８ビットダウンカウンタを含むことができる。制御回路（３０６）は、テストパターン検出ブロック（３０２）から１つまたは複数のトリガ信号（例えば、（３１４）および（３１６））を受け取るように配置されるように、テストパターン検出ブロック（３０２）と結合される。制御回路（３０６）をトリガするために、シフト終了カウント状態またはキャプチャ終了カウント状態を含む１つまたは複数のカウント状態が制御回路（３０６）に供給されるように、制御回路（３０６）は、カウンタ回路（３０４）と結合される。制御回路（３０６）は、１つまたは複数の選択ブロック（例えば、選択ブロック（３２２）および（３２４））、ならびに１つまたは複数のフリップフロップ（例えば、Ｄフリップフロップ（３２６）、（３２８）、（３３０）および（３３２））を含む。
【００３９】
選択ブロックの例は、これに限定されないが、マルチプレクサを含む。１つまたは複数の選択ブロック（例えば、（３２２）および（３２４））の各々が、テストパターン検出ブロック（３０２）からのトリガ信号（例えば、（３１４）および（３１６））、ならびにカウンタ回路（３０４）からの１つまたは複数のカウント状態に対応する信号（（３１５）および（３１７））を受け取るように構成される。一実施形態において、第１の選択ブロック（３２２）が、第１のカウンタ（３２０）のシフト終了カウント状態に対応する信号（３１５）を受け取るように構成され、この信号（３１５）を受け取る際またはそれに続いて非活性化され、また、第２の選択ブロック（３２４）が、第２のカウンタ（３２１）のキャプチャ終了カウント状態に対応する信号（３１７）を受け取るように構成され、この信号（３１７）を受け取る際またはそれに続いて非活性化される。
【００４０】
一実施形態では、フリップフロップ（例えば、フリップフロップ（３２６）、（３２８）、（３３０）、および（３３２））の各々が、クロック信号（３０９）およびリセット信号（３１９）を介して動作する。トリガ信号（例えば、トリガ信号（３１４）および（３１６））を受け取る際またはそれに続いて、選択ブロック（例えば、選択ブロック（３２２）および（３２４））の各々が、１つまたは複数のフリップフロップ（例えば、フリップフロップ（３２６）、（３２８）、（３３０）、および（３３２））をトリガして、１つまたは複数のイネーブル信号（例えば、信号（３４０）および（３４２））を生成し、その結果、カウンタ回路（３０４）を介して１つまたは複数のカウント状態の生成をトリガする。制御回路（３０６）は、シフトフェーズに対応する１つまたは複数のカウント状態およびキャプチャフェーズに対応する１つまたは複数のカウント状態に基づき、テストモード制御信号を生成および制御するように構成される。カウント状態が、シフト開始カウント状態およびキャプチャ終了カウント状態のうちの１つである場合、制御回路（３０６）は、テストモード制御信号のアサートを実行するように構成される。
【００４１】
制御回路（３０６）は、アサートされたテストモード制御信号がスキャンイネーブル生成論理を介して生成されることに基づき、イネーブル同期（ｓｙｎｃ）信号（３４４）を生成するように構成される。カウント状態が、キャプチャ開始カウント状態およびシフト終了カウント状態のうちの１つである場合、制御回路（３０６）は、テストモード制御信号のデアサートを実行するように構成される。制御回路（３０６）は、デアサートされたテストモード制御信号がスキャンイネーブル生成論理を介して生成されることに基づき、イネーブル同期（ｓｙｎｃ）キャプチャ信号（３４６）を生成するように構成される。
【００４２】
図３Ｂは、一実施形態に従った図３Ａの集積回路（３００）の動作を図示するプロセスフローの例示的な図である。図３Ｂにおいて、集積回路（３００）のスキャンテストの複数の状態がブロック（３５０）〜（３５６）に示されている。動作の複数の状態は、これに限定されないが、初期化状態（３５０）、アイドル状態（３５２）、シフト動作（３５４）、およびキャプチャ動作（３５６）を含む。一実施形態では、初期化状態（３５０）の間、集積回路（３００）の動作（またはスキャンテスト）が初期化される。アイドル状態（３５２）の間、シフトフェーズまたはキャプチャフェーズが始まる前に、１つまたは複数のウェイト（待機）サイクルがスキャンテストに生じる。テストパターン検出ブロック（３０２）がテストパターン（３０８）のシフトフェーズに対応する第１のパターンを検出する際またはそれに続いて（例えば、（３６０）参照）、シフト動作は始まる（例えば、（３５６）参照）。シフト動作（３５６）の間、制御回路（３０６）は、カウンタ回路（３０４）をトリガするためにカウントイネーブル信号（３４０）を生成するように構成され、かつ、イネーブル同期信号（３４４）、およびこのイネーブル同期信号（３４４）に基づくアサートされたテストモード制御信号を生成するようにも構成される。カウンタ回路（３０４）がトリガされると、カウンタ回路（３０４）は、シフトフェーズに対応する１つまたは複数のカウント状態を生成する。テストモード制御信号は、カウンタ回路（３０４）を介して生成された１つまたは複数のカウント状態の期間の間、テストモード制御信号がアサートされたままであることに留意されたい。第１のカウンタ（３２０）はテストパターン（３０８）のシフトフェーズに対応するパターンを検出する際またはそれに続いてトリガされ、かつ第１のカウンタ（３２０）は、１つまたは複数のカウント状態を生成し始める（例えば、各クロックサイクルでシフト開始カウント状態からシフト終了カウント状態へのデクリメントを開始する）。
【００４３】
第１のカウンタ（３２０）のカウント状態がシフト終了カウント状態（例えば、ゼロカウント）に到達するまで、第１のカウンタ（３２０）はカウンタ状態を（例えば、シフト開始カウント状態からダウンカウントすることによって）変化させる。第１のカウンタ（３２０）のカウント状態がシフト終了カウント状態に到達する際またはそれに続いて、シフト動作（３５６）は終了し（（３６２）に示す）、集積回路（３００）のスキャンテストはアイドル状態（３５２）に戻る。テストパターン検出ブロック（３０２）がテストパターンのキャプチャフェーズに対応する第２のパターンを検出する際またはそれに続いて（（３６４）に示す）、キャプチャ動作が（３５４）で開始し、制御回路（３０６）は、カウンタ回路（３０４）をトリガするようにカウントイネーブル信号（３４２）を生成し、かつイネーブル同期キャプチャ信号（３４６）も生成し、デアサートされたテストモード制御信号が、このイネーブル同期キャプチャ信号（３４６）に基づいて生成される。トリガされる際またはそれに続いて、カウンタ回路（３０４）は、キャプチャフェーズに対応するカウント状態を生成する。テストモード制御信号は、キャプチャフェーズに対応する１つまたは複数のカウント状態の期間にわたりデアサートされたままである。第２のカウンタ（３２１）は、カウントイネーブル信号（３４２）によってトリガされ、第２のカウンタ（３２１）をトリガする際またはそれに続いて、１つまたは複数のカウント状態を生成する（例えば、各クロックサイクルで、キャプチャ開始カウント状態からキャプチャ終了カウンタ状態へカウント状態をデクリメントする）。
【００４４】
第２のカウンタ（３２１）のカウント状態がキャプチャ終了カウント状態（例えば、ゼロカウント）に到達するまで、第２のカウンタ（３２１）は、そのカウント状態を（例えば、キャプチャ開始状態からダウンカウントすることにより）変化させる。キャプチャ終了カウント状態に到達する際またはそれに続いて、キャプチャ動作（３５４）は終了し（（３６６）に示す）、集積回路（３００）はアイドル状態（３５２）へ戻る。いくつかの実施例では、カウンタ回路（３０４）は、図３Ａを参照して本明細書に述べる第１のカウンタ（３２０）および第２のカウンタ（３２１）の個々の機能または組み合わされた機能を実行するための単一のカウンタを含み得る。
【００４５】
いくつかの実施例において、開示する技術の集積回路は、シフトフェーズおよびキャプチャフェーズの前に１つまたは複数のウェイトサイクルを生成するように構成された１つまたは複数のウェイトカウンタを含むことができ、これにより、特定の数のサイクルの通過が、例えば、スキャンイネーブル信号生成論理を、後続のシフトフェーズが開始する前に安定させることができ、また、内部クロック制御論理に、内部生成された実速度キャプチャパルス（at-speed capture pulse）が後続のキャプチャフェーズが開始する前に利用可能な状態を初期化および獲得させることができるようにする。また、テストパターンの中には、異なる数の実速度キャプチャパルスを実装できるものもある。例えば、縮退故障パターンなどのテストパターンが、１つの実速度キャプチャパルスを実装でき、標準の遷移遅延故障およびパス遅延故障パターンなどのテストパターンが、２つの実速度キャプチャパルスを実装できる。後者のカテゴリのテストパターンには、２つ以上の実速度パルスが必要とされる、２よりも大きな「シーケンシャル深度（sequential depth）」を有するものもある。開示する技術の集積回路は、可変数の実速度キャプチャパルスを提供することができる。一実施形態では、集積回路が、固定数の実速度キャプチャパルスを提供するよう構成された１つまたは複数のウェイトカウンタを含む。１つまたは複数の実施形態では、テストパターン検出ブロックをウェイトカウンタに置き換えて、パターン検出値に基づいて、可変数の実速度キャプチャパルスを提供することができる。ウェイトカウンタを含む例示的な集積回路を、図４Ａおよび図４Ｂに示す。
【００４６】
図４Ａは、一実施形態に従った集積回路（４００）におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる第２の例示的な集積回路（４００）を示す。集積回路（４００）は、テストパターン検出ブロック（４０２）、カウンタ回路（４０４）、および制御回路（４０６）を含む。テストパターン検出ブロック（４０２）は、検出パターン（４０８）を受け取るように構成される。検出パターン（４０８）は、図３Ａの検出パターン（３０８）と実質的に同等である。クロック信号（４１０）（例えば図１Ｂのもの）は、テスタ（例えば、図１Ａのテスタ（１０２））から受け取られる。クロック信号（４１０）は、例えば（例えば、集積回路（４００）内または集積回路（４００）と通信可能に結合されたデバイス内の）位相ロックループ等を用いて、集積回路（３００）内に内部生成できる。テストパターン検出ブロック（４０２）は、テストパターンのシフトフェーズの開始に対応するパターン（例えば、８’ｈＡＡ）を検出するように構成される。テストパターンは、図３Ａを参照して本明細書で述べるテストパターンと実質的に同等である。テストパターン検出ブロック（４０２）は、スキャンデータ入力ピンのビット組合せに基づいてパターンを検出する。
【００４７】
テストパターン検出ブロック（４０２）は、パターンの検出に基づいてトリガ信号（例えば（４１２））を生成するよう構成される。トリガ信号（４１２）は制御回路（４０６）に伝送されて、これにより制御回路（４０６）を介してカウンタ回路（４０４）をトリガする。カウンタ回路（４０４）は、検出されたシフトパターンに基づいて、１つまたは複数のカウント状態を生成するよう構成される。一実施形態では、カウンタ回路（４０４）は、シフトフェーズおよびクロック信号（４１０）に対応する１つまたは複数のカウント状態と、キャプチャフェーズおよびクロック信号（４１０）に対応する１つまたは複数のカウント状態を生成して、スキャンイネーブル信号を介して制御されるテストパターンに備える。別の実施形態では、カウンタ回路（４０４）は、シフトフェーズおよびクロック信号（４１０）に対応する１つまたは複数のカウント状態を生成して、ロードイネーブル信号を介して制御されるテストパターンに備える。カウンタ回路（４０４）は、レジスタブロック（４１４）、第１のカウンタ（４１６）、第２のカウンタ（４１８）、およびウェイトカウンタ（４２０）を含む。説明のため、詳細な説明は１つのウェイトカウンタに言及する。しかし、本明細書で開示する方法および集積回路の範囲は、１つのカウンタ回路の実装に限定されず、複数のウェイトカウンタの組合せを含むように拡張され得ることに留意されたい。
【００４８】
レジスタブロック（４１４）は、クロック信号（４１０）およびリセット信号（４１９）を介して動作する１つまたは複数のレジスタを含む。また、第１のカウンタ（４１６）、第２のカウンタ（４１８）、およびウェイトカウンタ（４２０）の各々が、クロック信号（４１０）およびリセット信号（４１９）を介して動作する。レジスタブロック（４１４）は、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、キャプチャ終了カウンタ状態、およびウェイトサイクル数を示す予め決められたカウント状態値のうちの少なくとも１つを記憶するように構成される。シフト開始カウント状態とシフト終了カウント状態の間の期間は、テストモード制御信号がシフトフェーズのためにアサートされたままである期間に対応し、キャプチャ開始カウンタ状態とキャプチャ終了カウント状態の間の期間は、テストモード制御信号がキャプチャフェーズのためにデアサートされたままである期間に対応する。シフト開始カウント状態は、期間の観点では、スキャンチェーンの最大の長さに対応し得る。キャプチャ開始カウント状態は、キャプチャフェーズのためにテストモード制御信号がデアサートされたままである期間に対応する。レジスタブロック（４１４）を制御するため、および、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウンタ状態、およびキャプチャ終了カウンタ状態能のうちの少なくとも１つをテストパターンに基づいて変化させるために配置されるように、集積回路（４００）は、レジスタブロック（４１４）と通信可能に関連付けまたは結合されたテストインタフェース（４２１）も含む。テストインタフェース（４２１）の例は、これらに限定されないが、ＪＴＡＧインタフェースおよび埋め込みコアテストインタフェースを含む。
【００４９】
第１のカウンタ（４１６）および第２のカウンタ４１８は、レジスタブロック（４１４）と結合される。テスタ（例えば、図１Ａのテスタ（１０２））からのクロック信号（４１０）は、それぞれ、シフト動作およびキャプチャ動作のために第１のカウンタ（４１６）および第２のカウンタ４１８をクロックするために用いられる。あるいは、一実施形態では、テスタからのクロック信号（４１０）が、シフト動作のために第１のカウンタ（４１６）をクロックするために用いられ、高速内部生成クロック信号（例えば、位相ロックループを用いて生成される）が、キャプチャ動作のために第２のカウンタ４１８をクロックするために用いられる。
【００５０】
第１のカウンタ（４１６）は、シフト開始カウント状態からシフト終了カウント状態（例えば、ゼロカウント）までのシフトフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。第１のカウンタ（４１６）は、検出パターン（４０８）に基づきシフトフェーズの開始に対応するパターンを検出する際またはそれに続いて、１つまたは複数のカウント状態を生成する。第２のカウンタ４１８は、キャプチャ開始カウント状態からキャプチャ終了カウント状態（例えば、ゼロカウント）までのキャプチャフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。第１のカウンタ（４１６）および第２のカウンタ４１８は、ダウンカウンタを含むことができる。ダウンカウンタは、これに限定されないが、８ビットダウンカウンタを含むことができる。第１のカウンタ（４１６）は、ウェイトカウンタ（４２０）と結合され、その結果、ウェイトカウンタ（４２０）が、第１のカウンタ（４１６）のシフト終了カウント状態（例えば、信号（４１３）参照）に対応する信号によってトリガされて、キャプチャフェーズの前に１つまたは複数のウェイトサイクルに対応するカウント状態を生成するようにする。ウェイトカウンタ（４２０）は、レジスタブロック（４１４）に結合されて、予め決められたカウント状態値をレジスタブロック（４１４）から取得する。この予め決められたカウント状態値は、ウェイトカウンタ（４２０）が作動する際に生成されるウェイトサイクル数を示す。ウェイトサイクル数を示す情報は、検出パターンに含まれる。このような実施形態では、検出パターンは、ウェイトサイクル数を示すパターンの第１のセット、およびキャプチャフェーズの開始を示すパターンの第２のセットを含むことができる。１つまたは複数のウェイトサイクルが完了する際またはそれに続いて、ウェイトカウンタ（４２０）は制御回路（４０６）をトリガして（例えば、信号（４１５）参照）、これにより、第２のカウンタ４１８をトリガし、キャプチャフェーズに対応する１つまたは複数のカウント状態を生成する。第２のカウンタ４１８は、キャプチャ開始カウント状態からキャプチャ終了カウント状態（例えば、ゼロカウント）までの１つまたは複数のカウンタ状態を生成する。
【００５１】
シフトフェーズの開始に対応するパターン（例えば、８’ｈＡＡ）の検出の際またはそれに続いて、テストパターン検出ブロック（４０２）からトリガ信号（例えば、（３１４））を受け取るように配置されるように、制御回路（４０６）はパターン検出ブロック（４０２）と結合される。制御回路（４０６）は、１つまたは複数の選択ブロック（例えば、選択ブロック（４２２）、（４２４）、および（４２５））ならびに１つまたは複数のフリップフロップ（例えば、Ｄフリップフロップ（４２６）、（４２８）、（４３０）、および（４３２））を含む。選択ブロック（例えば、選択ブロック（４２２）、（４２４）、および（４２５））は、これに限定されないが、マルチプレクサを含み得る。選択ブロック（４２２）は、テストパターン検出ブロック（４０２）からのトリガ信号（４１２）、および第１のカウンタ（４１６）の１つまたは複数のカウント状態に対応する信号（４１３）を受け取るように構成される。
【００５２】
フリップフロップ（例えば、フリップフロップ（４２６）、（４２８）、（４３０）、および（４３２））の各々は、クロック信号（４１０）およびリセット信号（４１９）を介して動作する。トリガ信号（４１２）を受け取る際またはそれに続いて、第１の選択ブロック（４２２）が、フリップフロップ（４２６）および（４２８）をトリガする。トリガされる際またはそれに続いて、フリップフロップ（４２６）および（４２８）は共同動作して、シフトフェーズに対応する１つまたは複数のカウント状態を生成するように第１のカウンタ（４１６）をトリガするイネーブル信号（４３６）、およびアサートされたテストモード制御信号をテストモード制御信号生成論理を介して生成するために用いられ得るイネーブル同期信号（４３８）を生成する。シフト終了カウント状態を受け取る際またはそれに続いて（例えば、（４１３）参照）、選択ブロック（４２２）で、フリップフロップ（例えば、フリップフロップ（４２６）、（４２８）、（４３０）、および（４３２））は非活性化され、イネーブル同期信号（４３８）は低レベルに達し、その結果、テストモード制御信号がデアサートされる。第２の選択ブロック（４２４）が、イネーブル同期信号（４３８）、およびウェイトカウンタ（４２０）の１つまたは複数のカウント状態に対応する信号（４１５）を受け取る。イネーブル同期信号（４３８）が、シフトフェーズの終了を示す低レベルに達する際またはそれに続いて（イネーブル同期信号（４３８）が、例えば論理１から論理０に、遷移するときなど）、第２の選択ブロック（４２４）は、１つまたは複数のカウント状態を生成するために第２のカウンタ４１８をトリガするカウントイネーブル信号（４４２）を生成するように、フリップフロップ（４３０）をトリガする。
【００５３】
トリガされる際またはそれに続いて、第２のカウンタ４１８は、キャプチャ開始カウント状態から開始してキャプチャ終了カウント状態まで１つまたは複数のカウント状態を生成する（例えば、各クロックサイクルで、キャプチャ開始カウント状態からキャプチャ終了カウント状態までのカウント状態をデクリメントする）。また、第３の選択ブロック（４２５）が、イネーブル信号（４４２）、および第２のカウンタ４１８の１つまたは複数のカウント状態に対応する信号（例えば、（４１７）参照）を受け取る。イネーブル信号（４４２）および第２のカウンタ４１８からの１つまたは複数のカウント状態に対応する信号（４１７）を受け取る際またはそれに続いて、第３の選択ブロック（４２５）は、デアサートされたテストモード制御信号をテストモード制御信号生成論理を介して生成するために用いられるイネーブル同期キャプチャ信号（４４４）を生成するように、フリップフロップ（４３２）をトリガする。キャプチャ終了カウント状態に対応する信号（４１７）を受け取る際またはそれに続いて、第３の選択ブロック（４２５）はフリップフロップ（４３２）を非活性化し、その結果、イネーブル同期キャプチャ信号（４４４）は、テストモード制御信号のデアサートにつながる低レベルに達する。
【００５４】
図４Ｂは、一実施形態に従った図４Ａの集積回路（４００）の動作を示すプロセスフローの例示的な図である。図４Ｂにおいて、集積回路（４００)のスキャンテストの複数の状態をブロック（４５０）〜（４５８）に示してある。複数の状態は、これらに限定されないが、初期化状態（４５０）、アイドル状態（４５２）、シフト動作（４５４）、キャプチャ動作の準備（４５６）、およびキャプチャ動作（４５６）を含む。一実施形態において、初期化状態の間（４５０）、集積回路（４００）のスキャンテストは、テスタ（例えば、図１Ａのテスタ（１０２））からクロック信号（４１０）を受け取ることによって初期化される。アイドル状態（４５２）の間、シフトフェーズまたはキャプチャフェーズが開始する前に、スキャンテストには１つまたは複数のウェイトサイクルがある。テストパターン検出ブロック（４０２）がテストパターンのシフトフェーズに対応するパターンを検出（例えば、（４６０）参照）する際またはそれに続いて、シフト動作が開始する（例えば、（４５４）参照）。シフト動作（４５４）の間、カウンタ回路（４０４）は、シフトフェーズに対応するカウント状態を生成し始める。
【００５５】
制御回路（４０６）は、カウンタ回路（４０４）をトリガするようにカウントイネーブル信号（４３６）を生成し、また、制御回路（４０６）は、イネーブル同期信号（４３８）、およびイネーブル同期信号（４３８）に基づいてアサートされたテストモード制御信号も生成する。第１のカウンタ（４１６）は、テストパターンのシフトフェーズに対応するパターンを検出する際またはそれに続いてトリガされ、第1のカウンタ（４１６）がトリガされると、第１のカウンタ（４１６）は、レジスタブロック（４１４）からシフト開始カウント状態を取得し、シフトフェーズに対応する1つまたは複数のカウント状態を生成する（例えば、第１のカウンタ（４１６）は、各クロックサイクルでシフト開始カウント状態からシフト終了カウンタ状態までのカウント状態をデクリメントする）。この１つまたは複数のカウント状態は、シフト開始カウント状態から始まり生成される。テストモード制御信号が、第１のカウンタ（４１６）を介して生成された１つまたは複数のカウント状態の期間中、アサートされたままであることに留意されたい。
【００５６】
第１のカウンタ（４１６）のカウント状態がシフト終了カウント状態（例えば、ゼロカウント）に達するまで、第１のカウンタ（４１６）は、そのカウント状態を（例えば、シフト開始カウント状態からダウンカウントすることによって）変化させる。第１のカウンタ（４１６）のカウント状態がシフト終了カウント状態に達する際またはそれに続いて（例えば、図４Ａの信号（４１３）参照）、シフト動作（４５４）は終了し（（４６２）に示す）、テストモード制御信号はデアサートされ、集積回路（４００）は準備キャプチャ動作を実行する（（４５６）に示す）。キャプチャ動作の準備の間、ウェイトカウンタ（４２０）はトリガされる。トリガされる際またはそれに続いて、ウェイトカウンタ（４２０）は、１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成する。１つまたは複数のウェイトサイクルを完了する際またはそれに続いて（例えば、図４Ａの信号（４１５）参照）、第２のカウンタ４１８はトリガされ、キャプチャ動作（（４５８）に示す）が（４６６）で始まる。
【００５７】
キャプチャ動作（４５８）の間、第２のカウンタ４１８は、レジスタブロック（４１４）からキャプチャ開始カウント状態を取得し、キャプチャフェーズに対応する１つまたは複数のカウント状態を（例えば、各クロックサイクルでキャプチャ開始カウント状態からキャプチャ終了カウント状態までのカウント状態をデクリメントすることによって）生成する。制御回路（４０６）は、カウンタ回路（４０４）をトリガするようにカウントイネーブル信号（４４２）を生成し、かつ、イネーブル同期信号（４４４）、およびイネーブル同期信号（４４４）に基づくデアサートされたテストモード制御信号も生成する。第２のカウンタ４１８のカウント状態がキャプチャ終了カウント状態に達するまで、第２のカウンタ４１８はカウント状態を（例えば、キャプチャ開始カウント状態からダウンカウントすることによって）変化させる。第２のカウンタ４１８のカウント状態がキャプチャ終了カウント状態に達する際またはそれに続いて、キャプチャ動作は終了し（４６６に示す）、集積回路（４００）はアイドル状態（４５２）に戻る。開示する技術の集積回路は、第１のシフトフェーズに対応するパターンの検出に基づいて動作するように構成され得、また、後続のシフトフェーズおよびキャプチャフェーズでは、集積回路は様々なカウンタを介して生成されたカウント状態に基づいて反復的に動作し得る。このような集積回路を図５Ａから図６でさらに説明する。
【００５８】
図５Ａは、一実施形態に従った集積回路（５００）におけるスキャンチェーンを介してスキャンテスト用のテストモード制御信号を生成することのできる第３の例示的な集積回路（５００）を示す。集積回路（５００）は、テストパターン検出ブロック（５０２）、カウンタ回路（５０４）、および制御回路（５０６）を含む。テストパターン検出ブロック（５０２）は、検出パターン（５０８）を受け取るように構成される。検出パターン（５０８）は、図３Ａの検出パターン（３０８）と実質的に同等である。クロック信号（５１０）（例えば、図１Ｂのクロック信号（１２２））は、テスタ（例えば、図１Ａのテスタ（１０２））から受け取られる。クロック信号（５１０）は、例えば、キャプチャフェーズの間（例えば、集積回路（５００）内、または集積回路（５００）と通信可能に結合されたデバイス内の）位相ロックループを用いて、内部生成され得る。テストパターン検出ブロック（５０２）は、テストパターンの第１のシフトフェーズの開始に対応するパターン（例えば、８’ｈＡＡ）を検出するように構成される。テストパターンは、図３Ａを参照して本明細書で説明するテストパターンと実質的に同等である。テストパターン検出ブロック（５０２）は、スキャンデータ入力ピンでのビット組合せに基づいてパターンを検出する。
【００５９】
テストパターン検出ブロック（５０２）がパターンを検出すると、制御回路（５０６）はトリガされ、これにより、カウンタ回路（５０４）がトリガされる。カウンタ回路（５０４）は、トリガされる際またはそれに続いて、１つまたは複数のカウント状態を生成するよう構成される。カウンタ回路（５０４）は、シフトフェーズおよびクロック信号（５１０）に対応する１つまたは複数のカウント状態、ならびにキャプチャフェーズおよびクロック信号（５１０）または内部生成されたクロック信号に対応する１つまたは複数のカウント状態を生成するように構成される。カウンタ回路（５０４）は、レジスタブロック（５１４）、第１のカウンタ（５１６）、第２のカウンタ（５１８）、第１のウェイトカウンタ（５２０）、および第２のウェイトカウンタ（５２２）を含む。一実施形態において、レジスタブロック（５１４）、第１のカウンタ（５１６）、第２のカウンタ（５１８）、第１のウェイトカウンタ（５２０）、および第２のウェイトカウンタ（５２２）の各々は、クロック信号（５１０）およびリセット信号（５１９）を介して動作する。説明のため、この詳細な説明は１つのウェイトカウンタに言及するが、本明細書で開示する方法および集積回路の範囲は１つのウェイトカウンタの実装に限定されず、この範囲は２つ以上のウェイトカウンタの組合せを含むように拡張され得ることに留意されたい。
【００６０】
レジスタブロック（５１４）は、１つまたは複数のレジスタを含む。レジスタブロック（５１４）は、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、キャプチャ終了カウント状態、およびウェイトサイクル数および期間を示す予め決められたカウント状態値、のうちの少なくとも１つを記憶するように構成される。シフト開始カウント状態とシフト終了カウント状態の間の期間は、テストモード制御信号がシフトフェーズのためにアサートされたままである期間に対応する。この期間は、期間という観点では、スキャンチェーンの最大の長さに対応し得る。キャプチャ開始カウント状態とキャプチャ終了カウント状態の間の期間は、テストモード制御信号がキャプチャフェーズのためにデアサートされたままである期間に対応する。集積回路（５００）はテストインタフェース（５２１）も含み、テストインターフェース（５２１）は、レジスタブロック（５１４）と通信可能に関連付けられまたは接続され、またレジスタブロック（５１４）を制御するように、および、テストパターンに基づいて、シフト開始カウント状態、キャプチャ開始カウント状態、シフト終了カウント状態、およびキャプチャ終了カウント状態のうちの少なくとも１つを変化させるように構成される。テストインタフェース（５２１）の例は、これらに限定されないが、ＪＴＡＧインタフェースおよび埋め込みコアテストインタフェースを含む。
【００６１】
第１のカウンタ（５１６）および第２のカウンタ（５１８）は、レジスタブロック（５１４）と結合されて、そこから、それぞれ、シフト開始カウント状態およびキャプチャ開始カウント状態を取得する。テスタからのクロック信号（５１０）は、シフト動作およびキャプチャ動作のために第１のカウンタ（５１６）および第２のカウンタ（５１８）に用いられる。あるいは、一実施形態では、テスタからのクロック信号（５１０）が、シフト動作のための第１のカウンタ（５１６）をクロックするために用いられ、高速の内部生成のクロック信号（例えば、位相ロックループを用いて生成される）が、キャプチャ動作のために第２のカウンタ（５１８）に用いられる。
【００６２】
第１のカウンタ（５１６）は、シフト開始カウント状態からシフト終了カウント状態（例えば、ゼロカウント）までのシフトフェーズに対応する１つまたは複数のカウント状態を生成するように構成される。第１のカウンタ（５１６）は、テストパターンの第１のシフトフェーズの開始に対応するパターンを検出する際またはそれに続いて、ならびに、テストパターンのキャプチャフェーズを終了する際またはそれに続いて、１つまたは複数のカウント状態を生成する。第２のカウンタ（５１８）は、テストパターンの１つまたは複数のキャプチャフェーズに対応する１つまたは複数のカウント状態を生成するよう構成される。第２のカウンタ（５１８）は、キャプチャ開始カウント状態からキャプチャ終了カウント状態（例えば、ゼロカウント）までの１つまたは複数のカウント状態を生成するように構成される。第１のカウンタ（５１６）および第２のカウンタ（５１８）は、ダウンカウンタを含むことができる。ダウンカウンタは、これに限定されないが、８ビットダウンカウンタを含むことができる。
【００６３】
第１のウェイトカウンタ（５２０）は、シフトフェーズが開始する前に、１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成するように構成される。第２のウェイトカウンタ（５２２）は、キャプチャフェーズが開始する前に、１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成するように構成される。第１のウェイトカウンタ（５２０）および第２のウェイトカウンタ（５２２）は、レジスタブロック（５１４）と結合され、トリガされる際、トリガされる前、またはトリガされた後に、レジスタブロック（５１４）からのウェイトサイクル数および期間を示す予め決められたカウント状態値を取得するように構成される。レジスタブロック（５１４）は、第１のウェイトカウンタ（５２０）および第２のウェイトカウンタ（５２２）のための様々なカウント状態値を記憶することができる。集積回路（５００）は、テストパターンのシフトフェーズに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの予め決められた数の遷移に対応する１つまたは複数のカウント状態を生成するように構成されたパターンカウンタ５２９をさらに含む。予め決められた数の遷移は、スキャンテスト中にスキャンチェーンに適用される予め決められた数のテストパターンを示す。パターンカウンタ５２９は、スキャンチェーンに適用されるテストパターンの数をカウントする。各テストパターンは、シフトフェーズおよびキャプチャフェーズを含むことができる。レジスタブロック（５１４）は、スキャンチェーンを介してスキャンテスト中に適用可能なテストパターンの最大数を示すパターンカウンタ５２９の初期のカウント状態を記憶する。パターンカウンタ５２９は、レジスタブロック（５１４）からこの初期のカウント状態を取得し、初期カウント状態から始まる１つまたは複数のカウント状態を生成する。
【００６４】
第１のウェイトカウンタ（５２０）は、テストパターンの第１のシフトフェーズに対応するパターンを検出する際またはそれに続いて第１のウェイトカウンタ（５２０）がトリガされるように、制御回路（５０６）と結合される。トリガされる際またはそれに続いて、第１のウェイトカウンタ（５２０）は、１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成する。１つまたは複数のウェイトサイクルを終了する際またはそれに続いて（例えば、（５１３）参照）、第１のウェイトカウンタ（５２０）は、シフトフェーズに対応する１つまたは複数のカウント状態を生成するように、第１のカウンタ（５１６）をトリガする。トリガされる際またはそれに続いて、第１のカウンタ（５１６）は、レジスタブロック（５１４）からシフト開始カウント状態を取得し、かつ、シフト開始カウント状態から開始し、シフト終了カウント状態（例えば、（５１５）参照）（例えば、ゼロカウント）まで継続することなどにより、シフトフェーズに対応する１つまたは複数のカウント状態を生成する。第１のカウンタ（５１６）のシフト終了カウント状態（例えば、（５１５））は、キャプチャフェーズの前に１つまたは複数のウェイトサイクルを生成するように、第２のウェイトカウンタ（５２２）をトリガする。
【００６５】
第２のウェイトカウンタ（５２２）の１つまたは複数のウェイトサイクル（例えば、（５１７）参照）を完了する際またはそれに続いて、第２のカウンタ（５１８）はトリガされる。トリガされる際またはそれに続いて、第２のカウンタ（５１８）は、キャプチャフェーズに対応する１つまたは複数のカウント状態を生成する。第２のカウンタ（５１８）は、キャプチャ開始カウント状態から開始し、キャプチャ終了カウント状態（例えば、ゼロカウント）まで継続するカウント状態を生成する。第２のカウンタ（５１８）のキャプチャ終了カウント状態（例えば、（５２３）参照）は、パターンカウンタ５２９のトリガを導き、パターンカウンタ５２９は、テストパターンのシフトフェーズに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの予め決められた数の許容遷移を示す初期カウント値に初期化される。トリガされる際またはそれに続いて、パターンカウンタ（５２１）は、１つのカウント状態だけ変化する。カウント状態のこの変化は、デクリメントとすることができる。パターンカウンタ５２９のカウント状態（例えば、（５４６）を参照）の変化が完了する際またはそれに続いて、第１のカウンタ（５１６）は再びトリガされて、後続のシフトフェーズに対応する１つまたは複数のカウント状態を生成する。パターンカウンタ５２９は、テストパターンのシフトフェーズに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの予め決められた数の遷移のために第１のカウンタ（５１６）をトリガするように構成される。一実施形態では、予め決められた数の遷移を完了する際またはそれに続いて、テストパターンブロック（５０２）は、後続のシフトフェーズを検出するようにトリガされる（例えば、（５４９）参照）。
【００６６】
テストパターン検出ブロック（５０２）は、制御回路（５０６）と結合され、かつ、テストパターンの第１のシフトフェーズの開始に対応するパターンを検出する際またはそれに続いて制御回路（５０６）をトリガするように構成され、これにより、カウンタ回路（５０４）をトリガする。制御回路（５０６）は、１つまたは複数の選択ブロック（例えば、選択ブロック（５２４）、（５２５）、（５２６）、および（５２７））ならびに１つまたは複数のフリップフロップ（例えば、Ｄフリップフロップ（５２８）、（５３０）、（５３２）、および（５３４））を含む。フリップフロップ（例えば、フリップフロップ（５２８）、（５３０）、（５３２）、および（５３４））は、クロック信号（５１０）およびリセット信号（５１９）を介して動作する。第一の選択ブロック（５２４）が、テストパターン検出ブロック（５０２）からのトリガ信号（５１２）、および第１のウェイトカウンタ（５２０）の１つまたは複数のカウント状態（例えば、（５１３）参照）を取得するように構成される。トリガ信号（５１２）を受け取る際またはそれに続いて、第１のシフトフェーズの前の１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成するために第１のウェイトカウンタ（５２０）をトリガするイネーブル信号を生成するように、第１の選択ブロック（５２４）はフリップフロップをトリガする。１つまたは複数のウェイトサイクル（例えば、（５１３）参照）が終了すると、第１のカウンタ（５１６）がトリガされる。トリガされる際またはそれに続いて、第１のカウンタ（５１６）は、シフト開始カウント状態から開始し、シフト終了カウント状態（例えば、（５１５）参照）を継続することなどにより、第１のシフトフェーズに対応する１つまたは複数のカウント状態を生成する。
【００６７】
また、第１のカウンタ（５１６）をトリガすると、第２の選択ブロック（５２５）がトリガされ、これがイネーブル同期信号（５４０）を生成するようにフリップフロップ（５３０）をトリガし、また、アサートされたテストモード制御信号が、テストモード制御信号生成論理を介してイネーブル同期信号（５４０）に基づき生成される。第１のカウンタ（５１６）のシフト終了カウント状態（例えば、（５１５）参照）は、第２の選択ブロック（５２５）を非活性化し、これにより、イネーブル同期信号（５４０）はテストモード制御信号をデアサートに導くロー状態に（例えば、論理１から論理０に遷移することによって）達する。第３の選択ブロック（５２６）が、イネーブル同期信号（５４０）、および第２のウェイトカウンタ（５２２）の１つまたは複数のカウント状態（例えば、（５１７）参照）を受け取るように構成される。第３の選択ブロック（５２６）は、論理１から論理０にイネーブル同期信号（５４０）が変化する際またはそれに続いてトリガされる。トリガされる際またはそれに続いて、第３の選択ブロック（５２６）は、イネーブルキャプチャ信号（５４２）を生成するようにフリップフロップ（５３２）をトリガする。イネーブルキャプチャ信号（５４２）は、キャプチャフェーズの前に１つまたは複数のウェイトサイクルに対応する１つまたは複数のカウント状態を生成するように、第２のウェイトカウンタ（５２２）をトリガする。
【００６８】
第２のウェイトカウンタ（５２２）の１つまたは複数のウェイトサイクル（例えば、（５１７）参照）が完了すると、第２のカウンタ（５１８）がトリガされる。トリガされる際またはそれに続いて、第２のカウンタ（５１８）はキャプチャフェーズに対応する１つまたは複数のカウント状態を生成する。また、第２のカウンタ（５１８）の１つまたは複数のカウント状態（例えば、（５２３）参照）は、第４の選択ブロック（５２７）のトリガを導き、これによりフリップフロップ（５３４）がトリガされて、イネーブル同期キャプチャ信号（５４４）が生成される。デアサートされたテストモード制御信号が、テストモード制御信号生成論理を介してイネーブル同期キャプチャ信号（５４４）に基づき生成される。第２のカウンタ（５１８）のキャプチャ終了カウント状態（例えば、（５２３）参照）が、選択ブロック（５２７）を非活性化し、選択ブロック（５２７）は、フリップフロップ（５３４）を非活性化し、かつ、第１のウェイトカウンタ（５２０）をトリガして、後続のシフトフェーズの前に１つまたは複数のウェイトサイクルを生成する。キャプチャ終了カウント状態は、パターンカウンタ５２９をトリガし、パターンカウンタ５２９により、集積回路（５００）は予め決められた数の遷移の間、周期的に動作できる。
【００６９】
図５Ｂは、一実施形態に従った図５Ａの集積回路（５００）の動作を図示するプロセスフローの例示的な図である。図５Ｂにおいて、集積回路（５００）のスキャンテストの複数の状態をブロック（５５０）〜（５６２）に示す。動作の複数の状態は、これらに限定されないが、初期化状態（５５０）、アイドル状態（５５２）、シフト動作の準備（５５４）、シフト動作（５５６）、キャプチャ動作の準備（５８８）、キャプチャ動作（５６０）、およびテストパターンカウント動作（５６２）を含む。一実施形態では、初期化状態（５５０）の間、集積回路（５００）の動作は、テスタ（例えば、図１Ａの（１０２））からクロック信号（５１０）を受け取ることによって初期化される。アイドル状態（５５２）の間、第１のシフトフェーズを検出する前に１つまたは複数のウェイトサイクルがある。テストパターン検出ブロック（５０２）が、テストパターンの第１のシフトフェーズに対応するパターンを検出する際またはそれに続いて、集積回路（５００）はシフトに備える（例えば、（５５４）参照）。
【００７０】
シフト動作（５５４）の準備の間、第１のウェイトカウンタ（５２０）は、１つまたは複数のウェイトサイクルを生成するようにトリガされる。１つまたは複数のウェイトサイクルが完了する際またはそれに続いて、シフト動作が開始する（例えば、（５５６）参照）。シフト動作（５５６）の間、第１のカウンタ（５１６）は、第１のシフトフェーズに対応する１つまたは複数のカウント状態を生成するように（例えば、各クロックサイクルでシフト開始カウント状態からシフト終了カウント状態までのカウント状態をデクリメントするように）トリガされ、また、アサートされたテストモード制御信号が図５Ａにおいて説明するように生成される。テストモード制御信号は、第１のカウンタ（５１６）を介して生成された１つまたは複数のカウント状態の期間のためにアサートされたままである。第１のカウンタ（５１６）のカウント状態がシフト終了カウント状態に到達する際またはそれに続いて、シフト動作は終了する（（５６８）に示す）。（５５８）では、キャプチャフェーズに備えるようにキャプチャ動作の準備が実行される。キャプチャ動作の準備（５５８）は、第２のウェイトカウンタ（５２２）を介する１つまたは複数のウェイトサイクルの生成も必要とする。
【００７１】
１つまたは複数のウェイトサイクルが完了する際またはそれに続いて、キャプチャ動作が始まる（例えば、（５７０）参照）。（５６０）では、キャプチャ動作は、図５Ａを参照して本明細書で前述したように、第２のカウンタ（５１８）をトリガすることによって実行される。また、キャプチャ動作の間（例えば、（５６０）参照）、デアサートされたテストモード制御信号が生成される。キャプチャ終了カウント状態を生成する際またはそれに続いて、キャプチャ動作（５６０）は終了する（例えば、（５７４）参照）。第２のカウンタ（５１８）のカウント状態がキャプチャ終了カウント状態に到達する際またはそれに続いて、パターンカウンタ５２９のカウント状態が、１つのカウント状態だけ変化させる（例えば、（５６２）参照）。パターンカウンタ５２９が、予め決められた数の遷移に対応する最小のカウント状態（例えば、ゼロカウント）を保持していない場合、動作（５５４）、（５５６）、（５５８）、および（５６０）は予め決められた数の遷移のために実行される。予め決められた数の遷移（例えば、５７４参照）が完了する際またはそれに続いて、プロセスは再び（５５０）で初期化される。
【００７２】
図６は、別の実施形態に従った図５Ａの集積回路（５００）の動作を図示するプロセスフローの例示的な図である。図６において、集積回路（５００）のスキャンテストの複数の状態をブロック（６５０）〜（６５６）に示す。動作の複数の状態は、これらに限定されないが、初期化状態（６５０）、アイドル状態（６５２）、テストパターンカウント動作（６５４）、および繰り返しのシフト・キャプチャ動作（６５６）を含む。一実施形態において、初期化状態（６５０）の間、集積回路（５００）のスキャンテストはテスタ（例えば、図１Ａの（１０２））からクロック信号（５１０）を受け取ることによって初期化される。アイドル状態（６５２）の間、第１のシフトフェーズを検出する前に、１つまたは複数のウェイトサイクルがある。
【００７３】
テストパターン検出ブロック（５０２）がテストパターンの第１のシフトフェーズに対応するパターンを検出する際またはそれに続いて（例えば、（６５８）参照）、パターンカウンタは１つのカウント状態だけカウント状態を変化させ（例えば、（６５４）参照）、１つのテストパターン（例えば、１つのシフトフェーズおよび１つのキャプチャフェーズを含むテストパターン）の適用を示す。１つのカウント状態だけパターンカウンタのカウント状態を変化させる際またはそれに続いて、シフト動作およびキャプチャ動作は、図５を参照して本明細書で説明したように実行される（例えば、（６５６）参照）。テストパターンの第１のシフトフェーズおよび後続のシフトフェーズのうちの１つに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの遷移（（６５６）に示す）は、予め決められた数の遷移（例えば、予め決められた数のテストパターン）のために、このような各遷移の終了時にパターンカウンタのカウント状態を１つのカウント状態だけ変化させることによって、反復的に実行される。
【００７４】
スキャンテストはＳＴＵＭＰＳアークテクチャ（Ｓｅｌｆ‐Ｔｅｓｔ  Ｕｓｉｎｇ  ＭＩＳＲおよびＰＲＰＧ構造であり、ここでＭＩＳＲは多入力シグネチャレジスタであり、ＰＲＰＧは疑似ランダムパターン生成器である）の動作を含むことができる。一実施形態において、スキャンテスト中のテスト時間を削減するために、内部ＳＴＵＭＰＳの数を増加させるためにスキャン圧縮が用いられ得、他方で、ＳＴＵＭＰＳの長さを削減し、内部シフト周波数を増大させ、シフトフェーズとキャプチャフェーズの間のアイドル時間を削減させる。別の実施形態において、１つまたは複数の内部ＳＴＵＭＰＳが、組合せスキャン圧縮論理および／または順次スキャン圧縮論理によって駆動され得る。組合せスキャン圧縮論理および／または順次スキャン圧縮論理によって駆動される１つまたは複数の内部ＳＴＵＭＰＳは、任意選択のＭＩＳＲおよびＰＲＰＧ要素を含むことができる。さらに、一実施形態においては、より高い周波数でのスキャンシフト動作をサポートするように、１つまたは複数のフリップフロップをスキャン入力ピンおよびスキャン出力ピンに設置することができる。フリップフロップの同じセットが、スキャンイネーブル信号の制御下でスキャンチェーンへテストパターンを駆動するのとは別に、ロードイネーブル信号の制御下でクロックおよびスキャンチェーンの制御のために内部レジスタへ代替のパターンを駆動させるためにも用いられ得、かつ、シフトフェーズの開始を検出するために検出パターンを駆動するためにも用いられ得る。
【００７５】
スキャン入力ピンでのフリップフロップは、シフトフェーズの最後で初期化され得、フリップフロップにおけるテストパターンが、現在のテストパターンをスキャンチェーンの外に転送し、かつ後続のテストパターンをスキャンチェーンに適用する準備をする間に用いられ得る。フリップフロップにおけるテストパターンは、２つの連続したシフト動作の間に保持されなければならない。しかし、シフトフェーズの開始を示す検出パターンは、２つのテストパターンの間に発生することがある。このような場合、フリップフロップにおけるテストパターンが妨害され、その結果、テストパターンが破損する。上記の問題を軽減するために、前のスキャンテストサイクル中にフリップフロップの入力に移動したテストパターンは、保存され、後続のスキャンテストサイクル中に再び使用される。一実施形態において、検出パターンおよびテストパターンが、フリップフロップの異なるセットを通過し、予め決められた遅延が、前もって記憶されたテストパターンを保存しかつ再利用するように、パターンの検出および後続のシフトフェーズの開始の後に生じる。この結果、検出パターンの適用は、テストパターンの適用中にフリップフロップの状態を妨害しない。フリップフロップを含む例示的な集積回路を図７Ａに示す。
【００７６】
図７Ａは、一実施形態に従った、スキャンテス中にシフトフェーズを制御することのできる１つまたは複数のフリップフロップを含む例示的な集積回路（７００）を示している。集積回路（７００）は、フリップフロップの第１のセット（７０２）およびフリップフロップの第２のセット（７０４）、テストパターン検出ブロック（７０６）、ＳＴＵＭＰ（７０８）、第１の選択ブロック（７１０）、ならびに第２の選択ブロック（７１２）を含む。テストパターン検出ブロック（７０６）は、図２のテストパターン検出ブロック（２０２）と実質的に同等とすることができ、図３Ａ、図４Ａ、および図５Ａを参照して本明細書で説明したように、様々な方式で実装することができる。
【００７７】
フリップフロップの第１のセット（７０２）は、第１のクロック信号（７１４）を介して動作し、フリップフロップの第２のセットは、クロック信号（７１６）を介して動作する。第１の選択ブロック（７１０）は、検出パターン（７１８）を受け取るように構成され、第２の選択ブロック（７１２）はテストパターン（７１７）を受け取るように構成される。一実施形態において、第１の選択ブロック（７１０）および第２の選択ブロック（７１２）の各々は、イネーブル信号とイネーブル同期信号（７１９）の組合せを受け取るように構成され、かつ、イネーブル信号とイネーブル同期信号（７１９）の組合せを受け取る際にトリガされる。イネーブル信号とイネーブル同期信号（７１９）の組合せは、例えば、図２の制御回路（２０６）と実質的に同等の制御回路を介して生成され得る。第１の選択ブロック（７１０）により、シフトフェーズの開始前にテストモード制御信号が確実にハイにアサートされる。第１のクロック信号（７１４）（例えば、図１Ｂのクロック信号（１２２））は、テスタ（例えば、図１Ａの（１０２））から受け取られる。テストパターン検出ブロック（７０６）は、フリップフロップの第１のセット（７０２）を介して検出パターン（７１８）を受け取るように構成され、その結果、検出パターン（７１８）に基づいて、テストパターン（７１７）の第１のシフトフェーズの開始に対応するパターンを検出する。フリップフロップの第１のセット（７０２）は、テストパターン検出ブロック（７０６）が検出パターン（７１８）を受け取った後およびシフトフェーズに対応するパターンを検出する際に、第１の予め決められた遅延を生成する。
【００７８】
第２の選択ブロック（７１２）は、フリップフロップの第２のセット（７０４）を介して、テストパターン（７１７）がＳＴＵＭＰ（７０８）に遷移するのを制御する。フリップフロップの第２のセット（７０４）は、第２の予め決められた遅延のための先行するシフトフェーズに対応するテストパターンを記憶し、第２の予め決められた遅延が完了する際にシフトフェーズを初期化することができる。第２の選択ブロック（７１２）は、イネーブル信号およびイネーブル同期信号（７１８）を受け取る際またはそれに続いて、フリップフロップの第２のセット（７０４）を介してテストパターン（７１７）をＳＴＵＭＰ（７０８）に送信する。テストパターン（７１７）をＳＴＵＭＰ（７０８）へ送信する際の第２の予め決められた遅延により、シフト動作の開始前に、テストモード制御信号は確実にハイにアサートされる。図７Ａの集積回路（７００）の動作を、図７Ｂを参照して説明する。
【００７９】
図７Ｂは、一実施形態に従った、図７Ａの集積回路（７００）の動作を図示するプロセスフローの例示的な図である。図７Ｂにおいて、複数の動作の状態がブロック（７２０）から（７２６）に示されている。動作の複数の状態は、これらに限定されないが、選択（７２０）、シフトの準備（７２２）、シフト動作（７２４）、およびキャプチャ動作（７２６）を含む。一実施形態において、選択の間（７２０）、フリップフロップの第１のセット（７０２）またはＳＴＵＭＰ（７０６）のうちの１つが、クロック信号を受け取るために選択される。フリップフロップの第１のセット（７０２）を選択する際またはそれに続いて、シフトフェーズを示す情報を含む検出パターン（７１８）が、パイプラインフリッププロップの第１のセット（７０２）を介して生成された第１の予め決められた遅延の後に、テストパターン検出ブロック（７０６）にシフトされ、シフトフェーズに対応するパターンが、検出パターン（７１８）に基づいて検出される（例えば、（７２８）参照）。パターンを検出する際またはそれに続いて（例えば、（７２２）参照）、シフト動作の準備が始まり、第２の予め決められた遅延がパイプラインフリップフロップの第２のセット（７０４）を介してもたらされる。第２の予め決められた遅延が完了する際またはそれに続いて、ＳＴＵＭＰ（７０６）が選択され（（７２０）参照）、フリップフロップの第２のセット（７０４）がテストパターン（７１７）をＳＴＵＭＰ（７０６）に送信して、後続のシフトフェーズを初期化する（例えば、（７３０）参照）。（７２４）で、シフト動作が実行され、その後、（７２６）でのキャプチャ動作が続く。シフト動作およびキャプチャ動作は、図３Ａから図５Ｂを参照して本明細書で説明したとおりである。
【００８０】
図８は、一実施形態に従った、集積回路におけるスキャンチェーンを介したスキャンテストのためのテストモード制御信号を生成する方法（８００）のフロー図を示す。テストモード制御信号は、これらに限定されないが、テストパターンのシフトフェーズおよびキャプチャフェーズを制御するためのスキャンイネーブル信号、ならびに集積回路内のスキャンチェーン（例えば、図１Ａのスキャンチェーン（１０８））へのクロックを制御するため、および、スキャンチェーンの選択的動作のためにスキャンチェーンの入力および出力を制御するためのロードイネーブル信号を含み得る。方法（８００）は動作（８０２）で始まる。動作（８０２）で、検出パターンに基づき、テストパターンのシフトフェーズに対応する第１のパターンの検出が、（例えば、図２のテストパターン検出ブロック（２０２）を用いて）実行され、または、テストパターンのシフトフェーズに対応する第１のパターンの検出およびテストパターンのキャプチャフェーズに対応する第２のパターンの検出が、（例えば、図２のテストパターン検出ブロック（２０２）を用いて）実行される。一実施形態において、第１のパターン（例えば、８’ｈＡＡ）および第２のパターン（例えば、８’ｈ５５）は、検出パターンにおいて検出される。検出パターンは、テストパターンのシフトフェーズの開始および／またはテストパターンのキャプチャフェーズの開始を示す情報を含む。テストパターンは、テストベクタと、スキャンテスト中に各シフトフェーズおよび各キャプチャフェーズに対応するクロック信号のクロックサイクル数を示す情報とを含む。一実施形態においては、動作（８０４）で、シフトフェーズに対応する１つまたは複数のカウント状態もしくはキャプチャフェーズに対応する１つまたは複数のカウント状態が、第１のパターンおよび第２のパターンのうちの少なくとも１つを検出する際またはそれに続いて、カウンタ回路（例えば、図３Ａのカウンタ回路（３０４）、図４Ａのカウンタ回路（４０４）、図５Ａのカウンタ回路（５０４））を介して、（例えば、図３Ａ、図４Ａおよび図５Ａを参照して本明細書で説明した、１つまたは複数のカウンタを用いて）生成される。
【００８１】
シフトフェーズに対応する１つまたは複数のカウントは、第１のパターンを検出する際またはそれに続いて生成され、キャプチャフェーズに対応する１つまたは複数のカウント状態は、第２のパターンを検出する際またはそれに続いて生成される。シフトフェーズに対応する１つまたは複数のカウント状態は、シフト開始カウント状態とシフト終了カウント状態の間のカウント状態を含む。シフト開始カウント状態とシフト終了カウント状態の間の期間は、シフトフェーズに対応するクロック信号のクロックサイクル数と関連付けられている。キャプチャフェーズに対応する１つまたは複数のカウント状態は、キャプチャ開始カウント状態とキャプチャ終了カウント状態の間のカウント状態を含む。キャプチャ開始カウント状態とキャプチャ終了カウント状態の間の期間は、キャプチャフェーズに対応するクロック信号のクロックサイクル数と関連付けられている。一実施形態において、動作（８０６）では、テストモード制御信号は、シフトフェーズに対応する１つまたは複数のカウント状態およびキャプチャフェーズに対応する１つまたは複数のカウント状態に基づいて、生成され、その後制御される。テストモード制御信号の生成および制御は、図３Ａ〜図７Ｂを参照して本明細書で説明してある。
【００８２】
一実施形態において、シフトフェーズに対応するパターンを検出する際、第１のカウンタのカウント状態がシフト開始カウント状態として生成される。テストモード制御信号は、第１のカウンタのカウント状態が第１の予め決められたカウント状態である場合にアサートされる。第１のカウンタのカウント状態は、スキャンテストのシフトフェーズ中に、シフト開始カウント状態からシフト終了カウント状態に変化する。テストモード制御信号は、第１のカウンタのカウント状態がシフト終了カウント状態に変化する場合にデアサートされる。カウンタ回路のウェイトカウンタの１つまたは複数のカウント状態が、第１のカウンタのカウント状態がシフト終了カウント状態である場合に、１つまたは複数のウェイトサイクルに対応して生成される。カウンタ回路の第２のカウンタのカウント状態が、この１つまたは複数のウェイトサイクルが終了した後に、キャプチャ開始カウント状態として生成される。第２のカウンタのカウント状態は、キャプチャフェーズ中にキャプチャ開始カウント状態からキャプチャ終了カウント状態へ変化し、この実施形態は図４Ａ〜図４Ｂを参照して本明細書に示してある。
【００８３】
一実施形態において、テストパターンのシフトフェーズに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの間の予め決められた数の遷移に対応する１つまたは複数のカウント状態に対し、第１のシフトフェーズに対応するパターンを検出することと、１つのカウント状態だけパターンカウンタのカウント状態を変化させることのうちの１つの際に、第１のウェイトサイクルに対応する第１のウェイトカウンタの１つまたは複数のカウント状態が生成される。カウンタ回路の第１のカウンタのカウント状態が、第１のウェイトサイクルが終了した後に、シフト開始カウント状態として生成される。テストモード制御信号は、第１のカウンタのカウント状態がシフト開始カウント状態である場合にアサートされる。第１のカウンタのカウント状態は、シフト開始カウント状態からシフト終了カウント状態に変化する。テストモード制御信号は、第１のカウンタのカウント状態がシフト終了カウント状態に変化する場合にデアサートされる。第２のウェイトサイクルに対応する第２のウェイトカウンタの１つまたは複数のカウント状態は、第１のカウンタのカウント状態がシフト終了カウント状態である場合に生成される。カウンタ回路の第２のカウンタのカウント状態が、第２のウェイトサイクルが終了した後に、キャプチャ開始カウント状態として生成される。第２のカウンタのカウント状態は、スキャンテストのキャプチャフェーズ中に、キャプチャ開始カウント状態からキャプチャ終了カウント状態に変化する。テストパターンのシフトフェーズに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの間の予め決められた数の遷移に対応するカウンタ回路のパターンカウンタの１つまたは複数のカウント状態は、１つのカウント状態だけ変化し、この実施形態は、図５Ａ〜図５Ｂを参照して本明細書で示してある。
【００８４】
さらに、一実施形態において、テストパターンの第１のシフトフェーズおよび後続のシフトフェーズのうちの１つに対応するシフト開始カウント状態からテストパターンのキャプチャフェーズに対応するキャプチャ終了カウント状態までの予め決められた数の遷移に対応する１つまたは複数のカウント状態のために、カウンタ回路のパターンカウンタの１つまたは複数のカウント状態が、第１のシフトフェーズの検出、および前のキャプチャフェーズの終了のうちの１つの際に、１つのカウント状態だけ変化する。カウンタ回路の第１のカウンタのカウント状態が、パターンカウンタの１つまたは複数のカウント状態を１つのカウント状態だけ変化させる際に、シフト開始カウント状態として生成される。テストモード制御信号は、第１のカウンタのカウント状態がシフト開始カウント状態である場合にアサートされる。第１のカウンタのカウント状態は、スキャンテストのシフトフェーズ中に、シフト開始カウント状態からシフト終了カウント状態へ変化する。テストモード制御信号は、第１のカウンタのカウント状態がシフト終了カウント状態に変化する場合にデアサートされる。カウンタ回路の第２のカウンタのカウント状態が、スキャンテストのキャプチャフェーズ中に、キャプチャ開始カウント状態からキャプチャ終了カウント状態に変化し、この実施形態は、図６を参照して本明細書で説明してある。
【００８５】
本明細書で開示した１つまたは複数の例示的な実施例の利点は、スキャンパターンを適用する間に内部スキャンイネーブルの生成および制御のために、集積回路内に追加の回路を使用することを含む。この開示する技術は、ピンを解放することによってより高度のマルチサイトテストを可能にし、また、イベント駆動型の直接メモリアクセスのアーキテクチャに基づき、集積回路とテスタの間のデータ転送中に、１つまたは複数のテスタ制御ピンとテストデータを同期させるためのデッドサイクルの必要がなくなる。イベント駆動型直接メモリアクセスをベースにしたテスタアーキテクチャにだけでなく、直接メモリアクセスアーキテクチャを用いて更新されるメモリを使用するデータ転送に基づき機能する全てのテスタにとって、開示した技術には利点がある。
【００８６】
様々なデバイス、モジュール、分析器、生成器等を、ハードウェア回路（例えば、相補型金属酸化物半導体（ＣＭＯＳ）ベースの論理回路）および／またはハードウェアおよびソフトウェアの組合せ（例えば、機械可読媒体に組み込まれる）を用いてイネーブルおよび動作することができる。例えば、様々な電気的構造を、トランジスタ、論理ゲートおよび電気回路（例えば、ＡＳＩＣ回路および／またはデジタル信号プロセッサ（ＤＳＰ）回路）を用いて組み込むことができる。また、個々のまたは別々なものとして様々な実施形態で説明および例示した回路は、他のシステムやモジュールと結合する、または組合せることができる。
【００８７】
請求される発明の範囲内において、説明した例示的な実施形態に対する改変が可能であること、および多くのその他の実施形態が可能であることを、当業者は理解するであろう。
【図１Ａ】
0006544772.tif 000002
【図１Ｂ】
0006544772.tif 000003
【図２】
0006544772.tif 000004
【図３Ａ】
0006544772.tif 000005
【図３Ｂ】
0006544772.tif 000006
【図４Ａ】
0006544772.tif 000007
【図４Ｂ】
0006544772.tif 000008
【図５Ａ】
0006544772.tif 000009
【図５Ｂ】
0006544772.tif 000010
【図６】
0006544772.tif 000011
【図７Ａ】
0006544772.tif 000012
【図７Ｂ】
0006544772.tif 000013
【図８】
0006544772.tif 000014