Using the RTL Kernel Wizard をやってみる

xilinx の RTL Kernel なるものをやってみることにした。 Vitis で環境を作って、Vivado を立ち上げて、Vitis に戻って評価する。 ターゲットは U50。

ここでやっていることは Using the RTL Kernel Wizard。謎の部分はいっぱいある。

注意点は KVAdd (A, B, Res) とかいいながら、A, B, Res に 1 たしているだけ。 Res <= A + B をしているわけではない。

Vitis の起動

まずは Vitis の起動から入る。Vitis から RTL Kernel Wizard が呼べる。 このウィザード。便利なのか、便利じゃないのか、、、 複雑なプログラムを複雑に作ってくれるので、後から Verilog のソースを いじる気にならない。

とにかく、このページの通り作業を進めていくことにする。

途中、Vivado が立ち上がって、Elaborate から回路図を見ろという 風に書いてある。しかし、それ以上、の説明はない。

エラボレート

どうみても、ただ単に 1 足しているだけ。 その後、Verilog のソースをみる。

コントロールコンスタント

どうみても、ただ単に 1 足しているだけ。 ここでは掲載しないが、host のプログラムも各引数 A, B, Res に 1 足されることを確認している。どうなってるんだ。 scalar なるパラメタは設定されるが使われていない。

Vitis で確認

HW エミューレーションまで進むと、実際に HW が無くても xsim でシミュレーションしてくれる。 ちょっと便利ポイのが Timeline Trace。

タイムトレース

AWS で実行した訳ではないのでちょっと結果が違っている。 U50 は HBM2 だからかな?

XPM_FIFO_AXIS

自動生成してくれるソースの中で AXIS I/F の FIFO を使っている。 これこれ。 これがないと、真ん中の RTL が生きてこない。 ug974 をみると “ファミリ: 7 シリーズ、UltraScale、UltraScale+” と書いてあるので、まぁ最近のチップは全部使えるみたい。

今後これを使うといいよね。

RTL Kernel って、今までの自分の資産をここに持ってこようと思っているのだから、 Wizard で中途半端にソースを自動生成してもらっても、役に立たないよ!!