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| identifiant | sévérité | s'exécute si | vérifications |
|---|---|---|---|
via-cuts-pad | erreur | toujours | un 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-pad | avertissement | vias dans les pastilles | le perçage est dans la pastille mais l'annulus du via dépasse du bord de la pastille sous le vernis |
via-in-pad | info | vias dans les pastilles | compte 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-fill | erreur | vias dans les pastilles | un 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-pad | avertissement | toujours | un 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-size | erreur | toujours | trous 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-size | erreur | trous en fente | fentes plus étroites que min_plated_slot_width ou min_npth_slot_width, ou plus courtes que deux fois leur largeur |
aspect-ratio | erreur | toujours | trous 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-copper | erreur | toujours | une 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-copper | erreur | 4 couches de cuivre ou plus | une 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-copper | erreur | trous non placés | une 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-edge | erreur | trous non placés | une 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-gap | erreur | toujours | pastilles 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-edge | erreur | toujours | cuivre 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-reach | avertissement | toujours | une pastille marquée edge = true qui n'atteint pas le contour de la carte |
starved-thermal | avertissement | zones de cuivre | une 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-edge | avertissement | composants | pastilles 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-edge | info | composants | un 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 |
fiducials | info | composants | aucune empreinte nommée comme Fiducial sur la carte |
tooling-holes | info | composants | aucun trou non placé de 1,5 mm ou plus |
bga-pad | erreur | un BGA | pastilles BGA (16 pastilles SMD rondes ou plus) plus petites que min_bga_pad |
bga-pitch | erreur | un BGA | pas de billes plus fin que min_bga_pitch |
bga-pad-ratio | avertissement | un BGA | diamètre de pastille en dehors de 40 % à 65 % du pas (tailles de land IPC-7351) |
paste-without-mask | avertissement | composants | une 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-case | info | condensateurs céramiques | un 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-zone | info | condensateurs céramiques | un 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-info | info | condensateurs céramiques | compte les condensateurs céramiques plus petits à moins de flex_zone qui sont déjà alignés le long du bord |
tombstone-risk | info | puces de 0603 ou plus petites | un 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-shadow | info | hauteurs de composants supérieures à 3 mm | une 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-access | info | composants | nets 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-geometry | info | points de test | une 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-distance | info | composants | un 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-distance | info | composants | un 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-centre | info | composants | un 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-close | info | composants | deux 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-spread | info | composants | un 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-edge | info | composants | un 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 |
short | erreur | toujours | le cuivre de deux nets différents se touche |
clearance | erreur | toujours | le 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é |
unrouted | erreur | toujours | un 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-track | avertissement | toujours | une extrémité de piste qui ne touche aucun cuivre de son net et aucune zone de cuivre |
track-grazes-pad | avertissement | toujours | des pistes qui n'atteignent une pastille que par leur bord ; amenez la ligne centrale dans la pastille |
copper-to-edge | erreur | toujours | une 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-board | erreur | toujours | des pastilles hors du contour ou dans une découpe de la carte ; les pastilles marquées edge = true sont exemptées |
stitching | info | toujours | compte les vias placés par chaque entrée [[stitching]] |
stitching-empty | avertissement | toujours | une entrée [[stitching]] qui n'a placé aucun via |
fanout-empty | avertissement | toujours | une entrée [[fanouts]] qui n'a placé aucun via |
hole-to-hole | erreur | toujours | des 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-via | erreur | toujours | un 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-lamination | erreur | toujours | des 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 |
neckdown | info | toujours | une 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-width | erreur | toujours | une piste plus étroite que la largeur de sa classe qui n'est pas un rétrécissement |
impedance-width | avertissement | classes d'impédance | une piste d'une classe d'impédance à une autre largeur, son impédance change |
impedance-trace | erreur | classes d'impédance | une 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-overlap | erreur | toujours | des pistes d'un même net qui se chevauchent, le cuivre est doublé |
acute-turn | avertissement | toujours | une piste qui fait un angle de plus de 90 degrés, un piège à acide |
zone-overlap | erreur | zones de cuivre | des zones de cuivre de deux nets sur une même couche se chevauchent, court-circuit |
zone-to-zone | erreur | zones de cuivre | des zones de cuivre de deux nets sur une même couche sont à moins de leur clartance |
zone-clearance | erreur | zones de cuivre | une zone de cuivre qui couvre ou approche trop du cuivre d'un autre net |
zone-tips | avertissement | zones de cuivre | des pointes de zone plus aiguës que 30 degrés ; augmentez le min_width de la zone |
copper-neck | avertissement | zones de cuivre | des 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-islands | info | toujours | des îlots de zone de cuivre qui ne rejoignent rien du net de la zone et ont été supprimés |
courtyard-overlap | erreur | composants | les zones d'encombrement de deux pièces sur un même côté se chevauchent par leur contour |
courtyard-hole | erreur | composants | une zone d'encombrement qui couvre un trou de fixation ou un trou non métallisé d'une autre pièce |
mask-web | erreur | toujours | des 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-text | erreur | toujours | du 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-hidden | avertissement | toujours | du texte de sérigraphie uniquement caché sous le corps d'une autre pièce |
silk-text-height | avertissement | toujours | du texte de sérigraphie sous min_silk_text_height |
silk-artwork | erreur | toujours | de l'art de sérigraphie sur des pastilles, sur du texte de sérigraphie ou hors de la carte |
watermark | erreur | toujours | le 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-width | avertissement | toujours | des 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-skew | erreur | paires | une paire dont le déséquilibre dépasse max_skew ou le max_skew de la classe, avec le net à allonger |
pair-skew-info | info | paires | le déséquilibre de chaque paire dans sa limite |
pair-gap | erreur | paires | une paire qui court côte à côte avec un écart différent du diff_gap de la classe, au-delà de max_uncoupled |
pair-coupling | avertissement | paires | moins de 80 % d'une paire court côte à côte à l'écart de la paire |
match-length | erreur | groupes d'adaptation de longueur | un membre d'un groupe d'adaptation de longueur qui s'écarte de sa cible de plus que la tolérance |
interface-pair | erreur | interfaces | un net d'une interface différentielle sans partenaire de paire |
interface-impedance | erreur | interfaces | un 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-skew | erreur | interfaces | une paire dont le déséquilibre dépasse le max_skew de l'interface |
interface-bus-skew | erreur | interfaces | les signaux de données s'écartent de plus de max_bus_skew |
interface-clock-window | erreur | interfaces | un signal de données qui arrive hors de clock_window par rapport à l'horloge |
interface-vias | erreur | interfaces | une voie avec plus de vias que max_vias |
interface-stub | erreur | interfaces | un stub de via plus long que max_stub |
interface-return-via | erreur | interfaces | un via de signal sans via de référence à l'intérieur de return_via |
interface-length | erreur | interfaces | une voie plus longue que max_length |
interface-reference | erreur | interfaces | une 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 centreLes 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.