Subject: Re: monotonic data

From: [email-masked] ( Bob Ross)
Date: Mon, 3 Oct 94 16:11:29 PDT

Paul, 

I was on vacation until today (Oct 3), so I am now just catching up.  The full
description concerning monotonocity behavior and appropriate IBIS_CHK tests
is discussed in BIRD8.2 and BIRD11.2.  The texts of both are included below.

In doing the inclusion of BIRD8.2, we left out some text which emphasizes that
"MONOTONIC DATA IS NOT REQUIRED".  The Specification gives definitions of
monontonicity.  BIRD8.2 states that if non-monotonic data is detected, then
then only one message per table is reported.  This should be a WARNING "NOTE",
since the file may still be IBIS compliant. 

Some specific answers are included in your questions, but refer to BIRD8.2
for the full interpretation and intent. 

BIRD11.2 gives a separate end-point test.

I cannot locate any mail from you concerning time-correlated data, so please
resend that email.

Bob Ross,
Interconnectix, Inc.

> Bob,

>    In reading the spec about monotonic data for the V/I curves I believe
> the 8 criteria basically means that once the data is moving in one direction
> (increasing or decreasing) then it can only continue in that direction or
> remain constant.
  ^^^^^^^^^^^^^^^
  |||||||||||||||

IN EACH OF THE 8 CASES, THERE IS A STATEMENT THAT ONE OF THE AXIS (VOLTAGE
OR CURRENT) IS EITHER INCREASING OR DECREASING.  THEREFORE, ONE TEST SHOULD
BE FOR ONE OF THE AXIS TO CONTINUE IN AN INCREASING OR DECREASING DIRECTION
ONLY.  (EQUAL VALUED ENTRIES ARE A VIOLATION OF THIS CONDITION).  THIS IS
A RESTRICTION THAT ONE OF THE AXIS MUST HAVE SORTED DATA (AS OPPOSED TO
BEING RANDOMLY POSITIONED) AND THAT THERE CANNOT BE SAME-VALUED ENTRIES
IN THAT AXIS.  THUS, THE IDEAL STEP FUNCTION WITH MULTIPLE VOLTAGE
AND CURRENT VALUES (EQUAL VALUES IN BOTH AXIS) SHOULD GENERATE A WARNING.
TWO ACCEPTABLE ALTERNATIVES ARE ALSO GIVEN.  (THIS IS MY INTERPRETATION BASED
ON A RIGID READING OF THE SPECIFIED CONDITIONS, AND IS ALSO A PRACTICAL
RESTRICTION BASED ON GUARENTEEING SINGLE-VALUED FUNCTIONS.)

 ^                   NO            YES     OR     YES
 |     ___        V     I        V     I        V     I
 I    |           0     0        0     0        0     0
    __|           1     O        1     0        1     0.01
                  1     2        1.01  2        1     2
    V ->          2     2        2     2        2     2.01

>    For example, if the current started off increasing, it should never decrease.
> Or, if the voltage started off decreasing, it should never increase.

THE MORE RESTRICTIVE TEST WOULD BE THAT ONE AXIS MUST CONTINUE TO INCREASE
OR CONTINUE TO DECREASE TO AVOID MULIPLE VALUED FUNCTIONS.

>    That may seem too general, but that's how I'm taking it.  What confuses me
> is that directly after the 8 criteria there is the statement:

>        "Note that the above conditions allow the data to be non-monotonic in
>         one axis."

> What does that mean?  Can the voltage go up and down within the same curve?

ONCE AN AXIS IS IDENTIFIED AS INCREASING OR DECREASING, THEN THE SECOND AXIS
CAN BE EXAMINED.  THE SECOND AXIS DOES NOT HAVE TO BE MONOTONIC.  HOWEVER,
A TEST OF THE SECOND AXIS FOR EQUAL-OR-SAME_DIRECTION_CHANGE IS GIVEN BY ONE
OF THE EIGHT CONDITIONS WHICH DEFINE "MONOTONIC" BEHAVIOR.  IF SUCH BEHAVIOR
IS NOT DETECTED THEN BIRD8.2 SPECIFIES A WARNING "NOTE".

