兩年碩班的 TCAD 學習心得

這篇文章會分享我以前在研究所學習 TCAD 的心得。後來我在 Synopsys TCAD 做了幾年,現在則是在 imec 讀 PhD,為元件的自生熱效應(self-heating)及其相關的可靠度議題(device reliability)開發專用的 TCAD 軟體(deterministic Boltzmann transport equation simulator),而這一切經驗,使我對於我在碩班時期使用 TCAD 的心得就更有信心。這篇文章的目標讀者為:

  1. 未來想使用 TCAD 研究的大學生(物理系佳)。
  2. 正在使用 TCAD 的業界工程師。
  3. 不了解 TCAD,但是會需要跟 TCAD 工程師合作的人。

底下我會依序談談:

  1. 什麼是 TCAD?
  2. 如何取得 TCAD?(只能透過國家奈米實驗室)
  3. 我的碩班 TCAD 經驗(如何確定 TCAD 模擬結果符合我們在書上學到的知識?)
  4. 如何學習 TCAD?
  5. 該如何發揮 TCAD 的價值?

一、什麼是 TCAD?

TCAD 通常是指用來模擬半導體的製程與電性的商用模擬軟體,例如 Synopsys 的 Process Explorer、Sentaurus TCAD、Silvaco TCAD、Lam 的 Coventor、GTS 的 GTS TCAD 等等。其全名是 Technology Computer-Aided Design。所謂的 Technology 的技術是指目前的“科技技術能力”,也就是指“半導體製造能力”的意思,我們也可簡稱為“半導體工藝”。在製作元件之前,我們總得先設計這元件應該怎麼做、應該有什麼樣的性質,所以這被稱為“半導體工藝的設計”。可想而知,這設計相當複雜繁瑣,所以我們自然會想要用電腦幫忙、輔助我們設計半導體工藝,所以就誕生了“由電腦輔助的半導體工藝設計” TCAD 一詞了。

那 TCAD 可以提供我們什麼呢?就是幫我們省下大量研發經費以回答下列種種問題:

  1. 什麼樣的製程可以帶來這種元件結構?
  2. 這種元件拿去量測電流電壓後,會出現什麼結果?
  3. 這元件在目前偏壓與加壓時間下的溫度分佈是如何?電流密度分佈又是如何?(這是難以測量得到的數據,所以通常只能透過 TCAD 得到這些資訊)
  4. 這種特殊結構,會對電流造成什麼影響?

TCAD 可以幫我們回答這些問題,所以如果上手了,那麼是可以“相當有用”的。

二、如何取得 TCAD?

現在許多教授都有跟國家半導體實驗室合作,可以獲得國家贊助的軟體使用權限。由於這些軟體都相當繁雜,不論是元件結構的仿真(Emulation),還是製程與電性的模擬(Simulation),都需要大量資金去聘請許多人來開發設計與驗證,所以這些軟體售價都是企業才能買得起的價格,一般人只能透過在學校實驗室的名義,去跟國家半導體實驗室申請使用權限。

三、我的碩班 TCAD 經驗

當時我是使用 Synopsys 的 Sentaurus TCAD,我的學長已經有用 Sentaurus TCAD 跑了些許模擬,有一些“deck”。所謂的 “deck” 是一種資料夾,這資料夾通常包含著一些專門給 TCAD 軟體的圖形化使用者介面(GUI)讀取的檔案。我們可透過 TCAD GUI 來瀏覽此資料夾內容。這資料夾通常包含了:

  1. 實驗條件:各種參數,例如溫度有 30, 50, 100K、電壓也有 10, 20, 30V。
  2. 模擬腳本:首先生成晶圓,再磊晶、擴散、蝕刻等。或是先設定好要開啟的電性模型,然後設定偏壓條件等。
  3. GUI 數據:要讓 TCAD GUI 讀取並顯示與“視覺化”該資料夾內容的各種必須資料。

