Схема и топология платы
Авторазводка
agentee route, tie, tune и neck: разводка по сетке с сохранением ширины проводников по классам, зазоров и переходных отверстий, соединения с плоскостями, согласование длин и neck-down.
agentee route NAME --nets 'FX_D*,SPI_*' --layers F.Cu,In2.Cu,B.Cu (MCP route) прокладывает линии связей указанных цепей на сетке (--grid, по умолчанию 0.05 мм) и добавляет проводники и переходные отверстия в файл топологии как обычные [[tracks]] и [[vias]], так что их можно редактировать позже. Он сохраняет ширину, зазор и layers каждого класса цепей относительно каждой контактной площадки, проводника, переходного отверстия, отверстия и края платы, определяет размеры комнаты для каждого класса переходных отверстий по их собственной площадке, сверлу и слоям (микропереходное отверстие помещается там, где сквозное не помещается, и микропереходное отверстие может находиться рядом со скрытым переходным отверстием на других слоях), держит новые переходные отверстия на расстоянии min_hole_to_hole от каждого сверла, чей охват делит с ними диэлектрик, и их отверстия на расстоянии min_via_hole_to_copper от площадок, проводников и переходных отверстий других цепей, держит их в стороне от SMD-площадок любой цепи, включая собственную (медь переходного отверстия не должна касаться площадки, via-cuts-pad, а отверстие должно оставаться на расстоянии min_hole_to_smd_pad от него, hole-to-smd-pad, если --via-in-pad, MCP via_in_pad, не позволяет ему полностью находиться внутри SMD-площадки своей цепи со сверлом не более max_filled_via_drill), использует переходные отверстия класса для смены слоя, самые дешевые, чей охват покрывает оба слоя (--via uv-top,core или MCP via, чтобы выбрать из других имен, --via-cost в мм проводника, по умолчанию 3, умноженное на cost переходного отверстия), начисляет --bend-cost мм проводника за каждый изгиб на 45 градусов (по умолчанию 0.1, в три раза больше для 90) и никогда не двигает то, что уже есть, если не задан --reroute, который сначала удаляет проводники и переходные отверстия указанных цепей. Соединение, не нашедшее свободный путь, перепрокладывает проложенные цепи, которые оно пересечет или чьи отверстия переходных отверстий оно приблизит на расстояние менее min_hole_to_hole от своих (отверстия, чей охват делит диэлектрик), запоминает место как перегруженное, и эти цепи возвращаются в очередь. Поиск идет в направлениях под 45 градусов и начисляет стоимость за каждый изгиб, поэтому пути выходят прямыми участками с изгибами на 45 градусов; затем участки подтягиваются с помощью двухсегментных доглег на 45 градусов, и любой оставшийся угол в 90 градусов скругляется, если это позволяет зазор. Только выступ к центру площадки вне сетки может находиться под другим углом. Если ширина класса не помещается в конечную площадку (шире меньшей стороны площадки или слишком близко к соседним площадкам, чтобы сохранить зазор), маршрут сужается: проводник шириной класса останавливается до площадки, а отдельная запись [[tracks]] с явной width идет прямо в центр площадки, длиной не более neckdown класса и шириной не менее min_track_width. Его ширина - наименьшая из ширины класса, меньшей стороны площадки и максимальной, сохраняющей зазор, округленная вниз до 0.01 мм (или ровно min_track_width, если округление опустит ниже, а неокругленная ширина не опускает); широкий проводник начинается в первой точке от площадки, где его полная ширина сохраняет зазор (и, для площадки уже проводника, за пределами площадки). Площадки одной цепи, которые касаются, как термальная площадка, собранная из нескольких записей площадок, считаются одной широкой площадкой. Пары, проложенные с --pairs, не сужаются. Соединение цепи, у которой уже есть свежая медь, начинается с этой меди. Когда все на месте, каждое проложенное соединение, использующее переходные отверстия, снова пробуют на одном слое за раз, удерживая остальные фиксированными, и однослойный маршрут заменяет его, если он не длиннее на 25% плюс 1 мм. Затем переходные отверстия соседних параллельных соединений, меняющих слой друг рядом с другом, сдвигаются вдоль своих проводников на общую строку или столбец на сетке, если место законно и соединение сохраняет длину (ноги пар, удерживаемые --pairs, и цепи с несколькими соединениями остаются на месте). Цепь в интерфейсе с max_vias держит трассу (каждую цепь дорожки, включая последовательные компоненты) в пределах: маршрут с слишком большим количеством переходных отверстий снова пробуют с более дорогими переходными отверстиями, затем на одном слое, и завершается ошибкой с причиной, если ни один не подходит. Вторая цепь пары притягивается к своей паре на зазоре пары; --pairs сначала пытается проложить обе половины вместе как один связанный проводник. Если несколько соединений не удаются, проложите их снова вместе с цепями вокруг и --reroute, чтобы маршрутизатор мог перепроложить и переупорядочить всю область, или уменьшите до --grid 0.025. --dry-run сообщает без записи. Сначала вручную проложите важные цепи, затем позвольте маршрутизатору заполнить остальное, класс за классом.
Цепь с записью [[zones]] - это цепь плоскости. Глоб в --nets никогда не совпадает с ней, поэтому --nets '*' прокладывает все сигналы и питания, у которых нет полигона, и оставляет землю плоскостям; укажите цепь точно, чтобы проложить ее проводниками все же. Переходные отверстия, размещенные правилами [[stitching]], не являются препятствиями для маршрутизатора: правило размещает их снова вокруг новой меди.
agentee tie NAME [--nets GND] [--dry-run] (MCP tie) соединяет каждую SMD-площадку цепи плоскости с ближайшим слоем, который покрывает ее зона, коротким выступом и переходным отверстием рядом с площадкой, что является способом, которым площадки земли и питания присоединяются к плоскости, а не проводниками между ними. Переходное отверстие находится на стороне площадки, противоположной центру компонента, как можно ближе: его медь в стороне от каждой SMD-площадки (включая собственную, так что без via-in-pad), его отверстие на расстоянии min_hole_to_smd_pad от них, min_hole_to_hole от других отверстий, min_via_hole_to_copper и зазор класса от других цепей, min_copper_to_edge от контура, и выступ в стороне от других цепей на слое площадки. Оно пробует 16 направлений, начиная с ближайшего к внешнему, до 1.2 мм за площадкой. Площадка, у которой уже есть переходное отверстие ее цепи в пределах 0.8 мм от края, остается нетронутой, сквозные отверстия и шарики BGA (escape обрабатывает их) пропускаются, и площадка без законного места перечисляется под failed. Выступы и переходные отверстия добавляются как обычные [[tracks]] и [[vias]].
agentee neck NAME [--nets 'VBUS,RF_*'] [--taper] [--dry-run] (MCP neck) сужает уже существующий медный слой. Команда рассматривает оба конца каждого проводника указанных цепей (по умолчанию все), которые заканчиваются внутри контактной площадки своей цепи на своём слое, и выбирает те, которые шире меньшей стороны площадки или чья полная ширина нарушает допустимый зазор в пределах длины neckdown (плюс одна ширина проводника) от площадки. Такой конец подрезается: проводник сохраняет свою ширину от места среза наружу, а новая запись [[tracks]] с явным width идёт от старой точки конца в площадке до среза, по старому пути. Ширина шейки равна наименьшему из ширины проводника, меньшей стороны площадки и максимальной ширины, сохраняющей зазор вдоль шейки, округлённому вниз до 0,01 мм (или ровно min_track_width, как описано выше). Срез выполняется в первой точке, с шагом 0,01 мм, где полная ширина сохраняет зазор на протяжении neckdown плюс одна ширина проводника (и, для площадки уже проводника, находится за пределами площадки); шейка никогда не длиннее neckdown и не короче min_track_width, иначе конец перечисляется в failed с указанием причины и остаётся без изменений. Площадка, собранная из нескольких записей площадок одной цепи, которые соприкасаются, считается одной широкой площадкой. Флаг --taper плавно увеличивает ширину по короткой цепочке вместо одной шейки: после узкой шейки следуют ещё две записи, каждая на одну треть пути от ширины шейки к ширине проводника, суммарно не длиннее neckdown (три ширины шейки, максимум). Медь только сужается, поэтому новые ошибки зазоров не возникают; файл редактируется на месте (все остальные строки сохраняются), а сохранённые заполнения полигонов обновляются. Отчёт перечисляет каждую шейку (индекс проводника, цепь, площадка, причина, ширина, длина, записи) и подсчитывает изменённые и добавленные проводники.
Пары и правила длины также хранятся в топологии платы:
[[pairs]] # optional: nets ending _P/_N, _DP/_DN, +/-, P/N in a class
p = "USB_DP" # with diff_gap are paired on their own
n = "USB_DN"
max_skew = "0.1mm" # or `max_skew` on the net class
[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"] # * and ? globs
tolerance = "0.5mm"
# target = "42mm" # default the longest memberПроверка сообщает рассогласование каждой пары в мм и пс (из эффективной диэлектрической проницаемости слоя), участок пары, проложенный с неправильным зазором, и пары, которые проводят менее 80% своей длины параллельно. Группы согласования указывают, какая цепь короче или длиннее и на сколько. Пара, проходящая через двухвыводные последовательные компоненты, например конденсаторы переменного тока на линии USB, измеряется от конца до конца: её рассогласование равно сумме по всем парам, которые она объединяет, и сообщается как FX_TX1_P+SS_TX1_P/FX_TX1_N+SS_TX1_N.