Быстро генерим символы для еесхемы (Код внутри!)

Если доводилось юзать кикад, то должна быть знакома ситуация, когда символа нет. Оный можно быстро сгенерить вот этим веб-тулом Но что делать если у чипа овер 100 ног?

Раньше я использовал грязный хак на баше и xdotool’e, но вот пришла пора сделать что-то получше. пасибки летят автору xil2kc, которая генерит символы из Xilinx’овских .pkg файлов, которые выдавливает из себя ISE.К сожалению, они выбрали пистон, Один из моих наименее любимых языков. Так или иначе, переписывать с нуля мне было в лом, потому пришлось вспомнить питон.

Итак, как сварганить за пару секунд символ для еесхемы?

1. Открываем даташит своим любимым вьювером (Я юзаю okular)
2. Копируем имена пинов в текстовик, для каждой группы раставляем диапазон номеров.
3. Определяем правила сортировки и кол-во сабпартов.
4. запускаем мой костыль, например ./list2kc.py --pkg-file=./at91rm9200.pins --output-file=./at91rm9200.lib
5. Забираем библиотеку, дорабатываем напильником, используем по назначению.

Для примера возьмем что-нибудь простое, например uln2003a
После двух актов копипасты, мы получили две группы пинов. с 1 по 8 и с 16 по 9, так как я копипастил это с top view.
В квадратных скобках диапазоны.

~subparts 1
:\dB:left:0
:\dC:right:0
:E:bot:0
:COM:top:0

[1:8]
1B
2B
3B
4B
5B
6B
7B
E
[16:9]
1C
2C
3C
4C
5C
6C
7C
COM

Остается непонятным заголовок, который я разъясню сейчас:
первая строка всегда количество сабпартов.
Например ~subparts 1 говорит нам, что у символа будет только один сабпарт. Далее идут правила сортировки.
Каждая строка, которая начинается с ‘:’ описывает правило.
Тула проходит по списку правил для каждой пины сверху вниз, и если находит совпадение — то мы знаем где будет расположена нога.
И хотя для ULN2003A оно бесполезно, для AT91RM9200, RTL8196C и прочих многоногих чипов экономит время.

Синтакс правила приведен ниже:
:регулярное_выражение:на_какой_стороне_разместить:в_какой_сабпарт.
пример:  

:\dC:right:0

Все что начинается с числа, после которого идет буква ‘C’ размещаем с права, на сабпарте 0
(Да, как в С, нумерация с 0, мне так проще).
Документацию по регэкспам питона воскуриваем тут
Вот и все. Сырцы на шитхабе.
Beware, I’m not a fan of python, and rarely write anything in it. So the code might look strange.

Добавить комментарий