Subject: Help with s2ibis2 utility: pullups on input pins, bidirectional pin modelling, etc.

From: Roland Chang <[email-masked]>
Date: Thu, 5 Jun 1997 14:36:53 -0700

Hello, I have been toying around with IBIS for several weeks now, and am
starting to feel a little bit more comfortable with it, but I am still
new to it, and there are still many questions that I have.

I asked the IBIS mail list previously about pullup input pins, and the
following response
made me wonder more about exactly how to  model input pins with pull-up
mechanisms.

> 1.	Inputs with pull-up resistors?
> Are these treated in any special way? (ie: different than that of a 
> normal input pin?)

>>For general IBIS modeling purposes, I think not.  If the pull-up
>>resistors are a permanent part of the input structure (not switchable
>>on and off on-the-fly), then they just become a part of the [GND Clamp]
>>and [POWER Clamp] V/I curves.

>> Pullup resistors would appear in the Clamps.  They are not separated
>> out.  So there is probable that they will be double counted.
>> For Pullups, the contribution in the [Gnd Clamp] table should be
>> should be subtracted.  The [Power Clamp] table should be extended to
>> from 0 to Vcc (and possibly linearly extrapolated to 2Vcc) to provide
>> the separate Pullup resistor component.

>>> How about in S2ibis2 utility?  When S2ibis2 generates the tables=20
>>> automatically, are you saying that the tables will be incorrect for=20
>>> inputs with pull-ups on the input?  Does this mean that I would have=20
>>> to manually change the IBIS file after the s2ibis2 utility is run?  Or=20
>>> is there a way to correct for this in the s2ibis2 command file (*.s2I=20
>>> file)?

>>>>The capability of separating the pullup contribution using s2ibis2 was
>>>>not put in.  Yes, you have to do this separately.  The ranges of [Gnd
>>>>Clamp] from -Vcc to Vcc, and [Power Clamp] from Vcc to 2 Vcc actually
>>>>work only if the currents of both are at "0 mA" at Vcc and for some
>>>>simulators, their linear Extrapolation remain at 0.  Otherwise the
>>>>tables should go the full range from -Vcc to 2 Vcc each.  Some Spice
>>>>models for ASICs have a separate control to add Pullups or Pulldowns.
>>>>Again, the capability of dealing with this issue was not put into s2ibis2.

>>>>As a practical matter, most of the pullup contribution is low (e.g., 75
uA).
>>>>So for most analysis, the pullup contribution error is small.

I am dealing with SPICE netlists of an input configuration that uses
MOSFETs to provide the pull-up, not 'actual' resistors.  Just to make
sure I am completely clear on the matter, I would have to run s2ibis2 on
the netlist file, and then go back and edit the resulting IBIS file
manually, exactly what subtraction and manipulation would I have to
perform on the clamp tables?

2.  My second question pertains to how one would set up an s2ibis2 [pin]
list for creating a single bidirectional pin?  (in a similiar fashion as
the tri-state pin is modelled in example two that came with s2ibis2
utility)

3.  Following up on that point, I'm also wondering, when you generate
IBIS models for a whole component, do you use a CAD package to assemble
the individual pins (dummy models)?
I ask this because, at the moment I am thinking of the following
strategy of making an IBIS model for a component, and would appreciate
your comments on this:

component --> break down into BASIS SET of types of pins
                 --> create a simple IBIS model for EACH member of the 
                      BASIS SET of pins, using s2ibis2 and the
particular pin's
                      SPICE netlist representing the I/O cell structure.
                      (each pin type's  .s2i file will be really simple,
like
                      the examples provided with the s2ibis2 utility.)
	     --> import 'simple' INDIVIDUAL IBIS pin models into a higher level
                      graphical CAD package, in a modular library
fashion (the pin
                      models, once created can be used and reused
easily)
                 --> attach package model (containing data such as 
                      mutual inductances between every pin, etc.)
                      by linking individual pin models created earlier 
                      to pins on the component package
                 --> CAD program then creates the finished IBIS file
                      for the component,
                      which is more error-free, than if created by hand.

4. Monotonicity warnings:  How concerned should I be with these?  I
found these when I ran ibischk2 on an IBIS model
for a simple tri-state driver created using s2ibis2.  It gave the
following message:

Checking pt5t01.ibs for IBIS 2.1 Compatibility...

WARNING (line   57) - Pulldown Maximum data is non-monotonic
WARNING (line   63) - Pulldown Typical data is non-monotonic
WARNING (line   69) - Pulldown Minimum data is non-monotonic
WARNING (line  155) - Pullup Maximum data is non-monotonic
WARNING (line  157) - Pullup Typical data is non-monotonic
WARNING (line  164) - Pullup Minimum data is non-monotonic

Errors  : 0
Warnings: 6

File Passed

The IBISv2.1 spec says the following:

|                The clamp curves of an input or I/O buffer can be
measured
|                directly with a curve tracer, with the I/O buffer
3-stated.
|                However, sweeping enabled buffers results in curves
that are
|                the sum of the clamping curves and the output
structures.
|                Based on the assumption outlined above, the pull-up and
|                pull-down curves of an IBIS model must represent the
|                difference of the 3-stated and the enabled buffer's
curves.
|                (Note that the resulting difference curve can
demonstrate a
|                non-monotonic shape.)  This requirement enables the
simulator
|                to sum the curves, without the danger of double
counting, and
|                arrive at an accurate model in both the 3-stated and
enabled
|                conditions.
|

