Subject: BIRD35.1 Multi-staged Outputs

From: [email-masked] ( Bob Ross)
Date: Fri, 21 Jun 96 10:32 PDT

To IBIS Committee:

In response to Jon Powell's comments and support by others, BIRD35.1 adds
the [Rising Sequence] and [Falling Sequence] tables to specify the times
each stage transitions (and possibly returns), relative to a common starting
reference time.  The example illustrates a conventional stage, a pulldown
stage, and a pullup stage (for a pulse only).

The pulldown stage and the pullup stage illustrate two different modes of
operation which the IBIS syntax would allow.  In the case of the pulldown
stage, the pulldown current is turned off during the rising transition
and turned on during the falling transition.  The pullup stage produces
additional pullup current only during the rising transition and then shuts
off.  It does not operate during the falling transition and remains in
a high impedance state.

Below is some of the original text for setting the context of BIRD35.1

The multi-staged switching functionality has been on the priority list for
Version 3.0 addtions.  Below is a proposal to start the discussion.

The key elements of this proposal are:

1.  The [Model] keyword and subparameters and all keywords under [Model] keep 
    their same definitions.  The existing [Pulldown], [Pullup] and [Ramp]
    keywords are still required for downward compatiblility.  

2.  Up to 10 new internal building blocks consisting of local [Pullup(n)],
    [Pulldown(n)], [Rising Waveform(n)] and [Falling Waveform(n)] keywords
    are permitted.

3.  There are some syntactical ordering restrictions that preserve readability
    and permit one-pass parsing.

4.  Only one of [Pulldown(n)] or [Pullup(n)] keywords is required to support 
    Open_source (Open_sink) and Open_drain configurations.  Both the [Rising 
    Waveform(n)] and [Falling Waveform(n)] keywords are required for each 
    stage.

5.  The [Gnd Clamp] and [Power Clamp] keywords are not split into sections.

Unlike exiting IBIS keywords, the new tables cannot be measured directly
or even be produced easily by direct decomposition and simulation of Spice 
elements because of too much internal interaction.  The actual construction 
would be by trial and validation and based on the known architectural intent.
 
I have not explored all possibilities and implications of this proposal.
However, I believe it is even possible to model bus hold effects using a
final delayed correction stage.

Bob Ross
Interconnectix, Inc.

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

BIRD ID#:      35.1
ISSUE TITLE:   Multi-staged Outputs
REQUESTER:     Bob Ross, Interconnectix, Inc.
DATE SUBMITTED:                       5/13/96, 6/21/96
DATE ACCEPTED BY IBIS OPEN FORUM:     Pending

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

STATEMENT OF THE ISSUE:

Modeling output transitions of buffers consisting of several sequentially
switched internal devices has been a long standing request.  The addition
of the [Rising Waveform] and [Falling Waveform] keywords partially addresses
the issue by waveform shaping control.  However, these keywords do not model
the dynamic impedance changes during transitions.  The more direct solution
is to add IBIS keywords which allow modeling the internal architecture more
closely.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

An extension of the existing [Pullup], [Pulldown], [Rising Waveform] and
[Falling Waveform] syntax is proposed.  Up to ten sets (n=0,...,9) of keyword
groupings for [Pulldown(n)], [Pullup(n)], [Rising Waveform(n)], and [Falling
Waveform(n)] to describe modeling individually controlled switching.  The
summation of the new keywords override the existing [Pullup], [Pulldown],
[Rising Waveform] and [Falling Waveform] descriptions of the low to high and
high to low driver switching.  All Waveform tables are relative to a common
reference time, but their sequencing is controlled by a [Rising Sequence] and
[Falling Sequence] tables.  All other parameters and requirements for the
[Model] keyword remain the same.

Add the following keywords as a group after the [Falling Waveform] keyword
example:

