Intel®高层次综合编译器专业版: 最佳实践指南

ID 683152
日期 6/22/2020
Public

本文档可提供新的版本。客户应 单击此处 前往查看最新版本。

文档目录

6.3.2. 实例:从宽度方向合并存储器

使用hls_merge("<mem_name>","width") 属性强制 Intel® HLS Compiler Pro Edition在同一存储系统中实现变量,从宽度方向合并存储器。

hls_merge属性都设置了<mem_name>标签的所有变量进行合并。

考虑以下组件代码:

component short width_manual (int raddr, int waddr, short wdata) { short a[256];
              short b[256]; short rdata = 0; // Lock step write a[waddr] = wdata; b[waddr] = wdata;
              // Lock step read rdata += a[raddr]; rdata += b[raddr]; return rdata; }
图 16. 实现组件width_manual的局部存储器

该情况下, Intel® HLS Compiler Pro Edition可将加载和存储指令结合到存储器ab,因为他们的访问的地址相同,如下所示。

component short width_manual (int raddr, int waddr, short wdata) { short a[256]
                hls_merge("mem","width");
              short b[256] hls_merge("mem","width"); short rdata = 0; // Lock step write a[waddr] = wdata;
              b[waddr] = wdata; // Lock step read rdata += a[raddr]; rdata += b[raddr]; return
              rdata; }
图 17. 从宽度方向合并组件depth_manual的局部存储器