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. 使用JS快速读取TXT文件

    1 前言 最近有个需求,需要使用JS快速读取外部大数据文件(60w条记录的表).笔者尝试过使用JS读取Excel文件,但是跑了十几分钟仍未出结果,后来笔者尝试将原数据保存为TXT文件,再从TXT文件中 ...

  2. 【framework】View添加过程

    1 前言 WMS启动流程 中介绍了 WindowManagerService 的启动流程,本文将介绍 View 的添加流程,按照进程分为以下2步: 应用进程:介绍从 WindowManagerImpl ...

  3. ORA-24247问题解决

    错误信息: scott@ORCL> select utl_http.request('www.baidu.com') from dual; select utl_http.request('ww ...

  4. CF1398C Good Subarrays(写给我们萌新团体)

    Good Subarrays 传送门: Good Subarrays - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路 暴力!!!!! 一如既往的暴力!!! 复杂度O(n^2) ...

  5. 使用Gulp压缩静态资源

    如果希望对在静态页面中引入的相关资源进行压缩(比如:CSS,JavaScript,图片等),可以使用Gulp实现. 当然,还可以使用其他打包工具,比如:Grunt,Webpack等等. Gulp是什么 ...

  6. CXP2.0的相机是否可以使用CXP1.1的Grabber

    可以 答案是肯定的. 目前CXP共有2个发布版本: 2011年发布CXP1.1 2021年发布CXP2.1,向后兼容,新标准增加了同步功能.数据率放大了一倍. 只要是符合CXP标准.接插件匹配,那么C ...

  7. 第134篇:解决浏览器的CORS跨域问题(CORS policy: Cross origin requests are only supported for protocol schemes: http, data, isolated-app, chrome-extension, chrome-untrusted, https, edge.)

    好家伙,   我继续尝试着将我的飞机大战使用ES6模块化分离开来,出了点问题 1.出现问题: edge,chrome等一系列浏览器,会为了安全,禁止你跨域访问 目录如下: 主程序  index.htm ...

  8. Java 设计模式----单例模式--懒汉式

    1 package com.bytezreo.singleton; 2 3 /** 4 * 5 * @Description 单例模式 ---懒汉式 6 * @author Bytezero·zhen ...

  9. SQL之 逻辑库,数据表

    SQL语言三大类 创建逻辑库 创建数据表 例子 数据表其他操作 ps:desc仅仅查看表的结构,不能查看内容 添加字段 ps: 修改字段类型和约束 修改字段名称 删除字段

  10. 9、zookeeper的核心ZAB协议

    ZAB协议 zab协议的全称是 Zookeeper Atomic Broadcast (zookeeper原子广播).zookeeper是通过zab协议来保证分布式事务的最终一致性 1.ZAB协议是专 ...