High Bandwidth Memory (HBM2) Interface Intel FPGA IPユーザーガイド
バージョン情報
更新対象: |
---|
インテル® Quartus® Prime デザインスイート 20.3 |
IPバージョン 19.6.0 |
この翻訳版は参照用であり、翻訳版と英語版の内容に相違がある場合は、英語版が優先されるものとします。翻訳版は、資料によっては英語版の更新に対応していない場合があります。最新情報につきましては、必ず英語版の最新資料をご確認ください。 |
1. High Bandwidth Memory (HBM2) Interface Intel FPGA IPについて
1.1. リリース情報
IPバージョンは、v19.1までは インテル® Quartus® Primeデザインスイートのソフトウェア・バージョンと同一です。 インテル® Quartus® Primeデザインスイートソフトウェア・バージョン19.2以降のIPコアには、新しいIPバージョン管理スキームがあります。
IPバージョン管理スキーム (X.Y.Z) 番号は、ソフトウェア・バージョンごとに変わります。
- XはIPのメジャーリビジョンを示します。インテルQuartus Prime開発ソフトウェアを更新したら、IPを再生成してください。
- YはIPに新しい機能が含まれていることを示します。IPを再生成して、新しい機能を含めてください。
- ZはIPにマイナーな変更が含まれていることを示します。IPを再生成して、新しい機能を含めてください。
項目 | 説明 |
---|---|
IPバージョン | 19.6.0 |
インテル® Quartus® Primeバージョン | 20.3 |
リリース日 |
2020.10.05 |
2. High Bandwidth Memoryの概要
High Bandwidth Memory DRAMは、分散インターフェイスを使用してホストダイと緊密に結合しています。インターフェイスは、独立したチャネルに分割され、それぞれが互いに完全に独立しています。各チャネル・インターフェイスでは、128ビットデータバスを維持し、DDRデータレートで動作します。
2.1. インテル Stratix 10デバイスのHBM2
インテル® Stratix® 10デバイスには、インテルのEmbedded Multi-Die Interconnect Bridge (EMIB) テクノロジーが組み込まれ、HBM2 DRAMメモリーとUniversal Interface Block Subsystem (UIBSS) との間にシリコンブリッジを実装しています。UIBSSには、HBM2コントローラー (HBMC)、物理層インターフェイス (PHY)、およびHBM2スタックにインターフェイス接続するI/Oポートが含まれています。
下図で示すとおり、各 インテル® Stratix® 10デバイスには、各HBM2インターフェイスにユニバーサル・インターフェイス・バスが1つ含まれ、独立した8個のチャネルをサポートします。
HBM2コントローラーに対するユーザー・インターフェイスは、AXI4プロトコルを介して維持されます。16個のAXIインターフェイスが、各HBM2コントローラーのユーザー・インターフェイスで使用可能です。その内1つのAXIインターフェイスは、HBM2 Pseudo Channelごとに使用可能です。HBM2 DRAM集積度は、4GBおよび8GBがサポートされています。

2.2. HBM2 DRAMの構造
次の図の例では、1つのスタックにDRAMダイが4つ含まれ、各ダイで2つのチャネルをサポートしています。各ダイによって容量とチャネルがスタックに追加され、最大で8つのチャネルが各スタックに提供されます。各チャネルには、DRAMバンクの独立したセットへのアクセスが用意されています。あるチャネルからの要求があっても、別のチャネルに付属するデータへのアクセスはできない場合があります。

2.3. インテル Stratix 10 HBM2の機能
- Pseudo Channelモードで、HBM2インターフェイスごとにHBM2チャネルを1つから8つサポートします。
- 各HBM2チャネルでは、128ビットDDRデータバスをサポートします。ECCサポートはオプションです。
- Pseudo Channelモードでは、各チャネルを分割して個別の64ビットI/O疑似チャネル2つにします。この2つの擬似チャネルは、半独立的に動作します。つまり、チャネルのロウおよびカラムのコマンドバスのほか、CKおよびCKE入力を共有しますが、コマンドをデコードしたり実行したりするのは別々です。アドレスBA4では、コマンドを疑似チャネル0 (BA4 = 0) または疑似チャネル1 (BA4 = 1) のいずれかに送り、一意のアドレス空間を各疑似チャネルに対して提供します。Pseudo Channelモードでは、DRAMトランザクションのバースト長は4に設定する必要があります。
- ストローブ RDQS_t / RDQS_c および WDQS_t / WDQS_c を参照するデータ。32DQごとにストローブペア1つです。
- 差動クロック入力 (CK_t / CK_c)。未終端データ/アドレス/cmd/clkインターフェイスです。
- CK_t および CK_c の正の各エッジで入力されたDDRコマンド。Row Activateコマンドにはメモリーサイクルが2つ必要です。その他のコマンドはすべてシングルサイクル・コマンドです。
- コマンド、書き込みデータ、読み出しデータパリティーをサポートします。
- バンクのグループ化のサポート。
- データバス反転のサポート。
- 擬似チャネルごとの64ビットデータ。擬似チャネルごとに8つの追加データビットが使用可能です。このデータビットは、次のいずれかに使用できます。
- ECC。実装されるECCスキームは、ダブルビット・エラー検出 (SECDEC) を備えたシングルビット・エラー訂正です。これには、8ビットのECCコード (シンドロームとも呼ばれます) が含まれます。
- データマスク (DM)。バイトごとの書き込みデータをマスクするためのデータマスクです。
- 未使用のままにすることもできます。
- I/O電圧1.2VおよびDRAMコア電圧1.2V。
2.4. インテル Stratix 10 HBM2コントローラーの機能
- ユーザー・アプリケーションとHBMCの通信にAXI4 Protocolを使用します。
- HBM2 Pseudo Channelごとに1つのAXI4インターフェイスがあります。各HBM2インターフェイスでは、16個のPseudo Channelに対して最大で16個のAXI4インターフェイスをサポートします。オプションとして Avalon® インターフェイスが、 インテル® Quartus® Prime開発ソフトウェアにより各Pseudo Channelに対してサポートされています。
- ユーザー・インターフェイスの動作は、HBM2インターフェイス周波数よりも低い周波数で可能です。サポートされる最大HBM2インターフェイス周波数は、FPGAデバイスのスピードグレードによって異なります。コアクロックの最小周波数は、HBM2インターフェイス周波数の4分の1です。
- 各AXIインターフェイスでは、256ビットのWrite Dataインターフェイスおよび256ビットのRead Dataインターフェイスをサポートします。
- コントローラーの32Bおよび64Bアクセス粒度では、バースト長4 (BL 4) および擬似BL 8 (2つの連続BL4) をサポートします。
- コントローラーでは、アウトオブオーダー・コマンド・スケジューリングおよび読み出しデータの並べ替えを提供します。
- コントローラーでは、ユーザーが開始するRefreshコマンドと、HBM2チャネル・ステータス・レジスターへのアクセスをサイドバンドのAdvanced Peripheral Bus (APB) インターフェイスを介してサポートします。
- コントローラーでは、データマスクまたはエラー訂正コード (ECC) をサポートします。データマスクまたはECCを使用しない場合、これらのビットは追加のデータビットとして使用できます。
3. インテル Stratix 10 HBM2のアーキテクチャー
3.1. インテル Stratix 10 HBM2の概要
- インテル® Stratix® 10 FPGAでは、最大で2つのHBM2インターフェイスを提供しています。
- 各HBM2デバイスのデバイス集積度は4GBまたは8GBです。これは選択したFPGAに基づきます。
このシステムインパッケージ・ソリューションは、小さなフットプリントで最大の帯域幅と低消費電力の実現に役立ちます。
3.2. インテル Stratix 10 UIBのアーキテクチャー
各UIBサブシステムには、HBM2ハード化コントローラーおよびユニバーサル・インターフェイス・バスが含まれています。これを構成するハード化された物理インターフェイスとI/Oロジックは、各HBM2 DRAMデバイスとのインターフェイスに必要です。AMBA AXI4プロトコルでは、コアロジックとのインターフェイス接続にユニバーサル・インターフェイス・バス・サブシステムを使用します。オプションのソフト・ロジック・アダプターがFPGAファブリックに実装され、これにより、ユーザーロジックからHBM2ハード化コントローラーへのインターフェイス接続が効率的に行われます。 インテル® Quartus® Prime開発ソフトウェア・バージョン20.2以降では、オプションの Avalon®メモリーマップド・インターフェイスが、各Pseudo Channelに対してサポートされています。
次の図で示すのは、 インテル® Stratix® 10 HBM2ユニバーサル・インターフェイス・バス・サブシステムのハイレベルのブロック図です。UIBサブシステムには、次のハード化されたロジックが含まれています。
- レートマッチングFIFO。ロジックをユーザー・コア・クロックからHBM2クロックドメインに転送します。
- HBM2メモリー・コントローラー (HBMC)。
- UIB PHY。UIB物理層とI/Oが含まれます。

(* Avalon®メモリーマップド・インターフェイス は、 インテル® Quartus® Prime開発ソフトウェア・バージョン20.2以降でサポートされています。)
ユーザー・コア・クロックで駆動するロジックを緑色で、UIBクロックで駆動するロジックを青色で表示しています。UIBクロックでは、HBM2インターフェイス・クロックも駆動します。ユーザーロジックの動作速度は、HBM2インターフェイスよりも最大で1~4倍遅くなります。
ソフトロジックAXIアダプター
HBM2 IPに含まれているソフト・ロジック・アダプターは、FPGAコアロジックに実装されています。ソフト・ロジック・アダプターでは、ユーザーValid信号 (write address valid、write data valid、およびread address valid) のゲートに、HBM2コントローラーからの対応パイプライン化Ready信号を使用します。ソフト・ロジック・アダプターでも、HBM2コントローラーからの出力 (AXI書き込み応答およびAXI読み出しデータチャネル) を一時保存します。これは、AXI Ready信号がない場合です。一時保存ロジックをディスエーブルできるのは、ユーザーロジックで、HBM2 IPの生成時にHBM2コントローラーからの出力をパラメーター・エディターを介して受け入れる準備が常時できている場合です。
HBM2 DRAM
次の表で示すHBM2信号は、UIBにインターフェイス接続します。UIBでは、HBM2信号を駆動し、HBM2から受信したデータをデコードします。この信号へのアクセスは、AXI4 User Interfaceからはできません。
信号名 | 信号幅 | 注 |
---|---|---|
Data | 128 | チャネルごとに128ビット双方向DQ |
Column command/address | 8 | 8ビット幅のカラム・アドレス・ビット |
Row command/address | 6 | 6ビット幅のロウ・アドレス・ビット |
DBI | 16 | 8DQあたり1DBI |
DM_CB | 16 | 8DQあたり1DM。このピンは、DMまたはECCに使用できますが、両方には使用できません。 |
PAR | 4 | 32DQあたり1パリティービット |
DERR | 4 | 32DQあたり1データエラー |
Strobes | 16 | 読み出しおよび書き込みストローブ用の個別ストローブ。読み出しおよび書き込み用に32DQごとに1つの差動ペア。 |
Clock | 2 | クロックアドレスおよびコマンド信号 |
CKE | 1 | クロックイネーブル |
AERR | 1 | アドレスエラー |
次の表で示すHBM2信号は、各HBM2インターフェイスのすべてのPseudo Channelに共通です。HBM2コントローラーは、次の信号とインターフェイス接続します。この信号は、AXI4ユーザー・インターフェイスでは使用できません。
信号名 | 信号幅 | 注 |
---|---|---|
Reset | 1 | リセット入力 |
TEMP | 3 | HBM2からの温度出力 |
Cattrip | 1 | 破局的温度センサー |
インテル® Stratix® 10 HBM2 IPでサポートするのは、HBM2仕様のPseudo Channelモードのみです。Pseudo Channelモードには次の機能が含まれます。
- Pseudo Channelモードでは、単一のHBM2チャネルを分割して64ビットI/Oの個別のサブチャネル2つにします。
- 両方のPseudo Channelで、チャネルのロウおよびカラムのコマンドバス、CK、およびCKE入力を共有しますが、コマンドをデコードしたり実行したりするのは別々です。
- Pseudo Channelモードで必要なバースト長は4です。
- アドレスBA4では、コマンドをPseudo Channel 0 (BA4 = 0) またはPseudo Channel 1 (BA4 = 1) に送ります。HBM2コントローラーでは、Pseudo Channelのアドレス指定要件を処理します。
- パワーダウンとセルフ・リフレッシュは、両方のPseudo Channelに共通です。これは、CKEピンを共有しているためです。両方のPseudo Channelでは、チャネルのモードレジスターも共有します。
ユーザーAXIインターフェイス
各 インテル® Stratix® 10 HBM2インターフェイスでは、最大8つのHBM2チャネルをサポートします。各HBM2チャネルには、2つのAXI4インターフェイスがあり、Pseudo Channelごとに1つずつです。各AXI4インターフェイスには、Pseudo Channelごとに256ビット幅のWrite DataおよびRead Dataインターフェイスが含まれています。次の図では、ユーザーロジックからUIBSSを介したHBM2 DRAMへのデータフローを示しています。このとき選択しているのは、HBM2チャネル0および7です。

(* Avalon®メモリーマップド・インターフェイス は、 インテル® Quartus® Prime開発ソフトウェア・バージョン20.2以降でサポートされています。)
AXIユーザー・インターフェイス
AXIインターフェイスは、Pseudo Channelごとに1つあります。各AXIインターフェイスでは、HBM2コントローラー間で、256ビット幅のWrite Dataインターフェイスおよび256ビット幅のRead Dataインターフェイスをサポートします。AXI4プロトコルでは、HBM2コントローラーへの同時書き込みおよび同時読み出しを処理します。また、サイドバンド・ユーザー・ポートがユーザーチャネルのペアごとにあります。これは、Advanced Peripheral Bus (APB) に準拠しています。サイドバンドでは、ユーザー制御機能へのアクセスを提供しています。これには、リフレッシュ・リクエスト、ECCステータス、Power Downステータス、HBM2温度読み出し、 Avalon® メモリーマップド・ユーザー・インターフェイス、キャリブレーション・ステータス、User割り込みなどがあります。
Avalon® Memory-Mappedインターフェイス
インテル® Quartus® Prime開発ソフトウェア・バージョン20.2以降は、256ビット Avalon®メモリーマップド・インターフェイスがPseudo Channelごとにサポートされています。
ソフトAXIスイッチ
インテル® Quartus® Prime開発ソフトウェア・バージョン20.1以降では、HBM2 IPによりソフト4x4 AXIスイッチがサポートされます。これにより各AXIマスターからHBM2 DRAM内の対応するHBM2 Channel 2つ、またはHBM2 Pseudo Channel 4つ (HBM2チャネル1つ = HBM2疑似チャネル2つ) のメモリースペースにアクセスできるようになります。スイッチ機能は、 Avalon®メモリーマップド・インターフェイスフローではサポートされていません。AXIスイッチについて詳しくは、ソフトAXIスイッチを参照してください。
インテル® Stratix® 10 HBM2コントローラーによってサポートされているAXIプロトコル機能について詳しくは、High Bandwidth Memory (HBM2) Interface Intel FPGA IPのインターフェイス を参照してください。
3.3. インテル Stratix 10 HBM2コントローラーのアーキテクチャー
各コントローラーを構成しているのは、書き込みおよび読み出しデータパス、ならびに制御ロジックです。制御ロジックは、ユーザーコマンドをHBM2メモリーに変換するのに役立ちます。HBM2コントローラー・ロジックでは、HBM2メモリー仕様のタイミングを考慮し、コマンドのスケジュールを効率的に行います。次の図で示すのは、HBM2コントローラーのブロック図です。これはチャネル0に対応しています。HBM2コントローラーのユーザー・ロジック・インターフェイスは、AXIインターフェイスおよび Avalon®メモリーマップド・インターフェイスに従います ( インテル® Quartus® Prime開発ソフトウェア・バージョン20.2以降)。インターフェイスのタイミングについて詳しくは、ユーザーAXIインターフェイスのタイミング のセクションを参照してください。

