發表文章

IC封裝高速訊號的關鍵:PTH Via過孔

圖片
  Take-away:  使用TDR觀測阻抗時,需依照頻寬需求調整TDR risetime。 長PTH在高頻上為高阻抗。 降低PTH阻抗 方法有拉近P/N PTH、放置GND PTH在差分訊號周圍。 高速訊號上,PTH/BGA是一大關鍵,務必降低阻抗不連續。 -----Start 在IC封裝設計,CORE層相比PP層厚上許多,常見CORE層厚度為500/800/1200um,PP層厚度為20-35um。用於CORE層的過孔VIA為機鑽孔,又稱為PTH,而用於PP層為雷射孔。 (如下圖) PTH在整體PKG設計中,影響電性效果很多,原因如下。 PTH為非均勻傳輸線(non-uniform transmission line),沒有一個固定的阻抗值。 PTH長度不短(500um-1200um)。 PTH和走線架構差異大,交界處會有不連續效應。 封裝上的高速訊號走線,我們常用core以上的層當主走線層,待走線fanout至BGA正上方時,再下PTH。除了layout設計上比較容易,也較能避免PTH間的coupling問題。 (如下圖) 筆者之前文章已探討過BGA的阻抗特性: 別讓GND鋪銅毀了你的訊號 那麼PTH阻抗特性為何呢? 這裡用TDR模擬來一探究竟。 舉800um的PTH為例,下圖為一對差分訊號TDR結果分布,觀測點為BGA。 阻抗結果顯示211ps低阻抗95ohm,225ps高阻抗105ohm。 此結果「似乎」不差,在100ohm的正負5%內。 (如下圖) 這時候有經驗的工程師一定會問 「目標訊號多快? 此模擬TDR rise time多少?」 沒錯,若我們目標是56Gbps NRZ,那麼50ps rise time的TDR是完全不夠的,速度太慢看不到高頻的反應。(50ps的TDR適用於約16Gbps NRZ) 所以我們將TDR rise time調整為更快的15ps,觀測點為BGA。 阻抗結果顯示207ps低阻抗87ohm,225ps高阻抗112ohm。 此時阻抗偏離100ohm已經超過10%。 TDR結果中, 207ps低阻抗87ohm為BGA結構對PKG GND Plane / GND Ball  / PCB GND plane夾出的大電容。 225ps高阻抗112ohm為PTH結構中段的電感效應,此時PTH中段離上層GND ...

別讓GND鋪銅毀了你的訊號

圖片
Take-away:  封裝錫球PAD會有大電容效應,造成走線阻抗下抗,S11變差。 在走線旁鋪銅會造成走線阻抗下抗,S11變差。 -----Start (如下圖) PCB或者IC Package Desiner在設計完板子後,經常把空白地方鋪滿GND銅。這麼做原因可能為製作上鋪銅率的要求,或者用dynamic shape方便設計造成的結果,或者單純地只是習慣性動作。但在高速訊號上,GND可不能亂鋪! 以下將簡單介紹常見GND帶來的影響、以及改善方法。 (如下圖) 高速差分訊號上,我們會特別設計線寬線距來達到阻抗控制,經由模擬軟體可得知 100歐姆差分對,在此疊構下,線寬23um,線距52um。 (如下圖) 我們將此線寬線距套入封裝設計中,最後習慣性地將空白地方撲滿GND銅,圖為BOT和TOP層。 (如下圖) 畫好後,我們用3D模擬軟體檢驗封裝電性特性,並畫出 S21、S11。 S11約-13.5dB,顯示這不是一個很好的設計。(好的設計通常為-20dB以下) 接著我們用TDR測試觀察阻抗分布,觀察點為封裝BGA處。 可看到設計中充滿低阻抗,此走線設計遠低於我們的目標100歐姆。 甚麼原因造成低阻抗呢? 我們不是已經控制線寬線距來達到100歐姆了嗎? 為了解謎,我們須進一步『仔細』觀察封裝設計。 (如下圖) 在封裝BOT層,會擺放BGA錫球的PAD(尺寸為550um),且PAD上會有錫球(如下圖箭頭)。 我們知道低阻抗是由大電容效應導致,而大電容代表結構中Signal和GND有大面積相鄰。 訊號錫球和BOT層的GND,會夾出大面積電容,導致低阻抗。 (如下圖) 常見解決錫球電容效應,就是擴大BOT層的Signal Pad Void。 拉大PAD錫球到GND的距離,減少電容性、提升阻抗。 (如下圖) 經過Pad Void改良設計後,我們再做一次模擬。 S11約-23.5dB,比起原本的-13.5dB,改善許多。 TDR方面,也平穩了許多,更靠近於目標100歐姆。 NOTE: 封裝錫球PAD會有大電容效應,造成走線阻抗下抗,S11變差。 由上圖得知,整體走線還是有低阻抗處,我們更進一步分析原因。 (如下圖) 我們仔細觀察封裝的設計,綠色的GND圍繞在藍色走線的周圍。 在做走線阻抗模擬時,應該將GND一併考慮進來。 (如下圖) 修正模擬結構如下,走線旁加入GND。...

