//Эта страница доступна также на следующих языках:// [[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}}