TDDB試験データの解析方法
ダウンロード版 (一括でサンプルデータ等を落としたい場合は、こちらからダウンロードして保存してください)
目次
電子部品をはじめとする高機能部品には,多種多様な薄膜が用いられています.その薄膜の寿命を推定することは,これらの部品を用いた最終製品自体の寿命を考える上で,重要な観点となります.
今回半導体チップの信頼性評価項目の中で最も重要な項目の1つである,MOSトランジスターのゲート酸化膜の信頼性評価方法,TDDB(Time Dependent Dielectric Breakdown)テスト結果のデータをサンプルデータとして,S言語を使った解析方法を紹介します.
TDDB評価結果をS-PLUSにインポートし,そのデータを@ cumulative provability plot, Aweibull plot したグラフを描画するとともに,指定された累積故障率(初期値は0.1%)の寿命(X軸値)を求める方法を解説します.
まず,サンプルデータ(sample1.csv)のように,1行目にラベル(列の名)があり,区切り記号(delimiter)がカンマ( , )であるCSVファイルを読み込む関数を read.csv() 定義します.この関数は頻繁に発生するデータの取り込みに便利です.
読み込み対象のデータファイルが置かれるディレクトリは,初期値として c:/temp/ としています.下記をコマンドラインに,コピー&ペーストしてください.
|
read.csv <- function(filename = "data.csv", homedir = "c:/temp/"){ |
関数は,1度読み込めばS-PLUS自体に定義され,S-PLUSを終了しても保持されています.2回目以降の解析時に再定義する必要はありません.
| read.csv("sample1.csv") |

| sample1 <- read.csv("sample1.csv") sample1 |





図2.6 ワイブルプロットの表示例
今回使用したデータ(sample1)は,ワイブル分布に従うことがわかりました.また,この章で読み込んだ関数により,寿命試験のグラフ化が簡単に行え,所望の計算方法で任意の累積故障率での値が求められるようになりました.
通常のTDDBテストでは面積の異なる複数種類のテストサイトのテスト結果から,単位面積あたりの寿命を推定します.この従来の方法では,複数種類(最低でも3種類)のテストを行う必要があり,それに要する時間やコストは大きなものになります.
そこで,テストに掛かる手間を削減するために,1種類の面積のチップから計算で仮想面積のチップの寿命を求め,そこから単位面積あたりの寿命を推定する手法を提案します.
2倍の面積(2S)を考える場合は,sample1のデータセットから,任意の2つのデータをサンプリングし,その値が小さいほうを2Sの面積の寿命とします.n個サンプリングした場合には,n個のデータの中の一番小さな値を,n倍の仮想面積(nS)の寿命とします.これが,今回の提案です.このサンプリングを,必要回数繰り返し,2Sの面積のテストデータセットします.下記の例は,サンプリング回数(nn)が159回,面積(n.s)が2倍の場合を表しています.

図3.1 サンプリングプログラム(バッチ処理)の例(text)
上記のプログラムを走らせた結果を図3.2に示します.図3.1の内容(textリンク先を参照)をコピーしS-PLUSのコマンドプロンプトにペーストします.

図3.2 データサンプリングで,面積を2倍にした場合の累積故障率(%)
3倍の面積(3S)なども同様に,バッチ処理の際に
>n.s <- 3
とすることで,必要な面積のグラフと寿命が求められます.
実験データ(1S)と3項で求めた仮想面積(2S, 3S,5S,,,,)の寿命から単位面積あたりのを求める手法について解説します.まずは,第3項の手法で求めた,仮想データ(area.csv)を読み込みます.
area <- read.csv("area.csv")
TDDB試験などの寿命分布は,評価サンプルの面積をSとすると
式(3.1)
で表されます.ここで,a, b は定数です.
式(3.1)に対応する関数(logfit.txt)を読み込みます.前述の関数は,第2番目のカラムを選択した場合です.違うカラムを選ぶ場合は,引数 ycol= を設定してください.
S-PLUSの基本関数nlminb()を使って式3.1にフィッテングします.コマンドラインから,
> const <- nlminb(c(1,1), log.fit, data=area)$para
> const
と入力します.最初の引数c(1,1)はフィッテングを行う際の初期値です.その結果を図3.3に示します.
この実行結果,変数a, bは,
a= -0.001556155
b= 0.008930686
を表しています.

図3.3 基本関数nlminb()を使ったフィッテング
以上の操作により,ある評価条件における面積と寿命の関係を表す関係式が求まりました.この式から任意の面積の寿命を求めてください.
このように,面積が一種類の評価試料のデータをサンプリングし,仮想面積の寿命から任意の面積(単位面積)の寿命を推定する方法の有効性を示しました.
使用時の注意点としては,100倍の面積など大きすぎる仮想面積を定義した場合,今回提案する方法が有効に働かない可能性が出てきます.また,任意の面積(単位面積)を外そう線で求めるのではく,内そうで求めらるように評価サンプルの面積を設計することも重要です.
この章では,ストレス条件の違いによる,ワイブル分布の変化(式4.1のβ,ηの変化)を調べます.
薄膜の寿命(F)などは式4.1のワイブル(weibull)分布に従います.
式(4.1)
ここで,t は寿命,η,βは定数
ηは欠陥の発生確率に依存する値.βはワイブルプロットの近似直線の傾き(分布)に相当する値になります.

図4.1 式4.1によるフィッテング結果

図4.2 フィッテング結果のグラフ.オレンジの丸は計測値.実線はモデル式(式4.1)
| ストレス条件 | η | 1/η | 比率(1/η) | β |
| 10.5 | 0.695 | 1.439 | 23.25 | 0.949 |
| 10.0 | 3.151 | 0.317 | 5.13 | 0.951 |
| 9.5 | 16.164 | 0.0618 | 1.00 | 1.103 |
| ストレス条件 | η | 1/η | 比率(1/η) | β |
| 10.5 | 0.688 | 1.454 | 23.88 | 1 |
| 10.0 | 3.110 | 0.322 | 5.28 | 1 |
| 9.5 | 16.422 | 0.0609 | 1.00 | 1 |
ストレス条件が,9.5から10.0に0.5増加すると,ηが約5倍になっていることがわかります.また,10.0から10.5に増加することで,おおよそ5倍に増加している様に思われます.
今回の実験では,ストレス(印可電圧)と,欠陥の発生頻度(∝1/η)を関係付けることができました.同様に,ストレスと寿命の分布(β)との関係も考察することができます.
次のステップは,これらのデータを外そうすることで,実際の使用条件(ストレス条件)による膜の寿命を推定することになります.この時,β,あるいは,ηをある値に固定してフィッテングするのか,β,ηともに変数として取り扱うのか吟味する必要があります.膜破壊をユーザーの使用状態に合致するようにモデル化して,そのモデルに合うように定義することが必要です.
TDDBに代表されるような,薄膜の破壊に至るモデルとして,パーコレーションモデル(Percolation model)が提唱1)〜4)されています.パーコレーションモデルとは,土壌に水が浸透していく現象等をモデル化する場合によく用いられるモデルです.コーヒーの"パーコレーター"をイメージしていただくとよくわかると思います.
図5.1に示す様にゲート酸化膜の両面から電圧を印可する場合をモデル化します.

