From: Arpad Muranyi - PCD~ <[email-masked]>
Date: Tue, 2 Mar 1999 13:44:09 -0800

This is just a re-send in attempt to get the longer lines not wrap around.
Arpad

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

BIRD ID#:        58
ISSUE TITLE:     Driver Schedule keyword clarification
REQUESTER:       Arpad Muranyi, Intel Corporation
DATE SUBMITTED:  3/2/99
DATE ACCEPTED BY IBIS OPEN FORUM:  pending

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

STATEMENT OF THE ISSUE:

The [Driver Schedule] section of the latest IBIS specification (v3.2) does
not provide enough information to the model maker and EDA tool vendor on
essential details of this keyword.  The spec. can be interpreted in several
different ways which can lead to serious discrepancies and consequences.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

One paragraph from BIRD35.3 is included in the [Driver Schedule] usage rules
section of the specification.  This portion seems to have been
inadvertently left out from the spec. and explains the gray areas.

The additional words do not change the original intent behind this keyword. 
It is only added to spell out how the keyword must be used so that the model
maker and EDA tool vendor could be in agreement on how the model works.

The new section is marked with a "*" character at the beginning of each line.

|=============================================================================
|     Keyword:  [Driver Schedule]
|    Required:  No
| Description:  Describes the relative model switching sequence for referenced
|               models to produce a multi-staged driver.
| Usage Rules:  The [Driver schedule] keyword establishes a hierarchical order
|               between models and should be placed under the [Model] which 
|               acts as the top-level model.  The scheduled models are then 
|               referenced from the top-level [Model] by the [Driver Schedule]
|               keyword.
|
|*              The [Driver Schedule] keyword overrides any existing [Pullup],
|*              [Pulldown] and [Ramp] or [Rising Waveform] and [Falling
|*              Waveform] data for that model.  However, the required tables
|*              for [Model] are still required for backwards compatibility
|*              reasons for simulators which do not support multi-staged
|*              switching.  This information can be used as a composite model
|*              cross-check, although the resulting model may not perform in
|*              the same manner as the multi-stage model.
|
|               The [Driver Schedule] table consists of five columns.  The 
|               first column contains the model names of other models that
|               exists in the .ibs file.  The remaining four columns describe
|               delays: Rise_on_dly, Rise_off_dly, Fall_on_dly, and
|               Falling_off_dly.  All values are referenced to 0 seconds for
|               the start of the rising transition and 0 seconds for the start
|               of the falling transition.  All delays must be equal to or
|               greater than 0.
|
|               The Rise_on_dly entry gives the beginning of the low-to-high 
|               transition.  The Rise_off_dly entry may be given to end the 
|               low-to-high transition and initiate a high-to-low transition 
|               during the rising cycle.  Similarly, the Fall_on_dly gives
|               the beginning of the high-to-low transition.  The Fall_off_dly
|               may be given to end the high-to-low transition and initiate a
|               low-to-high transition.
|
|               Use 'NA' when no transition is applicable.  For each model,
|               the transition sequence must be complete, i.e., it must start
|               and end at the same state.  
|
|               Only the [Pulldown] and [Pullup] tables and transition data
|               [Ramp] or [Rising Waveform] and [Falling Waveform] data are
|               used from each model that is referenced.  The [Model] keyword
|               provides the specification information, [GND Clamp] and [POWER
|               Clamp], and C_comp, regardless of information contained in
|               the referenced models.
|
|               It is recommended that a "golden waveform" for the device 
|               consisting of a [Rising Waveform] table and a [Falling
|               Waveform] table be supplied under the [Model] keyword to 
|               serve as a reference for validation.
|
|               No [Driver Schedule] may reference a model which itself has
|               within it a [Driver Schedule] table keyword.
|
| Other Notes:  The added models typically consist of Open_sink (Open_drain) 
|               or Open_source models to provide sequentially increased drive
|               strengths.  The added drive may be removed within the same
|               transition for a momentary boost or during the opposite 
|               transition.
|
|               The syntax also allows for reducing the drive strength. 
|
|               Note that the Rise_on_dly, Rise_off_dly, Fall_on_dly,
|               Fall_off_dly parameters are single value parameters, so 
|               typical, minimum and maximum conditions cannot be described
|               with them directly.  In order to account for those effects,
|               one can refer to the fastest waveform table with the delay
|               number and then insert an appropriate amount of horizontal
|               lead in section in those waveforms which need more delay.
|
|               Note: In a future release, the [Driver Schedule] keyword may
|               be replaced by a newer method of specification that is 
|               consistent with some other planned extensions.  However, the
|               [Driver Schedule] syntax will continue to be supported.
|-----------------------------------------------------------------------------
[Driver Schedule]
| Model_name     Rise_on_dly  Rise_off_dly  Fall_on_dly  Fall_off_dly
  MODEL_OUT      0.0ns        NA            0.0ns        NA
|
|                                  Examples of added multi-staged transitions
  M_O_SOURCE1     0.5ns        NA            0.5ns        NA
|              low (high-Z) to high        high to low (high-Z)
  M_O_SOURCE2    0.5n         1.5n          NA           NA
|               low to high to low           low (high-Z)
  M_O_DRAIN1     1.0n         NA            1.5n         NA
|              low to high (high-Z)        high (high-Z) to low
  M_O_DRAIN2     NA           NA            1.5n         2.0n
|                  high (high-Z)           high to low to high 
|
|=============================================================================

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

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

An attempt to build an IBIS 3.2 buffer model for a three-stage buffer using
the [Driver Schedule] keyword failed.  The initial testing of this model
with the tools of two EDA vendors showed only two of the three stages
working.  This happened because the first stage of the buffer was placed
into the "main" [Model] section of the IBIS model due to a personal
interpretation of the IBIS 3.2 spec.  After consulting with several people,
it became apparent that the specification does not mention some of the key
information that is necessary to build a correct IBIS model for this kind of
a buffer.

The following paragraph in BIRD35.3 contains the missing information which
is necessary for making correct IBIS models using the [Driver Schedule]
keyword.  This section seems to have been accidentally left out from the
specification, and should be pasted into the appropriate location as shown
above.  (Note that the first and second sentences are deleted because they
do not provide new information in the context above).

"The new keyword [Driver Schedule] provides a syntax for sequencing other
models.  This is given as a keyword under the [Model] keyword.  It overrides
any existing [Pullup], [Pulldown] and [Ramp] or [Rising Waveform] and 
[Falling Waveform] data for that model.  However, the required tables for
[Model] are still required for backwards compatibility reasons for simulators
which do not support multi-staged switching.  This information can be used
as a composite model cross-check, although the resulting model may not
perform in the same manner as the multi-stage model."

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

ANY OTHER BACKGROUND INFORMATION:

Telephone conversation with Bob Ross on 2-26-99 confirmed that the IBIS
specification is missing the description of some of the usage rules which
were documented in BIRD35.3 and was implemented accordingly in ICX.

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