發表文章

數值電磁 - 電容模擬器自己寫 (part1/3)

圖片
此篇紀錄使用MATLAB自己寫一個電容模擬器。 利用數值電磁的方法,計算空間電位、空間電場、金屬上電荷、到最後到電容值。 並將計算結果對比商業3D模擬器,Cadence Clarity Capacitance、Ansys Q3D。 文章最後分享我所編寫的MATLAB程式碼。 主要參考文獻,瑞典皇家理工學院(KTH)Stefano Markidis教授的授課講義。 https://canvas.kth.se/files/1412425/download?download_frd=1 計算兩塊金屬之間的電容數值。 首先介紹相關方程 Maxwell Gauss law:        🜄·E = ρ/ε...(1) 接著定義電位φ和E的關係       E = -🜄φ...(2) 將式(2)帶入式(1)       🜄·(-🜄φ) = ρ/ε 若計算的φ空間是純介質(or空氣),也就是source free(ρ=0), 得       -🜄²φ = 0...(3) 式(3)又稱為Laplace Equation。 接著介紹數值方法來算式子(3) 為了方便,用二維x,y帶入式子(3)       -🜄²φ = მ²φ/მx² + მ²φ/მy² = 0...(4) 採用「中央差分方」把討人厭的微分幹掉       მ²φ/მx² ⋍ (φ(x-△x) - 2*φ(x) + φ(x+△x)) /△x²       მ²φ/მy² ⋍ (φ(y-△y) - 2*φ(y) + φ(y+△y)) /△y² 上式中的△x和△y為xy方向的「mesh」,為了方便 ,把xy的mesh都設定成一樣大       △x=△y=h 帶入式(4)       -🜄²φ ⋍ (φ(x-h,y) + φ(x+h,y) + φ(x,y-h) + φ(x,y+h) - 4*φ(x,y))/h² = 0...(5) 接著介紹Jacobi Iteration來算式(5) 把φ(x,y)丟到左邊寫成 ...

電容器基礎觀念

圖片
         Take-away:  電容 器容值,和 「導體的幾何形狀」,「周圍的介電材料」相關。 電力線起於正電荷,終止於負電荷。 金屬互相越靠近,電容越大。 Maxwell電容矩陣有負號,SPICE電容矩陣沒有負號。 Maxwell電容矩陣、SPICE電容矩陣可互相轉換,GroundNet需定義清楚。 -----Start 電容器 杯子裝水       咖啡杯、馬克杯、大水桶,「容器幾何形狀」決定裝水大小。       但要給水龍頭,容器才有水儲存。 電容器裝電能       電容器C的大小取決於「導體的幾何形狀」,「周圍的介電材料」。       但要給電壓差在導體上,電容器才有電能儲存。       例如任意兩塊金屬靠近,但金屬不互相碰一起。       此兩塊金屬之間就能形成一個電容器,能存放電能(就像杯子能放水)。 C=Q/dV       兩塊金屬間給電壓差dV,感應出的電荷量Q,就是電容值大小。       將抽象能量具現化的秘訣就是「電力線起於正電荷,終止於負電荷」。       如下,畫出兩導體之間的電力線、正電荷、負電荷。 任意兩塊金屬之間都有電容器,有刻意設計和非刻意設計。 數量級 ●不刻意設計的Cap ~ pF        如信號pad/via寄生的Cap,兩訊號線之間的Cap, 50ohm傳輸線的對地容值Cap per inch 3pF。 ●刻意或不刻意設計PCB/PKG/DIE上的Cap ~ nF       如on-die cap, PCB/PKG Power Ground Plane Cap。 ●刻意設計的電容器元件Cap ~ uF       如MLCC, DIP cap。 NOTE: 電容 器容值,和 「導體的幾何形狀」,「周圍的介電材料」相關。 NOTE: 電...

Cadence Sigrity模擬自動化(TCL)

圖片
  -----Start 因為工作實在太忙碌了,上次更新此網站是一年半前了。 趁著聖誕假期,外國人休假去了,很開心可以再聊聊SI/PI。 一個PKG/PCB設計,從前期參數設計,post-layout電性驗證sign-off,完工後的debug。 這些都倚賴模擬來分析,可想像模擬的量只會越來越多。 以往1~2個模擬案件,工程師有機會純手動完成。 但若老闆要求做100個、甚至1000個模擬呢? 想必純手動非常困難了。 此篇介紹Cadence Sigrity系列自動化操作。 先前文章介紹過 Cadence PowerSI ,本文仍用PowerSI當作範例。 (如下圖) TCL編輯器 PowerSI切換至TCL Command window。 TCL就是一種程式語言,指令分為兩種      通用TCL command      Sigrity專用TCL command (如下圖) 通用TCL command 通用指令可至 TCL基本指令 查詢。 例如:HelloWorld(可複製貼上)      set test "hello world"      puts $test 執行結果 當然TCL語法也支持if, loop, for, array, logic...等各種基本語法。 例如:用for迴圈設定寬度1mm到9mm(可複製貼上)      for {set ii 1} {$ii<10} {incr ii 2} {           set TraceWidth $ii           puts TraceWidth={$TraceWidth}mm      } 執行結果 (如下圖) Sigrity專用TCL command 若想用TCL控制PowerSI的選項,例如設定線寬,該怎麼做呢? Cadence提供非常好用的「TCL錄製功能」,可直接將使用者操作翻譯成TCL。 先點選上方「Record TCL」,再點選「Show current TCL script」。 之後,使用...

