//Эта страница доступна также на следующих языках://
[[faq-gnetlist|English]], [[faq-gnetlist.fr|Français]].
====== gnetlist ======
====== Создание перечня элементов (BOM) ======
Для **gnetlist** есть пять разных драйверов экспорта перечня элементов. Они
вызываются с помощью ключа ''-g'', при этом ключом ''-o'' необходимо задать
имя выходного файла:
gnetlist -g partslist3 -o output.bom schematic.sch
**gnetlist** спускается в листы подсхем и перечисляет их содержимое вместе с
компонентами из основного документа.
Для драйверов **bom** и **bom2** должен быть доступен на чтение локальный
файл //''attribs''//. В этом файле в виде отдельных строк должны содержаться
имена атрибутов, которые должны быть приведены в перечне. Например:
value
footprint
description
Драйверы по-разному перечисляют и сортируют компоненты в текстовом файле.
Выберите тот, который вам больше нравится:
=== bom ===
Драйверу **bom** нужен файл //''attribs''// (см. выше). В перечне,
произведённом с помощью **''-g bom''**, будет содержаться столько строк,
сколько имеется компонентов. Столбцы разделяются знаками табуляции. Строки
не сортируются.
=== bom2 ===
Драйверу **bom2** также нужен файл //''attribs''//. С помощью **''-g
bom2''** одинаковые позиционные обозначения компонентов будут собраны в одну
строку. Столбцы разделяются двоеточиями. Несколько элементов в одном и том
же столбце разделяются запятыми.
=== partslist1 ===
Перечень, производимый драйвером **partlist1**, содержит строки для каждого
компонента. Строки сортируются в алфавитном порядке по позиционному
обозначению (''refdes''). Используются столбцы ''refdes'', ''device'',
''value'', ''footprint'' и ''quantity''. Так как каждая строка содержит
только один компонент, количество (''quantity'') всегда равно ''1''.
=== partslist2 ===
Данный драйвер производит вывод, подобный выводу **partslist1**. Строки
сортируются по значению атрибута ''device''.
=== partslist3 ===
Драйвер **partslist3** собирает все компоненты с одинаковым значением в одну
строку, очень похоже на **bom2**. Строки сортируются по атрибутам ''value''
и ''device''. Четвёртый столбец сообщает количество компонентов в строке.
Столбцы разделяются знаками табуляции, элементы --- пробелами.
====== Проверка соответствия проектным нормам (DRC) ======
===== Как мне проверить свои схемы? =====
Можно проверять схемы с помощью драйвера **drc2** для **gnetlist**. Он
проверит схемы на предмет самых общих ошибок, таких как одинаковые
обозначения, неподключенные выводы, неиспользуемые [[geda:glossary.ru#Секция
компонента|секции многосекционных компонентов]] и прочее.
Запустите драйвер **drc2** следующей командой:
gnetlist -g drc2 -o MyDesign.drc MyDesign.sch
Вывод DRC ([[geda:glossary.ru#Проверка соответствия проектным
нормам|проверки на соответствие проектным нормам]]) записывается этой
командой в файл //''MyDesign.drc''//. Этот файл можно затем открыть в
текстовом редакторе и посмотреть предупреждения и ошибки DRC.
===== Как увидеть вывод DRC на экране, без записи в файл? =====
Запустите драйвер **drc2** следующей командой:
gnetlist -g drc2 -o - MyDesign.sch
Вы увидите вывод DRC непосредственно на экране.
===== Я хочу запретить некоторые из проверок DRC для схем. Как это сделать? =====
Драйвер **drc2** очень гибко настраивается. Вам нужно записать в файл
несколько специальных команд и вызвать **gnetlist** с ключом ''-l'', задав
после него имя этого файла.
Наиболее общие команды:
* (define dont-check-non-numbered-parts 1) ;; Запретить проверку на ненумерованные компоненты
* (define dont-check-duplicated-references 1) ;; Запретить проверку на одинаковые обозначения
* (define dont-check-one-connection-nets 1) ;; Запретить проверку на соединения с одним единственным подключением
* (define dont-check-pintypes-of-nets 1) ;; Запретить проверку типа выводов
* (define dont-check-not-driven-nets 1) ;; Запретить проверку на соединения, не имеющие питающих подключений((Питающими подключениями могут быть выводы питания, выходы и т. п. При данной проверке, например, недопустимыми окажутся соединения, подключенные только ко входным выводам. --- //Прим. перев.//))
* (define dont-check-unconnected-pins 1) ;; Запретить проверку на неподключенные выводы
* (define dont-check-duplicated-slots 1) ;; Запретить проверку на дублирование секций многосекционных компонентов
* (define dont-check-unused-slots 1) ;; Запретить проверку на неиспользуемые секции многосекционных компонентов
* (define dont-check-slots 1) ;; Запретить проверку на количество секций многосекционных компонентов
* (define action-unused-slots #\w) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как предупреждение
* (define action-unused-slots #\e) ;; Вывести сообщение о неиспользуемых секциях многосекционных компонентов как ошибку
* (define action-unused-slots #\c) ;; Считать нормой наличие неиспользуемых секций многосекционных компонентов
* (define case_insensitive 1) ;; Все проверки производить без учёта регистра символов
Есть и несколько других продвинутых команд для изменения матрицы DRC и типов
выводов, которые можно считать питающими подключениями. Посмотрите файл
драйвера //''gnet-drc2.scm''// в текстовом редакторе. Там, в начале, есть
документация.
Скопируйте нужное вам из вышеуказанных строк в файл (например,
//''drc_rules.txt''//), причём каждая команда должна записываться отдельной
строкой, и запустите проверку:
gnetlist -g drc2 -l drc_rules.txt -o MyDesign.drc MyDesign.sch
Вывод DRC ([[geda:glossary.ru#Проверка соответствия проектным
нормам|проверки на соответствие проектным нормам]]) записывается этой
командой в файл //''MyDesign.drc''//. Этот файл можно затем открыть в
текстовом редакторе и посмотреть предупреждения и ошибки DRC.
===== Можно ли включить проверку соответствия проектным нормам в Makefile и при нахождении ошибок или предупреждений останавливать обработку? =====
Да. Драйвер **drc2** возвратит код ошибки, если есть ошибки или
предупреждения, поэтому можно добавить в свой //''Makefile''// следующее:
$(objects).drc : $(objects).sch
gnetlist -g drc2 $(objects).sch -o $(objects).drc
Если вы собираетесь моделировать работу своей схемы, в Makefile можно
добавить следующее:
$(objects).cir : $(objects).sch $(objects).drc
grep -v ERROR $(objects).drc >/dev/null 2>&1
gnetlist -g spice-sdb $(objects).sch -o $(objects).cir
Если нет, возьмите вышеуказанный пример и адаптируйте его для используемого
вами рабочего процесса.
===== Некоторые предупреждения, выдаваемые для моего проекта, мне уже известны. Можно ли сделать так, чтобы они не учитывались в возвращаемом значении? =====
Используйте ключ ''-O ignore-warnings-in-return-value'':
gnetlist -g drc2 -o - MyDesign.sch -O ignore-warnings-in-return-value
Будьте осторожны с этим! Вы вообще никаких предупреждений не увидите!
====== Проблемы сборки и работы gnetlist ======
===== При работе gnetlist я получаю ошибку "parenthesis mismatch" (несоответствие скобок). Что происходит? =====
Начиная с **Fedora Core 6** и **SuSE 10.2**, многие пользователи сообщали об
ошибке, выглядящей подобным образом:
$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 #)
ERROR: Unbound variable: spice-sdb
Эта проблема обнаруживается для нескольких драйверов **gnetlist**, включая
**spice-sdb** и **drc2**.
Это программная ошибка в **guile-1.8.X**. Разработчики gEDA работают над
исправлением. Пока попробуйте откатить **guile** к версии 1.6.7, которая,
как известно, работает с gEDA безупречно.
===== Драйвер gnetlist bom не работает. В чём дело? =====
Если при запуске **gnetlist** следующим образом
gnetlist -g bom filename.sch
выводится сообщение об ошибке
Loading schematic [filename.sch]
ERROR: In procedure open-file:
ERROR: No such file or directory: "attribs"
то вам нужно создать файл //''attribs''// в текущем каталоге, содержащий
атрибуты, которые вы хотите увидеть в bom-файле. Вот пример такого файла:
device
value
Информацию по созданию BOM смотрите [[#Создание перечня элементов (BOM)|
выше]].
===== Некоторые драйверы gnetlist приводят к переполнению стека. Как это исправить? =====
Если при обработке определённой схемы большого размера некоторыми драйверами
вы получаете такое сообщение об ошибке
ERROR: Stack overflow
добавьте следующее в файл //''~/.gEDA/gnetlistrc''// или локальный
//''gnetlistrc''// (в текущем рабочем каталоге):
(debug-options (list 'stack 200000))
(eval-options (list 'stack 200000))
Если так не заработает, отредактируйте соответствующий драйвер (обычно с
названием //''gnet-имя_драйвера.scm''//) и добавьте вышеуказанные строки в
начало данного файла. Драйверы **gnetlist** можно найти в каталоге
//''${prefix}/share/gEDA/scheme''//. Также отправьте электронное письмо в
рассылку //geda-user//, чтобы напомнить разработчикам исправить
это. Запомните, прежде чем писать в //geda-user//, вам нужно подписаться на
этот список рассылки.
===== gnetlist создал список соединений с дублированными выводами!? =====
Было по крайней мере одно сообщение о следующей ошибке, выдаваемой **pcb**
после загрузки списка соединений, созданного с помощью **gnetlist**:
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.
Что здесь произошло? **gnetlist** (а в самом деле **libgeda**) создал два
соединения вместо одного. Это происходит, когда вывод присоединяется в точке
пересечения двух соединений. Заметьте, что пересекающиеся соединения не
подключены друг к другу. Это демонстрирует следующая схема:
{{:geda:ambiguous1.ru.png}}
Пока разработчики спорят, считать ли это ошибкой **gnetlist** или нет, вам
следует обеспечить, чтобы соединения, особенно там, где выводы подключаются
и к другим соединениям, были начерчены явно. Как вышеуказанные соединения
должны вычерчиваться, чтобы список соединений создавался правильно, показано
на этом рисунке:
{{:geda:ambiguous1_fixed.ru.png}}