黃鵬程,馮超超,馬馳遠
(1.國防科技大學計算機學院,湖南 長沙 410073;2.先進微處理器芯片與系統重點實驗室,湖南 長沙 410073)
在高性能計算需求的持續推動下,半導體工藝持續向前發展,單裸片上可集成的晶體管密度呈指數增長,從數百萬發展到了數十億[1]。芯片集成密度的上升導致芯片復雜度指數上升,芯片的設計周期不斷增長,而設計收斂性不斷變差。為緩解業界在芯片設計成本、質量以及設計可預測性上面臨的嚴峻挑戰,機器學習正被有序可循地引入集成電路設計之中[2]。
機器學習已在布局位置合理化[3]、設計規則檢查預測[4,5]、時序預測[6-8]等多方面取得了引人注目的成績。時序收斂是芯片設計的重要研究方向,靜態時序分析STA(Static Timing Analysis)是當前實現時序收斂的必備步驟。然而伴隨著集成密度上升以及工藝角數量的不斷增長,時序分析工作量指數增長的趨勢使得時序收斂任務日益艱巨。機器學習方法已被普遍認為可用于加速STA分析進程[6,9,10],然而,正如Kahng等人[6]所指出的,這種加速是以犧牲STA精度為代價的,甚至在先進的FinFET(Fin Field-Effect Transistor)工藝下,這種代價是否可承受仍需進一步研究。
面向FinFET等先進工藝,提出新的未知工藝角下時序違反的機器學習預測方法,改善對未知工藝角下時序預測的精度,是實現加速STA的重要途徑。本文結合時序分析原理,極大地改善了未知工藝角的時序預測精度,有效地實現了FinFET工藝下STA的加速。
芯片設計中,各單元的延遲在不同工藝、電壓、溫度PVT(Process、Voltage、Temperature)組合條件下并不相同,各PVT組合通常稱為一個工藝角,現行STA分析基于不同工藝角下的時序庫進行時序分析。根據時序快慢的不同,工藝角籠統地被分為最快(Fast)、最慢(Worst)、典型(Typical)3種類型[11],在FinFET工藝下,由于自對準雙重成像技術SADP(Self-Aligned Double Patterning)[12]的引入,雙重成像引入的寄生參數誤差導致原工藝角發生偏移,形成了ccworst和ccbest 2種類型的新工藝角,致使工藝角數量翻倍。
芯片流片成功并運用于實際應用后,芯片的實際工作情況總是會偏離這些典型的工藝角,譬如,當芯片執行高負荷任務時會產生大量的熱量,熱量的積累會使得芯片溫度升高,于是溫度偏離了工藝角,溫度升高又產生較大電壓降,于是電壓又偏離了典型工藝角。鑒于實際工作情況的復雜性,商用工藝提供商會推薦一些典型工藝角的集合作為設計簽核標準。表1羅列了本文所用到的工藝角的部分相關信息,涉及4種溫度、3種電壓值,總的工藝角數量有36個,屬于商用工藝提供商推薦的工藝角。

