hls fifo_HLS优化方法DATAFLOW你用了吗

f7a969c1672aa04fbb072c34b73c65f7.png上期内容:异步跨时钟域电路该怎么约束60288dceeb06b55f28701bd230eada84.png

DATAFLOW作为HLS的一种优化方法,对于改善吞吐率(Throughput)、降低延迟(Latency)非常有效。

DATAFLOW的作用对象

DATAFLOW可以作用于函数,也可以作用于for循环。如下图所示(图片来源Figure62, Figure 63, ug902)。无论是作用于函数还是for循环,都要求数据在函数之间顺序流动,没有反馈回路。

1b1a4930932da38e89440493894eb2cf.pngDATAFLOW优化前后对比我们看一个简单的案例,如下图所示(图片来源Figure64, ug902)。顶层函数top下调用了3个子函数。这3个子函数之间的数据是顺序流动的,因此可以用DATAFLOW来优化。如果不使用DATAFLOW,意味着func_A处理结束,才能处理func_B,func_B处理结束,才能处理func_C。这其实就是C语言的处理方式即顺序执行。但从硬件角度看,只有func_A有输出数据,就可以传递给func_B进行处理。这就实现了这3个函数的并行处理,从而将II由8降至3,Latency由8降至5。419c153cc526d253626cdb91ddb8b20e.pngDATAFLOW的原理DATAFLOW需要额外的硬件资源开销。这是因为Vivado HLS会对相应的函数或者循环进行分析,然后对中间数据(子函数的输出或者循环体中的变量)进行缓存。缓存可能需要用到FIFO或者采用乒乓Buffer(RAM)的方式,如下图所示(图片来源Figure65, ug902)。通常对于标量,HLS会采用FIFO缓存;对于数组,HLS会采用乒乓Buffer缓存。

165f52b33176a6b84b75658173ee1d35.png

在报告中确认DATAFLOW

一旦使用了DATAFLOW,在综合报告中会明确地显示处理。同时,在Analysis窗口中可以看到红色椭圆方框标记的图标,如下图所示。

ef1ec923278267ea99f4f9d2803a93b2.pngebacb1ebe592d5587b3e556b872257c8.pngafcf0b9ee561c3e02c2659402ba5da25.pngAI Engine到底是什么?

ACAP不可不知的几个基本概念

HLS中如何控制流水程度

Vivado HLS学习资料有哪些

如何查看可综合C代码的中间结果

如何在C代码中插入移位寄存器

HLS IP Library?HLS Math Library:csim ?C/RTL co-sim(2)HLS Math Library:csim ?C/RTL co-sim(1)如何复用关键路径的布局布线信息Vivado学习资料有哪些?异步跨时钟域电路怎么设计ECO都有哪些应用FPGA中的CLOCK REGION和SLR是什么含义FPGA中的BEL, SITE, TILE是什么含义约束文件有哪些如何高效复用Block的位置信息?如何复用关键寄存器的位置信息部分可重配置都生成哪些.bit文件VIO你用对了吗Device视图下能看到什么Schematic视图下能看到什么都是pin,有什么区别都是net,有什么区别如何快速查找目标cell学习笔记:多层感知器学习笔记:单层感知器的局限性学习笔记:单层感知器基础知识学习笔记:神经网络学习算法学习笔记:神经网络模型学习笔记:ReLU的各种变形函数学习笔记:神经元模型(2)学习笔记:神经元模型(1)学习笔记:深度学习之“深”学习笔记:深度学习之“学习”学习笔记:人工智能、机器学习和深度学习2019文章汇总5b64b8a0179c5353e2f0bb000fb1b666.png97d267f7f1181897b0ce0d1df130317e.png文 | Lauren 图 | LaurenCopyright @ Lauren的FPGA转载事宜请私信 | 获得授权后方可转载5e661ad6a42c2f068c62578f8204c83a.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/374456.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java 8虚拟扩展方法

我一直关注Java 8 Lambda表达式项目的发展已经有一段时间了,我对其当前的进展状态感到非常兴奋。 我发现的最新“易于理解”的演示文稿是这样的: http://blogs.oracle.com/briangoetz/resource/devoxx-lang-lib-vm-co-evol.pdf 现在,作为一名…

python爬虫 库_七款必备的Python爬虫库,你知道几个?

很多你需要的信息数据都是在网站内,虽然有些网站的数据会以整洁、结构化的形式呈现,但大部分网站却无法做到这样。因此,当你想要获得一些数据的时候,你需要一些爬虫工具帮助抓取,然后再对其进行分析。今天,…

62个Android Studio小技巧合集

转载: 原文链接:http://laobie.github.io/android/2016/02/14/android-studio-tips.html转载于:https://www.cnblogs.com/kesteler/p/5618490.html

在Hibernate,EhCache,Quartz,DBCP和Spring中启用JMX

继续使用JMX的过程(请参阅: 人类JMX ),我们将学习如何在一些流行的框架中启用JMX支持(通常是统计和监视功能)。 这些信息大部分都可以在项目的主页上找到,但是我决定在收集这些信息的同时&#…

二叉树遍历(前中后)

二叉树前序遍历&#xff1a; /*** Definition for binary tree* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:vector<int> preorderTravers…

python语言程序设计实践教程答案实验六_Python程序设计实践教程

书名&#xff1a;Python程序设计实践教程 定价&#xff1a;29.8 ISBN&#xff1a;9787115532602 作者&#xff1a;储岳中 薛希玲 版次&#xff1a;*1版 出版时间&#xff1a;2020-04 内容提要&#xff1a; 本书是Python语言程序设计的配套实践教材&#xff0c;分为三部分&#…

