****************************************************************************** ****************************************************************************** BIRD ID#: 49.4 ISSUE TITLE: Add Submodel Dynamic Clamps REQUESTER: Neven Orhanovic, Bob Ross, Mentor G., Arpad Muranyi, Intel DATE SUBMITTED: 4/2/98, 5/1/98, 5/21/98, 6/19/98, 7/17/98 DATE ACCEPTED BY IBIS OPEN FORUM: July 17, 1998 ****************************************************************************** ****************************************************************************** STATEMENT OF THE ISSUE: A novel type of termination technique is used in today's integrated circuits. The termination consists of a pair of built in dynamic clamps whose V-I curves change with time. The clamp is switched "on" when needed and switched "off" otherwise (to conserve power). When the clamp is switched "on" its V-I curve provides more clamping than a regular static clamp and when it is turned "off" it behaves like a normal clamp. The switching of the dynamic clamps can be triggered by an input signal crossing a triggering threshold. Another mode allows the additional clamp tables to be fixed. ****************************************************************************** STATEMENT OF THE RESOLVED SPECIFICATIONS: The dynamic clamp functionality is added in the new Section 6a discussion: | Dynamic Clamp: | | When the Submodel_type subparameter under the [Submodel] keyword is set to | Dynamic_clamp, the submodel describes the dynamic clamp functionality. | | The [GND Pulse Table] and [POWER Pulse Table] keywords are defined. An | example for a complete dynamic clamp model is provided. | |============================================================================= | Keyword: [GND Pulse Table], [POWER Pulse Table] | Required: No | Description: Used to specify the offset voltage versus time of [GND Clamp] | and [POWER Clamp] tables within submodels. | Usage Rules: Each [GND Pulse Table] and [POWER Pulse Table] keyword | introduces a table of time versus vs. points that describe | the shape of an offset voltage from the [GND Clamp Reference] | voltage (or default ground) or the [POWER Clamp Reference] | voltage (or default [Voltage Range] voltage). Note, these | voltage values are inherited from the top-level model. | | 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". Time | values must increase as one parses down the table. The | waveform table can contain of maximum of 100 data points. | | 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. | | The voltage entries in both the [Gnd Pulse Table] and [POWER | Pulse Table] tables are directly measured offsets. At each | instance, the [Gnd Pulse Table] voltage is ADDED to the [GND | Clamp] table voltages to provide the shifted table voltages. | At each instance, the [POWER Pulse Table] voltage is | SUBTRACTED (because of polarity conventions) from the [POWER | Clamp] table voltages to provide the shifted table voltages. | | Only one [GND Pulse Table] and one [POWER Pulse Table] are | allowed per model. | | The [GND Pulse Table] and [POWER Pulse Table] interact with | [Submodel Spec] subparameters V_trigger_f and V_trigger_r. | Several modes of operation exist based on whether a pulse | table and its corresponding trigger subparameter are given. | These modes are classified as triggered, clocked, and static. | | Triggered Mode: | | For triggered mode a pulse table must exist and include the | entire waveform; i.e., the first entry (or entries) in a | voltage column must be equal to the last entry. | | Also, a corresponding [Submodel Spec] V_trigger_* subparameter | must exist. The triggered interaction is described: | | The V_trigger_f subparameter under [Submodel Spec] is used | to detect when the falling edge waveform at the die passes | the trigger voltage. At that time the [Gnd Pulse Table] | operation starts. Similarily, the V_trigger_r subparameter is | used to detect when the rising edge waveform at the die passes | the trigger voltage. At that time [POWER Pulse Table] | operation starts. The [GND Pulse Table] dependency is shown | below: | | | Waveform at Die | | o o o o | o | o | o ------- | |o ^ | | o | V_trigger_f | | o v time | | o o--------------------> | | | | | | [GND Pulse Table] | | | | o o o o | | o o | | o o | | o o | | o o | | o o time | o o o o o o o o --------> | | ^ | |_ [GND Pulse Table] operation starts at this time | | The V_trigger_r and [POWER Pulse Table] operate in a similar manner. When | the V_trigger_r voltage value is reached on the rising edge, the [POWER | Pulse Table] is started. Normally the offset voltage entries in the [POWER | Pulse Table] are negative. | | Static Mode: | | When the [GND Pulse Table] keyword does not exist, but the added model | [GND Clamp] table does exist, the added model [GND Clamp] is used directly. | Similarly, when the [POWER Pulse Table] keyword does not exist, but the | added model [POWER Clamp] table does exist, the added model [POWER Clamp] | is used directly. | | This mode provides additional fixed clamping to an I/O_* buffer or a | 3-state buffer when it is used as a driver. |------------------------------------------------------------------------------ | | Example of Dynamic_clamp Model with both dynamic GND and POWER clamps: | [Submodel] Dynamic_Clamp_1 Submodel_type Dynamic_clamp | [Submodel Spec] | Subparameter typ min max | V_trigger_f 1.4 1.2 1.6 | Falling edge trigger V_trigger_r 3.6 2.9 4.3 | Rising edge trigger | | typ min max | [Voltage Range] 5.0 4.5 5.5 | Note, the actual voltage range and reference voltages are inherited from | the top-level model. | [GND Pulse Table] | GND Clamp offset table | Time V(typ) V(min) V(max) | 0 0 0 0 1e-9 0 0 0 2e-9 0.9 0.8 1.0 10e-9 0.9 0.8 1.0 11e-9 0 0 0 | [GND Clamp] | Table to be offset | | Voltage I(typ) I(min) I(max) | -5.000 -3.300e+01 -3.000e+01 -3.500e+01 -4.000 -2.300e+01 -2.200e+01 -2.400e+01 -3.000 -1.300e+01 -1.200e+01 -1.400e+01 -2.000 -3.000e+00 -2.300e+00 -3.700e+00 -1.900 -2.100e+00 -1.500e+00 -2.800e+00 -1.800 -1.300e+00 -8.600e-01 -1.900e+00 -1.700 -6.800e-01 -4.000e-01 -1.100e+00 -1.600 -2.800e-01 -1.800e-01 -5.100e-01 -1.500 -1.200e-01 -9.800e-02 -1.800e-01 -1.400 -7.500e-02 -7.100e-02 -8.300e-02 -1.300 -5.750e-02 -5.700e-02 -5.900e-02 -1.200 -4.600e-02 -4.650e-02 -4.550e-02 -1.100 -3.550e-02 -3.700e-02 -3.450e-02 -1.000 -2.650e-02 -2.850e-02 -2.500e-02 -0.900 -1.850e-02 -2.100e-02 -1.650e-02 -0.800 -1.200e-02 -1.400e-02 -9.750e-03 -0.700 -6.700e-03 -8.800e-03 -4.700e-03 -0.600 -3.000e-03 -4.650e-03 -1.600e-03 -0.500 -9.450e-04 -1.950e-03 -3.650e-04 -0.400 -5.700e-05 -2.700e-04 -5.550e-06 -0.300 -1.200e-06 -1.200e-05 -5.500e-08 -0.200 -3.000e-08 -5.000e-07 0.000e+00 -0.100 0.000e+00 0.000e+00 0.000e+00 0.000 0.000e+00 0.000e+00 0.000e+00 5.000 0.000e+00 0.000e+00 0.000e+00 | [POWER Pulse Table] | POWER Clamp offset table | | Time V(typ) V(min) V(max) | 0 0 0 0 1e-9 0 0 0 2e-9 -0.9 -1.0 -0.8 10e-9 -0.9 -1.0 -0.8 11e-9 0 0 0 | [POWER Clamp] | Table to be offset | | Voltage I(typ) I(min) I(max) | -5.000 1.150e+01 1.100e+01 1.150e+01 -4.000 7.800e+00 7.500e+00 8.150e+00 -3.000 4.350e+00 4.100e+00 4.700e+00 -2.000 1.100e+00 8.750e-01 1.300e+00 -1.900 8.000e-01 6.050e-01 1.000e+00 -1.800 5.300e-01 3.700e-01 7.250e-01 -1.700 2.900e-01 1.800e-01 4.500e-01 -1.600 1.200e-01 6.850e-02 2.200e-01 -1.500 3.650e-02 2.400e-02 6.900e-02 -1.400 1.200e-02 1.100e-02 1.600e-02 -1.300 6.300e-03 6.650e-03 6.100e-03 -1.200 4.200e-03 4.750e-03 3.650e-03 -1.100 2.900e-03 3.500e-03 2.350e-03 -1.000 1.900e-03 2.450e-03 1.400e-03 -0.900 1.150e-03 1.600e-03 7.100e-04 -0.800 5.500e-04 9.150e-04 2.600e-04 -0.700 1.200e-04 4.400e-04 5.600e-05 -0.600 5.400e-05 1.550e-04 1.200e-05 -0.500 1.350e-05 5.400e-05 1.300e-06 -0.400 8.650e-07 7.450e-06 4.950e-08 -0.300 6.250e-08 7.550e-07 0.000e+00 -0.200 0.000e+00 8.400e-08 0.000e+00 -0.100 0.000e+00 0.000e-08 0.000e+00 0.000 0.000e+00 0.000e+00 0.000e+00 | |============================================================================== ****************************************************************************** ANALYSIS PATH/DATA THAT LED TO SPECIFICATION: *** Comments Below are in terms of terminology that has been changing **** The proposal is designed to retain as much of the existing IBIS clamp syntax as possible. The dynamic clamp V-I curve tables follow all of the conventions of the existing V-I tables. The overall modeling approach is to decompose the dynamic clamp into its static and dynamic portions. The static part can be modeled by a regular clamp. The dynamic part is connected to the same rail voltage as its static part and modeled by a V-I curve that is shifted along the voltage axis by the offset voltage pulse. BIRD49 replaces the BIRD45.1 proposal of some new keywords shown below, but preserves the intended functionality. It also reponses to the comment that some of the V_trigger subparameters should be expressed in a typ-min-max format. The [Model Spec] keyword structure is proposed to do this. The replaced structure is below. *** Note Refer to Rejected BIRD45.1 for some Original Discussion on the Dynamic Clamp Functionality. The Discussion here is deleted since the older terminology and details introduced confusion *** BIRD49.1 adds the rules for when the time is negative and when the V_trigger_l and V_trigger_h thresholds are not used and can be omitted. The intent is to support having the dynamic clamps controlled by an external control so that they can be preset before the signal arrives at the device. A method was chosen that is based on the activation pulse that the simulator uses to initiate the driver transition. Most simulators do not have an independent pulse control to preset some other parameter. This method can be user configurable to deal with simulator differences in time relationships for driver activation on the net and possible phase differences of this component on a net. The time values may have to be readjusted for a particular part. However, the approach taken here should work for most practical cases. BIRD49.2 simplifies extends and simplifies the rules. Several modes of operation are defined based on the existance of non-existency of the [Add Model Spec] trigger subparameters (or keyword itself) and also for when the pulse table itself is missing. The dependency on an artificial negative time for one of the modes of operation in BIRD49.1 was not appealing. *** BIRD49.3 discussion with the revised Submodel terminology of BIRD48.4 **** BIRD49.3 is modified to use the submodel terminology and keywords of BIRD48.4. Also, the clocked mode is deleted because its operation interacted to much with timing simulator operation - outside the realm of IBIS. It was not clear that we could do describe the intended effects correctly (or even by approximation) independently. This could be a candidate for further research. We could adapt the triggered mode, even on a component-by- component basis to approximate the effect, as a work around. BIRD48.4 contains some corrections to editorial mistakes (data in pulse tables were incorrectly commented out and there were still references to the deleted clocked mode in the STATEMENT OF THE ISSUE section). ****************************************************************************** ANY OTHER BACKGROUND INFORMATION: Based on a conversation with Arpad Muranyi on 11/14/97. Modified per a discussion with Bob Ross, Chris Reid and Arpad Muranyi on March 11, 1998. ******************************************************************************