agentee

Projektowanie

Pisanie schematów

Elementy, sieci i klasy za pomocą agentee edit, partie poleceń, arkusze dla dużych projektów oraz sprawdzanie poziomu sygnału, które wyłapuje dzielniki między VIL a VIH.

Schemat w agentee to lista elementów i lista sieci. Sieć to nazwa, klasa i piny, które łączy. Przewody są rysowane za ciebie, gdy schemat jest renderowany, więc nic w obwodzie nie zależy od tego, gdzie przeciągnięto linię.

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 podaje nazwę specyfikacji płytki, skąd pochodzą klasy sieci. Ustaw to jako pierwsze.

Edycja za pomocą poleceń

agentee edit sch zapisuje plik za ciebie, zachowuje jego komentarze i układ, i sprawdza to, co zmienił. Odmawia pinu, symbolu lub klasy, która nie istnieje, zanim cokolwiek zapisze, więc literówka nigdy nie staje się nową siecią.

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

Polecenia to add, remove, move, set, net, connect, disconnect, nc, unnc i note. Pin to REF.PIN, po numerze (U1.3) lub po unikalnej nazwie pinu (U1.VCC). Nazwa wspólna dla kilku pinów, jak GND na regulatorze z dwoma pinami masy, to błąd, który wypisuje numery. Nadanie pinu sieci, na której już jest, przenosi go do nowej sieci.

add umieszcza element po prawej stronie wszystkiego, co jest, na siatce 1,27 mm. --at X,Y stawia go gdzie indziej i przyciąga do siatki. --list wypisuje elementy i sieci jako JSON, a --json przy dowolnym poleceniu zwraca rozstrzelone piny i współrzędne.

Baterie

Więcej niż jeden element lub sieć naraz, zapisz polecenia jako listę. Jeden załadunek, jedno sprawdzenie na końcu, więc półzłożone stany po drodze nigdy nie są raportowane:

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

Nazwy pinów rozstrzelone do numerów, a wyjście mówi, które. Trzeci argument add to wartość; symbol bez wartości domyślnej jej wymaga.

agentee edit sch build.txt robi to samo z pliku. Baterie działają na jednym schemacie, który ma projekt. Przy kilku, uruchamiaj każde polecenie osobno i podaj nazwę schematu: agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.

Klasy na każdej sieci

Każda sieć dostaje class z płytki. Sieć w Default to ostrzeżenie, niezależnie od tego, czy nie podaje klasy, czy podaje Default, bo klasa decyduje o jej szerokości, odstępach, przelotkach i kolejności routingu na płytce. Miej klasę dla każdego rodzaju sieci: Signal, Power, Ground, Clock, RF, każda para.

--style power rysuje sieć symbolami masy lub zasilania zamiast przewodów, a --style label etykietami sieci.

Otwarte piny

Pin pominięty z każdej sieci jest raportowany. Piny celowo otwarte trafiają do no_connect:

agentee edit sch NAME nc U2.7 U2.8

Szyny i sprawdzenie poziomu sygnału

Podaj symbolom logiki i MCU tabelę [levels] z datasheetu (patrz Elementy), a schematowi tabelę rails:

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

Sprawdzenie wylicza wtedy napięcie, które każdy wejściowy pin z poziomami widzi, przy najgorszym rogu jego szyn i tolerancji rezystorów (1%, chyba że element ma pole tolerance), przez przełączniki w każdym stanie, wyjścia otwartego kolektora wyłączone i niskie, wewnętrzne rezystory pociągające i prądy upływu wejść. To błąd, gdy wejście:

  • może znaleźć się między VIL a VIH, jak dzielnik, który ląduje w połowie,
  • pływa, bo nic nie wiąże go z szyną,
  • jest wypchnięte z poprawnego poziomu przez upływ przez zbyt słaby rezystor pociągający,
  • może przekroczyć swoje min lub max.

W odległości 100 mV od progu to ostrzeżenie. Wejścia wymienione w analog są odczytywane przez ADC, więc stosują się tylko ich limity. Sieć z czymś, czego sprawdzenie nie może zamodelować, jak wyjście lub złącze, jest pomijana zamiast zgadywana.

Arkusze

Po kilkudziesięciu elementach, daj każdemu działowi własny schemat i wypisz je w schemacie nadrzędnym. Projekt PCB umieszcza schemat nadrzędny.

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

Każdy arkusz to zwykły plik schematu. Siecie łączą się między arkuszami po nazwie, więc 3V3 na każdym arkuszu to jedna sieć. Piny sieci muszą być na arkuszu, który je wymienia, odniesienia są unikalne w całym projekcie, a sieć rozciągająca się na arkusze potrzebuje tej samej klasy wszędzie, gdzie ją podaje. Arkusz sam w sobie pomija ostrzeżenia o pinie pojedynczym i klasie Default, bo reszta sieci może być gdzie indziej; schemat nadrzędny uruchamia każde sprawdzenie na połączonym projekcie.

Przewody rysowane ręcznie

Pozostaw wires puste i agentee je zarutuje. Jeśli chcesz konkretny rysunek, podaj sieci własne wires = [[[x, y], [x, y]], ...], a sprawdzenie zweryfikuje, czy docierają do każdego pinu i nie dotykają innej sieci.

Spójrz na to

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

show wypisuje pozycję każdego pinu, co jest tym, czego agent potrzebuje, by umieścić element obok innego.

Co raportuje sprawdzenie

Piny w dwóch sieciach, piny w żadnej sieci, sieci z jednym pinem, kilka wyjść na jednej sieci, ręczne przewody, które pomijają pin lub dotykają innej sieci, nakładające się elementy, footprity, których pady nie pokrywają pinów symbolu, sieci w Default i poziomy sygnału, gdy ustawiono rails.

Popraw ten przewodnik · Markdown dla agentów