agentee

Conception

Rédiger des schémas

Composants, nets et classes avec agentee edit, lots de commandes, feuilles pour les grandes conceptions, et la vérification du niveau de signal qui détecte les diviseurs entre VIL et VIH.

Un schéma dans agentee est une liste de composants et une liste de nets. Un net est un nom, une classe et les broches qu'il relie. Les fils sont dessinés pour vous lorsque le schéma est rendu, donc rien dans le circuit ne dépend de l'endroit où une ligne a été déplacée.

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 nomme la spécification de la carte, d'où viennent les classes de nets. Définissez-la en premier.

Modifier avec des commandes

agentee edit sch écrit le fichier pour vous, conserve ses commentaires et sa mise en page, et vérifie ce qu'il a modifié. Il refuse une broche, un symbole ou une classe qui n'existe pas avant d'écrire quoi que ce soit, donc une faute de frappe ne devient jamais un nouveau 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 help

Les commandes sont add, remove, move, set, net, connect, disconnect, nc, unnc et note. Une broche est REF.PIN, par numéro (U1.3) ou par un nom de broche unique (U1.VCC). Un nom partagé par plusieurs broches, comme GND sur un régulateur avec deux broches de masse, est une erreur qui liste les numéros. Donner à une broche un net sur lequel elle est déjà la déplace vers le nouveau net.

add place un composant à droite de tout ce qui existe, sur la grille de 1,27 mm. --at X,Y le place ailleurs et l'aligne sur la grille. --list affiche les composants et les nets en JSON, et --json sur n'importe quelle commande renvoie les broches résolues et les coordonnées.

Lots

Plus d'un composant ou d'un net à la fois, écrivez les commandes comme une liste. Un chargement, une vérification à la fin, pour que les états intermédiaires ne soient jamais signalés :

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

Les noms de broches résolus en numéros, et la sortie indique lesquels. Le troisième argument de add est la valeur ; un symbole sans valeur par défaut en a besoin.

agentee edit sch build.txt fait la même chose depuis un fichier. Les lots fonctionnent sur le schéma unique du projet. Avec plusieurs, exécutez chaque commande séparément et nommez le schéma : agentee edit sch power add U1 AP2112K-3.3 AP2112K-3.3 --footprint SOT-23-5.

Classes sur chaque net

Chaque net reçoit une class de la carte. Un net dans Default est un avertissement, qu'il ne nomme pas de classe ou qu'il nomme Default, car la classe décide de sa largeur, de son espacement, de ses vias et de son ordre de routage sur la carte. Ayez une classe par type de net : Signal, Power, Ground, Clock, RF, chaque paire.

--style power dessine un net avec des symboles de masse ou d'alimentation au lieu de fils, et --style label avec des étiquettes de nets.

Broches ouvertes

Une broche laissée hors de tout net est signalée. Les broches ouvertes volontairement vont dans no_connect :

agentee edit sch NAME nc U2.7 U2.8

Rails et vérification du niveau de signal

Donnez aux symboles de logique et de MCU un tableau [levels] depuis la fiche technique (voir Composants), et au schéma un tableau rails :

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

La vérification calcule ensuite la tension que chaque entrée avec niveaux voit, au pire coin de ses rails et des tolérances des résistances (1 % sauf si le composant a un champ tolerance), à travers les interrupteurs dans tous les états, les sorties collecteur ouvert éteintes et basses, les résistances internes et la fuite d'entrée. C'est une erreur si une entrée :

  • peut se situer entre VIL et VIH, comme un diviseur qui tombe au milieu,
  • flotte sans rien qui la relie à un rail,
  • est déviée d'un niveau valide par la fuite à travers une résistance de tirage trop faible,
  • peut dépasser son min ou son max.

À moins de 100 mV d'un seuil, c'est un avertissement. Les entrées listées dans analog sont lues par un ADC, donc seules leurs limites s'appliquent. Un net avec quelque chose dessus que la vérification ne peut pas modéliser, comme une sortie ou un connecteur, est ignoré plutôt que deviné.

Feuilles

Au-delà de quelques dizaines de composants, donnez à chaque section son propre schéma et listez-les dans un schéma supérieur. Le routage place le schéma supérieur.

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

Chaque feuille est un fichier de schéma ordinaire. Les nets se rejoignent entre les feuilles par nom, donc 3V3 sur chaque feuille est un seul net. Les broches d'un net doivent être sur la feuille qui les liste, les références sont uniques dans tout le design, et un net qui traverse les feuilles a besoin de la même classe partout où il en nomme une. Une feuille seule ignore les avertissements de broche unique et de classe Default, car le reste du net peut être ailleurs ; le schéma supérieur exécute toutes les vérifications sur le design joint.

Fils dessinés à la main

Laissez wires de côté et agentee les route. Si vous voulez un dessin particulier, donnez au net ses propres wires = [[[x, y], [x, y]], ...], et la vérification confirme qu'ils atteignent chaque broche et ne touchent aucun autre net.

Regardez-le

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

show affiche la position de chaque broche, ce dont un agent a besoin pour placer un composant à côté d'un autre.

Ce que la vérification signale

Broches dans deux nets, broches dans aucun net, nets à une seule broche, plusieurs sorties sur un même net, fils manuels qui manquent une broche ou touchent un autre net, composants qui se chevauchent, empreintes dont les pastilles ne couvrent pas les broches du symbole, nets dans Default, et les niveaux de signal si rails est défini.

Améliorer ce guide · Markdown pour agents