Subject: IBIS BIRD44 Interpretation of Min/Max/Weak/Strong Data

From: [email-masked] ( Bob Ross)
Date: Mon, 9 Jun 1997 09:12:18 -0700 (PDT)

To IBIS Committee:

BIRD44 was just submitted by Andy Ingraham.  This can also be
discussed at the IBIS Summit Meeting.

Bob Ross
Interconnectix

                       Buffer Issue Resolution Document  (BIRD)

BIRD ID#:      44
ISSUE TITLE:   Interpretation of Min/Max/Weak/Strong data
REQUESTOR:     Andy Ingraham, Digital Equipment Corp.
DATE SUBMITTED:    June 8, 1997
DATE ACCEPTED BY IBIS OPEN FORUM:     

*******************************************************************************
*******************************************************************************

STATEMENT OF THE ISSUE:

The wording in the IBIS spec doesn't clarify what "min" and "max"
refer to, where those terms are used.  For example, min temperature
for the [Temperature Range] keyword refers to the temperature that
causes minimum device strength, NOT to the minimum temperature.  For a
CMOS device, this is usually the maximum temperature within its
operating range.  This has caused IBIS models to be created
incorrectly.

*******************************************************************************

STATEMENT OF THE RESOLVED SPECIFICATIONS:

Modify the [Temperature Range] keyword definition section.  The old
text is:

|==============================================================================
|     Keyword:  [Temperature Range]
|    Required:  Yes, if other than the preferred 0, 50, 100 degree Celsius
|               range
| Description:  Defines the temperature range over which the model is
|               to operate.
| Usage Rules:  List the actual die temperatures (not percentages) in the
|               typ, min, max format.  "NA" is allowed for min and max only.
| Other Notes:  The [Temperature Range] keyword also describes the temperature
|               range over which the various V/I curves and ramp rates were
|               derived.
|------------------------------------------------------------------------------
| variable              typ             min             max
[Temperature Range]     27.0            -50             130.0
|

The new text is:

|==============================================================================
|     Keyword:  [Temperature Range]
|    Required:  Yes, if other than the IBIS default values
| Description:  Defines the temperature range over which the model is
|               to operate.
| Usage Rules:  List the actual die temperatures (not percentages) in the
|               typ, slow/weak, fast/strong format.  "NA" is allowed for
|               slow/weak and fast/strong only.
| Other Notes:  The [Temperature Range] keyword also describes the temperature
|               values over which the various V/I curves, ramp rates, and
|               waveforms were derived.
|
|               The default temperatures are 0, 50, 100 degree Celsius,
|               where the slow/weak is 0 and the fast/strong is 100. 
|               Thus, most CMOS devices will require the [Temperature
|               Range] keyword.
|------------------------------------------------------------------------------
| variable              typ             slow/weak       fast/strong
[Temperature Range]     27.0            -50             130.0
|

Modify the [Pulldown], [Pullup], [GND Clamp], and [POWER Clamp] keyword
definition section, as follows.

Old text:

| Usage Rules:  In each of these sections, the first column contains the
|               voltage value, and the three remaining columns hold the
|               typical, minimum, and maximum current values.  The four
|               entries, Voltage, I(typ), I(min), and I(max) must be placed on
|               a single line and must be separated by at least one white
|               space or tab character.
|
|               All four columns are required under these keywords.  However,
|               data is only required in the typical column.  If minimum
|               and/or maximum current values are not available, the reserved
|               word "NA" must be used.  "NA" can be used for currents in the
|               typical column, but numeric values MUST be specified for the
|               first and last voltage points on any V/I curve.  Each V/I
|               curve must have at least 2, but not more than 100, voltage
|               points.

New text:

| Usage Rules:  In each of these sections, the first column contains the
|               voltage value, and the three remaining columns hold the
|               typical, slow/weak, and fast/strong current values.  The four
|               entries, Voltage, I(typ), I(slow/weak), and I(fast/strong)
|               must be placed on a single line and must be separated by at
|               least one white space or tab character.
|
|               All four columns are required under these keywords.  However,
|               data is only required in the typical column.  If slow/weak
|               and/or fast/strong current values are not available, the
|               reserved word "NA" must be used.  "NA" can be used for
|               currents in the typical column, but numeric values MUST be
|               specified for the first and last voltage points on any V/I
|               curve.  Each V/I curve must have at least 2, but not more than
|               100, voltage points.

