Subject: I(V) vs V(t): shouldn't they be consistent

From: Nikolai Bannov <[email-masked]>
Date: Tue, 16 Jun 1998 12:16:00 -0700

Hi IBIS gurus:

I'd like to ask a few questions regarding relationship
between I(V) pull-up, pull-down curves at one side and
V(t) raising-waveform, falling-waveform at another side.

Ibis does not say anything about consistency of these two types of data.
My undestanding is that they can be inconsistent quite often
and my questions are basically about how to interprit this
inconsistency. Should some type of data take precedence over another
type,
because they can be consided known with better accuracy?

Thank all of you who take a look at this issue and
share thoughts and knowledge.

Nik

first, a typical configuration and notations:

          V_high
|          |     Vdie              Vpin            V1
|          |      |    PACKAGE      |              |     TEST FIXTURE
|      ____|____  |                 |              |
|     |  DUT    | v  L_dut   R_dut  v  L_fixture   v    R_fixture
|     |  die    |-o--@@@@@--/\/\/\--o-----@@@@-----o-----/\/\/\-----
V_fixture
|     |_________| <---              |              |
|          |        I               |              |
|          |                        |              |
|          |                 C_dut ===            === C_fixture
|          |                        |              |
|          V_low                    |              |
|                                  GND            GND
|  Fig. 1

We have pull-down and pull-up curves,
Ipd = Ipd(Vdie-V_low), Ipu = Ipu(V_high-Vdie).

Standard does not require this but all ibis files which I saw have
Ipd(0)=0, Ipu(0)=0. This looks reasonable to me.
Basically this means, that if output is low, then pull-up circuit
is 100% OFF and does not supply any current. Similarly,
if output is high, then pull-down circuitry is 100% OFF and supplies
no current.

     ^ I
     |        ---------------------------------- Ipd
     |       /
     |      /
     |     /
     |    / 
     |   /
     |  /
     | /                                  V_high          Vdie
-----|-------------------------------------------------------->
    V_low                                 / 
     |                                   /
     |                                  /
     |                                 /
     |                                /
     |                               /
-----|-------------------------------  Ipu
     | 
           Fig. 2

Let us assume there are Rasing_Waveform, Falling_Waveform pairs
in ibis file in the number M,  0 < M <= 100.

excerpt from ibis  standard:
|                   A waveform table must include the entire waveform;
|                   i.e., the first entry (or entries) in a voltage
column
|                   must be the DC voltage of the output before
switching
                               ------------
|                   and the last entry (or entries) of the column must
be
|                   the final DC value of the output after switching. 
Each 
                        --------------
|                   table must contain at least two entries.  Thus,
numerical 
|                   values are required for the first and last entries
of any 
|                   column containing numerical data.

QUESTION 1. 
-----------
Pick up a raising waveform for V_fixture = V_low (if such does not
exist, the question does not exit either).
Because the first point of V(t) curve should correspond to DC
voltage, it should be V_low (usually 0). Many ibis files I saw have
non-zero
initial voltage, an example in the latest ibis standard(proposal)
also have non-zero initial voltage.
Why ? How to interpret this inconsistency.

typical example:

[Rising Waveform]
R_fixture = 50
V_fixture = 0
C_fixture = 0.0p
|
|Time    V(typ)   V(min)    V(max)
0.00e+00  +2.929e-01     NA        NA   
2.00e-10  +9.850e-01     NA        NA   
4.00e-10  +3.584e+00     NA        NA   
6.00e-10  +4.578e+00     NA        NA   
8.00e-10  +4.782e+00     NA        NA   
1.00e-09  +4.780e+00     NA        NA   
....

QUESTION 2. 
-----------
Similar to previous one, but opposit polarity.
Pick up a falling waveform for V_fixture = V_high (if such does not
exist, the question does not apply).
Because the first point of V(t) curve should correspond to DC
voltage, it should be V_high. Many ibis files I saw have smaller
than V_high initial voltage.
Why ? How to interpret this inconsistency.

typical example:

