(57)【特許請求の範囲】
【請求項１】
メモリを有する集積回路デバイスであって、
第１の複数のデータ線を有するプログラム可能なリソースと、
前記プログラム可能なリソースに結合されたプログラム可能なインターコネクト・エレメントとを備え、前記プログラム可能なインターコネクト・エレメントは、前記プログラム可能なリソースとの信号の通信を可能にし、前記集積回路デバイスはさらに、
複数のメモリブロックと、
前記第１の複数のデータ線からのデータの多重化を可能にするように前記プログラム可能なリソースと前記複数のメモリブロックの各メモリブロックとの間に結合された専用のインターコネクト・エレメントとを備え、前記専用のインターコネクト・エレメントは、第１の複数の入力と第２の複数の出力とを有し、前記複数のメモリブロックの各メモリブロックへのアクセスを可能にし、
前記専用のインターコネクト・エレメントの前記第１の複数の入力の各入力は、前記プログラム可能なリソースの前記第１の複数のデータ線の対応するデータ線に結合され、前記専用のインターコネクト・エレメントの前記第２の複数の出力の各出力は、前記複数のメモリブロックの対応するメモリブロックに結合された第２の複数のデータ線のデータ線に結合され、
前記プログラム可能なリソースは、各々が第１のメモリサイズを有する複数のＳＲＡＭブロックを備え、前記複数のメモリブロックの各メモリブロックは、前記第１のメモリサイズよりも大きな第２のメモリサイズを有するＳＲＡＭブロックである、集積回路デバイス。
【請求項２】
前記複数のメモリブロックは、複数のＳＲＡＭブロックを備える、請求項１に記載の集積回路デバイス。
【請求項３】
前記専用のインターコネクト・エレメントは、クロスバースイッチを備える、請求項１または２に記載の集積回路デバイス。
【請求項４】
前記複数のメモリブロックと第２のプログラム可能なリソースとの間に結合された出力インターコネクト・エレメントをさらに備える、請求項１から３のいずれか１項に記載の集積回路デバイス。
【請求項５】
ＤＲＡＭブロックと、前記ＤＲＡＭブロックと前記複数のメモリブロックとの間の信号の通信を可能にする第２の専用のインターコネクト・エレメントとをさらに備える、請求項４に記載の集積回路デバイス。
【請求項６】
前記ＤＲＡＭブロックは、前記集積回路デバイスの第１のダイ上にあり、前記プログラム可能なリソースは、前記集積回路デバイスの第２のダイ上にある、請求項５に記載の集積回路デバイス。
【請求項７】
集積回路デバイスにメモリを実装する方法であって、
第１の複数のデータ線を有し、プログラム可能なインターコネクト・エレメントに結合されたプログラム可能なリソースを実装するステップを備え、前記プログラム可能なインターコネクト・エレメントは、前記プログラム可能なリソースとの信号の通信を可能にし、前記方法はさらに、
複数のメモリブロックを設けるステップと、
前記第１の複数のデータ線からのデータの多重化を可能にするように前記プログラム可能なリソースと前記複数のメモリブロックの各メモリブロックとの間に専用のインターコネクト・エレメントを結合するステップとを備え、前記専用のインターコネクト・エレメントは、第１の複数の入力と第２の複数の出力とを有し、前記複数のメモリブロックの各メモリブロックへのアクセスを可能にし、
前記専用のインターコネクト・エレメントの前記第１の複数の入力の各入力は、前記プログラム可能なリソースの前記第１の複数のデータ線の対応するデータ線に結合され、前記専用のインターコネクト・エレメントの前記第２の複数の出力の各出力は、前記複数のメモリブロックの対応するメモリブロックに結合された第２の複数のデータ線のデータ線に結合され、
プログラム可能なリソースを実装するステップは、各々が第１のメモリサイズを有する第１の複数のＳＲＡＭブロックを実装するステップを備え、複数のメモリブロックを設けるステップは、各々が前記第１のメモリサイズよりも大きな第２のメモリサイズを有する複数のＳＲＡＭブロックを設けるステップを備える、方法。
【請求項８】
前記複数のメモリブロックの間に専用のインターコネクト・エレメントを結合するステップは、前記プログラム可能なインターコネクト・エレメントから分離した前記専用のインターコネクト・エレメントを設けるステップを備える、請求項７に記載の方法。
【請求項９】
専用のインターコネクト・エレメントを前記複数のメモリブロックに結合するステップは、クロスバースイッチを前記複数のメモリブロックに結合するステップを備える、請求項７および８のいずれか１項に記載の方法。
【請求項１０】
ＤＲＡＭブロックを実装するステップと、前記ＤＲＡＭブロックと前記複数のメモリブロックとの間に、第２のクロスバースイッチを備える第２の専用のインターコネクト・エレメントを結合するステップとをさらに備える、請求項７から９のいずれか１項に記載の方法。
【請求項１１】
プログラム可能なリソースを実装するステップは、前記集積回路デバイスの第１のダイ上にプログラム可能なリソースを実装するステップを備え、前記ＤＲＡＭブロックを実装するステップは、前記集積回路デバイスの第２のダイ上に前記ＤＲＡＭブロックを実装するステップを備える、請求項１０に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
本発明は、一般に集積回路デバイスに関し、特にメモリを有する集積回路デバイスおよび集積回路デバイスにメモリを実装する方法に関する。
【背景技術】
【０００２】
発明の背景
メモリの使用は、ほとんどいかなる電子デバイスにおいても重要な側面である。さまざまなタイプのメモリがある。例えば、揮発性メモリは、電力がメモリに供給されている時だけメモリに格納された値を保持するタイプのメモリである。電力が除去されると、メモリに格納されたデータは、ある期間にわたって失われることになる。これに対して、不揮発性メモリは、電力が除去された場合にデータが影響を受けないタイプのメモリである。
【０００３】
さまざまなタイプのメモリエレメントは、さまざまな特性を有し得る。例えば、メモリエレメントは、さまざまなアクセス時間、電力消費量、放射線の影響に対する耐性などを有し得る。したがって、メモリは、メモリの所望の動作だけでなくメモリの動作品質にも基づいて選択され得る。
【０００４】
メモリの機能または動作品質に応じて、メモリは、集積回路デバイス上に含まれていてもよく、または、集積回路デバイスからは切離して実装され、集積回路デバイスによってアクセスされてもよい。集積回路デバイスから分離したメモリを設けることは、メモリを実装する回路全体の動作に影響を及ぼし得る。したがって、集積回路デバイスに関連付けられたメモリを実装する場合にメモリのタイプもメモリの場所も選択する際にさまざまな考慮すべき事項がある。
【発明の概要】
【課題を解決するための手段】
【０００５】
発明の概要
メモリを有する集積回路デバイスが記載されている。上記集積回路デバイスは、プログラム可能なリソースと、上記プログラム可能なリソースに結合されたプログラム可能なインターコネクト・エレメントとを備え、上記プログラム可能なインターコネクト・エレメントは、上記プログラム可能なリソースとの信号の通信を可能にし、上記集積回路デバイスはさらに、複数のメモリブロックと、上記複数のメモリブロックに結合された専用のインターコネクト・エレメントとを備え、上記専用のインターコネクト・エレメントは、上記複数のメモリブロックへのアクセスを可能にする。
【０００６】
代替的な構成に係るメモリを有する集積回路デバイスは、複数のチャネルを有するダイナミック・ランダム・アクセス・メモリ（dynamic random access memory：ＤＲＡＭ）ブロックと、複数のメモリブロックと、上記ＤＲＡＭブロックと上記複数のメモリブロックとの間に結合された専用のインターコネクト・エレメントとを備え、上記専用のインターコネクト・エレメントは、上記ＤＲＡＭブロックの上記複数のチャネルのいずれかから上記複数のメモリブロックの選択されたメモリブロックへデータをルーティングすることを可能にする。
【０００７】
集積回路デバイスにメモリを実装する方法も記載されている。上記方法は、プログラム可能なインターコネクト・エレメントに結合されたプログラム可能なリソースを実装するステップを備え、上記プログラム可能なインターコネクト・エレメントは、上記プログラム可能なリソースとの信号の通信を可能にし、上記方法はさらに、複数のメモリブロックを設けるステップと、専用のインターコネクト・エレメントを上記複数のメモリブロックに結合するステップとを備え、上記専用のインターコネクト・エレメントは、上記複数のメモリブロックへのアクセスを可能にする。
【図面の簡単な説明】
【０００８】
【図１】外部メモリに結合された集積回路のブロック図である。
【図２】スタティック・ランダム・アクセス・メモリ（static random access memory：ＳＲＡＭ）ブロックのブロック図である。
【図３】図２のＳＲＡＭブロックのメモリセルの回路図である。
【図４】ＤＲＡＭブロックのブロック図である。
【図５】図４のＤＲＡＭブロックのメモリセルの回路図である。
【図６】複数のＳＲＡＭブロックを有する集積回路デバイスの一部のブロック図である。
【図７】複数のＳＲＡＭブロックに結合され、別々の読出および書込制御を有する集積回路デバイスの一部のブロック図である。
【図８】単一のクロスバースイッチに関連付けられたデータならびに読出および書込制御を有する複数のＳＲＡＭブロックを有する集積回路デバイスの一部のブロック図である。
【図９】複数のＳＲＡＭブロックとＤＲＡＭブロックとを有する集積回路デバイスのブロック図である。
【図１０】ＤＲＡＭのキューにおけるデータの格納を可能にする回路を示すブロック図である。
【図１１】パケットバッファサブシステムを可能にするより詳細な回路を示すブロック図である。
【図１２】ヘッドおよびテール部分のためのさまざまなサイズのメモリアレイを用いたＳＲＡＭブロックの実装を示すブロック図である。
【図１３】ヘッドおよびテールメモリ割当てを有するＳＲＡＭブロックの実装を示すブロック図である。
【図１４】ヘッドおよびテールメモリ割当てならびにバイパスチャネルを有するＳＲＡＭブロックの実装を示すブロック図である。
【図１５】クロスバースイッチのブロック図である。
【図１６】プログラム可能なリソースを有するデバイスをプログラムするためのシステムのブロック図である。
【図１７】図１〜図１５の回路を実装し得るプログラム可能なリソースを有するデバイスのブロック図である。
【図１８】図１７のデバイスのコンフィギュラブル・ロジック・エレメントのブロック図である。
【図１９】マルチチップモジュール集積回路デバイスのブロック図である。
【図２０】集積回路デバイスにメモリを実装する方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
図面の詳細な説明
まず図１を参照して、外部メモリに結合された集積回路のブロック図が示されている。特に、集積回路デバイス１０２は、通信リンク１０６を介して外部メモリ１０４に結合されている。集積回路デバイスは、特定用途向け集積回路（application specific integrated circuit：ＡＳＩＣ）または以下でより詳細に説明するプログラム可能なリソースを有する集積回路デバイスなどの、いかなるタイプの集積回路デバイスであってもよい。集積回路デバイス１０２は、コンフィギュレーション回路１１０に結合された制御回路１０８を備える。コンフィギュレーション回路１１０は、制御回路１０８を介して、または入力／出力（Ｉ／Ｏ）ポート１１２を介して、外部メモリ１０４からコンフィギュレーションデータを受取り得る。コンフィギュレーション回路１１０は、コンフィギュレーションデータをコンフィギュレーションメモリ１１６に提供することによって集積回路デバイスのプログラム可能なリソース１１４を構成するために使用される。代替的には、コンフィギュレーションデータは、制御回路１０８によって直接コンフィギュレーションメモリに提供されてもよい。また、制御回路１０８およびプログラム可能なリソース１１４は、内部メモリ１１８および１２０に結合され得る。さらに、集積回路デバイスは、メモリエレメントへのアクセスを可能にするために、プログラム可能なリソース１１４に関連付けられたインターコネクト・エレメントから分離した専用のインターコネクト・エレメント１２２および１２４を任意に含んでいてもよい。
【００１０】
以下でより詳細に説明するように、内部メモリ１１８および１２０は、異なるタイプのメモリであってもよく、異なるサイズのアレイであってもよい。例えば、メモリ階層においてプログラム可能なリソースに関連付けられたルックアップテーブル（ＬＵＴ）ランダム・アクセス・メモリ（ＲＡＭ）およびブロックＲＡＭ（ＢＲＡＭ）（例えば３６キロビット（Ｋｂ）ブロック）を有し得る従来のデバイスでは、メモリ階層の次のレベルは、外部ＳＲＡＭおよびＤＲＡＭを含む。以下に記載されるさまざまな回路実装は、小さなＢＲＡＭと外部ＳＲＡＭまたはＤＲＡＭとの間に、メモリ階層の追加のレベルを含む。ネットワーク化されたＳＲＡＭとして構成され得るこのＳＲＡＭの追加のレベルは、ＢＲＡＭよりも深いが、以下でより詳細に説明するＦＰＧＡダイ上に取付けるには十分に小さいオンチップＳＲＡＭであってもよい。これらのネットワーク化されたＳＲＡＭは、外部メモリを支援してシステム全体の性能を向上させ、ユーザがＳＲＡＭ帯域幅をＳＲＡＭ容量とよりよく関連付けることを可能にする。
【００１１】
ここで図２を参照して、ＳＲＡＭブロック２００のブロック図が示されている。図２のＳＲＡＭブロック２００は、内部メモリ１１８の一部であり得て、内部メモリ１２０は、例えば図４および図５を参照して以下でより詳細に説明するＤＲＡＭブロックであり得る。ＳＲＡＭブロック２００は、マトリクス状に配置され得る複数の個々のメモリセル２０２を備える。メモリセルの列および列デコーダ２０４は、データ線に結合され、メモリセルの行は、ワード線に結合されて、ＤＲＡＭの出力として出力データを生成する。したがって、データをセルに書込むためには、セルに関連付けられたワード線がハイにされ、セルに関連付けられたデータ線に所望のデータが結合される。データをセルから読出すためには、セルに関連付けられたワード線がハイにされ、セルが位置する列に関連付けられた出力値を列デコーダが生成する。
【００１２】
ここで図３を参照して、図２のＳＲＡＭメモリブロックのメモリセルの回路図が示されている。メモリセルは、ｐ−チャネルトランジスタ３０２を有するインバータを含み、当該ｐ−チャネルトランジスタ３０２は、Ｖｄｄなどの基準パワー電圧に結合されたソースと、第１のノード「Ｑ」においてｎ−チャネルトランジスタ３０４のドレインに結合されたドレインとを有し、当該ｎ−チャネルトランジスタ３０４のソースは、接地電位（Ｖｓｓ）に結合されている。メモリセルは、ｐ−チャネルトランジスタ３０６を有する第２のインバータを含み、当該ｐ−チャネルトランジスタ３０６は、基準電圧に結合されたソースと、第２のノード「Ｑ＿ｂ」においてｎ−チャネルトランジスタ３０８のドレインに結合されたドレインとを有し、当該ｎ−チャネルトランジスタ３０８のソースも、接地に結合されている。第１のノード「Ｑ」は、ｎ−チャネルトランジスタ３１０によって制御され、当該ｎ−チャネルトランジスタ３１０は、第１のノードでのビット線（ＢＬ）上の入力データの受取りを制御する反転ワード線（ＷＬ０＿ｂａｒ）信号をそのゲートにおいて受取るように結合されている。第２のノード「Ｑ＿ｂ」は、別のｎ−チャネルトランジスタ３１２によって制御され、当該ｎ−チャネルトランジスタ３１２は、第２のノードＱ＿ｂでの反転入力データの受取りを制御する反転ワード線信号をそのゲートにおいて受取るように結合されている。トランジスタ３１４および３１６は、別々の反転ワード線ＷＬ０＿ｂａｒおよびＷＬ１＿ｂａｒをイネーブルにするように構成されている。トランジスタ３１４および３１６は、示されているようにＱおよびＱ＿ｂノードに結合されたソースを有するように、示されているように構成されており、ゲートは各々、反転ＷＬ１＿ｂａｒによって制御され、デュアルポートＳＲＡＭを可能にする。所与のセルのために反転ワード線（ＷＬ０＿ｂａｒ）が選択されると、ビット線および反転ビット線上の値がＱおよびＱ＿ｂノードに結合され、当該セルのデータ値が格納される。次いで、データは、ＷＬ１＿ｂａｒ信号によってアクセスされることができ、デュアルポートメモリエレメントを可能にする。より特定的には、ＳＲＡＭセルは、たった１つの読出ポートおよび１つの書込ポートを有する状態で実現され得る。いずれかが読出しまたは書込みに使用され得る２つの読出／書込（ｗ／ｒ）ポートを設けるいくつかのＳＲＡＭセルとは異なって、たった１つの読出ポートおよび１つの書込ポートを含むことによって、メモリ密度を高くすることができる。読出し用に１つのポートを設け、書込み用に１つのポートを設けることによって、図３の８Ｔ  ＳＲＡＭセルは、ハーフクロックサイクル（すなわちクロックの立上りおよび立下りエッジ）でメモリにアクセスすることを可能にすることにより、２ｗ／ｒポートを有するセルの２倍の速さで動作することができる。図３のメモリセルは一例として示されているが、他のメモリセルが利用されてもよい。
【００１３】
ここで図４を参照して、ＤＲＡＭブロックのブロック図が示されている。図４のＤＲＡＭブロックは、以下でより詳細に説明するように、外部メモリ１０４または内部メモリ１２０の一部であり得る。ＤＲＡＭブロック４００は、複数のセル４０２を備え、当該複数のセル４０２の各々は、アドレスデコーダ４０４に結合されている。アドレスデコーダ４０４は、アドレス線４０６を受け、示されているように複数のメモリセル４０２に結合されるアドレスを生成する。アドレスデコーダ４０４は、チップイネーブル信号を受取り、メモリセル４０２の各々は、基準電圧Ｖｒｅｆを受取る。書込ブロック４１０は、メモリセル４０２からのデータの読出しまたはメモリセル４０２へのデータの書込みを可能にする。特に、書込ブロック４１０に提供された書込イネーブル信号がゲート４１４を介したメモリセル４０２への書込みを可能にする場合、データ線４１２を介して提供されたデータは、アドレスデコーダに提供されたアドレスに書込まれる。書込イネーブル信号がメモリセル４０２への書込みを可能にしていない場合、インバータ４１６に結合されたデータがデータ線４１８上で生成される。以下でより詳細に説明するように、ＤＲＡＭブロックのセルに格納されたデータは、データを保持するために定期的にリフレッシュされなければならない。
【００１４】
ここで図５を参照して、図４のＤＲＡＭブロックのメモリセルの回路図が示されている。特に、第１のトランジスタ５０２は、基準ビット線に結合されたドレイン５０４と、キャパシタ５０８に結合されたソース５０６とを有する。トランジスタ５０２は、ゲートにおいて基準ワード線によって制御される。第２のトランジスタ５１４は、ビット線に結合されたドレイン５１６と、キャパシタ５２０に結合されたソース５１８とを有する。トランジスタ５１４は、ゲートにおいてワード線によって制御される。ワード線をハイにし、格納されるべき所望の値をビット線に供給してキャパシタ５２０を充電することによって、データが書込まれる。データをメモリから読出すためには、センス増幅器５２６が、出力値を生成するために、基準ビット線におけるキャパシタ５１２に格納された電圧とビット線におけるキャパシタ５２４に格納された電圧との差を検出する。ビット線の値が決定された後、当該値は、キャパシタ５２４に適切な電荷を蓄えることによってビット線に再書込みされる。すなわち、キャパシタ５２４は、セルによって格納されるデータの正しい値を維持するために定期的に再充電される。個々のＤＲＡＭメモリセルは、図３のＳＲＡＭセルよりも小さいので有益であるが、ＤＲＡＭメモリセルは、格納データを表わすキャパシタ上の電荷を維持するために定期的にリフレッシュされなければならず、ＳＲＡＭセルよりもアクセス時間が長くなる可能性がある。
【００１５】
ここで図６を参照して、複数のＳＲＡＭブロックを有する集積回路デバイスの一部のブロック図が示されている。プログラム可能なリソースの部分６０２は、複数のメモリブロック６０６へのインターフェースを提供するルーティング回路６０４に、データ線６０３によって結合されている。複数のメモリブロックは、ここでは一例として、３２個のＳＲＡＭブロックとして示されている。ルーティング回路６０４は、好ましくは、複数のメモリブロック６０６のための専用のインターコネクト・エレメントである。ルーティング回路６０４は、ルーティング回路のＵ個の入力ポート（ここでは、対応するデータ線Ｄ１〜Ｄ８に結合された８個のデータ入力ポートとして示されている）およびＶ個の出力ポート（Ｖは、例えばここに示されているように３２であってもよい）にデータをルーティングすることを可能にし、入力および出力ポートの各々は、ポート当たりＷビットを有し得る。すなわち、データ線に対応するルーティング回路６０４の各々の個々の入力ポートは、２８８ビットデータ（２５６ビットデータおよび３２オーバーヘッドビットであり得る）を受取り得て、各出力ポートは、２８８ビットデータを生成し得る。例えば、出力ポートのうちの代表的なものは、対応するデータ線６０５によって、ＳＲＡＭ０と表わされる第１のメモリブロックの入力に結合されている。したがって、８個の２８８ビット入力ポートの各々からのデータＤ１〜Ｄ８は、ルーティング回路６０４の３２個の２８８ビット出力ポートを介して、３２個のメモリブロックのうちの１つ以上にルーティングされ得る。図６の回路構成に従って複数のメモリブロックに提供されるデータは、データビットと制御ビットとを含み得て、制御ビットは、例えばアドレスビットを含み得る、ということが理解されるべきである。
【００１６】
複数のメモリブロックによって生成されたデータを受取るように、第２のルーティング回路６０８が複数のメモリブロック６０６の出力に結合されている。対応する代表的なデータ線６０７におけるＳＲＡＭ０の出力は、ルーティング回路６０８の入力に結合されている。ルーティング回路６０８の出力データ線６０９は、ルーティング回路６０８の対応する出力ポートとプログラム可能なリソースの第２の部分６１０との間に結合されている。ルーティング回路６０４および６０８は、図１５を参照してより詳細に説明するように同期クロスバースイッチとして実現されてもよく、プログラム可能なリソースの特定の部分６０２および６１０以外の回路によって使用され得る共有ルーティングエレメントを使用するのではなく、好ましくは専用のインターコネクト・エレメントとして実現される。また、出力データ線６０９は、複数のメモリエレメントの出力において対応する８ビット出力を受取るように結合されるマルチビット線（例えば８ビット線）であってもよい。したがって、３２個のＳＲＡＭのうちの８個のＳＲＡＭの８ビット出力Ｑ１〜Ｑ８が、ルーティング回路６０８の８本の出力データ線６０９において生成され得る。制御線６１２は、ルーティング回路６０４へのさまざまな入力を複数のメモリブロック６０６の第１の予め定められたメモリブロックにルーティングするために使用される。同様に、制御線６１４は、第２の予め定められたメモリブロックの出力を、ルーティング回路６０８の８個の出力ポートおよびプログラム可能なリソースの部分６１０にルーティングするために使用される。回路への入力および出力として専用のルーティング回路および専用のインターコネクトを設けることによって、ＳＲＡＭアクセスの速度を速くすることができる。すなわち、プログラム可能なロジックデバイスのための共有インターコネクトルーティングは、デバイスに対してより高い柔軟性を提供するが、ゆっくりとしている可能性がある。これに対して、クロスバースイッチなどの専用のルーティング回路は、集積回路のためのシステムクロックで動作することができる。
【００１７】
ここで図７を参照して、複数のＳＲＡＭブロックに結合され、別々の読出および書込制御を有する集積回路デバイスの一部のブロック図が示されている。すなわち、図７の構成は、別々のルーティング回路を介したデータビットおよび制御ビットの別々のルーティングを可能にし、制御ビットは、例えばアドレスビットを含む別々の読出および書込制御ビットを含む。特に、プログラム可能なリソース６０２から書込制御信号ＷＣ１〜ＷＣ８を受取るようにルーティング回路７０２が結合されており、ルーティング回路７０２の複数の出力ポートのうちの代表的なものは、制御線７０４によって、ここではＳＲＡＭ０と表わされる複数のメモリエレメント６０６のメモリエレメントの対応する制御信号入力に結合されている。別のルーティング回路７０８が、ルーティング回路７０８の入力ポートにおいてデータ入力Ｄ１〜Ｄ８を受取るように結合されている。ここでは対応する出力ポートにおける複数のデータ線の代表的なデータ線７１０によって示されているルーティング回路７０８の出力ポートは、ここではＳＲＡＭ０と表わされる第１のメモリブロックに結合されている。したがって、ルーティング回路７０２は、データおよび制御信号の任意の対を、複数のメモリエレメント６０６のうちの１つ以上の選択されたメモリエレメントのデータおよび制御入力にルーティングすることを可能にする。
【００１８】
ルーティング回路は、複数のメモリブロックからデータを読出すためにも設けられている。読出制御信号ＲＣ１〜ＲＣ８を含む制御信号を、プログラム可能なリソースの部分６１０から受取るように、ルーティング回路７１４が結合されている。ルーティング回路７１４は、選択されたメモリブロックに読出制御信号をルーティングすることを可能にし、ルーティング回路７１４の出力ポートは、制御線（ここではＳＲＡＭ３１と表わされる最後のメモリブロックに結合された代表的な制御線７１６としてここでは示されている）によってメモリに結合されている。複数のメモリ７２０から出力を受取るようにルーティング回路７１８が結合されており、代表的なデータ線７２０は、最後のメモリブロックの出力からルーティング回路７１８の入力にデータを提供する。メモリブロック６０６によって提供されたデータＱ１〜Ｑ８は、８本の出力線のうちの１本によって、ルーティング回路７１８からプログラム可能なリソース６１０に提供される。制御信号は、プログラム可能なリソースによってルーティング回路に提供される。より特定的には、書込制御信号は、プログラム可能なリソース６０２によって、制御線７２０および７２２を介して、ルーティング回路７０２および７０８にそれぞれ提供されるのに対して、読出制御信号は、プログラム可能なリソース６１０によって、７２４および７２６を介して、ルーティング回路７１４および７１８にそれぞれ提供される。代替的には、制御信号は、回路のプロセッサなどの回路の別の要素によって提供されてもよい。
【００１９】
ここで図８を参照して、単一のクロスバースイッチに関連付けられたデータならびに読出および書込制御を有する複数のＳＲＡＭブロックを備える集積回路デバイスの一部のブロック図が示されている。したがって、データＤ１〜Ｄ８も書込制御信号ＷＣ１〜ＷＣ８もルーティング回路８０２に提供される。例えば、データＤ１および書込制御信号ＷＣ１は、代表的な信号線対８０３によってルーティング回路８０２に提供される。次いで、ルーティング回路８０２の対応する入力ポートにおける信号線対上の信号は、信号線対８０４によって、（一例としてＳＲＡＭ０であり得る）選択されたメモリエレメントに提供される。読出制御信号ＲＣ１〜ＲＣ８は、プログラム可能なリソース６１０によって生成され、プログラム可能なリソース６１０と複数のメモリエレメント６０６との間に制御信号線によって結合される。一例として、代表的な制御信号線８１０は、（プログラム可能なリソース８０６の出力ポートとルーティング回路８０６の入力ポートとの間に読出制御線８１１を介して提供される読出制御信号ＲＣ１であり得る）選択された読出制御信号をＳＲＡＭ０の読出入力に結合し、ＳＲＡＭ０のデータ出力に結合された出力信号線８１２は、ＳＲＡＭ０からのデータがルーティング回路８０６を介してプログラム可能なリソースに結合されることを可能にする。例えば、出力信号線８１２上に提供される出力データは、Ｑ１であり得て、Ｑ１は、ルーティング回路８０６によって、信号線８１４に沿って、ルーティング回路８０６の出力ポートとプログラム可能なリソース６１０の対応する入力ポートとの間でルーティングされる。制御信号は、読出データを制御するために、制御信号線８１６および８１８によってルーティング回路８０２および８０６にそれぞれ提供される。
【００２０】
ここで図９を参照して、複数のＳＲＡＭとＤＲＡＭとを有する集積回路デバイスのブロック図が示されている。図９の回路構成によれば、ＤＲＡＭ９０２は、集積回路９０４に結合されている。ＤＲＡＭ９０２は、ＤＲＡＭチャネル０〜ＤＲＡＭチャネル７と表わされる出力チャネル９０６〜９２０を備える。ＤＲＡＭインターフェース９２２は、集積回路９０４に提供されたデータが、ここでは４．５メガバイトメモリアレイであり得るネットワーク化されたＳＲＡＭ（ＮＳＲＡＭ０〜ＮＳＲＡＭ３）として示されている複数のメモリブロック９２４〜９３０のうちの１つにルーティングされることを可能にする。すなわち、ネットワーク化されたＳＲＡＭ（ＮＳＲＡＭ０〜ＮＳＲＡＭ３）の各々は、ＳＲＡＭ６０６などの３２個の４Ｋ×２８８ビットＳＲＡＭを備え得る。複数のメモリブロック９２４〜９３０がＳＲＡＭとして示されているが、複数のメモリブロック９２４〜９３０はＤＲＡＭ９０２よりも概して速いアクセス時間を有するということが理解されるべきである。例えば、メモリブロック９２４〜９３０は、ニューヨーク州アーモンクのインターナショナル・ビジネス・マシン・コーポレーションから入手可能なｅＤＲＡＭであってもよい。データおよびコマンドがメモリブロックとプログラム可能なリソース９３４との間で転送されることを可能にするために、複数のメモリブロック９２４〜９３０とプログラム可能なリソース９３４との間にはプログラム可能なリソースインターフェース９３２が設けられている。ＤＲＡＭインターフェース９２２およびプログラム可能なリソースインターフェース９３２は、好ましくは専用のインターフェースであり、図１５のクロスバースイッチなどのクロスバースイッチを用いて実現されてもよい。複数のメモリブロック９２４〜９３０および対応するインターフェース９２２および９３２は、例えば図６〜図８の回路に従って実現され得る。ＤＲＡＭ９０２は集積回路９０４から分離しているように示されているが、図１９を参照してより詳細に説明するように、ＤＲＡＭは、同一の集積回路ダイ上に実装されてもよく、または同一の集積回路パッケージ上の別のダイ上に実装されてもよい。
【００２１】
図９の構成は、集積回路にメモリを実装する際の効率を向上させることができるので、有益である。例えば、（ＳＲＡＭ９２４〜９３０などの）１００Ｍｂのダイ上のさらなるキャッシングＳＲＡＭがなければ、集積回路デバイス９０４は、最大３００個までの論理キューのための帯域幅保証で４００Ｇｂ／ｓのパケットバッファをサポートすることができない。これらのＳＲＡＭブロックは、ダイ上になければならない。なぜなら、従来のデバイスでは、外部ＳＲＡＭのための必要な帯域幅をサポートするためにパッケージＩ／Ｏピンが不十分であるからである。さらに、ＳＲＡＭ幅は、ＤＲＡＭチャネル幅（例えばサイクル当たり２５６ビット）と整合がとられ、ＳＲＡＭ深さは、複数のこのようなＳＲＡＭを組み合わせてさらに大きなメモリにすることによってメモリポートへのメモリ容量の柔軟な割当てを可能にするようにサイズ決めされる。例えば、１ＭｂのビルディングブロックＳＲＡＭでは、２Ｍｂが１つのキャッシュに割当てられることができ、１０Ｍｂが異なるキャッシュに割当てられることができる。ビルディングブロックＳＲＡＭが浅すぎると、密度（すなわち単位面積当たりのビット）が小さくなり、ビルディングブロックＳＲＡＭが深すぎると、メモリ容量をメモリポートに割当てるための柔軟性が制限される。図９の回路構成の特定のアプリケーションは、図１０〜図１４に記載されている。
【００２２】
ここで図１０を参照して、ブロック図は、ＤＲＡＭのキューへのデータの格納を可能にする回路を示している。複数のデータパケットからのデータを有する入力データストリームは、メモリエレメント１００２に格納され、当該メモリエレメント１００２は、例えば複数の論理ＦＩＦＯを備え得る。メモリエレメント１００４の出力に結合されたルーティング回路１００６は、示されているように、データパケットに関連付けられたデータを対応するキュー１００８〜１０１０にルーティングすることを可能にする。第２のルーティング回路１０１４は、キュー１００８〜１０１０の出力からメモリエレメント１０１６にデータをルーティングする。したがって、図１０の回路は、データの多重化を可能にするために専用のルーティング回路を使用して、例えばＤＲＡＭであり得る大容量記憶エレメント（例えばメモリエレメント１００２）からデータを読出し、大容量記憶エレメントにデータを書込むことを可能にし、メモリエレメント１００２は、ＤＲＡＭ９０２であってもよく、メモリエレメント１００４および１０１６は、ＳＲＡＭ９２４〜９３０のうちの２つ以上であってもよい。
【００２３】
一例として、（図１０に示されるように実現された）図６〜図９の回路は、Ｒａのピーク帯域幅を有するＤＲＡＭを使用して、Ｒ′の入力線速度で、最大Ｔｃ秒にわたってパケットのＱ個の論理フローを保持するために、（入力データストリームと出力データストリームとの間の）パケットバッファとして使用され得て、読出速度Ｒｗおよび書込速度Ｒｒは、結合された（Ｒｗ＋Ｒｒ）を有し、当該結合された（Ｒｗ＋Ｒｒ）は、ピーク大容量記憶帯域幅ＲａおよびＴｃＲ’の大容量記憶容量未満である。したがって、Ｒ″のバッファ読出速度は、ゼロパケットドロップで維持され得る。図１０から明らかであるように、ここではキューとして示されているメモリブロックは、さまざまなパケットからのデータ（例えば、キュー１における斜交平行線がつけられたデータ、キュー２における陰影付きのデータ、またはキュー３における陰影なしのデータ）を格納することを可能にするために使用されることができ、ルーティング回路は、入力データストリームから大容量記憶装置に、および大容量記憶装置から出力データストリームに、データをルーティングすることを可能にする。
【００２４】
ここで図１１を参照して、ブロック図は、パケットバッファサブシステムを可能にするより詳細な回路を示している。より特定的には、パケットバッファサブシステム１１０２は、入力データＲｉｎを受取るための入力ロジック１１０４および出力データＲｏｕｔを生成するための出力ロジックに結合されている。パケットバッファサブシステム１１０２は、パケットバッファコントローラ１１０８に結合されるパケットバッファ１１１０を備える。パケットバッファ１１１０は、例えばＤＲＡＭであってもよい。パケットバッファコントローラ１１０８は、キューイングコーディネータ１１１６によって制御されるテールキャッシュＳＲＡＭ１１１２およびヘッドキャッシュＳＲＡＭ１１１４を備える。テール−ヘッドキャッシングについては、図１２および図１３を参照して以下でより詳細に説明する。キューイングコーディネータ１１１６は、ＤＲＡＭのバイパスを可能にし、これについては、図１４を参照してより詳細に説明する。
【００２５】
ここで図１２を参照して、ブロック図は、ヘッドおよびテール部分のために異なるサイズのメモリアレイを使用したＳＲＡＭブロックの実装を示している。特に、対応するメモリブロック９２４，９２６および９３０に結合されたＤＲＡＭチャネル９０６，９０８および９２０を含むさまざまなＤＲＡＭチャネルが示されている。メモリブロック９２４，９２６および９３０は、別々のテール部分１２０２およびヘッド部分１２０４で仕切られており、テール部分は、ヘッド部分よりも概して小さい。すなわち、キューがいつアクセスされるかが予測不可能であり得て、次の読出しが、満たされているキューのためのものであり得るので、ヘッドキャッシュをより大きくする必要がある。メモリブロック９２６の拡大部に示されているように、濃い陰影によって表わされている特定のメモリエレメント１２０６は、テールキャッシングのためのメモリエレメントであるのに対して、他の陰影なしのメモリエレメント１２０８は、ヘッドキャッシングのメモリエレメントである。低遅延を可能にするために、ヘッドキャッシュは、しばしば、テールキャッシュよりもはるかに大きい。
【００２６】
ここで図１３を参照して、ブロック図は、ヘッドおよびテールメモリ割当てを有するＳＲＡＭブロックの実装を示している。図１３の実施例によれば、濃い陰影で示されている特定のメモリブロックは、テールメモリブロックと表わされるのに対して、陰影なしの他のメモリブロックは、ヘッドメモリブロックである。一例として、ＳＲＡＭ０およびＳＲＡＭ１は、チャネル０のためのテールキャッシングメモリブロックであるのに対して、ＳＲＡＭ２〜ＳＲＡＭ１２は、チャネル０のためのヘッドキャッシングメモリブロックであり、ＳＲＡＭ１３およびＳＲＡＭ１４は、チャネル１のためのテールメモリブロックであるのに対して、ＳＲＡＭ１５〜ＳＲＡＭ２４は、チャネル１のためのヘッドメモリブロックである。
【００２７】
ここで図１４を参照して、ブロック図は、ヘッドおよびテールメモリ割当てならびにバイパスチャネルを有するＳＲＡＭブロックの実装を示している。特に、チャネル１およびチャネル２の各々のためのさまざまな書込信号は、チャネル０のためのテール書込コマンド（テール書込０）およびヘッド書込コマンド（ヘッド書込０）、ならびに、チャネル１のためのテール書込コマンド（テール書込１）およびヘッド書込コマンド（ヘッド書込１）を含む。また、チャネル０のためのテール読出（テール読出０）およびヘッド読出（ヘッド読出０）値、ならびに、チャネル１のためのテール読出（テール読出１）およびヘッド読出（ヘッド読出１）値も示されている。チャネル１およびチャネル２の各々のためのテールメモリエレメントからヘッドメモリエレメントへのバイパスが設けられている。したがって、図１４は、例えば図６〜図１３の要素の構成を使用したテール−ヘッドキャッシングの例示的な実現を示している。
【００２８】
ここで図１５を参照して、クロスバースイッチのブロック図が示されている。特に、複数のマルチプレクサ１５０２〜１５１０の各マルチプレクサは、Ｄｉ０〜Ｄｉ３と表わされる入力の各々を受取り、各マルチプレクサのための出力を生成するように結合されている。複数のマルチプレクサに提供される選択信号に基づいて、マルチプレクサ１５０２は出力Ｄｏ０を生成し、マルチプレクサ１５０４は出力Ｄｏ１を生成し、マルチプレクサ１５０６は出力Ｄｏ２を生成し、マルチプレクサ１５０８は出力Ｄｏ３を生成し、マルチプレクサ１５１０は出力Ｄｏ４を生成する。マルチプレクサ１５１０の拡大セクションは、トランジスタ１５１２〜１５１８を示しており、当該トランジスタ１５１２〜１５１８は、選択信号Ｓ１〜Ｓ４に基づいて、信号Ｄｉ０〜Ｄｉ３をそれぞれ受取るための入力に結合され、共通のノードにおいて出力信号Ｄｏ４に結合されている。図１５のマルチプレクサ構成が一例として示されているが、多重化機能を達成するためにトランジスタの他の構成が実装されてもよいということが理解されるべきである。図１５から明らかであるように、クロスバースイッチは、所与の数の信号をより少ない数の出力に、または所与の数の信号をより大きな数の出力にルーティングするように選択され得る。さらに、コンフィギュレーションデータとして提供されてコンフィギュレーションプロセスによって変更されなければならないプログラム可能なロジックデバイスの一般的なプログラム可能なインターコネクトのためのマルチプレクサ制御信号とは対照的に、クロスバースイッチの選択信号は、動的に変更可能である。したがって、図１５のクロスバースイッチは、図６〜図１４のルーティング回路のうちのいずれか、またはクロスバースイッチに実装され得る上記のその他の回路で使用され得る。
【００２９】
ここで図１６を参照して、実施例に係るプログラム可能なリソースを有するデバイスをプログラムするためのシステムのブロック図が示されている。特に、コンピュータ１６０２は、メモリ１６０６から回路設計１６０４を受取り、不揮発性メモリ１６０６に格納されるコンフィギュレーションビットストリームを生成するように結合されている。以下でより詳細に説明するように、回路設計は、ハードウェア記述言語（hardware description language：ＨＤＬ）において規定される回路設計などの高レベル設計であり得る。また、コンピュータは、コンフィギュレーションビットストリームを生成するソフトウェアを実行するように構成され得て、当該コンフィギュレーションビットストリームは、不揮発性メモリ１６０８に格納され、図１７において以下に記載される集積回路などのプログラム可能な集積回路であり得る集積回路１６１０に提供される。
【００３０】
ここで図１７を参照して、図２〜図１６の回路を含むプログラム可能なリソースを有するデバイスのブロック図が示されている。プログラム可能なリソースを有するデバイスは、プログラム可能なリソースを有する特定用途向け集積回路（ＡＳＩＣ）などの任意のタイプの集積回路デバイスに実装され得るが、他のデバイスは、専用のプログラム可能なロジックデバイス（ＰＬＤ）を備える。１つのタイプのＰＬＤは、コンプレックス・プログラマブル・ロジック・デバイス（ＣＰＬＤ）である。ＣＰＬＤは、互いに接続されるとともに、インターコネクトスイッチマトリクスによって入力／出力（Ｉ／Ｏ）リソースに接続される２つ以上の「機能ブロック」を含む。ＣＰＬＤの各々の機能ブロックは、プログラマブル・ロジック・アレイ（ＰＬＡ）またはプログラマブル・アレイ・ロジック（ＰＡＬ）デバイスにおいて用いられるのと同様の２レベルＡＮＤ／ＯＲ構造を含む。別のタイプのＰＬＤは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）である。典型的なＦＰＧＡにおいて、コンフィギュラブル・ロジック・ブロック（ＣＬＢ）のアレイは、プログラム可能な入力／出力ブロック（ＩＯＢ）に結合されている。ＣＬＢおよびＩＯＢは、プログラム可能なルーティングリソースの階層によって相互接続されている。これらのＣＬＢ、ＩＯＢおよびプログラム可能なルーティングリソースは、典型的にはオフチップメモリからＦＰＧＡのコンフィギュレーションメモリセルへコンフィギュレーションビットストリームをロードすることによってカスタマイズされる。これらのタイプのプログラム可能なロジックデバイスの両方の場合、デバイスの機能は、その目的のためにデバイスに与えられるコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。コンフィギュレーションデータビットは、揮発性メモリ（例えばＦＰＧＡおよびいくつかのＣＰＬＤにあるようなスタティックメモリセル）、不揮発性メモリ（例えばいくつかのＣＰＬＤにあるようなフラッシュメモリ）、またはその他のタイプのメモリセルに格納され得る。
【００３１】
図１７のデバイスは、ＦＰＧＡアーキテクチャ１４００を備え、当該ＦＰＧＡアーキテクチャ１４００は、マルチギガビットトランシーバ（ＭＧＴ）１７０１と、ＣＬＢ１７０２と、ランダムアクセスメモリブロック（ＢＲＡＭ）１７０３と、入力／出力ブロック（ＩＯＢ）１７０４と、コンフィギュレーションおよびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１７０５と、デジタル信号処理ブロック（ＤＳＰ）１７０６と、専用の入力／出力ブロック（Ｉ／Ｏ）１７０７（例えば、コンフィギュレーションポートおよびクロックポート）と、デジタルクロックマネージャ、アナログ−デジタルコンバータ、システムモニタリングロジックなどの他のプログラム可能なロジック１７０８とを含む、多数の異なるプログラム可能なタイルを有する。いくつかのＦＰＧＡは、例えばソフトウェアアプリケーションを実行するために使用され得る専用のプロセッサブロック（ＰＲＯＣ）１７１０も含む。
【００３２】
いくつかのＦＰＧＡにおいて、各々のプログラム可能なタイルは、プログラム可能なインターコネクト・エレメント（ＩＮＴ）１７１１を含み、ＩＮＴ１７１１は、隣接する各タイルの対応するインターコネクト・エレメントに対して規格化された接続を有する。したがって、まとめられたプログラム可能なインターコネクト・エレメントは、示されているＦＰＧＡのためのプログラム可能なインターコネクト構造を実現する。プログラム可能なインターコネクト・エレメント１７１１は、図１７の上部に含まれる例によって示されるように、同じタイル内でプログラム可能なロジック・エレメントに対する接続も含む。
【００３３】
例えば、ＣＬＢ１７０２は、ユーザロジックを実現するようにプログラムされ得るコンフィギュラブル・ロジック・エレメント（ＣＬＥ）１７１２と単一のプログラム可能なインターコネクト・エレメント１７１１とを含み得る。ＢＲＡＭ１７０３は、１つ以上のプログラム可能なインターコネクト・エレメントに加えて、ＢＲＡＭロジックエレメント（ＢＲＬ）１７１３を含み得る。ＢＲＡＭは、コンフィギュレーションロジックブロックの分散ＲＡＭから分離したた専用のメモリを含んでいる。通常、タイルに含まれるインターコネクト・エレメントの数は、タイルの高さに依存する。図示されている実施例において、ＢＲＡＭタイルは、５つのＣＬＢと同じ高さを有するが、他の数も使用されてもよい。ＤＳＰタイル１７０６は、適切な数のプログラム可能なインターコネクト・エレメントに加えて、ＤＳＰロジックエレメント（ＤＳＰＬ）１７１４を含み得る。ＩＯＢ１７０４は、プログラム可能なインターコネクト・エレメント１７１１の１つのインスタンスに加えて、例えば入力／出力ロジックエレメント（ＩＯＬ）１７１５の２つのインスタンスを含み得る。デバイスの接続の位置は、その目的のためにデバイスに与えられるコンフィギュレーションビットストリームのコンフィギュレーションデータビットによって制御される。プログラム可能なインターコネクトは、コンフィギュレーションビットストリームのビットに応答して、インターコネクト線を備える接続が、さまざまな信号を、プログラム可能なロジックにおいて実現される回路、または、ＢＲＡＭもしくはプロセッサなどの他の回路に結合するために用いられることを可能にする。
【００３４】
図示されている実施例において、ダイの中心付近の列領域は、コンフィギュレーション、クロック、および他の制御ロジックに使用される。この列から延在するｃｏｎｆｉｇ／ｃｌｏｃｋ分配領域１７０９は、ＦＰＧＡの幅方向にわたってクロックおよびコンフィギュレーション信号を分配するために使用される。図１７に示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的な列構造を分断させる追加のロジックブロックを含む。追加のロジックブロックは、プログラム可能なブロックおよび／または専用のロジックであり得る。例えば、図１７に示されるプロセッサブロックＰＲＯＣ１７１０は、ＣＬＢおよびＢＲＡＭのいくつかの列に及ぶ。
【００３５】
図１７のＦＰＧＡは、ＢＲＡＭ１７０３よりも大きな拡張メモリエレメント１７１６をさらに備える。拡張メモリエレメント１７１６は、回路１７００のブロックを参照して説明したさまざまなインターコネクト・エレメントから切離して、ＳＲＡＭブロックおよび専用のインターコネクト・エレメントを備え得て、回路１７００のブロックまたは回路１７００の外部のデバイスによって拡張メモリエレメントのメモリエレメントへのアクセスを可能にする。
【００３６】
なお、図１７は、例示的なＦＰＧＡアーキテクチャのみを示すことを意図している。列におけるロジックブロックの数、列の相対幅、列の数および順序、列に含まれるロジックブロックのタイプ、ロジックブロックの相対的サイズ、および図１７の上部に含まれるインターコネクト／ロジックの実現例は、純粋に例示である。例えば、実際のＦＰＧＡでは、２つ以上の隣接するＣＬＢの列は、通常は、ユーザロジックの効率的な実施を容易とするために、ＣＬＢがある場所ならどこでも含まれる。図１７の実施例は、プログラム可能なリソースを有する集積回路に関係するが、以下でより詳細に説明する回路および方法が、任意のタイプのＡＳＩＣにおいて実現されてもよい、ということが理解されるべきである。
【００３７】
したがって、図１７の要素の構成は、３６キロバイトメモリエレメントであり得るＢＲＡＭを含む２つのグループにＳＲＡＭを分割し、拡張メモリエレメント１７１６は、ＢＲＡＭよりも大きく、例えば３６Ｍｂであり得るメモリのブロックを備える。拡張メモリエレメント１７１６のより深いメモリを設けることによって、単位面積当たりより多くのビットが提供され、より大きなメモリを達成するために複数のＢＲＡＭをカスケード接続する必要がない。拡張メモリエレメント１７１６は、上記の、より特定的には図６〜図８に示されているメモリエレメントおよび専用のルーティング・インターコネクト・エレメントの構成、または、図９において実現されているような図６〜図８の構成を用いて実現されてもよい。
【００３８】
ここで図１８を参照して、図１７のデバイスのコンフィギュラブル・ロジック・エレメントのブロック図が示されている。特に、図１８は、図１７のコンフィギュレーションロジックブロック１７０２のコンフィギュラブル・ロジック・エレメントを単純な形態で図示している。図１８の実施例において、スライスＭ  １８０１は、４つのルックアップテーブル（ＬＵＴＭ）１８０１Ａ〜１８０１Ｄを含み、各々は、６つのＬＵＴデータ入力端子Ａ１〜Ａ６，Ｂ１〜Ｂ６，Ｃ１〜Ｃ６およびＤ１〜Ｄ６によって駆動され、各々は、２つのＬＵＴ出力信号Ｏ５およびＯ６を提供する。ＬＵＴ  １８０１Ａ〜１８０１ＤからのＯ６出力端子は、それぞれスライス出力端子Ａ〜Ｄを駆動する。ＬＵＴデータ入力信号は、入力マルチプレクサを介してＦＰＧＡインターコネクト構造によって供給されるが、入力マルチプレクサは、プログラム可能なインターコネクト・エレメント１８１１によって実現可能であり、ＬＵＴ出力信号は、インターコネクト構造にも供給される。スライスＭは、以下のものも含む。すなわち、出力端子ＡＭＵＸ〜ＤＭＵＸを駆動する出力選択マルチプレクサ１８１１Ａ〜１８１１Ｄ、メモリエレメント１８０２Ａ〜１８０２Ｄのデータ入力端子を駆動するマルチプレクサ１８１２Ａ〜１８１２Ｄ、組み合わせマルチプレクサ１８１６，１８１８および１８１９、バウンスマルチプレクサ回路１８２２〜１８２３、インバータ１８０５およびマルチプレクサ１８０６によって表わされる回路（ともに入力クロック経路における任意の反転を提供する）、ならびに、マルチプレクサ１８１４Ａ〜１８１４Ｄ，１８１５Ａ〜１８１５Ｄ，１８２０〜１８２１および排他的ＯＲゲート１８１３Ａ〜１８１３Ｄを有する桁上げロジックである。これらの全ての要素は、図１８に示されるようにともに結合されている。図１８に示されるマルチプレクサについて選択入力が示されていないが、当該選択入力は、コンフィギュレーションメモリセルによって制御される。すなわち、コンフィギュレーションメモリセルに格納されたコンフィギュレーションビットストリームのコンフィギュレーションビットは、マルチプレクサの選択入力に結合されて、マルチプレクサへの正しい入力を選択する。周知であるこれらのコンフィギュレーションメモリセルは、明確にするために図１８から省略されているが、同様に本明細書における他の選択された図からも省略されている。
【００３９】
図示されている実施例において、メモリエレメント１８０２Ａ〜１８０２Ｄの各々は、同期または非同期フリップフロップまたはラッチとして機能するようにプログラムされ得る。同期機能と非同期機能との間の選択は、Ｓｙｎｃ／Ａｓｙｎｃｈ選択回路１８０３をプログラムすることによって、スライス中の全ての４つのメモリエレメントに対してなされる。メモリエレメントがプログラムされて、Ｓ／Ｒ（セット／リセット）入力信号がセット機能を提供する場合、ＲＥＶ入力端子はリセット機能を提供する。メモリエレメントがプログラムされて、Ｓ／Ｒ入力信号がリセット機能を提供する場合、ＲＥＶ入力端子はセット機能を提供する。メモリエレメント１８０２Ａ〜１８０２Ｄは、クロック信号ＣＫによってクロックされ、当該クロック信号ＣＫは、例えばグローバルクロックネットワークまたはインターコネクト構造によって提供され得る。このようなプログラム可能なメモリエレメントは、ＦＰＧＡ設計の分野において周知である。各々のメモリエレメント１８０２Ａ〜１８０２Ｄは、登録された出力信号ＡＱ〜ＤＱをインターコネクト構造に提供する。ＬＵＴ  １８０１Ａ〜１８０１Ｄの各々が２つの出力信号Ｏ５およびＯ６を提供するので、ＬＵＴは、５つの共有入力信号（ＩＮ１〜ＩＮ５）を有する２つの５入力ＬＵＴ、または入力信号ＩＮ１〜ＩＮ６を有する１つの６入力ＬＵＴとして機能するように構成され得る。
【００４０】
図１８の実施例において、ＬＵＴＭ  １８０１Ａ〜１８０１Ｄの各々は、いくつかのモードのいずれかで機能し得る。ルックアップテーブルモードにおける場合、各々のＬＵＴは、入力マルチプレクサを介してＦＰＧＡインターコネクト構造によって供給される６つのデータ入力信号ＩＮ１〜ＩＮ６を有する。６４個のデータ値のうちの１つが、信号ＩＮ１〜ＩＮ６の値に基づいてコンフィギュレーションメモリセルからプログラム可能に選択される。ＲＡＭモードにおける場合、各々のＬＵＴは、共有アドレシングを有する単一の６４ビットＲＡＭまたは２つの３２ビットＲＡＭとして機能する。ＲＡＭ書込データは、入力端子ＤＩ１を介して（ＬＵＴ  １８０１Ａ〜１８０１Ｃのためのマルチプレクサ１８１７Ａ〜１８１７Ｃを介して）６４ビットＲＡＭに供給されるか、または入力端子ＤＩ１およびＤＩ２を介して２つの３２ビットＲＡＭに供給される。ＬＵＴ  ＲＡＭにおけるＲＡＭ書込動作は、マルチプレクサ１８０６からのクロック信号ＣＫ、およびマルチプレクサ１８０７からの書込イネーブル信号ＷＥＮによって制御されるが、マルチプレクサ１８０６およびマルチプレクサ１８０７は、クロックイネーブル信号ＣＥまたは書込イネーブル信号ＷＥのいずれかを選択的に通し得る。シフトレジスタモードでは、各々のＬＵＴは、２つの１６ビットシフトレジスタとして、または直列に結合されて単一の３２ビットシフトレジスタを形成する２つの１６ビットシフトレジスタをであるように機能する。入力端子ＤＩ１およびＤＩ２の一方または両方を介して、シフトイン信号が提供される。１６ビットシフトアウト信号および３２ビットシフトアウト信号は、ＬＵＴ出力端子を介して提供され得て、また、３２ビットシフトアウト信号は、ＬＵＴ出力端子ＭＣ３１を介してより直接的に提供され得る。ＬＵＴ  １８０１Ａの３２ビットシフトアウト信号ＭＣ３１は、また、出力選択マルチプレクサ１８１１ＤおよびＣＬＥ出力端子ＤＭＵＸを介して、シフトレジスタ連鎖のための一般的なインターコネクト構造へと提供され得る。したがって、上記の回路および方法は、図１７および図１８のデバイスなどのデバイス、またはその他の好適なデバイスにおいて実現可能である。
【００４１】
図１９の実施例によれば、印刷回路基板などの回路基板１９０２は、マルチダイ集積回路１９０４を受けるように構成されている。マルチダイ集積回路１９０４は、インターポーザ回路１９０８を受けるように結合された基板１９０６を備える。インターポーザ１９０８は、ＦＰＧＡチップ１９１０およびＤＲＡＭチップ１９１２回路などの複数の集積回路チップまたはダイを基板１９０６に結合することを可能にする。はんだボール１９１４は、シリコンビア（ＴＳＶ）などのさまざまなインターコネクト１９１６を介して、さまざまなチップから回路基板１９０２に信号を結合することを可能にする。また、インターコネクト１９１８は、マルチダイ集積回路のさまざまなチップ間の信号のルーティングを可能にする。インターポーザ回路１９０８は、さまざまな金属層を有するシリコン基板であってもよく、当該金属層は、ＦＰＧＡチップとＤＲＡＭチップとの間、またはチップのうちの１つと基板１９０６との間での信号のルーティングを可能にするインターコネクト・エレメントを備える。しかし、インターポーザ回路は、示されているように信号のルーティングを可能にする導電性要素を有するいかなる材料であってもよい。ＦＰＧＡチップ１９１０およびＤＲＡＭチップ１９１２の全ての回路は単一のダイ上に実装され得るが、図１９の実施例では、ＦＰＧＡチップ１９１０およびＤＲＡＭチップ１９１２のさまざまな回路のより効率的な実装が可能になる。例えば、いくつかの回路は、特定の寸法のトランジスタを形成するプロセスなどの１つのプロセスに従って製造された集積回路チップにより効率的に実装され得るが、他の回路は、別のプロセスに従って製造された集積回路チップにより効率的に実装され得る。したがって、図１９の構成は、図９の回路を実現するために使用され得て、ＤＲＡＭ９０２は、ＤＲＡＭ１９１２として実現され、複数のメモリエレメント９２４〜９３０は、基板１９０６ではＳＲＡＭまたはＥＤＲＡＭとして実現される。ＤＲＡＭインターフェース９２２およびプログラム可能なリソースインターフェース９３２は、基板１９０６上に、またはインターポーザ１９０８の一部として実装され得る。
【００４２】
ここで図２０を参照して、フローチャートは、集積回路デバイスにメモリを実装する方法を示している。特に、ブロック２００２において、プログラム可能なインターコネクト・エレメントに結合されたプログラム可能なリソースを実装し、プログラム可能なインターコネクト・エレメントは、プログラム可能なリソースとの信号の通信を可能にする。プログラム可能なインターコネクトは、例えば図１７のＩＯＢまたはＣＬＥに関連付けられたインターコネクト・エレメントであってもよい。ブロック２００４において、複数のメモリブロックを設け、ブロック２００６において、専用のインターコネクト・エレメントを複数のメモリブロックに結合する。複数のメモリブロックは、例えば図１７の拡張メモリエレメント１７１６であってもよい。ブロック２００８において、ＤＲＡＭブロックを実装し得て、専用のインターコネクト・エレメントは、ＤＲＡＭブロックと複数のメモリブロックとの間に実装され得る。図２０の方法のさまざまな要素は、記載されているような図１〜図１９の回路を用いて、または何らかの他の好適な回路を用いて実現され得る。方法の特定の要素について説明しているが、方法のさらなる要素または要素２００２〜２００８に関連するさらなる詳細が図１〜図１９の開示に従って実現されてもよい、ということが理解されるべきである。
【００４３】
したがって、メモリを有する新規の集積回路デバイスおよび集積回路デバイスにメモリを実装する方法について説明してきたということが理解できる。開示されている発明を組込む多数の代替例および等価物が存在するということが当業者によって理解されるであろう。その結果、本発明は、上記の実施例によって限定されるものではなく、以下の特許請求の範囲によってのみ限定される。
【図１】
0006573834.tif 000002
【図２】
0006573834.tif 000003
【図３】
0006573834.tif 000004
【図４】
0006573834.tif 000005
【図５】
0006573834.tif 000006
【図６】
0006573834.tif 000007
【図７】
0006573834.tif 000008
【図８】
0006573834.tif 000009
【図９】
0006573834.tif 000010
【図１０】
0006573834.tif 000011
【図１１】
0006573834.tif 000012
【図１２】
0006573834.tif 000013
【図１３】
0006573834.tif 000014
【図１４】
0006573834.tif 000015
【図１５】
0006573834.tif 000016
【図１６】
0006573834.tif 000017
【図１７】
0006573834.tif 000018
【図１８】
0006573834.tif 000019
【図１９】
0006573834.tif 000020
【図２０】
0006573834.tif 000021