Постановка задачи
Использование концепции единого источника, минимизация человеческого фактора при одновременной правке табличной информации об изменении/перемещении/исправлении_ошибок в списке внешних ножек СБИС и его графической репрезентации. Притом хорошо бы на выходе получать векторную картинку.
Решение
Исходными данными является (нативная для сборщика документации) таблица в формате asciidoc, которая sed
‘ом и grep
‘ом переводится в классический CSV (comma separated value), после чего средствами PHP переводим его в JSON, и уже JSON скармливаем скрипту рисования SVG (а если надо - и PNG).
PS: Перевод в JSON - опциональный, просто потому что формат удобный, быть может в будущем в каком-нибудь скрипте прийдётся работать со списком пинов, например, автосоздание либы с символьным обозначением для Altium/PCAD/KiKAD/Eagle.
Возможности
- Поддержка следующего типа полей из оригинального asciidoc-описания:
- Номер пина
- Имя пина
- Тип пина
- Стандарт ввода-вывода
- Описание пина
- Возможность для любого из полей назначить свой цвет пина (DecidePinColour.php), на данный момент поддерживаются:
GND
- земляVDD
- питаниеVDDA
- питание аналоговых цепейCMOS
- цифровые ножки общего назначенияLVDS
- дифференциальные парыJTAG
- отладочные цепиXTAL
- тактирующие цепиANALOG
- аналоговые выводы
- Возможность задания произвольного прямоугольного корпуса - с произвольным соотношением пинов по ортогональным сторонам
- Возможность опционального задания имени СБИС
- Возможность задания типа и начертания шрифта для имени СБИС, номера пина, имени пина
Хотелки
- Хранение конфига в JSON- или ini-файле (предпочтительно)
- Научиться добавлять в SVG ссылку на имя вывода СБИС для простой навигации внутри конечного PDF
- Поддержать корпуссы с матрицей выводов (BGA):
- номинальная функциональность
- поддержка списка отсутствующие пинов
- поддержка в дополнении к цветовой еще и графической схемы кодирования функционала ножек (например, как это делает Xilinx для своих FPGA)
- Очевидная идея для скрипта РНР: сделать веб-морду к тулу (а-ля SaaS)