Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

SPICE ネットリストの Simscape ブロックへの変換

SPICE 変換アシスタントを使用して、SPICE コンポーネントを同等の Simscape™ コンポーネントに変換できます。多くの場合、この変換は自動で行われます。しかし、SPICE は豊かな言語であるため、手動による何らかの介入なしに、常に完全な変換ができるわけではありません。

SPICE サブサーキットを同等の Simscape コンポーネントに変換するには、次の手順に従います。

  1. 関数 subcircuit2ssc を使用して、SPICE ネットリストのファイルから Simscape 言語のコンポーネント ファイルを生成します。オプションの subcircuit1,…,subcircuitN 入力引数を使用して、変換するサブサーキットを指定できます。

  2. 生成された Simscape コンポーネント ファイルに対して、必要な手動変換を行います。必要な手動変換を特定するには、生成された Simscape コンポーネント ファイルの冒頭のコメントを確認してください。オプションの unsupportedCommands 出力引数を使用して、各サブサーキットでサポートされていない SPICE コマンドがリストされた struct 配列を生成することができます。

  3. ssc_build を使用してライブラリを構築するか、Simscape Component ブロックを使用して個々のコンポーネントをモデルに追加します。

構文と構文解釈に違いがある多くの異なった SPICE シミュレーターがあります。変換アシスタントは、Cadence® PSpice と同じ構文を使用し、違いがある箇所では PSpice に準拠します。

コマンド

SPICE 変換アシスタントは次のコマンドをサポートします。

  • .FUNC — 再利用可能な関数

  • .PARAM — 定義可能なパラメーター

  • .MODEL — 再利用可能なコンポーネント パラメーターのセット

  • .SUBCKT — サブサーキット

  • .LIB — 外部ネットリストからモデルを含める命令

  • .INC — 外部ネットリストの内容を含める命令

変換アシスタントは、Simscape 関数を使用して、.FUNC SPICE コマンドを実装します。これらの関数は、+subcircuit_name_simscape_functions という名前のパッケージ サブライブラリ内に置かれます。ここで、subcircuit_name は変換されるサブサーキットの名前です。

抵抗器、コンデンサ、インダクターの .MODEL 構文を次のように指定します。

.MODEL <model name> res(r=<value>)
.MODEL <model name> cap(c=<value>)
.MODEL <model name> ind(l=<value>)
ここで、rcl の値は、コンポーネントの宣言で指定されている値のスケーリング係数です。この動作は 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 関数
絶対値absabs
最小要素minmin
最大要素maxmax
符号関数sgnsign

三角法

名前SPICE 関数MATLAB 関数
正弦sinsin
逆正弦asinasin
双曲線正弦sinhsinh
余弦coscos
逆余弦acosacos
双曲線余弦coshcosh
正接tantan
逆正接atanatan
4 象限逆正接atan2atan2
双曲線正接tanhtanh

指数と対数

名前SPICE 関数MATLAB 関数
べき乗** または pwr^ または power
指数expexp
自然対数ln または loglog
常用対数log10log10
平方根sqrtsqrt

変換アシスタントは、log() を、常用対数ではなく自然対数として解釈します。すべての SPICE シミュレーターがこれについて一貫しているわけではないため、この解釈がご使用の SPICE モデルと一致するかどうかを確認してください。

その他

さらに、変換アシスタントは次の SPICE 関数をサポートします。

名前SPICE 関数
If 条件if
飽和limit
デバイスを通る電流i
デバイスにかかる電圧v
ステップ関数stp
導関数 (制限を参照)ddt
テーブルtable

記号

変換アシスタントは、次の 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
変換を完了するには、Simscape コンポーネント ファイルを変更して、欠落しているコンポーネントを実装します。手動変換の実行と、この特定のシナリオの詳細については、subcircuit2ssc を参照してください。

寄生値

コンデンサやインダクターなどの受動デバイスについて、生成した Simscape コンポーネント ファイルに寄生値を導入するには、[寄生値の指定] パラメーターを [はい] に設定します。次に、[コンデンサの寄生直列抵抗] パラメーターまたは [コンデンサの寄生直列抵抗] パラメーターの値を指定します。

制限

  • ネットリストは PSpice 形式で記述し、構文が正しくなければなりません。変換アシスタントは、PSpice 構文が適切かどうかをチェックしません。

  • サポートされているのは、PSpice ネットリスト言語の一部のみです。ただし、サポートされていない PSpice コマンドは、手動での変換がしやすいように、対応する Simscape コンポーネント ファイルの冒頭で特定されます。

  • 生成された Simscape コンポーネントを Simscape ブロックに組み込むには、パラメーター値が Simscape の制約に従っていなければなりません。たとえば、基本的なコンデンサの静電容量と基本的なインダクターのインダクタンスは、非ゼロでなければなりません。

  • 変換アシスタントは、関数呼び出し内での SPICE 導関数 ddt の使用をサポートしません。

参考

|

関連するトピック