研讨会回放|AMD Vitis™ HLS 研讨会精彩回放及问题详解

在 2023 年 12 月 23 日举行的在线研讨会|利用编译器指令提升 AMD Vitis™ HLS 设计性能的网络研讨会中,我们介绍了 AMD Vitis™ HLS,了解了不同类型的优化指令以及它们如何影响综合结果,探索了有助于分析和可视化结果的不同分析器,并演示了设计 Demo 并演示优化指令的应用以创建一系列 IP 解决方案。

本次研讨会中我们收到了来自广大用户和网友的热情提问,针对代表性较强的问题,专家在线进行了集中答疑,研讨会后我们另精选出部分高频问题在本文中做出进一步解答。若您需要学习全部直播内容,欢迎点击观看回放。

答疑专家:

Lauren Gao(高亚军)

AMD 资深战略应用工程师

1. 您好,HRS 在实现图像数据统计的时候的问题, 因为图像统计的时候需要,需要反复对 RAM 的同一个地址进行读写操作,但是 RAM 同一个地址的读写需要两个周期来完成,对于 RTL 代码来说,我们可以用乒乓两个 RAM 来实现每个周期都可以操作同一个地址,但是 HLS 要如何实现呢?

C/C++ 是从算法级来考虑的,而 RTL 要从时序角度考虑,用 HLS 实现要考虑的是如何将算法用 C/C++ 高效描述出来。这种对 RAM 的读写操作从 C/C++ 角度来看就是对数组的访问。算法该如何访问就如何访问,RTL 细节工具会根据算法要求进行转化。

2. RTL 协同仿真,您的 PPT 里展示有波形,是需要写 Verilog 的 Testbench 吗,还是 C 的 Testbench 转换了呢?

不需要。只需要提供 C Testbench 即可。工具会根据 C Testbench 生成 RTL 仿真所需要的激励。

3. 如果要做基于 FPGA 的算法加速,便于优化,是否应该优先考虑用 HLS 实现核心模块呢?

是的。先考虑核心模块,看核心模块采用 HLS 能带来多大收益(资源,速度)。

4. 请问综合报告里的 Slack 什么含义,有负值需要解决吗?

Slack = Target - (Estimated + Uncertainty),如果 Slack 小于0,说明设计无法达到期望的 Fmax(Target 对应的时钟频率),只有当 Slack 大于等于0时,时序收敛。Vitis HLS Synthesis 报告里 Slack 若为负,可以运行后续的 AMD Vivado™ Synthesis/Implementation,如果 Vivado 仍为负就需要回到 Vitis HLS 下优化。

5. 一个函数内有 loop1、loop2、loop3,loop1 产生 temp 变量会用于 loop2 和 loop3,这样整个函数不可以使用 dataflow,之前您说过可以把 temp 复制成temp2、temp3 分别应用进 loop2、loop3,这样就可以 DATAFLOW,这是必须要修改源码吗?有没有什么指令也有识别并复制变量的作用呢?

是的,要修改代码。DATAFLOW 要遵循一个 producer 对应一个 consumer 原则。

6. 最新的 Vitis HLS 还会用 system gen 模型吗?

Vitis HLS 可将生成的 RTL 代码封装为 SysGen 所支持的 IP 形式。

最新文章

最新文章