仅对英特尔可见 — GUID: kdn1506221072493
Ixiasoft
1. Intel® High Level Synthesis Compiler Pro Edition用户指南
2. Intel® High Level Synthesis (HLS) Compiler Pro Edition概述
3. 创建高级综合组件和测试台
4. 验证设计的功能性
5. 优化和完善您的组件
6. 通过仿真验证您的IP
7. 使用Intel Quartus Prime Pro Edition综合您的组件IP
8. 将您的IP集成到一个系统中
A. 查看High-Level Design Reports (report.html)
B. Intel® HLS Compiler Pro Edition限制
C. Intel® HLS Compiler Pro Edition用户指南归档
D. Intel® HLS Compiler Pro Edition用户指南文档修订历史
仅对英特尔可见 — GUID: kdn1506221072493
Ixiasoft
A.2.1.2.1. 查看组件接口
System Viewer的Function View显示了组件中接口的可视化表示。
组件中的某些参数可以标记为stable。如果一个参数的自变量(argument)在组件执行期间没有改变,但该自变量可能会在组件执行之间发生变化,那么该参数可标记为stable。在Function View中,一个稳定的自变量没有任何边沿连接。
Function View显示了以下部分中所述的各种接口:
默认(管道)接口
管道(conduit)接口是针对自变量是按值传递的任何函数参数进行实现的。System Viewer报告的Function View将管道接口连接到对应的流读取(RD)节点。此读取与组件调用接口上的start/busy信号进行同步。
#include "HLS/hls.h" struct coordinate_t { int x; int y; }; component int default_comp(int b, coordinate_t p) { return b + p.x; }

对于每个默认接口自变量(argument)节点,当您将鼠标悬停在一个节点上时,可以在Details窗格中查看关于该节点的详细信息:
Avalon® MM主机接口
pointer自变量、pass-by-reference自变量、ihc::mm_host<> argument和全局变量都对应于您组件外部的存储器地址。它们会在您的组件中产生至少一个 Avalon® MM Host接口。
一个组件的每个ihc::mm_host<>自变量都会产生基地址的一个输入管道(conduit),此输入管道与系统查看器中的一个Read节点连接。除了这个输入管道,还会为每个地址空间创建一个唯一的Avalon MM Host接口。此接口与系统查看器中的一个或多个Load或者Store节点连接。
#include "HLS/hls.h" component int host_comp(int *pointer_d, ihc::mm_host<int, ihc::aspace<3>, ihc::awidth<4>, ihc::dwidth<32>, ihc::latency<1>, ihc::align<4>> &host_i, int &result) { result = pointer_d[0] + host_i[0]; return result; }
System Viewer的Function View显示了这些接口自变量的详细信息:
- Stable
- 描述了接口自变量是否稳定。也就是说,是否应用了hls_stable_argument属性。
- Data width
- 存储器映射的数据总线的宽度(比特)。
- Address width
- 存储器映射的地址总线的宽度(比特)。
- Latency
- 从读取命令退出组件到外部存储器返回有效读取数据的保证延迟。延迟以时钟周期为单位。
- Maximum burst
- 与一个读或写传输相关联的最大数量的数据传输。对于固定延迟接口,此值设为1。
- Alignment
- 基指针地址的字节对齐。 Intel® HLS Compiler使用此信息来确定对该指针进行加载和存储时可能进行的对齐量。
System Viewer的Function View显示了 Avalon® MM Host接口的详细信息:
- Memory address space number
- Avalon® MM Host接口的存储器地址空间数。
- Number of banks
- 存储器中包含的存储器组(memory bank)的数量。
- Argument Name:
- 访问 Avalon® MM Host接口的自变量的名称。

Avalon® MM代理寄存器接口
当您将一个函数参数标记为 Avalon® MM代理寄存器(hls_avalon_agent_register_argument)时,接口自变量会在控制和状态寄存器(CSR)代理接口中实现。System Viewer的Function View将代理寄存器自变量放置在一个CSR容器内。
#include "HLS/hls.h" component int agentreg_comp( int hls_avalon_agent_register_argument agent_scalar_f, int* hls_avalon_agent_register_argument agent_pointer_g ) { return agent_scalar_f + *agent_pointer_g; }
在自动生成的头文件 <component_name>_csr.h中描述了生成的存储器映射。该头文件位于源代码窗格的菜单中。单击System Viewer的Function View中的CSR容器节点也可以打开头文件:
如果您使用hls_avalon_agent_component macro,那么来自组件调用接口的call和return信号会在控制和状态寄存器(CSR)接口中实现:
#include "HLS/hls.h" hls_avalon_agent_component component int agentreg_comp( int hls_avalon_agent_register_argument agent_scalar_f, int* hls_avalon_agent_register_argument agent_pointer_g ) { return agent_scalar_f + *agent_pointer_g; }
Avalon® MM代理存储器接口
当您将一个指针自变量声明为代理存储器时,System Viewer的Function View会显示带一个 <agent memory name> LD/ST节点(连接到组件中的Local Memory节点)的代理存储器接口。
#include "HLS/hls.h" hls_avalon_agent_component component int agentmem_comp( hls_avalon_agent_memory_argument(4096) int* agent_mem_h, int hls_stable_argument index, int hls_avalon_agent_register_argument agent_scalar_f ) { return agent_mem_h[index] * agent_scalar_f; }
Avalon® 流传输接口
一个流传输接口在System Viewer的Function View中显示为一个 <stream name> 节点,此节点连接到对应的RD节点(for stream_in<>)或者WR节点(for stream_out<>)。
#include "HLS/hls.h" component int stream_comp( ihc::stream_in<int> &stream_in_c, ihc::stream_out<int> &stream_out_e, int scalar_b ) { stream_out_e.write(scalar_b + 1); return stream_in_c.read() + scalar_b * 2; }
System Viewer的Function View显示了流传输接口自变量的以下详情:
- Width
- 数据信号的宽度(比特)。
- Depth
-
流深度(字)。
流的字大小是流数据类型的大小。
- Bits per symbol
- 描述数据是如何分解成数据总线上的符号的。
- Uses Packets
- 指示接口是否显露了流接口上的startofpacket和endofpacket边带信号。这些信号可以通过基于数据包的读写操作进行访问。
- Uses Valid
- (stream_in)指示在流接口上是否有valid信号。Yes时,上游源(upstream source)必须在ready置位的每个周期上提供出现效数据。
- Uses Ready
- (stream_out)只是在流接口上是出现ready信号。Yes时,下游接收端(downstream sink)必须在valid置位的每个周期上能够接收数据。