Product Documentation
Spectre Circuit Simulator Components and Device Models Reference
Product Version 23.1, June 2023

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)

During a hi-lo transition,

    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

Terminals (y= required, n=not, o=optional)

die

in

out

en

gnd

pwr

gnd_c

pwr_c

inv_die

terminator

y

n

n

n

n

n

o

o

n

input

y

y

n

n

n

n

o

o

o

output

y

n

y

n

o

o

o

o

n

tristate

y

n

y

y

o

o

o

o

n

io

y

y

y

y

o

o

o

o

o

opendrain

y

n

y

n

o

n

o

n

n

ioopendrain

y

y

y

y

o

n

o

n

o

opensource

y

y

y

y

n

o

n

o

n

ioopensource

y

y

y

y

n

o

n

o

o

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

file

Name of ibis file containing buffer model information.

model

Name of the model section in ibis file.

corner=0

IBIS model corner. Allowed values are: 0 or typical, 1 or minimal, 2 or maximal, 3 or slow, 4 or fast. Possible values are typical, minimal, maximal, slow, and fast.

power=on

SPECTRE format netlist:

  • on means Spectre will use the internal reference.
  • off means Spectre will use the external reference.
  • pwr means Spectre will use the internal reference for pullup and power clamp, while the pulldown and gnd clamp must be connected to the external reference.
  • gnd means Spectre will use the internal reference for pulldown and gnd clamp, while the pullup and power clamp must be connected to the external reference.

Possible values are on, off, pwr, and gnd.

Differential buffer parameters

polarity=inv

Polarity of the buffer. Possible values are inv and noninv.

delay (s)

Relative delay for differential output buffer.

vdiff (V)

Threshold voltage for differential input buffer.

SPICE compatibility parameters. Ignored in Spectre mode

compatible=spectre

Selects buffer format - terminal order, parameters.

buffer

IBIS model type. If given, must correspond to the buffer model type in the IBIS file. Allowed values are: 1 or input, 2 or output, 3 or input_output, 4 or three_state, 5 or open_drain, 6 or io_open_drain, 7 or open_sink, 8 or io_open_sink, 9 or open_source, 10 or io_open_source, 11 or input_ecl, 12 or output_ecl, 13 or io_ecl, 14 or three_state_ecl, 17 or terminator. Possible values are input, output, input_output, three_state, open_drain, io_open_drain, open_source, io_open_source, terminator, input_ecl, output_ecl, io_ecl, three_state_ecl, open_sink, io_open_sink, series,  and series_switch.

ramp_rwf=2

Use the rising waveform or ramp data. Value 2 (default) means use the first two rising waveforms. Value 1 means use the first rising waveform. Value 0 means use ramp data. Possible values are 0, 1, and 2.

ramp_fwf=2

Use the falling waveform or ramp data. Value 2 (default) means use the first two falling waveforms. Value 1 means use the first falling waveform. Value 0 means use ramp data. Possible values are 0, 1, and 2.

Model Syntax

model modelName ibis_buffer parameter=value ...

Model Parameters

type=tristate

Type of the buffer. Possible values are input, output, io, tristate, opendrain, ioopendrain, opensource, ioopensource, terminator, inputecl, outputecl, ioecl, tristateecl, opensink,  and ioopensink.

enable=high

Polarity of the enable signal. Possible values are low and high.

polarity=inv

Polarity of the buffer. Possible values are inv and noninv.

ccomp=0 F

Node capacitance on the die pad.

ccomp_pu=0 F

Node capacitance between the die pad and pullup reference.

ccomp_pd=0 F

Node capacitance between the die pad and pulldown reference..

ccomp_pc=0 F

Node capacitance between the die pad and power clamp reference.

ccomp_gc=0 F

Node capacitance between the die pad and gnd clamp reference.

rgnd ()

Resistor between the die pad and gnd clamp reference; only for terminator.