Table 1 Information of selected corners in this paper表1 本文選用的工藝角部分信息
如表1所示,盡管各工藝角下各單元的時序信息迥然不同,但一些工藝角之間存在密切的聯系,它們或者有相同的RC類型、或者有相同的電壓值、或者有相同的溫度值,甚至兩者兼而有之。文獻[6,13,14]的研究表明,工藝角之間的時序信息呈現線性相關性。這種特性使得運用線性回歸類型的機器學習模型進行時序預測成為可能。
直觀地,用矩陣X表示時序已知工藝角集合的時序信息,矩陣Y表示時序未知工藝角集合的時序信息,那么從X到Y可建立一個線性回歸模型,表示為Y=f(X)。對于前文所述的36個工藝角,任意選取其中n(1≤n<36)個工藝角進行STA,得到相應的時序信息數據,可以基于模型f來預測另外N=36-n個工藝角下對應的時序信息。如果預測精度較好,那么整體的STA分析時間將節約N/36,有效地加速了STA分析,縮短了整個芯片的設計周期。
本文方法中,線性回歸模型基于通用機器學習框架scikit-learn中LinearRegression類實現。該類能在因變量Y與自變量X之間擬合出線性模型的系數權重向量ω,使得數據集實際觀測數據與預測數據之間的殘差平方和最小。
為支持高效訓練,時序已知工藝角集合的合理選取十分重要。一方面工藝角數量過少必然使得預測效果變差,而數量過多則STA時間節約微乎其微;另一方面,任意選取n個工藝角的訓練效果往往不如有意地篩選n個代表性更強的工藝角的訓練效果好。需要的工藝角數量多少可以通過遍歷來獲得定量認識,而具體數量下選擇哪些工藝角是一個類似于矩陣特征向量選擇的問題,需要專門分析各工藝角之間的關聯程度,按關聯程度由弱至強進行選擇最具可操作性的工藝角。
Cover等人[15]提出了互信息的計算方法來度量不同工藝角之間的關聯程度,其中互信息用聯合概率密度函數來定義,計算過程非常繁瑣且不直觀。本文提出了一種新的簡易方法來度量不同工藝角之間的關聯程度,即各自選取相同數量Num的時序違反值(slack)最差的路徑(Path),其中公共路徑數量num與總路徑數量Num的比值r定義為2個工藝角之間的關聯度。r的取值介于0~1,適合度量工藝角之間的關聯度。
本文基于某工業設計展開研究,該工業設計的單元數量為216萬,STA以及學習訓練在主頻為2.5 GHz的Intel Xeon服務器上進行,單個工藝角STA需要的時間約1 h。時序路徑按nworst為1的方式選取,各工藝角下選取時序slack最差的路徑10萬條,36個工藝角下選取的全部時序路徑進行并集運算,得到總路徑41.271 6萬條,不及360萬條的10%,反映了各工藝角之間存在較強的相關性。在這41萬多條時序路徑中,36個工藝角下時序違反小于10 ps的時序路徑共有9.779 2萬條,這是本文研究關注的重點。
各工藝角之間的關聯度圖如圖1所示,顏色越淺表示關聯度越大,顏色越深表示關聯度越小。由圖1可知,篩選訓練用工藝角集合需要盡可能選取顏色深的工藝角組合,以使所選工藝角集合的重復信息更少,用于訓練的有效信息更多,從而預測未知工藝角集合的時序精度更高。在本文方法中,關聯度最低的2工藝角分別為6和19,因而選取訓練集時如果僅選1個工藝角,則選6或19;如果選取2個工藝角,則選6和19。如果訓練集中需選取更多的工藝角,再考察其它關聯度低的工藝角集合,依次構建數量為1至35的訓練集。

