This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
geda:gnetlist_ug.ru [2012/02/20 15:14] 127.0.0.1 external edit |
geda:gnetlist_ug.ru [2014/04/24 14:55] (current) vzh Updated using po4a |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | //Это руководство доступно также на следующих языках:// | ||
+ | [[gnetlist_ug|English]] | ||
====== Руководство пользователя gEDA gnetlist ====== | ====== Руководство пользователя gEDA gnetlist ====== | ||
- | Автор: Ales Hvezda | + | <note>The text of and illustrations in this document are licensed under a |
+ | //Creative Commons Attribution–Share Alike 3.0 Unported// license | ||
+ | ("CC-BY-SA"). An explanation of CC-BY-SA is available at | ||
+ | http://creativecommons.org/licenses/by-sa/3.0/ . The original authors of | ||
+ | this document designate the gEDA Project as the "Attribution Party" for | ||
+ | purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this | ||
+ | document or an adaptation of it, you must provide the URL for the original | ||
+ | version.</note> | ||
- | Настоящий документ выпущен под лицензией | + | ~~NOTOC~~ |
- | [[http://www.gnu.org/copyleft/fdl.html|GFDL]] | + | |
- | 21 сентября, 2003 г. | + | ===== Содержание ===== |
- | ===== Введение ===== | + | - [[geda:gnetlist_ug:introduction.ru|Введение]] |
- | В настоящем документе описывается использование **gnetlist**. Настоящий | + | - [[geda:gnetlist_ug:running_gnetlist.ru|Запуск gnetlist]] |
- | документ и **gnetlist** в целом находятся в состоянии альфа-версии, так что | + | - [[geda:gnetlist_ug:input_output_files.ru|Входные и выходные файлы]] |
- | имейте это в виду, когда будете использовать их для создания списков | + | - [[geda:gnetlist_ug:netlist_backends.ru|Драйверы списков соединений]] |
- | соединений. Каждому инженеру известно, что ни в коем случае не следует слепо | + | - [[geda:gnetlist_ug:basic_netlisting.ru|Создание простых списков соединений]] |
- | доверять программным средствам, полагая, что они всегда дают верный результат. | + | - [[geda:gnetlist_ug:hierarchy.ru|Иерархические схемы]] |
- | **gnetlist** определённо не является исключением из этого правила. Очень важно | + | - [[geda:gnetlist_ug:slotting.ru|Секции компонентов и их использование]] |
- | проверять **каждый** из создаваемых вами списков соединений. Как и большинство | + | - [[geda:gnetlist_ug:implicit_pins.ru|Неявные выводы]] |
- | программ (включая все программы в gEDA), **gnetlist** поставляется БЕЗ | + | - [[geda:gnetlist_ug:config.ru|Настройка gnetlist]] |
- | КАКИХ БЫ ТО НИ БЫЛО ГАРАНТИЙ. Я ненавижу, что приходится это говорить, но, | + | ==== Приложения ==== |
- | надеюсь, данное предупреждение удержит пользователя от мнения, что | + | - [[geda:gnetlist_ug:command_line.ru|Аргументы командной строки]] |
- | **gnetlist** создаёт идеальные списки соединений. Тем не менее, если вы | + | |
- | найдёте ошибку, дайте знать по адресу **ahvezda@geda.seul.org**.\\ | + | |
- | Настоящий документ очень сырой, так что посылайте все исправления на | + | |
- | **ahvezda@geda.seul.org** или заполните отчёт об ошибке на домашней странице | + | |
- | gEDA http://www.gpleda.org. Спасибо! | + | |
- | + | ||
- | ===== Обзор ===== | + | |
- | **gnetlist** --- это генератор списка соединений gEDA. Он принимает на | + | |
- | входе файлы схем и производит списки соединений. Список соединений является | + | |
- | текстовым представлением схемы. Это текстовое представление полностью | + | |
- | описывает все соединения между устройствами. Это означает, что все | + | |
- | подключения, относящиеся к одному соединению группируются вместе. Генератор | + | |
- | списка соединений обрабатывает также иерархически связанные схемы.\\ | + | |
- | **gnetlist** имеет очень гибкую архитектуру. Основная программа, написанная на | + | |
- | **C**, читает схему (используя подпрограммы из **libgeda**) и создаёт | + | |
- | внутреннее представление данных схемы. Это внутреннее представление дальше | + | |
- | обрабатывается низкоуровневыми модулями (драйверами), ответственными за | + | |
- | вывод списков соединений в различных форматах. Драйверы для | + | |
- | каждого формата написаны на языке **Scheme** (а конкретнее, на его | + | |
- | разновидности **Guile**). Данная архитектура не только допускает бесчисленное | + | |
- | количество форматов списков соединений, но и позволяет генератору списка | + | |
- | соединений создавать другие документы (например, | + | |
- | [[geda:glossary.ru#Перечень элементов|перечни элементов]]).\\ | + | |
- | С версии 20001006 **gnetlist** имеет драйверы на **Scheme** для поддержки | + | |
- | следующих форматов: | + | |
- | - **PCB** & **PCBboard** - формат списка соединений UNIX **PCB**. | + | |
- | - Формат списка соединений **Allegro** | + | |
- | - Формат списка соединений **BAE** | + | |
- | - **BOM** & **BOM2** - генератор перечня элементов (BOM) | + | |
- | - **DRC** - Запуск [[geda:glossary.ru#Проверка соответствия проектным нормам|проверки на соответствие проектным нормам]] | + | |
- | - **gEDA** - родной формат gEDA, используемый главным образом для тестирования | + | |
- | - Формат списка соединений **Gossip** | + | |
- | - Формат списка соединений **PADS** | + | |
- | - Формат списка соединений **ProtelII** | + | |
- | - [[geda:glossary.ru#SPICE]]-совместимый формат списка соединений | + | |
- | - Формат списка соединений **Tango** | + | |
- | - Код **Verilog** | + | |
- | - Код **VHDL** | + | |
- | - Формат списка соединений **VIPEC** | + | |
- | - Формат списка соединений **VAMS** - **VHDL-AMS** | + | |
- | + | ||
- | Этот список постоянно растёт. Несколько отсутствующих возможностей (на момент | + | |
- | версии 20001006): отсутствует поддержка шин, определение ошибок и сообщения о | + | |
- | них весьма ограничены,... и многое другое. | + | |
- | + | ||
- | ===== Установка ===== | + | |
- | Надеюсь, что программа **gnetlist** уже установлена на вашей машине. В данном документе | + | |
- | установка не описывается. Свою установку можно проверить запуском: | + | |
- | + | ||
- | <code>libgeda-config --version | + | |
- | gesym-config --version | + | |
- | which gnetlist | + | |
- | ldd `which gnetlist`</code> | + | |
- | + | ||
- | Первые две команды должны показать версии установленных программ (**libgeda** | + | |
- | и библиотеки символов), следующая команда должна выдать путь к бинарному файлу | + | |
- | **gnetlist**. Последняя команда (только на Unix-подобных операционных | + | |
- | системах, включающих утилиту **ldd** для вывода динамических зависимостей | + | |
- | исполняемых файлов или совместно используемых объектов) покажет библиотеки, | + | |
- | слинкованные с **gnetlist**; чтобы программа **gnetlist** могла запуститься, все | + | |
- | запрашиваемые библиотеки должны быть найдены. Если эти программы не выдают | + | |
- | ожидаемых результатов, скорее всего программы gEDA не установлены должным | + | |
- | образом. Для более подробной информации по установке программ gEDA | + | |
- | обратитесь к соответствующим документам INSTALL (поставляемым в дистрибутиве). | + | |
- | + | ||
- | ===== Запуск gnetlist ===== | + | |
- | Запуск **gnetlist** очень прост. У программы **gnetlist** простой интерфейс | + | |
- | командной строки, так что нет никакого докучного GUI для работы с ней :-). Для | + | |
- | получения списка аргументов командной строки запустите **''gnetlist -h''**.\\ | + | |
- | Для запуска **gnetlist** нужно указать два параметра: | + | |
- | * ''-g guile_procedure'' (определяет драйвер, который надо запустить для схем) | + | |
- | * ''filename.sch'' (определяет файлы схем) | + | |
- | + | ||
- | В командной строке можно указать несколько схем. По умолчанию для вывода | + | |
- | созданного списка соединений используется имя файла //''output.net''//. Можно | + | |
- | изменить это умолчание указанием ключа ''-o filename''.\\ | + | |
- | Немного примеров запуска **gnetlist**: | + | |
- | <code>gnetlist -g geda -o stack.net stack_1.sch</code> | + | |
- | + | ||
- | (выводит список соединений для схемы //''stack_1.sch''// в //''stack.net''//, | + | |
- | используя родной формат gEDA) | + | |
- | + | ||
- | Есть также несколько ключей для отладки. Первый из них --- это ключ ''-v'', | + | |
- | включающий режим вывода подробной информации. В этом режиме выводится большой | + | |
- | объём информации о том, что делает **gnetlist**, а также дамп внутреннего | + | |
- | представления данных. Ключ ''-i'', переводящий **gnetlist** в интерактивный | + | |
- | режим, очень полезен для отладки драйверов на **Scheme**, он | + | |
- | обычно не используется конечными пользователями.\\ | + | |
- | Для получения подробного списка аргументов командной строки обратитесь к | + | |
- | man-странице **gnetlist**. | + | |
- | + | ||
- | ===== Требования к схемам/символам ===== | + | |
- | Данный раздел описывает, что должно быть в схемах/символах, чтобы их можно | + | |
- | было использовать с **gnetlist**. Чтобы программа **gnetlist** работала корректно, и | + | |
- | схема, и поддерживаемые символы должны быть правильны. В основном это | + | |
- | требование относится к определению атрибутов. В системе gEDA атрибуты | + | |
- | повсюду используются для представления информации. Атрибуты --- это | + | |
- | единственный способ добавления информации для компонентов, соединений, выводов | + | |
- | и т.д.. Для получения более подробной информации об атрибутах, упомянутых в | + | |
- | данном документе, обратитесь к странице документации | + | |
- | [[gEDA:master_attributes_list.ru|Перечень основных атрибутов]]. | + | |
- | + | ||
- | + | ||
- | ==== Требования к символам ==== | + | |
- | * Все символы должны иметь атрибут ''device=''. | + | |
- | * Все выводы должны иметь атрибут ''pin#=#''. Этот атрибут со временем изменит форму, но сейчас он должен быть в виде ''pin#=#''. | + | |
- | * Также все выводы должны иметь атрибут ''pinlabel=''. | + | |
- | * Для символов, определяющих [[geda:glossary.ru#Многосекционный компонент|многосекционные компоненты]], состоящие из нескольких [[geda:glossary.ru#Секция компонента|секций]], необходим атрибут ''slot='', атрибут ''slot#=#'' для каждого элемента и атрибут ''numslots=#''. Разбивка на элементы также изменится в ближайшем будущем, но сейчас она должна описываться указанным способом. | + | |
- | * Для любых соединений питания и специальных соединений необходимо указать атрибуты ''net='' внутри символа. Для подробной информации обратитесь к [[geda:na_howto.ru|Мини-HOWTO по атрибуту net=]]. | + | |
- | * Можно добавить значения по умолчанию для различных параметров (это зависит от того, какой драйвер вы используете) воспользовавшись механизмом "выноса" атрибутов. Более подробная информация находится ниже, а также в документации по **gschem**. | + | |
- | * Если вы хотите, чтобы генератор списков соединений полностью игнорировал какие-то символы, используйте для них атрибут ''graphical=1''. | + | |
- | * Больше советов по символам можно найти в [[gEDA:gschem_symbol_creation.ru|Руководстве по созданию символов]]. | + | |
- | + | ||
- | ==== Требования к схемам ==== | + | |
- | + | ||
- | * Самое важное, что каждый компонент, который нужно отобразить в списке соединений, должен иметь атрибут ''refdes=''. Это **ОЧЕНЬ** важно. Программа **gnetlist** должна предупредить вас, если вы используете компонент, в котором нет ''refdes='', но есть ошибки, которые не вызывают такого предупреждения. | + | |
- | * Для любого из соединений можно создать метку с помощью атрибута ''label=''. Эту метку нужно прикрепить только к одному сегменту соединения, чтобы все сегменты данного соединения (электрически связанные с ним) унаследовали эту метку. | + | |
- | * В проекте может быть несколько принципиальных схем (на самом деле это сбивает людей с толку, так как каждый понимает это по-своему). Чтобы использовать несколько схем для создания одного списка соединений надо просто задать их в командной строке **gnetlist**. | + | |
- | * Если назвать соединения одинаково, они будут считаться электрически связанными. Одинаковые имена соединений распространяются на все заданные схемы. | + | |
- | * Есть кое-какие проблемы, относящиеся к иерархии. Обратитесь к приведённому ниже разделу по иерархии. | + | |
- | + | ||
- | ==== Прочие примечания ==== | + | |
- | + | ||
- | * Атрибуты, находящиеся внутри символа, но ни к чему там не прикрепленные, "выносятся" вовне символа, когда он помещается в схему (в **gschem**). Эти "вынесенные" атрибуты всегда проверяются/ищутся до того, как перейти внутрь символа. То есть, иными словами, если к экземпляру компонента снаружи прикреплён атрибут, одноимённый с атрибутом внутри его символа, то приоритет отдаётся внешнему атрибуту. | + | |
- | + | ||
- | ===== Поддержка иерархии ===== | + | |
- | TBA | + | |
- | + | ||
- | ===== Информация, специфичная для драйверов ===== | + | |
- | TBA | + | |
- | + | ||
- | ===== API драйвера в Scheme ===== | + | |
- | Обратите внимание, что данный раздел всё ещё находится в стадии развития. | + | |
- | Приведённая здесь информация должна быть верной, но не является полной. | + | |
- | + | ||
- | ==== Обзор ==== | + | |
- | **gnetlist** выполняет загрузку базы данных схемы из файлов //''.sch''//, | + | |
- | строит внутреннее представление и, затем, вызывает функцию, специфичную для | + | |
- | указанного типа выходного списка соединений, которая и создаёт фактический | + | |
- | список соединений. Каждый драйвер **gnetlist** содержится в файле, | + | |
- | называемом //''gnet-<backend>.scm''//. Где **<backend>** -- это имя отдельного | + | |
- | драйвера. Например, //''gnet-switcap.scm''// содержит код, используемый | + | |
- | командой **''gnetlist -g switcap''**, а //''gnet-drc.scm''// содержит код, | + | |
- | используемый командой **''gnetlist -g drc''**. Драйверы | + | |
- | написаны на языке программирования **Scheme**. Частная реализация **Scheme** | + | |
- | -- это **Guile**, что означает "GNU’s Ubiquitous Intelligent Language for | + | |
- | Extensions" ("повсеместный интеллектуальный язык GNU для расширений"). Больше | + | |
- | информации по **Guile** можно найти на | + | |
- | [[http://www.gnu.org/software/guile/guile.html]]. | + | |
- | + | ||
- | ==== Входная функция ==== | + | |
- | Каждый из драйверов списков соединений обязан предоставлять | + | |
- | функцию, имя которой соответствует типу его списка соединений. Например, драйвер | + | |
- | **switcap**, содержащийся в **gnet-switcap.scm** должен иметь функцию, | + | |
- | называемую ''switcap''. Это та функция, которую вызовет **gnetlist**, чтобы | + | |
- | инициировать создание списка соединений. Входной функции задаётся один | + | |
- | аргумент, который является именем файла выходного списка соединений. Обычно первое, что | + | |
- | генератор списка соединений делает, это открывает данный файл на запись.\\ | + | |
- | Следующий отрывок из драйвера **switcap** показывает начало входной функции и | + | |
- | показывает выходной файл, который нужно открыть. В конце данной функции | + | |
- | выходной файл закрывается. | + | |
- | <code>;; --------------------------------------- | + | |
- | ;; Switcap netlist generation -- top level | + | |
- | ;; --------------------------------------- | + | |
- | (define switcap | + | |
- | (lambda (output-filename) | + | |
- | (let ((port (open-output-file output-filename))) | + | |
- | + | ||
- | ;; rest of netlisting goes here | + | |
- | + | ||
- | ;; close the output file and return | + | |
- | (close-output-port port))))</code> | + | |
- | + | ||
- | ==== Инициализация драйвера ==== | + | |
- | После открытия выходного списка соединений производятся все необходимые | + | |
- | действия по специфической инициализации, которые должны выполняться для | + | |
- | списков соединений данного конкретного типа. В примере **switcap** мы должны инициализировать имя | + | |
- | соединения и базу данных псевдонимов позиционных обозначений (''refdes''). Это | + | |
- | нужно потому, что **switcap** предъявляет более строгие требования | + | |
- | к именам соединений, чем **gschem**. Кроме того **switcap** предъявляет особые | + | |
- | требования к позиционным обозначениям списка соединений. Для | + | |
- | таких ситуаций **gnetlist** предоставляет некоторые функции общего назначения, | + | |
- | переименовывающие соединения и позиционные обозначения так, чтобы они | + | |
- | соответствовали требованиям целевого списка соединений. Подробнее об этом | + | |
- | позже. А пока просто отметьте, что драйвер **switcap** использует следующий | + | |
- | код: | + | |
- | + | ||
- | <code>;; initialize the net-name aliasing | + | |
- | (gnetlist:build-net-aliases switcap:map-net-names | + | |
- | all-unique-nets) | + | |
- | + | ||
- | ;; initialize the refdes aliasing | + | |
- | (gnetlist:build-refdes-aliases switcap:map-refdes | + | |
- | packages)</code> | + | |
- | + | ||
- | Другая инициализация, которая хотя и не требуется для всех типов списков | + | |
- | соединений, но обычно производится, состоит в выводе некоторого рода | + | |
- | заголовка. Этот заголовок может явно содержаться во входной функции или для | + | |
- | ясности кода может находиться в своей собственной функции. В драйвере | + | |
- | **switcap**, вызов такой: | + | |
- | + | ||
- | <code>(switcap:write-top-header port)</code> | + | |
- | + | ||
- | Учтите, что есть соглашение о том, что имена любых специфических функций | + | |
- | драйвера должны содержать префикс в виде имени этого драйвера. Например все | + | |
- | специфические для **switcap** функции начинаются с ''switcap:''. Функции, | + | |
- | пригодные для всех драйверов и предоставляемые программой | + | |
- | **gnetlist**, имеют префикс ''gnetlist:''.\\ | + | |
- | ''switcap:write-top-header'' определяется следующим образом: | + | |
- | <code>;; | + | |
- | ;; Switcap netlist header | + | |
- | ;; | + | |
- | (define switcap:write-top-header | + | |
- | (lambda (port) | + | |
- | (display | + | |
- | "/* Switcap netlist produced by gnetlist (part of gEDA) */\n" | + | |
- | port) | + | |
- | (display | + | |
- | "/* See http://www.geda.seul.org for more information. */\n" | + | |
- | port) | + | |
- | (display | + | |
- | "/* Switcap backend written by Dan McMahill */\n" | + | |
- | port) | + | |
- | (display "\n\n" port) | + | |
- | ) | + | |
- | )</code> | + | |
- | + | ||
- | Далее входная функция вызывает функции для каждого раздела выходного списка | + | |
- | соединений. Переменная ''packages'' предопределена программой **gnetlist** и | + | |
- | является списком всех компонентов в проекте, а ''all-unique-nets'' является | + | |
- | списком всех соединений в проекте. Различные функции, используемые драйвером | + | |
- | для каждого раздела списка соединений, будут использовать эти переменные. | + | |
- | Например, основная часть списка соединений **switcap**, содержащая компоненты | + | |
- | и их соединения, записывается в выходной файл так: | + | |
- | <code>(switcap:write-netlist port packages)</code> | + | |
- | + | ||
- | ==== Псевдонимы имён соединений и позиционных обозначений ==== | + | |
- | Обычно целевой тип списков соединений предъявляет более строгие требования | + | |
- | к именам соединений, чем **gschem**. Могут быть, например, ограничения на | + | |
- | длину, разрешённые символы или их регистр. Для решения данной проблемы | + | |
- | **gnetlist** предоставляет возможность использования псевдонимов имён | + | |
- | соединений. Чтобы использовать эту возможность, функция | + | |
- | ''gnetlist:build-netaliases'' вызывается как часть раздела инициализации | + | |
- | входной функции.\\ | + | |
- | Например, в драйвере **switcap**, | + | |
- | <code>;; initialize the net-name aliasing | + | |
- | (gnetlist:build-net-aliases switcap:map-net-names | + | |
- | all-unique-nets)</code> | + | |
- | + | ||
- | Функция ''switcap:map-net-names'' является функцией, специфической для | + | |
- | драйвера (в данном случае ''switcap''), которая принимает в качестве аргумента | + | |
- | имя соединения **gschem** и возвращает изменённое имя, | + | |
- | удовлетворяющее требованиям формата выходного списка соединений. В случае **switcap** | + | |
- | требования следующие: "земля" называется "0", имена соединений имеют не больше 7 | + | |
- | знаков и код списка соединений регистронезависим. | + | |
- | <code>;; This procedure takes a net name as determined by | + | |
- | ;; gnetlist and modifies it to be a valid SWITCAP net name. | + | |
- | ;; | + | |
- | (define switcap:map-net-names | + | |
- | (lambda (net-name) | + | |
- | (let ((rx (make-regexp "^unnamed_net")) | + | |
- | (net-alias net-name) | + | |
- | ) | + | |
- | ;; XXX we should use a dynamic regexp based on the | + | |
- | ;; current value for the unnamed net base string. | + | |
- | + | ||
- | (cond | + | |
- | ;; Change "GND" to "0" | + | |
- | ((string=? net-name "GND") (set! net-alias "0")) | + | |
- | ;; remove the 'unnamed_net' part | + | |
- | ((regexp-exec rx net-name) | + | |
- | (set! net-alias (substring net-name 11))) | + | |
- | (else net-name) | + | |
- | ) | + | |
- | + | ||
- | ;; Truncate to 7 characters | + | |
- | (if (> (string-length net-alias) 7) | + | |
- | (set! net-alias (substring net-alias 0 7)) | + | |
- | ) | + | |
- | + | ||
- | ;; Convert to all upper case | + | |
- | (string-upcase net-alias) | + | |
- | + | ||
- | ) | + | |
- | ) | + | |
- | )</code> | + | |
- | + | ||
- | Функция ''gnetlist:build-net-aliases'' создаёт базу данных, которая потом | + | |
- | позволит вам искать имя выходного соединения по имени соединения в | + | |
- | **gschem** или имя соединения в **gschem** по имени выходного | + | |
- | соединения. Кроме того, она выполняет очень важную задачу обеспечения | + | |
- | отсутствия коротких замыканий при изменении имён соединений. В качестве | + | |
- | примера предположим, что у вас в схеме есть соединение с именем "MyNet", и | + | |
- | ещё одно --- с именем "mynet". Они уникальны, но после преобразования обоих | + | |
- | в верхний регистр, они станут одним соединением. | + | |
- | ''gnetlist:build-net-aliases'' определит это условие, выдаст ошибку и | + | |
- | остановит создание списка соединений.\\ | + | |
- | Теперь, когда база данных инициализирована, для нахождения имени соединения | + | |
- | в списке по имени соединения в **gschem**, генератор списка соединений | + | |
- | просто использует: | + | |
- | <code>(gnetlist:alias-net somenet)</code> | + | |
- | + | ||
- | Подобный набор функций предоставляется и для псевдонимов позиционных | + | |
- | обозначений. | + | |
- | + | ||
- | ==== Советы по отладке ==== | + | |
- | Полезным средством для отладки является запуск **gnetlist** в интерактивном | + | |
- | режиме. Для **gnetlist** этот режим запускается с помощью ключа ''-i''. При | + | |
- | этом появится оболочка, где можно будет вводить команды **Scheme**. Это | + | |
- | простой способ проверки различных переменных и тестирования разных функций.\\ | + | |
- | Пример запуска **gnetlist** в интерактивном режиме приведён ниже. | + | |
- | <code>% gnetlist -i ../../gnetlist/examples/switcap/*.sch | + | |
- | gEDA/gnetlist version 20041228 | + | |
- | 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. | + | |
- | + | ||
- | Loading schematic [../../gnetlist/examples/switcap/analysis.sch] | + | |
- | Loading schematic [../../gnetlist/examples/switcap/ckt.sch] | + | |
- | Loading schematic [../../gnetlist/examples/switcap/clocks.sch] | + | |
- | gnetlist> all-unique-nets | + | |
- | ("unnamed_net6" "unnamed_net5" "unnamed_net4" "OUT" "unnamed_net3" | + | |
- | "unnamed_net2" "unnamed_net1" "GND") | + | |
- | gnetlist> packages | + | |
- | ("TIMING" "CLK1" "S7" "S8" "S6" "S5" "C3" "S4" "C2" "C1" "E1" "S3" | + | |
- | "S1" "V1" "S2" "OPTIONS" "TITLE" "ANA1") | + | |
- | gnetlist> (quit) | + | |
- | %</code> | + | |