スクリプト言語文法

予約語

スクリプト言語には以下の予約語があります。

予約語

if、else、while、for、switch、case、default、break、init、define、return、quit、function


予約定数

定数名 意味
PI π
PI2
true ブール値の真
false ブール値の偽
ON スイッチング素子のオン状態
OFF スイッチング素子のオフ状態
t シミュレーション時間
tt 総シミュレーション時間

変数tとttの違いについて

Waveform解析の実行時、Waveform Start Timeを指定すると、その時間までTransient解析を行い回路状態を保持したままWaveform解析が実行されます。
その際、時間変数tは、Transient解析の完了後にリセットされるため、連続的な解析時間を取得することができません。一方、時間変数ttは、Transient解析後にリセットされることなく、連続した時間を取得することができます。

数学関数

関数名 意味
sin(x) 正弦
cos(x) 余弦
tan(x) 正接
asin(x) 逆正弦
acos(x) 逆余弦
atan(x) 逆正接
atan2(y,x) y/xの逆正接
sqrt(x) 平方根(ルート)
log(x) 自然対数
log10(x) 常用対数
exp(x) 指数関数
pow(x,y) xのy乗を計算する冪関数
abs(x) 絶対値
min(x,y) 最小値
max(x,y) 最大値
mod(x,y) xをyで割った余りを出す剰余関数
int(x) 64bit整数化

機能関数

関数名 意味
output("sym","type","mode") シンボル sym、タイプ type、モード modeで指定された出力変数の現在値を返す関数です。
この関数で指定される出力変数が存在しないときは自動的に出力変数が設定され、この関数を削除するとその出力変数も削除されます。
output("sym", "type", "mode", time) シンボル sym、タイプ Type、モード modeで指定された出力変数の時間 timeにおける値を返す関数です。
param("sym", "par") シンボル symを持つ素子の parで指定されたパラメーター値を返す関数です。
parには、各素子のパラメーターダイアログボックスに表示されているパラメーターシンボルを指定します。
setoutvar(var) 変数 varを出力変数に設定します。
出力変数シンボルは、スクリプトファイル名に varのシンボルをピリオド .で連結したシンボルとなり、出力タイプはなく、出力モードは FINとなります。
この関数を削除すると、出力変数も削除されます。
setparam("sym", "par", value) シンボル symを持つ素子の parで指定されたパラメーター値を valueに設定する関数です。
parには、各素子のパラメーターダイアログボックスに表示されているパラメーターシンボルを指定します。
setvar("sym", "var", value) スクリプトファイル名が symの内の変数 varの値を valueに設定する関数です。symが空の場合、自分自身が指定されます。
var("sym", "var") スクリプトファイル名が symの内の変数 varの値を返す関数です。
symが空の場合、自分自身が指定されます。
table("sym",xvalue) ルックアップテーブルエディタで定義したテーブル名 symに従って、入力値 xvalueとしたときの出力を返します。

var関数、setvar関数について

var関数、setvar関数はスクリプトファイル間で変数のやり取りを行う際に使用する関数です。
param関数、setparam関数の代わりに使用します。
var関数、setvar関数は以下の機能を持ちます。

  1. 通常書式:x = var("sym","a");
    スクリプトファイル名 symの変数 aを取得します。
  2. 自身の変数を取得:x = var("","b");
    自身の変数 bを取得します。
  3. Cコード用に回路上に存在しない変数を定義:x = ("VIO","a");
    この場合、スクリプトファイル実行時には無視されます。
    VIOは仮想的なIOデバイスにつけられたシンボルです。変更はできません。

演算子

演算子名 意味
四則演算子 +、-、*、/
余り演算子 %
インクリメント、デクリメント演算子 ++、--
シフト演算子 <<、>>
不等号 <、>、<=、>=
比較演算子 ==、!=
論理演算子 !(NOT)、&&(AND)、||(OR)
ビット論理演算子 ~(NOT)、&(AND)、|(OR)、^(XOR)

変数

全ての変数は、宣言なしで使用でき、型はない。必ずで初期化される。

文末には終端記号の';'をつける。

if文

if (condition) {
  文1
  文2
}
else {
  文3
  文4
}
conditionが真のとき文1、文2を、偽のとき文3、文4を実行する。
else文は省略可能。また、単文のときは{ }は省略可能。

while文

while (condition) {
  文1
  文2
}
conditionが真のときループする。
また、単文のときは{ }は省略可能。

for文

for (init; condition; update) {
  文1
  文2
}
init:初期化文
condition:条件文、真のときループ
update:更新文
単文のときは{ }は省略可能。

switch文

switch (index) {
case const1 : 文1; break;
case const2 : 文2; break;
default : 文3; break;
}
indexが一致するcase文にジャンプする。
default文は必ずcase文の後に記述する。

init文

init {
  文1
  文2
}
プログラムの最初に一回だけ実行される。
{}は省略不可。 init文が実行されるまでの変数の初期値は0となります。

define文

define 定数名 (数または式)
定数を定義する。
定数を変更しようとするとエラーになる。
定数部分の括弧は必ず付ける。
文末の終端記号は不要である。

return文

return;
プログラム実行を終了し解析に戻る。

quit文

quit;
プログラム実行を終了し解析も終了する。

function文

定義

function func() {
  文1
  文2
}
呼び出し
func();
スクリプトファイルの中で関数を定義することができる。
関数はスクリプトの先頭で定義する必要がある。
呼び出しは関数名を Funcとすれば Func();となる。

以下にfunction文を使用した加算関数の例を記載する。

//function文で加算関数ADDを定義
function ADD(){
  gain = 10;
  OUT  = gain * (IN1 + IN2);
}

setvar("","ADD_IN1",5);   //ADD関数のIN1に5を設定
setvar("","ADD_IN2"10);   //ADD関数のIN2に10を設定
ADD();                    //ADD関数を呼び出し実行;
ans = var("","ADD_OUT");  //結果をADD関数のOUTからansへ取得

コメント

/**/ で文との間にスペースを入れて挟むとコメントとなる。
または、行頭に//を書き、そこから行末までがコメントとなる。