Simulación
Diagramas de ojo, PDN y parámetros S
Pasa un flujo de bits por un canal y lee el ojo, comprueba la impedancia de un riel de alimentación contra un objetivo, y ejecuta análisis TDR, de modo mixto y de interferencia cruzada.
Tres simulaciones leen los parámetros S de una ejecución FDTD para algo más específico que un gráfico: una simulación de canal empuja un flujo de bits a través de un enlace y dibuja el ojo, una simulación PDN convierte los puertos de un riel en su impedancia contra un objetivo, y agentee sparam analiza cualquier resultado en el dominio del tiempo. Cada una necesita primero una ejecución FDTD de la placa; ver Simulación RF para cómo configurar una y mantenerla barata.
Canal y ojo
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 = 2board nombra la simulación cuyos parámetros S llevan el enlace. through = [FROM, TO] es una ruta de extremo único; pair = [IN+, IN-, OUT+, OUT-] una diferencial, leída de Sdd21. La respuesta al impulso viene de la ruta, multiplicada por el CTLE si hay uno, con un borde gaussiano, y el ojo es un PRBS superpuesto sobre ella en 64 fases por intervalo unitario, con retroalimentación de decisión ideal en los primeros dfe_taps post cursors.
agentee sim usb-eye
agentee show sim:usb-eyeLas lecturas son la altura del ojo en la mejor fase, la anchura del ojo, la distorsión máxima peor caso, la pérdida en Nyquist y el recuento de cursor. Un borde más rápido del que alcanzan los parámetros S se ralentiza a lo que los datos soportan, con una nota.
Conductores reales de 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" }El conductor se convierte en una fuente de Thevenin desde sus tablas de pulldown y pullup, su capacidad de die y su encapsulado; su rampa fija el borde y su rango de voltaje el swing, a menos que se den rise o swing. El receptor carga el extremo lejano con su encapsulado y capacidad de die, y el ojo se lee en su die. IBIS funciona ahora en rutas de extremo único.
Red de distribución de alimentación
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 = 200La simulación FDTD de la placa pone un puerto en cada pin de alimentación, cada pad de desacoplamiento y el regulador. Cada puerto debe estar impulsado y debe ser un sumidero, un desacoplador o el VRM. Asigna a esos puertos una impedance baja, de 0,5 a 1 ohmio, ya que un riel está muy por debajo de 50 ohmios y convertir desde S11 a 50 ohmios pierde precisión.
El objetivo es una impedancia o un voltaje, un porcentaje de ripple y una corriente transitoria. El visor dibuja |Z| por sumidero frente al objetivo en un gráfico log-log, y las lecturas dan la impedancia de pico frente al objetivo y las antirresonancias más grandes, que es donde hay que añadir o cambiar un decap. Los decaps son archivos S-parameter medidos o un C ideal con ESL y ESR.
Análisis de parámetros S
agentee sparam lna-rf --tdr IN --rise 50ps
agentee sparam link --pair 1,2,3,4
agentee sparam link --xtalk 1,3--tdr PORTes la impedancia en función del tiempo desde un puerto: los datos re muestreados a una cuadrícula uniforme, extrapolados a CC, con un borde gaussiano e integrados. Emite una advertencia cuando el borde es más rápido de lo que soportan los datos. El visor muestra el mismo TDR para cada puerto impulsado.--pair IN+,IN-,OUT+,OUT-da Sdd21, Sdd11, Scc21, Scd21 y Sdc21 en modo mixto.--xtalk FROM,TOda el acoplamiento en dB y el crosstalk de un paso.
Cada ejecución informa sobre pasividad (el mayor valor singular de S en la banda) y reciprocidad (la mayor diferencia entre Sij y Sji) cuando se impulsó cada puerto. Una pasividad superior a 1 significa que la ejecución no convergió o que la malla es demasiado gruesa.
Mantener un enlace a sus números
Una interfaz en el layout puede leer simulaciones terminadas y hacer fallar la verificación cuando un enlace no cumple sus números:
[[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 resultado ausente o desactualizado también es un error, por lo que un cambio en el layout que las simulaciones no han visto hace que la verificación falle hasta que se vuelvan a ejecutar. Ese es el objetivo: el diagrama de ojo que aprobaste es el del cobre que vas a pedir. La guía de interfaces enumera todos los límites.