因此我可以從這些 deck 知道學長已經做了些什麼,接著我要從他的 deck 開始研究。整體來說,我在碩班時期所做的事情是:

  1. 建立元件結構模型,以及設定電性模擬。
  2. 了解為什麼要選這個物理模型?而不是那個模型?這些模型的適用範圍是什麼?
  3. 自動化分析各種數據,例如自動畫多條 cutlines,自動萃取多條 cutlines 上的數據畫圖,轉換 CSV 檔至 TCAD 軟體能讀取的資料類型,自動把 TCAD 軟體輸出的數據轉換成 CSV 等,以此類推。
  4. 用實驗數據校準物理模型。
  5. 以及相當重要的一點,就是認識“數值模擬”。什麼是收斂?什麼是發散?為什麼有好多針對數值模擬使用的人為參數?如何解讀 log 檔?如何設定網格?對數值模擬的認識會深深影響你研究的方向。

最初我要做的事情是,確認這崩潰模型究竟跟我在課本上所學的是否相同?

最初我是使用 Silvaco TCAD 來模擬崩潰現象(因為那時我比較熟悉 Silvaco TCAD,所以即便有 Sentaurus TCAD 能用,我還是先從 Silvaco TCAD 著手)。我們知道書本上會寫說,當底下的倍增率(Multiplication rate)$M_n$ 或是 $M_p$ 達到無窮大的時候,就是崩潰的時候:

$$1-\frac{1}{M_n}=\int_{r_p}^{r_n}\alpha(r)\exp\left\{-\int_{r_p}^r\left[\alpha(r^\prime)-\beta(r^\prime)\right]dr^\prime\right\}dr\tag{1}$$

$$1-\frac{1}{M_p}=\int_{r_p}^{r_n}\alpha(r)\exp\left\{-\int_{r}^{r_n}\left[\alpha(r^\prime)-\beta(r^\prime)\right]dr^\prime\right\}dr\tag{2}$$

其中 $\alpha$ 與 $\beta$ 則是撞擊游離率(impact ionization rate),與電場呈正相關。電場越強,撞擊出越多的粒子。但這不是 TCAD 計算崩潰的方式!我們知道,通常 TCAD 都是使用 Drift-Diffusion 載子傳輸模型、載子守恆率(continuity equation),搭配高斯定律,計算出電位分佈與載子濃度:

$$\begin{align*}\text{Gauss’ law: }&\nabla\cdot\left(\varepsilon\nabla\phi\right)=-q\left(p-n+N_D-N_A\right)-\rho_{\text{trap}}\tag{3}\\[5pt]\text{Conservation of electrons: }&\nabla\cdot\textbf{J}_n=q(R_{\text{net,n}}-G_{\text{net,n}})+q\frac{\partial n}{\partial t}\tag{4}\\[5pt]\text{Conservation of holes: }&-\nabla\cdot\textbf{J}_p=q(R_{\text{net,p}}-G_{\text{net,p}})+q\frac{\partial p}{\partial t}\tag{5}\\[5pt]\text{Electron D.D. model: }&\textbf{J}_n=\mu_nn\nabla E_C+D_n\nabla n\tag{6}\\[5pt]\text{Hole D.D. model: }&\textbf{J}_p=mu_pp\nabla E_V+D_p\nabla p\tag{7}\\[5pt]\end{align*}$$

以及最重要的,用以考慮撞擊游離現象的載子生成模型(Carrier generation model):

$$G_{ii}=\frac{1}{q}\left(\alpha_n\vert\textbf{J}_n\vert+\beta\vert\textbf{J}_p\vert\right)\tag{8}$$

其中,$\alpha$ 與 $\beta$ 可以是最簡單的 van Overstraeten – de Man 模型:

$$\alpha(F)=\gamma a \exp\left(-\frac{\gamma b}{F}\right)\tag{9}$$

其中,$F$ 是該位置下的電場強度。由此可見,方程式 (1) 與 (2) 乍看之下與方程式 (3-9) 差非常多,但其實是(當然)能夠由方程式 (3-9) 推出 (1) 與 (2) 的。於是我當時就花了一兩週的時間,鑽研這些推導,同時思考,我該如何驗證模擬軟體透過迭代計算 (3-9) 得到的結果,真的跟書上所寫的 (1-2) 相同?

圖一、Python 的崩潰電壓計算結果(實線)與 Silvaco TCAD 的崩潰電壓模擬結果(三角形),以及 Python 結果相對於 TCAD 的誤差(虛線),詳見 20180803 Guard Ring Design.pptx

