IBIS BIRD73 - Fall Back Submodel


Subject: IBIS BIRD73 - Fall Back Submodel
From: Bob Ross (bob_ross@mentorg.com)
Date: Thu Aug 02 2001 - 19:59:29 PDT


To IBIS Committee:

BIRD73 proposes a new Submodel_type to handle the electrical
operation of techologies which have the driver strength
reduced during a transition.

Bob Ross
Mentor Graphics

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

BIRD ID#: 73
ISSUE TITLE: Fall Back Submodel
REQUESTER: Bob Ross, Mentor Graphics
DATE SUBMITTED: 8-2-2001
DATE ACCEPTED BY IBIS OPEN FORUM: Pending

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

STATEMENT OF THE ISSUE:

Existing submodels have a trigger for turning on functions. This works for
Bus_hold (and corresponding active terminators) and Dynamic_clamp functions.

However another mechanism to turn off the submodels is needed for AVC type
devices which have the overall driver strength reduced after the output
passes through a voltage threshold value.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

This BIRD proposes a new Submodel_type: Fall_back. The new submodel operates
similar to the Bus_hold submodel, but with opposite action. The trigger
turns off a submodel (presumed on) when the output die voltage passes
through a trigger threshold.

Additions are noted in the relevant sections below by |* lines:

Comments for a new section or for unchanged sections are shown using
**** lines.

|=============================================================================
|=============================================================================
|
| Section 6a
|
| A D D S U B M O D E L D E S C R I P T I O N
|
|=============================================================================
|=============================================================================
|
| The [Add Submodel] keyword can be used under a top-level [Model] keyword to
| to add special-purpose functionality to the existing top-level model. This
| section describes the structure of the top-level model and the submodel.
|
| TOP-LEVEL MODEL:
|
| When special-purpose functional detail is needed, the top-level model can
| call one or more submodels. The [Add Submodel] keyword is positioned
| after the initial set of required and optional subparameters of the [Model]
| keyword and among the keywords under [Model].
|
| The [Add Submodel] keyword lists of name of each submodel and the permitted
| mode (Driving, Non-Driving or All) under which each added submodel is used.
|
| SUBMODEL:
|
| A submodel is defined using the [Submodel] keyword. It contains a subset
| of keywords and subparameters used for the [Model] keyword along with other
| keywords and subparameters that are needed for the added functionality.
|
| The [Submodel] and [Submodel Spec] keywords are defined first since they
| are used for all submodels
|
| The only required subparameter in [Submodel] is Submodel_type to define the
| list of submodel types. No subparameters under [Model] are permitted under
| the [Submodel] keyword.
|
| The following set of keywords that are defined under the [Model] keyword are
| supported by the [Submodel] keyword:
|
| [Pulldown]
| [Pullup]
| [GND Clamp]
| [POWER Clamp]
| [Ramp]
| [Rising Waveform]
| [Falling Waveform]
|
| The [Voltage Range], [Pullup Reference], [Pulldown Reference], [GND Clamp
| Reference], and [POWER Clamp Reference] keywords are not permitted. The
| voltage settings are inherited from the top-level model.
|
| These additional keywords are used only for the [Submodel] are documented
| in this section:
|
| [Submodel Spec]
| [GND Pulse Table]
| [POWER Pulse Table]
|
| The application of these keywords depends upon the Submodel_type entries
| listed below:
|
| Dynamic_clamp
| Bus_hold
|* Fall_back
|
| Permitted keywords that are not defined for any of these submodel types are
| ignored. The rules for what set of keywords are required are found under
| the Dynamic Clamp and Bus Hold headings of this section.
|
|=============================================================================
| Keyword: [Submodel]
| Required: No
| Description: Used to define a submodel, and its attributes.
| Sub-Params: Submodel_type
| Usage Rules: Each submodel must begin with the keyword [Submodel]. The
| submodel name must match the one that is listed under an
| [Add Submodel] keyword and must not contain more than 20
| characters. A .ibs file must contain enough [Submodel]
| keywords to cover all of the model names specified under the
| [Add Submodel] keyword.
|
| Submodel_type subparameter is required and must be one of the
| following:
|
|* Dynamic_clamp, Bus_hold, Fall_back
|
| The C_comp subparameter is not permitted under the [Submodel]
| keyword. The total effective die capacitance including the
| submodel contributions are provided in the top-level model.
|
| Other Notes: The following list of keywords that are defined under the
| [Model] keyword can be used under [Submodel]: [Pulldown],
| [Pullup], [GND Clamp], [POWER Clamp], [Ramp], [Rising
| Waveform], and [Falling Waveform].
|
| The following list of additional keywords can be used:
| [Submodel Spec], [GND Pulse Table], and [POWER Pulse Table].
|-----------------------------------------------------------------------------
[Submodel] Dynamic_clamp1
Submodel_type Dynamic_clamp
|

