netlist: Apply title patch to Python netlist backend
[geda-gaf.git] / docs / wiki / geda-csygas.ru.html
blobc3373f276c0c0b83d71ce8696fdccca9d02d7f71
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html>
4 <head>
5 <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
6 <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
7 <link rel="stylesheet" media="print" type="text/css" href="./print.css" />
9 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10 </head>
11 <body>
13 <p>
14 <em>Эта страница доступна также на следующих языках:</em> <a href="geda-csygas.html" class="wikilink1" title="geda-csygas.html">English</a>
15 </p>
17 <h1 id="схемотехническоемоделированиеспомощьюgedaиspice">Схемотехническое моделирование с помощью gEDA и SPICE</h1>
18 <div class="level1">
20 <p>
21 <em>Stuart Brorson</em><br/>
22 Electroniscript, inc.<br/>
23 sdb@electroniscript.com<br/>
24 <br/>
26 января 2006 г.
27 </p>
29 <p>
30 <strong>Предисловие</strong><br/>
32 Linux становится всё более и более популярной платформой для проектирования. Благодаря программистам сообщества свободного программного обеспечения для проектирования электрических схем становятся доступны приложения <a href="geda-glossary.ru.html#сапр" class="wikilink1" title="geda-glossary.ru.html">САПР</a> профессионального качества. Предпочтительным инструментарием проектирования электронных схем является gEDA Suite. Теперь и в Linux доступно <a href="geda-glossary.ru.html#схемотехническоемоделирование" class="wikilink1" title="geda-glossary.ru.html">моделирование</a> аналоговых процессов в электрических схемах с помощью <a href="geda-glossary.ru.html#spice" class="wikilink1" title="geda-glossary.ru.html">SPICE</a>. В настоящем документе описывается <a href="geda-glossary.ru.html#маршрутпроектирования" class="wikilink1" title="geda-glossary.ru.html">маршрут проектирования</a>, используемый для выполнении SPICE-моделирования программными средствами gEDA в Linux.
33 </p>
35 <p>
36 Настоящий документ разрешается копировать, распространять и/или изменять под
37 условиями Лицензии Свободной Документации GNU<sup><a href="#fn__14" id="fnt__14" class="fn_top">14)</a></sup> версии 2 или любой более поздней, опубликованной организацией Free
38 Software Foundation, без неизменяемых разделов, без текстов передней и
39 задней обложки. Вы можете получить копию Лицензии Свободной Документации GNU
40 от Free Software Foundation, посетив её веб-страницу (http:<em>www.fsf.org/)
41 или написав письмо по адресу: Free Software Foundation, Inc., 51 Franklin
42 Street, Fifth Floor, Boston, MA 02110-1301 USA.<sup><a href="#fn__15" id="fnt__15" class="fn_top">15)</a></sup> начиная с 70-х годов и сегодня она широко доступна в разных
43 формах. Сейчас SPICE считается фундаментальным средством проектирования и
44 является существенной частью занятий большинства обучающихся инженеров.
46 Проект gEDA --- работа по созданию в рамках
47 программного обеспечения с открытым исходным кодом набора программ САПР
48 электроники для Linux под лицензией GPL. Проект gEDA уже настолько развит,
49 что мощь и качество его программ весьма высоки; сегодня используя gEDA Suite
50 можно создавать сложные <a href="geda-glossary.ru.html#списоксоединений" class="wikilink1" title="geda-glossary.ru.html">списки
51 соединений</a> (файлы) SPICE, включающие в себя файлы
52 <a href="geda-glossary.ru.html#модель" class="wikilink1" title="geda-glossary.ru.html">моделей</a> поставщиков компонентов. Затем с помощью
53 этих файлов можно производить SPICE-моделирование, используя различные
54 программы моделирования, работающие в Linux. Цель настоящего документа ---
55 объяснить, как использовать программные средства gEDA (обычно работающие в
56 Linux) для выполнения SPICE-моделирования. В частности здесь описывается
57 использование <strong>spice-sdb</strong>, продвинутого драйвера
58 <a href="geda-glossary.ru.html#генераторспискасоединений" class="wikilink1" title="geda-glossary.ru.html">генератора списка
59 соединений</a> gEDA (<strong>gnetlist</strong>), применяемого для создания списков
60 соединений SPICE. <strong>spice-sdb</strong> входит в набор программ gEDA; если вы
61 установили gEDA, то для создания списков соединений SPICE всё уже
62 готово. Также в настоящем HOWTO приводятся советы по использованию
63 <strong>ngspice/tclspice</strong> и/или <strong>LTSpice</strong> для моделирования работы схем, списки
64 соединений для которых созданы с помощью <strong>spice-sdb</strong>.
66 ==== Целевая аудитория данного HOWTO ====
67 Настоящий HOWTO не является учебником по проектированию электрических схем или по SPICE-моделированию. Он, скорее, создан для того, чтобы помочь обучающимся инженерам начать использовать gEDA для SPICE-моделирования на платформе Linux. Поэтому я предполагаю, что вы в общих чертах уже знакомы с разработкой электронных схем, механикой ввода схем в программах САПР и SPICE-моделированием. Я также предполагаю, что вы достаточно знакомы с операционной системой GNU/Linux и с её рабочим окружением. Наконец, я предполагаю, что вы уже установили программы gEDA и знаете как ими пользоваться. Если вам нужно быстрее набраться опыта в каком-то из указанных вопросов, дополнительную информацию можно найти на следующих веб-страницах:
68 * Проект gEDA: http://www.geda-project.org
69 * <a href="geda-faq-simulation.ru.html" class="wikilink1" title="geda-faq-simulation.ru.html">FAQ по моделированию</a>
70 * Синтаксис и команды SPICE 3: http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/
71 * Ngspice: http://ngspice.sourceforge.net/
72 * Tclspice: http://tclspice.sourceforge.net/
73 * LTSpice: http://www.linear.com/software/
74 * Ресурсы по SPICE в Linux: http://www.brorson.com/gEDA/SPICE/
75 * gEDA для начинающих --- немного устаревший, но замечательный ресурс http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf
77 ==== Признательность ====
78 Настоящий документ не живёт в изоляции. В создании данного HOWTO мне
79 помогало несколько активных членов сообщества свободных САПР
80 электроники. Во-первых и прежде всего, </em>Paolo Nenzi<em>, автор <strong>ngspice</strong>,
81 взял мой исходный HOWTO и перевёл его в документ <strong>Lyx</strong>, который я мог
82 затем перевести в DocBook. Спасибо тебе, </em>Paolo<em>, за помощь в работе над
83 этим HOWTO и, что более важно, спасибо за твою великолепную работу над
84 <strong>ngspice</strong>! Также во главе списка значится </em>Ales Hvezda<em>, движущая сила
85 проекта gEDA. Без него ничего из этого не было бы теперь возможным; его
86 вклад в виде программы <strong>gschem</strong> неоценим. Спасибо, </em>Ales<em>, за создание
87 gEDA и распространение по миру под лицензией GPL --- ты начал революцию!
88 </em>Stefan Jones<em> заслуживает огромной благодарности за его работу над
89 <strong>tclspice</strong>, любезную поддержку и усилия по интеграции, когда я предлагал
90 исправления для проекта <strong>tclspice</strong>. Я также должен поблагодарить
91 </em>W. Kazubski<em> и </em>S. Gieltjes<em> --- они написали исходные версии
92 генераторов списков соединений SPICE, на которых основывается мой
93 <strong>gnet-spice-sdb.scm</strong>. Я также хочу поблагодарить </em>Ken Healy<em> за
94 добавление исправления сортировки списка соединений, и </em>Peter Kaiser<em> за
95 то, что побудил меня включить некоторые возможности, полезные для
96 моделирования интегральных схем. </em>Peter<em> заслуживает также благодарности
97 за написание некоторых разделов данного документа, относящихся к
98 устройствам. Наконец, я признателен за помощь и предложения, полученные от
99 читателей списка рассылки </em>geda-user<em>. Прелесть свободного программного
100 обеспечения в том, что оно побуждает к сотрудничеству, а это значит, что
101 конечный результат всегда будет лучше того, которого можно было бы достичь в
102 одиночку.
104 ==== Общий обзор: маршрут проектирования в gEDA ====
105 В САПР электроники важна концепция «маршрута проектирования». gEDA --- это
106 набор программных средств для проектирования электроники, а не одно
107 приложение. И «маршрут проектирования» определяет порядок использования этих
108 средств для достижения цели. В зависимости от того, проектируете ли вы
109 аналоговую или цифровую схему, разрабатываете ли платы или интегральные
110 схемы, от того, какой тип файлов требуется производителю ваших плат, и от
111 ряда других факторов, для достижения цели будут использоваться различные
112 средства gEDA Suite.
114 Блок-схема, на которой представлен маршрут проектирования в gEDA, показана
115 на рисунке ниже. На блок-схеме показана простая последовательность,
116 пригодная для проектирования, моделирования и разводки печатных плат. Как
117 можно увидеть, моделирование (голубые блоки) циклически повторяется. Это
118 значит, что после создания схемы её моделирование производится повторно до
119 тех пор, пока её поведение не будет соответствовать требуемым
120 спецификациям. <a href="media/geda/geda_flow.ru.png" class="media" target="_blank" title="geda:geda_flow.ru.png">geda:geda_flow.ru.png</a> Маршрут проектирования в
121 gEDA. В блоке «Моделирование» в скобках указано несколько разных программ,
122 пригодных для моделирования. В рамках настоящего документа нас интересуют
123 только SPICE-варианты (например, <strong>ngspice</strong>, <strong>tclspice</strong>).
125 ==== Обзор использования SPICE в gEDA ====
126 Концептуально SPICE-моделирование в gEDA включает следующие этапы:
127 - Создание и подбор символов схем и файлов моделей SPICE. Часто файлы SPICE-моделей можно получить у поставщика компонентов. Как правило, многие модели можно найти на веб-странице поставщика.
128 - Разработка схемы с помощью символов и моделей SPICE, созданных на первом этапе.
129 - Создание списка соединений из схемы, созданной на втором этапе.
130 - SPICE-моделирование схемы, представленной в виде списка соединений, созданного на третьем этапе.
132 На приведённой выше блок-схеме эти этапы отмечены голубым цветом.
134 Чтобы создать список соединений SPICE, генератор списка соединений (<strong>gnetlist</strong>) циклически проходится по всей схеме и проверяет особые части символов каждого из компонентов для формирования частей кода. Как правило, для каждого компонента может генерироваться одна или более строк кода SPICE. Информация о компоненте, необходимая генератору списка соединений, содержится в двух местах:
135 - В самом символе, в атрибуте <code>device</code>, который прикрепляется при создании символа и обычно редактируется в редакторе символов.
136 - В атрибутах, прикреплённых к компоненту вручную в <strong>gschem</strong> при разработке схемы.
138 Так как генератор списка соединений ищет информацию в двух местах,
139 <strong><em>необходимо обеспечить, чтобы требуемая информация имелась в каждом из
140 них</em></strong>.
142 ==== Подробное изложение процесса разработки/моделирования ====
143 Вот более подробный перечень шагов, необходимых для разработки и моделирования работы схем в gEDA:
144 - Создание символов для схемы с правильными атрибутами <code>device</code>. (Обычно правильные атрибуты <code>device</code> устанавливаются в процессе создания символов и поэтому чаще всего уже заданы, но если у вас проблемы, не помешает их проверить.)
145 - Разработка схемы в <strong>gschem</strong>.
146 - Установка для компонентов SPICE-атрибутов (<code>value</code>, <code>model</code>, <code>file</code>, <code>type</code> и др.) в <strong>gschem</strong> или <strong>gattrib</strong>.
147 - Установка атрибутов <code>refdes</code>, например с помощью <strong>refdes_renum</strong>.
148 - Создание списка соединений с помощью: <strong><code>gnetlist -g spice-sdb</code></strong>.
149 - Проверка отсутствия ошибок в списке соединений (производится вручную, нужно открыть и внимательно просмотреть содержимое файла).
150 - Запуск программы SPICE-моделирования, такой как, например, <strong>LTSpice</strong>, <strong>ngspice</strong> или <strong>tclspice</strong>.
151 - Построение графиков и анализ результатов (часто средства построения графиков и анализа встроены в программу моделирования).
152 - Если вы недовольны характеристиками своей схемы, выявленными при моделировании, можете вернуться к шагу 2, подправить схему в <strong>gschem</strong> и далее циклически повторять этот процесс до достижения нужного результата.
154 Цель настоящего документа состоит в том, чтобы дать вам чёткое понимание
155 деталей данного процесса, необходимое для его успешного направления.
157 ===== Подготовительная работа: подготовка символов и файлов SPICE =====
158 При создании символов для схемы нужно обеспечить, чтобы некоторые встроенные
159 атрибуты были заданы правильно. Приводимые ниже изменения такого рода
160 осуществляются либо редактированием нужного символа в графическом интерфейсе
161 редактора символов <strong>gschem</strong>, либо редактированием файла символа в
162 текстовом редакторе.
166 ==== Настройка символов ====
167 === Идентификация компонента генератором списков соединений ===
168 Генератор списка соединений SPICE может идентифицировать любой конкретный символ по одному из двух атрибутов:
169 - <code>device</code> или
170 - <code>refdes</code>.
172 Каждый из них прикрепляется к символу во время его создания.
174 К каждому символу прикреплён атрибут <code>device</code>. Этот атрибут генератор
175 списка соединений проверяет при обработке символа первым. Есть несколько
176 поддерживаемых генератором списка соединений устройств («родных» для него),
177 имеется в виду, что генератор точно знает, как обходиться с данными типами
178 устройств. Непосредственно поддерживаются <strong>RESISTOR</strong>, <strong>CAPACITOR</strong>,
179 <strong>NPN_TRANSISTOR</strong> и т. д. Полный список поддерживаемых устройств
180 представлен в <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>.
182 Обычно при работе в <strong>gschem</strong> атрибуты <code>device</code> остаются скрытыми. Чаще
183 всего правильные значения этих атрибутов уже заданы в символах их
184 авторами. Но поскольку атрибут <code>device</code> скрыт от обычного пользователя, он
185 может иногда являться причиной проблем при создании списка соединений SPICE,
186 если установлен в непредвиденное значение. Чтобы увидеть атрибуты
187 <code>device</code>, нужно перейти в редактор символов (выделить символ для
188 редактирования и из меню выбрать <strong><em>Иерархия</em></strong> -&gt; <strong><em>Внутрь символа</em></strong>,
189 а затем переключить видимость атрибутов (<strong><em>Правка</em></strong> -&gt;
190 <strong><em>Показать/Скрыть невидимый текст</em></strong>). Можно также открыть файл этого
191 символа в текстовом редакторе и, если атрибут <code>device</code> неправилен,
192 изменить его там.
194 Если символ не поддерживается (то есть генератор списка соединений не
195 находит соответствующего встроенного типа), то чтобы определить, как его
196 обрабатывать, генератор опирается на первую букву значения атрибута
197 <code>refdes</code>. Префикс (первая часть) значения <code>refdes</code> также встраивается в
198 символ при его создании. Примерами префиксов <code>refdes</code> являются </em>R<em> для
199 резисторов, </em>C<em> для конденсаторов, </em>Q<em> для транзисторов и
200 т. д. Правильные префиксы для SPICE перечислены в <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>. Заметьте, что
201 опираться на <code>refdes</code> для идентификации компонента в SPICE небезопасно,
202 --- по его значению генератор списка соединений не сможет, например,
203 различить транзисторы структуры </em>NPN<em> и </em>PNP<em>. Поэтому в своих символах
204 лучше всего всегда использовать атрибут <code>device</code>, задавая для него
205 значение, поддерживаемое генератором.
207 === Настройка очерёдности выводов ===
208 Выводы компонента выдаются генератором списка соединений в порядке, заданном
209 посредством атрибутов <code>pinseq</code>. Заметьте, что он не тождественен порядку
210 физического расположения выводов. Для установки атрибутов <code>pinseq</code> сначала
211 следует определить нужный вам порядок выводов. В SPICE для многих
212 компонентов, в том числе для диодов и транзисторов, используется особый
213 порядок выводов. Например, выводы биполярного транзистора перечисляются в
214 порядке </em>CBE<em> (коллектор-база-эмиттер). Другой пример: если ваш символ
215 должен представлять интегральную схему (ИС) с моделью в виде файла
216 </em><code>.subckt</code><em> поставщика, то порядок соединений для этой
217 <a href="geda-glossary.ru.html#подсхема" class="wikilink1" title="geda-glossary.ru.html">подсхемы</a> устанавливается в файле строкой
218 <code>.subckt</code>.
220 Как только вы узнали порядок выдачи выводов для электронного компонента,
221 просто задайте правильную последовательность в их атрибутах <code>pinseq</code>.
222 Таким образом и будет обеспечен правильный порядок.
224 ==== Настройка файлов SPICE ====
225 Файлы, содержащие сложные модели или другой код SPICE, могут быть встроены в результирующий список соединений при добавлении в схему соответствующих символов. Файлы моделей SPICE обычно можно найти у поставщиков компонентов. Работа с ними проста. Тем не менее при подготовке моделей для принципиальной схемы некоторые моменты всё же стоит иметь в виду:
226 * Обычно целесообразно помещать эти файлы в специально отведённый для них каталог, отличный от каталогов символов.
227 * </em>Удостоверьтесь, что выводы в файлах SPICE и в символах компонентов имеют одинаковое назначение!<em> Важность этого правила трудно переоценить. Порядок, в котором выводы перечислены в файле </em><code>.subckt</code><em> необязательно соответствует порядку их физического расположения для компонента. Как описано выше, выводы выдаются генератором списка соединений в порядке, заданном атрибутами <code>pinseq</code>.
228 * </em>Удостоверьтесь, что последним символом в файле SPICE-модели является перевод строки.<em> Если перевода строки нет, то строка следующего компонента списка соединений может оказаться в той же строке, что была последней в файле SPICE-модели.
230 ===== Создание схемы своего устройства: схемотехническое проектирование =====
231 <a href="geda-glossary.ru.html#схемотехническоепроектирование" class="wikilink1" title="geda-glossary.ru.html">Схемотехническое проектирование</a> --- это процесс, в
232 котором используется специализированная чертёжная программа-редактор для
233 вычерчивания проектируемой схемы. В окружении gEDA для разработки
234 принципиальных схем используется программа <strong>gschem</strong>. Я предполагаю, что вы
235 уже знаете, как использовать <strong>gschem</strong>. Если нет, обратитесь к
236 документации, доступной на веб-сайте gEDA:
237 http://www.geda-project.org/. Чтобы создать список соединений SPICE, вам
238 будет нужно прикрепить к компонентам необходимые атрибуты в <strong>gschem</strong> и,
239 возможно, включить в свой список соединений ещё и дополнительные директивы
240 SPICE. После завершения создания схемы вам будет нужно создать список
241 соединений SPICE, запустив для неё генератор списка соединений gEDA
242 <strong>gnetlist</strong>.
244 ==== Атрибуты gschem для создания списков соединений SPICE ====
245 В <strong>gschem</strong> есть несколько вариантов привязки атрибутов SPICE к
246 компонентам. Вариант, который выберете вы, зависит от многих факторов, в
247 том числе от типа компонента, размера и формата SPICE-модели.
249 ==== Атрибуты компонентов и их значение ====
250 Здесь приведены те атрибуты, что имеют значение при создании списков соединений SPICE и могут быть прикреплены к символам компонентов в <strong>gschem</strong>:
251 * <code>refdes</code>: позиционное обозначение компонента. Допустимые значения зависят от типа компонента и приведены в <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>;
252 * <code>value</code>: для пассивных компонентов --- это значение физической величины компонента (сопротивления, индуктивности, ёмкости), для активных --- это тип (номер модели) компонента (например, </em>2N3904<em>, </em>uA741<em>). Если модель активного компонента добавляется в схему как отдельный объект, в атрибуте <code>value</code> символа компонента должно быть указано её название;
253 * <code>model</code>: однострочная SPICE-модель компонента;
254 * <code>file</code>: имя файла. Обычно это файл, содержащий, например, <code>.MODEL</code>, <code>.SUBCKT</code>, или другой код SPICE;
255 * <code>model-name</code>: название SPICE-модели, вызываемой из оператора <code>.MODEL</code> или <code>.SUBCKT</code>. <code>model-name</code> используется главным образом для определения названия SPICE-модели в символе </em><code>spice-model-1.sym</code><em>. При привязке активного компонента к конкретной модели или к подсхеме её название должно вызываться из атрибута <code>device</code>, а не из <code>model-name</code>;
256 * <code>type</code>: Определяет тип компонента и используется в SPICE при интерпретации параметров модели. Допустимые значения зависят от моделируемого устройства.
258 ==== Соглашения по позиционным обозначениям ====
259 Для трактовки относящихся к SPICE атрибутов генератору списка соединений
260 нужно, чтобы к каждому компоненту схемы был прикреплён атрибут <code>refdes</code>.
261 Этот атрибут может устанавливаться либо вручную (что утомительно), либо с
262 помощью входящей в дистрибутив gEDA программы <strong>refdes_renum</strong>.
264 Учтите, что первые буквы <code>refdes</code> должны соответствовать буквам, указанным
265 в соглашении по позиционным обозначениям для SPICE-моделирования. Это
266 соглашение приведено в таблице 1 <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">приложения A</a>.
268 ==== Пассивные компоненты ====
269 === Базовые пассивные компоненты ===
270 Наиболее часто в SPICE приходится иметь дело с базовыми пассивными компонентами, такими как резисторы и конденсаторы, которым кроме числовых значений никаких дополнительных атрибутов для моделирования не задаётся. Для них должны быть заданы следующие атрибуты:
271 * <code>refdes</code>: точное позиционное обозначение компонента;
272 * <code>value</code>: для пассивных элементов это числовое значение физической величины компонента, а именно сопротивления, ёмкости или индуктивности (например, 100pF). Этот атрибут может задаваться и для активных компонентов, но если где-то в схеме нет атрибута <code>model</code>, атрибут <code>value</code> не используется (во всяком случае для создания списков соединений SPICE).
274 Если у компонента кроме <code>refdes</code> и <code>value</code> других атрибутов нет,
275 генератор списка соединений запишет в выходной файл только одну строку.
277 == Пример: резистор ==
278 * <code>refdes</code> = R2
279 * <code>value</code> = 220
281 Результирующая строка SPICE: <strong><code>R2 0 4 220</code></strong><br/>
283 (обратите внимание, что «0» и «4» --- это имена узлов подключенных к
284 компоненту соединений, генерируемые программой <strong>gnetlist</strong> автоматически.)
286 == Пример: конденсатор ==
287 * <code>refdes</code> = C22
288 * <code>value</code> = 1UF
290 Результирующая строка SPICE: <strong><code>C22 4 23 1UF</code></strong>
292 === Пассивные компоненты с дополнительными атрибутами ===
293 Часто при SPICE-моделировании для пассивных компонентов задаются дополнительные атрибуты. В качестве примера можно назвать атрибуты для задания температурных коэффициентов сопротивлений резисторов и исходного состояния для реактивных компонентов. Чтобы включить эти атрибуты в результирующий файл SPICE, их нужно просто прописать как значение атрибута <code>model</code> компонента. Вот, собственно, перечень необходимых атрибутов:
294 * <code>refdes</code>: точное позиционное обозначение компонента;
295 * <code>value</code>: как всегда числовое значение физической величины компонента;
296 * <code>model</code>: одна строка дополнительных параметров в допустимом для SPICE формате.
298 Эта строка включается в генерируемую программой <strong>gnetlist</strong> строку для
299 компонента после значения его величины. Поэтому важно, чтобы строка значения
300 атрибута <code>model</code> задавалась в виде допустимого кода SPICE. Иначе вы
301 рискуете вызвать ругань программы моделирования.
303 == Пример: резистор ==
304 * <code>refdes</code> = R5
305 * <code>value</code> = 1MEG
306 * <code>model</code> = TC=0.001,0.015
308 Результирующая строка SPICE: <strong><code>R5 0 2 1MEG TC=0.001,0.015</code></strong>
310 === Пассивные компоненты для проектирования полупроводников ===
311 При разработке <a href="geda-glossary.ru.html#asic" class="wikilink1" title="geda-glossary.ru.html">ASIC</a> для определения параметров резисторов и конденсаторов часто используются их размеры. Программа SPICE берёт из технологической библиотеки типичное удельное значение физической величины и сама рассчитывает фактическое значение сопротивления или ёмкости соответственно в омах или фарадах. Поэтому в этом случае требуются следующие атрибуты:
312 * <code>refdes</code>: точное позиционное обозначение компонента;
313 * <code>model-name</code>: соответствует модели в технологической библиотеке;
314 * <code>w</code>, <code>l</code>: размеры устройства.
316 Технологическая библиотека должна быть подключена во входном файле SPICE
317 строкой <code>.include</code>.
319 == Пример: полупроводниковый резистор ==
320 * <code>refdes</code> = R6
321 * <code>model-name</code> = rpoly
322 * <code>w</code> = 3u
323 * <code>l</code> = 100u
325 Результирующая строка SPICE: <strong><code>R6 0 5 rpoly w=3u l=100u</code></strong>
327 == Пример: модель полупроводникового резистора ==
328 * <code>model rpoly R rsh=300</code>
330 Это должно быть частью технологической библиотеки вашего поставщика ASIC.
332 ==== Транзисторы и диоды ====
333 С транзисторами и диодами обычно идёт модель, специфичная для устройства.
334 Каждая модель должна представлять детальную нелинейную динамику конкретного
335 устройства, иначе моделирование теряет смысл. SPICE-модель может быть или в
336 виде краткого, однострочного описания, или в виде многострочного набора
337 параметров. Типичным однострочным описанием является перечень параметров
338 для описания характеристик малосигнального диода. Типичные многострочные
339 модели поставляются поставщиками компонентов, которые для своих компонентов
340 часто предлагают текстовые файлы моделей. Так как для представления
341 информации в SPICE существует два широко распространённых формата, то
342 имеется и два подхода для включения этих параметров в схему:
344 === Однострочное описание параметров SPICE ===
345 Чтобы в список соединений включить однострочное описание параметров SPICE, к компоненту должны быть прикреплены следующие атрибуты:
346 * <code>refdes</code>: точное позиционное обозначение компонента;
347 * <code>value</code>: номер модели или тип (номер) прибора для компонента.
348 * <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.
349 * <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки --- <strong>gnetlist</strong> сам это сделает за вас.
351 == Пример: диод ==
352 * <code>refdes</code> = D5
353 * <code>model-name</code> = 1N1004
354 * <code>model</code> = IS=0.5UA RS=6 BV=5.20
356 Результирующая строка SPICE: <strong><code>D5 2 6 1N1004 MODEL 1N1004 D (IS=0.5UA RS=6
357 BV=5.20)</code></strong>
359 === Файл SPICE-модели ===
360 Чтобы включить в список соединений файл с параметрами SPICE, к компоненту должны быть прикреплены следующие атрибуты:
361 * <code>refdes</code>: точное позиционное обозначение компонента;
362 * <code>value</code>: номер модели или тип (номер) прибора для компонента.
363 * <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.
364 * <code>file</code>: Имя файла той SPICE-модели, которую нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами лучше, вероятно, использовать абсолютный путь.
366 Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
367 самое название модели, что и в прикреплённых к компоненту атрибутах
368 <code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
369 файле SPICE-модели и в символе компонента имеют одинаковое назначение.
371 ==== Активные компоненты - интегрированные схемы ====
372 Интегрированные схемы включаются в список соединений подобно транзисторам и
373 диодам. Фактически код SPICE можно включать или как однострочное описание
374 параметров или в виде файла модели.
376 === Однострочное описание параметров SPICE ===
377 Для включения в список соединений однострочного описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
378 * <code>refdes</code>: точное позиционное обозначение компонента;
379 * <code>value</code>: номер модели или тип (номер) прибора для компонента.
380 * <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.
381 * <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки --- <strong>gnetlist</strong> сам это сделает за вас.
383 === SPICE-модель .MODEL или файл .SUBCKT ===
384 Для включения в список соединений файла описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
385 * <code>refdes</code>: точное позиционное обозначение компонента; </em>обратите внимание, что если файл содержит <em><code>.MODEL</code></em>, <em><code>refdes</code></em> должно начинаться с <strong>U</strong>; если файл содержит <em><code>.SUBCKT</code></em>, <em><code>refdes</code></em> должно начинаться с <strong>X</strong>.<em> Генератор списка соединений проверяет тип файла и пытается обработать его правильно, но если вы не следуете этому правилу, могут возникнуть проблемы.
386 * <code>value</code>: номер модели или тип (номер) прибора для компонента.
387 * <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.
388 * <code>file</code>: имя файла содержащего <code>.MODEL</code> или <code>.SUBCKT</code>, который нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами, вероятно, лучше использовать абсолютный путь.
390 Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
391 самое название модели, что и в прикреплённых к компоненту атрибутах
392 <code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
393 файле SPICE-модели и в символе компонента имеют одинаковое назначение.
395 ==== Независимые источники ====
396 Есть два вида независимых источников: источники напряжения и источники тока. Оба типа включаются в список соединений SPICE одинаково. Для включения в свой список соединений независимого источника нужно сделать следующее:
397 - Поместить независимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>&lt;имя независимого источника&gt;.sym</code><em>)
398 - Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:
399 * <code>refdes</code>: </em>V?<em> или </em>I?<em>;
400 * <code>value</code>: однострочное описание источника в формате SPICE.
402 ==== Зависимые источники ====
403 Есть четыре зависимых источника:
404 * источник напряжения, управляемый током («current controlled voltage source», CCVS);
405 * источник тока, управляемый током («current controlled current source», CCCS);
406 * источник напряжения, управляемый напряжением («voltage controlled voltage source», VCVS);
407 * источник тока, управляемый напряжением («voltage controlled current source», VCCS).
408 Все они включаются в список соединений SPICE одинаково. Для
409 включения источника в список соединений SPICE нужно сделать
410 следующее:
411 - Поместить зависимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>&lt;имя зависимого источника&gt;.sym</code><em>). Для этого подойдут символы с именами, являющимися сокращениями типа источника (то есть <strong>ccvs-1.sym</strong>, <strong>cccs-1.sym</strong>, <strong>vcvs-1.sym</strong> и <strong>vccs-1.sym</strong>).
412 - Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:
413 * <code>refdes</code>: </em>H?<em>, </em>F?<em>, </em>E?<em> или </em>G?<em>. Правильные префиксы <code>refdes</code>, соответствующие данным типам источников, перечислены в <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">приложении A</a>;
414 * <code>value</code>: однострочное описание источника в формате SPICE. Обычно атрибут <code>value</code> представляет собой коэффициент усиления источника в соответствующих его типу единицах измерения.
417 ==== Нуллор ====
418 <a href="https://www.google.com/search?q=nullor&amp;btnI=lucky" class="interwiki iw_go" title="https://www.google.com/search?q=nullor&amp;btnI=lucky">Нуллор</a> - это идеальный элемент, состоящий из </em>нуллатора<em> и
419 </em>норатора<em>, имеющий нулевое входное и бесконечное выходное сопротивление,
420 бесконечные коэффициенты усиления по току и напряжению, бесконечные
421 проходную проводимость и передаточное сопротивление и параметры передачи
422 равные нулю. Нуллор является универсальным активным элементом, то есть в
423 идеале с его помощью можно реализовать любые линейные или нелинейные функции
424 при наличии подходящего набора линейных и нелинейных пассивных элементов. В
425 частности с помощью нуллора, резисторов и конденсаторов формируется полный
426 набор линейных схем.
428 Нуллор в зависимости от схемы включения может использоваться для анализа или
429 синтеза реальных схем, что достигается заменой реальных операционных
430 усилителей, токовых конвейеров, усилительных триодов (ламп или транзисторов)
431 нуллорами и небольшим набором пассивных элементов, отражающих их параметры.
432 Идеальные транзисторы на основе нуллора успешно используются в моделировании
433 по переменному току для синтеза различных составных транзисторных схем и
434 составных транзисторов. Схемы с операционными усилителями на базе нуллора
435 используются для реализаций фильтров. Существуют также методики для
436 верификации, автоматической диагностики ошибок, автоматической настройки
437 смещения в аналоговых схемах и т. д.
439 === Нуллор в SPICE ===
440 При отсутствии модели нуллора в программе моделирования общего назначения
441 нуллор можно смоделировать с помощью <a href="#зависимыеисточники" title=":geda:csygas.ru.txt ↵" class="wikilink1">зависимого
442 источника</a> с большим значением коэффициента усиления, например
443 10<sup>9</sup>. Тип зависимого источника (ИНУН, ИТУН, ИНУТ или ИТУТ)
444 выбирается в зависимости от оцениваемого входного сигнала, напряжения или
445 тока и нужного выходного сигнала. Управляемый источник с бесконечным
446 усилением любого из указанных четырёх типов зависимых источников
447 представляет собой эквивалент нуллора.
449 Трёх-выводной нуллор может использоваться для моделирования по переменному
450 току </em>идеальных транзисторов<em> и других </em>триодов<em>. </em>Идеальный
451 операционный усилитель<em> реализуется с помощью источника напряжения,
452 управляемого напряжением, с бесконечным (фактически, достаточно большим)
453 коэффициентом усиления. Токовый конвейер (CCII) является эквивалентом
454 трёх-выводного нуллора.
456 Обычно нуллор используется для моделирования в малосигнальном частотном
457 анализе (в частотном домене). При наличии отрицательной обратной связи
458 нуллор может использоваться как идеальный операционный усилитель даже для
459 выполнения временного анализа (см. <a href="#примерсхемы-сумматор" title=":geda:csygas.ru.txt ↵" class="wikilink1">пример</a>
460 ниже).
462 === Нуллор в gEDA ===
463 В <strong>ngspice</strong> и <strong>gnucap</strong> специальной модели для нуллора нет.
464 Поэтому в качестве нуллора в spice-sdb используется ИНУН с
465 высоким коэффициентом усиления.
467 Для включения нуллора в список соединений SPICE нужно сделать следующее:
468 - Поместить нуллор в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; <strong><em>spice</em></strong> -&gt; <strong>nullor-1.sym</strong>).
469 - Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:
470 * <code>refdes</code>: N?
471 * <code>value</code>: задаётся коэффициент усиления нуллора по напряжению, обычно 1000Meg (необязателен с версии geda-gaf 1.9.2).
473 == Пример: нуллор ==
474 * <code>refdes=N1</code>
475 * <code>value=1000Meg</code>
477 Результирующие строки SPICE:
478 E_N1 1 2 3 4 1000Meg
479 IMeasure_N1 3 4 dc 0
480 IOut_N1 1 2 dc 0
482 Этот код содержит:
483 * управляемый источник напряжения E_N1;
484 * источник тока, измеряющий напряжение IMeasure_N1;
485 * выходной источник тока IOut_N1.
487 Таким образом код нуллора в <strong>gnet-spice-sdb</strong> --- это просто зависимый от
488 напряжения источник напряжения, на входе и на выходе которого стоят нулевые
489 источники тока для предотвращения отказа в работе программы моделирования,
490 когда вход или выход нуллора ни к чему не подключены.
492 Примечание: в результате экспериментов я (vzh) обнаружил, что наличие или
493 отсутствие этих источников никак не влияет на моделирование и не решает
494 поставленной задачи для современной версии <strong>ngspice</strong>. В случае, когда вход
495 или выход нуллора является плавающим, то есть не имеет какого-либо
496 соединения с землёй, <strong>ngspice</strong> всё же выдаст ошибку. Для устранения
497 ошибки можно подключить одну из этих входных или выходных точек к земле
498 через высокоомный резистор. <strong>gnucap</strong> всегда правильно обсчитывает нуллор,
499 но в таком случае на не связанных с землёй узлах будет произвольно
500 меняющееся большое напряжение, так что измерять необходимо не потенциал
501 отдельных узлов относительно земли, а именно напряжение на входе или выходе
502 нуллора.
504 Если нужен нуллор с другим типом чувствительности, его можно сделать на
505 основе символа любого из управляемых источников (одного из
506 </em><code>vcvs-1.sym</code><em>, </em><code>vccs-1.sym</code><em>, </em><code>cccs-1.sym</code><em>,
507 </em><code>ccvs-1.sym</code><em>), просто установив достаточно большое значение атрибута
508 <code>value</code>, скажем, «1000Meg».
510 === Пример схемы - сумматор ===
511 В данном примере нуллор используется в качестве модели идеального
512 операционного усилителя.
514 <a href="media/geda/summing.png" class="media" target="_blank" title="geda:summing.png">geda:summing.png</a>
516 Файл схемы для <strong>gschem</strong>: <a href="media/geda/summing.sch" class="media" target="_blank" title="geda:summing.sch">geda:summing.sch</a>
518 Командный файл для моделирования в <strong>gnucap</strong> и/или <strong>ngspice</strong>:
519 &lt;file spice summing.cmd&gt;
520 .print tran v(nodes)
521 .tran .0001 1 0 &gt;summing.dat
522 &lt;/file&gt;
524 Обратите внимание на часть строки <code>&gt;summing.dat</code> в командном файле. Она
525 игнорируется программой <strong>ngspice</strong>, в то время как <strong>gnucap</strong> использует её
526 для вывода данных в указанный файл в пакетном режиме (при использовании
527 перенаправления командной оболочки выходные данные были бы выведены вместе
528 со строками приглашения <strong>gnucap</strong>, что нам не нужно.
530 Команда для создания списка соединений (обратите внимание на ключ <code>sort_mode</code>, он необходим,
531 чтобы программа <strong>gnucap</strong> работала правильно):
532 gnetlist -g spice-sdb -O sort_mode -o summing.net summing.sch
534 Команда для моделирования с помощью <strong>ngspice</strong>:
535 ngspice -b -r summing.dat summing.net
537 Команда для моделирования с помощью <strong>gnucap</strong>:
538 gnucap -b summing.net
540 Команда для просмотра полученных сигналов:
541 gwave summing.dat
544 ==== Компоненты SPICE ====
545 === Блок SPICE-модели ===
546 В некоторых случаях может быть желательно внедрить блок SPICE-модели
547 непосредственно в схему. Это можно сделать, когда у вас есть несколько
548 устройств с атрибутами <code>value</code>, в которых вызывается одна и та же
549 SPICE-модель. В зависимости от того, является ли блок SPICE однострочным или
550 многострочным, код можно встроить одним из двух способов:
552 == Однострочная SPICE-модель ==
553 - Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>spice-model-1.sym</code><em>)
554 - Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:
555 * <code>refdes</code>: A?
556 * <code>model-name</code>: название модели (т. е. название, задаваемое в компонентах, работа которых будет моделироваться)
557 * <code>type</code>: один из допустимых типов компонентов, определённых в спецификации SPICE.
558 * <code>model</code>: соответствующая однострочная SPICE-модель.
560 == Многострочная SPICE-модель ==
561 - Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>spice-model-1.sym</code><em>)
562 - Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:
563 * <code>refdes</code>: A?
564 * <code>model-name</code>: название модели
565 * <code>file</code>: имя файла, содержащего код SPICE-модели (т. е. <code>.MODEL</code> или <code>.SUBCKT</code>).
567 === Блок включения ===
568 Блок включения добавляет в список соединений директиву <code>.INCLUDE</code>.
569 - Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>spice-include-1.sym</code><em>)
570 - Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:
571 * <code>refdes</code>: A?
572 * <code>file</code>: имя подключаемого файла.
574 === Блок директивы SPICE ===
575 При наличии в схеме блока директивы, в списке соединений создаётся специальный блок кода SPICE. Директивой может подключаться либо файл с операторами, либо строка, содержащаяся в атрибуте <code>value</code>. Генератор списка соединений выводит содержимое строки или файла в список соединений дословно. Подходящими примерами использования директивы является подключение следующих операторов:
576 * .TEMP
577 * .IC
578 * и других операторов SPICE, для которых в <strong>gschem</strong> нет символов.
580 Для добавления в схему директивы SPICE, сделайте следующее:
581 - Поместите блок директивы в свою схему. (Выберите <strong><em>Добавить</em></strong> -&gt; <strong><em>Компонент</em></strong> -&gt; </em><code>spice</code><em> -&gt; </em><code>spice-directive-1.sym</code><em>)
582 - Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:
583 * <code>refdes</code>: A?
584 * <code>file</code>: имя подключаемого файла.
586 ==== Работа с иерархическими моделями ====
587 При SPICE-моделировании часто возникают ситуации, когда хочется представить
588 схему какого-либо конкретного компонента в виде </em><code>.SUBCKT</code><em>, а затем
589 внедрить модель этого компонента в основную схему. Приведём довольно
590 распространённый пример. Допустим, при моделировании СВЧ-схемы вы решили
591 использовать такую модель конденсатора, которая содержит не только ёмкость,
592 но и паразитные индуктивности и сопротивления. Производители конденсаторов
593 часто поставляют схемы, отражающие схемную топологию имеющихся паразитных
594 элементов, и указывают значения соответствующих сопротивлений и
595 индуктивностей. И вам бы хотелось начертить модель такого конденсатора в
596 <strong>gschem</strong>, создать с помощью генератора списка соединений файл
597 </em><code>.SUBCKT</code><em>, а затем использовать этот файл для моделирования процессов
598 в основной схеме.
600 Поскольку такого рода задачи при SPICE-моделировании являются довольно обычными, то теперь их можно выполнять и с помощью <strong>gnet-spice-sdb</strong> (начиная с версии 20030331). Для создания файла </em><code>.SUBCKT</code><em> подсхемы и использования его в основной схеме нужно сделать следующее:
601 - Начертите в <strong>gschem</strong> подсхему компонента (например, конденсатор + паразитные элементы).
602 - Добавьте в неё блок <code>spice-subcircuit-LL</code> (</em><code>spice-subcircuit-LL-1.sym</code><em>). Этим самым генератору списка соединений указывается, что эта схема является подсхемой для создания </em><code>.SUBCKT</code><em>. Прикрепите к символу блока атрибут:
603 * <code>model-name</code> = </em>cap_with_parasitics<em><br/>
604 (Конечно, </em>cap_with_parasitics<em> --- это просто пример. В своей схеме задайте название своей модели.) Тогда при создании файла списка соединений символ блока заставит генератор первой строкой туда вставить: <code>.SUBCKT cap_with_parasitics</code>.
605 - В подсхеме к каждому из соединений ввода/вывода (т. е. к соединениям с основной схемой) подключите символ <code>spice-subcircuit-IO</code> (</em><code>spice-subcircuit-IO-1.sym</code><em>). Пронумеруйте позиционные обозначения символов ввода/вывода в таком порядке, в каком соединения ввода/вывода должны перечисляться в строке <code>.SUBCKT</code> выходного файла (т. е. P1 --- для первого, P2 --- для второго и т. д.).
606 - Когда вы закончите с подсхемой, нужно будет обычным способом создать список соединений. Например, если ваша схема называется </em><code>cap_with_parasitics.sch</code><em>, список соединений для неё создаётся командой: &lt;code&gt;gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch&lt;/code&gt; При этом список соединений SPICE будет записан в файл </em><code>cap_with_parasitics.cir</code><em>. Внимательно просмотрите этот файл и убедитесь, что список соединений создан правильно.
607 - Затем для основной схемы создайте символ, который будет указывать на </em><code>.SUBCKT</code><em>. Обратите внимание, что позиционное обозначение данного символа должно начинаться с буквы </em>X<em>. Чтобы обеспечить это, сделайте следующее:
608 * Начертите символ в <strong>gschem</strong>. Обычно, чтобы символ модели отличался от обычных компонентов, я черчу вокруг него прямоугольник. Если хотите, можете отметить его по-другому.
609 * Обеспечьте, чтобы выводы в этом символе и в </em><code>.SUBCKT</code><em> были перечислены в одинаковом порядке. Это делается редактированием символа в текстовом редакторе и установкой атрибутов <code>pinseq</code>. Генератор списка соединений выведет выводы в порядке, заданном в этих атрибутах.
610 * В текстовом редакторе установите для символа атрибут <code>device</code>, например, </em>capacitor-model<em>. <strong>Не</strong> задавайте в этом атрибуте ни один из тех типов компонентов, что поддерживаются в SPICE и перечислены в <a href="#приложениеaподдерживаемыекомпонентыиихатрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">приложении</a>! Ваша цель --- сделать особый символ, позиционное обозначение <code>refdes</code> которого начинается с </em>X<em>, а если же в <code>device</code> указан тип, распознаваемый в SPICE, этой цели не достичь.
611 * В текстовом редакторе установите значение атрибута позиционного обозначения символа <code>refdes</code> в </em>X?<em>.
612 - Создайте основную схему. Добавьте свой новый символ в схему столько раз, сколько нужно, и разведите соединения обычным способом.
613 - Чтобы символ указывал на подсхему </em><code>.SUBCKT</code><em>, дважды щёлкните по нему и установите следующие атрибуты:
614 * <code>file</code> = </em>cap_with_parasitics.cir<em>
615 * <code>model-name</code> = </em>cap_with_parasitics<em><br/>
616 а также другие необходимые атрибуты (например, <code>refdes</code>).
617 - Теперь создайте список соединений для своей основной схемы обычным способом. Содержимое каждого файла </em><code>.SUBCKT</code><em> будет записано в основной список соединений. Откройте полученный файл в текстовом редакторе и внимательно проверьте, что список соединений создан правильно. Особое внимание обратите на следующее:
618 * Проверьте, что соединения, подключающие </em><code>.SUBCKT</code><em> подсхемы к основному списку соединений, перечислены в правильном порядке.
619 * Убедитесь, что и в основной схеме, и в подсхеме (в строке объявления <code>.SUBCKT</code>) используется одно и то же название модели.
621 Как только список соединений готов, вы тотчас же можете начать моделирование
622 своего проекта любой предпочитаемой программой
623 SPICE-моделирования. Некоторые из работающих в Linux программ описаны ниже.
625 ===== Создание списка соединений SPICE =====
626 ==== Использование gnetlist ====
627 Когда схема начерчена, список соединений SPICE можно создать с помощью
628 программы gEDA <strong>gnetlist</strong>, запустив её из командной строки и задав в
629 качестве аргументов имена файлов схем. <strong>gnetlist</strong> сконструирована из двух
630 частей: оболочки --- процессора, написанного на C, читающего файл
631 </em><code>.sch</code><em> и создающего из него внутреннее, общее представление проекта, и
632 драйверов на Scheme --- генераторов списков соединений. С такой архитектурой
633 <strong>gnetlist</strong> является очень гибко настраиваемой программой --- с помощью
634 разных драйверов на Scheme производятся списки соединений в разных
635 форматах. Красота этой схемы (намеренный каламбур) в том, что пользователи
636 gEDA легко могут и сами написать подходящие генераторы списков соединений
637 для своих собственных нужд. Файл драйвера на Scheme, с реализацией
638 усовершенствованного создания списков соединений SPICE, называется
639 </em><code>gnet-spice-sdb.scm</code><em> и находится в каталоге
640 </em><code>${PREFIX}/geda/share/gEDA/scheme</code><em>.
642 Из командной строки вызов драйвера <strong>spice-sdb</strong> для
643 <strong>gnetlist</strong> производится следующим образом:
644 &lt;code&gt;gnetlist [OPTIONS] -g spice-sdb filename1 ... filenameN&lt;/code&gt;
645 Помимо прочих ключей, описанных в
646 <a href="geda-gnetlist_ug-command_line.ru.html" class="wikilink1" title="geda-gnetlist_ug-command_line.ru.html">Руководстве пользователя gnetlist</a>,
647 в <strong>gnetlist</strong> поддерживаются специфические, драйверо-зависимые ключи.
648 Специфический ключ драйвера может быть включен с помощью задания <code>-O
649 КЛЮЧ</code>. Драйвером <strong>spice-sdb</strong> поддерживаются следующие дополнительные
650 ключи:
651 * <code>include_mode</code>: записывать в выходной файл <code>.INCLUDE &lt;filename&gt;</code> вместо содержимого файла модели;
652 * <code>embedd_mode</code>: внедрять содержимое указанных в <code>.include</code> файлов в список соединений;
653 * <code>nomunge_mode</code>: не производить автоматическую корректировку позиционных обозначений компонентов;
654 * <code>sort_mode</code>: сортировать выходной список соединений.
656 ==== Создание списка соединений при помощи gnetlist и spice-sdb ====
657 Создать список соединений SPICE из схемы довольно просто. Для этого сделайте следующее:
658 * Сохраните свою схему в </em><code>filename.sch</code><em>.
659 * Создайте список соединений SPICE, запустив <strong><code>gnetlist -g spice-sdb filename.sch</code></strong>. Список соединений будет выведен в файл </em><code>output.net</code><em>. Кроме того, с помощью ключа <code>-o</code> можно задать другое имя выходного файла. Например, при задании такой команды: &lt;code&gt;gnetlist -g spice-sdb -o amplifier.cir amplifier.sch&lt;/code&gt; схема будет взята из файла </em><code>amplifier.sch</code><em>, а список соединений SPICE будет записан в файл </em><code>amplifier.cir</code><em>.
660 * Откройте свой список соединений в текстовом редакторе и внимательно просмотрите. Проверьте, не отсутствуют ли какие-либо атрибуты и нет ли каких-либо других проблем.
662 ==== Обычные проблемы при создании списков соединений ====
663 Здесь мы попытаемся перечислить наиболее общие проблемы, возникающие при создании списков соединений и соответствующие решения:
664 * ERROR_INVALID_PIN:<br/>
665 Эта ошибка может появиться, если последовательность номеров, заданных в атрибутах <code>pinseq</code> символа, не начинается с 1 или в ней имеются пропуски. Это можно починить, отредактировав такой символ в текстовом редакторе.
666 * ERROR: In procedure caddr:<br/>
667 Это весьма распространённая ошибка. Обычно она появляется в том случае, когда вы забыли добавить один из обязательных атрибутов. Чтобы локализовать проблему, попробуйте запустить <strong>gnetlist</strong> в режиме подробного вывода (<strong><code>gnetlist -v -g spice-sdb filename.sch</code></strong>). Тогда генератор списка соединений остановит обработку на компоненте с пропущенным атрибутом и выдаст ошибку. Определив таким образом компонент-нарушитель, вы можете заново открыть схему в <strong>gschem</strong> и поправить атрибуты.
669 Наконец, помните, что прежде, чем использовать свой список соединений SPICE
670 для моделирования, важно внимательно его проверить. Имейте в виду, что
671 данный генератор списка соединений всё ещё находится в стадии «бета-версии»
672 и какие-то проблемы с созданием списков соединений возможно ещё имеются.
674 ===== SPICE-моделирование =====
675 Для SPICE-моделирования в GNU/Linux есть несколько вариантов, я отмечу три:
676 * <strong>LTSpice</strong> --- свободная (freeware) программа SPICE-моделирования, изначально выпущенная в Linear Technologies как инструмент для выбора/проектирования компонентов для платформы Windows. Благодаря очень быстрому и мощному SPICE-процессору она стала популярной в среде любителей и инженеров-проектировщиков, предпочитающих использовать свободные средства. Исходно <strong>LTSpice</strong> была написана для Windows, но затем немного изменена для запуска в GNU/Linux с помощью <strong>wine</strong>; если вам нужна мощная программа SPICE-моделирования профессионального качества, рекомендую пользоваться ею.
677 * <strong>ngspice</strong> --- «официальная» программа SPICE-моделирования в gEDA Suite. Программа <strong>ngspice</strong> --- это возрождение кода <strong>SPICE 3</strong> в Linux. Она предоставляет SPICE-процессор для моделирования, оболочку, управляемую из командной строки, и возможность графического вывода результатов моделирования в <strong>X Window System</strong>. <strong>ngspice</strong> --- это программа с открытым исходным кодом, написанная для Linux. Это программа SPICE для тех, кто хочет без труда заниматься моделированием в Linux или программированием и улучшением кода SPICE.
678 * <strong>tclspice</strong> --- ответвление разработки <strong>ngspice</strong>. <strong>tclspice</strong> представляет собой расширенный вариант <strong>ngspice</strong>, в котором (в теории) набор команд SPICE экспортируется в API языка Tcl, позволяя встраивать SPICE-анализ в программы на Tcl. Среди прочего это полезно для автоматизации задач оптимизации разработки. <strong>tclspice</strong> --- программа моделирования для тех, кто интересуется продвинутой, скриптовой разработкой.
680 Есть ещё программа моделирования <strong>gnucap</strong> под лицензией GPL, основанная на
681 (или являющаяся потомком) <strong>Al&#039;s Circuit Simulator</strong> (<strong>ACS</strong>). Я её особо
682 не использовал, поэтому информация о <strong>gnucap</strong> здесь отсутствует и её нужно
683 добавить (FIXME).
685 ==== LTSpice ====
686 Программа <strong>LTSpice</strong> была написана в Linear Technologies, её авторы ---
687 </em>Mike Englehardt<em> и другие. Затем LinearTech отдала её в свободное
688 пользование как вспомогательное средство для проектирования инженерам,
689 желающим моделировать характеристики её контроллеров блоков питания,
690 работающих в ключевом режиме. Пакет предоставляет оболочку для
691 редактирования принципиальных схем, простой и мощный SPICE-процессор и
692 возможность построения графиков результатов различных видов расчётов SPICE.
693 Лично мне оболочка для разработки схем кажется неуклюжей и неудобной для
694 работы; <strong>gschem</strong> разбивает её наголову по простоте использования и
695 возможностям. Однако SPICE-процессор и средства анализа в <strong>LTSpice</strong>
696 просто превосходны.
698 Программа <strong>LTSpice</strong> исходно предназначалась для работы в Windows, но
699 </em>Mike<em> немного изменил её, так что она довольно хорошо работает и в
700 GNU/Linux из-под <strong>wine</strong>. (Только система меню справки сломана ---
701 остальная часть пакета работает хорошо). Ещё одной приятной стороной
702 <strong>LTSpice</strong> является хорошая поддержка, --- </em>Mike<em> регулярно читает
703 новостные группы </em>sci.electronics.cad<em> и, как правило, всегда рад помочь
704 тем, кто испытывает с ней проблемы. Поэтому, несмотря на её
705 Windoze-наследие, я рекомендую <strong>LTSpice</strong> как мощный, профессионального
706 качества драйвер моделирования и анализа для gEDA.
708 === Установка и настройка LTSpice ===
709 Установка и настройка <strong>LTSpice</strong> производится следующим образом:
710 - Загрузите и установите <strong>wine</strong>. Мне удалось поставить <strong>Wine-20030219</strong>. Более поздние версии наверняка тоже будут работать.
711 - Загрузите <strong>LTSpice</strong>. Программа доступна по адресу http://www.linear.com/software под названием <strong>SwitcherCAD-III</strong>.
712 - Запустите программу установки <strong>LTSpice</strong> в <strong>wine</strong>.
714 === Запуск LTSpice с проектами gEDA ===
715 <strong>LTSpice</strong> умеет читать файлы списков соединений SPICE, сделанные в gEDA. Моделирование в <strong>LTSpice</strong> мне удавалось производить следующим образом:
716 - Прежде всего регистрируйтесь в системе как обычный пользователь --- <strong>wine</strong> не любит работать из-под суперпользователя.
717 - В каталоге своего проекта создайте файл </em><code>Simulation.cmd</code><em> и пропишите в нём команды своего SPICE-анализа (например, .OP, .AC, .DC и т. д.).
718 - Добавьте в свою схему символ блока включения SPICE. Атрибут <code>file</code> установите в </em>Simulation.cmd<em>.
719 - Создайте для своего проекта список соединений.
720 - Сделайте ссылку на свой список соединений </em><code>output.net</code><em> в каталоге установки <strong>SwCADIII</strong>. Имя файла ссылки должно содержать суффикс </em>.cir<em>. Например: &lt;code&gt;ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir&lt;/code&gt;
721 - Запустите <strong>LTSpice</strong>: перейдите в каталог установки <strong>SwCADIII</strong> командой <strong>cd</strong> и запустите &lt;code&gt;wine scad3.exe&lt;/code&gt;
722 - В окне <strong>SwCADIII</strong> выберите <strong><em>Файл</em></strong> -&gt; <strong><em>Открыть</em></strong> -&gt; </em><code>(файлы типа списков соединений [.cir])</code><em> и выберите свой файл.
723 - Запустите моделирование щелчком по кнопке запуска (<strong>Run</strong>) или с помощью <strong><em>Моделирование</em></strong> -&gt; <strong><em>Запуск</em></strong>.
724 - Выберите для графика переменные и щёлкните OK. Дальше программа <strong>SwCADIII</strong> всё сделает сама.
726 Конечно, чтобы понять, как пользоваться программой <strong>LTSpice</strong> эффективно,
727 очень важно с ней позаниматься, но для начала вам должно быть достаточно
728 вышеизложенного описания.
730 ==== Ngspice ====
731 <strong>ngspice</strong> начал </em>Paolo Nenzi<em> в Университете Рима «La Sapienza»,
732 стремясь создать версию стандартного Berkeley SPICE версии 3 под лицензией
733 GPL, полностью переписав этот пакет. В его планы также входило создание
734 лучших, более ясных алгоритмов расчётов для SPICE-процессора. Больше
735 информации можно найти на веб-странице <strong>ngspice</strong>:
736 http://ngspice.sourceforge.net/. Но в свете этих возвышенных планов
737 </em>Paolo<em> стал заниматься несколько другим: он взял код <strong>SPICE 3</strong>, много
738 лет гуляющий по интернету, переработал его, и написал систему сборки, чтобы
739 его можно было бы скомпилировать обычным способом с помощью <strong>GNU
740 make</strong>. Это было главное достижение, за которое </em>Paolo<em> заслуживает
741 огромной похвалы. К сожалению, судя по виду веб-страницы, разработка
742 <strong>ngspice</strong> похоже остановилась в конце 2001 г. На самом деле после 2001
743 г. разработка значительно замедлилась, но в последнее время </em>Paolo<em> снова
744 занялся <strong>ngspice</strong>. Последнюю версию, <strong>ngspice-rework-15</strong>, он выпустил в
745 феврале 2004 года. Эта версия доступна только на странице загрузки сайта
746 </em>sourceforge<em>; </em>Paolo<em> пока не обновил остальную часть веб-страницы
747 проекта.
749 === Установка и конфигурирование ngspice ===
750 Вообще, я пришёл к тому, что лучше загрузить, сконфигурировать и
751 скомпилировать исходный код <strong>ngspice</strong>, вместо того чтобы пытаться
752 установить двоичный пакет. Это решение я и опишу здесь в общих чертах.
754 === Загрузка исходного кода ===
755 Скачайте самую последнюю версию дистрибутива со страницы
756 http://sourceforge.net/projetcs/ngspice. Обязательно самую последнюю,
757 так как у неё самая высокая производительность и наибольшее количество
758 возможностей. На май 2004 года, последний выпуск --- это
759 <strong>ngspice-rework-15</strong>. Установите исходники туда, где вы их обычно храните.
760 Мне нравится держать свои исходники gEDA в отдельном каталоге, например,
761 </em><code>/usr/local/geda/sources/ngspice</code><em>. Можете перенять такую схему.
763 === Извлечение исходных текстов ===
764 Исходные тексты программы распространяются в виде «тарбола» --- сжатого
765 архива. Вам нужно извлечь из него файлы, сделав следующее:
766 &lt;code&gt;user@host:~$ cd &lt;каталог, куда следует извлечь исходные файлы&gt;
767 user@host:~sources$ tar -xvzf &lt;/путь/к/пакету.tar.gz&gt;
768 user@host:~sources$ cd &lt;извлечённый каталог&gt;&lt;/code&gt;
770 В этот момент вы находитесь в корневом каталоге <strong>ngspice</strong>. Чтобы
771 познакомиться с этой программой и процессом её установки поближе, прочитайте
772 общеизвестные файлы, такие как </em><code>README</code><em> и </em><code>INSTALL</code><em>. Также
773 неплохо бы почитать файл </em><code>NOTES</code><em>, в нём содержится информация,
774 полезная для разработки или отладки возможностей <strong>ngspice</strong>.
776 === Конфигурирование и компиляция ngspice ===
777 Для сборки <strong>ngspice</strong> используется обычная последовательность <strong><code>configure &amp;&amp; make &amp;&amp; make install</code></strong>, применяемая и для прочих GNU-тых программ. Для конфигурирования <strong>ngspice</strong> имеется достаточно много ключей. FIXME: Полный их перечень и сопровождающая документация нуждаются в доработке; чтобы увидеть их все, лучше всего посмотреть файл </em><code>configure.ac</code><em>. Многие из ключей, доступных на этапе конфигурирования, предназначены для отладки программы моделирования или для включения возможностей экспериментальных видов анализа. Новичкам стоит обратить внимание на три ключа:
778 * <code>--enable-xspice</code>: этим ключом добавляется поддержка расширений XSpice. Эти расширения позволяют вам определить устройства, чьё поведение задаётся специальными «моделями кода». Возможно наиболее важной моделью кода является <code>spice2poly</code>, которая транслирует конструкции <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> в стиле SPICE 2 в модели XSpice, пригодные для использования в SPICE 3.
779 * <code>--with-readline</code>: при задании этого ключа в <strong>ngspice</strong> встраивается поддержка GNU <strong>readline</strong>. Это значит, что вы сможете использовать как клавиатурные команды в стиле <strong>emacs</strong>, так и клавиши со стрелками для перемещения в строке ввода команд. Без этой возможности интерфейс командной строки будет враждебным, то есть, если вы ошибётесь при вводе длинной команды, у вас не останется других вариантов, кроме как снова ввести её целиком. </em>Paolo<em> не советует использовать возможность <code>readline</code>, поскольку при этом код GPL (<strong>readline</strong>) смешивается с кодом BSD (<strong>ngspice</strong>), но для других он этот ключ оставил, чтобы люди сами могли решить, насколько быть целомудренными в этом вопросе.
780 * <code>--prefix</code>: этим ключом задаётся базовый каталог установки двоичных файлов программ.
782 Прежде чем запускать <strong>configure</strong> нужно проверить ключи, которые вы хотите
783 задать. Краткое описание приведено в приложении (FIXME: требуется
784 доработка). Как только будете готовы, наберите:
785 &lt;code&gt;user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda &lt;другие ключи конфигурации&gt;&lt;/code&gt;
787 Конечно, <code>--prefix=</code> должен указывать на тот каталог, где находятся
788 <strong>ваши</strong> файлы, относящиеся к gEDA. После выполнения этой команды программа
789 моделирования будет сконфигурирована и готова для компиляции. Компиляция
790 проста:
791 &lt;code&gt;user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install&lt;/code&gt;
793 Как обычно для установки пакетов в общедоступный каталог скорее всего вам
794 понадобятся права суперпользователя, в таком случае нужно сделать так:
795 &lt;code&gt;user@host:~sources/&lt;tld&gt;$ make
796 user@host:~sources/&lt;tld&gt;$ su -c make install&lt;/code&gt;
798 === Проверка установки ===
799 В этот момент вы должны быть способны запустить <strong>ngspice</strong>. Свою установку
800 можно проверить, попробовав обработать одну из тестовых схем из каталога с
801 тестами. Я рекомендую запустить тест </em><code>TransImpedanceAmp</code><em>, так как в
802 нём проверяется функциональность SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a>.
804 === Использование ngspice ===
805 Запуск <strong>ngspice</strong> очень прост. В приглашении командной строки Unix введите
806 команду:
807 &lt;code&gt;user@host:~$ ngspice filename.net&lt;/code&gt;
809 и <strong>ngspice</strong> загрузит список соединений SPICE </em><code>filename.net</code><em> в своё
810 рабочее пространство и выведет своё приглашение командной строки. Вы можете
811 запустить моделирование, сказав «run» (запуск). Результаты будут сохранены в
812 массиве SPICE для дальнейшей печати на принтере или черчения на
813 плоттере. Набор имеющихся в распоряжении команд приведён на странице
814 http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5.
816 Для использования кодовой модели SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> её
817 нужно загрузить в <strong>ngspice</strong> <strong><em class="u">до</em></strong> загрузки списка соединений. (Если
818 вы загрузите её после загрузки списка соединений, элементы
819 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> в ней транслироваться не будут и потому не
820 будут и правильно смоделированы.) Чтобы загрузить кодовую модель, в строке
821 приглашения <strong>ngspice</strong> нужно просто сказать:
822 &lt;code&gt;codemodel /usr/local/geda/lib/spice/spice2poly.cm&lt;/code&gt;
824 (укажите здесь местоположение своих кодовых моделей). Учтите, что для
825 кодовой модели следует указать <strong>абсолютное имя файла</strong>; программа
826 <strong>ngspice</strong> не настолько сообразительна, чтобы искать её в стандартных
827 каталогах. (Также обратите внимание, что нужно указать путь к
828 </em><code>spice2poly.cm</code><em> на своей машине; путь, указанный выше, --- мой.)
830 Лучшим способом для считывания кодовой модели </em><code>spice2poly</code><em> будет
831 включение её в файл инициализации <strong>ngspice</strong> --- </em><code>spinit</code><em>. Файл
832 инициализации находится в каталоге
833 </em><code>/usr/local/geda/share/ng-spice-rework/scripts</code><em> (или где-то ещё, где у
834 вас установлены файлы gEDA). В файле </em><code>spinit</code><em> можно задать и другие
835 настройки для <strong>ngspice</strong>.
837 ==== Tclspice ====
838 Когда в 2002-м году основная ветка разработки <strong>ngspice</strong> впала в спячку,
839 несколько товарищей из MultiGig Ltd. (http://www.multigig.com/) занялись
840 разработкой ветки <strong>ngspice</strong>, которую они назвали <strong>tclspice</strong>.
841 <strong>tclspice</strong> --- это расширенный вариант <strong>ngspice</strong>, в котором множество
842 команд SPICE экспортируется как API к Tcl. При этом преследуется цель
843 облегчить написание скриптов для расчётов SPICE. Это очень мощное средство:
844 для <strong>tclspice</strong> можно написать скрипт на Tcl, который запустит цикл,
845 подстроит значения компонентов, запустит анализ, а затем рассчитает
846 характеристики схемы с подстроенными компонентами, прежде чем запускать
847 новый цикл. Очевидно, эту возможность можно использовать для выполнения
848 автоматических, многомерных <a href="geda-glossary.ru.html#оптимизациясхемы" class="wikilink1" title="geda-glossary.ru.html">оптимизаций
849 схемы</a>. Если проект будет завершён, <strong>tclspice</strong> возможно станет
850 «приложением-убийцей» для САПР электроники с открытым исходным кодом.
852 === Загрузка, установка и сборка tclspice ===
853 Домашняя страница проекта <strong>tclspice</strong> находится по адресу
854 http://tclspice.sourceforge.net/. Исходные коды <strong>tclspice</strong> проживают
855 по адресу http://sourceforge.net/projects/tclspice. Для загрузки и
856 установки <strong>tclspice</strong> используются те же самые шаги, что подробно расписаны
857 для <strong>ngspice</strong> выше. Так как <strong>tclspice</strong> является расширенным вариантом
858 <strong>ngspice</strong>, то если нужно, из исходных текстов <strong>tclspice</strong> можно
859 установить только <strong>ngspice</strong>. Сборка целого пакета потребует пары
860 дополнительных шагов. Здесь я представлю последовательность шагов для
861 сборки и <strong>ngspice</strong> (автономной программы с интерфейсом командной строки),
862 и API для Tcl из исходных текстов <strong>tclspice</strong>.
864 Перед сборкой <strong>tclspice</strong> у вас уже должны быть установлены следующие пакеты:
865 * TclX (у меня собирается с tclx8.3.5)
866 * tclreadline (у меня собирается с tclreadline-2.1.0)
867 * BLT for Tcl (у меня собирается с blt2.4z)
868 * Tcl/Tk (у меня собирается с 8.4.3.)
870 Если на вашей Linux-машине эти пакеты ещё не установлены, их нужно найти и
871 собрать. Обратите внимание, что сборка TclX требует наличия исходных текстов
872 для Tcl и Tk, так что вам придётся также загрузить исходные тексты и этих
873 пакетов, если они у вас ещё не установлены. У меня успешно работает Tcl/Tk
874 8.4.3, хотя возможно будут работать и версии 8.3.X. Также, если вы хотите
875 запускать SPICE в фоновом режиме, вам придётся перекомпилировать Tcl и Tk с
876 разрешением поддержки нитей (thread), если она уже не была разрешена (в
877 пакетах для RedHat --- нет).
879 Будем считать, что вы уже загрузили и установили указанные выше
880 дополнительные пакеты. Тогда для сборки на своей машине и <strong>ngspice</strong>, и API
881 для Tcl, вам нужно предпринять следующее:
882 &lt;code&gt;user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda
883 user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install (этими командами собирается и устанавливается старый добрый ngspice)
884 user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --prefix=/usr/local/geda --enable-tcl --enable-experimental --disable-shared
885 user@host:~sources/&lt;tld&gt;$ make tcl &amp;&amp; make install-tcl&lt;/code&gt;
887 Как обычно для установки пакетов в общедоступный каталог скорее всего вам
888 понадобятся права суперпользователя, в таком случае нужно сделать так:
889 &lt;code&gt;user@host:~sources/&lt;tld&gt;$ su -c make install
890 user@host:~sources/&lt;tld&gt;$ su -c make install-tcl&lt;/code&gt;
892 Теперь всё готово для написания скриптов на Tcl, включающих команды SPICE.
893 Информация об использовании <strong>tclspice</strong> приведена ниже. Наконец, если вам
894 интересно попрограммировать <strong>tclspice</strong> (и даже если нет), будет неплохо
895 прочитать файл </em><code>NOTES</code><em>, находящийся в корневом каталоге исходников, в
896 котором можно найти пару полезных советов.
898 === Использование tclspice ===
899 <strong>tclspice</strong> разработан для экспорта команд SPICE в программы на Tcl. Чтобы
900 использовать <strong>tclspice</strong>, в начале своей программы на Tcl нужно просто
901 сказать <code>package require spice</code>. После этого, чтобы запустить команду
902 SPICE, при её вызове надо просто задать пространство имён <code>spice</code>. Как
903 пример приведём программу на Tcl, которая прочитает список соединений SPICE,
904 прикажет сделать <a href="geda-glossary.ru.html#временнойанализ" class="wikilink1" title="geda-glossary.ru.html">временной анализ</a>, запустит
905 моделирование, а затем начертит график напряжения для соединения </em>Vout<em> за
906 указанное время:
907 &lt;code&gt;#! tclsh
908 package require spice
909 spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
910 spice::source netlistname.cir
911 spice::tran 0.1ns 40ns
912 spice::run
913 spice::plot Vout
914 puts &quot;Всё готово!&quot;&lt;/code&gt;
916 Обратите внимание, что поскольку <strong>tclspice</strong> не читает инициализационный
917 файл <strong>ngspice</strong> </em><code>spinit</code><em>, любые команды инициализации вам придётся
918 задавать непосредственно в программе на Tcl. Например, в вышеприведённом
919 примере мы читаем кодовую модель <code>spice2poly</code> непосредственно в рабочее
920 пространство. Доступно и много других команд; полный набор команд
921 <strong>tclspice</strong> приводится на странице
922 http://tclspice.sourceforge.net/docs/tclspice_com.html.
924 === Проблемы в tclspice ===
925 Главная проблема <strong>tclspice</strong> (унаследованная от <strong>ngspice</strong>) --- утечки
926 памяти. Поэтому время моделирования в ней ограничено. Это значит, что если
927 вы хотите сделать оптимизацию, многократно повторив цикл моделирования для
928 схемы, память может быть исчерпана прежде, чем программа закончит
929 оптимизацию. Это известная проблема в <strong>tclspice</strong> и сейчас затрачиваются
930 большие усилия для того, чтобы утечки заткнуть.
932 Между тем для осуществления длительной оптимизации существуют кое-какие
933 обходные пути, которые можно использовать для проектов среднего размера. Я
934 применял один способ, состоящий в том, что после каждого анализа схемы
935 оптимизатор записывает данные своего текущего состояния в файл и из этого же
936 файла читает данные своего исходного состояния. Оптимизатор также сохраняет
937 текущий перечень лучших вариантов компонентов в другой файл и читает этот
938 файл при каждом запуске оптимизации. К тому же у меня есть программа на Tcl
939 под названием <strong>TaskMgr.tcl</strong>, работающая циклически; при каждой итерации
940 цикла она порождает дочерний процесс для запуска оптимизатора. Между тем
941 родительский процесс ожидает 5 минут (эвристически найденное время), а
942 затем, прежде чем повторять цикл и запускать оптимизатор снова, выдаёт
943 дочернему процессу сигнал «KILL». Таким образом оптимизатор никогда не
944 работает настолько долго, чтобы съесть всю память на моей машине. Вот
945 собственно сама программа <strong>TaskMgr.tcl</strong>:
946 &lt;code&gt;#! tclsh
947 package require Tclx
948 while {1} {
949 set PID [fork]
950 if {$PID} {
951 # Родительский процесс
952 after 300000
953 puts &quot;Собираюсь убить дочерний процесс PID = $PID . . . .&quot;
954 kill $PID
955 wait $PID
956 } else {
957 # Дочерний процесс
958 source Optimize.tcl
959 # Если мы вдруг когда-нибудь пройдём через всё это, можем выдать следующее:
960 error &quot;Мы закончили!!!!!!&quot;
962 }&lt;/code&gt;
964 Заметьте, что для запуска <strong>tclspice</strong> программе <strong>TaskMgr.tcl</strong> требуется,
965 чтобы пакет <strong>TclX</strong> уже был установлен. Может быть вам следует также задать
966 другое время ожидания в зависимости от объёма памяти и скорости вашей
967 машины. Наконец, родительскому процессу придётся следить и за $PID (с
968 помощью <code>wait</code>), так как когда дочерний процесс умрёт, нужно чтобы и его
969 труп был выкинут из списка задач ядра. Иначе работа оптимизатора приведёт к
970 порождению целой толпы процессов-зомби, подстерегающих вас на вашей машине
971 за каждым углом, --- длительная оптимизация может превратить вашу систему в
972 «ночь живой смерти»!
974 Такой метод ограничения времени для дочернего процесса предпочтителен в том
975 случае, когда одиночный анализ занимает относительно немного времени по
976 сравнению с временем, требуемым для съедания всей памяти машины. Если же
977 время анализа сопоставимо со временем съедания всей памяти, то лучше
978 заставить родительский процесс следить за состоянием анализа, запустить
979 одиночный анализ, а затем заставить этот анализ завершаться после каждой
980 итерации. Предпочтителен ли такой вариант, зависит от размера и сложности
981 вашего проекта; может быть вам следует поэкспериментировать со своим
982 анализом, чтобы узнать, как долго он длится и сколько потребляет памяти. Я
983 нашёл, что анализ для проекта из шести операционных усилителей (с
984 соответствующими моделями поставщиков) и пятидесяти или около того пассивных
985 элементов на PIII 333MHz c 128MB RAM будет длиться менее 10 секунд. Поэтому,
986 чтобы одиночный анализ съел значительное количество памяти, ваш проект
987 должен быть довольно большим.
989 ===== Приложение A. Поддерживаемые компоненты и их атрибуты =====
991 В таблице 1 представлены устройства и связанные с ними атрибуты,
992 используемые драйвером <strong>spice-sdb</strong>. <strong>Необходимые</strong> атрибуты выделены
993 <strong>жирным шрифтом</strong>, прочие указаны обычным. Заметьте, что атрибут <code>device</code>
994 невидим и обычно прикрепляется к символу при его создании. Другие атрибуты
995 прикрепляются к символу в <strong>gschem</strong> при разработке схемы.
997 Если вы имеете дело только с простыми активными компонентами (диодами,
998 транзисторами) при наличии их моделей SPICE в виде файлов, то нужно задать
999 только атрибуты <code>model-name</code> и <code>file</code>; атрибут <code>model</code> задавать не
1000 нужно. Но если для вашего простого активного компонента есть однострочная
1001 SPICE-модель, которую хотелось бы ввести непосредственно в схеме, тогда
1002 задайте атрибуты <code>model</code> и <code>model-name</code>; атрибут <code>file</code> задавать не
1003 нужно.
1005 <strong>Таблица 1.</strong> Атрибуты, необходимые для создания списка соединений SPICE
1006 ^ <code>device</code> ^ <code>refdes</code> ^ <code>value</code> ^ <code>model</code> ^ <code>file</code> ^ <code>model-name</code> ^ <code>type</code> ^ Комментарий ^
1007 |<strong>RESISTOR</strong>| <strong>R?</strong> | <strong>(4)</strong> | (2) | - | Название модели | - | (11) |
1008 |<strong>CAPACITOR</strong>| <strong>C?</strong> | <strong>(4)</strong> | (3) | - | Название модели | - | (11) |
1009 |<strong>POLARIZED_CAPACITOR</strong>| <strong>C?</strong> | <strong>(4)</strong> | (3) | - | Название модели | - | (11) |
1010 |<strong>INDUCTOR</strong>| <strong>L?</strong> | <strong>(4)</strong> | (3) | - | Название модели | - | (11) |
1011 |<strong>SPICE-ccvs</strong>| <strong>H?</strong> | <strong>(5)</strong> | - | - | - | - | Источник напряжения,<br/>
1012 управляемый током |
1013 |<strong>SPICE-cccs</strong>| <strong>F?</strong> | <strong>(5)</strong> | - | - | - | - | Источник тока,<br/>
1014 управляемый током |
1015 |<strong>SPICE-vcvs</strong>| <strong>E?</strong> | <strong>(5)</strong> | - | - | - | - | Источник напряжения,<br/>
1016 управляемый напряжением |
1017 |<strong>SPICE-vccs</strong>| <strong>G?</strong> | <strong>(5)</strong> | - | - | - | - | Источник тока,<br/>
1018 управляемый напряжением |
1019 |<strong>SPICE-nullor</strong>| <strong>N?</strong> | <strong>(15)</strong> | - | - | - | - | |
1020 |<strong>DIODE</strong>| <strong>D?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1021 |<strong>PMOS_TRANSISTOR</strong>| <strong>M?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1022 |<strong>NMOS_TRANSISTOR</strong>| <strong>M?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1023 |<strong>PNP_TRANSISTOR</strong>| <strong>Q?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1024 |<strong>NPN_TRANSISTOR</strong>| <strong>Q?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1025 |<strong>PFET_TRANSISTOR</strong>| <strong>J?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1026 |<strong>NFET_TRANSISTOR</strong>| <strong>J?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1027 |<strong>MESFET_TRANSISTOR</strong>| <strong>B?</strong> | Тип прибора | Однострочная SPICE-модель | Имя файла модели | <strong>Название модели</strong> | - | (12) |
1028 |<strong>IC</strong>| <strong>U?</strong> | Тип прибора | | Имя файла </em><code>.model</code><em> | <strong>Название модели</strong> | - | Для ИС с файлом<br/>
1029 </em><code>.model</code><em> |
1030 |<strong>IC</strong>| <strong>X?</strong> | Тип прибора | | Имя файла </em><code>.subckt</code><em> | <strong>Название .subckt</strong> | - | Для ИС с файлом<br/>
1031 </em><code>.subckt</code><em> |
1032 |<strong>model</strong>| <strong>A?</strong> | - | Однострочная SPICE-модель | Имя файла </em><code>.model</code><em> | <strong>(9)</strong> | <strong>(10)</strong> | (12) |
1033 |<strong>include</strong>| <strong>A?</strong> | - | - | <strong>Имя файла <em><code>.include</code></em></strong> | - | - | (13) |
1034 |<strong>options</strong>| <strong>A?</strong> | <strong>(8)</strong> | - | - | - | - | (14) |
1035 |<strong>directive</strong>| <strong>A?</strong> | <strong>(1)</strong> | - | - | - | - | (12) |
1036 |<strong>VOLTAGE_SOURCE</strong>| <strong>V?</strong> | <strong>(6)</strong> | - | - | - | - | Независимый<br/>
1037 источник напряжения |
1038 |<strong>CURRENT_SOURCE</strong>| <strong>I?</strong> | <strong>(7)</strong> | - | - | - | - | Независимый<br/>
1039 источник тока |
1040 (1) Одна строка, содержащая операторы SPICE для включения в список соединений<br/>
1042 (2) Одна строка параметров SPICE-модели (например, <code>TC</code> и т. д.)<br/>
1044 (3) Одна строка параметров SPICE-модели (например, <code>IC</code>, <code>POLY</code> и т. д.)<br/>
1046 (4) Числовое значение компонента<br/>
1048 (5) Строка, описывающая режим источника<br/>
1050 (6) Однострочное описание, содержащее режим источника напряжения<br/>
1052 (7) Однострочное описание, содержащее режим источника тока<br/>
1054 (8) Строка подключаемых ключей<br/>
1056 (9) Название модели, на которую указывают компоненты<br/>
1058 (10) Соответствующий тип SPICE-модели (допустимые типы приведены ниже)<br/>
1060 (11) Параметры модели помещаются внутри скобок после значения компонента<br/>
1062 (12) Для моделирования нужно включить или модель, или файл<br/>
1064 (13) Помещает директиву <code>.INCLUDE</code> в список соединений SPICE<br/>
1066 (14) Помещает директиву <code>.OPTIONS</code> в список соединений SPICE<br/>
1068 (15) Достаточно высокий коэффициент усиления, например, 1000Meg; не обязательно задавать в последних версиях geda-gaf (с версии 1.9.2)
1070 Выражение «поддерживаемый генератором списка соединений» означает, что
1071 существует соответствующий кусок кода на Scheme, который точно знает как эти
1072 компоненты обрабатывать и (почти) наверняка сгенерирует правильный код
1073 SPICE. Символы с такими атрибутами <code>device</code>, которых нет в
1074 вышеприведённом списке, обрабатываются функцией Scheme
1075 <code>spice-sdb:write-default-component</code>, которая для принятия решения о том,
1076 как обрабатывать данный компонент, смотрит на его позиционное
1077 обозначение. Как правило, при создании кода SPICE эта функция сделает «то,
1078 что надо», но твёрдой гарантии нет. В частности, эта функция не увидит
1079 различия между транзисторами типов N и P и для строки <code>.MODEL</code> в списке
1080 соединений будет генерировать тип </em>&lt;unknown&gt;<em> (неизвестный). Вероятно это
1081 вызовет ругань программы моделирования. Поэтому лучше всего убедиться, что
1082 для всех используемых устройств задан надлежащий атрибут <code>device</code>.
1084 ===== Приложение B. Допустимые значения «type» =====
1085 Атрибут <code>type</code> указывает SPICE-процессору тип компонента и подготавливает
1086 его для принятия параметров модели, специфичных для данного типа.
1087 Допустимые значения атрибута <code>type</code> указаны в таблице 2.
1089 <strong>Таблица 2.</strong> Допустимые значения атрибута <code>type</code> компонентов.
1090 ^ Компонент ^ type ^ Комментарий ^
1091 |RESISTOR | RES |Резистор |
1092 |CAPACITOR | CAP |Конденсатор |
1093 |POLARIZED_CAPACITOR | CAP |Полярный конденсатор |
1094 |INDUCTOR | IND |Катушка индуктивности |
1095 |DIODE | D |Диод |
1096 |PMOS_TRANSISTOR | PMOS |pМОП-транзистор |
1097 |NMOS_TRANSISTOR | NMOS |nМОП-транзистор |
1098 |PNP_TRANSISTOR | PNP |Биполярный транзистор типа pnp |
1099 |NPN_TRANSISTOR | NPN |Биполярный транзистор типа npn |
1100 |PFET_TRANSISTOR | PJF |Полевой транзистор с управляющим pn-переходом с каналом p-типа |
1101 |NFET_TRANSISTOR | NJF |Полевой транзистор с управляющим pn-переходом с каналом n-типа |
1102 |MESFET_TRANSISTOR | - |Полевой транзистор с переходом металл -- полупроводник |
1103 </p>
1105 </div>
1106 <div class="footnotes">
1107 <div class="fn"><sup><a href="#fnt__14" id="fn__14" class="fn_bot">14)</a></sup>
1108 <div class="content">GNU Free Documentation
1109 License</div></div>
1110 <div class="fn"><sup><a href="#fnt__15" id="fn__15" class="fn_bot">15)</a></sup>
1111 <div class="content">Настоящий документ выпущен
1112 под Лицензией Свободной Документации GNU благодаря щедрости Electroniscript,
1113 inc. Его последнюю версию всегда можно найти на странице
1114 http:<em>www.brorson.com/gEDA/HOWTO/.))
1116 ===== Введение =====
1117 Современное проектирование является дисциплиной, интенсивно использующей
1118 вычислительную технику. Как и специалисты, работающие в других сферах
1119 проектирования, инженеры-электротехники и проектировщики электроники активно
1120 используют все виды программного обеспечения САПР, включая как программы для
1121 проектирования <a href="geda-glossary.ru.html#принципиальнаясхема" class="wikilink1" title="geda-glossary.ru.html">электрических схем</a>
1122 и моделирования их работы, так и для производства
1123 <a href="geda-glossary.ru.html#печатнаяплата" class="wikilink1" title="geda-glossary.ru.html">печатных плат</a> и
1124 <a href="geda-glossary.ru.html#интегральнаясхема" class="wikilink1" title="geda-glossary.ru.html">интегральных схем</a>. САПР,
1125 используемые инженерами-электротехниками, имеют особое название ---
1126 <a href="geda-glossary.ru.html#сапрэлектроники" class="wikilink1" title="geda-glossary.ru.html">САПР электроники</a>. Это название объединяет разные виды
1127 программ САПР. Например, на этапе работы с графическими средствами инженер
1128 для ввода проекта в компьютер использует программу
1129 <a href="geda-glossary.ru.html#схемотехническоепроектирование" class="wikilink1" title="geda-glossary.ru.html">схемотехнического
1130 проектирования</a> --- редактор схем. Редактор схем --- это, по существу,
1131 специализированная чертёжная программа, включающая набор
1132 <a href="geda-glossary.ru.html#символ" class="wikilink1" title="geda-glossary.ru.html">символов</a>, используемых для создания схем. После
1133 ввода схемы инженеру может быть нужно промоделировать процессы в её цепях,
1134 чтобы проверить, что разработанная им схема будет работать именно так, как
1135 нужно. Наиболее популярная программа для этих целей --- SPICE (Simulation
1136 Program with Integrated Circuit Emphasis), её разрабатывали в
1137 Беркли((Университет в Калифорнии, родина одной из ветвей Unix. --- <em>Прим.
1138 перев.</em></div></div>
1139 </div>
1140 </body>
1141 </html>