版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
本帖最后由 kenson 于 2011-2-11 12:36 编辑 , h t4 F1 `( q) {
3 m) G: h! V6 ~$ r$ n, G x! p(原創) timing中的slack是什麼意思? (SOC) (Quartus II) / E8 O& L X$ `- C0 i( ]
Abstract
6 f# F+ |; A; G9 y在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。4 J5 b7 ~' Z4 M( U
Introduction: c% T( ^ j3 {- ~( I; l" p
slack英文本身的意思是鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示目前已經不滿足setup time/hold time的需求,並且不足多少時間。
0 @7 ~) O" X2 ~& [$ C& [# p: v" S要詳細知道slack怎麼算出來的之前,須先了解一些專有名詞。
3 D) o6 I* d$ RLaunch Edge & Latch Edge; m: H$ N0 {- r; m) h
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new00_ef1e43e4-790e-4a32-b3aa-a8c3624fb7f4.gif % Y" K: M- Q& W! X5 X4 f0 H
Launch Edge:產生data的register 1所使用的clock rising edge。4 r# D; T% ?6 b6 I; e' H6 C$ P
Latch Edge:接收data的register 2所使用的clock rising edge,會delay Lauch Edge 1個clk。) l& d0 t9 g. O2 V. X
* F+ ~+ S6 ^$ N2 M( ~. O
Setup Time & Hold Time' d( ^5 p& w: {1 h2 E4 z
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack01_ff963616-bb28-426c-8556-afcd59623878.gif " h6 c3 Y. }* D' v6 \, G
Setup Time:在clk rising edge之前,data必須穩定的最短時間,若不滿足setup time,data無法敲進register。
3 A2 d$ j* y$ k+ \7 w" LHold Time:在clk rising edge之後,data必須穩定的最短時間,若不滿足hold time,data無法敲進register。
Z K1 o: Y+ LSetup Time與Hold Time必須同時滿足,資料才可順利敲進register。
: W) K, `) L# Z6 g6 i7 U9 ?! h1 }' b0 Q- y
Data Arrival Time
/ g* B0 p# F3 h& Whttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new01_3619dde7-c4eb-4391-b2d6-5f548073cdec.gif : G$ e" i* K; ~1 n, n2 s
Data Arrival Time:data實際到達register 2的input D時的時間。9 J' g! M: F, U
所以從Lauch Edge開始,經過Tclk1 (register 1的clock skew),再加上Tco(register 1的clock to output delay),再加上Tdata(組合邏輯本身的delay),即為Data Arrival Time。
0 H4 B: f/ z# |6 z- P- Z
) B$ z* R7 T0 e# }" WClock Arrival Time
8 o" a/ f! C5 B3 x+ Uhttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new02_133d7e3f-5bf8-4025-b0e8-805598b9e40d.gif 2 ?+ a. [5 S: p* [) \2 R6 `
Clock Arrival Time:clock實際到register 2 input的時間。
3 n1 S3 l' w. B2 N* V所以從Latch Edge開始,經過Tclk2(register 2的clock skew),即為Clock Arrival Time。
* U9 p! ~6 b7 Z( B4 c" W2 Y. l4 @9 z0 e, q1 n
Data Required Time (Setup)
$ f) N. u) d7 t; @+ Q. X W, g1 ~# Thttp://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new03_76b16d74-57da-4851-9e58-1351feeb2f3d.gif 7 Y* t3 f; e2 [
Data Required Time (Setup):為了讓資料能敲進register,最遲須在何時能準備好資料。
3 a6 Q; j8 }' [( e所以從Clock Arrival Time開始(Latch Edge + Tclk2) 減掉 Tsu ,在扣掉一下額外的不確定值,即為Data Required Time (Setup)。6 s' Z1 l' ]6 y4 M$ z, J& ^
) H, E: ~8 i3 V5 ~Data Required Time (Hold)" N4 G: v3 }' y3 {5 y8 e
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new04_59a5a01d-74bb-4452-ab1a-b691c6735859.gif 5 m3 e/ p6 j* M8 c. F5 @
Data Required Time (Hold):為了讓資料能敲進register,資料至少需維持到何時。
0 X( x( I% r" l) ?* t( b; L所以從Clock Arrival Time開始(Latch Edge + Tclk2)加上Th,再加上一些額外的不確定值,即為Data Required Time (Hold)。6 u2 N5 Z$ k# Y0 t2 w, S; {
! q+ _2 n/ c0 u
Setup Slack8 D2 c( v9 Q# s) E% Y- V5 m: N
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new06_29d1e12e-e809-4906-b046-f940ca6b12e9.gif 5 m. k y4 R5 }! k+ D5 X
講了這麼久,總算要進入主題Slack啦,先講Setup Slack,定義很簡單,只要將Data Required Time (Setup)減掉Data Arrival Time即可,也就是符合Setup Time的margin。
) @8 m. ?8 D |上面的Timing圖看起來很複雜,事實上以Lauch Edge為首導出來的只是Data Arrival Time,之前已經講過,而以Latch Edge為首導出來的是Data Required Time,之前也講過,現在只是將所有的timing都畫在一起而已。( Y( Q5 b6 b P
若Setup Slack為正,表示Data Required Time在Data Arrival Time之後,所以一定滿足Setup Time,反之若Setup Slack為負,則表示Data Arrival Time在Data Required Time之後,所以一定無法滿足Setup Time。
2 r7 R4 n( Y+ O: g# {* R( p
3 C; @/ d( l: p- HHold Slack5 ]- [. X' K. n3 T; q, B: g; K
http://images.cnblogs.com/cnblogs_com/oomusou/WindowsLiveWriter/timingslackSOCQuartusII_EA20/slack_new07_4ad4a2f7-d22a-4f50-a875-6b6778d01759.gif
+ x9 c# i/ p9 L4 z: g5 t# |接下來講Hold Slack,定義也很簡單,只要將Data Arrival Time減掉Data Required Time (Hold)即可,也就是符合Hold Time的margin。
7 P/ }, J$ k/ v8 ]; M& Z8 ]上面的timing圖比較特殊些,主要是Data Arrival Time部分,因為要找Hold Slack,所以從Next Launch Edge開始,一樣加上Tclk1 + Tco + Tdata,而從Latch Edge開始加上Tclk2時為Data Required Time (Hold),這與之前講的一樣。
9 n9 P7 Y" a4 e9 ^, t9 v. x若Hold Slack為正,表示Data Arrival Time在Data Required Time之後,所以一定滿足Hold Time,反之若Hold Slack為負,則表示Data Required Time在Data Arrival Time之後,所以一定無法滿足Hold Time。
9 t' X# U9 d+ E: {1 A/ e3 D. |; |6 P+ k) U) \. S6 k8 E
Reference
" n N+ O( T* [0 M! m! F. ~Altera Quartus II Software Design Series:Timing Analysis# j* p. s1 _$ P3 a1 i) L; H% U
9 @4 n0 E: @ @! y6 [; v
. l/ [% W4 P7 G: r8 U
* g. e( [. U8 Y5 C% L" O! M转:真 OO无双 |
|