Контроль импеданса прямо в редакторе плат: как мы посчитали линии передачи на собственном 2D BEM-решателе

(Delta Design профессиональная 4.2.2 + опция high speed на основе SimPCB)
Почему мы вообще за это взялись?
Если вы проектируете что-то с DDR, PCIe, USB 3.x или гигабитным Ethernet, ваш маршрут контроля импеданса, скорее всего, выглядит так. Сначала Polar Si9000 или Z-planner: подбираем стек, материал, ширину и зазор под целевые 50 и 100 Ом (или другое значение волнового сопротивления в зависимости от требований к интерфейсу). Полученные цифры переносим в САПР и трассируем. Потом, ближе к концу, выгружаем плату через ODB++ в HyperLynx или Sigrity и смотрим, что получилось на самом деле.
Проблема этого маршрута не в том, что он плохой — он рабочий и десятилетиями проверенный. Проблема в разрыве обратной связи. Калькулятор структур считает идеальное сечение: одна ширина, один зазор, один набор слоёв. Реальный проводник по дороге от передатчика к приёмнику меняет слой два-три раза, сужается у контактной площадки, проходит через переходные отверстия, местами расходится в дифпаре на обход препятствия. И всё это вы увидите только тогда, когда плата уже разведена и выгружена во внешний симулятор — то есть в момент, когда переделывать дороже всего.
Мы хотели закрыть этот разрыв в самом очевидном месте: считать импеданс по фактической топологии, в том же редакторе, где топология рисуется, и в тот момент, когда её ещё дёшево править. Не заменить HyperLynx и Sigrity — про границы применимости будет отдельный раздел, — а дать инженеру быструю проверку в цикле трассировки.
Так появился мастер SimPCB. В релизе 4.2.2 он может выполнять два вида расчёта волнового сопротивления: без потерь и частотный анализ.
Что под капотом?
Решатель ー наш собственный, квазистатический, двумерный, основанный на методе граничных элементов (BEM).
Логика классическая для задач такого типа. Для каждого поперечного сечения линии решается электростатическая задача: находим матрицу погонных ёмкостей C с реальными диэлектриками стека, затем повторяем расчёт, заменив все диэлектрики вакуумом, и получаем C₀. Погонная индуктивность восстанавливается из второй задачи: L = μ₀ε₀·C₀⁻¹. Дальше всё стандартно:
Z₀ = √(L/C)
Tpd = √(L·C)
Vp = 1/√(L·C)
εeff = C/C₀
Почему граничные элементы, а не конечные элементы или сетка по объёму? У микрополосковой линии граница открытая — поле уходит в воздух над проводником. Объёмным методам приходится либо ставить искусственную стенку далеко от структуры и раздувать сетку, либо мириться с погрешностью от этой стенки. BEM дискретизирует только границы раздела (поверхности проводников и границы диэлектриков), неизвестных получается на порядок меньше, открытая граница учитывается естественно через ядро задачи. Для нашего сценария — сотни цепей и тысячи сегментов, которые надо пересчитывать на каждой итерации трассировки, — это решающий аргумент по скорости.
Квазистатическое приближение означает, что мы считаем распространение квази-TEM: поперечные размеры структуры малы по сравнению с длиной волны. Для типовых стеков печатных плат это честно работает до десятков гигагерц. Там, где это перестаёт выполняться — резонансы полостей, излучение, сложная трёхмерная геометрия, — нужен полноволновой 3D-решатель, и мы на эту территорию не заходим. Пока не заходим).
Что модель учитывает, а что нет?
Это самый важный раздел статьи, и я хочу пройти его прямо, без маркетинговых умолчаний. Инженер, который узнаёт про ограничение из собственного расхождения с измерениями, больше инструментом не пользуется.
Учитывается:
Одиночные линии передачи и дифференциальные пары. Переходные отверстия в составе цепи. Полный стек из библиотеки материалов: любой слой, который в нём есть, с его диэлектрической проницаемостью, включая паяльную маску. Реальная геометрия проводника из топологии: ширина каждого сегмента, слой, длина, смена слоев по трассе. В качестве опорного слоя берется ближайший слой стека.
Не учитывается в 4.2.2:
Соседняя медь на том же слое. Отсюда прямое следствие: копланарные структуры (проводник с полигоном рядом на том же слое) сейчас не поддерживаются — для них расчёт даст импеданс изолированной линии, то есть завышенный. Если у вас копланар с боковой землёй, знайте об этом ограничении.
Вырезы, разрезы и антипады в опорном слое. Модель считает опору сплошной. Классический случай трассы, идущей над разрезом между двумя питаниями, будет посчитан оптимистично.
Шероховатость проводящего слоя. В режиме без потерь это безразлично; в частотном анализе планируем отдельный вид анализа, связанный с потерями, к следующему релизу.
Переходные отверстия
Это то, чего нет во встроенных калькуляторах конкурентов и ради чего вы обычно и уходите во внешний симулятор.
Отверстие у нас — не добавка к длине трассы и не абстрактный коэффициент. Это модель со стволом и реальными опорными слоями стека, которые ствол проходит. Главное: задержка считается с учётом фактического пути сигнала — того, на каком слое проводник в отверстие вошёл и на каком вышел. Если сигнал пришёл на первом слое и ушёл на четвёртом из восьмислойки, работает только та часть ствола, по которой он реально прошёл, а не вся высота отверстия.
Честное ограничение: в расчёте без потерь путь сигнала учитывается не на основе физических явлений, а на основе геометрических соотношений.
Резонансы стаба, то есть неиспользованной части ствола, в квазистатике не появляются — это частотное явление, его увидит уже частотный и временной анализ следующих версий.
Два режима расчёта
Без потерь (UF)
Чистая LC-модель. Никакой частоты на входе, никаких потерь: на выходе Z₀ (или Zdiff, Zodd, Zcomm, Zeven для пар), погонные C и L и эффективная диэлектрическая проницаемость, плюс геометрия каждого сегмента.
Это рабочая лошадка для итераций трассировки. Вопрос, на который режим отвечает: попадает ли моя реальная разводка в целевые 50 и 100 Ом с заданным допуском (допуск на импеданс можно задать для любого интерфейса), и где именно не попадает. Считается быстро, запускать можно хоть после каждой правки стека.
Частотный анализ (FA)
Здесь решается уже полная задача с матрицей RLGC на частоте: появляются сопротивление проводника со скин-эффектом, проводимость диэлектрика. Импеданс (Z₀ и Zdiff) перестаёт быть константой и начинает плыть — особенно заметно на нижних частотах, где R сравнимо с ωL, и импеданс уходит вверх и становится комплексным.
Частоту можно задать двумя способами: напрямую (FREQ) или через фронт сигнала (TR), что инженеру обычно ближе, потому что фронт он знает из даташита или из IBIS-модели. Перевод сейчас идёт по формуле:
FREQ = 1 / (10 · TR)
При TR = 300 пс это даёт примерно 333 МГц, при TR = 100 пс — 1 ГГц.
В следующем релизе знаменатель станет настраиваемым. Если у вас есть аргументированное мнение, какой коэффициент должен стоять по умолчанию, напишите в комментариях.
Второе временное упрощение: коэффициент диэлектрических потерь сейчас фиксирован на типовом для FR-4 значении Df = 0,02, независимо от материала в стеке. Дальше он будет браться из библиотеки материалов. Практический вывод: пока не стоит полагаться на частотный расчёт для материалов с низким тангенсом потерь — на Megtron или Rogers цифра проводимости диэлектрика будет пессимистичной.
И сразу отвечу на вопрос, который в этом месте возникает: почему мы не выводим потери, если считаем R и G? Расчёт потерь выйдет отдельным видом анализа в следующем релизе.
Можно считать одну точку, а можно развёртку: задаёте минимум, максимум и шаг по TR или по FREQ и получаете семейство кривых по каждой цепи.
Как читать результаты?
Результат — две связанные таблицы.
Верхняя, «Объекты расчёта», — это уровень цепи: по каждой цепи, сигналу или дифпаре выводится либо диапазон (Z₀ от и до, ширина), либо сумма ( C, L, длина). Нижняя — разбор выбранного объекта на примитивы: сегменты трассы, переходные отверстия и, для дифпар, отдельно застёгнутые и расстёгнутые участки. Там уже конкретные значения с координатами (Рис.1).
Цвет строки в верхней таблице берётся по наихудшему примитиву цепи. Зелёный — попали в допуск (по умолчанию ±10% от целевого), жёлтый — в отклонение (±20%), красный — вышли за него (пороговые значения настраиваются). Тут стоит сразу дать практический совет: первые прогоны на плотной плате будут пестрить красным из-за коротких участков — сужений у контактных площадок и фанаута. Смотрите на нижнюю таблицу и на длину сегмента: участок в треть миллиметра с импедансом 70 Ом на фоне 60-миллиметровой трассы физически безразличен, а строку он покрасит (Рис.2).

