agentee

Esquema e layout

Esquemas

O ficheiro *.sch.toml: componentes posicionados, redes como listas de pinos, classes de rede, barramentos e a verificação de nível de sinal, e folhas para designs grandes.

Os componentes são símbolos colocados; as redes listam os pinos que unem. Os fios são desenhados automaticamente numa grelha de 1,27 mm, a menos que os forneça.

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 pin

Trilhos e entradas analógicas, para a verificação de nível de sinal, ficam no topo do ficheiro (ou no esquema superior de um conjunto de folhas):

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 apply

Com rails definido, a verificação calcula a tensão que cada entrada com levels vê: resistores (componentes R, 1% a menos que o componente tenha um campo tolerance), interruptores (componentes SW, todos os estados aberto e fechado), saídas de coletor aberto (desligado e baixo), puxamentos internos e fuga de entrada, cada um no seu pior canto ao longo dos intervalos de trilho e resistor. É um erro quando a entrada pode ficar entre VIL e VIH, quando flutua sem nada que a ligue a um trilho, quando a fuga através de um puxamento fraco a move para fora de um nível válido, e quando pode ultrapassar o seu min ou max. Dentro de 100 mV de um limiar é um aviso. Uma rede com qualquer outra coisa (uma saída, um conector, um díodo, um pino de alimentação de uma rede não em rails) é excitada por algo que não pode modelar e é ignorada. Capacitores e pontos de teste são ignorados. Um pino bidirecional pode estar a excitar: a menos que um interruptor ou coletor aberto na rede mostre que está puxado, as outras entradas na sua rede são ignoradas e não é reportado como flutuante.

Folhas

Dividir um projeto grande num esquema por secção e uni-los num esquema superior que os lista. O layout coloca o superior.

name = "sdr"                   # sdr.sch.toml
board = "sdr"
sheets = ["power", "fpga", "rf", "usb"]

Cada folha é um ficheiro de esquema ordinário com os seus próprios componentes e redes. As redes unem-se entre folhas pelo nome, por isso 3V3 em todas as folhas é uma rede e um sinal sai de uma folha e chega a outra com o mesmo nome. Os pinos de uma rede devem ser componentes na mesma folha; uma rede que abrange folhas precisa do mesmo class onde quer que nomeie uma, e é desenhada com etiquetas. As referências são únicas em todo o projeto. Uma folha isolada ignora os avisos de pino único e classe Default (o resto da rede, e a sua classe, podem estar noutra folha); o esquema superior executa todas as verificações no projeto unido e desenha as folhas empilhadas de cima para baixo. O ficheiro superior pode também conter componentes e redes próprios.

A verificação reporta pinos em duas redes, pinos sem rede, redes de pino único, várias saídas numa rede, fios manuais que perdem um pino ou tocam num pino de outra rede, componentes sobrepostos, footprints cujos pads não cobrem os pinos do símbolo, e níveis de sinal quando rails está definido. Cada rede na classe de rede Default é um aviso, quer não nomeie classe alguma quer nomeie Default: a classe define a largura, o espaçamento, as vias e a ordem de roteamento da rede, por isso cada rede deve dizer o que é. O aviso precisa de uma placa e de um layout do esquema; um esquema apenas simulado (como examples/logic) ignora-o. Dar à placa uma classe por tipo de rede (Signal, Data, Clock, Analog, Ground, Power, RF, pares) e manter Default como o recurso que o layout usa para regras que nenhuma classe cobre. agentee show sch:lna imprime a posição de cada pino.

docs/format.md · Markdown para agentes