Subject: Official IBIS Ver. 2.1 Spec

From: Derrick Duehren <[email-masked]>
Date: Mon, 12 Dec 94 17:55:54 PST

Text item: Text_1

 IBISians,
 
 Attached (as an ASCII file) and posted to vhdl.org pub\ibis\ver2.1 directory, 
 please find the official, ratified IBIS 2.1 specification.
 
 Enjoy - Merry Christmas!
 
 Derrick Duehren
 ------------------------------------------------------------------------------
 XTG TPV Programs Manager, Intel Corp. |  
 Phone (503) 696-4299                  |  "Experience is not what happens to 
 Fax   (503) 696-4904                  |   you; it's what you do with what
 [email-masked]      |   happens to you."
 5200 NE Elam Young Pkwy. JF1-97       |                     - Aldous Huxley
 Hillsboro, OR 97224                   |
 ------------------------------------------------------------------------------

Text item: ver2_1.txt 12/12/94 5:46P

|==============================================================================
| I/O Buffer Information Specification (IBIS) Version 2.1 (12/9/94)
|
| IBIS is a standard for electronic behavioral specifications of integrated
| circuit input/output analog characteristics.
|==============================================================================
| Statement of Intent:
|
| In order to enable an industry standard method to electronically transport
| IBIS Modeling Data between silicon vendors, simulation software vendors, and
| end customers, this template is proposed.  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.
|
| One goal of this template is to represent the current state of IBIS data,
| while allowing a growth path to more complex models / methods (when deemed
| appropriate).  This would be accomplished by a revision of the base
| template, and possibly the addition of new keywords or categories.
|
| Another goal of this template is to ensure that it is simple enough for
| silicon vendors and customers to use and modify, while ensuring that it is
| rigid enough for software simulation vendors to write reliable parsers.
|
| Finally, this template is meant to contain a complete description of the I/O
| elements on an entire component.  Consequently, several models will need to
| be defined in each file, as well as a table that equates the appropriate
| buffer to the correct pin and signal name.
|
| Version 2.0 of this electronic template was finalized by an industry-wide
| group of simulation experts representing various companies and interests.
| "IBIS Open Forum" meetings were held biweekly to accomplish this task.
|
| Commitment to Backward Compatibility.  Version 1.0 is the first valid IBIS
| ASCII file format.  It represents the minimum amount of I/O buffer
| information required to create an accurate IBIS model of common CMOS and
| bipolar I/O structures.  Future revisions of the ASCII file will add items
| considered to be "enhancements" to Version 1.0 to allow accurate modeling
| of new, or other, I/O buffer structures.  Consequently, all future
| revisions will be considered super sets of Version 1.0, allowing backward
| compatibility.  In addition, as modeling platforms develop support for
| revisions of the IBIS ASCII template, all previous revisions of the
| template must also be supported.
|
| Version 1.1 update.  The file "ver1_1.ibs" is conceptually the same as
| the 1.0 version of the IBIS ASCII format (ver1_0.ibs).  However, various
| comments have been added for further clarification.
|
| Version 2.0 update.  The file "ver2_0.ibs" maintains backward compatibility
| with Versions 1.0 and 1.1.  All new keywords and elements added in Version
| 2.0 are optional.  A complete list of changes to the specification is in the
| IBIS Version 2.0 Release Notes document ("ver2_0.rn").
|
| Version 2.1 update.  The file "ver2_1.ibs" contains clarification text
| changes, corrections, and two additional waveform parameters beyond
| Version 2.0.
|
|==============================================================================
|
| General syntax rules and guidelines for ASCII IBIS files:
|
| 1)  The content of the files is case sensitive, except for reserved
|     words and keywords.  File names must be all lower case.
|
| 2)  The following words are reserved words and must not be used for
|     any other purposes in the document:
|        POWER - reserved model name, used with power supply pins,
|        GND   - reserved model name, used with ground pins,
|        NC    - reserved model name, used with no-connect pins,
|        NA    - used where data not available.
|
| 3)  File names used in the file must only have lower case characters to
|     enhance UNIX compatibility and must conform to DOS rules.  (The length of
|     a file name should not exceed eight plus three characters and it must
|     not contain special characters which are illegal in DOS).
|
| 4)  The file must have no more than 80 characters per line.
|
| 5)  Anything following the comment character is ignored and considered a
|     comment on that line.  The default "|" (pipe) character can be changed
|     by the keyword [Comment char] to any other character. The [Comment char]
|     keyword can be used throughout the file as desired.
|
| 6)  Keywords must be enclosed in square brackets, [], and must start in
|     column 1 of the line.
|
| 7)  Underscores and spaces are equivalent in keywords.  Spaces are not
|     allowed in sub-parameter names.
|
| 8)  Valid scaling factors are:
|        T = tera        k = kilo        n = nano
|        G = giga        m = milli       p = pico
|        M = mega        u = micro       f = femto
|     When no scaling factors are specified, the appropriate base units are
|     assumed.  (These are Volts, Amperes, Ohms, Farads, Henries, and Seconds.)
|     The parser looks at only one alphabetic character after a numerical entry,
|     therefore it is enough to use only the prefixes to scale the parameters.
|     However, for clarity, it is allowed to use full abbreviations for the
|     units.  (e.g., pF, nH, mA, mOhm).  In addition, scientific notation IS
|     allowed (e.g., 1.2345e-12).
|
| 9)  The V/I data tables should use enough data points around sharply curved
|     areas of the V/I curves to describe the curvature accurately.  In linear
|     regions there is no need to define unnecessary data points.
|
| 10) Currents are considered positive when their direction is into the
|     component.
|
| 11) All temperatures are represented in degrees Celsius.
|
|==============================================================================
|     Keyword:  [IBIS Ver]
|    Required:  Yes
| Description:  Specifies the IBIS template version.  This keyword informs
|               electronic parsers of the kinds of data types that are
|               present in the file.
| Usage Rules:  [IBIS Ver] must be the first keyword in any IBIS file.  It is
|               normally on the first line of the file, but can be preceded
|               by comment lines that must begin with a "|".
|------------------------------------------------------------------------------
[IBIS Ver]      2.1                     | Used for template variations
|
|==============================================================================
|     Keyword:  [Comment char]
|    Required:  No
| Description:  Defines a new comment character to replace the default
|               "|" (pipe) character, if desired.
| Usage Rules:  The new comment character to be defined must be followed by
|               the underscore character and the letters "char".  For example:
|               "|_char" redundantly redefines the comment character to be
|               the pipe character.  The new comment character is in effect
|               only following the [Comment char] keyword.  The following
|               characters can NOT be used:  A B C D E F G H I J K L M N O P
|               Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u
|               v w x y z 0 1 2 3 4 5 6 7 8 9 [ ] . _ / = + -
| Other Notes:  The [Comment char] keyword can be used throughout the file, as
|               desired.
|------------------------------------------------------------------------------
[Comment char]  |_char
|
|==============================================================================
|     Keyword:  [File name]
|    Required:  Yes
| Description:  Specifies the name of the IBIS file, "filename.ibs".
| Usage Rules:  The file name must comply with normal DOS rules (8 char. max.
|               and no characters that are illegal in DOS).  In addition, it
|               must be all lower case, and use the extension ".ibs".
|------------------------------------------------------------------------------
[File name]     ver2_1.ibs
|
|==============================================================================
|     Keyword:  [File Rev]
|    Required:  Yes
| Description:  Tracks the revision level of a particular .ibs file.
| Usage Rules:  Revision level is set at the discretion of the engineer
|               defining the file.  The following guidelines are recommended:
|                  0.x     silicon and file in development
|                  1.x     pre-silicon file data from silicon model only
|                  2.x     file correlated to actual silicon measurements
|                  3.x     mature product, no more changes likely
|------------------------------------------------------------------------------
[File Rev]      1.0                     | Used for .ibs file variations
|
|==============================================================================
| Keywords:     [Date] [Source] [Notes] [Disclaimer] [Copyright]
| Required:     No
| Description:  Optionally clarifies the file.
| Usage Rules:  These keywords' arguments can contain blanks, and be of
|               any format.  The [Date] keyword argument is limited to a
|               maximum of 40 characters.
|
|               Because IBIS model writers may consider the information in
|               these keywords essential to users, and sometimes legally
|               required, design automation tools should make this information
|               available.  Derivative models should include this text
|               verbatim.  Any text following the [Copyright] keyword must be
|               included in any derivative models verbatim.
|------------------------------------------------------------------------------
[Date]          12/09/94                  | The latest file revision date
|
[Source]        Put originator and the source of information here.  For
                example:
                From silicon level SPICE model at Intel.
                From lab measurement at IEI.
                Compiled from manufacturer's data book at Quad Design, etc...
