Subsections


5 会話型の解釈系

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を実行しているシステム以外にグラフィクスを表示したい場合, DISPLAYmachine:0.0 という形式にします. 詳細については,X Window Systemの適切なドキュメントを参照のこと.

5.0.0.1 コマンドの形式

spice [-n] [-t term] [-r rawfile] [-b] [-i] [inputfile ...]
nutmeg [-] [-n] [-t term] [datafile ...]


オプションは,

-
ファイルが指定されていない場合に省略時のデータファイル(``rawspice.raw'')を読み込まない. Nutmegのみ.
-n (または -N)
起動時に``.spiceinit''ファイルを取り込まない. 通常,SpiceおよびNutmegは,このファイルをカレントディレクトリで探し, 見つからなかったら利用者のホームディレクトリで探します.
-t term (または -T term)
MFB名が term の端末で動作します.
-b (または -B)
バッチモードで動作します. Spice3は標準の入力ファイル(すなわちキーボード)を読むか,指定された入力ファイルを読み,指定された解析を行ないます. 出力は,Spice2のようなラインプリンタによるプロット(asciiプロット)か,Spiceの生ファイルです. 詳細については,第4節および第4.4節を参照のこと. 入力ソースファイルが端末ではない(すなわちIOリダイレクション``<''が使われている)場合,Spice3は自動的にバッチモードになります(-i で会話型にできます). このオプションはSpice3のみ有効です.
-s (または -S)
サーバーモードで動作します. これはバッチモードに似ていますが,一時的な生ファイルが使われ,シミュレーションが終わると1個の``@''のみの行に続いて標準出力に書き出されます. このモードはSpiceデーモンによって使われます. このオプションはSpice3のみ有効です.
-i (または -I)
会話型モードで動作します. これは,標準入力が端末ではないが会話型モードが望ましいときに有用です. 標準入力が端末ではない場合,コマンド補完は利用できません. このオプションはSpice3のみ有効です.
-r rawfile (または -P rawfile)
シミュレーションの結果を格納するファイルとして rawfile を使います. このオプションはSpice3のみ有効です.

これ以降のSpiceへの引数は,Spice3の入力ファイルであると解釈され,そのファイルが読み込まれ,(メモリ中に)保存されます(バッチモードで動作している場合は,即座に実行されます). Spice3は,ほとんどのSpice2の入力ファイルを受け付け,.plot, .four, .print 行で指定されたasciiプロットを出力し,フーリエ解析を行ない,ノードの表示を行ないます. .width 行で out パラメータが指定された場合,その効果は set width = ... と同じです. しかし,Spice3のasciiプロットは複数の範囲を扱えないので,.plot 行のベクトルの範囲が異なっていると,Spice2で得られるよりも情報がかなり減ってしまいます. また,Spice3の出力は,上述の行で要求されたデータのみ表示されるという点で,Spice2ほど冗舌ではありません.

Nutmegでは,これ以降の引数は,Nutmegに読み込まれるバイナリまたはテキストフォーマット(convert(1)を参照のこと)のデータファイルとして解釈されます. ファイルがバイナリ形式の場合,一部のみが完了していることもあります(シミュレーションが終了する前にSpice2の出力を確認する際に有用です). 1つのファイルに,さまざまな解析のデータセットが任意の数含まれていても構いません.


5.1 式,関数,定数

SpiceおよびNutmegの時刻,電圧などのデータの形式は,ベクトルです. 各ベクトルには型があり,ベクトルの型に応じた演算を行なったり,代数的に結合したりできます. ベクトルは通常データファイルを読み込んだとき(後述の load コマンド(5.3.25節)を参照のこと)に作成されます. let コマンドでも作成できます.

式は,ベクトルとスカラー(スカラーは長さが1のベクトル)と次の演算からなる代数式です.

+ - * / ^ %
% は剰余演算子で,カンマ演算子には2つの意味があります: 利用者が定義する関数の引数リストに現われた場合には,引数を区切る働きをします. それ以外は,項 x , yx + j(y) を意味します.

論理演算子 & (論理積), | (論理和), ! (否定)と,比較演算子 <, >, >=, <=, =, <> (等しくない)もあります. 代数式で使用した場合,Cと同じように働いて,0または1という値を生成します. 比較演算子には次の別名があります.

gt >
lt <
ge >=
le <=
ne <>
eq =
and &
or |
not !
これらは,<> がIOリダイレクションと混同される(これはほとんど常にそうですが)ときに有用です.

次の関数を使えます.

mag(vector) ベクトルの振幅
ph(vector) ベクトルの位相
j(vector) ベクトルを i ($ \sqrt{{-1}}$ )倍する
real(vector) ベクトルの実部
imag(vector) ベクトルの虚部
db(vector) 20 log10(mag($ \tt\it {vector}$))
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, ..., $ \tt\it {number}$ - 1 の長さが number のベクトル. number がベクトルの場合,最初の要素が使われ,整数でない場合は大きさの切り捨てが使われます.
length(vector) ベクトルの長さ
interpolate(plot.vector) 現在のグラフのスケールに合わせて,指定されたベクトルを補間したもの. この関数は,polydegree により多項式補間の次数を決定します.
deriv(vector) 与えられたベクトルの微分値を計算します. 多項式により補間した値を数値微分したもので,満足の行く結果が得られないことがあります(特に微分を繰り返した場合). この実装では,ベクトルのスケールの実部に対してのみ微分を計算します.

vector は,すでに定義されたベクトルの名前または浮動小数点数(スカラー)です. number は,14.6Meg, -1.231e-4 などのSpiceが受け付ける任意の書式で指定します. 科学記法または MEG, G などの省略記法のいずれも使えますが,両方を指定してはいけません. Spiceと同様に,数値の後ろにアルファベットを続けても構いません.

expr[num] という記法は,exprnum 番目の要素を意味します. 多次元のベクトルでは,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 $ \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単位系です. これらの名前と衝突する変数名を使った場合は,変数が優先します.


5.2 コマンドの解釈

コマンドとして文字がタイプされ,その名前の組み込みコマンドが存在しない場合,ファイルを見つけるために sourcepath にリストされているディレクトリを順に探します. ファイルが見つかると,それはコマンドファイルとして(あたかも source されたように)読み込まれます. ファイルが読み込まれる前に,コマンド行のファイル名に続くワードの数とワードのリストが,変数 argcargv に設定されます. ファイルが済んだら,これらの変数はなくなります. コマンドファイルが他のコマンドファイルを呼び出すときには,argvargc は変更されてしまうので,保存しておかなければなりません. また,局所変数がないため,コマンドファイルは再入可能ではありません. (もちろん,明示的にスタックを操作することもできますが...) このようにして,シェルスクリプトに似たNutmegとSpice3用のスクリプトを書くことができます.

スクリプトがSpice3でうまく動作するためには,スクリプトを空行(捨てられてしまうので他の内容でも構いません)で始め,その後に.control が続かなければなりません. これは source コマンドが回路の入力とコマンドファイルの実行の両方に用いられていることから生じる不幸な結果です. また,この機能により,回路ファイルの名前をコマンドとして単にタイプすれば,自動的に実行されます. 回路の中で指定されている解析を行なわずに,コマンドは即座に実行されます(スクリプトが実行される前に解析を行いたい場合には,スクリプトに run コマンドを入れておきます).

さまざまなコマンドスクリプトが /usr/local/lib/spice/scripts (またはあなたのマシンの任意のパス)にインストールされており,省略時の sourcepath は,このディレクトリを含んでいます. したがって,これらのコマンドファイルを(ほとんど)組み込みコマンドのように使えます.


5.3 コマンド


5.3.1 Ac*: 交流小信号周波数応答解析を行う

一般形:

ac
(
DEC| OCT| LIN
) N Fstart Fstop

交流解析を行います. 詳しくは,このマニュアルの4.3.1節を参照のこと.


5.3.2 Alias: コマンドの別名を作成する

一般形:

alias
[
word
][
text ...
]

wordtext の別名にします. Cシェルの別名のように,ヒストリ置換を使うこともできます.


5.3.3 Alter*: 素子やモデルのパラメータを変更する

一般形:

alter device value
alter device parameter value
[
parameter value
]

Alter は,素子の値,または素子やモデルの指定されたパラメータを変更します. 最初の形式は,1つの主要な値しかない素子(抵抗,コンデンサなど)で使います. 2番目の形式は,より複雑な素子(BJTなど)に使います. 名前に``#''が含まれている場合,2番目の形式でモデルのパラメータを変更できます.

ベクトルを値として指定するには, ベクトルを``[''で始め,ベクトルの値を続け,``]''で終えます. 各値と``['', ``]''の間には,空白を入れて下さい.


5.3.4 Asciiplot: 旧式の文字プロットで値をグラフにする

一般形:

asciiplot plotargs

ベクトルのラインプリンタグラフを作成します. グラフは標準出力に出力されます. ファイルに出力するには,asciiplot args ... > file を使います. set のオプション width, height, nobreak により,グラフの幅と高さと,改ページをするかどうかが決まります. asciiplot はx軸に単純な線形補間を使用しているので,x軸が単調増加でないもの(たとえば sin(TIME))のasciiグラフを作成しようとすると,問題が生じることがあります.


5.3.5 Aspice: 非同期にSpiceを実行する

一般形:

aspice input-file
[
output-file
]

Spice3を動作させ,終了したら結果のデータを読み込みます. 生データは,一時ファイルに残っています. output-file が指定されている場合,診断出力はそのファイルに出力され,そうでない場合は捨てられます.


5.3.6 Bug: バグレポートをメールする

一般形:

bug

バグレポートを送ります. 問題の要約と,動作させているOSの名前とバージョン番号と,Spiceのバージョンと,当該の入力ファイルを送って下さい. (GUBADDR を定義していると,メールはそこに送られます.)


5.3.7 Cd: ディレクトリを変更する

一般形:

cd
[
directory
]

現在の作業ディレクトリを directory に変更します. 指定がなければ,利用者のホームディレクトリに変更します.


5.3.8 Destroy: データセットを削除する

一般形:

destroy
[
plotnames | all
]

指定されたシミュレーションのデータを保持しているメモリーを解放します.


5.3.9 Dc*: 直流掃引解析を行う

一般形:

dc Source-Name Vstart Vstop Vincr
[
Source2 Vstart2 Vstop2 Vincr2
]

