最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。
SPICE 変換アシスタントを使用して、SPICE コンポーネントを同等の Simscape™ コンポーネントに変換できます。多くの場合、この変換は自動で行われます。しかし、SPICE は豊かな言語であるため、手動による何らかの介入なしに、常に完全な変換ができるわけではありません。
SPICE サブサーキットを同等の Simscape コンポーネントに変換するには、次の手順に従います。
関数 subcircuit2ssc
を使用して、SPICE ネットリストのファイルから Simscape 言語のコンポーネント ファイルを生成します。オプションの subcircuit1,…,subcircuitN
入力引数を使用して、変換するサブサーキットを指定できます。
生成された Simscape コンポーネント ファイルに対して、必要な手動変換を行います。必要な手動変換を特定するには、生成された Simscape コンポーネント ファイルの冒頭のコメントを確認してください。オプションの unsupportedCommands
出力引数を使用して、各サブサーキットでサポートされていない SPICE コマンドがリストされた struct
配列を生成することができます。
ssc_build
を使用してライブラリを構築するか、Simscape Component ブロックを使用して個々のコンポーネントをモデルに追加します。
構文と構文解釈に違いがある多くの異なった SPICE シミュレーターがあります。変換アシスタントは、Cadence® PSpice と同じ構文を使用し、違いがある箇所では PSpice に準拠します。
SPICE 変換アシスタントは次のコマンドをサポートします。
.FUNC
— 再利用可能な関数
.PARAM
— 定義可能なパラメーター
.MODEL
— 再利用可能なコンポーネント パラメーターのセット
.SUBCKT
— サブサーキット
.LIB
— 外部ネットリストからモデルを含める命令
.INC
— 外部ネットリストの内容を含める命令
変換アシスタントは、Simscape 関数を使用して、.FUNC
SPICE コマンドを実装します。これらの関数は、+
という名前のパッケージ サブライブラリ内に置かれます。ここで、subcircuit_name
_simscape_functionssubcircuit_name
は変換されるサブサーキットの名前です。
抵抗器、コンデンサ、インダクターの .MODEL
構文を次のように指定します。
.MODEL <model name> res(r=<value>) .MODEL <model name> cap(c=<value>) .MODEL <model name> ind(l=<value>)
r
、c
、l
の値は、コンポーネントの宣言で指定されている値のスケーリング係数です。この動作は PSpice に準拠しますが、すべてのシミュレーターで一定というわけではありません。変換アシスタントは、.IC
ステートメントを使用して指定された初期条件を自動的には変換しません。ただし、構文 IC=<value>
を使用して、コンデンサとインダクターの初期条件を指定することができます。また、生成された Simscape コンポーネント ファイルから、任意の .IC
ステートメントを手動で変換できます。
SPICE サブサーキットを Simscape ブロックに変換するのが変換アシスタントの目的であるため、.TRAN
などのシミュレーション コマンドは無視されます。
変換アシスタントは、次の SPICE 数値接尾辞をサポートします。
接尾辞 | 名前 | スケール |
---|---|---|
T | テラ | 1e12 |
G | ギガ | 1e9 |
MEG | メガ | 1e6 |
K | キロ | 1e3 |
M | ミリ | 1e-3 |
MIL | -- | 25.4e-6 |
U | マイクロ | 1e-6 |
N | ナノ | 1e-9 |
P | ピコ | 1e-12 |
F | フェムト | 1e-15 |
変換アシスタントは、SPICE と MATLAB で使用される次の基本的な数学関数をサポートします。
名前 | SPICE 関数 | MATLAB 関数 |
---|---|---|
絶対値 | abs | abs |
最小要素 | min | min |
最大要素 | max | max |
符号関数 | sgn | sign |
名前 | SPICE 関数 | MATLAB 関数 |
---|---|---|
正弦 | sin | sin |
逆正弦 | asin | asin |
双曲線正弦 | sinh | sinh |
余弦 | cos | cos |
逆余弦 | acos | acos |
双曲線余弦 | cosh | cosh |
正接 | tan | tan |
逆正接 | atan | atan |
4 象限逆正接 | atan2 | atan2 |
双曲線正接 | tanh | tanh |
名前 | SPICE 関数 | MATLAB 関数 |
---|---|---|
べき乗 | ** または pwr | ^ または power |
指数 | exp | exp |
自然対数 | ln または log | log |
常用対数 | log10 | log10 |
平方根 | sqrt | sqrt |
変換アシスタントは、log()
を、常用対数ではなく自然対数として解釈します。すべての SPICE シミュレーターがこれについて一貫しているわけではないため、この解釈がご使用の SPICE モデルと一致するかどうかを確認してください。
さらに、変換アシスタントは次の SPICE 関数をサポートします。
名前 | SPICE 関数 |
---|---|
If 条件 | if |
飽和 | limit |
デバイスを通る電流 | i |
デバイスにかかる電圧 | v |
ステップ関数 | stp |
導関数 (制限を参照) | ddt |
変換アシスタントは、次の SPICE 記号を認識します。
行頭の +
は、行が前の行から続くことを示す
行頭の *
は、行全体がコメントであることを示す
行内の ;
は、インライン コメントの開始を示す
この節における SPICE コマンドの表記は、次の規則に従います。
<argument>
は、コマンド ライン内の必須項目を表す
<argument>*
は、コマンド ライン内の必須項目のうち、1 回以上発生するものを表す
[argument]
は、コマンド ライン内のオプション項目を表す
[argument]*
は、コマンド ライン内のオプション項目のうち、ゼロ回以上発生するものを表す
次のリストは、サポートされている SPICE コンポーネントの完全なセットと、サポートされている SPICE ネットリスト表記を示しています。SPICE の既定値と異なる .MODEL
パラメーターのみを指定できます。
独立電圧源
V<name> <+ node> <- node> [DC] <value> V<name> <+ node> <- node> exp(<v1> <v2> <td1> <tc1> <td2> <tc2>) V<name> <+ node> <- node> pulse(<v1> <v2> <td> <tr> <tf> <pw> <per>) V<name> <+ node> <- node> pwl(<<tj> <vj>>*) V<name> <+ node> <- node> sffm(<voff> <vampl> <fc> <mod> <fm>) V<name> <+ node> <- node> sin(<voff> <vampl> <freq> <td> <df>)
独立電流源
I<name> <+ node> <- node> [DC] <value> I<name> <+ node> <- node> exp(<i1> <i2> <td1> <tc1> <td2> <tc2>) I<name> <+ node> <- node> pulse(<i1> <i2> <td> <tr> <tf> <pw> <per>) I<name> <+ node> <- node> pwl(<<tj> <ij>>*) I<name> <+ node> <- node> sffm(<ioff> <iampl> <fc> <mod> <fm>) I<name> <+ node> <- node> sin(<ioff> <iampl> <freq> <td> <df>)
電流制御電圧源
H<name> <+ node> <- node> <voltage source name> <gain> H<name> <+ node> <- node> VALUE={<expression>} H<name> <+ node> <- node> POLY(<value>) <voltage source name>* <coefficient>* H<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >* H<name> <+ node> <- node> <voltage source name> TABLE=< <input value>, <output value> >*
電圧制御電圧源
E<name> <+ node> <- node> <+ control node> <- control node> <gain> E<name> <+ node> <- node> VALUE={<expression>} E<name> <+ node> <- node> POLY(<value>) <<+ control node> <- control node>>* <coefficient>* E<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >* E<name> <+ node> <- node> <+ control node> <- control node> TABLE=< <input value>, <output value> >*
電流制御電流源
F<name> <+ node> <- node> <voltage source name> <gain> F<name> <+ node> <- node> VALUE={<expression>} F<name> <+ node> <- node> POLY(<value>) <voltage source name>* <coefficient>* F<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >* F<name> <+ node> <- node> <voltage source name> TABLE=< <input value>, <output value> >*
電圧制御電流源
G<name> <+ node> <- node> <+ control node> <- control node> <gain> G<name> <+ node> <- node> VALUE={<expression>} G<name> <+ node> <- node> POLY(<value>) <<+ control node> <- control node>>* <coefficient>* G<name> <+ node> <- node> TABLE {<expression>}=< <input value>, <output value> >* G<name> <+ node> <- node> <+ control node> <- control node> TABLE=< <input value>, <output value> >*
動作源 (<expression> を中かっこ {} に入れる必要はありません)
B<name> <+ node> <- node> V=<expression> B<name> <+ node> <- node> I=<expression>
抵抗器
R<name> <+ node> <- node> [model name] <value> .MODEL <model name> res(r=<value>)
コンデンサ
C<name> <+ node> <- node> [model name] <value> [IC=<value>] .MODEL <model name> cap(c=<value>)
インダクター
L<name> <+ node> <- node> [model name] <value> [IC=<value>] .MODEL <model name> ind(l=<value>)
インダクターの結合
K<name> <inductor name> <inductor name>* <value>
電圧制御スイッチ
S<name> <+ node> <- node> <+ control node> <- control node> <model name> .MODEL <model name> sw(ron=<value>, roff=<value>, vt=<value>, vh=<value>)
電流制御スイッチ
W<name> <+ node> <- node> <voltage source name> <model name> .MODEL <model name> csw(ron=<value>, roff=<value>, it=<value>, ih=<value>)
ダイオード
D<name> <+ node> <- node> <model name> [area] .MODEL <model name> d(is=<value>, rs=<value>, n=<value>, cjo=<value>, vj=<value>, +m=<value>, fc=<value>, tt=<value>, revbrk=<value>, bv=<value>, ibv=<value>, +xti=<value>, eg=<value>)
バイポーラ ジャンクション トランジスタ (BJT)
NPN
Q<name> <collector node> <base node> <emitter node> [substrate node] <model name> <area> .MODEL <model name> npn(bf=<value>, br=<value>, cjc=<value>, cje=<value>, cjs=<value>, +eg=<value>, fc=<value>, ikf=<value>, ikr=<value>, irb=<value>, is=<value>, isc=<value>, +ise=<value>, itf=<value>, mjc=<value>, mje=<value>, mjs=<value>, nc=<value>, ne=<value>, +nf=<value>, nr=<value>, rb=<value>, rbm=<value>, rc=<value>, re=<value>, tf=<value>, +tr=<value>, vaf=<value>, var=<value>, vjc=<value>, vje=<value>, vjs=<value>, vtf=<value>, +xcjc=<value>, xtb=<value>, xtf=<value>, xti=<value>)
PNP
Q<name> <collector node> <base node> <emitter node> [substrate node] <model name> <area> .MODEL <model name> pnp(bf=<value>, br=<value>, cjc=<value>, cje=<value>, cjs=<value>, +eg=<value>, fc=<value>, ikf=<value>, ikr=<value>, irb=<value>, is=<value>, isc=<value>, +ise=<value>, itf=<value>, mjc=<value>, mje=<value>, mjs=<value>, nc=<value>, ne=<value>, +nf=<value>, nr=<value>, rb=<value>, rbm=<value>, rc=<value>, re=<value>, tf=<value>, +tr=<value>, vaf=<value>, var=<value>, vjc=<value>, vje=<value>, vjs=<value>, vtf=<value>, +xcjc=<value>, xtb=<value>, xtf=<value>, xti=<value>)
ジャンクション電界効果トランジスタ (JFET)
N チャネル
J<name> <drain node> <gate node> <source node> <model name> [area] .MODEL <model name> njf(beta=<value>, cgd=<value>, cgs=<value>, fc=<value>, is=<value>, +lambda=<value>, m=<value>, n=<value>, rd=<value>, rs=<value>, vto=<value>, xti=<value>)
P チャネル
J<name> <drain node> <gate node> <source node> <model name> [area] .MODEL <model name> pjf(beta=<value>, cgd=<value>, cgs=<value>, fc=<value>, is=<value>, +lambda=<value>, m=<value>, n=<value>, rd=<value>, rs=<value>, vto=<value>, xti=<value>)
金属酸化物半導体電界効果トランジスタ (MOSFET)
N チャネル (レベル 1 およびレベル 3 のみをサポート)
M<name> <drain node> <gate node> <source node> <bulk node> <model name> +[L=<value>] [W=<value>] [AD=<value>] [AS=<value>] [PD=<value>] [PS=<value>] [NRD=<value>] +[NRS=<value>] [M=<value>] .MODEL <model name> nmos(cbd=<value>, cbs=<value>, cgbo=<value>, cgdo=<value>, +cgso=<value>, cj=<value>, cjsw=<value>, delta=<value>, eta=<value>, fc=<value>, +gamma=<value>, is=<value>, js=<value>, kappa=<value>, kp=<value>, lambda=<value>, +ld=<value>, level=<value>, mj=<value>, mjsw=<value>, n=<value>, neff=<value>, nfs=<value>, +nss=<value>, nsub=<value>, nrd=<value>, nrs=<value>, pb=<value>, phi=<value>, rd=<value>, +rs=<value>, rsh=<value>, theta=<value>, tox=<value>, tpg=<value>, ucrit=<value>, +uexp=<value>, uo=<value>, vmax=<value>, vto=<value>, xj=<value>)
P チャネル (レベル 1 およびレベル 3 のみをサポート)
M<name> <drain node> <gate node> <source node> <bulk node> <model name> +[L=<value>] [W=<value>] [AD=<value>] [AS=<value>] [PD=<value>] [PS=<value>] [NRD=<value>] +[NRS=<value>] [M=<value>] .MODEL <model name> pmos(cbd=<value>, cbs=<value>, cgbo=<value>, cgdo=<value>, +cgso=<value>, cj=<value>, cjsw=<value>, delta=<value>, eta=<value>, fc=<value>, +gamma=<value>, is=<value>, js=<value>, kappa=<value>, kp=<value>, lambda=<value>, +ld=<value>, level=<value>, mj=<value>, mjsw=<value>, n=<value>, neff=<value>, nfs=<value>, +nss=<value>, nsub=<value>, nrd=<value>, nrs=<value>, pb=<value>, phi=<value>, rd=<value>, +rs=<value>, rsh=<value>, theta=<value>, tox=<value>, tpg=<value>, ucrit=<value>, +uexp=<value>, uo=<value>, vmax=<value>, vto=<value>, xj=<value>)
サブサーキット
X<name> [node]* <subcircuit name> [PARAMS: < <name>=<value> >*]
Simscape コンポーネント ファイルを生成した後、各ファイル ヘッダーに未サポートの SPICE コマンドに関するメッセージがないか検査します。たとえば、変換アシスタントは抵抗器の温度係数の実装をサポートしません。
R1 p n 1k TC=0.01,-0.002
生成された Simscape コンポーネント ファイルには、サポートされているすべての変換が含まれ、手動変換すべき抵抗器の温度係数を特定する次のヘッダーが含まれます。
component test % test % Component automatically generated from a SPICE netlist (11-Dec-2018 09:34:57). % Users should manually implement the following SPICE commands in order to % achieve a complete implementation: % R1: tc 0.01 -0.002
subcircuit2ssc
を参照してください。
ネットリストは PSpice 形式で記述し、構文が正しくなければなりません。変換アシスタントは、PSpice 構文が適切かどうかをチェックしません。
サポートされているのは、PSpice ネットリスト言語の一部のみです。ただし、サポートされていない PSpice コマンドは、手動での変換がしやすいように、対応する Simscape コンポーネント ファイルの冒頭で特定されます。
生成された Simscape コンポーネントを Simscape ブロックに組み込むには、パラメーター値が Simscape の制約に従っていなければなりません。たとえば、基本的なコンデンサの静電容量と基本的なインダクターのインダクタンスは、非ゼロでなければなりません。
変換アシスタントは、関数呼び出し内での SPICE 導関数 ddt
の使用をサポートしません。