7.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;
}
图 39. 实现组件width_manual的局部存储器
该情况下, Intel® HLS Compiler Pro Edition可将加载和存储指令结合到存储器a和b,因为他们的访问的地址相同,如下所示。
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;
}
图 40. 从宽度方向合并组件depth_manual的局部存储器