> Can the current go up and down within the same curve?  YES

>                                                        Do the 8 criteria apply
> to an entire table, or just to portions of it?  ENTIRE TABLE - ALL ENTRIES
OF ANY AXIS, AND ALSO TO THE MIN AND MAX CURRENT TABLE ENTRIES, IF DEFINED.  

>                                           I was talking with Donald Telian and
> he was confused with this also, although he thought he understood the issue.

A SEPARATE TEST IS DESCRIBED IN BIRD11.2 FOR POLARITY CHECKING AND IS BASED
ON JUST THE VOTAGE MIN AND MAX VALUES OF THE TYPICAL CURRENT CURVE ONLY.

>    Any assistance would be greatly appreciated.  Did you get my mail about the
> time correlated data?

> Paul Munsey ([email-masked])

BIRD 8.2 FOLLOWS:

******************************************************************************* 
*******************************************************************************
                     Buffer Issue Resolution Document  (BIRD)

BIRD ID#:                8.2
ISSUE TITLE:             Specification of V/I data monotonicity REQUESTOR:
                         Kellee Crisafulli, HyperLynx Inc.
DATE SUBMITTED:                     January 29, 1994 
DATE REVISED:                       5-9-94
DATE ACCEPTED BY IBIS OPEN FORUM:   {pending}

******************************************************************************* 
******************************************************************************* 
STATEMENT OF THE ISSUE:
Statements have been made at various meetings specific to V/I data and 
monotonicity.  This information has not been added to the specification. It is 
therefore the intent of this BIRD to add a monotonicity statement to the version
2.0 IBIS specification.

******************************************************************************* 
STATEMENT OF THE RESOLVED SPECIFICATIONS:

(The proposed changes start on the 20th line after 'Keywords:'. 
Note: An '*' is used to denote the changed lines)

|============================================================================== 
|    Keywords:  [Pulldown], [Pullup], [GND_clamp], [POWER_clamp]
|    Required:  Yes, if they exist in the device
| Description:  The data points under these keywords define the V/I curves -of 
|               the pulldown and pullup structures of an output buffer -and the 
|               V/I curves of the clamping diodes connected to the GND -and the 
|               POWER pins, respectively.
| 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.
|
*               The V/I table DATA SHOULD BE MONOTONIC to insure that most 
*               simulators provide stable simulations.  Monotonic data is
*               needed to insure that all data is single valued.  MONOTONIC 
*               DATA IS NOT REQUIRED to provide a valid IBIS model.
*               It is recognized that automated measurement equipment may
*               be used to acquire this data and as such may include "noise"
*               which causes the data to be non-monotonic.  It is also 
recognized