TDR的阻抗誤差、Peeling修正

圖片
Take-away:  TDR 採用step-voltage 當電壓源會有較直觀的阻抗結果 。 TDR 在強烈&多層反射的DUT下,會產生阻抗誤差。 阻抗誤差可用TDR Peeling Algorithm修正。 -----Start 之前介紹過TDR的基本原理 https://sipi-taiwan.blogspot.com/2020/01/tdr.html (如下圖) 當時我們選用step voltage當作source,為什麼呢? 舉例DUT為40ohm + 60ohm + 30ohmTerm。 (如上圖)採用step voltage source在時域上的波型會有明顯的切線,可以輕易的分辨阻抗和時間(傳輸線物理長度)。 (如上圖)採用pulse voltage source,波型亂成一團難以分辨。 NOTE: TDR 使用step-voltage source會有較直觀的阻抗結果。 (如下圖) TDR在有些時候會"失靈",此舉兩例。 case 1: 強烈多重反射,造成TDR阻抗誤差。 DUT為10ohm和50ohm,這麼大的阻抗差會有強烈的反射,使訊號有很長時間/多次的多重反射,造成TDR的誤判。 case 2: 因多層多重反射,離TDR越遠的阻抗誤差越大。 DUT為三段40ohm&60ohm組成,TDR結果顯示第一段40ohm&60ohm尚能準確抓出來,但到了第三段40&60ohm,已經有了誤差。 NOTE: TDR 在強烈&多層反射的DUT下,會產生阻抗誤差。 如何解決多重反射造成的TDR誤差呢? 有個演算法稱為TDR Peeling Algorithm。 Peeling概念為利用不同時間點的阻抗結果來修正誤差的阻抗,筆者在這不詳敘Peeling的推導,僅提供網路文檔資源給讀者參考。 Peeling Doc 1:  https://arxiv.org/pdf/1804.00456.pdf Peeling Doc 2:  https://ieeexplore.ieee.org/stamp/stamp.jsp?arnumber=7342291 NOTE: TDR Peeling Algorit...

如何得知走線阻抗? TDR的原理&自建TDR模擬電路

圖片
Take-away:  類似 雷達的概念,TDR送出輸入電壓波後量測反射電壓波,得知目標阻抗,阻抗Z2=Z1*(V_i+V_r)/(V_i-V_r) 觀察TDR的阻抗結果得知走線的阻抗和長度。 -----Start (如下圖) 筆者前些文章提過,阻抗不連續時會產生反射波。 https://sipi-taiwan.blogspot.com/2019/08/blog-post_15.html           反射電壓=輸入電壓*(Z2-Z1)/(Z2+Z1)。 換個角度思考,如果知道反射電壓、輸入電壓、Z1,我們就可以計算走線阻抗Z2。 把反射公式倒過來寫得:           走線阻抗Z2=Z1*(V_i+V_r)/(V_i-V_r), V_r為反射電壓, V_i為輸入電壓。 TDR(TimeDomainReflectometry)就是利用上述原理得知目標阻抗。TDR送出輸入電壓波後量測反射電壓波,類似於雷達的概念,常用於量測走線、via、connector阻抗。 NOTE:  類似 雷達的概念,TDR送出輸入電壓波後量測反射電壓波,得知目標阻抗,阻抗 Z2=Z1*(V_i+V_r)/(V_i-V_r)。 (如下圖) 為了更深刻理解TDR,筆者在此篇文章先介紹如何自己建造TDR模擬電路,並於下篇文章再更深入地討論各種現象。 TDR模擬電路架構,電壓源經過一個50ohm傳輸線,來量測待測物DUT。 採用step voltage source Vs當電壓源。 公式 阻抗Z_DUT=50*(V_i+V_r)/(V_i-V_r) 中Vi是A點向右邊傳遞的輸入波(注意Vi並不是電壓源Vs),Vr是A點中反射的電壓。若我們直接量測A點電壓,會量到Vi+Vr加在一起的波,在這邊我們利用VCVS的技巧讓Vi和Vr分開來,VCVS可讓訊號由左邊向右傳遞,但阻斷右邊向左傳遞的路徑。 另一種電路架構較簡單,利用Vi=Vs/2, Va=Vi+Vr的關係推得 阻抗Z_DUT=50*V_a/(V_s-V_a) (如下圖) 我們利用此電路來驗證TDR電路(40ohm傳輸線+30oh...

