Simulazione
Simulazione RF: FDTD e cascata
Esegui un FDTD a onde complete di un layout sulla GPU, inserisci i parametri S e i dati di rumore del produttore e leggi guadagno, figura di rumore, adattamento e stabilità.
Per il lavoro in RF la suddivisione usuale è due simulazioni. Un run FDTD della scheda passiva, con un port ovunque ci sia un componente attivo o un componente misurato, fornisce i parametri S della scheda. Un cascade poi inserisce nei port i parametri S, i dati di rumore e di linearità del produttore. Modifichi la scheda e rilancia il FDTD; cambia un componente e rilancia solo il cascade, che richiede pochi secondi.
L'esempio LNA è costruito in questo modo e questa guida usa i suoi file.
Il run FDTD
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"Un port è un port lumped su un'intera piazzola, fino al layer di rame successivo o al layer reference che specifichi, 50 ohm salvo indicazione diversa. Il rame è modellato come fogli su ogni layer di rame: piazzole, piste, via come colonne placcate tra i layer che attraversano e riempimenti di area di rame con i relativi clearances. I dielettrici provengono dallo stackup con la loro tangente di perdita. Condensatori, induttori e resistori prendono il valore dello schema come componenti lumped di default; [[models]] sovrascrive uno con un valore tuo, o lo lascia aperto. Ogni altro componente è aperto.
Validato su una microstrip da 50 ohm: perdita di ritorno sotto -25 dB, perdita di inserzione sotto 0,2 dB e velocità di fase entro il 1,2% di Kirschning-Jansen.
Dimensiona prima di lanciare
Il FDTD è costoso. Il run a sei port dell'LNA ha richiesto 27 minuti su una GPU workstation. Fai sempre prima un dry-run:
agentee sim lna-rf --dry-run{
"cells_millions": 4.202388,
"dt_fs": 120.43,
"grid": [335, 234, 55],
"runs": 6,
"max_steps": 150000
}Ci vuole un secondo e dice quanto costerà il run: un run per ogni port eccitato, ciascuno su una griglia di quella quantità di celle. Per iterare:
- Parti da
cell = 0.1e stringi al default 0.05 solo quando il design si è stabilizzato. La mesh si affina dai bordi del rame, quindi la cella più fine determina il costo. - Ritaglia con
region = [x0, y0, x1, y1]alla parte della scheda che il segnale attraversa. - Eccita solo i port di cui hai bisogno con
excite = ["IN"]. Un cascade ha bisogno di tutti i port eccitati, quindi lascia fuoriexcitelì. - Esegui simulazioni lunghe in background e continua a modificare altre cose. La verifica avvisa quando un risultato è diventato obsoleto.
Lancia e leggi
agentee sim lna-rf
agentee show sim:lna-rf
agentee render sim:lna-rf -o lna-rf.pngIl run scrive un .result.json e un Touchstone .s6p accanto allo spec, con il nome del file spec. show stampa le letture e render disegna il grafico dell'ampiezza e un diagramma di Smith, come fa il visualizzatore.

Il risultato registra un hash del rame che ha visto (solo la region della simulazione) e dello stackup. Quando uno dei due cambia, la verifica avvisa che il risultato è obsoleto, e tutto ciò che lo legge, una cascata o una misura di interfaccia, fallisce finché non lo riesegui.
Il 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"Ogni dispositivo si collega alla scheda sui suoi port. Un amplificatore a due port prende il suo file Touchstone come misurato; un componente a due terminali prende i dati di fixture del produttore, mount = "shunt" o "series" come misurato. I port non collegati a un dispositivo sono i port del risultato.
Rumore e linearità arrivano quando i dati ci sono: il blocco di rumore Touchstone se il file ce l'ha, il nf della datasheet altrimenti, e oip3 e p1db per frequenza. [after] è lo stadio dietro l'uscita, qui un ricevitore con un rumore di 6 dB, collegato con Friis.
agentee sim lna-cascade
agentee show sim:lna-cascadeLe letture per l'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 sopra 1 a ogni frequenza significa che l'amplificatore è incondizionatamente stabile su questa scheda. Il rumore di fondo è -174 dBm/Hz più il rumore più 10 log della banda, e SFDR è due terzi di IIP3 sul fondo.

Dove un dispositivo non ha dati, la banda è tagliata dove tutti i dispositivi ne hanno, e un rumore fuori dai dati è lasciato vuoto invece che stimato.
Post-processa senza rilanciare
agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3sparam funziona su qualsiasi risultato FDTD o a cascata: TDR di un porto, parametri S in modalità mista di una coppia e diafonia in frequenza e come gradino. Segnala sempre passività e reciprocità quando ogni porto è stato eccitato. Vedi Diagrammi ad occhio, PDN e parametri S.
Campi ed emissioni
fields = ["1090MHz", "2.4GHz"]
far_field = trueUn run FDTD può anche registrare mappe dei campi E e H nel prepreg sotto il layer superiore, e il campo lontano da una trasformazione near-to-far, a fino a quattro frequenze. Le letture danno la potenza irradiata come frazione dell'ingresso, la direttività e il campo di picco a 3 m per 1 mW in ingresso, contro FCC classe B. I port sono carichi adattati, quindi cavi e connettori non fanno parte dell'irradiatore.
Perdite
La perdita dielettrica segue un modello causale Djordjevic-Sarkar adattato alla permittività e alla tangente di perdita di ogni layer. Il rame è un'impedenza superficiale che segue l'effetto pelle, la rugosità dello stackup e, con finish = "ENIG", l'oro e il nichel sulle piazzole esterne, il cui nichel aggiunge diverse volte la resistenza del rame nudo sotto qualche GHz. Il riferimento sulle perdite FDTD ha i modelli e le misurazioni con cui sono stati verificati.