*               that some device may be non-monotonic in certain regions.
*               Therefore the IBIS specification allows non-monotonic data. 
*               Simulation tools should filter out non-monotonic data if
*               such data causes instabilities in the simulation results.
*               To be monotonic the V/I table data must meet any one of the 
*               following 8 criteria:
*                 1- The CURRENT axis either increases or remains constant as 
*                    the voltage axis is increased.
*                 2- The CURRENT axis either increases or remains constant as 
*                    the voltage axis is decreased.
*                 3- The CURRENT axis either decreases or remains constant as 
*                    the voltage axis is increased.
*                 4- The CURRENT axis either decreases or remains constant as 
*                    the voltage axis is decreased.
*
*                 5- The VOLTAGE axis either increases or remains constant as 
*                    the current axis is increased.
*                 6- The VOLTAGE axis either increases or remains constant as 
*                    the current axis is decreased.
*                 7- The VOLTAGE axis either decreases or remains constant as 
*                    the current axis is increased.
*                 8- The VOLTAGE axis either decreases or remains constant as 
*                    the current axis is decreased.
*
*               The IBIS_CHK program will test for non-monotonic data and
*               provide a maximum of one note per V/I table if non-montonic 
*               data is found. 
*                "NOTE: Line xxx of V/I table yyy for model zzz is
*                 non-monotonic!  Most simulators will filter this data 
*                 to remove the non-monotonic data."
*               Where xxx is the line number in the IBIS file.
*               Where yyy is Pullup, Pulldown, GND_clamp or POWER_clamp. 
*               Where zzz is the name of the model.
*
*               It is also recognized that the some data may be monotonic if 
*               currents from both the output stage and the clamp diode are
*               added together as most simulators do.  To limit the complexity 
*               of the version 2.0 IBIS_CHK program, it will consider only one 
*               V/I table at a time monotonicity testing.
*               
| Other Notes:  It should be noted that the V/I curve of the [Pullup] and the 
|               [POWER_clamp] structures are 'Vcc relative', meaning that the 
|               voltage values are referenced to the Vcc pin.  The voltages in 
|               the data tables are derived from the equation:
|                       Vtable = Vcc - Voutput
|               Therefore, for a 5V component, -5 V in the table actually
|               means 5 V above Vcc, which is +10 V with respect to ground; 
|               and 10 V means 10 V below Vcc, which is -5 V with respect to 
|               ground.  Vcc-relative data is necessary to model a pullup
|               structure properly, since the output current of a pullup
|               structure depends on the voltage between the output and Vcc 
|               pins and not the voltage between the output and ground pins. 
|               Note that the [GND_clamp] V/I curve can include quiescent
|               input currents, or the currents of a 3-stated output if so 
|               desired.
|------------------------------------------------------------------------------

******************************************************************************* 
ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:
I reviewed the previous discussions the results of the 1993 summit. 
Considerable email has passed on this discussion.

******************************************************************************* 
ANY OTHER BACKGROUND INFORMATION:

The IBIS_CHK program must also be modified to test for this condition. 
------------------------------------------------------------------------------ 
>From meeting Nov 5, 1993
1)
Non-monotonic buffer behavior:  Arpad asked, "Do we require monotonic behavior 
in curves?"  If this is a requirement, the parser must check for monotonicity.

Jon Powell said that customers want to model non-monotonic parts.  Non-monotonic
behavior can result from slow feedback designed to prevent parts from melting; 
thus is is more of a DC phenomenon than an AC phenomenon.  Does this pose a 
convergence problem for some simulators?  Is a DC representation of the curve 
acceptable for some devices?  Due to DC current limiting, DC measurements may 
imply non-monotonic behavior that would never actually occur under real 
switching conditions.  How do we measure in an AC manner instead of DC manner?

Behavior that is nonmonotonic due to feedback goes into the controlled slew rate
discussion, modeling the dynamic characteristics of device.  For IBIS to be 
useful, it must deal with negative resistance regions.

2)
Monotonic data entry:  We felt that in IBIS tables, voltage values should be 
monotonically rising or falling, but that current values may change.   The 
parser should check whether the data is good, but it shouldn't restrict the type
of data.  A BIRD against the parser should be written at some point to add 
checks for this in rev 2.0.  No specific AR owner was identified.

------------------------------------------------------------------------------ 
1993 Summit minutes:
There are several defined buffer types (input, output, I/O, tri-state, open 
drain), which drives what information you collect.  Collection of data from 
measurement is a decomposition problem, of trying to sort out the effects of 
clamps from buffers etc.  The companies with whom Bob has worked (Zeelan and 
Interconnectix) do this decomposition with software.  One problem is selecting 
measurement regions with abnormal behavior, such as non-monotonic behavior 
caused by device switching or "jumps" in the ESD protection during sweeps.
Their software does some filtering of data to eliminate false abnormal behavior.
They can also filter for monotonic behavior.

  Monotonicity, General Discussion
  --------------------------------
  We clarified that one axis of data representation should be monotonic, such as 
  the voltage axis on the V/I curve, but that we could not require that the 
  other

  axis be monotonic, since we were modeling real components whose nature may not 
  be monotonic.