[Falling Waveform]
R_fixture = 50
C_fixture = 0.0p
V_fixture = 5.0
|
|Time    V(typ)   V(min)    V(max)
0.00e+00  +3.100e+00     NA        NA   
1.00e-10  +3.092e+00     NA        NA   
3.00e-10  +3.001e+00     NA        NA   
4.00e-10  +2.665e+00     NA        NA   
5.00e-10  +2.218e+00     NA        NA   
6.00e-10  +1.710e+00     NA        NA   
7.00e-10  +1.186e+00     NA        NA   
8.00e-10  +7.476e-01     NA        NA   
9.00e-10  +4.763e-01     NA        NA   
1.00e-09  +3.173e-01     NA        NA   
.........
Look, we have here 3.1 Volts instead of 5.0 volts, do we have
accuracy (5-3.1)/5=40% ?

QUESTION 3. 
-----------
Let's pick up a raising waveform (the similar QUESTION
can be raised about falling waveform).
Given the circuit on Fig.1, and using the raising waveform, Vpin(t),
I can find (in principle) I(t), Vdie(t),
right at the buffer output (see Fig.1).

When the buffer is in transition from low to high, both PD and PU
circuits source/sink current. However, in the very first moment,
for only 1st point of V(t) curve, the PD circuit should be OFF,
while PD should be 100% ON (see the excerpt from the standard).

Therefore, for that very first point, if we specify Vdie(t=0),
we can find  'I'  from Ipd(Vdie(t=0)-Vlow) curve. This  'I'  should
coincide with I(t) defind in the the first paragraph for thei QUESTION.
If you take a few ibis files and a calculator, you can easily find
they never match.

The question is how to interpret this inconsistency.

QUESTION 4. 
-----------
Out of set of M  raising waveforms 
(the similar question can be raised for falling waveforms)
I will pick up i1 and j1 and calculate coefficients KUR1 KUD1
to describe the buffer behavior.
Then I pick up i2 and j2 wavefors and calculate KUR2 KUD2.
What I am going to find is that
KUR1 not_equal_to KUR2, KUD1 not_equal_to KUD2.
Ibis allows 100 waveforms, and with this waveforms I am getting
a bunch of inconsistent data.

How to interpret this inconsistency.

------------------------------------- the end

---

From: [email-masked] (Bob Ross)
Date: Tue, 16 Jun 98 15:42:30 PDT

Nik:

I am providing a brief response to you question in your
text.

Best Regards,
Bob Ross
Interconnectix/Mentor Graphics

> Date: Tue, 16 Jun 1998 12:16:00 -0700
> From: Nikolai Bannov <[email-masked]>
> Organization: Avant! Corporation
> To: [email-masked]
> Subject: I(V) vs V(t): shouldn't they be consistent

> if output is high, then pull-down circuitry is 100% OFF and supplies

For Bipolar and BiCMOS outputs, the above assumptions are usually not
correct.

> QUESTION 1. 

I cannot find this example.  One example in IBIS Version 3.0 starts
at 25.21 mV which is consistent with a BiCMOS output.

> QUESTION 2. 

The example below looks way off.  I would also expect the
starting voltage to be near to 5.0 V with V_fixture = 5.0.

> Look, we have here 3.1 Volts instead of 5.0 volts, do we have

You would have to look at the other data, but I agree that this
table does not look good.  This is not the table in IBIS Version 3.0.

> If you take a few ibis files and a calculator, you can easily find

This could match for the actual [Pulldown] table data which probably
has I = 0 at about .3 V.

> The question is how to interpret this inconsistency.

It should be consistent.

> How to interpret this inconsistency.

As a practical matter, we rarely see more than 2 waveforms.
The newer IBIS Cookbook gives some recommendations for 
preferred two-waveform loading conditions, and such
recommendations would give you the K* multiplier
coeficients directly.  We use up to the first two
waveforms in the IBIS file and ignore the rest.
(They could be used for validation information or 
capture a different operating environment.)

You are right that more waveforms would give you a
different set of coefficients - assuming that
only the first two waveforms are used.  Although probably
not practical it is possible to find the optimal
K* multipliers for more than two waveforms - with
some minimal error in all R_fixture loads.

If a file existed with a large number of waveforms
(probably to capture a number of Z0 loading conditions)
then we would recommend moving the set that corresponds
to the actual operating conditions to the first two
waveform positions in the file.