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| ID | Schweregrad | greift, wenn | Checks |
|---|---|---|---|
via-cuts-pad | Fehler | immer | Ein 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-pad | Warnung | Vias in Pads | Der Bohrdurchmesser liegt im Pad, aber der Annulus des Vias reicht unter der Maske über den Pad-Rand hinaus |
via-in-pad | Info | Vias in Pads | Zä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-fill | Fehler | Vias in Pads | Ein 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-pad | Warnung | immer | Ein 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-size | Fehler | immer | Pad-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-size | Fehler | Schlitzbohrungen | Schlitze, die schmaler als min_plated_slot_width oder min_npth_slot_width sind, oder kürzer als das Doppelte ihrer Breite |
aspect-ratio | Fehler | immer | Verzinnte Löcher, deren Tiefe (das Kupfer und die Dielektrika, die sie durchdringen) im Verhältnis zum Bohrdurchmesser max_aspect_ratio überschreitet |
hole-to-copper | Fehler | immer | Eine 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-copper | Fehler | 4+ Kupferlagen | Eine 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-copper | Fehler | Nicht verzinnte Löcher | Eine 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-edge | Fehler | Nicht verzinnte Löcher | Eine nicht verzinnte Lochwand, die näher als min_copper_to_edge an den Platinenrand oder einen Platinenausschnitt liegt, oder ihn durchdringt |
smd-pad-gap | Fehler | immer | SMD-Pads verschiedener Netze, die näher als min_smd_pad_gap liegen, eine Zeile pro Bauteilpaar mit den nächsten Pads |
pad-to-edge | Fehler | immer | Pad-Kupfer, das näher als min_copper_to_edge an den Platinenrand oder einen Platinenausschnitt liegt; Pads mit edge = true sind ausgenommen |
edge-pad-reach | Warnung | immer | Ein Pad mit edge = true, das nicht bis zum Platinenrand reicht |
starved-thermal | Warnung | Kupferflächen | Ein 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-edge | Warnung | Bauteile | SMD-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-edge | Info | Bauteile | ein 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 |
fiducials | Info | Bauteile | Kein Footprint mit dem Namen Fiducial auf der Platine |
tooling-holes | Info | Bauteile | Kein nicht verzinntes Loch von 1,5 mm oder größer |
bga-pad | Fehler | Eine BGA | BGA-Pads (16 oder mehr runde SMD-Pads), die kleiner als min_bga_pad sind |
bga-pitch | Fehler | Eine BGA | Ball-Pitch feiner als min_bga_pitch |
bga-pad-ratio | Warnung | Eine BGA | Pad-Durchmesser außerhalb von 40 % bis 65 % des Pitches (IPC-7351 Land-Größen) |
paste-without-mask | Warnung | Bauteile | Ein Kupfer-Pad mit Paste, aber ohne Maske-Öffnung auf dieser Seite, sodass die Schablone auf die Maske druckt |
mlcc-flex-zone-case | Info | Keramikkondensatoren | Ein 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-zone | Info | Keramikkondensatoren | Ein 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-info | Info | Keramikkondensatoren | Zählt die kleineren Keramikkondensatoren innerhalb von flex_zone, die bereits entlang des Randes liegen |
tombstone-risk | Info | Chips von 0603 oder kleiner | Ein 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-shadow | Info | Bauteilhöhen über 3 mm | Ein 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-access | Info | Bauteile | Netze, 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-geometry | Info | Testpunkte | ein 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-distance | Info | Bauteile | ein 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-distance | Info | Bauteile | ein 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-centre | Info | Bauteile | ein 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-close | Info | Bauteile | zwei 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-spread | Info | Bauteile | ein 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-edge | Info | Bauteile | ein 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 |
short | Fehler | immer | Kupfer zweier verschiedener Netze berührt sich |
clearance | Fehler | immer | Kupfer 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 |
unrouted | Fehler | immer | ein Netz, dessen Pads nicht alle durch Leiterbahnen, Vias und Kupferflächen verbunden sind, mit Nennung der getrennten Gruppen |
dangling-track | Warnung | immer | ein Leiterbahnende, das kein Kupfer seines Netzes und keine Kupferfläche berührt |
track-grazes-pad | Warnung | immer | Leiterbahnen, die ein Pad nur mit ihrer Kante erreichen; führe die Mittellinie in das Pad |
copper-to-edge | Fehler | immer | eine 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-board | Fehler | immer | Pads außerhalb des Umrisses oder in einem Platinenausschnitt; Pads mit edge = true sind ausgenommen |
stitching | Info | immer | zählt die Vias, die jeder [[stitching]]-Eintrag platziert hat |
stitching-empty | Warnung | immer | ein [[stitching]]-Eintrag, der kein Via platziert hat |
fanout-empty | Warnung | immer | ein [[fanouts]]-Eintrag, der kein Via platziert hat |
hole-to-hole | Fehler | immer | Lö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-via | Fehler | immer | ein 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-lamination | Fehler | immer | Vias, 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 |
neckdown | Info | immer | eine 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-width | Fehler | immer | eine Leiterbahn schmaler als ihre Klassenzweite, die kein Neck-down ist |
impedance-width | Warnung | Impedanzklassen | eine Leiterbahn einer Impedanzklasse mit einer anderen Breite, ihre Impedanz verschiebt sich |
impedance-trace | Fehler | Impedanzklassen | eine 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-overlap | Fehler | immer | Leiterbahnen eines Netzes, die übereinander verlaufen, das Kupfer ist verdoppelt |
acute-turn | Warnung | immer | eine Leiterbahn, die sich um mehr als 90 Grad zurückdreht, eine Säurefalle |
zone-overlap | Fehler | Kupferflächen | Füllungen zweier Netze auf einer Schicht überlappen, ein Kurzschluss |
zone-to-zone | Fehler | Kupferflächen | Füllungen zweier Netze auf einer Schicht näher als ihr Zwischenabstand |
zone-clearance | Fehler | Kupferflächen | eine Füllung, die Kupfer eines anderen Netzes bedeckt oder zu nah kommt |
zone-tips | Warnung | Kupferflächen | Füllspitzen schärfer als 30 Grad; erhöhe das min_width der Kupferfläche |
copper-neck | Warnung | Kupferflächen | Hä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-islands | Info | immer | Füllinseln, die nichts vom Netz der Kupferfläche erreichen und entfernt wurden |
courtyard-overlap | Fehler | Bauteile | Courtyards zweier Bauteile auf einer Seite überlappen sich nach ihrem Umriss |
courtyard-hole | Fehler | Bauteile | ein Courtyard, der ein Montageloch oder ein nicht verzinntes Loch eines anderen Bauteils bedeckt |
mask-web | Fehler | immer | Pads 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-text | Fehler | immer | Bestü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-hidden | Warnung | immer | Bestückungsdruck-Text, der nur unter dem Gehäuse eines anderen Bauteils versteckt ist |
silk-text-height | Warnung | immer | Bestückungsdruck-Text unter min_silk_text_height |
silk-artwork | Fehler | immer | Bestückungsdruck-Grafik auf Pads, über Bestückungsdruck-Text oder außerhalb der Platine |
watermark | Fehler | immer | das 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-width | Warnung | immer | Platinen-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-skew | Fehler | Paare | ein Paar, das über sein max_skew oder die Klassen-max_skew verzerrt ist, mit dem Netz, das verlängert werden muss |
pair-skew-info | Info | Paare | der Skew jedes Paares innerhalb seines Limits |
pair-gap | Fehler | Paare | ein Paar, das nebeneinander mit einem Abstand läuft, der von der diff_gap der Netzklasse abweicht und über max_uncoupled hinausgeht |
pair-coupling | Warnung | Paare | weniger als 80 % eines Paares laufen nebeneinander mit dem Paar-Abstand |
match-length | Fehler | Match-Gruppen | ein Mitglied einer Match-Gruppe, das von seinem Ziel um mehr als die Toleranz abweicht |
interface-pair | Fehler | Schnittstellen | ein Netz einer differentiellen Schnittstelle ohne Paar-Partner |
interface-impedance | Fehler | Schnittstellen | ein Schnittstellennetz, dessen Netzklasse kein Impedanzziel hat, ein Netz außerhalb des Fensters oder keine Paar-Abstand auf einer differentiellen Schnittstelle |
interface-skew | Fehler | Schnittstellen | ein Paar, dessen Skew über dem max_skew der Schnittstelle liegt |
interface-bus-skew | Fehler | Schnittstellen | die Datensignale streuen um mehr als max_bus_skew |
interface-clock-window | Fehler | Schnittstellen | ein Datensignal, das außerhalb des clock_window vom Takt eintrifft |
interface-vias | Fehler | Schnittstellen | eine Spur mit mehr Vias als max_vias |
interface-stub | Fehler | Schnittstellen | ein Via-Stummel, der länger ist als max_stub |
interface-return-via | Fehler | Schnittstellen | ein Signal-Via ohne Referenz-Via innerhalb von return_via |
interface-length | Fehler | Schnittstellen | eine Spur, die länger ist als max_length |
interface-reference | Fehler | Schnittstellen | eine 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 centreDie 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.