-------------------------------------------------------------------------------

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

BIRD11.2 FOLLOWS:

>From: Kellee Crisafulli
To: IBIS world at large and growing
Re: Bird 11.2 modified per inputs from Bob Ross and last meeting
Date: April 21, 1994

I have made the changes per inputs from Bob Ross and per feedback from the last
IBIS meeting as retold to me by Bob.  See the end of this file for change discussion.
Change 2: 'IF-ELSE' conditions were modified to add equal
Change 3: Added equal condition to verification requirment 
Change 4: Removed requirment to stop IBIS_CHK on first error.

Sorry I missed the last meeting, UNCLE SAM was calling.  I was one of
those procrasting people still working on my personal TAXES at the last minute.

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

                      Buffer Issue Resolution Document  (BIRD)

BIRD ID#:      11.2
ISSUE TITLE:   Improving common error detection in IBIS_CHK program.
REQUESTOR:     Kellee Crisafulli, HyperLynx Inc.

DATE SUBMITTED:                       03-28-94
DATE REVISED:                         04-21-94
DATE ACCEPTED BY IBIS OPEN FORUM:     TBD

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

STATEMENT OF THE ISSUE:
Several common problems with IBIS models are not detected with the present version
of IBIS_CHK.  Two main problems include:
	1) Incorrect 'I'(current) signs in the V/I tables.
        2) Pullup and POWER_clamp V/I tables are not VCC relative.

This BIRD is directed at problem 1 only.  A 2nd separate BIRD will be generated
to address problem 2.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:
The following changes apply to version 1.1 and forward versions of the IBIS_CHK
program and including testing of some parameters for BIRD 7.2 for ECL model types

***************************************************************************
Change 1- Add verbage on current direction.
***************************************************************************
Keywords:    [Pullup], [Pulldown], [GND_clamp], [POWER_clamp]
Required:    Yes, if they exist in the device
Description: The data points under these keywords define the V/I curves of
             the pulldown and pullup structures of an output buffer and the
             V/I curves of the clamping diodes connected to the GND and the
             POWER pins, respectively.  Currents are considered positive
             when their direction is into the component.