|==============================================================================
| Keywords:     [Rising Sequence], [Falling Sequence]
| Required:     No
| Description:  Describes the sequencing of [Rising Waveform(n)] and [Falling
|               Waveform(n)] tables with respect to 0 nS.
|
| Usage Rules:  Each table contains three columns consisting of the table 
|               number n and two delays: Rise Delay and Fall Delay for the
|               [Rising Sequence] table, and Fall Delay and Rise Delay for the
|               [Falling Sequence table.  Rise Delay describes the starting
|               time for the stage n Rising Waveform(n), and Fall Delay
|               describes the starting time for the stage n Falling Waveform(n).
|               The Sequence table describes the time of a turn on and turn
|               off transition.  Use 'NA' when no transistion is applicable.
|               For each stage n, the Rising Sequence  starts at the final
|               state of the Falling Sequence, and visa-versa.
|
| Other Notes:  Up to ten (n=9) table number entries are permitted, but
|               the corresponding Pullup(n) or Pulldown(n) and [Rising
|               Waveform(n)] and [Falling Waveform(n)] tables must exist
|               for each n.  The table number entries must be in increasing
|               order starting with 0, but the time entries are constrained
|               only to be equal or greater than 0.
|
|               Even opposite polarity transitions can be described if only
|               the third column entries are specified or if they are less
|               than the second column entries.                         
|------------------------------------------------------------------------------
|
[Rising Sequence]
|
|  n    Rise Delay     Fall Delay
   0      0.0nS          NA   
   1      0.5nS          NA
   2      0.5nS          1.5nS         | Pulse on Rising portion only        
|
[Falling Sequence]
|
|  n    Fall Delay     Rise Delay
   0      0.0nS          NA 
   1      0.5nS          NA
   2      NA             NA            | No transition for Falling Waveform
|
|==============================================================================

|==============================================================================
|    Keywords:  [Pulldown(n)], [Pullup(n)], n=0,...,9
|    Required:  Yes, at least a [Pullup(n)] or [Pulldown(n) for each n in the
|               [Rising Sequence] and [Falling Sequence] tables
|
| Description:  Defines a partitioning of an output buffer into groupings
|               of [Pulldown(n)], [Pullup(n)], [Rising Waveform(n)], and
|               [Falling Waveform(n)] descriptions to be summed to form
|               the complete output response.
|
| Usage Rules:  The [Pulldown(n)], [Pullup(n)] tables follow the same rules
|               as the [Pulldown], [Pullup], but override them.  Either the
|               [Pulldown(n)] or the [Pullup(n)] or both may be given for (n).
|               Any number up n=9 (ten groups) of n tables are permitted.
|               Both the corresponding [Rising Waveform(n)] and [Falling 
|               Waveform(n)] descriptions are required.  These waveforms are
|               used to describe the switching on and off behavior.  The
|               outputs of all stages are connected to produce the total
|               response. 
|
|               The usage of [Voltage Range] and [Pullup Reference] and
|               [Pulldown Reference] apply to all of the [Pulldown(n)] and
|               [Pullup(n)] tables.
|
| Other Notes:  Refer to Other Notes for [Rising Waveform(n)], [Falling 
|               Waveform(n)] regarding a keyword grouping restriction.
|------------------------------------------------------------------------------
|
| Pulldown and Pullup Switch (0)
|
[Pulldown(0)]
|
|  Voltage   I(typ)    I(min)    I(max)
   -5.0V    -50.0m      NA        NA
    0.0V      0.0m      NA        NA
    5.0V     50.0m      NA        NA
   10.0V    100.0m      NA        NA
|
[Pullup(0)] 
|
|  Voltage   I(typ)    I(min)    I(max)
   -5.0V     50.0m      NA        NA
    0.0V      0.0m      NA        NA
    5.0V    -50.0m      NA        NA
   10.0V   -100.0m      NA        NA
|
|==============================================================================
| Keywords:     [Rising Waveform(n)], [Falling Waveform(n)], n=0...9
| Required:     Yes, for each n in the [Rising Sequence] and [Falling Sequence
|               tables
|
| Description:  Describes the shape of the rising and falling waveforms of a
|               driver component (n).
|
| Sub-Params:   R_fixture, V_fixture, V_fixture_min, V_fixture_max,
|               C_fixture, L_fixture, R_dut, L_dut, C_dut
|
| Usage Rules:  The [Rising Waveform(n)] and [Falling Waveform(n)] keywords
|               follow the same rules as [Rising Waveform] and [Falling
|               Waveform] keywords.  However, these timing descriptions
|               are used only with the corresponding [Pulldown(n)] and
|               [Pullup(n)] tables and are intiated based on the [Rising
|               Sequence] and [Falling Sequence] tables.
|
|               Several waveform descriptions are permitted for each (n).
|               The model components 0...n must grouped in sequential order
|               and must start with (0).  I.e., all table(0) keywords must
|               be placed before any table(1) keyword, and so forth.  Up to
|               ten such keyword groupings are permitted.  The sequential
|               ordering may differ from the switching sequence.  E.g., 
|               table(1) may switch before table(0).
|
| Other Notes:  While the R_dut, L_dut, and C_dut subparameters are 
|               allowed, they would normally not be used.
|   
|------------------------------------------------------------------------------
|
[Rising Waveform(0)]
R_fixture = 100
V_fixture = 0
|
|Time       V(typ)     V(min)    V(max)
   0.0ns     0.0        NA        NA
   2.0ns     2.5        NA        NA
   5.0ns     2.5        NA        NA
|
[Falling Waveform(0)]
R_fixture = 100
V_fixture = 5
|
|Time       V(typ)     V(min)    V(max)
   0.0ns     5.0        NA        NA
   2.0ns     2.5        NA        NA
   5.0ns     2.5        NA        NA
|
|
| Continuation of Complete Example for Two More Stages:

| Pulldown Switch (1)
|
[Pulldown(1)]
|
|  Voltage   I(typ)    I(min)    I(max)
   -5.0V    -50.0m      NA        NA
    0.0V      0.0m      NA        NA
    5.0V     50.0m      NA        NA
   10.0V    100.0m      NA        NA
|
[Rising Waveform(1)]
R_fixture = 100
V_fixture = 5
|
|Time       V(typ)     V(min)    V(max)
   0.0ns     2.5        NA        NA
   1.0ns     5.0        NA        NA
   5.0ns     5.0        NA        NA
|
[Falling Waveform(1)]
R_fixture = 100
V_fixture = 5
|
|Time       V(typ)     V(min)    V(max)
   0.0ns     5.0        NA        NA
   2.0ns     2.5        NA        NA
   5.0ns     2.5        NA        NA
|
| Pullup Switch (2)
|
[Pullup(2)]
|
|  Voltage   I(typ)    I(min)    I(max)
   -5.0V    -50.0m      NA        NA
    0.0V      0.0m      NA        NA
    5.0V     50.0m      NA        NA
   10.0V    100.0m      NA        NA
|
[Rising Waveform(2)]
R_fixture = 100
V_fixture = 0
|
|Time       V(typ)     V(min)    V(max)
   0.0ns     0.0        NA        NA  
   0.5ns     2.5        NA        NA 
   5.0ns     2.5       NA        NA
|
[Falling Waveform(2)]                  
R_fixture = 100
V_fixture = 0
|
|Time       V(typ)     V(min)    V(max) 
   0.0ns     2.5        NA        NA 
   0.5ns     0.0        NA        NA
   5.0ns     0.0        NA        NA
|

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

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

The proposal is designed to add to the existing IBIS structures and retain
as much existing meaning as possible.  The new "stage" tables follow all of 
the conventions of the existing non-staged tables.  For that reason, 
even the subparameters R_dut, L_dut, and C_dut are permitted, although 
they are not relevant nor are expected to be used.  

The overall structure is to connect independently controlled stages to a
common output node.  The relative relationhips between waveform controls 
are used to produce phased turn-on and turn-off models.  The structure can
be also be used to model other internal artifacts.  These may include
providing an extra boost pulse or providing bus hold modeling.  

A general objection to these structures is that they do not relate to any
externally obtained extraction.  The intent of these structures is to give
a format for modeling a known architecture with behavioral blocks and 
to also add some detail to existing models.

BIRD35.1 introduces a [Rising Sequence] and [Falling Sequence] tables to
control the sequencing of individual stages.  This is in response to Jon
Powell's comment to make the sequencing of waveforms easier to understand
and modify.  So each [Rising Waveform(n)] and [Falling Waveform(n)] table
has its start time controlled by the Sequence tables.

One technical limitation is that the Sequencing is the same for typ, min,
and max columns.  Any internal shifting within the typ, min, and max columns
for the stage must be taken into account within the Waveform columns for that
stage.

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

ANY OTHER BACKGROUND INFORMATION:

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