電圧伝達特性の最大勾配をngspiceでプロットします

Nov 22 2020

ngspiceに基本的なCMOSインバーターを実装し、入力電圧に対してDC掃引分析を実行して、さまざまなVdd電圧での電圧伝達曲線(Vout対Vin)を取得しました。

. cmos g (gain) vs vdd

.include tsmc180.txt

vdd source_p 0 0v
vin gate_common 0 0v

m_p out gate_common source_p source_p cmosp w=2u l=0.18u
m_n out gate_common 0 0 cmosn w=2u l=0.18u

.dc vin 0 2.5 0.01 vdd 0.5 2.5 0.5
.control
run
plot v(out) vs v(gate_common) 
plot deriv(v(out)) vs v(gate_common)
.endc
.end

上記を実行すると、予想どおり2つのプロットが得られます。1つはVTCで、もう1つはインバーターゲインを表すvtcの傾きです。

最大ゲインポイント(ゲイン曲線の負のピーク)をvddに関する曲線としてプロットする必要があります。.MEASUREこれを行うためにコマンドを使用することを考えました。

.measure dc g deriv v(out)
.measure dc g_max min g 

しかし、これは私にエラーを与えます

No. of Data Rows : 1255
        measure 'g'  failed
Error: measure  g  :
        function '' currently not supported
 .measure dc g deriv v(out) failed!

ngspicepdfマニュアルまたはngspiceシミュレーション例のgitリポジトリにそのような例は見つかりませんでした。いくつかのガイダンスは非常に高く評価されています。

回答

aconcernedcitizen Nov 22 2020 at 18:15

使用derivとは、トレースのすべての長さを区別することを意味します。.meas g deriv v(out)戻り値は点のベクトルになるため、コマンドは意味がありません。マニュアルはの使い方について説明しderiv、それぞれのトレースのための、または別に達した条件のいずれかを介して、ヘルプにキーワードが一点で微分を評価するように。

この方法では、、、およびcoが許可されていないように思われるためminmax同じ.dc分析を実行することをお勧めしますが、次のようになります.tran

  1. 入力をランプとして設定しますPWL(0 0 1 2.5)。例:
  2. {x}サプライに(または他の値)を割り当てます。
  3. で供給の値をステップスルーします.step param x 0.5 2.5 0.5

プロットV(out)するだけで十分です。これは正しい応答を示しますが、に対してプロットV(in)すると.dc分析が模倣されます。この方法の利点は、あなたが、出力の導関数を実行することができ、回路を追加した場合、あなたが使用することができ、つまり.meas見つけるためにmin/ max/など。回路により形成された基であり、G1そしてL1記載されるように、ここ。その配置も同様です。の非反転入力をG1に接続しV(out)、両端の電圧をL1導関数に使用するだけです。私は(例えば総シミュレーション時間よりも小さいタイムステップ1000倍siggestたい1 msために1 s十分な精度のために(スプリアススパイクを避けるために)、以下)、または。

それでV(d)、が導関数の場合は、単に次を使用します。

.meas d min v(d) from 10m

from 10m性を保証による誘導体初めには、ランダムなスパイクは存在しません。