|
[Notes]         Use this section for any special notes related to the file.
|
[Disclaimer]    This information is for modeling purposes only, and is not
                guaranteed.                     | May vary by component
|
[Copyright]     Copyright 1994, XYZ Corp., All Rights Reserved
|
|==============================================================================
|     Keyword:  [Component]
|    Required:  Yes
| Description:  Marks the beginning of the IBIS description of the integrated
|               circuit named after the keyword.
| Usage Rules:  If the .ibs file contains data for more than one component,
|               each section must begin with a new [Component] keyword.  The
|               length of the Component Name must not exceed 40 characters,
|               and blank characters are allowed.
|
|               NOTE: Blank characters are not recommended due to usability
|               issues.
|------------------------------------------------------------------------------
[Component]     7403398 MC452
|
|==============================================================================
|     Keyword:  [Manufacturer]
|    Required:  Yes
| Description:  Clarifies the component's manufacturer.
| Usage Rules:  The length of the Manufacturer's Name must not exceed 40
|               characters (blank characters are allowed, e.g., Texas
|               Instruments).  In addition, each manufacturer must use a
|               consistent name in all .ibs files.
|------------------------------------------------------------------------------
[Manufacturer]  Intel Corp.
|
|==============================================================================
|     Keyword:  [Package]
|    Required:  Yes
| Description:  Defines a range of values for the default packaging resistance,
|               inductance, and capacitance of the component pins.
| Sub-Params:   R_pkg, L_pkg, C_pkg
| Usage Rules:  The typical (typ) column must be specified.  If data for the
|               other columns are not available, they must be noted with "NA".
| Other Notes:  If RLC parameters are available for individual pins, they can
|               be listed in columns 4-6 under keyword [Pin].  The values
|               listed in the [Pin] description section override the default
|               values defined here.  Use the [Package Model] keyword for more
|               complex package descriptions.  If defined, the [Package Model]
|               data overrides the values in the [Package] keyword.
|               Regardless, the data listed under the [Package] keyword must
|               still contain valid data.
|------------------------------------------------------------------------------
[Package]
| variable      typ             min             max
R_pkg           250.0m          225.0m          275.0m
L_pkg           15.0nH          12.0nH          18.0nH
C_pkg           18.0pF          15.0pF          20.0pF
|
|==============================================================================
|     Keyword:  [Pin]
|    Required:  Yes
| Description:  Associates the component's I/O models to its various external
|               pins and signal names.
|  Sub-Params:  signal_name, model_name, R_pin, L_pin, C_pin
| Usage Rules:  All pins on a component must be specified.  The first column
|               must contain the pin name.  The second column, signal_name,
|               gives the data book name for the signal on that pin.  The
|               third column, model_name, associates the I/O model for that
|               pin.  Each model_name must have a [Model] keyword below,
|               unless it is a reserved model name (POWER, GND, or NC).
|
|               Each line must contain either three or six columns.  A pin
|               line with three columns only associates the pin's signal and
|               model.  Six columns can be used to override the default
|               package values (specified under [Package]) FOR THAT PIN ONLY.
|               When using six columns, the headers R_pin, L_pin, and C_pin
|               must be listed.  If "NA" is in columns 4 through 6, the
|               default packaging values must be used.
|
|               Column length limits are:
|                  [Pin]         5 characters max
|                  model_name   20 characters max
|                  signal_name  20 characters max
|                  R_pin         9 characters max
|                  L_pin         9 characters max
|                  C_pin         9 characters max
|------------------------------------------------------------------------------
[Pin]   signal_name     model_name      R_pin   L_pin   C_pin
|
  1     RAS0#           Buffer1         200.0m  5.0nH   2.0pF
  2     RAS1#           Buffer2         209.0m  NA      2.5pF
  3     EN1#            Input1          NA      6.3nH   NA
  4     A0              3-state
  5     D0              I/O1
  6     RD#             Input2          310.0m  3.0nH   2.0pF
  7     WR#             Input2
  8     A1              I/O2
  9     D1              I/O2
 10     GND             GND             297.0m  6.7nH   3.4pF
 11     RDY#            Input2
 12     GND             GND             270.0m  5.3nH   4.0pF
|  .
|  .
|  .
 18     Vcc3            POWER
 19     NC              NC
 20     Vcc5            POWER           226.0m  NA      1.0pF
|
|==============================================================================
| Keyword:      [Package Model]
| Required:     No
| Description:  Indicates the name of the package model
| Usage Rules:  The package model name is limited to 40 characters.
|               Spaces are allowed in the name.  The name should include the
|               company name or initials to help ensure uniqueness.  The
|               simulator will search for a matching package model name as an
|               argument to a [Define Package Model] keyword in the current
|               IBIS file first.  If a match is not found, the simulator will
|               look for a match in an external .pkg file.  If the package
|               model is in a separate .pkg file, it must be kept in the same
|               directory as the .ibs file.
| Other Notes:  Use the [Package Model] keyword within a [Component] to
|               indicate which package model should be used for that part.
|               The specification permits .ibs files to contain [Define
|               Package Model] keywords as well.  These are described
|               in the "Package Modeling" section near the end of this
|               specification.  When package model definitions occur within a
|               .ibs file, their scope is "local"--they are known only within
|               that .ibs file and no other.  In addition, within that .ibs
|               file, they override any globally defined package models
|               that have the same name.
|------------------------------------------------------------------------------
[Package Model]     QS-SMT-cer-8-pin-pkgs
|
|==============================================================================
|    Keyword:  [Pin Mapping]
|   Required:  No
|Description:  Used to indicate which power and ground buses a given driver,
|              receiver, or terminator is connected.
| Sub-Params:  pulldown_ref, pullup_ref, gnd_clamp_ref, power_clamp_ref
|Usage Rules:  Each power and ground bus is given a unique name which must
|              not exceed 15 characters.  The first column contains a pin
|              number.  Each pin number must match one of the pin numbers
|              declared previously in the [Pin] section of the IBIS file.
|              The second column, pulldown_ref, designates the ground bus
|              connections for that pin.  Here the term ground bus can
|              also mean another power bus.  The third column pullup_ref
|              designates the power bus connection.  The forth and fifth
|              columns gnd_clamp_ref and power_clamp_ref contain
|              entries, if needed, to specify different ground bus
|              and power bus connections than those previously specified.
|
|              If the [Pin Mapping] keyword is present, then the bus
|              connections for EVERY pin listed in the [Pin] section must
|              be given.
|
|              Each line must contain either three or five columns.  Use the
|              NC reserved word for entries that are not needed or that follow
|              the conditions below:
|
|              All entries with identical labels are assumed to be connected.
|              Each unique entry label must connect to at least one pin whose
|              model_name is POWER or GRD.
|
|              If a pin has no connection, then both the pulldown_ref
|              and pullup_ref sub-parameters for it will be NC.
|
|              GND and POWER pin entries and buses are designated by
|              entries in either the pulldown_ref or pullup_ref columns.
|              There is no implied association to any column other than
|              through explicit designations in other pins.
|
|              For any other type of pin, the pulldown_ref column contains
|              the power connection for the [Pulldown] table for non-ECL type
|              [Models].  This is also the power connection for the [GND Clamp]
|              table and the [Rgnd] model unless overridden by a specification
|              in the gnd_clamp_ref column.
|
|              Also, the pullup_ref column contains the power connection
|              for the [Pullup] table and, for ECL type models, the [Pulldown]
|              table.  This is also the power connection for the [POWER Clamp]
|              table and the [Rpower] model unless overridden by a
|              specification in the power_clamp_ref column.
|
|              The column length limits are:
|                      [Pin Mapping]     5 characters max
|                      pulldown_ref     15 characters max
|                      pullup_ref       15 characters max
|                      gnd_clamp_ref    15 characters max
|                      power_clamp_ref  15 characters max
|
|              When 5 columns are specified, the headings gnd_clamp_ref and
|              power_clamp_ref must be used.  Otherwise, these headings can
|              be omitted.
|---------------------------------------------------------------------------
[Pin Mapping]  pulldown_ref     pullup_ref   gnd_clamp_ref  power_clamp_ref
|
1              GNDBUS1          PWRBUS1   | Signal pins and their associated
2              GNDBUS2          PWRBUS2   | ground and power connections
3              GNDBUS1          PWRBUS1      GNDCLMP        PWRCLAMP
4              GNDBUS2          PWRBUS2      GNDCLMP        PWRCLAMP
5              GNDBUS2          PWRBUS2      NC             PWRCLAMP
6              GNDBUS2          PWRBUS2      GNDCLMP        NC
                                          | Some possible clamping connections
