JP2004505488A - Fpgaを部分的に再構成するためのアーキテクチャおよび方法 - Google Patents
Fpgaを部分的に再構成するためのアーキテクチャおよび方法 Download PDFInfo
- Publication number
- JP2004505488A JP2004505488A JP2002514890A JP2002514890A JP2004505488A JP 2004505488 A JP2004505488 A JP 2004505488A JP 2002514890 A JP2002514890 A JP 2002514890A JP 2002514890 A JP2002514890 A JP 2002514890A JP 2004505488 A JP2004505488 A JP 2004505488A
- Authority
- JP
- Japan
- Prior art keywords
- data
- fpga
- lines
- line
- address
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic 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/17748—Structural details of configuration resources
- H03K19/17756—Structural details of configuration resources for partial configuration or partial reconfiguration
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Logic Circuits (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
【技術分野】
この発明は集積回路に関し、特定的には、プログラム可能論理回路またはフィールドプログラマブルゲートアレイ(FPGA)に関する。より特定的にこの発明は、FPGAの或る区域を、FPGAの他の区域に影響を及ぼすことなく部分的に再構成するための技術に関するものである。
【0002】
【発明の背景】
フィールドプログラマブルゲートアレイ(FPGA)は、構成可能論理ブロック(CLB)の構成を制御するメモリへ、ビットの流れすなわちビットストリームをロードすることにより、特定の機能を行なうように構成されるものである。各CLBは、構成可能ロジックと、隣接するセルにわたり接続を行ない相互接続線を形成する水平方向および垂直方向の線部(line segment)と、ロジックを線部に選択的に接続するための経路付けまたは切替構造体とを含む。
【0003】
論理ブロックのうちいくつかまたはすべてを再構成してFPGAの機能を変えることが望まれることがある。過去において再構成は、完全な新しいビットストリームをFPGAにロードしてすべてのCLBを再構成し、こうしてFPGA全体を再プログラムすることを伴っていた。
【0004】
FPGAのサイズが急速に増大する中、選択されたFPGA部分の再構成を可能にしかつ同じFPGAの他の部分に影響を及ぼさない、部分的再構成技術が考案されてきた。しかし伝統的に部分的再構成は、FPGAのアーキテクチャのため、CLBを制御するためのメモリの列全体を再構成することに限られてきた。
【0005】
図1は、従来の部分的再構成の限界を例示するためのFPGA20を示す。FPGA20はタイルの配列を有し、各タイルは構成可能ロジックおよび関係する相互接続を含み、これらを集合的に構成可能論理ブロック(CLB)22と呼ぶ。例示の目的から、図1ではいくつかのCLBおよびいくつかの相互接続線のみを示す。典型的には、FPGA20は数千の繰返され得るCLB22で実現され、各CLBは多くの水平方向および垂直方向の線部を有する。ヤング(Young)、チョーダリー(Chaudary)およびバウアー(Bauer)による米国特許第5,914,616号に、このような構造がより詳細に記載されている。
【0006】
各CLB22は、構成可能ロジックと、隣接するセルにわたり接続を行ない相互接続線を形成する水平方向および垂直方向の線部と、ロジックを線部に選択的に接続するための経路付けまたは切替構造体とを有する。ロジックと、線部間接続との構成は、構成メモリにより制御され、構成はこの構成メモリへロードされて、ロジックおよび相互接続線が所望の機能を行なうことを可能にする。或るFPGAでは、アドレス線上の構成メモリの区域をアドレス指定してデータ線にデータを与えることによって、構成メモリ内のデータがロードされる。或るFPGAでは、構成データのフレームはシフトレジスタ内に順次送り込まれて、次に構成メモリセルのアドレス指定された列へ並列にシフトされる。垂直方向のワイヤがアドレス線24で表わすアドレス線を形成し、これは一般にFPGAの高さに及ぶ。水平方向のワイヤがデータ線26で表わす構成データ線を形成し、これは通常FPGAの幅に及ぶ。
【0007】
図1のFPGAでは、ビットストリームからの構成データはシフトレジスタ28によりデータ線26上に置かれる。ビットストリームはデータのフレームを含み、各フレームはシフトレジスタ28を満たして、対応するアドレス線でアクセスされる1列のメモリセルをプログラムするのに用いられる。たとえば、シフトレジスタ28は数千ビットからなるフレームを保持し得る。ビットストリームはさらに、対応するデータフレームをシフトレジスタにロードするためのコマンドと、一旦ロードが行なわれればデータフレームに関連した適当なアドレス線を選択するためのコマンドとを含む。
【0008】
フレーム全体がシフトレジスタ28内にロードされた後、データビットはシャドーレジスタ30へ一時的に伝達され得るが、このためシフトレジスタ28は、現在のデータの書込中に次のデータフレームの受取を始めるために解放されている。アドレス線が選択され、データをシャドーレジスタ30からデータ線26経由でCLBの選択されたメモリセルへ伝達する。このプロセスは、FPGA20上のCLB22を完全にプログラムするまですべてのアドレス線24につき繰返される。
【0009】
従来の方法を用いると、FPGA20の部分的再構成は、データビットをシフトレジスタ28内にシフトして、再プログラムされているCLB22のアドレス線24のみを選択することによって行なわれ得る。残念ながら、アドレス線24がCLB22の列全体に及んでいるため、プログラマーがすべてのブロックを変更したいと望むか否かにかかわらず共通のアドレス線24で接続されたすべてのCLBが再構成されてしまう。これを図1では部分的再構成領域32として図示する。
【0010】
FPGAのサイズおよび複雑さが増加し続ける中、共通のアドレス線に接続されたCLBのうちいくつかのみを含む、FPGAのより小さな区域を部分的に再構成することが望ましくかつ有利であろう。したがって、FPGAの選択可能CLBの部分的再構成を可能にするようにプロセスまたはアーキテクチャを改良することが必要とされている。
【0011】
【発明の概要】
この発明は、1本以上のアドレス線に接続された選択可能な構成可能論理ブロック(CLB)を、同じアドレス線に接続された他のCLBへの影響なしに部分的再構成することを可能にする、FPGAアーキテクチャおよび方法に関する。
【0012】
一実現例に従うと、メモリセル分割(resolution)での部分的再構成は、FPGA構成メモリのアドレス線およびデータ線に印加される入力電圧を操作することで達成される。選択されたCLB内のいくつかのメモリセルがプログラムされ、かつ同じアドレス線に接続された同じまたは他のCLBの他のメモリセルがプログラムされないように、入力電圧を制御する。どのデータ線がプログラミング電圧を受取りどのデータ線がプログラミング防止電圧を受取るかを指定するために、マスクレジスタおよび追加のマスク線がFPGAに追加される。
【0013】
別の実現例に従うと、CLB分割での部分的再構成は、再構成を目的とした個々のCLBの選択を可能にするようにFPGAを結線接続(hardwiring)することで達成される。この実現例では、FPGAにはCLB制御レジスタと、CLB制御レジスタによりアドレス指定される水平方向のCLB制御線と、既存のアドレス線に追加される付加的なアドレス線組とが設けられる。CLB制御線および付加アドレス線は、既存のローカルアドレス線にアクセスして、他のCLBに影響を及ぼすことなく個々のCLBの選択および再構成を可能にするために用いられる。
【0014】
別の実現例では、部分的再構成は1ワードの分割においてであり、ここでワードは典型的にCLBの1つの次元(dimension)よりも小さい。したがってFPGAの1CLBを再構成するには、典型的に1列内でいくつかのワードが取り替えられ、CLBにより用いられるいくつかの列が、少なくとも取り替えられるいくつかのワードを有する。しかしながら、この発明は1つの特定の分割には限定されない。どの分割もこの発明の原理からの利益を受けることが可能である。
【0015】
【図面の詳細な説明】
この発明は、FPGAのサイズおよび複雑さの急速な増加に関連する問題を克服する、改良されたFPGAアーキテクチャおよび方法に関する。このアーキテクチャおよび方法は、FPGAの構成可能論理ブロック(CLB)を構成、再構成または部分的再構成する速度および効率を向上させる。この発明の一局面は、CLB分割、またはより細かいメモリセル分割でCLB再構成を可能にする、改良された部分的再構成技術に関する。このことは、共通のアドレス線でアドレス指定されるCLBまたはメモリセルを互いから独立して再構成できることを意味する。この発明の別の局面は、FPGAを構成または再構成するのに用いられるビットストリームのサイズを減少させるための圧縮技術に関する。以下、これらおよびその他の局面を別々に論じる。
【0016】
改良された部分的再構成
CLB分割またはより細かい分割でのFPGAの汎用再構成を達成するための2つの例示的な手法を説明する。一手法は、共通のアドレス線によりアドレス指定されるメモリセルのうち或るいくつかが選択的にプログラムされかつ他のメモリセルがプログラムされないように、メモリセルに印加される入力信号を制御することである。第2の手法は、再構成を目的としたCLBの個々の選択を可能にするようにFPGAアーキテクチャを変形することである。以下にこれらの手法を別々に説明する。
【0017】
技術1 入力で駆動される部分的再構成
図2は、FPGA50を構成、再構成または部分的再構成するのに用いられ得る構成システム40を示す。FPGA50はタイルまたは構成可能論理ブロック(CLB)52の配列を有する。例示の目的からいくつかのCLBのみを示すが、典型的にはFPGA当り数千のCLBがある。FPGAは、隣接するCLB52の垂直方向の線部を接続することによって形成される多数のアドレス線54を有する。FPGAはさらに、隣接するCLB52の水平方向の線部を接続することにより形成される多数のデータ線56を有する。シフトレジスタ58はFPGAにわたり垂直方向にまたがってデータをデータ線56に与え、シャドーレジスタ60は、CLB52のメモリセル内にプログラムされるデータフレームのための一時的記憶を提供する。上述のFPGA50の設計は従来のものであり、当該技術で周知である。
【0018】
構成システム40は、FPGAのデータ線56およびアドレス線54を選択するための論理を提供するデータ選択ユニット62およびアドレス選択ユニット64を含む。データ選択ユニット62およびアドレス選択ユニット64は、アドレス線電圧およびデータ値の特定の組合せをFPGAに与えることで、共通のアドレス線に接続されたメモリセルを選択的にプログラムするように構成される。
【0019】
他については従来型であるFPGA50は、シフトレジスタ58およびシャドーレジスタ60の他に垂直方向に走るマスクレジスタ66を含むように変形される。マスクレジスタ66は、どのメモリセルがプログラミングのためのデータ値の特定の組合せを受取り、どのメモリセルがこれを受取らないかを選択し、こうして部分的再構成領域68が定められる。マスクレジスタ66は各データ行につき制御情報の1ビットを与える。値の一方はメモリセルがプログラムされることを引き起こし、他方の値はセルがプログラムされることを防ぐ。マスクレジスタ66の動作は後により詳細に説明するが、その前にメモリセルの簡単な説明と、アドレス線電圧およびデータ値の組合せが、共通のアドレス線に接続されている選択されたメモリセルをどのようにプログラムするかについての説明とを記載する。
【0020】
図3は、アドレス線Aによりアドレス指定される2つのインバータ72および74を有する標準的な構成可能メモリセル70を示す。アドレス線Aが選択されると、トランジスタ76および78は活性化してインバータ72および74を1対の相補のデータ線D/D′(ここでD′の表記はDバーを指す)に結合する。プログラム中、データ線上のデータビットはインバータ72および74に書込まれ、読出中には、インバータ72および74に記憶されたデータはデータ線上へ伝達される。メモリセル70は、以下の真理値表1にある従来の値および電圧レベルに従ってプログラムまたは読出される。
【0021】
【表1】
【0022】
この従来の手法に従うと、1または0の値をデータ線D上に(逆の値をデータ線D′上に)置いて電圧Vddをアドレス線に印加することにより、共通のアドレス線Aにより接続されたすべてのメモリセルが同時にプログラムされる。アドレス線に接続されたすべてのメモリセルを読出すには、データ線対を「1」の2進値へハイに駆動してから、これが浮動することを許す。次にアドレス線Aは、トランジスタ76および78をかろうじてオンにするのに十分な電圧Vdd−Vtでストローブされる。インバータ72および74に蓄積された電荷はゆっくりと漏れ出て、メモリセルに記憶された値に依存して反対方向にデータ線を駆動する。
【0023】
この伝統的な手法とは対照的に、改良された部分的再構成方法は、メモリセルが再構成されているかどうかにかかわらず同じ電圧でアドレス線を駆動し、値をデータ線に選択的に印加することで、或るメモリセルが再プログラムされるかどうかを制御する。より具体的には、アドレス線Aはより低い電圧Vdd−Vtにより駆動され、ここでVddは供給電圧(たとえば1.5V)であり、Vtはトランジスタ76および78についてのしきい値電圧(たとえば0.5V)である。より低い電圧を用いるのは、アドレス線A上の電圧をより高い電圧Vddに駆動すると、大きな静電容量を有するデータ線が、再構成されていないメモリセルにある値を破壊してしまうからである。
【0024】
メモリセル70が再プログラムされるべき場合、マスクレジスタ66は第1の2進値(たとえば「0」)を与えて、データをプログラミング処理するためのものとして相補のデータ線対D/D′を選択する。次にデータ値対0/1または1/0が相補のデータ線対D/D′上に置かれ、これに結び付けられたメモリセルをプログラムする。
【0025】
メモリセル70が再プログラムされるべきでない場合、マスクレジスタ66は第2の2進値(たとえば「1」)を与えて相補のデータ線対D/D′を選択し、データ値1/1がデータ線対D/D′上に置かれる。値対1/1を与えることはメモリセルを読出すことに近く、これによりデータがセル内にプログラムされることを効果的に防ぐ。部分的構成入力を以下の真理値表2にまとめる。
【0026】
【表2】
【0027】
図2は、FPGA50に関する部分的再構成方法を例示する。プログラマーが部分的再構成領域68内のCLBのみを再構成したいと望んでいると想定する。アドレス選択ユニット64は、領域68内のCLBによって用いられるアドレス線のうち1本に電圧レベルVdd−Vtを印加する。データ選択ユニット62は「0」のマスク(M)値と、1/0または0/1の値対(メモリセルに書込むべき値に依存する)とを、プログラムされるべきメモリセルに用いられるデータ線に割当てる。同時にデータ選択ユニット62は、「1」のマスク値と1/1の値対とを、プログラムされることを意図していないメモリセルに用いられるデータ線に割当てる。なおこの技術では、再構成領域68は例示を目的として図2に示すただ1つの矩形の範囲ではなく、FPGA全体にわたる多数の領域を占めることもあり得る。
【0028】
アドレス線およびデータ線についての電圧ならびにメモリセル70内の要素のサイズは、値対0/1または1/0がメモリセルをフリップさせかつ値対1/1がそうしないように、より精密に制御できる反転またはトリップポイントを確立するよう選択される。「トリップポイント」とは、データ線D/D′およびアドレス線Aの入力によってインバータ72および74が一方の2進値を記憶することから他方の2進値を記憶することへと切換わる点である。好適な電圧およびサイズは、製造工程およびその他の回路特性に依存する。
【0029】
この第1の部分的再構成技術は、FPGAアーキテクチャに対して行なわれる変更が、メモリセル要素に対する可能なサイズの変更およびマスクレジスタの追加のみである点で有利である。加えて、アドレス線選択ユニットは単一の電圧でアドレスを駆動するだけでよい。メモリセルレベルでの再構成は、アドレス線およびデータ線に印加される電圧レベルにより管理される。
【0030】
技術2 変形FPGAアーキテクチャ
CLB分割での部分的再構成を可能にする別の手法は、個々のCLBがアドレス指定可能となるようFPGAを変形することである。図4は、CLB52、アドレス線54′、データ線56、シフトレジスタ58、およびシャドーレジスタ60がある点で従来のFPGAと類似であるFPGA80を示す。しかし従来のFPGAとは異なり、FPGA80にはさらに、シフトレジスタ58およびシャドーレジスタ60の他に垂直方向に走るCLB制御レジスタ82が設けられる。FPGA80はさらに、既存のアドレス線54′に加えてアドレス線84の付加的な組を含むように変形される。一実現例では、元のアドレス線54′の各々につき付加的なアドレス線84があるため、各CLBにある垂直方向の構成アドレス線の数が2倍になる。さらに図4の実現例では、アドレス線54′が途切れていてCLB境界にわたって連続的でなく、こうしてそれぞれのCLBに対しローカルなアドレス線が形成されることが注目される。図2のFPGA50のアドレス線54と区別するために、ローカルで非連続的なアドレス線を番号54′で参照する。
【0031】
FPGA80はさらに、CLB制御レジスタ82によりアドレス指定される付加的な水平方向のCLBマスク線86を含む。CLB52につき1本のCLBマスク線86があることが好ましい。CLBマスク線86と付加的なアドレス線84とが一緒になって既存のローカルアドレス線54′にアクセスすることで個々のCLB52の選択が可能となり、こうして特定のCLBが他のCLBに影響を及ぼすことなく再構成され得る。
【0032】
図5は、FPGA80から取った2つの隣接する構成可能論理ブロックCLBiおよびCLBi+1を示す。標準的な相互接続線部に加え、各CLBには水平方向のCLBマスク線86と、ローカルアドレス線54′につき付加的なアドレス線84とが設けられる。高さ一杯の(full−hight)非ローカルアドレス線84とCLBマスク線86との接合部にはANDゲート88が位置づけられる。ANDゲート88の入力は、非ローカルアドレス線84およびCLBマスク線86に接続され、出力はローカルアドレス線54′に接続される。
【0033】
指定されたCLBを再構成するためには、指定されたCLBを横切る非ローカルアドレス線84およびCLBマスク線86が選択される。ANDゲート88は、入力の両方が選択されるとローカルアドレス線54′を選択する。次に、CLBへ走るデータ線を用いてメモリセルが再構成される。再構成を意図されていないCLBにより用いられる非ローカルアドレス線84および/またはCLBマスク線86は選択解除(deselect)されたまま保たれる。以下の表4で再構成の制御を例示する。
【0034】
【表3】
【0035】
この第2の部分的再構成技術は、CLB分割での再構成が種々のプロセス条件で確実に信頼できる点で有利である。しかしこれらの要素を追加することで、チップの価格およびサイズは増加する。
【0036】
ビットストリーム圧縮
この発明の別の局面は、FPGAの構成または再構成に用いられるビットストリームのサイズを減少させる圧縮技術に関する。先に注目されたように、FPGAをプログラムする従来の手法は、ビットフレームをシフトレジスタにシフトすること、およびアドレス線をストローブしてアドレス線でアドレス指定されたメモリセルをプログラムすることを伴う。フレーム当りに数千ものビットがあり、さらに数千のアドレス指定可能な位置があるため、繰り返される再構成プロセス中にシフトレジスタは何百万ものビットを扱うことになり、時間が浪費されるおそれがある。
【0037】
一般にビットストリーム圧縮技術では、構成データにある互いに最も類似のフレームが識別される。このようなフレームは同一であることも、または1つもしくはいくつかのワードもしくはビットで異なることもある。次に構成データは再編成され、これらのフレームはグループ化される。1つのフレームと次のフレームとで変化しないデータを除去することで、圧縮されたビットストリームが生成される。フレーム全体でなく個々のワードがロード可能となるよう、FPGAは従来のシフトレジスタの代わりにアドレス指定可能データレジスタを伴って実現される。
【0038】
図6は、シフトレジスタ58の代わりにアドレス指定可能データレジスタ102を実現するFPGA100を示す。アドレス指定可能データレジスタ102はフレーム内のビットの組へのアクセスを可能にする。たとえばアドレス指定可能データレジスタ102は、ビットストリームの各データフレーム(たとえば数千のビット)内にあるNビットのサブフレーム(たとえば16ビットまたは32ビットのワード)へのアドレス指定を可能にする。結果としてNビットサブフレームは、シフトレジスタの長さにわたりレジスタ102の或るアドレス指定可能位置へ順次シフトされる代わりに、この位置に直接書込まれ得るため、従来のシフトレジスタと比較して速度および効率が向上する。
【0039】
FPGA100は、図2に関し先に述べたマスクレジスタを伴って実現され得る。このアーキテクチャでは、プログラマーはアドレス指定可能データレジスタ102内のアドレス位置に1つ以上のデータワードを書込み、次にマスクレジスタ66およびデータ値入力を用いて、他のメモリセルに影響を与えることなくFPGA内での特定のメモリセルをプログラムできる。
【0040】
これに代わりFPGA100はさらに、図4および図5に関して先に述べた変形例で実現され得る。このアーキテクチャでは、プログラマーはアドレス指定可能データレジスタ102内のアドレス位置に1つ以上のデータワードを書込み、次にCLB制御レジスタ82、CLBマスク線86、および非ローカルアドレス線84を用いて、他のCLBに影響を与えることなく特定のCLBをプログラムできる。
【0041】
図7は、FPGAを構成または再構成する速度を向上させるためのビットストリーム圧縮プロセスを実現する構成システム150を示す。構成システム150は、FPGAを構成および/または再構成するのに用いられる圧縮されたビットストリームを生成するプログラミング装置152を有する。プログラミング装置152はプロセッサ154、データメモリ156およびプログラムメモリ158を有する。プログラミング装置152はたとえば汎用コンピュータで実現され得る。
【0042】
構成データ160はデータメモリ156で記憶される。構成データ160は、FPGAの完全な構成のためのデータを含む。構成データ160は、FPGAを構成するのに必要なデータフレーム、コマンドおよびアドレスを含む限り、圧縮されていないビットストリームとして実施しても、または或る他の形式で実施してもよい。プログラミング装置152は構成データ160を圧縮ビットストリームに圧縮し、これはデータメモリ156でファイル162として記憶、プログラム可能読出専用メモリ(PROM)にプログラミング、またはFPGA(ともに番号164で参照する)にロードされ得る。圧縮技術は特に、アドレス指定可能データレジスタ102を有するFPGA100に好適である。しかし圧縮技術の機構の或るものは、FPGA50(図2)およびFPGA80(図4)などアドレス指定可能データレジスタを実現しない他の種類のFPGAと効果的に用いることができる。
【0043】
プログラムメモリ158には圧縮プログラム170が記憶され、これはプロセッサ154で実行される。圧縮プログラム170はフレームアナライザ要素172を有し、これは構成データ160を評価して、所与のフレームについて構成データ内で最も類似のフレームを識別する。最も類似のフレームは、すべてのワードまたはビットが同じである同一フレームであることも、いくつかのビットまたはワードのみが所与のフレームにあるものと異なっている類似フレームであることもある。フレームアナライザ172はさらに、他では同一である2つの次フレーム候補(すなわち現在のフレームと次のフレームとで変化するビット/ワードの数が同じ)間での差別化を、コスト分析に従い行なうことができる。コスト分析は、圧縮されたビットストリームから次に取るとすればどのフレームが結果としてよりコストの少ないプログラムシーケンスをもたらすかを評価する。
【0044】
圧縮プログラム170は、構成データ内のフレームを再編成して類似のフレームをグループ化するためのフレームリオーダラ要素174を有し、これにより1フレームと次フレームとで変化するデータビットの数が最小限にされる。フレームリオーダラ174は次に、1フレームと次フレームとで変化しない重複ワード/ビットを除去して、(もしあれば)変化するワード/ビットと、このデータでセルをプログラムすることを意図したアドレス線およびデータ線を選択するための対応するコマンドおよびアドレスとのみを残すことによって、圧縮されたビットストリームを生成する。この結果、圧縮されていないデータ160よりも小さな圧縮ビットストリームが得られる。
【0045】
圧縮プログラム170をソフトウェアプログラムとして例示しているが、これに代えて、プロセッサ154または他の専用の要素の一部としてハードウェアまたはファームウェアで実現してもよい。
【0046】
図8は、圧縮プログラム170で実施される一般的な圧縮プロセスをより詳細に示す。ステップ200において、構成データ160が作成されてデータメモリ156に記憶される。構成データは、FPGAを完全に構成するのに十分なデータおよびコマンドを含む。ステップ202で、圧縮プログラム170は分析のために構成データからフレームを選択する。このフレームはデータバッファまたはメモリに記憶される。次に、選択されたフレームについてビットストリーム部分が生成される(ステップ204)。このビットストリーム部分はロードコマンドを含み、これにデータフレームが続き、これにストローブコマンドが続くが、これは、データフレームでプログラムされるメモリセルを選択するのに用いられる適当なアドレス線をアサートするためのものである。
【0047】
ステップ206で、フレームアナライザ172は構成データ内の他のフレームを選択されたフレームと比較する。一実現例では、フレームアナライザ172は各フレーム対をワードごとに比較する。対応する各ワード対につき、アナライザ172は2つのワードが一致するかどうかを判断する(ステップ206Aおよび206B)。ワードが一致すればプロセスは次の2つのワードへと継続する。ワードが一致しなければ、比較されているフレーム内のワードはマークされ、または他で識別されて、ワードカウントが増分される(ステップ206C)。このサブプロセスは、一致しないワードのカウントとマークされたワードの一覧とを出力する。
【0048】
この比較から、フレームアナライザ172は選択されたフレームと最も類似のフレームを識別する(ステップ208)。最も類似のフレームは同一(すなわちマークされたワードがない)または類似(すなわち1つまたはいくつかのワードがマークされている)であり得る。
【0049】
選択されたフレームと最も類似のものとして2つの「次フレーム」候補が一緒に現れた場合には、フレームアナライザ172はコスト分析を行なって、2つの次フレーム候補のうちどちらがより好都合かを判断できる。この最適化は、高速化および処理のためのクロックサイクルの減少という観点から、どのフレーム順序の処理コストが結果としてより少ないかについての分析に基づく。もし構造体が、新たなアドレスを受取らずにアドレスを増分できる回路を含んでいれば、完全なアドレスを与えるよりもアドレスを次の隣接するアドレスへ増分するほうが低コストである。たとえば2つの次フレーム候補が、選択されたフレームとは異なるワードを2つしか有さないと想定する。さらに、これらフレームのうち第1のフレームにある2つのワードがフレーム内で隣接しており、一方でこれらフレームのうち第2のフレームにある2つのワードは遠く離れていると想定する。フレームアナライザ172は第1のフレームがより低コストであると考えるが、これは、フレーム内で離れているワードを書込むよりも、フレーム内の隣接するワードをモディファイしてこれらワードをアドレス指定可能データレジスタに書込むほうが、必要となるビットストリームコマンドが少ないからである。
【0050】
これに従い、フレームアナライザ172は最適化分析を実現するよう構成され得るが、これは以下の規則に従って、他では同一の次フレーム候補を格付けする。
【0051】
規則1 現在のフレームとは異なるワードが最も少数であるフレームを識別
規則2 マークされたワードの塊(clump)がより少数であるフレームを、マークされたワードが遠く離れているフレームよりも優先して選ぶ
規則3 選択されたフレームに隣接するフレームを、選択されたフレームから遠く離れたフレームよりも優先して選ぶ
フレームリオーダラ174は、最も類似のフレームが圧縮ビットストリーム内で逐次続くようにフレームを再編成する。このことは、次フレームが同一であるかどうかに依存して2つのやり方のうち1つで行なわれる(ステップ210)。次フレームが同一(すなわちステップ210から“YES”の分岐)であれば、フレームリオーダラ174は次フレームについてのストローブコマンドおよびアドレスを有するビットストリーム部分を生成するが、冗長なデータフレームを含まない(ステップ212)。こうして元の構成データは圧縮されるが、これは次フレームについてのロードコマンドおよびデータフレームがビットストリームから完全に除去されるからである。
【0052】
次フレームが同一でない(すなわちステップ210から“NO”の分岐)場合、フレームリオーダラ174は、次フレームについて、現在のフレームとは異なるビット/ワードと、ビット/ワードをロードするためのロードコマンドと、ストローブコマンドおよびアドレスとのみを含む、ビットストリーム部分を生成する(ステップ214)。大量のデータが除去されるため、やはり元の構成データは圧縮される。
【0053】
残るフレームと次のフレームとの比較についてプロセスは継続する。この反復的な手法の結果として、圧縮されたビットストリームファイル162が得られる。
【0054】
図9は、圧縮プロセスを例示するため、圧縮されていないビットストリーム250と圧縮されたビットストリーム260の対応する部分とを部分的に示す。圧縮されていないビットストリーム250は多数のデータフレーム252からなり、これらを、データフレームDFi、…、DFi+j、…、DFi+kなど、で表わす。ビットストリームはデータフレーム252の各々につき多数のロードコマンド254を有し、これらをLCi、…、LCi+j、…、LCi+kなどと表わす。各ロードコマンドはFPGAに対し、対応するデータフレームをアドレス指定可能レジスタにロードするよう指示する。ロードコマンドは典型的に、続くデータフレームの長さを示すサイズ情報を含む。ビットストリーム250はさらにデータフレームの各々につきストローブコマンド256を有し、これらをSCi、…、SCi+j、…、SCi+kなどと表わす。各ストローブコマンドは、対応するデータフレームで特定のメモリセルをプログラムするために選択されるアドレス線を識別する。
【0055】
圧縮ビットストリーム260は図8の圧縮プロセスの結果として作成される。この例では、第1のデータフレームDFiが選択されたフレームであり、データフレームDFi+kが次の最も類似したフレーム(これは選択されたフレームと偶然同一である)であり、データフレームDFi+jが次の最も類似のフレームであると想定する。この場合、同一のデータフレームDFi+kおよび対応するロードコマンドLCi+kは除去され、こうしてビットストリームが圧縮され、対応するストローブコマンドSCi+kは、選択されたデータフレームDFiのストローブコマンドSCiに続くようにビットストリーム内で再び順序づけられる。こうして、同じデータが逐次のストローブコマンドを介しセルの2つの異なった列をプログラムするのに用いられる。
【0056】
類似のデータフレームDFi+jは、選択されたデータフレームDFiに続くようにビットストリームで再編成される。この類似のデータフレームもまたそのサイズにおいて減少し、データフレームDFiから類似のデータフレームDFi+jにかけて変化するワードと、アドレス指定可能データレジスタについてのワードアドレスとのみを含むようにされる。減少したデータフレームをWordi+jとして図示する。ロードコマンドは、ワードをロードするためのアドレス指定可能レジスタのアドレスを含むロードワードコマンド(LW)と取り替えられる。多数のワードが変化する場合、LW−Word−SCシーケンスの多数の組合せがビットストリーム内でつなぎ合わされるが、これはなおもデータフレーム全体よりも小さなサイズである。これらの変化を通じ、圧縮ビットストリーム260は圧縮されていないビットストリーム250よりも著しく小さくなる。
【0057】
同一のフレームについての例示の圧縮プロセス
図8に例示したプロセスは、同一のフレームおよび類似のフレームの両方を考慮した一般的な圧縮技術を説明している。図10は、図8のプロセスの特定の一実現例に従う、同一のフレームを除去するためのビットストリーム圧縮方法を示す。
【0058】
ステップ300で、構成データが作成されデータメモリに記憶される。構成データは、FPGAを完全に構成するのに十分なデータおよびコマンドを含む。ステップ302で、圧縮プログラムは“Frame_Equal(等しいフレーム)”と呼ぶ整数配列を「−1」などの値へ初期設定する。次に圧縮プログラムは、分析のためにフレームを構成データから選択する(ステップ304)。このフレームはデータバッファまたはメモリに記憶される。
【0059】
ステップ306で、圧縮プログラムは選択されたフレームを各々の後続フレームと比較する。後続フレームのいずれかが選択されたフレームと同一(すなわちステップ308から“YES”の分岐)であれば、圧縮プログラムはこのフレームについてのFrame_Equal配列項目を、現在のフレームの番号に等しく設定することで現在のフレームを参照する(ステップ310)。加えて圧縮プログラムは、“Frame_Duplicate(重複フレーム)”として知られる第2のパラメータを真(TRUE)に設定することで、選択されたフレームが構成データのどこか他のところで重複フレームを有することを示す。選択されたフレームの後にあるすべてのフレームが比較されると、プロセスは構成データにある次のフレームを選択するが、これをステップ314からの“NO”分岐およびステップ304へ戻る矢印で表わす。
【0060】
すべてのフレームが重複について評価されると(すなわちステップ314から“YES”の分岐)、プログラムは初期フレームカウントを第1のフレーム0に設定し(ステップ316)、このフレームについてのプログラミングデータを書込む(ステップ318)。ステップ320で圧縮プログラムは、フレームについてのFrame_Duplicateが真であるかどうかを調べることにより、まだ別の重複フレームがあるかどうかを判断する。もしなければ、プログラムは単にこのフレームについてのプログラミングデータを書込む(ステップ322)。当業者であれば、フレーム0の場合にはこのステップ322を省略できることが理解されるであろうが、なぜならこのフレームについてのプログラミングデータは既にステップ318で書込まれているからである。
【0061】
Frame_Duplicateが真(すなわちステップ320からの“YES”分岐)であれば、プログラムはフレームの残りを評価して重複フレームを探す。このことは、最初の場合でのフレーム0などの現在のフレームと等しい項目があるかどうかについてFrame_Equal配列を調べることで行なわれる(ステップ324)。次にプログラムは、重複フレームを考慮するための多数の書込コマンドを実行する(ステップ326)。
【0062】
判断ステップ328で表わすように、プロセスは構成データの全フレームについて継続する。最後のフレームにまだ達していない(すなわちステップ328からの“NO”分岐)場合、フレームカウントは増分され(ステップ330)、次のフレームに対応する項目が−1の初期値に等しいか、または第2のフレームを参照する値に等しいかを判断するために、Frame_Equal配列が調べられる(ステップ332)。このステップは、このフレームが既に重複フレームについて考慮されているかどうかを見分ける。Frame_Equalが−1の初期値に設定されていなければ(すなわちステップ332からの“NO”分岐)、圧縮プログラムはこのフレームについてのプログラミングデータを書込み(ステップ334)、このフレームがステップ320で他の重複を有しているかどうかについて評価を継続する。逆に、Frame_Equalが初期値と等しければ(すなわちステップ332からの“YES”の分岐)、プロセスは直接ステップ320に進む。
【0063】
類似のデータフレームについては、プロセスは上述のものと同様である。最も類似のデータフレームが識別されると、このデータフレーム(Wordi+j)についての変化したビットがビットストリームに追加され、最も類似のフレームは選択されたフレームとなる。プロセスを繰返し、すべてのフレームが考慮されるまで、すべての書込まれていないフレームを新たに選択されたフレームと比較する。
【0064】
構造的な特徴および/または方法上のステップに特有の言語でこの発明を説明したが、前掲の特許請求の範囲で規定したこの発明は、記載された特定の特徴またはステップに限定される必要はないことが理解されるべきである。特定の特徴またはステップはむしろ、請求される発明を実現する好ましい形として開示されたものである。
【図面の簡単な説明】
【図1】従来のフィールドプログラマブルゲートアレイ(FPGA)を例示する図である。
【図2】メモリセル分割でFPGAを部分的に再構成する構成システムを例示する図である。
【図3】図2のFPGAの構成可能論理ブロックで採用される構成可能メモリセルを示す回路図である。
【図4】CLB分割で部分的再構成を可能にする変形アーキテクチャを有するFPGAを例示する図である。
【図5】図4のFPGAの隣接する構成可能論理ブロックを例示する図である。
【図6】アドレス指定可能データレジスタを有するフィールドプログラマブルゲートアレイ(FPGA)を例示する図である。
【図7】ビットストリーム圧縮プロセスを実現する構成システムを示すブロック図である。
【図8】図7の構成システムにより実現されるビットストリーム圧縮プロセスを用いてFPGAを構成するための方法を示す流れ図である。
【図9】圧縮されていない状態および圧縮された状態でのビットストリームを例示する図である。
【図10】ビットストリームを圧縮して同一のフレームを除去するための方法を示す流れ図である。
Claims (9)
- フィールドプログラマブルゲートアレイ(FPGA)を部分的に構成するための方法であって、前記FPGAは、多数のアドレス線および多数のデータ線対により接続された構成可能論理ブロック(CLB)の配列を有し、前記方法は、
少なくとも1本のアドレス線でアドレス指定された1つ以上の第1のCLBを再構成するステップと、
同時に、前記アドレス線によりアドレス指定された第2のCLBの再構成を防ぐステップとを含む、方法。 - 再構成を防ぐ前記ステップは、第1のCLBに接続された相補のデータ線対に第1のデータ値を、および第2のCLBに接続された相補のデータ線対に第2のデータ値を与えることによって、選択的に第1のCLBを再構成するステップを含む、請求項1に記載の方法。
- 前記FPGAはさらに複数のマスク線を有し、前記マスク線の各々はデータ線対のうち少なくとも1本により用いられ、前記再構成するステップは、第1のデータ値を受取るべきデータ線対と関連づけられたマスク線に第1の値を与えるステップと、第2のデータ値を受取るべきデータ線対と関連づけられたマスク線に第2の値を与えるステップとを含む、請求項1に記載の方法。
- 前記FPGAはさらに、前記マスク線の各々と関連づけられたレジスタを含み、前記レジスタは、関連づけられたマスク線に対応する行を構成すべきかどうかを示すマスクビットを記憶する、請求項3に記載の方法。
- 前記FPGAはさらに、前記少なくとも1本のアドレス線の各々について複数のローカルアドレス線と、アドレス線を対応するローカルアドレス線に接続するためのロジックとを有し、前記再構成するステップは、前記ローカルアドレス線のうち1本以上を選択することによって、第2のCLBにアクセスすることとは独立に第1のCLBにアクセスするステップを含む、請求項1に記載の方法。
- フィールドプログラマブルゲートアレイ(FPGA)を部分的に構成するための方法であって、前記FPGAは多数の構成可能論理ブロック(CLB)と、多数のアドレス線と、多数の相補のデータ線対と、アドレス線の各々について少なくとも1本のローカルアドレス線と、構成データの各ワードについてのワード制御線と、ワード制御線およびアドレス線を対応するローカルアドレス線に接続するためのロジックとを有し、前記方法は、
1本以上のワード制御線および1本以上のアドレス線を選択することで、選択されたワードにアクセスするステップと、
1本以上のワード制御線を選択解除することで、アドレス線によりアドレス指定された選択解除されたワードへのアクセスを防ぐステップとを含む、方法。 - 請求項6に記載の前記方法の結果としてプログラムされたフィールドプログラマブルゲートアレイ(FPGA)。
- フィールドプログラマブルゲートアレイ(FPGA)であって、
構成可能論理ブロック(CLB)の配列を含み、各CLBは少なくとも1本のローカルアドレス線および多数のデータ線を有し、前記FPGAはさらに、
データ線を介しCLBをプログラムするためにプログラミングデータを受取るためのアドレス指定可能データレジスタを含む、FPGA。 - アドレス指定可能データレジスタに接続されて、データレジスタがより多くのプログラミングデータを受取るために自由であるようプログラミングデータを一時的に保持するための、第2のレジスタをさらに含む、請求項8に記載のFPGA。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/624,818 US6526557B1 (en) | 2000-07-25 | 2000-07-25 | Architecture and method for partially reconfiguring an FPGA |
PCT/US2001/022120 WO2002009287A2 (en) | 2000-07-25 | 2001-07-16 | Architecture and method for partially reconfiguring an fpga |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004505488A true JP2004505488A (ja) | 2004-02-19 |
JP4686107B2 JP4686107B2 (ja) | 2011-05-18 |
Family
ID=24503428
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002514890A Expired - Lifetime JP4686107B2 (ja) | 2000-07-25 | 2001-07-16 | Fpgaを部分的に再構成するためのアーキテクチャおよび方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US6526557B1 (ja) |
EP (1) | EP1303913B1 (ja) |
JP (1) | JP4686107B2 (ja) |
CA (1) | CA2415281C (ja) |
DE (1) | DE60138106D1 (ja) |
WO (1) | WO2002009287A2 (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533249B2 (en) | 2006-10-24 | 2009-05-12 | Panasonic Corporation | Reconfigurable integrated circuit, circuit reconfiguration method and circuit reconfiguration apparatus |
JP2010002986A (ja) * | 2008-06-18 | 2010-01-07 | Nec Corp | 再構成可能電子回路装置 |
Families Citing this family (102)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7242229B1 (en) | 2001-05-06 | 2007-07-10 | Altera Corporation | Phase locked loop (PLL) and delay locked loop (DLL) counter and delay element programming in user mode |
US7558967B2 (en) * | 2001-09-13 | 2009-07-07 | Actel Corporation | Encryption for a stream file in an FPGA integrated circuit |
US6920627B2 (en) * | 2002-12-13 | 2005-07-19 | Xilinx, Inc. | Reconfiguration of a programmable logic device using internal control |
US6907595B2 (en) * | 2002-12-13 | 2005-06-14 | Xilinx, Inc. | Partial reconfiguration of a programmable logic device using an on-chip processor |
KR100514196B1 (ko) * | 2003-02-14 | 2005-09-13 | 삼성전자주식회사 | 네트웍 어드레스 변환 및 세션 관리 시스템 및 그 방법 |
US6897676B1 (en) | 2003-06-04 | 2005-05-24 | Xilinx, Inc. | Configuration enable bits for PLD configurable blocks |
US7237106B1 (en) * | 2003-07-18 | 2007-06-26 | Altera Corporation | System for loading configuration data into a configuration word register by independently loading a plurality of configuration blocks through a plurality of configuration inputs |
US7170315B2 (en) | 2003-07-31 | 2007-01-30 | Actel Corporation | Programmable system on a chip |
US7521960B2 (en) * | 2003-07-31 | 2009-04-21 | Actel Corporation | Integrated circuit including programmable logic and external-device chip-enable override control |
US7636655B1 (en) * | 2003-12-08 | 2009-12-22 | Altera Corporation | Extracting synchronous secondary signals by functional analysis |
US7870182B2 (en) * | 2003-12-29 | 2011-01-11 | Xilinx Inc. | Digital signal processing circuit having an adder circuit with carry-outs |
US7853632B2 (en) * | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Architectural floorplan for a digital signal processing circuit |
US7844653B2 (en) * | 2003-12-29 | 2010-11-30 | Xilinx, Inc. | Digital signal processing circuit having a pre-adder circuit |
US7840627B2 (en) | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Digital signal processing circuit having input register blocks |
US7853634B2 (en) * | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a SIMD circuit |
US7567997B2 (en) * | 2003-12-29 | 2009-07-28 | Xilinx, Inc. | Applications of cascading DSP slices |
US7480690B2 (en) * | 2003-12-29 | 2009-01-20 | Xilinx, Inc. | Arithmetic circuit with multiplexed addend inputs |
US7467175B2 (en) * | 2003-12-29 | 2008-12-16 | Xilinx, Inc. | Programmable logic device with pipelined DSP slices |
US7860915B2 (en) * | 2003-12-29 | 2010-12-28 | Xilinx, Inc. | Digital signal processing circuit having a pattern circuit for determining termination conditions |
US7472155B2 (en) * | 2003-12-29 | 2008-12-30 | Xilinx, Inc. | Programmable logic device with cascading DSP slices |
US7849119B2 (en) * | 2003-12-29 | 2010-12-07 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit |
US8495122B2 (en) * | 2003-12-29 | 2013-07-23 | Xilinx, Inc. | Programmable device with dynamic DSP architecture |
US7865542B2 (en) * | 2003-12-29 | 2011-01-04 | Xilinx, Inc. | Digital signal processing block having a wide multiplexer |
US7882165B2 (en) * | 2003-12-29 | 2011-02-01 | Xilinx, Inc. | Digital signal processing element having an arithmetic logic unit |
US7853636B2 (en) | 2003-12-29 | 2010-12-14 | Xilinx, Inc. | Digital signal processing circuit having a pattern detector circuit for convergent rounding |
US7840630B2 (en) * | 2003-12-29 | 2010-11-23 | Xilinx, Inc. | Arithmetic logic unit circuit |
WO2005073866A2 (en) * | 2004-01-21 | 2005-08-11 | Charles Stark Draper Laboratory, Inc. | Systems and methods for reconfigurable computing |
US8581610B2 (en) * | 2004-04-21 | 2013-11-12 | Charles A Miller | Method of designing an application specific probe card test system |
US7138824B1 (en) * | 2004-05-10 | 2006-11-21 | Actel Corporation | Integrated multi-function analog circuit including voltage, current, and temperature monitor and gate-driver circuit blocks |
US7099189B1 (en) | 2004-10-05 | 2006-08-29 | Actel Corporation | SRAM cell controlled by non-volatile memory cell |
US7149997B1 (en) * | 2004-10-15 | 2006-12-12 | Xilinx, Inc. | Routing with frame awareness to minimize device programming time and test cost |
US7116181B2 (en) * | 2004-12-21 | 2006-10-03 | Actel Corporation | Voltage- and temperature-compensated RC oscillator circuit |
US7119398B1 (en) | 2004-12-22 | 2006-10-10 | Actel Corporation | Power-up and power-down circuit for system-on-a-chip integrated circuit |
US7446378B2 (en) * | 2004-12-29 | 2008-11-04 | Actel Corporation | ESD protection structure for I/O pad subject to both positive and negative voltages |
JP5200029B2 (ja) * | 2006-11-20 | 2013-05-15 | コデイアン・リミテツド | テレビ会議用ハードウエアアーキテクチャー |
JP5157514B2 (ja) * | 2008-02-21 | 2013-03-06 | 日本電気株式会社 | 構成情報生成装置、構成情報生成制御方法、及びプログラム |
US8479133B2 (en) * | 2009-01-27 | 2013-07-02 | Xilinx, Inc. | Method of and circuit for implementing a filter in an integrated circuit |
US8543635B2 (en) * | 2009-01-27 | 2013-09-24 | Xilinx, Inc. | Digital signal processing block with preadder stage |
FI20095195A0 (fi) * | 2009-02-27 | 2009-02-27 | Valtion Teknillinen | Menetelmä turvallisen etäuudelleenkonfiguraation tekemiseksi ohjelmoitavaan edulliseen FPGA-laitteistoon |
CN101814316B (zh) * | 2010-04-28 | 2012-05-30 | 中国航天科技集团公司第五研究院第五一三研究所 | 一种静态存储型现场可编程逻辑门阵列的配置方法 |
US8532100B2 (en) | 2010-10-19 | 2013-09-10 | Cisco Technology, Inc. | System and method for data exchange in a heterogeneous multiprocessor system |
DE102011107550A1 (de) | 2011-07-16 | 2013-01-17 | Volkswagen Aktiengesellschaft | Notlaufbetrieb von Komponenten in einem Kraftfahrzeug |
JP2013030906A (ja) | 2011-07-27 | 2013-02-07 | Fujitsu Ltd | プログラマブルロジックデバイス |
US9470759B2 (en) * | 2011-10-28 | 2016-10-18 | Teradyne, Inc. | Test instrument having a configurable interface |
US9759772B2 (en) | 2011-10-28 | 2017-09-12 | Teradyne, Inc. | Programmable test instrument |
US10776233B2 (en) | 2011-10-28 | 2020-09-15 | Teradyne, Inc. | Programmable test instrument |
US8633730B1 (en) | 2012-08-17 | 2014-01-21 | Xilinx, Inc. | Power control using global control signal to selected circuitry in a programmable integrated circuit |
US8786310B1 (en) * | 2012-08-17 | 2014-07-22 | Xilinx, Inc. | Partially programming an integrated circuit using control memory cells |
US10270709B2 (en) | 2015-06-26 | 2019-04-23 | Microsoft Technology Licensing, Llc | Allocating acceleration component functionality for supporting services |
US8751997B1 (en) * | 2013-03-14 | 2014-06-10 | Xilinx, Inc. | Processing a fast speed grade circuit design for use on a slower speed grade integrated circuit |
US9619423B1 (en) * | 2013-10-29 | 2017-04-11 | Altera Corporation | Memory-mapped state bus for integrated circuit |
EP2894572B1 (en) | 2014-01-09 | 2018-08-29 | Université de Rennes 1 | Method and device for programming a FPGA |
US10511478B2 (en) | 2015-04-17 | 2019-12-17 | Microsoft Technology Licensing, Llc | Changing between different roles at acceleration components |
US10198294B2 (en) | 2015-04-17 | 2019-02-05 | Microsoft Licensing Technology, LLC | Handling tenant requests in a system that uses hardware acceleration components |
US9792154B2 (en) | 2015-04-17 | 2017-10-17 | Microsoft Technology Licensing, Llc | Data processing system having a hardware acceleration plane and a software plane |
US10296392B2 (en) | 2015-04-17 | 2019-05-21 | Microsoft Technology Licensing, Llc | Implementing a multi-component service using plural hardware acceleration components |
US10216555B2 (en) | 2015-06-26 | 2019-02-26 | Microsoft Technology Licensing, Llc | Partially reconfiguring acceleration components |
US9576625B1 (en) * | 2015-10-08 | 2017-02-21 | Altera Corporation | Register initialization using multi-pass configuration |
US9965356B2 (en) | 2016-09-02 | 2018-05-08 | Alibaba Group Holding Limited | Method and system of high-availability PCIE SSD with software-hardware jointly assisted implementation to enhance immunity on multi-cell upset |
US10152566B1 (en) | 2016-09-27 | 2018-12-11 | Altera Corporation | Constraint based bit-stream compression in hardware for programmable devices |
US10824786B1 (en) | 2016-10-05 | 2020-11-03 | Xilinx, Inc. | Extend routing range for partial reconfiguration |
US10303648B1 (en) | 2017-05-19 | 2019-05-28 | Xilinx, Inc. | Logical and physical optimizations for partial reconfiguration design flow |
US11159167B2 (en) | 2017-09-25 | 2021-10-26 | Intel Corporation | Techniques for reducing uneven aging in integrated circuits |
US10223014B1 (en) * | 2017-09-28 | 2019-03-05 | Intel Corporation | Maintaining reconfigurable partitions in a programmable device |
US10558777B1 (en) | 2017-11-22 | 2020-02-11 | Xilinx, Inc. | Method of enabling a partial reconfiguration in an integrated circuit device |
US11567881B1 (en) | 2018-04-03 | 2023-01-31 | Xilinx, Inc. | Event-based debug, trace, and profile in device with data processing engine array |
US10635622B2 (en) | 2018-04-03 | 2020-04-28 | Xilinx, Inc. | System-on-chip interface architecture |
US10824584B1 (en) | 2018-04-03 | 2020-11-03 | Xilinx, Inc. | Device with data processing engine array that enables partial reconfiguration |
US10866753B2 (en) | 2018-04-03 | 2020-12-15 | Xilinx, Inc. | Data processing engine arrangement in a device |
US10579559B1 (en) | 2018-04-03 | 2020-03-03 | Xilinx, Inc. | Stall logic for a data processing engine in an integrated circuit |
US11372803B2 (en) | 2018-04-03 | 2022-06-28 | Xilinx, Inc. | Data processing engine tile architecture for an integrated circuit |
US11016822B1 (en) | 2018-04-03 | 2021-05-25 | Xilinx, Inc. | Cascade streaming between data processing engines in an array |
US10747690B2 (en) | 2018-04-03 | 2020-08-18 | Xilinx, Inc. | Device with data processing engine array |
US11379389B1 (en) | 2018-04-03 | 2022-07-05 | Xilinx, Inc. | Communicating between data processing engines using shared memory |
US10747531B1 (en) | 2018-04-03 | 2020-08-18 | Xilinx, Inc. | Core for a data processing engine in an integrated circuit |
US11061673B1 (en) | 2018-04-03 | 2021-07-13 | Xilinx, Inc. | Data selection network for a data processing engine in an integrated circuit |
US11113223B1 (en) | 2018-04-03 | 2021-09-07 | Xilinx, Inc. | Dual mode interconnect |
US10990552B1 (en) | 2018-04-03 | 2021-04-27 | Xilinx, Inc. | Streaming interconnect architecture for data processing engine array |
US10608641B2 (en) | 2018-07-20 | 2020-03-31 | Xilinx, Inc. | Hierarchical partial reconfiguration for programmable integrated circuits |
US11016781B2 (en) | 2019-04-26 | 2021-05-25 | Samsung Electronics Co., Ltd. | Methods and memory modules for enabling vendor specific functionalities |
US10891414B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Hardware-software design flow for heterogeneous and programmable devices |
US10651853B1 (en) | 2019-05-23 | 2020-05-12 | Xilinx, Inc. | Timing insulation circuitry for partial reconfiguration of programmable integrated circuits |
US11449347B1 (en) | 2019-05-23 | 2022-09-20 | Xilinx, Inc. | Time-multiplexed implementation of hardware accelerated functions in a programmable integrated circuit |
US10891132B2 (en) | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Flow convergence during hardware-software design for heterogeneous and programmable devices |
US11188312B2 (en) | 2019-05-23 | 2021-11-30 | Xilinx, Inc. | Hardware-software design flow with high-level synthesis for heterogeneous and programmable devices |
US11301295B1 (en) | 2019-05-23 | 2022-04-12 | Xilinx, Inc. | Implementing an application specified as a data flow graph in an array of data processing engines |
US10990547B2 (en) | 2019-08-11 | 2021-04-27 | Xilinx, Inc. | Dynamically reconfigurable networking using a programmable integrated circuit |
US10977018B1 (en) | 2019-12-05 | 2021-04-13 | Xilinx, Inc. | Development environment for heterogeneous devices |
US11055106B1 (en) | 2019-12-18 | 2021-07-06 | Xilinx, Inc. | Bootstrapping a programmable integrated circuit based network interface card |
US11144652B1 (en) * | 2019-12-19 | 2021-10-12 | Xilinx, Inc. | Secure update of programmable integrated circuits in data center computing environments |
US11443091B1 (en) | 2020-07-31 | 2022-09-13 | Xilinx, Inc. | Data processing engines with cascade connected cores |
US11496418B1 (en) | 2020-08-25 | 2022-11-08 | Xilinx, Inc. | Packet-based and time-multiplexed network-on-chip |
US11295000B1 (en) | 2020-09-28 | 2022-04-05 | Xilinx, Inc. | Static configuration of accelerator card security modes |
US11288222B1 (en) | 2020-09-28 | 2022-03-29 | Xilinx, Inc. | Multi-die integrated circuit with data processing engine array |
US11922223B1 (en) | 2021-02-08 | 2024-03-05 | Xilinx, Inc. | Flexible data-driven software control of reconfigurable platforms |
US11336287B1 (en) | 2021-03-09 | 2022-05-17 | Xilinx, Inc. | Data processing engine array architecture with memory tiles |
US11520717B1 (en) | 2021-03-09 | 2022-12-06 | Xilinx, Inc. | Memory tiles in data processing engine array |
US11456951B1 (en) | 2021-04-08 | 2022-09-27 | Xilinx, Inc. | Flow table modification for network accelerators |
US11606317B1 (en) | 2021-04-14 | 2023-03-14 | Xilinx, Inc. | Table based multi-function virtualization |
US11886789B1 (en) | 2021-07-07 | 2024-01-30 | Xilinx, Inc. | Block design containers for circuit design |
US11610042B1 (en) | 2021-09-28 | 2023-03-21 | Xilinx, Inc. | Scalable scribe regions for implementing user circuit designs in an integrated circuit using dynamic function exchange |
US11848670B2 (en) | 2022-04-15 | 2023-12-19 | Xilinx, Inc. | Multiple partitions in a data processing array |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5794243U (ja) * | 1980-12-02 | 1982-06-10 | ||
JPH0851356A (ja) * | 1994-04-20 | 1996-02-20 | Xilinx Inc | プログラマブルアレイ |
JPH098647A (ja) * | 1995-06-21 | 1997-01-10 | Nippon Telegr & Teleph Corp <Ntt> | プログラマブル論理回路 |
JPH09261040A (ja) * | 1984-09-26 | 1997-10-03 | Xilinx Inc | プログラム可能論理装置 |
JP2000124315A (ja) * | 1998-10-13 | 2000-04-28 | Hitachi Ltd | 半導体集積回路装置 |
JP2001186010A (ja) * | 1999-12-24 | 2001-07-06 | Fujitsu Ltd | フィールド・プログラマブル・ゲートアレイ |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB9223226D0 (en) * | 1992-11-05 | 1992-12-16 | Algotronix Ltd | Improved configurable cellular array (cal ii) |
US6020758A (en) * | 1996-03-11 | 2000-02-01 | Altera Corporation | Partially reconfigurable programmable logic device |
US5914616A (en) | 1997-02-26 | 1999-06-22 | Xilinx, Inc. | FPGA repeatable interconnect structure with hierarchical interconnect lines |
US6057704A (en) * | 1997-12-12 | 2000-05-02 | Xilinx, Inc. | Partially reconfigurable FPGA and method of operating same |
US6091263A (en) * | 1997-12-12 | 2000-07-18 | Xilinx, Inc. | Rapidly reconfigurable FPGA having a multiple region architecture with reconfiguration caches useable as data RAM |
US6102963A (en) * | 1997-12-29 | 2000-08-15 | Vantis Corporation | Electrically erasable and reprogrammable, nonvolatile integrated storage device with in-system programming and verification (ISPAV) capabilities for supporting in-system reconfiguring of PLD's |
US6262596B1 (en) * | 1999-04-05 | 2001-07-17 | Xilinx, Inc. | Configuration bus interface circuit for FPGAS |
-
2000
- 2000-07-25 US US09/624,818 patent/US6526557B1/en not_active Expired - Lifetime
-
2001
- 2001-07-16 DE DE60138106T patent/DE60138106D1/de not_active Expired - Lifetime
- 2001-07-16 WO PCT/US2001/022120 patent/WO2002009287A2/en active Application Filing
- 2001-07-16 EP EP01952714A patent/EP1303913B1/en not_active Expired - Lifetime
- 2001-07-16 JP JP2002514890A patent/JP4686107B2/ja not_active Expired - Lifetime
- 2001-07-16 CA CA2415281A patent/CA2415281C/en not_active Expired - Lifetime
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5794243U (ja) * | 1980-12-02 | 1982-06-10 | ||
JPH09261040A (ja) * | 1984-09-26 | 1997-10-03 | Xilinx Inc | プログラム可能論理装置 |
JPH0851356A (ja) * | 1994-04-20 | 1996-02-20 | Xilinx Inc | プログラマブルアレイ |
JPH098647A (ja) * | 1995-06-21 | 1997-01-10 | Nippon Telegr & Teleph Corp <Ntt> | プログラマブル論理回路 |
JP2000124315A (ja) * | 1998-10-13 | 2000-04-28 | Hitachi Ltd | 半導体集積回路装置 |
JP2001186010A (ja) * | 1999-12-24 | 2001-07-06 | Fujitsu Ltd | フィールド・プログラマブル・ゲートアレイ |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7533249B2 (en) | 2006-10-24 | 2009-05-12 | Panasonic Corporation | Reconfigurable integrated circuit, circuit reconfiguration method and circuit reconfiguration apparatus |
JP2010002986A (ja) * | 2008-06-18 | 2010-01-07 | Nec Corp | 再構成可能電子回路装置 |
Also Published As
Publication number | Publication date |
---|---|
CA2415281C (en) | 2010-09-28 |
EP1303913B1 (en) | 2009-03-25 |
EP1303913A2 (en) | 2003-04-23 |
DE60138106D1 (de) | 2009-05-07 |
CA2415281A1 (en) | 2002-01-31 |
JP4686107B2 (ja) | 2011-05-18 |
WO2002009287A3 (en) | 2003-02-06 |
US6526557B1 (en) | 2003-02-25 |
WO2002009287A2 (en) | 2002-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4686107B2 (ja) | Fpgaを部分的に再構成するためのアーキテクチャおよび方法 | |
US6493862B1 (en) | Method for compressing an FPGA bitsream | |
US6323681B1 (en) | Circuits and methods for operating a multiplexer array | |
US5781756A (en) | Programmable logic device with partially configurable memory cells and a method for configuration | |
US8810277B2 (en) | Non-sequentially configurable IC | |
US7716622B2 (en) | Memory re-implementation for field programmable gate arrays | |
US6326807B1 (en) | Programmable logic architecture incorporating a content addressable embedded array block | |
US5500609A (en) | Wildcard addressing structure for configurable cellular array | |
US6137307A (en) | Structure and method for loading wide frames of data from a narrow input bus | |
US7124338B1 (en) | Methods of testing interconnect lines in programmable logic devices using partial reconfiguration | |
JPH07175677A (ja) | 高密度プログラマブルロジックデバイス内蔵のシステム内プログラミング用および境界走査用状態マシンのための多重化した制御用ピン | |
KR20010014129A (ko) | 벌크 동작을 위해서 비휘발성 셀의 블럭을 선택하는플래그 레지스터를 구비한 집적 회로 | |
GB2300504A (en) | Programmable switch for logic array input/output signals | |
JPH07509800A (ja) | 非破壊的にランダムにアドレス可能なメモリシステム | |
EP0582660A1 (en) | STRUCTURE AND METHOD FOR MULTIPLEXING CONNECTIONS IN PROGRAMMING WITHIN A SYSTEM. | |
JPH02226811A (ja) | プログラム可能な論理装置 | |
JPH07120359B2 (ja) | ハードウェアシミュレータにおけるシミュレーション方法 | |
US6507943B1 (en) | Method of compressing a bitstream of an FPGA | |
US5999014A (en) | Method for concurrently programming or accessing a plurality of in-system-programmable logic devices | |
US7314174B1 (en) | Method and system for configuring an integrated circuit | |
JPH09198874A (ja) | ランダム・アクセス・メモリ・アレイ | |
JPH05258586A (ja) | 不揮発性半導体メモリ装置 | |
US6115294A (en) | Method and apparatus for multi-bit register cell | |
KR100240913B1 (ko) | 반도체 메모리 시스템, 프로그래머블 어레이 및 엑세스 시간 감소 방법 및 시스템 | |
US7143384B1 (en) | Methods of routing programmable logic devices to minimize programming time |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080520 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20110201 |
|
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: 20110208 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110214 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140218 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 4686107 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |