agentee

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
idgravedadse ejecuta cuandocomprobaciones
via-cuts-paderrorsiempreuna 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-padavisovías en padsel 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-padinfovías en padscuenta 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-fillerrorvías en padsuna 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-padavisosiempreun 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-sizeerrorsiempretaladros 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-sizeerrortaladros ranuradosranuras más estrechas que min_plated_slot_width o min_npth_slot_width, o más cortas que el doble de su ancho
aspect-ratioerrorsiempretaladros 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-coppererrorsiempreuna 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-coppererror4 o más capas de cobreuna 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-coppererrortaladros sin bañouna 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-edgeerrortaladros sin bañouna 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-gaperrorsiemprepads 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-edgeerrorsiemprecobre 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-reachavisosiempreun pad marcado con edge = true que no llega hasta el contorno de la placa
starved-thermalavisozonas de cobreun 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-edgeavisocomponentespads 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-edgeinfocomponentesun 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
fiducialsinfocomponentesninguna huella con nombre como Fiducial en la placa
tooling-holesinfocomponentesningún taladro sin baño de 1,5 mm o más
bga-paderrorun BGApads de BGA (16 o más pads SMD redondos) más pequeños que min_bga_pad
bga-pitcherrorun BGApaso de bolas más fino que min_bga_pitch
bga-pad-ratioavisoun BGAdiámetro de pad fuera del 40% al 65% del paso (tamaños de land IPC-7351)
paste-without-maskavisocomponentesun 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-caseinfocondensadores cerámicosun 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-zoneinfocondensadores cerámicosun 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-infoinfocondensadores cerámicoscuenta los condensadores cerámicos más pequeños dentro de flex_zone que ya están a lo largo del borde
tombstone-riskinfochips de 0603 o menoresun 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-shadowinfoalturas de componente superiores a 3 mmun 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-accessinfocomponentesredes 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-geometryinfopuntos de pruebaun 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-distanceinfocomponentesun 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-distanceinfocomponentesun 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-centreinfocomponentesun 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-closeinfocomponentesdos 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-spreadinfocomponentesun 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-edgeinfocomponentesun 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
shorterrorsiemprecobre de dos redes diferentes se toca
clearanceerrorsiemprecobre 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
unroutederrorsiempreuna red cuyos pads no están todos unidos por pistas, vías y zonas de cobre, nombrando los grupos que están separados
dangling-trackavisosiempreun extremo de pista que no toca cobre de su red ni ninguna zona de cobre
track-grazes-padavisosiemprepistas que llegan a un pad solo con su borde; lleva la línea central hasta el pad
copper-to-edgeerrorsiempreuna 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-boarderrorsiemprepads fuera del contorno o en un recorte de placa; los pads marcados con edge = true están exentos
stitchinginfosiemprecuenta las vías que cada entrada [[stitching]] colocó
stitching-emptyavisosiempreuna entrada [[stitching]] que no colocó ninguna vía
fanout-emptyavisosiempreuna entrada [[fanouts]] que no colocó ninguna vía
hole-to-holeerrorsiempreorificios 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-viaerrorsiempreuna 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-laminationerrorsiempreví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
neckdowninfosiempreuna 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-widtherrorsiempreuna pista más estrecha que el ancho de su clase que no es un estrechamiento
impedance-widthavisoclases de impedanciauna pista de una clase de impedancia a otro ancho, su impedancia cambia
impedance-traceerrorclases de impedanciauna 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-overlaperrorsiemprepistas de una red que corren una sobre otra, el cobre se duplica
acute-turnavisosiempreuna pista que gira más de 90 grados, una trampa de ácido
zone-overlaperrorzonas de cobrerellenos de dos redes en una capa se solapan, un cortocircuito
zone-to-zoneerrorzonas de cobrerellenos de dos redes en una capa más cerca que su despeje
zone-clearanceerrorzonas de cobreun relleno que cubre o se acerca demasiado al cobre de otra red
zone-tipsavisozonas de cobrepuntas de relleno más agudas de 30 grados; sube el min_width de la zona
copper-neckavisozonas de cobrecuellos 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-islandsinfosiempreislas de relleno que no llegan a nada de la red de la zona y fueron eliminadas
courtyard-overlaperrorcomponentescourtyards de dos piezas en un lado se solapan por su contorno
courtyard-holeerrorcomponentesun courtyard que cubre un orificio de montaje o un orificio no bañado de otra pieza
mask-weberrorsiemprepads 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-texterrorsiempretexto 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-hiddenavisosiempretexto de serigrafía solo oculto bajo el cuerpo de otra pieza
silk-text-heightavisosiempretexto de serigrafía por debajo de min_silk_text_height
silk-artworkerrorsiemprearte de serigrafía sobre pads, sobre texto de serigrafía o fuera de la placa
watermarkerrorsiemprela 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-widthavisosiemprelí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-skewerrorparesun 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-infoinfoparesel desfase de cada par dentro de su límite
pair-gaperrorparesun 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-couplingavisoparesmenos del 80 % de un par corre lado a lado con la separación del par
match-lengtherrorgrupos de igualaciónun miembro de un grupo de igualación que se desvía de su objetivo más allá de la tolerancia
interface-pairerrorinterfacesuna red de una interfaz diferencial sin su par
interface-impedanceerrorinterfacesuna 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-skewerrorinterfacesun par con un desfase superior al max_skew de la interfaz
interface-bus-skewerrorinterfaceslas señales de datos se extienden más allá de max_bus_skew
interface-clock-windowerrorinterfacesuna señal de datos que llega fuera de clock_window respecto al reloj
interface-viaserrorinterfacesun carril con más vías que max_vias
interface-stuberrorinterfacesun stub de vía más largo que max_stub
interface-return-viaerrorinterfacesuna vía de señal sin una vía de referencia dentro de return_via
interface-lengtherrorinterfacesun carril más largo que max_length
interface-referenceerrorinterfacesun 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 centre

Las 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.

docs/format.md · Markdown para agentes