Old text:

|------------------------------------------------------------------------------
[Pulldown]
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V    -40.0m    -34.0m    -45.0m
   -4.0V    -39.0m    -33.0m    -43.0m
|    .
|    .
    0.0V      0.0m      0.0m      0.0m
|    .
|    .
    5.0V     40.0m     34.0m     45.0m
   10.0V     45.0m     40.0m     49.0m
|
[Pullup]                               | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V     32.0m     30.0m     35.0m
   -4.0V     31.0m     29.0m     33.0m
|    .
|    .
    0.0V      0.0m      0.0m      0.0m
|    .
|    .
    5.0V    -32.0m    -30.0m    -35.0m
   10.0V    -38.0m    -35.0m    -40.0m
|
[GND Clamp]
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V  -3900.0m  -3800.0m  -4000.0m
   -0.7V    -80.0m    -75.0m    -85.0m
   -0.6V    -22.0m    -20.0m    -25.0m
   -0.5V     -2.4m     -2.0m     -2.9m
   -0.4V      0.0m      0.0m      0.0m
    5.0V      0.0m      0.0m      0.0m
|
[POWER Clamp]                          | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V   4450.0m       NA        NA
   -0.7V     95.0m       NA        NA
   -0.6V     23.0m       NA        NA
   -0.5V      2.4m       NA        NA
   -0.4V      0.0m       NA        NA
    0.0V      0.0m       NA        NA
|

New text:

|------------------------------------------------------------------------------
[Pulldown]
|  Voltage   I(typ)  I(slow/weak)  I(fast/strong)
|
   -5.0V    -40.0m     -34.0m     -45.0m
   -4.0V    -39.0m     -33.0m     -43.0m
|    .
|    .
    0.0V      0.0m       0.0m       0.0m
|    .
|    .
    5.0V     40.0m      34.0m      45.0m
   10.0V     45.0m      40.0m      49.0m
|
[Pullup]                               | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)  I(slow/weak)  I(fast/strong)
|
   -5.0V     32.0m      30.0m      35.0m
   -4.0V     31.0m      29.0m      33.0m
|    .
|    .
    0.0V      0.0m       0.0m       0.0m
|    .
|    .
    5.0V    -32.0m     -30.0m     -35.0m
   10.0V    -38.0m     -35.0m     -40.0m
|
[GND Clamp]
|
|  Voltage   I(typ)  I(slow/weak)  I(fast/strong)
|
   -5.0V  -3900.0m   -3800.0m   -4000.0m
   -0.7V    -80.0m     -75.0m     -85.0m
   -0.6V    -22.0m     -20.0m     -25.0m
   -0.5V     -2.4m      -2.0m      -2.9m
   -0.4V      0.0m       0.0m       0.0m
    5.0V      0.0m       0.0m       0.0m
|
[POWER Clamp]                          | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)  I(slow/weak)  I(fast/strong)
|
   -5.0V   4450.0m        NA         NA
   -0.7V     95.0m        NA         NA
   -0.6V     23.0m        NA         NA
   -0.5V      2.4m        NA         NA
   -0.4V      0.0m        NA         NA
    0.0V      0.0m        NA         NA
|

Modify the [Ramp] keyword definition section, as follows:

Old text:

|               The ramp rate must be specified as an explicit fraction
|               and must not be reduced.  The [Ramp] values can use "NA" for
|               the min and max values only.  The R_load subparameter is
|               optional if the preferred 50 ohm load is used.  The R_load sub-
|               parameter is required if a non-standard load is used.
|------------------------------------------------------------------------------
[Ramp]
| variable      typ             min             max

New text:

