0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ngspiceの変数

Posted at

私が普段使用しているhspiceでは変数として扱えるのはmeasureの測定結果と.paramで定義されたものと、.measure中でparやparam=で参照されるものだけだと思うのだが、ngspiceではそれ以外に(私が認識している範囲で)以下のものがある

  • .csparamで定義されるもの
  • .control内で定義されるもの
    • letで定義するもの
      • これはvector
        参照するときはx等
    • setで定義するもの
      • これはvariaable
        参照するときは$x等
    • measで測定された結果
      • 参照するときは{x}等
    • alterparamで再定義したparam
      必ずresetが必要

これらのスコープをdocumentを読んでもなかなか理解できず、いろいろ探した結果、以下のページの説明が最もしっくり来た。
ngspiceのvariables/parameterの質問
(ただし全部は試せていない)

以下いろいろ実験してわかったこと

  • .paramで定義した値は.control内では参照できない
  • .csparamで定義した値は.control内で参照できる
    例えば.paramで定義したvddは.csparamのvdd0を経由すれば$&vdd0として.controlで参照可能になる。
.param vdd=1.8
.param vss=0
.param gv=0
.csparam vdd0={vdd}
.param lw='1e-008*(width)/(length)'
.csparam lw0={lw}
.control
run
let itarg=abs(i(Vssat))
echo lw "$&lw0"
meas dc vth_satp0 find v(gsat) when itarg=$&lw0
let vth_satp='$&vdd0 - vth_satp0'

.paramで定義した値は.control内でalterparamで再定義すれば参照できるのだが、値を有効にするためにはresetが必要になる。この時どうやらいろいろなものがresetされてしまう。
FFのSetup/hold simのcontrolに既述したようにalterparamで.paramの値を書き換えたときは、元の.paramで定義していた値を参照しているほかのすべての式に影響を与えている模様。(Spiceは基本的にファイル内の構文の順序と実行順には関連がないから)
これは以下のように使った。

.param setup=1n
.param d_start='cycle*2+clk_start-setup'
.csparam pds=d_start
.param cp2q0_para=100p
vclk clk vss pulse( {vss} {vdd} {clk_start} {trf} {trf} {cycle} {cycle*2} )
vdata d vss pulse( {vdd} {vss} {d_start} {trf} {trf} {cycle*2} {cycle*4} )
途中略
.control
途中略
* Initial Setup Time in controll
let st=1n
途中略
          alterparam setup=$&st
          reset
          tran 10p 40n

.measureで測定した結果の値を.controlで参照する方法についてはいろいろ試してみたが、今の所成功していなくて、.control内にすべてのmeasを持ってくる方法しか成功していない。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?