外部メモリー・インターフェイス Agilex™ 7 FシリーズおよびIシリーズFPGA IPユーザーガイド

ID 683216
日付 3/29/2024
Public
ドキュメント目次

11.9.5.2.6. アドレスパターン例 - アドバンスト・モード

この項で示されている例には、 Avalon® アドレス (amm_address_0) およびメモリーアドレス (mem_addr) の生成されたアドレスが含まれています。

amm_address_0mem_addrの幅の違いは、コンフィグレーションされているEMIF IPバリアントに基づいています。

以下の例には、次の点が当てはまります。

  • Xの値は、レジスターが使用されていないことを示し、値は無関係です。
  • アドレス幅 (31) はシンボルアドレスで、トラフィック・ジェネレーターからの出力です。示されている例で使用しているデザインでは、AMM_WORD_ADDRESS_WIDTHは26ビットです。この差を考慮して、トラフィック・ジェネレーターはすべてのアドレスを差分 (5ビット) シフトします。これらの例では、このシフトされたアドレスを使用しています。ただし、外部メモリー・インターフェイスでは、ctrl_ammインターフェイス側でこのシフトは認識されません。
  • 提供されている波形は完全な命令パターンの一部であり、書き込み命令と対応するアドレスを示すだけのものです。スペースの制限により、すべての読み出しブロックが示されているわけではありません。

Avalon® アドレスの幅は、次の内容に基づいています。

  • メモリー側のデータ幅
  • コンフィグレーションされているEMIF IPのレート (クォーターレート、ハーフレート、またはフルレートのいずれか)
  • メモリー・インターフェイスのレート (ダブルデータ・レートもしくはクォーターデータ・レート)

例1: Randomアドレスモード

次の命令パターンについて検討します。

TG_LOOP_COUNT=2 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=2
TG_WRITE_COUNT=3 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=0
TG_READ_COUNT=3 TG_BURST_LENGTH=1
表 160.  アドレスパターン
   
Write Start Addresses:
TG_SEQ_START_ADDR_WR =0x5a5a
TG_SEQ_START_ADDR_WR+1=0x0000
TG_SEQ_START_ADDR_WR+2=X
…
TG_SEQ_START_ADDR_WR+11=X
Read Start Addresses:
TG_SEQ_START_ADDR_RD =0x5a5a
TG_SEQ_START_ADDR_RD+1=0x0000
TG_SEQ_START_ADDR_RD+2=X
…
TG_SEQ_START_ADDR_RD+11=X
Write Address Modes:
TG_ADDR_MODE_WR=1
TG_ADDR_MODE_WR+1=3
…
TG_ADDR_MODE_WR+5=3
Read Address Modes:
TG_ADDR_MODE_RD=1
TG_ADDR_MODE_RD+1=3
…
TG_ADDR_MODE_RD+5=3
Sequential Address Increments:
TG_SEQ_ADDR_INCR=X
TG_SEQ_ADDR_INCR+1=X
…
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=0
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=X
…
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX=AMM_WORD_ADDRESS_WIDTH-1
TG_ADDR_FIELD_MSB_INDEX+1=X
…
TG_ADDR_FIELD_MSB_INDEX+4=X
図 220. トラフィック・ジェネレーターのコンフィグレーション・インターフェイスにおけるアドレスパターンの設定

図 221. Randomアドレスモード

例2: Sequentialアドレスモード

次の命令パターンについて検討します。

TG_LOOP_COUNT=2 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=0
TG_WRITE_COUNT=3 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=1
TG_READ_COUNT=3 TG_BURST_LENGTH=1
表 161.  アドレスパターン
   