直流伝達特性分析を行います. 詳細については,このマニュアルの4.3.2節を参照のこと.


5.3.10 Define: 関数を定義する

一般形:

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


5.3.11 Delete*: トレースやブレークポイントを解除する

一般形:

delete
[
debug-number ...
]

指定されたブレークポイントやトレースを削除します. debug-numberstatus コマンドで示されたものです(status > file とした場合,debug-number は表示されません).


5.3.12 Diff: ベクトルを比較する

一般形:

diff plot1 plot2
[
vec ...
]

指定されたプロットのすべてのベクトルまたは指定されたベクトルを比較します. 2つのプロットの中に異なったベクトルがある,またはベクトルの値に明らかに異なっていると,その差異が報告されます. 明らかな差異を決定するのに,変数 diff_abstol, diff_reltol, diff_vntol が使われます.


5.3.13 Display: 既知のベクトルとその型を表示する

一般形:

display
[
varname ...
]

現在定義されているベクトルまたは指定されたベクトルの要約を表示します. 変数 nosort が設定されていなければ,ベクトルは名前順に並べられます. 表示される情報は,ベクトルの名前,長さ,型,実数か複素数か,です. さらに,一つのベクトルには [scale] というラベルが付くこともあります. vs 引数なしで plot のようなコマンドが与えられたとき,scale がx軸として使われます. scale は,生ファイルや新しいプロットの中で,常に最初のベクトルになります. scale を未定義にする(すなわち let TIME=[])と,残りのベクトルの一つが新しいスケールになります(どれになるかは不定です).


5.3.14 Echo: 文章を表示する

一般形:

echo
[
text ...
]

与えられた文章を画面に表示します.


5.3.15 Edit*: 現在の回路を編集する

一般形:

edit
[
file
]

現在のSpice3入力ファイルをファイルに出力し,そのファイルに対してエディタを呼び出して,利用者がそれを変更し,ファイルを読み戻して現在のファイルと置き換えます. ファイル名が指定されている場合,そのファイルを編集して読み込み,その回路を現在の回路とします.


5.3.16 Fourier: フーリエ変換を行う

一般形:

fourier fundamental_frequency
[
value ...
]

指定された各値について,基本波の第10高調波まで(変数 nfreqs が設定されている場合はそこまで,5.5参照)のフーリエ解析を行います. 出力は,.FOUR 行と同様です. value は任意の有効な式です. value は固定の間隔の,変数 fourgridsize で指定された個数のグリッド(指定されていない場合は200)に補間されます. 補間は,変数 polydegree が設定されていればその次元で,設定されていなければ1次で行われます. polydegree が0の場合,補間は行われません. しかし,時間軸が単調増加でない場合,このようにすると誤った結果が得られます.


5.3.17 Hardcopy: グラフを印刷用のファイルに保存する

一般形:

hardcopy file plotargs

plot と同様ですが,グラフを含んだ file というファイルを作成します. このファイルは plot(5) 形式のイメージで,plot(1) プログラム,または lpr-g フラグを付けることにより印刷されます.


5.3.18 Help: Spice3コマンドの要約を表示する

一般形:

help
[
all
][
command ...
]

ヘルプを表示します. 引数 all が指定された場合,入力可能なすべてに関する短い説明が表示されます. commands が指定された場合,そのコマンドの説明が表示されます. それ以外の場合は,主要なコマンドのみが表示されます.


5.3.19 History: これまで入力されたコマンドを表示する

一般形:

history
[
number
]

ヒストリ,すなわちキーボードから入力された最新の number 個のコマンドを表示します. Spice3バージョン3a7とそれ以前のバージョンでは,すべてのコマンド(ファイルから読んだものを含めて)が保存されます.


5.3.20 Iplot*: シミュレーション実行中にグラフを作成する

一般形:

iplot
[
node ...
]

Spice3のシミュレーション実行中に,node の値をグラフ化します. iplot コマンドは,過渡解析シミュレーションで問題を起こしている点を見つけるのに使えます.


5.3.21 Jobs: 計算中の非同期のSpiceジョブを表示する

一般形:

jobs

現在実行中の非同期のSpice3ジョブについて報告します. Nutmegは,コマンドを実行するたびにジョブが完了したかどうか調べます. ジョブが終了していると,データが読み込まれ,利用可能になります.


5.3.22 Let: 値をベクトルに代入する

一般形:

let name = expr

上述した式 expr で指定された値で name という新しいベクトルを作成します. 式が [] (長さが0のベクトル)の場合,ベクトルは未定義になります. 名前に添字を付ける(たとえば name[0])ことにより,ベクトルの個々の要素を変更できます. 引数がない場合は,letdisplay と同じ動作をします.


5.3.23 Linearize*: 線形なスケールに補間する

一般形:

linearize vec ...

現在のプロットのすべてのベクトル,または引数で指定されたベクトルのみで新しいプロットを作成します. 新しいベクトルは,現在アクティブな過渡解析の tstep, tstart, tstop の値によって決定される線形の時間スケールで補間されます. 現在読み込まれている入力ファイルに過渡解析が含まれていて(または,最後の reset の後で会話型で tran コマンドを実行していてもよい),現在のプロットが過渡解析のものでなければなりません. このコマンドは,Spice3が過渡解析の結果をSpice2のようには出力しないため必要となります.


