ICM Issue Resolution Document  (IIRD)

IIRD ID#:        2
ISSUE TITLE:     Frequency Dependent RLGC Matrices
REQUESTOR:       Michael Mirmak, Intel Corporation
DATE SUBMITTED:  July 8, 2004
DATE REVISED:    
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 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.

              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).
|*
|*              If [Frequency] data is present for a particular matrix data set,
|*              then all other matrix data sets for that ICM Section must 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 data set, all the
|* data, 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 a 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."
|*
|* If [Frequency] is used for more than one matrix data set within an ICM Section, the same
|* frequency points must be used for each of these sets.
|*
|* For matrix data sets of type Sparse_matrix, the same row and column data points must be used
|* for all [Frequency] blocks.  For example, if an [Inductance 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 description is assumed 
|* to be frequency-invariant, or identical at all frequencies (see the matrix
|* definitions above).
|*
|* No more than 100 [Frequency] data sets may be present for any matrix.

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

****************************************************************************

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].

****************************************************************************