Проектирование
Контролируемый импеданс и пары
Ширины проводников по аналитическим формулам и с расчётом полей на GPU, копланарные СВЧ-линии, дифференциальные пары, согласование длин и интерфейсы вроде USB 3.
Линия с контролируемым импедансом - это обещание между тремя вещами: стек слоёв, ширина проводника и медь вокруг него. agentee хранит это обещание в одном месте, в классе цепей, и проверяет каждый проводник класса на соответствие ему.
Спросите сначала
agentee calc impedance --layer F.Cu --target 50ohm
agentee calc impedance --layer F.Cu --target 90ohm --gap 0.15mm
agentee calc trace-width --current 2AЭти команды читают плату в проекте. Первая отвечает на вопрос о ширине для 50-омного микрополоскового проводника на верхнем слое; вторая - для дифференциальной пары 90 Ом с зазором 0,15 мм:
{
"geometry": { "er": 4.4, "h_mm": 0.2104, "kind": "microstrip", "t_mm": 0.035 },
"line": { "coplanar_gap_mm": null, "diff_gap_mm": 0.15 },
"target_ohm": 90.0,
"width_for_target_mm": 0.2682
}Замкнутые формулы - это Hammerstad-Jensen для микрополосковой линии, Wheeler для полосковой линии и конформное отображение для заземлённой копланарной линии, все без покрытия. Они игнорируют паяльную маску и, на тонком препреге, могут ошибаться на несколько Ом.
Решите поле
agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21Решатель полей выполняет расчёт Лапласа методом конечных разностей поперечного сечения на GPU, с учётом толщины меди, паяльной маски, копланарных заземлений и пар. Он попадает в 0,5% от точной полосковой линии Cohn и в 0,4% от микрополосковой линии Hammerstad-Jensen, за долю секунды:
{
"closed_form_uncoated_ohm": 51.12,
"coplanar_gap_mm": 0.2,
"field": {
"backend": "gpu",
"eeff": 3.094,
"delay_ps_per_mm": 5.87,
"z0": 49.88
},
"solder_mask": true,
"width_mm": 0.3
}--sweep добавляет таблицу потерь по частотам: R, L, G, C, Z0 и дБ на метр и на дюйм, разделённые на потери в проводнике и диэлектрике, с учётом скин-эффекта, шероховатости меди из стека (roughness или huray) и каузальной модели диэлектрика. Без GPU 2D-решатель переключается на CPU.
Поставьте цель на класс
[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"С solver = "field" проверка рассчитывает класс на каждом слое, который он может использовать, и, если он не соответствует, говорит, насколько и что использовать:
error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)Оставьте track_width пустым, и проверка рассчитает его для первого слоя. Там, где одна ширина не подходит для всех слоёв, укажите widths = { "In2.Cu" = "0.16mm" }.
Держите это на плате
Класс - это обещание; топология платы его выполняет. Проверка измеряет каждый проводник класса импеданса:
impedance-trace- это ошибка, когда ширина проводника, его сужения или медь рядом с ним на внешнем слое выводят его импеданс за пределы допуска. Копланарная линия с полигоном слишком далеко или с слишком длинным сужением ловится здесь.impedance-widthпредупреждает о проводнике класса с другой шириной.neckdownотмечает проводник уже своего класса на коротком участке к малой контактной площадке, что допускается до длиныneckdownкласса (0,5 мм по умолчанию).
agentee neck NAME сужает существующие концы проводников, которые входят в контактную площадку уже проводника, а --taper постепенно увеличивает ширину обратно на короткой цепи.
Дифференциальные пары
[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"diff_gap делает класс парой, и его импеданс дифференциальным. Цепи, заканчивающиеся на _P и _N, _DP и _DN, + и -, или P и N, образуют пары сами; в противном случае назовите их в топологии платы:
[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"calc field --netclass USB добавляет блок pair: Zdiff, Zcommon, импедансы и задержки нечётного и чётного мод, коэффициент связи и перекрёстные помехи на ближнем конце длинной линии. Проверка сообщает рассогласование каждой пары в мм и пс, участки с зазором больше max_uncoupled и пары, идущие параллельно менее 80% длины. Пару через последовательные элементы, например через AC-конденсаторы на линии USB, измеряют от конца до конца. agentee route NAME --nets 'USB_*' --pairs трассирует обе половины вместе.
Согласование длин
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"agentee tune NAME
agentee show pcb:NAMEtune добавляет меандры к короткой цепи каждой пары на величину её рассогласования и к каждому участку группы согласования, короче целевой длины, на самых длинных прямых сегментах, где выступы не пересекают другие цепи, и записывает точки обратно в проводники. Для пары сначала удлиняют участки, где ветви уже расходятся. Цепь длиннее целевой длины сообщается, но не укорачивается. agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm выдаёт точки одного меандра на выбранном сегменте. Длины и задержки цепей есть в show.
Интерфейсы
Интерфейс задаёт требования к линии, и проверка измеряет медь по всем пунктам сразу:
[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]| пресет | импеданс | рассогласование | переходные отверстия | прочее |
|---|---|---|---|---|
usb3-gen1, usb3-gen2 | 90 Ом +/-7% дифф | 5 мил | 2 | выступы 15 мил, длина 3500 / 3000 мил, возвратное отверстие в пределах 200 мил |
usb2-hs | 90 Ом +/-10% дифф | 50 мил | 4 | длина 12000 мил |
lvds | 100 Ом +/-10% дифф | |||
rf-50 | 50 Ом +/-10% | 0 | ||
cmos | 2 мм без опорной плоскости |
Параметры USB взяты из рекомендаций TI по топологии высокоскоростных цепей. Помимо требований к классу, интерфейс проверяет длину от начала до конца, количество переходных отверстий на проводник, длину штыка переходного отверстия, участок без опорной плоскости под ним, заземляющее переходное отверстие рядом с каждым сигнальным переходным отверстием, а для шин - разброс времени прихода и окно относительно тактового сигнала. Он также может читать результаты готового моделирования: максимальные вносимые потери, потери на отражение и переход между режимами из расчёта FDTD, высоту и ширину глаза из моделирования канала. См. Диаграммы глаза, PDN и S-параметры.
tune работает с интерфейсами и по времени, и по длине: пару с рассогласованием в пс и шину вне тактового окна удлиняют на короткой стороне с учётом собственной задержки цепи на мм.