****************************************************************************** ********************* 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-info@freelists.org. A list of reported bugs will be maintained on eda.org. ****************************************************************************** PARSER VERSION NUMBER: IBISCHK V6.1.1 PLATFORM (SPARC, HP700, PC, etc.): PC OS AND VERSION: Windows 7 REPORTED BY: Curtis Clark, ANSYS DATE: January 15, 2016 DESCRIPTION OF BUG: Matrix checking done for Package Models may be incorrect for Banded Matrices that wrap. The [Capacitance Matrix] in the attached test file should generate an error for Row 5 because the entry at (3,5) itself has a magnitude greater than the diagonal entry at (5,5). Running ibischk 6.1.1, however, yields no failures: > ibischk.exe -pkg bug173.pkg IBISCHK6 V6.1.1 Checking bug173.pkg for IBIS 6.0 Compatibility... Errors : 0 File Passed *********** Results of Code Inspection and Testing: Summary: I believe this bug will only result in some off diagonal elements' values being misread as "0.0". Therefore, I believe it can only cause bad models to pass the checks, and should not cause a good model to fail them. Details: As part of the implementation of the new Package Matrix checking, a new function was created to extract individual values from a matrix. With banded matrices that wrap, this function has an off-by-one error that can cause it to generate a bad array index from the row and column indices. The off by one error occurs in a section of the code that is deciding if it should swap (row, col) indices when it is extracting a value (taking advantage of symmetry - looking in the upper half of the matrix). Because of this, it may end up in a section of the code that expects the column index to be greater than or equal to the row index when that is not true. It then computes an index into an array as (col - row), which ends up a negative number. Fortunately, that negative number is put into an unsigned type. The resulting value looks huge and the code decides that the row and column are too far apart and simply returns the value 0. Therefore, this error should only cause bad matrices to pass. The fact that it returns 0 for the matrix value whenever it encounters this error means that it should never return a bogus value with a magnitude that will cause a good model to fail the matrix checks. (note: this bug does not affect reading the values from diagonal elements). The bad index is never actually used as an index into an array, so we don't have to worry about crashes or random values. INSERT IBIS FILE DEMONSTRATING THE BUG: ==== bug173.pkg==== [IBIS Ver] 6.0 [File Name] bug173.pkg [File Rev] 1.0 [Date] Fri Jan 15 12:06:01 2016 [Source] ANSYS, Inc. [Notes] This file demonstrates an issue with the Package Model checking for Banded Matrices that wrap. The [Capacitance Matrix] should generate an error because the entry in (3,5) is itself greater in magnitude than the entry in (5,5). | [Define Package Model] Bug173 [Manufacturer] ACME Examples, Inc. [OEM] Unknown [Description] Example for ibischk BUG173 [Number Of Pins] 5 [Pin Numbers] |Pin Num Terminal Name 1 | ab:1 2 | ab:2 3 | ab:3 4 | ab:4 5 | ab:5 [Model Data] [Inductance Matrix] Full_matrix | [Row] 1 3.392799023E-009 1.065798301E-009 1.744716333E-009 7.154971881E-010 2.003031454E-009 | [Row] 2 2.591369434E-009 1.491689116E-009 1.252380165E-009 8.680607619E-010 | [Row] 3 2.986405157E-009 8.874984167E-010 1.254236909E-009 | [Row] 4 2.209122286E-009 6.108625228E-010 | [Row] 5 3.805189943E-009 | | | [Capacitance Matrix] Banded_matrix [Bandwidth] 2 | [Row] 1 2.359706E-013 -9.240235E-015 -8.670816E-014 | [Row] 2 1.960087E-013 -7.828072E-014 -7.446843E-014 | [Row] 3 6.166299E-013 -1.044168E-014 -2.338067E-013 | [Row] 4 1.395274E-013 -6.16212E-015 -1.042168E-014 | [Row] 5 1.120295E-013 -1.042168E-014 -1.042168E-014 | | | [Resistance Matrix] Banded_matrix [Bandwidth] 0 | [Row] 1 0.0005818965517 | [Row] 2 0.000474137931 | [Row] 3 0.0009280172414 | [Row] 4 0.0004202586207 | [Row] 5 0.0006357758621 | | [End Model Data] [End Package Model] [End] ****************************************************************************** ******************** BELOW FOR ADMINISTRATION AND TRACKING ******************* ****************************************************************************** BUG NUMBER: 173 SEVERITY: [FATAL, SEVERE, MODERATE, ANNOYING, ENHANCEMENT] MODERATE PRIORITY: [HIGH, MEDIUM, LOW] MEDIUM STATUS: [OPEN, CLOSED, WILL NOT FIX, NOT A BUG] CLOSED FIXED VERSION: 6.1.2 FIXED DATE: February 23, 2016 NOTES ON BUG FIX: Classified at the February 5, 2016 IBIS Teleconference meeting. The correction would probably involve a change in mtx.c, which can send. To be fixed in the next release ****************************************************************************** ******************************************************************************