Subject: IBISCHK2 TESTMATRIX.7 AND SAMPLE

From: [email-masked] ( Bob Ross)
Date: Thu, 6 Jul 95 17:47 PDT

Hello Fellow IBISans, Paul and Ron:

I checked IBISCHK2, version 7 and found the following has been fixed:  The
crash problems that I reported previously all seem to have been fixed both
for DOS and UNIX systems.  The "Sparse_matrix" choices now accepts
alpha_numeric indicies properly.

As a result, IBISCHK2 now accepts correctly formatted Version 2.1 files,
or gracefully reports an error.  As part of the expanded project, the
following items are now added to the list.  A revised pkg1.ibs at the
end contains tests for these items.

(1)  The "Banded_matrix" works correctly as defined in IBIS Version 2.1. 
However, BIRD29.1 and pending BIRD29.2 gave an additional format option
which now needs to be implemented.

(2)  In the Sparse_matrix test, there are some details are given or implied
in the IBIS Version 2.1 that should be checked:

(a)  The Specification states that the [Row] entries have to be ordered
according to the [Pin Numbers] list.  This check is already done for
Banded_matrix and Full_matrix specifications and the same check should be
done for Sparse_matrix formats.  This test then will trap repeated 
rows, missing rows, and out of order rows.  [Row] entries must exist 
for all [Pin Numbers], even for Sparse_matrix formats.

(b)  The indicies for each row are constrained by the Specification to
be equal or "larger" than the row number, i.e., the upper triangle 
indicies.  This should be checked.  You already issue an error if they
are repeated.  The specification does not state that the indicies should
follow any order.  However, checking that they exist as one of the 
upper-triangle entries and also that they are not repeated will be sufficient.

(c)  One final constraint implied, but not specifically stated is that
each [Row] must contain a self coupled index and entry.  It is only stated
that the last [Row] must contain only one entry, and this implies that all
the rows must contain the self coupled entry.  So the final check is that
there exist an index equal to the [Row] number.  I cannot think of any
case where the self coupled entry would not exist based on the definitions
of the Matrix entries.

(3)  Finally, an additional test on each [Component]'s [Pin] list is needed
if it has a [Package Model] keyword.  The [Define Package Model] section
contains a [Pin Numbers] list that must match the entries of the [Pin]
list both in content and quantity.  The order can be different.  This
added comparison test should be done for each [Component] even if they
refer to the same [Package Model] because the order and content of
each [Component] [Pin] list can differ.

At this point the IBISCHK2 works very well, but these additional checks 
complete the first order Specification checking of the [Define Package
Model] section and its relationship to the [Pin] keyword.

Great Job Ron and Paul!

Bob Ross
Interconnectix, Inc.

                A TEST MATRIX FOR IBIS VERSION 2g (Beta 7)

DATE:  10/31/94, 12/2/94, 1/26/95, 3/4/95, 3/8/95 5/25/95 7/6/95

SPECIFICATION TESTED                   PASS    Comments/who tested
--------------------------------------+-----+-----------------------------+
Test that the parser only             |     |                             |
accepts 1.0, 1.1, 2.0, 2.1 as         |     |                             |
valid arguments to the [IBIS Ver]     | yes | Stephen Peters              |
keyword.                              |     |                             |
                                      |     |                             |
Tab character warning                 | yes | Bob Ross                    |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Scaling Factors:                      |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
"T", "G" and "f" as valid scaling     | yes | No indication either way    |
factors.                              |     | Bob Ross - this is proper   |
                                      |     | operation                   |
Test that the parser does not         |     |                             |
recognize "t", "g" and "F" as         | yes | No indication either way    |
Valid scaling factors.                |     | Bob Ross - proper operation |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Keywords rules:                       |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the [GND clamp] and [PWR clamp]       | yes |  Stephen Peters             |
keywords without the underscore.      |     |                             |
Test Underscore rule for 3-word       | yes |  Bob Ross                   |
Keyoreds - all 4 cases.               |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if a keyword does not begin     | yes |  Stephen Peters             |
in column 1.                          |     |                             |
                                      |     |                             |
