Intel® High Level Synthesis Compiler Pro Edition: 用户指南

ID 683456
日期 12/04/2023
Public
文档目录

6.3.2. 显式函数调用和排队函数调用的比较

ihc_hls_enqueueihc_hls_enqueue_noret函数允许在组件启动间隔(II)为1的情况下,通过流水线方式在每个周期开始新的组件调用。如果组件II大于1,那么下一次组件调用将在II个周期后开始。

无enqueue函数调用的组件dut信号波形图显示了组件dut的信号波形。测试台不包括任何enqueue函数调用。

#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的信号波形图
包含排队函数调用的组件dut的信号波形图显示了当测试台包含排队函数调用时组件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;
      ihc_hls_enqueue(&x1, &dut, 1, 2);
      ihc_hls_enqueue(&x2, &dut, 3, 4);
      ihc_hls_enqueue(&x3, &dut, 5, 6);
      
      ihc_hls_component_run_all(&dut);
      
      printf("x1 = %d, x2 = %d, x3 = %d\n", x1, x2, x3);
      
      return 0;
}
图 3. 包含排队函数调用的组件dut的信号波形图