2022/12/04

create hls project for kv260

XILINX   

Tonda TranによるPixabayからの画像

簡単なHLSのプロジェクトを作成する

Vitis HLSプロジェクト作成

vitisを起動して、Project nameとWorkspaceを設定する。

Project nameはadd、Workspaceは任意の場所に設定する。Nextをクリックする

Add/Remove Design Filesは、何も設定せずに、Nextをクリックする

Add/Remove Testbench Filesも何も設定せずに、Nextをクリックする

Solution Configurationは、Part Selectionで、Partsをクリックして、Searchに、xck26と入力して、 xck26-sfvc784-2LV-cを選択して、OKをクリックする。このPartsがKRIAのPartsだ。

本当は、BoardでKriaのBoardを指定したが、ビルドでエラーになったので、Partsで指定することとする。

FPGAの部屋に対処方法が記載されている

https://marsee101.blog.fc2.com/blog-entry-5387.html

Flow Targetは、Vitis Kernel Flow Targetを選択する。これで基板上で動作させたい。Finishをクリックする。

Projectが生成できた。

ソースコードの追加

add->sourceで、New Source Fileを選択して、ファイルを追加する。名前はkernel_add.cとする

kernel_add.cの中身は、加算を行う。

#include <stdio.h>
#include "kernel_add.h"
void kernel(int a[NUM], int b[NUM], int c[NUM]) {
	int i;
	for (i=0;i<NUM;i++) {
		c[i] = a[i] + b[i];
	}
	return;
}

ヘッダファイルも追加する

ヘッダファイルの中身は、Kernel関数定義だ。

#define NUM (4)
void kernel(int *a, int *b, int* c);

add->Test Benchで、New Test Bench Fileを選択して、ファイルを追加する。名前は、kernel_add_tb.cとする

テストベンチは、kernel関数を呼び出す部分だ。

#include <stdio.h>
#include "kernel_add.h"
int main(int argc, char** argv)
{
  int a[NUM];
  int b[NUM];
  int c[NUM];
  int i;

  for (i=0;i<NUM;i++) {
	  a[i] = i;
	  b[i] = NUM -i;
  }

  kernel(a, b, c);

  for(i=0;i<NUM;i++) {
	  if(c[i] != a[i] + b[i]) {
		  printf("error %d %d %d %d",i, a[i],b[i],c[i]);
		  return -1;
	  }
  }
  printf(" test ok");
}

プロジェクトの設定とビルド

Project->Project Settingsをクリックします。

Synthesis- Top Functionに、kernelと入力します。合成する関数(Hardware化する関数)を選択します。OKをクリックします。

Run C Simulationを実行します。C言語レベルで実行されていると思う。

ログをみると、test okになっていることがわかります。

Run C synthesisを実行します。これでHardware化していると思う。

実行すると、Synthesisのレポートが表示される

最後に、Run Cosimulationを実行する。C言語とHardware化されたモジュールでシミュレーションしてくれていると思う。

成功するとCosimulationのレポートが表示される

これで、ビルドOKで、単体テストもOKだと思うので安心。

Export

最後に、生成されたKernel関数をExportする。たぶん、Exportしたバイナリを他のものと合わせて、リンクしてバイナリを作成して、KV260に転送するんじゃないかなぁと思う。

Export Formatで、Vitis Kernelを指定します。OKをクリックします。

add/solution1/impl/export.xoというファイルが生成されました。たぶん、このファイルを使用するのだと思います。

基板でうごくだろうか。

使用したファイルをアップしておく

https://github.com/y38y38/hls_kernel_add

Prev:«

Next: »