Figure 1 Correlation degree diagram between different corners圖1 不同工藝角之間的關聯度圖
時序特征的選取同樣非常關鍵。以文獻[6,9]為代表的前人研究往往只關注路徑延遲的預測,存在一些局限性,因為路徑延遲預測并不能判斷該路徑是否存在時序違反,而STA的首要目標是識別各工藝角下的時序違反。因此,本文研究關注的首要的時序特征是時序slack值,其中負數的slack值也稱為時序違反。
STA分析將典型的路徑slack值表示為子路徑延遲的函數。對于建立時序(setup),滿足式(1):
Slacksetup=Tc+Dlyc+Uncer-Dlyld
(1)
其中,Tc為時鐘周期,Uncer表示不確定性(uncertainty),Dlyc表示時序路徑捕獲路徑(capture)的延遲,Dlyld表示時序路徑發射路徑(launch)和數據路徑(data)的延遲總和。對于保持時序(hold),滿足式(2):
Slackhold=Dlyld-Uncer-Dlyc
(2)
為了便于計算,本文將寄存器的建立時序(setup)與保持時序(hold)值歸并到了Dlyld之中。于是為了得到未知工藝角下時序路徑的建立或保持時序slack以及時序違例,需要基于建立的機器學習模型預測這些未知工藝角下的Dlyld和Dlyc,再基于式(1)和式(2)即可得出預測結果。Setupslack值與holdslack值的精度與Dlyld和Dlyc的預測精度密切相關。
隨著工藝尺寸縮減至FinFET節點,由于片上工藝起伏的復雜性,STA分析中普遍引入了先進片上波動AOCV(Advanced On-Chip Variation)模型取代平面工藝下的展平片上波動(Flatten OCV)模型,這使得路徑launch部分與capture部分的公共路徑延遲在launch部分和capture部分中不再相同,這種現象被稱為時鐘匯聚悲觀(Clock Reconvergence Pessimism)。為了消除該現象對時序分析的影響,需要在式(1)和式(2)的基礎上再計算出時鐘匯聚悲觀補償值crpr(clock reconvergence pessimism removal),并將式(1)和式(2)分別修正為式(3)和式(4):
Slacksetup=Tc+Dlyc+Uncer-Dlyld+crpr
(3)
Slackhold=Dlyld-Uncer-Dlyc-crpr
(4)
在FinFET工藝下,為計算未知工藝角下各路徑的時序slack值,各時序路徑在未知工藝角下的crpr值也需要預測,因而FinFET工藝下的時序預測精度必然低于平面工藝下的。
為了改善FinFET工藝下的時序預測精度,本文研究進行了以下2處改進:(1)對傳統時序路徑各部分進行了重新劃分,將launch和capture兩者的公共部分(即產生crpr值的公共路徑)剝離出來,從而不再需要預測各路徑的crpr值,最終得出式(5)和式(6);(2)因為setup分析與hold分析時序路徑中同一單元的AOCV值不同,傳統機器學習方法設置統一的權重必然引入額外的誤差,所以本文將setup時序與hold時序分開進行預測。
Slacksetup=Tc+Dly′c+Uncer-Dly′ld
(5)
Slackhold=Dly′ld-Uncer-Dly′c
(6)
時序路徑各部分的重新劃分一方面使得crpr值的預測與launch部分的預測合并了,減少了多次預測引入的額外誤差;另一方面將data部分與launch部分進行了分離,避免了預測模型在data上普通繞線規則與時鐘上特殊繞線規則之間進行權衡,從而提升預測精度。Setup時序分析中,launch部分和data部分的延遲偏悲觀,而capture部分的延遲偏樂觀;hold時序分析恰好相反。FinFET工藝下AOCV模型的使用使得setup時序分析與hold時序分析中引入的相反的悲觀不再是線性關系,因而將兩者分開預測有利于提升預測精度。
時序路徑的選取按nworst為1的方式進行,本文所選工業設計總的時序路徑為213.125萬條,其中時序slack值較大的路徑對本文方法影響相對較小,因為即便預測有些偏差,這些路徑也沒有違反。因此,本文將各工藝角下setup時序和hold時序slack值在200 ps以內的時序路徑挑選出來,合并得到總的時序路徑71.736 2萬條。于是各工藝角下都得到了這71.736 2萬條路徑的時序信息,其中前1萬條用于訓練,后面的70萬余條用于測試。
與機器學習在芯片設計中的應用評價指標類似[6,9,16,17],本文使用平均絕對誤差MAE(Mean Absolute Error)和均方根誤差RMSE(Root Mean Squared Error)來衡量機器學習訓練效果。
本文就傳統方法與所提出的新方法進行了對比,結果如圖2所示。隨著所選用的訓練工藝角數量的增加,2種方法下的MAE都呈現總體下降趨勢;并且在本文改進方法(our learing)下,用5個工藝角訓練即可使得MAE低于2 ps,而傳統機器學習方法(previous learning)要使得MAE低于2 ps,需要21個工藝角。因此,本文提出的機器學習方法在MAE上明顯優于傳統方法。
2種機器學習方法的均方根誤差RMSE隨訓練用工藝角數量的變化如圖3所示,隨著訓練用工藝角數量的增加,RMSE總體上呈現下降趨勢,且本文所提方法明顯優于傳統方法。要使得RMSE值小于2 ps,傳統方法需要21個工藝角,而本文所提方法僅需要5個工藝角。

Figure 2 Influence of numbers of corners for training on MAE in two machine learning methods圖2 2種機器學習方法中訓練用工藝角數量 對平均絕對誤差MAE的影響

Figure 3 Influence of numbers of corners for training on RMSE in two machine learning methods圖3 2種機器學習方法中訓練用工藝角數量 對均方根誤差RMSE的影響
2種方法的學習與預測時間均小于1 min,遠小于商用STA工具分析一個工藝角時序的1 h??紤]平均絕對誤差MAE控制在2 ps以內,傳統方法需要21個工藝角,較商用STA效率提升1.7倍,本文方法僅需5個工藝角,效率提升了7.2倍。對于本文提出的方法,可以適當調低未知工藝角下的時序預測效率,以進一步提升預測精度,例如,將預測用工藝角數量提升至12個,MAE可以降低至0.99 s以內,而效率提升也有3倍。
隨著集成電路技術的不斷發展以及半導體工藝的不斷進步,芯片設計復雜度日益增長,設計所需考慮的工藝角呈指數增長趨勢,通過機器學習方法來預測部分工藝角的時序已成為加速集成電路物理設計的研究熱點。本文基于FinFET工藝特性與STA的技術方式,較傳統學習方法而言更好地發掘了多工藝角之間時序特性的線性關系,在同等條件下得到了更優的時序預測結果,顯著提高了時序預測精度,并節約了STA時間,利于縮短設計周期,提升設計效率。