3.3.1. インテル Stratix 10 HBM2コントローラーの詳細
HBM2バースト・トランザクション
HBM2コントローラーでサポートするのは、HBM2デバイスにアクセスするPseudo Channelモードのみです。したがって、サポートできるのは、DRAMへのBL4トランザクションのみです。効率向上のために、擬似BL8モードをサポートしています。これは、指定の開始アドレスを使用する連続した2つのBL4データを提供するのに役立ちます。BL8トランザクションと同様です。
各BL4トランザクションは、4*64ビットまたは32バイトに対応します。また、BL8トランザクションはPseudo Channelごとに64バイトに対応します。バースト・トランザクション・モード (32 Bと64B) の選択には、パラメーター・エディターを使用します。
ユーザー・インターフェイスとHBM2インターフェイスの周波数
ユーザー・インターフェイスの動作周波数は、HBM2インターフェイスよりも低くなります。最大インターフェイス周波数は、選択したデバイスのスピードグレードやFPGAコアのロジック周波数によって異なります。UIBサブシステム内のレートマッチングFIFOでは、2つのクロックドメイン間のデータ転送を処理します。
コマンド・プライオリティー
コマンド・プライオリティーの設定は、書き込みまたは読み出しコマンド要求に対してすることができます。これには、AXIインターフェイス、またはAXI書き込みまたは読み出しアドレスチャネルの qos 信号を使用します。HBM2コントローラーでサポートするのは、通常および高いプライオリティーのレベルです。システムでは、同じプライオリティー・レベルを持つコマンドをラウンドロビン方式で実行します。
スタベーションの限界
コントローラーでは、各コマンドの待機時間を追跡し、使用されないままコマンドキューに長時間留まっているコマンドがないようにします。コントローラーによって、すべてのコマンドの効率的な処理が保証されます。
コマンドのスケジュール
HBM2コントローラーでは、着信コマンドをスケジュールして、HBM2インターフェイスでの最大効率を達成します。HBM2コントローラーは、AXI4プロトコル仕様のAXI順序モデルにも準拠しています。
データの並べ替え
コントローラーでは、読み出しデータを並べ替えて、読み出し要求の順序と一致させます。
アドレスの順序付け
HBM2コントローラーでは、さまざまなアドレス順序方式をサポートしています。方式を選択して、ユースケースに応じて最大効率を実現します。選択したアドレス指定方式により、AXI書き込みおよび読み出しアドレスバス内のアドレスコンフィグレーションの順序が決まります。これには、ロウアドレス、カラムアドレス、バンクアドレス、スタックID (8Hデバイスにのみ適用) が含まれます。HBM2コントローラーでは、コマンドの論理アドレスの再マッピングを物理メモリーアドレスに対して行います。
熱制御
HBM2コントローラーでは、HBM2デバイスからのTEMPおよびCATTRIP出力を使用して、HBM2インターフェイスの温度変動を管理します。
- 温度補償リフレッシュ (TEMP): HBM2 DRAMによって温度補償リフレッシュ情報のコントローラーへの提供が、TEMP[2:0] ピンを介して行われます。これにより、適切なリフレッシュ・レートが定義されます。このリフレッシュ・レートは、データの整合性を維持するためにDRAMで判断したものです。各エンコードの絶対温度値はベンダー固有です。TEMP[2:0] ピンのエンコードによって反映されるリフレッシュ・レートは、スタック内の最も高温度のデバイスに必要なものです。TEMPデータ温度が更新されるのは、各リフレッシュ・レートに適したベンダー指定のしきい値レベルを超えた場合です。
- 破局的温度センサー (CATTRIP): CATTRIPセンサーで検出するのは、スタック内のダイのジャンクション温度が、破局的トリップしきい値CATTEMPを超えているかどうかです。デバイスベンダーでは、CATTEMP値をプログラムして、HBMスタックに永続的な損傷が発生する温度より低くなるようにします。またCATTEMP値は、絶対最大ジャンクション温度値でもあります。この値は、
インテル®
Stratix® 10データシートで明示されています。その対象のデバイスにはHBM2 DRAMが搭載されています。
インテル®
Stratix® 10データシートのリンクは次のとおりです。https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/hb/stratix-10/s10_datasheet.pdf
ジャンクション温度がスタック内のどこかでCATTEMP値を超えると、HBMスタックでは、外部CATTRIPピンを 1 に駆動し、破局的損傷が発生する可能性があることを示します。CATTRIPピンが 1 の場合、コントローラーでは、HBMへのすべてのトラフィックを停止し、コントローラーは無期限に機能停止します。過熱状態を解決してCATTRIP値を 0 に戻すには、デバイスの電源を切り、十分な時間をとってデバイスを冷却してから電源を再投入します。
- サーマル・スロットリング: サーマル・スロットリングは、コントローラーの安全機能です。これにより、HBM2ダイが過熱した場合の熱暴走を制御し、破局的障害を防ぎます。HBM2デバイスのジャンクション温度を指定して、その温度で、コントローラーによる入力コマンドのスロットルを開始します。また、スロットル比を指定し、それによってスロットル周波数が決定します。コントローラーでAXI ready信号 (awready、wready および arready) をデアサートするのは、入力コマンドとデータのアクティブなスロットリングを行っている場合です。
リフレッシュ要求
HBM2コントローラーでは、HBM2メモリー・リフレッシュ要件を処理し、リフレッシュ要求の発行を最適なタイミングで行います。コントローラーでは、リフレッシュ・レートの自動制御をメモリーの温度設定に基づいて行います。これには、メモリーによって提供されるTEMPベクトルを介します。HBM2コントローラーのリフレッシュ・ポリシーの選択は、リフレッシュ要求の周波数に基づいて行います。リフレッシュ・コマンドの直接発行を選択する場合は、サイドバンドAPBインターフェイスを介して行います。
プリチャージ・ポリシー
HBM2コントローラでは、プリチャージ・コマンドの発行をHBM2メモリーに対して行います。これは、書き込み/読み出しトランザクション・アドレスに基づきます。さらに、自動プリチャージ・コマンドの発行は、書き込みおよび読み出しコマンドとともにできます。これは、AXI書き込みおよび読み出しアドレスポートを介して行います。
次の2つの自動プリチャージ・モードがあります。
- HINT: 自動プリチャージ要求を発行できます。その上で、コントローラーでは、プリチャージ・コマンドを発行するタイミングを決定します。
- FORCED: 自動プリチャージ要求の提供をAXIインターフェイスを介して行うと、プリチャージ要求が実行されます。
パワーダウン・イネーブル
電力節約のため、HBM2コントローラーは、バスが長時間アイドル状態のときにパワーダウンモードに入ります。このオプションは、必要に応じて選択できます。
ECC
HBM2コントローラーではECCをサポートしています。実装されているECC方式は、ダブルビット・エラー検出を備えたシングルビット・エラー訂正です。これには、64ビットのデータおよび8ビットのECCコード (シンドロームとも呼ばれます) が備えられています。
デフォルトでイネーブルされているHBM2コントローラーの機能
HBM2コントローラーでは、次の機能をデフォルトでイネーブルします。
- DBI: DBIオプションでは、DBIの書き込みと読み出しの両方をサポートし、SI/電力消費の最適化のため、HBM2 DQバスでの信号切り替えを制限します。
- パリティー: コマンド/アドレスパリティーおよびDQパリティーをサポートします。
4. High Bandwidth Memory (HBM2) Interface Intel FPGA IPの作成とパラメーター化
4.1. High Bandwidth Memory (HBM2) Interface FPGA IP向け インテル Quartus Primeプロ・エディション・プロジェクトの作成
-
HBM2 IPを生成する前に、新しいプロジェクトを作成してください。
- インテル® Quartus® Primeプロ・エディション開発ソフトウェアを起動します。
- File > New Project WizardをクリックしてNew Project Wizardを起動します。
- Directory、Name、Top-Level Entityフィールドにプロジェクト名を入力します。
- Project TypeセクションでEmpty Projectを選択します。
- Add FilesセクションでNextをクリックします。
- Family、Device、およびBoard SettingsセクションでデバイスファミリーにStratix 10を選択します。
- Available Devicesで任意のデバイスと希望のスピードグレードを選択します。
- Nextをクリックしてウィザードのプロンプトに従うと、プロジェクトの作成が完了します。
- IP CatalogでLibrary > Memory Interfaces and Controllersを開きます。
-
High Bandwidth Memory (HBM2) Interface Intel FPGA IPを選択して、パラメーター・エディターを起動します。
図 6. IP CatalogでHigh Bandwidth Memory (HBM2) Interface Intel FPGA IPを選択する
4.2. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのパラメーター化
パラメーター・エディターを構成している次のタブで、IPのパラメーターを設定します。
- General
- FPGA I/O
- Controller
- Diagnostics
- Example Designs
4.2.1. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのGeneralパラメーター


表示名 | 説明 |
---|---|
Speed Grade |
FPGAデバイスのスピードグレードのほか、エンジニアリング・サンプル (ES) と量産デバイスのどちらかが表示されます。この値は、View > Device Familyで選択したデバイスに基づいて自動的に決定されます。デバイスを指定しない場合は、システムによって、スピードグレードが最速の量産デバイスを仮定します。IP生成中は、常に正しいターゲットデバイスを指定してください。正しいデバイスを指定しないと、生成されたIPがハードウェアで機能しない場合があります。 インテル® Stratix® 10 FPGAのスピードグレードを指定します。 |
HBM2 Location | インテル® Stratix® 10 FPGA内のHBM2インターフェイスの位置を決定します。FPGAによって提供されるHBM2インターフェイスは、FPGAコアの上部と下部にあります。 |
HBM2 Device Type | HBMデバイスタイプです。4GB/4Hは、合計デバイス集積度が4GBで4段StackのHBM2デバイスを指します。8GB8Hは、合計HBM2デバイス集積度が8GBで8段StackのHBM2デバイスを指します。 |
表示名 | 説明 |
---|---|
Channel 0 and 1 Interface Settings (HBM2 Channels 2と3、4と5、6と7に適用) | |
Enable Channel 0 interface | High Bandwidth MemoryコントローラーをUniversal Interface Blockのチャネル0に追加します。各コントローラーでは、HBM疑似チャネル2つを処理します。実装するHBM2メモリーチャネルを選択します。各HBM2チャネルは、64ビットPseudo Channelを2つ使用して、HBM2デバイスへの128ビット・インターフェイスをサポートします。HBM2コントローラーへのユーザー・インターフェイスでは、AXI4プロトコルを使用します。各コントローラーには、Pseudo Channelごとに1つのAXI4インターフェイス、またはチャネルごとに2つのAXI4インターフェイスがあります。 |
Enable Channel 1 interface | High Bandwidth MemoryコントローラーをUniversal Interface Blockのチャネル1に追加します。各コントローラーでは、HBM疑似チャネル2つを処理します。実装するHBM2メモリーチャネルを選択します。各HBM2チャネルは、64ビットPseudo Channelを2つ使用して、HBM2デバイスへの128ビット・インターフェイスをサポートします。HBM2コントローラーへのユーザーインターフェイスでは、AXI4プロトコルを使用します。各コントローラーには、Pseudo Channelごとに1つのAXI4インターフェイス、またはチャネルごとに2つのAXI4インターフェイスがあります。 |
Interface Protocol |
インターフェイス・プロトコルは、チャネルのペア (0と1、2と3、4と5、6と7) ごとに選択できます。 次のプロトコルがサポートされています。
|
Enable AXI Switch for channel 0 and 1 | ソフトAXIスイッチロジックを追加して、各AXIマスターがHBM2 DRAMのChannel0および1のメモリー空間全体にアクセスできるようにします。ソフトAXIスイッチが使用できるのは、AXIインターフェイス・プロトコルを選択した場合のみです。AXIスイッチの使用についての情報は、ソフトAXIスイッチを参照してください。 注: 対応する4x4 AXIスイッチにアクセスするには、2つのHBM2チャネルをイネーブルする必要があります。
|
Master | アービトレーション・スキームの選択をイネーブルして、各AXIマスターに効率的なメモリーアクセスを提供します。 |
Transaction Count | アクセスが提供されたときにマスターで発行する予定の合計トランザクション数を提供します。各トランザクションの数は、単一のBL4または疑似BL8トランザクションを参照します。合計トランザクション数に含まれるのは、アクセスが提供されたときにマスターで発行する予定のすべてのPseudo Channelに対するトランザクション数です。デフォルト値は0です。HBM2 IPは、最大65535のトランザクションをサポートできます。トランザクション数が多いと、ファブリックのパフォーマンスが低下する可能性があることに注意してください。トランザクション数については、HBM2 IPカタログでのAXIスイッチの選択を参照してください。 |
Honor | 他のマスターよりも高いプライオリティーを必要とするマスターを選択します。選択できるマスターは1つだけです。マスターを選択しない場合、すべてのマスターが同じプライオリティーを受け取り、ラウンド・ロビン・アービトレーションが実行されます。 |
表示名 | 説明 |
---|---|
Allow backpressure of AXI read data and write response channels | FIFOをソフトロジックでインスタンス化して、AXIインターフェイス上の読み出しデータと書き込み応答をバッファー処理します。これが必要なのは、RREADY/BREADY信号がデアサートされた場合です。このオプションをディスエーブルすると、レイテンシーを短縮できます。ただし、RREADY/BREADYをインターフェイスのバックプレッシャーに使用していない場合のみです。バックプレッシャー機能が使用できるのは、AXIアンダーインターフェイス・フローでのみです。 Avalon®メモリーマップド・インターフェイス・フローでは使用できません。 |
Backpressure latency (clock cycles) | 0から2までの値を選択します (0がデフォルトです)。 ユーザー・インターフェイスがコントローラーのREADY信号(AXI Write Address / Read Address / Write Data) に反応する時間を確保します。また、レイテンシーを増やさずにAXIユーザー・インターフェイスとHBM2 IP間のタイミングを向上させるためにも使用できます。 |
Automatically instantiate backpressure registers within the HBM2 IP | このオプションは、
インテル®
Quartus® Prime開発ソフトウェア・バージョン20.3以降で使用可能です。このオプションを使用すると、HBM2 IPにより、IP内でバックプレッシャー・レジスターを配置したり、レジスターを必要に応じて手動で配置したりできます。デザイン例では、バックプレッシャー・レジスターをHBM2 IP内に配置します。この機能の使用方法については、ユーザーロジックからHBM2 Controller AXI Interfaceへのタイミングの改善を参照してください。 注:
インテル® Quartus® Prime開発ソフトウェア・バージョン19.4から20.2では、バックプレッシャー・レジスターは、HBM2 IP内で内部生成されていました。19.4より前のリリースでは、バックプレッシャー・レジスターは、必要に応じて手動で実装することが必要でした。 |
Threshold temperature for AXI throttling | このパラメーターでは、HBM2スタックの温度を摂氏で定義します。それを超えると、HBM2コントローラーによりAXIインターフェイス・トランザクションのスロットリングが行われます。温度設定は、すべてのAXI4インターフェイスに適用されます。ただし、この機能を各HBM2コントローラーの対応するコントローラー・タブでイネーブルしてください。スロットリングをイネーブルすると、HBM2コントローラーによってDRAMチャネルのトラフィック量が減らされます。 |
AXI throttling ratio | AXIインターフェイス・スロットルが温度に基づいてイネーブルされている場合、このパラメーターでは、スロットル率をパーセンテージで定義します (0 =スロットリングなし、100 = フル・スロットリング)。スロットリングのイネーブルまたはディスエーブルは、個々のコントローラー・タブでできます。 |
表示名 | 説明 |
---|---|
Enable reset debounce | イネーブルすると、リセット・デバウンス・ロジックが wmcrst_n_in 信号に追加されます。 |
Debounce period | デバウンス期間をミリ秒単位で設定します。最小期間は20ミリ秒です。 |
表示名 | 説明 |
---|---|
Memory clock frequency |
メモリークロックの周波数 (MHz) です。HBM2インターフェイスのクロック周波数を指定します。サポートされる最大HBM2クロック周波数は、FPGAデバイスのスピードグレードによって異なります。
|
Use recommended PLL reference clock frequency | チェックを付けると、PLLリファレンス・クロック周波数が自動計算されて、最良のパフォーマンスが得られるようになります。チェックを外すのは、独自のPLLリファレンス・クロック周波数を指定する場合です。PLLリファレンス・クロック周波数を自動計算して、最良のパフォーマンスが得られるようになります。このパラメーターをディスエーブルするのは、別のPLLリファレンス・クロック周波数を選択する場合です。 |
PLL reference clock frequency | PLLリファレンス・クロック周波数です。これは、ユニバーサル・インターフェイス・バス (UIB) PLLリファレンス・クロックです。この周波数のクロックをメモリー・インターフェイスのPLLリファレンス・クロック入力に供給してください。このパラメーターをイネーブルするのは、Use recommended PLL reference clock frequencyをディスエーブルして、PLLリファレンス・クロック周波数を指定する場合のみです。可能な限り高速のPLLリファレンス・クロック周波数を使用することで、最良のジッター性能が実現できます。 |
Core clock frequency |
ユーザーAXI4インターフェイスの周波数 (MHz) です。このクロックの提供元は、I/O PLL (HBM2 IPによってインスタンス化されていないもの) でなければなりません。コアI/O PLLを駆動するリファレンス・クロックを提供するオシレーターは、ボード上のUIB PLLリファレンス・クロックを特定のHBM2インターフェイスに対して供給するオシレーターと同じである必要があります。これは、最大限のパフォーマンスを実現するためです。 サポートされる最大コア周波数は、デバイスのスピードグレードとFPGA内のコア・インターフェイス・クロックのタイミング・クロージャーによって異なります。コアクロックの最小周波数は、HBM2インターフェイス周波数の4分の1です。 |
Use recommended example design core clock PLL reference clock frequency |
PLLリファレンス・クロック周波数が自動計算され、最良のパフォーマンスが得られるようになります。チェックを外すのは、独自のPLLリファレンス・クロック周波数を指定する場合です。 デザイン例のコア・クロックPLLリファレンス・クロック周波数を自動計算して、最良のパフォーマンスが得られるようになります。このパラメーターをディスエーブルするのは、別のPLLリファレンス・クロック周波数を選択する場合です。 |
Reference clock frequency for example design core clock PLL | PLLリファレンス・クロック周波数 (MHz) です。コアクロックを供給するPLL向けです。このパラメーターは、デザイン例のPLLでのみ使用されます。外部から提供されるリファレンス・クロック周波数をコアクロックPLLに対して指定します。 |
4.2.2. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのFPGA I/Oパラメーター

表示名 | 説明 |
---|---|
Memory PLL Reference clock I/O standard | I/O規格をメモリー・インターフェイスのPLLリファレンス・クロックに対して指定します。使用可能な終端オプションは、オンチップ終端のあるLVDS、オンチップ終端のないLVDS、およびオンチップ終端のないLVECLです。このパラメーターが使用できるのは、 インテル® Quartus® Prime開発ソフトウェア・バージョン20.3以降です。デザインを以前のリリースから移行する場合は、LVDS without on-chip terminationを選択します。 |
4.2.3. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのControllerパラメーター

表示名 | 説明 |
---|---|
Is clone of | このオプションを設定すると、このコントローラーは、選択したコントローラーのクローンになります。パラメーターは、指定したコントローラーからコピーされます。このパラメーターが適用されるのは、HBM2コントローラーを1つ以上選択した場合です。このパラメーターを設定するのは、あるコントローラーを別のコントローラーと同じ設定にする場合です。 |
Interface Protocol | AXIまたはAVMM ( Avalon® メモリーマップド) が、Generalタブでチャネルに対して選択したインターフェイス・プロトコルに基づいて表示されます。 |
Enable AutoPrecharge Control | このパラメーターを選択して、コントローラーのトップレベルの自動プリチャージ制御をイネーブルします。読み出しまたは書き込みバーストの要求中に自動プリチャージ・コントロール信号をアサートすると、現在開いているページを読み出しまたは書き込みバーストの終了時にコントローラーによって閉じる (自動プリチャージする) かどうかを指定できます。これにより、同じバンクの別のページへの将来のアクセスがより速くなる可能性があります。適用されるのは Avalon® -MMチャネルのみです。 |
Enable Command Priority Control | このパラメーターを選択すると、ユーザー要求コマンドのプライオリティー制御がコントローラーのトップレベルでイネーブルされます。このパラメーターによるコントローラーへの指示で、読み出しまたは書き込み要求が高プライオリティーとして扱われます。コントローラーは、プライオリティーの高い要求をより早く満たして、レイテンシーを短縮しようとします。このインターフェイスをロジックブロックのコンジットに接続すると、読み出しまたは書き込み要求をプライオリティーの高いコマンドとして処理するタイミングが外部メモリー・インターフェイスIPにより決定されます。適用されるのはAvalon-MMチャネルのみです。 |
Enable Re-order buffer | 読み出しデータの順序を変更して、トランザクションが発行される順序と一致するように指定します。この機能をディスエーブルすると、Read Dataは、AXIインターフェイスで提供されている場合、Read Requestの発行順序と同じにならないことが予想されます。データの並べ替えは、トランザクションのAXI読み出しIDに基づいて行います。 このパラメーターが適用されるケースは、複数のAXIトランザクションIDを持つ場合です。異なるAXI読み出し/書き込みIDを使用することで、HBM2コントローラーによるトランザクションの並べ替えを許可し、効率が向上します。同じAXI IDをすべてのトランザクションに対して使用すると、コントローラーでは、コマンドをメモリーに対して発行します。その順序はメモリーの到着順です。この場合、並べ替えバッファーのイネーブルは不要です。 |
Enable AXI interface throttling based on temperature | 温度ベースのスロットリングをこのチャネルに対してイネーブルします。しきい値温度とスロットリング率の指定は、Generalタブで行います。AXIサーマル・スロットリングを特定のHBM2コントローラーに対してイネーブルします。サーマル・スロットリングのトリガー温度を設定するパラメーターは、Generalタブにあります。HBM2スタックの温度がGeneralタブで設定したHBM2スロットリングのしきい値温度に達すると、HBM2コントローラーではユーザー要求のスロットリングを開始します。 |
Address reordering | AXIアドレスからHBMアドレスへのマッピングを記述します。AXIインターフェイスからHBM2メモリーデバイスへのマッピングのパターンを指定します。正しいアドレス並べ替えコンフィグレーションを選択すると、ユーザーのトラフィック・パターンに基づいて、HBM2メモリーデバイスへのアクセスの効率が向上します。HBMCでは、次の3種類のアドレス並べ替えをサポートしています。 アドレス順序 (32Bアクセス: 疑似BL8はディスエーブル): SID-BG-BANK-ROW-COL[5:1] SID-ROW-BANK-COL[5:1]-BG ROW-SID-BANK-COL[5:1]-BG COL[0]=0 アドレス順序 (64Bアクセス: 疑似BL8はイネーブル): SID-BG-BANK-ROW-COL[5:1] SID-ROW-BANK-COL[5:2]-BG-COL[1] ROW-SID-BANK-COL[5:2]-BG-COL[1] COL[1:0] = {00}) SIDが適用されるのは8GB/8H HBM2デバイスのみです。4GB/4Hデバイスには使用できません。 |
User Read Auto-Precharge Policy | 自動プリチャージ発行の決定ポリシーを記述します。FORCEDは、コントローラーがユーザーの自動プリチャージ要求に厳密に従うことを示します。HINTは、ページヒットの検出時に自動プリチャージ要求をディスエーブルすることによって、コントローラーで自動プリチャージ要求をオーバーライドする可能性があることを示します。(つまり、コントローラーでは、コマンドを2つ (1つは同じページへの自動プリチャージ付き、もう1つは同じページへの自動プリチャージなし) を受信すると、最初のコマンドの自動プリチャージを0に変更します。これにより、2番目のコマンドによるページのアクセスに、ページを再度開く必要がなくなります。) プリチャージ要求の発行は、readコマンドと一緒にすることができます。これには axi_x_y_aruser 入力を使用します。ここで x はHBM2チャネル番号 (0-7) を示し、y はHBM2 Pseudo Channel番号 (0/1) を示します。 次の2つの値のうちの1つをこのパラメーターに対して選択します。
|
User Write Auto-Precharge Policy | 自動プリチャージ発行の決定ポリシーを記述します。FORCEDは、コントローラーがユーザーの自動プリチャージ要求に厳密に従うことを示します。HINTは、ページヒットの検出時に自動プリチャージ要求をディスエーブルすることによって、コントローラーで自動プリチャージ要求をオーバーライドする可能性があることを示します。(つまり、コントローラーでは、コマンドを2つ (1つは同じページへの自動プリチャージ付き、もう1つは同じページへの自動プリチャージなし) を受信すると、最初のコマンドの自動プリチャージを0に変更します。これにより、2番目のコマンドによるページのアクセスに、ページを再度開く必要がなくなります。) プリチャージ要求の発行は、writeコマンドと一緒にすることができます。これには axi_x_y_awuser 入力を使用します。ここで x はHBM2チャネル番号 (0-7) を示し、y はHBM2 Pseudo Channel番号 (0/1) を示します。 次の2つの値のうちの1つをこのパラメーターに対して選択します 。
|
Power Down Enable | アイドル時にコントローラーがパワーダウンします。 |
Refresh mode | 高帯域幅メモリーに対するリフレッシュの制御方法を指定します。ユーザー・リフレッシュ・モードの開始は、Advanced Periperal Bus (APB) のアクセスによります。次の3つの値のうちいずれか1つをこのパラメーターに対して選択します。
|
Enable AXI Burst length of more than 2 | このオプションをイネーブルすると、HBM2 IPによりシーケンシャル・バースト・トランザクションがAXIインターフェイスでサポートされます。この機能が適用されるのは、AXIチャネルのスイッチがイネーブルされていない場合のみです。このオプションを使用すると、AXIインターフェイスのAWLEN/ARLEN入力を使用して、シーケンシャル・バースト・トラフィックを発行することができます。バーストサイズを定義する値は、バースト長4モードでAWLEN/ARLENによって提供されます。このオプションを選択できるのは、BL4モードをHBM2 DRAMで使用している場合のみです。 |
AXI Maximum burst length | enable more than 2 Burst length オプションがイネーブルされている場合、最大256がサポートされます。 このオプションがディスエーブルの場合、デフォルト値の1が設定されます。最大バースト長の値によってawid/aridの幅が決まります。詳細については、AXIインターフェイス信号のセクションを参照してください。 |
Enable Pseudo BL8 for performance |
イネーブルすると、データアクセス粒度は64B (BL8のPseudo-Channelごとに64ビット) になり、効率が向上します。それ以外の場合、データアクセスの粒度は32B (BL4のPseudo-Channelごとに64ビット) です。 コントローラーによるメモリー・トランザクションのバースト長の設定は、この設定に基づいて行われます。AXIインターフェイスのユーザー駆動信号 axi_awsize および axi_arsize に提供される入力は無視します。 |
Data width per Pseudo-Channel |
Pseudo Channelごとのデータ幅。使用可能なデータ幅は次のとおりです。 256ビット: AXIインターフェイスでの256ビットのデータ転送を指します。ECCまたは書き込みデータマスクのオプションが使用できるのは、このデータ幅モードでのみです。 288ビット: AXIインターフェイスでの288ビットのデータ転送を指します。このモードでは、ECCまたは書き込みデータマスクのオプションは使用できません。このデータ幅オプションを選択するときは、独自のECCロジックを実装してください。 |
Memory channel ECC generation and checking/correction |
メモリーチャネルECCの生成とチェック/訂正。HBM2コントローラーは、シングルビット・エラー訂正とダブルビット・エラー検出をサポートします。この機能が使用できるのは、256ビットのデータ幅モードを選択した場合のみです。 コントローラーでは、ECC生成モードでの書き込みデータマスクはサポートしません。 |
Write data mask enable | HBM2 DRAMへの書き込みデータマスク (DM) 入力をイネーブルします。 DMピンを使用する場合、ECCは使用できません。この機能が使用できるのは、256ビットAXIデータ幅モードを選択した場合のみです。 |
4.2.4. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのDiagnosticパラメーター

表示名 | 説明 |
---|---|
Run the default traffic pattern | リセット後にデフォルトのトラフィック・パターンを実行します。デフォルトのトラフィック・パターンを構成するシングル/ブロックの読み出しと書き込みのテストの複数のステージでは、シーケンシャルおよびランダムのアドレス指定を使用します。このパラメーターは、AXIユーザー・インターフェイスにのみ適用されます。 Avalon®メモリーマップド・インターフェイスでは、デフォルトのトラフィック・パターンを使用します。 |
Enable mixed traffic | トラフィック・ジェネレーターのコンフィグレーションを行って、さまざまなトラフィック・パターンを送信します。これには、単一およびブロックの読み出し/書き込みなどがあり、シーケンシャルおよびランダムのアドレス指定を組み合わせて使用します。このパラメーターをイネーブルしない場合、トラフィック・ジェネレーターでは、ブロック読み出し/書き込みの送信にシーケンシャル・アドレス指定を使用します。このパラメーターは、さまざまなトラフィック・パターンでのHBM2インターフェイスのパフォーマンスを理解するのに役立ちます。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 Avalon®メモリーマップド・インターフェイスではデフォルトのトラフィック・パターンを使用します。 |
Force traffic generator to issue traffic with different read/write IDs |
トラフィック・ジェネレーターに強制して、異なる読み出し/書き込みIDのトラフィックを発行します。この場合、並び替えバッファーがオンであるかどうかは無関係です。異なる読み出し/書き込みIDを使用すると、コントローラーでは、トランザクションを並べ替えて効率を上げることができます。ただし、データの不一致が発生します。これは、並べ替えバッファーがディスエーブルされていて、アウトオブオーダーを返す読み出しデータの処理がユーザーロジックによって行われない場合です。 並び替えバッファーをイネーブルすると、トラフィック・ジェネレーターでは、異なるIDのトランザクションを自動生成します。このパラメーターをイネーブルしない場合、トラフィック・ジェネレーターによるAXIトランザクションの発行は、読み出し/書き込みIDが異なる場合は行われません。ただし、並び替えバッファーをイネーブルしてある場合は例外です。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 Avalon®メモリーマップド・インターフェイスではデフォルトのトラフィック・パターンを使用します |
Enable Traffic Generator Configuration Module | トラフィック・ジェネレーターのコンフィグレーション・モジュールのインスタンス化をイネーブルします。これが必要なのは、カスタム・トラフィック・パターンを作成する場合のみです。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 Avalon®メモリーマップド・インターフェイスでは、デフォルトのトラフィック・パターンを使用します。 |
Run the user-configured traffic stage | ユーザーがコンフィグレーションしたトラフィック・パターンをリセット後に実行します。(トラフィック・ジェネレーターのリコンフィグレーションは、後からでもできます。) トラフィック・ジェネレーターによって成功または失敗のステータスのアサートがされるのは、Avalonコンフィグレーション・インターフェイスによってトラフィック・ジェネレーターのコンフィグレーションが行われ、開始が通知された後です。コンフィグレーションを実行するには、トラフィック・ジェネレーターに接続します。これは、EMIF Debug Toolkit経由で行うか、またはトラフィック・ジェネレーターのAvalon-MMコンフィグレーション・スレーブ・ポートに接続しているカスタムロジックを使用します。コンフィグレーションのシミュレーションには、altera_hbm_tg_axi_tb.sv ファイルで提供されるテストベンチを使用します。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 Avalon®メモリーマップド・インターフェイスでは、デフォルトのトラフィック・パターンを使用します。 |
Export Traffic Generator Configuration Interface | Avalon-MMスレーブポートをエクスポートし、トラフィック・ジェネレータを設定します。これが必要なのは、トラフィック・ジェネレーターのコンフィグレーションをユーザー設定のトラフィックで行ってている場合のみです。このパラメーターは、AXIユーザー・インターフェイスにのみ適用されます。 Avalon®メモリーマップド・インターフェイスでは、デフォルトのトラフィック・パターンを使用します。 |
Disable HBM model transaction messages in simulation | イネーブルすると、HBMモデルのトランザクション・メッセージはシミュレーションには表示されません。 |
Enable AXI R/W data transaction messages in simulation | AXIデータのトランザクション・メッセージをシミュレーションに表示します。 |
表示名 | 説明 |
---|---|
Enable Efficiency Monitor | Efficiency Monitorコンポーネントをメモリー・コントローラーのAXIインターフェイスに追加します。Efficiency Monitorモニターでは、シミュレーション中のインターフェイスの効率に関する統計を収集して報告します。Efficiency Monitorが使用できるのは、AXIユーザー・インターフェイス・フローでのみです。 |
Use efficiency pattern | トラフィック・ジェネレーターによって高効率の同時トラフィック・パターンが生成され、機能がデザイン例に統合されます。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 |
Read count | トラフィック・ジェネレーターの読み出しカウントを定義します。読み出しと書き込みのカウントを等しくして、有効性チェックに合格するようにします。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 |
Write count | トラフィック・ジェネレーターの書き込みカウントを定義します。読み出しと書き込みのカウントが等しくして、有効性チェックに合格するようにします。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 |
Sequence | トラフィック・ジェネレーターの書き込みおよび読み出しシーケンスを定義します。選択できるのは、RandomまたはSequentialです。(最良のHBM2効率を得るには、このパラメーターにはSequentialを選択してください。) このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 |
Enable data check for efficiency measurement | ソフト・トラフィック・ジェネレーターの効率測定のデータチェックをイネーブルします。このパラメーターが適用されるのは、AXIユーザー・インターフェイスのみです。 |
表示名 | 説明 |
---|---|
Enable in-System-Source-and-Probes | In-System-Sources-and-Probesを一般的なデバッグ信号のデザイン例でイネーブルします。例えば、キャリブレーション・ステータスやトラフィック・ジェネレーターのビットごとのステータスの例などです。ドライバーのマージニングを行う場合は、このパラメーターをイネーブルしてください。 |
4.2.5. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのExample Designsパラメーター

表示名 | 説明 |
---|---|
Simulation |
シミュレーションに必要なすべてのファイルセットがシステムで生成されるように指定するには、Generate Example Designをクリックします。1、2分の追加遅延が、シミュレーション・ファイル・セットの生成時に予想されます。 このパラメーターをイネーブルしない場合、システムではシミュレーション・ファイル・セットの生成は行いません。代わりに、出力ディレクトリーには ed_sim.qsys ファイルが含まれます。このファイルには、Platform Designerのシミュレーション・デザイン例の詳細が含まれています。出力ディレクトリーには、make_sim_design.tcl ファイルと他の対応tclファイルも含まれます。 make_sim_design.tcl ファイルをコマンドラインから実行して、シミュレーション・デザイン例を生成します。異なるシミュレーター用に生成されたデザイン例は、/simサブディレクトリーにあります。 |
Synthesis |
シミュレーションに必要なすべてのファイルセットがシステムで生成されるように指定するには、Generate Example Designをクリックします。1、2分の追加遅延が、シミュレーション・ファイル・セットの生成時に予想されます。 このパラメーターをイネーブルしない場合、システムではシミュレーション・ファイル・セットの生成は行いません。代わりに、出力ディレクトリーには ed_synth.qsys ファイルが含まれます。このファイルには、Platform Designerのシミュレーション・デザイン例の詳細が含まれています。 出力ディレクトリーには、make_qii_design.tcl ファイルと他の対応tclファイルも含まれます。 make_sim_design.tcl ファイルをコマンドラインから実行して、シミュレーション・デザイン例を生成します。異なるシミュレーター用に生成されたデザイン例は、/qiiサブディレクトリーにあります。 |
表示名 | 説明 |
---|---|
Simulation HDL format |
デザイン例のシミュレーション用に生成されたHDLファイルの形式。 |
4.3. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのピン・プランニング
- UIB PLLリファレンス・クロック: UIB PLLのリファレンス・クロック入力。HBM2インターフェイスごとにUIB PLLリファレンス・クロックが1つあります。
- コアクロック入力: ファブリック・コア・クロック。I/O PLLを介して生成されます。
コアクロック周波数がHBM2クロック周波数の半分である場合、コアI/O PLLを駆動するリファレンス・クロックの供給元のオシレーターは、特定のHBM2インターフェイスのボード上のUIB PLLリファレンス・クロックを供給するのと同じオシレーターである必要があります。
信号 | 概要 | ピン配置ガイドライン |
---|---|---|
pll_ref_clk |
HBM2 IPパラメーター・エディターでは、次のI/O規格を選択できます。
UIB PLLリファレンス・クロック用に選択されたI/O規格に基づく終端の推奨事項については、 インテル® Stratix® 10汎用I/Oユーザーガイド および インテル® Stratix® 10ピン接続ガイドライン を参照してください。 |
このリファレンス・クロック入力の配置は、HBM2デバイスをFPGAの下部で使用する場合は、UIB_PLL_REF_CLK_00ピンに、HBM2をFPGAの上部で使用する場合は、UIB_PLL_REF_CLK_01ピンにします。 |
ext_core_clk | LVDS差動入力クロックです。ファブリック・コア・クロックの生成に使用します。HBM2 IPのコアクロックを生成するI/O PLLをインスタンス化します。 | CLK_ ピンにリファレンス・クロック入力を配置して、I/O PLLにアクセスします。選択するピンは、UIB_PLL_REF_CLK入力に近いものにしてください。I/O PLLのインスタンス化はデザインフローで行ってください。I/O PLLの出力はEXT_CORE_CLKとして機能します。 |
入力リファレンス・クロックのジッター仕様
リファレンス・クロック入力は、両方とも、次の時間間隔エラー (TIE) ジッター要件を満たす必要があります。
- 20psピークツーピーク
- 1e-12 BERで1.42ps RMS
- 1e-16 BERで1.22ps RMS
5. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのシミュレーション
シミュレーションの前提事項
パラメーター設定は、Controllerタブで行った場合、シミュレーション中の効率に影響します。デフォルトのコンフィグレーションでは、デフォルトのパラメーター設定を使用し、トラフィック・ジェネレーターによってシーケンシャル・トランザクションが発行されます。
サポートされているシミュレーター
HMB2 IPでは、次のシミュレーターをサポートしています。
- ModelSim*- Intel FPGA Edition
- ModelSim SE
- Questa* Advanced Simulator
- NCSim*
- Aldec Riviera-PRO*
- Synopsys* VCS
- Xcelium* Parallel Simulator
5.1. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのデザイン例

