Sophie

Sophie

distrib > Mageia > 5 > x86_64 > media > core-release > by-pkgid > f2f28f61487f3042d93877451f0a311f > files > 47

geda-docs-1.8.2-4.mga5.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
  <title></title>
  <link rel="stylesheet" media="screen" type="text/css" href="./style.css" />
  <link rel="stylesheet" media="screen" type="text/css" href="./design.css" />
  <link rel="stylesheet" media="print" type="text/css" href="./print.css" />

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>


<h1 class="sectionedit1696"><a name="gnetlist" id="gnetlist">gnetlist</a></h1>
<div class="level1">

</div>
<!-- EDIT1696 SECTION "gnetlist" [1-26] -->
<h1 class="sectionedit1697"><a name="создание_перечня_элементов_bom" id="создание_перечня_элементов_bom">Создание перечня элементов (BOM)</a></h1>
<div class="level1">

<p>
Для <a href="http://geda.seul.org/tools/gnetlist/index.html" class="urlextern" title="http://geda.seul.org/tools/gnetlist/index.html"  rel="nofollow">gnetlist</a> есть пять
разных драйверов экспорта перечня элементов. Они вызываются с помощью ключа
<code>-g</code>, при этом ключом <code>-o</code> необходимо задать имя выходного файла:
</p>
<pre class="code">gnetlist -g partslist3 -o output.bom schematic.sch</pre>

<p>
<strong>gnetlist</strong> спускается в листы подсхем и перечисляет их содержимое
вместе с компонентами из основного документа.
</p>

<p>
Для драйверов <strong>bom</strong> и <strong>bom2</strong> должен быть доступен на чтение локальный файл
<em><code>attribs</code></em>. В этом файле в виде отдельных строк должны содержаться
имена атрибутов, которые должны быть приведены в перечне. Например:
</p>
<pre class="code">value
footprint
description</pre>

<p>
Драйверы по-разному перечисляют и сортируют компоненты в текстовом файле.
Выберите тот, который вам больше нравится:
</p>

</div>

<h4><a name="bom" id="bom">bom</a></h4>
<div class="level4">

<p>
Драйверу <strong>bom</strong> нужен файл <em><code>attribs</code></em> (см. выше). В перечне,
произведённом с помощью <strong><code>-g bom</code></strong>, будет содержаться столько строк,
сколько имеется компонентов. Столбцы разделяются знаками табуляции. Строки не
сортируются.
</p>

</div>

<h4><a name="bom2" id="bom2">bom2</a></h4>
<div class="level4">

<p>
Драйверу <strong>bom2</strong> также нужен файл <em><code>attribs</code></em>. С помощью <strong><code>-g bom2</code></strong>
одинаковые позиционные обозначения компонентов будут собраны в одну строку.
Столбцы разделяются двоеточиями. Несколько элементов в одном и том же столбце
разделяются запятыми.
</p>

</div>

<h4><a name="partslist1" id="partslist1">partslist1</a></h4>
<div class="level4">

<p>
Перечень, производимый драйвером <strong>partlist1</strong>, содержит строки для каждого
компонента. Строки сортируются в алфавитном порядке по позиционному
обозначению (<code>refdes</code>). Используются столбцы <code>refdes</code>, <code>device</code>,
<code>value</code>, <code>footprint</code> и <code>quantity</code>. Так как каждая строка содержит только
один компонент, количество (<code>quantity</code>) всегда равно <code>1</code>.
</p>

</div>

<h4><a name="partslist2" id="partslist2">partslist2</a></h4>
<div class="level4">

<p>
Данный драйвер производит вывод, подобный выводу <strong>partslist1</strong>. Строки
сортируются по значению атрибута <code>device</code>.
</p>

</div>

<h4><a name="partslist3" id="partslist3">partslist3</a></h4>
<div class="level4">

<p>
Драйвер <strong>partslist3</strong> собирает все компоненты с одинаковым значением в одну
строку, очень похоже на <strong>bom2</strong>. Строки сортируются по атрибутам <code>value</code> и
<code>device</code>.  Четвёртый столбец сообщает количество компонентов в строке.
Столбцы разделяются знаками табуляции, элементы — пробелами.
</p>

