Subject: BIRD7.1

From: [email-masked] ( Bob Ross)
Date: Mon, 31 Jan 94 21:19:21 PST

Hello IBIS members:

Below is BIRD7.1 to reflect comments and email to date plus some compromise
terminology.

Revisions include:
   
   Complete set of "Open types"
   "Open_up" terminology introduced.
   "Open_down" terminology introduced to replace "Open_source".
   Inclusion of "_ECL" Types (different class of "open" devices).
   Notes section expansion to describe measurements.
   ANALYSIS PATH revision and expansion.

Bob Ross, Interconnectix, Inc.

***************************************************************************** 
*****************************************************************************
                 Buffer Issue Resolution Document  (BIRD)

BIRD ID#:                7.1
ISSUE TITLE:             Open Specification Completion 
REQUESTOR:               Bob Ross, Interconnectix, Inc. 
DATE SUBMITTED:          13 January 1994
DATE REVISED:            31 January 1994
DATE ACCEPTED BY IBIS OPEN FORUM:     {will be filled in when accepted}

*****************************************************************************
*****************************************************************************
STATEMENT OF THE ISSUE:

Model_type "Open_drain" provides insufficient coverage for "open" sided
models.  For completeness, additional "open" Model_types are need.  Also,
necessary ECL related Model_types are added for clarity and to avoid
several tests required before processing the [Model].  Methods to produce
[Ramp] data need to be expanded for "open" devices.

******************************************************************************
STATEMENT OF THE RESOLVED SPECIFICATIONS:

Under the keyword [Model], additional Model_type selections are added: Open_up,
I/O_Open_up, 3-State_Open_up, Open_down, I/O_Open_down, 3-state_Open_down, 
Output_ECL, I/O_ECL, Input_ECL.  The [Model] keyword specification in Version
1.1 is edited to show these Model_types.  Changed text is separated by blank
lines.  NOTES ON DATA DERIVATION METHODS is revised to clarify the [Ramp]
measurements for open models.

The [Model] keyword is revised to the following:

|==============================================================================
|     Keyword:  [Model]                                                        
|    Required:  Yes                                                            
| Description:  Used to define a model, and its attributes                     
|  Sub-Params:  Model_type, Polarity, Enable, Vinl, Vinh, C_comp               

| Usage Rules:  Each Input, Output, I/O, 3-state, Open_drain or Open_up,
|               I/O_Open_up, 3-state_Open_up, Open_down, I/O_Open_down, 
|               3-state_Open_down, Input_ECL, Output_ECL, and I/O_ECL model
|               must                   

|               begin with the keyword [Model].  The model_name must match     
|               the one that is listed under the [Pin] keyword and must not    
|               contain more than 20 characters.  An .ibs file must contain    
|               enough [Model] keywords to cover all of the model_names        
|               specified under the [Pin] keyword, except for those            
|               model_names which use reserved words (POWER, GND and NC).      
|               Model_names with reserved words are an exception and           
|               they do not have to have a corresponding [Model] keyword.      
|               C_comp is allowed to use "NA" for the min and max values only. 
| Other Notes:  A complete [Model] description normally contains the following 
|               keywords:  [Voltage range], [Pullup], [Pulldown], [GND_clamp], 
|               [POWER_clamp], and [Ramp].  However, some models may have only 
|               a subset these keywords.  For example, an input structure      
|               normally only needs the [Voltage range], [GND_clamp], and      
|               possibly the [POWER_clamp] keywords.                           

|               Model_types with "Open_up" mean that the [Pullup] keyword is
|               not used and/or that I = 0mA for all voltages specified. 
|               "Open_drain" means "Open_up" and is retained for IBIS Version
|               1.X compatibility.  Model_types with "Open_down" mean that the
|               [Pulldown] keyword is not used and/or that I = 0mA for all
|               voltages specified.  Model_types with "_ECL" mean that the
|               model represents an ECL type logic which follows different
|               conventions for the [Pulldown] keyword.

|               Note that C_comp defines the silicon die capacitance.  This    
|               value should not include the capacitance of the package.       
|                                                                              
|------------------------------------------------------------------------------
[Model]         model_name

