Атрибуты и шаблоны символов
Обсудим синтаксис шаблона TEMPLATE. В задании на моделирование для программы PSpice описание каждого компонента занимает одну строку, в ней в определенном порядке перечисляются имена цепей, к которым подключаются выводы компонента. В частности, выводы биполярного транзистора должны быть перечислены в порядке коллектор-база-эмиттер.
Пусть, например, символ транзистора КТ315А имеет выводы с именами В (база), С (коллектор), Е (эмиттер) и атрибуты MODEL =KT315A, REFDES=Q?. Тогда его атрибут TEMPLATE должен иметь вид:
TEMPLATE
=
Q
^
@REFDES
%
C
%
B
%
E @MODEL
Если на принципиальной схеме, созданной редактором PSpice Schematics, имеется транзистор с позиционным обозначением VI, его база подключена к цепи с именем 5, коллектор – 22, а эмиттер – к неименованной цепи, которой по умолчанию присвоено имя $N_0004, то в списке соединений, составленном по команде Analyses › Create Netlist, появятся строки:
.ALIASES
Q_V1 Q1(C
=
22
B
=
5
E
=
$N_0004)
.ENDALIASES
Q_V1
22
5
$N_0004 KT315A
Здесь после директивы .ALIASES программы PSpice приведен список соответствий имен выводов символа транзистора именам цепей схемы, к которым они подключены. В последней строке указано имя транзистора на схеме, перечислены имена цепей, к которым подключены его выводы, и имя модели.
Перечень стандартных символов (библиотеки abm.slb, analog.slb, breakout.slb, port.slb, source.slb, special.slb) приведен в Приложении 2 [7].
Перейдем к систематическому описанию синтаксиса шаблона TEMPLATE. Шаблон состоит из списка атрибутов. Атрибуты, состоящие из стандартных символов, копируются в список соединений без изменений. Стандартные символы состоят из алфавитно-цифровых символов, знаков "$", "_", пробелов и знаков пунктуации.
Если перед именем атрибута помещен специальный знак "@", "?", "~", "#" или "&", то в зависимости от его вида атрибуты шаблонов заменяются следующими величинами:
- @<имя> – значением атрибута <имя>. В отсутствие указанного атрибута или его значения выдается сообщение об ошибке;
- &<имя> – значением атрибута <имя>, если этот атрибут определен;
- ?<имя>s…s – заменяется текстом, помещенным между одинаковыми символами s, если атрибут определен;
- ~<имя>s…s – заменяется текстом, помещенным между одинаковыми символами s, если атрибут не определен;
- #<имя>s…s – производятся те же действия, что при наличии знака "?", но остальная часть шаблона удаляется, если <имя> не определено.
Символы s, ограничивающие текст, могут быть любыми неалфавитными символами (сами они в список соединений не переносятся). Внутри этого текста допускается вложение, т.е. размещение атрибутов, предваряемых специальными знаками.
Знак "^" также специальный. Он заменяется указанием полного пути доступа к компонентам, имеющим иерархическую структуру. Для компонентов, находящихся на высшем уровне иерархии, в списке соединений этот знак заменяется знаком подчеркивания "_".
Последовательность знаков "\п" приводит к переходу на следующую строку в списке соединений. Так что шаблон TEMPLATE, который размещается на одной строке практически неограниченной длины, в списке соединений может быть размещен на нескольких строках. Кроме того таким способом в шаблоне TEMPLATE можно описать подключение к основному компоненту ряда дополнительных (например, учесть сопротивление потерь катушки индуктивностей и т.п.).
Имена выводов в шаблоне предваряются знаком "%". Имена выводов символов перечисляются в шаблоне в том порядке, в котором они должны быть записаны для каждого компонента по правилам PSpice (см. разд. 4.2-4.3). В списке соединений они замещаются именами цепей, к которым они подсоединены на схеме. В шаблоне под именем вывода понимаются все символы, расположенные между символом "%" и первым разделителем (пробелом или запятой).
Как известно, в программе PSpice имена компонентов в списке соединений должны начинаться с префикса, обозначающего их тип (R – резистор, Q – биполярный транзистор и т.п.). Поэтому, чтобы избежать ошибок, имена символов компонентов в библиотеке символов редактора PSpice Schematics состоят из префикса типа, полного иерархического пути и позиционного обозначения. Это обеспечивается с помощью определенной структуры шаблона. Например, атрибут TEMPLATE резистора начинается конструкцией:
TEMPLATE
=
R
^
@REFDES...