|  .                                      | are shown above for illustration
|  .                                      | purposes
|  .
11             GNDBUS1          NC        | One set of ground connections.
12             GNDBUS1          NC        | NC indicates no connection to
13             GNDBUS1          NC        | power bus.
|  .
21             GNDBUS2          NC        | Second set of ground connections
22             GNDBUS2          NC
23             GNDBUS2          NC
|  .
31             NC               PWRBUS1   | One set of power connections.
32             NC               PWRBUS1   | NC indicates no connection to
33             NC               PWRBUS1   | ground bus.
|  .
41             NC               PWRBUS2   | Second set of power connections
42             NC               PWRBUS2
43             NC               PWRBUS2
|  .
51             GNDCLMP          NC        | Additional power connections
52             NC               PWRCLMP   | for clamps
|
|==============================================================================
|    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 number.  The second
|              column, inv_pin, contains the corresponding inverting pin number
|              for I/O output.  Each pin number must match the pin
|              numbers 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 0V.  The forth, 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
|              200mV.
|
|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.
|
|              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 0V or 0ns.  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 = 0ns
22          21         NA       NA    | Output*, tdelay = 0ns
                                      | * Could be Input or I/O with vdiff = 0V
|
|==============================================================================
|     Keyword:  [Model]
|    Required:  Yes
| Description:  Used to define a model, and its attributes.
|  Sub-Params:  Model_type, Polarity, Enable, Vinl, Vinh, C_comp, Vmeas, Cref,
|               Rref, Vref
| Usage Rules:  Each model type 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.
|               A .ibs file must contain enough [Model] keywords to cover all
|               of the model names specified under the [Pin] keyword, except
|               for those model names that 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.
|
|               Model_type must be one of the following:
|               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, and Terminator.
|
|               Special usage rules apply to the following.  Some definitions
|               are included for clarification:
|
|               Input              These model types must have Vinl and Vinh
|               I/O                defined.  If they are not defined, the
|               I/O_open_drain     parser issues a warning and the default
|               I/O_open_sink      values of Vinl=0.8V and Vinh=2.0V are
|               I/O_open_source    assumed.
|
|               Input_ECL          These model types must have Vinl and Vinh
|               I/O_ECL            defined.  If they are not defined, the
|                                  parser issues a warning and the default
|                                  values of Vinl=-1.475V and Vinh=-1.165V
|                                  are assumed.
|
|               Terminator         This model type is an input-only device that
|                                  can have analog loading effects on the
|                                  circuit being simulated but has no digital
|                                  logic thresholds.  Examples of Terminators
|                                  are: capacitors, termination diodes, and
|                                  pull-up resistors.
|
|               Output             This model type indicates that an output
|                                  always sources and/or sinks current and
|                                  cannot be disabled.
|
|               3-state            This model type indicates that an output
|                                  can be disabled, i.e. put into a high
|                                  impedance state.
|
|               Open_sink          These model types indicate that the output
|               Open_drain         has an OPEN side (do not use the [Pullup]
|                                  keyword, or if it must be used, set I = 0mA
|                                  for all voltages specified) and the output
|                                  SINKS current.  Open_drain model type is
|                                  retained for backward compatibility.
|
|               Open_source        This model type indicates that the
|                                  output has an OPEN side (do not use the
|                                  [Pulldown] keyword, or if it must be used,
|                                  set I = 0mA for all voltages specified) and
|                                  the output SOURCES current.
|
|               Input_ECL          These model types specify that the model
|               Output_ECL         represents an ECL type logic that follows
|               I/O_ECL            different conventions for the [Pulldown]
|                                  keyword.
|
|               The Model_type and C_comp sub-parameters are required.  The
|               Polarity, Enable, Vinl, Vinh, Vmeas, Cref, Rref, and Vref sub-
|               parameters are optional.  C_comp defines the silicon die
|               capacitance.  This value should not include the capacitance of
|               the package.  C_comp is allowed to use "NA" for the min and max
|               values only.  The Polarity sub-parameter can be defined as
|               either Non-Inverting or Inverting, and the Enable sub-
|               parameter can be defined as either Active-High or Active-Low.
|
|               The Cref and Rref sub-parameters correspond to the test load
|               that the manufacturer uses when specifying the propagation
|               delay and/or output switching time of the device.  The Vmeas
|               sub-parameter is the reference voltage level that the
|               manufacturer uses for the component.  Include Cref, Rref, and
|               Vmeas information to facilitate board-level timing simulation.
|               The assumed connections for Cref, Rref, and Vref are shown in
|               the following diagram:
|
|                            _________
|                           |         |
|                           |      |\ |            Rref
|                           |Driver| \|------o----/\/\/\----o Vref
|                           |      | /|      |
|                           |      |/ |     === Cref
|                           |_________|      |
|                                            |
|                                           GND
|
| Other Notes:  A complete [Model] description normally contains the following
|               keywords:  [Voltage Range], [Pullup], [Pulldown], [GND Clamp],
|               [POWER Clamp], and [Ramp].  A Terminator model uses one
|               or more of the [Rgnd], [Rpower], [Rac], and [Cac].  However,
|               some models may have only a subset of these keywords.  For
|               example, an input structure normally only needs the
|               [Voltage Range], [GND Clamp], and possibly the [POWER Clamp]
|               keywords.  If one or more of [Rgnd], [Rpower], [Rac], and [Cac]
|               keywords are used, then the Model_type must be Terminator.
|------------------------------------------------------------------------------
| Signals       CLK1, CLK2,...         | Optional signal list, if desired
[Model]         Clockbuffer
Model_type      I/O
Polarity        Non-Inverting
Enable          Active-High
Vinl = 0.8V                             | input logic "low" DC voltage, if any
Vinh = 2.0V                             | input logic "high" DC voltage, if any
Vmeas = 1.5V               |Reference voltage for timing measurements
Cref = 50pF                |Timing specification test load capacitance value
Rref = 500                 |Timing specification test load resistance value
Vref = 0                   |Timing specification test load voltage
| variable      typ             min             max
C_comp          12.0pF          10.0pF          15.0pF
|
|==============================================================================
|     Keyword:  [Temperature Range]
|    Required:  Yes, if other than the preferred 0, 50, 100 degree C range
| Description:  Defines the temperature range over which the model is
|               to operate.
| Usage Rules:  List the actual die temperatures (not percentages) in the
|               typ, min, max format.  "NA" is allowed for min and max only.
| Other Notes:  The [Temperature Range] keyword also describes the temperature
|               range over which the various V/I curves and ramp rates were
|               derived.
|------------------------------------------------------------------------------
| variable              typ             min             max
[Temperature Range]     27.0            -50             130.0
|
|==============================================================================
|    Keyword:  [Voltage Range]
|   Required:  Yes, if [Pullup Reference], [Pulldown Reference],
|              [POWER Clamp Reference], and [GND Clamp Reference] are not
|              present
|Description:  Defines the power supply voltage tolerance over which the
|              model is intended to operate.  It also specifies the default
|              voltage rail to which the pull-up and [POWER Clamp] V/I data is
|              referenced.
|Usage Rules:  Provide actual voltages (not percentages) in the typ, min,
|              max format.  "NA" is allowed for the min and max values only.
|---------------------------------------------------------------------------
| variable              typ             min             max
[Voltage Range]         5.0V            4.5V            5.5V
|
|==============================================================================
|    Keyword:  [Pullup Reference]
|   Required:  Yes, if the [Voltage Range] keyword is not present.
|Description:  Defines a voltage rail other than that defined by the
|              [Voltage Range] keyword as the reference voltage for the
|              pull-up V/I data.
|Usage Rules:  Provide actual voltages (not percentages) in the typ, min,
|              max format.  "NA" is allowed for the min and max values only.
|Other Notes:  This keyword, if present, also defines the voltage range over
|              which the min and max dV/dt_r values are derived.
|---------------------------------------------------------------------------
| variable              typ             min             max
[Pullup Reference]      5.0V            4.5V            5.5V
|
|==============================================================================
|    Keyword:  [Pulldown Reference]
|   Required:  Yes, if the [Voltage Range] keyword is not present.
|Description:  Defines a power supply rail other than 0V as the reference
|              voltage for the pull-down V/I data.  If this keyword is not
|              present, the voltage data points in the pull-down V/I table
|              are referenced to 0V.
|Usage Rules:  Provide actual voltages (not percentages) in the typ, min,
|              max format.  "NA" is allowed for the min and max values only.
|Other Notes:  This keyword, if present, also defines the voltage range over
|              which the typ, min, and max dV/dt_f values are derived.
|---------------------------------------------------------------------------
| variable              typ             min             max
[Pulldown Reference]    0V              0V              0V
|
|==============================================================================
|    Keyword:  [POWER Clamp Reference]
|   Required:  Yes, if the [Voltage Range] keyword is not present.
|Description:  Defines a voltage rail other than that defined by the
|              [Voltage Range] keyword as the reference voltage for the
|              [POWER Clamp] V/I data.
|Usage Rules:  Provide actual voltages (not percentages) in the typ, min,
|              max format.  "NA" is allowed for the min and max values only.
|Other Notes:  Refer the "Other Notes" section of the [GND Clamp Reference]
|              keyword.
|---------------------------------------------------------------------------
| variable              typ             min             max
[POWER Clamp Reference] 5.0V            4.5V            5.5V
|
|==============================================================================
|    Keyword:  [GND Clamp Reference]
|   Required:  Yes, if the [Voltage Range] keyword is not present.
|Description:  Defines a power supply rail other than 0V as the reference
|              voltage for the [GND Clamp] V/I data.  If this keyword is not
|              present, the voltage data points in the [GND Clamp] V/I table
|              are referenced to 0V.
|Usage Rules:  Provide actual voltages (not percentages) in the typ, min,
|              max format.  "NA" is allowed for the min and max values only.
|Other Notes:  Power Supplies: It is intended that standard TTL and CMOS
|              devices be specified using only the [Voltage Range] keyword.
|              However, in cases where the output characteristics of a device
|              depend on more than a single supply and ground, or a pull-up,
|              pull-down, or clamp structure is referenced to something other
|              than the default supplies, use the additional 'reference'
|              keywords.
|
|              If the [Voltage Range] keyword is not present, then all four of
|              the other keywords must be present.  If the [Voltage Range]
|              keyword is present, the other keywords are optional and may or
|              may not be used as required.  It is legal (although redundant)
|              for an optional keyword to specify the same voltage as specified
|              by the [Voltage Range] keyword.
|----------------------------------------------------------------------------
| variable              typ             min             max
[GND Clamp Reference]   0V              0V              0V
|
|==============================================================================
|    Keywords:  [Pulldown], [Pullup], [GND Clamp], [POWER Clamp]
|    Required:  Yes, if they exist in the device
| Description:  The data points under these keywords define the V/I curves of
|               the pull-down and pull-up structures of an output buffer and
|               the V/I curves of the clamping diodes connected to the GND and
|               the POWER pins, respectively.  Currents are considered positive
|               when their direction is into the component.
|
| Usage Rules:  In each of these sections, the first column contains the
|               voltage value, and the three remaining columns hold the
|               typical, minimum, and maximum current values.  The four
|               entries, Voltage, I(typ), I(min), and I(max) 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 these keywords.  However,
|               data is only required in the typical column.  If minimum
|               and/or maximum current values are not available, the reserved
|               word "NA" must be used.  "NA" can be used for currents in the
|               typical column, but numeric values MUST be specified for the
|               first and last voltage points on any V/I curve.  Each V/I
|               curve must have at least 2, but not more than 100, voltage
|               points.
|
| Other Notes:  The V/I curve of the [Pullup] and the [POWER Clamp] structures
|               are 'Vcc relative', meaning that the voltage values are
|               referenced to the Vcc pin.  (Note: Under these keywords, all
|               references to 'Vcc' refer to the voltage rail defined by the
|               [Voltage range], [Pullup Reference], or [POWER Clamp Reference]
|               keywords, as appropriate.)  The voltages in the data tables are
|               derived from the equation:  Vtable = Vcc - Voutput.
|
|               Therefore, for a 5V component, -5V in the table actually
|               means 5V above Vcc, which is +10V with respect to ground;
|               and 10V means 10V below Vcc, which is -5V with respect to
|               ground.  Vcc-relative data is necessary to model a pull-up
|               structure properly, since the output current of a pull-up
|               structure depends on the voltage between the output and Vcc
|               pins and not the voltage between the output and ground pins.
|               Note that the [GND Clamp] V/I curve can include quiescent
|               input currents, or the currents of a 3-stated output, if so
|               desired.
|
|               When tabulating data for ECL devices, the data in the pull-down
|               table is measured with the output in the 'logic low' state.
|               In other words, the data in the table represents the V/I
|               characteristics of the output when the output is at the most
|               negative of its two logic levels.  Likewise, the data in the
|               pull-up table is measured with the output in the 'logic one'
|               state and represents the V/I characteristics when the output
|               is at the most positive logic level.  Note that in BOTH of
|               these cases, the data is referenced to the Vcc supply voltage,
|               using the equation  Vtable = Vcc - Voutput.
|
|               Monotonicity Requirements:
|               To be monotonic, the V/I table data must meet any one of the
|               following 8 criteria:
|                 1- The CURRENT axis either increases or remains constant as
|                    the voltage axis is increased.
|                 2- The CURRENT axis either increases or remains constant as
|                    the voltage axis is decreased.
|                 3- The CURRENT axis either decreases or remains constant as
|                    the voltage axis is increased.
|                 4- The CURRENT axis either decreases or remains constant as
|                    the voltage axis is decreased.
|
|                 5- The VOLTAGE axis either increases or remains constant as
|                    the current axis is increased.
|                 6- The VOLTAGE axis either increases or remains constant as
|                    the current axis is decreased.
|                 7- The VOLTAGE axis either decreases or remains constant as
|                    the current axis is increased.
|                 8- The VOLTAGE axis either decreases or remains constant as
|                    the current axis is decreased.
|
|                An IBIS syntax checking program shall test for non-monotonic
|                data and provide a maximum of one note per V/I table if 
|                non-montonic data is found.  For example:
|                  "NOTE: Line 300, Pulldown V/I table for model DC040403 is
|                   non-monotonic!  Most simulators will filter this data
|                   to remove the non-monotonic data."
|
|                It is also recognized that the data may be monotonic if
|                currents from both the output stage and the clamp diode are
|                added together as most simulators do.  To limit the complexity
|                of the IBIS Version 2.x syntax checking programs, such 
|                programs will conduct monotonicity testing only on one
|                V/I table at a time.
|
|                It is assumed that the simulator sums the clamp curves
|                together with the appropriate pull-up or pull-down curve when
|                a buffer is driving high or low, respectively.  From this
|                assumption and the nature of 3-statable buffers, it follows
|                that the data in the clamping curve sections are handled as
|                constantly present curves and the pull-up and pull-down curves
|                are used only when needed in the simulation.
|
|                The clamp curves of an input or I/O buffer can be measured
|                directly with a curve tracer, with the I/O buffer 3-stated.
|                However, sweeping enabled buffers results in curves that are
|                the sum of the clamping curves and the output structures.
|                Based on the assumption outlined above, the pull-up and
|                pull-down curves of an IBIS model must represent the
|                difference of the 3-stated and the enabled buffer's curves.
|                (Note that the resulting difference curve can demonstrate a
|                non-monotonic shape.)  This requirement enables the simulator
|                to sum the curves, without the danger of double counting, and
|                arrive at an accurate model in both the 3-stated and enabled
|                conditions.
|
|                Since in the case of a non 3-statable buffer, this difference
|                curve cannot be generated through lab measurements (because
|                the clamping curves cannot be measured alone), the pull-up and
|                pull-down curves of an IBIS model can contain the sum of the
|                clamping characteristics and the output structure.  In this
|                case, the clamping curves must contain all zeroes, or the
|                keywords must be omitted.
|------------------------------------------------------------------------------
[Pulldown]
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V    -40.0m    -34.0m    -45.0m
   -4.0V    -39.0m    -33.0m    -43.0m