***************************************************************************
Change 2- Add detection to IBIS_CHK program for V/I table 'I' sign errors.
***************************************************************************
For each of the following V/I tables: Pullup, Pulldown, POWER_clamp, GND_clamp

  1) Find the minimum and maximum voltage points (Vmin, Vmax) in the table.

  2) IF:The current in the TYPICAL column corresponding to Vmax is less than
        the current in the TYPICAL column corresponding to Vmin than the table is
        assumed to have decreasing current.
     ELSE IF:The current in the TYPICAL column corresponding to Vmax is greater 
        than the current in the TYPICAL column corresponding to Vmin than the
        table is assumed to have increasing current.
     ELSE: The table is assumed to have equal current."

     Note: This works for all cases of discontinuities unless the magnitude of
           discontinuity is such that this model is in all probability competely
           unrealistic.

     Examples:
        *** example with non-monotonic data at the end point
        V:      I:
        0.00    0.0
        4.90   50.0ma
        4.91   49.9ma
        4.93   56.7ma
        5.00   3.0ma  -> V/I table has increasing current (3.0 > 0)
                             Vmax = 5.0, I =3.0mA
                             Vmin = 0.0, I =0.0

        *** example with negative to positve voltages with negative first	
        V:      I:
       -5.00   -0.1ma
        0.00    0.0
        5.00  100.0ma  -> V/I table has increasing current (100 > -0.1)
                             Vmax = 5.0,  I=100mA
                             Vmin = -5.0, I=-0.1mA

        *** example with table data entered postive voltages first
        V:      I:
        5.00   10.1ma
        0.00    0.0
       -5.00   -10.1ma  -> V/I table has increasing current (10.1 > -10.1)
                             Vmax = 5.0,  I=10.1mA
                             Vmin = -5.0, I=-10.1mA

        *** example with only two entrys
        V:      I:
        0.00    0.0
       -5.00   10.1ma  -> V/I table has decreasing current (0 < 10.1)
                             Vmax = 0.0,  I=0
                             Vmin = -5.0, I=10.1mA

        *** ECL example
       [Pullup]
       Voltage   I(typ)    I(min)    I(max)
        0.0       0         0         0
        0.7       -0.2m     -0.2m     -0.2m
        0.73      -0.4m     -0.4m     -0.4m
        0.75      -0.8m     -0.8m     -0.8m
        0.76      -1.2m     -1.2m     -1.2m
        0.77      -1.6m     -1.6m     -1.6m
        0.8       -4.4m     -4.4m     -4.4m
        0.82      -7.6m     -7.6m     -7.6m
        0.85     -14.2m    -14.2m    -14.2m
        0.9      -30.0m    -30.0m    -30.0m
        1.0      -58.0m    -50.0m    -68.0m  -> V/I table has decreasing current ( -58 < 0)
                                                 Vmax = 1.0,  Ityp=-58mA
                                                 Vmin = 0,    Ityp=0
 
       [Pulldown]
       Voltage   I(typ)    I(min)    I(max)
        0.0       0         0         0
        1.6       -0.2m     -0.2m     -0.2m 
        1.62      -0.4m     -0.4m     -0.4m
        1.64      -0.6m     -0.6m     -0.6m
        1.65      -0.8m     -0.8m     -0.8m
        1.66      -1.2m     -1.2m     -1.2m
        1.67      -1.6m     -1.6m     -1.6m
        1.68      -2.4m     -2.4m     -2.4m
        1.69      -3.2m     -3.2m     -3.2m
        1.70      -4.4m     -4.4m     -4.4m
        1.72      -7.4m     -7.4m     -7.4m
        1.75     -14.2m    -14.2m    -14.2m
        1.8      -30.5m    -30.5m    -30.5m 
        1.9      -65.0m    -60.0m    -75.0m  -> V/I table has decreasing current ( -65 < 0)
                                                  Vmax = 1.9, Ityp=-65mA
                                                  Vmin = 0.0, Ityp= 0

        *** An abreviated INTEL model for a CMOS output
        |****************************************************************************
        [Pulldown]
        |  Voltage         I(typ)          I(min)          I(max)
	   -5.00V         -38.70mA        -29.47mA        -51.22mA
	   -1.00V         -24.88mA        -19.18mA        -32.90mA
	   -0.50V         -14.35mA        -11.06mA        -19.05mA
	    0.00V         -11.84pA       -554.66pA        -11.03pA
	  100.00mV          3.20mA          2.47mA          4.27mA
	  200.00mV          6.24mA          4.80mA          8.30mA
	    4.90V          38.68mA         29.45mA         51.18mA
	    5.00V          38.70mA         29.47mA         51.22mA
	   10.00V          39.96mA         30.37mA         53.06mA -> V/I table increasing
        [GND_clamp]
        | Voltage         I(typ)          I(min)          I(max)
	   -5.00V        -680.00mA      NA              NA
	   -1.10V         -75.50mA      NA              NA
	 -600.00mV       -950.00uA      NA              NA
	 -500.00mV        -78.00uA      NA              NA
	 -200.00mV          0.00pA      NA              NA
	 -100.00mV          0.00pA      NA              NA
	    0.00V           0.00pA      NA              NA
	    5.00V           0.00pA      NA              NA  -> V/I table increasing (0 > -680)
        [Pullup]
        | Voltage         I(typ)          I(min)          I(max)
	   -5.00V          38.14mA         27.33mA         54.76mA
	   -4.50V          37.49mA         26.87mA         53.79mA
	   -1.00V          17.13mA         12.81mA         23.55mA
	   -0.50V           9.26mA          6.96mA         12.66mA
	    0.00V          13.57pA        613.51pA         11.04pA
	  100.00mV         -1.96mA         -1.48mA         -2.67mA
	  200.00mV         -3.87mA         -2.92mA         -5.27mA
	  500.00mV         -9.26mA         -6.96mA        -12.66mA
	    1.80V         -26.79mA        -19.79mA        -37.25mA
	    1.90V         -27.74mA        -20.46mA        -38.64mA
	    4.60V         -37.62mA        -26.97mA        -54.00mA
	    4.70V         -37.76mA        -27.06mA        -54.20mA
	    5.00V         -38.14mA        -27.33mA        -54.76mA
	   10.00V         -44.52mA        -33.72mA        -61.15mA -> V/I table decreasing
        [POWER_clamp]
        | Voltage         I(typ)          I(min)          I(max)
	   -5.00V           1.05A       NA              NA
	   -1.10V          79.00mA      NA              NA
	   -1.00V          54.00mA      NA              NA
	 -900.00mV         29.00mA      NA              NA
	 -800.00mV         10.40mA      NA              NA
	 -200.00mV          0.00uA      NA              NA
	 -100.00mV          0.00uA      NA              NA
	    0.00V           0.00pA      NA              NA          -> V/I table decreasing

  3) 	IF the model is any of the following types:(Input_ECL, Output_ECL, I/O_ECL)
           {
           Verify that:
             - Pullup      V/I table has equal or decreasing current
             - POWER_clamp V/I table has equal or decreasing current
             - Pulldown    V/I table has equal or decreasing current
             - GND_clamp   V/I table has equal or increasing current
           }
        ELSE 
           {
           Verify that:
              - Pullup      V/I table has equal or decreasing current
              - POWER_clamp V/I table has equal or decreasing current
              - Pulldown    V/I table has equal or increasing current
              - GND_clamp   V/I table has equal or increasing current
           }

     Note: This specifically allows constant current generators and 0 current
           tables.  0 current tables may be used to indicate table is unused.

  4) If any table verification fails report the following error message:
     'Error found in xxx V/I table at line number nnn!'.
      Where xxx is one of the following Pullup, Pulldown, POWER_clamp, GND_clamp.   
      Where nnn is the line number.

