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
香料コマンドを実装します。これらの関数は,+
という名前のパッケージ サブライブラリ内に置かれます。ここで、subcircuit_name
_simscape_functionssubcircuit_name
は変換されるサブサーキットの名前です。
抵抗器、コンデンサ、インダクターの.MODEL
構文を次のように指定します。
.MODELres(r= ) .MODEL cap(c= ) .MODEL ind(l= )
r
、c
、l
の値は、コンポーネントの宣言で指定されている値のスケーリング係数です。この動作は PSpice に準拠しますが、すべてのシミュレーターで一定というわけではありません。
変換アシスタントは、.IC
ステートメントを使用して指定された初期条件を自動的には変換しません。ただし、構文IC=
を使用して、コンデンサとインダクターの初期条件を指定することができます。また、生成された 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 |
テーブル | table |
変換アシスタントは、次の SPICE 記号を認識します。
行頭の+
は、行が前の行から続くことを示す
行頭の*
は、行全体がコメントであることを示す
行内の;
は、インライン コメントの開始を示す
この節における SPICE コマンドの表記は、次の規則に従います。
は、コマンド ライン内の必須項目を表す
は、コマンド ライン内の必須項目のうち、1 回以上発生するものを表す
[argument]
は、コマンド ライン内のオプション項目を表す
[argument]*
は、コマンド ライン内のオプション項目のうち、ゼロ回以上発生するものを表す
次のリストは、サポートされている SPICE コンポーネントの完全なセットと、サポートされている SPICE ネットリスト表記を示しています。SPICE の既定値と異なる.MODEL
パラメーターのみを指定できます。
独立電圧源
V<+ node> <- node> [DC] V <+ node> <- node> exp( ) V <+ node> <- node> pulse( ) V <+ node> <- node> pwl(< >*) V <+ node> <- node> sffm( ) V <+ node> <- node> sin( ) 独立電流源
I<+ node> <- node> [DC] I <+ node> <- node> exp( ) I <+ node> <- node> pulse( ) I <+ node> <- node> pwl(< >*) I <+ node> <- node> sffm( ) I <+ node> <- node> sin( ) 電流制御電圧源
H <名称> < +节点> < -节点> <电压源名称> < gain> H<+ node> <- node> VALUE={ } H <+ node> <- node> POLY( ) * * H <+ node> <- node> TABLE { }=< , 電圧制御電圧源
E<+ node> <- node> <+ control node> <- control node> E <+ node> <- node> VALUE={ } E <+ node> <- node> POLY( ) <<+ control node> <- control node>>* * E <+ node> <- node> TABLE { }=< , >* E <+ node> <- node> <+ control node> <- control node> TABLE=< , >* 電流制御電流源
F<+ node> <- node> F <+ node> <- node> VALUE={ } F <+ node> <- node> POLY( ) * * F <+ node> <- node> TABLE { }=< , >* F <+ node> <- node> TABLE=< , >* 電圧制御電流源
G<+ node> <- node> <+ control node> <- control node> G <+ node> <- node> VALUE={ } G <+ node> <- node> POLY( ) <<+ control node> <- control node>>* * G <+ node> <- node> TABLE { }=< , >* G <+ node> <- node> <+ control node> <- control node> TABLE=< , >* 動作源 (
を中かっこ {} に入れる必要はありません) B<+ node> <- node> V= B <+ node> <- node> I= 受動デバイス
抵抗器
R<+ node> <- node> [model name] .MODEL res(r= ) コンデンサ
C<+ node> <- node> [model name] [IC= ] .MODEL cap(c= ) インダクター
L<+ node> <- node> [model name] [IC= ] .MODEL ind(l= ) インダクターの結合
K* スイッチ
電圧制御スイッチ
S<+ node> <- node> <+ control node> <- control node> .MODEL sw(ron= , roff= , vt= , vh= ) 電流制御スイッチ
W<+ node> <- node> .MODEL csw(ron= , roff= , it= , ih= ) 半導体デバイス
ダイオード
D<+ node> <- node> [area] .MODEL d(is= , rs= , n= , cjo= , vj= , +m= , fc= , tt= , revbrk= , bv= , ibv= , +xti= , eg= ) バイポーラ ジャンクション トランジスタ (BJT)
NPN
Q[substrate node] .MODEL npn(bf= , br= , cjc= , cje= , cjs= , +eg= , fc= , ikf= , ikr= , irb= , is= , isc= , +ise= , itf= , mjc= , mje= , mjs= , nc= , ne= , +nf= , nr= , rb= , rbm= , rc= , re= , tf= , +tr= , vaf= , var= , vjc= , vje= , vjs= , vtf= , +xcjc= , xtb= , xtf= , xti= ) PNP
Q[substrate node] .MODEL pnp(bf= , br= , cjc= , cje= , cjs= , +eg= , fc= , ikf= , ikr= , irb= , is= , isc= , +ise= , itf= , mjc= , mje= , mjs= , nc= , ne= , +nf= , nr= , rb= , rbm= , rc= , re= , tf= , +tr= , vaf= , var= , vjc= , vje= , vjs= , vtf= , +xcjc= , xtb= , xtf= , xti= ) ジャンクション電界効果トランジスタ (JFET)
N チャネル
JP チャネル
J金属酸化物半導体電界効果トランジスタ (MOSFET)
N チャネル (レベル 1 およびレベル 3 のみをサポート)
M <名称> <排水节点> <门节点> <源节点> <布鲁里溃疡lk node>+[L= ] [W= ] [AD= ] [AS= ] [PD= ] [PS= ] [NRD= ] +[NRS= ] [M= ] .MODEL nmos(cbd= , cbs= , cgbo= , cgdo= , +cgso= , cj= , cjsw= , delta= , eta= , fc= , +gamma= , is= , js= , kappa= , kp= , lambda= , +ld= , level= , mj= , mjsw= , n= , neff= , nfs= , +nss= , nsub= , nrd= , nrs= , pb= , phi= , rd= , +rs= , rsh= , theta= , tox= , tpg= , ucrit= , +uexp= , uo= , vmax= , vto= , xj= ) P チャネル (レベル 1 およびレベル 3 のみをサポート)
M <名称> <排水节点> <门节点> <源节点> <布鲁里溃疡lk node>+[L= ] [W= ] [AD= ] [AS= ] [PD= ] [PS= ] [NRD= ] +[NRS= ] [M= ] .MODEL pmos(cbd= , cbs= , cgbo= , cgdo= , +cgso= , cj= , cjsw= , delta= , eta= , fc= , +gamma= , is= , js= , kappa= , kp= , lambda= , +ld= , level= , mj= , mjsw= , n= , neff= , nfs= , +nss= , nsub= , nrd= , nrs= , pb= , phi= , rd= , +rs= , rsh= , theta= , tox= , tpg= , ucrit= , +uexp= , uo= , vmax= , vto= , xj= ) サブシステム
サブサーキット
X[node]* [PARAMS: < = >*] 手動変換の実行
Simscape コンポーネント ファイルを生成した後、各ファイル ヘッダーに未サポートの SPICE コマンドに関するメッセージがないか検査します。たとえば、変換アシスタントは抵抗器の温度係数の実装をサポートしません。
R1 p n 1k TC=0.01,-0.002生成された Simscape コンポーネント ファイルには、サポートされているすべての変換が含まれ、手動変換すべき抵抗器の温度係数を特定する次のヘッダーが含まれます。
変換を完了するには、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.002subcircuit2ssc
を参照してください。制限
ネットリストは PSpice 形式で記述し、構文が正しくなければなりません。変換アシスタントは、PSpice 構文が適切かどうかをチェックしません。
サポートされているのは、PSpice ネットリスト言語の一部のみです。ただし、サポートされていない PSpice コマンドは、手動での変換がしやすいように、対応する Simscape コンポーネント ファイルの冒頭で特定されます。
生成された Simscape コンポーネントを Simscape ブロックに組み込むには、パラメーター値が Simscape の制約に従っていなければなりません。たとえば、基本的なコンデンサの静電容量と基本的なインダクターのインダクタンスは、非ゼロでなければなりません。
変換アシスタントは、関数呼び出し内での SPICE 導関数
ddt
の使用をサポートしません。参考
関連するトピック