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

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

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

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

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

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

Существует много различных средств моделирования 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
Основывайте 10 логарифмовlog10log10
Квадратный кореньsqrtsqrt

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

Другой

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

ИмяФункция SPICE
Если условиеif
Насыщениеlimit
Текущий через устройствоi
Напряжение через устройствоv
Ступенчатая функцияstp

Символы

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

Ограничения

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

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

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

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

|

Похожие темы