(57)【要約】  本明細書において説明する例は、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を有する、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）などの電子回路（１０６）を規定する。このＮｏＣ（１０６）は、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。ある例では、集積回路（１０２）上のＮｏＣ（１０６）にコンフィギュレーションを行う。集積回路（１０２）上のサブシステム（８０２、８０４）は、ＮｏＣ（１０６）を介して互いに通信する。ＮｏＣ（１０６）にパーシャルリコンフィギュレーションを行う。パーシャルリコンフィギュレーション中、ＮｏＣ（１０６）の第１サブセット（８０８〜８１８）にリコンフィギュレーションが行われ、当該パーシャルリコンフィギュレーション中、ＮｏＣの第２サブセット（１０６）は、継続的に通信を通し続けることが可能である。パーシャルリコンフィギュレーション後、サブシステムのうち２つ以上のサブシステム（８０２、８０４）は、ＮｏＣ（１０６）の第１サブセット（８０８〜８１８）を介して互いに通信する。
2022500772.tif 000002
【特許請求の範囲】
【請求項１】
集積回路を操作する方法であって、
前記集積回路上にネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）にコンフィギュレーションを行うステップと、
前記ＮｏＣを介して前記集積回路上のサブシステム間を通信させるステップと、
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップとを含み、前記パーシャルリコンフィギュレーション中、前記ＮｏＣの第１サブセットにリコンフィギュレーションが行われ、前記ＮｏＣの第２サブセットは、前記パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能であり、前記方法は、さらに、
前記パーシャルリコンフィギュレーション後、前記ＮｏＣの第１サブセットを介して前記サブシステムのうち２つ以上のサブシステム間を通信させるステップを含む、方法。
【請求項２】
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、
前記ＮｏＣの第１サブセットを休止させるステップと、
前記ＮｏＣの第１サブセットを休止させるステップの後、前記ＮｏＣの第１サブセットにリコンフィギュレーションを行うステップとを含む、請求項１に記載の方法。
【請求項３】
前記ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含み、前記ＮＰＳは、前記ルーティングによって前記ＮＭＵと前記ＮＳＵとの間で相互接続されている、請求項１または２に記載の方法。
【請求項４】
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、
通信パケットを送信することを停止するよう、前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵを制御するステップと、
受信した通信パケットを拒否するよう、前記ＮｏＣの第１サブセットに含まれる前記ＮＳＵを制御するステップと、
停止および拒否するよう前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵおよび前記ＮＳＵをそれぞれ制御するステップの後、前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵ、前記ＮｏＣの第１サブセットに含まれる前記ＮＳＵ、および前記ＮｏＣの第１サブセットに含まれる前記ＮＰＳにリコンフィギュレーションを行うステップと、
前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵ、前記ＮＳＵ、および前記ＮＰＳにリコンフィギュレーションを行うステップの後、前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵおよび前記ＮＳＵの通信を有効にするステップとを含む、請求項３に記載の方法。
【請求項５】
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、前記集積回路上で動作し、前記パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われないアプリケーションに前記ＮｏＣの第１サブセットを介した通信の送信を停止させるステップをさらに含む、請求項４に記載の方法。
【請求項６】
前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵは、１つ以上の第１の制御レジスタ含み、前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵを制御するステップは、前記１つ以上の第１の制御レジスタに書き込むステップを含み、
前記ＮｏＣの第１サブセットに含まれる前記ＮＳＵは、１つ以上の第２の制御レジスタを含み、前記ＮｏＣの第１サブセットに含まれる前記ＮＭＵを制御するステップは、前記１つ以上の第２の制御レジスタに書き込むステップを含む、請求項４または５に記載の方法。
【請求項７】
前記ＮＰＳの各々は、通信パケットを受信および送信するように構成されたポートを有し、前記ポートは、それぞれルーティングに接続されており、
前記ＮＰＳの各々は、ルーティングテーブルをさらに含み、前記ルーティングテーブルは、レジスタを含み、
前記レジスタの各々は、１つ以上の宛先ＩＤに対応付けられ、前記レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、前記定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、前記定義済みビット位置のうちの１つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、前記受信通信パケットに含まれている宛先ＩＤに対応付けられたレジスタにある、前記受信通信パケットを受信するポートに対応する、請求項３〜６のいずれか１項に記載の方法。
【請求項８】
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、前記ルーティングテーブルの前記レジスタのうち１つ以上に書き込むステップを含む前記ＮｏＣの第１サブセットに含まれる前記ＮＰＳにリコンフィギュレーションを行うステップを含む、請求項７に記載の方法。
【請求項９】
前記ＮｏＣにコンフィギュレーションを行うステップは、第１パスおよび第２パスにコンフィギュレーションを行うステップを含み、前記第１パスおよび前記第２パスは、各々、前記ＮＰＳのうち第１のＮＰＳを通り、
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、前記第１のＮＰＳを通る前記第１パスにリコンフィギュレーションを行うステップを含み、前記パーシャルリコンフィギュレーション中、前記第１のＮＰＳを通る前記第２パスは、継続的に通信を通過させ続けることが可能である、請求項３〜８のいずれか１項に記載の方法。
【請求項１０】
前記ＮｏＣは、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）をさらに含み、
前記ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、前記ＮＰＩを介したメモリにマッピングされたトランザクションを用いて前記ＮｏＣの第１サブセットのコンポーネントにコンフィギュレーションデータを書き込むステップを含む、請求項１〜９のいずれか１項に記載の方法。
【請求項１１】
集積回路であって、
チップ上に第１サブシステムと、
前記チップ上に第２サブシステムと、
前記チップ上に、前記第１サブシステムと前記第２サブシステムとの間に通信可能に接続されたネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）とを備え、前記ＮｏＣは、前記ＮｏＣを通る通信パスを確立するようにコンフィギャラブルであり、前記ＮｏＣは、パーシャルリコンフィギュレーション可能に構成され、前記通信パスの第２サブセットが継続的に通信を通過させることが可能である間に前記通信パスの第１サブセットにリコンフィギュレーションを行う、集積回路。
【請求項１２】
前記ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含み、前記ＮＰＳは、前記ルーティングによって前記ＮＭＵと前記ＮＳＵとの間で相互接続されており、
前記ＮＰＳの各々は、通信パケットを受信および送信するように構成されたポートを有し、前記ポートは、それぞれルーティングに接続されており、
前記ＮＰＳの各々は、ルーティングテーブルをさらに含み、前記ルーティングテーブルは、レジスタを含み、
前記レジスタの各々は、１つ以上の宛先ＩＤに対応付けられ、前記レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、前記定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、前記定義済みビット位置のうちの１つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、前記受信通信パケットに含まれている宛先ＩＤに対応付けられたレジスタにある、前記受信通信パケットを受信するポートに対応する、請求項１１に記載の集積回路。
【請求項１３】
前記ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含み、前記ＮＰＳは、前記ルーティングによって前記ＮＭＵと前記ＮＳＵとの間で相互接続されており、
前記ＮＭＵの各々は、１つ以上の第１の制御レジスタを含み、前記ＮＭＵの各々は、前記１つ以上の第１の制御レジスタに書き込まれた値に基づいて通信を送信することを停止するよう制御可能であり、
前記ＮＳＵの各々は、１つ以上の第２の制御レジスタを含み、前記ＮＭＵの各々は、前記１つ以上の第２の制御レジスタに書き込まれた値に基づいて通信を拒否するように制御可能である、請求項１１または１２に記載の集積回路。
【請求項１４】
前記ＮｏＣは、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）を含み、前記ＮｏＣは、メモリにマッピングされたトランザクションを前記ＮＰＩを介して送信することによってコンフィギュレーション可能である、請求項１１〜１３のいずれか１項に記載の集積回路。
【請求項１５】
前記第１サブシステムは、プログラマブルサブシステムである、請求項１１〜１４のいずれか１項に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
技術分野
本開示の例は、全体的に、電子回路に関し、特に、パーシャルリコンフィギュレーション機能を有するネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を備える電子回路に関する。
【背景技術】
【０００２】
背景
集積回路技術の進歩により、プロセッサコアと、メモリコントローラと、バスとを含むようなシステム全体を１つの半導体チップに埋め込むことが可能になった。この種類のチップは、一般に、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）と称される。さらには、ＳｏＣのサブシステム間の通信用にネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を備えたＳｏＣも開発されている。ＮｏＣによって、一般に、ＳｏＣのスケーラビリティが高くなり、性能が向上した。
【発明の概要】
【０００３】
概要
本明細書において説明する例は、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を有する、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）などの電子回路を規定する。このＮｏＣは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。
【０００４】
本開示の例は、集積回路を操作する方法である。集積回路上にＮｏＣにコンフィギュレーションを行う。集積回路上のサブシステムは、ＮｏＣを介して互いに通信する。ＮｏＣにパーシャルリコンフィギュレーションを行う。パーシャルリコンフィギュレーション中、ＮｏＣの第１サブセットにリコンフィギュレーションが行われ、ＮｏＣの第２サブセットは、パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能である。パーシャルリコンフィギュレーション後、サブシステムのうち２つ以上のサブシステムは、ＮｏＣの第１サブセットを介して互いに通信する。
【０００５】
本開示の別の例は、集積回路である。この集積回路は、チップ上に第１サブシステムと、当該チップ上に第２サブシステムと、当該チップ上に、第１サブシステムと第２サブシステムとの間に通信可能に接続されたネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）とを備える。ＮｏＣは、ＮｏＣを通る通信パスを確立するようにコンフィギャラブルである。ＮｏＣは、パーシャルリコンフィギュレーション可能に構成され、通信パスの第２サブセットが継続的に通信を通過させることが可能である間に通信パスの第１サブセットにリコンフィギュレーションを行う。
【０００６】
本開示の別の例は、システムである。システムは、プロセッサと、命令を格納したコンピュータ読み取り可能な媒体とを備え、当該命令は、プロセッサによって実行されると、プロセッサに動作を実行させる。当該動作は、最初のリコンフィギャラブルモジュールおよびスタティックモジュールから構成される第１の回路設計の第１の物理記述を生成する動作と、後続のリコンフィギャラブルモジュールから構成される第２の回路設計の第２の物理記述を生成する動作と、第１の物理記述および第２の物理記述に基づいて１つ以上のプログラミングデバイス画像を生成する動作とを含む。第１の物理記述は、対象集積回路の物理レイアウトに対応する。対象集積回路は、ＮｏＣを備える。第１の物理記述は、最初のリコンフィギャラブルモジュールに対応するＮｏＣを通るパスの回路部品を含むリコンフィギャラブルパーティションを含む。第２の物理記述は、第１の物理記述に基づく物理記述であり、後続のリコンフィギャラブルモジュールに対応するＮｏＣを通るリコンフィギュレーションが行われたパスの回路部品を含むリコンフィギャラブルパーティションを含む。１つ以上のプログラミングデバイス画像は、対象集積回路に読み込み可能であり、最初にコンフィギュレーションが行われると第１の回路設計を実装し、パーシャルリコンフィギュレーションが行われると第２の回路設計を実装する。
【０００７】
これらのおよびその他の態様は、下記の詳細な説明を参照して理解されたい。
上記の特徴が詳細に理解されるように、以上に簡単に要約されているより特定的な説明を、例示的な実施態様を参照することによって入手してもよい。当該実施態様の一部は、添付の図面に示されている。しかしながら、添付の図面は、一般的な例示的な実施態様を示しているに過ぎないため、その範囲を限定するものではないことを留意されたい。
【図面の簡単な説明】
【０００８】
【図１】本開示の例に係る、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）を示すブロック図である。
【図２】本開示の例に係る、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を示すブロック図である。
【図３】本開示の例に係る、ＮｏＣを通るエンドポイント回路間の接続を示すブロック図である。
【図４】本開示の例に係る、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）を通るレジスタブロックまでの接続を示すブロック図である。
【図５】本開示の例に係る、ルーティングテーブルの概略を示す図である。
【図６】本開示の例に係る、ＳｏＣを操作する方法を示す図である。
【図７】本開示の例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行う方法を示す図である。
【図８】本開示のいくつかの例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
【図９】本開示のいくつかの例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
【図１０】本開示のいくつかの例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
【図１１】本開示のいくつかの例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
【図１２】本開示のいくつかの例に係る、ＮｏＣにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
【図１３】本開示の例に係る、回路設計システムの例を示すブロック図である。
【図１４】本開示の例に係る、図１３の回路設計ツールの例を示すブロック図である。
【図１５】本開示の例に係る、パーシャルリコンフィギュレーションのためのプログラミングデバイス画像（ＰＤＩ：Ｐｒｏｇｒａｍｍｉｎｇ  Ｄｅｖｉｃｅ  Ｉｍａｇｅ）を生成する方法を示す図である。
【発明を実施するための形態】
【０００９】
理解を容易にするために、可能な限り、それぞれの図面に共通の同じ要素を同じ参照番号を用いて示す。１つの例に含まれる要素は、その他の例に有利に組み込んでもよいと考えられる。
【００１０】
詳細な説明
本明細書において説明する例は、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を有する、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）などの電子回路を規定する。このＮｏＣは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。ルーティングテーブルを形成するレジスタを独立したレジスタに分けて、新たなレジスタ値が、その他のパスに影響を与えることなく、１つまたは少数のパスに影響を与えるようすることによって、および、様々なパスを通して送信されたパケットを、混乱を生じさせない方法で停止させるコントロールをＮｏＣインターフェースブロックに付与することによってＮｏＣのパーシャルリコンフィギュレーションを有効にできる。これに加えて、回路設計ツールおよび方法が、ＮｏＣおよび様々なサブシステムのパーシャルリコンフィギュレーションを実装するための１つ以上のプログラミングデバイス画像（ＰＤＩ：Ｐｒｏｇｒａｍｍｉｎｇ  Ｄｅｖｉｃｅ  Ｉｍａｇｅ）を生成することができる。回路設計ツールおよび方法は、ＮｏＣのパーシャルリコンフィギュレーション上の制約に従って様々なユースケースシナリオを実装することができる。
【００１１】
これまでは、様々なＳｏＣには、パーシャルリコンフィギュレーションができないＮｏＣが実装されていた。プログラマブルであるＳｏＣ、およびパーシャルリコンフィギュレーション機能を有するサブシステムを備えたＳｏＣの場合、パーシャルリコンフィギュレーションを行えないＮｏＣは、サブシステムのパーシャルリコンフィギュレーション上の制限であった。サブシステムのパーシャルリコンフィギュレーションの場合、以前に構成したＮｏＣとのインターフェースを維持しなければならない、または、完全にＮｏＣにリコンフィギュレーションを行う必要があった。これにより、リコンフィギュレーションが行われていないアプリケーション間の通信が中断されていた。これにより、プログラム可能な設計の柔軟性が大幅に限定されてしまっていた。これは、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いた回路設計で実証されている。パーシャルリコンフィギュレーションを行うことができるファブリック（たとえば、プログラマブルロジック）を備えるＦＰＧＡもあるが、ファブリックにどのようにパーシャルリコンフィギュレーションが行われるかをＦＰＧＡのＮｏＣが限定してしまっていた。
【００１２】
本明細書において説明する例は、パーシャルリコンフィギュレーションを行えないＮｏＣの制限に対する解決策を提供する。本明細書において説明する例は、集積回路のＮｏＣのパーシャルリコンフィギュレーションを可能にする集積回路（ＦＰＧＡのような、プログラマブルロジックデバイスなど）のアーキテクチャを規定する。本明細書において説明するさらなる例は、ＮｏＣのパーシャルリコンフィギュレーションのためのＰＤＩを生成する方法およびシステムを規定する。
【００１３】
ＮｏＣをＳｏＣデバイスアーキテクチャに組み込むことができる。ＮｏＣは、当該デバイス上の異なるサブシステム間の通信パスを備えて、汎用のプログラマブル高速バスであり得る。例として、処理システムからＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリまでのパス、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）インターフェースからプログラマブルロジック領域までのパス、カーネル間のパス、およびＤＰＥ（Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅ）アレイからＤＤＲメモリまでのパスなどが挙げられる。パーシャルリコンフィギュレーション（ＰＲ）を用いてパス構成を変更できる特徴がＮｏＣハードウェア実装に追加することができる。これらの付加機能によって、ＳｏＣ内のその他のコンポーネントのように、ＮｏＣに柔軟性を持たせることができるようになる。
【００１４】
以下、図面を参照しながら様々な特徴について説明する。なお、縮尺通りに描かれている図面もあり、そうでない図面もある。また、同様の構造または機能のエレメントは、すべての図面を通して同じ参照番号で表される。なお、図面は、特徴の説明を容易にするよう意図されているに過ぎない。これらは、クレームされる発明を余すところなく説明するよう意図されておらず、クレームされる発明の範囲を限定するものでもない。これに加えて、図示される例は、図示された態様または利点のすべてを有する必要はない。特定の例とともに説明される態様または利点は、当該例に必ずしも限定されることはなく、その他の例においてそのように図示されていなくても、そのように明確に説明されていなくても、当該その他の例において実施することができる。
【００１５】
図１は、ある例に係る、ＳｏＣ１０２を示すブロック図である。ＳｏＣ１０２は、処理システム１０４と、ＮｏＣ１０６と、コンフィギュレーションインターコネクト１０８と、１つ以上のプログラマブルロジック領域１１０と、ＤＰＥ（Ｄａｔａ  Ｐｒｏｃｅｓｓｉｎｇ  Ｅｎｇｉｎｅ）アレイ１１２とを備える集積回路（ＩＣ）である。ＳｏＣ１０２は、不揮発性メモリ（ＮＶＭ）１１６など、外部回路に連結することができる。ＮＶＭ１１６は、ＮｏＣ１０６、プログラマブルロジック領域（複数可）１１０、およびＤＰＥアレイ１１２を構成するためなど、ＳｏＣ１０２を構成するための、ＳｏＣ１０２にロードできるデータ（たとえば、ＰＤＩ（Ｐｒｏｇｒａｍｍｉｎｇ  Ｄｅｖｉｃｅ  Ｉｍａｇｅ））を格納できる。
【００１６】
一般に、処理システム１０４は、ＮｏＣ１０６を通して、およびコンフィギュレーションインターコネクト１０８を通してプログラマブルロジック領域（複数可）１１０に接続される。処理システム１０４は、さらに、ＮｏＣ１０６を通してＤＰＥアレイ１１２（たとえば、ＤＰＥアレイ１１２のインターフェース（ＩＦ）ブロック１１４）に接続される。ＤＰＥアレイ１１２（たとえば、ＩＦブロック１１４）は、ＮｏＣ１０６を通して、および直接１つ以上のプログラマブルロジック領域１１０に接続される。
【００１７】
処理システム１０４は、１つ以上のプロセッサコアを備え得る。たとえば、処理システム１０４は、複数のＡＲＭベースの埋め込みプロセッサコアを備え得る。プログラマブルロジック領域（複数可）１１０は、任意の数のコンフィギャラブルロジックブロック（ＣＬＢ）を含み得る。ＣＬＢは、コンフィギュレーションインターコネクト１０８を通して処理システム１０４を用いてプログラムまたは構成されてもよい。たとえば、コンフィギュレーションインターコネクト１０８は、たとえば、処理システム１０４のプロセッサコア（さらに後述するＰＭＣ（プラットフォーム管理コントローラ）など）による、プログラマブルロジック領域（複数可）１１０のファブリックのフレームベースプログラムミングを可能にできる。
【００１８】
ＤＰＥアレイ１１２は、相互接続された複数のＤＰＥを含む。ＤＰＥの各々は、プログラマブルであってもよい。たとえば、各ＤＰＥは、データ処理機能を提供できるコアを含んでもよい。また、ＤＰＥは、当該コアがアクセス可能なメモリモジュールを含んでもよい。ＤＰＥは、ＤＰＥアレイ１１２のその他のＤＰＥとの通信および／または異なるサブシステムとの通信を実装可能なＤＰＥインターコネクトをさらに含んでもよい。さらに、ＤＰＥインターコネクトは、ＤＰＥの構成をサポートしてもよい。ＩＦブロック１１４は、１つ以上のタイルを含んでもよい。ＩＦブロック１１４は、ＤＰＥアレイ１１２のＤＰＥと、処理システム１０４および１つ以上のプログラマブルロジック領域１１０など、ＳｏＣ１０２のその他の部分との間のインターフェースを提供する。
【００１９】
図１に示す上述したＳｏＣ１０２は、ＮｏＣ１０６を用いることができる例示的な実施態様である。本明細書において説明するその他の例示的な実装態様は、様々なサブシステムまたはコンポーネントを備えてもよく、備えなくてもよい。たとえば、例示的なＳｏＣは、プログラマブルロジック領域１１０およびＤＰＥアレイ１１２などのサブシステムを含まなくてもよい。さらには、プログラム固定式アクセラレータなど、その他のサブシステムがＤＰＥアレイ１１２に加えてまたはその代わりに含まれてもよい。
【００２０】
図２は、ある例に係る、ＮｏＣ１０６を示すブロック図である。ＮｏＣ１０６は、ＮｏＣマスタユニット（ＮＭＵ）２０２と、ＮｏＣスレーブユニット（ＮＳＵ）２０４と、ネットワーク２１４と、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）２１０と、レジスタブロック２１２とを備える。各ＮＭＵ２０２は、マスタ回路をＮｏＣ１０６に接続する入口回路である（たとえば、ＮｏＣ１０６への入り口）。各ＮＳＵ２０４は、ＮｏＣ１０６をスレーブエンドポイント回路に接続する出口回路である（たとえば、ＮｏＣ１０６からの出口）。また、入口回路であることに加えて、ＮＭＵ２０２は、出口機能も有し得る。ＮＭＵ２０２は、ネットワーク２１４を通してＮＳＵ２０４に接続される。いくつかの例では、ネットワーク２１４は、ＮｏＣパケットスイッチ（ＮＰＳ）２０６と、ＮＰＳ２０６間のルーティング２０８とを含む。各ＮＰＳ２０６は、ＮｏＣパケットのスイッチングを行う。ＮＰＳ２０６は、互いに接続されており、かつ、ルーティング２０８を通してＮＭＵ２０２およびＮＳＵ２０４に接続され、複数のパスを実装する。各ＮＰＳ２０６のスイッチング機能によって、各ＮＰＳ２０６を通して１つまたは複数のパスを実装することが可能になる。また、ＮＰＳ２０６は、パスごとに複数の仮想チャネルをサポートする。
【００２１】
ＮＰＩ２１０は、ＮＭＵ２０２と、ＮＳＵ２０４と、ＮＰＳ２０６とをプログラムするための回路を備える。ＮＰＩ２１０は、レジスタブロック２１２に連結された、対応するＮＭＵ２０２、ＮＳＵ２０４、およびＮＰＳ２０６の機能を設定するようにプログラムされるペリフェラルインターコネクトを含む。ＮｏＣ１０６に含まれるレジスタブロック２１２は、割込み、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御をサポートする。ＮＭＵ２０２およびＮＳＵ２０４のレジスタブロック２１２は、ＮＭＵ２０２およびＮＳＵ２０４の動作を制御するように書き込むことができるレジスタを含む。たとえば、レジスタブロック２１２は、ＮＭＵ２０２およびＮＳＵ２０４を有効／無効にするレジスタ、ＮＰＳ２０６からの後続のトランザクション要求またはＮＰＳ２０６への後続のトランザクション要求をＮＭＵ２０２およびＮＳＵ２０４に送信させないおよび／もしくは拒否させるレジスタ、ならびに／またはＮＰＳ２０６から受信した保留中のトランザクション要求を完了させるようにＮＭＵ２０２およびＮＳＵ２０４に指示するレジスタを含み得る。ＮＰＳ２０６のレジスタブロック２１２は、対応するＮＰＳ２０６のルーティングテーブルを形成する複数のレジスタを含み得る。レジスタブロック２１２は、書き込み要求を用いてレジスタブロック２１２に書き込むことなどによって、再プログラムされる前に使用できる状態に初期化することができる。ＮｏＣ１０６のコンフィギュレーションデータをＮＶＭ１１６に格納し、ＮｏＣ１０６および／またはその他のスレーブエンドポイント回路をプログラムするために（ＰＭＣから）ＮＰＩ２１０に提供することができる。
【００２２】
図３は、ある例に係る、ＮｏＣ１０６を通るエンドポイント回路間の接続を示すブロック図である。この例では、エンドポイント回路３０２は、ＮｏＣ１０６を通してエンドポイント回路３０４に接続されている。エンドポイント回路３０２は、マスタ回路であり、ＮｏＣ１０６のＮＭＵ２０２に連結されている。エンドポイント回路３０４は、ＮｏＣ１０６のＮＳＵ２０４に連結されたスレーブ回路である。各エンドポイント回路３０２および３０４は、処理システム１０４に含まれる回路、プログラマブルロジック領域１１０に含まれる回路、または別のサブシステムに含まれる回路であり得る。プログラマブルロジック領域１１０に含まれる各エンドポイント回路は、たとえば、プログラマブルロジックで構成された専用回路（たとえば、ハードニングされた回路）または回路であり得る。
【００２３】
ネットワーク２１４は、複数のパス３０６を含む。パス３０６は、ＮｏＣ１０６をプログラムすることによって実装される。各パス３０６は、１つ以上のＮＰＳ２０６と、関連するルーティング２０８とを含む。ＮＭＵ２０２は、少なくとも１つのパス３０６を通してＮＳＵ２０４と接続する。また、パス３０６は、１つ以上の仮想チャネル３０８を有し得る。
【００２４】
図４は、ある例に係る、ＮＰＩ２１０を通るレジスタブロック２１２までの接続を示すブロック図である。レジスタブロック２１２に接続するために、ＮＰＩ２１０は、ルートノード４０４と、１つ以上のＮＰＩスイッチ４０８と、プロトコルブロック４１０とを含む。ルートノード４０４は、いくつかの例では、ＰＭＣ４０２上に存在し、さらにＰＭＣ４０２は処理システム１０４内に存在し得るが、その他の例では、ルートノード４０４は、独立した回路であったり、別のシステムまたは回路上に存在したりし得る。一般に、ルートノード４０４は、ＮＰＩ２１０によって実装されるフォーマットにトランザクション要求をパケット化し得、メモリにマッピングされたトランザクション要求をＮＰＩスイッチ４０８に送信し得る。その後、ＮＰＩスイッチ４０８は、メモリにマッピングされたトランザクション要求の宛先ＩＤに基づいて、当該メモリにマッピングされたトランザクション要求をその他のＮＰＩスイッチ４０８またはプロトコルブロック４１０に送信し得る。任意の適切なトポロジーでＮＰＩスイッチ４０８同士を相互接続することができる。いくつかの例では、ＮＰＩスイッチ４０８は、ルートノード４０４をルートとするツリートポロジーとして相互接続される。次に、プロトコルブロック４１０は、メモリにマッピングされたトランザクション要求を、レジスタブロック２１２によって実装されるフォーマットに変換し得る。ＮＰＩ２１０が接続され得るスレーブエンドポイント回路の例として、レジスタブロック２１２が図４に示されている。その後、ＮＰＩ２１は、その他のスレーブエンドポイント回路に接続され得る。
【００２５】
ＰＭＣ４０２は、コンフィギュレーションインターコネクト１０８にさらに接続される。次に、コンフィギュレーションインターコネクト１０８は、プログラマブルロジック領域１１０に接続される。ＰＭＣ４０２は、コンフィギュレーションインターコネクト１０８を通してプログラマブルロジック領域１１０のファブリックをプログラムするように構成される。コンフィギュレーションインターコネクト１０８は、ＳｏＣ１０２上のプログラマブルユニットをプログラムするための送り出し機構であり、ＳｏＣ１０２上のその他のプログラマブルユニット（たとえば、スレーブエンドポイント回路）をプログラムするためのＮＰＩ２１０の送り出し機構から独立している。
【００２６】
前述したように、レジスタブロック２１２は、ＮＰＳ２０６の対応するルーティングテーブルを作成するようにプログラムされた複数のレジスタを含む。図５は、ある例に係る、ルーティングテーブル５００を示す図である。ルーティングテーブル５００は、宛先ＩＤに従ってレジスタを詰め込んでいる。ＮＰＳ２０６によって受信され、その後送信される各パケットは、ルーティングテーブル５００がパケットを送信およびルーティングするために利用する宛先ＩＤを含んでいる。この例の場合、ＮＰＳ２０６は、４個のポート（Ｐｏｒｔ０〜３）と、８個の仮想チャネル（ＶＣ０〜７）とを有する。ルーティングテーブルの行は、パケットが受信されるポートと仮想チャネルとの組合せ（Ｐｏｒｔ対ＶＣ）に対応する。ルーティングテーブルの列は、受信パケットに含まれている宛先ＩＤ（ＩＤｙ）に対応する。ルーティングテーブルのエントリは、Ｐｏｒｔ対ＶＣとＩＤｙとに基づいてパケットが送信される送信用ポートを示す。いくつかの例では、所与のＩＤｙについてのエントリは、レジスタブロック２１２に含まれる１つ以上のレジスタに詰め込まれている。当該１つ以上のレジスタの定義済みビットがルーティングテーブルのエントリであり、当該定義済みビットは、ＰｏｒｔとＶＣとの組合せに対応する。ＮＰＳ２０６は、パケットを受信し、当該パケットがどのポートで受信されるかに基づいて当該パケットの仮想チャネルを特定し、パケットに含まれている宛先ＩＤを特定し、ルーティングテーブルを形成する複数のレジスタにおいてプログラムされた受信用ポート、仮想チャネル、および宛先ＩＤに基づいてＮＰＳ２０６の送信用ポートを識別し、ＮＰＳ２０６の送信用ポートでパケットを送信するように構成される。
【００２７】
この例では、４個のポートおよび８個の仮想チャネルに基づく３２個のＰｏｒｔとＶＣとの組合せがあり、送信用ポートについての各エントリは、４個のポートに基づいて少なくとも２ビットである。それゆえ、この例では、ＩＤｙごとに２つの３２ビットのレジスタが実装される。その他の例は、ルーティングテーブルごとに異なるレジスタを実装し得る。
【００２８】
いくつかの例では、宛先ＩＤに基づいてレジスタを詰め込むことによって、パーシャルリコンフィギュレーション時にパスを変更する際、リコンフィギュレーション対象ではないその他のパスにリコンフィギュレーションを行ったり中断したりすることなく、ルーティングテーブルをより簡単にリコンフィギュレーションを行うことができるであろう。
【００２９】
その他の例では、ルーティングテーブルに関するその他の特徴が実装されてもよい。たとえば、複数の宛先ＩＤをルーティングテーブルにおいてセグメント化できる。たとえば、複数の宛先ＩＤを１つ以上のレジスタに詰め込んで、パケットのオーバーヘッドおよび／または処理を低減させる。このような例では、このセグメント化がパスにリコンフィギュレーションを行う機能に影響を与える可能性がある。たとえば、パーシャルリコンフィギュレーション中に存続するパスの一部がルーティングテーブルのセグメントにあるエントリに対応する場合、当該存続するパスの存在によって、同じセグメントにある別のパスにリコンフィギュレーションを行うことができなくなる可能性がある。
【００３０】
図６は、いくつかの例に係る、ＳｏＣ１０２を操作する方法６００である。動作６０２では、ＮｏＣ１０６のコンフィギュレーションを行う。より一般的には、システムレベルのコンフィギュレーションの一部および／またはそのリコンフィギュレーション（たとえば、一部またはすべて）としてＮｏＣ１０６にコンフィギュレーションを行うことができる。また、動作６０２中、ＳｏＣ１０２のその他のサブシステムにコンフィギュレーションを行うことができる。たとえば、プログラマブルロジック領域１１０および／またはＤＰＥアレイ１１２にコンフィギュレーションを行うことができる。上述したように、ＮＰＩ２１０を通るメモリにマッピングされたトランザクションを介してＮｏＣ１０６にコンフィギュレーションを行って、ＮＭＵ２０２、ＮＳＵ２０４、およびＮＰＳ２０６のレジスタブロック２１２に書き込むことができる。コンフィギュレーションインターコネクト１０８を介して、プログラマブルロジック領域１１０にコンフィギュレーションを行うことができる。ＮｏＣ１０６が構成された後に、ＮｏＣ１０６およびＤＰＥアレイ１１２のＩＦブロック１１４を介して、ＤＰＥアレイ１１２にコンフィギュレーションを行うことができる。プログラマブルロジック領域１１０および／またはＤＰＥアレイ１１２のコンフィギュレーションによって、１つ以上のアプリケーション、またはそれらの任意のサブセットが、プログラマブルロジック領域１１０および／またはＤＰＥアレイ１１２上でインスタンス化され得る。ＮｏＣ１０６およびその他のコンポーネントのコンフィギュレーションは、処理システム１０４（たとえば、ＰＭＣ４０２）の制御下で行われ得る。処理システム１０４は、メモリからＰＤＩを取得し得、ＰＤＩは、ＮｏＣ１０６のコンフィギュレーションデータ、プログラマブルロジック領域１１０のビットストリーム、および／またはＤＰＥアレイ１１２のコンフィギュレーションデータを含み得る。その後、処理システム１０４は、ＰＤＩに基づいてコンポーネントに対するコンフィギュレーションを調整および制御し得る。
【００３１】
動作６０４では、ＮｏＣ１０６を介して通信が発生する。より一般的には、ＮｏＣ１０６のコンフィギュレーションを含む、ＳｏＣ１０２のコンフィギュレーションに基づいて、ＳｏＣ１０２が操作される。コンフィギュレーションが行われると、処理システム１０４は、動作させるためにコンポーネントを有効化し、当該動作を開始させ得る。ＳｏＣ１０２上の様々なサブシステムは、たとえば、ＮｏＣ１０６を介してアプリケーションデータを互いに伝達する。たとえば、プログラマブルロジック領域１１０および／またはＤＰＥアレイ１１２上でインスタンス化されたアプリケーションまたはそれらのサブセットは、互いに通信することができたり、ＮｏＣ１０６を介してその他のサブシステム（たとえば、処理システム１０４および／またはメモリコントローラ）と通信できたりする。
【００３２】
動作６０６では、パーシャルリコンフィギュレーションイベントがトリガされる。パーシャルリコンフィギュレーションイベントのトリガは、用途に特有であってもよい。たとえば、プログラマブルロジック領域１１０および／またはＤＰＥアレイ１１２上でインスタンス化されたアプリケーションまたはそのサブセットがそのタスクを終了させ、割込みを生成してパーシャルリコンフィギュレーションをトリガしてもよい。割込みは、ＮｏＣ１０６、専用のインターコネクト、または別のインターコネクトを介して処理システム１０４に伝達され得、当該割込みを受信したことに応答して、処理システム１０４（たとえば、ＰＭＣ４０２）は、パーシャルリコンフィギュレーションのための制御を行う。
【００３３】
動作６０８では、ＮｏＣ１０６にパーシャルリコンフィギュレーションが行われる。より一般的には、より大きなパーシャルリコンフィギュレーションの一部としてＮｏＣ１０６にコンフィギュレーションが行われ得る。また、動作６０８中、ＳｏＣ１０２のその他のサブシステムにパーシャルリコンフィギュレーションが行われ得る。パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われるＮｏＣ１０６およびその他のサブシステムの回路部品のインスタンスを、本明細書において、リコンフィギュレーションパーティション（ＲＰ）と称する。パーシャルリコンフィギュレーション中、ＲＰの回路部品または領域にはリコンフィギュレーションが行われ、未使用状態から使用状態に、使用状態から未使用状態に、および／または使用状態から異なる使用状態に遷移し得る。プログラマブルロジック領域１１０およびＤＰＥアレイ１１２など、その他のサブシステムを参照すると、様々なアプリケーションが無効化および／または上書きされ得、パーシャルリコンフィギュレーションによって、異なるアプリケーションまたはそれらの任意のサブセットがこれらのサブシステム上でインスタンス化され得る。ＮｏＣ１０６およびその他のサブシステムのパーシャルリコンフィギュレーションは、処理システム１０４（たとえば、ＰＭＣ４０２）の制御下で行われ得る。処理システム１０４は、メモリからＰＤＩを取得し得、ＰＤＩは、リコンフィギュレーションパーティションのコンフィギュレーションデータおよび／またはビットストリームを含み得る。その後、処理システム１０４は、ＰＤＩに基づいて回路部品のパーシャルコンフィギュレーションを調整および制御し得る。
【００３４】
パーシャルリコンフィギュレーションによって、ＲＰに含まれるコンポーネントにリコンフィギュレーションが行われ得る一方で、ＲＰの外部にあるその他のコンポーネントには、リコンフィギュレーションが行われない。これに加えて、ＮｏＣについて、リコンフィギュレーションが行われないＮｏＣのパス（たとえば、ＲＰの外部にあるパス）を介して（たとえば、動作６０４において生じるような）通信が継続してもよい。したがって、ＮｏＣのリソースのサブセットを、ＮｏＣのリソースの別のサブセットが有効かつ邪魔されない状態のまま、修正することができる。ＮｏＣ１０６のパーシャルリコンフィギュレーションのさらなる詳細については、以下に図７で説明する。
【００３５】
動作６１０では、ＮｏＣ１０６を介して通信が発生する。より一般的には、ＳｏＣ１０２の、パーシャルリコンフィギュレーションを有するコンフィギュレーションに基づいて、ＳｏＣ１０２が操作される。パーシャルリコンフィギュレーションが完了すると、処理システム１０４は、動作させるためにコンポーネントを有効化し、当該動作を開始させ得る。前述したように、ＳｏＣ１０２上の様々なサブシステムは、たとえば、ＮｏＣ１０６を介してアプリケーションデータを互いに伝達する。
【００３６】
図７は、いくつかの例に係る、ＮｏＣ１０６にパーシャルリコンフィギュレーションを行うための図６の動作６０８の例示的な方法を示す図である。前述したように、動作６０８では、処理システム１０４（たとえば、ＰＭＣ４０２）の制限下で、ＮｏＣ１０６にパーシャルリコンフィギュレーションが行われる。動作７０２では、処理システム１０４は、ＲＰに含まれるリコンフィギュレーションが行われるＮＭＵ２０２を制御する。処理システム１０４は、ＲＰに含まれるリコンフィギュレーションが行われるＮＭＵ２０２のアドレスまたはＩＤをＰＤＩから取得する。次に、処理システム１０４は、ＲＰに含まれるＮＭＵ２０２のレジスタブロック２１２にＮＰＩ２１０を通してトランザクション要求を送り、ＮＭＵ２０２を制御する。トランザクション要求は、ＮＭＵ２０２にさらにパケットをＮｏＣ１０６に送信することを停止させ、かつ、保留中のパケットを消去させる値を、ＮＭＵ２０２のレジスタブロック２１２に書き込む。次に、処理システム１０４は、所定時間、パケットが消去されるのを待つ。所定時間の後、処理システム１０４は、ＮＰＩ２１０を通るトランザクション要求を介して各ＮＭＵ２０２のステータスレジスタを読み出し、保留中のパケットをまだ有しているＮＳＵ２０４があるかどうかを判断し得る。ＮＭＵ２０２が保留中のパケットをまだ有している場合、エラーが生成され得る。保留中のパケットを有するＮＭＵ２０２がない場合、処理システム１０４は、ＮＰＩ２１０を通るトランザクション要求を介してＮＭＵ２０２の動作を無効化または停止させる。
【００３７】
動作７０４では、処理システム１０４は、ＲＰに含まれるリコンフィギュレーションが行われるＮＳＵ２０４を制御する。処理システム１０４は、ＲＰに含まれるリコンフィギュレーションが行われるＮＳＵ２０４のアドレスまたはＩＤをＰＤＩから取得する。次に、処理システム１０４は、ＲＰに含まれるＮＳＵ２０４のレジスタブロック２１２にＮＰＩ２１０を通してトランザクション要求を送り、ＮＳＵ２０４を制御する。トランザクション要求は、ＮＳＵ２０４にＮｏＣ１０６からの後続の受信パケットを拒否させて、かつ、保留中のパケットを消去させる値を、ＮＳＵ２０４のレジスタブロック２１２に書き込む。次に、処理システム１０４は、所定時間、パケットが消去されるのを待つ。所定時間の後、処理システム１０４は、ＮＰＩ２１０を通るトランザクション要求を介して各ＮＳＵ２０４のステータスレジスタを読み出し、保留中のパケットをまだ有しているＮＳＵ２０４があるかどうかを判断し得る。ＮＳＵ２０４が保留中のパケットをまだ有している場合、エラーが生成され得る。保留中のパケットを有するＮＳＵ２０４がない場合、処理システム１０４は、ＮＰＩ２１０を通るトランザクション要求を介してＮＳＵ２０４の動作を無効化または停止させる。
【００３８】
動作７０２および７０４において上述したようにＮＭＵ２０２およびＮＳＵ２０４を制御すると、ＲＰに含まれるＮｏＣ１０６のパス上のトラフィックが休止させられる。トラフィックを休止させると、ＲＰにリコンフィギュレーションを行うことができるようになる。動作７０６では、処理システム１０４は、ＲＰに含まれるＮＰＳ２０６、ＮＭＵ２０２、およびＮＳＵ２０４にリコンフィギュレーションを行う。処理システム１０４は、ＰＤＩに含まれるコンフィギュレーションデータに従ってＮＰＳ２０６と、ＮＭＵ２０２と、ＮＳＵ２０４とにリコンフィギュレーションを行う。上述したように、処理システム１０４は、ＮＰＩ２１０を通るメモリにマッピングされたトランザクションを介してＮＰＳ２０６と、ＮＭＵ２０２と、ＮＳＵ２０４とにリコンフィギュレーションを行う。リコンフィギュレーション中、ＲＰに含まれるＮｏＣ１０６に入らないパスおよびＮｏＣ１０６から出ないパス、またはＮｏＣ１０６から独立したパス上で、トラフィックは継続する。ＲＰの一部ではないＮＰＳ２０６、ＮＭＵ２０２、およびＮＳＵ２０４にはリコンフィギュレーションは行われず、リコンフィギュレーションによる影響を受けないので、これらのＮＰＳ２０６、ＮＭＵ２０２、およびＮＳＵ２０４間のパスは、ＲＰに含まれるＮＰＳ２０６、ＮＭＵ２０２、およびＮＳＵ２０４にリコンフィギュレーションを行っている間、動作し続けてもよい。
【００３９】
動作７０８では、処理システム１０４は、リコンフィギュレーションが行われたＮＳＵ２０４を有効化して使用状態にする。リコンフィギュレーション後、リコンフィギュレーションの前に無効化または停止されたＮＳＵ２０４は、有効化されて通常動作に移る。動作７１０では、処理システム１０４は、リコンフィギュレーションが行われたＮＭＵ２０２を有効化して使用状態にする。リコンフィギュレーション後、リコンフィギュレーションの前に無効化または停止されたＮＭＵ２０２は、有効化されて通常動作に移る。それゆえ、ＲＰに含まれるリコンフィギュレーションが行われたＮＰＳ２０６、ＮＭＵ２０２、およびＮＳＵ２０４を介した通信が、図６の動作６１０において生じ得る。
【００４０】
図８〜図１２は、いくつかの例に係る、ＮｏＣ１０６にパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。図８〜図１２は、各々、第１サブシステム８０２、ＮｏＣ１０６、および第２サブシステム８０４のそれぞれの一部を示している。サブシステム８０２および８０４の各々は、ＮｏＣ１０６を介して通信するＳｏＣ１０２のいずれかのサブシステムであり得る。たとえば、サブシステム８０２および８０４は、プログラマブルロジック領域１１０、ＤＰＥアレイ１１２、処理システム１０４、メモリコントローラなどであり得る。
【００４１】
図８〜図１２の具体的なユースケースシナリオでは、サブシステム８０２および８０４のうち少なくとも１つがプログラマブルであり、ＲＰの一部である。各ＲＰは、パーシャルリコンフィギュレーション中に（たとえば、使用中から未使用中に、未使用から使用中に、および使用中から異なる使用に）リコンフィギュレーションが行われる回路部品のインスタンスを表す。回路のインスタンスは、（ＮＰＳ２０６自体とは対照的に）ＮＰＳ２０６のレジスタブロック２１２の１つ以上のレジスタであってもよい。このレベルの粒度によって、たとえば、共有ＮＰＳ２０６を通る異なるパス３０６を別々にＲＰおよびスタティック領域に存在させることができる。なお、様々なパス３０６がＮＰＳ２０６を共有してもよく、ここで、共有ＮＰＳ２０６を通るパス３０６の一部がスタティックであり、共有ＮＰＳ２０６を通るパス３０６の別の一部がＲＰに存在してもよい。図５のルーティングテーブル５００では、共有ＮＰＳ２０６を通るこれらのパス３０６は、１つ以上のパス３０６がＲＰに含まれる一方でその他のパスがＲＰに含まれないよう、論理的に別個であってもよい。
【００４２】
ＲＰは、パーシャルリコンフィギュレーション前にインスタンス化された最初のリコンフィギュレーションモジュール（ＲＭ）のコンフィギュレーションを有し得、パーシャルリコンフィギュレーションの結果、インスタンス化された後続のＲＭのコンフィギュレーションを有し得る。各ＲＭは、たとえば、論理関数などについてのアプリケーションまたはそのサブセットを表したものであってもよい。
【００４３】
図８〜図１１は、さらに、プログラマブルではない、または、パーシャルリコンフィギュレーションイベント中にリコンフィギュレーションが行われない第１サブシステム８０２のスタティック領域８０６を示す。ＮｏＣ１０６には、様々なＮＭＵ２０２、ＮＳＵ２０４、およびパス３０６が図示されている。具体的には図示していないが、各パス３０６は、１つ以上のＮＰＳ２０６と、ルーティング２０８とを含む。
【００４４】
いくつかの例によると、ＲＰの外部にあるＮＭＵ２０２またはＮＳＵ２０４まで続く最初のコンフィギュレーションのいずれのパス３０６も、ＮｏＣ１０６のパーシャルリコンフィギュレーションが終わってからも存続する。それゆえ、このようなパスに続くＲＰ内のインターフェース、たとえば、ＮＭＵ２０２も、同様に、ＮｏＣ１０６のパーシャルリコンフィギュレーションが終わってからも存続する。さらには、パス３０６およびインターフェースが存続することを理由に、このようなインターフェースに対応するエンドポイント回路３０２のリコンフィギュレーションに制約が加えられる可能性がある。これに加えて、ＲＰの外部から始まるパス３０６、およびＲＰの最初のコンフィギュレーション時にＮＭＵ２０２またはＮＳＵ２０４を含むパス３０６のいずれも、当該パス３０６の始点にあるアプリケーションによって休止させられるはずである（たとえば、なぜならば、このようなＲＰの外部にある始点は、動作６０８のパーシャルリコンフィギュレーション中、処理システム１０４の制御下ではないと考えられるからである）。たとえば、パーシャルリコンフィギュレーションイベント中、このアプリケーションは、トラフィックを生成してＲＰまで続くパス３０６で送信をするはずがない。処理システム１０４は、パーシャルリコンフィギュレーションイベントが生じる当該アプリケーションに通信し得る。この時点で、アプリケーションは、ＲＰまで続くパス３０６を介した通信を停止し得る。
【００４５】
図８〜図１２において、様々なＲＰを連続した領域として示したが、これは分かりやすくするためである。実際には、ＲＰは、ＳｏＣ１０２の複数の独立した別個の領域を含み得る。
【００４６】
図８を参照すると、ＲＰ８０８は、第２サブシステム８０４の領域、ならびにＮＳＵ２０４ａおよび２０４ｂを含む。この例では、パーシャルリコンフィギュレーション中、ＲＰ８０８の外部にある始点に続くパス３０６ａおよび３０６ｃそれぞれのインターフェースであるとして、ＮＭＵ２０２ａおよび２０２ｃにリコンフィギュレーションは行われない。それゆえ、これらのインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。パーシャルリコンフィギュレーション中、処理システム１０４は、ＮＭＵ２０２ａおよび２０２ｃの対応するエンドポイント回路上で動作するアプリケーション（たとえば、スタティック領域８０６）に、トラフィックを生成してパス３０６ａおよび３０６ｃで送信させないようにし得る。パス３０６ａおよび３０６ｃ上のＮＰＳ２０６（または、それらのレジスタ）に対して、これらのＮＰＳ２０６にあるルーティングテーブルのためのレジスタブロック２１２のプログラムを書き換えることによってパス３０６を変更するようにリコンフィギュレーションを行うことができる、ＱｏＳ、エラー制御などを変更するようにリコンフィギュレーションを行うことができる、または、その他の方法でリコンフィギュレーションを行うことができる。また、パス３０６ａおよび３０６ｃのリコンフィギュレーションおよび／またはパーシャルリコンフィギュレーションによって第２サブシステム８０４上でインスタンス化されたアプリケーションもしくはそのサブセットに対応するよう、ＮＳＵ２０４ａならびに２０４ｂにもリコンフィギュレーションが行われる。ＮＳＵ２０４ａおよび２０４ｂならびにＮＰＳ２０６のリコンフィギュレーションは、図７で説明したように実行され得る。
【００４７】
図９を参照すると、ＲＰ８１０は、第１サブシステム８０２の領域と、第２サブシステム８０４の領域と、ＮＭＵ２０２ａおよび２０２ｂと、ＮＳＵ２０４ａおよび２０４ｂと、パス３０６ａ上のＮＰＳ２０６（または、そのレジスタ）とを含む。この例では、ＲＰ８１０の論理境界を超えるパス３０６はない（たとえば、ＲＰ８１０の外部に始点があるがＲＰ８１０内部に終点がないパス３０６、ＲＰ８１０の外部に始点はないがＲＰ８１０内部に終点があるパス３０６は、存在しない）。ＲＰ８１０に含まれるＮＭＵ２０２ａおよび２０２ｂならびにＮＳＵ２０４ａおよび２０４ｂは、サブシステム８０２および８０４上のＲＰ８１０の最初のＲＭおよび／または後続のＲＭの一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。図８で説明したように、ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ａおよび２０４ｂにリコンフィギュレーションが行われ得る。ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ａおよび２０４ｂのリコンフィギュレーションは、図７で説明したように行われ得る。パーシャルリコンフィギュレーションはＲＰ８１０の外部のコンポーネントに影響を与えないため、残りのＮｏＣ１０６は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域８０６、およびパス３０６ｂを通る通信は、通常動作を継続できる。
【００４８】
図１０を参照すると、ＲＰ８１２は、第１サブシステム８０２の領域、第２サブシステム８０４の領域、ＮＭＵ２０２ａおよび２０２ｂ、ＮＳＵ２０４ａおよび２０４ｂ、ならびにパス３０６ａおよび３０６ｃ上のＮＰＳ２０６（または、それらのレジスタ）を含む。この例では、パス３０６ｃは、ＲＰ８１２の論理境界を超えている。パス３０６ｃの始点は、第１サブシステム８０２のスタティック領域８０６とのインターフェース（たとえば、ＮＭＵ２０２ｃ）にある。ＮＳＵ２０４ａは、ＲＰ８１２内にあり、パス３０６ｃとのインターフェースである。ＲＰ８１２に含まれるＮＭＵ２０２ａおよび２０２ｂならびにＮＳＵ２０４ｂは、サブシステム８０２および８０４上のＲＰ８１２の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【００４９】
この例では、パーシャルリコンフィギュレーション中、ＮＭＵ２０２ｃは、ＲＰ８１２の外部にあるパス３０６ｃのインターフェースの始点であるとして、リコンフィギュレーションが行われない。それゆえ、このインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。パーシャルリコンフィギュレーション中、処理システム１０４は、ＮＭＵ２０２の対応するエンドポイント回路上で動作するアプリケーション（たとえば、スタティック領域８０６）に、トラフィックを生成してパス３０６ｃで送信させないようにし得る。
【００５０】
図８で説明したように、ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａおよび３０６ｃ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ａおよび２０４ｂにリコンフィギュレーションが行われ得る。ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａおよび３０６ｃ上のＮＰＳ２０６（または、そのレジスタ）、ならびにＮＳＵ２０４ａおよび２０４ｂのリコンフィギュレーションは、図７で説明したように行われ得る。パーシャルリコンフィギュレーションはＲＰ８１２の外部のその他のコンポーネントに影響を与えないため、パス３０６ｃを通る通信を停止させることに加えて、残りのＮｏＣ１０６は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域８０６、およびパス３０６ｂを通る通信は、通常動作を継続できる。
【００５１】
図１１を参照すると、ＲＰ８１４は、第１サブシステム８０２の領域、第２サブシステム８０４の領域、ＮＭＵ２０２ａ、２０２ｂ、および２０２ｅ、ＮＳＵ２０４ｂ、ならびにパス３０６ａおよび３０６ｄ上のＮＰＳ２０６（または、それらのレジスタ）を含む。この例では、パス３０６ｄは、ＲＰ８１４の論理境界を超えている。ＲＰ８１４にあるインターフェース（たとえば、ＮＭＵ２０２ｅ）にパス３０６ｄの始点がある。ＮＭＵ２０２ｃは、ＲＰ８１４の外部にあり、パス３０６ｄとのインターフェースである。ＲＰ８１４に含まれるＮＭＵ２０２ａおよび２０２ｂならびにＮＳＵ２０４ｂは、サブシステム８０２および８０４上のＲＰ８１４の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【００５２】
この例では、パーシャルリコンフィギュレーション中、ＲＰ８１４の外部のエンドポイントへのパス３０６ｄ上のＮＰＳ２０６（または、そのレジスタ）には、リコンフィギュレーションが行われない。それゆえ、このパス３０６ｄは、パーシャルリコンフィギュレーションが終わってからも存続する。ＲＰ８１４にあるアプリケーションまたはそのサブセットのリコンフィギュレーションを可能にするよう、ＮＭＵ２０２ｅにリコンフィギュレーションを行ってもよい。
【００５３】
図８で説明したように、ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ｂにリコンフィギュレーションが行われ得る。ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａ上のＮＰＳ２０６（または、そのレジスタ）、ならびにＮＳＵ２０４ｂのリコンフィギュレーションは、図７で説明したように行われ得る。パーシャルリコンフィギュレーションはＲＰ８１４の外部のその他のコンポーネントに影響を与えないため、ＲＰ８１４にあるＮＭＵ２０２ｅを休止させることによってパス３０６ｄを通る通信を停止することに加えて、残りのＮｏＣ１０６は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域８０６、およびパス３０６ｂを通る通信は、通常動作を継続できる。
【００５４】
その他の例では、パーシャルリコンフィギュレーション中、図１０のパス３０６ｃおよび／または図１１のパス３０６ｄにリコンフィギュレーションが行われてもよい。望ましくは、たとえば、リコンフィギュレーション中に有効なトランザクションがパス３０６ｃおよび３０６ｄなどの境界パスに残っている可能性がある場合、パーシャルリコンフィギュレーションが終わってからも当該境界パスが存続することが望ましい。リコンフィギュレーション中に有効なトランザクションが境界パスに残っていた場合、この境界パスにリコンフィギュレーションを行うことによって、ＮｏＣ１０６上に回復不能な状況を引き起こしてしまう可能性がある。境界パスとのインターフェースにあるツールおよび／またはアプリケーションによって確実に各境界パスに保留中の有効なトランザクションが存在しないようにできるのであれば、パーシャルリコンフィギュレーション中に（たとえば、パス３０６ｃおよび／または３０６ｄを取り除くことによって）これらの境界パスにリコンフィギュレーションが行われてもよい。
【００５５】
図１２を参照すると、第１のＲＰ８１６は、第１サブシステム８０２の領域、第２サブシステム８０４の領域、ＮＭＵ２０２ａ、２０２ｂ、および２０２ｅ、ＮＳＵ２０４ｂ、ならびにパス３０６ａおよび３０６ｄ上のＮＰＳ２０６（または、それらのレジスタ）を含み、第２のＲＰ８１８は、第１サブシステム８０２の別の領域、第２サブシステム８０４の別の領域、ＮＭＵ２０２ｃおよび２０２ｄ、ＮＳＵ２０４ｃおよび２０４ｄ、ならびにパス３０６ｂおよび３０６ｄ上のＮＰＳ２０６（または、それらのレジスタ）を含む。この例では、パス３０６ｄは、ＲＰ８１６および８１８の論理境界を超えている。パス３０６ｄは、第１のＲＰ８１６にあるインターフェース（たとえば、ＮＭＵ２０２ｅ）に始点を有し、第２のＲＰ８１８に別のインターフェース（たとえば、ＮＭＵ２０２ｃ）を有する。第１のＲＰ８１６に含まれるＮＭＵ２０２ａおよび２０２ｂならびにＮＳＵ２０４ｂは、サブシステム８０２および８０４上の第１のＲＰ８１６の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。同様に、第２のＲＰ８１８に含まれるＮＭＵ２０２ｄならびにＮＳＵ２０４ｃおよび２０４ｄは、サブシステム８０２および８０４上の第２のＲＰ８１８の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【００５６】
この例では、パーシャルリコンフィギュレーション中、第１のＲＰ８１６の外部のエンドポイントに続くパス３０６ｄ上のＮＰＳ２０６（または、そのレジスタ）には、リコンフィギュレーションが行われない。それゆえ、このパス３０６ｄは、パーシャルリコンフィギュレーションが終わってからも存続する。第１のＲＰ８１６にあるアプリケーションまたはそのサブセットのリコンフィギュレーションを可能にするよう、ＮＭＵ２０２ｅにリコンフィギュレーションを行ってもよい。パーシャルリコンフィギュレーション中、ＮＭＵ２０２ｃは、第２のＲＰ８１８の外部にある始点に続くパス３０６ｄのインターフェースであるとして、リコンフィギュレーションが行われない。それゆえ、このインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。
【００５７】
図８で説明したように、ＮＭＵ２０２ａ、２０２ｂ、および２０２ｄ、パス３０６ａおよび３０６ｂ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ｂ、２０４ｃ、および２０４ｄにリコンフィギュレーションが行われ得る。第１のＲＰ８１６の一部として、ＮＭＵ２０２ａおよび２０２ｂ、パス３０６ａ上のＮＰＳ２０６（または、そのレジスタ）、ならびにＮＳＵ２０４ｂのリコンフィギュレーションは、図７で説明したように行われ得る。同様に、第２のＲＰ８１８の一部として、ＮＭＵ２０２ｄ、パス３０６ｂ上のＮＰＳ２０６（または、それらのレジスタ）、ならびにＮＳＵ２０４ｃおよび２０４ｄのリコンフィギュレーションは、図７で説明したように行われ得る。パーシャルリコンフィギュレーションは第１のＲＰ８１６および第２のＲＰ８１８の外部のその他のコンポーネントに影響を与えないため、残りのＮｏＣ１０６は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。
【００５８】
図１３は、本開示の例に係る、回路設計システム１３００の例を示すブロック図である。回路設計システム１３００は、入／出力（ＩＯ）装置１３０４およびディスプレイ１３０６に連結されたコンピュータ１３０２を備える。コンピュータ１３０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１３１２など、コンピューティングデバイスの構成要素を備え得るハードウェアプラットフォーム１３１０と、システムメモリ１３１４と、ストレージ１３１６と、入／出力（ＩＯ）インターフェース１３１８と、様々な補助回路１３２０とを備える。ＣＰＵ１３１２は、１つ以上のマイクロプロセッサを含み得る。ＣＰＵ１３１２は、本明細書において説明する１つ以上の動作を実行する命令を実行するように構成される。当該命令は、ハードウェアプラットフォーム１３１０（たとえば、キャッシュメモリ）に含まれるシステムメモリ１３１４、ストレージ１３１６、またはその他のメモリなど、非一時的なメモリに格納され得る。システムメモリ１３１４は、情報を格納する１つ以上のデバイスを含む。システムメモリ１３１４は、たとえば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）、または、それらの組合せを含み得る。ストレージ１３１６は、ハードディスク、フラッシュメモリモジュール、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｉｓｋ）、光ディスクなど、１つ以上のローカルな記憶装置を含む。また、ストレージ１３１６は、１つ以上のネットワークデータ記憶システムと通信するように構成されたインターフェース（複数可）を含み得る。ＩＯインターフェース１３１８は、コンピュータ１３０２へのインターフェースと、コンピュータ１３０２からのインターフェースとを含む。ＩＯインターフェース１３１８は、ＩＯ装置１３０４に連結され得る。ＩＯ装置１３０４は、キーボード、マウスなどを含み得る。また、ＩＯインターフェース１３１８をディスプレイ１３０６に連結され得る。ディスプレイ１３０６は、ユーザにＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）１３３４を提示できる。補助回路１３２０は、キャッシュ、電源、クロック回路、データレジスタ、ＩＯインターフェースなどを含み得る。
【００５９】
コンピュータ１３０２は、オペレーティングシステム（ＯＳ）１３３０および回路設計ツール１３３２から構成されるソフトウェアプラットフォームをさらに含む。ＯＳ１３３０および回路設計ツール１３３２は、ＣＰＵ１３１２によって実行される命令を含む。当該命令は、システムメモリ１３１４、ストレージ１３１６、またはその他のメモリに格納され得る。ＯＳ１３３０は、Ｌｉｎｕｘ（登録商標）、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）、Ｍａｃ  ＯＳ（登録商標）など、任意の周知のオペレーティングシステムを含み得る。回路設計ツール１３３２は、ＯＳ１３３０内で動作するアプリケーションである。ＯＳ１３３０は、ハードウェアプラットフォーム１３１０へのインターフェースを提供する。回路設計ツール１３３２のいくつかの動作について後述する。本明細書に記載の技術を備えるように適応させることができる例示的な回路設計ツールとして、カリフォルニア州サンホセのザイリンクス株式会社から入手可能なＶｉｖａｄｏ（登録商標）Ｄｅｓｉｇｎ  Ｓｕｉｔｅがある。その他の回路設計ツールも同様に適応させることができる。
【００６０】
図１４は、回路設計ツール１３３２の例を示すブロック図である。回路設計ツール１３３２は、統合開発環境（ＩＤＥ）モジュール１４０２と、設計エントリモジュール１４０４と、論理合成モジュール１４０６と、物理合成モジュール１４０８と、ＧＵＩ（Ｇｒａｐｈｉｃａｌ  Ｕｓｅｒ  Ｉｎｔｅｒｆａｃｅ）モジュール１４１０とを備える。モジュール１４０２、１４０４、１４０６、１４０８、および１４１０は、回路設計ツール１３３２の１つの例示的な実施態様に過ぎない。本明細書において説明するモジュール１４０２、１４０４、１４０６、１４０８、および１４１０が実行する機能は、回路設計ツール１３３２が備える１つ以上のモジュールの異なる構成によって実行され得る。回路設計ツール１３３２が備えるモジュールは、電子システムの一部である回路によって、電子システムに含まれるファームウェアによって、電子システムに含まれるソフトウェアによって、またはそれらの組合せによって実現され得る。回路設計ツール１３３２が実装され得る例示的な電子システムは、図１３で上述した。
【００６１】
一般に、回路設計ツール１３３２は、回路設計の抽象記述を生成する。この抽象記述は、定義済み対象ＩＣ（「対象ハードウェア」）において実装するために回路設計の物理記述になるよう処理される。回路設計ツール１３３２は、様々な中間変換によって回路設計の抽象記述を処理して、回路設計の物理的実装を作成することができる。プログラムマブルＩＣ（たとえば、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ））の場合、回路設計の物理的実装をフォーマットしてプログラマブルＩＣに読み込み、物理回路を作成することができる。よって、回路設計ツール１３３２は、回路設計の抽象表現を回路設計の物理表現に変換する。回路設計の物理表現は、バイナリデータ（物理的実装）にフォーマットされ得、バイナリデータは、対象ハードウェアにおいて物理回路を実現するために用いられ得る。
【００６２】
ユーザは、回路設計ツール１３３２とやり取りしてソースファイル１４２０を指定したり生成したりすることができる。ソースファイル１４２０は、ＲＴＬ（Ｒｅｇｉｓｔｅｒ−Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）ソース１４２２と、トラフィック仕様１４２４と、制約１４２６とを含み得る。ＲＴＬソース１４２２は、高位ブロックモデルの回路設計、より下位のＨＤＬ（ハードウェア記述言語）モデルの回路設計など、様々な抽象レベルの回路設計を指定する１つ以上のファイルを含む。ＲＴＬソース１４２２は、対象ハードウェアにほとんどまたはまったく依存しない、および／または対象ハードウェアのアーキテクチャに固有であり得る。さらには、ユーザは、回路設計ツール１３３２とやり取りしてトラフィック仕様１４２４を指定したり生成したりすることができる。トラフィック仕様１４２４は、回路設計に含まれるＮｏＣのパスのＩＤ、これらのパスの対応する特性を含むファイルである。トラフィック仕様１４２４は、パス上の仮想チャネル、割込み、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御などを指定し得る。制約１４２６は、回路設計上の制約を指定する１つ以上のファイルを含む。特に、制約１４２６は、回路設計のタイミング性能要件（たとえば、特定のクロックの動作周波数、最大入力パス遅延、最大出力パス遅延など）を指定するタイミング制約１４５０を含む。また、制約１４２６は、配置制約１４５２およびルーティング制約１４５４を含み得る。
【００６３】
回路設計ツール１３３２は、ソースファイル１４２０を処理して実装ファイル１４３０を生成する。実装ファイル１４３０は、異なる対象ハードウェアの依存性に対して異なる回路設計を指定する１つ以上のファイルを含む。たとえば、実装ファイル１４３０は、１つ以上のネットリスト１４３２と、１つ以上の物理的実装１４３４とを含み得る。ネットリスト（複数可）１４３２は、合成されたネットリスト、配置されたネットリスト、配置およびルーティングされたネットリストなどを含み得る。物理的実装１４３４は、ＰＤＩを含み得る。ＰＤＩは、ビットストリーム、コンフィギュレーションデータ、またはその他の実装情報を含み得る。
【００６４】
ＩＤＥモジュール１４０２は、対象ハードウェアの回路設計を組み立て、実装、検証するための、ＧＵＩモジュール１４１０を通るユーザインターフェースを提供する。ＩＤＥモジュール１４０２は、設計エントリモジュール１４０４、論理合成モジュール１４０６、および物理合成モジュール１４０８の呼び出しを含む回路設計処理の全体を制御する。
【００６５】
設計エントリモジュール１４０４は、ＧＵＩモジュール１４１０によるユーザ入力に応じて、回路設計の機能記述を生成する。機能記述は、複数のフリップフロップ、複数のメモリ、複数の論理ゲート、複数のプロセッサなど、接続（「ネット」または「信号」とも称す）によって互いに連結された複数の回路部品についての記述（たとえば、複数のプリミティブ）を含み得る。ＧＵＩモジュール１４１０は、回路設計者が様々なコンポーネントを表すシンボルおよびブロックを接続して回路設計の図面を作成するグラフィックインターフェースを含み得る。この回路設計は、ＲＴＬソース１４２２に変換される。これらの接続は、対象ハードウェアのＮｏＣを通るパスを含み得る。それゆえ、ユーザは、ＧＵＩモジュール１４１０を介して、ＮｏＣを通るパスの属性を指定し得る。当該属性は、トラフィック仕様１４２４を生成するために用いられ得る。ＧＵＩモジュール１４１０は、ユーザがＨＤＬコードを直接書き込んでＲＴＬソース１４２２およびトラフィック仕様１４２４を作成するテキストインターフェースを含み得る。ＧＵＩモジュール１４１０は、図面ベースの入力とテキストベースの入力との組合せを用いることができる。ＧＵＩモジュール１４１０を介して、ユーザは、回路設計で実装するために、ソースファイル１４２０に格納された様々なプリミティブにアクセスし得る。各プリミティブは、ＧＵＩモジュール１４１を通してブロックまたはシンボルとして用いるためのフォーマット、ＨＤＬコードなど、または、それらの組合せで１つまたは複数のソースファイル１４２０に格納され得る。
【００６６】
論理合成モジュール１４０６は、ＲＴＬソース１４２２において指定されている機能記述から回路設計の論理記述を作成する。論理記述は、特有の論理エレメントに変換された回路設計の論理表現を含む。たとえば、論理合成モジュール１４０６は、汎用的な回路要素を技術に固有の回路要素に変換する「テクノロジーマッピング」を行うことができる。たとえば、論理記述は、ルックアップテーブル（ＬＵＴ）、桁上げ論理、ＩＯバッファ、および同様の技術に固有のコンポーネントなど、プログラムマブルＩＣのアーキテクチャに最適化された固有の論理エレメントに変換された回路設計の表現を含み得る。別の例では、論理記述は、ゲート、フリップフロップなど（「ゲートレベル記述」とも称する場合もある）に変換された回路設計の表現を含み得る。論理記述は、ネットリスト１４３２（たとえば、合成ネットリスト）によって指定され得る。
【００６７】
物理合成モジュール１４０８は、論理記述から回路設計の物理記述を作成する。回路設計の物理記述は、対象ＩＣにおいて実装するための回路設計の物理表現である。ある例では、物理合成モジュール１４０８は、ＮｏＣコンパイラ１４４０と、配置／ルートモジュール１４４２と、タイミング解析モジュール１４４４とを備える。ＮｏＣコンパイラ１４４０は、物理的な定義済みレイアウトの対象ＩＣ内に、論理記述において指定されているＮＭＵおよびＮＳＵのインスタンスを配置する。さらに、ＮｏＣコンパイラ１４４０は、ＮＭＵとＮＳＵとの間にパスをルーティングする。物理的な定義済みレイアウトで配置されているＮＭＵおよびＮＳＵのＩＤを用いて、ＮｏＣコンパイラ１４４０は、トラフィック仕様１４２４を更新する。配置／ルートモジュール１４４２は、物理的な定義済みレイアウトの対象ＩＣ内に、論理記述において指定されている回路部品のインスタンス（ＮｏＣ内の回路部品を除く）を配置する（「配置」）。また、対象ＩＣの配線を用いて、配置／ルートモジュール１４４２は、論理記述において指定されているインスタンス間にネットをルーティングする。また、配置／ルートモジュール１４４２は、回路設計者が指定する配置制約１４５２およびルーティング制約１４５４を物理記述が満たしていることを確認し得る。
【００６８】
いくつかの例では、物理合成モジュール１４０８は、対象のプログラマブルＩＣのアーキテクチャにおいて規定される特定種類のプリミティブコンポーネントに論理記述において指定されている回路部品のインスタンスをマッピングするマッピングモジュールをさらに含み得る。その後、プリミティブコンポーネントは、配置／ルートモジュール１４４２によって配置およびルーティングされる。物理記述は、ネットリスト１４３２（たとえば、配置およびルーティングされたネットリスト）によって指定され得る。物理合成モジュール１４０８は、物理記述（たとえば、プログラムマブルＩＣのＰＤＩ）から物理的実装１４３０を生成し得る。
【００６９】
ある例では、物理合成モジュール１４０８は、タイミング解析モジュール１４４４を備える。タイミング解析モジュール１４４４は、回路設計の物理記述のタイミング解析を行う。タイミング解析モジュール１４４４は、回路設計者が規定するタイミング制約１４５０を物理記述が満たしていることを確認する。回路設計に制約が加えられることを確実にする、かつ、タイミング制約１４５０に応じて導出されるタイミング要件（たとえば、タイミングパスのスラック）を回路設計が満たすことを確実にするよう、タイミング解析は、様々なタイミングチェックを含み得る。
【００７０】
図１５は、本開示の例に係る、パーシャルリコンフィギュレーションのためのＰＤＩを生成する方法１５００のフローチャートを示す。図１３および図１４で説明したように、図１５の方法１５００は、回路設計ツール１３３２によって実装できる。
【００７１】
動作１５０２では、回路設計の機能記述を作成する。回路設計の機能記述は、上述した設計エントリモジュール１４０４を用いて、説明した設計エントリモジュール１４０４によって機能記述を作成するための技術によって作成され得る。回路設計、したがって、機能記述は、デバイス上で動作しているときにパーシャルリコンフィギュレーションイベントが発生するとリコンフィギュレーションが行われる最初のＲＭを含む。また、回路設計、したがって、機能記述は、パーシャルリコンフィギュレーションが終わってからも存続するスタティックモジュールを含み得る。さらに、最初のＲＭは、ＮｏＣを介したその他のサブシステムとの最初のＲＭの論理関数への通信／最初のＲＭの論理関数からの通信を可能にするＮＭＵおよび／またはＮＳＵを含み得る。さらに、機能記述の作成は、最初のＲＭ内に含まれるＮＭＵおよびＮＳＵを指定するステップを含む。
【００７２】
機能記述の作成中、ＮｏＣのトラフィック仕様が作成される。トラフィック仕様は、ＮｏＣにあるパスのＩＤと、これらのパスの対応する特性とを含み、これらは機能記述に含まれる。トラフィック仕様は、たとえば、パス上の仮想チャネル、割込み、ＱｏＳ（Ｑｕａｌｉｔｙ  ｏｆ  Ｓｅｒｖｉｃｅ）、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御に関する情報を含み得る。いくつかの例では、機能記述を作成するとき、ユーザは、トラフィック仕様をポピュレートする特性を指定する。これに加えて、ＮＭＵおよびＮＳＵが最初のＲＭ内にあるか、または最初のＲＭの外にあるかは、トラフィック仕様において指定されている。
【００７３】
これに加えて、動作１５０２中、または、その後、方法１５００の間、回路設計、したがって、機能記述は、パーシャルリコンフィギュレーションイベントの発生時にインスタンス化される後続のＲＭを含み得る。さらに、当該後続のＲＭは、ＮｏＣを介したその他のサブシステムとの後続のＲＭの論理関数への通信／後続のＲＭの論理関数からの通信を可能にするＮＭＵおよび／またはＮＳＵを含み得る。さらに、機能記述の作成は、後続のＲＭ内に含まれるＮＭＵおよびＮＳＵを指定するステップを含む。トラフィック仕様、または追加のトラフィック仕様は、ＮＭＵおよびＮＳＵを含む、後続のＲＭ内のパスのＩＤを、これらのパスの特性とともに含み得る。
【００７４】
動作１５０４では、機能記述から論理記述を作成する。論理記述が作成される機能記述は、最初のＲＭと、スタティックモジュールとを含む。論理記述は、上述した論理合成モジュール１４０６を用いて作成され得る。
【００７５】
動作１５０６では、最初のＮＭＵおよびＮＳＵの配置ならびに当該ＮＭＵとＮＳＵとの間のルーティングを生成する。ＮｏＣコンパイラ１４４０は、論理記述のＮＭＵおよびＮＳＵを、対象ＩＣのＮｏＣにおいて実装するために、回路設計の物理記述で配置し得る。さらに、ＮｏＣコンパイラ１４４０は、ＮＰＳを配置することによって、ＮＭＵとＮＳＵとの間でパスをルーティングし得る。最初の配置およびルーティングは、プログラマブルロジック領域またはその他のサブシステムにおいて論理関数またはその他の機能が配置されていると思われる場所とは独立し得る。論理記述は、様々な論理関数またはその他の機能が配置されていると思われるサブシステムがどれであるかを特定または示し得る。そのため、ＮｏＣコンパイラ１４４０は、論理記述によってＮｏＣ（異なるサブシステム間）を通るパスを特定できる。ＮｏＣコンパイラ１４４０は、ＮＭＵおよびＮＳＵを配置し、様々なサブシステムへの任意のそれぞれ適切なインターフェースにおいてＮＭＵとＮＳＵとの間のパスを、（たとえば、ＮＰＳを配置することによって）生成する。パスを配置および生成する際、ＮｏＣコンパイラ１４４０は、トラフィック仕様で規定されているパスの特性を満たそうとする。ＮｏＣコンパイラ１４４０がＮＭＵおよびＮＳＵを配置ならびにトラフィック仕様にある特性を満たすパスを生成できなかった場合、エラーが生成され得、回路設計のＰＤＩを生成するためのさらなる処理が終了させられ得る。ＮｏＣコンパイラ１４４０が最初にＮＭＵおよびＮＳＵを配置およびトラフィック仕様にある特性を満たすパスを生成することができた場合、更なる処理に進んでもよい。
【００７６】
動作１５０８では、論理記述を最適化する。本明細書において使用するとき、「最適化する」とは、必ずしも最も適した解決策を生成することを示す訳ではない。特定的には、様々な解決策にはそれぞれ異なるコストおよび利点があり得るので、むしろ、「最適化する」とは、前回のイテレーションからのあらゆる向上を含み得る。上述した論理合成モジュール１４０６を用いて論理記述を最適化することができる。たとえば、論理記述に含まれる様々な論理エレメントは、論理記述に含まれるその他の論理エレメントに基づいて冗長または不必要である場合があり、最適化された論理記述は、このような論理エレメントを省いてもよい。さらには、たとえば、いくつかの論理関数は、論理記述が示すよりも単純または高速の論理エレメントを用いて実装されている場合があり、最適化された論理記述は、当該より単純またはより高速の論理エレメントを実装してもよい。いくつかの例では、動作１５０８の最適化を省略してもよい。下記の論理記述についての説明は、元の論理記述を指す場合もあれば、最適化された論理記述を指す場合もある。
【００７７】
動作１５１０では、論理記述において指定されている回路部品のインスタンスを対象ＩＣのアーキテクチャの物理表現で配置して、物理記述の少なくとも一部を生成する。論理記述で指定されている論理関数の論理エレメントに対応する回路部品のインスタンスは、配置／ルートモジュール１４４２によって配置され得る。論理記述において指定されているＮｏＣに対応する回路部品のインスタンスは、ＮｏＣコンパイラ１４４０によって配置され得る。動作１５０６から対応するＮＭＵおよびＮＳＵの最初の配置を調整することによって、ＮｏＣコンパイラ１４４０は、ＮＭＵおよびＮＳＵが物理表現で配置され得る。様々なサブシステム（たとえば、プログラマブルロジック領域）に回路部品のインスタンスを配置すると、様々な回路部品のインスタンスと通信するための対応するＮＭＵおよびＮＳＵが決定され得、これらのＮＭＵおよびＮＳＵの配置は、ＮｏＣコンパイラ１４４０によって決定され得る。ＮＭＵおよびＮＳＵを配置すると、ＮＭＵとＮＳＵとの間にパスを形成するようにＮＰＳが配置され得る。ＮＭＵおよびＮＳＵの配置、および当該ＮＭＵとＮＳＵのとの間のパス（たとえば、ＮＰＳの配置）のルーティングには、トラフィック仕様で指定されている特性を満たすために制約が加えられている。
【００７８】
動作１５１２では、配置された回路部品間のルーティングを対象ＩＣのアーキテクチャの物理表現で生成し、物理記述の少なくとも一部を生成する。動作１５１２のルーティングは、各サブシステム（たとえば、プログラマブルロジック領域内のルーティング）内でルーティングされ得る。回路部品のインスタンス間のルーティングは、配置／ルートモジュール１４４２によってルーティングされ得る。
【００７９】
動作１５１４では、配置された回路部品および物理記述におけるルーティング基づいて、ＰＤＩを生成する。ＰＤＩは、たとえば、１つ以上のプログラマブルロジック領域のビットストリームと、ＮｏＣのコンフィギュレーションデータと、その他のプログラマブルコンポーネントのその他のコンフィギュレーションデータとを含む。それゆえ、ＰＤＩは、対象ＩＣにおいて最初のＲＭおよびスタティックモジュールを実装し得る。
【００８０】
動作１５１６では、回路設計の物理記述から最初のＲＭの回路部品を取り除く。最初のＲＭの回路部品を取り除くことは、最初のＲＭに含まれる論理関数の論理エレメントに対応する回路部品のインスタンスを取り除くステップと、最初のＲＭに含まれるＮＭＵおよびＮＳＵを取り除くステップとを含む。さらには、最初のＲＭのＮｏＣにあるパスのトラフィック仕様が削除される。物理合成モジュール１４０８は、論理関数の論理エレメントに対応する回路部品を取り除き得る。ＮｏＣコンパイラ１４４０は、ＮＭＵおよびＮＳＵを取り除き、パスのトラフィック仕様を削除し得る。
【００８１】
動作１５１８では、回路設計の残りの物理記述をロックする。たとえば、プログラマブルロジック領域にある論理関数の論理エレメントに対応する回路部品の残りのインスタンスおよびそれらの間のルーティングがロックされる。これに加えて、残りのＮＭＵおよびＮＳＵの配置を含む残りのパスがロックされる。物理記述においてこれらのコンポーネントをロックすることは、物理合成モジュール１４０８によって行われ得る。
【００８２】
動作１５２０では、動作１５０４と同様に、後続のＲＭの機能記述から論理記述を作成する。
【００８３】
動作１５２２では、動作１５０６と同様に、ロック解除された物理記述のコンポーネントを用いて、後続のＲＭについて、最初のＮＭＵおよびＮＳＵの配置ならびに当該ＮＭＵとＮＳＵとの間のルーティングを生成する。ＮＭＵおよびＮＳＵを配置し、当該ＮＭＵとＮＳＵとの間をルーティングしている間、ロックされた（たとえば、動作１５１８においてロックされた）ＮＭＵ、ＮＳＵ、およびパスは、ロックされたままであり、修正されていない。それゆえ、最初のＮＭＵおよびＮＳＵの配置ならびに当該ＮＭＵとＮＳＵとの間のルーティングは、ロックされたＮＭＵおよびＮＳＵの配置、ならびにロックされたパスのルーティングに従う。それゆえ、動作１５２２における最初の配置およびルーティングは、スタティックモジュールの結果ロックされていないＮＭＵ、ＮＳＵ、およびパスを用いる。したがって、最初のＮＭＵおよびＮＳＵの配置ならびに当該ＮＭＵとＮＳＵとの間のルーティングは、少なくとも最初は、図８〜図１２で上述したユースケースシナリオを実現できる。
【００８４】
動作１５２４では、動作１５０８と同様に、後続のＲＭの論理記述を最適化する。動作１５２６では、動作１５１０と同様に、ロック解除された物理記述のコンポーネントを用いて後続のＲＭの論理記述において指定されている回路部品のインスタンスを配置し、別の（または修正後の）物理記述の少なくとも一部を生成する。動作１５２６の間、ロックされたスタティックロジック、ならびにロックされたＮＭＵ、ＮＳＵ、およびパスの配置およびルーティングが遵守され、変更されない。それゆえ、動作１５２６における回路部品の配置では、スタティックモジュールの結果ロックされていない回路部品が使われる。したがって、ＮＭＵおよびＮＳＵの配置ならびに当該ＮＭＵとＮＳＵとの間のルーティングは、図８〜図１２で上述したユースケースシナリオを実現できる。動作１５２８では、動作１５１２と同様に、配置された後続のＲＭの回路部品のインスタンス間のルーティングを修正後の物理記述で生成する。動作１５３０では、動作１５１４と同様に、ＰＤＩを修正後の物理記述に基づいて生成する。このＰＤＩは、動作１５１４で生成されたＰＤＩに含まれてもよく、動作１５１４で生成されたＰＤＩとは別個であってもよい。動作１５３０で生成されたＰＤＩは、１つ以上のプログラマブルロジック領域の部分ビットストリームと、ＮｏＣのパーシャルコンフィギュレーションデータと、その他のプログラマブルコンポーネントのその他のコンフィギュレーションデータとを含み得る。
【００８５】
図１５に具体的に図示していないが、物理記述にタイミングおよび解析を行ってもよく、たとえば、スキュー回数を低減させるなどのために、最適化を実施して配置およびルーティングを改善させてもよい。その他の動作も同様に行われてもよい。
【００８６】
本明細書において説明する例は、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を有する、システムオンチップ（Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ：ＳｏＣ）などの電子回路を規定する。このＮｏＣは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。
【００８７】
本開示の例は、集積回路を操作する方法である。このような方法は、集積回路上にネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）にコンフィギュレーションを行うステップと、ＮｏＣを介して集積回路上のサブシステム間を通信させるステップと、ＮｏＣにパーシャルリコンフィギュレーションを行うステップとを含み、パーシャルリコンフィギュレーション中、ＮｏＣの第１サブセットにリコンフィギュレーションが行われ、ＮｏＣの第２サブセットは、パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能であり、方法は、さらに、パーシャルリコンフィギュレーション後、ＮｏＣの第１サブセットを介してサブシステムのうち２つ以上のサブシステム間を通信させるステップを含んでもよい。
【００８８】
いくつかのこのような方法では、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、ＮｏＣの第１サブセットを休止させるステップと、ＮｏＣの第１サブセットを休止させるステップの後、ＮｏＣの第１サブセットにリコンフィギュレーションを行うステップとを含んでもよい。
【００８９】
いくつかのこのような方法では、ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含んでもよく、ＮＰＳは、ルーティングによってＮＭＵとＮＳＵとの間で相互接続されている。
【００９０】
いくつかのこのような方法では、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、通信パケットを送信することを停止するよう、ＮｏＣの第１サブセットに含まれるＮＭＵを制御するステップと、受信した通信パケットを拒否するよう、ＮｏＣの第１サブセットに含まれるＮＳＵを制御するステップと、停止および拒否するようＮｏＣの第１サブセットに含まれるＮＭＵおよびＮＳＵをそれぞれ制御するステップの後、ＮｏＣの第１サブセットに含まれるＮＭＵ、ＮｏＣの第１サブセットに含まれるＮＳＵ、およびＮｏＣの第１サブセットに含まれるＮＰＳにリコンフィギュレーションを行うステップと、ＮｏＣの第１サブセットに含まれるＮＭＵ、ＮＳＵ、およびＮＰＳにリコンフィギュレーションを行うステップの後、ＮｏＣの第１サブセットに含まれるＮＭＵおよびＮＳＵの通信を有効にするステップとを含んでもよい。
【００９１】
いくつかのこのような方法では、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、集積回路上で動作し、パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われないアプリケーションに、ＮｏＣの第１サブセットを介した通信の送信を停止させるステップをさらに含んでもよい。
【００９２】
いくつかのこのような方法では、ＮｏＣの第１サブセットに含まれるＮＭＵは、１つ以上の第１の制御レジスタ含んでもよく、ＮｏＣの第１サブセットに含まれるＮＭＵを制御するステップは、１つ以上の第１の制御レジスタに書き込むステップを含み、ＮｏＣの第１サブセットに含まれるＮＳＵは、１つ以上の第２の制御レジスタを含んでもよく、ＮｏＣの第１サブセットに含まれるＮＭＵを制御するステップは、１つ以上の第２の制御レジスタに書き込むステップを含む。
【００９３】
いくつかのこのような方法では、ＮＰＳの各々は、通信パケットを受信および送信するように構成されたポートを有してもよく、ポートは、それぞれルーティングに接続されており、ＮＰＳの各々は、ルーティングテーブルをさらに含んでもよく、ルーティングテーブルは、レジスタを含み、レジスタの各々は、１つ以上の宛先ＩＤに対応付けられてもよく、レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、定義済みビット位置のうちの１つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、受信通信パケットに含まれている宛先ＩＤに対応付けられたレジスタにある、受信通信パケットを受信するポートに対応する。
【００９４】
いくつかのこのような方法では、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、ルーティングテーブルのレジスタのうち１つ以上に書き込むステップを含むＮｏＣの第１サブセットに含まれるＮＰＳにリコンフィギュレーションを行うステップを含んでもよい。
【００９５】
いくつかのこのような方法では、ＮｏＣにコンフィギュレーションを行うステップは、第１パスおよび第２パスにコンフィギュレーションを行うステップを含んでもよく、第１パスおよび第２パスは、各々、ＮＰＳのうち第１のＮＰＳを通り、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、第１のＮＰＳを通る第１パスにリコンフィギュレーションを行うステップを含んでもよく、パーシャルリコンフィギュレーション中、第１のＮＰＳを通る第２パスは、継続的に通信を通過させ続けることが可能である。
【００９６】
いくつかのこのような方法では、ＮｏＣは、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）をさらに含んでもよく、ＮｏＣにパーシャルリコンフィギュレーションを行うステップは、ＮＰＩを介したメモリにマッピングされたトランザクションを用いてＮｏＣの第１サブセットのコンポーネントにコンフィギュレーションデータを書き込むステップを含んでもよい。
【００９７】
別の例では、集積回路は、チップ上に第１サブシステムと、チップ上に第２サブシステムと、チップ上に、第１サブシステムと第２サブシステムとの間に通信可能に接続されたネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）とを備えてもよく、ＮｏＣは、ＮｏＣを通る通信パスを確立するようにコンフィギャラブルであり、ＮｏＣは、パーシャルリコンフィギュレーション可能に構成され、通信パスの第２サブセットが継続的に通信を通過させることが可能である間に通信パスの第１サブセットにリコンフィギュレーションを行う。
【００９８】
いくつかのこのような集積回路では、ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含んでもよく、ＮＰＳは、ルーティングによってＮＭＵとＮＳＵとの間で相互接続されており、ＮＰＳの各々は、通信パケットを受信および送信するように構成されたポートを有してもよく、ポートは、それぞれルーティングに接続されており、ＮＰＳの各々は、ルーティングテーブルをさらに含んでもよく、ルーティングテーブルは、レジスタを含み、レジスタの各々は、１つ以上の宛先ＩＤに対応付けられてもよく、レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、定義済みビット位置のうちの１つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、受信通信パケットに含まれている宛先ＩＤに対応付けられたレジスタにある、受信通信パケットを受信するポートに対応する。
【００９９】
いくつかのこのような集積回路では、ＮｏＣは、ＮｏＣマスタユニット（ＮＭＵ）と、ＮｏＣスレーブユニット（ＮＳＵ）と、ＮｏＣパケットスイッチ（ＮＰＳ）と、ルーティングとを含んでもよく、ＮＰＳは、ルーティングによってＮＭＵとＮＳＵとの間で相互接続されており、ＮＭＵの各々は、１つ以上の第１の制御レジスタを含んでもよく、ＮＭＵの各々は、１つ以上の第１の制御レジスタに書き込まれた値に基づいて通信を送信することを停止するよう制御可能であり、ＮＳＵの各々は、１つ以上の第２の制御レジスタを含んでもよく、ＮＭＵの各々は、１つ以上の第２の制御レジスタに書き込まれた値に基づいて通信を拒否するように制御可能である。
【０１００】
いくつかのこのような集積回路では、ＮｏＣは、ＮｏＣペリフェラルインターコネクト（ＮＰＩ）を含んでもよく、ＮｏＣは、メモリにマッピングされたトランザクションをＮＰＩを介して送信することによってコンフィギュレーション可能である。
【０１０１】
いくつかのこのような集積回路では、第１サブシステムは、プログラマブルサブシステムであってもよい。
【０１０２】
別の例では、システムは、プロセッサと、命令を格納したコンピュータ読み取り可能な媒体とを備えてもよく、当該命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、当該動作は、最初のリコンフィギャラブルモジュールおよびスタティックモジュールから構成される第１の回路設計の第１の物理記述を生成する動作を含み、第１の物理記述は、対象集積回路の物理レイアウトに対応し、対象集積回路は、ネットワークオンチップ（Ｎｅｔｗｏｒｋ−ｏｎ−Ｃｈｉｐ：ＮｏＣ）を備え、第１の物理記述は、最初のリコンフィギャラブルモジュールに対応するＮｏＣを通るパスの回路部品を含むリコンフィギャラブルパーティションを含み、上記動作は、さらに、後続のリコンフィギャラブルモジュールから構成される第２の回路設計の第２の物理記述を生成する動作を含み、第２の物理記述は、第１の物理記述に基づく物理記述であり、後続のリコンフィギャラブルモジュールに対応するＮｏＣを通るリコンフィギュレーションが行われたパスの回路部品を含むリコンフィギャラブルパーティションを含み、上記動作は、さらに、第１の物理記述および第２の物理記述に基づいて１つ以上のプログラミングデバイス画像を生成する動作を含み、１つ以上のプログラミングデバイス画像は、対象集積回路に読み込み可能であり、最初にコンフィギュレーションが行われると第１の回路設計を実装し、パーシャルリコンフィギュレーションが行われると第２の回路設計を実装する。
【０１０３】
いくつかのこのようなシステムでは、第２の物理記述を生成する動作は、リコンフィギャラブルパーティションの回路部品を第１の物理記述から取り除く動作を含んでもよく、取り除かれたリコンフィギャラブルパーティションの回路部品は、最初のリコンフィギャラブルモジュールに対応するＮｏＣを通るパスの回路部品を含み、動作は、さらに、取り除く動作の後、スタティックモジュールに対応する残りの回路部品を第１の物理記述でロックする動作と、ロックする動作の後、後続のリコンフィギャラブルモジュールに対応する回路部品を第１の物理記述のリコンフィギャラブルパーティションに配置する動作を含み、配置された回路部品は、後続のリコンフィギャラブルモジュールに対応するＮｏＣを通る、リコンフィギュレーションが行われたパスの回路部品を含み、上記動作は、さらに、配置する動作の後、配置された回路部品のうち、少なくともいくつかの回路部品間の接続をルーティングする動作を含む。
【０１０４】
いくつかのこのようなシステムでは、後続のリコンフィギャラブルモジュールに対応する回路部品を配置する動作に制約が加えられてもよく、この制約は、最初のリコンフィギャラブルモジュールに対応するＮｏＣを通るパスが第２の物理記述まで存続することを含み、このパスの始点インターフェースは、リコンフィギャラブルパーティション内にあり、終点インターフェースは、このリコンフィギャラブルパーティションの外部にある。
【０１０５】
いくつかのこのようなシステムでは、１つ以上のプログラミングデバイス画像は、第１の物理記述に基づく第１のプログラミングデバイス画像と、第２の物理記述に基づく第２のプログラミングデバイス画像とを含んでもよく、第２のプログラミングデバイス画像は、ＮｏＣのパーシャルコンフィギュレーションデータを含む。
【０１０６】
いくつかのこのようなシステムでは、対象集積回路上のＮｏＣの回路部品は、ＮｏＣマスタユニット（ＮＭＵ）、ＮｏＣスレーブユニット（ＮＳＵ）、ＮｏＣパケットスイッチ（ＮＰＳ）、およびルーティングを含んでもよく、ＮＰＳは、ルーティングによってＮＭＵとＮＳＵとの間で相互接続されている。
【０１０７】
以上は、詳細な例を対象としたが、その基本的な範囲を逸脱することなくその他の例およびさらなる例が考案されてもよく、その範囲は、添付の特許請求の範囲によって示される。
【図１】
2022500772.tif 000003
【図２】
2022500772.tif 000004
【図３】
2022500772.tif 000005
【図４】
2022500772.tif 000006
【図５】
2022500772.tif 000007
【図６】
2022500772.tif 000008
【図７】
2022500772.tif 000009
【図８】
2022500772.tif 000010
【図９】
2022500772.tif 000011
【図１０】
2022500772.tif 000012
【図１１】
2022500772.tif 000013
【図１２】
2022500772.tif 000014
【図１３】
2022500772.tif 000015
【図１４】
2022500772.tif 000016
【図１５】
2022500772.tif 000017
【国際調査報告】
2022500772.tif 000018
2022500772.tif 000019
2022500772.tif 000020