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香料コマンドを実装します。これらの関数は,+subcircuit_name_simscape_functionsという名前のパッケージ サブライブラリ内に置かれます。ここで、subcircuit_nameは変換されるサブサーキットの名前です。

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

.MODEL  res(r=) .MODEL  cap(c=) .MODEL  ind(l=)
ここで、rclの値は、コンポーネントの宣言で指定されている値のスケーリング係数です。この動作は 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 {}=< ,  >* 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 チャネル

    J     [area] .MODEL  njf(beta=, cgd=, cgs=, fc=, is=, +lambda=, m=, n=, rd=, rs=, vto=, xti=)

    P チャネル

    J     [area] .MODEL  pjf(beta=, cgd=, cgs=, fc=, is=, +lambda=, m=, n=, rd=, rs=, vto=, xti=)

  • 金属酸化物半導体電界効果トランジスタ (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 コンポーネント ファイルには、サポートされているすべての変換が含まれ、手動変換すべき抵抗器の温度係数を特定する次のヘッダーが含まれます。

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を参照してください。

制限

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

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

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

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

参考

|

関連するトピック