図5.1 TDDB試験
今回のパーコレーションモデルでは,図5.2のようにある発生頻度で膜中に欠陥(図中では赤丸)ができます(上段図).これが,次第に増え(中段図),ついに上部電極と下部電極を繋ぐ経路を形成します(下段図).このときを薄膜の寿命とします.

図5.2 パーコレーションモデル
このモデルを使ってS-PLUS上でシミュレーションを行います.まず,シミュレーションに必要な関数群(new39.txt)を読み込みます.シミュレーションでは,乱数を用い薄膜断面に相当するエリア(図5.2では緑色の長方形)に中心をもつ円(赤丸)を置いていきます.円を置く度にお互いが重なっている円をグループに分けます.そして,上部電極と下部電極(長方形の上辺と下辺)を接続するグループの有無を調べ,該当するグループが存在すれば,そこで試行を中止し,その試行回数(寿命)を返します.もし,該当するグループが存在しなければ,新たに円を置き,試行を続けます.
コマンドプロンプトから
> tddb.sim3(nn=100, w=50, l=5, d=0.5, d1=0.5, sw=1)
と入力すると,シミュレーションが実行され,シミュレーション結果(図5.3)と,寿命に相当する,試行回数(置いた円の個数)が出力されます(図5.4).引数
w,l は長方形のそれぞれ横,縦の長さを,引数 d,d1 は円の半径を設定します.また,この例では,100回シミュレーションを行った場合を示しています.シミュレーション回数を変更する場合は,引数(nn)を変更します.