5.3.24 Listing*: 現在の回路のリストを表示する

一般形:

listing
[
logical
][
physical
][
deck
][
expand
]

logical 引数が指定されている場合,リストはすべての継続行が1行につなげられ,physical 引数が指定されている場合,各行はファイルと同じように表示されます. 省略時は,logical です. deck リスティングは physical と同じですが,行番号を付けずに,入力ファイルをそのまま再現します(ただし大文字小文字は保存されません). expand が指定された場合,すべてのサブ回路が展開されて回路が表示されます.


5.3.25 Load: 生ファイルのデータを読み込む

一般形:

load
[
filename ...
]

バイナリまたはテキスト形式の生ファイルのデータを,指定された file から読み込みます. 省略時のファイル名は rawspice.raw,または -r フラグが指定されていればその引数のファイル名です.


5.3.26 Op*: 動作点解析を行う

一般形:

op

動作点解析を行います. 詳細については,このマニュアルの4.3.5節を参照のこと.


5.3.27 Plot: 値をグラフで表示する

一般形:

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 を画面に(グラフィック端末を使っている場合)グラフで表示します. xlimitylimit 引数は,それぞれ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 を使います.


5.3.28 Print: 値を表示する

一般形:

print
[
col
][
line
]
expr ...

expr で表されたベクトルを表示します. col 引数がある場合,指定されたベクトルを並べて表示します. line が指定された場合,ベクトルは横に表示されます. 指定されたベクトルの長さがすべて1の場合は line が省略時の動作で,それ以外の場合は col が省略時の動作です. オプション width, length, nobreak がこのコマンドに有効です(asciiplot (5.3.4節)を参照のこと). 式が all の場合,すべての利用可能なベクトルが表示されます. したがって,print col all > file は,すべてのベクトルをSpice2形式でファイルに出力します. 変数 noprintscale が真でなければ,scale ベクトル(時間,周波数)が常に最初の列になります.


5.3.29 Quit: Spice3またはNutmegを終了する

一般形:

quit

NutmegまたはSpiceを終了します.


5.3.30 Rehash: 内部ハッシュ表を初期化する

一般形:

rehash

UNIXコマンド探すときに使われる内部ハッシュ表を再計算して,利用者のコマンドサーチパスにあるすべてのUNIXコマンドをコマンド補完で利用可能にします. これは,unixcom を最初に設定しなければ役に立ちません(5.5節を参照のこと).


5.3.31 Reset*: 解析を初期化する

一般形:

reset

(ブレークポイントの後や1つ以上の解析をすでに行った後で)回路の中間データを破棄し,入力ファイルを読み直します. Spice-3eとそれ以前のバージョンでは,これは run コマンドにより自動的に行われます.


5.3.32 Reshape: ベクトルの次元を変更する

一般形:

reshape vector vector ...
または
reshape vector vector ... [dimension, dimension, ... ]
または
reshape vector vector ... [dimension][dimension] ...

