インテル Quartus Primeプロ・エディション ユーザーガイド: パーシャル・リコンフィグレーション
バージョン情報
更新対象: |
---|
インテル® Quartus® Prime デザインスイート 20.1 |
この翻訳版は参照用であり、翻訳版と英語版の内容に相違がある場合は、英語版が優先されるものとします。翻訳版は、資料によっては英語版の更新に対応していない場合があります。最新情報につきましては、必ず英語版の最新資料をご確認ください。 |
1. パーシャル・リコンフィグレーション・デザインの作成
、 インテル® Arria® 10、 インテル® Cyclone® 10 GXデバイスファミリーのPR機能をサポートしています。
- ランタイム・デザイン・リコンフィグレーションが可能です。
- タイム・マルチプレクシングにより、デザインのスケーラビリティーが向上します。
- ボードスペースを効率的に使用し、コストと消費電力を低減します。
- デザインにおけるダイナミック・タイム・マルチプレクシング機能をサポートします。
- より小さなビットストリームにより、初期のプログラミング時間を短縮します。
- ライン・アップグレードによりシステム・ダウンタイムを削減します。
- リモート・ハードウェアの変更が可能なため、システムのアップデートが容易です。
- パーシャル・リコンフィグレーションのコンパイルフローを簡素化します。
階層型パーシャル・リコンフィグレーション
インテル® Quartus® Primeプロ・エディション開発ソフトウェアでは、階層型パーシャル・リコンフィグレーション (HPR) もサポートしています。複数の親および子のデザイン・パーティション、または複数レベルのパーティションが1つのデザイン内に含まれている場合です。HPRデザインでは、スタティック領域によって親PR領域をインスタンス化し、親PR領域によって子PR領域をインスタンス化します。同じPR領域の再プログラミングは、子および親のパーティションに対して可能です。HPRの詳細な手順については、Partial Reconfiguration Tutorialsを参照してください。
スタティック・アップデート・パーシャル・リコンフィグレーション
スタティック・アップデート・パーシャル・リコンフィグレーション (SUPR) を使用すると、特殊なスタティック領域の定義や変更が可能になります。このとき、すべてのペルソナを再コンパイルする必要はありません。この手法が役立つのは、リスク軽減のためにデザインの一部を変更する可能性があっても、それによりランタイム・リコンフィグレーションが必要にはならない場合です。SUPRパーティションのないPRでは、スタティック領域への変更があった場合は、すべてのペルソナを再コンパイルしてください。SUPR命令の詳細に関しては、Partial Reconfiguration Tutorialsを参照してください。
パーシャル・リコンフィグレーション・デザインのシミュレーション
インテル® Quartus® Primeプロ・エディション開発ソフトウェアでは、シミュレーション・マルチプレクサを使用したPRペルソナ遷移のシミュレーションをサポートしています。シミュレーション・マルチプレクサを使用して、シミュレーション中にPR領域内のロジックを駆動するペルソナを変更します。このシミュレーションでは、リコンフィグレーション可能なパーティションで生じる変化や中間効果を観察することができます。詳細に関しては、パーシャル・リコンフィグレーション・デザインのシミュレーション を参照してください。
1.1. パーシャル・リコンフィグレーション用語
このドキュメントでは、次の用語を使用して、パーシャル・リコンフィグレーションについて説明します。
用語 | 説明 |
---|---|
フロアプラン |
デバイス上の物理リソースのレイアウト。デザイン・フロアプランの作成、すなわちフロアプランニングは、ロジックデザイン階層をデバイスの物理領域にマッピングするプロセスです。 |
階層型パーシャル・リコンフィグレーション | 複数の親と子のデザイン・パーティション、またはパーティションのネストを同じデザインに含むパーシャル・リコンフィグレーション。 |
PR制御ブロック |
インテル® Arria® 10および インテル® Cyclone® 10 GX FPGAの専用ブロック。PR制御ブロックでは、PR要求、ハンドシェイク・プロトコルを処理し、巡回冗長検査 (CRC) を検証します。 |
PRホスト |
PRを調整するシステム。PRホストは、PR制御ブロック (インテルArria 10および インテル® Cyclone® 10 GXデザイン) またはSecure Device Manager (インテルStratix 10および インテル® Agilex™ デザイン) と通信します。PRホストをFPGA (内部PRホスト) 内またはチップもしくはマイクロプロセッサー内に実装します。 |
PRパーティション |
Reconfigurableとして指定するデザイン・パーティション。PRプロジェクトには、1つ以上のPRパーティションを含めることができます。 |
PRソリューション・インテルFPGA IP |
PRハンドシェイクとフリーズロジックの実装を簡素化するインテルFPGA IPのスイート。 |
PR領域 |
パーシャル・リコンフィグレーションの対象となるFPGAデバイスの物理パーティション。ベース・コンフィグレーション・デザインのPR領域を完全に定義します。1つのデバイスには、PR領域を1つ以上含めることができます。PR領域は、LAB、RAM、DSP などのコアのみにすることができます。グリーン・ビットストリームによってPR領域のコンフィグレーションを行います。 |
PRペルソナ |
PR領域における特定のPRパーティション実装。1つのPR領域には、ペルソナを複数含めることができます。スタティック領域に含めることができるペルソナは1つのみです。 |
リビジョン |
プロジェクトの1つのバージョンに対する設定と制約のコレクション。Intel Quartus Prime Settings File (.qsf) では、プロジェクトの各リビジョンを保持します。 インテル® Quartus® Primeプロジェクトにはいくつかのリビジョンを含めることができます。リビジョンを使用すると、デザインの複数のバージョンを1つのプロジェクト内で整理することができます。 |
Secure Device Manager (SDM) | インテル® Agilex™ および インテル® Stratix® 10デバイスのトリプル冗長プロセッサー・ベースのブロック。ブロックが受信するコンフィグレーション・データの認証、復号化、および復元の実行後、コンフィグレーション可能なノードへのデータ送信をコンフィグレーション・ネットワークを介して行います。 |
スナップショット |
Compilerステージの出力。合成または最終コンパイル結果のスナップショットをエクスポートすることができます。 |
スタティック領域 |
プロジェクトのPR領域外のすべての領域。スタティック領域をデザインの最上位パーティションに関連付けます。スタティック領域には、デバイスのコアとペリフェラルの両方の位置が含まれます。ブルー・ビットストリームによってスタティック領域のコンフィグレーションを行います。 |
スタティック・アップデート・パーシャル・リコンフィグレーション | すべてのペルソナを再コンパイルしなくても変更が可能なスタティック領域。この手法は、デザインの一部を、リスク軽減のために変更する可能性がある場合に役立ちます。ランタイム・リコンフィグレーションは必要ありません。 |
1.2. パーシャル・リコンフィグレーション・プロセス・シーケンス
- シーケンシャルPR制御ロジックからPR領域に stop_req 信号を送り、PR動作の準備をします。この信号を受信すると、PR領域では、保留中のトランザクションを完了し、新しいトランザクションの受け入れを停止します。
- stop_ack 信号を待ちます。これにより、PR領域のパーシャル・リコンフィグレーションの準備ができていることを示します。
- PR制御ロジックを使用して、PR領域の必要な出力をすべてフリーズします。さらに、クロックイネーブルを駆動し、初期化されたRAMをディスエーブル状態にします。
- PRビットストリームをPR制御ブロック (インテルArria 10および インテル® Cyclone® 10 GXデザイン) または SDM (インテルStratix 10および インテル® Agilex™ デザイン) に送信して、PR領域のPRプロセスを開始します。Partial Reconfiguration Controller Intel® FPGA IPを使用する場合は、IPコアのAvalon-MMまたはAvalon-STインターフェイスによってこの機能が提供されます。PR制御ブロックを インテル® Arria® 10デザインに直接インスタンス化する場合は、PR制御ブロック信号のタイミング図 を参照してください。
- PR動作が正常に完了したら、PR領域をリセットします。
- PR動作の開始は、start_req 信号のアサートおよび freeze 信号のデアサートで通知します。
- start_ack 信号を待ちます。これにより、PR領域の動作準備ができていることを示します。
- 新たにリコンフィグレーションしたPR領域を含むFPGAの動作を再開します。
1.3. 内部ホストのパーシャル・リコンフィグレーション
内部ホスト制御では、内部コントローラー、 Nios® IIプロセッサー、または PCI Express* ( PCIe* ) もしくはイーサネットなどのインターフェイスを使用し、 インテル® Arria® 10もしくは インテル® Cyclone® 10 GX PR制御ブロック、または インテル® Stratix® 10および インテル® Agilex™ デバイスのSDMと直接通信します。
内部ホストでパーシャル・リコンフィグレーションを実行する場合は、専用のPRピン (PR_REQUEST、PR_READY、PR_DONE、および PR_ERROR) を通常のI/Oとして使用します。スタティック領域ロジックを実装して、外部メモリーからPRプログラミング・ビットストリームを取得し、内部ホストによる処理に使用します。
パーシャル・リコンフィグレーション用のプログラミング・ビットストリームを PCI Express* リンクから送信します。次に、ビットストリームをPRコントロール・ロジックで処理し、ビットストリームをPR IPコアに送信してプログラミングします。nCONFIG によってデバイスは、ユーザーモードからデバイス・コンフィグレーション・モードに移ります。
1.4. 外部ホストのパーシャル・リコンフィグレーション
1.5. パーシャル・リコンフィグレーション・デザインの考慮事項
例えば、PRプログラミング中は、システムの他の部分によるPR領域への読み書きが行われないようにする必要があります。また、PR領域からスタティック領域への書き込みイネーブル出力をフリーズして、スタティック領域動作との干渉を避ける必要があります。デザインのすべてのペルソナに同一の最上位インターフェイスがない場合は、ラッパーロジックを作成して、すべてのペルソナがスタティック領域と類似していることを確認する必要があります。PR領域のパーシャル・リコンフィグレーションを行う場合は、リセットシーケンスを適用して、PR領域のレジスターを既知の状態にする必要があります。グローバル信号とオンチップメモリーには特定のガイドラインがあります。次のセクションで説明するデザインの考慮事項とガイドラインは、PRデザインのデザインファイルの作成に役立てることができます。
FPGAデバイスとソフトウェアに関する考慮事項
- インテル® Arria® 10および インテル® Cyclone® 10 GXデバイスでは、-1、-2、および -3のスピードグレードのみで、パーシャル・リコンフィグレーションをサポートしています。 インテル® Agilex™ および インテル® Stratix® 10の全デバイスで、PRをサポートしています。
- 公称VCCには、データシートに記載の0.9Vまたは0.95Vを使用してください。VID対応デバイスも含みます。
- インテル® Arria® 10および インテル® Cyclone® 10 GXプログラミング・ファイルのサイズを最小にするため、PR領域は必ず、短く、幅の広いものにしてください。 インテル® Agilex™ および インテル® Stratix® 10デザインの場合は、セクターが整列したPR領域を使用します。
- インテル® Quartus® Primeスタンダード・エディション開発ソフトウェアでは、パーシャル・リコンフィグレーションのサポートは、 インテル® Arria® 10デバイスに対しては提供していません。また、 インテル® Agilex™ および インテル® Stratix® 10デバイスに対するサポートは提供していません。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアの現在のバージョンでは、Signal Tap ファイル (.stp) は、各リビジョンに1つのみサポートしています。
デザイン・パーティションに関する考慮事項
- リコンフィグレーション可能なパーティションには、LAB、RAM、DSPなどのコアリソースのみを含めることができます。トランシーバー、外部メモリー・インターフェイス、HPS、およびクロックなどのペリフェラル・リソースはすべて、デザインのスタティック部分にある必要があります。
- デバイスをスタティックと個々のPR領域との間で物理的に分割するには、各PR領域をフロアプランして、排他的でコアのみの配置領域にし、関連する配線領域を持たせます。
- リコンフィグレーション・パーティションには、すべてのPRペルソナで使用するポートすべてのスーパーセットを含める必要があります。
クロッキング信号、リセット信号、およびフリーズ信号に関する考慮事項
- インテル® Arria® 10または インテル® Cyclone® 10 GXの任意のPR領域のクロックまたは他のグローバル信号の最大数は33です。 インテル® Agilex™ または インテル® Stratix® 10の任意のPR領域のクロックまたは他のグローバル信号の最大数は32です。 インテル® Quartus® Primeプロ・エディション開発ソフトウェアの現在のバージョンでは、2つのPR領域で行クロックを共有することはできません。
- PR領域には入力フリーズロジックは必要ありません。ただし、各PR領域のすべての出力を既知の定数値に固定し、パーシャル・リコンフィグレーション中の不明なデータを回避してください。
- Fitterのレジスター重複を考慮して、リセット長を1サイクル増やします。
- ベースリビジョンのコンパイルでPR領域に駆動する低スキューのグローバル信号 (クロックおよびリセット) のすべてにデスティネーションがあることを確認してください。
1.5.1. パーシャル・リコンフィグレーション・デザイン・ガイドライン
次の表示すのは、PRデザインフローのさまざまなステップでの重要なデザイン・ガイドラインです。
PRデザインの手順 | ガイドライン | 理由 |
---|---|---|
パーシャル・リコンフィグレーションのデザイン |
PR領域内のレジスターの初期状態は想定しないでください。 PRが完了したら、すべての制御パスレジスターを既知の状態にリセットします。ただし、データ・パス・レジスターは省略します。 |
PR領域内のレジスターには、リコンフィグレーション後の未定義の値が含まれています。データ・パス・レジスターを省略すると、リセット信号の輻輳が減少します。 |
同期リセットを インテル® Arria® 10または インテル® Cyclone® 10 GXパーシャル・リコンフィグレーションのグローバル信号として定義することはできません。 |
PR領域では、グローバル信号としてレジスターを同期リセットすることはサポートしていません。これは、 インテル® Arria® 10および インテル® Cyclone® 10 GX LABでは、グローバルバッファ-上の同期クリア (sclr) 信号をサポートしていないためです。LABでは、ローカル入力またはグローバルネットワーク行クロックから駆動される非同期クリアー (aclr) 信号はサポートしています。その結果、aclr だけが、グローバル信号になり、PR領域にレジスターを供給することができます。 |
|
PRESERVE_FANOUT_FREE_NODE アサインメントでは、ファンアウトのないレジスターの保持は、ファンアウトが、定義したVerilog HDLまたはVHDLモジュール内にない場合はできません。このようなファンアウトのないレジスターを保持するには、次のとおり、noprune プラグマをソースファイルに実装します。 (*noprune*)reg r; このモジュールのインスタンスが複数あり、その一部のインスタンスのみがファンアウトのないレジスターの保持を必要とする場合は、HDL内のレジスターにダミープラグマを設定し、さらに PRESERVE_FANOUT_FREE_NODE アサインメントを設定します。このダミーのプラグマにより、レジスター合成によるアサインメントの実装が可能になります。例えば、次のダミープラグマをVerilog HDLの r レジスターに次のとおりに設定します。 (*dummy*)reg r; その後、このインスタンスのアサインメントを設定します。 set_instance_assignment -name \ PRESERVE_FANOUT_FREE_NODE ON \ -to r; |
PRESERVE_FANOUT_FREE_NODE アサインメントは、レジスターが定義されているVerilog HDLまたはVHDLモジュールでそのレジスターを使用していない場合は、適用されません | |
デザインのパーティション化 |
すべての入力と出力をPR領域に登録します。 |
タイミング・クロージャーとタイムバジェットを改善します。 |
デザインのPR領域とスタティック領域をインターフェイス接続している信号の数を減らします。 |
ワイヤーLUTの数を減らします。 |
|
PR領域のラッパーを作成します。 |
ラッパーによりスタティック領域に共通するフットプリントを作成します。 |
|
PR領域がリセット状態に保たれ、PR領域に対してフリーズビットがアサートされている場合、すべてのPR領域出力ポートを非アクティブ状態に駆動します。 |
スタティック領域ロジックによるランダムデータの受信が、パーシャル・リコンフィグレーション動作中に行われないようにします。 |
|
PR境界I/Oインターフェイスは、すべてのPRペルソナI/Oインターフェイスのスーパーセットである必要があります。 |
各PRパーティションが、必ず同じポートを実装するようにします。 |
|
パーシャル・リコンフィグレーションの準備 |
保留中のトランザクションをすべて完了します。 |
スタティック領域が待機状態でないことを確認します。 |
パーシャル・リコンフィグレーション中に部分的に動作するシステムの維持 |
すべての出力を既知の定数値に保ちます。 |
リコンフィグレーション中およびリコンフィグレーション後にPR領域が受け取る未定義の値が、PR制御ロジックに影響を与えないようにします。 |
パーシャル・リコンフィグレーションの開始 |
リセット後に初期化します。 |
メモリーまたはその他のデバイスリソースから状態を取得します。 |
Signal Tap Logic Analyzerを使用したパーシャル・リコンフィグレーションのデバッグ |
|
インテル® Quartus® Prime開発ソフトウェアの現在のバージョンでは、.stp (Signal Tapファイル) をリビジョンごと1つのみサポートします 。この制限により、パーティションを一度に1つずつ選択してタップする必要があります。 |
同じ .stp ファイルでは領域をまたがってタップしないでください。 |
すべてのペルソナにわたって一貫したインターフェイス (境界) を保証します。 |
|
合成前の信号のみをタップしてください。Node Finderで、Signal Tap: pre-synthesisでフィルターします。 |
PRペルソナの信号タップが、確実に合成から始まるようにします。 |
1.5.2. PRファイルの管理
方法1 (推奨) :各ペルソナに一意のエンティティーおよびファイル名を指定する
PRプロジェクト・ファイル管理方法を説明するために、2つのPR領域を含むデザインを考えてみます。各領域にそれぞれリンゴ、オレンジ、バナナのペルソナがあるとします。PRファイル管理方法1では、プロジェクト内の各ペルソナに一意のエンティティーおよびファイル名のペアを指定します。例えば、
- リンゴのペルソナを apple.sv ファイルに定義する
- オレンジのペルソナを orange.sv ファイルに定義する
- バナナのペルソナを banana.sv ファイルに定義する
ベースPRリビジョンRTLでは、両方のPR領域のPRペルソナとして「apple」を指定します。
ベースペルソナを [apple, apple] に設定するために u_fruit_0 と u_fruit_1 をPRパーティションとPR領域として設定する場合、PR領域を占有するペルソナを簡単に変更することができます。それには、Design Partitions WindowのEntity Rebinding (ENTITY_REBINDING) オプションを使用するか、または .qsf を直接編集します。その例を次に示します。
PR実装 (impl) リビジョンのオレンジのペルソナを指定する場合 :
set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_1
PR実装 (impl) リビジョンのバナナのペルソナを指定する場合 :
set_intance_assignment -name ENTITY_REBINDING banana -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1
各PR領域に異なるペルソナを指定する場合 :
set_instance_assignment -name ENTITY_REBINDING orange -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING banana -to u_fruit_1
各実装リビジョンに対して、対応するソースファイルをプロジェクトに必ず含めてください(Project > Add/Remove Files in Project)。
方法2 : 1つのファイルをPRペルソナとしてパラメーター化する
PRファイル管理方法2では、ラッパーファイルとパラメーターを使用して、すべてのペルソナを定義する1つのファイルをパラメーター化します。例えば、方法1での説明と同様に、2つのPR領域を持つデザインを考えてみます。各PR領域にはそれぞれ3つのペルソナ候補があるとします。
次の例では、u_fruit_0 と u_fruit_1 が、ベースコンパイルのPRパーティションとPR領域として設定されています。FRUIT_TYPE パラメーターの 0 によって、両方のPRペルソナのapple エンティティーを生成します。
次に、パラメーター値を変更してペルソナを変更します。例えば、両方のPR領域にオレンジのペルソナを指定するには、FRUIT_TYPE パラメーターを 1:(FRUIT_TYPE=1) に設定します
これらのRTLへの変更に加えて、方法2を使用して .qsf を更新する場合は、次の追加手順も実行してください。
- fruit.sv ファイルのコピーを作成します。x_fruit.sv などの一意のファイルに名前を付けます。 また、エンティティー名を変更して .sv ファイルと一致させます。
-
FRUIT_TYPE のデフォルトのパラメーターをVerilogマクロに設定します。この例では、 `X_FRUIT_TYPE とします。図 9. x_fruit.svとして保存されたfruit.svのコピー
- x_fruit.sv をプロジェクトに追加します (Project > Add/Remove Files in Project)。
- PR実装リビジョンの .qsf ファイルで次のように指定します。
- 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」に対する適切なパラメーターを指定します。
set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1"
- エンティティーの再バインドのアサインメントを指定し、新しい x_fruit エンティティーを u_fruit_0 および u_fruit_1 のインスタンスに関連付けます。
set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_1
このように .qsf が変更されると、オレンジが、両方のPR領域の新しいペルソナとして設定されます。
- 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」に対する適切なパラメーターを指定します。
- 方法2の欠点は、.qsf ファイルに設定されたVerilogマクロがグローバルであることです。そのため、プロジェクトの `X_FRUIT_TYPE の各インスタンスのデフォルト値は 1 になります。この結果が適しているのは、両方のPRペルソナを同じタイプにしたい場合でしょう。ただし、あるPR実装コンパイルで1つのペルソナに「オレンジ」を指定し、別のペルソナに「バナナ」を指定する場合は、fruit.sv ファイルの別のコピーを作成し、そのファイルに一意の名前とVerilogマクロを含めてください。図 10. y_fruit.svとして保存したx_fruit.svのコピー
- PR実装リビジョンの .qsf ファイルで次のように指定します。
- 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1 に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」 に対して適切なパラメータを指定します。
set_global_assignment -name VERILOG_MACRO "X_FRUIT_TYPE=1" set_global_assignment -name VERILOG_MACRO "Y_FRUIT_TYPE=2"
- エンティティーの再バインドのアサインメントを指定し、新しい x_fruit エンティティーを u_fruit_0 のインスタンスに関連付け、新しい y_fruit エンティティーを u_fruit_1 のインスタンスに関連付けます。
set_instance_assignment -name ENTITY_REBINDING x_fruit -to u_fruit_0 set_instance_assignment -name ENTITY_REBINDING y_fruit -to u_fruit_1
このように .qsf が変更されると、オレンジが、1番目のPR領域のペルソナとして指定され、バナナは、2番目のPR領域のペルソナとして指定されます。
- 次の行を追加して、 `X_FRUIT_TYPE Verilogマクロを 1 に設定し、正しい FRUIT_TYPE をインスタンス化する「fruit」 に対して適切なパラメータを指定します。
1.5.3. PR領域の初期条件の評価
実装パーティションで合成を実行した後、Explicit Power-Up SettingsレポートでRegistersを表示し、意図しない初期条件を識別、検索、修正することができます。Messagesウィンドウでも、合成処理中の初期条件に関する警告メッセージまたはエラーメッセージが生成されます。初期条件の評価後、その条件がデザインの機能に適しているかどうかを判断します。あるいは、デザインを変更して、パーシャル・リコンフィグレーションと互換性のない初期条件への依存を除去します。
1.5.4. PR領域に対するラッパーロジックの作成
PRコンパイル中、Compiler では、PR領域のインターフェイス上の各非グローバルポートを境界ポートワイヤーLUTに変換します。境界ポートワイヤーLUTの命名規則は次のとおりです。入力ポートの場合は、 <input_port> 〜IPORT 、出力ポートの場合は <output_port> 〜OPORT です。例えば、ワイヤーLUTのインスタンス名は、入力ポート名前が my_input で、PR領域名が my_region の場合、 my_region|my_input〜IPORT になります。
- Logic Lock領域のアサインメントを使用して境界ポートを手動でフロアプランするか、またはFitterを使用して境界ポートを自動配置します。Fitterによる境界ポートの配置は、ベースリビジョンのコンパイル中に行われます。境界LUTは不変位置です。その位置は、コンパイルしたペルソナからFitterによって取得します。この境界LUTは、スタティック領域とPR配線およびロジックとの間の境界を表します。その配置は基礎となるペルソナに関係なく静止したままです。これは、静的ロジックからの配線は、ペルソナの実装が異なっても変化しないためです。
-
特定の領域内のすべての境界ポートを制約するには、ワイルドカード・アサインメントを使用します。次にその例を示します。
set_instance_assignment -name PLACE_REGION "65 59 65 85" -to \ u_my_top|design_inst|pr_inst|pr_inputs.data_in*~IPORT
このアサインメントにより、配置領域内の座標 (65 59) と (65 85) の間で指定したIPORTSに対応するすべてのワイヤーLUTが制約されます。
図 12. PR領域境界のワイヤーLUT必要に応じて、境界ポートのフロアプランをLABレベルまたは個々のLUTレベルまで行います。LABレベルまでフロアプランするには、1x1 Logic Lock PLACE_REGION 制約 (単一のLAB高および単一のLAB幅) を作成します。必要に応じて、範囲の制約を指定するため、その範囲をまたがるLogic Lock配置領域を作成します。フロアプラン・アサインメントに関する詳細は、パーシャル・リコンフィグレーション・デザインのフロアプランを参照してください。
1.5.5. PR領域に対するフリーズロジックの作成
PR領域が有効なデータを駆動することができるのは、パーシャル・リコンフィグレーション処理が完了し、PR領域がリセットされてからです。フリーズすることは、PR領域から駆動するコントロール信号にとって重要です。
フリーズ手法の選択は任意で、デザインの特性に応じて行います。フリーズロジックは、デザインのスタティック領域に存在させてください。一般的なフリーズ手法では、PR領域の各出力に2対1のマルチプレクサをインスタンス化し、パーシャル・リコンフィグレーション中の出力を一定に保ちます。
別のフリーズ手法では、PR領域のすべての出力をスタティック領域にレジスター化します。その後、イネーブル信号を使用してパーシャル・リコンフィグレーション中のレジスターの出力を一定に保ちます。
Partial Reconfiguration Region Controller IPコアには、制御する領域のフリーズポートが含まれています。このIPコンポーネントをシステムレベルのコントロール・ロジックに組み込んで、PR領域の出力をフリーズします。デザインに複数のPR領域がある場合は、デザイン内の各PR領域に対してPR Region Controller IP コア1つをインスタンス化します。 インテル® Quartus® Prime開発ソフトウェアには、Avalon-MM Freeze BridgeおよびAvalon-ST Freeze Bridge Intel® FPGA IPコアが含まれています。このIPコアを使用してフリーズロジックを実装します。または、独自のフリーズロジックをこの標準インターフェイス・タイプ用にデザインします。
スタティック領域ロジックは、PR領域からのすべての出力から独立させ、連続動作ができるようにしてください。PR領域の出力を制御するため、デザインに適切なフリーズロジックを追加します。
1.5.6. PR領域レジスターのリセット
PRリセットタイプ | アクティブHigh同期リセット | アクティブLow非同期リセット | アクティブLow同期リセット | アクティブLow非同期リセット |
---|---|---|---|---|
ローカル信号 |
あり | あり | あり | あり |
グローバル信号 |
|
あり |
|
あり |
1.5.7. PR領域でのグローバル信号の昇格
PRデザインでは、Compilerによって、PR領域のロジック内で発生した信号のグローバル昇格がディスエーブルされます。クロック制御ブロックのインスタンス化は、スタティック領域でのみ行います。これは、クロック・フロアプランおよびクロックバッファーは、デザインのスタティック領域の一部である必要があるためです。クロック制御ブロックをPR領域で手動インスタンス化したり、PR領域の信号を GLOBAL_SIGNAL で割り当てたりすると、コンパイルエラーが発生します。PR領域で発生した信号をグローバル・ネットワークに送信するには、次のとおり実行します。
- PR領域からの信号を公開します。
- スタティック領域からグローバル・ネットワーク上に信号を駆動します。
- 信号を駆動して、PR領域に戻します。
インテル® Arria® 10および インテル® Cyclone® 10 GX デバイスの場合は最大33クロック、 インテル® Agilex™ および インテル® Stratix® 10 デバイスの場合は最大32クロックを任意のPR領域に駆動できます。行クロックは、2つのPR領域間では共有できません。
Compiler では、特定の信号だけをPR領域内でグローバルにすることができます。次の表に示すように、グローバル信号のみを使用して、セカンダリ信号をPR領域に配線します。
ブロックタイプ | サポートされるグローバル・ネットワーク信号 |
---|---|
LAB、MLAB | クロック、ACLR、SCLR2 |
RAM、ROM (M20K) | Clock、ACLR、Write Enable (WE)、Read Enable (RE)、SCLR |
DSP | クロック、ACLR、SCLR |
1.5.7.1. 行クロック領域境界の表示
-
Design Partitions Window でPRパーティション名を右クリックし、Locate Node > Locate in Chip Plannerの順にクリックします。
図 15. Chip Plannerの行クロック領域境界
- Chip Plannerで、Layers タブをクリックし、Basicレイヤーを選択します。Chip Plannerでは、行クロック領域の境界をオーバーレイします。Basicレイヤー設定を調整し、特定のアイテムを表示します。
1.5.8. クロックおよびその他のグローバル配線のプランニング
ベースリビジョンのコンパイル時には、PRペルソナが必要とするグローバル信号は、PR領域のデスティネーションに配線してください。クロック信号の場合、このデスティネーションは、レジスターまたはその他の同期要素およびクロック入力に入る信号です。リセットするには、デスティネーションを適切な入力に供給する必要があります。
この要件が発生するのは、PRでは、低スキュー・ネットワークの最後の部分だけをリコンフィグレーションするためです。ネットワークのルートセクションおよび中間セクションの配線をベースコンパイル中に行わない場合、そのリビジョンはPRには使用できません。
PR領域の信号のスーパーセットの例を考えます。PR領域の構成は次のとおりです。
- 3つのクロック - clk_1、clk_2、および clk_3
- 2つのリセット - rst_1 および rst_2
- ベースPRペルソナ - clk_1、 clk_2、および rst_1 のみを使用
- その他のペルソナ - clk_3 および rst_2 のみを使用
この例では、ベースペルソナには、「未使用」の clk_3 および rst_2 に対する適切なデスティネーションが必要です。これを行うには、 (*no prune*) ディレクティブを持つベースPRペルソナ内の単一のレジスターを clk_3 を使用して駆動し、rst_2 を使用してリセットします。
このデスティネーションを省略すると、PR実装の2番目のペルソナのコンパイル中にエラーが発生します。
1.5.9. 内容を初期化したオンチップメモリーのクロックイネーブルの実装
- 初期化された内容を持つメモリーに対するPRプログラミング中のスプリアス書き込みを回避するには、クロックイネーブル回路をM20KまたはMLAB RAMと同じPR領域に実装します。この回路は、スタティック領域からのアクティブHighのクリア信号に依存します。
- PRプログラミングを開始する前に、この信号をアサートしてメモリーのクロックイネーブルをディスエーブルします。システムのPRコントローラーは、PRプログラミングの完了時にクリア信号をデアサートする必要があります。フリーズ信号をこの目的で使用します。
- インテル® Quartus® Prime IP CatalogまたはPlatform Designerを使用し、この回路を自動的に追加するオプションを含むOn-Chip Memory Intel FPTA IPコアおよびRAM Intel® FPGA IPをインスタンス化します。
クロックイネーブルのVerilog RTL
reg ce_reg; reg [1:0] ce_delay; always @(posedge clock, posedge freeze) begin if (freeze) begin ce_delay <= 2'b0; end else begin ce_delay <= {ce_delay[0], 1'b1}; end end always @(posedge clock, negedge ce_delay[1]) begin if (~ce_delay[1]) begin ce_reg <= 1'b0; end else begin ce_reg <= clken_in; end end wire ram_wrclocken; assign ram_wrclocken = ce_reg;
クロックイネーブルのVHDL RTL
ENTITY mem_enable_vhd IS PORT( clock : in std_logic; freeze : in std_logic; clken_in : in std_logic; ram_wrclocken : out std_logic); END mem_enable_vhd; ARCHITECTURE behave OF mem_enable_vhd is SIGNAL ce_reg: std_logic; SIGNAL ce_delay: std_logic_vector(1 downto 0); BEGIN PROCESS (clock, freeze) BEGIN IF ((clock'EVENT AND clock = '1') or (freeze'EVENT AND freeze = '1')) THEN IF (freeze = '1') THEN ce_delay <= "00"; ELSE ce_delay <= ce_delay(0) & '1'; END IF; END IF; END PROCESS; PROCESS (clock, ce_delay(1)) BEGIN IF ((clock'EVENT AND clock = '1') or (ce_delay(1)'EVENT AND ce_delay(1) = '0')) THEN IF (ce_delay(1) = '0') THEN ce_reg <= '0'; ELSE ce_reg <= clken_in; END IF; END IF; END PROCESS; ram_wrclocken <= ce_reg; END ARCHITECTURE behave;
1.5.9.1. クロック・ゲーティング
ゲーティング回路をスタティック領域に実装し、初期化メモリーを実装しているPR領域に供給します。クロック・ゲーティングは、論理的には、クロック・イネーブルをメモリー上で使用することと同等です。この方法には次の利点があります。
- グローバル・クロック・バッファーのイネーブルポートを使用して、パーシャル・リコンフィグレーション動作の開始前にクロックをディスエーブルします。また、PR完了時にクロックをイネーブルします。
- リコンフィグレーション中にクロックが切り替わらないようにします。また、スプリアス書き込みを回避するための追加のロジックが不要です。
1.6. パーシャル・リコンフィグレーション・デザイン・フロー
PRデザインフローには、初期のプランニングが必要です。このプランニングでは、1つまたは複数のデザイン・パーティションを設定し、フロアプランで配置の割り当てを決定します。PRパーティションを適切にプランニングすることにより、デザイン領域の使用率とパフォーマンスが向上します。 インテル® Quartus® Prime開発ソフトウェアでは、ネストされたPR領域をHPRフローの一部として作成することもできます。子PR領域の再プログラミングは、親またはスタティック領域には影響を与えません。HPRフローでは、親領域を再プログラミングすると、関連付けられた子領域の再プログラミングがデフォルトの子ペルソナによってされます。このとき、スタティック領域は影響を受けません。HPRフローでは、デザインで作成できるサブパーティションの数には制限はありません。
PRデザインフローでは、 インテル® Quartus® Prime開発ソフトウェアのプロジェクト・リビジョン機能を使用します。初期デザインはベースリビジョンです。ベースリビジョンでFPGA上のスタティック領域境界とリコンフィグレーション領域を定義します。ベースリビジョンから、複数のリビジョンを作成します。この複数のリビジョンには、PR領域のさまざまな実装が含まれています。ただし、すべてのPR実装リビジョンで、ベースリビジョンからの同一の最上位の配置配線結果を使用します。
1.6.1. ステップ1 : パーシャル・リコンフィグレーションのリソースの特定
リコンフィグレーション可能なパーティションに含めることができるのは、FPGA内のLAB、エンベデッド・メモリー・ブロック (M20KおよびMLAB)、DSPブロックなどのコアリソースのみです。トランシーバー、外部メモリー・インターフェイス、GPIO、I/Oレシーバー、ハード・プロセッサー・システム (HPS) などのすべてのペリフェラル・リソースは、デザインのスタティック部分に含めてください。クロックおよびリセット用のグローバル・ネットワーク・バッファーのパーシャル・リコンフィグレーションはできません。
ハードウェア・リソース・ブロック | リコンフィグレーション方法 |
---|---|
ロジックブロック | パーシャル・リコンフィグレーション |
デジタル信号処理 | パーシャル・リコンフィグレーション |
メモリーブロック | パーシャル・リコンフィグレーション |
コア配線 | パーシャル・リコンフィグレーション |
トランシーバー/PLL | ダイナミック・リコンフィグレーション |
I/Oブロック | サポートされていません |
クロック制御ブロック | サポートされていません |
インテル® Quartus® Prime対応デザインのエントリー方法を使用して、Platform Designer、インテルHLSコンパイラー、または標準のSystemVerilog、Verilog HDL、およびVHDLデザインファイルなどのPRパーティションのコアのみのロジックを作成します。
次のインテルFPGA IPコアは、スタティック領域でのシステムレベルのデバッグをサポートします。
- In-System Memory Content Editor
- In-System Sources and Probes Editor
- 仮想JTAG
- Nios® II JTAG Debug Module
- Signal Tap Logic Analyzer
1.6.2. ステップ2 : デザイン・パーティションの作成
デザイン・パーティションは、デザインの論理的なパーティション分割であって、デバイス上の物理領域は指定しません。パーティションをFPGAの特定の領域に関連付けるには、Logic Lock Regionのフロアプラン・アサインメントを使用します。パーティションによってデザインの最適化が妨げられるのを回避するため、ロジックを同一パーティション内でグループ化します。デザインのPRフローに親パーティションと子パーティションが含まれている場合は、デザイン内に複数の親パーティションまたは子パーティション、および複数レベルのPRパーティションを定義します。
Reconfigurableパーティションを作成すると、Compilerでは、パーティションの合成後の結果を保存し、合成後のネットリストを再利用します。これは、再合成を必要とするパーティションの変更がない場合に当てはまります。それ以外の場合、Compilerでは、パーティションをソースファイルから再合成します。Compilerでは、Reconfigurable パーティションの各インターフェイスにワイヤーLUTを追加し、PR互換性の追加チェックを実行します。パーティションを作成する前にエラボレーションを実行してください。
次の手順に従って、デザイン・パーティションを作成します。
- Processing > Start > Start Analysis & Elaborationの順にクリックします。
- Project NavigatorでHierarchyタブのインスタンスを右クリックし、Design Partition > Set as Design Partitionをクリックします。デザイン・パーティションのアイコンが、作成した各パーティションの横に表示されます。
- プロジェクト内のすべてのデザイン・パーティションを表示および編集するには、Assignments > Design Partitions Window をクリックします。
-
パーティションの適切な設定の指定をDesign Partitions Windowウィンドウで行います。
表 5. デザイン・パーティションの設定 オプション 説明 Partition Name パーティション名を指定します。各パーティション名は一意で、その構成は英数字のみである必要があります。 インテル® Quartus® Prime開発ソフトウェアでは、プロジェクト・リビジョンごとに最上位の (|) 「root_partition」を自動作成します。 Hierarchy Path パーティションに割り当てるエンティティー・インスタンスの階層パスを指定します。この値は、Create New Partitionダイアログボックスで指定します。ルート・パーティションの階層パスは | です。 Type ダブルクリックして、次のパーティション・タイプのうちのいずれかを指定します。この種類に従って、Compilerによるパーティションの処理および実装の制御方法が決まります。 - Default - 標準パーティションを識別します。Compilerによるパーティションの処理が、関連デザイン・ソース・ファイルを使用して行われます。
- Reconfigurable - パーシャル・リコンフィグレーション・フロー内のリコンフィグレーション可能なパーティションを識別します。Reconfigurableタイプを指定すると、合成結果を保持したまま、PRフロー内のパーティションの再フィッティングを行うことができます。
- Reserved Core - ブロックベースのデザインフロー内のパーティションを識別します。このパーティションは、コンシューマーがデバイス・ペリフェラルを再利用してコア開発を行うために予約されたものです。
Preservation Level 次のいずれかの保持レベルをパーティションに対して指定します。 - Not Set - 保持レベルは指定しません。パーティションのコンパイルは、ソースファイルから行われます。
- synthesized - パーティションは、合成スナップショットを使用してコンパイルされます。
- final - パーティションのコンパイルは、最終スナップショットを使用して行われます。
Preservation Levelがsynthesizedまたはfinalの場合、ソースコードへの変更は合成には反映されません。
Empty Compilerにスキップさせる空のパーティションを指定します。この設定は、同じパーティション用のPeriphery Reuse CoreおよびPartition Database File設定とは互換性がありません。Preservation LevelはNot Setにしてください。空のパーティションが子パーティションを持つことはできません。 Partition Database File Partition Database File (.qdb) を指定します。Compilerではそれをパーティションのコンパイル時に使用します。再利用するコンパイルのステージ (合成または最終) の .qdb をエクスポートします。この結果を別のコンテキストで再利用するには、.qdb をパーティションに割り当てます。 Entity Re-binding - PRフロー - 各実装リビジョンのデフォルトのペルソナを置き換えるエンティティーを指定します。
- ルート・パーティションの再利用フロー - コンシューマー・プロジェクト内の予約済みのコアロジックを置き換えるエンティティーを指定します。
Color Chip PlannerおよびDesign Partition Plannerで表示するパーティションの色分けを指定します。 Post Synthesis Export File パーティションの合成後コンパイル結果をAnalysis & Synthesisの実行時に毎回、指定した .qdb に自動エクスポートします。デザイン・パーティションによって親パーティションが保持されていない場合、root_partitionを含め、そのデザイン・パーティションを自動エクスポートできます。 Post Final Export File パーティションの最終コンパイル後の結果をFitterの実行時に毎回、指定した .qdb に自動エクスポートします。デザイン・パーティションによって親パーティションが保持されていない場合、root_partitionを含め、そのデザイン・パーティションを自動エクスポートできます。 図 19. Design Partitions Window
1.6.3. ステップ3 : デザインのフロアプラン
PR領域には、PR領域のLAB、RAM、ROM、DSPなどのコアロジックのみを含めるようにしてください。 インテル® Agilex™ および インテル® Stratix® 10デザインには、Hyper-RegisterをPRパーティションに含めることもできます。トランシーバー、外部メモリー・インターフェイス、クロック・ネットワークなどのすべてのペリフェラル・デザイン要素を、デザインのスタティック領域にインスタンス化します。Logic Lock領域を作成する場合は、I/O列やHPSなどのペリフェラルの場所をまたがることができます。これは、制約はコアのみだからです。
- 配置領域 - この領域を使用して、ロジックをデバイスの特定のエリアに制限します。Fitterでは、指定した領域にロジックを配置します。領域を Reservedに指定しない限り、Fitterでは、その領域内の他のロジックの配置もできます。
- Route regions - この領域を使用して、配線を特定のエリアに制限します。配線領域が配置領域を完全に取り囲むようにしてください。また、PR領域の配線領域は、オーバーラップすることはできません。
次のガイドラインに従って、PRデザインのフロアプランを行います。
- ペリフェラルとクロックのフロアプランが完了してから、コア・フロアプランニングを行います。Interface Planner (Tools > Interface Planner) を使用して、ペリフェラル・フロアプランのアサインメントをデザインに対して作成します。
- 配線領域の定義は、すべての方向で配置領域より少なくとも1単位大きくなるようにします。
- 複数のPR領域の配線領域がオーバーラップしないようにしてください。
- PR領域を行単位で選択し、ビットストリームのオーバーヘッドを最小にします。 インテル® Arria® 10および インテル® Cyclone® 10 GX デバイスでは、短く幅の広い領域は、長く幅の狭い領域よりもビットストリームのサイズが小さくなります。 インテル® Agilex™ および インテル® Stratix® 10のコンフィグレーションは、セクターで行われます。ビットストリームのオーバーヘッドを最小にするには、必ずPR領域をセクターに揃えてください。
- インテル® Arria® 10および インテル® Cyclone® 10 GX デバイスの場合、フロアプランの高さがリコンフィグレーション時間に影響します。Y 方向の方が大きいフロアプランは、リコンフィグレーションに時間がかかります。この条件は、 インテル® Agilex™ または インテル® Stratix® 10デバイスには当てはまりません。セクターに従ってコンフィグレーションされているためです。
- PR領域内のサブLogic Lock領域を定義して、タイミング・クロージャーを改善します。
- デザインにHPRの親と子のパーティションが含まれている場合、親領域の配置領域は、その子領域の配線配置領域を完全に取り囲むようにしてください。また、親ワイヤーLUTは、子PR領域外のエリア内になければなりません。この要件があるのは、子PR領域は、他のすべてのロジックに対して排他的だからです。これには、親領域とスタティック領域も含まれます。
1.6.3.1. フロアプラン制約の段階的適用
- ベースリビジョンを実装するため、最も複雑なペルソナを各PRパーティションに対して使用します。この初期実装には、すべてのペリフェラル制約を持つ完全なデザインおよび最上位の .sdc タイミング制約を含めてください。この実装では、PR領域のLogic Lock領域制約は含めないでください。
- パーティションを作成するため、Design Partitions Windowで、領域のTypeオプションをDefaultに設定します。すべてのPRパーティションに対して行います。
- 各パーティションの境界をレジスター化し、適切なタイミングマージンを確保します。
- Timing Analyzerを使用してタイミング・クロージャーが正常に行われたかどうかを確認します 。
- 必要な信号すべてがグローバル・ネットワークで駆動されていることを確認します。FitterのAuto Global Clockオプションをディスエーブルし (Assignments > Settings > Compiler Settings > Advanced Settings (Fitter))、非グローバル信号の昇格を回避します。
- Logic Lockコアのみの配置領域を各パーティションに対して作成します。
- ベースリビジョンの再コンパイルをLogic Lock制約を使用して行い、タイミング・クロージャーを検証します。
- Reservedオプションを各Logic Lock領域に対してイネーブルし、配置領域内のPRパーティションが排他的に配置されるようにします。Reservedオプションをイネーブルすると、スタティック領域ロジックの配置がPRパーティションの配置領域にされることを回避できます。
- Reserved制約でベースリビジョンを再コンパイルしてから、タイミング・クロージャーを検証します。
- Design Partitionsウィンドウで、各PRパーティションのTypeをReconfigurableとして指定します。このアサインメントによってCompilerでは、ワイヤーLUTをPRパーティションの各インターフェイスに追加し、パーシャル・リコンフィグレーションのためのコンパイルチェックを追加で行います。
- Reconfigurable制約を使用してベースリビジョンを再コンパイルし、タイミング・クロージャーを検証します。これで最上位パーティションをエクスポートし、異なるペルソナのPR実装のコンパイルで再利用することができます。
1.6.4. ステップ4 : Partial Reconfiguration Controller Intel FPGA IPの追加
1.6.4.1. Partial Reconfiguration Controller Intel FPGA IPの追加
Partial Reconfiguration Controller Intel FPGA IPは、Secure Device Manager (SDM) とインターフェイス接続し、ビットストリーム・ソースを管理します。SDMでは、コンフィグレーション・データの認証と解凍を実行します。このIPコアを インテル® Agilex™ または インテル® Stratix® 10デザインで使用し、内部PRホスト、 Nios® IIプロセッサー、 PCI Express* 、またはイーサネット・インターフェイスでパーシャル・リコンフィグレーションを実行することができます。
インテル® Quartus® Prime開発ソフトウェアでは、PR Controller IPコアを使用したコア・インターフェイスのPR、またはJTAGデバイスピンのPRをサポートしています。JTAGのPRには、Partial Reconfiguration Controller Intel FPGA IPのインスタンス化は必要ありません。
1.6.4.2. Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPの追加
このIPコアを インテル® Arria® 10または インテル® Cyclone® 10 GXデザインで使用し、内部PRホスト、 Nios® IIプロセッサー、 PCI Express* 、またはイーサネット・インターフェイスでパーシャル・リコンフィグレーションを実行します。
パーシャル・リコンフィグレーション時に、FPGAの外部に保存されたPRビットストリームをFPGA内部のPR制御ブロックに送信します。この通信により、制御ブロックは、FPGAのPR領域のリコンフィグレーションに必要なCRAMビットを更新することができます。PRビットストリームには、命令 (オペコード) および特定のPR領域のリコンフィグレーションに必要なコンフィグレーション・ビットが含まれています。
IPコアを インテル® Quartus® Prime IP Catalog (Tools > IP Catalog) からインスタンス化し、そのIPを インテル® Arria® 10または インテル® Cyclone® 10 GX PR制御ブロックに自動接続します。
独自のカスタムロジックを作成してIPコアの機能を実行する場合は、制御ブロックを手動でインスタンス化してFPGAシステムと通信します。
1.6.5. ステップ5 : ペルソナの定義
スタティック領域と相互作用する信号が、すべてのペルソナ内のすべての信号のスーパーセットであることを確認します。PRデザインでは、PR領域内の各ペルソナに対して同一のI/Oインターフェイスが必要です。デザインのすべてのペルソナに同一のインターフェイスがない場合は、スタティック領域とインターフェイス接続するラッパーロジックの作成も必要です。
1.6.6. ステップ6 : ペルソナのリビジョンの作成
- Entity Rebindingアサインメント (ENTITY_REBINDING) - 各PRパーティションに対し、ソフトウェアでは、エンティティー名のプレースホルダーを使用して、エンティティーの再バインド・アサインメントを追加します。デザインと実装リビジョンによっては、デザインに各PRパーティションのエンティティーの再バインド・アサインメントのすべては必要としない場合もあります。例えば、HPRデザインで、デフォルトのペルソナを親パーティションに使用している場合、.qdb ファイルをPRの親に対して追加し、エンティティーの再バインドは子に対してのみ使用します。
- QDB File Partitionアサインメント (QDB_FILE_PARTITION) - .qdb ファイル名を指定した場合、ソフトウェアでは、スタティック領域にこのアサインメントを追加します。
- Revision Typeアサインメント (REVISION_TYPE)
- Project > Revisionsをクリックします。
- 新しいリビジョンを作成するには、<<new revision>> をダブルクリックします。
- 一意のRevision nameを指定します。
- Based on revisionオプションで既存のリビジョンを選択します。
- Revision typeで、ベースリビジョンの場合はPartial Reconfiguration - Baseを選択します。実装リビジョンの場合はPartial Reconfiguration - Persona Implementationを選択します。
-
ApplyをクリックしてからOKをクリックします。
図 23. Creating Revisions
次のアサインメントは、それぞれのリビジョンの .qsf ファイルで、Settingsダイアログボックスでのリビジョンタイプの指定に対応します。
ベースリビジョンのアサインメント :
set_global_assignment -name REVISION_TYPE PR_BASE
実装リビジョンのアサインメント :
set_global_assignment -name REVISION_TYPE PR_IMPL
各PRパーティションに対して インテル® Quartus® Prime開発ソフトウェアでも、エンティティー再バインド割り当てを .qsf に追加します。
set_instance_assignment -name ENTITY_REBINDING <entity_name> -to <hierarchical_path>
新しい実装リビジョンを既存の .qdb ファイルに基づいて作成した場合、 インテル® Quartus® Prime開発ソフトウェアでは、.qdb ファイルのパーティション・アサインメントをファイル名のプレースホルダーとともに追加します。
set_instance_assignment -name QDB_FILE_PARTITION <QDB file name>
例えば、作成する新しい実装リビジョンで、ベースリビジョンの .qdb ファイルを使用する場合、次のコマンドを使用します。
create_revision impl_new -based_on <base_revision> \ -new_rev_type impl -root_partition_qdb_file base_static.qdb
- impl_new - 新しい実装リビジョンの名前を指定します。
- -based_on <based_on_revision> - 新しい impl リビジョンのベースとなるPRベースリビジョンを指定します。based_on リビジョンのいくつかのグローバル・アサインメントが、impl リビジョンにコピーされます。プレースホルダー・エンティティーの再バインド・アサインメントは、ベース内の各PRパーティションの impl リビジョンに作成されます。
- -new_rev_type <rev_type> - 唯一有効なrev-typeは implです。
- root_partition_qdb_file <qdb_file> - 指定された .qdb ファイルを使用して、QDB_FILE_PARTITION アサインメントを impl リビジョンに作成します。
1.6.7. ステップ7 : ベースリビジョンのコンパイルとスタティック領域のエクスポート
- 現在のリビジョンを指定するには、Project > Revisionsをクリックし、ベースリビジョンを現在のリビジョンとして選択するか、メインツールバーのドロップダウン・リストからベースリビジョンを選択します。
-
インテル®
Arria® 10および
インテル®
Cyclone® 10 GXデザインの場合、必要に応じて次のアサインメントを .qsf に追加し、必要なPRビットストリームをコンパイル後に自動生成します。この手順は、
インテル®
Stratix® 10または
インテル®
Agilex™
デザインの場合は不要です。
set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF
- ベースリビジョンをコンパイルするには、Processing > Start Compilationをクリックします。
-
スタティック領域をエクスポートするには、Project > Export Design Partitionをクリックして、パーティション・エクスポートのオプションを指定します。
図 25. Export Design Partition
表 6. デザイン・パーティションのオプション オプション 設定 Partition name root_partition を選択します。 Partition database file 分かりやすいファイル名を指定します。 Include entity-bound SDC files パーティション・エクスポートでエンティティーにバインドされた .sdc ファイルを含めることができるようにします。 Snapshot finalスナップショットを選択します。 -
あるいは、次の手順に従って、1つ以上のデザイン・パーティションを各コンパイル後に自動エクスポートします。 デザイン・パーティションに親パーティションが保持されていない場合、 そのデザイン・パーティションは、root_partitionを含め、自動エクスポートできます。
- Design Partitions Windowウィンドウを開くには、Assignments > Design Partitions Windowをクリックします。
- 合成結果を含むパーティションを合成実行後に毎回、自動エクスポートするには、.qdb エクスポート・パスとファイル名をパーティションのPost Synthesis Export Fileオプションに指定します。ファイル名のみを指定して、パスがない場合、そのファイルは、コンパイル後にプロジェクト・ディレクトリーにエクスポートされます。
- 最終スナップショットの結果を含むパーティションを Fitter実行時に毎回、自動エクスポートするには、.qdb ファイル名をパーティションのPost Final Export Fileオプションに指定します。
図 26. Design Partitions Windowでのエクスポート・ファイルの指定同等のQSFファイル
set_instance_assignment -name \ EXPORT_PARTITION_SNAPSHOT_<FINAL|SYNTHESIZED> \ <hierarchy_path> -to <file_name>.qdb
1.6.8. ステップ8 : PR実装リビジョンのセットアップ
- 実装リビジョンを Current Revisionとして設定します。
- .qdb ファイルを root_partition のソースとして指定するには、Assignments > Design Partitions Windowをクリックします。Partition Database Fileセルをダブルクリックし、適切な .qdb ファイルを指定します。
-
PR実装リビジョンごとに、Entity Re-binding cellでパーシャル・リコンフィグレーションを行うエンティティー名を指定します。このエンティティー名は、この実装リビジョンで実装するペルソナのデザインファイルから取ります。
図 27. Design Partitions Window
- デザインをコンパイルするには、Processing > Start Compilationをクリックします。
-
ステップ1から4を繰り返して、各実装リビジョンのセットアップおよびコンパイルを行います。または、単純なTclスクリプトを使用して、すべての実装リビジョンをコンパイルします。
set_current_revision <implementation1 revision name> execute_flow -compile set_current_revision <implementation2 revision name> execut_flow -compile . . .
1.6.9. ステップ9 : FPGAデバイスのプログラミング
インテル® Stratix® 10および インテル® Agilex™ デザインの場合、Assemblerでは、コンパイルの最後にコンフィグレーション .rbf を自動生成します。 インテル® Arria® 10および インテル® Cyclone® 10 GXデザインの場合は、GENERATE_PR_RBF_FILE アサインメントを .qsf に追加するか、Convert Programming Files ダイアログボックスを使用して、Partial-Masked SRAM Object File (.pmsf) を .rbf ファイルに変換します。詳細は PRビットストリーム・ファイルの生成 で説明しています。
プログラミング・ファイル | 説明 |
---|---|
<rev>.<pr_region>.pmsf | PR領域のpartial-maskビットが含まれています。.pmsf ファイルには、PRビットストリームを作成するためのすべての情報が含まれています。 注: デフォルトのファイル名はパーティション名に対応しています。
|
<rev>.<static_region>.msf | スタティック領域のmaskビットが含まれています。 |
<rev>.sof | デバイス全体のコンフィグレーション情報が含まれています。 |
1.6.9.1. PRビットストリーム・ファイルの生成
コンパイル中のPRビットストリームの生成
次の手順に従って、コンパイル中に .rbf ファイルを生成します。
- 次のアサインメントをリビジョン .qsf に追加して、コンパイル後に必要なPRビットストリームを自動生成します。
set_global_assignment -name GENERATE_PR_RBF_FILE ON set_global_assignment -name ON_CHIP_BITSTREAM_DECOMPRESSION OFF
- リビジョンをコンパイルして .rbf を生成するには、Processing > Start Compilationをクリックします。
Programming File Generatorを使用したPRビットストリームの生成
次の手順に従い、Programming File Generatorを使用して .rbf をPRプログラミング用に生成します。
- File > Programming File Generatorをクリックします。Programming File Generatorが表示されます。
- ターゲットのDevice familyおよびConfiguration modeをパーシャル・リコンフィグレーション用に指定します。
- Output Fileタブで、Output directory、ファイルのnameを指定し、Raw Binary File for Partial Reconfiguration (.rbf) ファイルタイプをイネーブルします。
- 変換する入力 .pmsf ファイルを追加するには、Input Filesタブをクリックし、Add Bitstreamをクリックし、Assemblerで生成した .pmsf を指定します。図 28. ビットストリーム・ファイルの追加
-
Input Filesタブで .pmsf ファイルを選択し、Propertiesをクリックします。次のオプションのいずれかを .rbf に対して指定します。
- Enable compression - 圧縮PRビットストリーム・ファイルを生成して、ファイルサイズを縮小します。
- Enable encryption - 暗号化独立ビットストリームをベースイメージとPRイメージに対して生成します。PRイメージの暗号化は、ベースイメージが暗号化されていない場合でもできます。PRイメージには、別の暗号化キーファイル (.ekp) を持たせることができます。その他のSecurity settingsを指定することもできます。
-
Enable encryptionをオンにした場合は、Design Security Feature Disclaimerを了承してください。了承するには、次の図に示すとおり、ボックスをオンにします。図 29. Design Security Feature Disclaimer
- OKをクリックします。
- Programming File GeneratorでGenerateをクリックします。PRビットストリーム・ファイルが、仕様に従って生成されます。
Convert Programming FilesダイアログボックスでのPRビットストリームの生成
次の手順に従い、Convert Programming Filesダイアログボックスで .rbf を生成します。
- File > Convert Programming Filesをクリックします。Convert Programming Filesダイアログボックスが表示されます。
- 出力ファイル名を指定し、Programming file typeをRaw Binary File for Partial Reconfiguration (.rbf) として指定します。
- 変換する .pmsf ファイルを追加するには、Add Fileをクリックします。
- 新しく追加された .pmsf ファイルを選択し、Propertiesをクリックします。図 30. PMSF File Properties Bitstream Encryption
- 次のオプションのいずれかをイネーブルまたはディスエーブルして、OKをクリックします。
- Compression — PRビットストリームの圧縮をイネーブルします。
- Enhanced compression - PRビットストリームの拡張圧縮をイネーブルします。
- Generate encrypted bitstream - ベースイメージおよびPRイメージ用の暗号化独立ビットストリームを生成します。PRイメージの暗号化は、ベースイメージが暗号化されていない場合でもできます。PRイメージには、別の暗号化キーファイル (.ekp) を持たせることができます。Generate encrypted bitstreamをイネーブルした場合は、Enable volatile security key、Use encryption lock file、およびGenerate key programming fileオプションをイネーブルまたはディスエーブルします。
- Generateをクリックします。PRビットストリーム・ファイルが、仕様に従って生成されます。
1.6.9.2. パーシャル・リコンフィグレーション・ビットストリームの互換性チェック
インテル® Stratix® 10および インテル® Agilex™ PRビットストリームの互換性チェック
インテル® Stratix® 10および インテル® Agilex™ デザインの場合、PRビットストリームの互換性チェックは、CompilerおよびSecure Device Manager (SDM) ファームウェアで、デフォルトで自動的にイネーブルされています。PRビットストリーム互換性チェックがイネーブルの場合、次の制限がPRデザインに適用されます。
- ファームウェアでは、階層型パーシャル・リコンフィグレーションのレイヤー数に関係なく、合計で最大32個の親PR領域を使用できます。
- PRデザインには、階層型パーシャル・リコンフィグレーションのレイヤーを最大6個含めることができます。
- 階層がない場合、PRデザインには、最大32個の領域を含めることができます。
- PRデザインには、各親PR領域に子PR領域を最大15個含めることができます (階層型の場合)。子PR領域の数は、PR領域の合計数32個に含まれます。
PRビットストリームの互換性チェックがイネーブルになっている場合、PRデザインが上述の制限数を超えると、Compilerではエラーを生成します。
set_global_assignment -name ENABLE_PR_POF_ID OFFこのアサインメントをオフに設定すると、32個の領域の合計数の制限は、Compilerでは適用されません。
インテル® Arria® 10および インテル® Cyclone® 10 GX PRビットストリームの互換性チェック
インテル® Arria® 10および インテル® Cyclone® 10 GXデザインでは、PRビットストリームの互換性チェックをイネーブルまたはディスエーブルするため、Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPをIP Catalogからインスタンス化する際に、Enable bitstream compatibility checkオプションをオンにします。
PR IPでは、パーシャル・リコンフィグレーションPRビットストリーム・ファイル (rbf) を検証します。ビットストリーム互換性チェックをイネーブルすると、PR .pof IDは、PRビットストリームの71番目のワードとしてエンコードされます。PR IPによって互換性のないビットストリームが検出された場合、PR IPはPR動作を停止し、ステータス出力でエラーを報告します。
Enable bitstream compatibility checkをオンにすると、PR Controller IPコアでは、PR bitstream IDを作成し、そのビットストリームIDをコンフィグレーション・ダイアログボックスに表示します。階層型PRデザインでのビットストリームの互換性チェックについては、次のドキュメントで追加手順を確認してください。AN 806: Hierarchical Partial Reconfiguration Tutorial for Intel Arria 10 GX FPGA Development Board。
1.6.9.3. ロウ・バイナリ・プログラミング・ファイル・バイト・シーケンスの送信例
Double Word = 01EE1B02 | |||
LSB: BYTE0 = 02 | BYTE1 = 1B | BYTE2 = EE | MSB: BYTE3 = 01 |
D[7..0] | D[15..8] | D[23..16] | D[31..24] |
0000 0010 | 0001 1011 | 1110 1110 | 0000 0001 |
1.6.9.4. 複数の .pmsfファイルをマージして1つの .pmsfファイルを生成する
マージした .rbf ファイル1つを使用して、2つのPR領域のリコンフィグレーションを同時に行います。2つ以上の .pmsf ファイルをマージするには、次を実行します。
- Convert Programming Filesダイアログボックスを開きます。
- 出力ファイル名およびプログラミング・ファイル・タイプをMerged Partial-Mask SRAM Object File (.pmsf) として指定します。
- Input files to convertダイアログボックスで、PMSF Dataを選びます。
- 入力ファイルを追加するには、Add Fileをクリックします。マージするファイルを2つ以上指定してください。
- マージファイルを生成するには、Generateをクリックします。
または、2つ以上の .pmsf ファイルを インテル® Quartus® Prime シェルからマージするには、次のコマンドを入力します。
quartus_cpf --merge_pmsf=<number of merged files> <pmsf_input_file_1> \ <pmsf_input_file_2> <pmsf_input_file_etc> <pmsf_output_file>
例えば、2つの .pmsf ファイルをマージするには、次のコマンドを入力します。
quartus_cpf --merge_pmsf=<2> <pmsf_input_file_1> <pmsf_input_file_2> \ <pmsf_output_file>
1.7. 階層型パーシャル・リコンフィグレーション
階層型パーシャル・リコンフィグレーション (HPR) とは、パーシャル・リコンフィグレーション (PR) の拡張です。HPRでは、1つのPR領域を別のPR領域内に含めます。親パーティションと子パーティションの両方に対して複数のペルソナが作成可能です。子パーティションは、その親パーティション内にネスト化します。親パーティションをリコンフィグレーションしても、スタティック領域内の動作への影響はありませんが、親領域の子パーティションが、デフォルトの子パーティション・ペルソナに置き換えられます。
- デザインのベースリビジョンを作成し、スタティック領域をにエクスポートします。これについてはステップ7 : ベースリビジョンのコンパイルとスタティック領域のエクスポート で説明しています。
- 各ペルソナの実装リビジョンをステップ8 : PR実装リビジョンのセットアップ の説明に従って作成し、親パーティションをエクスポートします。
- .qdb ファイル・パーティションをスタティック領域と親領域に対して指定します。
- 親または子に対応するエンティティーを指定します。
1.8. パーシャル・リコンフィグレーション・デザインのタイミング解析
パーシャル・パーティションとスタティック・パーティションとの間のインターフェイスは、各PR実装のリビジョンで同一です。各PR実装リビジョンでタイミング解析を実行し、タイミング違反がないことを確認します。複数のPR領域を含むデザインのタイミング・クロージャーを確実にするため、考えられるすべてのPR領域の組み合わせに対して集約リビジョンを作成し、タイミング解析を実行します。
1.8.1. 集約リビジョンでのタイミング解析の実行
- Revisionsダイアログボックスを開くには、Project > Revisionsをクリックします。
- 新しいリビジョンを作成するには、<<new revision>> をダブルクリックします。
- Revision nameを指定し、Based on Revisionでベースリビジョンを選択します。
-
ポストフィット・データベースをベースコンパイル (スタティック・パーティション) からエクスポートするには、次のコマンドを
インテル®
Quartus® Primeシェルに入力します。
quartus_cdb <project name> <base revision> --export_block \ "root_partition" --snapshot final --file \ "<base revision name>.qdb"
注: スタティック領域およびPR領域に .sdc および .ip ファイルをすべて含めるようにしてください。クロック検出のため、PR Controller IPの .sdc ファイルが、IPコアが使用するクロックを作成する .sdc ファイルのエントリーに従っていることを確認します。この命令を容易にするために、PR Controller IPの .ip ファイルの前に、プロジェクト・リビジョンの .qsf ファイルでクロックを作成するために使用する .ip または .sdc ファイルがあることを確認します。詳細は、パーシャル・リコンフィグレーション・ソリューションIPユーザーガイド を参照してください。 -
ポストフィット・データベースを複数のペルソナ (PR実装リビジョン用) からエクスポートするには、次のコマンドを
インテル®
Quartus® Primeシェルに入力します。
quartus_cdb <project name> -c <PR1 revision> --export_block \ <PR1 Partition name> --snapshot final --file "pr1.qdb" quartus_cdb <project name> -c <PR2 revision> --export_block \ <PR2 Partition name> --snapshot final --file "pr2.qdb"
-
スタティック領域のポストフィット・データベースを集約リビジョンとしてインポートするには、次のコマンドを
インテル®
Quartus® Primeシェルに入力します。
quartus_cdb <project name> -c <aggr_rev> --import_block \ "root_partition" --file "<base revision name>.qdb" quartus_cdb <project name> -c <aggr_rev> --import_block \ <PR1 partition name> --file "pr1.qdb" quartus_cdb <project name> -c <aggr_rev> --import_block \ <PR2 Partition name> --file "pr2.qdb"
-
すべてのパーティションのポストフィット・データベースを統合するには、次のコマンドを
インテル®
Quartus® Primeシェルに入力します。
quartus_fit <project name> -c <aggr_rev>
注: Fitterにより、ポストフィット・データベースの正当性の検証、ネットリストの結合、およびタイミング解析が行われます。Fitterではデザインの再配線は行いません。 -
タイミング解析を集約リビジョンで実行するには、次のコマンドを
インテル®
Quartus® Primeシェルに入力します。
quartus_sta <proj name> -c <aggr_rev>
- 考えられるすべてのPRペルソナの組み合わせについて、集計リビジョンのタイミング解析を実行します。特定のペルソナのタイミング・クロージャーが失敗した場合は、ペルソナを再コンパイルし、タイミング解析を再度実行します。
1.9. パーシャル・リコンフィグレーション・デザインのシミュレーション
インテル® Quartus® Primeプロ・エディション開発ソフトウェアでは、シミュレーション・マルチプレクサを使用したPRペルソナ遷移のシミュレーションをサポートしています。シミュレーション・マルチプレクサを使用して、シミュレーション中にPR領域内のロジックを駆動するペルソナを変更します。このシミュレーションでは、リコンフィグレーション可能なパーティションで生じる変化や中間効果を観察することができます。
非PRデザインのシミュレーションと同様に、PRシミュレーションの準備には、シミュレーター作業環境の設定、シミュレーション・モデル・ライブラリーのコンパイル、およびシミュレーションの実行が必要です。 インテル® Quartus® Prime開発ソフトウェアのシミュレーション・コンポーネントにより、PRデザインのシミュレーションを行い、ゲートレベルのPRシミュレーション・モデルを各ペルソナに対して生成することができます。動作RTLモデルまたはゲートレベルのPRシミュレーション・モデルのいずれかを使用し、PRペルソナのシミュレーションを行います。ゲートレベルのPRシミュレーション・モデルにより、デザイン内のレジスターの正確なシミュレーションが可能になり、シーケンス検証がリセットされます。テクノロジー・マップ・レジスターでは、初期条件を想定していません。
1.9.1. パーシャル・リコンフィグレーション・シミュレーション・フロー
- PRイベントのシステムレベルの準備。
- メモリーからのパーシャル・ビットストリームの取得。
- PR制御ブロックまたはSDMへのパーシャル・ビットストリームの送信。
- 新しいペルソナがアクティブになり、デザインが変更される。
- PR後のシステム調整。
- 新しいペルソナをシステム内で使用。
1.9.1.1. PRペルソナ置き換えのシミュレーション
- altera_pr_wrapper_mux_in
- altera_pr_wrapper_mux_out
- altera_pr_persona_if (SystemVerilogインターフェイスを使用すると、ラッパー・マルチプレクサをテストベンチ・ドライバーに接続できます。)
PRペルソナ切り替えシミュレーション用RTLラッパー
altera_pr_wrapper_mux_out モジュールの pr_activate 入力によって、出力XへのMUXがイネーブルされます。この機能により、PRペルソナからの未知の出力のシミュレーションが可能になります。また、デザインのフリーズロジックの通常動作の検証が行われます。次のコードは、上図のPRペルソナ切り替えシミュレーションに対応しています。
module pr_core_wrapper ( input wire a, input wire b, output wire o ); localparam ENABLE_PERSONA_1 = 1; localparam ENABLE_PERSONA_2 = 1; localparam ENABLE_PERSONA_3 = 1; localparam NUM_PERSONA = 3; logic pr_activate; int persona_select; altera_pr_persona_if persona_bfm(); assign pr_activate = persona_bfm.pr_activate; assign persona_select = persona_bfm.persona_select; wire a_mux [NUM_PERSONA-1:0]; wire b_mux [NUM_PERSONA-1:0]; wire o_mux [NUM_PERSONA-1:0]; generate if (ENABLE_PERSONA_1) begin localparam persona_id = 0; `ifdef ALTERA_ENABLE_PR_MODEL assign u_persona_0.altera_sim_pr_activate = pr_activate; `endif pr_and u_persona_0 ( .a(a_mux[persona_id]), .b(b_mux[persona_id]), .o(o_mux[persona_id]) ); end endgenerate generate if (ENABLE_PERSONA_2) begin localparam persona_id = 1; `ifdef ALTERA_ENABLE_PR_MODEL assign u_persona_1.altera_sim_pr_activate = pr_activate; `endif pr_or u_persona_1 ( .a(a_mux[persona_id]), .b(b_mux[persona_id]), .o(o_mux[persona_id]) ); end endgenerate generate if (ENABLE_PERSONA_3) begin localparam persona_id = 2; `ifdef ALTERA ENABLE PR MODEL assign u_persona_2.altera_sim_pr_activate = pr_activate; `endif pr_empty u_persona_2 ( .a(a_mux[persona_id]), .b(b_mux[persona_id]), .o(o_mux[persona_id]) ); end endgenerate altera_pr_wrapper_mux_in #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \ u_a_mux(.sel(persona_select), .mux_in(a), .mux_out(a_mux)); altera_pr_wrapper_mux_in #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \ u_b_mux(.sel(persona_select), .mux_in(b), .mux_out(b_mux)); altera_pr_wrapper_mux_out #(.NUM_PERSONA(NUM_PERSONA), .WIDTH(1)) \ u_o_mux(.sel(persona_select), .mux_in(o_mux), .mux_out(o), .pr_activate \ (pr_activate)); endmodule
1.9.1.2. altera_pr_persona_if モジュール
interface altera_pr_persona_if; logic pr_activate; int persona_select; event report_storage_if_x_event; event report_storage_if_1_event; event report_storage_if_0_event; event report_storage_event; initial begin pr_activate <= 1'b0; end endinterface : altera_pr_persona_if<QUARTUS_INSTALL_DIR> /eda/sim_lib/altera_lnsim.sv ファイルでは、altera_pr_persona_if コンポーネントを定義します。
1.9.1.3. altera_pr_wrapper_mux_out モジュール
module altera_pr_wrapper_mux_out #( parameter NUM_PERSONA = 1, parameter WIDTH = 1, parameter [0:0] DISABLED_OUTPUT_VAL = 1'bx ) ( input int sel, input wire [WIDTH-1 : 0] mux_in [NUM_PERSONA-1:0], output reg [WIDTH-1:0] mux_out, input wire pr_activate ); always_comb begin if ((sel < NUM_PERSONA) && (!pr_activate)) mux_out = mux_in[sel]; else mux_out = {WIDTH{DISABLED_OUTPUT_VAL}}; end endmodule : altera_pr_wrapper_mux_out<QUARTUS_INSTALL_DIR> /eda/sim_lib/altera_lnsim.sv ファイルでは、altera_pr_wrapper_mux_out コンポーネントを定義します。
1.9.1.4. altera_pr_wrapper_mux_in モジュール
module altera_pr_wrapper_mux_in#( parameter NUM_PERSONA = 1, parameter WIDTH = 1, parameter [0:0] DISABLED_OUTPUT_VAL = 1'bx ) ( input int sel, input wire [WIDTH-1:0] mux_in, output reg [WIDTH-1 : 0] mux_out [NUM_PERSONA-1:0] ); always_comb begin for (int i = 0; i < NUM_PERSONA; i++) if (i == sel) mux_out[i] = mux_in; else mux_out[i] = {WIDTH{DISABLED_OUTPUT_VAL}}; end endmodule : altera_pr_wrapper_mux_inThe <QUARTUS_INSTALL_DIR> /eda/sim_lib/altera_lnsim.sv ファイルでは、altera_pr_wrapper_mux_in コンポーネントを定義します。
1.10. パーシャル・リコンフィグレーション・デザインのデバッグ
Signal Tap Logic Analyzerを使用すると、デザインのスタティック領域またはパーシャル・リコンフィグレーション (PR) 領域をデバッグすることができます。PR領域は、パーシャル・リコンフィグレーション用に指定するデバイスフロアプランの領域です。デバイスの残りの (非PR) 領域はスタティック領域です。スタティック領域のみをデバッグする場合は、In-System Sources and Probes Editor、In-System Memory Content Editor、またはJTAG Avalon Master Bridgeを使用できます。
1.10.1. Signal Tap Logic Analyzerを使用したPRデザインのデバッグ
プランニングの早期段階で次の手順を実行し、Signal Tapを使用してスタティック領域およびPR領域のデバッグができるようにします。
- SLD JTAG Bridge Agent IPをスタティック領域でインスタンス化します。
- SLD JTAG Bridge Host IPをデフォルトのペルソナのPR領域でインスタンス化します。
- 各ペルソナのSLD JTAGブリッジホストIPをペルソナのリビジョンの作成時にインスタンス化します。
Signal Tap Logic Analyzerでは、 インテル® Quartus® Prime開発ソフトウェアの階層型デバッグ機能を使用し、スタティック領域とPR領域の信号を同時にタップします。
PR領域に存在する複数のペルソナをデバッグすることができます。PR領域が複数でも同様に可能です。階層ハブを使用したデバッグ・インフラストラクチャーに関する詳細情報は、インテルQuartus Primeプロ・エディション ユーザーガイド: デバッグツールを参照してください。
1.11. PRビットストリームのセキュリティー検証 (インテルStratix 10および インテル Agilex デザイン)
PRビットストリームのセキュリティー検証のライセンスを取得してイネーブルすると、Programmerでは、PRビットストリームを生成する前にビット所有権を実行し、ピーク、ポークを通知し、競合チェックを行います。ProgrammerによるPRペルソナの pmsf ファイルの確認が、Secure Mask Settingsファイル (.smsf) に対してできない場合、PRビットストリームの生成は終了します。
PRビットストリームのセキュリティー検証では、マルチテナントFPGAの使用をイネーブルします。例えば、Platform Ownerによって単一のデバイスをパーティション化し、複数のサードパーティーClientをホストする場合などです。Platform OwnerはClientを信頼せず、Clientは相互に信頼しない可能性がありますが、ClientはPlatform Ownerを信頼します。PRビットストリームのセキュリティー検証により、Platform OwnerとClientは、専用サーバー、Clientのコンフィグレーションの破損、または後続のパーシャル・リコンフィグレーションによるピーク攻撃またはポーク攻撃の開始から保護されます。
このようなマルチテナント・シナリオでは、PRビットストリームのセキュリティー検証により、次のような既知の脅威から保護することができます。
- 他者が所有するPR領域のビットの変更 - PRペルソナにより、別のクライアントのペルソナへの機能変更の注入、DOSまたはPDOS攻撃、意図しない機能、所有者のないペルソナからの信号のリダイレクトが引き起こされる可能性があります。
- ポーク攻撃 - PRペルソナは、ワイヤーをポークして、他のPR領域の入力データを破壊する可能性があります。
- ピーク攻撃 - PRペルソナは、他のPR領域からの配線ワイヤーの値を表示して、データをスヌーピングする可能性があります。
- 過度の電力消費 - PRペルソナにより、PR領域内でのワイヤー競合Hが原因でFPGAの過剰な電力消費が引き起こされる可能性があります。
1.11.1. PRビットストリームのセキュリティーの使用ケース (インテルStratix 10および インテル Agilex デザイン)
Cloud Service Providerは、FPGAをさまざまなPR領域にパーティション化し、複数のサードパーティー・クライアントをホストします。Cloud Service Providerは、このパーティション化されたデザインをベース・デバイス・コンフィグレーションに使用します。デバイス・コンフィグレーションがデバイスにロードされると、PRビットストリームのセキュリティーにより、検証済みのPR領域ペルソナのみを、対応するPR領域にロードすることができます。
1.11.2. PRビットストリームのセキュリティー検証の使用 (インテルStratix 10および インテル Agilex デザイン)
.pmsf には包括的な情報が含まれています。これは、ProgrammerによるClient領域のPRビットストリーム生成に必要です。これには、実際のビット設定、領域マスク、すべての補助ビットマスクなどが含まれます。.smsf には、領域所有権マスクのほか、PR領域のペルソナによってピーク攻撃やポーク攻撃を検出するための包括的な情報が含まれています。
その後、Programmerには、このPR領域のPRビットストリームを生成するため、プライベートの .pmsf と公開された .smsf の両方が必要です。これにより、PRペルソナによって変更することができるビットは、ペルソナが所有するビットのみになります。Platform Ownerは、.smsf ファイルをサードパーティーのClientに対して、PR領域の担保の一部としてリリースする場合としない場合があります。Platform Ownerは、.smsf を使用し、Clientの .pmsf からこのPR領域に対するPRビットストリームの生成をProgrammerで行います。
- ライセンスファイルを取得し、PR領域に対する smsf ファイルの生成がベースコンパイル中にできるようにします。ProgrammerでのPRビットストリーム生成中にPRビットストリームのセキュリティー検証を実行します。ライセンスを取得するには、マイ・インテルにログインまたはアカウント登録してから、インテル・ プレミアサポートのケースを提出し、ライセンスキーをリクエストしてください。
- ライセンスファイルを インテル® Quartus® Primeプロ・エディション開発ソフトウェアに追加するには、Tools > License Setupをクリックし、License File機能を指定します。
-
PRセキュリティー検証機能をイネーブルするには、次の行を .qsf プロジェクトに追加します。
set_global_assignment -name PR_SECURITY_VALIDATION on
- ベースリビジョンをコンパイルします。
- ベースコンパイルに続いて、Assemblerレポートを表示し、生成された .smsf ファイルを表示します。このファイルは、各PR領域のビットストリーム生成に必要です。
- Platform Ownerは、.smsf ファイルをサードパーティーのクライアントに対してPR領域の担保の一部としてリリースすることができます。 Clientは、プライベートの .pmsf をPlatform Ownerに提供し、PRペルソナのコンフィグレーションのPRセキュリティーを検証し、検証済みPRビットストリームを生成します。
-
Clientの .pmsf のPRセキュリティーを検証するため、Platform Ownerは、.smsf および対応する .pmsf ファイルをProgrammerのコマンドラインで次のとおりに指定し、検証済みPRビットストリームを生成します。
quartus_cpf -c –-smsf=<smsf_file> <pmsf_file> <output_file>
1.12. PRビットストリームの圧縮および暗号化 (インテルArria 10および インテル Cyclone 10 GXデザイン)
ベース・ビットストリームおよびPRプログラミング・ビットストリームをデザイン要件に基づいて個別に圧縮します。ベースイメージのみを暗号化する場合、PRイメージを暗号化するかどうかを指定します。次のガイドラインは、PRビットストリームの圧縮および暗号化に適用します。
-
ベースイメージとPRイメージを個別に暗号化します。ベースイメージには不揮発性の暗号化キーを使用します。PRイメージには揮発性の暗号化キーを使用します。
- 表 9 を参照して、暗号化または圧縮の正しいClock-to-Data (CD) 比の設定を確認します。
拡張解凍をイネーブルするため、IP CatalogまたはPlatform Designerパラメーター・エディターでパラメーターを指定するときにEnable enhanced decompressionオプションをオンにします。
1.12.1. 暗号化PRビットストリームの生成 (インテルArria 10または インテル Cyclone 10 GXデザイン)
- 256ビットのキーファイル (.key) を作成します。
-
プログラミング・ファイル (.ekp) を
インテル®
Quartus® Primeシェルから生成するには、次のコマンドを入力します。
quartus_cpf --key <keyfile>:<keyid> \ <base_sof_file><output_ekp_file>
例 :
quartus_cpf --key my_key.key:key1 base.sof key.ekp
-
暗号化PRビットストリーム (.rbf) を生成するには、次のコマンドを実行します。
quartus_cpf -c <pr_pmsf_file><pr_rbf_file> qcrypt -e --keyfile=<keyfile> --keyname=<keyid> –lockto=\ <qlk file> --keystore=<battery|OTP> \ <pr_rbf_file><pr_encrypted_rbf_file>
- lockto - 暗号化ロックを指定します。
- keystore - 揮発性キー (バッテリー) または不揮発性キー (OTP) を指定します。
例 :
quartus_cpf -c top_v1.pr_region.pmsf top_v1.pr_region.rbf \ qcrypt -e --keyfile=my_key.key --keyname=key1 --keystore=battery \ top_v1.pr_region.rbf top_v1_encrypted.rbf
-
キーファイルを揮発性キー (デフォルト) としてデバイスにプログラムするには、次のコマンドを入力します。
quartus_pgm -m jtag -o P;<output_ekp_file>
例 :
quartus_pgm -m jtag -o P;key.ekp
-
ベースイメージをデバイスにプログラムするには、次のコマンドを入力します。
quartus_pgm -m jtag -o P;<base_sof_file>
例 :
quartus_pgm -m jtag -o P;base.sof
-
デバイスのパーシャル・リコンフィグレーションを暗号化されたビットストリームで行うには、次のコマンドを入力します。
quartus_pgm -m jtag --pr <output_encrypted_rbf_file>
例 :
quartus_pgm -m jtag --pr top_v1_encrypted.rbf
qcrypt でエラーを生成するのは、Enable bitstream compatibility checkパラメーターがPartial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPのインスタンスに対してイネーブルされている場合です。次のいずれかの方法を使用して、このエラーを回避します。
- qcrypt ではなく、Convert Programming Filesダイアログボックスを使用し、暗号化ビットストリームを生成します。これについては、PRビットストリームの生成 で説明しています。
- qcrypt を インテル® Arria® 10または インテル® Cyclone® 10 GXで使用する場合は、Partial Reconfiguration Controller IPの再生成をEnable bitstream compatibility checkオプションをイネーブルしないで行います。Enable hierarchical PR supportオプションはイネーブルしておきます。これについては、Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPの追加で説明しています。デザインの再コンパイルは、PRビットストリームの再生成前に行います。
1.12.2. ビットストリームの暗号化および圧縮のClock-to-Data比 (インテルArria 10または インテル Cyclone 10 GXデザイン)
コンフィグレーション・データ幅 | AES暗号化 | 基本圧縮 | CD比 |
---|---|---|---|
x8 | オフ | オフ | 1 |
オフ | オン | 2 | |
オン | オフ | 1 | |
x16 | オフ | オフ | 1 |
オフ | オン | 4 | |
オン | オフ | 2 | |
x32 | オフ | オフ | 1 |
オフ | オン | 8 | |
オン | オフ | 4 |
正確なCD比は、ビットストリームの暗号化と圧縮に有効な組み合わせとCD比の表で、異なるビットストリーム・タイプに対して指定されているものを使用します。プレーンな .rbf のCD比は1でなければなりません。圧縮された .rbf のCD比は、幅に応じて、2、4、または8でなければなりません。CD比を必要最小値として指定して、異なるビットストリーム・タイプをサポートすることはしないでください。
1.12.3. データ圧縮の比較
標準的な圧縮では、.rbf のサイズは30%から45%減少します。拡張データ圧縮アルゴリズムを使用すると、.rbf のサイズは55%から75%減少します。このアルゴリズムによって圧縮率は高まりますが、代わりに圧縮アルゴリズムの実装に追加のコア領域が必要になります。
次の図で示すのは、程度の異なるロジックエレメント (LE) を使用したPRデザインの圧縮率の比較です。
1.13. PRプログラミング・エラーの回避
PRプログラミング・ガイドライン | 説明 |
---|---|
プロジェクトのデバイスは、ボード上のデバイスと一致している必要があります。 | プロジェクトに指定したターゲットのFPGAデバイスが、ターゲットとする開発キットのデバイスと一致することを確認します。この2つのデバイスは同一である必要があります。Assignments > Deviceをクリックし、ターゲットデバイスを表示します。 |
Programmerのバージョンは、一致している必要があります。 | Intel Quartus Prime Programmerを使用してPRプログラミングを行う場合、Programmerのバージョンとコンパイルに使用する インテル® Quartus® Primeのバージョンが一致していることを確認します。あるマシンでコンパイルしてから、別のマシンでコンパイルするっときに インテル® Quartus® Prime開発ソフトウェアの異なるバージョンを使用すると、Programmerと インテル® Quartus® Prime開発ソフトウェアの間で不一致が発生することがあります。ソフトウェアのバージョンの一致は、 インテル® Stratix® 10および インテル® Agilex™ デザインの場合、特に重要です。これは、PRコンフィグレーション・ハードウェアの依存関係がProgrammer内部にあるためです。 |
より低いJTAGクロック周波数を指定します。 | JTAGクロック周波数を6MHzに下げます。
|
すべてのリビジョンのタイミングを収束します。 | 各プロジェクト・リビジョンでデザインのコンパイル後にタイミングが収束したことを確認します。
|
1.14. PRデザインのバージョン互換コンパイル・データベースのエクスポート
この手法が役立つのは、PR実装リビジョンのビットストリームのコンパイルおよび生成を最新バージョンの インテル® Quartus® Prime開発ソフトウェアを使用して行う場合です。コンフィグレーション・ビットストリームはバージョン互換ではないため、同じバージョンの インテル® Quartus® Prime開発ソフトウェアのすべてのビットストリームを生成する必要があります。
ベースリビジョンを インテル® Quartus® Prime開発ソフトウェアの新しいバージョンに移行した後 、生成するビットストリームと互換性があるのは、 インテル® Quartus® Prime開発ソフトウェアの同じバージョンを使用したPR実装コンパイルからのビットストリームのみです。このビットストリームは、以前のバージョンの インテル® Quartus® Prime開発ソフトウェアのPRビットストリームとは互換性がありません。
インテル® Quartus® Primeプロ・エディション 開発ソフトウェアのエクスポート・バージョン | インテル® Quartus® Primeプロ・エディション開発ソフトウェアのインポート・バージョン | インテル® Stratix® 10および インテル® Agilex™ デバイス | インテル® Arria® 10および インテル® Cyclone® 10 GXデバイス |
---|---|---|---|
18.0 | 19.1 | サポートなし | すべてのデバイスをサポートします |
18.1 | 19.1 |
|
すべてのデバイスをサポートします |
次のトピックでは、バージョン互換データベースの生成フローおよび手順について説明します。
- PRデザインのバージョン互換データベースのフロー
- PRデザインのバージョン互換コンパイル・データベースの生成
次の手順に従って、PRデザインのバージョン互換コンパイル・データベースを生成します。
1.14.1. PRデザインのバージョン互換データベースのフロー
単一のPR領域を含むデザインの移行に伴う手順の概要は次のとおりです。このセクションでは、その手順についてさらに詳しく説明します。
- 最初に、ベースリビジョンの初期コンパイルを インテル® Quartus® Prime開発ソフトウェアのバージョン N で実行します。
- インテル® Quartus® Prime開発ソフトウェアのバージョン N でデザイン全体のバージョン互換データベースをエクスポートします 。
- バージョン互換データベースを インテル® Quartus® Prime開発ソフトウェアのバージョン N+M にインポートします。
- ベースリビジョン .sof ファイルおよびビットストリームをIntel Qartus Prime Assemblerのバージョン N+M で生成します 。
- インテル® Quartus® Prime開発ソフトウェアのバージョン N+M のスタティック領域 .qdb をエクスポートします。
- インテル® Quartus® Prime開発ソフトウェアのバージョン N+M でPR実装のコンパイルを実行します。
1.14.2. PRデザインのバージョン互換コンパイル・データベースの生成
- コンパイル済みのデザイン全体を
インテル®
Quartus® Prime開発ソフトウェアのバージョン N からエクスポートします。Project > Export Designをクリックするか、次のコマンドラインを入力します。
quartus_cdb <project> -c <base_revision> --export_design --snapshot final \ --file <base_revision>.qdb
- コンパイル済みのデザインを
インテル®
Quartus® Prime開発ソフトウェアのバージョン N+M にインポートします。Project > Import Designをクリックするか、次のコマンドラインを入力します。
quartus_cdb <project> -c <base_revision_import> --import_design --file \ <base_revision>.qdb
注: 可能な場合は、デザインのインポート先は、ベースデザインのコンパイルに使用する作業ディレクトリーとは別のディレクトリーにします。同じディレクトリーをインポートとコンパイル、およびベースデザインに使用しなければならない場合は、そのデザインを qdb/* を含めてアーカイブして、コンパイル済みデザインのバックアップ・コピーを作成します。 または、ディスク上のディレクトリーとサブディレクトリーをすべてコピーします。古いデータベース・ディレクトリー qdb/* およびすべてのビットストリーム関連ファイル (*.sof *.msf *.pmsf) も削除する必要があります。 - Fitterのファイナライズ・ステージを
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアのバージョン N+M で再実行します。Processing > Start > Start Fitter (Finalize)をクリックするか、次のコマンドラインを入力します。
quartus_fit <project> -c <base_revision_import> --finalize
- Assemblerを
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアのバージョン N+M で実行し、ブルー・ビットストリームを再生成するには、Processing > Start > Start Assemblerをクリックするか、次のコマンドラインを入力します。
quartus_asm <project> -c <base_revision_import>
-
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアのバージョン N+M のスタティック領域 .qdb をエクスポートするには、Project > Export Design Partitionをクリックするか、次のコマンドラインを入力します。
quartus_cdb <project> -c <base_revision_import> --export_block \ root_partition --snapshot final --file <static.qdb>
- 各実装リビジョンのコンパイルを
インテル®
Quartus® Primeプロ・エディション開発ソフトウェアのバージョン N+M で実行します。前のステップでエクスポートしたスタティック・リビジョン .qdb を使用します。
quartus_sh –flow compile <project> –c <impl_rev>
1.15. パーシャル・リコンフィグレーション・デザインの作成の改訂履歴
ドキュメントのバージョン | インテル® Quartus® Primeのバージョン | 変更内容 |
---|---|---|
2020.05.11 | 20.1 |
|
2020.04.13 | 20.1 |
|
2019.11.18 | 19.3.0 |
|
2019.09.30 | 19.3.0 |
|
2019.06.10 | 19.1.0 |
|
2019.04.22 | 19.1.0 |
|
2019.04.01 | 19.1.0 |
|
2018.12.30 | 18.1.1 |
|
2018.10.24 | 18.1.0 |
|
2018.09.24 | 18.1.0 |
|
2018.07.18 | 18.0.0 |
|
2018.06.18 | 18.0.0 |
|
2018.05.29 | 18.0.0 |
|
2018.05.07 | 18.0.0 |
|
2017.11.06 | 17.1.0 |
|
2017.05.08 | 17.0.0 |
|
10.31.2016 | 16.1.0 |
|
2. パーシャル・リコンフィグレーション・ソリューションIPユーザーガイド
これらのIPコアのうち1つ以上をインスタンス化して、デザインにPR機能のハンドシェイクを実装し、ロジックをフリーズします。または、独自のPRハンドシェイクを作成し、PR領域とインターフェイス接続するロジックをフリーズします。
Intel® FPGA IP | 説明 | 使用方法 |
---|---|---|
Partial Reconfiguration Controller Intel® FPGA IP |
インテル® Stratix® 10または インテル® Agilex™ のパーシャル・リコンフィグレーション・ビットストリームを送信する専用のIPコンポーネント。PRビットストリームでは、リコンフィグレーションを実行するために、FPGAのCRAMビットを調整します。 |
インテル® Stratix® 10または インテル® Agilex™ FPGAごとに1つのインスタンス |
Partial Reconfiguration External Configuration Controller Intel® FPGA IP | 専用PRピンを介した外部ソース経由の インテル® Stratix® 10および インテル® Agilex™ FPGAパーシャル・リコンフィグレーションをサポートするIPコンポーネント。4 | インテル® Stratix® 10または インテル® Agilex™ FPGAごとに1つのインスタンス、外部コンフィグレーション |
Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IP |
パーシャル・リコンフィグレーション・ビットストリームを インテル® Arria® 10または インテル® Cyclone® 10 GX FPGAに送信する専用のIPコンポーネント。PRビットストリームでは、リコンフィグレーションを実行するために、FPGAのCRAMビットを調整します。 |
インテル® Arria® 10または インテル® Cyclone® 10 GX FPGAごとに1つのインスタンス、内部または外部コンフィグレーション |
Partial Reconfiguration Region Controller Intel® FPGA IP |
PR領域とのハンドシェイクを制御するブロックへの標準 Avalon® Memory Mapped (Avalon-MM) インターフェイスを提供します。PR領域の停止、リセット、および再起動が、PRハンドシェイクに従って行われることを保証します。 |
PR領域ごとに1つのインスタンス |
Avalon-MM Partial Reconfiguration Freeze Bridge Intel® FPGA IP |
Avalon-MMインターフェイスのPR領域にフリーズ機能を提供します。 |
各PR領域の各インターフェイスに1つのインスタンス |
Avalon-ST Partial Reconfiguration Freeze Bridge Intel® FPGA IP |
Avalon® Streaming (Avalon-ST) インターフェイスのPR領域にフリーズ機能を提供します 。 |
各PR領域の各インターフェイスに1つのインスタンス |
2.1. 内部および外部PRホスト・コンフィグレーション
2.2. Partial Reconfiguration Controller Intel FPGA IP
2.2.1. メモリーマップ
名前 | アドレスオフセット | 幅 | アクセス | 説明 |
---|---|---|---|---|
PR_DATA | 0x00 | 32 | Write |
このアドレスへのすべてのデータ 書き込みは、このビットストリームがIPコアに送られることを示します。 幅の設定にはInput data widthパラメーターを使用します。 |
PR_CSR | 0x01 | 32 | 読み出しまたは書き込み | 次のオフセットビットを持つコントロール・ステータス・レジスター :
|
PR_SW_VER | 0x02 | 32 | 読み出し | 読み出し専用SWバージョンレジスター。レジスターは現在0xBA500000です。 |
2.2.2. パラメーター
Partial Reconfiguration Controller Intel® FPGA IPでは、次のパラメーターのカスタマイズをサポートします。
パラメーター |
値 |
説明 |
---|---|---|
Enable Avalon-ST or Avalon-MM slave interface | Avalon-ST/Avalon-MM |
コントローラーのAvalon-STまたはAvalon-MMスレーブ・インターフェイスをイネーブルします。 |
Input data width | <ビット> |
コントローラのデータ・コンジット・インターフェイスのサイズをビット単位で指定します。このIPでサポートするデバイス幅は32と64です。 |
Enable interrupt interface |
Yes/No |
互換性のないビットストリーム CRC_ERROR、PR_ERROR、または正常なパーシャル・リコンフィグレーションを検出するための割り込みアサートをイネーブルします。割り込み時に PR_CSR[4:2] のステータスを照会します。1 を PR_CSR[5] に書き込み、割り込みをクリアします。必ずAvalon-MMスレーブ・インターフェイスと一緒に使用してください。 |
Enable protocol error | CSRレジスターからエラービットを読み出します。 |
2.2.3. ポート
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
reset |
1 |
入力 |
PR Controller IPコアの非同期リセット。パーシャル・リコンフィグレーション動作中にPR Controller IPコアをリセットすると、デバイスがロックアップする可能性があります。 |
clk |
1 |
入力 |
PR Controller IPコア用への入力クロック 入力クロックはフリーランニングでなければなりません。IPコアの最大クロック周波数は200 MHzです。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
pr_start |
1 |
入力 |
このポートに到達した信号がHighにアサートされると、PRイベントが開始されます。PR動作が終了する前に、この信号を最低1クロックサイクルの間Highにアサートし、Lowにデアサートする必要があります。 |
avst_sink_data[] |
32|64 |
入力 |
Avalon-STデータ信号。clk 信号の立ち上がりエッジと同期します。Input data width パラメーターでこのポート幅を指定します。 |
avst_sink_valid |
1 |
入力 |
Avalon-STデータ有効信号。avst_sink_data ポートに有効なデータが含まれていることを示します。 |
avst_sink_ready |
1 |
出力 |
Avalon-STレディ信号。デバイスが、avst_sink_valid 信号がHighにアサートされるときはいつでも avst_sink_data ポートのストリーミング・データを読み出す準備ができていることを示します。このポートがLowの場合は、有効データの送信を停止します。 |
status[2..0] |
3 |
出力 |
3ビットのエラー出力。PRイベントのステータスを示します。出力が次のようにHighにラッチされると、出力をリセットできるのは、次のPRイベントの開始時のみです。 3’b000 – power-up nreset asserted 3’b001 – configuration system is busy 3’b010 – PR operation is in progress 3’b011 – PR operation successful 3’b100 – PR_ERROR is triggered 3’b101 – Reserved 3'b110 – Reserved 3'b111 – Reserved |
protocol_error | 1 | 出力 | CSRレジスターからエラービットを読み出します。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
avmm_slave_address |
4 |
入力 |
ワード・アドレッシング単位のAvalon-MMアドレスバス。 |
avmm_slave_read |
1 |
入力 |
Avalon-MM読み出し制御。 |
avmm_slave_readdata |
32 |
出力 |
Avalon-MM読み出しデータバス。 |
avmm_slave_write |
1 |
入力 |
Avalon-MM書き込み制御。 |
avmm_slave_writedata |
32 |
入力 |
Avalon-MM書き込みデータバス。 |
avmm_slave_waitrequest |
1 |
出力 |
アサートされると、IPがビジー状態であり、読み出しまたは書き込みに対応できないことを示します。 |
irq |
1 |
出力 |
Enable interrupt interfaceパラメーターをイネーブルしたときの割り込み信号。 |
2.2.4. タイミング仕様
2.3. Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IP
2.3.1. スレーブ・インターフェイス
Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPで提供するAvalon-MMスレーブ・インターフェイスでは、PRコンフィグレーション・レジスターに対する読み出しおよび書き込みを行います。
名前 | アドレスオフセット | アクセス | 説明 |
---|---|---|---|
PR_DATA | 0x00 | 書き込み |
このアドレスへのすべてのデータ write は、このビットストリームがIPコアに送られることを示します。 read このアドレスで実行すると、すべて0が返されます。 |
PR_CSR | 0x01 | 読み出しまたは書き込み | コントロール・レジスターおよびステータスレジスター。 |
Version Register | 0x02 | 読み出し専用 |
読み出し専用SWバージョンレジスター。レジスターは現在0xAA500003です。 |
PR Bitstream ID | 0x03 | 読み出し専用 | 読み出し専用PR POF IDレジスター。 |
ビットオフセット | 説明 |
---|---|
0 |
pr_start 信号のコントロール・レジスターを読み書きします。pr_start 信号の詳細に関してはポート を参照してください。 pr_start = PR_CSR[0] IPによって PR_CSR[0] が値0に自動アサートされるのは、PR_CSR[0] がアサートしてから1クロックサイクル後です。これにより、 このレジスターの手動アサートおよびデアサートを回避するフローが合理化され、pr_start 信号を制御します。 |
1 | 予約済み。 |
2-4 |
status[2:0] 信号の読み出し専用ステータスレジスター。 PR_CSR[4:2] = status[2:0] ステータス信号の詳細については、ポート を参照してください。 |
5 |
割り込みのためのビットの読み出しおよびクリア。 割り込みインターフェイスをイネーブルした場合、このビットを読み出すと、irq 信号の値が返されます。1を書き込むと、割り込みがクリアされます。 割り込みインターフェイスをディスエーブルした場合、このビットを読み出すと常に値0が返されます。 |
0-31 | 予約済みビット。Avalon-MMデータバス幅に依存します。 |
2.3.2. リコンフィグレーション・シーケンス
- Avalon-MMマスター・コンポーネントでは、0x01 をIPアドレスオフセット0x1に書き込み、PR動作をトリガーします。
- 必要に応じて、ステータスレジスターをPR Operation in Progressになるまでポーリングします。ポーリングを行わない場合、最初のワードは waitrequest になります。
- Avalon-MMマスター・コンポーネントでは、PRビットストリームがすべて書き込まれるまで、PRビットストリームをIPアドレスオフセット0x0に書き込みます。拡張解凍がオンの場合、waitrequest は、PR動作中はアクティブになります。マスターでスレーブ・インターフェイスからの waitrequest を処理できることを確認します。
- Avalon-MMマスター・コンポーネントは、IPアドレスオフセット0x1からデータを読み出し、status[2:0] 値を確認します。必要に応じて、Avalon-MMマスター・コンポーネントは、このIPのstatus[2:0] をPR動作中に読み出し、PR_ERROR などの初期障害を検出します。
2.3.3. 割り込みインターフェイス
IPコアによって次のイベント中に irq がアサートされます。
ステータスコード | イベント |
---|---|
3'b001 | PR_ERROR が発生しました。 |
3'b010 | CRC_ERROR が発生しました。 |
3'b011 | IPコアは、互換性のないビットストリームを検出します。 |
3'b101 | 正常なPR動作の結果。 |
IRQ がアサートすると、マスターでは次のうち1つ以上を実行します。
- PR IPコアのステータスを照会します。PR_CSR[4:2]。
- エラーレポートなどのアクションを実行します。
- 割り込みが処理されたら、「1」を PR_CSR[5] に書き込んで割り込みをクリアします。
2.3.4. パラメーター
Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPでは、次のパラメーターのカスタマイズをサポートします。
パラメーター |
値 |
説明 |
---|---|---|
Use as partial reconfiguration internal host | On|Off |
コントローラーを内部ホストとして使用できるようにします。このオプションをイネーブルすると、prblock および crcblock WYSIWYGがデザインの一部として自動インスタンス化されます。コントローラーを外部ホストとして使用するには、このオプションをディスエーブルします。追加のインターフェイス信号を専用パーシャル・リコンフィグレーション・ピンに接続します。 |
Enable JTAG debug mode | On|Off |
インテル® Quartus® Prime Programmerによるコントローラーへのアクセスをイネーブルして、JTAGインターフェイスを介したパーシャル・リコンフィグレーションに使用します。 |
Enable Avalon-MM slave interface | On|Off | コントローラーのAvalon-MMスレーブ・インターフェイスをイネーブルします。この設定がOffの場合、IPコントローラーでは、コンジット・インターフェイスをイネーブルします。 |
Enable interrupt interface | On|Off | 割り込みアサートをイネーブルし、互換性のないビットストリーム CRC_ERROR、PR_ERROR、または正常なパーシャル・リコンフィグレーションを検出します。割り込み時に PR_CSR[4:2] のステータスを照会します。PR_CSR[5] に 1 を 書き込み、割り込みをクリアします。必ずAvalon-MMスレーブ・インターフェイスと一緒に使用してください。 |
Enable freeze interface | On|Off |
コントローラーのシングルビット・フリーズ・インターフェイスをイネーブルします。このインターフェイスは、パーシャル・リコンフィグレーション動作のために、デザインの任意の領域がアクティブであるか、フリーズされているかを識別します。このインターフェイスをオフのままにして、Partial Reconfiguration Region Controller IPからフリーズ・インターフェイスを使用します。 |
Enable bitstream compatibility check | On|Off |
外部ホストからのパーシャル・リコンフィグレーション動作中のビットストリームの互換性チェックをイネーブルします。ビットストリーム互換性チェックは、内部ホストによるパーシャル・リコンフィグレーションを使用すると自動的にイネーブルになります。外部ホストによるパーシャル・リコンフィグレーションに対してこのオプションをイネーブルする場合、パーシャル・リコンフィグレーション・ビットストリームID値を指定します。 |
PR bitstream ID | <32ビット整数> |
外部ホストのパーシャル・リコンフィグレーション・ビットストリームIDの符号付き32ビット整数値を指定します。この値はCompilerによりターゲットのパーシャル・リコンフィグレーション・デザインにに対して生成されるパーシャル・リコンフィグレーション・ビットストリームIDと一致させてください。Assembler レポート (.asm.rpt) でターゲットのパーシャル・リコンフィグレーション・デザイン・ビットストリームIDを見つけます。 |
Input data width | 1|8|16|32 |
コントローラーのデータ・コンジット・インターフェイスのサイズをビット単位で指定します。エラー検出CRCの要件 を参照してください 。 |
Clock-to-data ratio | 1|4|8 |
パーシャル・リコンフィグレーション・ビットストリームのデータタイプに対応するclock-to-data比を指定します。 ビットストリーム暗号化のclock-to-data (CD) 比と圧縮の有効な組み合わせの表を参照してください。 |
Divide error detection frequency by | 1..256 |
内部クロックの除算値を指定します。この値によって、エラー検出CRCの頻度が決まります。除算値は2の累乗にしてください。デバイスのドキュメントを参照して、選択したデバイスの内部クロックの周波数を確認します。エラー検出CRCの要件 を参照してください。 |
Enable enhanced decompression | On|Off |
パーシャル・リコンフィグレーション・ビットストリームの拡張解凍をイネーブルします。 注: 拡張解凍は、暗号化とは同時に使用できません。拡張解凍が使用可能なのは、Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 FPGA IPのみです。
|
パラメーター |
値 |
説明 |
---|---|---|
Auto-instantiate partial reconfiguration control block | On|Off |
パーシャル・リコンフィグレーション制御ブロックをコントローラーに自動的に含めます。コントローラーを内部ホストとして使用する場合は、このオプションをディスエーブルし、パーシャル・リコンフィグレーション・ブロックを他のIPコアと共有します。パーシャル・リコンフィグレーション制御ブロックを手動でインスタンス化し、関連する信号をコントローラーに接続することもできます。 |
Auto-instantiate CRC block | On|Off | コントローラー内にCRCブロックを自動的に含めます。同じPRデザインでSingle Event Upset (SEU) IPを使用する予定がない場合は、このオプションをイネーブルのままにしておきます。このオプションをディスエーブルすると、IP生成によって crc_error_pin がエクスポートされ、手動でインスタンス化した外部CRCブロックへの手動接続に使用されます。このオプションをディスエーブルして、エクスポートされた crc_error_pin をフローティングのままにしておくと、予期しない crc_error_pin が原因でPR動作が不確定になります。 |
Generate timing constraints file | On|Off |
適切なSynopsys Design Constraints (.sdc) ファイルを自動生成し、コントローラーのタイミングを制約します。タイミング制約を別のファイルで提供する場合は、このオプションをディスエーブルします。 |
2.3.4.1. エラー検出CRCの要件
PR IP入力データ幅 | コンフィグレーション・モード | Enable Error Detection Check | PRサポート |
---|---|---|---|
1、8、16 | Passive Parallel x1、x8、x16 | オフ | サポートあり |
1、8、16 | Passive Parallel x1、x8、x16 | オン | Divide error detection frequency byのいずれの値でもサポートあり |
32 | Passive Parallel x1、x8、x16 | オフ | サポートなし |
32 | Passive Parallel x1、x8、x16 | オン | Divide error detection frequency by の値が2または4の場合のみサポートあり |
1、8、16、32 | Passive Parallel x32 | オフ | サポートあり |
1、8、16、32 | Passive Parallel x32 | オン | Divide error detection frequency byのいずれの値でもサポートあり |
2.3.5. ポート
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
nreset |
1 |
入力 |
PR Controller IPコアの非同期リセット。パーシャル・リコンフィグレーション動作中にPR Controller IPコアをリセットすると、撤回シーケンスが開始されます。 |
clk |
1 |
入力 |
PR Controller IPコアへのユーザー入力クロック。IPコアの最大クロック周波数は100MHzです。 IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
freeze |
1 |
出力 |
アクティブHigh信号。パーシャル・リコンフィグレーションが行われている領域のPRインターフェイス信号をフリーズします。この信号のデアサートは、PR動作の終了を示します。 Partial Reconfiguration Controller IP freeze 信号ではなくPartial Reconfiguration Region Controller IPを使用します。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
pr_start |
1 |
入力 |
このポートでの 0 から 1 への遷移により、PRイベントが開始されます。少なくとも1クロックサイクルの間、この信号をHighにアサートし、PR動作が終了する前にLowに信号をデアサートする必要があります。この動作により、PR Controller IPコアでは、freeze 信号がLowの場合、次の pr_start トリガーイベントを受け入れる準備が整います。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
data[] |
1、8、16、または32 |
入力 |
選択可能な入力PRデータバス幅、x1、x8、x16、またはx32。 PRイベントがトリガーされると、PRイベントが clk 信号の立ち上がりエッジと同期するのは、data_valid 信号がHighで、data_ready 信号がHighの場合です。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
data_valid |
1 |
入力 |
このポートでの 0 から 1 への遷移は、data[] ポートに有効なデータが含まれていることを示します。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
data_ready |
1 |
出力 |
このポートでの 0 から 1 への遷移は、data_valid 信号がHighにアサートされたときはいつでも、PR Controller IPコアが data[] ポート上の有効なデータを読み出す準備が整っていることを示します。このポートがLowの場合、データ送信側は有効なデータの送信を停止する必要があります。 この信号は、JTAGデバッグ動作中にLowにデアサートします。 |
status[2..0] |
1 |
出力 |
3ビット出力。PRイベントのステータスを示します。IPによってエラー (PR_ERROR、 CRC_ERROR、または互換性のないビットストリーム・エラー) が検出されると、この信号はHighにラッチします。この信号がリセットされるのは、次のPRイベントの開始時のみで、pr_start がHighで、freeze がLowの場合です。例 : 3’b000 – power-up or nreset asserts 3’b001 – PR_ERROR triggers 3’b010 – CRC_ERROR triggers 3’b011 – Incompatible bitstream error detection 3’b100 – PR operation in progress 3’b101 – PR operation passes 3'b110 – Reserved bit 3'b111 – Reserved bit |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
avmm_slave_address |
4 |
入力 |
Avalon-MMアドレスバス。アドレスバスはワード・アドレッシング単位です。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
avmm_slave_read | 1 |
入力 |
Avalon-MM読み出し制御。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
avmm_slave_readdata | 32 |
出力 |
Avalon-MM読み出しデータバス。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
avmm_slave_write | 1 |
入力 |
Avalon-MM書き込み制御。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
avmm_slave_writedata | 32 |
入力 |
Avalon-MM書き込みデータバス。 PR Controller IPコアでは、JTAGデバッグ動作中はこの信号を無視します。 |
avmm_slave_waitrequest | 1 |
出力 |
IPがビジーであることを示します。また、IPコアが読み出しまたは書き込み要求に応答できないことを示します。 IPコアでは、JTAGデバッグ動作中にこの信号をHighに引き上げます。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
irq |
1 |
出力 |
割り込み信号。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
crc_error_pin |
1 |
入力 |
PR Controller IPコアをExternal Hostとして使用する場合に使用可能です。このポートをパーシャル・リコンフィグレーション中のFPGAの専用 CRC_ERROR ピンに接続します。 |
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
pr_ready_pin |
1 |
入力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 PR_READY ピンに接続します。 |
pr_error_pin |
1 |
入力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 PR_ERROR ピンに接続します。 |
pr_done_pin |
1 |
入力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 PR_DONE ピンに接続します。 |
pr_request_pin |
1 |
出力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 PR_REQUEST ピンに接続します。 |
pr_clk_pin |
1 |
出力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 DCLK ピンに接続します。 |
pr_data_pin[31..0] |
16|32 |
出力 |
このポートをパーシャル・リコンフィグレーション中のFPGAの専用 DATA[31..0] ピンに接続します。 |
2.3.6. タイミング仕様
次の注記は、タイミング図の (1) から (7) までの位置に対応しています。
- pr_start 信号を少なくとも1クロックサイクルの間HighにアサートしてPRを開始します。最後のデータを送信する前に、pr_start をデアサートしてください。
- status[] 信号は、pr_start が確認された後に更新されます。この信号がPR動作中に変化するのは、CRC_ERROR、PR_ERROR、またはビットストリームの非互換性エラーが発生した場合です。
- status[] 信号がPR動作後に変化するのは、CRC_ERROR がアサートされ、前回のPR動作中にエラーが発生しなかった場合です。
- data_valid 信号は、pr_start 信号と同時にアサートする必要はありません。適切な時に data[] を提供し、data_valid をアサートします。
- 最後のデータを送信した後に data_valid 信号をLowに駆動します。または、data[] のダミーデータを使用し、IPがPRの終わりを status[] から読み出すまで data_valid をHighにアサートし続けます。
- data[] が転送されるのは、data_valid および data_ready が同じサイクルでアサートされる場合のみです。data_valid および data_ready の両方がHighではない場合、データバス上の新しいデータを駆動しないでください。
- data_ready 信号がLowに駆動されるのは、PR IP Controllerコアで最後のデータを受信した後、またはPR IP Controllerではデータの受け入れができない場合です。
2.3.7. PR制御ブロックおよびCRCブロックVerilog HDLの手動インスタンス化
Partial Reconfiguration Controller Intel Arria 10/Cyclone 10 IPにはPR制御ブロックが含まれています。ただし、独自のカスタムロジックを作成してIPコアの機能を実行する場合は、制御ブロックを手動でインスタンス化し、FPGAシステムと通信します。
次の例では、最上位の インテル® Arria® 10 PRプロジェクト内のPR制御ブロックである Chip_Top をVerilog HDLでインスタンス化します。
Chip_Top: module Chip_Top ( //User I/O signals (excluding PR related signals) .. .. //PR interface and configuration signals declaration wire pr_request; wire pr_ready; wire pr_done; wire crc_error; wire dclk; wire [31:0] pr_data; twentynm_prblock m_pr ( .clk (dclk), .corectl (1'b1), .prrequest(pr_request), .data (pr_data), .error (pr_error), .ready (pr_ready), .done (pr_done) ); twentynm_crcblock m_crc ( .clk (clk), .shiftnld (1'b1), .crcerror (crc_error) ); endmodule
Error Message Register (EMR) を読み出すためのポート接続の詳細に関しては、AN539: Test Methodology of Error Detection and Recovery using CRCを参照してください。
2.3.8. PR制御ブロックおよびCRCブロックのVHDL手動インスタンス化
次に示す例は、最上位の インテル® Arria® 10 プロジェクト内のPR制御ブロックである Chip_Top のVHDLでの手動インスタンス化です。
module Chip_Top is port ( --User I/O signals (excluding signals that relate to PR) .. .. ) -- Following shows the connectivity within the Chip_Top module Core_Top : Core_Top port_map ( .. .. ); m_pr : twentynm_prblock port map( clk => dclk, corectl =>'1', --1 - when using PR from inside --0 - for PR from pins; You must also enable -- the appropriate option in Quartus Prime settings prrequest => pr_request, data => pr_data, error => pr_error, ready => pr_ready, done => pr_done ); m_crc : twentynm_crcblock port map( shiftnld => '1', --If you want to read the EMR register when clk => dummy_clk, --error occurrs, refer to AN539 for the --connectivity for this signal. If you only want --to detect CRC errors, but plan to take no --further action, you can tie the shiftnld --signal to logical high. crcerror => crc_error );
2.3.8.1. PR制御ブロックおよびCRCブロックのVHDLコンポーネント宣言
- 次のサンプルコードを使用します。このコードには、VHDLのコンポーネント宣言が含まれています。このコードによって、コア内 (Core_Top 内のコードブロック) からのPR機能を実行します。
module Chip_Top is port ( --User I/O signals (excluding signals that relate to PR) .. .. ) -- Following shows the connectivity within the Chip_Top module Core_Top : Core_Top port_map ( .. .. ); m_pr : twentynm_prblock port map( clk => dclk, corectl =>'1', --1 - when using PR from inside --0 - for PR from pins; You must also enable -- the appropriate option in Quartus Prime settings prrequest => pr_request, data => pr_data, error => pr_error, ready => pr_ready, done => pr_done ); m_crc : twentynm_crcblock port map( shiftnld => '1', --If you want to read the EMR register when clk => dummy_clk, --error occurrs, refer to AN539 for the --connectivity forthis signal. If you only want --to detect CRC errors, but plan to take no --further action, you can tie the shiftnld --signal to logical high. crcerror => crc_error );
注: このVHDLの例は、Verilog HDLのインスタンス化に対応しています。 - ポートを Core_Top に追加し、両方のコンポーネントに接続します。
- PR制御ブロックをデザインの残りの部分に接続する場合は、次の規則に従います。
- corectl 信号の設定は、コアからのパーシャル・リコンフィグレーションを使用する場合は「1」 にし、ピンからのパーシャル・リコンフィグレーションを使用する場合は「0」にします。
- corectl は、Enable PR pinsオプション設定と一致させます。Device and Pin Optionsダイアログボックス (Assignments > Device > Device and Pin Options) で設定します。
- パーシャル・リコンフィグレーションをピンから行う場合は、Fitterでは、PRの未割り当てピンを自動的に割り当てます。すべての専用PRピンのアサインメントをPin Planner (Assignments > Pin Planner) またはAssignment Editor (Assignments > Assignment Editor) を使用して行います。
- パーシャル・リコンフィグレーションをコアロジックから行う場合は、prblock 信号をコアロジックまたはI/Oピン (DCLK などの専用プログラミングピンを除く) に接続します。
2.3.9. PR制御ブロック信号
信号 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
pr_data | [31:0] | 入力 |
コンフィグレーション・ビットストリームを運びます。 |
pr_done | 1 | 出力 | PRプロセスが完了したことを示します。 |
pr_ready | 1 | 出力 | 制御ブロックが制御ロジックからのPRデータを受け入れる準備ができていることを示します。 |
pr_error | 1 | 出力 | パーシャル・リコンフィグレーションのエラーを示します。 |
pr_request | 1 | 入力 | PRプロセスの開始準備ができていることを示します。 |
corectl | 1 | 入力 |
パーシャル・リコンフィグレーションを内部で実行するか、ピンを介して行うかを決定します。 |
- コンフィグレーション幅は8、16、または32ビットを指定します。ただし、インターフェイスでは常に32ピンを使用します。
- すべての入力および出力は、PR クロック (clk) に非同期です。data 信号は例外です。 data 信号は clk 信号と同期しています。
- PRクロックはフリーランニングでなければなりません。
- data 信号は、ready 信号の待機中は0でなければなりません。
2.3.9.1. PR制御ブロック信号のタイミング図
PRセッションの成功例 (インテルArria 10の例)
次のフローで、 インテル® Arria® 10 PRセッションの成功例について説明します。
- PR_REQUEST をアサートし、PR_READY を待機します。PR_DATA を0に駆動します。
- 制御ブロックで clk に非同期の PR_READY をアサートします。
- Raw Binary File (.rbf) をPR制御ブロックに送信します。1クロックサイクルごとに有効なワードを1つ送信します。.rbf ファイルの転送が完了したら、PR_DATA を0に設定します。PR制御ブロックによるリコンフィグレーション動作が完了すると、PR制御ブロックでは、PR_DONE を非同期にアサートします。PR制御ブロックでは、PR_READY をコンフィグレーション完了時にデアサートします。
- PR_REQUEST をデアサートします。PR制御ブロックでは、PR_REQUEST の終了を確認し、PR_DONE をデアサートします。これでホストでは、別のPRセッションを開始することができます。
コンフィグレーション・フレームのリードバック・エラーを伴うPRセッションの失敗例 (インテルArria 10の例)
- PR制御ブロックにより、CRCエラーを内部で検出します。
- CRC制御ブロックにより CRC_ERROR をアサートします。
- PR制御ブロックにより PR_ERROR をアサートします。
- PR制御ブロックにより PR_READY をデアサートし、ホストにより PR_REQUEST を撤回できるようにします。
- PR制御ブロックにより CRC_ERROR をデアサートし、内部 CRC_ERROR 信号をクリアし、新しいPRセッションの準備をします。これでホストは、別のPRセッションを開始できます。
PR_ERRORを伴うPRセッションの失敗例 (インテルArria 10の例)
次のフローでは、伝送エラーまたはコンフィグレーションCRCエラーを伴う インテル® Arria® 10 PRセッションについて説明します。
- PR制御ブロックにより PR_ERROR をアサートします。
- PR制御ブロックにより PR_READY をデアサートし、ホストにより PR_REQUEST を撤回できるようになります。
- PR制御ブロックにより PR_ERROR をデアサートし、新しいPRセッションの準備をします。これで、ホストは別のPRセッションを開始できます。
遅い撤回PRセッション (インテルArria 10の例)
次のフローでは、遅い撤回 インテル® Arria® 10 PRセッションの成功例について説明します。
- PRホストによる要求の撤回は、PR制御ブロックによる PR_READY のアサート後に行うことができます。
- PR制御ブロックにより PR_ERROR をデアサートします。これで、ホストは別のPRセッションを開始できます。
2.3.10. インテルArria 10または インテル Cyclone 10 GXデザイン向け外部ホストのコンフィグレーション
デザインに外部ホストを使用するには、次を実行します。
- Assignments > Device > Device & Pin Optionsをクリックします。
-
Device & Pin Options ダイアログボックスでEnable PR Pinsオプションを選択します。このオプションによって、特殊なパーシャル・リコンフィグレーション・ピンが自動作成され、デバイスのピンアウトにピンが定義さます。また、このオプションでにより、ピンはPR制御ブロックの内部パスに自動的に接続されます。注: このオプションを選択しない場合は、内部ホストまたはHPSホストを使用してください。ピンの定義は、デザインの最上位エンティティーで行う必要はありません。
- この最上位ピンを PR制御ブロック内の特定のポートに接続します。
次の表は、Enable PR Pinsをオンにしたときに自動的に制約されるPRピンと、そのピンに対する特定のPR制御ブロックのポート接続の一覧です。
ピン名 | タイプ | 制御ブロックのポート名 | 説明 |
---|---|---|---|
PR_REQUEST | 入力 | prrequest | このピンのロジックHighは、PRホストがパーシャル・リコンフィグレーションを要求していることを示します。 |
PR_READY | 出力 | ready | このピンのロジックHighは、PRホストがパーシャル・リコンフィグレーションを開始する準備ができていることを示します。 |
PR_DONE | 出力 | done | このピンのロジックHighは、パーシャル・リコンフィグレーションが完了したことを示します。 |
PR_ERROR | 出力 | error | このピンのロジックHighは、パーシャル・リコンフィグレーション中にデバイスでエラーが発生したことを示します。 |
DATA[31:0] | 入力 | data | このピンは、PR_DATA への接続性を提供し、PRビットストリームをPRコントローラーに転送します。 |
DCLK | 入力 | clk | 同期 PR_DATA を受け取ります。 |
- PR_DATA の幅は8、16、または32ビットにすることができます。
- PR制御ブロックの corectl ポートを0に接続していることを確認してください。
外部ホストPRのVerilog RTL
module top( // PR control block signals input logic pr_clk, input logic pr_request, input logic [31:0] pr_data, output logic pr_error, output logic pr_ready, output logic pr_done, // User signals input logic i1_main, input logic i2_main, output logic o1 ); // Instantiate the PR control block twentynm_prblock m_prblock ( .clk(pr_clk), .corectl(1'b0), .prrequest(pr_request), .data(pr_data), .error(pr_error), .ready(pr_ready), .done(pr_done) ); // PR Interface partition pr_v1 pr_inst( .i1(i1_main), .i2(i2_main), .o1(o1) ); endmodule
外部ホストPRのVHDL RTL
library ieee; use ieee.std_logic_1164.all; entity top is port( -- PR control block signals pr_clk: in std_logic; pr_request: in std_logic; pr_data: in std_logic_vector(31 downto 0); pr_error: out std_logic; pr_ready: out std_logic; pr_done: out std_logic; -- User signals i1_main: in std_logic; i2_main: in std_logic; o1: out std_logic ); end top; architecture behav of top is component twentynm_prblock is port( clk: in std_logic; corectl: in std_logic; prrequest: in std_logic; data: in std_logic_vector(31 downto 0); error: out std_logic; ready: out std_logic; done: out std_logic ); end component; component pr_v1 is port( i1: in std_logic; i2: in std_logic; o1: out std_logic ); end component; signal pr_gnd : std_logic; begin pr_gnd <= '0'; -- Instantiate the PR control block m_prblock: twentynm_prblock port map ( pr_clk, pr_gnd, pr_request, pr_data, pr_error, pr_ready, pr_done ); -- PR Interface partition pr_inst : pr_v1 port map ( i1_main, i2_main, o1 ); end behav;
2.4. Partial Reconfiguration External Configuration Controller Intel FPGA IP
外部コンフィグレーションを使用する場合、Partial Reconfiguration External Configuration Controller Intel FPGA IPのすべての最上位ポートを pr_request および status ピンに接続し、ホストとのハンドシェイクが、 インテル® Stratix® 10または インテル® Agilex™ からのSDMを使用してできるようにしてください。 SDMにより、どのタイプのコンフィグレーション・ピンを使用するかが MSEL の設定に従って決まります。
2.4.1. パラメーター
Partial Reconfiguration External Configuration Controller Intel FPGA IPでは、次のパラメーターのカスタマイズをサポートします。
パラメーター |
値 |
説明 |
---|---|---|
Enable Busy Interface |
On/Off |
BusyインターフェイスをEnableまたはDisableにすることができます。これにより、外部コンフィグレーション中にPR処理が進行中であることを示す信号がアサートされます。 |
2.4.2. ポート
ポート名 | 幅 | 入力/出力 | 機能 |
---|---|---|---|
pr_request | 1 | 入力 | PRプロセスの開始準備ができていることを示します。この信号は、どのクロック信号にも同期しないコンジットです。 |
pr_error | 1 | 出力 | リコンフィグレーション・エラーを示します。この信号は、どのクロック信号にも同期しないコンジットです。 |
pr_done | 1 | 出力 | PRプロセスが完了したことを示します。この信号は、どのクロック信号にも同期しないコンジットです。 |
start_addr | 1 | 入力 | アクティブ・シリアル・フラッシュのPRデータの開始アドレスを指定します。この信号をイネーブルするには、次のいずれかを選択します。 Avalon-ST または アクティブシリアルをEnable Avalon-ST Pins or Active Serial Pinsパラメーターに対して選択します。この信号は、どのクロック信号にも同期しないコンジットです。 |
reset | 1 | 入力 | アクティブHighの同期リセット信号。 |
out_clock | 1 | 出力 | 内部オシレーターから生成されるクロックソース。 |
busy | 1 | 出力 |
IPでこの信号をアサートして、PRデータ転送が進行中であることを示します。この信号をイネーブルするには、EnableをEnable busy interfaceパラメーターに対して選択します。 |
2.4.3. インテルStratix 10または インテル Agilex デザイン向け外部ホストのコンフィグレーション
パーシャル・リコンフィグレーションを正常に行うため、外部ホストからハンドシェイク信号に適切に応答する必要があります。システムレベルのパーシャル・リコンフィグレーションを調整するために、パーシャル・リコンフィグレーション用に正しいPR領域を準備します。リコンフィグレーション後、PR領域を動作状態に戻します。
インテル® Stratix® 10または インテル® Agilex™ デザインの外部ホストのコンフィグレーションを行うには、次の手順に従います。
- Partial Reconfiguration External Configuration Controller Intel FPGA IPをパラメーター化して生成します。これについては、IPコアの生成 (インテルQuartus Primeプロ・エディション) で説明します。
- Partial Reconfiguration External Configuration Controller pr_request、pr_done、および pr_error 信号を最上位ピンに接続して、外部ホストによる制御および監視を行います。ピン位置を割り当てるには、Assignments > Pin Plannerをクリックします。
- Assignments > Deviceをクリックし、Device & Pin Optionsボタンをクリックします。
- CategoryのリストでConfigurationをクリックします。
- Configuration schemeで、完全なデバイス・コンフィグレーションと一致するスキームを選択します。例えば、デバイス・コンフィグレーション全体でAVSTx32スキームを使用している場合は、PRコンフィグレーションでAVSTx32を使用してください。このオプションでは、ユーザーモード中に、パーシャル・リコンフィグレーション専用のAvalon-STコンフィグレーション・ピンが自動的に予約されます。このピンは、完全なデバイス・コンフィグレーションに使用するAvalon-STピンと全く同じものです。
次の表では、外部ホストで使用するPRピンについて説明します。Avalon-STピンへのPRストリーミングは、バックプレッシャーを伴うデータ転送用にAvalon-STに準拠している必要があります。
ピン名 | タイプ | 説明 |
---|---|---|
pr_request | 入力 | Partial Reconfiguration External Configuration Controller IPに接続されたユーザー割り当てポート。このピンのロジックHighは、PRホストがパーシャル・リコンフィグレーションを要求していることを示します。 |
pr_done | 出力 | Partial Reconfiguration External Configuration Controller IPに接続されたユーザー割り当てポート。このピンのロジックHighは、パーシャル・リコンフィグレーションが完了したことを示します。 |
pr_error | 出力 | Partial Reconfiguration External Configuration Controller IPに接続されたユーザー割り当てポート。このピンのロジックHighは、パーシャル・リコンフィグレーション中にデバイスでエラーが発生したことを示します。 |
avst_data: avstx8 - [7:0] avstx16 - [15:0] avstx32 - [31:0] |
入力 | このピンでは、外部ホストに接続性を提供し、PRビットストリームをSDMに転送します。avstx8 データピンはSDM I/Oの一部です。avstx16 および avstx32 データピンは、I/O 48バンク3Aからのものです。 |
avst_clk | 入力 | Avalon-STインターフェイスをクロックします。avst_data および avst_valid は、avst_clk と同期しています。avstx8 clkピンは、SDM I/O の一部です。avstx16 および avstx32 I/O 48バンク3Aからのものです。 |
avst_valid | 入力 |
このピンのロジックHighは、avst_data データが有効なデータであることを示しています。avstx8 のデータピンはSDM I/Oの一部です。avstx16 および avstx32 データピンは、I/O 48バンク3Aからのものです。 |
avst_ready | 出力 | このピンのロジックHighは、SDMによる外部ホストからのデータ受け入れ準備ができていることを示します。この出力はSDM I/Oの一部です。 |
2.5. Partial Reconfiguration Region Controller Intel FPGA IP
IP Component | 説明 |
---|---|
Freeze Control and Status Register | freeze 出力信号を生成するステータスレジスターをフリーズします。 |
Freeze Control Block | PRハンドシェイクを実行し、PR領域をリセットします。 |
Conduit Splitter | コントローラーの freeze 信号を1つ以上のFreeze Bridgeコンポーネントに接続します。Freeze Control Blockから freeze を受信し、freeze 入力信号を1つ以上の freeze 出力信号に割り当てます。 |
Conduit Merger | 1つ以上のFreeze Bridgeコンポーネントからの illegal_request 信号をPR Region Controllerに接続します。 illegal_request は、Freeze Bridgeからのシングルビット出力信号です。Conduit Mergerでは、複数のFreeze Bridgeからのシングルビット信号をマルチビット・バスに連結します。Conduit Mergerでは、バスをFreeze Control Blockに接続します。 |
2.5.1. レジスター
名前 | アドレスオフセット | アクセス | 説明 |
---|---|---|---|
freeze_csr_status | 0x00 | 読み出し専用 | ステータスレジスターをフリーズします。 |
csr_ctrl | 0x01 | 読み出しまたは書き込み | フリーズをイネーブルおよびディスエーブルする制御レジスター。 |
freeze_illegal_req | 0x02 | 読み出しまたは書き込み | いずれかのビットがHighの場合、フリーズ状態の間の不正な要求を示します。 |
freeze_reg_version | 0x03 | 読み出し専用 | 読み出し専用バージョンレジスター。レジスターは現在0xAA500003です。 |
ビット | フィールド | アクセス | デフォルト値 | 説明 |
---|---|---|---|---|
31:2 | 予約済み | N/A | 0x0 | 予約済みビット。このビットを読み出すと、常にゼロが返されます。 |
1 | unfreeze_status | 読み出し | 0 |
PR領域が start_ack に戻った後、ハードウェアによりこのビットの設定は1になり、ペルソナの開始が正常に行われたことを示します。 unfreeze_req ビットが低い場合、ハードウェアによりこのビットは0にクリアになります。 ブリッジおよび他のPR領域出力がリセットから解放されると、このビットは1になります。 |
0 | freeze_status | 読み出し | 0 |
PR領域が stop_ack 信号に戻った後、ハードウェアによりこのビットの設定は1になり、PR領域がフリーズ状態に入る準備ができていることを示します。 freeze_req ビットがLowの場合、ハードウェアによりこのビットは0にクリアになります。 ブリッジおよび他のPR領域出力がリセットから解放されると、このビットは0になります。 |
ビット | フィールド | アクセス | デフォルト値 | 説明 |
---|---|---|---|---|
31:3 | 予約済み | 該当なし | 0x0 | 予約済みビット。このビットを読み出すと、常にゼロが返されます。 |
2 | unfreeze_req | 読み出し/書き込み | 0 |
このビットに1を書き込んで、PR領域インターフェイスのフリーズ解除を要求します。 unfreeze_status がHighになった後、ハードウェアによりこのビットは後でクリアになります 。 このビットに0を書き込むと、フリーズ解除要求が終了します。 このビットと freeze_req ビットを同時にアサートしないでください。freeze_req と unfreeze_req の両方を同時にアサートすると、動作は無効になります。 |
1 | reset_req | 読み出し/書き込み | 0 |
1を書き込むと、PRペルソナのリセットが開始します。 0を書き込むと、PRペルソナのリセットが停止します。 |
0 | freeze_req | 読み出し/書き込み | 0 |
このビットに1を書き込むと、PR領域インターフェイスのフリーズが開始します。 freeze_status がHighになった後、ハードウェアによりこのビットはクリアになります 。 このビットがアサートされた後、PR領域が stop_ack に戻らない場合は、このビットに0を書き込んでフリーズ要求を終了します このビットと unfreeze_req ビットを同時にアサートしないでください。freeze_req と unfreeze_req の両方を同時にアサートすると、動作は無効になります。 |
ビット | フィールド | アクセス | デフォルト値 | 説明 |
---|---|---|---|---|
31:n | 予約済み | 該当なし | 0x0 | 予約済みビット。このビットを読み出すと、常にゼロが返されます。 |
n-1:0 | illegal_request | 読み出し/書き込み | 0 |
このバスのいずれかのビットがHighの場合は、Avalon-MMスレーブ・フリーズ・ブリッジがフリーズ状態のとき、スタティック領域マスターによる読み出しまたは書き込みの問題 を示します。フリーズブリッジに不正な要求があるかを識別するために、バス上の各ビットをチェックします。 例えば、illegal_request ビット2がHighの場合、インターフェイス freeze_conduit_in2 に接続するフリーズブリッジで不正な要求が発生したことを示します。 このバスによって割り込み信号をトリガーします。1を書き込むと、このビットはクリアになります。nはブリッジの数です。 |
ビット | フィールド | アクセス | デフォルト値 | 説明 |
---|---|---|---|---|
31:0 | バージョンレジスター | 読み出し専用 | AD000003 | このレジスタービットで示すのは、CSRレジスターのバージョン番号です。現在、CSRレジスターはバージョン0xAD000003です。 |
2.5.2. パラメーター
パラメーター |
値 |
デフォルト |
説明 |
---|---|---|---|
Enable Avalon-MM CSR register | On/Off | On |
PRリージョン・コントローラーのAvalon-MM CSRレジスターをイネーブルします。 このオプションをディスエーブルすると、コンジット・インターフェイスが公開され、CSRブロックがインスタンス化されません。 |
Enable interrupt port for illegal request | On/Off | On |
PRリージョン・コントローラーでの不正な動作に対して割り込みポートをイネーブルします。 |
Number of freeze interfaces | 数字 | フリーズ動作のフリーズ・インターフェイスの数を指定します。各フリーズ・インターフェイスをフリーズブリッジに接続するか、インターフェイスを使用して他のフリーズロジックを制御します。 | |
Enable freeze interface without illegal request port | On/Off | Off | 追加のフリーズ・インターフェイスの作成をイネーブルします。不正なリクエストポートは使用しません。 |
Specify the number of freeze interfaces without illegal request port | 数字 | フリーズ動作の不正なリクエストポートのないフリーズ・インターフェイスの数を指定します。使用可能なのはEnable freeze interface without illegal request portをオンにしたときのみです。 |
2.5.3. ポート
ポート | 幅 | 入力/出力 | 説明 |
---|---|---|---|
clock_clk | 1 | 入力 | IPコア入力クロック。 |
リセット | |||
reset_reset | 1 | 入力 | 同期リセット。 |
avl_csr_addr | 2 | 入力 | Avalon-MMアドレスバス。アドレスバス幅はワード・アドレッシング単位です。 |
avl_csr_read | 1 | 入力 | CSRブロックへのAvalon-MM読み出し制御。 |
avl_csr_write | 1 | 入力 | CSRへのAvalon-MM書き込み制御。 |
avl_csr_writedata | 32 | 入力 | CSRへのAvalon-MM書き込みバス。 |
avl_csr_readdata | 32 | 出力 | CSRからのAvalon-MM読み出しバス。 |
interrupt_sender_irq | 1 | 出力 | 不正な読み出しまたは不正な書き込みによるトリガー。 |
ポート | 幅 | 入力/出力 | 説明 |
---|---|---|---|
pr_handshake_stop_req |
1 | 出力 | この出力のアサートにより、PRペルソナの実行停止を要求します。 |
pr_handshake_stop_ack |
1 | 入力 | この入力の値1により、実行中のPRペルソナの停止と、そのペルソナが新しいペルソナによって置き換えできることを確認します。 |
pr_handshake_start_req |
1 | 出力 | この出力のアサートにより、新しいPRペルソナの実行開始を要求します。 |
pr_handshake_start_ack |
1 | 入力 | この入力の値1により、新しいPRペルソナの実行開始と、pr_handshake_stop_req での実行停止が可能なことを確認します。 |
conduit_control_freeze_req | 1 | 入力 |
このビットに1を書き込むと、PR領域インターフェイスのフリーズが開始します。 |
conduit_control_unfreeze_req | 1 | 入力 | このビットに1を書き込むと、PR領域インターフェイスのフリーズが停止します。 |
conduit_control_freeze_status | 1 | 出力 | このビットがHighの場合、PR領域が正常にフリーズ状態になったことを示します。 |
conduit_control_reset | 1 | 入力 | このビットに1を書き込むと、PR領域をリセットします。 |
conduit_control_unfreeze_status | 1 | 出力 | このビットがHighの場合、PR領域は正常にフリーズ状態を終了します。 |
conduit_control_illegal_req | n | 出力 | このビットがHighの場合、フリーズがアクティブなときにFreeze Bridge IPを介して不正なデータ・トランザクションが発生していることを示します。 |
信号 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
bridge_freeze0_freeze | 1 | 出力 | この出力は、フリーズブリッジIPのフリーズ入力信号に接続するか、他のフリーズロジックを制御します。 (フリーズ・インターフェイスの数に応じて複数のインターフェイスが生成されます。) |
bridge_freeze0_illegal_request | 1 | 入力 | この入力は、Freeze Bridge IPのインスタンスからの illegal_request 出力信号に接続します。 |
2.6. Avalon-MM Partial Reconfiguration Freeze Bridge Intel FPGA IP
インターフェイス接続 | 挙動 |
---|---|
Read request to Avalon-MM slave interface in PR region |
|
Write request to slave interface in PR region |
|
インターフェイス接続 | 挙動 |
---|---|
Read/Write request from Avalon® -MM master interface in PR region (old or new persona) |
|
信号 | Avalon-MMスレーブブリッジ | Avalon-MMマスターブリッジ |
---|---|---|
write | ‘b0 (Lowに固定) | ‘b0 (Lowに固定) |
read | ‘b0 (Lowに固定) | ‘b0 (Lowに固定) |
address | パススルー | パススルー |
writedata | パススルー | パススルー |
readdata | 常に <h’DEADBEEF> を返す | パススルー |
byteenable | パススルー | パススルー |
burstcount | パススルー | パススルー |
beginbursttransfer | ‘b0 (Lowに固定) | ‘b0 (Lowに固定) |
debugaccess | ‘b0 (Lowに固定) | ‘b0 (Lowに固定) |
readdatavalid | 要求がある場合は 'b1を返し、それ以外の場合は 'b0を返す | パススルー |
waitrequest | 要求がある場合は 'b1を返し、それ以外の場合は 'b0を返す | ‘b0 (Lowに固定) |
response | Return ‘b10 always | パススルー |
lock | ‘b0 (Lowに固定) | ‘b0 (Lowに固定) |
writeresponsevalid | 要求がある場合は 'b1を返し、それ以外の場合は 'b0を返す | パススルー |
2.6.1. パラメーター
パラメーター | 値 | 説明 |
---|---|---|
PR region interface Type | Avalon-MM Slave/Avalon-MM Master | PR領域とFreeze Bridgeをインターフェイス接続するためのインターフェイス・タイプを指定します。 |
Enable Freeze port from PR region | On/Off | 各PR領域のすべての出力を既知の定数値にフリーズする freeze ポートをイネーブルします。フリーズすると、スタティック領域内の信号受信器は、パーシャル・リコンフィグレーション処理中に未定義信号を受信できなくなります。ブリッジのフリーズは、PR領域からのこの信号とPRリージョン・コントローラーからのフリーズとの論理和です。 |
Enable the bridge to track unfinished transaction | On/Off | Avalon® インターフェイスをフリーズする前に未完了のトランザクションを追跡するブリッジをイネーブルします。PR領域とスタティック領域の間の Avalon® トランザクションを停止するカスタムロジックがない場合は、このオプションをオンにします。この機能が必要ない場合は、このオプションをディスエーブルして、IPのサイズを小さくします。 |
Enabled Avalon® Interface Signal | Yes/No | 特定のオプションのFreeze Bridgeインターフェイス・ポートをイネーブル (Yes) またはディスエーブル (No) します。 |
Address width | <1-64> | アドレス幅 (ビット単位)。 |
Symbol width | <数字> | データシンボル幅 (ビット単位)。バイト指向のインターフェイスの場合、シンボル幅は8でなければなりません。 |
Number of symbols | <数字> | ワードあたりのシンボル数。 |
Burstcount width | <数字> | バーストカウント幅 (ビット単位)。 |
Linewrap burst | On/Off | Onにすると、バーストのアドレスはインクリメントするのではなくラップします。ラッピングバーストでは、アドレスがバースト境界に到達すると、アドレスは前のバースト境界に戻ります。その結果、IPでは下位ビットのみを使用してアドレス指定します。 |
Constant burst behavior | On/Off | Onにすると、メモリーバーストは一定になります。 |
Burst on burst boundaries only | On/Off | Onにすると、メモリーバーストはアドレスサイズに合わせて調整されます。 |
Maximum pending reads | <数字> | スレーブによってキューに入れることができる保留中の読み出しの最大数。 |
Maximum pending writes | <数字> | スレーブによってキューに入れることができる保留中の書き込みの最大数。 |
Fixed read latency (cycles) | <数字> | 固定レイテンシー・スレーブの読み出しレイテンシーを設定します。readdatavalid 信号を含むインターフェイスでは役立ちません。 |
Fixed read wait time (cycles) | <数字> | waitrequest 信号を使用しないマスター・インターフェイス向け。読み出し待機時間は、マスターが読み出しに応答するまでのサイクル数を示します。タイミングは、マスターによって waitrequest がこのサイクル数アサートされた場合と同じになります。 |
Fixed write wait time (cycles) | <数字> | waitrequest 信号を使用しないマスター・インターフェイス向け。書き込み待機時間は、マスターが書き込みを受け入れるまでのサイクル数を示します。 |
Address type | WORDS/SYMBOLS | スレーブ・インターフェイス・アドレス・タイプをシンボルまたはワードに設定します。 |
2.6.2. インターフェイス・ポート
Avalon-MM Partial Reconfiguration Freeze Bridge IPコアには、次のインターフェイス・ポートがあります。
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
clock | 1 | 入力 | IPの入力クロック。 |
reset_n | 1 | 入力 | IPの同期リセット。 |
freeze_conduit_freeze | 1 | 入力 | この信号がHighの場合、ブリッジは現在のトランザクションを適切に処理してから、Avalon-MM PRインターフェイスをフリーズします。 |
freeze_conduit_illegal_request | 1 | 出力 |
このバスのHighは、不正な要求が、フリーズ状態の間にブリッジに対して発行されたことを示します。 |
pr_freeze_pr_freeze | 1 | 入力 | イネーブルされたPR領域からの freeze ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
slv_bridge_to_pr_read | 1 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への read ポート。 |
slv_bridge_to_pr_waitrequest | 1 | 入力 | オプションのAvalon-MMスレーブブリッジからPR領域への waitrequest ポート。 |
slv_bridge_to_pr_write | 1 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への write ポート。 |
slv_bridge_to_pr_address | 32 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への address ポート。 |
slv_bridge_to_pr_byteenable | 4 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への byteenable ポート。 |
slv_bridge_to_pr_writedata | 32 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への writedata ポート。 |
slv_bridge_to_pr_readdata | 32 | 入力 | オプションのAvalon-MMスレーブブリッジからPR領域への readdata ポート。 |
slv_bridge_to_pr_burstcount | 3 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への burstcount ポート。 |
slv_bridge_to_pr_readdatavalid | 1 | 入力 | オプションのAvalon-MMスレーブブリッジからPR領域への readdatavalid ポート。 |
slv_bridge_to_pr_beginbursttransfer | 1 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への beginbursttransfer ポート。 |
slv_bridge_to_pr_debugaccess | 1 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への debugaccess ポート。 |
slv_bridge_to_pr_response | 2 | 入力 | オプションのAvalon-MMスレーブブリッジからPR領域への response ポート。 |
slv_bridge_to_pr_lock | 1 | 出力 | オプションのAvalon-MMスレーブブリッジからPR領域への lock ポート。 |
slv_bridge_to_pr_writeresponsevalid | 1 | 入力 | オプションのAvalon-MMスレーブブリッジからPR領域への writeresponsevalid ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
slv_bridge_to_sr_read | 1 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への read ポート。 |
slv_bridge_to_sr_waitrequest | 1 | 出力 | Avalon-MMスレーブブリッジからスタティック領域への waitrequest ポート。 |
slv_bridge_to_sr_write | 1 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への write ポート。 |
slv_bridge_to_sr_address | 32 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への address ポート。 |
slv_bridge_to_sr_byteenable | 4 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への byteenable ポート。 |
slv_bridge_to_sr_writedata | 32 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への writedata ポート。 |
slv_bridge_to_sr_readdata | 32 | 出力 | Avalon-MMスレーブブリッジからスタティック領域への readdata ポート。 |
slv_bridge_to_sr_burstcount | 3 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への burstcount ポート。 |
slv_bridge_to_sr_beginbursttransfer | 1 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への beginbursttransfer ポート。 |
slv_bridge_to_sr_debugaccess | 1 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への debugaccess ポート。 |
slv_bridge_to_sr_response | 2 | 出力 | Avalon-MMスレーブブリッジからスタティック領域への response ポート。 |
slv_bridge_to_sr_lock | 1 | 入力 | Avalon-MMスレーブブリッジからスタティック領域への lock ポート。 |
slv_bridge_to_sr_writeresponsevalid | 1 | 出力 | Avalon-MMスレーブブリッジからスタティック領域への writereponsevalid ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
mst_bridge_to_pr_read | 1 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への read ポート。 |
mst_bridge_to_pr_waitrequest | 1 | 出力 | オプションのAvalon-MMマスターブリッジからPR領域への waitrequest ポート。 |
mst_bridge_to_pr_write | 1 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への write ポート。 |
mst_bridge_to_pr_address | 32 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への address ポート。 |
mst_bridge_to_pr_byteenable | 4 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への byteenable ポート。 |
mst_bridge_to_pr_writedata | 32 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への writedata ポート。 |
mst_bridge_to_pr_readdata | 32 | 出力 | オプションのAvalon-MMマスターブリッジからPR領域への readdata ポート。 |
mst_bridge_to_pr_burstcount | 3 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への burstcount ポート。 |
mst_bridge_to_pr_readdatavalid | 1 | 出力 | オプションのAvalon-MMマスターブリッジからPR領域への readdatavalid ポート。 |
mst_bridge_to_pr_beginbursttransfer | 1 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への beginbursttransfer ポート。 |
mst_bridge_to_pr_debugaccess | 1 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への debugaccess ポート。 |
mst_bridge_to_pr_response | 2 | 出力 | オプションのAvalon-MMマスターブリッジからPR領域への response ポート。 |
mst_bridge_to_pr_lock | 1 | 入力 | オプションのAvalon-MMマスターブリッジからPR領域への lock ポート。 |
mst_bridge_to_pr_writeresponsevalid | 1 | 出力 | オプションのAvalon-MMマスターブリッジからPR領域への writeresponsevalid ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
mst_bridge_to_sr_read | 1 | 出力 | Avalon-MMマスターブリッジからスタティック領域への read ポート。 |
mst_bridge_to_sr_waitrequest | 1 | 入力 | Avalon-MMマスターブリッジからスタティック領域への waitrequest ポート。 |
mst_bridge_to_sr_write | 1 | 出力 | Avalon-MMマスターブリッジからスタティック領域への write ポート。 |
mst_bridge_to_sr_address | 32 | 出力 | Avalon-MMマスターブリッジからスタティック領域への address ポート。 |
mst_bridge_to_sr_byteenable | 4 | 出力 | Avalon-MMマスターブリッジからスタティック領域への byteenable ポート。 |
mst_bridge_to_sr_writedata | 32 | 出力 | Avalon-MMマスターブリッジからスタティック領域への writedata ポート。 |
mst_bridge_to_sr_readdata | 32 | 入力 | Avalon-MMマスターブリッジからスタティック領域への readdata ポート。 |
mst_bridge_to_sr_burstcount | 3 | 出力 | Avalon-MMマスターブリッジからスタティック領域への burstcount ポート。 |
mst_bridge_to_sr_readdatavalid | 1 | 入力 | Avalon-MMマスターブリッジからスタティック領域への readdatavalid ポート。 |
mst_bridge_to_sr_beginbursttransfer | 1 | 出力 | Avalon-MMマスターブリッジからスタティック領域への beginbursttransfer ポート。 |
mst_bridge_to_sr_debugaccess | 1 | 出力 | Avalon-MMマスターブリッジからスタティック領域への debugaccess ポート。 |
mst_bridge_to_sr_response | 2 | 入力 | Avalon-MMマスターブリッジからスタティック領域への response ポート。 |
mst_bridge_to_sr_lock | 1 | 出力 | Avalon-MMマスターブリッジからスタティック領域への lock ポート。 |
mst_bridge_to_sr_writeresponsevalid | 1 | 入力 | Avalon-MMマスターブリッジからスタティック領域への writeresponsevalid ポート。 |
2.7. Avalon-ST Partial Reconfiguration Freeze Bridge Intel FPGA IP
インターフェイス・タイプ | 挙動 |
---|---|
Source interface in the PR region with packet transfer (old or new persona) |
|
Source interface in the PR region without packet transfer (old or new persona) | freeze 信号がHighの場合、Freeze Bridgeでは、トランザクションをスタティック領域には送信しません。Freeze Bridgeは、フリーズ状態が解除されるまでアイドル状態のままです。 |
Source interface in the PR region with max_channel > 1 (old or new persona) | 複数のチャネルから未完了のトランザクションを転送する場合、Freeze Bridgeでは channel 値を追跡し、異なるチャネルからのすべてのパケット・トランザクションを終了するため、フリーズ状態の間にendofpacket ビットをアサートします。 |
Source interface in the PR region with ready_latency > 0 (old or new persona) | Freeze Bridgeで endofpacket を駆動する場合、valid、または channel をスタティック領域に出力すると、Freeze Bridgeではready_latency 値を読み出します。ready_latency 値により実際のクロックサイクルを定義するのは、シンク・コンポーネントでデータの準備ができている場合です。 |
インターフェイス・タイプ | 挙動 |
---|---|
Sink interface in PR region |
トランザクションにパケット転送が含まれる場合、freeze 信号がHighになると、Freeze Bridgeでは、未完了のトランザクションが完了するまで、ready 信号をスタティック領域ソースに対してHighに保ちます。 トランザクションにパケット転送が含まれないの場合、freeze 信号がHighになると、Freeze Bridgeでは、ready 信号をフリーズ期間中はLowに保ちます。 illegal_request 信号がHighにアサートされ、現在のトランザクションがエラーであることを示します。 デザインをコンフィグレーションし、illegal_request 信号がHighになった後に、トランザクションのPR領域への送信を停止します。 |
Sink interface in PR region with ready_latency > 0 | Freeze Bridgeで endofpacket を駆動する場合、valid、または channel をPR領域に出力すると、Freeze Bridgeではready_latency 値に従う必要があります。ready_latency 値により実際のクロックサイクルを定義するのは、シンク・コンポーネントでデータの準備ができている場合です。 |
2.7.1. パラメーター
パラメーター | 値 | 説明 |
---|---|---|
PR region Interface Type | Avalon-ST Source/Avalon-ST Sink | PR領域とFreeze Bridgeをインターフェイス接続するインターフェイス・タイプを指定します。 |
Enable Freeze port from PR region | On/Off | 各PR領域のすべての出力を既知の定数値にフリーズするfreezeポートをイネーブルします。フリーズすると、スタティック領域内の信号受信器は、パーシャル・リコンフィグレーション処理中に未定義信号を受信できなくなります。 |
Select Yes or No to enable or disable interface ports | Yes/No | 特定のオプションのFreeze Bridgeインターフェイス・ポートをイネーブルまたはディスエーブルします。 |
Channel width | <1-128> | チャネル信号幅を指定します。 |
Error width | <1-256> | エラー信号幅を指定します。 |
Data bits per symbol | <1-512> | シンボルあたりのビット数を指定します。 |
Symbols per beat | <1-512> | 有効なクロックサイクルごとに転送されるシンボル数を指定します。 |
Error descriptors | <文字列> | 1つ以上の文字列を指定して、ソース・インターフェイスに接続されているシンク・インターフェイス上のエラーポートの各ビットのエラー状態を記述します。プラスまたはマイナスのボタンをクリックして、記述子を追加または削除します。 |
Max channel number | <0-255> | 出力チャネルの最大数を指定します。 |
Ready latency | <0-8> | シンク・インターフェイスに接続されているソース・インターフェイスから予期されるレディ・レイテンシーを指定します。レディ・レイテンシーとは、ready がアサートされてから有効データが駆動されるまでのサイクル数です。 |
2.7.2. ポート
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
clock | 1 | 入力 | IPの入力クロック。 |
freeze_conduit_freeze | 1 | 入力 | この信号がHighの場合、ブリッジでは現在のトランザクションを適切に処理してから、 PRインターフェイスをフリーズします。 |
freeze_conduit_illegal_request | 1 | 出力 |
このバスのHighは、不正な要求が、フリーズ状態の間にブリッジに対して発行されたことを示します。 n – フリーズブリッジの数 |
pr_freeze_pr_freeze | 1 | 入力 | イネーブルされたPR領域からのフリーズポート。 |
reset_n | 1 | 入力 | IPの同期リセット。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
sink_bridge_to_sr_channel | 1 | 入力 | Avalon-STシンクブリッジからスタティック領域への channel ポート。 |
sink_bridge_to_sr_data | 32 | 入力 | Avalon-STシンクブリッジからスタティック領域への data ポート。 |
sink_bridge_to_sr_empty | 2 | 入力 | Avalon-STシンクブリッジからスタティック領域への empty ポート。 |
sink_bridge_to_sr_error | 1 | 入力 | Avalon-STシンクブリッジからスタティック領域への error ポート。 |
sink_bridge_to_sr_ready | 1 | 出力 | Avalon-STシンクブリッジからスタティック領域への ready ポート。 |
sink_bridge_to_sr_valid | 1 | 入力 | Avalon-STシンクブリッジからスタティック領域への valid ポート。 |
sink_bridge_to_sr_endofpacket | 1 | 入力 | Avalon-STシンクブリッジからスタティック領域への endofpacket ポート。 |
sink_bridge_to_sr_startofpacket | 1 | 入力 | Avalon-STシンクブリッジからスタティック領域への startofpacket ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
sink_bridge_to_pr_channel | 1 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への channel ポート。 |
sink_bridge_to_pr_data | 32 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への data ポート。 |
sink_bridge_to_pr_empty | 2 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への empty ポート。 |
sink_bridge_to_pr_error | 1 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への error ポート。 |
sink_bridge_to_pr_ready | 1 | 入力 | オプションのAvalon-STシンクブリッジからPR領域への ready ポート。 |
sink_bridge_to_pr_valid | 1 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への valid ポート。 |
sink_bridge_to_pr_endofpacket | 1 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への endofpacket ポート。 |
sink_bridge_to_pr_startofpacket | 1 | 出力 | オプションのAvalon-STシンクブリッジからPR領域への startofpacket ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
source_bridge_to_sr_channel | 1 | 出力 | Avalon-STソースブリッジからスタティック領域への channel ポート。 |
source_bridge_to_sr_data | 32 | 出力 | Avalon-STソースブリッジからスタティック領域への data ポート。 |
source_bridge_to_sr_empty | 2 | 出力 | Avalon-STソースブリッジからスタティック領域への empty ポート。 |
source_bridge_to_sr_error | 1 | 出力 | Avalon-STソースブリッジからスタティック領域への error ポート。 |
source_bridge_to_sr_ready | 1 | 入力 | Avalon-STソースブリッジからスタティック領域への ready ポート。 |
source_bridge_to_sr_valid | 1 | 出力 | Avalon-STソースブリッジからスタティック領域への valid ポート。 |
source_bridge_to_sr_endofpacket | 1 | 出力 | Avalon-STソースブリッジからスタティック領域への endofpacket ポート。 |
source_bridge_to_sr_startofpacket | 1 | 出力 | Avalon-STソースブリッジからスタティック領域への startofpacket ポート。 |
ポート |
幅 |
入力/出力 |
説明 |
---|---|---|---|
source_bridge_to_pr_channel | 1 | 入力 | オプションのAvalon-STソースブリッジからPR領域への channel ポート。 |
source_bridge_to_pr_data | 32 | 入力 | オプションのAvalon-STソースブリッジからPR領域への data ポート。 |
source_bridge_to_pr_empty | 2 | 入力 | オプションのAvalon-STソースブリッジからPR領域への empty ポート。 |
source_bridge_to_pr_error | 1 | 入力 | オプションのAvalon-STソースブリッジからPR領域への error ポート。 |
source_bridge_to_pr_ready | 1 | 出力 | オプションのAvalon-STソースブリッジからPR領域への ready ポート。 |
source_bridge_to_pr_valid | 1 | 入力 | オプションのAvalon-STソースブリッジからPR領域への valid ポート。 |
source_bridge_to_pr_endofpacket | 1 | 入力 | オプションのAvalon-STソースブリッジからPR領域への endofpacket ポート。 |
source_bridge_to_pr_startofpacket | 1 | 入力 | オプションのAvalon-STソースブリッジからPR領域への startofpacket ポート。 |
2.8. インテルFPGA IPの生成およびシミュレーション
2.8.1. IPコアの生成 (インテルQuartus Primeプロ・エディション)
次の手順に従って、パラメーター・エディターでIPコアの場所の特定、インスタンス化、およびカスタマイズを行います。
- インテル® Quartus® Primeプロジェクト (.qpf) を作成するか、開き、インスタンス化されたIPのバリエーションを含めます。
- IP Catalog (Tools > IP Catalog) で、カスタマイズするIPコアの名前を探してダブルクリックします。特定のコンポーネントを検索するには、IP Catalog検索ボックスにコンポーネント名の一部または全部を入力します。New IP Variationウィンドウが表示されます。
-
カスタムIPバリエーションの最上位の名前を指定します。IPバリエーション名やパスには空白を含めないでください。パラメーター・エディターは、
<your_ip>
.ip. という名前のファイルにIPバリエーションの設定を保存します。OKをクリックするとパラメーター・エディターが表示されます。
図 72. IPパラメーター・エディター (インテル Quartus Prime プロ・エディション)
-
パラメーター・エディターでパラメーター値を設定し、コンポーネントのブロック・ダイアグラムを表示します。下部のParameterization Messagesタブには、IPパラメーターのエラーが表示されます。
- 使用するIPコアにパラメーター値のプリセットが提供されている場合は、必要に応じてそれを選択します。プリセットにより、それぞれのアプリケーションの初期パラメーター値が指定されます。
- IPコアの機能、ポートのコンフィグレーション、およびデバイス固有の機能を定義するパラメーターを指定します。
- 他のEDAツールでIPコアファイルを処理するオプションを指定します。
注: 特定のIPコア・パラメーターの詳細に関しては、各IPコアのユーザーガイドを参照してください。 - Generate HDLをクリックして、Generationダイアログボックスを表示します。
- 出力ファイルの生成オプションを指定し、Generateをクリックします。合成ファイルおよびシミュレーション・ファイルが仕様に応じて生成されます。
- シミュレーション向けテストベンチを生成するには、Generate > Generate Testbench Systemをクリックします。テストベンチの生成オプションを指定し、Generateをクリックします。
- コピーしてテキストエディターに貼り付けることができるHDLインスタンス化のテンプレートを生成するには、Generate > Show Instantiation Templateをクリックします。
- Finishをクリックします。 IPバリエーションを表すファイルをプロジェクトに追加するかどうかを確認するメッセージが表示されたら、Yesをクリックします。
-
IPバリエーションの生成とインスタンス化の完了後は、適切にピンを割り当て、ポートを接続します。
注: 一部のIPコアでは、IPコアのパラメーターに従って、異なるHDL実装を生成します。そのようなIPコアの基になるRTLには、固有のハッシュコードが含まれています。これにより、異なるバリエーションのIPコア間でのモジュール名の競合を防止します。この一意のコードは、IPコアのパラメーターを編集するか、IPコアのバージョンをアップグレードすると変わることがあります。シミュレーション環境でのこのような固有コードへの依存関係を回避するには、Generating a Combined Simulator Setup Scriptを参照してください。
2.8.2. Freeze Bridge更新スクリプトの実行
このスクリプトを実行すると、Freeze Bridgeのマスター・インターフェイスとスレーブ・インターフェイス、またはシンク・インターフェイスとソース・インターフェイスが、接続するPR領域コンポーネントの Avalon® プロパティー設定に従って更新されます。
Update Freeze Bridge Parametersスクリプトを実行するには、次の手順に従います。
- Freeze Bridgeコンポーネントのインスタンスを1つ以上含むPlatform Designerシステムを開きます。
- Platform DesignerでView > System Scriptingをクリックします。System Scriptingタブに Platform Designer Built-in Scriptsが表示されます。
- すべてのフリーズブリッジの更新をPlatform Designerシステムで行うには、スクリプトのAdditional Commandsセクションで、update_all_freeze_bridges を1に設定します。フリーズブリッジを1つだけ更新するには、フリーズブリッジ・インスタンスをクリックします。
-
Run Scriptをクリックします。スクリプトが実行され、フリーズブリッジのパラメーターが更新されます。
図 73. Platform DesignerのSystem Scriptingタブ
2.8.3. IPコアの生成された出力 (インテルQuartus Primeプロ・エディション)
ファイル名 | 説明 |
---|---|
<your_ip>.ip | 最上位のIPバリエーション・ファイル。プロジェクトにおけるIPコアのパラメーター化を含みます。IPバリエーションがPlatform Designerシステムの一部である場合は、パラメーター・エディターでも .qsys ファイルを生成します。 |
<your_ip>.cmp | VHDL Component Declaration (.cmp) ファイルは、VHDLデザインファイルで使用する、ローカル・ジェネリックおよびポート定義を含むテキストファイルです。 |
<your_ip>_generation.rpt | IPまたはPlatform Designer生成のログファイル。IP生成時のメッセージの要約を示します。 |
<your_ip>.qgsimc (Platform Designerシステムのみ) | シミュレーション・キャッシング・ファイル。.qsys および .ip ファイルをPlatform DesignerシステムおよびIPコアの現在のパラメーター化と比較します。この比較により、Platform DesignerでHDLの再生成をスキップできるかどうかが決まります。 |
<your_ip>.qgsynth (Platform Designerシステムのみ) | 合成キャッシング・ファイル。.qsys および .ip ファイルをPlatform DesignerシステムおよびIPコアの現在のパラメーター化と比較します。この比較により、Platform DesignerでHDLの再生成をスキップできるかどうかが決まります。 |
<your_ip>.csv | IPコンポーネントのアップグレード・ステータスに関する情報を含みます。 |
<your_ip>.bsf | IPバリエーションのシンボル表現です。Block Diagram File (.bdf) で使用します。 |
<your_ip>.spd | シミュレーション・スクリプトを生成するために ip-make-simscript に必要な入力ファイル。.spd ファイルには、シミュレーション向けに生成されたファイルのリストのほか、ユーザーが初期化するメモリーの情報が含まれます。 |
<your_ip>.ppf | Pin Planner File (.ppf) には、ユーザーが作成したIPコンポーネント向けのポートとノードのアサインメントが格納されています。これをPin Plannerで使用します。 |
<your_ip>_bb.v | Verilog blackbox (_bb.v) ファイルは、空のモジュール宣言として使用し、ブラックボックスとして使用します。 |
<your_ip>_inst.v または _inst.vhd | HDLのインスタンス化テンプレート例。このファイルの内容をHDLファイルにコピーして貼り付け、IPバリエーションをインスタンス化します。 |
<your_ip>.regmap | IPにレジスター情報が含まれる場合、 インテル® Quartus® Prime開発ソフトウェアでは、.regmap ファイルを生成します。.regmap ファイルでは、マスター・インターフェイスおよびスレーブ・インターフェイスのレジスターマップ情報を記述します。このファイルでは、.sopcinfo ファイルを補完するため、システムに関するより詳細なレジスター情報を提供します。このファイルにより、System Consoleでのレジスター・ディスプレイ・ビューおよびユーザーによるカスタマイズ可能な統計が可能になります。 |
<your_ip>.svd |
Platform Designerシステム内でHPSに接続しているペリフェラルのレジスターマップをHPS System Debugツールで表示できるようにします。 合成中、 インテル® Quartus® Prime開発ソフトウェアで格納するスレーブ・インターフェイスの .svd ファイルは、デバッグセッションで .sof ファイルのSystem Consoleマスターに表示されます。System Consoleでは、このセクションを読み出し、Platform Designerではレジスターマップ情報の照会を行います。システムスレーブの場合、Platform Designerは名前によってそのレジスターにアクセスします。 |
<your_ip>.v <your_ip>.vhd |
HDLファイル。各サブモジュールまたは子IPコアを合成またはシミュレーション向けにインスタンス化します。 |
mentor/ | msim_setup.tcl スクリプトを含み、 ModelSim* シミュレーションをセットアップし実行します。 |
aldec/ | Riviera-PRO* スクリプト rivierapro_setup.tcl を含み、シミュレーションをセットアップし実行します。 |
/synopsys/vcs /synopsys/vcsmx |
シェルスクリプト vcs_setup.sh を含み、 VCS* シミュレーションをセットアップし実行します。 シェルスクリプト vcsmx_setup.sh および synopsys_sim.setup ファイルを含み、 VCS* MX シミュレーションをセットアップし実行します。 |
/cadence | シェルスクリプト ncsim_setup.sh および他のセットアップファイルを含み、NCSim シミュレーションをセットアップし実行します。 |
/xcelium | Xcelium* Parallelシミュレーターのシェルスクリプト xcelium_setup.sh および他のセットアップファイルを含み、シミュレーションをセットアップし実行します。 |
/submodules | IPコア・サブモジュール向けのHDLファイルを含みます。 |
<IP submodule>/ | Platform Designerで生成する /synth および /sim サブディレクトリーは、Platform Designerで生成した各IPサブモジュール・ディレクトリーに対するものです。 |
2.8.4. インテル Arria 10および インテル Cyclone 10 GX PR制御ブロックのシミュレーション・モデル
インテル® Arria® 10および インテル® Cyclone® 10 GX PR制御ブロックでは、PRシミュレーションをサポートします。シミュレーションRBF (PRビットストリーム) を送信すると、PR制御ブロックは、PRシミュレーションの成功または失敗に応じて動作できるようになります。PR領域シミュレーション・ラッパーの特定のPRペルソナのシミュレーションをアクティブにするには、シミュレーションRBFでエンコードされたPR IDをPR制御ブロックと共に使用します。PR制御ブロックのシミュレーションは、スタンドアロンとして、またはPartial Reconfiguration Controller IPコアのシミュレーション・ファイル・セットの一部として行います。
PR制御ブロックのシミュレーション・モデルには、シミュレーション専用ポートが追加されています。それは、sim_state と sim_pr_id の2つです。この2つのシミュレーション・ポートとその他のポートを twentynm_prblock_if SystemVerilogインターフェイスに接続します。この接続により、PR制御ブロックを監視をテストベンチのPR制御ブロックモニターを使用して行うことができます。 インテル® Quartus® Prime開発ソフトウェアでは、twentynm_prblock_if インターフェイスの自動インスタンス化は、Partial Reconfiguration IPコアのシミュレーション・ファイル・セットを生成するときに行います。IPによりインスタンス化される twentynm_prblock_if への参照を取得するため、alt_pr_test_pkg::twentynm_prblock_if_mgr シングルトンを使用します。次に示すのはその例です。
virtual twentynm_prblock_if prblock_if; alt_pr_test_pkg::twentynm_prblock_if_mgr cb_mgr; // Get the PR control block from the prblock manager cb_mgr = alt_pr_test_pkg::twentynm_prblock_if_mgr::get(); prblock_if = cb_mgr.if_ref;
interface twentynm_prblock_if(input logic pr_clk, input logic clk); logic prrequest; logic [31:0] data; wire error; wire ready; wire done; logic [31:0] sim_only_state; wire [31:0] sim_only_pr_id; // All signals are async except data clocking cb1 @(posedge pr_clk); output data; endclocking endinterface : twentynm_prblock_iftwentynm_prblock_if インターフェイスの詳細については、 <installation directory> /eda/sim_lib/altera_lnsim.sv ファイルを参照してください。
package twentynm_prblock_test_pkg; typedef enum logic [31:0] { NONE, IDLE, PR_REQUEST, PR_IN_PROGRESS, PR_COMPLETE_SUCCESS, PR_COMPLETE_ERROR, PR_INCOMPLETE_EARLY_WITHDRAWL, PR_INCOMPLETE_LATE_WITHDRAWL } PR_EVENT_TYPE;
シミュレーション状態が PR_IN_PROGRESS の場合、影響を受けるPR領域では、シミュレーション出力マルチプレクスをXに駆動するため、pr_activate 信号をアサートする必要があります。このアクションは、PR領域の未知の出力のシミュレーションをパーシャル・リコンフィグレーション中に行います。さらに、PRシミュレーション・モデルの pr_activate 信号をアサートし、PRモデルのすべてのレジスタ-をPRアクティベーション値を使用してロードしてください。
シミュレーション状態が PR_COMPLETE_SUCCESS に到達したら、適切なPRペルソナのアクティブ化を適切なPR領域シミュレーション・ラッパーmux sel 信号を使用して行います。領域や、PR制御ブロックの sim_only_pr_id 信号からの特定の選択信号をデコードします。このIDは、シミュレーションRBFのエンコード済みIDに対応しています。
1 | ゼロ・パディング・ブロック | 0x00000000 |
2 | PR_HEADER_WORD | 0x0000A65C |
3 | PR_ID | 32ビットのユーザーID |
4 | PRDATA_COUNT_0 | 0x01234567 |
5 | PRDATA_COUNT_1 | 0x89ABCDEF |
6 | PRDATA_COUNT_2 | 0x02468ACE |
7 | PRDATA_COUNT_3 | 0x13579BDF |
2.8.5. PRペルソナ・シミュレーション・モデルの生成
PRシミュレーション・モデルをペルソナに対して使用する場合、ネットリストには、そのモデル用の新しい altera_sim_pr_activate 最上位信号が含まれています。この信号を非同期に駆動して、モデル内のすべてのレジスターをXでロードすることができます。この機能を使用すると、新しいペルソナのリセットシーケンスの検証をPRイベントの完了時に行うことができます。リセットシーケンスの検証は、SystemVerilogアサーション、または他のチェッカーを使用して行います。
デフォルトで、PRシミュレーション・モデルは、pr_activate 信号のアサート時に、Xをレジスターのストレージエレメントに非同期にロードします。この動作のパラメーター化は、レジスターごとで行うか、またはシミュレーション全体のデフォルトの基準で行います。シミュレーション・モデルでは、次の4つの組み込みモードをサポートしています。
- load X
- load 1
- load 0
- load rand
SystemVerilogクラスを使用して、次のモードを指定します。
- dffeas_pr_load_x
- dffeas_load_1
- dffeas_load_0
- dffeas_load_rand
必要に応じて、独自のPRアクティベーション・クラスを作成し、クラスで pr_load 変数を定義してPRアクティベーション値を指定してください。
次の手順に従って、PRデザインのシミュレーション・モデルを生成します。
-
インテル®
Quartus® Primeプロ・エディションでPRプロジェクトのベースリビジョンを開き、Processing > Start > Start Analysis & Synthesisをクリックします。 または、次のコマンドラインを実行します。
quartus_syn <project name> -c <base revision name>
-
合成が完了したら、Project > Export Design Partitionをクリックします。root partitionをPartition nameに対して選択し、synthesizedをSnapshotに対して選択してから、OKをクリックします。または、次のコマンドラインを実行します。
quartus_cdb <project name> -c <base revision name> \ "--export_block root_partition --snapshot synthesized \ --file <static qdb name>
- Project > Revisionsをクリックして、現在のリビジョンを、エクスポートするペルソナのリビジョンに切り替えます。
-
Processing > Start > Start Analysis & Synthesisをクリックします。または、次のコマンドラインを実行します。
quartus_syn <project name> -c <persona revision name>
-
ペルソナリビジョンの合成が完了したら、次のコマンドラインを実行してPRシミュレーション・モデルを生成します。
quartus_eda <project name> –c <persona revision name> "--pr --simulation \ --tool=modelsim --format=verilog --partition=<pr partition name> \ --module=<partition name>=<persona module name>
- ステップ3から5をシミュレーションを行うすべてのペルソナに対して繰り返します。
PRシミュレーション・モデル生成の全スクリプト
quartus_syn <project name> -c <base revision name> quartus_cdb <project name> -c <base revision name> \ "--export_block root_partition --snapshot synthesized \ --file <static qdb name> quartus_syn <project name> -c <persona revision name> quartus_eda <project name> –c <persona revision name> \ "--pr --simulation --tool=modelsim --format=verilog \ --partition=<pr partition name> --module=<partition name>=\ <persona module name>
2.9. インテル Quartus Primeプロ・エディション ユーザーガイド : パーシャル・リコンフィグレーションのアーカイブ
インテル® Quartus® Primeのバージョン | ユーザーガイド |
---|---|
19.4 | Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration |
19.3 | Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration |
19.1 | Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration |
18.1 | Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration |
18.0 | Intel Quartus Prime Pro Edition User Guide: Partial Reconfiguration |
2.10. パーシャル・リコンフィグレーション・ソリューションIPユーザーガイド 改訂履歴
ドキュメント・バージョン | インテル® Quartus® Primeのバージョン | 変更内容 |
---|---|---|
2019.12.16 | 19.4.0 |
|
2019.09.30 | 19.3.0 |
|
2019.06.07 | 19.1.0 |
|
2019.04.22 | 19.1.0 |
|
2019.01.04 | 18.1.0 |
|
2018.12.07 | 18.1.0 |
|
2018.09.24 | 18.1.0 |
|
2018.06.27 | 18.0.0 | Registers: Partial Reconfiguration Region Controllerの freeze_status 信号の説明を更新しました。. |
2018.06.18 | 18.0.0 |
|
2018.05.07 | 18.0.0 |
|
2017.11.06 | 17.1.0 |
|
2017.05.08 | 17.0.0 | 初版。 |
A. インテル Quartus Primeプロ・エディション ユーザーガイド
インテル® Quartus® Primeプロ・エディション FPGAデザインフローのすべてのフェーズの包括的情報については、次のユーザーガイドを参照してください。