通常我們在計算時序問題時,一般重點遵循以下兩個條件以保證足夠的Timing Margin:
1. Tflightmax + Driver(Tcomax) + Skew + Jitter + Crosstalk + Receiver(Setup)< Clock Period
2. Tflightmin + Driver(Tcomin) - Receiver(Hold) - Skew - Crosstalk > 0
其中Driver的Tco一般可以從器件的Datasheet上查到。
Tco其實包括器件的內(nèi)部邏輯延時和I/O緩沖延時(Buffer delay),一般通過加一個測試負載(通常為50ohm)來測量,即時鐘信號到Driver開始至測量點信號上升到測量電平(Vms)的時延。[器件datasheet上查到的Tco就是這個值]
我們通常想通過仿真工具,是得到最大/最小 Flight time. 在Cadence SpecctraQuest里面:
Tflightmax一般被稱為 Final settle delay
而 Tflightmin 也稱為 First switch delay
分別指器件經(jīng)過Buffer的輸出波形達到Vms開始到接收端到達最大/小閾值電壓的時間。
盡管Cadence也是這樣定義的,但是在實際仿真中,如果默認仿真參數(shù)Buffer delay選From library的話,通常計算出的Final settle delay/First switch delay是從零時刻開始到接收端到達最大/小閾值電壓的時間,也就是說里面已經(jīng)包含了緩沖延時(是Tco的一部分),這樣,如果我們再使用上面提到的公式1,2來計算時許的時候就會造成Tco中的Buffer delay被重復計算。
解決的方法就是要修正仿真出來的Tflightmax和Tflightmin,減去一個Buffer delay.
有兩種可能:
1.如果IBIS的測試負載和器件手冊上注明的Tco的測試負載相同的話,我們可以通過Cadence工具直接計算出來,只要將Buffer delay設(shè)置為On-the-Fly模式下,這時仿真結(jié)果會自動計算出減去Buffer delay后的真正的最大/最小Flight Time,也可以在其模型編輯器直接看器件的上升波形,測量其上升到Vms的時間,就可以大致確定Buffer Delay的時間,經(jīng)過試驗,發(fā)現(xiàn)兩者計算出來的偏差在0.01ns左右。
2.如果IBIS的測試負載和器件手冊上注明的Tco的測試負載不同的話,則可以用Cadence模型編輯器修改IBIS的端接負載和測量Tco的一致,然后從仿真出來的波形中得出Tco中的測量Buffer delay。
幾點疑問:
1. 選用On-the-fly模式除了在計算buffer delay上,其他方面和選From Library有何不同?好像對仿真結(jié)果沒有什么影響(除了Help文檔上說的On-the-fly時Driver只能加Pulse激勵)。
2. 如果IBIS模型中沒有提供Vms ,Cadence將如何計算?其默認值是多少?
3. 上面對時序以及Cadence工具的理解是否有誤?