agentee

Плата

Проверки правил проектирования

Все правила топологии с их id, уровнем серьёзности и условием запуска: медь, сверла, маска, шелкография, сборка, полигоны, сигналы, доступ для тестирования и размещение.

Проверки топологии выполняются из реестра правил, каждое из которых имеет стабильный id, категорию (copper, drill, mask, silk, assembly, zone, signal, test, placement), уровень серьёзности по умолчанию и условие для платы: правило для внутренних слоёв выполняется только при наличии 4 и более медных слоёв, правило о заполнении переходных отверстий только когда переходные отверстия находятся в контактных площадках, правило для BGA только при наличии BGA. Каждое сообщение правила начинается с его id в квадратных скобках, например [via-cuts-pad]. agentee drc NAME --list (MCP drc с list = true) выводит все правила с их категорией, уровнем серьёзности и тем, применяется ли правило к этой плате и почему; agentee drc NAME выводит только сообщения о нарушениях правил топологии.

[drc]                          # in the board file
disable = ["silk-width"]       # rule ids to skip; their checks are not computed, so with silk-text
                               # and silk-hidden off `agentee silk` has nothing to move
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }   # info | warning | error
tombstone_ratio = 3            # copper or feed width one chip pad may have over the other
idуровень серьёзностивыполняется, когдапроверки
via-cuts-padошибкавсегдапереходное отверстие, медь которого перекрывается или касается SMD-площадки, при этом сверло не полностью находится внутри площадки: припой стекает по стенке отверстия и повреждает край площадки. Переходное отверстие другой цепи, касающееся площадки, сообщается как short
via-annulus-past-padпредупреждениепереходные отверстия в площадкахсверло находится в площадке, но изоляционное кольцо переходного отверстия выходит за край площадки под паяльную маску
via-in-padинформацияпереходные отверстия в площадкахподсчитывает переходные отверстия в SMD-площадках собственной цепи (сверло внутри площадки); fab-notes.txt просит завод заполнить и закрыть именно эти отверстия (тип VII по IPC-4761)
via-in-pad-fillошибкапереходные отверстия в площадкахпереходное отверстие в площадке со сверлом шире max_filled_via_drill, либо тип переходного отверстия задаёт fill, отличный от filled_capped (тип VII по IPC-4761)
hole-to-smd-padпредупреждениевсегдаотверстие переходного отверстия ближе, чем min_hole_to_smd_pad, к SMD-площадке собственной цепи (или без цепи), которую оно не касается; паста и припой могут затечь внутрь
drill-sizeошибкавсегдаотверстия в площадках меньше min_drill (гальванизированные) или min_npth_drill (негальванизированные), либо больше max_drill (большие отверстия маршрутизируются, рисуйте их как вырезы). Размеры переходных отверстий проверяются по [[vias]] платы
slot-sizeошибкаслотовые отверстияслоты уже, чем min_plated_slot_width или min_npth_slot_width, либо короче, чем вдвое их ширина
aspect-ratioошибкавсегдагальванизированные отверстия, у которых отношение глубины (медь и диэлектрик, которые они проходят) к диаметру сверла превышает max_aspect_ratio
hole-to-copperошибкавсегдастенка отверстия переходного или гальванизированного SMD-отверстия ближе, чем min_via_hole_to_copper или min_pth_hole_to_copper, к меди другой цепи на слое, который проходит отверстие: проводники, площадки, переходные отверстия, полигоны
inner-hole-to-copperошибка4 и более медных слоёвстенка гальванизированного SMD-отверстия ближе, чем min_inner_pth_hole_to_copper, к меди другой цепи на внутреннем слое
npth-to-copperошибканегальванизированные отверстиястенка негальванизированного отверстия ближе, чем min_npth_to_copper, к любой меди, включая полигон собственной цепи
hole-to-edgeошибканегальванизированные отверстиястенка негальванизированного отверстия ближе, чем min_copper_to_edge, к контуру платы или вырезу, либо проходит через него
smd-pad-gapошибкавсегдаSMD-площадки разных цепей ближе, чем min_smd_pad_gap, одна строка на пару компонентов с ближайшими площадками
pad-to-edgeошибкавсегдамедь площадки ближе, чем min_copper_to_edge, к контуру платы или вырезу; площадки с edge = true не проверяются
edge-pad-reachпредупреждениевсегдаплощадка с edge = true, которая не доходит до контура платы
starved-thermalпредупреждениеполигоныплощадка, соединённая с полигоном собственной цепи менее чем на половину контура, менее чем двумя спицами шириной не меньше min_track_width, и с общим количеством меди меньше, чем собственная ширина площадки
part-to-edgeпредупреждениекомпонентыSMD-площадки ближе, чем min_part_to_edge, к контуру или вырезу платы, где напряжение от разделения трескается; пропускает реперные точки, отверстия для крепления и компоненты с площадками edge
part-body-to-edgeинформациякомпонентыкорпус компонента ближе, чем min_body_to_edge, к контуру или вырезу платы, либо выходит за него (выход за вырез считается выходом) (руководства DFM сборки: компонент не ближе 1 мм к краю). Корпус: контур завода, иначе courtyard, иначе медь площадки, и в сообщении указывается какой; пропускает реперные точки, отверстия для крепления, компоненты с площадками edge и посадочные места с overhang = true
fiducialsинформациякомпонентына плате нет посадочного места с именем, похожим на Fiducial
tooling-holesинформациякомпонентынет негальванизированного отверстия 1,5 мм или больше
bga-padошибканаличие BGASMD-площадки BGA (16 и более круглых SMD-площадок) меньше min_bga_pad
bga-pitchошибканаличие BGAшаг шариков мельче, чем min_bga_pitch
bga-pad-ratioпредупреждениеналичие BGAдиаметр площадки вне диапазона 40% до 65% шага (размеры площадок по IPC-7351)
paste-without-maskпредупреждениекомпонентымедная площадка с пастой, но без окна в маске на этой стороне, поэтому трафарет наносит пасту на маску
mlcc-flex-zone-caseинформациякерамические конденсаторыкерамический конденсатор корпуса 0805 (2012 метрический) или больше в пределах flex_zone от контура, угла платы, выреза, отверстия для крепления (посадочное место MountingHole*) или негальванизированного отверстия 2 мм или больше (Knowles: зона напряжения обычно в пределах 5 мм от края платы или точек крепления); чем длиннее чип, тем больше деформация на его концах
mlcc-flex-zoneинформациякерамические конденсаторыболее мелкий керамический конденсатор в пределах flex_zone, у которого длинная ось направлена на ближайший край, угол или отверстие (FAQ Murata: ориентируйте чип перпендикулярно направлению напряжения, чтобы длинная ось шла вдоль края)
mlcc-flex-zone-infoинформациякерамические конденсаторыподсчитывает более мелкие керамические конденсаторы в пределах flex_zone, которые уже лежат вдоль края
tombstone-riskинформациячипы 0603 или мельчедвухплощадочный SMD-компонент 0603 (1608 метрический) или мельче, у которого площадки различаются по размеру или форме, в одной из которых есть переходное отверстие, а в другой нет, либо у которого медь в пределах 0,3 мм от одной площадки на её слое (проводники, переходные отверстия, полигоны собственной цепи) превышает tombstone_ratio (по умолчанию 3) от другой; площадка, соединённая с полигоном через тепловое соединение, взвешивается по ширине спицы против ширины проводника на другой площадке, а площадка без проводника, переходного отверстия или полигона не сравнивается; конец, который нагревается первым, смачивается первым и поднимает компонент (руководства DFM EMS: симметричные площадки и сбалансированная медь на обоих концах)
tall-part-shadowинформациявысота компонентов более 3 ммдвухплощадочный чип 0603 или мельче ближе к компоненту высотой более 3 мм, чем высота этого компонента, измеренная от площадок чипа до корпуса высокого компонента (эмпирическое правило EMS 1:1: затенение при оплавлении и инспекции); высоты берутся из height посадочного места, иначе из корпуса, который 3D-просмотрщик рисует без модели: значение по умолчанию семейства (SOIC, QFN, разъёмы, экраны) или часть имени _h1.25mm
test-accessинформациякомпонентыцепи, которые запрашивает секция [test], но у которых нет доступа зонда со стороны зонда: нет контактной площадки тестовой точки (обозначение TP1... или посадочное место с именем TestPoint*), нет открытого медного сквозного отверстия (through_holes), нет переходного отверстия без паяльной маски (vias). Цепи в классах с целевым импедансом и цепи пар исключаются и указываются по имени, так как отвод им вредит
test-pad-geometryинформациятестовые точкиконтактная площадка тестовой точки меньше min_test_pad, ближе к другому центру, чем min_test_pad_pitch, ближе к корпусу другого компонента со стороны зонда, чем min_test_pad_to_body, ближе к краю платы или технологическому отверстию (немедные отверстия и отверстия для крепления), чем min_test_pad_to_edge, или не находится со стороны зонда
placement-decoupling-distanceинформациякомпонентыконденсатор между шиной питания и землёй, у которого контактная площадка шины питания дальше, чем decoupling_distance (3 мм), от ближайшего вывода ИС на этой шине; для накопительных конденсаторов свыше 1 мкФ - в 2,5 раза больше
placement-crystal-distanceинформациякомпонентыкварцевый резонатор или генератор (обозначение Y или посадочное место с именем кварца или генератора), у которого сигнальная контактная площадка дальше, чем crystal_distance (5 мм), от вывода ИС на его цепи
placement-large-part-off-centreинформациякомпонентыбольшая микросхема (BGA, корпус с 16 и более выводами и площадью свыше 25 мм2, иначе компоненты с наибольшим числом выводов), у которой центр courtyard дальше, чем off_centre (0,6) от центра платы к краю
placement-hot-parts-closeинформациякомпонентыдва горячих компонента, у которых courtyard ближе, чем hot_distance (5 мм): это [[sources]] тепловых симуляций данной топологии с мощностью 0,25 Вт и более, а также большие корпуса (courtyard 49 мм2 и более), которые эти симуляции не указывают
placement-cluster-spreadинформациякомпонентыдвухвыводной пассивный компонент, у которого сигнальные цепи идут только к одной ИС и никуда больше, и который дальше, чем cluster_spread (10 мм), от вывода этой ИС
placement-connector-not-at-edgeинформациякомпонентыразъём (краевые контактные площадки, overhang = true или обозначение J/P, которое не является Tag-Connect, U.FL или тестовой площадкой), у которого courtyard дальше, чем connector_edge (3 мм), от контура платы
shortошибкавсегдамедь двух разных цепей соприкасается
clearanceошибкавсегдамедь двух цепей ближе, чем наибольшее из допусков их классов (у посадочного места clearance заменяет их для его площадок), или медь входит в неметаллизированное отверстие
unroutedошибкавсегдацепь, у которой не все контактные площадки соединены проводниками, переходными отверстиями и полигонами; указываются группы, которые не соединены
dangling-trackпредупреждениевсегдаконец проводника, который не касается меди своей цепи и не касается полигона
track-grazes-padпредупреждениевсегдапроводники, которые касаются контактной площадки только краем; проведите центральную линию до площадки
copper-to-edgeошибкавсегдапроводник или переходное отверстие ближе, чем min_copper_to_edge, к контуру платы или вырезу, или за пределами платы (проводник через вырез выходит за пределы платы)
pad-off-boardошибкавсегдаконтактные площадки за контуром или в вырезе платы; площадки с edge = true исключаются
stitchingинформациявсегдаподсчитывает переходные отверстия, размещённые каждой записью [[stitching]]
stitching-emptyпредупреждениевсегдазапись [[stitching]], которая не разместила ни одного переходного отверстия
fanout-emptyпредупреждениевсегдазапись [[fanouts]], которая не разместила ни одного переходного отверстия
hole-to-holeошибкавсегдаотверстия разных компонентов или переходные отверстия ближе, чем min_hole_to_hole, от стенки до стенки; подсчитывается с первой парой; учитываются только отверстия, у которых диапазоны слоев пересекаются с диэлектриком, поэтому микровыступ рядом со скрытым переходным отверстием не считается парой
stacked-viaошибкавсегдапереходное отверстие в том же месте, что и другое переходное отверстие той же цепи через тот же диэлектрик (сверлено дважды), наложенное на другое переходное отверстие на одном слое, когда stacked_microvias выключено или нарушен порядок сборки ламината (переходное отверстие под стеком сверлится на более позднем этапе, чем верхнее), или наложенное на переходное отверстие с контролируемой глубиной вообще
via-laminationошибкавсегдапереходные отверстия, у которых диапазон слоев и тип сверла не соответствуют ни одному этапу сверления ламината (см. Ламинат), по типу и диапазону переходного отверстия; сообщение указывает запись [[vias]] платы и перечисляет все диапазоны, которые сверлит ламинат, по типу сверла. Проверка платы оставляет тип переходного отверстия, размещённый топологией, на этом правиле
neckdownинформациявсегдапроводник уже ширины своего класса, но не меньше min_track_width, на участке до длины neckdown класса (по умолчанию 0,5 мм)
class-widthошибкавсегдапроводник уже ширины своего класса, который не является сужением
impedance-widthпредупреждениеклассы импедансапроводник класса импеданса с другой шириной; его импеданс меняется
impedance-traceошибкаклассы импедансапроводник класса импеданса, у которого ширина (включая сужения) или медь рядом с ним на внешнем слое выводят импеданс за пределы допуска класса; зазор не проверяется в пределах длины сужения у контактной площадки или соединения
track-overlapошибкавсегдапроводники одной цепи, идущие друг над другом; медь удваивается
acute-turnпредупреждениевсегдапроводник, разворачивающийся более чем на 90 градусов; ловушка для кислоты
zone-overlapошибкаполигоныполигоны двух цепей на одном слое пересекаются; короткое замыкание
zone-to-zoneошибкаполигоныполигоны двух цепей на одном слое ближе, чем их допуск
zone-clearanceошибкаполигоныполигон, который накрывает или подходит слишком близко к меди другой цепи
zone-tipsпредупреждениеполигоныкончики полигона острее 30 градусов; увеличьте min_width полигона
copper-neckпредупреждениеполигоныперешейки в полигоне уже 90% от min_width полигона, которые полигон должен был открыть; подсчитываются по месту с самым узким
zone-islandsинформациявсегдаострова полигона, которые не касаются цепи полигона и были удалены
courtyard-overlapошибкакомпонентыcourtyard двух компонентов на одной стороне пересекаются по контуру
courtyard-holeошибкакомпонентыcourtyard, который накрывает отверстие для крепления или неметаллизированное отверстие другого компонента
mask-webошибкавсегдаконтактные площадки разных цепей, у которых окна паяльной маски оставляют меньше, чем min_mask_web; одна строка на пару компонентов; площадки одного посадочного места с mask_web = false пропускаются между собой
silk-textошибкавсегдатекст шелкографии, который теснит другой текст, находится на контактных площадках, печатается поверх переходных отверстий, пересекает контур шелкографии или выходит за пределы платы; обозначение получает свободное место (agentee silk перемещает его туда)
silk-hiddenпредупреждениевсегдатекст шелкографии, скрытый только под корпусом другого компонента
silk-text-heightпредупреждениевсегдатекст шелкографии ниже min_silk_text_height
silk-artworkошибкавсегдаграфика шелкографии на контактных площадках, поверх текста шелкографии или за пределами платы
watermarkошибкавсегдаводяной знак agentee vX.Y.Z-HASH не имеет свободного места на шелкографии, или место [watermark] не свободно; производитель плат отклонит плату без места, и отключение правила не удаляет водяной знак
silk-widthпредупреждениевсегдалинии шелкографии платы (графика [[graphics]] топологии, не текст) тоньше, чем min_silk_width; подсчитываются с самой тонкой; шелкография посадочных мест проверяется вместе с посадочным местом
pair-skewошибкапарыпара, у которой превышен max_skew или max_skew класса, с указанием цепи, которую нужно удлинить
pair-skew-infoинформацияпарырассогласование длин каждой пары в пределах допустимого
pair-gapошибкапарыпара, идущая параллельно с зазором, отличным от diff_gap класса, на расстоянии больше max_uncoupled
pair-couplingпредупреждениепарыменее 80 % длины пары идёт параллельно с зазором пары
match-lengthошибкагруппы согласования длинэлемент группы согласования длин, отклонение от целевой длины больше допустимого
interface-pairошибкаинтерфейсыцепь дифференциального интерфейса без пары
interface-impedanceошибкаинтерфейсыцепь интерфейса, у класса которой нет целевого импеданса, импеданс вне допустимого диапазона или нет зазора пары в дифференциальном интерфейсе
interface-skewошибкаинтерфейсыпара с рассогласованием длин, превышающим max_skew интерфейса
interface-bus-skewошибкаинтерфейсырассогласование длин сигнальных линий шины больше max_bus_skew
interface-clock-windowошибкаинтерфейсысигнальная линия, приходящая вне clock_window относительно тактовой линии
interface-viasошибкаинтерфейсылиния с переходными отверстиями больше max_vias
interface-stubошибкаинтерфейсыотвод переходного отверстия длиннее max_stub
interface-return-viaошибкаинтерфейсысигнальное переходное отверстие без опорного отверстия в пределах return_via
interface-lengthошибкаинтерфейсылиния длиннее max_length
interface-referenceошибкаинтерфейсылиния, идущая больше max_unreferenced без опорной плоскости рядом