|               The ramp rate must be specified as an explicit fraction
|               and must not be reduced.  The [Ramp] values can use "NA" for
|               the slow and fast values only.  The R_load subparameter is
|               optional if the preferred 50 ohm load is used.  The R_load sub-
|               parameter is required if a non-standard load is used.
|------------------------------------------------------------------------------
[Ramp]
| variable      typ             slow            fast

Modify the [Rising Waveform] and [Falling Waveform] keyword definition
sections, as follows.

Old text:

|     Usage Rules:  Each [Rising Waveform] and [Falling Waveform] keyword
|                   introduces a table of time vs. voltage points that
|                   describe the shape of an output waveform.  These
|                   time/voltage points are taken under the conditions
|                   specified in the R/L/C/V_fixture and R/L/C_dut
|                   subparameters.  The table itself consists of
|                   one column of time points, then three columns of
|                   voltage points in the standard typ, min, and max format.
|                   The four entries must be placed on a single line and
|                   must be separated by at least one white space or tab
|                   character.  All four columns are required.  However, data
|                   is only required in the typical column.  If minimum
|                   or maximum data is not available, use the reserved word
|                   "NA".  The first value in the time column need not be '0'.

New text:

|     Usage Rules:  Each [Rising Waveform] and [Falling Waveform] keyword
|                   introduces a table of time vs. voltage points that
|                   describe the shape of an output waveform.  These
|                   time/voltage points are taken under the conditions
|                   specified in the R/L/C/V_fixture and R/L/C_dut
|                   subparameters.  The table itself consists of
|                   one column of time points, then three columns of
|                   voltage points in the standard typ, slow, and fast format.
|                   The four entries must be placed on a single line and
|                   must be separated by at least one white space or tab
|                   character.  All four columns are required.  However, data
|                   is only required in the typical column.  If slow or fast
|                   waveform data is not available, use the reserved word
|                   "NA".  The first value in the time column need not be '0'.

Old text:

|                   V_fixture defines the voltage for typ, min, and max
|                   supply conditions.  However, when the fixture voltage
|                   is related to the power supply voltages, then the
|                   subparameters V_fixture_min and V_fixture_max can
|                   be used to further specify the fixture voltage for
|                   min and max supply voltages.

New text:

|                   V_fixture defines the voltage for typ, slow, and fast
|                   waveform conditions.  However, when the fixture voltage
|                   is related to the power supply voltages, then the
|                   subparameters V_fixture_min and V_fixture_max can
|                   be used to further specify the fixture voltage for
|                   the slow and fast waveforms.

Old text:

|------------------------------------------------------------------------------
[Rising Waveform]
R_fixture = 500
V_fixture = 5.0
V_fixture_min = 4.5           |Note, R_fixture is connected to Vcc
V_fixture_max = 5.5           |Specified, but not used in this example
C_fixture = 50p
L_fixture = 2n
C_dut = 7p
R_dut = 1m
L_dut = 1n
|Time     V(typ)     V(min)     V(max)
 0.0ns     0.3        0.5         NA
 0.5ns     0.3        0.5         NA
 1.0ns     0.6        0.7         NA
 1.5ns     0.9        0.9         NA
 2.0ns     1.5        1.3         NA
 2.5ns     2.1        1.7         NA
 3.0ns     3.0        2.7         NA
 3.5ns     3.2        3.0         NA
|
[Falling Waveform]
R_fixture = 50
V_fixture = 0
|Time     V(typ)     V(min)     V(max)
 10.0ns     3.2        3.0         NA
 10.5ns     3.0        2.7         NA
 11.0ns     2.1        1.7         NA
 11.5ns     1.5        1.3         NA
 12.0ns     0.9        0.9         NA
 12.5ns     0.6        0.7         NA
 13.0ns     0.3        0.5         NA
 13.5ns     0.3        0.5         NA
|

New text:

