版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
本帖最后由 kenson 于 2011-2-11 12:36 编辑 # Z% ?- N [3 l6 u& S3 M
: `& w7 G# S: N(原創) timing中的slack是什麼意思? (SOC) (Quartus II) ( j$ }% j1 G3 e
Abstract( N2 p: e2 S3 h' |- m$ M
在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。
4 J5 ^- f! [: ^$ k( HIntroduction2 p+ h/ h: N9 l7 T
slack英文本身的意思是鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示目前已經不滿足setup time/hold time的需求,並且不足多少時間。
- q5 X% W# x# J! g5 J要詳細知道slack怎麼算出來的之前,須先了解一些專有名詞。
! F; [1 }3 m5 }# ~Launch Edge & Latch Edge* P; w* z2 {, f! ]
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new00_ef1e43e4-790e-4a32-b3aa-a8c3624fb7f4.gif
. [+ W* j" [& f( LLaunch Edge:產生data的register 1所使用的clock rising edge。
/ [$ O9 `0 G& A. F7 f; R% C2 D5 g7 bLatch Edge:接收data的register 2所使用的clock rising edge,會delay Lauch Edge 1個clk。
% e: h8 U9 V6 C" ^
4 J# I. V1 Z; q; T1 Y3 _4 `Setup Time & Hold Time
1 M. D' I& L: n% H) \http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack01_ff963616-bb28-426c-8556-afcd59623878.gif
- E2 }( @6 C Z9 X' i- JSetup Time:在clk rising edge之前,data必須穩定的最短時間,若不滿足setup time,data無法敲進register。
4 a1 L) E, u: F: I l6 V# S& THold Time:在clk rising edge之後,data必須穩定的最短時間,若不滿足hold time,data無法敲進register。/ z2 m$ W3 b4 q4 V
Setup Time與Hold Time必須同時滿足,資料才可順利敲進register。( G9 M1 @5 P6 s
7 s5 E& ^9 q4 [& Z" DData Arrival Time
2 z- ]7 E+ Q% m9 ^- Ghttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new01_3619dde7-c4eb-4391-b2d6-5f548073cdec.gif 2 D! o y% ?4 t/ A' p
Data Arrival Time:data實際到達register 2的input D時的時間。
# p+ c3 v! [6 T" S所以從Lauch Edge開始,經過Tclk1 (register 1的clock skew),再加上Tco(register 1的clock to output delay),再加上Tdata(組合邏輯本身的delay),即為Data Arrival Time。
: u, p; k, }5 x$ ?2 J; G9 s' F$ y, T, p8 J7 ] i/ t
Clock Arrival Time
, c7 Z9 J% z5 x% M( Whttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new02_133d7e3f-5bf8-4025-b0e8-805598b9e40d.gif
/ n) {7 p# g7 j$ l7 v: M+ O& ^& \/ vClock Arrival Time:clock實際到register 2 input的時間。# ]3 W2 D; O" x, J9 m
所以從Latch Edge開始,經過Tclk2(register 2的clock skew),即為Clock Arrival Time。
" B& e7 q* N1 w; I4 r0 @2 ^
) Q4 | i$ W- \, g5 yData Required Time (Setup)
! m& D1 p. s% [) E" q, H8 Xhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new03_76b16d74-57da-4851-9e58-1351feeb2f3d.gif
6 w5 k9 d8 G0 J' W9 T- GData Required Time (Setup):為了讓資料能敲進register,最遲須在何時能準備好資料。/ b6 v" P, }5 Q. R
所以從Clock Arrival Time開始(Latch Edge + Tclk2) 減掉 Tsu ,在扣掉一下額外的不確定值,即為Data Required Time (Setup)。8 x6 S; @1 U, i) m6 T5 [
# |. v9 C3 {. k& a
Data Required Time (Hold)
, y k. h9 T3 bhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new04_59a5a01d-74bb-4452-ab1a-b691c6735859.gif ' ?4 e/ N! e. q+ x+ j" T% }5 J7 G& U/ g
Data Required Time (Hold):為了讓資料能敲進register,資料至少需維持到何時。
" I) }( J7 E3 T9 v* i% I& g所以從Clock Arrival Time開始(Latch Edge + Tclk2)加上Th,再加上一些額外的不確定值,即為Data Required Time (Hold)。1 k) n1 D' t+ W2 u$ p: C0 V8 a
+ J Y3 x p+ m9 q0 V$ V8 |( J; qSetup Slack( J8 p s0 z0 |0 t/ e4 |, c
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new06_29d1e12e-e809-4906-b046-f940ca6b12e9.gif
) q1 H9 I: Y1 ~. T# F. q講了這麼久,總算要進入主題Slack啦,先講Setup Slack,定義很簡單,只要將Data Required Time (Setup)減掉Data Arrival Time即可,也就是符合Setup Time的margin。7 w0 p# q& d( B% G4 B4 ?: e! w" j; G q7 |
上面的Timing圖看起來很複雜,事實上以Lauch Edge為首導出來的只是Data Arrival Time,之前已經講過,而以Latch Edge為首導出來的是Data Required Time,之前也講過,現在只是將所有的timing都畫在一起而已。2 U4 w+ F1 z3 G
若Setup Slack為正,表示Data Required Time在Data Arrival Time之後,所以一定滿足Setup Time,反之若Setup Slack為負,則表示Data Arrival Time在Data Required Time之後,所以一定無法滿足Setup Time。( W2 H% Q4 L/ {" A
; c, n# X+ [! ^, m; a
Hold Slack
- N% V* L2 V' E5 W" vhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new07_4ad4a2f7-d22a-4f50-a875-6b6778d01759.gif 0 O# p" H* a3 x2 |* M9 F
接下來講Hold Slack,定義也很簡單,只要將Data Arrival Time減掉Data Required Time (Hold)即可,也就是符合Hold Time的margin。
, u! p- W. }( _7 @4 A上面的timing圖比較特殊些,主要是Data Arrival Time部分,因為要找Hold Slack,所以從Next Launch Edge開始,一樣加上Tclk1 + Tco + Tdata,而從Latch Edge開始加上Tclk2時為Data Required Time (Hold),這與之前講的一樣。" q7 @1 q) O3 G" `% W6 I
若Hold Slack為正,表示Data Arrival Time在Data Required Time之後,所以一定滿足Hold Time,反之若Hold Slack為負,則表示Data Required Time在Data Arrival Time之後,所以一定無法滿足Hold Time。# R8 v& K1 _) e
) ~3 Y; O; d8 Y# ?Reference
/ p; b& o+ h4 F0 ^" GAltera Quartus II Software Design Series:Timing Analysis) F. ?* V; h) c8 K! j/ w; d: d0 L
2 V: ^$ ^' E6 s% D! S0 x- |
0 g9 }+ u0 r& m1 ]1 X% B. Y" O. r4 c+ e) V* H3 l1 W. ~
转:真 OO无双 |
|