Stuart Brorson
Electroniscript, inc.
sdb@electroniscript.com
5 января 2006
Перевод: Владимир Жбанов, 2010-2011 гг.
Предисловие
Linux становится всё более и более популярной
платформой для проектирования. Благодаря программистам сообщества свободного
программного обеспечения для проектирования электрических схем становятся
доступны приложения САПР профессионального качества.
Предпочтительным инструментарием
проектирования электронных схем является gEDA Suite. Теперь и в Linux
доступно моделирование
аналоговых процессов в электрических схемах с помощью
SPICE. В настоящем документе описывается
маршрут проектирования, используемый для выполнении
SPICE-моделирования программными средствами gEDA в Linux.
Настоящий документ разрешается копировать, распространять и/или изменять под условиями Лицензии Свободной Документации GNU1) версии 2 или любой более поздней, опубликованной организацией Free Software Foundation, без неизменяемых разделов, без текстов передней и задней обложки. Вы можете получить копию Лицензии Свободной Документации GNU от Free Software Foundation, посетив её веб-страницу (http://www.fsf.org/) или написав письмо по адресу: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 2)
Современное проектирование является дисциплиной, интенсивно использующей вычислительную технику. Как и специалисты, работающие в других сферах проектирования, инженеры-электротехники и проектировщики электроники активно используют все виды программного обеспечения САПР, включая как программы для проектирования электрических схем и моделирования их работы, так и для производства печатных плат и интегральных схем. САПР, используемые инженерами-электротехниками, имеют особое название — САПР электроники. Это название объединяет разные виды программ САПР. Например, на этапе работы с графическими средствами инженер для ввода проекта в компьютер использует программу схемотехнического проектирования — редактор схем. Редактор схем — это, по существу, специализированная чертёжная программа, включающая набор символов, используемых для создания схем. После ввода схемы инженеру может быть нужно промоделировать процессы в её цепях, чтобы проверить, что разработанная им схема будет работать именно так, как нужно. Наиболее популярная программа для этих целей — SPICE (Simulation Program with Integrated Circuit Emphasis), её разрабатывали в Беркли3) начиная с 70-х годов и сегодня она широко доступна в разных формах. Сейчас SPICE считается фундаментальным средством проектирования и является существенной частью занятий большинства обучающихся инженеров.
Проект gEDA — работа по созданию в рамках программного обеспечения с открытым исходным кодом набора программ САПР электроники для Linux под лицензией GPL. Проект gEDA уже настолько развит, что мощь и качество его программ весьма высоки; сегодня используя gEDA Suite можно создавать сложные списки соединений (файлы) SPICE, включающие в себя файлы моделей поставщиков компонентов. Затем с помощью этих файлов можно производить SPICE-моделирование, используя различные программы моделирования, работающие в Linux. Цель настоящего документа — объяснить, как использовать программные средства gEDA (обычно работающие в Linux) для выполнения SPICE-моделирования. В частности здесь описывается использование spice-sdb, продвинутого драйвера генератора списка соединений gEDA (gnetlist), применяемого для создания списков соединений SPICE. spice-sdb входит в набор программ gEDA; если вы установили gEDA, то для создания списков соединений SPICE всё уже готово. Также в настоящем HOWTO приводятся советы по использованию ngspice/tclspice и/или LTSpice для моделирования работы схем, списки соединений для которых созданы с помощью spice-sdb.
Настоящий HOWTO не является учебником по проектированию электрических схем или по SPICE-моделированию. Он, скорее, создан для того, чтобы помочь обучающимся инженерам начать использовать gEDA для SPICE-моделирования на платформе Linux. Поэтому я предполагаю, что вы в общих чертах уже знакомы с разработкой электронных схем, механикой ввода схем в программах САПР и SPICE-моделированием. Я также предполагаю, что вы достаточно знакомы с операционной системой GNU/Linux и с её рабочим окружением. Наконец, я предполагаю, что вы уже установили программы gEDA и знаете как ими пользоваться. Если вам нужно быстрее набраться опыта в каком-то из указанных вопросов, дополнительную информацию можно найти на следующих веб-страницах:
Настоящий документ не живёт в изоляции. В создании данного HOWTO мне помогало несколько активных членов сообщества свободных САПР электроники. Во-первых и прежде всего, Paolo Nenzi, автор ngspice, взял мой исходный HOWTO и перевёл его в документ Lyx, который я мог затем перевести в DocBook. Спасибо тебе, Paolo, за помощь в работе над этим HOWTO и, что более важно, спасибо за твою великолепную работу над ngspice! Также во главе списка значится Ales Hvezda, движущая сила проекта gEDA. Без него ничего из этого не было бы теперь возможным; его вклад в виде программы gschem неоценим. Спасибо, Ales, за создание gEDA и распространение по миру под лицензией GPL — ты начал революцию! Stefan Jones заслуживает огромной благодарности за его работу над tclspice, любезную поддержку и усилия по интеграции, когда я предлагал исправления для проекта tclspice. Я также должен поблагодарить W. Kazubski и S. Gieltjes — они написали исходные версии генераторов списков соединений SPICE, на которых основывается мой gnet-spice-sdb.scm. Я также хочу поблагодарить Ken Healy за добавление исправления сортировки списка соединений, и Peter Kaiser за то, что побудил меня включить некоторые возможности, полезные для моделирования интегральных схем. Peter заслуживает также благодарности за написание некоторых разделов данного документа, относящихся к устройствам. Наконец, я признателен за помощь и предложения, полученные от читателей списка рассылки geda-user. Прелесть свободного программного обеспечения в том, что оно побуждает к сотрудничеству, а это значит, что конечный результат всегда будет лучше того, которого можно было бы достичь в одиночку.
В САПР электроники важна концепция “маршрута проектирования”. gEDA — это набор программных средств для проектирования электроники, а не одно приложение. И “маршрут проектирования” определяет порядок использования этих средств для достижения цели. В зависимости от того, проектируете ли вы аналоговую или цифровую схему, разрабатываете ли платы или интегральные схемы, от того, какой тип файлов требуется производителю ваших плат, и от ряда других факторов, для достижения цели будут использоваться различные средства gEDA Suite.
Блок-схема, на которой представлен маршрут проектирования в gEDA, показана на рисунке ниже. На блок-схеме показана простая последовательность, пригодная для проектирования, моделирования и разводки печатных плат. Как можно увидеть, моделирование (голубые блоки) циклически повторяется. Это значит, что после создания схемы её моделирование производится повторно до тех пор, пока её поведение не будет соответствовать требуемым спецификациям. Маршрут проектирования в gEDA. В блоке “Моделирование” в скобках указано несколько разных программ, пригодных для моделирования. В рамках настоящего документа нас интересуют только SPICE-варианты (например, ngspice, tclspice).
Концептуально SPICE-моделирование в gEDA включает следующие этапы:
На приведённой выше блок-схеме эти этапы отмечены голубым цветом.
Чтобы создать список соединений SPICE, генератор списка соединений (gnetlist) циклически проходится по всей схеме и проверяет особые части символов каждого из компонентов для формирования частей кода. Как правило, для каждого компонента может генерироваться одна или более строк кода SPICE. Информация о компоненте, необходимая генератору списка соединений, содержится в двух местах:
device
, который прикрепляется при создании символа и обычно редактируется в редакторе символов.Так как генератор списка соединений ищет информацию в двух местах, необходимо обеспечить, чтобы требуемая информация имелась в каждом из них.
Вот более подробный перечень шагов, необходимых для разработки и моделирования работы схем в gEDA:
device
. (Обычно правильные атрибуты device
устанавливаются в процессе создания символов и поэтому чаще всего уже заданы, но если у вас проблемы, не помешает их проверить.)value
, model
, file
, type
и др.) в gschem или gattrib.refdes
, например с помощью refdes_renum.gnetlist -g spice-sdb
.Цель настоящего документа состоит в том, чтобы дать вам чёткое понимание деталей данного процесса, необходимое для его успешного направления.
При создании символов для схемы нужно обеспечить, чтобы некоторые встроенные атрибуты были заданы правильно. Приводимые ниже изменения такого рода осуществляются либо редактированием нужного символа в графическом интерфейсе редактора символов gschem, либо редактированием файла символа в текстовом редакторе.
Генератор списка соединений SPICE может идентифицировать любой конкретный символ по одному из двух атрибутов:
device
илиrefdes
.Каждый из них прикрепляется к символу во время его создания.
К каждому символу прикреплён атрибут device
. Этот атрибут
генератор списка соединений проверяет при обработке символа первым. Есть
несколько поддерживаемых генератором списка соединений устройств (“родных” для
него), имеется в виду, что генератор точно знает, как обходиться с данными
типами устройств. Непосредственно поддерживаются RESISTOR, CAPACITOR,
NPN_TRANSISTOR и т. д. Полный список поддерживаемых устройств представлен
в Приложении A.
Обычно при работе в gschem атрибуты device
остаются скрытыми. Чаще
всего правильные значения этих атрибутов уже заданы в символах их
авторами. Но поскольку атрибут device
скрыт от обычного
пользователя, он может иногда являться причиной проблем при создании списка
соединений SPICE, если установлен в непредвиденное значение. Чтобы увидеть
атрибуты device
, нужно перейти в редактор символов (выделить символ для
редактирования и из меню выбрать Иерархия → Внутрь символа, а затем
переключить видимость атрибутов (Правка → Показать/Скрыть
невидимый текст). Можно также открыть файл этого символа в текстовом
редакторе и, если атрибут device
неправилен, изменить его там.
Если символ не поддерживается (то есть генератор списка соединений не
находит соответствующего встроенного типа), то чтобы определить, как
его обрабатывать, генератор опирается на первую букву значения атрибута
refdes
.
Префикс (первая часть) значения refdes
также встраивается в символ при его
создании. Примерами префиксов refdes
являются R для резисторов, C для
конденсаторов, Q для транзисторов и т. д. Правильные префиксы для SPICE
перечислены в Приложении A. Заметьте, что опираться на
refdes
для идентификации компонента в SPICE небезопасно, — по его
значению генератор списка соединений не сможет, например, различить
транзисторы структуры NPN и PNP. Поэтому в своих символах лучше всего
всегда использовать атрибут device
, задавая для него значение, поддерживаемое
генератором.
Выводы компонента выдаются генератором списка соединений в порядке, заданном
посредством атрибутов pinseq
. Заметьте, что он не тождественен порядку
физического расположения выводов. Для установки атрибутов pinseq
сначала
следует определить нужный вам порядок выводов. В SPICE для многих компонентов,
в том числе для диодов и транзисторов, используется особый порядок выводов.
Например, выводы биполярного транзистора перечисляются в порядке CBE
(коллектор-база-эмиттер).
Другой пример: если ваш символ должен представлять интегральную схему (ИС) с
моделью в виде файла .subckt
поставщика, то порядок соединений для
этой подсхемы устанавливается в файле строкой .subckt
.
Как только вы узнали порядок выдачи выводов для электронного компонента,
просто задайте правильную последовательность в их атрибутах pinseq
.
Таким образом и будет обеспечен правильный порядок.
Файлы, содержащие сложные модели или другой код SPICE, могут быть встроены в результирующий список соединений при добавлении в схему соответствующих символов. Файлы моделей SPICE обычно можно найти у поставщиков компонентов. Работа с ними проста. Тем не менее при подготовке моделей для принципиальной схемы некоторые моменты всё же стоит иметь в виду:
.subckt
необязательно соответствует порядку их физического расположения для компонента. Как описано выше, выводы выдаются генератором списка соединений в порядке, заданном атрибутами pinseq
.Схемотехническое проектирование — это процесс, в котором используется специализированная чертёжная программа-редактор для вычерчивания проектируемой схемы. В окружении gEDA для разработки принципиальных схем используется программа gschem. Я предполагаю, что вы уже знаете, как использовать gschem. Если нет, обратитесь к документации, доступной на веб-сайте gEDA: http://www.geda-project.org/. Чтобы создать список соединений SPICE, вам будет нужно прикрепить к компонентам необходимые атрибуты в gschem и, возможно, включить в свой список соединений ещё и дополнительные директивы SPICE. После завершения создания схемы вам будет нужно создать список соединений SPICE, запустив для неё генератор списка соединений gEDA gnetlist.
В gschem есть несколько вариантов привязки атрибутов SPICE к компонентам. Вариант, который выберете вы, зависит от многих факторов, в том числе от типа компонента, размера и формата SPICE-модели.
Здесь приведены те атрибуты, что имеют значение при создании списков соединений SPICE и могут быть прикреплены к символам компонентов в gschem:
refdes
: позиционное обозначение компонента. Допустимые значения зависят от типа компонента и приведены в Приложении A;value
: для пассивных компонентов — это значение физической величины компонента (сопротивления, индуктивности, ёмкости), для активных — это тип (номер модели) компонента (например, 2N3904, uA741). Если модель активного компонента добавляется в схему как отдельный объект, атрибут value
символа данного компонента должен содержать её название;model
: однострочная SPICE-модель компонента;file
: имя файла. Обычно это файл, содержащий, например, .MODEL
, .SUBCKT
, или другой код SPICE;model-name
: название SPICE-модели, вызываемой из оператора .MODEL
или .SUBCKT
. model-name
используется главным образом для определения названия SPICE-модели в символе spice-model-1.sym
. При привязке активного компонента к конкретной модели или к подсхеме её название должно вызываться из атрибута device
, а не из model-name
;type
: Определяет тип компонента и используется в SPICE при интерпретации параметров модели. Допустимые значения зависят от моделируемого устройства.
Для трактовки относящихся к SPICE атрибутов генератору списка соединений
нужно, чтобы к каждому компоненту схемы был прикреплён атрибут refdes
.
Этот атрибут может устанавливаться либо вручную (что утомительно), либо с
помощью входящей в дистрибутив gEDA программы refdes_renum.
Учтите, что первые буквы refdes
должны соответствовать буквам, указанным в
соглашении по позиционным обозначениям для SPICE-моделирования. Это соглашение
приведено в таблице 1 приложения A.
Наиболее часто в SPICE приходится иметь дело с базовыми пассивными компонентами, такими как резисторы и конденсаторы, которым кроме числовых значений никаких дополнительных атрибутов для моделирования не задаётся. Для них должны быть заданы следующие атрибуты:
refdes
: точное позиционное обозначение компонента;value
: для пассивных элементов это числовое значение физической величины компонента, а именно сопротивления, ёмкости или индуктивности (например, 100pF). Этот атрибут может задаваться и для активных компонентов, но если где-то в схеме нет атрибута model
, атрибут value
не используется (во всяком случае для создания списков соединений SPICE).
Если у компонента кроме refdes
и value
других атрибутов нет, генератор списка соединений запишет в выходной файл только одну строку.
refdes
= R2value
= 220
Результирующая строка SPICE: R2 0 4 220
(обратите внимание, что “0” и “4” — это имена узлов подключенных к
компоненту соединений, генерируемые программой gnetlist автоматически.)
refdes
= C22value
= 1UF
Результирующая строка SPICE: C22 4 23 1UF
Часто при SPICE-моделировании для пассивных компонентов задаются
дополнительные атрибуты. В качестве примера можно назвать атрибуты для задания
температурных коэффициентов сопротивлений резисторов и исходного
состояния для реактивных компонентов. Чтобы включить эти атрибуты в
результирующий файл SPICE, их нужно просто прописать как значение атрибута
model
компонента. Вот, собственно, перечень необходимых атрибутов:
refdes
: точное позиционное обозначение компонента;value
: как всегда числовое значение физической величины компонента;model
: одна строка дополнительных параметров в допустимом для SPICE формате.
Эта строка включается в генерируемую программой gnetlist строку для
компонента после значения его величины. Поэтому важно, чтобы строка значения
атрибута model
задавалась в виде допустимого кода SPICE. Иначе вы рискуете
вызвать ругань программы моделирования.
refdes
= R5value
= 1MEGmodel
= TC=0.001,0.015
Результирующая строка SPICE: R2 0 4 220 TC=0.001,0.015
При разработке ASIC для определения параметров резисторов и конденсаторов часто используются их размеры. Программа SPICE берёт из технологической библиотеки типичное удельное значение физической величины и сама рассчитывает фактическое значение сопротивления или ёмкости соответственно в омах или фарадах. Поэтому в этом случае требуются следующие атрибуты:
refdes
: точное позиционное обозначение компонента;model-name
: соответствует модели в технологической библиотеке;w
, l
: размеры устройства.
Технологическая библиотека должна быть подключена во входном файле SPICE
строкой .include
.
refdes
= R6model-name
= rpolyw
= 3ul
= 100u
Результирующая строка SPICE: R6 0 5 rpoly w=3u l=100u
model rpoly R rsh=300
Это должно быть частью технологической библиотеки вашего поставщика ASIC.
С транзисторами и диодами обычно идёт модель, специфичная для устройства. Каждая модель должна представлять детальную нелинейную динамику конкретного устройства, иначе моделирование теряет смысл. SPICE-модель может быть или в виде краткого, однострочного описания, или в виде многострочного набора параметров. Типичным однострочным описанием является перечень параметров для описания характеристик малосигнального диода. Типичные многострочные модели поставляются поставщиками компонентов, которые для своих компонентов часто предлагают текстовые файлы моделей. Так как для представления информации в SPICE существует два широко распространённых формата, то имеется и два подхода для включения этих параметров в схему:
Чтобы в список соединений включить однострочное описание параметров SPICE, к компоненту должны быть прикреплены следующие атрибуты:
refdes
: точное позиционное обозначение компонента;value
: номер модели или тип (номер) прибора для компонента.model-name
: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут value
, этот параметр необязателен.model
: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — gnetlist сам это сделает за вас.refdes
= D5model-name
= 1N1004model
= IS=0.5UA RS=6 BV=5.20
Результирующая строка SPICE:
D5 2 6 1N1004 MODEL 1N1004 D (IS=0.5UA RS=6 BV=5.20)
Чтобы включить в список соединений файл с параметрами SPICE, к компоненту должны быть прикреплены следующие атрибуты:
refdes
: точное позиционное обозначение компонента;value
: номер модели или тип (номер) прибора для компонента.model-name
: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут value
, этот параметр необязателен.file
: Имя файла той SPICE-модели, которую нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами лучше, вероятно, использовать абсолютный путь.
Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
самое название модели, что и в прикреплённых к компоненту атрибутах value
или model-name
. К тому же неплохо бы проверить, что выводы в файле модели
SPICE и в символе компонента имеют одинаковое назначение.
Интегрированные схемы включаются в список соединений подобно транзисторам и диодам. Фактически код SPICE можно включать или как однострочное описание параметров или в виде файла модели.
Для включения в список соединений однострочного описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
refdes
: точное позиционное обозначение компонента;value
: номер модели или тип (номер) прибора для компонента.model-name
: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут value
, этот параметр необязателен.model
: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — gnetlist сам это сделает за вас.Для включения в список соединений файла описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
refdes
: точное позиционное обозначение компонента; обратите внимание, что если файл содержит .MODEL
, refdes
должно начинаться с U; если файл содержит .SUBCKT
, refdes
должно начинаться с X. Генератор списка соединений проверяет тип файла и пытается обработать его правильно, но если вы не следуете этому правилу, могут возникнуть проблемы.value
: номер модели или тип (номер) прибора для компонента.model-name
: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут value
, этот параметр необязателен.file
: имя файла содержащего .MODEL
или .SUBCKT
, который нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами, вероятно, лучше использовать абсолютный путь.
Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
самое название модели, что и в прикреплённых к компоненту атрибутах value
или model-name
. К тому же неплохо бы проверить, что выводы в файле SPICE-модели
и в символе компонента имеют одинаковое назначение.
Есть два вида независимых источников: источники напряжения и источники тока. Оба типа включаются в список соединений SPICE одинаково. Для включения в свой список соединений независимого источника нужно сделать следующее:
spice
→ <имя независимого источника>.sym
)refdes
: V? или I?;value
: однострочное описание источника в формате SPICE.Есть четыре зависимых источника:
: Данный раздел требует доработки.
В некоторых случаях может быть желательно внедрить блок SPICE-модели
непосредственно в схему. Это можно сделать, когда у вас есть несколько
устройств с атрибутами value
, в которых вызывается SPICE-модель. В зависимости от
того, является ли блок SPICE однострочным или многострочным, код можно
встроить одним из двух способов:
spice
→ spice-model-1.sym
)refdes
: A?model
: название модели (т. е. название, используемое в компонентах, для которых будет производиться моделирование)type
: один из допустимых типов компонентов, определённых в спецификации SPICE.value
: соответствующая однострочная SPICE-модель.spice
→ spice-model-1.sym
)refdes
: A?model
: название модели (т. е. название, используемое в компонентах, для которых будет производиться моделирование)file
: имя файла, содержащего код SPICE-модели (т. е. .MODEL
или .SUBCKT
).
Блок включения добавляет в список соединений директиву .INCLUDE
.
spice
→ spice-include-1.sym
)refdes
: A?file
: имя подключаемого файла.
При наличии в схеме блока директивы, в списке соединений создаётся специальный
блок кода SPICE. Директивой может подключаться либо файл с операторами, либо
строка, содержащаяся в атрибуте model
. Генератор списка соединений выводит
содержимое строки или файла в список соединений дословно. Подходящими
примерами использования директивы является подключение следующих операторов:
Для добавления в схему директивы SPICE, сделайте следующее:
spice
→ spice-directive-1.sym
)refdes
: A?file
: имя подключаемого файла.
При SPICE-моделировании часто возникают ситуации, когда хочется
представить схему какого-либо конкретного компонента в виде .SUBCKT
, а
затем внедрить модель этого компонента в основную схему. Приведём довольно
распространённый пример. Допустим, при моделировании СВЧ-схемы
вы решили использовать такую модель конденсатора, которая содержит не только
ёмкость, но и паразитные индуктивности и сопротивления. Производители
конденсаторов часто поставляют схемы, отражающие схемную топологию имеющихся
паразитных элементов, и указывают значения соответствующих сопротивлений и
индуктивностей. И вам бы хотелось начертить модель такого конденсатора в
gschem, создать с помощью генератора списка соединений файл
.SUBCKT
, а затем использовать этот файл для моделирования процессов в
основной схеме.
Поскольку такого рода задачи при SPICE-моделировании являются довольно
обычными, то теперь их можно выполнять и с помощью gnet-spice-sdb (начиная
с версии 20030331).
Для создания файла .SUBCKT
подсхемы и использования его в
основной схеме нужно сделать следующее:
spice-subcircuit-LL
(spice-subcircuit-LL-1.sym
). Этим самым генератору списка соединений указывается, что эта схема является подсхемой для создания .SUBCKT
. Прикрепите к символу блока атрибут:model-name
= cap_with_parasitics.SUBCKT cap_with_parasitics
.spice-subcircuit-IO
(spice-subcircuit-IO-1.sym
). Пронумеруйте позиционные обозначения символов ввода/вывода в таком порядке, в каком соединения ввода/вывода должны перечисляться в строке .SUBCKT
выходного файла (т. е. P1 — для первого, P2 — для второго и т. д.).cap_with_parasitics.sch
, список соединений для неё создаётся командой: gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch
При этом список соединений SPICE будет записан в файл cap_with_parasitics.cir
. Внимательно просмотрите этот файл и убедитесь, что список соединений создан правильно.
.SUBCKT
. Обратите внимание, что позиционное обозначение данного символа должно начинаться с буквы X. Чтобы обеспечить это, сделайте следующее:.SUBCKT
были перечислены в одинаковом порядке. Это делается редактированием символа в текстовом редакторе и установкой атрибутов pinseq
. Генератор списка соединений выведет выводы в порядке, заданном в этих атрибутах.device
, например, capacitor-model. Не задавайте в этом атрибуте ни один из тех типов компонентов, что поддерживаются в SPICE и перечислены в приложении! Ваша цель — сделать особый символ, позиционное обозначение refdes
которого начинается с X, а если же в device
указан тип, распознаваемый в SPICE, этой цели не достичь.refdes
в X?..SUBCKT
, дважды щёлкните по нему и установите следующие атрибуты:file
= cap_with_parasitics.cirmodel-name
= cap_with_parasiticsrefdes
)..SUBCKT
будет записано в основной список соединений. Откройте полученный файл в текстовом редакторе и внимательно проверьте, что список соединений создан правильно. Особое внимание обратите на следующее:.SUBCKT
подсхемы к основному списку соединений, перечислены в правильном порядке..SUBCKT
) используется одно и то же название модели.Как только список соединений готов, вы тотчас же можете начать моделирование своего проекта любой предпочитаемой программой SPICE-моделирования. Некоторые из работающих в Linux программ описаны ниже.
Когда схема начерчена, список соединений SPICE можно создать с помощью
программы gEDA gnetlist, запустив её из командной строки и задав в качестве
аргументов имена файлов схем. gnetlist сконструирована из двух частей:
оболочки — процессора, написанного на C, читающего файл .sch
и
создающего из него внутреннее, общее представление проекта, и драйверов на
Scheme — генераторов списков соединений. С такой архитектурой gnetlist
является очень гибко настраиваемой программой — с помощью разных драйверов на
Scheme производятся списки соединений в разных форматах. Красота этой схемы
(намеренный каламбур) в том, что пользователи gEDA легко могут и сами написать
подходящие генераторы списков соединений для своих собственных нужд. Файл
драйвера на Scheme, с реализацией усовершенствованного создания списков
соединений SPICE, называется gnet-spice-sdb.scm
и находится в каталоге
${PREFIX}/geda/share/gEDA/scheme
.
Из командной строки вызов драйвера spice-sdb для gnetlist производится следующим образом:
gnetlist [OPTIONS] -g spice-sdb filename1 ... filenameN
Для spice-sdb могут быть полезны следующие ключи командной строки:
-i интерактивный режим Scheme -I записать в выходной файл ''.INCLUDE <filename>'' вместо содержимого файла модели -q безмолвный режим -l filename загрузка файла Scheme перед загрузкой драйвера -m filename загрузка файла Scheme после загрузки драйвера, но всё же до выполнения процедуры -g proc выполнение процедуры Scheme (то есть spice-sdb) -o filename имя файла выходного списка соединений -c string выполнить строку как скрипт Scheme -v режим подробного вывода сообщений -s сортировка выходного списка соединений (для gnucap)
Создать список соединений SPICE из схемы довольно просто. Для этого сделайте следующее:
filename.sch
.gnetlist -g spice-sdb filename.sch
. Список соединений будет выведен в файл output.net
. Кроме того, с помощью ключа -o
можно задать другое имя выходного файла. Например, при задании такой команды: gnetlist -g spice-sdb -o amplifier.cir amplifier.sch
схема будет взята из файла amplifier.sch
, а список соединений SPICE будет записан в файл amplifier.cir
.
Здесь мы попытаемся перечислить наиболее общие проблемы, возникающие при создании списков соединений и соответствующие решения:
pinseq
символа, не начинается с 1 или в ней имеются пропуски. Это можно починить, отредактировав такой символ в текстовом редакторе.gnetlist -v -g spice-sdb filename.sch
). Тогда генератор списка соединений остановит обработку на компоненте с пропущенным атрибутом и выдаст ошибку. Определив таким образом компонент-нарушитель, вы можете заново открыть схему в gschem и поправить атрибуты.Наконец, помните, что прежде, чем использовать свой список соединений SPICE для моделирования, важно внимательно его проверить. Имейте в виду, что данный генератор списка соединений всё ещё находится в стадии “бета-версии” и какие-то проблемы с созданием списков соединений возможно ещё имеются.
Для SPICE-моделирования в GNU/Linux есть несколько вариантов, я отмечу три:
Есть ещё программа моделирования gnucap под лицензией GPL, основанная на (или являющаяся потомком) Al's Circuit Simulator (ACS). Я её особо не использовал, поэтому информация о gnucap здесь отсутствует и её нужно добавить ().
Программа LTSpice была написана в Linear Technologies, её авторы — Mike Englehardt и другие. Затем LinearTech отдала её в свободное пользование как вспомогательное средство для проектирования инженерам, желающим моделировать характеристики её контроллеров блоков питания, работающих в ключевом режиме. Пакет предоставляет оболочку для редактирования принципиальных схем, простой и мощный SPICE-процессор и возможность построения графиков результатов различных видов расчётов SPICE. Лично мне оболочка для разработки схем кажется неуклюжей и неудобной для работы; gschem разбивает её наголову по простоте использования и возможностям. Однако SPICE-процессор и средства анализа в LTSpice просто превосходны.
Программа LTSpice исходно предназначалась для работы в Windows, но Mike немного изменил её, так что она довольно хорошо работает и в GNU/Linux из-под wine. (Только система меню справки сломана — остальная часть пакета работает хорошо). Ещё одной приятной стороной LTSpice является хорошая поддержка, — Mike регулярно читает новостные группы sci.electronics.cad и, как правило, всегда рад помочь тем, кто испытывает с ней проблемы. Поэтому, несмотря на её Windoze-наследие, я рекомендую LTSpice как мощный, профессионального качества драйвер моделирования и анализа для gEDA.
Установка и настройка LTSpice производится следующим образом:
LTSpice умеет читать файлы списков соединений SPICE, сделанные в gEDA. Моделирование в LTSpice мне удавалось производить следующим образом:
Simulation.cmd
и пропишите в нём команды своего SPICE-анализа (например, .OP, .AC, .DC и т. д.).file
установите в Simulation.cmd.output.net
в каталоге установки SwCADIII. Имя файла ссылки должно содержать суффикс .cir. Например: ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir
wine scad3.exe
(файлы типа списков соединений [.cir])
и выберите свой файл.Конечно, чтобы понять, как пользоваться программой LTSpice эффективно, очень важно с ней позаниматься, но для начала вам должно быть достаточно вышеизложенного описания.
ngspice начал Paolo Nenzi в Университете Рима “La Sapienza”, стремясь создать версию стандартного Berkeley SPICE версии 3 под лицензией GPL, полностью переписав этот пакет. В его планы также входило создание лучших, более ясных алгоритмов расчётов для SPICE-процессора. Больше информации можно найти на веб-странице ngspice: http://ngspice.sourceforge.net/. Но в свете этих возвышенных планов Paolo стал заниматься несколько другим: он взял код SPICE 3, много лет гуляющий по интернету, переработал его, и написал систему сборки, чтобы его можно было бы скомпилировать обычным способом с помощью GNU make. Это было главное достижение, за которое Paolo заслуживает огромной похвалы. К сожалению, судя по виду веб-страницы, разработка ngspice похоже остановилась в конце 2001 г. На самом деле после 2001 г. разработка значительно замедлилась, но в последнее время Paolo снова занялся ngspice. Последнюю версию, ngspice-rework-15, он выпустил в феврале 2004 года. Эта версия доступна только на странице загрузки сайта sourceforge; Paolo пока не обновил остальную часть веб-страницы проекта.
Вообще, я пришёл к тому, что лучше загрузить, сконфигурировать и скомпилировать исходный код ngspice, вместо того чтобы пытаться установить двоичный пакет. Это решение я и опишу здесь в общих чертах.
Скачайте самую последнюю версию дистрибутива со страницы
http://sourceforge.net/projetcs/ngspice. Обязательно самую последнюю, так
как у неё самая высокая производительность и наибольшее количество
возможностей. На май 2004 года, последний релиз — это
ngspice-rework-15. Установите исходники туда, где вы их обычно храните.
Мне нравится держать свои исходники gEDA в отдельном каталоге, например,
/usr/local/geda/sources/ngspice
. Можете перенять такую схему.
Исходные тексты программы распространяются в виде “тарбола” — сжатого архива. Вам нужно извлечь из него файлы, сделав следующее:
user@host:~$ cd <каталог, куда следует извлечь исходные файлы> user@host:~sources$ tar -xvzf </путь/к/пакету.tar.gz> user@host:~sources$ cd <извлечённый каталог>
В этот момент вы находитесь в корневом каталоге ngspice. Чтобы
познакомиться с этой программой и процессом её установки поближе, прочитайте
общеизвестные файлы, такие как README
и INSTALL
. Также неплохо
бы почитать файл NOTES
, в нём содержится информация, полезная для
разработки или отладки возможностей ngspice.
Для сборки ngspice используется обычная последовательность
configure && make && make install
,
применяемая и для прочих GNU-тых программ. Для конфигурирования ngspice
имеется достаточно много ключей. : Полный их перечень и сопровождающая
документация нуждаются в доработке; чтобы увидеть их все, лучше всего
посмотреть файл configure.ac
. Многие из ключей, доступных на этапе
конфигурирования, предназначены для отладки программы моделирования или для
включения возможностей экспериментальных видов анализа. Новичкам стоит
обратить внимание на три ключа:
--enable-xspice
: этим ключом добавляется поддержка расширений XSpice. Эти расширения позволяют вам определить устройства, чьё поведение задаётся специальными “моделями кода”. Возможно наиболее важной моделью кода является spice2poly
, которая транслирует конструкции POLY в стиле SPICE 2 в модели XSpice, пригодные для использования в SPICE 3.--with-readline
: при задании этого ключа в ngspice встраивается поддержка GNU readline. Это значит, что вы сможете использовать как клавиатурные команды в стиле emacs, так и клавиши со стрелками для перемещения в строке ввода команд. Без этой возможности интерфейс командной строки будет враждебным, то есть, если вы ошибётесь при вводе длинной команды, у вас не останется других вариантов, кроме как снова ввести её целиком. Paolo не советует использовать возможность readline
, поскольку при этом код GPL (readline) смешивается с кодом BSD (ngspice), но для других он этот ключ оставил, чтобы люди сами могли решить, насколько быть целомудренными в этом вопросе.--prefix
: этим ключом задаётся базовый каталог установки двоичных файлов программ.Прежде чем запускать configure нужно проверить ключи, которые вы хотите задать. Краткое описание приведено в приложении (: требуется доработка). Как только будете готовы, наберите:
user@host:~sources/<tld>$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda <другие ключи конфигурации>
Конечно, --prefix=
должен указывать на тот каталог, где находятся
ваши файлы, относящиеся к gEDA. После выполнения этой команды программа
моделирования будет сконфигурирована и готова для компиляции. Компиляция
проста:
user@host:~sources/<tld>$ make && make install
Как обычно для установки пакетов в общедоступный каталог скорее всего вам понадобятся права суперпользователя, в таком случае нужно сделать так:
user@host:~sources/<tld>$ make user@host:~sources/<tld>$ su -c make install
В этот момент вы должны быть способны запустить ngspice. Свою установку
можно проверить, попробовав обработать одну из тестовых схем из каталога с
тестами. Я рекомендую запустить тест TransImpedanceAmp
, так как в нём
проверяется функциональность SPICE 2 POLY.
Запуск ngspice очень прост. В приглашении командной строки Unix введите команду:
user@host:~$ ngspice filename.net
и ngspice загрузит список соединений
SPICE filename.net
в своё рабочее пространство и выведет
своё приглашение командной строки. Вы можете запустить моделирование, сказав
“run” (запуск). Результаты будут сохранены в массиве SPICE для
дальнейшей печати на принтере или черчения на плоттере. Набор имеющихся в
распоряжении команд приведён на странице
http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5.
Для использования кодовой модели SPICE 2 POLY её нужно загрузить в ngspice до загрузки списка соединений. (Если вы загрузите её после загрузки списка соединений, элементы POLY в ней транслироваться не будут и потому не будут и правильно смоделированы.) Чтобы загрузить кодовую модель, в строке приглашения ngspice нужно просто сказать:
codemodel /usr/local/geda/lib/spice/spice2poly.cm
(укажите здесь местоположение своих кодовых моделей). Учтите, что для кодовой
модели следует указать абсолютное имя файла; программа ngspice не настолько
сообразительна, чтобы искать её в стандартных каталогах. (Также
обратите внимание, что нужно указать путь к spice2poly.cm
на своей
машине; путь, указанный выше, — мой.)
Лучшим способом для считывания кодовой модели spice2poly
будет
включение её в файл инициализации ngspice — spinit
. Файл
инициализации находится в каталоге
/usr/local/geda/share/ng-spice-rework/scripts
(или где-то ещё, где
у вас установлены файлы gEDA). В файле spinit
можно задать и
другие настройки для ngspice.
Когда в 2002-м году основная ветка разработки ngspice впала в спячку, несколько товарищей из MultiGig Ltd. (http://www.multigig.com/) занялись разработкой ветки ngspice, которую они назвали tclspice. tclspice — это расширенный вариант ngspice, в котором множество команд SPICE экспортируется как API к Tcl. При этом преследуется цель облегчить написание скриптов для расчётов SPICE. Это очень мощное средство: для tclspice можно написать скрипт на Tcl, который запустит цикл, подстроит значения компонентов, запустит анализ, а затем оценит характеристики схемы с подстроенными компонентами, прежде чем запускать новый цикл. Очевидно, эту возможность можно использовать для выполнения автоматических, многомерных оптимизаций схемы. Если проект будет завершён, tclspice возможно станет “приложением-убийцей” для САПР электроники с открытым исходным кодом.
Домашняя страница проекта tclspice находится по адресу http://tclspice.sourceforge.net/. Исходные коды tclspice проживают по адресу http://sourceforge.net/projects/tclspice. Для загрузки и установки tclspice используются те же самые шаги, что подробно расписаны для ngspice выше. Так как tclspice является расширенным вариантом ngspice, то если нужно, из исходных текстов tclspice можно установить только ngspice. Сборка целого пакета потребует пары дополнительных шагов. Здесь я представлю последовательность шагов для сборки и ngspice (автономной программы с интерфейсом командной строки), и API для Tcl из исходных текстов tclspice.
Перед сборкой tclspice у вас уже должны быть установлены следующие пакеты:
Если на вашей Linux-машине эти пакеты ещё не установлены, их нужно найти и собрать. Обратите внимание, что сборка TclX требует наличия исходных текстов для Tcl и Tk, так что вам придётся также загрузить исходные тексты и этих пакетов, если они у вас ещё не установлены. У меня успешно работает Tcl/Tk 8.4.3, хотя возможно будут работать и версии 8.3.X. Также, если вы хотите запускать SPICE в фоновом режиме, вам придётся перекомпилировать Tcl и Tk с разрешением поддержки нитей (thread), если она уже не была разрешена (в пакетах для RedHat — нет).
Будем считать, что вы уже загрузили и установили указанные выше дополнительные пакеты. Тогда для сборки на своей машине и ngspice, и API для Tcl, вам нужно предпринять следующее:
user@host:~sources/<tld>$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda user@host:~sources/<tld>$ make && make install (этими командами собирается и устанавливается старый добрый ngspice) user@host:~sources/<tld>$ ./configure --enable-xspice --prefix=/usr/local/geda --enable-tcl --enable-experimental --disable-shared user@host:~sources/<tld>$ make tcl && make install-tcl
Как обычно для установки пакетов в общедоступный каталог скорее всего вам понадобятся права суперпользователя, в таком случае для установки своих пакетов нужно сделать так:
user@host:~sources/<tld>$ su -c make install user@host:~sources/<tld>$ su -c make install-tcl
Теперь всё готово для написания скриптов на Tcl, включающих команды SPICE.
Информация об использовании tclspice приведена ниже. Наконец, если вам
интересно попрограммировать tclspice (и даже если нет), будет неплохо
прочитать файл NOTES
, находящийся в корневом каталоге исходников, в
котором можно найти пару полезных советов.
tclspice разработан для экспорта команд SPICE в программы на Tcl. Чтобы
использовать tclspice, в начале своей программы на Tcl нужно просто
сказать package require spice
. После этого, чтобы запустить команду SPICE,
при её вызове надо просто задать пространство имён spice
. Как пример
приведём программу на Tcl, которая прочитает список соединений SPICE,
прикажет сделать временной анализ, запустит моделирование, а затем
начертит график напряжения для соединения Vout за указанное время:
#! tclsh package require spice spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm spice::source netlistname.cir spice::tran 0.1ns 40ns spice::run spice::plot Vout puts "Всё готово!"
Обратите внимание, что поскольку tclspice не читает инициализационный файл
ngspice spinit
, любые команды инициализации вам придётся задавать
непосредственно в программе на Tcl. Например, в вышеприведённом примере мы
читаем кодовую модель spice2poly
непосредственно в рабочее пространство.
Доступно и много других команд; полный набор команд tclspice приводится на
странице http://tclspice.sourceforge.net/docs/tclspice_com.html.
Главная проблема tclspice (унаследованная от ngspice) — утечки памяти. Поэтому время моделирования в ней ограничено. Это значит, что если вы хотите сделать оптимизацию, многократно повторив цикл моделирования для схемы, память может быть исчерпана прежде, чем программа закончит оптимизацию. Это известная проблема в tclspice и сейчас затрачиваются большие усилия для того, чтобы утечки заткнуть.
Между тем для осуществления длительной оптимизации существуют кое-какие обходные пути, которые можно использовать для проектов среднего размера. Я применял один способ, состоящий в том, что после каждого анализа схемы оптимизатор записывает данные своего текущего состояния в файл и из этого же файла читает данные своего исходного состояния. Оптимизатор также сохраняет текущий перечень лучших вариантов компонентов в другой файл и читает этот файл при каждом запуске оптимизации. К тому же у меня есть программа на Tcl под названием TaskMgr.tcl, работающая циклически; при каждой итерации цикла она порождает дочерний процесс для запуска оптимизатора. Между тем родительский процесс ожидает 5 минут (эвристически найденное время), а затем, прежде чем повторять цикл и запускать оптимизатор снова, выдаёт дочернему процессу сигнал “KILL”. Таким образом оптимизатор никогда не работает настолько долго, чтобы съесть всю память на моей машине. Вот собственно сама программа TaskMgr.tcl:
#! tclsh package require Tclx while {1} { set PID [fork] if {$PID} { # Родительский процесс after 300000 puts "Собираюсь убить дочерний процесс PID = $PID . . . ." kill $PID wait $PID } else { # Дочерний процесс source Optimize.tcl # Если мы вдруг когда-нибудь пройдём через всё это, можем выдать следующее: error "Мы закончили!!!!!!" } }
Заметьте, что для запуска tclspice программе TaskMgr.tcl требуется,
чтобы пакет TclX уже был установлен. Может быть вам следует также задать
другое время ожидания в зависимости от объёма памяти и скорости вашей машины.
Наконец, родительскому процессу придётся следить и за $PID (с помощью
wait
), так как когда дочерний процесс умрёт, нужно чтобы и его труп был
выкинут из списка задач ядра. Иначе работа оптимизатора приведёт к порождению
целой толпы процессов-зомби, подстерегающих вас на вашей машине за каждым
углом, — длительная оптимизация может превратить вашу систему в “ночь живой
смерти”!
Такой метод ограничения времени для дочернего процесса предпочтителен в том случае, когда одиночный анализ занимает относительно немного времени по сравнению с временем, требуемым для съедания всей памяти машины. Если же время анализа сопоставимо со временем съедания всей памяти, то лучше заставить родительский процесс следить за состоянием анализа, запустить одиночный анализ, а затем заставить этот анализ завершаться после каждой итерации. Предпочтителен ли такой вариант, зависит от размера и сложности вашего проекта; может быть вам следует поэкспериментировать со своим анализом, чтобы узнать, как долго он длится и сколько потребляет памяти. Я нашёл, что анализ для проекта из шести операционных усилителей (с соответствующими моделями поставщиков) и пятидесяти или около того пассивных элементов на PIII 333MHz c 128MB RAM будет длиться менее 10 секунд. Поэтому, чтобы одиночный анализ съел значительное количество памяти, ваш проект должен быть довольно большим.
В таблице 1 представлены устройства и связанные с ними атрибуты, используемые
драйвером spice-sdb. Необходимые атрибуты выделены жирным шрифтом, прочие
указаны обычным. Заметьте, что атрибут device
невидим и обычно
прикрепляется к символу при его создании. Другие атрибуты прикрепляются к
символу в gschem при разработке схемы.
Если вы имеете дело только с простыми активными компонентами (диодами,
транзисторами) при наличии их моделей SPICE в виде файлов, то нужно задать
только атрибуты model-name
и file
; атрибут model
задавать не
нужно. Но если для вашего простого активного компонента есть однострочная
SPICE-модель, которую хотелось бы ввести непосредственно в схеме, тогда
задайте атрибуты model
и model-name
; атрибут file
задавать не
нужно.
Таблица 1. Атрибуты, необходимые для создания списка соединений SPICE
device | refdes | value | model | file | model-name | type | Комментарий |
---|---|---|---|---|---|---|---|
RESISTOR | R? | (4) | (2) | - | Название модели | - | (11) |
CAPACITOR | C? | (4) | (3) | - | Название модели | - | (11) |
POLARIZED_CAPACITOR | C? | (4) | (3) | - | Название модели | - | (11) |
INDUCTOR | L? | (4) | (3) | - | Название модели | - | (11) |
SPICE-ccvs | H? | (5) | - | - | - | - | Источник напряжения, управляемый током |
SPICE-cccs | F? | (5) | - | - | - | - | Источник тока, управляемый током |
SPICE-vcvs | E? | (5) | - | - | - | - | Источник напряжения, управляемый напряжением |
SPICE-vccs | G? | (5) | - | - | - | - | Источник тока, управляемый напряжением |
SPICE-nullor | E? | (5) | - | - | - | - | |
DIODE | D? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
PMOS_TRANSISTOR | M? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
NMOS_TRANSISTOR | M? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
PNP_TRANSISTOR | Q? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
NPN_TRANSISTOR | Q? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
PFET_TRANSISTOR | J? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
NFET_TRANSISTOR | J? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
MESFET_TRANSISTOR | B? | Тип прибора | Однострочная SPICE-модель | Имя файла модели | Название модели | - | (12) |
IC | U? | Тип прибора | Имя файла .model | Название модели | - | Для ИС с файлом.model |
|
IC | X? | Тип прибора | Имя файла .subckt | Название .subckt | - | Для ИС с файлом.subckt |
|
model | A? | - | Однострочная SPICE-модель | Имя файла .model | (9) | (10) | (12) |
include | A? | - | - | Имя файла .include | - | - | (13) |
options | A? | (8) | - | - | - | - | (14) |
directive | A? | (1) | - | - | - | - | (12) |
VOLTAGE_SOURCE | V? | (6) | - | - | - | - | Независимый источник напряжения |
CURRENT_SOURCE | I? | (7) | - | - | - | - | Независимый источник тока |
(1) Одна строка, содержащая операторы SPICE для включения в список соединений
(2) Одна строка параметров SPICE-модели (например, TC
и т. д.)
(3) Одна строка параметров SPICE-модели (например, IC
, POLY
и т. д.)
(4) Числовое значение компонента
(5) Строка, описывающая режим источника
(6) Однострочное описание, содержащее режим источника напряжения
(7) Однострочное описание, содержащее режим источника тока
(8) Строка подключаемых ключей
(9) Название модели, на которую указывают компоненты
(10) Соответствующий тип SPICE-модели (допустимые типы приведены ниже)
(11) Параметры модели помещаются внутри скобок после значения компонента
(12) Для моделирования нужно включить или модель, или файл
(13) Помещает директиву .INCLUDE
в список соединений SPICE
(14) Помещает директиву .OPTIONS
в список соединений SPICE
Выражение “поддерживаемый генератором списка соединений” означает, что
существует соответствующий кусок кода на Scheme, который точно знает как эти
компоненты обрабатывать и (почти) наверняка сгенерирует правильный код SPICE.
Символы с такими атрибутами device
, которых нет в вышеприведённом списке,
обрабатываются функцией Scheme spice-sdb:write-default-component
, которая
для принятия решения о том, как обрабатывать данный компонент, смотрит на его
позиционное обозначение. Как правило, при создании кода SPICE эта функция
сделает “то, что надо”, но твёрдой гарантии нет. В частности, эта функция не
увидит различия между транзисторами типов N и P и для строки .MODEL
в
списке соединений будет генерировать тип <unknown> (неизвестный).
Вероятно это вызовет ругань программы моделирования. Поэтому лучше всего
убедиться, что для всех используемых устройств задан надлежащий атрибут
device
.
Атрибут type
указывает SPICE-процессору тип компонента и подготавливает
его для принятия параметров модели, специфичных для данного типа. Допустимые
значения атрибута type
указаны в таблице 2.
Таблица 2. Допустимые значения атрибута type
компонентов.
Компонент | type | Комментарий |
---|---|---|
RESISTOR | RES | Резистор |
CAPACITOR | CAP | Конденсатор |
POLARIZED_CAPACITOR | CAP | Полярный конденсатор |
INDUCTOR | IND | Катушка индуктивности |
DIODE | D | Диод |
PMOS_TRANSISTOR | PMOS | pМОП-транзистор |
NMOS_TRANSISTOR | NMOS | nМОП-транзистор |
PNP_TRANSISTOR | PNP | Биполярный транзистор типа pnp |
NPN_TRANSISTOR | NPN | Биполярный транзистор типа npn |
PFET_TRANSISTOR | PJF | Полевой транзистор с управляющим pn-переходом с каналом p-типа |
NFET_TRANSISTOR | NJF | Полевой транзистор с управляющим pn-переходом с каналом n-типа |
MESFET_TRANSISTOR | - | Полевой транзистор с переходом металл – полупроводник |