2017/4/28

(­二)淺談晶片實體設計-設計餘量(Deign Margin)


台灣很多智人「開公司」, 是用來避/ 節稅的( 故我不說這是「創業」), 因此為了防「君子」, 打從你註冊/ 申請成立公司的那一天起, 政府就把你當成資方了( 立刻失去勞保資格), 許多不便的設計反而對真正創業者卡卡. 而草創期的你很可能還養不起第二個人( 法規要五人以上方能成立投保單位), 只好加入奇奇怪怪的雞蛋運輸工會, 狀態上你就開始失業了. 而這是目前台灣的微創業環境.

半導體業競爭激烈, 產業瞬息萬變( 在演霹靂布袋戲 ), 若想穩固所處企業在國際之競爭力 , 「你」扮演重要角色! (IC設計」有沒有辦法變成「養」的產業小額、大量、持續而穩定地收錢且不因買賣商品/服務/技術中止Maker收月租費嗎(B2O)? 變成平台商/媒合商(O2O)? 提供教育訓練讓帶WiFi功能的Arduino晶片變耗材/熱插拔嗎AmazonEcho是否會打破Google搜尋的廣告流量獲利模式/金流呢)


回到假想敵(Competitor) 設定
上一回我們提到「競爭力 (Competitiveness) 這個議題, 我們擬定了一個核心競爭對手, 並假設Foundry 願意承擔/ 妥協部分「風險」與「成本效益 (cost-effective)」以共享「部份」經濟成長果實, 亦就是最後加諸於我們競爭對手的「設計餘量(Deign Margin) 」是相對減輕非常多的, 好比「時序驗證配方(timing sign-off recipe) 」可能是TT± n * σ ( n =1~3 , depending on tier-1 players' bargaining power). 幸運的是 : 還有許多環節不夠科學! 這是面對強敵依然有機會/ 縫隙翻轉的契機( 先賣關子).

此外, 我們也假設這個標竿還非常善於做「 Branding 且熟「消費心理學( Apache就非常善用人性的弱點: 善用論文舉證deterministic risks, 掀起恐慌( Availability Cascade ?) 並提供索費不貲的藥方, 但不保證有效. 像是在賣抗癌藥), 它們總是有許多專利/ 論文, 並試圖主導技術規格. 這一部份, 我們比較使不上力, 既使自己創業也一樣. 除非老闆們支持, 你須先自己走在前頭並當傳教師, 形塑企業文化, 透過內化讓大家慢慢向前. ( 很多老闆甚至會抗拒產學合作, 然而這沒有對錯, 端看企業的企圖與scope)


目標市場/ 策略
我們也討論過: 產業別一旦選定了 ( 企業能在多大產值中分杯羹已決定 ) , 接下來最重要的應該是市場的選擇, 亦就是客戶在哪? 要賣甚麼? 不過, 除非自己創業, 否則只能期待頂層老闆們能深思熟慮, 且對未來市場能有所洞見了.

以「晶片設計市場」而言, 相較於運動攝影機、行車紀錄器、輕型無人機、挖礦機/machine-learning( 以矩陣運算為主) 等領域, 「手機晶片」技術堪稱是競爭最「辛苦」且最慘烈的領域. 其從軟體至硬體含週邊架構與介面, 進化與淘汰速度之快, 令人瞠目結舌. 但目前現狀卻是: 「萬家烤肉, 一家香的格局」. 2016 年市調資料來看, Apple 以僅僅 12.9% 全球智慧手機市佔率 ( 三星約 24% 市佔第一 ) 卻囊括了全球 91% 的盈利 . 換句話說: 從頂層至底層每個環節只要稍有閃失, 就很可能失去市場競爭力. 反之, 從頂層至底層每個環節我們都盡可能贏人家一點點」才有可能出類拔萃


(筆者: 改做無人載具、機器人學習或AI晶片吧!)





(Source: Jelly Wong , : 網路上後製的版本非常多, 我試著比較圖片場景的涵蓋率最後找出應該是原作者的連結)


發現上面這張圖時( 這傢伙似乎離懸崖邊更近了 , ), 筆者正好積極的嘗試推廣將Machine learning 相關技巧應用至晶片設計流程, 包括各種晶片監測器設計/ 專利( 需要花時間研究/ 避一避) 、後矽製程配方建議、自我評等與補償(PVT/aging compensation) 等系統開發, 希望最終能為全球半導體三千多億美金的產值再增加個 5%, 可以打造一座杜「拜亞特蘭堤斯酒店」 ! ( 筆者承認這是「系統一的直覺, 但希望所有design houses 加總的晶片能再多賣個n % 不為過吧!? n depends on 對下文內容的檢驗/ 共鳴)

上一回我們把晶片實體設計的競賽比喻成:「看看誰能最靠近懸崖邊,又可以很安全的不至於跌個粉身碎骨」,也就是「看看誰的設計餘量(design margin)相對抓得少又安全」.這張圖,正好像是當時心情的寫照:「你的競爭對手已如此強大,若想在同一個舞台分杯羹,我們必須嘗試別人沒做過的!


有時候我們想要更大膽跟別人做不一樣的嘗試, 卻又遲遲不敢跨出那一步. 這很正常, 康納曼將這現象解釋為「錨點效應 (Anchoring Effect) 」之「調整不足」 . 系統一」完全沒任何經驗資訊可供「系統二」提取/評估,因此在心智上移動的錨會提早結束:深怕跌入谷底.


經驗豐富的「Free Climber 」其心智運作就不一樣, 他的「錨」打從一開始就設在懸崖邊上的. 當然若你在這世界上是有如阿湯哥 -- 神一般的存在( 屬於保育類的英雄), 你幾乎可以把所有的Margin 都丟光, 根本讓人望塵莫及! 千萬別學阿湯哥啊! ( 叔叔有練過) 除非Foundry 是你家的( 如三星、Intel), library 自己做/ 自己K , 同時還能邊調整/ 改善process memory standard cell , 能掌控一切事情.



但筆者想跟大家分享的是: 我們必須利用「工具」, 「安全的攀岩」, 以彌補先天的劣勢( 慢慢再來討論). 事實上, 有時候計畫性的探底並不是甚麼壞事(pilot chips), 從此我們可以架起系統, 讓平凡如你我等都能從此安全無慮的抵達懸崖邊, 既使是更為嚴峻的冰天雪地-- 下個專案.



有兩種「心智捷徑」運作歷程筆者都經歷過, 一種是: 你可以跟大家舉手提議要做「TT ± 2 σ , 但由於每個人的「錨」都尚還在「SS-3 σ 」區域附近, 因此你得提出強而有力的證據/ 經驗( 可能的風險與解決方案) 才可能讓每個彼此都不align 的心智移動, 通常不會太遠. ( 可能還會說你吹牛)

下次, 若你的頂層老闆直接給你下達一個要命的Mission: 「我們要TT signoff ! 很好, 老闆有研究心理學, 這是一個強迫Reset 你心智的「錨」! 大家會開始動員起來, 尋求「配套措施」, 從頂層至底層全面性地思考各種手段, 縱使康納曼告訴我們: 我們的心智移動在未達到目的地時就會提早結束, 但至少最終每個人都會遠離SS-3 σ 區域. 撐著啊! 老兄!



Google 檢視自己的「設計餘量吧(Design Margin) !
自己用來從事「晶片實體設計的配方(timing recipe for chip implementation) 」有競爭力嗎? 且讓我們利用Google-Sheet 做的「 Rapid STA signoff recipe examination 很簡單/ 快速地檢視一下吧! 為何用Google? 因為要open source, 且其容量可以比Excel . 請選擇File/Download_as/Excel 將表單先暫存到自己電腦local, 再用Google-Sheet 把它開起來即可編輯. ( 因為是open source , 請不要把那搞壞了或駭客我哪! 感恩).

筆者透過建立幾個「機率統計」的模型, 依大數法則將「Normal Distribution 」轉換成比較貼近實際統計資料行為的「Log-Normal Distribution , 並利用Google 本身提供的工具隨機丟30 次骰子舉證( 讀者可以自行擴大表格丟更多次骰子), 以供大家檢視現行的設計餘量是否抓的多太過保守或不夠科學?( 若你的GPU CPU 跟其它SOC 模塊是用相同實體設計配方豈不怪哉?). 因為Foundry 根本無暇了解或「齊頭式拉平」其所有客戶(design house) 的設計方法/ 品質與能力, 僅能提供一個極粗略的「萬用/ 免責」配方, 而代價就是失去競爭力. ( 但也有很多tier-1 company Foundry , 所以Foundry 會反過來偷學其方法)

Google-Sheet也有計算量限制的問題, 可以的話煩請有興趣的讀者用C/C++( 或其他你熟悉的語言) 將它改寫, 如此我們可以很快跑出100K parts 以上類似SPICE Monte 的結果.



筆者認為LVF-based 的實作面( POCV) 要普遍還需要再過一兩年, 雖然K-library 不是問題, 但有能力驗證其資料合理性與正確性的人並不多( 包括Foundry 自己的library team), 否則就不會看到鴕鳥圖(Ostrich Curve) . 例如timing path 在十幾個stage( 若使用launch+capture 的設定, 這非常容易遠遠超過) 之後derate 0, 這非常鴕鳥!



為了避免不必要的恐慌, 我們暫且不提當今「神棍級( 非神盾級喔) 晶片設計配方」的奇妙與亂象( 雖然大家普遍仍然買單), 而某一design house 「不買單」的程度我會將它解讀為該公司「提升競爭力的潛力」( 總還要有對策才行吧?!). 當然, 你若已經發現/ 掌握Foundry 的許多「Bugs ( 我們後續談談), 恭喜, 你可以先偷跑, 因為它(LVF-based flow) 比較科學(slew/load dependent cell-based constraint uncertainty common point optimism reomval等等) 也很補( 縮小design margin), 只不過驗證( QA) 要花功夫且要很小心.

這個表單我們仍以目前業界普遍的stage-based OCV 方法為例( 或稱AOCV), 可以將其看成是在一張LVF 表格裡, 藉由控制/ 約束cell 在某個transition loading 範圍內, 比較/ 選取一個較悲觀的σ , derate 隨著path stage 級數增加逐漸收斂( 基於隨機雜訊的cancellation 效應). 針對這個部分, Foundry宣稱用真實的path SPICE 模擬所得到的方法其實並不好!( 看起來也作弊/ 造假, 哪有clock/data/early/late/rising/falling 會一樣的這回事?)

第一階(Stage-1) 的值通常以類似跑SPICE Monte 得到, EDA 有較快的solution( 但不是真的Monte), 但其它值(Stage-2~ n ) 筆者建議套用statistical sum的數學模型以避免鴕鳥, derate 隨著path stage 級數增加converge ( k *σ* n ^ α )/ n , 其中, nstage count, α介於0.5~0.65 之間. ( EDA 廠商 / 論文 0.5 , 但不一定適合某些Foundry 或套用至各種不同process Vt Channel-length 等元件, 這也是目前LVF-based 設計流程還看不到相關控制/ 客製化選項的潛在問題). k看你的心臟大小( 承擔風險), 介於1~3 之間, 通常透過SPICE STA correlation 可以適當的把它調小 ( 多慮是正常的, 這是「錨點效應 (Anchoring Effect) 」之「調整不足」 ), 事實上所謂的GD/OCV/AOCV/SBOCV 方法原本就很Heuristic , 只是我們買單罷了!



這個表單主要有兩個機率密度函數 : 1) 第一階derate%, 即我們加諸於實體設計(physical design) 與時序驗證(timing signoff) 時的design margin, 以及2) 邏輯閘傳輸過程的時間延遲delay(ps).

