1

第 9 章 モンテカルロ解析
ns-spice では、素子ばらつきによる回路動作への影響を評価するために用いられるモンテカルロ解析を簡単に行うことができます。

図１

モンテカルロ解析のサンプル回路図（inv1_DC.nsd）

図１の c:\Design\ns-tools\example\CHAPTER_9(MonteCalro)\inv1_DC.nsd の例では、pMOSFET の W を変動させて、論理しきい値の変化をシミュレーションします。図中赤字の 部分が モンテ カルロ 解析を 行う ために 必要な 部分で す。ま ず、 .param 文 で 、Wp='agauss(2u,0.1u,1)'と指定します。agauss(x,y,z)関数は、関数が呼ばれる毎に、xを中心値として、zσが、y となる正規分布の中から、乱数を用いて値を決定するものです。これにより、シミュレーションを実行する毎に、異なる値が Wp に代入されます。
次に、.dc 行の末尾に monte=30 と記述します。これにより、シミュレーションを３０回繰り返します。リスト１に、図１の回路のシミュレーションの実行状況を示します。
赤字で示すように、毎回のシミュレーションで、agauss()で、異なる値が生成されていることが分かります。
リスト１

モンテカルロシミュレーションの実行結果（コマンドプロンプト）******************************************************************** NS-Spice.
Ver. Mar 18 2010 (Nanodesign Corp.) ********************************************************************

2*---------------------------------------------------------**-Monte Carlo Analysis : 1( 1)
1/ 30 --**---------------------------------------------------------*### agauss(2e-006,1e-007,1) => 1.93746e-006*-Result of .measure--*@wp= 1.9374646538e-006
vth= 0.895675747*--------------------------------**---------------------------------------------------------**-Monte Carlo Analysis : 2( 1)
2/ 30 --**---------------------------------------------------------*### agauss(2e-006,1e-007,1) => 1.9437e-006*-Result of .measure--*@wp= 1.9436971917e-006
vth= 0.8961976378*--------------------------------**---------------------------------------------------------**-Monte Carlo Analysis : 3( 1)
3/ 30 --**---------------------------------------------------------*### agauss(2e-006,1e-007,1) => 2.12556e-006*-Result of .measure--*@wp= 2.1255588913e-006
vth= 0.9108233516*--------------------------------**---------------------------------------------------------**-Monte Carlo Analysis : 4( 1)
4/ 30 --**---------------------------------------------------------*### agauss(2e-006,1e-007,1) => 1.99061e-006*-Result of .measure--*@wp= 1.9906072770e-006
vth= 0.900112736*--------------------------------*
・・・・・・（中略）・・・・・・*---------------------------------------------------------**-Monte Carlo Analysis : 30( 1)30/ 30 --**---------------------------------------------------------*### agauss(2e-006,1e-007,1) => 2.05424e-006*-Result of .measure--*@wp= 2.0542373002e-006
vth= 0.9053007523*--------------------------------**---------------------------------------------------------**-Monte Carlo Analysis : Finished--**-measured.csv is created.
--**---------------------------------------------------------*

また、モンテカルロ解析の結果も、measured.csv に出力されています。これを表計算ソフトで読み込んで、図２のようなグラフを作成することができます。図２の結果か3

ら、Excel の組み込み関数 STDEVP()を用いることで、Vth の標準偏差は、6.5mV 程度であることが分かります。ただし、モンテカルロ解析の精度を上げるためには、繰り返し回数をさらに増やしたほうがよいと思われます。

図２

モンテカルロ解析結果の CVS ファイル出力

図３

ヒストグラムの作成（monte=100）

4

また、Excel であれば、データ→データ分析→ヒストグラムで、図３のようなヒストグラムを作成することができます。
ここで、変動を与える関数をしては以下の４つの関数を使うことができます。
（１）正規分布時の変動:
agauss(x,y,z)、x：中心値、y：偏差（絶対値）、z：シグマ値（y=zσ）

gauss(x,y,z)、x：中心値、y：偏差（相対値）、z：シグマ値（y=zσ）（z=1 なら、ｙは標準偏差値になる）（２）均一分布時の変動:
aunif(x,y)、x：中心値、y：±分布範囲（絶対値）

unif(x,y)、x：中心値、y：±分布範囲（相対値）

図４に、過渡解析でモンテカルロ解析を行うサンプル回路を示します。
Wp の値を、標準偏差が 0.3um として変動させいます。シミュレーション結果の波形を重ねて見てみると、遅延時間が変動しているため、図５のように、線幅が太くなっているように見えます。図６に表計算ソフトに CSV 出力を読み込み、グラフ化したものを示します。

図４

モンテカルロ解析（TRANSIENT 解析)

5

図５

図６

モンテカルロ解析時の波形

Tdr,Tdf,Tdelay のモンテカルロ解析結果