agentee

Esquemático y layout

Diseños de PCB (layout)

El archivo *.pcb.toml: colocaciones, pistas, vías, fanouts, costuras, zonas, recortes, serigrafía, arte, acceso de prueba y la marca de agua de versión.

Coloca las huellas del esquemático en la placa y las enrutadas.

name = "lna"
board = "lna"
schematic = "lna"

[[footprints]]
ref = "U1"
at = [13.0, 8.05]
rotation = 90                  # degrees, counter-clockwise
# side = "bottom"              # mirrors the footprint and swaps F./B. layers
label = { at = [9.9, 7.4], rotation = 90 }   # move the silk reference; size = 0.8, hide = true
# mlcc = false                 # this part is not a ceramic capacitor, over the footprint's `mlcc`
# locked = true                # `agentee place` never moves it

[[tracks]]
net = "RF_OUT"
layer = "F.Cu"
points = [[18.68, 10], [25.5, 10]]
# width = 0.36                 # default: the net class width

[[vias]]
net = "GND"
at = [7.2, 8.9]
# via = "std"                  # a [[vias]] name from the board, default the first class via
# count = 6                    # a row, like pads
# pitch = [1.2, 0]

[[fanouts]]                    # a via in every connected pad of a BGA
ref = "U3"                     # * and ? globs: ref = "*" with nets = [...] fans out every plane pad
# via = "bga"                  # or a list, the first reaching the pad layer; default the class vias
# skip_rings = 2               # leave the two outer rings for escape on the outer layer
# always = ["GND", "LVDS_*"]   # nets that get a via even in those rings, globs allowed
# skip = ["A1", "B7"]          # pads to leave alone
# skip_at = [[4.5, 3.0]]       # no via at these spots (the viewer adds one when you edit a via)
# nets = ["GND", "3V3"]        # only pads on these nets, globs allowed
# exclude = ["C2?", "J1"]      # refs to leave out when ref is a glob; a glob never
                               # matches test points, a probe pad keeps no via

[[stitching]]                  # ground vias wherever they clear every other net and silk text
net = "GND"
# via = "std"                  # default the net's first class via
# pitch = "2.5mm"              # grid pitch, or the spacing along a fence (default 1mm)
# outline = [[x, y], ...]      # default the board outline
# margin = "0.6mm"             # extra distance from the board edge
# fence = ["RF_*"]             # instead of a grid: a row either side of these nets' tracks
# offset = "0.5mm"             # fence row distance from the track centre, default just past
                               # the class coplanar gap
# skip_at = [[4.5, 3.0]]       # no via at these spots (the viewer adds one when you edit a via)

[[zones]]
net = "GND"
layers = ["F.Cu", "In1.Cu", "In2.Cu", "B.Cu"]
# outline = [[x, y], ...]      # default: the board outline
# clearance = 0.25             # default: the net class clearance
# priority = 1                # higher fills first; other nets' zones on the layer pour around it
# min_island_area = 2.0       # mm2; a piece touching one item of the net is kept only this big
# pad_connection = "relief"    # solid (default) | relief: pads of the net join the pour by four
                               # spokes across a gap, so they heat like a track-fed pad;
                               # none: the pour keeps its clearance from the pads. A pad's
                               # own zone_connect wins, and BGA balls (16 or more round SMD
                               # pads) stay solid, since spokes starve a ball of solder heat
# relief_tht_only = true       # relief on through-hole pads only, SMD pads solid (KiCad's
                               # thru_hole_only)
# relief_gap = "0.3mm"         # default: the zone clearance
# spoke_width = "0.3mm"        # default: the net class track width, at least min_width

[[cutouts]]                    # keep zones off an area, e.g. under an SMA centre pin;
                               # a hole through the board is [[outline.cutouts]] in the board file
layers = ["In1.Cu"]
points = [[0, 9], [5.4, 9], [5.4, 11], [0, 11]]

[[graphics]]                   # board text and lines, same keys as footprint graphics
kind = "text"
layer = "F.SilkS"              # F.SilkS, B.SilkS, F.Fab or B.Fab
at = [7.4, 7.6]
# locked = true                # `agentee place` never moves it
text = "RF IN"
size = 1.0                     # mm, the fab minimum is in the board rules

[[artwork]]                    # a filled logo or icon
layer = "F.SilkS"
icon = "arrow"                 # built in: arrow, warning, ground, antenna, lightning, pin1, ce
# file = "logo.svg"            # or any SVG, relative to this file
at = [7.4, 6.3]                # centre of the artwork
height = 0.8                   # mm, the width follows the aspect ratio
# rotation = 90

[test]                         # in-circuit and flying probe test access, all optional
# nets = ["3V3", "*RST*"]      # nets that need a probe, globs, any case; default below
# exclude = ["LED_*"]          # nets to leave out
# side = "B"                   # probe side, F or B
# through_holes = true         # exposed plated through-hole pads count as access
# vias = false                 # vias count as access; opens the probe side mask over every via
# min_test_pad = "1.0mm"       # smallest test pad
# min_test_pad_pitch = "1.27mm"   # centre to centre between test pads
# min_test_pad_to_body = "1.0mm"  # to another part's body on the probe side
# min_test_pad_to_edge = "3.0mm"  # to the board edge and tooling holes