|------------------------------------------------------------------------------
[Rising Waveform]
R_fixture = 500
V_fixture = 5.0
V_fixture_min = 4.5           |Note, R_fixture is connected to Vcc
V_fixture_max = 5.5           |Specified, but not used in this example
C_fixture = 50p
L_fixture = 2n
C_dut = 7p
R_dut = 1m
L_dut = 1n
|Time     V(typ)     V(slow)    V(fast)
 0.0ns     0.3        0.5         NA
 0.5ns     0.3        0.5         NA
 1.0ns     0.6        0.7         NA
 1.5ns     0.9        0.9         NA
 2.0ns     1.5        1.3         NA
 2.5ns     2.1        1.7         NA
 3.0ns     3.0        2.7         NA
 3.5ns     3.2        3.0         NA
|
[Falling Waveform]
R_fixture = 50
V_fixture = 0
|Time     V(typ)     V(slow)    V(fast)
 10.0ns     3.2        3.0         NA
 10.5ns     3.0        2.7         NA
 11.0ns     2.1        1.7         NA
 11.5ns     1.5        1.3         NA
 12.0ns     0.9        0.9         NA
 12.5ns     0.6        0.7         NA
 13.0ns     0.3        0.5         NA
 13.5ns     0.3        0.5         NA
|

Modify the "NOTES ON DATA DERIVATION METHOD" as follows.

Old text:

| This section explains how data values are derived.  It describes certain
| assumed parameter and table extraction conditions if they are not
| explicitly specified.  It also describes the allocation of data into
| the "typ", "min", and "max" columns under variations of voltage,
| temperature, and process.
|
| The required "typ" column for all data represents typical operating
| conditions.  For most [Model] keyword data, the "min" column describes
| slow, weak performance, and  the "max" column describes the fast, strong
| performance.  It is permissible to use slow, weak devices or models to
| derive the data for the "min" column, and to use fast, strong devices or
| models to derive the data in the "max" columns under the corresponding
| voltage and temperature derating conditions for these columns.  It is also

New text:

| This section explains how data values are derived.  It describes certain
| assumed parameter and table extraction conditions if they are not
| explicitly specified.  It also describes the allocation of data into
| the "typ", "min", "slow", "slow/weak", "max", "fast", and "fast/strong"
| columns under variations of voltage, temperature, and process.
|
| The required "typ" column for all data represents typical operating
| conditions.  For most [Model] keyword data, the "min", "slow", or
| "slow/weak" column describes slow, weak performance, and  the "max", "fast",
| or "fast/strong" column describes the fast, strong performance.  It is
| permissible to use slow, weak devices or models to derive the data for the
| "min", "slow", or "slow/weak" column, and to use fast, strong devices or
| models to derive the data in the "max", "fast", or "fast/strong" column
| under the corresponding voltage and temperature derating conditions for
| these columns.  It is also

Old text:

| The voltage and temperature keywords and optionally the process models
| control the conditions which define the "typ", "min", and "max" column
| entries for all V/I table keywords [Pulldown], [Pullup], [Gnd Clamp],
| and [Power Clamp]; all [Ramp] subparameters dV/dt_r and dV/dt_f; and
| all waveform table keywords and subparameters [Rising Waveform],
| [Falling Waveform], V_fixture, V_fixture_min, and V_fixture_max.

New text:

| The voltage and temperature keywords and optionally the process models
| control the conditions which define the "typ", "slow", "slow/weak", "fast",
| and "fast/strong" column entries for all V/I table keywords [Pulldown],
| [Pullup], [Gnd Clamp], and [Power Clamp]; all [Ramp] subparameters dV/dt_r
| and dV/dt_f; and all waveform table keywords and subparameters [Rising
| Waveform], [Falling Waveform], V_fixture, V_fixture_min, and V_fixture_max.

Old text:

| The optional [Temperature] keyword will contain the temperature
| which causes or amplifies the slow, weak conditions in the "min" column
| and the temperature which causes or amplifies the fast, strong
| conditions in the "max" column.  Therefore, the "min" column for 
| [Temperature] will contain the lowest value for bipolar devices (TTL
| and ECL) and the highest value for CMOS devices.  Default values
| described later are assumed if temperature is not specified.

New text:

