agentee

Diseño

Redacción de esquemáticos

Componentes, redes y clases con agentee edit, lotes de comandos, hojas para diseños grandes, y la verificación de nivel de señal que detecta divisores entre VIL y VIH.

Un esquemático en agentee es una lista de piezas y una lista de redes. Una red es un nombre, una clase y los pines que une. Las líneas se dibujan por ti cuando el esquemático se renderiza, así que nada del circuito depende de dónde se haya arrastrado una línea.

name = "lna"
board = "lna"

[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8]
rotation = 90
fields = { mpn = "Qorvo SPF5189Z" }

[[nets]]
name = "RF_OUT"
class = "RF"
pins = ["C2.2", "J2.1", "L3.1"]

board nombra la especificación de la placa, que es de donde proceden las clases de red. Defínela primero.

Editar con comandos

agentee edit sch escribe el archivo por ti, conserva sus comentarios y su diseño, y comprueba lo que cambió. Rechaza un pin, símbolo o clase que no existe antes de escribir nada, así que un error tipográfico nunca se convierte en una red nueva.

agentee edit sch NAME add R1 R 10k --footprint R_0402_1005Metric --at 25.4,25.4
agentee edit sch NAME net VBUS C1.1 U1.7 --class Power
agentee edit sch NAME connect R1.2 FB
agentee edit sch NAME nc U2.3
agentee edit sch NAME note "FB divider sets 3.3 V"
agentee edit sch NAME --list
agentee edit sch help

Los comandos son add, remove, move, set, net, connect, disconnect, nc, unnc y note. Un pin es REF.PIN, por número (U1.3) o por un nombre de pin único (U1.VCC). Un nombre que comparten varios pines, como GND en un regulador con dos pines de masa, es un error que lista los números. Dar a un pin una red en la que ya está lo mueve a la red nueva.

add coloca una pieza a la derecha de todo lo que hay, en la cuadrícula de 1,27 mm. --at X,Y la coloca en otro sitio y la ajusta a la cuadrícula. --list imprime las piezas y redes como JSON, y --json en cualquier comando devuelve los pines y coordenadas resueltos.

Lotes

Más de una pieza o una red a la vez: escribe los comandos como una lista. Una carga, una comprobación al final, para que los estados a medio construir intermedios nunca se informen:

agentee edit sch - <<'EOF'
add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5
add C1 C 1u --footprint C_0402_1005Metric
add C2 C 1u --footprint C_0402_1005Metric
net VBUS U1.VIN U1.EN C1.1 --class Power
net 3V3 U1.VOUT C2.1 --class Power
net GND U1.GND C1.2 C2.2 --class Ground --style power
note "LDO, 600 mA"
EOF
added U1 (AP2112K-3.3)
added C1 (C)
added C2 (C)
VBUS now joins U1.1, U1.3, C1.1
3V3 now joins U1.5, C2.1
GND now joins U1.2, C1.2, C2.2
noted: LDO, 600 mA
warning: ./power.sch.toml: power part U1: body overlaps C1 (parts[1])
0 errors, 1 warnings in the files this touched

Los nombres de pin resueltos a números, y la salida indica cuáles. El tercer argumento de add es el valor; un símbolo sin valor por defecto necesita uno.

agentee edit sch build.txt hace lo mismo desde un archivo. Los lotes funcionan sobre el único esquemático que tiene el proyecto. Con varios, ejecuta cada comando por separado y nombra el esquemático: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.

Clases en todas las redes

Cada red recibe una class de la placa. Una red en Default es una advertencia, ya sea porque no nombra ninguna clase o porque nombra Default, porque la clase decide su ancho, separación, vías y orden de trazado en la placa. Ten una clase por tipo de red: Signal, Power, Ground, Clock, RF, cada par.

--style power dibuja una red con símbolos de masa o alimentación en lugar de líneas, y --style label con etiquetas de red.

Pines abiertos

Un pin que queda fuera de todas las redes se informa. Los pines que están abiertos a propósito van en no_connect:

agentee edit sch NAME nc U2.7 U2.8

Rieles y la comprobación de nivel de señal

Da a los símbolos de lógica y MCU una tabla [levels] de la hoja de datos (ver Piezas), y al esquemático una tabla rails:

rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] }
analog = ["U1.13"]

La comprobación calcula entonces el voltaje que ve cada entrada con niveles, en el peor rincón de sus rieles y tolerancias de resistencias (1% a menos que la pieza tenga un campo tolerance), a través de conmutadores en todos los estados, salidas de colector abierto apagadas y bajas, derivas internas y fuga de entrada. Es un error cuando una entrada:

  • puede quedar entre VIL y VIH, como un divisor que cae en el medio,
  • flota sin nada que la atenga a un riel,
  • se mueve fuera de un nivel válido por fuga a través de una derivación demasiado débil,
  • puede pasar de su min o max.

Dentro de 100 mV de un umbral es una advertencia. Las entradas listadas en analog se leen con un ADC, así que solo se aplican sus límites. Una red con algo que la comprobación no puede modelar, como una salida o un conector, se omite en lugar de suponer.

Hojas

Pasado un par de docenas de componentes, da a cada sección su propio esquemático y léalos en uno superior. El layout coloca el superior.

name = "sdr"
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]

Cada hoja es un archivo de esquemático ordinario. Las redes se unen entre hojas por nombre, así que 3V3 en todas las hojas es una red. Los pines de una red deben estar en la hoja que los lista, las referencias son únicas en todo el diseño, y una red que abarca hojas necesita la misma clase dondequiera que la nombre. Una hoja por sí sola omite las advertencias de pin único y clase Default, ya que el resto de la red puede estar en otro sitio; el esquemático superior ejecuta todas las comprobaciones sobre el diseño unido.

Líneas dibujadas a mano

Deja wires fuera y agentee las traza. Si quieres un dibujo concreto, da a la red sus propias wires = [[[x, y], [x, y]], ...], y la comprobación verifica que llegan a cada pin y no tocan otra red.

Míralo

agentee render sch:NAME -o sch.png
agentee show sch:NAME

show imprime la posición de cada pin, que es lo que un agente necesita para colocar una pieza junto a otra.

Lo que la comprobación informa

Pines en dos redes, pines sin red, redes de un solo pin, varias salidas en una red, líneas a mano que fallan un pin o tocan otra red, piezas superpuestas, huellas cuyos pads no cubren los pines del símbolo, redes en Default, y los niveles de señal cuando se define rails.

Mejorar esta guía · Markdown para agentes