**** The next two sections are unchanged, but are shown for reference:

|=============================================================================
| Keyword: [Submodel Spec]
| Required: No
| Description: The [Submodel Spec] keyword defines four columns under which
| specification and information subparameters are defined for
| submodels.
| Sub-Params: V_trigger_r, V_trigger_f, Off_delay
| Usage Rules: The [Submodel Spec] is to be used only with submodels.
|
| The following subparameters are used:
| V_trigger_r Rising edge trigger voltage
| V_trigger_f Falling edge trigger voltage
| Off_delay Turn-off delay from V_trigger_r or
| V_trigger_f
|
| For each subparameter contained in the first column, the
| remaining three hold its typical, minimum and maximum values.
| The entries of typical, minimum and maximum be must be placed
| on a single line and must be separated by at least one white
| space. All four columns are required under the [Submodel
| Spec] keyword. However, data is required only in the typical
| column. If minimum and/or maximum values are not available,
| the reserved word "NA" must be used to indicate the typical
| value by default.
|
| The values in the minimum and maximum columns usually
| correspond to the values in the same columns for the inherited
| top-level voltage range or reference voltages in the top-level
| model. The V_trigger_r and V_trigger_f subparameters should
| hold values in the minimum and maximum columns that correspond
| to the voltage range or reference voltages of the top-level
| model. The Off_delay subparameter, however, is an exception
| to this rule because in some cases it may be completely or
| or partially independent from supply voltages and/or
| manufacturing process variations. Therefore the minimum and
| maximum entries for the Off_delay subparameter should be
| ordered simply by their magnitude.
|
| Unless noted, each [Submodel Spec] subparameter is independent
| of any other subparameter.
|
| V_trigger_r, V_trigger_f rules:
|
| The voltage trigger values for the rising and falling edges
| provide the starting time when an action is initiated.
|
| Off_delay rules:
|
| The functionality of the Off_delay subparameter is to provide
| an additional time related mechanism to turn off circuit
| elements.
|
|-----------------------------------------------------------------------------
| Dynamic Clamp Example:
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_r 3.6 2.9 4.3 | Starts power pulse table
V_trigger_f 1.4 1.2 1.6 | Starts gnd pulse table
|
| Bus Hold Example:
|
[Submodel Spec]
| Subparameter typ min max
V_trigger_r 3.1 2.4 3.7 | Starts low to high
                                                    | bus hold transition
V_trigger_f 1.8 1.6 2.0 | Starts high to low
                                                    | bus hold transition
|
| Bus_hold application with pullup structure triggered on and then clocked off:
|
[Submodel Spec]
| Subparameter typ min max
V_trigger_r 3.1 2.4 3.7 | Low to high transition
                                                    | triggers the turn on
                                                    | process of the pullup
V_trigger_f -10.0 -10.0 -10.0 | Not used, so trigger
                                                    | voltages are set out
                                                    | of range
