agentee

Schema e layout

Interfacce

Cosa deve soddisfare un collegamento, da USB 3 a una linea RF da 50 ohm: impedenza, skew, lunghezza, vie, stub, piani di riferimento e vie di ritorno.

Un'interfaccia dice cosa una linea deve soddisfare e la verifica misura il rame rispetto ad essa: impedenza, skew, lunghezza, via, stub di via, il piano di riferimento sotto ogni pista, le via di ritorno, il timing del bus e i parametri S e l'eye delle simulazioni che la modellano.

[[interfaces]]
name = "usb-ss"
preset = "usb3-gen2"           # usb3-gen1, usb3-gen2, usb2-hs, lvds, rf-50, cmos
nets = ["SS_TX*", "SS_RX*"]    # globs; differential presets pair them up, through series parts
# differential = true
# impedance = "90ohm"          # the member classes' targets must sit inside this
# impedance_tolerance = "7%"
# max_skew = "5mil"            # within each pair, a length or a time ("1ps")
# max_length = "3in"           # end to end, through series parts
# max_vias = 2                 # per trace
# max_stub = "15mil"           # the via barrel past the last layer the trace uses
# max_unreferenced = "0.5mm"   # total run with no plane of `reference` under it
# reference = ["GND"]
# return_via = "200mil"        # a reference via this close to every signal via

[[interfaces]]
name = "ad-rx"
preset = "cmos"
nets = ["AD_P1_D*", "AD_RX_FRAME", "AD_DATA_CLK"]
clock = "AD_DATA_CLK"          # a pair's clock is named by either leg
max_bus_skew = "30ps"          # spread of arrival across the data lines
clock_window = ["-50ps", "150ps"]   # data minus clock arrival, from the setup and hold budget

[[interfaces.measure]]         # read from a finished sim; missing or stale results are errors
sim = "sdr-usb"                # an FDTD run
pair = ["TX1_FX+", "TX1_FX-", "TX1_J+", "TX1_J-"]   # IN+, IN-, OUT+, OUT-; or through = [IN, OUT]
up_to = "5GHz"                 # Nyquist, the band the limits apply over
max_loss = 1.5                 # dB, worst Sdd21 (or S21) in the band
min_return_loss = 10.0         # dB, worst Sdd11
max_mode_conversion = -30.0    # dB, worst Scd21

[[interfaces.measure]]
sim = "sdr-usb-eye"            # a channel sim
min_eye_height = "70mV"
min_eye_width = "0.47UI"       # or ps

[[interfaces.measure]]
sim = "i2c-bus"                # a logic sim: no limits, it passes when the sim passes

Una misura su una simulazione logica fallisce finché la simulazione ha un fallimento (un'assertion, una contention, una violazione di timing o un'esecuzione arrestata), indicando il conteggio e il primo; è obsoleta quando la specifica della simulazione o il netlist dello schema sono cambiati, come riportato dalla simulazione stessa, non quando il rame è cambiato, poiché una simulazione logica non vede mai il layout.

presetimpedenzaskewviastubaltro
usb3-gen1, usb3-gen290 ohm +/-7% diff5 mil215 mil3500 / 3000 mil di lunghezza, via di ritorno GND entro 200 mil, 0,5 mm non di riferimento
usb2-hs90 ohm +/-10% diff50 mil412000 mil di lunghezza, 1 mm non di riferimento
lvds100 ohm +/-10% diff1 mm non di riferimento
rf-5050 ohm +/-10%00,5 mm non di riferimento
cmos2 mm senza riferimento

I valori USB sono le linee guida per il layout dell'interfaccia ad alta velocità di TI (SPRAAR7J, Appendice A), la lunghezza Gen 2 è congatec AN37. Tutto ciò che un preset imposta, l'interfaccia può sovrascrivere.

I ritardi sono il ritardo della pista dall'permittività effettiva di ogni layer più il barile della via che il segnale attraversa. Un piano conta come riferimento dove il primo rame trovato andando via dalla pista, oltre i layer tagliati, è un'area di rame di un net reference che copre l'intera larghezza della pista; l'antipad attorno alle via dello stesso net non conta. Ogni risultato di simulazione registra un hash del rame che ha visto (solo la region della simulazione, più lo stackup); un risultato il cui rame è cambiato da allora è obsoleto, e una misura su di esso fallisce.

agentee tune NAME (MCP tune) corregge questi: per ogni coppia oltre il suo limite di skew e per ogni membro di un gruppo di match sotto il suo target, meandra il lato corto, sui suoi segmenti rettilinei più lunghi, in qualsiasi punto lungo una catena in serie, con gobbe che mantengono il clearance di ogni altro net e la regola del bordo della scheda, e scrive i nuovi punti nelle piste. --nets lo limita, --amplitude limita l'altezza della gobba e --pitch fissa il passo della gobba (predefinito tre larghezze di pista, più stretto dove è tutto ciò che entra). Su una gamba di una coppia, gobba prima gli tratti dove le gambe sono già separate (breakout e curve, dove viene da il mismatch) e non lascia mai la gamba correre accanto alla sua partner fuori dal gap della classe; uno tratto accoppiato accetta solo gobbe abbastanza alte da superare la coppia. Le interfacce contano anche, in tempo oltre che in lunghezza: una coppia oltre il suo max_skew in ps ha il lato corto allungato di quel ritardo; per max_bus_skew e clock_window l'orologio viene allungato finché la linea dati più tarda non cade dentro la sua finestra e ogni linea dati sotto la diffusione del bus o il bordo anticipato della finestra viene allungata alla più tarda (dentro la finestra), entrambe le gambe di una coppia insieme. I ritardi si convertono in millimetri al proprio ps per mm di ogni net. Quando una gamba di una coppia non può assorbire tutto, l'altra gamba viene mantenuta a ciò che ha ottenuto. Un net che è oltre il target del suo gruppo viene segnalato, non accorciato. agentee calc serpentine --from x,y --to x,y --add 2.5mm (MCP serpentine) restituisce i punti di un meander di questo tipo su un segmento che scegli. Le lunghezze e i ritardi dei net sono in agentee show pcb:NAME.

La pagina layout del visualizzatore ha una scheda 3d (agentee view --3d si apre su di essa): la scheda con lo spessore del suo stackup, i colori di mask e serigrafia e la finitura, il rame sotto la mask, le piazzole nude, le pareti dei fori placcate e nude, e il modello 3D di ogni componente. L'interruttore parts nasconde i modelli. Trascina per orbitare, shift-trascina per pan, scrolla per zoom, doppio clic per reimpostare. Il visualizzatore disegna con OpenGL (three-d); agentee render pcb:NAME --show 3d (o 3d-top, 3d-bottom) disegna la stessa scena in software, --hide parts lascia fuori i modelli e --region punta la camera su quell'area.

docs/format.md · Markdown per agenti