Model_type      Input, Output, I/O, 3-state, Open_drain, Open_up, I/O_Open_up,
                3-state_Open_up, Open_down, I/O_open_down, 3-state_Open_down,
                Input_ECL, Output_ECL, I/O_ECL       | List one only

Polarity        Non-Inverting, Inverting             | List one only, -if any
Enable          Active-High, Active-Low              | List one only, -if any
| Signals       RAS, CAS, A(0-64), D(0-128),...      | Local list, -if desired
Vinl = 0.8V                           | input logic "low" DC voltage, -if any
Vinh = 2.0V                           | input logic "high" DC voltage, -if any
| variable      typ             min             max 
C_comp          12.0pF         10.0pF          15.0pF
|==============================================================================

Section 3) on NOTES ON DATA DERIVATION METHOD is revised as follows:

  3) Ramp Rates:
     The ramp rates (listed in AC characteristics below) should be derived
     as follows:

       1.  Start with the silicon model, remove all packaging.

       2.  If: The Model_type is one of the following: Output, I/O, or
               3-state (not Open or ECL types);
           Then: Attach a 50 ohm resistor to GND to derive the rising edge 
               ramp.  Attach a 50 ohm resistor to POWER to derive the 
               falling edge ramp.

           If: the Model_type is Output_ECL or I/O_ECL;
           Then:  Attach a 50 ohm resistor to the termination voltage 
               (Vterm = VCC - 2v).  Use this load to derive both the
               rising and falling edges.

           If: The Model_type is either an Open_up type or Open_drain;
           Then: Attach either a 50 ohm resistor or the vendor suggested 
               termination resistance to either POWER or the vendor suggested
               termination voltage.  Use this load to derive both the rising
               and falling edges.

           If: The Model_type is an Open_down type;
           Then: Attach either a 50 ohm resistor or the vendor suggested
               termination resistance to either GND or the vendor suggested
               termination voltage.  Use this load to derive both the rising
               and falling edges.

        3. and 7.: **** Delete Items 3. and 7. **** 

        4. - 6.: **** Renumber these Items as 3. - 5. ****

*******************************************************************************
ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

Open-drain is corrected to Open_drain as a Model_type selection and is kept
for Version 1.1 compatibility.  The terminology "Open_up" means open
[Pullup] and "Open_down" means open [Pulldown].  Without requiring an
explicit test, these new Model_types signal that the [Pullup] or [Pulldown]
tables are not defined or are not to be used if defined.  Model_types for
ECL are defined to fill the functionality table below.  The Model_types 
shown can be found in commercial components.

Conditions:  |                      Model_type:
             |
pullup&down: |  Output      3-state             I/O               
no pullup:   |  Open_up     3-state_Open_up     I/O_Open_up
             |  Open_drain
no pulldown: |  Open_down   3-state_Open_down   I/O_Open_down
no pullup/dn:|                                                   Input
ECL up&down: |  Output_ECL                      I/O_ECL        
ECL no up/dn:|                                                   Input_ECL

Note, "ECL" is intended to be generic.  It can be used to model "PECL" logic
spanning from Vcc = 5V to GND.  Input_ECL is redundant, but may signal the
simulator to use different default Vinl and Vinh values if these OPTIONAL
(a BIRD2.1 issue) input parameters are not specified.  

For the "Open" Model_types there exists several other naming methods based
on comments received and some combinations I though of.  BIRD7.1 is written
in terms of (1).

(1) Use "up" and "down".  Retain Open_drain for Version 1.1 compatibility
    as a redundant Model_type.  (6 new terms, 1 redundant term).
no pullup:   |  Open_up        3-state_Open_up        I/O_Open_up
             |  Open_drain
no pulldown: |  Open_down      3-state_Open_down      I/O_Open_down

(2) Retain "Open_drain", but use "up" & "down" for generic names elsewhere.
    (5 new terms).
no pullup:   |  Open_drain     3-state_Open_up        I/O_Open_up
no pulldown: |  Open_down      3-state_Open_down      I/O_Open_down

(3) Use "drain", "collector", "emitter".  "emitter is generic for CMOS logic &
    TTL no pulldown devices.  (8 new terms).
no pullup:   |  Open_drain     3-state_Open_drain     I/O_Open_drain
             |  Open_collector 3-state_Open_collector I/O_Open_collector