Write Start Addresses:
TG_SEQ_START_ADDR_WR =’0
TG_SEQ_START_ADDR_WR+1=’0
TG_SEQ_START_ADDR_WR+2=X
…
TG_SEQ_START_ADDR_WR+11=X
Read Start Addresses:
TG_SEQ_START_ADDR_RD =’0
TG_SEQ_START_ADDR_RD+1=’0
TG_SEQ_START_ADDR_RD+2=X
…
TG_SEQ_START_ADDR_RD+11=X
Write Address Modes:
TG_ADDR_MODE_WR=2
TG_ADDR_MODE_WR+1=3
…
TG_ADDR_MODE_WR+5=3
Read Address Modes:
TG_ADDR_MODE_RD=2
TG_ADDR_MODE_RD+1=3
…
TG_ADDR_MODE_RD+5=3
Sequential Address Increments:
TG_SEQ_ADDR_INCR=8
TG_SEQ_ADDR_INCR+1=X
…
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=0
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=X
…
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX=AMM_WORD_ADDRESS_WIDTH-1
TG_ADDR_FIELD_MSB_INDEX+1=X
…
TG_ADDR_FIELD_MSB_INDEX+4=X
図 222. Sequentialアドレスモード

例3: Sequentialアドレスモード (TG_RETURN_TO_START_ADDR_1)

次の命令パターンについて検討します。

TG_LOOP_COUNT=2 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=0
TG_WRITE_COUNT=3 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=1
TG_READ_COUNT=3 TG_BURST_LENGTH=1
表 162.  アドレスパターン
Write Start Addresses:
TG_SEQ_START_ADDR_WR =’0
TG_SEQ_START_ADDR_WR+1=’0
TG_SEQ_START_ADDR_WR+2=X
…
TG_SEQ_START_ADDR_WR+11=X
Read Start Addresses:
TG_SEQ_START_ADDR_RD =’0
TG_SEQ_START_ADDR_RD+1=’0
TG_SEQ_START_ADDR_RD+2=X
…
TG_SEQ_START_ADDR_RD+11=X
Write Address Modes:
TG_ADDR_MODE_WR=2
TG_ADDR_MODE_WR+1=3
…
TG_ADDR_MODE_WR+5=3
Read Address Modes:
TG_ADDR_MODE_RD=2
TG_ADDR_MODE_RD+1=3
…
TG_ADDR_MODE_RD+5=3
Sequential Address Increments:
TG_SEQ_ADDR_INCR=8
TG_SEQ_ADDR_INCR+1=X
…
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=1
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=X
…
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX+1=AMM_WORD_ADDRESS_WIDTH-1
TG_ADDR_FIELD_MSB_INDEX+1=X
…
TG_ADDR_FIELD_MSB_INDEX+4=X
図 223. トラフィック・ジェネレーターのコンフィグレーション・インターフェイスにおけるアドレスパターンの設定
図 224.  Sequentialアドレスモード (TG_RETURN_TO_START_ADDR=1)

例4: Random Sequentialアドレスモード

次の命令パターンについて検討します。