Off_delay 5n 6n 4n | Time from rising edge
                                                    | trigger at which the
                                                    | pullup turned off
|
|=============================================================================
|=============================================================================
|
| Bus Hold:
|
| When the Submodel_type subparameter under the [Submodel] keyword is set to
| Bus_hold, the added model describes the bus hold functionality. However,
| while described in terms of bus hold functionality, active terminators
| can also be modeled.
|
| Existing keywords and subparameters are used to describe bus hold models.
| The [Pullup] and [Pulldown] tables both are used to define an internal
| buffer that is triggered switch to its opposite state. This switching
| transition is specified by a [Ramp] keyword or by the [Rising Waveform] and
| [Falling Waveform] keywords. The usage rules for these keywords are the
| same as under the [Model] keyword. In particular, at least either the
| [Pullup] or [Pulldown] keyword is required. Also, the [Ramp] keyword is
| required, even if the [Rising Waveform] and [Falling Waveform] tables exist.
| However, the voltage ranges and reference voltages are inherited from the
| top-level model.
|
| For bus hold submodels, the [Submodel Spec] keyword, V_trigger_r, and
| V_trigger_f are required. The Off_delay subparameter is optional, but can
| only be used if the submodel consists of a pullup or a pulldown structure
| only, and not both. Devices which have both pullup and pulldown structures
| controlled in this fashion can be modeled using two submodels, one for each
| half of the circuit.
|
| The transition is triggered by action at the die using the [Submodel Spec]
| V_trigger_r and V_trigger_f subparameters as follows:
|
| If the starting voltage is below V_trigger_f, then the bus hold model is set
| to the low state causing additional pulldown current. If the starting
| voltage is above V_trigger_r, the bus hold model is set to the high state
| for additional pullup current. When the input passes though V_trigger_f
| during a high-to-low transition at the die, the bus hold output switches to
| the low state. Similarly, when the input passes though V_trigger_r during
| a low-to-high transition at the die, the bus hold output switches to the
| high state.
|
| If the bus hold submodel has a pullup structure only, V_trigger_r provides
| the time when its pullup is turned on and V_trigger_f or Off_delay provides
| the time when it is turned off, whichever occurs first. Similarly, if the
| submodel has a pulldown structure only, V_trigger_f provides the time when
| its pulldown is turned on and V_trigger_r or Off_delay provides the time
| when it is turned off, whichever occurs first. The required V_trigger_r
| and V_trigger_f voltage entries can be set to values outside of the input
| signal range if the pullup or pulldown structures are to be held on until
| the Off_delay turns them off.
|
| The starting mode for each of the submodels which include the Off_delay
| subparameter of the [Submodel Spec] keyword is the off state. Also, while
| two submodels provide the desired operation, either of the submodels may
| exist without the other to simulate turning on and off only a pullup or a
| pulldown current.
|
| No additional keywords are needed for this functionality.
|-----------------------------------------------------------------------------
|
| Complete Bus Hold Model Example:
|
[Submodel] Bus_hold_1
Submodel_type Bus_hold
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_f 1.3 1.2 1.4 | Falling edge trigger
V_trigger_r 3.1 2.6 4.6 | Rising edge trigger
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pulldown]
|
-5V -100uA -80uA -120uA
-1V -30uA -25uA -40uA
0V 0 0 0
1V 30uA 25uA 40uA
3V 50uA 45uA 50uA
5V 100uA 80uA 120uA
10v 120uA 90uA 150uA
|
[Pullup]
|
-5V 100uA 80uA 120uA
-1V 30uA 25uA 40uA
0V 0 0 0
1V -30uA -25uA -40uA
3V -50uA -45uA -50uA
5V -100uA -80uA -120uA
10v -120uA -90uA -150uA
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 2.0/0.50n 2.0/0.75n 2.0/0.35n
dV/dt_f 2.0/0.50n 2.0/0.75n 2.0/0.35n
R_load = 500
|
|-----------------------------------------------------------------------------
|
| Complete Pullup Timed Latch Example:
|
[Submodel] Timed_pullup_latch
Submodel_type Bus_hold
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_r 3.1 2.6 4.6 | Rising edge trigger
                                                     | Values could be set out
                                                     | of range to disable the
                                                     | trigger
