Spice3は,シミュレータと,データ解析およびグラフ作成用のフロントエンドによって構成されています. フロントエンドは,Nutmegという名前の分離した「スタンドアロン」プログラムとして実行できます.
Nutmegは,spice -r または会話型のSpice3セッションの write コマンドによって生成された「生」データファイルを読み込みます. Nutmegまたは会話型のSpice3では,シミュレーションのデータをグラフにしてグラフィック端末やワークステーションのディスプレイに表示することができます. 会話型のSpice3フロントエンドで使えるほとんどのコマンドは,Nutmegでも使えます. そうではないSpiceのみに有効なコマンドは,アスタリスク(``*'')を付けてあります. 生ファイルは,Spice2が標準出力に書き出すデータとは違います. それと同じデータは,Spice3に -b コマンド行オプションを指定すると生成されます.
SpiceとNutmegは,環境変数 DISPLAY を見つけると,グラフ表示にX Window Systemを使います. そうでなければ,グラフィック端末独立インターフェイス(MFB)が使われます. ワークステーションでXを使っている場合,DISPLAY 変数を常に設定すべきです. Spice3やNutmegを実行しているシステム以外にグラフィクスを表示したい場合, DISPLAY は machine:0.0 という形式にします. 詳細については,X Window Systemの適切なドキュメントを参照のこと.
spice [-n] [-t term] [-r rawfile] [-b] [-i] [inputfile ...]
nutmeg [-] [-n] [-t term] [datafile ...]
オプションは,
これ以降のSpiceへの引数は,Spice3の入力ファイルであると解釈され,そのファイルが読み込まれ,(メモリ中に)保存されます(バッチモードで動作している場合は,即座に実行されます). Spice3は,ほとんどのSpice2の入力ファイルを受け付け,.plot, .four, .print 行で指定されたasciiプロットを出力し,フーリエ解析を行ない,ノードの表示を行ないます. .width 行で out パラメータが指定された場合,その効果は set width = ... と同じです. しかし,Spice3のasciiプロットは複数の範囲を扱えないので,.plot 行のベクトルの範囲が異なっていると,Spice2で得られるよりも情報がかなり減ってしまいます. また,Spice3の出力は,上述の行で要求されたデータのみ表示されるという点で,Spice2ほど冗舌ではありません.
Nutmegでは,これ以降の引数は,Nutmegに読み込まれるバイナリまたはテキストフォーマット(convert(1)を参照のこと)のデータファイルとして解釈されます. ファイルがバイナリ形式の場合,一部のみが完了していることもあります(シミュレーションが終了する前にSpice2の出力を確認する際に有用です). 1つのファイルに,さまざまな解析のデータセットが任意の数含まれていても構いません.
SpiceおよびNutmegの時刻,電圧などのデータの形式は,ベクトルです. 各ベクトルには型があり,ベクトルの型に応じた演算を行なったり,代数的に結合したりできます. ベクトルは通常データファイルを読み込んだとき(後述の load コマンド(5.3.25節)を参照のこと)に作成されます. let コマンドでも作成できます.
式は,ベクトルとスカラー(スカラーは長さが1のベクトル)と次の演算からなる代数式です.
+ | - | * | / | ^ | % |
%
は剰余演算子で,カンマ演算子には2つの意味があります:
利用者が定義する関数の引数リストに現われた場合には,引数を区切る働きをします.
それ以外は,項 x , y は x + j(y)
を意味します.
論理演算子 & (論理積), | (論理和), ! (否定)と,比較演算子 <, >, >=, <=, =, <> (等しくない)もあります. 代数式で使用した場合,Cと同じように働いて,0または1という値を生成します. 比較演算子には次の別名があります.
gt | > |
lt | < |
ge | >= |
le | <= |
ne | <> |
eq | = |
and | & |
or | | |
not | ! |
次の関数を使えます.
mag(vector) | ベクトルの振幅 |
ph(vector) | ベクトルの位相 |
j(vector) | ベクトルを i ( )倍する |
real(vector) | ベクトルの実部 |
imag(vector) | ベクトルの虚部 |
db(vector) |
20 log10( |
log(vector) | ベクトルの常用対数(底が 10) |
ln(vector) | ベクトルの自然対数(底が e ) |
exp(vector) | ベクトルの指数 |
abs(vector) | ベクトルの絶対値 |
sqrt(vector) | ベクトルの平方根 |
sin(vector) | ベクトルの正弦 |
cos(vector) | ベクトルの余弦 |
tan(vector) | ベクトルの正接 |
atan(vector) | ベクトルの逆正接 |
norm(vector) | ベクトルを1に正規化したもの(すなわち最大の要素の大きさを1とする) |
rnd(vector) | 各要素が,0から各要素の絶対値の間の整数乱数であるベクトル |
mean(vector) | ベクトルの要素の平均値からなるスカラー(長さが1のベクトル) |
vector(number) | 要素が 0, 1, ..., - 1 の長さが number のベクトル. number がベクトルの場合,最初の要素が使われ,整数でない場合は大きさの切り捨てが使われます. |
length(vector) | ベクトルの長さ |
interpolate(plot.vector) | 現在のグラフのスケールに合わせて,指定されたベクトルを補間したもの. この関数は,polydegree により多項式補間の次数を決定します. |
deriv(vector) | 与えられたベクトルの微分値を計算します. 多項式により補間した値を数値微分したもので,満足の行く結果が得られないことがあります(特に微分を繰り返した場合). この実装では,ベクトルのスケールの実部に対してのみ微分を計算します. |
vector は,すでに定義されたベクトルの名前または浮動小数点数(スカラー)です.
number は,14.6Meg
, -1.231e-4
などのSpiceが受け付ける任意の書式で指定します.
科学記法または MEG, G などの省略記法のいずれも使えますが,両方を指定してはいけません.
Spiceと同様に,数値の後ろにアルファベットを続けても構いません.
expr[num] という記法は,expr の num 番目の要素を意味します. 多次元のベクトルでは,1次元減ったベクトルが返されます. 多次元のベクトルでは,expr[m][n] という記法は,m 番目のサブベクトルの n 番目の要素を返します. ベクトルのある範囲を取り出すには,expr[lower, upper] という形式を使います.
「現在のプロット」(後述の setplot コマンド(5.3.41節)を参照)ではないプロットの中のベクトルを参照するには,plotname.vecname という記法を使います.
プロット名またはベクトル名として,ワイルドカード all を使えます. プロット名が all の場合,すべてのプロットの一致するベクトルが指定され,ベクトル名が all の場合,指定されたプロットのすべてのベクトルが参照されます. ワイルドカードを含む式に2項の演算を使うことはできません. 例えば,all + all が何を表わすのかは明らかでないからです. 式の例は,
cos(TIME) + db(v(3)) sin(cos(log([1 2 3 4 5 6 7 8 9 10]))) TIME * rnd(v(9)) - 15 * cos(vin#branch) ^ [7.9e5 8] not ((ac3.FREQ[32] & tran1.TIME[10]) gt 3)
Spiceのベクトルの名前は,@name[param] という名前でも構いません. ここで,name は素子の実体またはモデルの名前です. これは,素子あるいはモデルの param パラメータの値を表わします. どのパラメータが使えるかについての詳細は,付録Bを参照のこと. 値は長さが1のベクトルです. この機能は show コマンドでも使用でき,便利なようにコマンドスクリプトの変数でも使用できます.
Nutmegには定義済みの定数がいくつかあります.
pi | ( 3.14159... ) |
e | 自然対数の底( 2.71828... ) |
c | 光速(299,792,500m /sec) |
i | -1 の平方根 |
kelvin | 絶対0度(-273.15 o C) |
echarge | 電子の電荷( 1.6021918 x 10-19 C) |
boltz | Boltzman定数( 1.3806226 x 10-23 ) |
planck | Planck定数( h = 6.626200 x 10-34 ) |
これらはすべてMKS単位系です. これらの名前と衝突する変数名を使った場合は,変数が優先します.
コマンドとして文字がタイプされ,その名前の組み込みコマンドが存在しない場合,ファイルを見つけるために sourcepath にリストされているディレクトリを順に探します. ファイルが見つかると,それはコマンドファイルとして(あたかも source されたように)読み込まれます. ファイルが読み込まれる前に,コマンド行のファイル名に続くワードの数とワードのリストが,変数 argc と argv に設定されます. ファイルが済んだら,これらの変数はなくなります. コマンドファイルが他のコマンドファイルを呼び出すときには,argv と argc は変更されてしまうので,保存しておかなければなりません. また,局所変数がないため,コマンドファイルは再入可能ではありません. (もちろん,明示的にスタックを操作することもできますが...) このようにして,シェルスクリプトに似たNutmegとSpice3用のスクリプトを書くことができます.
スクリプトがSpice3でうまく動作するためには,スクリプトを空行(捨てられてしまうので他の内容でも構いません)で始め,その後に.control が続かなければなりません. これは source コマンドが回路の入力とコマンドファイルの実行の両方に用いられていることから生じる不幸な結果です. また,この機能により,回路ファイルの名前をコマンドとして単にタイプすれば,自動的に実行されます. 回路の中で指定されている解析を行なわずに,コマンドは即座に実行されます(スクリプトが実行される前に解析を行いたい場合には,スクリプトに run コマンドを入れておきます).
さまざまなコマンドスクリプトが /usr/local/lib/spice/scripts (またはあなたのマシンの任意のパス)にインストールされており,省略時の sourcepath は,このディレクトリを含んでいます. したがって,これらのコマンドファイルを(ほとんど)組み込みコマンドのように使えます.
ac(
DEC| OCT| LIN) N Fstart Fstop
交流解析を行います. 詳しくは,このマニュアルの4.3.1節を参照のこと.
alias[
word][
text ...]
word を text の別名にします. Cシェルの別名のように,ヒストリ置換を使うこともできます.
alter device value[
alter device parameter value
parameter value]
Alter は,素子の値,または素子やモデルの指定されたパラメータを変更します. 最初の形式は,1つの主要な値しかない素子(抵抗,コンデンサなど)で使います. 2番目の形式は,より複雑な素子(BJTなど)に使います. 名前に``#''が含まれている場合,2番目の形式でモデルのパラメータを変更できます.
ベクトルを値として指定するには, ベクトルを``[''で始め,ベクトルの値を続け,``]''で終えます. 各値と``['', ``]''の間には,空白を入れて下さい.
asciiplot plotargs
ベクトルのラインプリンタグラフを作成します. グラフは標準出力に出力されます. ファイルに出力するには,asciiplot args ... > file を使います. set のオプション width, height, nobreak により,グラフの幅と高さと,改ページをするかどうかが決まります. asciiplot はx軸に単純な線形補間を使用しているので,x軸が単調増加でないもの(たとえば sin(TIME))のasciiグラフを作成しようとすると,問題が生じることがあります.
aspice input-file[
output-file]
Spice3を動作させ,終了したら結果のデータを読み込みます. 生データは,一時ファイルに残っています. output-file が指定されている場合,診断出力はそのファイルに出力され,そうでない場合は捨てられます.
bug
バグレポートを送ります. 問題の要約と,動作させているOSの名前とバージョン番号と,Spiceのバージョンと,当該の入力ファイルを送って下さい. (GUBADDR を定義していると,メールはそこに送られます.)
cd[
directory]
現在の作業ディレクトリを directory に変更します. 指定がなければ,利用者のホームディレクトリに変更します.
destroy[
plotnames | all]
指定されたシミュレーションのデータを保持しているメモリーを解放します.
dc Source-Name Vstart Vstop Vincr[
Source2 Vstart2 Vstop2 Vincr2]
直流伝達特性分析を行います. 詳細については,このマニュアルの4.3.2節を参照のこと.
define function(arg1, arg2, ...) expression
名前が function で,引数が arg1, arg2, ...の関数を expression で定義します. 式の中で引数を使えます. 後に関数が使われるときに,仮引数は与えられた引数で置き換えられて解釈されます. expression がない場合,function の定義が表示され,define に引数がない場合は,現在有効なすべての関数定義が表示されます.
次の関数は有用です.
define max(x,y) (x > y) * x + (x <= y) * y define min(x,y) (x < y) * x + (x >= y) * y
delete[
debug-number ...]
指定されたブレークポイントやトレースを削除します. debug-number は status コマンドで示されたものです(status > file とした場合,debug-number は表示されません).
diff plot1 plot2[
vec ...]
指定されたプロットのすべてのベクトルまたは指定されたベクトルを比較します.
2つのプロットの中に異なったベクトルがある,またはベクトルの値に明らかに異なっていると,その差異が報告されます.
明らかな差異を決定するのに,変数 diff_abstol
, diff_reltol
, diff_vntol
が使われます.
display[
varname ...]
現在定義されているベクトルまたは指定されたベクトルの要約を表示します.
変数 nosort が設定されていなければ,ベクトルは名前順に並べられます.
表示される情報は,ベクトルの名前,長さ,型,実数か複素数か,です.
さらに,一つのベクトルには [scale] というラベルが付くこともあります.
vs 引数なしで plot のようなコマンドが与えられたとき,scale がx軸として使われます.
scale は,生ファイルや新しいプロットの中で,常に最初のベクトルになります.
scale を未定義にする(すなわち let TIME=[]
)と,残りのベクトルの一つが新しいスケールになります(どれになるかは不定です).
echo[
text ...]
与えられた文章を画面に表示します.
edit[
file]
現在のSpice3入力ファイルをファイルに出力し,そのファイルに対してエディタを呼び出して,利用者がそれを変更し,ファイルを読み戻して現在のファイルと置き換えます. ファイル名が指定されている場合,そのファイルを編集して読み込み,その回路を現在の回路とします.
fourier fundamental_frequency[
value ...]
指定された各値について,基本波の第10高調波まで(変数 nfreqs が設定されている場合はそこまで,5.5参照)のフーリエ解析を行います. 出力は,.FOUR 行と同様です. value は任意の有効な式です. value は固定の間隔の,変数 fourgridsize で指定された個数のグリッド(指定されていない場合は200)に補間されます. 補間は,変数 polydegree が設定されていればその次元で,設定されていなければ1次で行われます. polydegree が0の場合,補間は行われません. しかし,時間軸が単調増加でない場合,このようにすると誤った結果が得られます.
hardcopy file plotargs
plot と同様ですが,グラフを含んだ file というファイルを作成します. このファイルは plot(5) 形式のイメージで,plot(1) プログラム,または lpr に -g フラグを付けることにより印刷されます.
help[
all][
command ...]
ヘルプを表示します. 引数 all が指定された場合,入力可能なすべてに関する短い説明が表示されます. commands が指定された場合,そのコマンドの説明が表示されます. それ以外の場合は,主要なコマンドのみが表示されます.
history[
number]
ヒストリ,すなわちキーボードから入力された最新の number 個のコマンドを表示します. Spice3バージョン3a7とそれ以前のバージョンでは,すべてのコマンド(ファイルから読んだものを含めて)が保存されます.
iplot[
node ...]
Spice3のシミュレーション実行中に,node の値をグラフ化します. iplot コマンドは,過渡解析シミュレーションで問題を起こしている点を見つけるのに使えます.
jobs
現在実行中の非同期のSpice3ジョブについて報告します. Nutmegは,コマンドを実行するたびにジョブが完了したかどうか調べます. ジョブが終了していると,データが読み込まれ,利用可能になります.
let name = expr
上述した式 expr で指定された値で name という新しいベクトルを作成します. 式が [] (長さが0のベクトル)の場合,ベクトルは未定義になります. 名前に添字を付ける(たとえば name[0])ことにより,ベクトルの個々の要素を変更できます. 引数がない場合は,let は display と同じ動作をします.
linearize vec ...
現在のプロットのすべてのベクトル,または引数で指定されたベクトルのみで新しいプロットを作成します. 新しいベクトルは,現在アクティブな過渡解析の tstep, tstart, tstop の値によって決定される線形の時間スケールで補間されます. 現在読み込まれている入力ファイルに過渡解析が含まれていて(または,最後の reset の後で会話型で tran コマンドを実行していてもよい),現在のプロットが過渡解析のものでなければなりません. このコマンドは,Spice3が過渡解析の結果をSpice2のようには出力しないため必要となります.
listing[
logical][
physical][
deck][
expand]
logical 引数が指定されている場合,リストはすべての継続行が1行につなげられ,physical 引数が指定されている場合,各行はファイルと同じように表示されます. 省略時は,logical です. deck リスティングは physical と同じですが,行番号を付けずに,入力ファイルをそのまま再現します(ただし大文字小文字は保存されません). expand が指定された場合,すべてのサブ回路が展開されて回路が表示されます.
load[
filename ...]
バイナリまたはテキスト形式の生ファイルのデータを,指定された file から読み込みます. 省略時のファイル名は rawspice.raw,または -r フラグが指定されていればその引数のファイル名です.
op
動作点解析を行います. 詳細については,このマニュアルの4.3.5節を参照のこと.
plot exprs[
ylimit ylo yhi][
xlimit xlo xhi][
xindices xilo xihi]
[
xcompress comp][
xdelta xdel][
ydelta ydel][
xlog][
ylog][
loglog]
[
vs xname][
xlabel word][
ylabel word][
title word][
samep]
[
linear]
指定された exprs を画面に(グラフィック端末を使っている場合)グラフで表示します. xlimit と ylimit 引数は,それぞれx軸,y軸の下限と上限を決定します. xindices 引数は,グラフに表示される点の範囲を決定します. xilo 番目から xihi 番目の間の点がグラフに表示されます. xcompress 引数は,comp 点ごとに1点をグラフに表示することを指定します. xdelta または ydelta パラメータは,それぞれx軸,y軸のグリッドの間隔を指定します. パラメータ名は,それぞれ xl, yl, xind, xcomp, xdel, ydel のように省略できます.
xname 引数は,x軸のスケールとして使われる式です. xlog または ylog が指定されていると,それぞれx軸またはy軸が対数軸になります(loglog は両方を指定したのと同じです). xlabel, ylabel 引数は,指定されたラベルをそれぞれx軸,y軸に使います.
samep が指定された場合,(xname 以外の)他のパラメータの値は,コマンド行で再定義されなければ,前の plot, hardcopy, asciiplot コマンドのものが使われます.
title 引数は,グラフの下部のグラフ名の場所に使われます.
linear キーワードは,省略時に対数軸となるグラフ(交流解析の出力など)の軸をリニアにするのに使います.
最後に,キーワード polar は極座標プロットを生成します. スミスチャートを生成するには,キーワード smith を使います. データが変換されることに注意してください. スミスチャートでは,関数 (x - 1)/(x + 1) で変換されたデータを見ることになります. スミスチャートのグリッドがあるがスミス変換を行わない極座標プロットを作成するには,キーワード smithgrid を使います.
col][
line]
expr ...
式 expr で表されたベクトルを表示します. col 引数がある場合,指定されたベクトルを並べて表示します. line が指定された場合,ベクトルは横に表示されます. 指定されたベクトルの長さがすべて1の場合は line が省略時の動作で,それ以外の場合は col が省略時の動作です. オプション width, length, nobreak がこのコマンドに有効です(asciiplot (5.3.4節)を参照のこと). 式が all の場合,すべての利用可能なベクトルが表示されます. したがって,print col all > file は,すべてのベクトルをSpice2形式でファイルに出力します. 変数 noprintscale が真でなければ,scale ベクトル(時間,周波数)が常に最初の列になります.
quit
NutmegまたはSpiceを終了します.
rehash
UNIXコマンド探すときに使われる内部ハッシュ表を再計算して,利用者のコマンドサーチパスにあるすべてのUNIXコマンドをコマンド補完で利用可能にします. これは,unixcom を最初に設定しなければ役に立ちません(5.5節を参照のこと).
reset
(ブレークポイントの後や1つ以上の解析をすでに行った後で)回路の中間データを破棄し,入力ファイルを読み直します. Spice-3eとそれ以前のバージョンでは,これは run コマンドにより自動的に行われます.
reshape vector vector ...
または
reshape vector vector ... [dimension, dimension, ... ]
または
reshape vector vector ... [dimension][dimension] ...
このコマンドは,ベクトルまたはベクトルの集合の次元を変更します. 最後の次元は,指定しなくてもよく,自動的に埋められます. 次元の指定がなければ,最初のベクトルの次元が他のベクトルにコピーされます. `dimensions of x were inconsistent' という形式のエラーメッセージは,無視して構いません.
resume
stop または割り込み(ctrl-C)の後で,シミュレーションを再開します.
rspice input_file
input_file を入力ファイルとして,または引数がない場合は現在の回路を入力として,Spice3をリモートで実行します.
NutmegまたはSpice3はジョブが終了するのを待ち,リモートジョブからの出力を利用者の標準出力へと渡します.
ジョブが終了した時,aspice のようにデータが読み込まれます.
変数 rhost が設定されている場合,Nutmegは省略時のリモートSpice3サーバーマシンではなくそのホストに接続します.
このコマンドは,``rsh''コマンドを使うので,``.rhosts''ファイルやその他の同等な方法で認証される必要があります.
``rsh''は「リモートシェル」プログラムのことなので,あなたのシステムでは``remsh''であるかもしれないことに注意して下さい.
省略時の``rsh''という名前以外を使うには,変数 remote_shell
を設定します.
変数 rprogram が設定されている場合,rspice は,これをリモートシステムで動作させるプログラムへのパス名として使います.
rspice は,``alter''や``altermod''コマンドで変更された要素を認識しません.
run[
rawfile]
入力ファイルで指定されたシミュレーションを実行します. 制御行 .ac, .op, .tran, .dc のいずれかがある場合,それが実行されます. rawfile が指定されていればそこにも出力されますが,会話的に出力を利用することもできます. Spice-3eとそれ以前のバージョンでは,入力ファイルは再度読み込まれ,set や alter コマンドの影響は元に戻ります. この作用はもはやありません.
rusage[
resource ...]
資源の使用量の統計を表示します. 資源の名前が指定された場合,その資源の使用量のみを表示します. ほとんどの資源で,回路が読み込まれている必要があります. 現在,有効な資源は,
save[
all | output ...]
[
.save
all | output ...]
出力の組を保存して,残りは捨てます. save コマンドでノードが指定されている場合,それは run コマンドのあとで現在のプロットに現れているか,Spiceがバッチモードで起動された場合,生ファイルに存在している必要があります. ノードがトレースされているかグラフに描かれている(5.3.52節参照)場合も保存されます. 過去との互換性のため,save がない場合,すべてが保存されます.
キーワード``all''が save に現れた場合,リストされた値に加え,すべての省略時の値(ノードの電圧と電圧源の電流)も保存されます.
sens output_variable(
sens output_variable ac
DEC| OCT| LIN)
N Fstart Fstop
感応度分析を行ないます.
output_variable は,ノードの電圧(たとえば``v(1)''や``v(A,out)''または電圧源を流れる電流(たとえば``i(vtest)
'')のいずれかです.
最初の形式は直流感応度を計算し,2番目の形式は交流感応度を計算します.
出力値の次元は,(入力の変化1パーセントあたりの出力の変化率ではなく)入力の変化1単位あたりの出力の変化です.
set[
word]
[
set
word = value]
...
value があれば,word の値を value に設定します. 任意の word に任意の値(数値または文字列)を設定できます. value が指定されていない場合,値は論理値の「真」になります.
$word と書くことによって word の値をコマンドに入れることができます. 変数に括弧で囲まれた値のリスト(値とは空白で分けなければなりません)を設定した場合,変数の値はそのリストになります.
Nutmegで使われる変数は,5.5節でリストされています.
setcirc[
circuit_name]
現在の回路とは,後述するシミュレーションコマンドで使われる回路です. 回路が source コマンド(5.3.47節参照)で読み込まれると,その回路が現在の回路になります.
setplot[
plotname]
指定された名前のプロットを現在のプロットに設定します.
名前が指定されていない場合は,利用者にメニューで尋ねます.
(プロットには読み込まれた順序で tran1 や op2 といった名前が付けられます.
これらの名前は setplot や display コマンドで示され,
5.3.12節の diff で使われます.)
``New plot
''を選択した場合,現在のプロットは,まったくベクトルが定義されていないものになります.
「プロット」という用語は,Spiceの実行の結果であるベクトルのグループを表わしています. 2つ以上のファイルが読み込まれている場合,または1つのファイルに2つ以上のプロットがある場合, Nutmegはそれらを分離して管理し,現在のプロットのベクトルのみを表示します.
settype type vector ...
指定されたベクトルの型を type に変更します. 型名は,sconvert のマニュアルページで説明されています.
shell[
command]
OSのコマンドインタプリタを呼び出します. 指定された command を実行するか,会話型のシェルを呼び出します.
shift[
varname][
number]
varname がリスト変数の名前なら,number 要素分左にシフトします(すなわち,左側の number 個の要素が取り除かれます). 省略時の varname は argv で,省略時の number は1です.
show devices[
: parameters]
, ...古い形式:
show -v @device[
[name]]
show コマンドは,指定された素子の動作条件を要約した表(Spice2の動作点要約と同じような)を表示します. device が指定されていない場合,標準の素子の組が表示されます. device が1文字の場合,その種類の素子すべてが表示されます. device がサブ回路名(``:''で始まり``:''で終わる)の場合, そのサブ回路の素子のみが表示されます(サブ回路の素子を再帰的に取り出すには,名前を``::''で終えます). 2番目および3番目の形式は,サブ回路から指定された種類の素子を選ぶのに(``letter:subcircuit:''や ``letter:subcircuit::''のように)組み合わせて使えます. 素子の完全な名前を指定すれば,その素子のみを表示します. ``#modelname''または``:subcircuit#modelname''または``letter:subcircuit#modelname''という形式を使うことによって,モデルにより素子を選択することもできます.
parameters が指定されていない場合,標準的なパラメータの組が表示されます. parameters のリストに``+''が含まれている場合,指定されたパラメータに加え,標準のパラメータの組が表示されます.
devices と parameters について,ワード``all''は自明な働きをします. device リストと parameter リストを分ける``:''には,空白が必要です.
(``-v''を伴った)「古い形式」では,データを古いより冗舌なSpice3f以前の形式で表示します.
showmod models[
: parameters]
, ...
showmod コマンドは,show コマンド(上述)と同じように 動作しますが,モデルのパラメータの値を表示します. model の形式は,素子の種類を指定する1文字, ``letter:subckt:'', ``modelname'', ``:subckt:modelname'', ``letter:subcircuit:modelname''です.
source file
Spice3では,Spice3入力ファイル file を読み込みます. ファイルには,.control と .endc で囲んでNutmegとSpice3のコマンドを入れることができます. これらのコマンドは,回路が読み込まれた直後に実行されます. したがって,ac は,対応する .ac 行と同様に動作します. すべての入力ファイルの1行目はタイトル行であるとして,解釈はされませんが回路の名前として保存されます. この規約の例外は,.spiceinit です. したがって,Spice3コマンドスクリプトは空行で始めねばならず,``*#''を続けると,制御行と解釈されます. これにより,以前のバージョンでは無視されるコマンドをSpice3の入力ファイルに埋め込むことができます.
Nutmegでは,ファイル filename からコマンドを読み込みます. 文字 * で始まる行は,コメントとして扱われ,無視されます.
status
現在有効なトレースとブレークポイントをすべて表示します.
step[
number]
1回または number 回繰り返し計算を行ない,停止します.
stop[
after n][
when value cond value]
...
ブレークポイントを設定します. 引数 after n は,繰り返しを n 回行なった後で停止することを意味し, 引数 when value cond value は,最初の value と2番目の value の関係が指定された cond の場合に停止します. cond は,
eq または = | 等しい |
ne または <> | 等しくない |
gt または > | より大きい |
lt または < | より小さい |
ge または >= | 以上 |
le または <= | 以下 |
関係演算子と衝突するので,stop コマンドではIOリダイレクションはできません(いずれにせよ出力は生成されません). value は実行中の回路のノード名または実数です. たとえば stop after 4 when v(1) > 4 when v(2) < 2 のように2つ以上の条件が指定された場合,2つの条件の論理和を意味します.
tf output_node input_source
tf コマンドは,伝達関数解析を行ない,指定された出力ノードと入力電源間の伝達関数(出力/入力),出力抵抗,入力抵抗を返します. この解析は,小信号直流(ゆっくりと変化する)入力を仮定しています.
trace[
node ...]
解析の1ステップごとに,指定されたノードの値が表示されます. 同時に複数のトレースを有効にできます. すべての解析でトレースを使えるわけではありません. トレースを解除するには,delete コマンドを使います.
tran Tstep Tstop[
Tstart[
Tmax]][
UIC]
過渡解析を行ないます. 詳細は,このマニュアルの4.3.9節を参照のこと.
transpose vector vector ...
このコマンドは,多次元のベクトルを転置します. 2つの可変電源による直流伝達特性以外のSpice3のどの解析も,多次元のベクトルを生成しません. 1次元のベクトルを2次元のベクトルにするには,``reshape''コマンドを使います. さらに,標準のスケールはグラフを描くのに不適切になります. 2番目の電源に対応するベクトルの最初の部分のみに対してグラフを描く必要があります. たとえば(MOSトランジスタの伝達特性を生成する回路の例),
spice3 > dc vgg 0 5 1 vdd 0 5 1 spice3 > plot i(vdd) spice3 > reshape all [6,6] spice3 > transpose i(vdd) v(drain) spice3 > plot i(vdd) vs v(drain)[0]
unalias[
word ...]
word に設定されている別名があれば,それを解除します.
undefine function
指定された利用者定義の関数の定義を解除します.
unset[
word ...]
指定された変数(word)の値をクリアします.
version[
version_id]
実行中のNutmegのバージョンを表示します. 引数が指定されている場合,引数が現在のSpiceのバージョンと一致するかどうか調べます. (これはおもに生ファイルの Command: 行で使われます.)
where
過渡解析や動作点解析を行なっているときに,収束しない原因となっている最後のノードまたは素子の名前が記録されます. 回路を調べたり,問題を修正したり,バグレポートを作成したりできるよう,where はこの情報を表示します. このコマンドは,シミュレーション実行中にも,シミュレータが解析を諦めた後でも使うことができます. 過渡解析では,解析の進行を監視するのに iplot コマンドを使うことができます. 解析が急激に遅くなったり止ったりしたときに,(ctrl-Cで)シミュレータに割り込みをかけ,where を発行します. 1つのノードまたは素子のみが表示されますが,問題が2つ以上のノードで起こっていることもあります.
write[
file][
exprs]
指定された式を file に書き出します.
ベクトルは,まずプロットごとにまとめられて書き出されます(すなわち,式のリストに,あるプロットからの3つのベクトルと,別のプロットからの2つのベクトルが含まれている場合,2つのプロットが出力され,最初のプロットには3つのベクトルが,もう一つのプロットには2つのベクトルが入ります). さらに,ベクトルのスケールが指定されていない場合,スケールが自動的に書き出されます.
省略時の形式はテキストですが,set filetype コマンドにより変更できます. 省略時のファイル名は rawspice.raw,またはコマンド行の -r フラグの引数で指定されたものです. 省略時の式は all です.
xgraph file[
exprs][
plot_options]
Spice3/Nutmegの xgraph コマンドは,plot コマンドのようにデータをグラフ化しますが,X11で良く使われているグラフ作成プログラム xgraph を使います.
file が``temp''または``tmp''の場合, グラフを作成している間データを保持するのに一時ファイルが使われます. 利用可能なオプションについては,plot コマンド(5.3.27節)を参照のこと. 極座標およびスミスチャート以外のオプションを利用できます.
while condition
statement
...
end
任意の代数式 condition が真の間,statement を実行します.
repeat[
number]
statement
...
end
statement を number 回実行します. 引数がない場合は,永久に実行します.
dowhile condition
statement
...
end
while と同様ですが,statement が実行された後で condition を調べます.
foreach var value ...
statement
...
end
各 value について1回ずつ,変数 var の値が現在の value の値に設定されて statement が実行されます. (var は $var という記法でアクセスできます--5.6節参照).
if condition
statement
...
else
statement
...
end
condition が0以外の場合,最初の statement の組が実行され,condition が0の場合,2番目の statement の組が実行されます. else と2番目の statement の組は,省略することもできます.
label word
goto word という文が現われたとき,制御がこの点に移されます. それ以外の場合は,なにもしません.
goto word
label word という文がこのブロックの中および外側のブロックにある場合,制御がそこに移ります. ラベルがトップレベルにある場合,goto 文より前になくてはなりません(すなわち,前方への goto は,ブロックの中だけで使えます).
continue
この文を取り囲む while, dowhile, foreach ブロックがある場合,制御は条件のテストまたは(foreach の場合)次の値に移ります. そうでない場合は,エラーとなります.
break
この文を取り囲む while, dowhile, foreach ブロックがある場合,制御はブロックの外側に移ります. そうでない場合は,エラーとなります.
もちろん,制御構造は入れ子にできます. ブロックに入ったときに入力が端末の場合,プロンプトは現在入っているブロックの数に対応した個数の `>' になります. 現在の制御構造は,デバッグ用のコマンド cdump で調べることができます.
``set''コマンドで変数を設定することにより,NutmegとSpice3の動作を変えることができます. 以下で言及する変数に加え,``.OPTIONS''の4.1節で説明したオプションをSpice3の set コマンドで設定して,シミュレータの振る舞いを変えることができます.
set コマンドで変更できるNutmegに有効な変数は,
rsh
'').
Spice3は使うがNutmegは使わない変数がいくつかあります.
入力ファイルにサブ回路がある場合,Spice3はサブ回路の実体を展開します. サブ回路は .subckt と .ends,または変数 substart と subend の任意の値で区切られています. サブ回路の実体は,素子の種類を `x' と指定することにより作成されます. すなわち,素子の行を次のように書いた場合に実体が作成されます.
xname node1 node2 ... subcktnameここでノードは .subckt 行の仮引数を置き換えるノード名です. 仮引数でないすべてのノードとサブ回路内の素子の名前には,実体に指定された名前と `:' が前に付きます. 何重にも入れ子になったサブ回路の場合,ノードや素子の名前は subckt1:subckt2:...:name のようになります. 変数 subinvoke が設定されていると,`x' ではなくそれがサブ回路の実体を指定する文字として使われます.
Nutmegは,メモリを使い果たしそうかときどきチェックし,利用者にそのことを知らせます(これはSpiceのフロントエンドでより有用です).
Cシェル形式の引用 "" および '' と,逆クォート置換を使えます. 単一引用符の中では,置換(ヒストリ置換など)は行なわれません. 二重引用符の中では,複数の単語が1つの単語として扱われ,置換が行なわれます. 逆引用符で囲まれたテキストは,そのテキストをシェルのコマンドとして実行した結果により置き換えられます.
Tenex形式(4.3 Cシェルの `set filec')の,コマンド,ファイル名,キーワードの補完もできます. 行の2文字目以降でEOF (ctrl-D)をタイプすると,コマンドや指定可能な引数が表示されます(ctrl-DだけをタイプするとNutmegを終了します). ESCをタイプすると,Nutmegはすでに利用者がタイプしたもので補完しようとします. すべてのコマンドのリストを見たいときは,空白 ctrl-D とタイプします.
変数の値をコマンドの中で使うには,値を使いたいところで $
varname とします.
特別な変数 $$
と $<
は,それぞれプログラムのプロセスIDと,変数が評価されたときまでに端末から読み込まれた行数を表わします.
変数の名前が $&
word という形式の場合,word はベクトル(5.1節参照)として扱われ,その値はその変数の値からとられます.
$
foo が有効な変数で,型がリストの場合,式 $foo[low-high] は要素の範囲を表わします.
上限の添字または下限の添字のいずれかを指定しないこともでき,$foo[len-0] とすれば逆順のリストを得ることができます.
$?
foo という記法は,変数 foo が定義されている場合1となり,そうでない場合は0となります.
$#
foo は foo がリストならばその要素の数に,数値や文字列の場合1に,論理変数の場合に0となります.
Cシェルのヒストリ置換と同様なヒストリ置換を使えます. 詳細については,Cシェルのマニュアルページを参照のこと.
文字 ~
, {
, }
は,Cシェルでの働きと同じ,すなわちホームディレクトリと選択肢の展開を行ないます.
ワイルドカード文字 *
, ?
, [
, ]
も使えますが,まず noglob を未設定にする必要があります.
こうすると数式を入力するのが困難になるので,ワイルドカードの展開が終わったら,noglob を再設定すべきでしょう.
パターン [^abc]
は,a, b, c以外の文字にマッチします.
IOリダイレクションも可能です.
記号 >, », >&
, >>&
, < は,Cシェルと同じ働きをします.
セミコロンで区切って,複数のコマンドを1行でタイプすることもできます.
標準(通常 ~cad/lib/mfbcap
)以外の mfbcap ファイルを使いたい場合,NutmegまたはSpiceを開始する前に,環境変数 Spice_MFBCAP
を設定する必要があります.
-m オプションや mfbcap 変数はもはや動作しません.
Xを使っている場合,開いているウィンドウの任意の場所にカーソルをおいて 文字をキーボードからタイプすると,その文字はウィンドウのその場所に描かれます. ウィンドウはxpr(1)プログラムでプリンタに送ることができます.
Nutmegは,他のOS同様VAX/VMSで動作させることができます. コマンド補完や *, ?, [, ] の展開,逆クォート置換,シェルコマンドなどのいくつかの機能は動作しません.
システムによっては,表示の途中に -more- というプロンプトが出て,UNIXでやるのと同様に,任意のキーでなくリターンで反応しなければならないこともあります.
ラベル入力機能は,原始的なものです. ラベルを入力するときは,ゆっくりタイプしてください. Nutmegは1秒ごとに入力をチェックしているので,文字が速く到着すると混乱してしまいます.
Xでグラフのウィンドウを作成してから色を再定義して,ウィンドウを再表示すると,正しい色で再表示されません.
次のような別名を定義したとき,
alias pdb plot db( '!:1' - '!:2' )このように,引数リストの置換が起きないように注意深くクォートしなければなりません. 引数全体をクォートすると,正しく動作しません.
利用者定義の関数で,引数を plot.vec 構文の名前の一部としては使えません. たとえば,
define check(v(1)) cos(tran1.v(1))は動作しません.
plot all all としたり,コマンドで1つのグラフにワイルドカードの参照を2回使うと,その結果は予測できません.
asciiplot コマンドは,対数軸や delta キーワードを扱えません.
MFBで認識される端末の名前は,/etc/termcap とは異なる場合があります. 端末タイプを再設定するには,
set term = termnameというコマンドを使います. ここで,termname は mfbcap の中にある名前です.
hardcopy コマンドは,plot(5)形式を理解するプログラムを持っていなければ,plotコマンドのないVMSや他のシステムでは無意味です.
Spice3はSpice2の .plot 行で使われるすべての記法を理解し,vp(1) を ph(v(1)) に翻訳します. しかし,これらの名前の中に空白があると,動作しません. したがって,v(1, 2) や (-.5, .5) は認識されません.
BJTには,3つまたは4つのノードがありますが,これはサブ回路の展開ルーチンがどの名前を変えるのかを決めるのを困難にしています. 4番目のパラメータがモデル名として宣言された場合,3つのノードがあると仮定され,そうでなければそれはノードと解釈されます. これを無効にするには,変数``nobjthack''を設定します. こうすると(少なくともサブ回路の展開の目的に関しては) BJTに必ず4つのノードがあると解釈されます.
@name[param] 記法は,trace, iplot などではまだ動作しません.
(.spiceinit ファイル以外の)コマンドファイルの最初の行は,コメントとしなければなりません. そうしないと,Spiceが空の回路を作ってしまうことがあります.
コマンド行で指定されたファイルは,.spiceinit の前に読み込まれます.
ayumi