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

ID 683152
日期 12/04/2023
Public
文档目录

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可将加载和存储指令结合到存储器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;
}
图 40. 从宽度方向合并组件width_manual的局部存储器