|    .
|    .
    0.0V      0.0m      0.0m      0.0m
|    .
|    .
    5.0V     40.0m     34.0m     45.0m
   10.0V     45.0m     40.0m     49.0m
|
[Pullup]                               | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V     32.0m     30.0m     35.0m
   -4.0V     31.0m     29.0m     33.0m
|    .
|    .
    0.0V      0.0m      0.0m      0.0m
|    .
|    .
    5.0V    -32.0m    -30.0m    -35.0m
   10.0V    -38.0m    -35.0m    -40.0m
|
[GND Clamp]
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V  -3900.0m  -3800.0m  -4000.0m
   -0.7V    -80.0m    -75.0m    -85.0m
   -0.6V    -22.0m    -20.0m    -25.0m
   -0.5V     -2.4m     -2.0m     -2.9m
   -0.4V      0.0m      0.0m      0.0m
    5.0V      0.0m      0.0m      0.0m
|
[POWER Clamp]                          | Note: Vtable = Vcc - Voutput
|
|  Voltage   I(typ)    I(min)    I(max)
|
   -5.0V   4450.0m       NA        NA
   -0.7V     95.0m       NA        NA
   -0.6V     23.0m       NA        NA
   -0.5V      2.4m       NA        NA
   -0.4V      0.0m       NA        NA
    0.0V      0.0m       NA        NA
