DRAFT IBIS Rev 2.0, part 5 of 5

From: Derrick Duehren <Derrick_Duehren@ccm2.jf.intel.com>
Date: Wed May 25 1994 - 01:30:32 PDT

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 -------------------------------
Received on Wed May 25 00:33:47 1994

This archive was generated by hypermail 2.1.8 : Fri Jun 03 2011 - 09:52:28 PDT