於是我用 Silvaco TCAD 設定了簡單的圓柱狀的高斯濃度分佈(如上圖一左),同時把高斯定律在圓柱座標下的形式表示出來,然後搭配高斯分佈的濃度分佈(如下圖二),然後使用 Python 計算該高斯濃度分佈下的電場分佈 $F$,最後代入方程式 (1-2) 並搭配 Silvaco TCAD 裡提供的撞擊游離模型 $\alpha(F)$ 與 $\beta(F)$。

$$\begin{align*}\text{Gauss’ law in cylindrical coordinate: }&\frac{1}{r}\frac{d}{dr}\left(rF\right)=\frac{Q}{\varepsilon}\tag{10}\\[5pt]\text{Gaussian doping profile: }&Q=e\left[-N_{a,0}e^{-(r/l_c)^2}+N_d\right]\tag{11}\end{align*}$$

圖二、在 Python 使用的濃度分佈模型以及圓柱座標下的高斯定律,在此採用空乏近似:在空乏區內的載子濃度遠遠小於掺質濃度,並且在空乏區外的電場等於零,詳見 20180803 Guard Ring Design.pptx

於是,我們可以從上圖一看見,根據方程式 (1-2) 與 (10-11) 的 Python 崩潰電壓,與 Silvaco TCAD 透過去解方程式 (3-9) 得到的崩潰電壓,相當接近。由此我更加確定我對 Silvaco TCAD 或是整個「TCAD」的認識是“差不多的了”。於是接下來的兩年,我就是採用這樣的方法來驗證我的 TCAD 模型的理解:

  1. 把問題簡化
  2. 在 Python 上自己模擬一次結果。因為問題已被顯著簡化,所以其數學與演算法就相對容易很多。
  3. 比較 Python 與 TCAD

由於我教授比較習慣 Excel,所以也有用 Excel 去比較這些崩潰電壓分佈,這樣才能驗證確認我們的模擬的確符合“我們的理解”。畢竟,除非你看得見原始碼,否則對你而言 TCAD 就是一個“黑盒子”。我們並不太能看見裡面的數值計算過程。當然,其實解讀 log 檔也是有技巧(或是說有專業的 XD),但這就是後話了。總而言之,以上這樣的步驟是我認為掌握 TCAD 的一個好方法,很適合碩一生嘗試。雖然我當時模擬的是 Avalanche Photodiode 的崩潰電壓,但其實同樣的做法可用在其他元件模擬上。透過這樣的“交互驗證”,我們就能更了解那些數學物理推導背後的意義,也了解 TCAD 是怎麼計算的了。

由此可知,要能夠推導這些物理數學,大學時期的電磁學、微積分等,都是相當重要的。如果你未來想要做跟元件物理有關的 TCAD 工程師,那我會建議最好物理系的課程都修一修,這樣才能順利接軌固態物理,至於那些多重積分等數學自然也就難不倒你了。建議至少學會底下這些知識:

  1. 微積分、線性代數
  2. 電磁學、量子力學、統計物理、固態物理,最後才是很多人大學就學過的半導體元件物理

接著說點題外話。很多人大學時期就修半導體元件物理,但我覺得這樣只能是“考試堪用”。要真的應用到元件物理,還是得把背後的固態物理學好,否則未來出社會真的不能抱怨“都用不到元件物理”,畢竟台積電是不可能把先進製程元件電性拿去給學界研究然後馬上出書給你學的。當時我有在產線製程整合做了一陣子,是在三奈米負責元件電性的整合,那時我就有研讀相當多 FinFET 的短通道效應,讀了非常非常多的論文。沒有許多固態物理與元件物理知識,是幾乎不可能快速讀完許多篇論文,然後做數學推導的“苦工”的。所以我在台積電產線整合做了非常多的半導體元件物理的數學推導工作,而這一切都學校所學的不完全相同,因為學校必然是以 Planar MOSFET 為例。對我來說,我會說我在產線整合有用到許多元件物理,使用元件物理解釋量測電性結果。但要做到這種工作,前提是我讓老闆看見我對固態物理與元件物理的熱誠,所以他就給我這樣的工作、例如解釋 GIDL 與 Body effect 的關係等,以及思考該怎樣減少漏電,漏電成分的可能來源是什麼,該如何抑制 DIBL。這些都是實際在產線遇到的且我有機會在工作上使用到元件物理的題目(真希望能把當時的報告投影片留在身邊)。總而言之,把自己的物理準備好,這樣的工作機會與工作內容,當然是可遇不可求。但就算你遇到了,也是只有在你已經準備好物理了,老闆才會在“工作步調極快”的情況下,相信你“能夠在一定時間內有所產出”,而不會覺得“不知道你要研究到民國幾年”,然後給予你這樣的工作機會。