図5.3 シミュレーション結果

図5.4 寿命に相当する試行回数

図5.5バッチ処理(text)

図5.6 シミュレーション結果
円の半径を大きくすることで,寿命が短くなり,また,フィッテング直線の傾きが寝てくることがわかりました.
モデル化の一例として,「TDDBのストレス(電極両端に印可する電圧)は,パーコレーションモデルでの円の半径として考えることがでる.」と言えます.
このシミュレーションによって得られた分布がワイブル分布として適当か否かの確認は,次章で紹介する方法で確認することができます.
この章では,まず,測定データがワイブル分布として適合しているか検討します.次に,3章で提案した既存データからサンプリングにより面積を拡大して仮想面積の寿命を求める手法で得られたデータが,既存データと同じ分布(ワイブル分布)として扱えるのか検証してみます.
まずサンプルデータを(sample2.csv)を読み込み,プロットして見ます.その結果を図6.1,図6.2に示します.サンプル1に比べて,グラフ上で分布が折れ曲がっていることが認められます.
はたしてこのような,この分布に”曲がり”のあるデータは1つのワイブル分布として扱ってよいのか.この点に関して,検証してみることにします.

図6.1 サンプル2の累積故障率(%)のプロット

図6.2 サンプル2のワイブルプロット

次に本章後半の課題に入ります.3章で提案した既存データからサンプリングにより面積を拡大して仮想面積の寿命を求める手法で得られたデータが,既存データと同じ分布(ワイブル分布)として扱えるのか検証してみます.サンプル1(sample1)の2列目のデータから所望の面積になるようにサンプリング(図6.3)し,グラフ表示(図6.4)させます.
コマンドプロンプトより,図6.4に示すバッチジョブ(text64)を走らせます.Sはsample1のデータそのままの面積に対応し,2Sは2個サンプリングして得られた仮想2倍の面積に対するデータです.以下,3S,5S,10S,20S,50S,100Sとサンプリング数を増やし,仮想面積を拡大します.


図6.4 サンプリングしたデータのプロット

図6.5 検証結果
サンプリングする個数(仮想面積)を大きくすると,p.valueも小さくなりワイブル分布によるフィッテングが困難になることがわかりました.今回のように実測データの個数が150レコード程度の場合,サンプリング数としては,明確な境界は認められないのですが,サンプリング数(面積の拡大)の最大値は5〜10までで使用することが望ましいと考えられます.
実測データの個数によりサンプリング可能数の最大値も増減することが予想されますので,実測データの個数とサンプリング可能個数を考慮し,任意の面積(単位面積)を求められるように評価サンプル(TEGチップ)の設計をする必要があります.
前の章では,同じストレス試験の結果でもワイブル分布に従わないケースがあることがわかりました.そこでこの章では,ワイブル分布に従わない場合に複数のワイブル分布の合成として表すことを試みます.
図5.1におけるパーコーレーションモデルでは,評価する薄膜内部に発生する欠陥の大きさ(d:半径)を一定として扱いました.しかし,一般的には,おなじストレスを印可しているにもかかわらず,図7.1に示すように薄膜エッジ部分(図中の黄色の領域)は薄膜中央部(図中の緑色の領域)に比べて欠陥の大きさが異なる(大きい)と考えることが妥当です.

図7.1 薄膜エッジ部分の影響を考慮
欠陥の大きさの異なる領域が混在する試験で,全体の寿命は,それぞれの領域が全体に占める割合で表せると考えられます.つまり,欠陥の大きさを,d1,dとすると,図7.2に示すように,これらの占める割合によって全体の寿命分布(オレンジ色線,水色線)が決まると予想されます.

