Placa
Verificaciones de reglas de diseño
Cada regla de layout con su id, severidad y la condición bajo la que se ejecuta: cobre, taladros, máscara, serigrafía, ensamblaje, zonas, señales, acceso de prueba y colocación.
Las comprobaciones del diseño de PCB se ejecutan desde un registro de reglas, cada una con un id estable, una categoría (copper, drill, mask, silk, assembly, zone, signal, test, placement), una gravedad predeterminada y una condición sobre la placa: una regla para capas internas solo se ejecuta con 4 o más capas de cobre, una regla de relleno de vías solo cuando las vías están dentro de pads, una regla de BGA solo cuando hay un BGA. Cada mensaje de una regla empieza con su id entre corchetes, p. ej. [via-cuts-pad]. agentee drc NAME --list (MCP drc con list = true) imprime cada regla con su categoría, gravedad y si se aplica a esta placa y por qué; agentee drc NAME imprime solo los mensajes de reglas del diseño de PCB.
[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 | gravedad | se ejecuta cuando | comprobaciones |
|---|---|---|---|
via-cuts-pad | error | siempre | una vía cuyo cobre se superpone o toca un pad SMD mientras su taladro no está completamente dentro del pad: la soldadura se escurre por el interior y el borde del pad se daña. Una vía de otra red que toca un pad se informa como short |
via-annulus-past-pad | aviso | vías en pads | el taladro está dentro del pad, pero el anillo de la vía llega más allá del borde del pad bajo la máscara |
via-in-pad | info | vías en pads | cuenta las vías en pads SMD de su propia red (taladro dentro del pad); fab-notes.txt pide al fabricante que rellene y tape exactamente estas (IPC-4761 tipo VII) |
via-in-pad-fill | error | vías en pads | una vía en un pad con taladro más ancho que max_filled_via_drill, o cuyo tipo de vía establece un fill distinto de filled_capped (IPC-4761 tipo VII) |
hole-to-smd-pad | aviso | siempre | un taladro de vía más cercano a min_hole_to_smd_pad de un pad SMD de su propia red (o sin red) que no toca; la pasta y la soldadura pueden fluir hacia dentro |
drill-size | error | siempre | taladros de pad por debajo de min_drill (con baño) o min_npth_drill (sin baño), o por encima de max_drill (taladros más grandes se rutean, dibújalos como recortes). Los tamaños de vía se comprueban en el [[vias]] de la placa |
slot-size | error | taladros ranurados | ranuras más estrechas que min_plated_slot_width o min_npth_slot_width, o más cortas que el doble de su ancho |
aspect-ratio | error | siempre | taladros con baño cuya profundidad (el cobre y el dieléctrico que atraviesan) sobre el diámetro del taladro supera max_aspect_ratio |
hole-to-copper | error | siempre | una pared de taladro de vía o pad con baño más cercana a min_via_hole_to_copper o min_pth_hole_to_copper del cobre de otra red en una capa que el taladro atraviesa: pistas, pads, vías, zonas de cobre |
inner-hole-to-copper | error | 4 o más capas de cobre | una pared de taladro de pad con baño más cercana a min_inner_pth_hole_to_copper del cobre de otra red en una capa interna |
npth-to-copper | error | taladros sin baño | una pared de taladro sin baño más cercana a min_npth_to_copper de cualquier cobre, incluida la zona de cobre de su propia red |
hole-to-edge | error | taladros sin baño | una pared de taladro sin baño más cercana a min_copper_to_edge del contorno de la placa o de un recorte de la placa, o a través de él |
smd-pad-gap | error | siempre | pads SMD de redes distintas más cercanos que min_smd_pad_gap, una línea por cada par de componentes con los pads más próximos |
pad-to-edge | error | siempre | cobre de pad más cercano a min_copper_to_edge del contorno de la placa o de un recorte de la placa; los pads marcados con edge = true están exentos |
edge-pad-reach | aviso | siempre | un pad marcado con edge = true que no llega hasta el contorno de la placa |
starved-thermal | aviso | zonas de cobre | un pad unido a una zona de cobre de su red en menos de la mitad de su contorno, con menos de dos brazos de al menos min_track_width de ancho, y con menos cobre en total que el ancho propio del pad |
part-to-edge | aviso | componentes | pads SMD más cercanos a min_part_to_edge del contorno o de un recorte de la placa, donde el esfuerzo de despanelado agrieta componentes; omite fiduciales, taladros de montaje y componentes con pads edge |
part-body-to-edge | info | componentes | un cuerpo de componente más cercano a min_body_to_edge del contorno o de un recorte de la placa, o más allá de él (estar sobre un recorte cuenta como más allá) (guías DFM de montaje: ningún componente a menos de 1 mm del borde). El cuerpo es el contorno del fabricante, si no el courtyard, si no el cobre del pad, y el mensaje indica cuál; omite fiduciales, taladros de montaje, componentes con pads edge y huellas con overhang = true |
fiducials | info | componentes | ninguna huella con nombre como Fiducial en la placa |
tooling-holes | info | componentes | ningún taladro sin baño de 1,5 mm o más |
bga-pad | error | un BGA | pads de BGA (16 o más pads SMD redondos) más pequeños que min_bga_pad |
bga-pitch | error | un BGA | paso de bolas más fino que min_bga_pitch |
bga-pad-ratio | aviso | un BGA | diámetro de pad fuera del 40% al 65% del paso (tamaños de land IPC-7351) |
paste-without-mask | aviso | componentes | un pad de cobre con pasta pero sin apertura de máscara en ese lado, de modo que la plantilla imprime sobre la máscara |
mlcc-flex-zone-case | info | condensadores cerámicos | un condensador cerámico de carcasa 0805 (2012 métrico) o mayor dentro de flex_zone del contorno, una esquina de la placa, un recorte de la placa, un taladro de montaje (una huella MountingHole*) o un taladro sin baño de 2 mm o más (Knowles: la zona de esfuerzo suele estar a menos de 5 mm del borde de la PCB o de los puntos de fijación); cuanto más largo sea el chip, más deformación verán sus extremos |
mlcc-flex-zone | info | condensadores cerámicos | un condensador cerámico más pequeño dentro de flex_zone cuyo eje largo apunta al borde, esquina o taladro más cercano (FAQ de Murata: orienta el chip horizontal a la dirección del esfuerzo, de modo que su eje largo corra a lo largo del borde) |
mlcc-flex-zone-info | info | condensadores cerámicos | cuenta los condensadores cerámicos más pequeños dentro de flex_zone que ya están a lo largo del borde |
tombstone-risk | info | chips de 0603 o menores | un componente SMD de dos pads de 0603 (1608 métrico) o menor cuyos pads difieren en tamaño o forma, que tiene una vía en un pad y no en el otro, o cuyo cobre dentro de 0,3 mm de un pad en su capa (pistas, vías, zonas de cobre de su red) supera tombstone_ratio (predeterminado 3) veces el del otro; un pad unido a su zona de cobre a través de un alivio térmico se pondera por el ancho de su brazo frente al ancho de pista en el otro pad, y un pad sin pista, vía o zona de cobre aún no se compara; el extremo que se calienta primero se moja primero y levanta el componente (guías DFM de EMS: lands simétricos y cobre equilibrado en ambos extremos) |
tall-part-shadow | info | alturas de componente superiores a 3 mm | un chip de dos pads de 0603 o menor más cercano a un componente de más de 3 mm de altura que esa altura, medido desde los pads del chip hasta el cuerpo del componente alto (regla empírica de EMS 1:1: sombra en reflujo e inspección); las alturas provienen de la height de la huella, si no del cuerpo que la vista 3D dibuja sin modelo: su valor predeterminado de familia (SOIC, QFN, cabeceras, pantallas) o una parte _h1.25mm del nombre |
test-access | info | componentes | redes que la sección [test] pide sin acceso de sonda desde el lado de la sonda: ningún pad de un punto de prueba (referencia TP1..., o una huella llamada TestPoint*), ningún pad de orificio pasante expuesto (through_holes), ninguna vía sin tapa (vias). Las redes en clases con objetivo de impedancia, y las redes de pares, están exentas y se nombran, porque un tramo muerto las perjudica |
test-pad-geometry | info | puntos de prueba | un pad de punto de prueba por debajo de min_test_pad, más cerca de min_test_pad_pitch de otro centro a centro, más cerca de min_test_pad_to_body del cuerpo de otra pieza en el lado de la sonda, más cerca de min_test_pad_to_edge del borde de la placa o de un orificio de herramienta (orificios no bañados y orificios de montaje), o no en el lado de la sonda |
placement-decoupling-distance | info | componentes | un condensador entre una alimentación y tierra cuyo pad de alimentación está más lejos de decoupling_distance (3 mm) del pin más cercano de un CI en esa alimentación, 2,5 veces eso para condensadores de reserva mayores de 1 uF |
placement-crystal-distance | info | componentes | un cristal u oscilador (referencia Y, o una huella llamada como un cristal u oscilador) cuyo pad de señal está más lejos de crystal_distance (5 mm) del pin del CI en su red |
placement-large-part-off-centre | info | componentes | un chip grande (un BGA, un paquete de 16 o más pines sobre 25 mm2, en caso contrario las piezas con más pines) cuyo centro del courtyard está más de off_centre (0,6) del camino desde el centro de la placa hasta el borde |
placement-hot-parts-close | info | componentes | dos piezas calientes cuyos courtyards están más cerca que hot_distance (5 mm): los [[sources]] de las simulaciones térmicas de este layout a 0,25 W o más, y los paquetes grandes (courtyard de 49 mm2 o más) que esas simulaciones no listan |
placement-cluster-spread | info | componentes | un pasivo de dos pines cuyas redes de señal llegan a un CI y a nada más, más lejos de cluster_spread (10 mm) del pin de ese CI |
placement-connector-not-at-edge | info | componentes | un conector (pads de borde, overhang = true, o una referencia J/P que no sea Tag-Connect, U.FL o pad de prueba) cuyo courtyard está más lejos de connector_edge (3 mm) del contorno |
short | error | siempre | cobre de dos redes diferentes se toca |
clearance | error | siempre | cobre de dos redes más cerca que el mayor de sus despejes de clase (un clearance de huella los sustituye para sus pads), o cobre que entra en un orificio no bañado |
unrouted | error | siempre | una red cuyos pads no están todos unidos por pistas, vías y zonas de cobre, nombrando los grupos que están separados |
dangling-track | aviso | siempre | un extremo de pista que no toca cobre de su red ni ninguna zona de cobre |
track-grazes-pad | aviso | siempre | pistas que llegan a un pad solo con su borde; lleva la línea central hasta el pad |
copper-to-edge | error | siempre | una pista o vía más cerca de min_copper_to_edge del contorno de la placa o de un recorte de placa, o fuera de la placa (una pista a través de un recorte sale de la placa) |
pad-off-board | error | siempre | pads fuera del contorno o en un recorte de placa; los pads marcados con edge = true están exentos |
stitching | info | siempre | cuenta las vías que cada entrada [[stitching]] colocó |
stitching-empty | aviso | siempre | una entrada [[stitching]] que no colocó ninguna vía |
fanout-empty | aviso | siempre | una entrada [[fanouts]] que no colocó ninguna vía |
hole-to-hole | error | siempre | orificios de piezas diferentes o vías más cerca de min_hole_to_hole, pared a pared, contados con el primer par; solo cuentan orificios cuyos tramos comparten un dieléctrico, así que una microvía junto a una vía enterrada no es un par |
stacked-via | error | siempre | una vía en el mismo sitio que otra vía de su red a través del mismo dieléctrico (perforada dos veces), apilada sobre otra vía en una capa cuando stacked_microvias está desactivado o fuera del orden de construcción del laminado (la vía bajo una pila perforada en un paso posterior que la de arriba), o apilada con una vía de profundidad controlada en absoluto |
via-lamination | error | siempre | vías cuyo tramo y tipo de taladro no coinciden con ningún paso de taladro de la laminación (ver Laminación), por tipo de vía y tramo; el mensaje nombra la entrada [[vias]] de la placa y lista todos los tramos que la laminación taladra, por tipo de taladro. La comprobación de la placa deja un tipo de vía que un layout coloca a esta regla |
neckdown | info | siempre | una pista más estrecha que el ancho de su clase pero no por debajo de min_track_width, en un tramo de hasta la longitud neckdown de la clase (0,5 mm por defecto) |
class-width | error | siempre | una pista más estrecha que el ancho de su clase que no es un estrechamiento |
impedance-width | aviso | clases de impedancia | una pista de una clase de impedancia a otro ancho, su impedancia cambia |
impedance-trace | error | clases de impedancia | una pista de una clase de impedancia cuyo ancho, incluidos los estrechamientos, o el cobre a su lado en una capa externa pone su impedancia fuera de la tolerancia de la clase; el despejo no se comprueba dentro de la longitud de estrechamiento de un pad o una unión |
track-overlap | error | siempre | pistas de una red que corren una sobre otra, el cobre se duplica |
acute-turn | aviso | siempre | una pista que gira más de 90 grados, una trampa de ácido |
zone-overlap | error | zonas de cobre | rellenos de dos redes en una capa se solapan, un cortocircuito |
zone-to-zone | error | zonas de cobre | rellenos de dos redes en una capa más cerca que su despeje |
zone-clearance | error | zonas de cobre | un relleno que cubre o se acerca demasiado al cobre de otra red |
zone-tips | aviso | zonas de cobre | puntas de relleno más agudas de 30 grados; sube el min_width de la zona |
copper-neck | aviso | zonas de cobre | cuellos en un relleno más estrechos que el 90% del min_width de la zona, que el relleno debería haber abierto; contados por sitio con el más estrecho |
zone-islands | info | siempre | islas de relleno que no llegan a nada de la red de la zona y fueron eliminadas |
courtyard-overlap | error | componentes | courtyards de dos piezas en un lado se solapan por su contorno |
courtyard-hole | error | componentes | un courtyard que cubre un orificio de montaje o un orificio no bañado de otra pieza |
mask-web | error | siempre | pads de redes diferentes cuyas aperturas de máscara dejan menos de min_mask_web, una línea por par de piezas; los pads de una huella con mask_web = false se omiten entre sí |
silk-text | error | siempre | texto de serigrafía que aprieta a otro texto, está sobre pads, imprime sobre vías, cruza un contorno de serigrafía o sale de la placa; una referencia recibe un sitio despejado (agentee silk la mueve allí) |
silk-hidden | aviso | siempre | texto de serigrafía solo oculto bajo el cuerpo de otra pieza |
silk-text-height | aviso | siempre | texto de serigrafía por debajo de min_silk_text_height |
silk-artwork | error | siempre | arte de serigrafía sobre pads, sobre texto de serigrafía o fuera de la placa |
watermark | error | siempre | la marca de agua agentee vX.Y.Z-HASH no tiene un sitio despejado en la serigrafía, o el sitio [watermark] no está despejado; el fabricante se niega sin un sitio, y desactivar la regla no elimina la marca de agua |
silk-width | aviso | siempre | líneas de serigrafía de la placa (los [[graphics]] del layout, no texto) más finas que min_silk_width, contadas con la más fina; la serigrafía de la huella se comprueba con la huella |
pair-skew | error | pares | un par con un desfase superior a su max_skew o al max_skew de la clase, con la red que hay que alargar |
pair-skew-info | info | pares | el desfase de cada par dentro de su límite |
pair-gap | error | pares | un par que corre lado a lado con un separación distinta a la diff_gap de la clase, más allá de max_uncoupled |
pair-coupling | aviso | pares | menos del 80 % de un par corre lado a lado con la separación del par |
match-length | error | grupos de igualación | un miembro de un grupo de igualación que se desvía de su objetivo más allá de la tolerancia |
interface-pair | error | interfaces | una red de una interfaz diferencial sin su par |
interface-impedance | error | interfaces | una red de interfaz cuya clase no tiene un objetivo de impedancia, una fuera de la ventana, o sin separación de par en una interfaz diferencial |
interface-skew | error | interfaces | un par con un desfase superior al max_skew de la interfaz |
interface-bus-skew | error | interfaces | las señales de datos se extienden más allá de max_bus_skew |
interface-clock-window | error | interfaces | una señal de datos que llega fuera de clock_window respecto al reloj |
interface-vias | error | interfaces | un carril con más vías que max_vias |
interface-stub | error | interfaces | un stub de vía más largo que max_stub |
interface-return-via | error | interfaces | una vía de señal sin una vía de referencia dentro de return_via |
interface-length | error | interfaces | un carril más largo que max_length |
interface-reference | error | interfaces | un carril que corre más de max_unreferenced sin un plano de referencia a su lado |
Las reglas de colocación son una guía sobre dónde se sitúan las piezas; por defecto son avisos; súbelas con [drc] severity. Sus umbrales están en la placa:
[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 centreLas reglas mecánicas (part-body-to-edge, las reglas mlcc-flex-zone, tombstone-risk, tall-part-shadow) son una guía y por defecto son información; súbelas con [drc] severity. Un condensador cerámico es una pieza con exactamente dos pads SMD cuya huella se llama C_* o contiene Capacitor, o cuya referencia es C y un dígito, a menos que el nombre de la huella diga CP_, Tantal, Elec o Polymer; mlcc en la huella o en la colocación anula la suposición. El cuerpo se toma del nombre de la huella (1608Metric, si no, un código imperial como 0603), si no, de la distancia entre los centros de los dos pads, que es cercana a la longitud del cuerpo.
Un identificador que no nombra ninguna regla es un aviso. Los errores en los propios archivos (una red que no está en el esquemático, una capa que no es cobre, un preset incorrecto) no son reglas y no se pueden desactivar.