インテルのみ表示可能 — GUID: ewa1462824715524
Ixiasoft
6.3.2. 明示的な比較およびエンキュー関数コール
エンキュー関数は、コンポオーネントがコンポーネントのイニシエーション・インターバル (II) が 1 でパイプライン化できる場合、各サイクルを開始するためにコンポーネントの新しい呼び出しが可能です。コンポーネント II が 1 より大きい場合、コンポーネント呼び出しは II サイクル後ごとに開始します。
図 2 ( 図 -2 ) はコンポーネントdutでの信号波形を示します。この例の抜粋したコードで示すように、テストベンチにはエンキュー関数コールが含まれていません。
#include "HLS/hls.h"
#include <stdio.h>
component int dut(int a, int b) {
return a*b;
}
int main (void) {
int x1, x2, x3;
x1 = dut(1, 2);
x2 = dut(3, 4);
x3 = dut(5, 6);
printf("x1 = %d, x2 = %d, x3 = %d\n", x1, x2, x3);
return 0;
}
図 2. エンキュー関数コールを使用しないコンポーネント dut での信号波形

図 3 ( 図 -3 ) はコンポーネントdutでの信号波形を示します。この例の抜粋したコードで示すように、テストベンチにはエンキュー関数コールが含まれています。コンポーネントがどのように各クロックサイクルで新しいデータを渡すのかを前の波形と比較します。
#include "HLS/hls.h"
#include <stdio.h>
component int dut(int a, int b) {
return a*b;
}
int main (void) {
int x1, x2, x3;
ihs_hls_enqueue(&x1, &dut, 1, 2);
ihs_hls_enqueue(&x2, &dut, 3, 4);
ihs_hls_enqueue(&x3, &dut, 5, 6);
ihs_hls_component_run_all(&dut);
printf("x1 = %d, x2 = %d, x3 = %d\n", x1, x2, x3);
return 0;
}
図 3. エンキュー関数コールを使用したコンポーネント dut での信号波形
