|
Скрипт для выравнивания дифференциальных пар. |
|
|
|
Apr 6 2015, 06:11
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Вынес в отдельную тему скрипт для выравнивания дифференциальных пар. Скрипт предназначен для помощи в выравнивании дифференциальных пар с учетом задержек в IC. Коротко по интерфейсу. D2D skew tolerance - погрешность выравнивания в между дифф парами группе; P2N skew tolerance - погрешность выравнивания внутри пары между P и N цепями; Delay - задержка распространения сигнала в материале, пс/мм; Lic - длина (время) вносимая IC; Lb - длина разведенная; Leb - требуемая длина для обеспечения параметра D2D skew tolerance; Lsum - суммарная длина; D2D - результат обеспечения параметра D2D skew tolerance; P2N - результат обеспечения параметра P2N skew tolerance. Алгоритм работы такой. Оператор запускает скрипт и выбирает класс дифф пар. Если необходимо учитывать задержку FPGA, то выбирает микросхему и загружает файл. Забив необходимые значения в поля skew tolerance, выполняет трассировку пар. Скрипт производит вычисления и обновляет данные в окне. Все введенные оператором данные, а также последний выбранный класс сохраняются в папке с проектом, те после перезапуска скрипта можно возобновить работу. При работе скрипта не создается никаких PcbObject-ов. По сути данный скрипт дополняет/заменяет окно PCB. Из нереализованного: 1 - Учет задержек нескольких IC; 2 - Вывод репорта в файл или на экран; 3 - Фильтр пары на PCB, выбранной в рабочем окне скрипта; 4 - … Формат CSV файла с задержками в IC (без фигурных скобок): {PIN};{задержка, пс} Замеченные баги:1 - Вылет из Альтиума при активации PCB фильтра, если скрипт зарегистрирован в настройках. Замечен на нескольких машинах. Видно, как на короткое время происходит запуск рабочего окна скрипта после чего и происходит вылет. На моей рабочей машине этот баг не наблюдается. 2 – Невозможно выполнить PCB фильтр при активном скрипте. Ограничение Альтиума на количество выполняемых одновременно скриптов. О неточностях работы и найденных багах можно отписываться здесь или в трекере на github. Ссылка на github: СКРИПТ
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 21)
|
Apr 6 2015, 08:55
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(Trashy_2 @ Apr 6 2015, 10:52)  Я создавал правило на один НЭТ, допустим 60 мм. Затем рулесы экспортировал и открывал их Exelем. Там я Рулес для одного нэта копипастил столько раз, сколько нэтов надо выравнять. Заменял имена. Получалось, что каждый нэт выравнивался по 60 мм. Затем, копипастил из файла PDF числа с дистанциями внутри корпуса микрухи и в экселе отнимал от предустоновленных 60мм. Дальше, обратно импортируем рулесы в Альтиум и ВСЁ. Здорово, а я открыл скрипт и выравниваю пары. Но как идею для проверки DRC средствами альтиума, можно рассмотреть.
|
|
|
|
|
Apr 8 2015, 08:38
|

люблю бегать и орать
    
Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376

|
А длина переходного отверстия как учитывается? Что то у меня нестыковка получается. Нашел специально проект к которому csv Файл подходит. Тогда применялся lengthTuner с гугло-аддонов. С ним вроде все ОК Здесь же показывает разбежку до 16ps между парами.. Подозрение, что с длинной переходных какая то засада. Я попозже глубже копну, пока нет времени.. Что касается интерфеса, некоторые моменты: - уберите выскакивающие окна. У меня три раза выскочило, что надо файл выбрать, хотя кнопка выбора файла третья в очереди: сперва галочка, затем выбор микросхемы, только после "open file". Либо кнопку "Open File" поставьте первой в очереди - в передыдущей программе я подкрутил, чтобы в окне выбора были только элементы, начинающиеся на "D", ускоряет поиск нужного  - колонкам можно изменять ширину, но само окно расширить нельзя. - заголовки столбцов допускают кликанье, но ничего не происходит, я думал произойдет сортировка А можно ли использовать не diff pair class, а просто net classes? ну это так. не требование. просто у меня диффпар классы не исользуются и не назначены вовсе. все из-за того, что их назначение в альтиуме делается через одно место, у меня все на нетклассах завязано.
|
|
|
|
|
Apr 8 2015, 11:38
|

