agentee

Плата

Импеданс и потери

Геометрия проводников по классам и слоям, импеданс по аналитическим формулам и методом конечных элементов, дифференциальные пары и модель потерь с учётом шероховатости и ENIG.

Для каждого класса цепей и слоя трассировки она находит геометрию проводника из стека слоёв (внешние слои, микрополосковая линия, внутренние, полосковая линия между ближайшими медными слоями сверху и снизу), затем импеданс (микрополоска по Хаммерстаду-Йенсену, полосковая линия по Уилеру, заземлённая копланарная линия методом конформного отображения с толщиной меди и боковыми стенками, всё без покрытия; копланарная форма даёт отклонение менее 4% от расчёта полей на ядре от 0,08 мм до 0,21 мм), ширину, соответствующую целевому значению, и пропускную способность по току по IPC-2221. agentee show <board> выводит всё это в JSON.

При solver = "field" класс проверяется 2D-решателем полей: конечно-разностное решение Лапласа на узлах на сетке с переменным шагом, выполняется на GPU через wgpu, с учётом толщины меди, паяльной маски, копланарных заземлений и пар. На эталонных значениях отклонение менее 0,5% от полосковой линии Коуна нулевой толщины и менее 0,4% от микрополоски Хаммерстада-Йенсена. Если класс не соответствует целевому, проверка предлагает ширину проводника, которая его обеспечивает. agentee calc field --netclass RF выводит полный результат (Z0, eeff, C и L на метр, задержка, сетка).

--sweep 10MHz,20GHz,21 (MCP sweep) добавляет таблицу потерь по частоте: R, L, G, C, Z0 и дБ на метр и на дюйм, раздельно для потерь в проводнике и диэлектрике. Потери в проводнике считаются по инкрементальной индукции Уилера, решаются отступом каждой медной поверхности в решателе полей (отклонение менее 1% от формулы Уилера для полосковой линии у Позара), с глубиной скин-слоя для отожжёной меди и постоянным сопротивлением, смешанным как sqrt(Rdc^2 + Rac^2). Диэлектрики описываются каузальной моделью Джорджевича-Саркара, подогнанной под er и loss_tangent каждого слоя, взятые при 1 ГГц. Шероховатость меди задаётся в стеке слоёв:

[stackup]
roughness = "0.5um"            # rms, Hammerstad-Jensen
# huray = { radius = "0.5um", ratio = 2.0 }   # or the Huray snowball model
finish = "ENIG"
nickel = "4.5um"               # ENIG nickel thickness, default 4.5 um
gold = "0.075um"               # ENIG immersion gold thickness, default 0.075 um

2D-решатель применяет шероховатость как коэффициент потерь к сопротивлению на каждой частоте. FDTD использует шероховатость и покрытие ENIG, как описано в разделе «Потери в FDTD» ниже; nickel и gold важны только при finish = "ENIG". Значения по умолчанию, середина диапазонов IPC-4552 (никель 3-6 мкм, золото минимум 0,05 мкм, заводы нацеливаются на 0,05-0,1 мкм).

Класс с diff_gap - это пара: его impedance - дифференциальный импеданс, решатель считает и нечётный, и чётный режимы. calc field тогда добавляет блок pair с Zdiff, Zcommon, импедансами и задержками нечётного и чётного режимов, коэффициентом связи (Ze - Zo)/(Ze + Zo) и насыщенной ближней перекрёстной связью длинной линии (половина коэффициента связи). Оба режима дают отклонение менее 0,5% от точной краевой связи полосковой линии Коуна. Разница в задержках нечётного и чётного режимов вызывает дальнюю перекрёстную связь на микрополоске.

docs/format.md · Markdown для агентов