(57)【要約】  プログラム可能集積回路（ＩＣ）の例が、プロセッサと、複数のエンドポイント回路と、ＮｏＣマスタユニットＮＭＵ（２０２）、ＮｏＣスレーブユニットＮＳＵ（２０４）、ＮｏＣプログラム可能スイッチＮＰＳ（２０６）、複数のレジスタ（２１２）及びＮｏＣプログラミングインタフェイスＮＰＩ（２１０）を有するネットワーク・オン・チップＮｏＣ（１０６）とを含む。プロセッサはＮＰＩに結合され、プロセッサは、ＮＭＵからＮＳＵに至る間に物理チャンネルを設け、かつ複数のエンドポイント回路間にデータパスを設けるためにＮＰＩを通じてレジスタに画像をロードすることによってＮＰＳをプログラムするように構成されている。【選択図】図２
2021530806.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
複数のエンドポイント回路と、
ＮｏＣマスタユニット（ＮＭＵ）、ＮｏＣスレーブユニット（ＮＳＵ）、ＮｏＣプログラム可能スイッチ（ＮＰＳ）、複数のレジスタ及びＮｏＣプログラミングインタフェイス（ＮＰＩ）を有するネットワーク・オン・チップ（ＮｏＣ）と
を備え、
前記プロセッサは前記ＮＰＩに結合され、前記プロセッサは、前記ＮＭＵから前記ＮＳＵに至る間に物理チャンネルを設け、かつ前記複数のエンドポイント回路間にデータパスを設けるために前記ＮＰＩを通じて前記レジスタに画像をロードすることによって前記ＮＰＳをプログラムするように構成されている、
プログラム可能集積回路（ＩＣ）。
【請求項２】
前記プロセッサと前記複数のエンドポイント回路のうちの第１のエンドポイント回路とを含む処理システム
をさらに備え、
前記第１のエンドポイント回路は前記ＮＭＵの第１のＮＭＵに結合される、
請求項１に記載のプログラム可能ＩＣ。
【請求項３】
前記複数のエンドポイント回路のうちの第２のエンドポイント回路を有するプログラム可能論理部
をさらに備え、
前記第２のエンドポイント回路の各々は前記ＮＭＵのうちの１つ又は前記ＮＳＵのうちの１つに結合される、
請求項２に記載のプログラム可能ＩＣ。
【請求項４】
前記複数のエンドポイント回路のうちの第３のエンドポイント回路を有する構成固定回路
をさらに備え、
前記第３のエンドポイント回路は前記ＮＳＵのうちの第１のＮＳＵに結合される、
請求項３に記載のプログラム可能ＩＣ。
【請求項５】
各ＮＭＵは、
前記複数のエンドポイント回路のうちのエンドポイント回路に結合されるマスタインタフェイスと、
前記マスタインタフェイスで受け取ったインバウンドデータをパケット化するように構成されている、前記マスタインタフェイスに結合されるパケット化回路と、
前記マスタインタフェイスのクロックドメインと前記ＮｏＣのクロックドメインとの間のレートマッチング及び非同期データクロッシングを行なうように構成されているクロック管理回路と
を備える、請求項１に記載のプログラム可能ＩＣ。
【請求項６】
各ＮＭＵは、
前記ＮｏＣから受け取った戻りパケットを逆パケット化するように構成されている、前記マスタインタフェイスに結合される逆パケット化回路
をさらに備える、請求項５に記載のプログラム可能ＩＣ。
【請求項７】
各ＮＭＵは、
前記ＮｏＣに向かうパケットのレート制限を行なうように構成されているサービス品質（ＱｏＳ）回路と、
前記パケットを複数の仮想チャンネルのうちの仮想チャンネルにマッピングするように構成されている仮想チャンネル（ＶＣ）マッピング回路と
をさらに備える、請求項１に記載のプログラム可能ＩＣ。
【請求項８】
各ＮＳＵは、
前記ＮｏＣから受け取ったパケットを逆パケット化するように構成されている逆パケット化回路と、
前記複数のエンドポイント回路のうちのエンドポイント回路に結合されるスレーブインタフェイスと、
前記ＮｏＣのクロックドメインと前記スレーブインタフェイスのクロックドメインとの間のレートマッチング及び非同期データクロッシングを行なうように構成されているクロック管理回路と
を備える、請求項１に記載のプログラム可能ＩＣ。
【請求項９】
前記プログラム可能ＩＣは、他のプログラム可能ＩＣを有するマルチチップモジュールの一部であり、前記プログラム可能ＩＣの複数の前記ＮＰＳは、前記マルチチップモジュールの基板にある導体を通じて、前記他のプログラム可能ＩＣにある対応する複数のＮＰＳに結合される、請求項１に記載のプログラム可能ＩＣ。
【請求項１０】
前記複数のＮＰＳの各々はファースト・イン・ファースト・アウト（ＦＩＦＯ）を含む、請求項９に記載のプログラム可能ＩＣ。
【請求項１１】
前記プログラム可能ＩＣは他のプログラム可能ＩＣを有するマルチチップモジュールの一部であり、前記プログラム可能ＩＣにある前記ＮｏＣは前記他のプログラム可能ＩＣにあるＮｏＣに結合され、これにより、両方のプログラム可能ＩＣにわたる大規模ＮｏＣを形成する、請求項１に記載のプログラム可能ＩＣ。
【請求項１２】
プログラム可能集積回路（ＩＣ）中のネットワーク・オン・チップ（ＮｏＣ）をプログラムする方法であって、
前記プログラム可能ＩＣのプロセッサでブート時に第１のプログラムデータを受け取ることと、
前記プログラムデータをＮｏＣペリフェラルインタフェイス（ＮＰＩ）を通じて前記ＮｏＣ中のレジスタにロードして、前記ＮｏＣ中のＮｏＣマスタユニット（ＮＭＵ）とＮｏＣスレーブユニット（ＮＳＵ）との間に物理チャンネルを生成することと、
前記プログラム可能ＩＣをブートすることと
を備える方法。
【請求項１３】
前記プロセッサでランタイム中に第２のプログラムデータを受け取ることと、
前記第２のプログラムデータを前記ＮＰＩを通じて前記ＮｏＣ中の前記レジスタにロードすることであって、前記第２のプログラムデータによって前記ＮｏＣ中のＮｏＣプログラム可能スイッチ（ＮＰＳ）中のルーティングテーブルを設定する、ことと
をさらに備える請求項１２に記載の方法。
【請求項１４】
プログラム可能集積回路（ＩＣ）のネットワーク・オン・チップ（ＮｏＣ）中のエンドポイント回路からの要求を処理する方法であって、
前記要求を前記ＮｏＣ中のＮｏＣマスタユニット（ＮＭＵ）のマスタインタフェイスで受け取ることと、
前記ＮＭＵで前記要求のデータをパケット化することと、
パケット化されたデータを１つ以上のＮｏＣパケットスイッチ（ＮＰＳ）を通じて前記ＮｏＣ中のＮｏＣスレーブユニット（ＮＳＵ）に送ることと、
前記パケット化されたデータを前記ＮＳＵで逆パケット化することと、
逆パケット化されたデータを前記ＮＳＵのスレーブインタフェイスに供給することと
を備える方法。
【請求項１５】
前記ＮＳＵで応答を受け取ることと、
前記ＮＳＵで前記応答のデータをパケット化することと、
パケット化された前記応答のデータを前記１つ以上のＮＰＳを通じて前記ＮＭＵに送ることと、
パケット化された前記応答のデータを前記ＮＭＵで逆パケット化することと、
逆パケット化された前記応答のデータを前記ＮＭＵの前記マスタインタフェイスに供給することと
をさらに備える請求項１４に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、概して電子回路に関し、特に、プログラマブルデバイスのためのコンフィギュラブル・ネットワーク・オン・チップ（ＮｏＣ）と、チップ間の通信のためにＮｏＣを実施するマルチチップ構成とに関する。
【背景技術】
【０００２】
集積回路技術の進歩により、プロセッサコア、メモリコントローラ及びバスを含むようなシステム一式を単一の半導体チップに組み込むことが可能になってきた。この種のチップは一般的にシステム・オン・チップ（ｓｙｓｔｅｍ−ｏｎ−ｃｈｉｐ：ＳｏＣ）と称される。異なるＳｏＣには異なる用途に用いられる異なるコンポネントを組み込むことができる。ＳｏＣはプロセッサをベースとした従来の設計に勝る多くの効果を奏する。単一のデバイスにコンポネントを集積すればサイズを抑えつつ全体が高速化されるので、ＳｏＣはマルチチップ設計に代わる魅力的なものである。また、特定用途向け集積回路（ＡＳＩＣ）設計の開発期間はきわめて長く、その開発コストは巨額である傾向があるので、ＳｏＣはＡＳＩＣなどの完全にカスタマイズされたチップに代わる魅力的なものでもある。プログラム可能論理部を含み、プログラム可能論理部とＳｏＣとの利点を兼ね備えることができるプログラム可能な半導体チップを実施するコンフィギュラブルＳｏＣ（ｃｏｎｆｉｇｕｒａｂｌｅ  ＳｏＣ：ＣＳｏＣ）が開発されてきている。
【０００３】
ＳｏＣはパケットネットワーク構成を含むことができ、この構成は、ＳｏＣ中の論理ブロック間、たとえば、プログラム可能論理ブロック、プロセッサ、メモリなどの間のデータパケットをルーティングするネットワーク・オン・チップ（ＮｏＣ）として知られている。プログラム不能なＳｏＣのＮｏＣでは、トポロジが不規則であり、スタティックルートに設定されており、パスのサービス品質（ＱｏＳ）を変更できず、アドレスマッピングがプログラム不能であり、ルートがプログラム不能であり、エグレス／イングレスノードのインタフェイスプロトコル、幅及び周波数を変更できない。プログラムと構成の変更とをより一層行なうことができるＮｏＣをＳｏＣに設けることが望ましい。
【発明の概要】
【０００４】
プログラマブルデバイスのためのコンフィギュラブルＮｏＣを提供するための技術を説明する。一例では、プロセッサと、複数のエンドポイント回路と、ＮＭＵ、ＮＳＵ、ＮＰＳ、複数のレジスタ及びＮＰＩを有するＮｏＣとを含んでもよいプログラム可能ＩＣが開示される。さらに、プロセッサをＮＰＩに結合してもよく、プロセッサは、ＮＭＵからＮＳＵに至る間に物理チャンネルを設け、かつ複数のエンドポイント回路間にデータパスを設けるためにＮＰＩを通じてレジスタに画像をロードすることによってＮＰＳをプログラムするように構成されている。
【０００５】
いくつかの実施形態では、プログラム可能ＩＣは、プロセッサと複数のエンドポイント回路のうちの第１のエンドポイント回路とを含む処理システムをさらに含んでもよく、第１のエンドポイント回路はＮＭＵの第１のＮＭＵに結合される。
【０００６】
いくつかの実施形態では、プログラム可能ＩＣは、複数のエンドポイント回路のうちの第２のエンドポイント回路を有するプログラム可能論理部をさらに含んでもよく、第２のエンドポイント回路の各々はＮＭＵのうちの１つ又はＮＳＵのうちの１つに結合される。
【０００７】
いくつかの実施形態では、第２のエンドポイント回路の各々は、構成固定回路、又はプログラム可能論理部中で設定される回路の一方であってもよい。
【０００８】
いくつかの実施形態では、プログラム可能ＩＣは、複数のエンドポイント回路のうちの第３のエンドポイント回路を有する構成固定回路をさらに含んでもよく、第３のエンドポイント回路はＮＳＵのうちの第１のＮＳＵに結合される。
【０００９】
いくつかの実施形態では、各ＮＭＵは、複数のエンドポイント回路のうちのエンドポイント回路に結合されるマスタインタフェイスと、マスタインタフェイスで受け取ったインバウンドデータをパケット化するように構成されている、マスタインタフェイスに結合されるパケット化回路と、マスタインタフェイスのクロックドメインとＮｏＣのクロックドメインとの間のレートマッチング及び非同期データクロッシングを行なうように構成されているクロック管理回路とを含んでもよい。
【００１０】
いくつかの実施形態では、ＮＭＵは、ＮｏＣに向かうパケットのレート制限を行なうように構成されているＱｏＳ回路と、パケットを複数の仮想チャンネルのうちの仮想チャンネルにマッピングするように構成されているＶＣマッピング回路とをさらに含んでもよい。
【００１１】
いくつかの実施形態では、各ＮＭＵは、ＮｏＣから受け取った戻りパケットを逆パケット化するように構成されている、マスタインタフェイスに結合される逆パケット化回路をさらに含んでもよい。
【００１２】
いくつかの実施形態では、各ＮＳＵは、ＮｏＣから受け取ったパケットを逆パケット化するように構成されている逆パケット化回路と、複数のエンドポイント回路のうちのエンドポイント回路に結合されるスレーブインタフェイスと、ＮｏＣのクロックドメインとスレーブインタフェイスのクロックドメインとの間のレートマッチング及び非同期データクロッシングを行なうように構成されているクロック管理回路とをさらに含んでもよい。
【００１３】
いくつかの実施形態では、各ＮＳＵは、スレーブインタフェイスから受け取った戻りデータをパケット化するように構成されているパケット化回路と、ＮｏＣに向かうパケットのレート制限を行なうように構成されているＱｏＳ回路とをさらに含んでもよい。
【００１４】
いくつかの実施形態では、プログラム可能ＩＣは、別のプログラム可能ＩＣを有するマルチチップモジュールの一部であってもよく、プログラム可能ＩＣの複数のＮＰＳは、マルチチップモジュールの基板にある導体を通じて、他のプログラム可能ＩＣにある対応する複数のＮＰＳに結合される。
【００１５】
いくつかの実施形態では、複数のＮＰＳの各々はＦＩＦＯを含む。
【００１６】
一例では、プログラム可能ＩＣ中のＮｏＣをプログラムする方法が開示される。方法は、プログラム可能ＩＣのプロセッサでブート時に第１のプログラムデータを受け取ることと、プログラムデータをＮｏＣペリフェラルインタフェイス（ＮＰＩ）を通じてＮｏＣ中のレジスタにロードして、ＮｏＣ中のＮＭＵとＮＳＵとの間に物理チャンネルを生成することと、プログラム可能ＩＣをブートすることと含んでもよい。
【００１７】
いくつかの実施形態では、方法は、プロセッサでランタイム中に第２のプログラムデータを受け取ることと、第２のプログラムデータをＮＰＩを通じてＮｏＣ中のレジスタにロードすることとをさらに含んでもよい。
【００１８】
いくつかの実施形態では、第２のプログラムデータによってＮｏＣ中のＮＰＳ中のルーティングテーブルを設定する。
【００１９】
いくつかの実施形態では、第２のプログラムデータによってＮｏＣ中のＱｏＳパスを設定する。
【００２０】
いくつかの実施形態では、第２のプログラムデータによってＮｏＣ中のアドレス空間を設定する。
【００２１】
いくつかの実施形態では、第２のプログラムデータによってＮｏＣ中のイングレス及びエグレスインタフェイスプロトコル、幅並びに周波数を設定する。
【００２２】
一例では、プログラム可能ＩＣのＮｏＣ中のエンドポイント回路からの要求を処理する方法が開示される。方法は、要求をＮｏＣ中のＮＭＵのマスタインタフェイスで受け取ることと、ＮＭＵで要求のデータをパケット化することと、パケット化されたデータを１つ以上のＮＰＳを通じてＮｏＣ中のＮＳＵに送ることと、パケット化されたデータをＮＳＵで逆パケット化することと、逆パケット化されたデータをＮＳＵのスレーブインタフェイスに供給することとを含んでもよい。
【００２３】
いくつかの実施形態では、方法は、ＮＳＵで応答を受け取ることと、ＮＳＵで応答のデータをパケット化することと、パケット化された応答データを１つ以上のＮＰＳを通じてＮＭＵに送ることと、パケット化された応答データをＮＭＵで逆パケット化することと、逆パケット化された応答データをＮＭＵのマスタインタフェイスに供給することとをさらに含んでもよい。
【００２４】
このような態様と他の態様とを以下の詳細な説明を参照して理解することができる。
【００２５】
上述されている特徴を詳細に理解することができるように、上記で概説したものであるより具体的な説明を、実現例を参照することによって行なっている場合があり、実現例のいくつかが添付の図面に示されている。ただし、添付の図面は典型的な実現例を図示するのにすぎないので、添付の図面はその範囲に限定を課すものであるとみなすべきではない点に留意する。
【図面の簡単な説明】
【００２６】
【図１】一例に係るシステム・オン・チップ（ＳｏＣ）サブシステムが組み込まれたプログラマブルデバイスを示すブロック図である。
【図２】一例に係るネットワーク・オン・チップ（ＮｏＣ）を示すブロック図である。
【図３】一例に係るＮｏＣを通じたＳｏＣでのエンドポイント回路間の接続を示すブロック図である。
【図４】別の例に係るＮｏＣを示すブロック図である。
【図５】一例に係るＮｏＣをプログラムする方法を示すフロー図である。
【図６】一例に係るＮｏＣをプログラムする方法を示すフロー図である。
【図７】一例に係るエンドポイント回路間のＮｏＣを通じたデータパスを示すブロック図である。
【図８】一例に係る読出し／書込み要求及び応答を処理する方法を示すフロー図である。
【図９】一例に係るＮｏＣマスタユニット（ＮＭＵ）を示すブロック図である。
【図１０】一例に係るＮｏＣスレーブユニット（ＮＳＵ）を示すブロック図である。
【図１１】一例に係るマルチチップモジュール（ＭＣＭ）の断面である。
【図１２】一例に係る拡張ＮｏＣの概略図である。
【図１３】一例に係る差動ＩＣダイのＮＰＳ間の通信を示すブロック図である。
【図１４】一例に係る、本出願で説明されているＮｏＣを用いることができるプログラム可能集積回路を示すブロック図である。
【図１５】一例に係る図１４のプログラム可能ＩＣのシステム・オン・チップ（ＳｏＣ）の実現例を示すブロック図である。
【図１６】一例に係る図１４のプログラム可能ＩＣのフィールドプログラマブルゲートアレイ（ＦＰＧＡ）の実現例を示す。
【発明を実施するための形態】
【００２７】
理解を容易にするために、図に共通する同一の要素を指し示すのに、可能な場合には同一の参照番号を用いた。ある例の要素を別の例に組み込むことが有効であると考えられる。
【００２８】
以下、図を参照して様々な特徴を説明する。図が一定の縮尺で描かれていたりそうでなかったりする場合があり、すべての図にわたって同様の構成又は同様の機能の要素が同様の参照番号で表わされている点に留意するべきである。図が特徴の説明を容易にすることを意図しているにすぎない点に留意するべきである。当該図が、請求されている発明を網羅的に説明するものであったり、請求されている発明の範囲に限定を課すものであったりすることは意図していない。これに加えて、示されているすべての態様や効果を図示されている例が持っている必要はない。特定の例をともなって説明されている態様や効果は必ずしもその例に限定されることはなく、その他一切の例で実施することが可能である。これは、そのように示されていなかったり、そのように明記されていなかったりしたとしても可能である。
【００２９】
図１は、一例に係るシステム・オン・チップ（ＳｏＣ）サブシステム（ＳｏＣ１００）が組み込まれたプログラマブルデバイスを示すブロック図である。ＳｏＣ１００は、異なる機能を持つ回路を有する複数の領域を含む集積回路（ＩＣ）である。本例では、ＳｏＣ１００は、プログラム可能論理（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ：ＰＬ）領域１０２、処理システム（ｐｒｏｃｅｓｓｉｎｇ  ｓｙｓｔｅｍ：ＰＳ）１０４、ネットワーク・オン・チップ（ＮｏＣ）１０６及び入力／出力（ＩＯ）領域１０８を含む。いくつかの例では、ＳｏＣ１００は、メモリコントローラ、数理エンジン（ｍａｔｈ  ｅｎｇｉｎｅ）などの構成固定回路（ｈａｒｄｅｎｅｄ  ｃｉｒｃｕｉｔ）１１０を含む。プログラム可能論理領域１０２は、特定の回路を形成するようにプログラムしたり設定したりすることができる任意の個数のコンフィギャラブル・ロジック・ブロック（ｃｏｎｆｉｇｕｒａｂｌｅ  ｌｏｇｉｃ  ｂｌｏｃｋ：ＣＬＢ）を含むことができる。ＰＳ１０４は１つ以上のプロセッサコアと付属するサポート回路とを含むことができる。たとえば、処理システムは所定の個数のＡＲＭベースの組込みプロセッサコアを含むことができる。ＮｏＣ１０６は、ＳｏＣ１００中のエンドポイント回路間でデータを共有するための相互接続ネットワークを含む。ＰＬ領域１０２、ＰＳ１０４、構成固定回路１１０及び／又はＩＯ領域１０８にエンドポイント回路を配置することができる。ＮｏＣ１０６は、専用のスイッチング部を有する高速データパスを含むことができる。一例では、ＮｏＣ１０６は水平のパスを含んだり、垂直のパスを含んだり、水平のパスと垂直のパスとの両方を含んだりする。ＩＯ領域１０８は、ＳｏＣ１００の外部の信号を送受信する入力／出力ブロック（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｂｌｏｃｋ：ＩＯＢ）などを含むことができる。図１に示されている領域の配置及び個数は例にすぎない。一般的には、ＳｏＣ１００は、１つ以上のＰＬ領域１０２と、ＰＳ１０４と、ＮｏＣ１０６とを含む。
【００３０】
図２は一例に係るＮｏＣ１０６を示すブロック図である。ＮｏＣ１０６は、ＮｏＣマスタユニット（ＮｏＣ  ｍａｓｔｅｒ  ｕｎｉｔ：ＮＭＵ）２０２、ＮｏＣスレーブユニット（ＮｏＣ  ｓｌａｖｅ  ｕｎｉｔ：ＮＳＵ）２０４、ネットワーク２１４、ＮｏＣペリフェラルインタコネクト（ＮｏＣ  ｐｅｒｉｐｈｅｒａｌ  ｉｎｔｅｒｃｏｎｎｅｃｔ：ＮＰＩ）２１０及びレジスタ２１２を含む。各ＮＭＵ２０２は、ＮｏＣ１０６にエンドポイント回路を接続するイングレス回路である。各ＮＳＵ２０４は、ＮｏＣ１０６をエンドポイント回路に接続するエグレス回路である。ＮＭＵ２０２がＮＳＵ２０４にネットワーク２１４を通じて接続される。一例では、ネットワーク２１４は、ＮｏＣパケットスイッチ２０６（ＮｏＣ  ｐａｃｋｅｔ  ｓｗｉｔｃｈ：ＮＰＳと称する）と、ＮｏＣパケットスイッチ２０６間にあるルーティング部２０８とを含む。各ＮｏＣパケットスイッチ２０６はＮｏＣパケットのスイッチングを行なう。ＮｏＣパケットスイッチ２０６がルーティング部２０８を通じて互いに接続され、また、ＮｏＣパケットスイッチ２０６がルーティング部２０８を通じてＮＭＵ２０２及びＮＳＵ２０４に接続されることで、複数の物理チャンネルを実施する。ＮｏＣパケットスイッチ２０６は物理チャンネル毎に複数の仮想チャンネルをサポートすることも行なう。ＮＰＩ２１０は、ＮＭＵ２０２、ＮＳＵ２０４及びＮｏＣパケットスイッチ２０６をプログラムする回路を含む。たとえば、ＮＭＵ２０２、ＮＳＵ２０４及びＮｏＣパケットスイッチ２０６がその機能を決めるレジスタ２１２を含むことができる。ＮＰＩ２１０は、レジスタ２１２に結合されて、機能を設定するようにレジスタ２１２のプログラミングを行なうペリフェラルインタコネクトを含む。ＮｏＣ１０６のレジスタ２１２は、割込み、ＱｏＳ、エラー処理及びレポート、トランザクション制御、電力管理、及びアドレスマッピング制御をサポートする。プログラムし直す前に使用可能状態で、書込み要求を用いてレジスタ２１２に書き込むなどしてレジスタ２１２を初期化することができる。ＮｏＣ１０６の設定データを不揮発メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ：ＮＶＭ）に記憶し、ＮｏＣ１０６及び／又は他のエンドポイント回路をプログラムするためにＮＰＩ２１０に渡すことができる。
【００３１】
ＮＭＵ２０２はトラフィックのイングレス箇所である。ＮＳＵ２０４はトラフィックのエグレス箇所である。ＮＭＵ２０２及びＮＳＵ２０４に結合されるエンドポイント回路が構成固定回路（たとえば構成固定回路１１０）であったり、プログラム可能論理部中で設定される回路であったりすることが可能である。エンドポイント回路が与えられれば、これを１つ以上のＮＭＵ２０２に結合したり１つ以上のＮＳＵ２０４に結合したりすることができる。
【００３２】
図３は一例に係るＮｏＣ１０６を通じたＳｏＣでのエンドポイント回路間の接続を示すブロック図である。本例では、エンドポイント回路３０２がＮｏＣ１０６を通じてエンドポイント回路３０４に接続される。エンドポイント回路３０２はマスタ回路であり、ＮｏＣ１０６のＮＭＵ２０２に結合される。エンドポイント回路３０４はＮｏＣ１０６のＮＳＵ２０４に結合されるスレーブ回路である。各エンドポイント回路３０２及び３０４は、処理システム１０４の回路、プログラム可能論理領域１０２の回路や別のサブシステム（たとえば構成固定回路１１０）の回路であることが可能である。プログラム可能論理領域１０２の各エンドポイント回路は特定の目的のための回路（たとえば構成固定回路）や、プログラム可能論理部中で設定される回路であることが可能である。
【００３３】
ネットワーク２１４は複数の物理チャンネル３０６を含む。物理チャンネル３０６はＮｏＣ１０６をプログラムすることによって実施される。各物理チャンネル３０６は１つ以上のＮｏＣパケットスイッチ２０６と付属するルーティング部２０８とを含む。少なくとも１つの物理チャンネル３０６を通じてＮＭＵ２０２がＮＳＵ２０４に接続される。物理チャンネル３０６は１つ以上の仮想チャンネル３０８を有することもできる。
【００３４】
ネットワーク２１４を通じた接続にはマスタ‐スレーブ配置を用いる。一例では、ネットワーク２１４を用いた最も基本的な接続には、単独のマスタを単独のスレーブに接続することが含まれる。一方で、他の例ではより複雑な構成を実施することができる。
【００３５】
図４は別の例に係るＮｏＣ１０６を示すブロック図である。本例では、ＮｏＣ１０６は垂直箇所４０２（ＶＮｏＣ）と水平箇所４０４（ＨＮｏＣ）とを含む。各ＶＮｏＣ４０２がＰＬ領域１０２間に配置されている。ＨＮｏＣ４０４がＰＬ領域１０２とＩＯ領域１０８との間に配置されている。構成固定回路１１０がメモリインタフェイス４０６を含む。ＨＮｏＣ４０４にはＰＳ１０４が結合される。
【００３６】
本例では、ＰＳ１０４が、ＨＮｏＣ４０４に結合される複数のＮＭＵ２０２を含む。ＶＮｏＣ４０２がＮＭＵ２０２及びＮＳＵ２０４を含み、これらはＰＬ領域１０２に配置されている。メモリインタフェイス４０６が、ＨＮｏＣ４０４に結合されるＮＳＵ２０４を含む。ＨＮｏＣ４０４とＶＮｏＣ４０２との双方が、ルーティング部２０８によって接続されるＮＰＳ２０６を含む。ＶＮｏＣ４０２ではルーティング部２０８が垂直に延びる。ＨＮｏＣ４０４ではルーティング部が水平に延びる。各ＶＮｏＣ４０２では各ＮＭＵ２０２がＮＰＳ２０６に結合されている。同様に各ＮＳＵ２０４がＮＰＳ２０６に結合されている。ＮＰＳ２０６はスイッチのマトリクスを形成するように互いに結合されている。各ＶＮｏＣ４０２のいくつかのＮＰＳ２０６が、ＨＮｏＣ４０４にある別のＮＰＳ２０６に結合されている。
【００３７】
ＨＮｏＣ４０４が１つしか示されていないが、他の例では、ＮｏＣ１０６が１つ以上のＨＮｏＣ４０４を含むことができる。これに加えて、２つのＶＮｏＣ４０２が示されているが、ＮｏＣ１０６が２つ以上のＶＮｏＣ４０２を含むことができる。例としてメモリインタフェイス４０６が示されているが、メモリインタフェイス４０６の代わりに他の構成固定回路を用いたり、メモリインタフェイス４０６に加えて他の構成固定回路を用いたりすることができることが分かる。
【００３８】
図５は一例に係るＮｏＣ１０６をプログラムする方法５００を示すフロー図である。ステップ５０２で、ＰＳ１０４のプロセッサがブート時にＮｏＣプログラムデータを受け取る。一例では、プロセッサはプラットホーム管理コントローラ（ｐｌａｔｆｏｒｍ  ｍａｎａｇｅｍｅｎｔ  ｃｏｎｔｒｏｌｌｅｒ：ＰＭＣ）である。ステップ５０４で、ＰＳ１０４のプロセッサ（たとえばＰＭＣ）がＮｏＣプログラムデータをＮＰＩ２１０を通じてレジスタ２１２にロードして物理チャンネル３０６を生成する。一例では、プログラムデータは、ＮＰＳ２０６中のルーティングテーブルを設定するための情報を含むこともできる。ステップ５０６で、ＰＳのプロセッサ（たとえばＰＭＣ）がＳｏＣ１００をブートする。このようにして、少なくとも、ＮＭＵ２０２とＮＳＵ２０４との間の物理チャンネル３０６のための設定情報をＮｏＣ１０６が含む。さらに後述されているように、ＮｏＣ１０６の残りの設定情報をランタイム中に受け取ることができる。別の例では、ランタイム中に受け取られるように後述されている設定情報の全部又は一部をブート時に受け取ることができる。
【００３９】
図６は一例に係るＮｏＣ１０６をプログラムする方法６００を示すフロー図である。ステップ６０２で、ＰＳ１０４のプロセッサ（たとえばＰＭＣ）がランタイム中にＮｏＣプログラムデータを受け取る。ステップ６０４で、ＰＳ１０４のプロセッサ（たとえばＰＭＣ）がＮＰＩ２１０を通じてＮｏＣレジスタ２１２にプログラムデータをロードする。一例では、ステップ６０６で、ＰＳ１０４のプロセッサがＮＰＳ２０６中のルーティングテーブルを設定する。ステップ６０８で、ＰＳ１０４のプロセッサが物理チャンネル３０６を用いてＱｏＳパスを設定する。ステップ６１０で、ＰＳ１０４のプロセッサがアドレス空間マッピングを設定する。ステップ６１２で、ＰＳ１０４のプロセッサがイングレス／エグレスインタフェイスプロトコル、幅及び周波数を設定する。ＱｏＳパス、アドレス空間マッピング、ルーティングテーブル及びイングレス／エグレス設定についてはさらに後述されている。
【００４０】
図７は一例に係るエンドポイント回路間のＮｏＣ１０６を通じたデータパス７００を示すブロック図である。データパス７００は、エンドポイント回路７０２、ＡＸＩマスタ回路７０４、ＮＭＵ７０６、ＮＰＳ７０８、ＮＳＵ７１０、ＡＸＩスレーブ回路７１２及びエンドポイント回路７１４を含む。エンドポイント回路７０２はＡＸＩマスタ回路７０４に結合されている。ＡＸＩマスタ回路７０４はＮＭＵ７０６に結合されている。別の例では、ＡＸＩマスタ回路７０４はＮＭＵ７０６の一部である。ＮＭＵ７０６はＮＰＳ７０８に結合されている。ＮＰＳ７０８はＮＰＳ７０８の連鎖（たとえば、本例では５つのＮＰＳ７０８の連鎖）を形成するように互いに結合されている。一般化して言えば、ＮＭＵ７０６とＮＳＵ７１０との間に少なくとも１つのＮＰＳ７０８がある。ＮＰＳ７０８のうちの１つにＮＳＵ７１０が結合されている。ＮＳＵ７１０にはＡＸＩスレーブ回路７１２が結合されている。別の例では、ＡＸＩスレーブ回路７１２はＮＳＵ７１０の一部である。ＡＸＩスレーブ回路７１２にはエンドポイント回路７１４が結合されている。
【００４１】
エンドポイント回路７０２及び７１４の各々は構成固定回路であったり、プログラム可能論理部中で設定される回路であったりすることが可能である。エンドポイント回路７０２はマスタ回路として機能し、読出し／書込み要求をＮＭＵ７０６に送る。本例では、エンドポイント回路７０２及び７１４がＡｄｖａｎｃｅｄ  Ｅｘｔｅｎｓｉｂｌｅ  Ｉｎｔｅｒｆａｃｅ（ＡＸＩ）プロトコルを用いてＮｏＣ１０６と通信する。本例ではＡＸＩが説明されているが、本技術において公知の他の種類のプロトコルを用いてエンドポイント回路から通信を受けるようにＮｏＣ１０６を構成してもよいことが分かる。例示による明確化の目的で、本例ではＡＸＩプロトコルをサポートするようにＮｏＣ１０６を説明している。ＮＭＵ７０６がＮＰＳ７０８群を通じて要求を中継し、目的のＮＳＵ７１０に渡す。ＮＳＵ７１０はデータの処理と、エンドポイント回路７１４へのデータの分配とのために、付属するＡＸＩスレーブ回路７１２に要求を渡す。ＡＸＩスレーブ回路７１２は読出し／書込み応答をＮＳＵ７１０に送り返すことができる。ＮＳＵ７１０は応答をＮＰＳ７０８群を通じてＮＭＵ７０６に転送することができる。ＮＭＵ７０６は応答をＡＸＩマスタ回路７０４に伝え、ＡＸＩマスタ回路７０４はデータをエンドポイント回路７０２に分配する。
【００４２】
図８は一例に係る読出し／書込み要求及び応答を処理する方法８００を示すフロー図である。方法８００はステップ８０２から始まり、当該ステップで、エンドポイント回路７０２がＡＸＩマスタ７０４を通じてＮＭＵ７０６に要求（たとえば読出し要求又は書込み要求）を送る。ステップ８０４で、ＮＭＵ７０６が応答を処理する。一例では、ＮＭＵ７０６がエンドポイント回路７０２のクロックドメインとＮｏＣ１０６との間の非同期クロッシング及びレートマッチングを行なう。ＮＭＵ７０６は要求に基づいてＮＳＵ７１０の送り先アドレスを決定する。ＮＭＵ７０６は、仮想化が用いられている場合にはアドレスの再マッピングを行なうことができる。ＮＭＵ７０６は要求のＡＸＩ変換も行なう。さらにＮＭＵ７０６は要求をパケット化してパケットのストリームにする。
【００４３】
ステップ８０６で、ＮＭＵ７０６が要求に用いるパケットをＮＰＳ７０８に送る。各ＮＰＳ７０８が送り先アドレス及びルーティング情報に基づいて目標出力ポートについてテーブル検索を行なう。ステップ８０８で、ＮＳＵ７１０が要求のパケットを処理する。一例では、ＮＳＵ７１０が要求を逆パケット化し、ＡＸＩ変換を行ない、ＮｏＣクロックドメインからエンドポイント回路７１４のクロックドメインへの非同期クロッシング及びレートマッチングを行なう。ステップ８１０で、ＮＳＵ７１０が要求をＡＸＩスレーブ回路７１２を通じてエンドポイント回路７１４に送る。ＮＳＵ７１０がエンドポイント回路７１４からＡＸＩスレーブ回路７１２を通じて応答を受け取ることもできる。
【００４４】
ステップ８１２で、ＮＳＵ７１０が応答を処理する。一例では、ＮＳＵ７１０がエンドポイント回路７１４のクロックドメイン及びＮｏＣ１０６のクロックドメインからの非同期クロッシング及びレートマッチングを行なう。ＮＳＵ７１０は応答をパケット化してパケットのストリームにすることも行なう。ステップ８１４で、ＮＳＵ７１０がパケットをＮＰＳ７０８を通じて送る。各ＮＰＳ７０８が送り先アドレス及びルーティング情報に基づいて目標出力ポートについてテーブル検索を行なう。ステップ８１６で、ＮＭＵ７０６がパケットを処理する。一例では、ＮＭＵ７０６が応答を逆パケット化し、ＡＸＩ変換を行ない、ＮｏＣクロックドメインからエンドポイント回路７０２のクロックドメインへの非同期クロッシング及びレートマッチングを行なう。ステップ８１８で、ＮＭＵ７０６が応答をＡＸＩマスタ回路７０４を通じてエンドポイント回路７０２に送る。
【００４５】
図９は一例に係るＮＭＵ２０２を示すブロック図である。ＮＭＵ２０２はＡＸＩマスタインタフェイス９０２、パケット化回路９０４、アドレスマップ９０６、逆パケット化回路９０８、ＱｏＳ回路９１０、ＶＣマッピング回路９１２及びクロック管理回路９１４を含む。ＡＸＩマスタインタフェイス９０２はエンドポイント回路向けにＮＭＵ２０２にＡＸＩインタフェイスを提供する。他の例では、異なるプロトコルを用いることができ、したがって、選択したプロトコルに準拠する異なるマスタインタフェイスをＮＭＵ２０２が有することができる。ＮＭＵ２０２はパケット化回路９０４に至るインバウンドトラフィックのルートを決定し、パケット化回路９０４はインバウンドデータからパケットを生成する。パケット化回路９０４はアドレスマップ９０６から送り先箇所ＩＤを決定し、パケットをルーティングするのに送り先箇所ＩＤを用いる。ＱｏＳ回路９１０はイングレスレート制御を行なってＮｏＣ１０６へのパケットのインジェクションレートを制御することができる。ＶＣマッピング回路９１２は各物理チャンネルのＱｏＳ仮想チャンネルを管理する。パケットがどの仮想チャンネルにマッピングされるのかを選択するようにＮＭＵ２０２を構成することができる。クロック管理回路９１４はレートマッチング及び非同期データクロッシングを行なって、ＡＸＩクロックドメインとＮｏＣクロックドメインとの間のインタフェイスを提供する。逆パケット化回路９０８はＮｏＣ１０６から戻りパケットを受け取り、ＡＸＩマスタインタフェイス９０２による出力のためにパケットを逆パケット化するように構成されている。
【００４６】
図１０は一例に係るＮＳＵ２０４を示すブロック図である。ＮＳＵ２０４は、ＡＸＩスレーブインタフェイス１００２、クロック管理回路１００４、パケット化回路１００８、逆パケット化回路１００６及びＱｏＳ回路１０１０を含む。ＡＸＩスレーブインタフェイス１００２はエンドポイント回路向けにＮＳＵ２０４にＡＸＩインタフェイスを提供する。他の例では、異なるプロトコルを用いることができ、したがって、選択したプロトコルに準拠する異なるスレーブインタフェイスをＮＳＵ２０４が有することができる。ＮＳＵ２０４はＮｏＣ１０６から逆パケット化回路１００６に至るインバウンドトラフィックのルートを決定し、逆パケット化回路１００６は逆パケット化されたデータを生成する。クロック管理回路９１４はレートマッチング及び非同期データクロッシングを行なって、ＡＸＩクロックドメインとＮｏＣクロックドメインとの間のインタフェイスを提供する。パケット化回路１００８はスレーブインタフェイス１００２から戻りデータを受け取り、ＮｏＣ１０６を通じて送信するために戻りデータをパケット化するように構成されている。ＱｏＳ回路１０１０はイングレスレート制御を行なってＮｏＣ１０６へのパケットのインジェクションレートを制御することができる。
【００４７】
図１１は一例に係るマルチチップモジュール（ｍｕｌｔｉ−ｃｈｉｐ  ｍｏｄｕｌｅ：ＭＣＭ）１１００の断面である。ＭＣＭ１１００は、ＩＣダイ１１０２、ＩＣダイ１１０４及び基板１１１０を含む。ＩＣダイ１１０２及びＩＣダイ１１０４は基板１１１０に機械的かつ電気的に結合されている。ＩＣダイ１１０２は上述のＳｏＣ１００を備える。ＩＣダイ１１０２は外部接点１１０６を通じて基板１１１０に機械的かつ電気的に結合されている。ＩＣダイ１１０４は別のＳｏＣ１００を備え、外部接点１１０８を通じて基板１１１０に機械的かつ電気的に結合されている。基板１１１０は外部接点１１１２を含む。基板１１１０は、パッケージ基板、インターポーザなどであることが可能である。
【００４８】
本例ではＩＣダイ１１０２はＮＰＳ１１１６を含む。ＮＰＳ１１１６は基板１１１０の導体１１１４を通じてＩＣダイ１１０４に結合されている。ＩＣダイ１１０４はＮＰＳ１１１８を含む。ＮＰＳ１１１８は基板１１１０の導体１１１４に結合されている。一般化して言えば、このようにして基板１１１０の導体を通じて任意の個数のスイッチを結合することができる。したがって、ＩＣダイ１１０２のＮｏＣがＩＣダイ１１０４のＮｏＣに結合されることによって、ＩＣダイ１１０２とＩＣダイ１１０４との双方にわたる大規模ＮｏＣが形成される。基板１１１０の導体１１１４が１層にある様子が示されているが、ダイ１１０２及び１１０４のＮｏＣスイッチに結合された導体を有する任意の層数の導電層を基板１１１０が含むことができる。
【００４９】
図１２は一例に係る拡張ＮｏＣ１２００の概略図である。拡張ＮｏＣ１２００は、ＩＣダイ間の境界１２０２にわたって延びる１つ以上のＶＮＯＣ４０２（たとえば、３つが示されている）を含む。ＶＮＯＣ４０２中のＮＰＳ２０６のうちのいくつかのＮＰＳ２０６Ａが基板１１１０にある導体１１１４を用いて接続されている。本例では、拡張ＮｏＣ１２００は、各ダイの縁にある２つの水平チャンネルを含む。ただし、拡張ＮｏＣ１２００は、ダイの縁にある任意の個数の水平チャンネルを含むことができる。さらに、各ＶＮＯＣ４０２が２つの垂直チャンネルを有する様子が示されているが、ＶＮＯＣ４０２はＩＣダイ間の境界１２０２にわたる任意の個数の垂直チャンネルを含むことができる。
【００５０】
図１３は一例に係る差動ＩＣダイのＮＰＳ２０６Ａ間の通信を示すブロック図である。各ＮＰＳ２０６ＡはＮＰＳ２０６とＦＩＦＯ１３０２とを含む。各ＮＰＳ２０６が相手側のＮＰＳ２０６ＡのＦＩＦＯ１３０２に結合されている。各ＮＰＳ２０６は、相手側のＮＰＳ２０６ＡのＦＩＦＯ１３０２に至るクロックパス及びデータパスを含む。本例では、各ＮＰＳ２０６Ａは別々のクロックドメイン（たとえばｃｌｋ１とｃｌｋ２）で動作する。クロックドメインを互いに揃えて位相を同期させる必要はない（たとえば、クロックドメインには位相独立性がある）。各ＮＰＳ２０６は、そのＮＰＳ２０６のクロックドメインのクロックをＦＩＦＯ１３０２に送る。ＦＩＦＯ１３０２はそれぞれの側のＮＰＳ２０６Ａのクロックドメインにデータを合わせ直す。
【００５１】
図１４は、本出願で説明されているＮｏＣ１０６を用いることができる一例に係るプログラム可能ＩＣ１を示すブロック図である。プログラム可能ＩＣ１は、プログラム可能論理部３、設定論理部２５及び設定メモリ２６を含む。プログラム可能ＩＣ１を、不揮発メモリ２７、ＤＲＡＭ２８やその他回路２９などの外部回路に結合することができる。プログラム可能論理部３は、論理セル３０、サポート回路３１及びプログラム可能インタコネクト３２を含む。論理セル３０は、複数の入力の一般的な論理機能を実施するように構成することができる回路を含む。サポート回路３１は、トランシーバ、入力／出力ブロック、デジタルシグナルプロセッサ、メモリなどの特定の目的のための回路を含む。プログラム可能インタコネクト３２を用いて論理セルとサポート回路３１とを相互接続することができる。論理セル３０をプログラムするための情報、サポート回路３１のパラメータを設定するための情報、及びプログラム可能インタコネクト３２をプログラムするための情報は設定論理部２５によって設定メモリ２６に記憶される。設定論理部２５は、不揮発メモリ２７やその他一切の供給源（たとえば、ＤＲＡＭ２８やその他回路２９由来のもの）からも設定データを得ることができる。いくつかの例では、プログラム可能ＩＣ１は処理システム２を含む。処理システム２は、１つ以上のマイクロプロセッサ、メモリ、サポート回路、ＩＯ回路などを含むことができる。
【００５２】
図１５は一例に係るプログラム可能ＩＣ１のシステム・オン・チップ（ＳｏＣ）の実現例を示すブロック図である。本例では、プログラム可能ＩＣ１は処理システム２とプログラム可能論理部３とを含む。処理システム２は、リアルタイムプロセッシングユニット（ｒｅａｌ−ｔｉｍｅ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＲＰＵ）４、アプリケーションプロセッシングユニット（ａｐｐｌｉｃａｔｉｏｎ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＡＰＵ）５、グラフィックスプロセッシングユニット（ｇｒａｐｈｉｃｓ  ｐｒｏｃｅｓｓｉｎｇ  ｕｎｉｔ：ＧＰＵ）６、設定セキュリティユニット（ｃｏｎｆｉｇｕｒａｔｉｏｎ  ａｎｄ  ｓｅｃｕｒｉｔｙ  ｕｎｉｔ：ＣＳＵ）１２、プラットホーム管理ユニット（ｐｌａｔｆｏｒｍ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ：ＰＭＵ）１２２などの様々な処理ユニットを含む。処理システム２は、オン・チップ・メモリ（ｏｎ−ｃｈｉｐ  ｍｅｍｏｒｙ：ＯＣＭ）１４、トランシーバ７、周辺装置８、インタコネクト１６、ＤＭＡ回路９、メモリコントローラ１０、周辺装置１５及び多重ＩＯ（ｍｕｌｔｉｐｌｅｘｅｄ  ＩＯ：ＭＩＯ）回路１３などの様々なサポート回路も含む。処理ユニットとサポート回路とがインタコネクト１６によって相互接続されている。インタコネクト１６にはＰＬ３も結合されている。トランシーバ７は外部ピン２４に結合されたり、プロトコルブロック（図示せず）（たとえば、ＰＣＩｅ、Ｅｔｈｅｒｎｅｔなど）を通じて外部ピン２４に接続されたりする。ＰＬ３は外部ピン２３に結合されている。メモリコントローラ１０は外部ピン２２に結合されている。ＭＩＯ１３は外部ピン２０に結合されている。ＰＳ２全体が外部ピン２１に結合されている。ＡＰＵ５は、ＣＰＵ１７、メモリ１８及びサポート回路１９を含むことができる。ＡＰＵ５は、Ｌ１及びＬ２キャッシュなどを含むその他の回路を含むことができる。ＲＰＵ４はＬ１キャッシュなどの増設回路を含むことができる。インタコネクト１６はキャッシュコヒーレントインタコネクトなどを含むことができる。
【００５３】
ＰＳ２を参照して、処理ユニットの各々は、１つ以上の中央処理装置（ＣＰＵ）と、メモリ、割込みコントローラ、ダイレクトメモリアクセス（ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ：ＤＭＡ）コントローラ、メモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ：ＭＭＵ）、浮動小数点演算処理装置（ｆｌｏａｔｉｎｇ  ｐｏｉｎｔ  ｕｎｉｔ：ＦＰＵ）などの付属回路とを含む。インタコネクト１６は、処理ユニットを相互接続し、さらに、処理ユニットにＰＳ２中の他のコンポネントを相互接続することも行なうように構成されている様々なスイッチ、バス、通信リンクなどを含む。
【００５４】
ＯＣＭ１４は１つ以上のＲＡＭモジュールを含む。ＲＡＭモジュールをＰＳ２にわたって分散させることができる。たとえば、ＯＣＭ１４はバッテリバックアップ型ＲＡＭ（ｂａｔｔｅｒｙ  ｂａｃｋｅｄ  ＲＡＭ：ＢＢＲＡＭ）、密接合メモリ（ｔｉｇｈｔｌｙ  ｃｏｕｐｌｅｄ  ｍｅｍｏｒｙ：ＴＣＭ）などを含むことができる。メモリコントローラ１０は、外部ＤＲＡＭにアクセスするためのＤＲＡＭインタフェイスを含むことができる。周辺装置８，１５は、ＰＳ２にインタフェイスを提供する１つ以上のコンポネントを含むことができる。たとえば、周辺装置１３２は、グラフィックスプロセッシングユニット（ＧＰＵ）、ディスプレイインタフェイス（たとえば、ＤｉｓｐｌａｙＰｏｒｔ、ｈｉｇｈ−ｄｅｆｉｎｉｔｉｏｎ  ｍｕｌｔｉｍｅｄｉａ  ｉｎｔｅｒｆａｃｅ（ＨＤＭＩ）ポートなど）、ユニバーサルシリアルバス（ＵＳＢ）ポート、Ｅｔｈｅｒｎｅｔポート、ｕｎｉｖｅｒｓａｌ  ａｓｙｎｃｈｒｏｎｏｕｓ  ｔｒａｎｓｃｅｉｖｅｒ（ＵＡＲＴ）ポート、シリアルペリフェラルインタフェイス（ＳＰＩ）ポート、ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ＩＯ（ＧＰＩＯ）ポート、ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）ポート、ＰＣＩｅポートなどを含むことができる。周辺装置１５をＭＩＯ１３に結合することができる。周辺装置８をトランシーバ７に結合することができる。トランシーバ７はシリアライザ／デシリアライザ（ＳＥＲＤＥＳ）回路、ＭＧＴなどを含むことができる。
【００５５】
図１６は、トランシーバ３７、コンフィギャラブル・ロジック・ブロック（ＣＬＢ）３３、ランダムアクセスメモリブロック（ＢＲＡＭ）３４、入力／出力ブロック（ＩＯＢ）３６、設定及びクロッキングの論理部（設定／クロック）４２、デジタル信号処理ブロック（ＤＳＰ）３５、特定の目的のための入力／出力ブロック（Ｉ／Ｏ）４１（たとえば、設定ポート及びクロックポート）、並びにデジタルクロックマネージャ、アナログデジタルコンバータ、システムモニタリング論理部などのその他プログラム可能論理部３９を含む多数の異なるプログラム可能なタイルを含むプログラム可能ＩＣ１のフィールドプログラマブルゲートアレイ（ＦＰＧＡ）の実現例を示す。ＦＰＧＡは、ＰＣＩｅインタフェイス４０、アナログデジタルコンバータ（ＡＤＣ）３８などを含むこともできる。
【００５６】
いくつかのＦＰＧＡでは、図１６の上部に含まれる例によって示されているように、各プログラム可能なタイルは、同じタイル中のプログラム可能論理要素の入出力端子４８への接続部を有する少なくとも１つのプログラム可能インタコネクト要素（ＩＮＴ）４３を含むことができる。各プログラム可能インタコネクト要素４３は、同じタイル又は他のタイル中の隣接するプログラム可能インタコネクト要素のインタコネクトセグメント４９への接続部を含むこともできる。各プログラム可能インタコネクト要素４３は、論理ブロック（図示せず）間にある全体ルーティングリソース（ｇｅｎｅｒａｌ  ｒｏｕｔｉｎｇ  ｒｅｓｏｕｒｃｅ）のインタコネクトセグメント５０への接続部を含むこともできる。全体ルーティングリソースは、インタコネクトセグメント（たとえばインタコネクトセグメント５０）のトラックを備える論理ブロック（図示せず）と、インタコネクトセグメントを接続するスイッチブロック（図示せず）との間にあるルーティングチャンネルを含むことができる。全体ルーティングリソースのインタコネクトセグメント（たとえばインタコネクトセグメント５０）は１つ以上の論理ブロックにわたることができる。全体ルーティングリソースとともに取り上げられているプログラム可能インタコネクト要素４３によって、図示されているＦＰＧＡのプログラム可能インタコネクト構成（プログラム可能インタコネクト）が実施される。
【００５７】
一実現例では、ＣＬＢ３３は、１つのプログラム可能インタコネクト要素（ＩＮＴ）４３に加えて、ユーザのロジックを実施するようにプログラムすることができるコンフィギャラブルロジック要素（ｃｏｎｆｉｇｕｒａｂｌｅ  ｌｏｇｉｃ  ｅｌｅｍｅｎｔ：ＣＬＥ）４４を含むことができる。ＢＲＡＭ３４は、１つ以上のプログラム可能インタコネクト要素に加えてＢＲＡＭ論理要素（ＢＲＡＭ  ｌｏｇｉｃ  ｅｌｅｍｅｎｔ：ＢＲＬと表記）４５を含むことができる。一般的に、タイルに含まれるインタコネクト要素の個数はタイルの高さに依存する。図示されている例では、ＢＲＡＭタイルの高さは５つ分のＣＬＢと同じであるが、他の個数分（たとえば、４つ分）を用いることもできる。ＤＳＰタイル３５は適当な個数のプログラム可能インタコネクト要素に加えてＤＳＰ論理要素（ＤＳＰ  ｌｏｇｉｃ  ｅｌｅｍｅｎｔ：ＤＳＰＬと表記）４６を含むことができる。ＩＯＢ３６は、たとえば、プログラム可能インタコネクト要素４３の１つのインスタンスに加えて、入力／出力論理要素（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｌｏｇｉｃ  ｅｌｅｍｅｎｔ：ＩＯＬと表記）４７の２つのインスタンスを含むことができる。当業者には明らかであろうが、たとえばＩ／Ｏ論理要素４７に接続される実際のＩ／Ｏパッドの位置は入力／出力論理要素４７の領域に留まらないのが一般的である。
【００５８】
図示されている例では、ダイ（図１６に示されている）の中央付近の水平領域を、設定、クロック及びその他制御ロジックに用いている。この水平領域すなわち水平列から延びる垂直列５１を、クロック及び設定信号を分配するのにＦＰＧＡの一定幅にわたって用いている。
【００５９】
図１６に示されているアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大部分を構成する整った列構造を崩す追加の論理ブロックを含む。追加の論理ブロックはプログラム可能なブロック及び／又は特定の目的のための論理部であることが可能である。
【００６０】
図１６が典型的なＦＰＧＡアーキテクチャを示すのにすぎないことを意図していることに留意する。たとえば、横列中の論理ブロックの個数、横列同士の幅の相対値、横列の列数及び順序、横列に含まれる論理ブロックのタイプ、論理ブロック同士の寸法の相対値並びに図１６の上部に含まれているインタコネクト／論理部の実現例は典型例にすぎない。たとえば、実際のＦＰＧＡでは、典型的には、ＣＬＢが登場するすべての場所に、隣接する１列以上のＣＬＢの横列が含まれることで、ユーザのロジックの効果的な実施が容易になる。ただし、隣接するＣＬＢ列の列数はＦＰＧＡの全寸法に応じて変わる。
【００６１】
上記は特定の例を対象にしているが、他のさらに多くの例を、その基本的な範囲から逸脱しない範囲で考えてもよく、その範囲は以下の請求項によって決まる。
【図１】
2021530806.tif 000003
【図２】
2021530806.tif 000004
【図３】
2021530806.tif 000005
【図４】
2021530806.tif 000006
【図５】
2021530806.tif 000007
【図６】
2021530806.tif 000008
【図７】
2021530806.tif 000009
【図８】
2021530806.tif 000010
【図９】
2021530806.tif 000011
【図１０】
2021530806.tif 000012
【図１１】
2021530806.tif 000013
【図１２】
2021530806.tif 000014
【図１３】
2021530806.tif 000015
【図１４】
2021530806.tif 000016
【図１５】
2021530806.tif 000017
【図１６】
2021530806.tif 000018
【国際調査報告】
2021530806.tif 000019
2021530806.tif 000020
2021530806.tif 000021
2021530806.tif 000022
2021530806.tif 000023