To all IBIS fans interested, I apologize for the delay in writing this iteration of BIRD58. In this document I am attempting to combine all responses I received after issuing the original BIRD. I hope this iteration will be more acceptable. Thanks, Arpad ============================================================================== ****************************************************************************** ****************************************************************************** BIRD ID#: 58.1 ISSUE TITLE: Driver Schedule keyword clarification REQUESTER: Arpad Muranyi, Intel Corporation DATE SUBMITTED: 3/2/99, 5/5/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 most of the gray areas. In addition to this missing paragraph, some changes have been made to the wording of the description of this keyword for clarity. 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(s) are 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. | |* When a multi-staged buffer is modeled using the [Driver |* Schedule] keyword, all of its stages (including the first |* stage, or normal driver) have to be modeled as scheduled |* models. |* |* If there is support for this feature in a simulator, the |* [Driver Schedule] keyword will cause it to use the |* [Pulldown], [Pulldown Reference], [Pullup], [Pullup |* Reference], [Voltage Range], [Ramp], [Rising Waveform] and |* [Falling Waveform] keywords from the scheduled models |* instead of the top-level model, according to the timing |* relationships described in the [Driver Schedule] keyword. |* Consequently, the keywords in the above list will be ignored |* in the top-level model. Also, all other keywords not shown |* in the above list will be ignored in the scheduled model(s). |* |* However, both the top-level and the scheduled model(s) have |* to be complete models, i.e. they have to obey all rules of |* keyword requirements. |* |* For backwards compatibility reasons and for simulators which |* do not support multi-staged switching, the keywords in the |* above list can be used in the top-level [Model] to describe |* the overall characteristics of the buffer as if it was a |* composite model. It is not guaranteed, however, that such a |* top-level model will yield the same simulation results as a |* full multi-stage model. It is recommended that a "golden | waveform" for the device consisting of a [Rising Waveform] | table and a [Falling Waveform] table be supplied in the | top-level model to serve as a reference for validation. | |* Even though some of the keywords are ignored in the |* scheduled model, it may still make sense in some cases to |* supply correct data with them. One such situation would |* arise when a [Model] is used both as a regular top-level |* model as well as a scheduled 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 |* Fall_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. There are only five valid |* combinations in which these parameters can be used: |* |* 1) Rise_on_dly with Fall_on_dly |* 2) Rise_off_dly with Fall_off_dly |* 3) Rise_on_dly with Rise_off_dly |* 4) Fall_on_dly with Fall_on_dly |* 5) All four delays defined |* (be careful about correct sequencing) |* |* The four delay parameters have the meaning as described |* below. (Note that this description applies to buffer types |* which have both pullup and pulldown structures. For those |* buffer types which have only a pullup or pulldown structure, |* the description for the missing part can be omitted.) |* |* Fall_on_dly is the amount of time that elapses from the |* internal simulator pulse initiating a FALLING edge and the |* t=0 time of the waveform or ramp that turns the IV curve of |* the PULLDOWN device ON, and the t=0 time of the waveform or |* ramp that turns the IV curve of the PULLUP device OFF (if |* they were not turned ON and OFF by another event yet, |* respectively). |* |* Fall_off_dly is the amount of time that elapses from the |* internal simulator pulse initiating a FALLING edge and the |* t=0 time of the waveform or ramp that turns the IV curve of |* the PULLDOWN device OFF, and the t=0 time of the waveform or |* ramp that turns the IV curve of the PULLUP device ON (if |* they were not turned OFF and ON by another event yet, |* respectively). |* |* Rise_on_dly is the amount of time that elapses from the |* internal simulator pulse initiating a RISING edge and the |* t=0 time of the waveform or ramp that turns the IV curve of |* the PULLUP device ON, and the t=0 time of the waveform or |* ramp that turns the IV curve of the PULLDOWN device OFF (if |* they were not turned ON and OFF by another event yet, |* respectively). |* |* Rise_off_dly is the amount of time that elapses from the |* internal simulator pulse initiating a RISING edge and the |* t=0 time of the waveform or ramp that turns the IV curve of |* the PULLUP device OFF, and the t=0 time of the waveform or |* ramp that turns the IV curve of the PULLDOWN device ON (if |* they were not turned ON and OFF by another event yet, |* respectively). |* |* Note that some timing combinations may only be possible if |* the two halves of a complementary buffer are modeled |* separately as two open_* models. | | | 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. | | 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. | |* Notice that the C_comp parameter of a multi-stage buffer is |* defined in the top-level model. The value of C_comp |* therefore includes the total capacitance of the entire |* buffer, including all of its stages. Since the rising and |* falling waveform measurements include the effects of |* C_comp, each of these waveforms must be generated with the |* total C_comp present, even if the various stages of the |* buffer are characterized individually. | | 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." Numerous EMAIL responses were posted after BIRD58 was issued on 3-2-99. Arpad Muranyi had numerous telephone conversations with Bob Ross and posted an EMAIL response on 3-30-99. This response was an attempt to summarize the issues and was discussed in a subsequent IBIS Open Forum teleconference meeting. Arpad Muranyi received an AR to issue BIRD58.1 (this document) based on the additional feedback. ****************************************************************************** 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. ******************************************************************************