总结 - 2021.2 Chinese

Vitis 高层次综合用户指南 (UG1399)

Document ID
UG1399
Release Date
2021-12-15
Version
2021.2 Chinese

以可推断突发的方式来编写代码。确保满足所有前置条件。

突发并不意味着一次性得到所有数据,意义在于将多个请求合并为单个请求,但数据将按顺序逐一到达。

理想突发长度为 16,但突发长度即使为 8 也足以应对。突发越大时延越长,较短的突发可采用流水打拍。请勿将突发与流水打拍相混淆,但请注意,多个突发相互间可采用流水打拍方式来执行。

如果突发为固定长度,那么您可展开用于推断突发的内层循环,而对外层循环执行流水打拍。这样将在保持突发长度不变的同时,在突发之间达成流水打拍,从而提升吞吐量。

要提升吞吐量,请集中精力将接口拓宽至 512 位,而不是简单地加长突发。

相比于 AXI Interconnect,突发越大,优先级越高。在内核内部不执行动态仲裁。

您可将 2 个 m_axi 端口连接到同一个 DDR,以便对内核内部互斥的访问进行建模,但内核外部的 AXI Interconnect 将对完成请求进行仲裁。

绕过无序访问限制的变通方法之一是在 BRAM 中创建您自己的缓冲器、将突发存储在该缓冲器内,然后使用该缓冲器来执行无序访问。这是视频处理中常用的最优化技巧,通常称为行缓冲器 (line buffer)。

请复查 综合汇总 报告的“突发最优化”部分,了解有关设计中的突发最优化的更多信息以及有关错失突发机会的信息。如果在设计中并未发生自动突发,则可使用 hls::burst_maxi 数据类型执行手动突发,如 使用手动突发 中所述。