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

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

11.3.1. 从HLS代码创建对象

使用fpga_crossgen命令,可从HLS代码针对您的库创建对象。从HLS代码创建的对象包含模拟对象中的函数和为对象函数合成硬件所需的信息。

限制: 仅Linux操作系统支持从HLS代码创建目标文件。

fpga_crossgen命令会从一个输入源文件创建一个对象文件。创建的对象只能用于针对相同Intel高层设计工具的库。

按照您 Intel® HLS Compiler安装的版本号为对象分配相同的版本号。库只能包含具有相同版本号的对象,并且只能与同一版本号的Intel高层设计工具一起使用。

需要导出到库的所有HLS代码的函数都必须使用HLS_EXTERNAL宏进行定义。例如:
extern "C" HLS_EXTERNAL int my_hls_func(int x);
切记: 请确保您HLS源代码的函数不要通过HLScomponent关键字进行声明。
使用以下命令创建库对象:
fpga_crossgen <source_file> --target target_HLD_tool [-o <object_file_name>] [i++ command options}
其中命令参数定义如下:
  • target_HLD_tool
    该库使用的目标 Intel® 高层设计工具。此参数可以具有以下值之一:
    • hls

      将此对象包含到使用 Intel® HLS Compiler开发的组件的库中。

      针对 Intel® HLS Compiler构建的对象是按照特定系统对象文件(Linux上为.o)而创建。不能将通过 Intel® HLS Compiler在某个操作系统上创建的对象在不同的操作系统上运行。

    • aoc

      将此对象包含在通过 Intel® FPGA SDK for OpenCL™ 开发的内核(kernel)的库中。

      针对 Intel® FPGA SDK for OpenCL™ 构建的对象不特定于操作系统。这些对象按照 Intel® FPGA SDK for OpenCL™ 目标文件(.aoco)二创建。

      您必须已经安装了 Intel® FPGA SDK for OpenCL™ Pro版才能使用此选项。SDK的版本必须与您的 Intel® HLS Compiler版本相同。

  • i++命令选项

    您可以指定任何需要的 Intel® HLS Compiler命令(i++)选项来编译库对象。关于 Intel® HLS Compiler命令选项,请参阅Intel HLS Compiler Pro版命令选项

    限制:
    您无法指定--simulator none i++命令选项。目标文件必须包含模拟信息。如果指定--simulator none i++命令选项,则fpga_crossgen命令失败,并显示类似以下的错误消息:
    objcopy: error: the input file 'my_library_file.o' has no sections

如果您没有通过-o选项指定目标文件名,则该目标文件名默认与源文件名同名。

生成要包含在库中的所有对象后,通过fpga_libtool命令收集库中的对象。请参阅将对象文件打包到库中了解详细信息。