JP7286706B2 - Fpgaのテストおよび構成のためのシステムおよび方法 - Google Patents

Fpgaのテストおよび構成のためのシステムおよび方法 Download PDF

Info

Publication number
JP7286706B2
JP7286706B2 JP2021077157A JP2021077157A JP7286706B2 JP 7286706 B2 JP7286706 B2 JP 7286706B2 JP 2021077157 A JP2021077157 A JP 2021077157A JP 2021077157 A JP2021077157 A JP 2021077157A JP 7286706 B2 JP7286706 B2 JP 7286706B2
Authority
JP
Japan
Prior art keywords
shift register
lut
configuration
flip
programming
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2021077157A
Other languages
English (en)
Other versions
JP2021145339A (ja
Inventor
ローラン・ルージュ
ジュリアン・エドゥ
マルセロ・ジュフレ
Original Assignee
マンタ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by マンタ filed Critical マンタ
Publication of JP2021145339A publication Critical patent/JP2021145339A/ja
Application granted granted Critical
Publication of JP7286706B2 publication Critical patent/JP7286706B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/3185Reconfiguring for testing, e.g. LSSD, partitioning
    • G01R31/318516Test of programmable logic devices [PLDs]
    • G01R31/318519Test of field programmable gate arrays [FPGA]
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31701Arrangements for setting the Unit Under Test [UUT] in a test mode
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/31727Clock circuits aspects, e.g. test clock circuit details, timing aspects for signal generation, circuits for testing clocks
    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3177Testing of logic operation, e.g. by logic analysers
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C19/00Digital stores in which the information is moved stepwise, e.g. shift registers
    • G11C19/28Digital stores in which the information is moved stepwise, e.g. shift registers using semiconductor elements
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/17764Structural details of configuration resources for reliability
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Tests Of Electronic Circuits (AREA)
  • Semiconductor Integrated Circuits (AREA)

Description

本発明は、プログラム可能論理デバイスに関し、より詳細には、フィールドプログラマブルゲートアレイデバイスに関する。
FPGAは、プログラム可能論理デバイスの一種である。それらは、概して標準的なプログラム可能論理ブロックに基づいており、多数の論理ブロックが一緒に配置されて様々な関数を実施する。
図1は、現時点の技術水準において知られているようなFPGAシステムの一例を概略的に示す。
図1に示されるように、FPGAチップ10は、例えば、上述したような複数の論理ブロック11を含む。チップはまた、複数の入力/出力ポート12を含む。これらの論理ブロック11および入力/出力ポート12を接続しているのは、複数のトラック14である。これらのトラックの接続点には、複数のプログラム可能なルーティング区域13も設けられている。これらのプログラム可能なルーティング区域には、各スイッチと接続されたメモリセルに格納された論理値の制御下で、交差するトラックの任意の対を選択的に接続することができるスイッチが設けられている。スイッチメモリ値は、システムの起動時に不揮発性メモリから設定される。したがって、必要に応じてスイッチメモリにおいて値を設定することにより、任意の論理ブロックの任意の接続を任意の他の論理ブロックまたは任意の入力/出力ポート12の接続に結合することができる。このように、各論理ブロックの演算を定義するメモリユニットと、論理ブロック間の適切な接続を確立するスイッチメモリ13とを適切に構成することにより、任意の所望の機能を実施することができる。
図2は、現時点の技術水準において知られているようなFPGAシステムの要素のさらなる詳細を示す。
図2に示されている要素は、図1に関して上述した機能部分の部分的な実施の代表的な例を構成する。
図2に示されるように、第1のルックアップテーブル(LUT)21と、第2のルックアップテーブル(LUT)22と、複数のさらなるLUT(図示せず)とが設けられている。第1のLUT21は、7つの2入力マルチプレクサ211、212、213、214、215、216、217をそれぞれ含む。第2のLUTおよびさらなるLUTも同様に構成されている。これらのマルチプレクサは、8入力マルチプレクサを構成するように3つの行でカスケードに配列され、その出力は、LUTの出力を構成する。各カスケード配列におけるマルチプレクサの第1番目の行(211、213、215および217)は、いずれも合計で8つの入力を有する。これらの8つの入力は、第1のLUT21のプログラミング入力を構成する。各行の選択入力は、LUTの3つのデータ入力を構成するようにまとめられている。第1のLUTのデータ入力およびデータ出力は、トラック2501、2502のセットに接続されている。第2のLUTおよびさらなるLUTの入力および出力は、さらなるトラックのネットワーク(図示せず)に対応して接続されている。従来、このように3つのデータ入力を有するLUTは、「LUT3」と呼ばれている。第1のLUT21の8つのプログラミング入力はそれぞれ、それぞれのスタティックRAMメモリデバイス251、252、253、254、255、256、257、258に接続されている。対応するスタティックRAMメモリデバイスは、システムに設けられた第2のLUT22および他のLUT(図示せず)の構成入力を提供する。演算中、これらのメモリデバイス251、252、253、254、255、256、257、258は、各LUTの8つのプログラミング入力のそれぞれに一定の所定の論理値を提供する。各SRAMセルの内容は、2つのインバータで構築されたラッチを含むように概略的に示されており、2つのインバータはそれぞれ他方の出力を受け取り、トランジスタスイッチを有する。トランジスタスイッチはワード線23によって切り替えられ、ワード線23は、ラッチのインバータのうちの1つの出力の値をビット線に選択的に出力できるように設けられており、ビット線は、LUT217のそれぞれの構成入力に、かつまたデータ線24にも接続されており、これにより、ラッチの値を設定することができる。各メモリデバイス251、252、253、254、255、256、257、258のビット線は、選択バス24に接続され、各メモリデバイス251、252、253、254、255、256、257、258のワード線は、データバス23に接続されている。回路開始フェーズの間、各メモリデバイス251、252、253、254、255、256、257、258が順次アドレス指定され、所望の値が対象のラッチに対して設定される。LUTの論理的挙動は、その3つのデータ入力の任意の2進値に対する応答であり、したがって、必要に応じて定義することができる。これが、FPGA技術の基礎をなす基本概念である。しかしながら、2つのLUT3を含む単一の論理ブロックが実施することができる関数は限定されているが、上述したような複数の適切に構成されたLUTを相互に接続することにより、あらゆる任意の組み合わせ関数を実施可能であることが理解されるであろう。この相互接続は、データチャネル2501、2502、および他のLUTからのデータを運ぶさらなるチャネル(図示せず)のプログラム可能な相互接続によって実現される。示されているように、チャネル2501、2502は垂直に配置されているが、チャネル2501および2502と交差するさらなるチャネル2503が設けられている。チャネル2501および2503のそれぞれの線の交差部には、プログラム可能なスイッチングユニット26が設けられている。スイッチングユニットにおいて、2つの線の交差部が合計で4つの接続を構成することを考慮すると、スイッチングユニットは、これらの4つの接続のうちの任意の2つの間の接続を行うか、または切断するように配置された6つのトランジスタスイッチを含む。これらのトランジスタスイッチはそれぞれ、それぞれのスタティックメモリユニット261、262、263、264、265、266から受け取った値により、開かれるかまたは閉じられるように設定されている。さらに、対応するスタティックメモリデバイスを有するそのようなプログラム可能なスイッチングユニットが、トラックの多くの交差部またはすべての交差部(図示せず)に設けられている。示されているようなこれらのスタティックメモリデバイス261、262、263、264、265、266は、メモリデバイス251、252、253、254、255、256、257、258と同一であり、同じアドレスおよびデータバス23および24に接続されている。その結果、回路開始フェーズの間、LUTメモリデバイスおよびスイッチメモリデバイスの両方が順次アドレス指定され、所望の値が対象のラッチに対して設定されることで、各LUTの挙動および任意の他のLUTへのその接続を必要に応じて構成することが可能になる。
国際公開第2012/123243 A1号パンフレット、米国特許第7463056 B1号明細書、米国特許第6021513 A号明細書、米国特許第5432441 A号明細書、米国特許第8091001 B2号明細書、米国特許第5675589 A号明細書および米国特許第5027355 A号明細書は、上記の特定の態様を記載している。
https://www.ece.ubc.ca/~lemieux/publications/akenova-masc2005.pdfから入手可能なVictor Olubunmi Aken’Ovaによる“Bridging the Gap between Soft and Hard eFPGA Design”という名称の論文の第3.22章は、さらなる背景情報を提供している。
説明したアプローチは非常に柔軟であるが、LUTと、メモリユニットのアドレスおよびデータのバスとの間の相互接続トラックは、かなりのスペースを占めることが理解されるであろう。図2の非常に単純化された配列においてさえ、示されている線の数はかなり多く、これでは、どのような実際の実施でも直ちに煩わしいものとなる。これは、デバイスの製造時に適切な挙動を確認するために設けられるテスト機能を回路内で実施する必要があることで、なお一層の装備の追加が必要になることによってさらに悪化する。
国際公開第2012/123243号 米国特許第7463056号明細書 米国特許第6021513号明細書 米国特許第5432441号明細書 米国特許第8091001号明細書 米国特許第5675589号明細書 米国特許第5027355号明細書
Bridging the Gap between Soft and Hard eFPGA Design,by Victor Olubunmi Aken’Ova
第1の態様によれば、論理関数を実施することができるフィールドプログラマブルゲートアレイが提供される。前記フィールドプログラマブルゲートアレイは、複数のハードウェアルックアップテーブルを含み、各ルックアップテーブルの選択線または出力は、複数のプログラム可能なスイッチにより、別の前記ルックアップテーブルの選択線または出力とプログラム可能に相互接続されている。このフィールドプログラマブルゲートアレイは、複数のフリップフロップをシフトレジスタ構成でさらに含み、プログラミングシフトレジスタを構成することによって特徴付けられ、ルックアップテーブルがそれぞれ、それぞれの前記フリップフロップの出力に結合された少なくとも1つの入力を有し、および前記プログラム可能なスイッチがそれぞれ、さらなるそれぞれの前記フリップフロップの出力に結合されており、前記フィールドプログラマブルゲートアレイは、前記プログラミングシフトレジスタが所定のテスト値でロードされる第1のモードと、前記プログラミングシフトレジスタが前記論理関数を実施する値でロードされる第2のモードとで演算するように構成されている。
プログラミングシフトレジスタを用いてFPGAをプログラムすることにより、メモリセルをアドレス指定するためのみのチップのスペースが削減され、特に工業規模の生産を対象としたスキャンチェーン技法によるテスト容易性が向上する。
第1の態様の発展形態によれば、プログラミングシフトレジスタ内の第1のフリップフロップは、第1の入力で所定のテスト値を、および第2の入力で前記論理関数を実施する前記値を受け取る入力マルチプレクサであって、テストパターンまたはデータビットストリームのいずれかを前記第1のフリップフロップに供給するように適合されたモード選択信号に応答する入力マルチプレクサに結合されている。
これは、表面積を増やすことなく、特定の物理リソースを2つの機能間で共有することが可能であることを意味する。
第1の態様のさらなる発展形態によれば、プログラミングシフトレジスタは、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のプログラミングシフトレジスタのうちの1つである。
複数のプログラミングシフトレジスタにより、スキャンチェーンへの組織化にモジュラーアプローチを採用することが可能になるため、テストの柔軟性を高め、いずれの時点においてもクロックされるフリップフロップが少なくなるため、電力消費を削減する。
第1の態様のさらなる発展形態によれば、複数のプログラミングシフトレジスタは、前記第1のモードにおける前記所定のテスト値で、または前記第2のモードにおける前記論理関数を実施する前記値で並列にロードされるように構成されている。
複数のプログラミングシフトレジスタを並列にロードすることにより、初期化時間を短縮し、クロック信号の共有により総電力消費を抑制することができる。
第1の態様のさらなる発展形態によれば、複数のプログラミングシフトレジスタは、前記第1のモードにおける前記所定のテスト値で、または前記第2のモードにおける前記論理関数を実施する前記値で直列にロードされるように構成されている。
複数のプログラミングシフトレジスタを直列にロードすることにより、プログラミングを簡略化し、総電力消費を抑制することができる。
第1の態様のさらなる発展形態によれば、フィールドプログラマブルゲートアレイは、アドレス指定システムをさらに含み、それにより、前記第1のモードにおける前記所定のテスト値で、または前記第2のモードにおける前記論理関数を実施する前記値でロードされるように、前記複数のプログラミングシフトレジスタのいずれかが個別にまたはグループごとにアドレス指定され得る。
個別にまたはグループごとにプログラミングシフトレジスタをアドレス指定することが可能になることにより、特定の用途に実際に求められているプログラミングシフトレジスタのみをアドレス指定することが可能になるため、柔軟性を高め、初期化時間を短縮し、電力消費を削減する。
第1の態様のさらなる発展形態によれば、アドレス指定システムは、各プログラミングシフトレジスタまたはグループと関連付けられたそれぞれのアドレス指定可能なクロックゲートを含み、クロックゲートは、このようにアドレス指定されるときに関連付けられるプログラミングシフトレジスタにクロック信号を供給するように適合されている。
クロックを用いてアドレス指定を制御することにより、クロックの伝搬を制限することによって電力消費を削減する。
第1の態様のさらなる発展形態によれば、フィールドプログラマブルゲートアレイは、第3の演算モードを実施するようにさらに適合されており、第3のモードでは、プログラミングシフトレジスタに第2の演算モードでロードされた論理関数を実施する値が、第2のモードのためにロードされた論理関数を実施する値と比較するために、プログラミングシフトレジスタから読み戻される。
演算フェーズ後に初期構成ビットストリームをフリップフロップの実際の構成と比較することが可能になることにより、例えば航空宇宙、軍事または原子力産業の用途において、構成値の破損による誤った結果を検出する手段が提供される。
第2の態様によれば、FPGAを動作させる方法が提供される。本方法は、プログラミングシフトレジスタに結合された出力を有するマルチプレクサに、テストプロトコルを実施する構成値を受け取る入力を選択するように命令するステップと、複数のLUTフリップフロップに、テスト構成に入るように命令するステップとを含み、前記LUTフリップフロップがそれぞれ、前記テストプロトコルを実施する入力を受け取り、前記LUTフリップフロップがシフトレジスタとして接続される。次に、プログラミングシフトレジスタがクロックされて、前記テストプロトコルを実施する前記構成値に属するLUT構成値でプログラミングシフトレジスタの要素の第1のセットと、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットとをロードする。次に、複数のLUTフリップフロップは、演算構成に入るように命令され、前記LUTフリップフロップはそれぞれ、複数のLUTの出力から入力をそれぞれ受け取り、次に、データ入力が複数のLUTに適用される。次に、LUTフリップフロップは、それぞれの前記フリップフロップへの前記LUTそれぞれの出力をサンプリングするようにクロックされ、この出力は前記テストプロトコルおよび前記データ入力に応答する。次に、LUTフリップフロップは、テスト構成に入るように命令され、LUTフリップフロップがLUTシフトレジスタ内で接続され、かつシフトレジスタとして接続され、前記テストプロトコルおよび前記データ入力に応答する前記LUTの前記出力を含む、前記LUTシフトレジスタの値を読み出すようにクロックされる。
第3の態様によれば、FPGAを動作させる方法であって、プログラミングフリップフロップに結合された出力を有するマルチプレクサに、論理関数を実施する構成値を受け取る入力を選択するように命令するステップと、前記複数のLUTフリップフロップに、演算構成に入るように命令するステップとを含み、前記LUTフリップフロップがそれぞれLUTの出力から入力をそれぞれ受け取る、方法が提供される。次に進んで、本方法は、プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するLUT構成値でプログラミングシフトレジスタの要素の第1のセットをロードし、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットをロードする。
第3の態様の発展形態によれば、本方法は、第1のプログラミングシフトレジスタの出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、さらなる前記プログラミングシフトレジスタに対してクロックするステップおよび命令するステップを繰り返すさらなるステップとを含む。
第4の態様によれば、FPGAを動作させる方法が提供され、本方法は、第1のプログラミングシフトレジスタをクロックして、論理関数を実施するLUT構成値でプログラミングシフトレジスタの要素の第1のセットを読み出し、論理関数を実施するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットを読み出すステップを含む。
第4の態様の発展形態によれば、本方法は、第1のプログラミングシフトレジスタの出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、さらなるプログラミングシフトレジスタに対してクロックするステップを繰り返すさらなるステップとを含む。
第4の態様のさらなる発展形態によれば、本方法は、論理関数を実施するLUT構成、およびプログラミングシフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するLUT構成、および元々シフトレジスタに書き込まれた論理関数を実施するルーティングスイッチ構成と比較するさらなるステップを含む。
本発明の第5の態様によれば、第2の態様または第3の態様の方法のステップを実施するように適合されたコンピュータプログラムが提供される。
本方法をコンピュータプログラムにおいて実施することにより、FPGAとインタフェースし、柔軟なかつ標準化されたプラットフォームで本発明を実施するための好都合な機構が提供される。
本発明の第6の態様によれば、第5の態様のコンピュータプログラムを組み込んだコンピュータ可読媒体が提供される。
以下、本発明の上記および他の利点を添付の図面を参照して説明する。
現時点の技術水準において知られているFPGAシステムの一例を概略的に示す。 現時点の技術水準において知られているFPGAシステムの要素のさらなる詳細を示す。 本発明の一実施形態によるFPGAシステムの要素を示す。 FPGA回路構成の第1の構成を示す。 FPGA回路構成の第2の構成を示す。 FPGA回路構成の第3の構成を示す。 図4の構造を、構成の読み出しに適合させた一変形形態を示す。 図6の構造を、構成の読み出しに適合させた一変形形態を示す。 さらなる一実施形態による演算部のさらなる詳細を示す。 一実施形態によるFPGAをロードする方法を示す。 一実施形態によるFPGAを動作させる方法を示す。 さらなる一実施形態によるFPGAを検証する方法を示す。 本発明の実施形態の実施に適した一般的なコンピューティングシステムを示す。
図3は、本発明の一実施形態によるFPGAシステムの要素を示す。
図3に示されている要素は、本発明の一実施形態に従って、図1に関して上述した機能部分の部分的な実施の代表的な例を構成する。
図3に示されるように、第1のルックアップテーブル(LUT)21と、第2のルックアップテーブル(LUT)22と、複数のさらなるLUT(図示せず)とが設けられている。第1のLUT21は、7つの2入力マルチプレクサ211、212、213、214、215、216、217(参照符号が図3以降省略されている)をそれぞれ含む。第2のLUTおよびさらなるLUTも同様に構成されている。これらのマルチプレクサは、8入力マルチプレクサを構成するように3行でカスケードに配列され、その出力は、LUTの出力を構成する。各カスケード配列におけるマルチプレクサの第1番目の行(211、213、215および217)は、いずれも合計で8つの入力を有する。これらの8つの入力は、第1のLUT21のプログラミング入力を構成する。各行の選択入力は、LUTの3つのデータ入力を構成するようにまとめられている。第1のLUTのデータ入力およびデータ出力は、トラック2501、2502のセットに接続されている。第2のLUTおよびさらなるLUTの入力および出力は、さらなるトラックのネットワーク(図示せず)に対応して接続されている。従来、このように3つのデータ入力を有するLUTは、「LUT3」と呼ばれている。
この実施形態によれば、第1のLUT21の8つのプログラミング入力はそれぞれ、Dフリップフロップ3707、3708、3709、3710、3711、3712、3713、3714のQ端子にそれぞれ接続されている。
同様に、システムに設けられた第2のLUT22および他のLUT(図示せず)の構成入力は、さらなるDフリップフロップ(図示せず)によって提供される。これらのフリップフロップは、各フリップフロップの出力Qを次のフリップフロップの入力Dに接続することにより、および単一のクロック線372の各フリップフロップのクロック入力をまとめることにより、フリップフロップ3707、3708、3709、3710、3711、3712、3713、3714とともに配置されて、プログラミングシフトレジスタ37を構成している。演算中、これらのメモリデバイスは、図2を参照して説明したSRAMデバイスと同じ方法で、各LUTの8つのプログラミング入力のそれぞれに一定の所定の論理値を提供する。
回路開始フェーズの間、プログラミングシフトレジスタ内の各フリップフロップの所望の最終値に対応するコードワードは、ビットごとにプログラミングシフトレジスタ内の第1のフリップフロップ3701に入力され、プログラミングシフトレジスタに沿って、最初のビットが最後のフリップフロップに到達するまで一度に1ビットずつクロックされ、第1のフリップフロップはその最終値を受け取る。
図3のシステムは、上記の図2に関して説明したのと同様の相互接続機構を実施する。しかしながら、この実施形態によれば、プログラム可能なスイッチユニット26の各トランジスタスイッチは、プログラミングシフトレジスタ37に属するそれぞれのフリップフロップ3701、3702、3703、3704、3705、3706から受け取った値により、開かれるかまたは閉じられるように設定されている。さらに、対応するフリップフロップデバイスを有するそのようなプログラム可能なスイッチングユニットが、トラックの多くの交差部またはすべての交差部に設けられている(図示せず)。したがって、回路開始フェーズの間、要求されるFPGAのあらゆる論理関数を実施するためのプログラミングシフトレジスタ内の各フリップフロップの所望の最終値に対応するビットストリームが、ビットごとにプログラミングシフトレジスタ内の第1のフリップフロップ3701に入力され、プログラミングシフトレジスタに沿って、最初のビットが最後のフリップフロップに到達し、最初のフリップフロップがその最終値を受け取るまで一度に1ビットずつクロックされ、このようにして、ルーティングスイッチの値およびLUT構成入力を一度にまとめて定義する。
図3のシステムは、2つの入力381および382を切り替えるマルチプレクサ38をさらに含む。一実施形態によれば、一方の入力381は、使用中のFPGAプログラム、すなわち、あらゆる任意のおよびユーザにより要求される場合もあるビットシーケンスを実施するために、プログラミングシフトレジスタ37にロードされる設定値に対応する設定ストリームを受け取ることができる一方、他方のマルチプレクサ入力382は、テスト構成において様々なシステムコンポーネントに要求される設定に対応する設定ストリームを受け取ることができる。
SRAMメモリセルをDフリップフロップに置き換えることは、トランジスタ数の増加を暗に意味し、したがって、標準的なIC設計要件に反している。
フリップフロップを採用してルーティングスイッチおよびLUT構成入力を制御することにより、テスト目的のためのみに余分なフリップフロップを追加せずにスキャンチェーンテスト技法を実施することが可能になる。これにより、上述のトランジスタ数の増加が相殺されるだけでなく、特にテストコンポーネントのルーティングおよび制御に関してチップの設計もさらに簡略化される。
さらに、多数のSRAMセルに対するアドレス指定およびデータバスの必要をなくすことにより、これらの目的のために通常確保されるチップ面積の点で大幅に節約することが可能である。
したがって、論理関数を実施することができるフィールドプログラマブルゲートアレイが開示されており、前記フィールドプログラマブルゲートアレイは、複数のハードウェアルックアップテーブルを含み、各ルックアップテーブルの選択線または出力は、複数のプログラム可能なスイッチにより、別の前記ルックアップテーブルの選択線または出力とプログラム可能に相互接続されている。前記フィールドプログラマブルゲートアレイは、複数のフリップフロップをプログラミングシフトレジスタ構成でさらに含むことによって特徴付けられ、前記ルックアップテーブルがそれぞれ、それぞれの前記フリップフロップの少なくとも1つの出力に結合された入力を有し、前記プログラム可能なスイッチがそれぞれ、さらなるそれぞれの前記フリップフロップの出力に結合されており、前記フィールドプログラマブルゲートアレイは、前記プログラミングシフトレジスタが所定のテスト値でロードされる第1のモードと、前記プログラミングシフトレジスタが前記論理関数を実施する値でロードされる第2のモードとで演算するように構成されている。
前記プログラミングシフトレジスタ内の第1のフリップフロップは、入力マルチプレクサに結合することができ、前記入力マルチプレクサは、第1の入力で前記所定のテスト値を、および第2の入力で前記論理関数を実施する前記値を受け取り、かつ前記テストパターンまたは前記データビットストリームのいずれかを前記第1のフリップフロップに供給するように適合されたモード選択信号に応答する。
図3は、単一のプログラミングシフトレジスタ37を示しているが、提案されている機構はより多くのLUTおよびプログラム可能なスイッチングユニットを組み込むようにスケーリングされるため、複数または多次元のプログラミングシフトレジスタを実装することが望ましい場合があることが理解されるであろう。
したがって、例えば、図3を参照して説明したようなプログラミングシフトレジスタは、前記フィールドプログラマブルゲートアレイの異なる部分に供給するように構成された複数のプログラミングシフトレジスタの1つであってもよい。
このような複数のプログラミングシフトレジスタは、第1のモードにおける所定のテスト値で、または第2のモードにおける論理関数を実施する前記値で並列または直列にロードされるように構成することができる。
当業者であれば、図3のシステムは非常に単純化されているが、実際のシステムは、本明細書に記載されている原理から逸脱することなく、はるかにこれよりも複雑であることを理解するであろう。特に、各論理ブロックは、2つ以上のLUTを含むことができ、例えば、拡張機能をサポートするため、または逐次制御を導入するための追加の論理をさらに含むことができる。複数のこのような論理ブロックをグループにまとめて配置することができる。
再び図1を参照すると、ある演算モードでタイル間に接続性を提供するトラック14が概略的に示されており、アドレスバス23およびデータバス24は示されていないが、実際のデバイスでは、デバイスの表面積に対してかなり大きい部分を占めるであろうことは明白である。図3のプログラミングシフトレジスタ配列は、この問題に対処するものである。なぜなら各メモリセルを個別にアドレス指定する必要なしに、多数のメモリデバイス用のビットストリームをプログラミングシフトレジスタにロードすることが可能になるからである。これにより、演算が簡単になるだけでなく、アドレス指定およびバストラックに関して、表面積の点での要求も緩和される。それにもかかわらず、FPGAデバイス全体に対するすべての構成セルを組み込んだ単一のプログラミングシフトレジスタを設けることが望ましくない場合があることが理解されるであろう。なぜなら、このようなプログラミングシフトレジスタは、管理不能なほど長くなり、クロック管理や電力消費などに対する影響を伴うからである。一方、複数のプログラミングシフトレジスタに基づいたアプローチを採用することが可能であり、各プログラミングシフトレジスタがチップの特定の部分の構成設定を管理する。このような各プログラミングシフトレジスタまたはプログラミングシフトレジスタのグループ内の第1のフリップフロップは、図2の個々のメモリセルと同様の方法で、またはそれ以外の方法でアドレス指定することができる。その際、各プログラミングシフトレジスタの長さの選択は、一方では構成ビットストリームの分配を単純にして長さを長くしたプログラミングシフトレジスタと、他方では構成ビットストリームの分配を複雑にして長さを短くしたプログラミングシフトレジスタとの妥協点になり、それはバスの幅を広くすること、およびまたはアドレス指定を複雑にすることを意味する場合もある。どのような場合であれ、最適な妥協点は、使用されている半導体技術およびFPGA回路自体の様々な特性に依存することになる。
図4は、PGA回路構成の第1の構成を示す。示されているように、1つまたは複数のLUTを含み、場合により補助回路および対応するプログラム可能なルーティングスイッチ等を有する演算部41が設けられている。示されているように、この演算部41は、3つのプログラミングシフトレジスタ421、431および441によって構成値が与えられ、3つの入力接続422、432、442から入力値を受け取り、それぞれがそれぞれのクロック451、452、453を有する。線422、432、442はそれぞれ、それ自体のそれぞれの入力マルチプレクサ481、482、483を有する。これは、例えばソフトウェア制御下で、上述したような演算ビットストリームまたはテストパターンを切り替えるように制御することができる。代替の実施形態では、複数のプログラミングシフトレジスタは、単一のマルチプレクサから入力を受け取ることができる。マルチプレクサの出力は、適切に制御されたデマルチプレクサによってそれぞれのプログラミングシフトレジスタにディスパッチされてもよく、または例えば以下の実施形態で説明するようにアドレス指定されてもよい。
示されているように、3つのプログラミングシフトレジスタは5つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態は、通常、4つ以上のプログラミングシフトレジスタも含むことになる。プログラミングシフトレジスタは、すべてが同じ数のフリップフロップを含むように示されているが、場合により、特定のプログラミングシフトレジスタは任意の数のフリップフロップを含むことができる。
適正な値が各フリップフロップに確実に到達するように、様々なプログラミングシフトレジスタのクロッキングを考慮しなければならない。これは、各プログラミングシフトレジスタがその長さに等しい数のクロックパルスのみを受け取らなければならないことを暗に意味する。なぜなら、さらなるパルスがあれば、クロックされる値がそれらの適正な宛先を越えることになるからである。この問題に対する1つのアプローチは、図4に示されるように、すべてのプログラミングシフトレジスタを同じ長さを有するように定義することである。あるいは、異なる長さのシフトレジスタが定義される場合、それらは、初期化フェーズの間に、各シフトレジスタがその長さに等しい数のクロック信号を確実に受け取るように適合されたクロック管理回路と関連付けることができる。さらなるアプローチによれば、各プログラミングシフトレジスタには、こうしたシフトレジスタのために意図されたビットストリーム内の、ビットストリームの開始または終了などの特定の位置を表示する特定のビットシーケンスを認識するように適合されたクロック管理回路を設けることができる。クロックマネージャはこのシーケンスを検出すると、クロックエントリを無効にする。このアプローチは、各シフトレジスタを独立にし、設計者が任意のサイズのプログラミングシフトレジスタを自由に定義することができるという利点を有する。あるいは、信号の切り替えおよびプログラミングシフトレジスタのクロックは、ソフトウェアによって駆動してもよい。
図5は、FPGA回路構成の第2の構成を示す。図5に示されているように、FPGAは、図1のFPGAと同様に、論理ブロック511、512、513、514、515、516の行列のまわりに構成されている。論理ブロックの各行にそれぞれのプログラミングシフトレジスタが設けられていることで、論理ブロック511および512がプログラミングシフトレジスタ521から構成値を受け取り、論理ブロック513および514がプログラミングシフトレジスタ531から構成値を受け取り、また、論理ブロック515および516がプログラミングシフトレジスタ541から構成値を受け取るようになっている。示されているように、3つのプログラミングシフトレジスタはそれぞれ6つのフリップフロップを含み、そのうちの3つが各論理ブロックに結合されている。それぞれのプログラミングシフトレジスタ内のすべてのフリップフロップは、それらのクロック入力を共通に有するが、各プログラミングシフトレジスタは、それ自体のそれぞれのクロック551、552、553を有する。
示されているように、3つのプログラミングシフトレジスタは6つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態は、通常、4つ以上のプログラミングシフトレジスタも含むことになる。プログラミングシフトレジスタは、すべてが同じ数のフリップフロップを含むように示されているが、場合により、これが容認できない設計上の制約となる場合があり、その場合、各プログラミングシフトレジスタは任意の数のフリップフロップを含むことができる。
適正な値が各フリップフロップに確実に到達するように、様々なプログラミングシフトレジスタのクロックを考慮しなければならない。これについては、図4に関して上述したのと同様の手段が適用可能である。
演算ビットストリームとテストパターンとの間の多重化は、例えば上述の実施形態に関して説明したように実施することができる。演算ビットストリームまたはテストパターンおよびそれぞれのクロック信号の分配は、例えば、上述の実施形態に関して説明したようにプログラミングシフトレジスタ間に分配してもよい。
プログラミングシフトレジスタのアーキテクチャと論理ブロックのレイアウトとの間の直接的な構造上の対応を実装することにより、構成ビットストリームの生成に対して構造化されたアプローチを課すことで、FPGAのプログラミングが容易になると考えられる。
図6は、FPGA回路構成の第2の構成を示す。図6に示されているように、FPGAは、図5のFPGAと同様に、論理ブロック611、612、613、614、615、616の行列のまわりに構成されている。各論理ブロックには、それぞれのプログラミングシフトレジスタ621、622、623、624、625、626が設けられている。示されているように、6つのプログラミングシフトレジスタ621、622、623、624、625、626はそれぞれ3つのフリップフロップを含み、それらの関連付けられた論理ブロックの構成値を提供する。
各プログラミングシフトレジスタの第1のフリップフロップは、入力線67上でその入力を受け取る。入力線67は、各プログラミングシフトレジスタの第1のフリップフロップのD入力に共通に結合されている。
各プログラミングシフトレジスタ内のフリップフロップはすべて、それらのクロック入力を共通に有する。
単一のクロック分配ネットワーク66が、それぞれのクロックゲート631、632、633、634、635、636により、各プログラミングシフトレジスタのクロック線に結合されている。示されているようなこれらのクロックゲートはそれぞれ、行選択入力および列選択入力を有することにより、両方の入力上の同時の論理高が、それぞれのプログラミングシフトレジスタのクロック線をクロック分配ネットワーク66に接続しているスイッチを閉じてクロックパルスを受け取る。
示されているように、2つの列選択線651および652、ならびに3つの行選択線641、642、643がある。各クロックゲートの選択入力は、それぞれ異なる列選択線および行選択線の組み合わせに接続されていることで、特定の列選択線および行選択線を論理高に設定することにより、その行選択入力および列選択入力がそれらの2つの選択線に接続された単一のクロックゲートがアクティブ状態になる。
入力線からのデータ値は、あるプログラミングシフトレジスタがクロック入力を受け取ると、そのプログラミングシフトレジスタのみを通して伝搬されることになるため、1つの選択されたプログラミングシフトレジスタにクロック信号を送ることにより、単一の入力線67で任意のプログラミングシフトレジスタを選択的にプログラムすることが可能である。
列選択線651および652は、列デコーダ65によって制御され、行選択線641、642、643は、行デコーダ64によって制御される。これらのデコーダは、入力線67上の値に対応付けられた命令を受け取り、対象となっているプログラミングシフトレジスタのいずれかに入力線67上の値をアドレス指定する。このように、初期化フェーズの間、図6の回路は、入力線67上および線66上の構成ビットストリームクロックだけでなく、デコーダ64および65におけるアドレス指定ビットストリームも受け取ることになる。
フリップフロップのサブセット、すなわち、所与の時間においてプログラムされている論理ブロックに属しているもののみがクロックされるという事実の結果として、電力消費が大幅に減少する。
FPGAにおいて実施される実際のシステムでは、多くの論理ブロックが同一に構成され、共通の関数を実施することが理解されるであろう。本発明の利点の1つは、複数のプログラミングシフトレジスタのクロックゲートを有効にすることで、同じ構成値をいくつかのプログラミングシフトレジスタに並列でクロックすることが可能となり得ることである。これにより、FPGAの初期化時間が短縮され、電力消費が削減される。
示されているように、3つのプログラミングシフトレジスタは3つのフリップフロップのみを有しているが、実際の実装形態では、プログラミングシフトレジスタは概してかなり長くなることが理解されるであろう。実際の実装形態はまた、通常、7つ以上の論理ブロックおよびそれに相応して7つ以上のプログラミングシフトレジスタを含むことになる。プログラミングシフトレジスタは、すべて同じ数のフリップフロップを含むように示されているが、各プログラミングシフトレジスタが独立してクロックされるため、図6のアプローチは、各プログラミングシフトレジスタが任意の数のフリップフロップを含むことができる構成にも同様に好適である。
このアドレス指定機能は、標準的な集積クロックゲーティングセルにより、またはそれ以外の方法により実施してもよい。特定の実施形態は、個々のアドレス指定とともにプログラミングシフトレジスタのグループの、またはすべてのプログラミングシフトレジスタの共通の使用可能性を提供することができる。
プログラミングシフトレジスタのアーキテクチャと論理ブロックのレイアウトとの間の直接的な構造上の対応を実装することにより、構成ビットストリームの生成に対して構造化されたアプローチを課すことで、FPGAのプログラミングが容易になると考えられる。
所与のFPGAを、独立してプログラムされる区分に細分することができ、例えば図4、図5および図6に関して説明したような様々なプログラミングシフトレジスタのアーキテクチャの組み合わせが、同じFPGAにおいてその異なる部分に対して可能であることが理解されるであろう。
用途によっては、様々な構成メモリセルに格納された構成設定を読み戻すことが望ましいであろう。原則として、これらはシステムの初期化時に提供される構成ビットストリームと同一であると期待することができるが、実際には、状況によってはそうでない場合がある。例えば、宇宙空間、高高度飛行、原子力および軍事用途で起こり得るような電離放射線への曝露は、構成メモリセルの値をランダムに変更し、FPGAによる後続の処理の結果を改ざんすることがある。元のビットストリームを構成メモリビットから読み出された格納された値と比較することにより、これが起こった可能性があるかどうかを判断するための手段が提供される。
このように、アドレス指定システムを含むことにより、前記複数のプログラミングシフトレジスタのいずれかに、前記第1のモードにおける前記所定のテスト値で、または前記第2のモードにおける前記論理関数を実施する前記値でロードされるように、個別にアドレス指定することができるフィールドプログラマブルゲートアレイが開示されている。
さらに、このアドレス指定システムは、各プログラミングシフトレジスタと関連付けられたアドレス指定可能なクロックゲートをそれぞれ含むことができ、このクロックゲートは、このようにアドレス指定されるときに関連付けられるプログラミングシフトレジスタにクロック信号を供給するように適合されている。
図7は、図4の構造を、構成の読み出しに適合させた一変形形態を示す。図7に示されているように、図4を参照して説明したのと同じプログラミングシフトレジスタ421、431、441と関連付けられた同じ演算部41が設けられている。示されているように、3つのプログラミングシフトレジスタのそれぞれの最後のフリップフロップは、その出力をFPGA回路41のコンポーネントだけでなく、マルチプレクサ48にも提供する。このように、マルチプレクサ48は、3つのプログラミングシフトレジスタ421、431、441のそれぞれの最後のフリップフロップから入力を受け取る。
演算中、FPGAの処理フェーズが完了し、結果が生成されると、上述したような元のビットストリームとの一貫性を確保するように、構成フリップフロップの構成をダンプすることが望ましい場合がある。これが必要な場合、プログラミングシフトレジスタは、クロック線46およびマルチプレクサ48によってサンプリングされた各プログラミングシフトレジスタの出力を介してクロックされて、通常、元の構成ビットストリームと同一であるはずの多重ビットストリームを生成する。乗算器への選択信号481は、単にクロック線46上のクロック周波数の3倍で3つの入力のラウンドロビン選択を生じさせるか、または例えば、プログラミングシフトレジスタの長さが異なる場合、各クロックパルスに特有なプログラムされたシーケンスを含むことができる。
図7のアプローチは、図5の構造に容易に適合可能であることが理解されるであろう。
図8は、図6の構造を、構成の読み出しに適合させた一変形形態を示す。図8に示されるように、FPGAは、論理ブロック611、612、613、614、615、616の同じ行列のまわりに構成され、各論理ブロックには、図6に関して説明したようなそれぞれのプログラミングシフトレジスタ621、622、623、624、625、626、およびクロックゲート631、632、633、634、635、636が設けられている。示されているように、この構造は、6つのプログラミングシフトレジスタ621、622、623、624、625、626のそれぞれの1つの最後のフリップフロップの出力に接続された、1つの入力をそれぞれ有する6つのANDゲート681、682、683、684、685、686をさらに含む。6つのANDゲート681、682、683、684、685、686のそれぞれの第2の入力は、それぞれのクロックゲート631、632、633、634、635、636のANDゲートの出力にそれぞれ接続されている。この手段により、アドレス可能なクロックイネーブル機構を使用して、演算部の出力を選択的に有効にすることも可能である。6つのANDゲートの出力はそれぞれ、6つの入力ORゲート691のそれぞれの入力に接続され、その出力は出力フリップフロップ692のD入力に送り込まれる。
演算中、FPGAの演算フェーズが完了し、結果が生成されると、上述したような元のビットストリームとの一貫性を確保するように、構成フリップフロップの構成をダンプすることが望ましい場合がある。これが必要な場合、イネーブル線が論理高に設定され、その結果、選択されたANDゲートは、各プログラミングシフトレジスタの最後のフリップフロップの出力上の値をORゲート691に渡す。上述した構成ビットストリーム入力と同様に、プログラミングシフトレジスタのいずれかの値が出力されるクロックゲートは、行デコーダ64および列デコーダ65を介して有効にされ、最初のクロックパルスが選択されたプログラミングシフトレジスタに到達する。クロックされたプログラミングシフトレジスタ内の最後のフリップフロップが論理高を生成する場合、これは、値を受け取るそれぞれのANDゲートに論理高を出力させ、この論理高がORゲート691によって出力フリップフロップ692のD入力に渡され、出力フリップフロップが入力693でクロックパルスを受け取るまでそこに格納されると、その値が線684で出力される。この手段により、上述のようにクロックゲートを介して出力をオンにし、プログラミングシフトレジスタおよび出力フリップフロップを協調してクロックすることを可能にすることにより、各構成プログラミングシフトレジスタに格納された値を読み出し、元のビットストリームと比較することができる。
したがって、フィールドプログラマブルゲートアレイは、プログラミングシフトレジスタに第2の演算モードでロードされた論理関数を実施する値が、前記プログラミングシフトレジスタから読み戻される第3の演算モードを実施するようにさらに適合させることができる。
特定の実施形態は、FPGAをプログラミングするための一連の方法ステップに関して説明され得ることが理解されるであろう。
上記はルーティングスイッチまたはLUT構成のいずれかに専用のプログラミングシフトレジスタについて全般的に説明しているが、任意のプログラミングシフトレジスタ内の任意のフリップフロップを必要に応じて任意のFPGA要素に結合することが可能であることが理解されるであろう。
図9は、さらなる一実施形態による演算部のさらなる詳細を示す。
図9に示されるように、例えば、上述の実施形態を参照して説明したような、演算部レジスタに対応する演算部910が設けられている。この演算部910は、2つのLUT、911および912を含む。LUT911、912の出力はそれぞれ、それぞれのマルチプレクサ913、914に接続されている。これらのマルチプレクサ913、914の出力は、フリップフロップ915、616にそれぞれ接続されている。マルチプレクサ913およびフリップフロップ915と、マルチプレクサ914およびフリップフロップ916とは、それぞれ一緒にデュアル構成のLUTフリップフロップ921、922をそれぞれ構成する。マルチプレクサ913の第2の入力は、テスト値入力線917に接続されている。マルチプレクサ914の第2の入力は、LUTフリップフロップ916の出力に接続されている。2つのマルチプレクサ913、914の選択入力は、テストモード選択線918に共通に接続されている。各LUTフリップフロップ915、916の出力は、演算部910の出力線を供給している。2つのLUTフリップフロップ915、916は、共通のクロック線919によって駆動される。LUT911および912はそれぞれ3つのデータ入力を有し、これらがともに演算部の6つのデータ入力920を構成する。例えば上述の実施形態を参照して説明したようなプログラミングシフトレジスタに対応するプログラミングシフトレジスタ930がさらに設けられている。プログラミングシフトレジスタは、ほぼ上述の実施形態を参照して説明したように、LUT911、912、および複数のプログラム可能なルーティングスイッチ(図示せず)の構成値を提供する。クロック941は、クロックゲート940によってプログラミングシフトレジスタ930のクロック線942に選択的に接続される。示されているようにクロックゲート940がイネーブル入力を有することにより、論理高は、プログラミングシフトレジスタのクロック線をクロック941に接続しているスイッチを閉じてクロックパルスを受け取る。クロックイネーブル入力943もプログラミング出力ANDゲート950の一方の入力に接続され、ANDゲート950の他方の入力は、プログラミングシフトレジスタ930の最後のフリップフロップの出力に接続されている。プログラミングシフトレジスタの第1のフリップフロップは、プログラミングシフトレジスタのデータ入力67を構成する。演算部は、任意の数のLUTを含むことができ、これらのLUTは任意の数の入力を有することができ、入力の数に関係なく、LUTは複数の出力を有することができ、その一部またはすべてをLUTフリップフロップと関連付け得ることが理解されるであろう。上述したように、マルチプレクサ913(および914)が適切な選択入力を受け取ると、2つのLUTフリップフロップ915、916(テストモードと呼ばれる)がLUTシフトレジスタを構成する。このシフトレジスタは、様々な演算部内のフリップフロップを含めて任意の数のLUTフリップフロップを含むことができる。上述の実施形態に関して説明した様々な構成のいずれもが、図9の構成に同様に適合可能である。
演算中、この構成が、図10を参照して説明するように、FPGAをテストする方法をサポートする。
図10は、一実施形態によるFPGAをロードする方法を示す。
図10に示されるように、以下のステップを含むFPGAを動作させる方法が提供される。本方法は、ステップ1001から開始し、ステップ1002に進み、プログラミングシフトレジスタ930に結合された出力を有するマルチプレクサ38に、テストプロトコルを実施する構成値を受け取る入力381を選択するように命令する。
ステップ1003において、複数のLUTフリップフロップ921、922にテスト構成に入るように命令し、前記LUTフリップフロップがそれぞれ前記テストプロトコルを実施する入力を受け取り、前記LUTフリップフロップがLUTシフトレジスタとして接続される。
ステップ1004において、前記プログラミングシフトレジスタ930をクロックして、前記テストプロトコルを実施する前記構成値に属するLUT構成値で前記プログラミングシフトレジスタの要素の第1のセットをロードし、前記プログラミングシフトレジスタをクロックして、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットをロードする。
シフトレジスタの要素の第1のセットおよびシフトレジスタの要素の第2のセットは、同じシフトレジスタに点在させ得ることが理解されるであろう。シフトレジスタに値をロードすることは、シフトレジスタをクロックして、関連する構成値をその所望の最終位置に移動させることを伴うことになる。場合により、値がロードされるシフトレジスタのアドレス指定が必要なこともある。複数のシフトレジスタに値を、並列または直列でロードすることが望ましい場合があり、その場合、本方法は、次のステップに進む前に複数のシフトレジスタ間で反復することができる。
ステップ1005において、前記複数のLUTフリップフロップ921、922に演算構成に入るように命令し、前記LUTフリップフロップ921、922はそれぞれ、複数のLUTの出力から入力をそれぞれ受け取る。
ステップ1006において、前記複数のLUTにデータ値を(入力920上で)適用する。
ステップ1007において、前記LUTフリップフロップをクロックして、前記LUTそれぞれの、前記フリップフロップのそれぞれへの出力であって、前記テストプロトコルおよび前記データ入力に応答する前記出力をサンプリングする。
ステップ1008において、前記LUTフリップフロップにテスト構成に入るように命令し、前記LUTフリップフロップが、LUTシフトレジスタ内で接続され、シフトレジスタとして接続される。
ステップ1009において、前記LUTフリップフロップをクロックして、前記テストプロトコルおよび前記データ入力に応答する前記LUTの前記出力を含む前記LUTシフトレジスタの値を読み出し、かつステップ1010において終了する。
テスト値がロードされると、期待値への適合性を確認するためにFPGAの挙動が評価されることになる。このテスト手順の詳細は、FPGAシステム自体の性質に依存し、本発明の範囲外である。
概して言えば、上記のテストモードは、製造後にFPGAが完全に機能することを保証するために、工場出荷時の設定にのみ使用される。
いくつかの実施形態では、複数のテストプロトコルを定義することができ、その場合、上述のステップを複数回反復することができ、各反復は異なるテストプロトコルを順にロードする。
演算中、図9の構成が、図11を参照して説明するように、FPGAを動作させる方法をさらにサポートする。
図11は、一実施形態によるFPGAを動作させる方法を示す。
図11に示されるように、以下のステップを含むFPGAを動作させる方法が提供される。本方法は、ステップ1101から開始し、ステップ1102に進み、プログラミングフリップフロップに結合された出力を有するマルチプレクサに、論理関数を実施する構成値を受け取る入力を選択するように命令する。
ステップ1103において、複数のLUTフリップフロップに、演算構成に入るように命令し、前記LUTフリップフロップがそれぞれ、複数のLUTの出力から入力をそれぞれ受け取る。
ステップ1104において、前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するLUT構成値で前記プログラミングシフトレジスタの要素の第1のセットをロードし、前記プログラミングシフトレジスタをクロックして、前記論理関数を実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットをロードし、かつステップ1105において終了する。
図11の実施形態の発展形態によれば、本方法は、複数のプログラミングシフトレジスタのなかから第1のプログラミングシフトレジスタの出力を有効にする追加のステップと、第1のプログラミングシフトレジスタに関して図11のステップを実施し、次に、前記複数のシフトレジスタのそれぞれに対してこれらのステップを繰り返す追加のステップとを含むことができる。
演算中、図9の構成は、FPGAを検証する方法をさらにサポートする。この方法は、前記第1のプログラミングシフトレジスタをクロックして、前記第1のプログラミングシフトレジスタの要素の第1のセットを、論理関数を実施する前記LUT構成値で読み出すステップと、前記第1のプログラミングシフトレジスタをクロックして、論理関数を実施するルーティングスイッチ構成で前記シフトレジスタの要素の第2のセットを読み出すステップとを含むことができる。
この実施形態の発展形態によれば、本方法は、複数のプログラミングシフトレジスタのなかから第1のプログラミングシフトレジスタの出力を有効にする追加のステップと、第1のプログラミングシフトレジスタに関して上記を実施し、次に、前記複数のシフトレジスタのそれぞれに対してこれらのステップを繰り返す追加のステップとを含むことができる。
図12は、さらなる一実施形態によるFPGAを検証する方法を示す。
図12の実施形態は、上述の実施形態の一発展形態である。
図12に示されるように、以下のステップを含むFPGAを動作させる方法が提供される。本方法は、ステップ1201から開始し、ステップ1202に進み、前記第1のプログラミングシフトレジスタをクロックして、前記第1のプログラミングシフトレジスタの要素の第1のセットを、論理関数を実施する前記LUT構成値で読み出し、前記第1のプログラミングシフトレジスタをクロックして、前記シフトレジスタの要素の第2のセットを、論理関数を実施するルーティングスイッチ構成で読み出す。次に、本方法は、ステップ1203に進み、例えば図11を参照して説明した方法に従って、論理関数を実施するLUT構成、および前記シフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するLUT構成、および元々前記シフトレジスタに読み込まれた論理関数を実施するルーティングスイッチ構成と比較する。次に、本方法は、ステップ1204において終了する。
通常の状況では、シフトレジスタにロードされたビットストリームは、シフトレジスタから読み取られたビットストリームと同一のはずであることが期待されている。この2つが同一であると判明した場合、FPGAの演算状態および対応する結果が検証されたとみなすことができる。シフトレジスタにロードされたビットストリームが、シフトレジスタから読み取られたビットストリームと同一でない場合、結果の一部または全部に欠陥があるとみなされなければならない。
図10、図11および図12を参照して説明したステップの様々な組み合わせが、本発明の実施形態を構成し得ることが理解されるであろう。多くの場合、方法ステップの一部または全部は、FPGAとインタフェースし、かつ演算のテストモード、演算モードおよび検証モード中、上述したような適切なビットストリームを提供するコンピュータプログラミングによって実施することができる。場合により、この機能の一部または全部をFPGAと同じチップ上で実施してもよく、またはFPGAが属する大規模なシステムの一部によって実行してもよい。他の場合には、この機能は、製造後のテスト目的でFPGAが一時的に結合されているテストまたは検証システムにより、または疑わしい結果を生成した後もしくはエラーを誘発する条件にさらされた後の検証により提供することができる。
いくつかの実施形態では、本明細書に記載された方法およびプロセスは、コンピューティングデバイスによって全体的にまたは部分的に実施してもよい。これらの方法およびプロセスは、コンピュータアプリケーションプログラムまたはサービス、アプリケーション-プログラミングインタフェース(API)、ライブラリ、および/または他のコンピュータプログラム製品、またはこのようなエンティティの任意の組み合わせによって実施することができる。
図13は、本発明の実施形態の実施に適した一般的なコンピューティングシステムを示す。
図13に示されているように、システムは、論理デバイス1301および記憶デバイス1302を含む。本システムは、表示サブシステム1311、入力サブシステム1312、1313、1315、通信サブシステム1320、および/または示されていない他のコンポーネントを任意選択的に含むことができる。
論理デバイス1301は、命令を実行するように構成された1つまたは複数の物理デバイスを含む。例えば、論理デバイス1301は1つまたは複数のアプリケーション、サービス、プログラム、ルーチン、ライブラリ、オブジェクト、コンポーネント、データ構造または他の論理構造の一部である命令を実行するように構成することができる。このような命令を実施して、タスクを実行し、データタイプを実施し、1つまたは複数のコンポーネントの状態を変換し、技術的効果を達成し、またはそれ以外の所望の結果に到達するようにすることができる。
論理デバイス1301は、ソフトウェアの命令を実行するように構成された1つまたは複数のプロセッサを含むことができる。追加的または代替的に、論理デバイスは、1つまたは複数のハードウェアまたはファームウェアの命令を実行するように構成されたハードウェアまたはファームウェア論理デバイスを含むことができる。
論理デバイスのプロセッサは、シングルコアまたはマルチコアであってもよく、プロセッサ上で実行される命令は、逐次処理、並列処理および/または分散処理用に構成されてもよい。論理デバイス1301の個々のコンポーネントは、任意選択的に、2つ以上の別個のデバイス間に分配してもよい。2つ以上の別個のデバイスを遠隔して配置させ、かつ/または協調して処理を行うように構成することができる。論理デバイス1301の態様は、クラウドコンピューティング構成で構成された遠隔アクセスが可能なネットワーク化されたコンピューティングデバイスによって仮想化し、実行することができる。
記憶デバイス1302は、論理デバイスによって実行可能な命令を保持するように構成された1つまたは複数の物理デバイスを含み、本明細書に記載された方法およびプロセスを実施する。このような方法およびプロセスが実施されると、記憶1302デバイスの状態が、例えば様々なデータを保持するように変換されてもよい。
記憶デバイス1302は、取り外し可能な、および/または内蔵式のデバイスを含むことができる。記憶デバイス1302は、特に、光メモリ(例えば、CD、DVD、HD-DVD、ブルーレイディスク等)、半導体メモリ(例えば、RAM、EPROM、EEPROM等)、および/または磁気記憶装置(例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAM等)を含む1つまたは複数のタイプの記憶デバイスを含むことができる。記憶デバイスは、揮発性、不揮発性、動的、静的、読み取り/書き込み、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、および/または内容アドレス指定可能デバイスを含むことができる。
特定の構成では、システムは、論理デバイス1301とさらなるシステムコンポーネントとの間の通信をサポートするように適合されたインタフェース1303を含むことができる。例えば、追加のシステムコンポーネントは、取り外し可能な、および/または内蔵式の拡張記憶デバイスを含むことができる。拡張記憶デバイスは、特に、光メモリ1332(例えば、CD、DVD、HD-DVD、ブルーレイディスク等)、半導体メモリ1333(例えば、RAM、EPROM、EEPROM、FLASH等)、および/または磁気記憶装置1331(例えば、ハードディスクドライブ、フロッピーディスクドライブ、テープドライブ、MRAM等)を含む1つまたは複数のタイプの記憶デバイスを含むことができる。このような拡張記憶デバイスは、揮発性、不揮発性、動的、静的、読み取り/書き込み、読み取り専用、ランダムアクセス、逐次アクセス、位置アドレス指定可能、ファイルアドレス指定可能、および/または内容アドレス指定可能デバイスを含むことができる。
記憶デバイスは、1つまたは複数の物理デバイスを含み、それ自体信号を伝搬するものは除外することが理解されるであろう。しかしながら、本明細書で代替的な選択肢として説明される命令の態様は、記憶デバイスに格納されるものとは対照的に、通信媒体(例えば、電磁信号、光信号等)によって伝搬されてもよい。
論理デバイス1301および記憶デバイス1302の態様は、1つまたは複数のハードウェア論理コンポーネントに一緒にまとめることができる。このようなハードウェア論理コンポーネントは、例えば、フィールドプログラマブルゲートアレイ(FPGA)、特定プログラムおよび特定アプリケーション向け集積回路(PASIC/ASIC)、特定プログラムおよび特定アプリケーション向け標準品(PSSP/ASSP)、システムオンチップ(SOC)、および複合プログラム可能論理デバイス(CPLD)を含むことができる。
「プログラム」という用語は、特定の関数を実行するために実装されたコンピューティングシステムの一態様を記述するために使用されてもよい。場合により、プログラムは、記憶デバイスに保持された機械可読命令を実行する論理デバイスを介してインスタンス化することができる。様々なモジュールが、同じアプリケーション、サービス、コードブロック、オブジェクト、ライブラリ、ルーチン、API、関数等からインスタンス化し得ることが理解されるであろう。同様に、同じプログラムは、様々なアプリケーション、サービス、コードブロック、オブジェクト、ルーチン、API、関数等によってインスタンス化することができる。「プログラム」という用語は、個々の実行可能ファイル、データファイル、ライブラリ、ドライバ、スクリプト、データベースレコード等、またはこれらのグループを包含することができる。
特に、図13のシステムは、本発明の実施形態を実施するために使用することができる。
例えば、図10、図11または図12に関して説明したステップを実施するプログラムは、記憶デバイス1302に格納され、論理デバイス1301によって実行することができる。1つまたは複数のシフトレジスタにロードされたビットストリームは、論理デバイス1301によって生成され、かつ/または記憶デバイス1302または拡張記憶デバイス1332、1333、もしくは1331に格納されてもよい。ビットストリームは、論理デバイス1301の動作により、通信インタフェース1320を介して1つまたは複数のシフトレジスタにロードすることができる。1つまたは複数のシフトレジスタから読み取られたビットストリームは、論理デバイス1301の動作により、通信インタフェース1320を介して取り出され、かつ/または記憶デバイス1302または拡張記憶デバイス1332、1333、もしくは1331に格納することができる。論理デバイス1301は、1つまたは複数のシフトレジスタにロードされたビットストリーム、および1つまたは複数のシフトレジスタから読み取られたビットストリームを検証モードで取り出し、比較を実行して結果の妥当性を判定することができる。
したがって、本発明は、コンピュータプログラムの形態で具体化することができる。
本明細書で使用する場合、「サービス」は、複数のユーザセッションにわたって実行可能なアプリケーションプログラムであることが理解されるであろう。サービスは1つまたは複数のシステムコンポーネント、プログラム、および/または他のサービスに利用可能な場合がある。いくつかの実装形態では、サービスは1つまたは複数のサーバコンピューティングデバイス上で実行することができる。
含まれる場合、表示サブシステム1311は、記憶デバイスに保持されたデータの視覚的表現を表すために使用されてもよい。この視覚的表現は、グラフィカルユーザインタフェース(GUI)の形態をとってもよい。本明細書に記載されている方法およびプロセスは、記憶デバイス1302に保持されたデータを変更し、したがって、記憶デバイス1302の状態を変換し、表示サブシステム1311の状態を同様に変換して、基礎をなすデータの変更を視覚的に表すようにすることができる。表示サブシステム1311は、事実上あらゆるタイプの技術を利用する1つまたは複数の表示デバイスを含むことができる。このような表示デバイスは、共有されている格納装置内の論理デバイスおよび/または記憶デバイスと組み合わせることができる。あるいは、このような表示デバイスは、表示周辺デバイスとしてもよい。
含まれる場合、入力サブシステムは、キーボード1312、マウス1313、タッチスクリーン1311またはゲームコントローラ(図示せず)などの1つまたは複数のユーザ入力デバイスを含むか、これらとインタフェースすることができる。いくつかの実施形態では、入力サブシステムは、選択されたナチュラルユーザ入力(NUI)コンポーネント類を含むか、またはこれらとインタフェースすることができる。このようなコンポーネント類は、内蔵型または周辺機器とすることができ、入力動作の変換および/または処理は、オンボードまたはオフボードで取り扱うことができる。NUIコンポーネント類の例には、発話および/または音声認識のためのマイクロホン、マシンビジョンおよび/またはジェスチャ認識のための赤外線、カラー、立体視および/または深度カメラ、動きの検出および/または意図の認識のための視点追跡装置、眼球追跡装置、加速度計、および/またはジャイロスコープ、ならびに脳活動を評価するための電場感知コンポーネント類が含まれ得る。
含まれる場合、通信サブシステム1320は、コンピューティングシステムを1つまたは複数の他のコンピューティングデバイスと通信可能に結合するように構成することができる。例えば、通信モジュールは、例えばパーソナルエリアネットワーク、ローカルエリアネットワーク、ワイドエリアネットワークまたはインターネットを含む任意のサイズのネットワークを介して、例えばリモートサーバ1376上にホストされたリモートサービスに、コンピューティングデバイスを通信可能に結合することができる。通信サブシステムは、1つまたは複数の様々な通信プロトコルと互換性のある有線および/または無線通信デバイスを含むことができる。非限定的な例として、通信サブシステムは、無線電話ネットワーク1374、または有線もしくは無線のローカルネットワークもしくはワイドエリアネットワークを介しての通信のために構成することができる。いくつかの実施形態では、通信サブシステムは、インターネット1375などのネットワークを介してコンピューティングシステムが他のデバイスにメッセージを送信、かつ/または他のデバイスからメッセージを受信することを可能にし得る。通信サブシステムは、受動デバイス(NFC、RFID等)による短距離誘導通信1321を追加的にサポートすることができる。
特定の実施形態によれば、FPGA内のルックアップテーブル(LUT)およびプログラム可能なルーティングスイッチの構成値は、シフトレジスタ内に配置された複数のフリップフロップによって提供される。このシフトレジスタは、工場テストモードでテスト値を受け取り、演算モードで(クライアントが要求するFPGAのあらゆる機能を実施する)演算構成値を受け取ることができる。ビットストリームはシフトレジスタの一方の端で供給され、最後のフリップフロップがその値を受け取るまでの間にわたりクロックされる。例えば、放射線曝露に起因する、格納された値の破損を識別するために、シフトレジスタの他方の端で値をクロックアウトして、初期ビットストリームと比較することも可能である。特定の選択されたシフトレジスタにデータをロードするか、または特定の選択されたシフトレジスタからデータを読み取るためのクロックゲーティングアーキテクチャが提案される。
本明細書に記載された構成および/またはアプローチは本来例示的であり、これらの特定の実施形態または例は、多数の変形形態が可能であるため、限定的な意味で考慮されるべきではないことが理解されるであろう。本明細書に記載された特定のルーチンまたは方法は、任意の数のプロセス戦略の1つまたは複数を表すことができる。そのため、図示および/または説明した様々な動作が、図示および/または説明した順序で、他の順序で、並列して、または省略されて実行されてもよい。同様に、上述したプロセスの順序を変更してもよい。
本開示の主題は、本明細書で開示されている様々なプロセス、システムおよび構成、ならびに他の特徴、機能、動作、および/または特性のすべての新規のかつ自明でない組み合わせおよび部分的組み合わせに加えて、そのすべての均等物も含む。

Claims (6)

  1. 複数のルックアップテーブル(LUT)(21、22、911、912)を備えるFPGAを動作させる方法であって、前記LUTがそれぞれ、複数の構成入力、複数のデータ入力(920)、および1つ以上のデータ出力を備え、前記方法は、
    プログラミングシフトレジスタ(37)に結合された出力を有するマルチプレクサ(38)に、テストプロトコルを実施する構成値を受け取る入力を選択するように命令するステップと、
    複数のLUTフリップフロップ(915、916)に、テスト構成に入るように命令するステップであって、前記LUTフリップフロップ(915、916)がそれぞれ、前記テストプロトコルを実施する入力を受け取り、前記LUTフリップフロップ(915、916)がシフトレジスタとして接続される、ステップと、
    前記プログラミングシフトレジスタ(37)をクロックして、前記テストプロトコルを実施する前記構成値に属するLUT構成値で前記プログラミングシフトレジスタ(37)の要素(3707、3708、3709、3710、3711、3712、3713、3714、3715)の第1のセットをロードするステップと、
    前記プログラミングシフトレジスタ(37)をクロックして、前記テストプロトコルを実施する前記構成値に属するルーティングスイッチ構成で前記シフトレジスタ(37)の要素(3701、3702、3703、3704、3705、3706)の第2のセットをロードするステップと、
    前記複数のLUTフリップフロップ(915、916)に、前記LUTフリップフロップ(915、916)がそれぞれ前記複数のLUT(21、22)の前記出力それぞれから入力をそれぞれ受け取る演算構成に入るように命令するステップと、
    前記複数のLUT(21、22)の前記入力(920)に、前記プログラミングシフトレジスタのそれぞれの要素からのデータを適用するステップと、
    前記LUTフリップフロップ(915、916)をクロックして、それぞれの前記LUTフリップフロップ(915、916)への前記LUT(21、22)それぞれの前記出力をサンプリングするステップであって、前記出力が前記テストプロトコルおよび前記データ入力に応答する、ステップと、
    前記LUTフリップフロップ(915、916)に、前記LUTフリップフロップがLUTシフトレジスタ内で接続され、かつシフトレジスタとして接続されるテスト構成に入るように命令するステップと、
    前記LUTフリップフロップ(915、916)をクロックして、前記テストプロトコルおよび前記データ入力に応答する前記LUTの前記出力を含む、前記LUTシフトレジスタの前記値を読み出すステップと
    を含む、方法。
  2. 第1のプログラミングシフトレジスタ(37)の前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
    さらなる前記プログラミングシフトレジスタに対して前記有効にするステップ、前記命令するステップ、および前記クロックするステップを繰り返すさらなるステップと
    を含む、請求項に記載の方法。
  3. 第1のプログラミングシフトレジスタ(37)の前記出力を前記プログラミングシフトレジスタとして有効にするさらなるステップと、
    さらなる前記プログラミングシフトレジスタに対して前記有効にするステップおよび前記クロックするステップを繰り返すさらなるステップと
    を含む、請求項に記載の方法。
  4. 論理関数を実施する前記LUT構成、および前記プログラミングシフトレジスタから読み出された論理関数を実施するルーティングスイッチ構成を、論理関数を実施するLUT構成、および元々前記シフトレジスタに読み込まれた論理関数を実施するルーティングスイッチ構成と比較するさらなるステップを含む、請求項に記載の方法。
  5. 請求項~4のいずれか一項に記載のステップを実施するように適合されたコンピュータプログラム。
  6. 請求項に記載のコンピュータプログラムを組み込んだコンピュータ可読媒体。
JP2021077157A 2015-10-15 2021-04-30 Fpgaのテストおよび構成のためのシステムおよび方法 Active JP7286706B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP15306641.0A EP3157172B1 (en) 2015-10-15 2015-10-15 System and method for testing and configuration of an fpga
EP15306641.0 2015-10-15
JP2017536024A JP2018537871A (ja) 2015-10-15 2016-10-07 Fpgaのテストおよび構成のためのシステムおよび方法

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2017536024A Division JP2018537871A (ja) 2015-10-15 2016-10-07 Fpgaのテストおよび構成のためのシステムおよび方法

Publications (2)

Publication Number Publication Date
JP2021145339A JP2021145339A (ja) 2021-09-24
JP7286706B2 true JP7286706B2 (ja) 2023-06-05

Family

ID=54360380

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2017536024A Pending JP2018537871A (ja) 2015-10-15 2016-10-07 Fpgaのテストおよび構成のためのシステムおよび方法
JP2021077157A Active JP7286706B2 (ja) 2015-10-15 2021-04-30 Fpgaのテストおよび構成のためのシステムおよび方法

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2017536024A Pending JP2018537871A (ja) 2015-10-15 2016-10-07 Fpgaのテストおよび構成のためのシステムおよび方法

Country Status (11)

Country Link
US (2) US10295595B2 (ja)
EP (2) EP3157172B1 (ja)
JP (2) JP2018537871A (ja)
KR (1) KR102564093B1 (ja)
CN (3) CN108028654B (ja)
IL (1) IL253219B (ja)
MY (1) MY184901A (ja)
RU (1) RU2733092C2 (ja)
SG (1) SG11201705319YA (ja)
TW (2) TWI746021B (ja)
WO (1) WO2017063957A1 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11625523B2 (en) 2016-12-14 2023-04-11 iCometrue Company Ltd. Logic drive based on standard commodity FPGA IC chips
TW202537391A (zh) 2016-12-14 2025-09-16 成真股份有限公司 標準大宗商品化現場可編程邏輯閘陣列(fpga)積體電路晶片組成之邏輯驅動器
US10963001B1 (en) 2017-04-18 2021-03-30 Amazon Technologies, Inc. Client configurable hardware logic and corresponding hardware clock metadata
US10447274B2 (en) 2017-07-11 2019-10-15 iCometrue Company Ltd. Logic drive based on standard commodity FPGA IC chips using non-volatile memory cells
US10957679B2 (en) 2017-08-08 2021-03-23 iCometrue Company Ltd. Logic drive based on standardized commodity programmable logic semiconductor IC chips
US10630296B2 (en) 2017-09-12 2020-04-21 iCometrue Company Ltd. Logic drive with brain-like elasticity and integrality based on standard commodity FPGA IC chips using non-volatile memory cells
WO2019129389A1 (en) * 2017-12-26 2019-07-04 Silicon Mobility Sas Flexible logic unit adapted for real-time task switching
US10608642B2 (en) 2018-02-01 2020-03-31 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile radom access memory cells
US10623000B2 (en) 2018-02-14 2020-04-14 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips
US10707873B2 (en) * 2018-03-21 2020-07-07 University Of Southern California Superconducting magnetic field programmable gate array
US10608638B2 (en) 2018-05-24 2020-03-31 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips
US12476637B2 (en) 2018-05-24 2025-11-18 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips
US10892011B2 (en) 2018-09-11 2021-01-12 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells
US11309334B2 (en) 2018-09-11 2022-04-19 iCometrue Company Ltd. Logic drive using standard commodity programmable logic IC chips comprising non-volatile random access memory cells
US10937762B2 (en) 2018-10-04 2021-03-02 iCometrue Company Ltd. Logic drive based on multichip package using interconnection bridge
US11616046B2 (en) 2018-11-02 2023-03-28 iCometrue Company Ltd. Logic drive based on chip scale package comprising standardized commodity programmable logic IC chip and memory IC chip
US11211334B2 (en) 2018-11-18 2021-12-28 iCometrue Company Ltd. Logic drive based on chip scale package comprising standardized commodity programmable logic IC chip and memory IC chip
US10831507B2 (en) 2018-11-21 2020-11-10 SambaNova Systems, Inc. Configuration load of a reconfigurable data processor
US11188497B2 (en) 2018-11-21 2021-11-30 SambaNova Systems, Inc. Configuration unload of a reconfigurable data processor
CN109445876B (zh) * 2018-12-12 2023-04-11 北京时代奥视科技有限公司 Lut数据加载的方法及监视器
EP3667529B1 (de) 2018-12-14 2024-02-28 Siemens Aktiengesellschaft Verfahren und vorrichtung zum authentisieren einer fpga-konfiguration
US10698853B1 (en) 2019-01-03 2020-06-30 SambaNova Systems, Inc. Virtualization of a reconfigurable data processor
US10768899B2 (en) 2019-01-29 2020-09-08 SambaNova Systems, Inc. Matrix normal/transpose read and a reconfigurable data processor including same
CN109857024B (zh) * 2019-02-01 2021-11-12 京微齐力(北京)科技有限公司 人工智能模块的单元性能测试方法和系统芯片
US11386038B2 (en) 2019-05-09 2022-07-12 SambaNova Systems, Inc. Control flow barrier and reconfigurable data processor
US10985154B2 (en) 2019-07-02 2021-04-20 iCometrue Company Ltd. Logic drive based on multichip package comprising standard commodity FPGA IC chip with cryptography circuits
US11227838B2 (en) 2019-07-02 2022-01-18 iCometrue Company Ltd. Logic drive based on multichip package comprising standard commodity FPGA IC chip with cooperating or supporting circuits
US11055141B2 (en) 2019-07-08 2021-07-06 SambaNova Systems, Inc. Quiesce reconfigurable data processor
US11887930B2 (en) 2019-08-05 2024-01-30 iCometrue Company Ltd. Vertical interconnect elevator based on through silicon vias
JP7037528B2 (ja) * 2019-09-12 2022-03-16 株式会社東芝 集積回路およびそのテスト方法ならびに電子機器
US11637056B2 (en) 2019-09-20 2023-04-25 iCometrue Company Ltd. 3D chip package based on through-silicon-via interconnection elevator
CN111175637B (zh) * 2020-01-09 2022-02-15 深圳市正宇兴电子有限公司 一种基于功能测试的光学soc芯片测试方法及系统
US11037069B1 (en) * 2020-01-17 2021-06-15 Tegze P. Haraszti Method for creating gates and circuits for greatly improved computing apparatus by using symbol transformer
US11600526B2 (en) 2020-01-22 2023-03-07 iCometrue Company Ltd. Chip package based on through-silicon-via connector and silicon interconnection bridge
TWI734420B (zh) * 2020-03-18 2021-07-21 國立成功大學 具掃描鍊架構與邏輯單元矩陣之測試晶片架構及其診斷方法
US11809908B2 (en) 2020-07-07 2023-11-07 SambaNova Systems, Inc. Runtime virtualization of reconfigurable data flow resources
US11782729B2 (en) 2020-08-18 2023-10-10 SambaNova Systems, Inc. Runtime patching of configuration files
CN112147492B (zh) * 2020-10-13 2022-03-22 无锡中微亿芯有限公司 一种查找表的新型可测试性结构
CN114442736B (zh) * 2020-11-02 2023-09-05 芯启源(上海)半导体科技有限公司 基于动态配置接口的时钟配置器、fpga系统
CN112580069B (zh) * 2020-12-05 2023-04-07 西安翔腾微电子科技有限公司 一种主机在线加载配置表权限获取的方法
TW202240808A (zh) 2021-01-08 2022-10-16 成真股份有限公司 使用於積體電路晶片封裝結構中的微型熱導管
CN112861455B (zh) * 2021-03-12 2022-05-17 上海先基半导体科技有限公司 Fpga建模验证系统及方法
CN113098597A (zh) * 2021-03-31 2021-07-09 北京百度网讯科技有限公司 光保护装置以及光功率检测的方法
US12176278B2 (en) 2021-05-30 2024-12-24 iCometrue Company Ltd. 3D chip package based on vertical-through-via connector
US11556494B1 (en) 2021-07-16 2023-01-17 SambaNova Systems, Inc. Defect repair for a reconfigurable data processor for homogeneous subarrays
US11327771B1 (en) 2021-07-16 2022-05-10 SambaNova Systems, Inc. Defect repair circuits for a reconfigurable data processor
US11409540B1 (en) 2021-07-16 2022-08-09 SambaNova Systems, Inc. Routing circuits for defect repair for a reconfigurable data processor
CN113505096B (zh) * 2021-08-05 2022-10-18 北京极光星通科技有限公司 星载激光通信终端及其功耗控制方法
US11736107B2 (en) * 2021-08-19 2023-08-22 Wuxi Esiontech Co., Ltd. Field-programmable gate array (FPGA) for using configuration shift chain to implement multi-bitstream function
US20230187365A1 (en) 2021-09-24 2023-06-15 iCometrue Company Ltd. Field Programmable Multichip Package Based on Field-Programmable-Gate-Array (FPGA) Integrated-Circuit (IC) Chip
US12268012B2 (en) 2021-09-24 2025-04-01 iCometrue Company Ltd. Multi-output look-up table (LUT) for use in coarse-grained field-programmable-gate-array (FPGA) integrated-circuit (IC) chip
US11487694B1 (en) 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources
CN116450425B (zh) * 2022-11-24 2025-04-15 北京时代民芯科技有限公司 一种抗辐照FPGA内嵌PCIExpress IP核的测试电路和方法
CN120405391B (zh) * 2025-07-07 2025-10-03 珠海硅芯科技有限公司 基于eFPGA电路的集成电路的测试方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015122738A (ja) 2013-11-22 2015-07-02 株式会社半導体エネルギー研究所 半導体装置

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5365165A (en) 1986-09-19 1994-11-15 Actel Corporation Testability architecture and techniques for programmable interconnect architecture
SU1578715A1 (ru) * 1988-01-07 1990-07-15 Предприятие П/Я Р-6120 Тестопригодное цифровое устройство
US5027355A (en) 1989-04-14 1991-06-25 Control Data Corporation Logic circuit and design method for improved testability
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
JPH03139863A (ja) * 1989-10-25 1991-06-14 Hitachi Ltd 半導体集積回路
JP2564044B2 (ja) * 1991-02-27 1996-12-18 株式会社東芝 プログラマブル論理回路
JPH06148274A (ja) * 1992-11-02 1994-05-27 Kawasaki Steel Corp 集積回路
KR0148141B1 (ko) * 1993-07-31 1998-09-15 김광호 블랭킹레벨조정방법 및 그 장치
US5550843A (en) 1994-04-01 1996-08-27 Xilinx, Inc. Programmable scan chain testing structure and method
US5654650A (en) * 1995-12-11 1997-08-05 Hewlett-Packard Company High throughput FPGA control interface
US5867507A (en) 1995-12-12 1999-02-02 International Business Machines Corporation Testable programmable gate array and associated LSSD/deterministic test methodology
US5760602A (en) * 1996-01-17 1998-06-02 Hewlett-Packard Company Time multiplexing a plurality of configuration settings of a programmable switch element in a FPGA
US5889413A (en) * 1996-11-22 1999-03-30 Xilinx, Inc. Lookup tables which double as shift registers
US6011406A (en) * 1997-10-28 2000-01-04 Altera Corporation Ultra-fast configuration mode for a programmable logic device
US6347387B1 (en) * 1998-10-09 2002-02-12 Agere Systems Guardian Corp. Test circuits for testing inter-device FPGA links including a shift register configured from FPGA elements to form a shift block through said inter-device FPGA links
US6215327B1 (en) * 1999-09-01 2001-04-10 The United States Of America As Represented By The Secretary Of The Air Force Molecular field programmable gate array
JP2001298357A (ja) * 2000-04-13 2001-10-26 Seiko Epson Corp フィールド・プログラマブル・ゲートアレイ
US6470485B1 (en) * 2000-10-18 2002-10-22 Lattice Semiconductor Corporation Scalable and parallel processing methods and structures for testing configurable interconnect network in FPGA device
US6384627B1 (en) * 2001-02-16 2002-05-07 Xilinx, Inc. Logic block used as dynamically configurable logic function
JP3938308B2 (ja) * 2001-12-28 2007-06-27 富士通株式会社 プログラマブル論理デバイス
US7028281B1 (en) * 2002-07-12 2006-04-11 Lattice Semiconductor Corporation FPGA with register-intensive architecture
US7111214B1 (en) * 2002-10-09 2006-09-19 Xilinx, Inc. Circuits and methods for testing programmable logic devices using lookup tables and carry chains
DE102005023118B3 (de) * 2005-05-19 2006-12-21 Infineon Technologies Ag Schaltungsanordnung zum Zuführen von Konfigurationsdaten in FPGA-Einrichtungen
US7804719B1 (en) * 2005-06-14 2010-09-28 Xilinx, Inc. Programmable logic block having reduced output delay during RAM write processes when programmed to function in RAM mode
US7463056B1 (en) 2005-12-12 2008-12-09 Xilinx, Inc. Writeable shift register lookup table in FPGA with SRAM memory cells in lookup table reprogrammed by writing after initial configuration
US8195103B2 (en) * 2006-02-15 2012-06-05 Texas Instruments Incorporated Linearization of a transmit amplifier
JP5035239B2 (ja) * 2006-03-15 2012-09-26 日本電気株式会社 再構成可能デバイスのテストシステム及びその方法並びにそれに用いる再構成可能デバイス
US7362135B1 (en) * 2006-10-04 2008-04-22 Hyun-Taek Chang Apparatus and method for clock skew adjustment in a programmable logic fabric
US8091001B2 (en) * 2006-11-30 2012-01-03 Quicklogic Corporation FPGA programming structure for ATPG test coverage
US7925940B2 (en) * 2007-10-17 2011-04-12 Synopsys, Inc. Enhancing speed of simulation of an IC design while testing scan circuitry
US7809521B1 (en) * 2008-02-29 2010-10-05 The United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Precise delay measurement through combinatorial logic
US20100124272A1 (en) * 2008-11-19 2010-05-20 Gene Fein Coded pulse data transmission using a look-up table
CN101510775B (zh) * 2009-03-20 2012-01-18 复旦大学 可进化数字电路及其进化方法
CN101923440B (zh) * 2009-06-15 2011-12-14 杭州中科微电子有限公司 一种高速异步数据采集系统
US7859292B1 (en) * 2009-07-14 2010-12-28 United States Of America As Represented By The Administrator Of The National Aeronautics And Space Administration Methods and circuitry for reconfigurable SEU/SET tolerance
US8040152B1 (en) * 2010-02-02 2011-10-18 Lattice Semiconductor Corporation Separate configuration of I/O cells and logic core in a programmable logic device
IT1398937B1 (it) * 2010-02-17 2013-03-28 St Microelectronics Srl Metodo per eseguire un testing elettrico di dispositivi elettronici
KR101681736B1 (ko) * 2010-05-14 2016-12-02 삼성전자주식회사 입출력 래퍼들을 갖는 반도체 장치
FR2972566B1 (fr) 2011-03-11 2013-03-15 Sas Adicsys Design Système mono-puce comprenant un coeur programmable synthetisable et un procédé de fabrication d'un tel système
DE112012003335T5 (de) * 2011-08-12 2014-04-30 Denso Corp. Integrierte Schaltung
KR20130066267A (ko) * 2011-12-12 2013-06-20 한국전자통신연구원 필드 프로그래머블 게이트 어레이의 스위치 블록 회로
US9121892B2 (en) * 2012-08-13 2015-09-01 Analog Devices Global Semiconductor circuit and methodology for in-system scan testing
CN103914580B (zh) * 2012-12-31 2017-07-11 复旦大学 一种用于fpga电路位流仿真的方法
CN103632726B (zh) * 2013-01-31 2017-02-08 中国科学院电子学研究所 一种基于可编程基本逻辑单元的数据移位寄存电路
CN103236836B (zh) * 2013-04-10 2016-03-16 中国科学院微电子研究所 具有mux模式的lut结构及与其相配套的eda优化方法
JP6541376B2 (ja) * 2014-03-13 2019-07-10 株式会社半導体エネルギー研究所 プログラマブルロジックデバイスの動作方法
US9576625B1 (en) * 2015-10-08 2017-02-21 Altera Corporation Register initialization using multi-pass configuration

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2015122738A (ja) 2013-11-22 2015-07-02 株式会社半導体エネルギー研究所 半導体装置

Also Published As

Publication number Publication date
US20190227120A1 (en) 2019-07-25
RU2733092C2 (ru) 2020-09-29
RU2017129272A3 (ja) 2020-04-21
TW202040941A (zh) 2020-11-01
CN115542139A (zh) 2022-12-30
EP3157172A1 (en) 2017-04-19
RU2017129272A (ru) 2019-02-18
TW201729542A (zh) 2017-08-16
TWI746021B (zh) 2021-11-11
US10746796B2 (en) 2020-08-18
EP3435545C0 (en) 2023-06-07
MY184901A (en) 2021-04-30
JP2021145339A (ja) 2021-09-24
IL253219B (en) 2022-02-01
US10295595B2 (en) 2019-05-21
CN114553215A (zh) 2022-05-27
CN108028654B (zh) 2023-04-04
US20180275193A1 (en) 2018-09-27
CN114553215B (zh) 2026-03-17
SG11201705319YA (en) 2017-07-28
EP3435545A1 (en) 2019-01-30
JP2018537871A (ja) 2018-12-20
CN108028654A (zh) 2018-05-11
TWI717399B (zh) 2021-02-01
CA2973530A1 (en) 2017-04-20
EP3435545B1 (en) 2023-06-07
EP3157172B1 (en) 2018-11-28
WO2017063957A1 (en) 2017-04-20
KR20180068895A (ko) 2018-06-22
KR102564093B1 (ko) 2023-08-04
IL253219A0 (en) 2017-08-31

Similar Documents

Publication Publication Date Title
JP7286706B2 (ja) Fpgaのテストおよび構成のためのシステムおよび方法
US8533655B1 (en) Method and apparatus for capturing data samples with test circuitry
EP3355196A1 (en) Fpga and method of operation
US9292640B1 (en) Method and system for dynamic selection of a memory read port
US6059836A (en) Logic circuit emulator
EP4052373B1 (en) Programmable device configuration memory system
CA2973530C (en) System and method for testing and configuration of an fpga
JP2023500300A5 (ja)
HK40079336A (en) System and method for testing and configuration of an fpga
US20230267169A1 (en) Sparse matrix dense vector multliplication circuitry
JP2004200311A (ja) 論理検証装置
HK40003241A (en) System and method for testing and configuration of an fpga
US20100115353A1 (en) System and method for testing application-specific blocks embedded in reconfigurable arrays
HK1236287A1 (en) System and method for testing and configuration of an fpga
HK1236287A (en) System and method for testing and configuration of an fpga
HK1236287B (en) System and method for testing and configuration of an fpga
EP3376669A1 (en) Fpga and method of fpga programming
US7305636B2 (en) Method and system for formal unidirectional bus verification using synthesizing constrained drivers
US9627017B1 (en) RAM at speed flexible timing and setup control
US20250061958A1 (en) Logic device and system and methods for definition and configuration of a logic device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210527

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210527

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220719

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20221013

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20230117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20230524

R150 Certificate of patent or registration of utility model

Ref document number: 7286706

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150