文档目录

13.6. Intel® HLS Compiler Pro版组件存储器属性

使用组件存储器属性来控制组件的片上组件存储器架构。

表 42.   Intel® HLS Compiler Pro版组件存储器属性总结
存储器属性 描述
hls_force_pow2_depth 指定实现变量或数组的存储器的深度为2的幂(power-of-2)。
hls_register 强制变量或数组在寄存器中通过管道传输。

寄存器变量既可以专门在触发器(FF)中实现,也可以在FF和基于RAM的FIFO混合体中实现。

hls_memory 强制将变量或数组实现为嵌入式存储器。
hls_memory_impl 强制将变量或数组实现为特定类型的嵌入式存储器。
hls_singlepump 指定实现变量或数组的存储器必须与访问存储器的组件具有相同的时钟速率。
hls_doublepump 指定实现变量或数组的存储器必须以访问存储器的组件速率的两倍计时。
hls_numbanks 指定实现变量或数组的存储器具有定义数量的存储器bank。
hls_bankwidth 指定实现变量或数组的存储器必须具有定义宽度的存储器bank。
hls_bankbits 强制将存储器系统拆分成定义数量的存储器bank,并定义用于选择存储器bank的位。
hls_simple_dual_port_memory 指定实现变量或数组的存储器不应具有同时提供读写服务的端口。
hls_merge (深度范畴) 允许将两个或多个局部变量合并,以深度方式在组件存储器中实现为单个合并存储器系统。
hls_merge (宽度范畴) 允许将两个或多个局部变量合并,以宽度方式在组件存储器中实现为单个合并存储器系统。
hls_init_on_reset 当组件reset信号置位后,强制组件内部的静态变量初始化。
hls_init_on_powerup 设置实现静态变量的组件存储器,以便在FPGA被编程时能在上电过程中进行初始化。
hls_max_concurrency
Deprecated: 此属性已弃用,并将在未来的版本中被删除。使用 hls_private_copies存储器属性取而代之。
指定实现变量或数组的存储器具有定义数量的专用副本(private copy),以允许在任何给定时间进行循环的并发迭代。
hls_max_replicates 指定实现变量或数组的存储器具有的replicate数不超过指定数量,以便能够从数据路径同时读取
hls_private_copies 指定实现变量或数组的存储器具有定义数量的专用副本(private copy),以允许在任何给定时间进行循环的并发迭代。

hls_force_pow2_depth存储器属性

句法
hls_force_pow2_depth(N)
约束
N仅可为01
默认值
1
描述
指定实现变量或数组的存储器深度为2的幂。如果N1那么该选项使能;如果N0则该选项被禁用。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/tutorials/component_memories/non_power_of_two_memory

hls_register存储器属性

句法
hls_register
约束
N/A
默认值
根据编译器推断的存储器访问模式。
描述
强制将变量或数组实现为寄存器。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/tutorials/best_practices/swap_vs_copy

hls_memory存储器属性

句法
hls_memory
约束
N/A
默认值
根据编译器推断的存储器访问模式。
描述
强制将变量或数组实现为嵌入式存储器。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_implementation

hls_memory_impl存储器属性

句法
hls_memory_impl("type")
约束
N/A
默认值
根据编译器推断的存储器大小和存储器访问模式。
描述

强制将变量或数组实现为特定类型的嵌入式存储器。

type参数可以是下列值之一:
BLOCK_RAM
将变量或数组实现为存储器模块,例如 M20K存储器模块。
MLAB
将变量或数组实现为存储器逻辑阵列块(MLAB)。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_implementation

hls_singlepump存储器属性

句法
hls_singlepump
约束
N/A
默认值
根据编译器推断的存储器访问模式。
描述
指定实现变量或数组的存储器必须与访问存储器的组件以相同的速率计时。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/QRD

hls_doublepump存储器属性

句法
hls_doublepump
约束
N/A
默认值
根据编译器推断的存储器访问模式。
描述
指定实现变量或数组的存储器必须以访问存储器的组件速率的两倍计时。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_bank_configuration

hls_numbanks存储器属性

句法
hls_numbanks(N)
约束
此属性受到存储器Bank的属性约束中概述的约束限制。
默认值
根据编译器推断的存储器访问模式。
描述
指定实现变量或数组的存储器必须具有N个bank,其中N是2的幂次方常数。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_geometry

