首先,我們回憶一下setup的定義。下圖-1展示了一條典型的timing path以及setup的計算方法。
Setup定義:Data在clock到來之前必須要保持穩定一定時間。按照上圖的timing path,setup應該滿足如下條件:
1. 減少data line的delay
1) 換速度更快的cell。
對絕大多數工藝,任何一種標准單元(standardcell)都有不同種速度的Library,也就是常說的不同Vt的cell,比如HVT, RVT, LVT或者SLVT。其中HVT cell速度最慢,SLVT速度最快。而減少data line delay最常用的方法就是更換不同Vt的cell,比如HVT的cell換成RVT, LVT或者SLVT。
2)更換驅動能力更強的cell。
在某些timing path中,可能會出現因為cell的驅動能力比較弱而產生比較大的delay。這時就可以將這種cell更換成驅動能力更強的cell。比如X2倍的cell更換成X4或者X6的cell。
3)將net的layer更換成阻值更低的金屬層以減小cell的load和net delay
對於金屬層,一般來說越向上的層阻值越小,而阻值越小cell delay也越小,net delay也越小。
2. 減少launch clock line的delay
Clock line不同於data line的地方在於,在實際設計中,一般是要求clock line必須使用最快的cell。具體原因需要讀者理解skew,latency和OCV的概念后再做解釋。因此要使clock line變快,更換不同Vt的cell是行不通的。可行的辦法是根據clock line的物理和邏輯情況通過減少clock line的級數來減小delay。但是這極其限制其實現的可能性,因此在實際工作中這種方法應用的並不多。
3. 增加capture clock line的delay
此方法是后端常用的所謂useful skew的方法。實際操作很簡單,就是在capture register的CK pin插入buffer或者inverter以增加capture clock delay。