agentee

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

Создание схем

Компоненты, цепи и классы с agentee edit, пакеты команд, листы для больших проектов и проверка уровней сигналов, которая находит делители между VIL и VIH.

Схема в agentee, это список деталей и список цепей. Цепь, это имя, класс и выводы, которые она объединяет. Проводники рисуются автоматически при отрисовке схемы, поэтому ни одна характеристика схемы не зависит от того, куда перетащена линия.

name = "lna"
board = "lna"

[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8]
rotation = 90
fields = { mpn = "Qorvo SPF5189Z" }

[[nets]]
name = "RF_OUT"
class = "RF"
pins = ["C2.2", "J2.1", "L3.1"]

board указывает на спецификацию платы, откуда берутся классы цепей. Установите его в первую очередь.

Редактирование командами

agentee edit sch записывает файл за вас, сохраняет комментарии и расположение, и проверяет внесённые изменения. Он отклоняет вывод, УГО или класс, которые не существуют, до записи, поэтому опечатка никогда не становится новой цепью.

agentee edit sch NAME add R1 R 10k --footprint R_0402_1005Metric --at 25.4,25.4
agentee edit sch NAME net VBUS C1.1 U1.7 --class Power
agentee edit sch NAME connect R1.2 FB
agentee edit sch NAME nc U2.3
agentee edit sch NAME note "FB divider sets 3.3 V"
agentee edit sch NAME --list
agentee edit sch help

Команды: add, remove, move, set, net, connect, disconnect, nc, unnc и note. Вывод указывается как REF.PIN, по номеру (U1.3) или по уникальному имени вывода (U1.VCC). Имя, которое разделяют несколько выводов, например GND на стабилизаторе с двумя выводами земли, является ошибкой и выводит список номеров. Если выводу присвоить цепь, в которой он уже находится, он переместится в новую цепь.

add размещает деталь справа от всех существующих на сетке 1,27 мм. Флаг --at X,Y размещает её в другом месте и выравнивает по сетке. Флаг --list выводит детали и цепи в формате JSON, а --json для любой команды возвращает разрешённые выводы и координаты.

Пакеты

Чтобы обработать больше одной детали или цепи за раз, запишите команды списком. Одна загрузка, одна проверка в конце, поэтому промежуточные состояния не сообщаются:

agentee edit sch - <<'EOF'
add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5
add C1 C 1u --footprint C_0402_1005Metric
add C2 C 1u --footprint C_0402_1005Metric
net VBUS U1.VIN U1.EN C1.1 --class Power
net 3V3 U1.VOUT C2.1 --class Power
net GND U1.GND C1.2 C2.2 --class Ground --style power
note "LDO, 600 mA"
EOF
added U1 (AP2112K-3.3)
added C1 (C)
added C2 (C)
VBUS now joins U1.1, U1.3, C1.1
3V3 now joins U1.5, C2.1
GND now joins U1.2, C1.2, C2.2
noted: LDO, 600 mA
warning: ./power.sch.toml: power part U1: body overlaps C1 (parts[1])
0 errors, 1 warnings in the files this touched

Имена выводов разрешаются в номера, и вывод указывает, какие именно. Третий аргумент add, это значение; УГО без значения по умолчанию требует его.

agentee edit sch build.txt делает то же самое из файла. Пакеты работают с одной схемой, которая есть в проекте. Если схем несколько, выполняйте каждую команду отдельно и указывайте схему: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.

Классы для всех цепей

Каждая цепь получает class из спецификации платы. Цепь в классе Default, это предупреждение, независимо от того, указан ли класс или указан Default, потому что класс определяет ширину, зазор, переходные отверстия и порядок трассировки на плате. Создайте класс для каждого типа цепи: Signal, Power, Ground, Clock, RF, каждая пара.

--style power рисует цепь с символами земли или питания вместо проводников, а --style label, с метками цепей.

Открытые выводы

Вывод, не входящий ни в одну цепь, сообщается. Выводы, оставленные открытыми намеренно, указываются в no_connect:

agentee edit sch NAME nc U2.7 U2.8

Шины и проверка уровней сигналов

Добавьте символам логики и микроконтроллеров таблицу [levels] из даташита (см. Детали), а схеме, таблицу rails:

rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] }
analog = ["U1.13"]

Проверка вычисляет напряжение, которое видит каждый вход с уровнями, в худшем углу его шин и допусков резисторов (1%, если у детали нет поля tolerance), через переключатели во всех состояниях, с выключенными и низкими выходами с открытым коллектором, с внутренними подтяжками и утечками входов. Это ошибка, если вход:

  • может находиться между VIL и VIH, как делитель, попадающий в середину,
  • висит без привязки к шине,
  • выводится из валидного уровня утечкой через слишком слабую подтяжку,
  • может выйти за пределы min или max.

В пределах 100 мВ от порога, предупреждение. Входы, перечисленные в analog, считываются АЦП, поэтому к ним применяются только их пределы. Цепь, содержащая то, что проверка не может смоделировать, например выход или разъём, пропускается, а не угадывается.

Листы

Когда деталей становится несколько десятков, выделите каждый раздел в отдельную схему и перечислите их в верхней. Топология размещает верхнюю.

name = "sdr"
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]

Каждый лист, это обычный файл схемы. Цепи объединяются между листами по имени, поэтому 3V3 на каждом листе, это одна цепь. Выводы цепи должны быть на листе, где она перечислена, ссылки уникальны во всём проекте, а цепь, пересекающая листы, требует одного и того же класса везде, где он указан. Лист отдельно пропускает предупреждения о единственном выводе и классе Default, так как остальная часть цепи может быть в другом месте; верхняя схема выполняет все проверки на объединённом проекте.

Проводники, нарисованные вручную

Оставьте wires пустым, и agentee проложит их. Если вы хотите определённую отрисовку, задайте цепи собственные wires = [[[x, y], [x, y]], ...], и проверка подтвердит, что они достигают каждого вывода и не касаются других цепей.

Посмотрите

agentee render sch:NAME -o sch.png
agentee show sch:NAME

show выводит позицию каждого вывода, что необходимо агенту для размещения детали рядом с другой.

Что сообщает проверка

Выводы в двух цепях, выводы без цепи, цепи с одним выводом, несколько выходов в одной цепи, ручные проводники, не достигающие вывода или касающиеся другой цепи, перекрывающиеся детали, посадочные места, контактные площадки которых не покрывают выводы УГО, цепи в Default и уровни сигналов, если задан rails.

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