****************************************************************************** ****************************************************************************** BIRD ID#: 125.1 ISSUE TITLE: Make IBIS-ISS Available for IBIS Package Modeling REQUESTER: Arpad Muranyi, Mentor Graphics DATE SUBMITTED: October 21, 2010 DATE REVISED: July 5, 2011 DATE ACCEPTED BY IBIS OPEN FORUM: Rejected July 20, 2018 ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: Package modeling in IBIS has numerous serious limitations which make it practically useless for simulations involving modern devices and signaling technologies. However, the IBIS-ISS specification defines useful and much-needed features through a standardized SPICE language. These features would enhance the current package modeling capabilities of IBIS significantly with minimal changes in the specification and little implementation effort in EDA tools. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: Provide a mechanism under the [Define Package Model] to reference IBIS-ISS subcircuits to describe a complete or partial package model. Currently there are two mutually exclusive methods for describing a package. The first method describes the various trace segments under the [Pin Numbers] keyword. The second method provides resistance, capacitance and inductance matrices under the [Model Data] keyword. This proposal adds a third option using a new keyword called [Package Circuit] to the above two methods, to make the instantiation and connection of IBIS-ISS subcircuits possible inside the [Define Package Model] keyword. The proposed new [Package Circuit] and the existing two methods shall be mutually exclusive within the same [Define Package Model] keyword. The rules which apply to [Model Data] regarding the [Pin Numbers] and [Number of Sections] keywords shall also apply to the [Package Circuit] keyword, making the [Package Circuit] effectively a replacement for the [Model Data] keyword. The [Package Circuit] keyword shall instantiate the IBIS-ISS subcircuit and define how it is connected to the pins/balls and the die pads/bumps of a device in a familiar fashion, using a syntax that is similar to the syntax of the [External Circuit] keyword. On pg. 151, replace the following lines: | [Define Package Model] Required if the [Package Model] keyword is used | [Manufacturer] (note 1) | [OEM] (note 1) | [Description] (note 1) | [Number Of Sections] (note 2) | [Number Of Pins] (note 1) | [Pin Numbers] (note 1) | [Model Data] (note 2) | [Resistance Matrix] Optional when [Model Data] is used | [Inductance Matrix] (note 3) | [Capacitance Matrix] (note 3) | [Bandwidth] Required (for Banded_matrix matrices only) | [Row] (note 3) | [End Model Data] (note 2) | [End Package Model] (note 1) | | (note 1) Required when the [Define Package Model] keyword is used | (note 2) Either the [Number Of Sections] or the [Model Data]/[End Model | Data] keywords are required. Note that [Number of Sections] and | the [Model Data]/[End Model Data] keywords are mutually exclusive. | (note 3) Required when the [Define Package Model] keyword is used | and the [Number Of Sections] keyword is not used. with these lines: | [Define Package Model] Required if the [Package Model] keyword is used | [Manufacturer] (note 1) | [OEM] (note 1) | [Description] (note 1) | [Number Of Sections] (note 2) | [Number Of Pins] (note 1) | [Pin Numbers] (note 1) | [Model Data] (note 2) | [Resistance Matrix] Optional when [Model Data] is used | [Inductance Matrix] (note 3) | [Capacitance Matrix] (note 3) | [Bandwidth] Required (for Banded_matrix matrices only) | [Row] (note 3) | [End Model Data] (note 2) |* [Package Circuit] (note 2) |* [End Package Circuit] (note 2) | [End Package Model] (note 1) | | (note 1) Required when the [Define Package Model] keyword is used | (note 2) Either the [Number Of Sections] or the [Model Data]/[End Model |* Data] or the [Package Circuit]/[End Package Circuit] keywords |* are required. Note that [Number of Sections], |* [Model Data]/[End Model Data] and |* [Package Circuit]/[End Package Circuit] keywords are mutually |* exclusive. |*(note 3) Required when the [Model Data] keyword is used. On pg. 153 replace the following lines: | Description: Tells the parser the set of names that are used for the | package pins and also defines pin ordering. If the [Number Of | Sections] keyword is present it also lists the elements for | each section of a pin's die to pin connection. | Sub-Params: Len, L, R, C, Fork, Endfork | 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] keyword). Pin | names can not exceed 5 characters in length. The first pin | name given is the "lowest" pin, and the last pin given is the | "highest." If the [Number Of Sections] keyword is used then | each pin name must be followed by one or more of the legal | subparameter combinations listed below. If the [Number Of | Sections] keyword is not present then subparameter usage is | NOT allowed. with these lines: | Description: Tells the parser the set of names that are used for the | package pins and also defines pin ordering. If the [Number Of | Sections] keyword is present it also lists the elements for |* each section of a pin's die to pin connection, or if the |* [Package Circuit] keyword is present it also declares the |* DiePort names and associates each DiePort name with a [Pin] |* name. |* Sub-Params: Len, L, R, C, Fork, Endfork, DiePort | 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] keyword). Pin | names can not exceed 5 characters in length. The first pin | name given is the "lowest" pin, and the last pin given is the | "highest." If the [Number Of Sections] keyword is used then | each pin name must be followed by one or more of the legal |* subparameter combinations of Len, L, R, C, Fork, Endfork. |* If the [Package Circuit] keyword is used, than each pin name |* must be followed by the DiePort subparameter. If the |* [Number Of Sections] or [Package Circuit] keywords are not |* present then subparameter usage is NOT allowed. On pg. 154 replace the following lines: | Subparameters: | | The Len, L, R, and C subparameters specify the length, | inductance, capacitance and resistance of each section of each | stub on a package. | | The Fork and Endfork subparameters are used to denote branches | from the main package stub. | | Len The length of a package stub section. Lengths are | given in terms of arbitrary 'units'. | L The inductance of a package stub section, in terms of | henries/unit length. For example, if the total | inductance of a section is 3.0nH and the length of the | section is 2 'units', the inductance would be listed | as L = 1.5nH (i.e. 3.0 / 2). | C The capacitance of a package stub section, in terms of | farads/unit length. | R The DC (ohmic) resistance of a package stub section, | in terms of ohms/unit length. | Fork This subparameter indicates that the sections | following (up to the Endfork subparameter) are part of | a branch off of the main package stub. This | subparameter has no arguments. | Endfork This subparameter indicates the end point of a branch. | For every Fork subparameter there must be a | corresponding Endfork subparameter. As with the Fork | subparameter, the Endfork subparameter has no | arguments. with these lines: | Subparameters: | | The Len, L, R, and C subparameters specify the length, | inductance, capacitance and resistance of each section of each | stub on a package. | | The Fork and Endfork subparameters are used to denote branches | from the main package stub. | |* The DiePort subparameter is used to declare the name of the |* connection point at which the package model is connected to |* the die. | | Len The length of a package stub section. Lengths are | given in terms of arbitrary 'units'. | L The inductance of a package stub section, in terms of | henries/unit length. For example, if the total | inductance of a section is 3.0nH and the length of the | section is 2 'units', the inductance would be listed | as L = 1.5nH (i.e. 3.0 / 2). | C The capacitance of a package stub section, in terms of | farads/unit length. | R The DC (ohmic) resistance of a package stub section, | in terms of ohms/unit length. | Fork This subparameter indicates that the sections | following (up to the Endfork subparameter) are part of | a branch off of the main package stub. This | subparameter has no arguments. | Endfork This subparameter indicates the end point of a branch. | For every Fork subparameter there must be a | corresponding Endfork subparameter. As with the Fork | subparameter, the Endfork subparameter has no | arguments. | |* DiePort This subparameter declares the name of the connection |* point for use within [Define Package Model] at which |* the package is connected to the die. The subparameter |* must be followed by an equal sign ("=") and the name |** of a node or bus that was previously declared by the |** [Node Declarations] or the [Pin Mapping] keywords in |* the .ibs file, or a reserved word "IDiePort_" |* immediately followed by the pin name that precedes |* this reserved word. This mechanism provides a naming |* convention for implicit (or unnamed) die pads or die |* bumps so that connectivity to the ports of the |* package model subcircuit could be defined on the die |* side. |* |* A DiePort name may be used multiple times under the |* [Pin Numbers] keyword for different pin names, and a |* pin name may be repeated multiple times if followed by |* different (unique) DiePort names. This rule provides |* a mechanism to support packages which contain forks or |* joins which results in a non-one-to-one relationship |* between pins and DiePorts. On pg. 156, add the following lines after the [End Model Data] keyword example: |============================================================================= | Keywords: [Package Circuit], [End Package Circuit] | Required: No | Description: Used to reference an external file containing an arbitrary | circuit description using IBIS-ISS as the modeling language. | Sub-Params: Language, Corner, Parameters, Ports | Usage Rules: Each [External Circuit] keyword must be followed by a name | which is unique within the [Define Package Model] keyword. | | The [Package Circuit] keyword may appear multiple times | within a [Define Package Model] keyword. | | Each instance of a [Package Circuit] may be connected to | a different group of the pins and DiePorts listed under | the [Pin Numbers] keyword. Multiple connections to the same | pin or DiePort from different [Package Circuit] nodes are | allowed but not recommended. | | The [Package Circuit] keyword and its contents is mutually | exclusive with the [Model Data] keyword and its contents. | | | Subparameter Definitions: | | | Language: | | Accepts "SPICE", IBIS-ISS as arguments. The Language | subparameter is required and must appear only once. | | | Corner: | | Three entries follow the Corner subparameter on each line: | | corner_name file_name circuit_name | | The corner_name entry is "Typ", "Min", or "Max". The | file_name entry points to the referenced file in the same | directory as the .ibs file. | | Up to three Corner lines are permitted. A "Typ" line is | required. If "Min" and/or "Max" data is missing, the tool may | use "Typ" data in its place. However, the tool should notify | the user of this action. | | The circuit_name entry provides the name of the circuit to be | simulated within the referenced file. For SPICE files, this | is normally a ".subckt" name. | | No character limits, case-sensitivity limits or extension | conventions are required or enforced for file_name and | circuit_name entries. However, the total number of characters | in each Corner line must comply with Section 3. Furthermore, | lower-case file_name entries are recommended to avoid possible | conflicts with file naming conventions under different | operating systems. Case differences between otherwise | identical file_name entries or circuit_name entries should be | avoided. External languages may not support case-sensitive | distinctions. | | | Parameters: | | Lists names of parameters that may be passed into an external | model file. Each Parameters entry must match a name or | keyword in the external file or language. The list of | Parameters can span several lines by using the word Parameters | at the start of each line. The Parameters subparameter is | optional, and the external circuit must operate with default | settings without any Parameters assignments. | | Parameter passing is not supported in SPICE. IBIS-ISS | parameters are supported for all ISS parameters which are | defined on the subcircuit definition line. | | Parameters are locally scoped under each [Package Circuit] | keyword, i. e. the same parameter under two different | [Package Circuit] will have dependent values. | | The parameter(s) listed under the Parameters subparameter | may optionally be followed by a single equal sign and a value. | The value may be a numeric or string literal. When multiple | parameters are listed on a single line with one equal sign | and a value, all of the parameters on that line will be | assigned the same value. String literals must be enclosed | in double quotes. | | The EDA tool may provide additional means to the user to | assign values to Parameters. This may include mechanisms | to override any given values or to provide values for | uninitialized Parameters. | | | Ports: | | The Ports subparameter provides the means to connect the | ports of the subcircuit instantiated by the [Package Circuit] | keyword with the pins and DiePorts of the device. The port | assignment is by position and the port names do not have to | match exactly the names inside the external file. However, | each port name must have a matching pin or DiePort name under | the [Pin Numbers] keyword. The list of port names may span | several lines if the word Ports is used at the start of each | line. | |----------------------------------------------------------------------------- On pg. 164 add the following lines: |============================================================================= | IBIS-ISS Package Model Example | | This example illustrates the usage of an IBIS-ISS subcircuit for modeling | the package as shown on the drawing of Fig. 12 in the IBIS v5.1 | specification. | |============================================================================= | [IBIS Ver] 5.1 [File Name] example.pkg [File Rev] 0.1 [Date] October 21, 2010 [Source] NoName Company. Data derived from imagination. [Notes] Example of using IBIS-ISS for package modeling. [Disclaimer] The models given below may not represent any physically realizable 8-pin package. They are provided solely for the purpose of illustrating the usage of IBIS-ISS subcircuits for package modeling. | |============================================================================= | [Define Package Model] QS-SMT-cer-8-pin-pkgs [Manufacturer] NoName Company, Inc. [OEM] Another NoName Package Company, Inc. [Description] 8-Pin ceramic SMT package [Number Of Pins] 8 | [Pin Numbers] 10 DiePort = IDiePort_10 1 DiePort = IDiePort_1 11 DiePort = pad_11 2 DiePort = pad_2a 2 DiePort = pad_2b 3 DiePort = IDiePort_3 4a DiePort = pad_4 4b DiePort = pad_4 5 DiePort = IDiePort_5 | [Package Circuit] Language IBIS-ISS | | Corner corner_name file_name circuit_name (.subckt name) Corner Typ PackageModel.spi S_pkg | | Parameters List of parameters Parameters TSFile = "My_TstoneFile.s16p" | | Ports are in same order as defined in SPICE Ports 10 1 11 2 3 4a 4b 5 Ports IDiePort_5 pad_4 IDiePort_3 pad_2b Ports pad_2a pad_11 IDiePort_1 IDiePort_10 | [End Package Circuit] [End Package Model] | |============================================================================= |============================================================================= ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION IBIS-ISS is a subset of HSPICE (used with the permission of Synopsys) which standardizes the passive elements of HSPICE, primarily targeted for interconnect modeling. Its features make it a logical candidate for device package modeling also. BIRD 125.1 was issued to include a method for placing IBIS-ISS based package models between the supply nodes of [Model]s or [External Model]s and individual supply pins or supply pin groups using the existing [Pin Mapping] keyword. ***************************************************************************** ANY OTHER BACKGROUND INFORMATION: ******************************************************************************