TG_LOOP_COUNT=1 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=1
TG_WRITE_COUNT=8 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=1
TG_READ_COUNT=8 TG_BURST_LENGTH=1
表 163.  アドレスパターン
Write Start Addresses:
TG_SEQ_START_ADDR_WR =0x0000
TG_SEQ_START_ADDR_WR+1=0x0000
TG_SEQ_START_ADDR_WR+2=0xaaaa
TG_SEQ_START_ADDR_WR+3=0x0000
TG_SEQ_START_ADDR_WR+4=X
…
TG_SEQ_START_ADDR_WR+11=X
Read Start Addresses:
TG_SEQ_START_ADDR_RD =0x0000
TG_SEQ_START_ADDR_RD+1=0x0000
TG_SEQ_START_ADDR_RD+2=0xaaaa
TG_SEQ_START_ADDR_RD+3=0x0000
TG_SEQ_START_ADDR_RD+4=X
…
TG_SEQ_START_ADDR_RD+11=X
Write Address Modes:
TG_ADDR_MODE_WR=2
TG_ADDR_MODE_WR+1=1
TG_ADDR_MODE_WR+2=3
…
TG_ADDR_MODE_WR+5=3
Read Address Modes:
TG_ADDR_MODE_RD=2
TG_ADDR_MODE_RD+1=1
TG_ADDR_MODE_RD+2=3
…
TG_ADDR_MODE_RD+5=3
Sequential Address Increments:
TG_SEQ_ADDR_INCR=2
TG_SEQ_ADDR_INCR+1=X
…
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=0
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=4
TG_ADDR_FIELD_RELATIVE_FREQ+2=X
TG_ADDR_FIELD_RELATIVE_FREQ+3=X
TG_ADDR_FIELD_RELATIVE_FREQ+4=X
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX=3
TG_ADDR_FIELD_MSB_INDEX+1=AMM_WORD_ADDRESS_WIDTH-1
TG_ADDR_FIELD_MSB_INDEX+4=X
TG_ADDR_FIELD_MSB_INDEX+4=X
TG_ADDR_FIELD_MSB_INDEX+4=X
図 225. トラフィック・ジェネレーターのコンフィグレーション・インターフェイスにおけるアドレスパターンの設定
図 226.  Random-Sequentialアドレスモード

例5: 複数のアドレスフィールドを使用してのメモリー階層の走査

次の命令パターンについて検討します。

TG_LOOP_COUNT=0 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=0
TG_WRITE_COUNT=1 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=0
TG_READ_COUNT=0 TG_BURST_LENGTH=1

アドレスパターン

このアドレスパターンでは、複数のフィールドを使用してメモリー階層を走査し、特定のバンクグループを分離してシグナル・インテグリティーをテストします。 Avalon® コントロール・インターフェイスとメモリーアドレスおよびコマンド・インターフェイス間のマッピングを指定します。それには、パラメーター・エディターのControllerタブにあるAddress Orderingパラメーターを使用します。

例えば、クォーターレートEMIF IPバリアントのコンフィグレーションがCTRL_DDR4_ADDR_ORDER_ENUM = DDR4_CTRL_ADDR_ORDER_CS_R_B_C_BGで、外部メモリーの形式が次のような場合を以下に説明します。

表 164.  
階層レベル パラメーター パラメーターの値
ランク
MEM_DDR4_DISCRETE_CS_WIDTH (cs)
1
バンクグループ
MEM_DDR4_BANK_GROUP_WIDTH (BG)
2
バンク
MEM_DDR4_BANK_ADDR_WIDTH (BA)
2
MEM_DDR4_ROW_ADDR_WIDTH (R)
15
MEM_DDR4_COL_ADDR_WIDTH (C)
10

このパラメーター化において、アドレスビットはEMIF ctrl_ammインターフェイスのメモリーアドレスおよびコマンドピンに次のようにマッピングされます。

25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
R R R R R R R R R R R R R R R BA BA C C C C C C C BG BG

上の例では、EMIFコントロール・インターフェイス・アドレスは7つの列ビットのみを使用します。クォーターレートのユーザーロジックとダブルデータ・レートのインターフェイスにより、ctrl_ammインターフェイスの各命令によってメモリー側で8のバースト長が発生します。これらの3ビットについては、ctrl_ammインターフェイスで明示的にアドレス指定しません。

この例における最終的な目的は、バンクグループ3でランダムに選択されたバンクのトラフィックを生成することです。このバンクのすべての行と列の組み合わせに書き込むには、コントロール・インターフェイスで216x27=223の一意の書き込みが必要です。各TG_ADDR_FIELD_RELATIVE_FREQレジスターは16ビット幅です。つまり、最大相対頻度の設定が216-1であることを意味します。この最大相対頻度では、バンク内のすべての行と列にアクセスできるわけではありませんが、各バンクのシグナル・インテグリティーをテストするのに十分なランダムな範囲を網羅することができます。