Traffic Generatorでエミュレートする実際のアプリケーションでは、メモリーへの書き込み、メモリーからの読み出し、読み出しデータの検証を行います。トラフィック・ジェネレーター・ロジックを変更してトラフィック・パターンに合わせたり、独自のロジックを使用してトランザクションをHBM2メモリーに駆動したりできます。
シミュレーションには、ハード化されたHBM2コントローラーおよびユニバーサル・インターフェイス・ブロック (UIB) の抽象モデルが組み込まれています。HBM2コントローラーでは、データの並べ替えと拡張機能を実行し、AXI4ユーザー・インターフェイスとUIB PHYとの間の通信が可能になります。ユニバーサル・インターフェイス・ブロックPHY (UIB PHY) は、ローレベル信号を伝送する物理層インターフェイスです。
HBM2 Modelは、抽象汎用モデルとしてシミュレーション用のHBM2 DRAMを表したものです。これはベンダー固有のモデルではありません。
5.2. ModelSim* およびQuesta* によるHigh Bandwidth Memory (HBM2) Interface Intel FPGA IPのシミュレーション
- ModelSimシミュレーターを起動します。
- File > Change Directoryを選択し、 project_directory/sim/ed_sim/sim/mentorに移動します。
- Transcriptウィンドウが表示されていることを確認します。表示されていない場合は、View > Transcriptを選択して表示します。
- Transcriptウィンドウで、ModelSimツール画面の下部にあるsource msim_setup.tclを実行します。
- Tclスクリプトの実行が終了したら、ld_debug をTranscriptウィンドウで実行します。このコマンドでは、デザインファイルをコンパイルし、トップレベル・デザインをエラボレートします。
-
ld_debug の実行が終了したら、Objectsウィンドウが表示されます。Objectsウィンドウでシミュレートする信号を選択します。これには、右クリックして、コンテキスト・メニューからAdd Waveを選択します。
例えば、HBM2インターフェイス信号を表示する場合は、モジュール mem0_0 を Instanceウィンドウで選択します。 mem0_0 を選択した状態で、Objectsウィンドウに移動して、表示する信号を選択します。Objectsウィンドウが表示されていない場合は、View > Objectsを選択すると表示されます。
-
HBM2シミュレーションを実行するには、run -all と入力します。
シミュレーションが表示されていない場合は、View > Waveを選択します。Waveウィンドウを開いた状態で、File > Save Formatを選択します。OKをクリックして、選択した波形を wave.do ファイル内にキャプチャします。波形を表示するには、do wave.do と入力してから、run-all と入力します 。デザインまたは wave.do に変更を加えた場合は、必ずこの手順のステップ7を繰り返してください。あるいは、指示をスクリプトにまとめて、そのスクリプトを実行します。次の例で示している run.do スクリプトには、必要なコマンドが含まれています。
if {[file exists msim_setup.tcl]} { source msim_setup.tcl ld_debug do wave.do run -all } else { error "The msim_setup.tcl script does not exist. Please generate the example design RTL and simulation scripts. See ../../README.txt for help." }
run.do スクリプトを im_setup.tcl ファイルと同じディレクトリーに保存します。do run.do と入力して、このスクリプトをTranscriptウィンドウから実行します。 - シミュレーションが完了すると、Transcriptウィンドウに効率データやその他の有用な情報が表示されます。
5.3. Synopsys VCS* によるHigh Bandwidth Memory (HBM2) Interface Intel FPGA IPのシミュレーション
- project_directory/hbm_0_example_design/sim/ed_sim/sim/synopsys/vcs ディレクトリーに移動します。
- シミュレーションを実行するには、sh vcs_setup.sh と入力します。シミュレーション結果を表示するには、出力をログファイルに書き込みます。シミュレーション・ログでは、効率データやその他の有用な情報を提供します。
- 波形を表示するには、+vcs+dumpvars+test.vcd を vcs コマンドに追加します。
- 波形を表示するには、dve& と入力して波形ビューアーを起動します。必要な信号またはモジュールを波形ビューに追加して、必要な信号を表示します。
5.4. Riviera-PRO* によるHigh Bandwidth Memory (HBM2) Interface Intel FPGA IPのシミュレーション
- project_directory>/sim/ed_sim/aldec に移動します。
- rungui と入力して、Riviera-PROシミュレーターを起動します。
- source rivierapro_setup.tcl と入力します。
- ld_debug と入力して、デザインファイルをコンパイルし、トップレベル・デザインを作成します。
- run -all と入力して、HBM2シミュレーションを実行します。
5.5. Cadence NCSim*によるHigh Bandwidth Memory (HBM2) Interface FPGA IPのシミュレーション
- project_directory>/sim/ed_sim/cadence に移動します。
- sh ncsim_setup.sh と入力して、NCSimシミュレーターを起動します。
- シミュレーション結果を表示するには、出力をログファイルに書き込みます。シミュレーション・ログでは、効率データやその他の有用な情報を提供します。
5.6. Cadence Xcelium* Parallel SimulatorによるHigh Bandwidth Memory (HBM2) Interface FPGA IPのシミュレーション
- project_directory>/sim/ed_sim/xcelium に移動します。
- sh xcelium_setup.sh と入力してXceliumシミュレーターを起動します。
- シミュレーション結果を表示するには、出力をログファイルに書き込みます。シミュレーション・ログでは、効率データやその他の有用な情報を提供します。
5.7. 高効率のためのHigh Bandwidth Memory (HBM2) Interface Intel FPGA IPのシミュレーション
より高い効率を引き出すための主な手順は次のとおりです。
- ControllerタブでEnable Reorder Bufferをオフにします。Reorder Bufferでは、読み出しデータの並べ替えを行います。このときの順序は、発行された要求順です。
- Force traffic generator to issue different AXI Read/Write IDsおよびEnable Efficiency Test ModeをDiagnosticsタブでオンにします。このコンフィグレーションでは、トラフィック・ジェネレーターによって同時読み出しおよび書き込みトランザクションが発行されます。その結果、データ不一致の警告が表示される場合がありますが、これは無視できます。
- Use efficiency patternおよびEnable data check for efficiency measurementをDiagnosticsタブでオンにし、トラフィック・ジェネレーターで効率パターンを使用して、合成デザインとシミュレーション・デザインの両方をテストします。Read countとWrite countの値が等しいことを確認して、妥当性検査に合格するようにします。最良のHBM2効率を得るには、SequentialのSequence値を選択します。
次のセクションでは、General、Controller、およびDiagnosticタブのパラメーターについて説明します。このパラメーターは、高効率HBM2シミュレーションを実行するために必要なものです。次の図で示すパラメーター設定は、シングルチャネルHBM2コントローラーの高効率シミュレーション用です。
コントローラーの効率改善に関する詳細は、High Bandwidth Memory (HBM2) Interface Intel FPGA IPコントローラーのパフォーマンス を参照してください。


5.8. ユーザー・プロジェクトでインスタンス化されたHigh Bandwidth Memory (HBM2) Interface IPのシミュレーション
- ユーザーのシミュレーション・プロジェクトに、<project_directory>\<IP_name>\sim\<IP_name>.v を含めます。
- 生成されたHBM2 IPシミュレーション・ファイル・セットには、HBM2メモリー・モデル・ファイルは含まれません。メモリー・モデル・ファイルをご自身でプロジェクトに追加してください。インテルでは、IPから生成されたデザイン例シミュレーション・ファイル・セットのメモリーモデル hbm_0_example_design\sim\ip\ed_sim\ed_sim_mem\sim\ed_sim_mem.v の使用をお勧めします。
6. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのインターフェイス
6.1. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのハイレベルブロック図

6.2. High Bandwidth Memory (HBM2) Interface Intel FPGA IP Controllerインターフェイス信号
6.2.1. クロック信号

信号 | 入力/出力 | 説明 |
---|---|---|
ext_core_clk | 入力 | コアクロックです。ユーザーがインスタンス化したI/O PLLの出力です。HBM2 IPでは、ext_core_clkの生成に必要なI/O PLLのインスタンス化はしません。 コアクロック周波数がHBM2インターフェイス周波数の半分である場合、コアI/O PLLを駆動するリファレンス・クロックの供給元のオシレーターは、特定のHBM2インターフェイスのボード上のUIB PLLリファレンス・クロックを供給するオシレーターと同じである必要があります。このガイドラインに従わないと、キャリブレーションが正常に完了しない可能性があります。 |
ext_core_clk_locked | 入力 | ext_core_clkを駆動するI/O PLLのLOCKEDステータスです。ext_core_clkが安定していることを示します。このI/O PLLによってLOCKEDステータスの達成がデバイス・コンフィグレーションの1ms以内にされると、キャリブレーションが正常に行われます。ext_core_clkを駆動するI/O PLLのリセットは、キャリブレーションの完了後にはできません。 |
pll_ref_clk | 入力 | UIB PLLのLVDSリファレンス・クロック入力です。このリファレンス・クロックの提供には、 インテル® Stratix® 10デバイスにある専用UIB_PLL_REF_CLK_p/nピンを使用してください。内部I/O PLLは使用できません。pll_ref_clkは、デバイスの電源投入時に安定状態を保ち、フリーランニングにして、コンフィグレーションを正常に行ってください。このクロックの供給方法については、 インテル® Stratix® 10ピン接続ガイドラインを参照してください。 |
wmc_clk_x_clk | 出力 |
UIBからのコアクロック出力フィードバックです。提供されるext_core_clkに基づきます。HBM2 Channelごとに1つです。 (x で表示)。 インテル® では、このクロックを使用して、ユーザー・インターフェイスによる対応するチャネルのAXIインターフェイスの駆動を行うことを推奨しています。 |
phy_clk_x_clk | 出力 | UIB PHY clk出力。サポートされていません。接続しないでください。この信号は、Platform Designerでは phy_clk_x コンジットとして表示されます。 |
HBM2インターフェイスの信頼性の高いキャリブレーションに関するクロッキングの推奨事項
HBM2インターフェイスの信頼性の高いキャリブレーションについては、次のクロック・ガイドラインに従ってください。
- UIB PLLリファレンス・クロック (HBM2インターフェイスごとに1つ) の提供は、外部クロックソースを介して行う必要があります。コンフィグレーション前は安定してフリーランニングであり、その後は安定している必要があります。
- コアクロック (ext_core_clk) を駆動するI/O PLLは、デバイス・コンフィグレーションから1ミリ秒以内にLOCKED状態を達成する必要があります。このI/O PLLは、インターフェイスがキャリブレーションされるとリセットできません。
- 特定のHBM2インターフェイスについて、 インテル® では、同じクロックソースからI/O PLLとUIB PLLの両方のリファレンス・クロックを提供することをお勧めします。
6.2.2. リセット信号
信号 | 入力/出力 | 説明 |
---|---|---|
wmcrst_n_in | 入力 | コアロジック外部入力リセットです。アクティブLOWです。Soft Logic Adaptorを含むすべてのファブリック・ロジックをリセットします。これは非同期リセット信号です。このリセットのアサートは、AXIインターフェイスがアイドル状態で、保留中のメモリー・トランザクションがない場合にのみ行う必要があります。 |
hbm_only_reset_in | 入力 | ソフト・ファブリックAXIロジック、およびHBM2 DRAM、HBMコントローラー、PHYなどのハード化されたUIBSSのリセット要求です。 インテル® Quartus® Prime開発ソフトウェア・バージョン19.4以降では、 インテル® では、HBMサブシステムをリセットする必要がある場合は、hbm_only_reset_inのみを使用することをお勧めします。これはDRAMへのアクティブなトラフィック中、またはインターフェイスがアイドル状態の両方の場合です。(この表の下の追加情報を参照してください。) |
wmcrst_n_x_reset_n | 出力 |
コア入力リセットです。AXIインターフェイス・クロック・ドメインに同期しています。各AXI Channelに1つです (xで表されます)。 インテルでは、ユーザー・インターフェイスで使用する各チャネルリセット出力は、対応チャネルのAXIインターフェイスを駆動するロジック内のものを推奨しています。 |
hbm_only_reset_inのタイミング
hbm_only_reset_in 信号では、再キャリブレーションを開始せずに、ソフトAXIロジック、ハード化されたUIBSS、およびHBM2 DRAMのリセットを要求します。この信号は、 インテル® Quartus® Prime開発ソフトウェア・バージョン19.4以降でサポートされています。
次の波形は、この信号に関連するタイミングを示しています。

次のシーケンスは、hbm_only_reset_in信号の要件とタイミングの説明です。
- hbm_only_reset_in信号は、内部でコアクロック (ext_core_clk) に同期されます。このリセット入力により立ち上がりエッジが検出されます。最小要件は、この信号を1コア・クロック・サイクルの間アサートすることです。
- wmcrst_n_x_reset_nは、コアクロックに同期したリセット出力です。 インテル® では、ユーザー・ロジック・リセットをこのリセット出力に接続して、AXIトラフィックの停止がリセットシーケンス中にできるようにすることをお勧めします。
- リセットシーケンスの開始は、wmcrst_n_x_reset_nがLowになることで示されます。
- リセットシーケンスの終了は、wmcrst_n_x_reset_nがHighになることで示されます。
- hbm_only_reset_inのアサートは、wmcrst_n_x_reset_nがHighになった (リセットが完了した) 後に再度できます。リセットシーケンス中 のhbm_only_reset_inのアサートは無視されます。
- local_cal_success信号は、リセットシーケンスの開始後、数コア・クロック・サイクルの間デアサートされますが、これによって再キャリブレーションが実行されることはありません。
HBM2インターフェイスの信頼性の高いキャリブレーションに関するリセットの推奨事項
HBM2インターフェイスの信頼性の高いキャリブレーションについては、次のリセット信号のガイドラインに従ってください。
-
Reset Release Intel FPGA IPが、デザインでインスタンス化されていることを確認します。このIPでは、FPGAのリセット状態が、すべてのレジスターとコアロジックがユーザーモードになるまで保たれるようにします。 インテル® では、Reset Release Intel FPGA IPのninit_done出力をリセット回路への初期入力の1つとして使用することをお勧めします。このIPは、IP CatalogのBasic Functions > Configuration and Programming > Reset Release Intel FPGA IPにあります。このIPの使用に関する詳細は、次を参照してください。 デザインでのリセット・リリース・インテルFPGA IPの使用 https://www.intel.co.jp/content/www/jp/ja/programmable/documentation/sss1439972793861.html#yrh1549912878013
このIPのninit_done信号出力を使用して、コア入力リセット (wmcrst_n_in) をゲートします。ninit_done出力はアクティブLowです。つまり、FPGAがユーザーモードに入ると ninit_done = 0 になります。
- wmcrst_n_in (アクティブLowソフトロジックのリセット入力) およびhbm_only_reset_in (HBMサブシステムのハードロジックとしてのソフトロジックに対するアクティブHighリセット信号) のアサートは、キャリブレーションの完了後までされないようにします。
- インテル® Quartus® Prime開発ソフトウェア・バージョン19.4以降の場合、 インテル® では、HBMサブシステムをリセットする必要がある場合は常に、 HBM_only_reset_inを使用することをお勧めします。これは、 DRAMへのアクティブ・トラフィック中またはインターフェイスのアイドル中の両方が対象です。
- ext_core_clk (コアAXIインターフェイス入力クロック) を生成するI/O PLLのリセットは、I/O PLLがロック状態になるとできません。
- wmcrst_n_x_reset_n信号は、UIBSSからの出力としてx で表されるHBM2チャネルごとに駆動される、ユーザーAXIインターフェイスと、チャネルごとに提供されるwmc_clk_x_clkによって使用されます。これは、図 16 で示しているとおりです。
6.2.3. キャリブレーション・ステータス信号
信号 | 入力/出力 | 説明 |
---|---|---|
local_cal_success | 出力 | キャリブレーションが成功したことを示します。この信号は wmc_clk_x_clk 信号に非同期です 。アサートされると、この信号はシステムがリセットされるまでHighのままです。 |
local_cal_fail | 出力 | キャリブレーションが失敗したことを示します。この信号は wmc_clk_x_clk 信号に非同期です 。アサートされると、この信号はシステムがリセットされるまでHighのままです。 |
cal_lat | 出力 | キャリブレーションされたレイテンシー出力です。サポートされていません。 |
6.2.4. メモリー・インターフェイス信号
信号 | 入力/出力 | 幅 | 概要 |
---|---|---|---|
Cattrip | 入力 | 1 |
各HBM2インターフェイスに共通のHBM2信号です。この信号は、デザインのトップレベルに引き出してください。この信号の駆動は不要です。また、未接続のままにしておくことができます。 これらの信号は、Platform Designerで m2u_bridge という名前のコンジットにグループ化されます。また、エクスポートする必要があります。 |
TEMP | 入力 | 3 | |
Wso | 入力 | 8 | |
reset_n | 出力 | 1 | |
Wrst_n | 出力 | 1 | |
Wrck | 出力 | 1 | |
Shiftwr | 出力 | 1 | |
Capturewr | 出力 | 1 | |
Selectwir | 出力 | 1 | |
Wsi | 出力 | 1 | |
Ck_t | 出力 | 1 |
HBM2チャネルごとのHBM2信号です。この信号の駆動は不要です。また、未接続のままにしておくことができます。 これらの信号は、Platform Designerで mem_x という名前のコンジットにグループ化されます。このコンジットは未接続のままにして、mem_x 接続されていないという警告メッセージは無視する必要があります 。 |
Ck_c | 出力 | 1 | |
cke | 出力 | 1 | |
C | 出力 | 8 | |
R | 出力 | 6 | |
Dq | 入出力 | 128 | |
Dm | 入出力 | 16 | |
Dbi | 入出力 | 16 | |
Par | 入出力 | 4 | |
Derr | 入出力 | 4 | |
Rdqs_t | 入力 | 4 | |
Rdqs_c | 入力 | 4 | |
Wdqs_t | 出力 | 4 | |
Wdqs_c | 出力 | 4 | |
Rd | 入出力 | 8 | |
Rr | 出力 | 1 | |
Rc | 出力 | 1 | |
Aerr | 入力 | 1 |
6.2.5. ユーザー・インターフェイス信号
6.2.6. AXIユーザー・インターフェイス信号
AXIインターフェイス信号
各AXIポートを構成しているのは、次の5つのサブチャネルです。
- Write Addressチャネル: HBM2 DRAM Write AddressにマッピングするAXI Write Addressです。
- Write Dataチャネル: Write Addressに対応するコアロジックによって提供されるAXI Write Dataです。
- Write Responseチャネル: Writeステータスに関するHBM2コントローラーからのResponseです。
- Write Addressチャネル: HBM2 DRAM Read AddressにマッピングするAXI Read Addressです。
- Read Dataチャネル: 対応するHBM2 DRAM Read Addressから提供されるAXI Read Dataです。
AXI IDの定義
- 2より大きいAXIバースト・トランザクションは、 インテル® Quartus® Prime開発ソフトウェア・バージョン20.3以降で使用可能です。バースト・トランザクションが、HBM2 IP GUIを介してイネーブルされる場合、arid/awidの幅は [9 – ceil(log2(maximum burst length))] に設定されます。この場合、最大256が最大バースト長として設定できます。
- 2より大きいバースト・トランザクションは、ソフトAXIスイッチでは使用できません。
- ソフトAXIスイッチがイネーブルされていない場合、AXI IDは9ビット幅です。合計29 のAXI IDがサポートされます。
- ソフトAXIスイッチがイネーブルされている場合、AXI IDは7ビット幅です。合計27 のAXI IDがサポートされます。
AXIアドレスの定義
HBM2 DRAMのアドレス指定の構成は、次の通りです。
- 14ビット幅のRow Address。
- 6ビット幅のColumn Address。ユーザーロジックではColumn AddressビットCOL[5:1] を駆動し、コントローラーでは下位のColumn AddressビットCOL[0] を0に設定します。BL8トランザクションの場合、ユーザーロジックではCOL[1] を0に設定します。
- 4ビット幅のBank Address。Bank GroupはBank Addresの上位2ビット (BA[3:2]) に対応します。
- 1ビット幅のStack ID(SID) 。8GBコンフィグレーションでのみ使用可能です。
- 2ビット幅のSlave ID。使用可能なのは、ソフト4x×4 AXIスイッチがHBM2 IPパラメーター・エディターでイネーブルされている場合のみです。
AXIアドレス定義 の図で示しているのは、AXIアドレスバスのマッピング (4GBコンフィグレーションの場合は28ビット幅、8GBコンフィグレーションの場合は29ビット幅) です。さまざまなアドレス順序付けスキームにより、HBM2 DRAMをアドレス指定します。これは、ソフトAXIスイッチを使用していない場合です。AXIスイッチをイネーブルした場合のアドレス定義 の図で示しているのは、ソフトAXIスイッチをイネーブルした場合のAXIアドレス定義です。ソフトAXIスイッチがイネーブルされている場合の情報については、AXIインターフェイス信号のセクションおよびソフトAXIスイッチのセクションを参照してください。

