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. STM32的时钟控制RCC和外设定时器

    STM32的RCC(Reset and Clock Control)时钟控制 stm32f103c8的时钟是72MHz, stm32f401ccu6的时钟是80M, 开发板板载两个晶振, 一个高速一个 ...

  2. 使用JS访问本地数据库

    1 前言 有时候,数据业务比较大,比如查询百万级的数据,如果使用JSP查询数据库,JSP的返回结果一般放在域名后面返回给客户端,而返回结果的长度是有限制的,数据过长可能会丢失部分数据:另一方面数据量大 ...

  3. React闭包陷阱

    React闭包陷阱 React Hooks是React 16.8引入的一个新特性,其出现让React的函数组件也能够拥有状态和生命周期方法,其优势在于可以让我们在不编写类组件的情况下,更细粒度地复用状 ...

  4. Java设计模式-装饰者模式Decorator

    介绍 装饰者模式的核心思想是通过创建一个装饰对象(即装饰者),动态扩展目标对象的功能,并且不会改变目标对象的结构,提供了一种比继承更灵活的替代方案.需要注意的是,装饰对象要与目标对象实现相同的接口,或 ...

  5. Idea:Fetch failed: fatal: Could not read from remote repository

    今天在idea工具中fetch github仓库报错:Fetch failed: fatal: Could not read from remote repository 查了以下需要调整下setti ...

  6. startswith/endswith传元组用法

    className = ["jd_num01","jd_num02","tx_num01", "tx_num02", & ...

  7. Linux或者Mac解压乱码问题

    1.unar : 命令行解压工具 2.安装: ubuntu等Linux安装方法:sudo apt install unar mac系统安装方法:brew install unar 现在mac电脑用 T ...

  8. 【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误

    问题描述 使用Docker Compose方式合并多个镜像(Images)文件,然后部署到App Service中,结果失败.报错 Linux Version 太长,不能超过4000个字符. 错误消息 ...

  9. 【Azure Redis 缓存】Azure Cache for Redis 专用终结点, 虚拟网络, 公网访问链路

    问题描述 为优化Redis访问链路,对下面三种方案进行对比: 1.Redis添加到虚拟网络 2.Redis添加专用终结点 3.Redis默认公共链路 问题分析 第三种:Redis默认公共链路,顾名思义 ...

  10. 在Avalonia项目中使用MediatR和MS.DI库实现事件驱动通信

    大家好,我是沙漠尽头的狼! AvaloniaUI是一个强大的跨平台.NET客户端开发框架,让开发者能够针对Windows.Linux.macOS.Android和iOS等多个平台构建应用程序.在构建复 ...