この日記でやること
Vivado HLSの高位合成を使って、ZYBOのLEDを点滅させてみる日記の3日目。前回はC++のソースコードを作成したので、動作を確認するテストベンチを作成する。
環境
Windows 10
Vivado HLS 2018.3
ZYBO
C++でテストベンチを作成
前回はC言語でソースコードをコーディングしたので、今回はTest Benchを作ってソースコードの動作を確認したいと思う。このあたりの流れはverilogで書いているときとあまり変わらない。まず、ExplorerのTest Benchを右クリックして、New File…を選択。
ファイル名は適当にblink_led_tb.cppとして、OKを押す。
するとblink_led_tb.cppが作成され、Vivado HLS上でファイルが開かれる。とりあえずi_led_switchが1の時と0の時の両方の結果が確認できるように、以下のようなテストコードを書いた。
//Test bench for blink_led.cpp | |
#include <stdio.h> | |
#include <string.h> | |
#include <ap_int.h> | |
void blink_led(ap_uint<1> i_led_switch, ap_uint<4> *o_led); | |
int main(){ | |
using namespace std; | |
ap_uint<1> i_led_switch; | |
ap_uint<4> o_led; | |
i_led_switch = 1; | |
blink_led(i_led_switch, &o_led); | |
cout << "o_led = " << o_led <<endl; | |
i_led_switch = 0; | |
blink_led(i_led_switch, &o_led); | |
cout << "o_led = " << o_led <<endl; | |
} |
i_led_switchが0のときと1のときに、o_ledの値がそれぞれどうなるかを出力して、結果を確認するテストベンチになっている。このコードでテストを行う。
テストベンチを実行
Run C Simulationを選択すると、以下のような画面が出てくるのでそのままOKをクリック。
バグが無ければ、以下のようにシミュレーション結果が表示される。狙い通り、i_led_switch=1のときはo_ledが15(16進数だとF)、i_led_switch=0のときはo_ledが0になっている。
C++のソースコードの動きを確認できたので、次はC++のソースコードからVerilog HDLを生成する。
参考文献
公式のドキュメントが以下にあるので、参照しながら進めていきます。
UG871:Vivado Design Suite Tutorial – Hi-Level Synthesis
UG902:Vivado Design Suite User Guide – Hi-Level Synthesis
以下の資料も参考にさせて頂きました。
https://www.slideshare.net/marsee101/vivado-hls1
ZYBOで遊ぼう日記まとめ
ZYBO関係の記事は、大まかな内容ごとに以下にまとめています。
https://wakky.tech/zybo/