</div>
<!-- EDIT1697 SECTION "Создание перечня элементов (BOM)" [27-3512] -->
<h1 class="sectionedit1698"><a name="проверка_соответствия_проектным_нормам_drc" id="проверка_соответствия_проектным_нормам_drc">Проверка соответствия проектным нормам (DRC)</a></h1>
<div class="level1">

</div>
<!-- EDIT1698 SECTION "Проверка соответствия проектным нормам (DRC)" [3513-3606] -->
<h2 class="sectionedit1699"><a name="как_мне_проверить_свои_схемы" id="как_мне_проверить_свои_схемы">Как мне проверить свои схемы?</a></h2>
<div class="level2">

<p>
Можно проверять схемы с помощью драйвера <strong>drc2</strong> для <strong>gnetlist</strong>. Он
проверит схемы на предмет самых общих ошибок, таких как одинаковые
обозначения, неподключенные выводы, неиспользуемые
<a href="geda-glossary.ru.html#секция_компонента" class="wikilink1" title="geda-glossary.ru.html">секции многосекционных компонентов</a> и прочее.
</p>

<p>
Запустите драйвер <strong>drc2</strong> следующей командой:
</p>
<pre class="code">gnetlist -g drc2 -o MyDesign.drc MyDesign.sch</pre>

<p>
Этой командой указывается, что вывод DRC
(<a href="geda-glossary.ru.html#проверка_соответствия_проектным_нормам" class="wikilink1" title="geda-glossary.ru.html">проверки на соответствие проектным нормам</a>)
должен записываться в файл
<em><code>MyDesign.drc</code></em>. Затем этот файл можно открыть в текстовом редакторе и
посмотреть предупреждения и ошибки DRC.
</p>

</div>
<!-- EDIT1699 SECTION "Как мне проверить свои схемы?" [3607-4774] -->
<h2 class="sectionedit1700"><a name="как_увидеть_вывод_drc_на_экране_без_записи_в_файл" id="как_увидеть_вывод_drc_на_экране_без_записи_в_файл">Как увидеть вывод DRC на экране, без записи в файл?</a></h2>
<div class="level2">

<p>
Запустите драйвер <strong>drc2</strong> следующей командой:
</p>
<pre class="code">gnetlist -g drc2 -o - MyDesign.sch</pre>

<p>
Вы увидите вывод DRC непосредственно на экране.
</p>

</div>
<!-- EDIT1700 SECTION "Как увидеть вывод DRC на экране, без записи в файл?" [4775-5091] -->
<h2 class="sectionedit1701"><a name="я_хочу_запретить_некоторые_из_проверок_drc_для_схем_как_это_сделать" id="я_хочу_запретить_некоторые_из_проверок_drc_для_схем_как_это_сделать">Я хочу запретить некоторые из проверок DRC для схем. Как это сделать?</a></h2>
<div class="level2">

<p>
Драйвер <strong>drc2</strong> очень гибко настраивается. Вам нужно записать в файл
несколько специальных команд и вызвать <strong>gnetlist</strong> с ключом <code>-l</code>, задав
после него имя этого файла.
</p>