這兩個機率模型可以分別從實際的設計區塊(design block) 與所使用的標準元件庫(standard cell library), 可能是Foundry 提供也可以是in-house or custom-built, 以靜態統計分析得到. 各位可以根據實際的統計資料重新設定模型. 例如, D0 HVT 等元件被禁止使用, 進行統計與建立機率模型時請將其剃除.

接下來, 我們藉由兩個「機率密度函數( 可以刻意調稍微悲觀一些) 來檢視現行的「設計餘量」. 表單可以立即計算/ 更新1) fixed derate 2) SBOCV 兩種不同的方法所得到的「累積設計餘量(cumulative design margin) , 通常針對不同的設計區塊, 我們可以藉由調整不同derating 值與截距(uncertainty) 來減少物理實現(physical implementation) 時的過度悲觀( Over Design).




請注意! SPICE simulation結果才是裁判, 我們必須跟SPICE 對答案, 而不是Foundry recipe! 實務上我們可以選取三~ 五百條critical paths( STA 結果排序) 來跑SPICE simulation, 以確認「設計餘量」的邊際.



定錨與調整
如下圖中標示B的輪廓是我們用於實體設計時的配方, SPICE contour是基於原本Foundry配方施作的結果, 則下圖中標示C的輪廓將會是更新過後SPICE模擬的結果. 沒錯, 它比較有競爭力了, 因為新配方會少用許多短通道長度(short-channel)low-Vt的邏輯閘, 也不會拿到第二名的cell去長clock-tree. 這真的很弔詭! MajorityTT, 但若不放棄守備SS-3σ, 你跟tool都會被迫選擇不好的cell去做design/optimization, 即使最新的process control window告訴你都偏FF! (我們有機會再聊聊)


