agentee

Ontwerpen

Printplaat specificaties, stackups en netklassen

Kies een fabrikant en een echte stackup, definieer een netklasse per type net en stel doelen voor impedantie en stroom in, zodat de controle de breedtes oplost.

Het printplaat-spec is het eerste bestand van een ontwerp en het waartegen alles else wordt gecheckt. Het noemt de fab, de stackup, de omtrek, de via-types en de netklassen. Krijg dit eerst goed: een layout gerouteerd tegen de verkeerde stackup heeft de verkeerde impedantie op elke gecontroleerde lijn.

agentee new board sensor-node

Een fab kiezen

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

fab kiest een regel-preset: generic, jlcpcb of hdi. Het preset is een tabel gesleuteld op het aantal koperlagen, de buitenkoperdikte en de afwerking, dus een vierlaags 1 oz-ontwerp krijgt strakkere spoormregels dan een tweelaags 2 oz-ontwerp. De jlcpcb-waarden volgen de capaciteitspagina van JLCPCB regel voor regel; de regels-referentie geeft elke waarde met de regel waaruit hij komt, en de weinige plekken waar agentee bewust strenger is.

Elke regel in [rules] overschrijven:

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

Een echte stackup kiezen

Typ geen laagdiktes in. Kies de eigen bouw van de fab:

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

De presets dekken elke JLCPCB-impedantieopbouw van 4 tot 20 lagen en 0,4 tot 3,0 mm, de standaardopbouwen van PCBWay van 4 tot 18 lagen en twee generieke HDI-opbouwen. JLCPCB-presets gebruiken de eigen code van de fabrikant, JLC04161H-7628: lagen, dikte, buiten- en binnenkoper, prepreg. Het laatste commando toont de lagen van één preset met hun dikte en permittiviteit.

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

Bestel de printplaat met dezelfde opbouw: als JLCPCB een andere stackup gebruikt, klopt geen enkele impedantie die je hebt berekend.

Omtrek, uitsparingen en gaten

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

Een omtrek is een rechthoek met size, origin en corner_radius, of een veelhoek van points. Een uitsparing is een venster, spleet of groot gat dat door de printplaat wordt gefreesd, en alles dat om de rand geeft (koper tot de rand, pads, kopervlakken, de router, de simulaties) behandelt de rand van een uitsparing als de rand van de printplaat. Een uitsparing in het layoutbestand is anders: die houdt alleen kopervlakken weg van een gebied op bepaalde lagen.

Via types

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

Een printplaat kan meerdere via-types opgeven. Een doorvia heeft niets extra's nodig; blind, buried en microvias hebben een HDI-fabrikant nodig en staan in HDI: microvias en laminatie.

Netklassen

Een netklasse is wat een net is: de spoordikte, de clearance, de vias en de doelen waaraan de controle het net houdt. Geef elk type net zijn eigen klasse. Een net dat in Default blijft, is een waarschuwing, omdat de klasse bepaalt hoe het net wordt gerouteerd.

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 bewerkt de klasse met die naam op zijn plaats of voegt hem toe. Wat de doelen doen:

  • current wordt gecontroleerd tegen IPC-2221 op elke laag die de klasse mag gebruiken, bij max_temp_rise (standaard 10 C). Binnenste lagen dragen minder dan buitenste lagen, en de controle noemt de dikte die het op elke laag draagt:
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 wordt gecontroleerd op elke laag in layers. Laat track_width weg en de controle lost het op voor de eerste laag; geef widths per laag als één dikte niet op elke laag past.
  • diff_gap maakt de klasse een differentieel paar, en zijn impedantie de differentieelimpedantie.
  • coplanar_gap maakt het geaard coplanair: het kopervlak houdt die afstand aan beide zijden, met het vlak eronder.
  • solver = "field" controleert de klasse met de GPU-veldoplosser, die soldeermasker en koperdikte meeneemt, in plaats van gesloten formule's.

Bekijk wat de stackup oplevert

agentee check
agentee show board:sensor-node

show toont de opgeloste printplaat als JSON: voor elke klasse en laag de spoorgeometrie (microstrip op de buitenste lagen, stripline binnenin), de impedantie, de dikte die aan het doel voldoet en de stroom die het draagt. Als een klasse niet aan het doel voldoet, zegt de controle hoeveel en wat te gebruiken:

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)

Plak de dikte in, voer de controle opnieuw uit. Gecontroleerde impedantie en paren gaat verder.

Ontwerpregelinstellingen

Layoutchecks komen uit een register van regels, elk met een id, een categorie en een standaardernst. De printplaat kan ze uitschakelen of hun ernst wijzigen:

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

agentee drc NAME --list toont elke regel met of deze op deze printplaat van toepassing is en waarom. De referentie voor ontwerpregelchecks noemt ze allemaal.

Checklist

  • fab ingesteld, en een stackup-preset die de fabrikant daadwerkelijk bouwt.
  • Eén klasse per type net: signaal, voeding, massa, elke impedantie, elk paar.
  • Impedantie- en stroomdoelen op de klassen, niet breedtes die met de hand zijn uitgereken.
  • solver = "field" op elke klasse waar een paar ohm uitmaakt.
  • agentee check schoon voordat het schema klassen begint te noemen.

Verbeter deze handleiding · Markdown voor agents