TA的每日心情 | 奋斗 2014-2-9 10:11 |
---|
签到天数: 16 天 连续签到: 1 天 [LV.4]偶尔看看III
|
8.布局布线(place & route,PAR)
前几天有人问笔者:用chip planner看布局布线后的网表,为啥有些逻辑放得很近,有些放的远。
一般来说这个问题没有标准解,因为PAR具有一定随机性(seed,effort level等都会影响,甚至HDL中的一个小小改动都会影响)。当然也有一些常见的原因,比如:
上图的寄存器就处于左右为难,里外不是人的纠结状态。。
推荐阅读:
a) 2011.2.25_增量编译 by foreveryoung
9.时序
还有人还问了笔者一个问题,IO时序不太理想,怎么优化?笔者的回答是首先先做IO的register packing。而能这么做的基础是IOB中有一个寄存器专门负责处理这种情况的。还是那句话,如果了解FPGA的结构,这些问题将不再是问题。
说到时序,当然要说静态时序分析(static timing analysis,STA)。不是所有时序问题都需要做时序约束才能解决,但是不了解时序分析的基础知识,很多要求的coding style是无完美解释通的。
比如,都在说少用if-else,而要用case,为啥?答曰,因为逻辑层级少。那为啥逻辑层级少更好?
又比如,关于异步复位,大都处理成异步复位同步释放,那么为什么这种结构能有效解决亚问题的问题?
再比如,有些初学者不习惯使用PLL,而喜欢用寄存器计数分频或者门控信号作为时钟,即通常所说的ripple clock和gated clock。为什么在FPGA设计中不推荐这两类时钟?
如果有时序分析的基础,这些问题能得到很直观的理解和体会。
第八点和第九点只是告诉刚入门的新人,有这么个东西,等入门了以后表忘了有这么个领域需要攻克。
推荐阅读:
a) 通向FPGA之路---七天玩转Altera之时序篇V1.0
b) 时序优化实验部分 V1.0 by foreveryoung
9.广告
以下是我做的一些笔记。
a) 2011.2.25_增量编译 by foreveryoung
b) Netlist Viewer by foreveryoung
c) 通向FPGA之路---七天玩转Altera之基础篇V1.0
d) 通向FPGA之路---七天玩转Altera之时序篇V1.0
e) 通向FPGA之路---七天玩转Altera之验证篇V1.0
f) 状态机设计 by foreveryoung V2.0
后记:
上文提出了很多为什么,笔者没有直接给出答案,留给读者自己探索了。如果想就这些问题进行进一步交流,请加群:91968656。当然,除去因相关理论不足导致的问题,很多时候当有疑问时,首先因做的是自己尝试,然后通过观察RTL viewer或technology map viewer,仿真等手段验证。所谓大胆假设,小心求证。
好了,笔者原还想扯一下优化,但转念一想,已经扯了九点,九乃大数,便作罢。而且一次扯太多容易让人产生疲倦感。故本文到此为止。下次有机会再补充。
完
|
|