高层次综合基础-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自行决定的,用户不能控制这些接口,只能指定接口是否寄存。
相关推荐
美式请加冰2 分钟前
BFS算法(下)
算法·宽度优先
少许极端2 分钟前
算法奇妙屋(三十七)-贪心算法学习之路4
学习·算法·贪心算法·田忌赛马
We་ct3 分钟前
LeetCode 373. 查找和最小的 K 对数字:题解+代码详解
前端·算法·leetcode·typescript·二分·
Ricky_Theseus6 分钟前
探索群体智慧:蚁群算法(ACO)从原理到实践——python实现
python·算法·机器学习
Rabitebla12 分钟前
排序算法专题(一):插入排序 & 希尔排序
数据结构·算法·排序算法
南境十里·墨染春水8 小时前
C++传记(面向对象)虚析构函数 纯虚函数 抽象类 final、override关键字
开发语言·c++·笔记·算法
2301_797172758 小时前
基于C++的游戏引擎开发
开发语言·c++·算法
有为少年9 小时前
告别“唯语料论”:用合成抽象数据为大模型开智
人工智能·深度学习·神经网络·算法·机器学习·大模型·预训练
比昨天多敲两行9 小时前
C++ 二叉搜索树
开发语言·c++·算法
Season4509 小时前
C++11之正则表达式使用指南--[正则表达式介绍]|[regex的常用函数等介绍]
c++·算法·正则表达式