Преобразование списка сетей SPICE в блоки Simscape

Преобразовать компоненты SPICE в Simscape™ эквиваленты можно с помощью ассистента преобразования SPICE. Часто это преобразование происходит автоматически. Однако, поскольку SPICE является богатым языком, не всегда можно выполнить полное преобразование без какого-либо ручного вмешательства.

Чтобы преобразовать подсхемы SPICE в эквивалентные компоненты Simscape, выполните следующие шаги.

  1. Используйте subcircuit2ssc функция для генерации файлов компонентов языка Simscape из файла списка сетей SPICE. Вы можете использовать дополнительный subcircuit1,…,subcircuitN входные параметры для определения подцепей, которые нужно преобразовать.

  2. Выполните любые необходимые ручные преобразования в сгенерированные файлы компонента Simscape. Чтобы идентифицировать необходимые преобразования вручную, проверьте комментарии в начале сгенерированных файлов компонента Simscape. Вы можете использовать дополнительный unsupportedCommands выходной аргумент для генерации struct массив, в котором перечислены неподдерживаемые команды SPICE для каждой подсхемы.

  3. Создайте библиотеку используя ssc_build или добавить отдельные компоненты к модели с помощью блоков Simscape Component.

Существует много различных симуляторов SPICE с изменениями в синтаксисе и синтаксической интерпретации. Помощник по преобразованию использует тот же синтаксис, что и Cadence® PSpice и, где такие различия существуют, соответствует PSpice.

Команды

Помощник преобразования SPICE поддерживает следующие команды:

  • .FUNC - Переиспользуемая функция

  • .PARAM - Определяемый параметр

  • .MODEL - Набор переиспользуемых параметров компонента

  • .SUBCKT - Подсхема

  • .LIB - Директива для включения моделей из внешнего нетлиста

  • .INC - Директива о включении содержимого внешнего нетлиста

Помощник по преобразованию реализует .FUNC Команды SPICE с использованием функций Simscape. Эти функции помещены в сублибрарий пакета с именем + 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>)
где r, c, и l значения являются масштабными коэффициентами для значения, заданного в объявлении компонента. Это поведение соответствует PSpice, но не согласовано во всех симуляторах.

Ассистент преобразования не преобразует начальные условия автоматически, заданные с помощью .IC оператор. Однако можно задать начальные условия для конденсаторов и индукторов, используя синтаксис IC=<value>. Кроме того, вы можете вручную преобразовать любое .IC операторы из сгенерированных файлов компонентов Simscape.

Потому что цель ассистента преобразования состоит в том, чтобы помочь преобразовать подсхемы SPICE в блоки Simscape, команды симуляции, такие как .TRAN, игнорируются.

Числовые суффиксы

Помощник по преобразованию поддерживает эти числовые суффиксы SPICE:

СуффиксИмяШкала
TTera1e12
GGiga1e9
MEGМега1e6
KКилограмм1e3
MМилли1e-3
MIL--25.4e-6
UМикро1e-6
NНано1e-9
PPico1e-12
FFemto1e-15

Математические функции

Ассистент преобразования поддерживает эти основные математические функции, используемые в SPICE и MATLAB.

Элементарная математика

ИмяФункция SPICEФункция MATLAB
Абсолютное значениеabsabs
Наименьший элементminmin
Самый большой элементmaxmax
Знаковая функцияsgnsign

Тригонометрия

ИмяФункция SPICEФункция MATLAB
Синусsinsin
Арксинусasinasin
Гиперболический синусsinhsinh
Косинусcoscos
Обратный косинусacosacos
Гиперболический косинусcoshcosh
Тангенсtantan
Обратный тангенсatanatan
Обратный тангенс с четырьмя квадрантамиatan2atan2
Гиперболический тангенсtanhtanh

Экспоненты и логарифмы

ИмяФункция SPICEФункция MATLAB
Степень** или pwr^ или power
Экспоненциалexpexp
Естественный логарифмln или loglog
Base-10 логарифмlog10log10
Квадратный кореньsqrtsqrt

Помощник по преобразованию интерпретирует log() как естественный логарифм, а не основа -10 логарифм. Не все симуляторы SPICE последовательны в этом отношении, поэтому убедитесь, что эта интерпретация соответствует вашей модели SPICE.

Другое

В сложение помощник по преобразованию поддерживает следующие функции SPICE:

ИмяФункция SPICE
Если условиеif
Насыщениеlimit
Ток через устройствоi
Напряжение на устройствеv
Функция шагаstp
Производная (см. Ограничения)ddt
Таблицаtable

Символы

Ассистент преобразования распознает следующие символы SPICE:

  • + в начале строки указывает продолжение линии от предыдущей строки

  • * в начале линии указывает, что вся линия является комментарием

  • ; внутри линии указывает начало встроенного комментария

Компоненты

Приведенные в этом разделе обозначения команд SPICE соответствуют следующим правилам:

  • <argument> ссылается на необходимый элемент в командной строке

  • <argument>* ссылается на необходимый элемент в командной строке, который происходит один или несколько раз

  • [argument] ссылается на дополнительный элемент в командной строке

  • [argument]* ссылается на дополнительный элемент в командной строке, который происходит в нули или более раз

В этом списке показан полный набор поддерживаемых компонентов SPICE и поддерживаемых ими обозначений списков СПАЙС. Вы можете задать только .MODEL параметры, которые отличаются от значений по умолчанию SPICE.

Источники

  • Независимый источник напряжения

    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> >*
    
  • Источник поведения (< выражение > не должно появляться в скобках {})

    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)

    N-P-N-СТРУКТУРА

    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, установите параметр Specify parasitics values равным Yes. Затем задайте значение параметров Capacitor parasitic series resistance или Inductor parasitic parallel conductance.

Ограничения

  • Список сетей должен быть написан в формате PSpice и быть синтаксически правильным. Ассистент преобразования не проверяет правильность синтаксиса PSpice.

  • Поддерживается только подмножество языка нетлиста PSpice. Однако неподдерживаемые команды PSpice идентифицируются в верхней части соответствующего файла компонента Simscape, чтобы облегчить ручное преобразование.

  • Чтобы создать сгенерированные компоненты Simscape в блоки Simscape, значения параметров должны соответствовать ограничениям Simscape. Для примера емкость основного конденсатора и индуктивность основного индуктора должны быть ненулевыми.

  • Ассистент преобразования не поддерживает использование производной функции SPICE, ddt, внутри вызова функции.

См. также

|

Похожие темы