missing NULL terminator in set_config_x
[geda-gaf.git] / docs / wiki / geda-csygas.ru.html
blobfd35a7e75789397c128f3b03b293c4ffe15f8c24
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 class="sectionedit1" 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, посетив её веб-страницу (<a href="http://www.fsf.org/" class="urlextern" title="http://www.fsf.org/" rel="nofollow">http://www.fsf.org/</a>)
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>
43 </p>
45 </div>
46 <!-- EDIT1 SECTION "Схемотехническое моделирование с помощью gEDA и SPICE" [115-2744] -->
47 <h2 class="sectionedit2" id="введение">Введение</h2>
48 <div class="level2">
50 <p>
51 Современное проектирование является дисциплиной, интенсивно использующей
52 вычислительную технику. Как и специалисты, работающие в других сферах
53 проектирования, инженеры-электротехники и проектировщики электроники активно
54 используют все виды программного обеспечения САПР, включая как программы для
55 проектирования <a href="geda-glossary.ru.html#принципиальная_схема" class="wikilink1" title="geda-glossary.ru.html">электрических схем</a>
56 и моделирования их работы, так и для производства
57 <a href="geda-glossary.ru.html#печатная_плата" class="wikilink1" title="geda-glossary.ru.html">печатных плат</a> и
58 <a href="geda-glossary.ru.html#интегральная_схема" class="wikilink1" title="geda-glossary.ru.html">интегральных схем</a>. САПР,
59 используемые инженерами-электротехниками, имеют особое название —
60 <a href="geda-glossary.ru.html#сапр_электроники" class="wikilink1" title="geda-glossary.ru.html">САПР электроники</a>. Это название объединяет разные виды
61 программ САПР. Например, на этапе работы с графическими средствами инженер
62 для ввода проекта в компьютер использует программу
63 <a href="geda-glossary.ru.html#схемотехническое_проектирование" class="wikilink1" title="geda-glossary.ru.html">схемотехнического
64 проектирования</a> — редактор схем. Редактор схем — это, по существу,
65 специализированная чертёжная программа, включающая набор
66 <a href="geda-glossary.ru.html#символ" class="wikilink1" title="geda-glossary.ru.html">символов</a>, используемых для создания схем. После
67 ввода схемы инженеру может быть нужно промоделировать процессы в её цепях,
68 чтобы проверить, что разработанная им схема будет работать именно так, как
69 нужно. Наиболее популярная программа для этих целей — SPICE (Simulation
70 Program with Integrated Circuit Emphasis), её разрабатывали в
71 Беркли<sup><a href="#fn__16" id="fnt__16" class="fn_top">16)</a></sup> начиная с 70-х годов и сегодня она широко доступна в разных
72 формах. Сейчас SPICE считается фундаментальным средством проектирования и
73 является существенной частью занятий большинства обучающихся инженеров.
74 </p>
76 <p>
77 <a href="http://www.geda-project.org/" class="urlextern" title="http://www.geda-project.org/" rel="nofollow">Проект gEDA</a> — работа по созданию в рамках
78 программного обеспечения с открытым исходным кодом набора программ САПР
79 электроники для Linux под лицензией <abbr title="GNU General Public License">GPL</abbr>. Проект gEDA уже настолько развит,
80 что мощь и качество его программ весьма высоки; сегодня используя gEDA Suite
81 можно создавать сложные <a href="geda-glossary.ru.html#список_соединений" class="wikilink1" title="geda-glossary.ru.html">списки
82 соединений</a> (файлы) SPICE, включающие в себя файлы
83 <a href="geda-glossary.ru.html#модель" class="wikilink1" title="geda-glossary.ru.html">моделей</a> поставщиков компонентов. Затем с помощью
84 этих файлов можно производить SPICE-моделирование, используя различные
85 программы моделирования, работающие в Linux. Цель настоящего документа —
86 объяснить, как использовать программные средства gEDA (обычно работающие в
87 Linux) для выполнения SPICE-моделирования. В частности здесь описывается
88 использование <strong>spice-sdb</strong>, продвинутого драйвера
89 <a href="geda-glossary.ru.html#генератор_списка_соединений" class="wikilink1" title="geda-glossary.ru.html">генератора списка
90 соединений</a> gEDA (<strong>gnetlist</strong>), применяемого для создания списков
91 соединений SPICE. <strong>spice-sdb</strong> входит в набор программ gEDA; если вы
92 установили gEDA, то для создания списков соединений SPICE всё уже
93 готово. Также в настоящем HOWTO приводятся советы по использованию
94 <strong>ngspice/tclspice</strong> и/или <strong>LTSpice</strong> для моделирования работы схем, списки
95 соединений для которых созданы с помощью <strong>spice-sdb</strong>.
96 </p>
98 </div>
99 <!-- EDIT2 SECTION "Введение" [2745-7846] -->
100 <h3 class="sectionedit3" id="целевая_аудитория_данного_howto">Целевая аудитория данного HOWTO</h3>
101 <div class="level3">
104 Настоящий HOWTO не является учебником по проектированию электрических схем или по SPICE-моделированию. Он, скорее, создан для того, чтобы помочь обучающимся инженерам начать использовать gEDA для SPICE-моделирования на платформе Linux. Поэтому я предполагаю, что вы в общих чертах уже знакомы с разработкой электронных схем, механикой ввода схем в программах САПР и SPICE-моделированием. Я также предполагаю, что вы достаточно знакомы с операционной системой GNU/Linux и с её рабочим окружением. Наконец, я предполагаю, что вы уже установили программы gEDA и знаете как ими пользоваться. Если вам нужно быстрее набраться опыта в каком-то из указанных вопросов, дополнительную информацию можно найти на следующих веб-страницах:
105 </p>
106 <ul>
107 <li class="level1"><div class="li"> Проект gEDA: <a href="http://www.geda-project.org" class="urlextern" title="http://www.geda-project.org" rel="nofollow">http://www.geda-project.org</a></div>
108 </li>
109 <li class="level1"><div class="li"> <a href="geda-faq-simulation.ru.html" class="wikilink1" title="geda-faq-simulation.ru.html">FAQ по моделированию</a></div>
110 </li>
111 <li class="level1"><div class="li"> Синтаксис и команды SPICE 3: <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/</a></div>
112 </li>
113 <li class="level1"><div class="li"> Ngspice: <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">http://ngspice.sourceforge.net/</a></div>
114 </li>
115 <li class="level1"><div class="li"> Tclspice: <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a></div>
116 </li>
117 <li class="level1"><div class="li"> LTSpice: <a href="http://www.linear.com/software/" class="urlextern" title="http://www.linear.com/software/" rel="nofollow">http://www.linear.com/software/</a></div>
118 </li>
119 <li class="level1"><div class="li"> Ресурсы по SPICE в Linux: <a href="http://www.brorson.com/gEDA/SPICE/" class="urlextern" title="http://www.brorson.com/gEDA/SPICE/" rel="nofollow">http://www.brorson.com/gEDA/SPICE/</a></div>
120 </li>
121 <li class="level1"><div class="li"> gEDA для начинающих — немного устаревший, но замечательный ресурс <a href="http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf" class="urlextern" title="http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf" rel="nofollow">http://www-mdp.eng.cam.ac.uk/web/CD/engapps/geda/starting_gEDA_long.pdf</a></div>
122 </li>
123 </ul>
125 </div>
126 <!-- EDIT3 SECTION "Целевая аудитория данного HOWTO" [7847-9900] -->
127 <h3 class="sectionedit4" id="признательность">Признательность</h3>
128 <div class="level3">
131 Настоящий документ не живёт в изоляции. В создании данного HOWTO мне
132 помогало несколько активных членов сообщества свободных САПР
133 электроники. Во-первых и прежде всего, <em>Paolo Nenzi</em>, автор <strong>ngspice</strong>,
134 взял мой исходный HOWTO и перевёл его в документ <strong>Lyx</strong>, который я мог
135 затем перевести в DocBook. Спасибо тебе, <em>Paolo</em>, за помощь в работе над
136 этим HOWTO и, что более важно, спасибо за твою великолепную работу над
137 <strong>ngspice</strong>! Также во главе списка значится <em>Ales Hvezda</em>, движущая сила
138 проекта gEDA. Без него ничего из этого не было бы теперь возможным; его
139 вклад в виде программы <strong>gschem</strong> неоценим. Спасибо, <em>Ales</em>, за создание
140 gEDA и распространение по миру под лицензией <abbr title="GNU General Public License">GPL</abbr> — ты начал революцию!
141 <em>Stefan Jones</em> заслуживает огромной благодарности за его работу над
142 <strong>tclspice</strong>, любезную поддержку и усилия по интеграции, когда я предлагал
143 исправления для проекта <strong>tclspice</strong>. Я также должен поблагодарить
144 <em>W. Kazubski</em> и <em>S. Gieltjes</em> — они написали исходные версии
145 генераторов списков соединений SPICE, на которых основывается мой
146 <strong>gnet-spice-sdb.scm</strong>. Я также хочу поблагодарить <em>Ken Healy</em> за
147 добавление исправления сортировки списка соединений, и <em>Peter Kaiser</em> за
148 то, что побудил меня включить некоторые возможности, полезные для
149 моделирования интегральных схем. <em>Peter</em> заслуживает также благодарности
150 за написание некоторых разделов данного документа, относящихся к
151 устройствам. Наконец, я признателен за помощь и предложения, полученные от
152 читателей списка рассылки <em>geda-user</em>. Прелесть свободного программного
153 обеспечения в том, что оно побуждает к сотрудничеству, а это значит, что
154 конечный результат всегда будет лучше того, которого можно было бы достичь в
155 одиночку.
156 </p>
158 </div>
159 <!-- EDIT4 SECTION "Признательность" [9901-12842] -->
160 <h3 class="sectionedit5" id="общий_обзормаршрут_проектирования_в_geda">Общий обзор: маршрут проектирования в gEDA</h3>
161 <div class="level3">
164 В САПР электроники важна концепция «маршрута проектирования». gEDA — это
165 набор программных средств для проектирования электроники, а не одно
166 приложение. И «маршрут проектирования» определяет порядок использования этих
167 средств для достижения цели. В зависимости от того, проектируете ли вы
168 аналоговую или цифровую схему, разрабатываете ли платы или интегральные
169 схемы, от того, какой тип файлов требуется производителю ваших плат, и от
170 ряда других факторов, для достижения цели будут использоваться различные
171 средства gEDA Suite.
172 </p>
175 Блок-схема, на которой представлен маршрут проектирования в gEDA, показана
176 на рисунке ниже. На блок-схеме показана простая последовательность,
177 пригодная для проектирования, моделирования и разводки печатных плат. Как
178 можно увидеть, моделирование (голубые блоки) циклически повторяется. Это
179 значит, что после создания схемы её моделирование производится повторно до
180 тех пор, пока её поведение не будет соответствовать требуемым
181 спецификациям. <a href="media/geda/geda_flow.ru.png" class="media" target="_blank" title="geda:geda_flow.ru.png"><img src="media/geda/geda_flow.ru.png" class="mediacenter" alt="" /></a> Маршрут проектирования в
182 gEDA. В блоке «Моделирование» в скобках указано несколько разных программ,
183 пригодных для моделирования. В рамках настоящего документа нас интересуют
184 только SPICE-варианты (например, <strong>ngspice</strong>, <strong>tclspice</strong>).
185 </p>
187 </div>
188 <!-- EDIT5 SECTION "Общий обзор: маршрут проектирования в gEDA" [12843-15136] -->
189 <h3 class="sectionedit6" id="обзор_использования_spice_в_geda">Обзор использования SPICE в gEDA</h3>
190 <div class="level3">
193 Концептуально SPICE-моделирование в gEDA включает следующие этапы:
194 </p>
195 <ol>
196 <li class="level1"><div class="li"> Создание и подбор символов схем и файлов моделей SPICE. Часто файлы SPICE-моделей можно получить у поставщика компонентов. Как правило, многие модели можно найти на веб-странице поставщика.</div>
197 </li>
198 <li class="level1"><div class="li"> Разработка схемы с помощью символов и моделей SPICE, созданных на первом этапе.</div>
199 </li>
200 <li class="level1"><div class="li"> Создание списка соединений из схемы, созданной на втором этапе.</div>
201 </li>
202 <li class="level1"><div class="li"> SPICE-моделирование схемы, представленной в виде списка соединений, созданного на третьем этапе.</div>
203 </li>
204 </ol>
207 На приведённой выше блок-схеме эти этапы отмечены голубым цветом.
208 </p>
211 Чтобы создать список соединений SPICE, генератор списка соединений (<strong>gnetlist</strong>) циклически проходится по всей схеме и проверяет особые части символов каждого из компонентов для формирования частей кода. Как правило, для каждого компонента может генерироваться одна или более строк кода SPICE. Информация о компоненте, необходимая генератору списка соединений, содержится в двух местах:
212 </p>
213 <ol>
214 <li class="level1"><div class="li"> В самом символе, в атрибуте <code>device</code>, который прикрепляется при создании символа и обычно редактируется в редакторе символов.</div>
215 </li>
216 <li class="level1"><div class="li"> В атрибутах, прикреплённых к компоненту вручную в <strong>gschem</strong> при разработке схемы.</div>
217 </li>
218 </ol>
221 Так как генератор списка соединений ищет информацию в двух местах,
222 <strong><em>необходимо обеспечить, чтобы требуемая информация имелась в каждом из
223 них</em></strong>.
224 </p>
226 </div>
227 <!-- EDIT6 SECTION "Обзор использования SPICE в gEDA" [15137-17567] -->
228 <h3 class="sectionedit7" id="подробное_изложение_процесса_разработки_моделирования">Подробное изложение процесса разработки/моделирования</h3>
229 <div class="level3">
232 Вот более подробный перечень шагов, необходимых для разработки и моделирования работы схем в gEDA:
233 </p>
234 <ol>
235 <li class="level1"><div class="li"> Создание символов для схемы с правильными атрибутами <code>device</code>. (Обычно правильные атрибуты <code>device</code> устанавливаются в процессе создания символов и поэтому чаще всего уже заданы, но если у вас проблемы, не помешает их проверить.)</div>
236 </li>
237 <li class="level1"><div class="li"> Разработка схемы в <strong>gschem</strong>.</div>
238 </li>
239 <li class="level1"><div class="li"> Установка для компонентов SPICE-атрибутов (<code>value</code>, <code>model</code>, <code>file</code>, <code>type</code> и др.) в <strong>gschem</strong> или <strong>gattrib</strong>.</div>
240 </li>
241 <li class="level1"><div class="li"> Установка атрибутов <code>refdes</code>, например с помощью <strong>refdes_renum</strong>.</div>
242 </li>
243 <li class="level1"><div class="li"> Создание списка соединений с помощью: <strong><code>gnetlist -g spice-sdb</code></strong>.</div>
244 </li>
245 <li class="level1"><div class="li"> Проверка отсутствия ошибок в списке соединений (производится вручную, нужно открыть и внимательно просмотреть содержимое файла).</div>
246 </li>
247 <li class="level1"><div class="li"> Запуск программы SPICE-моделирования, такой как, например, <strong>LTSpice</strong>, <strong>ngspice</strong> или <strong>tclspice</strong>.</div>
248 </li>
249 <li class="level1"><div class="li"> Построение графиков и анализ результатов (часто средства построения графиков и анализа встроены в программу моделирования).</div>
250 </li>
251 <li class="level1"><div class="li"> Если вы недовольны характеристиками своей схемы, выявленными при моделировании, можете вернуться к шагу 2, подправить схему в <strong>gschem</strong> и далее циклически повторять этот процесс до достижения нужного результата.</div>
252 </li>
253 </ol>
256 Цель настоящего документа состоит в том, чтобы дать вам чёткое понимание
257 деталей данного процесса, необходимое для его успешного направления.
258 </p>
260 </div>
261 <!-- EDIT7 SECTION "Подробное изложение процесса разработки/моделирования" [17568-19978] -->
262 <h2 class="sectionedit8" id="подготовительная_работаподготовка_символов_и_файлов_spice">Подготовительная работа: подготовка символов и файлов SPICE</h2>
263 <div class="level2">
266 При создании символов для схемы нужно обеспечить, чтобы некоторые встроенные
267 атрибуты были заданы правильно. Приводимые ниже изменения такого рода
268 осуществляются либо редактированием нужного символа в графическом интерфейсе
269 редактора символов <strong>gschem</strong>, либо редактированием файла символа в
270 текстовом редакторе.
271 </p>
273 </div>
274 <!-- EDIT8 SECTION "Подготовительная работа: подготовка символов и файлов SPICE" [19979-20675] -->
275 <h3 class="sectionedit9" id="настройка_символов">Настройка символов</h3>
276 <div class="level3">
278 </div>
280 <h4 id="идентификация_компонента_генератором_списков_соединений">Идентификация компонента генератором списков соединений</h4>
281 <div class="level4">
284 Генератор списка соединений SPICE может идентифицировать любой конкретный символ по одному из двух атрибутов:
285 </p>
286 <ol>
287 <li class="level1"><div class="li"> <code>device</code> или</div>
288 </li>
289 <li class="level1"><div class="li"> <code>refdes</code>.</div>
290 </li>
291 </ol>
294 Каждый из них прикрепляется к символу во время его создания.
295 </p>
298 К каждому символу прикреплён атрибут <code>device</code>. Этот атрибут генератор
299 списка соединений проверяет при обработке символа первым. Есть несколько
300 поддерживаемых генератором списка соединений устройств («родных» для него),
301 имеется в виду, что генератор точно знает, как обходиться с данными типами
302 устройств. Непосредственно поддерживаются <strong>RESISTOR</strong>, <strong>CAPACITOR</strong>,
303 <strong>NPN_TRANSISTOR</strong> и т. д. Полный список поддерживаемых устройств
304 представлен в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>.
305 </p>
308 Обычно при работе в <strong>gschem</strong> атрибуты <code>device</code> остаются скрытыми. Чаще
309 всего правильные значения этих атрибутов уже заданы в символах их
310 авторами. Но поскольку атрибут <code>device</code> скрыт от обычного пользователя, он
311 может иногда являться причиной проблем при создании списка соединений SPICE,
312 если установлен в непредвиденное значение. Чтобы увидеть атрибуты
313 <code>device</code>, нужно перейти в редактор символов (выделить символ для
314 редактирования и из меню выбрать <strong><em>Иерархия</em></strong><strong><em>Внутрь символа</em></strong>,
315 а затем переключить видимость атрибутов (<strong><em>Правка</em></strong>
316 <strong><em>Показать/Скрыть невидимый текст</em></strong>). Можно также открыть файл этого
317 символа в текстовом редакторе и, если атрибут <code>device</code> неправилен,
318 изменить его там.
319 </p>
322 Если символ не поддерживается (то есть генератор списка соединений не
323 находит соответствующего встроенного типа), то чтобы определить, как его
324 обрабатывать, генератор опирается на первую букву значения атрибута
325 <code>refdes</code>. Префикс (первая часть) значения <code>refdes</code> также встраивается в
326 символ при его создании. Примерами префиксов <code>refdes</code> являются <em>R</em> для
327 резисторов, <em>C</em> для конденсаторов, <em>Q</em> для транзисторов и
328 т. д. Правильные префиксы для SPICE перечислены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>. Заметьте, что
329 опираться на <code>refdes</code> для идентификации компонента в SPICE небезопасно,
330 — по его значению генератор списка соединений не сможет, например,
331 различить транзисторы структуры <em>NPN</em> и <em>PNP</em>. Поэтому в своих символах
332 лучше всего всегда использовать атрибут <code>device</code>, задавая для него
333 значение, поддерживаемое генератором.
334 </p>
336 </div>
338 <h4 id="настройка_очерёдности_выводов">Настройка очерёдности выводов</h4>
339 <div class="level4">
342 Выводы компонента выдаются генератором списка соединений в порядке, заданном
343 посредством атрибутов <code>pinseq</code>. Заметьте, что он не тождественен порядку
344 физического расположения выводов. Для установки атрибутов <code>pinseq</code> сначала
345 следует определить нужный вам порядок выводов. В SPICE для многих
346 компонентов, в том числе для диодов и транзисторов, используется особый
347 порядок выводов. Например, выводы биполярного транзистора перечисляются в
348 порядке <em>CBE</em> (коллектор-база-эмиттер). Другой пример: если ваш символ
349 должен представлять интегральную схему (ИС) с моделью в виде файла
350 <em><code>.subckt</code></em> поставщика, то порядок соединений для этой
351 <a href="geda-glossary.ru.html#подсхема" class="wikilink1" title="geda-glossary.ru.html">подсхемы</a> устанавливается в файле строкой
352 <code>.subckt</code>.
353 </p>
356 Как только вы узнали порядок выдачи выводов для электронного компонента,
357 просто задайте правильную последовательность в их атрибутах <code>pinseq</code>.
358 Таким образом и будет обеспечен правильный порядок.
359 </p>
361 </div>
362 <!-- EDIT9 SECTION "Настройка символов" [20676-26571] -->
363 <h3 class="sectionedit10" id="настройка_файлов_spice">Настройка файлов SPICE</h3>
364 <div class="level3">
367 Файлы, содержащие сложные модели или другой код SPICE, могут быть встроены в результирующий список соединений при добавлении в схему соответствующих символов. Файлы моделей SPICE обычно можно найти у поставщиков компонентов. Работа с ними проста. Тем не менее при подготовке моделей для принципиальной схемы некоторые моменты всё же стоит иметь в виду:
368 </p>
369 <ul>
370 <li class="level1"><div class="li"> Обычно целесообразно помещать эти файлы в специально отведённый для них каталог, отличный от каталогов символов.</div>
371 </li>
372 <li class="level1"><div class="li"> <em>Удостоверьтесь, что выводы в файлах SPICE и в символах компонентов имеют одинаковое назначение!</em> Важность этого правила трудно переоценить. Порядок, в котором выводы перечислены в файле <em><code>.subckt</code></em> необязательно соответствует порядку их физического расположения для компонента. Как описано выше, выводы выдаются генератором списка соединений в порядке, заданном атрибутами <code>pinseq</code>.</div>
373 </li>
374 <li class="level1"><div class="li"> <em>Удостоверьтесь, что последним символом в файле SPICE-модели является перевод строки.</em> Если перевода строки нет, то строка следующего компонента списка соединений может оказаться в той же строке, что была последней в файле SPICE-модели.</div>
375 </li>
376 </ul>
378 </div>
379 <!-- EDIT10 SECTION "Настройка файлов SPICE" [26572-28601] -->
380 <h2 class="sectionedit11" id="создание_схемы_своего_устройствасхемотехническое_проектирование">Создание схемы своего устройства: схемотехническое проектирование</h2>
381 <div class="level2">
384 <a href="geda-glossary.ru.html#схемотехническое_проектирование" class="wikilink1" title="geda-glossary.ru.html">Схемотехническое проектирование</a> — это процесс, в
385 котором используется специализированная чертёжная программа-редактор для
386 вычерчивания проектируемой схемы. В окружении gEDA для разработки
387 принципиальных схем используется программа <strong>gschem</strong>. Я предполагаю, что вы
388 уже знаете, как использовать <strong>gschem</strong>. Если нет, обратитесь к
389 документации, доступной на веб-сайте gEDA:
390 <a href="http://www.geda-project.org/" class="urlextern" title="http://www.geda-project.org/" rel="nofollow">http://www.geda-project.org/</a>. Чтобы создать список соединений SPICE, вам
391 будет нужно прикрепить к компонентам необходимые атрибуты в <strong>gschem</strong> и,
392 возможно, включить в свой список соединений ещё и дополнительные директивы
393 SPICE. После завершения создания схемы вам будет нужно создать список
394 соединений SPICE, запустив для неё генератор списка соединений gEDA
395 <strong>gnetlist</strong>.
396 </p>
398 </div>
399 <!-- EDIT11 SECTION "Создание схемы своего устройства: схемотехническое проектирование" [28602-30052] -->
400 <h3 class="sectionedit12" id="атрибуты_gschem_для_создания_списков_соединений_spice">Атрибуты gschem для создания списков соединений SPICE</h3>
401 <div class="level3">
404 В <strong>gschem</strong> есть несколько вариантов привязки атрибутов SPICE к
405 компонентам. Вариант, который выберете вы, зависит от многих факторов, в
406 том числе от типа компонента, размера и формата SPICE-модели.
407 </p>
409 </div>
410 <!-- EDIT12 SECTION "Атрибуты gschem для создания списков соединений SPICE" [30053-30499] -->
411 <h3 class="sectionedit13" id="атрибуты_компонентов_и_их_значение">Атрибуты компонентов и их значение</h3>
412 <div class="level3">
415 Здесь приведены те атрибуты, что имеют значение при создании списков соединений SPICE и могут быть прикреплены к символам компонентов в <strong>gschem</strong>:
416 </p>
417 <ul>
418 <li class="level1"><div class="li"> <code>refdes</code>: позиционное обозначение компонента. Допустимые значения зависят от типа компонента и приведены в <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">Приложении A</a>;</div>
419 </li>
420 <li class="level1"><div class="li"> <code>value</code>: для пассивных компонентов — это значение физической величины компонента (сопротивления, индуктивности, ёмкости), для активных — это тип (номер модели) компонента (например, <em>2N3904</em>, <em>uA741</em>). Если модель активного компонента добавляется в схему как отдельный объект, в атрибуте <code>value</code> символа компонента должно быть указано её название;</div>
421 </li>
422 <li class="level1"><div class="li"> <code>model</code>: однострочная SPICE-модель компонента;</div>
423 </li>
424 <li class="level1"><div class="li"> <code>file</code>: имя файла. Обычно это файл, содержащий, например, <code>.MODEL</code>, <code>.SUBCKT</code>, или другой код SPICE;</div>
425 </li>
426 <li class="level1"><div class="li"> <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>;</div>
427 </li>
428 <li class="level1"><div class="li"> <code>type</code>: Определяет тип компонента и используется в SPICE при интерпретации параметров модели. Допустимые значения зависят от моделируемого устройства.</div>
429 </li>
430 </ul>
432 </div>
433 <!-- EDIT13 SECTION "Атрибуты компонентов и их значение" [30500-32860] -->
434 <h3 class="sectionedit14" id="соглашения_по_позиционным_обозначениям">Соглашения по позиционным обозначениям</h3>
435 <div class="level3">
438 Для трактовки относящихся к SPICE атрибутов генератору списка соединений
439 нужно, чтобы к каждому компоненту схемы был прикреплён атрибут <code>refdes</code>.
440 Этот атрибут может устанавливаться либо вручную (что утомительно), либо с
441 помощью входящей в дистрибутив gEDA программы <strong>refdes_renum</strong>.
442 </p>
445 Учтите, что первые буквы <code>refdes</code> должны соответствовать буквам, указанным
446 в соглашении по позиционным обозначениям для SPICE-моделирования. Это
447 соглашение приведено в таблице 1 <a href="#приложение_a_поддерживаемые_компоненты_и_их_атрибуты" title=":geda:csygas.ru.txt ↵" class="wikilink1">приложения A</a>.
448 </p>
450 </div>
451 <!-- EDIT14 SECTION "Соглашения по позиционным обозначениям" [32861-33887] -->
452 <h3 class="sectionedit15" id="пассивные_компоненты">Пассивные компоненты</h3>
453 <div class="level3">
455 </div>
457 <h4 id="базовые_пассивные_компоненты">Базовые пассивные компоненты</h4>
458 <div class="level4">
461 Наиболее часто в SPICE приходится иметь дело с базовыми пассивными компонентами, такими как резисторы и конденсаторы, которым кроме числовых значений никаких дополнительных атрибутов для моделирования не задаётся. Для них должны быть заданы следующие атрибуты:
462 </p>
463 <ul>
464 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
465 </li>
466 <li class="level1"><div class="li"> <code>value</code>: для пассивных элементов это числовое значение физической величины компонента, а именно сопротивления, ёмкости или индуктивности (например, 100pF). Этот атрибут может задаваться и для активных компонентов, но если где-то в схеме нет атрибута <code>model</code>, атрибут <code>value</code> не используется (во всяком случае для создания списков соединений SPICE).</div>
467 </li>
468 </ul>
471 Если у компонента кроме <code>refdes</code> и <code>value</code> других атрибутов нет,
472 генератор списка соединений запишет в выходной файл только одну строку.
473 </p>
475 </div>
477 <h5 id="примеррезистор">Пример: резистор</h5>
478 <div class="level5">
479 <ul>
480 <li class="level1"><div class="li"> <code>refdes</code> = R2</div>
481 </li>
482 <li class="level1"><div class="li"> <code>value</code> = 220</div>
483 </li>
484 </ul>
487 Результирующая строка SPICE: <strong><code>R2 0 4 220</code></strong><br/>
489 (обратите внимание, что «0» и «4» — это имена узлов подключенных к
490 компоненту соединений, генерируемые программой <strong>gnetlist</strong> автоматически.)
491 </p>
493 </div>
495 <h5 id="примерконденсатор">Пример: конденсатор</h5>
496 <div class="level5">
497 <ul>
498 <li class="level1"><div class="li"> <code>refdes</code> = C22</div>
499 </li>
500 <li class="level1"><div class="li"> <code>value</code> = 1UF</div>
501 </li>
502 </ul>
505 Результирующая строка SPICE: <strong><code>C22 4 23 1UF</code></strong>
506 </p>
508 </div>
510 <h4 id="пассивные_компоненты_с_дополнительными_атрибутами">Пассивные компоненты с дополнительными атрибутами</h4>
511 <div class="level4">
514 Часто при SPICE-моделировании для пассивных компонентов задаются дополнительные атрибуты. В качестве примера можно назвать атрибуты для задания температурных коэффициентов сопротивлений резисторов и исходного состояния для реактивных компонентов. Чтобы включить эти атрибуты в результирующий файл SPICE, их нужно просто прописать как значение атрибута <code>model</code> компонента. Вот, собственно, перечень необходимых атрибутов:
515 </p>
516 <ul>
517 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
518 </li>
519 <li class="level1"><div class="li"> <code>value</code>: как всегда числовое значение физической величины компонента;</div>
520 </li>
521 <li class="level1"><div class="li"> <code>model</code>: одна строка дополнительных параметров в допустимом для SPICE формате.</div>
522 </li>
523 </ul>
526 Эта строка включается в генерируемую программой <strong>gnetlist</strong> строку для
527 компонента после значения его величины. Поэтому важно, чтобы строка значения
528 атрибута <code>model</code> задавалась в виде допустимого кода SPICE. Иначе вы
529 рискуете вызвать ругань программы моделирования.
530 </p>
532 </div>
534 <h5 id="примеррезистор1">Пример: резистор</h5>
535 <div class="level5">
536 <ul>
537 <li class="level1"><div class="li"> <code>refdes</code> = R5</div>
538 </li>
539 <li class="level1"><div class="li"> <code>value</code> = 1MEG</div>
540 </li>
541 <li class="level1"><div class="li"> <code>model</code> = TC=0.001,0.015</div>
542 </li>
543 </ul>
546 Результирующая строка SPICE: <strong><code>R5 0 2 1MEG TC=0.001,0.015</code></strong>
547 </p>
549 </div>
551 <h4 id="пассивные_компоненты_для_проектирования_полупроводников">Пассивные компоненты для проектирования полупроводников</h4>
552 <div class="level4">
555 При разработке <a href="geda-glossary.ru.html#asic" class="wikilink1" title="geda-glossary.ru.html">ASIC</a> для определения параметров резисторов и конденсаторов часто используются их размеры. Программа SPICE берёт из технологической библиотеки типичное удельное значение физической величины и сама рассчитывает фактическое значение сопротивления или ёмкости соответственно в омах или фарадах. Поэтому в этом случае требуются следующие атрибуты:
556 </p>
557 <ul>
558 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
559 </li>
560 <li class="level1"><div class="li"> <code>model-name</code>: соответствует модели в технологической библиотеке;</div>
561 </li>
562 <li class="level1"><div class="li"> <code>w</code>, <code>l</code>: размеры устройства.</div>
563 </li>
564 </ul>
567 Технологическая библиотека должна быть подключена во входном файле SPICE
568 строкой <code>.include</code>.
569 </p>
571 </div>
573 <h5 id="примерполупроводниковый_резистор">Пример: полупроводниковый резистор</h5>
574 <div class="level5">
575 <ul>
576 <li class="level1"><div class="li"> <code>refdes</code> = R6</div>
577 </li>
578 <li class="level1"><div class="li"> <code>model-name</code> = rpoly</div>
579 </li>
580 <li class="level1"><div class="li"> <code>w</code> = 3u</div>
581 </li>
582 <li class="level1"><div class="li"> <code>l</code> = 100u</div>
583 </li>
584 </ul>
587 Результирующая строка SPICE: <strong><code>R6 0 5 rpoly w=3u l=100u</code></strong>
588 </p>
590 </div>
592 <h5 id="примермодель_полупроводникового_резистора">Пример: модель полупроводникового резистора</h5>
593 <div class="level5">
594 <ul>
595 <li class="level1"><div class="li"> <code>model rpoly R rsh=300</code></div>
596 </li>
597 </ul>
600 Это должно быть частью технологической библиотеки вашего поставщика ASIC.
601 </p>
603 </div>
604 <!-- EDIT15 SECTION "Пассивные компоненты" [33888-39620] -->
605 <h3 class="sectionedit16" id="транзисторы_и_диоды">Транзисторы и диоды</h3>
606 <div class="level3">
609 С транзисторами и диодами обычно идёт модель, специфичная для устройства.
610 Каждая модель должна представлять детальную нелинейную динамику конкретного
611 устройства, иначе моделирование теряет смысл. SPICE-модель может быть или в
612 виде краткого, однострочного описания, или в виде многострочного набора
613 параметров. Типичным однострочным описанием является перечень параметров
614 для описания характеристик малосигнального диода. Типичные многострочные
615 модели поставляются поставщиками компонентов, которые для своих компонентов
616 часто предлагают текстовые файлы моделей. Так как для представления
617 информации в SPICE существует два широко распространённых формата, то
618 имеется и два подхода для включения этих параметров в схему:
619 </p>
621 </div>
623 <h4 id="однострочное_описание_параметров_spice">Однострочное описание параметров SPICE</h4>
624 <div class="level4">
627 Чтобы в список соединений включить однострочное описание параметров SPICE, к компоненту должны быть прикреплены следующие атрибуты:
628 </p>
629 <ul>
630 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
631 </li>
632 <li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
633 </li>
634 <li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
635 </li>
636 <li class="level1"><div class="li"> <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — <strong>gnetlist</strong> сам это сделает за вас.</div>
637 </li>
638 </ul>
640 </div>
642 <h5 id="примердиод">Пример: диод</h5>
643 <div class="level5">
644 <ul>
645 <li class="level1"><div class="li"> <code>refdes</code> = D5</div>
646 </li>
647 <li class="level1"><div class="li"> <code>model-name</code> = 1N1004</div>
648 </li>
649 <li class="level1"><div class="li"> <code>model</code> = IS=0.5UA RS=6 BV=5.20</div>
650 </li>
651 </ul>
654 Результирующая строка SPICE: <strong><code>D5 2 6 1N1004 MODEL 1N1004 D (IS=0.5UA RS=6
655 BV=5.20)</code></strong>
656 </p>
658 </div>
660 <h4 id="файл_spice-модели">Файл SPICE-модели</h4>
661 <div class="level4">
664 Чтобы включить в список соединений файл с параметрами SPICE, к компоненту должны быть прикреплены следующие атрибуты:
665 </p>
666 <ul>
667 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
668 </li>
669 <li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
670 </li>
671 <li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
672 </li>
673 <li class="level1"><div class="li"> <code>file</code>: Имя файла той SPICE-модели, которую нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами лучше, вероятно, использовать абсолютный путь.</div>
674 </li>
675 </ul>
678 Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
679 самое название модели, что и в прикреплённых к компоненту атрибутах
680 <code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
681 файле SPICE-модели и в символе компонента имеют одинаковое назначение.
682 </p>
684 </div>
685 <!-- EDIT16 SECTION "Транзисторы и диоды" [39621-44150] -->
686 <h3 class="sectionedit17" id="активные_компоненты_-_интегрированные_схемы">Активные компоненты - интегрированные схемы</h3>
687 <div class="level3">
690 Интегрированные схемы включаются в список соединений подобно транзисторам и
691 диодам. Фактически код SPICE можно включать или как однострочное описание
692 параметров или в виде файла модели.
693 </p>
695 </div>
697 <h4 id="однострочное_описание_параметров_spice1">Однострочное описание параметров SPICE</h4>
698 <div class="level4">
701 Для включения в список соединений однострочного описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
702 </p>
703 <ul>
704 <li class="level1"><div class="li"> <code>refdes</code>: точное позиционное обозначение компонента;</div>
705 </li>
706 <li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
707 </li>
708 <li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
709 </li>
710 <li class="level1"><div class="li"> <code>model</code>: одна строка, содержащая дополнительные параметры. Не помещайте параметры модели в скобки — <strong>gnetlist</strong> сам это сделает за вас.</div>
711 </li>
712 </ul>
714 </div>
716 <h4 id="spice-модель_model_или_файл_subckt">SPICE-модель .MODEL или файл .SUBCKT</h4>
717 <div class="level4">
720 Для включения в список соединений файла описания параметров SPICE к компоненту должны быть прикреплены следующие атрибуты:
721 </p>
722 <ul>
723 <li class="level1"><div class="li"> <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> Генератор списка соединений проверяет тип файла и пытается обработать его правильно, но если вы не следуете этому правилу, могут возникнуть проблемы.</div>
724 </li>
725 <li class="level1"><div class="li"> <code>value</code>: номер модели или тип (номер) прибора для компонента.</div>
726 </li>
727 <li class="level1"><div class="li"> <code>model-name</code>: желаемое название для данной SPICE-модели. Для компонента это обычно номер модели или тип (номер) прибора. Если вы уже прикрепили к компоненту атрибут <code>value</code>, этот параметр необязателен.</div>
728 </li>
729 <li class="level1"><div class="li"> <code>file</code>: имя файла содержащего <code>.MODEL</code> или <code>.SUBCKT</code>, который нужно включить в список соединений. Имя файла может быть задано в виде относительного или абсолютного пути, но во избежание проблем при возможном перемещении своего каталога со схемами, вероятно, лучше использовать абсолютный путь.</div>
730 </li>
731 </ul>
734 Учтите, вам следует убедиться, что в файле вашей SPICE-модели указано то же
735 самое название модели, что и в прикреплённых к компоненту атрибутах
736 <code>value</code> или <code>model-name</code>. К тому же неплохо бы проверить, что выводы в
737 файле SPICE-модели и в символе компонента имеют одинаковое назначение.
738 </p>
740 </div>
741 <!-- EDIT17 SECTION "Активные компоненты - интегрированные схемы" [44151-48112] -->
742 <h3 class="sectionedit18" id="независимые_источники">Независимые источники</h3>
743 <div class="level3">
746 Есть два вида независимых источников: источники напряжения и источники тока. Оба типа включаются в список соединений SPICE одинаково. Для включения в свой список соединений независимого источника нужно сделать следующее:
747 </p>
748 <ol>
749 <li class="level1"><div class="li"> Поместить независимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><em><code>&lt;имя независимого источника&gt;.sym</code></em>)</div>
750 </li>
751 <li class="level1 node"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
752 <ul>
753 <li class="level2"><div class="li"> <code>refdes</code>: <em>V?</em> или <em>I?</em>;</div>
754 </li>
755 <li class="level2"><div class="li"> <code>value</code>: однострочное описание источника в формате SPICE.</div>
756 </li>
757 </ul>
758 </li>
759 </ol>
761 </div>
762 <!-- EDIT18 SECTION "Независимые источники" [48113-49097] -->
763 <h3 class="sectionedit19" id="зависимые_источники">Зависимые источники</h3>
764 <div class="level3">
767 Есть четыре зависимых источника:
768 </p>
769 <ul>
770 <li class="level1"><div class="li"> источник напряжения, управляемый током («current controlled voltage source», CCVS);</div>
771 </li>
772 <li class="level1"><div class="li"> источник тока, управляемый током («current controlled current source», CCCS);</div>
773 </li>
774 <li class="level1"><div class="li"> источник напряжения, управляемый напряжением («voltage controlled voltage source», VCVS);</div>
775 </li>
776 <li class="level1"><div class="li"> источник тока, управляемый напряжением («voltage controlled current source», VCCS).</div>
777 </li>
778 </ul>
781 Все они включаются в список соединений SPICE одинаково. Для
782 включения источника в список соединений SPICE нужно сделать
783 следующее:
784 </p>
785 <ol>
786 <li class="level1"><div class="li"> Поместить зависимый источник в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><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>).</div>
787 </li>
788 <li class="level1 node"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
789 <ul>
790 <li class="level2"><div class="li"> <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>;</div>
791 </li>
792 <li class="level2"><div class="li"> <code>value</code>: однострочное описание источника в формате SPICE. Обычно атрибут <code>value</code> представляет собой коэффициент усиления источника в соответствующих его типу единицах измерения.</div>
793 </li>
794 </ul>
795 </li>
796 </ol>
798 </div>
799 <!-- EDIT19 SECTION "Зависимые источники" [49098-51224] -->
800 <h3 class="sectionedit20" id="нуллор">Нуллор</h3>
801 <div class="level3">
804 <a href="https://en.wikipedia.org/wiki/nullor" class="interwiki iw_wp" title="https://en.wikipedia.org/wiki/nullor">Нуллор</a> - это идеальный элемент, состоящий из <em>нуллатора</em> и
805 <em>норатора</em>, имеющий нулевое входное и бесконечное выходное сопротивление,
806 бесконечные коэффициенты усиления по току и напряжению, бесконечные
807 проходную проводимость и передаточное сопротивление и параметры передачи
808 равные нулю. Нуллор является универсальным активным элементом, то есть в
809 идеале с его помощью можно реализовать любые линейные или нелинейные функции
810 при наличии подходящего набора линейных и нелинейных пассивных элементов. В
811 частности с помощью нуллора, резисторов и конденсаторов формируется полный
812 набор линейных схем.
813 </p>
816 Нуллор в зависимости от схемы включения может использоваться для анализа или
817 синтеза реальных схем, что достигается заменой реальных операционных
818 усилителей, токовых конвейеров, усилительных триодов (ламп или транзисторов)
819 нуллорами и небольшим набором пассивных элементов, отражающих их параметры.
820 Идеальные транзисторы на основе нуллора успешно используются в моделировании
821 по переменному току для синтеза различных составных транзисторных схем и
822 составных транзисторов. Схемы с операционными усилителями на базе нуллора
823 используются для реализаций фильтров. Существуют также методики для
824 верификации, автоматической диагностики ошибок, автоматической настройки
825 смещения в аналоговых схемах и т. д.
826 </p>
828 </div>
830 <h4 id="нуллор_в_spice">Нуллор в SPICE</h4>
831 <div class="level4">
834 При отсутствии модели нуллора в программе моделирования общего назначения
835 нуллор можно смоделировать с помощью <a href="#зависимые_источники" title=":geda:csygas.ru.txt ↵" class="wikilink1">зависимого
836 источника</a> с большим значением коэффициента усиления, например
837 10<sup>9</sup>. Тип зависимого источника (ИНУН, ИТУН, ИНУТ или ИТУТ)
838 выбирается в зависимости от оцениваемого входного сигнала, напряжения или
839 тока и нужного выходного сигнала. Управляемый источник с бесконечным
840 усилением любого из указанных четырёх типов зависимых источников
841 представляет собой эквивалент нуллора.
842 </p>
845 Трёх-выводной нуллор может использоваться для моделирования по переменному
846 току <em>идеальных транзисторов</em> и других <em>триодов</em>. <em>Идеальный
847 операционный усилитель</em> реализуется с помощью источника напряжения,
848 управляемого напряжением, с бесконечным (фактически, достаточно большим)
849 коэффициентом усиления. Токовый конвейер (CCII) является эквивалентом
850 трёх-выводного нуллора.
851 </p>
854 Обычно нуллор используется для моделирования в малосигнальном частотном
855 анализе (в частотном домене). При наличии отрицательной обратной связи
856 нуллор может использоваться как идеальный операционный усилитель даже для
857 выполнения временного анализа (см. <a href="#пример_схемы_-_сумматор" title=":geda:csygas.ru.txt ↵" class="wikilink1">пример</a>
858 ниже).
859 </p>
861 </div>
863 <h4 id="нуллор_в_geda">Нуллор в gEDA</h4>
864 <div class="level4">
867 В <strong>ngspice</strong> и <strong>gnucap</strong> специальной модели для нуллора нет.
868 Поэтому в качестве нуллора в spice-sdb используется ИНУН с
869 высоким коэффициентом усиления.
870 </p>
873 Для включения нуллора в список соединений SPICE нужно сделать следующее:
874 </p>
875 <ol>
876 <li class="level1"><div class="li"> Поместить нуллор в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><strong><em>spice</em></strong><strong>nullor-1.sym</strong>).</div>
877 </li>
878 <li class="level1 node"><div class="li"> Дважды щёлкнуть по блоку и добавить/отредактировать следующие атрибуты:</div>
879 <ul>
880 <li class="level2"><div class="li"> <code>refdes</code>: N?</div>
881 </li>
882 <li class="level2"><div class="li"> <code>value</code>: задаётся коэффициент усиления нуллора по напряжению, обычно 1000Meg (необязателен с версии geda-gaf 1.9.2).</div>
883 </li>
884 </ul>
885 </li>
886 </ol>
888 </div>
890 <h5 id="примернуллор">Пример: нуллор</h5>
891 <div class="level5">
892 <ul>
893 <li class="level1"><div class="li"> <code>refdes=N1</code></div>
894 </li>
895 <li class="level1"><div class="li"> <code>value=1000Meg</code></div>
896 </li>
897 </ul>
900 Результирующие строки SPICE:
901 </p>
902 <pre class="code">E_N1 1 2 3 4 1000Meg
903 IMeasure_N1 3 4 dc 0
904 IOut_N1 1 2 dc 0</pre>
907 Этот код содержит:
908 </p>
909 <ul>
910 <li class="level1"><div class="li"> управляемый источник напряжения E_N1;</div>
911 </li>
912 <li class="level1"><div class="li"> источник тока, измеряющий напряжение IMeasure_N1;</div>
913 </li>
914 <li class="level1"><div class="li"> выходной источник тока IOut_N1.</div>
915 </li>
916 </ul>
919 Таким образом код нуллора в <strong>gnet-spice-sdb</strong> — это просто зависимый от
920 напряжения источник напряжения, на входе и на выходе которого стоят нулевые
921 источники тока для предотвращения отказа в работе программы моделирования,
922 когда вход или выход нуллора ни к чему не подключены.
923 </p>
926 Примечание: в результате экспериментов я (vzh) обнаружил, что наличие или
927 отсутствие этих источников никак не влияет на моделирование и не решает
928 поставленной задачи для современной версии <strong>ngspice</strong>. В случае, когда вход
929 или выход нуллора является плавающим, то есть не имеет какого-либо
930 соединения с землёй, <strong>ngspice</strong> всё же выдаст ошибку. Для устранения
931 ошибки можно подключить одну из этих входных или выходных точек к земле
932 через высокоомный резистор. <strong>gnucap</strong> всегда правильно обсчитывает нуллор,
933 но в таком случае на не связанных с землёй узлах будет произвольно
934 меняющееся большое напряжение, так что измерять необходимо не потенциал
935 отдельных узлов относительно земли, а именно напряжение на входе или выходе
936 нуллора.
937 </p>
940 Если нужен нуллор с другим типом чувствительности, его можно сделать на
941 основе символа любого из управляемых источников (одного из
942 <em><code>vcvs-1.sym</code></em>, <em><code>vccs-1.sym</code></em>, <em><code>cccs-1.sym</code></em>,
943 <em><code>ccvs-1.sym</code></em>), просто установив достаточно большое значение атрибута
944 <code>value</code>, скажем, «1000Meg».
945 </p>
947 </div>
949 <h4 id="пример_схемы_-_сумматор">Пример схемы - сумматор</h4>
950 <div class="level4">
953 В данном примере нуллор используется в качестве модели идеального
954 операционного усилителя.
955 </p>
958 <a href="media/geda/summing.png" class="media" target="_blank" title="geda:summing.png"><img src="media/geda/summing.png" class="mediacenter" alt="" /></a>
959 </p>
962 Файл схемы для <strong>gschem</strong>: <a href="media/geda/summing.sch" class="media" target="_blank" title="geda:summing.sch">geda:summing.sch</a>
963 </p>
966 Командный файл для моделирования в <strong>gnucap</strong> и/или <strong>ngspice</strong>:
967 </p>
968 <dl class="file">
969 <dt><a href="/./_export/code/:geda:csygas.ru.txt?codeblock=0" title="Download Snippet" class="mediafile mf_cmd">summing.cmd</a></dt>
970 <dd><pre class="code file spice">.print tran v(nodes)
971 .tran .0001 1 0 &gt;summing.dat</pre>
972 </dd></dl>
975 Обратите внимание на часть строки <code>&gt;summing.dat</code> в командном файле. Она
976 игнорируется программой <strong>ngspice</strong>, в то время как <strong>gnucap</strong> использует её
977 для вывода данных в указанный файл в пакетном режиме (при использовании
978 перенаправления командной оболочки выходные данные были бы выведены вместе
979 со строками приглашения <strong>gnucap</strong>, что нам не нужно.
980 </p>
983 Команда для создания списка соединений (обратите внимание на ключ <code>sort_mode</code>, он необходим,
984 чтобы программа <strong>gnucap</strong> работала правильно):
985 </p>
986 <pre class="code">gnetlist -g spice-sdb -O sort_mode -o summing.net summing.sch</pre>
989 Команда для моделирования с помощью <strong>ngspice</strong>:
990 </p>
991 <pre class="code">ngspice -b -r summing.dat summing.net</pre>
994 Команда для моделирования с помощью <strong>gnucap</strong>:
995 </p>
996 <pre class="code">gnucap -b summing.net</pre>
999 Команда для просмотра полученных сигналов:
1000 </p>
1001 <pre class="code">gwave summing.dat</pre>
1003 </div>
1004 <!-- EDIT20 SECTION "Нуллор" [51225-61286] -->
1005 <h3 class="sectionedit21" id="компоненты_spice">Компоненты SPICE</h3>
1006 <div class="level3">
1008 </div>
1010 <h4 id="блок_spice-модели">Блок SPICE-модели</h4>
1011 <div class="level4">
1014 В некоторых случаях может быть желательно внедрить блок SPICE-модели
1015 непосредственно в схему. Это можно сделать, когда у вас есть несколько
1016 устройств с атрибутами <code>value</code>, в которых вызывается одна и та же
1017 SPICE-модель. В зависимости от того, является ли блок SPICE однострочным или
1018 многострочным, код можно встроить одним из двух способов:
1019 </p>
1021 </div>
1023 <h5 id="однострочная_spice-модель">Однострочная SPICE-модель</h5>
1024 <div class="level5">
1025 <ol>
1026 <li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><em><code>spice-model-1.sym</code></em>)</div>
1027 </li>
1028 <li class="level1 node"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
1029 <ul>
1030 <li class="level2"><div class="li"> <code>refdes</code>: A?</div>
1031 </li>
1032 <li class="level2"><div class="li"> <code>model-name</code>: название модели (т. е. название, задаваемое в компонентах, работа которых будет моделироваться)</div>
1033 </li>
1034 <li class="level2"><div class="li"> <code>type</code>: один из допустимых типов компонентов, определённых в спецификации SPICE.</div>
1035 </li>
1036 <li class="level2"><div class="li"> <code>model</code>: соответствующая однострочная SPICE-модель.</div>
1037 </li>
1038 </ul>
1039 </li>
1040 </ol>
1042 </div>
1044 <h5 id="многострочная_spice-модель">Многострочная SPICE-модель</h5>
1045 <div class="level5">
1046 <ol>
1047 <li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><em><code>spice-model-1.sym</code></em>)</div>
1048 </li>
1049 <li class="level1 node"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
1050 <ul>
1051 <li class="level2"><div class="li"> <code>refdes</code>: A?</div>
1052 </li>
1053 <li class="level2"><div class="li"> <code>model-name</code>: название модели</div>
1054 </li>
1055 <li class="level2"><div class="li"> <code>file</code>: имя файла, содержащего код SPICE-модели (т. е. <code>.MODEL</code> или <code>.SUBCKT</code>).</div>
1056 </li>
1057 </ul>
1058 </li>
1059 </ol>
1061 </div>
1063 <h4 id="блок_включения">Блок включения</h4>
1064 <div class="level4">
1067 Блок включения добавляет в список соединений директиву <code>.INCLUDE</code>.
1068 </p>
1069 <ol>
1070 <li class="level1"><div class="li"> Поместите блок SPICE-модели в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><em><code>spice-include-1.sym</code></em>)</div>
1071 </li>
1072 <li class="level1 node"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
1073 <ul>
1074 <li class="level2"><div class="li"> <code>refdes</code>: A?</div>
1075 </li>
1076 <li class="level2"><div class="li"> <code>file</code>: имя подключаемого файла.</div>
1077 </li>
1078 </ul>
1079 </li>
1080 </ol>
1082 </div>
1084 <h4 id="блок_директивы_spice">Блок директивы SPICE</h4>
1085 <div class="level4">
1088 При наличии в схеме блока директивы, в списке соединений создаётся специальный блок кода SPICE. Директивой может подключаться либо файл с операторами, либо строка, содержащаяся в атрибуте <code>value</code>. Генератор списка соединений выводит содержимое строки или файла в список соединений дословно. Подходящими примерами использования директивы является подключение следующих операторов:
1089 </p>
1090 <ul>
1091 <li class="level1"><div class="li"> .TEMP</div>
1092 </li>
1093 <li class="level1"><div class="li"> .IC</div>
1094 </li>
1095 <li class="level1"><div class="li"> и других операторов SPICE, для которых в <strong>gschem</strong> нет символов.</div>
1096 </li>
1097 </ul>
1100 Для добавления в схему директивы SPICE, сделайте следующее:
1101 </p>
1102 <ol>
1103 <li class="level1"><div class="li"> Поместите блок директивы в свою схему. (Выберите <strong><em>Добавить</em></strong><strong><em>Компонент</em></strong><em><code>spice</code></em><em><code>spice-directive-1.sym</code></em>)</div>
1104 </li>
1105 <li class="level1 node"><div class="li"> Дважды щёлкните по блоку и добавьте/отредактируйте следующие атрибуты:</div>
1106 <ul>
1107 <li class="level2"><div class="li"> <code>refdes</code>: A?</div>
1108 </li>
1109 <li class="level2"><div class="li"> <code>file</code>: имя подключаемого файла.</div>
1110 </li>
1111 </ul>
1112 </li>
1113 </ol>
1115 </div>
1116 <!-- EDIT21 SECTION "Компоненты SPICE" [61287-65343] -->
1117 <h3 class="sectionedit22" id="работа_с_иерархическими_моделями">Работа с иерархическими моделями</h3>
1118 <div class="level3">
1121 При SPICE-моделировании часто возникают ситуации, когда хочется представить
1122 схему какого-либо конкретного компонента в виде <em><code>.SUBCKT</code></em>, а затем
1123 внедрить модель этого компонента в основную схему. Приведём довольно
1124 распространённый пример. Допустим, при моделировании СВЧ-схемы вы решили
1125 использовать такую модель конденсатора, которая содержит не только ёмкость,
1126 но и паразитные индуктивности и сопротивления. Производители конденсаторов
1127 часто поставляют схемы, отражающие схемную топологию имеющихся паразитных
1128 элементов, и указывают значения соответствующих сопротивлений и
1129 индуктивностей. И вам бы хотелось начертить модель такого конденсатора в
1130 <strong>gschem</strong>, создать с помощью генератора списка соединений файл
1131 <em><code>.SUBCKT</code></em>, а затем использовать этот файл для моделирования процессов
1132 в основной схеме.
1133 </p>
1136 Поскольку такого рода задачи при SPICE-моделировании являются довольно обычными, то теперь их можно выполнять и с помощью <strong>gnet-spice-sdb</strong> (начиная с версии 20030331). Для создания файла <em><code>.SUBCKT</code></em> подсхемы и использования его в основной схеме нужно сделать следующее:
1137 </p>
1138 <ol>
1139 <li class="level1"><div class="li"> Начертите в <strong>gschem</strong> подсхему компонента (например, конденсатор + паразитные элементы).</div>
1140 </li>
1141 <li class="level1 node"><div class="li"> Добавьте в неё блок <code>spice-subcircuit-LL</code> (<em><code>spice-subcircuit-LL-1.sym</code></em>). Этим самым генератору списка соединений указывается, что эта схема является подсхемой для создания <em><code>.SUBCKT</code></em>. Прикрепите к символу блока атрибут:</div>
1142 <ul>
1143 <li class="level2"><div class="li"> <code>model-name</code> = <em>cap_with_parasitics</em><br/>
1144 (Конечно, <em>cap_with_parasitics</em> — это просто пример. В своей схеме задайте название своей модели.) Тогда при создании файла списка соединений символ блока заставит генератор первой строкой туда вставить: <code>.SUBCKT cap_with_parasitics</code>.</div>
1145 </li>
1146 </ul>
1147 </li>
1148 <li class="level1"><div class="li"> В подсхеме к каждому из соединений ввода/вывода (т. е. к соединениям с основной схемой) подключите символ <code>spice-subcircuit-IO</code> (<em><code>spice-subcircuit-IO-1.sym</code></em>). Пронумеруйте позиционные обозначения символов ввода/вывода в таком порядке, в каком соединения ввода/вывода должны перечисляться в строке <code>.SUBCKT</code> выходного файла (т. е. P1 — для первого, P2 — для второго и т. д.).</div>
1149 </li>
1150 <li class="level1"><div class="li"> Когда вы закончите с подсхемой, нужно будет обычным способом создать список соединений. Например, если ваша схема называется <em><code>cap_with_parasitics.sch</code></em>, список соединений для неё создаётся командой: <pre class="code">gnetlist -g spice-sdb -o cap_with_parasitics.cir cap_with_parasitics.sch</pre>
1153 При этом список соединений SPICE будет записан в файл <em><code>cap_with_parasitics.cir</code></em>. Внимательно просмотрите этот файл и убедитесь, что список соединений создан правильно.
1154 </p>
1155 </div>
1156 </li>
1157 <li class="level1 node"><div class="li"> Затем для основной схемы создайте символ, который будет указывать на <em><code>.SUBCKT</code></em>. Обратите внимание, что позиционное обозначение данного символа должно начинаться с буквы <em>X</em>. Чтобы обеспечить это, сделайте следующее:</div>
1158 <ul>
1159 <li class="level2"><div class="li"> Начертите символ в <strong>gschem</strong>. Обычно, чтобы символ модели отличался от обычных компонентов, я черчу вокруг него прямоугольник. Если хотите, можете отметить его по-другому.</div>
1160 </li>
1161 <li class="level2"><div class="li"> Обеспечьте, чтобы выводы в этом символе и в <em><code>.SUBCKT</code></em> были перечислены в одинаковом порядке. Это делается редактированием символа в текстовом редакторе и установкой атрибутов <code>pinseq</code>. Генератор списка соединений выведет выводы в порядке, заданном в этих атрибутах.</div>
1162 </li>
1163 <li class="level2"><div class="li"> В текстовом редакторе установите для символа атрибут <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, этой цели не достичь.</div>
1164 </li>
1165 <li class="level2"><div class="li"> В текстовом редакторе установите значение атрибута позиционного обозначения символа <code>refdes</code> в <em>X?</em>.</div>
1166 </li>
1167 </ul>
1168 </li>
1169 <li class="level1"><div class="li"> Создайте основную схему. Добавьте свой новый символ в схему столько раз, сколько нужно, и разведите соединения обычным способом.</div>
1170 </li>
1171 <li class="level1 node"><div class="li"> Чтобы символ указывал на подсхему <em><code>.SUBCKT</code></em>, дважды щёлкните по нему и установите следующие атрибуты:</div>
1172 <ul>
1173 <li class="level2"><div class="li"> <code>file</code> = <em>cap_with_parasitics.cir</em></div>
1174 </li>
1175 <li class="level2"><div class="li"> <code>model-name</code> = <em>cap_with_parasitics</em><br/>
1176 а также другие необходимые атрибуты (например, <code>refdes</code>).</div>
1177 </li>
1178 </ul>
1179 </li>
1180 <li class="level1 node"><div class="li"> Теперь создайте список соединений для своей основной схемы обычным способом. Содержимое каждого файла <em><code>.SUBCKT</code></em> будет записано в основной список соединений. Откройте полученный файл в текстовом редакторе и внимательно проверьте, что список соединений создан правильно. Особое внимание обратите на следующее:</div>
1181 <ul>
1182 <li class="level2"><div class="li"> Проверьте, что соединения, подключающие <em><code>.SUBCKT</code></em> подсхемы к основному списку соединений, перечислены в правильном порядке.</div>
1183 </li>
1184 <li class="level2"><div class="li"> Убедитесь, что и в основной схеме, и в подсхеме (в строке объявления <code>.SUBCKT</code>) используется одно и то же название модели.</div>
1185 </li>
1186 </ul>
1187 </li>
1188 </ol>
1191 Как только список соединений готов, вы тотчас же можете начать моделирование
1192 своего проекта любой предпочитаемой программой
1193 SPICE-моделирования. Некоторые из работающих в Linux программ описаны ниже.
1194 </p>
1196 </div>
1197 <!-- EDIT22 SECTION "Работа с иерархическими моделями" [65344-73842] -->
1198 <h2 class="sectionedit23" id="создание_списка_соединений_spice">Создание списка соединений SPICE</h2>
1199 <div class="level2">
1201 </div>
1202 <!-- EDIT23 SECTION "Создание списка соединений SPICE" [73843-73911] -->
1203 <h3 class="sectionedit24" id="использование_gnetlist">Использование gnetlist</h3>
1204 <div class="level3">
1207 Когда схема начерчена, список соединений SPICE можно создать с помощью
1208 программы gEDA <strong>gnetlist</strong>, запустив её из командной строки и задав в
1209 качестве аргументов имена файлов схем. <strong>gnetlist</strong> сконструирована из двух
1210 частей: оболочки — процессора, написанного на C, читающего файл
1211 <em><code>.sch</code></em> и создающего из него внутреннее, общее представление проекта, и
1212 драйверов на Scheme — генераторов списков соединений. С такой архитектурой
1213 <strong>gnetlist</strong> является очень гибко настраиваемой программой — с помощью
1214 разных драйверов на Scheme производятся списки соединений в разных
1215 форматах. Красота этой схемы (намеренный каламбур) в том, что пользователи
1216 gEDA легко могут и сами написать подходящие генераторы списков соединений
1217 для своих собственных нужд. Файл драйвера на Scheme, с реализацией
1218 усовершенствованного создания списков соединений SPICE, называется
1219 <em><code>gnet-spice-sdb.scm</code></em> и находится в каталоге
1220 <em><code>${PREFIX}/geda/share/gEDA/scheme</code></em>.
1221 </p>
1224 Из командной строки вызов драйвера <strong>spice-sdb</strong> для
1225 <strong>gnetlist</strong> производится следующим образом:
1226 </p>
1227 <pre class="code">gnetlist [OPTIONS] -g spice-sdb filename1 ... filenameN</pre>
1230 Помимо прочих ключей, описанных в
1231 <a href="geda-gnetlist_ug-command_line.ru.html" class="wikilink1" title="geda-gnetlist_ug-command_line.ru.html">Руководстве пользователя gnetlist</a>,
1232 в <strong>gnetlist</strong> поддерживаются специфические, драйверо-зависимые ключи.
1233 Специфический ключ драйвера может быть включен с помощью задания <code>-O
1234 КЛЮЧ</code>. Драйвером <strong>spice-sdb</strong> поддерживаются следующие дополнительные
1235 ключи:
1236 </p>
1237 <ul>
1238 <li class="level1"><div class="li"> <code>include_mode</code>: записывать в выходной файл <code>.INCLUDE &lt;filename&gt;</code> вместо содержимого файла модели;</div>
1239 </li>
1240 <li class="level1"><div class="li"> <code>embedd_mode</code>: внедрять содержимое указанных в <code>.include</code> файлов в список соединений;</div>
1241 </li>
1242 <li class="level1"><div class="li"> <code>nomunge_mode</code>: не производить автоматическую корректировку позиционных обозначений компонентов;</div>
1243 </li>
1244 <li class="level1"><div class="li"> <code>sort_mode</code>: сортировать выходной список соединений.</div>
1245 </li>
1246 </ul>
1248 </div>
1249 <!-- EDIT24 SECTION "Использование gnetlist" [73912-76908] -->
1250 <h3 class="sectionedit25" id="создание_списка_соединений_при_помощи_gnetlist_и_spice-sdb">Создание списка соединений при помощи gnetlist и spice-sdb</h3>
1251 <div class="level3">
1254 Создать список соединений SPICE из схемы довольно просто. Для этого сделайте следующее:
1255 </p>
1256 <ul>
1257 <li class="level1"><div class="li"> Сохраните свою схему в <em><code>filename.sch</code></em>.</div>
1258 </li>
1259 <li class="level1"><div class="li"> Создайте список соединений SPICE, запустив <strong><code>gnetlist -g spice-sdb filename.sch</code></strong>. Список соединений будет выведен в файл <em><code>output.net</code></em>. Кроме того, с помощью ключа <code>-o</code> можно задать другое имя выходного файла. Например, при задании такой команды: <pre class="code">gnetlist -g spice-sdb -o amplifier.cir amplifier.sch</pre>
1262 схема будет взята из файла <em><code>amplifier.sch</code></em>, а список соединений SPICE будет записан в файл <em><code>amplifier.cir</code></em>.
1263 </p>
1264 </div>
1265 </li>
1266 <li class="level1"><div class="li"> Откройте свой список соединений в текстовом редакторе и внимательно просмотрите. Проверьте, не отсутствуют ли какие-либо атрибуты и нет ли каких-либо других проблем.</div>
1267 </li>
1268 </ul>
1270 </div>
1271 <!-- EDIT25 SECTION "Создание списка соединений при помощи gnetlist и spice-sdb" [76909-78202] -->
1272 <h3 class="sectionedit26" id="обычные_проблемы_при_создании_списков_соединений">Обычные проблемы при создании списков соединений</h3>
1273 <div class="level3">
1276 Здесь мы попытаемся перечислить наиболее общие проблемы, возникающие при создании списков соединений и соответствующие решения:
1277 </p>
1278 <ul>
1279 <li class="level1"><div class="li"> ERROR_INVALID_PIN:<br/>
1280 Эта ошибка может появиться, если последовательность номеров, заданных в атрибутах <code>pinseq</code> символа, не начинается с 1 или в ней имеются пропуски. Это можно починить, отредактировав такой символ в текстовом редакторе.</div>
1281 </li>
1282 <li class="level1"><div class="li"> ERROR: In procedure caddr:<br/>
1283 Это весьма распространённая ошибка. Обычно она появляется в том случае, когда вы забыли добавить один из обязательных атрибутов. Чтобы локализовать проблему, попробуйте запустить <strong>gnetlist</strong> в режиме подробного вывода (<strong><code>gnetlist -v -g spice-sdb filename.sch</code></strong>). Тогда генератор списка соединений остановит обработку на компоненте с пропущенным атрибутом и выдаст ошибку. Определив таким образом компонент-нарушитель, вы можете заново открыть схему в <strong>gschem</strong> и поправить атрибуты.</div>
1284 </li>
1285 </ul>
1288 Наконец, помните, что прежде, чем использовать свой список соединений SPICE
1289 для моделирования, важно внимательно его проверить. Имейте в виду, что
1290 данный генератор списка соединений всё ещё находится в стадии «бета-версии»
1291 и какие-то проблемы с созданием списков соединений возможно ещё имеются.
1292 </p>
1294 </div>
1295 <!-- EDIT26 SECTION "Обычные проблемы при создании списков соединений" [78203-80375] -->
1296 <h2 class="sectionedit27" id="spice-моделирование">SPICE-моделирование</h2>
1297 <div class="level2">
1300 Для SPICE-моделирования в GNU/Linux есть несколько вариантов, я отмечу три:
1301 </p>
1302 <ul>
1303 <li class="level1"><div class="li"> <strong>LTSpice</strong> — свободная (freeware) программа SPICE-моделирования, изначально выпущенная в Linear Technologies как инструмент для выбора/проектирования компонентов для платформы Windows. Благодаря очень быстрому и мощному SPICE-процессору она стала популярной в среде любителей и инженеров-проектировщиков, предпочитающих использовать свободные средства. Исходно <strong>LTSpice</strong> была написана для Windows, но затем немного изменена для запуска в GNU/Linux с помощью <strong>wine</strong>; если вам нужна мощная программа SPICE-моделирования профессионального качества, рекомендую пользоваться ею.</div>
1304 </li>
1305 <li class="level1"><div class="li"> <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.</div>
1306 </li>
1307 <li class="level1"><div class="li"> <strong>tclspice</strong> — ответвление разработки <strong>ngspice</strong>. <strong>tclspice</strong> представляет собой расширенный вариант <strong>ngspice</strong>, в котором (в теории) набор команд SPICE экспортируется в <abbr title="Application Programming Interface">API</abbr> языка Tcl, позволяя встраивать SPICE-анализ в программы на Tcl. Среди прочего это полезно для автоматизации задач оптимизации разработки. <strong>tclspice</strong> — программа моделирования для тех, кто интересуется продвинутой, скриптовой разработкой.</div>
1308 </li>
1309 </ul>
1312 Есть ещё программа моделирования <strong>gnucap</strong> под лицензией <abbr title="GNU General Public License">GPL</abbr>, основанная на
1313 (или являющаяся потомком) <strong>Al&#039;s Circuit Simulator</strong> (<strong>ACS</strong>). Я её особо
1314 не использовал, поэтому информация о <strong>gnucap</strong> здесь отсутствует и её нужно
1315 добавить (<img src="images/smileys/fixme.gif" align="middle" alt="FIXME" />).
1316 </p>
1318 </div>
1319 <!-- EDIT27 SECTION "SPICE-моделирование" [80376-83501] -->
1320 <h3 class="sectionedit28" id="ltspice">LTSpice</h3>
1321 <div class="level3">
1324 Программа <strong>LTSpice</strong> была написана в Linear Technologies, её авторы —
1325 <em>Mike Englehardt</em> и другие. Затем LinearTech отдала её в свободное
1326 пользование как вспомогательное средство для проектирования инженерам,
1327 желающим моделировать характеристики её контроллеров блоков питания,
1328 работающих в ключевом режиме. Пакет предоставляет оболочку для
1329 редактирования принципиальных схем, простой и мощный SPICE-процессор и
1330 возможность построения графиков результатов различных видов расчётов SPICE.
1331 Лично мне оболочка для разработки схем кажется неуклюжей и неудобной для
1332 работы; <strong>gschem</strong> разбивает её наголову по простоте использования и
1333 возможностям. Однако SPICE-процессор и средства анализа в <strong>LTSpice</strong>
1334 просто превосходны.
1335 </p>
1338 Программа <strong>LTSpice</strong> исходно предназначалась для работы в Windows, но
1339 <em>Mike</em> немного изменил её, так что она довольно хорошо работает и в
1340 GNU/Linux из-под <strong>wine</strong>. (Только система меню справки сломана —
1341 остальная часть пакета работает хорошо). Ещё одной приятной стороной
1342 <strong>LTSpice</strong> является хорошая поддержка, — <em>Mike</em> регулярно читает
1343 новостные группы <em>sci.electronics.cad</em> и, как правило, всегда рад помочь
1344 тем, кто испытывает с ней проблемы. Поэтому, несмотря на её
1345 Windoze-наследие, я рекомендую <strong>LTSpice</strong> как мощный, профессионального
1346 качества драйвер моделирования и анализа для gEDA.
1347 </p>
1349 </div>
1351 <h4 id="установка_и_настройка_ltspice">Установка и настройка LTSpice</h4>
1352 <div class="level4">
1355 Установка и настройка <strong>LTSpice</strong> производится следующим образом:
1356 </p>
1357 <ol>
1358 <li class="level1"><div class="li"> Загрузите и установите <strong>wine</strong>. Мне удалось поставить <strong>Wine-20030219</strong>. Более поздние версии наверняка тоже будут работать.</div>
1359 </li>
1360 <li class="level1"><div class="li"> Загрузите <strong>LTSpice</strong>. Программа доступна по адресу <a href="http://www.linear.com/software" class="urlextern" title="http://www.linear.com/software" rel="nofollow">http://www.linear.com/software</a> под названием <strong>SwitcherCAD-III</strong>.</div>
1361 </li>
1362 <li class="level1"><div class="li"> Запустите программу установки <strong>LTSpice</strong> в <strong>wine</strong>.</div>
1363 </li>
1364 </ol>
1366 </div>
1368 <h4 id="запуск_ltspice_с_проектами_geda">Запуск LTSpice с проектами gEDA</h4>
1369 <div class="level4">
1372 <strong>LTSpice</strong> умеет читать файлы списков соединений SPICE, сделанные в gEDA. Моделирование в <strong>LTSpice</strong> мне удавалось производить следующим образом:
1373 </p>
1374 <ol>
1375 <li class="level1"><div class="li"> Прежде всего регистрируйтесь в системе как обычный пользователь — <strong>wine</strong> не любит работать из-под суперпользователя.</div>
1376 </li>
1377 <li class="level1"><div class="li"> В каталоге своего проекта создайте файл <em><code>Simulation.cmd</code></em> и пропишите в нём команды своего SPICE-анализа (например, .OP, .AC, .DC и т. д.).</div>
1378 </li>
1379 <li class="level1"><div class="li"> Добавьте в свою схему символ блока включения SPICE. Атрибут <code>file</code> установите в <em>Simulation.cmd</em>.</div>
1380 </li>
1381 <li class="level1"><div class="li"> Создайте для своего проекта список соединений.</div>
1382 </li>
1383 <li class="level1"><div class="li"> Сделайте ссылку на свой список соединений <em><code>output.net</code></em> в каталоге установки <strong>SwCADIII</strong>. Имя файла ссылки должно содержать суффикс <em>.cir</em>. Например: <pre class="code">ln -s ${DESIGN_HOME}/output.net ${WINE_HOME}/.wine/fake_windows/Program Files/LTC/SwCADIII/MyDesign.cir</pre>
1384 </div>
1385 </li>
1386 <li class="level1"><div class="li"> Запустите <strong>LTSpice</strong>: перейдите в каталог установки <strong>SwCADIII</strong> командой <strong>cd</strong> и запустите <pre class="code">wine scad3.exe</pre>
1387 </div>
1388 </li>
1389 <li class="level1"><div class="li"> В окне <strong>SwCADIII</strong> выберите <strong><em>Файл</em></strong><strong><em>Открыть</em></strong><em><code>(файлы типа списков соединений [.cir])</code></em> и выберите свой файл.</div>
1390 </li>
1391 <li class="level1"><div class="li"> Запустите моделирование щелчком по кнопке запуска (<strong>Run</strong>) или с помощью <strong><em>Моделирование</em></strong><strong><em>Запуск</em></strong>.</div>
1392 </li>
1393 <li class="level1"><div class="li"> Выберите для графика переменные и щёлкните OK. Дальше программа <strong>SwCADIII</strong> всё сделает сама.</div>
1394 </li>
1395 </ol>
1398 Конечно, чтобы понять, как пользоваться программой <strong>LTSpice</strong> эффективно,
1399 очень важно с ней позаниматься, но для начала вам должно быть достаточно
1400 вышеизложенного описания.
1401 </p>
1403 </div>
1404 <!-- EDIT28 SECTION "LTSpice" [83502-88851] -->
1405 <h3 class="sectionedit29" id="ngspice">Ngspice</h3>
1406 <div class="level3">
1409 <strong>ngspice</strong> начал <em>Paolo Nenzi</em> в Университете Рима «La Sapienza»,
1410 стремясь создать версию стандартного Berkeley SPICE версии 3 под лицензией
1411 <abbr title="GNU General Public License">GPL</abbr>, полностью переписав этот пакет. В его планы также входило создание
1412 лучших, более ясных алгоритмов расчётов для SPICE-процессора. Больше
1413 информации можно найти на веб-странице <strong>ngspice</strong>:
1414 <a href="http://ngspice.sourceforge.net/" class="urlextern" title="http://ngspice.sourceforge.net/" rel="nofollow">http://ngspice.sourceforge.net/</a>. Но в свете этих возвышенных планов
1415 <em>Paolo</em> стал заниматься несколько другим: он взял код <strong>SPICE 3</strong>, много
1416 лет гуляющий по интернету, переработал его, и написал систему сборки, чтобы
1417 его можно было бы скомпилировать обычным способом с помощью <strong>GNU
1418 make</strong>. Это было главное достижение, за которое <em>Paolo</em> заслуживает
1419 огромной похвалы. К сожалению, судя по виду веб-страницы, разработка
1420 <strong>ngspice</strong> похоже остановилась в конце 2001 г. На самом деле после 2001
1421 г. разработка значительно замедлилась, но в последнее время <em>Paolo</em> снова
1422 занялся <strong>ngspice</strong>. Последнюю версию, <strong>ngspice-rework-15</strong>, он выпустил в
1423 феврале 2004 года. Эта версия доступна только на странице загрузки сайта
1424 <em>sourceforge</em>; <em>Paolo</em> пока не обновил остальную часть веб-страницы
1425 проекта.
1426 </p>
1428 </div>
1430 <h4 id="установка_и_конфигурирование_ngspice">Установка и конфигурирование ngspice</h4>
1431 <div class="level4">
1434 Вообще, я пришёл к тому, что лучше загрузить, сконфигурировать и
1435 скомпилировать исходный код <strong>ngspice</strong>, вместо того чтобы пытаться
1436 установить двоичный пакет. Это решение я и опишу здесь в общих чертах.
1437 </p>
1439 </div>
1441 <h4 id="загрузка_исходного_кода">Загрузка исходного кода</h4>
1442 <div class="level4">
1445 Скачайте самую последнюю версию дистрибутива со страницы
1446 <a href="http://sourceforge.net/projetcs/ngspice" class="urlextern" title="http://sourceforge.net/projetcs/ngspice" rel="nofollow">http://sourceforge.net/projetcs/ngspice</a>. Обязательно самую последнюю,
1447 так как у неё самая высокая производительность и наибольшее количество
1448 возможностей. На май 2004 года, последний выпуск — это
1449 <strong>ngspice-rework-15</strong>. Установите исходники туда, где вы их обычно храните.
1450 Мне нравится держать свои исходники gEDA в отдельном каталоге, например,
1451 <em><code>/usr/local/geda/sources/ngspice</code></em>. Можете перенять такую схему.
1452 </p>
1454 </div>
1456 <h4 id="извлечение_исходных_текстов">Извлечение исходных текстов</h4>
1457 <div class="level4">
1460 Исходные тексты программы распространяются в виде «тарбола» — сжатого
1461 архива. Вам нужно извлечь из него файлы, сделав следующее:
1462 </p>
1463 <pre class="code">user@host:~$ cd &lt;каталог, куда следует извлечь исходные файлы&gt;
1464 user@host:~sources$ tar -xvzf &lt;/путь/к/пакету.tar.gz&gt;
1465 user@host:~sources$ cd &lt;извлечённый каталог&gt;</pre>
1468 В этот момент вы находитесь в корневом каталоге <strong>ngspice</strong>. Чтобы
1469 познакомиться с этой программой и процессом её установки поближе, прочитайте
1470 общеизвестные файлы, такие как <em><code>README</code></em> и <em><code>INSTALL</code></em>. Также
1471 неплохо бы почитать файл <em><code>NOTES</code></em>, в нём содержится информация,
1472 полезная для разработки или отладки возможностей <strong>ngspice</strong>.
1473 </p>
1475 </div>
1477 <h4 id="конфигурирование_и_компиляция_ngspice">Конфигурирование и компиляция ngspice</h4>
1478 <div class="level4">
1481 Для сборки <strong>ngspice</strong> используется обычная последовательность <strong><code>configure &amp;&amp; make &amp;&amp; make install</code></strong>, применяемая и для прочих GNU-тых программ. Для конфигурирования <strong>ngspice</strong> имеется достаточно много ключей. <img src="images/smileys/fixme.gif" align="middle" alt="FIXME" />: Полный их перечень и сопровождающая документация нуждаются в доработке; чтобы увидеть их все, лучше всего посмотреть файл <em><code>configure.ac</code></em>. Многие из ключей, доступных на этапе конфигурирования, предназначены для отладки программы моделирования или для включения возможностей экспериментальных видов анализа. Новичкам стоит обратить внимание на три ключа:
1482 </p>
1483 <ul>
1484 <li class="level1"><div class="li"> <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.</div>
1485 </li>
1486 <li class="level1"><div class="li"> <code>--with-readline</code>: при задании этого ключа в <strong>ngspice</strong> встраивается поддержка GNU <strong>readline</strong>. Это значит, что вы сможете использовать как клавиатурные команды в стиле <strong>emacs</strong>, так и клавиши со стрелками для перемещения в строке ввода команд. Без этой возможности интерфейс командной строки будет враждебным, то есть, если вы ошибётесь при вводе длинной команды, у вас не останется других вариантов, кроме как снова ввести её целиком. <em>Paolo</em> не советует использовать возможность <code>readline</code>, поскольку при этом код <abbr title="GNU General Public License">GPL</abbr> (<strong>readline</strong>) смешивается с кодом BSD (<strong>ngspice</strong>), но для других он этот ключ оставил, чтобы люди сами могли решить, насколько быть целомудренными в этом вопросе.</div>
1487 </li>
1488 <li class="level1"><div class="li"> <code>--prefix</code>: этим ключом задаётся базовый каталог установки двоичных файлов программ.</div>
1489 </li>
1490 </ul>
1493 Прежде чем запускать <strong>configure</strong> нужно проверить ключи, которые вы хотите
1494 задать. Краткое описание приведено в приложении (<img src="images/smileys/fixme.gif" align="middle" alt="FIXME" />: требуется
1495 доработка). Как только будете готовы, наберите:
1496 </p>
1497 <pre class="code">user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda &lt;другие ключи конфигурации&gt;</pre>
1500 Конечно, <code>--prefix=</code> должен указывать на тот каталог, где находятся
1501 <strong>ваши</strong> файлы, относящиеся к gEDA. После выполнения этой команды программа
1502 моделирования будет сконфигурирована и готова для компиляции. Компиляция
1503 проста:
1504 </p>
1505 <pre class="code">user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install</pre>
1508 Как обычно для установки пакетов в общедоступный каталог скорее всего вам
1509 понадобятся права суперпользователя, в таком случае нужно сделать так:
1510 </p>
1511 <pre class="code">user@host:~sources/&lt;tld&gt;$ make
1512 user@host:~sources/&lt;tld&gt;$ su -c make install</pre>
1514 </div>
1516 <h4 id="проверка_установки">Проверка установки</h4>
1517 <div class="level4">
1520 В этот момент вы должны быть способны запустить <strong>ngspice</strong>. Свою установку
1521 можно проверить, попробовав обработать одну из тестовых схем из каталога с
1522 тестами. Я рекомендую запустить тест <em><code>TransImpedanceAmp</code></em>, так как в
1523 нём проверяется функциональность SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a>.
1524 </p>
1526 </div>
1528 <h4 id="использование_ngspice">Использование ngspice</h4>
1529 <div class="level4">
1532 Запуск <strong>ngspice</strong> очень прост. В приглашении командной строки Unix введите
1533 команду:
1534 </p>
1535 <pre class="code">user@host:~$ ngspice filename.net</pre>
1538 и <strong>ngspice</strong> загрузит список соединений SPICE <em><code>filename.net</code></em> в своё
1539 рабочее пространство и выведет своё приглашение командной строки. Вы можете
1540 запустить моделирование, сказав «run» (запуск). Результаты будут сохранены в
1541 массиве SPICE для дальнейшей печати на принтере или черчения на
1542 плоттере. Набор имеющихся в распоряжении команд приведён на странице
1543 <a href="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" class="urlextern" title="http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5" rel="nofollow">http://newton.ex.ac.uk/teaching/CDHW/Electronics2/userguide/sec5.html#5</a>.
1544 </p>
1547 Для использования кодовой модели SPICE 2 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> её
1548 нужно загрузить в <strong>ngspice</strong> <strong><em class="u">до</em></strong> загрузки списка соединений. (Если
1549 вы загрузите её после загрузки списка соединений, элементы
1550 <a href="geda-spice_polys.ru.html" class="wikilink1" title="geda-spice_polys.ru.html">POLY</a> в ней транслироваться не будут и потому не
1551 будут и правильно смоделированы.) Чтобы загрузить кодовую модель, в строке
1552 приглашения <strong>ngspice</strong> нужно просто сказать:
1553 </p>
1554 <pre class="code">codemodel /usr/local/geda/lib/spice/spice2poly.cm</pre>
1557 (укажите здесь местоположение своих кодовых моделей). Учтите, что для
1558 кодовой модели следует указать <strong>абсолютное имя файла</strong>; программа
1559 <strong>ngspice</strong> не настолько сообразительна, чтобы искать её в стандартных
1560 каталогах. (Также обратите внимание, что нужно указать путь к
1561 <em><code>spice2poly.cm</code></em> на своей машине; путь, указанный выше, — мой.)
1562 </p>
1565 Лучшим способом для считывания кодовой модели <em><code>spice2poly</code></em> будет
1566 включение её в файл инициализации <strong>ngspice</strong><em><code>spinit</code></em>. Файл
1567 инициализации находится в каталоге
1568 <em><code>/usr/local/geda/share/ng-spice-rework/scripts</code></em> (или где-то ещё, где у
1569 вас установлены файлы gEDA). В файле <em><code>spinit</code></em> можно задать и другие
1570 настройки для <strong>ngspice</strong>.
1571 </p>
1573 </div>
1574 <!-- EDIT29 SECTION "Ngspice" [88852-100774] -->
1575 <h3 class="sectionedit30" id="tclspice">Tclspice</h3>
1576 <div class="level3">
1579 Когда в 2002-м году основная ветка разработки <strong>ngspice</strong> впала в спячку,
1580 несколько товарищей из MultiGig Ltd. (<a href="http://www.multigig.com/" class="urlextern" title="http://www.multigig.com/" rel="nofollow">http://www.multigig.com/</a>) занялись
1581 разработкой ветки <strong>ngspice</strong>, которую они назвали <strong>tclspice</strong>.
1582 <strong>tclspice</strong> — это расширенный вариант <strong>ngspice</strong>, в котором множество
1583 команд SPICE экспортируется как <abbr title="Application Programming Interface">API</abbr> к Tcl. При этом преследуется цель
1584 облегчить написание скриптов для расчётов SPICE. Это очень мощное средство:
1585 для <strong>tclspice</strong> можно написать скрипт на Tcl, который запустит цикл,
1586 подстроит значения компонентов, запустит анализ, а затем рассчитает
1587 характеристики схемы с подстроенными компонентами, прежде чем запускать
1588 новый цикл. Очевидно, эту возможность можно использовать для выполнения
1589 автоматических, многомерных <a href="geda-glossary.ru.html#оптимизация_схемы" class="wikilink1" title="geda-glossary.ru.html">оптимизаций
1590 схемы</a>. Если проект будет завершён, <strong>tclspice</strong> возможно станет
1591 «приложением-убийцей» для САПР электроники с открытым исходным кодом.
1592 </p>
1594 </div>
1596 <h4 id="загрузка_установка_и_сборка_tclspice">Загрузка, установка и сборка tclspice</h4>
1597 <div class="level4">
1600 Домашняя страница проекта <strong>tclspice</strong> находится по адресу
1601 <a href="http://tclspice.sourceforge.net/" class="urlextern" title="http://tclspice.sourceforge.net/" rel="nofollow">http://tclspice.sourceforge.net/</a>. Исходные коды <strong>tclspice</strong> проживают
1602 по адресу <a href="http://sourceforge.net/projects/tclspice" class="urlextern" title="http://sourceforge.net/projects/tclspice" rel="nofollow">http://sourceforge.net/projects/tclspice</a>. Для загрузки и
1603 установки <strong>tclspice</strong> используются те же самые шаги, что подробно расписаны
1604 для <strong>ngspice</strong> выше. Так как <strong>tclspice</strong> является расширенным вариантом
1605 <strong>ngspice</strong>, то если нужно, из исходных текстов <strong>tclspice</strong> можно
1606 установить только <strong>ngspice</strong>. Сборка целого пакета потребует пары
1607 дополнительных шагов. Здесь я представлю последовательность шагов для
1608 сборки и <strong>ngspice</strong> (автономной программы с интерфейсом командной строки),
1609 и <abbr title="Application Programming Interface">API</abbr> для Tcl из исходных текстов <strong>tclspice</strong>.
1610 </p>
1613 Перед сборкой <strong>tclspice</strong> у вас уже должны быть установлены следующие пакеты:
1614 </p>
1615 <ul>
1616 <li class="level1"><div class="li"> TclX (у меня собирается с tclx8.3.5)</div>
1617 </li>
1618 <li class="level1"><div class="li"> tclreadline (у меня собирается с tclreadline-2.1.0)</div>
1619 </li>
1620 <li class="level1"><div class="li"> BLT for Tcl (у меня собирается с blt2.4z)</div>
1621 </li>
1622 <li class="level1"><div class="li"> Tcl/Tk (у меня собирается с 8.4.3.)</div>
1623 </li>
1624 </ul>
1627 Если на вашей Linux-машине эти пакеты ещё не установлены, их нужно найти и
1628 собрать. Обратите внимание, что сборка TclX требует наличия исходных текстов
1629 для Tcl и Tk, так что вам придётся также загрузить исходные тексты и этих
1630 пакетов, если они у вас ещё не установлены. У меня успешно работает Tcl/Tk
1631 8.4.3, хотя возможно будут работать и версии 8.3.X. Также, если вы хотите
1632 запускать SPICE в фоновом режиме, вам придётся перекомпилировать Tcl и Tk с
1633 разрешением поддержки нитей (thread), если она уже не была разрешена (в
1634 пакетах для RedHat — нет).
1635 </p>
1638 Будем считать, что вы уже загрузили и установили указанные выше
1639 дополнительные пакеты. Тогда для сборки на своей машине и <strong>ngspice</strong>, и <abbr title="Application Programming Interface">API</abbr>
1640 для Tcl, вам нужно предпринять следующее:
1641 </p>
1642 <pre class="code">user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --with-readline --prefix=/usr/local/geda
1643 user@host:~sources/&lt;tld&gt;$ make &amp;&amp; make install (этими командами собирается и устанавливается старый добрый ngspice)
1644 user@host:~sources/&lt;tld&gt;$ ./configure --enable-xspice --prefix=/usr/local/geda --enable-tcl --enable-experimental --disable-shared
1645 user@host:~sources/&lt;tld&gt;$ make tcl &amp;&amp; make install-tcl</pre>
1648 Как обычно для установки пакетов в общедоступный каталог скорее всего вам
1649 понадобятся права суперпользователя, в таком случае нужно сделать так:
1650 </p>
1651 <pre class="code">user@host:~sources/&lt;tld&gt;$ su -c make install
1652 user@host:~sources/&lt;tld&gt;$ su -c make install-tcl</pre>
1655 Теперь всё готово для написания скриптов на Tcl, включающих команды SPICE.
1656 Информация об использовании <strong>tclspice</strong> приведена ниже. Наконец, если вам
1657 интересно попрограммировать <strong>tclspice</strong> (и даже если нет), будет неплохо
1658 прочитать файл <em><code>NOTES</code></em>, находящийся в корневом каталоге исходников, в
1659 котором можно найти пару полезных советов.
1660 </p>
1662 </div>
1664 <h4 id="использование_tclspice">Использование tclspice</h4>
1665 <div class="level4">
1668 <strong>tclspice</strong> разработан для экспорта команд SPICE в программы на Tcl. Чтобы
1669 использовать <strong>tclspice</strong>, в начале своей программы на Tcl нужно просто
1670 сказать <code>package require spice</code>. После этого, чтобы запустить команду
1671 SPICE, при её вызове надо просто задать пространство имён <code>spice</code>. Как
1672 пример приведём программу на Tcl, которая прочитает список соединений SPICE,
1673 прикажет сделать <a href="geda-glossary.ru.html#временной_анализ" class="wikilink1" title="geda-glossary.ru.html">временной анализ</a>, запустит
1674 моделирование, а затем начертит график напряжения для соединения <em>Vout</em> за
1675 указанное время:
1676 </p>
1677 <pre class="code">#! tclsh
1678 package require spice
1679 spice::codemodel /usr/local/src/tclspice-0.2.12/src/xspice/icm/spice2poly.cm
1680 spice::source netlistname.cir
1681 spice::tran 0.1ns 40ns
1682 spice::run
1683 spice::plot Vout
1684 puts &quot;Всё готово!&quot;</pre>
1687 Обратите внимание, что поскольку <strong>tclspice</strong> не читает инициализационный
1688 файл <strong>ngspice</strong> <em><code>spinit</code></em>, любые команды инициализации вам придётся
1689 задавать непосредственно в программе на Tcl. Например, в вышеприведённом
1690 примере мы читаем кодовую модель <code>spice2poly</code> непосредственно в рабочее
1691 пространство. Доступно и много других команд; полный набор команд
1692 <strong>tclspice</strong> приводится на странице
1693 <a href="http://tclspice.sourceforge.net/docs/tclspice_com.html" class="urlextern" title="http://tclspice.sourceforge.net/docs/tclspice_com.html" rel="nofollow">http://tclspice.sourceforge.net/docs/tclspice_com.html</a>.
1694 </p>
1696 </div>
1698 <h4 id="проблемы_в_tclspice">Проблемы в tclspice</h4>
1699 <div class="level4">
1702 Главная проблема <strong>tclspice</strong> (унаследованная от <strong>ngspice</strong>) — утечки
1703 памяти. Поэтому время моделирования в ней ограничено. Это значит, что если
1704 вы хотите сделать оптимизацию, многократно повторив цикл моделирования для
1705 схемы, память может быть исчерпана прежде, чем программа закончит
1706 оптимизацию. Это известная проблема в <strong>tclspice</strong> и сейчас затрачиваются
1707 большие усилия для того, чтобы утечки заткнуть.
1708 </p>
1711 Между тем для осуществления длительной оптимизации существуют кое-какие
1712 обходные пути, которые можно использовать для проектов среднего размера. Я
1713 применял один способ, состоящий в том, что после каждого анализа схемы
1714 оптимизатор записывает данные своего текущего состояния в файл и из этого же
1715 файла читает данные своего исходного состояния. Оптимизатор также сохраняет
1716 текущий перечень лучших вариантов компонентов в другой файл и читает этот
1717 файл при каждом запуске оптимизации. К тому же у меня есть программа на Tcl
1718 под названием <strong>TaskMgr.tcl</strong>, работающая циклически; при каждой итерации
1719 цикла она порождает дочерний процесс для запуска оптимизатора. Между тем
1720 родительский процесс ожидает 5 минут (эвристически найденное время), а
1721 затем, прежде чем повторять цикл и запускать оптимизатор снова, выдаёт
1722 дочернему процессу сигнал «KILL». Таким образом оптимизатор никогда не
1723 работает настолько долго, чтобы съесть всю память на моей машине. Вот
1724 собственно сама программа <strong>TaskMgr.tcl</strong>:
1725 </p>
1726 <pre class="code">#! tclsh
1727 package require Tclx
1728 while {1} {
1729 set PID [fork]
1730 if {$PID} {
1731 # Родительский процесс
1732 after 300000
1733 puts &quot;Собираюсь убить дочерний процесс PID = $PID . . . .&quot;
1734 kill $PID
1735 wait $PID
1736 } else {
1737 # Дочерний процесс
1738 source Optimize.tcl
1739 # Если мы вдруг когда-нибудь пройдём через всё это, можем выдать следующее:
1740 error &quot;Мы закончили!!!!!!&quot;
1742 }</pre>
1745 Заметьте, что для запуска <strong>tclspice</strong> программе <strong>TaskMgr.tcl</strong> требуется,
1746 чтобы пакет <strong>TclX</strong> уже был установлен. Может быть вам следует также задать
1747 другое время ожидания в зависимости от объёма памяти и скорости вашей
1748 машины. Наконец, родительскому процессу придётся следить и за $PID (с
1749 помощью <code>wait</code>), так как когда дочерний процесс умрёт, нужно чтобы и его
1750 труп был выкинут из списка задач ядра. Иначе работа оптимизатора приведёт к
1751 порождению целой толпы процессов-зомби, подстерегающих вас на вашей машине
1752 за каждым углом, — длительная оптимизация может превратить вашу систему в
1753 «ночь живой смерти»!
1754 </p>
1757 Такой метод ограничения времени для дочернего процесса предпочтителен в том
1758 случае, когда одиночный анализ занимает относительно немного времени по
1759 сравнению с временем, требуемым для съедания всей памяти машины. Если же
1760 время анализа сопоставимо со временем съедания всей памяти, то лучше
1761 заставить родительский процесс следить за состоянием анализа, запустить
1762 одиночный анализ, а затем заставить этот анализ завершаться после каждой
1763 итерации. Предпочтителен ли такой вариант, зависит от размера и сложности
1764 вашего проекта; может быть вам следует поэкспериментировать со своим
1765 анализом, чтобы узнать, как долго он длится и сколько потребляет памяти. Я
1766 нашёл, что анализ для проекта из шести операционных усилителей (с
1767 соответствующими моделями поставщиков) и пятидесяти или около того пассивных
1768 элементов на PIII 333MHz c 128MB RAM будет длиться менее 10 секунд. Поэтому,
1769 чтобы одиночный анализ съел значительное количество памяти, ваш проект
1770 должен быть довольно большим.
1771 </p>
1773 </div>
1774 <!-- EDIT30 SECTION "Tclspice" [100775-114397] -->
1775 <h2 class="sectionedit31" id="приложение_a_поддерживаемые_компоненты_и_их_атрибуты">Приложение A. Поддерживаемые компоненты и их атрибуты</h2>
1776 <div class="level2">
1779 В таблице 1 представлены устройства и связанные с ними атрибуты,
1780 используемые драйвером <strong>spice-sdb</strong>. <strong>Необходимые</strong> атрибуты выделены
1781 <strong>жирным шрифтом</strong>, прочие указаны обычным. Заметьте, что атрибут <code>device</code>
1782 невидим и обычно прикрепляется к символу при его создании. Другие атрибуты
1783 прикрепляются к символу в <strong>gschem</strong> при разработке схемы.
1784 </p>
1787 Если вы имеете дело только с простыми активными компонентами (диодами,
1788 транзисторами) при наличии их моделей SPICE в виде файлов, то нужно задать
1789 только атрибуты <code>model-name</code> и <code>file</code>; атрибут <code>model</code> задавать не
1790 нужно. Но если для вашего простого активного компонента есть однострочная
1791 SPICE-модель, которую хотелось бы ввести непосредственно в схеме, тогда
1792 задайте атрибуты <code>model</code> и <code>model-name</code>; атрибут <code>file</code> задавать не
1793 нужно.
1794 </p>
1797 <strong>Таблица 1.</strong> Атрибуты, необходимые для создания списка соединений SPICE
1798 </p>
1799 <div class="table sectionedit32"><table class="inline">
1800 <thead>
1801 <tr class="row0">
1802 <th class="col0 centeralign"> <code>device</code> </th><th class="col1 centeralign"> <code>refdes</code> </th><th class="col2 centeralign"> <code>value</code> </th><th class="col3 centeralign"> <code>model</code> </th><th class="col4 centeralign"> <code>file</code> </th><th class="col5 centeralign"> <code>model-name</code> </th><th class="col6 centeralign"> <code>type</code> </th><th class="col7 centeralign"> Комментарий </th>
1803 </tr>
1804 </thead>
1805 <tr class="row1">
1806 <td class="col0"><strong>RESISTOR</strong></td><td class="col1 centeralign"> <strong>R?</strong> </td><td class="col2 centeralign"> <strong>(4)</strong> </td><td class="col3 centeralign"> (2) </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> Название модели </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (11) </td>
1807 </tr>
1808 <tr class="row2">
1809 <td class="col0"><strong>CAPACITOR</strong></td><td class="col1 centeralign"> <strong>C?</strong> </td><td class="col2 centeralign"> <strong>(4)</strong> </td><td class="col3 centeralign"> (3) </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> Название модели </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (11) </td>
1810 </tr>
1811 <tr class="row3">
1812 <td class="col0"><strong>POLARIZED_CAPACITOR</strong></td><td class="col1 centeralign"> <strong>C?</strong> </td><td class="col2 centeralign"> <strong>(4)</strong> </td><td class="col3 centeralign"> (3) </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> Название модели </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (11) </td>
1813 </tr>
1814 <tr class="row4">
1815 <td class="col0"><strong>INDUCTOR</strong></td><td class="col1 centeralign"> <strong>L?</strong> </td><td class="col2 centeralign"> <strong>(4)</strong> </td><td class="col3 centeralign"> (3) </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> Название модели </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (11) </td>
1816 </tr>
1817 <tr class="row5">
1818 <td class="col0"><strong>SPICE-ccvs</strong></td><td class="col1 centeralign"> <strong>H?</strong> </td><td class="col2 centeralign"> <strong>(5)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Источник напряжения,<br/>
1819 управляемый током </td>
1820 </tr>
1821 <tr class="row6">
1822 <td class="col0"><strong>SPICE-cccs</strong></td><td class="col1 centeralign"> <strong>F?</strong> </td><td class="col2 centeralign"> <strong>(5)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Источник тока,<br/>
1823 управляемый током </td>
1824 </tr>
1825 <tr class="row7">
1826 <td class="col0"><strong>SPICE-vcvs</strong></td><td class="col1 centeralign"> <strong>E?</strong> </td><td class="col2 centeralign"> <strong>(5)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Источник напряжения,<br/>
1827 управляемый напряжением </td>
1828 </tr>
1829 <tr class="row8">
1830 <td class="col0"><strong>SPICE-vccs</strong></td><td class="col1 centeralign"> <strong>G?</strong> </td><td class="col2 centeralign"> <strong>(5)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Источник тока,<br/>
1831 управляемый напряжением </td>
1832 </tr>
1833 <tr class="row9">
1834 <td class="col0"><strong>SPICE-nullor</strong></td><td class="col1 centeralign"> <strong>N?</strong> </td><td class="col2 centeralign"> <strong>(15)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 leftalign"> </td>
1835 </tr>
1836 <tr class="row10">
1837 <td class="col0"><strong>DIODE</strong></td><td class="col1 centeralign"> <strong>D?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1838 </tr>
1839 <tr class="row11">
1840 <td class="col0"><strong>PMOS_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>M?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1841 </tr>
1842 <tr class="row12">
1843 <td class="col0"><strong>NMOS_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>M?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1844 </tr>
1845 <tr class="row13">
1846 <td class="col0"><strong>PNP_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>Q?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1847 </tr>
1848 <tr class="row14">
1849 <td class="col0"><strong>NPN_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>Q?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1850 </tr>
1851 <tr class="row15">
1852 <td class="col0"><strong>PFET_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>J?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1853 </tr>
1854 <tr class="row16">
1855 <td class="col0"><strong>NFET_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>J?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1856 </tr>
1857 <tr class="row17">
1858 <td class="col0"><strong>MESFET_TRANSISTOR</strong></td><td class="col1 centeralign"> <strong>B?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла модели </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1859 </tr>
1860 <tr class="row18">
1861 <td class="col0"><strong>IC</strong></td><td class="col1 centeralign"> <strong>U?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 leftalign"> </td><td class="col4 centeralign"> Имя файла <em><code>.model</code></em> </td><td class="col5 centeralign"> <strong>Название модели</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Для ИС с файлом<br/>
1862 <em><code>.model</code></em> </td>
1863 </tr>
1864 <tr class="row19">
1865 <td class="col0"><strong>IC</strong></td><td class="col1 centeralign"> <strong>X?</strong> </td><td class="col2 centeralign"> Тип прибора </td><td class="col3 leftalign"> </td><td class="col4 centeralign"> Имя файла <em><code>.subckt</code></em> </td><td class="col5 centeralign"> <strong>Название .subckt</strong> </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Для ИС с файлом<br/>
1866 <em><code>.subckt</code></em> </td>
1867 </tr>
1868 <tr class="row20">
1869 <td class="col0"><strong>model</strong></td><td class="col1 centeralign"> <strong>A?</strong> </td><td class="col2 centeralign"> - </td><td class="col3 centeralign"> Однострочная SPICE-модель </td><td class="col4 centeralign"> Имя файла <em><code>.model</code></em> </td><td class="col5 centeralign"> <strong>(9)</strong> </td><td class="col6 centeralign"> <strong>(10)</strong> </td><td class="col7 centeralign"> (12) </td>
1870 </tr>
1871 <tr class="row21">
1872 <td class="col0"><strong>include</strong></td><td class="col1 centeralign"> <strong>A?</strong> </td><td class="col2 centeralign"> - </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> <strong>Имя файла <em><code>.include</code></em></strong> </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (13) </td>
1873 </tr>
1874 <tr class="row22">
1875 <td class="col0"><strong>options</strong></td><td class="col1 centeralign"> <strong>A?</strong> </td><td class="col2 centeralign"> <strong>(8)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (14) </td>
1876 </tr>
1877 <tr class="row23">
1878 <td class="col0"><strong>directive</strong></td><td class="col1 centeralign"> <strong>A?</strong> </td><td class="col2 centeralign"> <strong>(1)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> (12) </td>
1879 </tr>
1880 <tr class="row24">
1881 <td class="col0"><strong>VOLTAGE_SOURCE</strong></td><td class="col1 centeralign"> <strong>V?</strong> </td><td class="col2 centeralign"> <strong>(6)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Независимый<br/>
1882 источник напряжения </td>
1883 </tr>
1884 <tr class="row25">
1885 <td class="col0"><strong>CURRENT_SOURCE</strong></td><td class="col1 centeralign"> <strong>I?</strong> </td><td class="col2 centeralign"> <strong>(7)</strong> </td><td class="col3 centeralign"> - </td><td class="col4 centeralign"> - </td><td class="col5 centeralign"> - </td><td class="col6 centeralign"> - </td><td class="col7 centeralign"> Независимый<br/>
1886 источник тока </td>
1887 </tr>
1888 </table></div>
1889 <!-- EDIT32 TABLE [115991-119740] -->
1891 (1) Одна строка, содержащая операторы SPICE для включения в список соединений<br/>
1893 (2) Одна строка параметров SPICE-модели (например, <code>TC</code> и т. д.)<br/>
1895 (3) Одна строка параметров SPICE-модели (например, <code>IC</code>, <code>POLY</code> и т. д.)<br/>
1897 (4) Числовое значение компонента<br/>
1899 (5) Строка, описывающая режим источника<br/>
1901 (6) Однострочное описание, содержащее режим источника напряжения<br/>
1903 (7) Однострочное описание, содержащее режим источника тока<br/>
1905 (8) Строка подключаемых ключей<br/>
1907 (9) Название модели, на которую указывают компоненты<br/>
1909 (10) Соответствующий тип SPICE-модели (допустимые типы приведены ниже)<br/>
1911 (11) Параметры модели помещаются внутри скобок после значения компонента<br/>
1913 (12) Для моделирования нужно включить или модель, или файл<br/>
1915 (13) Помещает директиву <code>.INCLUDE</code> в список соединений SPICE<br/>
1917 (14) Помещает директиву <code>.OPTIONS</code> в список соединений SPICE<br/>
1919 (15) Достаточно высокий коэффициент усиления, например, 1000Meg; не обязательно задавать в последних версиях geda-gaf (с версии 1.9.2)
1920 </p>
1923 Выражение «поддерживаемый генератором списка соединений» означает, что
1924 существует соответствующий кусок кода на Scheme, который точно знает как эти
1925 компоненты обрабатывать и (почти) наверняка сгенерирует правильный код
1926 SPICE. Символы с такими атрибутами <code>device</code>, которых нет в
1927 вышеприведённом списке, обрабатываются функцией Scheme
1928 <code>spice-sdb:write-default-component</code>, которая для принятия решения о том,
1929 как обрабатывать данный компонент, смотрит на его позиционное
1930 обозначение. Как правило, при создании кода SPICE эта функция сделает «то,
1931 что надо», но твёрдой гарантии нет. В частности, эта функция не увидит
1932 различия между транзисторами типов N и P и для строки <code>.MODEL</code> в списке
1933 соединений будет генерировать тип <em>&lt;unknown&gt;</em> (неизвестный). Вероятно это
1934 вызовет ругань программы моделирования. Поэтому лучше всего убедиться, что
1935 для всех используемых устройств задан надлежащий атрибут <code>device</code>.
1936 </p>
1938 </div>
1939 <!-- EDIT31 SECTION "Приложение A. Поддерживаемые компоненты и их атрибуты" [114398-122991] -->
1940 <h2 class="sectionedit33" id="приложение_b_допустимые_значения_type">Приложение B. Допустимые значения «type»</h2>
1941 <div class="level2">
1944 Атрибут <code>type</code> указывает SPICE-процессору тип компонента и подготавливает
1945 его для принятия параметров модели, специфичных для данного типа.
1946 Допустимые значения атрибута <code>type</code> указаны в таблице 2.
1947 </p>
1950 <strong>Таблица 2.</strong> Допустимые значения атрибута <code>type</code> компонентов.
1951 </p>
1952 <div class="table sectionedit34"><table class="inline">
1953 <thead>
1954 <tr class="row0">
1955 <th class="col0 centeralign"> Компонент </th><th class="col1 centeralign"> type </th><th class="col2 centeralign"> Комментарий </th>
1956 </tr>
1957 </thead>
1958 <tr class="row1">
1959 <td class="col0 leftalign">RESISTOR </td><td class="col1 centeralign"> RES </td><td class="col2">Резистор </td>
1960 </tr>
1961 <tr class="row2">
1962 <td class="col0 leftalign">CAPACITOR </td><td class="col1 centeralign"> CAP </td><td class="col2">Конденсатор </td>
1963 </tr>
1964 <tr class="row3">
1965 <td class="col0 leftalign">POLARIZED_CAPACITOR </td><td class="col1 centeralign"> CAP </td><td class="col2">Полярный конденсатор </td>
1966 </tr>
1967 <tr class="row4">
1968 <td class="col0 leftalign">INDUCTOR </td><td class="col1 centeralign"> IND </td><td class="col2">Катушка индуктивности </td>
1969 </tr>
1970 <tr class="row5">
1971 <td class="col0 leftalign">DIODE </td><td class="col1 centeralign"> D </td><td class="col2">Диод </td>
1972 </tr>
1973 <tr class="row6">
1974 <td class="col0 leftalign">PMOS_TRANSISTOR </td><td class="col1 centeralign"> PMOS </td><td class="col2">pМОП-транзистор </td>
1975 </tr>
1976 <tr class="row7">
1977 <td class="col0 leftalign">NMOS_TRANSISTOR </td><td class="col1 centeralign"> NMOS </td><td class="col2">nМОП-транзистор </td>
1978 </tr>
1979 <tr class="row8">
1980 <td class="col0 leftalign">PNP_TRANSISTOR </td><td class="col1 centeralign"> PNP </td><td class="col2">Биполярный транзистор типа pnp </td>
1981 </tr>
1982 <tr class="row9">
1983 <td class="col0 leftalign">NPN_TRANSISTOR </td><td class="col1 centeralign"> NPN </td><td class="col2">Биполярный транзистор типа npn </td>
1984 </tr>
1985 <tr class="row10">
1986 <td class="col0 leftalign">PFET_TRANSISTOR </td><td class="col1 centeralign"> PJF </td><td class="col2">Полевой транзистор с управляющим pn-переходом с каналом p-типа </td>
1987 </tr>
1988 <tr class="row11">
1989 <td class="col0 leftalign">NFET_TRANSISTOR </td><td class="col1 centeralign"> NJF </td><td class="col2">Полевой транзистор с управляющим pn-переходом с каналом n-типа </td>
1990 </tr>
1991 <tr class="row12">
1992 <td class="col0 leftalign">MESFET_TRANSISTOR </td><td class="col1 centeralign"> - </td><td class="col2">Полевой транзистор с переходом металл – полупроводник </td>
1993 </tr>
1994 </table></div>
1995 <!-- EDIT34 TABLE [123537-124543] -->
1996 </div>
1997 <!-- EDIT33 SECTION "Приложение B. Допустимые значения «type»" [122992-] --><div class="footnotes">
1998 <div class="fn"><sup><a href="#fnt__14" id="fn__14" class="fn_bot">14)</a></sup>
1999 <div class="content">GNU Free Documentation
2000 License</div></div>
2001 <div class="fn"><sup><a href="#fnt__15" id="fn__15" class="fn_bot">15)</a></sup>
2002 <div class="content">Настоящий документ выпущен
2003 под Лицензией Свободной Документации GNU благодаря щедрости Electroniscript,
2004 inc. Его последнюю версию всегда можно найти на странице
2005 <a href="http://www.brorson.com/gEDA/HOWTO/" class="urlextern" title="http://www.brorson.com/gEDA/HOWTO/" rel="nofollow">http://www.brorson.com/gEDA/HOWTO/</a>.</div></div>
2006 <div class="fn"><sup><a href="#fnt__16" id="fn__16" class="fn_bot">16)</a></sup>
2007 <div class="content">Университет в Калифорнии, родина одной из ветвей Unix. — <em>Прим.
2008 перев.</em></div></div>
2009 </div>
2010 </body>
2011 </html>