SCH/PCB муки

На меня несколько раз в год нападает желание найти замену P-CAD 2006, который,  как известно, умер, стух и сгнил. И раз за разом понимаю, что нету достойного соперника. Такое ощущение, что программисты кучи инженерно-девелоперских контор соревнуются в том насколько убогим и неюзабельным получится сделать своё программное обеспечение.

Сегодняшние претенденты: Cadence SPB и Zuken Cadstar.

1. Cadence SPB. На форуме Электроникса нашёл замечательную фразу от апологета данного программного продукта: “без тренинга новичок в данном продукте не сможет даже создать проект, не говоря уж о его дальнейшей разработке”. И это полная правда. На самом старте проекта приходится выбирать и компилировать какие-то стандартные-нестандартные библиотеки, писать в локальную библиотеку во внешнем текстовом редакторе какие-то слова и т.п. И это чтобы создать проект!

Ладно, предположим, что мы его таки создали, пользуясь туториалами. Открываем “Design Entry HDL” – штатную программу рисования электрической принципиальной схемы. Дизайн из конца восьмидесятых, кириллица в принципе не поддерживается, зато поддерживаются какие-то рюши, которые мне на данном этапе даром не нужны – всяческое моделирование и т.п. Нарисовал по туториалу схему, надо бы её транслировать в плату – а фигушки. Нету паттерна для выбранных микросхем. Я обычно рисую библиотеки полностью сам, но здесь я только начал разбираться с программой, и сплошное недоумение при виде кучи возникающих окон, мессаджбоксов с ошибками на голом месте. Мышкой ткнул в пустое место – получи мессаджбокс о том, что “какая-то команда не задана”. Вы серьёзно? Зачем использовать мессаджбоксы для некритических ошибок, уроды???

В общем, транслировать схему в плату так и не удалось пока. Буду еще ковырять, но уже видно, что по удобству работы оно на десять (если не на сто) голов ниже Пикада, который так любят хаять некоторые приверженцы этого поделия.

2. Zuken Cadstar. У этого программного продукта есть большое достоинство – наличие экспресс-версии с ограничением в 50 компонентов и 300 падов на проект. То есть маленькие платки и вообще научиться пользоваться можно совершенно легально, в отличие от.

Большой плюс видится в том, что программа по сути однооконная. А не куча малосвязанных между собой программ. Я, правда, уже вижу недостаток такого подхода в виде неудобства работы на двух мониторах, но пока не заостряю на этом внимание, т.к. может это и лечится.

По туториалу создал проект и ввёл схему. Проблемы с кириллицей есть и здесь, хотя и не такие глобальные как у Каденс. Основная проблема видится в том, что система не понимает что такое кириллица и даже при выставлении кириллицы в настройках шрифта продолжает думать, что я пишу латиницу с акцентами. Где-то на местах некоторых русских букв в западноевропейской кодовой странице видимо находятся надбуквенные символы, ну и Кадстар считает, что буквы надо совмещать. Межбуквенные интервалы в кириллице плавают просто чудовищно.

Найденные проблемы в схемном вводе – не нашёл как скрывать атрибуты символа, отображение которых мне не требуется. На каждом символе в итоге куча лишних надписей. Рисование связей между элементами очень неудобное. В Пикаде даже не задумываешься об этом – щелкнул и повёл, как надо – так и провёл. Здесь же всё гораздо кривее и непонятнее. Но, возможно, это дело привычки.

Нарисовал схему, стал трассировать плату. При щелчке мыши на компоненте не факт, что выделится весь компонент, а не его часть. Может вылезти окошко с предложением выбрать что я хотел выбрать, но, в отличие от Пикада, курсор мыши не становится сам на первый элемент в списке. Лишние бесячие телодвижения. При разводке платы есть выбор между ручной разводкой, полуавтоматической, автоматической, автоматической для чипов памяти и “речной” разводкой. Нормально пользоваться можно только полностью ручной. В полуавтоматической и автоматической я так и не понял как заставить проводить проводники под углом в 45 градусов. Для чипов памяти не каждая цепь разводится, корреляции не нашёл пока. А речная тупо срезает путь – получается похоже на Топор.

Зукен Кадстар показался получше Каденс Аллегро в смысле юзабилити, но всё так же на десяток голов ниже Пикада. Явно видно, что разработчики пытались в некоторых местах копировать Пикад. Некоторые слямзенные идеи весьма удивляют своей недоделанностью – как с окошком выбора в разводчике.

Продукты Xilinx – трухлявая хрень!

Целый месяц бьюсь с отладочной платой ML510 от Xilinx. Такая лопата, внешне выглядящая как материнская плата ATX-формата. На борту – FPGA Virtex-5. Чем дальше я пытаюсь её заставить работать, тем больше она меня выбешивает!!!

Во-первых, это найденные баги:
1. В IP-ядре xps_tft, которое отвечает за коммуникации с чипом от Crontel и вообще за возможность работы с дисплеями по DVI какой-то криворучко забыл скобку поставить. Мне то пофиг, я исправил. Но вот КАК ОНИ ЭТО ТЕСТИРОВАЛИ??? Без скобки оно тупо не компилируется же!!!
2. В Xilinx Platform Studio раньше для выбора того куда присоединён порт был StringGrid с инкапсулированными ListDown’ами. Какому-то придурку это показалось некрасиво. Теперь там нужно щёлкнуть мышкой и появится уродливое мини-окошко, в котором надо выбрать выход с помощью того же ListDown’а. Стоит ли говорить, что механизм появления окошка по клику писал опять же криворучко? Я потратил сутки, чтобы понять, что окошко не появится в принципе, если XPS развёрнута на неосновном дисплее. Да-да, в Xilinx не знают, что многие пользуются несколькими мониторами одновременно!

Во-вторых. Платформа для написания кода для PowerPC 440, который встроен в тот Virtex-5 называется Xilinx SDK. Да щас! ЭТО ЭКЛИПС!!! Я его уже видеть не могу. Глючная среда, разработанная дизайнерами.

Неделю потратил на выяснение вопроса почему в ассемблере для PowerPC регистры называются r0,r1,..,r31, а ассемблер таких названий не понимает. Говорит “unsupported relocation against Rx”. Я вообще в принципе эту фразу не понимаю, что они хотели этим сказать?

Оказалось, что ему надо сказать, чтобы он такие названия понимал. Специальной директивой “-mregnames”. Причём, эту директиву надо задать не только ассемблеру, но и компилятору GCC (спрашивается, зачем си-компилятору директивы ассемблера?). Почему эта директива не выставляется автоматически – тоже тот еще вопрос. Видимо потому, что сами Xilinx’овцы своим поделием не пользуются. Во всяком случае мне трудно поверить, что они оперируют не названиями регистров, а адресами, где эти регистры находятся. Тут еще есть тот прикол, что, к примеру, SP (Stack Pointer – указатель стека) и регистр R1 – это одно и то же…

В эклипсе больше всего выбешивает запуск дебаг-сессии. Никогда не знаешь запустится она или нет. И не подаст ли она при старте полный хардверный ресет ПЛИСу, затирая сконфигурённый процессор, чтобы потом удивлённо так сказать окном на пол-экрана “А где же процессор?”.

Справедливости ради, один раз мне удалось пройти весь этот форт Боярд не уткнувшись ни в одну ошибку. И FreeRTOS у меня таки заработал. Но это было один раз, неделю назад. И второй раз повторить тот же путь у меня пока не получилось.