電圧伝達特性の最大勾配をngspiceでプロットします
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リポジトリにそのような例は見つかりませんでした。いくつかのガイダンスは非常に高く評価されています。
回答
使用deriv
とは、トレースのすべての長さを区別することを意味します。.meas g deriv v(out)
戻り値は点のベクトルになるため、コマンドは意味がありません。マニュアルはの使い方について説明しderiv
、それぞれのトレースのための、または別に達した条件のいずれかを介して、ヘルプにキーワードが一点で微分を評価するように。
この方法では、、、およびcoが許可されていないように思われるためmin
、max
同じ.dc
分析を実行することをお勧めしますが、次のようになります.tran
。
- 入力をランプとして設定します
PWL(0 0 1 2.5)
。例: {x}
サプライに(または他の値)を割り当てます。- で供給の値をステップスルーします
.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
性を保証による誘導体初めには、ランダムなスパイクは存在しません。