(原創) timing中的slack是什麼意思? (SOC) (Quartus II)
Abstract
在分析timing時,在timing report中常會出現setup time slack與hold time slack,本文深入探討slack的意義。
Introduction
slack英文本身的意思是鬆弛,若setup time/hold time slack為正值,表示目前滿足setup time/hold time需求,並且還有多餘的時間,若slack為負值,表示目前已經不滿足setup time/hold time的需求,並且不足多少時間。
要詳細知道slack怎麼算出來的之前,須先了解一些專有名詞。
Launch Edge & Latch Edge
Launch Edge:產生data的register 1所使用的clock rising edge。
Latch Edge:接收data的register 2所使用的clock rising edge,會delay Lauch Edge 1個clk。
Setup Time & Hold Time
Setup Time:在clk rising edge之前,data必須穩定的最短時間,若不滿足setup time,data無法敲進register。
Hold Time:在clk rising edge之後,data必須穩定的最短時間,若不滿足hold time,data無法敲進register。
Setup Time與Hold Time必須同時滿足,資料才可順利敲進register。
Data Arrival Time
Data Arrival Time:data實際到達register 2的input D時的時間。
所以從Lauch Edge開始,經過Tclk1 (register 1的clock skew),再加上Tco(register 1的clock to output delay),再加上Tdata(組合邏輯本身的delay),即為Data Arrival Time。
Clock Arrival Time
Clock Arrival Time:clock實際到register 2 input的時間。
所以從Latch Edge開始,經過Tclk2(register 2的clock skew),即為Clock Arrival Time。
Data Required Time (Setup)
Data Required Time (Setup):為了讓資料能敲進register,最遲須在何時能準備好資料。
所以從Clock Arrival Time開始(Latch Edge + Tclk2) 減掉 Tsu ,在扣掉一下額外的不確定值,即為Data Required Time (Setup)。
Data Required Time (Hold)
Data Required Time (Hold):為了讓資料能敲進register,資料至少需維持到何時。
所以從Clock Arrival Time開始(Latch Edge + Tclk2)加上Th,再加上一些額外的不確定值,即為Data Required Time (Hold)。
Setup Slack
講了這麼久,總算要進入主題Slack啦,先講Setup Slack,定義很簡單,只要將Data Required Time (Setup)減掉Data Arrival Time即可,也就是符合Setup Time的margin。
上面的Timing圖看起來很複雜,事實上以Lauch Edge為首導出來的只是Data Arrival Time,之前已經講過,而以Latch Edge為首導出來的是Data Required Time,之前也講過,現在只是將所有的timing都畫在一起而已。
若Setup Slack為正,表示Data Required Time在Data Arrival Time之後,所以一定滿足Setup Time,反之若Setup Slack為負,則表示Data Arrival Time在Data Required Time之後,所以一定無法滿足Setup Time。
Hold Slack
接下來講Hold Slack,定義也很簡單,只要將Data Arrival Time減掉Data Required Time (Hold)即可,也就是符合Hold Time的margin。
上面的timing圖比較特殊些,主要是Data Arrival Time部分,因為要找Hold Slack,所以從Next Launch Edge開始,一樣加上Tclk1 + Tco + Tdata,而從Latch Edge開始加上Tclk2時為Data Required Time (Hold),這與之前講的一樣。
若Hold Slack為正,表示Data Arrival Time在Data Required Time之後,所以一定滿足Hold Time,反之若Hold Slack為負,則表示Data Required Time在Data Arrival Time之後,所以一定無法滿足Hold Time。
Reference
Altera Quartus II Software Design Series:Timing Analysis