このコマンドは,ベクトルまたはベクトルの集合の次元を変更します. 最後の次元は,指定しなくてもよく,自動的に埋められます. 次元の指定がなければ,最初のベクトルの次元が他のベクトルにコピーされます. `dimensions of x were inconsistent' という形式のエラーメッセージは,無視して構いません.


5.3.33 Resume*: stop の後でシミュレーションを再開する

一般形:

resume

stop または割り込み(ctrl-C)の後で,シミュレーションを再開します.


5.3.34 Rspice: リモートでSpiceを実行する

一般形:

rspice input_file

input_file を入力ファイルとして,または引数がない場合は現在の回路を入力として,Spice3をリモートで実行します. NutmegまたはSpice3はジョブが終了するのを待ち,リモートジョブからの出力を利用者の標準出力へと渡します. ジョブが終了した時,aspice のようにデータが読み込まれます. 変数 rhost が設定されている場合,Nutmegは省略時のリモートSpice3サーバーマシンではなくそのホストに接続します. このコマンドは,``rsh''コマンドを使うので,``.rhosts''ファイルやその他の同等な方法で認証される必要があります. ``rsh''は「リモートシェル」プログラムのことなので,あなたのシステムでは``remsh''であるかもしれないことに注意して下さい. 省略時の``rsh''という名前以外を使うには,変数 remote_shell を設定します. 変数 rprogram が設定されている場合,rspice は,これをリモートシステムで動作させるプログラムへのパス名として使います.

rspice は,``alter''や``altermod''コマンドで変更された要素を認識しません.


5.3.35 Run*: 入力ファイルの解析を実行する

一般形:

run
[
rawfile
]

入力ファイルで指定されたシミュレーションを実行します. 制御行 .ac, .op, .tran, .dc のいずれかがある場合,それが実行されます. rawfile が指定されていればそこにも出力されますが,会話的に出力を利用することもできます. Spice-3eとそれ以前のバージョンでは,入力ファイルは再度読み込まれ,setalter コマンドの影響は元に戻ります. この作用はもはやありません.


5.3.36 Rusage: 資源の使用量

一般形:

rusage
[
resource ...
]

資源の使用量の統計を表示します. 資源の名前が指定された場合,その資源の使用量のみを表示します. ほとんどの資源で,回路が読み込まれている必要があります. 現在,有効な資源は,

elapsed
最後の rusage elapsed の呼び出しからの経過時間
faults
ページフォルトとコンテキストスイッチの数(BSDのみ)
space
使用しているデータスペース
time
これまでに使用したCPU時間
temp
動作温度
tnom
素子のパラメータを測定した温度
equations
回路の方程式の数
time
総解析時間
totiter
総繰り返し回数
accept
受け入れられた時点の数
rejected
拒絶された時点の数
loadtime
回路行列とRHSを読み込むのにかかった時間
reordertime
行列並べ替えの時間
lutime
L-U分解の時間
solvetime
逆行列計算時間
trantime
過渡解析の時間
tranpoints
過渡解析の時点の数
traniter
過渡解析の繰り返しの数
trancuriter
最後の時点の過渡解析の繰り返しの数*
tranlutime
過渡解析のL-U分解の時間
transolvetime
過渡解析の逆行列計算時間
everything
上記のすべて
* まちがって「1点あたりの過渡解析の繰り返し」と表示されています.


5.3.37 Save*: 出力の組を保存する

一般形:

save
[
all | output ...
]

.save
[
all | output ...
]

出力の組を保存して,残りは捨てます. save コマンドでノードが指定されている場合,それは run コマンドのあとで現在のプロットに現れているか,Spiceがバッチモードで起動された場合,生ファイルに存在している必要があります. ノードがトレースされているかグラフに描かれている(5.3.52節参照)場合も保存されます. 過去との互換性のため,save がない場合,すべてが保存されます.

キーワード``all''が save に現れた場合,リストされた値に加え,すべての省略時の値(ノードの電圧と電圧源の電流)も保存されます.


5.3.38 Sens*: 感応度分析を行なう

一般形:

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単位あたりの出力の変化です.


5.3.39 Set: 変数の値を設定する

一般形:

set
[
word
]

set
[
word = value
]
...

value があれば,word の値を value に設定します. 任意の word に任意の値(数値または文字列)を設定できます. value が指定されていない場合,値は論理値の「真」になります.

$word と書くことによって word の値をコマンドに入れることができます. 変数に括弧で囲まれた値のリスト(値とは空白で分けなければなりません)を設定した場合,変数の値はそのリストになります.

Nutmegで使われる変数は,5.5節でリストされています.


5.3.40 Setcirc*: 現在の回路を変更する

一般形:

setcirc
[
circuit_name
]

現在の回路とは,後述するシミュレーションコマンドで使われる回路です. 回路が source コマンド(5.3.47節参照)で読み込まれると,その回路が現在の回路になります.


5.3.41 Setplot: ベクトルの現在の組を切り替える

一般形:

setplot
[
plotname
]

指定された名前のプロットを現在のプロットに設定します. 名前が指定されていない場合は,利用者にメニューで尋ねます. (プロットには読み込まれた順序で tran1op2 といった名前が付けられます. これらの名前は setplotdisplay コマンドで示され, 5.3.12節の diff で使われます.) ``New plot''を選択した場合,現在のプロットは,まったくベクトルが定義されていないものになります.

「プロット」という用語は,Spiceの実行の結果であるベクトルのグループを表わしています. 2つ以上のファイルが読み込まれている場合,または1つのファイルに2つ以上のプロットがある場合, Nutmegはそれらを分離して管理し,現在のプロットのベクトルのみを表示します.


5.3.42 Settype: ベクトルの型を設定する

一般形:

settype type vector ...

指定されたベクトルの型を type に変更します. 型名は,sconvert のマニュアルページで説明されています.


5.3.43 Shell: コマンドインタプリタを呼び出す

一般形:

shell
[
command
]

OSのコマンドインタプリタを呼び出します. 指定された command を実行するか,会話型のシェルを呼び出します.


5.3.44 Shift: リスト変数を変更する

一般形:

shift
[
varname
][
number
]

varname がリスト変数の名前なら,number 要素分左にシフトします(すなわち,左側の number 個の要素が取り除かれます). 省略時の varnameargv で,省略時の number は1です.


5.3.45 Show*: 素子の状態をリストする

一般形:

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 のリストに``+''が含まれている場合,指定されたパラメータに加え,標準のパラメータの組が表示されます.

devicesparameters について,ワード``all''は自明な働きをします. device リストと parameter リストを分ける``:''には,空白が必要です.

(``-v''を伴った)「古い形式」では,データを古いより冗舌なSpice3f以前の形式で表示します.


5.3.46 Showmod*: モデルのパラメータの値を表示する

一般形:

showmod models
[
: parameters
]
, ...

showmod コマンドは,show コマンド(上述)と同じように 動作しますが,モデルのパラメータの値を表示します. model の形式は,素子の種類を指定する1文字, ``letter:subckt:'', ``modelname'', ``:subckt:modelname'', ``letter:subcircuit:modelname''です.


5.3.47 Source: Spice3入力ファイルを読み込む

一般形:

source file

Spice3では,Spice3入力ファイル file を読み込みます. ファイルには,.control.endc で囲んでNutmegとSpice3のコマンドを入れることができます. これらのコマンドは,回路が読み込まれた直後に実行されます. したがって,ac は,対応する .ac 行と同様に動作します. すべての入力ファイルの1行目はタイトル行であるとして,解釈はされませんが回路の名前として保存されます. この規約の例外は,.spiceinit です. したがって,Spice3コマンドスクリプトは空行で始めねばならず,``*#''を続けると,制御行と解釈されます. これにより,以前のバージョンでは無視されるコマンドをSpice3の入力ファイルに埋め込むことができます.

Nutmegでは,ファイル filename からコマンドを読み込みます. 文字 * で始まる行は,コメントとして扱われ,無視されます.


5.3.48 Status*: ブレークポイントの情報を表示する

一般形:

status

現在有効なトレースとブレークポイントをすべて表示します.


5.3.49 Step*: 時点をいくつか実行する

一般形:

step
[
number
]

1回または number 回繰り返し計算を行ない,停止します.


5.3.50 Stop*: ブレークポイントを設定する

一般形:

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つの条件の論理和を意味します.


5.3.51 Tf*: 伝達関数解析を行なう

一般形:

tf output_node input_source

tf コマンドは,伝達関数解析を行ない,指定された出力ノードと入力電源間の伝達関数(出力/入力),出力抵抗,入力抵抗を返します. この解析は,小信号直流(ゆっくりと変化する)入力を仮定しています.


5.3.52 Trace*: ノードをトレースする

一般形:

trace
[
node ...
]

解析の1ステップごとに,指定されたノードの値が表示されます. 同時に複数のトレースを有効にできます. すべての解析でトレースを使えるわけではありません. トレースを解除するには,delete コマンドを使います.


5.3.53 Tran*: 過渡解析を行なう

一般形:

tran Tstep Tstop
[
Tstart
[
Tmax
]][
UIC
]

過渡解析を行ないます. 詳細は,このマニュアルの4.3.9節を参照のこと.


5.3.54 Transpose: 多次元のデータセットの要素を交換する

一般形:

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]


5.3.55 Unalias: 別名を解除する

一般形:

unalias
[
word ...
]

word に設定されている別名があれば,それを解除します.


5.3.56 Undefine: 関数定義を解除する

一般形:

undefine function

指定された利用者定義の関数の定義を解除します.


5.3.57 Unset: 変数をクリアする

一般形:

unset
[
word ...
]

指定された変数(word)の値をクリアします.


5.3.58 Version: Spiceのバージョンを表示する

一般形:

version
[
version_id
]

実行中のNutmegのバージョンを表示します. 引数が指定されている場合,引数が現在のSpiceのバージョンと一致するかどうか調べます. (これはおもに生ファイルの Command: 行で使われます.)


5.3.59 Where: 問題があるノードや素子を特定する

一般形:

where

過渡解析や動作点解析を行なっているときに,収束しない原因となっている最後のノードまたは素子の名前が記録されます. 回路を調べたり,問題を修正したり,バグレポートを作成したりできるよう,where はこの情報を表示します. このコマンドは,シミュレーション実行中にも,シミュレータが解析を諦めた後でも使うことができます. 過渡解析では,解析の進行を監視するのに iplot コマンドを使うことができます. 解析が急激に遅くなったり止ったりしたときに,(ctrl-Cで)シミュレータに割り込みをかけ,where を発行します. 1つのノードまたは素子のみが表示されますが,問題が2つ以上のノードで起こっていることもあります.


5.3.60 Write: データをファイルに書き出す

一般形:

write
[
file
][
exprs
]

指定された式を file に書き出します.

ベクトルは,まずプロットごとにまとめられて書き出されます(すなわち,式のリストに,あるプロットからの3つのベクトルと,別のプロットからの2つのベクトルが含まれている場合,2つのプロットが出力され,最初のプロットには3つのベクトルが,もう一つのプロットには2つのベクトルが入ります). さらに,ベクトルのスケールが指定されていない場合,スケールが自動的に書き出されます.

省略時の形式はテキストですが,set filetype コマンドにより変更できます. 省略時のファイル名は rawspice.raw,またはコマンド行の -r フラグの引数で指定されたものです. 省略時の式は all です.


5.3.61 Xgraph: グラフ表示に xgraph(1) を使う

一般形:

xgraph file
[
exprs
][
plot_options
]

Spice3/Nutmegの xgraph コマンドは,plot コマンドのようにデータをグラフ化しますが,X11で良く使われているグラフ作成プログラム xgraph を使います.

file が``temp''または``tmp''の場合, グラフを作成している間データを保持するのに一時ファイルが使われます. 利用可能なオプションについては,plot コマンド(5.3.27節)を参照のこと. 極座標およびスミスチャート以外のオプションを利用できます.


5.4 制御構造


5.4.1 While End

一般形:

while condition
statement
...
end

任意の代数式 condition が真の間,statement を実行します.


5.4.2 Repeat End

一般形:

repeat
[
number
]

statement
...
end

statementnumber 回実行します. 引数がない場合は,永久に実行します.


5.4.3 Dowhile End

一般形:

dowhile condition
statement
...
end

while と同様ですが,statement が実行された後で condition を調べます.


5.4.4 Foreach End

一般形:

foreach var value ...
statement
...
end

value について1回ずつ,変数 var の値が現在の value の値に設定されて statement が実行されます. (var$var という記法でアクセスできます--5.6節参照).


5.4.5 If Then Else

一般形:

if condition
statement
...
else
statement
...
end

condition が0以外の場合,最初の statement の組が実行され,condition が0の場合,2番目の statement の組が実行されます. else と2番目の statement の組は,省略することもできます.


5.4.6 Label

一般形:

label word

goto word という文が現われたとき,制御がこの点に移されます. それ以外の場合は,なにもしません.


5.4.7 Goto

一般形:

goto word

label word という文がこのブロックの中および外側のブロックにある場合,制御がそこに移ります. ラベルがトップレベルにある場合,goto 文より前になくてはなりません(すなわち,前方への goto は,ブロックの中だけで使えます).


5.4.8 Continue

一般形:

continue

この文を取り囲む while, dowhile, foreach ブロックがある場合,制御は条件のテストまたは(foreach の場合)次の値に移ります. そうでない場合は,エラーとなります.


5.4.9 Break

一般形:

break

この文を取り囲む while, dowhile, foreach ブロックがある場合,制御はブロックの外側に移ります. そうでない場合は,エラーとなります.

もちろん,制御構造は入れ子にできます. ブロックに入ったときに入力が端末の場合,プロンプトは現在入っているブロックの数に対応した個数の `>' になります. 現在の制御構造は,デバッグ用のコマンド cdump で調べることができます.