|
|==============================================================================
|    Keywords:  [Rgnd], [Rpower], [Rac], [Cac]
|    Required:  Yes, if they exist in the device
| Description:  The data for these keywords define the resistance values of
|               Rgnd and Rpower connected to GND and the POWER pins,
|               respectively.
| Usage Rules:  For each of these keywords, the three columns hold the
|               typical, minimum, and maximum resistance values.  The three
|               entries for R(typ), R(min), and R(max), or the three entries
|               for C(typ), C(min), and C(max) must be placed on a single line
|               and must be separated by at least one white space or tab
|               character.  All three columns are required under these
|               keywords.  However, data is only required in the typical
|               column.  If minimum and/or maximum values are not available,
|               the reserved word "NA" must be used indicating the R(typ) or
|               C(typ) value by default.
| Other Notes:  It should be noted that [Rpower] is connected to 'Vcc' and
|               [Rgnd] is connected to 'GND'.  However, [GND Clamp Reference]
|               voltages, if defined, apply to [Rgnd].  [POWER Clamp Reference]
|               voltages, if defined, apply to [Rpower].  Either or both [Rgnd]
|               and [Rpower] may be defined and may coexist with [GND Clamp]
|               and [POWER Clamp] structures.  If the terminator consists
|               of a series R and C (often referred to as either an AC or RC
|               terminator), then both [Rac] and [Cac] are required.  When
|               [Rgnd], [Rpower], or [Rac] and [Cac] are specified, the
|               Model_type must be Terminator.
|
|               |<-------------TERMINATOR Model--------------->|
|
|                   [Voltage Range] or
|                [POWER Clamp Reference]
|                          o
|                          |
|               POWER_ o---o---o
|               clamp  |       |
|                   |--o--|    \
|                   |     |    /
|                   | VI  |    \ Rpower    [Package] Keyword
|                   |     |    /            Sub-parameters
|                   |--o--|    |        |<----------------->|
|                      |       |
|                      |       |                               PIN
|                o-----o-------o-----o-----/\/\/\--@@@@@@---o--o
|                |     |GND_   |     |      R_pkg   L_pkg   |
|                |     |clamp  |     |                      |
|                |  |--o--|    |     |                      |
|                |  |     |    \     |                      |
|                |  | VI  |    /Rgnd |                      |
|                |  |     |    \     \                      |
|                |  |--o--|    /     / Rac                  |
|                |     |       |     \                      |
|                |     o---o---o     /                      |
|                |         |         |                      |
|        C_comp ===        o        === Cac          C_pkg ===
|                |      GND or       |                      |
|                |  [GND Clamp Ref]  |                      |
|                |                   |                      |
|                o-------------------o----------------------o
|                                    |
|                                    o
|                                   GND
|------------------------------------------------------------------------------
| variable      R(typ)          R(min)          R(max)
[Rgnd]          330Ohm          300Ohm          360Ohm   | Parallel Terminator
[Rpower]        220Ohm          200Ohm          NA
|
[Rac]           30Ohm           NA              NA
|
| variable      C(typ)          C(min)          C(max)   | AC terminator
[Cac]           50pF            NA              NA
|
|==============================================================================
|     Keyword:  [Ramp]
|    Required:  Yes, except for inputs and terminators
| Description:  Defines the rise and fall times of a buffer.  The ramp rate does 
|               not include packaging but does include the effects of the C_comp 
|               parameter.
|  Sub-Params:  dV/dt_r, dV/dt_f, R_load
| Usage Rules:  The rise and fall time is defined as the time it takes the
|               output to go from 20% to 80% of its final value.
|               The ramp rate is defined as:
|
|               dV          20% to 80% voltage swing
|               -- = ----------------------------------------
|               dt   Time it takes to swing the above voltage
|
|               The ramp rate must be specified as an explicit fraction
|               and must not be reduced.  The [Ramp] values can use "NA" for
|               the min and max values only.  The R_load sub-parameter is
|               optional if the preferred 50 ohm load is used.  The R_load sub-
|               parameter is required if a non-standard load is used.
|------------------------------------------------------------------------------
[Ramp]
| variable      typ             min             max
dV/dt_r         2.20/1.06n      1.92/1.28n      2.49/650p
dV/dt_f         2.46/1.21n      2.21/1.54n      2.70/770p
R_load = 300ohms
|
|==============================================================================
|     Keywords:     [Rising Waveform], [Falling Waveform]
|     Required:     No
|     Description:  Describes the shape of the rising and falling edge
|                   waveforms of a driver.
|     Sub-Params:   R_fixture, V_fixture, V_fixture_min, V_fixture_max,
|                   C_fixture, L_fixture,
|     Usage Rules:  Each [Rising Waveform] and [Falling Waveform] keyword
|                   introduces a table of time vs. voltage points that
|                   describe the shape of an output waveform.  These
|                   time/voltage points are taken under the conditions
|                   specified in the R/L/C/V_fixture and R/L/C_dut
|                   sub-parameters.  The table itself consists of
|                   one column of time points, then three columns of
|                   voltage points in the standard typ, min, and max format.
|                   The four entries 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.  However, data
|                   is only required in the typical column.  If minimum
|                   or maximum data is not available, use the reserved word
|                   "NA".  The first value in the time column need not be '0'.
|                   Time values must increase as one parses down the table.
|                   The waveform table can contain a maximum of 100 data
|                   points.  A maximum of 100 waveform tables are allowed per
|                   model.  Note that for backwards compatibility, the existing
|                   [Ramp] keyword is still required.  The data in the waveform 
|                   table is taken with the effects of the C_comp parameter 
|                   included.
|
|                   A waveform table must include the entire waveform;
|                   i.e., the first entry (or entries) in a voltage column
|                   must be the DC voltage of the output before switching
|                   and the last entry (or entries) of the column must be
|                   the final DC value of the output after switching.  Each 
|                   table must contain at least two entries.  Thus, numerical 
|                   values are required for the first and last entries of any 
|                   column containing numerical data.
|
|                   A [Model] specification can contain more than one rising
|                   edge or falling edge waveform table.  However, each new
|                   table must begin with the appropriate keyword and sub-
|                   parameter list as shown below.  If more than one rising or
|                   falling edge waveform table is present, then the data in
|                   each of the respective tables must be time correlated.
|                   In other words, the rising (falling) edge data in each
|                   of the rising (falling) edge waveform tables must be
|                   entered with respect to a common reference point on the
|                   input stimulus waveform.
|
|                   The 'fixture' sub-parameters specify the loading
|                   conditions under which the waveform is taken.  The R_dut,
|                   C_dut, and L_dut Sub-params are analogous to the
|                   package parameters R_pkg, C_pkg, and L_pkg and are used
|                   if the waveform includes the effects of pin
|                   inductance/capacitance.  The diagram below shows the
|                   interconnection of these elements.
|
|                      PACKAGE            |   TEST FIXTURE
|       _________                         |
|      |  DUT    |   L_dut   R_dut        | L_fixture  R_fixture
|      |  die    |---@@@@@--/\/\/\--o-----|--@@@@---o---/\/\/\----- V_fixture
|      |_________|                  |     |         |
|                                   |     |         |
|                                   |     |         |
|                            C_dut ===    |        === C_fixture
|                                   |     |         |
|                                   |     |         |
|                                  GND    |        GND
|
|                   Only the R_fixture and V_fixture sub-parameters are
|                   required, the rest of the sub-parameters are optional.
|                   If a sub-parameter is not used, its value defaults to
|                   zero.  The sub-parameters must appear in the text after
|                   the keyword and before the first row of the waveform
|                   table.
|
|                   V_fixture defines the voltage for typ, min, and max
|                   supply conditions.  However, when the fixture voltage
|                   is related to the power supply voltages, then the
|                   sub-parameters V_fixture_min and V_fixture_max can
|                   be used to further specify the fixture voltage for
|                   min and max supply voltages.
|------------------------------------------------------------------------------
[Rising Waveform]
R_fixture = 500
V_fixture = 5.0
V_fixture_min = 4.5           |Note, R_fixture is connected to Vcc
V_fixture_max = 5.5           |Specified, but not used in this example
C_fixture = 50p
L_fixture = 2n
C_dut = 7p
R_dut = 1m
L_dut = 1n
|Time     V(typ)     V(min)     V(max)
 0.0ns     0.3        0.5         NA
 0.5ns     0.3        0.5         NA
 1.0ns     0.6        0.7         NA
 1.5ns     0.9        0.9         NA
 2.0ns     1.5        1.3         NA
 2.5ns     2.1        1.7         NA
 3.0ns     3.0        2.7         NA
 3.5ns     3.2        3.0         NA
