IBIS I/O buffer (ibis_buffer)
IBIS buffer model is based on IBIS (I/O Buffer Information Specification) standard, version 7.0. Package and board models, are not included in the buffer, and have to be added as separate subcircuits.
This device is not supported within altergroup.
Driver Equations
Current at the die terminal is a function of time and voltage:
I(die) = Ipd(V(die)-V(gnd))*Wd(t) + Icd(V(die)-V(gnd_c))
+ Ipu(V(die)-V(pwr))*Wu(t) + Icu(V(die)-V(pwr_c))
Ipd(V), Ipu(V), Icd(V), and Icu(V) are peace-wise linear transfer functions of pull-down, pull-up, ground clamp, and power clamp voltage controlled current sources. Wd(t) and Wu(t) are switching coefficient functions for pull-up and pull-down sources, defined as follows.
When the buffer is in the high state,
Wd(t)=0, Wu(t)=1
When the state of the buffer is low,
Wd(t)=1, Wu(t)=0
During a transition from low to high state
Wd(t)=Wdr(t-t0), Wu(t)=Wur(t-t0)
Wd(t)=Wdf(t-t0), Wu(t)=Wuf(t-t0)
where t0 - is a time when transition was initiated.
For the 3-state or I/O buffer types, driver can be disabled by en signal, then both Wu(t)=Wd(t)=0.
Wdr(t), Wur(t), Wdf(t), and Wuf(t) are pwl functions of time, derived from the rising and falling test waveforms and loads.
State of the buffer is defined by the voltage on the out terminal, and buffer polarity. During DC analysis buffer can be either in high, or low state. For non-inverting buffer, the state is high when V(out)>0.5, and low when V(out)>=0.5. For inverting buffer it is other way around. During transient analysis the buffer is turned into transition state at the time t0, when V(out) crosses the midpoint V(out)=0.5. When both Wd(t) and Wu(t) switching coefficient functions reach their final 1 or 0 values, the buffer returns to the static high or low state.
Receiver Equations
Voltage at the in terminal is a controlled by voltage at the die node.
If V(die) > Vth_hi, then V(in) = 1, if V(die) < Vth_lo, then V(in) = 0.
In between Vth_hi >= V(die) >= Vth_lo, V(in) keeps previously assigned voltage.
For differential input buffers the voltage difference between non-inverting and inverting pins: V(die)-V(inv_die) is used instead of V(die)
Switching Coefficients
Switching coefficients, if not given, are calculated from the test waveforms and loads. If two waveforms are available for rising transition (V1r, V2r) and two for falling (V1f, V2f), then linear system of equations is solved for pairs of switching coefficients (Wdr, Wur) and (Wdf, Wuf) at each time t:
Ipd(Vr1-Vgnd)*Wdr + Ipu(Vr1-Vpwr)*Wur = I0(Vr1)
Ipd(Vr2-Vgnd)*Wdr + Ipu(Vr2-Vpwr)*Wur = I0(Vr2)
Ipd(Vf1-Vgnd)*Wdf + Ipu(Vf1-Vpwr)*Wuf = I0(Vf1)
Ipd(Vf2-Vgnd)*Wdf + Ipu(Vf2-Vpwr)*Wuf = I0(Vf2)
Where Ipd(V), Ipu(V) are pull-down and pull-up current source fonctions. Load current I0(V) for each load resistance Rl, voltage Vl, and capacitance Cl is calculated as:
I0(V) = (Ccomp+Cl)*dV/dt - (V-Vl)/Rl - Igc(V-Vgndc) - Ipc(V-Vpwrc)
If only one waveform is available for each transition, additional equations are used:
Wdr + Wur = 1
Wdf + Wuf = 1
If no waveforms are given, then ramp parameters are used to determine the coefficients. In this case they will be linear functions of time with the slope equal to ramp value.
Sample Instance Statement
pin1 (die in out en gnd vdd gnd_c vdd_c) iobuff1
pin2 (die out en) ibis_buffer file="models.ibs" model="out2"
Sample Model Statement
model iobuff1 ibis_buffer type=io vrange=3 ccomp=1p polarity=noninv enable=high
pullup=[-3 30m -2 25m -1 15m 0 0 1 -15m 2 -24m 3 -30m 4 -35m 5 -36m 6 -37m]
pulldown=[6 40m 5 38m 4 35m 3 30m 2 25m 1 15m 0 0 -1 -15m -2 -24m -3 -30m]
uprise=[0 0 3n 1]
downrise=[0 1 3n 0]
upfall=[0 1 3n 0]
downfall=[0 0 3n 1]
gndclamp=[-4 -40 -0.4 0 0 0]
Instance Syntax
Name die [inp] [out] [en] [gnd] [pwr] [gnd_c] [pwr_c] [inv_die] ModelName parameter=value ...
Name die [inp] [out] [en] [gnd] [pwr] [gnd_c] [pwr_c] [inv_die] ibis_buffer parameter=value ...
Terminal comments
Number of terminals depend on the type of the buffer.
Only one terminal - die - is required for terminator.
Terminals out and die are required for output buffer. They connect to digital signals, which control pullup and pulldown current sources driving the die.
Input buffer must have in terminal, which is digital signal received from the die.
Terminals gnd, pwr, gnd_c, pwr_c provide optional ground and power connections for pull-down, pull-up, ground clamp, and power clamp current sources. Opendrain buffers do not require power connections. Opensource have no groun connections. Either none, or all possible reference voltage terminals have to be specified.
For differential input buffers inv_die terminal provides input voltage reference. It have to be connected to the die pad of the inverse pin.
Buffer type opensink is same as opendrain, and ioopensink is same as ioopendrain. Buffer types ending with ecl (inputecl, outputecl, ioecl, tristateecl) have same terminals as their normal counterparts (input, output, io, tristate).
Instance Parameters
Differential buffer parameters
SPICE compatibility parameters. Ignored in Spectre mode
Model Syntax
model modelName ibis_buffer parameter=value ...
Model Parameters
Multistage buffer parameters
|
Driver Schedule delay time. Format: [ |
|
Voltage reference parameters
Voltage controlled current sources (I/V tables)
Switching coefficients (W/T tables)
Test waveforms (V/T tables and I/T tables) and loads
Input logic parameters
When file and model parameters are given, buffer model information is read from the model section of the file. It is assumed that file has standard IBIS format if it has an extension .ibs.
If vref is not given, reference voltages are set according to vrange value: vref=[0 vrange 0 vrange]. If reference voltage terminals are provided for the buffer instance, then both vref and vrange are ignored.
Multistaged buffers can be modeled as multiple simple ibis buffers connected in parallel. Each stage may have different on and off switching delay relatively to the initial transition edge. Driver schedule has to be specified only for the instances, which are part of multistaged buffer.
Differential buffer can be modeled by a pair of buffers, one for inverting pin, and another for non-inverting pin. Instance parameter polarity is used to override the buffer model polarity. In the case of output buffer, delay sets transition delay for non-inverting pin relatively to the inverting one. For differential input buffer the inverse pin have to be specified, and vdiff instance parameter overrides threshold voltages defined in the model.
C_comp_pullup, C_comp_pulldown, C_comp_power_clamp, and C_comp_gnd_clamp in the IBIS model only when C_comp is not specified in the same model. If C_comp and C_comp_* are specified simultaneously in the same model, then SPECTRE just uses C_comp and ignores the value of C_comp_*. Slow/Fast Corners
Slow/fast corners are composition of minimal and maximal value of some parameters, as shown in the table below:
Related Topics
Ratiometric Fourier Analyzer (fourier)
Return to top