agentee

Conception

Spécifications de carte, empilements et classes de nets

Choisissez un fabricant et un empilement réel, définissez une classe de nets par type de net, et fixez des cibles d'impédance et de courant pour que la vérification calcule les largeurs.

La spécification de la carte est le premier fichier d'une conception et celui contre lequel tout le reste est vérifié. Elle nomme le fabricant, l'empilement, le contour, les types de vias et les classes de nets. Faites-la bien d'abord : un routage fait contre le mauvais empilement a la mauvaise impédance sur chaque ligne contrôlée.

agentee new board sensor-node

Choisissez un fabricant

name = "sensor-node"
fab = "jlcpcb"

fab choisit un préréglage de règles : generic, jlcpcb ou hdi. Le préréglage est un tableau indexé par le nombre de couches de cuivre, l'épaisseur du cuivre externe et le fini, donc une carte à quatre couches de 1 oz a des règles de pistes plus serrées qu'une carte à deux couches de 2 oz. Les valeurs jlcpcb suivent la page de capacités de JLCPCB ligne par ligne ; la référence des règles donne chaque valeur avec la ligne dont elle vient, et les rares endroits où agentee est plus strict volontairement.

Écrasez n'importe quelle règle dans [rules] :

[rules]
min_track_width = "0.15mm"
min_clearance = "0.15mm"

Choisissez un empilement réel

Ne tapez pas les épaisseurs de couches. Choisissez la construction propre au fabricant :

agentee stackups --fab jlcpcb --layers 4
agentee stackups --fab jlcpcb --layers 6 --thickness 1.6
agentee stackups JLC04161H-7628

Les préréglages couvrent toutes les constructions d'impédance JLCPCB, de 4 à 20 couches et de 0,4 à 3,0 mm, les constructions standard PCBWay de 4 à 18 couches, et deux constructions HDI génériques. Les préréglages JLCPCB utilisent le code du fabricant, JLC04161H-7628 : couches, épaisseur, cuivre externe et interne, préimprégné. La dernière commande affiche les couches d'un préréglage avec leur épaisseur et leur permittivité.

agentee edit board sensor-node stackup --preset JLC04161H-7628 --finish ENIG

Commandez la carte avec la même construction : si JLCPCB utilise un autre empilement, toutes les impédances que vous avez résolues sont fausses.

Contour, découpes et trous

agentee edit board sensor-node outline --size 50,30 --corner-radius 1mm
[[outline.cutouts]]
origin = [20, 12]
size = [6, 2]
corner_radius = 1              # half the width makes a slot

Un contour est un rectangle avec size, origin et corner_radius, ou un polygone de points. Une découpe est une fenêtre, une fente ou un grand trou traversant la carte, et tout ce qui concerne le bord (cuivre jusqu'au bord, pastilles, zones de cuivre, le routeur, les simulations) traite le bord d'une découpe comme le bord de la carte. Une découpe dans le fichier de routage est différente : elle n'empêche que les zones de cuivre de couvrir une zone sur certaines couches.

Types de vias

[[vias]]
name = "std"
drill = "0.3mm"
diameter = "0.6mm"

Une carte peut lister plusieurs types de vias. Un via traversant ne demande rien d'autre ; les vias aveugles, enterrés et microvias nécessitent un fabricant HDI et sont couverts dans HDI : microvias et laminage.

Classes de nets

Une classe de nets définit ce qu'est un net : sa largeur de piste, son espacement, ses vias et les cibles auxquelles la vérification le soumet. Donnez à chaque type de net sa propre classe. Un net laissé dans Default est un avertissement, car la classe détermine comment il est routé.

agentee edit board sensor-node class Signal --track-width 0.2mm --clearance 0.2mm --via std
agentee edit board sensor-node class Power --current 2A --max-temp-rise 10C
agentee edit board sensor-node class USB --impedance 90ohm --diff-gap 0.15mm --layers F.Cu
agentee edit board sensor-node class RF --impedance 50ohm --coplanar-gap 0.2mm --solver field --layers F.Cu

class modifie la classe de ce nom sur place ou l'ajoute. Ce que font les cibles :

  • current est vérifié contre IPC-2221 sur chaque couche que la classe peut utiliser, à max_temp_rise (10 C par défaut). Les couches internes transportent moins que les couches externes, et la vérification indique la largeur qui le transporte sur chacune :
error: blinky.board.toml: blinky netclass Power on In2.Cu: 0.6mm carries only 0.451A for a 10C rise, 1A needs 1.7994mm (IPC-2221)
  • impedance est vérifié sur chaque couche dans layers. Omettez track_width et la vérification le résout sur la première couche ; donnez widths par couche si une seule largeur ne convient pas à toutes les couches.
  • diff_gap fait de la classe une paire différentielle, et son impédance devient l'impédance différentielle.
  • coplanar_gap la rend coplanaire à masse : la zone de cuivre maintient cet espacement de chaque côté, avec le plan de masse en dessous.
  • solver = "field" vérifie la classe avec le solveur de champ GPU, qui inclut le vernis épargne et l'épaisseur de cuivre, au lieu de formules analytiques.

Voir ce que donne l'empilement

agentee check
agentee show board:sensor-node

show affiche la carte résolue en JSON : pour chaque classe et couche, la géométrie de la piste (microstrip sur les couches externes, stripline à l'intérieur), l'impédance, la largeur qui atteint la cible et le courant qu'elle transporte. Quand une classe est hors cible, la vérification indique de combien et quoi utiliser :

error: lna.board.toml: lna netclass RF on F.Cu: field solver gives 59.4 ohm with solder mask, outside 50ohm +/- 5%, use track_width = "0.2985mm" (50.2 ohm)

Collez la largeur, relancez la vérification. Impédance contrôlée et paires va plus loin.

Paramètres des règles de conception

Les vérifications de routage proviennent d'un registre de règles, chacune avec un identifiant, une catégorie et une gravité par défaut. La carte peut les désactiver ou changer leur gravité :

[drc]
disable = ["silk-width"]
severity = { "starved-thermal" = "error", "via-in-pad" = "warning" }

agentee drc NAME --list affiche chaque règle avec l'indication de si elle s'applique à cette carte et pourquoi. La référence des vérifications de règles de conception les liste toutes.

Liste de contrôle

  • fab défini, et un préréglage d'empilement preset que le fabricant construit réellement.
  • Une classe par type de net : signal, alimentation, masse, chaque impédance, chaque paire.
  • Cibles d'impédance et de courant sur les classes, pas des largeurs calculées à la main.
  • solver = "field" sur chaque classe où quelques ohms comptent.
  • agentee check sans erreur avant que le schéma commence à nommer les classes.

Améliorer ce guide · Markdown pour agents