Subject: Bird 28.3

From: Stephen Peters <[email-masked]>
Date: Wed, 20 Sep 1995 08:53:10 -0700

Hello Fellow IBISans:

     Here is an update to bird 28.  Changes are listed below:

Changes 9/20
     Dropped the requirement that the capacitance and inductance values
in the coupling matrix have to be entered as positive quantities.  Also
corrected the word 'backslash' to 'slash' thru out the document and
added the editorial comments per Dileep Divakar email of Aug 24th.

             Best Regards,
             Stephen Peters
             Intel Corp.

--------------

                 Buffer Issue Resolution Document  (BIRD)
BIRD ID#:        28.3
ISSUE TITLE:     Enhancement To The Package Model (.pak file) Specification
REQUESTER:       Stephen Peters
DATE SUBMITTED:  Sept 20, 1995
DATE ACCEPTED BY IBIS OPEN FORUM:  Pending

******************************************************************************
******************************************************************************
STATEMENT OF THE ISSUE:  The current package model specification describes
each pin on a package using lumped L/R/C parameters.  Coupling between
pins also assumes lumped electrical parameters.  However, these description
are inadequate when the electrical length of the package elements are greater 
than ~1/6 of the I/O buffers' rise time.  This bird enhances the package 
description by allowing package elements to be described in terms of
length and L, R and C per unit length; i.e. a transmission line representation.

******************************************************************************
STATEMENT OF THE RESOLVED SPECIFICATIONS:  Following are the specific changes
to the specification.

1. The keyword [Number of Sections] is added to the specification after 
the Description keyword
|==============================================================================
|    Keyword: [Number of Sections]
|   Required: No
|Description: Defines the maximum number of sections that make up a 'package
|             stub'.  A package stub is defined as the connection between
|             the die pad and the corresponding package pin; it can include
|             (but is not limited to) the bondwire, the connection between 
|             the bondwire and pin, and the pin itself.  This keyword must 
|             be used if a modeler wishes to describe any package stub as 
|             other than a single, lumped L/R/C.  The sections of a package
|             stub are assumed to connect  to each other in a series fashion.
|Usage Rules: The argument is a positive integer greater than zero.  This 
|             keyword, if used, must appear in the specification before the 
|             [Pin Numbers] keyword.
|-----------------------------------------------------------------------------
[Number of Sections] 3
|
|=============================================================================