四、如何學習 TCAD?

TCAD 有非常多種的用途,每種用途都有不同專屬適當的學習途徑,所以底下我只能給出我認為實際做得到(我有做到)的心得,並且以我觀察到的大多數使用 TCAD 的狀況來給出一些建議。

  1. 先專注研讀你的題目的論文。不論是要建立某某元件的電性模型,還是製程模型,還是 TCAD 跟 ML 的結合等,都先研讀一下相關領域的人在做些什麼。TCAD 太大了,就像你買到 iPhone 時不會把所有 AppStore 上的 App 下載下來一樣。iPhone 該怎麼用,取決於你的目的與習慣。TCAD 怎麼用,取決於你的研究題目與習慣。先了解一下別人都拿 TCAD 來做什麼,再來開始使用 TCAD。
  2. TCAD 通常會有教學手冊 Tutorials。例如 Synopsys TCAD 就有教學手冊 Tutorials(而不是使用手冊 Manual)。當時我是把 Tutorials 的前幾章都逐字讀完了。邊讀邊操作,例如怎麼使用 S-Process、S-Device、S-Visual 等之類的東西。這種教學手冊是可以讀的,意思是,值得投入時間一一認識。但不要一頭栽進使用手冊 Manual 裏面。
  3. 如果是要知道該選擇什麼物理模型,一個簡單的辦法是看看別人都使用甚麼模型。但我們“照抄”的時候,都要留意他們在論文裡有沒有說明“為什麼要使用這個模型”。通常其根本的理由在於,這樣的模型比較能解釋實驗數據,所以你得仔細比較該實驗條件、元件操作情況是否與你的狀況相同,否則很可能不能照抄對方的模型設定。
  4. 開啟模型之後還是不夠的,你會需要調整物理模型參數,這時你得思考該怎麼萃取模型參數。我在碩班期間就做了相當多萃取參數的工作。例如,當時我量 CV,所以我把 CV 數據根據某個模型來推得其掺質濃度分佈,接著再把這濃度分佈放入 TCAD 中,看是否能得到與實驗相同的模擬結果。同樣地,你也可以假設某電流目前是由什麼機制主導,那麼其電流密度與電壓將會呈現什麼關係。這些關係背後都有物理理論,你要試著追根究底去了解它(這就是利用 TCAD 來讓你對元件物理有更深刻認識的好機會)。當時我為了瞭解 Band-to-band tunneling 是怎麼來的,我經常待在圖書館翻閱各種書籍,嘗試自己推導出跟 TCAD 使用手冊相同的公式。後來有做到,很是開心。在這些推導中,我也了解到原來這些模型背後有許許多多的假設,於是我就對這模型更有“體會”。例如,我大概知道網格分佈會如何影響到這些模型的適用性。接著,我再去用 Band-to-band tunneling 模型去重現實驗結果,就得到更多的認識。

五、該如何發揮 TCAD 的價值?

任何物理現象都需要時間去認識,所以 TCAD 的使用是需要花一定時間的,這已經不是“上手不上手”的問題了。就我過去接到的各種學校 TCAD 問題,或是業界 TCAD 的問題而言,很多時候使用者並沒有花足夠的時間去了解它的題目是否真的適用某某模型,以及不了解數值模擬是一個將理想方程式離散化之後所得到的“近似解”。也就是說,要追求精確,就必須追求適當的網格,以及各種適當的“數值模擬設定”,例如最大迭代次數,最大最小迭代步伐,或者是具體的收斂條件(convergence criteria)等等。迭代演算參數的重要性絕對不小於元件物理本身。雖然迭代參數設定相當“玄學”,但其實很多概念都是有跡可循的。例如,

  • 當你注意到每次發散都是因為超過最大迭代次數時,那或許可以增加最大迭代次數。
  • 呈上,如果增加迭代次數還是不行,那可能是步伐太大,導致每次計算誤差都太大,也可能是收斂條件太嚴苛。
  • 如果 |RHS| 或是 |error| 在“第一次”迭代就異常高,那很可能是你的初始值(initial guess)本身就不夠準確。
  • 在模擬 transient response 時,如果你發現在某些時間附近容易發散,那可能是 time step 不夠小。
  • 留意你的浮點數精準數設定。濃度太小的時候,浮點數就須要足夠多的位元來儲存,否則有些數據的加減可能會出現問題。

