(57)【要約】【課題】数値シミュレーション結果におけるデバイスの不純物濃度の分布において、統計ノイズを低減させるイオン注入シミュレーションシステムを提供する。【解決手段】本発明のイオン注入を行う対象の複数のブロックに分割された固体におけるモンテカルロ粒子の散乱計算を行う散乱計算部と、散乱計算部の出力する固体のターゲット原子に対する衝突回数からチェックポイントを検出するチェックポイント検出部と、チェックポイントとなったブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度に基づき、モンテカルロ粒子の複製を生成する複製生成部と、モンテカルロ粒子の各々に複製時に付加される不純物濃度の重み係数を用い、ブロックにおける不純物濃度を算出する不純物濃度算出部とを備える。【選択図】図７
2015122444.tif 000002
【特許請求の範囲】
【請求項１】
イオン注入を行う対象の複数のブロックに分割された固体におけるモンテカルロ粒子の散乱計算を行う散乱計算部と、
前記散乱計算部の出力する前記固体のターゲット原子に対する衝突回数からチェックポイントを検出するチェックポイント検出部と、
前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度に基づき、当該モンテカルロ粒子の複製を生成する複製生成部と
前記モンテカルロ粒子の各々に複製時に付加される不純物濃度の重み係数を用い、前記ブロックにおける不純物濃度を算出する不純物濃度算出部と
を備えることを特徴とするイオン注入シミュレーションシステム。
【請求項２】
前記複製生成部が、
前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度の平方根を取った値に基づき、モンテカルロ粒子の複製を生成する
ことを特徴とする請求項１に記載のイオン注入シミュレーションシステム。
【請求項３】
前記複製生成部が、
前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度が、直前のチェックポイントとなったブロックにおける前記粒子濃度より低い場合、当該モンテカルロ粒子の複製を生成する
ことを特徴とする請求項１または請求項２に記載のイオン注入シミュレーションシステム。
【請求項４】
前記固体のターゲット原子に対する衝突回数が予め定めた衝突回数閾値以上となった場合、前記モンテカルロ粒子が存在するブロックをチェックポイントとすることを特徴とする請求項１から請求項３のいずれか一項に記載のイオン注入シミュレーションシステム。
【請求項５】
前記ブロックにおける前記粒子濃度と前記不純物濃度をパラメータとする、前記当該粒子濃度を補正する補正係数を算出する補正関数が設けられており、
前記複製生成部が、
前記チェックポイントの前記ブロックにおける前記粒子濃度と前記不純物濃度とから前記補正関数により前記補正係数を求め、当該補正係数を前記粒子濃度に乗算し、乗算結果を補正粒子濃度として当該粒子濃度に換え、直前のチェックポイントとなったブロックにおける前記粒子濃度と比較する
ことを特徴とする請求項３または請求項４に記載のイオン注入シミュレーションシステム。
【請求項６】
散乱計算部が、イオン注入を行う対象の複数のブロックに分割された固体におけるモンテカルロ粒子の散乱計算を行う散乱計算過程と、
チェックポイント検出部が、前記散乱計算部の出力する前記固体のターゲット原子に対する衝突回数からチェックポイントを検出するチェックポイント検出過程と、
複製生成部が、前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子数を示す粒子濃度に基づき、当該モンテカルロ粒子の複製を生成する複製生成過程と
不純物濃度算出部が、前記モンテカルロ粒子の各々に複製時に付加される不純物濃度の重み係数を用い、前記ブロックにおける不純物濃度を算出する不純物濃度算出過程と
を含むことを特徴とするイオン注入シミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、基板に対するイオン注入において、基板内における注入されたイオンの分布をシミュレーションするイオン注入シミュレーションシステム及びイオン注入シミュレーション方法に関する。
【背景技術】
【０００２】
近年の半導体プロセスの微細化に対応して、デバイスを作成する際、基板への不純物添加にイオン注入法が用いられている。このデバイスを作成する半導体プロセスに対し、実験による最適化のみならず、数値シミュレーションによるプロセス条件の最適化が行われている。
特にイオン注入プロセスに関しては、近年の計算機性能の向上に伴い、モンテカルロ法を用いたイオン注入プロセスの数値シミュレーションが、実際のデバイス設計や、デバイスを作成する際のイオン注入プロセスの最適化に適用されつつある。
【０００３】
一方、モンテカルロ法を用いたイオン注入プロセスの数値シミュレーションにおいては、不純物濃度が低い領域で統計ノイズが増大するという課題が知られている。統計ノイズは、１／Ｎ１／２（このＮは局所領域におけるサンプル数、すなわちモンテカルロ法で用いられる粒子の局所領域で停止した粒子の数）に比例している（統計ノイズσが１／Ｎ１／２に比例）。
図９は、モンテカルロ法で用いる乱数発生器のランダムシードを変化させて複数回行った数値シミュレーションの結果として得られた不純物濃度分布を示す図である。この図９において、縦軸が不純物濃度（１／ｃｍ３）を示しており、横軸がイオン注入された基板表面からの距離（深さ）を示している。
【０００４】
この図９の不純物濃度分布から明らかな通り、イオン濃度が最も低い領域の濃度は、最大濃度に対して４桁以上小さい。例えば、図９においては、最大濃度が１０２０に対して、濃度が低い領域では１０１６となる。
モンテカルロ法を用いたイオン注入の数値シミュレーションにおいては、モンテカルロの粒子をデバイスを製造する基板（すなわち、固体）に仮想的に打ち込む。そして、打ち込んだ後の基板内における各粒子の散乱挙動を逐一追跡し、粒子が基板内において基板の原子との衝突や基板原子の電子との相互作用などで運動エネルギを十分に失い、最終的に基板内で粒子が停止した位置までの計算を行う。
【０００５】
例えば、図９において、不純物濃度がピークの位置には１００００個のモンテカルロ法で用いる粒子（以下、モンテカルロ粒子）が停止した場合、不純物濃度が低い領域に到達した粒子は１個のみとなる。図９のイオン注入シミュレーションでは、モンテカルロ法で用いる乱数発生器のランダムシードを１から５０まで変化させて数値シミュレーションを行っている。
図９の低濃度領域においては、不純物濃度が高い領域に比較して、サンプル数の不足により著しい統計ノイズが生じていることが容易に解る。この様に統計ノイズが大きいと、イオン注入シミュレーションの後に行う拡散シミュレーションにより不純物を拡散させる際に、拡散方程式の数値解析における収束性が悪くなる場合がある。
【０００６】
この低濃度領域において統計ノイズが生じるという課題に対して、種々の統計ノイズの低減方法が提案されている。
最も代表的であり、かつ効果的な従来の統計ノイズの低減方法の一つとして、表面から深い領域にモンテカルロ粒子が到達した際、モンテカルロ粒子の複製を作成する方法がある。このモンテカルロ粒子の複製を作成し、サンプル数を増加させることで、統計ノイズの低減を図っている（例えば、非特許文献１参照）。
【０００７】
この非特許文献１においては、モンテカルロ法を用いた数値シミュレーションにおいて、表面から入射したモンテカルロ粒子が基板内で、基板の原子と衝突あるいは相互作用による散乱を繰り返し、例えば０．１μｍの深さにモンテカルロ粒子が到達した際、最初は１個だったモンテカルロ粒子の複製を作成している。
ここで、数値シミュレーションにおいて、複製されたモンテカルロ粒子の質量や運動エネルギーなどの特性や状態量は、複製前のモンテカルロ粒子と同一とする。
【０００８】
一方で、元のモンテカルロ粒子及び複製されたモンテカルロ粒子の２つの粒子は、その後のモンテカルロ法の数値シミュレーションにおいて乱数の値が異なった数値となる。このため、２個のモンテカルロ粒子の各々は、それぞれ異なる挙動・軌跡を描く（異なった散乱状態を示すことになる）。
よって、元々１個であったモンテカルロ粒子を２個に増加させることにより、サンプル数が増えて統計ノイズが低減される。
【０００９】
また、モンテカルロ粒子の複製を１個作成した際、モンテカルロ法の数値シミュレーションにおいて、元のモンテカルロ粒子及び複製のモンテカルロ粒子の各々に与える重みは、複製前のモンテカルロ粒子の半分とする。例えば複製を作成する前の重みが「１」である場合、複製を作成した際、元のモンテカルロ粒子及び複製のモンテカルロ粒子の各々の重みは、それぞれ「０．５」とする。
このモンテカルロ粒子の重みを変更することにより、モンテカルロ粒子の複製が不純物濃度分布の絶対値に対して影響を与えない様になる。例えば、「０．５」の重みのモンテカルロ粒子が２個ある場合、モンテカルロ粒子の実際の数は「０．５＋０．５＝１」となる。（ただし、複製は１個のみに限らず、複数個でも良い。その場合、重みは０．５ではなく、１／（複製数＋１）とする。）
【００１０】
さらに、非特許文献１は、数値シミュレーションにおいて、基板内におけるモンテカルロ粒子の複製を作成する位置（深さ方向）を、あらかじめ設定した妥当な位置としている。すなわち、統計ノイズが大きい領域、すなわち不純物濃度が低濃度となる領域において、モンテカルロ粒子の複製を生成することにより、サンプル数を効率的に増加させることで、統計ノイズを効率的に低減している。
【００１１】
また、モンテカルロ粒子の複製を生成する手法を用いることにより、数値シミュレーションの開始時から多数のモンテカルロ粒子を注入する場合に比較して、数値シミュレーションにおけるモンテカルロ粒子の散乱の軌跡の途中から粒子数が増加する。このため、数値シミュレーションにおける計算量の大幅な低減を図ることができる。
【００１２】
ただし、上述した非特許文献１の方法においては、基板の表面からの深さを基準としてモンテカルロ粒子の複製の生成を行っている。基板の表面からの深さを基準として数値シミュレーションを行うことにより、例えば、半導体デバイスの特性に重要な影響を与えるソース及びドレイン間のチャネル領域におけるＭＯＳデバイスの横方向（チャネル方向）の不純物濃度分布の統計ノイズの改善に対して寄与し難いという課題が有る。
この課題を解決するため、他の従来の技術として、不純物濃度が低い領域にモンテカルロ粒子が移動した際に、粒子の複製を作成して、統計ノイズの低減を図る方法がある（例えば、非特許文献２及び非特許文献３参照）。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Andreas Hossinger, ''Simulation of Ion Implantation for ULSI Technology'', Dissertation, Vienna University of Technology, 2000.
【非特許文献２】Bohmayr, W., A. Burenkov, J. Lorenz, H. Ryssel, and S. Selberherr. Statistical accuracy and CPU time characteristic of three trajectory split methods for Monte Carlo simulation of ion implantation. In Simulation of Semiconductor Devices and Processes, pp. 492-495. (Springer Vienna, 1995).
【非特許文献３】W. Bohmayr, ''Simulation der Ionenimplantation in Kristalline Siliziumstrukturen'', Dissertation, Vienna University of Technology, 1996.
【発明の概要】
【発明が解決しようとする課題】
【００１４】
しかしながら、上述した非特許文献１、非特許文献２及び非特許文献３の各々によっても、イオン注入する対象のデバイス構造や注入条件によっては、十分なサンプル数とはならない領域が発生する。
すなわち、不純物濃度の低い領域でモンテカルロ粒子の複製を作成したとしても、不純物濃度とサンプル数との相関が必ずしも高くないため、必ずしも全ての不純物濃度が低い領域においてサンプル数が増加することがなく、依然として効率的に統計ノイズが低減されない領域が発生する。
【００１５】
本発明は、このような状況に鑑みてなされたもので、統計ノイズが大きい領域に対して効率的にノイズを低減するために、モンテカルロ粒子が少ない領域でモンテカルロ粒子を増やす事を特徴とするイオン注入シミュレーションシステム及びイオン注入シミュレーション方法を提供する。
【課題を解決するための手段】
【００１６】
上述した課題を解決するために、本発明のイオン注入シミュレーションシステムは、イオン注入を行う対象の複数のブロックに分割された固体におけるモンテカルロ粒子の散乱計算を行う散乱計算部と、前記散乱計算部の出力する前記固体のターゲット原子に対する衝突回数からチェックポイントを検出するチェックポイント検出部と、前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度に基づき、当該モンテカルロ粒子の複製を生成する複製生成部と、前記モンテカルロ粒子の各々に複製時に付加される不純物濃度の重み係数を用い、前記ブロックにおける不純物濃度を算出する不純物濃度算出部とを備えることを特徴とする。
【００１７】
また、本発明のイオン注入シミュレーションシステムは、前記複製生成部が、前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度の平方根を取った値に基づき、モンテカルロ粒子の複製を生成することを特徴とする。
【００１８】
また、本発明のイオン注入シミュレーションシステムは、前記複製生成部が、前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度より、直前のチェックポイントとなったブロックにおける前記粒子濃度より低い場合、当該モンテカルロ粒子の複製を生成することを特徴とする。
【００１９】
また、本発明のイオン注入シミュレーションシステムは、前記散乱計算部の出力する前記固体のターゲット原子に対する衝突回数が予め定めた衝突回数閾値以上となった場合、前記モンテカルロ粒子が存在するブロックをチェックポイントとすることを特徴とする。
【００２０】
また、本発明のイオン注入シミュレーションシステムは、前記ブロックにおける前記粒子濃度と前記不純物濃度をパラメータとする、前記当該粒子濃度を補正する補正係数を算出する補正関数が設けられており、前記複製生成部が、前記チェックポイントの前記ブロックにおける前記粒子濃度と前記不純物濃度とから前記補正関数により前記補正係数を求め、当該補正係数を前記粒子濃度に乗算し、乗算結果を補正粒子濃度として当該粒子濃度に換え、直前のチェックポイントとなったブロックにおける前記粒子濃度と比較することを特徴とする。
【００２１】
また、本発明のイオン注入シミュレーション方法は、散乱計算部が、イオン注入を行う対象の複数のブロックに分割された固体におけるモンテカルロ粒子の散乱計算を行う散乱計算過程と、チェックポイント検出部が、前記散乱計算部の出力する前記固体のターゲット原子に対する衝突回数からチェックポイントを検出するチェックポイント検出過程と、複製生成部が、前記チェックポイントとなった前記ブロックにおいて停止したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度に基づき、当該モンテカルロ粒子の複製を生成する複製生成過程と、不純物濃度算出部が、前記モンテカルロ粒子の各々に複製時に付加される不純物濃度の重み係数を用い、前記ブロックにおける不純物濃度を算出する不純物濃度算出過程とを含むことを特徴とする。
【発明の効果】
【００２２】
以上説明したように、本発明によれば、不純物濃度ではなく、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度により、モンテカルロ粒子の複製を生成するか否かの判定を行っている。このため、本実施形態によれば、統計ノイズが大きな領域、すなわち粒子濃度が低い領域の粒子濃度を増大させることができ、その結果、統計ノイズが低減され、数値シミュレーションを行う対象の領域全体において安定した結果を得ることが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の実施形態によるイオン注入シミュレーションシステムの構成例を示すブロック図である。
【図２】本実施形態における３次元空間において、数値シミュレーションのために基板のイオン注入される領域を複数のブロックに分割したことを示す概念図である。
【図３】表面からの距離と、この距離に対応するモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度との対応を示す図である。
【図４】シミュレーション結果記憶部１９に記憶されている不純物濃度テーブルの構成例を示す図である。
【図５】モンテカルロ粒子データ記憶部１７に記憶されているモンテカルロ粒子テーブルの構成例を示す図である。
【図６】数値シミュレーションにおけるモンテカルロ粒子の試し打ちの処理の流れを示すフローチャートである。
【図７】注入された元のモンテカルロ粒子による不純物濃度の算出の処理を示すフローチャートである。
【図８】複製されたモンテカルロ粒子による不純物濃度の算出の処理を示すフローチャートである。
【図９】モンテカルロ法で用いる乱数発生器のランダムシードを変化させて複数回行った数値シミュレーションの結果として得られた不純物濃度分布を示す図である。
【発明を実施するための形態】
【００２４】
＜第１の実施形態＞
以下、本発明の第１の実施形態について、図面を参照して説明する。
図１は、本発明の第１の実施形態によるイオン注入シミュレーションシステムの構成例を示すブロック図である。図１において、本実施形態によるイオン注入シミュレーションシステム１は、イオン注入部１１、散乱計算部１２、チェックポイント検出部１３、複製生成部１４、モンテカルロ粒子停止判定部１５、不純物濃度算出部１６、モンテカルロ粒子データ記憶部１７、チェックポイント判定データ記憶部１８及びシミュレーション結果記憶部１９を備えている。
【００２５】
イオン注入部１１は、モンテカルロ法による数値シミュレーションにおけるモンテカルロ粒子に対して、実際に基板（固体）に注入するイオンに対応した質量、エネルギーなどの物理パラメータやイオンの注入角度などの数値シミュレーションで用いるイオンデータを与える。また、イオン注入部１１は、自身の注入したモンテカルロ粒子の注入粒子数を、内部の記憶部に書き込んで記憶させている。また、イオン注入部１１は、注入処理を行うモンテカルロ粒子に対してモンテカルロ粒子番号を付与し、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに書き込んで登録処理を行う。
散乱計算部１２は、上述したイオンデータに基づき、モンテカルロ粒子とターゲットの基板における原子（固体におけるターゲット原子）との相互作用の計算、すなわち電子阻止能及びターゲット原子との散乱計算を行う。本実施形態においては、基板中を通過する際、にモンテカルロ粒子が失うエネルギ計算も、一例として、散乱計算部１２で行う構成となっている。この散乱計算部１２から電子阻止能の計算機能を独立させ、別に電子阻止能計算部を有する構成としても良い。
【００２６】
チェックポイント検出部１３は、モンテカルロ粒子が現在チェックポイントにいるか否かの判定を行う。このチェックポイントとは、モンテカルロ粒子の複製を生成するか否かを決定するポイントを示している。
本実施形態においては、イオン注入の試し打ちとして、数値シミュレーションに用いるモンテカルロ粒子の全数の例えば１％、全数が１００００個であれば、１００個のモンテカルロ粒子を用いた数値シミュレーションを行い、大まかなモンテカルロ粒子の濃度プロファイルを作成する。
【００２７】
このとき、試し打ちの数値シミュレーションにおいて、散乱計算部１２が計算した結果で、１００個のモンテカルロ粒子の各々が停止するまでにおける、モンテカルロ粒子とターゲット原子との衝突回数の平均である平均衝突回数が散乱計算部１２により求められる。そして、この平均衝突回数の所定の割合、例えば２％の回数がチェックポイントの基準となる。平均衝突回数が１００００回であれば、チェックポイントは前回のチェックポイントから２００回衝突する毎に、その時点でのモンテカルロ粒子の存在するブロックをチェックポイントと設定する。
したがって、チェックポイント検出部１３は、前回のチェックポイントから２００回衝突した時点のブロックをチェックポイントとして、複製生成部１４に対してチェックポイントとなったことを示すチェックポイント信号を出力する。
【００２８】
図２は、本実施形態における３次元空間において、数値シミュレーションのために基板のイオン注入される領域全体を複数のブロックに分割したことを示す概念図である。本実施形態においては、基板の各ブロックに停止したモンテカルロ粒子を元に、基板内の不純物濃度のプロファイルが求められる。本実施形態においては、説明を単純化するため、一例としてブロックを構造格子（立方体）としている。しかしながら、四面体要素や八面体要素などのその他の要素形状で、イオン注入シミュレーションを行う対象の領域を分割するようにしても良い。
【００２９】
図１に戻り、散乱計算部１２は、試し打ちの数値シミュレーションにおいて、散乱計算部１２が計算した結果で、１００個のモンテカルロ粒子の各々が停止するまでにおける、モンテカルロ粒子とターゲット原子との衝突回数の平均である平均衝突回数を求める。ここで、この平均衝突回数の所定の割合、例えば２％の回数がチェックポイントの基準となる。平均衝突回数が１００００回であれば、チェックポイントは前回のチェックポイントから２００回衝突した後に存在するブロックがチェックポイントとなる。
したがって、チェックポイント検出部１３は、前回のチェックポイントから２００回衝突した時点のブロックをチェックポイントとして、複製生成部１４に対してチェックポイントとなったことを示すチェックポイント信号を出力する。
【００３０】
図３は、表面からの距離と、この距離に対応するモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度（以下、単に粒子濃度と示す場合もある）との対応を示す図である。図３において、縦軸はモンテカルロ粒子の単位体積当たりの粒子数である粒子濃度を示し、横軸が表面からの深さ（距離）を示している。また、粒子濃度は、上述したブロックの各々のうち粒子数の最大値を用い、全ブロックの粒子数を規格化したものである。
本実施形態においては、規格化した粒子濃度を複数の範囲（粒子濃度範囲）に分割しており、例えば、１から０．３、０．３から０．３２、０．３２から０．３３、０．３３から０．３４、０．３４から０．３５として、０．３のべき乗により設定された範囲毎に分割されている。このため、図３の縦軸はｌｏｇ表示となっている。
【００３１】
したがって、基板の各ブロックにおけるモンテカルロ粒子の規格化した粒子濃度ｎｇは、１≧ｎｇ１＞０．３、０．３≧ｎｇ２＞０．３２、０．３２≧ｎｇ３＞０．３３、０．３３≧ｎｇ４＞０．３４、０．３４≧ｎｇ５のいずれかの範囲内に含まれる。ここで、例えば、ｎｇ１はブロック番号＃１（後述する不純物テーブルのブロック番号）のブロックにおけるモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度であり、ｎｇ２はブロック番号＃２のブロックにおけるモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度であり、ｎｇ３はブロック番号＃３のブロックのモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度である。このチェックポイントを決定する粒子濃度の範囲の定義情報は、チェックポイント検出部１３により求められ、予めチェックポイント判定データ記憶部１８に書き込まれて記憶される。
【００３２】
図４は、シミュレーション結果記憶部１９に記憶されている不純物濃度テーブルの構成例を示す図である。不純物濃度テーブルにおいては、図２の基板内のブロックを識別するブロック番号（識別情報）と、数値シミュレーションにおける３次元空間でのブロックの頂点各々の座標と、ブロック内で停止したモンテカルロ粒子の粒子数と、粒子濃度（規格化）と、不純物濃度とが対応付けられて記憶されている。粒子濃度（規格化）は、上述したように、ブロックの各々のうち粒子数の最大値を用い、全ブロックの粒子数を規格化したものである。この図４においては、説明を単純化するため、一例としてブロックを構造格子（立方体）としているため、頂点の座標は８点である。しかしながら、四面体要素やその他の要素形状で分割されている場合には、それぞれの要素形状の頂点の座標が記載されている。
【００３３】
図１に戻り、複製生成部１４は、チェックポイントにおいて、直前のチェックポイントにおけるブロックの粒子濃度である参照粒子濃度と、現在のチェックポイントにおけるブロックの粒子濃度である比較粒子濃度とを比較する。このとき、複製生成部１４は、粒子濃度が参照粒子濃度未満である場合、モンテカルロ粒子の複製を生成する。一方、複製生成部１４は、粒子濃度が参照粒子濃度以上である場合、モンテカルロ粒子の複製を生成する。例えば、複製作成部１４は、粒子濃度範囲が１レンジ以上、下のレンジを有するブロックに移動するか否かにより、モンテカルロ粒子の複製の生成を判定する。複製生成部１４は、複製されたモンテカルロ粒子に対してモンテカルロ粒子番号を付与し、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに対して、書き込んで登録処理を行う。また、複製生成部１４は、粒子濃度の平方根を取った数値を用いてモンテカルロ粒子を生成するかいなかの判定を行っても良い。この場合、比較粒子濃度も平方根の数値が用いられる。
【００３４】
複製されたモンテカルロ粒子は、元のモンテカルロ粒子の位置、エネルギ、速度及び質量などの物理パラメータが同一に複製される。ただし、粒子の重みとしては分割毎に重み係数が１／２に変更される。複製元のモンテカルロ粒子が重み係数が「１」である場合、複製を生成した際に、元のモンテカルロ粒子及び複製のモンテカルロ粒子の各々の重み係数は、それぞれ「０．５」となる。
【００３５】
図５は、モンテカルロ粒子データ記憶部１７に記憶されているモンテカルロ粒子テーブルの構成例を示す図である。この図５においてモンテカルロ粒子テーブルは、モンテカルロ粒子番号と、複製世代数と、直前のチェックポイントにおける粒子濃度（規格化）である参照粒子濃度と、重み係数とが対応付けられて記憶されている。モンテカルロ粒子番号は、モンテカルロ粒子の各々を識別する番号（識別情報）である。複製世代数は、複製された何世代目かを示している。例えば、「１」は１世代目であって、複製されていないことを示す。「２」は２世代目であって、１度目の複製であるモンテカルロ粒子を示す。同様に、「３」は２世代目であって、２度目の複製であるモンテカルロ粒子を示す。
このため、図５に示すように、複製世代数が「１」の場合には重み係数が「１」であり、複製世代数が「２」の場合には重み係数が「０．５」であり、複製世代数が「３」の場合には重み係数が「０．２５」である。本実施形態においては、モンテカルロ法を用いたイオン注入計算を行う際、一回の計算において１個のモンテカルロ粒子のみの計算を行う。そして、その１個のモンテカルロ粒子の計算が完了した後、次の１個のモンテカルロ粒子の計算を行う。また、モンテカルロ粒子の複製を作成した際も、同時には複数個の粒子の軌道を計算せず、１個ずつ順番に計算を行う。ただし、並列計算を行った場合には、同時に並列計算数分の粒子が計算される。
【００３６】
本実施形態においては、モンテカルロ粒子の複製は１個のみ作成し、複製元のモンテカルロ粒子と合わせて２個となる構成としているが、３個以上の複製を生成する構成としても良い。ただし、複製を生成した場合、複製元のモンテカルロ粒子の重み係数を、複製元のモンテカルロ粒子の数「１」と、複製で生成されたモンテカルロ粒子の数とを加算した数で除算して、この除算結果を新たな複製元のモンテカルロ粒子及び複製されたモンテカルロ粒子の各々の重み係数とする。
【００３７】
また、複製生成部１４は、モンテカルロ粒子の複製を生成する毎に、複製として生成したモンテカルロ粒子の複製世代数を、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに書き込んで記憶させる。ここで、複製世代数とは、注入されてから何世代目の複製であるかを示すモンテカルロ粒子の複製の世代数を示している。
予め複製世代数の最大値を設定しておき、複製生成部１４は、粒子濃度による複製を行うかいなかの判定を行う以外に、複数世代数と複製世代数の最大値とを比較し、複製を行うか否かの判定を加える構成としても良い。すなわち、複製生成部１４は、モンテカルロ粒子の複数世代数が複製世代数の最大値である場合、このモンテカルロ粒子の複製を生成しない。一方、複製生成部１４は、モンテカルロ粒子の複数世代数が複製世代数の最大値未満である場合、このモンテカルロ粒子の複製を生成する。
【００３８】
図１に戻り、複製生成部１４は、複製を生成した際、複製で生成されたモンテカルロ粒子にモンテカルロ粒子番号を付与し、モンテカルロ粒子データ記憶部１７に記憶されているモンテカルロ粒子テーブルの記載を更新する。
【００３９】
モンテカルロ粒子停止判定部１５は、散乱計算の後、モンテカルロ粒子のエネルギを検出し、検出したエネルギが一定のエネルギ以下である場合、モンテカルロ粒子が停止したと判定する。
また、モンテカルロ粒子停止判定部１５は、モンテカルロ粒子が停止したブロック番号のブロックにおける粒子数及び重み係数を、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
【００４０】
モンテカルロ粒子停止判定部１５は、読み出した粒子数に対して、「１」を加算（インクリメント）し、新たな粒子数として、シミュレーション結果記憶部１９の不純物濃度テーブルの対応するブロック番号の粒子数に上書きする。モンテカルロ粒子停止判定部１５は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて最も大きい粒子数を選択し、選択した粒子数によりブロックの各々の粒子数を除算し、除算結果をそれぞれ上書きして粒子濃度（規格化）を更新する。
【００４１】
また、モンテカルロ粒子停止判定部１５は、停止した粒子モンテカルロ粒子をモンテカルロ粒子データ記憶部１７に記憶されているモンテカルロ粒子テーブルから削除する。
そして、モンテカルロ粒子停止判定部１５は、削除したモンテカルロ粒子の重み係数及びブロック番号を不純物濃度算出部１６に対して出力する。
【００４２】
不純物濃度算出部１６は、モンテカルロ粒子の重み係数及びブロック番号がモンテカルロ粒子停止判定部１５から供給された場合、このブロック番号の示すブロックの新たな不純物濃度を算出する。すなわち、不純物濃度算出部１６は、この重み係数をブロックの体積で除算し、除算結果を差分データとする。また、不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから、対応するブロック番号の不純濃度を読み出す。不純物濃度算出部１６は、読み出した不純濃度に対して差分データを加算し、加算結果を新たな不純物濃度として、シミュレーション結果記憶部１９の不純物濃度テーブルの同一のブロック番号における不純物濃度に上書きし、不純物濃度の更新を行う。
上述においては、注入する１個のモンテカルロ粒子が１個の不純物粒子を表現しているとして説明したが、注入する１個のモンテカルロ粒子が複数個の不純物粒子を表現する場合もある。この場合、モンテカルロ粒子の数から実際の不純物の濃度を算出することになり、（不純物濃度の増加分）＝（重み係数）×（１個のモンテカルロ粒子が代表している実際の不純物イオンの数）÷（ブロックの体積）となる。
【００４３】
次に、図６、図７及び図８を用いて、本実施形態によるイオン注入シミュレーションシステムの動作例を説明する。図６は、数値計算におけるモンテカルロ粒子の試し打ちの処理の流れを示すフローチャートである。図７は、注入された元のモンテカルロ粒子による不純物濃度の算出の処理を示すフローチャートである。図８は、複製されたモンテカルロ粒子による不純物濃度の算出の処理を示すフローチャートである。図６のフローチャートは、図７及び図８各々のフローチャートの処理に先立って行われる。図８は、複製されたモンテカルロ粒子に対するものである。本実施形態においては、１個単位でモンテカルロ粒子による数値シミュレーションが行われるため、図７と図８とのフローチャートは時系列に行われる。
【００４４】
図６の数値シミュレーションにおける、モンテカルロ粒子の試し打ちの処理を示すフローチャートの処理から説明する。
ステップＳ１１：
イオン注入部１１は、質量、エネルギ、速度などの物理パラメータを与え、かつイオンの注入角度などの数値シミュレーションで用いるイオンデータを、モンテカルロ粒子に対して与える注入処理を行う。
そして、イオン注入部１１は、処理をステップＳ１２へ進める。
【００４５】
ステップＳ１２：
散乱計算部１２は、イオンデータの各々のデータに基づき、イオン注入部１１により注入されたモンテカルロ粒子の散乱計算を行い、ターゲット原子との衝突回数及びモンテカルロ粒子のエネルギなどを算出し、処理をステップＳ１３へ進める。
【００４６】
ステップＳ１３：
モンテカルロ粒子停止判定部１５は、散乱計算部１２が算出したエネルギを参照し、モンテカルロ粒子が停止したか否かの検出を行い、処理をステップＳ１４へ進める。
【００４７】
ステップＳ１４：
次に、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギがある閾値以下であると判定された場合、モンテカルロ粒子がブロックで停止したと判定する。そして、モンテカルロ粒子停止判定部１５は、モンテカルロ粒子が停止したブロックのブロック番号を不純物濃度算出部１６へ出力し、処理をステップＳ１５へ進める。
一方、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギがある閾値を超えていると判定された場合、モンテカルロ粒子が停止していないと判定し、処理をステップＳ１４へ進める。
【００４８】
ステップＳ１５：
次に、不純物濃度算出部１６は、モンテカルロ粒子が停止したブロックのブロック番号の粒子数及び不純物濃度を、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
そして、不純物濃度算出部１６は、粒子数をインクリメントし、新たな粒子数を算出する。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号の粒子数の欄に新たな粒子数を書き込むことにより粒子数の更新を行う。
【００４９】
また、不純物濃度算出部１６は、１をブロックの体積で除算し、差分データを算出する。そして、不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出した不純物濃度に対し、算出した差分データを加算して新たな不純物濃度を求める。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号の不純物濃度の欄に新たな粒子数を書き込むことにより不純物濃度の更新を行う。
そして、不純物濃度算出部１６は、処理をステップＳ１６へ進める。
【００５０】
ステップＳ１６：
イオン注入部１１は、内部の記憶部に記憶されている注入粒子数をインクリメントし、モンテカルロ粒子の注入粒子数が予め設定した初期注入数閾値を超えているか否かの判定を行う。ここで、初期注入数閾値は、試し打ちで流入するモンテカルロ粒子の数として設定されている。
【００５１】
そして、イオン注入部１１は、注入粒子数が注入数閾値を超えている場合、試し打ちのモンテカルロ粒子の数を超えたとして、処理をステップＳ１７へ進める。また、イオン注入部１１は、試し打ちが終了したことを示す制御信号を不純物濃度算出部１６に対して出力する。一方、イオン注入部１１は、注入粒子数が注入数閾値以下の場合、試し打ちのモンテカルロ粒子の数を超えていない、処理をステップＳ１１へ進める。
【００５２】
ステップＳ１７：
不純物濃度算出部１６は、イオン注入部１１から数値シミュレーションにおける試し打ちの処理が終了したことを制御信号により通知されると、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を算出する処理を行う。
そして、不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルからモンテカルロ粒子の粒子数を順次読み出し、最も大きな数のモンテカルロ粒子の粒子数（最大粒子数）を抽出する。
【００５３】
また、不純物濃度算出部１６は、抽出した最大粒子数により、不純物濃度テーブルにおけるブロック番号の各々のモンテカルロ粒子の粒子数を除算し、ブロック番号の示すブロックそれぞれのモンテカルロ粒子の粒子濃度を算出する。不純物濃度算出部１６は、チェックポイント判定データ記憶部１８に記憶されている粒子濃度範囲の定義情報を参照し、算出したモンテカルロ粒子の粒子濃度の各々がいずれの粒子濃度範囲にあるかを判定し、それぞれの粒子濃度範囲の符号を、シミュレーション結果記憶部１９の不純物濃度テーブルに書き込んで記憶させる。
そして、不純物濃度算出部１６は、試し打ちの処理を終了する。
【００５４】
次に、図７の数値シミュレーションにおけるイオン注入されたモンテカルロ粒子に対するフローチャートの処理を説明する。
ステップＳ２１：
イオン注入部１１は、内部の記憶部に記憶されているモンテカルロ粒子の注入粒子数が注入数閾値を超えている場合、数値シミュレーションにおいて注入するモンテカルロ粒子の数を超えたとして処理を終了する。
【００５５】
このとき、イオン注入部１１は、イオン注入の処理が終了したとして、内部の記憶部の注入粒子数を０（ゼロ）に初期化する。ここで、注入数閾値は、数値シミュレーションにおいて注入されるモンテカルロ粒子の総数として設定されている。
一方、イオン注入部１１は、注入粒子数が注入数閾値以下の場合、数値シミュレーションにおいて注入するモンテカルロ粒子の数を超えていないと判定し、処理をステップＳ２２へ進める。
【００５６】
ステップＳ２２：
イオン注入部１１は、質量、エネルギ、速度などの物理パラメータを与え、かつイオンの注入角度などの数値シミュレーションで用いるイオンデータを、モンテカルロ粒子に対して与える注入処理を行う。
そして、イオン注入部１１は、注入したモンテカルロ粒子にモンテカルロ粒子番号Ｐ１を付与し、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに対して書き込んで記憶させる。イオン注入部１１は、モンテカルロ粒子テーブルにおいて、モンテカルロ粒子番号に対応した複製世代数に対し、注入したモンテカルロ粒子を示す「１」を書き込んで記憶させ、処理をステップＳ２３へ進める。
【００５７】
ステップＳ２３：
散乱計算部１２は、イオンデータの各々のデータに基づき、モンテカルロ粒子の散乱計算及びモンテカルロ粒子に対する電子阻止能の計算を行い、ターゲット原子との衝突回数及びエネルギなどを算出し、処理をステップＳ２４へ進める。
【００５８】
ステップＳ２４：
モンテカルロ粒子停止判定部１５は、散乱計算部１２が算出したモンテカルロ粒子のエネルギを参照し、モンテカルロ粒子が停止したか否かの検出を行う。
このとき、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギある閾値以下であると判定された場合、モンテカルロ粒子がブロックで停止したと判定する。そして、モンテカルロ粒子停止判定部１５は、モンテカルロ粒子が停止したブロックのブロック番号を不純物濃度算出部１６へ出力し、処理をステップＳ３０へ進める。
一方、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギがある閾値以上であると判定された場合、モンテカルロ粒子が停止していないと判定し、処理をステップＳ２５へ進める。
【００５９】
ステップＳ２５：
チェックポイント検出部１３は、モンテカルロ粒子の散乱過程において、前回のチェック時からのターゲット原子へのモンテカルロ粒子の衝突回数を散乱計算部１２から読み込む。そして、チェックポイント検出部１３は、内部の記憶部に記憶されている蓄積衝突回数に対し、読み込んだ衝突回数を加算する。チェックポイント検出部１３は、加算結果を新たな蓄積衝突回数として、内部の記憶部に対して書き込んで記憶させる。
【００６０】
ステップＳ２６：
また、チェックポイント検出部１３は、新たに求めた蓄積衝突回数と、予め設定されている衝突回数閾値とを比較する。
そして、チェックポイント検出部１３は、蓄積衝突回数が衝突回数閾値以上である場合、チェックポイントであると判定し、処理をステップＳ２７へ進める。このとき、チェックポイント検出部１３は、内部の記憶部に記憶されている蓄積衝突回数を、「０」にリセットする。
一方、チェックポイント検出部１３は、蓄積衝突回数が衝突回数閾値未満である場合、チェックポイントでないと判定し、処理をステップＳ２３へ進める。
【００６１】
ステップＳ２７：
次に、複製生成部１４は、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルから、モンテカルロ粒子番号が「１」のモンテカルロ粒子に対応した直前のチェックポイントにおけるモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を参照粒子濃度として読み出す。
また、複製生成部１４は、モンテカルロ粒子番号が「１」のモンテカルロ粒子が現在存在するブロックのブロック番号を散乱計算部１２から読み出す。そして、複製生成部１４は、上記ブロック番号の示すブロックのモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を比較粒子濃度として、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
複製生成部１４は、参照粒子濃度と比較粒子濃度との比較を行い、処理をステップＳ２８へ進める。
【００６２】
ステップＳ２８：
このとき、複製生成部１４は、比較粒子濃度が参照粒子濃度より低い粒子濃度範囲である場合（例えば、比較粒子濃度がｎｇ３であり、参照粒子濃度がｎｇ２である場合）、モンテカルロ粒子の複製を生成するとの判定をし、処理をステップＳ２９へ進める。
一方、複製生成部１４は、比較粒子濃度が参照粒子濃度より高い粒子濃度範囲である場合（例えば、比較粒子濃度がｎｇ１であり、参照粒子濃度がｎｇ３である場合）、モンテカルロ粒子の複製を生成しないとの判定をし、処理をステップＳ２３へ進める。
【００６３】
ステップＳ２９：
複製生成部１４は、モンテカルロ粒子の複製を作成し、モンテカルロ粒子番号Ｐ２を付して、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに新たに書き込み、登録処理を行う。複製生成部１４は、注入されたモンテカルロ粒子の複製であるため、複製世代数を「２」として、モンテカルロ粒子テーブルにおいて、上記モンテカルロ粒子番号に対応する複製世代数の欄に書き込んで記憶させる。
また、複製生成部１４は、複製を生成したため、複製元のモンテカルロ粒子番号Ｐ１の重み係数「１」を１／２の「０．５」とし、かつ複製で生成されたモンテカルロ粒子番号Ｐ２の重み係数を「０．５」とする。
そして、複製生成部１４は、モンテカルロ粒子番号Ｐ１及びモンテカルロ粒子番号Ｐ２それぞれの重み係数をモンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに書き込んで記憶させ、処理をステップＳ３０へ進める。
【００６４】
ステップＳ３０：
次に、不純物濃度算出部１６は、モンテカルロ粒子が停止したブロックのブロック番号のモンテカルロ粒子の粒子数及び不純物濃度を、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
そして、不純物濃度算出部１６は、モンテカルロ粒子の粒子数をインクリメントし、新たなモンテカルロ粒子の粒子数を算出する。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号のモンテカルロ粒子の粒子数の欄に新たなモンテカルロ粒子の粒子数を書き込むことにより、モンテカルロ粒子の粒子数の更新を行う。
【００６５】
また、不純物濃度算出部１６は、「１（モンテカルロ粒子が１個）」をブロックの体積で除算し、差分データを算出する。そして、不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出した不純物濃度に対し、算出した差分データを加算して新たな不純物濃度を求める。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号の不純物濃度の欄に新たな不純物濃度を書き込むことにより不純物濃度の更新を行う。
そして、不純物濃度算出部１６は、処理をステップＳ３１へ進める。
【００６６】
ステップＳ３１：
不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから粒子数を順次読み出し、各ブロックのモンテカルロ粒子の粒子数から最大粒子数を抽出する。
また、不純物濃度算出部１６は、抽出したモンテカルロ粒子の最大粒子数により、不純物濃度テーブルにおけるブロック番号の各々のモンテカルロ粒子の粒子数を除算し、ブロック番号の示すブロックそれぞれのモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を算出する。不純物濃度算出部１６は、チェックポイント判定データ記憶部１８に記憶されている粒子濃度範囲の定義情報を参照し、算出した粒子濃度の各々がいずれの粒子濃度範囲にあるかを判定し、それぞれの粒子濃度範囲の符号を、シミュレーション結果記憶部１９の不純物濃度テーブルに書き込んで記憶させる。
【００６７】
このとき、複製生成部１４は、複製元としたモンテカルロ粒子が現在存在するブロックの更新されたモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルにおけるモンテカルロ粒子番号Ｐ１の直前のチェックポイントにおけるモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度の欄に書き込んで記憶させる。
そして、不純物濃度算出部１６は、処理をステップＳ２１へ進める。
【００６８】
次に、図８の数値シミュレーションにおける複製されたモンテカルロ粒子に対するフローチャートの処理を説明する。
ステップＳ４１：
散乱計算部１２は、イオンデータの各々のデータに基づき、複製生成部１４により複製されたモンテカルロ粒子の散乱計算を行い、ターゲット原子との衝突回数及びモンテカルロ粒子のエネルギなどを算出し、処理をステップＳ１３へ進める。
【００６９】
ステップＳ４２：
モンテカルロ粒子停止判定部１５は、散乱計算部１２が算出したモンテカルロ粒子のエネルギを参照し、モンテカルロ粒子が停止したか否かの検出を行う。
このとき、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギがある閾値以下となった場合、モンテカルロ粒子のエネルギがある閾値以下となったブロックで停止したと判定する。そして、モンテカルロ粒子停止判定部１５は、モンテカルロ粒子が停止したブロックのブロック番号を不純物濃度算出部１６へ出力し、処理をステップＳ４８へ進める。
一方、モンテカルロ粒子停止判定部１５は、散乱計算におけるモンテカルロ粒子のエネルギがある閾値を超えていると判定された場合、モンテカルロ粒子が停止していないと判定し、処理をステップＳ４３へ進める。
【００７０】
ステップＳ４３：
チェックポイント検出部１３は、モンテカルロ粒子の散乱過程において、前回のチェック時からのターゲット原子へのモンテカルロ粒子の衝突回数を散乱計算部１２から読み込む。そして、チェックポイント検出部１３は、内部の記憶部に記憶されているモンテカルロ粒子の蓄積衝突回数に対し、読み込んだ衝突回数を加算する。チェックポイント検出部１３は、加算結果を新たな蓄積衝突回数として、内部の記憶部に対して書き込んで記憶させる。
【００７１】
ステップＳ４４：
また、チェックポイント検出部１３は、新たに求めた蓄積衝突回数と、予め設定されている衝突回数閾値とを比較する。
そして、チェックポイント検出部１３は、蓄積衝突回数が衝突回数閾値以上である場合、チェックポイントであると判定し、処理をステップＳ４５へ進める。このとき、チェックポイント検出部１３は、内部の記憶部に記憶されている蓄積衝突回数を、「０」にリセットする。
一方、チェックポイント検出部１３は、蓄積衝突回数が衝突回数閾値未満である場合、チェックポイントでないと判定し、処理をステップＳ４１へ進める。
【００７２】
ステップＳ４５：
次に、複製生成部１４は、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルから、モンテカルロ粒子番号が「Ｐ１」のモンテカルロ粒子に対応した直前のチェックポイントにおけるモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を参照粒子濃度として読み出す。
また、複製生成部１４は、モンテカルロ粒子番号が「１」のモンテカルロ粒子が現在存在するブロックのブロック番号を散乱計算部１２から読み出す。そして、複製生成部１４は、上記ブロック番号の示すブロックのモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を比較粒子濃度として、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
複製生成部１４は、参照粒子濃度と比較粒子濃度との比較を行い、処理をステップＳ４６へ進める。
【００７３】
ステップＳ４６：
このとき、複製生成部１４は、比較粒子濃度が参照粒子濃度より低い粒子濃度範囲である場合、モンテカルロ粒子の複製を生成するとの判定をし、処理をステップＳ４７へ進める。一方、複製生成部１４は、比較粒子濃度が参照粒子濃度より高い粒子濃度範囲である場合、モンテカルロ粒子の複製を生成しないとの判定をし、処理をステップＳ４１へ進める。
【００７４】
ステップＳ４７：
複製生成部１４は、モンテカルロ粒子の複製を作成し、モンテカルロ粒子番号Ｐ３を付して、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに新たに書き込み、登録処理を行う。複製生成部１４は、複製された第１世代のモンテカルロ粒子の複製であるため、複製世代数を「３」として、モンテカルロ粒子テーブルにおいて、上記モンテカルロ粒子番号に対応する複製世代数の欄に書き込んで記憶させる。
また、複製生成部１４は、複製を生成したため、複製元のモンテカルロ粒子番号Ｐ２の重み係数「０．５」を１／２の「０．２５」とし、かつ複製で生成されたモンテカルロ粒子番号Ｐ２重み係数を「０．５」とする。
そして、複製生成部１４は、モンテカルロ粒子番号Ｐ２及びモンテカルロ粒子番号Ｐ３それぞれの重み係数をモンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルに書き込んで記憶させ、処理をステップＳ４１へ進める。
【００７５】
ステップＳ４８：
次に、不純物濃度算出部１６は、モンテカルロ粒子が停止したブロックのブロック番号の粒子数及び不純物濃度を、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
そして、不純物濃度算出部１６は、モンテカルロ粒子の粒子数をインクリメントし、モンテカルロ粒子の新たな粒子数を算出する。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号のモンテカルロ粒子の粒子数の欄に新たなモンテカルロ粒子の粒子数を書き込むことにより粒子数の更新を行う。
【００７６】
また、不純物濃度算出部１６は、「１（モンテカルロ粒子が１個）」をブロックの体積で除算し、差分データを算出する。そして、不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出した不純物濃度に対し、算出した差分データを加算して新たな不純物濃度を求める。不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルにおいて、モンテカルロ粒子が停止したブロックのブロック番号の不純物濃度の欄に新たな不純物濃度を書き込むことにより不純物濃度の更新を行う。
そして、不純物濃度算出部１６は、処理をステップＳ４９へ進める。
【００７７】
ステップＳ４９：
不純物濃度算出部１６は、シミュレーション結果記憶部１９の不純物濃度テーブルから粒子数を順次読み出し、各ブロックのモンテカルロ粒子の粒子数から最大粒子数を抽出する。
また、不純物濃度算出部１６は、抽出したモンテカルロ粒子の最大粒子数により、不純物濃度テーブルにおけるブロック番号の各々のモンテカルロ粒子の粒子数を除算し、ブロック番号の示すブロックそれぞれのモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を算出する。不純物濃度算出部１６は、チェックポイント判定データ記憶部１８に記憶されている粒子濃度範囲の定義情報を参照し、算出したモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度の各々がいずれの粒子濃度範囲にあるかを判定し、それぞれの粒子濃度範囲の符号を、シミュレーション結果記憶部１９の不純物濃度テーブルに書き込んで記憶させる。
このとき、複製生成部１４は、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルから、停止した複製元のモンテカルロ粒子（モンテカルロ粒子番号Ｐ１）を削除する。そして、不純物濃度算出部１６は、処理を終了する。
【００７８】
上述したように、本実施形態においては、不純物濃度ではなく、モンテカルロ粒子の濃度である粒子濃度により、モンテカルロ粒子の複製を生成するか否かの判定を行っている。このため、本実施形態によれば、統計ノイズが大きな領域、すなわちモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度が低い領域の粒子濃度を向上させることができ、ノイズを低減する効果がある。これにより、基板を分割した深さ方向及び横方向の全てのブロックにおいて、均一のモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度とすることができ、統計ノイズを均一化することができ、注入する対象のデバイス構造やイオン注入の注入条件によらず、全領域において安定した数値シミュレーションの結果を得ることが可能となる。
【００７９】
＜第２の実施形態＞
以下、本発明の第２の実施形態について、図面を参照して説明する。
本発明の第２の実施形態によるイオン注入シミュレーションシステムは、第１の実施形態と同様の構成を備えている。以下、第２の実施形態が第１の実施形態と異なる動作のみを説明する。
モンテカルロ粒子データ記憶部１７には、第１の実施形態のモンテカルロ粒子テーブルに加え、補正係数を求める補正関数としての多項式が予め書き込まれて記憶されている。この多項式は、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度と不純物濃度とがパラメータであり、補正係数が求められる。この補正係数は、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を補正するために乗算されるものである。補正は、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を他の場所より高くしたい場合、あるいは低くしたい場合など、ユーザが任意に設定する多項式により、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を調整することができる。
【００８０】
すなわち、複製生成部１４は、モンテカルロ粒子データ記憶部１７から多項式を読み出す。不純物濃度算出部１６は、散乱計算部１２から現在のブロックのブロック番号を参照し、このブロック番号に対応するブロックの不純物濃度を、シミュレーション結果記憶部１９の不純物濃度テーブルから読み出す。
また、不純物濃度算出部１６は、現在のブロックにおけるモンテカルロ粒子の粒子数をブロックの体積により除算し、除算結果をモンテカルロ粒子の単位体積当たりの粒子数を示す標準粒子濃度とする。複製生成部１４は、読み出した不純物濃度及び不純物濃度算出部１６の求めた標準粒子濃度の各々を、上記多項式に代入して補正係数を算出する。
【００８１】
そして、複製生成部１４は、上記標準粒子濃度に対し、多項式から求めた補正係数を乗算し、乗算した結果を補正粒子濃度とする。複製生成部１４は、この求めた補正粒子濃度を不純物濃度算出部１６に対して出力する。不純物濃度算出部１６は、チェックポイント判定データ記憶部１８に記憶されている粒子濃度範囲の定義情報を参照し、算出した補正粒子濃度がいずれの粒子濃度範囲にあるかを判定する。
そして、複製生成部１４は、補正粒子濃度から求めた粒子濃度を比較粒子濃度とする。また、複製生成部１４は、モンテカルロ粒子データ記憶部１７のモンテカルロ粒子テーブルから、モンテカルロ粒子の直前のチェックポイントにおける粒子濃度を参照粒子濃度として読み出す。
【００８２】
複製生成部１４は、第１の実施形態と同様に、参照粒子濃度と比較粒子濃度との比較を行う。この比較により、複製生成部１４は、比較粒子濃度が参照粒子濃度より低い粒子濃度範囲である場合、モンテカルロ粒子の複製を生成するとの判定をする。一方、複製生成部１４は、比較粒子濃度が参照粒子濃度より高い粒子濃度範囲である場合、モンテカルロ粒子の複製を生成しないとの判定をする。他の動作については、第１の実施形態と同様である。
【００８３】
上述したように、本実施形態においては、第１の実施形態と同様に不純物濃度ではなく、モンテカルロ粒子の濃度である粒子濃度により、モンテカルロ粒子の複製を生成するか否かの判定を行っている。このため、本実施形態によれば、統計ノイズが大きな領域、すなわちモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度が低い領域のモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を向上させることができ、ノイズを低減する効果がある。これにより、本実施形態においては、基板を分割した深さ方向及び横方向の全てのブロックにおいて、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を向上させることで統計ノイズを低下させ、注入する対象のデバイス構造やイオン注入の注入条件によらず、全領域において安定した数値シミュレーションの結果を得ることが可能となる。
【００８４】
また、本実施形態は、不純物濃度及びモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度をパラメータとする多項式により、モンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度を補正する補正係数を求め、不純物濃度及びモンテカルロ粒子の単位体積当たりの粒子数を示す粒子濃度の情報により、いずれの条件においてモンテカルロ粒子の粒子数を増加あるいは減少させるかを、予め多項式として生成している。これにより、本実施形態は、上記多項式により求められた補正係数を用いることで、領域毎の粒子濃度を任意に調整することができ、統計ノイズの制御を行い、全領域において希望する数値シミュレーションの結果を得ることが可能となる。
【００８５】
なお、本発明における図１のイオン注入シミュレーションシステムの機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することによりモンテカルロ法を用いた数値シミュレーションの処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、ＯＳや周辺機器等のハードウェアを含むものとする。
また、「コンピュータシステム」は、ホームページ提供環境（あるいは表示環境）を備えたＷＷＷシステムも含むものとする。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ（ＲＡＭ）のように、一定時間プログラムを保持しているものも含むものとする。
【００８６】
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク（通信網）や電話回線等の通信回線（通信線）のように情報を伝送する機能を有する媒体のことをいう。また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル（差分プログラム）であっても良い。
【符号の説明】
【００８７】
１  イオン注入シミュレーションシステム
１１  イオン注入部
１２  散乱計算部
１３  チェックポイント検出部
１４  複製生成部
１５  モンテカルロ粒子停止判定部
１６  不純物濃度算出部
１７  モンテカルロ粒子データ記憶部
１８  チェックポイント判定データ記憶部
１９  シミュレーション結果記憶部
【図１】
2015122444.tif 000003
【図２】
2015122444.tif 000004
【図３】
2015122444.tif 000005
【図４】
2015122444.tif 000006
【図５】
2015122444.tif 000007
【図６】
2015122444.tif 000008
【図７】
2015122444.tif 000009
【図８】
2015122444.tif 000010
【図９】
2015122444.tif 000011