十九種fix setup violation的方法
Setup violation的本質(zhì)是一個時鐘周期內(nèi)上一級寄存器鎖存的數(shù)據(jù)無法正確的傳輸?shù)较乱患壖拇嫫鞑⒈徽_地鎖存,也就是數(shù)據(jù)跑的太慢了。
這會減少cell delay;cell級數(shù)減少了,這種減小也不是單純地幾何倍數(shù)的減小,減小的程度應該是小于“remove buffer的數(shù)量???原來的cell delay“;因為net wire變長之后,電流從net一端傳播到net另一端電流衰減更加嚴重,對器件的充電速度變慢。
但是會增加net delay,net wire總長度變大,RC參數(shù)變大,RC曲線更加綿長。
我們知道buffer的結構基本上等價于兩個inverter,使用一對inverter替換buffer可以較少path上總的delay。
跟只用一個buffer相比,一對反相器會兩倍的減少transition time,所以這會減少RC delay。而一個buffer的cell delay約等于一對inverter的cell delay,但是net delay減小了,所以總的delay減小了。
方法三:swap VT
就是換cell的VT,就是把HVT換成SVT/RVT或者LVT。
相同情況下low VT的cell的柵極閾值電壓更低,所以對于該cell本身其slew更小;相同情況下low VT的cell的柵極導通電流更大,所以其對于后續(xù)的net wire的充電速度更快。
所以low VT的cell相當于從cell delay和net delay兩種角度去減小了總的delay。
不過,Low VT的cell靜態(tài)電流更大,靜態(tài)功耗也更大。
一般來說大驅(qū)動的cell具有更高的speed,但是可能某些cell類型,更大的cell可能速度更慢。
不過,這樣也會使得power更高,area更大。
方法五:insert buffer
插buffer會減小transition time,這會減小net delay。如果總的net delay的減小大于cell delay的增加;那么總的delay就會減小。
不過,這也會導致power和area增加。
這跟insert buffer類似,不過區(qū)別在于場景的不同。
Long net wire會導致大的RC delay,如果insert repeater可以將net wire切分成多段可以減少總的net delay;因為總的net delay的減少大于cell delay的增加,所以這是一種有效的方法。
本質(zhì)也是減少net delay。
方法八:調(diào)整clock skew
就是通過skew調(diào)整向后一級借setup余量。
方法九:給critial path用NDR走線
類似于CTS繞線原理,就是減少net wire的RC和cross-talk。
手動換高層走線或者手動把net wire捋直。
修crosstalk除了加shielding和NDR rule以外,還有一種方法是:違例點周圍的各種走線remove掉或者拉的遠一點。
如果實在修不下去,該降就降吧。
實在不行,也可以選用一些speed更快的庫,或者自己定做一些庫。
也分全局換庫和局部換庫,全局就是整個design都換,局部就是讓critical path用一些特殊的庫。
通過調(diào)整pg plan,釋放一部分高層繞線資源,也可利于修setup。
通過調(diào)整floorplan使得具有交互的module的位置更合理。
因為MBFF cell內(nèi)部的公共走線和公共的晶體管更多,所以其本身的load更大,那么transition time就更大,delay就更大;所以可以通過拆分MBFF cell來修setup violation。
方法十七:打拍
打拍就是在reg2reg path中間再加一個reg,一個周期搞不定的事情,分成兩個周期來做。
方法十九:改RTL
如果RTL綜合出來本身的timing path邏輯級數(shù)太長或者組合邏輯太多,可以考慮改RTL。
二種fix hold violation的方法
可以使用buffer、inverter piars、delay cell來修hold violation。
由于hold violation path的start point和end point可能對應著別的setup violation path(或者setup slack比較緊張),所以add delay時需要格外小心。
另外,一般不要再兩條timing path的commen path add delay。
方法二十一:size-down cell
盡可能去size end-point附近的cell,這樣對別的path影響較小。
另外修crosstalk和手動走線也可修hold。
歡迎各位讀者留言補充其他fix?timing的方法。