(57)【特許請求の範囲】
【請求項１】
集積回路（４００）であって、
行及び列に配列され且つユーザ設計回路を形成するように結合可能である、予め設計された論理ブロック（４２０）のアレイ（４１０）を備え、
各論理ブロック（４２０）は、データ入力（ＤＳ、ＤＡ、ＳＣ、ＳＸ、Ｓ２、ＭＣ、ＥＮ、ＡＳ）と、データ出力（Ｑ）と、試験データ入力（ＴＤ）と、ビット記憶ユニット（６７０、６８８）とを有し、
各論理ブロック（４２０）は、上記ユーザ設計回路の動作部分としてユーザ設計機能を遂行する通常動作モードと、試験動作モードとの一方で動作するように選択可能であり、それにより、上記通常動作モードにおいて、データ入力（ＤＳ、ＤＡ、ＳＣ、ＳＸ、Ｓ２、ＭＣ、ＥＮ、ＡＳ）で受け取ったデータが処理されて、データ出力（Ｑ）において或る結果が発生され、上記試験動作モードにおいて、ビット記憶ユニット（６７０、６８８）が、試験データ入力（ＴＤ）で受け取った試験データ値を記憶して、データ出力（Ｑ）がその記憶した試験データ値を出力し、
複数の行モード選択ライン及び複数の列モード選択ラインを更に備え、それぞれの行内の各論理ブロック（４２０）は上記それぞれの行に組合わされた行モード選択ラインに結合され、それぞれの列内の各論理ブロック（４２０）は上記それぞれの列に組合わされた列モード選択ラインに結合され、それにより、行モード選択ライン及び列モード選択ラインの交点に配置された論理ブロックが特定されるようになっており、
各論理ブロック（４２０）は、上記アレイ（４１０）内の他の論理ブロック（４２０）が上記試験動作モードで動作している間、それと同時に上記特定された論理ブロックへ向かって上記行モード選択ライン及び上記列モード選択ライン上を運ばれている信号が通常動作モードを指定する場合に上記通常動作モードで動作するように選択され、
上記試験動作モードにおいて、上記論理ブロック（４２０）は、その論理ブロック（４２０）の最初の論理ブロック（４２０）のデータ出力から第２の論理ブロック（４２０）の試験データ入力（ＴＤ）へデータを送ることができるように、デイジーチェーン化されており、更に、上記論理ブロック（４２０）は、試験クロック信号に応答して上記試験データ入力（ＴＤ）から上記ビット記憶ユニット（６７０、６８８）へデータをシフトインし且つ上記ビット記憶ユニット（６７０、６８８）からデータをシフトアウトするように配置されていることを特徴とする集積回路（４００）。
【請求項２】
上記複数の論理ブロック（４２０）の少なくとも若干における上記ユーザ設計機能は、非逐次機能であることを特徴とする請求項１に記載の集積回路（４００）。
【請求項３】
上記複数の論理ブロック（４２０）の少なくとも若干における上記ユーザ設計機能は、逐次機能であり、上記複数の論理ブロック（４２０）の他のものにおける上記ユーザ設計機能は、非逐次機能であることを特徴とする請求項１又は２に記載の集積回路（４００）。
【請求項４】
上記非逐次機能は、組合せ機能であることを特徴とする請求項２又は３に記載の集積回路（４００）。
【請求項５】
上記複数の論理ブロック（４２０）が上記試験動作モードで動作するように選択されている場合には、各論理ブロック（４２０）は１つのフリップフロップとして挙動することを特徴とする請求項１〜４のいずれか１つに記載の集積回路（４００）。
【請求項６】
上記複数の論理ブロック（４２０）が上記試験動作モードで動作するように選択されている場合には、上記複数の論理ブロック（４２０）が複数のフリップフロップとして挙動し、上記複数のフリップフロップは少なくとも１つのデイジーチェーンを形成するように結合されていることを特徴とする請求項５に記載の集積回路（４００）。
【請求項７】
試験値を上記デイジーチェーンを介して上記アレイ（４１０）内にシフトインし、及び上記アレイからシフトアウトすることができることを特徴とする請求項６に記載の集積回路（４００）。
【請求項８】
上記複数のフリップフロップは、複数のデイジーチェーンを形成するように結合されていることを特徴とする請求項６又は７に記載の集積回路（４００）。
【請求項９】
上記各フリップフロップに結合される試験クロックを備えていることを特徴とする請求項５〜８のいずれか１つに記載の集積回路（４００）。
【請求項１０】
上記試験クロックの制御の下に、試験値を上記デイジーチェーンを介して上記アレイ（４１０）内にシフトインさせことができることを特徴とする請求項９に記載の集積回路（４００）。
【請求項１１】
各フリップフロップはマスタラッチ及びスレーブラッチで形成されていることを特徴とする請求項５〜１０のいずれか１つに記載の集積回路（４００）。
【請求項１２】
上記試験クロックは各関連するフリップフロップ内の上記マスタラッチ及び上記スレーブラッチの各々への上記試験クロックを独立的に可能化及び不能化することができる制御ロジックに更に結合されていることを特徴とする請求項１０又は１１に記載の集積回路（４００）。
【請求項１３】
試験の目的で上記ユーザ設計回路の状態を制御するためにデータ値が上記フリップフロップ内へシフトインされ、上記ユーザ設計回路の状態を観測するためにデータが上記フリップフロップからシフトアウトされ、
上記データ値が上記フリップフロップ内へシフトインされた時には独立データ値を各フリップフロップの上記マスタラッチ及び上記スレーブラッチ内へシフトインさせることができ、上記データ値が上記フリップフロップからシフトアウトされた時には独立データ値を各フリップフロップの上記マスタラッチ及び上記スレーブラッチからシフトアウトさせることができることを特徴とする請求項１１又は１２に記載の集積回路（４００）。
【請求項１４】
上記アレイ（４１０）の論理ブロック（４２０）間に散在している他のロジックを更に備え、上記他のロジックは、上記ユーザ設計回路を形成するように上記アレイ（４１０）に結合可能であることを特徴とする請求項１〜１３のいずれか１つに記載の集積回路（４００）。
【請求項１５】
ユーザ設計回路を形成するように結合されている予め設計された論理ブロックのアレイからなる集積回路を試験する方法であって、上記論理ブロックは通常動作モード及び試験動作モードで動作するように選択可能であり、試験動作モードで動作するように選択されている場合には上記論理ブロックは複数のデイジーチェーン化されたフリップフロップとして挙動し、各フリップフロップはマスタラッチ及びスレーブラッチを有し、上記方法は、
上記論理ブロックを上記試験動作モードに配置するステップと、
上記論理ブロックが上記試験動作モードにある間に、刺激データを上記複数のデイジーチェーン化されたフリップフロップを介して上記予め設計された論理ブロックのアレイ内へシフトインさせるステップと、
少なくとも１つであるが全部ではない予め設計された論理ブロックを上記通常動作モードに選択的に配置するステップと、
上記予め設計された論理ブロックを再度上記試験動作モードに配置し、それによって、得られたデータを捕捉するステップと、
上記論理ブロックが上記試験動作モードにある間に、上記得られたデータを上記複数のデイジーチェーン化されたフリップフロップを介して上記予め設計された論理ブロックのアレイからシフトアウトさせるステップと、
を含んでいることを特徴とする方法。
【請求項１６】
上記予め設計された論理ブロックのアレイ内へ刺激データをシフトインさせるステップは、専用試験クロックの制御の下に遂行されることを特徴とする請求項１５に記載の方法。
【請求項１７】
刺激データを上記予め設計された論理ブロックのアレイ内へシフトインさせるステップは、独立データ値を各マスタラッチ及びスレーブラッチ内へシフトインさせるステップを含み、
上記得られたデータを上記予め設計された論理ブロックのアレイからシフトアウトさせるステップは、独立データ値を各マスタラッチ及びスレーブラッチからシフトアウトさせるステップを含んでいる
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
上記独立データ値を各マスタラッチ及びスレーブラッチ内へシフトインさせるステップは、各マスタラッチ及びスレーブラッチへの上記試験クロックをそれぞれ選択的に不能化させるステップを含み、
上記独立データ値を各マスタラッチ及びスレーブラッチからシフトアウトさせるステップは、各マスタラッチ及びスレーブラッチへの上記試験クロックをそれぞれ選択的に可能化させるステップを含んでいる
ことを特徴とする請求項１７に記載の方法。
【発明の詳細な説明】
【０００１】
（発明の分野）
本発明は一般的には専用集積回路（ＡＳＩＣ）に関し、詳しく述べれば、本発明は試験ゲートアレイに関する。
【０００２】
（発明の背景）
半導体産業においては、所与の回路設計エンジニアが比較的小さいパッケージ内に比較的大量の回路機能を実現できることから、ＡＳＩＣの使用が広がりつつある。詳述すれば、ＡＳＩＣは、設計エンジニアによって指定された回路（“ユーザ設計回路”）を実現するようにカストマイズされたカストマイズ可能な集積回路である。ＡＳＩＣの１つの型はゲートアレイであり、これは一般的には、機能ブロックのアレイを含み、各機能ブロックは、例えばトランジスタのような半導体デバイスの特定の数、配列、及び型を含むように予め設計及び／または予め組立てられている。設計エンジニアによって指定された特定のユーザ設計回路を実現するようにゲートアレイをカストマイズするために、機能ブロック内の半導体デバイス間にいろいろな接続がなされ、及び／または機能ブロック間にさまざまな接続がなされる（即ち、ルーティングがカストマイズされる）。
【０００３】
ユーザ設計回路を実現するようにカストマイズされたゲートアレイを含むＡＳＩＣは、ユーザ設計回路が適切に動作することを保証するために、試験しなければならない。試験は、欠陥（例えば、短絡及び／または不適切な回路設計のような回路に伴う物理的諸問題）の結果として不適切な、または予期せざる回路挙動をもたらす障害を検出することができなければならない。
【０００４】
障害は、縮退故障（ＳＡＦ）、遅延故障、及び電流故障を含む。ＳＡＦは、回路内の特定の接続が、どの信号が回路に印加されても論理低レベルに、または論理高レベルに留まる（に“こだわる”）場合に発生する。（以下、“論理低”とは“０”信号のことであり、接地信号であることが多い。“論理高”とは“１”信号のことであり、ＶDD信号であることが多い。）遅延故障は、回路が、特定の伝播時間に適合するように設計されているにも拘わらず、実際には予測したよりも遙かに遅く動作する場合に発生する。例えば、もし回路が、第１の点と第２の点との間の信号の伝播時間が５ｎｓであると確信をもって設計されていても、実際の信号の動作では第１の点から第２の点まで15ｎｓかかってしまえば、回路は適切に動作することはできない。電流故障は、不活性時には電流を流さない筈のＣＭＯＳデバイスを使用している回路において、実際には電流を流してしまう場合に発生することが多い。電流故障をもたらす欠陥は、ＳＡＦのための試験によって検出されることが屡々である。
【０００５】
集積回路の試験が良好に設計されている場合には、一般に、論理素子間の全ての接続を試験することによって、ゲートレベル（即ち、ブール論理、フリップフロップ、等を含む概念的回路設計レベル）において殆どのＳＡＦを検出することができよう。論理素子間の全ての接続を試験するためには、試験が（１）特定の接続における値を制御、またはセットすることができ、（２）特定の接続における値を観測できる必要がある。例えば、点Ａと点Ｂとの間の接続を縮退０故障に関して試験するためには、試験機は接続ライン上に論理高を配置させるべき刺激データを印加できる必要があり、そして試験機はこの刺激データの結果として値に変化を生じたか否か、及びどのように変化したかを見るために接続を観測できる必要がある。
【０００６】
離散した回路設計では、特定の回路を制御し、観測する能力は、回路の論理素子間のいろいろな接続を単にプローブすることによって行われることが多い。しかしながら、集積回路では回路の内部接続をプローブすることは一般に不可能であり、その結果他の試験方法を開発しなければならなかった。
【０００７】
ＩＣ設計者間に人気を博している集積回路試験方法の１つは、以下に図１及び１ａのブロック図に基づいて説明する“走査”試験である。図１において、回路１０２は一般に、ある数の、または配列の論理素子（例えば、ブール論理ゲート、フリップフロップ、ラッチ、等）からなり、入力Ａ及び出力Ｂを有している。入力Ａは、フリップフロップ１０４に（ライン１１４を介して）、またはロジック１０２内の他の論理素子に直接結合することができる。同様に、フリップフロップ１０４からの出力は、出力Ｂに（ライン１１２を介して）、ロジック１０２内の他の論理素子に直接結合することができ、または他のフリップフロップ１０４の入力に直接結合することができる。回路１０２内に含まれている各フリップフロップ１０４は、ＣＬＫ１またはＣＬＫ２のようなクロック信号に結合されている。図示の目的だけのために回路１０２から分離されて示されているフリップフロップ１０４ は、それぞれ、トリガ用のクロックエッジを受けるとある値を記憶し、次のトリガ用クロックエッジを受けるまでその値をその関連出力上に保持する。従って、回路１０２のフリップフロップは回路の状態を集合的に表し、任意の時点にクロックが停止するとフリップフロップは回路の状態を維持する。
【０００８】
回路の状態マシンの性質の長所を利用することによって、既知の値をフリップフロップ１０４内に配置することにより、回論１０２の状態を試験の目的のために制御することができる。同様に、回路が作動した後のフリップフロップ内に保持されている値を読取ることによって、回路の状態を観測することもできる。回路１０２のフリップフロップ１０４内に保持されている値を制御し、観測するために、フリップフロップ１０４は、ライン１１２及び１１４によって表されているそれらの正規回路接続に加えて、デイジーチェーンを形成するように結合されている。即ち、図１ａに概要を示すように、１つのフリップフロップの出力は次のフリップフロップの入力に結合されている。更に、全ての試験及びシフティングを１つのクロック信号で遂行することができるように、マルチプレクサ１１１のようなクロック舵取りロジックが挿入されることが多い。論理回路１０２を試験するために回路１０２の正規の“ミッションモード”動作は停止され、デイジーチェーンを介して一連の刺激値がフリップフロップ１０４内へシフトインされるので、論理回路１０２内の各フリップフロップは既知の値を有するようになる。刺激値は、デイジーチェーン内の最初のフリップフロップの入力１０６へ一時に１つ印加され、回路クロック１０８（各フリップフロップ１０４のクロック入力に結合されている）を走らせてデイジーチェーンを通して値を伝播させることによってシフトインされる。各フリップフロップ１０４が既知の試験値を受けた後に、回路１０２を短時間の間、例えば１クロックサイクルの間作動させ（正常に走らせ）、次いで停止させる。その走りから得られた回路の状態は、フリップフロップ１０４内に捕捉される。次いで、得られた値は、再度クロック１０８を走らせることによってフリップフロップ１０４からシフトアウトさせ、デイジーチェーン内の最後のフリップフロップの出力１１０における値を読取る。
【０００９】
詳しく述べると、走査型の試験を実現するために、典型的には２つの技術、即ちマルチプレクサ・ベース走査、またはクロック・ベース走査の一方が使用される。“マルチプレクサ・ベース走査”は、より広く使用されている技術であり、図２のブロック図を参照して以下に説明する。クロック・ベース走査に関しては図３を参照して説明する。
【００１０】
図２に示すように、論理回路１０２内の各フリップフロップ１０４n毎に（図示の目的だけのために、フリップフロップ１０４は回路１０２から離間させて示されている）、それぞれのフリップフロップ１０４nのＤ入力に２入力マルチプレクサ２１２nが配置されている。各マルチプレクサ２１２nの一方の入力、例えば０入力はロジック１０２からの正規接続を受けている（この接続は、マルチプレクサ２１２nが存在しなければ、Ｄ入力へ直接結合されるものである）。各マルチプレクサ２１２nの第２の入力、例えば１入力は、フリップフロップ１０４n+bの出力に結合されているので、これらのフリップフロップはデイジーチェーン化されている。図２に示すように、フリップフロップ１０４2のＱ出力はマルチプレクサ２１２1の１入力に結合され、フリップフロップ１０４1のＱ出力は別のマルチプレクサ２１２0（図示してない）に結合されている。マルチプレクサ２１２1の１入力は、フリップフロップ１０４3（図示してない）のＱ出力から受けている。回路クロックライン（ＣＬＫ）１０８は、マルチプレクサ２１２nが含まれていない場合と同様に、各フリップフロップ１０４nに結合されている。シフト信号２１４は、各マルチプレクサ２１２nの入力を選択するように結合されている。シフト２１４が論理低である時には、回路は、マルチプレクサが存在しないかのように通常に動作する。このような通常回路動作は、正規ミッションモード動作のために、及び試験モード中に回路を作動させるために使用することができる。シフトが論理高である時には、回路は“シフトモード”動作にされ、ＣＬＫ１０８上にクロック信号を印加することによって試験データ（刺激または結果値）がフリップフロップ１０４nにシフトインするか、またはそれらからシフトアウトする。
【００１１】
図２においては回路１０２を試験するために、先ず、シフト２１４上に論理高信号を印加することによって回路１０２をシフトモードにする。ＣＬＫ１０８上でクロック信号が制御された手法で走らされるにつれて、刺激値がフリップフロップ１０４内へシフトインされる。刺激値が定位置に配置されると、シフト２１４は論理低にされる。ＣＬＫ１０８上のクロック信号は、制限された数のクロックサイクル、例えば１クロックサイクルだけが走るように、制御された手法で走らされる。得られた値は、この試験シーケンスの最後のクロックエッジの動作によってフリップフロップ１０４n内に捕捉される（この最後のクロックエッジを以下に“補足クロック”ということがある）。次に、シフトが論理高にされて再度シフトモードに入り、ＣＬＫ１０８上に信号が印加され、捕捉されたデータはフリップフロップ１０４nからシフトアウトすることが可能になる。
【００１２】
上記試験方法はＳＡＦを検出するために有用であると説明したが、マルチプレクサ・ベース走査も遅延故障に関する試験に使用することができる。そのようにするためには、試験データを、上述したようにフリップフロップ１０４n内へシフトインさせる。次いで、２つのクロックエッジ、即ち“開始（ lunch ）クロック”及び“捕捉クロック”を、それらの間のタイミングを制御しながらＣＬＫ１０８上に印加する。“開始クロック”は、回路を、試験準備が整った状態にするクロックエッジである。遅延故障試験においては、刺激データが最終的にフリップフロップ１０４内に位置決めされた後に発生する最初のクロックエッジが開始クロックであり、一方上述したＳＡＦ試験シナリオにおいては、開始クロックは本質的にシフトモードにおいて発生する最後のクロックエッジである。“捕捉クロック”は、得られた値をフリップフロップ１０４内に捕捉させるクロックエッジであり、遅延故障及びＳＡＦの両試験において同じである。開始クロック及び捕捉クロックが印加されると、データは上述したようにフリップフロップ１０４nからシフトアウトする。もし捕捉されたデータが予測されるデータと対応しなければ、遅延故障が検出されたのである。
【００１３】
マルチプレクサ・ベース走査技術が使用される場合には、ユーザの回路設計内に既に存在しているフリップフロップが試験のために使用されるが、論理回路１０２内の各フリップフロップはデイジーチェーン化することを可能にするために、本質的にマルチプレクサ／フリップフロップ組合せに置換される。それにも拘わらず、ユーザの回路１０２内に既に存在しているフリップフロップは、回路１０２を完全に試験するには不十分であることが多く、十分な障害カバレッジを達成するために付加的なフリップフロップ／マルチプレクサ回路を設計内のさまざまな点に追加する必要がある。
【００１４】
更に、マルチプレクサ・ベース走査の直接的な結果として、試験中の諸問題を回避するために広く知られるようになり且つユーザ設計回路に使用されるようになった多くの“試験容易化設計”規則（ＤＦＴ規則）が存在する。これらのＤＦＴ規則は、以下のものを含む。
＊  回路は、好ましくは、立下がりエッジでトリガされるフリップフロップを
含むように設計すべきではない。そのようにしなければ、若干のフリップフ
ロップは回路クロックの立上がりエッジでクロックされ、若干は立下がりエ
ッジでクロックされるようになる。このような状況では、試験データがシフ
トイン中に若干のフリップフロップは適切な刺激値を受けなくなる可能性が
あり、この状況を回避するためにはデイジーチェーン内に特別な試験フリッ
プフロップを含ませる必要がある。
＊  クロックは、クロックピンだけに結合されるように、そしてフリップフロ
ップのＤ入力、または最終的にフリップフロップのＤ入力に結合されるゲー
トには結合されないように設計すべきである。そのようにしなければ、試験
モード中にセットアップ及び保持時間侵害が発生する可能性があり、回路は
応答値を信頼できるように捕捉しなくなる。
＊  フリップフロップのＱ出力は、別のフリップフロップのクロック入力に直
接的にも、間接的にも（例えば、組合せロジックまたはドライバを通して）
結合（ジョンソンカウンタのように）すべきではない。何故ならば、そのク
ロック入力は、試験中に十分に制御可能ではないからである。換言すれば、
回路全体のクロック入力は、回路を試験するために制御可能でなければなら
ない。
＊  クロックが通過する全てのゲートも試験中に制御し、試験値のシフティン
グ中に他の値によって影響されることなく、クロックを通過させることがで
きるようにしなければならない。例えば、もしクロック信号が２入力ＡＮＤ
ゲートの第１の入力に印加され、そのＡＮＤゲートの出力がフリップフロッ
プのクロック入力に印加されるのであれば、そのＡＮＤゲートへの第２の入
力は試験値シフト中に論理高に保持しなければならない。
＊  全ての非同期クリア及びリセットピンは、それらがシフトモードに干渉す
ることを防ぐことができるように、ゲートしなければならない。
他のＤＦＴ規則も広く知られている。これらのＤＦＴ規則の多くは、例えば値を制御し、観測する試験を、静的なパターン（論理高及び論理低値）だけで行うことを可能にする（即ち、クロックエッジ遷移は生成され得ない）という事実の直接的な結果である。
【００１５】
以上のように、マルチプレクサ・ベース走査は、回路に付加的な回路（例えば、マルチプレクサ及び付加的なフリップフロップ）を追加するだけではなく、マルチプレクサ・ベース走査に限界を感じて開発されることが多かったＤＦＴ規則が回路の設計にかなりな制限をもたらすが、これらは全て回路の試験を可能にするためだけにである。
【００１６】
走査技術の第２の型は、以下に図３を参照して説明する“クロック・ベース走査”である。論理回路１０２内の各フリップフロップを、マルチプレクサ・ベース走査におけるようにマルチプレクサ／フリップフロップ組合せで置換するのではなく、論理設計１０２内のフリップフロップ１０４nは、図３に示すようにデュアルインタフェースフリップフロップ３０４に置換される。フリップフロップ３０４は、２つのインタフェースを有する１つのフリップフロップからなっている（１つのインタフェースはフリップフロップ３０４の下側部分３１０内に示され、１つのインタフェースは上側部分３１２内に示されている）。回路１０２内に配置されると、下側インタフェース３１０の入力及び出力（Ｄ、Ｑ、ＣＬＫ）は、通常動作（ミッションモード）のために使用される信号を受けるように結合される。上側インタフェース３１２の入力及び出力（ＴＤ、ＴＱ）は、他のフリップフロップ３０４の上側インタフェースに結合されてデイジーチェーンを形成し、ＴＣＬＫは、ＣＬＫに結合されている正規回路クロック（“ユーザクロック”）とは区別することができる試験クロック信号を受信するように結合されている。
【００１７】
シフト３１４への信号入力は、上側インタフェースを活動させるべきか、または下側インタフェースを活動させるべきかを指示する。シフト入力３１４に結合される信号が論理低である時には、上側インタフェース３１２は不活動であることができ、一方下側インタフェース３１０は活動でなければならない。従って、シフト３１４上の信号が論理低である時には、回路１０２はミッションモードで挙動する。シフト３１４上の信号が論理高である時には、下側インタフェース３１０は不活動でなければならず、上側インタフェース３１２は活動でなければならない。刺激値は、シフトモードを制御するためにＴＣＬＫを使用しているデイジーチェーン化された上側インタフェース３１２を介して、関連ステップ３０４内へシフトインされる。刺激値が定位置に入ると、回路は制御された時間期間の間試験モードで走り（即ち、シフトは論理低を受ける）、その後シフトが再び高に表明され、捕捉された値はＴＣＬＫの制御の下にシフトアウトできるようになる。当分野に精通していれば理解されるように、クロック・ベース走査は、マルチプレクサ・ベース走査を容易に模倣することができる。また当分野においては公知のように、デバイス３０４は、フリップフロップではなく、２つのインタフェース（１つがミッションモード及び試験モード用であり、１つはシフトモード用である）を有するラッチであることができる。
【００１８】
クロック・ベース走査は、関連付けられたＤＦＴ規則がクロック・ベース走査の方がマルチプレクサ・ベース走査よりも少ないので、マルチプレクサ・ベース走査よりも有利である。試験には、分離したインタフェース及び試験クロックが使用されるので、基礎となる回路を設計する場合、殆どのクロック関連ＤＦＴ規則に従う必要はない。それにも拘わらず、クロック・ベース走査はマルチプレクサ・ベース走査よりも高価になる傾向があり、マルチプレクサ・ベース走査程屡々使用されない原因になっている。更に、たとえクロック・ベース走査であっても、試験目的のためにユーザ設計回路内に存在するフリップフロップが不十分であるような場所において、ユーザ設計回路内にフリップフロップを付加する必要がある。
【００１９】
以上のように、集積回路を試験するために走査技術が広く使用されているが、それらは多くの制限を有している。走査技術が回路の設計にかなりの数のデバイス（例えば、マルチプレクサ及び／またはフリップフロップ）を付加し、かなりの実空間を占めるだけではなく、このような付加的な回路を使用することは、正規の回路動作に使用することができる筈の回路の可用性を制限するようになる。換言すれば、ゲートアレイにおいて、試験目的で回路内にマルチプレクサ及び／またはフリップフロップを挿入することにより、さまざまな機能ブロック、またはそれらの部分が試験目的のために犠牲になり、回路の正規（非試験）部分に使用されるロジックを実現するために使用できなくなる。更に、走査技術、及び特にマルチプレクサ・ベース走査を使用する時には、回路の試験を可能にするために多くのＤＦＴ規則に従う必要があるために回路設計の柔軟性が制限されるか、またはクロック・ベース走査のためには適切なデュアルインタフェースデバイスを含ませるためにかなりの付加的な費用を必要とするようになる。
【００２０】
回路設計が実質的に完了するまで試験回路を回路内に挿入できないことが、集積回路の設計をより一層困難にさせている。より詳しく述べれば、回路のフリップフロップ及び／またはラッチが回路内の何処に位置しているか、及びそれらがどのように接続されているかという知識は、付加的な適切な試験回路を挿入する能力にとって臨界的である。典型的には、一旦回路を設計し、次いでその設計を試験目的のために変更し、回路内のフリップフロップをマルチプレクサ／フリップフロップ組合せ、またはデュアルインタフェースフリップフロップに置換する。次いで、回路を十分に試験するのに回路の部分に付加的なフリップフロップ、またはクロック舵取りロジックを挿入する必要があるか否かを決定するために、回路を更に解析しなければならない。以上のように、試験回路は、ＩＣ設計者の一部の予備知識によってのみ、完成した回路設計に付加することができる。もしＩＣ上に空間が存在すれば、試験構造を受入れるためにユーザの回路を再設計する必要はないかも知れない。
【００２１】
また走査の性質上、刺激データをそれぞれのフリップフロップ内に配置した後に、全回路を同時に作動させる必要がある。従って、試験ベクトルを設計する際には、回路内に適切な刺激値を確実に配置するように、及び得られた捕捉値に影響を及ぼし得る回路の全ての部分を考慮に入れるように、かなりの計算努力をしなければならない。更に、問題の源は直ちに明白にはならないかも知れないので、全回路を同時に作動させると故障を分離することがより一層困難になる。
【００２２】
従って、回路の予備知識を必要とせずに、ゲートアレイによって実現される回路の試験を安価（実空間及び他の資源で表して）に実現し、複雑なＤＦＴ規則を用いることなく回路を完全に試験することを可能にし、そして回路の部分を残余の回路から分離して作動させることができ、かなりな時間と計算努力とを節約するゲートアレイ設計は、当分野における前進を表すことになろう。
【００２３】
（発明の概要）
上述した欠陥及び限界を打破する、集積回路、特にゲートアレイを試験するためのシステムを開示する。一般的に言えば、本発明によるシステムは論理ブロックのアレイを含み、これらの論理ブロックはデバイスの予め設計された配列を含み、またこれらの論理ブロックは、例えばルーティングをカストマイズすることによってユーザ設計回路を形成するように結合可能である。デバイスの予め設計された配列は、論理ブロック内に、及びユーザ設計回路の何等の知識を持たずとも、後に形成されるユーザ設計回路の試験を可能にするロジックを含んでいる。試験を可能にするロジックにより、論理ブロックを凍結動作モード（従来の走査のモードとは異なるモード）で動作するように、または通常動作モードで動作するように選択することができる。通常動作モードで動作するように選択された場合には、各論理ブロックはユーザ設計回路の部分を形成し（カストマイズされた時）、逐次論理機能、組合せ論理機能、メモリ論理機能、または他の機能を遂行するように動作可能である。凍結動作モードで動作するように選択された場合には、論理ブロックは一緒になって一連のデイジーチェーン化されたマスタ・スレーブフリップフロップとして動作し、各論理ブロックは、その通常動作モードではユーザ設計回路によって指令されて遂行する基礎となる機能には関わりなく、ユーザ信号に非応答になる。
【００２４】
また従来の走査に対して優れているのは、アレイ内の論理ブロックが、アドレス可能なモード制御を各論理ブロックに設けるようにも予め設計されていて、他の論理ブロックが同時に凍結され続けて刺激データ値を送り出している間に、各論理ブロックを作動させる（通常動作モードで動作する）ように個々に選択できるようになっていることである。
【００２５】
ユーザ設計回路を試験するために、先ず、全ての論理ブロックがアドレス可能なモード制御を介して凍結であるように選択され、それによってデイジーチェーン化されたフリップフロップが形成される。シフティングが完了すると、アドレス可能なモード制御によって選択された若干の分離された及び／または隣接していない論理ブロックが作動して（即ち、通常動作モードで動作することが許容されて）それらの動作を検証する。次いで全ての論理ブロックが再度凍結され、次に捕捉されたデータがアレイからシフトアウトされる。ユーザ設計回路のこのような試験方法を、以下に区分（パーティション）試験という。更に、前述したように、このような分離した試験方法は、従来の技術では一般に達成することはできない。
【００２６】
本発明によるユーザ設計回路の動作を試験する別の方法は、“走査エミュレーション”試験である。走査エミュレーション試験を遂行するためには、先ず、全ての論理ブロックがアドレス可能なモード制御を介して凍結であるように選択され、次いでデイジーチェーン化されたフリップフロップを介して刺激値が論理ブロック内にシフトインされる。次いで全ての論理ブロックが通常動作モードで動作するように、これもまたアドレス可能なモード制御を介して選択される。次いで、全ての論理ブロックは再度凍結に選択される。次いで、凍結された論理ブロック（即ち、デイジーチェーン化されたフリップフロップ）内に捕捉されているデータがアレイからシフトアウトされる。
【００２７】
シフティング中、論理ブロックはそれぞれがフリップフロップとして挙動するのに加えて、各フリップフロップのマスタラッチ及びスレーブラッチが独立データ値をラッチすることができ、それぞれのフリップフロップ内の各ラッチを独立的に制御及び観測することを可能にしている。このようにするために、各ラッチへの試験クロックは、独立的に可能化及び不能化される。
【００２８】
本発明によって予め設計された論理ブロックを実現すると、従来の走査技術とは異なって、ユーザ（ＩＣ設計者）がユーザ設計回路内に試験構造を挿入することなく、ゲートアレイを完全に試験することが可能になる。更に、ユーザ設計回路の何等の知識を持たずとも、本発明による試験を可能にする回路を論理ブロック内に配置することが可能であり、従って、ユーザ設計回路の試験はユーザ設計回路内のフリップフロップまたは他の逐次ロジックの配置には依存しない。
【００２９】
更に、本発明による論理ブロックは２つの目的のために使用される。即ち、（１）試験中、それはアドレス可能な手法で凍結を選択して刺激データを送り出すことができるか、または（２）刺激データを送り出すことができる回路と同じ回路は、凍結に選択されていない場合に、ユーザ設計回路によってどのような機能（組合せ、逐次、または他の機能を含む）が指令されようと、それを通常動作モードで遂行する。以上のように、試験を可能にするために必要とされるのは、ユーザによるカストマイゼーションの前に、最小数のデバイスを予め設計された論理ブロック内に含ませるだけである。
【００３０】
更に、本発明により予め設計された論理ブロックは、ユーザ設計回路の設計者に対してＤＦＴ規則の形状で僅かな制限を賦課するだけである。以上のように、本発明による論理ブロックを含むアレイを使用すると、ユーザ回路設計に関してユーザに高度の柔軟性を与える。更に、論理ブロックにはアドレス可能なモード制御を設けてあるので、ユーザ設計回路の小部分を分離して試験することができる。更に、走査エミュレーション試験方法は、その技術を好む設計エンジニアが本発明による予め設計された論理ブロックと共に使用することができる。
【００３１】
本発明による試験回路のさらなる特定の詳細を以下に説明する。
【００３２】
以下に本発明を添付図面に基づいてその特定の実施の形態に関して説明する。添付図面は必ずしも縮尺通りに描かれてはいない。
【００３３】
（詳細な説明）
本発明によるＡＳＩＣ４００の概要ブロック図を図４に示す。ＡＳＩＣ４００は、機能ブロック４２０のアレイ４１０を含む。本発明の１つの実施の形態においては、各機能ブロック４２０はアレイ４１０内の他の機能ブロックと同一であるが、本発明の他の実施の形態は機能ブロック間に変化があることも考慮に入れている。若干の実施の形態は、１つ以上の領域４２１を含むことができ、この（これらの）領域はメモリブロックまたは論理コアのような回路を含んでいる。図４に示すように、周辺領域４３０がアレイ４１０を取り囲んでいる。周辺領域４３０は、アレイ４１０のためのＩＯパッド、試験支援回路、及び他の支援回路を含んでいる。
【００３４】
各機能ブロック４２０は、組合せ機能、逐次機能、及び／またはメモリ機能（例えば、ＳＲＡＭ）を遂行するように構成することができる。図５に示すように、機能ブロック４２０の１実施の形態は、３つのモジュール、即ち２つの計算モジュール４４０．１及び４４０．２、及び通信モジュール４６０からなる。各モジュールは、予め設計された配列及び半導体デバイスの結合を含む予め設計された内部アーキテクチャを有しているが、各関連モジュールへの入力信号を変化させることによって各モジュールが遂行する機能を変化させることができる。入力信号は、入力を、論理高信号、論理低信号、同一のまたは異なるモジュールの出力、またはオフチップからの信号に結合することによって変化させることができる。
【００３５】
計算モジュール４４０．１及び４４０．２は、本発明の１実施の形態では互いに同じ鏡像であり、以下に全体を参照番号４４０で呼ぶことにする。計算モジュール４４０は、“ステージ１”論理ブロック４４２及び“ステージ２”論理ブロック４４４を含む。本発明の１実施の形態では、ステージ１論理ブロック４４２は４入力マルチプレクサ（図示してない）である。ステージ２論理ブロック（ＳＴＬＢ）４４４の詳細に関しては、図６を参照して後述する。
【００３６】
通信モジュール４６０は、本発明の１実施の形態では、１つのドライバステージ４６２と、２つの同一インバータステージ４６４とを含む。各インバータステージ４６４は、少なくとも１つのインバータ（図示してない）を含む。ドライバステージ４６２の詳細に関しては、図１９を参照して後述する。
【００３７】
計算及び通信モジュール４４０．１、４４０．２、及び４６０を含む各機能ブロックの内部回路構造の１実施の形態のより詳細な説明は、本明細書が参照として採り入れている1997年３月21日付出願08/821,475“Function Block Architecture for Gate Array”に見出すことができる。
【００３８】
ＳＴＬＢ
計算モジュール４０のステージ２論理ブロック（ＳＴＬＢ）の実施の形態を図６に示す。ＳＴＬＢ４４４は、一般に、３つのマルチプレクサ６６０、６８０、及び６９６と、２つのビット記憶ユニット６７０及び６８８を含んでいる。第１のマルチプレクサ６６０の第１の入力はライン６６２上の信号ＤＳを受け、第２の入力はライン６９４を介してビット記憶ユニット６８８の出力に結合されている。ＤＳは、ＳＴＬＢ４４４内への信号入力として働く。第１の、即ち上側の通路は、スイッチ６６３が閉じている時に、ライン６９４上の入力をライン６６４上のマルチプレクサ出力に結合する。スイッチ６６３は、ライン６６８上の信号Ｆによって制御される。第２の、即ち下側の通路は、スイッチ６６１が閉じている時に、ライン６６２上のＤＳ信号をライン６６４上の出力に結合する。スイッチ６６１は、ライン６６６上の信号Ｍによって制御される。マルチプレクサ６００、及びそれに類似の他のものを、以下に“デュアル制御マルチプレクサ”という。
【００３９】
ビット記憶ユニット６７０は、入力としてライン６６４上のデュアル制御マルチプレクサ６６０からの出力を受けている。本発明の１実施の形態では、ビット記憶ユニット６７０は、図６に示すように１対の交差結合されたインバータ６７２及び６７４である。インバータ６７４は、一般に、インバータ６９０よりも弱く設計されており、マルチプレクサ６６０からのビット出力のどのような変化も、オーバドライブ用インバータ６７４によってビット記憶ユニット６７０内に配置できるようになっている。更に、インバータ６７４は、ライン６６６上の信号Ｍによって可能化されたり、不能化されたりする。従って、ビット記憶ユニット６７０は、計算モジュール４４０の若干の形態においては、簡単なインバータに見えるように構成することができる。
【００４０】
デュアル制御マルチプレクサ６８０は、第１の入力として、ライン６７６上のビット記憶ユニット６７０の出力を受けている。マルチプレクサ６８０の他方の入力は、ライン６７８上の、ＳＴＬＢ４４４への入力である信号ＤＡに結合されている。マルチプレクサ６６０と同様に、マルチプレクサ６８０は２つの信号通路を有しており、各々はそれぞれのスイッチ６８１または６８３によって制御される。ライン６８２上の信号Ｓはスイッチ６８１を制御し、ライン６８４上の信号Ｌはスイッチ６８３を制御する。
【００４１】
ビット記憶ユニット６８８は、入力としてライン６８６上のデュアル制御マルチプレクサ６８０の出力を受けている。ビット記憶ユニット６７０と同様に、１実施の形態におけるビット記憶ユニット６８８は、１対の交差結合されたインバータ６９０及び６９２からなり、インバータ６９２はインバータ６７２よりも弱く、そしてインバータ６９２はライン６８４上の信号Ｌによって選択的に可能化される。
【００４２】
マルチプレクサ６９６は、第１の入力として、ライン６９４上のビット記憶ユニット６８８の出力を受けている。マルチプレクサ６９６への第２の入力は、ビット記憶ユニット６７０の出力６７６から受けている。マルチプレクサ６９６は更に選択入力ＳＸをも有しており、マルチプレクサ６９６はライン６９７からそれを受け、この入力ＳＸはマルチプレクサの入力の１つを選択させてライン６９８上に出力させる。
【００４３】
ライン６９８はインバータ７００に結合されており、インバータ７００はバッファリングメカニズムとして働き、またライン７０２上に信号Ｑを出力する。
【００４４】
更に、ＳＴＬＢ４４４は、選択及び可能化ロジックを含んでおり、このロジックはマルチプレクサ６６０及び６８０内のいろいろなスイッチを選択し、またビット記憶ユニット６７０及び６８８内のインバータ６７４及び６９２をそれぞれ可能化する。１実施の形態における選択及び可能化ロジックは、ＮＯＲゲート７０４、ＮＡＮＤゲート７１０、ＮＡＮＤゲート７１６、及びインバータ７２２及び７２４を含んでいる。
【００４５】
ＮＯＲゲート７０４は、ライン７０６上の第１の入力ＭＣと、ライン６６８を介してＮＡＮＤゲート７１０の出力から受ける第２の入力とを有している。ＮＯＲゲート７０４は、ライン６６６上に信号Ｍを出力してスイッチ６６１を制御させ、インバータ６７４を可能化させる。
【００４６】
ＮＡＮＤゲート７１０への入力は、ライン７１２上のＥＮ及びライン７１４上のＡＳであり、これらはＳＴＬＢ４４４への入力である。ＮＡＮＤゲート７１０からの出力６６８は信号Ｆであり、これはマルチプレクサ６６０内のスイッチ６６３を制御する。
【００４７】
ＮＡＮＤゲート７１６は、入力信号として、ライン７１８上の信号ＳＣと、ライン７２０上の信号Ｓ２とを受けており、これらは共にＳＴＬＢ４４４への入力である。ＮＡＮＤゲート７１６の出力はインバータ７２４に結合され、インバータ７２４はライン６８２上にマルチプレクサ６８０内のスイッチ６８１を制御する信号Ｓを出力する。
【００４８】
インバータ７２２もライン７２０上の信号Ｓ２を受け、ライン６８４上に信号Ｌを出力する。この信号は、マルチプレクサ６８０のスイッチ６８３及びビット記憶ユニット６８８内のインバータ６９２を制御する。
【００４９】
図６には、ＳＴＬＢ４４４のための選択及び可能化ロジックが、ＮＯＲ、ＮＡＮＤ、及び反転ゲートとして示されているが、当分野に精通していれば、多くの他のゲート組合せが可能であることは理解されよう。更に、図６においては、図を明瞭にするために、選択及び可能化ロジックの完全な接続は示されていない。しかしながら、当分野に精通していれば、信号名及び／またはライン番号からこれらの接続は明白であろう。他の図面においても、明瞭化のために同じ技法を使用する。
【００５０】
図７は、図６に示した機能モデルの１つの特定の実施の形態を示している。図６に示したマルチプレクサ／スイッチ機能を実現するために、伝送ゲートが使用されている。本発明の他の実施の形態においては、伝送ゲートの代替としてパスゲートも受入れることができる。当分野に精通していれば、図７と図６とを比較すれば明白であろうから図７の詳細に関する説明は省略する。論理ゲート及びインバータで示されているが、図７及び他の図面の論理ゲートはいろいろなトランジスタ構成で実現できることも当分野に精通していれば明白であろう。更に、図７及び他の図面において、インバータ及び／または論理ゲートを追加、削除、及び／または再配列しても等価回路がもたらされることも、当分野に精通していれば理解されよう。
【００５１】
図６に示すようにＳＴＬＢ４４４は極めて柔軟であり、本明細書が参照として採り入れている前記米国出願08/821,475に詳細開示されているように、その入力へ結合される信号を変化させることによって、組合せ、逐次、またはメモリ機能として動作するように構成することができる。例えば、ＳＴＬＢ４４４は、図８に示すように出力が２入力ＮＯＲゲートの一方の入力に結合されている２入力ＡＮＤゲートのような、組合せ機能を実現することができる。このようにするためには、信号Ａを入力ＳＸで受けるように結合する。信号Ｂを入力ＥＮで受けるように結合し、信号Ｃを入力ＡＳで受けるように結合し、一方ＤＡ、ＤＳ、ＭＣ、ＳＣ、及びＳ２は全て論理低信号に結合する。ライン７０２上の出力Ｑはこの機能の出力である。
【００５２】
図６に示す回路は、逐次機能を実現するように構成することもできる。図９は、Ｄ入力７３２、クロック入力７３４、及びＱ出力７３６を含むフリップフロップ７３０を示している。図１０は、図９のフリップフロップをマスタラッチ７４０及びスレーブラッチ７５０に分割して示している。図１０では、マスタラッチ７４０のＱ出力は、ライン７４２によってスレーブラッチ７５０のＤ入力に結合されている。スレーブラッチ７５０は、Ｑ出力７３６を発生する。図９及び１０に示すフリップフロップを実現するためには、図６の回路の入力を以下の手法で構成する。フリップフロップへのデータ入力（Ｄ）は、入力ＤＳに結合する。ＳＴＬＢ４４４からの出力Ｑも、図９に示すフリップフロップのＱ出力である。クロック信号は、入力ＭＣ及びＳＣへ印加される。更に、もし可能化、クリア、及び／またはプリセットを望むのであれば、可能化信号を入力ＥＮへ印加し、クリア信号またはプリセット信号を入力ＡＳ及びＳ２へ印加する。ＤＡは、クリア信号の場合には論理低に接続し、またはプリセット信号の場合には論理高に接続する。ＳＸは、論理低に結合する。このようにすると、ＤＳにおけるデータビット入力は、ビット記憶ユニット６７０及びビット記憶ユニット６８８を直列に通過し、この実施は図１０に示すものと類似のマスタ・スレーブフリップフロップとして動作する。
【００５３】
ビット記憶ユニット６７０及び６８８を、本発明の１つの実施の形態におけるように交差結合されたインバータで実現する場合には、インバータ６７２及び６９０はそれぞれ、インバータ６９２及び６７４よりも強くすべきである。このようにすると、マルチプレクサからビット記憶ユニットへの入力データが状態を変えると（例えば、０から１へ）、その入力データがインバータ６７４及び／またはインバータ６９２をオーバドライブする。スイッチ６６１が開くと（高クロック信号で）、ビット記憶ユニット６７０の交差結合されたインバータは妨害を受けることなく、記憶した最後のビットを保持し続ける。同様にして、スイッチ６８１が開くと、ビット記憶ユニット６８８の交差結合されたインバータは妨害を受けることなく、記憶した最後のビットを保持し続ける。
【００５４】
ラッチは、フリップフロップと同じようにして実現することができるが、１つのビット記憶ユニットだけを使用すればよい。低で活動する（アクティブロー）ゲートのラッチを形成するためには、Ｓ２をラッチゲートとして働かせ、一方ＤＡラインをラッチへのＤ入力として働かせ、Ｑをラッチ出力として働かせる。ＳＣ、ＭＣ、ＤＳ、及びＳＸは全て論理低に保持し、一方ＡＳ及びＥＮは論理高に保持する。高で活動する（アクティブハイ）ゲートのラッチを形成するためには、ＳＣをラッチゲートとして働かせ、ＤＳをラッチへのＤ入力として働かせ、Ｑをラッチ出力として働かせる。Ｓ２、ＥＮ、及びＡＳは論理高に保持し、一方ＭＣ、ＳＸ、及びＤＡは各々論理低に保持する。
【００５５】
試験のために変更されたＳＴＬＢ
前述したように、集積回路の試験についての伝統的な考え方によれば、ある回路を試験する際に良好な障害カバレッジを得る能力は、普通はその回路内に走査フリップフロップを挿入して被試験回路の状態をセット及び／または記憶させることを前提としている。図２を参照して説明したように、その設計内に既に存在しているフリップフロップの前にマルチプレクサを挿入しなければならないか、または図３を参照して説明したように、これらのフリップフロップをデュアルインタフェースデバイスに変換しなければならない。もし回路内に既に存在しているフリップフロップが、回路を完全に試験するためには不十分であれば、単に試験目的だけのために、付加的な回路（例えば、マルチプレクサ及び／またはフリップフロップ）を回路に追加しなければならない。従って、ＩＣ設計者がゲートアレイ内に若干の設計を実現することを望む場合には、ゲートアレイ内のある回路（例えば、機能モジュールまたはそれらの部分）を、試験の目的のために犠牲にしなければならない。
【００５６】
図６の回路を試験するためには、伝統的な試験構造を使用する必要があろう。換言すれば、フリップフロップを実現しているアレイ４１０内の全てのＳＴＬＢ４４４のためにマルチプレクサ・ベース走査を使用するためには、出力が関連するフリップフロップに結合されているマルチプレクサを実現するように、同一の、または他の機能ブロック４２０内の他のロジックを結合しなければならない（例えば、ステージ１ロジック４４２の１実施の形態内に含まれるマルチプレクサをこの目的のために使用することができる）。クロック・ベース走査を使用すると、より一層複雑になる。試験目的のための構造を実現するためにあるロジックを使用すると、典型的にはその同じ回路を他の目的のために使用する能力が排除されてしまう。
【００５７】
それにも拘わらず、本発明による予め設計されたゲートアレイは、どの機能ブロック４５０の回路の全て、または一部も試験目的だけのために犠牲にすることを最小にし、そして前述したような従来のＤＦＴ規則に従ってユーザ設計回路を設計することを回避するような手法でそれを行う。更に、本発明による予め設計されたゲートアレイは、ゲートアレイによって最終的に実現されるユーザ設計回路内に逐次ロジックが配置されることには無関係に、ユーザ設計回路の試験を可能にする。
【００５８】
本発明によれば、必ずしも通常動作において逐次機能を遂行するように最終的に構成されるとは限らないが、図６のＳＴＬＢ４４４はビットを記憶する能力を含んでいるので、即ち、容易に逐次機能を遂行するように構成することができるから、アレイを試験できるようにする回路は各ＳＴＬＢ４４４内に配置される。ＳＴＬＢ４４４をカストマイズして（即ち、その入力へいろいろな信号を結合することによって）実現するユーザが限定した回路機能の基礎となる型（例えば、組合せ、逐次）には関係なく、試験目的のために各ＳＴＬＢ４４４を実際に使用することができる。従って、本発明によるアレイによって実現される回路の試験は、回路の予備知識も、または設計者の係り合いも必要としない。
【００５９】
図１１は、本発明の１実施の形態における試験を可能にするように変更された図６を示している。図１１に示すように、２つの付加的なデュアル制御マルチプレクサ８０２及び８０４が図６の回路に追加されている。デュアル制御マルチプレクサ６６０の出力はデュアル制御マルチプレクサ８０２の第１の入力に結合され、一方デュアル制御マルチプレクサ８０２の第２の入力はライン８０６上の試験データ（ＴＤ）を受けるように結合されている。デュアル制御マルチプレクサ８０２の出力は、ビット記憶ユニット６７０に結合されている。デュアル制御マルチプレクサ８０４の第１の入力は、デュアル制御マルチプレクサ６８０の出力に結合され、第２の入力はビット記憶ユニット６７０の出力に結合されている。デュアル制御マルチプレクサ８０４の出力は、ビット記憶ユニット６８８に結合されている。
【００６０】
更に、図１１においては、選択及び可能化ロジックは付加的にＮＯＲゲート８１４及びインバータ８１２を含んでいる。ＮＯＲゲート８１４は、一方の入力に“列カット”（ＣＣ）信号を受け、第１の入力に“行カット”（ＣＲ）信号を受けている。以下に、ＣＣ及びＣＲをそれぞれ、列モード選択信号及び行モード選択信号ということがある。ＮＯＲゲート８１４の出力は反転Ｃ信号を運び、一方インバータ８１２の出力は信号Ｃを運んでいる。信号Ｃ及び反転Ｃは、後述するように“凍結”指示信号として働く。反転Ｃは、マルチプレクサ８０２内のスイッチ８１６と、マルチプレクサ８０４内のスイッチ８２０とに結合されている。２つの付加的な信号、即ちＴＣＬＫLO及びＴＣＬＫHIが準備されている。ＴＣＬＫLOはマルチプレクサ８０２内のスイッチ８１８に結合され、ＴＣＬＫHIはマルチプレクサ８０４内のスイッチ８２２に結合されている。ビット記憶ユニット６８８からの出力であるＴＱは試験データ出力である。
【００６１】
図から明らかなように、図１１は試験回路の機能的動作を表しているに過ぎない。しかしながら、回路がトランジスタレベルで実現され、最適化されている時には、図１１に示されている全ての論理素子の実際の分離した実現は必要ないかも知れない。例えば、図１２は、図１１に示すような試験回路を有するＳＴＬＢ４４４の１つの特定実施の形態を示しており、図１２の回路は最適化されている。図７と比較すれば理解できるように、各ＳＴＬＢ４４４内に試験回路を実現するためには、図７の回路に極く僅かな変更を行う必要があるだけである。詳述すれば、図１２には３つの付加的な伝送ゲート１００２、１００４、及び１００６を付加して図１１に示す機能を得ている。選択及び可能化ロジックに対しても若干の変更がなされている。当分野に精通していれば、図１２と図１１とを比較すれば明白であろうから、図１２のさらなる詳細説明は省略する。当分野に精通していれば、論理ゲート及びインバータで示されてはいるが、図１２及び他の図面の論理ゲートは、いろいろなトランジスタ構成で実現されることも明白であろう。更に、当分野に精通していれば、図１２及び他の図面において、インバータ及び／または論理ゲートを追加、削除、及び／または再配列しても等価回路がもたらされることも理解されよう。
【００６２】
再度図１１を参照する。動作中、反転Ｃが論理高（Ｃが論理低）である場合には、マルチプレクサ８０２及び８０４内のスイッチ８１６及び８２０が選択されて回路は通常の態様で挙動し、それがユーザ設計回路によって決定されて遂行するように構成されているどのような組合せ、逐次、またはメモリ機能をも遂行する。反転Ｃが論理低信号（Ｃが論理高）である時には、ＳＴＬＢ４４４は凍結動作モードにあって回路の状態を凍結させ（もしくは、捕獲し）、ＳＴＬＢ内に記憶しているビットがユーザ設計回路入力に応答するのを阻止し、マスタ・スレーブフリップフロップとして挙動する。凍結動作モード（反転Ｃが論理低）にある時には、信号ＴＣＬＫLO及びＴＣＬＫHIを通して分配される試験クロックＴＣＬＫが試験データを、ラインＴＤ上のデータ入力からビット記憶ユニット６７０及び６８８を通してシフトさせ、ＴＱを通して出力させる。本発明の１実施の形態では、ＴＣＬＫLO及びＴＣＬＫHIは同一クロック信号から導出された互いに反転している信号であり（即ち、ＴＣＬＫLOが高である時にはＴＣＬＫHIは低であり、逆もまた真である）、アレイが凍結されている時に限り両ＴＣＬＫLO及びＴＣＬＫHIがＴＣＬＫを分配し、それ以外はスイッチ８１８及び８２２を開いたままにさせる。
【００６３】
次に図１３のデバイス９０２を参照する。ＳＴＬＢ４４４は、クロック・ベース走査に使用されるデバイス３０４（図３）とやや似た挙動をする。図３のデバイスと同様に、図１４のデバイスも２つのインタフェースの間でスイッチする。しかしながら、フリップフロップとして単に２つのインタフェース間でスイッチするのではなく、インタフェースがデバイス９０２へスイッチした時に、デバイス９０２の内部回路は、同一回路が使用されるのではあるが、再構成される。前述したように、ＳＴＬＢ４４４の機能は、その入力を変えるだけで変化させることができる。従って、「凍結」が選択されている場合、通常動作モードにおいてユーザ設計機能（例えば、組合せ、逐次、またはメモリ）を実現するＳＴＬＢ４４４内の回路（デバイス９０２の下側部分に“？”で表されている）は、マスタ・スレーブフリップフロップ（デバイス９０２の上側部分９０６内に表され、試験データイン（ＴＤ）、試験クロック（ＴＣＬＫ）（ＴＣＬＫLO及びＴＣＬＫHIを導出するクロック）、及び試験データアウト（ＴＱ）を有している）を実現するように再構成される。ラインＣ（図１１）上に論理高信号を印加することによって「凍結」を選択すると、ＳＴＬＢ４４４は正規ＳＴＬＢ入力信号（例えばＤＳ、ＤＡ）には応答しなくなり、試験クロック（ＴＣＬＫLO及びＴＣＬＫHI）及び試験データ入力信号（ＴＤ）に応答する以外は、２つの内部ビット記憶ユニットは状態を変化させない。
【００６４】
アドレス可能なモード制御
機能ブロック４２０のアレイ４１０においては、各計算モジュール４４０のＳＴＬＢ４４４は、そのＳＴＬＢ４４４のために適切な列及び行モード選択信号を選択することによって、通常動作モード、または凍結動作モードを選択することができる。換言すれば、アレイ４１０内において、ＳＴＬＢ４４４はサブアレイを形成し、各ＳＴＬＢ４４４は行及び列によってアドレス可能である。列信号（ＣＣ）及び行信号（ＣＲ）は一緒になって信号Ｃを作り、ＳＴＬＢが凍結動作モードにあるのか、通常動作モードにあるのかを決定する。もしそのモジュールの列及び行モード選択信号が共に論理低信号であればＳＴＬＢは通常動作モードで動作し、ユーザ設計回路によって遂行させるようにＳＴＬＢ４４４が構成されているどの機能（例えば、組合せ、逐次、メモリ）をも遂行する。もし列または行モード選択信号の何れかが論理高であれば、ＳＴＬＢは凍結動作モードにある。従って、列及び行の両モード選択ラインを表明させなければ、何れか１つのＳＴＬＢ４４４の挙動は、通常動作モードにおいて試験するように選択することができる。
【００６５】
例えば、図１４は、アレイ４１０のＳＴＬＢijによって形成されたサブアレイ１２１０の一部分を示しており（図１４には、ステージ１論理ブロック４４２及び通信モジュール４６０は示されていない）、ＳＴＬＢはフリップフロップとして示されている（即ち、図１３について言えば、各ＳＴＬＢ毎の上側インタフェースが示されている）。ＮＯＲゲート８１４及びインバータ８１２は、図１４では単にＯＲゲート８１４’として示されており、その一方の入力は列モード選択ライン１２１２iに結合され、第２の入力は行モード選択ライン１２１６jに結合されている。各列１モード選択ライン１２１２1及び行１モード選択ライン１２１６1上に論理低を印加し、各列０モード選択ライン１２１２0及び行０モード選択ライン１２１６0上に論理高値を印加することによって、ＳＴＬＢ４４４11だけが通常動作モードで動作するように選択される。ＳＴＬＢ４４４00、ＳＴＬＢ４４４01、及びＳＴＬＢ４４４10は凍結され、全てのＳＴＬＢが凍結されている間にシフトインされたデータを刺激データとして保持する。ＳＴＬＢ４４４11は、例えばＳＴＬＢ４４４00、ＳＴＬＢ４４４01、及びＳＴＬＢ４４４10から受けた刺激データの結果を計算し、ライン１２１２1及び１２１６1が表明されることによってそれが凍結されている時にその結果を捕捉する。以上のように、どのＳＴＬＢijも、通常動作モードにおける適切な動作について選択的にアドレスし、試験することができる。アレイ４１０によって実現されている回路の試験中に作動させるためにどのＳＴＬＢでも選択するこの能力を、本明細書では“アドレス可能なモード制御”呼んでいる。
【００６６】
試験
アレイ４１０によって実現されている回路の状態を制御するために、刺激値をアレイ４１０内の全てのＳＴＬＢに印加する。そのようにするためには、ＳＴＬＢサブアレイ１２１０の各列１２２０i内のフリップフロップを“デイジーチェーン”化する。図１４を参照する。列１  １２２０1刺激値がＳＴＬＢ４４４10内のフリップフロップ１１０１10内への第１の入力である。フリップフロップ１１０１10のＱ出力はフリップフロップ１１０１11のＤ入力に結合されている。デイジー・チェーンは列１２２０1のボトムまで続いている。同様に、列０  １２２０0内のＳＴＬＢ（例えば、ＳＴＬＢ４４４00及びＳＴＬＢ４４４01）のフリップフロップは同じようにデイジーチェーン化されている。
【００６７】
回路を既知の状態に置くために、先ず、全ての行凍結ライン１２１６j及び／または全ての列凍結ライン１２１２jに論理高値を印加することによって、全ての行及び列を凍結に選択する。刺激値をシフトレジスタ１５０２内に配置する。本発明の１実施の形態では、シフトレジスタ１５０２の各ステージ１５０４iの出力は、各列内の第１のフリップフロップ１１０１i0のＴＤ入力に結合されている。試験クロック（ＴＣＬＫ）１５３４を印加して、試験刺激値を一時に１つ、シフトレジスタステージ１５０４iからそれぞれのデイジーチェーンに印加すると、それらはデイジーチェーンを介して各列１２２０iを通って同時にシフトする。次いで、選択されたＳＴＬＢijに対応する行及び列両凍結ラインに論理低値を配置することによって選択されたＳＴＬＢ４４４ijが通常動作モードの動作ために選択される。
【００６８】
同様に、被試験回路の結果を観測するために、フリップフロップのアレイ、特に通常動作モードのために選択されたばかりのＳＴＬＢ内のそれらを、適切な行及び／または列モード選択ラインを介して凍結させ、再びＴＣＬＫ１５３４を印加することによって、得られたデータをシフトアウトさせる。本発明の１実施の形態では、得られた値はシフトレジスタ１５２２内へシフトインされ、そこから、これらの値はＩＣからシフトアウトされ、観測される。本発明の他の実施の形態は、全ての列を同時にではなく、データを一時に１列ずつシフトインまたはシフトアウトさせることができ、及び／またはシフトレジスタ１５０２、１５１２の使用を必要としないことができる。１実施の形態では、図示のようにシフトレジスタが含まれている場合に、これらのシフトレジスタは回路に対して直列及び並列の両試験データアクセスが可能である。
【００６９】
区分試験
一般的に言えば、本発明による方法に従ってある回路を試験する場合、ユーザ設計回路内で互いに接続されているＳＴＬＢ４４４は同時に試験すべきではない。前述したように、各ＳＴＬＢを通常動作モードで動作するように選択的にアドレスし、一方他のＳＴＬＢを同時に凍結動作モードのままとすることができる。更に、一時に１つのＳＴＬＢブロック４４４を試験するのは、特に単一のＩＣ上に数千のＳＴＬＢ４４４が存在している場合には、非効率的であり、時間を消費する。各ＳＴＬＢブロックを個々に試験することは、必然的に、全てのＳＴＬＢを繰り返し凍結し、試験刺激値をシフトインさせ、選択された１つのＳＴＬＢを作動させ（即ち、Ｃを表明させないことによって、選択されたＳＴＬＢを通常動作モードに配置し）、そして全ての結果値をＳＴＬＢからシフトアウトさせることを伴う。
【００７０】
上述したシナリオを回避するために、本明細書において“区分試験”と称する本発明によるゲートアレイを試験する１つの方法では、可能な限り多くの“隣接”していないＳＴＬＢ４４４を同時に試験するように回路を区分する。ＳＴＬＢ４４４は、もし１つからの出力が他の状態に影響を与えれば“隣接”であるものと考える。例えば、もし（１）１つのＳＴＬＢのＱ出力から第２のＳＴＬＢの何れかの入力（ＳＸを除く、ＳＸはビット記憶ユニット内に記憶されている値に何等の変化も生じさせないからである）まで直接的な接続ラインが存在するか、または（２）ステージ１ロジック４４２、インバータステージロジック４６４、ドライバステージロジック４６２からの組合せロジック、またはＳＴＬＢを通る組合せＳＸ−Ｑ通路が付加的に介在している（１）のような接続が存在すれば、２つのＳＴＬＢは“隣接”である。
【００７１】
例として、図２３は、実線によって示されているようにユーザ設計回路で接続されている６つのＳＴＬＢ２４４４1-6を示している。破線は、どのＳＴＬＢが“隣接”であるかを示している。ＳＴＬＢ２４４４1とＳＴＬＢ２４４４4とは、これら２つのＳＴＬＢの間には１つのインバータだけしか存在していないので隣接である。ＳＴＬＢ２４４４2とＴＬＢ２４４４4及びＳＴＬＢ２４４４5とは、これらのＳＴＬＢの間にはそれぞれドライバロジック及び組合せロジックしか存在していないので隣接である。同様に、ＳＴＬＢ２４４４3はＳＴＬＢ２４４４5と隣接であり、ＳＴＬＢ２４４４4はＳＴＬＢ２４４４6に直接接続されており従って隣接である。最後に、ＳＴＬＢ２４４４5とＳＴＬＢ２４４４6とは、それがＳＴＬＢ２４４４4のＳＸ入力を介して接続され、２つの間には１つの組合せロジックしか存在しないので隣接である。
【００７２】
第１の区分は、図２３のＳＴＬＢ２４４４1、２４４４2、２４４４3、及び２４４４6のような隣接していないＳＴＬＢ４４４の最大セットを含むように決定される。前述したように適切な刺激値をシフトインさせた後に、区分内の全てのＳＴＬＢ４４４を作動させ（通常動作モードに置き）、一方アレイ内の残余のＳＴＬＢ４４４は凍結のままとして刺激データを維持させる。第１の区分のＳＴＬＢが試験されてしまうと（作動させられ、得られた捕捉値のシフトアウトを含む）、２４４４4及び２４４４5のような次の区分が試験される。これらの分割は、当分野においては公知のグラフカラーリング技術によって決定される。
【００７３】
区分試験に関して詳述すると、図１５は、ＳＴＬＢ４４４のサブアレイ１２１０のやや大きい部分を示しており、ＳＴＬＢは列モード選択ライン１２１２i及び行モード選択ライン１２１６jの各交差点に存在している。各ＳＴＬＢのためのロジックは、明瞭化のために示されていない。図中“Ｘ”で示されているＳＴＬＢは、これらのモジュールが試験プロセス中に互いに影響し合わないので（それらがユーザの設計（図示してない）では互いに“非隣接”であるから）第１の区分部分例であり、作動させられるＳＴＬＢである。図１５に示す区分部分のＳＴＬＢ４４４を試験するために、先ず、例えば全ての行モード選択ライン１２１６j及び／または全ての列モード選択ライン１２１２iに論理高を印加してアレイ１２１０内の全てのＳＴＬＢ４４４を凍結させ、これらのＳＴＬＢをデイジーチェーン化されたフリップフロップとして機能させる。次に、ＴＣＬＫを印加することによって、図１４で説明したように列デイジーチェーンの態様で全てのＳＴＬＢ内に刺激データをシフトインさせる（以下、“シフト動作”という）。本発明の１実施の形態によれば、シフト動作はＳＴＬＢが凍結された後に限って行うことができる。
【００７４】
シフト動作が完了すると、区分マスクが印加される。区分マスクは、選択された（“Ｘ”でマークされている）ＳＴＬＢだけを通常に作動させ、他のＳＴＬＢは凍結させたままとして刺激値を送り出させる。このようにするためにモード選択値を列モード選択ライン１２１２jに印加すると、ＳＴＬＢが作動している第１の行内の列上にのみ論理低値が現れるようになる。モード選択値は、行モード選択ライン１２１６jにも印加されるので、１つの行だけが、即ち第１の行が論理低値を有するようになる。即ち、図１５の例では、行０が最初に試験される。列４の行０内のＳＴＬＢだけを作動させるために、列７：０に印加される値は１１１０１１１１であり、行７：０に印加される値は１１１１１１１０である。行０内の選択されたＳＴＬＢが作動し終わると、行１内の選択されたＳＴＬＢが同じようにして、例えば列７：０に１０１１１１１０のマスクを印加し、行７：０に１１１１１１０１のマスクを印加することによって作動させられる。一時に１つの行だけを作動させるように選択されているが、本発明のさまざまな実施の形態では２以上の列を選択することができることに注目されたい。当分野に精通していれば理解されるように、本発明の他の実施の形態は、一時に２以上の行を選択できるが、一時に１つの列だけを選択するようになっている。全ての行内の全ての選択されたＳＴＬＢが作動し終わるまで、各行のためにこのサイクルが繰り返される。全ての行内の全てのＳＴＬＢがその分割のために作動し終わると、全てのＳＴＬＢは再度凍結される。次いで、ＴＣＬＫを印加することによってシフト動作が遂行され、列デイジーチェーン態様で捕捉されたデータが観測のためにシフトアウトされる。次に新しい区分が選択され、手順（即ち、刺激データのシフトイン、選択されたＳＴＬＢの行毎の作動、及び捕捉されたデータのシフトアウト）が繰り返される。幾つかの区分が必要であろうから、各ＳＴＬＢは少なくとも１回は作動させられる。本発明の発明者らは、本発明によって設計された約40,000の機能ブロックを有するゲートアレイの場合、アレイ４１０を完全に試験するためには約１ダースの区分が必要であることを見出した。
【００７５】
走査エミュレーション試験
図１４に基づいて説明した本発明の実施の形態を使用すると、伝統的な走査試験をエミュレートするためにもＳＴＬＢのアレイを使用することができる（以下に“走査エミュレーション試験”という）。このようにするために、区分試験について上述したように、先ず刺激データが全てのＳＴＬＢ内にシフトインされる。即ち、全ての列モード選択ライン及び／または全ての行モード選択ラインに１を印加することによって全てのＳＴＬＢを凍結させ、次いでＴＣＬＫを印加してデータをシフトインさせる。次に、区分を選択するのではなく、全てのＳＴＬＢが同時に作動させられる。即ち、全ての列モード選択ライン及び全ての行モード選択ラインを０にセットする。従って、走査エミュレーション試験においては、全てのＳＴＬＢは刺激データを受入れるために（または、得られたデータをシフトアウトさせるために）凍結されるか、または全てのＳＴＬＢは通常動作モードにあるかの何れかである。
【００７６】
このようにすると、回路内に使用されている全てのフリップフロップは、将に伝統的な走査技術のように試験のために使用される。本発明によるシステムを走査エミュレーション試験のために使用する場合、それはユーザにはクロック・ベース走査にやや似て見える。しかしながら、ユーザ設計回路に従って、例えば組合せ機能のような逐次機能以外の何かを通常動作モードで実現するようにＳＴＬＢを構成する場合、通常動作モードにおいてＳＴＬＢが実現する機能には無関係に全てのＳＴＬＢは凍結されたフリップフロップとして動作するから、データをシフトイン及びシフトアウトさせる際に伝統的な走査のために予期されるビットに加えて特別ビットが発生する。一方、本発明による走査エミュレーション試験中には凍結される。図１６を参照する。デイジーチェーン化された試験フリップフロップ１６１０、１６１２、及び１６１４は、通常動作モードにおいてはフリップフロップ１６１６、ＡＮＤゲート１６１８、及びフリップフロップ１６２０として動作するＳＴＬＢ内にあることができる。伝統的な走査においては、試験機はＡＮＤゲート１６１８（組合せロジック）を含むＳＴＬＢ内に１つのビットを配置できることを予期していない。一旦認識されると、走査技術に従って評価を可能にするために、特別ビットを試験ベクトル内に挿入することができる、及び／または結果内に現れる特別ビットを無視することができる。
【００７７】
強化されたシフト動作
当分野に精通していれば理解されるように、走査技術を含む従来の技術においては、ユーザの設計内のフリップフロップを、付加的なクロック舵取り回路を追加しなければ容易に試験できないことが多い。それは、フリップフロップがエッジでトリガされるデバイスであるにも拘わらず、試験刺激データは静的パターン以外では生成することができないからである。例えば、再度図１０を参照し、マスタラッチ７４０は、クロック入力７３４が低である間にそのＤ入力７３２に到来するデータをロードする（そのデータに対して透明である）。クロック信号の立上がりエッジの後に、データは、クロック信号が高である時にロードするスレーブラッチ７５０内に捕捉される。フリップフロップはクロックエッジにのみ応答するから、付加的な試験構造を用いなければ、伝統的な技術ではフリップフロップ７３０の内部動作を容易に試験することはできない。例えば、クロック信号が静的な論理低である場合、Ｄ入力７３２上のどの値もマスタラッチ７４０へロードされるが、スレーブラッチ７５０には何もロードされない。伝統的な走査技術においてはスレーブラッチ７５０のＱ出力７３６だけが観測可能であるから、マスタラッチ７４０に対してだけの変化の効果は観測することができない。クロック信号が静的な論理高である場合、マスタラッチ７４０はロードせず、スレーブラッチ７５０だけがマスタラッチ７４０の出力をロードする。不幸にも、試験データのシフティングは、既にマスタからスレーブへロードされているから、スレーブロードは観測できる結果を有していない。従って、伝統的な技術では、回路の外側からクロックエッジ遷移を導入するために、クロック信号の十分な外部制御可能性を維持するように注意を払わない限り、各フリップフロップ内部の故障として現れる欠陥は容易に分離されない。
【００７８】
それにも拘わらず、本発明による単一のＴＣＬＫによってクロックされるシステムを使用すると、マスタ及びスレーブラッチは各々、シフト動作中に独立値を含むことができる。換言すれば、フリップフロップラッチは完全に制御することができ、クロックエッジを必要とせずに論理低及び論理高レベルだけを使用して観測することができる。更に、ＳＴＬＢが通常動作モード中にメモリ機能を遂行するように構成されている場合には、２つのラッチは独立メモリビットを記憶し、従って試験中、それらを独立的に制御し、観測することが望ましい。
【００７９】
図１７は、フリップフロップ１１０１のマスタラッチ１１０２及びスレーブラッチ１１０４を示すために、再び図示されている図１４のＳＴＬＢ４４４ijの使用を示している。マスタラッチ１１０２は一般にビット記憶ユニット６７０（図１１）で識別することができ、スレーブラッチ１１０４は一般にビット記憶ユニット６８８（図１１）で識別することができる。
【００８０】
独立値を各マスタ及びスレーブラッチ内へシフトさせるために、本発明によるシステムは、ＴＣＬＫを各マスタ及びスレーブラッチへ別々にゲートする。ＴＣＬＫLO及びＴＣＬＫHIは、ゲートされたＴＣＬＫから導出される信号である。詳細について図１８を参照して以下に説明する。
【００８１】
図１８は、本発明のシステムのより詳細なブロック図である。図１４に示すものと同様に、図１８に示されているＳＴＬＢ（４４４ij）の２×２アレイは、各フリップフロップのマスタ及びスレーブラッチを示している。フリップフロップ従ってラッチは、図１４で説明したようにデイジーチェーン化されている。各ＳＴＬＢ４４４ijは、関連する行モード選択ライン１２１６j及び列モード選択ライン１２１２iに結合されているＯＲゲート８１４’ijを有している。各関連ＯＲゲート８１４’ijの出力“Ｃ”は、それぞれのＳＴＬＢの各マスタラッチ１１０２ij及びスレーブラッチ１１０４ijの凍結入力に結合されている。
【００８２】
更に、いろいろな試験支援ロジックが示されている。このようなロジックは、本発明の１実施の形態では、ＡＳＩＣ４００（図４）の周辺領域４３０内に現れている。試験支援ロジックは、シフトレジスタ１５０２、シフトレジスタ１５１２、シフトレジスタ１５２２、及び試験コントローラ１５７０を含む。
【００８３】
シフトレジスタ１５０２は、フリップフロップ１５０４iからなる。シフトレジスタの各ステージ、即ち各フリップフロップ１５０４iは、関連する列の第１行（行０）内のそれぞれのマスタラッチ１１０２ijのデータ入力に結合されている。例えば、フリップフロップ１５０４0はマスタラッチ１１０２00のＴＤ入力に結合されている。同様に、フリップフロップ１５０４1はマスタラッチ１１０２10の試験データ入力に結合されている。
【００８４】
シフトレジスタ１５０２内の各フリップフロップ１５０４iは、ＯＲゲート１５０６iの入力にも結合されている。各ＯＲゲート１５０６iの第２の入力は、ＣＣ１に結合されている。各ＯＲゲート１５０６iの出力は、ＡＮＤゲート１５０８iの第１の入力に結合されている。各ＡＮＤゲート１５０８iの第２の入力は、ＣＣ０ラインに結合されている。各ＡＮＤゲート１５０８iの出力が、列モード選択信号（ＣＣ）１２１２iである。
【００８５】
フリップフロップ１５２４iを含むシフトレジスタ１５２２も含まれている。各フリップフロップ１５２４iは、各列の最後の行内のスレーブラッチ１１０４ijのＴＱ出力を受けるように結合されている。
【００８６】
行の試験支援ロジックも、列のための設けられているものと類似のシフトレジスタ及び組合せロジックを含んでいる。詳しく述べれば、シフトレジスタ１５１２は、マスタ・スレーブフリップフロップ１５１４jからなる。シフトレジスタの各ステージ、即ち各フリップフロップ１５１４jは、ＯＲゲート１５１６jの入力に結合されている。ＯＲゲート１５１６jの第２の入力は、ＣＲ１  １５４６に結合されている。各ＯＲゲート１５１６jの出力は、ＡＮＤゲート１５１８jの第１の入力に結合されている。各ＡＮＤゲート１５１８jの第２の入力は、ＣＲ０  １５４４に結合されている。各ＡＮＤゲート１５１８jの出力が、行モード選択信号（ＣＲ）１２１６jである。
【００８７】
クロック制御ロジックも設けられている。クロック制御ロジックは、各行毎にＡＮＤゲート１５２６j、ＡＮＤゲート１５２８j、及びインバータ１５３０jを含んでいる。各ＡＮＤゲート１５２６jの第１の入力はシフト信号ライン１５３２に結合され、第２の入力はインバータ１５３０jに結合されている。インバータ１５３０jの入力は、ＴＣＬＫ信号ライン１５３４に結合されている。各ＡＮＤゲート１５２６jの出力はＴＣＬＫLOを発生し、関連する行内の各マスタラッチ１１０２ijのＧ入力に印加する。各ＡＮＤゲート１５２８jは遅延シフト信号ライン１５３３に結合されている。各ＡＮＤゲート１５２８jの第２の入力は、ＴＣＬＫ信号ライン１５３４に直接結合されている。ＡＮＤゲート１５２８jの出力はＴＣＬＫHIを発生し、関連する行内の各スレーブラッチ１１０４ijに印加する。
【００８８】
ライン１５３３上に遅延シフト信号を得るために、シフト１５３２がラッチ１５３５のＤ入力に結合され、一方ラッチ１５３５のゲートはＴＣＬＫに結合されている。ラッチ１５３５のＱ出力が遅延シフト信号ライン１５３３に結合されている。１実施の形態においては、このラッチ１５３５は、図１８内の全ての試験信号（例えば、ＣＣ０、ＣＣ１、ＣＲ０、ＣＲ１、ＴＣＬＫ、シフト、及び遅延シフト）を制御する試験コントローラ１５７０の部分である。
【００８９】
各ＡＮＤゲート１５２６j、１５２８jは、可能化入力をも含んでいる（実際には、３入力ＡＮＤゲートの第３入力であることができる）。各ＡＮＤゲート１５２６jへの可能化入力は、各スレーブラッチ１５３８jのＱ出力（即ち、各フリップフロップ１５１４jのＱ出力）に結合されている。各ＡＮＤゲート１５２８jへの可能化入力は、各マスタラッチ１５３６jのＱ出力に結合されている。
【００９０】
クロック制御ロジックを使用することにより、信号値がマスタ・スレーブフリップフロップによって捕捉される伝統的な試験方法とは異なり、独立値を各マスタラッチ１１０２ij及びスレーブラッチ１１０４ijへシフトイン、及びそれからシフトアウトさせることができ、それによって“強化されたシフト動作”で動作させることができる。例えば、試験刺激値を各列内へシフトインさせる時に、それぞれの試験データを供給するためにシフトレジスタ１５０２が使用される。データが列を通って適切なラッチ内へシフトインしてしまうと、その行のラッチへのクロックがターンオフされる。例えば、適切なデータ値が選択されたスレーブラッチ１１０４ijに到達するまで、データ値をラッチ内へシフトインさせることができる。次いで、そのスレーブへのＴＣＬＫHIがターンオフされる。ラッチを通る次のシフト時に、独立データ値を同じＳＴＬＢのマスタラッチ内へシフトインさせることができる。次に、マスタラッチへのＴＣＬＫLOをターンオフさせることができる。ＴＣＬＫLO及びＴＣＬＫHIがターンオフされていないその列内の他のラッチは、シフトを続行する。このようにして、アレイ内の全てのＳＴＬＢの各マスタ及びスレーブラッチ内に独立値を配置することができる。
【００９１】
より詳しく述べれば、そして例として図１８においては、シフト動作中、ＴＣＬＫでもクロックされているシフトレジスタ１５１２は、先ず全てが論理高値でロードされ、アレイ内の全てのＴＣＬＫLO及びＴＣＬＫHI信号へＴＣＬＫを分配できるようにされる。スレーブラッチ１１０４01のための所望値が列０を通ってシフトし、それがスレーブラッチ１１０４01内へシフトインしてしまうと、論理低値をマスタラッチ１５３６01内へシフトインさせることによって、行１のためのＴＣＬＫHI１５４２1がターンオフされ、ＡＮＤゲート１５２８1を不能化させる。列０を通る刺激値の次のシフト時に、独立値がマスタラッチ１１０２01内へシフトインされ、スレーブラッチ１５３８01は論理低を受けてＡＮＤゲート１５２６1を不能化させ、それによって行１内のマスタラッチ１１０４i1へのＴＣＬＫLO１５４０1をターンオフさせる。論理低値はシフトレジスタ１５１２のマスタ及びスレーブラッチを通って前進的にシフトし、各マスタ及びスレーブラッチ１１０２、１１０４への全ての信号１５４０j及び１５４２jがターンオフされてしまうまで、各行のためのＴＣＬＫLO及びＴＣＬＫHI信号を１つずつ不能化して行く。
【００９２】
マスタ及びスレーブのラッチ１１０２ij、１１０４ijの両方の中のデータを独立的に観測するために、アレイからデータをシフトアウトさせるための類似メカニズムが使用されている。先ず、シフトレジスタ１５１２に論理低値がロードされ、全ての行内のＴＣＬＫLO及びＴＣＬＫHIへのＴＣＬＫの分配が阻止される。次いで、論理高値がシフトレジスタ１５１２内へ前進的にロードされる。例えば、最初の論理高値がマスタラッチ１５３６1内にロードされ、ＡＮＤゲート１５２８1を可能化し、行１内のＴＣＬＫHIをターンオフさせる。行１内のスレーブラッチ１１０４i1内に記憶されているデータはレジスタ１５２２へシフトアウトする。次いで、論理高値はスレーブラッチ１５３８1に受けられ、ＡＮＤゲート１５２６1を、従って行１内のＴＣＬＫLOを可能化する。行１内のマスタラッチラッチ１１０２i1に記憶されているデータはシフトアウトし（行１スレーブラッチを介して）、シフトレジスタ１５２２によって受けられる。各ＴＣＬＫHI及びＴＣＬＫLOが順次に可能化される。それらの全てが可能化された時点には、データの半分がアレイからシフトアウトしている。残余の半分のデータは、全てが可能化されると、即ちＴＣＬＫが各行上にゲートされるとシフトアウトする。
【００９３】
図１８において、ＣＲ０  １５４４、ＣＲ１  １５４６、ＣＣ０  １５４８、及びＣＣ１  １５５０は、アレイの動作モードを決定するモードラインである。例えば、全てのモードラインが論理低である場合には、回路は通常動作モードで（ＳＴＬＢが凍結されずに）動作する。もしＣＣ０及びＣＣ１が共に論理高であれば（及び／または、もしＣＲ０及びＣＲ１が共に論理高であれば）、アレイは凍結動作モードになり、ＴＣＬＫの表明によって、シフト動作または強化されたシフト動作を遂行し、試験刺激値をアレイ内へシフトインさせたり、またはアレイからシフトアウトさせることができる。もしＣＣ０が論理高であり、ＣＣ１が論理低であり、ＣＲ０が論理高であり、そしてＣＲ１が論理低であれば、ＳＴＬＢはアドレス可能なモード制御のために可能化され、シフトレジスタ１５０２及び１５１２内へシフトインされた値は、どのＳＴＬＢを凍結動作モードにし、どれを通常動作モードで動作させるかを制御する。
【００９４】
シフトレジスタ１５０２及び１５１２が複数の目的に役立っていることに注目されたい。シフトレジスタ１５０２は、シフト動作中には刺激値をシフトインさせるために使用されるが、一旦刺激値がＳＴＬＢ内へシフトインされると、そのシフトレジスタを他の目的、例えばアドレス可能なモード制御のために使用することができる。同様に、シフトレジスタ１５１２は、シフト動作中にはクロック制御のために使用されるが、シフト動作が完了した後は、そのシフトレジスタ１５１２もアドレス可能なモード制御のために使用することができる。
【００９５】
図５を参照して説明したように、他のロジックは、アレイ４１０から形成された何等かの回路の一部であることができる。例えば、いろいろな組合せ回路（例えば、ステージ１論理ブロックまたはインバータステージ４６４）は、何れかのＳＴＬＢ４４４の間に位置することができる。それにも拘わらず、発明者らは、本発明による回路を使用し、設計する場合に、典型的には３−４非ＳＴＬＢステージだけが互いにリンクされ、使用される全てのロジックの1/4乃至1/3は本発明による機能ブロック４２０のＳＴＬＢ内へマップされることを見出した。従って、試験回路を実現し、ゲートアレイを試験するために本発明によるシステムを使用すると、ユーザ設計を変更することなく、良好な障害カバレッジが容易に達成される。
【００９６】
当分野に精通していれば理解されるように、アレイは機能ブロック４２０によって形成されているが、アレイはＳＴＬＢによっても形成される。本明細書に使用している“サブアレイ”という用語は説明を明瞭にするためだけに使用されているものであって、本発明を限定することを意図するものではない。また、本発明の実施の形態によるアレイは、ＳＴＬＢに関して説明した原理に従って、及びステージ１ロジック、インバータステージ、またはドライバステージのような他の散在するロジックなしに、完全に論理ブロックで形成することができることも理解されたい。
【００９７】
トライステート競合予防
とは言え、もしドライバステージ４６２が含まれていれば、本発明によるシステムの実施の形態は、シフト動作中に、これらのドライバステージ４６２によって駆動される信号が互いに争うことも防ぐ。図１９は、通信モジュール４６０のドライバステージ４６２の実施の形態を示している。トライステートバッファ１６０２は、第１の入力として信号ＤＩを受け、信号Ｚを発生する。トライステートバッファ１６０２は更に、その可能化入力に信号ＥＩをも受けている。
【００９８】
図２０は、図１９に示したドライバステージ４６２の実施の形態の特定例をより詳細に示す図である。トライステートバッファ１６０２は、ｐチャネルトランジスタ７０４、ｎチャネルトランジスタ１７０６、ＮＡＮＤゲート１７０８、ＮＯＲゲート１７１０、及びインバータ１７１２及び１７１４で実現されている。信号ＥＩはインバータ１７１４へ入力される。インバータ１７１４の出力は、ＮＡＮＤゲート１７０８の一方の入力と、インバータ１７１２とに結合されている。インバータ１７１２の出力は、ＮＯＲゲート１７１０の一方の入力に結合されている。入力信号ＤＩは、ＮＡＮＤゲート１７０８の第２の入力と、ＮＯＲゲート１７１０の第２の入力とに結合されている。ＮＯＲゲート１７１０の出力は、トランジスタ１７０６のゲートに結合されている。トランジスタ１７０４のドレインはトランジスタ１７０６のドレインに結合されていて、出力Ｚを形成している。
【００９９】
図２１は、図１９に示したような２つのトライステートドライバ１６０２A及び１６０２Bを示しており、ドライバの出力はライン１８０２上で互いに結合されており、各トライステートドライバは各々、ＳＴＬＢが凍結された時には、その入力が関連するフリップフロップ１８０１jに（即ち、ＳＴＬＢから）結合される入力を有している。図面を明瞭にするために図示してないが、ＳＴＬＢが凍結された時には、フリップフロップ１８０１jはデイジーチェーン態様に結合される（通常動作モードでは、及び以上に詳細に説明したように、それぞれのＳＴＬＢは逐次機能以外の機能を遂行することができる）。トライステートドライバ１６０２Bの、ライン１８０２上に論理低値を送り出す能力を試験したいものとする。そのようにするために、フリップフロップ１８０１1-4内に示されているパターン（Ｘ１００）（但し、Ｘは“ドントケア”値である）をフリップフロップ内へシフトインさせる必要がある。値Ａ（論理高または論理低の何れか）が、その列内の次のフリップフロップであるフリップフロップ１８０１5内へシフトインされる。しかしながら、最終クロックシフトの直前のクロックシフト（上述したパターンでシフトさせる）では、フリップフロップはパターン１００Ａを保持しており、もしＡ≠１であれば、両トライステートドライバ１６０２A及び１６０２Bは可能化され、それらがライン１８０２上で争い合うことになる（これはその時点で、真の50％である）。
【０１００】
本発明の実施の形態によれば、シフト動作中の競合を予防するために、全てのトライステート出力は論理高値に保持される。図２２は、図２０の回路に追加された付加的な入力である反転ＴＨを示している。インバータ１７１２（図２０）はＮＡＮＤゲート１７１２’に置換され、一方の入力に反転ＴＨを受け、第２の入力としてい１７１４からの出力を受けている。付加的なｐチャネルトランジスタ１８０４が、トランジスタ１７０４と並列に結合されている。トランジスタ１８０４のゲートも入力の反転ＴＨに結合されている。反転ＴＨが論理高である時には、回路は図２０におけるように機能する。反転ＴＨが論理低にされると、論理高（ＶDD）信号がZ上に駆動される。シフト動作に入った時に、反転ＴＨを全てのトライステートドライバに結合し、反転ＴＨを論理低にすることによって、シフト動作中のトライステート出力上の競合は阻止される。
【０１０１】
以上に、ＡＳＩＣを試験するために使用される伝統的な技術に優る幾つかの長所を有する本発明によるシステムを説明した。第１に、各ＳＴＬＢ内の試験回路が各機能ブロック内に予め設計されており、従って、ゲートアレイによって実現されている究極的なユーザ設計回路に依存もしないし、また設計者は彼自身で試験回路を挿入する必要もない。
【０１０２】
特定の機能ブロックのロジックも、試験だけに専用である必要はなく、試験及び通常の両動作機能を遂行するために使用することができる。換言すれば、ＳＴＬＢ回路は、凍結及び通常動作モードのために再使用される。ＳＴＬＢは、ユーザ設計回路内で逐次ロジックを実現するためには必要としなくても、各ＳＴＬＢ内のデータを制御及び観測できる。即ち、試験目的のために特別フリップフロップを挿入しなくても、組合せロジックさえも試験可能である。更に、本発明による試験を実現するためには、最小の付加的なトランジスタを機能ブロック４２０に付加するだけでよい。
【０１０３】
更に、各ＳＴＬＢにはアドレス可能なモード制御が設けられており、各機能ブロック内の各ＳＴＬＢを個々に作動させることができる。それにも拘わらず、ゲートアレイによって実現された全回路を、区分試験の動的な区分けを使用して比較的迅速に試験することができる。
【０１０４】
本発明により設計されたゲートアレイは伝統的な走査技術をエミュレートすることもでき、回路設計者は伝統的な走査試験の気楽さで、ゲートアレイをその手法で試験することができる。
【０１０５】
最後に、試験クロック信号は、試験目的のために使用されるフリップフロップを形成している各マスタ及びスレーブラッチを独立的に可能化、及び不能化することができ、試験フリップフロップのマスタ及びスレーブラッチ内へデータを独立的にシフトインさせたり、それらからシフトアウトさせたりすることを可能にしている。本発明に従ってラッチ及びＴＣＬＫを使用することによって、試験用エッジトリガフリップフロップに伴う諸問題が排除されるから（全ての試験は静的なパターンで容易に実施される）、ＩＣ設計に普通に使用される殆どのＤＦＴ規則も排除される。
【０１０６】
この説明に見出しを使用したが、これらは読者を案内するのに役立たせるだけに過ぎず、本発明を限定する意図はない。
【０１０７】
以上に説明した特定の実施の形態は、単に本発明の原理を例示したに過ぎず、当業者ならば本発明の範囲及び思想から逸脱することなく、さまざまな変更をなすことができよう。従って、本発明の範囲は特許請求の範囲によってのみ限定されるものである。
【図面の簡単な説明】
【図１】  複数のフリップフロップを含む回路の一般化した機能ブロック図である。
【図１ａ】  図１の図であって、一般的に走査技術を示している。
【図２】  マルチプレクサ・ベース走査が使用される場合の図１のより詳細な表現である。
【図３】  クロック・ベース走査に使用されるデバイスの機能ブロック図である。
【図４】  本発明の１実施の形態によるＡＳＩＣの一般化したブロック図である。
【図５】  本発明の１実施の形態による機能ブロック４２０の一般化したブロック図である。
【図６】  試験を実施する回路は示されていない、本発明の１実施の形態によるステージ２論理ブロック４４４の機能ブロック図である。
【図７】  図６の回路図である。
【図８】  図６に示す回路によって実現することができる組合せロジックの機能ブロック図である。
【図９】  Ｄ型フリップフロップの機能ブロック図である。
【図１０】  マスタラッチ及びスレーブラッチを含む図９のＤ型フリップフロップのより詳細な機能ブロック図である。
【図１１】  本発明による試験を可能にする回路を更に含む図６の機能ブロック図である。
【図１２】  図１１の回路図である。
【図１３】  図１１の回路のより一般化した機能ブロック図である。
【図１４】  本発明によるアレイの機能ブロック図である。
【図１５】  区分試験に使用される時の本発明によるアレイのブロック図である。
【図１６】  走査エミュレーション試験中に、本発明によるアレイを使用する場合、伝統的な走査技術には存在しない特別なデータのビットが存在し得ることを示すブロック図である。
【図１７】  マスタ及びスレーブラッチに分割されたＳＴＬＢのブロック図である。
【図１８】  試験支援回路を含む本発明によるアレイの機能ブロック図である。
【図１９】  本発明によるトライステートドライバステージ４６２の機能ブロック図である。
【図２０】  図１９に示す回路の回路図である。
【図２１】  シフトモード中のトライステートドライバ出力上の潜在的な競合を示すブロック図である。
【図２２】  シフト中のトライステート競合を予防するために付加された付加回路を有する図２０に示す回路である。
【図２３】  “隣接”及び“非隣接”ＳＴＬＢを示すブロック図である。
【図１】
0004361681.tif 000002
【図１ａ】
0004361681.tif 000003
【図２】
0004361681.tif 000004
【図３】
0004361681.tif 000005
【図４】
0004361681.tif 000006
【図５】
0004361681.tif 000007
【図６】
0004361681.tif 000008
【図７】
0004361681.tif 000009
【図８】
0004361681.tif 000010
【図９】
0004361681.tif 000011
【図１０】
0004361681.tif 000012
【図１１】
0004361681.tif 000013
【図１２】
0004361681.tif 000014
【図１３】
0004361681.tif 000015
【図１４】
0004361681.tif 000016
【図１５】
0004361681.tif 000017
【図１６】
0004361681.tif 000018
【図１７】
0004361681.tif 000019
【図１８】
0004361681.tif 000020
【図１９】
0004361681.tif 000021
【図２０】
0004361681.tif 000022
【図２１】
0004361681.tif 000023
【図２２】
0004361681.tif 000024
【図２３】
0004361681.tif 000025