agentee

Carte

Contrôles des règles de conception

Chaque règle de routage avec son identifiant, sa sévérité et la condition sous laquelle elle s'exécute : cuivre, perçages, vernis, sérigraphie, assemblage, zones, signaux, accès de test et placement.

Les vérifications de routage s'exécutent à partir d'un registre de règles, chacune ayant un identifiant stable, une catégorie (copper, drill, mask, silk, assembly, zone, signal, test, placement), une sévérité par défaut et une condition sur la carte : une règle pour les couches internes ne s'applique qu'avec 4 couches de cuivre ou plus, une règle de remplissage de via uniquement lorsque des vias sont situés dans des pastilles, une règle BGA uniquement lorsqu'il y a un BGA. Chaque message d'une règle commence par son identifiant entre crochets, par exemple [via-cuts-pad]. agentee drc NAME --list (MCP drc avec list = true) affiche chaque règle avec sa catégorie, sa sévérité, et si elle s'applique à cette carte et pourquoi ; agentee drc NAME n'affiche que les messages de règles du routage.

[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
identifiantsévérités'exécute sivérifications
via-cuts-paderreurtoujoursun via dont le cuivre chevauche ou touche une pastille SMD alors que son perçage n'est pas entièrement à l'intérieur de la pastille : la soudure s'écoule dans le trou et le bord de la pastille est endommagé. Un via d'un autre net qui touche une pastille est signalé comme un short à la place
via-annulus-past-padavertissementvias dans les pastillesle perçage est dans la pastille mais l'annulus du via dépasse du bord de la pastille sous le vernis
via-in-padinfovias dans les pastillescompte les vias dans les pastilles SMD de leur propre net (perçage à l'intérieur de la pastille) ; fab-notes.txt demande au fabricant de remplir et de capoter exactement ceux-ci (IPC-4761 type VII)
via-in-pad-fillerreurvias dans les pastillesun via dans une pastille percé plus large que max_filled_via_drill, ou dont le type de via définit un fill autre que filled_capped (IPC-4761 type VII)
hole-to-smd-padavertissementtoujoursun trou de via à moins de min_hole_to_smd_pad d'une pastille SMD de son propre net (ou sans net) qu'il ne touche pas ; la pâte et la soudure peuvent y couler
drill-sizeerreurtoujourstrous de pastilles sous min_drill (placés) ou min_npth_drill (non placés), ou au-dessus de max_drill (les trous plus larges sont routés, dessinez-les comme des découpes). Les tailles de vias sont vérifiées sur les [[vias]] de la carte
slot-sizeerreurtrous en fentefentes plus étroites que min_plated_slot_width ou min_npth_slot_width, ou plus courtes que deux fois leur largeur
aspect-ratioerreurtoujourstrous placés dont le rapport de profondeur (le cuivre et le diélectrique qu'ils traversent) sur le perçage dépasse max_aspect_ratio
hole-to-coppererreurtoujoursune paroi de trou de via ou de pastille placée à moins de min_via_hole_to_copper ou min_pth_hole_to_copper du cuivre d'un autre net sur une couche que le trou traverse : pistes, pastilles, vias, zones de cuivre
inner-hole-to-coppererreur4 couches de cuivre ou plusune paroi de trou de pastille placée à moins de min_inner_pth_hole_to_copper du cuivre d'un autre net sur une couche interne
npth-to-coppererreurtrous non placésune paroi de trou non placé à moins de min_npth_to_copper de n'importe quel cuivre, y compris la zone de cuivre de son propre net
hole-to-edgeerreurtrous non placésune paroi de trou non placé à moins de min_copper_to_edge du contour de la carte ou d'une découpe de carte, ou à travers celui-ci
smd-pad-gaperreurtoujourspastilles SMD de nets différents à moins de min_smd_pad_gap, une ligne par paire de composants avec les pastilles les plus proches
pad-to-edgeerreurtoujourscuivre de pastille à moins de min_copper_to_edge du contour de la carte ou d'une découpe de carte ; les pastilles marquées edge = true sont exemptées
edge-pad-reachavertissementtoujoursune pastille marquée edge = true qui n'atteint pas le contour de la carte
starved-thermalavertissementzones de cuivreune pastille reliée à une zone de cuivre de son net sur moins de la moitié de son contour, par moins de deux branches d'au moins min_track_width de large, et avec moins de cuivre au total que la largeur de la pastille elle-même
part-to-edgeavertissementcomposantspastilles SMD à moins de min_part_to_edge du contour ou d'une découpe de carte, où la contrainte de dépannage fissure les composants ; ignore les fiducials, les trous de montage et les composants avec des pastilles edge
part-body-to-edgeinfocomposantsun corps de composant à moins de min_body_to_edge du contour ou d'une découpe de carte, ou au-delà (au-dessus d'une découpe compte comme au-delà) (guides DFM d'assemblage : aucun composant à moins de 1 mm du bord). Le corps est le contour du fabricant, sinon la zone d'encombrement, sinon le cuivre de la pastille, et le message indique lequel ; ignore les fiducials, les trous de montage, les composants avec des pastilles edge et les empreintes avec overhang = true
fiducialsinfocomposantsaucune empreinte nommée comme Fiducial sur la carte
tooling-holesinfocomposantsaucun trou non placé de 1,5 mm ou plus
bga-paderreurun BGApastilles BGA (16 pastilles SMD rondes ou plus) plus petites que min_bga_pad
bga-pitcherreurun BGApas de billes plus fin que min_bga_pitch
bga-pad-ratioavertissementun BGAdiamètre de pastille en dehors de 40 % à 65 % du pas (tailles de land IPC-7351)
paste-without-maskavertissementcomposantsune pastille de cuivre avec pâte mais sans ouverture de vernis sur ce côté, donc la trame imprime sur le vernis
mlcc-flex-zone-caseinfocondensateurs céramiquesun condensateur céramique de boîtier 0805 (2012 métrique) ou plus grand à moins de flex_zone du contour, d'un coin de carte, d'une découpe de carte, d'un trou de montage (une empreinte MountingHole*) ou d'un trou non placé de 2 mm ou plus (Knowles : la zone de contrainte est typiquement à moins de 5 mm du bord de la carte ou des points de fixation) ; plus la puce est longue, plus ses extrémités subissent de déformation
mlcc-flex-zoneinfocondensateurs céramiquesun condensateur céramique plus petit à moins de flex_zone dont l'axe long pointe vers le bord, le coin ou le trou le plus proche (FAQ Murata : orienter la puce horizontalement par rapport à la direction de contrainte, donc son axe long le long du bord)
mlcc-flex-zone-infoinfocondensateurs céramiquescompte les condensateurs céramiques plus petits à moins de flex_zone qui sont déjà alignés le long du bord
tombstone-riskinfopuces de 0603 ou plus petitesun composant SMD à deux pastilles de 0603 (1608 métrique) ou plus petit dont les pastilles diffèrent en taille ou en forme, qui a un via dans une pastille et pas dans l'autre, ou dont le cuivre à moins de 0,3 mm d'une pastille sur sa couche (pistes, vias, zones de cuivre de son net) est plus de tombstone_ratio (défaut 3) fois celui de l'autre ; une pastille reliée à sa zone de cuivre par un soulagement thermique est pesée par la largeur de sa branche contre la largeur de piste sur l'autre pastille à la place, et une pastille sans piste, via ou zone de cuivre encore n'est pas comparée ; l'extrémité qui chauffe en premier mouille en premier et redresse le composant (guides DFM d'EMS : lands symétriques et cuivre équilibré aux deux extrémités)
tall-part-shadowinfohauteurs de composants supérieures à 3 mmune puce à deux pastilles de 0603 ou plus petite plus proche d'un composant plus haut que 3 mm que la hauteur de ce composant, mesurée des pastilles de la puce au corps du composant haut (règle empirique EMS 1:1 : ombrage en reflow et inspection) ; les hauteurs viennent de la height de l'empreinte, sinon du corps que la vue 3D dessine sans modèle : sa valeur par défaut de famille (SOIC, QFN, connecteurs, écrans) ou une partie _h1.25mm du nom
test-accessinfocomposantsnets demandés par la section [test] sans accès de sonde du côté sonde : aucune pastille de point de test (référence TP1..., ou une empreinte nommée TestPoint*), aucune pastille de trou traversant métallisé exposée (through_holes), aucun via non masqué (vias). Les nets des classes avec une cible d'impédance, et les nets des paires, sont exemptés et nommés, car une branche parasite les nuit
test-pad-geometryinfopoints de testune pastille de point de test sous min_test_pad, à moins de min_test_pad_pitch d'un autre centre à centre, à moins de min_test_pad_to_body du corps d'une autre pièce du côté sonde, à moins de min_test_pad_to_edge du bord de la carte ou d'un trou d'usinage (trous non métallisés et trous de fixation), ou non située du côté sonde
placement-decoupling-distanceinfocomposantsun condensateur entre une alimentation et la masse dont la pastille d'alimentation est à plus de decoupling_distance (3 mm) de la broche la plus proche d'un CI sur cette alimentation, 2,5 fois cette distance pour les condensateurs de découplage de plus de 1 uF
placement-crystal-distanceinfocomposantsun cristal ou un oscillateur (référence Y, ou une empreinte nommée comme un cristal ou un oscillateur) dont la pastille de signal est à plus de crystal_distance (5 mm) de la broche du CI sur son net
placement-large-part-off-centreinfocomposantsun grand composant (un BGA, un boîtier de 16 broches ou plus sur plus de 25 mm2, sinon les composants avec le plus de broches) dont le centre de la zone d'encombrement est à plus de off_centre (0,6) de la distance du centre de la carte au bord
placement-hot-parts-closeinfocomposantsdeux composants chauds dont les zones d'encombrement sont à moins de hot_distance (5 mm) : les [[sources]] des simulations thermiques de ce routage à 0,25 W ou plus, et les grands boîtiers (zone d'encombrement de 49 mm2 ou plus) non listés par ces simulations
placement-cluster-spreadinfocomposantsun passif à deux broches dont les nets de signal rejoignent un seul CI et rien d'autre, situé à plus de cluster_spread (10 mm) de la broche de ce CI
placement-connector-not-at-edgeinfocomposantsun connecteur (pastilles de bord, overhang = true, ou une référence J/P qui n'est pas un Tag-Connect, U.FL ou point de test) dont la zone d'encombrement est à plus de connector_edge (3 mm) du contour
shorterreurtoujoursle cuivre de deux nets différents se touche
clearanceerreurtoujoursle cuivre de deux nets est à moins de la plus grande des clartances de leurs classes (une clearance d'empreinte les remplace pour ses pastilles), ou le cuivre entre dans un trou non métallisé
unroutederreurtoujoursun net dont les pastilles ne sont pas toutes reliées par des pistes, des vias et des zones de cuivre, en nommant les groupes séparés
dangling-trackavertissementtoujoursune extrémité de piste qui ne touche aucun cuivre de son net et aucune zone de cuivre
track-grazes-padavertissementtoujoursdes pistes qui n'atteignent une pastille que par leur bord ; amenez la ligne centrale dans la pastille
copper-to-edgeerreurtoujoursune piste ou un via à moins de min_copper_to_edge du contour de la carte ou d'une découpe, ou hors de la carte (une piste traversant une découpe sort de la carte)
pad-off-boarderreurtoujoursdes pastilles hors du contour ou dans une découpe de la carte ; les pastilles marquées edge = true sont exemptées
stitchinginfotoujourscompte les vias placés par chaque entrée [[stitching]]
stitching-emptyavertissementtoujoursune entrée [[stitching]] qui n'a placé aucun via
fanout-emptyavertissementtoujoursune entrée [[fanouts]] qui n'a placé aucun via
hole-to-holeerreurtoujoursdes trous de pièces différentes ou de vias à moins de min_hole_to_hole, paroi contre paroi, comptés avec la première paire ; seuls les trous dont les portées partagent un diélectrique sont comptés, donc un microvia à côté d'un via enfoui n'est pas une paire
stacked-viaerreurtoujoursun via au même endroit qu'un autre via de son net à travers le même diélectrique (percé deux fois), empilé sur un autre via à une couche quand stacked_microvias est désactivé ou hors de l'ordre de fabrication de l'empilement (le via sous une pile percé à une étape plus tardive que celui au-dessus), ou empilé avec un via à profondeur contrôlée
via-laminationerreurtoujoursdes vias dont la portée et le type de perçage ne correspondent à aucune étape de perçage de l'empilement (voir Empilement), par type de via et portée ; le message nomme l'entrée [[vias]] de la carte et liste toutes les portées percées par l'empilement, par type de perçage. La vérification de la carte laisse un type de via placé par le routage à cette règle
neckdowninfotoujoursune piste plus étroite que la largeur de sa classe mais pas sous min_track_width, sur une longueur allant jusqu'à la longueur neckdown de la classe (0,5 mm par défaut)
class-widtherreurtoujoursune piste plus étroite que la largeur de sa classe qui n'est pas un rétrécissement
impedance-widthavertissementclasses d'impédanceune piste d'une classe d'impédance à une autre largeur, son impédance change
impedance-traceerreurclasses d'impédanceune piste d'une classe d'impédance dont la largeur, rétrécissements inclus, ou le cuivre adjacent sur une couche externe place son impédance hors de la tolérance de la classe ; l'écart n'est pas vérifié dans la longueur de rétrécissement d'une pastille ou d'une jonction
track-overlaperreurtoujoursdes pistes d'un même net qui se chevauchent, le cuivre est doublé
acute-turnavertissementtoujoursune piste qui fait un angle de plus de 90 degrés, un piège à acide
zone-overlaperreurzones de cuivredes zones de cuivre de deux nets sur une même couche se chevauchent, court-circuit
zone-to-zoneerreurzones de cuivredes zones de cuivre de deux nets sur une même couche sont à moins de leur clartance
zone-clearanceerreurzones de cuivreune zone de cuivre qui couvre ou approche trop du cuivre d'un autre net
zone-tipsavertissementzones de cuivredes pointes de zone plus aiguës que 30 degrés ; augmentez le min_width de la zone
copper-neckavertissementzones de cuivredes goulets dans une zone de cuivre plus étroits que 90 % du min_width de la zone, que la zone aurait dû ouvrir ; comptés par emplacement avec le plus étroit
zone-islandsinfotoujoursdes îlots de zone de cuivre qui ne rejoignent rien du net de la zone et ont été supprimés
courtyard-overlaperreurcomposantsles zones d'encombrement de deux pièces sur un même côté se chevauchent par leur contour
courtyard-holeerreurcomposantsune zone d'encombrement qui couvre un trou de fixation ou un trou non métallisé d'une autre pièce
mask-weberreurtoujoursdes pastilles de nets différents dont les ouvertures de vernis épargne laissent moins de min_mask_web, une ligne par paire de pièces ; les pastilles d'une empreinte avec mask_web = false sont ignorées entre elles
silk-texterreurtoujoursdu texte de sérigraphie qui encombre d'autres textes, se trouve sur des pastilles, s'imprime sur des vias, croise un contour de sérigraphie ou sort de la carte ; une référence obtient un emplacement dégagé (agentee silk la déplace là)
silk-hiddenavertissementtoujoursdu texte de sérigraphie uniquement caché sous le corps d'une autre pièce
silk-text-heightavertissementtoujoursdu texte de sérigraphie sous min_silk_text_height
silk-artworkerreurtoujoursde l'art de sérigraphie sur des pastilles, sur du texte de sérigraphie ou hors de la carte
watermarkerreurtoujoursle filigrane agentee vX.Y.Z-HASH n'a pas d'emplacement dégagé sur la sérigraphie, ou l'emplacement [watermark] n'est pas dégagé ; le fabricant refuse sans un emplacement, et désactiver la règle ne supprime pas le filigrane
silk-widthavertissementtoujoursdes lignes de sérigraphie de la carte (les [[graphics]] du routage, pas du texte) plus fines que min_silk_width, comptées avec la plus fine ; la sérigraphie d'empreinte est vérifiée avec l'empreinte
pair-skewerreurpairesune paire dont le déséquilibre dépasse max_skew ou le max_skew de la classe, avec le net à allonger
pair-skew-infoinfopairesle déséquilibre de chaque paire dans sa limite
pair-gaperreurpairesune paire qui court côte à côte avec un écart différent du diff_gap de la classe, au-delà de max_uncoupled
pair-couplingavertissementpairesmoins de 80 % d'une paire court côte à côte à l'écart de la paire
match-lengtherreurgroupes d'adaptation de longueurun membre d'un groupe d'adaptation de longueur qui s'écarte de sa cible de plus que la tolérance
interface-pairerreurinterfacesun net d'une interface différentielle sans partenaire de paire
interface-impedanceerreurinterfacesun net d'interface dont la classe n'a pas de cible d'impédance, un net hors de la fenêtre, ou pas d'écart de paire sur une interface différentielle
interface-skewerreurinterfacesune paire dont le déséquilibre dépasse le max_skew de l'interface
interface-bus-skewerreurinterfacesles signaux de données s'écartent de plus de max_bus_skew
interface-clock-windowerreurinterfacesun signal de données qui arrive hors de clock_window par rapport à l'horloge
interface-viaserreurinterfacesune voie avec plus de vias que max_vias
interface-stuberreurinterfacesun stub de via plus long que max_stub
interface-return-viaerreurinterfacesun via de signal sans via de référence à l'intérieur de return_via
interface-lengtherreurinterfacesune voie plus longue que max_length
interface-referenceerreurinterfacesune voie qui court plus de max_unreferenced sans plan de référence à côté

Les règles de placement sont des indications sur l'emplacement des composants, des avis par défaut ; augmentez-les avec [drc] severity. Leurs seuils sont dans la carte :

[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

Les règles mécaniques (part-body-to-edge, les règles mlcc-flex-zone, tombstone-risk, tall-part-shadow) sont des indications et par défaut des informations ; augmentez-les avec [drc] severity. Un condensateur céramique est un composant avec exactement deux pastilles SMD dont l'empreinte est nommée C_* ou contient Capacitor, ou dont la référence est C et un chiffre, sauf si le nom de l'empreinte indique CP_, Tantal, Elec ou Polymer ; mlcc sur l'empreinte ou le placement remplace l'estimation. Le boîtier provient du nom de l'empreinte (1608Metric, sinon un code impérial tel que 0603), sinon de la distance entre les centres des deux pastilles, qui est proche de la longueur du corps.

Un identifiant qui ne nomme aucune règle est un avertissement. Les erreurs dans les fichiers eux-mêmes (un net qui n'est pas dans le schéma, une couche qui n'est pas du cuivre, un préréglage invalide) ne sont pas des règles et ne peuvent pas être désactivées.

docs/format.md · Markdown pour agents