Схема и топология платы
Схемы
Файл *.sch.toml: размещённые компоненты, цепи как списки выводов, классы цепей, шины питания и проверка уровней сигналов, а также листы для больших проектов.
Компоненты - это размещённые УГО; цепи перечисляют выводы, которые они соединяют. Проводники рисуются за вас на сетке 1,27 мм, если вы не задали их сами.
name = "lna"
board = "lna" # net classes come from this board
no_connect = ["U2.7"] # pins left open on purpose
[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8] # keep on the 1.27 mm grid
rotation = 90 # 0, 90, 180, 270, counter-clockwise
mirror = true # flip left to right before rotating
# unit = 2 # one [[parts]] per unit of a multi-unit symbol, same ref
# footprint = "SOT-89-3" # default: the symbol's footprint
# dnp = true
fields = { mpn = "Qorvo SPF5189Z" }
[[nets]]
name = "RF_OUT"
class = "RF" # a netclass of the board; without one the net is in "Default"
pins = ["C2.2", "J2.1", "L3.1"] # REF.PIN, by number or by a unique pin name
# style = "power" # wire (default) | label | power (ground and supply symbols)
# wires = [[[x, y], [x, y]], ...] # draw it yourself; check verifies it reaches every pinШины и аналоговые входы, для проверки уровня сигнала, ставятся в начале файла (или в верхней схеме набора листов):
rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] } # volts, or [min, max]
analog = ["U1.13"] # inputs read by an ADC: only min and max applyЕсли задан rails, проверка вычисляет напряжение, которое видит каждый вход с levels: резисторы (компоненты R, 1 %, если у компонента нет поля tolerance), переключатели (компоненты SW, все открытые и закрытые состояния), выходы с открытым коллектором (выключенное и низкое), внутренние подтяжки и утечка входа, каждое в своём худшем углу по диапазонам шин и резисторов. Это ошибка, если вход может оказаться между VIL и VIH, если он висит в воздухе без подтяжки к шине, если утечка через слабую подтяжку выводит его из валидного уровня, и если он может выйти за min или max. В пределах 100 мВ от порога - это предупреждение. Цепь, на которой есть что-то ещё (выход, разъём, диод, вывод питания цепи, не входящей в rails), возбуждается чем-то, что модель не учитывает, и пропускается. Конденсаторы и контрольные точки игнорируются. Двусторонний вывод может быть источником: если переключатель или открытый коллектор на цепи не показывают, что он подтянут, остальные входы на его цепи пропускаются, и он не сообщается как висящий в воздухе.
Листы
Разбейте большой проект на одну схему на раздел и соедините их в верхней схеме, которая их перечисляет. Топология размещает верхнюю.
name = "sdr" # sdr.sch.toml
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]Каждый лист - это обычный файл схемы со своими компонентами и цепями. Цепи соединяются между листами по имени, так что 3V3 на каждом листе - это одна цепь, и сигнал уходит с одного листа и приходит на другой под тем же именем. Выводы цепи должны быть компонентами на том же листе; цепь, пересекающая листы, должна иметь один и тот же class везде, где она его называет, и рисуется с метками. Ссылки уникальны во всём проекте. Лист сам по себе пропускает предупреждения о цепи с одним выводом и классе Default (остальная часть цепи и её класс могут быть на другом листе); верхняя схема запускает все проверки на соединённом проекте и рисует листы, сложенные сверху вниз. Верхний файл может содержать и свои собственные компоненты и цепи.
Проверка сообщает о выводах в двух цепях, выводах без цепи, цепях с одним выводом, нескольких выходах в одной цепи, ручных проводниках, которые не доходят до вывода или касаются вывода другой цепи, наложения деталей, посадочных местах, контактные площадки которых не покрывают выводы УГО, а также о уровнях сигналов, если задан rails. Каждая цепь в классе Default, это предупреждение, независимо от того, указан ли класс или указан Default: класс задаёт ширину, зазор, переходные отверстия и порядок маршрутизации цепи, поэтому каждая цепь должна указывать свой тип. Для предупреждения нужны плата и топология схемы; если схема только смоделирована (как examples/logic), предупреждение пропускается. Задайте плате класс для каждого типа цепи (Signal, Data, Clock, Analog, Ground, Power, RF, пары) и оставьте Default как запасной вариант, который топология использует для правил, не покрытых классом. Команда agentee show sch:lna выводит положение каждого вывода.