スクリプト言語文法¶
予約語¶
スクリプト言語には以下の予約語があります。
予約語
if、else、while、for、switch、case、default、break、init、define、return、quit、function
予約定数¶
| 定数名 | 意味 |
|---|---|
| PI | π |
| PI2 | 2π |
| 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関数は以下の機能を持ちます。
- 通常書式:x = var("sym","a");
スクリプトファイル名symの変数aを取得します。 - 自身の変数を取得:x = var("","b");
自身の変数bを取得します。 - Cコード用に回路上に存在しない変数を定義:x = ("VIO","a");
この場合、スクリプトファイル実行時には無視されます。
VIOは仮想的なIOデバイスにつけられたシンボルです。変更はできません。
演算子¶
| 演算子名 | 意味 |
|---|---|
| 四則演算子 | +、-、*、/ |
| 余り演算子 | % |
| インクリメント、デクリメント演算子 | ++、-- |
| シフト演算子 | <<、>> |
| 不等号 | <、>、<=、>= |
| 比較演算子 | ==、!= |
| 論理演算子 | !(NOT)、&&(AND)、||(OR) |
| ビット論理演算子 | ~(NOT)、&(AND)、|(OR)、^(XOR) |
変数¶
全ての変数は、宣言なしで使用でき、型はありません。
必ず0で初期化されます。
文¶
文末には終端記号の';'をつける必要があります。
if文
if (condition) {
文1;
文2;
}
else {
文3;
文4;
}
else文は省略可能です。また、単文のときは{ }は省略可能です。
while文
while (condition) {
文1;
文2;
}
また、単文のときは{ }は省略可能です。
for文
for (initialize; condition; update) {
文1;
文2;
}
condition:条件文、真のときループ
update:更新文
単文のときは{ }は省略可能です。
switch文
switch (index) {
case const1 : 文1; break;
case const2 : 文2; break;
default : 文3; break;
}
default文は必ずcase文の後に記述してください。
define文
define 定数名 (数または式)
定数を変更しようとするとエラーとなります。
定数部分の括弧は必ず付けてください。
文末の終端記号は不要です。
return文
return;
quit文
quit;
function文
定義
function func() {
文1;
文2;
}
func();
関数はスクリプトの先頭で定義する必要があります。
呼び出しは関数名を
Funcとすれば Func();となります。
関数内で別の関数を呼び出すこともできますが、
未定義の関数を呼び出すことはできません。
定義順序に注意してスクリプトを記載してください。
関数内では予約定数(シミュレーション時間t等)を使用することはできません。
使用したい場合には変数を用意し、関数の外から与えるようにしてください。
以下は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へ取得
コメント
/* と */ で文との間にスペースを入れて挟むとコメントとなります。
または、行頭に//を書き、そこから行末までがコメントとなります。