****************************************************************************** ****************************************************************************** BIRD ID#: 94.2 ISSUE TITLE: Clarifications on [Diff Pin] Parameters REQUESTER: Arpad Muranyi, Intel Corp. DATE SUBMITTED: February 22, 2005 DATE REVISED: March 4, 2005; July 15, 2005 DATE ACCEPTED BY IBIS OPEN FORUM: September 16, 2005 ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: In this version of the BIRD, the default value of vdiff is the same as it is in the current specification, 200 mV when it is NA. A note was added that the timing measurement starts when the output voltages of the differential buffer are equal, i.e. when they are crossing. The paragraph which documents that any model type combinations are allowed was removed. The BIRD attempts to clarify a number of issues, listed here: List of issues: 1) The statement: "The third column, vdiff, contains the specified output and differential threshold voltage between pins if the pins are Input or I/O model types" The problem with this statement is that, contrary to what it says, vdiff has nothing to do with outputs. 2a) The statement: "If vdiff is not defined ... vdiff is set to the default value of 200 mV" directly contradicts the statement: "If "NA" is entered in the vdiff, tdelay_typ, or tdelay_min columns, its entry is interpreted as 0 V or 0 ns", since the only way vdiff can be "not defined" if its value contains an "NA". 2b) The statement: "If a pin is a differential input pin, the differential input threshold (vdiff) overrides and supersedes the need for Vinh and Vinl" only talks about "input" pins, while this rule is valid for all other model types which have an input, such as an I/O. Also, strictly speaking there is no such thing as "a differential ... pin" (in singular). 3a) Removed. 3b) Under the [External Model] keyword, the sentence: "The models referenced by each pin listed under [Diff Pin] MUST be the same" does not state it clearly that it is the name of the [Model] or [Model Selector] which must match. Also, when there are multiple entries under a [Diff Pin] keyword, this sentence can easily be misinterpreted to imply that the above rule must be enforced for all entries, while the intention for this rule is per entry (line) only. 3c) There is no mention in the specification how the case should be handled when there are [Model Selector] names on the pins which are associated by the [Diff Pin] keyword as a differential pair. 3d) The specification doesn't prohibit the combination of a [Model] name with a [Model Selector] name on those pins which are associated as a differential pair by the [Diff Pin] keyword. 4) The following statement has several problems: "If vdiff is not defined for a pin that is defined as requiring a Vinh by its [Model] type, vdiff is set to the default value of 200 mV" 4a) Vinl is not mentioned, yet Vinh and Vinl are usually always used together. 4b) Vinh and Vinl are not required by the specification even for buffers which have receivers in them. Default values of 0.8 V and 2.0 V are defined by the specification for the case when Vinh and Vinl are missing even if they would be needed according to the model type. 4c) The statement implies that the parser and/or simulators are expected to look inside the [Model]s which are being associated as a differential pair to find out what the model type is in order to decide whether vdiff should get a 200 mV default value in case the entry for it is "NA". Given problem #3 above, this check may return erroneous or conflicting results if the model types of the two [Model]s are not the same. 4d) The specification doesn't mention whether the values of the [Diff Pin] parameters ("NA" or number) have an implied indication for the model type, and whether this meaning has to correspond to the model type of the [Model]s referenced through the [Pin] list. 5) Removed. 6) Removed. 7) Comments in the examples are confusing, because it is not explained why and how the examples are associated with specific model types. This may make the reader think that the positioning of the "NA"s have something to do with the model type, but the comments don't work that way either. For example, the first example using pins 3 and 4, the comment says "Input or I/O pair". If having "extra data" in the tdelay columns is allowed for an Input type, then the example should also mention that it can be used for an Output model type. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: Original [Diff Pin] section: |============================================================================= | Keyword: [Diff Pin] | Required: No | Description: Associates differential pins, their differential threshold | voltages, and differential timing delays. | Sub-Params: inv_pin, vdiff, tdelay_typ, tdelay_min, tdelay_max | Usage Rules: Enter only differential pin pairs. The first column, [Diff | Pin], contains a non-inverting pin name. The second column, | inv_pin, contains the corresponding inverting pin name for | I/O output. Each pin name must match the pin names declared | previously in the [Pin] section of the IBIS file. The third | column, vdiff, contains the specified output and differential | threshold voltage between pins if the pins are Input or I/O | model types. For output only differential pins, the vdiff | entry is 0 V. The fourth, fifth, and sixth columns, | tdelay_typ, tdelay_min, and tdelay_max, contain launch delays | of the non-inverting pins relative to the inverting pins. The | values can be of either polarity. | | If a pin is a differential input pin, the differential input | threshold (vdiff) overrides and supersedes the need for Vinh | and Vinl. | | If vdiff is not defined for a pin that is defined as requiring | a Vinh by its [Model] type, vdiff is set to the default value | of 200 mV. | | Other Notes: The output pin polarity specification in the table overrides | the [Model] Polarity specification such that the pin in the | [Diff Pin] column is Non-Inverting and the pin in the inv_pin | column is Inverting. This convention enables one [Model] to | be used for both pins. | | The column length limits are: | [Diff Pin] 5 characters max | inv_pin 5 characters max | vdiff 9 characters max | tdelay_typ 9 characters max | tdelay_min 9 characters max | tdelay_max 9 characters max | | Each line must contain either four or six columns. If "NA" is | entered in the vdiff, tdelay_typ, or tdelay_min columns, its | entry is interpreted as 0 V or 0 ns. If "NA" appears in the | tdelay_max column, its value is interpreted as the tdelay_typ | value. When using six columns, the headers tdelay_min and | tdelay_max must be listed. Entries for the tdelay_min column | are based on minimum magnitudes; and tdelay_max column, | maximum magnitudes. One entry of vdiff, regardless of its | polarity, is used for difference magnitudes. |----------------------------------------------------------------------------- [Diff Pin] inv_pin vdiff tdelay_typ tdelay_min tdelay_max | 3 4 150mV -1ns 0ns -2ns | Input or I/O pair 7 8 0V 1ns NA NA | Output* pin pair 9 10 NA NA NA NA | Output* pin pair 16 15 200mV 1ns | Input or I/O pin pair 20 19 0V NA | Output* pin pair, tdelay = 0 22 21 NA NA | Output*, tdelay = 0 | * Could be Input or I/O with vdiff = 0 | |============================================================================= The proposed changes are noted with a "*" character at the beginning of the lines. Double star "**" indicates lines which have changed from the first version of this BIRD. |============================================================================= | Keyword: [Diff Pin] | Required: No |*Description: Associates differential pins and defines their differential |* receiver threshold voltage and differential driver timing |* delays. | Sub-Params: inv_pin, vdiff, tdelay_typ, tdelay_min, tdelay_max | Usage Rules: Enter only differential pin pairs. The first column, [Diff | Pin], contains a non-inverting pin name. The second column, | inv_pin, contains the corresponding inverting pin name for | I/O output. Each pin name must match the pin names declared |** previously in the [Pin] section of the IBIS file. The third |* column, vdiff, contains the specified differential receiver |* threshold voltage between the inverting and non-inverting |** pins for Input or I/O model types. The fourth, fifth, and |** sixth columns, tdelay_typ, tdelay_min, and tdelay_max, |** contain launch delays of the non-inverting pins relative to |** the inverting pins. All of the numerical entries may be a |** positive, zero, or negative number. | |** For differential Input or I/O model types, the differential |** input threshold (vdiff) overrides and supersedes the need |** for Vinh and Vinl. | | Other Notes: The output pin polarity specification in the table overrides | the [Model] Polarity specification such that the pin in the | [Diff Pin] column is Non-Inverting and the pin in the inv_pin | column is Inverting. This convention enables one [Model] to | be used for both pins. | | The column length limits are: | [Diff Pin] 5 characters max | inv_pin 5 characters max | vdiff 9 characters max | tdelay_typ 9 characters max | tdelay_min 9 characters max | tdelay_max 9 characters max | |*** REMOVE THIS PARAGRAPH |** Note that there are no restrictions on what type of model |** references pins may have in the third column of the [Pin] |** keyword when associated as a differential pair. [Model] |** names, [Model Selector] names, or the combination of these |** two are all legal on the pins referenced by an entry in the |** [Diff Pin] keyword. |*** END OF REMOVE |** |** Each line must contain either four or six columns. Using |** four columns is an equivalent of entering "NA"s in the fifth |*** and sixth columns. An "NA" in the vdiff column will be |*** interpreted as a 200 mV default differential receiver |*** threshold. "NA"s in the tdelay_typ, or tdelay_min columns |*** are interpreted as 0 ns. If "NA" appears in the |** tdelay_max column, its value is interpreted as the tdelay_typ |** value. When using six columns, the headers tdelay_min and | tdelay_max must be listed. Entries for the tdelay_min column | are based on minimum magnitudes; and tdelay_max column, | maximum magnitudes. One entry of vdiff, regardless of its | polarity, is used for difference magnitudes. | |** The positioning of numerical entries and/or "NA" must not be |** used as an indication for the model type. The model type is |*** determined by the model type parameter inside the [Model]s |** referenced by the [Diff Pin] keyword, regardless of what the |** [Diff Pin]'s entries are. The simulator may ignore the |** vdiff or the tdelay_*** parameters if not needed by the |** model type of the [Model], or use the default values defined |** above if they are needed but not provided in the [Diff Pin] |** keyword. For example, an "NA" in the third column (vdiff) |** does not imply that the model type is Output, or three |** "NA"-s in the tdelay columns does not mean that the model |** type is Input. |*** |*** Note that the starting point of the flight time measurements |*** will occur when the differential driver's output waveforms |*** are crossing, i.e. when the differential output voltage is |*** zero, and consequently Vmeas, if defined will be ignored. |----------------------------------------------------------------------------- [Diff Pin] inv_pin vdiff tdelay_typ tdelay_min tdelay_max | ** 3 4 150mV -1ns 0ns -2ns |** For Input, tdelay_typ/min/max ignored |** For Output, vdiff ignored |** ** 7 8 0V 1ns NA NA **16 15 200mV 1ns |** For Input, tdelay_typ ignored |** For Output, vdiff ignored and tdelay_min = 0ns and tdelay_max = 1ns |** For I/O, tdelay_min = 0ns and tdelay_max = 1ns |** ** 9 10 NA NA NA NA **22 21 NA NA |*** For Input, vdiff = 200 mV |** For Output, tdelay_typ/min/max = 0ns |*** For I/O, vdiff = 200 mV and tdelay_typ/min/max = 0ns |** **20 19 0V NA |** For Output, vdiff ignored and tdelay_typ/min/max = 0ns |** For I/O, tdelay_typ/min/max = 0ns |============================================================================= In addition, the sentence below Fig 10 in the Usage Rules section of the [External Model] and [End External Model]: | ... The models referenced by each pin listed | under [Diff Pin] MUST be the same. should be replaced by: |* ... The [Model] names or [Model Selector] |** names referenced by the pair of pins listed in an entry of |* the [Diff Pin] MUST be the same. ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION The above proposal is a result of careful consideration of the various rules and relationships in the existing IBIS v4.1 specification. The changes proposed in this BIRD are done with the purpose of removing any ambiguities and/or contradictions. ***************************************************************************** ANY OTHER BACKGROUND INFORMATION: This version of the BIRD (BIRD94.2) was written based on Bob Ross' comments received via private email on June 4, 2005 which contained a historical review of the specification. This feedback was followed by a couple of discussions in subsequent IBIS Open Forum and IBIS Futures Subcommittee meetings. These discussions revealed that the starting point for timing measurements on differential buffers was never intended to be anything else but 0V, i.e the cross point of the waveforms on the two outputs, consequently vdiff really does not have any "dual meaning" for the driving or receiving mode. Therefore vdiff's only meaning is "receiver threshold" and there is no need for a scondary default value for the driving mode (0 V). The language of the usage rules in this version of the BIRD correctly reflects this concept. The reson behind removing the paragraph which documents that any model type combinations are allowed is that we do not want to advertize something that is basically a flaw in the specificaiton. In the second version of the BIRD (BIRD94.1) the new rules requiring the matching of [Model] or [Model Selector] names, and using the "NA" positions for indicating model type were removed. The explanation of these changes can be found in the "ANY OTHER BACKGROUND INFORMATION" section on the bottom of this document. Therefore this BIRD is now only concerned about clarifications and the removal of the contradiction regarding the default value of vdiff. The first version of this BIRD (BIRD94) included changes which required that the [Model] or [Model Selector] names be matched on pins associated as a differential pair under the [Diff Pin] keyword. In addition, the BIRD attempted to establish rules for using the "NA" entries as an indication for the model type by removing the default value mechanisms. Based on some feedback, these changes were removed from the BIRD for two reasons. 1) There are numerous applications where having different models on each pin of the differential pair is desirable, such as the CAN buffers used in the automotive industry. 2) If pins associated by the [Diff Pin] keyword use [Model Selector] names and the [Model Selector] contains entries having different model types, the [Diff Pin] entry for those pins will have to work for each model type simultaneously. Using the positioning of "NA"s as a model type indicator limits each entry under the [Diff Pin] keyword to just one model type which causes conflicts with [Model Selector]s that have buffers of multiple model types. For these reasons, the following items were removed from the "STATEMENT OF THE ISSUE" section of the first version of the BIRD: 3a) Except for the [External Model] keyword, the specification doesn't spell out any requirements for what [Model] names and model types are allowed on the [Pin] list for those pins which are associated by the [Diff Pin] keyword as a differential pair. Consequently, highly questionable and unlikely differential pairs can be created if, for example, one [Model] of the pair is an input type and the other an output type. 5) No meaningful error checking can be done on the entries of [Diff Pin]. This is due to the fact that the specification defines default values for vdiff and the time delay parameters in case they contain "NA". As a result, no matter what values are present in the [Diff Pin] parameter list, the model type in the [Model]s are the determining factor for how a differential pair is simulated. For one, based on item #3 above, this can be erroneous, but it may also conflict with the intentions implied by the choice of parameters used with the [Diff Pin] keyword. These default value assumptions allow a simulator to complete the simulations successfully without any errors or warnings and produce seemingly correct results without checking for any potential mistakes in the IBIS file. While this may be desirable from the perspective that simulations will be always successful, it is undesirable because serious mistakes can go undetected. 6) The assignment of default values to vdiff and the time delay parameters when their entry is "NA" conflicts with the meaning of "NA" in the [Driver Schedule] keyword, where it has a meaning of "Not Available" i.e. doesn't exist. "NA" should have the same interpretation in the entire specification, regardless of which keyword it is used for. Additionally, if the meaning of "NA" was the same for [Diff Pin] (i.e. "not available"), the parser and simulators could use these parameters for determining whether the differential pair is a receiver, driver, or I/O type. If the result of this check is in conflict with the model type found in the [Model]s, warning or error messages could be generated.******************************************************************************