Test case insensitivity of all        |     |                             |
keywords, reserved words and          | yes | Pin mapping keyword does not|
sub-parameters                        |     | recognize "power" and "gnd" |
                                      |     | Bob Ross - OK, should be    |
                                      |     | "pulldown_ref", "pullup_ref,|
                                      |     | "gnd_clamp_ref", and        |
                                      |     | "power_clamp_ref"           |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Comments and Notes:                   |     |                             |
                                      |     |                             |
Test that the parser does not         |     |                             |
accept "+" and "-" as valid           | yes |  Stephen Peters             |
comment characters.                   |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Stephen Peters             |
the [Copyright] keyword.              |     |                             |
                                      |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Component keyword related:            |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if the [Component] keyword      | yes |   Stephen Peters            |
has no component name after it.       |     |                             |
                                      |     |                             |
Test that the parser issues a warning |     |                             |
if the component name contains blanks | yes |   Stephen Peters            |
                                      |     |                             |
Test the component name length        |     |                             |
rules:                                |     |                             |
parser accepts name < 40 characters   | yes |   Stephen Peters            |
parser accepts name = 40 characters   | yes |        "                    |
parser fails if name > 40 characters  | yes |        "                    |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if the [Manufacture] keyword    | yes |   Stephen Peters            |
has no Manufactures name after it.    |     |                             |
                                      |     |                             |
Test the Manufactures name length     |     |                             |
rules:                                |     |                             |
parser accepts name < 40 characters   | yes |    Stephen Peters           |
parser accepts name = 40 characters   | yes |    Stephen Peters           |
parser fails if name > 40 characters  | yes |    Stephen Peters           |
                                      |     |                             |
Test that an .ibs file can contain    | yes |    Bob Ross                 |
more than one [Component] keyword     |     |                             |
and component description.            |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Pin keyword related:                  |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |   Stephen Peters            |
the [Pin] keyword.                    |     |                             |
                                      |     |                             |
