|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 pulbieup 于 2019-7-9 14:30 编辑 7 g$ j% M J0 O: D" m- ~
# J' O4 G3 n$ D+ @1.扇出太多引起的时许问题。# l2 O5 ~* S7 h
1 f! c9 o0 F8 S% z5 x
8 u$ `4 E$ G! j* | 信号驱动非常大,扇出很大,需要增加驱动能力,如果单纯考虑驱动能力可以尝试增加buffer来解决驱动能力,但在插入buffer的同时增加了route的延时,容易出现时序报告评分问题。' C# O+ u9 i4 ^; I* M
2 `% o a" I6 u& A' h8 [" B
3 I: b9 Z" [* g
解决该问题常用方法为进行驱动信号逻辑复制,即对扇出很大的信号产生逻辑进行多次复制,生成多路同频同相的信号去驱动下级逻辑电路。保证了时延同时也增大了驱动能力。但是该方法在使用过程中可以和buffer一起使用,平衡资源利用率和时延,防止资源分配不均或者时序考虑不周。
% q/ _7 ]+ M Q) c1 J
; |3 v7 E9 v/ e8 s+ W
. ?2 B3 v+ `% z" \0 \7 ~6 x--------------------------------------------------------------------------------- ^3 [3 x. E! T; [
- m+ H' A! w. R
2 P, V) K8 b7 D j( X2.对于时钟频率要求较高导致的上升沿下降沿对不同的寄存器操作的问题。
+ p+ s# J' l$ H5 B q3 b
# z2 u* L. `3 j4 }0 E" U7 R% A! p
首先分析该问题产生原因,如果上升沿下降沿都使用,就相当于是电平触发,电平触发比时钟沿触发更容易受到干扰,所以一般不同时对一个时钟的上升沿和下降沿分别对不同的寄存器操作。
8 C3 b: Q# f1 X) l& E6 ?, H7 V9 U: W. t9 X5 [- k8 M9 v+ O
' F1 ?% r9 P Z
1)将时钟通过MMC或者PLL产生180相移产生新的时钟,新的始终的上升沿就是原时钟的下降沿,从而实现都为上升沿触发。! T, F4 \$ {9 @! E! O7 W4 ], p# a
# ?: `; f- }9 I4 d" Q8 ^# u& |8 j
. G+ Q, L1 W- e' b 2)使用全局时钟资源中的INV实现对原时钟信号取反,然后新的时钟信号的上升沿就是原时钟的下降沿。
O" A G7 d; |" l- i) n5 H! v, s% j! Y, h
2 r$ ]. I+ i! G i, D% _7 K
另外对于其他方法要思考,比如对原时钟信号进行倍频实现上升沿下降沿均为上升沿,这个方法直接提升系统时钟速率一倍,如果不是时钟速度太高这个上升沿下降沿问题也不会出现了,故,该方法暂不考虑。还有就是对于时钟的使用一定要使用PLL或者MMC这些专门的时钟内核生成。
, M; X$ J- S( x) z, a
7 R" O4 b( L3 Q% B+ f7 x& a! N4 b4 F' V r: u( G3 z. M; H Z, R. _
* J X! c/ }& X: ^' {9 [. y/ y0 }* B& y
|
|