Margin 」能退多遠跟許多因素有關, 例如, 包含封裝的PDN(power deliver network) 品質、PLL 佈局、Clock 走線、所使用的元件庫種類、控制條件(trans/load limit, EM prevention) 、甚至鮮少人注意的(non-monotonic) timing table 解析度等等. 也跟你如何修timing path 有關, 例如slack -20ps對真實silicon yield 的「impact 」不一定比-10ps , slack 不見得不用修! (small delay silicon correlation / 壞的部份原因)

目前, 這部分比較不可怕, 只要預先分析/ 規劃好, 即使是把晶片下到2nd 3rd 的晶圓廠都能控制災情. 然而「On-chip variation 」與「Hold time 」相對較少人實際掌握到重點, 以為顧好只佔6/1000( ± 3σ) 的兩端, 就可以掌控全局? 非也!

Hold time 」是「相對論」, 請仔細想一下甚麼是最快的Corner? 在哪個process/voltage/temperature?
setup+hold window 在考慮溫度與電壓效應下, 若套用「弦論」的說法來形容會是5 維度的流形(manifold), 即兩面在兩個各自平行時空(time-space domain) 中飄的旗子. 對於元件物理, 上述談到所使用的元件庫種類、施工時的控制條件、系統軟/ 硬件操作範圍等影響應要先有全面的模擬, 若又想做晶片評等(binning) 或補償(compensation) 等後矽的操作(post-silicon tuning) 將又是另一回是. 我們以後再討論.