[place]                        # optional, for `agentee place`
# edges = { J1 = "left", J2 = "right" }   # pin a connector to an edge: left, right, top
                               # (smallest y) or bottom
# keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]]   # polygons no courtyard may enter

[watermark]                    # optional: where the agentee version watermark goes
# at = [30, 21]                # centre of the text, default a clear spot found by check
# layer = "B.SilkS"            # default B.SilkS, else F.SilkS
# rotation = 90                # default 0, or 90 where only a tall gap is clear

Cada layout lleva texto de serigrafía agentee vX.Y.Z-HASH: la versión de agentee que construyó el paquete y el hash git corto de su fuente, con -dirty cuando el árbol tenía cambios sin confirmar, o unknown fuera de git. Siempre se traza y no se puede desactivar. Tiene la altura de min_silk_text_height, está centrado y por defecto va en B.SilkS (F.SilkS cuando la cara inferior no tiene sitio o la placa no tiene serigrafía inferior) en el punto despejado más cercano a la esquina inferior izquierda de la placa, rotado 90 grados si solo cabe un hueco alto. Un punto despejado se mantiene lejos de pads, vías, otro texto de serigrafía y líneas, arte y cuerpos de componentes, y se mantiene a min_copper_to_edge dentro del contorno. El visor, el render y los dibujos de montaje lo muestran, y fab-notes.txt lo nombra. Cuando ningún punto está despejado, la verificación informa de un error de watermark con el tamaño a despejar y el punto menos concurrido, y el fabricante lo rechaza; despeja sitio ahí o configura [watermark] at (más layer, rotation) tú mismo. Un punto [watermark] que no está despejado es un error de watermark que nombra con qué choca, y un apilamiento sin capa kind = "silk" es un error de watermark que pide una.

Acceso a pruebas: por defecto, las redes que necesitan una sonda son las redes de alimentación (una clase con current, o un nombre como 3V3, 1V8, +5V, VCC*, VDD*, VBUS*, VBAT*, VIN*, VSYS*), tierra (GND, *GND, GND*) y redes con nombres como *RST*, *RESET*, *EN*, *PG*, *CLK*, *TX*, *RX*, *SCL*, *SDA*, *SWD*, *TCK*, *TMS*, *TDI*, *TDO*. Los valores por defecto excluyen los nodos de conmutación y las redes de retroalimentación del regulador, de arranque suave y de reducción de ruido (SW*, *_SW, LX*, FB*, SS*, NR*, coincidiendo con el nombre completo o con su último segmento tras /), incluso si su clase es de alimentación: la capacidad de la sonda y la rama hasta el pad acoplan ruido de conmutación en un divisor de retroalimentación, ralentizan un filtro de arranque suave o de ruido, y una rama en un nodo de conmutación irradia. nets sustituye esa lista (nombra una red allí para sondarla de todos modos) y exclude quita redes de ella. Un punto de prueba es una pieza con referencia TP y un número, o una huella llamada TestPoint*; como cualquier otra pieza, debe estar en el esquemático. La huella integrada TestPoint_Pad_D1.0mm (un pad SMD circular de 1,0 mm, con máscara abierta y sin pasta) y el símbolo TestPoint se escriben en footprints/ y symbols/ con agentee testpoints.

agentee testpoints NAME --nets "3V3,*RST*" [--side B] [--pitch 2.54] (MCP testpoints) añade un pad de prueba a cada red coincidente que aún no tiene acceso de sonda (las redes son los valores por defecto de [test] cuando se omite --nets, y se omiten redes de impedancia y pares): busca en el lado de sonda un punto libre en una cuadrícula de --pitch cerca del cobre de la red, manteniendo min_test_pad_to_edge de la orilla y los taladros de herramienta, min_test_pad_to_body de los cuerpos de componentes, --pitch de otros pads de prueba, y la separación de la red de otro cobre y de los pads, tramos y vías que colocó para otras redes. Añade un componente TP unido a la red a la hoja del esquemático que nombra la red, una entrada [[footprints]] en el lado de sonda al layout con un tramo de pista corto hasta una vía junto al pad, y luego enruta cada pad nuevo al cobre de la red con el autorouter y añade esas pistas y vías. Un pad que el enrutador no puede unir se quita de nuevo del esquemático y del layout y se lista con las redes que no encontraron punto. Las etiquetas de los pads nuevos se mueven a un punto libre o se ocultan, y cuando el layout almacena rellenos de zona, se actualizan como haría agentee fill. --dry-run informa los puntos sin escribir.

El texto de serigrafía debe mantener 0,4 mm de otro texto de serigrafía y 0,2 mm de los contornos de serigrafía, mantenerse lejos de pads, vías y cuerpos de otros componentes, y mantenerse en la placa. Cada una de estas es un error, excepto el texto bajo el cuerpo de otro componente, que es una advertencia. Cuando una etiqueta de referencia falla, la verificación nombra un punto que pasa todas las reglas, como una línea label = { at = [...] } para pegar. agentee silk NAME (MCP silk) las pega todas por ti y repite hasta que las etiquetas se asientan; --hide oculta las referencias que no tienen punto despejado, típicamente pasivos pequeños bajo una BGA.

