Xilinx Vitis HLS教程1--Vitis HLS概述[02/12]
2. Vitis HLS简介
kernel 内核
pragmas 编译指示
FSM,有限状态机 , Finate state machine
synthesize,综合
schedule,调度
Vitis™ HLS是一款高级综合工具,允许 C、C++ 和OpenCL™函数硬连线(hardwired)到器件逻辑结构和 RAM/DSP 块上。Vitis HLS在Vitis应用加速开发流程中实现硬件内核(hardware kernel),并使用 C/C++ 代码为Vivado® Design Suite中的Xilinx®器件设计开发 RTL(寄存器传输设计级别)IP(功能块) 。
在Vitis应用程序加速流程中,Vitis HLS工具可自动执行大部分代码修改,以实现和优化可编程逻辑中的 C/C++ 代码并实现低延迟和高吞吐量。推导出需要的编译指示(pragmas),以为函数参数生成正确接口以及在代码中用pipeline优化循环和函数,这是Vitis HLS在应用程序加速流程中的基础。Vitis HLS还支持自定义您的代码以实现不同的接口标准或特定优化,从而实现您的设计目标。
Vitis HLS设计流程一般如下:
1.编译、仿真、调试C/C++代码;
2.观察report,以分析和优化设计;
3.将C代码综合(synthesize)成RTL设计;
4.用RTL协同仿真器验证RTL实现;
5.将RTL实现打包成编译后的目标文件(.xo),或者导出到RTL IP.
2.1 HLS基础
Xilinx Vitis HLS工具将C/C++方法综合(synthesize)成RTL代码,以加速可编程逻辑。Vitis HLS与Vitis核心开发套件和应用程序加速设计流程紧密集成。
使用高层次综合HLS的好处包括:
- 在C语言级开发、验证算法,脱离硬件实现细节进行抽象设计;
- 用C仿真器验证设计,迭代速度远远快于传统RTL设计;
- 用优化pragma控制C综合过程,以创建更高性能的实现;
- 从C源码和编译指示中创建多个解决方案,以探索设计空间,找到最佳实践;
- 快速重新编译C源码,以针对不同平台和硬件;
HLS包括以下阶段:
- 根据以下因素做调度(schedule),以决定每个时钟周期内采取什么操作:
– 某个操作的依赖已经满足或者可用;
– 时钟周期的长度或者时钟频率;
– 目标device中,该操作完成所需要的时间;
– 可用的资源分配;
– 任何其他的用户自定义优化指示;
注:有些目标device很快&