VivadoHLSを使ってみる
インストールが終わったので早速使ってみます。
VivadoHLSを開くとこんなかんじ。
一番初めなのでCreate New Projectでプロジェクトを作ります。
適当なproject nameをつけて、作業フォルダを選択。
まだ何も作ってないので何も選択せずにNext。
既存のCコードがあったらここで読み込ませて、Top関数名を選択しておいて良いのかも。後でもできるけど。
テストベンチファイルもまだないのであとで。Nextを押す。
クロックやデバイス選択。
今はまだデフォルトのままにしておきます。finishを押せば設定完了です。
ほんとーに、かんたんな掛け算(a×b)から始めてみます。
まずはモジュール本体となるソースファイル作り。
左のExplorerタブ→Source→New File...で新しいファイルを作ります。
Sourceファイルの名前はtest.cppとして、中身はこんなかんじ。
#include "test.h"
#include "ap_int.h"
int test(int a, int b)
{
int result;
result=a*b;
return(result);
}
次はインクルードファイルを作ります。
インクルードファイルはわざわざExplorerのIncludesのNewFileから加えなくてもいいみたいなので、上のFile→NewFileから作って同じ階層に保存しておくことにします。そうするとincludesにいつの間にか入ってます。
インクルードファイルのファイル名はtest.hにしよう。
#ifndef _TEST_
#define _TEST_
int test(int, int);
#endif
あとはテストベンチ。左のExplorerタブからTest Bench→NewFile...で新しいファイルを開いてmain.cppという名前で保存します。
コードは以下。
#include <stdio.h>
#include "test.h"
int main()
{
int a, b; //input parameter
int exp_dat[5]={1, 4, 9, 16, 25};
int result, i;
bool pass;
a = 1;
b = 1;
for (i=0; i<5; i++)
{
result = test(a, b);
printf("%d*%d = %d \n", a, b, result);
if (result == exp_dat[i])
pass = 1;
else
pass = 0;
a=a+1;
b=b+1;
}
if (pass)
{
fprintf(stdout,"----------Pass!------------\n");
return 0;
}
else
{
fprintf(stderr,"----------Fail!------------\n");
return 1;
}
}
準備はだんだん整ってきました。
Csimの前に、Vivadoさんに合成対象の関数を教えてあげます。
Project→ProjectSetting→Synthesisを選択してTop Functionに合成対象の関数名を指定します。BrowseとやるとSourceに書かれている関数一覧が出るのでそこで選択。
これで準備は完了!
次は、Csimulationとsynthesisをやってみようと思います。