High Bandwidth Memory (HBM2) Interface Intel® FPGA IPユーザーガイド

ID 683189
日付 10/05/2020
Public
ドキュメント目次

6.2.6. AXIユーザー・インターフェイス信号

HBM2コントローラーに対するAXIユーザー・インターフェイスは、Amba AXI4プロトコル仕様に従っています。各AXIポートでは、読み出しおよび書き込み動作を1つのPseudo Channelに対して提供します。各HBM2チャネルは2つのPseudo Channelで構成されているため、各コントローラーには2つの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スイッチのセクションを参照してください。

図 18. AXIアドレス定義

図 19. 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です。

表 21.  ユーザーポート0のAXI4 Write Address (Command) チャネル
ポート名 入力/出力 説明
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パラメーター・エディターで選択してください。この機能が選択されていない場合は、次の値がサポートされます。

最大バースト長 モード

0b00000000 –

0b1111_1111
1-256 BL4 – バーストモードはイネーブル (Quartus 20.3以降)
0b00000000 1 BL4 – 非バーストモード
0b00000001 2 Pseudo BL8

疑似バースト長8の場合、バースト・トランザクションはサポートされません。

axi_0_0_awsize 3 入力

Burst Sizeです。この信号で示すのは、バースト内の各転送のサイズです。

バーストサイズ (バイト)
0b101 32

HBM2コントローラーでサポートするのは、256ビット、つまり32バイトのデータ転送が、AXI InterfaceでAXIクロックサイクルごとに行われる場合のみです。HBM2コントローラーでは、axi_awsizeの値を設定し、サポートされていない値がaxi_awsizeポートを介して駆動された場合は無視します。

axi_0_0_awburst 2 入力

バーストタイプとサイズ情報です。バースト内の各転送のアドレスの計算方法が決まります。

バーストタイプ
2’b01 INCR

INCRのみがサポートされます。HBM2コントローラーではaxi_awburstの値を設定し、サポートされていない値がaxi_awburstポートを介して駆動された場合は無視します。

axi_0_0_awprot 3 入力 Protection Typeです。 [将来の使用のために予約済み]

この信号で示すのは、トランザクションの特権とセキュリティー・レベル、またトランザクションがデータアクセスと命令アクセスのどちらであるかです。

  • 3'b000 = 保護なし
axi_0_0_awqos 4 入力 Quality of Serviceです。Quality of Service識別子が書き込みトランザクションごとに送信されます。
  • 4'b1111 = 高プライオリティー
  • 4'b0000 = 標準プライオリティー
axi_0_0_awuser 1 入力 自動プリチャージ用のUser Signalです。
  • 1'b0 = 自動プリチャージなし
  • 1'b1 = 自動プリチャージ

書き込みアドレスチャネルのユーザー定義自動プリチャージ信号 (オプション)。

axi_0_0_awvalid 1 入力 Write Address Validです。有効な書き込みアドレスと制御情報をチャネルで通知していることを示します。
axi_0_0_awready 1 Output Write Address Readyです。スレーブで、アドレスおよび関連するコントロール信号の受け入れ準備ができていることを示します。
表 22.  ユーザーポート0のAXI4 Write Dataチャネル
ポート名 入力/出力 説明
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コントローラー) で書き込みデータの受け入れができることを示します。
表 23.  ユーザーポート0のWrite Responseチャネル
ポート名 入力/出力 説明
axi_0_0_bid

7 (AXIスイッチがイネーブルされている場合)

9 (AXIスイッチがイネーブルされていない場合)

出力 Response ID Tagです。書き込み応答のIDタグです。
axi_0_0_bresp 2 出力

Write Responseです。書き込みトランザクションのステータスを示します。

  • 2'b00 = OKAYの場合、通常のアクセスが正常に行われたことを示します。
axi_0_0_bvalid 1 出力 Write Response Validです。有効な書き込み応答をチャネルから通知していることを示します。
axi_0_0_bready 1 入力 Response Readyです。マスターによる書き込み応答の受け入れが可能であることを示します。
表 24.  ユーザーポート0のAXI4 Write Address (Command) チャネル
ポート名 入力/出力 説明
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パラメーター・エディターで選択してください。この機能が選択されていない場合は、次の値がサポートされます。

最大バースト長 モード

0b00000000 –

0b1111_1111
1-256 BL4 – バーストモードはイネーブル (Quartus 20.3以降)
0b00000000 1 BL4 – 非バーストモード
0b00000001 2 Pseudo BL8

疑似バースト長8の場合、バースト・トランザクションはサポートされません。

axi_0_0_arsize 3 入力

Burst Sizeです。この信号で示すのは、バースト内の各転送のサイズです。

バーストサイズ (バイト)
0b101 32

HBM2コントローラーでサポートするのは、256ビット、つまり32バイトのデータ転送が、AXI InterfaceでAXIクロックサイクルごとに行われる場合のみです。HBM2コントローラーでは、axi_arsizeの値を設定し、サポートされていない値がaxi_arsizeポートを介して駆動された場合は無視します。

axi_0_0_arburst 2 入力

バーストタイプとサイズ情報です。バースト内の各転送のアドレスの計算方法が決まります。

バーストタイプ
2’b01 INCR

INCRのみがサポートされます。HBM2コントローラーではaxi_arburstの値を設定し、サポートされていない値が axi_0_0_arburstポートを介して駆動された場合は無視します。

axi_0_0_arprot 3 入力 Protection Typeです。 [将来の使用のために予約済み] この信号で示すのは、トランザクションの特権とセキュリティー・レベル、またトランザクションがデータアクセスと命令アクセスのどちらであるかです。
  • 3'b000 = 保護なし
axi_0_0_arqos 4 入力 Quality of Serviceです。Quality of Service識別子が書き込みトランザクションごとに送信されます。
  • 4'b1111 = 高プライオリティー
  • 4’b0000 = 標準プライオリティー
axi_0_0_aruser 1   自動プリチャージ用のUser Signalです。
  • 1'b0 = 自動プリチャージなし
  • 1'b1 = 自動プリチャージ
axi_0_0_arvalid 1 入力 Read Address Validです。有効な読み出しアドレスと制御情報をチャネルから通知していることを示します。
axi_0_0_arready 1 出力 Read Address Readyです。スレーブで、アドレスおよび関連するコントロール信号の受け入れ準備ができていることを示します。
表 25.  ユーザーポート0のRead Dataチャネル
ポート名 入力/出力 説明
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です。読み出し転送のステータスを示します。
  • 2’b00 = OKAY
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です。マスターで読み出しデータと応答情報の受け入れが可能であることを示します。