Правила размещения указывают, где должны находиться компоненты; по умолчанию это уведомления. Повысьте их уровень с помощью [drc] severity. Пороговые значения задаются в файле платы:

[drc.placement]
decoupling_distance = "3mm"    # supply pad of a decoupling cap to the IC pin
crystal_distance = "5mm"
cluster_spread = "10mm"        # a passive to the only IC it serves
hot_distance = "5mm"           # courtyard gap between large packages
connector_edge = "3mm"         # connector courtyard to the outline
off_centre = 0.6               # fraction of the half width or height from the centre

Механические правила (part-body-to-edge, правила mlcc-flex-zone, tombstone-risk, tall-part-shadow) носят рекомендательный характер и по умолчанию имеют уровень info. Повысьте их уровень с помощью [drc] severity. Керамический конденсатор определяется как компонент с ровно двумя SMD-площадками, у которого посадочное место называется C_* или содержит Capacitor, либо обозначение начинается с C и цифры, если в имени посадочного места нет CP_, Tantal, Elec или Polymer; ключ mlcc в посадочном месте или в размещении переопределяет автоматическое определение. Габарит берётся из имени посадочного места (1608Metric, иначе дюймовый код, например 0603), а если его нет, из расстояния между центрами двух площадок, которое близко к длине корпуса.

Идентификатор, не соответствующий ни одному правилу, выдаёт предупреждение. Ошибки в самих файлах (цепь, которой нет в схеме, слой, который не медь, неверный пресет) не являются правилами и не отключаются.

docs/format.md · Markdown для агентов