Simulieren
HF-Simulation: FDTD und Kaskade
Führe eine volle Wellen-FDTD eines Layouts auf der GPU durch, füge Hersteller-S-Parameter und Rauschdaten hinzu und lies Verstärkung, Rauschzahl, Anpassung und Stabilität ab.
Für RF-Arbeit ist die übliche Aufteilung zwei Simulationen. Ein FDTD-Lauf der passiven Platine, mit einem Port an jeder Stelle, an der ein aktives Bauteil oder ein gemessenes Bauteil sitzt, liefert die S-Parameter der Platine. Ein Cascade fügt dann die S-Parameter, Rausch- und Linearitätsdaten des Herstellers in diese Ports ein. Ändert sich die Platine, wird das FDTD neu ausgeführt; ändert sich ein Bauteil, wird nur der Cascade neu ausgeführt, was Sekunden dauert.
Das LNA-Beispiel ist so aufgebaut, und diese Anleitung verwendet seine Dateien.
Der FDTD-Lauf
name = "lna-rf"
layout = "lna"
cell = 0.1
[frequency]
start = "50MHz"
stop = "6GHz"
points = 596
[[ports]]
name = "IN"
pad = "J1.1"
reference = "In2.Cu"
[[ports]]
name = "AMP_IN"
pad = "U1.1"
reference = "In2.Cu"
[[ports]]
name = "AMP_OUT"
pad = "U1.3"
reference = "In2.Cu"Ein Port ist ein Lumped-Port über ein ganzes Pad, bis zur nächsten Kupferschicht oder bis zur reference-Schicht, die du nennst, 50 Ohm, es sei denn, es steht etwas anderes. Kupfer wird als Schichten auf jeder Kupferschicht modelliert: Pads, Leiterbahnen, Vias als verzinnte Säulen zwischen den Schichten, die sie überspannen, und Kupferflächen mit ihren Abständen. Die Dielektrika stammen aus dem Lagenaufbau mit ihrem Verlusttangenten. Kondensatoren, Induktivitäten und Widerstände nehmen ihren Schaltplanwert als Lumped-Bauteile, es sei denn, [[models]] überschreibt einen mit einem eigenen Wert oder lässt ihn offen. Jedes andere Bauteil ist offen.
Validiert an einem 50-Ohm-Mikrostrip: Rückflussdämpfung unter -25 dB, Einfügdämpfung unter 0,2 dB und Phasengeschwindigkeit innerhalb von 1,2 % von Kirschning-Jansen.
Größe einstellen, bevor du ausführst
FDTD ist teuer. Der Lauf mit sechs Ports der LNA dauerte 27 Minuten auf einer Workstation-GPU. Führe immer zuerst einen Dry-Run aus:
agentee sim lna-rf --dry-run{
"cells_millions": 4.202388,
"dt_fs": 120.43,
"grid": [335, 234, 55],
"runs": 6,
"max_steps": 150000
}Das dauert eine Sekunde und sagt, was der Lauf kosten wird: ein Lauf pro angesteuerten Port, jeder über ein Gitter mit so vielen Zellen. Zum Iterieren:
- Beginne mit
cell = 0.1und verfeinere erst auf den Standardwert 0.05, wenn das Design steht. Das Gitter wird von Kupferkanten aus verfeinert, daher bestimmt die feinste Zelle die Kosten. - Beschneide mit
region = [x0, y0, x1, y1]auf den Teil der Platine, den das Signal durchquert. - Steuere nur die Ports an, die du brauchst, mit
excite = ["IN"]. Ein Cascade braucht alle Ports angesteuert, daherexcitedort weglassen. - Führe lange Simulationen im Hintergrund aus und bearbeite weiter andere Dinge. Die Prüfung warnt, wenn ein Ergebnis veraltet ist.
Ausführen und lesen
agentee sim lna-rf
agentee show sim:lna-rf
agentee render sim:lna-rf -o lna-rf.pngDer Lauf schreibt eine .result.json und eine Touchstone-.s6p neben die Spezifikation, benannt nach der Spezifikationsdatei. show gibt die Messwerte aus, und render zeichnet den Betragsplot und ein Smith-Diagramm, wie es der Viewer tut.

