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. Он проверит схемы на предмет самых общих ошибок, таких как одинаковые обозначения, неподключенные выводы, неиспользуемые секции многосекционных компонентов и прочее.

Запустите драйвер drc2 следующей командой:

gnetlist -g drc2 -o MyDesign.drc MyDesign.sch

Этой командой указывается, что вывод DRC (проверки на соответствие проектным нормам) должен записываться в файл MyDesign.drc. Затем этот файл можно открыть в текстовом редакторе и посмотреть предупреждения и ошибки DRC.

Как увидеть вывод DRC на экране, без записи в файл?

Запустите драйвер drc2 следующей командой:

gnetlist -g drc2 -o - MyDesign.sch

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

Я хочу запретить некоторые из проверок DRC для схем. Как это сделать?

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

Наиболее общие команды:

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

Скопируйте нужное вам из вышеуказанных строк в файл (например, drc_rules.txt), причём каждая команда должна записываться отдельной строкой, и запустите проверку:

gnetlist -g drc2 -l drc_rules.txt -o MyDesign.drc MyDesign.sch

Вывод DRC записывается этой командой в файл MyDesign.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 #<unspecified>)
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 смотрите выше.

Некоторые драйверы 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) создал два соединения вместо одного. Это происходит, когда вывод присоединяется в точке пересечения двух соединений. Заметьте, что пересекающиеся соединения не подключены друг к другу. Это демонстрирует следующая схема:

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

1) Питающими подключениями могут быть выводы питания, выходы и т. п. При данной проверке, например, недопустимыми окажутся соединения, подключенные только ко входным выводам. — Прим. перев.