很不幸! On-chip variation 」與「Hold time 」都無法用補償的方式處理( 補償不了, 所以有些tier-1 會做protection 或容錯), 只能預先妥善規劃. 也就是我們常常花99% 的力氣去顧6/1000 的特例, 而這些「過餘到爆的Margin 」卻又保護不了這些被漠視/ 放棄的大片江山. ( 還不如去顧好994/1000 majority, 若打算做binning 的話)

其它還有諸如許多STA methodology 相關的文獻研究, 比筆者也不甚熟悉, 既然是淺談, 我們就不再多談了! 我期待有讀者能找到表單公式的問題, 也相信年輕人會有更好的方法且做得更好, 這樣筆者的目的就已經達到了!


「專家是訓練有素的狗(well-trained dogs) 」嗎? 那我們就「系統性」地多多well-train 一些吧!


其實愛因斯坦是這麼說的: … Otherwise he----with his specialized knowledge----more closely resembles a well-trained dog than a harmoniously developed person .

如同前面提到的: 你須先自己走在前頭並當傳教師, 但不需要企圖說服每個人, 透過內化讓大家慢慢向前. 當每著人自己「主動」有了自己的想法並嘗試往前, 那股能量就是強大的「競爭力」來源!

「努力的爬吧! 姐妹/ 弟兄們! 」 「我們將來根本不怕懸崖的!