люблю бегать и орать
    
Группа: Свой
Сообщений: 1 685
Регистрация: 28-04-07
Из: ЮБутово@Москва.ru
Пользователь №: 27 376

|
Цитата(Владимир @ Apr 8 2015, 13:59)  Почему "D", мне бы "U"  Не надо ничего трогать ну можно сделать D и U. или можно сделать, чтобы попадали компоненты с числом выводов не менее 100, например. вариантов масса. эти огромные списки надо сокращать
|
|
|
|
|
Apr 9 2015, 08:14
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(peshkoff @ Apr 8 2015, 11:38)  А длина переходного отверстия как учитывается?
Что то у меня нестыковка получается. Нашел специально проект к которому csv Файл подходит. Тогда применялся lengthTuner с гугло-аддонов. С ним вроде все ОК Здесь же показывает разбежку до 16ps между парами.. Подозрение, что с длинной переходных какая то засада.
Я попозже глубже копну, пока нет времени.. Версия Алитиума 15. Длина берется из параметра RoutedLength объекта IPCB_Net/IPCB_DiffernetialPair, те она не считается. Предполагаю, что длина переходных учитывается. Проверю точнее. Если длина переходных не учитывается, будем определять версию альта для совместимости со старыми версиями и добавлять в случае чего длину виасов. Цитата Что касается интерфеса, некоторые моменты: - уберите выскакивающие окна. У меня три раза выскочило, что надо файл выбрать, хотя кнопка выбора файла третья в очереди: сперва галочка, затем выбор микросхемы, только после "open file". Либо кнопку "Open File" поставьте первой в очереди Тоже напрягает. Сделаю более эргономичнее. Цитата - в передыдущей программе я подкрутил, чтобы в окне выбора были только элементы, начинающиеся на "D", ускоряет поиск нужного  Думал над этим вопросом. Но после приспособился не мотать ползунком, а набирать на клаве. Только нужно быстро )). Нужно подумать, как сделать фильтрацию. Цитата - колонкам можно изменять ширину, но само окно расширить нельзя. Да окно делалось фиксированное. Это неправильно. Согласен, что необходимо сделать таблицу адаптивную под размер основного окна. Цитата - заголовки столбцов допускают кликанье, но ничего не происходит, я думал произойдет сортировка Это в планах. Цитата А можно ли использовать не diff pair class, а просто net classes? ну это так. не требование. просто у меня диффпар классы не исользуются и не назначены вовсе. все из-за того, что их назначение в альтиуме делается через одно место, у меня все на нетклассах завязано. В планах и стоит задача сделать не только на дифы, а на все сигналы. Цитата(Владимир @ Apr 8 2015, 15:38)  Просто в компонент ввести параметр PinDelay=FileName И выводить только те, у которых есть такой параметр, а имя файла брать из значения этого параметра ==> это еще меньше кликов. Да и задумываться не надо Как раз для таких лентяев, как я  Очень хорошая идея. Надо обмозговать, но нужно не исключать возможность и выбора без этого параметра. Цитата(peshkoff @ Apr 8 2015, 16:38)  Вы имеете ввиду, чтобы параметр содержал сразу путь до файла .pkg? Неплохой вариант. Но надо тогда чтобы при новом выборе файла .pkg параметр обновлялся в компоненте. Это думаю то не проблема, вот только если компонент обновят в схематике. Цитата(Владимир @ Apr 8 2015, 20:08)  В первом приближении работает. По точности проверять надо Без учета Xsignal. Хотя похоже тут будет без проблем работать 1 Желательно скрипт распространить не только на дифпары 2 При большом числе сигналов не хватает итоговой оценки--- все окей, или не все окей (сори тут оказывается все есть. Просто у меня она всегда красная) 3 желателно не только писать Fail И Pass но подсветить цветом Зеленый Pass, красный синий-- больше меньше нормы 4. Сортировка по столбцам отсутствует, а не мешало бы 5. флаг Stay on Top --- для чего? 1 - см выше. 2 - Да, это сделано в виде изменяющегося цвета P2N/D2D skew tolerance. 3 - Это сделано сознательно по следующей причине - мне не заставить было альтиум выполнять процедуру прорисовки cell -а, где и мог меняться цвет/шрифт ячейки. Поработаю над этим вопросом еще, но не думаю, что получится. 4 - в планах. 5 - Окно поверх всех окон. Щас работаю над добавлением правил для цепей, чтобы Альтиум уже своими средствами проверял. Исправил пару багов (добавил новые  ). Из найденных последних - это путь до файла задержки абсолютный. Думаю что нужно сделать относительным. Проблема показала себя при открытии проекта на другой машине ). Что по поводу вылета Альтиума, когда скрипт зарегистрирован в системе. Проявился у кого?
|
|
|
|
|
Apr 9 2015, 09:21
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(Владимир @ Apr 9 2015, 11:27)  5. Да поверх не только окон алтиума, но всего поверх  Ну окно поверх, есть окно поверх  Цитата Это актуально, когда все на FTP лежит Нет ни разу не вылетел. Вот скрипт ушел в отладку, когда дважды запуск хотел и когда PKG открыт другим приложением. Да с доступом к файлу есть такой нюанс. Проверил щас как Альт считает длину виасов. Если сказать, что я удивлен, то это ничего не сказать.
|
|
|
|
|
Apr 9 2015, 11:13
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(Владимир @ Apr 9 2015, 13:13)  так уж год как точно считает, а может и 2 Так в том и дело, что точно, но не точно. Или я чего не догоняю на своей дрезине. Дело в том, что при добавлении просто виасов на трек без переходов на другой слой, Альтиум просто добавляет длину этих виасов к суммарной длине трека. Допустим у меня есть трек длиной 20мм. Задача довести до 40. Нет ничего проще в расчетах Альтиума - просто добавь 10 виасов на трек и получишь 40 мм при толщине платы ~2 мм. Если же произвести переход, то вот здесь он считает правильно.
|
|
|
|
|
Apr 9 2015, 11:39
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(Владимир @ Apr 9 2015, 14:34)  Ну так это ошибка-- и алтиум ее находит через правило NetAntenna Владимир, согласен, что это может быть и ошибка. Для этого DRC и нужен. Но на длину цепи она не влияет. Не согласен я с Альтиумом. А если это переход на тестпойнт. То как?
Сообщение отредактировал Vasen - Apr 9 2015, 11:40
|
|
|
|
|
Apr 9 2015, 12:22
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(Владимир @ Apr 9 2015, 15:01)  Не влияет , так и хорошо. Честно проверял все это с год назад и забыл. так как через правило проверки антенн-- убираю их. По поводу Тестпоинт-- тут двояко. Не зачем использовать Via иесли есть доступные PAD. Во вторых там так убычно плотно, что незачем их вообще использовать. Если в качестве TestPoin используется Via-- не знаю. Если Via только переход к Pad Test point-- считаться будет Если Xsignal-- там считается только то, что нужно В том и дело, что на длину влияет. Ладно, что делать, будем иметь в виду.
|
|
|
|
|
Apr 9 2015, 13:03
|
Участник

Группа: Участник
Сообщений: 74
Регистрация: 30-03-06
Пользователь №: 15 624

|
Цитата(peshkoff @ Apr 9 2015, 15:52)  когда ввели учет длины переходных в альтиуме, я пытался проверить как он считает. Считал он тогда не правильно. Я откатился на 13, там и сижу. Лучше вручную длину добавить. Как сейчас дела обстоят, проверять неохота Если в 13 версии длину не считает, то скрипт будет врать, потому как длина берется от Альтиума. Надо проверять версию Альтиума и добавлять длины виасов, если меньше 15.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|