agentee

Simulazione

Diagrammi ad occhio, PDN e parametri S

Fai passare un flusso di bit attraverso un canale e leggi l'occhio, verifica l'impedenza di un rail di alimentazione rispetto a un obiettivo, ed esegui analisi TDR, modalità mista e diafonia.

Tre simulazioni leggono i parametri S di una run FDTD per qualcosa di più specifico di un grafico: una simulazione del canale spinge un flusso di bit attraverso un link e disegna l'occhio, una simulazione PDN trasforma i porti di un rail nella sua impedenza rispetto a un target, e agentee sparam analizza qualsiasi risultato nel dominio del tempo. Ogni una ha bisogno prima di una run FDTD della scheda; vedi Simulazione RF per come impostarla e mantenerla economica.

Canale e occhio

name = "usb-eye"
kind = "channel"
board = "usb-link"
pair = ["J1+", "J1-", "J2+", "J2-"]
bit_rate = "5Gbps"
rise = "40ps"
swing = "0.8V"
prbs = 7
ctle = { dc_gain = -6.0, zero = "1GHz", poles = ["5GHz", "10GHz"] }
dfe_taps = 2

board nomina la simulazione i cui parametri S portano il link. through = [FROM, TO] è un percorso single-ended; pair = [IN+, IN-, OUT+, OUT-] uno differenziale, letto da Sdd21. La risposta al impulso viene dal percorso, moltiplicata per il CTLE se c'è, con un bordo gaussiano, e l'occhio è un PRBS sovrapposto a 64 fasi per intervallo unitario, con feedback di decisione ideale sui primi dfe_taps post cursori.

agentee sim usb-eye
agentee show sim:usb-eye

Le letture sono l'altezza dell'occhio alla migliore fase, la larghezza dell'occhio, la distorsione di picco nel caso peggiore, la perdita a Nyquist e il conteggio dei cursori. Un bordo più veloce di quanto raggiungano i parametri S viene rallentato a ciò che i dati supportano, con una nota.

Driver reali da IBIS

tx = { file = "models/sn74lvc1g04.ibs", model = "LVC1G04_OUT_33", component = "LVC1G04_DBV", pin = "4" }
rx = { file = "models/sn74lvc1g04.ibs", model = "LVC1G04_IN_33", component = "LVC1G04_DBV", pin = "2" }

Il driver diventa una sorgente di Thevenin dalle sue tabelle di pulldown e pullup, la sua capacità del die e il suo package; il suo rampa imposta il bordo e il suo intervallo di tensione lo swing, a meno che non siano dati rise o swing. Il ricevitore carica l'estremità lontana con il suo package e la capacità del die, e l'occhio viene letto al suo die. IBIS funziona per ora sui percorsi single-ended.

Rete di distribuzione dell'alimentazione

name = "vcc-pdn"
kind = "pdn"
board = "rail"
sinks = ["U1_VCC"]
target = { voltage = "5V", ripple = 1.0, transient = "50mA" }

[[decaps]]
port = "C3"
ref = "C3"
file = "models/grm155r61a105ke15.s2p"
mount = "series"

[[decaps]]
port = "C4"
c = "1uF"
esl = "0.4nH"
esr = "15mohm"

[[vrm]]
port = "VRM"
r = "2mohm"
l = "20nH"

[frequency]
start = "100kHz"
stop = "1GHz"
points = 200

La simulazione FDTD della scheda mette un porto su ogni pin di alimentazione, ogni piazzola di decap e il regolatore. Ogni porto deve essere pilotato e deve essere un sink, un decap o il VRM. Assegna a quei porti una bassa impedance, da 0,5 a 1 ohm, poiché un rail sta ben al di sotto dei 50 ohm e convertire da S11 a 50 ohm perde precisione.

L'obiettivo è un'impedenza o una tensione, con percentuale di ripple e corrente transitoria. Il visualizzatore disegna |Z| per sink rispetto all'obiettivo su un grafico log-log, e le letture forniscono l'impedenza di picco rispetto all'obiettivo e le maggiori anti-risonanze, il punto in cui aggiungere o modificare un decap. I decap sono file S-parametri misurati o un C ideale con ESL ed ESR.

Analisi dei parametri S

agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3
  • --tdr PORT è l'impedenza in funzione del tempo da un singolo port: i dati ricampionati su una griglia uniforme, estrapolati a DC, con un bordo gaussiano e integrati. Emette un avviso quando il bordo è più veloce di quanto supportino i dati. Il visualizzatore mostra lo stesso TDR per ogni port guidato.
  • --pair IN+,IN-,OUT+,OUT- fornisce Sdd21, Sdd11, Scc21, Scd21 e Sdc21 in modalità mista.
  • --xtalk FROM,TO fornisce l'accoppiamento in dB e il crosstalk di un fronte.

Ogni esecuzione riporta la passività (il massimo valore singolare di S nella banda) e la riciprocità (la massima differenza tra Sij e Sji) quando ogni port è stato guidato. Una passività superiore a 1 significa che l'esecuzione non ha convergito o che la mesh è troppo grossolana.

Un'interfaccia nel layout può leggere simulazioni finite e far fallire la verifica quando un link non raggiunge i suoi numeri:

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen1"
nets = ["SS_TX*", "SS_RX*"]

[[interfaces.measure]]
sim = "usb-link"
pair = ["TX1_FX+", "TX1_FX-", "TX1_J+", "TX1_J-"]
up_to = "2.5GHz"
max_loss = 1.5
min_return_loss = 10.0
max_mode_conversion = -30.0

[[interfaces.measure]]
sim = "usb-eye"
min_eye_height = "70mV"
min_eye_width = "0.47UI"

Un risultato mancante o obsoleto è un errore anche, quindi un cambiamento nel layout che le simulazioni non hanno visto fa fallire la verifica finché non vengono rilanciate. Questo è il punto: l'occhio che hai approvato è l'occhio del rame che stai per ordinare. Il riferimento sulle interfacce elenca ogni limite.

Migliora questa guida · Markdown per agenti