agentee

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

Спецификации плат, стеки слоёв и классы цепей

Выберите завод и реальный стек слоёв, задайте класс цепей для каждого типа цепи и укажите целевые значения импеданса и тока, чтобы проверка рассчитала ширины проводников.

Спецификация платы является первым файлом проекта и тем, с которым сверяется всё остальное. Она задаёт производителя плат, стек слоёв, контур, типы переходных отверстий и классы цепей. Сначала сделайте её правильно: топология платы, разведённая по неверному стеку слоёв, имеет неверное сопротивление на каждой контролируемой линии.

agentee new board sensor-node

Выберите производителя плат

name = "sensor-node"
fab = "jlcpcb"

fab выбирает пресет правил: generic, jlcpcb или hdi. Пресет является таблицей, ключами которой служат количество слоёв меди, толщина внешней меди и покрытие, поэтому плата на четыре слоя с медью 1 унция получает более строгие правила для проводников, чем плата на два слоя с медью 2 унции. Значения jlcpcb следуют странице возможностей JLCPCB построчно; справочник по правилам даёт каждое значение с указанием строки, из которой оно взято, и нескольких мест, где agentee намеренно строже.

Переопределите любое правило в [rules]:

[rules]
min_track_width = "0.15mm"
min_clearance = "0.15mm"

Выберите реальный стек слоёв

Не вводите толщины слоёв вручную. Выберите собственную сборку производителя плат:

agentee stackups --fab jlcpcb --layers 4
agentee stackups --fab jlcpcb --layers 6 --thickness 1.6
agentee stackups JLC04161H-7628

Пресеты покрывают все варианты сборки плат с импедансом у JLCPCB от 4 до 20 слоёв и толщиной от 0,4 до 3,0 мм, стандартные сборки у PCBWay от 4 до 18 слоёв и два универсальных варианта HDI. Пресеты JLCPCB используют собственный код завода, JLC04161H-7628: слои, толщина, внешний и внутренний медь, препрег. Последняя команда выводит слои одного пресета с их толщиной и диэлектрической проницаемостью.

agentee edit board sensor-node stackup --preset JLC04161H-7628 --finish ENIG

Заказывайте плату с той же сборкой: если JLCPCB использует другой стек слоёв, все рассчитанные вами значения импеданса будут неверны.

Контур, вырезы и отверстия

agentee edit board sensor-node outline --size 50,30 --corner-radius 1mm
[[outline.cutouts]]
origin = [20, 12]
size = [6, 2]
corner_radius = 1              # half the width makes a slot

Контур задаётся прямоугольником с size, origin и corner_radius или многоугольником из points. Вырез, это окно, паз или большое отверстие, просверленное насквозь, и всё, что зависит от края (медь до края, контактные площадки, полигоны, трассировщик, симуляции), рассматривает край выреза как край платы. Вырез в файле топологии платы отличается: он лишь не даёт полигонам заходить на область на некоторых слоях.

Типы переходных отверстий

[[vias]]
name = "std"
drill = "0.3mm"
diameter = "0.6mm"

Плата может указывать несколько типов переходных отверстий. Сквозное отверстие не требует дополнительных параметров; слепые, скрытые и микровырезы требуют HDI-завода и описаны в HDI: микровырезы и ламинирование.

Классы цепей

Класс цепей определяет, что это за цепь: ширина проводника, зазор, переходные отверстия и целевые значения, которым проверка её придерживает. Назначайте отдельный класс каждому типу цепи. Цепь, оставшаяся в Default, вызывает предупреждение, потому что класс определяет, как она трассируется.

agentee edit board sensor-node class Signal --track-width 0.2mm --clearance 0.2mm --via std
agentee edit board sensor-node class Power --current 2A --max-temp-rise 10C
agentee edit board sensor-node class USB --impedance 90ohm --diff-gap 0.15mm --layers F.Cu
agentee edit board sensor-node class RF --impedance 50ohm --coplanar-gap 0.2mm --solver field --layers F.Cu

class изменяет класс с таким именем на месте или добавляет новый. Что делают целевые значения:

  • current проверяется по IPC-2221 на каждом слое, который может использовать класс, при max_temp_rise (по умолчанию 10 C). Внутренние слои пропускают меньше тока, чем внешние, и проверка указывает ширину, которая его пропускает, на каждом:
error: blinky.board.toml: blinky netclass Power on In2.Cu: 0.6mm carries only 0.451A for a 10C rise, 1A needs 1.7994mm (IPC-2221)
  • impedance проверяется на каждом слое из layers. Не указывайте track_width, и проверка рассчитает его на первом слое; задавайте widths для каждого слоя, если одна ширина не подходит для всех.
  • diff_gap делает класс дифференциальной парой, а её импеданс, дифференциальным импедансом.
  • coplanar_gap делает её копланарной с заземлением: полигон держит этот зазор с обеих сторон, а плоскость находится ниже.
  • solver = "field" проверяет класс с помощью полевой решателя на GPU, который учитывает паяльную маску и толщину меди, вместо формул в замкнутой форме.

Посмотрите, что даёт стек слоёв

agentee check
agentee show board:sensor-node

show выводит разрешённую плату в формате JSON: для каждого класса и слоя геометрия трассы (микростриpline на внешних слоях, стриплайн внутри), импеданс, ширина, соответствующая целевому значению, и ток, который она пропускает. Если класс не соответствует целевому значению, проверка указывает, насколько и что использовать:

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)

Вставьте ширину, запустите проверку снова. Контролируемый импеданс и пары раскрывает тему подробнее.

Настройки правил проектирования

Проверки топологии платы берутся из реестра правил, каждое из которых имеет идентификатор, категорию и уровень серьёзности по умолчанию. Плата может отключать их или изменять уровень серьёзности:

[drc]
disable = ["silk-width"]
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }

agentee drc NAME --list выводит все правила с указанием, применяются ли они к этой плате и почему. Справочник по проверкам правил проектирования перечисляет их все.

Чек-лист

  • Указан fab, и пресет preset стека слоёв, который завод действительно собирает.
  • Один класс на каждый тип цепи: сигнал, питание, земля, каждый импеданс, каждая пара.
  • Целевые значения импеданса и тока в классах, а не ширины, рассчитанные вручную.
  • solver = "field" для каждого класса, где важны несколько ом.
  • agentee check без ошибок до того, как схема начнёт называть классы.

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