Subject: IBIS BIRD57 - Timed Bus Hold Extension

From: [email-masked] (Bob Ross)
Date: Wed, 9 Dec 98 16:52:21 PST

To All:

BIRD57 is being sent out again since copies received on some
systems had extra characters in the text.

Bob Ross
Mentor Graphics

IBIS folks:

BIRD57 is issued at the last minute to deal with a real-life "timed latch"
implementation situation which could not be modeled with the current
Bus_hold model.  The proposed resolution is to add a subparameter to the
[Submodel Spec] keyword.

Because these changes are required to model exisiting devices, it would be
very important to incorporate them in version 3.2 of the IBIS spec.  Since
the changes are relatively minor, it would be desirable to vote on this BIRD
on the December 18, 1998 meeting provided no serious technical issues arise.

Arpad Muranyi
Intel Corporation
****************************************************************************** 
******************************************************************************

BIRD ID#:       57
ISSUE TITLE:    Timed Bus Hold Extension
REQUESTER:      Bob Ross, Mentor Graphics,
                Arpad Muranyi & Stephen Peters, Intel 
DATE SUBMITTED: December 4, 1998
DATE ACCEPTED BY IBIS OPEN FORUM: Pending

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

STATEMENT OF THE ISSUE:

A new application of the bus hold functionality involves turning off
(putting in a Hi Z state) the bus hold circuitry after a period of time. 
The Bus_hold submodel can be extended to support this functionality with the
addition of a delay subparameter in the [Submodel Spec] keyword.

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

STATEMENT OF THE RESOLVED SPECIFICATIONS:

The unofficial IBIS Version 3.2 document that includes the BIRD48.4, BIRD49.4 
and BIRD50.3 extensions is used as the basis for showing how BIRD57 would be
implemented.

The original [Submodel Spec] keyword is modified by the addition of a new
subparameter called Off_delay.  The changes are indicated by an asterisk at
the beginning of each line (|*) that it effects.

|============================================================================= 
|     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 or tab or tab character.  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 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

|** New Example added here
|
| 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
|
|** End of new example

The revised Bus Hold Section shows modifications by |* lines to document the
new Off_delay subparameter and application information including a new
example:

|============================================================================= 
|
| 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 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 model 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
|
|** A Second Example is inserted below 
|
|----------------------------------------------------------------------------- 
|
| 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
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
|
|** End of Second Example
|=============================================================================

ANALYSIS PATH/DATA THAT LED TO SPECIFICATION:

BIRD57 is basically an extension of BIRD50.3.  BIRD50.3 describes a static 
bus hold circuit which is controlled only by the pad voltage of the device.

However, some devices can have the bus hold circuits which are turned on 
by the pad voltage, but are turned off by an internal timer of clock 
signal.  These devices could not be modeled using the BIRD50.3 extensions. 
BIRD57 provides the extension to model such devices.

Several approaches were considered:

  Modify or Enhance the [Driver Schedule] keyword for Input models
    (perhaps including a new keyword)
  Create a new Submodel_type for 'Timed_latch' as a new Submodel extension 
  Enhance the Bus_hold Submodel

The first choice builds upon an older approach versus the newer, preferred 
Submodel approach.  The second choice was considered, but in our discussions 
we would have had to document mew meanings for some transition relationships 
related to a desired Hi-Z mode.

The third choice was selected because the existing Bus Hold description for 
"Open_drain" or Open_source" functionality could be easily extended.  The 
off state of an Open_* device is equivalent to a Hi-Z mode.

Two Submodels are used since the off transition of each of the Submodels 
can be entered by the [Ramp] information or corresponding [Rising Waveform]
or [Falling Waveform] table.  A single Submodel is permitted for just turning 
on and off a pullup or pulldown current.

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

ANY OTHER BACKGROUND INFORMATION:

BIRD57 evolved from discussions between Bob Ross, Arpad Muranyi, and Stephen 
Peters on December 3, 1998 to resolve how IBIS Version 3.2 would handle a 
new active latch that is being implemented in digital buffers.
******************************************************************************