Преобразование списка соединений 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 с изменениями интерпретацией синтаксиса и синтаксисе. Ассистент преобразования использует тот же синтаксис в качестве Кэденс® 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>)
где rC, и 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 и Simscape. Эти основные математические функции не могут быть непрерывными или сглаживать и могут вызвать числовые проблемы во время симуляции. Чтобы решить эти проблемы, эти функции могут потребовать сглаживания.

subcircuit2ssc функция автоматически включает параметры сглаживания при преобразовании подсхемы SPICE. Чтобы отключить опцию сглаживания, в маске блока сгенерированного блока компонента Simscape, устанавливают параметр Specify function smoothing parameters на No.

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

ИмяФункция SPICEФункция Simscape
Абсолютное значениеabssimscape.function.abs (x, ZC)
Самый маленький элементminsimscape.function.minm (x, y, n, эпсилон)
Самый большой элементmaxsimscape.function.maxm (x, y, n, эпсилон)
Знаковая функцияsgnsimscape.function.sign (x, ZC)

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

ИмяФункция SPICEФункция Simscape
Синусsinsin
Обратный синусasinsimscape.function.asinm (x, предупредите),
Гиперболический синусsinhsimscape.function.sinhm (x, maxAbsX, предупреждают),
Косинусcoscos
Обратный косинусacossimscape.function.acosm (x, предупредите),
Гиперболический косинусcoshsimscape.function.coshm (x, maxAbsX, предупреждают),
Тангенсtansimscape.function.tanm (x, флаг, эпсилон, x0, предупреждает),
Обратный тангенсatanatan
Обратный тангенс с четырьмя квадрантамиatan2atan2
Гиперболический тангенсtanhtanh

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

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

Другой

Кроме того, ассистент преобразования поддерживает эти SPICE и функции Simscape:

ИмяФункция SPICEФункция Simscape
Если условиеifif else
Насыщениеlimitsimscape.function.limitm (x, a, b, n, эпсилон)
Текущий через устройствоii
Напряжение через устройствоvv
Ступенчатая функцияstpif x>0, 1 else 0 end
Производная (см. ограничения),ddtder
Таблицаtablesimscape.tablelookup([x1,x2,…xn],[y1,y2,…yn],x,interpolation=linear,extrapolation=nearest)

Список функций Simscape

<argumentlist>

Эта функция всегда выводит положительное значение. Используйте эту функцию, чтобы защитить от проблем, таких как деление на нуль. epsilon определяет гладкость перехода и абсолютная погрешность функции ипохондрии когда x=0.

Когда x> epsilon, выход этой функции стремится к x.

Эта функция возвращает абсолютное значение входного параметра, x.

Можно включить или отключить нуль, пересекающийся путем определения входного параметра ZC к любому true или false.

Эта функция возвращает экспоненциал x, exp(x), когда x области значений между xl и xl. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

Используйте эту функцию, чтобы избежать числовых проблем, сопоставленных с exp(x) для очень маленьких или больших входных параметров.

Эта функция возвращает гиперболический косинус x, cosh(x), когда x области значений между -maxAbsX и maxAbsX. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

Используйте эту функцию, чтобы избежать числовых проблем, сопоставленных с cosh(x) для больших отрицательных или больших положительных входных параметров.

Эта функция возвращает гиперболический синус x, sinh(x), когда x области значений между -maxAbsX и maxAbsX. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

Используйте эту функцию, чтобы избежать числовых проблем, сопоставленных с sinh(x) для больших отрицательных или больших положительных входных параметров.

Эта функция возвращает обратный косинус x, acos(x), для -1≤x≤1, 0 для x>1, и π для x<-1. Это защищает от маленьких числовых вторжений в недопустимый входной диапазон для acos(x).

Эта функция возвращает обратный синус x, asin(x), для -1≤x≤1, 0 для x>1, и π для x<-1. Это защищает от маленьких числовых вторжений в недопустимый входной диапазон для asin(x).

Эта функция возвращает x ограниченный между xl и xh. Входной параметр, n, устанавливает порядок функции сглаживания.

Аргумент epsilon определяет запуск перехода и абсолютная погрешность функции, когда x равен любому xl или xh.

Эта функция возвращает натуральный логарифм x, log(x), когда x больше x0. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

Используйте эту функцию когда значение x достигает близко к 0 в процессе моделирования. Установите x0 между 0 и 1.

Эта функция возвращает основу 10 логарифмов x, log10(x), когда x больше x0. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

Используйте эту функцию когда значение x достигает близко к 0 в процессе моделирования. Установите x0 между 0 и 1.

Эта функция возвращает самый большой аргумент между x и y. Входной параметр, n, устанавливает порядок функции сглаживания.

Аргумент epsilon определяет запуск перехода и абсолютная погрешность функции, когда x равен любому y.

Эта функция возвращает самый маленький аргумент между x и y. Входной параметр, n, устанавливает порядок функции сглаживания.

Аргумент epsilon определяет запуск перехода и абсолютная погрешность функции, когда x равен y.

Функция степени x^y, где y рационально, с защитой для отрицательного x.

Если flag аргументом является 0, функция возвращает x^y для x≥0 и -(-x)^y для x<0. Если flag аргументом является 1, примените функцию степени к simscape.function.hyp(x,epsilon).

Ассистент преобразования SPICE преобразует pwr(x,y) SPICE функционируют к simscape.function.powerRational(x,y,1,0,warn)

Ассистент преобразования SPICE преобразует pwrs(x,y) SPICE функционируют к simscape.function.powerRational(x,y,0,0,warn)

Эта функция возвращает знак входного параметра, x.

Можно включить или отключить нуль, пересекающийся путем определения входного параметра ZC к любому true или false.

Функция квадратного корня с защитой входного параметра.

Если flag аргументом является 0, эта функция возвращает sqrt(x) для положительного x и -sqrt(-x) для отрицательного x. Если flag аргументом является 1, примените функцию квадратного корня к simscape.function.hyp(x,epsilon).

Функция тангенса с входной защитой.

Если flag аргументом является 0, эта функция возвращает касательную x, tan(x), когда x равно или -π/2. epsilon аргумент определяет гладкость перехода в этих точках.

Если flag аргументом является 1, эта функция возвращает касательную x, tan(x), когда x области значений между -x0 и x0. В противном случае это использует линейную экстраполяцию с градиентом, соответствующим за пределами.

1/epsilon максимальное позволенное значение выходного аргумента y.

</argumentlist>

Символы

Ассистент преобразования распознает эти символы 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>)
    

  • Полевой транзистор металлооксидного полупроводника (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.

Значения Parasitics

Для пассивных устройств, таких как конденсаторы и индукторы, чтобы ввести паразитные значения в сгенерированных файлах компонента Simscape, устанавливают параметр Specify parasitics values на Yes. Затем задайте значение параметров Inductor parasitic parallel conductance или Capacitor parasitic series resistance.

Ограничения

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

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

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

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

Смотрите также

|

Похожие темы