Power Integrity - 電容MLCC簡介和選擇

圖片
         Take-away:  MLCC壞掉會短路 ,務必注意 『額定電壓』& 『溫度特性』 。 『 操作DC電壓 』 越接近電容 『額定電壓』,容值越小。 電容尺寸越小,寄生電感越小,但容值上限也小。 高頻(20M~200MHz)可採用小尺寸MLCC電容(0201)、中頻(2M~20MHz)中尺寸MLCC電容(0402)、中低頻(0.1M~2MHz)中大尺寸MLCC電容(0603/0805) 。 -----Start 電容在電路板可做為『高頻率波器』、『訊號bypass路徑』、『電源穩壓』...等 本篇文章簡介『電源穩壓用』之『多層陶瓷電容』MLCC(multi-layer-ceramic-chip),並採用MLCC大廠murata作為範例電容, murata網站連結 。 如何選擇MLCC? 『不能壞』『額定電壓』 某些種類電容壞掉時是開路,只會造成電性效能降低。  但MLCC壞掉是短路,此時已經不是效能差而已,是會對元件造成不可逆的損壞。 所以選擇MLCC第一步就是『不能壞』。 假如電源長時間操作在『95度C』、『5V』,那麼我們選用的電容一定要      MLCC參數中的『額定電壓』一定要大於5V,如選用6.3V or 10V。      MLCC參數中的『溫度特性』高溫範圍一定要大於95C,例如選用X6S or X7R。 『溫度特性』X7R EIA協會定義代號來描述MLCC溫度特性。 例如X7R,第一碼X表低溫至-55度C,第二碼7表高溫至125度C,第三碼R表容值±15%。 例如Y5S,第一碼Y表低溫至-30度C,第二碼5表高溫至85度C,第三碼S表容值±22%。 完整代碼表請見 連結 中的 Table2 。 我們可依據系統操作溫度來選擇對應MLCC,通常越高溫會讓容值下降,造成電性表現變差。MLCC容值變化vs溫度是個非線性關係,例如90度時電容下降5%、100度時電容下降8%。各家電容廠商的溫度vs容值曲線都會不同,但各家廠商能保證的是在操作溫度內,容值變異量要在EIA規範內,例如X7R就是125度C時電容下降要保證在15%內。 『溫度特性』C0G MLCC溫度特性中,代號C0G是個特別的類別(屬於EIA C...

Cadence PowerSI教學 - PDN Extraction

圖片
-----Start 本篇介紹電源PDN電性模型extraction流程。 以flipchip BGA型態的IC封裝為例(PCB的PDN extraction流程也相似)。 目標觀察頻段為DC到2GHz。 選擇的工具是Cadence的PowerSI軟體。 PowerSI是一套非常強大的電性extraction軟體,推薦大家使用[ 連結 ]。 (如下圖) 讀取layout Power SI支援各家不同layout格式。 包含Cadence自家的mcm/brd/sip,或者Mentor的pads等。 (如下圖) 疊構設定,新增bump/BGA層 打開疊構編輯(stackup)。 PowerSI已自動帶入layout檔的設定,包含四層板、最上方&下方的solder mask層。 但實際上,flipchip BGA型態的IC封裝,封裝上方會有bump錫球(如紅色),封裝下方會有BGA錫球(如綠色)。若要將這些效應考慮進來,那必須在『疊構上/下各新增一層』。 (如下圖) 新增bump/BGA模型by via Bump和BGA錫球,實際形狀是球形,模擬上常用圓柱形來等效球形。 PKG/PCB上,via過孔也剛好是圓柱形,所以我們可『用via來模擬bump/BGA 』。 接著建立via過孔物理形狀,例如BGA球的直徑是500um,所以建立一個直徑500um的via,層數由L4到最底層。bump也用同樣手法建立,位於L1到最上層。 (如下圖) 在layout上長出bump/BGA 剛剛我們已新增bump/BGA疊構,也建立了bump/BGA的via物理模型。 接下來要在原本沒有bump/BGA的layout上長出bump/BGA。 如step1~2,我們選取要長出bump的點,並在step3-5長出via(bump)。 注意在step4中,因為bump位於最上層和L1之間,所以操作上要 『先點選最上層Plane01一次,再點選L1 Signal$1一次』,這樣代表我們要新增via在這兩層之間。 最後透過3D view,可看到bump/BGA已建立。 (如下圖) 設定ports 在layout長出bump和BGA後,接著設置port。 我們目標是在bump上方/BGA下方建立port。 筆者的習慣是先在 『bump上方/BGA下方建立元件』,然後再generate port。...

Power Integrity - PDN時域電壓noise分析

圖片
        Take-away:  PDN頻域分析是個很好的分析過程,但最終還是需在時域觀察電壓抖動。 時域noise波型可看出頻域Z11共振點頻率 。 不同Z11 peak表現出不同時域波型,抑制方法也不同 。 若PDN在 f_res有明顯的共振,建議 模擬時間至少為 1/f_res,才能觀察到最大noise。 -----Start 上篇中我們看了Power的頻域分析[ 連結 ]。 PDN頻域分析是個非常有用的分析過程,但終究還是要回歸到時域。 因為時域上電壓抖動對訊號造成的影響,才是工程師最在意的。 NOTE: PDN頻域分析是個很好的分析過程,但最終還是需在時域 觀察 電壓抖動。 (如下圖)  下圖是頻域分析的PDN Z11,其中有兩個共振點,8MHz & 34MHz。 dV=dI*Z11 若抽載電流dI為寬頻電流,大家能猜到時域電壓noise的波型嗎? (如下圖) PDN時域noise波型 模擬電路由靜止到全載,抽載一電流0到5A之step current,其中rising time為2ns。 下圖為IC端bump點看到的電壓抖動。 可看出時域noise波型的確主要由8MHz和34MHz形成。 NOTE: 時域noise波型可看出頻域Z11共振點頻率。 (如下圖) PDN時域noise抑制 10ns~50ns為高頻響應,主要由34MHz peak決定。 100ns之後的damping,主要由8MHz peak決定。 若想改善電壓最低值(高一些),那應該減小34MHz的peak,例如之前提過的換一顆ESL小的電容(但因電流為寬頻訊號,所以34MHz和8MHz其實都貢獻不小)。 若想改善電壓damping的強度(較快收斂),那應該減小8MHz的peak,例如之前提過的改善PKG和PCB layout設計。 在此展現出,了解頻域Z11和時域波型的關聯後,再透過頻域Z11分析來找到適當的solution。 這樣的流程比起單純看時域波型找solution,效率大大提升了! NOTE: 不同Z11 peak表現出不同時域波型,抑制方法也不同 。 (如下圖) 模擬時間長度 上述的電壓noise波型中,只要模擬25nsec就足以可抓出最大noise。 若有一Z11分布如下,低頻的6.4MHz peak高於...

Power Integrity - PDN頻域Z參數解析

圖片
       Take-away:  常用「IC pad/bump點的頻域Z參數」當作PI分析參數 PDN Z參數不能只能看共振點,各段都要仔細分析。 改善PDN共振點,需知道共振點的成因,找出共振點對應的LC 。 拼命加電容不一定能改善PDN,要確切知道問題點才有效。 -----Start Power的穩定性是工程師的一大挑戰,往往可能比signal更令人頭疼。 一般人常認為power的特性難以估計、千變萬化,只能拼命加電容。 但其實仔細觀察、一步一步的拆解、抓住關鍵參數,還是有跡可循的喔! 筆者將介紹PDN頻域分布、時域波型、layout設計、電容選擇、電流抽載...等。 本篇由PDN頻域開始! (如下圖) 觀測點 & Z參數 歐姆定律dV=dI*Z, 其中      dI為IC電路抽載電流,由內部電路決定。      dV為電壓變動,目標是電壓變動越小越好。     Z參數為PDN阻抗分布,是 dV/dI兩者橋梁。 我們要穩壓的點是IC內部,所以我們常用「IC pad/bump點的頻域Z參數」當作PI分析參數。 NOTE:  常用「IC pad/bump點的Z參數」當作PI分析參數 (如下圖) PDN頻譜分布 以下為 IC pad/bump點的PDN Z阻抗結果,阻抗值隨頻率不同。 可以看到PDN有兩個共振點,分別在8MHz和34MHz。 大部分的Z參數也是類似此圖,有2~3個共振點。 我們仔細的分析PDN Z參數, 將其拆成五段A、B 、C、D、E。 由Z參數的斜率,可知道ACE為電容性,BD為電感性。      A: Die內部電容。      B: Pad/bump到封裝電容的路徑電感 + 封裝電容的寄生電感。      C:  封裝電容。      D: Pad/bump到PCB電容的路徑電感 + PCB電容的寄生電感。      E: PCB電容。 共振點P1主要由A、B構成。 共振點P2主要由C、D構成。 NOTE: PDN Z參數不能只能...