(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-08-30
(45)【発行日】2024-09-09
(54)【発明の名称】プログラマブル論理デバイスにおけるファブリックの規則性
(51)【国際特許分類】
G06F 15/78 20060101AFI20240902BHJP
G06F 30/347 20200101ALI20240902BHJP
H03K 19/17724 20200101ALI20240902BHJP
【FI】
G06F15/78 560
G06F30/347
H03K19/17724
(21)【出願番号】P 2021578064
(86)(22)【出願日】2020-06-01
(86)【国際出願番号】 US2020035572
(87)【国際公開番号】W WO2021002989
(87)【国際公開日】2021-01-07
【審査請求日】2023-04-28
(32)【優先日】2019-07-03
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ブーゲル,マーティン・エル
(72)【発明者】
【氏名】バウアー,トレバー・ジェイ
(72)【発明者】
【氏名】フレス,アンリ
【審査官】田中 幸雄
(56)【参考文献】
【文献】特表2009-508243(JP,A)
【文献】MORI, Haruka et al.,Design and Performance Evaluation of a Manycore Processor for Large FPGA,Proceedings of 2014 IEEE 8th International Symposium on Embedded Multicore/Manycore SoCs,IEEE,2014年09月23日,pages207-214
(58)【調査した分野】(Int.Cl.,DB名)
G06F 15/78
G06F 30/347
H03K 19/17724
(57)【特許請求の範囲】
【請求項1】
デバイスであって、
複数の異種論理ブロックであって、前記異種論理ブロックの各々は、プログラマブル論理ブロックの同一の構成を含む、複数の異種論理ブロックと、
前記異種論理ブロックの各々に結合されたプラットフォーム管理コントローラであって、
設計コアの構成データ
およびオフセット値を受信し、
前記構成データを使用して、前記複数の異種論理ブロックのうちの第1の異種論理ブロックに前記設計コアを実装し、
前記構成データ
および前記オフセット値を使用して、前記複数の異種論理ブロックのうちの第2の異種論理ブロックに前記設計コアを実装するように構成されている、プラットフォーム管理コントローラと、を備える、デバイス。
【請求項2】
前記第1の異種論理ブロックおよび前記第2の異種論理ブロックは、データを送受信するように構成されたオンチップのパケット化データ通信インタフェースをさらに備える、請求項1に記載のデバイス。
【請求項3】
前記第2の異種論理ブロックに実装された前記設計コアは、前記第1の異種論理ブロックに実装された前記設計コアの配置、順序指定、またはタイミング情報のうちの少なくとも1つを再利用する、請求項1に記載のデバイス。
【請求項4】
前記構成データは、前記第1の異種論理ブロックを構成するための第1の部分と、前記第2の異種論理ブロックを構成するための第2の部分とを備える、請求項1に記載のデバイス。
【請求項5】
前記構成データの前記第1の部分は、前記第1の異種論理ブロックを識別するための第1の識別子を備え、前記構成データの前記第2の部分は、前記第2の異種論理ブロックを識別するための第2の識別子を備える、請求項4に記載のデバイス。
【請求項6】
前記設計コアは、前記複数の異種論理ブロックのうちの2つ以上の異種論理ブロックにまたがる、請求項1に記載のデバイス。
【請求項7】
システムであって、
第1の構成データ
およびオフセット値を生成するように構成された処理デバイスと、
第1のプログラマブル論理デバイスであって、
複数の異種論理ブロックであって、前記異種論理ブロックの各々は、プログラマブル論理ブロックの同一の構成を含む、複数の異種論理ブロックと、
前記異種論理ブロックの各々に結合されたプラットフォーム管理コントローラであって、
設計コアの第1の構成データ
およびオフセット値を受信し、
前記第1の構成データを使用して、前記複数の異種論理ブロックのうちの第1の異種論理ブロックに前記設計コアを実装し、
前記第1の構成データ
と前記オフセット値を使用して、前記複数の異種論理ブロックのうちの第2の異種論理ブロックに前記設計コアを実装するように構成されている、プラットフォーム管理コントローラと、を備える、第1のプログラマブル論理デバイスと、を備える、システム。
【請求項8】
前記第1の異種論理ブロックおよび前記第2の異種論理ブロックは、データを送受信するように構成されたオンチップのパケット化データ通信インタフェースをさらに備える、請求項7に記載のシステム。
【請求項9】
前記第2の異種論理ブロックに実装された前記設計コアは、前記第1の異種論理ブロックに実装された前記設計コアの配置、順序指定、またはタイミング情報のうちの少なくとも1つを再利用する、請求項7に記載のシステム。
【請求項10】
前記第1の構成データは、前記第1の異種論理ブロックを構成するための第1の部分と、前記第2の異種論理ブロックを構成するための第2の部分とを備える、請求項7に記載のシステム。
【請求項11】
前記第1の構成データの前記第1の部分は、前記第1の異種論理ブロックを識別するための第1の識別子を備え、前記第1の構成データの前記第2の部分は、前記第2の異種論理ブロックを識別するための第2の識別子を備える、請求項10に記載のシステム。
【請求項12】
前記設計コアは、前記複数の異種論理ブロックのうちの2つ以上の異種論理ブロックにまたがる、請求項7に記載のシステム。
【請求項13】
第2のプログラマブル論理デバイスをさらに備え、前記第2のプログラマブル論理デバイスは、
前記第1のプログラマブル論理デバイスの前記異種論理ブロックと同一の複数の異種論理ブロックと、
前記第2のプログラマブル論理デバイスの前記異種論理ブロックの各々に結合された第2のプラットフォーム管理コントローラ
とを備え、
前記第2のプラットフォーム管理コントローラは、第2の構成データを使用して第3の異種論理ブロックに前記設計コアを実装するように構成されてい
る、請求項7に記載のシステム。
【請求項14】
方法であって、
プログラマブル論理デバイスの第1の異種論理ブロックに第1の設計を実装するために、第1の構成データを含む第1のビットストリームを生成するステップであって、前記第1のビットストリームは、前記第1の構成データを前記第1の異種論理ブロックに関連付けるための第1の識別子を含む、ステップと、
前記プログラマブル論理デバイスの第2の異種論理ブロックに前記第1の設計を実装するために、前記第1の構成データ
およびオフセット値を含む第2のビットストリームを生成するステップであって、前記第2のビットストリームは、前記第1の構成データを前記第2の異種論理ブロックに関連付けるための第2の識別子を含み、前記第1の異種論理ブロックおよび前記第2の異種論理ブロックの各々は、プログラマブル論理ブロックの同一の構成を含む、ステップと、を含む、方法。
【請求項15】
前記第1の構成データは、機能を実装するために前記第1の異種論理ブロックの少なくとも一部および前記第2の異種論理ブロックの一部を構成す
る、請求項14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
技術分野
本開示の態様は、一般に、プログラマブル論理デバイスに関し、具体的には、プログラマブル論理デバイス内のファブリックの規則性に関する。
【背景技術】
【0002】
背景技術
プログラマブル論理デバイス(PLD)は、様々な選択された機能を実装するためにユーザによってプログラムされ得る周知の汎用デバイスである。PLDの一例は、フィールドプログラマブルゲートアレイ(FPGA)である。FPGAは、プログラマブル相互接続構造によって互いに選択的に接続された構成可能論理ブロックのアレイ、複数の入力/出力ブロック、およびブロックRAM要素を含むことができる。
【0003】
ユーザは、1つまたは複数のソフトウェア設計ツールを用いてPLD設計を取り込むことができる。ソフトウェア設計ツールは、ユーザがPLDの所望の機能および/または挙動を指定することを可能にする。ユーザの設計は、所望の機能および/または挙動を実装するために、PLD内の1つまたは複数の特定の論理ブロックを対象とするまたは指定することができる。さらに、ソフトウェア設計ツールは、ユーザの設計をシミュレート、配置、および順序指定し、関連する構成ファイルを生成することができる。構成ファイルは、PLDの電源が投入されたときにPLD内の構成可能要素をプログラムするために使用され得るユーザの設計のビット単位の表現であり得る。
【0004】
場合によっては、ユーザのPLD設計は設計コアを含むことができる。設計コアは、例えば、PLDのいくつかの論理ブロック、入力/出力ブロック、RAM要素などを包含することができる特定の機能または特徴を実装することができる。設計コア、より具体的には大きく複雑な設計コアは、ソフトウェア設計ツールを介して記述および実装するためにかなりの設計時間を必要とする場合がある。例えば、特定の設計コアの入力、シミュレーション(例えば、タイミングおよび/または動作周波数の検証)、配置、および順序指定に数時間または数日かかる場合がある。
【0005】
場合によっては、ユーザは設計コアを「再配置」したい場合がある。設計コアを再配置することは、PLD内で設計コアの位置を変更すること、または場合によっては、設計コアを異なるPLDにまとめて移動させることを含むことができる。従来の手法では、ユーザは、ソフトウェア設計ツールを再実行して、新しい設計コア位置を指定し、更新された設計をシミュレートし、配置し、順序指定する必要があり得る。設計ツールを再実行すると、特に設計コアが大きくおよび/または複雑である場合、設計時間が非建設的に増加する可能性がある。したがって、予測可能なタイミングおよび/または最大動作周波数を提供しながら、PLD内の設計の全部または一部を再配置するためのより効率的なプロセスが必要とされている。
【発明の概要】
【課題を解決するための手段】
【0006】
発明の概要
この概要は、以下の詳細な説明でさらに説明される概念の選択を簡略化した形で紹介するために提供される。この概要は、特許請求される主題の重要な特徴または本質的な特徴を特定することを意図しておらず、特許請求される主題の範囲を限定することも意図していない。
【0007】
本開示の態様は、プログラマブル論理デバイスに関する構成データの再使用に関する。プログラマブル論理デバイスは、複数のほぼ同一の異種論理ブロックを含むことができる。第1の異種論理ブロック内に実装された設計の構成データは、第2の異種論理ブロック内に設計を実装するために再利用することができる。例示的なプログラマブル論理デバイスは、各々がデジタル信号処理ブロック、プログラマブル論理ブロックの同一の構成を含む複数の異種論理ブロックと、各異種論理ブロックに結合されたプラットフォーム管理コントローラとを含む。プラットフォーム管理コントローラは、第1の異種論理ブロックに設計コアを実装するように構成されてもよい。プラットフォーム管理コントローラはまた、第2の異種論理ブロックに設計コアを実装し、第1の異種論理ブロックおよび第2の異種論理ブロックを構成するために第1のビットストリームを受信することができる。システムはまた、ビットストリームを生成するように構成された処理デバイスを含むことができる。
【0008】
プログラマブル論理デバイスを備える例示的なシステムが開示され、システムは、各々がデジタル信号処理ブロック、プログラマブル論理ブロックの同一の構成を含む複数の異種論理ブロックと、各異種論理ブロックに結合されたプラットフォーム管理コントローラとを含む。プラットフォーム管理コントローラは、第1の異種論理ブロックに設計コアを実装するように構成されてもよい。さらに、プラットフォーム管理コントローラは、第2の異種論理ブロックに設計コアを実装することができ、また、第1のビットストリームおよび第2のビットストリームを生成するように構成された処理デバイスを含むことができる。
【0009】
本明細書に開示される例示的な方法は、プログラマブル論理デバイス用のビットストリームを生成するために使用することができる。本方法は、プログラマブル論理デバイスの第1の異種論理ブロックに第1の設計を実装するために、第1の構成データを含む第1のビットストリームを生成するステップを含むことができる。第1のビットストリームは、第1の構成データを第1の異種論理ブロックに関連付けるための第1の識別子を含むことができる。本方法は、プログラマブル論理デバイスの第2の異種論理ブロックに第1の設計を実装するために、第1の構成データを含む第2のビットストリームを生成するステップを含むことができる。第2のビットストリームは、第1の構成データを第1の異種論理ブロックに関連付けるための第2の識別子を含むことができる。
【0010】
図面の簡単な説明
例示的な実施形態は、例として示されており、添付の図面の図によって限定されることを意図していない。図面および明細書全体を通して、同様の符号は同様の要素を指す。
【図面の簡単な説明】
【0011】
【
図1】例示的なプログラマブル論理デバイスのブロック図を示す。
【
図3A】複数の異種論理ブロックを有するプログラマブル論理デバイス内で設計コアをコピーまたは移動する例示的な動作を示すブロック図を示す。
【
図3B】複数の異種論理ブロックを有するプログラマブル論理デバイス内で設計コアをコピーまたは移動する例示的な動作を示すブロック図を示す。
【
図5】ビットストリームを生成するための例示的な動作を示す例示的なフローチャートを示す。
【発明を実施するための形態】
【0012】
以下の説明では、本開示の完全な理解を提供するために、特定のコンポーネント、回路、およびプロセスの例など、多数の特定の詳細が記載される。本明細書で使用される「結合された」という用語は、1つまたは複数の介在するコンポーネントまたは回路に直接結合されているか、またはそれを介して結合されていることを意味する。また、以下の説明において、および説明の目的のために、具体的な命名法および/または詳細は、例示的な実施形態の完全な理解を提供するために記載される。しかしながら、これらの特定の詳細は、例示的な実施形態を実施するために必要とされなくてもよいことが当業者には明らかであろう。他の例では、本開示を不明瞭にすることを避けるために、周知の回路およびデバイスがブロック図形式で示されている。本明細書に記載の様々なバスを介して提供される信号のいずれかは、他の信号と時間多重化され、1つまたは複数の共通バスを介して提供されてもよい。さらに、回路要素間またはソフトウェアブロック間の相互接続は、バスまたは単一の信号線として示すことができる。バスの各々は代替的に単一の信号線であってもよく、単一の信号線の各々は代替的にバスであってもよく、単一の線またはバスは、コンポーネント間の通信のための無数の物理的または論理的機構のうちの任意の1つまたは複数を表すことができる。例示的な実施形態は、本明細書に記載の特定の例に限定されると解釈されるべきではなく、むしろ添付の特許請求の範囲によって定義されるすべての実施形態をその範囲内に含むものとする。
【0013】
プログラマブル論理デバイスの設計の一部または全部の再配置および/または再利用は、設計時間の点でコストがかかる場合がある。例えば、ユーザは、ソフトウェア設計ツールを再実行して、ユーザの設計を再配置し、コンパイルし、配置し、順序指定し、新しい構成データを生成することができる。ソフトウェア設計ツールの再実行は、ユーザの設計のサイズおよび/または複雑さに基づいて、完了するのに数分、数時間、または場合によっては数日かかることがある。
【0014】
本開示の態様は、複数の異種論理ブロックを使用してプログラマブル論理デバイスを実装することによって、既存の設計を再配置および/または再利用することに関連する設計時間を短縮することができる。一実施形態では、異種論理ブロックは、プログラマブル論理、RAM、および例えばデジタル信号処理ブロックなどの1つまたは複数の専用計算ブロックを含む複数の論理要素を含むことができる。各異種論理ブロックの内容および配置は、互いに実質的に同様であってもよい。このようにして、異種論理ブロックのうちの1つ内に実装され得る設計は、任意の他の異種論理ブロックに容易に移動または複製され得る。いくつかの実装形態では、2つ以上の異種論理ブロックにまたがる設計はまた、別の2つ以上の異種論理ブロックに再配置および/またはコピーされてもよい。
【0015】
図1は、例示的なプログラマブル論理デバイス(PLD)100のブロック図を示す。PLD100は、プロセッサシステム110、プラットフォーム管理コントローラ(PMC)120、ネットワークオンチップ(NoC)コントローラ130、NoC通信ファブリック135、およびいくつかの異種論理ブロック140~147を含むことができる。いくつかの実装形態では、PLD100は、
図1の例に示されたものよりも少ない、多い、または異なる論理要素または論理ブロックを含むことができる。いくつかの論理ブロックまたは要素は、簡略化のために示されていない場合がある。例えば、PLD100は、入力/出力ブロック、クロック分配ブロック、および/または他の論理ブロックを含むことができる。
【0016】
プロセッサシステム110は、PLD100内で使用するための1つまたは複数の処理ユニットおよび/またはプロセッサを含むことができる。いくつかの実装形態では、プロセッサシステム110は、ARMコア、ならびに関連するメモリ、キャッシュメモリ、プロセッサコアインタフェースなどを含む、1つまたは複数の処理コアを含むことができる。PMC120は、プラットフォーム管理動作に関連する1つ以上の論理ブロックまたは回路要素を含んでもよい。いくつかの実装形態では、PMC120は、電力管理論理、JTAG、I2C、SE、eMMCを含む1つまたは複数のバスインタフェース、および他の技術的に実現可能なバスインタフェースを含むことができる。さらに、PMC120は、ビットストリーム内の構成データを受信するためのインタフェースを含むことができる。構成データは、ユーザの設計を実装するためにPLDの構成可能論理要素を構成するために使用することができる。ビットストリームは、構成データおよび他のPLD固有の情報を含むことができる。いくつかの実装形態では、PMC120はビットストリーム記憶デバイス150に結合されてもよい。ビットストリーム記憶デバイス150は、構成データ157を含むビットストリーム155を含むことができる。いくつかの実装形態では、ビットストリーム記憶デバイス150は、ビットストリーム155を記憶するのに十分な容量を有する不揮発性メモリであってもよい。他の実装形態では、ビットストリーム記憶デバイス150は、ビットストリーム155をPLD100に提供するように構成された処理デバイスであってもよい。さらに、PMC120は、ビットストリーム155に記載されているように論理ブロックおよび要素を構成するために、構成バス(簡略化のために図示せず)を介してPLD100内の1つまたは複数の論理ブロックおよび/または要素に結合されてもよい。
【0017】
NoCコントローラ130は、NoCファブリック135に結合されてもよい。NoCコントローラ130およびNoCファブリック135は共に、PLD100内の1つまたは複数の論理ブロックおよび/または要素間のデータ転送を可能にするアドレス指定可能なパケット化されたデータ通信システムを形成することができる。いくつかの実装形態では、NoCコントローラ130および/またはNoCファブリック135は、PLD100内のデータの動的なアドレス指定および順序指定を可能にするために、プログラマブルスイッチ、プログラマブル回路、および/または構成レジスタ(簡略化のために図示せず)を含むことができる。
【0018】
図1は、異種論理ブロック140~147を含むPLD100を示す。PLD100は、任意の技術的に実現可能な数の異種論理ブロックを含むことができる。異種論理ブロック140~147の各々は、NoCインタフェース(簡略化のために図示せず)を介してNoCファブリック135に結合することができる。
図2に関連してより詳細に後述するように、異種論理ブロック140~147は、類似、同一、またはほぼ同一の構成の複数の機能ブロックおよび/または論理ブロックを含むことができる。
図1の異種論理ブロック140~147の描写は、単なる論理表現であり、回路、デバイスなどの内部物理配置の実装を暗示または制限することを意味するものではない。したがって、異種論理ブロック内に実装される設計は、それらの同一または類似の構成に起因して、任意の他の異種論理ブロックに容易に再配置することができる。さらに、NoCファブリック135は、任意の異種論理ブロック140~147を用いて、設計を実装するために必要なデータへのアクセスを提供することができる。
【0019】
図2は、異種論理ブロック200のブロック図である。異種論理ブロック200は、
図1の異種論理ブロック140~147のいずれかの例示的な実施形態であってもよい。異種論理ブロック200は、プログラマブル論理210、デジタル信号処理(DSP)ブロック220、メモリ230、ネットワークオンチップインタフェース240を含むことができる。いくつかの実装形態では、異種論理ブロック200は、
図2の例に示されたものよりも少ない論理ブロック、より多くの論理ブロック、および/または異なる論理ブロック(簡略化のために図示せず)を含むことができる。異なる論理ブロックの例は、イーサネット(登録商標)論理ブロック、軟判定順方向誤り訂正(SD-FEC)ブロック、基準クロック(RCLK)ブロック、および他のクロック回路を含むことができるが、これらに限定されない。
【0020】
プログラマブル論理210は、様々な機能を実行するように構成することができる1つまたは複数の論理要素の1つまたは複数のアレイを含むことができる。例えば、プログラマブル論理210は、ブール関数、数学関数、ステートマシンなどを実装するように構成されてもよい。
【0021】
DSPブロック220は、様々なデジタル信号処理機能を実装するための1つまたは複数の構成可能論理要素を含むことができる。いくつかの実装形態では、DSPブロック220は、スカラユニット、ベクトルユニット、メモリインタフェース、メモリなどを含むことができる。メモリ230は、異種論理ブロック200内のデータの柔軟かつ動的な記憶を提供することができる。メモリ230は、スタティックRAM、ダイナミックRAM、レジスタメモリ、または任意の他の技術的に実現可能なデータ記憶要素を含むことができる。NoCインタフェース240は、プログラマブル論理210、DSPブロック220、およびメモリ230に結合することができる。さらに、NoCインタフェース240は、
図1のNoCファブリック135に結合することができる。NoCインタフェース240は、異種論理ブロック200がNoCファブリック135を介してデータを送受信することを可能にするために、パケット化データ通信インタフェースを提供することができる。したがって、データは、プログラマブル論理210、DSPブロック220、および/またはメモリ230と、NoCファブリック135に結合された任意の他のコンポーネントまたは論理ブロックとの間で送信および/または受信することができる。
【0022】
上述したように、異種論理ブロック200は、異種論理ブロック140~147のいずれかの例示的な実施形態であってもよい。いくつかの実装形態では、異種論理ブロック140~147はすべて、異種論理ブロック200と類似、同一、またはほぼ同一であってもよい。複数の類似、同一、またはほぼ同一の異種論理ブロックは、ユーザの設計を他の異種論理ブロックに容易に再配置および/またはコピーすることを可能にしてもよい。例えば、ユーザの設計は、異種論理ブロック141などの第1の異種論理ブロックに実装されてもよい。異種論理ブロック140~147は実質的に同一であるため、異種論理ブロック141のユーザの設計は、他の異種論理ブロック140または142~147のいずれかにコピーまたは再配置されてもよい。特に、NoCファブリック135およびNoCインタフェース240は、PLD100内の異種論理ブロックの物理的位置とは無関係に、ユーザの設計との間でデータを容易に転送するための手段を提供することによって、設計の再配置および再利用をさらに可能にすることができる。さらに、同様の、同一の、またはほぼ同一の異種論理ブロック140~147の「規則性」は、ユーザの設計が異なる異種論理ブロックにわたって同様の最大動作周波数を有することを可能にすることができる。
【0023】
図3Aは、複数の異種論理ブロックを有するPLD内で設計コアをコピーまたは移動するための例示的な動作を示すブロック
図300を示す。便宜上、
図1のPLD100はこの手順を説明するために使用されるが、手順は、複数の類似、同一、またはほぼ同一の異種論理ブロックを有する任意のPLDとともに使用されてもよい。設計コアは、特定の機能または特徴を実装するユーザの設計の一部であってもよく、いくつかの論理ブロック、RAM要素、人工知能(AI)エンジン、デジタル信号プロセッサ(DSP)などを含んでもよい。さらに、設計コアは、異種論理ブロック内の設計の実装に関連する順序指定、タイミング、および配置情報を含むことができる。当業者は、PLDデバイスのコンテキストにおける順序指定およびタイミング情報がPLD内の信号の順序指定およびタイミングを指し得ることを認識するであろう。配置情報は、PLD内の1つまたは複数の論理ブロックへの1つまたは複数の動作の割り当ておよび/または構成を指すことができる。
図3Aの例では、異種論理ブロック141は、ユーザによって指定された設計コア301を含むことができる。設計コア301(知的財産(IP)コアと呼ばれることもある)は、特定の機能および/または特徴を実装することができる。
【0024】
設計コア301は、
図3Aの例に示すように、異種論理ブロック144に設計コア302を形成するために移動(例えば、再配置)またはコピーされてもよい(設計コア301および302は破線で示されている)。特に、異種論理ブロック140~147は類似しているか、同一であるか、またはほぼ同一であるため、設計コア301は、他の異種論理ブロックに容易に移動またはコピーすることができる。設計コア301を設計するためにソフトウェア設計ツールを実行するユーザによって費やされる作業および労力は、設計コア302を実装するために重複または反復される必要はない。特に、設計コア301に関連する順序指定、タイミング、および配置情報は、設計コア302を実装するために使用することができる(場合によっては再使用されてもよい)。例えば、設計コア301を実装するために使用される構成データは、異種論理ブロック144に設計コア302を構成および実装するために再利用することができる。
【0025】
上述したように、ビットストリームは、PLD100の全部または一部を構成するための構成データを含むことができる。例えば、第1のビットストリームは、異種論理ブロック141内に設計コア301を実装するための構成データを含むことができる。PLD100の異種論理ブロック140~147の各々は類似、同一、またはほぼ同一であるため、異種論理ブロック141内に設計コア301を実装するための構成データは、異種論理ブロック144内に設計コア302を実装するための構成データと類似、同一、またはほぼ同一であり得る。したがって、第2のビットストリームは、設計コア301を実装するための構成データを含むことができる。しかしながら、第2のビットストリームの構成データは、異種論理ブロック141ではなく異種論理ブロック144に設計コア302を実装するために「オフセット」されてもよい。いくつかの実装形態では、ビットストリームは、構成データのオフセットを示す識別子を含むことができる。いくつかの実装形態では、識別子は、PLD100内の設計コアの場所または位置を示すことができる構成データオフセット値(構成データによって記述される)とすることができる。いくつかの他の実装形態では、構成データオフセット値は、ビットストリーム内の設計コアの場所または位置を示すことができる。構成データオフセット値を単に変更することによって、設計コア301に関連付けられた構成データは、第1の異種論理ブロックから第2の異種論理ブロックに移動され得る。
【0026】
いくつかの実装形態では、ある異種論理ブロックから別の異種論理ブロックに設計コアを再配置することは、NOCファブリック135への物理接続の一部を再順序指定することを含み得ることに留意されたい(特に、
図3Aの例に示すように、設計コアがNOCファブリック135の異なる側の異種論理ブロック間で再配置される場合)。例えば
図3Aを参照すると、NOCファブリック135までの距離は、異種論理ブロック141および144の各々について同じでなくてもよい。したがって、設計コア302を形成するために設計コア301を再配置することは、NOCファブリック135への物理接続の一部の増分的な再順序指定を必要とし得る。結果として、異種論理ブロック141からNOCファブリック135への物理接続は、異種論理ブロック144からNOCファブリック135への物理接続と同じでなくてもよい。
【0027】
図3Bは、複数の異種論理ブロックを有するPLD内で設計コアをコピーまたは移動するための別の例示的な動作を示すブロック
図310を示す。
図3Bの例では、設計コア311は、異種論理ブロック141および143を使用して実装される。言い換えれば、設計コア311は、異種論理ブロック141および143の両方を使用して(例えば、またがって)実装され得る。設計コア311は、異種論理ブロック144および146を使用して設計コア312を形成するために再配置またはコピーされてもよい(設計コア311および312は破線で示されている)。いくつかの実装形態では、設計コア311は2つの異種論理ブロックを使用するので、設計コア312はPLD100の任意の2つの異種論理ブロックを使用することができる。NoCコントローラ130およびNoCファブリック135によって提供される柔軟なデータ順序指定は、設計コア312を実装するためにどの異種論理ブロック140~147を使用することができるかに関する柔軟性を可能にすることができる。例えば、設計コア311は、異種論理ブロック142および145を使用して設計コア313(破線で示す)を形成するためにコピーまたは再配置されてもよい。この例では、設計コア311は、任意の2つの類似の、同一の、またはほぼ同一の異種論理ブロック間で分割され得る論理設計コアであり得る。したがって、設計コア311は、NoCコントローラ130およびNoCファブリック135を介して提供され得るもの以外の専用ブロック間通信を必要としなくてもよい。
【0028】
図3Aおよび
図3Bに示すように、設計コアは、元の構成データを変更することなく、1つまたは複数の異種論理ブロックの第1のグループから1つまたは複数の異種論理ブロックの第2のグループにコピーまたは再配置することができる。設計コアおよび異種論理ブロックの他の配置も可能であり、簡略化のために示されていない。PLD内で設計コアをコピーまたは移動するものとして示されているが、設計コアは、第1のPLDから他のPLD、特に第1のPLDのものなどと類似、同一、またはほぼ同一の異種論理ブロックを有する他のPLDにコピーまたは移動されてもよい。他の実施形態では、他のPLDは、垂直に積層され、シリコンベースの相互接続によって互いに結合されてもよい。
【0029】
図4は、例示的な処理デバイス400のブロック図を示す。処理デバイス400は、ユーザ入力を受信し、ビットストリームを生成して、1つまたは複数のPLDを構成することができる。処理デバイス400は、入力/出力インタフェース410、ビットストリームインタフェース420、プロセッサ430、およびメモリ440を含むことができる。
【0030】
入力/出力インタフェース410は、ユーザが処理デバイス400にデータを提供し、そこからデータを受信することを可能にするハードウェア、ソフトウェア、および/またはファームウェアを含むことができる。例えば、入力/出力インタフェース410は、ユーザ入力を受信するために、1つ以上のキーボード、マウス、タッチパッド、または任意の他の実現可能なデバイスに結合されてもよい。入力/出力インタフェース410はまた、ユーザの設計および設計プロセスに関するテキストまたはグラフィック情報をユーザに提供するために、1つまたは複数のディスプレイデバイスに結合されてもよい。いくつかの実装形態では、入力/出力インタフェース410はネットワークインタフェースを含むことができる。ネットワークインタフェースは、ユーザ入力および出力データが有線または無線ネットワークなどのネットワークを介して転送されることを可能にすることができる。
【0031】
ビットストリームインタフェース420は、(以下でより詳細に説明する)ソフトウェア設計ツールモジュールによって生成されたビットストリームがPLDに送達されることを可能にすることができる。ビットストリームインタフェース420は、ビットストリーム記憶デバイス450に結合されてもよい。いくつかの実装形態では、ビットストリーム記憶デバイス450は、フラッシュメモリ、電気的に消去可能なメモリ、または永続的なデータ記憶を提供する任意の他の実現可能なメモリデバイスなどのメモリデバイスであってもよい。次に、メモリデバイスは、PLDがビットストリームを受信することを可能にするために、(
図1に示すような)PLDに結合されてもよい。別の実施態様では、ビットストリーム記憶デバイス450は、処理デバイス400と同様の処理デバイスであってもよい。そのような実装形態では、ビットストリーム記憶デバイス450はまた、ビットストリームを受信および記憶することができる。次いで、ビットストリーム記憶デバイス450は、ビットストリームを(例えば、
図1のPMC120を介して)PLDに提供して、PLDの構成を完了することができる。
【0032】
メモリ440は、以下のソフトウェアモジュール、すなわち、
・プログラマブル論理デバイスのユーザの設計を取り込むためのソフトウェア(SW)設計ツールモジュール424、および
・処理デバイス400の1つまたは複数の動作を管理するためのオペレーティングシステムSWモジュール444、を記憶することができる非一時的コンピュータ可読記憶媒体(例えば、EPROM、EEPROM、フラッシュメモリ、ハードドライブなどの1つ以上の不揮発性メモリ要素)を含むことができる。
【0033】
各ソフトウェアモジュールは、プロセッサ430によって実行されると、処理デバイス400に対応する機能を実行させる命令を含む。したがって、メモリ440の非一時的コンピュータ可読媒体は、
図5の動作の全部または一部を実行するための命令を含む。
【0034】
入力/出力インタフェース410、ビットストリームインタフェース420、およびメモリ440に結合されたプロセッサ430は、処理デバイス400(例えば、メモリ440内)に記憶された1つまたは複数のソフトウェアプログラムのスクリプトまたは命令を実行することができる任意の1つまたは複数の適切なプロセッサとすることができる。
【0035】
プロセッサ430は、SW設計ツールモジュール442を実行して、1つまたは複数のPLDのユーザの設計を受信して取り込み、さらにユーザの設計を実装するようにPLDを構成するためのビットストリームを生成することができる。プロセッサ430はまた、SW設計ツールモジュール442を実行して、設計コアを1つまたは複数の異種論理ブロックの第1のグループから1つまたは複数の異種論理ブロックの第2のグループに再配置またはコピーすることができる。1つまたは複数の異種論理ブロックの第1および第2のグループは、単一のPLD内にあってもよいし、2つ以上の別個のPLD内にあってもよい。
【0036】
プロセッサ430は、オペレーティングシステムSWモジュール444を実行して、処理デバイス400の1つまたは複数の動作を管理することができる。例えば、プロセッサ430は、オペレーティングシステムSWモジュール444を実行して、入力/出力インタフェース410を介してユーザデータを受信および出力することができる。プロセッサ430はまた、オペレーティングシステムSWモジュール444を実行して、SW設計ツールモジュール442を実行することによって生成されたビットストリームを書き出すことができる。ビットストリームは、ビットストリーム記憶デバイス450に書き出すことができる。
【0037】
図5は、ビットストリームを生成するための例示的な動作500を示す例示的なフローチャートを示す。本明細書では
図4のプロセッサ430によって実行されるものとして説明されているが、動作500は、任意の技術的に実現可能なプロセッサ、処理デバイス、ステートマシン、コンピュータ、サーバなどによって実行されてもよい。
【0038】
プロセッサ430は、異種論理ブロックの第1のグループのPLD設計を取り込むことができる(502)。いくつかの実装形態では、PLD設計は、PLD100の異種論理ブロック140~147などの複数の類似、同一、またはほぼ同一の異種論理ブロックを含むPLDを対象とすることができる。プロセッサ430は、SW設計ツールモジュール442を実行して、ユーザの設計を取り込むことができる。さらに、SW設計ツールモジュール442の実行は、ユーザの設計の全部または一部を1つまたは複数の異種論理ブロックの第1のグループに関連付けることができる。いくつかの実装形態では、ユーザの設計は、異種ブロックの第1のグループ内に実装される設計コアを含むことができる。
【0039】
プロセッサ430は、異種論理ブロックの第1のグループの構成データを生成することができる(504)。例えば、プロセッサ430は、SW設計ツールモジュール442を実行して、異種論理ブロックの第1のグループに関連付けられたPLD設計の構成データを処理(例えば、コンパイルおよび/または配置および順序指定)および生成することができる。
【0040】
プロセッサ430は、異種論理ブロックの第1のグループに関連付けられた構成データを含む第1のビットストリームを生成することができる(506)。第1のビットストリームは、構成データを異種論理ブロックの第1のグループに関連付けるための構成データオフセット値を含むことができる。第1のビットストリームは、
図1に関して上述したように、1つまたは複数のPLDを構成するために使用することができる。
【0041】
プロセッサ430は、異種論理ブロックの第1のグループに関連付けられた設計を、異種論理ブロックの第2のグループにコピーまたは移動することができる(508)。例えば、プロセッサ430は、SW設計ツールモジュール442を実行して、ユーザが設計を異種論理ブロックの第1のグループから1つまたは複数の異種論理ブロックの第2のグループにコピーまたは移動することを可能にしてもよい。いくつかの実装形態では、異種論理ブロックの第1のグループ内に含まれる設計コアは、異種論理ブロックの第2のグループにコピーまたは移動されてもよい。
【0042】
プロセッサ430は、異種論理ブロックの第1のグループに関連付けられた構成データを、異種論理ブロックの第2のグループに再利用することができる(510)。異種論理ブロックの第2のグループ内に実装される設計は、異種論理ブロックの第1のグループに基づいており(例えば、コピーされた、および/または移動された)、異種論理ブロックは類似しているか、同一であるか、またはほぼ同一であるため、構成データを再利用することができる。
【0043】
次に、プロセッサ430は、異種論理ブロックの第2のグループの構成データを含む第2のビットストリームを生成することができる(512)。いくつかの実装形態では、第2のビットストリームは、構成データ(510で決定される)および構成データを異種論理ブロックの第2のグループに関連付けるための構成データオフセット値を含むことができる。第2のビットストリームは、
図1に関して上述したように、1つまたは複数のPLDを構成するために使用することができる。
【0044】
当業者は、情報および信号が様々な異なる技術および技法のいずれかを使用して表され得ることを理解するであろう。例えば、上記の説明を通して言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは粒子、光場もしくは粒子、またはそれらの任意の組み合わせによって表され得る。
【0045】
さらに、本明細書に開示された態様に関連して記載されたさまざまな例示的な論理ブロック、モジュール、回路、およびアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェア、またはこれら両方の組み合わせとして実現され得ることが当業者には理解されよう。ハードウェアとソフトウェアとのこの互換性を明確に示すために、様々な例示的なコンポーネント、ブロック、モジュール、回路、およびステップが、それらの機能に関して一般的に上述されている。そのような機能がハードウェアとして実装されるかソフトウェアとして実装されるかは、特定の用途およびシステム全体に課される設計制約に依存する。当業者は、説明された機能を特定の用途ごとに様々な方法で実装することができるが、そのような実装決定は、本開示の範囲から逸脱すると解釈されるべきではない。
【0046】
本明細書に開示された態様に関連して記載された方法、シーケンス、またはアルゴリズムは、ハードウェアで直接、プロセッサによって実行されるソフトウェアモジュールで、またはこれら2つの組み合わせで具体化され得る。ソフトウェアモジュールは、RAMラッチ、フラッシュラッチ、ROMラッチ、EPROMラッチ、EEPROMラッチ、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で周知の任意の他の形態の記憶媒体に存在することができる。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるように、プロセッサに結合される。あるいは、記憶媒体はプロセッサと一体であってもよい。
【0047】
上記の明細書では、その特定の例示的な実施形態を参照して例示的な実施形態を説明した。しかしながら、添付の特許請求の範囲に記載された本開示のより広い範囲から逸脱することなく、様々な修正および変更を行うことができることは明らかであろう。したがって、本明細書および図面は、限定的な意味ではなく例示的な意味で見るべきである。