因此,所有(想要把研究做好的) TCAD 使用者,都應該要具備底下這兩種正確的心態:

  1. 使用者本身應該要花許多時間確定,在物理方面,這些物理模型確實適合當前的研究課題。而這有時候與 TCAD 本身無關,而是使用者熟不熟自己挑選的模型的問題。如果該 TCAD 軟體沒有此模型,那就要寫信跟該供應商確認,討論是否能開發新模型,或是自行“設計操作模型”(例如 Sentaurus TCAD 的 Physical Model Interface)。
  2. 使用者本身要把“數值模擬”視為一項“需要時間去認識了解”的題目。也就是說,使用 TCAD 的人不能只專注於製程或是元件物理,而應該要花時間了解什麼是收斂?什麼是網格?為什麼網格密度會影響收斂性?模擬時間與網格密度應該做如何的取捨?什麼時候可以忽略不解某種載子的傳輸方程式?(假設該載子濃度處處均勻)什麼時候可以犧牲這方面的準確性來加快模擬速度?這方面的“數學工程”本身就是一項與“元件物理”相同重要的工作,或是任務。

而作為老闆,更是應該要給工程師或是學生一定的時間上手。這是你想急也急不來的。TCAD 這東西是“誠實”的。我們也許可以騙自己說“這模型差不多可以用”,但 TCAD 模擬出來的結果就是在你眼前,能不能用,TCAD 會告訴你。如果你不確定可不可以用,有時候真的是“不能用”,他就是“無法解釋實驗現象”。這時你要做的,就是花時間去了解上述兩大點——物理模型對嗎?數值模擬的設定對嗎?因此,使用 TCAD 時,真的切忌有“差不多先生”的差不多心態。我們可以接受“你認識了解且意識到的近似”,但是最好不要接受“我不知道我近似了什麼的近似”。當然,這樣的標準會讓你的研究特別辛苦,但是很遺憾的是,我覺得只有在你清楚自己的使用了什麼模型的前提下,TCAD 才能給出與實驗數據相似的結果。

因為大家研究時間有限,所以追求與實驗數據絕對相符的想法往往是次要的,最重要的是,要能用 TCAD 預測出相似的“趨勢”。這是可以的,例如 Fin 越寬會對電流有什麼樣的影響,或是金屬功函數對漏電的影響。這些趨勢的預測是很重要的,所以通常可以先藉由趨勢與實驗的相互比較,來慢慢逐步認識這些模型背後的適用性。但追求趨勢上的正確,不表示模型就不重要了。總而言之,不論你追求什麼,使用 TCAD 研究物理電性就需要對模型有一定的認識。

TCAD 的極限就取決於他的模擬框架。一個使用 Drift-Diffusion model 為基礎的模擬框架,你在怎樣設定物理模型參數,原則上都無法良好預測跟晶格溫度有顯著關係的物理現象,例如 Hot-Carrier Degradation,因為晶格溫度就是在一開始就被 D.D. model 假設為處處均勻了。接著,也取決於他的演算法效率。演算法太慢,再厲害的模型也是算不完的。但我們在“工程”方面使用“實際適當”的近似,那麼 TCAD 就能在其有限的模擬框架裡,給予良好的預測能力。

關於 TCAD 還有很多心得,暫時就先打到這。


如果你未來也想開發 TCAD,或者你也是很喜歡元件物理,想進一步認識交流相互學習,很歡迎使用以下電子郵件與我聯繫。


也許你也有興趣閱讀:

關於「Ethan」

我是 Ethan,科學普及教育愛好者。
分類: 元件模擬, 博班軌跡。這篇內容的永久連結

發表迴響