gaf: Fix memory leak
[geda-gaf.git] / docs / wiki / geda-faq-gnetlist.ru.html
bloba8ee1fd6b9f2a3900964b458b13f65ca2fcb543e
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>
15 <a href="geda-faq-gnetlist.html" class="wikilink1" title="geda-faq-gnetlist.html">English</a>, <a href="geda-faq-gnetlist.fr.html" class="wikilink1" title="geda-faq-gnetlist.fr.html">Français</a>.
16 </p>
18 <h1 id="gnetlist">gnetlist</h1>
19 <div class="level1">
21 </div>
23 <h1 id="созданиеперечняэлементовbom">Создание перечня элементов (BOM)</h1>
24 <div class="level1">
26 <p>
27 Для <strong>gnetlist</strong> есть пять разных драйверов экспорта перечня элементов. Они
28 вызываются с помощью ключа <code>-g</code>, при этом ключом <code>-o</code> необходимо задать
29 имя выходного файла:
30 </p>
31 <pre class="code">gnetlist -g partslist3 -o output.bom schematic.sch</pre>
33 <p>
34 <strong>gnetlist</strong> спускается в листы подсхем и перечисляет их содержимое вместе с
35 компонентами из основного документа.
36 </p>
38 <p>
39 Для драйверов <strong>bom</strong> и <strong>bom2</strong> должен быть доступен на чтение локальный
40 файл <em><code>attribs</code></em>. В этом файле в виде отдельных строк должны содержаться
41 имена атрибутов, которые должны быть приведены в перечне. Например:
42 </p>
43 <pre class="code">value
44 footprint
45 description</pre>
47 <p>
48 Драйверы по-разному перечисляют и сортируют компоненты в текстовом файле.
49 Выберите тот, который вам больше нравится:
50 </p>
52 </div>
54 <h4 id="bom">bom</h4>
55 <div class="level4">
57 <p>
58 Драйверу <strong>bom</strong> нужен файл <em><code>attribs</code></em> (см. выше). В перечне,
59 произведённом с помощью <strong><code>-g bom</code></strong>, будет содержаться столько строк,
60 сколько имеется компонентов. Столбцы разделяются знаками табуляции. Строки
61 не сортируются.
62 </p>
64 </div>
66 <h4 id="bom2">bom2</h4>
67 <div class="level4">
69 <p>
70 Драйверу <strong>bom2</strong> также нужен файл <em><code>attribs</code></em>. С помощью <strong><code>-g
71 bom2</code></strong> одинаковые позиционные обозначения компонентов будут собраны в одну
72 строку. Столбцы разделяются двоеточиями. Несколько элементов в одном и том
73 же столбце разделяются запятыми.
74 </p>
76 </div>
78 <h4 id="partslist1">partslist1</h4>
79 <div class="level4">
81 <p>
82 Перечень, производимый драйвером <strong>partlist1</strong>, содержит строки для каждого
83 компонента. Строки сортируются в алфавитном порядке по позиционному
84 обозначению (<code>refdes</code>). Используются столбцы <code>refdes</code>, <code>device</code>,
85 <code>value</code>, <code>footprint</code> и <code>quantity</code>. Так как каждая строка содержит
86 только один компонент, количество (<code>quantity</code>) всегда равно <code>1</code>.
87 </p>
89 </div>
91 <h4 id="partslist2">partslist2</h4>
92 <div class="level4">
94 <p>
95 Данный драйвер производит вывод, подобный выводу <strong>partslist1</strong>. Строки
96 сортируются по значению атрибута <code>device</code>.
97 </p>
99 </div>
101 <h4 id="partslist3">partslist3</h4>
102 <div class="level4">
105 Драйвер <strong>partslist3</strong> собирает все компоненты с одинаковым значением в одну
106 строку, очень похоже на <strong>bom2</strong>. Строки сортируются по атрибутам <code>value</code>
107 и <code>device</code>. Четвёртый столбец сообщает количество компонентов в строке.
108 Столбцы разделяются знаками табуляции, элементы --- пробелами.
109 </p>
111 </div>
113 <h1 id="проверкасоответствияпроектнымнормамdrc">Проверка соответствия проектным нормам (DRC)</h1>
114 <div class="level1">
116 </div>
118 <h2 id="какмнепроверитьсвоисхемы">Как мне проверить свои схемы?</h2>
119 <div class="level2">
122 Можно проверять схемы с помощью драйвера <strong>drc2</strong> для <strong>gnetlist</strong>. Он
123 проверит схемы на предмет самых общих ошибок, таких как одинаковые
124 обозначения, неподключенные выводы, неиспользуемые <a href="geda-glossary.ru.html#секциякомпонента" class="wikilink1" title="geda-glossary.ru.html">секции многосекционных компонентов</a> и прочее.
125 </p>
128 Запустите драйвер <strong>drc2</strong> следующей командой:
129 </p>
130 <pre class="code">gnetlist -g drc2 -o MyDesign.drc MyDesign.sch</pre>
133 Вывод DRC (<a href="geda-glossary.ru.html#проверкасоответствияпроектнымнормам" class="wikilink1" title="geda-glossary.ru.html">проверки на соответствие проектным нормам</a>) записывается этой
134 командой в файл <em><code>MyDesign.drc</code></em>. Этот файл можно затем открыть в
135 текстовом редакторе и посмотреть предупреждения и ошибки DRC.
136 </p>
138 </div>
140 <h2 id="какувидетьвыводdrcнаэкранебеззаписивфайл">Как увидеть вывод DRC на экране, без записи в файл?</h2>
141 <div class="level2">
144 Запустите драйвер <strong>drc2</strong> следующей командой:
145 </p>
146 <pre class="code">gnetlist -g drc2 -o - MyDesign.sch</pre>
149 Вы увидите вывод DRC непосредственно на экране.
150 </p>
152 </div>
154 <h2 id="яхочузапретитьнекоторыеизпроверокdrcдлясхемкакэтосделать">Я хочу запретить некоторые из проверок DRC для схем. Как это сделать?</h2>
155 <div class="level2">
158 Драйвер <strong>drc2</strong> очень гибко настраивается. Вам нужно записать в файл
159 несколько специальных команд и вызвать <strong>gnetlist</strong> с ключом <code>-l</code>, задав
160 после него имя этого файла.
161 </p>
164 Наиболее общие команды:
165 </p>
166 <ul>
167 <li class="level1"><div class="li"> (define dont-check-non-numbered-parts 1) ;; Запретить проверку на ненумерованные компоненты</div>
168 </li>
169 <li class="level1"><div class="li"> (define dont-check-duplicated-references 1) ;; Запретить проверку на одинаковые обозначения</div>
170 </li>
171 <li class="level1"><div class="li"> (define dont-check-one-connection-nets 1) ;; Запретить проверку на соединения с одним единственным подключением</div>
172 </li>
173 <li class="level1"><div class="li"> (define dont-check-pintypes-of-nets 1) ;; Запретить проверку типа выводов</div>
174 </li>
175 <li class="level1"><div class="li"> (define dont-check-not-driven-nets 1) ;; Запретить проверку на соединения, не имеющие питающих подключений<sup><a href="#fn__4" id="fnt__4" class="fn_top">4)</a></sup></div>
176 </li>
177 <li class="level1"><div class="li"> (define dont-check-unconnected-pins 1) ;; Запретить проверку на неподключенные выводы</div>
178 </li>
179 <li class="level1"><div class="li"> (define dont-check-duplicated-slots 1) ;; Запретить проверку на дублирование секций многосекционных компонентов</div>
180 </li>
181 <li class="level1"><div class="li"> (define dont-check-unused-slots 1) ;; Запретить проверку на неиспользуемые секции многосекционных компонентов</div>
182 </li>
183 <li class="level1"><div class="li"> (define dont-check-slots 1) ;; Запретить проверку на количество секций многосекционных компонентов</div>
184 </li>
185 <li class="level1"><div class="li"> (define action-unused-slots #\w) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как предупреждение</div>
186 </li>
187 <li class="level1"><div class="li"> (define action-unused-slots #\e) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как ошибку</div>
188 </li>
189 <li class="level1"><div class="li"> (define action-unused-slots #\c) ;; Считать нормой наличие неиспользуемых секций многосекционных компонентов</div>
190 </li>
191 <li class="level1"><div class="li"> (define case_insensitive 1) ;; Все проверки производить без учёта регистра символов</div>
192 </li>
193 </ul>
196 Есть и несколько других продвинутых команд для изменения матрицы DRC и типов
197 выводов, которые можно считать питающими подключениями. Посмотрите файл
198 драйвера <em><code>gnet-drc2.scm</code></em> в текстовом редакторе. Там, в начале, есть
199 документация.
200 </p>
203 Скопируйте нужное вам из вышеуказанных строк в файл (например,
204 <em><code>drc_rules.txt</code></em>), причём каждая команда должна записываться отдельной
205 строкой, и запустите проверку:
206 </p>
207 <pre class="code">gnetlist -g drc2 -l drc_rules.txt -o MyDesign.drc MyDesign.sch</pre>
210 Вывод DRC (<a href="geda-glossary.ru.html#проверкасоответствияпроектнымнормам" class="wikilink1" title="geda-glossary.ru.html">проверки на соответствие проектным нормам</a>) записывается этой
211 командой в файл <em><code>MyDesign.drc</code></em>. Этот файл можно затем открыть в
212 текстовом редакторе и посмотреть предупреждения и ошибки DRC.
213 </p>
215 </div>
217 <h2 id="можноливключитьпроверкусоответствияпроектнымнормамвmakefileипринахожденииошибокилипредупрежденийостанавливатьобработку">Можно ли включить проверку соответствия проектным нормам в Makefile и при нахождении ошибок или предупреждений останавливать обработку?</h2>
218 <div class="level2">
221 Да. Драйвер <strong>drc2</strong> возвратит код ошибки, если есть ошибки или
222 предупреждения, поэтому можно добавить в свой <em><code>Makefile</code></em> следующее:
223 </p>
224 <pre class="code">$(objects).drc : $(objects).sch
225 gnetlist -g drc2 $(objects).sch -o $(objects).drc</pre>
228 Если вы собираетесь моделировать работу своей схемы, в Makefile можно
229 добавить следующее:
230 </p>
231 <pre class="code">$(objects).cir : $(objects).sch $(objects).drc
232 grep -v ERROR $(objects).drc &gt;/dev/null 2&gt;&amp;1
233 gnetlist -g spice-sdb $(objects).sch -o $(objects).cir</pre>
236 Если нет, возьмите вышеуказанный пример и адаптируйте его для используемого
237 вами рабочего процесса.
238 </p>
240 </div>
242 <h2 id="некоторыепредупреждениявыдаваемыедлямоегопроектамнеужеизвестныможнолисделатьтакчтобыонинеучитывалисьввозвращаемомзначении">Некоторые предупреждения, выдаваемые для моего проекта, мне уже известны. Можно ли сделать так, чтобы они не учитывались в возвращаемом значении?</h2>
243 <div class="level2">
246 Используйте ключ <code>-O ignore-warnings-in-return-value</code>:
247 </p>
248 <pre class="code">gnetlist -g drc2 -o - MyDesign.sch -O ignore-warnings-in-return-value</pre>
251 Будьте осторожны с этим! Вы вообще никаких предупреждений не увидите!
252 </p>
254 </div>
256 <h1 id="проблемысборкииработыgnetlist">Проблемы сборки и работы gnetlist</h1>
257 <div class="level1">
259 </div>
261 <h2 id="приработеgnetlistяполучаюошибкуparenthesismismatchнесоответствиескобокчтопроисходит">При работе gnetlist я получаю ошибку &quot;parenthesis mismatch&quot; (несоответствие скобок). Что происходит?</h2>
262 <div class="level2">
265 Начиная с <strong>Fedora Core 6</strong> и <strong>SuSE 10.2</strong>, многие пользователи сообщали об
266 ошибке, выглядящей подобным образом:
267 </p>
268 <pre class="code">$gnetlist -g spice-sdb -o TwoStageAmp.cir TwoStageAmp.sch
269 Command line passed = gnetlist -g spice-sdb -o TwoStageAmp.cir TwoStageAmp.sch
270 gEDA/gnetlist version 20061020
271 gEDA/gnetlist comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.
272 This is free software, and you are welcome to redistribute it under certain
273 conditions; please see the COPYING file for more details.
275 Remember to check that your schematic has no errors using the drc2 backend.
276 You can do it running &#039;gnetlist -g drc2 your_schematic.sch -o
277 drc_output.txt&#039; and seeing the contents of the file drc_output.txt.
279 Loading schematic [/home/nano/TwoStageAmp/TwoStageAmp.sch]
280 Probably parenthesis mismatch in /usr/share/gEDA/scheme/gnet-spice-sdb.scm
281 Most recently read form: (#@begin #&lt;unspecified&gt;)
282 ERROR: Unbound variable: spice-sdb</pre>
285 Эта проблема обнаруживается для нескольких драйверов <strong>gnetlist</strong>, включая
286 <strong>spice-sdb</strong> и <strong>drc2</strong>.
287 </p>
290 Это программная ошибка в <strong>guile-1.8.X</strong>. Разработчики gEDA работают над
291 исправлением. Пока попробуйте откатить <strong>guile</strong> к версии 1.6.7, которая,
292 как известно, работает с gEDA безупречно.
293 </p>
295 </div>
297 <h2 id="драйверgnetlistbomнеработаетвчёмдело">Драйвер gnetlist bom не работает. В чём дело?</h2>
298 <div class="level2">
301 Если при запуске <strong>gnetlist</strong> следующим образом
302 </p>
303 <pre class="code">gnetlist -g bom filename.sch</pre>
306 выводится сообщение об ошибке
307 </p>
308 <pre class="code">Loading schematic [filename.sch]
309 ERROR: In procedure open-file:
310 ERROR: No such file or directory: &quot;attribs&quot;</pre>
313 то вам нужно создать файл <em><code>attribs</code></em> в текущем каталоге, содержащий
314 атрибуты, которые вы хотите увидеть в bom-файле. Вот пример такого файла:
315 </p>
316 <pre class="code">device
317 value</pre>
320 Информацию по созданию BOM смотрите <a href="#созданиеперечняэлементовbom" title=":geda:faq-gnetlist.ru.txt ↵" class="wikilink1">
321 выше</a>.
322 </p>
324 </div>
326 <h2 id="некоторыедрайверыgnetlistприводяткпереполнениюстекакакэтоисправить">Некоторые драйверы gnetlist приводят к переполнению стека. Как это исправить?</h2>
327 <div class="level2">
330 Если при обработке определённой схемы большого размера некоторыми драйверами
331 вы получаете такое сообщение об ошибке
332 </p>
333 <pre class="code">ERROR: Stack overflow</pre>
336 добавьте следующее в файл <em><code>~/.gEDA/gnetlistrc</code></em> или локальный
337 <em><code>gnetlistrc</code></em> (в текущем рабочем каталоге):
338 </p>
339 <pre class="code">(debug-options (list &#039;stack 200000))
340 (eval-options (list &#039;stack 200000))</pre>
343 Если так не заработает, отредактируйте соответствующий драйвер (обычно с
344 названием <em><code>gnet-имя_драйвера.scm</code></em>) и добавьте вышеуказанные строки в
345 начало данного файла. Драйверы <strong>gnetlist</strong> можно найти в каталоге
346 <em><code>${prefix}/share/gEDA/scheme</code></em>. Также отправьте электронное письмо в
347 рассылку <em>geda-user</em>, чтобы напомнить разработчикам исправить
348 это. Запомните, прежде чем писать в <em>geda-user</em>, вам нужно подписаться на
349 этот список рассылки.
350 </p>
352 </div>
354 <h2 id="gnetlistсоздалсписоксоединенийсдублированнымивыводами">gnetlist создал список соединений с дублированными выводами!?</h2>
355 <div class="level2">
358 Было по крайней мере одно сообщение о следующей ошибке, выдаваемой <strong>pcb</strong>
359 после загрузки списка соединений, созданного с помощью <strong>gnetlist</strong>:
360 </p>
361 <pre class="code">28: Error! Element R117 pin 2 appears multiple times in the netlist file.
362 29: Error! Element C167 pin 2 appears multiple times in the netlist file.</pre>
365 Что здесь произошло? <strong>gnetlist</strong> (а в самом деле <strong>libgeda</strong>) создал два
366 соединения вместо одного. Это происходит, когда вывод присоединяется в точке
367 пересечения двух соединений. Заметьте, что пересекающиеся соединения не
368 подключены друг к другу. Это демонстрирует следующая схема:
369 </p>
372 <a href="media/geda/ambiguous1.ru.png" class="media" target="_blank" title="geda:ambiguous1.ru.png">geda:ambiguous1.ru.png</a>
373 </p>
376 Пока разработчики спорят, считать ли это ошибкой <strong>gnetlist</strong> или нет, вам
377 следует обеспечить, чтобы соединения, особенно там, где выводы подключаются
378 и к другим соединениям, были начерчены явно. Как вышеуказанные соединения
379 должны вычерчиваться, чтобы список соединений создавался правильно, показано
380 на этом рисунке:
381 </p>
384 <a href="media/geda/ambiguous1_fixed.ru.png" class="media" target="_blank" title="geda:ambiguous1_fixed.ru.png">geda:ambiguous1_fixed.ru.png</a>
385 </p>
387 </div>
388 <div class="footnotes">
389 <div class="fn"><sup><a href="#fnt__4" id="fn__4" class="fn_bot">4)</a></sup>
390 <div class="content">Питающими подключениями могут быть выводы питания, выходы и т. п. При данной проверке, например, недопустимыми окажутся соединения, подключенные только ко входным выводам. --- <em>Прим. перев.</em></div></div>
391 </div>
392 </body>
393 </html>