agentee

Platine

Design-Regel-Prüfungen

Jede Layoutregel mit ihrer ID, ihrem Schweregrad und der Bedingung, unter der sie ausgeführt wird: Kupfer, Bohrungen, Maske, Bestückungsdruck, Bestückung, Zonen, Signale, Testzugang und Platzierung.

Layout-Checks laufen aus einem Register von Regeln, jede mit einer stabilen ID, einer Kategorie (copper, drill, mask, silk, assembly, zone, signal, test, placement), einer Standard-Schweregrad und einer Bedingung an der Platine: Eine Regel für innere Lagen greift nur bei 4 oder mehr Kupferlagen, eine Via-Füll-Regel nur, wenn Vias in Pads sitzen, eine BGA-Regel nur, wenn eine BGA vorhanden ist. Jede Meldung einer Regel beginnt mit ihrer ID in eckigen Klammern, z. B. [via-cuts-pad]. agentee drc NAME --list (MCP drc mit list = true) gibt jede Regel mit ihrer Kategorie, ihrem Schweregrad und ob sie auf diese Platine zutrifft und warum aus; agentee drc NAME gibt nur die Regel-Meldungen des Layouts aus.

[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
IDSchweregradgreift, wennChecks
via-cuts-padFehlerimmerEin Via, dessen Kupfer ein SMD-Pad überlappt oder berührt, während sein Bohrdurchmesser nicht vollständig innerhalb des Pads liegt: Lote läuft durch das Bohrloch ab und der Pad-Rand wird beschädigt. Ein Via eines anderen Netzes, das ein Pad berührt, wird stattdessen als short gemeldet
via-annulus-past-padWarnungVias in PadsDer Bohrdurchmesser liegt im Pad, aber der Annulus des Vias reicht unter der Maske über den Pad-Rand hinaus
via-in-padInfoVias in PadsZählt die Vias in SMD-Pads ihres eigenen Netzes (Bohrung innerhalb des Pads); fab-notes.txt bittet den Fertiger, genau diese zu füllen und zu kapseln (IPC-4761 Typ VII)
via-in-pad-fillFehlerVias in PadsEin Via in einem Pad, das breiter als max_filled_via_drill gebohrt ist, oder dessen Via-Typ ein fill außer filled_capped setzt (IPC-4761 Typ VII)
hole-to-smd-padWarnungimmerEin Via-Loch, das näher als min_hole_to_smd_pad an ein SMD-Pad seines eigenen Netzes (oder ohne Netz) liegt, das es nicht berührt; Paste und Lot können hineinlaufen
drill-sizeFehlerimmerPad-Bohrungen unter min_drill (verzinnt) oder min_npth_drill (nicht verzinnt), oder über max_drill (größere Löcher werden geroutet, zeichne sie als Ausschnitte). Via-Größen werden an den [[vias]] der Platine geprüft
slot-sizeFehlerSchlitzbohrungenSchlitze, die schmaler als min_plated_slot_width oder min_npth_slot_width sind, oder kürzer als das Doppelte ihrer Breite
aspect-ratioFehlerimmerVerzinnte Löcher, deren Tiefe (das Kupfer und die Dielektrika, die sie durchdringen) im Verhältnis zum Bohrdurchmesser max_aspect_ratio überschreitet
hole-to-copperFehlerimmerEine Via- oder verzinnte Pad-Lochwand, die näher als min_via_hole_to_copper oder min_pth_hole_to_copper an Kupfer eines anderen Netzes auf einer Lage liegt, die das Loch durchdringt: Leiterbahnen, Pads, Vias, Kupferflächen
inner-hole-to-copperFehler4+ KupferlagenEine verzinnte Pad-Lochwand, die näher als min_inner_pth_hole_to_copper an Kupfer eines anderen Netzes auf einer inneren Lage liegt
npth-to-copperFehlerNicht verzinnte LöcherEine nicht verzinnte Lochwand, die näher als min_npth_to_copper an irgendein Kupfer liegt, einschließlich der Kupferfläche ihres eigenen Netzes
hole-to-edgeFehlerNicht verzinnte LöcherEine nicht verzinnte Lochwand, die näher als min_copper_to_edge an den Platinenrand oder einen Platinenausschnitt liegt, oder ihn durchdringt
smd-pad-gapFehlerimmerSMD-Pads verschiedener Netze, die näher als min_smd_pad_gap liegen, eine Zeile pro Bauteilpaar mit den nächsten Pads
pad-to-edgeFehlerimmerPad-Kupfer, das näher als min_copper_to_edge an den Platinenrand oder einen Platinenausschnitt liegt; Pads mit edge = true sind ausgenommen
edge-pad-reachWarnungimmerEin Pad mit edge = true, das nicht bis zum Platinenrand reicht
starved-thermalWarnungKupferflächenEin Pad, das an eine Kupferfläche seines Netzes über weniger als die Hälfte seines Umrisss angeschlossen ist, durch weniger als zwei Speichen mit mindestens min_track_width Breite und mit insgesamt weniger Kupfer als die eigene Breite des Pads
part-to-edgeWarnungBauteileSMD-Pads, die näher als min_part_to_edge an den Umriss oder einen Platinenausschnitt liegen, wo Trennspannung Bauteile reißt; überspringt Fiduzialmarken, Montagebohrungen und Bauteile mit edge-Pads
part-body-to-edgeInfoBauteileein Bauteilkörper näher als min_body_to_edge am Umriss oder einem Platinenausschnitt, oder darüber (über einem Ausschnitt zählt als darüber) (Montage-DFM-Anleitungen: kein Bauteil innerhalb von 1 mm der Kante). Der Körper ist der Fertigerumriss, sonst der Courtyard, sonst das Pad-Kupfer, und die Meldung benennt welchen; überspringt Fiduzialmarken, Montagebohrungen, Bauteile mit edge-Pads und Footprints mit overhang = true
fiducialsInfoBauteileKein Footprint mit dem Namen Fiducial auf der Platine
tooling-holesInfoBauteileKein nicht verzinntes Loch von 1,5 mm oder größer
bga-padFehlerEine BGABGA-Pads (16 oder mehr runde SMD-Pads), die kleiner als min_bga_pad sind
bga-pitchFehlerEine BGABall-Pitch feiner als min_bga_pitch
bga-pad-ratioWarnungEine BGAPad-Durchmesser außerhalb von 40 % bis 65 % des Pitches (IPC-7351 Land-Größen)
paste-without-maskWarnungBauteileEin Kupfer-Pad mit Paste, aber ohne Maske-Öffnung auf dieser Seite, sodass die Schablone auf die Maske druckt
mlcc-flex-zone-caseInfoKeramikkondensatorenEin Keramikkondensator mit Gehäuse 0805 (2012 metrisch) oder größer, der innerhalb von flex_zone vom Umriss, einer Platinenecke, einem Platinenausschnitt, einer Montagebohrung (ein MountingHole*-Footprint) oder einem nicht verzinnten Loch von 2 mm oder größer liegt (Knowles: die Spannungszone liegt typischerweise innerhalb von 5 mm vom Platinenrand oder Befestigungspunkten); je länger der Chip, desto mehr Dehnung sehen seine Enden
mlcc-flex-zoneInfoKeramikkondensatorenEin kleinerer Keramikkondensator innerhalb von flex_zone, dessen lange Achse auf den nächsten Rand, Winkel oder Loch zeigt (Murata FAQ: den Chip horizontal zur Spannungsrichtung ausrichten, sodass seine lange Achse entlang des Randes verläuft)
mlcc-flex-zone-infoInfoKeramikkondensatorenZählt die kleineren Keramikkondensatoren innerhalb von flex_zone, die bereits entlang des Randes liegen
tombstone-riskInfoChips von 0603 oder kleinerEin zweipadiges SMD-Bauteil von 0603 (1608 metrisch) oder kleiner, dessen Pads in Größe oder Form abweichen, das ein Via in einem Pad und nicht im anderen hat, oder dessen Kupfer innerhalb von 0,3 mm an einem Pad auf seiner Lage (Leiterbahnen, Vias, Kupferflächen seines Netzes) mehr als tombstone_ratio (Standard 3) Mal so viel ist wie am anderen; ein Pad, das über eine thermische Entlastung an seine Kupferfläche angeschlossen ist, wird nach seiner Speichenbreite im Verhältnis zur Leiterbahnbreite am anderen Pad gewichtet, und ein Pad ohne Leiterbahn, Via oder Kupferfläche wird nicht verglichen; das Ende, das zuerst heiß wird, benetzt zuerst und stellt das Bauteil auf (DFM-Anleitungen für EMS: symmetrische Lände und ausgeglichenes Kupfer an beiden Enden)
tall-part-shadowInfoBauteilhöhen über 3 mmEin zweipadiger Chip von 0603 oder kleiner, der näher an einem Bauteil mit einer Höhe über 3 mm liegt als diese Höhe, gemessen von den Pads des Chips zum Körper des hohen Bauteils (EMS-Regel 1:1: Verschattung beim Reflow und bei der Inspektion); Höhen stammen aus der height des Footprints, sonst aus dem Körper, den die 3D-Ansicht ohne Modell zeichnet: sein Familienstandard (SOIC, QFN, Stecker, Schilde) oder ein _h1.25mm-Teil des Namens
test-accessInfoBauteileNetze, die die [test]-Sektion anfordert, aber von der Prüferseite aus keinen Zugang haben: kein Pad eines Testpunkts (Referenz TP1..., oder ein Footprint mit dem Namen TestPoint*), kein freiliegendes, verzinntes Durchloch-Pad (through_holes), kein unbedecktes Via (vias). Netze in Klassen mit einem Impedanzziel und die Netze von Paaren sind ausgenommen und werden namentlich genannt, da ein Stummel sie beeinträchtigt
test-pad-geometryInfoTestpunkteein Testpunkt-Pad unter min_test_pad, näher als min_test_pad_pitch zu einem anderen Mittelpunkt, näher als min_test_pad_to_body zum Gehäuse eines anderen Bauteils auf der Prüferseite, näher als min_test_pad_to_edge zum Platinenrand oder zu einem Werkzeugloch (nicht verzinnte Löcher und Montagebohrungen) oder nicht auf der Prüferseite
placement-decoupling-distanceInfoBauteileein Kondensator zwischen Versorgung und Masse, dessen Versorgungs-Pad weiter als decoupling_distance (3 mm) vom nächsten Pin eines ICs auf dieser Versorgung entfernt ist, bei Bulk-Kondensatoren über 1 uF das 2,5-Fache davon
placement-crystal-distanceInfoBauteileein Quarz oder Oszillator (Referenz Y, oder ein Footprint, der wie ein Quarz oder Oszillator benannt ist), dessen Signal-Pad weiter als crystal_distance (5 mm) vom IC-Pin auf seinem Netz entfernt ist
placement-large-part-off-centreInfoBauteileein großes Bauteil (ein BGA, ein Gehäuse mit 16 oder mehr Pins über 25 mm2, andernfalls die Bauteile mit den meisten Pins), dessen Courtyard-Mittelpunkt weiter als off_centre (0,6) vom Platinenmittelpunkt zum Rand entfernt ist
placement-hot-parts-closeInfoBauteilezwei heiße Bauteile, deren Courtyards näher als hot_distance (5 mm) beieinander liegen: die [[sources]] der thermischen Simulationen dieses Layouts bei 0,25 W oder mehr und die großen Gehäuse (Courtyard von 49 mm2 oder mehr), die diese Simulationen nicht auflisten
placement-cluster-spreadInfoBauteileein zweipoliges passives Bauteil, dessen Signalnetze nur ein IC erreichen und nichts anderes, weiter als cluster_spread (10 mm) vom Pin dieses ICs entfernt
placement-connector-not-at-edgeInfoBauteileein Stecker (Randpads, overhang = true, oder eine J/P-Referenz, die kein Tag-Connect, U.FL oder Testpad ist), dessen Courtyard weiter als connector_edge (3 mm) vom Umriss entfernt ist
shortFehlerimmerKupfer zweier verschiedener Netze berührt sich
clearanceFehlerimmerKupfer zweier Netze näher als der größere ihrer Klassenzwischenabstände (ein Footprint-clearance ersetzt sie für seine Pads), oder Kupfer läuft in ein nicht verzinntes Loch
unroutedFehlerimmerein Netz, dessen Pads nicht alle durch Leiterbahnen, Vias und Kupferflächen verbunden sind, mit Nennung der getrennten Gruppen
dangling-trackWarnungimmerein Leiterbahnende, das kein Kupfer seines Netzes und keine Kupferfläche berührt
track-grazes-padWarnungimmerLeiterbahnen, die ein Pad nur mit ihrer Kante erreichen; führe die Mittellinie in das Pad
copper-to-edgeFehlerimmereine Leiterbahn oder ein Via näher als min_copper_to_edge zum Platinen-Umriss oder zu einem Platinenausschnitt, oder außerhalb der Platine (eine Leiterbahn über einen Ausschnitt verlässt die Platine)
pad-off-boardFehlerimmerPads außerhalb des Umrisses oder in einem Platinenausschnitt; Pads mit edge = true sind ausgenommen
stitchingInfoimmerzählt die Vias, die jeder [[stitching]]-Eintrag platziert hat
stitching-emptyWarnungimmerein [[stitching]]-Eintrag, der kein Via platziert hat
fanout-emptyWarnungimmerein [[fanouts]]-Eintrag, der kein Via platziert hat
hole-to-holeFehlerimmerLöcher verschiedener Bauteile oder Vias näher als min_hole_to_hole, Wand zu Wand, gezählt mit dem ersten Paar; nur Löcher, deren Bereiche ein Dielektrikum teilen, zählen, daher ist ein Mikrovias neben einem vergrabenen Via kein Paar
stacked-viaFehlerimmerein Via an derselben Stelle wie ein anderes Via seines Netzes durch dasselbe Dielektrikum (zweimal gebohrt), gestapelt auf einem anderen Via auf einer Schicht, wenn stacked_microvias aus ist oder außerhalb der Laminationsbau-Reihenfolge (das Via unter einem Stapel wird in einem späteren Schritt gebohrt als das obere), oder überhaupt mit einem Via mit kontrollierter Tiefe gestapelt
via-laminationFehlerimmerVias, deren Bereich und Bohrtyp keinem Bohrschritt der Lamination entsprechen (siehe Lamination), pro Via-Typ und Bereich; die Meldung nennt den [[vias]]-Eintrag der Platine und listet alle Bereiche auf, die die Lamination bohrt, nach Bohrtyp. Die Platinenprüfung überlässt einen Via-Typ, den ein Layout platziert, dieser Regel
neckdownInfoimmereine Leiterbahn schmaler als ihre Klassenzweite, aber nicht unter min_track_width, auf einem Abschnitt bis zur Klassenzweite neckdown Länge (standardmäßig 0,5 mm)
class-widthFehlerimmereine Leiterbahn schmaler als ihre Klassenzweite, die kein Neck-down ist
impedance-widthWarnungImpedanzklasseneine Leiterbahn einer Impedanzklasse mit einer anderen Breite, ihre Impedanz verschiebt sich
impedance-traceFehlerImpedanzklasseneine Leiterbahn einer Impedanzklasse, deren Breite, einschließlich Neck-downs, oder das Kupfer daneben auf einer Außenschicht ihre Impedanz außerhalb der Klassentoleranz bringt; der Abstand wird innerhalb der Neck-down-Länge eines Pads oder einer Verzweigung nicht geprüft
track-overlapFehlerimmerLeiterbahnen eines Netzes, die übereinander verlaufen, das Kupfer ist verdoppelt
acute-turnWarnungimmereine Leiterbahn, die sich um mehr als 90 Grad zurückdreht, eine Säurefalle
zone-overlapFehlerKupferflächenFüllungen zweier Netze auf einer Schicht überlappen, ein Kurzschluss
zone-to-zoneFehlerKupferflächenFüllungen zweier Netze auf einer Schicht näher als ihr Zwischenabstand
zone-clearanceFehlerKupferflächeneine Füllung, die Kupfer eines anderen Netzes bedeckt oder zu nah kommt
zone-tipsWarnungKupferflächenFüllspitzen schärfer als 30 Grad; erhöhe das min_width der Kupferfläche
copper-neckWarnungKupferflächenHälse in einer Füllung schmaler als 90 % des min_width der Kupferfläche, die die Füllung hätte öffnen sollen; gezählt nach Stelle mit dem schmalsten
zone-islandsInfoimmerFüllinseln, die nichts vom Netz der Kupferfläche erreichen und entfernt wurden
courtyard-overlapFehlerBauteileCourtyards zweier Bauteile auf einer Seite überlappen sich nach ihrem Umriss
courtyard-holeFehlerBauteileein Courtyard, der ein Montageloch oder ein nicht verzinntes Loch eines anderen Bauteils bedeckt
mask-webFehlerimmerPads verschiedener Netze, deren Lötstoppmaske-Öffnungen weniger als min_mask_web lassen, eine Zeile pro Bauteilpaar; Pads eines Footprints mit mask_web = false werden untereinander übersprungen
silk-textFehlerimmerBestückungsdruck-Text, der anderen Text verdrängt, auf Pads sitzt, über Vias gedruckt wird, eine Bestückungsdruck-Kontur kreuzt oder von der Platine läuft; eine Referenz bekommt einen freien Platz (agentee silk verschiebt sie dorthin)
silk-hiddenWarnungimmerBestückungsdruck-Text, der nur unter dem Gehäuse eines anderen Bauteils versteckt ist
silk-text-heightWarnungimmerBestückungsdruck-Text unter min_silk_text_height
silk-artworkFehlerimmerBestückungsdruck-Grafik auf Pads, über Bestückungsdruck-Text oder außerhalb der Platine
watermarkFehlerimmerdas agentee vX.Y.Z-HASH-Wasserzeichen hat keinen freien Platz auf dem Bestückungsdruck, oder der [watermark]-Platz ist nicht frei; der Fertiger lehnt ohne einen Platz ab, und das Deaktivieren der Regel entfernt das Wasserzeichen nicht
silk-widthWarnungimmerPlatinen-Bestückungsdruck-Linien (die [[graphics]] des Layouts, kein Text) dünner als min_silk_width, gezählt mit der dünnsten; Footprint-Bestückungsdruck wird mit dem Footprint geprüft
pair-skewFehlerPaareein Paar, das über sein max_skew oder die Klassen-max_skew verzerrt ist, mit dem Netz, das verlängert werden muss
pair-skew-infoInfoPaareder Skew jedes Paares innerhalb seines Limits
pair-gapFehlerPaareein Paar, das nebeneinander mit einem Abstand läuft, der von der diff_gap der Netzklasse abweicht und über max_uncoupled hinausgeht
pair-couplingWarnungPaareweniger als 80 % eines Paares laufen nebeneinander mit dem Paar-Abstand
match-lengthFehlerMatch-Gruppenein Mitglied einer Match-Gruppe, das von seinem Ziel um mehr als die Toleranz abweicht
interface-pairFehlerSchnittstellenein Netz einer differentiellen Schnittstelle ohne Paar-Partner
interface-impedanceFehlerSchnittstellenein Schnittstellennetz, dessen Netzklasse kein Impedanzziel hat, ein Netz außerhalb des Fensters oder keine Paar-Abstand auf einer differentiellen Schnittstelle
interface-skewFehlerSchnittstellenein Paar, dessen Skew über dem max_skew der Schnittstelle liegt
interface-bus-skewFehlerSchnittstellendie Datensignale streuen um mehr als max_bus_skew
interface-clock-windowFehlerSchnittstellenein Datensignal, das außerhalb des clock_window vom Takt eintrifft
interface-viasFehlerSchnittstelleneine Spur mit mehr Vias als max_vias
interface-stubFehlerSchnittstellenein Via-Stummel, der länger ist als max_stub
interface-return-viaFehlerSchnittstellenein Signal-Via ohne Referenz-Via innerhalb von return_via
interface-lengthFehlerSchnittstelleneine Spur, die länger ist als max_length
interface-referenceFehlerSchnittstelleneine Spur, die länger als max_unreferenced ohne benachbarte Referenzebene läuft

Die Platzierungsregeln sind eine Anleitung dafür, wo Bauteile sitzen, und sind standardmäßig Hinweise; du kannst sie mit [drc] severity erhöhen. Ihre Schwellwerte liegen in der Platine:

[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

Die mechanischen Regeln (part-body-to-edge, die mlcc-flex-zone-Regeln, tombstone-risk, tall-part-shadow) sind Anleitungen und standardmäßig Info; du kannst sie mit [drc] severity erhöhen. Ein Keramikkondensator ist ein Bauteil mit genau zwei SMD-Pads, dessen Footprint C_* heißt oder Capacitor enthält, oder dessen Referenz C und eine Ziffer ist, es sei denn, der Footprint-Name sagt CP_, Tantal, Elec oder Polymer; mlcc im Footprint oder in der Platzierung überschreibt die Vermutung. Das Gehäuse kommt aus dem Footprint-Namen (1608Metric, sonst ein imperialer Code wie 0603), sonst aus dem Abstand zwischen den beiden Pad-Mittelpunkten, der nahe an der Gehäuselänge liegt.

Eine ID, die keine Regel benennt, ist eine Warnung. Fehler in den Dateien selbst (ein Netz, das nicht im Schaltplan ist, eine Schicht, die kein Kupfer ist, ein ungültiges Preset) sind keine Regeln und können nicht deaktiviert werden.

docs/format.md · Markdown für Agenten