Una pieza de relleno se conserva solo si toca dos elementos de su red, o uno y es al menos min_island_area; el resto no llega a nada nuevo y se elimina. La verificación comprueba cada relleno contra otras redes: un relleno que se solapa con la zona, pista, vía o pad de otra red, o se acerca más que el despeje, es un error, y las puntas de cobre más agudas que 30 grados se marcan.

Las zonas de la misma capa se rellenan en orden de priority y, a continuación, de la más pequeña a la más grande. Cada una mantiene su separación respecto a los rellenos ya colocados, de modo que un pequeño nodo de conmutación o una zona de alimentación dentro de una zona de masa que cubre toda la placa se rellena alrededor y no hace cortocircuito con ella.

Los rellenos mantienen min_via_hole_to_copper de los agujeros de vía de otras redes y min_npth_to_copper de los agujeros no bañados, además del despeje, con arcos dibujados fuera del círculo real para que el hueco nunca sea corto. Las vías de cosido van solo donde la vía despeja el cobre de todas las demás redes en cada capa que abarca, mantiene su agujero a min_via_hole_to_copper de ese cobre y a min_hole_to_smd_pad de pads SMD de cualquier red, mantiene min_hole_to_hole de todos los taladros y la regla de borde del contorno, y cae dentro de una zona de su red; la verificación informa de cuántas colocó. Se taladran y trazan como cualquier vía.

Los rellenos de zona son polígonos exactos: el contorno de la zona menos el cobre de todas las demás redes ampliado por su separación, con esquinas redondeadas, de modo que las zonas se rendericen y tracen sin escalones. Los cuellos y tiras más estrechos que el min_width de la zona (0,25 mm por defecto) se eliminan, como los grabaría el fabricante. Cuando dos áreas de separación (antipads, separaciones de pista y pad) se acercan menos de min_width, la zona se recorta hasta las líneas rectas que las unen, dentro de aproximadamente 1,5 min_width de la separación, para no dejar colas ni cuellos de botella apuntando hacia ella. Lo mismo ocurre entre un área de separación y la separación del borde de la placa, un recorte o la separación alrededor del relleno de otra zona.

Las zonas de cobre se almacenan en caché: cada relleno se indexa con un hash de todo lo que depende de él y se guarda en ~/.cache/agentee/fills, de modo que una carga solo rellena las zonas cuyo cobre, despeje o vecinos hayan cambiado (establece AGENTEE_NO_FILL_CACHE para omitir la caché). agentee fill NAME (MCP fill) también guarda los rellenos al final del archivo de layout, una tabla [[fills]] por zona y capa, de modo que un clonado nuevo se carga sin rellenos; un relleno guardado cuyo hash ya no coincide se ignora, y la verificación lo anota con --info. Al importar una placa se guardan sus rellenos. Deja las tablas [[fills]] a la herramienta.

Una pista que solo roza un pad (su línea central no toca el pad) se marca; hazla entrar en el pad. Dos segmentos de una misma red que se superponen en una capa (paralelos, con una solapación mayor que el ancho de pista) son un error, porque el cobre se duplica; una curva más aguda que 90 grados se marca como trampa de ácido. Una pista puede estrecharse por debajo del ancho de su clase, hasta el mínimo del fabricante, durante un máximo de 0,5 mm (el campo neckdown de la clase) donde se une a un pad pequeño; el enrutador dibuja estos estrechamientos él mismo (ver Autorouting). Los agujeros taladrados, las vías y los pads bañados, todos por igual, deben mantener la separación min_hole_to_hole de la placa; la verificación cuenta las parejas que no lo hacen y nombra la primera. Dos vías de una misma red en el mismo punto también son un error: el fabricante taladraría el agujero dos veces. Las aperturas de la máscara son los contornos de los pads, sin expansión, y las vías se tapan. Dos aperturas de redes distintas (o sin red) que se solapan o dejan una telaraña de máscara por debajo de min_mask_web son un error, contado por pareja de componentes con el primer punto nombrado. También se verifican los pads de un componente de paso fino: corrígelo en la huella con pads más estrechos, o establece un min_mask_web menor si el fabricante lo permite. Una huella con mask_web = false tiene su máscara abierta como una sola ventana sobre sus pads (apertura en grupo), de modo que se omiten las parejas de sus propios pads; sus pads siguen verificándose contra otros componentes.

El arte de una capa inferior se espeja para que se lea correctamente desde abajo. Los rellenos y trazos SVG se aplanan a polígonos; el texto dentro de un SVG se ignora, así que conviértelo a trazados primero. El texto y el arte de serigrafía reciben las mismas comprobaciones que las etiquetas de referencia: superposición, pads, contornos de serigrafía, borde de la placa.

docs/format.md · Markdown para agentes