***************************************************************************
Change 3- Add a header comment statement at the TOP of the IBIS_CHK program
          to insure that new changes to the IBIS_CHK program donot break tests
          that worked in old MAJOR versions.  This approach makes the program
          larger however it insures the parser always works the same on older
          versions of IBIS.  This apporach uses more memory, but has the reward
          of low maintaining costs.  The IBIS_CHK program is very small and
          would not be effected by this until many revisions have occured.
***************************************************************************
NOTICE TO ANY PERSON MODIFING THIS PROGRAM!
-------------------------------------------
This program SHALL NOT BE MODIFIED unless there is an associated IBIS BIRD.  
Said BIRD shall be agreed upon by IBIS committee vote.  Only the currently
elected IBIS_CHK 'czar and programmer' is allowed to modify the source code.
The present CZAR is Jon Powell (April 1994).  The IBIS committee may also
hire programmers from time to time to make major changes to the source code.

Note:  Source licensees are free to modify their own copies of this source code
in any way they choose.  Source licensees shall not redistribute the source code
modified or otherwise.  Source licensing is available from the IBIS open forum.
The IBIS open forum is non-profit.

The code for each MAJOR version of the IBIS_CHK program SHALL NOT BE MODIFIED
when adding code for the next version of the IBIS specification.  Instead 
completely new code for all functions and features shall be created.  This
may require duplication of numerous functions.

Each function shall be preceded by VXX_ where XX is the MAJOR version of the IBIS
specification which is being parsed and tested.  A MAJOR version would for
example be 1.x going to 2.x.  A MINOR version would for example be 1.1 to 1.2.
Functions using the above syntax would look as follows:  V01_GetValue

MINOR revisions DO NOT required new code.