Test that the parser issues a         |     |                             |
error when every model_name does      | yes |   Bob Ross                  |
not have a corresponding model        |     |   (I don't see the problem) |
defined.                              |     |                             |
                                      |     |                             |
Test the "3 column or 6 column"       |     |                             |
rule.                                 | yes |   Stephen Peters            |
                                      |     |                             |
Test that the parser issues an error  |     |                             |
when non-numeric data is in the pin   | yes |   Stephen Peters            |
data columns                          |     |                             |
                                      |     |                             |
Test that [Pin] entries agree with    | NO  |  NEW TEST                   |
[Pin Numbers] entries if the [Package |     |                             |
Model] keyword is used.               |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Package Model related:                |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Stephen Peters             |
the [Package Model] keyword.          |     |                             |
                                      |     |                             |
Test the package model name length    | yes |  Bob Ross                   |
rules                                 |     |  Fixed:                     |
parser accepts name < 40 characters   | yes | Name is taken as a DOS file |
parser accepts name = 40 characters   | yes | name and not as argument to |
parser fails if name > 40 characters  | yes | the [Define Package Model]  |
                                      |     | keyword                     |
Verify that the parser issues an      |     |                             |
error if it cannot find:              |     |                             |
                                      |     |                             |
1. A [Define Package Model] keyword   |     |                             |
that has the same argument as the     | yes |  Bob Ross                   |
[Package Model] keyword or            |     |                             |
                                      |     |                             |
2. An external .pkg file that has     | yes |  Bob Ross                   |
a [Define Package Model] keyword      |     |                             |
with  has the same argument as the    |     |                             |
[Package Model] keyword.              |     |                             |
                                      |     |                             |
3. Test that the parser recognizes    |     |                             |
all keywords in the package model     |     |                             |
description and operation below:      |     |                             |
   (1) Error if Missing               |     |                             |
   (2) Error if Duplicate             |     |                             |
   (3) Error if Wrong Argument        |     |                             |
[Define Package Model]       1,2,3    | yes |  Bob Ross                   |
[Manufacturer]               1,2,3    | yes |                             |
[OEM]                        1,2,3    | yes |                             |
[Description]                1,2,3    | yes |                             |
[Number of Pins]             1,2,3    | yes |  fixed                      |
[Pin Numbers]                1,2,3    | yes |                             |
[Model Data]                 1,2      | yes |                             |
[Resistance Matrix]          2,3      | yes |                             |
[Inductance Matrix]          1,2,3    | yes |                             |
[Capacitance Matrix]         1,2,3    | yes |                             |
[Bandwidth]                  1,2,3    | yes |  fixed                      |
[Row]                  1,2,3-fails    | NO  |  (problems below)           |
[End Model Data]             1,2      | yes |  Bob Ross                   |
[End Package Data]           1,2      | yes |      "                      |
                                      |     |                             |
                                      |     |                             |
4. Full_matrix Tests                  |     |  Bob Ross                   |
[Bandwidth] error test                | yes |                             |
[Row] number entry (match pin)        | yes | fixed                       |
[Row] number entry (repeated)         | yes | fixed                       |
[Row] number entry (all rows entered) | yes | fixed                       |
[Row] number entry (ascending order)  | yes |                             |
[Row] format (upper triange matrix)   | yes | fixed                       |
[Row] format (excessive data)         | yes |                             |
[Row] format (missing data)           | yes | fixed                       |
                                      |     |                             |
5. Banded_matrix Tests                |     |  Bob Ross                   |
[Bandwidth] req'd test                | yes |  fixed                      |
[Bandwidth] argument req'd            | yes |                             |
[Bandwidth] argument value            | yes |                             |
[Row] number entry (match pin)        | yes |  fixed                      |
[Row] number entry (repeated)         | yes |  fixed                      |
[Row] number entry (all rows entered) | yes |                             |
[Row] number entry (ascending order)  | yes |                             |
[Row] format (excessive data)         | yes |                             |
[Row] format (missing data)           | yes |  fixed                      |
[Row] format non-circular coupling    | yes |                             |
[Row] format circular coupling (cc)   | NO  |  BIRD29.1                   |
[Row] format bandwidth limits (cc)    | NO  |  pending BIRD29.2           |
                                      |     |                             |
6. Sparse_matrix Tests                |     |  Bob Ross                   |
[Bandwidth] error test                | yes |                             |
[Row] number entry (match pin)        | yes |  fixed                      |
[Row] number entry (repeated)         | NO  |  STILL PROBLEM              |
[Row] number entry (all rows entered) | NO  |  NEW ITEM                   |
[Row] number entry (ascending order)  | NO  |  NEW ITEM                   |
[Row] index match                     | yes |                             |
[Row] index upper-triangle            | NO  |  NEW ITEM                   |
[Row] index repeated                  | yes |                             |
[Row] index (alpha string)            | yes |  Fixed                      |
[Row] format (excessive data)         | yes |  fixed                      |
[Row] format (missing data)           | yes |  fixed                      |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Pin Mapping keyword related:          |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Stephen Peters             |
the [Pin Mapping] keyword.            |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if every pin listed in the      | yes |  Bob Ross - fixed           |
[Pin] keyword does not have an        |     |                             |
entry in the [Pin Mapping] table      |     |                             |
                                      |     |                             |
Test the "3 column or 5 column"       | yes |  Stephen Peters             |
rule.                                 |     |                             |
                                      |     |                             |
Test that NC is a valid entry         |     |                             |
in a column.                          | yes |  Stephen Peters             |
                                      |     |                             |
Test that each unique entry label     |     |                             |
must connect to at least one pin      |     |                             |
whose model name is POWER or GND      | yes |  Stephen Peters             |
                                      |     |                             |
Test that NA is NOT a valid           |     |                             |
column entry                          | yes |  Bob Ross                   |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Diff Pin keyword related:             |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Bob Ross                   |
the [Diff Pin] keyword.               |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Bob Ross                   |
the 5 associated sub-parameters       |     |                             |
                                      |     |                             |
Test the "4 column or 6 column"       | yes |  Bob Ross                   |
rule.                                 |     |                             |
                                      |     |                             |
Test that NC is NOT a valid           | yes |  Bob Ross                   |
column entry.                         |     |                             |
                                      |     |                             |
Test that NA is a valid column        | yes |  Bob Ross                   |
entry.                                |     |                             |
                                      |     |                             |
Reports error for duplicate pin       | yes |  Bob Ross                   |
numbers.                              |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
[Model] keyword:                      |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Bob Ross                   |
the [Model] keyword.                  |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
each Model_type:                      |     |                             |
Input                                 | yes |   Bob Ross                  |
Output                                | yes |                             |
I/O                                   | yes |                             |
3-state                               | yes |                             |
Open_drain                            | yes |                             |
I/O_open_drain                        | yes |                             |
Open_sink                             | yes |                             |
I/O_open_sink                         | yes |                             |
Open_source                           | yes |                             |
I/O_open_source                       | yes |                             |
Input_ECL                             | yes |                             |
Output_ECL                            | yes |                             |
I/O_ECL                               | yes |                             |
Terminator                            | yes |                             |
                                      |     |                             |
Test that the parser issues           |     |                             |
a warning if an input type model      | yes |  Stephen Peters             |
does not have Vinh or Vinl defined.   |     |                             |
For All I/O_* cases.                  | yes |  Bob Ross                   |
                                      |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if the Model_type or C_comp     | yes |  Stephen Peters             |
sub-parameters are missing.           |     |                             |
                                      |     |                             |
Test that the parser accepts a        |     |                             |
[Model] description with only the     |     |                             |
Model_type and C_comp sub-params      | yes |  Stephen Peters             |
defined.                              |     |                             |
                                      |     |                             |
Test that the parser allows NA in     |     |                             |
the min and max columns only of the   | yes |  Stephen Peters             |
C_Comp sub-parameter.                 |     |                             |
                                      |     |                             |
Test that the parser allows only      |     |                             |
Non-inverting and Inverting as        | yes |  Stephen Peters             |
choices for the Polarity sub-param    |     |                             |
                                      |     |                             |
Test that the parser allows only      |     |                             |
Active-High and Active-Low as         | yes |  Stephen Peters             |
choices for the Enable sub-param      |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the Vmeas, Cref, Rref and Vref        | yes |  Stephen Peters             |
sub-parameters.                       |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Temperature keyword related:          |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Stephen Peters             |
the [Temperature Range] keyword       |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Power supply rail related:            |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the supply rail keywords              |     |                             |
[Voltage Range]                       | yes |   Stephen Peters            |
[Pullup Reference]                    |  "  |                             |
[Pulldown Reference]                  |  "  |                             |
[POWER Clamp Reference]               |  "  |                             |
[GND Clamp Reference]                 |  "  |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if the [Voltage Range]          |     |                             |
keyword is absent and all four of     |     |                             |
the other supply rail keywords are    | yes |  Stephen Peters             |
NOT present.                          |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
I/V table related:                    |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the [Pullup], [Pulldown], [GND        | yes |  Stephen Peters             |
Clamp] and [Power Clamp] keywords.    |     |                             |
                                      |     |                             |
Test that the parser issues an        | yes |  Bob Ross                   |
error if all three columns are        |     |                             |
not included                          |     |                             |
                                      |     |                             |
Test that NA is accepted in the       | yes |  Bob Ross                   |
min and max columns.                  |     |                             |
                                      |     |                             |
Test that the parser issues an        | yes |  Bob Ross                   |
error if a column contains over       |     |                             |
100 points.                           |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if a table contains less        | yes |  Stephen Peters             |
than two points.                      |     |                             |
                                      |     |                             |
Test that the parser issues a         | yes |  Bob Ross                   |
warning if non-monotonic data         |     |                             |
is found.                             |     |                             |
Test for One Warning per Column       | yes |  Bob Ross                   |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Terminator related:                   |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Bob Ross                   |
the [Rgnd], [Rpower], [Rac] and       |     |                             |
[Cac] keywords.                       |     |                             |
                                      |     |                             |
Test if [Rac], then [Cac] req'd.      | yes |  Bob Ross                   |
                                      |     |                             |
Test if [Cac], then [Rac] req'd.      | yes |  Bob Ross                   |
                                      |     |                             |
Test if parser issues an error with   |     |                             |
above keywords AND Model_type is NOT  | yes |  Bob Ross                   |
Terminator.                           |     |                             |
                                      |     |                             |
Test that parser DOES NOT issue an    | yes |  Bob Ross                   |
error if above models are NOT         |     |                             |
defined.  (Clamps or no components    |     |                             |
can also be "Terminators")            |     |                             |
                                      |     |                             |
Test that the parser issues an        | yes |  Bob Ross                   |
error if all three columns are        |     |                             |
not included                          |     |                             |
                                      |     |                             |
Test that NA is accepted in the       | yes |  Bob Ross                   |
min and max columns.                  |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Ramp keyword related:                 |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the [Ramp] keyword and the            | yes |  Stephen Peters             |
dv/dt_r and dv/dt_f sub-parameters.   |     |                             |
                                      |     |                             |
Test that the parser recognizes       | yes |  Stephen Peters             |
the R_load sub-parameter.             |     |                             |
                                      |     |                             |
Test that the R_load sub-parameter    | yes |  Stephen Peters             |
is optional.                          |     |                             |
                                      |     |                             |
--------------------------------------+-----+-----------------------------+
Waveform Related:                     |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the [Rising Waveform] and [Falling    | yes |   Bob Ross                  |
Waveform] keywords.                   |     |                             |
                                      |     |                             |
Test that the parser recognizes       |     |                             |
the sub-parameters:                   |     |                             |
R_fixture                             | yes |   Bob Ross                  |
V_fixture                             | yes |                             |
V_fixture_max                         | yes |                             |
V_fixture_min                         | yes |                             |
C_fixture                             | yes |                             |
L_fixture                             | yes |                             |
R_dut                                 | yes |                             |
L_dut                                 | yes |                             |
C_dut                                 | yes |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if the R_fixture and            | yes |   Bob Ross                  |
V_fixture sub-parameters are not      |     |                             |
present.                              |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if a column contains over       | yes |   Bob Ross                  |
100 points.                           |     |                             |
                                      |     |                             |
Test that the parser issues an        |     |                             |
error if a table contains less        | yes |   Bob Ross                  |
than two points.                      |     |                             |
                                      |     |                             |
Test NA permitted in typical column   | yes |   Bob Ross                  |
--------------------------------------+-----+-----------------------------+

|***************************************************************
|
[IBIS Ver]        2.1
[File Name]       pkg1.ibs
[File Rev]        0.1
[Date]            July 6, 1995
[Source]          Interconnectix Inc.
[Disclaimer]      Provided for modeling purposes only.
                  Results are not guaranteed.
|
|***************************************************************
|
[Component]      PACKAGE-TEST 
[Manufacturer]   Test File
[Package]
| variable      typ             min             max
R_pkg           0.0m            NA              NA
L_pkg           0.0nH           NA              NA
C_pkg           0.0pF           NA              NA
|
|***************************************************************
|
[Pin]           signal_name     model_name      R_pin   L_pin   C_pin
A1              P_1             NC
2               P_2             NC
5               P_3             NC
4               P_4             NC       | A different order is OK.
| 3              P_5             NC      | This missing pin should produce
                                         | an error.

[Package Model] test

[Define Package Model]  test
[Manufacturer]          anyone
[OEM]                   this file shows
[Description]           some failed test cases

[Number of Pins]        5        

[Pin Numbers]
A1
2
3
4
5

[Model Data] 
[Inductance Matrix]      Banded_matrix  
[Bandwidth]              2
[Row]   A1
.01 .01 .01
[Row]   2
.01 .01 .01
[Row]   3
.01 .01 .01
[Row]   4
.01 .01 .01           
[Row]   5            
.01 .01 .01               | Correct circle back test.  Two errors are issued
                          | based on non-circle back format

[Capacitance Matrix]     Banded_matrix
[Bandwidth]              3
[Row]   A1
.01 .01 .01  .01  
[Row]   2
.01 .01 .01  .01          | Circle back test with bandwidth too large.
[Row]   3                 | An error should be issued.
.01 .01 .01  .01          | Three errors are issued based on the non-
[Row]   4                 | circle back test.
.01 .01 .01  .01
[Row]   5
.01 .01 .01  .01   

[Resistance Matrix]     Sparse_matrix
[Row]   A1
A1  .01             
2   .01             
[Row]   2             
3   .01             | There is no column 2 entry for self coupling.
A1  .01             | This entry lower triangle entry should not be accepted.
[Row]   2           | This row is repeated, Row 3 is missing.
5   .01             | This out of order entry is OK.
2   .01             | This entry would not be accepted for [Row] 3. 
4   .01   
[Row]   4
4   .01
5   .01
[Row]   5
5   .01
5   .01             | Duplicate entries are correctly flagged as an error.

[End Model Data]
[End Package Model]
|
[End]