***************************************************************************** ***************************************************************************** BIRD ID#: 144 ISSUE TITLE: Add TOUCHSTONE to [External Model] and [External Circuit] as a Supported Language REQUESTER: Taranjit Kukal, Feras Al-Hawari, Ambrish Varma, Terry Jernberg, Cadence Design Systems, Inc.; Kent Dramstad, Adge Hawes, IBM Microelectronics DATE SUBMITTED: September 19, 2011 DATE REVISED: DATE ACCEPTED BY IBIS OPEN FORUM: ***************************************************************************** ***************************************************************************** STATEMENT OF THE ISSUE: S-parameters can be used, for example, to describe transfer characteristics of I/O buffer amplifiers, On DIE Terminations (ODT), and On DIE RDL parasitics. Mostly, the S-parameters data is saved according to the TOUCHSTONE file format. Therefore, adding TOUCHSTONE to the list of languages that are supported by the [External Model] and [External Circuit] sections would enable the direct usage of TOUCHSTONE S-parameters files in IBIS without the need to wrap and instantiate such models in a SPICE like subcircuit. Different s-parameter files describe different corners and correspond to different parameter settings, so it should also be possible to pick different s-parameter files for different user-defined corner parameters. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: The new "TOUCHSTONE" option will be added to the list of options supported by the Language subparameter under the [External Model] and [External Circuit] sections. The usage rules of the TOUCHSTONE language are very similar to those of the SPICE like language options. Replace all occurrences of: SPICE, Verilog-A(MS), VHDL-A(MS) SPICE, Verilog-A(MS) or VHDL-A(MS) SPICE, Verilog-A(MS) and VHDL-A(MS) with: SPICE, TOUCHSTONE, Verilog-A(MS), VHDL-A(MS) SPICE, TOUCHSTONE, Verilog-A(MS) or VHDL-A(MS) SPICE, TOUCHSTONE, Verilog-A(MS) and VHDL-A(MS) Replace all occurrences of: SPICE, VHDL-A(MS), Verilog-A(MS) SPICE, VHDL-A(MS) or Verilog-A(MS) SPICE, VHDL-A(MS) and Verilog-A(MS) with: SPICE, TOUCHSTONE, VHDL-A(MS), Verilog-A(MS) SPICE, TOUCHSTONE, VHDL-A(MS) or Verilog-A(MS) SPICE, TOUCHSTONE, VHDL-A(MS) and Verilog-A(MS) Add the following after line 4869 in the IBIS 5.0 spec: | "TOUCHSTONE" refers to the TOUCHSTONE file format version 2.0 ratified by | the IBIS Open Forum On April 24, 2009. It is de facto industry-standard | ASCII text file format used for documenting the n-port network parameter data | and noise data of linear active devices, passive filters, passive devices, or | interconnect networks. It allows representing the the n-port network using | S-parameters, Y-parameters and Z-parameters. | ------------------------------------------------------ Add D_drive_pos and D_drive_neg to the reserved ports ------------------------------------------------------ Add the following after line 5008 in the IBIS 5.0 spec: | 16 D_drive_pos Non-inverting digital input port of a differential model | 17 D_drive_neg Inverting digital input port of a differential model Change line 5238 from | Sub-Params: Language, Corner, Parameters, Ports, D_to_A, A_to_D to |* Sub-Params: Language, Corner, User_defined_corner, Parameters, Ports, D_to_A, A_to_D At line 5314 in the IBIS 5.0 spec replace: | 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. For VHDL-AMS files, this is | normally an "entity(architecture)" name pair. For Verilog-AMS | files, this is normally a "module" name. with: | 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. For VHDL-AMS files, this is | normally an "entity(architecture)" name pair. For Verilog-AMS |* files, this is normally a "module" name. For TOUCHSTONE files, |* the circuit_name is not applicable and should be "NA". After line 5329 in the IBIS 5.0 spec insert: | User_defined_corner: | | The User_defined_corner keyword is an optional keyword and is only | allowed when the Language is TOUCHSTONE. | | Five entries follow the User_defined_corner subparameter on | each line: | | user_defined_corner_name parameter_name parameter_value | file_name corner_name | | The user_defined_corner_name entry provides the name of this | User_defined_corner. A maximum of 100 user defined corners are | allowed. | | The parameter_name entry provides the parameter associated | with this User_defined_corner. The parameter_name must match | one of the parameter names defined using the Parameters | keyword. | | The parameter_value entry provides the value associated | with the parameter_name of this User_defined_corner. The | value type can be: Float, Integer, String, or Boolean. | If the value passed is different than one mentioned in the | column, then standard min, typ, max s-parameter files can | be picked. | | The file_name entry provides the TOUCHSTONE file name | associated with this User_defined_corner. | | The corner_name entry provides the corner name associated | with this User_defined_corner. The corner_name must match | a corner_name defined under the Corner subparameter. | The “corner_name” column is to be used to decide how this | user_defined_corner maps to i-v/v-t tables. For example | user_defined_corner "MIN1" is to be used in conjunction | with min i-v, v-t tables by the EDA tool. | EDA tool could show additional corners (as defined by | user_defined_corners along with parameter values) for user | selection; but mapping to corner (typ, min, max) would decide | which i-v/v-t tables need to be associated. | | No character limits, case-sensitivity limits or extension | conventions are required or enforced for user_defined_corner_name | and file_name entries. However, lower-case file_name entries | are recommended to avoid possible conflicts with file naming | conventions under different operating systems. | At line 5342 in the IBIS 5.0 spec replace: | Parameter passing is not supported in SPICE. VHDL-AMS and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using | "parameter" names. with: | Parameter passing is not supported in SPICE. VHDL-AMS and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using |* "parameter" names. Parameter passing is supported in TOUCHSTONE |* using the Parameters and User_defined_corner subparameter |* definitions. Change line 6244 from | Sub-Params: Language, Corner, Parameters, Ports, D_to_A, A_to_D to |* Sub-Params: Language, Corner, User_defined_corner, Parameters, Ports, D_to_A, A_to_D At line 6287 in the IBIS 5.0 spec replace: | 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. For VHDL-AMS files, this is | normally an "entity(architecture)" name pair. For Verilog-AMS | files, this is normally a "module" name. with: | 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. For VHDL-AMS files, this is | normally an "entity(architecture)" name pair. For Verilog-AMS |* files, this is normally a "module" name. For TOUCHSTONE files, the |* circuit_name is not applicable and should be "NA". After line 6302 in the IBIS 5.0 spec insert: | User_defined_corner: | | The User_defined_corner keyword is an optional keyword and is only | allowed when the Language is TOUCHSTONE. | | Five entries follow the User_defined_corner subparameter on | each line: | | user_defined_corner_name parameter_name parameter_value | file_name corner_name | | The user_defined_corner_name entry provides the name of this | User_defined_corner. A maximum of 100 user defined corners are | allowed. | | | The parameter_name entry provides the parameter associated | with this User_defined_corner. The parameter_name must match | one of the parameter names defined using the Parameters | keyword. | | The parameter_value entry provides the value associated | with the parameter_name of this User_defined_corner. The | value type can be: Float, Integer, String, or Boolean. | If the value passed is different than one mentioned in the | column, then standard min, typ, max s-parameter files can | be picked. | | The file_name entry provides the TOUCHSTONE file name | associated with this User_defined_corner. | | The corner_name entry provides the corner name associated | with this User_defined_corner. The corner_name must match | a corner_name defined under the Corner subparameter. | The “corner_name” column is to be used to decide how this | user_defined_corner maps to i-v/v-t tables. For example | user_defined_corner "MIN1" is to be used in conjunction | with min i-v, v-t tables by the EDA tool. | EDA tool could show additional corners (as defined by | user_defined_corners along with parameter values) for user | selection; but mapping to corner (typ, min, max) would decide | which i-v/v-t tables need to be associated. | | No character limits, case-sensitivity limits or extension | conventions are required or enforced for user_defined_corner_name | and file_name entries. However, lower-case file_name entries | are recommended to avoid possible conflicts with file naming | conventions under different operating systems. | | | At line 6315 in the IBIS 5.0 spec replace: | Parameter passing is not supported in SPICE. VHDL-AMS and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using | "parameter" names. with: | Parameter passing is not supported in SPICE. VHDL-AMS and | VHDL-A(MS) parameters are supported using "generic" names, and | Verilog-AMS and Verilog-A(MS) parameters are supported using |* "parameter" names. Parameter passing is supported in TOUCHSTONE |* using the Parameters and User_defined_corner subparameter |* definitions. --------------------------------------------- EXAMPLES on [External Model] using TOUCHSTONE --------------------------------------------- Add these lines after the SPICE example at line 5897 in the IBIS 5.0 spec: |------------------------------------------- | Example [External Model] using TOUCHSTONE: |------------------------------------------- | [Model] ExLinearBufferTouchstone Model_type Output | | Other model subparameters are optional | | typ min max [Voltage Range] 3.3 3.0 3.6 | [Ramp] dV/dt_r 1.57/0.36n 1.44/0.57n 1.73/0.28n dV/dt_f 1.57/0.35n 1.46/0.44n 1.68/0.28n | [External Model] Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ buffer_typ.s2p NA Corner Min buffer_min.s2p NA Corner Max buffer_max.s2p NA | | Ports List of port names (in same order as in TOUCHSTONE) Ports my_drive A_signal | my_drive should be connected to port 1 of TOUCHSTONE | A_signal should be connected to port 2 of TOUCHSTONE | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive my_drive A_pdref 0.0 3.3 0.5n 0.3n Typ | [End External Model] | |------------------------------------------------------------------ | Example [External Model] using TOUCHSTONE with 2 userdef corners: |------------------------------------------------------------------ | [Model] ExLinearBufferTouchstoneWithTwoUserDefCorners Model_type Output | | Other model subparameters are optional | | typ min max [Voltage Range] 3.3 3.0 3.6 | [Ramp] dV/dt_r 1.57/0.36n 1.44/0.57n 1.73/0.28n dV/dt_f 1.57/0.35n 1.46/0.44n 1.68/0.28n | [External Model] Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ buffer_typ.s2p NA Corner Min buffer_min.s2p NA Corner Max buffer_max.s2p NA | | Parameters List of parameters Parameters MinNumber MaxNumber | | User_defined_corner user_defined_corner_name parameter_name parameter_value file_name corner_name User_defined_corner Min1 MinNumber 1 buffer_min1.s2p Min User_defined_corner Max1 MaxNumber 1 buffer_max1.s2p Max | | Ports List of port names (in same order as in TOUCHSTONE) Ports my_drive A_signal | my_drive should be connected to port 1 of TOUCHSTONE | A_signal should be connected to port 2 of TOUCHSTONE | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive my_drive A_pdref 0.0 3.3 0.5n 0.3n Typ | [End External Model] | Add these lines after the SPICE example at line 6103 in the IBIS 5.0 spec: |---------------------------------------------------------------- | Example of True Differential [External Model] using TOUCHSTONE: |---------------------------------------------------------------- | [Model] Ext_Linear_Diff_Output_Buff_Touchstone Model_type Output_diff Rref_diff = 100 | | Other model subparameters are optional | | typ min max [Voltage Range] 3.3 3.0 3.6 | [Ramp] dV/dt_r 1.57/0.36n 1.44/0.57n 1.73/0.28n dV/dt_f 1.57/0.35n 1.46/0.44n 1.68/0.28n | [External Model] Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ diffout_typ.s4p NA Corner Min diffout_min.s4p NA Corner Max diffout_max.s4p NA | | Ports List of port names (in same order as in TOUCHSTONE) | | Based on the Ports order below: | my_drive_pos should be connected to port 1 of TOUCHSTONE | A_signal_pos should be connected to port 2 of TOUCHSTONE | my_drive_neg should be connected to port 3 of TOUCHSTONE | A_signal_neg should be connected to port 4 of TOUCHSTONE | Ports my_drive_pos A_signal_pos my_drive_neg A_signal_neg | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive_pos my_drive_pos A_pdref 0.0 3.3 0.5n 0.3n Typ D_to_A D_drive_pos my_drive_pos A_pdref 0.0 3.0 0.6n 0.3n Min D_to_A D_drive_pos my_drive_pos A_pdref 0.0 3.6 0.4n 0.3n Max D_to_A D_drive_neg my_drive_neg A_pdref 0.0 3.3 0.5n 0.3n Typ D_to_A D_drive_neg my_drive_neg A_pdref 0.0 3.0 0.6n 0.3n Min D_to_A D_drive_neg my_drive_neg A_pdref 0.0 3.6 0.4n 0.3n Max | [End External Model] ----------------------------------------------- EXAMPLES on [External Circuit] using TOUCHSTONE ----------------------------------------------- Add these lines after the SPICE example at line 6513 in the IBIS 5.0 spec: |--------------------------------------------- | Example [External Circuit] using TOUCHSTONE: |--------------------------------------------- | [External Circuit] LINEAR-OUTBUFF-TOUCHSTONE Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ buffer_typ.s2p NA Corner Min buffer_min.s2p NA Corner Max buffer_max.s2p NA | | Ports List of port names (in same order as in TOUCHSTONE) Ports my_in A_signal | my_in should be connected to port 1 of TOUCHSTONE | A_signal should be connected to port 2 of TOUCHSTONE | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive my_in A_pdref 0.0 3.3 0.5n 0.3n Typ D_to_A D_drive my_in A_pdref 0.0 3.0 0.6n 0.3n Min D_to_A D_drive my_in A_pdref 0.0 3.6 0.4n 0.3n Max | [End External Circuit] | |-------------------------------------------------------------------- | Example [External Circuit] using TOUCHSTONE with 4 Userdef Corners: |-------------------------------------------------------------------- | [External Circuit] LINEAR-OUTBUFF-TOUCHSTONE-WITH-4-USERDEF-CORNERS Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ buffer_typ.s2p NA Corner Min buffer_min.s2p NA Corner Max buffer_max.s2p NA | | Parameters List of parameters Parameters MinNumber MaxNumber | | User_defined_corner user_defined_corner_name parameter_name parameter_value file_name corner_name User_defined_corner Min1 MinNumber 1 buffer_min1.s2p Min User_defined_corner Min2 MinNumber 2 buffer_min2.s2p Min User_defined_corner Max1 MaxNumber 1 buffer_max1.s2p Max User_defined_corner Max2 MaxNumber 2 buffer_max2.s2p Max | | Ports List of port names (in same order as in TOUCHSTONE) Ports my_in A_signal | my_in should be connected to port 1 of TOUCHSTONE | A_signal should be connected to port 2 of TOUCHSTONE | | D_to_A d_port port1 port2 vlow vhigh trise tfall corner_name D_to_A D_drive my_in A_pdref 0.0 3.3 0.5n 0.3n Typ D_to_A D_drive my_in A_pdref 0.0 3.0 0.6n 0.3n Min D_to_A D_drive my_in A_pdref 0.0 3.6 0.4n 0.3n Max | [End External Circuit] | Add these lines after the SPICE example at line 6595 in the IBIS 5.0 spec: |--------------------------------------------- | Example [External Circuit] using TOUCHSTONE: |--------------------------------------------- | [External Circuit] BUS_TOUCHSTONE Language TOUCHSTONE | | Corner corner_name file_name circuit_name Corner Typ bus_typ.s14p NA Corner Min bus_min.s14p NA Corner Max bus_max.s14p NA | | Ports are in same order as defined in TOUCHSTONE | | Based on the Ports order below: | vcc should be connected to port 1 of TOUCHSTONE | gnd should be connected to port 2 of TOUCHSTONE | io1 should be connected to port 3 of TOUCHSTONE | io2 should be connected to port 4 of TOUCHSTONE | int_ioa should be connected to port 5 of TOUCHSTONE | vcca1 should be connected to port 6 of TOUCHSTONE | vcca2 should be connected to port 7 of TOUCHSTONE | vssa1 should be connected to port 8 of TOUCHSTONE | vssa2 should be connected to port 9 of TOUCHSTONE | int_iob should be connected to port 10 of TOUCHSTONE | vccb1 should be connected to port 11 of TOUCHSTONE | vccb2 should be connected to port 12 of TOUCHSTONE | vssb1 should be connected to port 13 of TOUCHSTONE | vssb2 should be connected to port 14 of TOUCHSTONE | Ports vcc gnd io1 io2 Ports int_ioa vcca1 vcca2 vssa1 vssa2 Ports int_iob vccb1 vccb2 vssb1 vssb2 | | No A_to_D or D_to_A required, as no digital ports are used | [End External Circuit] ***************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION The parameters defined in this BIRD came from commercial S-parameter-AMI model development efforts and Spice-IO-AMI modeling efforts where new functionality was needed to meet customer expectations for model functionality, accuracy and performance. The parameters in this BIRD were defined by Cadence and its semiconductor partners. These parameters are being contributed to IBIS to ensure SPICE-AMI model accuracy and portability. ***************************************************************************** ANY OTHER BACKGROUND INFORMATION: *****************************************************************************