rpower ()

Capacitance between the die pad and power clamp reference; only for terminator.

rac ()

rac and cac are series R and C between the die pad and gnd; only for terminator.

cac (F)

rac and cac are series R and C between the die pad and gnd; only for terminator.

Multistage buffer parameters

drvsh_model=[...]

Driver Schedule name.

drvsh_delay=[...] s

Driver Schedule delay time. Format: [rise_on_dly rise_off_dly fall_on_dly fall_off_dly].

drvsh_num

Number of models in the Driver Schedule.

drvsh_typ

The type of models in the Driver Schedule.

drvsh_file

The ibis file where the Driver Schedule is in.

drvsh_topname

The top level model name.

Voltage reference parameters

vrange=5.0 V

Reference voltage.

vref=[...] V

Reference voltage, format [gnd pwr gnd_c pwr_c].

Voltage controlled current sources (I/V tables)

pullup=[...]

Pull-up current source, format [v1 i1 ...].

pulldown=[...]

Pull-down current source, format [v1 i1 ...].

powerclamp=[...]

Power clamp current source, format [v1 i1 ...].

gndclamp=[...]

Gnd clamp current source, format [v1 i1 ...].

issopu=[...]

ISSO PU, format [v1 i1 ...].

issopd=[...]

ISSO PD, format [v1 i1 ...].

Switching coefficients (W/T tables)

uprise=[...]

Pull-up source, rising edge, format [t1 w1 ...].

upfall=[...]

Pull-up source, falling edge, format [t1 w1 ...].

downrise=[...]

Pull-down source, rising edge, format [t1 w1 ...].

downfall=[...]

Pull-down source, falling edge, format [t1 w1 ...].

Test waveforms (V/T tables and I/T tables) and loads

loadrise1=[...]

Load for the rising waveform, format [v r c l].

vtrise1=[...]

Rising waveform, format [t1 v1 ...].

iccrise1=[...]

Composite Current after rising waveform1, format [t1 i1 ...].

loadfall1=[...]

Load for the falling waveform, format [v r c l].

vtfall1=[...]

Falling waveform, format [t1 v1 ...].

iccfall1=[...]

Composite Current after falling waveform1, format [t1 i1 ...].

loadrise2=[...]

Test load for the rising waveform, format [v r c l].

vtrise2=[...]

Rising waveform, format [t1 v1 ...].

iccrise2=[...]

Composite Current after rising waveform2, format [t1 i1 ...].

loadfall2=[...]

Test load for the falling waveform, format [v r c l].

vtfall2=[...]

Falling waveform, format [t1 v1 ...].

iccfall2=[...]

Composite Current after falling waveform2, format [t1 i1 ...].

ramp=[...]

Rise and fall time, format [dv_rise dt_rise dv_fall dt_fall].

Input logic parameters

vth=[...] V

Low and High switching threshold, format [vth_lo vth_hi].

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.

SPECTRE supports 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:

Parameter

corner=slow

corner=fast

Ccomp

maximal

minimal

Voltage_Range

minimal

maximal

Pullup_Ref

minimal

maximal

Pulldown_Ref

maximal

minimal

POWER_Clamp_Ref

minimal

maximal

GND_Clamp_Ref

maximal

minimal

Rpower

minimal

maximal

Rgnd

minimal

maximal

Pullup

minimal

maximal

Pulldown

minimal

maximal

POWER_Clamp

minimal

maximal

GND_Clamp

minimal

maximal

Ramp

minimal

maximal

Rising_Wave

minimal

maximal

Falling_Wave

minimal

maximal

Rac

minimal

maximal

Cac

maximal

minimal

ISSO_PU

minimal

maximal

ISSO_PD

minimal

maximal

Composite Current

minimal

maximal

Related Topics

Ideal Switch (switch)

Ratiometric Fourier Analyzer (fourier)

Circuit Components


Return to top
 ⠀
X