FPGA中的速度优化

一、逻辑设计中的速度概念

逻辑设计速度相关的概念有三个:设计吞吐量、设计延时和设计时序。速度优化策略而言,吞吐量需要提高,延时应该降低,时序应该收敛(时序余量slave越大,收敛越强,移植性越好)。吞吐量提高的方法一般是采用大的并行设计,延时降低的方法则是采用缓存结构或者并行结构,时序收敛则需要综合考虑。

二、时序收敛的早期考虑

问题发现的越早,解决的成本越低。时序收敛考虑地越早,后面可能的问题就会越少。

先看一下标准FPGA设计流程:

(1)制定设计指导文件

(2)设计功能代码

(3)进行功能仿真

(4)编译设计

(5)时序分析

(6)时序调整直至时序收敛

在设计之初,大部分考虑都集中在如何实现功能上,而容易忽略时序问题。在制定指导文件时,应该建立时序收敛的概念,最好能提前对某些信号转换区给出时序约束图,通过设计提前消除隐患。

三、时序收敛的设计考虑

设计中,也就是得到时序分析报告后所需要的措施。时序分析报告会给出最大时钟频率的报告,这个参数直接决定了电路的时序收敛等级(频率越高,收敛越好)。整个设计中的考虑也是依靠对这个参数的优化来展开的。最大时钟频率相关参数有五个:

Tclk-q:时钟到达启动触发器时钟端,数据到达Q端(也就是触发器输出端)的延时,。

Tlogic:启动触发器和锁存触发器之间的延时

Trouting:布线延时,这个是EDA工具调整时序收敛常改变的参数。

Tsetup:建立时间,数据到达锁存触发器D端,时钟最快到达时间。

Tsekw:时钟偏斜,时钟到达启动触发器和锁存触发器之间的延时。

这五个参数中只有最后一个是正相关,其他都是负相关。所有在某些设计中,会人为制造Tskew来满足高速时序收敛。

四、时序收敛的总体考虑

总体考虑的基本原则:

①提前规划,有备无患②实时对应门级层次③预先计算资源用量,选择合适器件④并行原则,同步原则

具体优化方法则是需要在设计中一一验证。

(1)在关键路径上减少组合逻辑

关键路径,就是时序收敛最差的路径。这里是典型的水桶效应,将别的长木板锯下来补足短板,可以有效提高某些关键短板导致的收敛问题。减少组合逻辑,也就是减少Tlogic。至于如何减少,就根据逻辑表达式增加并行结构了,调整位置有时也可以做到。

(2)适当加入逻辑复制

逻辑复制,就是将一个信号作为多个输入改为若干个复制信号作为多个输入,从而减低扇出。扇出对逻辑延时的影响就好像工人工作时间对工作量的影响,要求工人必须同时开始同时结束,必然导致整体效率下降,增加工作时间的灵活性可以缓解工作压力。当然,逻辑复制也会增加资源消耗。寄存器逻辑复制不能解决内部寄存器的时序,但可以优化寄存器之间的时序。组合逻辑复制同样可以优化这逻辑之间的时序关系。而且,逻辑复制可以在布局布线层次上实现更好地效果,缓解面积紧张。

(3)在组合逻辑中加入寄存器

组合逻辑延时过大,会直接降低最大时钟频率,这时候在组合逻辑中间插入寄存器暂存,可以让数据歇一会,从而缓解时序紧张。也是降低逻辑延时的一种方法。

(4)寄存器平衡优化

常见的平衡优化有操作符平衡,就是使用括号将操作符尽量实现对称来保证硬件结构上的对称,进而减少关键路径的长度。

寄存器平衡,在Altera中被定义为寄存器重定时,通过移动关键路径和相邻路径上的组合逻辑来实现时序性能的提高

(5)并行结构优化

就是尽可能将输入应用起来。

(6)消除优先级

优先级,在if语句中体现尤为明显,对于选择结构,可以不考虑优先级,就可以使用case来编写,消除优先级,进而提高时序收敛性。

五、小结

时序收敛是时序是否符合要求的体现,掌握代码设计时的时序收敛方法是重要的。