2. The current [Pin Numbers] keyword description is replaced by the following:
|=============================================================================
|    Keyword: [Pin Numbers]
|   Required: Yes
|Description: Tells the parser the set of names that are used for the package
|             pins and also defines pin ordering.  If the [Number of Sections]
|             keyword is present it also lists the elements for each section
|             of a pin's die to pin connection.
| Sub-Params: Len, L, R, C, Matrix
|Usage Rules: Following the [Pin Numbers] keyword, the names of the pins are
|             listed.  There must be as many names listed as there are pins
|             (as given by the preceding [Number of Pins] keyword).  Pin names
|             can not exceed 5 characters in length.  The first pin name
|             given is the "lowest" pin, and the last pin given is the
|             "highest."  If the [Number of Sections] keyword is used then 
|             each pin name must be followed by one or more of the legal 
|             subparameter combinations listed below.  If the [Number of 
|             Sections] keyword is not present then subparameter usage is 
|             NOT allowed.
|             
|             Subparameters:
|             The subparameters specify the length, inductance, capacitance
|             and resistance of each section of each stub on a package.  If
|             a particular section exhibits coupling to an adjacent (same
|             numbered) section of a different package stub then the Matrix
|             subparameter is used.  The subparameters are defined as 
|             follows:
|             Len     The length of a package stub section.  Lengths are given
|                     in terms of arbitrary 'units'.
|             L       The inductance of a package stub section, in terms of
|                     'inductance/unit length'.  For example, if the total
|                     inductance of a package stub section is 3.0nH and the
|                     length of this section is 2 'units', the inductance 
|                     would be listed as L = 1.5nH  (i.e. 3.0 / 2). 
|             C       The capacitance of a package stub section, in terms of
|                     capacitance per unit length.
|             R       The DC (ohmic) resistance of a package stub section, in
|                     terms of ohms per unit length.
|             Matrix  Use of this subparameter means that this package stub
|                     sections electrical parameters are presented as part of
|                     a coupling matrix.  The data for the matrix is included 
|                     between the [Model Data]/[End Model Data] keyword pairs
|                     as described below.  
|
|             Specifying a length or L/R/C value of zero is allowed.  If
|             Len = 0 is specified, then the L/R/C values are the total
|             for that section.  If a non-zero length is specified, then
|             the total L/R/C for a section is calculated by multiplying 
|             the value of the Len subparameter by the value of the L,
|             R or C subparameter.
|
|             Using The Subparameters to Describe Package Stub Sections:
|             Each section description must begin with the Len subparameter and
|             ends with the slash (/) character.  The value of a sub-
|             parameter and the subparameter itself are separated by an equals
|             sign (=); whitespace around the equals sign is optional.  All 
|             package stub descriptions must contain the same number of 
|             sections however, a particular section description can contain 
|             no data (i.e. the description is given as 'Len = 0 /'.  See the 
|             example below).  
|
|             Legal Subparameter Combinations:
|             A) A single Len = 0 subparameter, followed by a slash.
|             The is used to describe a section with no data.
|
|             B)  Len and a single Matrix subparameter, followed by a
|             backslash. The Len subparameter specifies the length of that 
|             section while the Matrix subparameter indicates that this 
|             section of this package stub is electrically coupled to the 
|             corresponding (same numbered) section of an adjacent package 
|             stub (or stubs) and the coupling terms are listed in a matrix
|             format.  The matrix description must include both the 'self' 
|             inductance/capacitance/resistance (as required) of a section 
|             as well as the mutual coupling terms.  If one section is
|             described using the the Matrix subparameter then the 
|             corresponding (same numbered) sections on ALL other package 
|             stubs must use the Matrix subparameter. 
|
|             C)  Len, and one or more of the L, R and C subparameters.  If
|             the Len subparameter is given as zero, then the L/R/C sub-
|             parameters represent lumped elements.  If the the Len sub-
|             parameter is non-zero, then the L/R/C subparameters represent
|             distributed elements.
|
|
|             In the example below the first section is a lumped inductor,
|             the second section is described using a matrix, and the third
|             section is modeled using distributed elements.  Pin A3 shows
|             an example of sections with no data.  Pins A4 and A5 illustrate
|             how a section description can be broken across multiple lines
|             and how each section description is delimited by the slash.
|-----------------------------------------------------------------------------
[Pin Number]
A1   Len = 0 L=1.2n / Len = 1.3 Matrix / Len=0.47 L=8.35n C=3.34p R=0.01 /
A2   Len = 0 L=1.4n / Len = 1.2 Matrix / Len=0.47 L=6.21n C=3.34p R=0.01 /
A3   Len = 0        / Len = 1.1 Matrix / Len = 0                         /
A4   Len = 0 L=1.2n / Len = 1.0 Matrix / Len=0.47 L=8.35n 
     C=3.34p R=0.01/
A5   Len = 0 L=1.2n /  
     Len=1.2 Matrix / 
     Len=0.47 L= 8.35n C=3.34p R=0.01 /
|
|    Note that the actual length for each section is reported, even for
|    those sections that use the Matrix subparameter.
|
3.  The current [Model Data] and [End Model Data] keyword descriptions are
    replaced by the following
