(57)【特許請求の範囲】
【請求項１】
回路がフィールドプログラムされる前に専用メモリコントローラ回路を含むプログラマブル回路を有するデバイスを備える装置であって、前記メモリコントローラ回路は前記デバイス外部のメモリを制御するように構成され、
前記デバイスは前記回路が実現される集積回路を含み、前記集積回路は複数のブロックを有し、
前記メモリコントローラ回路は複数の回路セクションを含み、前記回路セクションの各々は前記ブロックのそれぞれ１つ内で実現され、
前記回路はインターコネクト構造を含み、前記インターコネクト構造は、電気信号を選択的にルーティングする複数のフィールドプログラマブルインターコネクトセクションを有し、前記インターコネクトセクションの各々は、前記ブロックのそれぞれ１つにおいて実現され、前記ブロック中の前記回路セクションに結合される、装置。
【請求項２】
前記メモリコントローラ回路の複数の別個の回路セクションは、前記集積回路内で互いから物理的に離隔され、前記複数の回路セクションは、
前記メモリコントローラ回路に対して転送されるデータを一時的に記憶する複数のデータポートセクションと、
前記メモリコントローラ回路に対するデータの転送を容易にする複数のインターフェイスセクションと、
電気信号を選択的にルーティングし、かつ、前記集積回路の共通のインターコネクト構造のそれぞれの部分である複数のフィールドプログラマブルインターコネクトセクションとを含む、請求項１に記載の装置。
【請求項３】
前記インターコネクト構造は、フィールドプログラミングに応答して電気信号をルーティングするルーティング回路を各々がその中に有する第１、第２および第３のフィールドプログラマブルインターコネクトセクションを含み、前記第１のインターコネクトセクションは前記メモリコントローラ回路に配線接続され、前記第１のインターコネクトセクションは、フィールドプログラミングの後に、
前記第１のインターコネクトセクション内の前記ルーティング回路が前記メモリコントローラ回路と前記第２のインターコネクトセクションとの間で電気信号を転送する構成、および、
前記メモリコントローラ回路が、前記メモリコントローラ回路の外部の回路間における前記電気信号をルーティングするために使用されていないときに、前記第１のインターコネクトセクション内の前記ルーティング回路が前記メモリコントローラ回路をバイパスしながら前記第１のインターコネクトセクションを通して前記第２のインターコネクトセクションと前記第３のインターコネクトセクションとの間で電気信号を転送する構成、のうちの一方を有する、請求項１に記載の装置。
【請求項４】
前記集積回路は前記メモリコントローラ回路が実現される細長い領域を含み、前記メモリコントローラ回路は前記細長い領域に沿って分散配置される、請求項１に記載の装置。
【請求項５】
前記回路は、
クロック信号を生成するクロック生成回路と、
前記クロック信号を搬送するクロックバスとを含み、
前記メモリコントローラ回路は前記クロックバスに結合される、請求項４に記載の装置。
【請求項６】
前記集積回路は前記クロックバスが延在するクロック分配領域を有し、
前記細長い領域の部分は、前記細長い領域が重なった領域および重なっていない領域を有するように前記クロック分配領域によって重ねられ、
前記重なった領域は前記重なっていない領域のうち少なくとも１つによって分離され、
前記メモリコントローラ回路は前記重なっていない領域で実現される、請求項５に記載の装置。
【請求項７】
前記回路は、前記メモリコントローラ回路に結合され、前記メモリコントローラ回路に対してデータ転送を搬送するメモリインターフェイスを有し、前記回路セクションの各々は、
前記メモリインターフェイスを通したデータの転送を容易にするインターフェイス回路を有するインターフェイスセクション、
前記メモリインターフェイスを通したデータ転送に係るデータを一時的に記憶する記憶素子を有するデータポートセクション、および、
前記メモリコントローラ回路の動作を制御する回路を有する制御セクション、のうち１つであり、
前記データポートセクションは、フィールドプログラムの間に、前記集積回路内の他の回路からデータを受信するように、または、前記集積回路内の前記他の回路へデータを送信するように設定可能であるとともに、フィールドプログラムに引き続く一方向である、請求項１に記載の装置。
【請求項８】
デバイスを作製するステップを備える方法であって、前記作製するステップは、回路がフィールドプログラムされる前に専用メモリコントローラ回路を含むプログラマブル回路を形成するステップを含み、前記メモリコントローラ回路は前記デバイス外部のメモリを制御するように構成され、
複数のブロックを有する集積回路中に前記メモリコントローラ回路を実現するステップを含み、前記メモリコントローラ回路は前記ブロックのそれぞれ１つの中に各々が実現される複数の回路セクションを有し、さらに
電気信号を選択的にルーティングする複数のフィールドプログラマブルインターコネクトセクションを有するインターコネクト構造を形成するステップを含み、前記インターコネクト構造を形成するステップは、前記インターコネクトセクションの各々が前記ブロックのそれぞれ１つにおいて実現され、そのブロック中の前記回路セクションに配線接続されるように実行される、方法。
【請求項９】
前記回路を形成するステップは、前記集積回路中に前記回路を実現するステップを含み、前記実現するステップは、前記メモリコントローラ回路中に複数の別個の回路セクションを形成するステップを含み、前記回路セクションを形成するステップは、前記回路セクションが前記集積回路内で互いから物理的に離隔されるように実行され、前記回路セクションを形成するステップは、
前記メモリコントローラ回路に対して転送されるデータを一時的に記憶し、各々が前記回路セクションのそれぞれ１つの中にある複数のデータポートセクションを形成するステップと、
前記メモリコントローラ回路に対するデータの転送を容易にし、各々が前記回路セクションのそれぞれ１つの中にある複数のインターフェイスセクションを形成するステップと、
共通のインターコネクト構造のそれぞれの部分であり、各々が前記回路セクションのそれぞれ１つの中にある、電気信号を選択的にルーティングする複数のフィールドプログラマブルインターコネクトセクションを形成するステップとを含む、請求項８に記載の方法。
【請求項１０】
各々がその中にルーティング回路を有する、第１、第２、および第３のフィールドプログラマブルなインターコネクトセクションを有する前記インターコネクト構造を形成するステップと、
前記ルーティング回路をフィールドプログラミングするステップと、
前記フィールドプログラミングに応答して前記ルーティング回路を用いて電気信号をルーティングするステップとをさらに含む、請求項８に記載の方法。
【請求項１１】
前記インターコネクト構造を形成するステップは、前記第１のインターコネクトセクションを前記メモリコントローラ回路に配線接続するステップを含み、
前記ルーティング回路をプログラミングするステップは、前記ルーティング回路に、
前記第１のインターコネクトセクションを通して前記メモリコントローラ回路と前記第２のインターコネクトセクションとの間で電気信号を転送するステップ、および、
前記メモリコントローラ回路が、前記メモリコントローラ回路の外部の回路間における前記電気信号をルーティングするために使用されていないときに、前記メモリコントローラ回路をバイパスしながら前記第１のインターコネクトセクションを通して前記第２のインターコネクトセクションと前記第３のインターコネクトセクションとの間で電気信号を転送するステップ、のうち１つを実施させる、請求項１０に記載の方法。
【請求項１２】
前記回路を形成するステップは、
前記メモリコントローラ回路が実現される細長い領域を有する前記集積回路中に前記回路を実現するステップと、
前記細長い領域に沿って前記メモリコントローラ回路を分散配置させるステップとを含む、請求項８に記載の方法。
【請求項１３】
前記複数のデータポートの各々は、フィールドプログラムの間に、前記メモリコントローラ回路から前記集積回路内の前記他の回路へデータを送信するように、または、前記集積回路内の他の回路から前記メモリコントローラ回路へデータを受信するように設定可能であるとともに、フィールドプログラムに引き続く一方向である、請求項２に記載の装置。
【請求項１４】
前記複数のデータポートの各々は、フィールドプログラムの間に、前記メモリコントローラ回路から前記集積回路内の前記他の回路へデータを送信するように、または、前記集積回路内の他の回路から前記メモリコントローラ回路へデータを受信するように設定可能であるとともに、フィールドプログラムに引き続く一方向である、請求項９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
この出願は、米国特許法第１１９条に基づき、２００９年１月３１日に出願され、「メモリコントローラのための装置および方法」（代理人管理番号ＸＰ−３２４１ＵＳ）と題された米国仮特許出願番号第６１／１４８，９２６号、および２００９年１月３１日に出願され、「良好な性能および低コストを与える高度な集積回路のためのアーキテクチャ」（代理人管理番号ＸＰ−３２４５ＵＳ）と題された米国仮特許出願番号第６１／１４８，９２７号の優先権を主張する。これらの仮特許出願の両者の開示はその全体がここに引用により援用されている。
【０００２】
発明の分野
発明の実施形態はメモリ制御に関する。より特定的には、発明の実施形態はプログラマブルデバイスを用いたメモリ制御に関する。
【背景技術】
【０００３】
発明の背景
プログラマブルロジックデバイス（ＰＬＤ）は、特定された論理機能を実行するようにプログラム可能な周知の種類の集積回路である。ＰＬＤの一種であるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は典型的に、プログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入力／出力ブロック（ＩＯＢ）、コンフィギュラブルロジックブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含み得る。
【０００４】
各々のプログラマブルタイルは典型的に、プログラマブルインターコネクトおよびプログラマブルロジックの両者を含む。プログラマブルインターコネクトは典型的に、プログラマブルインターコネクトポイント（ＰＩＰ）によって相互接続された異なる長さの多数のインターコネクト配線を含む。プログラマブルロジックは、たとえば、関数生成器、レジスタ、算術論理などを含み得るプログラマブル素子を用いてユーザ設計のロジックを実現する。
【０００５】
プログラマブルインターコネクトおよびプログラマブルロジックは典型的に、プログラマブル素子がどのように構成されるかを規定する内部構成メモリセルにコンフィギュレーションデータのストリームをロードすることによってプログラムされる。コンフィギュレーションデータは外部デバイスによりメモリから（たとえば外部ＰＲＯＭから）読み出されたりＦＰＧＡに書き込まれたりし得る。そうして、個別のメモリセルの集合的な状態がＦＰＧＡの機能を決める。
【０００６】
別の種類のＰＬＤはコンプレックスプログラマブルロジックデバイスまたはＣＰＬＤである。ＣＰＬＤは、共に接続されるとともに、インターコネクトスイッチマトリックスによって入力／出力（Ｉ／Ｏ）リソースに接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各々の機能ブロックは、プログラマブルロジックアレイ（ＰＬＡ）およびプログラマブルアレイロジック（ＰＡＬ）デバイスで用いられるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤにおいて、コンフィギュレーションデータは典型的に不揮発性メモリ内のチップ上に記憶される。いくつかのＣＰＬＤでは、コンフィギュレーションデータは不揮発性メモリ内のチップ上に記憶され、次に初期コンフィギュレーション（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【０００７】
これらのプログラマブルロジックデバイス（ＰＬＤ）のすべてについて、デバイスの機能性は、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（たとえばＦＰＧＡおよびいくつかのＣＰＬＤのようなスタティックメモリセル）、不揮発性メモリ（たとえばいくつかのＣＰＬＤにおけるようなＦＬＡＳＨメモリ）、またはいずれの他の種類のメモリセルにも記憶可能である。
【０００８】
他のＰＬＤは、デバイス上のさまざまな素子をプログラマブルに相互接続する金属層などの処理層を適用することによってプログラムされる。これらのＰＬＤはマスクプログラマブルデバイスとして公知である。ＰＬＤは、たとえば、ヒューズまたはアンチヒューズ技術を用いる他のやり方で実現することもできる。「ＰＬＤ」および「プログラマブルロジックデバイス」という用語はこれらの例示的なデバイスを含むがこれらに限定されるものではなく、部分的にしかプログラマブルでないデバイスも包含する。たとえば、１つの種類のＰＬＤは、ハードコードされたトランジスタロジックとハードコードされたトランジスタロジックをプログラマブルに相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ＰＬＤデバイス内のプログラマブルスイッチファブリックは、ＰＬＤ外部のメモリデバイスへまたはそれからデータを転送する必要があり得、ＰＬＤ内の回路を外部メモリデバイスにインターフェイスするメモリコントローラを設けることが有利である可能性がある。１つの方策は、ＰＬＤ外部のスタンドアローンデバイスであるメモリコントローラを設けることである。別の方策は、ＰＬＤのフィールドプログラミングを行なうことにより、フィールドプログラミングの間にメモリコントローラを汎用回路要素からＰＬＤ内に生成することである。これらの既存の方策は一般的にそれらの意図される目的には十分であったが、すべての点において完全に満足がいくものであるわけではなかった。
【課題を解決するための手段】
【００１０】
発明の概要
発明の１つの実施形態は、回路がフィールドプログラムされる前に専用メモリコントローラ回路を含むプログラマブル回路を有するデバイスを含む装置に係る。
【００１１】
発明の別の実施形態はデバイスを作製するステップを含む方法に係り、作製するステップは、回路がフィールドプログラムされる前に専用メモリコントローラ回路を含むプログラマブル回路を形成するステップを含む。
【図面の簡単な説明】
【００１２】
【図１】いくつかの異なる種類のプログラマブルロジックブロックを含む高度なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャの概略図である。
【図２】図１のＦＰＧＡの代替的な実施形態であり、図１のＦＰＧＡと同じ一般的アーキテクチャを用い、いくつかの異なる種類のプログラマブルロジックブロックを含む別のＦＰＧＡアーキテクチャの概略図である。
【図３】図１および図２のＦＰＧＡの代替的な実施形態であり、専用メモリコントローラ回路を含むＦＰＧＡを内蔵する集積回路の概略上面図である。
【図４】図３のＦＰＧＡの選択された部分を示すとともに、集積回路およびＦＰＧＡ外部のメモリデバイスを示すハイレベルブロック図である。
【図５】図３の集積回路のいくつかの物理的に連続したセクションまたはブロックを示すとともに、これらのブロックの各々内に存在するＦＰＧＡのいくつかの回路を示す図である。
【図６】図３の集積回路の物理的に連続したセクションまたはブロックのアレイの概略上面図である。
【図７】図３の集積回路の細長い領域の概略上面図である。
【図８】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【図９】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【図１０】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【図１１】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【図１２】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【図１３】図７の細長い領域のセグメントをより詳細にかつ拡大した縮尺で示す概略上面図である。
【発明を実施するための形態】
【００１３】
詳細な説明
図１は、いくつかの異なる種類のプログラマブルロジックブロックを含む高度なフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャ１００の概略図である。たとえば、図１のＦＰＧＡアーキテクチャ１００は、マルチギガビットトランシーバ（ＭＧＴ）１０１、コンフィギュラブルロジックブロック（ＣＬＢ）１０２、ランダムアクセスメモリブロック（ＢＲＡＭ）１０３、入力／出力ブロック（ＩＯＢ）１０４、コンフィギュレーションおよびクロッキングロジック（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１０５、デジタル信号処理ブロック（ＤＳＰ）１０６、専用入力／出力ブロック（Ｉ／Ｏ）１０７（たとえばコンフィギュレーションポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログ−デジタル変換器、システムモニタロジックなどの他のプログラマブルロジック１０８を含む多数の異なるプログラマブルタイルを有する。ＦＰＧＡ１００は専用プロセッサブロック（ＰＲＯＣ）１１０も含む。
【００１４】
ＦＰＧＡ１００において、各々のプログラマブルタイルは、各々の隣接するタイル中の対応のインターコネクト素子へおよびそれからの標準化された接続部を有するプログラマブルインターコネクト素子（ＩＮＴ）１１１を含む。したがって、プログラマブルインターコネクト素子は、図示されるＦＰＧＡのためのプログラマブルインターコネクト構造を共に実現する。プログラマブルインターコネクト素子（ＩＮＴ）１１１は、図１の上部に含まれる例によって示されるように、同じタイル内にプログラマブルロジック素子へのおよびそれからの接続部も含む。
【００１５】
たとえば、ＣＬＢ１０２は、単一のプログラマブルインターコネクト素子（ＩＮＴ）１１１と共にユーザロジックを実現するようにプログラム可能なコンフィギュラブルロジック素子（ＣＬＥ）１１２を含むことができる。ＢＲＡＭ１０３は、１つ以上のプログラマブルインターコネクト素子に加えてＢＲＡＭロジック素子（ＢＲＬ）１１３を含むことができる。典型的に、タイルに含まれるインターコネクト素子の数はタイルの高さに依存する。図示される実施形態では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（たとえば４つ）を用いることも可能である。ＤＳＰタイル１０６は適切な数のプログラマブルインターコネクト素子に加えてＤＳＰロジック素子（ＤＳＰＬ）１１４を含むことができる。ＩＯＢ１０４は、たとえば、プログラマブルインターコネクト素子（ＩＮＴ）１１１の１つのインスタンスに加えて入力／出力ロジック素子（ＩＯＬ）１１５の２つのインスタンスを含むことができる。当業者には明らかなように、たとえばＩ／Ｏロジック素子１１５に接続される実際のＩ／Ｏパッドは典型的に、入力／出力ロジック素子１１５の領域に閉じ込められていない。
【００１６】
図示される実施形態では、（図１に影付きで示される）ダイの中央近くの列状の領域がコンフィギュレーションロジック、クロックロジックおよび他の制御ロジックのために用いられる。この列から延在する水平方向の領域１０９はＦＰＧＡの幅に亘ってクロックおよびコンフィギュレーション信号を分配するのに用いられる。他の実施形態では、コンフィギュレーションロジックは、ダイの角などのようなＦＰＧＡダイの異なる領域に位置してもよい。
【００１７】
図１に図示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的な列状構造を分断する付加的なロジックブロックを含む。付加的なロジックブロックはプログラマブルブロックおよび／または専用ロジックであり得る。たとえば、図１に示されるプロセッサブロックＰＲＯＣ１１０は、ＣＬＢおよびＢＲＡＭのいくつかの列に跨っている。
【００１８】
図１は１つの例示的なＦＰＧＡアーキテクチャを図示する。たとえば、１列の中のロジックブロックの数、列の相対的な幅、列の数および順番、列に含まれるロジックブロックの種類、ロジックブロックの相対的なサイズ、アレイ内のロジックブロックの位置、ならびに図１の上部に含まれるインターコネクト／ロジック実現例は純粋に例示的なものである。実際のＦＰＧＡでは、ＣＬＢの１つよりも多くの隣接する列は典型的にＣＬＢが現れる場所であればどこでも含まれて、ユーザロジックの効率的な実現を容易にするが、隣接するＣＬＢ列の数はＦＰＧＡの全体的なサイズと共に変化する。
【００１９】
図２は、図１のＦＰＧＡの代替的な実施形態であり、図１のＦＰＧＡと同じ一般的アーキテクチャを用い、いくつかの異なる種類のプログラマブルロジックブロックを含む別のＦＰＧＡアーキテクチャ２００の概略図である。図２のＦＰＧＡ２００は、ＣＬＢ２０２、ＢＲＡＭ２０３、（各々が４０個のＩ／Ｏパッドおよび付随するロジックを含む）「Ｉ／Ｏバンク」２０４に分割されるＩ／Ｏブロック、コンフィギュレーションおよびクロッキングロジック２０５、ＤＳＰブロック２０６、クロックＩ／Ｏ２０７、クロック管理回路（ＣＭＴ）２０８、コンフィギュレーションＩ／Ｏ２１７、ならびにコンフィギュレーションおよびクロック分配領域２０９を含む。
【００２０】
図２のＦＰＧＡ２００では、例示的なＣＬＢ２０２は、単一のプログラマブルインターコネクト素子（ＩＮＴ）２１１ならびに２つの異なる「スライス」、すなわちスライスＬ（ＳＬ）２１２およびスライスＭ（ＳＭ）２１３を含む。いくつかの実施形態では、２つのスライスは同じである（たとえばスライスＬの２つのコピーまたはスライスＭの２つのコピー）。他の実施形態では、２つのスライスは異なる能力を有する。いくつかの実施形態では、いくつかのＣＬＢは２つの異なるスライスを含み、いくつかのＣＬＢは２つの同様のスライスを含む。たとえば、いくつかの実施形態では、いくつかのＣＬＢ列は２つの異なるスライスを有するＣＬＢのみを含む一方で、他のＣＬＢ列は２つの同様のスライスを有するＣＬＢのみを含む。
【００２１】
図３は、ＦＰＧＡ２３０を内蔵する集積回路２２５である装置の概略上面図である。ＦＰＧＡ２３０は、図１のＦＰＧＡ１００および図２のＦＰＧＡ２００の代替的な実施形態である。ＦＰＧＡ２３０は、集積回路２２５の中央領域２３６に実現されるＦＰＧＡファブリック２３５を含む。ＦＰＧＡファブリック２３５は、図１および図２と関連して上述した種類であるたとえばタイル２３７および２３８などの複数のフィールドプログラマブルタイルを含む。
【００２２】
集積回路２２５は、中央領域２３６の一方側の細長い矩形領域２４０および２４１と、中央領域の反対側の細長い矩形領域２４２および２４３とを含む。細長い領域２４０は、入力／出力（Ｉ／Ｏ）領域２５１、２５２および２５３、ならびにＩ／Ｏ領域２５１と２５２との間に配設される位相ロックループ（ＰＬＬ）領域２５５を含む。細長い領域２４２は、Ｉ／Ｏ領域２６１、２６２および２６３、ならびにＩ／Ｏ領域２６１と２６２との間に配設される位相ロックループ（ＰＬＬ）領域２６５を含む。複数のＩＯＢ（図３には図示せず）は、Ｉ／Ｏ領域２５１−２５３および２６１−２６３の各々の中に実現される。ＩＯＢの各々は、図１と関連して上述したＩＯＢ１０４と同様であり、Ｉ／Ｏ受信器およびドライバ回路を含む。ＰＬＬ回路２６７および２６８はそれぞれＰＬＬ領域２５５および２６５中に実現される。ＰＬＬ回路２６７および２６８は安定したクロック信号を与える。
【００２３】
集積回路２２５は、複数の細長いクロック分配セグメント２７０−２７９を含むクロック分配領域も有する。クロック分配セグメント２７０は、細長い領域２４０と２４１との間に配設される。クロック分配セグメント２７１は、細長い領域２４２と２４３との間に配設される。クロック分配セグメント２７２−２７５はクロック分配セグメント２７０に対してほぼ垂直であり、クロック分配セグメント２７０に沿って間隔を空けた位置でクロック分配セグメント２７０に交差する。細長い領域２４１の間隔を空けられた部分はクロック分配セグメント２７２−２７５の部分に重なる。クロック分配セグメント２７６−２７９はクロック分配セグメント２７１に対してほぼ垂直であり、クロック分配セグメント２７１に沿って間隔を空けられた位置でクロック分配セグメント２７１に交差する。細長い領域２４３の間隔を空けられた部分はクロック分配セグメント２７６−２７９の部分に重なる。
【００２４】
クロック分配セグメント２７０−２７９内にクロックバス（図示せず）が実現される。ＰＬＬ回路２６７はクロック分配セグメント２７０および２７２−２７５内に実現されるクロックバスに電気的に結合されるため、ＰＬＬ回路２６７が与えるクロック信号をそのクロックバスを通して送信可能である。ＰＬＬ回路２６８は、クロック分配セグメント２７１および２７６−２７９内に実現されるクロックバスに電気的に結合されるため、ＰＬＬ回路２６８が与えるクロック信号をそのクロックバスを通して送信可能である。この態様では、ＰＬＬ回路２６７および２６８が与えるそれぞれのクロック信号はクロックバスを通して集積回路２２５のさまざまな領域に分配される。
【００２５】
ＦＰＧＡ２３０は、別個で独立している２つの専用メモリコントローラ回路を含む。メモリコントローラ回路はＦＰＧＡのフィールドプログラミングの前に存在し、ＦＰＧＡファブリック２３０とそれぞれの外部メモリデバイス（図３には図示せず）との間でのデータの転送を容易にする。ここで、メモリコントローラ回路の１つは、クロック分配セグメント２７２−２７５に重ならない細長い領域２４１の部分に実現され、事実上同一のメモリコントローラ回路は、クロック分配セグメント２７６−２７９に重ならない細長い領域２４３の部分に実現される。簡潔性および明瞭性のため、これらの２つのメモリコントローラ回路のうち１つだけを詳細に説明する。特に、細長い領域２４１内に実現されるメモリコントローラ回路の動作および物理的構成を以下により詳細に論じる。
【００２６】
図４は、ＦＰＧＡファブリック２３５、外部メモリデバイス２８５、およびＦＰＧＡ２３０の一部であり、細長い領域２４１（図３）内に実現されるメモリコントローラ回路２９０を示すハイレベルブロック図である。ＦＰＧＡファブリック２３５は、図１および図２と関連して上述した種類の２つのプログラマブルタイルを各々が含む８個の回路部２９３−３００、ならびにそのようなプログラマブルタイルを１６個含む回路部３１３を含むようにプログラム可能である。関連して働く回路部２９３−３００および３１３は、メモリコントローラ回路２９０を通してメモリデバイス２８５へおよびそれからデータを転送することができる。回路部２９３−３００および３１３は、ＦＰＧＡ２３０（図３）がフィールドプログラムされる場合にのみ存在するようになる。このように、ＦＰＧＡファブリック２３５中の回路部の具体的な構成は変化し得、図４の回路部２９３−３００および３１３は可能な構成を１つだけ表わし、例示的な目的のためにのみ示される。メモリデバイス２８５は、ダブルデータレート（ＤＤＲ、ＤＤＲ２、ＤＤＲ３またはＬＰＤＤＲ（モバイルＤＤＲ））などの標準に準拠する、当該技術分野で公知の従来のメモリデバイスである。しかしながら、これは代替的に何らかの他の種類のメモリデバイスであり得る。メモリコントローラ回路２９０は、制御部またはセクション３０１、インターフェイス部３１４、およびデータ記憶部３１５を含む。
【００２７】
制御部３０１は、ＦＰＧＡファブリック２３５の回路部３１３、データ記憶部３１５、およびインターフェイス部３１４に結合される。制御部３０１はコマンド記憶部３０２を含む。コマンド記憶部３０２は、ＦＰＧＡファブリック２３５からのコマンドを記憶する８個のコマンドポート３０３−３１０を有する。コマンドポート３０３−３１０に供給されるコマンドは、ＦＰＧＡファブリック２３５とメモリデバイス２８５との間のデータの転送を求める。８個のコマンドポート３０３−３１０は別個のものであり、累積的に４００を超える信号線を含む複数の信号バスを通してＦＰＧＡファブリック２３５の回路部３１３に結合される。制御部３０１は、コマンド記憶部３０２と関連して働いてメモリコントローラ回路２９０およびメモリデバイス２８５の動作を制御する付加的な回路を含む。
【００２８】
インターフェイス部３１４は、制御部３０１、データ記憶部３１５、およびメモリデバイス２８５に結合される。インターフェイス部３１４は２４個のインターフェイスセクション３２０−３４３を含み、そのうち３つを３２０、３２１および３４３として図４に見ることができる。インターフェイスセクション３２０−３４３は各々、メモリコントローラ回路２９０とメモリデバイス２８５との間で制御およびデータ信号の転送を容易にする回路を内蔵し、したがってＩ／Ｏセクションとも称され得る。たとえば、インターフェイスセクション３２０−３４３の各々は２つのＩＯＢ１０４（図１）を含む。インターフェイスセクション３２０−３４３は後でより詳細に論じる。
【００２９】
データ記憶部３１５は、フィールドプログラマブルで独立にコンフィギュラブルな８個のデータポートセクション（データポート）３５０−３５７を含み、制御部３０１、インターフェイス部３１４、およびＦＰＧＡファブリック２３５に結合される。具体的に、８ビットポートイネーブル信号バス３５８はデータポート３５０−３５７を制御部３０１に結合し、８本の６８ビット信号バスがそれぞれ回路部２９３−３００をデータポート３５０−３５７に結合する。８本の６８ビット信号バスの各々において、６８ビットのうち３２ビットがメモリ読出動作に用いられ、６８ビットのうち別の３２ビットがメモリ書込動作に用いられ、６８ビットのうち残余の４ビットがマスキング動作に用いられる。メモリ読出および書込動作は以下により詳細に論じる。マスキング動作は本開示の焦点ではないので、したがって本明細書中では論じない。
【００３０】
データポート３５０−３５７の各々は、ＦＰＧＡファブリック２３５からメモリデバイス２８５へまたはメモリデバイスからＦＰＧＡファブリックへ移動するデータを一時的に記憶するための回路を含む。具体的に、データポート３５０−３５７は各々、記憶素子として働く先入れ先出し（ＦＩＦＯ）記憶デバイスを含む。開示される実施形態では、各々のＦＩＦＯ記憶デバイスは各々が３２ビットである６４ワードまで記憶することができるが、これらの記憶デバイスは代替的に何らかの他の構成を有し得る。データポート３５０−３５７は各々、ＦＰＧＡファブリック２３５からデータを受信するかまたはこれにデータを供給するようにユーザのフィールドプログラミングによって構成可能である。フィールドプログラミングの後、データポート３５０−３５７の各々を通るデータの流れは１方向である。データポート３５０−３５７はそれぞれコマンドポート３０３−３１０に対応する。
【００３１】
以上で言及したように、データポート３５０−３５７は別個のものであり、かつ独立にコンフィギュラブルである。ＦＰＧＡファブリック２３５の観点からは、回路部２９３−３００の各々は、コマンドポート３０３−３１０のうち１つとデータポート３５０−３５７のうち１つとの組合せである、独立した別個のインターフェイスを見る。たとえば、回路部２９３は、コマンドポート３０３とデータポート３５０との組合せであるインターフェイスを見、回路部３００は、コマンドポート３１０とデータポート３５７との組合せであるインターフェイスを見る。しかしながら、回路部２９３−３００はコマンドポート３０３−３１０と直接に通信するわけではない。むしろ、回路部２９３−３００は回路部３１３と通信し、これが次にコマンドポート３０３−３１０と通信する。回路部２９３−３００は各々、他のものまたはそれ自体以外のインターフェイスの存在および動作について知らないことがある。たとえば、回路部２９３は、データポート３５１−３５７およびコマンドポート３０４−３１０の存在を認識していないかもしれず、それ自体がデータポート３５０およびコマンドポート３０３から形成されるそれ自体のインターフェイスを通してメモリコントローラ回路２９０全体を「所有している」かのように振る舞い得る。一方で、回路部３００はデータポート３５０−３５６およびコマンドポート３０３−３０９の存在を認識していないかもしれず、したがって、それがデータポート３５７およびコマンドポート３１０と通信している間は、回路部２９３が同時にデータポート３５０およびコマンドポート３０３と通信しているかもしれないことを認識していないかもしれない。この別個で独立してコンフィギュラブルなインターフェイスの配置は、インターフェイスが各々ポートの１形態ともみなされ得ることに鑑みて、マルチインターフェイス構造またはマルチポート構造とも称され得る。
【００３２】
メモリインターフェイス３７０はメモリコントローラ回路２９０とメモリデバイス２８５との間に存在する。メモリインターフェイス３７０は、メモリコントローラ回路２９０およびメモリデバイス２８５を結合する導電体を含む。以上で論じた制御およびデータ信号を含むさまざまな業界標準信号はメモリインターフェイス３７０を通って移動する。表１はこれらの信号の一覧を与える。
【００３３】
【表１】
0005242810.tif 000002
【００３４】
ここで、典型的なメモリ読出状況および典型的なメモリ書込状況の間に起こる動作を簡単に論じて、メモリコントローラ回路２９０がＦＰＧＡファブリック２３５とメモリデバイス２８５との間のデータ転送をどのように容易にするかの例を与える。この後の考察については、データポート３５１、３５３、３５４および３５５は、ＦＰＧＡファブリック２３５からデータを受信のみするようにフィールドプログラムされており、データポート３５０、３５２、３５６および３５７はＦＰＧＡファブリック２３５にデータを供給のみするようにフィールドプログラムされており、回路部２９３−３００は既にユーザのフィールドプログラミングによって形成されていると仮定する。明瞭性および簡潔性のため、以下で論じるメモリ読出およびメモリ書込動作の例は回路部２９３および２９４の観点のみを反映する。
【００３５】
メモリ読出は、ＦＰＧＡファブリック２３５中の回路部２９３がメモリデバイス２８５からデータを要求しかつこれを受信する動作である。これを達成するため、回路部２９３は回路部３１３に指示を送り、これは次にコマンドポート３０３を通して制御部３０１に指示を送り、特定されたメモリアドレスから開始して特定された量のデータを読出すことを要求する。応答して、制御部３０１はインターフェイス部３１４を通してメモリデバイス２８５にアドレスおよび制御信号を送る。これらの信号に応答して、メモリデバイス２８５は、特定されたアドレスから開始してデータにアクセスし、インターフェイス部３１４へ入来データとしてＤＤＲデータを出力する。インターフェイス部３１４は入来データを捕捉し、このデータをデータ記憶部３１５に出力する。データはデータポート３５０によって一時的に記憶され、次に回路部２９３によって取出される。
【００３６】
メモリ書込は、ＦＰＧＡファブリック２３５中の回路部２９４がメモリデバイス２８５にデータを送る動作である。これを達成するため、回路部２９４は、データポート３５１へ、データがそこに一時的に記憶されるようにデータを出力する。その後、回路部２９４は回路部３１３に指示を送り、これは次にコマンドポート３０４を通して制御部３０１に指示を送り、データポート３５１中のデータが特定されたアドレスから開始してメモリデバイス２８５中に記憶されることを要求する。制御部３０１はインターフェイス部３１４を通してメモリデバイス２８５と通信し、メモリのどのアドレスにデータを書込む必要があるかを特定する。次にコマンドポート３０４はインターフェイスセクション３２０−３４３のいくつかを通してデータを送る。次にデータはメモリデバイス２８５中の特定されたメモリアドレスに書込まれる。
【００３７】
以上の例は回路部２９３および２９４の観点からメモリ読出および書込動作を図示するのみであるが、他の回路部２９５−３００は、回路部２９３および２９４と同時にまた同様の態様でメモリ読出および／または書込動作を要求し得る。
【００３８】
集積回路２２５（図３）は、各々がＦＰＧＡ２３０（図３）の回路を内蔵する複数の物理的に連続したセクションまたはブロックを含む。図５は、これらの物理的に連続したセクションまたはブロックのうちいくつかを３８０−３８４で示し、これらのブロックの各々内に存在するＦＰＧＡのいくつかの回路を示す図である。特に、ブロック３８０−３８４はそれぞれ、ＦＰＧＡ２３０内の回路の部分である回路セクション３９０−３９４を内蔵する。ＦＰＧＡ２３０は、図５に破線で概略的に表わされるインターコネクト構造３９８も含む。インターコネクト構造３９８は、（図４のメモリデバイス２８５などの）外部デバイスから入来する信号をＦＰＧＡのさまざまなセクションにルーティングし、ＦＰＧＡ２３０から出て行く信号を外部デバイスにルーティングし、かつＦＰＧＡ内で移動する内部信号をルーティングする。インターコネクト構造３９８は、ブロック上に実現される複数のインターコネクトセクションを内蔵する。簡潔性のため、図５はブロック３８０−３８４内にそれぞれ実現される５個のそのようなインターコネクトセクション４００−４０４のみを示す。
【００３９】
インターコネクトセクション４００−４０４は、それぞれのセレクタセクション４２０−４２４およびそれぞれのプログラマブルメモリセルセクション４３０−４３４を含む。セレクタセクション４２０−４２４は各々、それぞれのインターコネクトセクション４０１−４０４を通って移動する電気信号をルーティングするスイッチまたはマルチプレクサなどのルーティング回路を含む。メモリセルセクション４３０−４３４はそれぞれセレクタセクション４２０−４２４に結合され、ユーザのフィールドプログラミングに従って所望のルーティング構成を実現するようセレクタセクションに指示する。回路セクション３９０−３９４はそれぞれ４４０−４４４での配線接続によってセレクタセクション４２０−４２４に結合される。
【００４０】
各々のインターコネクトセクションは、他のインターコネクトセクションのうちすべてではないがいくつかに電気的に直接に結合される。図５では、インターコネクトセクション４００はインターコネクトセクション４０３には直接に電気的に結合されていないが、それぞれの金属配線経路４５１、４５２および４５３を通して３つのインターコネクトセクション４０１、４０２および４０４に直接に電気的に結合されている。より具体的には、セレクタセクション４２０はそれぞれの金属配線経路４５１、４５２および４５３を通してセレクタセクション４２１、４２２および４２４に結合されている。しかしながら、セレクタセクション４２０と４２３との間に直接の金属配線経路は存在せず、したがってインターコネクトセクション４００と４０３との間には直接の電気的結合が存在しない。セレクタセクション４２３は、（セレクタセクション４２０に直接に結合される金属配線経路４５１−４５３との混同を回避するために破線で示される）金属配線経路４５４を通してセレクタセクション４２２に直接に結合される。金属配線経路４５１−４５４は各々、集積回路２２５（図３）のさまざまな層にビア、コンタクト、および金属インターコネクト配線を含む。
【００４１】
回路セクション３９０は、中間インターコネクトセクションを通して回路セクション３９１、３９２または３９４のいずれかと直接に通信することができる。図示のため、メモリセルセクション４３０−４３２および４３４がフィールドプログラミングの間に適切にプログラムされれば、回路セクション３９０によって送られる信号は、セレクタセクション４２０、金属配線経路４５１およびセレクタセクション４２１を通して回路セクション３９１にルーティング可能である。同様に、回路セクション３９０からの同じ信号は、セレクタセクション４２０、金属配線経路４５２およびセレクタセクション４２２を通して回路セクション３９２へルーティング可能である。回路セクション３９０からの同じ信号は、セレクタセクション４２０、金属配線経路４５３およびセレクタセクション４２４を通して回路セクション３９４にもルーティング可能である。しかしながら、同じ信号が回路セクション３９３にルーティングされるためには、信号は中間インターコネクトセクションを通してルーティングされる必要がある。たとえば、回路セクション３９０から送られる信号は、まず、セレクタセクション４２０および金属配線経路４５２を通って、中間インターコネクトセクションとして働くインターコネクトセクション４０２のセレクタセクション４２２へルーティングされ得る。次にセレクタセクション４２２はこの信号を回路セクション３９３へ金属配線経路４５４およびセレクタセクション４２３を通して回路セクション３９３へルーティングすることができる。セレクタセクション４２２はその信号を回路セクション３９２にルーティングする必要はないが、そのようにしてもよい。
【００４２】
図６は、集積回路２２５（図３）の物理的に連続したセクションまたはブロックのアレイの概略上面図である。図６中のこれらのブロックの各々は、図５中のブロック３８０−３８４の１つと同様である。図６は、これらのブロック同士の間の電気的結合の構成を説明するために用いられる。ブロックは、隣接する矩形のブロックの行および列として図６に概略的に図示され、ここではブロックの各々はインターコネクトセクション４００−４０４（図５）と同様の図示されないインターコネクトセクションを内蔵し、回路セクション３９０−３９４（図５）と同様の図示されない回路セクションを内蔵する。
【００４３】
図６のブロック同士の間の距離は、直交する軸に沿って測定される２点の間の距離である「マンハッタン距離」で測定される。手元の事件に適用すると、ブロック同士の間のマンハッタン距離は、列および行に沿った直交する方向のブロックという観点で測定される。一例として、ブロック４７８と４６０との間のマンハッタン距離は、ブロック４６０と４７１との間の距離およびブロック４７１と４７８との間の距離の和である。ブロック４７１と４６０との間のマンハッタン距離は２ブロックである。と言うのも、４６０からの信号はブロック４７１に達するには２ブロックの距離を移動しなければならないからである。同様に、ブロック４７１と４７８との間のマンハッタン距離も２ブロックである。したがって、ブロック４６０と４７８との間のマンハッタン距離は４ブロックである（２ブロック＋２ブロック）。
【００４４】
図６のブロックの各々はマンハッタン距離で１ブロックまたは２ブロック離れたすべてのブロックに直接に電気的に結合され、マンハッタン距離で４ブロック離れているブロックのうちすべてではないがいくつかにも直接に結合されている。一例として、ブロック４６０の観点からは、ブロック４６１−４６４は各々１ブロック離れており、ブロック４６５−４７２は各々２ブロック離れている。このように、ブロック４６０とブロック４６１−４６４および４６５−４７２との間には直接の電気的結合が存在する。直接の電気的結合はブロック４６０とマンハッタン距離で４ブロック離れたあるブロックとの間にも存在する。特に、ブロック４７３−４８０は各々４ブロック離れており、各々ブロック４６０に直接に電気的に結合されている。このように、ブロック４６１−４８０中のインターコネクトセクションは各々、ブロック４６０中のインターコネクトセクションへそれぞれの金属配線経路を通して直接に電気的に結合されている。図示の容易のため、ブロック４６０に直接に電気的に結合されるブロック４６１−４８０のすべては図６中にハッチングで指定されている。
【００４５】
具体的に図示されていないが、ブロック４６０について上述した結合パターンは、集積回路２２５（図３）の他のブロックの各々についても存在する。例として、ブロック４８１の観点から、ブロック４７１、４７０、４７８、および４８２は１ブロック離れており、ブロック４６４、４６３および４８３−４８８は２ブロック離れており、ブロック４６１および４８９−４９５は４ブロック離れている。このように、ブロック４８１中のインターコネクトセクションとブロック４７１、４７０、４７８、４８２、４６４、４６３、４８３−４８８、４６１、および４８９−４９５の各々の中のインターコネクトセクションとの間に直接の電気的結合が存在する。
【００４６】
しかしながら、ブロック４８１と４６０との間には直接の電気的結合が存在しない。このように、ブロック４６０中の回路セクションからブロック４８１中の回路セクションに信号をルーティングするには、各々がブロック４６０および４８１の両者に直接に電気的に結合されるブロック４６１、４６３、４６４、４７０、４７１、または４７８のうち１つにおけるインターコネクトセクションなどの中間インターコネクトセクションを通して信号をルーティングする必要があろう。インターコネクト構造３９８を通る各信号の具体的な経路は、インターコネクトセクションの各々の中のセレクタセクションを制御するメモリセルセクションのユーザフィールドプログラミングにおいて設定され、その後システム動作の間は変化しない。したがって、インターコネクト構造３９８は、所与のインターコネクトセクションからの信号がインターコネクト構造のいずれの他のインターコネクトセクションへもルーティングされるのを可能にする。
【００４７】
図７は、メモリコントローラ回路２９０（図４）が実現される細長い領域２４１（図３）の概略上面図である。細長い領域２４１は、メモリコントローラ回路２９０のそれぞれの回路セクションが実現される１つ以上のブロックを各々が内蔵する部分５０５−５１２を含む。これらのブロックは、図６と関連して上述されたブロックと同様である。図７に見られるように、メモリコントローラ回路２９０が実現される細長い領域２４１は、細長い領域の「リアルエステート」または区域の大部分を共に構成する部分５０５−５１２を有する。細長い領域２４１の残余の部分は、メモリコントローラ回路２９０の一部ではない他の回路を内蔵するブロックを含む。この他の回路はクロックバスおよび標準的な入力／出力回路を含む。図３と関連して以前論じたように、細長い領域２４１の間隔を空けられた部分は、クロック分配セグメント２７２−２７５（図３）の部分に重なる。これらの重なった部分は細長い領域２４１中で５１５−５１８で示される。
【００４８】
細長い領域２４１は６つのセグメント５２０−５２５に概念的に分けることができる。図８から図１３はこれらのそれぞれのセグメント５２０−５２５の概略上面図であり、これらのセグメントをより詳細にかつ拡大した縮尺で示す。セグメント５２０はブロック５３０−５４１を含み、セグメント５２１はブロック５４２および５４３を含み、セグメント５２２はブロック５４４−５５４を含み、セグメント５２３はブロック５５５−５６２を含み、セグメント５２４はブロック５６３−５６９を含み、かつセグメント５２５はブロック５７０−５７６を含む。
【００４９】
図５と関連して上述したインターコネクト構造３９８はインターコネクトセクション６００−６５１を含む。インターコネクトセクション６００−６５１は、物理的に分散配置された態様でセグメント５２０−５２５を通して実現される。具体的に、ブロック５３２、５３４、５３６、５３８−５４１、５４４−５４９、５５２−５５４、５５６、５５９、５６１、５６３、５６５、５６７、５６９、および５７２は、インターコネクトセクション６００−６０６、６１９−６２７、６３０、６３３、６３６、６３９、６４２、６４５、６４８、および６５１をそれぞれ内蔵する。ブロック５４２は、１２個のインターコネクトセクション６０７−６１８を内蔵する。ブロック５５５、５５７、５６０、５６２、５６４、５６６、５６８、および５７１はそれぞれ、２つのインターコネクトセクション６２８−６２９、６３１−６３２、６３４−６３５、６３７−６３８、６４０−６４１、６４３−６４４、６４６−６４７、および６４９−６５０を内蔵する。インターコネクトセクション６００−６５１の分散配置された実現例は、インターコネクト構造内のルーティングをフィールドプログラミングする際の潜在的な信号ボトルネックを低減するのを助ける。なぜなら、メモリコントローラ回路２９０に関する数多くの信号は単一の小さな区域へまたはその区域からすべてルーティングされる必要があるわけではないからである。
【００５０】
２４個のインターフェイスセクション３２０−３４３（図４）は、ブロック５３２、５３４、５３６、５３８−５４１、５４４−５４９、５５２−５５４、５５６、５５９、５６１、５６３、５６５、５６７、５６９、および５７２にそれぞれ実現され、それらのブロック中のインターコネクトセクション６００−６０６、６１９−６２４、６２５−６２７、６３０、６３３、６３６、６３９、６４２、６４５、６４８、および６５１にそれぞれ配線接続される。インターフェイスセクション３２０−３４３は各々、ＦＰＧＡ２３０（図３）に入るまたはこれを出て行く信号の伝播遅延を調節する、工場出荷時に設定されたプログラマブル遅延回路などの何らかの回路を含む。明瞭性および参照の容易のため、インターフェイスセクション３２０−３４３の各々によって扱われる信号の名称を、インターフェイスセクションが実現されるブロックの隣に示す。
【００５１】
インターフェイスセクション３２０、３２１、３２２、３２３、３２４、３２６、３２８、３３０、および３３１は、メモリアドレス信号Ａ０−Ａ１４を扱う。インターフェイスセクション３２１はリセット信号ＲＥＳＥＴも扱う。インターフェイスセクション３２２はクロックイネーブル信号ＣＫＥを扱う。インターフェイスセクション３３０はダイ上の終端信号ＯＤＴを扱う。インターフェイスセクション３２５および３２７はバンクアドレス信号ＢＡ０−ＢＡ２を扱う。インターフェイスセクション３２５は書込イネーブル信号ＷＥも扱う。インターフェイスセクション３２９はクロック信号ＣＬＫおよび反転クロック信号ＣＬＫ＿Ｎを扱う。インターフェイスセクション３３２は、行アドレスストローブ信号ＲＡＳおよび列アドレスストローブ信号ＣＡＳを扱う。インターフェイスセクション３３３は、上位バイトデータマスク信号ＵＤＭおよび下位バイトデータマスクＬＤＭを扱う回路部３３３Ａを含む。明瞭性のため、この回路部３３３Ａはインターフェイスセクション３３３とは別個に図示される。インターフェイスセクション３３６は実効的にはメモリデバイス２８５（図３）のクロック信号である下位バイトデータストローブ信号ＬＤＱＳ６６０を扱う。インターフェイスセクション３３６は、メモリデバイス２８５のクロック信号ＬＤＱＳ６６０がいつ発生するかの予測を与える図示されないプリアンブル検出回路も含む。インターフェイスセクション３４１は上位バイトデータストローブ信号ＵＤＱＳ６６５を扱う。
【００５２】
インターフェイスセクション３３４、３３５、３３７、３３８、３３９、３４０、３４２、および３４３は入来するデータ信号ＤＱ０−ＤＱ１５を扱う。インターフェイスセクション３３４、３３５、３３６、３３７、３３８、３３９、３４０、３４１、３４２、および３４３は各々、データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａ、および３４３Ａをそれぞれ含む。データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａ、および３４３Ａは各々メモリデバイス２８５（図４）から入来するデータ信号（ＤＱ０−ＤＱ１５）を捕捉し、ＤＤＲデータをシングルデータレート（ＳＤＲ）データに変換する。さらに明瞭性を与えるため、これらのデータ捕捉回路部はそれらのそれぞれのインターフェイスセクションとは別個に図示される。捕捉プロセスにおいて、データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａ、および３４３Ａは、メモリデバイスのクロックへの同期からＦＰＧＡ２３０（図３）の内部クロックとの同期へ、入来データを遷移させることも行なう。データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａ、および３４３Ａは次に、捕捉されたデータをデータ記憶部３１５（図４）中のデータポート３５０−３５７に出力する。インターフェイスセクション３３４、３３５、３３７、３３８、３３９、３４０、３４２、および３４３は、ＤＱ０−ＤＱ１５上のメモリに移動する、出力データ信号も扱う。データ捕捉回路部３３６Ａはクロック信号ＬＤＱＳ６６０を与え、これは次にデータ捕捉回路部３３４Ａ、３３５Ａ、３３７Ａ、および３３８Ａに結合される。データ捕捉回路部３４１Ａはクロック信号ＵＤＱＳ６６５を与え、これは次にデータ捕捉回路部３３９Ａ、３４０Ａ、３４２Ａおよび３４３Ａに結合される。
【００５３】
図９を参照して、ブロック５４２は、図４と関連して上述した制御部３０１を内蔵する。制御部３０１は１２個のインターコネクトセクション６０７−６１８に配線接続される。これらの１２個のインターコネクト接続部６０７−６１８はブロック５４２に沿って物理的に分散配置された態様で実現される。制御部３０１はバス６７０を通してインターフェイスセクション３２０−３３２の各々にも配線接続される。さらに、制御部３０１はバス６８０を通して、ブロック５５２中の回路部３３３Ａ、データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａ、および３４３Ａ、ならびにデータポート３５０−３５７に制御信号を与える。ブロック５４２は、細長い領域２４１（図３および図７）の長手方向に寸法６５５を有する。
【００５４】
図１１から図１３において、図４と関連して上述した８つのデータポート３５０−３５７は、それぞれブロック５５５、５５７、５６０、５６２、５６４、５６６、５６８、および５７１に実現される。ブロック５５５、５５７、５６０、５６２、５６４、５６６、５６８、および５７１の各々において、データポート３５０、３５１、３５２、３５３、３５４、３５５、３５６、または３５７は、そのブロック中の２つのインターコネクトセクション６２８−６２９、６３１−６３２、６３４−６３５、６３７−６３８、６４０−６４１、６４３−６４４、６４６−６４７、または６４９−６５０に配線接続される。図示されるように、ブロック５５５、５５７、５６０、５６２、５６４、５６６、５６８、および５７１は細長い領域２４２に沿って離隔され、他のブロックによって分離される。
【００５５】
図１１から図１３を参照して、ブロック５５５、５５７、５６０、５６２、５６４、５６６、５６８、および５７１は各々、寸法６５５（図９）と同じ方向に寸法６５６（図１３）を有する。ブロック５３２、５３４、５３６、５３８−５４１、５４４−５４９、５５２−５５４、５５６、５５９、５６１、５６３、５６５、５６７、５６９、および５７２は各々、同じ方向に寸法６５７（図１３）を有する。開示される実施形態では、ブロック５４２（図９）の寸法６５５は寸法６５６および６５７よりも実質的に大きく、寸法６５６は寸法６５７のほぼ２倍である。しかしながら、これらの相対的な寸法は代替的に異なり得る。
【００５６】
ブロック５３０−５３１、５３３、５３５、５３７、５４３、５５０、５５１、５５８、５７０、および５７３−５７６はメモリコントローラ回路２９０（図４）の一部ではない回路を内蔵する。ブロック５３７、５４３、５５８、および５７０はそれぞれ細長い領域２４１（図３−図４）の重なる部分５１５−５１８（図７）の中にあり、各々がクロックバスを内蔵する。ブロック５５０はクロック制御を行なう回路を内蔵する。ブロック５５１はＰＬＬ接続を扱う回路を内蔵する。具体的に、ブロック５５１中の回路は、データ捕捉回路部３３４Ａ、３３５Ａ、３３６Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４１Ａ、３４２Ａおよび３４３Ａ、ならびに回路部３３３Ａおよびデータポート３５０−３５７に結合される２つのクロック信号６９０を与える。ブロック５３０−５３１、５３３、５３５、および５７３−５７６は各々標準的な入力／出力回路を含む。
【００５７】
図１０−図１３は、３２ビットＤＱＩバス７００および３６ビットＤＱＯバス７１０も図示する。ＤＱＩバス７００は、それを通って外部メモリデバイス２８５（図４）からメモリコントローラ回路２９０（図４）にデータが移動するデータバスである。ＤＱＯバス７１０は、それを通ってメモリコントローラ回路２９０から外部メモリデバイス２８５へデータが移動するデータバスである。より具体的には、ＤＱＩバス７００については、捕捉回路部３３４Ａ、３３５Ａ、３３７Ａ、３３８Ａ、３３９Ａ、３４０Ａ、３４２Ａ、および３４３Ａは各々、外部メモリデバイス２８５からＤＱＩバス７００へ、捕捉された４ビットのデータを出力する。次にこのデータは３２ビット形式でＤＱＩバス７００からデータポート３５０−３５７へ転送される。ＤＱＯバス７１０については、データポート３５０−３５７の各々は、（本明細書中では詳細に論じない４つのマスクビットを含む）３６ビットのデータをＤＱＯバス７１０に出力し、次にデータは４ビット形式でＤＱＯバス７１０からインターフェイスセクション３３４、３３５、３３７、３３８、３３９、３４０、３４２、および３４３に転送される。２ビットのデータも、ＤＱＯバス７１０からブロック５５２中の回路部３３３Ａに転送される。
【００５８】
図８−図１３が図示するように、インターコネクトセクション６００−６５１はメモリコントローラ回路２９０（図４）に配線接続される。特に、インターコネクトセクション６００−６０６はそれぞれインターフェイスセクション３２０−３２６に配線接続され、インターコネクトセクション６０７−６１８は制御部３０１に配線接続され、インターコネクトセクション６１９−６２７はそれぞれインターフェイスセクション３２７−３３５に配線接続され、インターコネクトセクション６３０、６３３、６３６、６３９、６４２、６４５、６４８、および６５１はそれぞれインターフェイスセクション３３６−３４３に配線接続され、かつインターコネクトセクション６２８−６２９、６３１−６３２、６３４−６３５、６３７−６３８、６４０−６４１、６４３−６４４、６４６−６４７、６４９−６５０はそれぞれデータポート３５０−３５７に配線接続される。
【００５９】
上述したメモリコントローラ回路２９０（図４）の動作は通常動作モードに属する。通常動作モードでは、インターコネクトセクション６００−６５１は、メモリコントローラ回路２９０と、メモリコントローラ回路２９０の外部の回路との間で電気信号を転送する。しかしながら、メモリコントローラ回路２９０が不要の適用例については、ＦＰＧＡ２３０は、メモリコントローラ２９０をバイパスするようにフィールドプログラミングの間に構成可能である。バイパスモードでは、メモリコントローラ回路２９０は使用されないかまたはアクセスされない。換言すると、ＦＰＧＡファブリック２３５（図４）の観点からは、これはメモリコントローラ回路２９０が機能的に存在しないかのようなものである。それにも拘らず、（メモリコントローラ回路２９０に依然として配線接続される）インターコネクトセクション６００−６５１は、メモリコントローラ回路２９０の外部の回路同士の間を移動する電気信号をルーティングするのに依然として使用可能である。
【００６０】
選択された実施形態が詳細に図示され説明されたが、以下の請求項によって規定されるような本発明の精神および範囲から逸脱することなく置換および変更が可能であることを理解すべきである。
【図１】
0005242810.tif 000003
【図２】
0005242810.tif 000004
【図３】
0005242810.tif 000005
【図４】
0005242810.tif 000006
【図５】
0005242810.tif 000007
【図６】
0005242810.tif 000008
【図７】
0005242810.tif 000009
【図８】
0005242810.tif 000010
【図９】
0005242810.tif 000011
【図１０】
0005242810.tif 000012
【図１１】
0005242810.tif 000013
【図１２】
0005242810.tif 000014
【図１３】
0005242810.tif 000015