|
[Falling Waveform]
R_fixture = 50
V_fixture = 0
|Time     V(typ)     V(min)     V(max)
 10.0ns     3.2        3.0         NA
 10.5ns     3.0        2.7         NA
 11.0ns     2.1        1.7         NA
 11.5ns     1.5        1.3         NA
 12.0ns     0.9        0.9         NA
 12.5ns     0.6        0.7         NA
 13.0ns     0.3        0.5         NA
 13.5ns     0.3        0.5         NA
|
|=============================================================================
|
|                           PACKAGE MODELING
|
| The [Package Model] keyword is optional.  If more than the default RLC
| package model is desired, use the [Define Package Model] keyword.
|
| Use the [Package Model] keyword within a [Component] to indicate the package
| model for that part.  The specification permits .ibs files to contain the
| following additional list of package model keywords.  Note that the actual
| package models can be in a separate <package_file_name>.pkg file or can
| exist in the IBIS files between the [Define Package Model]...
| [End Package Model] keywords for each package model that is defined.  For
| reference, these keywords are listed below.  Full descriptions follow.
| Simulators that do not support these keywords will ignore all entries between
| the [Define Package Model] and [End Package Model] keywords.
|
| [Define Package Model]      Required if the [Package Model] keyword is used
| [Manufacturer]              (note 1)
| [OEM]                       (note 1)
| [Description]               (note 1)
| [Number of Pins]            (note 1)
| [Pin Numbers]               (note 1)
| [Model Data]                (note 1)
| [Resistance Matrix]         Optional
| [Inductance Matrix]         (note 1)
| [Capacitance Matrix]        (note 1)
| [Bandwidth]                 Required (for Banded_matrix matrices only)
| [Row]                       (note 1)
| [End Model Data]            (note 1)
| [End Package Model]         (note 1)
|
| (note 1) Required when the [Define Package Model] keyword is used
|
| When package model definitions occur within a .ibs file, their scope is
| "local" -- they are known only within that .ibs file and no other.
| In addition, within that .ibs file, they override any globally defined
| package models that have the same name.
|
| USAGE RULES FOR THE .PKG FILE
|
| Package models are stored in a file whose name looks like:
|   <filename>.pkg.
|
| The <filename> provided must adhere to the General Syntax Rules.  Use the
| ".pkg" extension to identify files containing package models.  The .pkg file
| must contain all of the required elements of a normal .ibs file, including
| [IBIS Ver], [File Name], [File Rev], and the [End] keywords.  Optional
| elements include the [Date], [Source], [Notes], [Disclaimer], [Copyright],
| and [Comment char] keywords.
|
| All of the elements follow the same rules as those for a normal .ibs file.
|
| Note that the [Component] and [Model] keywords are not allowed in the .pkg
| file.  The .pkg file is for package models only.
|
|==============================================================================
|     Keyword:  [Define Package Model]
|    Required:  Yes
| Description:  Marks the beginning of a package model description.
| Usage Rules:  If the .pkg file contains data for more than one package,
|               each section must begin with a new [Define Package Model]
|               keyword.  The length of the package model name must not
|               exceed 40 characters in length.  Blank characters are
|               allowed.  For every package model name defined under the
|               [Package Model] keyword, there must be a matching [Define
|               Package Model] keyword.
|------------------------------------------------------------------------------
[Define Package Model]     QS-SMT-cer-8-pin-pkgs
|
|==============================================================================
|     Keyword:  [Manufacturer]
|    Required:  Yes
| Description:  Declares the manufacturer of the part(s) that use this package
|               model.
| Usage Rules:  The length of the manufacturer's name must not exceed 40
|               characters (blank characters are allowed, e.g., Texas
|               Instruments).  In addition, each manufacturer must use a
|               consistent name in all .ibs files.
|------------------------------------------------------------------------------
[Manufacturer]  Quality Semiconductors Ltd.
|
|==============================================================================
|     Keyword:  [OEM]
|    Required:  Yes
| Description:  Declares the manufacturer of the package.
| Usage Rules:  The length of the manufacturer's name must not exceed 40
|               characters (blank characters are allowed).  In addition, each
|               manufacturer must use a consistent name in all .ibs files.
| Other Notes:  This keyword is useful if the semiconductor vendor sells a
|               single IC in packages from different manufacturers.
|------------------------------------------------------------------------------
[OEM]           Acme Packaging Co.
|
|==============================================================================
|     Keyword:  [Description]
|    Required:  Yes
| Description:  Provides a concise yet easily human-readable description of
|               what kind of package the [Package Model] is representing.
| Usage Rules:  The description must be less than 60 characters in length,
|               must fit on a single line, and may contain spaces.
|------------------------------------------------------------------------------
[Description]   220-Pin Quad Ceramic Flat Pack
|
|==============================================================================
|     Keyword:  [Number of Pins]
|    Required:  Yes
| Description:  Tells the parser how many pins to expect.
| Usage Rules:  The field must be a positive decimal integer.
|------------------------------------------------------------------------------
[Number of Pins]   128
|
|==============================================================================
|     Keyword:  [Pin Numbers]
|    Required:  Yes
| Description:  Tells the parser the set of names that are used for the package
|               pins, and to define an ordering of them.  The first pin name
|               given is the "lowest" pin, and the last pin given is the
|               "highest."  The pin names can not exceed 5 characters in
|               length.
| Usage Rules:  Following the [Pin Numbers] keyword, the names of the pins are
|               listed.  There must be as many names listed as there are
|               pins (as given by the preceding [Number of Pins].)
|------------------------------------------------------------------------------
[Pin Numbers]
A1
A2
|  .
|  .
|  .
A22
B1
|  .
|  .
|  .
| etc.
|
|==============================================================================
|     Keyword:  [Model Data]
|    Required:  Yes
| Description:  Indicates the beginning of the formatted package model data,
|               which can include the [Resistance Matrix], [Inductance Matrix],
|               [Capacitance Matrix], [Bandwidth], and [Row] keywords.
|------------------------------------------------------------------------------
[Model Data]
|
|==============================================================================
|     Keyword:  [End Model Data]
|    Required:  Yes
| Description:  Indicates the end of the formatted model data.
| Other Notes:  In between the [Model Data] and [End Model Data] keywords is
|               the package model data itself.  The data is a set of 3
|               matrices: the resistance (R), inductance (L), and capacitance
|               (C) matrices.  Each matrix can be formatted differently (see
|               below).  Use one of the matrix keywords below to mark the
|               beginning of each new matrix.
|------------------------------------------------------------------------------
[End Model Data]
|
|==============================================================================
|    Keywords:  [Resistance Matrix], [Inductance Matrix], [Capacitance Matrix]
|    Required:  [Resistance Matrix] is optional.  If it is not present, its
|               entries are assumed to be zero.  [Inductance Matrix] and
|               [Capacitance Matrix] are required.
|   Sub-Params:  Banded_matrix, Sparse_matrix, or Full_matrix
| Description:  The sub-parameters mark the beginning of a matrix, and
|               specify how the matrix data is formatted.
| Usage Rules:  For each matrix keyword, use only one of the sub-parameters.
|               After each of these sub-parameters, insert the matrix data in
|               the appropriate format.  (These formats are described in detail
|               below.)
| Other Notes:  The resistance, inductance, and capacitance matrices are also
|               referred to as "RLC matrices" within this specification.
|
|               When measuring the entries of the RLC matrices, either with
|               laboratory equipment or field-solver software, currents are
|               defined as ENTERING the pins of the package from the board
|               (General Syntax Rule #10).  The corresponding voltage drops are
|               to be measured with the current pointing "in" to the "+" sign
|               and "out" of the "-" sign.
|
|                                  I1   +-----+    I2
|                                -----> |     | <------
|                        board o--------| Pkg |---------o board
|                               +  V1 - |     | -  V2  +
|                                       +-----+
|
|               It is important to observe this convention in order to get the
|               correct signs for the mutual inductances and resistances.
|
|------------------------------------------------------------------------------
[Resistance Matrix]     Banded_matrix
[Inductance Matrix]     Sparse_matrix
[Capacitance Matrix]    Full_matrix
|
|==============================================================================
|
| RLC MATRIX NOTES
| For each [Resistance Matrix], [Inductance Matrix], or [Capacitance
| Matrix] a different format can be used for the data.  The choice of
| formats is provided to satisfy different simulation accuracy and speed
| requirements.  Also, there are many packages in which the resistance
| matrix can have no coupling terms at all.  In this case, the most
| concise format (Banded_matrix) can be used.
|
| One common aspect of all the different formats is that they exploit
| the symmetry of the matrices they describe.  This means that the
| entries below the main diagonal of the matrix are identical to the
| corresponding entries above the main diagonal.  Therefore, only
| roughly one-half of the matrix needs to be described.  By convention,
| the main diagonal and the UPPER half of the matrix are provided.
|
| In the following text, we use the notation [I, J] to refer to the entry in
| row I and column J of the matrix.  Note that I and J are allowed to be
| alphanumeric strings as well as integers.  An ordering of these
| strings is defined in the [Pin Numbers] section.  In the following text,
| "Row 1", means the row corresponding to the first pin.
|
| Also note that the numeric entries of the RLC matrices are standard IBIS
| floating point numbers.  As such, it is permissible to use metric "suffix"
| notation.  Thus, an entry of the C matrix could be given as 1.23e-12 or as
| 1.23p or 1.23pF.
|
| Full_matrix
|
| When the Full_matrix format is used, the couplings between every pair of
| elements is specified explicitly.  Assume that the matrix has N rows and N
| columns.  The Full_matrix is specified one row at a time, starting with Row 1
| and continuing down to Row N.
|
| Each new row is identified with the Row keyword.
|
|==============================================================================
|     Keyword:  [Row]
|    Required:  Yes
| Description:  Indicates the beginning of a new row of the matrix.
| Usage Rules:  The argument must be one of the pin numbers listed under the
|               [Pin Numbers] keyword.
|------------------------------------------------------------------------------
[Row]           3
|
|==============================================================================
| Following a [Row] keyword is a block of numbers that represent the
| entries for that row.  Suppose that the current row is number M.  Then
| the first number listed is the diagonal entry, [M,M].  Following this
| number are the entries of the upper half of the matrix that belong to row M:
| [M, M+1], [M, M+2], ... up to [M,N].
|
| For even a modest-sized package, this data will not all fit on one line.
| You can break the data up with new-line characters so that this limit is
| observed.
|
| An example: suppose the package has 40 pins and that we are currently
| working on Row 19.  There is 1 diagonal entry, plus 40 - 19 = 21 entries in
| the upper half of the matrix to be specified, for 22 entries total.  The data
| might be formatted as follows:
|
[Row]   19
5.67e-9  1.1e-9  0.8e-9  0.6e-9  0.4e-9  0.2e-9   0.1e-9   0.09e-9
8e-10    7e-10   6e-10   5e-10   4e-10   3e-10    2e-10    1e-10
9e-11    8e-11   7e-11   6e-11   5e-11   4e-11
|
| In the above example, the entry 5.67e-9 is on the diagonal of row 19.
|
| Observe that Row 1 always has the most entries, and that each successive row
| has one fewer entry than the last; the last row always has just a single
| entry.
|
| Banded_matrix
|
| A Banded_matrix is one whose entries are guaranteed to be zero if they
| are farther away from the main diagonal than a certain distance, known
| as the "bandwidth."  Let the matrix size be N, and let the bandwidth
| be B.  An entry [I,J] of the matrix is zero if:
|
|        | I - J | > B
|
| where |.| denotes the absolute value.
|
| The bandwidth for a Banded_matrix must be specified using the [Bandwidth]
| keyword:
|
|==============================================================================
|     Keyword:  [Bandwidth]
|    Required:  Yes (for Banded_matrix matrices only)
| Description:  Indicates the bandwidth of the matrix.  The bandwidth field
|               must be a nonnegative integer.  This keyword must occur after
|               the [Resistance Matrix], etc. keywords, and before the matrix
|               data is given.
| Usage Rules:
|------------------------------------------------------------------------------
[Bandwidth]     10
|
|==============================================================================
| Specify the banded matrix one row at a time, starting with row 1 and
| working up to higher rows.  Mark each row with the [Row] keyword, as
| above.  As before, symmetry is exploited: do not provide entries below the
| main diagonal.
|
| The first row only needs to specify the entries [1,1] through [1,1+B] since
| any other entries are guaranteed to be zero.  The second row will need to
| specify the entries [2,2] through [2, 2+B], and so on.  In general, for row M
| the entries [M,M] through [M,M+B] are given.
|
| Unlike the Full_matrix, each successive row will typically have the same
| number of entries, except for the last few rows.  When M + B finally exceeds
| the size of the matrix N, then the number of entries in each row starts to
| decrease; the last row (row N) has only 1 entry.
|
| As in the Full_matrix, if all the entries for a particular row do not fit
| into a single 80-character line, the entries can be broken across several
| lines.
|
| It is possible to use a bandwidth of 0 to specify a diagonal matrix (a matrix
| with no coupling terms.)  This is sometimes useful for resistance matrices.
|
| Sparse_matrix
|
| A Sparse_matrix is expected to consist mostly of zero-valued entries, except
| for a few nonzeros.  Unlike the Banded_matrix, there is no restriction on
| where the nonzero entries can occur.  This feature is useful in certain
| situations, such as for Pin Grid Arrays (PGAs.)
|
| As usual, symmetry can be exploited to reduce the amount of data by
| eliminating from the matrix any entries below the main diagonal.
|
| An N x N Sparse_matrix is specified one row at a time, starting with
| row 1 and continuing down to row N.  Each new row is marked with [Row]
| keyword, as in the other matrix formats.
|
| Data for the entries of a row is given in a slightly different format,
| however.  For the entry [I, J] of a row, it is necessary to explicitly
| list the name of pin J before the value of the entry is given.  This
| specification serves to indicate to the parser where the entry is put into
| the matrix.
|
| The proper location is not otherwise obvious because of the lack of
| restrictions on where nonzeros can occur.  Each (Index, Value) pair is
| listed upon a separate line.  An example follows.  Suppose that row 10
| has nonzero entries [10,10], [10,11], [10,15], and [10,25].  The
| following row data would be provided:
|
[Row]   10
| Index         Value
10              5.7e-9
11              1.1e-9
15              1.1e-9
25              1.1e-9
|
| Note that each of the column indices listed for any row must be
| greater than or equal to the row index, because they always come from
| the upper half of the matrix.  When alphanumeric pin names are used,
| special care must be taken to ensure that the ordering defined in the
| [Pin Numbers] section is observed.
|
| Also, note that it is again necessarily the case that the N'th
| row of an N x N matrix has just a single entry (the diagonal entry.)
|
|==============================================================================
|     Keyword:  [End Package Model]
|    Required:  Yes
| Description:  Marks the end of a package model description.
| Usage Rules:  This keyword must come at the end of each complete package
|               model description.
|
|               Optionally, add a comment after the [End Package Model] keyword
|               to clarify which package model has just ended.  For example,
|
|               [Define Package Model]   My_Model
|               |
|               |  ... content of model ...
|               |
|               [End Package Model]     | end of My_Model
|
|-----------------------------------------------------------------------------
[End Package Model]
|
|==============================================================================
|                           Package Model Example
|
| The following is an example of a package model file following the
| package modeling specifications.  For the sake of brevity, an 8-pin package
| has been described.  For purposes of illustration, each of the matrices is
| specified using a different format.
|
|==============================================================================
|
[IBIS Ver]      2.1
[File Name]     example.pkg
[File Rev]      0.1
[Date]          December 9, 1994
[Source]        Quality Semiconductors.  Data derived from Helmholtz Inc.'s
                field solver using 3-D Autocad model from Acme Packaging.
[Notes]         Example of couplings in packaging
[Disclaimer]    The models given below may not represent any physically
                realizable 8-pin package.  They are provided solely for
                the purpose of illustrating the .pkg file format.
|
|==============================================================================
|
[Define Package Model]  QS-SMT-cer-8-pin-pkgs
[Manufacturer]          Quality Semiconductors Ltd.
[OEM]                   Acme Package Co.
[Description]           8-Pin ceramic SMT package
[Number of Pins]        8
|
[Pin Numbers]
1
2
3
4
5
6
7
8
|
[Model Data]
|
| The resistance matrix for this package has no coupling
|
[Resistance Matrix]     Banded_matrix
[Bandwidth]             0
[Row]   1
10.0
[Row]   2
15.0
[Row]   3
15.0
[Row]   4
10.0
[Row]   5
10.0
[Row]   6
15.0
[Row]   7
15.0
[Row]   8
10.0
|
| The inductance matrix has loads of coupling
|
[Inductance Matrix]     Full_matrix
[Row]   1
3.04859e-07      4.73185e-08      1.3428e-08     6.12191e-09
1.74022e-07      7.35469e-08     2.73201e-08     1.33807e-08
[Row]   2
3.04859e-07      4.73185e-08      1.3428e-08     7.35469e-08
1.74022e-07      7.35469e-08     2.73201e-08
[Row]   3
3.04859e-07      4.73185e-08     2.73201e-08     7.35469e-08
1.74022e-07      7.35469e-08
[Row]   4
3.04859e-07      1.33807e-08     2.73201e-08     7.35469e-08
1.74022e-07
[Row]   5
4.70049e-07      1.43791e-07     5.75805e-08     2.95088e-08
[Row]   6
4.70049e-07      1.43791e-07     5.75805e-08
[Row]   7
4.70049e-07      1.43791e-07
[Row]   8
4.70049e-07
|
| The capacitance matrix has sparse coupling
|
[Capacitance Matrix]    Sparse_matrix
[Row]   1
1       2.48227e-10
2       -1.56651e-11
5       -9.54158e-11
6       -7.15684e-12
[Row]   2
2       2.51798e-10
3       -1.56552e-11
5       -6.85199e-12
6        -9.0486e-11
7       -6.82003e-12
[Row]   3
3       2.51798e-10
4       -1.56651e-11
6       -6.82003e-12
7        -9.0486e-11
8       -6.85199e-12
[Row]   4
4       2.48227e-10
7       -7.15684e-12
8       -9.54158e-11
[Row]   5
5       1.73542e-10
6       -3.38247e-11
[Row]   6
6       1.86833e-10
7       -3.27226e-11
[Row]   7
7       1.86833e-10
8       -3.38247e-11
[Row]   8
8       1.73542e-10
|
[End Model Data]
[End Package Model]
|
|==============================================================================
|     Keyword:  [End]
|    Required:  Yes
| Description:  Defines the end of the .ibs file.
|------------------------------------------------------------------------------
[End]
|
|==============================================================================
|
|                       NOTES ON DATA DERIVATION METHOD
|
| This section explains how data values are derived.  The intention is to
| avoid over-guardbanding which enables simulation results that are meaningful
| and useful.  This intention is accomplished by having each silicon vendor
| base its data on typical process data, and then derate by voltage and
| temperature, and a proprietary "X%" factor.  This methodology also has the
| nice feature that the data can be derived either from vendor-proprietary
| silicon models, or typical device measurement over temperature/voltage.
|
| 1) V/I curves for CMOS devices:
|      typ = typical voltage, typical temp deg C, typical process
|      min = minimum voltage, max temp deg C, typical process, minus "X%"
|      max = maximum voltage, min temp deg C, typical process, plus "X%"
|
|    V/I curves for bipolar devices:
|      typ = typical voltage, typical temp deg C, typical process
|      min = minimum voltage, min temp deg C, typical process, minus "X%"
|      max = maximum voltage, max temp deg C, typical process, plus "X%"
|
|    Nominal, min, and max temperature are specified by the manufacturer
|    of the part.  The default range is 50C nom, 0C min, and 100C max
|    temperatures.
|
|    X% should be statistically determined by the silicon vendor based
|    on numerous fab lots, test chips, process controls, etc..  The value
|    of X need not be published in the IBIS file, and may decrease over
|    time as data on the I/O buffers and silicon process increases.
|
|    Temperatures are junction temperatures.
|
| 2) Voltage Ranges:
|    Points for each curve must span the voltages listed below:
|
|       Curve                   Low Voltage             High Voltage
|       -----------             -----------             ------------
|       [Pulldown]              GND - POWER             POWER + POWER
|       [Pullup]                GND - POWER             POWER + POWER
|       [GND Clamp]             GND - POWER             GND + POWER
|       [POWER Clamp]           POWER                   POWER + POWER
|
|    As described in the [Pulldown Reference] keyword section, the V/I curve of
|    the [Pullup] and the [POWER Clamp] structures are 'Vcc relative', using
|    the equation:  Vtable = Vcc - Voutput.
|
|    For example, a device with a 5V power supply voltage should be
|    characterized between (0 - 5) = -5V and (5 + 5) = 10V; and a
|    device with a 3.3V power supply should be characterized between
|    (0 - 3.3) = -3.3V and (3.3 + 3.3) = 6.6V for the pull-down curve.
|
|    When tabulating output data for ECL type devices, the voltage points
|    must span the range of Vcc to Vcc - 2.2V.  This range applies to both the
|    pull-up and pull-down tables.  Note that this range applies ONLY when
|    characterizing an ECL output.
|
|    These voltage ranges must be spanned by the IBIS data.  Data derived
|    from lab measurements may not be able to span these ranges as such and
|    so may need to be extrapolated to cover the full range.  This data must
|    not be left for the simulator to provide.
|
| 3) Ramp Rates:
|    The following steps assume that the default load resistance of 50 ohms is
|    used.  There may be devices that will not drive a load of only 50 ohms
|    into any useful level of dynamics.  In these cases, use the manufacturer's
|    suggested (non-reactive) load and add the load sub parameter to the [Ramp]
|    specification.
|
|    The ramp rate does not include packaging but does include the effects of 
|    the C_comp parameter; it is the intrinsic output stage rise and fall time 
|    only.
|
|    The ramp rates (listed in AC characteristics below) should be derived
|    as follows:
|
|    a. If starting with the silicon model, remove all packaging.  If starting
|       with a packaged device, perform the measurements as outlined below then
|       use whatever techniques are appropriate to derive the actual, unloaded
|       rise and fall times.
|
|    b. 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.
|
|    c. Due to the resistor, output swings will not make a full transition as
|       expected.  However the pertinent data can still be collected as
|       follows:
|           1)  determine the 20% to 80% voltages of the 50 Ohm swing
|           2)  measure this voltage change as "dV"
|           3)  measure the amount of time required to make this swing "dt"
|    d. Post the value as a ratio "dV/dt".  The simulation tool vendor
|       extrapolates this value to span the required voltage swing range in
|       the final model.
|
|    e. Typ, Min, and Max must all be posted, and are derived at the same
|       extremes as the V/I curves, which are:
|
|       Ramp rates for CMOS devices:
|          typ = typical voltage, typical temp deg C, typical process
|          min = minimum voltage, max temp deg C, typical process, minus "Y%"
|          max = maximum voltage,  min temp deg C, typical process, plus  "Y%"
|
|       Ramp rates for bipolar devices:
|          typ = typical voltage, typical temp deg C, typical process
|          min = minimum voltage, min temp deg C, typical process, minus "Y%"
|          max = maximum voltage,  max temp deg C, typical process, plus  "Y%"
|
|       where nominal, min, and max temp are specified by the manufacturer of
|       the part.  The preferred range is 50C nom, 0C min, and 100C max
|       temperatures.
|
|       Note that the derate factor, "Y%", may be different than that used
|       for the V/I curve data.  This factor is similar to the X% factor
|       described above.  As in the case of V/I curves, temperatures are
|       junction temperatures.
|
|    f. During the IV measurements, the driving waveform should have a
|        rise/fall time fast enough to avoid thermal feedback.  The specific
|        choice of sweep time is left to the modeling engineer.
|
| It is expected that this data will be created from silicon vendor
| proprietary silicon-level models, and later correlated with actual device
| measurement.

IBIS SPEC V2.1
Ratified 12/9/94

k:\ibis\spec\ver2_1.doc	Page 28	Printed: 12/9/94