(57)【特許請求の範囲】
【請求項１】
複数の入出力ポートと、
前記複数の入出力ポートのうちの関連入出力ポートに結合された入出力機能信号線と、
関連の論理構成データに応じて特定の論理回路を提供する複数のプログラマブル資源と、
関連の経路指定構成データに応じて入出力機能信号線と複数のプログラマブル資源のプログラマブル論理ユニットとを相互接続する複数のプログラマブル相互接続部と、
それぞれの複数のプログラマブル論理ユニットおよび複数のプログラマブル相互接続部に関連する複数のメモリ・セルであって、複数のメモリ・セルのうちの指定のメモリ・セルが関連の論理構成データと経路指定構成データを保持する複数のメモリ・セルと、
メモリ要求信号を受け取る入力を有する構成論理回路であって、メモリ要求信号に応じて複数のメモリ・セルのうちのいくつかのメモリ・セルへのアクセスを可能にする構成論理回路とを有する、改良されたテスト可能フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）において、
当該ＦＰＧＡが、
入出力機能信号線を横切るバウンダリ・スキャン・チェーンとして配置された第１のＬＳＳＤスキャン・レジスタであって、入出力機能信号線および関連の入出力ポートへのシリアル・スキャン・アクセスとそれらの機能検証を可能にするために前記第１のＬＳＳＤスキャン・レジスタが関連の入出力機能信号線への選択的結合を行う第１のＬＳＳＤスキャン・レジスタと、
構成論理回路の所与のセグメントの周りのスキャン・チェーンとして配置され、構成論理回路へのシリアル・スキャン・アクセスを可能にし、その機能検証を可能にするための第２のＬＳＳＤスキャン・レジスタと、
プログラマブル相互接続部に沿って配置された相互接続スキャン・チェーンを提供する第３のＬＳＳＤスキャン・レジスタであって、プログラマブル相互接続部へのシリアル・スキャン・アクセスとそれらの機能検証を可能にするために第３のＬＳＳＤスキャン・レジスタがそれぞれのプログラマブル相互接続部への選択的結合を行う第３のＬＳＳＤスキャン・レジスタとを含むテスト回路を含むことを特徴とする、改良されたテスト可能フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）。
【請求項２】
第３のＬＳＳＤスキャン・レジスタが、複数のメモリ・セルのうちの関連メモリ・セルに保持されたラッチ構成データに応じてそれぞれのプログラマブル相互接続部に選択的に結合された１次出力を有することを特徴とする、請求項１に記載の改良されたＦＰＧＡ。
【請求項３】
テスト回路が、バウンダリ・スキャン・チェーンの制御レジスタ部分を介してプログラム可能な制御レジスタをさらに含み、前記制御レジスタがＦＰＧＡの所与の特徴を制御するための制御信号を提供することを特徴とする、請求項１に記載の改良されたＦＰＧＡ。
【請求項４】
前記バウンダリ・スキャン・チェーンが、前記制御レジスタによって提供される前記制御信号のうちの１つの制御信号に応じて選択的に可能になる低減スキャン・チェーン構成を含むことを特徴とする、請求項３に記載の改良されたＦＰＧＡ。
【請求項５】
前記低減スキャン・チェーン構成が、前記制御レジスタ部分のみから構成されることを特徴とする、請求項４に記載の改良されたＦＰＧＡ。
【請求項６】
選択入出力機能信号線が関連入出力ポートの信号をＦＰＧＡに伝播するのを選択的に禁止するために、前記制御レジスタが受信禁止制御信号を提供することを特徴とする、請求項３に記載の改良されたＦＰＧＡ。
【請求項７】
選択入出力ポートがＦＰＧＡ内から所与の信号を受け取るのを選択的に禁止するために、前記制御レジスタがドライバ禁止制御信号を提供することを特徴とする、請求項３に記載の改良されたＦＰＧＡ。
【請求項８】
前記複数の入出力ポートのうちの所与の専用入出力ポートが、非機能入出力ポートとして、テスト・イネーブル信号受信専用であり、
他の所与の入出力ポートが、テスト動作モード以外の動作モードでは、機能入出力ポートとして機能し、テスト動作モードでは、前記制御信号のうちの所与の制御信号が前記制御レジスタと関連のバウンダリ・スキャン・チェーンとを介して間接的に提供されるのではなく、前記所与の制御信号を外部テスタから直接受け取るための直接入力として代替機能するように前記テスト・イネーブル信号に応じて選択的に再構成可能であることを特徴とする、請求項３に記載の改良されたＦＰＧＡ。
【請求項９】
前記制御レジスタが、前記入出力機能信号線と関連入出力ポートとの間のインタフェース機能を制御するためにレシーバ／ドライバ制御信号を提供することを特徴とする、請求項３に記載の改良されたＦＰＧＡ。
【請求項１０】
前記複数の入出力ポートのうちの所与の専用入出力ポートが、非機能入出力ポートとして、テスト・イネーブル信号受信専用であり、
他の所与の入出力ポートが、テスト動作モード以外の動作モードでは、前記入出力機能信号線の選択信号線をインタフェースするために機能入出力ポートとして機能し、テスト動作モードでは、レシーバ／ドライバ制御信号が前記制御レジスタとバウンダリ・スキャン・チェーンの関連制御レジスタ部分とを介して間接的に提供されるのではなく、前記レシーバ／ドライバ制御信号を外部テスタから直接受け取るための直接入力として代替機能するように前記テスト・イネーブル信号に応じて選択的に再構成可能であることを特徴とする、請求項９に記載の改良されたＦＰＧＡ。
【請求項１１】
テスト・ベクトルを提供する手段と、
テスト・ベクトルをシリアルに第２のＬＳＳＤスキャン・レジスタにスキャン・インし、テスト・ベクトルを構成論理回路の関連セグメントに印加するスキャン手段と、
印加されたテスト・ベクトルの適切な処理後に構成論理回路によってもたらされる結果データを第２のＬＳＳＤスキャン・レジスタに捕捉するための適切なクロックを提供する捕捉手段とを有し、
前記スキャン手段が、捕捉したデータを第２のＬＳＳＤスキャン・レジスタからシリアルにスキャン・アウトするようにさらに動作可能であり、
構成論理回路の機能性を判定するためにスキャン・アウトした結果データを所定の結果データと比較する障害検出器をさらに有するテスタをさらに含むことを特徴とする、請求項１に記載の改良されたテスト可能ＦＰＧＡ。
【請求項１２】
複数のプログラマブル論理ユニットが、行と列のアレイに配置され、
複数のプログラマブル相互接続部が、前記アレイのそれぞれの行と列に隣接して配置された複数の行バスと複数の列バスとを含み、
複数のプログラマブル相互接続部が、複数のメモリ・セルのうちの指定のメモリ・セル内のスイッチ構成データに応じて、行バスと列バスのうちの選択バスを関連バス・セグメントに選択的に細分する複数のプログラマブル・スイッチ・ユニットをさらに含み、
第３のＬＳＳＤスキャン・レジスタの各ＬＳＳＤスキャン・レジスタが、複数のプログラマブル・スイッチ・ユニットの関連スイッチ・ユニットとともに組み込まれ、
関連の行バスおよび列バスのスイッチ・ユニットのＬＳＳＤスキャン・レジスタが、それぞれの行および列相互接続スキャン・チェーンを確立することを特徴とする、請求項１に記載の改良されたテスト可能ＦＰＧＡ。
【請求項１３】
複数のプログラマブル資源と、
複数のプログラマブル資源に関連する複数のメモリ・セルであって、複数のプログラマブル資源が関連の複数のメモリ・セルの構成データに応じて構成される複数のメモリ・セルと、
複数のメモリ・セルのうちの特定のメモリ・セルにアクセスし、複数のメモリ・セルへの構成データのロードを可能にするための構成論理回路と、
構成論理回路のＬＳＳＤテストを可能にするために構成論理回路に関連するスキャン・チェーンを提供するＬＳＳＤレジスタとを含むことを特徴とする、テスト可能フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）。
【請求項１４】
複数の入出力ポートと、
複数のＬＳＳＤレジスタからなるシリアル・ストリングと、
プログラマブル・ゲート・アレイの所与の特徴を制御するためにそこにあるデータに応じて制御信号を提供する制御レジスタとを含むプログラマブル・ゲート・アレイにおいて、
複数のＬＳＳＤレジスタからなるシリアル・ストリングの第１の部分が、制御レジスタにデータを転送するために制御レジスタに結合されたそれぞれの１次出力を有し、
複数のＬＳＳＤレジスタからなるシリアル・ストリングの第２の部分が、複数の入出力ポートのうちの機能ポートへのＬＳＳＤシリアル・スキャン・アクセスを可能にするために入出力バウンダリ・スキャン・チェーンを提供し、
複数のＬＳＳＤレジスタからなる前記シリアル・ストリングが、関連のデータ・ステアリング制御信号に応じて、その第２の部分を除いた低減構成になるように複数のＬＳＳＤレジスタからなるシリアル・ストリングを選択的に構成するためのデータ・ステアリング手段を含むことを特徴とする、プログラマブル・ゲート・アレイ。
【請求項１５】
前記データ・ステアリング制御信号が、前記制御レジスタによって提供されることを特徴とする、請求項１４に記載のプログラマブル・ゲート・アレイ。
【請求項１６】
複数のＬＳＳＤレジスタからなる前記シリアル・ストリングの前記低減構成が、単一ビット・バイパス・レジスタのみを含むことを特徴とする、請求項１５に記載のプログラマブル・ゲート・アレイ。
【請求項１７】
追加のプログラマブル・ゲート・アレイが、前記プログラマブル・ゲート・アレイの複数のＬＳＳＤレジスタからなる前記シリアル・ストリングと直列に結合された複数のＬＳＳＤレジスタからなる関連シリアル・ストリングを有することを特徴とする、請求項１６に記載のプログラマブル・ゲート・アレイ。
【請求項１８】
ＦＰＧＡをテストする方法において、
（ａ１）ＦＰＧＡの入出力バウンダリ周辺のバウンダリ・スキャン・チェーンとして第１のＬＳＳＤスキャン・レジスタを設けるステップと、
（ａ２）ＦＰＧＡの入出力バウンダリに既知の入出力テスト・ベクトルを印加するステップと、
（ａ３）入出力バウンダリのデータをラッチ・データとしてバウンダリ・スキャン・チェーンにラッチするステップと、
（ａ４）バウンダリ・スキャン・チェーンからシリアルにデータをスキャン・アウトし、入出力バウンダリのラッチ・データを取り出すステップと、
（ａ５）取り出したデータを既知の入出力テスト・ベクトルと比較するステップと、
（ａ６）取り出したデータが入出力テスト・ベクトルと一致しないときに、障害を報告するステップと、
（ｂ１）ＦＰＧＡの構成論理回路をテストするための構成スキャン・チェーンとして第２のＬＳＳＤスキャン・レジスタを設けるステップであって、構成論理回路がメモリ要求信号に応じてＦＰＧＡの構成メモリ・セルにアクセスするように動作可能であるステップと、
（ｂ２）構成テスト・ベクトルを構成スキャン・チェーンにスキャン・インするステップと、
（ｂ３）構成スキャン・チェーンの構成テスト・ベクトルを構成論理回路に印加するステップと、
（ｂ４）印加した構成テスト・ベクトルに応答して構成論理回路によってもたらされるデータを構成スキャン・チェーンにラッチするステップと、
（ｂ５）構成スキャン・チェーンからシリアルにデータをスキャン・アウトし、構成論理回路によってもたらされたデータをそこから取り出すステップと、
（ｂ６）取り出したデータを印加した構成テスト・ベクトルに応じて所定の結果データと比較するステップと、
（ｂ７）取り出したデータが印加した構成テスト・ベクトルと関連する所定の結果データと一致しないときに、障害を報告するステップと、
（ｃ１）ＦＰＧＡの選択プログラマブル相互接続部内に構成した相互接続スキャン・チェーンとして第３のＬＳＳＤスキャン・レジスタを設けるステップと、
（ｃ２）前記相互接続スキャン・チェーンのそれぞれのＬＳＳＤスキャン・レジスタ間でＦＰＧＡのプログラマブル相互接続部のうちの１組の相互接続部を構成するステップと、
（ｃ３）前記相互接続スキャン・チェーンの選択入力相互接続スキャン・チェーンにシリアルに相互接続テスト・ベクトルをスキャン・インし、第１の組の相互接続部の入力側に相互接続テスト・ベクトルを印加するステップと、
（ｃ４）第１の組の相互接続部の出力側から前記相互接続スキャン・チェーンの選択出力相互接続スキャン・チェーンにデータをラッチするステップと、
（ｃ５）選択出力スキャン・チェーンからシリアルにデータをスキャン・アウトし、第１の組の相互接続部の出力側からラッチしたデータをそこから取り出すステップと、
（ｃ６）取り出したデータを相互接続テスト・ベクトルと比較するステップと、
（ｃ７）取り出したデータが相互接続テスト・ベクトルと一致しないときに、障害を報告するステップとを含むことを特徴とする、ＦＰＧＡをテストする方法。
【請求項１９】
（ｄ１）ＦＰＧＡの所与のプログラマブル資源の構成に関連する、前記構成メモリ・セルのうちの所与のメモリ・セルに第１の既知のデータを書き込むステップと、
（ｄ２）続いて、所与のメモリ・セルからデータを取り出すステップと、
（ｄ３）取り出したデータを第１の既知のデータと比較するステップと、
（ｄ４）取り出したデータが第１の既知のデータと一致しないときに、障害を報告するステップとを含む、ＦＰＧＡの構成メモリ・セルをテストするためのステップをさらに含むことを特徴とする、請求項１８に記載の方法。
【請求項２０】
ＦＰＧＡの前記構成メモリ・セルの各メモリ・セルごとに、
（ｄ１）ＦＰＧＡの所与のプログラマブル資源の構成に関連する、前記構成メモリ・セルのうちの所与のメモリ・セルに第１の既知のデータを書き込むステップと、
（ｄ２）続いて、所与のメモリ・セルからデータを取り出すステップと、
（ｄ３）取り出したデータを第１の既知のデータと比較するステップと、
（ｄ４）取り出したデータが第１の既知のデータと一致しないときに、障害を報告するステップと、
前記（ｄ１）〜（ｄ４）の各ステップを繰り返すステップと、
をさらに含むことを特徴とする、請求項１９に記載の方法。
【請求項２１】
前記第３のＬＳＳＤスキャン・レジスタのそれぞれが、前記それぞれの第３のＬＳＳＤスキャン・レジスタとＦＰＧＡの前記プログラマブル相互接続部のうちのそれに関連する相互接続部との間で信号を選択的に伝播するために、前記構成メモリ・セルのうちの関連メモリ・セル内の関連構成データに応じてプログラム可能な選択的結合手段を含み、
前記ステップ（ｃ１）が、前記選択入力相互接続スキャン・チェーンの前記第３のＬＳＳＤスキャン・レジスタを前記第１の組の相互接続部のそれぞれの入力側に結合するように、選択プログラマブル相互接続部の前記第３のＬＳＳＤスキャン・レジスタに関連する前記構成メモリ・セルのうちのメモリ・セルに適切な構成データをロードするステップを含むことを特徴とする、請求項２０に記載の方法。
【請求項２２】
ＦＰＧＡの様々なプログラマブル相互接続部をテストするために、関連の選択入力および出力相互接続スキャン・チェーンとともに各種の関連する組の相互接続部を使用して、  （ｃ１）ＦＰＧＡの選択プログラマブル相互接続部内に構成した相互接続スキャン・チェーンとして第３のＬＳＳＤスキャン・レジスタを設けるステップと、
（ｃ２）前記相互接続スキャン・チェーンのそれぞれのＬＳＳＤスキャン・レジスタ間でＦＰＧＡのプログラマブル相互接続部のうちの１組の相互接続部を構成するステップと、
（ｃ３）前記相互接続スキャン・チェーンの選択入力相互接続スキャン・チェーンにシリアルに相互接続テスト・ベクトルをスキャン・インし、第１の組の相互接続部の入力側に相互接続テスト・ベクトルを印加するステップと、
（ｃ４）第１の組の相互接続部の出力側から前記相互接続スキャン・チェーンの選択出力相互接続スキャン・チェーンにデータをラッチするステップと、
（ｃ５）選択出力スキャン・チェーンからシリアルにデータをスキャン・アウトし、第１の組の相互接続部の出力側からラッチしたデータをそこから取り出すステップと、
（ｃ６）取り出したデータを相互接続テスト・ベクトルと比較するステップと、
（ｃ７）取り出したデータが相互接続テスト・ベクトルと一致しないときに、障害を報告するステップと、
を複数回、繰り返すステップをさらに含むことを特徴とする、請求項２１に記載の方法。
【請求項２３】
構成論理回路を完全に実行しテストするように、各種の関連構成テスト・ベクトルを使用して、
（ｂ１）ＦＰＧＡの構成論理回路をテストするための構成スキャン・チェーンとして第２のＬＳＳＤスキャン・レジスタを設けるステップであって、構成論理回路がメモリ要求信号に応じてＦＰＧＡのメモリ・セルにアクセスするように動作可能であるステップと、
（ｂ２）構成テスト・ベクトルを構成スキャン・チェーンにスキャン・インするステップと、
（ｂ３）構成スキャン・チェーンの構成テスト・ベクトルを構成論理回路に印加するステップと、
（ｂ４）印加した構成テスト・ベクトルに応答して構成論理回路によってもたらされるデータを構成スキャン・チェーンにラッチするステップと、
（ｂ５）構成スキャン・チェーンからシリアルにデータをスキャン・アウトし、構成論理回路によってもたらされたデータをそこから取り出すステップと、
（ｂ６）取り出したデータを印加した構成テスト・ベクトルに応じて所定の結果データと比較するステップと、
（ｂ７）取り出したデータが印加した構成テスト・ベクトルと関連する所定の結果データと一致しないときに、障害を報告するステップと、
を複数回、繰り返すステップをさらに含むことを特徴とする、請求項１８に記載の方法。
【請求項２４】
フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）をテストする方法において、
（ｅ１）複数の入出力ポートと、
（ｅ２）関連の論理構成データに応じて特定の論理回路を提供する複数のプログラマブル論理ユニットと、
（ｅ３）関連の経路指定構成データに応じて前記複数の入出力ポートのうちの選択機能入出力ポートと前記複数のプログラマブル論理ユニットのうちの選択プログラマブル論理ユニットとを選択的に相互接続する複数のプログラマブル相互接続部と、
（ｅ４）複数の構成メモリ・セルであって、複数の構成メモリ・セルのうちの指定のメモリ・セルが、関連の論理構成データと経路指定構成データをそれぞれ保持するために前記複数のプログラマブル論理ユニットおよび前記複数のプログラマブル相互接続部に関連付けられている複数の構成メモリ・セルと、
（ｅ５）前記複数の構成メモリ・セルにアクセスし、そこへの構成データのロードを可能にするための構成論理回路とを有するＦＰＧＡを設けるステップと、
（ｆ）関連のＬＳＳＤ構成スキャン・チェーンを使用して前記構成論理回路の機能性をテストするステップと、
（ｇ）確定的テスト・パターンを使用して前記複数の構成メモリ・セルをテストするステップとを含むことを特徴とする、ＦＰＧＡをテストする方法。
【請求項２５】
（ｈ）関連のバウンダリ・スキャン・チェーンを使用して前記複数の入出力ポートのうちの選択入出力ポートをテストするステップをさらに含むことを特徴とする、請求項２４に記載のＦＰＧＡをテストする方法。
【請求項２６】
前記選択入出力ポートが、様々な入出力構成を実現するために関連の入出力構成データに応じてプログラム可能であり、
選択入出力ポートをテストする前記ステップ（ｈ）が、
（ｈ１）前記様々な構成のうちの所与の構成に応じて選択入出力ポートを構成するための入出力構成データを前記構成メモリ・セルにロードするステップを含むことを特徴とする、請求項２５に記載のＦＰＧＡをテストする方法。
【請求項２７】
前記ステップ（ｈ１）が、データを受け取るための選択入出力ポートを構成し、
選択入出力ポートをテストする前記ステップ（ｈ）が、
（ｈ２）既知のテスト・データを選択入出力ポートに印加するステップと、
（ｈ３）選択入出力ポートの結果データを関連のバウンダリ・スキャン・チェーンにラッチするステップと、
（ｈ４）バウンダリ・スキャン・チェーンからデータをシフト・アウトし、ラッチした結果データをスキャン・アウトするステップと、
（ｈ５）スキャン・アウトした結果データに応じて前記選択入出力ポートの機能性を判定するステップとをさらに含むことを特徴とする、請求項２６に記載のＦＰＧＡをテストする方法。
【請求項２８】
（ｉ）関連の相互接続スキャン・チェーンを使用して前記複数のプログラマブル論理ユニットのうちの選択プログラマブル論理ユニットをテストするステップをさらに含むことを特徴とする、請求項２４に記載のＦＰＧＡをテストする方法。
【請求項２９】
選択プログラマブル論理ユニットをテストする前記ステップ（ｉ）が、
（ｉ１）前記特定の論理回路の所与の回路構成に応じて選択プログラマブル論理ユニットを構成するステップを含むことを特徴とする、請求項２８に記載の方法。
【請求項３０】
前記関連の相互接続スキャン・チェーンが、そのデータを前記選択プログラマブル論理ユニットに選択的に印加するために、複数の構成メモリ・セルのうちの指定のメモリ・セル内の関連構成データに応じてプログラム可能であり、
選択プログラマブル論理ユニットをテストする前記ステップ（ｉ）が、
（ｉ２）そのデータを前記選択プログラマブル論理ユニットに印加するために前記関連の相互接続スキャン・チェーンを構成する追加ステップを含むことを特徴とする、請求項２８に記載の方法。
【請求項３１】
前記プログラマブル論理ユニットが、そこで選択的に構成可能な同期論理デバイスを含み、
前記ＦＰＧＡが、前記同期論理デバイスにシステム・クロックを分配するためのクロック分配ネットワークを含み、
選択プログラマブル論理ユニットをテストする前記ステップ（ｉ）が、
（ｉ３）前記関連の相互接続スキャン・チェーンの入力および出力ＬＳＳＤレジスタ間にプログラマブル論理ユニットの同期論理デバイスを構成するステップと、
（ｉ４）前記入力ＬＳＳＤレジスタを介して前記同期論理デバイスにテスト・データを印加するステップと、
（ｉ５）前記クロック分配ネットワークを介して前記同期論理デバイスにシステム・クロックのクロック・パルスを提供するステップと、
（ｉ６）前記出力ＬＳＳＤレジスタを介して前記同期論理デバイスのデータをスキャン・アウトするステップと、
（ｉ７）前記同期論理デバイスと関連のクロック分配ネットワークの機能性を判定するために、印加した前記テスト・データに応じて前記スキャン・アウトしたデータを分析するステップとを含むことを特徴とする、請求項２８に記載の方法。
【請求項３２】
前記クロック分配ネットワークが、前記同期論理デバイスへの代替クロック分配結合を行うようにプログラム可能であり、
前記ステップ（ｉ）が、
（ｉ８）前記同期論理デバイスへの前記代替クロック分配結合のうちの選択クロック分配結合を行うようにプログラマブル・クロック分配ネットワークを構成する追加のステップを含むことを特徴とする、請求項３１に記載の方法。
【請求項３３】
前記ＦＰＧＡが、前記同期論理デバイスへシステム・リセット信号を分配するためのリセット分配ネットワークを含み、
前記方法が、
（ｊ１）前記同期論理デバイスに既知のデータをロードするために，
（ｉ３）前記関連の相互接続スキャン・チェーンの入力および出力ＬＳＳＤレジスタ間にプログラマブル論理ユニットの同期論理デバイスを構成するステップと、
（ｉ４）前記入力ＬＳＳＤレジスタを介して前記同期論理デバイスにテスト・データを印加するステップと、
（ｉ５）前記クロック分配ネットワークを介して前記同期論理デバイスにシステム・クロックのクロック・パルスを提供するステップと、
を繰り返すステップと、
（ｊ２）前記リセット分配ネットワークを介して前記同期論理デバイスにシステム・リセット信号動作を提供するステップと、
（ｊ３）前記出力ＬＳＳＤレジスタを介して前記同期論理デバイスのデータをスキャン・アウトするステップと、
（ｊ４）前記同期論理デバイスとリセット分配ネットワークのリセット機能性を判定するためにスキャン・アウトしたデータを分析するステップとにより、前記同期論理デバイスとリセット分配ネットワークのリセット機能性をテストする追加のステップを含むことを特徴とする、請求項３１に記載の方法。
【請求項３４】
前記関連の相互接続スキャン・チェーンが、前記複数のプログラマブル相互接続部のうちの所与の相互接続部内に配置された複数のプログラマブルＬＳＳＤレジスタを含み、前記複数のプログラマブルＬＳＳＤレジスタが、そのデータを関連の所与の相互接続部に選択印加するために関連の構成データに応じてプログラム可能であり、
選択プログラマブル論理ユニットをテストする前記ステップ（ｉ）が、
（ｉ９）前記特定の論理回路の所与の回路構成に応じて選択プログラマブル論理ユニットを構成するステップと、
（ｉ１０）関連の所与の相互接続部を介して選択プログラマブル論理ユニットをインタフェースするように前記複数のプログラマブル相互接続部を構成するステップと、
（ｉ１１）そのデータを関連の所与の相互接続部に印加するように前記複数のＬＳＳＤレジスタを構成するステップとを含むことを特徴とする、請求項２８に記載に方法。
【請求項３５】
選択プログラマブル論理ユニットを構成する前記ステップ（ｉ９）が、所与の論理設計に応じてＦＰＧＡの１ブロック分のプログラマブル論理ユニットと、前記複数のプログラマブル相互接続部のうちの関連する組のプログラマブル相互接続部とを構成して、ブロック論理回路を提供することを含み、
前記所与の相互接続部が、前記ブロック論理回路への入力信号を伝播するための入力相互接続部を提供し、
前記複数のプログラマブル相互接続部を構成する前記ステップ（ｉ１０）が、前記ブロック論理回路からの出力信号を伝播するための出力相互接続部の構成も含み、
前記複数のＬＳＳＤレジスタを構成する前記ステップ（ｉ１１）が、ブロック論理回路の入力相互接続部を横切る入出力バウンダリ・スキャン・チェーンとして第１のスキャン・チェーンを提供し、ブロック論理回路の出力相互接続部を横切る出力バウンダリ・スキャン・チェーンとして第２のスキャン・チェーンをさらに提供し、
選択プログラマブル論理ユニットをテストする前記ステップ（ｉ）が、
（ｉ１２）回路テスト・ベクトルを入出力バウンダリ・スキャン・チェーンにスキャン・インし、入出力バウンダリ・スキャン・チェーンの回路テスト・ベクトルをブロック論理回路の入力に印加するステップと、
（ｉ１３）印加した回路テスト・ベクトルに応答してブロック論理回路によって提供される結果データを出力バウンダリ・スキャン・チェーンにラッチするステップと、
（ｉ１４）出力バウンダリ・スキャン・チェーンからシリアルにデータをスキャン・アウトし、結果データを取り出すステップと、
（ｉ１５）所与のブロック論理回路の機能性を判定するために回路テスト・ベクトルと所与の論理設計に応じて事前に決定した所定の結果データと取り出した結果データとを比較するステップとをさらに含むことを特徴とする、請求項３４に記載の方法。
【請求項３６】
（ｋ）関連のスキャン・チェーンを使用して前記プログラマブル相互接続部のうちの選択プログラマブル相互接続部をテストするステップをさらに含むことを特徴とする、請求項２４に記載の方法。
【請求項３７】
前記関連のスキャン・チェーンが、そのデータをそれぞれの選択プログラマブル相互接続部に選択的に印加するために関連の構成データに応じてプログラム可能な複数のプログラマブルＬＳＳＤレジスタを含み、
選択プログラマブル相互接続部をテストする前記ステップ（ｋ）が、そのデータをそれぞれの選択プログラマブル相互接続部に印加するように前記複数のプログラマブルＬＳＳＤレジスタを構成するステップを含むことを特徴とする、請求項３６に記載の方法。
【請求項３８】
フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）をテストする方法において、前記方法が、
（ｌ）複数のピンと、
前記複数のピンのうちの機能ピンに関連する複数の入出力機能信号線と、
関連の論理構成データに応じて特定の論理回路を提供する複数のプログラマブル論理ユニットと、
関連の経路指定構成データに応じて入出力機能信号線のうちの選択入出力機能線と複数のプログラマブル論理ユニットのうちの選択プログラマブル論理ユニットとを選択的に相互接続するための複数のプログラマブル相互接続部と、
複数のメモリ・セルであって、複数のメモリ・セルのうちの指定のメモリ・セルが、関連の論理構成データと経路指定構成データをそれぞれ保持するために複数のプログラマブル論理ユニットと複数のプログラマブル相互接続部に対して指定されている複数のメモリ・セルと、
メモリ要求信号に応じて複数のメモリ・セルのうちの特定のメモリ・セルにアクセスするための構成論理回路と、
入出力機能信号線を横切るバウンダリ・スキャン・チェーンとして配置された第１のＬＳＳＤスキャン・レジスタと、
構成論理回路に関連して構成スキャン・チェーンとして配置された第２のＬＳＳＤスキャン・レジスタと、
前記複数のプログラマブル相互接続部のうちの選択プログラマブル相互接続部に沿って配置された相互接続スキャン・チェーンを提供する第３のＬＳＳＤスキャン・レジスタであって、複数のメモリ・セルのうちの適切なメモリ・セル内に保持された関連のラッチ構成データに応じてそれぞれのプログラマブル相互接続部に選択的に結合される第３のＬＳＳＤスキャン・レジスタとを有するＦＰＧＡを設けるステップと、
（ｍ１）バウンダリ・スキャン・チェーン、構成スキャン・チェーン、および相互接続スキャン・チェーンのそれぞれによりシリアルに既知のテスト・データをスキャンするステップと、
（ｍ２）前記それぞれのスキャン・チェーンの機能性を判定するために、前記それぞれのスキャン・チェーンによりスキャンしたデータをそれに関連する既知のテスト・データと比較するステップとにより、様々なスキャン・チェーンをテストするステップと、
（ｎ１）関連の機能ピンとバウンダリ・スキャン・チェーンの関連の第１のＬＳＳＤスキャン・レジスタとの間の入出力機能信号線を既知のテスト・データを通過させるステップと、
（ｎ２）入出力機能信号線と関連の機能ピンの機能性を判定するために、実際にそこを通過したデータと既知のテスト・データとを比較するステップとにより、入出力機能信号線と関連の機能ピンをテストするステップと、
（ｏ１）テスト・ベクトルをシリアルに構成スキャン・チェーンにスキャンし、テスト・ベクトルを構成論理回路に印加するステップと、
（ｏ２）印加したテスト・ベクトルに応じて構成論理回路によってもたらされる結果データをラッチした結果データとして構成スキャン・チェーンにラッチするステップと、
（ｏ３）ラッチした結果データを取り出したデータとしてシリアルに構成スキャン・チェーンからスキャン・アウトするステップと、
（ｏ４）構成論理回路の機能性を判定するために、テスト・ベクトルと構成論理回路の予定動作に応じて事前に決定した予想結果データと取り出したデータとを比較するステップとにより、構成論理回路をテストするステップと、
（ｐ１）データを伝播するために関連の経路指定構成データに応じて複数のプログラマブル相互接続部のうちの第１の組の相互接続部を構成するステップであって、第１の組の相互接続部のうちのそれぞれの相互接続部が入力側と出力側とを有するステップと、
（ｐ２）前記第１の組の相互接続部の入力側にそのデータを印加するために、関連のレピータ・ラッチ構成データに応じて前記相互接続スキャン・チェーンのうちの第１の相互接続スキャン・チェーンを構成するステップと、
（ｐ３）前記第１の組の相互接続部の出力側からデータを受け取るために第２の相互接続スキャン・チェーンを提供するステップと、
（ｐ４）第１の相互接続スキャン・チェーンにシリアルに既知のテスト・データをスキャン・インし、前記第１の組の相互接続部の入力側に既知のテスト・データを印加するステップと、
（ｐ５）前記第１の組の相互接続部の出力側に提示されたデータをラッチした結果データとして第２の相互接続スキャン・チェーンにラッチするステップと、
（ｐ６）第２の相互接続スキャン・チェーンからシリアルにデータをスキャン・アウトし、ラッチした結果データを取り出したデータとして回復するステップと、
（ｐ７）第１の組の相互接続部の機能性を判定するために、取り出したデータを既知のテスト・データと比較するステップとにより、プログラマブル相互接続部をテストするステップとを含むことを特徴とする方法。
【請求項３９】
（ｑ１）前記複数のメモリ・セルの所与の位置に既知の入力データを書き込むステップと、
（ｑ２）前記複数のメモリ・セルの所与の位置からデータを読み取るステップと、
（ｑ３）前記メモリ・セルの機能性を判定するために、そこから読み取ったデータと既知の入力データとを比較するステップとにより、前記複数のメモリ・セルをテストするステップ（ｑ）をさらに含むことを特徴とする、請求項３８に記載の方法。
【請求項４０】
前記ステップ（ｏ）がステップ（ｑ）より先行することを特徴とする、請求項３９に記載の方法。
【請求項４１】
前記ステップ（ｐ）が前記ステップ（ｑ）の後に続くことを特徴とする、請求項４０に記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路をテストするためのテスト・サブシステムおよび方式に関し、より具体的には、フィールド・プログラマブル・ゲート・アレイをテストするためのテスト・サブシステムおよび方式に関する。
【０００２】
【従来の技術】
フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）は、その中に組合せ論理回路と同期論理回路の両方を有するコミットなしプログラマブル論理セルのアレイを含むものとして当業者に知られている。通常、論理セルは、プログラマブル相互接続ネットワークによってプログラム式に相互接続されている。したがって、論理セルを適切にプログラミングし相互接続することにより、ＦＰＧＡが複雑なユーザ定義論理機能を実行することができる。
【０００３】
拡張ＦＰＧＡは、論理セルのアレイ間でデータを転送するためのプログラマブル入出力資源も含む場合がある。この入出力資源は、それを通る信号伝播の方向（すなわち、入力または出力）を制御するようにプログラム可能であり、さらにいくつかの追加の選択活動化制御構成（たとえば、インピーダンス、スルー・レート、プルアップ、極性など）に応じてプログラム可能である。ＦＰＧＡは多くの入出力端子を使用する場合が多く、そのそれぞれは、それに関連するプログラマブル入出力資源に応じて個別に構成可能である。また、ＦＰＧＡでは、１つまたは複数のクロック信号をアレイの様々な順序回路に分配するために、プログラマブル・クロック・ネットワークを使用することもできる。上記のＦＰＧＡサブシステムのそれぞれは、通常、ＦＰＧＡの「機能的」部分の一部であると見なされる。このようなサブシステムは、以下、単一でまたはまとめて「プログラマブル資源」と呼ぶ。プログラマブル資源の例は、以下に示す関連米国特許出願に開示されている。
【０００４】
関連出願情報
本出願は、本出願人が所有しすでに出願された以下の米国特許出願に関連する。
１．"PROGRAMMABLE ARRAY INTERCONNECT NETWORK"という名称で１９９５年６月２日出願の第０８／４５９５７９号（特開平９−２６８７０号公報）
２．"PROGRAMMABLE ARRAY I/O - ROUTING RESOURCE"という名称で１９９５年６月２日出願の第０８／４６０４２０号（特開平９−２６８６９号公報）
３．"PROGRAMMABLE ARRAY CLOCK/RESET RESOURCE"という名称で１９９５年６月２日出願の第０８／４５９１５６号（特開平９−２７７４５号公報）
４．"PROGRAMMABLE LOGIC CELL"という名称で１９９５年６月２日出願の第０８／４６０４８１号（特開平８−３４０２４８号公報）
５．"PROGRAMMABLE ARRAY INTERCONNECT LATCH"という名称で１９９５年６月７日出願の第０８／４８０６３９号（特開平９−８６４６号公報）
６．"CONTINUOUS ADDRESS STRUCTURE WITH FOLDING"という名称で１９９５年６月７日出願の第０８／４８８３１４号（特開平９−２４６９５４号公報）
【０００５】
現在、ＦＰＧＡに使用可能なプログラミング技術は様々である。たとえば、不揮発性ヒューズまたはアンチヒューズ・リンクをアレイに使用し、アレイ資源間で選択接続を行うことができる。このような線をプログラミングするためには、リンクにおける適切なプログラミング電圧の選択配置を可能にするため、２端子リンクの各端子が独立してアドレス可能でなければならない。したがって、アレイを構成するために必須のプログラミング電圧のアドレス指定と経路指定を行うために、追加の構成サポート回路が必要である。また、フローティングゲートＥＰＲＯＭ／ＥＥＰＲＯＭトランジスタを使用してアレイのプログラム性を提供することができるが、このようなトランジスタは、それにプログラミング電圧を印加するために、アレイ内に同様に配置され、独立してアドレス指定されるものと思われる。
【０００６】
ＦＰＧＡのプログラマブル資源を制御するためには、スタティックＲＡＭ（ＳＲＡＭ）技術も使用可能である。ＦＰＧＡの単純なプログラマブル資源としては、ＣＭＯＳパス・ゲートが含まれる。このパス・ゲートは、所定のプログラム状態を保持する、基礎となるＳＲＡＭセルによって制御される。このプログラム状態、すなわち、ＳＲＡＭセルに格納された構成データ・ビットによって、パス・ゲートが伝導するかどうかが決まる。したがって、ＦＰＧＡの関連プログラマブル資源の構成を確立するために、ＦＰＧＡ内の比較的独立したサブシステムとして、ＳＲＡＭセルの均質アレイを設けることができる。このＳＲＡＭセルのアレイへのアクセスは、ＦＰＧＡの構成論理サブシステムによって制御される標準のアクセス技法を使用して行う。
【０００７】
したがって、プログラマブル・ゲート・アレイのプログラマブル資源に加え、アレイのプログラミングを可能にするために追加の構成サブシステムが必要なことは明らかである。上記のＳＲＡＭ  ＦＰＧＡ例では、それへのアクセスを制御するための関連構成論理とともに、ＦＰＧＡの関連プログラマブル資源を構成するためにＳＲＡＭセルの均質アレイが設けられている。半導体設計および製作の観点から、単一半導体パッケージに複数の異質サブシステムを設けると、障害検出および分離を含む、回路のテスト性に関する重大な懸念が発生する。したがって、ＦＰＧＡの構成サブシステムおよびプログラマブル資源のテストを可能にするために、包括的なテスト方式を提供すると有利であると思われる。このテスト方式自体は、ＦＰＧＡ内に追加のテスト・サブシステムを設けることを含む場合があり、そのテスト・サブシステムもテスト可能でなければならない。したがって、テスト方式は、テスト・サブシステムを含む、ＦＰＧＡのすべての資源およびサブシステムを可能な限り包含する必要がある。
【０００８】
にもかかわらず、プログラマブル資源と構成およびテスト・サブシステムは、それぞれの回路や機能が異なるものの、相互依存度が高い。この相互依存度のために、使用するテスト方式が非常に複雑になる。たとえば、論理セルの組合せ論理のテストが必要になる場合が多く、その論理セルは構成サブシステムによって所与の状態にプログラミングされる。しかし、論理セル・テストの保全性は、構成サブシステムのエラーや、テスト・サブシステムのエラーによって悪影響を受ける可能性がある。したがって、ＦＰＧＡ内の様々な資源およびサブシステム間の相互依存度をできる限り考慮したテスト方式を使用することが必要になる。
【０００９】
既知のバウンダリ・スキャン技法では、その入出力端子に関連してチップの外辺部にＬＳＳＤレジスタなどの２重ラッチ・セットを設けることが必要である。このラッチ・セットは、シフト・レジスタ・スキャン・チェーンとして相互接続されている。テスト刺激は、スキャン・チェーンにシリアルにロードし、チップの内部回路に印加することができる。スキャン・チェーンは、テスト刺激に応答して、内部回路が提供する結果データを同様に捕捉することができる。次に、この結果をシフト・レジスタからシフト・アウトし、予想結果と比較することができる。チップのスキャンイン端子、スキャンアウト端子、いくつかのクロック端子は、スキャン・チェーンの動作を可能にするために設けられている。したがって、チップの各入出力端子に対する外部テスト・インタフェースを必要とせずに、チップの内部回路で障害を検出することができる。しかし、回路密度を高め、特にＦＰＧＡ内の回路の異種性を考慮すると、バウンダリ・スキャン技法でも障害検出が可能になるが、障害分離は難しい場合がある。したがって、ＦＰＧＡ内の様々な資源およびサブシステムのテスト中に障害分離の程度を高めるようなテスト・サブシステムを使用することが必要になる。
【００１０】
レベルセンシティブ・スキャン設計（ＬＳＳＤ）テスト技法も知られているが、これは１つの論理回路を組合せ論理回路と同期論理回路にセグメント化することを含む。同期回路はシリアル・シフト・レジスタ・スキャン・チェーンになるように接続され、論理回路の領域の境界となるかまたは領域をセグメント化する。バウンダリ・スキャン技法と同様、テスト刺激はシフト・レジスタ・スキャン・チェーンにシフト・インされ、論理回路に印加される。結果データは、その関連論理回路またはセグメントによってもたらされた通りに、スキャン・チェーンに捕捉される。次に、捕捉した結果データが分析のためにシフト・アウトされる。この場合も、外部テスト機器はスキャンイン、スキャンアウト、ならびに適切なクロック・ピンだけにアクセスすればいいので、ピン・カウント低減テストが達成される。
【００１１】
典型的なＦＰＧＡでは、その同期回路をシリアル・シフト・レジスタに変換することにより、すべての組合せ回路を明確にセグメント化することは少々難しいことである。たとえば、各論理セルの同期回路のそれぞれが変換され、関連シリアル・シフト・レジスタ・スキャン・チェーン内で接続されている場合、介入するプログラマブル相互接続ネットワークは明確にセグメント化されず、テスト不能領域を含む可能性があると思われる。この問題は、相互接続ネットワークが大規模で複雑な場合、特に重大である。したがって、ＦＰＧＡの異質な組合せ資源と同期資源の妥当なテストを行い、その容易なセグメント化を可能にし、純粋なＬＳＳＤ手法を使用する場合の欠点を克服するようなテスト方式を提供することが必要になる。
【００１２】
前述のように、高性能テスト方式を提供するには、少なくともアレイ内にいくつかの追加テスト・サブシステムを設けることが必要になると思われる。しかし、既知のシフト・レジスタ技法と同様、テスト・サブシステムを動作させるのに必要な入出力端子の数をできる限り最小限にすることが必要になる。さらに、最小量の信号インタフェース回路と外部テスト機器により、１つのシステム内の複数のＦＰＧＡチップのテストをサポートすることが必要である。
【００１３】
【発明が解決しようとする課題】
したがって、本発明の一目的は、改良されたテスト可能プログラマブル・ゲート・アレイとそれをテストするための方法を提供することにある。
【００１４】
本発明の他の目的は、フィールド・プログラマブル・ゲート・アレイの様々なサブシステム内で障害の分離を可能にするような、プログラマブル・ゲート・アレイをテストするための包括的なテスト方式を提供することにある。
【００１５】
本発明の他の目的は、プログラマブル・ゲート・アレイの様々なサブシステム間の相互依存度を考慮に入れた、プログラマブル・ゲート・アレイをテストするためのこのようなテスト方式を提供することにある。
【００１６】
本発明の他の目的は、複数のプログラマブル・ゲート・アレイのテストを可能にするためのこのようなテスト可能プログラマブル・ゲート・アレイと関連テスト方法を提供することにある。
【００１７】
【課題を解決するための手段】
本発明の第１の実施例によれば、フィールド・プログラマブル・ゲート・アレイは、関連入出力ポートに結合された複数の機能信号線を有する。複数のプログラマブル論理ユニットは、関連の論理構成データに応じて特定の論理回路を提供する。複数のプログラマブル相互接続部は、関連の経路指定構成データに応じて機能信号線とプログラマブル論理ユニットとを相互接続する。プログラマブル論理ユニットとプログラマブル相互接続部に関連するメモリ・セルは、それぞれ関連のプログラマブル資源を構成するための論理および経路指定構成データを保持する。構成論理回路は、メモリ要求信号を受け取り、これらの信号を処理してメモリ・セルへのアクセスを可能にする。ＦＰＧＡのテスト回路は、入出力機能信号線と関連入出力ポートへの選択的シリアル・スキャン・アクセスとそれらの機能検証とを可能にするために、ＦＰＧＡの機能信号線を横切るＬＳＳＤバウンダリ・スキャン・チェーンを含む。また、そのＬＳＳＤシリアル・スキャン・アクセスとテストを可能にするために、第２のＬＳＳＤスキャン・チェーンが構成論理回路に関連付けられている。最後に、それへの選択的シリアル・スキャン・アクセスを可能にするために、フィールド・プログラマブル・ゲート・アレイのプログラマブル相互接続部に沿ってＬＳＳＤレピータ・スキャン・チェーンが配置されている。
【００１８】
本発明のこの第１の実施例の一態様では、入出力バウンダリ・スキャン・チェーンが、ＦＰＧＡの様々な特徴を制御するための制御信号を提供するためにテスト制御レジスタにデータをロードすることに関連する部分を含む。
【００１９】
本発明のこの第１の実施例の他の態様は、アレイ・テスト・モードをサポートするための備えを含む。行と列からなるアレイとして複数のプログラマブル論理ユニットがＦＰＧＡを横切って配置されている。プログラマブル相互接続部は、アレイ配置されたプログラマブル論理ユニットの行と列に隣接して配置された複数の行バスと複数の列バスとを含む。プログラマブル・レピータ・ユニットは、構成メモリの指定のメモリ・セルに保持されたレピータ構成データに応じて、行バスと列バスのうちの所与のバスを関連バス・セグメントに選択的に細分する。レピータ・スキャン・チェーンの各ＬＳＳＤスキャン・レジスタは、複数のプログラマブル・レピータ・ユニットの関連レピータ・ユニット内に組み込まれている。それぞれのレピータ・スキャン・チェーンを提供するために、関連の行バスと列バスのＬＳＳＤスキャン・レジスタはシリアル接続されていることが好ましい。
【００２０】
本発明の第１のテスト方法（Ｂ／Ｓまたはカード・テスト）では、その入出力バウンダリ周辺に入出力バウンダリ・スキャン・チェーンを有するＦＰＧＡをテストするための方法が提供される。第１のテスト・マクロでは、既知の入出力テスト・データがＦＰＧＡの入出力バウンダリに印加される。次に、入出力バウンダリのデータが入出力バウンダリ・スキャン・チェーンにラッチされる。次に、このラッチ・データが入出力バウンダリ・スキャン・チェーンからスキャン・アウトされ、ＦＰＧＡの入出力バウンダリの機能性を判定するために既知の入出力テスト・データと比較するために回復される。
【００２１】
第２のテスト方法（構成またはＬＳＳＤテスト）のＦＰＧＡには、ＦＰＧＡの構成論理回路をテストするための構成スキャン・チェーンが設けられている。構成テスト・ベクトルは、構成スキャン・チェーンにスキャン・インされ、構成論理回路に印加される。印加された構成テスト・ベクトルに応答して構成論理回路によってもたらされる結果データは、構成スキャン・チェーンにラッチされる。次に、結果データは、構成スキャン・チェーンからスキャン・アウトされ、回復され、構成論理回路の機能性を判定するために印加されたテスト・ベクトルと構成論理回路に応じて、所定の結果データと比較される。
【００２２】
第３のテスト方法（アレイ・テスト）のＦＰＧＡには、ＦＰＧＡの選択プログラマブル相互接続部内に構成されたレピータ・スキャン・チェーンが設けられている。ＦＰＧＡのプログラマブル相互接続部のうちの第１の組の相互接続部は、レピータ・スキャン・チェーンの入力および出力レピータ・スキャン・チェーンのそれぞれのＬＳＳＤスキャン・レジスタ間に構成される。相互接続テスト・ベクトルは、入力レピータ・スキャン・チェーンにシリアルにスキャン・インされ、第１の組の相互接続部の入力側に印加される。次に、第１の組の相互接続部の出力側の結果データは、出力レピータ・スキャン・チェーンにラッチされる。次に、結果データは出力レピータ・スキャン・チェーンからスキャン・アウトされ、回復され、プログラマブル相互接続部の機能性を判定するために印加された相互接続テスト・ベクトルと比較される。
【００２３】
この実施例の他のテスト方法（構成メモリ・アクセス・テスト）は、ＦＰＧＡのプログラマブル資源を構成するために構成データを受け取って保持するためのメモリ・セルの能力を判定するために、ＦＰＧＡのメモリ・セルに直接アクセスし、テストするものである。まず、既知のデータがメモリ・セルに書き込まれる。次に、メモリ・セルの機能性を判定するために、メモリ・セルからデータが取り出され、そのデータが既知のデータと比較される。
【００２４】
本発明の他のテスト方法では、ＦＰＧＡの構成可能性をテストするための方法が提供される。複数の入出力ポートと、プログラマブル論理ユニットと、プログラム論理ユニットと入出力ポートとを相互接続するためのプログラマブル相互接続部とを有するＦＰＧＡが提供される。様々なプログラマブル論理ユニットとプログラマブル相互接続部に対して、複数の構成メモリ・セルが指定される。この構成メモリ・セルは、プログラマブル論理ユニットとプログラマブル相互接続部を構成するための構成データを保持する。構成論理回路には、プログラマブル・メモリ・セルへのアクセスと、そのセルへの構成データのロードとを可能にするためにＦＰＧＡが設けられている。フィールド・プログラマブル・ゲート・アレイをテストするためのこの方法では、構成論理回路に関連するＬＳＳＤスキャン・チェーンにより、構成論理回路の機能性がテストされる。構成論理回路のテスト後、確定的なテスト・パターンを使用して複数の構成メモリ・セルがテストされる。
【００２５】
本発明の上記のテスト方法の他の態様では、ＦＰＧＡの入出力ポートの状態（スナップショット）の観察にバウンダリ・スキャン・チェーンが使用される。
【００２６】
本発明の第４のテスト方法（Ｂ／Ｓチップ・テスト）では、複数の入出力ピンと、複数の入出力機能信号線と、複数のプログラマブル論理ユニットと、経路指定構成データに応じて機能信号線と選択プログラマブル論理ユニットとを選択的に相互接続するための複数のプログラマブル相互接続部とを有するＦＰＧＡをテストするための方法が提供される。ＦＰＧＡには、ＦＰＧＡのプログラマブル資源の構成に関連する構成データを保持するための複数のメモリ・セルが設けられている。ＦＰＧＡの構成論理回路により、メモリ・セルへのアクセスが可能になる。バウンダリ・スキャン・チェーンはＦＰＧＡの機能信号線を横切って設けられ、構成スキャン・チェーンは構成論理回路の周りおよび構成論理回路内に設けられている。また、レピータ・スキャン・チェーンは、プログラマブル相互接続部の選択相互接続部に沿って設けられている。レピータ・スキャン・チェーンは、それぞれのラッチ構成データに応じて関連相互接続部に選択的に結合される。
【００２７】
本発明のこの第４のテスト方法によりＦＰＧＡをテストする場合、それによりシリアルにデータをスキャンすることにより、様々なスキャン・チェーンのそれぞれがテストされる。データは、スキャン・チェーンを通過するときに受け取られ、それぞれのスキャン・チェーンの機能性を判定するためにスキャン・インされたものと比較される。
【００２８】
入出力機能信号線と関連の機能入出力ピンは、機能入出力ピンにテスト・ベクトルを印加し、入出力機能線の結果データをバウンダリ・スキャン・チェーンにラッチすることによってテストされる。結果データは、バウンダリ・スキャン・チェーンからスキャン・アウトされ、入出力ピンと関連の機能信号線の機能性を判定するために機能入出力ピンに印加されたテスト・ベクトルと比較される。
【００２９】
この第４のテスト方法の他の手順では、テスト・ベクトルをシリアルに構成スキャン・チェーンにスキャン・インし、関連の構成論理回路にテスト・ベクトルを印加することによって、構成論理回路がテストされる。次に、印加したテスト・ベクトルに応答して構成論理回路によってもたらされる結果データは、構成スキャン・チェーンにラッチされる。この結果データは、構成スキャン・チェーンからシリアルにスキャン・アウトされ、構成論理回路の適正動作を判定するために、印加したテスト・ベクトルおよび関連の構成論理回路に応じて事前決定された所定の結果データと比較される。
【００３０】
プログラマブル相互接続部は、第１および第２のレピータ・スキャン・チェーン間の複数のプログラマブル相互接続部のうちの第１の組の相互接続部をまず構成することによりテストされる。テスト・ベクトルは、第１のレピータ・スキャン・チェーンにシリアルにスキャン・インされる。第１の組の相互接続部の入力側にテスト・ベクトルを印加するために、適切な構成データに応じて第１のレピータ・スキャン・チェーンが構成される。次に、第１の組の相互接続部の出力側のデータが第２のレピータ・スキャン・チェーンにラッチされる。この結果データは、第２のレピータ・スキャン・チェーンからスキャン・アウトされ、回復され、プログラマブル相互接続部の適正な機能性を判定するために印加したテスト・ベクトルと比較される。
【００３１】
本発明の最後の実施例のフィールド・プログラマブル・ゲート・アレイは、そのメモリ・セルにアクセスするための構成論理回路を含み、そのメモリ・セルはＦＰＧＡのプログラマブル資源の構成に関連付けられている。ＬＳＳＤのアクセスと構成論理回路のテストを可能にするために、ＬＳＳＤスキャン・チェーンが構成論理回路に関連付けられている。
【００３２】
本発明は、プログラマブル・ゲート・アレイをテストするためのテスト・サブシステムおよび方式を提供する。以下の説明では、まず、プログラマブル・ゲート・アレイとそれに関連するテスト・サブシステムの基本構造について説明する。次に、その関連テスト・サブシステムに応じてプログラマブル・ゲート・アレイをテストするためのテスト・マクロと関連シーケンスとを説明する。
【００３３】
フィールド・プログラマブル・ゲート・アレイの例に関連して、以下に本発明のテスト・サブシステムおよび方法について説明する。ただし、本発明のテスト・サブシステムおよび方法は、匹敵する他の再構成可能論理デバイスにも同様に適用可能であることに留意されたい。
【００３４】
【発明の実施の形態】
図１ないし図２を参照すると、フィールド・プログラマブル・ゲート・アレイ１０が示されているが、これは、複雑なユーザ定義の論理回路のテスト、構成、機能動作を可能にするための様々なサブシステムを含む。フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）１０のプログラマブル資源１２は、プログラマブル論理セルと、プログラマブル相互接続ネットワークと、プログラマブル・クロック／リセット分配ネットワークと、プログラマブル入出力ポートと、その他のものを含む。"Programmable Logic Cell"という名称の米国特許出願の上記の部分には、プログラマブル論理セルの詳しい説明が示されている。同様に、"Programmable Array Interconnect Network"、"Programmable Array Clock/Reset Resource"、"Programmable I/O Routing Resource"という名称のそれぞれの米国特許出願の上記の部分には、相互接続ネットワーク、クロック／リセット分配、プログラマブル入出力資源の詳しい説明が示されている。
【００３５】
ＦＰＧＡ１０のＳＲＡＭ１４は、ＦＰＧＡ１０の様々なプログラマブル資源１２の構成状態を選択的に励起するために構成データを保持する。構成プログラム・ビット２０は、ＳＲＡＭ１４の関連メモリ・セルの構成データに応じて、ＦＰＧＡの様々なプログラマブル資源１２を励起する。"Continuous Address Structure With Folding"という名称の米国特許出願の上記の部分は、ＦＰＧＡの様々なプログラマブル資源へのＳＲＡＭメモリの割振り例を示している。
【００３６】
ＦＰＧＡ１０の構成論理回路１６および１８は、プログラマブル資源１２を構成するためにそこに構成データをロードできるようにするため、また、ＳＲＡＭ１４のテストを可能にするために、ＳＲＡＭ１４にアクセスする。構成論理回路のＳＲＡＭ制御装置１６は、動作モードを選択し、ＳＲＡＭ１４へのアクセスを制御するために、様々な入力信号を受け取る。また、ＳＲＡＭ制御装置１６は、ＳＲＡＭ１４の動作検証中に出力信号を提供する。構成論理回路１６の詳細については、Garverick他に対して１９９４年３月２９日に交付された"Versatile and Efficient Cell-to-Local Bus Interface in a Configurable Logic Array"という名称の米国特許第５２９８８０５号と、"Application Note AT6000 Series Configuration"というタイトルの文献（１９９３年５月１９日発行、改訂版１Ｂ、Atmel Corporation）を参照されたい。どちらの参考文献も、ここに全体を参照することにより、本明細書に組み込まれる。
【００３７】
構成論理回路のデコーダおよびシーケンサ１８は、アドレス・バス３２またはデータ・バス３４あるいはその両方からデータを受け取る。デコーダおよびシーケンサは、このデータをデコードし、ＳＲＡＭ１４のメモリ・マップをアドレス指定するためのアドレスまたはアドレス・シーケンスあるいはその両方を提供する。デコーダおよびシーケンサの詳細については、"Continuous Address Structure With Folding"という名称の米国特許出願の上記の部分と、"Application Note AT6000 Series Configuration"というタイトルの文献を参照されたい。
【００３８】
上記のサブシステム、すなわち、プログラマブル資源１２と、ＳＲＡＭ１４と、構成論理回路１６、１８とは、ＦＰＧＡのユーザ機能動作を可能にするものである。この開示の次の部分では、ユーザがＦＰＧＡの様々なサブシステムをテストできるようにするためのＦＰＧＡのテスト・サブシステムについて説明する。
【００３９】
テスト可能ＦＰＧＡのテスト・サブシステム：
図２を参照すると、テスト回路２２は、ＦＰＧＡのテスト・モードを選択するためのテスト制御信号MTESTとTESTMOREを受け取る。さらに、ＦＰＧＡの個々のテストの追加態様を連絡するために追加のテスト信号３８をテスト回路２２に提供することもできる。入出力バウンダリ・スキャン・チェーン２６は、ＦＰＧＡ１０の機能入出力相互接続部３６を横切る既知の入出力バウンダリ・スキャン・チェーンを提供する。この入出力バウンダリ・スキャン・チェーン２６の一部分は、ＦＰＧＡのテスト中に追加の制御信号を提供するために制御レジスタ２８のロードに関連付けられている。
【００４０】
追加のテスト・サブシステムとしては、構成スキャン・チェーン２４がある。構成スキャン・チェーン２４は、スキャン・チェーンによる構成論理回路へのアクセスを許可し、そのテストを可能にするために、ＦＰＧＡの構成論理回路の様々なセグメントの境界を示す。最後に、レピータ・スキャン・チェーン３０1、３０2、・・・は、ＦＰＧＡの選択プログラマブル相互接続部内に構成スキャン・チェーンを提供するものである。レピータ・スキャン・チェーンは、関連のプログラマブル相互接続部への選択スキャン・チェーン・アクセスを可能にし、ＦＰＧＡのプログラマブル資源１２の様々な部分の分離テストを可能にする。レピータ・スキャン・チェーンの詳細については、"Programmable Array Interconnect Latch"という名称の米国特許出願の上記の部分を参照されたい。
【００４１】
ＦＰＧＡの機能、構成、およびテスト・インタフェース：
図１ないし図２に示すように、ＦＰＧＡ１０は、ＦＰＧＡの様々なサブシステム間で信号を伝播するために複数の入出力ポートと入出力相互接続部を含む。ＦＰＧＡの特定の実施例では、入出力相互接続部の一部が共通入出力ポートを共用している。このような２重使用入出力ポートは、所与のテスト制御信号に応じて関連の入出力相互接続部の１つに選択的に結合される。以下に示す表１は、ＦＰＧＡの動作モードによる関連入出力相互接続部へのＦＰＧＡの入出力ポートの割振りを示すものである。
【００４２】
入出力ポートは、専用ポート「ｄ」ポート、複数使用ポート「ｍ」ポート、機能バウンダリ・スキャン・ポート「ｂｓ」という３通りのカテゴリを含む。専用入出力ポート「ｄ」は、２重使用ポートになる場合もあるが、テスト、構成、増力、モード選択など、ＦＰＧＡの非機能態様専用である。
【００４３】
複数使用入出力ポート「ｍ」は、ＦＰＧＡの機能相互接続部あるいは拡張テスト相互接続部に選択的に結合された２重使用ポートである。所与のテスト・モードでは、複数使用入出力ポート「ｍ」が拡張テスト・インタフェースを提供する。
【００４４】
バウンダリ・スキャン入出力ポート「ｂｓ」は、主にＦＰＧＡの機能相互接続部に割り振られる。ただし、バウンダリ・スキャン入出力ポート「ｂｓ」の第１の部分は、ＦＰＧＡの構成に関連する相互接続部に結合することもできる。また、その第２の部分は、クロックまたはリセット信号をＦＰＧＡに伝播するための相互接続部に結合することもできる。
【００４５】
【表１】
ＦＰＧＡ入出力インタフェース
ｉ＝入力、ｏ＝出力、ｃ＝共通入出力
＃＝ｉｏ（入出力）の数
＊＝機能入出力
ｄ＝専用入出力であって、-MTEST＝０かつ-DI2＝１によってテスト・モードが可能になり、-CS＝０によって構成モードが可能になる
ｍ＝追加のテスト入出力であって、-MTEST＝０かつ-TESTMORE＝０によって可能になる
ｂｓ＝ラッチ境界スキャン入出力であって、-RI＝１かつ-DI1＝１によって可能になる
＃      テスト・モード        構成モード            機能モード
d  1    i  SWGATE=VREF        i  SWGATE=VREF        i  SWGATE=VREF
d  1    i  -OFF/ON            i  -OFF/ON            i  -OFF/ON
d  1    c  -CON               c  -CON               -  -CON = high Z
d  1    o  SO                 i  -CS = 0            i  -CS = 1
d  1    i  SI                 c  CCLK               -  CCLK = x
d  1    i  LSSDA              i  M0                 -  M0 = x
d  1    i  LSSDB10            i  M1                 -  M1 = x
d  1    i  LSSDC              i  M2                 -  M2 = x
d  1    i  -MTEST = 0         i  -MTEST = 1         i  -MTEST = 1
d  1    i  -TESTMORE          i  CLOCK1 = x         i  CLOCK1
m  1    i  -RI                *                     *
m  1    i  -DI1               *                     *
m  1    i  -DI2               *                     *
m  1    i  -C_TEST            *                     *
m  1    i  -CONFG             *                     *
m  1    i  -REPT              *                     *
m  8    i  SITOP(0-7)         *                     *
m  8    o  SOBOT(0-7)         *                     *
m  8    i  SIRIGHT(0-7)       *                     *
m  8    o  SOLEFT(0-7)        *                     *
m  1    i  SICONFIG           *                     *
m  1    o  SOCONFIG           *                     *
m  1    i  LSSDB1             *                     *
m  1    i  LSSDB2             *                     *
m  1    i  LSSDB3             *                     *
bs 17   *  IO                 c  ADDR(0-16)         *  IO
bs 8    *  IO                 c  DATA(0-7)          *  IO
bs 1    *  IO                 i  -CHECK(-RR/RW)     *  IO
bs 1    *  IO                 o  -CSOUT             *  IO
bs 1    *  IO                 o  -ERR               *  IO
bs 1    *  CLOCK2 OR IO       *  CLOCK2 OR IO       *  CLOCK2 OR IO
bs 1    *  CLOCK3 OR IO       *  CLOCK3 OR IO       *  CLOCK3 OR IO
bs 1    *  CLOCK4 OR IO       *  CLOCK4 OR IO       *  CLOCK4 OR IO
bs 1    *  CLOCK5 OR IO       *  CLOCK5 OR IO       *  CLOCK5 OR IO
bs 1    *  CLOCK6 OR IO       *  CLOCK6 OR IO       *  CLOCK6 OR IO
bs 1    *  -RESET1 OR IO      *  -RESET1 OR IO      *  -RESET1 OR IO
bs 1    *  -RESET2 OR IO      *  -RESET2 OR IO      *  -RESET2 OR IO
bs 1    *  -RESET3 OR IO      *  -RESET3 OR IO      *  -RESET3 OR IO
bs ..   *  ...                *  ...                *  ...
bs 1    *  IO                 *  IO                 *  IO
【００４６】
表１の右端の２つの列は、それぞれ機能ノードと構成モードであり、関連のＦＰＧＡの構成相互接続部と機能相互接続部の様々な入出力ポートの割振りを示している。SWGATEはＦＰＧＡに対して電圧基準を提供する。OFF/ONはＦＰＧＡに対してその増力電源電圧を選択する。ＦＰＧＡの構成とその状態の制御は、もう１つの専用入出力ポート「ｄ」であるCONを介して提供される。追加の構成相互接続部は、構成選択CS、構成クロックCCLK、所与のＳＲＡＭチェック動作モードを可能にするためのチェック制御CHECK、別のＦＰＧＡの構成を可能にするための構成選択CSOUT、ＦＰＧＡの構成エラーを報告するためのエラーERRなどの信号を伝播する。このような構成相互接続部と関連信号の詳細は、"Application Note AT6000 Series Configuration"と題する上記の文献に記載されている。
【００４７】
テスト・モード・イネーブル信号MTESTが正しく活動化されると、表１に示すように所与の専用入出力ポートがテスト相互接続部として再割振りされる。構成選択CSに関連するポートは、スキャン出力SOとして再割振りされる。構成クロックCCLKに関連するポートは、ＦＰＧＡのスキャン入力SIとして再割振りされる。同様に、確認モード選択M0〜M2に関連するポートは、ＬＳＳＤクロック相互接続部LSSDA、LSSDB10、LSSDCにそれぞれ再割振りされる。最後に、クロック相互接続CLOCKに関連するポートは、追加テスト・イネーブル相互接続TESTMOREに再割振りされる。したがって、専用入出力ポート「ｄ」の一部は、ＦＰＧＡの構成とテストに関連する各種相互接続部間で共用される２重使用ポートになる。
【００４８】
ＦＰＧＡがそのテスト・モードになっており、MTESTによって選択されている場合、追加テスト・イネーブル信号TESTMOREを活動化することによって、拡張テスト・インタフェースが得られる。したがって、MTESTとTESTMOREの両方が活動化されると、ＦＰＧＡの追加テストを可能にするための拡張テスト・インタフェース（表１の複数使用ポート「ｍ」によって表されるもの）が得られる。
【００４９】
レシーバ禁止信号RIに関連する相互接続部は、ＦＰＧＡの所与のレシーバを禁止するための直接制御入力を提供する。DI1とDI2は、ＦＰＧＡに関連する所与のドライバの直接制御を提供する。ＭＵＸテスト制御信号C_TESTに関連する相互接続部は、ＦＰＧＡの所与のパスゲート・マルチプレクサのテストを可能にするための直接入力を提供する。同様に、直接入力CONFGとREPTは、構成スキャン・チェーン２４とレピータ・ラッチ・スキャン・チェーン３０の動作をそれぞれ可能にする。拡張インタフェースの残りのテスト・ポートは、様々なレピータ・スキャン・チェーンと構成スキャン・チェーンへのデータのスキャン・インまたはそれらからのスキャン・アウトと、構成スキャン・チェーンをクロックするための追加のＬＳＳＤクロックの提供に関連付けられている。
【００５０】
レシーバ禁止信号RIは、活動化されると、ＦＰＧＡの機能入力に関連する相互接続部がそのデータを受け取るのを防止する。このような機能入力としては、バウンダリ・スキャン入出力ポート「ｂｓ」と、機能ポートとして割り振られたとき（すなわち、TESTMOREが活動化されていないとき）の複数使用入出力ポート「ｍ」とを含む。第１のドライバ禁止信号DI1は、活動化されると、機能出力ポートのドライバが関連の機能相互接続部のデータを送り出すのを禁止する。このような第１の組のドライバは、バウンダリ・スキャン入出力ポート「ｂｓ」と、関連の機能相互接続部に割り振られた（すなわち、TESTMOREが活動化されていないときの）複数使用入出力ポート「ｍ」のドライバを含む。これに対して、第２のドライバ禁止信号DI2は、活動化されると、専用入出力ポートと、拡張テスト相互接続部に割り振られた（すなわち、TESTMOREが活動化されたときの）複数使用入出力ポート「ｍ」のドライバを禁止する。TESTMOREが活動状態ではない場合、RI、DI1、DI2の最後の状態が保持される。
【００５１】
入出力バウンダリ・スキャン・チェーンおよび制御レジスタ：
図１、図２、および図３を参照すると、入出力バウンダリ・スキャン・チェーン２６は、ＦＰＧＡ１０の機能入出力相互接続部３６に選択的に相互結合可能なＬＳＳＤシフト・レジスタ・ラッチのシリアル・ストリングを含む。外部テスト制御装置４０は、入出力バウンダリ・スキャン・チェーン２６へのアクセスとその動作を可能にするためのテスト・イネーブル信号MTESTを活動化する。外部テスタ４０は、スキャン・インSI相互接続部およびスキャン・アウトSO相互接続部を介して入出力バウンダリ・スキャン・チェーンのインタフェースを取り、入出力バウンダリ・スキャン・チェーン２６を動作させるために必要な関連相互接続部にLSSDA、LSSDB10、LSSDCクロック信号を提供する。
【００５２】
図４を参照すると、入出力バウンダリ・スキャン・チェーン２６の各セル５６は２つのＬＳＳＤシフト・レジスタ・ラッチ７２、８８を含む。第１のＬＳＳＤシフト・レジスタ７２のマスタ・ラッチＬ１は、関連スキャン・チェーンのシリアル・データを受け取るためのスキャン入力７６と、マルチプレクサ６８の出力からデータを受け取るために結合された１次入力７０（負論理）とを有する。第１のＬＳＳＤシフト・レジスタ７２のスレーブ・ラッチＬ２からのシリアル出力７８は、第２のＬＳＳＤシフト・レジスタ８８のマスタ・ラッチＬ１のシリアル入力（正論理）に結合されている。第２のシフト・レジスタのマスタ・ラッチＬ１の１次入力は、マルチプレクサ８４の出力からデータを受け取るように結合されている。第２のＬＳＳＤシフト・レジスタ８８のスレーブ・ラッチＬ２は、シリアル・データをシフト・アウトするためのスキャン出力９２を有する。
【００５３】
４つのマルチプレクサ６０、６４、６８、８４は、ＦＰＧＡのそれぞれの相互接続部にＬＳＳＤシフト・レジスタを選択的に結合することができる。マルチプレクサ状態は制御信号PT0およびPR0によって制御され、これらの信号の一方または両方の極性は回路要件に基づいてそこから経路指定することができる。制御信号PT0はマルチプレクサ６０および８４の構成を制御し、制御信号PR0はマルチプレクサ６４および６８の構成を制御する。制御信号PT0が活動化されると、ＦＰＧＡ内部からの相互接続部をマルチプレクサの出力６２に結合するためにマルチプレクサ６０が使用可能になる。同様に、ＦＰＧＡ内部の相互接続部からその（正）出力８６にトライステート・イネーブル信号を結合して、トライステート・バッファ８２とその（負）出力８７をラッチ８８に対して選択的に使用可能にするために、マルチプレクサ８４が使用可能になる。トライステート・バッファ８２が使用可能になると、マルチプレクサ６０の出力６２に提示されたデータが関連入出力ポート３６'に向かって伝播される。制御信号PT0の代替状態では、マルチプレクサ６０は線８０を介して第１のＬＳＳＤレジスタ・ラッチ７２に格納されたデータを出力し、マルチプレクサ８４は線９４を介して第２のＬＳＳＤレジスタ・ラッチ８８に格納されたデータに応じてトライステート・バッファ８２を選択的に使用可能にする。したがって、制御信号PT0は、ＦＰＧＡ内部から関連入出力ポート３６'へのデータ伝送を制御する。
【００５４】
制御信号PR0は、関連ＬＳＳＤレジスタ・ラッチ７２がどのデータを受け取るかを判定するためにマルチプレクサ６４および６８を制御する。マルチプレクサ６４は、ＦＰＧＡの関連内部相互接続部にデータを伝播するために、関連入出力ポート３６'または第１のＬＳＳＤレジスタ・ラッチ７２の出力８０をマルチプレクサの出力６６に選択的に結合する。マルチプレクサ６８は、マルチプレクサ６０またはマルチプレクサ６４からデータを受け取るために第１のＬＳＳＤレジスタ・ラッチ７２の１次入力７０を結合するするかどうかを判定する。このようにして、送信および受信制御信号PT0およびPR0は、関連ＬＳＳＤシフト・レジスタ・ラッチがＦＰＧＡ内部から（ＭＵＸ６０および６８を介して）データを受け取るか、関連入出力ポート３６'から（ＭＵＸ６４および６８を介して）データを受け取るかをそれぞれ制御する。ただし、図４は、既知のＬＳＳＤシフト・レジスタ動作を提供するのに必要なＡ、Ｂ、Ｃの各ＬＳＳＤクロックを示していないことに留意されたい。図５の概略図に示すように、図４のシフト・レジスタ・ラッチにはこのようなそれぞれのＬＳＳＤクロックの結合が仮定されている。
【００５５】
本発明の好ましい実施例では、入出力バウンダリ・スキャン・チェーン２６の関連セルのＬＳＳＤシフト・レジスタ・ラッチ７２、８８のそれぞれがマスタ・ラッチＬ１とスレーブ・ラッチＬ２とを含む。図５を参照すると、マスタ・ラッチＬ１は、トライステート・インバータ９８および１００を含む。ラッチ・トライステート・インバータ９８、１００は、その関連ＬＳＳＤ−Ａクロックに応じて使用可能になると、トライステート・インバータ１０２を介してシリアル入力７６からシリアル入力データを受け取る。あるいは、マスタ・ラッチＬ１は、関連ＬＳＳＤ−Ｃクロックに応じて使用可能になると、トライステート・インバータ９６を介して１次入力７０から入力データを受け取る。
【００５６】
スレーブ・ラッチＬ２は、ラッチ・トライステート・インバータ１０６とインバータ１０８とを含む。マスタ・ラッチＬ１のデータは、その関連ＬＳＳＤ−Ｂクロックに応じて使用可能になると、トライステート・インバータ１０４を介してスレーブ・ラッチＬ２に結合される。スレーブ・ラッチのデータはシリアル出力７８、８０で提供される。同様のＬＳＳＤ機能性を提供する限り、入出力バウンダリ・スキャン・チェーン２６内で代替ＬＳＳＤシフト・レジスタ・ラッチと信号経路指定方式も使用可能であることに留意されたい。
【００５７】
図１、図２、図３、および図６（イ）を参照すると、入出力バウンダリ・スキャン・チェーン２６は、テスト回路２２の制御レジスタ２８へのデータの提供に関連する、その一部分を含む。図６（イ）のデフォルト入出力バウンダリ・スキャン・チェーン構成では、入出力バウンダリ・スキャン・チェーン２６の８つのレジスタがその入出力リング部分５８と直列になっている。入出力バウンダリ・スキャン・チェーン２６の最後のビット４８は、制御レジスタ２８のレジスタＣＲＬ0へのC_TEST制御データの提供に関連付けられている。入出力バウンダリ・スキャン・チェーン２６の次の部分５８は、機能接続部３６と関連入出力ポートへの入出力リング・バウンダリ・スキャン・アクセスを提供する。最後に、入出力バウンダリ・スキャン・チェーン２６の残りの部分４２、４４、４６は、図６（ロ）に詳細が示されている制御レジスタ２８の残りの７つのレジスタＣＲＬ1、ＣＲＬ2、・・・ＣＲＬ7にロードすべき制御データの７つの追加ビットの提供に関連付けられている。
【００５８】
図６（ロ）を参照すると、低減入出力バウンダリ・スキャン・チェーン構成では、バウンダリ・スキャン・チェーン２６から入出力リング部分５８が省略されている。したがって、制御レジスタ２８のロードに関連する８つのデータ・ビットは、入出力リング５８の複数のＬＳＳＤレジスタによりデータをクロックする必要はなく、８つのクロック・サイクルで低減バウンダリ・スキャン・チェーン２６にシリアルにロードすることができる。
【００５９】
図６（ハ）に示すように、他の低減入出力バウンダリ・スキャン構成では、バウンダリ・スキャン・チェーン２６が単一バイパス・レジスタ４２を含み、シリアル・データが入出力バウンダリ・スキャン・チェーン２６の残りの部分をバイパスする。直列に結合された関連入出力バウンダリ・スキャン・チェーンに２つのＦＰＧＡをまとめて結合した場合、第１のＦＰＧＡの入出力バウンダリ・スキャン・チェーン全体を通過する必要はなく、第２のダウンストリームＦＰＧＡにシリアル・データをロードできるように、第１のアップストリームＦＰＧＡ用としてこの単一バイパス・レジスタ構成を選択することができる。
【００６０】
【表２】
ＦＰＧＡ制御レジスタの制御信号
制御レジスタ
-BP         １ビット・スキャン・チェーン・バイパス制御
-CNTL       制御レジスタとバウンダリ・スキャンのステアリング
-PR0, -PT0  バウンダリ・スキャン・ラッチ・アプリケーションとステアリング
-RI         ＦＰＧＡレシーバ禁止制御
-DI1        ＦＰＧＡ機能ドライバ禁止制御
-DI2        ＦＰＧＡ専用ドライバ禁止制御
-C_TEST     ＦＰＧＡチップのＭＵＸテスト可能性制御
【００６１】
テスト回路２２の制御レジスタ２８は様々な制御信号を提供する。図６（ロ）と表２を参照すると、制御レジスタ２８は、図６（ハ）に示すように単一ビット・バイパス・レジスタ４２を含む低減バウンダリ・スキャン・チェーン構成を可能にするためにバイパス制御信号BPを提供するためのレジスタＣＲＬ7を含む。もう１つのレジスタＣＲＬ6は、入出力リング５８に関連するＬＳＳＤレジスタを介してまたはそれをバイパスして入出力バウンダリ・スキャン・チェーンのデータを選択的にチャネリングするための制御信号CNTLを提供する。制御レジスタ２８の他の２つのレジスタＣＲＬ5、ＣＲＬ4は、図４に関連して前述したように、入出力バウンダリ・スキャン・チェーン２６のセルでマルチプレクサの構成を制御するためにレシーバおよび送信制御信号PR0、PT0をそれぞれ提供する。他の３つのレジスタＣＲＬ1、ＣＲＬ2、ＣＲＬ3は、表１に関連して前述したように、様々な入出力ポートのそれぞれのドライバおよびレシーバ機能を禁止するために関連のドライバおよびレシーバ禁止制御信号DI2、DI1、RI1をそれぞれ提供する。制御レジスタ２８の最後のレジスタＣＲＬ0は制御信号C_TESTを提供するが、これはそのテスト中にＦＰＧＡのパスゲート・マルチプレクサ内の所与のプルダウン・デバイスを選択的に活動化する。
【００６２】
図７ないし図８は、そこからデータを受け取るために入出力バウンダリ・スキャン・チェーン２６の関連部分に結合された第３のレベルのラッチとしての制御レジスタ２８を示している。適切なデータが入出力バウンダリ・スキャン・チェーン２６の適切なレジスタ４２、４４、４６、４８にロードされると、制御レジスタ２８にデータをクロックするためにMTESTが活動化される。ただし、データは制御レジスタ２８の内容に影響せずに入出力バウンダリ・スキャン・チェーン２６を通過することができ、MTESTがハイに移行するか、またはMTESTとTESTMOREの両方がアクティブ・ローになると、制御レジスタ２８が更新されることに留意されたい。
【００６３】
マルチプレクサ５６は、入出力バウンダリ・スキャン・チェーン２６の最後のシフト・レジスタ・ラッチ４８のシリアル入力を決定する。マルチプレクサ５６は、バウンダリ・スキャン制御信号CNTLの状態に応じて、入出力リング部分５８のシリアル入力か、または入出力バウンダリ・スキャン・チェーン２６の一部分４６のシリアル出力のいずれかに、このシリアル入力を結合する。マルチプレクサ５４は、ＦＰＧＡ用のシリアル出力SOを選択する。単一ビット・バイパス・レジスタ構成の場合、マルチプレクサ５４は、バイパス制御信号BPの状態に応じて、入出力バウンダリ・スキャン・チェーン２６の第１のレジスタ・ラッチ４２のシリアル出力にＦＰＧＡのシリアル出力SOを選択的に結合する。あるいは、マルチプレクサ５４は、シリアル出力データを提供するために入出力バウンダリ・スキャン・チェーン２６の最後のレジスタ４８のシリアル出力にＦＰＧＡのシリアル出力SOを結合する。
【００６４】
始めに電源オン時に、制御レジスタはすべて「１」に初期設定され、それによりＦＰＧＡはMTEST＝１によってその通常機能モードになる。制御レジスタに新しい値をロードすると、関連のLSSDAおよびLSSDBクロック対により、すべての制御データが入出力バウンダリ・スキャン・チェーン２６にスキャン・インされる。C_TEST用のデータは最初にスキャン・インされるビットであり、バイパス制御信号BP用のデータは最後にスキャン・インされるビットである。
【００６５】
図９は、その制御レジスタ２８に関連する部分が入出力リング部分５８と直列になっている、入出力バウンダリ・スキャン・チェーンの動作に関連するタイミング図を示す。この動作シーケンス中、拡張テスト・インタフェース制御信号TESTMOREと、バイパス制御信号BPと、バウンダリ・スキャン・ステアリング制御信号CNTLはすべて非活動状態であると想定されている。したがって、マルチプレクサ５６（図７）は最後のレジスタ４８へのシリアル入力として入出力リング部分５８のシリアル出力を選択し、マルチプレクサ５４はＦＰＧＡのシリアル出力SOとして入出力バウンダリ・スキャン・チェーンの最後のレジスタ４８のシリアル出力からのデータを選択する。このタイミング図は、３つの間隔２００、２０２、２０４から構成されている。間隔２００中、データはLSSDAおよびLSSDBクロック対のシーケンスによって入出力バウンダリ・スキャン・チェーンにシリアルにロードされる。入出力バウンダリ・スキャン・チェーンへのシリアル・ロード後、入出力バウンダリ・スキャン・チェーン２６の関連セルのデータに応じて、MTESTの後続パルス「Ｎ」が制御レジスタ２８を更新する。
【００６６】
間隔２０２中、LSSDCクロック・パルスは、関連の１次入力に提示された通りに入出力バウンダリ・スキャン・チェーン２６にデータを捕捉するためにスナップ・ショットを提供する。図８に示すように、入出力バウンダリ・スキャン・チェーンの制御レジスタ２８に関連する部分は、そのそれぞれの１次入力に提示されたデータに応じて更新される。たとえば、バイパス制御信号BPに関連するセル４２は、その１次入力がＶＤＤに結合され、したがって、LSSDCクロック・パルスに応じて「１」に更新される。同様に、次の部分４４の３つのセルは、差し迫ったバウンダリ・スキャン・チェーン・シーケンスの準備としてバウンダリ・スキャン・ステアリング制御信号CNTLとマルチプレクサ制御信号PR0、PT0を「１」に更新するために、そのそれぞれの１次入力がＶＤＤに結合されている。制御信号RI、DI1、DI2、C_TESTを提供するための制御レジスタ２６へのデータのロードに関連する部分４６、４８の残りのセルは、その現行値を保持するようにそれぞれの１次入力がそれぞれのシフト・レジスタ出力に結合されている。LSSDCクロック・パルス後、MTESTのもう１つのパルス「Ｎ」は、それぞれのＬ２ラッチを介して部分４２、４４、４６、４８のＬ１ラッチ値を制御レジスタ２８に転送する。MTESTのパルス「Ｎ」中、Ｌ１ラッチ値は、入出力バウンダリ・スキャン・チェーンの制御レジスタに関連するセルについてのみ、関連Ｌ２ラッチをフラッシュされる。入出力バウンダリ・スキャン・チェーンの他のセルでは、差し迫ったバウンダリ・スキャンの準備として関連Ｌ１ラッチからそれぞれのＬ２ラッチへデータを転送するために、後続のLSSDBクロック・パルスが必要である。
【００６７】
間隔２０４中、入出力バウンダリ・スキャン・チェーンからデータをスキャン・アウトし、同時に新しいデータをスキャン・インするために、LSSDAおよびLSSDBクロック対のシーケンスが提供される。その後、MTESTのパルス「Ｎ」がもう一度新しい値で制御レジスタを更新する。
【００６８】
入出力バウンダリ・スキャン・チェーンの代替低減構成では、図１０に示すように、制御レジスタのロードとＦＰＧＡのテストに別のシーケンスの信号を使用している。間隔２０６中、入出力バウンダリ・スキャン・チェーンのテスト動作を可能にするために、MTESTはローに保持される。入出力バウンダリ・スキャン・チェーンで「１」という値をフラッシュするように、LSSDAおよびLSSDBクロック信号は、入出力バウンダリ・スキャン・チェーンのシリアル入力に「１」を印加する間、ともにハイに保持される。間隔２０８中。LSSDAクロックはハイに保持され、LSSDBクロックはシリアル入力に「０」が印加される間、ローに保持される。したがって、入出力バウンダリ・スキャン・チェーンの第１のＬ１ラッチには「０」という値がロードされる。次に、LSSDAクロックはローを返し、LSSDBクロックの「Ｂ１」パルスは第１のＬ１ラッチの値「０」を第１のＬ２ラッチにシフトする。第２の対のLSSDAおよびLSSDBクロック・パルスは、新しい「１」という値を第１のセルにスキャン・インする間に、入出力バウンダリ・スキャン・チェーンの第１のセルの値「０」をその第２のセルに転送する。LSSDBクロックの第２の「Ｂ２」パルス後、入出力バウンダリ・スキャン・チェーンの第１および第２のセルには、１と０がそれぞれロードされる。
【００６９】
間隔２１０中、MTESTの「Ｎ１」パルスは、入出力バウンダリ・スキャン・チェーンの関連セルのデータに応じて制御レジスタを更新する。制御レジスタのビット・バイパスBP部分とバウンダリ・スキャン・ステアリング制御CNTL部分は、１と０でそれぞれ更新される。バウンダリ・スキャン・ステアリング制御信号CNTLをローに保持した状態で、マルチプレクサ５６（図７を参照）は入出力バウンダリ・スキャン・チェーンの一部分４６のシリアル出力を入出力リング部分５８をバイパスして一部分４８のシリアル入力に印加する。後続のバウンダリ・スキャン中、それに応じて制御レジスタを更新するために、制御レジスタのロードに関連する入出力バウンダリ・スキャン・チェーンのセルに新しいデータがスキャン・インされる。
【００７０】
前述のように、応用例によっては２つまたはそれ以上のフィールド・プログラマブル・ゲート・アレイが使用され、第１のアップストリーム・フィールド・プログラマブル・ゲート・アレイに関連する入出力バウンダリ・スキャン・チェーンが第２のダウンストリームＦＰＧＡの入出力バウンダリ・スキャン・チェーンにシリアルに接続される。たとえば、テスト中に、第２のＦＰＧＡの入出力バウンダリ・スキャン・チェーンをロードし、第１のＦＰＧＡの入出力バウンダリ・スキャン・チェーンをバイパスすることが必要になる場合もある。したがって、第１のＦＰＧＡでは、単一ビット・バイパス・レジスタのみを含む代替低減入出力バウンダリ・スキャン・チェーン構成を選択するために、単一ビット・バイパス制御信号BPが更新されている。図１１は、このバイパス構成の提供に関連する信号のシーケンスを示すものである。間隔２１２中、入出力バウンダリ・スキャン・チェーンのセルは「１」でフラッシュされる。間隔２１４中、LSSDAおよびLSSDBクロック・パルス対は、第１のＦＰＧＡの入出力バウンダリ・スキャン・チェーンの第１のセルに「０」という値をロードする。MTESTのパルス「Ｎ１」は第１のＦＰＧＡの制御レジスタを更新し、バイパス制御信号BPを「０」に設定する。
【００７１】
間隔２１６中、後続のバウンダリ・スキャン動作ＢＳ１により、データは第１のＦＰＧＡの単一ビット・バイパス・セルを通過して、第２のダウンストリームＦＰＧＡに関連する入出力バウンダリ・スキャン・チェーンに入る。同じバウンダリ・スキャン動作ＢＳ１中、バイパス制御信号に関連する第１のＦＰＧＡの１つのバイパス・レジスタに新しいデータをロードすることができ、したがって、MTESTの後続Ｎ２パルスはバイパス制御信号BPの状態を変更することができる。上記の例では、それぞれのバウンダリ・スキャン・チェーンがシリアルに接続された第１および第２のＦＰＧＡについて説明してきた。ただし、このようなＦＰＧＡが３つ以上の場合にも同一原理が適用可能であることに留意されたい。
【００７２】
次の項では、ＦＰＧＡの様々なテスト構成と、それに関連する制御レジスタの信号用の値について説明する。
【００７３】
【表３】
ＦＰＧＡ制御レジスタの状態表
（電源オンまたは構成ＭＯＤ０後のデフォルト値は「BSまたはSN」である。）
状態        -BP   CNTRL   -PR0,-PT0   -RI,-DI1,-DI2   -C_TEST
BSまたはSN   1      1       (1,1)        (1,1,1)         1
CARD         1      1       (1,0)        (1,1,1)         x
CHIP         1      1       (0,1)        (x,0,1)         0
ISLT         1      1       (x,x)        (0,0,0)         1
REG-ONLY     1      0       (1,1)        (1,1,1)         1
BYPASS       0      x       (1,1)        (1,1,1)         1
【００７４】
制御レジスタによってもたらされるテスト構成：
制御レジスタの制御信号のすべて（すなわち、BP、CNTL、PR0、PT0、RI、DI1、DI2、CTEST）が１の場合、表３に示すように、制御レジスタは、バウンダリ・スキャンＢＳまたはスナップ・ショットＳＮ動作を可能にするためのその通常状態またはデフォルト状態になっている。バウンダリ・スキャン動作では、LSSDAおよびLSSDBクロック対が入出力バウンダリ・スキャン・チェーンを通ってデータを伝播する。スナップ・ショット動作では、LSSDCクロック・パルスが関連の１次入力で受け取った通りに入出力バウンダリ・スキャン・チェーンにデータを捕捉する。入出力ポートに関連するレシーバまたはドライバのいずれも禁止されないように、レシーバおよびドライバ禁止制御信号RI、DI1、DI2はすべてハイになる。マルチプレクサ制御信号PT0、PR0（図４に関連して前述したように入出力バウンダリ・スキャン・チェーンに関連するセルのマルチプレクサを制御するため）はハイになり、入出力バウンダリ・スキャン・チェーンのそれぞれのシフト・レジスタ・ラッチを関連の入出力データ経路から引き離しておく。
【００７５】
送信制御信号PT0がローに設定されると、入出力バウンダリ・スキャン・チェーンはパラメトリック・カード・テストCARD用に構成される。マルチプレクサ６０（図４を参照）は、トライステート・バッファ８２を介して入出力ポート３６に向かって出力すべきデータとして、第１のＬＳＳＤレジスタ７２のスレーブ・ラッチＬ２のデータを選択する。マルチプレクサ８４は、第２のＬＳＳＤレジスタ８８のスレーブ・ラッチＬ２のデータ内容に応じてトライステート・バッファ８２を使用可能にする。レシーバ制御信号PR0はハイのままになるので、したがって、LSSDCクロック・パルスは、マルチプレクサ６４および６８を介して入出力ポート３６'から受け取った通りに第１のＬＳＳＤレジスタ７２のマスタ・ラッチＬ１にCARDデータを捕捉する。第２のＬＳＳＤレジスタ８８のマスタ・ラッチＬ２は、前のバウンダリ・スキャン動作中にスキャン・インした通りに、その関連スレーブ・ラッチＬ２によってそれに提示されたトライステート制御信号を捕捉する。
【００７６】
もう一度表３を参照すると、CHIPテスト中、レシーバ制御信号PR0と第１のドライバ禁止制御信号DI1はともにローに保持され、チップ内からのデータはその関連機能入出力ポートを励起できなくなる。レシーバ制御信号PR0をローに保持した状態で、マルチプレクサ６４（図４）は、第１のＬＳＳＤレジスタ７２のスレーブ・ラッチＬ２によって提供された通りに、データをＦＰＧＡ（チップ）に転送する。PT0をハイに保持した状態で、LSSDCクロック・パルスは、マルチプレクサ６０および６８を介してＦＰＧＡ（チップ）内から受け取った通りに第１のＬＳＳＤレジスタ７２のマスタ・ラッチＬ１にデータを捕捉する。第２のＬＳＳＤレジスタ８８のマスタ・ラッチＬ１は、マルチプレクサ８４を介してチップ内から提供された通りにトライステート制御データを捕捉する。
【００７７】
チップ分離テストISLTでは、関連のレシーバおよびドライバ禁止制御信号RI、DI1、DI2をアクティブ・ローに保持することにより、入出力ポートのすべてのレシーバとドライバが禁止される。この条件下では、それぞれの入出力ポートが分離されたハイ・インピーダンス状態用に設定される。したがって、それに関連するシンク電流またはソース電流を検出することによって、ポートの障害を判定することができる。
【００７８】
表３の残りの２つの状態は、レジスタ専用状態REG-ONLYとバイパス状態BYPASSを含む。レジスタ専用状態REG-ONLYは、前述のようにバウンダリ・スキャン・ステアリング制御信号CNTLがローに設定されたときに得られ、入出力バウンダリ・スキャン・チェーンは制御レジスタのロードに関連する部分のみを含むその低減構成用に設定される。バイパス状態BYPASSでは、前に説明したように、入出力バウンダリ・スキャン・チェーンは単一ビット・バイパス・レジスタのみを含むその追加低減構成になっている。
【００７９】
テストに関連するＦＰＧＡの追加の特徴：
図１２を参照すると、ＦＰＧＡ１０のプログラマブル資源１２は、５６×５６のアレイに配置された複数のプログラマブル論理セルを含む。この論理セルのアレイはセクタ１１２に分割され、それぞれのセクタは８×８にグループ化した論理セルを含む。この場合も、このような論理セルの詳細については、"Programmable Logic Cell"という名称の米国特許出願の上記の部分に記載されている。
【００８０】
図１３は、プログラマブル論理セル１１６1,1〜１１６8,8からなる単一セクタ１１２を示している。たとえば、論理セル１１６1,6は、垂直相互接続導体１１８ａおよび１１８ｂと水平相互接続導体１２０ａおよび１２０ｂによって囲まれている。アレイ内の任意の２つの論理セルと関連入出力ポートとの間の接続を行うために、アレイの様々な行と列の間には、同様の水平および垂直相互接続導体が位置決めされている。すべての相互接続導体が相俟ってプログラマブル・アレイのプログラマブル相互接続ネットワーク全体が形成され、そのネットワークは"Programmable Array Interconnect Network"という名称の米国特許出願の上記の部分により実現することができる。以下に詳述するように、ネットワーク内でレピータまたはスイッチ回路１３６を使用することができる。
【００８１】
それぞれの論理セル１１６のプログラマブル・マルチプレクサ（図示せず）は、それぞれの論理セルと論理セルを取り囲むバスの関連信号線との間の選択結合を行う。これらのマルチプレクサは、パスゲート・マルチプレクサとして実現され、フィールド・プログラマブル・ゲート・アレイ内の様々なマルチプレクサのテストと障害分離を支援するために制御レジスタ２８によって提供されるマルチプレクサ・テスト制御信号C_TESTに応じて選択的に使用可能になる追加のプルダウン（またはプルアップ）パスゲート・デバイス（図示せず）を含む。このようなプルダウン（またはプルアップ）マルチプレクサの特徴と関連のテスト手順の詳細については、"Modeling and Test Generation for MOS Transmission Gate Stuck-Open Faults"（IEE PROCEEDINGS-G, Vol. 139, No. 1, pp. 17-22, （１９９２年２月））というタイトルのM. Belkadi他による参考文献に記載されているが、この参考文献は参照により本明細書に組み込まれる。
【００８２】
プログラマブル・ゲート・アレイ内の１行分のコア・セルの一方の側に関連するバス１２０ａを図１４に示す。レピータ１３６ａなどのレピータまたはスイッチ回路は、８つのコア・セルごとの、すなわち、各セクタ境界ごとの、ローカル・バスＬ１および高速バスＥ１に関連付けられている。レピータ・ラッチ１５０（矢印で表す）は関連ローカル・バス内の各レピータ回路に並列に設けられている。たとえば、レピータ・ラッチ１５０1は、ローカル・バスＬ１の一部分１５２と一部分１５６との間に結合されたＬＳＳＤレジスタを含む。同様のレピータ・ラッチ１５０2、１５０3、１５０4は、レピータ回路１３６ｂおよび１３６ｃ内のローカル・バスＬ２、Ｌ３、Ｌ４にそれぞれ関連付けられて示されている。
【００８３】
レピータ・スキャン・チェーン：
図１４および図１を参照すると、複数のレピータ・ラッチ１５０1、１５０2、・・・１５０24は、まとめてシリアル・スキャン・チェーン、たとえば、レピータ・スキャン・チェーン３０1として構成されている。このレピータまたは相互接続のスキャン・チェーンにより、それぞれのレピータ・ラッチへのシリアルでのデータのスキャン・インとそれからのスキャン・アウトが可能になる。順次レピータ・ラッチのそれぞれは、そのシリアル出力が関連シリアル・スキャン・チェーン内の後続レピータ・ラッチのシリアル入力に接続されている。スキャン・チェーン（３０1）の第１のレピータ・ラッチ（１５０1）のシリアル入力は関連レピータ・スキャン・チェーンのスキャン入力を提供し、スキャン・チェーン（３０1）の最後のレピータ・ラッチ（５０24）のシリアル出力は関連レピータ・スキャン・チェーンのスキャン出力を提供する。レピータ・スキャン・チェーン３０のシリアル入力とシリアル出力は、関連の列および行のスキャン・チェーンに応じて識別される。レピータ・スキャン・チェーンの７つの列へのシリアル入力は、相互接続部ＳＩＴＯＰ（０〜７）によって提供される。列レピータ・スキャン・チェーン用の関連シリアル出力は相互接続部ＳＯＢＯＴ（０〜７）によって提供される。行レピータ・スキャン・チェーン用のシリアル入力と出力は同様に相互接続部ＳＩＲＩＧＨＴ（０〜７）とＳＯＬＥＦＴ（０〜７）によってそれぞれ提供される。レピータ・スキャン・チェーン内のそれぞれのレピータ・ラッチは、それぞれのレピータ・スキャン・チェーンの同期および並列ＬＳＳＤスキャン動作を可能にするために、LSSDA、LSSDB、LSSDCクロックを共用する。それぞれのレピータ・スキャン・チェーンのＬＳＳＤクロックは、MTESTがアクティブ・ローのときに関連の入出力相互接続部LSSDA、LSSDB10、LSSDCを介して提供される。レピータ・スキャン・チェーンの動作は、レピータ・スキャン・チェーン制御REPTにより可能になる。レピータ・スキャン・チェーンのこれらの相互接続部へのアクセスは、MTESTとTESTMORE制御信号がともにアクティブ・ローのときに関連の複数使用入出力ポート「ｍ」で提供される。
【００８４】
各レピータ・ラッチは、その１次出力が関連ローカル・バスのその一部分に選択的に結合できるようにするために、その関連構成データに応じて個別にプログラム可能である。各レピータ・ラッチ用の構成データは、構成ＳＲＡＭメモリ１４の関連メモリ・セル内に格納される。レピータ・スキャン・チェーンの詳細には、"Programmable Array Interconnect Latch"という名称の米国特許出願の上記の部分に記載されている。
【００８５】
構成スキャン・チェーン：
前述のように図１を参照すると、構成論理回路１６とデコーダ／シーケンサ１８により、ＦＰＧＡ１０のプログラマブル資源を構成するために構成データをＳＲＡＭ１４にロードすることができる。上記の参考文献"Application Note AT6000 Series Configuration"と"Versatile and Efficient Cell-to-Local Bus Interface in a Configurable Logic Array"という名称の米国特許第５２９８８０５号では、関連のＳＲＡＭメモリ１４にアクセスするための構成論理回路の既知の動作モードが開示されている。デコーダ／シーケンサ１８は、"Continuous Address Structure With Folding"という名称の米国特許出願の上記の部分に記載されているように、ＦＰＧＡの様々なプログラマブル資源１２に対しメモリ１４を効率よく割り振ることができる。ＬＳＳＤレジスタ・ラッチは、構成論理回路の様々な領域の境界を示しセグメント化するシリアル・スキャン・チェーンとして配置されている。この構成スキャン・チェーン２４により、構成論理回路のシリアル・スキャン・アクセスと機能検証が可能になる。
【００８６】
構成スキャン・チェーン２４のＬＳＳＤシフト・レジスタは、E. B. Eichelberger他による"A Logic Design Structure For LSI Testability"（14th Design Automation Conference Proceedings, １９７７年６月２０日、２１日、２２日、New, Orleans, LA, IEEE Cat. No. 77, CH 1216-1C, pp. 462-468）、R. W. Bassett他による"Boundary-Scan Design Principles For Efficient LSSD ASIC Testing"（IBM Journal of Research and Development, Vol. 34, No. 2/3, １９９０年３月／５月、pp. 339-354）、Eichelbergerに対して交付された"Level Sensitive Logic System"という名称の米国特許第３７８３２５４号という参考文献に示されている原理に応じて実現され動作する。
【００８７】
表１を参照すると、構成スキャン・チェーン２４へのアクセスは、構成スキャン入力SICONFIGおよび構成スキャン出力SOCONFIGを介して提供される。これらのスキャン・ポートにより、構成スキャン・チェーンとの間のＬＳＳＤアクセスが可能になる。構成スキャン・チェーンの動作は、その関連構成制御信号CONFGに応じて選択的に可能になる。構成スキャン・チェーンの動作に関連するクロック信号としては、LSSDA、LSSDCと、LSSDB10、LSSDB1、LSSDB2、LSSDB3などがある。これらの関連クロック相互接続部は、MTESTとTESTMOREがともにアクティブのときに専用「ｄ」および複数使用「ｍ」入力ポートで使用可能になる。
【００８８】
既知のＦＰＧＡの場合、その動作は、通常、所望のユーザ定義の回路を実現するためにＦＰＧＡを構成するための関連構成論理回路によりＳＲＡＭ１４に構成データをロードすることを伴う。その結果得られる回路が正しく機能しない場合、ＦＰＧＡのどこで問題が発生しているかは明らかではなかった。適正な回路構成および動作は、それぞれのＦＰＧＡサブシステムに依存する。ＳＲＡＭ１４に構成データを適切にロードするためには、構成論理回路が適正に動作していなければならない。ＳＲＡＭ１４は、構成データを格納し、関連構成データに応じてＦＰＧＡのプログラマブル資源を励起できるものでなければならない。最後に、プログラマブル資源と相互接続部は、ユーザ定義回路内にその所望の機能性を実現するためにプログラム可能かつ動作可能でなければならない。したがって、ＦＰＧＡの様々なサブシステムの相互依存度が高くなる。本発明によれば、ＦＰＧＡ内の様々なサブシステムの相互依存度を考慮に入れて、ＦＰＧＡの各サブシステムの適正な機能性を系統的に判定するために、一連のテストが適当な分割征服方式で実現される。
【００８９】
この説明の次の部分では、上記で特徴づけられた様々なサブシステムによりＦＰＧＡをテストするためのテスト方法について説明する。
【００９０】
テスト方法：
ＦＰＧＡのテストを実行する場合、外部テスタはＦＰＧＡのすべてのピンまたはその縮小セットにアクセスすることができる。図１５は、外部テスタがＦＰＧＡのすべてのピンにアクセスする場合のタイミング図を示している。MTESTがローの場合、ＦＰＧＡはそのテスト・モードになっており、LSSDA、LSSDC、LSSDBクロック・シーケンスはＦＰＧＡ内のそれぞれのスキャン・チェーンのＬＳＳＤ動作を提供する。間隔Ｔ中にTESTMOREがローになっている間、複数使用入出力ポート（表１を参照）に関連する入出力バウンダリ・スキャン・チェーンのその部分のデータは関連の入出力相互接続部に印加されない。ただし、機能入出力ポート「ｂｓ」に関連する入出力バウンダリ・スキャン・チェーンの残りの部分のデータは、受信および送信マルチプレクサ制御信号PR0およびPT0の状態に応じて、それぞれの入出力相互接続部に印加される。さらに、TESTMOREがローの場合、レシーバおよびドライバ禁止制御信号RI、DI1、DI2と、チップ・マルチプレクサ・テスト制御信号C_TESTを受け取るために直接入力が使用可能になる。間隔Ｔ後、MTESTはハイに戻り、直接入力制御信号に関連する制御レジスタ２８のラッチは、間隔Ｔ中に直接印加された制御信号用の値を提供する。
【００９１】
ＦＰＧＡの代替テスト動作では、外部テスタはテスト中にＦＰＧＡの専用「ｄ」および複数使用「ｍ」入出力ポートにのみアクセスする。図１６を参照すると、外部テスタは、PR0、PT0、RI、DI1、DI2、C_TEST用の所望の値をそこにロードするために間隔２１８中に入出力バウンダリ・スキャン・チェーンのＬＳＳＤ動作を行う。次に、これらの値はMTESTのパルス「Ｎ」によって制御レジスタ２８にラッチされ、表３に関連して前述したようにＦＰＧＡ用の所望のテスト状態（すなわち、スキャン、チップ、カード、または分離テスト）を確立する。
【００９２】
間隔２２０中、外部テスタに拡張テスト・インタフェース、すなわち、複数使用ポート「ｍ」を提供し、ＦＰＧＡの追加テストを可能にするために、TESTMOREはローに保持される。外部テスタは、（後述するように）間隔２２０中にＦＰＧＡをテストするために所与のＬＳＳＤテスト動作を実行し、レシーバおよびドライバ禁止制御信号に必要な値を直接提供する。TESTMOREがローの場合にレシーバおよびドライバ禁止制御信号に提供された値は、その後のＦＰＧＡのバウンダリ・スキャン更新または構成によって変更されない限り、TESTMOREがハイに戻った後もそのまま有効になる。間隔２２２は、図９に関連して前述した間隔２０２に対応する。
【００９３】
テスト中に外部テスタによってＦＰＧＡのピンのすべてまたは縮小セットのいずれがアクセスされるかにかかわらず、図１５および図１６の間隔Ｔ中に１組の各種ＬＳＳＤテスト動作を提供することができる。図１７を参照すると、TESTMOREがアクティブ・ローのときに、様々なレピータ・スキャン・チェーン３０の動作を可能にするためにREPTをアサートすることができる。間隔２２４中、LSSDAおよびLSSDBクロック・シーケンスは、それぞれのスキャン入力、すなわち、ＳＩＴＯＰ（０〜７）およびＳＩＲＩＧＨＴ（０〜７）を介してレピータ・スキャン・チェーンにデータをスキャン・インする。次に、レピータ・スキャン・チェーンの各ＬＳＳＤレジスタの内容は、ＳＲＡＭ１４に格納されたそれぞれのレピータ・ラッチ構成データに応じて、対応するローカル・バス・セグメントに印加される。
【００９４】
間隔２２６中、LSSDCクロック・パルスは、それぞれのシフト・レジスタの１次入力に提示された通りに様々なバス・セグメントのデータをレピータ・スキャン・チェーンに捕捉する。後続のLSSDBクロック・パルスは、差し迫ったスキャン・アウトの準備として、捕捉したデータをＬＳＳＤレジスタのマスタ・ラッチからそれぞれのスレーブ・ラッチにシフト・インする。間隔２２８中、LSSDAおよびLSSDBクロック・パルスからなるシーケンスは、関連のスキャン出力ＳＯＢＯＴ（０〜７）およびＳＯＬＥＦＴ（０〜７）を介して様々なレピータ・スキャン・チェーンからデータをスキャン・アウトする。
【００９５】
プログラマブル相互接続ネットワークのバス構成をテストするためにこのようなレピータ・スキャン・チェーン動作を使用する。既知のデータが様々なレピータ・スキャン・チェーンにスキャン・インされ、バス相互接続部の関連セグメントに印加される。バス相互接続部は、同一または異なるレピータ・スキャン・チェーンのそれぞれのＬＳＳＤシフト・レジスタ・ラッチの１次出力と１次入力との間でデータを伝播するために事前に構成されている。次に、データは、受信側ＬＳＳＤシフト・レジスタ・ラッチによって捕捉され、回復され、バス相互接続部のそれぞれのセグメントがデータを伝播するために適切に機能しているかどうかを判定するために印加したデータと比較される。
【００９６】
代替応用例では、ＦＰＧＡの所与のプログラム済み論理回路のテスト中にレピータ・スキャン・チェーンが使用される。このような応用例では、図１７の間隔２２４と２２６の間に追加のシステム・クロック動作（図示せず）を設けることもできる。既知のデータは、所与のレピータ・スキャン・チェーンにスキャン・インされ、所与のプログラム済み論理回路に印加される。次に、所与のデータをそこで処理するために、任意のシステム・クロック動作を設けることもできる。所与のプログラム論理回路による適切な処理の後、後続のLSSDCクロック・パルスが所与のプログラム済み論理回路によって提供されたデータを受信側レピータ・スキャン・チェーンに捕捉する。その後、この捕捉結果データはスキャン・アウトされ、回復され、所与のプログラム済み論理回路の適正な機能性を判定するために分析される。
【００９７】
図１５および図１６のタイミング図の間隔Ｔ中に実行可能なもう１つのＬＳＳＤ手順は、構成論理回路１６、１８をテストするための構成スキャン・チェーン２４（図１）の動作を含む。図１８のタイミング図の間隔２３０では、構成スキャン・チェーンの動作を可能にするために構成制御信号CONFGがローに保持される。そのシリアル入力SICONFIGに応じてデータを構成スキャン・チェーンにスキャン・インするために、LSSDAおよびLSSDBクロック・パルスからなるシーケンスが用意されている。このようにして、移行条件をシミュレートするためにそれに印加された既知のテスト・ベクトルによって、構成論理回路の状態マシンが所定の状態に設定される。理論上では、既知のテスト・ベクトルに応じて状態マシンが所定の状態から後続の状態に移る必要がある。間隔２３２中、LSSDCクロック・パルスの次に、関連状態マシンのデータを適切に捕捉するために時間オフセットが変化する一連の後続LSSDBクロック・パルスが続く。複数のＢクロックは、構成論理回路の様々なドメインに関連付けられ、構成論理回路のタイミング要件と適合するように時間的にオフセットされている。したがって、構成スキャン・チェーンのＬＳＳＤ設計は、"A Logic Design Structure For LSI Testability"、"Boundary-Scan Design Principles For Efficient LSSD ASIC Testing"、米国特許第３７８３２５４号という上記の参考文献に開示されたＬＳＳＤ方法の要件に合致する。間隔２３４では、構成論理回路の結果データを回復するために、LSSDAおよびLSSDBクロック・パルスからなるシーケンスが構成論理スキャン・チェーンからデータをスキャン・アウトする。次に、印加したテスト・ベクトルに応じて構成論理回路が適当な状態に合わせて適切に順序付けられているかどうかを判定するために、結果データが検査される。
【００９８】
本発明が使用する追加のテスト方法は、ＳＲＡＭ１４のテストを可能にするための構成論理回路の既知の動作モードであるモード７を含む。表１を参照すると、MTESTはハイに保持され、ＦＰＧＡを構成モードにするために構成選択信号ＣＳはローに保持される。ＦＰＧＡが構成モードになっている場合、構成論理回路は３つのモード選択入力Ｍ０、Ｍ１、Ｍ２を介してモード７状態に入る。モード７を選択すると、外部テスタは、関連のアドレスおよびデータ・ポート、すなわち、ＡＤＤＲ（０〜１６）およびＤＡＴＡ（０〜７）を介してＳＲＡＭ１４への読取り／書込みアクセスが許可される。ＳＲＡＭ１４をテストするため、まずＳＲＡＭの所与の位置に既知のデータが格納される。その後、この所与の位置からデータが読み取られ、ＳＲＡＭが正しく動作しているかどうかを判定するためにそこに事前にロードされた既知のデータと比較される。モード７とそれに関連する動作については、"Application Note AT6000 Series Configuration"というタイトルの参考文献とGaverick他に交付された"Versatile and Efficient Cell-to-Local Bus Interface in a Configurable Logic Array"という名称の米国特許第５２９８８０５号の上記の部分に詳しく記載されている。
【００９９】
本発明内で使用する様々なテスト方法について示してきたので、この開示の次の項では、プログラマブル・ゲート・アレイをテストするために上記のテスト方法を使用するテスト・シーケンスについて説明する。
【０１００】
テスト・シーケンス：
前述のように、ＦＰＧＡの様々なサブシステムは互いに相互依存度が高い。本発明は、このようなサブシステムの相関依存度を考慮に入れて、ＦＰＧＡの様々なサブシステムをテストするための一連のテスト方法を提供する。電源オン時に本発明によるＦＰＧＡの内部ＳＲＡＭ１４（図１を参照）は、そのすべての位置が既知の既存状態に設定されて初期設定される。外部テスタは、MTESTをローに保持することにより、ＦＰＧＡをテストに使用可能にする。次に、外部テスタは、関連相互接続部であるスキャン・インＳＩと、スキャン・アウトＳＯと、それぞれクロック相互接続部LSSDA、LSSDB10、LSSDCに応じた適切なＬＳＳＤクロックとを介してスキャン・チェーンによってデータを伝播することにより、入出力バウンダリ・スキャン・チェーン２６のシリアル・スキャンの機能性をテストする。入出力バウンダリ・スキャン・チェーンにスキャン・インされたシリアル・データは、その後、スキャン・アウトされ、回復される。次に、回復されたデータは、入出力バウンダリ・スキャン・チェーンの適正なスキャン機能性を判定するために、スキャン・インされたデータと比較される。
【０１０１】
次に、ＦＰＧＡの入出力ポートは、そのデフォルト構成に応じてテストされる。入出力ポートは、ＳＲＡＭ１４の関連位置に格納された構成データに応じてプログラム可能である。電源オン時にＳＲＡＭ１４は、既知のリセット状態に初期設定される。したがって、ＦＰＧＡの入出力ポートはそのデフォルト構成になっている。前述のように、入出力バウンダリ・スキャン・チェーン２６のセルに関連するマルチプレクサは、制御レジスタ２８によって提供される送信およびレシーバ制御信号PT0およびPR0によってそれぞれ制御される。電源オン時にそれぞれの制御信号は既知のデフォルト状態に設定される。同様に、やはり制御レジスタ２６によって提供されるレシーバおよびドライバ禁止制御信号（RI、DI1、DI2）は、入出力ポートのデフォルト構成をテストするのに必要なデフォルトの電源オン値を提供する。複数使用入出力ポート「ｍ」は、拡張テスト・インタフェース制御信号TESTMOREをハイに保持することにより、その機能的設定に維持される。したがって、表１にリストしたバウンダリ・スキャン「ｂｓ」および複数使用ポート「ｍ」を含む機能入出力ポートの機能性をそのデフォルト構成に応じてテストするために、入出力バウンダリ・スキャン・チェーンが使用される。
【０１０２】
それぞれのデフォルト構成に応じてＦＰＧＡの入出力バウンダリ・スキャン・チェーンと機能入出力ポートの機能性を判定すると、本発明のテスト・シーケンスは、関連の構成スキャン・チェーン２４による構成論理回路１６、１８のテストに移行することが好ましい。テスト・イネーブル制御信号MTESTはローに保持され、拡張テスト・インタフェースである複数使用入出力ポート「ｍ」を使用可能にするために拡張テスト・インタフェース制御信号TESTMOREもローに保持される。したがって、構成スキャン入力SICONFIG、構成スキャン出力SOCONFIG、ならびに関連ＬＳＳＤクロック線LSSDA、LSSDB10、LSSDC、LSSDB1、LSSDB2、LSSDB3により、構成スキャン・チェーンへのアクセスが可能になる。構成スキャン・チェーンのＬＳＳＤ動作は、構成イネーブルCONFGをローに保持することにより、可能になる。図１８に関連して前述したように、関連の状態マシンの状態シーケンスをテストするために、所定のテスト・ベクトルが構成スキャン・チェーンにスキャン・インされ、構成論理回路に印加される。構成論理回路によってもたらされる結果データは、構成スキャン・チェーンを介して捕捉され、構成論理回路の適正な機能性を判定するために予想結果データと比較される。
【０１０３】
構成論理回路の機能性を判定すると、次のステップは、ＳＲＡＭ１４をテストし、ＦＰＧＡの様々なプログラマブル資源を構成するためにそこの構成データをロードして格納できる能力を検証することを含む。このテストを開始するため、テスト・イネーブル制御信号MTESTはハイに保持され、ＦＰＧＡの構成動作モードを選択するために構成選択CSはローに保持される。次に、前述のようにモード７動作を可能にするために、適切なデータがモード選択入力Ｍ０、Ｍ１、Ｍ２に印加される。ＳＲＡＭのモード７テスト中、そこに構成データを受け取って保持するためのＳＲＡＭの能力を検証するために、様々な所定のテスト・ベクトルがＳＲＡＭの様々な位置に書き込まれ、そこから読み取られる。この時点で、ＦＰＧＡの構成論理回路とメモリ・サブシステムの機能テストは完了し、ＦＰＧＡの機能サブシステムを構成するために構成データをＳＲＡＭのロードする能力の検証が完了している。
【０１０４】
従来のテストでは、構成論理回路とＳＲＡＭの機能性を判定する前に、それぞれのデフォルト構成に応じて入出力ポートのテストが行われていた。この場合、次のステップでは入出力ポートに戻り、それぞれの各種プログラマブル構成に応じて入出力ポートをさらにテストする。ＳＲＡＭ１４には、テストすべき特定のプログラマブル構成の入出力ポートをプログラミングするのに必要な構成データがロードされる。このようなテスト中、入出力ポートの所望のバウンダリ・スキャン・パラメトリック・テストを可能にするために、レシーバおよびドライバ禁止制御信号RI、DI1、DI2と、マルチプレクサ受信および送信制御信号PR0、PT0が設定される。
【０１０５】
プログラマブル入出力ポートの構成例としては、高い方の電源電圧へのプロアップ・デバイスまたはアースへのプルダウンデバイスを使って構成されるか、あるいは所与の出力インピーダンスが得られるように構成された入出力ポートを含む。適切なデータを入出力ポートに送信してこのようなプログラム済み構成をテストするか、あるいは構成したデータをそこからラッチして回復するために、入出力バウンダリ・スキャン・チェーンが使用される。LSSDCクロック・パルスに応じてデータをラッチすると、入出力バウンダリ・スキャン・チェーンは、送信および受信制御信号PT0およびPR0の状態と、制御レジスタによってもたらされるレシーバおよびドライバ禁止制御信号RI、DI1、DI2の状態とに応じて、ＦＰＧＡの内部データまたは入出力ポートのデータを捕捉する。
【０１０６】
テスト・シーケンスの次のステップでは、レピータ・スキャン・チェーン３０のシリアル・スキャン機能性を検査する。複数使用入出力ポート「ｍ」に関連する拡張テスト・インタフェースを可能にするために、テスト・イネーブル信号MTESTと拡張テスト・インタフェース・イネーブル信号TESTMOREがローに保持される。それぞれのレピータ・スキャン・チェーンの動作を可能にするために、レピータ・イネーブルREPTがローに保持される。シリアル・データは、それぞれのシリアル入力ＳＩＴＯＰ（０〜７）とＳＩＲＩＧＨＴ（０〜７）により、レピータ・スキャン・チェーンにスキャン・インされる。それぞれのレピータ・スキャン・チェーンによりシリアル・データをシフトするために、適切なLSSDAおよびLSSDBクロック・パルスが提供される。スキャン・アウトされたデータは回復され、レピータ・スキャン・チェーンのスキャン・シフト機能性を判定するためにスキャン・インされたデータと比較される。レピータ・スキャン・チェーンのシリアル・データ経路が検証された場合、次にＦＰＧＡのプログラマブル相互接続部のテスト中にレピータ・スキャン・チェーンが使用される。
【０１０７】
プログラマブル相互接続部をテストする場合、ＦＰＧＡの入出力ポートと、入出力バウンダリ・スキャン・チェーン２６のセルと、レピータ・スキャン・チェーン３０のシフト・レジスタ・ラッチとの間の所与のプログラマブル相互接続部を構成するために、まず構成データがＳＲＡＭ１４（図１）にロードされる。より具体的には、機能入出力ポートとレピータ・スキャン・チェーンのシフト・レジスタ・ラッチとの間、入出力バウンダリ・スキャン・セルとレピータ・レジスタ・スキャン・チェーンのシフト・レジスタ・ラッチとの間、または第１の送信レピータ・スキャン・チェーンのシフト・レジスタ・ラッチと第２の受信レピータ・スキャン・チェーンの後続シフト・レジスタ・ラッチとの間で、プログラマブル相互接続部が構成される。その後、関連の入出力ポート、入出力バウンダリ・スキャン・セル、または第１の送信レピータ・スキャン・チェーン、あるいはそのすべてにより、それぞれの構成済み相互接続部の入力側にテスト・データが印加される。このテスト・データは、関連の入出力ポート、入出力バウンダリ・スキャン・セル、または送信レピータ・スキャン・チェーン、あるいはそのすべての適切な構成に応じて印加される。その後、それぞれの構成済み相互接続部の出力側の結果データは、関連の受信レピータ・スキャン・チェーンのシフト・レジスタ・ラッチにラッチされる。次に、このラッチされたデータがスキャン・アウトされ、回復され、構成済み相互接続部の適切な機能性を判定するために相互接続部の入力側に印加されたテスト・データと比較される。このように相互接続部を構成し、テスト・ベクトルを印加し、回復し、結果データと比較するというシーケンスは、ＦＰＧＡのプログラマブル相互接続部の様々な構成の適正な機能性を判定するために、複数回続行される。
【０１０８】
代替手順では、テスト・データが構成済み相互接続部を通過する方向が反対になる。すなわち、送信レピータ・スキャン・チェーンと、関連の受信側入出力ポート、入出力バウンダリ・スキャン・セル、第１のレピータ・スキャン・チェーンとの間を通過する。複数の関連レピータ・スキャン・チェーン・ストリングを同時かつ並列に動作させることにより、複数の構成済み相互接続部を並列にテストすることが好ましい。
【０１０９】
次に、相互接続部のテストに使用したのと同様のステップを使用して、ＦＰＧＡ１０の論理セル１１６がテストされる。ＳＲＡＭ１４には、論理セルを所望の論理構成にプログラミングするための構成データがロードされる。ＦＰＧＡのプログラマブル相互接続部は、入力と出力のレピータ・スキャン・チェーン間で論理セルのインタフェースを取るために同様に構成される。代替構成では、プログラマブル相互接続部のテストに関連して前述したものと同様に、関連の論理セル１１６との間でデータを印加／受信するために入力または出力レピータ・スキャン・チェーンの代わりに入出力ポートまたは入出力バウンダリ・スキャン・チェーンが使用される。図１９を参照すると、論理セル１１６は関連レピータ・スキャン・チェーン３０のシフト・レジスタ・ラッチ１５０間に結合された状態で示されている。
【０１１０】
論理セル１１６と関連の相互接続部を適切に構成すると、関連のレピータ・スキャン・チェーン３０にシリアルに所定のテスト・ベクトルがスキャン・インされる。それぞれの相互接続部を介して関連のプログラム済み論理セル１１６にそのデータを印加するために、それぞれの構成データに応じてレピータ・スキャン・チェーンのシフト・レジスタ・ラッチが構成される。プログラム済み論理セル１１６による適切な処理後、論理セル１１６によってもたらされた結果データを関連レピータ・スキャン・チェーンの受信シフト・レジスタ・ラッチにラッチするために、LSSDCクロック・パルスがレピータ・スキャン・チェーンに印加される。結果データのラッチ後、結果データはレピータ・スキャン・チェーンからスキャン・アウトされ、所望の論理構成用にプログラミングされた論理セル１１６の適正な機能性を判定するために所定の予想値と比較される。代替構成では、ＦＰＧＡの関連入出力ポートから直接または入出力バウンダリ・スキャン・チェーンの関連セルを介して、結果データを読み取ることができる。同時に動作させたそれぞれの複数の並列レピータ・スキャン・チェーンを介して複数の論理セルを並列にテストすることが好ましい。
【０１１１】
論理セル１１６の１つの構成をプログラミングしテストすると、その様々な構成のテストが完了するまで、論理セルの代替構成についてテスト手順が繰り返し実行される。このようにして、プログラマブル相互接続（パスゲート）マルチプレクサ、プログラマブル論理ゲート、プログラマブル・プルダウンおよびプルアップなど、論理セルの各プログラマブル要素がテストされる。論理セル１１６のパスゲート・マルチプレクサをテストする場合、"Modeling and Test Generation MOS Transmission Gate Stuck-Open Faults"というタイトルの参考文献の上記の部分に従ってその障害の検出が可能になるようにマルチプレクサの内部プルダウンを構成するために追加のチップ・マルチプレクサ・テスト制御信号C_TESTがローに設定される。
【０１１２】
論理セル１１６の同期論理要素、たとえば、図１９に関してはＤフリップフロップ１４３をテストする場合、論理セル１１６は、データがフリップフロップを通過するように構成される。論理セルは、クロック線１４４からシステム・クロック信号を受け取るようにさらに構成される。論理セルのテストに関連して前述したものと同様に、既知のテスト・データが入力レピータ・スキャン・チェーン３０にスキャン・インされ、そのスキャン・チェーンは既知のデータを構成済み論理セル１１６に印加するように構成される。次に、様々な論理セル１１６のフリップフロップ１４３にデータをラッチするために、システム・クロック信号が提供される。次に、フリップフロップ１４３によって提供された結果データは、LSSDCクロック・パルスにより受信レピータ・スキャン・チェーンの関連シフト・レジスタ・ラッチに捕捉される。次に、ラッチされたデータがスキャン・アウトされ、回復され、フリップフロップ１４３の適正な機能性を判定するために印加されたテスト・データと比較される。ただし、フリップフロップの機能性をテストするための上記の手順でもクロック線１４４の動作を検証することに留意されたい。
【０１１３】
フィールド・プログラマブル・ゲート・アレイの中には、複数のプログラマブル・クロック分配線を含むものがあり、その分配線によりフリップフロップ１４３はクロック信号を代替受信することができる。このようなＦＰＧＡでは、ＦＰＧＡの各クロック分配構成をテストするために、各テスト手順ごとにクロック分配ネットワークの構成を変えて、上記のフリップフロップ・テスト手順が複数回繰り返される。
【０１１４】
ＦＰＧＡのフリップフロップと関連のリセット分配資源のリセット機能性をテストするために、同様の手順が使用される。このようなテストを実行する場合、まず、コア・セルのフリップフロップが既知の設定状態に初期設定され、その状態になると所与の構成済みリセット・ネットワークによりリセット・パルスがそこに伝播される。次に、フリップフロップの結果データ内容は、適切に構成された受信レピータ・スキャン・チェーンのシフト・レジスタ・ラッチにラッチされる。次に、結果データはレピータ・スキャン・チェーンからスキャン・アウトされ、回復され、適正なリセット機能性を判定するために分析される。
【０１１５】
本発明の他の態様では、ＦＰＧＡ１０は、所望のユーザ定義論理回路を実現するようにプログラミングされ、その論理回路では複数の論理セル１１６を使用することができる。入出力バウンダリ・スキャン・チェーンのセルまたはレピータ・スキャン・チェーンのシフト・レジスタ・ラッチあるいはその両方は、ユーザ定義の論理回路へのＬＳＳＤアクセスを可能にし、構成済み論理回路へのデータの印加とそこからのデータの受信を可能にするように構成される。所定のテスト・ベクトルは適切に構成された入力スキャン・チェーンにスキャン・インされ、構成済み論理回路に印加される。関連のシステム・クロック動作の適用を含む場合もあるが、構成済み論理回路が印加されたテスト・ベクトルを処理できるようになると、論理回路がもたらした結果データを適切に構成した受信スキャン・チェーン（複数も可）のシフト・レジスタ・ラッチにラッチするために、LSSDCラッチ・クロック・パルスが提供される。次に、この結果データはスキャン・アウトされ、回復され、ユーザ定義の論理回路の適正な機能性を判定するために所定の予想結果データと比較される。
【０１１６】
したがって、ＦＰＧＡの様々なサブシステムのテストを可能にするために様々なテスト方法を開示した。さらに、ＦＰＧＡの様々なサブシステム間の相互依存度を考慮に入れた方法でＦＰＧＡの様々なサブシステムをテストするための包括的なテスト・シーケンスも開示した。
【０１１７】
特に本発明の好ましい実施例に関連して本発明を示し説明してきたが、当業者であれば、本発明の精神および範囲を逸脱せずに形態および細部について上記以外にも様々な変更が可能であることを理解するだろう。
【図面の簡単な説明】
【図１】本発明によるフィールド・プログラマブル・ゲート・アレイのブロック図である。
【図２】本発明によるフィールド・プログラマブル・ゲート・アレイのブロック図である。
【図３】フィールド・プログラマブル・ゲート・アレイの入出力バウンダリ・スキャン・チェーンを示すブロック図である。
【図４】図３の入出力バウンダリ・スキャン・チェーンの入出力バウンダリ・スキャン・セルのブロック図である。
【図５】図４の入出力バウンダリ・スキャン・チェーンの第１および第２のシフト・レジスタ・ラッチを示す概略図である。
【図６】（イ）フィールド・プログラマブル・ゲート・アレイを構成しテストするための制御信号を提供するための制御レジスタへのロードに関連する、図３の入出力バウンダリ・スキャン・チェーンの特定の部分を示すブロック図である。（ロ）フィールド・プログラマブル・ゲート・アレイの制御レジスタへのロードに関連する部分のみから構成される、入出力バウンダリ・スキャン・チェーンの代替構成を示すブロック図である。（ハ）単一ビット・バイパス・レジスタのみから構成される、もう１つの代替低減入出力バウンダリ・スキャン・チェーンを示すブロック図である。
【図７】制御レジスタと、入出力バウンダリ・スキャン・チェーンのそれに関連する部分とを表すブロック図である。
【図８】制御レジスタと、入出力バウンダリ・スキャン・チェーンのそれに関連する部分とを表すブロック図である。
【図９】制御レジスタと関連して入出力バウンダリ・スキャン・チェーンを動作させることに関連する信号を表すタイミング図である。
【図１０】制御レジスタ部分のみにロードするために入出力バウンダリ・スキャン・チェーンを動作させることに関連する信号を表すタイミング図である。
【図１１】単一ビット・バイパス・レジスタのみから構成されるさらに低減した入出力バウンダリ・スキャン構成を動作させることに関連する信号を表すタイミング図である。
【図１２】プログラマブル・ゲート・アレイの複数のプログラマブル論理セルを示す図である。
【図１３】プログラマブル論理セルからなるアレイと、プログラマブル論理セルを選択的に接続するための関連相互接続ネットワークとを示す、図１２のプログラマブル・ゲート・アレイのセクタ部分を示す図である。
【図１４】プログラマブル・ゲート・アレイの１行分の論理セルに関連するプログラマブル・バスのレピータ回路を示すブロック図である。
【図１５】そのすべてのピンにアクセスする際のプログラマブル・ゲート・アレイのテスト中に使用するクロック信号と関連の制御信号とを示す簡略タイミング図である。
【図１６】低減した数の入出力ピンにアクセスする際のプログラマブル・ゲート・アレイのテストに関連するクロック信号と制御信号とを示すタイミング図である。
【図１７】図１６の間隔Ｔ中にプログラマブル・ゲート・アレイのレピータ・スキャン・チェーンを動作させるための制御信号と関連のスキャン・クロックとを示すタイミング図である。
【図１８】図１６の間隔Ｔ中にプログラマブル・ゲート・アレイの構成スキャン・チェーンを動作させるための制御信号と関連のクロックとを示すタイミング図である。
【図１９】プログラマブル・ゲート・アレイのコア・セルをテストするために構成されたレピータ・スキャン・チェーンを示す部分概略図である。
【符号の説明】
１０  フィールド・プログラマブル・ゲート・アレイ
１４  ＳＲＡＭ
１６  ＳＲＡＭ制御装置
１８  デコーダおよびシーケンサ
２０  構成プログラム・ビット
２４  構成スキャン・チェーン
３２  アドレス・バス
３４  データ・バス
【図１】
0003710070.tif 000002
【図２】
0003710070.tif 000003
【図３】
0003710070.tif 000004
【図４】
0003710070.tif 000005
【図５】
0003710070.tif 000006
【図６】
0003710070.tif 000007
【図７】
0003710070.tif 000008
【図８】
0003710070.tif 000009
【図９】
0003710070.tif 000010
【図１０】
0003710070.tif 000011
【図１１】
0003710070.tif 000012
【図１２】
0003710070.tif 000013
【図１３】
0003710070.tif 000014
【図１４】
0003710070.tif 000015
【図１５】
0003710070.tif 000016
【図１６】
0003710070.tif 000017
【図１７】
0003710070.tif 000018
【図１８】
0003710070.tif 000019
【図１９】
0003710070.tif 000020