|=============================================================================
|    Keyword: [Model Data]
|   Required: Yes, if any of the sections in a package stub description
|             use the 'Matrix' subparameter or if the [Number of Sections]
|             keyword is not used.
|Description: Indicates the beginning of the matrix data used to describe
|             a package stub section.  
|Usage Rules: If the [Number of Sections] keyword is used then the [Model
|             Data] keyword must be followed by the word 'section' and the 
|             section number the matrix data applies to.  There must be a 
|             [Model Data] keyword for every section in a package stub 
|             description that uses the Matrix keyword.  Note that if the 
|             [Number of Sections] keyword is used but no package stub 
|             sections use the Matrix subparameter then the [Model Data]
|             and [End Model Data] keyword are not required.
|-----------------------------------------------------------------------------
[Model Data] section 2
|
|=============================================================================
|    Keyword: [End Model Data]
|   Required: Yes, if the [Model Data] keyword is present. 
|Description: Indicates the end of the matrix data used to describe
|             a package stub section.  
|Usage Rules: In between the [Model Data] and [End Model Data] keywords is
|             the matrix data itself.  The data is a set of three matrices:
|             the resistance (R) , inductance (L) , and capacitance (C),
|             matrices.  Each matrix can be formatted differently (see
|             below).  Use one of the matrix keywords to mark the
|             beginning of each matrix.  As with the [Model Data] keyword
|             the [End Model Data] keyword is followed by the word 'section'
|             and the section number.
|-----------------------------------------------------------------------------
[End Model Data] section 2
|
|=============================================================================

4. The following paragraph is added to the section entitled "RLC MATRIX
NOTES" (place after the first paragraph).

There are two different ways to extract the coefficients that are reported
in the the capacitance and inductance matrices.  For the purposes of this
specification, the coefficients reported in the capacitance matrices shall
be the 'electrostatic induction coefficients' or 'Maxwell's capacitances'.
The Maxwell capacitance Kij is defined as the charge induced on conductor "j"
when conductor "i" is held at 1 volt and all other conductors are held at 
zero volts. Note that Kij ( when i /= j) will be a negative number and 
should be entered as such.  Likewise, for the inductance matrix the 
coefficients for Lij are defined as the voltage induced on conductor "j" 
when conductor "i"'s current is changed by 1amp/sec and all other 
conductors have no current change.

******************************************************************************
ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:
     This bird proposes three fundamental enhancement to the current package
specification.  They are:
     1.  The connection between the pad on the die and the external package
         pin (referred to in this bird as the package 'stub') is now considered
         to be composed of a number of elements, or sections, in series.
     2.  Each of these elements can have a non-zero length, thus enabling
         one to model each section as having a time delay -- i.e. as
         a transmission line
     3.  The current matrix description can now be applied to individual 
         section of the package stub, and there can be more than one [Model
         data] and [End Model Data] keyword pair per package model
         description. 

The purpose of this bird is to enable IBIS to describe the connection
between the pad and pin of a package in greater detail.  Specifically, with
this bird one will now be able to model the effect of long package 
traces and also the effects when one package trace couples with another.
The author has found that this level of detail is vital for accurately
modeling the effects of large PGA packages and/or packages that have
no ground plane and exhibit coupling between package traces.  With these
enhancement, the .pkg file should be able to accurately describe the
great majority of DIP/SOIC/PGA/BGA/PQFP packages.  It is NOT the purpose 
of this bird to describe a generalized topology suitable for describing
MCM and SIM modules.  

In addition to the enhancements required to better describe packages,
the capacitance and inductance coefficients used for the matrix data
elements are defined.  I believe that even if this bird is not accepted, 
this portion should be adopted in order to make the current matrix format 
usable. 

Changes 6/28
     Per the suggestions of Bob Ross (email on May 30) I have removed the
'Unit Length' keyword and incorporated his syntax suggestions regarding
slash delimiters and the '=' sign.

Changes 8/21
     The previous change on 6/28 included the requirement that the same
length for each coupled stub in a section be reported as the same length.
This requirement has been deemed un-feasible and is dropped.

Changes 9/20
     Dropped the requirement that the capacitance and inductance values
in the coupling matrix have to be entered as positive quantities.  Also
corrected the word 'backslash' to 'slash' thru out the document and
added the editorial comments per Dileep Divakar email.

ANY OTHER BACKGROUND INFORMATION
For a much more detailed description of Maxwell capacitances refer to 
the paper by Robert Canright entitled "Capacitance: Relationships and 
Measurements" available from the IEEE (Thanks to Bob Ward at Texas 
Instruments for supplying me with this paper).  I would also 
like to thanks Samie Samaan at Intel for his review of this bird and 
for bringing the whole issue of matrix data coefficients to my attention.