****************************************************************************
****************************************************************************
                    BUFFER ISSUE RESOLUTION DOCUMENT (BIRD)

BIRD ID#:       86.1
ISSUE TITLE:    Clarification of Submodel Mode
REQUESTOR:      Lynne Green, Green Streak Programs, Bob Ross, Teraspeed
DATE SUBMITTED: November 21, 2003
DATE REVISED:   December 26, 2003
DATE ACCEPTED BY IBIS OPEN FORUM: Pending

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

STATEMENT OF THE ISSUE:

In IBIS 4.0, it is not clear if the statement "Set the submodel mode to
All if the submodel is to be used for all modes of operation." is for 
just those buffer types mentioned in this paragraph, or for all buffer 
types.  The IBIS parser does not check for inconsistencies.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

Existing paragraphs for [Add Submodel]:


|               If the top-level model type is one of the I/O or 3-state
|               models, the submodel mode may be Driving, Non-Driving, or All.
|               For example, if the submodel mode is Non-Driving, then the
|               submodel is used only in the high-Z state of a 3-state model.
|               Set the submodel mode to All if the submodel is to be used for
|               all modes of operation.
|
|               The submodel mode cannot conflict with the top-level model
|               type.  For example, if the top-level model type is an Open or
|               Output type, the submodel mode cannot be set to Non-Driving.
|               Similarly, if the top-level model type is Input, the submodel
|               mode cannot be set to Driving.


Add the paragraph:

|*
|*              The submodel mode can be set to All to cover all permitted
|*              modes for any top-level model type including, for example,
|*              Input, Output, and I/O).
|* 


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

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

BIRD86:
People create models without noticing the restriction on the submodel
mode.  This is not caught by the IBIS 3.2 parser, so this is difficult 
to debug in a model.

BIRD86.1
The BIRD86 proposal is captured below as one possible interpretation.

Proposed text:
|               If the top-level model type is one of the I/O or 3-state
|               models, the submodel mode may be Driving, Non-Driving,
|               or All.
|               For example, if the submodel mode is Non-Driving, then
|               the submodel is used only in the high-Z state of a 
|               3-state model.
|               Set the submodel mode to All if the submodel is to be
|               used for
|**             both Driving and Non-Driving modes of operation.
|
|               The submodel mode cannot conflict with the top-level
|               model type.  For example, if the top-level model type 
|               is an Open or Output type, the submodel mode cannot be 
|               set to Non-Driving
|**             or All.  Similarly, if the top-level model type is 
|**             Input, the submodel mode cannot be set to Driving or All.
|

However, BIRD86.1 proposes the opposite interpretation that 'All' was
intended to include all the permitted modes for any of the top-level
models including those with only one mode.  The parser already
functions in this manner and would not be changed.

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

ANY OTHER BACKGROUND INFORMATION:

(Test Case for BIRD86 proposal)

| test case for submodel mode
| ***************************************************
|
[IBIS Ver]       3.2
[File Name]      submodel1.ibs
[File Rev]       0.0
[Date]           20 Nov 2003
[Source]         Dummy model
[Notes]          Dummy data
[Disclaimer]     BIRD testing use only
|
[Component]      Test1
[Manufacturer]   Nobody
| 
[Package]
R_pkg     5.95E-02   5.36E-02   6.59E-02
L_pkg     4.21E-09   3.07E-09   5.91E-09
C_pkg     0.910E-12  0.758E-12  1.110E-12
|
[Pin] signal_name                model_name    R_pin    L_pin    C_pin
    1         A1                 testA
    10        GND                GND 
    20        VCC                POWER 
| 
| 
[Model]          testA
Model_type       Input
Vinl =   0.8000V
Vinh =   2.0000V
C_comp          3.67pF          3.24pF          4.23pF
|
[Add Submodel]
|Submodel_name      Mode
testA1              All
|
[Temperature Range]       40.0000          100.0000            -25.0000
[Voltage Range]           3.3000V          3.0000V             3.6000V
|
[GND Clamp]
| voltage     I(typ)              I(min)              I(max)
|
    -5.500E+00      -4.0  -4.5 -5.5
     0.000E+00      0 0 0
     5.500E+00      0 0 0
|***********************************************************************
|
[Submodel]       testA1
Submodel_type    Dynamic_clamp
|
|Voltage         typ                 min                 max
|Voltage Range   3.3000V             3.0000V             3.6000V
|
[POWER Clamp]
| voltage     I(typ)              I(min)              I(max)
|
    -5.500E+00      4.0  4.5 5.5
     0.000E+00      0 0 0
     5.500E+00      0 0 0
|
[END]

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