メインコンテンツ

subcircuit2ssc

SPICE サブサーキットのカスタム Simscape コンポーネントへの変換

説明

subcircuit2ssc(filename,target) は、filename で指定された SPICE ネットリストを読み取り、すべてのサブサーキットを 1 つ以上の Simscape™ ファイルに変換して target で指定されたフォルダーに配置します。

この関数は、変換プロセスでサポートされていない SPICE コマンドを、対応する Simscape ファイルのコメントにリストします。変換後に、生成された Simscape ファイルを確認して、サポートされていないすべての項目を手動で編集します。サポートされていないコマンドのリストは、以下で説明するオプションの出力引数を使用して取得することもできます。

サポートされている変換の詳細については、SPICE ネットリストの Simscape ブロックへの変換を参照してください。

subcircuit2ssc(___,subcircuit1,...,subcircuitN) は、指定された名前のサブサーキットのみを変換します。

subcircuitArray = subcircuit2ssc(___) は、サブサーキット情報を含むオブジェクトの配列を返します。

[subcircuitArray,unsupportedCommands] = subcircuit2ssc(___) は、サブサーキット情報を含むオブジェクトの配列と、変換後のサブサーキットで見つかった、変換プロセスでサポートされていないサブサーキット名と SPICE コマンドを含む struct 配列を返します。

すべて折りたたむ

シンプルな RC サブサーキットを含む rcsubcircuit.cir という名前の SPICE ネットリストを作成します。

.SUBCKT RC1      1
*
R1	1	2	1k
C1	2	0	0.32mF
*
.ENDS

rcsubcircuit.cir 内のすべての SPICE サブサーキットを同等の Simscape ファイルに変換し、mylibrary という名前空間ディレクトリに配置します。

subcircuit2ssc('rcsubcircuit.cir','+mylibrary');
Netlist converted. Review files and make manual edits for any
unsupported items before building the Simscape library located
at: +mylibrary.

mylibrary 名前空間に生成されたコンポーネント ファイル rc1.ssc の冒頭のコメントをチェックして、手動変換が必要ないことを確認します。

ssc_build を使用して Simscape ライブラリを生成します。

ssc_build mylibrary;
Generating Simulink library 'mylibrary_lib' in the current directory

生成されたライブラリ mylibrary_lib.slx を開いて、RC コンポーネントに Simscape ブロックとしてアクセスします。

温度依存性をもつ抵抗を含む temperatureresistor.cir という名前の SPICE ネットリストを作成します。

TEMPERATURERESISTOR.CIR - TEMPERATURE RESISTOR SUBCIRCUIT
*
.SUBCKT TemperatureResistor     p n
*
R1 p n 1k TC=0.01,-0.002
*
.ENDS

temperatureresistor.cir 内のすべての SPICE サブサーキットを同等の Simscape ファイルに変換し、mylibrary という名前空間ディレクトリに配置します。

subcircuit2ssc('temperatureresistor.cir','+mylibrary');
Netlist converted. Review files and make manual edits for any
unsupported items before building the Simscape library located
at: +mylibrary.

mylibrary 名前空間に生成されたコンポーネント ファイル temperatureresistor.ssc の冒頭のコメントをチェックして、必要な手動変換を特定します。

component temperatureresistor
% temperatureresistor
% Component automatically generated from a SPICE netlist for subcircuit TEMPERATURERESISTOR.
%   MATLAB version: 9.7.
%   Simscape Electrical version: 7.1.
%   Simscape code generated on: 11-Dec-2018 09:45:20
%
% Users should manually implement the following SPICE commands in order to
% achieve a complete implementation:
%    R1: tc 0.01 -0.002

コメントから、温度係数 TC を手動で変換する必要があることがわかります。

コンポーネント ファイルの components セクションの抵抗を、温度依存性をモデル化する SPICE 抵抗に置き換えます。

components(ExternalAccess=observe)
    R1 = ee.additional.spice_passives.res(...
        R={(1*1000),'Ohm'},...
        TC1={(0.01),'1/K'},...
        TC2={(-0.002), '1/K^2'});
end

ssc_build を使用して Simscape ライブラリを生成します。

ssc_build mylibrary;
Generating Simulink library 'mylibrary_lib' in the current directory

生成されたライブラリ mylibrary_lib.slx を開いて、温度依存性をもつ抵抗コンポーネントに Simscape ブロックとしてアクセスします。

入力引数

すべて折りたたむ

読み取る SPICE ネットワーク ファイルの名前。このファイルはパス上になければなりません。

例: 'SpiceSubcircuits.cir'

データ型: char | string

Simscape 言語ファイルが生成されるフォルダーの名前。カスタム ブロック ライブラリをビルドできるようにするには、'+' を前に付けて名前空間ディレクトリを指定します。指定したフォルダーが存在しない場合は、関数によって現在のフォルダーに作成されます。

例: '+SimscapeSubcircuits'

データ型: char | string

Simscape 言語ファイルに変換する SPICE サブサーキットの名前。

例: 'Subcircuit1','Subcircuit2'

データ型: char | string

出力引数

すべて折りたたむ

サブサーキット情報を含むオブジェクトの配列。

変換後のサブサーキットで見つかった、変換プロセスでサポートされていないサブサーキット名と SPICE コマンドを含む struct 配列。

制限

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

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

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

  • subcircuit2ssc 関数は、R、L、C、およびトランジスタ デバイスの数が少ない回路の変換にのみ役立ちます。何百ものトランジスタがある集積回路のシミュレーションには、この関数を使用しないでください。半導体デバイスの大規模なネットワークのシミュレーションはさらに困難で、当初の記述の対象となった SPICE シミュレーション エンジンを使用しないと信頼性の高いシミュレーションになりません。特定用途向け集積回路 (ASIC) をモデル化する必要がある場合は、代わりに、デバイス関数の動作表現を作成します。これにより、より高速にシミュレーションが行われる便利なモデルになります。

  • 数値的問題が原因でシミュレーションを開始できない場合は、ステップ サイズが回路の最速時定数の約 10 分の 1 であるローカル ソルバー オプションを使用します。元のサブサーキットでは、値に不連続点がある場合や、カスタム関数が使用された 1 階微分または 2 階微分に不連続点がある場合があります。このような不連続点があると、数値的動作が不適切になる可能性があります。

バージョン履歴

R2018b で導入

すべて展開する