Progettazione
Scrittura di schemi
Componenti, net e classi con agentee edit, batch di comandi, fogli per grandi progettazioni, e il controllo del livello di segnale che cattura i divisori tra VIL e VIH.
Uno schema in agentee è un elenco di parti e un elenco di net. Un net è un nome, una classe e i pin che unisce. I fili vengono disegnati per te quando lo schema viene renderizzato, quindi nulla del circuito dipende da dove è stato trascinata una linea.
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 la specifica della scheda, che è dove provengono le classi di net. Impostalo per primo.
Modifica con comandi
agentee edit sch scrive il file per te, mantiene i suoi commenti e il suo layout, e verifica ciò che ha modificato. Rifiuta un pin, un simbolo o una classe che non esiste prima di scrivere qualcosa, quindi un refuso non diventa mai un nuovo net.
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 helpI comandi sono add, remove, move, set, net, connect, disconnect, nc, unnc e note. Un pin è REF.PIN, per numero (U1.3) o per un nome di pin univoco (U1.VCC). Un nome condiviso da più pin, come GND su un regolatore con due pin di massa, è un errore che elenca i numeri. Dare a un pin un net su cui è già presente lo sposta sul nuovo net.
add posiziona una parte a destra di tutto ciò che c'è, sulla griglia di 1,27 mm. --at X,Y la posiziona altrove e la aggancia alla griglia. --list stampa le parti e i net in JSON, e --json su qualsiasi comando restituisce i pin e le coordinate risolte.
Lotti
Più di una parte o un net alla volta, scrivi i comandi come un elenco. Un caricamento, una verifica alla fine, in modo che gli stati a metà costruzione in mezzo non vengano mai riportati:
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"
EOFadded 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 touchedI nomi dei pin risolti in numeri, e l'output dice quali. Il terzo argomento di add è il valore; un simbolo senza valore predefinito ne richiede uno.
agentee edit sch build.txt fa la stessa cosa da un file. I lotti funzionano sullo schema unico che un progetto ha. Con più schemi, esegui ogni comando da solo e indica lo schema: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.
Classi su ogni net
Ogni net riceve una class dalla scheda. Un net in Default è un avviso, che non indichi una classe o indichi Default, perché la classe decide la sua larghezza, il distacco, le vie e l'ordine di instradamento sulla scheda. Hai una classe per ogni tipo di net: Signal, Power, Ground, Clock, RF, ogni coppia.
--style power disegna un net con simboli di massa o alimentazione invece di fili, e --style label con etichette di net.
Pin aperti
Un pin lasciato fuori da ogni net viene riportato. I pin che sono aperti di proposito vanno in no_connect:
agentee edit sch NAME nc U2.7 U2.8Rail e verifica del livello di segnale
Dai ai simboli di logica e MCU una tabella [levels] dal datasheet (vedi Parti), e allo schema una tabella rails:
rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] }
analog = ["U1.13"]La verifica calcola poi la tensione che ogni ingresso con livelli vede, al peggior angolo delle sue rail e delle tolleranze dei resistori (1% a meno che la parte non abbia un campo tolerance), attraverso interruttori in ogni stato, uscite a collettore aperto spente e basse, pull interni e dispersione degli ingressi. È un errore quando un ingresso:
- può stare tra VIL e VIH, come un partitore che cade a metà,
- galleggia senza nulla che lo leghi a una rail,
- viene spostato fuori da un livello valido dalla dispersione attraverso un pull troppo debole,
- può superare il suo
minomax.
Entro 100 mV da una soglia è un avviso. Gli ingressi elencati in analog sono letti da un ADC, quindi si applicano solo i loro limiti. Un net con qualcosa su di esso che la verifica non può modellare, come un'uscita o un connettore, viene saltato invece di essere indovinato.
Fogli
Oltre una dozzina di parti, dai a ogni sezione il suo schema ed elencali in uno superiore. Il layout posiziona quello superiore.
name = "sdr"
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]Ogni foglio è un file di schema ordinario. I net si uniscono tra i fogli per nome, quindi 3V3 su ogni foglio è un solo net. I pin di un net devono essere sul foglio che li elenca, i riferimenti sono univoci in tutto il design, e un net che attraversa i fogli ha bisogno della stessa classe ovunque ne indichi una. Un foglio da solo salta gli avvisi per pin singolo e classe Default, poiché il resto del net può essere altrove; lo schema superiore esegue ogni verifica sul design unito.
Fili disegnati a mano
Lascia wires fuori e agentee li instrada. Se vuoi un disegno particolare, dai al net i suoi wires = [[[x, y], [x, y]], ...], e la verifica verifica che raggiungano ogni pin e non tocchino nessun altro net.
Guardalo
agentee render sch:NAME -o sch.png
agentee show sch:NAMEshow stampa la posizione di ogni pin, che è ciò di cui un agente ha bisogno per posizionare una parte accanto a un'altra.
Cosa riporta la verifica
Pin in due net, pin in nessun net, net con un solo pin, più uscite su un solo net, fili a mano che mancano un pin o toccano un altro net, parti sovrapposte, footprint le cui piazzole non coprono i pin del simbolo, net in Default, e i livelli di segnale quando rails è impostato.