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

ID 683152
日期 6/22/2020
Public

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

文档目录

6.2. 实例:覆盖Banked存储器体系结构

将存储器体系结构以各种组合方式用于代码中,可支持覆盖 Intel® HLS Compiler Pro Edition针对组件推断的存储器体系结构。

以下代码实例演示如何使用存储器体系结构覆盖banked存储器,以节省FPGA上的存储器block:

  • hls_bankwidth(N)
  • hls_numbanks(N)
  • hls_singlepump
  • hls_doublepump

原始代码创建的两个bank的single-pumped片上存储器块为16位宽:

component unsigned short mem_banked(unsigned short raddr, unsigned short waddr,
              unsigned short wdata){ unsigned short data[1024]; data[2*waddr] = wdata; data[2*waddr
              + 9] = wdata +1; unsigned short rdata = data[2*raddr] + data[2*raddr + 9]; return
              rdata; } 

为节省banked存储器,可通过先添加以下属性然后声明data[1024]来实现一个bank的double-pumped 32-bit宽片上存储器块。这些属性将两个已使用一半的存储bank折叠成一个double-pumped的完全使用的存储bank,以便可以像访问两个已使用一半的存储bank一样迅速。

hls_bankwidth(2)
                hls_numbanks(1)hls_doublepump unsigned short
              data[1024];

或者,可在声明data[1024]前先添加以下属性来实现一个bank的single-pumped片上存储块从而避免double-pumped存储器的双时钟要求。但是,在该实例中,这些属性会将可停机仲裁添加到组件存储器中,这样会损害组件属性。

hls_bankwidth(2)
                hls_numbanks(1)hls_singlepump unsigned short
              data[1024];