Startup code shall be provided at the top of the program which reads the
version number from the IBIS file and runs the portion of the program corresponding
to that MAJOR version.  Code which is used only by the program startup function
is not duplicated.

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

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

Change 1) Suggested from inputs of several people in Email and at the
          at previous IBIS meetings.

Change 2) Defective IBIS models are slipping through the IBIS_CHK program.
          A method for determining sign errors in V/I table was determined
          based on inputs from several people including:
               Kellee Crisafulli, HyperLynx
               Jon Powell, Quad Design
               Arpad, Intel
               Bob Ward, TI
               Bob Ross, Interconnectix
               Maah Sango, Contec
          I reviewed all the comments that have been submitted and I believe this
          method will work with all conditions mentioned so far.

Change 3) I am proposing a method of insuring that future IBIS_CHK
          modifications donot effect the parsing of older IBIS files.
          This only applies to MAJOR revisions in the specification, like
          2.0 comming up.  This would not apply to this update, it would however
          be added to the program header information now and would apply to all
          future MAJOR updates to the IBIS specification.

*******************************************************************************
ANY OTHER BACKGROUND INFORMATION:

Comments about EMAIL leading up to this BIRD
--------------------------------------------
>From: Jon Powel, qdt
Cases that will not work for proposed algorithm
V:    I:
0.0   0.0
3.5   50.0
3.51  49.9
3.52  49.8
3.53  49.7
5.0   100.0

any OC any OD

If current is not negative at GND for the pullup then it cannot pullup?
(except for ECL OC etc?).

Action: problems fixed in BIRD 11.0
******************
>From: Arpad, Intel
What happens if there are equal number of increases and decreases in a curve?
Most of the curves I am generating lately do that and I do not think I am
doing it wrong.
Action: problems fixed in BIRD 11.0
********************
Bob Ward, TI
I think the proposed method of current sign determination might run into
trouble in at least two cases.
  One is when there are exactly the same number of rising and falling segments.
  The other is the same problem one runs into testing for monotonicity
  of the independent variable.  That problem is that very small oscillations
  occur on the "flat" part of a numerically generated curve, not so much
  because they are real, but because of the nature of small numbers, finite
  precision, and floating point round off.
Action: Problems fixed in BIRD 11.0
******************************
Bob Ross, Interconnectix, Inc.
If this proposal is adopted, it would apply to just IBIS Version1.1.  The
polarity rules do not comply with proposed IBIS extensions BIRDS 3 and 4
for ECL type devices.  For ECL type devices, the polarities of both the
Pullup and Pulldown tables will go in the same (decreasing) direction 
because BOTH tables are tabulated referenced to Vcc using
       Vtable = Vcc - Vout.  
I am sure this will become another area of confusion, justifying a test. 
Action: Problem fixed BIRD 11.0
**************************
Maah Sango, Contec Microelectronics USA Inc
2. I agree with Bob Ross that the proposed scheme for enforcing
data integrity will not work for ECL, nor for a few other device types.
(See item 3 of the proposal).  Either the "pullup" or the "pulldown"
data for the ECL and other device types will violate these requirements.
Action: Problem fixed Bird 11.0

3. The proposed scheme, item 3, will not always work even for CMOS unless
we use only the magnitudes of the currents. Existing data for ageing (old)
devices is sometimes presented with positive currents and sometimes with
negative currents for CMOS pullup devices.
Action: Problem fixed Bird 11.0