Das Ergebnis speichert einen Hash des Kupfers, das es gesehen hat (nur die region der Simulation) und des Lagenaufbaus. Wenn sich eines davon ändert, warnt die Prüfung, dass das Ergebnis veraltet ist, und alles, das es liest, eine Kaskade oder eine Interface-Messung, schlägt fehl, bis du es erneut ausführst.
Der Cascade
name = "lna-cascade"
kind = "cascade"
board = "lna-rf"
bandwidth = "2MHz"
report = ["900MHz", "1090MHz", "1.9GHz"]
[after]
nf = 6.0
[[devices]]
ref = "U1"
file = "models/qorvo_spf5189z.s2p"
ports = ["AMP_IN", "AMP_OUT"]
[[devices.datasheet]]
freq = "0.9GHz"
nf = 0.55
oip3 = 38.5
p1db = 22.4
[[devices]]
ref = "L1"
file = "models/coilcraft_bcr-162.s2p"
ports = ["L1"]
mount = "shunt"Jedes Bauteil schließt sich an der Platine an seinen Ports an. Ein Zweipor-Verstärker nimmt seine Touchstone-Datei als gemessen; ein Zweiterminal-Bauteil nimmt die Fixture-Daten des Herstellers, mount = "shunt" oder "series", wie gemessen. Die Ports, die nicht an ein Bauteil angeschlossen sind, sind die Ports des Ergebnisses.
Rauschen und Linearität kommen mit, wenn die Daten da sind: der Touchstone-Rauschblock, wenn die Datei einen hat, sonst der Datenblatt-nf, und oip3 und p1db pro Frequenz. [after] ist die Stufe hinter dem Ausgang, hier ein Empfänger mit 6 dB Rauschzahl, verbunden nach Friis.
agentee sim lna-cascade
agentee show sim:lna-cascadeDie Messwerte für die LNA:
gain peak 27.0 dB S21 at 50 MHz
input match -5.1 dB S11 at 4.380 GHz
output match -9.9 dB S22 at 4.420 GHz
stability mu 1.14 lowest at 60 MHz
noise figure 0.93 dB best at 800 MHz, worst 2.16 dB at 2.200 GHz
at 900 MHz gain 17.7 dB, NF 1.00 dB, floor -110.0 dBm, SFDR 86.8 dB, IIP3 20.3 dBm, P1dB out 21.9 dBm
at 1.090 GHz gain 16.2 dB, NF 1.31 dB, floor -109.7 dBm, SFDR 87.9 dB, IIP3 22.2 dBm, P1dB out 21.9 dBmMu über 1 bei jeder Frequenz bedeutet, dass der Verstärker auf dieser Platine bedingungslos stabil ist. Der Rauschboden ist -174 dBm/Hz plus Rauschzahl plus 10 log der Bandbreite, und SFDR ist zwei Drittel von IIP3 über dem Boden.

Wo ein Bauteil keine Daten hat, wird das Band auf den Bereich beschnitten, in dem jedes Bauteil welche hat, und eine Rauschzahl außerhalb der Daten wird leer gelassen, statt geraten zu werden.
Nachbearbeitung ohne Neuausführung
agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3sparam funktioniert mit jedem FDTD- oder Kaskadierungsergebnis: ein TDR eines Ports, gemischte Modus-S-Parameter eines Paares und Störsignale im Frequenzbereich und als Sprungantwort. Wenn alle Ports angeregt wurden, meldet es immer Passivität und Reziprozität. Siehe Augendiagramme, PDN und S-Parameter.
Felder und Abstrahlung
fields = ["1090MHz", "2.4GHz"]
far_field = trueEin FDTD-Lauf kann auch E- und H-Feldkarten im Prepreg unter der obersten Schicht und das Fernfeld aus einer Nahfeld-zu-Fernfeld-Transformation bei bis zu vier Frequenzen aufzeichnen. Die Messwerte geben die abgestrahlte Leistung als Anteil der Eingangsleistung, die Direktivität und das Spitzenfeld bei 3 m für 1 mW Eingang, gemessen an FCC Klasse B. Ports sind angepasste Lasten, daher sind Kabel und Stecker nicht Teil des Strahlers.
Verluste
Dielektrischer Verlust folgt einem kausalen Djordjevic-Sarkar-Modell, das an die Dielektrizitätskonstante und den Verlusttangenten jeder Schicht angepasst ist. Kupfer ist eine Oberflächenimpedanz, die dem Skin-Effekt, der Rauheit des Lagenaufbaus und, mit finish = "ENIG", dem Gold und Nickel auf den äußeren Pads folgt, wobei das Nickel unterhalb von einigen GHz mehrere Male den Widerstand von blankem Kupfer hinzufügt. Der FDTD-Verluste-Referenz enthält die Modelle und die Messungen, gegen die sie geprüft wurden.