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

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

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.