5.5 変数

``set''コマンドで変数を設定することにより,NutmegとSpice3の動作を変えることができます. 以下で言及する変数に加え,``.OPTIONS''の4.1節で説明したオプションをSpice3の set コマンドで設定して,シミュレータの振る舞いを変えることができます.

set コマンドで変更できるNutmegに有効な変数は,

diff_abstol
diff コマンドで使われる絶対許容範囲.
appendwrite
write が使われたときにファイルが存在している場合,追加書き込みを行ないます.
colorN
これらの変数はXがカラーディスプレイで動作しているときに色数を決定します. N は0から15です. 色0は背景色,色1はグリッドと文字の色,色2から15はベクトルのグラフ表示に順に使われます. 色の変数の値は,/usr/lib/rgb.txt にある色の名前でなければなりません.
combplot
点をつないだグラフではなく,x座標の各点から垂直線を伸ばしたグラフを作成します. このオプションは,後述の plottype オプションの中で指定することもできます.
cpdebug
cshpar デバッグ情報を表示します(-DCPDEBUG フラグを付けてコンパイルされていなければなりません). 現在のバージョンではサポートされていません.
debug
設定されていると,大量のデバッグ情報を出力します(-DFTEDEBUG フラグを付けてコンパイルされていなければなりません). 現在のバージョンではサポートされていません.
device
グラフィクスデバイスの名前(/dev/tty??). この変数が設定されていない場合,利用者の端末が使われます. 他のモニターにグラフを出力したい場合,deviceterm の両方を設定しなければならないでしょう. (device がファイルの名前に設定されている場合,Nutmegはグラフィック制御コードをそのファイルにダンプします--これはグラフを保存するのに有用です.)
echo
各コマンドを実行前に表示します.
filetype
この値は ascii または binary のいずれかで,ファイルのフォーマットを決定します. 省略時の値は ascii です.
fourgridsize
フーリエ解析を行なうときに何点で補間するかを指定します.
gridsize
この変数が整数に設定されていると,グラフを描く際にy軸をその数で等分します. そうでなければ,現在のスケールが使われます(これは等間隔の点とは限りません). 現在のスケールが厳密に単調増加でなければ,このオプションの効果はありません.
hcopydev
これが設定されている場合,hardcopy コマンドを実行すると,作成されたファイルは自動的に lpr -Phcopydev file というコマンドで hcopydev というプリンタに出力されます.
hcopyfont
この変数は,ハードコピーでグラフを出力する際のフォント名を指定します. 値は装置によって異なります.
hcopyfontsize
これは,ハードコピーでグラフを出力する際の,フォントのスケーリングファクターです.
hcopydevtype
この変数は,hardcopy コマンドで使うプリンタ出力の種類を指定します.
hcopydevtype が設定されていない場合,plot(5)形式が仮定されます. 標準の配付では,別の出力形式としては postscript を認識します. hcopydev と共に使われた場合,hcopydevtype にはそのプリンタでサポートされている形式を指定しなければなりません.
height
asciiplotprint col のページの長さ.
history
ヒストリリストに保存するイベントの数.
lprplot5
これは,plot(5)形式のグラフをプリンタやプロッタに送るために使われるコマンドを指定する際に使われる,printf(3s)形式の書式文字列です. 与えられる最初のパラメータはプリンタ名で,2番目のパラメータはグラフが入っているファイル名です. どちらのパラメータも文字列です. 不適切な書式文字列を指定すると,当然ですがSpice3が異常終了します.
lprps
これは,PostScript形式のグラフをプリンタやプロッタに送るために使われるコマンドを指定する際に使われる,printf(3s)形式の書式文字列です. 与えられる最初のパラメータはプリンタ名で,2番目のパラメータはグラフが入っているファイル名です. どちらのパラメータも文字列です. 不適切な書式文字列を指定すると,当然ですがSpice3が異常終了します.
nfreqs
fourier コマンドで計算する周波数の数(省略時の値は10).
nobreak
asciiplotprint col で改ページしません.
noasciiplotvalue
asciiplot を実行する際に,グラフに表示する最初のベクトルの値を左側に表示しません.
noclobber
IOリダイレクションをする際に,既存のファイルを上書きしません.
noglob
ワイルドカード文字 `*', `?', `[', `]' を展開しません.
nogrid
グラフを描くときにグリッドを表示しません(ただし軸にラベルは付けます).
nomoremode
nomoremode が設定されていない場合,大量のデータが画面に表示される(たとえば printasciiplot コマンド)ときに,画面1面ごとに出力が止まり,リターンが押されると表示を再開します. nomoremode が設定されている場合,画面ごとのチェックは行なわれず,画面からスクロールされ消えていきます.
nonomatch
noglob が設定されていない場合で,ワイルドカードを含む表現が一致しない場合,文句を言わずにワイルドカード文字をそのまま使います.
nosort
変数名をソートせずに表示します.
noprintscale
print col コマンドで,最も左側にスケールを表示しません.
numdgt
データの表を表示する(fourier, print col)ときの桁数. 省略時の精度は6桁です. 倍精度は約16桁なので,numdgt は16以下に設定すべきです. 負の数値を表示する場合,表の幅を一定にするため,1桁少ない桁数で表示します.
plottype
normal, comb, point:chars のいずれかです. normal は,省略時の値で,点を結んだグラフを作成します. comb は櫛状のグラフを作成します(上述の combplot 変数の説明を参照のこと). point は各点を個別に打ちます. chars はグラフに描く各ベクトルに使う文字のリストです. 省略された場合は,標準の文字の組が使われます.
polydegree
plot コマンドがデータをフィットさせる多項式の次数. polydegreeN の場合,Nutmegは N 点ごとに N 次の多項式で補間を行ない,両端の点の間に10点を描きます. 点が単調増加でない場合,補間がうまく行くまで曲線を回転させて次元を減少させます.
polysteps
曲線のあてはめを行なう際に,2点の間で補間する点の数. 省略時の値は10.
program
実行中のプログラムの名前(argv[0]).
prompt
プロンプト.文字 `!' は現在のイベント番号に置きかわります. 
rawfile
作成される生ファイルの省略時の名前.
diff_reltol
diff コマンドで使われる相対許容範囲.
remote_shell
rspice を実行する際に使われる名前(省略時の値は``rsh'').
rhost
リモートのSpice3を実行するマシン(5.3.34節の rspice コマンドの説明を参照のこと).
rprogram
rspice コマンドで使われるリモートプログラムの名前.
slowplot
各グラフとグラフの間で停止し,利用者がリターンをタイプするのを待ちます.
sourcepath
source コマンドを実行するときに,ファイルを探すディレクトリのリスト. 省略時の値は,カレントディレクトリと標準Spiceライブラリ(/usr/local/lib/spice またはSpice3のソースで #define LIBPATH されたもの)です.
spicepath
aspice コマンドで使うプログラム. 省略時の値は,/cad/bin/spice
term
現在の端末のmfb名.
units
この値が degrees の場合,すべての三角関数はラジアンではなく度を使います.
unixcom
コマンドが定義されていない場合,それをUNIXのコマンドとして実行します. このオプションを設定すると,5.3.30節の rehash コマンドを行なったのと同じ効果があります. これはNutmegをログインシェルとして使いたい人に有用です.
verbose
冗舌になります. echodebug/cpdebug の中間です.
diff_vntol
diff で使われる電圧の絶対許容誤差.
width
asciiplotprint col のページの幅.
x11lineararcs
X11の実装には,円弧の描画がうまくないものがあります. このオプションを設定すると,Spice3は直線を使って曲線を近似してグラフを描きます.
xbrushheight
Xが動作している場合に使われるブラシの高さ.
xbrushwidth
Xが動作している場合に使われるブラシの幅.
xfont
データをグラフ化したりラベルを入力する際に使われるXのフォントの名前. 可変幅のフォントを使うと,グラフがきれいに見えなくなることもあります.

Spice3は使うがNutmegは使わない変数がいくつかあります.

editor
edit コマンドで使うエディタの名前.
modelcard
モデルカードの名前.
noaskquit
保留中の回路があるか,あるいは保存されていないプロットがあるかをチェックしません. 通常,このような場合,Spice3は利用者に警告します.
nobjthack
BJTにノードが4つあると仮定します.
noparse
入力ファイルを読み込んだときに,解釈しないようにします(デバッグに有用です). もちろん,解釈されていなければ実行できません.
nosubckt
サブ回路を展開しません.
renumber
.include があったとき,番号を付け直します.
subend
サブ回路を終えるカード.
subinvoke
サブ回路を呼び出す文字(通常は `x').
substart
サブ回路を始めるカード.


5.6 その他

入力ファイルにサブ回路がある場合,Spice3はサブ回路の実体を展開します. サブ回路は .subckt.ends,または変数 substartsubend の任意の値で区切られています. サブ回路の実体は,素子の種類を `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となります. $#foofoo がリストならばその要素の数に,数値や文字列の場合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でやるのと同様に,任意のキーでなくリターンで反応しなければならないこともあります.


5.7 バグ

ラベル入力機能は,原始的なものです. ラベルを入力するときは,ゆっくりタイプしてください. 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
というコマンドを使います. ここで,termnamemfbcap の中にある名前です.

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
2017-03-27