V_trigger_f 1.3 1.2 1.4 | Falling edge
trigger[Submodel] Dynamic_Output_r
Submodel_type Fall_back
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_f -10.0 -10.0 -10.0 | Falling edge trigger
                                                     | set out of range to
                                                     | disable trigger
V_trigger_r 3.1 2.6 4.6 | Rising edge trigger
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pullup]
|
-5V 100mA 80mA 120mA
0V 0 0 0
10v -200mA -160mA -240mA
|
| [Pulldown] table omitted to signify an Open_source Submodel.
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 1.5/0.50n 1.43/0.75n 1.58/0.35n
dV/dt_f 1.5/0.50n 1.43/0.75n 1.58/0.35n
R_load = 50
|
|-----------------------------------------------------------------------------
[Submodel] Dynamic_Output_r
Submodel_type Fall_back
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_f -10.0 -10.0 -10.0 | Falling edge trigger
                                                     | set out of range to
                                                     | disable trigger
V_trigger_r 3.1 2.6 4.6 | Rising edge trigger
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pullup]
|
-5V 100mA 80mA 120mA
0V 0 0 0
10v -200mA -160mA -240mA
|
| [Pulldown] table omitted to signify an Open_source Submodel.
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 1.5/0.50n 1.43/0.75n 1.58/0.35n
dV/dt_f 1.5/0.50n 1.43/0.75n 1.58/0.35n
R_load = 50
|
|-----------------------------------------------------------------------------

Off_delay 3n 5n 2n | Delay to turn off the
                                                     | pullup table
|
| Note that if the input signal goes above the V_trigger_r value, the
| pulldown structure will turn off even if the timer didn't expire yet.
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pulldown]
|
-5V -100uA -80uA -120uA
-1V -30uA -25uA -40uA
0V 0 0 0
1V 30uA 25uA 40uA
3V 50uA 45uA 50uA
5V 100uA 80uA 120uA
10v 120uA 90uA 150uA
|
| [Pullup] table is omitted to signal Open_source functionality
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 2.0/0.50n 2.0/0.75n 2.0/0.35n
dV/dt_f 2.0/0.50n 2.0/0.75n 2.0/0.35n
R_load = 500
|
|=============================================================================

**** This section is added:

