agentee

Schéma et routage

Schémas

Le fichier *.sch.toml : composants placés, nets en tant que listes de broches, classes de nets, rails et vérification des niveaux de signal, et feuilles pour les grandes conceptions.

Les composants sont des symboles placés ; les nets listent les broches qu'ils relient. Les fils sont dessinés pour vous sur une grille de 1,27 mm à moins que vous ne les donniez.

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

Les rails et les entrées analogiques, pour la vérification du niveau de signal, vont en haut du fichier (ou du schéma supérieur d'un ensemble de feuilles) :

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

Avec rails défini, la vérification calcule la tension que chaque entrée avec levels voit : résistances (composants R, 1 % à moins que le composant n'ait un champ tolerance), interrupteurs (composants SW, tous les états ouvert et fermé), sorties collecteur ouvert (éteint et bas), tirages internes et fuite d'entrée, chacun à son pire coin sur les plages de rail et de résistance. C'est une erreur quand l'entrée peut se situer entre VIL et VIH, quand elle flotte sans rien qui la relie à un rail, quand la fuite à travers un tirage faible la déplace hors d'un niveau valide, et quand elle peut dépasser son min ou max. Dans les 100 mV d'un seuil, c'est un avertissement. Un net avec autre chose dessus (une sortie, un connecteur, une diode, une broche d'alimentation d'un net pas dans rails) est piloté par quelque chose qu'il ne peut pas modéliser et est ignoré. Les condensateurs et les points de test sont ignorés. Une broche bidirectionnelle peut piloter : à moins qu'un interrupteur ou un collecteur ouvert sur le net ne montre qu'elle est tirée, les autres entrées sur son net sont ignorées et elle n'est pas signalée comme flottante.

Feuilles

Divisez un grand design en un schéma par section et reliez-les dans un schéma supérieur qui les liste. Le routage place le supérieur.

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

Chaque feuille est un fichier de schéma ordinaire avec ses propres composants et nets. Les nets se relient entre les feuilles par nom, donc 3V3 sur chaque feuille est un seul net et un signal quitte une feuille et arrive sur une autre sous le même nom. Les broches d'un net doivent être des composants sur la même feuille ; un net qui traverse les feuilles a besoin du même class partout où il en nomme un, et est dessiné avec des étiquettes. Les références sont uniques dans le design. Une feuille seule ignore les avertissements de broche unique et de classe Default (le reste du net, et sa classe, peuvent être sur une autre feuille) ; le schéma supérieur exécute chaque vérification sur le design joint et dessine les feuilles empilées de haut en bas. Le fichier supérieur peut aussi contenir ses propres composants et nets.

La vérification signale les broches dans deux nets, les broches sans net, les nets à broche unique, plusieurs sorties sur un net, les fils manuels qui manquent une broche ou touchent une broche d'un autre net, les composants qui se chevauchent, les empreintes dont les pastilles ne couvrent pas les broches du symbole, et les niveaux de signal quand rails est défini. Chaque net dans la classe de nets Default est un avertissement, qu'il ne nomme pas de classe ou qu'il nomme Default : la classe définit la largeur, l'espacement, les vias et l'ordre de routage du net, donc chaque net devrait dire ce qu'il est. L'avertissement a besoin d'une carte et d'un routage du schéma ; un schéma seulement simulé (comme examples/logic) l'ignore. Donnez à la carte une classe par type de net (Signal, Data, Clock, Analog, Ground, Power, RF, paires) et gardez Default comme secours que le routage utilise pour les règles qu'aucune classe ne couvre. agentee show sch:lna imprime la position de chaque broche.

docs/format.md · Markdown pour agents