4. I am not sure that checking only the two end points will always 
guarantee the conclusions we are assuming here. Current(I) data in
between these two points may increase or decrease and still be perfectly 
valid, particularly if we think of device types other than CMOS.
Action: Numerous examples cited, none found that present a problem
*******************************
Arpad, Intel
If we JUST want a polarity checker for the MOST COMMON error, I have another 
most common error to check for:  VCC-relative!  That needed more explaining than
the polarity of the current in my experience, and I have seen more people being 
confused about that.  Should that also be checked for then?
Action: Another Bird needs to be generated separate from Bird 11
*******************************************************************************
Changes from the April-1-94 IBIS meeting
BIRD 11, IBIS_CHK Changes
Kellee Crisafulli proposes three changes in this BIRD, each related to 
the sign of VI table data, which has proven to be a common pitfall among 
new modelers.  First, the BIRD proposes adding a comment to the IBIS 
specification discussing the sign of VI table data; second, add checking 
to ibis_chk for the correct sign, using the algorithm tuned through 
reflector feedback; and third, add a note to the ibis_chk source saying 
a BIRD is required to change the source.

Proposed changes 1 and 3 appear OK to group, with the additional comment 
that source licensees are free to modify their own source, but not to 
post the result.  Only the ibis_chk czar (Jon Powell) can post modified 
versions of ibis_chk, and that requires a ratified BIRD to initiate.
AR:Kellee, change the proposed ibis_chk notice to indicate that it is OK 
   to change your own source code, but not the global one without a 
   supporting BIRD.
Action: Done

Regarding change 2, there is controversy about the sign of the ECL 
example.  Kellee pulled the example out of the IBIS V1.1 spec, which was 
a CMOS example, and indicated that if this was an ECL example then there 
would be a sign error because for ECL pulldown, VI is Vcc-V per BIRD 4.
Kellee feels that right thing to do is to change the sign and use ECL 
type data and present a correct ECL table, but doesn't have ECL data.  
Kumar has ECL data which he offered to supply for inclusion in the BIRD.

AR:Kumar, post ECL model to reflector, Kellee, use that data in the BIRD.
Action: I have incorporated the model.

AR Kellee, Two people noted that the directions of the current tests for the ECL
   were wrong.  Kellee thought they were correct during the phone conversation.
Action: I was wrong, and have changed them to correct the problem.
*******************************************************************************
Changes April 15 meeting and inputs from Bob Ross, Interconnectix Inc. 

Will tables composed of only 0 mA entries or of only constant current entries
be flagged as an error in Version 2.0?  They are acceptable in Version 1.1, and
could be useful to get around some Model_type omissions and do some (beyond IBIS)
constant current source modeling or biasing of tables modeling. 
Input at the meeting 4-15-94 indicated that 0mA and constant current should be allowed.

Change 2, section 4) states:
If any table moves in the wrong direction report the following error message:
'Error found in xxx V/I table at line number nnn!'.  Where xxx is one of the
following: Pullup, Pulldown, POWER_clamp, GND_clamp.   Where nnn is the line
number.

Note: It is acceptable to stop the parser after the first line found with this
error."

I could technically be very happy with the wording as is, and yet we
may have entirely different expectations.  To me "If any table MOVES in the
wrong direction ..." means an error is NOT reported if there is NO table
movement - e.g., NO error is reported if the tests reveal EQUAL currents.
I believe you really intended "If any table verification fails ...".

I would prefer that the IBIS_CHK parser not stop, but continue to check the
file for all errors (including other occurances of this error).  So I would
delete the "Note" entirely.

AR Kellee, Modify the test to allow constant current and 0mA as valid.
Action: I have made changes in the V/I table tests to allow 0mA and constant current.

AR Kellee, Clarify wording and remove requirment to stop IBIS_CHK on first error.
Action:  Modified wording to say "If any table verification fails..."
         Deleted the Note requiring the parser to stop after the first error line.
*************************************************************************************

---

From: Will Hobbs <[email-masked]>
Date: Tue, 4 Oct 94 15:02:10 PST

Text item: External Message Header

Bob,

Thanks for the clarification.  I had already replied to Paul with a comment that
was not as accurate or complete as yours, so I appreciate your follow-through.  
The time-correlation question related to how multiple waveform tables could be 
used, which requires that a point, such as 0.8 or 1.5 V, be picked by the 
simulator as a reference to time-correlate the waveforms.  I believe that the 
parser does not have to do anything but create the table data structures and 
check for rule compliance.

Will