agentee

Design

Escrever esquemas

Componentes, redes e classes com agentee edit, lotes de comandos, folhas para designs grandes, e a verificação de nível de sinal que deteta divisores entre VIL e VIH.

Um esquema no agentee é uma lista de peças e uma lista de redes. Uma rede é um nome, uma classe e os pinos que junta. Os fios são desenhados por si quando o esquema é renderizado, pelo que nada no circuito depende de onde uma linha foi arrastada.

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 indica a especificação da placa, que é de onde vêm as classes de rede. Defina-a primeiro.

Editar com comandos

O agentee edit sch escreve o ficheiro por si, mantém os seus comentários e layout, e verifica o que alterou. Recusa um pino, símbolo ou classe que não existe antes de escrever qualquer coisa, pelo que um erro de digitação nunca se torna uma nova rede.

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

Os comandos são add, remove, move, set, net, connect, disconnect, nc, unnc e note. Um pino é REF.PIN, por número (U1.3) ou por um nome de pino único (U1.VCC). Um nome partilhado por vários pinos, como GND num regulador com dois pinos de massa, é um erro que lista os números. Dar a um pino uma rede em que já está move-o para a nova rede.

O add coloca uma peça à direita de tudo o que existe, na grelha de 1,27 mm. O --at X,Y coloca-a noutro sítio e ajusta à grelha. O --list imprime as peças e redes em JSON, e o --json em qualquer comando devolve os pinos resolvidos e as coordenadas.

Lotes

Mais do que uma peça ou uma rede de cada vez, escreva os comandos como uma lista. Uma carga, uma verificação no fim, para que os estados a meio nunca sejam reportados:

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

Os nomes dos pinos resolvidos para números, e a saída indica quais. O terceiro argumento do add é o valor; um símbolo sem valor predefinido precisa de um.

O agentee edit sch build.txt faz o mesmo a partir de um ficheiro. Os lotes funcionam no único esquema que o projeto tem. Com vários, execute cada comando por si e indique o esquema: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.

Classes em todas as redes

Cada rede recebe uma class da placa. Uma rede em Default é um aviso, quer não indique classe alguma ou indique Default, porque a classe decide a sua largura, folga, vias e ordem de roteamento na placa. Tenha uma classe por tipo de rede: Signal, Power, Ground, Clock, RF, cada par.

O --style power desenha uma rede com símbolos de massa ou alimentação em vez de fios, e o --style label com etiquetas de rede.

Pinos abertos

Um pino deixado fora de todas as redes é reportado. Os pinos que estão abertos de propósito vão para no_connect:

agentee edit sch NAME nc U2.7 U2.8

Alimentações e a verificação do nível de sinal

Dê a símbolos de lógica e MCU uma tabela [levels] da folha de dados (ver Peças), e ao esquema uma tabela rails:

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

A verificação calcula então a tensão que cada entrada com níveis vê, no pior canto das suas alimentações e tolerâncias dos resistores (1% a menos que a peça tenha um campo tolerance), através de interruptores em todos os estados, saídas de coletor aberto desligadas e baixas, puxamentos internos e fuga de entrada. É um erro quando uma entrada:

  • pode ficar entre VIL e VIH, como um divisor que cai no meio,
  • flutua com nada a prendê-la a uma alimentação,
  • é movida para fora de um nível válido pela fuga através de um puxamento demasiado fraco,
  • pode ultrapassar o seu min ou max.

Dentro de 100 mV de um limiar é um aviso. As entradas listadas em analog são lidas por um ADC, pelo que só os seus limites se aplicam. Uma rede com algo que a verificação não consegue modelar, como uma saída ou um conector, é ignorada em vez de adivinhada.

Folhas

Além de algumas dezenas de peças, dê a cada secção o seu próprio esquema e liste-os num esquema principal. O layout coloca o esquema principal.

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

Cada folha é um ficheiro de esquema ordinário. As redes juntam-se entre folhas por nome, pelo que 3V3 em todas as folhas é uma única rede. Os pinos de uma rede têm de estar na folha que os lista, as referências são únicas em todo o design, e uma rede que abrange folhas precisa da mesma classe onde quer que a indique. Uma folha por si ignora os avisos de pino único e classe Default, uma vez que o resto da rede pode estar noutro sítio; o esquema principal executa todas as verificações no design unido.

Fios desenhados à mão

Deixe wires de fora e o agentee roteia-os. Se quiser um desenho particular, dê à rede os seus próprios wires = [[[x, y], [x, y]], ...], e a verificação confirma que chegam a todos os pinos e não tocam noutra rede.

Ver

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

O show imprime a posição de cada pino, que é o que um agente precisa para colocar uma peça ao lado de outra.

O que a verificação reporta

Pinos em duas redes, pinos sem rede, redes de pino único, várias saídas numa rede, fios à mão que falham um pino ou tocam noutra rede, peças sobrepostas, footprints cujos pads não cobrem os pinos do símbolo, redes em Default, e os níveis de sinal quando rails está definido.

Melhorar este guia · Markdown para agentes