But the [Pullup] and [Pulldown] Curves that I generated were generated
using s2ibis2, not measured on the bench.  What should I do about the
monotonicity warnings?

I'm still relatively new to IBIS.  I would appreciate any comments you
can offer.  I thank you all for your help in the past few weeks, and
hope that you can help me again.  I have only approx 2 months left now
to finish creating IBIS models for all components at my company, so any
help at all is always greatly appreciated.

Best Regards,
Roland

******************************************
Roland Chang ext. 2647

PMC-Sierra 
Applications Department
105-8555 Baxter Place
Burnaby, BC
V5A 4V7
Tel: (604) 415-6000

email: [email-masked]
******************************************

---

From: Andy Ingraham <[email-masked]>
Date: Fri, 6 Jun 97 09:56:15 EDT

Again, these are comments from one who doesn't use the s2ibis*
utility.

> 1.	Inputs with pull-up resistors?

The two Clamp tables, [Gnd Clamp] and [Power Clamp], are supposed to
represent ALL currents when the device is not driving.  For an
input-only pin, that's everything, including pullup resistors. 
Don't let the "Clamp" in the name fool you into thinking they are
only for clamps; they aren't.

The reason there are two clamp tables rather than one, is that the
currents into a real power clamp diode are dependent on the power
supply voltage; they track it as it goes up and down.  The easiest
way to do that in a model is to split the current into two tables
and make one of them Vcc-relative, which is exactly what IBIS does.

Because the currents into a pullup resistor (or FET) connected to
Vcc, also track Vcc as it goes up and down, these currents
(associated with the pullup resistor/FET) also technically should
go in the [Power Clamp] table.

By the same token, if you had a pulldown resistor/FET, all of its
currents should technically go in the [Gnd Clamp] table and none of
it in the [Power Clamp] table.

Now if you take a real part, or a SPICE model as a black box, and
you sweep the input voltage and measure the current, you will get
one curve, which you want to split into [Gnd Clamp] and [Power
Clamp] tables.  With no further information, i.e., treating your
device as a black box, you can't tell how much is due to pullups,
pulldowns, transistors, clamp diodes, etc.  About all you can do is
split the curve at Vcc and put everything below Vcc in the [Gnd
Clamp] table, and everything above Vcc in the [Power Clamp] table.

This is probably what s2ibis* does.

On the other hand, if you have a way to separately measure or
characterize JUST the pullup FET current, and if you want to be
technically correct (which gives you a slightly more accurate IBIS
model), then what you should do is (a) subtract the pullup current
from the [Gnd Clamp] table since the pullup contributes no current
that is not Vcc-relative, (b) extend the [Power Clamp] table to both
sides of Vcc, probably all the way from -Vcc to 2*Vcc, and (c) put
the currents you subtracted from the [Gnd Clamp] table into the
[Power Clamp] table.

Just make sure that when you add the [Gnd Clamp] and Vcc-adjusted
[Power Clamp] currents, you always end up with the total current
into the input pin.

Whether you need to do this, depends on the magnitude of the pullup
current.  If it's a 100k resistor, the currents are in the 50uA
range.  The "error" happens only when Vcc is not the same as it was
when you ran s2ibis* (or measured a real part).  If the difference
in Vcc is about half a volt, and the MOSFET looks like a 100k
resistor, the error is around 5uA.  Is that enough to worry about? 
You decide.

(On the other hand, half a volt can make a HUGE difference with a
real clamp diode.)

> the tri-state pin is modelled in example two that came with s2ibis2

The entry in the [Pin] list should point to a model_name that is
bidirectional.

For example, in the IBIS spec "ver2_1.ibs":

> [Pin]   signal_name     model_name      R_pin   L_pin   C_pin
> |
>   1     RAS0#           Buffer1         200.0m  5.0nH   2.0pF
>   2     RAS1#           Buffer2         209.0m  NA      2.5pF
>   3     EN1#            Input1          NA      6.3nH   NA
>   4     A0              3-state

Pin 4 is probably a bidirectional pin.  Elsewhere in the IBIS model,
the "[Model] 3-state" section would define its characteristics. 
Bidirectional (I/O) just means tri-state with input capabilities.
Thus, Vinl and Vinh must be specified.

> 4. Monotonicity warnings:  How concerned should I be with these?

Monotonicity warnings are only warnings.  They are not errors.  Note
that IBIS does not require monotonicity!  IBIS talks about non-
monotonicity simply because some simulators don't like it; so it's
good to know at the time you create your models.

> {paragraph quoted from IBIS v2.1 spec}
>

The paragraph you quoted from the IBIS spec applies equally to
SPICE-generated models, as it does to lab-measured models.  It just
happens to have been written with a bias toward lab measurements.

The process of creating pull-up and pull-down curves that are "the
difference of the 3-stated and the enabled buffer's curves" is done
regardless of where the data comes from.  s2ibis* does it.

Don't worry if your individual tables are non-monotonic.  Look at
the overall curves (either the swept data before being picked apart
into IBIS tables, or after combining them back together again).  If
these are monotonic, don't worry.

 (It's unfortunate that ibischk* doesn't bother piecing the curves
 back together before checking for monotonicity ... and equally
 frustrating that the IBIS spec actually instructs ibischk* and
 any similar program to NOT piece the curves back together!  How
 bass-ackwards!)

IBIS models ought to be run through some tests on a simulator before
releasing them.  If there were monotonicity problems to worry about,
that MIGHT catch some of them.  (But it's no guarantee, since some
simulators don't care, while others do.)

Regards,
Andy