Schéma et routage
Fichiers de routage
Le fichier *.pcb.toml : placements, pistes, vias, fanouts, coutures, zones, découpes, sérigraphie, artwork, accès de test et filigrane de version.
Place les empreintes du schéma sur la carte et les route.
name = "lna"
board = "lna"
schematic = "lna"
[[footprints]]
ref = "U1"
at = [13.0, 8.05]
rotation = 90 # degrees, counter-clockwise
# side = "bottom" # mirrors the footprint and swaps F./B. layers
label = { at = [9.9, 7.4], rotation = 90 } # move the silk reference; size = 0.8, hide = true
# mlcc = false # this part is not a ceramic capacitor, over the footprint's `mlcc`
# locked = true # `agentee place` never moves it
[[tracks]]
net = "RF_OUT"
layer = "F.Cu"
points = [[18.68, 10], [25.5, 10]]
# width = 0.36 # default: the net class width
[[vias]]
net = "GND"
at = [7.2, 8.9]
# via = "std" # a [[vias]] name from the board, default the first class via
# count = 6 # a row, like pads
# pitch = [1.2, 0]
[[fanouts]] # a via in every connected pad of a BGA
ref = "U3" # * and ? globs: ref = "*" with nets = [...] fans out every plane pad
# via = "bga" # or a list, the first reaching the pad layer; default the class vias
# skip_rings = 2 # leave the two outer rings for escape on the outer layer
# always = ["GND", "LVDS_*"] # nets that get a via even in those rings, globs allowed
# skip = ["A1", "B7"] # pads to leave alone
# skip_at = [[4.5, 3.0]] # no via at these spots (the viewer adds one when you edit a via)
# nets = ["GND", "3V3"] # only pads on these nets, globs allowed
# exclude = ["C2?", "J1"] # refs to leave out when ref is a glob; a glob never
# matches test points, a probe pad keeps no via
[[stitching]] # ground vias wherever they clear every other net and silk text
net = "GND"
# via = "std" # default the net's first class via
# pitch = "2.5mm" # grid pitch, or the spacing along a fence (default 1mm)
# outline = [[x, y], ...] # default the board outline
# margin = "0.6mm" # extra distance from the board edge
# fence = ["RF_*"] # instead of a grid: a row either side of these nets' tracks
# offset = "0.5mm" # fence row distance from the track centre, default just past
# the class coplanar gap
# skip_at = [[4.5, 3.0]] # no via at these spots (the viewer adds one when you edit a via)
[[zones]]
net = "GND"
layers = ["F.Cu", "In1.Cu", "In2.Cu", "B.Cu"]
# outline = [[x, y], ...] # default: the board outline
# clearance = 0.25 # default: the net class clearance
# priority = 1 # higher fills first; other nets' zones on the layer pour around it
# min_island_area = 2.0 # mm2; a piece touching one item of the net is kept only this big
# pad_connection = "relief" # solid (default) | relief: pads of the net join the pour by four
# spokes across a gap, so they heat like a track-fed pad;
# none: the pour keeps its clearance from the pads. A pad's
# own zone_connect wins, and BGA balls (16 or more round SMD
# pads) stay solid, since spokes starve a ball of solder heat
# relief_tht_only = true # relief on through-hole pads only, SMD pads solid (KiCad's
# thru_hole_only)
# relief_gap = "0.3mm" # default: the zone clearance
# spoke_width = "0.3mm" # default: the net class track width, at least min_width
[[cutouts]] # keep zones off an area, e.g. under an SMA centre pin;
# a hole through the board is [[outline.cutouts]] in the board file
layers = ["In1.Cu"]
points = [[0, 9], [5.4, 9], [5.4, 11], [0, 11]]
[[graphics]] # board text and lines, same keys as footprint graphics
kind = "text"
layer = "F.SilkS" # F.SilkS, B.SilkS, F.Fab or B.Fab
at = [7.4, 7.6]
# locked = true # `agentee place` never moves it
text = "RF IN"
size = 1.0 # mm, the fab minimum is in the board rules
[[artwork]] # a filled logo or icon
layer = "F.SilkS"
icon = "arrow" # built in: arrow, warning, ground, antenna, lightning, pin1, ce
# file = "logo.svg" # or any SVG, relative to this file
at = [7.4, 6.3] # centre of the artwork
height = 0.8 # mm, the width follows the aspect ratio
# rotation = 90
[test] # in-circuit and flying probe test access, all optional
# nets = ["3V3", "*RST*"] # nets that need a probe, globs, any case; default below
# exclude = ["LED_*"] # nets to leave out
# side = "B" # probe side, F or B
# through_holes = true # exposed plated through-hole pads count as access
# vias = false # vias count as access; opens the probe side mask over every via
# min_test_pad = "1.0mm" # smallest test pad
# min_test_pad_pitch = "1.27mm" # centre to centre between test pads
# min_test_pad_to_body = "1.0mm" # to another part's body on the probe side
# min_test_pad_to_edge = "3.0mm" # to the board edge and tooling holes
[place] # optional, for `agentee place`
# edges = { J1 = "left", J2 = "right" } # pin a connector to an edge: left, right, top
# (smallest y) or bottom
# keepouts = [[[0, 0], [8, 0], [8, 6], [0, 6]]] # polygons no courtyard may enter
[watermark] # optional: where the agentee version watermark goes
# at = [30, 21] # centre of the text, default a clear spot found by check
# layer = "B.SilkS" # default B.SilkS, else F.SilkS
# rotation = 90 # default 0, or 90 where only a tall gap is clearChaque routage porte le texte sérigraphié agentee vX.Y.Z-HASH : la version d'agentee qui a construit le paquet et le hash git court de sa source, avec -dirty si l'arborescence avait des modifications non commitées, ou unknown en dehors de git. Il est toujours tracé et ne peut pas être désactivé. Il est haut de min_silk_text_height, centré, et par défaut va sur B.SilkS (F.SilkS si le bas n'a pas de place ou si la carte n'a pas de sérigraphie au bas) à l'endroit dégagé le plus proche du coin inférieur gauche de la carte, tourné de 90 degrés si seul un espace haut convient. Un endroit dégagé évite les pastilles, les vias, les autres textes et lignes sérigraphiés, les graphismes et les corps de composants, et reste à min_copper_to_edge de la ligne de contour. Le visualiseur, le rendu et les plans de montage l'affichent, et fab-notes.txt le nomme. Si aucun endroit n'est dégagé, la vérification signale une erreur watermark avec la taille à dégager et l'endroit le moins encombré, et le fabricant refuse ; dégagez de la place là ou définissez [watermark] at (plus layer, rotation) vous-même. Un endroit [watermark] qui n'est pas dégagé est une erreur watermark nommant ce qu'il touche, et un empilement sans couche kind = "silk" est une erreur watermark qui en demande une.
Accès de test : par défaut, les nets qui nécessitent une sonde sont les nets d'alimentation (une classe avec current, ou un nom comme 3V3, 1V8, +5V, VCC*, VDD*, VBUS*, VBAT*, VIN*, VSYS*), la masse (GND, *GND, GND*) et les nets nommés comme *RST*, *RESET*, *EN*, *PG*, *CLK*, *TX*, *RX*, *SCL*, *SDA*, *SWD*, *TCK*, *TMS*, *TDI*, *TDO*. Les valeurs par défaut excluent les nœuds de commutation et les retours de régulateur, les nets de démarrage doux et de réduction de bruit (SW*, *_SW, LX*, FB*, SS*, NR*, correspondance sur le nom complet ou son dernier segment /), même si leur classe est l'alimentation : la capacité de la sonde et la stub vers la pastille couplent le bruit de commutation dans un diviseur de retour ou ralentissent un filtre de démarrage doux ou de bruit, et une stub sur un nœud de commutation rayonne. nets remplace cette liste (nommez un net là pour le sonder quand même) et exclude retire des nets de la liste. Un point de test est un composant avec une référence TP et un numéro, ou une empreinte nommée TestPoint* ; comme tout composant, il doit être dans le schéma. L'empreinte intégrée TestPoint_Pad_D1.0mm (pastille SMD ronde de 1,0 mm, vernis ouvert, sans pâte) et le symbole TestPoint sont écrits dans footprints/ et symbols/ par agentee testpoints.
agentee testpoints NAME --nets "3V3,*RST*" [--side B] [--pitch 2.54] (MCP testpoints) ajoute une pastille de test à chaque net correspondant qui n'a pas encore d'accès sonde (les nets sont les valeurs par défaut de [test] si --nets est omis, les nets d'impédance et de paire sont ignorés) : il cherche sur le côté sonde un endroit libre sur une grille --pitch près du cuivre du net, en gardant min_test_pad_to_edge de la ligne de contour et des trous de perçage, min_test_pad_to_body des corps de composants, --pitch des autres pastilles de test, et l'espacement du net des autres cuivres et des pastilles, pistes et vias qu'il a placés pour d'autres nets. Il ajoute un composant TP relié au net à la feuille de schéma qui nomme le net, une entrée [[footprints]] sur le côté sonde au routage avec une courte piste vers un via à côté de la pastille, puis route chaque nouvelle pastille vers le cuivre du net avec le routeur automatique et ajoute ces pistes et vias. Une pastille que le routeur ne peut pas relier est retirée du schéma et du routage et listée avec les nets qui n'ont trouvé aucun endroit. Les étiquettes des nouvelles pastilles sont déplacées à un endroit dégagé ou masquées, et si le routage stocke des remplissages de zone, ils sont rafraîchis comme le ferait agentee fill. --dry-run signale les endroits sans écrire.
Le texte sérigraphié doit garder 0,4 mm des autres textes sérigraphiés et 0,2 mm des contours sérigraphiés, éviter les pastilles, les vias et les corps des autres composants, et rester sur la carte. Chacun de ces points est une erreur, sauf le texte sous le corps d'un autre composant, qui est un avertissement. Si une étiquette de référence échoue, la vérification nomme un endroit qui passe toutes les règles, comme une ligne label = { at = [...] } à coller. agentee silk NAME (MCP silk) les colle tous pour vous et répète jusqu'à ce que les étiquettes se stabilisent ; --hide masque les références qui n'ont pas d'endroit dégagé, typiquement les petits passifs sous un BGA.
Un morceau de remplissage est conservé seulement s'il touche deux éléments de son net, ou un et est au moins min_island_area ; le reste n'atteint rien de nouveau et est retiré. La vérification contrôle chaque remplissage par rapport aux autres nets : un remplissage qui chevauche la zone, la piste, le via ou la pastille d'un autre net, ou qui s'en approche à moins que l'espacement, est une erreur, et les pointes de cuivre plus aiguës que 30 degrés sont signalées.
Les zones sur la même couche sont remplies dans l'ordre de priority, puis de la plus petite à la plus grande, et chacune conserve son espacement par rapport aux remplissages déjà placés. Ainsi, une petite pastille de commutation ou une zone d'alimentation à l'intérieur d'une zone de masse couvrant toute la carte est contournée plutôt que mise en court-circuit.
Les zones de cuivre conservent min_via_hole_to_copper par rapport aux trous de via des autres nets et min_npth_to_copper par rapport aux trous non métallisés, en plus de l'espacement. Les arcs sont dessinés à l'extérieur du cercle réel afin que l'écart ne soit jamais en court-circuit. Les vias de couture sont placés uniquement là où le via respecte l'espacement par rapport au cuivre de chaque autre net sur chaque couche qu'il traverse, conserve son trou à min_via_hole_to_copper de ce cuivre et à min_hole_to_smd_pad des pastilles SMD de n'importe quel net, respecte min_hole_to_hole par rapport à tous les perçages et la règle de bord par rapport au contour, et se termine à l'intérieur d'une zone de son net. La vérification indique combien elle en a placés. Ils sont perçés et tracés comme n'importe quel via.
Les remplissages de zone sont des polygones exacts : le contour de la zone moins le cuivre de chaque autre net agrandi de son espacement, avec des coins arrondis, afin que les zones de cuivre soient rendues et tracées sans marches. Les goulets et lanières plus étroits que min_width de la zone (0,25 mm par défaut) sont supprimés, comme le ferait un fabricant lors de la gravure. Lorsque deux zones d'espacement (antipads, espacements des pistes et des pastilles) se rapprochent à moins de min_width, la zone de cuivre est reculée jusqu'aux droites les reliant, dans un rayon d'environ 1,5 min_width de l'écart, afin qu'aucun bout ou col étroit ne pointe vers l'intérieur. La même règle s'applique entre une zone d'espacement et l'espacement du bord de la carte, un évidement, ou l'espacement autour du remplissage d'une autre zone.
Les remplissages de zone sont mis en cache : chaque remplissage est indexé par un hachage de tout ce dont il dépend et conservé dans ~/.cache/agentee/fills, de sorte qu'un chargement ne remplit que les zones dont le cuivre, les espacements ou les voisins ont changé (définissez AGENTEE_NO_FILL_CACHE pour ignorer le cache). agentee fill NAME (MCP fill) enregistre également les remplissages à la fin du fichier de routage, avec une table [[fills]] par zone et par couche, afin qu'un nouveau clone se charge sans remplissage ; un remplissage enregistré dont le hachage ne correspond plus est ignoré, et la vérification le signale avec --info. L'importation d'une carte enregistre ses remplissages. Laissez les tables [[fills]] à l'outil.
Une piste qui effleure une pastille (sa ligne centrale ne touche pas la pastille) est signalée ; faites-la aboutir sur la pastille. Deux segments d'un même net qui se superposent sur une couche (parallèles, se chevauchant de plus qu'une largeur de piste) sont une erreur, car le cuivre est doublé ; un angle plus aigu que 90 degrés est signalé comme piège à acide. Une piste peut se rétrécir en dessous de la largeur de sa classe, jusqu'au minimum du fabricant, sur au plus 0,5 mm (neckdown de la classe) là où elle rejoint une petite pastille ; le routeur trace lui-même ces goulets (voir Autorouting). Les trous perçés, les vias et les pastilles métallisées doivent tous respecter min_hole_to_hole de la carte ; la vérification compte les paires qui ne le font pas et nomme la première. Deux vias d'un même net au même endroit sont également une erreur : le fabricant percerait le trou deux fois. Les ouvertures du vernis épargne sont les contours des pastilles, sans expansion, et les vias sont masqués. Deux ouvertures de nets différents (ou sans net) qui se chevauchent ou laissent un pont de vernis inférieur à min_mask_web sont une erreur, comptées par paire de composants avec le premier endroit nommé. Les pastilles d'un composant à pas fin sont également vérifiées : corrigez-le dans l'empreinte avec des pastilles plus étroites, ou définissez un min_mask_web plus petit si le fabricant l'autorise. Une empreinte avec mask_web = false a son vernis ouvert en une seule fenêtre au-dessus de ses pastilles (ouverture groupée), de sorte que les paires de ses propres pastilles sont ignorées ; ses pastilles sont toujours vérifiées par rapport aux autres composants.
Les graphismes sur une couche inférieure sont miroités afin d'être lisibles depuis le dessous. Les remplissages et tracés SVG sont aplatis en polygones ; le texte dans un SVG est ignoré, convertissez-le d'abord en chemins. Le texte et les graphismes de sérigraphie reçoivent les mêmes vérifications que les étiquettes de référence : chevauchement, pastilles, contours de sérigraphie, bord de la carte.