hls_bankwidth存储器属性

句法
hls_bankwidth(N)
约束
此属性受到存储器Bank的属性约束中概述的约束限制。
默认值
根据编译器推断的存储器访问模式。
描述
指定实现变量或数组的存储器必须具有N个字节宽,其中N是2的幂次方常数。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_geometry

hls_bankbits存储器属性

句法
hls_bankbits(b 0 , b 1 , ..., b n )
约束
此属性受到存储器Bank的属性约束中概述的约束限制。
默认值
根据编译器推断的存储器访问模式。
描述
强制存储器系统分裂成2个n+1 bank,通过{b 0 , b 1 , ..., b n }形成bank选择位。
重要: b 0 , b 1 , ..., b n 必须是连续的正整数。您可以按升序或降序指定连续的正整数。

如果您没有在指定该属性的同时指定hls_bankwidth(N)属性,则b 0 , b 1 , ..., b n 映射到存储器bank实现中的数组索引位0n-1

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_geometry

hls_simple_dual_port_memory存储器属性

句法
hls_simple_dual_port_memory
约束
N/A
默认值
N/A
描述
指定实现变量或数组的存储器不应该具有同时提供读和写服务的端口。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_bank_configuration

hls_merge (depthwise) 存储器属性

句法
hls_merge("mem_name", "depth")
约束
N/A
默认值
N/A
描述
允许将两个或多个局部变量合并,以深度方式在组件存储器中实现为单个合并存储器系统。

所有以相同的<mem_name>标记指定其hls_merge属性的变量, 都被合并到同一个存储器系统中。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_merging

hls_merge (widthwise)存储器属性

句法
hls_merge("mem_name", "width")
约束
N/A
默认值
N/A
描述
允许将两个或多个局部变量合并,以宽度方式在组件存储器中实现为单个合并存储器系统。

所有以相同的<mem_name>标记指定其hls_merge属性的变量, 都被合并到同一个存储器系统中。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_merging

hls_init_on_reset存储器属性

句法
hls_init_on_reset
约束
N/A
默认值
静态变量的默认行为
描述
当组件reset信号被置位时,强制初始化组件内部的静态变量。该操作需要为组件存储器实现提供额外的写端口,并且可能会增加组件复位时的上电延迟。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/tutorials/component_memories/static_var_init.

hls_init_on_powerup存储器属性

句法
hls_init_on_powerup
约束
N/A
默认值
N/A
描述
设置实现静态变量的组件存储器,以便在编程FPGA时上电初始化。当组件复位时,组件存储器不会复位到静态的初始化值。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/examples/tutorials/component_memories/static_var_init

hls_max_concurrency存储器属性

已弃用: 此属性已弃用,并将在未来版本中删除。使用 hls_private_copies存储器属性取而代之。
句法
hls_max_concurrency(N)
约束
N/A
默认值
N/A
描述
指定实现变量或数组的存储器具有N 个专用副本,以允许在任何给定时间内循环的N个并发迭代。

仅当变量的范围(通过其声明或访问模式)被限制为循环时才应用此属性。如果将具有max_concurrency预处理指令的循环应用于该命令时,创建的专用副本数量是hls_max_concurrency存储器属性值和max_concurrency预处理指令值之中的较小者。

hls_max_replicates存储器属性

句法
hls_max_replicates(N)
约束
N/A
默认值
N/A
描述
指定实现变量或数组的存储器具有的复制副本的数量不多于N 个复制副本,从而实现从数据路径的同时读取。

要了解更多信息,请查看以下教程: <quartus_installdir>/hls/tutorials/component_memories/memory_bank_configuration

hls_private_copies存储器属性

句法
hls_private_copies(N)
约束
N/A
默认值
N/A
描述
指定实现变量或数组的存储器具有N个专用副本以允许在任何给定时间内循环的N次并发迭代。

仅当变量的范围(通过其声明或访问模式)被限制为循环时才应用此属性。如果将具有max_concurrency预处理指令的循环应用于该命令时,创建的专用副本数量是hls_private_copies存储器属性值和max_concurrency预处理指令值之中的较小者。