Intel® 高层次综合编译器专业版Pro版: 参考手册

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

3.3.1. 模板函数

使用模板函数作为HLS组件与使用模板函数作为HLS任务不同。

模板函数作为HLS组件

创建模板函数时,必须声明要综合到硬件中的函数实例。

例如,模板multadd函数可能在系统中有用。
template <typename T, int MULT>
T multadd (T a, T b) {
  return MULT * (a + b);
}
要将此函数的某个版本综合到组件中,您必须声明要综合的实例:
template component int multadd<int, 5>(int a, int b);

此声明与先前的模板定义相结合,标志着int变体通过multiadd函数中的MULT=5而生成为组件。现在可以从测试台调用此组件。

模板函数作为HLS任务

如果要将该函数在任务系统中作为任务使用,请使用ihc::launchihc::collect调用,如下实例所示:

component void foo () {
  int a, b;
  ihc::launch<multadd<int, 5>> (a, b);
  int res = ihc::collect<multadd<int, 5>>();
}