Subject: DRAFT IBIS Rev 2.0, part 5 of 5

From: Derrick Duehren <[email-masked]>
Date: Wed, 25 May 94 00:30:32 PST

Text item: Text_1

$|==============================================================================
$|     Keyword:  [End Model Data]
$|    Required:  Yes
$| Description:  Indicates the end of the formatted model data.
$| Other Notes:  In between the [Model Data] and [End Model Data] keywords is
$|               the package model data itself.  The data is a set of 3
$|               matrices: the resistance (R), inductance (L), and capacitance
$|               (C) matrices.  Each matrix can be formatted differently (see
$|               below).  Use one of the matrix keywords below to mark the
$|               beginning of each new matrix.
$|------------------------------------------------------------------------------
$[End Model Data]
$|
$|==============================================================================
$|    Keywords:  [Resistance Matrix], [Inductance Matrix], [Capacitance Matrix]
$|    Required:  [Resistance Matrix] is optional.  If it's not present, its
$|               entries are assumed to be zero.  [Inductance Matrix] and
$|               [Capacitance Matrix] are required.
$| Description:  These keywords mark the beginning of a matrix, and
$|               specify how the matrix data is formatted.
$| Usage Rules:  There are 3 choices for the Format_Keyword:
$|               Banded Matrix, Sparse Matrix, and Full Matrix.
$|
$|               After each of these keywords, the matrix data follows in the
$|               appropriate format.
$|
$|               These formats are described in detail below.
$|------------------------------------------------------------------------------
$[Resistance Matrix]     Format_Keyword
$[Inductance Matrix]     Format_Keyword
$[Capacitance Matrix]    Format_Keyword
$|
$|==============================================================================
$| For each [Resistance Matrix], [Inductance Matrix], or [Capacitance
$| Matrix] a different format can be used for the data.  The choice of
$| formats is provided to satisfy different simulation accuracy and speed
$| requirements.  Also, there are many packages in which the resistance
$| matrix can have no coupling terms at all.  In this case, the most
$| concise format (Banded_Matrix) can be used.
$|
$| One common aspect of all the different formats is that they exploit
$| the symmetry of the matrices they describe.  This means that the
$| entries below the main diagonal of the matrix are identical to the
$| corresponding entries above the main diagonal.  Therefore, only
$| roughly one-half of the matrix needs to be described.  By convention,
$| the main diagonal and the UPPER half of the matrix are provided.
$|
$| In the following text, we use the notation [I, J] to refer to the entry in
$| row I and column J of the matrix.  Note that I and J are allowed to be
$| alphanumeric strings as well as integers.  An ordering of these
$| strings has been defined earlier in the [Pin Names] section.  The following
$| text sometimes refers to "Row 1", which means the row corresponding to the
$| first pin.
$|
$| Also note that the numeric entries of the RLC matrices are standard IBIS
$| floating point numbers.  As such, it is permissible to use metrix "suffix"
$| notation.  Thus, an entry of the C matrix could be given as "1.23e-12" or as
$| "1.23p" or "1.23pF".
$|
$| Banded_Matrix.
$|
$| A Banded_Matrix is one whose entries are guaranteed to be zero if they
$| are farther away from the main diagonal than a certain distance, known
$| as the "bandwidth."  Again let the matrix size be N, and let the bandwidth
$| be B.  An entry [I,J] of the matrix is zero if:
$|
$|        | I - J | > B
$|
$| where |.| denotes the absolute value.
$|
$|The bandwidth for a Banded_Matrix must be specified using the [Bandwidth]
$|keyword:
$|
$|==============================================================================
$|     Keyword:  [Bandwidth]
$|    Required:  Yes (for banded matrices only)
$| Description:  Indicates the bandwidth of the matrix.  The BW field below
$|               must be a nonnegative integer.  This keyword occurs after the
$|               [Resistance Matrix], etc. keyword, and BEFORE the matrix data
$|               is given.
$| Usage Rules:
$|------------------------------------------------------------------------------
$[Bandwidth]     10
$|
$|==============================================================================
$| The banded matrix is specified one row at a time, starting with row 1 and
$| working up to higher rows.  Each row is marked with the [Row] keyword, as
$| above.  As before, symmetry is exploited: entries below the main diagonal are
$| never given.
$|
$| The first row only needs to specify the entries [1,1] through [1,1+B] since
$| any other entries are guaranteed to be zero.  The second row will need to
$| specify the entries [2,2] through [2, 2+B], and so on.  In general, for row M
$| the entries [M,M] through [M,M+B] are given.
$|
$| Unlike the Full_Matrix, each successive row will typically have the same
$| number of entries, except for the last few rows.  When M + B finally exceeds
$| the size of the matrix N, then the number of entries in each row starts to
$| decrease; the last row (row N) has only 1 entry.
$|
$| As in the Full_Matrix (below), if all the entries for a particular row does
$| not fit into a single 80-character line, the entries can be broken across
$| several lines.
$|
$| It is possible to use a bandwidth of 0 to specify a diagonal matrix (a matrix
$| with no coupling terms.)  This is sometimes useful for resistance matrices.
$|
$| Full_Matrix
$|
$| When the Full_Matrix format is used, the couplings between every pair of
$| elements is specified explicitly.  Assume that the matrix has N rows and N
$| columns.  The Full_Matrix is specified one row at a time, starting with Row 1
$| and continuing down to Row N.
$|
$| Each new row is identified with the Row keyword.
$|
$|==============================================================================
$|     Keyword:  [Row]
$|    Required:  Yes
$| Description:  Indicate the beginning of a new row of the matrix.  The
$|               Row_Number field must be a pin name,
$| Usage Rules:
$|------------------------------------------------------------------------------
$[Row]           3
$|
$|==============================================================================
$| Following a [Row] keyword is a block of numbers that represent the
$| entries for that row.  Suppose that the current row is number M.  Then
$| the first number listed is the diagonal entry, [M,M].  Following this
$| number are the entries of the upper half of the matrix that belong to row M:
$| [M, M+1], [M, M+2], ... up to [M,N].
$|
$| For even a modest-sized package, this data will not all fit on one line.
$| Since each line of an IBIS file must be 80 characters long or less, it is
$| permissible to break the data up with new lines so that this limit is
$| observed.
$|
$| An example: suppose the package has 40 pins and that we are currently
$| working on Row 19.  There is 1 diagonal entry, plus 40 - 19 = 21 entries in
$| the upper half of the matrix to be specified, for 22 entries total.  The data
$| might be formatted as follows:
$|
$[Row]   19
$5.67e-9  1.1e-9  0.8e-9  0.6e-9  0.4e-9  0.2e-9   0.1e-9   0.09e-9
$8e-10    7e-10   6e-10   5e-10   4e-10   3e-10    2e-10    1e-10
$9e-11    8e-11   7e-11   6e-11   5e-11   4e-11
$|
$| In the above example, the entry 5.67e-9 is on the diagonal of row 19.
$|
$| Observe that Row 1 always has the most entries, and that each successive row
$| has one fewer entry than the last; the last row always has just a single
$| entry.
$|
$| Sparse_Matrix
$|
$| A sparse matrix is expected to consist mostly of zero-valued entries, except
$| for a few nonzeros.  Unlike the Banded_Matrix, there is no restriction on
$| where the nonzero entries can occur.  This feature is useful in certain
$| situations, such as for Pin Grid Arrays (PGA's.)
$|
$| As usual, symmetry can be exploited to reduce the amount of data by
$| eliminating from the matrix any entries below the main diagonal.
$|
$| An N x N Sparse_Matrix is specified one row at a time, starting with
$| row 1 and continuing down to row N.  Each new row is marked with [Row]
$| keyword, as in the other matrix formats.
$|
$| Data for the entries of a row is given in a slightly different format,
$| however.  For the entry [I, J] of a row, it is necessary to explicitly
$| list the name of pin J before the value of the entry is given.  This
$| specification serves to indicate to the parser where the entry is put into
$| the matrix.
$|
$| The proper location is not otherwise obvious because of the lack of
$| restrictions on where nonzeros can occur.  Each (Index, Value) pair is
$| listed upon a separate line.  An example follows.  Suppose that row 10
$| has nonzero entries [10,10], [10,11], [10,15], and [10,25].  The
$| following row data would be provided:
$|
$[Row]   10
$| Index         Value
$10              5.7e-9
$11              1.1e-9
$15              1.1e-9
$25              1.1e-9
$|
$| Please note that each of the column indices listed for any row must be
$| greater than or equal to the row index, because they always come from
$| the upper half of the matrix.  When alphanumeric pin names are used,
$| special care must be taken to ensure that the ordering defined in the
$| [Pin Names] section is observed.
$|
$| Also, please note that it is again necessarily the case that the N'th
$| row of an N x N matrix has just a single entry (the diagonal entry.)
$|
$| An Example
$|
$| The following is an example of a package model file following the
$| above specifications.  For the sake of brevity, an 8-pin package has
$| been described.  For purposes of illustration, each of the matrices is
$| specified using a different format.
$|
$|==============================================================================
$|
$[IBIS Ver]      2.0
$[File Name]     example.pkg
$[File Rev]      0.1
$[Date]          April, 17 1994
$[Source]        fervid imaginings
$[Notes]         Example of couplings in packaging
$[Disclaimer]    The models given below may not represent any physically
$                realizable 8-pin package.  They are provided solely for
$                the purpose of illustrating the .pkg file format.
$                Read at your own risk.  See your dentist regularly.
$|
$|==============================================================================
$|
$[Define Package Model]  Bozo-SMT-cer-8-pin-pkgs
$[Manufacturer]          Bozonics Semiconductors Ltd.
$[OEM]                   Pkgs_R_Us
$[Description]           8-Pin ceramic SMT package
$[Number of Pins]        8
$|
$[Pin Names]
$1
$2
$3
$4
$5
$6
$7
$8
$|
$[Model Data]
$|
$| The resistance matrix for this package has no coupling
$|
$[Resistance Matrix]     Banded_Matrix
$[Bandwidth]             0
$[Row]   1
$10.0
$[Row]   2
$15.0
$[Row]   3
$15.0
$[Row]   4
$10.0
$[Row]   5
$10.0
$[Row]   6
$15.0
$[Row]   7
$15.0
$[Row]   8
$10.0
$|
$| The inductance matrix has loads of coupling
$|
$[Inductance Matrix]     Full_Matrix
$[Row]   1
$3.04859e-07      4.73185e-08      1.3428e-08     6.12191e-09
$1.74022e-07      7.35469e-08     2.73201e-08     1.33807e-08
$[Row]   2
$3.04859e-07      4.73185e-08      1.3428e-08     7.35469e-08
$1.74022e-07      7.35469e-08     2.73201e-08
$[Row]   3
$3.04859e-07      4.73185e-08     2.73201e-08     7.35469e-08
$1.74022e-07      7.35469e-08
$[Row]   4
$3.04859e-07      1.33807e-08     2.73201e-08     7.35469e-08
$1.74022e-07
$[Row]   5
$4.70049e-07      1.43791e-07     5.75805e-08     2.95088e-08
$[Row]   6
$4.70049e-07      1.43791e-07     5.75805e-08
$[Row]   7
$4.70049e-07      1.43791e-07
$[Row]   8
$4.70049e-07
$|
$| The capacitance matrix has sparse coupling
$|
$[Capacitance Matrix]    Sparse_Matrix
$[Row]   1
$1       2.48227e-10
$2       -1.56651e-11
$5       -9.54158e-11
$6       -7.15684e-12
$[Row]   2
$2       2.51798e-10
$3       -1.56552e-11
$5       -6.85199e-12
$6        -9.0486e-11
$7       -6.82003e-12
$[Row]   3
$3       2.51798e-10
$4       -1.56651e-11
$6       -6.82003e-12
$7        -9.0486e-11
$8       -6.85199e-12
$[Row]   4
$4       2.48227e-10
$7       -7.15684e-12
$8       -9.54158e-11
$[Row]   5
$5       1.73542e-10
$6       -3.38247e-11
$[Row]   6
$6       1.86833e-10
$7       -3.27226e-11
$[Row]   7
$7       1.86833e-10
$8       -3.38247e-11
$[Row]   8
$8       1.73542e-10
$|
$|  All done!
$|
$[End Model Data]
$[End]
$|==============================================================================
------------------------------ end of Rev2_0.txt -------------------------------