| The optional [Temperature Range] keyword will contain the temperature
| which causes or amplifies the slow, weak conditions in the "slow/weak"
| column and the temperature which causes or amplifies the fast, strong
| conditions in the "fast/strong" column.  Therefore, the "slow/weak" column
| for [Temperature Range] will contain the lowest value for bipolar devices
| (TTL and ECL) and the highest value for CMOS devices.  Default values
| described later are assumed if temperature is not specified.

Old text:

| The default temperatures under which all V/I tables are extracted are
| provided below.  The same defaults also are stated for the [Ramp]
| subparameters, but they also apply for the waveform keywords.

New text:

| The default temperatures under which all V/I tables, [Ramp] subparameters,
| and waveform tables are extracted are provided below.

Old text:

| 1) V/I curves for CMOS devices:
|      typ = typical voltage, typical temp deg C, typical process
|      min = minimum voltage, max temp deg C, typical process, minus "X%"
|      max = maximum voltage, min temp deg C, typical process, plus "X%"
|
|    V/I curves for bipolar devices:
|      typ = typical voltage, typical temp deg C, typical process
|      min = minimum voltage, min temp deg C, typical process, minus "X%"
|      max = maximum voltage, max temp deg C, typical process, plus "X%"

New text:

| 1) V/I curves for CMOS devices:
|      typ = typical voltage, nominal temp deg C, typical process
|      slow/weak = min voltage, max temp deg C, typical process, minus "X%"
|      fast/strong = max voltage, min temp deg C, typical process, plus "X%"
|
|    V/I curves for bipolar devices:
|      typ = typical voltage, nominal temp deg C, typical process
|      slow/weak = min voltage, min temp deg C, typical process, minus "X%"
|      fast/strong = max voltage, max temp deg C, typical process, plus "X%"

Old text:

|    e. Typ, Min, and Max must all be posted, and are derived at the same
|       extremes as the V/I curves, which are:
|
|       Ramp rates for CMOS devices:
|          typ = typical voltage, typical temp deg C, typical process
|          min = minimum voltage, max temp deg C, typical process, minus "Y%"
|          max = maximum voltage,  min temp deg C, typical process, plus  "Y%"
|
|       Ramp rates for bipolar devices:
|          typ = typical voltage, typical temp deg C, typical process
|          min = minimum voltage, min temp deg C, typical process, minus "Y%"
|          max = maximum voltage,  max temp deg C, typical process, plus  "Y%"

New text:

|    e. Typ, Slow, and Fast must all be posted, and are derived at the same
|       extremes as the V/I curves, which are:
|
|       Ramp rates for CMOS devices:
|          typ = typical voltage, nominal temp deg C, typical process
|          slow = minimum voltage, max temp deg C, typical process, minus "Y%"
|          fast = maximum voltage,  min temp deg C, typical process, plus  "Y%"
|
|       Ramp rates for bipolar devices:
|          typ = typical voltage, nominal temp deg C, typical process
|          slow = minimum voltage, min temp deg C, typical process, minus "Y%"
|          fast = maximum voltage,  max temp deg C, typical process, plus  "Y%"

*******************************************************************************

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

These changes do not affect the IBIS spec itself.  There are no new or
modified keywords or subparameters.  Only the explanatory portions are
modified.

The problem with the existing wording is that it doesn't describe what
is meant by "min" or "max" at the place where they are used in the
spec.  This leads to confusion and misinterpretation, because the
customary meaning of "min", when speaking of temperatures, currents,
or voltages, is the minimum temperature, current, or voltage.  This is
generally not what is meant by the IBIS spec, as borne out by the
explanatory notes added to the back of the spec.

These definitions belong up-front, not tucked away in the back.

The changes proposed here are meant to make it obvious when the "min"
or "max" data should refer to "slow" or "fast" devices, as opposed to
"min" or "max" of the data being listed.

It is a move toward making it possible for anyone to pick up the spec,
read one section, and understand it correctly, without having to read
the whole thing through and cross-reference items that you thought
were obvious but aren't, and are not defined until you reach the end
of the spec.

*******************************************************************************

ANY OTHER BACKGROUND INFORMATION:

This is partly inspired by my making someone from another company
correct their IBIS model.

*******************************************************************************