AN 886: インテル Agilex デバイスのデザイン・ガイドライン
1. インテル Agilex デバイスのデザイン・ガイドラインの概要
このドキュメントでは、インテル® Agilex™ FPGAを使用したデザインについて、デザイン・ガイドライン、推奨事項、および考慮すべき要素について記述します。高密度、高性能のインテルAgilexデザインを実現するためには、デザインプロセス全体でインテルの推奨事項に従うことが重要です。このドキュメントは、FPGAとシステムをデザインプロセスの早い段階でプランニングする際にも役立ちます。これは、デザイン要件を正常に満たすために非常に重要です。
この資料では、インテルAgilexデバイスのアーキテクチャーのほか、デザインで使用する可能性のある インテル® Quartus® Prime開発ソフトウェアおよびサードパーティー・ツールの特徴について記述しています。このドキュメントで説明するガイドラインに従うことで、生産性を向上させ、よくあるデザインの落とし穴を回避することができます。
このドキュメントには、 インテル® Agilex™ FPGAおよびハード・プロセッサー・システム (HPS) デバイスの詳細、機能、ハードウェアおよびソフトウェア・システムのデザインに関する情報は含まれていません。
インテル® Agilex™ FPGAの詳細については、 インテル® Agilex™ ドキュメンテーション・サポート・ページを参照してください。
1.1. デザインフロー
デザインフローのステージ | 説明 |
---|---|
システム仕様 | プランニング、デザイン仕様、IPの選択 |
デバイスの選択 | デバイス情報、デバイスバリアントおよびデバイス集積度の決定、パッケージ、マイグレーション、およびスピードグレード |
セキュリティーに関する考慮事項 | 認証、暗号化、基本セキュリティー、ファイアウォール、ヒューズ |
ハード・プロセッサー・システム | 帯域幅解析、ファイアウォールのプランニング、HPS起動方法、リセットとI/Oのプランニング、ペリフェラル、ブリッジおよびSDRAMのコンフィグレーション |
デザインエントリー | コーディング・スタイルおよびデザインの推奨事項、Platform Designer、階層デザインまたはチームベースのデザインのプランニング |
ボードの考慮事項 | 早期消費電力見積もり、熱管理オプション、ボード・デザイン・ガイドライン、コンフィグレーション手法、ブートモード、シグナル・インテグリティー、I/Oおよびクロック・プランニング、ピン接続、リセットプラン、メモリー・インターフェイス、検証 |
デザイン検証 | システムコンソール、シミュレーション、デバッグタイミング解析 |
デバッグ | デバッグツール、リモートデバッグ、シミュレーション、システムコンソール、JTAG |
エンべデッド・ソフトウェアのデザイン・ガイドライン | ソフトウェア要件およびアーキテクチャー、ツール、ドライバーの考慮事項、アプリケーション開発、テストおよび検証 |
次に示すフロー図は、インテルAgilex FPGAデバイスを使ってデザインする場合のハイレベルのデザインフローです。IPの選択などのデザインフローにおける特定の段階は、反復的に行われる場合があります。また、ほかにもセキュリティー事項の考慮などは、デザインの複数の段階で発生する場合があります。
1.2. インテル Agilex デバイスのデザイン・ガイドラインの概要 改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
2. システム仕様
インテルAgilexデバイスを含むシステムでは、通常、FPGAの果たす役割は大きく、デザインの残りの部分に影響を与えます。デザインプロセスを開始する場合は、システムとFPGAの詳細な仕様を作成し、システムの残りの部分へのFPGA入力および出力インターフェイスを決定することが重要です。
2.1. デザインの仕様
No. | チェック欄 | チェック項目 |
---|---|---|
1 | 詳細デザイン仕様を作成し、該当する場合はテストプランを作成します。 | |
2 | ブロック図を使用し、クロックリソース、およびI/Oインターフェイスを早期にプランニングします。 |
システムを定義する詳細デザイン仕様の作成は、ロジックデザインの作成前、またはシステムデザインの完了前に行います。そのためには、次の事項を実行します。
- FPGA用I/Oインターフェイスを指定する
- 異なるクロックドメインを特定する
- デザインの基本機能のブロック・ダイアグラムを含める
- 知的財産 (IP) ブロックを含める
- 機能の検証およびテストプランを作成する
- 一般的なデザイン・ディレクトリー構造を検討する
- Revision Control System (RCS) を使用したファイルのチェックインおよびチェックアウトを検討し、開発時間を短縮する
機能検証計画を作成し、システムを検証する方法をチームが確実に把握できるようにします。テストプランをこの段階で作成することは、テスト容易性や製造能力のデザインにも役立ちます。例えば、Built In Self Test (BIST) 機能を実行してインターフェイスを駆動する場合、 Nios® プロセッサーをFPGAデバイスに搭載したUARTインターフェイスを使用します。すべてのデザイン・インターフェイスを検証する機能が必要になる場合があります。
デザインの設計者が複数存在する場合は、一般的なデザイン・ディレクトリー構造の検討が有用になります。これにより、デザインの統合段階が容易になります。
2.2. インテル Quartus Prime 開発ソフトウェアのインストール
IPの選択とシミュレーションに進む前に、 インテル® Quartus® Primeプロ・エディション開発ソフトウェアをインストールします。
関連資料 |
---|
インテル®
Quartus® Prime開発ソフトウェア・スイート
インテル® Quartus® Primeの異なるエディションに関する情報 |
インテル®
Quartus® Prime開発ソフトウェア - サポートセンター
インテル® Quartus® Prime開発ソフトウェアの機能に関する情報 |
FPGA向けダウンロード・センター
インテル® Quartus® Prime開発ソフトウェアのバージョンとデバイスファミリーの選択に関する情報 |
インテルFPGAライセンス・サポートセンター
ライセンスタイプ、ライセンスファイルの取得、ライセンスファイルの設定、およびライセンス関連の問題の解決に関する情報 |
インテル®
FPGA Software Installation
and Licensing
インテル® Quartus® Primeプロ・エディションのインストールに関する情報 |
2.3. IPの選択
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 使用可能なHPS IPを評価する。 | |
2 | ソフトIPおよびI/Oインターフェイスを評価する。 | |
3 | ボードデザインがJTAG接続をサポートしていることを確認する。 |
2.3.1. 使用可能なHPS IPの評価
- EMAC
- USBコントローラー
- I2Cコントローラー
- UART
- SPIマスター・コントローラー
- SPIスレーブ・コントローラー
- GPIOインターフェイス
使用可能なHPS IPの評価について詳しくは、 Intel® Agilex™ Hard Processor System Technical Reference Manualを参照してください。
2.3.2. ソフトIPおよびI/Oインターフェイスの選択
インテルで提供しているさまざまなソフトIPは、デザインでインスタンス化することができます。詳しくは、インテルFPGA IPポートフォリオのウェブページを参照してください。
ソフトIPの広範なポートフォリオは、デザインに統合できる Nios® IIプロセッサーでも動作します。 Nios® IIプロセッサーで動作するすべてのIPについては、Embedded Peripheral IP User Guideを参照してください。
2.3.2.1. IPコア
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | インテル® Quartus® Primeプロ・エディションの一部であるIPパラメーター・エディターを使用してIPコアのコンフィグレーションおよび評価を行います。 |
インテルで提供しているパラメーター化が可能なIPコアは、インテルデバイスのアーキテクチャー向けに最適化されています。独自のロジックをコーディングする代わりにIPコアを使用すると、デザイン時間が短縮できます。さらに、インテルで提供しているIPコアにより、さらに効率的な論理合成とデバイス実装が提供されます。IPコアのサイズをスケーリングし、パラメーターを使用してさまざまなオプションを設定できます。IPコアには、パラメーター化されたモジュール (LPM) のライブラリーとインテルデバイス固有のIPコアが含まれます。インテルおよびサードパーティーのIPコアおよびリファレンス・デザインを利用して、デザイン時間を短縮することもできます。 インテル® Quartus® Prime IPカタログのユーザー・インターフェイスによってIPコアをカスタマイズすることができます。パラメーター・エディターを使用してIPコア・パラメーターを構築または変更して、すべてのポートとパラメーターを正しく設定する必要があります。
詳しくは、Introduction to Intel FPGA IP Cores を参照してください。
2.4. シミュレーション
- サードパーティー・シミュレーション・ユーザーガイド: インテル® Quartus® Primeプロ・エディション
- Simulation Quick-Start for ModelSim - Intel FPGA Edition: Intel Quartus Prime Pro Edition
- Embedded Peripherals IP User Guide
2.5. デザインエントリーの準備
複雑なFPGAデザイン開発では、デザイン・プラクティス、コーディング・スタイル、およびIPコアが、デバイスのタイミング・パフォーマンス、ロジック使用率、コンパイル時間、およびシステムの信頼性に大きな影響を与えます。さらに、デザインのプランニングおよび作成の際に、階層デザインまたはチームベースのデザインをプランニングして、デザインの生産性を向上させます。
2.5.1. コーディング・スタイルおよびデザインに関する推奨事項
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | メモリーおよびDSPブロックなどのデバイス専用ロジックの推論には特に、推奨コーディング・スタイルに従う。 |
HDLコーディング・スタイルは、プログラマブル・ロジック・デザインの結果の品質に大きな影響を与える可能性があります。インテルで推奨しているコーディング・スタイルを使用して、最適な合成結果を達成してください。メモリーおよびデジタル信号処理 (DSP) をデザインする場合は、デバイス・アーキテクチャーを理解し、専用のロジックブロックのサイズとコンフィグレーションを活用できるようにしてください。
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 同期デザイン手法を使用します。クロックとリセット信号に注意します。 |
同期デザインでは、クロック信号によってすべてのイベントがトリガーされます。レジスターのタイミング要件がすべて満たされると、同期デザインは、すべてのプロセス、電圧、および温度 (PVT) 条件に対して予測可能で信頼性の高い方法で動作します。同期デザインは、異なるデバイスファミリーやスピードグレードに簡単に対応で きます。
非同期デザイン手法の問題には、デバイス内の伝搬遅延への依存、不完全なタイミング解析、およびグリッチの可能性などがあります。クロック信号は、デザインのタイミング精度、パフォーマンス、信頼性に大きな影響を与えるため、特に注意してください。クロック信号に問題があると、デザインの機能およびタイミングの問題が起こる可能性があります。最適な結果を得るには、専用のクロックピンおよびクロック配線を使用してください。クロックの反転、乗算、および除算には、デバイスのPLLを使用します。クロックの多重化とゲーティングには、組み合わせロジックの代わりに、専用のクロック制御ブロックまたはPLLクロック切り替え機能を使用します。内部で生成されたクロック信号を使用する必要がある場合は、クロック信号として使用される任意の組み合わせロジックの出力を登録して、グリッチを低減します。例えば、クロックの分割に組み合わせロジックを使用する場合は、最終ステージのクロックは、分周器回路のクロックに使用されたクロック信号で行います。
ハードウェア記述言語 (HDL) コーディング・スタイルの推奨事項については、 Intel Quartus Prime Pro Edition User Guide: Design Recommendationsを参照してください。
2.5.2. Platform Designer
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | Platform Designerを活用してシステムおよびプロセッサーをデザインします。 |
Platform Designerは、 インテル® Quartus® Prime開発ソフトウェアの一部として含まれているシステム統合ツールです。Platform Designerでは、システムレベルのハードウェア・デザインのキャプチャを抽象度の高いレベルで行います。また、カスタマイズされたハードウェア記述言語 (HDL) コンポーネントの定義および統合のタスクを自動化します。HDLコンポーネントには、IPコア、検証IP、およびその他のデザインモジュールがなどが含まれます。Platform Designerでは、デザインの再利用を促進するために、カスタム・コンポーネントをパッケージ化して、インテルおよびサードパーティーのIPコンポーネントと統合します。Platform Designerでは、指定したハイレベルの接続性から相互接続ロジックを自動作成します。これにより、エラーが発生しやすく時間のかかるHDL作成タスクがなくなり、システムレベルの接続を指定します。
Platform Designerがより強力になるのは、標準インターフェイスを使用してカスタム・コンポーネントをデザインした場合です。標準インターフェイスを使用すると、ユーザーのコンポーネントとPlatform Designer Library内のコンポーネントとの統合が簡単になります。さらに、バス・ファンクション・モデル (BFM)、モニター、およびその他の検証IPを利用して、デザインを検証することができます。
Platform Designerについて詳しくは、Intel Quartus Prime Pro Edition User Guide Platform Designer を参照してください。
2.6. I/Oの概要
デバイスをコンフィグレーションする際に最も重要な考慮事項の1つは、 インテル® Agilex™ SoCデバイス内でのI/Oの整理方法を理解することです。
1. HPS EMIF I/O
3つのモジュラーI/OサブバンクをSDRAMメモリーに接続することができます。I/Oバンクの1つを使用して、アドレス、コマンド、およびECCデータ信号を接続します。他の2つのバンクは、データ信号を接続するためのものです。
2. HPS Dedicated I/O
この48個のI/Oは、HPS内に物理的に配置されます。HPS専用です。また、HPSクロックおよび大容量ストレージ・フラッシュ・メモリーを含むペリフェラルに使用されます。
3. Secure Device Manager (SDM) Dedicated I/O
SDMには24個の専用I/Oがあります。これは、JTAG、クロック、リセット、コンフィグレーション、リファレンス電圧、ブートとコンフィグレーションのフラッシュ・インターフェイス、およびMSELなどです。
4. 汎用I/O
汎用I/Oは、FPGAロジック、FPGA外部メモリー・インターフェイス、および高速シリアル・インターフェイスに使用できます。ほとんどのHPSペリフェラル・インターフェイスをFPGAファブリックにエクスポートして、カスタム適応およびFPGA I/Oへの配線を行うことができます。
専用HPS I/O | HPS EMIF I/O | 専用SDM I/O | 汎用I/O | |
---|---|---|---|---|
使用可能なI/Oの数 | 48 | 最大3個のI/O 48サブバンク (I/O 96バンクを2個使用) | 24 | その他すべてのデバイスI/O |
場所 |
HPSの内部 HPS搭載デバイスでのみ使用できます。 |
HPS搭載デバイスでのみ使用できます。
|
SDM内部 |
I/OカラムはFPGAデバイス内 |
サポートされる電圧 | 1.8V | DDR4プロトコルの1.5V True Differential Signalサポート | 1.8V | 1.2V I/O、1.5V I/O、および高速シリアル・トランシーバー |
目的 |
HPSクロック、HPSペリフェラル、大容量ストレージフラッシュ、HPS JTAG |
HPSメインメモリー | SDM専用ピン、クロック、リセット、コンフィグレーション、リファレンス電圧、ブートおよびコンフィグレーション・フラッシュ・インターフェイスを介したFPGA JTAG | 汎用および トランシーバーI/O |
タイミング制約 | 固定 | メモリー・コントローラーIPによって提供されます。 | 固定 | ユーザー定義 |
推奨ペリフェラル |
イーサネットPHY、USB PHY、大容量ストレージフラッシュ (NAND、SD/MMC)、TRACEデバッグなどのHPSペリフェラルI/O |
DDR4 | ブートおよびコンフィグレーション・ソース、SDM専用ピンを介したFPGA JTAG、MSEL信号、およびAVSTx8は、SDMに接続されています。 |
低速HPSペリフェラル (I2C、SPI、 EMAC-MII)、FPGA EMIFなどのFPGA I/O、トランシーバーI/O、AVSTx16、AVSTx32、その他の並列および制御/ステータスI/O |
2.7. デバイスでのインテルAgilex HPSの使用
システムデザインのプランニング時に考慮の必要があるHPSコンポーネントに注意してください。
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | HPS_OSC_CLK (必須) - HPSのクロック方法は他にもありますが、これが最も一般的で最も簡単な方法です。 | |
2 | HPS_COLD_nRESET (オプション) - HPSの外部リセット制御が必要な場合、最も簡単な実現方法です。 | |
3 | HPS_EMIF (必須) - HPSは、大容量のDDRスタイルメモリーからソフトウェアを実行するようにデザインされています。HPS_EMIF をプロビジョニングしないと、ソフトウェア環境が制約され、ほとんどの場合に使用できなくなります。 | |
4 | HPS_UART (必須) - このうちの1つをHPS専用ピンにピン留めして、ブート初期のテレメトリーをソフトウェアで確認できるようにします。 | |
5 | HPS_JTAG (必須) - これは、ボードの起動および初期ブートフローの問題のデバッグに必須です。SDMJTAG TAPとシリアルチェーン接続するか、またはHPS専用ピンで分割できます。 | |
6 | HPS_EMAC (オプション) - このうちのいずれかの割り当てができれば、デバッグおよびメンテナンスのサポートをソフトウェア環境に対して提供する余裕ができます。 | |
7 | HPS flash memory (オプション) - HPSは、SDMによってロードされ、その後HPSからSDMフラッシュにアクセスできるため、これは必須ではない場合もあります。多くのソフトウェア環境では、ある種の永続的なストレージが必要です。 |
2.8. システム仕様の改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
3. デバイスの選択
デバイスの選択は、インテルAgilexデバイスのデザインプロセスの最初のステップです。このステップでは、デザイン要件に最適なデバイスファミリーのバリアント、デバイスの集積度、機能、パッケージ、スピードグレードを選択します。
3.1. デバイスバリアント
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 使用可能なデバイスバリアントを検討します。 | |
2 | デバイスの選択を次の事項に基づいて行います。トランシーバー、I/Oピン数、LVDS SERDESチャネル、パッケージの種類、ロジック/メモリー/乗算器の集積度、PLL、クロック配線、スピードグレード。 |
- インテル® Agilex™ FシリーズFPGAおよびSoCの最適化は、電力効率とパフォーマンスの最適なバランスを必要とする広範なFPGAアプリケーション向けに行われています。これには、業界をリードするインテルの10 nm FinFETプロセス・テクノロジーが使われています。
- インテル® Agilex™ IシリーズFPGAおよびSoCでは、高性能プロセッサー・インターフェイスおよびトランシーバー・レートを提供します。これは、帯域幅を大量に消費するアプリケーション向けです。
詳しくは、インテル Agilex FPGA技術資料 (簡易版): (デバイスの概要) を参照してください。
3.2. PLLおよびクロック配線
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | PLL数およびクロック配線リソースを検証します。 |
選択したデバイス集積度のパッケージ組み合わせに、デザインに十分なPLLとクロック配線リソースが含まれているかを検証します。
3.3. ロジック、メモリー、および乗算器の集積度
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 必要なロジック、メモリー、および乗算器の集積度を見積もります。詳細については、デバイスバリアントの項を参照してください。 | |
2 | 今後の開発とデバッグ向けにデバイスのリソースを確保しておきます。 |
インテルAgilexデバイスでは、さまざまな集積度を用意しています。これによって、異なる量のデバイス・ロジック・リソースが提供されます。これには例えば、メモリー、乗算器、アダプティブ・ロジック・モジュール (ALM) ロジックセルなどがあります。必要なロジック集積度を決定することは、デザインのプランニング・プロセスの難しい部分です。デバイスのロジックリソースがより多い場合、実装できるデザインは、より大きく、潜在的により複雑になります。ただしコストは、一般的に高くなります。デバイスが小さいほど、スタティック電力の使用率は低くなります。 インテルAgilexデバイスでは、バーティカル・マイグレーションをサポートしています。それにより柔軟性が提供されます。
既存のデバイスからインテルAgilexデバイスにデザインを移行させると、リソース使用率が10% から15% 増加することがあります。リソース使用率を確認して、どのデバイス集積度がデザインに適しているかを確認してください。 インテル® Quartus® Prime開発ソフトウェアで使用されているコーディング・スタイル、デバイス・アーキテクチャー、および最適化オプションは、デザインのリソース使用率およびタイミング・パフォーマンスに大きな影響を与えることがあります。
デザイン要件を満たすデバイスを選択する際には、デザインサイクルの後半でロジックを追加したり、アップグレードしたり、デザインを拡張したりする場合に備えて、安全性に余裕を持たせます。また、デバイスに追加スペースを持たせて、インクリメンタル・デザインやチームベースのデザインのフロアプランの作成を容易にすることが必要な場合もあります。デバッグ用のリソースを確保することを検討してください。
リソース使用率をコンパイル済みデザインに対して決定する方法について詳しくは、 「デバイスリソース使用率レポート」 の項を参照してください。
3.4. I/Oピン数、LVDS SERDESチャネル、およびパッケージの種類
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 必要なI/Oピン数を見積もります。 | |
2 | デバッグ用に確保しておく必要があるI/Oピンについて検討します。 | |
3 | LVDSチャネル数が十分であるかを検証します。 | |
4 | ファブリックのスピードグレードおよびトランシーバーのスピードグレードを評価します。 | |
5 | チップ間インターフェイスに必要なI/O電圧を検討し、サポートされている規格と互換性があることを確認します。 |
アプリケーションに必要なI/Oピンの数を決定します。このとき、他のシステムブロックとのデザインのインターフェイス要件を考慮します。
デバイスの集積度とパッケージのピン数が増えると、差動シグナリング用の単方向LVDS SERDESチャネルが多くなります。デバイスの集積度とパッケージとの組み合わせに十分なLVDS SERDESチャネルが含まれていることを確認してください。その他の要因も、デザインに必要なI/Oピン数に影響を与えます。これには同時スイッチング・ノイズ (SSN) の問題、ピン配置ガイドライン、専用入力として使用されるピン、各I/OバンクのI/O規格の可用性、ロウおよびカラムI/OバンクのI/O規格と速度、およびパッケージ・マイグレーション・オプションなどがあります。
既存のデザインを インテル® Quartus® Prime開発ソフトウェアでコンパイルして、使用するI/Oピンの数を決定します。I/Oピンをデバッグ用に予約することも検討してください。
3.5. スピードグレード
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 必要なスピードグレードを決定します。 |
デバイスのスピードグレードは、デバイスのタイミング・パフォーマンス、タイミング・クロージャー、および電力使用率に影響します。デザインに必要なスピードグレードを決定する方法の1つは、特定のI/Oインターフェイスでサポートされているクロックレートを考慮することです。
プロトタイプ作成中に最速のスピードグレードを使用して、コンパイル時間を短縮することができます (デザインを最適化してタイミング要件を満たすためにかかる時間が短くなるため)。その後、生産用に低速のスピードグレードに移行し、コストを削減します。ただし、デザインがタイミング要件を満たしていることが必要です。
3.6. デバイスのバーティカル・マイグレーション
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | デバイスのバーティカル・マイグレーションの可否および要件について検討します。 | |
2 | Intel Agilex FPGA External Memory Interface Overviewおよびインテル® FPGA 向け外部メモリー・インターフェイスIP - サポート・センターのウェブページを参照します。 |
インテルAgilexデバイスでは、同一パッケージ内でのバーティカル・マイグレーションをサポート しています。集積度が異なるデバイスへのマイグレーションが可能なのは、デバイスの専用入力ピン、コンフィグレーション・ピン、および電源ピンが特定のパッケージに対して同じ場合です。この機能により、将来のアップグレードやデザイン変更にボードレイアウトの変更が不要になります。これは、ボード上のFPGAを集積度の異なるインテルAgilexデバイスに置き換えることができるためです。
デザインを他のデバイス集積度に移行するオプションが必要かどうかを判断します。デバイスの集積度とパッケージを選択し、将来のデバイス・マイグレーションに対応することにより、デザインが完成に近づいたときに柔軟性を持たせることができます。マイグレーションの可能性がある場合は、 インテル® Quartus® Prime開発ソフトウェアでオプションを指定します。これは、デザインサイクルの開始時、または インテル® Quartus® Prime開発ソフトウェアでデバイス・マイグレーションの選択が可能になった時点で行ってください。マイグレーション・デバイスを選択すると、デザインのピン配置が影響を受けることがあります。これは、Fitterでデザインと選択デバイスとの互換性を保証するためです。マイグレーション・デバイスの追加は、デザインサイクルの後半でも可能です。しかしその場合は、ピン・アサインメントの確認に余分な労力がかかります。また、場合によっては、デザインまたはボードレイアウトを変更して、それを新しいターゲットデバイスに適合させる必要があります。このような問題の検討は、デザインサイクルの早い段階で行う方が、最後にデザインが完成に近づいてマイグレーションの準備ができたときにするより簡単です。
インテル® Quartus® Prime Pin Plannerでは、マイグレーション・デバイスで機能を変更するピンを強調表示して、現在選択されているデバイスと比較します。
3.7. デバイスの選択の改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
4. セキュリティーに関する考慮事項
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | デザインでデバイス・セキュリティー機能をイネーブルにする必要があるかどうかを検討します。その場合、VCCFUSEWR_SDMレールに電力を供給して認証ヒューズ管理に使用することをプランニングします。 | |
2 | デザインにビットストリーム暗号化が必要かどうかや、暗号化キーをBattery-Backed RAM (BBRAM) に格納するかどうかを検討します。その場合は、ボード上のバッテリーを使用して、VCCBATピンに電力を供給することをプランニングします。 | |
3 | ライセンス条件については、使用可能なデバイスバリアントの要件に最適なものを検討する。 |
- 認証 - 認証によって、デバイスのファームウェアのほか、オプションのコンフィグレーション・ビットストリームが信頼できるソースからのものであることが保証されます。認証は、 インテル® Agilex™ セキュリティーの基本機能です。他の インテル® Agilex™ セキュリティー機能をイネーブルするには、最初にオーナー認証をイネーブルする必要があります。デバイスのファームウェア認証は、常時実行されます。さらに、デバイスのファームウェアおよびビットストリームの整合性検証が常時実行され、 インテル® Agilex™ デバイスによって、破損や悪意のある攻撃などの予期しない変更を伴うビットストリームがロードされないようにします。
- 暗号化 - 暗号化により、所有者のコンフィグレーション・ビットストリーム内の機密情報が保護され、知的財産の盗難の脅威が軽減されます。
システムをデザインする際に、セキュリティー機能を利用する インテル® Agilex™ デバイスを使用する場合は、認証キーの格納、許可、およびキャンセルに対する規定を考慮してください。また、暗号化キーの格納と管理の検討が必要になる場合もあります。オーナールート公開鍵のハッシュは、常時 インテル® Agilex™ デバイス上のeFuseに格納されます。また、インテルのファームウェア・キーのキャンセルとオーナー認証キーのキャンセルの両方もまた、eFusesによって管理されます。したがって、適切な電力を VCCFUSEWR_SDM ピンに供給することが重要です。VCCFUSEWR_SDM の電源投入について詳しくは、Intel Agilex Pin Connection Guidelinesを参照してください。
ビットストリーム暗号化のイネーブルが インテル® Agilex™ デバイス上でされている場合、暗号化キーをデバイスに格納する必要があります。暗号化キーは、Battery-Backed RAM (BBRAM) またはeFuseに格納できます。暗号化キーのeFuseへの格納は永久的ですが、暗号化キーをBBRAMに保存することにより、キーのワイプまたは再プロビジョニングが可能になります。デザインで暗号化キーをBBRAMに保存する必要がある場合は、不揮発性バッテリーを VCCBAT ピンに接続してください。バッテリーを VCCBAT ピンに接続する方法について詳しくは、Intel Agilex Pin Connection Guidelinesを参照してください。
4.1. セキュリティーに関する考慮事項の改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
5. デザインエントリー
5.1. SoCデバイスのデザインエントリー
5.1.1. ファイアウォールのプランニング
システム相互接続ファイアウォールを使用して、システム相互接続のスレーブ領域およびメモリー領域のセキュリティー・ポリシーを適用できます。ファイアウォールについて詳しくは、 Intel Agilex Hard Processor System Technical Reference Manualのシステム相互接続の項を参照してください。
5.1.2. 起動およびコンフィグレーション関する考慮事項
インテル® Agilex™ SoC HPSにはブートROMがありません。代わりに、SDMのBootROMでは、初期のFPGAコンフィグレーション・ビットストリームをロードします。このビットストリームには、HPS First Stage Bootloader (FSBL) バイナリーも含まれています。
5.1.2.1. HPSブートオプションの選択
- FPGA Configuration First : SDMでは、FPBLコアおよびすべてのペリフェラルI/Oのコンフィグレーションを行ってから、FSBLをHPSオンチップRAMにロードし、HPSをリセットからリリースします。初期コンフィグレーション中にエラーが発生した場合、HPSはリセットから解放されません。
- HPS First : SDMでは、HPS EMIFに必要なI/Oのみのコンフィグレーションを実行します。その後、FSBLをHPSオンチップRAMにロードしてから、HPSをリセットからリリースします。FPGAコアやその他の未使用のI/Oのコンフィグレーションは行われません。HPSでは、FPGAの残りの部分をコンフィグレーションします。
コンフィグレーションおよびブートモードを インテル® Quartus® Primeプロ・エディションのAssignments > Device > Device and Pin Options > HPS/FPGA configuration orderタブから選択します。
HPS FirstおよびFPGA Firstブートの考慮事項
ガイドライン : エンジニアリング・サンプル・デバイスの制約事項
エンジニアリング・サンプル (ES) デバイスでサポートするのは、デュアルフラッシュのHPS Firstブートモードのみです。ESデバイスを使用して構築されたボードは、HPS Firstブートモードをサポートするようにデザインする必要があります。HPS FirstとFPGA Firstの両方のブート用にボードをデザインする場合、デュアルフラッシュまたはシングルフラッシュを使用することもあります。これは、異なるブートスキームを製造で使用する計画がある場合です。
ガイドライン : HPS First Boot Modeには、Early I/O Releaseを利用します。
このドキュメントのガイドラインに従って、Early I/O ReleaseのHPS EMIFインターフェイス用にボードとSoCデバイスのピン配置を適切にデザインします。
サポートされているブートモードについて詳しくは、Intel Agilex SoC Boot User Guideおよび Intel Agilex Hard Processor System Technical Reference Manual内の 「Boot and Configuration」 の項を 参照してください。
5.1.2.2. コンフィグレーション・ソース
初期FPGAコンフィグレーションおよびHPS FSBLは、初期コンフィグレーション・ビットストリームの一部です。初期コンフィグレーション・ビットストリームは、次のソースから入手できます。
- Avalon®-ST Data Source : 外部Avalon-STマスターからビットストリームを提供します。
- JTAG Interface : 外部JTAGマスター (通常はホストツールによって駆動) からビットストリームを提供します。
- SDM Flash : SDM側に接続されたフラッシュデバイスからビットストリームを提供します。
5.1.2.3. Remote System Update (RSU)
インテル® Agilex™ SoCでは、RSU機能をサポートしています。この機能を使用すると、必要に応じて、複数のプロダクション・イメージをフェイルセーフのファクトリー・イメージと一緒に外部SDMフラッシュ上に格納できます。 PORが終了すると、SDMでは、プロダクション・イメージを特定のシーケンスでロードしようとします。プロダクション・イメージのロードがすべて失敗した場合は、フェイルセーフのファクトリー・イメージがロードされます。
5.1.3. HPSクロッキングおよびリセットデザインの考慮事項
- HPS_OSC_CLK デバイスI/Oピン - HPS PLLの外部クロックソース。これにより、MPUサブシステム、CCU、SMMU、L3相互接続、HPSペリフェラル、およびHPS-to-FPGAユーザークロックを生成します。
- nCONFIG デバイスのI/Oピン - nCONFIG はSDMへの専用入力ピンです。これにより、初期コンフィグレーションを保留し、FPGAのリコンフィグレーションを開始します。nCONFIG アサートによりHPSをコールドリセットします。
- HPS_COLD_nRESET デバイスI/Oピン - オプションのリセット入力です。HPSのみをコールドリセットし、双方向動作用にコンフィグレーションされます。
ガイドライン : HPS_COLD_nRESET ピンをコンフィグレーションし、任意の開いているSDM I/Oピンに配置します。
- Assignments > Deviceをクリックします。
- 「Device and Pin Options」 ボタンをクリックします。
- 「Configuration」 タブに移動します。
- 「Configuration Pin Options」 ボタンをクリックします。
- 「USE_HPS_COLD_nRESET」 チェックボックスをクリックして、使用可能な SDM_IO ピンを選択します。
5.1.3.1. HPSクロック・プランニング
- HPS PLL
- MPUサブシステム
- L3インターコネクト
- HPSペリフェラル
- HPS-to-FPGAユーザークロック
HPSクロック・プランニングは、ボードレベルのクロック・プランニング、デバイスのFPGA部分のクロック・プランニング、およびHPSペリフェラルの外部インターフェイス・プランニングに依存します。したがって、HPSクロック・コンフィグレーションの検証は、ボードデザインを完了する前に行うことが重要です。
ガイドライン : Platform Designerを使用してMPUおよびペリフェラルのクロックを確認します。
Platform Designerを使用して、HPSコンポーネント・コンフィグレーションを最初に定義します。HPS入力クロック、ペリフェラル・ソース・クロック、および周波数を設定します。Platform Designerの警告メッセージまたはエラーメッセージに注意してください。対処するには、クロック設定を変更するか、警告がアプリケーションに悪影響を及ぼさないことを確認します。
5.1.3.2. 早期ピン・プランニングおよびI/Oアサインメントの解析
HPSクロック入力は、HPS Dedicated I/O Bankにあります。このバンクは、イーサネット、大容量ストレージフラッシュ、UARTコンソールなどのHPSペリフェラルからのI/Oと共有しています。このバンク内の場所は、ユーザーによるコンフィグレーションが可能です。
ガイドライン : 専用I/OのI/O電圧レベルを選択します。
HPS Dedicated I/Oは、1.8V電圧レベルをサポートするLVCMOS/LVTTLです。HPS Dedicatedインターフェイス (イーサネットPHY、UARTコンソールなど) が、コンフィグレーションされてHPS Dedicated I/OバンクやHPS用のボードレベルのクロック回路を使用するようになっている場合は、そのインターフェイスが、1.8V LVCMOSシグナリングと互換性があることを確認してください。
5.1.3.3. HPSクロック、リセット、PoRのピン機能および接続
HPSクロックピンおよびオプションのリセットピンには、特定の機能動作および要件があります。これについて考慮する必要があるのは、ボードレベルのリセットロジックおよび回路のプランニングおよびデザインを行うときです。
ガイドライン : HPSクロック入力のピン位置を選択します。
HPS_OSC_CLK の配置は、HPS Dedicated I/O Bank内のいずれの場所にでもできます。HPS Platform Designerコンポーネントを使用して、HPS_OSC_CLK のピンを選択し、このバンクに割り当てられた他のHPSペリフェラルI/Oの場所との互換性を確認します。
ガイドライン : nCONFIG および HPS_COLD_nRESET の最小アサート時間仕様を遵守します。
nCONFIG および HPS_COLD_nRESET ピンをアサートしてください。最短時間は、Intel Agilex Device Family Pin Connection GuidelinesのHPSの項の指定に従います。
ガイドライン : HPS_COLD_nRESET をSDM QSPIリセットに接続しないでください。
HPS_COLD_nRESET は双方向ピンです。このピンをSDMに入力し、HPSおよびそのペリフェラルへのコールドリセット手順を開始します。HPS_COLD_nRESET 出力を使用して、ボード上にあるほかのデバイスが、HPSのリセット時にリセットすべきをリセットします。SDMの場合は、QSPIのリセット処理をソフトウェアを介して行います。HPS_COLD_nRESET をSDM QSPIリセットに接続すると、システムの動作が未定義になる可能性があります。
5.1.3.4. Remote System Update (RSU) 機能のDirect to Factoryピンのサポート
インテル® Agilex™ SoCでは、RSU機能をサポートしています。RSUによるデバイス・リコンフィグレーションの実装には、すべての インテル® Agilex™ デバイスで使用可能な専用RSU回路を使用します。この機能を使用すると、必要に応じて、複数のプロダクション・イメージをフェイルセーフのファクトリー・イメージと一緒に外部SDMフラッシュ上に保存することができます。PORを終了すると、SDMでは、プロダクション・イメージを特定のシーケンスでロードしようとします。すべてのプロダクション・イメージのロードに失敗した場合は、フェイルセーフのファクトリー・イメージがロードされます。
ガイドライン : Direct to Factory Image ピンを使用して、SDMに指示し、PORの終了時にFactory ImageまたはApplication Imageをロードさせます。
Direct to Factory Image は、オプションのピンです。これをRSU機能と併用します。1 このピンがPOR中にアサートされた場合、SDMでは、プロダクション・イメージのロードは試みません。代わりに、SDMでは、ファクトリー・イメージのロードを外部SDMフラッシュから直接行います。
HPSとRSU機能を併用する方法について詳しくは、 Intel® Agilex™ Configuration User Guide を参照してください。
5.1.3.5. 内部クロック
HPSクロックのコンフィグレーションの検証を、HPSクロック・コンフィグレーションのガイドラインの説明に従って実行したら、HPSクロック設定をソフトウェア制御下で実装してください。これは通常、ブートローダー・ソフトウェアによって行われます。また、ガイドラインに従って、HPSとFPGAとの間でリファレンス・クロックを転送してください。
ガイドライン : HPSとFPGAとの間のPLLのカスケード接続を避けます。
FPGAとHPSとの間のPLLのカスケード接続は、特性評価されていません。ジッター解析を実行しない限りは、FPGAとHPS PLLを一緒にチェーンしないでください。HPSからの出力クロックは、FPGAのPLLへの供給は目的としていません。
HPS PLLおよびクロックをソフトウェア制御下で管理するための特定の要件があります。
詳しくは、Intel Agilex Hard Processor System Technical Reference Manualの 「Clock Manager」 の項を参照してください。
5.1.3.6. HPSペリフェラルのリセット管理
HPSペリフェラルおよびサブシステムには、特定のリセットシーケンス要件があります。SoC EDSで用意されているブートローダー・ソフトウェアでは、リセット管理シーケンスの実装をReset Managerの項にある要件に従って行います。
ガイドライン : SoC EDSの最新のブートローダー・ソフトウェアを使用して、 HPSリセットを管理します。
必要とされるソフトウェア・フローの詳細については、Intel Agilex Hard Processor System Technical Reference Manualの 「Reset Manager」 の項を参照してください。
5.1.4. リセット・コンフィグレーション
5.1.4.1. HPSペリフェラルのリセット管理
HPSペリフェラルおよびサブシステムには、特定のリセットシーケンス要件があります。SoC EDSで用意されているブートローダー・ソフトウェアでは、リセット管理シーケンスの実装をReset Managerの項にある要件に従って行います。
ガイドライン : SoC EDSの最新のブートローダー・ソフトウェアを使用して、 HPSリセットを管理します。
必要とされるソフトウェア・フローの詳細については、Intel Agilex Hard Processor System Technical Reference Manualの 「Reset Manager」 の項を参照してください。
5.1.4.2. システムリセットの考慮事項
No. | チェック欄 | チェック項目 |
---|---|---|
1 | インテルでは、Reset Release IPをデザインで使用して、既知の初期化状態をロジックに提供して動作を開始させることを強くお勧めします。Reset Release IPについては、 Intel Agilex Configuration User Guideで説明しています。 |
- HPSコールドリセット
- HPSウォームリセット
- HPSコールドおよびリモート更新のトリガー
-
HPS Cold reset
- Impact on HPS - fSDMでは、プロセッサーをリセット状態に保ちます。SDMでは、コールドリセットの前にデバイスにロードされたのと同じビットストリームから、FSBLをHPSのオンチップメモリーにロードします。正常に完了すると、SDMでは、HPSリセットをリリースします。これにより、プロセッサーによるリセット例外アドレスからのコードの実行が開始します。
- Impact on FPGA - リセット中、FPGAコア・ファブリックは変更されません。リセットを終了すると、ソフトウェアでは、FPGA部分のリコンフィグレーションを行うかどうかを決定します。
-
HPSウォームリセット
- Impact on HPS - SDMでは、プロセッサーをリセット状態に保ちます。FSBLは、ウォームリセット中、オンチップRAMに残ります。SDMでは、プロセッサーのリセットを解除します。プロセッサーによってFSBLがオンチップRAMで実行されます。
- Impact on FPGA - リセット中、FPGA部分はそのままになります。リセットを終了すると、ソフトウェアでは、FPGA部分をリコンフィグレーションするかどうかを決定します。
-
HPS Cold reset and trigger a remote
Update
- Impact on HPS - SDMでは、プロセッサーをリセット状態に保ちます。 SDMでは、FSBLをその次の有効な *.pofイメージまたはファクトリー・イメージからHPSオンチップメモリーにロードします。*.pofには、SoCのFPGA部分およびFSBLペイロードをコンフィグレーションするためのデータが含まれています。正常に完了すると、SDMでは、HPSをリセットから解放し、プロセッサーによるリセット例外アドレスからコードの実行が開始します。
- Impact on FPGA - FPGA部分がまず消去され、次に、リコンフィグレーションが行われます。リコンフィグレーションには、次の有効なCore RBFまたはFactory Core RBFを使用します。有効なファクトリーRBFが常に存在している必要があります。
5.1.5. HPSピン多重化デザインの考慮事項
専用HPS I/Oピンは合計48個です。Platform DesignerのHPSコンポーネントには、ピン多重化の設定と、ほとんどのペリフェラルをFPGAファブリックに配線するオプションが用意されています。
ガイドライン : USB、EMAC、およびフラッシュのインターフェイスを最初にHPS Dedicated I/Oに配線します。USBから始めます。
インテルでは、USB、イーサネット、フラッシュなどの高速インターフェイスをDedicated I/Oに配線することから始めることをお勧めします。
5.1.6. HPS I/O設定 : 制約およびドライブ強度
ガイドライン : I/O設定のコンフィグレーションがHPS Dedicated I/Oに対して正しく行われていることを確認します。
HPSピン位置の割り当ては、Platform Designer HPSを含むシステムの生成時に自動的に管理されます。同様に、HPS EMIFインターフェイスに対するタイミングおよびI/O制約の管理は、 インテル® Agilex™ HPS IPの外部メモリー・インターフェイスによって行われます。HPS Dedicated I/Oに対するI/O制約 (ドライブ強度、弱いプルアップイネーブル、および終端設定) の管理は、 インテル® Quartus® Prime開発ソフトウェアを使用し、FPGA I/Oに対する方法と同じ方法で行ってください。ペリフェラルが、FPGA I/Oを使用するようにコンフィグレーションされている場合は、ピン位置を含み、すべて制約してください。これには、 インテル® Quartus® Prime開発ソフトウェアを使用します。
5.1.7. HPSインターフェイスのデザイン・ガイドライン
この項では、HPSインターフェイス (EMAS、USB、SD/MMC、NAND、UART、I2Cなど) のデザイン・ガイドラインの概要を説明します。HPSのペリフェラルについて詳しくは、 Intel® Agilex™ Hard Processor System Technical Reference Manualを参照してください。
5.1.7.1. PHYインターフェイスの選択に関するデザインの考慮事項
- HPS EMAC PHY Interface
- Reduced Media Independent Interface (RMII)
- Reduced Gigabit Media Independent Interface (RGMII)
- PHY Interfaces (FPGA I/Oを介した接続)
- GMII/MII
- RMII - MII-to-RMII Adapter使用
-
Serial Gigabit Media Independent Interface (SGMII) - GMII-to-SGMII Adapter使用
- インテル® Management Data Input/Output (MDIO)
- GMII/MII
5.1.7.1.1. HPS EMAC PHY Interface
- Reduced Media Independent Interface (RMII)
- Reduced Gigabit Media Independent Interface (RGMII)
ガイドライン : PHYデバイスを選択する際は、必要なイーサネット・レート、使用可能なI/Oおよび使用可能なトランシーバー、スキュー制御機能を提供するPHYデバイス、デバイスドライバーの可用性を考慮します。
MII/GMII PHYインターフェイスが、HPSコンポーネントによってFPGAファブリックに公開されている場合は、RMII、SGMII、SMII、TBIなどの他のPHYインターフェイス標準に適合させることができます。これには、FPGAのソフト・アダプテーション・ロジックやI/OおよびトランシーバーFPGA I/Oの汎用FPGA機能を使用します。
詳細については、選択したオペレーティング・システムで使用可能なデバイスドライバー、またはLinuxデバイスドライバーがIntel Agilex Transceiver-SoC Development Kitに付属していますので、そちらを参照してください。
EMACでは、さまざまなPHYインターフェイスと制御オプションが、HPSおよびFPGA I/Oを通じて提供されています。
イーサネット・レートの決定
- Intel Agilex Hard Processor System Technical Reference Manual
- Intel Agilex FPGA Data Sheet
5.1.7.1.2. RMII InterfaceおよびRGMII PHY Interface
RMIIまたはRGMII PHY Interfaceのどちらを使用するかを決定します。
RMII
RMIIでは、単一の集中システム同期50 MHzクロックソース (REF_CLK) をすべてのポートの送信パスと受信パスの両方に対して使用します。これにより、システム・クロッキングが簡素化され、ポート集積度の高いシステムでピン数が少なくなります。これは、デザインでは、ポートごとの TX_CLK/RX_CLK ソース同期クロックペアではなく、シングル・ボード・オシレーターを使用できるからです。
RMIIでは、2ビット幅の送信および受信データパスを使用します。すべてのデータ信号およびコントロール信号は、REF_CLK の立ち上がりエッジに同期しています。RX_ER コントロール信号は使われません。10Mbpsモードでは、すべてのデータ信号およびコントロール信号が、10 REF_CLK クロックサイクルの間、有効に保持されます。
インターフェイス・クロック方式
EMACおよびRMII PHYでは、50 MHz REF_CLK ソースを提供することができます。HPS_OSC_CLK 入力などの既存のクロックリソースを使用して、内部PLLによってシステム・クロッキング・デザインをさらに簡素化し、追加のクロックソースの必要性を排除します。
このセクションでは、HPS EMACソースとPHYソースの両方の REF_CLK に対してシステムデザインを使った場合について説明します。
ガイドライン : REF_CLK ソースの選択について詳しくは、 Intel Agilex FPGA Data Sheetを参照してください。
- HPSソースの REF_CLK
- PHYソースの REF_CLK
RX_CLK の配線が、デイジーチェーン接続で、ソースからMACそしてPHYに、またはソースからPHYになっている場合、フライト時間の違いを考慮する必要があります。これは、両方の REF_CLK ロードによるクロックの監視が、異なる時間に行われるためです。
ガイドライン : データおよびコントロール信号の配線遅延およびスキューを考慮して、HPS SoCデバイスのデータシートおよびPHYデータシートに指定されているとおりに、セットアップおよびホールドを確実に満たすようにします。
信号長の一致は必要ありません。ただし、例外として、信号長が24インチを超える場合は、データ遅延に対するクロック遅延を使用して、基本的なタイミング解析を実行してください。
周期は、50 MHzの REF_CLK で20 nsです。また、PHYの設定が10Mbpsモードか100Mbpsモードかにかかわらず、この周波数は変更されません。
HPS EMACのすべてのクロッキングのベースとなっているのは、RX_CLK です。そのため、REF_CLK の Tco および PCB のフライトタイムは、EMACまたはPHYからである場合は無視できます。最大12インチの一般的なボードトレースによって生じるフライトタイムは、わずか2 nsです。また、RX_CLK への RXD の Tsu は、最低4 nsです。これは、20 nsの期間を十分に下回っています。
RXD 対 RX_CLK の2 nsのホールド要件は、用意に満たすことができます。これは、TXD の Tco は、RX_CLK に対して、MACとPHYのいずれの場合でも2 nsだからです。インテルAgilex SoCデバイスの場合は、TXD の Tco は、RX_CLK に対して2 nsから10 nsです。
ガイドライン : REF_CLKソースがデューティー・サイクル要件を満たしていることを確認します。
REF_CLK の場合、ジッター仕様はありませんが、デューティー・サイクル要件は35% から65% です。この要件を満たすのは、インテルAgilex SoCデバイスのPLL、およびGPIOのクロック出力、または特にHPS IPからの TX_CLK 信号のクロック出力です。
RGMII
RGMIIは、PHYレイヤーで10 Mbps、100 Mbps、および1000 Mbpsの接続速度をサポートするため、最も一般的なインターフェイスです。
RGMIIでは、4ビット幅の送信データパスおよび受信データパスを使用し、そのいずれにも独自のソース同期クロックがあります。すべての送信データおよびコントロール信号は、TX_CLK にソース同期です。すべての受信データおよびコントロール信号は、RX_CLK にソース同期です。
すべてのスピードモードで、 TX_CLK はMACから供給され、RX_CLK はPHYから供給されます。1000 Mbpsモードでは、TX_CLK および RX_CLK は125 MHzであり、Dual Data Rate (DDR) シグナリングが使用されます。10 Mbpsおよび100 Mbpsモードでは、TX_CLK および RX_CLK は、それぞれ2.5 MHzおよび25 MHzであり、立ち上がりエッジのSingle Data Rate (SDR) シグナリングが使用されます。
I/Oピンのタイミング
このセクションでは、1000 Mbpsモードでの要件を満たすという観点から、RGMIIインターフェイスのタイミングについて説明します。インターフェイスのタイミングマージンは、1000 Mbpsモードの場合に最も厳しいので、ここで検討するのは、1000 Mbpsの場合のみです。
125 MHzでは周期は8 nsですが、両方のエッジを使用するため、有効周期はわずか4 nsです。TXとRXのバスは別々で、ソース同期であるため、タイミングが簡素化されます。RGMII仕様では、CLK をレシーバーの DATA からいずれかの方向に最小1.0 ns、最大2.6 ns遅延させることを要求します。
つまり、TX_CLK は、MAC出力から PHY 入力まで遅延させる必要があります。また、RX_CLKは、PHY出力からMAC 入力まで遅延させる必要があります。信号は、ソース同期して送信されます。範囲は、各方向に +/- 500 ps RGMIIスキュー仕様です。これは、出力ピンの測定値です。各方向に必要な最小遅延は1 nsですが、インテルでは、1.5 nsから2.0 nsの遅延をターゲットにして、大幅なタイミングマージンを確保することをお勧めします。
送信パスのセットアップ/ホールド
TX_CLK から TX_CTL および TXD[3:0] のセットアップとホールドのみが、送信に関係します。 インテル® Agilex™ I/Oによって、最大2.25 nsの追加遅延が、150 psの増分で出力に提供されます。具体的な値については、Intel Agilex FPGA Data Sheetを参照してください。この遅延のイネーブルには、 インテル® Quartus® PrimeのAssignment Editor内の出力遅延ロジックオプションを使用します。
ガイドライン : インテル® Agilex™ デバイスからの TX_CLK の場合、1.8 ns I/O遅延を導入して、RGMII仕様の1.0 ns PHY 最小入力セットアップ/ホールド時間を満たすようにしてください。
インテル® Agilex™ SoC HPS専用I/OおよびFPGA I/Oでは、150 psの増分で最大2.253 nsの出力遅延の追加をサポートします。具体的な値については、Intel Agilex FPGA Data Sheetを参照してください。HPS専用I/Oの使用時にMACの TX_CLK 出力に追加される遅延のコンフィグレーションは、HPS Platform Designer IPコンポーネントですることができます。
受信パスのセットアップ/ホールド
受信タイミングの考慮には、RX_CLK から RX_CTL および RXD[3:0] のセットアップとホールドのみが必要です。 インテル® Agilex™ I/Oでは、最大2.25 ns3 の追加遅延を入力に提供することができます。具体的な値については、Intel Agilex FPGA Data Sheetを参照してください。 インテル® Agilex™ デバイス入力の場合は、最大2.25 ns3 のI/O遅延によって、このタイミングが RX_CLK に対して達成できます。このとき、PHY側またはボードトレース遅延側での他の考慮事項はありません。
ガイドライン : PHYでRGMII-IDをサポートしていない場合は、 インテル® Agilex™ SoC HPS専用I/OまたはFPGA I/Oのコンフィグレーション可能な遅延要素を使用して、RX_DATA/CTL データ有効ウィンドウの中央に RX_CLK を配置します。
HPS I/Oを使用している場合は、HPS Platform Designer IPコンポーネントで RX_CLK の遅延のコンフィグレーションを行います。FPGA I/Oを使用している場合は、プロジェクト設定ファイル (.qsf) の入力遅延設定で RX_CLK 入力に遅延を追加します。
ガイドライン : 1000BASE-X PCSオプションを備えたTSE MAC IPでは、トランシーバーI/Oのオプションは提供していません。このため、SGMII PHYインターフェイスを実装する際に、 インテル® Agilex™ HPS EMACインスタンスのFPGAトランシーバーI/Oを使用するには、PCS I/Oオプションに対して 「NONE」 を選択すると、TBIインターフェイスが提供されます。トランシーバーPHY IPは、個別にインスタンス化して、 インテル® Agilex™ デバイスで接続してください。
5.1.7.1.3. FPGA I/Oを介して接続したPHYインターフェイス
FPGA I/OをHPS EMAC PHYインターフェイスに対して使用することが役立つのは、PHYインターフェイスに対応するのに十分な余裕がない場合や、HPS EMACでネイティブにサポートされていないPHYインターフェイスに適応させたい場合です。
ガイドライン : HPSコンポーネントをPlatform Designerでコンフィグレーションするときに、PHYインターフェイスの送信クロック周波数を指定します。
GMIIまたはMIIのいずれかについて、他のPHYインターフェイスへの適応を含め、HPS EMAC PHYインターフェイスの最大送信パスクロック周波数を指定します。GMIIの場合は125 MHz、MIIの場合は25 MHzです。このコンフィグレーションにより、適切なクロックタイミング制約が、Platform Designerシステム生成時にPHYインターフェイスの送信クロックに対して適用されます。
GMII/MII
GMIIおよびMIIは、 インテル® Agilex™ デバイスでのみ使用可能です。これには、EMAC信号をFPGAコアの配線ロジックに駆動し、最終的にFPGA I/OピンまたはFPGAコアの内部レジスターに駆動します。
ガイドライン : タイミング制約を適用し、Timing Analyzerでタイミングを検証します。
配線遅延は、FPGAコアとI/Oコンフィグレーションで大きく異なる可能性があるため、タイミングレポートを読み、特にGMIIの場合はタイミング制約を作成することが重要です。GMIIには125 MHzのクロックがあります。また、RGMIIとは異なり、GMIIはシングル・データ・レートです。ただし、GMIIには、CLKからDATAへのスキューに対する同様の考慮事項はありません。その信号は、ネガティブエッジで起動され、立ち上がりエッジでキャプチャされることにより、デザインによって中央に自動配置されます。
ガイドライン : FPGA I/O境界でインターフェイスI/Oをレジスター化します。
コアおよびI/Oの遅延が簡単に8 nsを超える場合、インテルでは、これらのバスをI/O Element (IOE) レジスターの各方向にレジスター化することをお勧めします。そうすることで、バスは、コアFPGAロジック・ファブリックの通過時に、整列したままになります。送信データおよび制御では、clock-to-data/control 関係を維持します。これには、この信号をHPS EMACからの emac[0,1,2]_gtx_clk 出力の立ち下がりエッジでラッチします。受信データおよび制御のラッチは、PHYから供給される RX_CLK の立ち上がりエッジ上のFPGA I/O入力で行います。
ガイドライン : MIIモードでの送信タイミングを考慮します。
PHYが100 Mbpsモードの場合、MIIは25 MHzです。PHYが10 Mbpsモードの場合、MIIは2.5 MHzです。そのため、最短クロック周期は40 nsです。PHYでは、送信と受信の両方向のクロックを供給します。送信タイミングは、PHYによって提供される TX_CLK クロックに関連しているため、ターンアラウンド・タイムが気になるかもしれませんが、40 nsの長いクロック周期のため、通常これは問題にはなりません。
リファレンス・クロックは、FPGAを介して送信されてからデータ用に出力されます。15nsの入力セットアップ時間があるため、往復遅延は25 ns未満でなければなりません。送信データおよび制御のFPGAファブリックへの起動は、PHYによって提供される TX_CLK のネガティブエッジのHPS EMAC送信パスロジックによって行われます。これにより、40 nsのクロックからセットアップまでのタイミングバジェットのうち20 nsが削除されます。
データ到着タイミングの往復クロックパス遅延により、PHYからSoCボードへの伝搬遅延が発生します。また、SoCピンからHPS EMAC送信クロック・マルチプレクサを介した内部パス遅延によって、残りの20 ns のセットアップ・タイミング・バジェットが奪われます。このため、MIIモードの送信データおよび制御のために、送信データおよび制御のリタイミングが、FPGAファブリックの phy_txclk_o クロック出力レジスターの立ち上がりエッジに対して必要になる場合がありますす。
RGMIIへの適応
インテル® Agilex™ SoCデバイスでは、FPGA I/Oピンを使用したHPS EMAC信号のRGMIIへの適合はサポートしていません。
RMIIへの適応
FPGAのロジックを使用して、MII HPS EMAC PHY信号をFPGA I/OピンのRMII PHYインターフェイスに適合させることが可能です。
ガイドライン : 50 MHz REF_CLK ソースを提供します。
RMII PHYでは、単一の50 MHzリファレンス・クロック (REF_CLK) を使用してデータの送受信と制御の両方を行います。50 MHzの REF_CLK には、ボードレベルのクロックソース、FPGAファブリックから生成されたクロック、または REF_CLK を生成することが可能なPHYから生成されたクロックを提供します。
ガイドライン : 送受信データおよび制御パスを適合させます。
FPGAファブリックで公開されるHPS EMAC PHYインターフェイスはMIIです。これには、2.5 MHzと25 MHzの送信および受信クロック入力が、それぞれ10 Mbpsと100 Mbpsの動作モードに対して個別に必要です。送信データパスおよび受信データパスは、どちらも4ビット幅です。RMII PHYでは、10 Mbpsと100 Mbpsの両方の動作モードで、送信データパスと受信データパスの両方に対して50 MHzの REF_CLK を使用します。RMIIの送信および受信データパスは2ビット幅です。10 Mbpsでは、送受信データおよび制御は、50 MHzの REF_CLK の10クロックサイクルの間は安定して保持されます。FPGAファブリックの適応ロジックを提供して、HPS EMAC MIIインターフェイスと外部RMII PHYインターフェイスとの間で適応させてください。つまり、25MHzおよび2.5 MHzの4ビットと50 MHzの2ビットとを適応させます。10 Mbpsモードでは、10倍のオーバーサンプリングを行います。
ガイドライン : HPS EMAC MIIの tx_clk_in クロック入力にグリッチのないクロックソースを提供します。
HPSコンポーネントのMIIインターフェイスには、emac[0,1,2]_tx_clk_in 入力ポートに2.5/25 MHzの送信クロックが必要です。2.5 MHzと25 MHzとの間の切り替えは、HPS EMACの要求により、グリッチなしで実行する必要があります。FPGA PLLを使用して、2.5 MHzおよび25 MHzの送信クロックと ALTCLKCTRL IPブロックを提供し、カウンター出力の選択をグリッチなしで行います。
SGMIIへの適応
GMII-to-SGMII Adapterコアを使用して、FPGAトランシーバーI/Oピンで、GMII HPS EMAC PHY信号をSerial Gigabit Media Independent Interface (SGMII) PHYインターフェイスに適応させます。これには、FPGAのロジックとマルチ・ギガビット・トランシーバーI/O をソフトCDRモードで使用します。この適応にカスタムロジックをデザインすることもできますが、このセクションでは、Platform DesignerのアダプターIPの使用方法を説明します。
ガイドライン : Platform DesignerのGMII-to-SGMII Adapter IPを使用します。
HPSコンポーネントをPlatform DesignerでEMAC 「To FPGA」 I/Oインスタンス向けにコンフィグレーションし、GMIIをPHYインターフェイス・タイプおよび管理インターフェイスとして選択します。結果として得られるPlatform DesignerのHPSコンポーネントGMII信号のエクスポートはしないでください 。代わりに、Intel GMII-SGMII Adapter IPをPlatform Designerサブシステムに追加し、HPSコンポーネントのGMII信号に接続します。GMII to SGMII Adapter IPでは、Platform DesignerのIntel HPS EMAC Interface Splitter IPを使用し、「emac」 コンジットをHPSコンポーネントから分割して、GMII-SGMII Adapterで使用できるようにします。このアダプターIPでは、1000BASE-X/SGMII PCS PHY専用モード (つまり、ソフトMACコンポーネントなし) でコンフィグレーションされたIntel Triple Speed Ethernet (TSE) MAC IPをインスタンス化します。Intel GMII to SGMII Adapter IPの使用方法に関する詳細は、Embedded Peripherals User Guideを参照してください。
5.1.7.1.4. デバイスドライバーの可用性の考慮
選択したオペレーティング・システムで使用可能なデバイスドライバー、または Intel® Agilex™ Transceiver-SoC Development Kitに付属のLinux* デバイスドライバーを参照してください。
5.1.7.1.5. MDIO
インテル® Management Data Input/Output (MDIO) PHY管理バスには、MACごとにMDCとMDIOの2つの信号があります。MDCはクロック出力であり、フリーランニングではありません。 2.5 MHzでは、最小周期は400 nsです。MDIOは、High-Zバスのターンアラウンド周期を持つ双方向データ信号です。
MACによってPHYへの書き込みがされると、データは立ち下がりエッジで起動されます。つまり、フライトタイム、信号の整定、およびレシーバーでのセットアップに対して200 ns -10 ns = 190 nsがあることになります。データの切り替えは、次のネガティブエッジまで行われないため、ホールドタイムも200 nsあります。このような要件は、ほとんどすべてのボードトポロジーで非常に簡単に満たすことができます。MACによってPHYから読み出しがされると、PHYの役目は、0から300 nsの読み出しデータをMACに出力することです。このとき、100 nsから10 nsを引いたセットアップ時間、つまり90 nsをフライトタイム、信号の整定、およびレシーバーでのセットアップに対します。この要件もまた、簡単に満たすことができます。
ガイドライン : MDCおよびMDIOでボードプルアップを行います
どちらの信号にも外部プルアップ抵抗が必要です。正しいプルアップ抵抗値については、PHYのデータシートを参照してください。1Kオームは標準的な抵抗値です。
ガイドライン : MDIOに必要なインターフェイスのタイミングを確認します。
MDIOでは、MDCに関するデータに対して10 nsのセットアップおよびホールドタイムが必要です。具体的な値については、Intel Agilex FPGA Data Sheetを参照してください。
5.1.7.1.6. シグナル・インテグリティー
ガイドライン : SoCデバイスのオンチップ終端 (OCT) を利用します。
インテル® Agilex™ デバイスでは、多くの設定に対して出力を調整できます。多くの場合、50オームの出力インピーダンスが最良値です。 インテル® Quartus® Primeでは、シリーズOCTを自動的に使用します。このとき、RGMII出力のキャリブレーションはありません。 インテル® Quartus® Primeのフィッターレポートをチェックして、インターフェイスの出力のOCT設定を確認します。
ガイドライン : 適切なボードレベルの終端をPHY出力で使用します。
少数のPHYのみによって、出力にI/Oチューニングが提供されているため、インテルでは、シミュレーターを備えた インテル® Agilex™ デバイスへの信号パスを確認することをお勧めします。必要に応じて、PHY出力ピンの近くの各信号に直列抵抗を配置して、反射を減らします。
ガイドライン : PHY TX_CLK およびEMAC RX_CLK 入力での反射が最小化され、ダブル・クロッキングを防止します。
接続が 「T」 として配線される場合は注意してください。これは、シグナル・インテグリティーを維持して、ダブルエッジが REF_CLK 負荷で発生しないようにする必要があるためです。REF_CLK ロードでの反射を最小限に抑えて、ダブル・クロッキングを防止してください。
ガイドライン : シグナル・インテグリティー (SI) シミュレーション・ツールを使用します。
SIシミュレーションは、単方向信号で簡単に実行できます。単方向信号は、ほとんどの場合ポイントツーポイントです。そのため通常は、各信号に配置する適切な直列抵抗を決定するだけで十分です。多くの場合、この抵抗は必要ありません。ただし、この決定を行うときには、デバイスの駆動強度、トレース長、およびトポロジーの検討が必要です。
5.1.7.2. USBインターフェイスのデザイン・ガイドライン
インテル® Agilex™ HPSは、組み込みUSB MACを業界標準のUSB 2.0 ULPI PHYに直接接続できます。これには、1.8 V専用HPS I/Oを使用します。FPGA配線リソースは使用されず、タイミングが固定されているため、デザインが簡素化されます。
USBデザインの考慮事項について詳しくは、Intel Agilex Hard Processor System Technical Reference Manualを参照してください。
5.1.7.3. SD/MMCおよびeMMCカード・インターフェイスのデザイン・ガイドライン
- SD バージョン3.0および3.01
- Embedded MMC (eMMC) バージョン4.5、4.51、および5.04
ガイドライン : 1.8V SDカード動作を使用している場合は、電圧変換トランシーバーが適切に実装されていることを確認します。
HPS I/Oでは、1.8 Vの固定電圧レベルを使用します。多くのSDカードには、1.8 Vまたは3.3 Vで信号を送るオプションがありますが、初期電源投入電圧要件は3.3 Vです。3.3VのSDカードを使用する場合は、電圧切り替えが必要です。正しい電圧レベルでカードに電力を供給するには、電圧変換トランシーバーが必要です。
Intel Agilex Hard Processor System Technical Reference ManualのSD/MMC Controllerの章のVoltage Switchingの項にあるガイドラインに従ってください。
HPS I/Oバンク電圧 | SDカード電圧 | レベルシフターの必要性 |
---|---|---|
1.8 V | 3.0 V | 必要 |
1.8 V | 1.8 V | 不要 |
5.1.7.4. フラッシュ・インターフェイスのデザイン・ガイドライン
ガイドライン : QSPIフラッシュをSoCデバイスに接続します。
HPSにはQSPIフラッシュ・コントローラーはありません。HPSからは、SDMのQSPIコントローラーにアクセスできます。
Flash Memory の実装例については、 Intel® Agilex™ F-Series Transceiver-SoC Development Kit Schematics を参照してください。
ガイドライン : インテル® Quartus® Primeプロ・エディション GUIで、選択したQSPIフラッシュデバイスの機能に一致するコンフィグレーション・クロック速度を選択します。
QSPIフラッシュをSDM QSPIインターフェイスに接続する際の考慮事項について詳しくは、Intel Agilex Hard Processor System Technical Reference Manualを参照してください。
5.1.7.4.1. NANDフラッシュ・インターフェイスのデザイン・ガイドライン
選択したNANDフラッシュデバイスが、8ビットまたは16ビットのONFI 1.0準拠デバイスであることを確認します。
- 外部フラッシュデバイスは、8ビットまたは16ビットのONFI 1.0に準拠であること
- x16を大容量ストレージ使用のためにサポートしていること
- シングルレベル・セル (SLC) またはマルチレベル・セル (MLC)
- ce# と rb# の1組のピンのみがブートソースで使用可能で、追加で最大3組が大容量ストレージに使用可能であること
- ページサイズ : 512バイト、2 KB、4 KB、または8 KB
- ブロックあたりのページ数 : 32、64、128、256、384または512
- エラー訂正コード (ECC) セクターサイズのプログラムは、512バイト (4、8、または16ビット訂正) または1024バイト (24ビット訂正) に対して可能であること
NAND Flash Controllerについて詳しくは、 Intel® Agilex™ Hard Processor System Technical Reference ManualのNAND Flash Controllerの項を参照してください。
5.1.7.5. UARTインターフェイスのデザイン・ガイドライン
HPSブート・ファームウェアでは、ブートプロセス全体を通して、コンソール・ステータス・メッセージをHPS UARTポートに出力します。ブート・ファームウェア・コンソール出力を表示する場合は、次のガイドラインを考慮して、HPS UARTペリフェラルをHPSブート時に使用可能なデバイスI/Oに割り当てます。
ガイドライン : HPS先行ブートおよびコンフィグレーション・スキームでは、HPS UARTペリフェラルをHPS Dedicated I/Oバンクに割り当てます。
SDMによるHPS Dedicated I/OおよびHPS EMIF I/Oのコンフィグレーションとユーザーモード (Early I/O Releaseフロー) へのリリースは、HPSの起動前に行われます。そのほかのFPGA I/Oおよびファブリックが使用できるのは、FPGAの残りの部分がブートフローの後半でコンフィグレーションされた後です。
ガイドライン : FPGA先行ブートおよびコンフィグレーション・スキームでは、HPS UARTをHPS Dedicated I/OまたはFPGA I/Oに割り当てます。
SDMによるFPGA全体のコンフィグレーションは、I/Oリング全体を含み、HPSの起動前に行われます。
ガイドライン : UART信号の配線をFPGAファブリックを介して行う場合、フロー・コントロール信号を正しく接続します。
信号 | 方向 | 接続 |
---|---|---|
CTS | 入力 | Low |
DSR | 入力 | High |
DCD | 入力 | High |
RI | 入力 | High |
DTR | 出力 | 接続なし |
RTS | 出力 | 接続なし |
OUT1_N | 出力 | 接続なし |
OUT2_N | 出力 | 接続なし |
詳しくは、Intel Agilex Hard Processor System Technical Reference Manualの 「UART Controller」 の項を参照してください。
5.1.7.6. I2Cインターフェイスのデザイン・ガイドライン
ガイドライン : I2C信号の配線をFPGAファブリックを介して行う場合、オープンドレイン・バッファーをインスタンス化します。
I2C信号の配線をFPGAを介して行う場合、HPSからFPGAファブリックへのI2Cピン (i2c*_out_data, i2c*_out_clk) は、オープンドレインではなく、ロジックレベルが反転しています。したがって、ロジックレベル0を I2Cバスに駆動するには、対応するピンをHighに駆動します。この実装は、I2Cピンを使用してトライステート・バッファーの出力イネーブルに直接接続するできるので便利です。オープンドレイン・バッファーを実装するには、altiobuff を使用してください。
インテルでは、 I2CをFPGAファブリックに公開する場合は、I/Oバッファー (ALTIOBUF) IPコアを使用することをお勧めします。
ガイドライン : プルアップがボードデザインの外部SDAおよびSCL信号に追加されていることを確認します。
I2C信号はオープンドレインです。このため、プルアップを使用して、バス上のデバイスによってバスがLowに引き下げられていないときに、バスがHighに引き上げられていることを確認する必要があります。
ガイドライン : HighおよびLowのクロックカウントのコンフィグレーションが、I2Cインターフェイスの速度に対して正確に行われていることを確認します。
- SDM—125 MHz
- HPS—100 MHz
5.1.8. FPGAとHPS間のインターフェイス接続
HPSとFPGAファブリックとの間のメモリーマップ接続は、デザインのパフォーマンスを最大化するための重要なツールです。この章にある推奨トポロジーのガイドラインを使用して、システムのパフォーマンスを最適化します。
5.1.8.1. HPSメモリーマップド・インターフェイスの概要
- SoC-to-FPGA ブリッジ : 32、64、または128ビット幅のAdvanced Microcontroller Bus Architecture (AMBA*) Advanced eXtensible Interface (AXI*)-4
- 軽量SoC-to-FPGAブリッジ : 32ビット幅 AXI-4
- FPGA-to-SoCブリッジ : 128、256、512ビット幅 ACE*-Lite
タイミング・クロージャーの考慮事項
FPGAに公開されるブリッジは同期です。またクロック交差が行われるのは、インターフェイス内部です。そのため、FPGA向けロジックとデザインの両方が、Timing Analyzerでタイミングを収束する必要があります。割り込みは、HPSによって非同期と見なされ、HPSロジックによって内部HPSクロックドメインに再同期されます。そのため、その割り込みは、タイミングを収束する必要はありません。
5.1.8.1.1. SoC-to-FPGAブリッジ
ガイドライン : SoC-to-FPGAブリッジを使用して、FPGAがホストするメモリーをHPSに接続します。
SoC-to-FPGAブリッジにより、HPSのマスター (マイクロプロセッサー・ユニット (MPU)、DMA、または統合マスターを備えたペリフェラルなど) から、SoCデバイスのFPGA部分でホストするメモリーにアクセスできるようになります。このブリッジでは、32、64、および128ビットのデータパスをサポートしているため、幅を調整して、ブリッジに接続しているFPGAファブリックの最大スレーブデータ幅にすることができます。このブリッジは、バースト転送を実行するマスターによる使用を意図しているので、FPGAファブリック内のペリフェラル・レジスターへのアクセスには使用しないでください。代わりに、制御レジスターおよびステータスレジスターへのアクセスは、軽量SoC-to-FPGAブリッジに送信する必要があります。
ガイドライン : SoC-to-FPGAブリッジに接続しているメモリーをHPSのブートに使用している場合、SoCデバイスのFPGA部分のコンフィグレーションが最初に行われていることを確認します。
SoC-to-FPGAブリッジにアクセスするのは、MPUのブートがFPGAからされている場合です。MPUをFPGAからブートする前に、SoCデバイスのFPGA部分をコンフィグレーションし、SoC-to-FPGAブリッジをアドレス可能なスペースに再マップしてください。そうしないと、SoC-to-FPGAブリッジに起動プロセス中にアクセスした場合、バスエラーが発生します。このような要件を満たすには、FPGA先行のブートおよびコンフィグレーション・スキームを使用します。ブート・ファームウェア生成の標準ツールフローによって、SoC-to-FPGAブリッジが、アドレス可能なメモリー空間にマッピングされます。
FPGA先行ブートおよびコンフィグレーション・スキームおよび インテル® Agilex™ HPS向けブート・ファームウェアについて詳しくは、Intel Agilex SoC Boot User Guideを参照してください 。
5.1.8.1.2. 軽量HPS-to-FPGAブリッジ
ガイドライン : 軽量SoC-to-FPGAブリッジを使用して、HPSによる制御が必要なIPを接続します。
軽量SoC-to-FPGAブリッジにより、HPSのマスターは、SoCデバイスのFPGA部分のメモリーマップされた制御スレーブポートにアクセスできるようになります。通常、HPS内のMPUのみがこのブリッジにアクセスして、制御レジスターおよびステータスレジスターによるFPGAのペリフェラルへのアクセスを実行します。
ガイドライン : 軽量SoC-to-FPGAブリッジは、FPGAメモリーには使用しないでください。代わりに、SoC-to-FPGAブリッジをメモリーに使用します。
MPUからペリフェラル内の制御レジスターおよびステータスレジスターにアクセスする場合、このトランザクションは、通常、厳しい順序付けがされます (ポストされません)。軽量SoC-to-FPGAブリッジをレジスターアクセス専用にすることで、アクセス時間が最小限に抑えられます。これは、バースト・トラフィックが SoC-to-FPGAブリッジに配線されるためです。軽量SoC-to-FPGAブリッジには、FPGAファブリックへの32ビット幅の固定接続が備えられています。これは、ほとんどのIPコアでは、32ビットの制御レジスターおよびステータスレジスターを実装しているためです。ただし、Platform Designerによってトランザクションを適合し、FPGA部分で生成されたインターコネクト内では、32ビット以外の幅にすることができます。
5.1.8.1.3. FPGA-to-SoCブリッジ
ガイドライン:FPGA-to-SoCブリッジを使用して、CCUにキャッシュ・コヒーレント・メモリー・アクセス、またはFPGAのマスターからHPS SDRAMにキャッシュ不可アクセスします。
FPGA-to-HPSブリッジによって、HPS内のペリフェラルへのアクセスまたは、FPGAからHPS SDRAMへのアクセスができます。このアクセスは、FPGAファブリック内に実装された任意のマスターに対して使用可能です。FPGAファブリックに公開されているブリッジスレーブをコンフィグレーションして、ACE*-Liteプロトコルをサポートします。このときのデータ幅は、128、256、または256ビットです。
キャッシュ・コヒーレント・トランザクション用のACE-Liteプロトコル拡張について詳しくは、 Arm* Developerウェブサイトの AMBA* AXI and ACE Protocol Specificationを参照してください。
5.1.8.1.4. インターフェイス帯域幅
HPSとFPGAファブリックとの間のデータ移動に使用するインターフェイスを特定するには、各インターフェイスの帯域幅を理解する必要があります。次の図で示すのは、HPSとFPGAファブリックとの間で使用可能なピーク・スループット、およびHPS内の内部帯域幅です。ここに示す例で想定しているのは、FPGAファブリックは400 MHzで動作し、MPUは1500 MHzで動作し、64ビット外部SDRAMは3200 Mbpsで動作することです。
各HPSインターフェイスの相対レイテンシーおよびスループット
インターフェイス |
トランザクションの使用例 |
レイテンシー |
スループット |
---|---|---|---|
SoC-to-FPGA |
MPUからFPGAのメモリーにアクセスする場合 |
中 |
中 |
SoC-to-FPGA |
MPUからFPGAのメモリーにアクセスする場合 |
中 |
非常に低い |
軽量SoC-to-FPGA |
MPUからFPGAのレジスターにアクセスする場合 |
低 |
低 |
軽量SoC-to-FPGA |
MPUからFPGAのメモリーにアクセスする場合 |
低 |
非常に低い |
FPGA-to-SoC |
FPGAマスターから非キャッシュ・コヒーレントSDRAMにアクセスする場合 |
高 |
中 |
FPGA-to-SoC |
FPGAマスターからSoCオンチップRAMにアクセスする場合 |
低 |
高 |
FPGA-to-SoC |
FPGAマスターからSoCペリフェラルにアクセスする場合 |
低 |
低 |
FPGA-to-SoC |
FPGAマスターからコヒーレント・メモリーにアクセスして、キャッシュミスが発生する場合 |
高 |
中 |
FPGA-to-SoC |
FPGAマスターからコヒーレント・メモリーにアクセスして、キャッシュミスが発生する場合 |
低 |
中から高 |
FPGA-to-SoC |
FPGAマスターからSoCに直接アクセスする場合 |
中 |
高から非常に高い |
ガイドライン : SoC-to-FPGAブリッジを使用したMPUからFPGAのペリフェラル・レジスターへのアクセスは避けます。
SoC-to-FPGAブリッジは、バースト・トラフィック用に最適化されています。また、ペリフェラルのアクセスは通常、1ビートの短いワードサイズのアクセスです。その結果、ペリフェラルへのアクセスがSoC-to-FPGAブリッジを介してされると、すでにインフライト状態にある他のバースト・トラフィックによってトランザクションがストールする可能性があります。
ガイドライン : SoC-to-FPGAブリッジを使用したMPUからFPGAのペリフェラル・レジスターへのアクセスは避けます。
軽量SoC-to-FPGAブリッジは、非バースト・トラフィック向けに最適化されています。また、通常、メモリーアクセスは、バーストとして実行されます (キャッシュ動作のため、多くの場合32バイトです)。その結果、メモリーへのアクセスが、軽量 SoC-to-FPGAブリッジを介してされると、スループットが制限されます。
ガイドライン : ソフトロジックをFPGA (DMAコントローラーなど) で使用して、共有データをHPSとFPGAとの間で移動させます。MPUおよびHPS DMAコントローラーの使用は、この使用例では避けます。
HPSとFPGAとの間で共有データを移動させる場合、インテルでは、MPUまたはHPS DMAコントローラーを使用してデータを移動するのではなく、FPGAから行うことをお勧めします。FPGAでは、キャッシュ・コヒーレント・データにアクセスする必要がある場合、適切なACE-Liteキャッシュ拡張シグナリングを使用して、FPGA-to-SoCブリッジにアクセスし、キャッシュ可能なトランザクションを発行する必要があります。非キャッシュ・コヒーレント・データをFPGAまたはHPSに移動させる必要がある場合、FPGAロジックに実装されたDMAエンジンがFPGA-to-SoCブリッジを介してデータを移動させ、可能な限り最良のスループットを実現します。 HPSにはDMAエンジンが内蔵されており、それによってHPSとFPGAとの間でデータを移動させます。ただしその目的は、メモリーのマスターやメモリー間のデータ移動を提供しないペリフェラルの支援をMPUに代わって行うことです。
5.1.8.2. 推奨されるシステムトポロジー
適切なシステムトポロジーを選択することは、可能な限り最良のスループットをデザインで実現することにつながります。最適なパフォーマンスを得るため、インテルのトポロジー・ガイドラインに従ってHPSとFPGAとの間でデータを移動させてください。このガイドラインは、キャッシュ・コヒーレントおよび非キャッシュ・コヒーレント両方のデータ移動について網羅しています。
5.1.8.2.1. システムレベルのキャッシュ・コヒーレンシー
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 使用するマスターとその数を検討します。 | |
2 | キャッシュ可能なアクセスの管理方法を決定します。 |
- MPU
- DMA
- マスター・インターフェイスを備えたペリフェラル
- HPSに接続しているFPGA内のマスター
キャッシュ・コヒーレンシーは、システム内の複数のマスター間でデータを共有する必要がある場合に理解すべき重要なテーマです。SoCデバイスの場合は、このようなマスターは、MPU、DMA、マスター・インターフェイスを備えたペリフェラル、およびHPSに接続しているFPGA内のマスターです。MPUには、レベル1およびレベル2のキャッシュ・コントローラーが含まれているため、システム内のメインメモリーよりも最新の内容を多く保持できます。HPSでは、2つのメカニズムをサポートし、システム内のマスターによってメモリーのコヒーレント・ビューが確実に監視できます。メインメモリーに最新の値が含まれるようにするか、ACE-Liteインターフェイスを使用して、マスターからディレクトリー・ベースのCCUファブリックにアクセスします。
MPUでは、バッファーを割り当てて、キャッシュ不可にします。これにより、データのキャッシュが、L1およびL2キャッシュによってされることがなくなります。MPUではまた、キャッシュ可能なデータにアクセスし、ほかのマスターからデータへのアクセスを試みる前にデータをメインメモリーにフラッシュするか、キャッシュ不可のバッファーにコピーすることができます。オペレーティング・システムには、通常、キャッシュ・コヒーレンシーを維持するメカニズムとして上記の両方の方法が用意されています。
システム内のマスターからコヒーレント・データにアクセスするために、MPUに依存して、データをキャッシュせずにメインメモリーに配置するか、CCUを介したキャッシュ可能なアクセスをシステム内のマスターに実行させます。使用するメカニズムは、マスターがアクセスしているメモリーのバッファーサイズによって異なります。
詳しくは、FPGAとのインターフェイス接続の項を参照してください。
ガイドライン : CCUを介してアクセスするデータが1 MB L2キャッシュに収まることを確認して、スラッシング・オーバーヘッドを回避します。
L2キャッシュのサイズは1 MBです。そのため、システム内のマスターから合計サイズが1 MBを超えるバッファーに頻繁にアクセスすると、スラッシングが発生します。
キャッシュ・スラッシングの状況になると、データのサイズがキャッシュのサイズを超えるため、キャッシュによる頻繁なエビクションとメインメモリーへのプリフェッチの実行が起きます。スラッシングは、データをキャッシュすることによるパフォーマンス上の利点を打ち消します。
スラッシングの可能性がある状況では、マスターから非キャッシュ・コヒーレント・データにアクセスし、MPU上で実行されるソフトウェアによってシステム全体のデータ・コヒーレンシーが維持できるようにする方が理にかなっています。
ガイドライン : データの小さなバッファーをMPUとシステムマスターとの間で共有する場合、キャッシュ可能なアクセスをシステムマスターから実行することで、キャッシュフラッシュ動作が原因で発生するオーバーヘッドを回避することを検討します。
システム内のマスターからより小さなコヒーレント・データ・ブロックへのアクセスが必要な場合、検討が必要な事項は、MPUからバッファーへのアクセスをキャッシュ可能なメモリーとして実行させ、システム内のマスターからデータへキャッシュ可能なアクセスを実行させることです。ACE-Liteプロトコルを介したCCUへのキャッシュ可能なアクセス は、FPGA-to-HPSブリッジによってサポートされ、マスターとMPUの両方からアクセスするデータが同じコピーであることが保証されます。MPUによるキャッシュ可能なバッファーの使用と、システムマスターによるキャッシュ可能なアクセスの実行により、ソフトウェアでは、システム全体のコヒーレンシーを維持する必要がなくなり、MPUとシステムマスターの両方によって同じデータのコピーの監視ができるようになります。
5.1.8.2.2. HPSからFPGAファブリックへのアクセス
HPSのマスターからFPGAファブリックにアクセスするためには、2つのブリッジを使用できます。各ブリッジは、特定のトラフィック・パターン用に最適化されています。そのため、HPSマスターからFPGAファブリックにアクセスする必要がある場合、どのトラフィック・パターンがシステムに適用できるかを決定する必要があります。
ガイドライン : HPSをFPGAのソフト・ロジック・ペリフェラルに接続する場合は、軽量SoC-to-FPGAブリッジを介します。
ハードウェア・デザインのペリフェラルが、HPSからアクセス可能な場合は、そのペリフェラルを軽量SoC-to-FPGAブリッジに接続する必要があります。通常、ペリフェラルへのアクセスは、HPS MPUによってされ、一度に1つのレジスターです。このとき、厳しく順序付けされた (ポスティングされていない) アクセスを使用します。アクセスは厳しく順序付けされているため、MPUからのトランザクションは、スレーブからの応答があるまでは完了しません。その結果、厳しく順序付けされたアクセスは、レイテンシーの影響を受けやすくなります。そのため、軽量SoC-to-FPGAブリッジをHPSに組み込んで、厳しく順序付けされたアクセスのレイテンシーを低減します。
ガイドライン : HPSをFPGAメモリーに接続する場合は、SoC-to-FPGAブリッジを介します。
ハードウェア・デザインのメモリーが、HPSからアクセス可能な場合は、そのメモリーをSoC-to-FPGAブリッジに接続する必要があります。軽量SoC-to-FPGAブリッジとは異なり、SoC-to-FPGAブリッジは、DMA転送やFPGAメモリーからのMPUソフトウェア実行などのバースト・トラフィック向けです。
ガイドライン : HPSからFPGAロジックのメモリーとペリフェラルの両方にアクセスする必要がある場合は、SoC-to-FPGAブリッジおよび軽量のSoC-to-FPGAブリッジを使用します。
SoC-to-FPGAブリッジと軽量SoC-to-FPGAブリッジの両方をデザインに含めることが重要になるのは、HPSからアクセス可能なメモリーとペリフェラルが、FPGAロジックに混在している場合です。ペリフェラルのアクセスは、通常、レイテンシーの影響を受けやすいため、軽量SoC-to-FPGAブリッジを使用してペリフェラルにアクセスすると、スタベーションを防止することができます。これは、FPGAファブリックに対する他のバーストアクセスが、SoC-to-FPGAブリッジを介して行われる場合です。両方のブリッジへの並行アクセスが可能なのは、複数のHPSマスターからFPGAファブリックに同時にアクセスしている場合です。そのため、両方のブリッジを含めることによっても、システムのパフォーマンスを向上させることができます。
5.1.8.2.3. MPUとFPGAのデータ共有
データ・スループットを最適化するには、HPSとFPGA間でデータを共有する正しい方法を選択します。このセクションでは、HPS SDRAMはデータソースであり、FPGAがそのデータソースにアクセスする必要があると仮定します。FPGAからHPS SDRAMで発生したデータにアクセスするには、主に2つの方法があります。
- FPGAからキャッシュされていないデータにアクセスする場合は、直接、SDRAMをターゲットとするFPGA-to-SoCブリッジを介します。
- FPGAからキャッシュされているデータにアクセスする場合は、SDRAMをターゲットとするFPGA-to-SoCブリッジを介します。
SDRAM内のデータが最新のデータコピー (ソフトウェア管理コヒーレンシー) である場合、最高のスループットでデータにアクセスする方法は、FPGAのマスターからデータにFPGA-to-SoCブリッジを介して直接アクセスすることです。
SDRAM内のデータが最新のデータコピーではない可能性があり、また、ソフトウェアによってMPUキャッシュがフラッシュされ、システム全体のコヒーレンシーが維持されていない場合、FPGAマスターによってFPGA-to-SoCブリッジに対するキャッシュ可能なトランザクションを実行し、確実に最新データにアクセスできるようにします。
ガイドライン : HPS DMAコントローラーを使用したFPGAとHPSの間でのデータ移動はしないでください。代わりに、FPGAファブリック内のソフトDMAコントローラーを使用します。HPS DMAコントローラを使用するのは、HPS内に残ったメモリーコピーまたはペリフェラル・データを移動する場合のみです。
HPS DMAを使用したFPGAへのデータの移動は非推奨です。これは、HPS SDRAMへのDMA帯域幅が制限されているためです。HPS DMAを使用する目的は、MPUに代わってバッファーを移動すること、またはペリフェラルとメモリー間の転送です。したがって、FPGAからHPSメモリーのバッファーにアクセスする必要がある場合や、FPGAに格納されたデータにHPSからアクセスする必要がある場合は、この転送は、HPSによって開始するのではなく、FPGAのマスターに実行させることを常にお勧めします。
5.1.8.2.4. FPGAからのキャッシュ可能なデータアクセスおよびキャッシュ不可能なデータアクセスの例
例1 : FPGAによるHPS EMIFからの非キャッシュ・コヒーレント・データの直接読み出し
この例では、FPGAからアクセスする必要があるデータは、HPS EMIFに保存されています。MPUからアクセスするデータと同じデータのコピーにFPGAからアクセスするためには、L1データキャッシュとL2キャッシュに既にデータのコピーがある場合は、そのキャッシュをフラッシュする必要があります。HPS EMIFに最新データのコピーが含まれるようになると、FPGAからこのデータにアクセスするための最適なパスは、SDRAMを直接ターゲットとするFPGA-to-SoCブリッジを介して、FPGAマスターからデータを読み出すことです。
FPGA-to-SoCブリッジを最適化して読み出しスループットを最大化するには、システム要件に従ってブリッジ幅を設定します。インテルでは、FPGAにあるバースト可能なマスターを使用し、4ビート以上のバースト長のポスティングが可能なSDRAMから読み出すことをお勧めします。
例2 : FPGAによるHPS EMIFからの非キャッシュ・コヒーレント・データの直接読み出し
この例では、HPS MPUからアクセスする必要があるデータは、FPGA内から発生したものです。MPUからデータへのコヒーレント・アクセスが、そのデータの書き込み後にできるようにするには、ソフトウェアによるキャッシュラインのフラッシュまたは無効化を転送開始前に行うことが必要になる場合があります。これにより、最新データがその書き込み後にSDRAMに含まれるようになります。キャッシュ動作の実行に失敗すると、1つ以上のキャッシュラインが排除され、FPGAマスターによって書き込まれたデータが上書きされます。
例3 : FPGAによるHPSからのキャッシュ・コヒーレント・データの読み出し
この例では、FPGAからアクセスする必要があるデータは、HPSで発生したものです。HPS内のMPUからこのデータへのアクセスが最近行われたため、データがまだキャッシュに含まれている可能性があります。そのため、場合によっては、FPGAからキャッシュされたデータにアクセスすることが最適です。ソフトウェアのオーバーヘッドによるダーティー・キャッシュ・ラインのフラッシュが必要になる状況を回避するため、FPGAでは、FPGA-to-SoCブリッジを介してキャッシュ・コヒーレント読み出しを実行します。重要なのは、読み出されるバッファーが比較的小さいことです。そうでない場合、L2キャッシュでは、SDRAMからのデータの読み出しをほとんどの転送でスラッシングする可能性があります。より大きなバッファー転送の場合、より適切な方法として、FPGAによるデータ読み出しを、SDRAMに直接アクセスするFPGA-to-SoCブリッジを介して行います。これは、「例1 : FPGAによるHPS EMIFからのデータの直接読み出し」 でも示したとおりです。
ガイドライン : FPGA-to-SoCブリッジをターゲットとしたフルアクセスを実行します。
トランザクションをキャッシュ可能にするには、FPGAマスターによるFPGA-to-SoCブリッジからの読み出しとACE-Liteプロトコルのキャッシュ拡張シグナリングの利用が必要です。キャッシュ・コヒーレント・アクセス用のACE-Liteプロトコルのシグナリング拡張について詳しくは、 Intel® Agilex™ Hard Processor System Technical Reference ManualのCache Coherency Unitの項を参照してください。
ガイドライン : 64バイトに整列したキャッシュ可能なアクセスをFPGA-to-SoCブリッジをターゲットとして実行します。
HPSのCCUは、キャッシュラインと同じサイズ (64バイト) のトランザクション向けに最適化されています。そのため、データを64バイトの境界に整列させ、データ幅を調整した後、512ビットのFPGA-to-SoCブリッジへのバースト長が最大になるようにする必要があります。例えば、128ビットのFPGAマスターは、データを64バイトに整列させ、完全な128ビット (16バイト) のアクセスをバースト長4で実行する必要があります。
ガイドライン : キャッシュ可能なトランザクションごとに64バイトにアクセスします。
各バースト・トランザクションによって64バイトにアクセスするようにします。各トランザクションは、64バイト境界で開始する必要があります。
FPGAマスター幅 (ビット) | アクセスサイズ (バイト) | バースト長 |
---|---|---|
32 | 4 | 16 |
64 | 8 | 8 |
128 | 16 | 4 |
256 | 32 | 2 |
512 | 64 | 1 |
例4 : FPGAによるHPSへのキャッシュ・コヒーレント・データの書き込み
この例で、HPS MPUからアクセスする必要があるデータは、FPGAで発生したものです。小さなデータブロックをMPUと共有するための最も効率的なメカニズムは、FPGA内のロジックによるHPSへのキャッシュ可能な書き込みを実行することです。重要なのは、HPSに書き込まれるデータの量が、比較的小さなブロックの形式であることです。これは、大きなブロックの書き込みによってL2キャッシュがスラッシングされ、ほとんどの転送でキャッシュがSDRAMに書き込まれるためです。大きなバッファー転送の場合、より適切な方法として、FPGAによって、SDRAMを直接ターゲットとするFPGA-to-SoCブリッジへのデータ書き込みを行います。これは、例2でも示したとおりです。
ガイドライン : FPGA-to-SoCブリッジをターゲットとしたフルアクセスを実行します。
トランザクションをキャッシュ可能にするには、FPGAマスターによるFPGA-to-SoCブリッジへの書き込みとACE-Liteプロトコルのキャッシュ拡張シグナリングの利用が必要です。キャッシュ・コヒーレント・アクセス用のACE-Liteプロトコルのシグナリング拡張について詳しくは、 Intel® Agilex™ Hard Processor System Technical Reference ManualのCache Coherency Unitの項を参照してください。
ガイドライン : L2 ECCがイネーブルになっている場合、FPGA-to-SoCブリッジへのキャッシュ可能なアクセスが8バイト境界に整列していることを確認します。
エラー検出および訂正 (ECC) をL2キャッシュでイネーブルする場合、各8バイトのデータグループの書き込みが完了していることも併せて確認してください。L2キャッシュによるECC動作は、64ビット境界で行われます。そのため、キャッシュ可能なアクセスを実行する場合、アクセスは常に8バイト境界に整列させて、書き込みは8つの全レーンに一度に行ってください。この規則に従わないと、ダブル・ビット・エラーが発生し、そのエラーは回復できません。
ECCがイネーブルかディスエーブルに関わらず、64バイトのキャッシュ・トランザクションによって最良のパフォーマンスがもたらされます。64バイトのキャッシュ・トランザクションについて詳しくは、「例3 : FPGAによるHPSからのキャッシュ・コヒーレント・データの読み出し」 のセクションのガイドライン: キャッシュ可能なトランザクションごとに64バイトにアクセスします。を参照してください。
ガイドライン : L2 ECCがイネーブルの場合、FPGA-to-SoCブリッジへのキャッシュ可能なアクセスの8つの書き込みストローブのグループがイネーブルであることを確認します。
- 32ビットFPGAマスターからのFPGA-to-SoCアクセスでは、バースト長は2、4、8、または16で、すべての書き込みバイトストローブはイネーブルしてください。
- 64ビットFPGAマスターからのFPGA-to-SoCアクセスでは、すべての書き込みバイトストローブはイネーブルしてください。
- 128ビットFPGAマスターからのFPGA-to-SoCアクセスでは、上位8または下位8 (またはその両方) の書き込みバイトストローブはイネーブルしてください。
5.1.8.3. スタート地点として推奨するSoC-to-FPGAインターフェイス・デザイン
ガイドライン : インテルでは、HPSをFPGAのソフトIPにインターフェイス接続する例としてゴールデン・ハードウェア・リファレンス・デザイン (GHRD) からスタートすることをお勧めします。
ゴールデン・ハードウェア・リファレンス・デザイン (GHRD) には、最適なデフォルト設定とタイミングが用意されており、「入門」 システムのベースとして使用できます。
詳しくは、「ゴールデン・ハードウェア・リファレンス・デザイン (GHRD)」 の項を参照してください。
5.1.8.4. ブリッジのコンフィグレーションおよび使用方法に関する情報
SSBLでは、デフォルトですべてのブリッジのリセットの解除のみを行います。ブリッジを自動的にコンフィグレーションしたりイネーブルしたりすることはありません。すべてのブリッジのコンフィグレーションおよびイネーブルは、デザインに従って行ってください。これを実現するには、SSBLによって実行する 「u-boot.scr」 スクリプトファイルを作成します。ここでは、SSBLによって、ブリッジのコンフィグレーションに必要なレジスターが変更されます。この時点でブリッジは、コンフィグレーションされてイネーブルになります。SSBLによるブリッジの変更は、その後のFPGAコンフィグレーション中であってもできません。
詳しくは、RocketBoards.orgにあるCreating the U-boot Scriptの例を参照してください。
5.1.9. インテルAgilex HPSコンポーネントの実装
- HPSハードロジック
- シミュレーション・モデル
- バス機能モデル (BFM)
- ソフトウェア・ハンドオフ・ファイル
HPSコンポーネントでは、デザイン内のHPSハードロジックをインスタンス化し、他のソフト・コンポーネントをイネーブルしてHPSハードロジックとインターフェイスで接続します。
詳しくは、Intel Agilex Hard Processor System Technical Reference Manualを参照してください。
5.2. FPGAのみで構成されるデバイスのデザインエントリー
5.2.1. クロッキングおよびリセットデザインの考慮事項
Intel Agilex Configuration User Guideに詳細が記載されているコンフィグレーション・クロッキングのガイドラインに従って、適切な動作を確実に行ってください。クロック周波数、デバイスサイズ、およびデザインの複雑度が増加し続けているため、綿密なリセット方法によって、リセットからのリリースにおけるわずかな違いによる影響の可能性を考慮することが必要になっています。このリセット方法では、すべてのレジスターおよびコアロジックがユーザーモードになるまで、デバイスをリセット状態に保つ必要があります。インテルでは、nINIT_DONE を使用することを強くお勧めします。Reset Release Intel® Agilex™ FPGA IPは、リセット回路への初期入力の1つです。詳しくは、インテル® Stratix® 10コンフィグレーション・ユーザーガイドのデザインでのリセット・リリース・インテルFPGA IPの使用 を参照してください。
5.2.2. I/Oおよびクロックのプランニング
I/Oおよびクロックリソースのプランニングおよび割り当ては、ピン数が多く、高度なクロック管理機能を備えたインテルAgilexデバイスでは重要なタスクです。さまざまな考慮事項が重要な理由は、使用可能なI/Oリソースの効果的なプランニングを行って、使用率を最大限高め、シグナル・インテグリティーに関連する問題を防ぐためです。優れたクロック管理システムもまた、FPGAデザインのパフォーマンスにとって重要です。
FPGAのI/Oおよびクロック接続は、システムの残りの部分やボードデザインに影響を与えるため、このような接続をデザイン・サイクルの早期段階でプランニングすることが重要です。
5.2.2.1. FPGAピン・アサインメントの作成
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | インテル® Quartus® Prime Pin Plannerを使用してピン割り当てを行います。 | |
2 | インテル® Quartus® Prime Fitterのメッセージおよびレポートを使用してピン割り当てをサインオフします。 | |
3 | インテル® Quartus® Primeのピン割り当てが、スケマティック・ツールおよびボード・レイアウト・ツールのピン割り当てと一致していることを確認します。 | |
4 | Interface Plannerを使用してインターフェイスおよびデバイス・ペリフェラルをプランニングします。デザインの合成後、Interface Plannerを使用して、正当なデバイス・フロアプランを迅速に定義します。Interface Plannerを使用したプランニングには、Interface Plannerの初期化、プロジェクト割り当ての調整、ペリフェラル要素とクロックの配置、プラン制約の インテル® Quartus® Primeプロジェクトへのエクスポートなど。 |
インテル® Quartus® Prime Pin Planner GUIを使用すると、I/Oバンク、VREFグループ、および差動ピンのペアを特定し、I/Oプランニング・プロセスに役立てることができます。Pin Plannerスプレッドシートのインターフェイスを右クリックし、Pin Finderをクリックして、特定のピンを検索します。移行デバイスを選択している場合、Pin Migrationビューでは、現在選択しているデバイスと比較して、移行デバイスの機能を変更するピンが強調表示されます。
デザインフローでスプレッドシートを普段から使用している場合は、必要に応じて、Microsoft Excelスプレッドシートを インテル® Quartus® Prime開発ソフトウェアにインポートして、I/Oプランニング・プロセスを開始することができます。すべてのピンが割り当てられている場合は、I/Oアサインメントを含むスプレッドシート互換 (.csv) ファイルをエクスポートすることもできます。
デザインを インテル® Quartus® Prime開発ソフトウェアでコンパイルする場合、FitterのI/O Assignment Analysisでは、割り当てがすべてのデバイス要件を満たしていることを検証し、問題があればメッセージを生成します。
ここで インテル® Quartus® Primeの設計者は、ピン位置情報をPCB設計者に渡すことができます。 インテル® Quartus® Prime開発ソフトウェアとスケマティック・ツールおよびボード・レイアウト・ツールとの間のピン割り当てを一致させて、デザインが、配置されたボード上で正しく機能することを確認することが必要です。これは、ピン配置の変更が必要な場合は特に必要です。Pin Plannerは、特定のPCBデザインEDAツールと統合されているため、EDAツールからピン位置の変更を読み出し、提案された変更を確認することができます。デザインをコンパイルすると、 インテル® Quartus® Prime開発ソフトウェアでは .pin ファイルを生成します。このファイルを使用して、各ピンがボード・スケマティックで正しく接続されていることを確認することができます。
5.2.2.2. FPGAデバイスの早期ピン・プランニングおよびI/O Assignment Analysis
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | Create Top-Level Design FileコマンドをI/O Assignment Analysisで使用して、デザインの完成前にI/O割り当てをチェックします。 |
多くのデザイン環境でFPGA設計者は、最上位のFPGA I/Oピンを早期にプランニングして、ボード設計者がPCBのデザインとレイアウトの開発を開始できるようにしたいと考えます。FPGAデバイスのI/O機能とボードレイアウトのガイドラインは、ピンの位置やその他のタイプの割り当てに影響します。ボードデザインのチームがFPGAピン配置を指定する場合は、ピン位置をFPGA配置配線ソフトウェアでできるだけ早く確認して、ボードデザインの変更を回避することが重要です。
FPGAのピン・プランニングを早期に開始することによって、早期ボードレイアウトの信頼性が向上し、エラーの可能性が減少し、デザインの市場投入までの合計時間を短縮することができます。インテル FPGAの予備ピン配置の作成は、 インテル® Quartus® Primeを使用すると、ソースコードをデザインする前に可能です。
デザインプロセスの早期段階でシステム・アーキテクトが持っている情報は、一般的には、標準I/Oインターフェイス (メモリーやバス・インターフェイスなど)、デザインで使用するIPコア、およびシステム要件により定義されたI/O関連のその他のアサインメントに関するものです。
Pin Planner Create/Import IP Core機能は、IPカタログとインターフェイスで接続します。ユーザーは、これを使用して、I/Oインターフェイスを使用するカスタムIPコアの作成およびインポートができます。PLL およびLVDSブロックの入力には、ダイナミック・フェーズ・アラインメント (DPA) などのオプションを含めてくださ い。これは、オプションによってピン配置規則が影響されるためです。I/O関連情報をできるだけ多く入力したら、最上位レベルのデザイン・ネットリスト・ファイルを生成します。これには、Pin PlannerのCreate Top-Level Design Fileコマンドを使用します。I/O解析結果を使用して、ピン割り当てまたはIPパラメーターを変更します。確認プロセスは、I/Oインターフェイスによってデザイン要件が満たされ、 インテル® Quartus® Prime開発ソフトウェアでのピンチェックに合格するまで繰り返します。
プランニングが完了すると、予備ピンの位置情報をPCB設計者に渡すことができます。デザインが完成したら、 インテル® Quartus® Prime Fitterによって生成されたレポートおよびメッセージを使用して、ピン割り当ての最終サインオフを行います。
5.2.2.3. I/O機能およびピン接続
インテルAgilex I/Oピンは、使いやすさと迅速なシステム統合を実現すると同時に、高帯域幅を提供するようにデザインされています。独立したモジュラーI/Oバンクは、バーティカル・マイグレーション用に共通バンク構造を持ち、高速I/Oの効率性と柔軟性に役立ちます。
次のガイドラインでは、I/O機能とピン接続に関する情報を提供します。
5.2.2.3.1. I/Oシグナリング・タイプ
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | I/Oシグナリング・タイプのプランニングをシステム要件に基づいて行います。 | |
2 | ソフトウェアで、差動ピンペアのネガティブピン位置の割り当てができるようにします。 |
インテルAgilexデバイスでは、幅広い業界I/O規格をサポートしています。これには、シングルエンドI/O規格、電圧リファレンス形式シングルエンドI/O規格、差動I/O規格などがあります。次の一般的なガイドラインに従って、シグナリング・タイプを選択してください。
シングルエンドI/Oシグナリングでは、シンプルなレール間インターフェイスが提供されます。その速度は、大きな電圧振幅とノイズによって制限されます。シングルエンドI/Oでは、システム内のリフレクションによって望ましくない影響が発生しない限り、終端は不要です。
電圧リファレンス形式のシグナリングでは、ピンからの同時スイッチング出力 (SSO) の影響が低減されると同時に、電圧レベルが変化します (例えば、外部メモリー・インターフェイス・データやアドレスバス)。また、電圧リファレンス形式のシグナリングでは、電圧スイングを低減してロジックの遷移速度を向上させ、終端要件の反射によって発生するノイズを最小限に抑えます。ただし、追加の終端コンポーネントが、リファレンス電圧源 (VTT) に必要になります。
差動シグナリングでは、シングルエンド形式および電圧リファレンス形式のシグナリングのインターフェイス・パフォーマンスの障壁を排除します。これは、優れた速度で、追加の反転密結合データペアを使用して行われます。また、差動シグナリングでは、クリーンなリファレンス電圧が回避されます。これは、より低いスウィング電圧とコモンモード・ノイズ除去能力を有するノイズ耐量によって可能になります。この実装 に対する考慮事項に含まれるのは、サンプリング・クロック生成専用のPLL要件および、反転ペアと非反転ペアとの間の位相差を排除するためのトレース長の一致です。
インテルAgilexのI/O ピンは、ペアで構成され、差動規格をサポートします。各I/Oピンのペアでは、単方向の差動入力または出力動作をサポートします。真の差動チャネルの半分で専用の送信ピンをサポートし、残りの半分で専用の真のレシーバーピンをサポートします。デザインのソースコードで、差動ペアを表すピンを1つだけ定義し、ピン割り当てをそのペアの正の端に対して行います。差動I/O規格を指定すると、 インテル® Quartus® Prime開発ソフトウェアでは、対応する負のピンを自動で配置します。
5.2.2.3.2. 選択可能な規格および柔軟性の高いI/Oバンク
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 適切なシグナリング・タイプとI/O規格を各I/Oピンに対して選択します。I/Oバンクは、上部および下部のI/Oロウに配置されています。各I/Oバンクには、独自のPLL、DPA、およびSERDES回路が含まれています。 | |
2 | 適切なI/O規格サポートがターゲットI/Oバンクでサポートされるようにします。 | |
3 | 電圧レベルを共有するI/Oピンを同じI/Oバンクに配置します。 | |
4 | 各I/Oバンクのすべての出力信号が、バンクのVCCIO 電圧レベルでドライブアウトするようになっていることを確認します。 | |
5 | 各I/Oバンクのすべての電圧リファレンス形式の信号が、バンクのVREF 電圧レベルを使用するようになっていることを確認します。 | |
6 | LVDSおよびトランシーバー機能のI/Oバンクサポートを確認します。 | |
7 | OCTキャリブレーション・ブロック を共有するI/Oピンを同じI/Oタイルに配置します。 |
インテルAgilex I/Oピンは、モジュラーI/Oバンクと呼ばれるグループにまとめられています。クロックやグローバル・コントロール信号などの信号には、必ず適切な専用のピン入力を使用してください。
ボードから各バンクへは、バンク内のすべてのVCCIO_PIO ピンに対して、1つのVCCIO_PIO 電圧レベルを供給する必要があります。各I/Oバンクへの給電は、その特定のバンクの VCCIO_PIO ピンによってされ、他のI/Oバンクの VCCIO_PIO ピンから独立しています。単一のI/Oバンクでサポートするシングルエンドまたは電圧リファレンス形式の出力および入力信号は、VCCIO_PIO と同じ電圧で駆動され、受信されます。I/Oバンクでは、任意の数の入力信号を異なるI/O規格で同時にサポートすることができます。
電圧リファレンス形式のI/O規格に対応するため、各I/Oバンクでは、共通の VREF バスに供給する複数の VREF ピンをサポートしています。インテルAgilex GPIOバンクでは、内部および外部 VREF タイプをサポートします。各I/Oレーンでは、同じ VREF タイプを共有する必要があります。VREF ピンは、バンク内のI/O規格に対する正しい電圧に設定します。各I/Oバンクで持つことができる電圧レベルは、所定の時間で1つのVCCIO_PIO 電圧レベルと1つのVREF のみです。VREF ピンは、電圧リファレンスとして使用していない場合は、汎用I/Oピンとして使用することはできないため、同じバンクの VCCIO_PIO 、またはGNDに接続する必要があります。
シングルエンドまたは差動規格を含むI/Oバンクでは、電圧リファレンス形式の規格をサポートします。ただし、すべての電圧リファレンス形式の規格で、同じVREF 設定を使用していることが条件です。電圧リファレンス形式の双方向信号および出力信号は、I/OバンクのVCCIO_PIO 電圧レベルでドライブアウトする必要があります。
I/Oバンクが異なると、1.5V True Differential Signalingのサポートも異なります。インテルAgilexトランシーバー・バンクには、追加のI/Oサポートが含まれています。
GPIOバンクでは、真の差動入力規格を1.2V/1.5V VCCIO_PIO でサポートします。真の差動出力規格は、1.5V VCCIO_PIO バンクでサポートされています。I/Oピンでは、単方向の真の差動チャネルのペアを形成します。
5.2.2.3.3. 兼用ピンおよび特殊ピンの接続
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 兼用ピンを通常のI/Oとして使用する場合、兼用ピンを設定し、制約を確認します。 |
インテルAgilexデバイスでは、I/Oの柔軟性を兼用コンフィグレーション・ピンによって実現します。兼用コンフィグレーション・ピンを汎用I/Oとして使用するのは、デバイス・コンフィグレーションの完了後です。各兼用ピンの設定の選択は、Device and Pin OptionsダイアログボックスのDual-Purpose Pinsカテゴリーで行います。コンフィグレーション方式に応じて、兼用コンフィグレーションの予約は、通常のI/Oピン、トライステートの入力、グランドを駆動する出力、または不特定の信号を駆動する出力として行います。
専用クロック入力では、プログラマブル・クロック配線ネットワークを駆動します。専用クロック入力を汎用入力ピンとして使用できるのは、クロックピンとして使用していない場合です。クロック入力を汎用入力として使用する場合、I/OレジスターではALMベースのレジスターを使用します。これは、クロック入力ピンには専用I/Oレジスターが含まれていないためです。
デバイス全体のリセットピンおよびクリアピンがデザインI/Oとして使用可能なのは、イネーブルされていない場合です。
5.2.2.3.4. インテルAgilex I/O機能
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | I/Oインターフェイスに役立つデバイスのI/O機能で使用可能なものを確認します (スルーレート、I/O遅延、オープンドレイン、バスホールド、プログラマブル・プルアップ抵抗、 PCI* クランプダイオード、プログラマブル・プリエンファシス、VOD など)。 | |
2 | オンチップ終端 (OCT) 機能を検討し、ボードスペースを節約します。 | |
3 | 必要な終端方式が、すべてのピン位置に対してサポートされていることを確認します。 | |
4 | DPA、非DPAまたはソフトCDRの適切なモードを高速LVDSインターフェイス用に選択します。 詳しくは、 Intel® Agilex™ General Purpose I/O and LVDS SERDES User Guideの Intel® Agilex™ LVDS SERDES Design Guidelinesの項を参照してください。 |
インテルAgilexの双方向I/Oエレメント (IOE) 機能では、迅速なシステム統合をサポートすると同時に、内部ロジック機能とシステムレベルのパフォーマンスを最大限に引き出すために必要な高帯域幅を提供します。デバイス・インターフェイスの高度な機能では、デバイスとの高速データ転送を支援し、PCBの複雑性とコストを低減します。
インテルでは、IBISまたはSPICEシミュレーションを実行して、デザイン設定を最適化することをお勧めします。
5.2.2.4. クロックおよびPLLの選択
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 正しい専用クロックピンおよび配線信号をクロック信号およびグローバル制御信号に対して使用します。 | |
2 | デバイスのPLLをクロック管理に使用します。 | |
3 | 各PLLおよびクロックピンの入力および出力配線接続を解析します。PLL入力が専用クロックピンまたは別のPLLからのものであることを確認します。 |
クロック方式のプランニングの最初の段階は、システムクロック要件の決定です。デバイスで使用可能なクロックリソースを理解し、それに応じてデザインのクロック方式をプランニングします。タイミング・パフォーマンス要件と、特定のクロックによって駆動されるロジック量を考慮してください。
インテルAgilexデバイスでは、低スキューおよび高ファンアウトの専用配線ネットワークを提供しています。
専用クロックピンでは、クロック・ネットワークを直接駆動し、他のI/Oピンよりも低いスキューを保証します。専用配線ネットワークを使用して、予測可能な遅延のスキューが高ファンアウト信号に対してより少なくなるようにします。また、クロックピンおよびクロック・ネットワークを使用して、非同期リセットなどのコントロール信号を駆動することもできます。
クロック入力を特定のPLLに接続し、特定の低スキュー配線ネットワークを駆動します。各PLLのグローバルリソースの可用性と各クロック入力ピンのPLL可用性を解析します。
インテルAgilexデバイスに含まれている専用リソースでは、信号の分配をファブリック全体にバランスのとれた遅延で行います。このリソースは、一般的にはクロック信号に使用されますが、低スキュー要件を持つ他の信号にも使用できます。インテルAgilexデバイスでは、このリソースの実装は、プログラマブル・クロック配線として行われ、可変サイズの低スキュー・クロック・ネットワークの実装が可能になります。
システムで必要とされるクロックまたはコントロール信号が、ターゲットデバイスで使用可能なものよりも多くなる場合は、専用クロックリソースが不要になるケース、特に低ファンアウト信号と低周波信号で、クロック遅延とクロックスキューによってデザイン・パフォーマンスが大きく影響されない場合を検討してください。インテルQuartus Prime Assignment EditorでGlobal Signalアサインメントを使用してグローバル配線のタイプを選択するか、またはアサインメントをOffに設定して、信号によってグローバル配線リソースを使用しないように指定します。
5.2.2.5. PLL機能ガイドライン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | パラメーター・エディターでPLL機能をイネーブルし、設定を確認します。 |
システム要件に基づいて、FPGAデザインに必要なクロック周波数、およびFPGAで使用可能な入力周波数を定義します。このような仕様を使用してPLL方式を決定してください。 インテル® Quartus® Primeパラメーター・エディターを使用して、設定をIOPLL Intel FPGA IPコアに入力し、その結果を確認して、特定の機能と入出力周波数を特定のPLLに実装できるかどうかを検証します。
I/O PLLを使用すると、ボード上で必要なオシレーターの数を削減することができます。また、FPGAで使用するクロックピンの削減が、複数のクロック周波数を単一のリファレンス・クロック・ソースから合成することで実現できます。
インテルAgilexデバイスのPLLは豊富な機能を備えており、クロック・フィードバック・モード、スイッチオーバー、およびダイナミック・フェーズ・シフトなどの高度な機能をサポートしています。
5.2.2.5.1. クロック・フィードバック・モード
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 正しいPLLフィードバック補償モードを選択していることを確認します。 |
インテルAgilex PLLでは、6つの異なるクロック・フィードバック・モードをサポートしています。
5.2.2.5.2. クロック出力
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | PLLによって必要なクロック出力数が提供されていることを確認し、専用クロック出力ピンを使用します。 |
クロック出力は、専用クロック出力ピンまたは専用クロック・ネットワークに接続できます。I/O PLLは、クロック・ネットワークまたは専用クロックピンに接続できます。
5.2.2.6. クロック・コントロール機能
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | クロック・コントロール・ブロックを使用して、クロック選択およびバワーダウンを行います。 |
インテルAgilexデバイスで使用するクロック・コントロール機能は、クロック・ゲーティングとクロック分周器です。I/O PLL出力からのクロックは動的にゲートされます。このクロック信号は、他のクロックソースとともに、ペリフェラル分散型クロック・マルチプレクサ (DCM) に送られます。ペリフェラルDCMでは、クロック信号はまっすぐ通過するか、ルート・クロック・ゲートによってゲートされるか、またはクロック分周器で分周されます。
5.2.2.7. I/O同時スイッチング・ノイズ
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 可能な場合、同時に電圧レベルを切り替えるピンの数を削減します。 | |
2 | 差動I/O規格と低電圧規格を、高スイッチングI/Oに対して使用します。 | |
3 | より低いドライブ強度を、高スイッチングI/Oに対して使用します。デフォルトのドライブ強度設定は、デザイン上必要な設定よりも高い場合があります。 | |
4 | 各バンク内の同時スイッチング出力ピンの数を減らします。可能な場合、出力ピンを複数のバンクに広げます。 | |
5 | スイッチングI/Oをバンク全体に均等に分散させ、特定領域内のアグレッサーの数を減らして、SSNを減らします (バンク使用率が100% を十分に下回っている場合)。 | |
6 | 同時スイッチング・ピンを、SSNの影響を受けやすい入力ピンから分離します。 | |
7 | 重要なクロックおよび非同期コントロール信号は、グランド信号の近くに配置し、大きなスイッチング・バスから離します。 | |
8 | I/OピンがPLLの電源ピンから1本または2本分しか離れていない場合は、スイッチング速度が速い、またはドライブ強度の高いピンとして使用することは避けます。 | |
9 | スタガード出力遅延を使用して、出力信号を経時的にシフトするか、調整可能なスルーレート設定を使用します。 |
SSNが懸念されるのは、あまりに多くのI/Oが (近接して) 同時に電圧レベルを変更する場合です。I/Oとクロック接続のプランニングを推奨事項に従って行います。
5.3. EMIFの考慮事項
この項では、HPSおよびFPGAのEMIFデザインに関する考慮事項について説明します。
5.3.1. メモリー・インターフェイス
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 外部メモリー・インターフェイス インテルAgilexコアを各メモリー・インターフェイスに対して使用します。また、Intel Agilex FPGA External Memory Interface Overviewおよび外部メモリー・インターフェイスIP - サポート・センターのウェブページにある接続のガイドラインおよび制限に従います。 | |
2 | 特定のバンクで、ほとんどのメモリーピンを専用の場所に結び付けます。ピン割り当てについては、Intel Agilex Device Family Pin Connection Guidelinesおよび Intel® Agilex™ External Memory Interface Pin Informationを参照してください 。 |
インテルAgilexデバイスの効率的なアーキテクチャーでは、迅速かつ簡単に、幅広い外部メモリー・インターフェイスを適合させるために小型のモジューラーI/Oバンクを使用します。インテルAgilex FPGAによるDDR外部メモリーのサポートは、トランシーバーをサポートしていないデバイスのすべての側の任意のI/Oバンクで可能です。
自己較正型外部メモリー・インターフェイスIPコアは最適化され、インテルAgilex I/O構造を活用するようになっています。外部メモリー・インターフェイスIPコアを使用すると、外部メモリー・インターフェイス機能を設定し、物理インターフェイス (PHY) をシステムに最適な形でセットアップするのに役立ちます。インテルのメモリー・コントローラーインテルFPGA IP機能を使用すると、外部メモリー・インターフェイス IPコアは自動インスタンス化されます。デバイスに複数のメモリー・インターフェイスをデザインする際にインテルFPGA IPコアを使用する場合は、一度デザインしてから複数回インスタンス化するのではなく、各インスタンスに一意のインターフェイスを生成すると良好な結果が保証されます。
データストローブDQSピンおよびデータDQピンの位置は、インテルFPGA IPデバイスでは固定されています。デバイスのピン配置をデザインする前に、Intel Agilex FPGA External Memory Interface Overviewのガイドラインを参照して、上述の信号およびその他のメモリー関連信号の接続に関する詳細および重要な制限事項を確認してください。
外部メモリー・インターフェイスIPコアでサポートされていないプロトコルを実装するには、PHY Lite for Parallel Interfaces Intel Agilex FPGA IPコアを使用します。
アドレスバンクおよびコマンドバンク内のアドレスピンおよびコマンドピンは、固定ピン配置方式に従わなければなりません。これは、IPコアで生成された <variation_name>_readme.txt ファイルで定義されています。ピンアウト方式は、メモリー・インターフェイスのトポロジーによって異なります。ピンアウト方式は、ハードウェア要件であり、従う必要があります。一部の方式では、アドレスピンおよびコマンドピンの実装には3レーンが必要な方式と、4レーンが必要な方式があります。
5.3.2. HPS EMIFデザインの考慮事項
HPSの重要なコンポーネントは、外部SDRAMメモリーです。次に示すデザインの考慮事項は、SDRAMメモリーとHPSとの間のインターフェイスの適切なデザインに役立ちます。
外部SDRAMをHPSに接続する場合は、次のEMIFプランニング・ツールと必須ドキュメントを参照してください。
EMIFプランニング・ツール
ツール | 説明 |
---|---|
インテル® FPGA向け外部メモリー・インターフェイスIP - サポート・センター | インテル® FPGA向け外部メモリー・インターフェイスIP - サポート・センターは、 インテルFPGA向け外部メモリー・インターフェイスのデザインを支援する一連のツールおよびドキュメントのリソースです。 |
EMIF IPの生成および、 インテル® Quartus® Primeのコンパイルとタイミング・クロージャー支援ツー ルについては、インテルFPGA向け外部メモリー・インターフェイス IP - サポート・センターを参照してください。
必須ドキュメント
ドキュメント | 説明 |
---|---|
Intel Agilex General Purpose I/O and LVDS SERDES User Guide |
Intel Agilex General Purpose I/O and LVDS SERDES User Guideでは、I/Oカラムのアーキテクチャーや、HPSにアクセス可能な特定のハード・メモリー・コントローラー・ブロックの位置について説明しています。 HPSにアクセス可能なハード・メモリー・コントローラー・ブロックをHPSに接続するためのガイダンスについては、Intel Agilex General Purpose I/O and LVDS SERDES User GuideのPackage Selection and I/O Vertical Migration Supportを参照してください。この項では、 インテル® Agilex™ ファミリーのすべてのバリアントにおけるデバイスとパッケージのすべての組み合わせに対するI/Oカラムおよびバンク位置を示しています。これには、アクセス可能なバンクに対するHPSの相対的な位置も含まれます。 |
Intel Agilex FPGA External Memory Interface Overview |
Intel Agilex External Memory Interfaces User Guideには、HPS外部メモリー・インターフェイスに使用されている具体的なI/Oバンクや、アドレス/コマンド、ECC、およびデータ信号の場所を理解するために必要な詳細情報が含まれています。また、このユーザーガイドには、バンク内の外部メモリー・インターフェイス信号の配置に関する制限や、設計者がデフォルトとは異なる配置を行う際の柔軟性についての重要な情報も含まれています。 インテルでは、このユーザーガイドで使用可能なすべてのコンテンツをよく理解されることをお勧めします。また、次のセクションを理解していることが、Intel Agilex EMIF for the HPS IPをアプリケーションで適切にデザインするための前提となります。
|
次のデザイン・ガイドラインは、上記の参照ドキュメント内の情報を補足するものです。
5.3.2.1. HPSをSDRAMに接続する際の考慮事項
インテル® Agilex™ HPS向けハード・メモリー・コントローラーは、他のハードウェア・メモリー・コントローラーと共にFPGA I/Oロウにあります。HPS EMIFによってHPSコアへの相互接続が最適化されています。
Intel Agilex HPS EMIF IPのインスタンス化
外部SDRAMを インテル® Agilex™ HPSに接続するには、HPSに固有のEMIF IPを使用する必要があります。次のガイドラインに従い、HPSに対する正しいEMIF IPを適切なインスタンス化およびコンフィグレーションを実行してください。
ガイドライン : Intel Agilex External Memory Interfaces for HPS IPをPlatform Designerでインスタンス化してください。
Platform Designerで特定のEMIF IPを使用し、HPSを外部SDRAMメモリーに接続してください。
EMIFモジュールは、IPカタログのペインにあります。 Library > Processors and Peripherals > Hard Processor Components > External Memory Interfaces for HPS Intel Agilexの順に選択します。
ガイドライン : hps_emif コンジットをHPSコンポーネントに接続します。
Platform DesignerでHPSをEMIFに接続するには、インスタンス化済みの emif_fm_hps_1 モジュールの hps_emif を agilex_hps_0 の hps_emif コンジットに接続してください。
ガイドライン : フリーランニングで安定したリファレンス・クロック・ソースを外部メモリー・インターフェイスに対して、デバイスのコンフィグレーションの開始前に提供してください。
詳しくは、Intel Agilex FPGA EMIF IP Overviewを参照してください。
ガイドライン : HPSからマルチポート・フロント・エンド (MPFE) の外部SDRAMまたはリソースにアクセスしている間は、HPS EMIF IPブロックがリセットされないようにしてください。
HPS EMIF IP ブロックへのリセットのアサートは、HPS のリセットアサートに一致させる必要があります。ただし、アプリケーションによるコンテキストの保存および回復が、HPS EMIF IPのリセットアサートと連携して行われる場合は例外です。これを実現するには、単純に、HPS EMIFリセット入力を次のソースからのリセットの1つまたはその組み合わせに接続します。HPSリセット出力 (例 : h2f_reset、 h2f_cold_reset)、HPSコールドリセット入力 (例 : nCONFIG、HPS_COLD_nRESET リセット入力ピン) を供給するシステム内のほかのリセット。
HPS EMIF IPのリセットを上記のようにHPSをリセットせずに行う場合、アプリケーションにより、MPFEtをリセット状態にすることが必要です。これには、Reset Managerの brgmodrst レジスター、ビット6 (ddrsch) をHPS EMIF IPのリセットアサート前に使用します。また、HPS EMIF IOPLLがロックされるまでは、そのリセットがを解除されないようにしてください。これを行わないと、プロセッサーのロックアップが、外部SDRAM、またはMPFE内のリソースへのその後のアクセスで発生する可能性があります。
ガイドライン : HPS EMIFコントローラーのData Mask (DM) ピンがイネーブルされていることを確認します。
ガイドライン : Intel Agilex EMIF for HPS IPおよび、使用している特定のデバイスとパッケージの組み合わせでサポートされているコンフィグレーションのDDR4コンポーネント、またはモジュールのみを選択します。
インテルの外部メモリー・インターフェイス・スペック・エスティメーターは、インテルFPGAおよびSoCデバイスにおけるサポートされている外部メモリー・インターフェイスの種類、コンフィグレーション、および最大パフォーマンス特性を比較できるパラメトリック・ツールです。
5.3.2.2. HPS EMIF I/Oの位置
Intel Agilex EMIF for HPS IPに含まれているデフォルトのピン位置割り当ては、制約ファイル内のすべての外部メモリー・インターフェイス信号に対するものです。この制約ファイルは、IP生成時に作成され、デザインのコンパイル中に インテル® Quartus® Primeプロ・エディション開発ソフトウェアによって読み出されます。
ガイドライン : インテルでは、この自動化されたデフォルトのピン位置割り当てをスタート地点として使用することをお勧めします。
場合によっては、デフォルトのピン割り当てを変更して、このセクションに示されている制限を満たす必要があります。
ガイドライン : メモリー・コントローラーのI/Oの位置を 「utput_files 」 サブフォルダーの インテル® Quartus® Primeプロジェクトのピンアウトファイルで確認します。これは、ボードレイアウトの完成前に行います。
デフォルトで インテル® Quartus® Primeでは、プロジェクト・フォルダーの output_files サブフォルダーに出力レポート、ログファイル、およびプログラミング・ファイルを生成します。HPS EMIFのピン位置を含むデザインのピン配置については、コンパイル後に .pin テキストファイルを参照してください。
ガイドライン : HPSメモリー・インターフェイスに関連するI/Oがすべて、アクティブなHPS EMIF I/Oバンク内にあることを確認します。
機能中のHPSメモリー・インターフェイスに必要なI/Oがすべて、使用しているHPSメモリー幅に対するアクティブなバンク内に位置していることを必ず確認してください。
EMIF幅 | Tile 3C | Tile 3D | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Top | Bottom | Top | Bottom | |||||||||||||
3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | 3 | 2 | 1 | 0 | |
16ビット | GPIO | GPIO | NC | 16ビットデータ | NC | Addr/Command/RZQ/RefClk | ||||||||||
16ビット + ECC | GPIO | GPIO | NC | 16ビットデータ | ECC | Addr/Command/RZQ/RefClk | ||||||||||
32ビット | GPIO | GPIO | 32ビットデータ | NC | Addr/Command/RZQ/RefClk | |||||||||||
32ビット + ECC | GPIO | GPIO | 32-ビットデータ | ECC | Addr/Command/RZQ/RefClk | |||||||||||
64ビット | GPIO (制限あり) | 64ビットデータ | NC | Addr/Command/RZQ/RefClk | ||||||||||||
64ビット + ECC | GPIO (制限あり) | 64ビットデータ | ECC | Addr/Command/RZQ/RefClk | ||||||||||||
注: NC = 接続なし
|
ピンの割り当て
- 単一のx8 DQSグループを実装する単一のデータレーン内では次のとおりです。
- DQピンには、インデックス0、1、2、3、8、9、10、11のピンを使用してください。位置はDQビット間で入れ替え可能です (つまり、DQ[0]とDQ[3]の位置は入れ替え可能です 。ただし、最終的なピンアウトで使用するピンが、このインデックスにある場合のみです。)
- DM/DBIピンにはインデックス6のピンを使用してください。柔軟性はありません。
- DQS_Pにはインデックス4のピンを使用してください。DQS_Nにはインデックス5のピンを使用してください。柔軟性はありません。
- ピン・インデックス7は 「接続なし」 でなければなりません。
- データレーンの割り当ては、上記に示しているとおりに行ってください。バイトレーン全体の位置は入れ替え可能です (つまり、バイト0とバイト1の位置は入れ替え可能です)。ただし、最終的なピンアウトで使用するレーンが、上記表のとおり、HPS EMIFコンフィグレーションで許可されているレーンのみの場合です。
- I/O Tile 3D、Bottom Bank Lane0、1、および2は、Address/Command/RZQ/REFCLKに対してのみ使用してください。それ以外の場合は 「接続なし」 です。
- ECC、I/O Tile 3D、Bottom Bank Lane 3を使用しない場合は、「接続なし」 にしてください。ECCを使用する場合、ECC DQSグループは、I/O Tile 3D、Bottom Bank Lane 3にある必要があります。
- アドレスおよびコマンドピンの配置は、デフォルトの配置から変更しないでください。
- ALERT# ピンは、I/O Tile 3D、Bottom Bank Lane 2、ピン・インデックス8のみに配置します。それ以外の場合は、「接続なし」 にします。
- HPS REFCLK_P には、I/O Tile 3D、Bottom Bank Lane 2、ピン・インデックス0を使用してください。HPS REFCLK_Nには、I/O Tile 3D、Bottom Bank Lane 2、ピン・インデックス1を使用してください。
- RZQには、I/O Tile 3D、Bottom Bank Lane 2、ピン・インデックス2を使用してください。
DQ/DQSグループの配置
コンフィグレーション | DQSグループの配置 |
---|---|
16ビット | 配置先I/Oレーンは、Bank 3DのTop[1:0] にしてください。 |
16ビット + ECC | 配置先I/Oレーンは、Bank 3DのTop[1:0] およびBank 3DのBottom[3] にしてください。 |
32ビット | 配置先I/Oレーンは、Bank 3DのTop[3:0] にしてください。 |
32ビット + ECC | 配置先I/Oレーンは、Bank 3Dおよび Bank 3DのBottom[3] のI/OレーンTop[3:0] にしてください。 |
64ビット | 配置先I/Oレーンは、Bank 3DのTop[3:0] およびBank 3DのBottom[3] にしてください。 |
64ビット + ECC | 配置先I/Oレーンは、Bank 3DのTop[3:0] 、Bank 3CのBottom[3:0] 、およびBank 3DのBottom[3] にしてください。 |
5.3.2.3. HPSメモリーのデバッグ
ガイドライン : FPGA EMIFおよび外部メモリー・ツール・キットを使用して、メモリー・インターフェイスが動作していることを確認します。
HPS EMIFコントローラーでは、外部メモリー・インターフェイス・ツールキットをサポートしていません。このため、非HPSメモリー・コントローラーを使用して、メモリー・インターフェイスが動作可能であることを最初に確認します。FPGAメモリー・コントローラーをインスタンス化し、HPS EMIFが使用するのと同じI/Oに配線するデザインを作成します。
- Intel Agilex External Memory Interface Pin Information
- Intel Agilex FPGA External Memory Interface Overview
5.3.3. FPGA EMIFデザインの考慮事項
番号 | チェック欄 | チェックリスト |
---|---|---|
1 | 各メモリー・インターフェイスに対して、External Memory Interfaces Intel Agilex FPGA IPコアを使用し、該当するドキュメントの接続ガイドラインおよび制限に従います。 | |
2 | 特定のサブバンクでは、ほとんどのメモリーピンは専用の場所に結び付けられています。Intel Agilex External Memory Interface Pin Informationを参照して、EMIFインターフェイスで使用可能なピンの使用法を確認してください。また、Intel Agilex Device Family Pin Connection Guidelinesを参照してピンの割り当てを行ってください。 | |
3 | External Memory Interfaces インテル Calibration IPを生成し、同じI/Oロウに配置されているすべてのEMIFインターフェイスに接続します。 |
インテル® Agilex™ デバイスの効率的なアーキテクチャーでは、迅速かつ簡単に、幅広い外部メモリー・インターフェイスを適合させるために小型のモジューラーI/Oバンクを使用します。 インテル® Agilex™ FPGAによるDDR外部メモリーのサポートは、上部および下部のI/Oロウの任意のI/Oバンクで可能です。複数のサブバンクが必要な場合、サブバンクは連続している必要があります。
データストローブDQSおよびデータDQピンの位置は、 インテル® Agilex™ デバイスで固定です。デバイスのピンアウトをデザインする前に、前述の信号およびその他のメモリー関連信号の接続に関する詳細および重要な制限について、メモリー・インターフェイスのガイドラインを参照してください。
アドレスおよびコマンドバンク内のアドレスピンとコマンドピンは、固定ピン配置方式に従うようにします。その定義は、使用しているIPコアを使用して生成された <variation_name>_readme.txt ファイルによってされています。ピンアウト方式は、メモリー・インターフェイスのトポロジーによって異なります。ピン配置方式は、ハードウェア要件であり、従う必要があります。一部の方式では、アドレスピンおよびコマンドピンの実装には3レーンが必要ですが、4レーンが必要な方式もあります。
自己較正外部メモリー・インターフェイス IP コアは最適化され、 インテル® Agilex™ のI/O構造を活用するようになっています。外部メモリー・インターフェイスIPコアを使用すると、外部メモリー・インター フェイス機能や物理インターフェイス (PHY) をシステムに最適な形で設定することができます。デバイスに複数のメモリー・インターフェイスをデザインする際にインテルFPGA IPコアを使用する場合は、一度デザインしてから複数回インスタンス化するのではなく、各インスタンスに一意のインターフェイスを生成すると良好な結果が保証されます。
インテル® Agilex™ デバイスでは、キャリブレーションIPのインスタンス化は、EMIF IPコアとは別に行われます。各EMIF IPコアは、キャリブレーションIPに接続する必要があります。I/OロウにはキャリブレーションIPを1つだけ含めることができます。複数のEMIF IPコアが同じI/Oロウにある場合は、ロウのすべてのインターフェイスを同じキャリブレーションIPに接続します。
次のチェックリストは、EMIFユーザーガイドにある制限を補足するものです。番号 | チェック欄 | チェックリスト |
---|---|---|
1 | 特定のバンク (2つのサブバンク) の96ピンすべてで同じ電圧レベルを共有します。 | |
2 | EMIFインターフェイスの使用されているデータバンクまたはアドレス/コマンドバンクのI/Oレーンにある未使用ピンは、GPIO信号として許可されません。 | |
3 | データ・マスク・ピンをデータレーン内に任意に配置することは許可されません。DM/RDI/WDBIがイネーブルの場合は、ピン・インデックス6をデータマスク端子として使用してください。 | |
4 | PLLリファレンス・クロックの真のLVDS入力クロックのサポートは終了しました。インテルでは、各外部メモリー・インターフェイに独自のPLLリファレンス・クロックソースを持たせることをお勧めしています。クロックと電圧の詳細については、Intel Agilex Device Data Sheetを参照してください。 | |
5 | 各EMIFインターフェイスには、独自のRZQピンが必要です。また、アドレス/コマンドタイルのLane 2、ピン・インデックス2に配置する必要があります |
番号 | チェック欄 | チェックリスト |
---|---|---|
1 | ボード・シミュレーションを実行し、アドレス/コマンドおよびデータパスに十分なマージンがあることを確認します。 | |
2 | DIMMを使用している場合は、各信号をFPGAからDIMMに接続します。ただし、デザインでその信号を使用していない場合に限ります。(例 : より広いアドレス幅、すべてのCS/CKE/ODT信号)。 | |
3 | 電圧レール、アドレス/コマンドチャネル信号、および1つのデータレーン用のプローブポイントがあります。 | |
4 | EMIFのプログラム可能なリファレンス・クロック・ジェネレーターを使用して複数の動作周波数をサポートします。 | |
5 | ソケット/冷却ソリューションおよびDIMMのロジック・アナライザー・インターフェイスのために十分なマージンを確保します。 |
上記のガイドラインにより、ボードのデザインに十分なマージンが保証され、クリティカルな信号やデバッグ中の電圧レールの安定性のプロービングが容易になります。 リファレンス・クロック・ジェネレーターを変更する機能により、インターフェイスのテストを複数の動作周波数に対して行うことができます。インターフェイスが低速で動作すれば、インターフェイスは正しくピンアウトされ、機能しています。
5.4. Nios II
Nios® IIプロセッサーでは、すべてのインテルFPGAおよびSoCファミリーをサポートしています。 Nios® IIプロセッサー・システムは、マイクロコントローラーすなわち 「チップ上のコンピューター」 と同等で、プロセッサーおよびペリフェラルとメモリーの組み合わせが1つのチップ上に含まれています。 Nios® IIプロセッサー・システムは、 Nios® IIプロセッサー・コア、一連のオンチップ・ペリフェラル、オンチップ・メモリー、およびオフチップ・メモリーへのインターフェイスで構成され、すべて単一のインテルFPGAデバイスに実装されています。マイクロ・コントローラー・ファミリーと同様に、すべての Nios® IIプロセッサー・システムで、一貫した命令セットとプログラミング・モデルを使用します。
詳しくは、 Nios® IIプロセッサー・サポートのページを参照してください。
5.5. トランシーバーのプランニング
- Eタイル : 汎用トランシーバー
- Pタイル : PCIe* Gen4トランシーバー
- Fタイル : 汎用および PCIe* Gen4トランシーバー
- Rタイル : PCIe* Gen5およびCompute Express Link (CXL)
インテル® Agilex™ Fシリーズデバイス名 | R2068A 5 | R2486A 6 | R2486B 7 |
---|---|---|---|
AGF004 | — | — | — |
AGF006 | — | — | — |
AGF008 | 576(288)/24(12)/16 | — | — |
AGF012 | 576(288)/24(12)/16 | 768(384)/16(8)/16 | 768(384)/24(12)/16 |
AGF014 | 576(288)/24(12)/16 | 768(384)/16(8)/16 | 768(384)/24(12)/16 |
AGF022 | — | — | 768(384)/24(12)/16 |
AGF027 | — | — | 768(384)/24(12)/16 |
- 0 - 3
- 8 - 15
- 20 - 23
インテル® Agilex™ Fシリーズデバイス名 | Eタイルトランシーバー・チャネルの数 | 使用可能なEタイル・トランシーバー・チャネル |
---|---|---|
AGF 004 | — | — |
AGF 006 | — | — |
AGF 008 | 24 | 0から23まで |
AGF 012 | 16または24 |
16チャネル : 0,1,2,3,8,9,10,11,12,13,14,15,20,21,22,23 24チャネル : 0から23まで |
AGF 014 | 16または24 |
16チャネル : 0,1,2,3,8,9,10,11,12,13,14,15,20,21,22,23 24チャネル : 0から23まで |
AGF 022 | 24 | 0から23まで |
AGF 027 | 24 | 0から23まで |
5.6. リコンフィグレーション
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ボード開発のリコンフィグレーション機能を検討します。 |
インテルAgilexデバイスでは、トランシーバーとFPGAコアの変更を、デザインの他の部分の実行中でも容易に行うことができます。これには、ダイナミック・リコンフィグレーションとパーシャル・リコンフィグレーションをそれぞれ使用します。
インテルAgilexデバイスでは、トランシーバーのさまざまな部分のダイナミック・リコンフィグレーションを、異なるプロトコル、データレート、およびPMA設定に対して行うことができます。これには、デバイスの電源を切ったり、隣接するトランシーバー・チャネルを中断したりする必要はありません。この機能は、 インテル® Quartus® Prime開発ソフトウェアの今後のリリースで使用できるようになる予定です。
パーシャル・リコンフィグレーションを使用される場合は、最寄りのインテル担当者にお問い合わせください。
5.7. デザインエントリーの改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
6. ボードおよびソフトウェアの考慮事項
6.1. 早期システムおよびボード・プランニング
FPGA関連のシステム情報のプランニングは、デザインプロセスの早い段階で、設計者が インテル® Quartus® Prime開発ソフトウェアでデザインを完了する前に行う必要があります。早期プランニングにより、FPGAチームからPCBボードやシステム設計者に情報を早期に提供することができます。
6.1.1. SmartVID
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | VCC/VCCP PMBusの電圧レギュレーターは準拠していますか? | |
2 | PWRMGT_SDA、PWRMGT_SCL、PWRMGT_ALERT (スレーブモードの場合) は、1.8V I/O規格に接続されていますか? |
インテル® Agilex™ デバイスでは、SmartVID機能を使用しています。これには、VCC/VCCPへの電力供給のため、PMBusに準拠した電圧レギュレーターが必要です。さらに、すべての PWRMGT_SDA、PWRMGT_SCL、PWRMGT_ALERT (スレーブモードの場合) 信号は、1.8V I/O規格に接続してください。
6.1.2. 早期消費電力見積もり
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | Early Power Estimator (EPE) スプレッドシートを使用して消費電力を見積もり、冷却ソリューションおよび電源のプランニングをロジックデザインの完了前に行います。 |
FPGAの消費電力はデザインの重要な考慮事項であり、正確に見積もる必要があります。これにより、適切な電力バジェットを策定し、電源、電圧レギュレーター、デカップラー、ヒートシンク、および冷却システムをデザインします。電力の見積もりと解析には、次の2つの重要なプランニング要件があります。
- 熱プランニング: 冷却ソリューションでは、デバイスによって発生した熱を十分に放熱させる必要があります。特に、計算した接合部温度を通常のデバイス仕様内に収める必要があります。
- 電源プランニング: 電源から十分な電流を供給し、デバイス動作をサポートする必要があります。
FPGA デバイスの消費電力は、ロジックデザインに依存します。この依存関係によって、早期ボード仕様およびレイアウト段階での消費電力の見積もりが困難になることがあります。インテルEPE ツールを使用すると、電力使用率の見積もりをデザインの完成前に行うことができます。そのためには、デザインで使用するデバイスやデバイスリソースのほか、動作周波数、トグルレート、および環境考慮事項に関する情報を処理します。このツールを使用して熱デザイン・パラメーターを取得し、それにより詳細な熱シミュレーションおよび冷却ソリューション・デザインを実行します。
既存のデザインがない場合は、デザインで使用するデバイスリソース数を見積もり、手入力します。EPEツールの精度は、入力内容とデバイスリソースの見積もりによって異なります。この情報が変更されると (デザイン中またはデザイン完了後)、電力見積もり結果の精度が低下します。既存のデザインまたは部分的にコンパイルが完了したデザインがある場合は、Generate Early Power Estimator File コマンドを インテル® Quartus® Prime開発ソフトウェアで使用して、スプレッドシートに入力します。
EPEスプレッドシートには、Import Dataマクロが含まれています。Import Dataマクロでは、 インテル® Quartus® Prime生成電力見積もりファイル (.csv) の情報または旧バージョンのEPEからの情報を解析して、EPEツールに転送します。マクロを使用しない場合は、データをEPEツールへ手動で転送します。追加リソースを手動で入力して最終デザインで使用する必要があるのは、既存の インテル® Quartus® Primeプロジェクトで表されるのが完全なデザインの一部のみの場合です。EPEツールへの入力の編集や、デバイスリソースの追加、またはパラメーターの調整は、電力見積もりファイル情報のインポート後に行います。
デザインが完了すると、 インテル® Quartus® Prime開発ソフトウェアのPower Analyzerツールでは、電力をさらに正確に見積もり、熱バジェットと供給バジェットに違反しないようにします。電力を最も正確に見積もるには、ゲートレベルのシミュレーション結果をサードパーティー・シミュレーション・ツールの出力ファイル (.vcd) で使用します。
6.1.3. 熱管理およびデザイン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 熱デザインの電力および熱パラメーターをEPEから入手します。 | |
2 | 熱シミュレーションを実行して、適切な冷却ソリューションを決定します。 |
インテルAgilexデバイスは、マルチチップ・モジュールであり、パッケージ・コンフィグレーションとデザイン情報により、すべてのダイの電力配分はかなり異なります。この機能により、 インテル® Agilex™ デバイスの熱特性はデザインに依存します。EPEではデザイン入力を考慮に入れて、デザイン固有の熱パラメーターをThermal Pageで生成します。各ダイの消費電力、すべてのダイの熱抵抗 (ψJC)、冷却ソリューション要件 (ψCA)、および最大許容パッケージケース温度 (Tcase) が取得できます。
インテルAgilexの熱解析では、Compact Thermal Model を使用して (このモデルの入手については、最寄りのインテル販売代理店にお問い合わせください)、Computational Fluid Dynamics (CFD) ツールでシミュレーションを実行する必要があります。CFD解析の結果から得られるTcase は、EPE Thermal Pageの要求値よりも低くなければなりません。シミュレーションされたTcase、ψJC、および合計パッケージ電力を使用すると、実際の接合部温度Tj を入手することができます。これは、要件 (例 : 95˚C) を下回る必要があります。冷却ソリューション (ヒートシンクのデザイン、エアフローなど) を調整して、熱デザインを最適化します。
6.1.4. 温度管理のための温度検知
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | デザインで温度検知ダイオード (TSD) を設定し、デバイス接合部温度測定で熱管理を実行します。 | |
2 | ESD計算からTSD読み出しまでのオフセット値を含めます。 |
インテルAgilexデバイスは、ローカルおよびリモートの温度検知機能を備えています。
接合部温度TJは、次の方法で測定できます。
- Temperature Sensorコアのインスタンス化によるローカルのTemperature Sensorの使用。
- サードパーティーのセンサーチップとのインターフェイスとしてデザインされた外部サーマルダイオードの使用。サードパーティーのセンサーチップがIntel Agilex Device Data Sheetに記載されている外部TSD仕様と一致することを確認します。
実際の接合部温度を監視することは、熱管理にとって非常に重要です。インテルAgilexデバイスに内蔵されている各ダイのTSDには、エンベデッド・アナログ-デジタル・コンバーター (ADC) 回路が備えられています。デジタル温度表示へのアクセスは、温度センサーIPコアを介して行います。
インテルAgilex TSDでは、デバイスの接合部温度を自己監視し、外部回路を使用して、FPGAへ の空気流量制御などの作業を行います。これに必要なTSD回路を含めるため、温度センサーIPコアをインスタンス化します。
インテルAgilexデザインの柔軟性により、トランシーバー・ダイの電力分布が不均一になることがあります。このため、トランシーバー・ダイのホットスポットは必ずしもTSDの場所にあると限りません。これにより、TSDの読み出しと実際の接合部温度との間に温度差が生じます。EPEではこの差を計算し、各TSDのオフセット値をレポートします。オフセット値をTSD測定値に足して実際の接合部温度を取得します。
温度センサーについて詳しくは、Intel Agilex Device Data Sheetを参照してください。
6.1.5. 電圧センサー
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 電圧センサーの使用の必要性を判断します。 |
インテルAgilex
デバイスにはオンチップ電圧センサーが内蔵されています。センサーによって、観測中のアナログ信号が8ビットデジタル表現で提供されます。この機能は、重要なオンチップ電源および外部アナログ電圧のライブ監視に使用できます。
電圧センサーについて詳しくは、
インテルAgilex
パワー・マネジメント・ユーザーガイドを参照してください。
6.1.6. デバイスのパワーアップ
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | パワーアップ用デザインボード : すべてのインテルAgilex GPIO ピンがトライステートにあるのは、デバイスがコンフィグレーションされて、コンフィグレーション・ピンが駆動されるまでです。トランシーバー・ピンが高インピーダンスになるのは、デバイス・ペリフェラルがプログラムされる前までです。ペリフェラルがプログラムされると、終端およびVcm の設定は、トランシーバーのキャリブレーション完了直後に行われます。 | |
2 | 電圧電源ランプがモノトニックになるようにデザインします。 | |
3 | POR時間を設定して電源を安定させます。 | |
4 | 電源シーケンスおよび電圧レギュレーターのデザインでは、最大限のデバイス信頼性を図ります。GNDのボード間接続を電源接続前に行います。 | |
5 | nSTATUS ピンを VCCIO_SDM に引き上げます。電源投入時に nSTATUS をLowに駆動する外部コンポーネントがないことを確認してください。 |
パワーオンリセット (POR) 電源の最小電流要件は、デバイスの電源投入時に使用可能にしてください。
インテルAgilexデバイスのPower-On Reset Circuitryによって、デバイスのリセット状態を電源出力が推奨動作範囲になるまで保ちます。デバイスでは、最大電源ランプ時間内に推奨動作範囲に到達する必要があります。ランプ時間が満たされないと、デバイスのI/Oピンおよびプログラミング・レジスターはトライステートのままであり、デバイス・コンフィグレーションは失敗します。インテルAgilexデバイスでPORを終了するには、揮発性キーを使用しない場合でもVCCBAT 電源への電力供給が必要です。
インテルAgilexデバイスでは、ピン選択可能オプション (MSEL) が非FAST QSPIモードに設定されている場合、4 msまたは100 msの標準的なPOR時間設定が可能です。
インテルAgilexデバイスにはパワーアップ・シーケンスの要件があります。各レールのパワーアップ・タイミングとパワーダウン・タイミングを考慮して、電源シーケンス要件を満たす必要があります。
インテルでは、GNDをI/Oバッファーデザインのリファレンスとして使用します。ボード間のGND接続を電源接続前に行うことで、ボードのGNDが、ボード上の他のコンポーネントを介した電源へのパスを通って誤ってプルアップされることを防ぎます。これを行わないと、プルアップGNDによって、仕様から外れたI/O電圧や電流の状態がインテルデバイスで発生することがあります。
6.1.7. 電源ピン接続および電源
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | すべての電源ピンをIntel Agilex FPGA Device Family Pin Connection Guidelinesの指定どおりに接続します。 | |
2 | VCCIO と VREF ピンを接続し、各バンクのI/O規格をサポートします。 | |
3 | ボード上のFPGA電源ピンまたはその他の電源ピンに対する固有の要件を調べて、ボード上で電源レールを共有できるデバイスを判別します。 | |
4 | 電源共有とアイソレーションの推奨ガイダンス、およびIntel Agilex Device Family Pin Connection Guidelinesの各ピンの具体的なガイドラインに従います。 |
インテルAgilexデバイスでは、デザイン要件に応じてさまざまな電圧を供給する必要があります。
インテルAgilexデバイスでは、幅広い業界のI/O規格をサポートしています。デバイスの出力ピンでI/O規格の仕様が満たされないのは、VCCIO レベルがI/O規格の推奨動作範囲外にある場合です。
電圧リファレンス (VREF) ピンは、特定のI/O規格の電圧リファレンスとして機能します。 VREF ピンは、主に電圧バイアス用に使用され、多くの電流をソースまたはシンクすることはありません。電圧の作成は、レギュレーターまたは抵抗分割器ネットワークを使用します。
VREFP_ADC ピンは電源ピンではありません。VREFP_ADC ピンでは、電圧センサー用のADCのリファレンス電圧を提供します。電圧センサーのパフォーマンスを向上させるには、このピンを外部リファレンス1.25 V ソースに接続します。VREFP_ADC ピンをGND に接続すると、オンチップ・リファレンス・ソースがアクティブになります。
6.1.7.1. デカップリング・コンデンサー
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | PDNツールを使用して、電源分配ネットリストおよびデカップリング・コンデンサーをプランニングします。 |
ボードのデカップリングは、定格デバイスのパフォーマンスを確保しながら、全体的な電源の整合性を向上させる上で重要です。
インテルAgilexデバイスに内蔵されているオンダイ・デカップリング・コンデンサーでは、高周波デカップリングを提供しています。このような低インダクタンス・コンデンサーでは、電源ノイズ抑制による優れた電源インテグリティー性能と、外部PCBデカップリング・コンデンサー数の削減によるボードスペースの節約、コスト削減、およびPCBデザインの大幅な簡素化を図ります。
6.1.7.2. PLLボードのデザイン・ガイドライン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | デザインですべてのPLLを使用しない場合でも、すべてのPLL電源ピンを接続し、ノイズを低減します。 | |
2 | 電源ネットの供給は、絶縁電源プレーン、電源プレーンのカットアウト、または厚みが少なくとも20ミルのトレースによって行う必要があります。 |
ボードデザインのプランニングは、電源システムをPLL使用のためにデザインする場合と、ジッターを最小限に抑える場合に行います。これは、PLLに含まれるアナログ・コンポーネントがデジタルデバイスに組み込まれているためです。
6.1.7.3. トランシーバー・ボードのデザイン・ガイドライン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | トランシーバー・ボードのデザイン・ガイドラインをボードのデザイン時に確認します。 |
6.1.8. デバイス・コンフィグレーションのプランニング
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 複数のコンフィグレーション方式の必要性を考慮します。 | |
2 | トランシーバーに OSC_CLK_1 および REFCLK 外部クロックがあり、EMIFには CLK があることを確認してください。 | |
3 | コンフィグレーション・ガイドラインおよび追加のクロック要件に従ってください。これは、デザインでPCIe、トランシーバー・チャネル、HPS、High Bandwidth Memory (HBM2) IPコア、またはSmartVIDを使用している場合に適用します。ガイドラインについては、Intel Agilex Configuration User GuideおよびインテルAgilexパワー・マネジメント・ユーザーガイド を参照してください。 | |
4 | インテルでは、 Intel® Agilex™ Reset Release IPをデザインで使用して、既知の初期化状態をロジックに提供して動作を開始させることを強くお勧めします。Reset Release IPは、 インテル® Quartus® Prime開発ソフトウェアのバージョン19.1以降で使用可能です。ガイドラインについては、Intel Agilex Configuration User Guideを参照してください。 |
インテルAgilexデバイスのベースはSRAMセルです。コンフィグレーション・データのインテルAgilexデバイスへのダウンロードは、デバイスのパワーアップのたびに行ってください。これは、SRAMが揮発性だからです。複数のコンフィグレーション手法が必要かどうかを検討します。例えば、デバッグまたはテストのために1つの手法、生産環境のために別の手法などです。
デバイスのコンフィグレーション方式を早期に選択すると、システム設計者やボード設計者は、システムに必要なコンパニオン・デバイスがある場合は、それを決定することができます。ボードレイアウトは、プログラマブル・デバイスに使用する予定のコンフィグレーション手法によっても異なります。これは、異なる手法には異なる接続が必要だからです。
また、インテルAgilexデバイスでは、高度なコンフィグレーション機能が、コンフィグレーション手法に応じて提供されます。インテルAgilexデバイスにはまた、オプションのコンフィグレーション・ピンとリコンフィグレーションのオプションが含まれています。これをデザインプロセスの初期段階で選択 (および インテル® Quartus® Prime開発ソフトウェアで設定) して、ボードとシステムのデザインに必要なすべての情報を入手します。
6.1.8.1. コンフィグレーション手法の選択
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンパニオン・デバイスとボード接続のプランニング用のコンフィグレーション手法を選択します。 |
インテルAgilexデバイスでは、コンフィグレーション手法をいくつか提供しています。
特定のコンフィグレーション手法をイネーブルするには、インテルAgilexデバイスのMSELピンをボード上の特定の値に駆動します。
アクティブシリアル (AS) コンフィグレーション手法では、シリアル・コンフィグレーション・デバイスを使用します。JTAGコンフィグレーション手法ではダウンロードケーブルを使用します。Avalon Streaming (AvST) コンフィグレーション手法では外部コントローラー (例えば、MAX (MAX II、MAX V、インテルMAX 10) デバイス、またはマイクロコントローラー) を使用します。
6.1.8.1.1. シリアル・コンフィグレーション・デバイス
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ASコンフィグレーション・モードを集積度の高いデバイスで使用する場合には、コンフィグレーション・デバイスが使用可能であり、ターゲットFPGAの集積度に対して十分な大きさがあるかどうかを確認してください。 |
クアッドSPIフラッシュデバイスは、シリアル・コンフィグレーション・デバイスとしてASコンフィグレーション手法で使用します。
シリアル・コンフィグレーション・デバイスのプログラミングは、 インテル® FPGAダウンロード・ケーブルIIおよび インテル® Quartus® Prime開発ソフトウェアを使用し、アクティブ・シリアル・インターフェイスを介して行います。
もしくは、サポートされているサードパーティー (BP MicrosystemsやSystem Generalなど) のプログラマー、またはSRunnerソフトウェア・ドライバーを備えたマイクロプロセッサーを使用します。SRunnerは、エンベデッド・シリアル・コンフィグレーション・デバイスのプログラミング用に開発されたソフトウェア・ドライバーです。設計者はそれをさまざまなエンベデッド・システムに合わせてカスタマイズすることができます。
シリアル・コンフィグレーション・デバイスでは、JTAGインターフェイスを直接サポートしていません。ただし、デバイスのプログラミングにJTAGダウンロード・ケーブルを使用する際に、インテルAgilex FPGAをブリッジとして、JTAGインターフェイスとコンフィグレーション・デバイスとの間で使用することができます。これにより、両方のデバイスで同じJTAGインターフェイスが使用できるようになります。
Quad SPIフラッシュデバイスをJTAGからプログラミングする際にインテルAgilex FPGAをブリッジとして使用すると、標準ASインターフェイスを使用する場合よりも低速になります。
6.1.8.1.2. ダウンロード・ケーブル
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ダウンロード・ケーブルを使用してデバイス・コンフィグレーションを行います。 |
インテル® Quartus® PrimeプログラマーでサポートしているインテルAgilexデバイスのコンフィグレーション では、JTAGインターフェイスを直接インテル・プログラミング・ダウンロード・ケーブルとともに使用します。デザイン変更をデバイスに直接ダウンロードするのに、インテル・ダウンロード・ケーブルを使用すると、プロトタイピングが容易になり、複数のデザインのイタレーションを迅速に行うことができます。同じダウンロード・ケーブルを使用して、ボード上のコンフィグレーション・デバイスのプログラミングを行い、Signal Tap Embedded Logic AnalyzerなどのJTAGデバッグツールを使用します。
6.1.8.2. コンフィグレーション機能
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンフィグレーション手法とボードによって、必要な機能 (RSU、シングル・イベント・アップセット (SEU) 軽減) がサポートされていることを確認します。 |
このセクションでは、 インテル® Agilex™ デバイスのコンフィグレーション機能、およびその機能がデザインプロセスに どのように影響するかを説明します。
コンフィグレーション・ビットストリームの圧縮
コンフィグレーション・ビットストリームの圧縮は、 インテル® Agilex™ デバイスのコンフィグレーションで常にイネーブルされています。 インテル® Quartus® Prime開発ソフトウェアでは、コンフィグレーション・ファイルを生成するのに、圧縮されたコンフィグレーション・データを使用します。この圧縮ファイルによって、コンフィグレーション・デバイスまたはフラッシュメモリーのストレージ要件が軽減され、コンフィグレーション・ビットストリームをインテルAgilexデバイスに転送するのに必要な時間が短縮されます。
圧縮されたコンフィグレーション・ビットストリームにより、パッシブ・コンフィグレーション手法、例えばAvalon-ST×8、×16、および×32では、場合によっては、外部コンフィグレーション・ホストで AVST_READY 信号を監視し、AVST_READY Low信号が検出された場合は、コンフィグレーション・データの送信を一時停止することが必要です。
SEU緩和
専用回路がインテルAgilexデバイスに内蔵されているのは、エラー検出および訂正のためです。この機能をイネーブルすると、SEUの確認が継続的かつ自動的に行われます。これにより、インテルAgilexデバイスに保存されたコンフィグレーション・データが正しいことを確認し、システムに警告してコンフィグレーション・エラーに注意を払うことができます。
SEU軽減機能を使用する場合、SDMピンを使用して、SEU_ERROR 機能を実装します。このピンでは、エラーにフラグ付けをして、システムによって適切な処置が取られるようにします。デザインのコンパイル前に、SEU_ERROR機能をイネーブルし、未使用のSDMピンを選択して、SEU_ERROR 機能を インテル® Quartus® Prime 開発ソフトウェアで実装してください。
RSU
RSUではインテルAgilexデバイスすべてで使用可能な専用RSU回路を使用して、デバイスのリコンフィグレーションを実装します。
詳しくは、Intel Agilex Configuration User Guideを参照してください。
6.1.8.3. インテル Quartus Primeコンフィグレーション設定
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ボードおよびシステムのデザインのプランニングの際は、 インテル® Quartus® Primeコンフィグレーション・オプションを検討してください。 |
いくつかのコンフィグレーション・オプションは、 インテル® Quartus® Primeプロ・エディション開発ソフトウェアで コンフィグレーションまたはプログラミング・ファイルを生成するコンパイル前に設定できます。ボードとシステムのデザインは、この設定とピンの影響を受けるため、プランニング段階で検討してください。オプションの設定は、Device and Pin OptionsダイアログボックスのGeneralカテゴリーで行います。
6.1.8.3.1. オプションのコンフィグレーション・ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ボードデザインをプランニングし、オプションのコンフィグレーション・ピンを必要に応じてサポートします。 |
次のオプションのコンフィグレーション・ピンをイネーブルします。
- OSC_CLK_1 を使用する場合は、25 MHz、100 MHz、または125 MHzのソースに接続してください。
- CONF_DONE
- INIT_DONE
- CVP_CONFDONE
- SEU_ERROR
- HPS_COLD_nRESET
- Direct to Factory Image
- nCATTRIP
nCATTRIP
Catastrophic Trip (nCATTRIP) はオプションの信号で、未使用の SDM_IO ピンに割り当てることができます。この信号がイネーブルの場合、nCATTRIP 信号は、コア温度が125° Cを超えるとアサートされます。
nCATTRIP およびその他のオプションのコンフィグレーション・ピンについて詳しくは、Intel Agilex Device Family Pin Connection GuidelinesのSecure Device Manager (SDM) Optional Signal Pinsの項およびインテルAgilexパワー・マネジメント・ユーザーガイドを参照してください。
ガイドライン : デバイスのコンフィグレーションを行う前に、nCATTRIP 信号のプルアップの推奨事項に沿っていることを確認し、誤ったサンプリングを回避してください。
nCATTRIP SDM_IO 割り当てオプション | 内部プルアップまたはプルダウン | 外部プルアップの推奨事項 |
---|---|---|
1 -7、9 -15 | 20kΩ プルアップ | 不要 |
0、8、16 | 20kΩ プルダウン | Connect 4.7kΩ を VCCIO_SDM に接続 |
6.1.8.3.2. 兼用コンフィグレーション・ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンフィグレーション・ピンおよびユーザーI/Oピンとして機能する兼用ピンをプランニングします。 |
次のコンフィグレーション・ピンは、 Avalon® ST ×16および×32コンフィグレーション手法に使用しますが、オプションで、コンフィグレーション完了後にユーザーI/Oピンとして使用することができます。ピンをイネーブルして、 インテル® Quartus® Prime開発ソフトウェアで必要に応じて兼用ピンとして機能させます。
- AVST_CLK
- AVST_READY
- AVST_VALID
- AVST_DATA[15:0]
- AVST_DATA[31:16] (Avalon-ST ×32コンフィグレーション手法用)
6.1.8.4. コンフィグレーション・ピンの接続
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | すべてのコンフィグレーション・ピン接続およびプルアップ/プルダウン抵抗が、使用するコンフィグレーション手法に対して正しく設定されていることを確認します。 |
コンフィグレーション方式によって、異なるプルアップ/プルダウン抵抗または信号インテグリティー要件が適用されることがあります。コンフィグレーション・ピンによっては、未使用の場合に特定の要件も持つものもあります。コンフィグレーション・ピンを正しく接続することが非常に重要です。次のガイドラインでは共通の問題に対処しています。
詳しくは、Intel Agilex Device Family Pin Connection Guidelinesを参照してください。
6.1.8.4.1. コンフィグレーション・ピンの電圧レベル
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンフィグレーション・ピンのVCCIO_SDM およびVCCIO が、コンフィグレーションに使用される外部デバイスの電圧レベルと一致していることを確認します。 |
インテルAgilexデバイスからのコンフィグレーション・ピンの接続は、Quad SPIコンフィグレーション・デバイス、Avalon-STホスト、またはSD/MMCフラッシュメモリーなどの外部デバイスに対して行います。コンフィグレーション・ピンの電圧レベルは、接続デバイスの電圧レベルと一致させる必要があります。コンフィグレーション・ピンとして使用されるJTAGおよびSDM I/Oの電力供給は、VCCIO_SDM 電源からされます。Avalon-ST ×32および×16のコンフィグレーション手法では、AVST_CLK、AVST_READY、AVST_VALID、および AVST_DATA ピンの電力供給は、ピンが存在するI/OバンクのVCCIO からされます。
6.1.8.4.2. クロック・トレース・シグナル・インテグリティー
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンフィグレーション・クロック・トレースのデザインはノイズが発生しないようにします。 |
TCK 、AS_CLK 、AVSTx8_CLK 、AVST_CLK 、SDMMC_CFG_CCLK 、および OSC_CLK_1 クロック入力などの、コンフィグレーションで使用されるクロックのボードトレースは、オーバーシュート、アンダーシュート、またはリンギングのないクリーンな信号を生成する必要があります。ボードデザイン時のコンフィグレーション・クロック・トレースをレイアウトする場合は、クロックラインのレイアウトと同じ手法を使用します。オーバーシュート、アンダーシュート、リンギング、またはクロック信号上の他のノイズが原因でコンフィグレーションが失敗する可能性があります。クロック配線がストリップラインになっていることを確認してください。クロック信号を他の信号から遠ざけて、クロック配線を高速信号から分離してください。
6.1.8.4.3. JTAGピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | JTAGピンは、使用していない場合、安定した電圧レベルに接続します。 |
JTAGコンフィグレーションは、他のすべてのコンフィグレーション方式より優先されるため、JTAGインターフェイスを使用しない場合は、コンフィグレーション中にJTAGピンをフローティング状態またはトグル状態のままにしないでください。JTAGインターフェイスを使用する場合は、次のガイドラインに従ってください。
JTAGピンの接続
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | JTAGピンをダウンロード・ケーブル・ヘッダーに正しく接続します。ピンの順序が逆になっていないことを確認します。 | |
2 | パワーアップ時にJTAGステートマシンをディスエーブルするには、TCK ピンを抵抗を介してLowに引き下げ、予期しない立ち上がりエッジが TCK ピンで発生しないようにします。 | |
3 | TMS ピンおよび TDI ピンを抵抗を介してHighに引き上げます。 |
JTAGモードで動作するデバイスでは、TDI 、TDO 、TMS 、および TCK の必要なピン4つを使用します。TCK ピンには弱い内部プルダウン抵抗があり、TDI ピンと TMS ピンには弱い内部プルアップ抵抗があります。
チェーン内にデバイスが1つ以上ある場合、1つのデバイスの TDO ピンをチェーン内の次のデバイスの TDI ピンに接続します。
コンフィグレーション、ユーザーモード、またはパワーアップ時のJTAGピンのノイズが原因で、デバイスが未定義の状態またはモードになることがあります。
ダウンロード・ケーブルの動作電圧
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | ダウンロード・ケーブルとデバイスのJTAGピンとのインターフェイス接続のため、ダウンロード・ケーブルとJTAGピンの電圧に互換性があることを確認します。 |
動作電圧のインテル・ダウンロード・ケーブルへの供給は、ターゲットボードから10ピンヘッダーを介して行われ、それによりダウンロード・ケーブルの動作電圧レベルが決まります。
インテルAgilexデバイスのJTAGピンは、VCCIO_SDM によってパワーアップされます。異なるVCCIO レベルのデバイスを含むJTAGチェーンでは、デバイスJTAG入力ピンのVIL max、VIH min、および最大VI 仕様の違反がないことを確認します。デバイス間のレベルシフターが、デバイスの入力ピンの電圧仕様を満たすために必要になる場合があります。
JTAG信号のバッファリング
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | JTAG信号のバッファリングを推奨事項に従って行います。特にコネクターに対してや、ケーブルが3つ以上のデバイスを駆動する場合はそうしてください。 | |
2 | デバイスがコンフィグレーション・チェーンにある場合は、チェーン内のすべてのデバイスが正しく接続されていることを確認します。 |
JTAGチェーンへのバッファー追加の必要性は、JTAG信号のインテグリティー、特に TCK 信号に依存します。これは、この信号がJTAGクロックであり、最も速いスイッチングJTAG信号であるためです。インテルでは、信号のバッファリングをコネクターで行うことをお勧めしています。これは、ケーブルとボードコネクターでは、伝送経路が不良になり、信号にノイズが入る傾向があるためです。コネクターでの初期バッファリング後は、バッファーの追加をチェーンが長くなるたびに、または信号がボードコネクターを通過するたびに行います。
ケーブルで3つ以上のデバイスを駆動する場合は、JTAG信号をケーブルコネクターでバッファリングして、信号の劣化を防ぎます。これは、ボードレイアウト、負荷、コネクター、ジャンパー、およびボード上のスイッチによっても異なります。JTAG信号のインダクタンスまたはキャパシタンスに影響するものがボードに追加されると、バッファーがチェーンに追加される可能性が高まります。
各バッファーで駆動する負荷は、パラレルに駆動する TCK 信号と TMS 信号に対して8個以下にしてください。パスにジャンパーまたはスイッチを追加する場合は、負荷の数を減らします。
6.1.8.4.4. MSELコンフィグレーション・モード・ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | MSEL機能を持つSDMピンを接続し、コンフィグレーション方式を選択します。ピンをフローティング状態のままにしないでください。外部抵抗でピンをHighに引き上げるかLowに引き下げます。VCCIO_SDM またはGNDにハードワイヤ接続しないでください。 |
コンフィグレーション方式の選択には、外部抵抗を使用してMSEL機能を備えたSDMピンをHighに引き上げるかLowに引き下げます。JTAGコンフィグレーションは、MSELの設定に関係なく、常に使用可能です。MSEL機能を備えたSDMピンへの電力供給は、VCCIO_SDM 電源によってされます。また、ピンには弱い内部プルアップ抵抗があります。
PORおよびリコンフィグレーションの間、MSEL機能を備えたSDMピンは、LVTTL VIL とVIHレベルにあって、それぞれロジックLowとロジックHighと見なされる必要があります。SDMピンがMSEL機能に使用される場合、使用するコンフィグレーション方式によっては他のコンフィグレーション機能もあります。MSEL機能を備えたSDMピンをVCCIO_SDM またはGNDにハードワイヤー接続する場合は、必ずプルアップまたはプルダウン抵抗を使用してください。
6.1.8.4.5. その他のコンフィグレーション・ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 電源管理機能が必要な場合は、複数のコンフィグレーション機能を持つSDMピンを使用します。 | |
2 | –Vデバイスを使用する場合は、デバイスとVCC電圧レギュレーター間のSmartVID接続をイネーブルして、FPGAによってそのコア電圧要件の直接制御ができるようにしてください。ピン接続と実装については、Intel Agilex Device Family Pin Connection GuidelinesおよびインテルAgilexパワー・マネジメント・ユーザーガイドを参照してください。 |
SDMピンの多くには、複数のコンフィグレーション機能が、使用しているコンフィグレーション方式に応じて備えられています。一部のSDMピンにはまた、電源管理機能もあります。電源管理機能が必要な場合、コンフィグレーションに使用する必要のないSDMピンを選択し、電源管理機能を実装してください。
ボード上のSDMピンを外部コンフィグレーション・ホストまたはコンフィグレーション・デバイスに接続するには、使用しているコンフィグレーション方式に基づいて行います。コンフィグレーション方式を1つ以上使用する場合は、コンフィグレーション・ホストまたはSDMピンに接続されているコンフィグレーション・デバイス間に競合がないことを確認してください。
6.2. インテル Agilex SoC FPGAのボード・デザイン・ガイドライン
6.2.1. HPSのバウンダリー・スキャン
HPS JTAGインターフェイスでは、バウンダリー・スキャン・テスト (BST) をサポートしていません。HPS I/Oでバウンダリー・スキャン・テストを実行するには、最初にFPGA JTAGとHPS JTAGを内部でチェーン接続し、バウンダリー・スキャンをFPGA JTAGから発行してください。
ガイドライン : FPGA JTAGインターフェイスとHPS JTAGインターフェイスを内部でチェーン接続し、バウンダリー・スキャン・テストを実行します。
FPGAとHPS JTAGを内部でチェーン接続するには、QuartusのDevice and Pins Options、Configurationカテゴリーを選択します。HPS debug access port (DAP) 設定で、ドロップダウン・オプションから SDM Pinsを選択します。バウンダリー・スキャンを使用していない場合は、FPGA JTAGとHPS JTAGインターフェイスは個別に使用することができます。HPS Dedicated I/OをHPS JTAGのインターフェイスとして選択するには、ドロップダウン・オプションからHPS Pinsを選択します。
6.2.2. エンベデッド・ソフトウェアのデバッグおよびトレース
このデバイスには、FPGA JTAGおよびHPS JTAGのJTAGポートが1つだけあります。FPGA JTAGとHPS JTAG は、チェーン接続するか、個別に使用します。
ガイドライン : インテルでは、ボードへのJTAG 接続を備えることをお勧めしています。それを使って、開発のほか、フィールド問題のデバッグや診断を行います。
HPSに用意されている2つのトレース・インターフェイスは、HPS Dedicated I/O経由とFPGA I/O経由のいずれかです。HPS Dedicated I/O経由のインターフェイスは、16ビットDDRインターフェイスです。これを低帯域幅トラフィック (低周波数で動作するMPUなど) のトレースに使用します。
トレース帯域幅を向上させるには、標準トレース・インターフェイスを使用します。標準トレース・インターフェイスは、FPGAへの32 ビット・シングル・データレート・インターフェイスです。一般的にトレースモジュールでは、トレースデータの送信はダブル・データ・レートで行われることを想定しています。このため、シングル・データ・レートのトレースデータをダブル・データ・レートに変換する必要があります。
インテルでは、DDIO Megawizard IPをインスタンス化し、それを出力専用モードに設定してこの変換を実行することをお勧めしています。トレースデータの最下位16ビットは、最初にチップ外に送信する必要があるため、そのビットをDDIO IPのdatain_l[15:0]ポートに接続します。
HPS Debug Access Port (DAP) へのアクセスは、JTAGとしてコンフィグレーションされた専用HPSピンまたはFPGA JTAGインターフェイス・ピンを介して行います。
FPGA JTAGピンを介してHPS JTAGインターフェイスにアクセスするオプションは、 インテル® Quartus® Primeプロ・エディション・プロジェクトで使用可能です。
FPGAは、電源投入時にJTAGチェーンの最初のデバイスとして表示されます。FPGAのコンフィグレーションが、HPS JTAGインターフェイスをFPGA JTAGピンに対して使用可能にするイメージを使用して行われると、HPSはJTAG チェーンの最初のインターフェイスとして表示され、FPGAは2番目のインターフェイスとして表示されます。そのため、異なる接続設定がFPGAツールに必要になります。例えば、 インテル® Quartus® Primeプロ・エディション Programmerを電源投入時に使用する場合と、FPGAコンフィグレーション後に使用する場合では、接続設定が異なります。
ガイドライン : ボードへのJTAG接続を使用可能にして、それを開発およびフィールド問題のデバッグと診断に使用します。
HPSに用意されている2つのトレース・インターフェイスは、HPS Dedicated I/O経由またはFPGA I/O経由のいずれかです。HPS Dedicated I/O経由のインターフェイスは、低速トレース・インターフェイスです。それを使用して、低帯域幅トラフィック (低周波数で動作するMPUなど) をトレースします。
6.3. ボードデザインのピン接続に関する考慮事項
インテルAgilexデバイスに対するインターフェイスのデザインでは、さまざまな要因によってPCBのデザインが影響を受けます。
6.3.1. ボード関連の インテル Quartus Prime設定
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | FPGA I/Oピンを正しく設定し、ボードデザイン中の機能をプランニングします。 |
インテル® Quartus® Prime開発ソフトウェアでは、ボードデザイン時に考慮する必要があるFPGA I/Oピンのオプションを提供しています。 インテル® Quartus® Primeプロジェクトの作成時にこのオプションが正しく設定されていることを確認し、ボードデザイン時に機能をプランニングします。
6.3.1.1. 未使用ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 未使用のI/Oピンの予約状態を指定します。 | |
2 | インテル® Quartus® Prime開発ソフトウェア生成の .pin ファイルのピン接続を慎重に確認します。RESERVED ピンは接続しないでください。 |
未使用ピンの状態を インテル® Quartus® Prime開発ソフトウェアで指定してボードデザインに柔軟性を持たせるには、Device and Pin OptionsダイアログボックスのUnused Pinsカテゴリーで、Reserve all unused pinsに次の5つの許容可能な状態を選択します。
- As inputs tri-stated
- As output driving ground
- As outputs driving an unspecified signal
- As input tri-stated with bus-hold circuitry
- As input tri-stated with weak pull-up
一般的な設定で、未使用ピンはAs inputs tri-stated with weak pull-upに設定されています。シグナル・インテグリティーを向上させるには、未使用ピンをAs output driving groundに設定します。この設定によるインダクタンスの低減は、短いリターンパスの作成と隣接I/Oのノイズ低減によるものです。このアプローチは、ビアパスの多くで、デバイスに含まれる信号の輻輳が発生する場合は使用しないでください。
消費電力を低減するには、クロックピンおよびその他の未使用のI/Oピンを As inputs tri-statedに設定し、グランドに接続します。
6.3.2. シグナル・インテグリティーの考慮事項
シグナル・インテグリティーの考慮事項には、詳細なボードデザインのガイドラインのほか、VREF ピン、SSN、およびI/O終端に関するガイドラインなどがあります。
6.3.2.1. 高速ボードデザイン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | Board Design Resource Centerを参照してください。 |
デザインに高速信号、特にインテルAgilex GX/SXデバイスに高速トランシーバーが搭載されている場合、ボードデザインによってシステムのシグナル・インテグリティーが大きく影響されます。
6.3.2.2. 電圧リファレンス・ピン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | VREF ピンは、ノイズが発生しないようにデザインします。 |
VREF ピンでの電圧変動が、入力のしきい値の感度に影響することがあります。
6.3.2.3. 同時スイッチング・ノイズ
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | デバイス近くのボードレイヤーの大規模なバス信号を分割し、クロストークを低減します。 | |
2 | 2 つの信号層が隣り合っている場合は、可能であればトレースを直交に配線します。トレース幅の2倍から3倍の間隔をあけます。 |
SSNが懸念されるのは、あまりにも多くのピンが (近接して) 電圧レベルを同時に変化させる場合です。SSNによって生成されたノイズによってノイズマージンが減少し、誤ったスイッチングが発生することがあります。SSNはデバイスパッケージで支配的ですが、ボードレイアウトのプランニングをPCBガイドラインのボードレイアウトの推奨事項に基づいて行うことでノイズを低減できます。
6.3.2.4. I/O終端
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 終端とインピーダンスの整合の確認を、選択したI/O規格、特に電圧リファレンス形式の規格に対して行います。 |
電圧リファレンス形式のI/O規格では、VREF と終端電圧 (VTT) の両方が必要です。受信デバイスのリファレンス電圧は、送信デバイスの終端電圧に追従します。電圧リファレンス形式の各I/O規格には、固有の終端設定が必要です。
シングルエンド非電圧リファレンス形式のI/O規格では終端は不要ですが、インピーダンス整合が反射の低減とシグナル・インテグリティーの向上のために必要です。
インテルAgilexのオンチップシリーズおよびパラレル終端では、外付けコンポーネントが不要になる利便性があります。また、外部プルアップ抵抗を使用して、SSTLやHSTLなどの電圧リファレンス形式のI/O規格を終端させることもできます。
差動I/O規格では、一般的にレシーバーの2つの信号間に終端抵抗が必要です。終端抵抗は、信号ラインの差動負荷インピーダンスと一致させてください。インテルAgilexデバイスでは、真の差動シグナリングを使用する場合にオプションのオンチップ差動抵抗が提供されます。
6.3.3. ボード・レベル・シミュレーションおよび高度なI/Oタイミング解析
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | (使用可能な場合) IBISモデルを使用して、ボードレベルでシミュレーションを実行します。 | |
2 | インテル® Quartus® Primeの高度なI/Oタイミング解析用のボード・トレース・モデルをコンフィグレーションします。 |
I/O信号によってボード・セットアップのレシーバーしきい値レベルを確実に満たすようにするには、フルボード配線シミュレーションをIBISモデルを使用したサードパーティーのボードレベル・シミュレーション・ツールで実行します。
この機能が インテル® Quartus® Prime開発ソフトウェアで使用可能な場合は、SettingsダイアログボックスのEDA Tool SettingsのBoard-Levelページで、Board-level signal integrity analysisからIBISを選択します。
高速インターフェイスを備えたFPGAデバイスをボードデザインに組み込む場合、シグナル・インテグリティーとボード配線の伝播遅延を知ることが、適切なシステム動作にとって不可欠です。ボードレベル・タイミングの解析は、I/Oおよびボードのプランニングの一部として、特に高速デザインで必要です。
選択したI/O規格のボードトレース・モデルのコンフィグレーションを行い、 インテル® Quartus® Prime開発ソフトウェアで 「ボード対応」 のシグナル・インテグリティー・レポートを生成します。Enable Advanced I/O Timingが (Settingsダイアログボックスの (Timing Analyzerページで) オンになっている場合、Timing Analyzerでは、I/Oバッファー、パッケージ、およびボードトレース・モデルのシミュレーション結果を使用して、より正確なI/O遅延および追加レポートを生成し、信号動作のインサイトをシステムレベルで提供します。この高度なタイミングレポートをガイドとして使用し、I/Oアサインメントおよびボードデザインを変更してタイミングとシグナル・インテグリティーを向上させます。
6.4. ボードの考慮事項の改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
7. デザインの実装、解析、最適化、および検証
デザインのソースコードを作成し、デバイス選択やタイミング要件などの制約を適用した後、合成ツールでは、そのコードを処理して、デバイス・アーキテクチャーの要素にマッピングします。 インテル® Quartus® Prime Fitterでは次に、配置配線を実行し、デザイン要素を特定のデバイスリソースに実装します。必要に応じて インテル® Quartus® Prime開発ソフトウェアを使用し、デザインのリソース使用率の最適化、タイミング・クロージャーの達成、未変更デザインブロックのパフォーマンス維持、将来のイタレーションのためのコンパイル時間の短縮を行います。また、デザインの機能性の検証にシミュレーションを使用することもできます。このセクションでは、コンパイルフローのこれらのステージに関するガイドラインを示します。
7.1. 合成ツールの選択
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 合成ツールを決定し、サポートされている正しいバージョンを使用します。 |
インテル® Quartus® Prime開発ソフトウェアに含まれている高度で簡便な統合合成では、Verilog HDLおよびVHDLのほか、インテルのハードウェア記述言語 (AHDL) およびスケマティック・デザイン・エントリーを完全にサポートしています。業界をリードするサードパーティーEDA合成ツールを使用して、Verilog HDLまたはVHDLデザインを合成し、その結果の出力ネットリスト・ファイルのコンパイルを インテル® Quartus® Prime開発ソフトウェアで行うこともできます。New Project WizardまたはSettingsダイアログボックスのEDA Tools Settingsページでサードパーティーの合成ツールを指定し、正しいLibrary Mapping File (.lmf) を合成ネットリストに対して使用します。
インテルでは、サードパーティーの合成ツールの最新バージョンを使用することをお勧めしています。これは、ツールベンダーでは、新機能の追加、問題修正ツール、およびインテルデバイスのパフォーマンス向上を継続的に行っているためです。
異なる合成ツールでは異なる結果が生成されます。アプリケーションに最適なツールを選択する場合は、アプリケーションとコーディング・スタイルに対して一般的なデザインを合成して結果を比較してみます。必ず インテル® Quartus® Prime開発ソフトウェアで配置配線を実行して、正確なタイミング解析とロジック使用結果を得るようにしてください。
合成ツールで提供している機能によっては、 インテル® Quartus® Primeプロジェクトの作成、合成プロジェクトで指定したEDAツール設定、デバイス選択、およびタイミング要件などの制約の引き渡しが可能な場合があります。この機能を使用すると、 インテル® Quartus® Primeプロジェクトを配置配線用にセットアップする際の時間が節約できます。
7.2. デバイスのリソース使用率レポート
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | リソース使用率レポートをコンパイル後に確認します。 |
インテル® Quartus® Prime開発ソフトウェアでのコンパイル後、デバイスリソース使用率の情報を確認して、将来、余分なロジック追加や他のデザイン変更によってフィッティングが難しくなるかどうかを判断します。コンパイルでフィッティング・エラーが生じた場合は、リソース使用率の情報は重要で、デザインのフィッティング問題の解析に使用します。
リソース使用率を決定するには、Compilation ReportのFlow Summary セクションを参照して、総ロジック使用率を示す割合を確認します。これには、既存の接続またはロジックの使用により使用不可能なリソースの見積もりが含まれています。
インテルAgilexデバイスでは、ロジック使用率が低いからといってALM使用率が低くなるわけではありません。さらに、デザインが100% フルに近いとレポートされていても、余分なロジックのためのスペースが残っている場合があります。Fitterでは、ロジックの配置が1つのALM内で可能だとしても、ALUTを異なるALMで使用し、最適なタイミングと配置結果を得るようにします。ロジックがデバイス全体に広がっている可能性があるのは、このような結果を達成したときです。デバイスがいっぱいになると、Fitterでは、1つのALMにまとめることができるロジックを自動検索します。
より詳しいリソース情報は、Compilation ReportのFitter > Placeのセクションのレポートで表示できます。FitterのResource Usage Summaryレポートでは、ロジック使用率情報を詳細分析し、完全に使用しているALMと部分的に使用しているALM数を示し、各タイプのメモリーブロックのビット数を含むその他のリソース情報を提供します。レポートには、コンパイル中に発生した最適化について説明するものもあります。例えば、 インテル® Quartus® Prime統合合成を使用する場合、Analysis & Synthesis > Partition <partition_name> > Optimization Resultsのレポートで提供される情報には、合成中に削除されたレジスターが含まれています。このレポートを使用して、部分的なデザインのデバイスリソース使用率を見積もり、レジスターがデザインの他の部分との接続の欠落が原因で削除されていないことを確認します。
7.3. インテル Quartus Primeメッセージ
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | インテル® Quartus® Primeのすべてのメッセージ、特に警告およびエラーメッセージを確認します。 |
コンパイルフローの各段階で生成されるメッセージには、情報メモ、警告、重大な警告などが含まれています。メッセージを確認して、デザイン上の問題がないかどうかをチェックします。警告メッセージの重要性を理解し、デザインや設定を必要に応じて変更してください。 インテル® Quartus® Primeのユーザー・インターフェイスでは、Messageウィンドウのタブを使用して、特定のタイプのメッセージのみを表示することができます。アクションの必要がないと判断した場合は、メッセージを非表示にできます。
メッセージおよびメッセージの抑制に関する詳細情報は、プロジェクト・メッセージの表示セクション使い始めユーザーガイド: インテル® Quartus® Primeプロ・エディション を参照してください。
7.4. タイミング制約およびタイミング解析
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | すべてのクロック信号およびI/O遅延などの、タイミング制約が完全かつ正確であることを確認します。 | |
2 | Timing Analyzerレポートをコンパイル後に確認して、タイミング違反がないようにします。 | |
3 | インテルAgilexデバイスへのデータ供給時に、入力I/O時間の違反がないようにします。 |
FPGAデザインフローでは、正確なタイミング制約により、タイミング駆動の合成ソフトウェアおよび配置配線ソフトウェアで最適な結果が得られます。タイミング制約は、デザインでタイミング要件を満たすために重要です。これにより表される実際のデザイン要件を満たすことで、デバイスが正しく動作します。 インテル® Quartus® Prime開発ソフトウェアでは、デザインの最適化および解析に、各デバイスのスピードグレードごとに異なるタイミングモデルを使用して、正しいスピードグレードに対するタイミング解析を実行する必要があります。タイミングパスを完全に制約、解析、および検証して要件を満たさないと、最終的にプログラムされたデバイスが期待どおりに動作しない可能性があります。
インテル® Quartus® Prime開発ソフトウェアに含まれる インテル® Quartus® Prime Timing Analyzerは、強力なASICスタイルのタイミング解析ツールとして、デザイン内のすべてのロジックのタイミング性能を検証します。また、業界標準の Synopsys* Design Constraints (SDC) タイミング制約フォーマットをサポートし、使いやすいGUIとインタラクティブなタイミングレポートを備えています。高速ソース同期インターフェイスおよびクロック多重化デザイン構造の制約にとって理想的です。
総合的なスタティック・タイミング解析には、レジスター間、I/Oおよび非同期リセットパスの解析が含まれています。デザイン内のすべてのクロックの周波数と関係を指定することが重要です。入出力遅延制約を使用して、外部デバイスまたはボードのタイミング・パラメーターを指定します。外部インターフェイス・コンポーネントの正確なタイミング要件を指定して、正確なシステムの意図を反映します。
Timing Analyzerでは、スタティック・タイミング解析をシステム全体に対して実行し、データ要求時間、データ到達時間およびクロック到達時間を使用して、回路性能を検証し、発生する可能性があるタイミング違反を検出します。Timing Analyzerで決定するタイミング関係を満たして、デザインを正常に機能させる必要があります。
report_datasheet コマンドを使用して、生成されるデータシート・レポートには、デザイン全体のI/Oタイミング特性がまとめられています。
タイミング解析について詳しくは、 インテル® Quartus® Primeプロ・エディション・ユーザーガイド : タイミング解析を参照してください。
7.4.1. 推奨されるタイミング最適化およびタイミング解析のアサインメント
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | SettingsダイアログボックスのFitter SettingsページでOptimize multi-corner timingをオンにします。 | |
2 | create_clock および create_generated_clock を使用して、デザイン内のすべてのクロックの周波数および関係を指定します。 | |
3 | set_input_delay および set_output_delay を使用して、外部デバイスまたはボードのタイミング・パラメーターを指定します。 | |
4 | derive_clock_uncertainty を使用して、インタークロック、イントラクロック、およびI/Oインターフェイスの不確実性を自動適用します。 | |
5 | check_timing を使用して、デザインまたは適用された制約に関する問題のレポートを生成します。これには制約の欠落が含まれます。 | |
6 | 非同期パスに対しては、set_false_path または set_clock_groupsを使用してください。 |
上記のアサインメントおよび設定は、インテルAgilexデバイスのデザインなどの大規模なデザインにとって重要です。
Optimize multi-corner timingオプションをオンにすると、デザインが最適化され、タイミング要件がすべてのタイミングプロセスのコーナーおよび動作条件で満たされます。したがって、このオプションをオンにすると、より堅牢なデザイン実装をPVTのバリエーション全体で作成するのに役立ちます。
Timing Analyzer .sdc 制約ファイルでは、次の推奨される制約をデザインに適用してください。
7.5. 面積およびタイミングの最適化
数 | チェック欄 | チェック項目 |
---|---|---|
1 | タイミングの見積もりがフル・コンパイル実行前に必要な場合は、Fitter (Plan) を実行します。 | |
2 | インテル® Quartus® Primeの最適化機能を使用して、タイミング・クロージャーを実現したり、リソース利用を改善したりします。 | |
3 | Timing Optimization Advisorsを使用して、最適化設定を提案します。 |
この項では、 インテル® Quartus® Prime開発ソフトウェアで提供されている機能の一部を紹介します。この機能は、エリア (またはリソース使用率) およびタイミング・パフォーマンスの最適化に役立ちます。タイミング解析の結果、デザイン要件が満たされていないことがレポートされた場合は、デザインや設定を変更し、デザインを再コンパイルしてタイミング・クロージャーを達成してください。コンパイル結果に不適合のメッセージが表示される場合は、変更を加えて配置配線が正常に行われるようにしてください。
Fitter (Plan) を実行し、デザインのタイミング結果の見積もりを、ソフトウェアによる完全な配置配線の実行前に行います。Processing > Start > Start Fitter (Plan) をクリックし、初期コンパイル結果の生成前に、解析および合成を実行します。
物理合成最適化では、ネットリストの配置固有の変更を行って、特定のインテルデバイスの結果を向上させます。パフォーマンスの最適化は、Compiler SettingsのHigh Performance EffortまたはSuperior Performance Optimization Modeで行うことができます。このような最適化モードでは、Advanced Fitter SettingsのAdvanced Physical Synthesisがオンになります。このオプションをオンにした場合は、デザインの結果が向上していることを確認してください。このようなオプションが、デザインのタイミング要件を満たすために必要でない場合は、オプションをオフにしてコンパイル時間を短縮します。
Design Space Explorer II (DSE II) は、ユーティリティーとして、リソース、パフォーマンス、または消費電力最適化の目標に対して最適なプロジェクト設定を見つけるプロセスを自動化します。DSE II では複数シードを試みて、要件を満たすものを特定します。Exploration Panel > Exploration modeにより、探索スペースを事前に定義し、デザインのパフォーマンス、改善範囲、または複数のコンパイルによる消費電力の削減をターゲットにすることができます。
Optimization Advisorsで提供しているガイダンスの設定によって、デザインを最適化します。Toolsメニューで、Advisor > Timing Optimization Advisorをクリックします。オプションを評価し、要件に合った設定を選択します。
章 | Optimization Areas |
---|---|
1 | Design Space Explorer II |
3 | Netlist Optimizations and Physical Synthesis |
4 | Area Optimization |
5 | Timing Closure and Optimization |
1および5 | Power Optimization |
7.6. パフォーマンスの維持およびコンパイル時間の短縮
数 | チェック欄 | チェック項目 |
---|---|---|
1 | インクリメンタル・コンパイルを使用して、デザイン内の未変更ブロックのパフォーマンスを保持し、コンパイル時間を短縮します。 | |
2 | コンパイルに使用可能なプロセッサーが複数ある場合は、パラレルコンパイルがイネーブルされていることを確認してください。 | |
3 | Compilation Time Advisorを使用して、コンパイル時間を短縮する設定を提案します。 |
インクリメンタル・コンパイル機能を使用して、デザインの未変更部分へのロジックの保持、タイミング・パフォーマンスの維持、より効率的なタイミング・クロージャーの達成を図ります。インクリメンタル・コンパイル機能を使用してデザインを変更すると、デザイン反復時間を平均60% 短縮することができます。
インテル® Quartus® Prime開発ソフトウェアでは、複数のアルゴリズムをパラレルに実行し、複数のプロセッサーを活用してコンパイル時間を短縮します。これは、1つ以上のプロセッサーをデザイン・コンパイルで使用可能な場合に適用します。Parallel compilationオプションの設定をSettingsダイアログボックスのCompilation Process Settingsページで行うか、Options ダイアログボックスのデフォルト設定の変更を、Tools メニューの Processingページで行います。
Compilation Time Advisorで提供しているガイダンスの設定によって、デザインのコンパイル時間を短縮します。ToolsメニューのAdvisorsにカーソルを合わせ、 Compilation Time Advisorをクリックします。こういった手法のうちのいくつかを使用してコンパイル時間を短縮すると、全体として結果の品質が低下することがあります。
7.7. インテル Hyperflex でのデザイン
数 | チェック欄 | チェック項目 |
---|---|---|
1 | インテル® Hyperflex™ 機能を使用してデザインを最適化し、パフォーマンスを向上させます。 |
インテル® Hyperflex™ コア・アーキテクチャーでのレジスターの追加は、インターコネクト配線とFPGA内の主要機能ブロックすべての入力の両方に対して行われます。このような追加レジスターはハイパーレジスターと呼ばれ、従来のレジスターとは異なります。従来のレジスターは、アダプティブ・ロジック・モジュール (ALM) にのみ存在します。ハイパーレジスターは、コア・パフォーマンスの大幅な向上の達成に役立ちます。
- Hyper-Retiming
- Hyper-Pipelining
- Hyper-Optimization
高性能デザインについて詳しくは、https://www.intel.com/content/www/us/en/programmable/support/training/overview.htmlのウェブサイトを参照してください。
7.8. シミュレーション
数 | チェック欄 | チェック項目 |
---|---|---|
1 | シミュレーション・ツールを指定し、サポートされている正しいバージョンとシミュレーション・モデルを使用します。 |
インテル® Quartus® Prime開発ソフトウェアでは、RTLとゲートレベルの両方の機能シミュレーションをサポートしています。機能シミュレーションをデザインフローの初めに実行して、各デザインブロックのデザイン機能またはロジック動作を確認します。デザインのフルコンパイルは必要ありません。タイミング情報を含まない機能シミュレーション・ネットリストを生成します。
インテルでは、 ModelSim* - Intel® FPGA Starter Edition、およびより高パフォーマンスの ModelSim* - Intel® FPGA Editionを提供しています。これにより、高度なテストベンチ機能やその他の機能を活用することができます。加えて インテル® Quartus® Prime EDA Netlist Writerでは、タイミング・ネットリスト・ファイルを生成し、他のサードパーティーのシミュレーション・ツール ( Synopsys* VCS、Cadence NC-Sim、Aldec Active-HDLなど) をサポートします。シミュレーション・ツールの指定をSettingsダイアログボックスのEDA Tools Settingsページで行い、適切な出力シミュレーション・ネットリストを生成します。
サードパーティのシミュレーション・ツールを使用する場合は、そのソフトウェアのバージョンは、お使いの インテル® Quartus® Prime開発ソフトウェア・バージョンでサポートされているものを使用してください。 インテル® Quartus® Prime Software Release Notesで一覧表示している各シミュレーション・ツールのバージョンは、その特定バージョンの インテル® Quartus® Prime開発ソフトウェアで公式サポートされています。モデル・ライブラリーは、 インテル® Quartus® Prime開発ソフトウェア付属のものを使用してください。ライブラリーがバージョン間で変更された場合、シミュレーション・ネットリストとの不一致が発生する可能性があるためです。テストベンチを作成するには、Processingメニューの Startにカーソルを合わせ、Start Test Bench Template Writerをクリックします。
インテル® Quartus® Primeプロ・エディション開発ソフトウェアをサポートするシミュレーション・ツールのリストについては、 Intel Quartus Prime Pro Edition Version 19.2 Software and Device Support Release Notesを参照してください。
7.9. 電力解析
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | コンパイル終了後、消費電力および放熱性の解析をPower Analyzerで行います。 | |
2 | 正確な信号活動の提供には、できればゲートレベル・シミュレーション .vcd を使用して、正確な電力解析結果を得るようにします。 | |
3 | 正確な動作条件を電力解析用に指定します。 |
デザインの完了前に消費電力の見積もりを行うのに、EPEスプレッドシートを使用します。デザインのコンパイル後、消費電力と放熱性の解析を インテル® Quartus® Prime Power Analyzerで行い、デザインが電源バジェットおよび熱バジェットに違反していないことを確認します。
デザインのコンパイル (デザインリソース、配置配線およびI/O規格に関する情報の提供) と、信号活動データ (トグルレートおよび静的確率) の提供が、Power Analyzerを使用するために必要です。信号活動データの導出は、シミュレーション結果、またはユーザー定義のデフォルトのトグルレートとベクトルレスの推定値からできます。解析に使用する信号活動は、実際の動作を反映したものでなければなりません。電力推定を最も正確に行うには、ゲートレベルのシミュレーション結果をサードパーティーのシミュレーション・ツールの .vcd 出力ファイルで使用します。シミュレーション作業に含める必要があるのは、現実的な期間の一般的な入力ベクトルです。機能検証中に頻繁に使用されるコーナーケースではありません。推奨シミュレーター設定 (グリッチ・フィルタリングなど) を使用して良好な結果を得るようにしてください。
ほかに指定する必要があるのは、コア電圧、デバイスの電力特性、周囲温度と接合部温度、冷却ソリューション、ボードの熱モデルなどの動作条件です。適切な設定の選択をSettingsダイアログボックスの Operating Settings and Conditionsページで行います。
ダイナミック、スタティック、およびI/O熱消費電力を計算するには、ProcessingメニューのPower Analyzer Toolをクリックします。このツールで提供される信号活動のサマリーは、解析と信頼性メトリックに使用され、信号活動に対するデータソースの全体的な品質を反映します。
このレポートは、提供されたデータに基づく電力見積もりであり、電力仕様ではありません。デバイスの電源仕様については、常にデータシートを参照してください。
7.10. 消費電力の最適化
インテルAgilexデバイスでは、最先端のプロセスと回路技術を主要回路およびアーキテクチャー技術革新と併用し、低消費電力と高パフォーマンスを達成します。
インテルAgilexデバイスでのダイナミック消費電力削減のために、さまざまなデザインおよびソフトウェア手法を使用し、デザインを最適化します。
インテル® Quartus® Prime開発ソフトウェアの消費電力最適化は、正確な電力解析結果に依存します。前項のガイドラインを使用して、ソフトウェアでの電力使用率最適化が、デザインの動作および条件に対して正しく行われていることを確認します。
消費電力の最適化について詳しくは、インテルAgilexパワー・マネジメント・ユーザーガイドを参照してください。
7.10.1. デバイスおよびデザインの消費電力最適化手法
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 推奨デザイン手法および インテル® Quartus® Primeオプションを使用して、デザインの消費電力最適化を必要に応じて行います。 | |
2 | Power Optimization Advisorを使用して最適化設定を提案します。 |
7.10.1.1. デバイスのスピードグレード
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | より高速のスピードグレードのデバイスの使用を検討します。 |
デザインに含まれているクリティカル・タイミング・パスの多くで高性能モードが必要な場合、消費電力の削減は、より高速なスピードグレードのデバイスがあればそれを使用して実現できることがあります。
7.10.1.2. クロック消費電力管理
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | クロック消費電力管理を最適化します。 |
クロックでは、ダイナミック消費電力の重要な部分を表します。これは、高いスイッチング活動と長いパスが理由です。 インテル® Quartus® Prime開発ソフトウェアでは、クロック配線の電力を自動最適化します。このときイネーブルするクロック・ネットワークは、ダウンストリーム・レジスターに供給する必要のある部分のみです。クロック・コントロール機能を使用して、クロック・ネットワークを動的にイネーブルまたはディスエーブルすることもできます。クロック・ネットワークがパワーダウンされると、そのクロック・ネットワーク供給のロジックはいずれもトグルしないため、デバイスの全体的な消費電力が削減されます。
LAB全体のクロック消費電力を抑える際にクロックツリー全体を無効化しないためには、LAB全体のクロックイネーブル信号を使用してLAB全体のクロックをゲートします。 インテル® Quartus® Prime開発ソフトウェアでは、レジスターレベルのクロックイネーブル信号をLABレベルに自動昇格させます。
7.10.1.3. メモリー消費電力削減
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | メモリー・クロッキング・イベント数を削減します。 |
メモリー・クロッキング・イベント数を削減し、メモリーの消費電力を低減します。クロック・ゲーティングまたはクロックイネーブル信号は、メモリーポートで使用できます。
7.10.1.4. I/O電力のガイドライン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | I/O電力のガイドラインを確認します。 |
I/Oバッファーのダイナミック消費電力は、合計負荷キャパシタンスに比例するため、キャパシタンスが低いと消費電力が削減されます。
LVTTLやLVCMOSなどの終端のないI/O規格のレール間出力振幅は、VCCIO 電源電圧と同一です。ダイナミック電力は電圧の2乗に比例するため、より低い電圧のI/O規格を使用してダイナミック消費電力を削減します。このようなI/O規格では、スタティック電力はほとんど消費しません。
ダイナミック電力もまた、出力遷移周波数に比例するため、SSTLなどの抵抗終端型I/O規格を高周アプリケーションに使用します。出力負荷電圧が変動するのは、バイアス点の周囲のVCCIO よりも少ない量だけです。したがって、ダイナミック消費電力は、同様の条件下では、終端のないI/Oよりも低くなります。
抵抗終端型I/O規格では、スタティック電力を大量に消費するのは、電流が絶えず終端ネットワークに流れ込むためです。速度と波形の要件を満たす最低のドライブ強度を使用し、スタティック電力を最小限に抑えて、抵抗終端型I/O規格を使用してください。
外部デバイスによる使用電力はEPEでの計算には含まれないため、別途システム消費電力の計算に含める必要があります。
7.10.2. インテル Quartus Primeの消費電力最適化手法
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | 消費電力の最適化に推奨されるデザイン手法と インテル® Quartus® Primeオプションを確認します。 |
インテル® Quartus® Prime開発ソフトウェアで提供している合成とフィッティングでは、消費電力が最適化され、コア・ダイナミック消費電力が削減されます。
デザインの最適化を面積に合わせて行うことで、消費電力も節約できます。これは、使用するロジックブロックの数が少なくなるためです。したがって、一般的にスイッチング・アクティビティーが少なくなります。デザインのソースコードを改善してパフォーマンスを最適化すると、消費電力も削減できます。DSEとPower Optimization Advisorを使用し、追加の提案をして、消費電力を削減します。
7.10.2.1. Power Optimization Advisor
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | Power Optimization Advisorを使用して最適化設定を提案します。 |
インテル® Quartus® Prime開発ソフトウェアに含まれているPower Optimization Advisorでは、特定の電力最適化のアドバイスと推奨事項を、現在のデザイン・プロジェクトの設定とアサインメントに基づいて行います。ToolsメニューのAdvisorsにカーソルを合わせ、Power Optimization Advisorをクリックします。推奨される変更の実行後、デザインを再コンパイルし、Power Optimization Advisorを実行して、変化を消費電力結果で確認します。
7.11. デザインの実装、解析、最適化、および検証の改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
8. デバッグ
8.1. オンチップデバッグの概要
オンチップデバッグは、デザインフロー内のオプションのステップです。異なるデバッグツールによる効果は、システムや設計者によって異なります。オンチップ・デバッグ・オプションの評価をデザインプロセスの早い段階で行い、システムボード、 インテル® Quartus® Primeプロジェクト、およびデザインで適切なオプションが確実にサポートされるようにします。プランニングによって、デバッグに費やす時間が短縮され、デザイン変更を排除して後で希望のデバッグ方法に対応することができます。デバッグピンの追加だけでは不十分な場合があるのは、デバイス上の内部信号およびI/Oピンのアクセシビリティーが理由です。最初に、希望のデバッグツールを選択してください。
8.1.1. デバッグツールのプランニング・ガイドライン
番号 | チェック欄 | チェック項目 |
---|---|---|
1 | オンチップデバッグ手法を早期に選択し、メモリーおよびロジック要件、I/Oピン接続、およびボード接続をプランニングします。 | |
2 | Signal Probeインクリメンタル配線、Signal Tap Embedded Logic Analyzer、Logic Analyzer Interface、In-System Memory Content Editor、In-System Sources and Probes、またはVirtual JTAG IPコアを使用する場合は、システムとボードのプランニングをデバッグで使用可能なJTAG接続で行います。 | |
3 | 少量の追加ロジックリソースをプランニングし、JTAGデバッグ機能用のJTAGハブロジックの実装に使用します。 | |
4 | Signal Tap Embedded Logic Analyzerを使用したデバッグ用にデバイス・メモリー・リソースを確保し、システム動作中にデータをキャプチャします。 | |
5 | デバッグ用I/Oピンの確保にはSignal ProbeまたはLogic Analyzer Interface を使用し、デザインやボードを変更して、後でデバッグ信号に対応する必要がないようにします。 | |
6 | ボードでデバッグモードをサポートし、デバッグ信号によってシステム動作が影響されないようにします。 | |
7 | ピンヘッダーまたはmictorコネクターの組み込みを外部ロジック・アナライザーまたはミックスド・シグナル・オシロスコープの必要性に応じて行います。 | |
8 | デバッグツールのインクリメンタルな使用とコンパイル時間の短縮には、インクリメンタル・コンパイルがオンであることを確認し、デザインの再コンパイルによってデバッグツールを変更する必要がないようにします。 | |
9 | Virtual JTAGコアをカスタム・デバッグ・アプリケーションに使用するために、デザイン・プロセスの一環としてIPコアのインスタンス化をHDLコードで行います。 | |
10 | In-System Sources and Probes機能を使用するために、IPコアのインスタンス化をHDLコードで行います。 | |
11 | In-System Memory Content EditorをRAMブロックまたはROMブロックに対して使用するには、Allow In-System Memory Content Editorをオンにして、コンテンツのキャプチャおよび更新を行います。これは、IPカタログ内のメモリー・ブロックのシステムクロックのオプションと関係なく行います。 |
オンチップ・デバッグ・ツールを使用する場合は、ツールをプランニングしてシステムボード、 インテル® Quartus® Primeプロジェクト、およびデザインを開発します。
デバッグツールについて詳しくは、 インテル® Quartus® Primeプロ・エディション ユーザーガイド: デバッグツールを参照してください。
8.2. オンチップ・デバッグ・ツール
検証ツールの インテル® Quartus® Primeポートフォリオには、次のインシステム・デバッグ機能が含まれています。
- Signal Probeインクリメンタル配線 : 内部信号の迅速な配線をI/Oピンに対して行います。元のデザイン配線に影響を与えることはありません。最初に完全配線のデザインでデバッグ用の信号を選択し、以前に予約したI/Oピン、または現在使用していないI/Oピンに配線します。
- Signal Tap Embedded Logic Analyzer : 内部信号およびI/O信号の状態のプローブには、外部機器や追加のI/Oピンは使用しません。この間、デザインのフルスピードでの動作がFPGAデバイス内で行われます。カスタムのトリガー条件ロジックを定義することで、精度と問題特定能力が向上します。外部プローブやデザインファイルへの変更を行わなくても、デザイン内の内部ノードまたはI/Oピンの状態をキャプチャできます。キャプチャした信号データすべてがデバイスメモリーに保存されると、データの読み出しと解析ができます。Signal Tap Embedded Logic Analyzerは、同期インターフェイスに最適です。非同期インターフェイスのデバッグには、Signal Probeまたは外部ロジックアナライザーの使用を検討して、信号の表示をより正確なものにしてください。Signal Tapによって、元のデザインの配線が影響を受ける場合があります。
- Logic Analyzer Interface : 内部FPGA信号を外部ロジック・アナライザーに接続および送信して解析を行い、外部ロジック・アナライザーやミックスド・シグナル・オシロスコープの高度な機能を活用することができます。この機能を使用すると、多数の内部デバイス信号を少数の出力ピンにデバッグ目的で接続し、信号の多重化をデザインI/Oピンを使用して必要に応じて行うことができます。
- In-System Memory Content Editor : インシステムFPGAメモリーおよび定数への読み出しと書き込みのアクセスをJTAGインターフェイスを介して行います。これにより、FPGA内のメモリー内容および定数値への変更のテストを、システム内でのデバイス動作中に実行することができます。
- In-System Sources and Probes : カスタムのレジスターチェーンを設定して、ロジックデザイン内のインストルメント化ノードを駆動またはサンプリングします。このとき、簡単な方法でシンプルな仮想スティミュラスを入力し、インストルメント化ノードの現在の値をキャプチャすることができます。
- Virtual JTAG Intel FPGA IPコア : 独自のシステムレベルのデバッグ・インフラストラクチャーを構築することができます。これには、プロセッサー・ベースのデバッグ・ソリューションとシステムレベルのデバッグ用ソフトウェア内のデバッグツールの両方が含まれます。SLD_VIRTUAL_JTAG Intel FPGA IPコアのインスタンス化を直接HDLコード内で行って、1 つ以上のトランスペアレントな通信チャネルを提供し、FPGAデザインの一部へのアクセスを実行します。このときデバイスのJTAGインターフェイスを使用します。
- EMIF Debug Toolkit : Tclベースのグラフィカル・ユーザー・インターフェイスとしてJTAG接続を介して通信し、回路基板上の外部メモリー・インターフェイスによってキャリブレーション・ステータスおよびデバッグ情報の取得ができるようにします。ツールキットのDriver Margining機能により、メモリー・インターフェイスのマージンの測定ができます。これには、任意のトラフィック・パターンを持つドライバーを使用します。Tclベースのグラフィカル・ユーザー・インタフェイスでアクセスを提供しているメモリー・キャリブレーション・データは、 Nios® IIシーケンサーによって収集されたもので、このアクセスはJTAG接続を介して行われます。Toolkitを使用すると、キャリブレーションのためにランクをマスクし、インターフェイスの再キャリブレーションを要求することができます。ツールキットのDriver Margining機能により、メモリー・インターフェイスのマージンの測定ができます。これには、任意のトラフィック・パターンを持つドライバーを使用します。EMIF Toolkitでは、同じデバイス上の複数の異なるメモリー・インターフェイスと通信できますが、一度に1 つだけです。
- Transceiver Toolkit : System Console技術を使用することにより、FPGAおよびボード設計者がシステム内でトランシーバーのリンク信号の整合性をリアルタイムで検証し、ボード立ち上げ時間を改善するのに役立ちます。ビットエラー・レート (BER) のテストと同時に、ターゲットのデータレートで複数のリンクを実行し、Transceiver Toolkitでボードデザインを検証します。トランシーバーのアナログ設定を調整することで最適なリンク・パフォーマンスを図ると同時に、さまざまなテストメトリックを使用して結果を定量化します。複数のデバイスの同時テストを1 つ以上のボードで行うには、Transceiver Toolkit GUIのリンクテストを使用します。
- P-Tile Toolkit : DMAを備えたAvalon-MMインターフェイスに対するサポートを提供します。また、大規模データ転送のパフォーマンスを最適化するようにデザインされています。最大のパフォーマンスを小規模サイズの転送で実現するには、インテルでは、P-Tile Avalon-ST Hard IP for PCIeのような Avalon® ST IPコアの使用をお勧めします。Pタイルでは、 PCI Express* Gen4 in Endpoint、Root PortおよびTLP Bypassをサポートします。
- SDM Debug Toolkit - SDM Debug Toolkitでは、インテルAgilexデバイスの現在のステータスにアクセスすることができます。
8.3. デバッグの改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |
9. インテル Agilex SoC FPGA向けエンベデッド・ソフトウェアのデザイン・ガイドライン
9.1. 概要
この章では、 インテル® Agilex™ ハード・プロセッサー・システムに向けてソフトウェア開発プラットフォームを構築するためのデザイン上の考慮事項について説明します。
記載されている推奨事項に従って、ソフトウェア・プラットフォームのコンポーネントを選択し、そのコンポーネントが、最終アプリケーションのパフォーマンス、サポート、および市場投入までの時間に関する要件に合うようにしてください。
9.2. ソフトウェア要件の定義
まず、ソフトウェア要件を定義します。通常これは、サポートする必要があるユースケースや、テスト容易性や拡張性などのさまざまな品質目標などです。必要な機能がすべて指定されているかどうか注意深く確認してください。この段階でのエラーは、後で修正するのにコストがかかる可能性があります。
9.3. ソフトウェア・アーキテクチャーの定義
ソフトウェア・アーキテクチャーを定義します。ソフトウェア要件が、提案するアーキテクチャーによって満たされていることを確認します。通常、アーキテクチャーの焦点は、ソフトウェアの編成方法のハイレベル・ビューです。一部のプロジェクトのローレベルの別の実装ドキュメントでは、アーキテクチャー・ドキュメントを補足します。この段階でのエラーも、後で修正するのに非常にコストがかかる可能性があります。
9.4. ソフトウェア・ツールの選択
この章では、さまざまなソフトウェア開発ツールを選択するためのデザイン上の考慮事項について説明します。
9.4.1. ソフトウェア・ビルド・ツールの選択
- コンパイラー
- アセンブラー
- リンカー
- アーカイバー
9.4.2. ソフトウェア・デバッグ・ツールの選択
使用するソフトウェア・デバッグ・ツールを決定してください。また、ツール・プロバイダーに問い合わせて、 インテル® Agilex™ デバイスに対するサポートの利用が、希望する期間を通じて受けられるかどうかを確認してください。
Arm DS-5* Intel SoC FPGA Editionには、フル機能を備えたEclipseベースのデバッグ環境が含まれています。他にも、サードパーティーのプロバイダーから提供されるデバッグツールには、Lauterbach* T32などがあります。
デバッグツールには、インテル SoC FPGAデバイスへのJTAG接続が必要です。JTAG接続を実現するには、次の方法を使用します。
- インテル® Agilex™ SoC開発キットなどで入手可能な組み込み型 インテル® FPGAダウンロード・ケーブルII
- 外部JTAGハードウェア (Lauterbach* T32ツール使用時に必要になることがあるものと同様のもの)
9.4.3. ソフトウェア・トレース・ツールの選択
トレースが非常に有効になるのは、パフォーマンスのボトルネックのプロファイリング、クラッシュシナリオのデバッグ、および複雑なケースのデバッグに対してです。トレースの実行には次の2とおりの方法があります。
- 非リアルタイム : トレースデータをシステムメモリー (SDRAMなど) または組み込みトレースバッファーに格納した後、システムを停止し、JTAGを介してトレース情報をダウンロードし解析します。
- リアルタイム : 外部アダプターを使用し、トレースデータをトレースポートからキャプチャします。ターゲットボードでこのシナリオをサポートしていることが必要です。
デバッグツールでは通常、エンベデッド・ソフトウェア・プログラムの実行のトレースも提供しますが、外部ハードウェアが必要になる場合があります。例えば、SoC EDSで提供されるArm DS-5 Intel SoC FPGA Editionは、非リアルタイムとリアルタイムのトレースの両方をサポートします。リアルタイム・トレースに使用する場合は、 Arm* DSTREAMと呼ばれる外部トレースユニットが必要です。
Lauterbach* T32の場合でも、リアルタイム・トレースには外部ハードウェアが必要です。
9.4.4. ブートローダー・ソフトウェアの選択
インテル® Agilex™ SoC HPSの一般的なブートフローを次の図に表します。
ブートローダー・ソフトウェアは、ソフトウェア開発プラットフォームにおいて最も重要なコンポーネントの1つです。ブートローダーでは、システムを初期化し、次のブートイメージであるオペレーティング・システムまたはベアメタル・アプリケーションに制御をロードして渡します。
- 第1ステージ・ブートローダー (FSBL) - SDMによってFPGAコンフィグレーション・ビットストリームからHPS側のオンチップメモリーにロードされます。
- HPSをコンフィグレーションするために不可欠な初期のハードウェア設定を提供
- HPSのフラッシュおよびペリフェラル・コンポーネントを制御するソフトウェア機能
- 早期デバッグおよびトラブルシューティングを可能にするユーティリティー
- 第2ステージ・ブートローダー (SSBL) - FSBLによってDDRAMにロードされ、FSBLよりもはるかに多くの機能 (ネットワーク・アクセス、コマンドライン・インターフェイス、スクリプティング・サポートなど) を備えている可能性があります。
- U-Bootブートローダー : オープンソース・コミュニティーから入手可能な機能の一部を継承しています。Linux* OSユーザーの間で広く利用されています。U-Bootブートローダーは、GPLライセンスによって管理されています。
- UEFIブートローダー : 豊富な機能があり、RTOSユーザーに広く利用されています。オープンソースのBSDスタイルライセンスで管理されています。
- ATF (ARM Trusted Firmware) ブートローダー : UEFIで利用され、第1ステージ・ブートローダーのみを提供します。BSDスタイルライセンスを使用し、ベアメタル・アプリケーションを直接ロードするためにSSBLの代わりに使用できます。
ガイドライン : ソフトウェア開発プラットフォームに適したブートローダーを選択するには、最新バージョンを使用し、また、GPLおよびオープンソースのBSDライセンスについて十分に理解し、どのライセンス条項がご自身の要件に最適かを検討します。
一般的なHPSシステムには数百個のレジスターがあます。レジスターの設定は、MPUサブシステム、ネットワークオンチップ・インターコネクト・コンポーネント、DDRAMメモリー、フラッシュ・ブート・ソース、およびペリフェラル・インターフェイスの特定のコンフィグレーションに対して行ってください。
ガイドライン : 必要とされる初期化設定の量を考えると、ブートローダーをゼロから作成することは推奨されません。提供されているブートローダーのオプションには、HPSのさまざまな部分に対する最適なデフォルトのコンフィグレーション設定が含まれています。
9.4.5. アプリケーションのオペレーティング・システムの選択
9.4.5.1. LinuxまたはRTOSの使用
- オペレーティング・システムの機能
- ライセンス条項
- オペレーティング・システムに基づくコラボレーション・ソフトウェア・プロジェクトおよびフレームワークの可用性
- 使用可能なデバイスドライバーおよびリファレンス・ソフトウェア
- 社内のレガシーコードおよびオペレーティング・システムに関する知識
- 使用システムのリアルタイム要件
- アプリケーションに必要な機能安全およびその他の認証
アプリケーションに適したオペレーティング・システムを選択するには、SoC FPGAで使用可能なオープンソース、および市販のオペレーティング・システムで提供される機能とサポートサービスに関して理解する必要があります。インテルのOSパートナーのウェブサイトには、選択を行う際に参考となる情報が提供されています。プロバイダーに問い合わせて、 インテル® Agilex™ のサポートの利用が、希望する期間を通じて受けられるかどうかを確認してください。
Linux*は、現在 インテル® Agilex™ デバイスでは、Yocto Project互換のÅngströmディストリビューションで有効です。
パートナーOSプロバイダーでは、SoC FPGAデバイス向けボード・サポート・パッケージおよび商用サポートを提供しています。また、LinuxコミュニティーでもSoC FPGAデバイス向けボード・サポート・パッケージおよびコミュニティー・サポートを提供しています。
オペレーティング・システムのリアルタイム・パフォーマンスやベアメタル・アプリケーションに関しては、いくつか誤解があります。 Arm* Cortex* Aクラス・プロセッサーの場合、ランタイム・アプリケーションを管理するために提供される機能のほかに、リアルタイム・オペレーティング・システムによるプロセッサーのリソースを効率的に使用する機能がいくつかあります。
このような効率性により、アプリケーションのリアルタイム・パフォーマンスが十分に向上し、使用可能なデバイスドライバー、ミドルウェア・パッケージ、ソフトウェア・アプリケーション、およびサポートサービスの大部分を継承できるようになります。オペレーティング・システムを選択する際にはこの内容を考慮してください。
9.4.5.2. ベアメタルフレームワークとしてのブートローダーの使用
アプリケーションが比較的シンプルで、マルチコアやマルチタスクなどの複雑な機能を必要としない場合、アプリケーションをブートローダーに含めることが1つの選択肢になります。
アプリケーションをブートローダーに含めることには、次の利点があります。
- ブート時間短縮の可能性
- 大容量ストレージやネットワークなど、ブートローダーにすでに実装されている機能へのアクセス
9.4.5.3. 対称型および非対称型のマルチプロセッシング (SMPおよびAMP) モードの使用
インテル® Agilex™ HPSのクアッドコア Arm* Cortex-A53 MPCore* では、対称マルチプロセッシング (SMP) と非対称マルチプロセッシング (AMP) の両方の動作モードをサポートします。
SMPモードでは、単一のオペレーティング・システムのインスタンスで4つのコアすべてを制御します。SMPコンフィグレーションは、さまざまなオペレーティング・システム・メーカーによってサポートされており、マルチプロセッシングの最も一般的かつ分かりやすいコンフィグレーション・モードです。
Linuxおよび商用に開発されたオペレーティング・システムには、CPUコアのリソースを最大限に活用する機能があります。その機能を効率的に使用することで、最適なパフォーマンスと使いやすさを実現します。例えば、SMP対応のオペレーティング・システムには、プロセッサー親和性を設定するオプションがあります。つまり、各タスクまたはスレッドを割り当てて、それを特定のコアで実行することができます。この機能により、それぞれの Arm* Cortex-A53コアへのワークロード分散をより適切に制御し、AMPの代替としてシステムの応答性を高めることができます。
ガイドライン : 市販のオペレーティング・システムで使用可能なパフォーマンスおよび最適化を理解し、SMP対応のオペレーティング・システムまたはRTOSによって、パフォーマンスおよびリアルタイム要件が満たされているかを確認します。
AMPのコンフィグレーションでは、最大4つの異なるオペレーティング・システムを4つの Cortex*-A53コアで動作させることができます。これにより、有効な組み合わせの実現がより多く可能になります。AMPとSMPを組み合わせ、2つのコアでSMPを実行し、残りの2つのコアでAMPを実行することも可能です。
特別な考慮事項
- AMPの使用は、プロセスの管理と計画、プロセス間通信の処理、イベント間の同期、およびオペレーティング・システムの2つのインスタンス間の安全なプロセス管理の手法に精通している場合にのみにしてください。
- 一般的にOSプロバイダーによるサポートは、オペレーティング・システムをAMPモードで使用する場合には提供されません。そのような場合は通常、特別なサポート契約が必要になります。
- AMPを使用する場合は、Cortex-A53のバーチャライゼーション機能を使用することが最良です。Cortex-A53 AMPに含まれているバーチャライゼーションのネイティブ・ハードウェア・サポートによって、リソース共有問題のほとんどが解決できます。
9.5. ドライバーの考慮事項
- どのIPモジュールにドライバーが必要かを決定します。これには、HPS側の強化IPとFPGA側のソフトIPの両方が含まれます。
- どのIPがすでにサポートされているかをOSプロバイダーに確認してください。通常、ほとんどのHPSペリフェラルがサポートされています。ただし、すべてではありません。
- 必要な機能が正確に使用可能なドライバーによって実装されているかどうかを確認します。通常、最も一般的な使用例がサポートされていますが、一部の特別な使用例はサポートされていない場合があります。
- 追加で必要とされるドライバーまたはドライバーの機能の実装が自社内で可能か、OSプロバイダーまたはサードパーティから要求できるかどうかを判断し、それに応じて続行します。
9.6. アプリケーションの開発
エンドアプリケーションを開発します。このとき、定義されたソフトウェア・アーキテクチャーに従い、選択されたビルドおよびデバッグツールを使用します。
9.7. テストおよび検証
最終アプリケーションをテストして検証します。機能と品質の要件がすべて満たされていることを確認します。
9.8. エンベデッド・ソフトウェアのデザイン・ガイドラインの改訂履歴
ドキュメント・バージョン | 変更内容 |
---|---|
2019.09.30 | 初版 |