Schema e layout
Schemi
Il file *.sch.toml: componenti posizionati, net come liste di pin, classi di net, rail e verifica dei livelli di segnale, e fogli per progetti grandi.
I componenti sono simboli posizionati; i net elencano i pin che collegano. I fili vengono disegnati per te su una griglia da 1,27 mm a meno che non li specifichi tu.
name = "lna"
board = "lna" # net classes come from this board
no_connect = ["U2.7"] # pins left open on purpose
[[parts]]
ref = "U1"
symbol = "SPF5189Z"
value = "SPF5189Z"
at = [66.04, 50.8] # keep on the 1.27 mm grid
rotation = 90 # 0, 90, 180, 270, counter-clockwise
mirror = true # flip left to right before rotating
# unit = 2 # one [[parts]] per unit of a multi-unit symbol, same ref
# footprint = "SOT-89-3" # default: the symbol's footprint
# dnp = true
fields = { mpn = "Qorvo SPF5189Z" }
[[nets]]
name = "RF_OUT"
class = "RF" # a netclass of the board; without one the net is in "Default"
pins = ["C2.2", "J2.1", "L3.1"] # REF.PIN, by number or by a unique pin name
# style = "power" # wire (default) | label | power (ground and supply symbols)
# wires = [[[x, y], [x, y]], ...] # draw it yourself; check verifies it reaches every pinI rail e gli ingressi analogici, per il controllo del livello di segnale, vanno in cima al file (o in cima allo schema principale di un set di fogli):
rails = { GND = 0, "3V3" = [3.25, 3.35], VBUS = [4.75, 5.25] } # volts, or [min, max]
analog = ["U1.13"] # inputs read by an ADC: only min and max applyCon rails impostato, il controllo calcola la tensione che ogni ingresso con levels vede: resistori (componenti R, 1% a meno che il componente non abbia un campo tolerance), interruttori (componenti SW, ogni stato aperto e chiuso), uscite a collettore aperto (spente e basse), pull interni e dispersione in ingresso, ciascuno al suo peggior angolo tra gli intervalli di rail e resistori. È un errore quando l'ingresso può stare tra VIL e VIH, quando fluttua senza nulla che lo leghi a un rail, quando la dispersione attraverso un pull debole lo sposta fuori da un livello valido, e quando può superare il suo min o max. Entro 100 mV da una soglia è un avviso. Un net con altro su di esso (un'uscita, un connettore, un diodo, un pin di alimentazione di un net non in rails) è pilotato da qualcosa che non può modellare e viene saltato. I condensatori e i punti di test sono ignorati. Un pin bidirezionale può essere in pilotaggio: a meno che un interruttore o un collettore aperto sul net non mostri che è tirato, gli altri ingressi sul suo net vengono saltati e non viene segnalato come fluttuante.
Fogli
Dividi un progetto grande in uno schema per sezione e uniscili in uno schema principale che li elenca. Il layout posiziona quello principale.
name = "sdr" # sdr.sch.toml
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]Ogni foglio è un normale file di schema con i suoi componenti e net. I net si uniscono tra i fogli per nome, quindi 3V3 su ogni foglio è un solo net e un segnale lascia un foglio e arriva su un altro con lo stesso nome. I pin di un net devono essere componenti sullo stesso foglio; un net che attraversa i fogli ha bisogno della stessa class ovunque la specifichi, e viene disegnato con etichette. I riferimenti sono univoci nell'intero progetto. Un foglio da solo salta gli avvisi per pin singolo e classe Default (il resto del net, e la sua classe, possono essere su un altro foglio); lo schema principale esegue ogni controllo sul progetto unito e disegna i fogli impilati dall'alto verso il basso. Il file principale può contenere anche i suoi componenti e net.
Il controllo segnala pin in due net, pin in nessun net, net con un solo pin, più uscite su un solo net, fili manuali che non toccano un pin o toccano un pin di un altro net, componenti sovrapposti, footprint le cui piazzole non coprono i pin del simbolo, e livelli di segnale quando rails è impostato. Ogni net nella classe di net Default è un avviso, che specifichi una classe o specifichi Default: la classe imposta la larghezza, la distanza, le vie e l'ordine di instradamento del net, quindi ogni net dovrebbe dire cosa è. L'avviso ha bisogno di una scheda e di un layout dello schema; uno schema solo simulato (come examples/logic) lo salta. Dai alla scheda una classe per ogni tipo di net (Signal, Data, Clock, Analog, Ground, Power, RF, coppie) e mantieni Default come fallback che il layout usa per le regole non coperte da una classe. agentee show sch:lna stampa la posizione di ogni pin.