<p>
Наиболее общие команды:
</p>
<ul>
<li class="level1"><div class="li"> (define dont-check-non-numbered-parts 1) ;; Запретить проверку на ненумерованные компоненты</div>
</li>
<li class="level1"><div class="li"> (define dont-check-duplicated-references 1) ;; Запретить проверку на одинаковые обозначения</div>
</li>
<li class="level1"><div class="li"> (define dont-check-one-connection-nets 1) ;; Запретить проверку на соединения с одним единственным подключением</div>
</li>
<li class="level1"><div class="li"> (define dont-check-pintypes-of-nets 1) ;; Запретить проверку типа выводов</div>
</li>
<li class="level1"><div class="li"> (define dont-check-not-driven-nets 1) ;; Запретить проверку на соединения, не имеющие питающих подключений<sup><a href="#fn__1" name="fnt__1" id="fnt__1" class="fn_top">1)</a></sup></div>
</li>
<li class="level1"><div class="li"> (define dont-check-unconnected-pins 1) ;; Запретить проверку на неподключенные выводы</div>
</li>
<li class="level1"><div class="li"> (define dont-check-duplicated-slots 1) ;; Запретить проверку на дублирование секций многосекционных компонентов</div>
</li>
<li class="level1"><div class="li"> (define dont-check-unused-slots 1) ;; Запретить проверку на неиспользуемые секции многосекционных компонентов</div>
</li>
<li class="level1"><div class="li"> (define dont-check-slots 1) ;; Запретить проверку на количество секций многосекционных компонентов</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\w) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как предупреждение</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\e) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как ошибку</div>
</li>
<li class="level1"><div class="li"> (define action-unused-slots #\c) ;; Считать нормой наличие неиспользуемых секций многосекционных компонентов</div>
</li>
<li class="level1"><div class="li"> (define case_insensitive 1) ;; Все проверки производить без учёта регистра символов</div>
</li>
</ul>

<p>
Есть и несколько других продвинутых команд для изменения матрицы DRC и типов
выводов, которые можно считать питающими подключениями. Посмотрите файл драйвера
<em><code>gnet-drc2.scm</code></em> в текстовом редакторе. Там, в начале, есть документация.
</p>

<p>
Скопируйте нужное вам из вышеуказанных строк в файл (например,
<em><code>drc_rules.txt</code></em>), причём каждая команда должна записываться отдельной
строкой, и запустите проверку:
</p>
<pre class="code">gnetlist -g drc2 -l drc_rules.txt -o MyDesign.drc MyDesign.sch</pre>

<p>
Вывод DRC записывается этой командой в файл <em><code>MyDesign.drc</code></em>. Этот файл
можно затем открыть в текстовом редакторе и посмотреть предупреждения и ошибки.
</p>

</div>
<!-- EDIT1701 SECTION "Я хочу запретить некоторые из проверок DRC для схем. Как это сделать?" [5092-9059] -->
<h2 class="sectionedit1702"><a name="можно_ли_включить_проверку_соответствия_проектным_нормам_в_makefile_и_при_нахождении_ошибок_или_предупреждений_останавливать_обработку" id="можно_ли_включить_проверку_соответствия_проектным_нормам_в_makefile_и_при_нахождении_ошибок_или_предупреждений_останавливать_обработку">Можно ли включить проверку соответствия проектным нормам в Makefile и при нахождении ошибок или предупреждений останавливать обработку?</a></h2>
<div class="level2">

<p>
Да. Драйвер <strong>drc2</strong> возвратит код ошибки, если есть ошибки или
предупреждения, поэтому можно добавить в свой <em><code>Makefile</code></em> следующее:
</p>
<pre class="code">$(objects).drc : $(objects).sch
          gnetlist -g drc2 $(objects).sch -o $(objects).drc</pre>

<p>
Если вы собираетесь моделировать работу своей схемы, в Makefile можно добавить
следующее:
</p>
<pre class="code">$(objects).cir : $(objects).sch $(objects).drc
          grep -v ERROR $(objects).drc &gt;/dev/null 2&gt;&amp;1
          gnetlist -g spice-sdb $(objects).sch  -o $(objects).cir</pre>

<p>
Если нет, возьмите вышеуказанный пример и адаптируйте его для
используемого вами рабочего процесса.
</p>

</div>
<!-- EDIT1702 SECTION "Можно ли включить проверку соответствия проектным нормам в Makefile и при нахождении ошибок или предупреждений останавливать обработку?" [9060-10180] -->
<h2 class="sectionedit1703"><a name="некоторые_предупреждения_выдаваемые_для_моего_проекта_мне_уже_известны_можно_ли_сделать_так_чтобы_они_не_учитывались_в_возвращаемом_значении" id="некоторые_предупреждения_выдаваемые_для_моего_проекта_мне_уже_известны_можно_ли_сделать_так_чтобы_они_не_учитывались_в_возвращаемом_значении">Некоторые предупреждения, выдаваемые для моего проекта, мне уже известны. Можно ли сделать так, чтобы они не учитывались в возвращаемом значении?</a></h2>
<div class="level2">

<p>
Используйте ключ <code>-O ignore-warnings-in-return-value</code>:
</p>
<pre class="code">gnetlist -g drc2 -o - MyDesign.sch -O ignore-warnings-in-return-value</pre>

<p>
Будьте осторожны с этим! Вы вообще никаких предупреждений не увидите!
</p>

</div>
<!-- EDIT1703 SECTION "Некоторые предупреждения, выдаваемые для моего проекта, мне уже известны. Можно ли сделать так, чтобы они не учитывались в возвращаемом значении?" [10181-10745] -->
<h1 class="sectionedit1704"><a name="проблемы_сборки_и_работы_gnetlist" id="проблемы_сборки_и_работы_gnetlist">Проблемы сборки и работы gnetlist</a></h1>
<div class="level1">

</div>
<!-- EDIT1704 SECTION "Проблемы сборки и работы gnetlist" [10746-10814] -->
<h2 class="sectionedit1705"><a name="при_работе_gnetlist_я_получаю_ошибку_parenthesis_mismatch_несоответствие_скобок__что_происходит" id="при_работе_gnetlist_я_получаю_ошибку_parenthesis_mismatch_несоответствие_скобок__что_происходит">При работе gnetlist я получаю ошибку &quot;parenthesis mismatch&quot; (несоответствие скобок). Что происходит?</a></h2>
<div class="level2">

<p>
Начиная с <strong>Fedora Core 6</strong> и <strong>SuSE 10.2</strong>, многие пользователи сообщали
об ошибке, выглядящей подобным образом:
</p>
<pre class="code">$gnetlist -g spice-sdb -o TwoStageAmp.cir TwoStageAmp.sch
Command line passed = gnetlist -g spice-sdb -o TwoStageAmp.cir TwoStageAmp.sch
gEDA/gnetlist version 20061020
gEDA/gnetlist comes with ABSOLUTELY NO WARRANTY; see COPYING for more details.
This is free software, and you are welcome to redistribute it under certain
conditions; please see the COPYING file for more details.

Remember to check that your schematic has no errors using the drc2 backend.
You can do it running &#039;gnetlist -g drc2 your_schematic.sch -o drc_output.txt&#039;
and seeing the contents of the file drc_output.txt.

Loading schematic [/home/nano/TwoStageAmp/TwoStageAmp.sch]
Probably parenthesis mismatch in /usr/share/gEDA/scheme/gnet-spice-sdb.scm
Most recently read form: (#@begin #&lt;unspecified&gt;)
ERROR: Unbound variable: spice-sdb</pre>

<p>
Эта проблема обнаруживается для нескольких драйверов <strong>gnetlist</strong>,
включая <strong>spice-sdb</strong> и <strong>drc2</strong>.
</p>

<p>
Это программная ошибка в <strong>guile-1.8.X</strong>. Разработчики gEDA работают над
исправлением. Пока попробуйте откатить <strong>guile</strong> к версии 1.6.7, которая, как
известно, работает с gEDA безупречно.
</p>

</div>
<!-- EDIT1705 SECTION "При работе gnetlist я получаю ошибку parenthesis mismatch (несоответствие скобок). Что происходит?" [10815-12460] -->
<h2 class="sectionedit1706"><a name="драйвер_gnetlist_bom_не_работает_в_чём_дело" id="драйвер_gnetlist_bom_не_работает_в_чём_дело">Драйвер gnetlist bom не работает. В чём дело?</a></h2>
<div class="level2">

<p>
Если при запуске <strong>gnetlist</strong> следующим образом
</p>
<pre class="code">gnetlist -g bom filename.sch</pre>

<p>
выводится сообщение об ошибке
</p>
<pre class="code">Loading schematic [filename.sch]
ERROR: In procedure open-file:
ERROR: No such file or directory: &quot;attribs&quot;</pre>

<p>
то вам нужно создать файл <em><code>attribs</code></em> в текущем каталоге, содержащий
атрибуты, которые вы хотите увидеть в bom-файле. Вот пример такого файла:
</p>
<pre class="code">device
value</pre>

<p>
Информацию по созданию BOM смотрите
<a href="#создание_перечня_элементов_bom" title=":geda:faq-gnetlist.ru.txt &crarr;" class="wikilink1"> выше</a>.
</p>

</div>
<!-- EDIT1706 SECTION "Драйвер gnetlist bom не работает. В чём дело?" [12461-13257] -->
<h2 class="sectionedit1707"><a name="некоторые_драйверы_gnetlist_приводят_к_переполнению_стека_как_это_исправить" id="некоторые_драйверы_gnetlist_приводят_к_переполнению_стека_как_это_исправить">Некоторые драйверы gnetlist приводят к переполнению стека. Как это исправить?</a></h2>
<div class="level2">

<p>
Если при обработке определённой схемы большого размера некоторыми драйверами вы
получаете такое сообщение об ошибке
</p>
<pre class="code">ERROR: Stack overflow</pre>

<p>
добавьте следующее в файл <em><code>~/.gEDA/gnetlistrc</code></em> или локальный
<em><code>gnetlistrc</code></em> (в текущем рабочем каталоге):
</p>
<pre class="code">(debug-options (list &#039;stack 200000))
(eval-options (list &#039;stack 200000))</pre>

<p>
Если так не заработает, отредактируйте соответствующий драйвер (обычно с
названием <em><code>gnet-имя_драйвера.scm</code></em>) и добавьте вышеуказанные строки в
начало данного файла. Драйверы <strong>gnetlist</strong> можно найти в каталоге
<em><code>${prefix}/share/gEDA/scheme</code></em>. Также отправьте электронное письмо в
рассылку <em>geda-user</em>, чтобы напомнить разработчикам исправить это. Запомните,
прежде чем писать в <em>geda-user</em>, вам нужно подписаться на этот список
рассылки.
</p>

</div>
<!-- EDIT1707 SECTION "Некоторые драйверы gnetlist приводят к переполнению стека. Как это исправить?" [13258-14669] -->
<h2 class="sectionedit1708"><a name="gnetlist_создал_список_соединений_с_дублированными_выводами" id="gnetlist_создал_список_соединений_с_дублированными_выводами">gnetlist создал список соединений с дублированными выводами!?</a></h2>
<div class="level2">

<p>
Было по крайней мере одно сообщение о следующей ошибке, выдаваемой <strong>pcb</strong>
после загрузки списка соединений, созданного с помощью <strong>gnetlist</strong>:
</p>
<pre class="code">28: Error! Element R117 pin 2 appears multiple times in the netlist file.
29: Error! Element C167 pin 2 appears multiple times in the netlist file.</pre>

<p>
Что здесь произошло? <strong>gnetlist</strong> (а в самом деле <strong>libgeda</strong>) создал два
соединения вместо одного. Это происходит, когда вывод присоединяется в точке
пересечения двух соединений. Заметьте, что пересекающиеся соединения не
подключены друг к другу. Это демонстрирует следующая схема:
</p>

<p>
<a href="media/geda/ambiguous1.ru.png" class="media" target="_blank" title="geda:ambiguous1.ru.png"><img src="media/geda/ambiguous1.ru.png" class="media" alt="" /></a>
</p>

<p>
Пока разработчики спорят, считать ли это ошибкой <strong>gnetlist</strong> или нет, вам
следует обеспечить, чтобы соединения, особенно там, где выводы подключаются и
к другим соединениям, были начерчены явно. Как вышеуказанные соединения должны
вычерчиваться, чтобы список соединений создавался правильно, показано на
этом рисунке:
</p>

<p>
<a href="media/geda/ambiguous1_fixed.ru.png" class="media" target="_blank" title="geda:ambiguous1_fixed.ru.png"><img src="media/geda/ambiguous1_fixed.ru.png" class="media" alt="" /></a>
</p>

</div>
<!-- EDIT1708 SECTION "gnetlist создал список соединений с дублированными выводами!?" [14670-] --><div class="footnotes">
<div class="fn"><sup><a href="#fnt__1" id="fn__1" name="fn__1" class="fn_bot">1)</a></sup> 
Питающими подключениями могут быть выводы питания, выходы и т. п. При данной проверке, например, недопустимыми окажутся соединения, подключенные только ко входным выводам. — <em>Прим. перев.</em></div>
</div>
</body>
</html>