高层次综合基础-vivado hls第三章

Xilinx的vivado hls工具可以将C语言函数综合为IP,然后集成到FPGA硬件设计系统中。

Vivado hls的设计流程:

  1. 编译、C仿真、C执行和C语言算法的调试
  2. 将C语言算法综合为RTL实现,可选择使用用户最优化指令
  3. 将C语言算法综合生成综合性报告,并进行分析
  4. 使用按钮式流程来验证RTL的实现
  5. 将RTL设计实现封装为一套特定的IP格式

关于vivado hls的输入和输出

  1. 使用C,C++,SystemC编写的C语言函数,这个是Vivado hls的主要输入
  2. 函数可以包含子函数层级
  3. 约束是必需的。包括时钟周期约束,时钟的不确定性约束,FPGA目标器件的约束。时钟的不确定性如果没有指定,默认为12.5%
  4. 优化指令的使用。优化指令的使用并不是必要的,而是可选的。优化指令的作用是用于指示综合流程实现特定行为或者最优化操作
  5. 在传统的C程序设计中,顶层函数都是入口函数main()函数,但是,在vivado hls设计中,你可以将main()下任意子函数指定为综合的顶层函数。Main函数是无法被综合的。
  6. 允许指定main函数中其中的某一个函数为综合的顶层,一个设计只能有一个顶层函数
  7. 综合的顶层函数中的任意的子函数都会被进行综合
  8. 如果要综合的函数不包含在综合的顶层函数的层级下,必须将此类函数单独的进行综合,或者将其合并到顶层函数的层级下
  9. 不支持不可综合的C语言包括:动态内存分配,fpga的资源是固定的资源,不支持动态的创建和分配,你要多少资源,都是预先分配和感知的,不能够动态分配和创建
  10. OS操作系统的一些系统函数是不可综合。
  11. FPGA设计的所有数据都必须从输入的端口读取或者将数据写入输出端口。
  12. 操作系统的文件读写操作,时间和日期之类的操作系统函数是不支持综合的
  13. 任意精度数据类型库
  14. 半精度浮点数据类型库
  15. 数学运算库
  16. FFT函数和FIR函数
  17. 标准的C语言类型是8bit边界实现的,FPGA硬件平台,通常使用任意位宽边界的数据类型
  18. 任务执行流水线,允许当前任务完成之前就开始执行下一项任务
  19. 指定完成函数,循环和区域的时延
  20. 指定使用的资源数量限制
  21. Vivado hls中任何子函数使用的IO协议你是无法控制的,这个是vivado hls自行决定的,用户不能控制这些接口,只能指定接口是否寄存。
相关推荐
咖丨喱19 小时前
IP校验和算法解析与实现
网络·tcp/ip·算法
罗湖老棍子19 小时前
括号配对(信息学奥赛一本通- P1572)
算法·动态规划·区间dp·字符串匹配·区间动态规划
fengfuyao98519 小时前
基于MATLAB的表面织构油润滑轴承故障频率提取(改进VMD算法)
人工智能·算法·matlab
机器学习之心19 小时前
基于随机森林模型的轴承剩余寿命预测MATLAB实现!
算法·随机森林·matlab
一只小小的芙厨19 小时前
寒假集训笔记·树上背包
c++·笔记·算法·动态规划
庄周迷蝴蝶19 小时前
四、CUDA排序算法实现
算法·排序算法
以卿a19 小时前
C++(继承)
开发语言·c++·算法
I_LPL20 小时前
day22 代码随想录算法训练营 回溯专题1
算法·回溯算法·求职面试·组合问题
金融RPA机器人丨实在智能20 小时前
2026动态规划新风向:实在智能Agent如何以自适应逻辑重构企业效率?
算法·ai·重构·动态规划
elseif12320 小时前
【C++】并查集&家谱树
开发语言·数据结构·c++·算法·图论