<!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 >/dev/null 2>&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 я получаю ошибку "parenthesis mismatch" (несоответствие скобок). Что происходит?</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 'gnetlist -g drc2 your_schematic.sch -o drc_output.txt' 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 #<unspecified>) 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: "attribs"</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 ↵" 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 'stack 200000)) (eval-options (list '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>