![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C/C++
文章平均质量分 88
钱小波
这个作者很懒,什么都没留下…
展开
-
Vivado Hls 设计流程总结
Vivado Hls 设计流程总结 对于Vivado Hls来说,输入包括Tesbench,C/C++源代码和Directives,相应的输出为IP Catalog,DSP和SysGen,特别的,一个工程只能有一个顶层函数用于综和,这个顶层函数下面的子函数也是可以被综合的,会生成相应的VHDL和Verilog代码,所以,C综合后的RTL代码结构通常是跟原始C描述的结构是一致的,除非是子函数功能原创 2016-11-07 22:15:16 · 7679 阅读 · 1 评论 -
Vivado Hls 设计优化
在使用高层次综合时,创造高质量的RTL设计时,一个重要部分就是对C代码进行优化。Vivado Hls总是试图最小化loop和function的latency,为了实现这一点,它试图在loop和function上并行执行尽可能多的操作。在function级别上,高级综合总是试图并行执行function。 除了这些自动优化,directive是用来: (1) 并行执行多个tasks,例如,同一个函数原创 2016-11-29 07:40:22 · 6096 阅读 · 2 评论 -
Vivado HLs中任意精度数据类型的处理方法
我们在设计硬件时,它往往是要求更精确的位宽。例如,一个filter的输入是12位和一个累加器的结果只需要一个最大范围为27位。然而对于硬件设计来说,使用标准的C数据类型会造成硬件成本的浪费。这就会造成我们要使用更多的LUT和寄存器,延迟甚至可能超过时钟周期和需要更多的周期来计算结果。这往往不是我们需要的结果。因此下面我将介绍如何利用Vivado HLS处理许多位准确或任意精度数据类型,以及允许使用任原创 2016-11-13 22:03:38 · 7206 阅读 · 0 评论 -
数据类型的转化
如何对任意精度类型的变量初始化对于ap_[u]int类型在C/C++里,是通过变量类型+变量名+数值,来对一个变量初始化,同样,对于任意精度的数据类型,我们也可以采用这种方式来进行变量初始化。在Vivado Hls里是支持copy initialization(Y)和direct initialization(Y)这两种方式来进行初始化,但不支持uniform initialization,同时,对原创 2016-11-14 13:23:21 · 2289 阅读 · 0 评论 -
Vivado Hls 设计分析
概叙设计方法:综合设计回顾最初的结果应用优化的 directives去提高效率你可以重复上述步骤,直到达到要求。然后,你可以重新审查设计去提高面积。此过程的关键部分是分析结果,下面通过一个project来介绍如何使用reports和 GUI perspective 去分析设计,并且决定用哪种solution去应用相应的优化。* directive简介*创建solution时,directiv原创 2016-11-22 08:05:12 · 3226 阅读 · 1 评论