Subject: BIRD 28 -- enhanced package models

From: Will Hobbs <[email-masked]>
Date: Thu, 18 May 95 16:36:00 PDT

---------------------------- Forwarded with Changes ---------------------------
From: Stephen Peters at JFCCM3
Date: 5/18/95 12:38PM
To: Will Hobbs at JFCCM2
Subject: BIRD XXX -- enhanced package models
-------------------------------------------------------------------------------

Text item: 

                 Buffer Issue Resolution Document  (BIRD)

BIRD ID#:        28
ISSUE TITLE:     Enhancement To The Package Model (.pak file) Specification 
REQUESTER:       Stephen Peters
DATE SUBMITTED:  May 18, 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 keywords [Number of Sections] and [Unit Length] are 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
|
|============================================================================= 
|    Keyword: [Unit Length]
|   Required: Yes, if [Number of Sections] keyword is used
|Description: Defines the units used for the Len:, L:, C:, and R: subparameters 
|             of the [Pin Number] keyword.
|Usage Rules: Permissible arguments are 'in' (inches), 'cm' (centimeters), 
|             and 'ft' (feet).  This keyword, if used, must appear in the 
|             specification before the [Pin Numbers] keyword.
------------------------------------------------------------------------------ 
[Unit Length]  in
|

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 names 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 for 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.  These subparameters are defined as
|             follows:
|             Len:    The physical length of a package stub section.  Length 
|                     is in the units specified by the [Unit Length] keyword. 
|             L:      The inductance of a package stub section, in terms of
|                     'inductance/unit length'.  For example, if [Unit Length] 
|                     was defined as in, then L: 2.5n would be 2.5nH/in.
|             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 section's 
|                     electrical parameters are described by use of a
|                     matrix description.  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 specifed, 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 of a package stub is separated
|             by a comma.  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 a space
|             delimited by a pair of commas.  See the example below). 
|             The left most section in a package stub description is 
|             defined as section 1.
|
|             The legal subparameter combinations are
|             A)  A pair of commas separated by whitespace.  This option 
|             is used for describing a package stub that does not contain 
|             (or does not need to be described using) the same number of 
|             sections as the others.
|             B)  Len: and a single 'Matrix' subparameter.  The Len: sub-
|             parameter specifies the length of that section while the Matrix 
|             subparameter indicates that the electrical characteristics
|             of that sections are described using the matrix description 
|             ([Model Data]/[End Model Data] keyword pair).  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:, L: and C: subparameters (with an optional R:
|             subparameter).  This combination is for modeling a section as a 
|             transmission line.
|             D)  No Len: parameters and any combination of L:, R: and C: 
|             sub-parameters.  This combination is for modeling a section 
|             as lumped elements.
|
|             Line Continuation:
|             If a package stub description extends beyond the 80 character 
|             limit, end the line with a backslash character ("\") and
|             continue with the description on the next line. 
|
|             In the example below pin A1 uses a Len: of zero for the first 
|             section (describing a lumped 1.2nH inductor).  Pin A2 also
|             describes the first section as a 1.2nH inductor.  Pin A3 is 
|             an example of the comma notation for leaving a section
|             unspecified while pin A4 shows a line continuation.  All pins 
|             use the matrix subparameter for section 2.
|----------------------------------------------------------------------------- 
[Pin Number]
A1   Len:0 L:1.2n, Len:1.2 Matrix, Len:0.47 L: 8.35n C:3.34p R:0.01 
A2         L:1.2n, Len:0.7 Matrix, Len:0.47 L: 6.21n C:3.34p R:0.01 
A3   ,           , Len:1.3 Matrix,  ,
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 
| .
| .
| .
A10  Lne:0.1 1.2n, Len:1.2 Matrix, Len:0.47 L: 8.35n C:2.2p R:0.01

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
|
|=============================================================================

3. 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.  By 
convention, drop the negative sign before entering this value into the 
matrix.  Likewise, for the inductance matrix the coefficients for Lij are 
defended 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.

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.

Text item: External Message Header

The following mail header is for administrative use
and may be ignored unless there are problems.

***IF THERE ARE PROBLEMS SAVE THESE HEADERS***.

From: Stephen Peters <[email-masked]>
Date: Thu, 18 May 1995 12:38:24 -0700
Subject: BIRD XXX -- enhanced package models
To: [email-masked]
Message-Id: <[email-masked]>
Received: from localhost by xtg801.intel.com (4.1/10.0i); Thu, 18 May 95 12:38:2
5 PDT
Received: from xtg801 by ichips.intel.com (5.64+/10.0i); Thu, 18 May 95 12:38:25
 -0700
Received: from ichips.intel.com by relay.jf.intel.com with smtp
     (Smail3.1.28.1 #2) id m0sCBOw-000twVC; Thu, 18 May 95 12:38 PDT