S CRPR clock reconvergence pessimism removal
C CPPR clock path pessimism removal
剔除公共clock path上的悲觀度。
看圖說話,上圖是最常見最基本的一條timing path: 有launch clock path, data path 跟 capture clock path; 大多數電路中的大多數timing path 的launch clock 跟 capture clock 都從同一個時鍾源頭來,經過一段『共享路徑』后分離,再各自達到自己的『彼岸』。這段『共享路徑』的英文名兒叫: common clock path; launch clock path 跟 capture clock path 分道揚鑣點的英文名兒叫: common point. CRPR/CPPR 的操作對象就是common point 跟common clock path.
一個view 對應一套PVT 的庫跟某一個確定的RC corner, 在確定的PVT 跟 RC corner 下,common clock path 上的cell 不論是被當做launch clock path 還是capture clock path 其delay 值都是固定的,但是在做STA 分析時為了模擬Variation 會對launch clock path, data path 跟 capture clock path 分別設不同的derate 值,可能是Flat OCV, AOCV 或POCV/SOCV.
拿setup 分析為例,通常會設一個late 的derate 值(大於1的值)到launch clock path 上,同時會設一個early 的derate 值(小於1的值)到capture clock path 上,這就使得common clock path 在被當做launch clock path 和capture clock path 時的delay 有了差別,但是對於同一段path 在一個固定時間內,它的delay 值一定是固定的,不可能忽大忽小,所以在STA 分析時,需要把由於derate 引起的common path 上delay 的差值剔除掉,這就是所謂的CRPR/CPPR.
CRPR/CPPR 跟時鍾沿的關系:
在計算CRPR/CPPR 需要考慮時鍾沿,工具會分別計算時鍾上升沿跟下降沿到達common point 的時間及對應的CRPR/CPPR. 在Innovus 跟Tempus 中默認行為是:如果launch clock 跟capture clock 在時鍾源處邊沿相同且到達common point 時邊沿亦相同,那CRPR/CPPR 的值就是對應時鍾沿計算所得的值;如果 launch clock 跟capture clock的時鍾沿不同,則取 min ( <rise-cppr>, <fall-cppr>).
該行為可以通過變量控制,目前主流工具中都有對應變量,在tempus 中是 timing_cppr_transition_sense, 該變量默認值是normal 行為如上所述,如果設成 "same_transition" , 在 launch clock 跟capture clock的時鍾沿不同時 CRPR/CPPR 取0.
CPPR 跟cross talk delta delay 的關系
因為耦合電容存在,在先進工藝結點,cross talk 幾乎不能避免,所以通常STA 分析都要使能SI, 即:在計算timing 時將耦合電容的影響考慮在內。cross talk 是STA 一個巨大的話題,除了對timing 的影響,還有glitch 的分析。
耦合電容好比傳播介質,做得好的設計好比隔音好的房子,隔壁啪得聲音再大,也傳不過來,因為耦合電容小到幾乎沒有,做得差的設計就是沒隔音的破房子,恨不得隔壁的悄悄話都能在這邊繞梁三日。帶SI 的STA 分析,有兩個基本對象:Victim 跟 Aggressor, 太難記,對應成『受』跟『攻』就好記多了。『受』就是當前分析的這條net, 每個『受』的周圍都可能有一個或多個『攻』。當『攻』跟『受』同向翻轉時,會加快『受』的跳變,當『攻』跟『受』異向翻轉時,會減緩『受』的跳變。
在當前STA 方法學中,對由cross talk 引起的delta delay 的計算方式是:先分別計算『攻』和『受』的timing window ,選取有overlap 的『攻』來計算對『受』的影響,如果『攻』的力度太小也會被過濾掉,只有強大到一定的『攻』才會被計算在內。
-
對於setup: 會假設launch clock and data path 上所有『受』的『攻』都跟『受』異向翻轉,都會減緩『受』的跳變,使整條timing path delay 變長;同時也假設capture clock path 上所有『受』的『攻』都跟『受』同向翻轉,都會加快『受』的跳變,使整條timing path delay 變短。
-
對於hold: 會假設launch clock and data path 上所有『受』的『攻』都跟『受』同向翻轉,都會加快『受』的跳變,使整條timing path delay 變短;同時也假設capture clock path 上所有『受』的『攻』都跟『受』異向翻轉,都會減緩『受』的跳變,使整條timing path delay 變長
在這種情況下,common path 上由cross talk 引起的delta delay 如何處理?
-
對於setup, 通常launch clock 跟capture clock 都不是同沿clock, 而在實際電路中,不能保證非同沿clock 對應的timing window 一致,所以就不能保證『受』在非同沿clock 遇到相同的『攻』,在這種情況下,common path 上由cross talk 引起的delta delay 是不能夠用CPPR 減掉的。< 特別聲明:在一些特別的設計里,有同沿的setup check 對於同沿的setup check 由cross talk 引起的delta delay 是能夠用CPPR 減掉的. >
-
對於hold, 通常launch clock 跟capture clock 都是同沿clock, 同沿clock 對應的timing window 一致,所以『受』在同沿clock 總能遇到相同的『攻』,在這種情況下,common path 上由cross talk 引起的delta delay 是能夠用CPPR 減掉的。
clock Reconvergence 的CPPR
所謂clock reconvergence 就是分開又相聚的clock path, 看圖說話,在下圖CLK1 在C1 點分了叉在CP2 點又相聚,又分叉在CP3 點再相聚。對於這樣的clock path 在計算CPPR 時,不同工具都有相應變量控制,在Tempus 跟Innovus 中由如下變量控制:
timing_cppr_skip_clock_reconvergence
在該report 中有一行:Pessimism Threshold Value: 0.020, 這個值在不同工具中也是由變量控制的,為了runtime 可以犧牲掉部分精度,如果記憶正確,目前大部分工具中默認值都是20ps, 通常在timing signoff 的最后階段為了追求timing 精度(其實是工程師想得到更好看的timing)會將該值設成一個非常小的值比如1ps 或5ps, 在Tempus 跟Innovus 中對應的變量是:timing_cppr_threshold_ps.