FPGA中改善时序性能的方法_advanced FPGA design
本文内容摘自《advanced FPGA design》对应中文版是 《高级FPGA设计,结构,实现,和优化》第一章中的内容
FPGA中改善时序,我相信也是大家最关心的话题之一,在这本书中列举了一些方法供给大家参考。
1,插入寄存器(Add Register Layers),在中文版中被翻译成:添加寄存器层次。即,在关键路径中插入寄存器。
这种方式会增加设计的时滞(clock latency)。插入了几个寄存器,结果输出就会延长几个周期,在不违反设计规格(对clock latency有要求)以及功能没有影响的时滞情况之下可以这么做。
2,并行结构。把串行改成并行。最典型的就是乘法器了。
作为一个16bit的乘法器,最省资源的就是等待16个clock出结果,也可以是设计成面积最大但是出来结果速度最快的,只需要一个周期就可以出来结果。
3,逻辑展开(Flatten Logic Structures)。中文版同样翻译的很保守:展平逻辑结构。
仔细看了看,觉得里面应该包含了连个知识点。第一是逻辑复制,特别是针对大扇出(详情在altera的官方视频资料中有提到),通常使用generate或者是在综合器中设定。第二个是消除代码中的优先级。这里需要多说一句:现在的工具很智能,就算你写成if else 有优先级的结构,有时候也能综合出并行结构。如果并行也符合你的设计要求,为了安全起见,最好还是写成case这种并行结构比较好。
4,寄存器平衡 (Register Balancing)。
寄存器平衡就是在你的关键路径中移动你的寄存器。第一就是你手动移动 —— 改代码。第二就是设定综合器让它自己移动 —— 不到万不得已不这么干,因为这么多导致代码移植性变差。
5,路径重组
这是最有意思的一个方法,也是体现你的设计水平的方式。结果书中给出的例子确实让我惊讶了一下。为啥呢,先贴出代码
第一版:
module randomlogic_1(
output reg [:] Out,
input [:] A, B, C,
input clk,
input Cond1, Cond2);
always @(posedge clk)
if(Cond1)
Out <= A;
else if(Cond2 && (C < ))
Out <= B;
else
Out <= C;
endmodule
第二版:
module randomlogic_2(
output reg [:] Out,
input [:] A, B, C,
input clk,
input Cond1, Cond2); wire CondB = (Cond2 & !Cond1); always @(posedge clk)
if(CondB && (C < ))
Out <= B;
else if(Cond1)
Out <= A;
else
Out <= C;
endmodule
从代码上来看2版好像还比第一版路径更长,因为 out <= B,的路径从 Cond2 && (C < 8) 变成了 (Cond2 & !Cond1) && (C < 8)。似乎还变长了,怎么叫优化了呢?实际上,如果我们不看下面的图,自己模仿RTL Viewer,发现2版的关键路径真的比1短。书中给出的图示也是如此,这是第一版的视图,关键路径经历了4个器件

这是第二版的视图,关键路径居然少了一个器件。