|=============================================================================
|=============================================================================
|
| Fall Back:
|
| When the Submodel_type subparameter under the [Submodel] keyword is set to
| Fall_back, the added model describes the fall back functionality. This
| submodel can be used to model drivers that reduce their strengths and
| increase their output impedances during their transitions. The fall back
| function can be considered opposite of the bus hold function, but there
| some details discussed below that are unique.
|
| Existing keywords and subparameters are used to describe fall back models.
| The [Pullup] and [Pulldown] tables both are used to define an internal
| buffer that is triggered switch to its opposite state. This switching
| transition is specified by a [Ramp] keyword or by the [Rising Waveform] and
| [Falling Waveform] keywords. The usage rules for these keywords are the
| same as under the [Model] keyword. In particular, at least either the
| [Pullup] or [Pulldown] keyword is required. Also, the [Ramp] keyword is
| required, even if the [Rising Waveform] and [Falling Waveform] tables exist.
| However, the voltage ranges and reference voltages are inherited from the
| top-level model.
|
| For fallback submodels, the [Submodel Spec] keyword, V_trigger_r, and
| V_trigger_f are required. Unlike the bus hold model, the Off_delay
| subparameter is not permitted. Devices which have both pullup and pulldown
| structures can be modeled using two submodels, one for the rising cycle
| and one for the falling cycle.
|
| The transition is triggered by action at the die using the [Submodel Spec]
| V_trigger_r and V_trigger_f subparameters as follows:
|
| SIMULATOR RISING CYCLE:
|
| Prior Vdie Rising Edge Vdie > V_trigger_r
| State Transition Transition
|
| low/none <= V_trigger_r low-to-high high-to-low
| > V_trigger_r Set/stays low Stays low
|
| high <= V_trigger_r Stays high high-to-low
| > V_trigger_r high-to-low Stays low
|
| SIMULATOR FALLING CYCLE:
|
| Prior Vdie Falling Edge Vdie < V_trigger_f
| State Transition Transition
|
| high/none => V_trigger_f high-to-low low-to-high
| < V_trigger_f Set/stays high Stays high
|
| low <= V_trigger_f Stays low high-to-low
| > V_trigger_f low-to-high Stays high
|
| The prior state of "none" describes the initial setting for the first
| simulator edge encountered, either RISING or FALLING. After that the
| prior state is tracked.
|
| One application is to configure the submodel with one pullup structure only.
| At the beginning of the rising edge cycle, the pullup is turned on to the
| high state. When the die voltage passes V_trigger_r, the pullup structure
| is turned off. Because only the pullup structure is used, the off state is
| the same as a high-Z state. During the falling transition, the pullup
| remains in the high-Z state. The V_trigger_f is set out of range, so no
| futher change of state occurs. With this approach, the overall rising
| transition starts by turning the fall back submodel turned on. This
| submodel is triggered to drop out after the output die voltage passes a
| trigger voltage, and it remains off until the next rising transition is
| initiated.
|
| A similar submodel consisting of only a pulldown structure could be
| constructed to provide added drive strength only at the beginning of the
| falling cycle. The complete IBIS model would have both submodels to give
| added drive strength for both the start of the rising and the start of the
| falling cycles.
|
| No additional keywords are needed for this functionality.
|-----------------------------------------------------------------------------
|
| Complete Dynamic Output Model Example Using Two Submodels:
|
[Submodel] Dynamic_Output_r
Submodel_type Fall_back
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_f -10.0 -10.0 -10.0 | Falling edge trigger
                                                     | set out of range to
                                                     | disable trigger
V_trigger_r 3.1 2.6 4.6 | Rising edge trigger
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pullup]
|
-5V 100mA 80mA 120mA
0V 0 0 0
10v -200mA -160mA -240mA
|
| [Pulldown] table omitted to signify an Open_source Submodel.
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 1.5/0.50n 1.43/0.75n 1.58/0.35n
dV/dt_f 1.5/0.50n 1.43/0.75n 1.58/0.35n
R_load = 50
|
|-----------------------------------------------------------------------------
|
[Submodel] Dynamic_Output_f
Submodel_type Fall_back
|
[Submodel Spec]
| Subparameter typ min max
|
V_trigger_r 10.0 10.0 10.0 | Rising edge trigger
                                                     | set out of range to
                                                     | disable trigger
V_trigger_f 1.3 1.2 1.4 | Falling edge trigger
|
| typ min max
| [Voltage Range] 5.0 4.5 5.5
| Note, the actual voltage range and reference voltages are inherited from
| the top-level model.
|
[Pulldown]
|
-5V -100mA -80mA -120mA
0V 0 0 0
10v 200mA 160mA 240mA
|
| [Pullup] table omitted to signify an Open_drain Submodel.
|
|-----------------------------------------------------------------------------
|
[Ramp]
| typ min max
dV/dt_r 1.5/0.50n 1.43/0.75n 1.58/0.35n
dV/dt_f 1.5/0.50n 1.43/0.75n 1.58/0.35n
R_load = 50
|
|-----------------------------------------------------------------------------

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

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

