ヘテロジニアス ARF デザインは、VCK190 評価ボード上のザイリンクス VC1902 デバイスで検証されます。ARF の AI エンジン部と PL 部はカーネルとしてパッケージされます。テスターもカーネルとしてパッケージされ、事前に格納されたスティミュラスを使用してテスト対象デバイス (DUT) の入力ポートを駆動し、リファレンス テスト ベクターを基準として出力 AXI バスをモニターします。スループットとレイテンシは PL テスターによって測定され、プロセッサから AXI4-Lite インターフェイスを介してアクセスできる一連のレジスタに記録されます。テストが完了すると結果が要約され、COM ポートから出力されます。
すべてのカーネルは AXI インターフェイスのみを備えています。ただし、AXI バスのソースとデスティネーションの両方が PL カーネルである場合は、ユーザーが信号の定義をカスタマイズできます。ARF の PL カーネルは、AI エンジンに接続される AXI バス以外に、カスタム ロジックで AXI インターフェイスにマップされる次の信号を備えています。
AXI バスの方向 | 信号名 | AXI 信号へのマップ |
---|---|---|
入力 (375 MHz) |
afsrc_in_vld
|
T_VALID
|
afsrc_in_rdy
|
T_READY
|
|
afsrc_in_soft_reset
|
T_DATA[63]
|
|
afsrc_in_stp [29:0]
|
T_DATA[61:32]
|
|
afsrc_in_dat [31:0]
|
T_DATA[31:0]
|
|
出力 (500 MHz) |
afsrc_out_flags [1:0]
|
T_USER[1:0]
|
afsrc_out_rdy
|
T_READY
|
|
afsrc_out_vld
|
T_VALID
|
|
afsrc_out_dat[31:0]
|
T_DATA[31:0]
|
これについて次に詳しく説明します。
- ソフト リセットは、入力データ バスの最上位ビットにマップされます。次に示す動作を実行するには、有効なデータの前にソフト リセットをアサートする必要があります。
- PL 内の位相累算レジスタのリセット
- PL 内の出力 FIFO のリセット
- AI エンジン内のオーバーラップ メモリのクリア
- AXI プロトコルでは、
Ready
信号が Low に遷移した直後にデータ送信を休止する必要があります。カスタマイズされた AXI インターフェイスでは、このプロトコルが緩和され、バッファーがフルになるまですべての書き込み動作を受け入れる FIFO を使用できます。バック プレッシャーは、FIFO に書き込めるサンプルの数が 16 未満になったときにアサートされるprogrammable full
信号で通知されます。これにより、カスタム ロジックは、最大 15 段までのパイプライン内のデータを消去できます。
- 出力
Ready
信号は、ARF がこの信号のアサートから正確に 500 サイクル後に出力を開始するためのタイミング リファレンスとして機能します。この動作は、慎重に制御される出力 FIFO 読み出し信号によって実現されます。 - ARF FIFO の
empty
信号は T_USER にマップされ、エラーの検出に使用されます。ARF 出力がアクティブなとき、FIFO エンプティ イベントは出力データが壊れていることを示します。
ARF テスター カーネルはテスト結果を収集し、プロセッサが次の図に示すレジスタ マップによってアクセスできるようにします。テスト プロセスを制御するフィールドもあります。テストの各反復では 8192 個の入力サンプルが 350 MSPS で処理され、最大 (232 – 1) 回の反復が 8192 x (232 – 1) x 1/350 MHz = 14 時間続きます。
アルゴリズムが必要な性能を確実に達成するよう、浮動小数点 MATLAB リファレンス モデルを構築します。次に、ビット単位の MATLAB モデルを開発し、ビット単位モデルの出力と浮動小数点モデルの出力を比較することによって量子化ノイズを測定します。次の図は、入力波形、浮動小数点リサンプラーの出力、ビット単位モデルの比較を示しています。これらは非常によく一致しており、精度の高さを示しています。このテスト ケースでは、SQNR (信号対量子化ノイズ比) の測定値は 87 dBc です。
MATLAB スクリプトによって生成されるテスト ベクターは、AI エンジンのシミュレーションとハードウェア テストの両方に使用されます。テスト目的で 5333/7993 の分数比を選択しています。ここで、5333 と 7993 はいずれも素数です。入力テスト ベクターは、AI エンジン シミュレーションの長さに達するまで 5333 サンプルの波形を繰り返したものです。出力は 7993 個のサンプルの反復になると想定されます (初回の反復の最初の数個のサンプルを除く)。
$ make aie
------------------------------------
Arbitrary Resampler AIE Sim Result
------------------------------------
Throughput = 715.718 Msps
Mismatch = 0
$ make rtlsim
SIN Mismatch = 0
AIN Mismatch = 0
DIN Mismatch = 0
Test 0: Mismatch = 0, IdleCycle = 0, Latency = 500 cycles, ErrFlag = 0
Test 1: Mismatch = 0, IdleCycle = 0, Latency = 500 cycles, ErrFlag = 0
*************** TEST PASSED ****************
[connectivity]
# Declare Kernels
nk=tst_arf:1:tst_arf_1
nk=plk_arf:1:plk_arf_1
# TESTER -> PL Kernel
sc=tst_arf_1.arf_in:plk_arf_1.arf_in
# PL Kernel -> AIE
sc=plk_arf_1.aie_sin:ai_engine_0.sin
sc=plk_arf_1.aie_ain:ai_engine_0.ain
sc=plk_arf_1.aie_din:ai_engine_0.din
# AIE -> PL Kernel
sc=ai_engine_0.dout:plk_arf_1.aie_out
# PL Kernel -> TESTER
sc=plk_arf_1.arf_out:tst_arf_1.arf_out
[clock]
# ID=0: 100MHz for Registers
id=0:tst_arf_1.reg_clk
# ID=4: 375MHz for AIE Interface
id=4:plk_arf_1.aie_clk
id=4:tst_arf_1.aie_clk
# ID=3: 500MHz for DAC Interface
id=3:plk_arf_1.dac_clk
id=3:tst_arf_1.dac_clk
ソフトウェア シミュレーション環境内の波形ビューを使用したデバッグは、可視性が限られるハードウェア上で直接デバッグするよりもはるかに容易です。Vitis コンパイラは、PS+PL+AI エンジン協調シミュレーションをサポートしており、
Vivado®
シミュレータを GUI に使用して波形を表示し、画面上でさまざまな信号のレイテンシを測定できます。500 MHz クロック ドメイン内の ARF 出力信号 (次の図の dut_out_axi_trdy
および dut_out_axi_tvld
) は、これらの信号間の固定レイテンシが 1 μs になるように微調整されます。複数のクロック ドメインにまたがる信号と AXI インターフェイスには、タイミングに多少ばらつきがありますが、これは出力 FIFO によって完全に吸収されるため、カスタム ロジックからは透過的です。
---------------------------------------------------------------
-- ARBITRARY RESAMPLING FILTER TEST SUMMARY --
---------------------------------------------------------------
TestID Latency(us) Outputs Idle Mismatch Flag Result
---------------------------------------------------------------
0 1.000 12279095842 0 0 0x00 PASS
1 1.000 27437128450 0 0 0x00 PASS
2 1.000 42595161058 0 0 0x00 PASS
3 1.000 57753242780 0 0 0x00 PASS
4 1.000 72911275388 0 0 0x00 PASS
5 1.000 88069307996 0 0 0x00 PASS
6 1.000 103227340606 0 0 0x00 PASS
7 1.000 118385373214 0 0 0x00 PASS
8 1.000 133543442656 0 0 0x00 PASS
9 1.000 148701475266 0 0 0x00 PASS
-------------------------------------------------------------
PASS!
テスト結果から、次に示す設計目標をすべて満たしていることが確認できます。
- すべての出力サンプルが、ROM に格納されたリファレンス テスト ベクターと一致している。
- すべてのテストで、1 μs の確定的なレイテンシが測定されている。
- 出力データ バス内でアイドル サイクルが観察されていない。つまり、テストの実行中、
Valid
信号は solid High のままになっている。 - エラー フラグがアサートされていない。つまり、FIFO のアンダーフローは発生していない。