Intel® 高层次综合编译器专业版Pro版: 参考手册

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

13.17. Intel® HLS Compiler Pro版存储器映射接口

使用mm_host对象和模板参数明确声明组件的 Avalon® Memory-Mapped (MM) Host接口

表 57.   Intel® HLS Compiler Pro版存储器映射接口总结
模板对象或参数 描述
ihc::mm_host 底层指针类型
ihc::dwidth 存储器映射数据总线的宽度(以位为单位)。
ihc::awidth 存储器映射地址总线的宽度(以位为单位)。
ihc::aspace 与主机关联的接口的地址空间。
ihc::latency 从读取命令退出组件到外部存储器返回有效读取数据之间的保证延迟。
ihc::maxburst 与读或写事务相关的数据传输的最多个数。
ihc::align 基指针地址对齐(以字节为单位)。
ihc::readwrite_mode 接口的端口方向
ihc::waitrequest

添加waitrequest信号,该信号在agent(代理)无法响应读或者写请求时置位该信号。

getInterfaceAtIndex 该测试台函数用于mm_host对象中的索引。

ihc::mm_host模板对象

句法
ihc::mm_host<datatype, template parameter >
有效值
任何有效的C++数据类型
默认值
指针参数的默认接口
描述
底层指针类型。在主机对象上执行的指针算法符合此类型。主机解除引用引用会导致宽度为sizeof(datatype)的存储站点。默认对齐是与数据类型的大小对齐。

您可以任意组合使用多个模板参数,只要参数组合描述了有效的硬件配置。

实例:
component int dut(
 ihc::mm_host<int, 
   ihc::aspace<2>, ihc::latency<3>,
   ihc::awidth<10>, ihc::dwidth<32>
  > &a)
要了解更多详细信息,请参阅如下教程:
  • <quartus_installdir>/hls/examples/tutorials/interfaces/pointer_mm_host
  • <quartus_installdir>/hls/examples/tutorials/interfaces/mm_host_testbench_operators

ihc::dwidth模板参数

句法
ihc::dwidth<value>
有效值
8, 16, 32, 64, 128, 256, 512或1024
默认值
64
描述
存储器映射数据总线的宽度(以位为单位)。

ihc::awidth模板参数

句法
ihc::awidth<value>
有效值
1 – 64范围内的整数值
默认值
64
描述
存储器映射地址总线的宽度(以位为单位)。

此值仅影响 Avalon® MM主机接口的宽度。基地址指针的管道大小始终设置为64位。

ihc::aspace模板参数

句法
ihc::aspace<value>
有效值
大于0的整数值。
默认值
1
描述
与主机关联的接口的地址空间。每个唯一 value 会导致组件上出现单独的Avalon MM Host接口。所有具有相同地址空间的主机在组件内被仲裁到单个接口。因此,这些主机必须共享描述接口的相同模板参数。

ihc::latency模板参数

句法
ihc::latency<value>
有效值
非负整数值
默认值
1
描述
当外部存储器返回有效读取数据,到从读取命令退出组件到之间所保证的延迟。如果此延迟是可变的(例如访问DRAM时),则请将其设置为0。

ihc::maxburst模板参数

句法
ihc::maxburst<value>
有效值
1 – 1024范围内的整数值
默认值
1
描述
读取或写入事务可关联的最大数据传输次数。此值控制burstcount的宽度。

对于固定延迟接口,此值必须设置为1。

有关详细信息,请参阅关于突发信号的详细信息和Avalon Interface Specifications中"Avalon Memory-Mapped Interface Signal Roles”介绍的burstcount信号角色。

ihc::align模板参数

句法
ihc::align<value>
有效值
整数值,大于数据类型的对齐
默认值
数据类型对齐
描述
基指针地址的对齐(以字节为单位)。

Intel® HLS Compiler使用此信息来确定此指针可以允许的同时加载和存储的次数。

例如,如果您有一条具有4个32位整数的总线,就应该使用ihc::dwidth<128>(位)和ihc::align<16>(字节)。这意味着每个时钟周期最多可以加载或存储16个连续字节(或4个32位整数)作为合并的存储器字。

重要: 调用程序负责将数据与align参数的设定值对齐;否则可能会发生功能故障。

ihc::readwrite_mode模板参数

句法
ihc::readwrite_mode<value>
有效值
readwrite, readonlywriteonly
默认值
readwrite
描述
接口的端口方向。仅生成相关Avalon主机信号。

ihc::waitrequest模板参数

句法
ihc::waitrequest<value>
有效值
truefalse
默认值
false
描述
添加waitrequest信号,当agent无法响应读或写请求时会将其置位。

对于可变延迟接口,您必须将此值设置为true以防止在使用Platform Designer将HLS组件集成到设计中时出现警告或错误。

关于waitrequest信号,请参阅Avalon Interface Specifications中的“Avalon Memory-Mapped Interface Signal Roles

getInterfaceAtIndex测试台函数

句法
getInterfaceAtIndex(int index)
描述
此测试台函数用于在mm_host对象中查找。在遍历数组并在数组的不同索引上调用组件时,此函数很有用。此函数仅在测试台中受支持。
代码实例
int main() {
// …….
for(int idx = 0; idx < N; idx++) {
  dut(src_mm.getInterfaceAtIndex(idx));
}
// …….
}