Slave ID - SID[1:0] は、アクセス中のPCを指します。スレーブIDが使用可能なのは、ソフトスイッチがイネーブルされている場合のみです。例えば、CH0とCH1でイネーブルされているスイッチの場合です。
SID:00 - Ch0 PC0; SID: 01 - CH0 PC1;
SID:10 - CH1 PC0; SID:11 - CH1 PCH 1
AXIバースト・トランザクション
2より大きいAXIバースト・トランザクションは、 インテル® Quartus® Prime開発ソフトウェア・バージョン20.3以降で使用可能です。バースト長が2より大きいバースト・トランザクションのサポートは、BL4モードのAXIインターフェイスのAWLEN/ARLEN入力でされます (つまり、疑似BL8モードがHBM2 IP GUIを介してイネーブルされている場合)。この機能が使用可能なのは、AXI Switchがディスエーブルされていて、AVMMインターフェイス・モードを選択していない場合です。この機能のサポートは、Hard HBM Controller (HBMC) のソフト・ロジック・アダプターに追加されています。
この機能の仕様と要件は次のとおりです。
- AXIバースト・トランザクションをHBM2 IP GUIを介して次のとおりイネーブルします。
- この機能をイネーブルするには、 パラメーター・エディターのControllerタブで、Enable the AXI Burst length of more than 2を選択します。
- AXIの最大バースト長の値を指定します。最大値は256が可能です。すべてのAXIトランザクションのAWLEN/ARLEN値の設定は、0からAXI Maximum burst lengthマイナス1でコンフィグレーションした値までになります。最大バースト長はの設定は、パラメーター・エディターで行います。例えば、入力した最大バースト長の値が3の場合、有効なAWLEN/ARLEN値は0から2になります。
図 20. BL>2をイネーブルし、最大バースト長を設定するパラメーター - バースト・トランザクションに必要なシーケンシャル・アドレスの順序の管理は、ソフト・ロジック・アダプターで行います。トランザクションの開始AXIアドレスおよびトランザクション長 (AWLEN/ARLEN) を指定してください。
- AWREADY/ARREADYは、AWVALID/ARVALIDとともに1回アサートされ、開始アドレスと現在のバーストサイズをキャプチャします。 AXIバースト・トランザクションがイネーブルされている場合、 HBM2 IPによる新しいコマンドの受け入れは、前のバースト・トランザクションが処理された後で行われます。したがって、AWREADY/ARREADYがデアサートされるのは、開始アドレスとバーストサイズがキャプチャされてから、バースト内のすべてのアドレスが内部で発行されるまでです。
- トランザクションID (AWID/ARID) の幅は縮小され、スライスされたバーストを備えた内部IDを持つことができます。この機能を使用すると、ID幅は縮小され、[9 bits – ceil(log2(maximum burst length))] になります。
- 正しいアドレス範囲を指定し、意図しないアドレス空間に誤って書き込まないように注意する必要があります。
- また、バーストがAXI4仕様で指定されている4KBのデータを超えないようにする必要があります。(BL4コンフィグレーションの各AXIトランザクションから32Bのデータが提供されます。)
- Controller READYがHIGHにアサートされていない場合は、データのバッファリングを処理する必要があります。
- WLAST信号は、最後のバーストデータでHIGHにアサートする必要があります。
- 応答ID幅は、ARID/AWID幅に従います。
- 読み出し応答は、書き込みトランザクションに続き、最後のトランザクションでRLASTパルスがHIGHになります。
- 書き込み応答は、書き込みコマンドごとに提供されます。
- ARSIZE/AWSIZEは使用されません。また、コントローラーによる監視はされません。
次のHBM2 IP機能は、2より大きいバースト長の値を使用する場合は使用できません。
- デザイン例のトラフィック・ジェネレータの高効率パターンと混合トラフィック
- 効率モニター (Diagnostics -> Enable efficiency monitor)
- AXI 4x4ソフトスイッチ
- AVMMインターフェイス
AXIサブチャネルの説明
AXIポート信号名を参照する構文は、axi_x_y_portname です。ここでは、x はチャネル番号、y はPseudo Channel番号です。例えば、axi_0_1_awid で示すAXIポートの書き込みアドレスIDは、チャネル0およびPseudo Channel 1に対応します。
次の表の信号で示している信号名が対応するのは、単一のAXIポート : Channel 0、Pseudo Channelです。
ポート名 | 幅 | 入力/出力 | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
axi_0_0_awid |
7 (AXIスイッチがイネーブルされている場合) 9 (AXIスイッチがイネーブルされていない場合) [9 – ceil(log2(maximum burst length))] (AXI BurstトランザクションがHBM2 IP GUIを介してイネーブルされている場合) |
入力 |
書き込みアドレスIDです。この信号は、信号の書き込みアドレスグループのIDタグです。この信号は、ソフト4×4 AXIスイッチがイネーブルの場合は7ビット幅で、ソフトAXIスイッチがイネーブルでない場合は9ビット幅です。 ソフトAXIスイッチをイネーブルすると、この信号は7ビット幅になります。ソフト4×4 AXIスイッチがイネーブルでない場合、信号幅はAXIバースト・トランザクション機能とHBM2 IP GUを介して設定した最大バースト長の影響を受けます。AXIバースト・トランザクションをイネーブルすると、幅は減少して [9 bits – ceil(log2(maximum burst length))] になります。AXIバースト・トランザクションがイネーブルの場合、幅は9ビットです。 |
||||||||||||
axi_0_0_awaddr |
28/29 (AXIスイッチがイネーブルされていない場合) 30/31 (AXIスイッチがイネーブルされている場合) |
入力 |
Writeアドレスです。書き込みアドレスで示すのは、書き込みバースト・トランザクションの最初の転送のアドレスです。このアドレスバスは、4GBデバイスでは28ビット幅、8GB HBM2デバイスでは29ビット幅です。 ソフトAXIスイッチをイネーブルすると、上位2ビットからスレーブアドレスが提供されます。 |
||||||||||||
axi_0_0_awlen | 8 | 入力 |
バースト長です。バースト長で示すのは、バースト内の転送の正確な数です。この情報によって決定されるのは、アドレスに関連付けられたデータ転送の数です。 インテル® Quartus® Prime開発ソフトウェア・バージョン20.3以降では、Burst Length 4 モードの場合、最大値256までのバースト・トランザクションが2つ以上、AXIインターフェイスでサポートされます。この機能を使用するには、Enable AXI Burst length of more than 2を選択し、最大バースト長の値をHBM2 IPパラメーター・エディターで選択してください。この機能が選択されていない場合は、次の値がサポートされます。
疑似バースト長8の場合、バースト・トランザクションはサポートされません。 |
||||||||||||
axi_0_0_awsize | 3 | 入力 |
Burst Sizeです。この信号で示すのは、バースト内の各転送のサイズです。
HBM2コントローラーでサポートするのは、256ビット、つまり32バイトのデータ転送が、AXI InterfaceでAXIクロックサイクルごとに行われる場合のみです。HBM2コントローラーでは、axi_awsizeの値を設定し、サポートされていない値がaxi_awsizeポートを介して駆動された場合は無視します。 |
||||||||||||
axi_0_0_awburst | 2 | 入力 |
バーストタイプとサイズ情報です。バースト内の各転送のアドレスの計算方法が決まります。
INCRのみがサポートされます。HBM2コントローラーではaxi_awburstの値を設定し、サポートされていない値がaxi_awburstポートを介して駆動された場合は無視します。 |
||||||||||||
axi_0_0_awprot | 3 | 入力 | Protection Typeです。 [将来の使用のために予約済み] この信号で示すのは、トランザクションの特権とセキュリティー・レベル、またトランザクションがデータアクセスと命令アクセスのどちらであるかです。
|
||||||||||||
axi_0_0_awqos | 4 | 入力 | Quality of Serviceです。Quality of Service識別子が書き込みトランザクションごとに送信されます。
|
||||||||||||
axi_0_0_awuser | 1 | 入力 | 自動プリチャージ用のUser Signalです。
書き込みアドレスチャネルのユーザー定義自動プリチャージ信号 (オプション)。 |
||||||||||||
axi_0_0_awvalid | 1 | 入力 | Write Address Validです。有効な書き込みアドレスと制御情報をチャネルで通知していることを示します。 | ||||||||||||
axi_0_0_awready | 1 | Output | Write Address Readyです。スレーブで、アドレスおよび関連するコントロール信号の受け入れ準備ができていることを示します。 |
ポート名 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
axi_0_0_wdata | 256 | 入力 | Write Dataです。 |
axi_0_0_wstrb | 32 | 入力 | Write Strobe (Byte Enable) です。有効データを保持するバイトレーン (axi_0_0_wdataの場合) を示します。1つの書き込みストローブビットが書き込みデータの8ビットごとにあります。 |
axi_extra_0_0_wuser_data | 32 | 入力 | Extra Write Data (AXI WUSERポート) です。288ビットデータのAXI Data WidthがHBM2 IP GUIで選択されている場合、追加の書き込みデータを伝送します。GUIで256ビットデータを選択する場合、このバスは駆動されないままにしておく必要があります。 |
axi_extra_0_0_wuser_strb | 4 | 入力 | Extra Write Strobe (AXI WUSERポート) です。(axi_extra_0_0_wuser_data) のどのバイトレーンが有効なデータを保持しているかを示します。このバスが使用されるのは、288ビットのAXI Data WidthがHBM2 IP GUIで選択されている場合のみです。データ幅の選択が256ビットの場合、これらの信号は駆動されないままにしておく必要があります。 |
axi_0_0_wlast | 1 | 入力 | Write Lastです。書き込みバーストの最後の転送を示します。 |
axi_0_0_wvalid | 1 | 入力 | Write Validです。有効書き込みデータとストローブがvalidであることを示します。 |
axi_0_0_wready | 1 | 出力 | Write Readyです。スレーブ (HBM2コントローラー) で書き込みデータの受け入れができることを示します。 |
ポート名 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
axi_0_0_bid |
7 (AXIスイッチがイネーブルされている場合) 9 (AXIスイッチがイネーブルされていない場合) |
出力 | Response ID Tagです。書き込み応答のIDタグです。 |
axi_0_0_bresp | 2 | 出力 |
Write Responseです。書き込みトランザクションのステータスを示します。
|
axi_0_0_bvalid | 1 | 出力 | Write Response Validです。有効な書き込み応答をチャネルから通知していることを示します。 |
axi_0_0_bready | 1 | 入力 | Response Readyです。マスターによる書き込み応答の受け入れが可能であることを示します。 |
ポート名 | 幅 | 入力/出力 | 説明 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
axi_0_0_arid |
7 (AXIスイッチがイネーブルされている場合) 9 (AXIスイッチがイネーブルされていない場合) [9 – ceil(log2(maximum burst length))] (HBM2 IP GUIを介してイネーブルされたAXI Burstトランザクション)。 |
入力 | Read address IDです。信号の読み出しアドレスグループのIDタグです。ソフトAXI Switchがイネーブルされている場合、この信号は7ビット幅です。ソフト4×4AXI Switchがイネーブルされていない場合、この信号は9ビット幅です。 ソフトAXI Switchをイネーブルすると、この信号は7ビット幅になります。ソフト4×4 AXI Switchがイネーブルされていない場合、信号幅は、AXIバースト・トランザクション機能と、HBM2 IPパラメーター・エディターで設定された最大バースト長の影響を受けます。AXIバースト・トランザクションがイネーブルされている場合、幅は減少して [9 bits – ceil(log2(maximum burst length))] になります。AXIバースト・トランザクションがイネーブルされていない場合、幅は9ビットです。 |
||||||||||||
axi_0_0_araddr |
28/29 (AXIスイッチがイネーブルされていない場合) 30/31 (AXIスイッチがイネーブルされている場合) |
入力 |
Readアドレスです。読み出しバースト・トランザクションの最初の転送のアドレスです。このアドレスバスは、4GBデバイスでは28ビット幅、8GBデバイスでは29ビット幅です。 ソフトAXIスイッチをイネーブルすると、上位2ビットからスレーブアドレスが提供されます。 |
||||||||||||
axi_0_0_arlen | 8 | 入力 |
バースト長です。バースト長で示すのは、バースト内の転送の正確な数です。この情報によって決定されるのは、アドレスに関連付けられたデータ転送の数です。 インテル® Quartus® Prime開発ソフトウェア・バージョン20.3以降では、Burst Length 4 モードの場合、最大値256までのバースト・トランザクションが2つ以上、AXIインターフェイスでサポートされます。この機能を使用するには、Enable AXI Burst length of more than 2を選択し、最大バースト長の値をHBM2 IPパラメーター・エディターで選択してください。この機能が選択されていない場合は、次の値がサポートされます。
疑似バースト長8の場合、バースト・トランザクションはサポートされません。 |
||||||||||||
axi_0_0_arsize | 3 | 入力 |
Burst Sizeです。この信号で示すのは、バースト内の各転送のサイズです。
HBM2コントローラーでサポートするのは、256ビット、つまり32バイトのデータ転送が、AXI InterfaceでAXIクロックサイクルごとに行われる場合のみです。HBM2コントローラーでは、axi_arsizeの値を設定し、サポートされていない値がaxi_arsizeポートを介して駆動された場合は無視します。 |
||||||||||||
axi_0_0_arburst | 2 | 入力 |
バーストタイプとサイズ情報です。バースト内の各転送のアドレスの計算方法が決まります。
INCRのみがサポートされます。HBM2コントローラーではaxi_arburstの値を設定し、サポートされていない値が axi_0_0_arburstポートを介して駆動された場合は無視します。 |
||||||||||||
axi_0_0_arprot | 3 | 入力 | Protection Typeです。 [将来の使用のために予約済み] この信号で示すのは、トランザクションの特権とセキュリティー・レベル、またトランザクションがデータアクセスと命令アクセスのどちらであるかです。
|
||||||||||||
axi_0_0_arqos | 4 | 入力 | Quality of Serviceです。Quality of Service識別子が書き込みトランザクションごとに送信されます。
|
||||||||||||
axi_0_0_aruser | 1 | 自動プリチャージ用のUser Signalです。
|
|||||||||||||
axi_0_0_arvalid | 1 | 入力 | Read Address Validです。有効な読み出しアドレスと制御情報をチャネルから通知していることを示します。 | ||||||||||||
axi_0_0_arready | 1 | 出力 | Read Address Readyです。スレーブで、アドレスおよび関連するコントロール信号の受け入れ準備ができていることを示します。 |
ポート名 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
axi_0_0_rid | ARID_WIDTH | 出力 | Read ID Tagです。スレーブによって生成された信号の読み出しデータグループのIDタグです。 |
axi_0_0_rdata | 256 | 出力 | Readデータです。 |
axi_extra_0_0_ruser_data | 32 | 出力 | Extra Read Data (AXI RUSERポート) です。データ幅288がHBM2 IP GUIで選択されている場合、追加のリードデータを伝送します。 HBM2 IP GUIで256 Dataオプションが選択されている場合、このバスは未接続のままにしておくことができます。 |
axi_extra_0_0_ruser_err_dbe | 1 | 出力 | Double-Bit-Error (AXI RUSERRポート) です。DBE情報を搬送します。1’b1インジケーター・エラーです。 |
axi_0_0_rresp | 2 | 出力 | Read Responseです。読み出し転送のステータスを示します。
|
axi_0_0_rlast | 1 | 出力 | Read Lastです。読み出しバーストの最後の転送を示します。 |
axi_0_0_rvalid | 1 | 出力 | Read Validです。チャネルが必要な読み出しデータを通知していることを示します。HBM2 Controllerから出力するすべてのAXI ReadデータのChannel出力信号は、axi_0_0_rvalid信号に整列して提供されます。 |
axi_0_0_rready | 1 | 入力 | Read Readyです。マスターで読み出しデータと応答情報の受け入れが可能であることを示します。 |
6.2.7. サイドバンドAPBインターフェイス
ポート名 | 幅 | 入力/出力 | 説明 |
---|---|---|---|
ur_paddr | 16 | 入力 | APBアドレスバスです。APBアドレスバスを使用してMMRレジスタースペースにアクセスし、特定のユーザー要求コマンドを発行できます。 |
ur_psel | 1 | 入力 | Selectです。ユーザー・インターフェイスでは、この信号を生成し、チャネルAPBインターフェイスが選択されていることとデータ転送が必要であることを示します。各HBM2チャネルAPBインターフェイスにはPSEL信号があり、この信号はHIGHに固定できます。 |
ur_penable | 1 | 入力 | Enableです。この信号ではAPB転送の開始を示します。 |
ur_pwrite | 1 | 入力 | Write/Read Accessです。この信号がHIGHの場合、APB書き込みアクセスを示します。この信号がLOWの場合、APB読み出しアクセスを示します。 |
ur_pwdata | 16 | 入力 | Write Dataです。この信号が、書き込みサイクル中にユーザーロジックによって駆動されるのは、PWRITEがHIGHのときです。 |
ur_pstrb | 2 | 入力 | Write Strobe (Byte Enable) です。この信号では、書き込み転送中に更新するバイトレーンを示します。1つの書き込みストローブが書き込みデータバスの8ビットごとにあります。HBM2コントローラーへの書き込み転送では、バイトイネーブルをアクティブにする必要があります。したがって、2'b11に駆動させてください。書き込みストローブは、読み出し転送中はアクティブにしないでください。 |
ur_prready | 1 | 出力 | Readyです。この信号では、読み出しまたは書き込みトランザクションの完了を示します。 |
ur_prdata | 16 | 出力 | Read Dataです。読み出しデータバスでは、有用なHBM2コントローラー情報およびステータス信号を提供します。 |
6.2.8. Avalon Memory-Mapped (AVMM) インターフェイス信号
ポート名 | 入力/出力 | 幅 | 概要 |
---|---|---|---|
ctrl_amm_0_0_waitrequest_n | 出力 | 1 | HBMがビジーのときにアサートします。 |
ctrl_amm_0_0_read | 入力 | 1 | 読み出し要求です。 |
ctrl_amm_0_0_write | 入力 | 1 | 書き込み要求です。 |
ctrl_amm_0_0_address | 入力 | 28/29 | 書き込みまたは読み出しアドレスです。4Gデバイスの場合は28ビット幅、8Gデバイスの場合は29ビット幅です。 |
ctrl_amm_0_0_readdata | 出力 | 256 | 読み出しデータです。 |
ctrl_amm_0_0_writedata | 入力 | 256 | 書き込みデータ |
ctrl_amm_0_0_burstcount | 入力 | 7 | AVMMバーストカウントです。BL4の場合は7'h1、バースト長8の場合は7'h2に設定されます。 |
ctrl_amm_0_0_byteenable | 入力 | 32 | 書き込みデータのバイトイネーブル。 |
ctrl_amm_0_0_readdatavalid | 出力 | 1 | 読み出しデータが有効の場合アサートします。 |
ctrl_ecc_readdataerror_0_0 | 出力 | 1 | コントローラーのECCロジックによってHighにアサートされ、読み出しデータに修正不可能なエラーがあることを示します。 |
ctrl_auto_precharge_0_0 | 入力 | 1 | Controller ConfigurationでEnable Auto Precharge Controlオプションが選択されている場合に使用できます。メモリー・コントローラーへの読み出しまたは書き込み要求とともにHighにアサートされると、自動プリチャージがイネーブルされていることを示します。 |
ctrl_user_priority_0_0 | 入力 | 1 | Controller ConfigurationでEnable Command Priority Controlオプションが選択されている場合に使用できます。メモリー・コントローラーへの読み出しまたは書き込み要求とともにHighにアサートされると、要求が高プライオリティーであり、他の低プライオリティー要求の前に実行する必要があることを示します。 |
Avalon®メモリーマップド・インターフェイスについて詳しくは、Avalonインタフェースの仕様書 を参照してください。
6.3. ユーザーAXIインターフェイスのタイミング
AXIインターフェイスを構成するのは、次のチャネルです。
- Write Addressチャネル: マスター (ユーザーロジック) では、関連信号を提供して、書き込みコマンドをスレーブ (HBM2コントローラー) に対して発行します。
- Write Dataチャネル: マスターでは、書き込みアドレスに対応する書き込みデータ信号を提供します。
- Write Responseチャネル: スレーブでは、発行された書き込みコマンドのステータスに関する応答をマスターに対して提供します。
- Read Addressチャネル: マスターでは、関連信号を提供して、読み出しコマンドをスレーブに対して発行します。
- Read Dataチャネル: スレーブでは、読み出しコマンドに対応する読み出しデータおよび読み出しデータ有効信号をマスターに対して提供します。
この5つのチャネルのすべてのトランザクションでは、ハンドシェイク・メカニズムをマスターとスレーブに対して使用して、情報を通信およびと転送します。
ハンドシェイク・プロトコル
5つのトランザクション・チャネルのすべてで、同じVALID/READYハンドシェイク・プロセスを使用して、アドレス、データ、および制御情報を転送します。マスターとスレーブの両方で、マスターとスレーブ間の情報移動速度を制御できます。ソースでは、VALID信号を生成して、アドレス、データ、または制御情報の可用性を示します。デスティネーションでは、READYシグナルを生成して、情報受け入れが可能であることを示します。転送が発生するのは、VALID信号とREADY信号の両方がHIGHの場合のみです。