The AVC technology is structured using various trade marked terms such as
Dynamic Output Control(tm), Dynamic Control Output(tm), etc. They are
designed to operate by starting at full strength, but finishing at a reduced
strength (higher impedance) when the output voltage passes through a trigger
voltage. The final higher impedance usually matches better the load (such as
a transmission line equivalent circuit of the printed circuit board trace) to
produce better signal integrity matching conditions.

The operation is opposite of the Bus_hold submodel which is triggered to
turn on when the die voltage passes a threshold voltage. So a bus hold
structure cannot be configured or modified to produce this "fall back"
effect.

BIRD73 proposes a new submodel which mimics the opposite effect. The main
idea is that when the output voltage passes a trigger voltage, a rising
transition buffer changed to a falling transition, and a falling transition
buffer is changed to a rising transition. The two existing [Submodel]
subparameters V_trigger_r and V_trigger_f are used for the fall back
operation.

Unlike the bus hold submodel, the rules for setting the initial state are
more complicated. Furthermore, prior history or conditions could already
nullify some transitions. Within a simulator rising edge cycle, 0, 1 or 2
transitions are possible. One can be initiated at the start of the cycle,
and the other initiated when the output voltage passes V_trigger_r. Several
initialization and switching conditions exist, and a table is used to
document the allowable fixed and transition states:

SIMULATOR RISING CYCLE:

  Prior Vdie Rising Edge Vdie > V_trigger_r
  State Transition Transition

  low/none <= V_trigger_r low-to-high high-to-low
> V_trigger_r Set/stays low Stays low

  high <= V_trigger_r Stays high high-to-low
> V_trigger_r high-to-low Stays low

SIMULATOR FALLING CYCLE:

  Prior Vdie Falling Edge Vdie < V_trigger_f
  State Transition Transition

  high/none => V_trigger_f high-to-low low-to-high
                < V_trigger_f Set/stays high Stays high

  low <= V_trigger_f Stays low high-to-low
> V_trigger_f low-to-high Stays high

The prior state of "none" describes the initial setting for the first
simulator edge encountered, either RISING or FALLING. After that the
prior state is tracked.

The number of transitions for each simulator cycle is limited to two or less.
It might be possible to connect several fall back and bus hold submodels in
a manner and with different V_trigger_r and V_trigger_f values to work
against each other to cause the Vdie to move above and below the V_trigger_*
values several times within a cycle. There does not appear to be any
practical reason to make the above state and transition tables more
complicated to account for opposite direction movement (or oscillation)
around V_trigger_*. So after the RISING or FALLLING transitions are
initiated, some states are simply held constant regardless of potential
oscillations. Such fixed stated are defined by "Stays high" or "Stays low".

The rules are set to work in a manner consistent with the bus hold submodel.
However, Off_delay subparameter is not supported here. Nor is the opposite
acting subparameter proposed that might be called "Off_delay" that might
add one more transition reversal after a V_trigger_* transition. There does
not appear to be any practical need for such an extension which would add
complication to the state and transition conditions above.

While a complete set of states and transitions are defined, the most
practical implementation for AVC technology is intended to be done with
adding two submodels, one with only a [Pullup] table for rising edge
impedance control, and one with only a [Pulldown] table for falling edge
impedance control. With this setup, the corresponding "off" states will
be high-Z making each submodel function independently for each edge only
to increase the impedance of the final state of the buffer. As in other
submodels, letting the V_trigger_* values to be set out of range is used
to keep the off state of the submodel in the high-Z mode. This is shown
in an example.

The need for providing the new functionality currently exists and is proposed
for IBIS Version 4.0 as a shorter term solution. BIRD73 also provides the
basis for considering a more advanced solution that could be achieved using
a proposed IBIS-X Macro language. This later solution could also provide more
detail and a superset of what is currently practical for Version 4.0.

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

ANY OTHER BACKGROUND INFORMATION:

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



This archive was generated by hypermail 2b28 : Thu Aug 02 2001 - 19:59:50 PDT