(57)【要約】      （修正有）【課題】ユーザプログラマブルファブリック内に埋め込まれた特定用途向け機能ブロックをテストする方法及び装置を提供する。【解決手段】ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を特定用途向け機能ブロックの入力にルーティングする工程と、特定用途向け機能ブロックを構成するためのコンフィギュレーションデータをユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、コンフィギュレーションデータを特定用途向け機能ブロックのコンフィギュレーションメモリ手段に転送する工程と、特定用途向け機能ブロックをテストするためのテストデータを、ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を、特定用途向け機能ブロックの入力にルーティングする工程とを備えている。【選択図】図５
2010066260.tif 000002
【特許請求の範囲】
【請求項１】
ユーザプログラマブルファブリック内に埋め込まれた特定用途向け機能ブロックをテストする方法であって、前記ユーザプログラマブルファブリックは入力と出力とを有するコンフィギュレーションデータ制御手段と、入力と出力とを有する前記特定用途向け機能ブロックとを備えており、
前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を前記特定用途向け機能ブロックの入力にルーティングする工程と、
前記特定用途向け機能ブロックを構成するためのコンフィギュレーションデータを前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、
前記コンフィギュレーションデータを前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段に転送する工程と、
前記特定用途向け機能ブロックをテストするためのテストデータを、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、
前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を、前記特定用途向け機能ブロックの入力にルーティングする工程と、
前記テストデータを使って、前記特定用途向け機能ブロックをテストする工程と、
前記特定用途向け機能ブロックの出力を前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の入力にルーティングする工程と、
前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段からのテスト出力データを受け取る工程とを備えるテスト方法。
【請求項２】
前記コンフィギュレーション制御手段は、レジスタのチェーンを備えており、
コンフィギュレーションデータを送る工程と、テストデータを送る工程とは、レジスタのチェーンを通じて前記データをシフトさせる工程をさらに備える、請求項１に記載のテスト方法。
【請求項３】
前記コンフィギュレーションデータ制御手段の出力をルーティングする工程は、前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段の入力をイネーブルする工程を備える、請求項１又は２に記載のテスト方法。
【請求項４】
前記ユーザプログラマブルファブリックを使って、前記テストデータを生成する工程をさらに備える、請求項１〜３のいずれか１つに記載のテスト方法。
【請求項５】
ユーザプログラマブルファブリック内に埋め込まれた特定用途向け機能ブロックをテストする装置であって、前記ユーザプログラマブルファブリックは入力と出力とを有するコンフィギュレーションデータ制御手段と、入力と出力とを有する前記特定用途向け機能ブロックとを備えており、
前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を前記特定用途向け機能ブロックの入力にルーティングする手段と、
前記特定用途向け機能ブロックを構成するためのコンフィギュレーションデータを前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る手段と、
前記コンフィギュレーションデータを前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段に転送する手段と、
前記特定用途向け機能ブロックをテストするためのテストデータを、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る手段と、
前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を、前記特定用途向け機能ブロックの入力にルーティングする手段と、
前記テストデータを使って、前記特定用途向け機能ブロックをテストする手段と、
前記特定用途向け機能ブロックの出力を前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の入力にルーティングする手段と、
前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段からのテスト出力データを受け取る手段とを備えるテスト装置。
【請求項６】
前記コンフィギュレーション制御手段は、レジスタのチェーンを備えており、
コンフィギュレーションデータを送る手段と、テストデータを送る手段とは、レジスタのチェーンを通じて前記データをシフトさせる手段をさらに備えている、請求項５に記載のテスト装置。
【請求項７】
前記コンフィギュレーションデータ制御手段の出力をルーティングする手段は、前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段の入力をイネーブルする手段を備えている、請求項５又は６に記載のテスト装置。
【請求項８】
前記ユーザプログラマブルファブリックを使って、前記テストデータを生成する手段をさらに備える、請求項５〜７のいずれか１つに記載のテスト装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ユーザプログラマブルロジックデバイスの分野に関する。さらに詳細には、本発明は、ユーザプログラマブルファブリック（ｆａｂｒｉｃ）内に埋め込まれた特定用途向け機能ブロックをテストする方法に関する。
【背景技術】
【０００２】
リコンフィギャラブルデバイス／ファブリックは、通常、単一のユーザプログラマブルブロック、つまり、システムの基本構成ブロックであるタイル（ｔｉｌｅ）の複数のインスタンスからなる。この配列によって、容易に拡張できる一様に規則的な構造のコンフィギュレーションメカニズムが容易に利用できるようになる。
【０００３】
リコンフィギャラブルデバイス／ファブリック内に埋め込まれた特定用途向け機能ブロックの挿入は、特定のアプリケーション状況におけるリコンフィギャラブルデバイス／ファブリックの性能を向上させるためにしばしば行われる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特定用途向け機能ブロックを組み込むには、それらのデバイスの現場でのテストを行う装置及び方法を設けることが必要である。一般的に、埋め込まれた特定用途向け機能ブロックをテストする従来の方法は３つに分類される。
【０００５】
まず、第１の分類には、特定用途向け機能ブロックをテストするための専用アクセスメカニズムを利用する方法が含まれる。このような方法では、リコンフィギャラブルデバイス／ファブリック内に、個別の増設インタフェース手段を設けておく必要がある。この分類におけるデバイスの例としては、リコンフィギャラブルデバイス／ファブリックを通じて供給する専用の走査チェーンを備える埋め込まれた特定用途向け機能ブロックがある。
【０００６】
この第１の分類のデバイスには、いくつかの欠点がある。例えば、これらのデバイスでは、個別のインタフェースと特定用途向け機能ブロックへのプロトコルサポートアクセスとが必要となる。さらに、インタフェースロジックを生成するために必要なエクストラロジックは、実際の専用走査チェーンパスと同様に、余分な設計コストの増加を招く。
【０００７】
埋め込まれた特定用途向け機能ブロックをテストする方法の第２の分類には、仮想走査チェーン（ｖｉｒｔｕａｌ  ｓｃａｎ  ｃｈａｉｎ）として動作するデバイス／ファブリックのユーザプログラマブルセクションを、デバイス／ファブリック内に、何らかの方法で再構成する方法が含まれる。このような方法の一例としては、仮想走査チェーンを埋め込まれたデバイス周辺に実装するためのリコンフィギャラブルデバイス／ファブリックを構成する工程を備える方法があり、仮想走査チェーンの一部は走査データを埋め込まれたデバイスに供給し、一部は埋め込まれたデバイスから結果を受け取る。
【０００８】
この分類の方法には、いくつかの共通する欠点がある。例えば、リコンフィギャラブルデバイス／ファブリックと埋め込まれた特定用途向け機能ブロックとの間で接続ロジックを使用する必要がある。この「ガスケットロジック（ｇａｓｋｅｔ  ｌｏｇｉｃ）」（例えば、マルチプレクサ）によって、デバイス／ファブリックを特定用途向け機能ブロックのピンに直接に接続することが可能となる。しかし、これにより、コストが増大し、得られるデバイスも複雑なものとなってしまう。
【０００９】
最後に、第３の分類の方法では、全体的に、又は部分的に動作するデバイス／ファブリックの再構成を、埋め込まれた特定用途向け機能ブロックのテストメカニズムとする。この方法では、リコンフィギャラブルデバイス／ファブリックを用いて、多くの異なる機能（例えば、バスモニタリング、バスエミュレーション、内蔵自己テスト、デバッギング）を実行する。第３の分類の方法には、テスト結果を有効にするパターン生成ロジックに関わるものもある。この方法の欠点は、リコンフィギャラブルデバイス／ファブリックが特定用途向け機能ブロックにＢＵＳを介して接続されていることである。これにより、システムはＢＵＳアクセスのプロトコルを使用しなければならなくなり、テスト中のシステムＢＵＳ上のトラフィックを生んでしまう。
【００１０】
したがって、不必要なコストの増大やリコンフィギャラブルデバイス／ファブリックの複雑化を招かないような、埋め込まれた特定用途向け機能ブロックをテストするテスト装置及びテスト方法が求められている。
【課題を解決するための手段】
【００１１】
上述した従来技術の問題を解決するため、本発明は、ユーザプログラマブルファブリック内に埋め込まれた特定用途向け機能ブロックをテストする方法であって、前記ユーザプログラマブルファブリックは入力と出力とを有するコンフィギュレーションデータ制御手段と、入力と出力とを有する前記特定用途向け機能ブロックとを備えており、前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を前記特定用途向け機能ブロックの入力にルーティングする工程と、前記特定用途向け機能ブロックを構成するためのコンフィギュレーションデータを前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、前記コンフィギュレーションデータを前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段に転送する工程と、前記特定用途向け機能ブロックをテストするためのテストデータを、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る工程と、前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を、前記特定用途向け機能ブロックの入力にルーティングする工程と、前記テストデータを使って、前記特定用途向け機能ブロックをテストする工程と、前記特定用途向け機能ブロックの出力を前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の入力にルーティングする工程と、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段からのテスト出力データを受け取る工程とを備えるテスト方法を提供する。
【００１２】
前記コンフィギュレーション制御手段は、レジスタのチェーンを備えており、コンフィギュレーションデータを送る工程と、テストデータを送る工程とは、レジスタのチェーンを通じて前記データをシフトさせる工程をさらに備えていてもよい。
【００１３】
前記コンフィギュレーションデータ制御手段の出力をルーティングする工程は、前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段の入力をイネーブルする工程を備えていてもよい。
【００１４】
前記のテスト方法は、前記ユーザプログラマブルファブリックを使って、前記テストデータを生成する工程をさらに備えていてもよい。
【００１５】
本発明は、また、ユーザプログラマブルファブリック内に埋め込まれた特定用途向け機能ブロックをテストする装置であって、前記ユーザプログラマブルファブリックは入力と出力とを有するコンフィギュレーションデータ制御手段と、入力と出力とを有する前記特定用途向け機能ブロックとを備えており、前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を前記特定用途向け機能ブロックの入力にルーティングするルーティング手段と、前記特定用途向け機能ブロックを構成するためのコンフィギュレーションデータを前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る手段と、前記コンフィギュレーションデータを前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段に転送する手段と、前記特定用途向け機能ブロックをテストするためのテストデータを、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段に送る手段と、前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の出力を、前記特定用途向け機能ブロックの入力にルーティングする手段と、前記テストデータを使って、前記特定用途向け機能ブロックをテストする手段と、前記特定用途向け機能ブロックの出力を前記ユーザプログラマブルファブリックのコンフィギュレーションデータ制御手段の入力にルーティングする手段と、前記ユーザプログラマブルファブリックのコンフィギュレーション制御手段からのテスト出力データを受け取る手段とを備えるテスト装置を提供する。
【００１６】
前記コンフィギュレーション制御手段は、レジスタのチェーンを備えており、コンフィギュレーションデータを送る手段と、テストデータを送る手段は、レジスタのチェーンを通じて前記データをシフトさせる手段をさらに備えていてもよい。
【００１７】
前記コンフィギュレーションデータ制御手段の出力をルーティングする手段は、前記特定用途向け機能ブロックのコンフィギュレーションメモリ手段の入力をイネーブルする手段を備えていてもよい。
【００１８】
前記テスト装置は、前記ユーザプログラマブルファブリックを使って、前記テストデータを生成する手段をさらに備えていてもよい。
【発明の効果】
【００１９】
当業者に周知のように、本発明は、従来技術よりすぐれた点をいくつか備えている。例えば、本発明によって、リコンフィギャラブルアレイ内にユーザプログラマブルロジックブロックを構成するために使用したのと同じ機能を再使用することで、埋め込まれた特定用途向け機能ブロックのテストを容易にすることができる。
【００２０】
以下、本発明の一例を、図面を参照して説明する。
【図面の簡単な説明】
【００２１】
【図１】従来技術によるプログラマブルロジックデバイスを示す図である。
【図２】埋め込まれた特定用途向け機能ブロックを備える従来技術によるプログラマブルロジックデバイスを示す図である。
【図３】埋め込まれた特定用途向け機能ブロックを備える従来技術によるプログラマブルロジックデバイスを示す図である。
【図４】ユーザプログラマブルロジック上に構成したアプリケーションを介した特定用途向け機能ブロックのテストを示す機能図である。
【図５】本発明に係るプログラマブルロジックデバイスを示す図である。
【図６】本発明に係るデバイスのコンフィギュレーションチェーンを示す図である。
【図７】本発明に係るデバイスのコンフィギュレーションチェーンを示す図である。
【図８】図７のコンフィギュレーションチェーンを示す詳細図である。
【図９】ＳＨＩＦＴ動作中の図６のコンフィギュレーションチェーンを示す図である。
【図１０】ＷＲＩＴＥ動作中の図６のコンフィギュレーションチェーンを示す図である。
【図１１】本発明に係るコンフィギュレーションチェーンが特定用途向け機能ブロックに書き込み動作を行う様子を示す図である。
【図１２】本発明に係るデバイスの望ましい、効果的な機能を示す図である。
【図１３】本発明に係るコンフィギュレーションチェーンが特定用途向け機能ブロックから読み出し動作を行う様子を示す図である。
【発明を実施するための形態】
【００２２】
図１は、複数のタイル１０１からなるプログラマブルロジックデバイス１００を示す図である。それぞれのタイル１０１は、コンフィギュレーションデータパス１０２によってリンクした複数のコンフィギュレーションレジスタ（不図示）を含んでいる。
【００２３】
図２は、従来技術によるデバイス２００を示す図である。図面中央部には、特定用途向け機能ブロック２０１を示す。特定用途向け機能ブロック２０１の両側には、ユーザプログラマブルロジック２０２、２０３のセクションがそれぞれ存在する。図１のデバイス内の場合と同様に、ユーザプログラマブルロジック２０２、２０３のセクションは、それぞれ、タイルのアレイからなる。図２からわかるように、ユーザプログラマブルロジック２０２，２０３のコンフィギュレーションデータパスは、特定用途向け機能ブロック２０１のコンフィギュレーションデータパスとは完全に個別のものである。この専用のコンフィギュレーションパスによって、デバイス２００全体の複雑さが増してしまう。
【００２４】
図３は、埋め込まれた特定用途向け機能ブロックのためのテストメカニズムを提供するようプログラムされた、従来技術によるユーザプログラマブルデバイス３００である。上述のとおり、プログラマブルロジックデバイス／ファブリック３０２と、埋め込まれた特定用途向け機能ブロック３０３との間にインタフェースを設けるためには、ガスケットロジックが必要である。
【００２５】
図４は、従来技術による特定用途向け機能ブロックのためのテストメカニズムとして動作するリコンフィギャラブルデバイス／ファブリックの接続を示す機能図である。この既知の解法は、バスモニタリング機能、バスエミュレーション機能、内蔵自己テスト機能、デバッギング機能を含む多くの異なるモードを有している。これらのモードには、特定用途向け機能ブロックにテストデータを供給するパターン生成ロジックと、テスト結果を検証する結果キャプチャロジックを実現することに関するものもある。図４に示すように、特定用途向け機能ブロックの中には、システムバスを介して互いに接続されているものもあるため、これらのバスに基づく機能を特定しておかなければならない。
【００２６】
図５は、本発明の一例に係るデバイス５００を示す。図５も、また、図面中央部分に、特定用途向け機能ブロック５０１を示しており、特定用途向け機能ブロック５０１の両側には、ユーザプログラマブルロジック５０２、５０３のセクションがそれぞれ存在する。しかし、ユーザプログラマブルロジック５０２、５０３は、自身のコンフィギュレーションデータパスをそれぞれ有しているが、特定用途向け機能ブロック５０１は、プログラマブルロジックブロックデータパスを使ってテストされる。
【００２７】
リコンフィギャラブルデバイス／ファブリックに埋め込まれた特定用途向け機能ブロックをテストするため、ユーザプログラマブルロジックセクションに使用した既存のメカニズムを異なる方法で再び使用する。これによって、埋め込まれた特定用途向け機能ブロックの数、位置、及び種類に関係なく、共通のインタフェースを双方に設けることができる。
【００２８】
本発明をさらに説明するために、ここで、本発明に係るシステムのユーザプログラマブルロジックブロックの構成に関して詳細に説明する。図６に、専用のコンフィギュレーションワイヤ、つまり、リコンフィギャラブルデバイス／ファブリックの汎用ルーティングネットワークの一部を構成するワイヤを用いて結合された（ｃｈａｉｎｅｄ）内部レジスタ６０１を備えた、ユーザプログラマブルロジックブロック６００を示す。作動中は、チェーン上の各レジスタ６０１がデータを包含するまで、コンフィギュレーションデータはチェーン６０４に沿ってシフトされる。この動作は、内部レジスタのチェーンを介してデバイス／ファブリックに供給されるコンフィギュレーション制御信号の制御のもとに行われる。しかし、制御データがセミグローバルなレジスタを介さない（ｎｏｎ−ｒｅｇｉｓｔｅｒｅｄ）信号を介してコンフィギュレーションデータチェーンの全てのステージに分配されるように、特定のチェーン上の全てのレジスタが常に同じ方法で指定／アクセスされることが多い。そして、この制御情報は、各ステージでデコードされ、コンフィギュレーションチェーン内及びプログラマブルロジックブロック内の関連するコンフィギュレーションセル６０１内のデータに対して読み出し／書き込み／シフト動作を行う。
【００２９】
ここで、図７を参照しつつ、本発明に係る方法を説明する。リコンフィギャラブルデバイス／ファブリック７００に埋め込まれた特定用途向け機能ブロック７０１をテストするために、特定用途向け機能ブロック７０１の入力と出力は、既存のパスを介して、ユーザプログラマブルロジックブロック７０２、７０３内のコンフィギュレーションチェーンに接続される。さらに、リコンフィギャラブルデバイス／ファブリック内において隣接する位置を占めるいずれかの特定用途向け機能ブロックに供給するために、ユーザプログラマブルロジックブロック７０２、７０３の制御信号がデコードされる。これは、特定用途向け機能ブロック作動信号をイネーブルするイネーブル信号として使用される。この信号がアサートされると、特定用途向け機能ブロックは、残りのコンフィギュレーションインタフェース信号によってリクエストされた動作を行う。
【００３０】
隣接する特定用途向け機能ブロックが存在しない場合は、追加の制御出力と、隣接する特定用途向け機能ブロックによって使用されるはずであった既存のコンフィギュレーションデータパスとは、隣接するユーザプログラマブルロジックブロック内に代わりに接続される。この場合には、デバイス／ファブリックはコンフィギュレーションモードとなる一方で、近傍のブロックは、直近のブロックによって駆動された既存のルーティングネットワーク上のいかなるコンフィギュレーションデータをも無視する。ユーザプログラマブルロジックのブロックによって供給されたこの追加の制御出力は、さらに上級のコンフィギュレーションオプションを容易にするために使用してもよいし、使用しなくてもよい。
【００３１】
コンフィギュレーションチェーンに基づく、埋め込まれた特定用途向け機能ブロックのテストは、以下に示す方法で実現できる。第１の工程は、特定用途向け機能ブロックを特定のテスト状態にすることからなる。これを行うために、一連のシフト動作を用いて、所定のデータが、隣接するユーザプログラマブルロジックブロック７０２、７０３内のコンフィギュレーションチェーン内にシフトする。
【００３２】
次に、アレイをコンフィギュレーションモードから、実行モードへ切り替え、アレイクロックを１サイクルの間イネーブルする。これにより、特定用途向け機能ブロックは、入力ポート上のデータの処理を開始する。
【００３３】
一旦この動作が終わると、必要に応じて、アレイをコンフィギュレーションモードへ戻し、データをさらにコンフィギュレーションチェーンに書き込む。新たな入力データをチェーン内にシフトさせると同時に、前のクロックから出力された特定用途向け機能ブロックをコンフィギュレーションチェーンの端部からシフトさせる。
【００３４】
上述の一続きの工程は、特定用途向け機能ブロックの全ての動作モードがテストされ、かつ、予測される結果に対して全ての結果データが比較されるまで、コンフィギュレーションデータを変化させて必要なだけ何度も繰り返すことができる。
【００３５】
特定用途向け機能ブロックを構成する際に、コンフィギュレーションチェーントポロジーによっては、両側に設けられたユーザプログラマブルロジック内に位置する複数のコンフィギュレーションチェーンに、同期して同時にアクセスする必要がある場合もある。
【００３６】
また、特定用途向け機能ブロックに書き込まれるデータは、第１の側のユーザプログラマブルロジックブロック内のコンフィギュレーションチェーンからのものであってもよいし、一方、結果データは、第２の側のユーザプログラマブルロジックブロック内のコンフィギュレーションチェーンを介して読み出してもよい。
【００３７】
ここで、図８〜図１３に基づいて、特定用途向け機能ブロックをいかに構成するかを示したより詳細な例を示す。上記の構成のユーザプログラマブルロジックセクション内のコンフィギュレーションチェーンの数は、特定のアーキテクチャ（例えば、レジスタの幅、レジスタのチェーン内での相対位置、及び各チェーンの長さ）によって変化する。図８は、ｎ個のレジスタを含むコンフィギュレーションチェーンの一例を示す。このようなブロックの入力と出力は、必要に応じて、前後のブロックに接続して、より長いチェーンとしてもよい。
【００３８】
図８に示すように、特定のコンフィギュレーションチェーンは、一連のレジスタセル６０１で構成されている。各セルは、２つのソースから入力を受け取り、２つの別々の出力にその最新の状態を出力する。どの入力をアクティブにするかは、制御入力を介して選択することができる。さらに、各レジスタセル６０１は、その現在の状態を保持し、いずれの入力値も無視してもよい。この種類のレジスタセルは、特別に設計したフリップフロップ又はレジスタと順序ロジックとを組合わせたものであり得る。
【００３９】
上記のチェーンの構成によって、制御入力の特定の値に応じて、多くの動作を行うことが可能となる。その例を以下の表に示す。
【００４０】
【表１】
2010066260.tif 000003
【００４１】
上記の動作を用いて、ユーザが構成可能なロジックブロックをプログラムすることができる。この特定の例においては、以下の一連の動作を行うことによって、これを実現できる。
【００４２】
まず第１に、必要なコンフィギュレーションセル６０１のロケーションのアドレスをアドレス入力にアサートしなければならない。これを一連の動作の始めに行い、そのアドレスがファブリック内の長い距離に亘って伝播されるようにする（この例では、アドレスバスはレジスタを介さない（ｎｏｔ  ｒｅｇｉｓｔｅｒｅｄ）が、他のアーキテクチャではレジスタを介してもよい）。
【００４３】
第２に、ＳＨＩＦＴ動作を使って、必要なデータをコンフィギュレーションチェーン内にシフトさせる。図９に示すように、ＳＨＩＦＴ動作の間は、レジスタセルが、コンフィギュレーション制御入力（“ｃｏｎｆｉｇ＿ｃｏｎｔｒｏｌ＿ｉｎ”）を感知する。図９では、アクティブなデータパスを太線で示している。その後、コンフィギュレーションチェーン全体が有効なテストデータを包含するまで、上記の動作を繰り返す。ユーザプログラマブルロジックブロックに伝播するような各レジスタ６０１のコンフィギュレーションチェーン上でのデータの出力を可能にするために、１つ以上のＮＯＰ動作を行う。この最後の動作は、予備的に行うものであって、必ずしも行う必要はない。
【００４４】
次の工程は、コンフィギュレーションチェーンレジスタ６０１内のデータを使って、ＷＲＩＴＥ機能を実行することからなる。図１０に示すように、ＷＲＩＴＥ動作の間は、Ｃｏｎｆｉｇｕｒａｔｉｏｎ  Ｍｅｍｏｒｙ（レジスタ、メモリ、コンフィギュレーションセル等）が、デコードしたＡｄｄｒｅｓｓをイネーブルして、アドレス指定されたロケーションへの入力をアクティブにするコンフィギュレーション制御入力（“ｃｏｎｆｉｇ＿ｃｏｎｔｒｏｌ＿ｉｎ”）を感知するようになる。図１０においても、アクティブなデータパスを太線で示している。
【００４５】
理解されるように、特定用途向け機能ブロックは、複雑なロジック機能から、ＲＡＭブロックまでの何であってもよい。したがって、各特定用途向け機能ブロックは、使用前に構成しておかなければならない、異なる特徴やモードを有する。これらのコンフィギュレーションセッティングは、各特定用途向け機能ブロックのコンフィギュレーションレジスタ内に格納される。これらのコンフィギュレーションレジスタは、特定用途向け機能ブロックがコンフィギュレーションモードにある場合は、特定用途向け機能ブロックの入力／出力ポートを介してのみアクセスが可能である。特定用途向け機能ブロックが非コンフィギュレーションモードにある場合は、入力／出力ポートを切り替えて、通常の実行モードのために特定用途向け機能ブロックの内部ロジック機能、及び／又はＲＡＭに接続する。
【００４６】
ここで、再び図８を参照して、各ユーザプログラマブルロジックブロックのコンフィギュレーションメモリの読み出し方法を説明する。
【００４７】
この方法の第１の工程は、必要なコンフィギュレーションセルのアドレスをアドレス入力へアサートする工程である。そして、そのアドレスがファブリック内の長い距離に亘って伝播されるように、１つ以上のＮＯＰ動作を行う。この例では、アドレスバスはレジスタを介さない（ｎｏｔ  ｒｅｇｉｓｔｅｒｅｄ）が、他のアーキテクチャではレジスタを介してもよい。
【００４８】
この方法の次の工程は、各ブロック内の指定したコンフィギュレーションメモリロケーションでデータをコンフィギュレーションチェーン上のレジスタ６０１に読み出す工程である。これは、ＲＥＡＤ動作を用いて行う。
【００４９】
そして、チェーンの端部（出力）から出現する各データワードを格納しつつ、読み出されたデータをコンフィギュレーションチェーンに沿ってシフトさせる。これは、ＳＨＩＦＴ動作を用いて行われる。全ての読み出されたデータがチェーンから出力されるまで、ＳＨＩＦＴ動作を繰り返す。上記の方法の工程は、コンフィギュレーションロケーションが全て読み出されるまで繰り返し行われる。
【００５０】
ここで、図１１〜図１３を参照して、本発明の一実施形態に係る埋め込まれた特定用途向け機能ブロックについて説明する。
【００５１】
図１１は、ユーザプログラマブルロジックブロック９０１が、既存のコンフィギュレーションチェーンによって、埋め込まれた特定用途向け機能ブロック９０２と相互に作用しあう様子を示す。実行時間内の通信に使用した２つのブロック間のルーティングネットワークにおける既存のワイヤを、テストの間も、再び再利用する。これは、各埋め込まれた特定用途向け機能ブロック９０２に、それ自身のコンフィギュレーションインタフェース（コンフィギュレーションチェーン、アドレスバス、及び制御入力）を備える代わりに、ユーザプログラマブルロジックブロック９０１内の既存の構成回路を、埋め込まれた特定用途向け機能ブロックを実行するのに必要なテストデータ／制御のための伝達（ｔｒａｎｓｐｏｒｔ）メカニズムとして使用する。
【００５２】
これにより、埋め込まれた特定用途向け機能ブロック９０２をテストするために必要な全ての制御／データは、コンフィギュレーションメカニズムによって、コンフィギュレーションデータとして扱われ、既存のデータパスによって埋め込まれた機能ブロックに転送される間接的なテスト方法を実現する。それから、制御／データは、埋め込まれた特定用途向け機能ブロック９０２自体に至り、コンフィギュレーションモードの間、制御及びデータを正しく解釈できる。
【００５３】
これにより、信号“ｒｅｇ＿ｉｎｐｕｔ＿ｘ”及び“ｒｅｇ＿ｏｕｔｐｕｔ＿ｘ”は、図１０に示す入力と出力にマップされる。ユーザプログラマブルロジックブロックにおいて使用可能なレジスタの数及びその幅は、十分なデータビット／アドレスビット／コマンドビットを、各埋め込まれたブロックに供給するために十分である必要があり、それらの詳細は、実現方法及びアーキテクチャに応じたものとする。
【００５４】
図１２に示される信号上のデータが時間的に正確に解釈されるようにするためには、埋め込まれた機能ブロックへのアクセスが行われることを示すために、ユーザプログラマブルロジックブロックのコンフィギュレーション制御入力（“ｃｏｎｆｉｇ＿ｃｏｎｔｒｏｌ＿ｉｎ”）の追加の値（動作）が必要となる。例えば、埋め込みアクセス（ＥＭＢＥＤＤＥＤ＿ＡＣＥＳＳ）動作を規定する必要がある。
【００５５】
さらに、各ユーザプログラマブルロジックブロックからのコンフィギュレーション制御出力信号“ｃｏｎｆｉｇ＿ｃｏｎｔｒｏｌ＿ｏｕｔｐｕｔ”は、次のプログラマブルロジックブロックに入力するのはもちろん、特定用途向けの埋め込まれた機能ブロックにも入力しなければならない。ＥＭＢＥＤＤＥＤ＿ＡＣＥＳＳ動作中は、埋め込まれた特定用途向け機能ブロックのみが、コンフィギュレーション制御信号に対する感知性を持つ（ｓｅｎｓｉｔｉｖｅ）。
【００５６】
図１２に示すように、以下の信号が必要である（信号の幅はアーキテクチャと実現方法に応じたものである）。
【００５７】
【表２】
2010066260.tif 000004
【００５８】
本発明のこの例において、埋め込まれた特定用途向け機能ブロック９０２を構成する方法は、以下に示す工程を有する。
【００５９】
まず、特定用途向け機能ブロック９０２がチェーンによって書き込まれるように、ＳＨＩＦＴ動作を用いて、制御データ、アドレスデータ、及びコンフィギュレーションデータは、関連するコンフィギュレーションチェーン内にシフトされる。この例では、メモリ位置のアドレス、書き込まれるデータ、及び実行されるコマンドＥＢ＿ＷＲＩＴＥを、あるレジスタから他のレジスタへシフトさせる。この最後の工程を、必要なコンフィギュレーションデータ及び制御データが全てチェーン内にシフトされるまで繰り返す。
【００６０】
次に、コンフィギュレーションチェーン上の各レジスタのデータアウトプットが、ユーザプログラマブルロジックブロックを通じて伝播できるようにするために、１つ以上のＮＯＰ動作を行う。この場合も、この工程は予備的に行うのであって、本発明の他の例において、必ずしも行われなければならないわけではない。
【００６１】
本発明の次の工程は、それらのコンフィギュレーション入力をイネーブルして、それによって、この場合は、必要なＥＢ＿ＷＲＩＴＥ動作を行わせるように特定用途向け機能ブロック９０２をトリガーするコンフィギュレーションチェーン上でＥＭＢＥＤＤＥＤ＿ＡＣＣＥＳＳ動作を行う。そして、埋め込まれた特定用途向け機能ブロック９０２が現在の動作（ＥＢ＿ＷＲＩＴＥ）を完了させるために、１つ以上のＮＯＰ動作を行う。最後に、特定用途向け機能ブロック９０２内の各コンフィギュレーションアドレス位置について、上記の一連の工程を繰り返す。
【００６２】
ここで、特定用途向の埋め込まれた機能ブロックからコンフィギュレーションデータを逆に読み出す方法について説明する。
【００６３】
まず、必要な制御データ、アドレスデータ、及びコンフィギュレーションデータを関連するコンフィギュレーションチェーン内へシフトするためにＳＨＩＦＴ動作を行い、特定用途向け機能ブロック９０２がチェーンによって読み出されるようにする。この場合では、メモリ位置のアドレス、読み出されるデータ、及び実行されるコマンドＥＢ＿ＲＥＡＤである。この工程を、必要なコンフィギュレーションデータ及び制御データが全てチェーン内にシフトされるまで繰り返す。
【００６４】
次に、コンフィギュレーションチェーン上の各レジスタのデータ出力が、ユーザプログラマブルロジックブロックを通じて伝播できるようにするために、１つ以上のＮＯＰ動作を行う。この場合も、また、この動作を単に予備的に行う。
【００６５】
その後、それらの入力をイネーブルして、それによって、この場合は、必要なＥＢ＿ＲＥＡＤ動作を行わせるように特定用途向け機能ブロック９０２をトリガーするコンフィギュレーションチェーン上でＥＭＢＥＤＤＥＤ＿ＡＣＣＥＳＳ動作を行う。
【００６６】
そして埋め込まれた特定用途向け機能ブロック９０２が現在の動作（ＥＢ＿ＲＥＡＤ）を完了するよう、１つ以上のＮＯＰ動作を行い、特定用途向け機能ブロック９０２の出力上に読み出されたデータを与える。
【００６７】
一旦この工程を終えると、コンフィギュレーションチェーン上でＵＰＤＡＴＥ＿ＣＨＡＩＮ動作を行う。この動作は、上記のＲＥＡＤ動作と似ているが、図１３の太線で表したデータ線によって示すように、埋め込まれた機能ブロックからのデータはコンフィギュレーションチェーンのレジスタ入力までルーティングされる。
【００６８】
その後、ＳＨＩＦＴ動作を用いて、コンフィギュレーションチェーンをシフトさせ、出力データワードを格納する。そして、コンフィギュレーションチェーンからデータが全て読み出されるまで、この工程を繰り返す。最後に、上記の方法の一連の工程は、特定用途向け機能ブロック内の全てのアドレス位置に関して繰り返される。
【００６９】
特定用途向け機能ブロックをテストするためには、上記に示すとおり、特定用途向け機能ブロックは、まず特定のモードで構成される。そして、特定用途向け機能ブロックはＮＯＰ状態に切り替えられる。その時点で、ユーザプログラマブルロジックブロックレジスタは、正しいデータが正しいレジスタ６０１に存在するまでレジスタ中をシフトされていった、ユーザプログラマブルロジックデータを有する。
【００７０】
次に、ＷＲＩＴＥコマンドがユーザプログラマブルロジックブロックに対して発行され、隣接するユーザプログラマブルロジックレジスタと、テスト中の特定用途向け機能ブロックのＩ／Ｏポートとの間の接続が可能になる。このとき、ユーザプログラマブルロジックブロックコンフィギュレーションレジスタは、上記のチェーンを通って供給される初期化データと同様に、対応するレジスタ６０１から正しいテスト値が、適切な特定用途向け機能ブロック入力に供給されるまでレジスタ中をシフトされていった、特定用途向け機能ブロックのテストデータを有している。
【００７１】
その後、適切なテストデータ値を特定用途向け機能ブロック入力上に保持するために、ユーザプログラマブルロジックチェーンはＮＯＰ状態に切り替えられる。これにより、１つ以上のクロックサイクルの間、アレイ全体がＣＯＮＦＩＧ−ＭＯＤＥからＲＵＮ−ＭＯＤＥに切り替えられ、それから、ＣＯＮＦＩＧ−ＭＯＤＥに再び切り替えられる。この後、特定用途向け機能ブロックはＮＯＰ状態に保持され、その結果データをその出力ポート上に保持する。そして、ユーザプログラマブルロジックチェーンをＳＨＩＦＴモードに切り替え、一連のＳＨＩＦＴ動作によって、キャプチャされたデータをシフトさせて分析用のアレイから外すことができる。上記のとおり、ユーザプログラマブルロジックを用いて直接に接続された特定用途向け機能ブロックをテストするためには、リコンフィギャラブルアレイをコンフィギュレーションモードにし、テストアプリケーションをコンフィギュレーションチェーン内にシフトさせる。
【００７２】
パターン発生器（ＰＧ）の実現方法は、特定用途向け機能ブロックの性質及び機能によって異なり得る。実現方法の１つには、リニアフィードバックシフトレジスタ（Ｌｉｎｅａｒ−Ｆｅｅｄｂａｃｋ−Ｓｈｉｆｔ−Ｒｅｇｉｓｔｅｒ、ＬＦＳＲ）を使って、入力の擬似ランダムシーケンスを生成するという方法もある。適切なテスト範囲を確実にするために、特定用途向け機能ブロックのシミュレーション中にＬＦＳＲの式を選ぶことができる。
【００７３】
他にも、有限ステートマシン（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ、ＦＳＭ）を用いて、特定用途向け機能ブロックに対する、テスト入力の選択されたシーケンスを実現するＰＧの実現方法もある。このようにすると、異なる入力の組み合わせの数が少ない場合には十分にコンパクトなＰＧが実現できる。
【００７４】
さらに、リコンフィギャラブルアレイ内の他の位置に埋め込まれたブロックＲＡＭを使用して、より多くの入力テストベクトルを格納するＰＧの実現方法もある。この実現方法では、おそらくはカウンタロジックと共にＦＳＭを使い、ＦＳＭがテストベクトルをブロックＲＡＭから読み出すことができるようにするアドレス値を生成し、そのアドレス値を、順番に特定用途向け機能ブロックに与える。
【００７５】
結果キャプチャ（Ｒｅｓｕｌｔｓ  Ｃａｐｔｕｒｅ、ＲＣ）ロジックの実現方法は、特定用途向け機能ブロックの性質と機能によって異なる。実現方法の１つには、ＬＦＳＲと似ているが、特定用途向け機能ブロックからの出力を全て取込み、まとめてＭＩＳＲ構造にしてしまう複数入力のシグニチャレジスタ（Ｍｕｌｔｉｐｌｅ−Ｉｎｐｕｔ−Ｓｉｇｎａｔｕｒｅ−Ｒｅｇｉｓｔｅｒ、ＭＩＳＲ）を使うものがある。一旦テストが実行されると、必要なクロックサイクルの間、ＭＩＳＲの出力はバイナリシーケンスとなる。それから、このシーケンスは、テストのシミュレートされた実行から得られたシーケンスと比較され、テストが合格か不合格かを示すのに使われる。
【００７６】
他のＲＣの実現方法では、有限ステートマシン（Ｆｉｎｉｔｅ  Ｓｔａｔｅ  Ｍａｃｈｉｎｅ、ＦＳＭ）を用いて、シミュレーションによって特定用途向け機能ブロックが生成すべきだと示された出力の定義されたシーケンスを発生する。クロック毎、又は選択されたクロックサイクル毎にテストに適するようＦＳＭの出力と特定用途向け機能ブロックとを比較する。比較結果が全てマッチすれば、テストは合格とみなされる。この解決方法も、異なる出力の組合わせの数が少ない場合には十分にコンパクトである。
【００７７】
さらに、リコンフィギャラブルアレイ内の他の位置に埋め込まれたブロックＲＡＭを用いて、より多くの出力テストベクトルを格納するＲＣの実現方法もある。この実現方法では、おそらくはカウンタロジックと共にＦＳＭを使い、ＦＳＭがブロックＲＡＭからの出力のテストベクトルを読み出し、そのテストベクトルを、順番に特定用途向け機能ブロックの出力と比較することを可能にするアドレス値を生成する。比較結果が全てマッチすれば、テストは合格とみなされる。
【図１】
2010066260.tif 000005
【図２】
2010066260.tif 000006
【図３】
2010066260.tif 000007
【図４】
2010066260.tif 000008
【図５】
2010066260.tif 000009
【図６】
2010066260.tif 000010
【図７】
2010066260.tif 000011
【図８】
2010066260.tif 000012
【図９】
2010066260.tif 000013
【図１０】
2010066260.tif 000014
【図１１】
2010066260.tif 000015
【図１２】
2010066260.tif 000016
【図１３】
2010066260.tif 000017