Для меня совсем недавно стало открытием то, что оказывается в России есть целый стандарт по целостности сигнала и питания — ГОСТ Р 71265—2024. Это было очень неожиданно, так как до этого момента я не видел ни одного стандарта или документа, предлагающего подход к моделированию и дающего какие-либо рекомендации. Именно поэтому думаю, что будет интересно вместе с вами рассмотреть этот стандарт и посмотреть, удался он или нет. И в качестве исключения я попробую использовать только отечественные термины, которые, по мне так, не полностью отражают действительность.
Пропустив все обязательные атрибуты ГОСТа, переходим к сути, а именно к пункту 5. Тут, скажем честно, написано очень хорошо и правильно, но давайте чуть конкретнее. Первое, что бросается в глаза, — пропущена информация, что такое пред-топологический анализ (pre-layout analysis). Он в целом может быть разным, но давайте просто перечислим, что это может быть:
Подбор структуры печатной платы и расчет геометрии линии передач под необходимый импеданс (при наличии и умении пользоваться Z-planner это все входит в одну задачу). Расчет бюджета потерь по стандартам и документации (loss budget). Проработка составных частей линии передачи, в особенности мест перехода линий передач — переходные отверстия (via), пины микросхем и разъемов, пассивные компоненты на линии (конденсаторы или фильтры). Анализ всей «полуидеальной» линии передач и корректировка бюджета потерь при необходимости — то есть из моделей проработанных секций мы собираем линию передачи и смотрим потери и глазковую диаграмму (eye diagram). Расчет целевого импеданса питания (target impedance) и проработка развязывающих конденсаторов (decoupling capacitors), подготовка рекомендаций по их расположению для тополога. Редко, но выдача рекомендаций по отводу тепла. Ну и другие.
Расписывать каждую задачу мы не будем, как и составлять список обязательных из них. Каждый специалист сам решает относительно своей системы и своего проекта. Учить кого-то я не буду, я лишь показываю то, что ГОСТ опустил.
Переходя уже к пост-топологическому анализу (post-layout analysis), в целом ГОСТ правильно указывает, что необходимо провести анализ целостности питания, но этого недостаточно. Я бы начал с теплового анализа печатной платы — почему именно так, писал в прошлых статьях, например здесь. Кратко: очень многие параметры, особенно сопротивление меди, зависят от температуры, и не учитывать это будет большой ошибкой. Поэтому необходим начальный тепловой анализ или анализ всей конструкции при максимальной температуре эксплуатации.
Оценка питания
Переходя к оценке питания, ГОСТ очень грамотно подсвечивает все места, которые надо бы учесть. Я бы только добавил про модели других компонентов кроме источника и потребителя. Все конденсаторы, фильтры и другие пассивные компоненты имеют свои параметры, которые влияют на систему распределения питания (PDN — power delivery network). Это может быть падение напряжения или влияние на импеданс, все что угодно, так что не забываем про это.
Но вот дальше начинается пункт 6.2.6, и я начал задаваться вопросом. Моя вторая статья на Хабре говорила про «золотые правила» и табличные значения, вот она. Мы так же разбирали IPC и пытались разобраться в этих значениях, так что вы могли бы подумать, что я сейчас буду разносить все в пух и прах. Вы ошибаетесь. Я честно был приятно удивлен, увидев те значения, которые были представлены в ГОСТе, а именно 5% для падения напряжения (voltage drop) и 100–150 А/мм² для плотности тока (current density). Это очень близко к тому, что я вижу на практике, да и там есть оговорки про то, что это рекомендации. Так что если вы вообще ноль или не понимаете, то очень аккуратно, во многих простых проектах это будут отличные рекомендации.
Думаю, я вас запутал, теперь к критике. Если вы чуть больше понимаете или делаете вид, что понимаете, в целостности сигнала и питания, падение напряжения смотрится только в документации на микросхемы. Эти 5% для современных микросхем — то, с чем работать нельзя, если нужна цифра — я бы взял 30–50 мВ, на практике если обеспечите это, работать будет точно. Да, это избыточно во многих проектах, но необходимо. Дальше к плотности тока, долго говорить не буду, лучше прочитайте одну из моих прошлых статей. То же самое скажу и про переходные отверстия (via) — использовать представленные значения я бы не стал, кроме того, что в скобках, а именно 1 А на отверстие диаметром 0,3 мм.
Дальше есть тоже очень хорошо расписанная часть про частотный анализ питания. Только есть одно но — где цифры? В ГОСТе сказано, что необходимо обеспечить импеданс 0,1 Ом для всей полосы частот, а что это за полоса? Я уже, кажется, писал про это где-то, но кратко скажем, что стандартно есть смысл рассматривать систему питания от 10 кГц до 200–300 МГц. Почему так? Все, что ниже, не имеет практического применения, почти вся электроника работает на частотах переключения, которые выше этих. А вот выше рассматривать не стоит из-за «горы Бандини» (Bandini Mountain). Это антирезонанс, вызванный корпусом микросхемы (package resonance), который возникает примерно на этих частотах. Любой анализ выше данной частоты без параметров корпуса не имеет смысла, так как вы можете выстроить систему питания с 0,1 Ом хоть до 1 ГГц, но антирезонанс корпуса будет на сотнях МГц и разрушит вам всю систему. Именно поэтому в современных моделях иногда можно найти параметры корпуса с их внутренними емкостями, индуктивностями и сопротивлением. В IBIS 5.0 появилась возможность описывать внутреннее поведение PDN, а также учитывать влияние внутренней системы питания при моделировании. Другой вопрос — заложит ли эти параметры производитель, потому что стандарт лишь добавил такую возможность, но не сделал ее обязательной. Так что если у вас есть параметры корпуса, то смело моделируйте до частоты 1–5 ГГц, если же нет — я бы рекомендовал значения от 200–300 МГц, но все индивидуально, и обязательно смотрите документацию, иногда эти значения там есть.
Так же давайте разберемся с целевым импедансом, который заявлен в районе 0,1 Ом. Я на 99% согласен с этой цифрой, но по мне так лучше знать, как правильно он получается. Разобраться с этим очень просто, для этого есть простая всем известная формула:
Это значит, что целевой импеданс находится как допустимое падение напряжения, поделенное на максимальный скачок тока в системе питания. Где что найти? Допустимое падение напряжения регламентирует производитель — те самые 5% или 50 мВ. С максимальным скачком потребления сложнее. В некоторых микросхемах, где есть четкие режимы работы, это вычислить легко — мы берем режим с максимальным потреблением и вычитаем потребление в режиме простоя. С любыми микроконтроллерами и процессорами данный подход не работает, так как потребление определяет программа. Именно поэтому это и плюс, и минус. Ваш программист может как написать программу, которая резко увеличивает потребление с 0 до 100%, а может это сделать постепенно. Как же быть? Эрик Богатин (Eric Bogatin) говорит о том, что базовой настройкой необходимо брать скачок от максимального потребления микросхемы. Считаю, что это будет идеальным решением для всех базовых задач. В более ответственных задачах лично я беру 80% от максимального потребления, так как не доверяю программистам. И вот когда все значения получены, мы можем получить наш целевой импеданс.
Давайте короткий пример. Есть у нас цепь 3,3 В с потреблением 2 А и допуском по напряжению 150 мВ. Какой будет у нас целевой импеданс? Кто сказал 75 мОм — на пересдачу! Вспоминаем, что изначально мы проводили анализ по постоянному току (DC analysis) и выяснили, что у нас есть какое-то падение напряжения, допустим, 50 мВ. Вот теперь мы можем точно подсчитать, что наш целевой импеданс будет примерно 50 мОм.
Чего еще нет в частотном анализе? Здесь не хватает анализа взаимного влияния полигонов питания друг на друга. Это очень актуально, когда они находятся друг над другом и когда расстояние между ними в два раза меньше, чем расстояние до опорной плоскости. Именно в этом случае особенно важно обеспечить, чтобы влияние их было минимальным, иначе шуму одной системы питания будет переходить на другую.
Целый ли ты сигнал или нет?
Переходя к целостности сигнала (signal integrity), я уже меньше доволен написанным, чем может показаться. По сути, все верно и правильно, и порядок действий максимально правильный, но вот цифры и рекомендации не смотреть глазок, если потери меньше, чем там… Первое: на каждый стандарт передачи данных есть документация, в которой есть точные значения. Где-то это бюджет потерь, а где-то — маски глазковых диаграмм (eye mask) и допустимый уровень битовых ошибок (BER — bit error rate), но одной универсальной цифры, увы, нет. Второе: помним, что все эти цифры даны на канал, что, как мы поняли из моей прошлой статьи, зачастую от платы к плате, со всеми вытекающими. Третье: имея опыт в моделировании в ADS, HyperLynx и ANSYS HFSS и SIwave, могу вам сказать, что все S-параметры (S-parameters) считаются без учета приемника и передатчика. Да, чисто технически как-то можно получить полные S-параметры, но я ни разу такого не видел. У того же интерфейса DDR в IBIS-моделях есть параметры нагрузки ODT. При неправильном согласовании даже хорошая линия превратится в кашу. Это я к тому, что S-параметры никак не показывают реакцию приемника на пришедший сигнал, и даже самые отличные S-параметры в определенных моментах могут оказаться полным ужасом. Поэтому рекомендация не смотреть глазок выглядит прям очень слабо и плохо. Если стандарт дает значения глазковой диаграммы, как например PCIe, то никакие S-параметры вам не помогут. Да, я уже говорил, что мы в процессе работы составляем допустимый бюджет потерь на каждую часть канала передачи, но нельзя верифицировать соответствие интерфейсу только по S-параметрам!
Все остальное по целостности сигнала считаю написанным на очень хорошем уровне. Да, я бы добавил сюда анализ TDR (time domain reflectometry) для выявления мест с несогласованным импедансом, потому что по S-параметрам это сделать невозможно.
Чего не хватает в стандарте в целом? Я бы сказал о двух вещах, которые раскрывают одну тему — и это совместное моделирование (co-simulation). А именно: совместное моделирование питания и тепла на первом этапе, с получением реальной рабочей температуры, с последующим совместным моделированием питания и сигналов. Зачем? Потому что, как я говорил ранее, питание зависит от температуры, а температура — от питания. Эти вещи взаимосвязаны, и их стоит анализировать совместно, со всеми радиаторами и корпусами. Совместное моделирование сигнала и питания — это вообще тренд последних лет, и он будет продолжаться и дальше. Например, при одновременном переключении всех транзисторов внутри чипа резко возрастает потребление питания, вызывая просадки в питании, а следовательно, уменьшаются уровни в сигнальных проводниках, что напрямую влияет на весь сигнал (например, уменьшением высоты глазковой диаграммы и так далее).
Итог
Очень хороший стандарт, честно! Как бы я тут его очень сильно и продолжительно не критиковал, это хороший старт для людей, в чьи прямые обязанности не входит анализ целостности сигнала и питания. Если у вас нет человека, который занимается этим 24/7, то выдать это топологу будет самым лучшим решением. Да даже начинающему специалисту в области целостности сигнала и питания это будет полезно — ограничить его и выдать ориентиры. Особенно в России, где обучения на эту тему де-факто не существует. Да, кто-то там что-то пишет, но эти курсы перескажут вам данный ГОСТ, покажут пару рекомендаций от производителя, покажут пару кнопок в программах и выдадут сертификат. Справедливости ради, на западе тоже не все хорошо. Там уже есть и курсы, и программы, но те, что недорогие (до 5000$), очень похожи на то, что есть здесь, а все, что дороже, — просто стоят прям очень дорого и очень закрыты.
В остальном, если вы уже занимаетесь анализом целостности сигнала и питания, то, кроме отчетов, вам запрещено упоминать почти все, что здесь написано, особенно говорить, что вот тут же написано. На заборе тоже написано, но это не повод нам переходить на этот уровень.