我在內層走線量到好大的遠端串擾(FE-XTLK)

圖片
Take-away:  對於訊號傳遞方向而言,內層走線有近端串擾,沒有遠端串擾。 實際PCB設計,訊號受到阻抗不連續產生反射後,此反向傳播訊號會將近端串擾轉變為遠端串擾,讓內層走線也有遠端串擾。 在評估走線要走外層或內層,需考慮完整via數量/via位置/負載型態/走線長度/線距才能準確評估。 -----Start 老闆:這板子要面積小、類比/高速數位訊號、省電不能開ODT,大家有甚麼好建議嗎? 小M:類比最怕高速數位訊號的串擾,我看到書上寫,訊號走內層就完全沒有遠端串擾! 老闆:好!訊號品質絕對是第一優先,那我們就加層數,把訊號由外層移到內層。 (板子製作好回來後‧‧‧) 老闆:小M,為什麼量出來的遠端串擾會這麼大? 內層訊號竟然比外層還髒,你不是說內層訊號沒有遠端串擾嗎? 小M:怎麼會這樣? 沒錯,大部分的SI/PI書籍都寫內層訊號沒有遠端串擾,但相信工程師們在實際的PCB設計上,還是會量到一堆雜訊,這是怎麼一回事呢? (如下圖) 要分析小M的問題,我們先從最單純的架構出發,下圖有一段2200mil(50ohm)傳輸線連接了左邊DR(50ohm)和右邊Term 50ohm,上半部是外層走線的結果、下半部是內層走線。 左上角綠色眼圖是外層走線的近端串擾。 左下角綠色眼圖是內層走線的近端串擾。 >這兩張圖可看出外層和內層都有近端串擾,不同的是外層干擾聚集在rising/falling附近,而內層干擾幾乎是每個時刻都有,這是因為近端串擾會維持2倍走線fly-time,是段很長的時間,所以雜訊很容易就涵蓋了整個bit。這邊我們在乎的是右邊RX接收到的訊號,所以左邊近端串擾的結果影響不大。 右上角綠色眼圖是外層走線的遠端串擾。 右下角綠色眼圖是內層走線的遠端串擾。 >這兩張圖可驗證小M書上的理論是正確的,就是外層有遠端串擾,而內層的遠端串擾幾乎是完美的0。 NOTE:  對於訊號傳遞方向而言,內層走線有近端串擾,沒有遠端串擾。 (如下圖) 接著來看另外一個例子,和上個例子只差在右邊負載不同。下圖是一段2200mil(50ohm)傳輸線連接了左邊DR(50ohm)和右邊Cload (1pF),上半部採用外層走線、下半部採用內層走線。 右上角綠色眼圖是外層走線的遠端串擾...

小小的test pad會影響訊號品質? 放哪好?

