****************************************************************************** ****************************************************************************** BIRD ID#: 57.1 ISSUE TITLE: Timed Bus Hold Extension REQUESTER: Bob Ross, Mentor G., Arpad Muranyi & Stephen Peters, Intel DATE SUBMITTED: December 4, 1998, December 18, 1998 DATE ACCEPTED BY IBIS OPEN FORUM: December 18, 1998 ****************************************************************************** ****************************************************************************** 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 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 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 | |** 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. BIRD57.1 is issued with some minor editoral changes captured at the December 18, 1998 IBIS meeting. ****************************************************************************** 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. ******************************************************************************