仅对英特尔可见 — GUID: zoi1566394507337
Ixiasoft
7.1. 实例:覆盖组合式存储器架构
在代码中以各种组合方式使用存储器属性,可允许覆盖 Intel® HLS Compiler Pro Edition针对组件推断的存储器架构。
以下代码实例演示如何使用存储器架构覆盖组合存储器,以节省FPGA上的存储器块:
- hls_bankwidth(N)
- hls_numbanks(N)
- hls_singlepump
- hls_max_replicates(N)
原始代码组合两个存储器访问,形成一个存储器系统,其为256个位置深乘以64位宽(256x64位)(两个片上存储器块):
component unsigned int mem_coalesce_default(unsigned int raddr, unsigned int waddr, unsigned int wdata){ unsigned int data[512]; data[2*waddr] = wdata; data[2*waddr + 1] = wdata + 1; unsigned int rdata = data[2*raddr] + data[2*raddr + 1]; return rdata; }
下图显示代码实例的256x64位存储器结构,以及高级设计报告(report.html)中显示的组件存储器结构
图 33. 针对mem_coalesce_default生成的存储器结构
![]() |
已修改的代码会实现单个片上存储器块,该存储快为512字深乘以32位宽且可停顿仲裁:
component unsigned int mem_coalesce_override(unsigned int raddr, unsigned int waddr, unsigned int wdata){ //Attributes that stop memory coalescing hls_bankwidth(4) hls_numbanks(1) //Attributes that specify a single-pumped single-replicate memory hls_singlepump hls_max_replicates(1) unsigned int data[512]; data[2*waddr] = wdata; data[2*waddr + 1] = wdata + 1; unsigned int rdata = data[2*raddr] + data[2*raddr + 1]; return rdata; }
下图显示代码实例512x32位可停机仲裁的存储器结构,以及高级设计报告(report.html)中显示的组件存储器结构。
图 34. 针对mem_coalesce_override生成的存储器结构
![]() |
虽然看起来可通过减少组件所需要的RAM块数量来节省硬件面积,但引入可停机仲裁会增加实现组件所需要的硬件数量。以下表格中,可比较组件所需的ALM和FF数量。