圖片
Take-away:  via pad或test pad和傳輸線相比,通常為低阻抗。 兩端都在反射的架構,共振周期約為共振路徑fly time的2倍。 反射波出現的時間點和test pad長短沒關係,和整體傳輸線架構有關係。 反射波的深度和test pad長短相關。 若SDRAM無termination,且訊號是由CPU送向SDRAM,將testpad放在靠近SDRAM的地方會有較佳的訊號品質。 -----Start 為了保持傳輸線阻抗的連續,我們會盡量讓走線線寬保持一致,但實務上走線中會有無可避免的via pad或test pad,這些pad通常尺寸會比傳輸線來得寬。筆者另一篇文章提過,線寬寬代表電容較大,則阻抗越低。 NOTE: via pad或test pad和傳輸線相比,通常為低阻抗。 (如下圖) 假設傳訊號由CPU送到SDRAM,走線由A、B、C三段構成,其中B段的線寬較寬但長度短。這時工程師就很常聽到一個問題,B段那麼短對訊號有影響嗎? 筆者這裡可以先預告,B的長短只決定了品質好壞的1/3,對訊號有沒有影響是由CPU、SDRAM、A、B、C共同決定。 反射@Y:若SDRAM不開ODT,則負載為寄生電容(2pF),可視為高阻抗,所以在Y點會產生很大的正反射。 反射@X:C段阻抗50ohm,B段阻抗10ohm,所以在X點會產生很大的負反射。 (如下圖) C段5000mil,我們可算出訊號需要0.73ns來走完C段。 XY兩端都會反射,訊號首先到達Y後,花了0.73ns由Y到X,被X反射後,又花了0.73ns由X到Y,所以訊號Y->X->Y總共花了約1.5ns。 若觀察SDRAM端Y點的波型,我們預估每1.5ns就會收到一個被彈來彈去的訊號。換句話說,兩端都在反射的架構,共振周期約為走線fly time的2倍。 NOTE: 兩端都在反射的架構,會產生共振,共振周期約為共振路徑fly time的2倍。 (如下圖) 下圖的模擬結果完全符合我們的預期,每1.5ns就會有一個反射波。 (如下圖) 這個出現在訊號中央的反射波絕對不是我們想要的,但透過上述分析,可發現此共振周期和B的長度沒關係,只和C的長度有關係。B的長短不會影響反射波出現的時間點,但會影響反射波深度,這是因為B的...

Z參數使用案例

圖片
Take-away:  Z_ij=V_i/I_j where I_k=0 for k≠j Z21並不是port2到port1的路徑阻抗。 使用模擬軟體前,建議多了解軟體的各種假設和前提,以免建立了錯誤的模擬電路而得到了錯誤的結果。 -----Start (如下圖) 老闆:小M阿,幫我看一下CPU和SDRAM的PDN。 小M:是的老闆,我已經把PDN的model抽好了,port都接上了。 老闆:那CPU看到的阻抗是多少呢? CPU到VRM的路徑阻抗是多少呢? 小M:模擬軟體顯示Z11=無窮大ohm, Z13=無窮大ohm,怎麼軟體好像怪怪的阿... (如下圖) 這次小M有下方的解答圖, 小M:老闆,我知道了,CPU到VRM的路徑阻抗是5ohm。 老闆:再用模擬確認一次。 於是小M又試圖用Z13來看CPU到VRM的路徑阻抗,模擬結果為Z13=無窮大ohm。 小M:老闆,這模擬軟體有問題阿,我們要換一套新的才行。 (如下圖) Z參數的定義為 Z_ij=V_i/I_j where I_k=0 for k≠j Z31:port1接上電流源I1,量測port3的電壓V3,port2/3不接東西為開路。 我們把Z31在模擬軟體的計算方式用電路畫出來,得知Z31為無窮大,所以模擬器算出的結果是正確的,只是小M誤會把Z31當成CPU到VRM的路徑阻抗。 NOT E:  Z_ij=V_i/I_j where I_k=0 for k≠j。 NOT E: Z21並不是port2到port1的路徑阻抗。 上述狀況是不是很熟悉呢? 常常覺得模擬軟體的結果很奇怪,懷疑軟體有錯誤,但其實此誤解大多是來自於工程師對定義的不了解。上例就是用了錯誤的模擬手法,得到了一個和事實完全相反的結果。 NOTE: 使用模擬軟體前,建議多了解軟體的各種假設和前提,以免建立了錯誤的模擬電路而得到了錯誤的結果。 (如下圖) 最後再回到剛剛老闆的要求,CPU到VRM的路徑阻抗是多少呢?回想我們大學量電阻值時,我們會把電表的正負端接在電阻的兩端嗎?所以在CPU端接上port正端,VRM接地,模擬器算出來的Z11就為5ohm了。 -----END -code_082301 Q from H: 在純電阻性...