版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
本帖最后由 kenson 于 2011-2-11 12:36 编辑
& e% y. u( Q% ~! L7 c% D& R% z1 p+ j5 y( e0 \/ {
(原創) timing中的slack是什麼意思? (SOC) (Quartus II) * E# `7 |* J' H: v, p& V0 C& p
Abstract7 g7 J- A7 O; L1 }( b% G
在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。- w2 Z# S* f" w u
Introduction
: S. F( t. w$ o/ ?' b( Jslack英文本身的意思是鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示目前已經不滿足setup time/hold time的需求,並且不足多少時間。$ e! o6 B* T" d) K
要詳細知道slack怎麼算出來的之前,須先了解一些專有名詞。4 c) ^' ]( q, r* F5 N4 @. @7 q
Launch Edge & Latch Edge
2 X, d b6 |% ~$ g( d. Shttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new00_ef1e43e4-790e-4a32-b3aa-a8c3624fb7f4.gif
0 l) g2 a4 J% c+ v% vLaunch Edge:產生data的register 1所使用的clock rising edge。! [: M! z, S* M, J# o/ C0 v! ~
Latch Edge:接收data的register 2所使用的clock rising edge,會delay Lauch Edge 1個clk。
$ Y% h* X$ M) Z' ?, q7 a: w; H& z/ {$ {+ o! h0 ?
Setup Time & Hold Time
- e. c" u* ~. u& zhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack01_ff963616-bb28-426c-8556-afcd59623878.gif
( L, N! W3 @& CSetup Time:在clk rising edge之前,data必須穩定的最短時間,若不滿足setup time,data無法敲進register。
, D. g# _- E6 e0 V* _Hold Time:在clk rising edge之後,data必須穩定的最短時間,若不滿足hold time,data無法敲進register。9 ?3 m) h( V* c' d
Setup Time與Hold Time必須同時滿足,資料才可順利敲進register。" _3 m9 @$ q5 c8 y3 `$ {: r( h) j
7 l$ b% i; A) n$ b) G/ L
Data Arrival Time
6 T2 Y7 Z8 b" ghttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new01_3619dde7-c4eb-4391-b2d6-5f548073cdec.gif
! v% z8 j4 z% L4 B2 k( ?4 t! z# }9 gData Arrival Time:data實際到達register 2的input D時的時間。
+ p/ N& E$ [# H" X9 U所以從Lauch Edge開始,經過Tclk1 (register 1的clock skew),再加上Tco(register 1的clock to output delay),再加上Tdata(組合邏輯本身的delay),即為Data Arrival Time。
3 K, O" n3 _3 } s) _. |$ h, B9 R. u
Clock Arrival Time- l5 o* B( u7 P _% [9 t
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new02_133d7e3f-5bf8-4025-b0e8-805598b9e40d.gif
# \$ j+ P: l; y( @$ F* v2 EClock Arrival Time:clock實際到register 2 input的時間。
1 u. [4 M+ K% J% b所以從Latch Edge開始,經過Tclk2(register 2的clock skew),即為Clock Arrival Time。. P6 N$ l; E8 C r/ ~6 x8 B% Q8 K
3 V% X# s6 N, w5 G/ C
Data Required Time (Setup)( d4 F- L4 `9 @, I7 d" ^
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new03_76b16d74-57da-4851-9e58-1351feeb2f3d.gif
8 R& \* x* F8 X" A) d! n7 V& z4 fData Required Time (Setup):為了讓資料能敲進register,最遲須在何時能準備好資料。/ \* H! i- B8 G0 _, R7 L) w
所以從Clock Arrival Time開始(Latch Edge + Tclk2) 減掉 Tsu ,在扣掉一下額外的不確定值,即為Data Required Time (Setup)。
& f A: N: B* S0 a* G7 Y k: O5 ?" O1 i, u, Y1 W1 U
Data Required Time (Hold)" l( v: W0 Y* M( f( ^. S2 l5 g. q! b$ x
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new04_59a5a01d-74bb-4452-ab1a-b691c6735859.gif ! S4 Z0 Y( o0 A0 D
Data Required Time (Hold):為了讓資料能敲進register,資料至少需維持到何時。8 U' Q1 p' i( [. u( [3 w
所以從Clock Arrival Time開始(Latch Edge + Tclk2)加上Th,再加上一些額外的不確定值,即為Data Required Time (Hold)。
, Z: o- ], }- R7 T4 H2 i. n# D8 K1 T/ O6 l3 m6 d
Setup Slack
! h5 g+ Y! {; D% @4 ?/ Y) {3 uhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new06_29d1e12e-e809-4906-b046-f940ca6b12e9.gif
1 T1 {5 L1 h/ Y+ d( k0 ?講了這麼久,總算要進入主題Slack啦,先講Setup Slack,定義很簡單,只要將Data Required Time (Setup)減掉Data Arrival Time即可,也就是符合Setup Time的margin。
- W5 G; C. r$ s, @! x上面的Timing圖看起來很複雜,事實上以Lauch Edge為首導出來的只是Data Arrival Time,之前已經講過,而以Latch Edge為首導出來的是Data Required Time,之前也講過,現在只是將所有的timing都畫在一起而已。
: o! n X3 c# t6 f" P! L若Setup Slack為正,表示Data Required Time在Data Arrival Time之後,所以一定滿足Setup Time,反之若Setup Slack為負,則表示Data Arrival Time在Data Required Time之後,所以一定無法滿足Setup Time。
* L8 E0 W' r: W4 D# ?& t+ T. [
6 C" g4 z/ F' IHold Slack
; a, H9 |/ A) m: } \+ n3 zhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new07_4ad4a2f7-d22a-4f50-a875-6b6778d01759.gif
: g( j6 P. W% c2 A7 R0 a& L接下來講Hold Slack,定義也很簡單,只要將Data Arrival Time減掉Data Required Time (Hold)即可,也就是符合Hold Time的margin。
4 }6 e: {) j7 k6 o, B) Q上面的timing圖比較特殊些,主要是Data Arrival Time部分,因為要找Hold Slack,所以從Next Launch Edge開始,一樣加上Tclk1 + Tco + Tdata,而從Latch Edge開始加上Tclk2時為Data Required Time (Hold),這與之前講的一樣。
$ {6 k0 L# o2 n* M7 B5 I若Hold Slack為正,表示Data Arrival Time在Data Required Time之後,所以一定滿足Hold Time,反之若Hold Slack為負,則表示Data Required Time在Data Arrival Time之後,所以一定無法滿足Hold Time。" E; b* B9 A0 m5 F8 T# k7 e
4 r! j0 ~+ n2 R Q
Reference2 f- W# z0 e5 K; {2 P
Altera Quartus II Software Design Series:Timing Analysis5 P9 z) R, n7 Q; W$ O# S
" c9 r. m9 n2 \( w% w7 z3 M- a+ q3 u; N( D1 H# @
2 u- ?/ i' f% d0 d& m1 |
转:真 OO无双 |
|