这就是我惊讶的地方,因为这种做法从代码上看不出来。所以需要更高的硬件知识才能驾驭啊。
欢迎加入: FPGA广东交流群:162664354
FPGA开发者联盟: 485678884
FPGA中改善时序性能的方法_advanced FPGA design的更多相关文章
- ASP.NET中26种性能优化方法
系统类 Type类,Object类,String类, Arrary类,Console类, Exception类,GC类, MarshalByRefObject类, Math类. DateTime结构 ...
- js-JavaScript高级程序设计学习笔记21 改善JavaScript性能的方法
第24章 最佳实践 1.性能 1.避免全局查找 将在一个函数中会用到多次的全局对象保存在局部变量.比如多次使用document.getElement...,可以首先var doc=document,把 ...
- Altera FPGA中的pin进一步说明
最近END china上的大神阿昏豆发表了博文 <FPGA研发之道(25)-管脚>,刚好今天拿到了新书<深入理解Altera FPGA应用设计>第一章开篇就讲pin.这里就两者 ...
- Quartus II中FPGA的管脚分配保存方法
一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择“Assignments ->Pin”标签(或者点击按 ...
- FPGA中浮点运算实现方法——定标
有些FPGA中是不能直接对浮点数进行操作的,仅仅能採用定点数进行数值运算.对于FPGA而言,參与数学运算的书就是16位的整型数,但假设数学运算中出现小数怎么办呢?要知道,FPGA对小数是无能为力的,一 ...
- Sql Server中三种字符串合并方法的性能比较
文章来自:博客园-DotNet菜园 最近正在处理一个合并字符吕的存储过程,在一个测试系统的开发中,要使用到字符串合并功能,直接在Sql中做.示例:有表內容﹕名称 內容1 abc1 ...
- 实例分析ASP.NET在MVC5中使用MiniProfiler监控MVC性能的方法
这篇文章主要为大家详细介绍了ASP.NET MVC5使用MiniProfiler监控MVC性能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 MiniProfiler ,一个简单而有效的迷你剖析器 ...
- 数字IC前后端设计中的时序收敛(二)--Setup违反的修复方法
本文转自:自己的微信公众号<数字集成电路设计及EDA教程> 里面主要讲解数字IC前端.后端.DFT.低功耗设计以及验证等相关知识,并且讲解了其中用到的各种EDA工具的教程. 考虑到微信公众 ...
- (转载)Quartus II中FPGA的管脚分配保存方法(Quartus II)
一.摘要 将Quartus II中FPGA管脚的分配及保存方法做一个汇总. 二.管脚分配方法 FPGA 的管脚分配,除了在QII软件中,选择"Assignments ->Pin&quo ...
随机推荐
- Java中文乱码问题研究(二)
上面写了console的乱码问题,接下来写的是web中servlet中的问题,大楷我比较关心一点,因为遇到这个的情况多一些吧.直接开始吧. 2. jsp和servlet中的乱码问题 分析: a. 其实 ...
- Objective-C时间戳转换的转换和时间
什么是时间戳? 时间戳(timestamp),一般是一个字符序列.唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用. 思考:简单来讲就是依据文件hash加密后生成的摘要和时间生成的时 ...
- Objective-C中的@dynamic
一.@dynamic与@synthesize的区别 @property有两个对应的词,一个是@synthesize,一个是@dynamic.如果@synthesize和@dynamic都没写,那么默认 ...
- Hadoop 架构初探
对流行Hadoop做了一些最基本的了解,暂时没太大感觉,恩先记点笔记吧. = = Hadoop 基本命令及环境安装 一.下载虚拟机镜像 目前比较流行的有以下三个: (CHD) http://www.c ...
- osg项目经验1<MFC+OSG中模型点选效果>
点选主要是重载osg的GUIEventHandler, class CPickHandler : public osgGA::GUIEventHandler{ //自定义回调函数名:CPickHand ...
- MyEclipse下Struts2配置使用和Ajax、JSON的配合
原创文章,转载请注明:MyEclipse下Struts2配置使用和Ajax.JSON的配合 By Lucio.Yang 新手,初学Struts2的配置,同时尝试与Ajax通过JSON交互.首先介绍M ...
- smarty函数-转载
Smarty常用函数 2009-08-13 14:05:55| 分类: Php |举报 |字号 订阅 1 .include_once语句: 引用文件路径,路径必需正确. eg:include ...
- ubuntu-10.04的测试环境 安装测试 Coreseek开源中文检索引擎-Sphinx中文版
主要参考文档:http://www.coreseek.cn/products-install/install_on_bsd_linux/ 一. 32位版本: coreseek安装需要预装的软件: ap ...
- zoj 2071 Technology Trader 最大权闭合子图
传送门 和上一题一样, 也是一个最大权闭合子图.不过建图好麻烦的感觉 写了好久. 源点和原材料连边, 权值为val. 汇点和产品连边, 权值为val. 产品与和它有关系的材料连边, 权值inf. 最 ...
- 随机数、continue、break
arc4random() — 返回一个随机数(无符号整型). 如果要随机一个 [a, b]范围内的整数 公式:arc4random() % (b - a + 1) + a; #include &l ...