上の図において、ソースでは、アドレス、データ、または制御情報をT1の後に提示して、VALID信号をアサートします。デスティネーションでは、READY信号をT2の後にアサートします。ソースでは、このアサートが発生した場合は、転送がT3で発生するまで、情報を安定させる必要があります。この例では、ソースによってVALID信号をアサートするのは、デスティネーションによるREADY信号のアサートより前です。ソースでVALID信号をアサートしたら、アサート状態のまま、ハンドシェイクがクロックの立ち上がりエッジで発生するまで保ってください。立ち上がりエッジでは、VALIDとREADYの両方がHighです。デスティネーションでREADYをアサートしたら、READYをデアサートできるのは、ソースによるVALIDのアサート前です。デスティネーションによってREADYをアサートできるのは、データの受け入れ準備ができているときか、またはソースからのVALIDアサートに応答する場合です。
AXI ID
AXIシステムに複数のマスターがある場合、順序付けモデルに使用するAXI IDには、インフラストラクチャーIDが含まれていて、それによって各マスターを一意に識別します。順序付けモデルは、システム内の各マスターに個別に適用されます。
AXI順序付けモデルではまた、トランザクションが同じIDで同じ方向の場合は、応答の提供は、発行された順序で行う必要があります。読み出しアドレスチャネルと書き込みアドレスチャネルは独立しているため、IDが同じで方向が異なる2つのトランザクションの間に順序関係が必要な場合、マスターでは、最初のトランザクションに対する応答を受け取るのを待ってから、2番目のトランザクションを発行しなくてはいけません。マスターによって一方向のトランザクションが発行されるのが、以前に発行された反対方向のトランザクションに対する応答を受け取る前だった場合は、2つのトランザクション間には順序付けの保証はありません。
AXIの順序付け
AXIシステムでは、読み出しトランザクションと書き込みトランザクションとの間の順序付け制限はありません。読み出しと書き込みの完了は、任意の順序でできます。これは、読み出しトランザクションの読み出しアドレスAXI ID (ARID) が、書き込みトランザクションの書き込みアドレスAXI ID (AWID) と同じ場合でも適用します。マスターで、読み出しトランザクションと書き込みトランザクションの間に特定の関係が必要な場合は、以前のトランザクションの完了が、後続のトランザクションの発行前であることを確認してください。マスターによって、以前のトランザクションが完了したと見なすことができるのは、次のいずれかが当てはまる場合のみです。
- 読み出しトランザクションでは、最後の読み出しデータを受け取った場合。
- 書き込みトランザクションでは、書き込み応答を受け取った場合。
6.3.1. AXI書き込みトランザクション
AXI書き込みアドレス
AXI書き込みトランザクションを開始するには、有効なWrite Address信号の発行を、AXI Write Address Busである AWADDR で行います。ユーザーロジックでは、有効な書き込みアドレスの提供を AWADDR バスで行い、AWVALID をアサートして、アドレスが有効であることを示す必要があります。マスターで AWVALID 信号をアサートできるのは、有効なアドレスおよび制御情報を駆動している場合のみです。
HBM2コントローラーでは、Writeコマンド・トランザクションの受け入れ準備ができると、AWREADY 信号をアサートします。アドレス転送が起こるのは、AWVALID と AWREADY の両方がアサートされた場合です。
自動プリチャージのユーザー信号である AWUSER もまた、AWADDRと同じタイミングに従います。つまり、AWUSER の提示は AWADDR と同じタイミングでする必要があります。
AXI書き込みデータ
書き込みバースト中、マスターで WVALID 信号をアサートするのは、マスターで有効な書き込みデータを駆動している場合のみです。アサートされた場合、WVALID のアサート状態を保つ必要があるのは、スレーブで WREADY をアサートした後のクロックの立ち上がりエッジまでです。マスターによる WLAST 信号のアサートは、最終書き込み転送のバーストでの駆動中に行う必要があります。ユーザーロジックによる書き込みアドレスの発行は、書き込みデータの発行と同じ順序で行う必要があります。書き込みデータ転送が起こるのは、WVALIDとWREADYの両方がHIGHのときです。
次の図で示しているのは、BL8 Writeトランザクションです。マスターでは、T1でのWriteアドレス (WA0) のアサートをトランザクションID AWID0 を使用して行います。HBM2コントローラーで AWREADY をアサートするのは、書き込み要求の受け入れ準備ができたときです。マスターでは、WriteデータのアサートをクロックサイクルT3で行います。コントローラー WREADY はすでにアサートされているため、書き込みデータの受け入れ開始は、サイクルT3からです。バースト8トランザクションの最後の部分がアサートされるのは、クロックサイクルT4です。

書き込み応答チャネル
HBM2コントローラーでは、Write Responseチャネルを使用して、正常なWriteトランザクションに応答します。スレーブで BVALID 信号をアサートするのは、スレーブで有効な書き込み応答を駆動している場合のみです。アサートされた場合、BVALID のアサート状態を保つ必要があるのは、マスターで BREADY をアサートした後のクロックの立ち上がりエッジまでです。BREADY のデフォルト状態がHighになる可能性があるのは、マスターによる1サイクルでの書き込み応答の受け入れが常時可能な場合のみです。
6.3.2. AXI読み出しトランザクション
読み出しアドレス
ユーザーロジックで ARVALID 信号をアサートするのは、有効なReadアドレスである ARADDR 情報を駆動している場合のみです。アサートされた場合、ARVALID をアサート状態に保つ必要があるのは、HBM2コントローラーで ARREADY 信号をアサートした後のクロックの立ち上がりエッジまでです。ARREADY がHighの場合、HBM2コントローラーでは、提示された有効なアドレスを受け入れます。キャリブレーションが完了し、HBM2 Controllerでコマンド受け入れ準備ができると、ARREADY がHighにアサートされます。自動プリチャージのユーザー信号である ARUSER も ARADDR と同じタイミングに従います。つまり、ARUSER の提示は ARADDR と同じタイミングで行う必要があります。
読み出しデータチャネル
HBM2コントローラーで、RVALID 信号をアサートするのは、HBM2コントローラーで有効な読み出しデータをユーザーロジックに駆動している場合です。マスター・インターフェイスでは、RREADY 信号を使用して、データを受け入れることを示します。マスターで、HBM2コントローラーからの読み出しデータの受け入れが常時可能な場合、RREADY の状態は、常にHighに保持できます。ソフトロジックの先入れ先出し (FIFO) バッファーのインスタンス化にHBM2パラメーター・エディターを使用できるのは、HBM2コントローラーで RREADY 信号のデアサートが予想される場合です。HBM2コントローラーで RLAST 信号をアサートするのは、バースト内の最終読み出し転送を駆動しているときです。
次の図で示しているのは、BL8読み出しトランザクションです。ユーザーロジックでは、読み出しアドレス (RA0) のT1でのアサートをトランザクションID ARID0 を使用して行います。HBM2コントローラー ARREADY は既にアサートされており、READコマンドは受け入れられます。コントローラーでは、ユーザー・インターフェイスに読み出しデータを返します。これは、READコマンドをHBM2 DRAMに対して発行した後です。HBM2コントローラーでは、ReadデータのアサートをクロックサイクルTBで行います。ReadトランザクションID (RID) は、HBM2コントローラーによって提供される場合は、Read Address ID (ARID) に対応します。バースト8トランザクションの最後の部分 (RLAST) のアサートは、クロックサイクルTa+1で行われます。

