PLRAM 配置和使用 - 2022.1 简体中文

Vitis 统一软件平台文档 应用加速开发 (UG1393)

Document ID
UG1393
Release Date
2022-05-25
Version
2022.1 简体中文

Alveo 加速器卡包含 HBM DRAM 和 DDR DRAM 存储器资源。在某些加速器卡中,另一个可供使用的存储器资源是内部 FPGA PLRAM(UltraRAM 和块 RAM)。支持平台通常在每个 SLR 内都包含 PLRAM 的实例。每个 PLRAM 的大小和类型均可先在目标平台上进行配置,然后再将内核或计算单元链接到系统。

您可以使用 Tcl 脚本来配置 PLRAM,然后再执行系统链接。在 v++ 命令行上可启用使用 Tcl 脚本,如下所示:
v++ -l --advanced.param compiler.userPreSysLinkOverlayTcl=<path_to>/user_tcl_file.tcl
在此用户指定的 Tcl 脚本内,提供了一个 API 以便您配置 PLRAM 实例或存储器资源:
sdx_memory_subsystem::update_plram_specification <memory_subsystem_bdcell> <plram_resource> <plram_specification>

<plram_specification> 是由以下条目组成的 Tcl 词典(以下条目为平台中每个实例的默认值):

 { 
	SIZE 128K # Up to 4M 
	AXI_DATA_WIDTH 512 # Up to 512
	SLR_ASSIGNMENT SLR0 # SLR0 / SLR1 / SLR2 
	READ_LATENCY 1 # To optimise timing path 
	MEMORY_PRIMITIVE BRAM # BRAM or URAM 
}

在以下示例中,PLRAM_MEM00 大小已更改为 2 MB,并由 UltraRAM 组成;PLRAM_MEM01 大小已更改为 4 MB,并由 UltraRAM 组成。PLRAM_MEM00PLRAM_MEM01 对应于 --conectivity.sp 存储器资源 PLRAM[0] 和 PLRAM[1]。

# Setup PLRAM 
sdx_memory_subsystem::update_plram_specification 
[get_bd_cells /memory_subsystem] PLRAM_MEM00 { SIZE 2M AXI_DATA_WIDTH 512 
SLR_ASSIGNMENT SLR0 READ_LATENCY 10 MEMORY_PRIMITIVE URAM} 

sdx_memory_subsystem::update_plram_specification 
[get_bd_cells /memory_subsystem] PLRAM_MEM01 { SIZE 4M AXI_DATA_WIDTH 512 
SLR_ASSIGNMENT SLR0 READ_LATENCY 10 MEMORY_PRIMITIVE URAM} 

validate_bd_design -force
save_bd_design

READ_LATENCY 是一个重要的属性,因为它用于设置深度级联存储器之间的流水线级数。这因设计而异,并影响平台的时序 QoR 和最终的内核时钟速率。在以上 PLRAM_MEM01 示例中:

  • 共需要 4 MB 的存储器。
  • 每个 UltraRAM 为 32 KB(64 位宽)。4 MB × 32 KB → 共计 128 个 UltraRAM。
  • 每个 PLRAM 实例为 512 位宽 → 宽度中需要 8 个 UltraRAM。
  • 总共 128 个 UltraRAM,宽度含 8 个 UltraRAM → 深度中含 16 个 UltraRAM。
  • 有一条经验法则很有用,即选择深度/2 + 2 的读取时延,在此情况下 READ_LATENCY = 10。

这样即可每隔一个 UltraRAM 设置一条流水线,从而产生以下结果:

  • UltraRAM 间能实现良好的时序性能。
  • 布局灵活性;并非所有的 UltraRAM 都需要布局在同一个 UltraRAM 列中进行级联。