有時候事情往往不是我們有「guts」就能在我們一聲令下讓許多人一起跟隨, 因為這些原本在不同領域分工的人都各自有彼此不對齊的「錨」. 倘若你是公司的高階主管, 那你比較有機會可以拋出較遠的「錨」讓大家來校準, 也可能夠比較快收到效果. 否則我們只能先當個傳教師, 通盤地研究各種方法(比如該領域新型專利、論文以及tier-one的作法), 並例舉數個可能的階段性範例來跟大家溝通. 無論範例可行與否, 主要目的為激發各領域的人集體思考, 此時會有討論與辯論, 而這正是我們(低階人員)比較可以期待的「內化作用」. 它的心智過程較為緩慢, 但是當「Solution」是由各領域的人自己想/提出來, 往前跨的步伐將會是自己主動的, 而匯整各領域一起向前的動能就會變的有趣而巨大. (不要陷入爭寵或誰follow誰的窄框思維而壞了大事)
因為「Business Impact」, 這一章節內容有涉及到較多的專利與論文研究, 讀者需要花一些心思與力氣去搜尋以跨過專利高牆並避免踩中專利地雷. 至於筆者呢, 則天馬行空多想/寫一些, 以免哪天被人專利走了又不分紅! 好比「擴增行車指示-Augmented Driving
Directions (ADD)」這個點子, 嚴董不call me而BMW竟然把它商品化了! 不過真的有國外廠商寫信跟筆者要報價呢, 把玩笑認真了(汗). 因此, 筆者申(claim): 在本篇文章之後的概念所衍生之專利通通無效, 呵! (開玩笑的)
畫大餅(目的)
相信許多晶片設計公司除了Foundry所提供WAT之外都有收集自己獨門的後矽資料以利後續製程調控與導出更適當的實體設計配方, 例如用速度-功耗的散佈圖(以下稱之為process control window, PCW)等來追蹤製程調配/演進. 有時候當晶片於前期生產與晶圓級測試(CP)階段, 我們看到PCW的散佈像是飛到了外太空(它可能是市場策略性故意或是Foundry的製程控制偏差), 如下圖橙色橢圓. 但這通常不致命, 只要「設計餘量(design margin)」能將PCW凝聚力控制在一定程度/範圍, Foundry可以往如下圖右中的A或B路徑調整. 先撇開公司軟/硬/系統整合與branding等發展策略,
於此tier-one跟我們的差別在於: SPICE model與後矽靶心的校準程度、實體設計階段的時序驗證配方(包括library re-K與timing sign-off recipe)與後矽製程配方/調控的能力.
我們先倒過來看後矽製程配方/調控能力的綜效來理解我們跟tier-one的差距, 如上圖右藍色框為透過某種手段(稱Calibration)將PCW更進一步的窄化, 而這是傳統Foundry製程配方/調控所做不到的! 「Calibration」早期普遍使用在類比電路上, 比如要跟外界通信前先跟對方彼此問候並互探虛實以把自己調整到能跟對方溝通的工作環境/狀態. 把它套用在晶片生產流程上, 即所謂晶片評等的自動化(binning automation)實現. 它的「business impact」是非常巨大的! 從上圖看, 既使將晶片投到製程控制力不算優秀的Foundry生產, 晶片自身都能夠校準到當初實體設計規劃的目標範圍(可以不這麼依賴Foundry能力). 若再搭配Foundry製程的調整, 從戰略/市場上可以衍生出遠超出業界水平的工藝/產品而且是「Foundry Independent」!
在此, 我們談論的是將原本靜態晶片評等手法的自動化過程, 目的是製程偏移的補償與效能校準, 而動態的電壓調控(adaptive voltage scaling)手法須搭建在此基礎下, 否則系統可能得包含容錯機制或抓很大的電壓-頻率餘量(margin)在各檔次之間以避免過度補償, 因為系統從偵測電路、決策判斷、發指令給電源管理到補償監控等整個close-loop的反饋時間可能遠超過數微秒(us)等級, 系統若跟不上將可能掛點而造成除錯的困難.
「Calibration」也可以解決部份令人苦惱的「可靠性」問題, 透過比較晶片出廠前的一些特徵(features)以修正原本machine-learning的加權算法. 「老化問題」在前數百小時burn-in測試時是最不好預測的, 因為在DC時間NBTI效應(電洞被閘極材料補捉)可能提高PMOS閘通道臨界電壓(Vt)使得PMOS變慢卻也反過來加速NMOS, 而AC時間的測試程式能否充分模擬未來HCI效應(電子被閘極材料補捉使得NMOS變慢)也是難題. 不過, 近代的手機晶片為了延長待機時間一般都有實做「MTCMOS Power-Gating」機制, 這也使得未來長時間「老化」與NBTI有很強的關聯性, 比較容易掌握趨勢. 因為power switch dominates, 晶片中switchable區塊與always-on的區塊可能要注意彼此之間的差異或預埋介面間的餘量(interface margin).
預測(Prediction)
在前面文章中我們先倒過來看/畫大餅(直接「錨」定懸崖邊), 然而要實做對PCW自動調控的機制(攜安全配備而非徒手), 需要先對晶片採樣並選取適當的特徵(features)才有機會作資料挖礦、套用機器學習(machine-learning)採到模式並做趨勢預測(prediction)與補償(compensation). 如圖所示, 大家在比賽的是: 如何用一群特徵(features)經加權過後形成一個新的維度(dimension)來預測我們目標特徵/維度(具代表性的functional speed)? 而其中相關性(correlation)的散佈愈窄越好, 因為任何肥胖的相關性都將增加一些設計餘量(design
margin)或折損一些競爭力(competitiveness).
慢慢的我們倒過來會去計較SPICE model距離後矽靶心的偏差(這不要命), 更關心維持彈道散佈的凝聚力(這比較要命也是Foundry功力的差異, 但我們現在可以用系統方式補償)以調整適當的「設計餘量(design
margin)」. 我們在前面文章中至少舉三個例子: 期待千分之三的教條來含蓋所有可能彈道散佈的想法是錯的! 例如, 於「半導體透鏡」中視覺化過的資料顯示timing window的趨勢不是我們原本想像的那樣單調尤其在28nm. 此外hold-time是相對論, 我們於「風險決策」中也提到「微笑曲線」使得傳統的3-sigma design欠缺周詳, 它不但過修也不安全(若我們打算做voltage binning的話).
我們可以例舉更多(但避免長篇大論), 例如: 靜態的on-chip variation (含process與PDN quality綜效)是可量測與反算得到的, 但絕對不是Foundry所說的10m V在slow-SSGNP或33m V在fast-FFGNP(design dependent), 它跟process無關也不會有cancellation效應! 根本不應該把dynamic IR效應跟timing隨便用線性關係纏結在一起, voltage fluctuation看的是落入信號轉態區間內的積分而不是看絕對值大小(這部份放入cancellation筆者比較沒意見). 但也不要浪費時間真去用dynamic IR分析結果反算effective voltage回STA, 因為它是pattern dependent, 就算tool夠qualify我們也需要以小於皮秒(ps)等級的極高解析度做曠日廢時的分析, 若當我們需面對物理實踐上難以找到具代表性的pattern而且只能跑不過短短幾微秒(us)框的現實. (path-based SPICE的waiver倒是比較可行, 代價較小對實體設計工程人員也較友善)
相關性(Correlation)
取得好相關的過程往往無法一步登天, 除非我們的晶片非常單調且沒甚麼複雜性, 然而我們卻又期待在極早期(越早越好)能夠得到與目標特徵(如functional speed)有良好相關性之標的物(如RO或SIDD)以節省測試與封裝成本並提高產能.
在初期的晶圓級封裝前(Chip Probe, CP)階段, 受限於測試成本我們只能拿到幾組基本物理電性、RO與簡單的測試樣本(在幾組不同的電壓條件), 於封裝後測試(Final Test, FT)的工程階段我們可能再追加更細微的電壓/溫度對RO敏度/刻度校驗(calibration). 然而此時的後矽資料也已經豐富至足以追蹤製程演進、摻雜(N/P recipe)、晶片間變異性(WTW、WIW、DTD)、光罩、平坦化等問題乃至於晶片內部的變異性(WID).
幸運的是, 運用機器學習(machine-learning)於實體設計的過程我們不太需要高階的核心函數(kernel function), 因為這些我們可以不花費太多額外力氣得到的基本特徵(含RO、SIDD與functional speed等等)彼此之間在巨量樣本的機率密度分佈中呈現簡單的線性回歸. 我們最終的目標之一是在(可行的)量產測試階段用最精簡的成本去預測最終封裝並整合至手機平台的functional speed, 因此我們可能需要在工程樣本各階段盡快取得廣泛的各種特徵, 並在最後剔除/收斂至少數幾個主控特徵(dominate features).
等效電壓敏度與刻度(Voltage Sensitivity &
Calibration)
在初期工程樣本測試階段(通常是封裝後FT), 我們必須對RO與電壓做刻度化, 基本上在相同製程下任一相同的原件在操作電壓範圍內的敏度(RO vs. voltage)趨勢/斜率是線性且固定的, 如下圖. 製程相對偏快的晶片其電壓敏度的截距較高, 而製程相對偏慢的晶片其電壓敏度的截距較低, 但它們的敏度(斜率)是固定的.
敏度(斜率)固定的特性非常適合拿來做晶片工作電壓差的量尺, 我們可能不知道晶片運作時的「絕對」電壓值, 但是由晶片內部各個RO點反推算而得的「相對」電壓值是相當準確的. 這種長時間/靜態的等效電壓降量測手法相當普遍, 但缺點是動態的反饋時間過慢(好幾us等級), 我們無法透過這個方式得到奈秒(ns)等級解析度的電壓降. 若想了解GHz等級的dynamic voltage fluctuation, 目前較流行的做法也是類似用machine-learning方式(這有交大的專利), 我們稍後提到.
最壞的打算
每當我們提議一個新的做法(當然先往好的方向想), 我們也都應思考到最壞的案例(worse case). 若連RO或什麼「特徵電路」都沒有, 當然也沒甚麼好回歸的. 有些人會對於RO與function pattern的correlation感到失望, 它可能很肥胖, 而前面我們提到: 任何肥胖都將增加我們的guard-band. 我們暫且不要因為氣餒而將其放棄, 這不過是我們最壞的情況, 不是嗎? 我們有很多手段都可以讓現在更好.
提高維度(增加新的features), 是機器學習(machine-learning)領域中關於分群演算法(如support vector
machine, SVM)常用的的手法. 如下圖, 我們在二維的面只有x/y座標資料時, 我們找不到一條直線(cut)來分割兩群物理性不同的晶片樣本. 而當我們再增加SIDD特徵這個維度時, 我們就很容易找到一個平面(cut)來分割這兩群晶片樣本. 我們可以持續增加新的維度進來(但我們很難圖釋超過三維的案例), 而次高維的流形(cut)在SVM領域稱之為「超平面(hyper-plane)」.
當我們在許多單一RO對其它特徵(如SIDD或Fmax)之相關性(correlation)中選擇一個最佳的方案時, 這就成了我們最壞的情況(worse case). 同樣的, 增加另一個RO維度將使得原本各自對Fmax的correlation從二維的橢圓變成三維的橄欖球. 我們有機會找到比worse case更好的分割.
精進
RO在構造上、選擇上與物理實踐上有許多限制, 因此若直接拿它來跟functional speed做correlation會有一定的物理極限, 因為它畢竟不是/不代表functional path. 因此「特徵電路」的實務上有許多論文/文獻探討與專利可供參考, 比如混雜不同邏輯單元的RO、希望能萃取等效製程WAT P/N recipe的RO以及可以監測老化或Vt變化的電路(例如Apple的專利是使用客製化的PMOS主要在NBTI, GUC的專利則是透過RO監測NBTI同時考量HCI效應)等等.
其它關於時序相關的特徵萃取, 有複製數條真實時序關鍵路徑(timing critical path)的電路(這是很早期的專利不建議採用, 因為STA階段無法得知誰是critical)、可以監測setup time window的Razor(2003年被提出運用在ultra low power電路的容錯機制)、修改Razor用來監測hold time window的電路(Intel不知如何拿到的專利, 但應該是無效的)、用來監測clock jitter的Sticky電路(IBM的專利)以及修改Sticky用來監測dynamic voltage fluctuation的電路(Intel的專利)等等.
不過以類比設計或RO為基礎的電路基本上反饋時間太慢(us response time), 此外為了消除第一階的NAND閘本身的變異性干擾, 故RO級數不能太短. 實做上, RO在量測時至少需讓它振盪個200次以上以消除glitch本身所造成的計數器誤差能小於1%. 因此近代較熱門的動態偵測電路設計(ns response time)都屬於混雜Razor與Sticky的改良, 稱之為digital code, 而將重點移至後矽電壓/溫度的敏度/刻度校驗(calibration)與訓練(digital code training), 其實骨子裡就是做機器學習(machine-learning)同樣的事! (這部份則有GUC的專利)
特徵點的配置(Signature Allocation)
基於上述, 底下我們以「特徵點」來函蓋所使用的硬體監測器(hard-ware monitor)或RO. 許多人會問: 一個晶片要放多少個「特徵點」才夠? 「特徵點」要放甚麼電路? 而答案跟我們的期待的意圖(intention)有關, 即我們最終想看到甚麼? 想改善甚麼?
通常我們的意圖是多面向的: 「檢視SPICE model準確性」、「製程的彈道散佈/追蹤與配方調控」、「製程變異性(WIW/WIW/DTD)與系統性缺陷問題(systematic defeat)」、「on-chip variation到底怎麼一回事?」與「後矽調控(post-silicon tuning)能力」等等. 而最終的「解」將是綜合上述各目的與可付出的實體設計成本(包括面積、時序收斂、軟體測試、工程時間與資料分析等)妥協的結果.
關於「檢視SPICE model準確性」: 我們可能希望RO能涵蓋盡可能多種類別, 例如不同邏輯閘、不同推力(driving strength)、不同摻雜(Vt)與不同通道長度(channel-length)等, 這部份的成本有機會移至前期的測試晶圓(test
chip)而最小化.
關於「製程的彈道散佈/追蹤與配方調控」與「製程變異性(WIW/WIW/DTD)與系統性缺陷問題(systematic defeat)」: 我們希望能避免只憑少數WAT(9或74點)特徵點的樣本或機台probing而產生製程模型/配方偏差(bias), 我們寧可相信成千上萬個特徵點散佈在整個晶圓上所採樣到的巨量資料. 例如, 一片晶圓若可切割出1000顆晶片, 假設每顆晶片包含50個特徵點, 我們看到的是50,000個非常平滑且高解析度的模型. 這足以看出傳統edge-effect, 光罩或曝光過程產生的光繞射/干涉圖騰與晶圓級的缺陷(systematic defeat). 基於DTD(die-to-die)特徵點的差異, 只需做一些資料統計/分析我們很容易就能擴張框架(scope)至WIW(within-wafer)或是WTW(wafer-to-wafer)製程差異等追蹤與評估.
關於「on-chip variation」與「後矽調控(post-silicon tuning)能力」: 前面幾個意圖可能只需少數特徵點即可改善/追蹤製程與彌補WAT之不足, 然而若要能得到WID(within-die)變異性就需要盡可能的多且均勻了. 哪些地方才是特徵點的絕佳位置又不會影響實體設計周期? 這需要工程人員先假設有非常多的網格(例如, 20x20或更多)並設法隨機(但須遵守觀察到的機率模型)產生大量的虛擬晶片使之依循所假設的機率密度函數產生變異性(比如說我們改變SDF再看看其對STA的影響), 再進行剔除. 若想省事或偷懶, 事實上均勻地配置(偵測點彼此之間不能太近), 各個block/voltage domain都有至少一至兩個都可收到不錯的效果.
動態特徵分析(Dynamic Signature Analysis)
最後我們對這些離散的特徵值做回歸分析(regression)即可先得到各個晶片的WID on-chip variation分佈(它表面看起來隨機), 而解析度跟我們配置的數量與雜散度相關, 最後再對「大量」的晶片做加權平均我們將可得到包含PDN quality與製程變異等綜效造成的DTD on-chip variation分佈, 而它並非隨機, 它呈結構性且跟製程偏移無關(SS/TT/FF結果接近), 我們必須以此修正timing sign-off recipe, 而傳統3-sigma design救不了它!
動態特徵分析(Dynamic Signature Analysis)
如上圖所示, 在實做上為了避免增加實體工程與設計周期的成本, 我們傾向在次要關鍵(sub-critical)的路徑上選擇安插特徵點(例如使用類似Razor Flop的結構). 一般專利在2003年以前的偵測器電路要小心避免, 2009年之後有較多low power與電路老化偵測相關的研究(這些專利的核准筆者認為有很多是有爭議的?), 直到2013年才開始出現用machine-learning做binning自動化的專利.
次關鍵路徑特徵的選擇需要軟體與前端系統架構工程師的幫忙, 它們比較清楚哪些匯流排、記憶體或狀態機是軟體運做時必經之地(例如TLB、cache memory or control state). 搭配經由functional pattern採樣的toggle rate分析、良率模型的建立與yield impact的計算, 我們可以選擇function會踩中且對yield impact較高的路徑來產生數個digital code (或有人稱做signature), 而不再只是使了用數十年的RO. (這部份勢必未來會有許多專利混戰!)
與等效電壓特徵萃取方式不同的是, 動態(GHz response)且能直接與function path相關的特徵萃取是先經過後矽電壓/溫度的敏度/刻度校驗(calibration)程序. 這些散佈在晶片上的特徵點對各種不同的軟體測試程式與其反映於外的電壓/溫度等環境表現將會形成各自獨特的「模式/樣本(pattern)」, 其過程稱之為「digital code training」. 我們可能需要建立一個雜湊表(hash map), 透過機器學習的手法, 我們同樣可以對這些模式進行動態(GHz response)預測.
人類應該在遠古時代就懂得對不同機率事件(雖然「機率」一詞可能尚未被發明)做「加權(weighting)」, 在心智中計算並啟動「戰或逃反應」以避過種種危機. 在早期半導體製程領域有一群資料分析與統計學家(薪水待遇極為優渥), 他們的工作內容為「試驗設計(design on experiment)」, 但我們現在利用各種偵測器所收集得的資訊量與特徵(一開始通常會有數千個features)已經無法在人類有限的工程生命週期去試驗設計並取得合適的加權. 然而這是機器學習(machine-learning)的強項, 多虧一些天才數學家們將許多原本複雜的問題formulate成「quadratic可微分」的命題, 而使同時解「多維(特徵)加權」的過程變成在做「矩陣運算」般簡單(如以高斯消去法解行列式問題), 再加上許多無名英雄無私地奉獻各種核心函式庫, 也使得平庸如筆者不用寫太多code也能簡單操作以前只有天才能做的工作!