spice simulation tips-3     更新:2012/06/07

一部Spice Simulation講座での内容をご紹介いたします。

注意:HPの内容をLocalに保存している方がいます。アクセスログを取ってますので何度も繰り返す場合は、会社名と名前(判明しています)を公開します。

1. transient noise simulation

Noise Simulationはアナログ/RF回路設計者にとっては必須でな解析です。近年CMOSの高性能化に よるデジタル回路とのMixed-Signal回路により過渡解析におけるNoise Simulation機能が搭載されています。これにより、従来PLLの解析で位相ノイズと呼ばれていました周波数ドメインの解析法であるHB(HarmonicBalance)解析でしか PLLのジッタを解析出来なかった物が、時間軸方向(タイムドメイン)でTransient Noise 解析によりノイズを付加したジッタ解析が出来るようになりました。近年でいえば、HDMI、USB3.0、さらには10GbEをベースにした 企画中のHDBase-TのLSIの設計では必須の解析です。 一般的にはTransient noise Simulationと呼ばれている機能で過渡解析において周波数ドメインの ノイズ成分をIFFTと疑似乱数を用いて各Simulationで解析されるデバイスに重畳しています。 (※各Simulatorによって詳細なアルゴリズムが違うので詳細は各Simulatorのマニュアルを参照ください)

2. 過渡ノイズ解析の出来るSpice Simulator

現在、この機能を搭載したSimulatorは以下です(順不同)

  1. Cadence : Spectre
  2. Synopsys : Hspice (RFの機能です)
  3. SILVACO: SmartSpice
  4. Dolphin Integration: Smash
  5. SIMetrix technology: SIMetrix
  6. Ansoft: NEXXIM
  7. BDA : AFS

ここでは、早期のこのtransient noise Simulation機能を搭載した二つのSimulator(SmashとSIMetrix)を使用したNoiseの精度を紹介します。 ※最後にAnsoftのNEXXIMの解析結果を追加しました(2009/12/28)

今回使用したSimulatorのバージョンは以下

  • Dolphin Integration SMASH 5.13.1
  • SIMetrix 5.60d

3. TEST 回路

TEST回路として一つ目は1MegΩの抵抗の熱雑音を見ます。

一応、実際の回路解析の影響を考えて、電源(V=0),観測する端子に容量値(0,1fF,1pF)と

容量値を変化させます。

また最後に、1Megオームの抵抗を二つ直列に接続した物を用意します。

写真

 

 

 

 

 

 

 

ネットリストで見ますとこんな感じです。

* resistance noise simulation *

  • v001 in1 0 0
  • r001 out1 in1 1meg
  • c001 out1 0 0
  • v002 in2 0 0
  • r002 out2 in2 1meg c
  • 002 out2 0 1f
  • v003 in3 0 0
  • r003 out3 in3 1meg
  • c003 out3 0 1p
  • r004 out4 0 1meg
  • r014 0 out4 1meg
  • .Tran 100ps 1us 0s noise=yes noisestep=100ps traceBreak=yes compress=no compressCoeff=1 compressTolX=0 compressTolY=1u powerup=no timeup=0s
  • .Eps 1u 100m 1n .H 1fs 1fs 100ps 125m 2 .Option Tuning=Swift Swift=1m .Method TRAP current=no voltage=no factor=10 scale=no global=no
  • .Trace Tran V(OUT1) V(OUT2) V(OUT3) V(OUT4) Min=-3.2351012e-003 Max=4.0832489e-003
  • .end

見ると分かるのですが、ここでは抵抗端のCapacitorの容量の値を変えています。 理由は、0PのCapacitanceを挿入しないと、通常のSpiceではGmin=1e-12のConductanceを 挿入してSimulationするため計算値とずれる可能性があるからです。 通常デバイスのSimulationでも平行に1e-12のConductanceが挿入されることもあります (これは、それぞれのSimulatorに依存します) では、C=0,1f,1pと変えたときと、今度は1Megの抵抗を2個直列に接続した真ん中の端子 (out4)のSimulation結果を見てみましょう。 Capacitanceの容量値による波形の違いは、Capacitanceが付加されることにより帯域制限を 受けるためNoise波形が変わります。(いわゆるkT/C noiseですね。)

4. Dolphin Integration SMASHの結果

最新版の結果に更新しました。SMASH 5.18.1.Rです(2012年版)

このSimulationで面白いのは、ノイズ発生に乱数を使用しているのでkt/Cノイズを見る為に C=0、1f、1pと変えて行くことにより、波形がなまって乱数が見えて来ます。当然乱数ですので毎回発生する値は変わりますので、V(out3)の波形は毎回違う波形が見られます。

Simulation2回目:

5. SIMetrixの結果

 続いてSIMtrixのTransient Noise解析用の回路図と結果を示します。  

(SIMtrixでは、Real Time Noise解析と呼んでいる機能です)

写真

 

 

 

 

 

 

 

 

 

 

Smashでout4と呼んでいたのノードがout2になります。 回路図で見ると分かり易いですね。

写真

 

 

 

 

 

 

 

 

どうですか?noise stepは100pと条件はSmashと同等にしております。 ノイズのレベルが約2倍違うのがわかりますね。 この二つのSimulatorは、この解析において優秀で、ノイズの発生もいかにもって感じですね。

6. その他のSimulator

続いて、他のSimulatorの簡単な結果を載せておきます。 おそらく現在のVersionで解決されてる事を祈っていますが、元のソースが間違ってImplementされてるような気がしますね。  ※ちなみに両方とも、頭文字がSがつくSimulatorです。 まずは、最初のSimulator 赤:out1 青:out4 条件としてgmin=0 (Spiceによって呼び名はかわりますが、ここではフローティングノードに付加されるConductanceの意味です) reltol=1e-12, vntol=1-9としています。 またnoiseの最高周波数は10G(1/100psec) です。 ノイズレベルも他社とは大きく違います。

 

こちらは、同じS社の最新の4.6.5.Rでの結果を以下に示します。結果みてもらると分かるのですが直りました。随分と似て来ましたね。ただノイズの値がv(out1)とV(out4)でほぼ同じというのがおかしいですね。

続いて、下図は、同じSがつく有名なSimulatorです。 こちらも、初期値0から大きくずれてSimulationされています。 横軸のスケールに注意してください。

写真

 

 

 

 

 

 

 

どちらのSimulatorも初期値から大きくずれてSimulationが開始されています。 現在のVersionでどうなるかはまだ確認してません。

7. ANSYS (旧ANSOFT) NEXXIM

続いてAnsoftのNEXXIMです。 回路図は以下図のようになっています。 NEXXIMでは、Floating Nodeに接続されるConductanceは0なのでかなり期待出来ます。

 

写真

 

 

 

 

 

オプション等のネットリストは以下

  • .OPTIONS tran.abstol=1e-012 tran.vntol=1e-012 tran.reltol=1e-009
  • .TRAN 10ps 1000ns
  • + noisefmax=10e9
  • + noisescale=1
  • +noiseseed=1024

写真

 

 

 

 

 

 

 

NEXXIMの結果は,DolphinのSmashに近いですね。 精度云々はさておき、かなり数値的には優秀とだけ付け加えておきます。 そして、特筆すべきなのはこの中で一番高速にSimulationを完了しています。 協力してくれ会社様があれば、より精度比較までお手伝いいたします。 手計算との精度の比較は、各自でしてみてください。

 

 

 

*iphone アプリ 開発
*ラティース ラティッセ