Обратная связь с редактором работает в обе стороны: при включённой подсветке все посчитанные объекты окрашиваются на плате по той же градации, остальная плата приглушается, а клик по строке в таблице зумит и выделяет нужный сегмент. Именно эта связка и есть весь смысл встроенного расчёта — вы видите не список чисел, а место на плате.
Для дифпар доступны оба режима — дифференциальный (Zdiff, Zodd) и общий (Zcomm, Zeven). Напомню соотношения, чтобы не было классической путаницы: Zdiff = 2·Zodd, Zcomm = Zeven/2. На расстёгнутых участках, где связь между проводниками потеряна, Zodd и Zeven сходятся к Z₀ одиночного проводника — по таблице сегментов это хорошо видно, и это, пожалуй, самый наглядный способ объяснить топологу, почему пару нельзя разводить «как получится» (Рис.3).

Расчёты сохраняются в дереве проекта отдельными файлами: можно держать несколько вариантов, возвращаться к ним, добавлять цепи в существующий расчёт (Рис.4).

Практика: смотрим на реальной плате
Для примера в интерфейсе DDR есть цепь MDDR_DQ2, которая должна быть с волновым сопротивлением 50 Ом (±10%). Есть несколько сегментов данной цепи, которые не соответствуют требованию и фактически равны 40 Ом (Рис.5).