400多万微信用户如何“变现”?凯叔说了五大秘诀与教训

凯叔&#xff0c;原名王凯&#xff0c;自媒体“凯叔讲故事”创始人&#xff0c;近日在狮享家班委会上做了分享&#xff0c;全是实实在在的实验性方法论。以下是王凯的分享内容&#xff0c;整理 / 垅青 我讲的主题叫“基于内容的MVP探索”&#xff0c;MVP是什么东西&#xff1f;…

使用dbUnit,JSON,HSQLDB和JUnit规则进行数据库单元测试

在本周TDD课程的运行中&#xff0c;我认为编写一些夹具以简化dbUnit的使用将很有趣。 我最初的想法只是教dbUnit有关JSON的知识&#xff0c;但事实证明Lieven Doclo已经做到了。 因此&#xff0c;我决定更进一步&#xff0c;还将dbUnit与JUnit Rules结合起来&#xff0c;并提供…

Codeforces Round #321 (Div. 2) E. Kefa and Watch 线段树hash

E. Kefa and Watch Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/580/problem/EDescription One day Kefa the parrot was walking down the street as he was on the way home from the restaurant when he saw something glittering by…

python文字游戏源代码求年纪_Python实现猜年龄游戏代码实例

1. 在猜年龄的基础上编写登录、注册方法&#xff0c;并且把猜年龄游戏分函数处理&#xff0c;如 2. 登录函数 3. 注册函数 4. 猜年龄函数 5. 选择奖品函数 代码如下 import json real_age 18 prize_list [好迪洗发水, 绿箭侠, 小猪佩奇, 布娃娃, 再来一次!] import random us…

KVC 与 KVO

一、Key-Value Coding (KVC)键值编码 KVC&#xff0c;即是指 NSKeyValueCoding&#xff0c;一个非正式的 Protocol&#xff0c;提供一种机制来间接访问对象的属性。KVO 就是基于 KVC 实现的关键技术之一。 一个对象拥有某些属性。比如说&#xff0c;一个 Person 对象有一个 nam…

使用模拟的单元测试–测试技术5

我的最后一个博客是有关测试代码方法的一系列博客中的第四篇&#xff0c;演示了如何创建使用存根对象隔离测试对象的单元测试。 今天的博客探讨了有时被视为对立的技术&#xff1a;使用模拟对象进行单元测试。 同样&#xff0c;我使用了从数据库检索地址的简单方案&#xff1a;…

多线程中的volatile和伪共享

伪共享 false sharing&#xff0c;顾名思义&#xff0c;“伪共享”就是“其实不是共享”。那什么是“共享”&#xff1f;多CPU同时访问同一块内存区域就是“共享”&#xff0c;就会产生冲突&#xff0c;需要控制协议来协调访问。会引起“共享”的最小内存区域大小就是一个cache…

C语言代码规范(一)缩进与换行

一、缩进的空格数为4个。最好配置代码编辑器将TAB键设置为空格替换&#xff0c;避免出现另一个编辑器打开时格式变乱的情况。 例如Notepad设置 KEIL设置 二、“{” 和 “}”各自独占一行。 不规范例子&#xff1a; for(i 0; i < student_num; i) { if((score[i] > 0…

armv7 cortex a系列编程手册_AWTK能为现代GUI编程带来何种改变?

AWTK是一个伸缩性极强的嵌入式图形框架&#xff0c;它的诞生会给GUI编程研发工程师带来哪些改变&#xff1f;AWTK是一个伸缩性极强的嵌入式图形框架&#xff0c;可在Cortex-M3这样低端的单片机上运行&#xff0c;也可以在Cortex-A7/A8/A9等处理器&#xff0c;甚至DSP以及X86处理…

【转】各种概念POJO、JAVABEAN、DAO、DTO、PO、VO、BO、SSH、EJB

POJO&#xff08;pure old java object&#xff09; 是普通java类&#xff0c;有一些private的参数作为对象的属性&#xff0c;然后针对每一个参数定义get和set方法访问的接口。我看到这个定义&#xff0c;心里就有个疑问了&#xff0c;这个POJO跟JavaBean的定义怎么就这么像&a…

为什么要编写单元测试–测试技巧8

我对最近在“您应该测试什么”上的博客有很多反应&#xff0c;有些人出于各种原因同意我的想法&#xff0c;另一些人则认为建议某些类可能不需要单元测试是非常危险的。 已经处理了什么测试&#xff0c;今天的博客涉及为什么要编写单元测试&#xff0c;而今天的示例代码是基于一…

Git迁移 从SVN到Git

Migrating from SVN to Git 首先我们需要在Stach或者GitHub上新建一个Repository, 拿到它的URL。 接下来参照如下步骤 : At first we should create a new git repository at Stash and get the repository URL, and then follow below steps: 1. 切换到本地git工作目录 chang…

C语言代码规范(二)空格

一、逗号, 之后加空格 printf("error! score[%d] %d\n", i, score[i]); 二、分号; 之后加空格 for(i 0; i < student_num; i) 三、关系运算符<、<、>、>、、! 前后加空格 if( (score[i] > 0) && (score[i] < 100) ) 四、赋值运算符…

c++ 多重背包状态转移方程_动态规划入门——详解经典问题零一背包

本文始发于个人公众号&#xff1a;TechFlow&#xff0c;原创不易&#xff0c;求个关注今天是周三算法与数据结构专题的第12篇文章&#xff0c;动态规划之零一背包问题。在之前的文章当中&#xff0c;我们一起探讨了二分、贪心、排序和搜索算法&#xff0c;今天我们来看另一个非…