Subject: IBIS BIRD49.4 - Add Submodel Dynamic Clamp

From: [email-masked] (Bob Ross)
Date: Fri, 17 Jul 98 17:58:00 PDT

IBIS Folks:

Per corrections made during the July 17, 1998 IBIS meeting, approved BIRD49.4
is issued.  It deletes references to the clocked mode in the STATEMENT OF 
INTENT and corrects the [GND Pulse Table] and [POWER Pulse Table] examples 
where the data had mistakenly been commented out.

All open BIRDs have been resolved at the July 17, 1998 IBIS meeting.  Refer to
eda.org under /pub/ibis/birds resolution of all BIRDs.

Bob Ross
Interconnectix/Mentor Graphics

******************************************************************************
******************************************************************************

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.

******************************************************************************