(57)【要約】  ＦＰＧＡ内のルックアップテーブル（ＬＵＴ）およびプログラム可能なルーティングスイッチの構成値が、シフトレジスタ内に配置された複数のフリップフロップによって提供される。このシフトレジスタは、工場テストモードでテスト値を、かつ演算モードで（クライアントが要求するＦＰＧＡのいかなる機能でも実施する）演算構成値を受け取ることができる。ビットストリームはシフトレジスタの一方の端で供給され、かつ最後のフリップフロップがその値を受け取るまでの間にわたりクロックされる。例えば、放射線曝露に起因する、格納された値の破損を識別するために、シフトレジスタの他方の端で値をクロックアウトして、初期ビットストリームと比較することもできる。特定の選択されたシフトレジスタにデータをロードするか、またはそれからデータを読み取るためのクロックゲーティングアーキテクチャが提案される。
2018537871.tif 000002
【特許請求の範囲】
【請求項１】
論理関数を実施することができるフィールドプログラマブルゲートアレイであって、複数のハードウェアルックアップテーブルを含み、各ルックアップテーブルの選択線または出力が、複数のプログラム可能なスイッチにより、別の前記ルックアップテーブルの前記選択線または出力とプログラム可能に相互接続されている、フィールドプログラマブルゲートアレイであって、
複数のフリップフロップをシフトレジスタ構成でさらに含むことによって特徴付けられ、前記ルックアップテーブルがそれぞれ、それぞれの前記フリップフロップの出力に結合された少なくとも１つの入力を有し、および前記プログラム可能なスイッチがそれぞれ、さらなるそれぞれの前記フリップフロップの出力に結合されており、
前記フィールドプログラマブルゲートアレイが、前記シフトレジスタが所定のテスト値でロードされる第１のモードと、前記シフトレジスタが前記論理関数を実施する値でロードされる第２のモードとで演算するように構成されている、フィールドプログラマブルゲートアレイ。
【請求項２】
前記シフトレジスタ内の第１のフリップフロップが入力マルチプレクサに結合され、前記入力マルチプレクサが第１の入力で前記所定のテスト値を、および第２の入力で前記論理関数を実施する前記値を受け取り、かつテストパターンまたはデータビットストリームのいずれかを前記第１のフリップフロップに供給するように適合されたモード選択信号に応答する、請求項１に記載のフィールドプログラマブルゲートアレイ。
【請求項３】
前記シフトレジスタが、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のシフトレジスタのうちの１つである、請求項１または２に記載のフィールドプログラマブルゲートアレイ。
【請求項４】
前記複数のシフトレジスタが、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で並列にロードされるように構成されている、請求項３に記載のフィールドプログラマブルゲートアレイ。
【請求項５】
前記複数のシフトレジスタが、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で直列にロードされるように構成されている、請求項３に記載のフィールドプログラマブルゲートアレイ。
【請求項６】
アドレス指定システムをさらに含み、それにより、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値でロードされるように、前記複数のシフトレジスタのいずれかが個別にまたはグループごとにアドレス指定され得る、請求項３〜５のいずれか一項に記載のフィールドプログラマブルゲートアレイ。
【請求項７】
前記アドレス指定システムが、前記シフトレジスタのそれぞれと関連付けられたそれぞれのアドレス指定可能なクロックゲートを含み、前記クロックゲートが、このようにアドレス指定されるときに関連付けられる前記シフトレジスタにクロック信号を供給するように適合されている、請求項６に記載のフィールドプログラマブルゲートアレイ。
【請求項８】
前記シフトレジスタに前記第２の演算モードでロードされた前記論理関数を実施する前記値が、前記シフトレジスタから読み戻される第３の演算モードを実施するようにさらに適合されている、請求項１〜７のいずれか一項に記載のフィールドプログラマブルゲートアレイ。
【請求項９】
ＦＰＧＡを動作させる方法であって、
プログラミングシフトレジスタに結合された出力を有するマルチプレクサに、テストプロトコルを実施する構成値を受け取る入力を選択するように命令するステップと、
複数のＬＵＴフリップフロップに、テスト構成に入るように命令するステップであって、前記ＬＵＴフリップフロップがそれぞれ、前記テストプロトコルを実施する入力を受け取り、前記ＬＵＴフリップフロップがシフトレジスタとして接続される、ステップと、
前記プログラミングシフトレジスタをクロックして、前記テストプロトコルを実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタの要素の第１のセットをロードするステップと、
前記プログラミングシフトレジスタをクロックして、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットをロードするステップと、
前記複数のＬＵＴフリップフロップに、前記ＬＵＴフリップフロップがそれぞれ複数のＬＵＴの前記出力から入力をそれぞれ受け取る演算構成に入るように命令するステップと、
前記複数のＬＵＴにデータ入力を適用するステップと、
前記ＬＵＴフリップフロップをクロックして、それぞれの前記フリップフロップへの前記ＬＵＴそれぞれの前記出力をサンプリングするステップであって、前記出力が前記テストプロトコルおよび前記データ入力に応答する、ステップと、
前記ＬＵＴフリップフロップに、前記ＬＵＴフリップフロップがＬＵＴシフトレジスタ内で接続され、かつシフトレジスタとして接続されるテスト構成に入るように命令するステップと、
前記ＬＵＴフリップフロップをクロックして、前記テストプロトコルおよび前記データ入力に応答する前記ＬＵＴの前記出力を含む、前記ＬＵＴシフトレジスタの前記値を読み出すステップと
を含む、方法。
【請求項１０】
ＦＰＧＡを動作させる方法であって、
プログラミングフリップフロップに結合された出力を有するマルチプレクサに、論理関数を実施する構成値を受け取る入力を選択するように命令するステップと、
前記複数のＬＵＴフリップフロップに、前記ＬＵＴフリップフロップがそれぞれ複数のＬＵＴの前記出力から入力をそれぞれ受け取る演算構成に入るように命令するステップと、
前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタの要素の第１のセットをロードするステップと、
前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットをロードするステップと
を含む、方法。
【請求項１１】
第１のプログラミングシフトレジスタの前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
さらなる前記プログラミングシフトレジスタに対して前記有効にするステップ、前記命令するステップ、および前記クロックするステップを繰り返すさらなるステップと
を含む、請求項１０に記載の方法。
【請求項１２】
ＦＰＧＡを動作させる方法であって、
プログラミングシフトレジスタをクロックして、論理関数を実施するＬＵＴ構成値で前記プログラミングシフトレジスタの要素の第１のセットを読み出すステップと、
前記プログラミングシフトレジスタをクロックして、前記論理関数を実施するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットを読み出すステップと
を含む、方法。
【請求項１３】
第１のプログラミングシフトレジスタの前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
さらなる前記プログラミングシフトレジスタに対して前記有効にするステップおよび前記クロックするステップを繰り返すさらなるステップと
を含む、請求項１２に記載の方法。
【請求項１４】
論理関数を実施する前記ＬＵＴ構成、および前記プログラミングシフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するＬＵＴ構成、および元々前記シフトレジスタに読み込まれた論理関数を実施するルーティングスイッチ構成と比較するさらなるステップを含む、請求項１３に記載の方法。
【請求項１５】
請求項１０〜１４のいずれか一項に記載のステップを実施するように適合されたコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムを組み込んだコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム可能論理デバイスに関し、より詳細には、フィールドプログラマブルゲートアレイデバイスに関する。
【背景技術】
【０００２】
ＦＰＧＡは、プログラム可能論理デバイスの一種である。それらは、概して標準的なプログラム可能論理ブロックに基づいており、多数の論理ブロックが一緒に配置されて様々な関数を実施する。
【０００３】
図１は、現時点の技術水準において知られているようなＦＰＧＡシステムの一例を概略的に示す。
【０００４】
図１に示されるように、ＦＰＧＡチップ１０は、例えば、上述したような複数の論理ブロック１１を含む。チップはまた、複数の入力／出力ポート１２を含む。これらの論理ブロック１１および入力／出力ポート１２を接続しているのは、複数のトラック１４である。これらのトラックの接続点には、複数のプログラム可能なルーティング区域１３も設けられている。これらのプログラム可能なルーティング区域には、各スイッチと接続されたメモリセルに格納された論理値の制御下で、交差するトラックの任意の対を選択的に接続することができるスイッチが設けられている。スイッチメモリ値は、システムの起動時に不揮発性メモリから設定される。したがって、必要に応じてスイッチメモリにおいて値を設定することにより、任意の論理ブロックの任意の接続を任意の他の論理ブロックまたは任意の入力／出力ポート１２の接続に結合することができる。このように、各論理ブロックの演算を定義するメモリユニットと、論理ブロック間の適切な接続を確立するスイッチメモリ１３とを適切に構成することにより、任意の所望の機能を実施することができる。
【０００５】
図２は、現時点の技術水準において知られているようなＦＰＧＡシステムの要素のさらなる詳細を示す。
【０００６】
図２に示されている要素は、図１に関して上述した機能部分の部分的な実施の代表的な例を構成する。
【０００７】
図２に示されるように、第１のルックアップテーブル（ＬＵＴ）２１と、第２のルックアップテーブル（ＬＵＴ）２２と、複数のさらなるＬＵＴ（図示せず）とが設けられている。第１のＬＵＴ２１は、７つの２入力マルチプレクサ２１１、２１２、２１３、２１４、２１５、２１６、２１７をそれぞれ含む。第２のＬＵＴおよびさらなるＬＵＴも同様に構成されている。これらのマルチプレクサは、８入力マルチプレクサを構成するように３つの行でカスケードに配列され、その出力は、ＬＵＴの出力を構成する。各カスケード配列におけるマルチプレクサの第１番目の行（２１１、２１３、２１５および２１７）は、いずれも合計で８つの入力を有する。これらの８つの入力は、第１のＬＵＴ２１のプログラミング入力を構成する。各行の選択入力は、ＬＵＴの３つのデータ入力を構成するようにまとめられている。第１のＬＵＴのデータ入力およびデータ出力は、トラック２５０１、２５０２のセットに接続されている。第２のＬＵＴおよびさらなるＬＵＴの入力および出力は、さらなるトラックのネットワーク（図示せず）に対応して接続されている。従来、このように３つのデータ入力を有するＬＵＴは、「ＬＵＴ３」と呼ばれている。第１のＬＵＴ２１の８つのプログラミング入力はそれぞれ、それぞれのスタティックＲＡＭメモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８に接続されている。対応するスタティックＲＡＭメモリデバイスは、システムに設けられた第２のＬＵＴ２２および他のＬＵＴ（図示せず）の構成入力を提供する。演算中、これらのメモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８は、各ＬＵＴの８つのプログラミング入力のそれぞれに一定の所定の論理値を提供する。各ＳＲＡＭセルの内容は、２つのインバータで構築されたラッチを含むように概略的に示されており、２つのインバータはそれぞれ他方の出力を受け取り、トランジスタスイッチを有する。トランジスタスイッチはワード線２３によって切り替えられ、ワード線２３は、ラッチのインバータのうちの１つの出力の値をビット線に選択的に出力できるように設けられており、ビット線は、ＬＵＴ２１７のそれぞれの構成入力に、かつまたデータ線２４にも接続されており、これにより、ラッチの値を設定することができる。各メモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８のビット線は、選択バス２４に接続され、各メモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８のワード線は、データバス２３に接続されている。回路開始フェーズの間、各メモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８が順次アドレス指定され、所望の値が対象のラッチに対して設定される。ＬＵＴの論理的挙動は、その３つのデータ入力の任意の２進値に対する応答であり、したがって、必要に応じて定義することができる。これが、ＦＰＧＡ技術の基礎をなす基本概念である。しかしながら、２つのＬＵＴ３を含む単一の論理ブロックが実施することができる関数は限定されているが、上述したような複数の適切に構成されたＬＵＴを相互に接続することにより、あらゆる任意の組み合わせ関数を実施可能であることが理解されるであろう。この相互接続は、データチャネル２５０１、２５０２、および他のＬＵＴからのデータを運ぶさらなるチャネル（図示せず）のプログラム可能な相互接続によって実現される。示されているように、チャネル２５０１、２５０２は垂直に配置されているが、チャネル２５０１および２５０２と交差するさらなるチャネル２５０３が設けられている。チャネル２５０１および２５０３のそれぞれの線の交差部には、プログラム可能なスイッチングユニット２６が設けられている。スイッチングユニットにおいて、２つの線の交差部が合計で４つの接続を構成することを考慮すると、スイッチングユニットは、これらの４つの接続のうちの任意の２つの間の接続を行うか、または切断するように配置された６つのトランジスタスイッチを含む。これらのトランジスタスイッチはそれぞれ、それぞれのスタティックメモリユニット２６１、２６２、２６３、２６４、２６５、２６６から受け取った値により、開かれるかまたは閉じられるように設定されている。さらに、対応するスタティックメモリデバイスを有するそのようなプログラム可能なスイッチングユニットが、トラックの多くの交差部またはすべての交差部（図示せず）に設けられている。示されているようなこれらのスタティックメモリデバイス２６１、２６２、２６３、２６４、２６５、２６６は、メモリデバイス２５１、２５２、２５３、２５４、２５５、２５６、２５７、２５８と同一であり、同じアドレスおよびデータバス２３および２４に接続されている。その結果、回路開始フェーズの間、ＬＵＴメモリデバイスおよびスイッチメモリデバイスの両方が順次アドレス指定され、所望の値が対象のラッチに対して設定されることで、各ＬＵＴの挙動および任意の他のＬＵＴへのその接続を必要に応じて構成することが可能になる。
【０００８】
国際公開第２０１２／１２３２４３  Ａ１号パンフレット、米国特許第７４６３０５６  Ｂ１号明細書、米国特許第６０２１５１３  Ａ号明細書、米国特許第５４３２４４１  Ａ号明細書、米国特許第８０９１００１  Ｂ２号明細書、米国特許第５６７５５８９  Ａ号明細書および米国特許第５０２７３５５  Ａ号明細書は、上記の特定の態様を記載している。
【０００９】
ｈｔｔｐｓ：／／ｗｗｗ．ｅｃｅ．ｕｂｃ．ｃａ／〜ｌｅｍｉｅｕｘ／ｐｕｂｌｉｃａｔｉｏｎｓ／ａｋｅｎｏｖａ−ｍａｓｃ２００５．ｐｄｆから入手可能なＶｉｃｔｏｒ  Ｏｌｕｂｕｎｍｉ  Ａｋｅｎ’Ｏｖａによる“Ｂｒｉｄｇｉｎｇ  ｔｈｅ  Ｇａｐ  ｂｅｔｗｅｅｎ  Ｓｏｆｔ  ａｎｄ  Ｈａｒｄ  ｅＦＰＧＡ  Ｄｅｓｉｇｎ”という名称の論文の第３．２２章は、さらなる背景情報を提供している。
【００１０】
説明したアプローチは非常に柔軟であるが、ＬＵＴと、メモリユニットのアドレスおよびデータのバスとの間の相互接続トラックは、かなりのスペースを占めることが理解されるであろう。図２の非常に単純化された配列においてさえ、示されている線の数はかなり多く、これでは、どのような実際の実施でも直ちに煩わしいものとなる。これは、デバイスの製造時に適切な挙動を確認するために設けられるテスト機能を回路内で実施する必要があることで、なお一層の装備の追加が必要になることによってさらに悪化する。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】国際公開第２０１２／１２３２４３号
【特許文献２】米国特許第７４６３０５６号明細書
【特許文献３】米国特許第６０２１５１３号明細書
【特許文献４】米国特許第５４３２４４１号明細書
【特許文献５】米国特許第８０９１００１号明細書
【特許文献６】米国特許第５６７５５８９号明細書
【特許文献７】米国特許第５０２７３５５号明細書
【非特許文献】
【００１２】
【非特許文献１】Ｂｒｉｄｇｉｎｇ  ｔｈｅ  Ｇａｐ  ｂｅｔｗｅｅｎ  Ｓｏｆｔ  ａｎｄ  Ｈａｒｄ  ｅＦＰＧＡ  Ｄｅｓｉｇｎ，ｂｙ  Ｖｉｃｔｏｒ  Ｏｌｕｂｕｎｍｉ  Ａｋｅｎ’Ｏｖａ
【発明の概要】
【課題を解決するための手段】
【００１３】
第１の態様によれば、論理関数を実施することができるフィールドプログラマブルゲートアレイが提供される。前記フィールドプログラマブルゲートアレイは、複数のハードウェアルックアップテーブルを含み、各ルックアップテーブルの選択線または出力は、複数のプログラム可能なスイッチにより、別の前記ルックアップテーブルの選択線または出力とプログラム可能に相互接続されている。このフィールドプログラマブルゲートアレイは、複数のフリップフロップをシフトレジスタ構成でさらに含み、プログラミングシフトレジスタを構成することによって特徴付けられ、ルックアップテーブルがそれぞれ、それぞれの前記フリップフロップの出力に結合された少なくとも１つの入力を有し、および前記プログラム可能なスイッチがそれぞれ、さらなるそれぞれの前記フリップフロップの出力に結合されており、前記フィールドプログラマブルゲートアレイは、前記プログラミングシフトレジスタが所定のテスト値でロードされる第１のモードと、前記プログラミングシフトレジスタが前記論理関数を実施する値でロードされる第２のモードとで演算するように構成されている。
【００１４】
プログラミングシフトレジスタを用いてＦＰＧＡをプログラムすることにより、メモリセルをアドレス指定するためのみのチップのスペースが削減され、特に工業規模の生産を対象としたスキャンチェーン技法によるテスト容易性が向上する。
【００１５】
第１の態様の発展形態によれば、プログラミングシフトレジスタ内の第１のフリップフロップは、第１の入力で所定のテスト値を、および第２の入力で前記論理関数を実施する前記値を受け取る入力マルチプレクサであって、テストパターンまたはデータビットストリームのいずれかを前記第１のフリップフロップに供給するように適合されたモード選択信号に応答する入力マルチプレクサに結合されている。
【００１６】
これは、表面積を増やすことなく、特定の物理リソースを２つの機能間で共有することが可能であることを意味する。
【００１７】
第１の態様のさらなる発展形態によれば、プログラミングシフトレジスタは、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のプログラミングシフトレジスタのうちの１つである。
【００１８】
複数のプログラミングシフトレジスタにより、スキャンチェーンへの組織化にモジュラーアプローチを採用することが可能になるため、テストの柔軟性を高め、いずれの時点においてもクロックされるフリップフロップが少なくなるため、電力消費を削減する。
【００１９】
第１の態様のさらなる発展形態によれば、複数のプログラミングシフトレジスタは、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で並列にロードされるように構成されている。
【００２０】
複数のプログラミングシフトレジスタを並列にロードすることにより、初期化時間を短縮し、クロック信号の共有により総電力消費を抑制することができる。
【００２１】
第１の態様のさらなる発展形態によれば、複数のプログラミングシフトレジスタは、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で直列にロードされるように構成されている。
【００２２】
複数のプログラミングシフトレジスタを直列にロードすることにより、プログラミングを簡略化し、総電力消費を抑制することができる。
【００２３】
第１の態様のさらなる発展形態によれば、フィールドプログラマブルゲートアレイは、アドレス指定システムをさらに含み、それにより、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値でロードされるように、前記複数のプログラミングシフトレジスタのいずれかが個別にまたはグループごとにアドレス指定され得る。
【００２４】
個別にまたはグループごとにプログラミングシフトレジスタをアドレス指定することが可能になることにより、特定の用途に実際に求められているプログラミングシフトレジスタのみをアドレス指定することが可能になるため、柔軟性を高め、初期化時間を短縮し、電力消費を削減する。
【００２５】
第１の態様のさらなる発展形態によれば、アドレス指定システムは、各プログラミングシフトレジスタまたはグループと関連付けられたそれぞれのアドレス指定可能なクロックゲートを含み、クロックゲートは、このようにアドレス指定されるときに関連付けられるプログラミングシフトレジスタにクロック信号を供給するように適合されている。
【００２６】
クロックを用いてアドレス指定を制御することにより、クロックの伝搬を制限することによって電力消費を削減する。
【００２７】
第１の態様のさらなる発展形態によれば、フィールドプログラマブルゲートアレイは、第３の演算モードを実施するようにさらに適合されており、第３のモードでは、プログラミングシフトレジスタに第２の演算モードでロードされた論理関数を実施する値が、第２のモードのためにロードされた論理関数を実施する値と比較するために、プログラミングシフトレジスタから読み戻される。
【００２８】
演算フェーズ後に初期構成ビットストリームをフリップフロップの実際の構成と比較することが可能になることにより、例えば航空宇宙、軍事または原子力産業の用途において、構成値の破損による誤った結果を検出する手段が提供される。
【００２９】
第２の態様によれば、ＦＰＧＡを動作させる方法が提供される。本方法は、プログラミングシフトレジスタに結合された出力を有するマルチプレクサに、テストプロトコルを実施する構成値を受け取る入力を選択するように命令するステップと、複数のＬＵＴフリップフロップに、テスト構成に入るように命令するステップとを含み、前記ＬＵＴフリップフロップがそれぞれ、前記テストプロトコルを実施する入力を受け取り、前記ＬＵＴフリップフロップがシフトレジスタとして接続される。次に、プログラミングシフトレジスタがクロックされて、前記テストプロトコルを実施する前記構成値に属するＬＵＴ構成値でプログラミングシフトレジスタの要素の第１のセットと、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットとをロードする。次に、複数のＬＵＴフリップフロップは、演算構成に入るように命令され、前記ＬＵＴフリップフロップはそれぞれ、複数のＬＵＴの出力から入力をそれぞれ受け取り、次に、データ入力が複数のＬＵＴに適用される。次に、ＬＵＴフリップフロップは、それぞれの前記フリップフロップへの前記ＬＵＴそれぞれの出力をサンプリングするようにクロックされ、この出力は前記テストプロトコルおよび前記データ入力に応答する。次に、ＬＵＴフリップフロップは、テスト構成に入るように命令され、ＬＵＴフリップフロップがＬＵＴシフトレジスタ内で接続され、かつシフトレジスタとして接続され、前記テストプロトコルおよび前記データ入力に応答する前記ＬＵＴの前記出力を含む、前記ＬＵＴシフトレジスタの値を読み出すようにクロックされる。
【００３０】
第３の態様によれば、ＦＰＧＡを動作させる方法であって、プログラミングフリップフロップに結合された出力を有するマルチプレクサに、論理関数を実施する構成値を受け取る入力を選択するように命令するステップと、前記複数のＬＵＴフリップフロップに、演算構成に入るように命令するステップとを含み、前記ＬＵＴフリップフロップがそれぞれＬＵＴの出力から入力をそれぞれ受け取る、方法が提供される。次に進んで、本方法は、プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するＬＵＴ構成値でプログラミングシフトレジスタの要素の第１のセットをロードし、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットをロードする。
【００３１】
第３の態様の発展形態によれば、本方法は、第１のプログラミングシフトレジスタの出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、さらなる前記プログラミングシフトレジスタに対してクロックするステップおよび命令するステップを繰り返すさらなるステップとを含む。
【００３２】
第４の態様によれば、ＦＰＧＡを動作させる方法が提供され、本方法は、第１のプログラミングシフトレジスタをクロックして、論理関数を実施するＬＵＴ構成値でプログラミングシフトレジスタの要素の第１のセットを読み出し、論理関数を実施するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットを読み出すステップを含む。
【００３３】
第４の態様の発展形態によれば、本方法は、第１のプログラミングシフトレジスタの出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、さらなるプログラミングシフトレジスタに対してクロックするステップを繰り返すさらなるステップとを含む。
【００３４】
第４の態様のさらなる発展形態によれば、本方法は、論理関数を実施するＬＵＴ構成、およびプログラミングシフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するＬＵＴ構成、および元々シフトレジスタに書き込まれた論理関数を実施するルーティングスイッチ構成と比較するさらなるステップを含む。
【００３５】
本発明の第５の態様によれば、第２の態様または第３の態様の方法のステップを実施するように適合されたコンピュータプログラムが提供される。
【００３６】
本方法をコンピュータプログラムにおいて実施することにより、ＦＰＧＡとインタフェースし、柔軟なかつ標準化されたプラットフォームで本発明を実施するための好都合な機構が提供される。
【００３７】
本発明の第６の態様によれば、第５の態様のコンピュータプログラムを組み込んだコンピュータ可読媒体が提供される。
【００３８】
以下、本発明の上記および他の利点を添付の図面を参照して説明する。
【図面の簡単な説明】
【００３９】
【図１】現時点の技術水準において知られているＦＰＧＡシステムの一例を概略的に示す。
【図２】現時点の技術水準において知られているＦＰＧＡシステムの要素のさらなる詳細を示す。
【図３】本発明の一実施形態によるＦＰＧＡシステムの要素を示す。
【図４】ＦＰＧＡ回路構成の第１の構成を示す。
【図５】ＦＰＧＡ回路構成の第２の構成を示す。
【図６】ＦＰＧＡ回路構成の第３の構成を示す。
【図７】図４の構造を、構成の読み出しに適合させた一変形形態を示す。
【図８】図６の構造を、構成の読み出しに適合させた一変形形態を示す。
【図９】さらなる一実施形態による演算部のさらなる詳細を示す。
【図１０】一実施形態によるＦＰＧＡをロードする方法を示す。
【図１１】一実施形態によるＦＰＧＡを動作させる方法を示す。
【図１２】さらなる一実施形態によるＦＰＧＡを検証する方法を示す。
【図１３】本発明の実施形態の実施に適した一般的なコンピューティングシステムを示す。
【発明を実施するための形態】
【００４０】
図３は、本発明の一実施形態によるＦＰＧＡシステムの要素を示す。
【００４１】
図３に示されている要素は、本発明の一実施形態に従って、図１に関して上述した機能部分の部分的な実施の代表的な例を構成する。
【００４２】
図３に示されるように、第１のルックアップテーブル（ＬＵＴ）２１と、第２のルックアップテーブル（ＬＵＴ）２２と、複数のさらなるＬＵＴ（図示せず）とが設けられている。第１のＬＵＴ２１は、７つの２入力マルチプレクサ２１１、２１２、２１３、２１４、２１５、２１６、２１７（参照符号が図３以降省略されている）をそれぞれ含む。第２のＬＵＴおよびさらなるＬＵＴも同様に構成されている。これらのマルチプレクサは、８入力マルチプレクサを構成するように３行でカスケードに配列され、その出力は、ＬＵＴの出力を構成する。各カスケード配列におけるマルチプレクサの第１番目の行（２１１、２１３、２１５および２１７）は、いずれも合計で８つの入力を有する。これらの８つの入力は、第１のＬＵＴ２１のプログラミング入力を構成する。各行の選択入力は、ＬＵＴの３つのデータ入力を構成するようにまとめられている。第１のＬＵＴのデータ入力およびデータ出力は、トラック２５０１、２５０２のセットに接続されている。第２のＬＵＴおよびさらなるＬＵＴの入力および出力は、さらなるトラックのネットワーク（図示せず）に対応して接続されている。従来、このように３つのデータ入力を有するＬＵＴは、「ＬＵＴ３」と呼ばれている。
【００４３】
この実施形態によれば、第１のＬＵＴ２１の８つのプログラミング入力はそれぞれ、Ｄフリップフロップ３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４のＱ端子にそれぞれ接続されている。
【００４４】
同様に、システムに設けられた第２のＬＵＴ２２および他のＬＵＴ（図示せず）の構成入力は、さらなるＤフリップフロップ（図示せず）によって提供される。これらのフリップフロップは、各フリップフロップの出力Ｑを次のフリップフロップの入力Ｄに接続することにより、および単一のクロック線３７２の各フリップフロップのクロック入力をまとめることにより、フリップフロップ３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４とともに配置されて、プログラミングシフトレジスタ３７を構成している。演算中、これらのメモリデバイスは、図２を参照して説明したＳＲＡＭデバイスと同じ方法で、各ＬＵＴの８つのプログラミング入力のそれぞれに一定の所定の論理値を提供する。
【００４５】
回路開始フェーズの間、プログラミングシフトレジスタ内の各フリップフロップの所望の最終値に対応するコードワードは、ビットごとにプログラミングシフトレジスタ内の第１のフリップフロップ３７０１に入力され、プログラミングシフトレジスタに沿って、最初のビットが最後のフリップフロップに到達するまで一度に１ビットずつクロックされ、第１のフリップフロップはその最終値を受け取る。
【００４６】
図３のシステムは、上記の図２に関して説明したのと同様の相互接続機構を実施する。しかしながら、この実施形態によれば、プログラム可能なスイッチユニット２６の各トランジスタスイッチは、プログラミングシフトレジスタ３７に属するそれぞれのフリップフロップ３７０１、３７０２、３７０３、３７０４、３７０５、３７０６から受け取った値により、開かれるかまたは閉じられるように設定されている。さらに、対応するフリップフロップデバイスを有するそのようなプログラム可能なスイッチングユニットが、トラックの多くの交差部またはすべての交差部に設けられている（図示せず）。したがって、回路開始フェーズの間、要求されるＦＰＧＡのあらゆる論理関数を実施するためのプログラミングシフトレジスタ内の各フリップフロップの所望の最終値に対応するビットストリームが、ビットごとにプログラミングシフトレジスタ内の第１のフリップフロップ３７０１に入力され、プログラミングシフトレジスタに沿って、最初のビットが最後のフリップフロップに到達し、最初のフリップフロップがその最終値を受け取るまで一度に１ビットずつクロックされ、このようにして、ルーティングスイッチの値およびＬＵＴ構成入力を一度にまとめて定義する。
【００４７】
図３のシステムは、２つの入力３８１および３８２を切り替えるマルチプレクサ３８をさらに含む。一実施形態によれば、一方の入力３８１は、使用中のＦＰＧＡプログラム、すなわち、あらゆる任意のおよびユーザにより要求される場合もあるビットシーケンスを実施するために、プログラミングシフトレジスタ３７にロードされる設定値に対応する設定ストリームを受け取ることができる一方、他方のマルチプレクサ入力３８２は、テスト構成において様々なシステムコンポーネントに要求される設定に対応する設定ストリームを受け取ることができる。
【００４８】
ＳＲＡＭメモリセルをＤフリップフロップに置き換えることは、トランジスタ数の増加を暗に意味し、したがって、標準的なＩＣ設計要件に反している。
【００４９】
フリップフロップを採用してルーティングスイッチおよびＬＵＴ構成入力を制御することにより、テスト目的のためのみに余分なフリップフロップを追加せずにスキャンチェーンテスト技法を実施することが可能になる。これにより、上述のトランジスタ数の増加が相殺されるだけでなく、特にテストコンポーネントのルーティングおよび制御に関してチップの設計もさらに簡略化される。
【００５０】
さらに、多数のＳＲＡＭセルに対するアドレス指定およびデータバスの必要をなくすことにより、これらの目的のために通常確保されるチップ面積の点で大幅に節約することが可能である。
【００５１】
したがって、論理関数を実施することができるフィールドプログラマブルゲートアレイが開示されており、前記フィールドプログラマブルゲートアレイは、複数のハードウェアルックアップテーブルを含み、各ルックアップテーブルの選択線または出力は、複数のプログラム可能なスイッチにより、別の前記ルックアップテーブルの選択線または出力とプログラム可能に相互接続されている。前記フィールドプログラマブルゲートアレイは、複数のフリップフロップをプログラミングシフトレジスタ構成でさらに含むことによって特徴付けられ、前記ルックアップテーブルがそれぞれ、それぞれの前記フリップフロップの少なくとも１つの出力に結合された入力を有し、前記プログラム可能なスイッチがそれぞれ、さらなるそれぞれの前記フリップフロップの出力に結合されており、前記フィールドプログラマブルゲートアレイは、前記プログラミングシフトレジスタが所定のテスト値でロードされる第１のモードと、前記プログラミングシフトレジスタが前記論理関数を実施する値でロードされる第２のモードとで演算するように構成されている。
【００５２】
前記プログラミングシフトレジスタ内の第１のフリップフロップは、入力マルチプレクサに結合することができ、前記入力マルチプレクサは、第１の入力で前記所定のテスト値を、および第２の入力で前記論理関数を実施する前記値を受け取り、かつ前記テストパターンまたは前記データビットストリームのいずれかを前記第１のフリップフロップに供給するように適合されたモード選択信号に応答する。
【００５３】
図３は、単一のプログラミングシフトレジスタ３７を示しているが、提案されている機構はより多くのＬＵＴおよびプログラム可能なスイッチングユニットを組み込むようにスケーリングされるため、複数または多次元のプログラミングシフトレジスタを実装することが望ましい場合があることが理解されるであろう。
【００５４】
したがって、例えば、図３を参照して説明したようなプログラミングシフトレジスタは、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のプログラミングシフトレジスタの１つであってもよい。
【００５５】
このような複数のプログラミングシフトレジスタは、第１のモードにおける所定のテスト値で、または第２のモードにおける論理関数を実施する前記値で並列または直列にロードされるように構成することができる。
【００５６】
当業者であれば、図３のシステムは非常に単純化されているが、実際のシステムは、本明細書に記載されている原理から逸脱することなく、はるかにこれよりも複雑であることを理解するであろう。特に、各論理ブロックは、２つ以上のＬＵＴを含むことができ、例えば、拡張機能をサポートするため、または逐次制御を導入するための追加の論理をさらに含むことができる。複数のこのような論理ブロックをグループにまとめて配置することができる。
【００５７】
再び図１を参照すると、ある演算モードでタイル間に接続性を提供するトラック１４が概略的に示されており、アドレスバス２３およびデータバス２４は示されていないが、実際のデバイスでは、デバイスの表面積に対してかなり大きい部分を占めるであろうことは明白である。図３のプログラミングシフトレジスタ配列は、この問題に対処するものである。なぜなら各メモリセルを個別にアドレス指定する必要なしに、多数のメモリデバイス用のビットストリームをプログラミングシフトレジスタにロードすることが可能になるからである。これにより、演算が簡単になるだけでなく、アドレス指定およびバストラックに関して、表面積の点での要求も緩和される。それにもかかわらず、ＦＰＧＡデバイス全体に対するすべての構成セルを組み込んだ単一のプログラミングシフトレジスタを設けることが望ましくない場合があることが理解されるであろう。なぜなら、このようなプログラミングシフトレジスタは、管理不能なほど長くなり、クロック管理や電力消費などに対する影響を伴うからである。一方、複数のプログラミングシフトレジスタに基づいたアプローチを採用することが可能であり、各プログラミングシフトレジスタがチップの特定の部分の構成設定を管理する。このような各プログラミングシフトレジスタまたはプログラミングシフトレジスタのグループ内の第１のフリップフロップは、図２の個々のメモリセルと同様の方法で、またはそれ以外の方法でアドレス指定することができる。その際、各プログラミングシフトレジスタの長さの選択は、一方では構成ビットストリームの分配を単純にして長さを長くしたプログラミングシフトレジスタと、他方では構成ビットストリームの分配を複雑にして長さを短くしたプログラミングシフトレジスタとの妥協点になり、それはバスの幅を広くすること、およびまたはアドレス指定を複雑にすることを意味する場合もある。どのような場合であれ、最適な妥協点は、使用されている半導体技術およびＦＰＧＡ回路自体の様々な特性に依存することになる。
【００５８】
図４は、ＰＧＡ回路構成の第１の構成を示す。示されているように、１つまたは複数のＬＵＴを含み、場合により補助回路および対応するプログラム可能なルーティングスイッチ等を有する演算部４１が設けられている。示されているように、この演算部４１は、３つのプログラミングシフトレジスタ４２１、４３１および４４１によって構成値が与えられ、３つの入力接続４２２、４３２、４４２から入力値を受け取り、それぞれがそれぞれのクロック４５１、４５２、４５３を有する。線４２２、４３２、４４２はそれぞれ、それ自体のそれぞれの入力マルチプレクサ４８１、４８２、４８３を有する。これは、例えばソフトウェア制御下で、上述したような演算ビットストリームまたはテストパターンを切り替えるように制御することができる。代替の実施形態では、複数のプログラミングシフトレジスタは、単一のマルチプレクサから入力を受け取ることができる。マルチプレクサの出力は、適切に制御されたデマルチプレクサによってそれぞれのプログラミングシフトレジスタにディスパッチされてもよく、または例えば以下の実施形態で説明するようにアドレス指定されてもよい。
【００５９】
示されているように、３つのプログラミングシフトレジスタは５つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態は、通常、４つ以上のプログラミングシフトレジスタも含むことになる。プログラミングシフトレジスタは、すべてが同じ数のフリップフロップを含むように示されているが、場合により、特定のプログラミングシフトレジスタは任意の数のフリップフロップを含むことができる。
【００６０】
適正な値が各フリップフロップに確実に到達するように、様々なプログラミングシフトレジスタのクロッキングを考慮しなければならない。これは、各プログラミングシフトレジスタがその長さに等しい数のクロックパルスのみを受け取らなければならないことを暗に意味する。なぜなら、さらなるパルスがあれば、クロックされる値がそれらの適正な宛先を越えることになるからである。この問題に対する１つのアプローチは、図４に示されるように、すべてのプログラミングシフトレジスタを同じ長さを有するように定義することである。あるいは、異なる長さのシフトレジスタが定義される場合、それらは、初期化フェーズの間に、各シフトレジスタがその長さに等しい数のクロック信号を確実に受け取るように適合されたクロック管理回路と関連付けることができる。さらなるアプローチによれば、各プログラミングシフトレジスタには、こうしたシフトレジスタのために意図されたビットストリーム内の、ビットストリームの開始または終了などの特定の位置を表示する特定のビットシーケンスを認識するように適合されたクロック管理回路を設けることができる。クロックマネージャはこのシーケンスを検出すると、クロックエントリを無効にする。このアプローチは、各シフトレジスタを独立にし、設計者が任意のサイズのプログラミングシフトレジスタを自由に定義することができるという利点を有する。あるいは、信号の切り替えおよびプログラミングシフトレジスタのクロックは、ソフトウェアによって駆動してもよい。
【００６１】
図５は、ＦＰＧＡ回路構成の第２の構成を示す。図５に示されているように、ＦＰＧＡは、図１のＦＰＧＡと同様に、論理ブロック５１１、５１２、５１３、５１４、５１５、５１６の行列のまわりに構成されている。論理ブロックの各行にそれぞれのプログラミングシフトレジスタが設けられていることで、論理ブロック５１１および５１２がプログラミングシフトレジスタ５２１から構成値を受け取り、論理ブロック５１３および５１４がプログラミングシフトレジスタ５３１から構成値を受け取り、また、論理ブロック５１５および５１６がプログラミングシフトレジスタ５４１から構成値を受け取るようになっている。示されているように、３つのプログラミングシフトレジスタはそれぞれ６つのフリップフロップを含み、そのうちの３つが各論理ブロックに結合されている。それぞれのプログラミングシフトレジスタ内のすべてのフリップフロップは、それらのクロック入力を共通に有するが、各プログラミングシフトレジスタは、それ自体のそれぞれのクロック５５１、５５２、５５３を有する。
【００６２】
示されているように、３つのプログラミングシフトレジスタは６つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態は、通常、４つ以上のプログラミングシフトレジスタも含むことになる。プログラミングシフトレジスタは、すべてが同じ数のフリップフロップを含むように示されているが、場合により、これが容認できない設計上の制約となる場合があり、その場合、各プログラミングシフトレジスタは任意の数のフリップフロップを含むことができる。
【００６３】
適正な値が各フリップフロップに確実に到達するように、様々なプログラミングシフトレジスタのクロックを考慮しなければならない。これについては、図４に関して上述したのと同様の手段が適用可能である。
【００６４】
演算ビットストリームとテストパターンとの間の多重化は、例えば上述の実施形態に関して説明したように実施することができる。演算ビットストリームまたはテストパターンおよびそれぞれのクロック信号の分配は、例えば、上述の実施形態に関して説明したようにプログラミングシフトレジスタ間に分配してもよい。
【００６５】
プログラミングシフトレジスタのアーキテクチャと論理ブロックのレイアウトとの間の直接的な構造上の対応を実装することにより、構成ビットストリームの生成に対して構造化されたアプローチを課すことで、ＦＰＧＡのプログラミングが容易になると考えられる。
【００６６】
図６は、ＦＰＧＡ回路構成の第２の構成を示す。図６に示されているように、ＦＰＧＡは、図５のＦＰＧＡと同様に、論理ブロック６１１、６１２、６１３、６１４、６１５、６１６の行列のまわりに構成されている。各論理ブロックには、それぞれのプログラミングシフトレジスタ６２１、６２２、６２３、６２４、６２５、６２６が設けられている。示されているように、６つのプログラミングシフトレジスタ６２１、６２２、６２３、６２４、６２５、６２６はそれぞれ３つのフリップフロップを含み、それらの関連付けられた論理ブロックの構成値を提供する。
【００６７】
各プログラミングシフトレジスタの第１のフリップフロップは、入力線６７上でその入力を受け取る。入力線６７は、各プログラミングシフトレジスタの第１のフリップフロップのＤ入力に共通に結合されている。
【００６８】
各プログラミングシフトレジスタ内のフリップフロップはすべて、それらのクロック入力を共通に有する。
【００６９】
単一のクロック分配ネットワーク６６が、それぞれのクロックゲート６３１、６３２、６３３、６３４、６３５、６３６により、各プログラミングシフトレジスタのクロック線に結合されている。示されているようなこれらのクロックゲートはそれぞれ、行選択入力および列選択入力を有することにより、両方の入力上の同時の論理高が、それぞれのプログラミングシフトレジスタのクロック線をクロック分配ネットワーク６６に接続しているスイッチを閉じてクロックパルスを受け取る。
【００７０】
示されているように、２つの列選択線６５１および６５２、ならびに３つの行選択線６４１、６４２、６４３がある。各クロックゲートの選択入力は、それぞれ異なる列選択線および行選択線の組み合わせに接続されていることで、特定の列選択線および行選択線を論理高に設定することにより、その行選択入力および列選択入力がそれらの２つの選択線に接続された単一のクロックゲートがアクティブ状態になる。
【００７１】
入力線からのデータ値は、あるプログラミングシフトレジスタがクロック入力を受け取ると、そのプログラミングシフトレジスタのみを通して伝搬されることになるため、１つの選択されたプログラミングシフトレジスタにクロック信号を送ることにより、単一の入力線６７で任意のプログラミングシフトレジスタを選択的にプログラムすることが可能である。
【００７２】
列選択線６５１および６５２は、列デコーダ６５によって制御され、行選択線６４１、６４２、６４３は、行デコーダ６４によって制御される。これらのデコーダは、入力線６７上の値に対応付けられた命令を受け取り、対象となっているプログラミングシフトレジスタのいずれかに入力線６７上の値をアドレス指定する。このように、初期化フェーズの間、図６の回路は、入力線６７上および線６６上の構成ビットストリームクロックだけでなく、デコーダ６４および６５におけるアドレス指定ビットストリームも受け取ることになる。
【００７３】
フリップフロップのサブセット、すなわち、所与の時間においてプログラムされている論理ブロックに属しているもののみがクロックされるという事実の結果として、電力消費が大幅に減少する。
【００７４】
ＦＰＧＡにおいて実施される実際のシステムでは、多くの論理ブロックが同一に構成され、共通の関数を実施することが理解されるであろう。本発明の利点の１つは、複数のプログラミングシフトレジスタのクロックゲートを有効にすることで、同じ構成値をいくつかのプログラミングシフトレジスタに並列でクロックすることが可能となり得ることである。これにより、ＦＰＧＡの初期化時間が短縮され、電力消費が削減される。
【００７５】
示されているように、３つのプログラミングシフトレジスタは３つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態はまた、通常、７つ以上の論理ブロックおよびそれに相応して７つ以上のプログラミングシフトレジスタを含むことになる。プログラミングシフトレジスタは、すべて同じ数のフリップフロップを含むように示されているが、各プログラミングシフトレジスタが独立してクロックされるため、図６のアプローチは、各プログラミングシフトレジスタが任意の数のフリップフロップを含むことができる構成にも同様に好適である。
【００７６】
このアドレス指定機能は、標準的な集積クロックゲーティングセルにより、またはそれ以外の方法により実施してもよい。特定の実施形態は、個々のアドレス指定とともにプログラミングシフトレジスタのグループの、またはすべてのプログラミングシフトレジスタの共通の使用可能性を提供することができる。
【００７７】
プログラミングシフトレジスタのアーキテクチャと論理ブロックのレイアウトとの間の直接的な構造上の対応を実装することにより、構成ビットストリームの生成に対して構造化されたアプローチを課すことで、ＦＰＧＡのプログラミングが容易になると考えられる。
【００７８】
所与のＦＰＧＡを、独立してプログラムされる区分に細分することができ、例えば図４、図５および図６に関して説明したような様々なプログラミングシフトレジスタのアーキテクチャの組み合わせが、同じＦＰＧＡにおいてその異なる部分に対して可能であることが理解されるであろう。
【００７９】
用途によっては、様々な構成メモリセルに格納された構成設定を読み戻すことが望ましいであろう。原則として、これらはシステムの初期化時に提供される構成ビットストリームと同一であると期待することができるが、実際には、状況によってはそうでない場合がある。例えば、宇宙空間、高高度飛行、原子力および軍事用途で起こり得るような電離放射線への曝露は、構成メモリセルの値をランダムに変更し、ＦＰＧＡによる後続の処理の結果を改ざんすることがある。元のビットストリームを構成メモリビットから読み出された格納された値と比較することにより、これが起こった可能性があるかどうかを判断するための手段が提供される。
【００８０】
このように、アドレス指定システムを含むことにより、前記複数のプログラミングシフトレジスタのいずれかに、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値でロードされるように、個別にアドレス指定することができるフィールドプログラマブルゲートアレイが開示されている。
【００８１】
さらに、このアドレス指定システムは、各プログラミングシフトレジスタと関連付けられたアドレス指定可能なクロックゲートをそれぞれ含むことができ、このクロックゲートは、このようにアドレス指定されるときに関連付けられるプログラミングシフトレジスタにクロック信号を供給するように適合されている。
【００８２】
図７は、図４の構造を、構成の読み出しに適合させた一変形形態を示す。図７に示されているように、図４を参照して説明したのと同じプログラミングシフトレジスタ４２１、４３１、４４１と関連付けられた同じ演算部４１が設けられている。示されているように、３つのプログラミングシフトレジスタのそれぞれの最後のフリップフロップは、その出力をＦＰＧＡ回路４１のコンポーネントだけでなく、マルチプレクサ４８にも提供する。このように、マルチプレクサ４８は、３つのプログラミングシフトレジスタ４２１、４３１、４４１のそれぞれの最後のフリップフロップから入力を受け取る。
【００８３】
演算中、ＦＰＧＡの処理フェーズが完了し、結果が生成されると、上述したような元のビットストリームとの一貫性を確保するように、構成フリップフロップの構成をダンプすることが望ましい場合がある。これが必要な場合、プログラミングシフトレジスタは、クロック線４６およびマルチプレクサ４８によってサンプリングされた各プログラミングシフトレジスタの出力を介してクロックされて、通常、元の構成ビットストリームと同一であるはずの多重ビットストリームを生成する。乗算器への選択信号４８１は、単にクロック線４６上のクロック周波数の３倍で３つの入力のラウンドロビン選択を生じさせるか、または例えば、プログラミングシフトレジスタの長さが異なる場合、各クロックパルスに特有なプログラムされたシーケンスを含むことができる。
【００８４】
図７のアプローチは、図５の構造に容易に適合可能であることが理解されるであろう。
【００８５】
図８は、図６の構造を、構成の読み出しに適合させた一変形形態を示す。図８に示されるように、ＦＰＧＡは、論理ブロック６１１、６１２、６１３、６１４、６１５、６１６の同じ行列のまわりに構成され、各論理ブロックには、図６に関して説明したようなそれぞれのプログラミングシフトレジスタ６２１、６２２、６２３、６２４、６２５、６２６、およびクロックゲート６３１、６３２、６３３、６３４、６３５、６３６が設けられている。示されているように、この構造は、６つのプログラミングシフトレジスタ６２１、６２２、６２３、６２４、６２５、６２６のそれぞれの１つの最後のフリップフロップの出力に接続された、１つの入力をそれぞれ有する６つのＡＮＤゲート６８１、６８２、６８３、６８４、６８５、６８６をさらに含む。６つのＡＮＤゲート６８１、６８２、６８３、６８４、６８５、６８６のそれぞれの第２の入力は、それぞれのクロックゲート６３１、６３２、６３３、６３４、６３５、６３６のＡＮＤゲートの出力にそれぞれ接続されている。この手段により、アドレス可能なクロックイネーブル機構を使用して、演算部の出力を選択的に有効にすることも可能である。６つのＡＮＤゲートの出力はそれぞれ、６つの入力ＯＲゲート６９１のそれぞれの入力に接続され、その出力は出力フリップフロップ６９２のＤ入力に送り込まれる。
【００８６】
演算中、ＦＰＧＡの演算フェーズが完了し、結果が生成されると、上述したような元のビットストリームとの一貫性を確保するように、構成フリップフロップの構成をダンプすることが望ましい場合がある。これが必要な場合、イネーブル線が論理高に設定され、その結果、選択されたＡＮＤゲートは、各プログラミングシフトレジスタの最後のフリップフロップの出力上の値をＯＲゲート６９１に渡す。上述した構成ビットストリーム入力と同様に、プログラミングシフトレジスタのいずれかの値が出力されるクロックゲートは、行デコーダ６４および列デコーダ６５を介して有効にされ、最初のクロックパルスが選択されたプログラミングシフトレジスタに到達する。クロックされたプログラミングシフトレジスタ内の最後のフリップフロップが論理高を生成する場合、これは、値を受け取るそれぞれのＡＮＤゲートに論理高を出力させ、この論理高がＯＲゲート６９１によって出力フリップフロップ６９２のＤ入力に渡され、出力フリップフロップが入力６９３でクロックパルスを受け取るまでそこに格納されると、その値が線６８４で出力される。この手段により、上述のようにクロックゲートを介して出力をオンにし、プログラミングシフトレジスタおよび出力フリップフロップを協調してクロックすることを可能にすることにより、各構成プログラミングシフトレジスタに格納された値を読み出し、元のビットストリームと比較することができる。
【００８７】
したがって、フィールドプログラマブルゲートアレイは、プログラミングシフトレジスタに第２の演算モードでロードされた論理関数を実施する値が、前記プログラミングシフトレジスタから読み戻される第３の演算モードを実施するようにさらに適合させることができる。
【００８８】
特定の実施形態は、ＦＰＧＡをプログラミングするための一連の方法ステップに関して説明され得ることが理解されるであろう。
【００８９】
上記はルーティングスイッチまたはＬＵＴ構成のいずれかに専用のプログラミングシフトレジスタについて全般的に説明しているが、任意のプログラミングシフトレジスタ内の任意のフリップフロップを必要に応じて任意のＦＰＧＡ要素に結合することが可能であることが理解されるであろう。
【００９０】
図９は、さらなる一実施形態による演算部のさらなる詳細を示す。
【００９１】
図９に示されるように、例えば、上述の実施形態を参照して説明したような、演算部レジスタに対応する演算部９１０が設けられている。この演算部９１０は、２つのＬＵＴ、９１１および９１２を含む。ＬＵＴ９１１、９１２の出力はそれぞれ、それぞれのマルチプレクサ９１３、９１４に接続されている。これらのマルチプレクサ９１３、９１４の出力は、フリップフロップ９１５、６１６にそれぞれ接続されている。マルチプレクサ９１３およびフリップフロップ９１５と、マルチプレクサ９１４およびフリップフロップ９１６とは、それぞれ一緒にデュアル構成のＬＵＴフリップフロップ９２１、９２２をそれぞれ構成する。マルチプレクサ９１３の第２の入力は、テスト値入力線９１７に接続されている。マルチプレクサ９１４の第２の入力は、ＬＵＴフリップフロップ９１６の出力に接続されている。２つのマルチプレクサ９１３、９１４の選択入力は、テストモード選択線９１８に共通に接続されている。各ＬＵＴフリップフロップ９１５、９１６の出力は、演算部９１０の出力線を供給している。２つのＬＵＴフリップフロップ９１５、９１６は、共通のクロック線９１９によって駆動される。ＬＵＴ９１１および９１２はそれぞれ３つのデータ入力を有し、これらがともに演算部の６つのデータ入力９２０を構成する。例えば上述の実施形態を参照して説明したようなプログラミングシフトレジスタに対応するプログラミングシフトレジスタ９３０がさらに設けられている。プログラミングシフトレジスタは、ほぼ上述の実施形態を参照して説明したように、ＬＵＴ９１１、９１２、および複数のプログラム可能なルーティングスイッチ（図示せず）の構成値を提供する。クロック９４１は、クロックゲート９４０によってプログラミングシフトレジスタ９３０のクロック線９４２に選択的に接続される。示されているようにクロックゲート９４０がイネーブル入力を有することにより、論理高は、プログラミングシフトレジスタのクロック線をクロック９４１に接続しているスイッチを閉じてクロックパルスを受け取る。クロックイネーブル入力９４３もプログラミング出力ＡＮＤゲート９５０の一方の入力に接続され、ＡＮＤゲート９５０の他方の入力は、プログラミングシフトレジスタ９３０の最後のフリップフロップの出力に接続されている。プログラミングシフトレジスタの第１のフリップフロップは、プログラミングシフトレジスタのデータ入力６７を構成する。演算部は、任意の数のＬＵＴを含むことができ、これらのＬＵＴは任意の数の入力を有することができ、入力の数に関係なく、ＬＵＴは複数の出力を有することができ、その一部またはすべてをＬＵＴフリップフロップと関連付け得ることが理解されるであろう。上述したように、マルチプレクサ９１３（および９１４）が適切な選択入力を受け取ると、２つのＬＵＴフリップフロップ９１５、９１６（テストモードと呼ばれる）がＬＵＴシフトレジスタを構成する。このシフトレジスタは、様々な演算部内のフリップフロップを含めて任意の数のＬＵＴフリップフロップを含むことができる。上述の実施形態に関して説明した様々な構成のいずれもが、図９の構成に同様に適合可能である。
【００９２】
演算中、この構成が、図１０を参照して説明するように、ＦＰＧＡをテストする方法をサポートする。
【００９３】
図１０は、一実施形態によるＦＰＧＡをロードする方法を示す。
【００９４】
図１０に示されるように、以下のステップを含むＦＰＧＡを動作させる方法が提供される。本方法は、ステップ１００１から開始し、ステップ１００２に進み、プログラミングシフトレジスタ９３０に結合された出力を有するマルチプレクサ３８に、テストプロトコルを実施する構成値を受け取る入力３８１を選択するように命令する。
【００９５】
ステップ１００３において、複数のＬＵＴフリップフロップ９２１、９２２にテスト構成に入るように命令し、前記ＬＵＴフリップフロップがそれぞれ前記テストプロトコルを実施する入力を受け取り、前記ＬＵＴフリップフロップがＬＵＴシフトレジスタとして接続される。
【００９６】
ステップ１００４において、前記プログラミングシフトレジスタ９３０をクロックして、前記テストプロトコルを実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタの要素の第１のセットをロードし、前記プログラミングシフトレジスタをクロックして、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットをロードする。
【００９７】
シフトレジスタの要素の第１のセットおよびシフトレジスタの要素の第２のセットは、同じシフトレジスタに点在させ得ることが理解されるであろう。シフトレジスタに値をロードすることは、シフトレジスタをクロックして、関連する構成値をその所望の最終位置に移動させることを伴うことになる。場合により、値がロードされるシフトレジスタのアドレス指定が必要なこともある。複数のシフトレジスタに値を、並列または直列でロードすることが望ましい場合があり、その場合、本方法は、次のステップに進む前に複数のシフトレジスタ間で反復することができる。
【００９８】
ステップ１００５において、前記複数のＬＵＴフリップフロップ９２１、９２２に演算構成に入るように命令し、前記ＬＵＴフリップフロップ９２１、９２２はそれぞれ、複数のＬＵＴの出力から入力をそれぞれ受け取る。
【００９９】
ステップ１００６において、前記複数のＬＵＴにデータ値を（入力９２０上で）適用する。
【０１００】
ステップ１００７において、前記ＬＵＴフリップフロップをクロックして、前記ＬＵＴそれぞれの、前記フリップフロップのそれぞれへの出力であって、前記テストプロトコルおよび前記データ入力に応答する前記出力をサンプリングする。
【０１０１】
ステップ１００８において、前記ＬＵＴフリップフロップにテスト構成に入るように命令し、前記ＬＵＴフリップフロップが、ＬＵＴシフトレジスタ内で接続され、シフトレジスタとして接続される。
【０１０２】
ステップ１００９において、前記ＬＵＴフリップフロップをクロックして、前記テストプロトコルおよび前記データ入力に応答する前記ＬＵＴの前記出力を含む前記ＬＵＴシフトレジスタの値を読み出し、かつステップ１０１０において終了する。
【０１０３】
テスト値がロードされると、期待値への適合性を確認するためにＦＰＧＡの挙動が評価されることになる。このテスト手順の詳細は、ＦＰＧＡシステム自体の性質に依存し、本発明の範囲外である。
【０１０４】
概して言えば、上記のテストモードは、製造後にＦＰＧＡが完全に機能することを保証するために、工場出荷時の設定にのみ使用される。
【０１０５】
いくつかの実施形態では、複数のテストプロトコルを定義することができ、その場合、上述のステップを複数回反復することができ、各反復は異なるテストプロトコルを順にロードする。
【０１０６】
演算中、図９の構成が、図１１を参照して説明するように、ＦＰＧＡを動作させる方法をさらにサポートする。
【０１０７】
図１１は、一実施形態によるＦＰＧＡを動作させる方法を示す。
【０１０８】
図１１に示されるように、以下のステップを含むＦＰＧＡを動作させる方法が提供される。本方法は、ステップ１１０１から開始し、ステップ１１０２に進み、プログラミングフリップフロップに結合された出力を有するマルチプレクサに、論理関数を実施する構成値を受け取る入力を選択するように命令する。
【０１０９】
ステップ１１０３において、複数のＬＵＴフリップフロップに、演算構成に入るように命令し、前記ＬＵＴフリップフロップがそれぞれ、複数のＬＵＴの出力から入力をそれぞれ受け取る。
【０１１０】
ステップ１１０４において、前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタの要素の第１のセットをロードし、前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットをロードし、かつステップ１１０５において終了する。
【０１１１】
図１１の実施形態の発展形態によれば、本方法は、複数のプログラミングシフトレジスタのなかから第１のプログラミングシフトレジスタの出力を有効にする追加のステップと、第１のプログラミングシフトレジスタに関して図１１のステップを実施し、次に、前記複数のシフトレジスタのそれぞれに対してこれらのステップを繰り返す追加のステップとを含むことができる。
【０１１２】
演算中、図９の構成は、ＦＰＧＡを検証する方法をさらにサポートする。この方法は、前記第１のプログラミングシフトレジスタをクロックして、前記第１のプログラミングシフトレジスタの要素の第１のセットを、論理関数を実施する前記ＬＵＴ構成値で読み出すステップと、前記第１のプログラミングシフトレジスタをクロックして、論理関数を実施するルーティングスイッチ構成で前記シフトレジスタの要素の第２のセットを読み出すステップとを含むことができる。
【０１１３】
この実施形態の発展形態によれば、本方法は、複数のプログラミングシフトレジスタのなかから第１のプログラミングシフトレジスタの出力を有効にする追加のステップと、第１のプログラミングシフトレジスタに関して上記を実施し、次に、前記複数のシフトレジスタのそれぞれに対してこれらのステップを繰り返す追加のステップとを含むことができる。
【０１１４】
図１２は、さらなる一実施形態によるＦＰＧＡを検証する方法を示す。
【０１１５】
図１２の実施形態は、上述の実施形態の一発展形態である。
【０１１６】
図１２に示されるように、以下のステップを含むＦＰＧＡを動作させる方法が提供される。本方法は、ステップ１２０１から開始し、ステップ１２０２に進み、前記第１のプログラミングシフトレジスタをクロックして、前記第１のプログラミングシフトレジスタの要素の第１のセットを、論理関数を実施する前記ＬＵＴ構成値で読み出し、前記第１のプログラミングシフトレジスタをクロックして、前記シフトレジスタの要素の第２のセットを、論理関数を実施するルーティングスイッチ構成で読み出す。次に、本方法は、ステップ１２０３に進み、例えば図１１を参照して説明した方法に従って、論理関数を実施するＬＵＴ構成、および前記シフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するＬＵＴ構成、および元々前記シフトレジスタに読み込まれた論理関数を実施するルーティングスイッチ構成と比較する。次に、本方法は、ステップ１２０４において終了する。
【０１１７】
通常の状況では、シフトレジスタにロードされたビットストリームは、シフトレジスタから読み取られたビットストリームと同一のはずであることが期待されている。この２つが同一であると判明した場合、ＦＰＧＡの演算状態および対応する結果が検証されたとみなすことができる。シフトレジスタにロードされたビットストリームが、シフトレジスタから読み取られたビットストリームと同一でない場合、結果の一部または全部に欠陥があるとみなされなければならない。
【０１１８】
図１０、図１１および図１２を参照して説明したステップの様々な組み合わせが、本発明の実施形態を構成し得ることが理解されるであろう。多くの場合、方法ステップの一部または全部は、ＦＰＧＡとインタフェースし、かつ演算のテストモード、演算モードおよび検証モード中、上述したような適切なビットストリームを提供するコンピュータプログラミングによって実施することができる。場合により、この機能の一部または全部をＦＰＧＡと同じチップ上で実施してもよく、またはＦＰＧＡが属する大規模なシステムの一部によって実行してもよい。他の場合には、この機能は、製造後のテスト目的でＦＰＧＡが一時的に結合されているテストまたは検証システムにより、または疑わしい結果を生成した後もしくはエラーを誘発する条件にさらされた後の検証により提供することができる。
【０１１９】
いくつかの実施形態では、本明細書に記載された方法およびプロセスは、コンピューティングデバイスによって全体的にまたは部分的に実施してもよい。これらの方法およびプロセスは、コンピュータアプリケーションプログラムまたはサービス、アプリケーション−プログラミングインタフェース（ＡＰＩ）、ライブラリ、および／または他のコンピュータプログラム製品、またはこのようなエンティティの任意の組み合わせによって実施することができる。
【０１２０】
図１３は、本発明の実施形態の実施に適した一般的なコンピューティングシステムを示す。
【０１２１】
図１３に示されているように、システムは、論理デバイス１３０１および記憶デバイス１３０２を含む。本システムは、表示サブシステム１３１１、入力サブシステム１３１２、１３１３、１３１５、通信サブシステム１３２０、および／または示されていない他のコンポーネントを任意選択的に含むことができる。
【０１２２】
論理デバイス１３０１は、命令を実行するように構成された１つまたは複数の物理デバイスを含む。例えば、論理デバイス１３０１は１つまたは複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造または他の論理構造の一部である命令を実行するように構成することができる。このような命令を実施して、タスクを実行し、データタイプを実施し、１つまたは複数のコンポーネントの状態を変換し、技術的効果を達成し、またはそれ以外の所望の結果に到達するようにすることができる。
【０１２３】
論理デバイス１３０１は、ソフトウェアの命令を実行するように構成された１つまたは複数のプロセッサを含むことができる。追加的または代替的に、論理デバイスは、１つまたは複数のハードウェアまたはファームウェアの命令を実行するように構成されたハードウェアまたはファームウェア論理デバイスを含むことができる。
【０１２４】
論理デバイスのプロセッサは、シングルコアまたはマルチコアであってもよく、プロセッサ上で実行される命令は、逐次処理、並列処理および／または分散処理用に構成されてもよい。論理デバイス１３０１の個々のコンポーネントは、任意選択的に、２つ以上の別個のデバイス間に分配してもよい。２つ以上の別個のデバイスを遠隔して配置させ、かつ／または協調して処理を行うように構成することができる。論理デバイス１３０１の態様は、クラウドコンピューティング構成で構成された遠隔アクセスが可能なネットワーク化されたコンピューティングデバイスによって仮想化し、実行することができる。
【０１２５】
記憶デバイス１３０２は、論理デバイスによって実行可能な命令を保持するように構成された１つまたは複数の物理デバイスを含み、本明細書に記載された方法およびプロセスを実施する。このような方法およびプロセスが実施されると、記憶１３０２デバイスの状態が、例えば様々なデータを保持するように変換されてもよい。
【０１２６】
記憶デバイス１３０２は、取り外し可能な、および／または内蔵式のデバイスを含むことができる。記憶デバイス１３０２は、特に、光メモリ（例えば、ＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、ブルーレイディスク等）、半導体メモリ（例えば、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ等）、および／または磁気記憶装置（例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、ＭＲＡＭ等）を含む１つまたは複数のタイプの記憶デバイスを含むことができる。記憶デバイスは、揮発性、不揮発性、動的、静的、読み取り／書き込み、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、および／または内容アドレス指定可能デバイスを含むことができる。
【０１２７】
特定の構成では、システムは、論理デバイス１３０１とさらなるシステムコンポーネントとの間の通信をサポートするように適合されたインタフェース１３０３を含むことができる。例えば、追加のシステムコンポーネントは、取り外し可能な、および／または内蔵式の拡張記憶デバイスを含むことができる。拡張記憶デバイスは、特に、光メモリ１３３２（例えば、ＣＤ、ＤＶＤ、ＨＤ−ＤＶＤ、ブルーレイディスク等）、半導体メモリ１３３３（例えば、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＦＬＡＳＨ等）、および／または磁気記憶装置１３３１（例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、ＭＲＡＭ等）を含む１つまたは複数のタイプの記憶デバイスを含むことができる。このような拡張記憶デバイスは、揮発性、不揮発性、動的、静的、読み取り／書き込み、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、および／または内容アドレス指定可能デバイスを含むことができる。
【０１２８】
記憶デバイスは、１つまたは複数の物理デバイスを含み、それ自体信号を伝搬するものは除外することが理解されるであろう。しかしながら、本明細書で代替的な選択肢として説明される命令の態様は、記憶デバイスに格納されるものとは対照的に、通信媒体（例えば、電磁信号、光信号等）によって伝搬されてもよい。
【０１２９】
論理デバイス１３０１および記憶デバイス１３０２の態様は、１つまたは複数のハードウェア論理コンポーネントに一緒にまとめることができる。このようなハードウェア論理コンポーネントは、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、特定プログラムおよび特定アプリケーション向け集積回路（ＰＡＳＩＣ／ＡＳＩＣ）、特定プログラムおよび特定アプリケーション向け標準品（ＰＳＳＰ／ＡＳＳＰ）、システムオンチップ（ＳＯＣ）、および複合プログラム可能論理デバイス（ＣＰＬＤ）を含むことができる。
【０１３０】
「プログラム」という用語は、特定の関数を実行するために実装されたコンピューティングシステムの一態様を記述するために使用されてもよい。場合により、プログラムは、記憶デバイスに保持された機械可読命令を実行する論理デバイスを介してインスタンス化することができる。様々なモジュールが、同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、ＡＰＩ、関数等からインスタンス化し得ることが理解されるであろう。同様に、同じプログラムは、様々なアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、ＡＰＩ、関数等によってインスタンス化することができる。「プログラム」という用語は、個々の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード等、またはこれらのグループを包含することができる。
【０１３１】
特に、図１３のシステムは、本発明の実施形態を実施するために使用することができる。
【０１３２】
例えば、図１０、図１１または図１２に関して説明したステップを実施するプログラムは、記憶デバイス１３０２に格納され、論理デバイス１３０１によって実行することができる。１つまたは複数のシフトレジスタにロードされたビットストリームは、論理デバイス１３０１によって生成され、かつ／または記憶デバイス１３０２または拡張記憶デバイス１３３２、１３３３、もしくは１３３１に格納されてもよい。ビットストリームは、論理デバイス１３０１の動作により、通信インタフェース１３２０を介して１つまたは複数のシフトレジスタにロードすることができる。１つまたは複数のシフトレジスタから読み取られたビットストリームは、論理デバイス１３０１の動作により、通信インタフェース１３２０を介して取り出され、かつ／または記憶デバイス１３０２または拡張記憶デバイス１３３２、１３３３、もしくは１３３１に格納することができる。論理デバイス１３０１は、１つまたは複数のシフトレジスタにロードされたビットストリーム、および１つまたは複数のシフトレジスタから読み取られたビットストリームを検証モードで取り出し、比較を実行して結果の妥当性を判定することができる。
【０１３３】
したがって、本発明は、コンピュータプログラムの形態で具体化することができる。
【０１３４】
本明細書で使用する場合、「サービス」は、複数のユーザセッションにわたって実行可能なアプリケーションプログラムであることが理解されるであろう。サービスは１つまたは複数のシステムコンポーネント、プログラム、および／または他のサービスに利用可能な場合がある。いくつかの実装形態では、サービスは１つまたは複数のサーバコンピューティングデバイス上で実行することができる。
【０１３５】
含まれる場合、表示サブシステム１３１１は、記憶デバイスに保持されたデータの視覚的表現を表すために使用されてもよい。この視覚的表現は、グラフィカルユーザインタフェース（ＧＵＩ）の形態をとってもよい。本明細書に記載されている方法およびプロセスは、記憶デバイス１３０２に保持されたデータを変更し、したがって、記憶デバイス１３０２の状態を変換し、表示サブシステム１３１１の状態を同様に変換して、基礎をなすデータの変更を視覚的に表すようにすることができる。表示サブシステム１３１１は、事実上あらゆるタイプの技術を利用する１つまたは複数の表示デバイスを含むことができる。このような表示デバイスは、共有されている格納装置内の論理デバイスおよび／または記憶デバイスと組み合わせることができる。あるいは、このような表示デバイスは、表示周辺デバイスとしてもよい。
【０１３６】
含まれる場合、入力サブシステムは、キーボード１３１２、マウス１３１３、タッチスクリーン１３１１またはゲームコントローラ（図示せず）などの１つまたは複数のユーザ入力デバイスを含むか、これらとインタフェースすることができる。いくつかの実施形態では、入力サブシステムは、選択されたナチュラルユーザ入力（ＮＵＩ）コンポーネント類を含むか、またはこれらとインタフェースすることができる。このようなコンポーネント類は、内蔵型または周辺機器とすることができ、入力動作の変換および／または処理は、オンボードまたはオフボードで取り扱うことができる。ＮＵＩコンポーネント類の例には、発話および／または音声認識のためのマイクロホン、マシンビジョンおよび／またはジェスチャ認識のための赤外線、カラー、立体視および／または深度カメラ、動きの検出および／または意図の認識のための視点追跡装置、眼球追跡装置、加速度計、および／またはジャイロスコープ、ならびに脳活動を評価するための電場感知コンポーネント類が含まれ得る。
【０１３７】
含まれる場合、通信サブシステム１３２０は、コンピューティングシステムを１つまたは複数の他のコンピューティングデバイスと通信可能に結合するように構成することができる。例えば、通信モジュールは、例えばパーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークまたはインターネットを含む任意のサイズのネットワークを介して、例えばリモートサーバ１３７６上にホストされたリモートサービスに、コンピューティングデバイスを通信可能に結合することができる。通信サブシステムは、１つまたは複数の様々な通信プロトコルと互換性のある有線および／または無線通信デバイスを含むことができる。非限定的な例として、通信サブシステムは、無線電話ネットワーク１３７４、または有線もしくは無線のローカルネットワークもしくはワイドエリアネットワークを介しての通信のために構成することができる。いくつかの実施形態では、通信サブシステムは、インターネット１３７５などのネットワークを介してコンピューティングシステムが他のデバイスにメッセージを送信、かつ／または他のデバイスからメッセージを受信することを可能にし得る。通信サブシステムは、受動デバイス（ＮＦＣ、ＲＦＩＤ等）による短距離誘導通信１３２１を追加的にサポートすることができる。
【０１３８】
特定の実施形態によれば、ＦＰＧＡ内のルックアップテーブル（ＬＵＴ）およびプログラム可能なルーティングスイッチの構成値は、シフトレジスタ内に配置された複数のフリップフロップによって提供される。このシフトレジスタは、工場テストモードでテスト値を受け取り、演算モードで（クライアントが要求するＦＰＧＡのあらゆる機能を実施する）演算構成値を受け取ることができる。ビットストリームはシフトレジスタの一方の端で供給され、最後のフリップフロップがその値を受け取るまでの間にわたりクロックされる。例えば、放射線曝露に起因する、格納された値の破損を識別するために、シフトレジスタの他方の端で値をクロックアウトして、初期ビットストリームと比較することも可能である。特定の選択されたシフトレジスタにデータをロードするか、または特定の選択されたシフトレジスタからデータを読み取るためのクロックゲーティングアーキテクチャが提案される。
【０１３９】
本明細書に記載された構成および／またはアプローチは本来例示的であり、これらの特定の実施形態または例は、多数の変形形態が可能であるため、限定的な意味で考慮されるべきではないことが理解されるであろう。本明細書に記載された特定のルーチンまたは方法は、任意の数のプロセス戦略の１つまたは複数を表すことができる。そのため、図示および／または説明した様々な動作が、図示および／または説明した順序で、他の順序で、並列して、または省略されて実行されてもよい。同様に、上述したプロセスの順序を変更してもよい。
【０１４０】
本開示の主題は、本明細書で開示されている様々なプロセス、システムおよび構成、ならびに他の特徴、機能、動作、および／または特性のすべての新規のかつ自明でない組み合わせおよび部分的組み合わせに加えて、そのすべての均等物も含む。
【図１】
2018537871.tif 000003
【図２】
2018537871.tif 000004
【図３】
2018537871.tif 000005
【図４】
2018537871.tif 000006
【図５】
2018537871.tif 000007
【図６】
2018537871.tif 000008
【図７】
2018537871.tif 000009
【図８】
2018537871.tif 000010
【図９】
2018537871.tif 000011
【図１０】
2018537871.tif 000012
【図１１】
2018537871.tif 000013
【図１２】
2018537871.tif 000014
【図１３】
2018537871.tif 000015
【手続補正書】
【提出日】平成29年2月7日(2017.2.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
論理関数を実施することができるフィールドプログラマブルゲートアレイであって、複数のハードウェアルックアップテーブル（２１、２２）を含み、各ルックアップテーブルの選択線または出力が、複数のプログラム可能なスイッチ（２６）により、別の前記ルックアップテーブルの前記選択線または出力とプログラム可能に相互接続されている、フィールドプログラマブルゲートアレイであって、
複数のフリップフロップ（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６、３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）をシフトレジスタ構成（３７）でさらに含むことによって特徴付けられ、前記ルックアップテーブル（２１、２２）がそれぞれ、それぞれの前記フリップフロップ（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６、３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）の出力に結合された少なくとも１つの入力を有し、および前記プログラム可能なスイッチ（２６）がそれぞれ、さらなるそれぞれの前記フリップフロップ（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６、３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）の出力に結合されており、
前記フィールドプログラマブルゲートアレイが、前記シフトレジスタ（３７）が所定のテスト値でロードされる第１のモードと、前記シフトレジスタ（３７）が前記論理関数を実施する値でロードされる第２のモードとで演算するように構成されている、フィールドプログラマブルゲートアレイ。
【請求項２】
前記シフトレジスタ内の第１のフリップフロップ（３７０１）が入力マルチプレクサ（３８）に結合され、前記入力マルチプレクサ（３８）が第１の入力（３８１）で前記所定のテスト値を、および第２の入力（３８２）で前記論理関数を実施する前記値を受け取り、かつテストパターンまたはデータビットストリームのいずれかを前記第１のフリップフロップ（３７０１）に供給するように適合されたモード選択信号に応答する、請求項１に記載のフィールドプログラマブルゲートアレイ。
【請求項３】
前記シフトレジスタ（３７）が、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のシフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）のうちの１つである、請求項１または２に記載のフィールドプログラマブルゲートアレイ。
【請求項４】
前記複数のシフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）が、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で並列にロードされるように構成されている、請求項３に記載のフィールドプログラマブルゲートアレイ。
【請求項５】
前記複数のシフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）が、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値で直列にロードされるように構成されている、請求項３に記載のフィールドプログラマブルゲートアレイ。
【請求項６】
アドレス指定システム（６４、６５）をさらに含み、それにより、前記第１のモードにおける前記所定のテスト値で、または前記第２のモードにおける前記論理関数を実施する前記値でロードされるように、前記複数のシフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）のいずれかが個別にまたはグループごとにアドレス指定され得る、請求項３〜５のいずれか一項に記載のフィールドプログラマブルゲートアレイ。
【請求項７】
前記アドレス指定システム（６４、６５）が、前記シフトレジスタのそれぞれと関連付けられたそれぞれのアドレス指定可能なクロックゲート（６３１、６３２、６３３、６３４、６３５、６３６）を含み、前記クロックゲート（６３１、６３２、６３３、６３４、６３５、６３６）が、このようにアドレス指定されるときに関連付けられる前記シフトレジスタ（６２１、６２２、６２３、６２４、６２５、６２６）にクロック信号を供給するように適合されている、請求項６に記載のフィールドプログラマブルゲートアレイ。
【請求項８】
前記シフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）に前記第２の演算モードでロードされた前記論理関数を実施する前記値が、前記シフトレジスタ（４２１、４３１、４４１；５２１、５３１、５４１；６２１、６２２、６２３、６２４、６２５、６２６）から読み戻される第３の演算モードを実施するようにさらに適合されている、請求項１〜７のいずれか一項に記載のフィールドプログラマブルゲートアレイ。
【請求項９】
ＦＰＧＡを動作させる方法であって、
プログラミングシフトレジスタ（３７）に結合された出力を有するマルチプレクサ（３８）に、テストプロトコルを実施する構成値を受け取る入力を選択するように命令するステップと、
複数のＬＵＴフリップフロップ（９１５、９１６）に、テスト構成に入るように命令するステップであって、前記ＬＵＴフリップフロップ（９１５、９１６）がそれぞれ、前記テストプロトコルを実施する入力を受け取り、前記ＬＵＴフリップフロップ（９１５、９１６）がシフトレジスタとして接続される、ステップと、
前記プログラミングシフトレジスタ（３７）をクロックして、前記テストプロトコルを実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタ（３７）の要素（３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）の第１のセットをロードするステップと、
前記プログラミングシフトレジスタ（３７）をクロックして、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタ（３７）の要素（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６）の第２のセットをロードするステップと、
前記複数のＬＵＴフリップフロップ（９１５、９１６）に、前記ＬＵＴフリップフロップ（９１５、９１６）がそれぞれ複数のＬＵＴ（２１、２２）の前記出力から入力をそれぞれ受け取る演算構成に入るように命令するステップと、
前記複数のＬＵＴ（２１、２２）にデータ入力を適用するステップと、
前記ＬＵＴフリップフロップ（９１５、９１６）をクロックして、それぞれの前記フリップフロップ（９１５、９１６）への前記ＬＵＴ（２１、２２）それぞれの前記出力をサンプリングするステップであって、前記出力が前記テストプロトコルおよび前記データ入力に応答する、ステップと、
前記ＬＵＴフリップフロップ（９１５、９１６）に、前記ＬＵＴフリップフロップがＬＵＴシフトレジスタ内で接続され、かつシフトレジスタとして接続されるテスト構成に入るように命令するステップと、
前記ＬＵＴフリップフロップ（９１５、９１６）をクロックして、前記テストプロトコルおよび前記データ入力に応答する前記ＬＵＴの前記出力を含む、前記ＬＵＴシフトレジスタの前記値を読み出すステップと
を含む、方法。
【請求項１０】
ＦＰＧＡを動作させる方法であって、
プログラミングシフトレジスタ（３７）に結合された出力を有するマルチプレクサ（３８）に、論理関数を実施する構成値を受け取る入力を選択するように命令するステップと、
複数のＬＵＴフリップフロップ（９１５、９１６）に、前記ＬＵＴフリップフロップ（９１５、９１６）がそれぞれ複数のＬＵＴ（２１、２２）の前記出力から入力をそれぞれ受け取る演算構成に入るように命令するステップと、
前記プログラミングシフトレジスタ（３７）をクロックして、前記論理関数を実施する前記構成値に属するＬＵＴ構成値で前記プログラミングシフトレジスタ（３７）の要素（３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）の第１のセットをロードするステップと、
前記プログラミングシフトレジスタ（３７）をクロックして、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成値で前記シフトレジスタ（３７）の要素（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６）の第２のセットをロードするステップと
を含む、方法。
【請求項１１】
第１のプログラミングシフトレジスタ（３７）の前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
さらなる前記プログラミングシフトレジスタに対して前記有効にするステップ、前記命令するステップ、および前記クロックするステップを繰り返すさらなるステップと
を含む、請求項１０に記載の方法。
【請求項１２】
ＦＰＧＡを動作させる方法であって、
プログラミングシフトレジスタ（３７）をクロックして、論理関数を実施するＬＵＴ構成値を含む前記プログラミングシフトレジスタ（３７）の要素（３７０７、３７０８、３７０９、３７１０、３７１１、３７１２、３７１３、３７１４、３７１５）の第１のセットを読み出すステップと、
前記プログラミングシフトレジスタをクロックして、前記論理関数を実施するルーティングスイッチ構成値を含む前記シフトレジスタ（３７）の要素（３７０１、３７０２、３７０３、３７０４、３７０５、３７０６）の第２のセットを読み出すステップと
を含む、方法。
【請求項１３】
第１のプログラミングシフトレジスタ（３７）の前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
さらなる前記プログラミングシフトレジスタに対して前記有効にするステップおよび前記クロックするステップを繰り返すさらなるステップと
を含む、請求項１２に記載の方法。
【請求項１４】
論理関数を実施する前記ＬＵＴ構成、および前記プログラミングシフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するＬＵＴ構成、および元々前記シフトレジスタに読み込まれた論理関数を実施するルーティングスイッチ構成と比較するさらなるステップを含む、請求項１３に記載の方法。
【請求項１５】
請求項１０〜１３のいずれか一項に記載のステップを実施するように適合されたコンピュータプログラム。
【請求項１６】
請求項１４に記載のコンピュータプログラムを組み込んだコンピュータ可読媒体。
【国際調査報告】
2018537871.tif 000016
2018537871.tif 000017