****************************************************************************** ********************* IBIS GOLDEN PARSER BUG REPORT FORM ********************* ****************************************************************************** INSTRUCTIONS To report a bug in the IBIS golden parser. Please fill out the top part of the following form and send the complete form to ibis-bug@eda.org. A list of reported bugs will be maintained on eda.org. ****************************************************************************** PARSER VERSION NUMBER: IBISCHK6 V6.1.0 PLATFORM (SPARC, HP700, PC, etc.): PC OS AND VERSION: Linux 2.6.32-504.30.3.el6.x86_64 REPORTED BY: Mike LaBonte, Signal Integrity Software DATE: November 27, 2015 DESCRIPTION OF BUG: IBISCHK6 issues an error E3721 where the sum of off-diagonal package capacitance matrix values exceed the on-diagonal value in magnitude, but many package models fail this test due to numerical precision issues in model generation. For example, in the row values for pin AT02 below the sum of off-diagonal values is -2.8706518e-12, the magnitude of which exceeds the on-diagonal value 2.87065e-12: AT02 2.87065e-12 A28 -2.69835e-12 AT05 -8.22378e-14 AN06 -9.00640e-14 This happens because the e-14 values extend the off-diagonal sum two digits beyond the e-12 on-diagonal value. In fixed notation the values look like this: +0.000000000000287065 -0.000000000000269835 -0.00000000000000822378 -0.00000000000000900640 Without the "78" and "40" digits of the last two values this would pass the diagonal dominance test. IBISCHK 6.1.0 gives the E3721 error for a good number of existing package models because fixed precision exponential values are commonly used to generate the files. Some models fail the check by larger margins that can not be explained by numerical precision. Using the bug168.pkg testcase below ibischk6 version 6.1.0 issues an error: IBISCHK6 V6.1.0 Checking bug168.pkg for IBIS 4.2 Compatibility... E3721 - Package X1: The Capacitance Matrix has diagonal element 2.87e-12 at row AT02 whose magnitude is less than the sum of off diagonal elements Errors : 1 File Failed Simulators will not have a problem with these models, so IBISCHK6 should issue an ERROR only for cases where the off-diagonal sum exceeds the on-diagonal value by some tolerance. Testing reveals that a tolerance of 10 parts per million of the on-diagonal value works well, i.e., multiplying the on-diagonal value by 1.00001 before testing. The additional bug168a.pkg testcase demonstrates that a zero diagonal entry would be a pathological case, since a tolerance based on that would be zero. It may not be necessary to provide special handling for that case. ------- Additionally it would be best to increase the number of significant digits used for reporting values in the E3721 error message to at least 6 digits, so that messages will not report values that appear to be identical. ------- The suggested resolution to minimize numerical issues for [Capacitance Matrix] testing is to multiply the diagonal value by 1.0001 before testing. (This number is still subject to experimentation.) An Error message E3721 would still be issued if the off-diagonal summations exceed the multiplied diagonal value. The 1.0001 value can be stored as a named constant incase we need to change the value later. ------- The same numerical resolution issues exist for [Inductance Matrix] and [Resistance Matrix], where the test is just for diagonal dominance when compared to each off-diagonal element. Because we are doing direct element comparisons, we may not need to multiply the diagonal value by a constant. While there may be issues with the validity of this test, the proposed resolution is to make failue a Warning message instead of an Error message for [Inductance Matrix] and [Resistance Matrix] testing. ------- INSERT IBIS FILE DEMONSTRATING THE BUG: ==== bug168.pkg ==== |************************************************************************ | [IBIS ver] 4.2 [File name] bug168.pkg [File Rev] 1 | [Define Package Model] BUG168 [Manufacturer] N/A [OEM] N/A [Description] Testcase for BUG168 | [Number Of Pins] 4 | [Pin Numbers] AT02 A28 AT05 AN06 | [Model Data] | [Inductance Matrix] Sparse_matrix [Row] AT02 AT02 6.62790e-09 A28 1.02290e-12 AT05 4.83340e-10 AN06 4.17230e-10 [Row] A28 A28 2.13820e-12 AT05 1.06760e-12 AN06 1.05450e-12 [Row] AT05 AT05 7.08050e-09 [Row] AN06 AN06 5.78310e-09 | [Capacitance Matrix] Sparse_matrix [Row] AT02 AT02 2.87065e-12 A28 -2.69835e-12 AT05 -8.22378e-14 AN06 -9.00640e-14 [Row] A28 A28 3.81082e-09 AT05 -2.45649e-12 AN06 -1.75517e-12 [Row] AT05 AT05 2.69019e-12 [Row] AN06 AN06 3.13424e-12 | [End Model Data] [End Package Model] | [End] ==== bug168a.pkg ==== [IBIS Ver] 6.1 [File Name] bug168a.pkg [File Rev] 0 [Date] 0 | | THIS TEST CASE IS STILL UNDER DEVELOPEMENt | [Package Model] bug168 | [Define Package Model] bug168 [Manufacturer] somebody [OEM] somebody [Description] for testing only [Number Of Pins] 3 | [Pin Numbers] 1 2 3 | [Model Data] | [Inductance Matrix] Full_matrix [Row] 1 6E-0 6E-011 6E-011 [Row] 2 6E-011 6E-011 [Row] 3 6E-011 | [Capacitance Matrix] Full_matrix | [Row] 1 | 1.0000E-9 -1E-9 -1E-24 | Set sum tolerance diag*1e-6 or 1E-18 [Row] 2 1E-9 -1E-24 [Row] 3 0.0 | Set the minimum Sum to 1E-18 | [End Model Data] [End Package Model] [End] ****************************************************************************** ******************** BELOW FOR ADMINISTRATION AND TRACKING ******************* ****************************************************************************** BUG NUMBER: 168 SEVERITY: [FATAL, SEVERE, MODERATE, ANNOYING, ENHANCEMENT] SEVERE PRIORITY: [HIGH, MEDIUM, LOW] HIGH STATUS: [OPEN, CLOSED, WILL NOT FIX, NOT A BUG] CLOSED FIXED VERSION: 6.1.1 FIXED DATE: January 8, 2016 NOTES ON BUG FIX: Classified at the IBIS Teleconference Meeting on December 18, 2015 To be fixed in the next release of ibischk6. The proposed (revised) resoluton is documented above where a 100 ppm value is chosen rather than 10 ppm. ****************************************************************************** ******************************************************************************