ICM Issue Resolution Document (IIRD) IIRD ID#: 2.1 ISSUE TITLE: Frequency Dependent RLGC Matrices REQUESTOR: Michael Mirmak, Intel Corporation DATE SUBMITTED: July 8, 2004 DATE REVISED: July 22, 2004 DATE ACCEPTED BY IBIS OPEN FORUM: **************************************************************************** **************************************************************************** STATEMENT OF THE ISSUE: To improve the accuracy of interconnect modeling data using RLGC matrices, several common matrix formats exist which describe interconnect electrical data extracted at particular frequencies. To enable ICM to support this data, a new keyword, [Frequency], is proposed. **************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: Changes in IIRD2 are denoted by |*. Changes in IIRD2.1 are denoted by |**. The text of Section 8 should be changed as follows: ============================================================================= Keyword: [Resistance Matrix], [Inductance Matrix], [Conductance Matrix], [Capacitance Matrix] Required: Yes, at least one Argument: Text String (Matrix Type) Used By: [Begin ICM Section] Uses: [Row], [Bandwidth], Change the above line to: |* Uses: [Frequency], [Row], [Bandwidth], Description: Each keyword marks the beginning of its respective matrix data set and also specifies how the matrix data is formatted. Usage Rules: Following each matrix keyword, one of the following arguments is required: Diagonal_matrix, Banded_matrix, Sparse_matrix, or Full_matrix. No more than one of each matrix type is allowed per section. If model type is one of the SLM_* types, only a diagonal matrix is allowed. Change to: Usage Rules: Following each matrix keyword, one of the following arguments is required: Diagonal_matrix, Banded_matrix, Sparse_matrix, or |** Full_matrix. No more than one data set of each matrix type is allowed |** for a given matrix keyword. If the ICM_model_type used is SLM_* |** only the Diagonal_matrix type may be used in matrix section descriptions |** for that model. The [Resistance Matrix], [Inductance Matrix], [Conductance Matrix], and [Capacitance Matrix] keywords may appear multiple times in the file, however they may appear only once between the [Begin ICM Section]/[End ICM Section] keyword pair, and they must be placed after the [Derivation Method] keyword. After each of these keywords, insert the matrix data in the appropriate format. (These formats are described in detail below). Users should be aware that matrix data of value 0 represents an ideal short to reference ground and should not be associated with conductors which carry signal information (see below). The following section is added: |* If [Frequency] is omitted, the data for the matrix description is assumed |* to be frequency-invariant, or identical at all frequencies (see |* [Frequency] below). |* |** For any matrix keyword, the same row and column data points must be used for any and all |** [Frequency] blocks within that matrix keyword data set. For example, if an |** [Inductance Matrix] of type Sparse_matrix contains data for only columns 1 and |** 3 for [Row] 5 at 1e9 Hz, then blocks for all other frequencies must contain data |** for columns 1 and 3 of [Row] 5. |** |** If [Frequency] data is present under a particular matrix keyword, |** other matrix keywords in the same ICM Section need not provide data |** at the same frequency points. Arguments: Diagonal_matrix, Banded_matrix, Sparse_matrix, or Full_matrix The following section is added: |** Note that, if the [Frequency] keyword is used for a matrix keyword, all the |** data under that matrix keyword, for all frequencies, must use the same matrix type. |** For example, if data for [Resistance Matrix] is available for three [Frequency] points, |** and the [Resistance Matrix] is declared to be of type Banded_matrix, all three [Frequency] |* data sets must follow the Banded_matrix format. The following section is removed: |* Loss Matrix Description: |* |* The [ICM S-parameter] keyword introduced later provides a format |* for describing losses that vary with frequency. The following section is added: |* ============================================================================= |* Keyword: [Frequency] |* Required: No |* Argument: Numeric Value |* Used By: [Resistance Matrix], [Inductance Matrix], [Conductance Matrix], |* [Capacitance Matrix] |* Uses: [Row] |* Description: Indicates the start of a data block within a matrix where all the |* data applies for a particular given frequency |* Usage Rules: The argument to [Frequency] may be any positive number or zero |* (see number format rules in Section 3.0). Units of hertz (Hz) are assumed. |* |* Following each Matrix keyword described above, the [Frequency] keyword may be |* used to define the frequency at which the matrix data was extracted. |* |* [Frequency] may appear more than once within any matrix keyword definintion. |* However, the numeric value associated with any [Frequency] keyword may not |* be used more than once for any ICM Section's matrix data set. For example, a |* [Resistance Matrix] may not contain more than one block of data for |* "[Frequency] 1.0e9." |* |** For any matrix keyword, the same row and column data points must be used for all |** [Frequency] blocks within that matrix keyword data set. For example, if an |** [Inductance Matrix] of type Sparse_matrix contains data for only columns 1 and |** 3 for [Row] 5 at 1e9 Hz, then blocks for all other frequencies must contain data |** for columns 1 and 3 of [Row] 5. |* |** If [Frequency] is omitted, the data for that matrix keyword description is assumed |* to be frequency-invariant, or identical at all frequencies (see the matrix |* definitions above). |* |** No explicit limit is defined on the number [Frequency] data sets which may |** be present under any matrix keyword. ============================================================================= Keyword: [Row] Required: Yes Argument: Numeric Value Used By: [Resistance Matrix], [Inductance Matrix], [Conductance Matrix], [Capacitance Matrix] Change the above lines to: |* Used By: [Resistance Matrix], [Inductance Matrix], [Conductance Matrix], |* [Capacitance Matrix], [Frequency] Description: Indicates the beginning of a new row of the matrix Usage Rules: The argument must be a sequential number beginning at 1 and continuing to the last row for the matrix. 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 matrix, this data will not all fit on one line. It is allowed to break the data up with new-line characters so that the line length limit is observed. Example: Suppose the matrix has 40 conductors 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. 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. The [Row] keyword must be placed directly after the [Bandwidth] keyword. The data entries for the row defined by this keyword begin on the line below the keyword and may span multiple lines. ------------------------------------------------------------------------------ See example "Matrix Example" lower in this document. ... ----------------------------------------------------------------------------- Matrix Examples: ... |* An example of an ICM Section which uses frequency-dependent RLGC |* data is shown below. |* |* Note that Resistance does not use the [Frequency] keyword; the |* resulting data set is assumed to be frequency-invariant or identical |* at all frequencies. |* |* [Begin ICM Section] ExampleMatrix01 |* [Derivation Method] Distributed |* [Resistance Matrix] Banded_matrix |* [Bandwidth] 0 |* [Row] 1 |* 1.00000000E+01 |* [Row] 2 |* 1.50000000E+01 |* [Row] 3 |* 1.50000000E+01 |* [Row] 4 |* 1.00000000E+01 |* [Row] 5 |* 1.00000000E+01 |* [Row] 6 |* 1.50000000E+01 |* [Row] 7 |* 1.50000000E+01 |* [Row] 8 |* 1.00000000E+01 |* |* [Inductance Matrix] Full_matrix |* [Frequency] 0 |* [Row] 1 |* 3.04859000E-07 4.73185000E-08 1.34280000E-08 6.12191000E-09 |* 1.74022000E-07 7.35469000E-08 2.73201000E-08 1.33807000E-08 |* [Row] 2 |* 3.04859000E-07 4.73185000E-08 1.34280000E-08 7.35469000E-08 |* 1.74022000E-07 7.35469000E-08 2.73201000E-08 |* [Row] 3 |* 3.04859000E-07 4.73185000E-08 2.73201000E-08 7.35469000E-08 |* 1.74022000E-07 7.35469000E-08 |* [Row] 4 |* 3.04859000E-07 1.33807000E-08 2.73201000E-08 7.35469000E-08 |* 1.74022000E-07 |* [Row] 5 |* 4.70049000E-07 1.43791000E-07 5.75805000E-08 2.95088000E-08 |* [Row] 6 |* 4.70049000E-07 1.43791000E-07 5.75805000E-08 |* [Row] 7 |* 4.70049000E-07 1.43791000E-07 |* [Row] 8 |* 4.70049000E-07 |* |* [Frequency] 1.0M |* [Row] 1 |* 1.52429500E-07 2.36592500E-08 6.71400000E-09 3.06095500E-09 |* 8.70110000E-08 3.67734500E-08 1.36600500E-08 6.69035000E-09 |* [Row] 2 |* 1.52429500E-07 2.36592500E-08 6.71400000E-09 3.67734500E-08 |* 8.70110000E-08 3.67734500E-08 1.36600500E-08 |* [Row] 3 |* 1.52429500E-07 2.36592500E-08 1.36600500E-08 3.67734500E-08 |* 8.70110000E-08 3.67734500E-08 |* [Row] 4 |* 1.52429500E-07 6.69035000E-09 1.36600500E-08 3.67734500E-08 |* 8.70110000E-08 |* [Row] 5 |* 2.35024500E-07 7.18955000E-08 2.87902500E-08 1.47544000E-08 |* [Row] 6 |* 2.35024500E-07 7.18955000E-08 2.87902500E-08 |* [Row] 7 |* 2.35024500E-07 7.18955000E-08 |* [Row] 8 |* 2.35024500E-07 |* |* [Frequency] 1.00000000E+09 |* [Row] 1 |* 7.62147500E-08 1.18296250E-08 3.35700000E-09 1.53047750E-09 |* 4.35055000E-08 1.83867250E-08 6.83002500E-09 3.34517500E-09 |* [Row] 2 |* 7.62147500E-08 1.18296250E-08 3.35700000E-09 1.83867250E-08 |* 4.35055000E-08 1.83867250E-08 6.83002500E-09 |* [Row] 3 |* 7.62147500E-08 1.18296250E-08 6.83002500E-09 1.83867250E-08 |* 4.35055000E-08 1.83867250E-08 |* [Row] 4 |* 7.62147500E-08 3.34517500E-09 6.83002500E-09 1.83867250E-08 |* 4.35055000E-08 |* [Row] 5 |* 1.17512250E-07 3.59477500E-08 1.43951250E-08 7.37720000E-09 |* [Row] 6 |* 1.17512250E-07 3.59477500E-08 1.43951250E-08 |* [Row] 7 |* 1.17512250E-07 3.59477500E-08 |* [Row] 8 |* 1.17512250E-07 |* |* The capacitance matrix has sparse coupling: |* |* [Capacitance Matrix] Sparse_matrix |* [Frequency] 0 |* [Row] 1 |* 1 2.48227000E-10 |* 2 -1.56651000E-11 |* 5 -9.54158000E-11 |* 6 -7.15684000E-12 |* [Row] 2 |* 2 2.51798000E-10 |* 3 -1.56552000E-11 |* 5 -6.85199000E-12 |* 6 -9.04860000E-11 |* 7 -6.82003000E-12 |* [Row] 3 |* 3 2.51798000E-10 |* 4 -1.56651000E-11 |* 6 -6.82003000E-12 |* 7 -9.04860000E-11 |* 8 -6.85199000E-12 |* [Row] 4 |* 4 2.48227000E-10 |* 7 -7.15684000E-12 |* 8 -9.54158000E-11 |* [Row] 5 |* 5 1.73542000E-10 |* 6 -3.38247000E-11 |* [Row] 6 |* 6 1.86833000E-10 |* 7 -3.27226000E-11 |* [Row] 7 |* 7 1.86833000E-10 |* 8 -3.38247000E-11 |* [Row] 8 |* 8 1.73542000E-10 |* |* [Frequency] 1.0M |* [Row] 1 |* 1 6.20567500E-11 |* 2 -3.91627500E-12 |* 5 -2.38539500E-11 |* 6 -1.78921000E-12 |* [Row] 2 |* 2 6.29495000E-11 |* 3 -3.91380000E-12 |* 5 -1.71299750E-12 |* 6 -2.26215000E-11 |* 7 -1.70500750E-12 |* [Row] 3 |* 3 6.29495000E-11 |* 4 -3.91627500E-12 |* 6 -1.70500750E-12 |* 7 -2.26215000E-11 |* 8 -1.71299750E-12 |* [Row] 4 |* 4 6.20567500E-11 |* 7 -1.78921000E-12 |* 8 -2.38539500E-11 |* [Row] 5 |* 5 4.33855000E-11 |* 6 -8.45617500E-12 |* [Row] 6 |* 6 4.67082500E-11 |* 7 -8.18065000E-12 |* [Row] 7 |* 7 4.67082500E-11 |* 8 -8.45617500E-12 |* [Row] 8 |* 8 4.33855000E-11 |* |* [Frequency] 1.00000000E+09 |* [Row] 1 |* 1 3.10283750E-11 |* 2 -1.95813750E-12 |* 5 -1.19269750E-11 |* 6 -8.94605000E-13 |* [Row] 2 |* 2 3.14747500E-11 |* 3 -1.95690000E-12 |* 5 -8.56498750E-13 |* 6 -1.13107500E-11 |* 7 -8.52503750E-13 |* [Row] 3 |* 3 3.14747500E-11 |* 4 -1.95813750E-12 |* 6 -8.52503750E-13 |* 7 -1.13107500E-11 |* 8 -8.56498750E-13 |* [Row] 4 |* 4 3.10283750E-11 |* 7 -8.94605000E-13 |* 8 -1.19269750E-11 |* [Row] 5 |* 5 2.16927500E-11 |* 6 -4.22808750E-12 |* [Row] 6 |* 6 2.33541250E-11 |* 7 -4.09032500E-12 |* [Row] 7 |* 7 2.33541250E-11 |* 8 -4.22808750E-12 |* [Row] 8 |* 8 2.16927500E-11 |* [End ICM Section] ExampleMatrix01 Further, Section 4 is changed as follows: ============================================================================= Section 4 K E Y W O R D T R E E D I A G R A M ============================================================================= /-- Start of File | ------------- | |--/--[Begin Header] | | |--[ICM Ver] | | |--[File Name] | | |--[File Rev] | | |--[Date] | | |--[Source] | | |--[Notes] | | |--[Disclaimer] | | |--[Copyright] | | |--[Support] | | |--[Redistribution] | | |--[Redistribution Text] | \--[End Header] | |--[Comment Char]* | |--/--[Begin ICM Family] | (see Chapter 7) | | |--[Manufacturer] | | |--[ICM Family Description] | | |--[ICM Model List] | | | |--/--[Begin ICM Model] | | | | ICM_model_type | | | | SGR | | | | Ref_impedance | | | |--[ICM Model Description] | | | |--[Tree Path Description] | | | | Model_pinmap | | | | Fork, Endfork | | | | Section | | | |--[Nodal Path Description] | | | | Model_nodemap | | | | N_section | | | |--[ICM Swath Parameters] | (optional, for swaths) | | | | Left_edge | | | | Right_edge | | | | Top_edge | | | | Bottom_edge | | | |--[ICM Swath Pin Numbers] | (optional, for swaths) | | \--[End ICM Model] | | | |--[ICM Pin Map] | Pins to Physical | | Pin_order | | Num_of_columns | | Num_of_rows | | Pin_list | |--[ICM Node Map] | Nodes to Physical | \--[End ICM Family] | | |--/--[Begin ICM Section] | (see Chapter 8) | | |--[Derivation Method] | | |--[Resistance Matrix] | | | /-- [Bandwidth] |*| | | |-- [Frequency] | | | \-- [Row] | | |--[Inductance Matrix] | | | /-- [Bandwidth] |*| | | |-- [Frequency] | | | \-- [Row] | | |--[Conductance Matrix] | | | /-- [Bandwidth] |*| | | |-- [Frequency] | | | \-- [Row] | | |--[Capacitance Matrix] | | | /-- [Bandwidth] |*| | | |-- [Frequency] | | | \-- [Row] | | | | | |--[ICM S-parameter] | | | File_name | | | Port_assignment | | | | \--[End ICM Section] | | \--[End] **************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION: The intent of the [Frequency] keyword is to permit variations in RLGC data with frequency to be described, while also permitting minimal descriptions of frequency-invariant data. Therefore, [Frequency] is entirely optional. In the absence of [Frequency], RLGC matrix data is assumed to be invariant with frequency. This also permits backward compatibility with existing ICM 1.0 model data. Data interpolation is left entirely to the tools using the data. Recommendations for optimal data extraction are assumed to be included as part of an ICM cookbook or documentation provided with individual tools. IIRD2.1 clarifies that not all matrices for a particular ICM Section must use [Frequency]. IIRD2.1 also removes the 100 [Frequency] section restriction and clarifies an error in the usage rules of matrices. **************************************************************************** ANY OTHER BACKGROUND INFORMATION: Note that the hierarchical position of [Row] becomes ambiguous with the introduction of [Frequency]. [Row] can either be directly "under" the matrix keywords or "under" [Frequency]. ****************************************************************************