6.3.3. ユーザーロジックからHBM2 Controller AXI Interfaceへのタイミングの改善
Controller Backpressure Latency
Controller Backpressure Latency機能を使用すると、ユーザー・インターフェイスによるコントローラーのREADY信号 (アドレス書き込み、アドレス読み出しおよび書き込みチャネル) へのインターフェイス接続が柔軟になります。この機能をイネーブルにすると、HBM2コントローラーによって提供されるREADY信号の発行は、指定した値に従って早くなります。
デフォルトでは、この機能はディスエーブルです。バックプレッシャー・レイテンシーは0クロックサイクルです。この機能をイネーブルにした場合、目標バックプレッシャー・レイテンシーは、1または2クロックサイクルに指定します。HBM2コントローラーで提供するREADY信号であるAXI Write Address Ready (AXI_X_Y_AWREADY)、AXI Read Address Ready (AXI_X_Y_ARREADY)、およびAXI Write Data Ready (AXI_X_Y_WREADY) の発行は、指定したサイクル数だけ早くなります。
この機能をイネーブルにした場合、N サイクル (N に対してサポートされているクロックサイクル値は、機能がイネーブルの場合は1、2、ディスエーブルの場合は0) を設定すると、HBM2 Controllerで提供するREADY信号 (つまりAXI Write Address Ready (AXI_X_Y_AWREADY)、AXI Read Address Ready (AXI_X_Y_ARREADY)、およびAXI Write Data Ready (AXI_X_Y_WREADY) の発行は、N クロックサイクルだけ早くなります。Controller Backpressure Latencyのイネーブルの対象は、選択したHBM2インターフェイスに対するすべてのAXIインターフェイスにわたります。

ゼロ以外のバックプレッシャー・レジスター値を選択する場合、レジスターステージの追加を選択できます。次のいずれかの方法で行います。
- HBM2 IPを使用して、AXIインターフェイスのソフト・ロジック・アダプターにレジスターを追加することができます。これはデフォルトの動作です。
- AXIインターフェイスのタイミング (早期READYデアサート) を手動で処理するには、Automatically instantiate back pressure registers within HBM2 IP オプションをディスエーブルします。
AXI Backpressure Latencyの使用
次のタイミング図で示しているバックプレッシャー・レイテンシーは、2クロックサイクルです。この値によって、READY信号のデアサートの発生は、それ以外の場合よりも2コア・クロックサイクル早くなります。バックプレッシャー・レイテンシーが2クロックサイクルの場合、ユーザー・インターフェイスに2クロックサイクルが追加され、READYデアサートに応答します。そのために、有効なWrite Address/Write DataおよびRead Addressを継続してREADYデアサート後に2クロックサイクルの間提供します。
次の図に示すように、2クロックサイクルのバックプレッシャー・レイテンシーによって、READYがクロックサイクルT4でデアサートされます。ただし、HBM2コントローラーでは、引き続き入力の受け入れをクロックサイクルT4およびT5 (入力DおよびE) で行います。これは、対応するVALID信号がアクティブである場合です。

早期READY信号を使用したタイミング・クロージャーの促進
N の非ゼロAXIバックプレッシャー・レイテンシーを指定した場合、合計 N 個のパイプライン・レジスターを、HBM2コントローラーからのAXIインターフェイス出力およびREADY入力に追加することができます。追加されるパイプライン・レジスターの合計がInputとOutputの両方向で N になるようにすると、タイミング・クロージャーが容易になります。HBM2 IPをイネーブルして、HBM2 IPパラメーター・エディターからこれらのレジスターを生成します。
インテル® Quartus® Prime開発ソフトウェア・バージョン19.4以降では、HBM2 IPにより、次のレジスターがBackpressure latencyの設定に基いて追加されます。レジスターを手動で挿入する必要はなくなりました。
- Backpressure latencyが1に設定されている場合、コントローラーによるREADY信号のデアサートは、1クロックサイクル早くなります。レジスターステージが1つ、コアからHBM2コントローラーへのAXI Interface Validパス内の信号に追加されます。
-
Backpressure latencyが2に設定されている場合、コントローラーによるREADY信号のデアサートは、2クロックサイクル早くなります。HBM2 IPにより、次のレジスターが追加されます。
- レジスターステージが1つ、AXI Interface Validおよびユーザーロジックからの関連するAXIインターフェイス信号に追加されます。
- レジスターステージが1つ、コントローラーからコアへのREADY信号 (AWREADY、WREADY、ARREADY) に追加されます。
次の図で示すバックプレッシャー・レジスターは、ユーザー・コア・ロジックとAXIソフト・ロジック・アダプター間のデータパスに配置されています。これにより、タイミング・クロージャーが容易になります。

Write応答とReadデータ・インターフェイスのタイミング
読み出しおよび書き込み応答バックプレッシャー機能をイネーブルした場合でも、Write応答およびReadデータ・インターフェイスのタイミングの処理は、ゼロ・サイクル・レイテンシーで行ってください。ユーザー・インターフェイスで発行したBREADYおよびRREADYをHIGHに駆動して、コントローラーによる出力の提供が、該当する場合にできるようにしてください。
読み出しおよび書き込み応答バックプレッシャー機能をディスエーブルすると、パイプライン・レジスターを読み出しおよび書き込み応答出力に追加できます。これは、BREADYおよびRREADYは常にHIGHであり、ユーザー・インターフェイスでは応答の受け入れ準備が常時可能であることを示しているからです。
6.4. ユーザーAPBインターフェイスのタイミング
AXI4インターフェイスが使用されるのは、高帯域幅や、メインバンド動作、各HBM擬似チャネルが独自の専用AXI4 ポートにマッピングされるところですが、それとは異なり、APBインターフェイスの対象は、比較的低帯域幅のサイドバンド動作です。(例えば、メイン・トラフィック・ストリームと矛盾しない別のリフレッシュ制御方法の提供や、デバッグに役立つカスタムコマンドの発行など。) もう1つの違いとして、APB バス・インターフェイス・コマンドのターゲットを同時に一方または両方のPseudo Channelにすることができます。これは、HBM2チャネル1つ、またはHBM2 Pseudo Channel 2つあたりAPBインターフェイスが1つあるからです。
6.4.1. Advanced Peripheral Busプロトコル
6.4.2. APB Interfaceのタイミング
書き込みアクセス
次の図の通り、APBインターフェイスへの書き込みトランザクションは、次の手順で行われます。
- T1で書き込み転送が開始します。使用するのは、アドレスADDR1、書き込みデータDATA1、書き込み信号PWRITE、およびコアクロックの立ち上がりエッジで登録された選択信号PSELです。これは、書き込み転送のセットアップ・フェーズです。
- T2でPENABLEは、コアクロックの立ち上がりエッジで登録され、HBM2コントローラーでPREADY HIGHをアサートするまでHIGHに保持されます。PADDR、PSEL、PENABLE、PWDATA、PSTRB、およびPWRITEの値は、PREADYがLOWの状態である間は、不変でなければなりません。
- Txでは、PREADYがHIGHになると、書き込みトランザクションが、コアクロックの次の立ち上がりエッジで完了します。これはWrite Access Phaseの終了を示します。PREADYがHIGHに保たれるのは、1クロックサイクルの間のみです。
- PENABLEのデアサートは、転送終了時に行われます。選択信号PSELもデアサートされますが、転送後に直ちに別の転送が続く場合は除きます。

読み出しアクセス
次の図の通り、APBインターフェイスへの読み出しトランザクションは、次の手順で行われます。
- T1で読み出し転送が開始します。使用するのは、アドレスADDR1、LOWにアサートされたPWRITE、およびコアクロックの立ち上がりエッジで登録された選択信号PSELです。これは、読み出し転送のセットアップ・フェーズです。
- T2でPENABLEは、コアクロックの立ち上がりエッジで登録され、HBM2コントローラーでPREADY HIGHをアサートするまでHIGHに保持されます。PADDR、PSEL、PENABLE、およびPWRITEの値は、PREADYがLOWの状態である間は、不変でなければなりません。
- Txでは、PREADYがHIGHの場合、Read DataデータがPRDATAバスで使用可能です。PREADYバスがHIGHに保たれるのは、1クロックサイクルの間のみです。
- PENABLEのデアサートは、転送終了時に行われます。選択信号PSELもデアサートされますが、転送後に直ちに別の転送が続く場合は除きます。

6.5. HBM2 Controllerへのユーザー制御アクセス
APBインターフェイス信号の使用については、ユーザーAPBインターフェイスのタイミングを参照してください。
各物理HBM2チャネルは、独自のサイドバンド・レジスター・スペースにマッピングされます。APBアドレスアクセスはバイトアドレス・ベースです。整列していないアドレスに書き込みが発行された場合、それは無視されます (つまり、読み出しは0を返し、書き込みは効果がありません)。サイドバンド・レジスター・マップは、2つのPseudo Channel間で共有され、アドレスの割り当ては次のように構成されます。
- 両方のPseudo-Channelに共通のレジスター:
- アドレスマップは、16’h0000-16’h00FF
- Refresh (バンクごと、すべてのバンク)、Self-Refresh、Temperature Readout、Power downステータスが含まれます。
- Pseudo ChannelごとのRegister Map:
- アドレスマップは、Pseudo Channel 0 (16’h0100- 16’h01FF) およびPseudo Channel 1 (0x200-0x2FF)
- このマップを使用して、各Pseudo ChannelのECCおよび割り込みステータスレジスターにアクセスします。
6.5.1. ユーザー制御のRefresh
ユーザーロジックによるRefresh要求の発行を許可する場合は、パラメーター・エディターのController Settingsで次のように指定してください。
Controller Settings > REFRESH MODE値をController Refresh AllからUser Refresh AllまたはUser Refresh Per-bankに変更します。
各APBインターフェイスは、1つのHBM2チャネルに対応するため、要求のアドレス指定は、Pseudo Channel 2つのうち1つ (一度にPseudo Channel 1つ) に対して行ってください。
リフレッシュ間隔のタイミングは、HBM2 DRAMタイミングに固有です。必要なリフレッシュ・レートの提供は、HBM2 DRAMによってされ、TEMP[2:0] ベクトルを介します。これは、APBインターフェイスを介して読み出すことができます。
TEMP[2:0] | リフレッシュ・レート |
---|---|
000 | 4x tREFI |
001 | 2x tREFI |
011 | 1x tREFI |
010 | 0.5x tREFI |
110 | 0.25x tREFI |
111 | 未定 |
101 | 未定 |
100 | 未定 |
ユーザーロジックから使用できるリフレッシュ・コマンドのオプションは次のとおりです。
- バンク単位ベースで発行されるユーザー・リフレッシュ・コマンド。HBM2 Pseudo Channelに対応するバンクに対応しています。
- すべてのバンクに対するユーザー・リフレッシュ・コマンド。HBM2 Pseudo Channelに対応するすべてのバンクに対応しています。
- セルフリフレッシュ・コマンド。
すべてのユーザー・リフレッシュ要求は、APBインターフェイス・プロトコルに従います。ユーザーロジックでは、Refresh要求を発行し、HBM2コントローラーからの確認応答を待ってから、別のRefresh要求を発行します。
バンクごとのユーザー・リフレッシュ
バンクごとのユーザー・リフレッシュ要求を構成するのは次のコマンドです。これは、APBインターフェイスに対して発行されたものです。
リフレッシュ要求の書き込みデータ定義 | 説明 |
---|---|
[0] | Pseudo Channel Numberです。Pseudoチャネル番号を示す次の値を設定します。 0 - Pseudo Channel 0 1 - Pseudo Channel 1 |
[5:1] |
バンクごとのリフレッシュのバンク番号です。 ビット[5] - 8GBコンフィグレーションのStack ID ビット[4:1] - 4ビットBank Address |
[6] | バンクごとまたはすべてのバンクのリフレッシュを選択します。バンクごとのリフレッシュの場合は、1’b0に設定します。 |
[7] | 予約済み。1'b0に設定します。 |
[8] | ユーザーが開始したリフレッシュ要求です。このビットを1'b1に設定して、リフレッシュ・コマンドを開始します。 |
[12:10] | バンク・リフレッシュ・バースト機能ごとのバースト数です。バースト = 値[1:0] + 1。バンクごとのリフレッシュ・バースト機能は、HBM2コントローラーでサポートされています。この機能により、ユーザー・インターフェイスでは、リフレッシュ・コマンド発行の要求を複数のHBM2 DRAMバンクに対してすることができます。 |
[15:13] | バンクごとのリフレッシュ・バースト機能の増分値。最大バンク値に達するとロールオーバーします。増分 = value[2:0] + 1です。ここで value が指すのは、書き込みコマンド発行時の現在のバンクアドレスです。これが開始バンクアドレスになります。 注: Pseudo Channelごとのバンクの総数に対する最大増分値の比率を4で割ります。(例えば、4Hデバイスの最大値は16/4=4です。)
|
バンクごとのユーザー・リフレッシュ・コマンドを発行するには、次の手順に従います。
- アドレス16’h0000への書き込みを対応するWrite Dataで行います。
- 例えば、16’b0000_0001_0000_0010のWriteデータ (Pseudo Channel 0、バンクアドレスの位置はビット[5:1] 、ビット[6] の設定はバンクごとのリフレッシュの場合は0、ビット[8] はUser initiated Refresh Requestに設定)。
- バンクごとのリフレッシュの複数バーストを発行するには、PWDATA[12:10] およびPWDATA[15:13] の対応ビットを必要な設定項目で設定します。
- Refresh Request Acknowledgeのアドレス16’h0000から読み出します。
- PRDATA[9] によって1'b1が返され、コントローラーによるリフレッシュ要求の受け入れが示されるまで待ちます。PRDATAの他のビットの値はすべて無視できます。次の図で示すのは、APBインターフェイスに対するバンクごとのリフレッシュ要求のタイミングです。図 29. バンクごとのAPBリフレッシュ要求のタイミング
異なるPseudo Channelへの個々の要求の発行は、連続して行う必要があります。HBM2コントローラーからAcknowledge信号が発行されるのを待ってから、別のRefresh要求を発行してください。
すべてのバンクに対するユーザー・リフレッシュ
リフレッシュ要求の書き込みデータビットの定義 | 説明 |
---|---|
[0] | Pseudo Channel Numberです。値0をPseudo Channel 0に対して設定するか、値1をPseudo Channel 1に対して設定します。 |
[5:1] | バンクごとのリフレッシュのバンク番号です。すべてのバンクのリフレッシュは無視します。 |
[6] | バンクごとまたはすべてのバンクのリフレッシュを選択します。バンクごとのリフレッシュの場合は、1’b1に設定します。 |
[7] | 予約済み。1'b0に設定します。 |
[8] | ユーザーがリフレッシュ要求を開始しました。このビットを1'b1に設定して、リフレッシュ・コマンドを開始します。 |
[15:9] | 無視します。 |
リフレッシュ要求の読み出しデータビットの定義 | 説明 |
---|---|
[8:0] | 予約済み。 |
[9] | HBM2コントローラー発行のRefresh Request Acknowledgeです。
|
[15:10] | 予約済み。 |
すべてのバンクへのユーザー・リフレッシュ・コマンドを発行するには、次の手順に従います。
- 対応するWrite Dataを使用してアドレス16’h0000に書き込みます。
- 例えば、16’b0000_0001_0100_0010のWriteデータ (Pseudo Channel 0、バンクアドレスの位置はビット[5:1] 、ビット[6] の設定はバンクごとのリフレッシュの場合は0、ビット[8] はUser initiated Refresh Requestに設定)。
- Refresh Request Acknowledgeのアドレス16’h0000に読み出します。
- PRDATA[9] によって1'b1が返され、コントローラーによるユーザー・リフレッシュ要求の受け入れが示されるまで待ちます。次の図で示すのは、すべてのバンクに対するリフレッシュ要求のAPBインターフェイスのタイミングです。図 30. すべてのバンクに対するAPBリフレッシュ要求のタイミング
Self Refresh
Self Refresh状態に入るには、次のコマンドをAPBインターフェイスに対して発行します。
- 16’h0001のWrite Data(PWDATA) を使用してアドレス16’h004に書き込みます。
- アドレス16’h004から読み出します。データの読み出し (PRDATA [1]) によって値1’b1が返され、HBM2コントローラーがSelf Refresh状態にあることが示されるまで待ちます。
Self Refresh状態を終了するには、次のコマンドをAPBインターフェイスに発行します。
- 16'h0000のWrite Data(PWDATA) を使用して16'h0004に書き込み、Self-Refreshを終了します。Self Refresh Acknowledgeが1'b0になるまで待ってから次のSelf Refresh要求を発行します。
書き込みデータバスを使用して、セルフ・リフレッシュの開始または終了を要求します。読み出しデータ バスを使用して、HBM2チャネルのセルフ・リフレッシュ・ステータスを読み出します。次の表で示すWriteデータ定義およびReadデータ定義を使用して、セルフ・リフレッシュにアクセスします。
書き込みデータビットの定義 | 説明 |
---|---|
[0] | ユーザーが開始したSelf-Refresh Requestです。Self Refreshを開始するには、
|
[15:1] | 予約済み。 |
読み出しデータビットの定義 | 説明 |
---|---|
[0] | 予約済み。 |
[1] | セルフ・リフレッシュ・ステータス:
|
[15:2] | 予約済み。 |
6.5.2. 温度とキャリブレーション・ステータスの読み取り
読み出しデータビットの定義 | 説明 |
---|---|
[2:0] | HBM2デバイスからのTEMP [2:0] 値 |
[3] | HBM2デバイスからのCATTRIP値 |
[7:4] | 予約済み。 |
[8] |
|
[9] |
|
[15:10] | 予約済み。 |
6.5.3. Power Downステータス
Power Down Enableステータスを読み出すには、ReadコマンドをAPB Address 16'h0008に発行します。次の表で示すHBM2 Power Down情報が、APB Readデータによって提供されます。
読み出しデータビットの定義 | 説明 |
---|---|
[0] | Power Downステータスです。
|
[15:1] | 予約済み。 |
6.5.4. ECC Errorステータス
ECCレジスターでは、次の情報とPseudo Channel 0およびPseudo Channel 1に対応するAPBアドレスを提供します。
- シングルビット・エラー (SBE) カウンター
- ダブルビット・エラー (DBE) カウンター
- 最初のシングルビット・エラーの論理アドレス (AXIアドレス)
- 最初のダブルビット・エラーの論理アドレス (AXIアドレス)
- 最初のシングルビット・エラーの読み出しトランザクションID (AXI)
- 最初のダブルビット・エラーの読み出しトランザクションID (AXI)
- Read Data Parityエラーカウンター
ECCレジスターの値の読み出しは、HBM2コントローラーからのPRREADY出力のアサート時に行われます。HBM2コントローラーがRESETすると、このレジスター値はゼロにリセットされます。
Address | 読み出しデータビット位置 | 説明 |
---|---|---|
16’h0120 – PC0 16’h0220 – PC1 |
[7:0] |
Single-Bit-Error Counterです。カウンターは、最大値に達してもオーバーフローしません。 0を書き込んでカウンターをクリアします。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドを有効なカウンターに発行して、両方のレジスターをクリアしてください。 |
[15:8] | 予約済み。 | |
16’h0122 – PC0 16’h0222 – PC1 |
[7:0] |
Double-Bit-Error Counterです。カウンターは、最大値に達してもオーバーフローしません。 0を書き込んでカウンターをクリアします。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドを有効なカウンターに発行して、両方のレジスターをクリアしてください。 |
[15:8] | 予約済み。 | |
16’h0124 – PC0 16’h0224 – PC1 |
[15:0] | 最初のSBE論理アドレス (下位)です。これは、最初のシングルビット・エラーの論理アドレスです。AXI アドレスバスの下位16ビットに対応しています。 |
16’h0126 – PC0 16’h0226 – PC1 |
[15:0] | 最初のSBE論理アドレス (上位) です。これは、最初のシングルビット・エラーの論理アドレスです。AXIアドレスバスの上位16ビットに対応します。4GBコンフィグレーションの上位4ビットと8GBコンフィグレーションの上位3ビットは、ゼロでパディングされます。 |
16’h0128 – PC0 16’h0228 - PC1 |
[15:0] | 最初のDBE論理アドレス (下位)です。これは、最初のダブルビット・エラーの論理アドレスです。AXIアドレスバスの下位16ビットに対応しています。 |
16’h012A – PC0 16’h022A – PC1 |
[15:0] | 最初のDBE論理アドレス (上位) です。これは、最初のダブルビット・エラーの論理アドレスです。AXIアドレスバスの上位16ビットに対応します。4GBコンフィグレーションの上位4ビットと8GBコンフィグレーションの上位3ビットは、ゼロでパディングされます。 |
16’h012C – PC0 16’h022C – PC1 |
[8:0] | 最初のシングルビット・エラーのRead Transaction IDです。 |
[15:9] | 予約済み。 | |
16’h012E – PC0 16’h022E – PC1 |
[8:0] | 最初のダブルビット・エラーのRead Transaction IDです。 |
[15:9] | 予約済み。 | |
16’h0130 – PC0 16’h0230 – PC1 |
[7:0] |
Read Data Parity Error Countです。カウンターは、最大値に達してもオーバーフローしません。 0を書き込んでカウンターをクリアします。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドを有効なカウンターに発行して、両方のレジスターをクリアしてください。 |
[15:8] | 予約済み。 |
6.5.5. ユーザー割り込み
さまざまなステータス信号で割り込みを生成できます。次にその例を挙げます。
- AXI Read Data内部RAMのシングルビット・エラー (SBE) またはダブルビット・エラー (DBE)。WriteまたはRead データストレージに使用します。
- AXI Read DataのRead Dataパリティーエラー (RDPE) またはWrite Dataパリティーエラー (WDPE)
- Address Commandパリティーエラー
- CATTRIP
- キャリブレーション
6.5.5.1. 割り込みイネーブルと割り込み生成の条件
割り込み生成をイネーブルするには、コマンドの発行をアドレス位置16'h0100 (Pseudo Channel 0の場合) および16'h0200 (Pseudo Channel 1の場合) に対して行います。これには、対応するWrite Data (PWDATA) を使用します。
- PWDATA[0] - 割り込みをイネーブルです。
- PWDATA[11:1] - さまざまなステータス信号を一覧表示します。これを単独または組み合わせて使用して、Interrupt信号をトリガーします。
- Mask値を1'b0に設定して、対応するエラー条件を使用し、Interrupt信号を生成します。
- Mask値を1’b1に設定すると、Interruptジェネレーターでは、その特定のエラー状態を無視します。例えば、ダブルビット・エラー条件を使用してInterrupt信号を生成するには、PWDATA[2] を1’b0に設定します。
次の表で説明するのは、16ビットWrite Data (PWDATA) のInterrupt Enableおよび割り込み条件の設定についてです。
書き込みデータビットの定義 | 説明 |
---|---|
[0] | Interrupt Enable : HBM2コントローラーへの割り込みをイネーブルします。これは、PWDATA[11:1] で設定した条件がTRUEの場合です。 1 - Interruptをイネーブルします。 0 - Interruptをディスエーブルします。 |
[1] | SBE Interrupt Maskです。 |
[2] | DBE Interrupt Maskです。 |
[3] | Read DPE Interrupt Maskです。 |
[4] | Write DPE Interrupt Maskです。 |
[5] | Address Command Interrupt Maskです。 |
[6] | CATTRIP Interrupt Maskです。 |
[7] | Calibration Interrupt Maskです。 |
[8] | Write SRAM SBE Interrupt Maskです。 |
[9] | Write SRAM DBE Interrupt Maskです。 |
[10] | Read SRAM SBE Interrupt Maskです。 |
[11] | Read SRAM DBE Interrupt Maskです。 |
[15:12] | 予約済み。 |
6.5.5.2. Interruptステータス
読み出しデータビットの定義 | 説明 |
---|---|
[0] | 割り込みがアサートされるのは、次のいずれかのイベントが発生した場合です。
|
[15:1] | 予約済み。 |
6.5.5.3. Error Validステータス
上記のアドレスで提供する実際のステータス信号は、次のエラー条件に対するものです。
- HBM2メモリーからのシングルビット/ダブルビット・エラー値
- HBM2メモリーからのデータのRead/Write Dataパリティーエラー値の読み出し
- Address/Commandパリティー値
- CATTRIP信号
- キャリブレーション・エラー信号
- 内部RAMからのシングルビット・エラーおよびダブルビット・エラー。WriteおよびReadデータストレージに使用します。
個々のError Valid Signalをクリアするには、1'b1を書き込んで、Valid信号および対応するError Counterをクリアします。
読み出しデータビットの定義 | 定義 |
---|---|
[0] |
DRAM Single-Bit-Error Validです。アサートされるのは、シングルビット・エラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 シングルビット・エラーの数は、シングルビット・エラー・カウンターから取得できます。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドの発行を有効なカウンターに対して行って、両方のレジスターをクリアしてください。 |
[1] |
DRAM Double-Bit-Error Validです。アサートされるのは、ダブルビット・エラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 ダブルビット・エラーの数は、ダブルビット・エラー・カウンターから取得できます。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドの発行を有効なカウンターに対して行って、両方のレジスターをクリアしてください。 |
[2] |
Read Data Parity Error Validです。アサートされるのは、Read Dataパリティーエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 Read Dataパリティーエラーの数は、Read Dataパリティー・エラー・カウンターから取得できます。カウンターをクリアしても、この有効ビットはクリアされません。逆も同様です。個別の書き込みコマンドの発行を有効なカウンターに対して行って、両方のレジスターをクリアしてください。 |
[3] | Write Data Parity Error Validです。アサートされるのは、Write Dataパリティーエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[4] | Address Command Parity Error Validです。アサートされるのは、Address Commandパリティーエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[5] | Cat Trip Error Validです。アサートされるのは、Cat Tripエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[6] | Calibration Error Validです。アサートされるのは、キャリブレーション・エラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[7] | Write SRAM Single-Bit Error Validです。アサートされるのは、Write SRAM Single-Bitエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[8] |
Write SRAM Double-Bit Error Validです。アサートされるのは、Write SRAM Double-Bitエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[9] | Read SRAM Single-Bit Error Validです。アサートされるのは、Read SRAM Single-Bitエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[10] |
Read SRAM Double-Bit Error Validです。アサートされるのは、Read SRAM Double-Bitエラーが発生し、クリアされるまでHighの状態が続く場合です。1’b1を書き込んでクリアします。 |
[15:11] | 予約済み。 |
6.5.6. ECCエラー訂正および検出
ECCエンコーダおよびデコーダーブロックは、UIBサブシステム内に存在し、ECC ロジックの効率的な実行に役立ちます。このとき追加のレイテンシーはありません。ECCロジックでは次の動作を実行します。
- シングルビット・エラーが検出されると、エラーは訂正され、AXIインターフェイスに渡されます。
- ダブルビット・エラーが検出されると、信号がアサートされてエラーを示し、その信号がAXI Read Data Channel Interfaceの axi_ruser_err_dbe 信号を介して渡されます。
- エラー情報の入手は、APBインターフェイスを介してすることができます。
HBM2コントローラーのRead-Modify-Write機能を使用して、HBM2 DRAM で検出されたシングルビット・エラーまたはダブルビット・エラーを訂正できます。シングルビット・エラーまたはダブルビット・エラーが対応するエラーは、64ビットHBM2 DQバスごとに検出されます。このため、次のような複数のエラーが検出される場合があります。
- 複数のシングルビット・エラーは単一のシングルビット・エラーとして扱われ、シングルビット・エラー・カウントは1増加します。
- 複数のダブルビット・エラーは単一のダブルビット・エラーとして扱われ、ダブルビット・エラー・カウントは1増加します。
- シングルビット・エラーとダブルビット・エラーは、ダブルビット・エラーとして扱われます。これは、ダブルビット・エラーのプライオリティーが高いためです。 ダブルビット・エラー・カウントは1増加し、シングルビット・エラー・カウントは変化しません。
Read-Modify-Write
Read-Modify-Write機能では、HBM2 DRAMからの読み出し、データの変更、HBM2メモリーへの書き込みを行います。HBM2コントローラーでは、次の機能をRead-Modify-Writeプロセスの一部としてサポートします。
- Dummy Write: シングルビット・エラーの発生が検出されたHBM2 DRAMデータを訂正します。
- Partial Write: 部分書き込みの発行をイネーブルされていないバイトがあるHBM2 DRAMに対して行います。
Dummy Write
ECCデコーダーロジックによるReadデータのシングルビット・エラーの検出と訂正が行われると、ユーザーロジックでは、HBM2 DRAM内の対応ビットの訂正にDummy Writeプロセスを使用します。Dummy Writeでは、メモリー位置からのReadを発行し、訂正したReadデータを対応するメモリー位置に書き戻します。
Dummy Writeを要求するには、通常のAXI Writeトランザクションを対応アドレスに対して発行します。このとき、トランザクションのすべてのバイトイネーブルはデアサートします。
HBM2コントローラーでは、Read-Modify-Write動作を内部処理し、DRAMデータを訂正します。このとき、追加のユーザーの介入はありません。Read-Modify-Write動作は、次のプロセスに従います。
- UIBサブシステム内のAXI Adaptorでは、すべてのバイトイネーブルをデアサートし、Read-Modify-Write要求を識別します。
- 次に、HBM2コントローラーでは、HBM2 DRAM内の対応アドレスへのReadを発行します。
- ECC Decoded ReadデータはWrite Dataとして使用されます。これが訂正済みReadデータになるのは、シングルビット・エラーが検出された場合です。
- HBM2コントローラーでは、HBM2 Writeトランザクションを発行し、後でデコード済みReadデータをメモリーに書き込みます。
Partial Write
HBM2コントローラーのPartial Write機能により、ユーザーロジックでは、部分書き込みの発行をHBM2 DRAMに対して行うことができます。これは、アサートされないバイトイネーブルがあり、選択したDRAMバイトのみが書き込まれる場合です。Partial Write機能では、最初にメモリー位置からReadを発行し、次に正しいReadデータを正しいWriteデータにマージして、メモリー位置に書き戻します。(このプロセスが必要な理由は、Data Mask信号の使用は、ECCがイネーブルの場合にユーザーロジックではできないためです。) HBM2コントローラーでは、Partial Writeのインテリジェント・サポートをAXI4インターフェイスを使用して行います。
Partial Writeを要求するには、通常のAXI Writeトランザクションを発行します。このとき、アサートされていない (つまり完全Writeではない) バイトイネーブルがあります。また、対応WriteデータをHBM2 DRAMに書き込みます。
HBM2コントローラーでは、対応するメモリー・トランザクションの発行を処理します。このトランザクションはPartial Writeの完了に必要です。
- UIB Subsystem内のAXI Adaptorでは、バイトイネーブルをデコードして、Partial Write要求を識別します。
- 次に、HBM2コントローラーでは、HBM2 DRAM内の対応アドレスへのReadを発行します。
- ECC Decoded Readデータは、要求されたWriteデータとマージされます。これは、バイトイネーブルに基づいて行われます。
- HBM2コントローラーでは、HBM2 Writeトランザクションを発行し、マージされたデータのメモリーへの書き込みを後で行います。このとき、更新されたECCコードを使用します。
6.6. ソフトAXIスイッチ
次の図で示すスイッチの実装は、HBM2チャネル0およびチャネル1に対してHBM2 IP GUIを介してイネーブルした場合のものです。HBM2インターフェイスごとにAXIスイッチを4つ実装できます。

6.6.1. HBM2 IPカタログGUIでのAXIスイッチの選択
次の図に示すように、AXIスイッチをイネーブルするパラメーターが編集可能なのは、チャネルのペアの両方のチャネルがイネーブルされている場合のみです。 AXIスイッチをイネーブルする場合、対応する4つのコントローラーすべてで、同じAXI Data WidthとEnable Reorder Buffer オプションを使用する必要があります。

複数のHBMチャネルをイネーブルする場合は、AXIスイッチを特定のチャネルのペアに対してイネーブルし、残りのチャネルはAXIマスター (ユーザーロジック側) に直接AXI接続することができます。例えば、CH0とCH1のAXIスイッチモジュールはイネーブルし、CH2とCH3は、AXIスイッチをディスエーブルして直接AXI接続することができます。
AXIスイッチをイネーブルすると、マスターのアービトレーション・スキーム・パラメーター・テーブルの編集ができます。デフォルトでは、スイッチはラウンドロビン・アービトレーションを使用します (Honorは未選択、トランザクション数は0)。
ソフト4×4 AXIスイッチは、次の機能を提供します。
- 各AXIマスターからHBM2 Pseudo Channel 4つ (HBM2チャネル2つ) のメモリースペースにアクセスできるようにします。
- スイッチによるアクセスの提供は、4×4コンフィグレーションでのみです。つまり、このスイッチのコンフィグレーションを2×2に変更したり、8×8に拡張したりすることはできません。
- スイッチによりサポートされる4×4アクセスの範囲は、AXI Writeアドレス、AXI Writeデータ、AXI Write応答、AXI Readアドレス、AXI ReadデータなどのAXIインターフェイス信号です。このスイッチには、APBサイドバンド・インターフェイスでのスイッチ機能はありません。
- スイッチへのアクセスは次のとおりです。
- すべてのAXIマスターで、コマンドの送信と任意のスレーブチャネルからの応答の受信ができます。
- あるスレーブから別のスレーブへの切り替えは、ポストされていないトランザクションとして扱われます。つまり、マスターは、スレーブからすべての応答が返されるのを待機してから、次のスレーブに切り替えます。
- AXI Switchがイネーブルされている場合のAXI IDの使用法は次のとおりです。
- AXIスイッチ対応モードでは、9ビットAXI IDの上位2ビット (awid/arid) は使用できません。7ビット (128 AXI ID) のみが、AXI ID (awid/arid) として使用できます。
- AXIスイッチをイネーブルしない場合は、9ビットをAXI IDとして使用できます。
- AXI Switchのユーザー・インターフェイスでは、対応する書き込みデータは、次の書き込みコマンドを受け入れる前に使用可能であることを想定しています。したがって、スレーブでコマンドを受け入れる準備ができている場合でも、書き込みコマンドReady信号 (awready) に不連続性が見られることがあります。これによって効率が低下することはありません。書き込みコマンドがストリームで送信されている場合、ユーザーロジックによる書き込みコマンドのバッファリングが必要です。
- AXI Switchがイネーブルされている場合のAXIアドレスの使用法は次のとおりです。
- AXIアドレスバス (awaddr/araddr) は、8GB HBM2を使用する場合は31ビット幅、4GB HBM2を使用する場合は30ビット幅です。
- これに対し、AXIスイッチがイネーブルされていない場合、AXIアドレスバスは、8GB HBM2が使用されている場合は29ビット幅、4GB HBM2が使用されている場合は28ビット幅です。
- AXIアドレスバスの上位2ビットを使用して、対応するAXI要求のスレーブを識別します。
HBM2 IPを生成する際、AXI Switchオプションがイネーブルされている場合、アドレス指定されたスレーブに基づいて、次の値を上位ビットで駆動してください。すべてのHBM2チャネルのペア、例えばHBM2 Channel 2と3、4と5、および6と7について同じ値が続きます。
表 41. AXIアドレスの上位ビットおよび対応するスレーブアドレス AXIアドレス (上位2ビット) スレーブアドレス 00 HBM2 Channel 0/Pseudo Channel 0 01 HBM2 Channel 0/Pseudo Channel 1 10 HBM2 Channel 1/Pseudo Channel 0 11 HBM2 Channel 1/Pseudo Channel 1 注: AXIスイッチには、特定のスレーブへのアクセスを制限するオプションはありません。マスターの責任において、必要に応じて特定のスレーブへのアクセスをマスクし、正しいスレーブにアクセスするために正しいSlave Addressを提供します。1つ以上のAXIモジュールをLogic Lockリージョンに割り当てるオプションは、HBM2のデザイン例で参照可能です。これを実際のデザインで使用して、タイミングを向上させることができます。最終的なタイミング・クロージャーは、いくつかの要因に基づきます。例えば、 インテル® Quartus® Primeタイミング・クロージャー、コアロジックの使用率、コアクロック周波数などです。
- AXIアドレスバス (awaddr/araddr) は、8GB HBM2を使用する場合は31ビット幅、4GB HBM2を使用する場合は30ビット幅です。
- スイッチのHBM2 Channelのコントローラーのコンフィグレーションは次のとおりです。
- AXIスイッチをイネーブルする場合、対応する2つのHBM2チャネルのコントローラーのコンフィグレーションは、同じAXI Dataのコンフィグレーション (AXIバースト・コンフィグレーション、データ幅など) 、およびEnable Reorderバッファーオプションを使用する必要があります。
コマンド・アービトレーションが必要になるのは、単一のスレーブへのアクセスをめぐって複数のマスターによる競合があり、トランザクションを効率的にスケジューリングするための支援が必要な場合です。使用可能なオプションは、トランザクションの効率改善やAXIマスターの優先順位付けに役立ちます。特定のスレーブへのアクセスをめぐってAXIマスターによる競合がない場合、すべてのトランザクションはポイントツーポイントと見なされ、それに応じて処理されます。次のアービトレーション・スキームがサポートされています。
- アービトレーション・スキーム1: ラウンドロビン
- これは、デフォルトのアービトレーションスキームです。AXIマスター0から3の順序に従います。MasterのTransaction Countは0に設定され、Honorは選択されません。各マスターから発行できるトランザクションは1つのみです。その後、次のマスターへのアクセスが許可されます。(1つのAXIトランザクションは、1つのBL4または1つのBL8トランザクションを意味します。選択したバースト・コンフィグレーションに基づきます。)
- アービトレーション・スキーム2: Honorマスター
- このオプションを使用すると、4つのAXIマスターのいずれかをHonorに選択して、Transaction Countを0に設定できます。
- このオプションを選択すると、選択したマスターには、ほかのAXIマスターよりも高いプライオリティーが付与されます。
- このマスターが処理されると、残りのマスターはラウンドロビン・アービトレーションによって処理されます。
- どのマスターにもHonorを選択しない場合、すべてのマスターはラウンドロビン・プライオリティーに従います (アービトレーション・スキーム1)。
- アービトレーション・スキーム3: トランザクション数
- このアービトレーション・スキームでは、トランザクション数を使用します。Honor Masterオプションを使う場合と使わない場合があります。このスキームでは、各マスターのトランザクション数を設定します。トランザクション数により、AXIマスターが任意の時点で発行するトランザクションの総数を定義します。各トランザクション数は、AXIインターフェイスでの単一のバースト長4トランザクション (32B) または単一の疑似バースト長8トランザクション (64B) を参照します。例えば、トランザクション数が10の場合、10個のAXIコマンド・トランザクションの発行が、マスターにより可能であることを指します (アクセスが許可された場合)。AXIマスターでは、10個のトランザクションすべてを1つのAXIスレーブに発行するか、必要に応じてすべてのAXIスレーブに分割するか、10個未満のAXIトランザクションを発行するかを選択できます。
- マスターからスレーブへのアクセスが許可されたら、マスターでは、すべての「Transaction Count」の数のトランザクションの発行ができます。ただしこれは、マスターによるトランザクションの発行が可能で、対応するスレーブで要求を処理する準備ができている場合です。スレーブでマスターへサービスを提供する準備ができていない場合や、マスターが想定される合計トランザクションの発行準備ができていない場合、ラウンドロビン方式によって次のマスターにアクセスが許可されます。マスターにアクセスが許可されるたびに、許可されるトランザクションの数はTransaction Count 値にリセットされます 。例えば、マスター0のTransaction Count の設定が50の場合、マスター0がトランザクションを20回発行してアイドル状態になると、マスター1にアクセスが許可されます。マスター0に再度アクセスが許可されると、マスター0はトランザクションを50回実行できます。
- Honorモードを選択すると、そのマスターのトランザクション数はディスエーブルされ、値の設定は0になります。これは、最も高いプライオリティーを示します。このマスターでは、すべてのトランザクションを発行できます。その後、ラウンドロビン・スキームにより次のマスターにアクセス権が付与されます。
- トランザクション数は最大65535までサポートされています。ただし、トランザクション数が増えるとタイミング・クロージャーに悪影響を与える可能性があるため、アプリケーションのニーズに基づいて適切なトランザクション数を選択してください。
- コマンド・アービトレーションのすべてのコンフィグレーションは、実行時ではなく、IP生成時に行われます。
- 代表的なトラフィック・パターンのRTLシミュレーションをアプリケーションに対して実行し、アービトレーション・スキームをイネーブルして最適化することをお勧めします。
スイッチによるエリア・オーバーヘッド
4×4 AXIスイッチの4つのインスタンスによるエリア使用率は、4×4 AXIスイッチの4つのインスタンスでのメモリースタック1つに対して約7.1% (合計約700,000のALMのうち約50,000) です。デザイン例によって提供されるLogic Lock制約の例は、タイミング・クロージャーの向上のためです。
レイテンシー
AXIポート間で最大20 AXIクロックサイクルのラウンドトリップ・レイテンシーです。 ただし、トランザクションがポイントツーポイントの場合です。(これは、コマンドが受信されてから読み出しデータがユーザー・インターフェイスで使用可能になるまでの物理的レイテンシーを指します。コマンドのスケジューリングやコマンドキューでの待機時間は含まれません。) スイッチを使用する場合の追加のレイテンシーは、コマンド・アービトレーション・ロジックに基づきます。AXIマスターは、すべてのスレーブ応答が戻るのを待機してから、別のスレーブに切り替える必要があります。
7. High Bandwidth Memory (HBM2) Interface Intel FPGA IP Controllerのパフォーマンス
7.1. High Bandwidth Memory (HBM2) DRAMの帯域幅
インターフェイスを1GHzで実行している場合、 128DQ * 1GHz = 128Gbps
- インターフェイスはダブル・データレート・モードで動作するので、HBM2あたりの総帯域幅は、128Gbps * 2 = 256Gbps
- HBM2インターフェイスの総帯域幅は、256Gbps * 8 = 256ギガバイト/秒
- HBM2コントローラーが90%の効率で動作する場合、有効帯域幅は、256Gbps * 0.9 = 約230ギガバイト/秒
7.2. High Bandwidth Memory (HBM2) Interface Intel FPGA IP HBM2 IPの効率
次の式で表しているのは、HBM2コントローラーの効率です。
Efficiency = ((Write transactions + Read transactions accepted by HBM2 controller)/total valid transaction count) * (core clk frequency * 2/HBM2 interface frequency) * 100
- Write transactions: HBM2コントローラーで受け入れるユーザー書き込みデータ・トランザクションを指します (ユーザーによってアサートされたAXI WVALIDおよびコントローラーによってアサートされた対応AXI WREADY)。
- Read transactions: HBM2コントローラーで受け入れるユーザー読み出しデータ・トランザクションを指します (ユーザーによってアサートされたAXI RVALIDおよびコントローラーによってアサートされた対応AXI RREADY)。
- total valid transaction count: 最初の有効トランザクションが発行された後のトランザクション時間の合計です。
- core frequency (MHz): ユーザーロジックが動作する周波数です。コアが動作する周波数は、HBM2インターフェイスよりも低い周波数です。
- HBM2 interface frequency (MHz): HBM2インターフェイスが動作する周波数です。
HBM2コントローラーにより、ユーザー・インターフェイスからの任意のアドレスパターンに対して高い効率が提供されます。コントローラーでは、着信コマンドを効率的にスケジュールし、頻繁なプリチャージとアクティブ化コマンドのほか、可能な場合は頻繁なバス・ターンアラウンドを回避します。
コントローラーの効率に影響する要因
いくつかの要因によりコントローラーの効率が影響されます。最良の効率を得るには、次の要素をデザインで考慮する必要があります。
- ユーザー・インターフェイス周波数とHBM2インターフェイス周波数: FPGAファブリック内のユーザーロジックの周波数は、上記の例に示すように、HBM2のメモリー効率を決定する上で重要な役割を果たします。
- Controller Setting
- Reorder BufferをController Settingsでディスエーブルして、効率を改善します。(ただし、アプリケーションにより、読み出しデータと読み出し要求の提供の順序を同じにする必要がある場合は、Reorder Bufferをイネーブルすることをお勧めします。)
- バースト長: 擬似BL8モードは、連続するBL4間のメモリーアクセスのタイミングの短縮に役立ちます。これによりコントローラーの効率が向上します。
- Traffic Pattern: トラフィック・パターンは、コントローラーの効率を決定する上で重要な役割を果たします。
- シーケンシャルDRAMアドレスとランダムDRAMアドレス: シーケンシャル・アドレスを使用すると、コントローラーによる連続書き込み要求の発行が、開いているページに対して行われ、コントローラーを高効率にすることができます。ランダムアドレスにはPRECHARGE/ACTIVATEコマンドが絶えず必要であり、コントローラーの効率が低下する場合があります。
- User Auto Precharge PolicyをFORCEDに設定し、AXIインターフェイスの awuser/aruser 信号をHIGHに設定して、ランダム・トランザクションのAuto Prechargeをイネーブルします。シーケンシャル・トランザクションの場合、Auto Precharge Policyポリシーの設定をHINTにします。
- Sequential Read OnlyまたはWrite Onlyトランザクション: シーケンシャル読み出し専用または書き込み専用トランザクションでは、効率が向上します。これは、DRAM双方向データバスのバス・ターンアラウンド・タイムが回避されるためです。
- AXI Transaction ID: さまざまなAXIトランザクションIDを使用すると、HBM2コントローラーで高効率のトランザクションをスケジュールするのに役立ちます。同じAXIトランザクションIDを使用すると、コマンドの順序が維持され、効率が低下する場合があります。
- Temperature: 主に次の2つの温度の影響により、
インテル®
Stratix® 10 HBM2インターフェイスのデータ転送に使用できる帯域幅が減ります。
- HBM2がGeneral > Threshold temperature for AXI throttlingパラメーターで設定された温度しきい値およびAXI throttling ratioの値 を超えている場合。
- 85°Cを超えると、HBM2の更新がより頻繁に発生するため、データ転送に使用できる帯域幅が少なくなります。85°Cでは、リフレッシュ・レートは2倍で、95°Cでは、標準的なリフレッシュ時間間隔の7.8マイクロ秒よりも4倍頻繁です。
7.3. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのレイテンシー
読み出しレイテンシーに含まれるのは、読み出しコマンドを発行するためのHBM2メモリー、コントローラー・コマンド・パス・レイテンシー、メモリー読み出しレイテンシー、およびHBMCメモリー・コントローラーを介した読み出しデータパスの遅延です。シミュレーションにより、シミュレーション時間中に見られるAXIコア・クロック・サイクルの最小レイテンシーがレポートされます。
7.4. High Bandwidth Memory (HBM2) Interface Intel FPGA IPのタイミング
HBM2の効率を最大限に高めるために、ユーザーロジックがデザインのベスト・プラクティスに従っていることを確認してください。AXIマスターとスレーブとの入出力信号間の組み合わせパスを避けるように注意してください。パイプライン・レジスターを必要に応じて追加し、タイミングが重要なパスではロジックレベルを削減して、コアタイミング要件が正常に満たされるようにします。Backpressure Latency機能を使用すると、最大で2つのレジスターステージを、ユーザー・インターフェイスとHBM2 IPとの間に追加できます。Backpressure Latencyについて詳しくは、ユーザーロジックからHBM2 Controller AXI Interfaceへのタイミングの改善 を参照してください。
次のドキュメントで詳しく説明している インテル® Stratix® 10デバイス・アーキテクチャーとデザイン手法を採用すると、最良のコア・パフォーマンスを達成できます。
- インテル® Stratix® 10高性能デザイン・ハンドブック
- インテル® Quartus® Primeプロ・エディション: デザイン最適化 インテル® Quartus® Primeプロ・エディション 内タイミング収束と最適化 の章
7.5. High Bandwidth Memory (HBM2) Interface Inte FPGA IP DRAM温度の読み取り
温度の読み取りには、 インテル® Stratix® 10アナログ-デジタル・コンバーターも使用できます。詳細に関しては、 インテル® Stratix® 10アナログ-デジタル・コンバーター・ユーザーガイド を参照してください。
8. High Bandwidth Memory (HBM2) Interface Intel FPGA IPユーザーガイドのアーカイブ
IPバージョンは、v19.1までは インテル® Quartus® Primeデザインスイート・ソフトウェア・バージョンと同一です。 インテル® Quartus® Primeデザインスイート開発ソフトウェア・バージョン19.2以降では、IPには新しいIPバージョン管理スキームがあります。
IPコアのバージョンが記載されていない場合、以前のIPコアのバージョンに向けたユーザーガイドが該当します。
9. High Bandwidth Memory (HBM2) Interface Intel FPGA IPユーザーガイドの改訂履歴
ドキュメント・バージョン | インテル® Quartus® Primeバージョン | IPバージョン | 変更内容 |
---|---|---|---|
2020.10.05 | 20.3 | 19.6.0 |
|
2020.06.22 | 20.2 | 19.5.0 |
|
ドキュメント・バージョン | インテル® Quartus® Primeバージョン | IPバージョン | 変更内容 |
---|---|---|---|
2020.04.13 | 20.1 | 19.4.0 |
|
2020.03.02 | 19.4 | 19.3.0 |
High Bandwidth Memory (HBM2) Interface FPGA IP Interface の章の
インテル®
AXIユーザー・インターフェイス信号 のトピックに次の変更を加えました。
|
2019.12.16 | 19.4 | 19.3.0 |
|
2019.09.19 | 19.2.0 | 19.2.0 |
|
2019.07.25 | 19.2.0 | 19.2.0 |
|
2019.05.03 | 19.1 | 19.1 |
|
2018.12.24 | 18.1.1 | 18.1.1 |
|
2018.05.07 | 18.0 | 18.0 |
|
日付 | バージョン | 変更内容 |
---|---|---|
2017年12月 | 2017.12.22 | 初版 |