仅对英特尔可见 — GUID: ztv1551199913467
Ixiasoft
1. Intel® HLS Compiler Pro版参考手册
2. 编译器
3. C语言和库支持
4. 组件接口
5. 组件存储器(存储器属性)
6. 组件中的循环
7. 组件并发
8. 任意精度数学支持
9. 组件目标频率(Target Frequency)
10. 任务系统
11. 库
12. 高级硬件综合控制
13. Intel® High Level Synthesis Compiler Pro版参考总结
A. 高级数学源代码库
B. 支持的数学函数
C. Cyclone® V限制
D. Intel® HLS Compiler Pro版参考手册存档
E. Intel® HLS Compiler Pro版参考手册修订历史
13.1. Intel® HLS Compiler Pro版i++命令行参数
13.2. Intel® HLS Compiler Pro版头文件
13.3. Intel® HLS Compiler Pro版编译器定义的预处理器宏
13.4. Intel® HLS Compiler Pro版关键字
13.5. Intel® HLS Compiler Pro版模拟API(仅测试台)
13.6. Intel® HLS Compiler Pro版组件存储器属性
13.7. Intel® HLS Compiler Pro版循环预处理指令
13.8. Intel® HLS Compiler Pro版范围预处理指令
13.9. Intel® HLS Compiler Pro版组件属性
13.10. Intel® HLS Compiler Pro版组件默认值接口
13.11. Intel® HLS Compiler Pro版组件调用接口控制属性
13.12. Intel® HLS Compiler Pro版组件宏
13.13. Intel® HLS Compiler Pro版技术性任务系统API
13.14. Intel® HLS Compiler Pro版管道API
13.15. Intel® HLS Compiler Pro版流输入接口
13.16. Intel® HLS Compiler Pro版流输出接口
13.17. Intel® HLS Compiler Pro版存储器映射接口
13.18. Intel® HLS Compiler Pro版加载-存储单元控制
13.19. Intel® HLS Compiler Pro版任意精度数据类型
仅对英特尔可见 — GUID: ztv1551199913467
Ixiasoft
10. 任务系统
您的组件设计可能包含您需要与组件的主流程异步运行的操作。 Intel® HLS Compiler Pro Edition可以让您在任务函数中定义这些异步活动。这些任务函数以及调用它们的组件构成任务系统。
component关键字将单个函数及其子函数标记为组件。在此组件函数中,直接调用的函数为内联(in-lined),而使用任务系统API调用的函数(ihc::launch和ihc::collect)在组件数据路径之外生成硬件,并且行为类似于异步调用。
标注了component关键字的函数标记任务系统的边界。您的外部系统可以与组件公开的所有接口进行交互。
在需要表达粗粒度线程级并行性的情况下,将您的设计实现为任务系统(而不是单片组件)会很有用。例如,任务系统在以下情况下很有用:
- 提高并行执行循环等操作的性能
- 通过与组件的不同部分共享昂贵的计算块来减少FPGA面积利用率
函数 | 描述 |
---|---|
ihc::launch | 将函数标记为硬件生成的 Intel® HLS Compiler任务,并异步启动任务函数。 |
ihc::collect | 同步组件中指定任务函数的完成。 |
ihc::stream | 允许不同任务函数之间进行流式通信。 |
ihc::launch_always_run | 在组件上电或复位时启动任务函数并连续执行该函数。
Recommendation: 将 ihc_hls_set_component_wait_cycle 与此函数一起使用可以使您的组件和始终运行的任务函数保持协调正确。
|
模板对象或参数 | 描述 |
---|---|
ihc::stream | 组件或任务功能的流接口。 |
ihc::buffer | 指定与流相关的输入数据上FIFO缓冲区的容量(以字为单位)。 |
ihc::usesPackets | 公开流接口上的startofpacket和endofpacket边带信号。 |
函数API | 描述 |
---|---|
T read() | 从组件或任务内部使用的阻塞读调用(Blocking read call) |
T read(bool& sop, bool& eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号的阻塞读。 |
T tryRead(bool &success) | 从组件或任务内使用的非阻塞读调用(Non-blocking read call)。 如果该读取有效,则success布尔型被设置为true。 |
T tryRead(bool& success, bool& sop, bool& eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号的非阻塞读取。 |
void write(T data) | 从组件或任务来的阻塞写调用。 |
void write(T data, bool sop, bool eop) | 仅当设置了usesPackets<true>时可用。 通过带外(out-of-band)startofpacket和endofpacket信号的阻塞写入。 |
bool tryWrite(T data) | 从组件或任务来的非阻塞写调用。返回值表示写入是否成功。 |
bool tryWrite(T data, bool sop, bool eop) | 仅当设置了usesPackets<true>时可用。 通过带外startofpacket和endofpacket信号的非阻塞写入。返回值表示写入是否成功。 |