高层次综合基础-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自行决定的,用户不能控制这些接口,只能指定接口是否寄存。
相关推荐
孞㐑¥21 分钟前
算法——BFS
开发语言·c++·经验分享·笔记·算法
月挽清风26 分钟前
代码随想录第十五天
数据结构·算法·leetcode
XX風43 分钟前
8.1 PFH&&FPFH
图像处理·算法
NEXT061 小时前
前端算法:从 O(n²) 到 O(n),列表转树的极致优化
前端·数据结构·算法
代码游侠1 小时前
学习笔记——设备树基础
linux·运维·开发语言·单片机·算法
想进个大厂2 小时前
代码随想录day37动态规划part05
算法
sali-tec2 小时前
C# 基于OpenCv的视觉工作流-章22-Harris角点
图像处理·人工智能·opencv·算法·计算机视觉
子春一2 小时前
Flutter for OpenHarmony:构建一个 Flutter 四色猜谜游戏,深入解析密码逻辑、反馈算法与经典益智游戏重构
算法·flutter·游戏
人道领域2 小时前
AI抢人大战:谁在收割你的红包
大数据·人工智能·算法
TracyCoder1232 小时前
LeetCode Hot100(34/100)——98. 验证二叉搜索树
算法·leetcode