После изменения ширины проводника с 0,2 мм на 0,12 мм (Рис.6) запустим заново моделирование в мастере Анализа целостности сигнала (Рис.7). Практически вся цепь соответствует данному ограничению (50 Ом ±10%), кроме переходных отверстий и небольших фанаутов, соединяющих вывод компонента и переходное отверстие .


Сверка в SimPCB Lite и Ansys
Мы верифицировали решатель по внутренней методике: одни и те же структуры считались нашим BEM-решателем в SimPCB и в Ansys. Результаты сравнивались по первичным RLCG и вторичным Zo и Zdiff параметрам.
Где мы честно не конкуренты?
Инструмент решает задачу контроля волнового сопротивления по фактической топологии в цикле проектирования. Он не решает и не пытается решать следующее: полноволновые трехмерные эффекты, резонансы стабов и полостей, целостность питания по переменному току, перекрёстные помехи, глазковые диаграммы, поведение с учётом IBIS-моделей драйверов.
Если ваш проект требует именно этого, HyperLynx, Sigrity и Ansys остаются на своих местах. Разница в том, что теперь до них можно дойти с платой, у которой импеданс уже приведён в порядок, а не выяснять на финальной стадии, что треть трасс не в допуске.
Отдельно про Cadence: в Allegro похожий встроенный мастер Analysis Workflows есть, и он развит лучше нашего по числу маршрутов, но переходные отверстия в его расчёте не учитываются. Во встроенных калькуляторах Altium и Mentor расчёт волнового сопротивления живёт на уровне стека, а не на уровне реальной топологии, и для учёта разводки всё равно нужен внешний софт.
Что дальше?
До конца года мы рассчитываем выпустить временной анализ (оценка формы сигнала), расчёт задержек, расчёт потерь как отдельный вид анализа с учетом шероховатости и реальных характеристик материалов (с учетом коэффициента диэлектрических потерь) и расчёт по постоянному току — то есть начало работ по целостности питания. Плюс те доработки, о которых написано выше: настраиваемый коэффициент перевода фронта в частоту, Df из библиотеки материалов, импеданс отверстия с учётом пути сигнала.
Вопрос к вам
Мы строим дальнейший план по модулю SimPCB, и нам важно услышать практиков, а не только собственные гипотезы.
Первое: какие виды расчётов вам нужны в первую очередь? Потери, перекрёстные помехи, временной анализ с глазковой диаграммой, поддержка IBIS-моделей или достаточно задать сигнал через форму сигнала на первом этапе, целостность питания по постоянному току, что-то ещё?
Второе: какие форматы импорта и экспорта критичны? Мы всерьез рассматриваем экспорт S-параметров в Touchstone (.s2p/.s4p), чтобы результат можно было утащить в свой симулятор. Что ещё должно быть в этом списке — csv для скриптов, импорт в html, что-то из вашего маршрута?
И третье, более общее: на каком шаге вашего реального маршрута встроенный расчёт был бы полезнее всего — при подборе стека, в процессе трассировки, на финальной проверке перед выпуском?
KioskNews shows a cleaned-up reading view extracted from the publisher’s page — the original always lives on their site, not ours.