В этой статье мы узнаем, как использовать Altium Designer® для реализации дополнительных функций, которые по умолчанию недоступны. Мы откроем для себя мощный аспект Altium Designer, который, будучи освоенным, может поднять ваши навыки проектирования на новый уровень. В этой статье мы обсудим, как реализовать скрипт для выполнения верификации дизайна.
Мы узнаем:
В наши дни дизайны очень сложны. В общем, клиенты ожидают от своих разработчиков печатных плат, что их платы будут работать с первого раза. Для достижения этого критически важно уделять внимание деталям.
В этом примере давайте посмотрим, как создать скрипт, который можно использовать в реальном проекте. Рассмотрим следующую проблему дизайна:
Нам нужно спроектировать плату высокоразрешающего АЦП, используя 16-битный АЦП. АЦП имеет входное сопротивление 1 кОм. «Каково максимальное сопротивление трассы между драйвером и АЦП для достижения ошибки ниже 1 LSB?» «Можем ли мы разработать скрипт, который поможет нам?»
Рисунок 1 проектирование дорожки высокоразрешающего АЦП
Чтобы ответить на этот вопрос, нам нужно рассчитать удельное сопротивление дорожки и проверить, превышает ли падение напряжения на дорожке 1 LSB.
Для расчета удельного сопротивления дорожки мы можем использовать следующую формулу:
Например:
Допустим, наша дорожка имеет следующие размеры: L = 10 см, h = 0.035 мм, w = 0.381 мм. Используя [1], и предполагая, что окружающая температура составляет 25 °C, сопротивление постоянному току дорожки составляет 129 мОм, это приведет к ошибке напряжения 0.013%, что значительно выше 1 LSB (0.0015%) 16-битного АЦП. Таким образом, указанная выше дорожка даст нам ошибку смещения почти в 9 LSB!
Можно ли попросить Altium Designer выполнить все вышеуказанные проверки за нас? Возможно, в реальном времени?
Ответ, очевидно, да.
Давайте разработаем скрипт, который даст нам эту информацию.
Мы хотим иметь возможность щелкнуть по дорожке, и мы хотим, чтобы Altium Designer выполнил для нас некоторые проверки, такие как расчет сопротивления дорожки, расчет падения напряжения и т.д.
Рисунок 2 пример информации из нашего демонстрационного скрипта
Altium Designer поддерживает скрипты на нескольких языках, и за время моей карьеры я использовал множество языков, но одним из первых языков, которые я использовал в профессиональной деятельности, был Delphi, поэтому я решил написать этот скрипт на Pascal. Однако вы можете использовать и другие языки скриптов, такие как Visual Basic, если предпочитаете.
Давайте посмотрим, как разработать скрипт в Altium Designer, который решает вышеуказанную проблему.
В нашем скрипте мы хотим:
1. ЗАГРУЗИТЬ НАШУ ПЕЧАТНУЮ ПЛАТУ
Первой инструкцией, которую мы хотим выполнить, является загрузка нашего проекта печатной платы и сохранение его в переменной под названием Board. Мы можем сделать это с помощью следующей инструкции:
2. ЗАГРУЗИТЬ СТЕК СЛОЕВ
После загрузки платы мы хотим загрузить стек слоев и сохранить его в переменной под названием Stackup:3. ЗАГРУЗИТЕ ТРАССИРОВКУ, ВЫБРАННУЮ ПОЛЬЗОВАТЕЛЕМ С ПОМОЩЬЮ МЫШИ
Теперь мы можем использовать метод GetObjectAtCursor(), чтобы получить выбранную трассировку и сохранить её в переменной под названием Trace.
4. РАСЧЕТ СОПРОТИВЛЕНИЯ ТРАССИРОВКИ ПО ФОРМУЛЕ [1]
Как только пользователь выбирает трассировку с помощью мыши, мы хотим рассчитать ширину, длину и высоту трассировки и сохранить эти значения в трех переменных: TraceThickness, TraceWidth и TraceLength:
Наконец, мы можем рассчитать сопротивление трассировки Res, используя формулу [1], рассчитать падение напряжения (предполагая, что у АЦП есть Vref равный 1В).
5. ОТОБРАЖЕНИЕ ОШИБКИ ТРАССИРОВКИ И ОШИБКИ АЦП
После всех расчетов мы можем отобразить результаты на экране. Простой способ сделать это - использовать окна MessageDlg().
OutputString := 'Толщина дорожки = ' + FloatToStrF(TraceThickness,0,5,4) + ' мм' + #13#10; OutputString := OutputString + 'Ширина дорожки = ' + FloatToStrF(TraceWidth,0,5,4) + ' мм' + #13#10; OutputString := OutputString + 'Длина дорожки = ' + FloatToStrF(TraceLength,0,5,4) + ' мм' + #13#10#13#10#13#10; OutputString := OutputString + 'Сопротивление дорожки = ' + FloatToStrF(Res,0,5,4) + ' мОм' + #13#10; OutputString := OutputString + 'Падение напряжения на дорожке = ' + FloatToStrF(VoltageDrop,0,2,2) + ' %' + #13#10; OutputString := OutputString + 'LSB АЦП = ' + FloatToStrF(ADCLSB,0,2,2) + ' %'; MessageDlg(OutputString,mtInformation,4,0);
Как запустить скрипт
Чтобы протестировать скрипт, в вашем документе PCB нажмите на Файл->ЗапуститьСкрипт…
Затем выберите ваш скрипт:
Теперь вы должны увидеть большой крест:
Нажмите на дорожку, которую хотите проанализировать.
Теперь вы должны увидеть окно сообщений с расчетами:
Возможно расширение этого скрипта и добавление более сложной проверки, например, продление трасс до арки и добавление эффекта температуры и т.д. Я оставлю это вам в качестве упражнения.
Мы видели, что Altium Designer, будучи освоенным, может выполнять за нас сложные действия. В этом примере мы видели, как можно измерить импеданс постоянного тока трассы одним кликом и как оценить ошибку напряжения в дизайне АЦП высокого разрешения.
Этот демонстрационный скрипт имеет много ограничений, но может быть использован в качестве основы для ваших собственных расширений Altium Designer.
Есть еще вопросы? Звоните эксперту из Altium или узнайте больше о лучших функциях программного обеспечения для проектирования печатных плат и калькуляторе импеданса трасс в Altium Designer.