关于在 vitis hls 上使用 c 而不是 c++ 的限制的问题

问题描述 投票:0回答:1

所以我对 vitis hls 还很陌生,但我已经阅读了大部分文档,并且我担心使用 C 而不是 C++ 是否会有限制。我已经相当习惯使用 C 并且多年来一直使用它进行编码并且从未真正使用过 C++ 但我知道它的主要目的是在 C 中实现 OOP。我关于 C 是否受 vitis hls 限制的问题是使用这样的类作为 hls::task、hls::stream 和 hls::stream_of_blocks。我想如果我想在我的 IP 块上实现一个 AXIS 接口,我必须使用 hls::stream 定义数据(输入/输出),假设我的函数的输入是“int a”,我随后会使用# pragma HLS interface axis depth=50 port=a offset=off 为输入端口a定义我的接口。

我担心的是,由于代码在 C 中,它无法识别 hls 中的类,即 hls::stream。因此,我想知道这是否真的是我需要提防的问题,或者它是否只是缺乏理解的疏忽。这也有助于我知道我是否应该继续使用 C 工作或将我的代码转换为 C++(在学习 C++ 之后)。

感谢您的帮助!

xilinx vivado vivado-hls vitis-ai
1个回答
0
投票

您可以在 Vitis 或 Vivado HLS 中编写 C 代码并使用 HLS 库,因为它们旨在与 C/C++ 代码兼容。但是,有几点需要考虑:

  1. 使用 HLS 库时,您需要为您的项目使用 C++ 编译器。这意味着您的源文件应该有一个“.cpp”扩展名,即使您主要使用 C 代码也是如此。

  2. 为确保您的 C++ 代码和 C 代码之间的兼容性,您可以使用以下代码块:

   #ifdef __cplusplus   
   extern "C" {
   #endif
            
        // Your C code that uses HLS libraries
            
   #ifdef __cplusplus   
   } 
   #endif
  1. 请记住,在使用 HLS 库时,您应该像在编写 C++ 代码一样对待它们,即使您的其余代码主要是基于 C 的。

  2. 如需了解更多信息,请参阅《Vivado Design Suite 用户指南》第 3 章,标题为“高级综合编码样式”。

    https://docs.xilinx.com/v/u/en-US/ug902-vivado-high-level-synthesis

© www.soinside.com 2019 - 2024. All rights reserved.