agentee

Проектирование

Контролируемый импеданс и пары

Ширины проводников по аналитическим формулам и с расчётом полей на 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:NAME

tune добавляет меандры к короткой цепи каждой пары на величину её рассогласования и к каждому участку группы согласования, короче целевой длины, на самых длинных прямых сегментах, где выступы не пересекают другие цепи, и записывает точки обратно в проводники. Для пары сначала удлиняют участки, где ветви уже расходятся. Цепь длиннее целевой длины сообщается, но не укорачивается. 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-gen290 Ом +/-7% дифф5 мил2выступы 15 мил, длина 3500 / 3000 мил, возвратное отверстие в пределах 200 мил
usb2-hs90 Ом +/-10% дифф50 мил4длина 12000 мил
lvds100 Ом +/-10% дифф
rf-5050 Ом +/-10%0
cmos2 мм без опорной плоскости

Параметры USB взяты из рекомендаций TI по топологии высокоскоростных цепей. Помимо требований к классу, интерфейс проверяет длину от начала до конца, количество переходных отверстий на проводник, длину штыка переходного отверстия, участок без опорной плоскости под ним, заземляющее переходное отверстие рядом с каждым сигнальным переходным отверстием, а для шин - разброс времени прихода и окно относительно тактового сигнала. Он также может читать результаты готового моделирования: максимальные вносимые потери, потери на отражение и переход между режимами из расчёта FDTD, высоту и ширину глаза из моделирования канала. См. Диаграммы глаза, PDN и S-параметры.

tune работает с интерфейсами и по времени, и по длине: пару с рассогласованием в пс и шину вне тактового окна удлиняют на короткой стороне с учётом собственной задержки цепи на мм.

Улучшить это руководство · Markdown для агентов