高层次综合基础-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自行决定的,用户不能控制这些接口,只能指定接口是否寄存。
相关推荐
罗湖老棍子5 分钟前
The xor-longest Path(信息学奥赛一本通- P1478)
算法·字符串·字典树··lca最近公共祖先
whuhewei20 分钟前
React diff算法为什么是DFS,不是BFS
算法·react.js·深度优先
EdmundXjs1 小时前
大模型核心概念解读
人工智能·算法
lookaroundd1 小时前
llm-compressor 普通量化调用链分析
python·算法
小羊在睡觉1 小时前
力扣239. 滑动窗口最大值
数据结构·后端·算法·leetcode·go
兰令水1 小时前
topcode【随机算法题】【2026.5.20打卡-java版本】
java·开发语言·算法
此生决int2 小时前
算法从入门到精通——前缀和
c++·算法·蓝桥杯
大大杰哥2 小时前
leetcode hot100(4)矩阵
算法·leetcode·矩阵
小白|2 小时前
cmake:昇腾CANN构建系统完全指南
java·c++·算法
nebula-AI2 小时前
人工智能导论:模型与算法(未来发展与趋势)
人工智能·神经网络·算法·机器学习·量子计算·automl·类脑计算