【Vivado HLS】平均計算を高位合成する(Cソース作成~Cシミュレーション)

前回はVivado HLSのプロジェクトを作成しました。

【Vivado HLS】平均計算を高位合成する(プロジェクト作成)

今回は2つの整数の平均値を計算するC言語ソースとCシミュレーションまで行います。

1.画面左側、Explorerエリアの”Source”を右クリック→New File… からC言語ソースファイルを追加します。

Vivado HLS 高位合成 Cシミュレーション

2.同様に、ヘッダファイル(拡張子”.h”)を追加。Explorerエリアの”Test Bench”にテストベンチソースファイル(C言語)を追加します。全て追加した状態が下画像です。

Vivado HLS 高位合成 Cシミュレーション
3.以下が今回追加するソースです。

void average(int data0, int data1, int* ave)
{
    *ave = (data0 + data1) / 2;
}
void average(int data0, int data1, int* ave);
#include <stdio.h>
#include <stdlib.h>

int main()
{
    int testData0, testData1, testAve, cmpAve;

    srand(10);

    for (int i = 0; i &lt; 10; i++) {
        // ランダムデータ生成
        testData0 = rand();
        testData1 = -rand();
        // 平均計算
        average(testData0, testData1, &amp;testAve);
        // 比較値生成
        cmpAve = (testData0 + testData1) / 2;
        // 計算結果が異なったらエラー表示
        if (testAve != cmpAve) {
            printf("[error:i=%d] cmp=%d, test=%d\n", i, cmpAve, testAve);
            goto LABEL_TEST_END;
        }
    }
    // これが表示されたら正常終了
    printf("test OK!\n");

LABEL_TEST_END:

    return 0;
}

4.”Run C Simulation”アイコンをクリックすると”C Simulation Dialog”が表示されます。ダイアログの設定項目がいくつかありますが、今回は特に設定しません。

Vivado HLS 高位合成 Cシミュレーション

5.以下がシミュレーション終了後のConsoleエリアの表示抜粋です。テストベンチで記述した”test OK!”が表示されています。

INFO: [APCC 202-1] APCC is done.
   Generating csim.exe
test OK!
INFO: [SIM 211-1] CSim done with 0 errors.
INFO: [SIM 211-3] *************** CSIM finish ***************
Finished C simulation.

ちなみにわざとエラーが生じるよう、比較値が異なるようにテストベンチを変更すると、きちんとエラーとなりました(2回目のテストでコンペアエラー)。問題なくシミュレーションが行えているようです。

	//// 比較値生成
	//cmpAve = (testData0 + testData1) / 2;
	// わざと間違える
	cmpAve = (testData0 + testData1) / 2 + i;
INFO: [APCC 202-1] APCC is done.
   Generating csim.exe
[error:i=1] cmp=-5210, test=-5211
INFO: [SIM 211-1] CSim done with 0 errors.
INFO: [SIM 211-3] *************** CSIM finish ***************
Finished C simulation.

次: 【Vivado HLS】平均計算を高位合成する(C合成~C/RTL協調シミュレーション)

シェアする

  • このエントリーをはてなブックマークに追加

フォローする