****************************************************************************** ****************************************************************************** BIRD ID#: 42.3 ISSUE TITLE: Modeling Current Waveforms REQUESTER: C. Kumar, Cadence, Bob Ross, Interconnectix DATE SUBMITTED: May 16, 1997, May 19, 1997, May 30, 1997, June 12, 1997 DATE ACCEPTED BY IBIS OPEN FORUM: Rejected July 17, 1998 ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: Current into the power and ground rails are needed to give a more accurate analysis for ground and power bounce analysis associated with simutaneous switching. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: Two current Waveform tables [Pulldown Reference Current] and [Pullup Reference Current] are defined to be associated with [Rising Waveform] and [Falling Waveform] are added. Also some of the data associated with [Rising Waveform] and [Falling Waveform] is modified to reflect a real situation. The existing data in the specification was not realistic and gave incorrect guidance. The waveform tables in the examples were generated from a real sample. Replace this section: |============================================================================== | 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, R_dut, L_dut, C_dut | 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 | subparameters. 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' subparameters specify the loading | conditions under which the waveform is taken. The R_dut, | C_dut, and L_dut subparameters 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 subparameters are | required, the rest of the subparameters are optional. | If a subparameter is not used, its value defaults to | zero. The subparameters 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 | subparameters 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 | Insert this new [Rising Waveform] and [Falling Waveform] section and new examples and text changes noted by "|*" lines. A note about C_comp is desinated by the ""|**" lines, per BIRD42.2 change. Add the new keyword [Pulldown Reference Current] and [Pullup Reference Current] section and examples. |============================================================================== | 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, R_dut, L_dut, C_dut | 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 | subparameters. 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' subparameters specify the loading | conditions under which the waveform is taken. The R_dut, | C_dut, and L_dut subparameters 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 | |* NOTE: The use of L_dut, R_dut, and C_dut is strongly |* discouraged in developing Waveform data from simulation |* models. Some simulators may ignore these parameters |* because they may introduce numerical time constant |* artifacts. |* | Only the R_fixture and V_fixture subparameters are | required, the rest of the subparameters are optional. | If a subparameter is not used, its value defaults to | zero. The subparameters 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 | subparameters V_fixture_min and V_fixture_max can | be used to further specify the fixture voltage for | min and max supply voltages. |* |* NOTE: Test fixtures with R_fixture and V_fixture, |* V_fixture_min, and V_fixture_max only are strongly |* encouraged because they provide the BEST set of data |* needed to produce the best model for simulation. C_fixture |* and L_fixture can be used to produce waveforms which |* describe the typical test case setups for reference. |** |** All tables assume that the die capacitance is included. |** Potential numerical problems associated with processing |** the data using the effective C_comp for effective die |** capacitance may be handled differently among simulators. |** |------------------------------------------------------------------------------ |*** New Example Below: [Rising Waveform] R_fixture = 50 V_fixture = 0.0 | C_fixture = 50p | These are shown, but are generally not recommended | L_fixture = 2n | C_dut = 7p | R_dut = 1m | L_dut = 1n | Time V(typ) V(min) V(max) 0.0000S 25.2100mV 15.2200mV 43.5700mV 0.2000nS 2.3325mV -8.5090mV 23.4150mV 0.4000nS 0.1484V 15.9375mV 0.3944V 0.6000nS 0.7799V 0.2673V 1.3400V 0.8000nS 1.2960V 0.6042V 1.9490V 1.0000nS 1.6603V 0.9256V 2.4233V 1.2000nS 1.9460V 1.2050V 2.8130V 1.4000nS 2.1285V 1.3725V 3.0095V 1.6000nS 2.3415V 1.5560V 3.1265V 1.8000nS 2.5135V 1.7015V 3.1600V 2.0000nS 2.6460V 1.8085V 3.1695V | ... 10.0000nS 2.7780V 2.3600V 3.1670V | [Falling Waveform] R_fixture = 50 V_fixture = 5.5 V_fixture_min = 4.5 V_fixture_max = 5.5 | Time V(typ) V(min) V(max) 0.0000S 5.0000V 4.5000V 5.5000V 0.2000nS 4.7470V 4.4695V 4.8815V 0.4000nS 3.9030V 4.0955V 3.5355V 0.6000nS 2.7313V 3.4533V 1.7770V 0.8000nS 1.8150V 2.8570V 0.8629V 1.0000nS 1.1697V 2.3270V 0.5364V 1.2000nS 0.7539V 1.8470V 0.4524V 1.4000nS 0.5905V 1.5430V 0.4368V 1.6000nS 0.4923V 1.2290V 0.4266V 1.8000nS 0.4639V 0.9906V 0.4207V 2.0000nS 0.4489V 0.8349V 0.4169V | ... 10.0000nS 0.3950V 0.4935V 0.3841V | |============================================================================== | Keywords: [Pulldown Reference Current], [Pullup Reference Current] | Required: No | Description: Describes the shape of the rising and falling edge | current waveforms of a GND and POWER nodes, respectively. | Usage Rules: Each [Pulldown Reference Current] and [Pullup Reference | [Current] keyword is | positioned under the [Rising Waveform] (for rising | waveform currents) and [Falling Waveform (for falling | waveform currents. The keywords are followed by a table | of time vs. current points that | describe the shape of a current waveform. These | time/current points are taken under the conditions | specified in the [Rising Waveform] or [Falling Waveform] | R/L/C/V_fixture subparameters. The table itself consists | of one column of time points, then three columns of | current 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. | | A waveform table must include the entire waveform; | i.e., the first entry (or entries) in a current column | must be the DC current before switching | and the last entry (or entries) of the column must be | the final DC value 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. | | Each [Pulldown Reference Current] and [Pullup Reference | [Current] table must be | time correlated with its associated [Rising Waveform] | or [Falling Waveform] table. | | The diagram below illustrates the complete model with | respect to the [Rising Waveform] and [Falling Waveform] | subparameters. The diagram also illustrates the direction | of positive [Pulldown Reference Current] and [Pullup | Reference Current] current flow by the notation I_PULLDOWN | and I_PULLUP. | | PULLUP REFERENCE | | | | | | I_PULLUP | | | v | PACKAGE | TEST FIXTURE | ____|____ | | | DUT | L_dut R_dut | L_fixture R_fixture | | die |---@@@@@--/\/\/\--o-----|--@@@@---o---/\/\/\--- V_fixture | |_________| | | | | | | | | | ^ | | | | | I_PULLDOWN | | C_dut === | === C_fixture | | | | | | | | | | | | PULLDOWN REFERENCE GND | GND | | | The 'fixture' subparameters specify the loading | conditions under which the waveform is taken. The R_dut, | C_dut, and L_dut subparameters 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. | | NOTE: For computation purposes, the effect of the | L_dut, R_dut, and C_dut subparameters will be ignored. | It is strongly recommended that they not be used, if | possible. Furthermore, it is strongly recommended that | the 'fixture' not use any L_fixture or C_fixture | component. | | Because of an assumption that the currents into the | Pulldown Reference, Pullup Reference nodes and output | nodes must sum to zero, only the [Pullup Reference | Current] or [Pulldown Reference Current] tables are | needed. The output | node current is available from the test fixture and | output waveform data. However, both current | waveform tables are permitted. Similarly, an Open model | device such as Open_drain or and ECL device such as | Output_ECL may not need any current waveform table. | However, each or both are still permitted. It is | simulator dependent which set of data takes precedence | in case of redundant information. | |------------------------------------------------------------------------------ [Rising Waveform] | ... | ... | Rising Waveform subparameters and table | ... [Pulldown Reference Current] | Time I(typ) I(min) I(max) 0.0000S -338.4000uA -188.6000uA -635.9000uA 0.2000nS -2.0160mA -123.4000uA -6.2360mA 0.4000nS -2.3650mA -3.5670mA -11.0600mA 0.6000nS -7.2070mA -5.1150mA -12.0600mA 0.8000nS -7.4570mA -4.9160mA -17.1600mA 1.0000nS -8.2950mA -3.9180mA -19.7900mA 1.2000nS -9.5720mA -3.5720mA -8.2330mA 1.4000nS -10.5400mA -3.5850mA -2.9600mA 1.6000nS -7.8290mA -3.8150mA -1.4140mA 1.8000nS -4.6260mA -3.9860mA -1.1420mA 2.0000nS -2.3870mA -4.1520mA -1.1250mA | ... 10.0000nS -388.4000uA -135.3000uA -964.2000uA | [Pullup Reference Current] | Time I(typ) I(min) I(max) 0.0000S 842.5000uA 493.0000uA 1.5070mA 0.2000nS 6.6700mA 3.2490mA 9.7430mA 0.4000nS 12.9000mA 4.6150mA 26.3100mA 0.6000nS 25.9800mA 11.3000mA 42.5700mA 0.8000nS 35.3200mA 19.0900mA 58.4600mA 1.0000nS 43.2400mA 24.2100mA 70.4200mA 1.2000nS 49.7700mA 28.9700mA 64.7800mA 1.4000nS 55.3400mA 32.9800mA 64.7600mA 1.6000nS 56.4000mA 36.3800mA 64.3900mA 1.8000nS 56.3100mA 39.1500mA 64.4500mA 2.0000nS 56.2000mA 41.3300mA 64.5700mA | ... 10.0000nS 55.9500mA 47.3500mA 64.3200mA | [Falling Waveform] | ... | ... | Falling Waveform subparameters and table | ... [Pulldown Reference Current] | Time I(typ) I(min) I(max) 0.0000S -157.4000uA -86.9600uA -291.0000uA 0.2000nS -34.6000mA -17.1000mA -48.6100mA 0.4000nS -41.5400mA -20.8600mA -70.7200mA 0.6000nS -60.5500mA -30.4800mA -96.8400mA 0.8000nS -77.7500mA -41.5500mA -107.4000mA 1.0000nS -88.1500mA -52.0000mA -115.5000mA 1.2000nS -92.9400mA -60.9400mA -110.6000mA 1.4000nS -96.9700mA -68.0800mA -107.1000mA 1.6000nS -98.1100mA -72.7800mA -106.4000mA 1.8000nS -96.5100mA -75.9600mA -106.0000mA 2.0000nS -95.1600mA -77.7100mA -105.9000mA | ... 10.0000nS -94.3700mA -81.4700mA -106.3000mA [Pullup Reference Current] | Time I(typ) I(min) I(max) 0.0000S 157.4000uA 86.8500uA 291.0000uA 0.2000nS 17.4600mA 10.0440mA 22.5200mA 0.4000nS 11.7300mA 8.2320mA 18.0200mA 0.6000nS 11.0800mA 6.8680mA 15.2900mA 0.8000nS 10.1700mA 6.2700mA 11.1900mA 1.0000nS 8.3370mA 6.2160mA 14.7000mA 1.2000nS 6.2100mA 5.7840mA 9.4580mA 1.4000nS 6.9920mA 5.3040mA 5.7280mA 1.6000nS 8.2280mA 4.6130mA 4.8490mA 1.8000nS 5.5850mA 3.8730mA 4.3310mA 2.0000nS 4.0180mA 3.2190mA 4.1990mA | ... 10.0000nS 2.2710mA 1.3390mA 3.9900mA | ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION: Some additonal clarification information is needed in the original [Rising Waveform] and [Falling Waveform] keyword. A better example needs to be supplied because the existing example illustrates some bad practices. The current waveform specification is needed to better define the currents in the GND and POWER nodes during switching. Currently the allocation of currents into these nodes is simulator-algorithm dependent. There is no information regarding paths directly from POWER to GND as might occur in a make-before-break transition implementation that exists in some CMOS devices. The L_dut, R_dut, and C_dut fixture parameters are deleted from the new keywords. While actual package electrical characteristic may exist, there effects are negligible for current waveforms. Moreover, this level of detail has proven in many case to actually reduce accuracy in simulation because of numerical time constant considerations. Suggestions encouraging resistive-only fixture loads are embedded in this proposal to encourage generating data that is most suitable for developing models that may be used by most simulators. The new examples reflect this practice. BIRD42.1: By restricting the already correlated current waveforms to be under the current keyword, several simplifications can be made: Eliminate [GND Rising Waveform], [GND Falling Waveform], [POWER Rising Waveform], [POWER Falling Waveform] Instead, add as a result, [GND Current] and [POWER Current]. These keywords are restricted to directly under their corresponding [Rising Waveform] and [Falling Waveform] tables for the particular waveform of interest. Eliminate all references to subparameters - The current tables are based on the [Rising Waveform] and [Falling Waveform] table subparameters. All of the proposed functionality remains. BIRD42.1: Some editoral cleanup is done and a note concerning numerical artifacts associated with C_comp is added under the [Rising Waveform] and [Falling Waveform] keyword description is added. Calculating current as a function of changing voltage across a capacitance is a numerically sensitive process. BIRD42.2, BIRD42.3: More editorial Cleanup. Change [GND Current] to [Pulldown Reference Current]. Change [POWER Current] to [Pullup Reference Current]. These changes reflect more explicitly the power rails for which the current waveforms are defined. They also allow working with ECL device models. ****************************************************************************** ANY OTHER BACKGROUND INFORMATION: This proposal is based on discussion initiated by C. Kumar at the IBIS Open Forum Meeting on May 9, 1997 Part of the introduction material for BIRD42.1 includes this statement: "Also, I acknowledge that even with this more detailed set of data, REAL power and bounce analsis may be influenced by factors BEYOND Output buffer switching. Scott McMorrow correctly points out that some internal circuitry such as internal clock drivers are already internally loaded and may not have external connections. There may be significant movement of currents due to these internal elements that can interact and affect the internal bounce of common internal ground and power busses. So beware that bounce analysis may be more dependent on (undocumented) internal construction (sharing of common busses) and undocumented internal switching effects. The IBIS Model may UNDERESTIMATE the true bounce effects."