no pulldown: |  Open_emitter   3-state_Open_emitter   I/O_Open_emitter

(4) Use "drain" generically for "up", and "source" generically for "down"
    for TTL and CMOS logic.  (Bird7.0 suggestion - 5 new terms)
no pullup:   |  Open_drain     3-state_Open_drain     I/O_Open_drain
no pulldown: |  Open_source    3-state_Open_source    I/O_Open_source

(5) Use "Open_drain" generically to mean "Open".  Test for no pullup or
    no pulldown in [Model].  (2 new terms)
no pullup:   |  Open_drain     3-state_Open_drain     I/O_Open_drain
no pulldown: |  Open_drain     3-state_Open_drain     I/O_Open_drain

(6) Retain "Open_drain, but use "Open" generically to mean "Open".  Test for
    no pullup or no pulldown in [Model].  (3 new terms)
no pullup:   |  Open_drain     3-state_Open           I/O_Open
no pulldown: |  Open           3-state_Open           I/O_Open

(7) Use "Open" generically to mean "Open".  Retain "Open_drain" for Version
    1.1 compatibility.  Test for no pullup or no pulldown in [Model].  (3 new
    terms, 1 redundant term).
no pullup:   |  Open           3-state_Open           I/O_Open
             |  Open_drain
no pulldown: |  Open           3-state_Open           I/O_Open

Currently, the user may choose to model the "Open" side directly through
control of the [Pullup] and [Pulldown] keyword.  Omission of [Pullup] could
be interpreted as an "Open_up" device.  Omission of [Pulldown] could be
interpreted as an "Open_down" device.  However, this method was never
specified in IBIS Version 1.1 as the correct method and therefore was not
the only method to specify "Open" devices.

The user may choose to model the "Open" side directly through control of the
[Pullup] and [Pulldown] data.  If all of the data contains I(typ) = 0mA 
entries (a minimum of two entries are required), then that [Model] could be
interpreted as "Open".  Zero valued [Pullup] data corresponds to Open_up types
or Open_drain.  Zero valued [Pulldown] data corresponds to Open_down types. 

Without the additional Model_types, the above two approaches plus the existence
of "Open_drain" provide a confusing and inconsistent specification and
require the simulator to perform a variety of tests before being able to 
process the data.

The "ECL" model types are added to avoid similar confusion.

One final consideration is that whoever generates the [Model], whether through
simulation or measurement, must know beforehand the Model_type in order to
generate the [Ramp] data according to the rules.  Therefore it is reasonable
to require that this information be included as part of a Version 2.0 
specification.  This avoids the inefficiency of forcing the simulator to
perform many tests before processing the IBIS data.  The simulator can then
translate the data into its internal format and apply its own simulator-
specific compaction schemes (the simulator does not have to provide all
of the Model_types).  With BIRD7.1, the IBIS Statement of Intent within
the first paragraph is preserved: "the intention of this template is to
specify a consistent format that can be parsed by software, allowing each
simulation vendor to derive models compatible with their own product."

******************************************************************************
ANY OTHER BACKGROUND INFORMATION:

Jon Powell initiated the issue in Email of October 1993 questioning whether
we needed "I/O_OPEN_DRAIN" and I/O_OPEN_COLLECTOR".  He referred to the 
SN74ALS641 Open Collector Tranceiver as a specific example.

Kellee Crisafulli in Email of July 1993 considered "open output devices
(open-drain, open-collector, open-source)".  Furthermore, he referred to "open 
collector npn" and "open collector pnp" devices.  In the discussion, he
proposed new Optional (Required for open-side devices) keywords dV/dt_r_off 
(turn off time of high side driver) and dv/dt_f_off (turn off time of low side
driver).  Included it the discussion was the requirement that "If the pulldown
table is missing then dV/dt_r_off is required" and "If the pullup table is
missing then dV/dt_f_off is required".  Kellee elaborated further on the
measurement/extraction issues of the ramp values.  BIRD7.1 now addresses 
the ramp specification. 

The modifications on Notes on Derivations Method by Kellee Crisafulli and
Stephen Peters are added with changes for notation consistency.

The usage of "Open_up" and "Open_down" is an adaptation of one of Arpad
Muranyi's comments on BIRD7 suggesting "open pullup" and "open pulldown".

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