図7.2 2つの寿命ワイブル分布の合成
パーコレーションモデルのシミュレーションを行います.コマンドプロンプトから
>10*tddb.sim3(w=50, w1=1.5, d=0.8, d1=2.1, sw=1)
と入力(図7.3参照)します.引数w, w1, d, d1, sw はそれぞれ,領域全体の長さ,エッジ部分の片側の長さ,領域中央部での欠陥の大きさ,領域エッジ部分での欠陥の大きさ,描画のon/off を表しています.

図7.3 2種類の欠陥(d/d1=0.8/2.1)を領域の比率(w/w1=50/1.5)で合成した寿命分布
シミュレーションを実行すると,図7.3の結果とともに,図7.4,7.5に示すパーコレーションモデルの状況がグラフウインドウに表示されます.図7.4は,領域中央部で破壊に至った事例,図7.5は,領域のエッジ部分で破壊に至った例を示しています.

図7.4 シミュレーション結果.領域の中央部(図7.1の緑色部分)で破壊に至った場合

図7.5 シミュレーション結果.領域のエッジ部(図7.1の黄色部分)で破壊に至った場合
領域の割合を変えた場合を一気にシミュレーションします(図7.6).この場合,引数sw=0にしグラフの描画をoffにします.

図7.6 バッチ処理(wratio.txt)
上記シミュレーション結果を図7.7に示します.全体に占めるエッジ部分の割合によって寿命分布に変化があられることが認められました.w1=8,15のケースでは,エッジ部分が領域全体の寿命を決める上で支配的になり,分布全体が,左側(寿命が短い方向)へシフトしていることがわかります.また,w1=2.5のケースでは,図6.1で示したような,分布に折れ曲がりが認められます.

図7.7 影響度の異なる領域の割合を変えた場合のシミュレーション結果
図7.6で行ったシミュレーション結果を異なる変数にコピーします.コマンドプロンプトから,
> d1.split <- l.t
と入力します.図7.6のバッチ処理を行った直後に変数をコピーしてください.次に,パーコレーションモデルのシミュレーション結果(ワイブル分布に相当)を,それぞれの比率で見合うようにサンプリングし,合成します(図7.8参照).合成結果を図7.9に示します.
図7.8で最後に表示される値は,1つのワイブル分布とみなし,その分布から求めた0.1%の値です.また,図7.9ではその分布をオレンジの直線で表しています.もはやこの状態では,1種類のワイブル分布として扱うことは困難です.
2種類のワイブル分布が合成される割合によって,全体の分布の折れ曲がる位置が変化することが確かめられました.
図7.8 2つの異なるワイブル分布の合成.バッチ処理(arearatio.txt)

図7.9 2つの異なるワイブル分布の合成結果
図7.7に示す影響度の異なる領域の割合を変えた場合,および,図7.9に示す2つの異なるワイブル分布の合成した場合,この2つのシミュレーションの結果から,1種類のワイブル分布で表せないような寿命分布(サンプル2)も,複数の(今回は2種類)ワイブル分布の合成として表せると考えられます.
この章では,前の章の結果に基づき,図6.1に示した分布を,式8.1で示すように2種類のワイブル分布の合成として分離することを試みます.
式(8.1)
ここで,αは2つのワイブル分布の合成比を表しています.


サンプル2の2カラム目(カラム名X11M)は,図7.1のエッジ部分(黄色の領域)が40%,領域中央部(緑色)が60%の割合で合成された寿命の分布であると推定することができました.
今回のデータ解析およびシミュレーションで以下のことが明らかになりました.
関数の実行結果について
以下の関数,tddb.sampling(), tddb.sim3(), sample() は関数内部で乱数を使用しています.そのため,実行結果は,この本(CDROM)で紹介した内容と異なります.
謝辞
関数作成ならびに技術的討論において多大なるアドバイスをいただきました,叶迫揀Vステムの佐々木俊久様に対してお礼申し上げます.
参考文献
2006.10.11 Masao.SHIMIZU