發表文章

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

圖片
此篇延續[數 值電磁 - 電容模擬器自己寫 (part1/3) ], [ 數值電磁 - 電容模擬器自己寫 (part2/3) ] 用MATLAB寫一個計算電容的數值模擬器,此篇介紹邊界條件Boundary Condition。 1. 如何給電壓值 2. 如何模擬無限大free space [如何給電壓值] 我們知道電容C=Q/△V 若有兩個金屬,一個給1V,另一個給0V。 那麼金屬上會自然感應出電荷Q,而感應電荷的量越多,代表C越大。 那麼1V在模擬上是如何加在金屬上的呢? 前兩篇介紹到Laplace Equation。      -🜄²φ = 0 電壓=電位=φ。 常見電容模擬器會將整個金屬視為等電位。 所以模擬上金屬給1V,只要將整塊金屬的φ都強制設定為1V就可。 如下圖,藍色是金屬,其一金屬φ永遠是1(V),另一金屬φ永遠是0(V)。 此類型又稱Dirichlet Boundary Condition [如何模擬無限大free space] 前兩篇介紹到Laplace Equation的有限差分型態。      φ(x,y) = (φ(x-h,y) + φ(x+h,y) + φ(x,y-h) + φ(x,y+h))/4 「x,y點的電位 = 左、右、上、下四個點電位的平均(相加再除4)。」 如下圖 剛我們已將中間的金屬強制給定電壓φ=1V或0V。 而其他空間φ(x,y)可由上式算出,由左、右、上、下四個點電位求得。 有趣的是邊界呢?    例如最左邊邊界φ(1,y),已經沒有更左邊的電位可以用來算φ(1,y)。    例如最下邊邊界φ(x,1),已經沒有更下的電位可以用來算φ(x,1)。 所以邊界上的φ是必經特別處理的,我們稱為邊界條件(Boundary Condition)。 一種邊界條件處理是不管他(不算他),讓邊界φ維持為0。 其實仔細思考,這就等同於外面包著一塊0V的金屬(如同 [如何給電壓值] 剛剛描述)。 如下圖,整體架構變成3塊金屬,而最外面那圈的電壓為0v。 不難想像,整體電容值會更大,因為多了金屬到外圈的電容。 顯然把邊界φ維持為0不是個好主意,破壞了原本模擬的架構。 但更經常,我們想知道的是只有2塊金屬單純地放在空氣中(或介質)中。 問題就成為,我們如何用運算「有限大」空間,去得到「無限大」空間的結果。 一種近似方法是 floating

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

圖片
此篇延續[ 數值電磁 - 電容模擬器自己寫 (part1/3) ] 計算電容的數值模擬器,此篇延伸單一介質(homogeneous)至多種介質(non-homogeneous)。 如下圖,中間為方形金屬      上圖為單一介質      下圖為多種介質 主要參考文獻,University of Utah - 教授JR Nagel https://my.ece.utah.edu/~ece6340/LECTURES/Feb1/Nagel%202012%20-%20Solving%20the%20Generalized%20Poisson%20Equation%20using%20FDM.pdf 首先介紹相關方程 因為介電材料ε不再是單一常數,是會隨x,y改變的,所以寫成ε (x,y) 。 Maxwell Gauss law且source free       🜄·(ε(x,y)E) = 0...(1) 接著定義電位φ和E的關係       E = -🜄φ...(2) 將式(2)帶入式(1)       🜄·(ε(x,y)🜄φ(x,y)) = 0 拆解🜄成偏微分,且為了方便先只討論二維x,y      🜄ε(x,y)·🜄φ(x,y) + ε(x,y)🜄🜄φ(x,y) = 0     [(მ ε(x,y)/მx)*(მφ(x,y)/მx)] + [(მε(x,y)/მy)*(მφ(x,y)/მy)] + [ε(x,y)*(მ²φ/მx²+მ²φ/მy²)] = 0 採用「中央差分方」把討人厭的微分幹掉 且離散x,y為xx,yy,並把xy的mesh都設定成一樣大△x=△y=h       [( ε(xx+1,yy)-ε(xx,yy))/h * (φ(xx+1,yy)-φ(xx,yy))/h] +     [( ε(xx,yy+1)-ε(xx,yy))/h * (φ(xx,yy+1)-φ(xx,yy))/h] +     [ ε(xx,yy)*(φ(xx+1,yy)+φ(xx,yy+1)+φ(xx-1,yy)+φ(xx,yy-1)-4φ(xx,yy))/h²] =     0 接著把φ (xx,yy)整理到左邊     a0* φ(xx,yy) = a1*φ(xx,+1yy) + a2*φ(xx,yy+1) + a3*φ(xx-1,yy) + a4*φ(xx

數值電磁 - 電容模擬器自己寫 (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)丟到左邊寫成       φ(x,y) = (φ(x-h,y) + φ(x+h,y) + φ(x,y-h) + φ(x,y+h))/4...(6) 式(6)是本文最核心的主角,數學有些討厭,用物理解釋式(6)就是:  「 x,y點的電位 = 左、右、上、下四個點電位的平均(相加再除4)。」 求解問題如下圖,同軸

電容器基礎觀念

圖片
         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: 電力線起於正電荷,終止於負電荷。 平行板電容器 C = epsilon*A/d      epsilon為金屬周圍介電材料       A為平行板面積      d為平行板之間距離 透過公式,再次驗證C的大小和幾何形狀(A&d)相關。 此公式帶給我們重要觀念,當兩個金屬板靠很近(d很小),電容器C越大。 電容器廠商,為了提高容值,就會研究如何精進製程,讓兩個金屬越近越好。 反過來,兩條信號線AB之間也有電容器,儘管不是刻意設計的。 但能量/訊號會透過電容器在

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」。 之後,使用者在PowerSI做的任何操作,都會被紀錄且翻譯成TCL啦~ 例如:我操作更改線寬100um再改為50um,相對應的SigrityTCL會自動產生。      sigrity::update Trace {Trace84} -Width {0.0001} -Endw

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 Class-I),此種MLCC容值變化vs溫度有著非常線性且穩定的特質,穩定到可以拿來當溫度sensor。C0G比較少拿來當電源穩

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。