***************************************************************************** ***************************************************************************** Buffer Issue Resolution Document (BIRD) BIRD ID#: 7.2 ISSUE TITLE: Open Specification Completion REQUESTOR: Bob Ross, Interconnectix, Inc. DATE SUBMITTED: January 13, 1994 DATE REVISED: January 31, 1994, February 1, 1994 DATE ACCEPTED BY IBIS OPEN FORUM: February 18, 1994 ***************************************************************************** ***************************************************************************** STATEMENT OF THE ISSUE: Model_type "Open_drain" provides insufficient coverage for "open" sided models. For completeness, additional "open" Model_types are need. Also, necessary ECL related Model_types are added for clarity and to avoid several tests required before processing the [Model]. Methods to produce [Ramp] data need to be expanded for "open" devices. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: Under the keyword [Model], additional Model_type selections are added: I/O_open_drain, Open_sink, I/O_open_sink, Open_source, I/O_open_source, Output_ECL, I/O_ECL, Input_ECL. The [Model] keyword specification in Version 1.1 is edited to show these Model_types. Changed text is separated by blank lines. NOTES ON DATA DERIVATION METHODS is revised to clarify the [Ramp] measurements for open models. The [Model] keyword is revised to the following: |============================================================================== | Keyword: [Model] | Required: Yes | Description: Used to define a model, and its attributes | Sub-Params: Model_type, Polarity, Enable, Vinl, Vinh, C_comp | Usage Rules: Each Input, Output, I/O, 3-state, Open_drain, I/O_open_drain, | Open_sink, I/O_open_sink, Open_source, I/O_open_source, | Input_ECL, Output_ECL, and I/O_ECL model must | begin with the keyword [Model]. The model_name must match | the one that is listed under the [Pin] keyword and must not | contain more than 20 characters. An .ibs file must contain | enough [Model] keywords to cover all of the model_names | specified under the [Pin] keyword, except for those | model_names which use reserved words (POWER, GND and NC). | Model_names with reserved words are an exception and | they do not have to have a corresponding [Model] keyword. | C_comp is allowed to use "NA" for the min and max values only. | Other Notes: A complete [Model] description normally contains the following | keywords: [Voltage range], [Pullup], [Pulldown], [GND_clamp], | [POWER_clamp], and [Ramp]. However, some models may have only | a subset these keywords. For example, an input structure | normally only needs the [Voltage range], [GND_clamp], and | possibly the [POWER_clamp] keywords. | Model_types with "open_sink" specify that the output has | an OPEN side (the [Pullup] keyword is not used or I = 0mA | for all voltages specified) AND the output SINKS current. | Model_types with "open_drain" have the identical meaning and | are retained for backward compatibility. Model_types with | "open_source" specify that the output has an OPEN side (the | [Pulldown keyword is not used or I = 0mA for all voltages | specified) AND the output SOURCES current. Model_types with | "_ECL" specify that the model represents and ECL type logic | which follows different conventions for the [Pulldown] keyword. | Note that C_comp defines the silicon die capacitance. This | value should not include the capacitance of the package. | |------------------------------------------------------------------------------ [Model] model_name Model_type Input, Output, I/O, 3-state, Open_drain, I/O_open_drain, Open_sink, I/O_open_sink, Open_source, I/O_open_source, Input_ECL, Output_ECL, I/O_ECL | List one only Polarity Non-Inverting, Inverting | List one only, -if any Enable Active-High, Active-Low | List one only, -if any | Signals RAS, CAS, A(0-64), D(0-128),... | Local list, -if desired Vinl = 0.8V | input logic "low" DC voltage, -if any Vinh = 2.0V | input logic "high" DC voltage, -if any | variable typ min max C_comp 12.0pF 10.0pF 15.0pF |============================================================================== Section 3) on NOTES ON DATA DERIVATION METHOD is revised as follows: 3) Ramp Rates: The ramp rates (listed in AC characteristics below) should be derived as follows: 1. Start with the silicon model, remove all packaging. 2. If: The Model_type is one of the following: Output, I/O, or 3-state (not open or ECL types); Then: Attach a 50 ohm resistor to GND to derive the rising edge ramp. Attach a 50 ohm resistor to POWER to derive the falling edge ramp. If: the Model_type is Output_ECL or I/O_ECL; Then: Attach a 50 ohm resistor to the termination voltage (Vterm = VCC - 2v). Use this load to derive both the rising and falling edges. If: The Model_type is either an open_sink type or open_drain type; Then: Attach either a 50 ohm resistor or the vendor suggested termination resistance to either POWER or the vendor suggested termination voltage. Use this load to derive both the rising and falling edges. If: The Model_type is an open_source type; Then: Attach either a 50 ohm resistor or the vendor suggested termination resistance to either GND or the vendor suggested termination voltage. Use this load to derive both the rising and falling edges. 3. and 7.: **** Delete Items 3. and 7. **** 4. - 6.: **** Renumber these Items as 3. - 5. **** ******************************************************************************* ANALYSIS PATH/DATA THAT LED TO SPECIFICATION: Open-drain is corrected to Open_drain as a Model_type selection and is kept for backward compatibility. I/O_open_drain is added. The new types with "open_sink" and "open_source" are added to generically describe an output with either an open [Pullup] or [Pulldown] and an output that sinks or sources current. Without requiring an explicit test, these new Model_types signal that the [Pullup] or [Pulldown] tables are not defined or are not to be used if defined. Model_types for ECL are defined to fill the functionality table below. Conditions: | Model_type: | pullup&down: | Output 3-state I/O no pullup: | Open_sink I/O_open_sink | Open_drain I/O_open_drain no pulldown: | Open_source I/O_Open_source no pullup/dn:| Input ECL up&down: | Output_ECL I/O_ECL ECL no up/dn:| Input_ECL Note, "ECL" is intended to be generic. It can be used to model "PECL" logic spanning from Vcc = 5V to GND. Input_ECL is redundant, but may signal the simulator to use different default Vinl and Vinh values if these OPTIONAL (a BIRD2.1 issue) input parameters are not specified. For the "open" Model_types there exists several other naming methods based on comments received and some combinations I though of. BIRD7.2 is written in terms of (0). (0) Retain "Open_drain" and add "I/O_open_drain" for Version 1.1 consistency. Add "open_sink" and "open_source" Model_types. (5 new terms, 2 redundant terms). no pullup: | Open_sink I/O_open_sink | Open_drain I/O_open_drain no pulldown: | Open_source I/O_open_source (1) Use "up" and "down". Retain Open_drain for Version 1.1 compatibility as a redundant Model_type. (Bird7.1 - 4 new terms, 1 redundant term). no pullup: | Open_up I/O_Open_up | Open_drain no pulldown: | Open_down I/O_Open_down (2) Retain "Open_drain", but use "up" & "down" for generic names elsewhere. (3 new terms). no pullup: | Open_drain I/O_Open_up no pulldown: | Open_down I/O_Open_down (3) Use "drain", "collector", "emitter". "emitter is generic for CMOS logic & TTL no pulldown devices. (5 new terms). no pullup: | Open_drain I/O_Open_drain | Open_collector I/O_Open_collector no pulldown: | Open_emitter I/O_Open_emitter (4) Use "drain" generically for "up", and "source" generically for "down" for TTL and CMOS logic. (Bird7.0 - 3 new terms) no pullup: | Open_drain I/O_Open_drain no pulldown: | Open_source I/O_Open_source (5) Use "Open_drain" generically to mean "Open". Test for no pullup or no pulldown in [Model]. (1 new term) no pullup: | Open_drain I/O_Open_drain no pulldown: | Open_drain I/O_Open_drain (6) Retain "Open_drain, but use "Open" generically to mean "Open". Test for no pullup or no pulldown in [Model]. (2 new terms) no pullup: | Open_drain I/O_Open no pulldown: | Open I/O_Open (7) Use "Open" generically to mean "Open". Retain "Open_drain" for Version 1.1 compatibility. Test for no pullup or no pulldown in [Model]. (2 new terms, 1 redundant term). no pullup: | Open I/O_Open | Open_drain no pulldown: | Open I/O_Open Currently, the user may choose to model the "Open" side directly through control of the [Pullup] and [Pulldown] keyword. Omission of [Pullup] could be interpreted as an "open_sink" device. Omission of [Pulldown] could be interpreted as an "open_source" device. However, this method was never specified in IBIS Version 1.1 as the correct method and therefore was not the only method to specify "Open" devices. The user may choose to model the "Open" side directly through control of the [Pullup] and [Pulldown] data. If all of the data contains I(typ) = 0mA entries (a minimum of two entries are required), then that [Model] could be interpreted as "open". Zero valued [Pullup] data corresponds to "open_sink" or "open_drain" types. Zero valued [Pulldown] data corresponds to "open_source" types. Without the additional Model_types, the above two approaches plus the existance of "Open_drain" provide a confusing and inconsistent specification and require the simulator to perform a variety of tests before being able to process the data. The "ECL" model types are added to avoid similar confusion. One final consideration is that whoever generates the [Model], whether through simulation or measurement, must know beforehand the Model_type in order to generate the [Ramp] data according to the rules. Therefore it is reasonable to require that this information be included as part of a Version 2.0 specification. This avoids the inefficiency of forcing the simulator to perform many tests before processing the IBIS data. The simulator can then translate the data into its internal format and apply its own simulator- specific compaction schemes (the simulator does not have to provide all of the Model_types). With BIRD7.2, the IBIS Statement of Intent within the first paragraph is preserved: "the intention of this template is to specify a consistent format that can be parsed by software, allowing each simulation vendor to derive models compatible with their own product." ****************************************************************************** ANY OTHER BACKGROUND INFORMATION: Jon Powell initiated the issue in Email of October 1993 questioning whether we needed "I/O_OPEN_DRAIN" and I/O_OPEN_COLLECTOR". He referred to the SN74ALS641 Open Collector Tranceiver as a specific example. Kellee Crisafulli in Email of July 1993 considered "open output devices (open-drain, open-collector, open-source)". Furthermore, he referred to "open collector npn" and "open collector pnp" devices. In the discussion, he proposed new Optional (Required for open-side devices) keywords dV/dt_r_off (turn off time of high side driver) and dv/dt_f_off (turn off time of low side driver). Included it the discussion was the requirement that "If the pulldown table is missing then dV/dt_r_off is required" and "If the pullup table is missing then dV/dt_f_off is required". Kellee elaborated further on the measurement/extraction issues of the ramp values. BIRD7.1 now addresses the ramp specification. The modifications on Notes on Derivations Method by Kellee Crisafulli and Stephen Peters are added with changes for notation consistency. The usage of "Open_up" and "Open_down" is an adaptation of one of Arpad Muranyi's comments on BIRD7 suggesting "open pullup" and "open pulldown". Kellee Crisafulli's last suggestion on notation has been adopted in BIRD7.2. ******************************************************************************