Компоненты SPICE можно преобразовать в Simscape™ эквиваленты с помощью мастера преобразования SPICE. Часто такое преобразование выполняется автоматически. Однако, поскольку SPICE является богатым языком, не всегда возможно выполнить полное преобразование без какого-либо ручного вмешательства.
Чтобы преобразовать подконтуры SPICE в эквивалентные компоненты Simscape, выполните следующие действия.
Используйте subcircuit2ssc для создания файлов компонентов языка Simscape из файла списка соединений SPICE. Вы можете использовать дополнительный subcircuit1,…,subcircuitN введите аргументы, чтобы указать, какие подконтуры следует преобразовать.
Выполните все необходимые преобразования вручную в созданные файлы компонентов Simscape. Чтобы определить необходимые преобразования вручную, проверьте комментарии в начале созданных файлов компонентов Simscape. Вы можете использовать дополнительный unsupportedCommands выходной аргумент для создания struct массив, в котором перечислены неподдерживаемые команды SPICE для каждой подкарты.
Построение библиотеки с помощью ssc_build или добавьте отдельные компоненты в модель с помощью блоков компонента Simscape.
Существует множество различных симуляторов SPICE с вариациями синтаксиса и синтаксической интерпретации. Помощник по преобразованию использует тот же синтаксис, что и Cadence ® PSpice, и, если такие различия существуют, соответствует PSpice.
Помощник по преобразованию SPICE поддерживает следующие команды:
.FUNC - Многократно используемая функция
.PARAM - Определяемый параметр
.MODEL - Набор многоразовых параметров компонента
.SUBCKT - Подсхема
.LIB - Директива о включении моделей из внешнего списка соединений
.INC - Директива о включении содержимого внешнего списка соединений
Помощник по преобразованию реализует .FUNC Команды SPICE с использованием функций Simscape. Эти функции помещаются в поддиапазон пакетов с именем +, где subcircuit_name_simscape_functionssubcircuit_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:
| Суффикс | Имя | Масштаб |
|---|---|---|
T | Tera | 1e12 |
G | Giga | 1e9 |
MEG | Мега | 1e6 |
K | Килограмм | 1e3 |
M | Милли | 1e-3 |
MIL | -- | 25.4e-6 |
U | Микро | 1e-6 |
N | Нано | 1e-9 |
P | Pico | 1e-12 |
F | Femto | 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 |
| Четырехквадрантная обратная касательная | atan2 | atan2 |
| Гиперболическая касательная | tanh | tanh |
| Имя | Функция SPICE | Функция MATLAB |
|---|---|---|
| Власть | ** или pwr | ^ или power |
| Показательный | exp | exp |
| Натуральный логарифм | ln или log | log |
| Base-10 логарифм | log10 | log10 |
| Квадратный корень | sqrt | sqrt |
Помощник по преобразованию интерпретирует log() в качестве натурального логарифма, а не базового-10 логарифма. Не все симуляторы SPICE согласованы в этом отношении, поэтому убедитесь, что эта интерпретация согласуется с вашей моделью SPICE.
Кроме того, помощник по преобразованию поддерживает следующие функции SPICE:
| Имя | Функция SPICE |
|---|---|
| Если условие | if |
| Насыщенность | limit |
| Ток через устройство | i |
| Напряжение на устройстве | v |
| Ступенчатая функция | stp |
| Производная (см. Ограничения) | ddt |
| Стол | table |
Помощник по преобразованию распознает следующие символы SPICE:
+ в начале строки указывает на продолжение строки от предыдущей строки
* в начале строки указывает, что вся строка является комментарием
; в строке указывает начало встроенного комментария
Обозначения команд SPICE в этом разделе соответствуют следующим правилам:
<argument> ссылается на обязательный элемент в командной строке
<argument>* ссылается на обязательный элемент в командной строке, который возникает один или несколько раз
[argument] ссылается на дополнительный элемент в командной строке
[argument]* ссылается на необязательный элемент в командной строке, который встречается ноль или более раз
В этом списке представлен полный набор поддерживаемых компонентов SPICE и поддерживаемые ими обозначения списков соединений 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>)
Полевой транзистор металл-оксид-полупроводник (МОП)
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
subcircuit2ssc.Для пассивных устройств, таких как конденсаторы и индукторы, чтобы ввести паразитные значения в создаваемые файлы компонентов Simscape, установите для параметра Указать паразитные значения значение Да. Затем задайте значение паразитного последовательного сопротивления конденсатора или параметры параллельной проводимости индуктора.
Список соединений должен быть написан в формате PSpice и быть синтаксически корректным. Помощник по преобразованию не проверяет правильность синтаксиса PSpice.
Поддерживается только подмножество языка списка соединений PSpice. Однако неподдерживаемые команды PSpice определяются в верхней части соответствующего файла компонента Simscape для облегчения преобразования вручную.
Чтобы создать сгенерированные компоненты Simscape в блоках Simscape, значения параметров должны соответствовать ограничениям Simscape. Например, емкость основного конденсатора и индуктивность основного индуктора должны быть ненулевыми.
Помощник по преобразованию не поддерживает использование производной функции SPICE, ddt, внутри вызова функции.