Write Start Addresses:
TG_SEQ_START_ADDR_WR =0x0003
TG_SEQ_START_ADDR_WR+1=0x0000
TG_SEQ_START_ADDR_WR+2=0x0000
TG_SEQ_START_ADDR_WR+3=0x0000
TG_SEQ_START_ADDR_WR+4=0x0000
TG_SEQ_START_ADDR_WR+5=0x0000
TG_SEQ_START_ADDR_WR+6=0x0000
TG_SEQ_START_ADDR_WR+7=0x0000
TG_SEQ_START_ADDR_WR+8=X
…
TG_SEQ_START_ADDR_WR+11=X
Read Start Addresses:
TG_SEQ_START_ADDR_RD =0x0003
TG_SEQ_START_ADDR_RD+1=0x0000
TG_SEQ_START_ADDR_RD+2=0x0000
TG_SEQ_START_ADDR_RD+3=0x0000
TG_SEQ_START_ADDR_RD+4=0x0000
TG_SEQ_START_ADDR_RD+5=0x0000
TG_SEQ_START_ADDR_RD+6=0x0000
TG_SEQ_START_ADDR_RD+7=0x0000
TG_SEQ_START_ADDR_RD+8=X
…
TG_SEQ_START_ADDR_RD+11=X
Write Address Modes:
TG_ADDR_MODE_WR=0
TG_ADDR_MODE_WR+1=2
TG_ADDR_MODE_WR+2=1
TG_ADDR_MODE_WR+3=2
TG_ADDR_MODE_WR+4=3
TG_ADDR_MODE_WR+5=3
Read Address Modes:
TG_ADDR_MODE_RD=0
TG_ADDR_MODE_RD+1=2
TG_ADDR_MODE_RD+2=1
TG_ADDR_MODE_RD+3=2
TG_ADDR_MODE_RD+4=3
TG_ADDR_MODE_RD+5=3
Sequential Address Increments:
TG_SEQ_ADDR_INCR=X
TG_SEQ_ADDR_INCR+1=1
TG_SEQ_ADDR_INCR+2=X
TG_SEQ_ADDR_INCR+3=1
TG_SEQ_ADDR_INCR+4=X
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=0
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=1
TG_ADDR_FIELD_RELATIVE_FREQ+2=216-1
TG_ADDR_FIELD_RELATIVE_FREQ+3=27
TG_ADDR_FIELD_RELATIVE_FREQ+4=X
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX=1
TG_ADDR_FIELD_MSB_INDEX+1=8
TG_ADDR_FIELD_MSB_INDEX+2=10
TG_ADDR_FIELD_MSB_INDEX+3=AMM_WORD_ADDRESS_WIDTH-1
TG_ADDR_FIELD_MSB_INDEX+4=X
図 227. トラフィック・ジェネレーターのコンフィグレーション・インターフェイスにおけるこのアドレス・パターンのコンフィグレーション設定

このアドレスパターンは、アドバンスト・モードでのみ実行することができます。

図 228.  複数のアドレスフィールドでのメモリー階層の走査

最初の3つの書き込みはトラフィックの開始を表しており、フィールド1がサイクルごとに増加します。時間省略後の最初の書き込みは、書き込み番号27を表します。相対頻度の設定が27であるため、これはフィールド3が1インクリメントする最初のタイミングです。2番目の時間省略後の最初の書き込みは、書き込み番号216を表します。相対頻度の設定が216-1であるため、これはフィールド2に新しい値が生成される最初のタイミングです。

例6: すべてのアドレスフィールドの使用

次の命令パターンについて検討します。

TG_LOOP_COUNT=2 TG_WRITE_REPEAT_COUNT=1 TG_RW_GEN_IDLE_COUNT=0
TG_WRITE_COUNT=3 TG_READ_REPEAT_COUNT=1 TG_RW_GEN_LOOP_IDLE_COUNT=0
TG_READ_COUNT=3 TG_BURST_LENGTH=1

