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をやってみようと思います。

いいなと思ったら応援しよう!