FPGA中的速度优化的更多相关文章

  1. FPGA中改善时序性能的方法_advanced FPGA design

    本文内容摘自<advanced FPGA design>对应中文版是 <高级FPGA设计,结构,实现,和优化>第一章中的内容 FPGA中改善时序,我相信也是大家最关心的话题之一 ...

  2. web访问速度优化分析

    请求从发出到接收完成一共经历了DNS Lookup.Connecting.Blocking.Sending.Waiting和Receiving六个阶段,时间共计38ms.请求完成之后是DOM加载和页面 ...

  3. 【转】关于FPGA中建立时间和保持时间的探讨

      时钟是整个电路最重要.最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错:因而明确FPGA设计中决定系统时钟的因素,尽 ...

  4. 【原创】Webpack构建中hash的优化

    背景: SPA的vue应用,采用webpack2构建,打包入口为main.js 输出:main模块打包成app.js,公共lib打包成vendor.js,公共样式打包成app.css,运行时依赖打包成 ...

  5. Tone Mapping算法系列二:一种自适应对数映射的高对比度图像显示技术及其速度优化。

    办公室今天停电,幸好本本还有电,同事们好多都去打麻将去了,话说麻将这东西玩起来也还是有味的,不过我感觉我是输了不舒服,赢了替输的人不舒服,所以干脆拜别麻坛四五年了,在办公室一个人整理下好久前的一片论文 ...

  6. FPGA中IBERT核的应用(转)

    https://wenku.baidu.com/view/50a12d8b9ec3d5bbfd0a74f7.html (必看)    摘要 IBERT即集成式比特误码率测试仪,是Xilinx专门用于具 ...

  7. 记一次cocos项目的加载速度优化

    半个月前,我们用cosos creator做了一个简单的小游戏,也许算不上小游戏吧..一边学cocos,一边做,几经波折后终于上线了.然鹅,功能是实现了,但是加载速度十分感人(毕竟没经验嘛,无辜脸). ...

  8. 在 Android开发中,性能优化策略十分重要

    在 Android开发中,性能优化策略十分重要本文主要讲解性能优化中的布局优化,希望你们会喜欢.目录 示意图 1. 影响的性能 布局性能的好坏 主要影响 :Android应用中的页面显示速度 2. 如 ...

  9. (转)网站速度优化技巧:Nginx设置js、css过期时间

    网站速度优化技巧:Nginx设置js.css过期时间 原文:http://www.webkaka.com/blog/archives/Nginx-set-the-expiration-time-for ...

  10. 详解Oracle数据货场中三种优化:分区、维度和物化视图

    转 xiewmang 新浪博客 本文主要介绍了Oracle数据货场中的三种优化:对分区的优化.维度优化和物化视图的优化,并给出了详细的优化代码,希望对您有所帮助. 我们在做数据库的项目时,对数据货场的 ...

随机推荐

  1. centos7源码方式安装zabbix-4.0

    1.关闭防火墙 systemctl stop firewalld.service #临时关闭firewall systemctl disable firewalld.service #禁止firewa ...

  2. cronet 的简单学习

    官方的解释 "Cronet is the networking stack of Chromium put into a library for use on mobile. This is ...

  3. etcd实现分布式锁分析

    3篇关于分布式锁的文章,可以结合看: consul实现分布式锁:https://www.cnblogs.com/jiujuan/p/10527786.html redis实现分布式锁:https:// ...

  4. 【Android 逆向】【攻防世界】基础android

    1. 下载并安装apk,提示要输入密码 2. apk拖入到jadx中看一下 this.login.setOnClickListener(new View.OnClickListener() { // ...

  5. 记录级别索引:Hudi 针对大型数据集的超快索引

    介绍 索引是一个关键组件,有助于 Hudi 写入端快速更新和删除,并且它在提高查询执行方面也发挥着关键作用. Hudi提供了多种索引类型,包括全局变化的Bloom索引和Simple索引.利用HBase ...

  6. Docker方式快速启动一个Redis实例

    安装Redis有多种方式,除了可以通过各个平台的软件包工具安装外,还可以直接从源码安装. 但是,安装Redis可能会遇到一些这样的问题,比如: 1.网络环境比较差,下载耗时比较长 2.从源码编译安装时 ...

  7. Vue3学习(十九) - TreeSelect 树选择

    写在前面 我知道自己现在的状态很不好,以为放个假能好好放松下心情,结果昨晚做梦还在工作,调试代码,和领导汇报工作. 天呐,明明是在放假,可大脑还在考虑工作的事,我的天那,这是怎么了? Vue页面参数传 ...

  8. java+mysql实现的公益管理系统

    一功能 1.管理员的登录 2.公益项目的增删改查 3.负责人的增删改查 4.捐款人的增删改查 5.志愿者增删改查 二界面展示 1.欢迎界面 2.登录界面 3.系统首页 4.项目管理 5.负责人管理 6 ...

  9. 【Azure Entra ID】如何在中国区获取用户 StrongAuthenticationUserDetails 和 StrongAuthenticationMethods 信息

    问题描述 如何在中国区获取用户 StrongAuthenticationUserDetails 和 StrongAuthenticationMethods 信息 ? StrongAuthenticat ...

  10. 树莓派修改根文件系统为f2fs

    目录 前言 操作简述 我的实际操作步骤 1. 准备 2. 查看树莓派分区信息 3. 备份根分区 4. 格式化树莓派TF卡根分区为f2fs文件系统 5.恢复备份 前言 在TF卡.固态硬盘之类的nand存 ...