アドレスパターン

このアドレスパターンは、アドバンスト・モードの機能を表しています。この例では、さまざまなアドレスビットをさまざまなアドレス・ジェネレーターに関連付けており、それぞれ相対頻度が異なります。

Write Start Addresses:
TG_SEQ_START_ADDR_WR =0x000a
TG_SEQ_START_ADDR_WR+1=0x0000
TG_SEQ_START_ADDR_WR+2=0x0005
TG_SEQ_START_ADDR_WR+3=0x0000
TG_SEQ_START_ADDR_WR+4=0x000a
TG_SEQ_START_ADDR_WR+5=0x0000
TG_SEQ_START_ADDR_WR+6=0x0005
TG_SEQ_START_ADDR_WR+7=0x0000
TG_SEQ_START_ADDR_WR+8=0x000a
TG_SEQ_START_ADDR_WR+9=0x0000
TG_SEQ_START_ADDR_WR+10=0x007f
TG_SEQ_START_ADDR_WR+11=0x0000
Read Start Addresses:
TG_SEQ_START_ADDR_RD =0x000a
TG_SEQ_START_ADDR_RD+1=0x0000
TG_SEQ_START_ADDR_RD+2=0x0005
TG_SEQ_START_ADDR_RD+3=0x0000
TG_SEQ_START_ADDR_RD+4=0x000a
TG_SEQ_START_ADDR_RD+5=0x0000
TG_SEQ_START_ADDR_RD+6=0x0005
TG_SEQ_START_ADDR_RD+7=0x0000
TG_SEQ_START_ADDR_RD+8=0x000a
TG_SEQ_START_ADDR_RD+9=0x0000
TG_SEQ_START_ADDR_RD+10=0x007f
TG_SEQ_START_ADDR_RD+11=0x0000
Write Address Modes:
TG_ADDR_MODE_WR=1
TG_ADDR_MODE_WR+1=2
TG_ADDR_MODE_WR+2=1
TG_ADDR_MODE_WR+3=2
TG_ADDR_MODE_WR+4=1
TG_ADDR_MODE_WR+5=0
Read Address Modes:
TG_ADDR_MODE_RD=1
TG_ADDR_MODE_RD+1=2
TG_ADDR_MODE_RD+2=1
TG_ADDR_MODE_RD+3=2
TG_ADDR_MODE_RD+4=1
TG_ADDR_MODE_RD+5=0
Sequential Address Increments:
TG_SEQ_ADDR_INCR=X
TG_SEQ_ADDR_INCR+1=5
TG_SEQ_ADDR_INCR+2=X
TG_SEQ_ADDR_INCR+3=2
TG_SEQ_ADDR_INCR+4=X
TG_SEQ_ADDR_INCR+5=X
Return to Start Address:
TG_RETURN_TO_START_ADDR=0
Relative Frequencies:
TG_ADDR_FIELD_RELATIVE_FREQ=1
TG_ADDR_FIELD_RELATIVE_FREQ+1=2
TG_ADDR_FIELD_RELATIVE_FREQ+2=3
TG_ADDR_FIELD_RELATIVE_FREQ+3=4
TG_ADDR_FIELD_RELATIVE_FREQ+4=5
TG_ADDR_FIELD_RELATIVE_FREQ+5=X
MSB Indices:
TG_ADDR_FIELD_MSB_INDEX=3
TG_ADDR_FIELD_MSB_INDEX+1=7
TG_ADDR_FIELD_MSB_INDEX+2=11
TG_ADDR_FIELD_MSB_INDEX+3=15
TG_ADDR_FIELD_MSB_INDEX+4=19
図 229. トラフィック・ジェネレーターのコンフィグレーション・インターフェイスにおけるこのアドレス・パターンのコンフィグレーション設定方法

このアドレスパターンは、アドバンスト・モードでのみ実行することができます。

図 230. 複数のアドレスフィールド