******************************************************************************
******************************************************************************
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.
 SubParams: 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.
 SubParams: 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 simulatoralgorithm dependent.
There is no information regarding paths directly from POWER to GND as
might occur in a makebeforebreak 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 resistiveonly 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."