IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ザイリンクス インコーポレイテッドの特許一覧

特許7399952ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション
<>
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図1
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図2
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図3
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図4
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図5
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図6
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図7
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図8
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図9
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図10
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図11
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図12
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図13
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図14
  • 特許-ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-12-08
(45)【発行日】2023-12-18
(54)【発明の名称】ネットワークオンチップ(NETWORK-ON-CHIP:NoC)のパーシャルリコンフィギュレーション
(51)【国際特許分類】
   G06F 15/173 20060101AFI20231211BHJP
   G06F 13/10 20060101ALI20231211BHJP
   G06F 13/14 20060101ALI20231211BHJP
   G06F 13/38 20060101ALI20231211BHJP
   G06F 15/78 20060101ALI20231211BHJP
   G06F 15/177 20060101ALI20231211BHJP
【FI】
G06F15/173 675
G06F13/10 340Z
G06F13/14 310F
G06F13/38 340Z
G06F15/78 530
G06F15/78 560
G06F15/177 A
【請求項の数】 15
(21)【出願番号】P 2021514509
(86)(22)【出願日】2019-08-20
(65)【公表番号】
(43)【公表日】2022-01-04
(86)【国際出願番号】 US2019047277
(87)【国際公開番号】W WO2020060710
(87)【国際公開日】2020-03-26
【審査請求日】2022-07-19
(31)【優先権主張番号】16/133,357
(32)【優先日】2018-09-17
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】シュルツ,デイビッド・ピィ
(72)【発明者】
【氏名】スウォーブリック,イアン・エイ
(72)【発明者】
【氏名】リウ,ジュン
(72)【発明者】
【氏名】コン,レイモンド
(72)【発明者】
【氏名】アレクサニアン,エルベ
【審査官】坂東 博司
(56)【参考文献】
【文献】特表2008-541677(JP,A)
【文献】特開2013-005145(JP,A)
【文献】米国特許第07907610(US,B2)
【文献】特開2017-147481(JP,A)
【文献】特表2022-527760(JP,A)
【文献】米国特許第10673439(US,B1)
【文献】米国特許出願公開第2017/0220499(US,A1)
【文献】Thilo Pionteck, Roman Koch, etc,Applying Partial Reconfiguration to Networks-On-Chips,2006 International Conference on Field Programmable Logic and Applications,米国,IEEE,2006年,1-6,インターネット<URL:https://ieeexplore.ieee.org/abstract/document/4100970>,令和5年4月24日検索
【文献】Andreas Hansson et al.,Undisrupted Quality-of-Service during Reconfiguration of Multiple Applications in Networks on Chip,2007 Design, Automation & Test in Europe Conference & Exhibition,米国,IEEE,2007年04月16日,1-6,DOI:10.1109/DATE.2007.364416, PRINT ISBN:978-3-9810801-2-4
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/173
G06F 13/10
G06F 13/14
G06F 13/38
G06F 15/78
G06F 15/177
(57)【特許請求の範囲】
【請求項1】
集積回路を操作する方法であって、
前記集積回路上にネットワークオンチップ(Network-on-Chip:NoC)にコンフィギュレーションを行うステップと、
前記NoCを介して前記集積回路上のサブシステム間を通信させるステップと、
前記NoCにパーシャルリコンフィギュレーションを行うステップとを含み、前記パーシャルリコンフィギュレーション中、前記NoCの第1サブセットにリコンフィギュレーションが行われ、前記NoCの第2サブセットは、前記パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能であり、前記方法は、さらに、
前記パーシャルリコンフィギュレーション後、前記NoCの第1サブセットを介して前記サブシステムのうち2つ以上のサブシステム間を通信させるステップを含み、
前記パーシャルリコンフィギュレーションは、前記NoCのリコンフィギュレーションパーティションに対するリコンフィギュレーションであり、
前記第1サブセットは、前記リコンフィギュレーションパーティションに含まれ、
前記第2サブセットは、前記リコンフィギュレーションパーティションの外部である、方法。
【請求項2】
前記NoCにパーシャルリコンフィギュレーションを行うステップは、
前記NoCの第1サブセットを休止させるステップと、
前記NoCの第1サブセットを休止させるステップの後、前記NoCの第1サブセットにリコンフィギュレーションを行うステップとを含む、請求項1に記載の方法。
【請求項3】
前記NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含み、前記NPSは、前記ルーティングによって前記NMUと前記NSUとの間で相互接続されている、請求項1または2に記載の方法。
【請求項4】
前記NoCにパーシャルリコンフィギュレーションを行うステップは、
通信パケットを送信することを停止するよう、前記NoCの第1サブセットに含まれる前記NMUを制御するステップと、
受信した通信パケットを拒否するよう、前記NoCの第1サブセットに含まれる前記NSUを制御するステップと、
停止および拒否するよう前記NoCの第1サブセットに含まれる前記NMUおよび前記NSUをそれぞれ制御するステップの後、前記NoCの第1サブセットに含まれる前記NMU、前記NoCの第1サブセットに含まれる前記NSU、および前記NoCの第1サブセットに含まれる前記NPSにリコンフィギュレーションを行うステップと、
前記NoCの第1サブセットに含まれる前記NMU、前記NSU、および前記NPSにリコンフィギュレーションを行うステップの後、前記NoCの第1サブセットに含まれる前記NMUおよび前記NSUの通信を有効にするステップとを含む、請求項3に記載の方法。
【請求項5】
前記NoCにパーシャルリコンフィギュレーションを行うステップは、前記集積回路上で動作し、前記パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われないアプリケーションに前記NoCの第1サブセットを介した通信の送信を停止させるステップをさらに含む、請求項4に記載の方法。
【請求項6】
前記NoCの第1サブセットに含まれる前記NMUは、1つ以上の第1の制御レジスタ含み、前記NoCの第1サブセットに含まれる前記NMUを制御するステップは、前記1つ以上の第1の制御レジスタに書き込むステップを含み、
前記NoCの第1サブセットに含まれる前記NSUは、1つ以上の第2の制御レジスタを含み、前記NoCの第1サブセットに含まれる前記NSUを制御するステップは、前記1つ以上の第2の制御レジスタに書き込むステップを含む、請求項4または5に記載の方法。
【請求項7】
前記NPSの各々は、通信パケットを受信および送信するように構成されたポートを有し、前記ポートは、それぞれルーティングに接続されており、
前記NPSの各々は、ルーティングテーブルをさらに含み、前記ルーティングテーブルは、レジスタを含み、
前記レジスタの各々は、1つ以上の宛先IDに対応付けられ、前記レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、前記定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、前記定義済みビット位置のうちの1つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、前記受信通信パケットに含まれている宛先IDに対応付けられたレジスタにある、前記受信通信パケットを受信するポートに対応する、請求項3~6のいずれか1項に記載の方法。
【請求項8】
前記NoCにパーシャルリコンフィギュレーションを行うステップは、前記ルーティングテーブルの前記レジスタのうち1つ以上に書き込むステップを含む前記NoCの第1サブセットに含まれる前記NPSにリコンフィギュレーションを行うステップを含む、請求項7に記載の方法。
【請求項9】
前記NoCにコンフィギュレーションを行うステップは、第1パスおよび第2パスにコンフィギュレーションを行うステップを含み、前記第1パスおよび前記第2パスは、各々、前記NPSのうち第1のNPSを通り、
前記NoCにパーシャルリコンフィギュレーションを行うステップは、前記第1のNPSを通る前記第1パスにリコンフィギュレーションを行うステップを含み、前記パーシャルリコンフィギュレーション中、前記第1のNPSを通る前記第2パスは、継続的に通信を通過させ続けることが可能である、請求項3~8のいずれか1項に記載の方法。
【請求項10】
前記NoCは、NoCペリフェラルインターコネクト(NPI)をさらに含み、
前記NoCにパーシャルリコンフィギュレーションを行うステップは、前記NPIを介したメモリにマッピングされたトランザクションを用いて前記NoCの第1サブセットのコンポーネントにコンフィギュレーションデータを書き込むステップを含む、請求項1~9のいずれか1項に記載の方法。
【請求項11】
集積回路であって、
チップ上に第1サブシステムと、
前記チップ上に第2サブシステムと、
前記チップ上に、前記第1サブシステムと前記第2サブシステムとの間に通信可能に接続されたネットワークオンチップ(Network-on-Chip:NoC)とを備え、前記NoCは、前記NoCを通る通信パスを確立するようにコンフィギャラブルであり、前記NoCは、パーシャルリコンフィギュレーション可能に構成され、前記通信パスの第2サブセットが継続的に通信を通過させることが可能である間に前記通信パスの第1サブセットにリコンフィギュレーションを行い、
前記パーシャルリコンフィギュレーションは、前記NoCのリコンフィギュレーションパーティションに対するリコンフィギュレーションであり、
前記第1サブセットは、前記リコンフィギュレーションパーティションに含まれ、
前記第2サブセットは、前記リコンフィギュレーションパーティションの外部である、集積回路。
【請求項12】
前記NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含み、前記NPSは、前記ルーティングによって前記NMUと前記NSUとの間で相互接続されており、
前記NPSの各々は、通信パケットを受信および送信するように構成されたポートを有し、前記ポートは、それぞれルーティングに接続されており、
前記NPSの各々は、ルーティングテーブルをさらに含み、前記ルーティングテーブルは、レジスタを含み、
前記レジスタの各々は、1つ以上の宛先IDに対応付けられ、前記レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、前記定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、前記定義済みビット位置のうちの1つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、前記受信通信パケットに含まれている宛先IDに対応付けられたレジスタにある、前記受信通信パケットを受信するポートに対応する、請求項11に記載の集積回路。
【請求項13】
前記NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含み、前記NPSは、前記ルーティングによって前記NMUと前記NSUとの間で相互接続されており、
前記NMUの各々は、1つ以上の第1の制御レジスタを含み、前記NMUの各々は、前記1つ以上の第1の制御レジスタに書き込まれた値に基づいて通信を送信することを停止するよう制御可能であり、
前記NSUの各々は、1つ以上の第2の制御レジスタを含み、前記NMUの各々は、前記1つ以上の第2の制御レジスタに書き込まれた値に基づいて通信を拒否するように制御可能である、請求項11または12に記載の集積回路。
【請求項14】
前記NoCは、NoCペリフェラルインターコネクト(NPI)を含み、前記NoCは、メモリにマッピングされたトランザクションを前記NPIを介して送信することによってコンフィギュレーション可能である、請求項11~13のいずれか1項に記載の集積回路。
【請求項15】
前記第1サブシステムは、プログラマブルサブシステムである、請求項11~14のいずれか1項に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示の例は、全体的に、電子回路に関し、特に、パーシャルリコンフィギュレーション機能を有するネットワークオンチップ(Network-on-Chip:NoC)を備える電子回路に関する。
【背景技術】
【0002】
背景
集積回路技術の進歩により、プロセッサコアと、メモリコントローラと、バスとを含むようなシステム全体を1つの半導体チップに埋め込むことが可能になった。この種類のチップは、一般に、システムオンチップ(System-on-Chip:SoC)と称される。さらには、SoCのサブシステム間の通信用にネットワークオンチップ(Network-on-Chip:NoC)を備えたSoCも開発されている。NoCによって、一般に、SoCのスケーラビリティが高くなり、性能が向上した。
【発明の概要】
【0003】
概要
本明細書において説明する例は、ネットワークオンチップ(Network-on-Chip:NoC)を有する、システムオンチップ(System-on-Chip:SoC)などの電子回路を規定する。このNoCは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。
【0004】
本開示の例は、集積回路を操作する方法である。集積回路上にNoCにコンフィギュレーションを行う。集積回路上のサブシステムは、NoCを介して互いに通信する。NoCにパーシャルリコンフィギュレーションを行う。パーシャルリコンフィギュレーション中、NoCの第1サブセットにリコンフィギュレーションが行われ、NoCの第2サブセットは、パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能である。パーシャルリコンフィギュレーション後、サブシステムのうち2つ以上のサブシステムは、NoCの第1サブセットを介して互いに通信する。
【0005】
本開示の別の例は、集積回路である。この集積回路は、チップ上に第1サブシステムと、当該チップ上に第2サブシステムと、当該チップ上に、第1サブシステムと第2サブシステムとの間に通信可能に接続されたネットワークオンチップ(Network-on-Chip:NoC)とを備える。NoCは、NoCを通る通信パスを確立するようにコンフィギャラブルである。NoCは、パーシャルリコンフィギュレーション可能に構成され、通信パスの第2サブセットが継続的に通信を通過させることが可能である間に通信パスの第1サブセットにリコンフィギュレーションを行う。
【0006】
本開示の別の例は、システムである。システムは、プロセッサと、命令を格納したコンピュータ読み取り可能な媒体とを備え、当該命令は、プロセッサによって実行されると、プロセッサに動作を実行させる。当該動作は、最初のリコンフィギャラブルモジュールおよびスタティックモジュールから構成される第1の回路設計の第1の物理記述を生成する動作と、後続のリコンフィギャラブルモジュールから構成される第2の回路設計の第2の物理記述を生成する動作と、第1の物理記述および第2の物理記述に基づいて1つ以上のプログラミングデバイス画像を生成する動作とを含む。第1の物理記述は、対象集積回路の物理レイアウトに対応する。対象集積回路は、NoCを備える。第1の物理記述は、最初のリコンフィギャラブルモジュールに対応するNoCを通るパスの回路部品を含むリコンフィギャラブルパーティションを含む。第2の物理記述は、第1の物理記述に基づく物理記述であり、後続のリコンフィギャラブルモジュールに対応するNoCを通るリコンフィギュレーションが行われたパスの回路部品を含むリコンフィギャラブルパーティションを含む。1つ以上のプログラミングデバイス画像は、対象集積回路に読み込み可能であり、最初にコンフィギュレーションが行われると第1の回路設計を実装し、パーシャルリコンフィギュレーションが行われると第2の回路設計を実装する。
【0007】
これらのおよびその他の態様は、下記の詳細な説明を参照して理解されたい。
上記の特徴が詳細に理解されるように、以上に簡単に要約されているより特定的な説明を、例示的な実施態様を参照することによって入手してもよい。当該実施態様の一部は、添付の図面に示されている。しかしながら、添付の図面は、一般的な例示的な実施態様を示しているに過ぎないため、その範囲を限定するものではないことを留意されたい。
【図面の簡単な説明】
【0008】
図1】本開示の例に係る、システムオンチップ(System-on-Chip:SoC)を示すブロック図である。
図2】本開示の例に係る、ネットワークオンチップ(Network-on-Chip:NoC)を示すブロック図である。
図3】本開示の例に係る、NoCを通るエンドポイント回路間の接続を示すブロック図である。
図4】本開示の例に係る、NoCペリフェラルインターコネクト(NPI)を通るレジスタブロックまでの接続を示すブロック図である。
図5】本開示の例に係る、ルーティングテーブルの概略を示す図である。
図6】本開示の例に係る、SoCを操作する方法を示す図である。
図7】本開示の例に係る、NoCにパーシャルリコンフィギュレーションを行う方法を示す図である。
図8】本開示のいくつかの例に係る、NoCにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
図9】本開示のいくつかの例に係る、NoCにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
図10】本開示のいくつかの例に係る、NoCにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
図11】本開示のいくつかの例に係る、NoCにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
図12】本開示のいくつかの例に係る、NoCにパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。
図13】本開示の例に係る、回路設計システムの例を示すブロック図である。
図14】本開示の例に係る、図13の回路設計ツールの例を示すブロック図である。
図15】本開示の例に係る、パーシャルリコンフィギュレーションのためのプログラミングデバイス画像(PDI:Programming Device Image)を生成する方法を示す図である。
【発明を実施するための形態】
【0009】
理解を容易にするために、可能な限り、それぞれの図面に共通の同じ要素を同じ参照番号を用いて示す。1つの例に含まれる要素は、その他の例に有利に組み込んでもよいと考えられる。
【0010】
詳細な説明
本明細書において説明する例は、ネットワークオンチップ(Network-on-Chip:NoC)を有する、システムオンチップ(System-on-Chip:SoC)などの電子回路を規定する。このNoCは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。ルーティングテーブルを形成するレジスタを独立したレジスタに分けて、新たなレジスタ値が、その他のパスに影響を与えることなく、1つまたは少数のパスに影響を与えるようすることによって、および、様々なパスを通して送信されたパケットを、混乱を生じさせない方法で停止させるコントロールをNoCインターフェースブロックに付与することによってNoCのパーシャルリコンフィギュレーションを有効にできる。これに加えて、回路設計ツールおよび方法が、NoCおよび様々なサブシステムのパーシャルリコンフィギュレーションを実装するための1つ以上のプログラミングデバイス画像(PDI:Programming Device Image)を生成することができる。回路設計ツールおよび方法は、NoCのパーシャルリコンフィギュレーション上の制約に従って様々なユースケースシナリオを実装することができる。
【0011】
これまでは、様々なSoCには、パーシャルリコンフィギュレーションができないNoCが実装されていた。プログラマブルであるSoC、およびパーシャルリコンフィギュレーション機能を有するサブシステムを備えたSoCの場合、パーシャルリコンフィギュレーションを行えないNoCは、サブシステムのパーシャルリコンフィギュレーション上の制限であった。サブシステムのパーシャルリコンフィギュレーションの場合、以前に構成したNoCとのインターフェースを維持しなければならない、または、完全にNoCにリコンフィギュレーションを行う必要があった。これにより、リコンフィギュレーションが行われていないアプリケーション間の通信が中断されていた。これにより、プログラム可能な設計の柔軟性が大幅に限定されてしまっていた。これは、FPGA(Field Programmable Gate Array)を用いた回路設計で実証されている。パーシャルリコンフィギュレーションを行うことができるファブリック(たとえば、プログラマブルロジック)を備えるFPGAもあるが、ファブリックにどのようにパーシャルリコンフィギュレーションが行われるかをFPGAのNoCが限定してしまっていた。
【0012】
本明細書において説明する例は、パーシャルリコンフィギュレーションを行えないNoCの制限に対する解決策を提供する。本明細書において説明する例は、集積回路のNoCのパーシャルリコンフィギュレーションを可能にする集積回路(FPGAのような、プログラマブルロジックデバイスなど)のアーキテクチャを規定する。本明細書において説明するさらなる例は、NoCのパーシャルリコンフィギュレーションのためのPDIを生成する方法およびシステムを規定する。
【0013】
NoCをSoCデバイスアーキテクチャに組み込むことができる。NoCは、当該デバイス上の異なるサブシステム間の通信パスを備えて、汎用のプログラマブル高速バスであり得る。例として、処理システムからDDR(Double Data Rate)メモリまでのパス、PCIe(Peripheral Component Interconnect Express)インターフェースからプログラマブルロジック領域までのパス、カーネル間のパス、およびDPE(Data Processing Engine)アレイからDDRメモリまでのパスなどが挙げられる。パーシャルリコンフィギュレーション(PR)を用いてパス構成を変更できる特徴がNoCハードウェア実装に追加することができる。これらの付加機能によって、SoC内のその他のコンポーネントのように、NoCに柔軟性を持たせることができるようになる。
【0014】
以下、図面を参照しながら様々な特徴について説明する。なお、縮尺通りに描かれている図面もあり、そうでない図面もある。また、同様の構造または機能のエレメントは、すべての図面を通して同じ参照番号で表される。なお、図面は、特徴の説明を容易にするよう意図されているに過ぎない。これらは、クレームされる発明を余すところなく説明するよう意図されておらず、クレームされる発明の範囲を限定するものでもない。これに加えて、図示される例は、図示された態様または利点のすべてを有する必要はない。特定の例とともに説明される態様または利点は、当該例に必ずしも限定されることはなく、その他の例においてそのように図示されていなくても、そのように明確に説明されていなくても、当該その他の例において実施することができる。
【0015】
図1は、ある例に係る、SoC102を示すブロック図である。SoC102は、処理システム104と、NoC106と、コンフィギュレーションインターコネクト108と、1つ以上のプログラマブルロジック領域110と、DPE(Data Processing Engine)アレイ112とを備える集積回路(IC)である。SoC102は、不揮発性メモリ(NVM)116など、外部回路に連結することができる。NVM116は、NoC106、プログラマブルロジック領域(複数可)110、およびDPEアレイ112を構成するためなど、SoC102を構成するための、SoC102にロードできるデータ(たとえば、PDI(Programming Device Image))を格納できる。
【0016】
一般に、処理システム104は、NoC106を通して、およびコンフィギュレーションインターコネクト108を通してプログラマブルロジック領域(複数可)110に接続される。処理システム104は、さらに、NoC106を通してDPEアレイ112(たとえば、DPEアレイ112のインターフェース(IF)ブロック114)に接続される。DPEアレイ112(たとえば、IFブロック114)は、NoC106を通して、および直接1つ以上のプログラマブルロジック領域110に接続される。
【0017】
処理システム104は、1つ以上のプロセッサコアを備え得る。たとえば、処理システム104は、複数のARMベースの埋め込みプロセッサコアを備え得る。プログラマブルロジック領域(複数可)110は、任意の数のコンフィギャラブルロジックブロック(CLB)を含み得る。CLBは、コンフィギュレーションインターコネクト108を通して処理システム104を用いてプログラムまたは構成されてもよい。たとえば、コンフィギュレーションインターコネクト108は、たとえば、処理システム104のプロセッサコア(さらに後述するPMC(プラットフォーム管理コントローラ)など)による、プログラマブルロジック領域(複数可)110のファブリックのフレームベースプログラムミングを可能にできる。
【0018】
DPEアレイ112は、相互接続された複数のDPEを含む。DPEの各々は、プログラマブルであってもよい。たとえば、各DPEは、データ処理機能を提供できるコアを含んでもよい。また、DPEは、当該コアがアクセス可能なメモリモジュールを含んでもよい。DPEは、DPEアレイ112のその他のDPEとの通信および/または異なるサブシステムとの通信を実装可能なDPEインターコネクトをさらに含んでもよい。さらに、DPEインターコネクトは、DPEの構成をサポートしてもよい。IFブロック114は、1つ以上のタイルを含んでもよい。IFブロック114は、DPEアレイ112のDPEと、処理システム104および1つ以上のプログラマブルロジック領域110など、SoC102のその他の部分との間のインターフェースを提供する。
【0019】
図1に示す上述したSoC102は、NoC106を用いることができる例示的な実施態様である。本明細書において説明するその他の例示的な実装態様は、様々なサブシステムまたはコンポーネントを備えてもよく、備えなくてもよい。たとえば、例示的なSoCは、プログラマブルロジック領域110およびDPEアレイ112などのサブシステムを含まなくてもよい。さらには、プログラム固定式アクセラレータなど、その他のサブシステムがDPEアレイ112に加えてまたはその代わりに含まれてもよい。
【0020】
図2は、ある例に係る、NoC106を示すブロック図である。NoC106は、NoCマスタユニット(NMU)202と、NoCスレーブユニット(NSU)204と、ネットワーク214と、NoCペリフェラルインターコネクト(NPI)210と、レジスタブロック212とを備える。各NMU202は、マスタ回路をNoC106に接続する入口回路である(たとえば、NoC106への入り口)。各NSU204は、NoC106をスレーブエンドポイント回路に接続する出口回路である(たとえば、NoC106からの出口)。また、入口回路であることに加えて、NMU202は、出口機能も有し得る。NMU202は、ネットワーク214を通してNSU204に接続される。いくつかの例では、ネットワーク214は、NoCパケットスイッチ(NPS)206と、NPS206間のルーティング208とを含む。各NPS206は、NoCパケットのスイッチングを行う。NPS206は、互いに接続されており、かつ、ルーティング208を通してNMU202およびNSU204に接続され、複数のパスを実装する。各NPS206のスイッチング機能によって、各NPS206を通して1つまたは複数のパスを実装することが可能になる。また、NPS206は、パスごとに複数の仮想チャネルをサポートする。
【0021】
NPI210は、NMU202と、NSU204と、NPS206とをプログラムするための回路を備える。NPI210は、レジスタブロック212に連結された、対応するNMU202、NSU204、およびNPS206の機能を設定するようにプログラムされるペリフェラルインターコネクトを含む。NoC106に含まれるレジスタブロック212は、割込み、QoS(Quality of Service)、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御をサポートする。NMU202およびNSU204のレジスタブロック212は、NMU202およびNSU204の動作を制御するように書き込むことができるレジスタを含む。たとえば、レジスタブロック212は、NMU202およびNSU204を有効/無効にするレジスタ、NPS206からの後続のトランザクション要求またはNPS206への後続のトランザクション要求をNMU202およびNSU204に送信させないおよび/もしくは拒否させるレジスタ、ならびに/またはNPS206から受信した保留中のトランザクション要求を完了させるようにNMU202およびNSU204に指示するレジスタを含み得る。NPS206のレジスタブロック212は、対応するNPS206のルーティングテーブルを形成する複数のレジスタを含み得る。レジスタブロック212は、書き込み要求を用いてレジスタブロック212に書き込むことなどによって、再プログラムされる前に使用できる状態に初期化することができる。NoC106のコンフィギュレーションデータをNVM116に格納し、NoC106および/またはその他のスレーブエンドポイント回路をプログラムするために(PMCから)NPI210に提供することができる。
【0022】
図3は、ある例に係る、NoC106を通るエンドポイント回路間の接続を示すブロック図である。この例では、エンドポイント回路302は、NoC106を通してエンドポイント回路304に接続されている。エンドポイント回路302は、マスタ回路であり、NoC106のNMU202に連結されている。エンドポイント回路304は、NoC106のNSU204に連結されたスレーブ回路である。各エンドポイント回路302および304は、処理システム104に含まれる回路、プログラマブルロジック領域110に含まれる回路、または別のサブシステムに含まれる回路であり得る。プログラマブルロジック領域110に含まれる各エンドポイント回路は、たとえば、プログラマブルロジックで構成された専用回路(たとえば、ハードニングされた回路)または回路であり得る。
【0023】
ネットワーク214は、複数のパス306を含む。パス306は、NoC106をプログラムすることによって実装される。各パス306は、1つ以上のNPS206と、関連するルーティング208とを含む。NMU202は、少なくとも1つのパス306を通してNSU204と接続する。また、パス306は、1つ以上の仮想チャネル308を有し得る。
【0024】
図4は、ある例に係る、NPI210を通るレジスタブロック212までの接続を示すブロック図である。レジスタブロック212に接続するために、NPI210は、ルートノード404と、1つ以上のNPIスイッチ408と、プロトコルブロック410とを含む。ルートノード404は、いくつかの例では、PMC402上に存在し、さらにPMC402は処理システム104内に存在し得るが、その他の例では、ルートノード404は、独立した回路であったり、別のシステムまたは回路上に存在したりし得る。一般に、ルートノード404は、NPI210によって実装されるフォーマットにトランザクション要求をパケット化し得、メモリにマッピングされたトランザクション要求をNPIスイッチ408に送信し得る。その後、NPIスイッチ408は、メモリにマッピングされたトランザクション要求の宛先IDに基づいて、当該メモリにマッピングされたトランザクション要求をその他のNPIスイッチ408またはプロトコルブロック410に送信し得る。任意の適切なトポロジーでNPIスイッチ408同士を相互接続することができる。いくつかの例では、NPIスイッチ408は、ルートノード404をルートとするツリートポロジーとして相互接続される。次に、プロトコルブロック410は、メモリにマッピングされたトランザクション要求を、レジスタブロック212によって実装されるフォーマットに変換し得る。NPI210が接続され得るスレーブエンドポイント回路の例として、レジスタブロック212が図4に示されている。その後、NPI21は、その他のスレーブエンドポイント回路に接続され得る。
【0025】
PMC402は、コンフィギュレーションインターコネクト108にさらに接続される。次に、コンフィギュレーションインターコネクト108は、プログラマブルロジック領域110に接続される。PMC402は、コンフィギュレーションインターコネクト108を通してプログラマブルロジック領域110のファブリックをプログラムするように構成される。コンフィギュレーションインターコネクト108は、SoC102上のプログラマブルユニットをプログラムするための送り出し機構であり、SoC102上のその他のプログラマブルユニット(たとえば、スレーブエンドポイント回路)をプログラムするためのNPI210の送り出し機構から独立している。
【0026】
前述したように、レジスタブロック212は、NPS206の対応するルーティングテーブルを作成するようにプログラムされた複数のレジスタを含む。図5は、ある例に係る、ルーティングテーブル500を示す図である。ルーティングテーブル500は、宛先IDに従ってレジスタを詰め込んでいる。NPS206によって受信され、その後送信される各パケットは、ルーティングテーブル500がパケットを送信およびルーティングするために利用する宛先IDを含んでいる。この例の場合、NPS206は、4個のポート(Port0~3)と、8個の仮想チャネル(VC0~7)とを有する。ルーティングテーブルの行は、パケットが受信されるポートと仮想チャネルとの組合せ(Port対VC)に対応する。ルーティングテーブルの列は、受信パケットに含まれている宛先ID(IDy)に対応する。ルーティングテーブルのエントリは、Port対VCとIDyとに基づいてパケットが送信される送信用ポートを示す。いくつかの例では、所与のIDyについてのエントリは、レジスタブロック212に含まれる1つ以上のレジスタに詰め込まれている。当該1つ以上のレジスタの定義済みビットがルーティングテーブルのエントリであり、当該定義済みビットは、PortとVCとの組合せに対応する。NPS206は、パケットを受信し、当該パケットがどのポートで受信されるかに基づいて当該パケットの仮想チャネルを特定し、パケットに含まれている宛先IDを特定し、ルーティングテーブルを形成する複数のレジスタにおいてプログラムされた受信用ポート、仮想チャネル、および宛先IDに基づいてNPS206の送信用ポートを識別し、NPS206の送信用ポートでパケットを送信するように構成される。
【0027】
この例では、4個のポートおよび8個の仮想チャネルに基づく32個のPortとVCとの組合せがあり、送信用ポートについての各エントリは、4個のポートに基づいて少なくとも2ビットである。それゆえ、この例では、IDyごとに2つの32ビットのレジスタが実装される。その他の例は、ルーティングテーブルごとに異なるレジスタを実装し得る。
【0028】
いくつかの例では、宛先IDに基づいてレジスタを詰め込むことによって、パーシャルリコンフィギュレーション時にパスを変更する際、リコンフィギュレーション対象ではないその他のパスにリコンフィギュレーションを行ったり中断したりすることなく、ルーティングテーブルをより簡単にリコンフィギュレーションを行うことができるであろう。
【0029】
その他の例では、ルーティングテーブルに関するその他の特徴が実装されてもよい。たとえば、複数の宛先IDをルーティングテーブルにおいてセグメント化できる。たとえば、複数の宛先IDを1つ以上のレジスタに詰め込んで、パケットのオーバーヘッドおよび/または処理を低減させる。このような例では、このセグメント化がパスにリコンフィギュレーションを行う機能に影響を与える可能性がある。たとえば、パーシャルリコンフィギュレーション中に存続するパスの一部がルーティングテーブルのセグメントにあるエントリに対応する場合、当該存続するパスの存在によって、同じセグメントにある別のパスにリコンフィギュレーションを行うことができなくなる可能性がある。
【0030】
図6は、いくつかの例に係る、SoC102を操作する方法600である。動作602では、NoC106のコンフィギュレーションを行う。より一般的には、システムレベルのコンフィギュレーションの一部および/またはそのリコンフィギュレーション(たとえば、一部またはすべて)としてNoC106にコンフィギュレーションを行うことができる。また、動作602中、SoC102のその他のサブシステムにコンフィギュレーションを行うことができる。たとえば、プログラマブルロジック領域110および/またはDPEアレイ112にコンフィギュレーションを行うことができる。上述したように、NPI210を通るメモリにマッピングされたトランザクションを介してNoC106にコンフィギュレーションを行って、NMU202、NSU204、およびNPS206のレジスタブロック212に書き込むことができる。コンフィギュレーションインターコネクト108を介して、プログラマブルロジック領域110にコンフィギュレーションを行うことができる。NoC106が構成された後に、NoC106およびDPEアレイ112のIFブロック114を介して、DPEアレイ112にコンフィギュレーションを行うことができる。プログラマブルロジック領域110および/またはDPEアレイ112のコンフィギュレーションによって、1つ以上のアプリケーション、またはそれらの任意のサブセットが、プログラマブルロジック領域110および/またはDPEアレイ112上でインスタンス化され得る。NoC106およびその他のコンポーネントのコンフィギュレーションは、処理システム104(たとえば、PMC402)の制御下で行われ得る。処理システム104は、メモリからPDIを取得し得、PDIは、NoC106のコンフィギュレーションデータ、プログラマブルロジック領域110のビットストリーム、および/またはDPEアレイ112のコンフィギュレーションデータを含み得る。その後、処理システム104は、PDIに基づいてコンポーネントに対するコンフィギュレーションを調整および制御し得る。
【0031】
動作604では、NoC106を介して通信が発生する。より一般的には、NoC106のコンフィギュレーションを含む、SoC102のコンフィギュレーションに基づいて、SoC102が操作される。コンフィギュレーションが行われると、処理システム104は、動作させるためにコンポーネントを有効化し、当該動作を開始させ得る。SoC102上の様々なサブシステムは、たとえば、NoC106を介してアプリケーションデータを互いに伝達する。たとえば、プログラマブルロジック領域110および/またはDPEアレイ112上でインスタンス化されたアプリケーションまたはそれらのサブセットは、互いに通信することができたり、NoC106を介してその他のサブシステム(たとえば、処理システム104および/またはメモリコントローラ)と通信できたりする。
【0032】
動作606では、パーシャルリコンフィギュレーションイベントがトリガされる。パーシャルリコンフィギュレーションイベントのトリガは、用途に特有であってもよい。たとえば、プログラマブルロジック領域110および/またはDPEアレイ112上でインスタンス化されたアプリケーションまたはそのサブセットがそのタスクを終了させ、割込みを生成してパーシャルリコンフィギュレーションをトリガしてもよい。割込みは、NoC106、専用のインターコネクト、または別のインターコネクトを介して処理システム104に伝達され得、当該割込みを受信したことに応答して、処理システム104(たとえば、PMC402)は、パーシャルリコンフィギュレーションのための制御を行う。
【0033】
動作608では、NoC106にパーシャルリコンフィギュレーションが行われる。より一般的には、より大きなパーシャルリコンフィギュレーションの一部としてNoC106にコンフィギュレーションが行われ得る。また、動作608中、SoC102のその他のサブシステムにパーシャルリコンフィギュレーションが行われ得る。パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われるNoC106およびその他のサブシステムの回路部品のインスタンスを、本明細書において、リコンフィギュレーションパーティション(RP)と称する。パーシャルリコンフィギュレーション中、RPの回路部品または領域にはリコンフィギュレーションが行われ、未使用状態から使用状態に、使用状態から未使用状態に、および/または使用状態から異なる使用状態に遷移し得る。プログラマブルロジック領域110およびDPEアレイ112など、その他のサブシステムを参照すると、様々なアプリケーションが無効化および/または上書きされ得、パーシャルリコンフィギュレーションによって、異なるアプリケーションまたはそれらの任意のサブセットがこれらのサブシステム上でインスタンス化され得る。NoC106およびその他のサブシステムのパーシャルリコンフィギュレーションは、処理システム104(たとえば、PMC402)の制御下で行われ得る。処理システム104は、メモリからPDIを取得し得、PDIは、リコンフィギュレーションパーティションのコンフィギュレーションデータおよび/またはビットストリームを含み得る。その後、処理システム104は、PDIに基づいて回路部品のパーシャルコンフィギュレーションを調整および制御し得る。
【0034】
パーシャルリコンフィギュレーションによって、RPに含まれるコンポーネントにリコンフィギュレーションが行われ得る一方で、RPの外部にあるその他のコンポーネントには、リコンフィギュレーションが行われない。これに加えて、NoCについて、リコンフィギュレーションが行われないNoCのパス(たとえば、RPの外部にあるパス)を介して(たとえば、動作604において生じるような)通信が継続してもよい。したがって、NoCのリソースのサブセットを、NoCのリソースの別のサブセットが有効かつ邪魔されない状態のまま、修正することができる。NoC106のパーシャルリコンフィギュレーションのさらなる詳細については、以下に図7で説明する。
【0035】
動作610では、NoC106を介して通信が発生する。より一般的には、SoC102の、パーシャルリコンフィギュレーションを有するコンフィギュレーションに基づいて、SoC102が操作される。パーシャルリコンフィギュレーションが完了すると、処理システム104は、動作させるためにコンポーネントを有効化し、当該動作を開始させ得る。前述したように、SoC102上の様々なサブシステムは、たとえば、NoC106を介してアプリケーションデータを互いに伝達する。
【0036】
図7は、いくつかの例に係る、NoC106にパーシャルリコンフィギュレーションを行うための図6の動作608の例示的な方法を示す図である。前述したように、動作608では、処理システム104(たとえば、PMC402)の制限下で、NoC106にパーシャルリコンフィギュレーションが行われる。動作702では、処理システム104は、RPに含まれるリコンフィギュレーションが行われるNMU202を制御する。処理システム104は、RPに含まれるリコンフィギュレーションが行われるNMU202のアドレスまたはIDをPDIから取得する。次に、処理システム104は、RPに含まれるNMU202のレジスタブロック212にNPI210を通してトランザクション要求を送り、NMU202を制御する。トランザクション要求は、NMU202にさらにパケットをNoC106に送信することを停止させ、かつ、保留中のパケットを消去させる値を、NMU202のレジスタブロック212に書き込む。次に、処理システム104は、所定時間、パケットが消去されるのを待つ。所定時間の後、処理システム104は、NPI210を通るトランザクション要求を介して各NMU202のステータスレジスタを読み出し、保留中のパケットをまだ有しているNSU204があるかどうかを判断し得る。NMU202が保留中のパケットをまだ有している場合、エラーが生成され得る。保留中のパケットを有するNMU202がない場合、処理システム104は、NPI210を通るトランザクション要求を介してNMU202の動作を無効化または停止させる。
【0037】
動作704では、処理システム104は、RPに含まれるリコンフィギュレーションが行われるNSU204を制御する。処理システム104は、RPに含まれるリコンフィギュレーションが行われるNSU204のアドレスまたはIDをPDIから取得する。次に、処理システム104は、RPに含まれるNSU204のレジスタブロック212にNPI210を通してトランザクション要求を送り、NSU204を制御する。トランザクション要求は、NSU204にNoC106からの後続の受信パケットを拒否させて、かつ、保留中のパケットを消去させる値を、NSU204のレジスタブロック212に書き込む。次に、処理システム104は、所定時間、パケットが消去されるのを待つ。所定時間の後、処理システム104は、NPI210を通るトランザクション要求を介して各NSU204のステータスレジスタを読み出し、保留中のパケットをまだ有しているNSU204があるかどうかを判断し得る。NSU204が保留中のパケットをまだ有している場合、エラーが生成され得る。保留中のパケットを有するNSU204がない場合、処理システム104は、NPI210を通るトランザクション要求を介してNSU204の動作を無効化または停止させる。
【0038】
動作702および704において上述したようにNMU202およびNSU204を制御すると、RPに含まれるNoC106のパス上のトラフィックが休止させられる。トラフィックを休止させると、RPにリコンフィギュレーションを行うことができるようになる。動作706では、処理システム104は、RPに含まれるNPS206、NMU202、およびNSU204にリコンフィギュレーションを行う。処理システム104は、PDIに含まれるコンフィギュレーションデータに従ってNPS206と、NMU202と、NSU204とにリコンフィギュレーションを行う。上述したように、処理システム104は、NPI210を通るメモリにマッピングされたトランザクションを介してNPS206と、NMU202と、NSU204とにリコンフィギュレーションを行う。リコンフィギュレーション中、RPに含まれるNoC106に入らないパスおよびNoC106から出ないパス、またはNoC106から独立したパス上で、トラフィックは継続する。RPの一部ではないNPS206、NMU202、およびNSU204にはリコンフィギュレーションは行われず、リコンフィギュレーションによる影響を受けないので、これらのNPS206、NMU202、およびNSU204間のパスは、RPに含まれるNPS206、NMU202、およびNSU204にリコンフィギュレーションを行っている間、動作し続けてもよい。
【0039】
動作708では、処理システム104は、リコンフィギュレーションが行われたNSU204を有効化して使用状態にする。リコンフィギュレーション後、リコンフィギュレーションの前に無効化または停止されたNSU204は、有効化されて通常動作に移る。動作710では、処理システム104は、リコンフィギュレーションが行われたNMU202を有効化して使用状態にする。リコンフィギュレーション後、リコンフィギュレーションの前に無効化または停止されたNMU202は、有効化されて通常動作に移る。それゆえ、RPに含まれるリコンフィギュレーションが行われたNPS206、NMU202、およびNSU204を介した通信が、図6の動作610において生じ得る。
【0040】
図8図12は、いくつかの例に係る、NoC106にパーシャルリコンフィギュレーションを行うためのユースケースシナリオを示す図である。図8図12は、各々、第1サブシステム802、NoC106、および第2サブシステム804のそれぞれの一部を示している。サブシステム802および804の各々は、NoC106を介して通信するSoC102のいずれかのサブシステムであり得る。たとえば、サブシステム802および804は、プログラマブルロジック領域110、DPEアレイ112、処理システム104、メモリコントローラなどであり得る。
【0041】
図8図12の具体的なユースケースシナリオでは、サブシステム802および804のうち少なくとも1つがプログラマブルであり、RPの一部である。各RPは、パーシャルリコンフィギュレーション中に(たとえば、使用中から未使用中に、未使用から使用中に、および使用中から異なる使用に)リコンフィギュレーションが行われる回路部品のインスタンスを表す。回路のインスタンスは、(NPS206自体とは対照的に)NPS206のレジスタブロック212の1つ以上のレジスタであってもよい。このレベルの粒度によって、たとえば、共有NPS206を通る異なるパス306を別々にRPおよびスタティック領域に存在させることができる。なお、様々なパス306がNPS206を共有してもよく、ここで、共有NPS206を通るパス306の一部がスタティックであり、共有NPS206を通るパス306の別の一部がRPに存在してもよい。図5のルーティングテーブル500では、共有NPS206を通るこれらのパス306は、1つ以上のパス306がRPに含まれる一方でその他のパスがRPに含まれないよう、論理的に別個であってもよい。
【0042】
RPは、パーシャルリコンフィギュレーション前にインスタンス化された最初のリコンフィギュレーションモジュール(RM)のコンフィギュレーションを有し得、パーシャルリコンフィギュレーションの結果、インスタンス化された後続のRMのコンフィギュレーションを有し得る。各RMは、たとえば、論理関数などについてのアプリケーションまたはそのサブセットを表したものであってもよい。
【0043】
図8図11は、さらに、プログラマブルではない、または、パーシャルリコンフィギュレーションイベント中にリコンフィギュレーションが行われない第1サブシステム802のスタティック領域806を示す。NoC106には、様々なNMU202、NSU204、およびパス306が図示されている。具体的には図示していないが、各パス306は、1つ以上のNPS206と、ルーティング208とを含む。
【0044】
いくつかの例によると、RPの外部にあるNMU202またはNSU204まで続く最初のコンフィギュレーションのいずれのパス306も、NoC106のパーシャルリコンフィギュレーションが終わってからも存続する。それゆえ、このようなパスに続くRP内のインターフェース、たとえば、NMU202も、同様に、NoC106のパーシャルリコンフィギュレーションが終わってからも存続する。さらには、パス306およびインターフェースが存続することを理由に、このようなインターフェースに対応するエンドポイント回路302のリコンフィギュレーションに制約が加えられる可能性がある。これに加えて、RPの外部から始まるパス306、およびRPの最初のコンフィギュレーション時にNMU202またはNSU204を含むパス306のいずれも、当該パス306の始点にあるアプリケーションによって休止させられるはずである(たとえば、なぜならば、このようなRPの外部にある始点は、動作608のパーシャルリコンフィギュレーション中、処理システム104の制御下ではないと考えられるからである)。たとえば、パーシャルリコンフィギュレーションイベント中、このアプリケーションは、トラフィックを生成してRPまで続くパス306で送信をするはずがない。処理システム104は、パーシャルリコンフィギュレーションイベントが生じる当該アプリケーションに通信し得る。この時点で、アプリケーションは、RPまで続くパス306を介した通信を停止し得る。
【0045】
図8図12において、様々なRPを連続した領域として示したが、これは分かりやすくするためである。実際には、RPは、SoC102の複数の独立した別個の領域を含み得る。
【0046】
図8を参照すると、RP808は、第2サブシステム804の領域、ならびにNSU204aおよび204bを含む。この例では、パーシャルリコンフィギュレーション中、RP808の外部にある始点に続くパス306aおよび306cそれぞれのインターフェースであるとして、NMU202aおよび202cにリコンフィギュレーションは行われない。それゆえ、これらのインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。パーシャルリコンフィギュレーション中、処理システム104は、NMU202aおよび202cの対応するエンドポイント回路上で動作するアプリケーション(たとえば、スタティック領域806)に、トラフィックを生成してパス306aおよび306cで送信させないようにし得る。パス306aおよび306c上のNPS206(または、それらのレジスタ)に対して、これらのNPS206にあるルーティングテーブルのためのレジスタブロック212のプログラムを書き換えることによってパス306を変更するようにリコンフィギュレーションを行うことができる、QoS、エラー制御などを変更するようにリコンフィギュレーションを行うことができる、または、その他の方法でリコンフィギュレーションを行うことができる。また、パス306aおよび306cのリコンフィギュレーションおよび/またはパーシャルリコンフィギュレーションによって第2サブシステム804上でインスタンス化されたアプリケーションもしくはそのサブセットに対応するよう、NSU204aならびに204bにもリコンフィギュレーションが行われる。NSU204aおよび204bならびにNPS206のリコンフィギュレーションは、図7で説明したように実行され得る。
【0047】
図9を参照すると、RP810は、第1サブシステム802の領域と、第2サブシステム804の領域と、NMU202aおよび202bと、NSU204aおよび204bと、パス306a上のNPS206(または、そのレジスタ)とを含む。この例では、RP810の論理境界を超えるパス306はない(たとえば、RP810の外部に始点があるがRP810内部に終点がないパス306、RP810の外部に始点はないがRP810内部に終点があるパス306は、存在しない)。RP810に含まれるNMU202aおよび202bならびにNSU204aおよび204bは、サブシステム802および804上のRP810の最初のRMおよび/または後続のRMの一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。図8で説明したように、NMU202aおよび202b、パス306a上のNPS206(または、それらのレジスタ)、ならびにNSU204aおよび204bにリコンフィギュレーションが行われ得る。NMU202aおよび202b、パス306a上のNPS206(または、それらのレジスタ)、ならびにNSU204aおよび204bのリコンフィギュレーションは、図7で説明したように行われ得る。パーシャルリコンフィギュレーションはRP810の外部のコンポーネントに影響を与えないため、残りのNoC106は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域806、およびパス306bを通る通信は、通常動作を継続できる。
【0048】
図10を参照すると、RP812は、第1サブシステム802の領域、第2サブシステム804の領域、NMU202aおよび202b、NSU204aおよび204b、ならびにパス306aおよび306c上のNPS206(または、それらのレジスタ)を含む。この例では、パス306cは、RP812の論理境界を超えている。パス306cの始点は、第1サブシステム802のスタティック領域806とのインターフェース(たとえば、NMU202c)にある。NSU204aは、RP812内にあり、パス306cとのインターフェースである。RP812に含まれるNMU202aおよび202bならびにNSU204bは、サブシステム802および804上のRP812の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【0049】
この例では、パーシャルリコンフィギュレーション中、NMU202cは、RP812の外部にあるパス306cのインターフェースの始点であるとして、リコンフィギュレーションが行われない。それゆえ、このインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。パーシャルリコンフィギュレーション中、処理システム104は、NMU202の対応するエンドポイント回路上で動作するアプリケーション(たとえば、スタティック領域806)に、トラフィックを生成してパス306cで送信させないようにし得る。
【0050】
図8で説明したように、NMU202aおよび202b、パス306aおよび306c上のNPS206(または、それらのレジスタ)、ならびにNSU204aおよび204bにリコンフィギュレーションが行われ得る。NMU202aおよび202b、パス306aおよび306c上のNPS206(または、そのレジスタ)、ならびにNSU204aおよび204bのリコンフィギュレーションは、図7で説明したように行われ得る。パーシャルリコンフィギュレーションはRP812の外部のその他のコンポーネントに影響を与えないため、パス306cを通る通信を停止させることに加えて、残りのNoC106は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域806、およびパス306bを通る通信は、通常動作を継続できる。
【0051】
図11を参照すると、RP814は、第1サブシステム802の領域、第2サブシステム804の領域、NMU202a、202b、および202e、NSU204b、ならびにパス306aおよび306d上のNPS206(または、それらのレジスタ)を含む。この例では、パス306dは、RP814の論理境界を超えている。RP814にあるインターフェース(たとえば、NMU202e)にパス306dの始点がある。NMU202cは、RP814の外部にあり、パス306dとのインターフェースである。RP814に含まれるNMU202aおよび202bならびにNSU204bは、サブシステム802および804上のRP814の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【0052】
この例では、パーシャルリコンフィギュレーション中、RP814の外部のエンドポイントへのパス306d上のNPS206(または、そのレジスタ)には、リコンフィギュレーションが行われない。それゆえ、このパス306dは、パーシャルリコンフィギュレーションが終わってからも存続する。RP814にあるアプリケーションまたはそのサブセットのリコンフィギュレーションを可能にするよう、NMU202eにリコンフィギュレーションを行ってもよい。
【0053】
図8で説明したように、NMU202aおよび202b、パス306a上のNPS206(または、それらのレジスタ)、ならびにNSU204bにリコンフィギュレーションが行われ得る。NMU202aおよび202b、パス306a上のNPS206(または、そのレジスタ)、ならびにNSU204bのリコンフィギュレーションは、図7で説明したように行われ得る。パーシャルリコンフィギュレーションはRP814の外部のその他のコンポーネントに影響を与えないため、RP814にあるNMU202eを休止させることによってパス306dを通る通信を停止することに加えて、残りのNoC106は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。たとえば、パーシャルリコンフィギュレーション中、スタティック領域806、およびパス306bを通る通信は、通常動作を継続できる。
【0054】
その他の例では、パーシャルリコンフィギュレーション中、図10のパス306cおよび/または図11のパス306dにリコンフィギュレーションが行われてもよい。望ましくは、たとえば、リコンフィギュレーション中に有効なトランザクションがパス306cおよび306dなどの境界パスに残っている可能性がある場合、パーシャルリコンフィギュレーションが終わってからも当該境界パスが存続することが望ましい。リコンフィギュレーション中に有効なトランザクションが境界パスに残っていた場合、この境界パスにリコンフィギュレーションを行うことによって、NoC106上に回復不能な状況を引き起こしてしまう可能性がある。境界パスとのインターフェースにあるツールおよび/またはアプリケーションによって確実に各境界パスに保留中の有効なトランザクションが存在しないようにできるのであれば、パーシャルリコンフィギュレーション中に(たとえば、パス306cおよび/または306dを取り除くことによって)これらの境界パスにリコンフィギュレーションが行われてもよい。
【0055】
図12を参照すると、第1のRP816は、第1サブシステム802の領域、第2サブシステム804の領域、NMU202a、202b、および202e、NSU204b、ならびにパス306aおよび306d上のNPS206(または、それらのレジスタ)を含み、第2のRP818は、第1サブシステム802の別の領域、第2サブシステム804の別の領域、NMU202cおよび202d、NSU204cおよび204d、ならびにパス306bおよび306d上のNPS206(または、それらのレジスタ)を含む。この例では、パス306dは、RP816および818の論理境界を超えている。パス306dは、第1のRP816にあるインターフェース(たとえば、NMU202e)に始点を有し、第2のRP818に別のインターフェース(たとえば、NMU202c)を有する。第1のRP816に含まれるNMU202aおよび202bならびにNSU204bは、サブシステム802および804上の第1のRP816の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。同様に、第2のRP818に含まれるNMU202dならびにNSU204cおよび204dは、サブシステム802および804上の第2のRP818の一部としてインスタンス化されたアプリケーション間またはそれらのサブセット間の通信のために用いられる。
【0056】
この例では、パーシャルリコンフィギュレーション中、第1のRP816の外部のエンドポイントに続くパス306d上のNPS206(または、そのレジスタ)には、リコンフィギュレーションが行われない。それゆえ、このパス306dは、パーシャルリコンフィギュレーションが終わってからも存続する。第1のRP816にあるアプリケーションまたはそのサブセットのリコンフィギュレーションを可能にするよう、NMU202eにリコンフィギュレーションを行ってもよい。パーシャルリコンフィギュレーション中、NMU202cは、第2のRP818の外部にある始点に続くパス306dのインターフェースであるとして、リコンフィギュレーションが行われない。それゆえ、このインターフェースは、パーシャルリコンフィギュレーションが終わってからも存続する。
【0057】
図8で説明したように、NMU202a、202b、および202d、パス306aおよび306b上のNPS206(または、それらのレジスタ)、ならびにNSU204b、204c、および204dにリコンフィギュレーションが行われ得る。第1のRP816の一部として、NMU202aおよび202b、パス306a上のNPS206(または、そのレジスタ)、ならびにNSU204bのリコンフィギュレーションは、図7で説明したように行われ得る。同様に、第2のRP818の一部として、NMU202d、パス306b上のNPS206(または、それらのレジスタ)、ならびにNSU204cおよび204dのリコンフィギュレーションは、図7で説明したように行われ得る。パーシャルリコンフィギュレーションは第1のRP816および第2のRP818の外部のその他のコンポーネントに影響を与えないため、残りのNoC106は、パーシャルリコンフィギュレーションが終わってからも引き続き動作できる。
【0058】
図13は、本開示の例に係る、回路設計システム1300の例を示すブロック図である。回路設計システム1300は、入/出力(IO)装置1304およびディスプレイ1306に連結されたコンピュータ1302を備える。コンピュータ1302は、CPU(Central Processing Unit)1312など、コンピューティングデバイスの構成要素を備え得るハードウェアプラットフォーム1310と、システムメモリ1314と、ストレージ1316と、入/出力(IO)インターフェース1318と、様々な補助回路1320とを備える。CPU1312は、1つ以上のマイクロプロセッサを含み得る。CPU1312は、本明細書において説明する1つ以上の動作を実行する命令を実行するように構成される。当該命令は、ハードウェアプラットフォーム1310(たとえば、キャッシュメモリ)に含まれるシステムメモリ1314、ストレージ1316、またはその他のメモリなど、非一時的なメモリに格納され得る。システムメモリ1314は、情報を格納する1つ以上のデバイスを含む。システムメモリ1314は、たとえば、RAM(Random Access Memory)、ROM(Read-Only Memory)、または、それらの組合せを含み得る。ストレージ1316は、ハードディスク、フラッシュメモリモジュール、SSD(Solid State Disk)、光ディスクなど、1つ以上のローカルな記憶装置を含む。また、ストレージ1316は、1つ以上のネットワークデータ記憶システムと通信するように構成されたインターフェース(複数可)を含み得る。IOインターフェース1318は、コンピュータ1302へのインターフェースと、コンピュータ1302からのインターフェースとを含む。IOインターフェース1318は、IO装置1304に連結され得る。IO装置1304は、キーボード、マウスなどを含み得る。また、IOインターフェース1318をディスプレイ1306に連結され得る。ディスプレイ1306は、ユーザにGUI(Graphical User Interface)1334を提示できる。補助回路1320は、キャッシュ、電源、クロック回路、データレジスタ、IOインターフェースなどを含み得る。
【0059】
コンピュータ1302は、オペレーティングシステム(OS)1330および回路設計ツール1332から構成されるソフトウェアプラットフォームをさらに含む。OS1330および回路設計ツール1332は、CPU1312によって実行される命令を含む。当該命令は、システムメモリ1314、ストレージ1316、またはその他のメモリに格納され得る。OS1330は、Linux(登録商標)、Microsoft Windows(登録商標)、Mac OS(登録商標)など、任意の周知のオペレーティングシステムを含み得る。回路設計ツール1332は、OS1330内で動作するアプリケーションである。OS1330は、ハードウェアプラットフォーム1310へのインターフェースを提供する。回路設計ツール1332のいくつかの動作について後述する。本明細書に記載の技術を備えるように適応させることができる例示的な回路設計ツールとして、カリフォルニア州サンホセのザイリンクス株式会社から入手可能なVivado(登録商標)Design Suiteがある。その他の回路設計ツールも同様に適応させることができる。
【0060】
図14は、回路設計ツール1332の例を示すブロック図である。回路設計ツール1332は、統合開発環境(IDE)モジュール1402と、設計エントリモジュール1404と、論理合成モジュール1406と、物理合成モジュール1408と、GUI(Graphical User Interface)モジュール1410とを備える。モジュール1402、1404、1406、1408、および1410は、回路設計ツール1332の1つの例示的な実施態様に過ぎない。本明細書において説明するモジュール1402、1404、1406、1408、および1410が実行する機能は、回路設計ツール1332が備える1つ以上のモジュールの異なる構成によって実行され得る。回路設計ツール1332が備えるモジュールは、電子システムの一部である回路によって、電子システムに含まれるファームウェアによって、電子システムに含まれるソフトウェアによって、またはそれらの組合せによって実現され得る。回路設計ツール1332が実装され得る例示的な電子システムは、図13で上述した。
【0061】
一般に、回路設計ツール1332は、回路設計の抽象記述を生成する。この抽象記述は、定義済み対象IC(「対象ハードウェア」)において実装するために回路設計の物理記述になるよう処理される。回路設計ツール1332は、様々な中間変換によって回路設計の抽象記述を処理して、回路設計の物理的実装を作成することができる。プログラムマブルIC(たとえば、FPGA(Field Programmable Gate Array))の場合、回路設計の物理的実装をフォーマットしてプログラマブルICに読み込み、物理回路を作成することができる。よって、回路設計ツール1332は、回路設計の抽象表現を回路設計の物理表現に変換する。回路設計の物理表現は、バイナリデータ(物理的実装)にフォーマットされ得、バイナリデータは、対象ハードウェアにおいて物理回路を実現するために用いられ得る。
【0062】
ユーザは、回路設計ツール1332とやり取りしてソースファイル1420を指定したり生成したりすることができる。ソースファイル1420は、RTL(Register-Transfer Level)ソース1422と、トラフィック仕様1424と、制約1426とを含み得る。RTLソース1422は、高位ブロックモデルの回路設計、より下位のHDL(ハードウェア記述言語)モデルの回路設計など、様々な抽象レベルの回路設計を指定する1つ以上のファイルを含む。RTLソース1422は、対象ハードウェアにほとんどまたはまったく依存しない、および/または対象ハードウェアのアーキテクチャに固有であり得る。さらには、ユーザは、回路設計ツール1332とやり取りしてトラフィック仕様1424を指定したり生成したりすることができる。トラフィック仕様1424は、回路設計に含まれるNoCのパスのID、これらのパスの対応する特性を含むファイルである。トラフィック仕様1424は、パス上の仮想チャネル、割込み、QoS(Quality of Service)、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御などを指定し得る。制約1426は、回路設計上の制約を指定する1つ以上のファイルを含む。特に、制約1426は、回路設計のタイミング性能要件(たとえば、特定のクロックの動作周波数、最大入力パス遅延、最大出力パス遅延など)を指定するタイミング制約1450を含む。また、制約1426は、配置制約1452およびルーティング制約1454を含み得る。
【0063】
回路設計ツール1332は、ソースファイル1420を処理して実装ファイル1430を生成する。実装ファイル1430は、異なる対象ハードウェアの依存性に対して異なる回路設計を指定する1つ以上のファイルを含む。たとえば、実装ファイル1430は、1つ以上のネットリスト1432と、1つ以上の物理的実装1434とを含み得る。ネットリスト(複数可)1432は、合成されたネットリスト、配置されたネットリスト、配置およびルーティングされたネットリストなどを含み得る。物理的実装1434は、PDIを含み得る。PDIは、ビットストリーム、コンフィギュレーションデータ、またはその他の実装情報を含み得る。
【0064】
IDEモジュール1402は、対象ハードウェアの回路設計を組み立て、実装、検証するための、GUIモジュール1410を通るユーザインターフェースを提供する。IDEモジュール1402は、設計エントリモジュール1404、論理合成モジュール1406、および物理合成モジュール1408の呼び出しを含む回路設計処理の全体を制御する。
【0065】
設計エントリモジュール1404は、GUIモジュール1410によるユーザ入力に応じて、回路設計の機能記述を生成する。機能記述は、複数のフリップフロップ、複数のメモリ、複数の論理ゲート、複数のプロセッサなど、接続(「ネット」または「信号」とも称す)によって互いに連結された複数の回路部品についての記述(たとえば、複数のプリミティブ)を含み得る。GUIモジュール1410は、回路設計者が様々なコンポーネントを表すシンボルおよびブロックを接続して回路設計の図面を作成するグラフィックインターフェースを含み得る。この回路設計は、RTLソース1422に変換される。これらの接続は、対象ハードウェアのNoCを通るパスを含み得る。それゆえ、ユーザは、GUIモジュール1410を介して、NoCを通るパスの属性を指定し得る。当該属性は、トラフィック仕様1424を生成するために用いられ得る。GUIモジュール1410は、ユーザがHDLコードを直接書き込んでRTLソース1422およびトラフィック仕様1424を作成するテキストインターフェースを含み得る。GUIモジュール1410は、図面ベースの入力とテキストベースの入力との組合せを用いることができる。GUIモジュール1410を介して、ユーザは、回路設計で実装するために、ソースファイル1420に格納された様々なプリミティブにアクセスし得る。各プリミティブは、GUIモジュール141を通してブロックまたはシンボルとして用いるためのフォーマット、HDLコードなど、または、それらの組合せで1つまたは複数のソースファイル1420に格納され得る。
【0066】
論理合成モジュール1406は、RTLソース1422において指定されている機能記述から回路設計の論理記述を作成する。論理記述は、特有の論理エレメントに変換された回路設計の論理表現を含む。たとえば、論理合成モジュール1406は、汎用的な回路要素を技術に固有の回路要素に変換する「テクノロジーマッピング」を行うことができる。たとえば、論理記述は、ルックアップテーブル(LUT)、桁上げ論理、IOバッファ、および同様の技術に固有のコンポーネントなど、プログラムマブルICのアーキテクチャに最適化された固有の論理エレメントに変換された回路設計の表現を含み得る。別の例では、論理記述は、ゲート、フリップフロップなど(「ゲートレベル記述」とも称する場合もある)に変換された回路設計の表現を含み得る。論理記述は、ネットリスト1432(たとえば、合成ネットリスト)によって指定され得る。
【0067】
物理合成モジュール1408は、論理記述から回路設計の物理記述を作成する。回路設計の物理記述は、対象ICにおいて実装するための回路設計の物理表現である。ある例では、物理合成モジュール1408は、NoCコンパイラ1440と、配置/ルートモジュール1442と、タイミング解析モジュール1444とを備える。NoCコンパイラ1440は、物理的な定義済みレイアウトの対象IC内に、論理記述において指定されているNMUおよびNSUのインスタンスを配置する。さらに、NoCコンパイラ1440は、NMUとNSUとの間にパスをルーティングする。物理的な定義済みレイアウトで配置されているNMUおよびNSUのIDを用いて、NoCコンパイラ1440は、トラフィック仕様1424を更新する。配置/ルートモジュール1442は、物理的な定義済みレイアウトの対象IC内に、論理記述において指定されている回路部品のインスタンス(NoC内の回路部品を除く)を配置する(「配置」)。また、対象ICの配線を用いて、配置/ルートモジュール1442は、論理記述において指定されているインスタンス間にネットをルーティングする。また、配置/ルートモジュール1442は、回路設計者が指定する配置制約1452およびルーティング制約1454を物理記述が満たしていることを確認し得る。
【0068】
いくつかの例では、物理合成モジュール1408は、対象のプログラマブルICのアーキテクチャにおいて規定される特定種類のプリミティブコンポーネントに論理記述において指定されている回路部品のインスタンスをマッピングするマッピングモジュールをさらに含み得る。その後、プリミティブコンポーネントは、配置/ルートモジュール1442によって配置およびルーティングされる。物理記述は、ネットリスト1432(たとえば、配置およびルーティングされたネットリスト)によって指定され得る。物理合成モジュール1408は、物理記述(たとえば、プログラムマブルICのPDI)から物理的実装1430を生成し得る。
【0069】
ある例では、物理合成モジュール1408は、タイミング解析モジュール1444を備える。タイミング解析モジュール1444は、回路設計の物理記述のタイミング解析を行う。タイミング解析モジュール1444は、回路設計者が規定するタイミング制約1450を物理記述が満たしていることを確認する。回路設計に制約が加えられることを確実にする、かつ、タイミング制約1450に応じて導出されるタイミング要件(たとえば、タイミングパスのスラック)を回路設計が満たすことを確実にするよう、タイミング解析は、様々なタイミングチェックを含み得る。
【0070】
図15は、本開示の例に係る、パーシャルリコンフィギュレーションのためのPDIを生成する方法1500のフローチャートを示す。図13および図14で説明したように、図15の方法1500は、回路設計ツール1332によって実装できる。
【0071】
動作1502では、回路設計の機能記述を作成する。回路設計の機能記述は、上述した設計エントリモジュール1404を用いて、説明した設計エントリモジュール1404によって機能記述を作成するための技術によって作成され得る。回路設計、したがって、機能記述は、デバイス上で動作しているときにパーシャルリコンフィギュレーションイベントが発生するとリコンフィギュレーションが行われる最初のRMを含む。また、回路設計、したがって、機能記述は、パーシャルリコンフィギュレーションが終わってからも存続するスタティックモジュールを含み得る。さらに、最初のRMは、NoCを介したその他のサブシステムとの最初のRMの論理関数への通信/最初のRMの論理関数からの通信を可能にするNMUおよび/またはNSUを含み得る。さらに、機能記述の作成は、最初のRM内に含まれるNMUおよびNSUを指定するステップを含む。
【0072】
機能記述の作成中、NoCのトラフィック仕様が作成される。トラフィック仕様は、NoCにあるパスのIDと、これらのパスの対応する特性とを含み、これらは機能記述に含まれる。トラフィック仕様は、たとえば、パス上の仮想チャネル、割込み、QoS(Quality of Service)、エラー処理およびエラー報告、トランザクション制御、電源管理、ならびにアドレスマッピング制御に関する情報を含み得る。いくつかの例では、機能記述を作成するとき、ユーザは、トラフィック仕様をポピュレートする特性を指定する。これに加えて、NMUおよびNSUが最初のRM内にあるか、または最初のRMの外にあるかは、トラフィック仕様において指定されている。
【0073】
これに加えて、動作1502中、または、その後、方法1500の間、回路設計、したがって、機能記述は、パーシャルリコンフィギュレーションイベントの発生時にインスタンス化される後続のRMを含み得る。さらに、当該後続のRMは、NoCを介したその他のサブシステムとの後続のRMの論理関数への通信/後続のRMの論理関数からの通信を可能にするNMUおよび/またはNSUを含み得る。さらに、機能記述の作成は、後続のRM内に含まれるNMUおよびNSUを指定するステップを含む。トラフィック仕様、または追加のトラフィック仕様は、NMUおよびNSUを含む、後続のRM内のパスのIDを、これらのパスの特性とともに含み得る。
【0074】
動作1504では、機能記述から論理記述を作成する。論理記述が作成される機能記述は、最初のRMと、スタティックモジュールとを含む。論理記述は、上述した論理合成モジュール1406を用いて作成され得る。
【0075】
動作1506では、最初のNMUおよびNSUの配置ならびに当該NMUとNSUとの間のルーティングを生成する。NoCコンパイラ1440は、論理記述のNMUおよびNSUを、対象ICのNoCにおいて実装するために、回路設計の物理記述で配置し得る。さらに、NoCコンパイラ1440は、NPSを配置することによって、NMUとNSUとの間でパスをルーティングし得る。最初の配置およびルーティングは、プログラマブルロジック領域またはその他のサブシステムにおいて論理関数またはその他の機能が配置されていると思われる場所とは独立し得る。論理記述は、様々な論理関数またはその他の機能が配置されていると思われるサブシステムがどれであるかを特定または示し得る。そのため、NoCコンパイラ1440は、論理記述によってNoC(異なるサブシステム間)を通るパスを特定できる。NoCコンパイラ1440は、NMUおよびNSUを配置し、様々なサブシステムへの任意のそれぞれ適切なインターフェースにおいてNMUとNSUとの間のパスを、(たとえば、NPSを配置することによって)生成する。パスを配置および生成する際、NoCコンパイラ1440は、トラフィック仕様で規定されているパスの特性を満たそうとする。NoCコンパイラ1440がNMUおよびNSUを配置ならびにトラフィック仕様にある特性を満たすパスを生成できなかった場合、エラーが生成され得、回路設計のPDIを生成するためのさらなる処理が終了させられ得る。NoCコンパイラ1440が最初にNMUおよびNSUを配置およびトラフィック仕様にある特性を満たすパスを生成することができた場合、更なる処理に進んでもよい。
【0076】
動作1508では、論理記述を最適化する。本明細書において使用するとき、「最適化する」とは、必ずしも最も適した解決策を生成することを示す訳ではない。特定的には、様々な解決策にはそれぞれ異なるコストおよび利点があり得るので、むしろ、「最適化する」とは、前回のイテレーションからのあらゆる向上を含み得る。上述した論理合成モジュール1406を用いて論理記述を最適化することができる。たとえば、論理記述に含まれる様々な論理エレメントは、論理記述に含まれるその他の論理エレメントに基づいて冗長または不必要である場合があり、最適化された論理記述は、このような論理エレメントを省いてもよい。さらには、たとえば、いくつかの論理関数は、論理記述が示すよりも単純または高速の論理エレメントを用いて実装されている場合があり、最適化された論理記述は、当該より単純またはより高速の論理エレメントを実装してもよい。いくつかの例では、動作1508の最適化を省略してもよい。下記の論理記述についての説明は、元の論理記述を指す場合もあれば、最適化された論理記述を指す場合もある。
【0077】
動作1510では、論理記述において指定されている回路部品のインスタンスを対象ICのアーキテクチャの物理表現で配置して、物理記述の少なくとも一部を生成する。論理記述で指定されている論理関数の論理エレメントに対応する回路部品のインスタンスは、配置/ルートモジュール1442によって配置され得る。論理記述において指定されているNoCに対応する回路部品のインスタンスは、NoCコンパイラ1440によって配置され得る。動作1506から対応するNMUおよびNSUの最初の配置を調整することによって、NoCコンパイラ1440は、NMUおよびNSUが物理表現で配置され得る。様々なサブシステム(たとえば、プログラマブルロジック領域)に回路部品のインスタンスを配置すると、様々な回路部品のインスタンスと通信するための対応するNMUおよびNSUが決定され得、これらのNMUおよびNSUの配置は、NoCコンパイラ1440によって決定され得る。NMUおよびNSUを配置すると、NMUとNSUとの間にパスを形成するようにNPSが配置され得る。NMUおよびNSUの配置、および当該NMUとNSUのとの間のパス(たとえば、NPSの配置)のルーティングには、トラフィック仕様で指定されている特性を満たすために制約が加えられている。
【0078】
動作1512では、配置された回路部品間のルーティングを対象ICのアーキテクチャの物理表現で生成し、物理記述の少なくとも一部を生成する。動作1512のルーティングは、各サブシステム(たとえば、プログラマブルロジック領域内のルーティング)内でルーティングされ得る。回路部品のインスタンス間のルーティングは、配置/ルートモジュール1442によってルーティングされ得る。
【0079】
動作1514では、配置された回路部品および物理記述におけるルーティング基づいて、PDIを生成する。PDIは、たとえば、1つ以上のプログラマブルロジック領域のビットストリームと、NoCのコンフィギュレーションデータと、その他のプログラマブルコンポーネントのその他のコンフィギュレーションデータとを含む。それゆえ、PDIは、対象ICにおいて最初のRMおよびスタティックモジュールを実装し得る。
【0080】
動作1516では、回路設計の物理記述から最初のRMの回路部品を取り除く。最初のRMの回路部品を取り除くことは、最初のRMに含まれる論理関数の論理エレメントに対応する回路部品のインスタンスを取り除くステップと、最初のRMに含まれるNMUおよびNSUを取り除くステップとを含む。さらには、最初のRMのNoCにあるパスのトラフィック仕様が削除される。物理合成モジュール1408は、論理関数の論理エレメントに対応する回路部品を取り除き得る。NoCコンパイラ1440は、NMUおよびNSUを取り除き、パスのトラフィック仕様を削除し得る。
【0081】
動作1518では、回路設計の残りの物理記述をロックする。たとえば、プログラマブルロジック領域にある論理関数の論理エレメントに対応する回路部品の残りのインスタンスおよびそれらの間のルーティングがロックされる。これに加えて、残りのNMUおよびNSUの配置を含む残りのパスがロックされる。物理記述においてこれらのコンポーネントをロックすることは、物理合成モジュール1408によって行われ得る。
【0082】
動作1520では、動作1504と同様に、後続のRMの機能記述から論理記述を作成する。
【0083】
動作1522では、動作1506と同様に、ロック解除された物理記述のコンポーネントを用いて、後続のRMについて、最初のNMUおよびNSUの配置ならびに当該NMUとNSUとの間のルーティングを生成する。NMUおよびNSUを配置し、当該NMUとNSUとの間をルーティングしている間、ロックされた(たとえば、動作1518においてロックされた)NMU、NSU、およびパスは、ロックされたままであり、修正されていない。それゆえ、最初のNMUおよびNSUの配置ならびに当該NMUとNSUとの間のルーティングは、ロックされたNMUおよびNSUの配置、ならびにロックされたパスのルーティングに従う。それゆえ、動作1522における最初の配置およびルーティングは、スタティックモジュールの結果ロックされていないNMU、NSU、およびパスを用いる。したがって、最初のNMUおよびNSUの配置ならびに当該NMUとNSUとの間のルーティングは、少なくとも最初は、図8図12で上述したユースケースシナリオを実現できる。
【0084】
動作1524では、動作1508と同様に、後続のRMの論理記述を最適化する。動作1526では、動作1510と同様に、ロック解除された物理記述のコンポーネントを用いて後続のRMの論理記述において指定されている回路部品のインスタンスを配置し、別の(または修正後の)物理記述の少なくとも一部を生成する。動作1526の間、ロックされたスタティックロジック、ならびにロックされたNMU、NSU、およびパスの配置およびルーティングが遵守され、変更されない。それゆえ、動作1526における回路部品の配置では、スタティックモジュールの結果ロックされていない回路部品が使われる。したがって、NMUおよびNSUの配置ならびに当該NMUとNSUとの間のルーティングは、図8図12で上述したユースケースシナリオを実現できる。動作1528では、動作1512と同様に、配置された後続のRMの回路部品のインスタンス間のルーティングを修正後の物理記述で生成する。動作1530では、動作1514と同様に、PDIを修正後の物理記述に基づいて生成する。このPDIは、動作1514で生成されたPDIに含まれてもよく、動作1514で生成されたPDIとは別個であってもよい。動作1530で生成されたPDIは、1つ以上のプログラマブルロジック領域の部分ビットストリームと、NoCのパーシャルコンフィギュレーションデータと、その他のプログラマブルコンポーネントのその他のコンフィギュレーションデータとを含み得る。
【0085】
図15に具体的に図示していないが、物理記述にタイミングおよび解析を行ってもよく、たとえば、スキュー回数を低減させるなどのために、最適化を実施して配置およびルーティングを改善させてもよい。その他の動作も同様に行われてもよい。
【0086】
本明細書において説明する例は、ネットワークオンチップ(Network-on-Chip:NoC)を有する、システムオンチップ(System-on-Chip:SoC)などの電子回路を規定する。このNoCは、コンフィギャラブルであり、パーシャルリコンフィギュレーションが行われる機能を有する。
【0087】
本開示の例は、集積回路を操作する方法である。このような方法は、集積回路上にネットワークオンチップ(Network-on-Chip:NoC)にコンフィギュレーションを行うステップと、NoCを介して集積回路上のサブシステム間を通信させるステップと、NoCにパーシャルリコンフィギュレーションを行うステップとを含み、パーシャルリコンフィギュレーション中、NoCの第1サブセットにリコンフィギュレーションが行われ、NoCの第2サブセットは、パーシャルリコンフィギュレーション中、継続的に通信を通過させ続けることが可能であり、方法は、さらに、パーシャルリコンフィギュレーション後、NoCの第1サブセットを介してサブシステムのうち2つ以上のサブシステム間を通信させるステップを含んでもよい。
【0088】
いくつかのこのような方法では、NoCにパーシャルリコンフィギュレーションを行うステップは、NoCの第1サブセットを休止させるステップと、NoCの第1サブセットを休止させるステップの後、NoCの第1サブセットにリコンフィギュレーションを行うステップとを含んでもよい。
【0089】
いくつかのこのような方法では、NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含んでもよく、NPSは、ルーティングによってNMUとNSUとの間で相互接続されている。
【0090】
いくつかのこのような方法では、NoCにパーシャルリコンフィギュレーションを行うステップは、通信パケットを送信することを停止するよう、NoCの第1サブセットに含まれるNMUを制御するステップと、受信した通信パケットを拒否するよう、NoCの第1サブセットに含まれるNSUを制御するステップと、停止および拒否するようNoCの第1サブセットに含まれるNMUおよびNSUをそれぞれ制御するステップの後、NoCの第1サブセットに含まれるNMU、NoCの第1サブセットに含まれるNSU、およびNoCの第1サブセットに含まれるNPSにリコンフィギュレーションを行うステップと、NoCの第1サブセットに含まれるNMU、NSU、およびNPSにリコンフィギュレーションを行うステップの後、NoCの第1サブセットに含まれるNMUおよびNSUの通信を有効にするステップとを含んでもよい。
【0091】
いくつかのこのような方法では、NoCにパーシャルリコンフィギュレーションを行うステップは、集積回路上で動作し、パーシャルリコンフィギュレーション中にリコンフィギュレーションが行われないアプリケーションに、NoCの第1サブセットを介した通信の送信を停止させるステップをさらに含んでもよい。
【0092】
いくつかのこのような方法では、NoCの第1サブセットに含まれるNMUは、1つ以上の第1の制御レジスタ含んでもよく、NoCの第1サブセットに含まれるNMUを制御するステップは、1つ以上の第1の制御レジスタに書き込むステップを含み、NoCの第1サブセットに含まれるNSUは、1つ以上の第2の制御レジスタを含んでもよく、NoCの第1サブセットに含まれるNMUを制御するステップは、1つ以上の第2の制御レジスタに書き込むステップを含む。
【0093】
いくつかのこのような方法では、NPSの各々は、通信パケットを受信および送信するように構成されたポートを有してもよく、ポートは、それぞれルーティングに接続されており、NPSの各々は、ルーティングテーブルをさらに含んでもよく、ルーティングテーブルは、レジスタを含み、レジスタの各々は、1つ以上の宛先IDに対応付けられてもよく、レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、定義済みビット位置のうちの1つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、受信通信パケットに含まれている宛先IDに対応付けられたレジスタにある、受信通信パケットを受信するポートに対応する。
【0094】
いくつかのこのような方法では、NoCにパーシャルリコンフィギュレーションを行うステップは、ルーティングテーブルのレジスタのうち1つ以上に書き込むステップを含むNoCの第1サブセットに含まれるNPSにリコンフィギュレーションを行うステップを含んでもよい。
【0095】
いくつかのこのような方法では、NoCにコンフィギュレーションを行うステップは、第1パスおよび第2パスにコンフィギュレーションを行うステップを含んでもよく、第1パスおよび第2パスは、各々、NPSのうち第1のNPSを通り、NoCにパーシャルリコンフィギュレーションを行うステップは、第1のNPSを通る第1パスにリコンフィギュレーションを行うステップを含んでもよく、パーシャルリコンフィギュレーション中、第1のNPSを通る第2パスは、継続的に通信を通過させ続けることが可能である。
【0096】
いくつかのこのような方法では、NoCは、NoCペリフェラルインターコネクト(NPI)をさらに含んでもよく、NoCにパーシャルリコンフィギュレーションを行うステップは、NPIを介したメモリにマッピングされたトランザクションを用いてNoCの第1サブセットのコンポーネントにコンフィギュレーションデータを書き込むステップを含んでもよい。
【0097】
別の例では、集積回路は、チップ上に第1サブシステムと、チップ上に第2サブシステムと、チップ上に、第1サブシステムと第2サブシステムとの間に通信可能に接続されたネットワークオンチップ(Network-on-Chip:NoC)とを備えてもよく、NoCは、NoCを通る通信パスを確立するようにコンフィギャラブルであり、NoCは、パーシャルリコンフィギュレーション可能に構成され、通信パスの第2サブセットが継続的に通信を通過させることが可能である間に通信パスの第1サブセットにリコンフィギュレーションを行う。
【0098】
いくつかのこのような集積回路では、NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含んでもよく、NPSは、ルーティングによってNMUとNSUとの間で相互接続されており、NPSの各々は、通信パケットを受信および送信するように構成されたポートを有してもよく、ポートは、それぞれルーティングに接続されており、NPSの各々は、ルーティングテーブルをさらに含んでもよく、ルーティングテーブルは、レジスタを含み、レジスタの各々は、1つ以上の宛先IDに対応付けられてもよく、レジスタの各々の定義済みビット位置は、通信パケットを受信可能なそれぞれのポートに対応し、定義済みビット位置に書き込まれた値は、通信パケットを送信するそれぞれのポートを識別し、定義済みビット位置のうちの1つ以上に書き込まれた値によって識別されるポートで送信された受信通信パケットは、受信通信パケットに含まれている宛先IDに対応付けられたレジスタにある、受信通信パケットを受信するポートに対応する。
【0099】
いくつかのこのような集積回路では、NoCは、NoCマスタユニット(NMU)と、NoCスレーブユニット(NSU)と、NoCパケットスイッチ(NPS)と、ルーティングとを含んでもよく、NPSは、ルーティングによってNMUとNSUとの間で相互接続されており、NMUの各々は、1つ以上の第1の制御レジスタを含んでもよく、NMUの各々は、1つ以上の第1の制御レジスタに書き込まれた値に基づいて通信を送信することを停止するよう制御可能であり、NSUの各々は、1つ以上の第2の制御レジスタを含んでもよく、NMUの各々は、1つ以上の第2の制御レジスタに書き込まれた値に基づいて通信を拒否するように制御可能である。
【0100】
いくつかのこのような集積回路では、NoCは、NoCペリフェラルインターコネクト(NPI)を含んでもよく、NoCは、メモリにマッピングされたトランザクションをNPIを介して送信することによってコンフィギュレーション可能である。
【0101】
いくつかのこのような集積回路では、第1サブシステムは、プログラマブルサブシステムであってもよい。
【0102】
別の例では、システムは、プロセッサと、命令を格納したコンピュータ読み取り可能な媒体とを備えてもよく、当該命令は、プロセッサによって実行されると、プロセッサに動作を実行させ、当該動作は、最初のリコンフィギャラブルモジュールおよびスタティックモジュールから構成される第1の回路設計の第1の物理記述を生成する動作を含み、第1の物理記述は、対象集積回路の物理レイアウトに対応し、対象集積回路は、ネットワークオンチップ(Network-on-Chip:NoC)を備え、第1の物理記述は、最初のリコンフィギャラブルモジュールに対応するNoCを通るパスの回路部品を含むリコンフィギャラブルパーティションを含み、上記動作は、さらに、後続のリコンフィギャラブルモジュールから構成される第2の回路設計の第2の物理記述を生成する動作を含み、第2の物理記述は、第1の物理記述に基づく物理記述であり、後続のリコンフィギャラブルモジュールに対応するNoCを通るリコンフィギュレーションが行われたパスの回路部品を含むリコンフィギャラブルパーティションを含み、上記動作は、さらに、第1の物理記述および第2の物理記述に基づいて1つ以上のプログラミングデバイス画像を生成する動作を含み、1つ以上のプログラミングデバイス画像は、対象集積回路に読み込み可能であり、最初にコンフィギュレーションが行われると第1の回路設計を実装し、パーシャルリコンフィギュレーションが行われると第2の回路設計を実装する。
【0103】
いくつかのこのようなシステムでは、第2の物理記述を生成する動作は、リコンフィギャラブルパーティションの回路部品を第1の物理記述から取り除く動作を含んでもよく、取り除かれたリコンフィギャラブルパーティションの回路部品は、最初のリコンフィギャラブルモジュールに対応するNoCを通るパスの回路部品を含み、動作は、さらに、取り除く動作の後、スタティックモジュールに対応する残りの回路部品を第1の物理記述でロックする動作と、ロックする動作の後、後続のリコンフィギャラブルモジュールに対応する回路部品を第1の物理記述のリコンフィギャラブルパーティションに配置する動作を含み、配置された回路部品は、後続のリコンフィギャラブルモジュールに対応するNoCを通る、リコンフィギュレーションが行われたパスの回路部品を含み、上記動作は、さらに、配置する動作の後、配置された回路部品のうち、少なくともいくつかの回路部品間の接続をルーティングする動作を含む。
【0104】
いくつかのこのようなシステムでは、後続のリコンフィギャラブルモジュールに対応する回路部品を配置する動作に制約が加えられてもよく、この制約は、最初のリコンフィギャラブルモジュールに対応するNoCを通るパスが第2の物理記述まで存続することを含み、このパスの始点インターフェースは、リコンフィギャラブルパーティション内にあり、終点インターフェースは、このリコンフィギャラブルパーティションの外部にある。
【0105】
いくつかのこのようなシステムでは、1つ以上のプログラミングデバイス画像は、第1の物理記述に基づく第1のプログラミングデバイス画像と、第2の物理記述に基づく第2のプログラミングデバイス画像とを含んでもよく、第2のプログラミングデバイス画像は、NoCのパーシャルコンフィギュレーションデータを含む。
【0106】
いくつかのこのようなシステムでは、対象集積回路上のNoCの回路部品は、NoCマスタユニット(NMU)、NoCスレーブユニット(NSU)、NoCパケットスイッチ(NPS)、およびルーティングを含んでもよく、NPSは、ルーティングによってNMUとNSUとの間で相互接続されている。
【0107】
以上は、詳細な例を対象としたが、その基本的な範囲を逸脱することなくその他の例およびさらなる例が考案されてもよく、その範囲は、添付の特許請求の範囲によって示される。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15