agentee

Conception

Impédance contrôlée et paires

Largeurs de pistes résolues par formule fermée et champ GPU, lignes RF coplanaires, paires différentielles, appariement de longueur et interfaces comme USB 3.

Une ligne à impédance contrôlée est une promesse entre trois choses : l'empilement, la largeur de piste et le cuivre autour. agentee garde la promesse en un seul endroit, la classe de nets, et vérifie chaque piste de la classe contre elle.

Demander d'abord

agentee calc impedance --layer F.Cu --target 50ohm
agentee calc impedance --layer F.Cu --target 90ohm --gap 0.15mm
agentee calc trace-width --current 2A

Celles-ci lisent la carte dans le projet. La première répond une largeur pour un microbande de 50 ohms sur la couche supérieure ; la seconde pour une paire différentielle de 90 ohms avec un écart de 0,15 mm :

{
  "geometry": { "er": 4.4, "h_mm": 0.2104, "kind": "microstrip", "t_mm": 0.035 },
  "line": { "coplanar_gap_mm": null, "diff_gap_mm": 0.15 },
  "target_ohm": 90.0,
  "width_for_target_mm": 0.2682
}

Les formes fermées sont Hammerstad-Jensen pour le microbande, Wheeler pour la stripline et cartographie conforme pour le coplanaire à masse, toutes non revêtues. Elles ignorent le vernis épargne et, sur un préimprégné fin, peuvent être écartées de plusieurs ohms.

Résoudre le champ

agentee calc field --netclass RF
agentee calc field --netclass RF --sweep 10MHz,6GHz,21

Le solveur de champ exécute une résolution de Laplace par différences finies de la section transversale sur le GPU, avec épaisseur de cuivre, vernis épargne, masses coplanaires et paires. Il se place à moins de 0,5 % de la stripline exacte de Cohn et à 0,4 % du microbande de Hammerstad-Jensen, en une fraction de seconde :

{
  "closed_form_uncoated_ohm": 51.12,
  "coplanar_gap_mm": 0.2,
  "field": {
    "backend": "gpu",
    "eeff": 3.094,
    "delay_ps_per_mm": 5.87,
    "z0": 49.88
  },
  "solder_mask": true,
  "width_mm": 0.3
}

--sweep ajoute un tableau de pertes par fréquence : R, L, G, C, Z0 et dB par mètre et par pouce, séparé en pertes conductrices et diélectriques, avec effet de peau, rugosité du cuivre depuis l'empilement (roughness ou huray) et un modèle diélectrique causal. Sans GPU, le solveur 2D bascule sur le CPU.

Mettre la cible sur la classe

[[netclasses]]
name = "RF"
impedance = "50ohm"
impedance_tolerance = "5%"
coplanar_gap = "0.2mm"
layers = ["F.Cu"]
solver = "field"

Avec solver = "field", la vérification résout la classe sur chaque couche qu'elle peut utiliser et, quand elle est hors cible, 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)

Laissez track_width vide et la vérification le résout pour la première couche. Quand une seule largeur ne convient pas à toutes les couches, donnez widths = { "In2.Cu" = "0.16mm" }.

La tenir sur la carte

La classe est une promesse ; le routage la tient. La vérification mesure chaque piste d'une classe d'impédance :

  • impedance-trace est une erreur quand la largeur d'une piste, ses rétrécissements, ou le cuivre à côté sur une couche externe déplace son impédance hors de la tolérance. Une ligne coplanaire avec la zone de cuivre trop loin, ou qui se rétrécit trop longtemps, est attrapée ici.
  • impedance-width avertit d'une piste de la classe à une autre largeur.
  • neckdown note une piste plus étroite que sa classe pour un court trajet vers une petite pastille, ce qui est autorisé jusqu'à la longueur neckdown de la classe (0,5 mm par défaut).

agentee neck NAME rétrécit les extrémités de pistes existantes qui entrent dans une pastille plus étroite que la piste, et --taper ramène la largeur sur une courte chaîne.

Paires différentielles

[[netclasses]]
name = "USB"
impedance = "90ohm"
diff_gap = "0.15mm"
layers = ["F.Cu"]
max_skew = "0.1mm"

diff_gap fait d'une classe une paire et son impédance différentielle. Les nets finissant par _P et _N, _DP et _DN, + et -, ou P et N s'appairent d'eux-mêmes ; sinon, nommez-les dans le routage :

[[pairs]]
p = "USB_DP"
n = "USB_DN"
max_skew = "0.1mm"

calc field --netclass USB ajoute un bloc pair : Zdiff, Zcommon, les impédances et délais des modes impair et pair, le coefficient de couplage et le diaphonie de proximité d'une ligne longue. La vérification signale le déséquilibre de chaque paire en mm et en ps, toute étendue au mauvais écartement au-delà de max_uncoupled, et les paires qui courent côte à côte sur moins de 80 % de leur longueur. Une paire traversant des composants en série, comme les condensateurs AC d'une voie USB, est mesurée de bout en bout. agentee route NAME --nets 'USB_*' --pairs route les deux moitiés ensemble.

Appariement des longueurs

[[match_groups]]
name = "ddr-dq0"
nets = ["DQ?", "DQS0_*"]
tolerance = "0.5mm"
agentee tune NAME
agentee show pcb:NAME

tune serpentine le net le plus court de chaque paire sur son déséquilibre et chaque membre d'un groupe d'appariement en dessous de sa cible, sur les segments droits les plus longs où les bosses évitent tous les autres nets, et réécrit les points dans les pistes. Sur une paire, il bosse d'abord les étendues où les jambes s'écartent déjà. Un net au-dessus de sa cible est signalé, pas raccourci. agentee calc serpentine --from 10,5 --to 20,5 --add 2.5mm donne les points d'une serpentine sur un segment que vous choisissez. Les longueurs et délais des nets sont dans show.

Interfaces

Une interface définit ce qu'un lien doit respecter, et la vérification mesure le cuivre par rapport à l'ensemble en une seule passe :

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]
préréglageimpédancedéséquilibreviasautre
usb3-gen1, usb3-gen290 ohm +/-7% diff5 mil2stubs de 15 mil, 3500 / 3000 mil de long, via de retour dans les 200 mil
usb2-hs90 ohm +/-10% diff50 mil412000 mil de long
lvds100 ohm +/-10% diff
rf-5050 ohm +/-10%0
cmos2 mm sans référence

Les valeurs USB proviennent des directives de routage haute vitesse de TI. Au-delà des objectifs de classe, une interface vérifie la longueur de bout en bout, le nombre de vias par piste, les stubs de via, la portion de piste sans plan de référence en dessous, la via de masse à côté de chaque via de signal, et pour les bus, l'étalement d'arrivée et la fenêtre par rapport à l'horloge. Elle peut aussi lire une simulation terminée : perte d'insertion et de réflexion maximales et conversion de mode d'une exécution FDTD, hauteur et largeur de l'œil d'une simulation de canal. Voir Diagrammes d'œil, PDN et paramètres S.

tune fonctionne sur les interfaces en temps comme en longueur : une paire au-dessus de son déséquilibre en ps, et un bus hors de sa fenêtre d'horloge, voient leur côté le plus court allongé selon le délai par mm propre à chaque net.

Améliorer ce guide · Markdown pour agents